added: framework for IO (VTF and HDF5) regression tests

This commit is contained in:
Arne Morten Kvarving committed 2018-07-24 11:27:40 +02:00
1 parent c88d417860
commit 4b804a98de
5 files changed
+75

No files matched your search

+1
View File
@@ -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
+41
View File
@@ -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
+1
View File
@@ -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)
+30
View File
@@ -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)
+2
View File
@@ -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@)