HDFFV-10918 add tests for h5repack ext storage

This commit is contained in:
Allen Byrne 2019-10-01 16:38:48 -05:00
parent f4a8792292
commit 643d298823
2 changed files with 121 additions and 1 deletions

View File

@ -2,7 +2,7 @@ cmake_minimum_required (VERSION 3.10)
project (HDF5_TOOLS_TEST_H5REPACK C)
# --------------------------------------------------------------------
# Add h5Repack test executables
# Add h5repack test executables
# --------------------------------------------------------------------
add_executable (testh5repack_detect_szip ${HDF5_TOOLS_TEST_H5REPACK_SOURCE_DIR}/testh5repack_detect_szip.c)
target_include_directories (testh5repack_detect_szip
@ -85,4 +85,17 @@ if (BUILD_SHARED_LIBS)
)
endif ()
# --------------------------------------------------------------------
# Add the h5repack test executable
# --------------------------------------------------------------------
if (HDF5_BUILD_GENERATORS AND NOT ONLY_SHARED_LIBS)
add_executable (h5repackgentest ${HDF5_TOOLS_TEST_H5REPACK_SOURCE_DIR}/h5repackgentest.c)
target_include_directories (h5repackgentest PRIVATE "${HDF5_SRC_DIR};${HDF5_BINARY_DIR};$<$<BOOL:${HDF5_ENABLE_PARALLEL}>:${MPI_C_INCLUDE_DIRS}>")
TARGET_C_PROPERTIES (h5repackgentest STATIC)
target_link_libraries (h5repackgentest PRIVATE ${HDF5_TOOLS_LIB_TARGET} ${HDF5_LIB_TARGET})
set_target_properties (h5repackgentest PROPERTIES FOLDER generator/tools)
#add_test (NAME h5repackgentest COMMAND ${CMAKE_CROSSCOMPILING_EMULATOR} $<TARGET_FILE:h5repackgentest>)
endif ()
include (CMakeTests.cmake)

View File

