Mercurial > hg > freeDiameter
view contrib/nightly_tests/runtests.sh @ 1558:932fca1cbbe4
Added tag 1.5.0 for changeset 7c777b0082ec
author | Sebastien Decugis <sdecugis@freediameter.net> |
---|---|
date | Sat, 10 Oct 2020 12:58:37 +0800 |
parents | 313c510b0d65 |
children |
line wrap: on
line source
#!/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`