[CMake] CTest continuous testing

Tim Gallagher tim.gallagher at gatech.edu
Fri Jan 13 14:11:44 EST 2012


Hi,

We have a test case suite setup to run in continuous mode and submit to CDash. I followed instructions on the wiki (http://www.cmake.org/Wiki/CMake_Scripting_Of_CTest#Continuous_Builds_.28new_Style.29) and have a script that's below the signature. 

I was under the impression that continuous testing would run once when it started each run, then sleep and check for changed files and if nothing changed, go back to sleep and wait again, then check again, etc.. And if files did change and ctest_update() pulled in new code, the tests would run again.

However, the behavior I am getting is that the entire test suite is run every 5 minutes for the entire continuous run time, even though no files are being updated. Some of the tests are failing, if that makes a difference. 

Was I mistaken on how it works? Or did I miss a step somewhere? Thanks,

Tim

---------------------------------------
while(${CTEST_ELAPSED_TIME} LESS 43200)
  set(START_TIME ${CTEST_ELAPSED_TIME})

  ctest_start("Continuous")
  ctest_update()
  # Copy over the files we need                                                                                                                     
  configure_file(${CTEST_REPO_DIRECTORY}/CTest/CTestCustom.cmake
    ${CTEST_REPO_DIRECTORY}/CTestCustom.cmake @ONLY)
  configure_file(${CTEST_REPO_DIRECTORY}/CTest/CTestTestfile.cmake
    ${CTEST_REPO_DIRECTORY}/CTestTestfile.cmake @ONLY)
  configure_file(${CTEST_REPO_DIRECTORY}/CTest/CTestAvailableTests.cmake
    ${CTEST_REPO_DIRECTORY}/CTestAvailableTests.cmake @ONLY)
  configure_file(${CTEST_REPO_DIRECTORY}/CTest/runPythonTest.sh.in
    ${CTEST_REPO_DIRECTORY}/runPythonTest.sh @ONLY)

  include(${CTEST_REPO_DIRECTORY}/CTestAvailableTests.cmake)

  foreach(TESTCASE ${LESLIE_AVAILABLE_TESTCASES})
    set(CTEST_CONFIGURE_COMMAND "./setup.py -t ${TESTCASE} '{${LESLIE_CONFIGURE_DICT_BASE}}'")
    ctest_configure(BUILD "${CTEST_REPO_DIRECTORY}" APPEND)
    set(CTEST_BUILD_COMMAND "./setup.py -t ${TESTCASE} '{${LESLIE_BUILD_DICT_BASE}}'")
    ctest_build(BUILD "${CTEST_REPO_DIRECTORY}" APPEND)
  endforeach()

  list(LENGTH LESLIE_CUSTOM_TESTCASE_BASE len1)
  math(EXPR len2 "${len1} - 1")

  foreach(value RANGE ${len2})
    list(GET LESLIE_CUSTOM_TESTCASE_BASE ${value} TESTCASE_BASE)
    list(GET LESLIE_CUSTOM_TESTCASE_CONFIG_DICT ${value} TESTCASE_CONFIG)
    list(GET LESLIE_CUSTOM_TESTCASE_BUILD_DICT ${value} TESTCASE_BUILD)

    set(CTEST_CONFIGURE_COMMAND "./setup.py -t ${TESTCASE_BASE} ${TESTCASE_CONFIG}")
    ctest_configure(BUILD "${CTEST_REPO_DIRECTORY}" APPEND)
    set(CTEST_BUILD_COMMAND "./setup.py -t ${TESTCASE_BASE} ${TESTCASE_BUILD}")
    ctest_build(BUILD "${CTEST_REPO_DIRECTORY}" APPEND)
  endforeach()

  ctest_test(BUILD "${CTEST_REPO_DIRECTORY}")
  ctest_submit()

  ctest_sleep(${START_TIME} 300 ${CTEST_ELAPSED_TIME})
endwhile()





More information about the CMake mailing list