diff options
author | David Cole <david.cole@kitware.com> | 2012-12-26 20:22:59 (GMT) |
---|---|---|
committer | Brad King <brad.king@kitware.com> | 2013-01-03 18:37:50 (GMT) |
commit | e378ba5f39a9d8ebe0335390870a82774ecdd171 (patch) | |
tree | 02e7fd588c0b8264a973a948816fb71b50148da9 /Tests/CTestLimitDashJ/CreateSleepDelete.cmake | |
parent | 324780697c5020a027efdc24bd9cc2fc926a3546 (diff) | |
download | CMake-e378ba5f39a9d8ebe0335390870a82774ecdd171.zip CMake-e378ba5f39a9d8ebe0335390870a82774ecdd171.tar.gz CMake-e378ba5f39a9d8ebe0335390870a82774ecdd171.tar.bz2 |
Add CTestLimitDashJ test (#12904)
Add a test that verifies that when ctest -j 4 is called, at most, 4 tests
are executed at any one time.
The test works by running the same script as each of 100 tests. And then setting
up test properties for DEPENDS, RUN_SERIAL, PROCESSORS and COST in order to get
the tests to run in a semi-deterministic ordering, even in parallel. The script
writes a file, sleeps for a bit, and then deletes the file. In the meantime, it
counts files that currently exist, and emits output that triggers a test failure
if the count of files is ever greater than 4.
Prior to the commit that fixed bug #12904, this would result in a failed test
because the output of some of the tests would indicate that more than 4 tests
were running simultaneously.
Now that this issue is resolved, this test will help guarantee that it stays
resolved moving forward.
Diffstat (limited to 'Tests/CTestLimitDashJ/CreateSleepDelete.cmake')
-rw-r--r-- | Tests/CTestLimitDashJ/CreateSleepDelete.cmake | 48 |
1 files changed, 48 insertions, 0 deletions
diff --git a/Tests/CTestLimitDashJ/CreateSleepDelete.cmake b/Tests/CTestLimitDashJ/CreateSleepDelete.cmake new file mode 100644 index 0000000..b09307f --- /dev/null +++ b/Tests/CTestLimitDashJ/CreateSleepDelete.cmake @@ -0,0 +1,48 @@ +set(CTEST_RUN_CURRENT_SCRIPT 0) + +if(NOT DEFINED basefilename) + message(FATAL_ERROR "pass -Dbasefilename=f1") +endif() + +if(NOT DEFINED ext) + set(ext "jkqvxz") +endif() + +if(NOT DEFINED sleep_interval) + set(sleep_interval 1) +endif() + +get_filename_component(self_dir "${CMAKE_CURRENT_LIST_FILE}" PATH) +set(filename "${self_dir}/${basefilename}.${ext}") + +# count files +file(GLOB f1 *.${ext}) +list(LENGTH f1 c1) +message("c='${c1}'") + +# write a new file +message("Writing file: filename='${filename}'") +file(WRITE "${filename}" "${filename}") + +# count files again +file(GLOB f2 *.${ext}) +list(LENGTH f2 c2) +message("c='${c2}'") + +# snooze +message("Sleeping: sleep_interval='${sleep_interval}'") +ctest_sleep(${sleep_interval}) + +# count files again +file(GLOB f3 *.${ext}) +list(LENGTH f3 c3) +message("c='${c3}'") + +# delete the file we wrote earlier +message("Removing file: filename='${filename}'") +file(REMOVE "${filename}") + +# count files again +file(GLOB f4 *.${ext}) +list(LENGTH f4 c4) +message("c='${c4}'") |