134 lines
4.5 KiB
Bash
134 lines
4.5 KiB
Bash
#!/bin/bash -x
|
|
|
|
# This script will retrieve the list of tests to run from the freediameter website,
|
|
# and execute them one by one.
|
|
|
|
ROOTDIR=$HOME/fDtests
|
|
if [ ! -d $ROOTDIR ]; then
|
|
echo "The working directory $ROOTDIR does not exist. Please create it or edit the script."
|
|
exit 1;
|
|
fi
|
|
|
|
WORKDIR=$ROOTDIR/data
|
|
|
|
# The script requires a local.cmake file to exist and define the following:
|
|
# CTEST_SITE=
|
|
# the name of the build slave.
|
|
# Example: SET(CTEST_SITE "Ubuntu-Lucid-64b")
|
|
if [ ! -e $ROOTDIR/local.cmake ]; then
|
|
echo "Missing $ROOTDIR/local.cmake file, generating one (edit as needed, and run the script again)";
|
|
echo "SET(CTEST_SITE \""`hostname --fqdn`"\")" > $ROOTDIR/local.cmake
|
|
exit 1;
|
|
fi
|
|
|
|
# Now, cleanup any previous built data, but keep the sources (to get the diffs)
|
|
if [ ! -d $WORKDIR ]; then
|
|
mkdir $WORKDIR
|
|
else
|
|
rm -rf $WORKDIR/*/build
|
|
fi
|
|
|
|
echo "Starting Nightly tests, time: "`date`
|
|
|
|
# Retrieve the default parameters.
|
|
wget "http://www.freediameter.net/hg/freeDiameter/raw-file/tip/CTestConfig.cmake" -O $WORKDIR/1_default.cmake
|
|
if [ ! -e $WORKDIR/1_default.cmake ]; then
|
|
echo "Error retrieving CTestConfig.cmake file";
|
|
exit 1;
|
|
fi
|
|
|
|
# Retrieve the list of build names
|
|
wget "http://www.freediameter.net/hg/freeDiameter/raw-file/tip/contrib/nightly_tests/tests.list" -O $WORKDIR/2_tests.list
|
|
if [ ! -e $WORKDIR/2_tests.list ]; then
|
|
echo "Error retrieving tests.list file";
|
|
exit 1;
|
|
fi
|
|
|
|
# Now, for each test in the list
|
|
for t in $(cat $WORKDIR/2_tests.list | grep -v -e "^#"); do
|
|
# Create the work environment if needed
|
|
if [ ! -d $WORKDIR/$t ]; then
|
|
mkdir $WORKDIR/$t
|
|
fi
|
|
|
|
#### Create the script
|
|
|
|
# Project name, nightly time
|
|
cp $WORKDIR/1_default.cmake $WORKDIR/$t/CTestScript.cmake
|
|
|
|
# Create path names, default build configuration, ...
|
|
cat >> $WORKDIR/$t/CTestScript.cmake << EOF
|
|
##########################
|
|
SET(CTEST_SOURCE_DIRECTORY "$WORKDIR/$t/source")
|
|
SET(CTEST_BINARY_DIRECTORY "$WORKDIR/$t/build")
|
|
|
|
set(CTEST_CMAKE_GENERATOR "Unix Makefiles")
|
|
|
|
set(CTEST_BUILD_CONFIGURATION "Profiling")
|
|
set(WITH_MEMCHECK FALSE)
|
|
set(WITH_COVERAGE FALSE)
|
|
|
|
set(CTEST_BUILD_OPTIONS "")
|
|
set(CTEST_BUILD_NAME "Unnamed")
|
|
|
|
##########################
|
|
EOF
|
|
|
|
wget "http://www.freediameter.net/hg/freeDiameter/raw-file/tip/contrib/nightly_tests/$t.conf" -O $WORKDIR/$t/params.conf
|
|
if [ ! -e $WORKDIR/$t/params.conf ]; then
|
|
echo "Error retrieving $t.conf file";
|
|
continue;
|
|
fi
|
|
|
|
# The retrieved parameters will overwrite the defaults
|
|
cat $WORKDIR/$t/params.conf >> $WORKDIR/$t/CTestScript.cmake
|
|
|
|
# Overwrite with all the local data (site name, ...)
|
|
echo "######## Local site data: " >> $WORKDIR/$t/CTestScript.cmake
|
|
cat $ROOTDIR/local.cmake >> $WORKDIR/$t/CTestScript.cmake
|
|
|
|
# Now, the remaining of the script
|
|
cat >> $WORKDIR/$t/CTestScript.cmake << EOF
|
|
#######################################################################
|
|
|
|
# ctest_empty_binary_directory(\${CTEST_BINARY_DIRECTORY})
|
|
|
|
find_program(CTEST_HG_COMMAND NAMES hg)
|
|
find_program(CTEST_COVERAGE_COMMAND NAMES gcov)
|
|
find_program(CTEST_MEMORYCHECK_COMMAND NAMES valgrind)
|
|
|
|
# set(CTEST_MEMORYCHECK_SUPPRESSIONS_FILE \${CTEST_SOURCE_DIRECTORY}/tests/valgrind.supp)
|
|
|
|
if(NOT EXISTS "\${CTEST_SOURCE_DIRECTORY}")
|
|
set(CTEST_CHECKOUT_COMMAND "\${CTEST_HG_COMMAND} clone http://www.freediameter.net/hg/freeDiameter \${CTEST_SOURCE_DIRECTORY}")
|
|
endif()
|
|
|
|
set(CTEST_UPDATE_COMMAND "\${CTEST_HG_COMMAND}")
|
|
|
|
set(CTEST_CONFIGURE_COMMAND "\${CMAKE_COMMAND} -DCMAKE_BUILD_TYPE:STRING=\${CTEST_BUILD_CONFIGURATION}")
|
|
set(CTEST_CONFIGURE_COMMAND "\${CTEST_CONFIGURE_COMMAND} -DBUILD_TESTING:BOOL=ON -DOPT_TEST_ARGUMENTS:STRING=-d \${CTEST_BUILD_OPTIONS}")
|
|
set(CTEST_CONFIGURE_COMMAND "\${CTEST_CONFIGURE_COMMAND} \\"-G\${CTEST_CMAKE_GENERATOR}\\"")
|
|
set(CTEST_CONFIGURE_COMMAND "\${CTEST_CONFIGURE_COMMAND} \\"\${CTEST_SOURCE_DIRECTORY}\\"")
|
|
|
|
ctest_start("Nightly")
|
|
ctest_update()
|
|
ctest_configure()
|
|
ctest_build()
|
|
ctest_test()
|
|
if (WITH_COVERAGE AND CTEST_COVERAGE_COMMAND)
|
|
ctest_coverage()
|
|
endif (WITH_COVERAGE AND CTEST_COVERAGE_COMMAND)
|
|
if (WITH_MEMCHECK AND CTEST_MEMORYCHECK_COMMAND)
|
|
ctest_memcheck()
|
|
endif (WITH_MEMCHECK AND CTEST_MEMORYCHECK_COMMAND)
|
|
ctest_submit()
|
|
EOF
|
|
|
|
# OK, now run this test, it will submit its results.
|
|
ctest -S $WORKDIR/$t/CTestScript.cmake -V
|
|
done
|
|
|
|
echo "Completed Nightly tests, time: "`date`
|
|
|
|
|