To add a new test create a new cmake test file in the source directory under test/reg_test/run_tests/. Here we call it newTest.cmake for the sake of reference. In this file you need to set the following variables: TEST_NAME, TEST_TYPE, EXEC_NAME, NAMELIST_FILES and NC_OUTPUT_FILES.
You may also need to set variables designating other files required for this test: VCOORD_FILES, NCL_FILES, REFSOLN_FILES, and MESH_FILES. These files will get copied or linked to the correct place.
# The name of this test (should be the basename of this file) SET(TEST_NAME baro1a) # The type of run (preqx,sweqx,swdgx,etc.) SET(TEST_TYPE preqx) # The specifically compiled test executable that this test uses SET(EXEC_NAME baroA) # Number of CPUs to use SET(NUM_CPUS 16) # The following paths are best specified frome HOMME_ROOT (the svn checkout directory) # The namelist file for the test SET(NAMELIST_FILES ${HOMME_ROOT}/test/reg_test/${NAMELIST_DIR}/${TEST_NAME}.nl) # Additional files required by the test SET(VCOORD_FILES "${HOMME_ROOT}/test/vcoord/*20*") SET(NCL_FILES ${HOMME_ROOT}/test/reg_test/ncl/${TEST_NAME}.ncl) SET(REFSOLN_FILES) SET(MESH_FILES) # The output files produced from this run (these will be compared to baseline results) SET(NC_OUTPUT_FILES baroclinic1.nc) |
Once this file has been created, simply add the name of the file, here newTest.cmake, to the list of tests contained in test/reg_test/run_tests/test-list.cmake.
SET(HOMME_TESTS baro1a.cmake baro1b.cmake baro2a.cmake baro2b.cmake baro2c.cmake baro2d.cmake swtc1.cmake swtc5.cmake swtc6.cmake swtc1-dg.cmake swtc2-dg.cmake swtc5-dg.cmake newTest.cmake ) |
That's it. The next time run configure, the test files will be created in the build directory under tests/newTest. Be sure to see that everything required for the test is present in this directory.
The new test will be run with all of the tests during "make check" and can be run by itself with "make test-newTest".
The above method for adding a test required the specification of a test executable in the variable EXEC_NAME. This represents a specifically compiled executable for the test case. This means that NP, PLEV, etc. have been set at compile time. A new test executable can be created as a subdirectory under test_execs.
jamroz@yslogin2:homme-newTrunk> pwd /glade/scratch/jamroz/homme/homme-newTrunk jamroz@yslogin2:homme-newTrunk> cd test_execs jamroz@yslogin2:test_execs> ls baroA baroB baroC CMakeLists.txt swtcA swtcB swtcC swtc-dgA jamroz@yslogin2:test_execs> svn cp baroA newTestExec A newTestExec jamroz@yslogin2:test_execs> |
Now edit the CMakeLists file in the newTestExec subdirectory (newTestExec/CMakeLists.txt) to specify the compile time variables for the test executable required for your test.
# Set the include directories INCLUDE_DIRECTORIES(${CMAKE_CURRENT_BINARY_DIR} ${PREQX_INCLUDE_DIRS}) # Set the variables for this test as shown below # EXEC_NAME EXEC_TYPE SOURCES NP NC PLEV NTRAC USE_PIO WITH_ENERGY createTestExec(newTestExec preqx PREQX_SRCS 5 5 12 1 FALSE TRUE) |
Finally add this subdirectory to the test_execs/CMakeLists.txt file under the appropriate section.
# Add the test exec subdirs for the preqx executable IF(${BUILD_HOMME_PREQX}) ADD_SUBDIRECTORY(baroA) ADD_SUBDIRECTORY(baroB) ADD_SUBDIRECTORY(baroC) ADD_SUBDIRECTORY(newTestExec) ENDIF() |
That's it. When you reconfigure this executable will be added as a target for make. It will be build by default when compiling and you can build only this target by running "make newTestExec".