@ -718,6 +718,104 @@
endif ()
endmacro ()
macro (ADD_H5_EXTERNAL_TEST testname testtype testfile)
# canonical file = h5repack_${testfile}.h5 - preexist
# external file = h5repack_${testfile}_ex.h5 - preexist
# repacked file = h5repack_${testfile}_rp.h5 - created
# external data file = h5repack_${testfile}_ex-0.dat
if ("${testtype}" STREQUAL "SKIP")
if (NOT HDF5_ENABLE_USING_MEMCHECKER)
add_test (
NAME H5REPACK_EXTERNAL-${testname}
COMMAND ${CMAKE_COMMAND} -E echo "SKIP ${ARGN} ${PROJECT_BINARY_DIR}/testfiles/${testfile} ${PROJECT_BINARY_DIR}/testfiles/out-${testname}.${testfile}"
)
set_property(TEST H5REPACK_EXTERNAL-${testname} PROPERTY DISABLED)
endif ()
else ()
add_test (
NAME H5REPACK_EXTERNAL-${testname}-clear-objects
COMMAND ${CMAKE_COMMAND} -E remove h5repack_${testfile}_rp.h5
)
set_tests_properties (H5REPACK_EXTERNAL-${testname}-clear-objects PROPERTIES
WORKING_DIRECTORY "${PROJECT_BINARY_DIR}/testfiles"
FIXTURES_REQUIRED clear_h5repack
)
# make sure external data file 0 is available
add_test (
NAME H5REPACK_EXTERNAL-${testname}_CPY
COMMAND ${CMAKE_COMMAND} -E copy_if_different
"${PROJECT_SOURCE_DIR}/testfiles/h5repack_${testfile}_ex-0.dat" "${PROJECT_BINARY_DIR}/testfiles/h5repack_${testfile}_ex-0.dat"
)
set_tests_properties (H5REPACK_EXTERNAL-${testname}_CPY PROPERTIES
WORKING_DIRECTORY "${PROJECT_BINARY_DIR}/testfiles"
DEPENDS H5REPACK_EXTERNAL-${testname}-clear-objects
)
# comparison of known files
add_test (
NAME H5REPACK_EXTERNAL-${testname}_DFF1
COMMAND ${CMAKE_CROSSCOMPILING_EMULATOR} $<TARGET_FILE:h5diff${tgt_ext}> --enable-error-stack ${PROJECT_BINARY_DIR}/testfiles/h5repack_${testfile}.h5 ${PROJECT_BINARY_DIR}/testfiles/h5repack_${testfile}_ex.h5
)
set_tests_properties (H5REPACK_EXTERNAL-${testname}_DFF1 PROPERTIES
WORKING_DIRECTORY "${PROJECT_BINARY_DIR}/testfiles"
DEPENDS H5REPACK_EXTERNAL-${testname}_CPY
)
# repack the external file to the repacked file
add_test (
NAME H5REPACK_EXTERNAL-${testname}
COMMAND ${CMAKE_CROSSCOMPILING_EMULATOR} $<TARGET_FILE:h5repack${tgt_ext}> --enable-error-stack ${ARGN} ${PROJECT_BINARY_DIR}/testfiles/h5repack_${testfile}_ex.h5 ${PROJECT_BINARY_DIR}/testfiles/h5repack_${testfile}_rp.h5
)
set_tests_properties (H5REPACK_EXTERNAL-${testname} PROPERTIES
WORKING_DIRECTORY "${PROJECT_BINARY_DIR}/testfiles"
DEPENDS H5REPACK_EXTERNAL-${testname}_DFF1
)
# comparison of repacked file to known files
add_test (
NAME H5REPACK_EXTERNAL-${testname}_DFF2
COMMAND ${CMAKE_CROSSCOMPILING_EMULATOR} $<TARGET_FILE:h5diff${tgt_ext}> --enable-error-stack ${PROJECT_BINARY_DIR}/testfiles/h5repack_${testfile}_rp.h5 ${PROJECT_BINARY_DIR}/testfiles/h5repack_${testfile}.h5
)
set_tests_properties (H5REPACK_EXTERNAL-${testname}_DFF2 PROPERTIES
WORKING_DIRECTORY "${PROJECT_BINARY_DIR}/testfiles"
DEPENDS H5REPACK_EXTERNAL-${testname}
)
add_test (
NAME H5REPACK_EXTERNAL-${testname}_DFF3
COMMAND ${CMAKE_CROSSCOMPILING_EMULATOR} $<TARGET_FILE:h5diff${tgt_ext}> --enable-error-stack ${PROJECT_BINARY_DIR}/testfiles/h5repack_${testfile}_rp.h5 ${PROJECT_BINARY_DIR}/testfiles/h5repack_${testfile}_ex.h5
)
set_tests_properties (H5REPACK_EXTERNAL-${testname}_DFF3 PROPERTIES
WORKING_DIRECTORY "${PROJECT_BINARY_DIR}/testfiles"
DEPENDS H5REPACK_EXTERNAL-${testname}_DFF2
)
# invalidate external file by removing its first data file
add_test (
NAME H5REPACK_EXTERNAL-${testname}_DATA_RMV
COMMAND ${CMAKE_COMMAND} -E remove h5repack_${testfile}_ex-0.dat
)
set_tests_properties (H5REPACK_EXTERNAL-${testname}_DATA_RMV PROPERTIES
WORKING_DIRECTORY "${PROJECT_BINARY_DIR}/testfiles"
DEPENDS H5REPACK_EXTERNAL-${testname}_DFF3
)
# verify comparison of repacked file to known file
add_test (
NAME H5REPACK_EXTERNAL-${testname}_DFF4
COMMAND ${CMAKE_CROSSCOMPILING_EMULATOR} $<TARGET_FILE:h5diff${tgt_ext}> --enable-error-stack ${PROJECT_BINARY_DIR}/testfiles/h5repack_${testfile}_rp.h5 ${PROJECT_BINARY_DIR}/testfiles/h5repack_${testfile}.h5
)
set_tests_properties (H5REPACK_EXTERNAL-${testname}_DFF4 PROPERTIES
WORKING_DIRECTORY "${PROJECT_BINARY_DIR}/testfiles"
DEPENDS H5REPACK_EXTERNAL-${testname}_DATA_RMV
)
# verify comparison of repacked file to known external file fails
add_test (
NAME H5REPACK_EXTERNAL-${testname}_DFF_FAIL
COMMAND ${CMAKE_CROSSCOMPILING_EMULATOR} $<TARGET_FILE:h5diff${tgt_ext}> --enable-error-stack ${PROJECT_BINARY_DIR}/testfiles/h5repack_${testfile}_rp.h5 ${PROJECT_BINARY_DIR}/testfiles/h5repack_${testfile}_ex.h5
)
set_tests_properties (H5REPACK_EXTERNAL-${testname}_DFF_FAIL PROPERTIES
WORKING_DIRECTORY "${PROJECT_BINARY_DIR}/testfiles"
DEPENDS H5REPACK_EXTERNAL-${testname}_DFF4
WILL_FAIL "true"
)
endif ()
endmacro ()
##############################################################################
##############################################################################
### T H E T E S T S ###
@ -1382,6 +1480,15 @@ ADD_H5_VERIFY_SUPERBLOCK (SB_IS_3 h5repack_layout.h5 2 2 3)
# -j 0 -k 1, file cannot be opened
ADD_H5_VERIFY_INVALIDBOUNDS (latest_latest_invalid bounds_latest_latest.h5 0 1)
##############################################################################
### E X T E R N A L S T O R A G E T E S T S
##############################################################################
ADD_H5_EXTERNAL_TEST (ext_f32le "TEST" f32le -l CONTI)
ADD_H5_EXTERNAL_TEST (ext_int32le_1d "TEST" int32le_1d -l CONTI)
ADD_H5_EXTERNAL_TEST (ext_int32le_2d "TEST" int32le_2d -l CONTI)
ADD_H5_EXTERNAL_TEST (ext_int32le_3d "TEST" int32le_3d -l CONTI)
ADD_H5_EXTERNAL_TEST (ext_uint8be "TEST" uint8be -l CONTI)
##############################################################################
### P L U G I N T E S T S
##############################################################################