added: framework for IO (VTF and HDF5) regression tests
This commit is contained in:
1 parent
c88d417860
commit
4b804a98de
5 files changed
+75
No files matched your search
@@ -20,6 +20,7 @@ install(FILES ${AppCommon_HEADERS} DESTINATION include/IFEM)
|
||||
install(FILES scripts/regtest.sh.in
|
||||
scripts/clang-check-test.sh.in
|
||||
scripts/cppcheck-test.sh.in
|
||||
scripts/iotest.sh.in
|
||||
DESTINATION lib/IFEM/scripts
|
||||
PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE
|
||||
GROUP_READ GROUP_EXECUTE
|
||||
|
||||
Executable
+41
@@ -0,0 +1,41 @@
|
||||
#!/bin/bash
|
||||
|
||||
# This script performs a single IO regression test.
|
||||
# It is used by the 'make test' target in the buildsystems
|
||||
# Usually you should use 'make test' rather than calling this script directly
|
||||
#
|
||||
# Parameters: $1 = Application binary
|
||||
# $2 = Regression test file
|
||||
# $3 = File type to generate/test
|
||||
# A IO regression test file is of the format:
|
||||
# parameters to application
|
||||
# blank line
|
||||
# output from listing application
|
||||
|
||||
mysim=$1
|
||||
|
||||
cd `dirname $2`
|
||||
MAPFILE=`head -n1 $2`
|
||||
tmpnew=`mktemp -t ifemlogXXXXXX`
|
||||
tmpold=`mktemp -t ifemlogXXXXXX`
|
||||
output=`mktemp -t ifemXXXXXX.$3`
|
||||
if [ "$3" == "hdf5" ]
|
||||
then
|
||||
$mysim $MAPFILE -hdf5 $output 2>&1 > /dev/null
|
||||
else
|
||||
$mysim $MAPFILE -vtf 0 -vtffile $output 2>&1 > /dev/null
|
||||
fi
|
||||
test $? -eq 0 || exit 1
|
||||
tail -n +3 $2 > $tmpold
|
||||
if [ "$3" == "hdf5" ]
|
||||
then
|
||||
@H5LS_COMMAND@ -r $output > $tmpnew
|
||||
else
|
||||
@VTFLS_COMMAND@ $output > $tmpnew
|
||||
fi
|
||||
|
||||
diff -u $tmpold $tmpnew
|
||||
res=$?
|
||||
rm $tmpnew $tmpold $tmplog $output
|
||||
|
||||
exit $res
|
||||
@@ -276,3 +276,4 @@ endif()
|
||||
set(IFEM_REGTEST_SCRIPT ${IFEM_PATH}/Apps/Common/scripts/regtest.sh.in)
|
||||
set(IFEM_CLANG_CHECK_TEST_SCRIPT ${IFEM_PATH}/Apps/Common/scripts/clang-check-test.sh.in)
|
||||
set(IFEM_CPPCHECK_TEST_SCRIPT ${IFEM_PATH}/Apps/Common/scripts/cppcheck-test.sh.in)
|
||||
set(IFEM_IOTEST_SCRIPT ${IFEM_PATH}/Apps/Common/scripts/iotest.sh.in)
|
||||
@@ -127,6 +127,32 @@ function(IFEM_add_restart_test name binary rlevel)
|
||||
endif(IFEM_TEST_MEMCHECK)
|
||||
endfunction()
|
||||
|
||||
function(IFEM_add_vtf_test name binary)
|
||||
if(NOT VTFWRITER_FOUND OR NOT VTFLS_COMMAND)
|
||||
return()
|
||||
endif()
|
||||
separate_arguments(MEMCHECK_COMMAND)
|
||||
if(IFEM_TEST_EXTRA)
|
||||
set(test-name "vtf+${binary}+${IFEM_TEST_EXTRA}+${name}")
|
||||
else()
|
||||
set(test-name "vtf+${binary}+${name}")
|
||||
endif()
|
||||
add_test("${test-name}" iotest.sh ${EXECUTABLE_OUTPUT_PATH}/${binary} ${PROJECT_SOURCE_DIR}/${TEST_SUBDIR}/Test/${name} vtf)
|
||||
endfunction()
|
||||
|
||||
function(IFEM_add_hdf5_test name binary)
|
||||
if(NOT HDF5_FOUND OR NOT H5LS_COMMAND)
|
||||
return()
|
||||
endif()
|
||||
separate_arguments(MEMCHECK_COMMAND)
|
||||
if(IFEM_TEST_EXTRA)
|
||||
set(test-name "hdf5+${binary}+${IFEM_TEST_EXTRA}+${name}")
|
||||
else()
|
||||
set(test-name "hdf5+${binary}+${name}")
|
||||
endif()
|
||||
add_test("${test-name}" iotest.sh ${EXECUTABLE_OUTPUT_PATH}/${binary} ${PROJECT_SOURCE_DIR}/${TEST_SUBDIR}/Test/${name} hdf5)
|
||||
endfunction()
|
||||
|
||||
macro(add_check_target)
|
||||
add_custom_target(check ${CMAKE_CTEST_COMMAND} WORKING_DIRECTORY ${PROJECT_BINARY_DIR})
|
||||
add_custom_command(TARGET check PRE_BUILD COMMAND ${CMAKE_COMMAND} -E remove ${CMAKE_BINARY_DIR}/failed.log)
|
||||
@@ -208,10 +234,14 @@ elseif(NOT IFEM_AS_SUBMODULE AND NOT IFEM_LIBRARY_BUILD
|
||||
endif()
|
||||
endif()
|
||||
|
||||
find_program(VTFLS_COMMAND vtfls)
|
||||
find_program(H5LS_COMMAND h5ls)
|
||||
|
||||
# Generate regtest script with correct paths
|
||||
configure_file(${IFEM_REGTEST_SCRIPT} regtest.sh)
|
||||
configure_file(${IFEM_CLANG_CHECK_TEST_SCRIPT} clang-check-test.sh)
|
||||
configure_file(${IFEM_CPPCHECK_TEST_SCRIPT} cppcheck-test.sh)
|
||||
configure_file(${IFEM_IOTEST_SCRIPT} iotest.sh)
|
||||
|
||||
if(IFEM_BUILD_TESTING)
|
||||
set(EXCL_ALL)
|
||||
|
||||
@@ -13,10 +13,12 @@ if(NOT IFEM_FOUND)
|
||||
set(MPI_FOUND @MPI_FOUND@)
|
||||
set(HDF5_FOUND @HDF5_FOUND@)
|
||||
set(CEREAL_FOUND @CEREAL_FOUND@)
|
||||
set(VTFWRITER_FOUND @VTFWRITER_FOUND@)
|
||||
|
||||
set(IFEM_REGTEST_SCRIPT ${IFEM_PATH}/scripts/regtest.sh.in)
|
||||
set(IFEM_CLANG_CHECK_TEST_SCRIPT ${IFEM_PATH}/scripts/clang-check-test.sh.in)
|
||||
set(IFEM_CPPCHECK_TEST_SCRIPT ${IFEM_PATH}/scripts/cppcheck-test.sh.in)
|
||||
set(IFEM_IOTEST_SCRIPT ${IFEM_PATH}/scripts/iotest.sh.in)
|
||||
set(IFEM_CHECKCOMMITS_SCRIPT ${IFEM_PATH}/CheckCommits.cmake)
|
||||
set(CMAKE_INSTALL_DOCDIR @CMAKE_INSTALL_DOCDIR@)
|
||||
|
||||
|
||||
Reference in new issue
Block a user