1# 2# Copyright by The HDF Group. 3# All rights reserved. 4# 5# This file is part of HDF5. The full HDF5 copyright notice, including 6# terms governing use, modification, and redistribution, is contained in 7# the COPYING file, which can be found at the root of the source code 8# distribution tree, or in https://support.hdfgroup.org/ftp/HDF5/releases. 9# If you do not have access to either file, you may request a copy from 10# help@hdfgroup.org. 11# 12 13############################################################################## 14############################################################################## 15### T E S T I N G ### 16############################################################################## 17############################################################################## 18 19 # -------------------------------------------------------------------- 20 # Copy all the HDF5 files from the source directory into the test directory 21 # -------------------------------------------------------------------- 22 set (LIST_HDF5_TEST_FILES 23 ${HDF5_TOOLS_TEST_H5REPACK_SOURCE_DIR}/testfiles/bounds_latest_latest.h5 24 ${HDF5_TOOLS_TEST_H5REPACK_SOURCE_DIR}/testfiles/h5repack_attr.h5 25 ${HDF5_TOOLS_TEST_H5REPACK_SOURCE_DIR}/testfiles/h5repack_attr_refs.h5 26 ${HDF5_TOOLS_TEST_H5REPACK_SOURCE_DIR}/testfiles/h5repack_deflate.h5 27 ${HDF5_TOOLS_TEST_H5REPACK_SOURCE_DIR}/testfiles/h5repack_early.h5 28 ${HDF5_TOOLS_TEST_H5REPACK_SOURCE_DIR}/testfiles/h5repack_ext.h5 29 ${HDF5_TOOLS_TEST_H5REPACK_SOURCE_DIR}/testfiles/h5repack_f32le.h5 30 ${HDF5_TOOLS_TEST_H5REPACK_SOURCE_DIR}/testfiles/h5repack_f32le_ex-0.dat 31 ${HDF5_TOOLS_TEST_H5REPACK_SOURCE_DIR}/testfiles/h5repack_f32le_ex.h5 32 ${HDF5_TOOLS_TEST_H5REPACK_SOURCE_DIR}/testfiles/h5repack_fill.h5 33 ${HDF5_TOOLS_TEST_H5REPACK_SOURCE_DIR}/testfiles/h5repack_filters.h5 34 ${HDF5_TOOLS_TEST_H5REPACK_SOURCE_DIR}/testfiles/h5repack_fletcher.h5 35 ${HDF5_TOOLS_TEST_H5REPACK_SOURCE_DIR}/testfiles/h5repack_hlink.h5 36 ${HDF5_TOOLS_TEST_H5REPACK_SOURCE_DIR}/testfiles/h5repack_int32le_1d.h5 37 ${HDF5_TOOLS_TEST_H5REPACK_SOURCE_DIR}/testfiles/h5repack_int32le_1d_ex-0.dat 38 ${HDF5_TOOLS_TEST_H5REPACK_SOURCE_DIR}/testfiles/h5repack_int32le_1d_ex-1.dat 39 ${HDF5_TOOLS_TEST_H5REPACK_SOURCE_DIR}/testfiles/h5repack_int32le_1d_ex.h5 40 ${HDF5_TOOLS_TEST_H5REPACK_SOURCE_DIR}/testfiles/h5repack_int32le_2d.h5 41 ${HDF5_TOOLS_TEST_H5REPACK_SOURCE_DIR}/testfiles/h5repack_int32le_2d_ex-0.dat 42 ${HDF5_TOOLS_TEST_H5REPACK_SOURCE_DIR}/testfiles/h5repack_int32le_2d_ex.h5 43 ${HDF5_TOOLS_TEST_H5REPACK_SOURCE_DIR}/testfiles/h5repack_int32le_3d.h5 44 ${HDF5_TOOLS_TEST_H5REPACK_SOURCE_DIR}/testfiles/h5repack_int32le_3d_ex-0.dat 45 ${HDF5_TOOLS_TEST_H5REPACK_SOURCE_DIR}/testfiles/h5repack_int32le_3d_ex.h5 46 ${HDF5_TOOLS_TEST_H5REPACK_SOURCE_DIR}/testfiles/h5repack_layout.h5 47 ${HDF5_TOOLS_TEST_H5REPACK_SOURCE_DIR}/testfiles/h5repack_layouto.h5 48 ${HDF5_TOOLS_TEST_H5REPACK_SOURCE_DIR}/testfiles/h5repack_layout2.h5 49 ${HDF5_TOOLS_TEST_H5REPACK_SOURCE_DIR}/testfiles/h5repack_layout3.h5 50 ${HDF5_TOOLS_TEST_H5REPACK_SOURCE_DIR}/testfiles/h5repack_layout.UD.h5 51 ${HDF5_TOOLS_TEST_H5REPACK_SOURCE_DIR}/testfiles/h5repack_named_dtypes.h5 52 ${HDF5_TOOLS_TEST_H5REPACK_SOURCE_DIR}/testfiles/h5repack_nested_8bit_enum.h5 53 ${HDF5_TOOLS_TEST_H5REPACK_SOURCE_DIR}/testfiles/h5repack_nested_8bit_enum_deflated.h5 54 ${HDF5_TOOLS_TEST_H5REPACK_SOURCE_DIR}/testfiles/h5repack_nbit.h5 55 ${HDF5_TOOLS_TEST_H5REPACK_SOURCE_DIR}/testfiles/h5repack_objs.h5 56 ${HDF5_TOOLS_TEST_H5REPACK_SOURCE_DIR}/testfiles/h5repack_refs.h5 57 ${HDF5_TOOLS_TEST_H5REPACK_SOURCE_DIR}/testfiles/h5repack_shuffle.h5 58 ${HDF5_TOOLS_TEST_H5REPACK_SOURCE_DIR}/testfiles/h5repack_soffset.h5 59 ${HDF5_TOOLS_TEST_H5REPACK_SOURCE_DIR}/testfiles/h5repack_szip.h5 60 ${HDF5_TOOLS_TEST_H5REPACK_SOURCE_DIR}/testfiles/h5repack_uint8be.h5 61 ${HDF5_TOOLS_TEST_H5REPACK_SOURCE_DIR}/testfiles/h5repack_uint8be_ex-0.dat 62 ${HDF5_TOOLS_TEST_H5REPACK_SOURCE_DIR}/testfiles/h5repack_uint8be_ex-1.dat 63 ${HDF5_TOOLS_TEST_H5REPACK_SOURCE_DIR}/testfiles/h5repack_uint8be_ex-2.dat 64 ${HDF5_TOOLS_TEST_H5REPACK_SOURCE_DIR}/testfiles/h5repack_uint8be_ex-3.dat 65 ${HDF5_TOOLS_TEST_H5REPACK_SOURCE_DIR}/testfiles/h5repack_uint8be_ex.h5 66 # fsm 67 ${HDF5_TOOLS_TEST_H5REPACK_SOURCE_DIR}/testfiles/h5repack_aggr.h5 68 ${HDF5_TOOLS_TEST_H5REPACK_SOURCE_DIR}/testfiles/h5repack_fsm_aggr_nopersist.h5 69 ${HDF5_TOOLS_TEST_H5REPACK_SOURCE_DIR}/testfiles/h5repack_fsm_aggr_persist.h5 70 ${HDF5_TOOLS_TEST_H5REPACK_SOURCE_DIR}/testfiles/h5repack_none.h5 71 ${HDF5_TOOLS_TEST_H5REPACK_SOURCE_DIR}/testfiles/h5repack_paged_nopersist.h5 72 ${HDF5_TOOLS_TEST_H5REPACK_SOURCE_DIR}/testfiles/h5repack_paged_persist.h5 73 # h5diff/testfile 74 ${HDF5_TOOLS_TEST_H5DIFF_SOURCE_DIR}/testfiles/h5diff_attr1.h5 75 # tools/testfiles 76 ${HDF5_TOOLS_DIR}/testfiles/tfamily00000.h5 77 ${HDF5_TOOLS_DIR}/testfiles/tfamily00001.h5 78 ${HDF5_TOOLS_DIR}/testfiles/tfamily00002.h5 79 ${HDF5_TOOLS_DIR}/testfiles/tfamily00003.h5 80 ${HDF5_TOOLS_DIR}/testfiles/tfamily00004.h5 81 ${HDF5_TOOLS_DIR}/testfiles/tfamily00005.h5 82 ${HDF5_TOOLS_DIR}/testfiles/tfamily00006.h5 83 ${HDF5_TOOLS_DIR}/testfiles/tfamily00007.h5 84 ${HDF5_TOOLS_DIR}/testfiles/tfamily00008.h5 85 ${HDF5_TOOLS_DIR}/testfiles/tfamily00009.h5 86 ${HDF5_TOOLS_DIR}/testfiles/tfamily00010.h5 87 ${HDF5_TOOLS_DIR}/testfiles/tordergr.h5 88 # tools/testfiles/vds 89 ${HDF5_TOOLS_DIR}/testfiles/vds/1_a.h5 90 ${HDF5_TOOLS_DIR}/testfiles/vds/1_b.h5 91 ${HDF5_TOOLS_DIR}/testfiles/vds/1_c.h5 92 ${HDF5_TOOLS_DIR}/testfiles/vds/1_d.h5 93 ${HDF5_TOOLS_DIR}/testfiles/vds/1_e.h5 94 ${HDF5_TOOLS_DIR}/testfiles/vds/1_f.h5 95 ${HDF5_TOOLS_DIR}/testfiles/vds/1_vds.h5 96 ${HDF5_TOOLS_DIR}/testfiles/vds/2_a.h5 97 ${HDF5_TOOLS_DIR}/testfiles/vds/2_b.h5 98 ${HDF5_TOOLS_DIR}/testfiles/vds/2_c.h5 99 ${HDF5_TOOLS_DIR}/testfiles/vds/2_d.h5 100 ${HDF5_TOOLS_DIR}/testfiles/vds/2_e.h5 101 ${HDF5_TOOLS_DIR}/testfiles/vds/2_vds.h5 102 ${HDF5_TOOLS_DIR}/testfiles/vds/3_1_vds.h5 103 ${HDF5_TOOLS_DIR}/testfiles/vds/3_2_vds.h5 104 ${HDF5_TOOLS_DIR}/testfiles/vds/4_0.h5 105 ${HDF5_TOOLS_DIR}/testfiles/vds/4_1.h5 106 ${HDF5_TOOLS_DIR}/testfiles/vds/4_2.h5 107 ${HDF5_TOOLS_DIR}/testfiles/vds/4_vds.h5 108 ${HDF5_TOOLS_DIR}/testfiles/vds/5_a.h5 109 ${HDF5_TOOLS_DIR}/testfiles/vds/5_b.h5 110 ${HDF5_TOOLS_DIR}/testfiles/vds/5_c.h5 111 ${HDF5_TOOLS_DIR}/testfiles/vds/5_vds.h5 112 ) 113 114 set (LIST_OTHER_TEST_FILES 115 h5repack-help.txt 116 h5repack_ext.bin 117 h5repack.info 118 ublock.bin 119 ) 120 121 set (LIST_TST_TEST_FILES 122 ${HDF5_TOOLS_TEST_H5REPACK_SOURCE_DIR}/testfiles/h5repack_filters.h5-gzip_verbose_filters 123 ${HDF5_TOOLS_TEST_H5REPACK_SOURCE_DIR}/testfiles/h5repack_layout.h5-dset2_chunk_20x10-errstk 124 ${HDF5_TOOLS_TEST_H5REPACK_SOURCE_DIR}/testfiles/plugin_test.h5repack_layout.h5 125 ${HDF5_TOOLS_TEST_H5REPACK_SOURCE_DIR}/testfiles/plugin_version_test.h5repack_layout.h5 126 ${HDF5_TOOLS_TEST_H5REPACK_SOURCE_DIR}/testfiles/plugin_zero.h5repack_layout.h5 127 ${HDF5_TOOLS_TEST_H5REPACK_SOURCE_DIR}/testfiles/plugin_none.h5repack_layout.UD.h5 128 ) 129 130 set (LIST_DDL_TEST_FILES 131 ${HDF5_TOOLS_TEST_H5REPACK_SOURCE_DIR}/testfiles/crtorder.tordergr.h5 132 ${HDF5_TOOLS_TEST_H5REPACK_SOURCE_DIR}/testfiles/deflate_limit.h5repack_layout.h5 133 ${HDF5_TOOLS_TEST_H5REPACK_SOURCE_DIR}/testfiles/h5repack_layout.h5 134 ${HDF5_TOOLS_TEST_H5REPACK_SOURCE_DIR}/testfiles/h5repack_layout.h5-plugin_test 135 ${HDF5_TOOLS_TEST_H5REPACK_SOURCE_DIR}/testfiles/h5repack_layout.h5-plugin_version_test 136 ${HDF5_TOOLS_TEST_H5REPACK_SOURCE_DIR}/testfiles/h5repack_layout.h5-plugin_zero 137 ${HDF5_TOOLS_TEST_H5REPACK_SOURCE_DIR}/testfiles/h5repack_layout.UD.h5-plugin_none 138 # fsm 139 ${HDF5_TOOLS_TEST_H5REPACK_SOURCE_DIR}/testfiles/STG.h5repack_none.h5 140 ${HDF5_TOOLS_TEST_H5REPACK_SOURCE_DIR}/testfiles/SPT.h5repack_aggr.h5 141 ${HDF5_TOOLS_TEST_H5REPACK_SOURCE_DIR}/testfiles/SP.h5repack_fsm_aggr_nopersist.h5 142 ${HDF5_TOOLS_TEST_H5REPACK_SOURCE_DIR}/testfiles/S.h5repack_fsm_aggr_persist.h5 143 ${HDF5_TOOLS_TEST_H5REPACK_SOURCE_DIR}/testfiles/GS.h5repack_paged_nopersist.h5 144 ${HDF5_TOOLS_TEST_H5REPACK_SOURCE_DIR}/testfiles/SP.h5repack_paged_persist.h5 145 # vds 146 ${HDF5_TOOLS_TEST_H5REPACK_SOURCE_DIR}/testfiles/1_vds.h5-vds_dset_chunk20x10x5-v 147 ${HDF5_TOOLS_TEST_H5REPACK_SOURCE_DIR}/testfiles/2_vds.h5-vds_chunk3x6x9-v 148 ${HDF5_TOOLS_TEST_H5REPACK_SOURCE_DIR}/testfiles/3_1_vds.h5-vds_chunk2x5x8-v 149 ${HDF5_TOOLS_TEST_H5REPACK_SOURCE_DIR}/testfiles/4_vds.h5-vds_compa-v 150 ${HDF5_TOOLS_TEST_H5REPACK_SOURCE_DIR}/testfiles/4_vds.h5-vds_conti-v 151 ) 152 153 foreach (h5_file ${LIST_HDF5_TEST_FILES}) 154 get_filename_component(fname "${h5_file}" NAME) 155 HDFTEST_COPY_FILE("${h5_file}" "${PROJECT_BINARY_DIR}/testfiles/${fname}" "h5repack_files") 156 endforeach () 157 158 foreach (h5_file ${LIST_OTHER_TEST_FILES}) 159 HDFTEST_COPY_FILE("${HDF5_TOOLS_TEST_H5REPACK_SOURCE_DIR}/testfiles/${h5_file}" "${PROJECT_BINARY_DIR}/testfiles/${h5_file}" "h5repack_files") 160 endforeach () 161 162 foreach (h5_file ${LIST_TST_TEST_FILES}) 163 get_filename_component(fname "${h5_file}" NAME) 164 HDFTEST_COPY_FILE("${h5_file}.tst" "${PROJECT_BINARY_DIR}/testfiles/${fname}.tst" "h5repack_files") 165 endforeach () 166 167 foreach (h5_file ${LIST_DDL_TEST_FILES}) 168 get_filename_component(fname "${h5_file}" NAME) 169 HDFTEST_COPY_FILE("${h5_file}.ddl" "${PROJECT_BINARY_DIR}/testfiles/${fname}.ddl" "h5repack_files") 170 endforeach () 171 add_custom_target(h5repack_files ALL COMMENT "Copying files needed by h5repack tests" DEPENDS ${h5repack_files_list}) 172 173############################################################################## 174############################################################################## 175### T H E T E S T S M A C R O S ### 176############################################################################## 177############################################################################## 178 179 if (NOT BUILD_SHARED_LIBS) 180 set (tgt_ext "") 181 else () 182 set (tgt_ext "-shared") 183 endif () 184 185 macro (ADD_HELP_TEST testname resultcode) 186 # If using memchecker add tests without using scripts 187 if (HDF5_ENABLE_USING_MEMCHECKER) 188 add_test (NAME H5REPACK-h5repack-${testname} COMMAND ${CMAKE_CROSSCOMPILING_EMULATOR} $<TARGET_FILE:h5repack${tgt_ext}> ${ARGN}) 189 set_tests_properties (H5REPACK-h5repack-${testname} PROPERTIES 190 WORKING_DIRECTORY "${PROJECT_BINARY_DIR}/testfiles" 191 ) 192 else () 193 add_test ( 194 NAME H5REPACK-h5repack-${testname} 195 COMMAND "${CMAKE_COMMAND}" 196 -D "TEST_EMULATOR=${CMAKE_CROSSCOMPILING_EMULATOR}" 197 -D "TEST_PROGRAM=$<TARGET_FILE:h5repack${tgt_ext}>" 198 -D "TEST_ARGS:STRING=${ARGN}" 199 -D "TEST_FOLDER=${PROJECT_BINARY_DIR}/testfiles" 200 -D "TEST_OUTPUT=h5repack-${testname}.out" 201 -D "TEST_EXPECT=${resultcode}" 202 -D "TEST_REFERENCE=h5repack-${testname}.txt" 203 -P "${HDF_RESOURCES_EXT_DIR}/runTest.cmake" 204 ) 205 endif () 206 set_tests_properties (H5REPACK-h5repack-${testname} PROPERTIES 207 FIXTURES_REQUIRED clear_h5repack 208 ) 209 endmacro () 210 211 macro (ADD_H5_TEST_OLD testname testtype testfile) 212 if (NOT HDF5_ENABLE_USING_MEMCHECKER) 213 if ("${testtype}" STREQUAL "SKIP") 214 add_test ( 215 NAME H5REPACK_OLD-${testname} 216 COMMAND ${CMAKE_COMMAND} -E echo "SKIP ${ARGN} -i ${PROJECT_BINARY_DIR}/testfiles/${testfile} -o ${PROJECT_BINARY_DIR}/testfiles/out-${testname}.${testfile}" 217 ) 218 set_property(TEST H5REPACK_OLD-${testname} PROPERTY DISABLED) 219 else () 220 add_test ( 221 NAME H5REPACK_OLD-${testname}-clear-objects 222 COMMAND ${CMAKE_COMMAND} -E remove testfiles/out-${testname}.${testfile} 223 ) 224 set_tests_properties (H5REPACK_OLD-${testname}-clear-objects PROPERTIES 225 FIXTURES_REQUIRED clear_h5repack 226 ) 227 add_test ( 228 NAME H5REPACK_OLD-${testname} 229 COMMAND ${CMAKE_CROSSCOMPILING_EMULATOR} $<TARGET_FILE:h5repack${tgt_ext}> ${ARGN} -i ${PROJECT_BINARY_DIR}/testfiles/${testfile} -o ${PROJECT_BINARY_DIR}/testfiles/out-${testname}.${testfile} 230 ) 231 set_tests_properties (H5REPACK_OLD-${testname} PROPERTIES 232 DEPENDS H5REPACK_OLD-${testname}-clear-objects 233 ) 234 add_test ( 235 NAME H5REPACK_OLD-${testname}_DFF 236 COMMAND ${CMAKE_CROSSCOMPILING_EMULATOR} $<TARGET_FILE:h5diff${tgt_ext}> ${PROJECT_BINARY_DIR}/testfiles/${testfile} ${PROJECT_BINARY_DIR}/testfiles/out-${testname}.${testfile} 237 ) 238 set_tests_properties (H5REPACK_OLD-${testname}_DFF PROPERTIES 239 DEPENDS H5REPACK_OLD-${testname} 240 ) 241 endif () 242 endif () 243 endmacro () 244 245 macro (ADD_H5_TEST testname testtype testfile) 246 if ("${testtype}" STREQUAL "SKIP") 247 if (NOT HDF5_ENABLE_USING_MEMCHECKER) 248 add_test ( 249 NAME H5REPACK-${testname} 250 COMMAND ${CMAKE_COMMAND} -E echo "SKIP ${ARGN} ${PROJECT_BINARY_DIR}/testfiles/${testfile} ${PROJECT_BINARY_DIR}/testfiles/out-${testname}.${testfile}" 251 ) 252 set_property(TEST H5REPACK-${testname} PROPERTY DISABLED) 253 endif () 254 else () 255 add_test ( 256 NAME H5REPACK-${testname}-clear-objects 257 COMMAND ${CMAKE_COMMAND} -E remove testfiles/out-${testname}.${testfile} 258 ) 259 set_tests_properties (H5REPACK-${testname}-clear-objects PROPERTIES 260 FIXTURES_REQUIRED clear_h5repack 261 ) 262 add_test ( 263 NAME H5REPACK-${testname} 264 COMMAND ${CMAKE_CROSSCOMPILING_EMULATOR} $<TARGET_FILE:h5repack${tgt_ext}> --enable-error-stack ${ARGN} ${PROJECT_BINARY_DIR}/testfiles/${testfile} ${PROJECT_BINARY_DIR}/testfiles/out-${testname}.${testfile} 265 ) 266 set_tests_properties (H5REPACK-${testname} PROPERTIES 267 DEPENDS H5REPACK-${testname}-clear-objects 268 ) 269 add_test ( 270 NAME H5REPACK-${testname}_DFF 271 COMMAND ${CMAKE_CROSSCOMPILING_EMULATOR} $<TARGET_FILE:h5diff${tgt_ext}> --enable-error-stack ${PROJECT_BINARY_DIR}/testfiles/${testfile} ${PROJECT_BINARY_DIR}/testfiles/out-${testname}.${testfile} 272 ) 273 set_tests_properties (H5REPACK-${testname}_DFF PROPERTIES 274 DEPENDS H5REPACK-${testname} 275 ) 276 endif () 277 endmacro () 278 279 macro (ADD_H5_CMP_TEST testname testfilter testtype resultcode resultfile) 280 if ("${testtype}" STREQUAL "SKIP") 281 if (NOT HDF5_ENABLE_USING_MEMCHECKER) 282 add_test ( 283 NAME H5REPACK_CMP-${testname} 284 COMMAND ${CMAKE_COMMAND} -E echo "SKIP ${ARGN} ${PROJECT_BINARY_DIR}/testfiles/${resultfile} ${PROJECT_BINARY_DIR}/testfiles/out-${testname}.${resultfile}" 285 ) 286 set_property(TEST H5REPACK_CMP-${testname} PROPERTY DISABLED) 287 endif () 288 else () 289 # If using memchecker add tests without using scripts 290 if (HDF5_ENABLE_USING_MEMCHECKER) 291 add_test ( 292 NAME H5REPACK_CMP-${testname} 293 COMMAND ${CMAKE_CROSSCOMPILING_EMULATOR} $<TARGET_FILE:h5repack${tgt_ext}> ${ARGN} ${PROJECT_BINARY_DIR}/testfiles/${resultfile} ${PROJECT_BINARY_DIR}/testfiles/out-${testname}.${resultfile} 294 ) 295 else () 296 add_test ( 297 NAME H5REPACK_CMP-${testname}-clear-objects 298 COMMAND ${CMAKE_COMMAND} -E remove testfiles/out-${testname}.${resultfile} 299 ) 300 set_tests_properties (H5REPACK_CMP-${testname}-clear-objects PROPERTIES 301 FIXTURES_REQUIRED clear_h5repack 302 ) 303 add_test ( 304 NAME H5REPACK_CMP-${testname} 305 COMMAND "${CMAKE_COMMAND}" 306 -D "TEST_EMULATOR=${CMAKE_CROSSCOMPILING_EMULATOR}" 307 -D "TEST_PROGRAM=$<TARGET_FILE:h5repack${tgt_ext}>" 308 -D "TEST_ARGS:STRING=${ARGN};${resultfile};out-${testname}.${resultfile}" 309 -D "TEST_FOLDER=${PROJECT_BINARY_DIR}/testfiles" 310 -D "TEST_OUTPUT=${resultfile}-${testname}.out" 311 -D "TEST_EXPECT=${resultcode}" 312 -D "TEST_FILTER:STRING=${testfilter}" 313 -D "TEST_REFERENCE=${resultfile}-${testname}.tst" 314 -P "${HDF_RESOURCES_EXT_DIR}/runTest.cmake" 315 ) 316 set_tests_properties (H5REPACK_CMP-${testname} PROPERTIES 317 DEPENDS H5REPACK_CMP-${testname}-clear-objects 318 ) 319 endif () 320 endif () 321 endmacro () 322 323 macro (ADD_H5_MASK_TEST testname testtype resultcode result_errcheck resultfile) 324 if ("${testtype}" STREQUAL "SKIP") 325 if (NOT HDF5_ENABLE_USING_MEMCHECKER) 326 add_test ( 327 NAME H5REPACK_MASK-${testname} 328 COMMAND ${CMAKE_COMMAND} -E echo "SKIP ${ARGN} ${PROJECT_BINARY_DIR}/testfiles/${resultfile} ${PROJECT_BINARY_DIR}/testfiles/out-${testname}.${resultfile}" 329 ) 330 set_property(TEST H5REPACK_MASK-${testname} PROPERTY DISABLED) 331 endif () 332 else () 333 # If using memchecker add tests without using scripts 334 if (HDF5_ENABLE_USING_MEMCHECKER) 335 add_test ( 336 NAME H5REPACK_MASK-${testname} 337 COMMAND ${CMAKE_CROSSCOMPILING_EMULATOR} $<TARGET_FILE:h5repack${tgt_ext}> ${ARGN} ${PROJECT_BINARY_DIR}/testfiles/${resultfile} ${PROJECT_BINARY_DIR}/testfiles/out-${testname}.${resultfile} 338 ) 339 set_tests_properties (H5REPACK_MASK-${testname} PROPERTIES 340 FIXTURES_REQUIRED clear_h5repack 341 ) 342 else (HDF5_ENABLE_USING_MEMCHECKER) 343 add_test ( 344 NAME H5REPACK_MASK-${testname}-clear-objects 345 COMMAND ${CMAKE_COMMAND} -E remove testfiles/out-${testname}.${resultfile} 346 ) 347 set_tests_properties (H5REPACK_MASK-${testname}-clear-objects PROPERTIES DEPENDS ${last_test} 348 FIXTURES_REQUIRED clear_h5repack 349 ) 350 add_test ( 351 NAME H5REPACK_MASK-${testname} 352 COMMAND "${CMAKE_COMMAND}" 353 -D "TEST_EMULATOR=${CMAKE_CROSSCOMPILING_EMULATOR}" 354 -D "TEST_PROGRAM=$<TARGET_FILE:h5repack${tgt_ext}>" 355 -D "TEST_ARGS:STRING=${ARGN};${resultfile};out-${testname}.${resultfile}" 356 -D "TEST_FOLDER=${PROJECT_BINARY_DIR}/testfiles" 357 -D "TEST_OUTPUT=${resultfile}-${testname}.out" 358 -D "TEST_EXPECT=${resultcode}" 359 -D "TEST_SKIP_COMPARE=true" 360 -D "TEST_REFERENCE=${resultfile}.mty" 361 -D "TEST_ERRREF=${result_errcheck}" 362 -P "${HDF_RESOURCES_EXT_DIR}/grepTest.cmake" 363 ) 364 set_tests_properties (H5REPACK_MASK-${testname} PROPERTIES DEPENDS H5REPACK_MASK-${testname}-clear-objects) 365 endif () 366 endif () 367 endmacro () 368 369 macro (ADD_H5_DMP_TEST testname testtype resultcode resultfile) 370 if ("${testtype}" STREQUAL "SKIP") 371 if (NOT HDF5_ENABLE_USING_MEMCHECKER) 372 add_test ( 373 NAME H5REPACK_DMP-${testname} 374 COMMAND ${CMAKE_COMMAND} -E echo "SKIP ${ARGN} ${PROJECT_BINARY_DIR}/testfiles/${resultfile} ${PROJECT_BINARY_DIR}/testfiles/out-${testname}.${resultfile}" 375 ) 376 set_property(TEST H5REPACK_DMP-${testname} PROPERTY DISABLED) 377 endif () 378 else () 379 add_test ( 380 NAME H5REPACK_DMP-${testname}-clear-objects 381 COMMAND ${CMAKE_COMMAND} -E remove testfiles/out-${testname}.${resultfile} 382 ) 383 set_tests_properties (H5REPACK_DMP-${testname}-clear-objects PROPERTIES 384 FIXTURES_REQUIRED clear_h5repack 385 ) 386 add_test ( 387 NAME H5REPACK_DMP-${testname} 388 COMMAND ${CMAKE_CROSSCOMPILING_EMULATOR} $<TARGET_FILE:h5repack${tgt_ext}> ${ARGN} ${PROJECT_BINARY_DIR}/testfiles/${resultfile} ${PROJECT_BINARY_DIR}/testfiles/out-${testname}.${resultfile} 389 ) 390 set_tests_properties (H5REPACK_DMP-${testname} PROPERTIES 391 DEPENDS H5REPACK_DMP-${testname}-clear-objects 392 ) 393 if (NOT HDF5_ENABLE_USING_MEMCHECKER) 394 add_test ( 395 NAME H5REPACK_DMP-h5dump-${testname} 396 COMMAND "${CMAKE_COMMAND}" 397 -D "TEST_EMULATOR=${CMAKE_CROSSCOMPILING_EMULATOR}" 398 -D "TEST_PROGRAM=$<TARGET_FILE:h5dump${tgt_ext}>" 399 -D "TEST_ARGS:STRING=-q;creation_order;-pH;out-${testname}.${resultfile}" 400 -D "TEST_FOLDER=${PROJECT_BINARY_DIR}/testfiles" 401 -D "TEST_OUTPUT=${resultfile}-${testname}.out" 402 -D "TEST_EXPECT=${resultcode}" 403 -D "TEST_REFERENCE=${testname}.${resultfile}.ddl" 404 -P "${HDF_RESOURCES_EXT_DIR}/runTest.cmake" 405 ) 406 set_tests_properties (H5REPACK_DMP-h5dump-${testname} PROPERTIES 407 DEPENDS "H5REPACK_DMP-${testname}" 408 ) 409 endif () 410 endif () 411 endmacro () 412 413 macro (ADD_H5_STAT_TEST testname testtype resultcode statarg resultfile) 414 if ("${testtype}" STREQUAL "SKIP") 415 if (NOT HDF5_ENABLE_USING_MEMCHECKER) 416 add_test ( 417 NAME H5REPACK_STAT-${testname} 418 COMMAND ${CMAKE_COMMAND} -E echo "SKIP ${ARGN} ${PROJECT_BINARY_DIR}/testfiles/${resultfile} ${PROJECT_BINARY_DIR}/testfiles/out-${statarg}.${resultfile}" 419 ) 420 set_property(TEST H5REPACK_STAT-${testname} PROPERTY DISABLED) 421 endif () 422 else () 423 add_test ( 424 NAME H5REPACK_STAT-${testname}-clear-objects 425 COMMAND ${CMAKE_COMMAND} -E remove testfiles/out-${statarg}.${resultfile} 426 ) 427 set_tests_properties (H5REPACK_STAT-${testname}-clear-objects PROPERTIES 428 FIXTURES_REQUIRED clear_h5repack 429 ) 430 add_test ( 431 NAME H5REPACK_STAT-${testname} 432 COMMAND ${CMAKE_CROSSCOMPILING_EMULATOR} $<TARGET_FILE:h5repack${tgt_ext}> ${ARGN} ${PROJECT_BINARY_DIR}/testfiles/${resultfile} ${PROJECT_BINARY_DIR}/testfiles/out-${statarg}.${resultfile} 433 ) 434 set_tests_properties (H5REPACK_STAT-${testname} PROPERTIES 435 DEPENDS H5REPACK_STAT-${testname}-clear-objects 436 ) 437 if (NOT HDF5_ENABLE_USING_MEMCHECKER) 438 add_test ( 439 NAME H5REPACK_STAT-h5stat-${testname} 440 COMMAND "${CMAKE_COMMAND}" 441 -D "TEST_EMULATOR=${CMAKE_CROSSCOMPILING_EMULATOR}" 442 -D "TEST_PROGRAM=$<TARGET_FILE:h5stat${tgt_ext}>" 443 -D "TEST_ARGS:STRING=-S;-s;out-${statarg}.${resultfile}" 444 -D "TEST_FOLDER=${PROJECT_BINARY_DIR}/testfiles" 445 -D "TEST_OUTPUT=${resultfile}-${testname}.out" 446 -D "TEST_EXPECT=${resultcode}" 447 -D "TEST_REFERENCE=${statarg}.${resultfile}.ddl" 448 -P "${HDF_RESOURCES_EXT_DIR}/runTest.cmake" 449 ) 450 set_tests_properties (H5REPACK_STAT-h5stat-${testname} PROPERTIES 451 DEPENDS "H5REPACK_STAT-${testname}" 452 ) 453 endif () 454 endif () 455 endmacro () 456 457 macro (ADD_H5_VERIFY_TEST testname testtype resultcode testfile testdset testfilter) 458 if ("${testtype}" STREQUAL "SKIP") 459 if (NOT HDF5_ENABLE_USING_MEMCHECKER) 460 add_test ( 461 NAME H5REPACK_VERIFY_LAYOUT-${testname} 462 COMMAND ${CMAKE_COMMAND} -E echo "SKIP -d ${testdset} -pH ${PROJECT_BINARY_DIR}/testfiles/out-${testname}.${resultfile}" 463 ) 464 set_property(TEST H5REPACK_VERIFY_LAYOUT-${testname} PROPERTY DISABLED) 465 endif () 466 else () 467 if (NOT HDF5_ENABLE_USING_MEMCHECKER) 468 add_test ( 469 NAME H5REPACK_VERIFY_LAYOUT-${testname}-clear-objects 470 COMMAND ${CMAKE_COMMAND} -E remove testfiles/out-${testname}.${testfile} 471 ) 472 set_tests_properties (H5REPACK_VERIFY_LAYOUT-${testname}-clear-objects PROPERTIES 473 FIXTURES_REQUIRED clear_h5repack 474 ) 475 add_test ( 476 NAME H5REPACK_VERIFY_LAYOUT-${testname} 477 COMMAND ${CMAKE_CROSSCOMPILING_EMULATOR} $<TARGET_FILE:h5repack${tgt_ext}> ${ARGN} ${PROJECT_BINARY_DIR}/testfiles/${testfile} ${PROJECT_BINARY_DIR}/testfiles/out-${testname}.${testfile} 478 ) 479 set_tests_properties (H5REPACK_VERIFY_LAYOUT-${testname} PROPERTIES 480 DEPENDS H5REPACK_VERIFY_LAYOUT-${testname}-clear-objects 481 ) 482 add_test ( 483 NAME H5REPACK_VERIFY_LAYOUT-${testname}_DFF 484 COMMAND ${CMAKE_CROSSCOMPILING_EMULATOR} $<TARGET_FILE:h5diff${tgt_ext}> ${PROJECT_BINARY_DIR}/testfiles/${testfile} ${PROJECT_BINARY_DIR}/testfiles/out-${testname}.${testfile} 485 ) 486 set_tests_properties (H5REPACK_VERIFY_LAYOUT-${testname}_DFF PROPERTIES 487 DEPENDS H5REPACK_VERIFY_LAYOUT-${testname} 488 ) 489 if (NOT ${resultcode}) 490 add_test ( 491 NAME H5REPACK_VERIFY_LAYOUT-${testname}_DMP 492 COMMAND "${CMAKE_COMMAND}" 493 -D "TEST_EMULATOR=${CMAKE_CROSSCOMPILING_EMULATOR}" 494 -D "TEST_PROGRAM=$<TARGET_FILE:h5dump${tgt_ext}>" 495 -D "TEST_ARGS:STRING=-d;${testdset};-pH;out-${testname}.${testfile}" 496 -D "TEST_FOLDER=${PROJECT_BINARY_DIR}/testfiles" 497 -D "TEST_OUTPUT=${testfile}-${testname}-v.out" 498 -D "TEST_EXPECT=${resultcode}" 499 -D "TEST_FILTER:STRING=${testfilter}" 500 -D "TEST_REFERENCE=${testfilter}" 501 -P "${HDF_RESOURCES_EXT_DIR}/grepTest.cmake" 502 ) 503 set_tests_properties (H5REPACK_VERIFY_LAYOUT-${testname}_DMP PROPERTIES 504 DEPENDS H5REPACK_VERIFY_LAYOUT-${testname}_DFF 505 ) 506 else () 507 if ("${testfilter}" STREQUAL "CHUNKED") 508 set (nottestfilter "(CONTIGUOUS|COMPACT)") 509 endif () 510 if ("${testfilter}" STREQUAL "CONTIGUOUS") 511 set (nottestfilter "(CHUNK|COMPACT)") 512 endif () 513 if ("${testfilter}" STREQUAL "COMPACT") 514 set (nottestfilter "(CONTIGUOUS|CHUNK)") 515 endif () 516 add_test ( 517 NAME H5REPACK_VERIFY_LAYOUT-${testname}_DMP 518 COMMAND "${CMAKE_COMMAND}" 519 -D "TEST_EMULATOR=${CMAKE_CROSSCOMPILING_EMULATOR}" 520 -D "TEST_PROGRAM=$<TARGET_FILE:h5dump${tgt_ext}>" 521 -D "TEST_ARGS:STRING=-pH;out-${testname}.${testfile}" 522 -D "TEST_FOLDER=${PROJECT_BINARY_DIR}/testfiles" 523 -D "TEST_OUTPUT=${testfile}-${testname}-v.out" 524 -D "TEST_EXPECT=${resultcode}" 525 -D "TEST_FILTER:STRING=${nottestfilter}" 526 -D "TEST_REFERENCE=${testfilter}" 527 -P "${HDF_RESOURCES_EXT_DIR}/grepTest.cmake" 528 ) 529 set_tests_properties (H5REPACK_VERIFY_LAYOUT-${testname}_DMP PROPERTIES 530 DEPENDS H5REPACK_VERIFY_LAYOUT-${testname}_DFF 531 ) 532 endif () 533 endif () 534 endif () 535 endmacro () 536 537 macro (ADD_H5_VERIFY_VDS testname testtype resultcode testfile testdset testfilter) 538 if ("${testtype}" STREQUAL "SKIP") 539 if (NOT HDF5_ENABLE_USING_MEMCHECKER) 540 add_test ( 541 NAME H5REPACK_VERIFY_LAYOUT_VDS-${testname} 542 COMMAND ${CMAKE_COMMAND} -E echo "SKIP -d ${testdset} -pH ${PROJECT_BINARY_DIR}/testfiles/out-${testname}.${resultfile}" 543 ) 544 set_property(TEST H5REPACK_VERIFY_LAYOUT_VDS-${testname} PROPERTY DISABLED) 545 endif () 546 else () 547 if (NOT HDF5_ENABLE_USING_MEMCHECKER) 548 # Remove any output file left over from previous test run 549 add_test ( 550 NAME H5REPACK_VERIFY_LAYOUT_VDS-${testname}-clear-objects 551 COMMAND ${CMAKE_COMMAND} -E remove testfiles/out-${testname}.${testfile} 552 ) 553 set_tests_properties (H5REPACK_VERIFY_LAYOUT_VDS-${testname}-clear-objects PROPERTIES 554 FIXTURES_REQUIRED clear_h5repack 555 ) 556 add_test ( 557 NAME H5REPACK_VERIFY_LAYOUT_VDS-${testname} 558 COMMAND ${CMAKE_CROSSCOMPILING_EMULATOR} $<TARGET_FILE:h5repack${tgt_ext}> ${ARGN} ${PROJECT_BINARY_DIR}/testfiles/${testfile} ${PROJECT_BINARY_DIR}/testfiles/out-${testname}.${testfile} 559 ) 560 set_tests_properties (H5REPACK_VERIFY_LAYOUT_VDS-${testname} PROPERTIES 561 WORKING_DIRECTORY "${PROJECT_BINARY_DIR}/testfiles" 562 DEPENDS H5REPACK_VERIFY_LAYOUT_VDS-${testname}-clear-objects 563 ) 564 add_test ( 565 NAME H5REPACK_VERIFY_LAYOUT_VDS-${testname}_DMP 566 COMMAND "${CMAKE_COMMAND}" 567 -D "TEST_EMULATOR=${CMAKE_CROSSCOMPILING_EMULATOR}" 568 -D "TEST_PROGRAM=$<TARGET_FILE:h5dump${tgt_ext}>" 569 -D "TEST_ARGS:STRING=-d;${testdset};-p;out-${testname}.${testfile}" 570 -D "TEST_FOLDER=${PROJECT_BINARY_DIR}/testfiles" 571 -D "TEST_OUTPUT=${testfile}-${testname}-v.out" 572 -D "TEST_EXPECT=${resultcode}" 573 -D "TEST_REFERENCE=${testfile}-${testname}-v.ddl" 574 -P "${HDF_RESOURCES_EXT_DIR}/runTest.cmake" 575 ) 576 set_tests_properties (H5REPACK_VERIFY_LAYOUT_VDS-${testname}_DMP PROPERTIES 577 WORKING_DIRECTORY "${PROJECT_BINARY_DIR}/testfiles" 578 DEPENDS H5REPACK_VERIFY_LAYOUT_VDS-${testname} 579 ) 580 endif () 581 endif () 582 endmacro () 583 584# VERIFY_SUPERBLOCK 585 macro (ADD_H5_VERIFY_SUPERBLOCK testname testfile lowbound highbound superblock) 586 if (NOT HDF5_ENABLE_USING_MEMCHECKER) 587 add_test ( 588 NAME H5REPACK_VERIFY_SUPERBLOCK-${testname}-clear-objects 589 COMMAND ${CMAKE_COMMAND} -E remove testfiles/out-${testname}.${testfile} 590 ) 591 set_tests_properties (H5REPACK_VERIFY_SUPERBLOCK-${testname}-clear-objects PROPERTIES 592 FIXTURES_REQUIRED clear_h5repack 593 ) 594 add_test ( 595 NAME H5REPACK_VERIFY_SUPERBLOCK-${testname} 596 COMMAND ${CMAKE_CROSSCOMPILING_EMULATOR} $<TARGET_FILE:h5repack${tgt_ext}> -j;${lowbound};-k;${highbound} ${PROJECT_BINARY_DIR}/testfiles/${testfile} ${PROJECT_BINARY_DIR}/testfiles/out-${testname}.${testfile} 597 ) 598 set_tests_properties (H5REPACK_VERIFY_SUPERBLOCK-${testname} PROPERTIES 599 DEPENDS H5REPACK_VERIFY_SUPERBLOCK-${testname}-clear-objects 600 ) 601 add_test ( 602 NAME H5REPACK_VERIFY_SUPERBLOCK-${testname}_DMP 603 COMMAND "${CMAKE_COMMAND}" 604 -D "TEST_EMULATOR=${CMAKE_CROSSCOMPILING_EMULATOR}" 605 -D "TEST_PROGRAM=$<TARGET_FILE:h5dump${tgt_ext}>" 606 -D "TEST_ARGS:STRING=-H;-B;out-${testname}.${testfile}" 607 -D "TEST_FOLDER=${PROJECT_BINARY_DIR}/testfiles" 608 -D "TEST_OUTPUT=${testfile}-${testname}-v.out" 609 -D "TEST_EXPECT=${resultcode}" 610 -D "TEST_FILTER:STRING=SUPERBLOCK_VERSION ${superblock}" 611 -D "TEST_REFERENCE=SUPERBLOCK_VERSION ${superblock}" 612 -P "${HDF_RESOURCES_EXT_DIR}/grepTest.cmake" 613 ) 614 set_tests_properties (H5REPACK_VERIFY_SUPERBLOCK-${testname}_DMP PROPERTIES 615 DEPENDS H5REPACK_VERIFY_SUPERBLOCK-${testname} 616 ) 617 endif () 618 endmacro () 619 620 macro (ADD_H5_VERIFY_INVALIDBOUNDS testname resultcode lowbound highbound) 621 add_test ( 622 NAME ADD_H5_VERIFY_INVALIDBOUNDS-h5repack-${testname}-clear-objects 623 COMMAND ${CMAKE_COMMAND} -E remove testfiles/out-${testname}.${testfile} 624 ) 625 set_tests_properties (ADD_H5_VERIFY_INVALIDBOUNDS-h5repack-${testname}-clear-objects PROPERTIES 626 FIXTURES_REQUIRED clear_h5repack 627 ) 628 add_test ( 629 NAME ADD_H5_VERIFY_INVALIDBOUNDS-h5repack-${testname} 630 COMMAND ${CMAKE_CROSSCOMPILING_EMULATOR} $<TARGET_FILE:h5repack${tgt_ext}> -j;${lowbound};-k;${highbound} ${PROJECT_BINARY_DIR}/testfiles/${testfile} ${PROJECT_BINARY_DIR}/testfiles/out-${testname}.${testfile} 631 ) 632 set_tests_properties (ADD_H5_VERIFY_INVALIDBOUNDS-h5repack-${testname} PROPERTIES 633 DEPENDS ADD_H5_VERIFY_INVALIDBOUNDS-h5repack-${testname}-clear-objects 634 WILL_FAIL "true" 635 ) 636 endmacro () 637 638 macro (ADD_H5_TEST_META testname testfile) 639 # Remove any output file left over from previous test run 640 add_test ( 641 NAME H5REPACK_META-${testname}_N-clear-objects 642 COMMAND ${CMAKE_COMMAND} -E remove 643 testfiles/out-${testname}_N.${testname}.h5 644 testfiles/out-${testname}_M.${testname}.h5 645 ) 646 set_tests_properties (H5REPACK_META-${testname}_N-clear-objects PROPERTIES 647 FIXTURES_REQUIRED clear_h5repack 648 ) 649 add_test ( 650 NAME H5REPACK_META-${testname}_N 651 COMMAND ${CMAKE_CROSSCOMPILING_EMULATOR} $<TARGET_FILE:h5repack${tgt_ext}> ${PROJECT_BINARY_DIR}/testfiles/${testfile} ${PROJECT_BINARY_DIR}/testfiles/out-${testname}_N.${testname}.h5 652 ) 653 set_tests_properties (H5REPACK_META-${testname}_N PROPERTIES 654 DEPENDS H5REPACK_META-${testname}_N-clear-objects 655 ) 656 add_test ( 657 NAME H5REPACK_META-${testname}_M 658 COMMAND ${CMAKE_CROSSCOMPILING_EMULATOR} $<TARGET_FILE:h5repack${tgt_ext}> ${ARGN} ${PROJECT_BINARY_DIR}/testfiles/${testfile} ${PROJECT_BINARY_DIR}/testfiles/out-${testname}_M.${testname}.h5 659 ) 660 set_tests_properties (H5REPACK_META-${testname}_M PROPERTIES 661 DEPENDS H5REPACK_META-${testname}_N 662 ) 663 664 add_test (NAME H5REPACK_META-${testname} COMMAND ${CMAKE_COMMAND} -E compare_files ${PROJECT_BINARY_DIR}/testfiles/out-${testname}_N.${testname}.h5 ${PROJECT_BINARY_DIR}/testfiles/out-${testname}_M.${testname}.h5) 665 set_tests_properties (H5REPACK_META-${testname} PROPERTIES 666 WILL_FAIL "true" 667 DEPENDS H5REPACK_META-${testname}_M 668 ) 669 endmacro () 670 671 macro (ADD_H5_UD_TEST testname resultcode resultfile) 672 if (NOT HDF5_ENABLE_USING_MEMCHECKER) 673 # Remove any output file left over from previous test run 674 add_test ( 675 NAME H5REPACK_UD-${testname}-clear-objects 676 COMMAND ${CMAKE_COMMAND} -E remove testfiles/out-${testname}.${resultfile} 677 ) 678 set_tests_properties (H5REPACK_UD-${testname}-clear-objects PROPERTIES 679 FIXTURES_REQUIRED clear_h5repack 680 ) 681 add_test ( 682 NAME H5REPACK_UD-${testname} 683 COMMAND "${CMAKE_COMMAND}" 684 -D "TEST_EMULATOR=${CMAKE_CROSSCOMPILING_EMULATOR}" 685 -D "TEST_PROGRAM=$<TARGET_FILE:h5repack-shared>" 686 -D "TEST_ARGS:STRING=${ARGN};${resultfile};out-${testname}.${resultfile}" 687 -D "TEST_FOLDER=${PROJECT_BINARY_DIR}/testfiles" 688 -D "TEST_EXPECT=${resultcode}" 689 -D "TEST_FILTER:STRING=O?...ing file[^\n]+\n" 690 -D "TEST_OUTPUT=${testname}.${resultfile}.out" 691 -D "TEST_REFERENCE=${testname}.${resultfile}.tst" 692 -D "TEST_ENV_VAR=HDF5_PLUGIN_PATH" 693 -D "TEST_ENV_VALUE=${CMAKE_BINARY_DIR}/plugins" 694 -D "TEST_LIBRARY_DIRECTORY=${CMAKE_TEST_OUTPUT_DIRECTORY}" 695 -P "${HDF_RESOURCES_EXT_DIR}/runTest.cmake" 696 ) 697 set_tests_properties (H5REPACK_UD-${testname} PROPERTIES 698 DEPENDS H5REPACK_UD-${testname}-clear-objects 699 ) 700 add_test ( 701 NAME H5REPACK_UD-${testname}-h5dump 702 COMMAND "${CMAKE_COMMAND}" 703 -D "TEST_EMULATOR=${CMAKE_CROSSCOMPILING_EMULATOR}" 704 -D "TEST_PROGRAM=$<TARGET_FILE:h5dump-shared>" 705 -D "TEST_ARGS:STRING=-pH;out-${testname}.${resultfile}" 706 -D "TEST_FOLDER=${PROJECT_BINARY_DIR}/testfiles" 707 -D "TEST_OUTPUT=${resultfile}-${testname}.out" 708 -D "TEST_EXPECT=0" 709 -D "TEST_REFERENCE=${resultfile}-${testname}.ddl" 710 -D "TEST_ENV_VAR=HDF5_PLUGIN_PATH" 711 -D "TEST_ENV_VALUE=${CMAKE_BINARY_DIR}/plugins" 712 -D "TEST_LIBRARY_DIRECTORY=${CMAKE_TEST_OUTPUT_DIRECTORY}" 713 -P "${HDF_RESOURCES_EXT_DIR}/runTest.cmake" 714 ) 715 set_tests_properties (H5REPACK_UD-${testname}-h5dump PROPERTIES 716 DEPENDS "H5REPACK_UD-${testname}" 717 ) 718 endif () 719 endmacro () 720 721 macro (ADD_H5_EXTERNAL_TEST testname testtype testfile) 722 # canonical file = h5repack_${testfile}.h5 - preexist 723 # external file = h5repack_${testfile}_ex.h5 - preexist 724 # repacked file = h5repack_${testfile}_rp.h5 - created 725 # external data file = h5repack_${testfile}_ex-0.dat 726 if ("${testtype}" STREQUAL "SKIP") 727 if (NOT HDF5_ENABLE_USING_MEMCHECKER) 728 add_test ( 729 NAME H5REPACK_EXTERNAL-${testname} 730 COMMAND ${CMAKE_COMMAND} -E echo "SKIP ${ARGN} ${PROJECT_BINARY_DIR}/testfiles/${testfile} ${PROJECT_BINARY_DIR}/testfiles/out-${testname}.${testfile}" 731 ) 732 set_property(TEST H5REPACK_EXTERNAL-${testname} PROPERTY DISABLED) 733 endif () 734 else () 735 add_test ( 736 NAME H5REPACK_EXTERNAL-${testname}-clear-objects 737 COMMAND ${CMAKE_COMMAND} -E remove h5repack_${testfile}_rp.h5 738 ) 739 set_tests_properties (H5REPACK_EXTERNAL-${testname}-clear-objects PROPERTIES 740 WORKING_DIRECTORY "${PROJECT_BINARY_DIR}/testfiles" 741 FIXTURES_REQUIRED clear_h5repack 742 ) 743 # make sure external data file 0 is available 744 add_test ( 745 NAME H5REPACK_EXTERNAL-${testname}_CPY 746 COMMAND ${CMAKE_COMMAND} -E copy_if_different 747 "${PROJECT_SOURCE_DIR}/testfiles/h5repack_${testfile}_ex-0.dat" "${PROJECT_BINARY_DIR}/testfiles/h5repack_${testfile}_ex-0.dat" 748 ) 749 set_tests_properties (H5REPACK_EXTERNAL-${testname}_CPY PROPERTIES 750 WORKING_DIRECTORY "${PROJECT_BINARY_DIR}/testfiles" 751 DEPENDS H5REPACK_EXTERNAL-${testname}-clear-objects 752 ) 753 # comparison of known files 754 add_test ( 755 NAME H5REPACK_EXTERNAL-${testname}_DFF1 756 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 757 ) 758 set_tests_properties (H5REPACK_EXTERNAL-${testname}_DFF1 PROPERTIES 759 WORKING_DIRECTORY "${PROJECT_BINARY_DIR}/testfiles" 760 DEPENDS H5REPACK_EXTERNAL-${testname}_CPY 761 ) 762 # repack the external file to the repacked file 763 add_test ( 764 NAME H5REPACK_EXTERNAL-${testname} 765 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 766 ) 767 set_tests_properties (H5REPACK_EXTERNAL-${testname} PROPERTIES 768 WORKING_DIRECTORY "${PROJECT_BINARY_DIR}/testfiles" 769 DEPENDS H5REPACK_EXTERNAL-${testname}_DFF1 770 ) 771 # comparison of repacked file to known files 772 add_test ( 773 NAME H5REPACK_EXTERNAL-${testname}_DFF2 774 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 775 ) 776 set_tests_properties (H5REPACK_EXTERNAL-${testname}_DFF2 PROPERTIES 777 WORKING_DIRECTORY "${PROJECT_BINARY_DIR}/testfiles" 778 DEPENDS H5REPACK_EXTERNAL-${testname} 779 ) 780 add_test ( 781 NAME H5REPACK_EXTERNAL-${testname}_DFF3 782 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 783 ) 784 set_tests_properties (H5REPACK_EXTERNAL-${testname}_DFF3 PROPERTIES 785 WORKING_DIRECTORY "${PROJECT_BINARY_DIR}/testfiles" 786 DEPENDS H5REPACK_EXTERNAL-${testname}_DFF2 787 ) 788 # invalidate external file by removing its first data file 789 add_test ( 790 NAME H5REPACK_EXTERNAL-${testname}_DATA_RMV 791 COMMAND ${CMAKE_COMMAND} -E remove h5repack_${testfile}_ex-0.dat 792 ) 793 set_tests_properties (H5REPACK_EXTERNAL-${testname}_DATA_RMV PROPERTIES 794 WORKING_DIRECTORY "${PROJECT_BINARY_DIR}/testfiles" 795 DEPENDS H5REPACK_EXTERNAL-${testname}_DFF3 796 ) 797 # verify comparison of repacked file to known file 798 add_test ( 799 NAME H5REPACK_EXTERNAL-${testname}_DFF4 800 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 801 ) 802 set_tests_properties (H5REPACK_EXTERNAL-${testname}_DFF4 PROPERTIES 803 WORKING_DIRECTORY "${PROJECT_BINARY_DIR}/testfiles" 804 DEPENDS H5REPACK_EXTERNAL-${testname}_DATA_RMV 805 ) 806 # verify comparison of repacked file to known external file fails 807 add_test ( 808 NAME H5REPACK_EXTERNAL-${testname}_DFF_FAIL 809 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 810 ) 811 set_tests_properties (H5REPACK_EXTERNAL-${testname}_DFF_FAIL PROPERTIES 812 WORKING_DIRECTORY "${PROJECT_BINARY_DIR}/testfiles" 813 DEPENDS H5REPACK_EXTERNAL-${testname}_DFF4 814 WILL_FAIL "true" 815 ) 816 endif () 817 endmacro () 818 819############################################################################## 820############################################################################## 821### T H E T E S T S ### 822############################################################################## 823############################################################################## 824 825 # -------------------------------------------------------------------- 826 # test file names 827 # -------------------------------------------------------------------- 828 set (INFO_FILE testfiles/h5repack.info) 829 830 set (FILE0 h5repack_fill.h5) 831 set (FILE1 h5repack_objs.h5) 832 set (FILE2 h5repack_attr.h5) 833 set (FILE3 h5repack_hlink.h5) 834 set (FILE4 h5repack_layout.h5) 835 set (FILE5 h5repack_early.h5) 836 set (FILE7 h5repack_szip.h5) 837 set (FILE8 h5repack_deflate.h5) 838 set (FILE9 h5repack_shuffle.h5) 839 set (FILE10 h5repack_fletcher.h5) 840 set (FILE11 h5repack_filters.h5) 841 set (FILE12 h5repack_nbit.h5) 842 set (FILE13 h5repack_soffset.h5) 843 set (FILE14 h5repack_layouto.h5 ) # A file with an older version of the layout message (copy of test/tlayouto.h5) 844 set (FILE15 h5repack_named_dtypes.h5) 845 set (FILE16 tfamily%05d.h5) # located in common testfiles folder 846 set (FILE18 h5repack_layout2.h5) 847 set (FILE19 h5repack_layout3.h5) 848 set (FILE_REF h5repack_refs.h5) 849 set (FILE_ATTR_REF h5repack_attr_refs.h5) 850 set (FILEV1 1_vds.h5) 851 set (FILEV2 2_vds.h5) 852 set (FILEV3_1 3_1_vds.h5) 853 set (FILEV3_2 3_2_vds.h5) 854 set (FILEV4 4_vds.h5) 855 set (FILEV5 5_vds.h5) 856 857 if (HDF5_ENABLE_USING_MEMCHECKER) 858 # Remove any output file left over from previous test run 859 set (LIST_TO_CLEAR 860 out-family.tfamily%05d.h5 861 out-HDFFV-7840.h5diff_attr1.h5 862 out-attr.h5repack_attr.h5 863 out-native_attr.h5repack_attr.h5 864 out-HDFFV-5932.h5repack_attr_refs.h5 865 out-deflate_copy.h5repack_deflate.h5 866 out-deflate_remove.h5repack_deflate.h5 867 out-early.h5repack_early.h5 868 out-fill.h5repack_fill.h5 869 out-native_fill.h5repack_fill.h5 870 out-gzip_verbose_filters.h5repack_filters.h5 871 out-fletcher_copy.h5repack_fletcher.h5 872 out-fletcher_remove.h5repack_fletcher.h5 873 out-hlink.h5repack_hlink.h5 874 out-chunk_18x13.h5repack_layout.h5 875 out-chunk_20x10.h5repack_layout.h5 876 out-chunk_compa.h5repack_layout.h5 877 out-chunk_conti.h5repack_layout.h5 878 out-compa.h5repack_layout.h5 879 out-conti.h5repack_layout.h5 880 out-deflate_file.h5repack_layout.h5 881 out-deflate_limit.h5repack_layout.h5 882 out-dset2_chunk_20x10.h5repack_layout.h5 883 out-dset2_compa.h5repack_layout.h5 884 out-dset2_conti.h5repack_layout.h5 885 out-dset_compa_chunk.h5repack_layout.h5 886 out-dset_compa_compa.h5repack_layout.h5 887 out-dset_compa_conti.h5repack_layout.h5 888 out-dset_conti_chunk.h5repack_layout.h5 889 out-dset_conti_compa.h5repack_layout.h5 890 out-dset_conti_conti.h5repack_layout.h5 891 out-fletcher_all.h5repack_layout.h5 892 out-fletcher_individual.h5repack_layout.h5 893 out-global_filters.h5repack_layout.h5 894 out-gzip_all.h5repack_layout.h5 895 out-gzip_individual.h5repack_layout.h5 896 out-layout.h5repack_layout.h5 897 out-layout_long_switches.h5repack_layout.h5 898 out-layout_short_switches.h5repack_layout.h5 899 out-old_style_layout_short_switches.h5repack_layout.h5 900 out-plugin_test.h5repack_layout.h5 901 out-shuffle_all.h5repack_layout.h5 902 out-shuffle_individual.h5repack_layout.h5 903 out-upgrade_layout.h5repack_layouto.h5 904 out-contig_small_compa.h5repack_layout2.h5 905 out-contig_small_fixed_compa.h5repack_layout2.h5 906 out-ckdim_biger.h5repack_layout3.h5 907 out-ckdim_smaller.h5repack_layout3.h5 908 out-chunk2chunk.h5repack_layout3.h5 909 out-chunk2compa.h5repack_layout3.h5 910 out-chunk2conti.h5repack_layout3.h5 911 out-error1.h5repack_layout3.h5 912 out-error2.h5repack_layout3.h5 913 out-error3.h5repack_layout3.h5 914 out-error4.h5repack_layout3.h5 915 out-committed_dt.h5repack_named_dtypes.h5 916 out-nbit_add.h5repack_nbit.h5 917 out-nbit_copy.h5repack_nbit.h5 918 out-nbit_remove.h5repack_nbit.h5 919 out-add_alignment.h5repack_objs.h5 920 out-add_userblock.h5repack_objs.h5 921 out-objs.h5repack_objs.h5 922 out-gt_mallocsize.h5repack_objs.h5 923 out-bug1814.h5repack_refs.h5 924 out-shuffle_copy.h5repack_shuffle.h5 925 out-shuffle_remove.h5repack_shuffle.h5 926 out-scale_add.h5repack_soffset.h5 927 out-scale_copy.h5repack_soffset.h5 928 out-scale_remove.h5repack_soffset.h5 929 out-meta_short_M.meta_short.h5 930 out-meta_short_N.meta_short.h5 931 out-meta_long_M.meta_long.h5 932 out-meta_long_N.meta_long.h5 933 out-vds_compa.4_vds.h5 934 out-vds_conti.4_vds.h5 935 out-vds_chunk2x5x8.3_1_vds.h5 936 out-vds_chunk3x6x9.2_vds.h5 937 out-vds_dset_chunk20x10x5.1_vds.h5 938 ) 939 940 set (LIST_TO_CLEAR ${LIST_TO_CLEAR} ${LIST_OTHER_TEST_FILES}) 941 942 foreach (h5_file ${LIST_HDF5_TEST_FILES}) 943 get_filename_component(fname "${h5_file}" NAME) 944 set (LIST_TO_CLEAR ${LIST_TO_CLEAR} 945 ${h5_file}.h5 946 ) 947 endforeach () 948 949 foreach (h5_file ${LIST_TST_TEST_FILES}) 950 get_filename_component(fname "${h5_file}" NAME) 951 set (LIST_TO_CLEAR ${LIST_TO_CLEAR} 952 ${h5_file}.tst.out 953 ${h5_file}.tst.out.err 954 ) 955 endforeach () 956 957 foreach (h5_file ${LIST_DDL_TEST_FILES}) 958 get_filename_component(fname "${h5_file}" NAME) 959 set (LIST_TO_CLEAR ${LIST_TO_CLEAR} 960 ${h5_file}.ddl.out 961 ${h5_file}.ddl.out.err 962 ) 963 endforeach () 964 add_test ( 965 NAME H5REPACK-clearall-objects 966 COMMAND ${CMAKE_COMMAND} -E remove ${LIST_TO_CLEAR} 967 ) 968 set_tests_properties (H5REPACK-clearall-objects PROPERTIES 969 FIXTURES_SETUP clear_h5repack 970 WORKING_DIRECTORY "${PROJECT_BINARY_DIR}/testfiles" 971 ) 972 endif () 973 974 ADD_HELP_TEST(help 0 -h) 975 976 add_test (NAME H5REPACK-testh5repack_detect_szip COMMAND ${CMAKE_CROSSCOMPILING_EMULATOR} $<TARGET_FILE:testh5repack_detect_szip>) 977 if (HDF5_ENABLE_SZIP_SUPPORT) 978 if (HDF5_ENABLE_SZIP_ENCODING) 979 set (passRegex "yes") 980 set_tests_properties (H5REPACK-testh5repack_detect_szip PROPERTIES PASS_REGULAR_EXPRESSION "yes") 981 else () 982 set (passRegex "no") 983 set_tests_properties (H5REPACK-testh5repack_detect_szip PROPERTIES PASS_REGULAR_EXPRESSION "no") 984 endif () 985 else () 986 set (passRegex "no") 987 set_tests_properties (H5REPACK-testh5repack_detect_szip PROPERTIES PASS_REGULAR_EXPRESSION "no") 988 endif () 989 set_tests_properties (H5REPACK-testh5repack_detect_szip PROPERTIES DEPENDS H5REPACK-clearall-objects) 990 set (last_test "H5REPACK-testh5repack_detect_szip") 991 992# add_test (NAME H5REPACK-h5repacktest COMMAND ${CMAKE_CROSSCOMPILING_EMULATOR} $<TARGET_FILE:h5repacktest>) 993# set_tests_properties (H5REPACK-h5repacktest PROPERTIES DEPENDS H5REPACK-testh5repack_detect_szip) 994# set (last_test "H5REPACK-h5repacktest") 995# 996# The tests 997# We use the files generated by h5repacktst 998# Each run generates "<file>.out.h5" and the tool h5diff is used to 999# compare the input and output files 1000# 1001# the tests are the same as the program h5repacktst, but run from the CLI 1002# 1003 1004# See which filters are usable (and skip tests for filters we 1005# don't have). Do this by searching H5pubconf.h to see which 1006# filters are defined. 1007 1008# detect whether the encoder is present. 1009# set (USE_FILTER_SZIP_ENCODER 0) 1010 if (HDF5_ENABLE_SZIP_ENCODING) 1011 set (USE_FILTER_SZIP_ENCODER ${testh5repack_detect_szip}) 1012 endif () 1013 1014 if (H5_HAVE_FILTER_DEFLATE) 1015 set (USE_FILTER_DEFLATE 1) 1016 endif () 1017 1018 if (H5_HAVE_FILTER_SZIP) 1019 set (USE_FILTER_SZIP 1) 1020 endif () 1021 1022# copy files (these files have no filters) 1023 ADD_H5_TEST (fill "TEST" ${FILE0}) 1024 ADD_H5_TEST (objs "TEST" ${FILE1}) 1025 ADD_H5_TEST (attr "TEST" ${FILE2}) 1026 ADD_H5_TEST (hlink "TEST" ${FILE3}) 1027 ADD_H5_TEST (layout "TEST" ${FILE4}) 1028 ADD_H5_TEST (early "TEST" ${FILE5}) 1029 1030# nested 8bit enum in both deflated and non-deflated datafiles 1031 if (NOT USE_FILTER_DEFLATE) 1032 ADD_H5_TEST (nested_8bit_enum "TEST" h5repack_nested_8bit_enum.h5) 1033 else () 1034 ADD_H5_TEST (nested_8bit_enum "TEST" h5repack_nested_8bit_enum_deflated.h5) 1035 endif () 1036 1037# use $FILE4 to write some filters (this file has no filters) 1038 1039# gzip with individual object 1040 set (arg ${FILE4} -f dset1:GZIP=1 -l dset1:CHUNK=20x10) 1041 set (TESTTYPE "TEST") 1042 if (NOT USE_FILTER_DEFLATE) 1043 set (TESTTYPE "SKIP") 1044 endif () 1045 ADD_H5_TEST (gzip_individual ${TESTTYPE} ${arg}) 1046 1047# gzip for all 1048 set (arg ${FILE4} -f GZIP=1) 1049 set (TESTTYPE "TEST") 1050 if (NOT USE_FILTER_DEFLATE) 1051 set (TESTTYPE "SKIP") 1052 endif () 1053 ADD_H5_TEST (gzip_all ${TESTTYPE} ${arg}) 1054 1055# szip with individual object 1056 set (arg ${FILE4} -f dset2:SZIP=8,EC -l dset2:CHUNK=20x10) 1057 set (TESTTYPE "TEST") 1058 if (NOT USE_FILTER_SZIP_ENCODER) 1059 if (NOT USE_FILTER_SZIP) 1060 set (TESTTYPE "SKIP") 1061 endif () 1062 endif () 1063 ADD_H5_TEST (szip_individual ${TESTTYPE} ${arg}) 1064 1065# szip for all 1066 set (arg ${FILE4} -f SZIP=8,NN) 1067 set (TESTTYPE "TEST") 1068 if (NOT USE_FILTER_SZIP_ENCODER) 1069 if (NOT USE_FILTER_SZIP) 1070 set (TESTTYPE "SKIP") 1071 endif () 1072 endif () 1073 ADD_H5_TEST (szip_all ${TESTTYPE} ${arg}) 1074 1075# shuffle with individual object 1076 set (arg ${FILE4} -f dset2:SHUF -l dset2:CHUNK=20x10) 1077 ADD_H5_TEST (shuffle_individual "TEST" ${arg}) 1078 1079# shuffle for all 1080 set (arg ${FILE4} -f SHUF) 1081 ADD_H5_TEST (shuffle_all "TEST" ${arg}) 1082 1083# fletcher32 with individual object 1084 set (arg ${FILE4} -f dset2:FLET -l dset2:CHUNK=20x10) 1085 ADD_H5_TEST (fletcher_individual "TEST" ${arg}) 1086 1087# fletcher32 for all 1088 set (arg ${FILE4} -f FLET) 1089 ADD_H5_TEST (fletcher_all "TEST" ${arg}) 1090 1091# all filters 1092 set (arg ${FILE4} -f dset2:SHUF -f dset2:FLET -f dset2:SZIP=8,NN -f dset2:GZIP=1 -l dset2:CHUNK=20x10) 1093 set (TESTTYPE "TEST") 1094 if (NOT USE_FILTER_SZIP_ENCODER) 1095 if (NOT USE_FILTER_SZIP OR NOT USE_FILTER_DEFLATE) 1096 set (TESTTYPE "SKIP") 1097 endif () 1098 endif () 1099 ADD_H5_TEST (all_filters ${TESTTYPE} ${arg}) 1100 1101# verbose gzip with individual object 1102 set (arg ${FILE11} -v -f /dset_deflate:GZIP=9) 1103 set (TESTTYPE "TEST") 1104 if (NOT USE_FILTER_DEFLATE) 1105 set (TESTTYPE "SKIP") 1106 endif () 1107 ADD_H5_CMP_TEST (gzip_verbose_filters "O?...ing file[^\n]+\n" ${TESTTYPE} 0 ${arg}) 1108 1109########################################################### 1110# the following tests assume the input files have filters 1111########################################################### 1112 1113# szip copy 1114 set (arg ${FILE7}) 1115 set (TESTTYPE "TEST") 1116 if (NOT USE_FILTER_SZIP_ENCODER) 1117 if (NOT USE_FILTER_SZIP) 1118 set (TESTTYPE "SKIP") 1119 endif () 1120 endif () 1121 ADD_H5_TEST (szip_copy ${TESTTYPE} ${arg}) 1122 1123# szip remove 1124 set (arg ${FILE7} --filter=dset_szip:NONE) 1125 set (TESTTYPE "TEST") 1126 if (NOT USE_FILTER_SZIP_ENCODER) 1127 if (NOT USE_FILTER_SZIP) 1128 set (TESTTYPE "SKIP") 1129 endif () 1130 endif () 1131 ADD_H5_TEST (szip_remove ${TESTTYPE} ${arg}) 1132 1133# deflate copy 1134 set (arg ${FILE8}) 1135 set (TESTTYPE "TEST") 1136 if (NOT USE_FILTER_DEFLATE) 1137 set (TESTTYPE "SKIP") 1138 endif () 1139 ADD_H5_TEST (deflate_copy ${TESTTYPE} ${arg}) 1140 1141# deflate remove 1142 set (arg ${FILE8} -f dset_deflate:NONE) 1143 set (TESTTYPE "TEST") 1144 if (NOT USE_FILTER_DEFLATE) 1145 set (TESTTYPE "SKIP") 1146 endif () 1147 ADD_H5_TEST (deflate_remove ${TESTTYPE} ${arg}) 1148 1149# shuffle copy 1150 set (arg ${FILE9}) 1151 ADD_H5_TEST (shuffle_copy "TEST" ${arg}) 1152 1153# shuffle remove 1154 set (arg ${FILE9} -f dset_shuffle:NONE) 1155 ADD_H5_TEST (shuffle_remove "TEST" ${arg}) 1156 1157# fletcher32 copy 1158 set (arg ${FILE10}) 1159 ADD_H5_TEST (fletcher_copy "TEST" ${arg}) 1160 1161# fletcher32 remove 1162 set (arg ${FILE10} -f dset_fletcher32:NONE) 1163 ADD_H5_TEST (fletcher_remove "TEST" ${arg}) 1164 1165# nbit copy 1166 set (arg ${FILE12}) 1167 ADD_H5_TEST (nbit_copy "TEST" ${arg}) 1168 1169# nbit remove 1170 set (arg ${FILE12} -f dset_nbit:NONE) 1171 ADD_H5_TEST (nbit_remove "TEST" ${arg}) 1172 1173# nbit add 1174 set (arg ${FILE12} -f dset_int31:NBIT) 1175 ADD_H5_TEST (nbit_add "TEST" ${arg}) 1176 1177# scaleoffset copy 1178 set (arg ${FILE13}) 1179 ADD_H5_TEST (scale_copy "TEST" ${arg}) 1180 1181# scaleoffset add 1182 set (arg ${FILE13} -f dset_none:SOFF=31,IN) 1183 ADD_H5_TEST (scale_add "TEST" ${arg}) 1184 1185# scaleoffset remove 1186 set (arg ${FILE13} -f dset_scaleoffset:NONE) 1187 ADD_H5_TEST (scale_remove "TEST" ${arg}) 1188 1189# remove all filters 1190 set (arg ${FILE11} -f NONE) 1191 set (TESTTYPE "TEST") 1192 if (NOT USE_FILTER_SZIP_ENCODER) 1193 if (NOT USE_FILTER_SZIP OR NOT USE_FILTER_DEFLATE) 1194 set (TESTTYPE "SKIP") 1195 endif () 1196 endif () 1197 ADD_H5_TEST (remove_all ${TESTTYPE} ${arg}) 1198 1199#filter conversions 1200 set (arg ${FILE8} -f dset_deflate:SZIP=8,NN) 1201 set (TESTTYPE "TEST") 1202 if (NOT USE_FILTER_SZIP_ENCODER) 1203 if (NOT USE_FILTER_SZIP OR NOT USE_FILTER_DEFLATE) 1204 set (TESTTYPE "SKIP") 1205 endif () 1206 endif () 1207 ADD_H5_TEST (deflate_convert ${TESTTYPE} ${arg}) 1208 1209 set (arg ${FILE7} -f dset_szip:GZIP=1) 1210 set (TESTTYPE "TEST") 1211 if (NOT USE_FILTER_SZIP_ENCODER) 1212 if (NOT USE_FILTER_SZIP OR NOT USE_FILTER_DEFLATE) 1213 set (TESTTYPE "SKIP") 1214 endif () 1215 endif () 1216 ADD_H5_TEST (szip_convert ${TESTTYPE} ${arg}) 1217 1218#limit 1219 set (arg ${FILE4} -f GZIP=1 -m 1024) 1220 set (TESTTYPE "TEST") 1221 if (NOT USE_FILTER_DEFLATE) 1222 set (TESTTYPE "SKIP") 1223 endif () 1224 ADD_H5_DMP_TEST (deflate_limit ${TESTTYPE} 0 ${arg}) 1225 1226#file 1227 set (arg ${FILE4} -e ${INFO_FILE}) 1228 set (TESTTYPE "TEST") 1229 if (NOT USE_FILTER_DEFLATE) 1230 set (TESTTYPE "SKIP") 1231 endif () 1232 ADD_H5_TEST (deflate_file ${TESTTYPE} ${arg}) 1233 1234#crtorder 1235 set (arg tordergr.h5 -L) 1236 set (TESTTYPE "TEST") 1237 ADD_H5_DMP_TEST (crtorder ${TESTTYPE} 0 ${arg}) 1238 1239################################################################################################### 1240# Testing paged aggregation related options: 1241# -G pagesize 1242# -P 1 or 0 1243# -S strategy 1244# -T threshold 1245# 1246# The testfiles used are generated by test/gen_filespace.c and the file names are prepended with "h5repack_": 1247# (1) "fsm_aggr_nopersist.h5" /* H5F_FSPACE_STRATEGY_FSM_AGGR + not persisting free-space */ 1248# (2) "fsm_aggr_persist.h5" /* H5F_FSPACE_STRATEGY_FSM_AGGR + persisting free-space */ 1249# (3) "paged_nopersist.h5" /* H5F_FSPACE_STRATEGY_PAGE + not persisting free-space */ 1250# (4) "paged_persist.h5" /* H5F_FSPACE_STRATEGY_PAGE + persisting free-space */ 1251# (5) "aggr.h5" /* H5F_FSPACE_STRATEGY_AGGR */ 1252# (6) "none.h5" /* H5F_FSPACE_STRATEGY_NONE */ 1253# 1254##################################################################################################### 1255# 1256 set (arg h5repack_fsm_aggr_nopersist.h5 -S PAGE -P 1) 1257 set (TESTTYPE "TEST") 1258 ADD_H5_STAT_TEST (SP_PAGE ${TESTTYPE} 0 SP ${arg}) 1259 1260 set (arg h5repack_fsm_aggr_persist.h5 -S AGGR) 1261 set (TESTTYPE "TEST") 1262 ADD_H5_STAT_TEST (S_AGGR ${TESTTYPE} 0 S ${arg}) 1263 1264 set (arg h5repack_none.h5 -S PAGE -T 10 -G 2048) 1265 set (TESTTYPE "TEST") 1266 ADD_H5_STAT_TEST (STG_PAGE ${TESTTYPE} 0 STG ${arg}) 1267 1268 set (arg h5repack_paged_nopersist.h5 -G 512 -S AGGR) 1269 set (TESTTYPE "TEST") 1270 ADD_H5_STAT_TEST (GS_AGGR ${TESTTYPE} 0 GS ${arg}) 1271 1272 set (arg h5repack_paged_persist.h5 -S NONE -P 1) 1273 set (TESTTYPE "TEST") 1274 ADD_H5_STAT_TEST (SP_NONE ${TESTTYPE} 0 SP ${arg}) 1275 1276 set (arg h5repack_aggr.h5 -S FSM_AGGR -P 1 -T 5) 1277 set (TESTTYPE "TEST") 1278 ADD_H5_STAT_TEST (SPT_FSM_AGGR ${TESTTYPE} 0 SPT ${arg}) 1279 1280 1281######################################################### 1282# layout options (these files have no filters) 1283######################################################### 1284 ADD_H5_VERIFY_TEST (dset2_chunk_20x10 "TEST" 0 ${FILE4} dset2 CHUNKED --layout=dset2:CHUNK=20x10) 1285 ADD_H5_VERIFY_TEST (chunk_20x10 "TEST" 1 ${FILE4} null CHUNKED -l CHUNK=20x10) 1286 ADD_H5_VERIFY_TEST (dset2_conti "TEST" 0 ${FILE4} dset2 CONTIGUOUS -l dset2:CONTI) 1287 ADD_H5_VERIFY_TEST (conti "TEST" 1 ${FILE4} null CONTIGUOUS -l CONTI) 1288 ADD_H5_VERIFY_TEST (dset2_compa "TEST" 0 ${FILE4} dset2 COMPACT -l dset2:COMPA) 1289 ADD_H5_VERIFY_TEST (compa "TEST" 1 ${FILE4} null COMPACT -l COMPA) 1290 ADD_H5_MASK_TEST (dset2_chunk_20x10-errstk "TEST" 0 "dimensionality of chunks doesn't match the dataspace" ${FILE4} --layout=dset2:CHUNK=20x10x5 --enable-error-stack) 1291 1292################################################################ 1293# layout conversions (file has no filters) 1294############################################################### 1295 ADD_H5_VERIFY_TEST (dset_compa_conti "TEST" 0 ${FILE4} dset_compact CONTIGUOUS -l dset_compact:CONTI) 1296 ADD_H5_VERIFY_TEST (dset_compa_chunk "TEST" 0 ${FILE4} dset_compact CHUNKED -l dset_compact:CHUNK=2x5) 1297 ADD_H5_VERIFY_TEST (dset_compa_compa "TEST" 0 ${FILE4} dset_compact COMPACT -l dset_compact:COMPA) 1298 ADD_H5_VERIFY_TEST (dset_conti_compa "TEST" 0 ${FILE4} dset_contiguous COMPACT -l dset_contiguous:COMPA) 1299 ADD_H5_VERIFY_TEST (dset_conti_chunk "TEST" 0 ${FILE4} dset_contiguous CHUNKED -l dset_contiguous:CHUNK=3x6) 1300 ADD_H5_VERIFY_TEST (dset_conti_conti "TEST" 0 ${FILE4} dset_contiguous CONTIGUOUS -l dset_contiguous:CONTI) 1301 ADD_H5_VERIFY_TEST (chunk_compa "TEST" 0 ${FILE4} dset_chunk COMPACT -l dset_chunk:COMPA) 1302 ADD_H5_VERIFY_TEST (chunk_conti "TEST" 0 ${FILE4} dset_chunk CONTIGUOUS -l dset_chunk:CONTI) 1303 ADD_H5_VERIFY_TEST (chunk_18x13 "TEST" 0 ${FILE4} dset_chunk CHUNKED -l dset_chunk:CHUNK=18x13) 1304 1305# test convert small size dataset ( < 1k) to compact layout without -m 1306 ADD_H5_VERIFY_TEST (contig_small_compa "TEST" 0 ${FILE18} contig_small COMPACT -l contig_small:COMPA) 1307 ADD_H5_VERIFY_TEST (contig_small_fixed_compa "TEST" 0 ${FILE18} chunked_small_fixed COMPACT -l chunked_small_fixed:COMPA) 1308 1309#--------------------------------------------------------------------------- 1310# Test file contains chunked datasets (need multiple dsets) with 1311# unlimited max dims. (HDFFV-7933) 1312# Use first dset to test. 1313#--------------------------------------------------------------------------- 1314# chunk to chunk - specify chunk dim bigger than any current dim 1315 ADD_H5_VERIFY_TEST (chunk2chunk "TEST" 0 ${FILE19} chunk_unlimit1 CHUNK -l chunk_unlimit1:CHUNK=100x300) 1316 1317# chunk to contiguous 1318 ADD_H5_VERIFY_TEST (chunk2conti "TEST" 0 ${FILE19} chunk_unlimit1 CONTI -l chunk_unlimit1:CONTI) 1319 1320# chunk to compact - convert big dataset (should be > 64k) for this purpose, 1321# should remain as original layout (chunk) 1322 ADD_H5_VERIFY_TEST (chunk2compa "TEST" 0 ${FILE19} chunk_unlimit1 CHUNK -l chunk_unlimit1:COMPA) 1323 1324#-------------------------------------------------------------------------- 1325# Test -f for some specific cases. Chunked dataset with unlimited max dims. 1326# (HDFFV-8012) 1327#-------------------------------------------------------------------------- 1328# - should not fail 1329# - should not change max dims from unlimit 1330 1331# chunk dim is bigger than dataset dim. ( dset size < 64k ) 1332 ADD_H5_VERIFY_TEST (error1 "TEST" 0 ${FILE19} chunk_unlimit1 H5S_UNLIMITED -f chunk_unlimit1:NONE) 1333 1334# chunk dim is bigger than dataset dim. ( dset size > 64k ) 1335 ADD_H5_VERIFY_TEST (error2 "TEST" 0 ${FILE19} chunk_unlimit2 H5S_UNLIMITED -f chunk_unlimit2:NONE) 1336 1337# chunk dims are smaller than dataset dims. ( dset size < 64k ) 1338 ADD_H5_VERIFY_TEST (error3 "TEST" 0 ${FILE19} chunk_unlimit3 H5S_UNLIMITED -f chunk_unlimit3:NONE) 1339 1340# file input - should not fail 1341 ADD_H5_TEST (error4 "TEST" ${FILE19} -f NONE) 1342 1343#-------------------------------------------------------------------------- 1344# Test base: Convert CHUNK to CONTI for a chunked dataset with small dataset 1345# (dset size < 64K) and with unlimited max dims on a condition as follow. 1346# (HDFFV-8214) 1347#-------------------------------------------------------------------------- 1348# chunk dim is bigger than dataset dim. should succeed. 1349 ADD_H5_VERIFY_TEST (ckdim_biger "TEST" 0 ${FILE19} chunk_unlimit2 CONTI -l chunk_unlimit2:CONTI) 1350# chunk dim is smaller than dataset dim. should succeed. 1351 ADD_H5_VERIFY_TEST (ckdim_smaller "TEST" 0 ${FILE19} chunk_unlimit3 CONTI -l chunk_unlimit3:CONTI) 1352 1353 1354 1355# Native option 1356# Do not use FILE1, as the named dtype will be converted to native, and h5diff will 1357# report a difference. 1358 ADD_H5_TEST (native_fill "TEST" ${FILE0} -n) 1359 ADD_H5_TEST (native_attr "TEST" ${FILE2} -n) 1360 1361# latest file format with long switches. use FILE4=h5repack_layout.h5 (no filters) 1362 set (arg --layout CHUNK=20x10 --filter GZIP=1 --minimum=10 --native --latest --compact=8 --indexed=6 --ssize=8[:dtype]) 1363 set (TESTTYPE "TEST") 1364 if (NOT USE_FILTER_DEFLATE) 1365 set (TESTTYPE "SKIP") 1366 endif () 1367 ADD_H5_VERIFY_TEST (layout_long_switches ${TESTTYPE} 1 ${FILE4} null CHUNKED ${arg}) 1368 1369# latest file format with short switches. use FILE4=h5repack_layout.h5 (no filters) 1370 set (arg -l CHUNK=20x10 -f GZIP=1 -m 10 -n -L -c 8 -d 6 -s 8[:dtype]) 1371 set (TESTTYPE "TEST") 1372 if (NOT USE_FILTER_DEFLATE) 1373 set (TESTTYPE "SKIP") 1374 endif () 1375 ADD_H5_VERIFY_TEST (layout_short_switches ${TESTTYPE} 1 ${FILE4} null CHUNKED ${arg}) 1376 1377# several global filters 1378 set (arg ${FILE4} --filter GZIP=1 --filter SHUF) 1379 set (TESTTYPE "TEST") 1380 if (NOT USE_FILTER_DEFLATE) 1381 set (TESTTYPE "SKIP") 1382 endif () 1383 ADD_H5_TEST (global_filters ${TESTTYPE} ${arg}) 1384 1385# syntax of -i infile -o outfile 1386# latest file format with short switches. use FILE4=h5repack_layout.h5 (no filters) 1387 set (arg ${FILE4} -l CHUNK=20x10 -f GZIP=1 -m 10 -n -L -c 8 -d 6 -s 8[:dtype]) 1388 set (TESTTYPE "LEGACY") 1389 if (NOT USE_FILTER_DEFLATE) 1390 set (TESTTYPE "SKIP") 1391 endif () 1392 ADD_H5_TEST_OLD (old_style_layout_short_switches ${TESTTYPE} ${arg}) 1393 1394# add a userblock to file 1395 set (arg ${FILE1} -u ${PROJECT_BINARY_DIR}/testfiles/ublock.bin -b 2048) 1396 ADD_H5_TEST (add_userblock "TEST" ${arg}) 1397 1398# add alignment 1399 set (arg ${FILE1} -t 1 -a 1) 1400 ADD_H5_TEST (add_alignment "TEST" ${arg}) 1401 1402# Check repacking file with old version of layout message (should get upgraded 1403# to new version and be readable, etc.) 1404 ADD_H5_TEST (upgrade_layout "TEST" ${FILE14}) 1405 1406# test for datum size > H5TOOLS_MALLOCSIZE 1407 if (NOT USE_FILTER_DEFLATE) 1408 set (TESTTYPE "SKIP") 1409 endif () 1410 ADD_H5_TEST (gt_mallocsize ${TESTTYPE} ${FILE1} -f GZIP=1) 1411 1412# Check repacking file with committed datatypes in odd configurations 1413 ADD_H5_TEST (committed_dt "TEST" ${FILE15}) 1414 1415# tests family driver (file is located in common testfiles folder, uses TOOLTEST1 1416 ADD_H5_TEST (family "TEST" ${FILE16}) 1417 1418# test various references (bug 1814 and 1726) 1419 ADD_H5_TEST (bug1814 "TEST" ${FILE_REF}) 1420 1421# test attribute with various references (bug1797 / HDFFV-5932) 1422# the references in attribute of compund or vlen datatype 1423 ADD_H5_TEST (HDFFV-5932 "TEST" ${FILE_ATTR_REF}) 1424 1425# Add test for memory leak in attirbute. This test is verified by CTEST. 1426# 1. leak from vlen string 1427# 2. leak from compound type without reference member 1428# (HDFFV-7840, ) 1429# Note: this test is experimental for sharing test file among tools 1430 ADD_H5_TEST (HDFFV-7840 "TEST" h5diff_attr1.h5) 1431 1432# tests for metadata block size option ('-M') 1433 ADD_H5_TEST_META (meta_short h5repack_layout.h5 -M 8192) 1434 ADD_H5_TEST_META (meta_long h5repack_layout.h5 --metadata_block_size=8192) 1435 1436# VDS tests 1437 1438################################################################ 1439# layout conversions 1440############################################################### 1441 set (TESTTYPE "TEST") 1442 if (NOT USE_FILTER_DEFLATE) 1443 set (TESTTYPE "SKIP") 1444 endif () 1445 ADD_H5_VERIFY_VDS (vds_dset_chunk20x10x5 ${TESTTYPE} 0 ${FILEV1} vds_dset CHUNKED -l vds_dset:CHUNK=20x10x5) 1446 1447 set (TESTTYPE "TEST") 1448 if (NOT USE_FILTER_DEFLATE) 1449 set (TESTTYPE "SKIP") 1450 endif () 1451 ADD_H5_VERIFY_VDS (vds_chunk2x5x8 ${TESTTYPE} 0 ${FILEV3_1} vds_dset CHUNKED -l vds_dset:CHUNK=2x5x8) 1452 1453 set (TESTTYPE "TEST") 1454 if (NOT USE_FILTER_DEFLATE) 1455 set (TESTTYPE "SKIP") 1456 endif () 1457 ADD_H5_VERIFY_VDS (vds_chunk3x6x9 ${TESTTYPE} 0 ${FILEV2} vds_dset CHUNKED -l vds_dset:CHUNK=3x6x9) 1458 1459 set (TESTTYPE "TEST") 1460 if (NOT USE_FILTER_DEFLATE) 1461 set (TESTTYPE "SKIP") 1462 endif () 1463 ADD_H5_VERIFY_VDS (vds_compa ${TESTTYPE} 0 ${FILEV4} vds_dset COMPACT -l vds_dset:COMPA) 1464 1465 set (TESTTYPE "TEST") 1466 if (NOT USE_FILTER_DEFLATE) 1467 set (TESTTYPE "SKIP") 1468 endif () 1469 ADD_H5_VERIFY_VDS (vds_conti ${TESTTYPE} 0 ${FILEV4} vds_dset CONTIGUOUS -l vds_dset:CONTI) 1470 1471############################################################################## 1472### V E R S I O N B O U N D S T E S T S 1473############################################################################## 1474# -j 0 -k 2, superblock will be 0 1475ADD_H5_VERIFY_SUPERBLOCK (SB_IS_0 h5repack_layout.h5 0 2 0) 1476# -j 1 -k 2, superblock will be 2 1477ADD_H5_VERIFY_SUPERBLOCK (SB_IS_2 h5repack_layout.h5 1 2 2) 1478# -j 2 -k 2, superblock will be 3 1479ADD_H5_VERIFY_SUPERBLOCK (SB_IS_3 h5repack_layout.h5 2 2 3) 1480# -j 0 -k 1, file cannot be opened 1481ADD_H5_VERIFY_INVALIDBOUNDS (latest_latest_invalid bounds_latest_latest.h5 0 1) 1482 1483############################################################################## 1484### E X T E R N A L S T O R A G E T E S T S 1485############################################################################## 1486ADD_H5_EXTERNAL_TEST (ext_f32le "TEST" f32le -l CONTI) 1487ADD_H5_EXTERNAL_TEST (ext_int32le_1d "TEST" int32le_1d -l CONTI) 1488ADD_H5_EXTERNAL_TEST (ext_int32le_2d "TEST" int32le_2d -l CONTI) 1489ADD_H5_EXTERNAL_TEST (ext_int32le_3d "TEST" int32le_3d -l CONTI) 1490ADD_H5_EXTERNAL_TEST (ext_uint8be "TEST" uint8be -l CONTI) 1491 1492############################################################################## 1493### P L U G I N T E S T S 1494############################################################################## 1495if (BUILD_SHARED_LIBS) 1496 ADD_H5_UD_TEST (plugin_version_test 0 h5repack_layout.h5 -v -f UD=260,0,4,9,${H5_VERS_MAJOR},${H5_VERS_MINOR},${H5_VERS_RELEASE}) 1497 ADD_H5_UD_TEST (plugin_test 0 h5repack_layout.h5 -v -f UD=257,0,1,9) 1498 ADD_H5_UD_TEST (plugin_none 0 h5repack_layout.UD.h5 -v -f NONE) 1499 # check for no parameters 1500 ADD_H5_UD_TEST (plugin_zero 0 h5repack_layout.h5 -v -f UD=250,0,0) 1501endif () 1502 1503############################################################################## 1504############################################################################## 1505### V F D T E S T S ### 1506############################################################################## 1507############################################################################## 1508 1509if (HDF5_TEST_VFD) 1510 include (CMakeVFDTests.cmake) 1511endif () 1512