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 if (HDF5_TEST_VFD) 20 set (VFD_LIST 21 sec2 22 stdio 23 core 24 split 25 multi 26 family 27 ) 28 29 if (DIRECT_VFD) 30 set (VFD_LIST ${VFD_LIST} direct) 31 endif () 32 33 macro (ADD_VFD_TEST vfdname resultcode) 34 add_test ( 35 NAME H5REPACK-VFD-${vfdname}-h5repacktest 36 COMMAND "${CMAKE_COMMAND}" 37 -D "TEST_PROGRAM=$<TARGET_FILE:h5repacktest>" 38 -D "TEST_ARGS:STRING=" 39 -D "TEST_VFD:STRING=${vfdname}" 40 -D "TEST_EXPECT=${resultcode}" 41 -D "TEST_OUTPUT=h5repacktest" 42 -D "TEST_FOLDER=${PROJECT_BINARY_DIR}" 43 -P "${HDF_RESOURCES_DIR}/vfdTest.cmake" 44 ) 45 if (NOT "${last_test}" STREQUAL "") 46 set_tests_properties (H5REPACK-VFD-${vfdname}-h5repacktest PROPERTIES DEPENDS ${last_test}) 47 endif () 48 set (last_test "H5REPACK-VFD-${vfdname}-h5repacktest") 49 endmacro () 50 endif () 51 52 # -------------------------------------------------------------------- 53 # Copy all the HDF5 files from the source directory into the test directory 54 # -------------------------------------------------------------------- 55 set (LIST_HDF5_TEST_FILES 56 ${HDF5_TOOLS_H5REPACK_SOURCE_DIR}/testfiles/h5repack_attr.h5 57 ${HDF5_TOOLS_H5REPACK_SOURCE_DIR}/testfiles/h5repack_attr_refs.h5 58 ${HDF5_TOOLS_H5REPACK_SOURCE_DIR}/testfiles/h5repack_deflate.h5 59 ${HDF5_TOOLS_H5REPACK_SOURCE_DIR}/testfiles/h5repack_early.h5 60 ${HDF5_TOOLS_H5REPACK_SOURCE_DIR}/testfiles/h5repack_ext.h5 61 ${HDF5_TOOLS_H5REPACK_SOURCE_DIR}/testfiles/h5repack_fill.h5 62 ${HDF5_TOOLS_H5REPACK_SOURCE_DIR}/testfiles/h5repack_filters.h5 63 ${HDF5_TOOLS_H5REPACK_SOURCE_DIR}/testfiles/h5repack_fletcher.h5 64 ${HDF5_TOOLS_H5REPACK_SOURCE_DIR}/testfiles/h5repack_hlink.h5 65 ${HDF5_TOOLS_H5REPACK_SOURCE_DIR}/testfiles/h5repack_layout.h5 66 ${HDF5_TOOLS_H5REPACK_SOURCE_DIR}/testfiles/h5repack_layouto.h5 67 ${HDF5_TOOLS_H5REPACK_SOURCE_DIR}/testfiles/h5repack_layout2.h5 68 ${HDF5_TOOLS_H5REPACK_SOURCE_DIR}/testfiles/h5repack_layout3.h5 69 ${HDF5_TOOLS_H5REPACK_SOURCE_DIR}/testfiles/h5repack_layout.UD.h5 70 ${HDF5_TOOLS_H5REPACK_SOURCE_DIR}/testfiles/h5repack_named_dtypes.h5 71 ${HDF5_TOOLS_H5REPACK_SOURCE_DIR}/testfiles/h5repack_nbit.h5 72 ${HDF5_TOOLS_H5REPACK_SOURCE_DIR}/testfiles/h5repack_objs.h5 73 ${HDF5_TOOLS_H5REPACK_SOURCE_DIR}/testfiles/h5repack_refs.h5 74 ${HDF5_TOOLS_H5REPACK_SOURCE_DIR}/testfiles/h5repack_shuffle.h5 75 ${HDF5_TOOLS_H5REPACK_SOURCE_DIR}/testfiles/h5repack_soffset.h5 76 ${HDF5_TOOLS_H5REPACK_SOURCE_DIR}/testfiles/h5repack_szip.h5 77 # h5diff/testfile 78 ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/h5diff_attr1.h5 79 # tools/testfiles 80 ${HDF5_TOOLS_SRC_DIR}/testfiles/tfamily00000.h5 81 ${HDF5_TOOLS_SRC_DIR}/testfiles/tfamily00001.h5 82 ${HDF5_TOOLS_SRC_DIR}/testfiles/tfamily00002.h5 83 ${HDF5_TOOLS_SRC_DIR}/testfiles/tfamily00003.h5 84 ${HDF5_TOOLS_SRC_DIR}/testfiles/tfamily00004.h5 85 ${HDF5_TOOLS_SRC_DIR}/testfiles/tfamily00005.h5 86 ${HDF5_TOOLS_SRC_DIR}/testfiles/tfamily00006.h5 87 ${HDF5_TOOLS_SRC_DIR}/testfiles/tfamily00007.h5 88 ${HDF5_TOOLS_SRC_DIR}/testfiles/tfamily00008.h5 89 ${HDF5_TOOLS_SRC_DIR}/testfiles/tfamily00009.h5 90 ${HDF5_TOOLS_SRC_DIR}/testfiles/tfamily00010.h5 91 ${HDF5_TOOLS_SRC_DIR}/testfiles/tordergr.h5 92 ) 93 94 set (LIST_OTHER_TEST_FILES 95 h5repack-help.txt 96 h5repack_ext.bin 97 h5repack.info 98 ublock.bin 99 ) 100 101 set (LIST_TST_TEST_FILES 102 ${HDF5_TOOLS_H5REPACK_SOURCE_DIR}/testfiles/h5repack_filters.h5-gzip_verbose_filters 103 ${HDF5_TOOLS_H5REPACK_SOURCE_DIR}/testfiles/h5repack_layout.h5-dset2_chunk_20x10-errstk 104 ${HDF5_TOOLS_H5REPACK_SOURCE_DIR}/testfiles/plugin_test.h5repack_layout.h5 105 ${HDF5_TOOLS_H5REPACK_SOURCE_DIR}/testfiles/plugin_version_test.h5repack_layout.h5 106 ${HDF5_TOOLS_H5REPACK_SOURCE_DIR}/testfiles/plugin_zero.h5repack_layout.h5 107 ${HDF5_TOOLS_H5REPACK_SOURCE_DIR}/testfiles/plugin_none.h5repack_layout.UD.h5 108 ) 109 110 set (LIST_DDL_TEST_FILES 111 ${HDF5_TOOLS_H5REPACK_SOURCE_DIR}/testfiles/crtorder.tordergr.h5 112 ${HDF5_TOOLS_H5REPACK_SOURCE_DIR}/testfiles/deflate_limit.h5repack_layout.h5 113 ${HDF5_TOOLS_H5REPACK_SOURCE_DIR}/testfiles/h5repack_layout.h5 114 ${HDF5_TOOLS_H5REPACK_SOURCE_DIR}/testfiles/h5repack_layout.h5-plugin_test 115 ${HDF5_TOOLS_H5REPACK_SOURCE_DIR}/testfiles/h5repack_layout.h5-plugin_version_test 116 ${HDF5_TOOLS_H5REPACK_SOURCE_DIR}/testfiles/h5repack_layout.h5-plugin_zero 117 ${HDF5_TOOLS_H5REPACK_SOURCE_DIR}/testfiles/h5repack_layout.UD.h5-plugin_none 118 ) 119 120 foreach (h5_file ${LIST_HDF5_TEST_FILES}) 121 get_filename_component(fname "${h5_file}" NAME) 122 HDFTEST_COPY_FILE("${h5_file}" "${PROJECT_BINARY_DIR}/testfiles/${fname}" "h5repack_files") 123 endforeach () 124 125 foreach (h5_file ${LIST_OTHER_TEST_FILES}) 126 HDFTEST_COPY_FILE("${HDF5_TOOLS_H5REPACK_SOURCE_DIR}/testfiles/${h5_file}" "${PROJECT_BINARY_DIR}/testfiles/${h5_file}" "h5repack_files") 127 endforeach () 128 129 foreach (h5_file ${LIST_TST_TEST_FILES}) 130 get_filename_component(fname "${h5_file}" NAME) 131 HDFTEST_COPY_FILE("${h5_file}.tst" "${PROJECT_BINARY_DIR}/testfiles/${fname}.tst" "h5repack_files") 132 endforeach () 133 134 foreach (h5_file ${LIST_DDL_TEST_FILES}) 135 get_filename_component(fname "${h5_file}" NAME) 136 HDFTEST_COPY_FILE("${h5_file}.ddl" "${PROJECT_BINARY_DIR}/testfiles/${fname}.ddl" "h5repack_files") 137 endforeach () 138 add_custom_target(h5repack_files ALL COMMENT "Copying files needed by h5repack tests" DEPENDS ${h5repack_files_list}) 139 140############################################################################## 141############################################################################## 142### T H E T E S T S M A C R O S ### 143############################################################################## 144############################################################################## 145 146 macro (ADD_HELP_TEST testname resultcode) 147 # If using memchecker add tests without using scripts 148 if (HDF5_ENABLE_USING_MEMCHECKER) 149 add_test (NAME H5REPACK-h5repack-${testname} COMMAND $<TARGET_FILE:h5repack> ${ARGN}) 150 set_tests_properties (H5REPACK-h5repack-${testname} PROPERTIES WORKING_DIRECTORY "${PROJECT_BINARY_DIR}/testfiles") 151 if (NOT "${last_test}" STREQUAL "") 152 set_tests_properties (H5REPACK-h5repack-${testname} PROPERTIES DEPENDS ${last_test}) 153 endif () 154 set (last_test "H5REPACK-h5repack-${testname}") 155 else () 156 add_test ( 157 NAME H5REPACK-h5repack-${testname}-clear-objects 158 COMMAND ${CMAKE_COMMAND} 159 -E remove 160 testfiles/h5repack-${testname}.out 161 testfiles/h5repack-${testname}.out.err 162 ) 163 if (NOT "${last_test}" STREQUAL "") 164 set_tests_properties (H5REPACK-h5repack-${testname}-clear-objects PROPERTIES DEPENDS ${last_test}) 165 endif () 166 add_test ( 167 NAME H5REPACK-h5repack-${testname} 168 COMMAND "${CMAKE_COMMAND}" 169 -D "TEST_PROGRAM=$<TARGET_FILE:h5repack>" 170 -D "TEST_ARGS:STRING=${ARGN}" 171 -D "TEST_FOLDER=${PROJECT_BINARY_DIR}/testfiles" 172 -D "TEST_OUTPUT=h5repack-${testname}.out" 173 -D "TEST_EXPECT=${resultcode}" 174 -D "TEST_REFERENCE=h5repack-${testname}.txt" 175 -P "${HDF_RESOURCES_EXT_DIR}/runTest.cmake" 176 ) 177 set_tests_properties (H5REPACK-h5repack-${testname} PROPERTIES DEPENDS H5REPACK-h5repack-${testname}-clear-objects) 178 endif () 179 endmacro () 180 181 macro (ADD_H5_TEST_OLD testname testtype testfile) 182 if ("${testtype}" STREQUAL "SKIP") 183 if (NOT HDF5_ENABLE_USING_MEMCHECKER) 184 add_test ( 185 NAME H5REPACK_OLD-${testname}-SKIPPED 186 COMMAND ${CMAKE_COMMAND} -E echo "SKIP ${ARGN} -i ${PROJECT_BINARY_DIR}/testfiles/${testfile} -o ${PROJECT_BINARY_DIR}/testfiles/out-${testname}.${testfile}" 187 ) 188 endif () 189 else () 190 add_test ( 191 NAME H5REPACK_OLD-${testname}-clear-objects 192 COMMAND ${CMAKE_COMMAND} 193 -E remove 194 testfiles/out-${testname}.${testfile} 195 ) 196 if (NOT "${last_test}" STREQUAL "") 197 set_tests_properties (H5REPACK_OLD-${testname}-clear-objects PROPERTIES DEPENDS ${last_test}) 198 endif () 199 add_test ( 200 NAME H5REPACK_OLD-${testname} 201 COMMAND $<TARGET_FILE:h5repack> ${ARGN} -i ${PROJECT_BINARY_DIR}/testfiles/${testfile} -o ${PROJECT_BINARY_DIR}/testfiles/out-${testname}.${testfile} 202 ) 203 set_tests_properties (H5REPACK_OLD-${testname} PROPERTIES DEPENDS H5REPACK_OLD-${testname}-clear-objects) 204 add_test ( 205 NAME H5REPACK_OLD-${testname}_DFF 206 COMMAND $<TARGET_FILE:h5diff> ${PROJECT_BINARY_DIR}/testfiles/${testfile} ${PROJECT_BINARY_DIR}/testfiles/out-${testname}.${testfile} 207 ) 208 set_tests_properties (H5REPACK_OLD-${testname}_DFF PROPERTIES DEPENDS H5REPACK_OLD-${testname}) 209 endif () 210 endmacro () 211 212 macro (ADD_H5_TEST testname testtype testfile) 213 if ("${testtype}" STREQUAL "SKIP") 214 if (NOT HDF5_ENABLE_USING_MEMCHECKER) 215 add_test ( 216 NAME H5REPACK-${testname}-SKIPPED 217 COMMAND ${CMAKE_COMMAND} -E echo "SKIP ${ARGN} ${PROJECT_BINARY_DIR}/testfiles/${testfile} ${PROJECT_BINARY_DIR}/testfiles/out-${testname}.${testfile}" 218 ) 219 endif () 220 else () 221 add_test ( 222 NAME H5REPACK-${testname}-clear-objects 223 COMMAND ${CMAKE_COMMAND} 224 -E remove 225 testfiles/out-${testname}.${testfile} 226 ) 227 if (NOT "${last_test}" STREQUAL "") 228 set_tests_properties (H5REPACK-${testname}-clear-objects PROPERTIES DEPENDS ${last_test}) 229 endif () 230 add_test ( 231 NAME H5REPACK-${testname} 232 COMMAND $<TARGET_FILE:h5repack> --enable-error-stack ${ARGN} ${PROJECT_BINARY_DIR}/testfiles/${testfile} ${PROJECT_BINARY_DIR}/testfiles/out-${testname}.${testfile} 233 ) 234 set_tests_properties (H5REPACK-${testname} PROPERTIES DEPENDS H5REPACK-${testname}-clear-objects) 235 add_test ( 236 NAME H5REPACK-${testname}_DFF 237 COMMAND $<TARGET_FILE:h5diff> --enable-error-stack ${PROJECT_BINARY_DIR}/testfiles/${testfile} ${PROJECT_BINARY_DIR}/testfiles/out-${testname}.${testfile} 238 ) 239 set_tests_properties (H5REPACK-${testname}_DFF PROPERTIES DEPENDS H5REPACK-${testname}) 240 endif () 241 endmacro () 242 243 macro (ADD_H5_CMP_TEST testname testfilter testtype resultcode resultfile) 244 if ("${testtype}" STREQUAL "SKIP") 245 if (NOT HDF5_ENABLE_USING_MEMCHECKER) 246 add_test ( 247 NAME H5REPACK_CMP-${testname}-SKIPPED 248 COMMAND ${CMAKE_COMMAND} -E echo "SKIP ${ARGN} ${PROJECT_BINARY_DIR}/testfiles/${resultfile} ${PROJECT_BINARY_DIR}/testfiles/out-${testname}.${resultfile}" 249 ) 250 endif () 251 else () 252 # If using memchecker add tests without using scripts 253 if (HDF5_ENABLE_USING_MEMCHECKER) 254 add_test ( 255 NAME H5REPACK_CMP-${testname} 256 COMMAND $<TARGET_FILE:h5repack> ${ARGN} ${PROJECT_BINARY_DIR}/testfiles/${resultfile} ${PROJECT_BINARY_DIR}/testfiles/out-${testname}.${resultfile} 257 ) 258 if (NOT "${last_test}" STREQUAL "") 259 set_tests_properties (H5REPACK_CMP-${testname} PROPERTIES DEPENDS ${last_test}) 260 endif () 261 else () 262 add_test ( 263 NAME H5REPACK_CMP-${testname}-clear-objects 264 COMMAND ${CMAKE_COMMAND} 265 -E remove 266 testfiles/out-${testname}.${resultfile} 267 testfiles/${resultfile}-${testname}.out 268 testfiles/${resultfile}-${testname}.out.err 269 ) 270 if (NOT "${last_test}" STREQUAL "") 271 set_tests_properties (H5REPACK_CMP-${testname}-clear-objects PROPERTIES DEPENDS ${last_test}) 272 endif () 273 add_test ( 274 NAME H5REPACK_CMP-${testname} 275 COMMAND "${CMAKE_COMMAND}" 276 -D "TEST_PROGRAM=$<TARGET_FILE:h5repack>" 277 -D "TEST_ARGS:STRING=${ARGN};${resultfile};out-${testname}.${resultfile}" 278 -D "TEST_FOLDER=${PROJECT_BINARY_DIR}/testfiles" 279 -D "TEST_OUTPUT=${resultfile}-${testname}.out" 280 -D "TEST_EXPECT=${resultcode}" 281 -D "TEST_FILTER:STRING=${testfilter}" 282 -D "TEST_REFERENCE=${resultfile}-${testname}.tst" 283 -P "${HDF_RESOURCES_EXT_DIR}/runTest.cmake" 284 ) 285 set_tests_properties (H5REPACK_CMP-${testname} PROPERTIES DEPENDS H5REPACK_CMP-${testname}-clear-objects) 286 endif () 287 endif () 288 endmacro () 289 290 macro (ADD_H5_MASK_TEST testname testtype resultcode resultfile) 291 if ("${testtype}" STREQUAL "SKIP") 292 if (NOT HDF5_ENABLE_USING_MEMCHECKER) 293 add_test ( 294 NAME H5REPACK_MASK-${testname}-SKIPPED 295 COMMAND ${CMAKE_COMMAND} -E echo "SKIP ${ARGN} ${PROJECT_BINARY_DIR}/testfiles/${resultfile} ${PROJECT_BINARY_DIR}/testfiles/out-${testname}.${resultfile}" 296 ) 297 endif () 298 else () 299 # If using memchecker add tests without using scripts 300 if (HDF5_ENABLE_USING_MEMCHECKER) 301 add_test ( 302 NAME H5REPACK_MASK-${testname} 303 COMMAND $<TARGET_FILE:h5repack> ${ARGN} ${PROJECT_BINARY_DIR}/testfiles/${resultfile} ${PROJECT_BINARY_DIR}/testfiles/out-${testname}.${resultfile} 304 ) 305 if (NOT "${last_test}" STREQUAL "") 306 set_tests_properties (H5REPACK_MASK-${testname} PROPERTIES DEPENDS ${last_test}) 307 endif () 308 else (HDF5_ENABLE_USING_MEMCHECKER) 309 add_test ( 310 NAME H5REPACK_MASK-${testname}-clear-objects 311 COMMAND ${CMAKE_COMMAND} 312 -E remove 313 testfiles/out-${testname}.${resultfile} 314 testfiles/${resultfile}-${testname}.out 315 testfiles/${resultfile}-${testname}.out.err 316 ) 317 if (NOT "${last_test}" STREQUAL "") 318 set_tests_properties (H5REPACK_MASK-${testname}-clear-objects PROPERTIES DEPENDS ${last_test}) 319 endif () 320 add_test ( 321 NAME H5REPACK_MASK-${testname} 322 COMMAND "${CMAKE_COMMAND}" 323 -D "TEST_PROGRAM=$<TARGET_FILE:h5repack>" 324 -D "TEST_ARGS:STRING=${ARGN};${resultfile};out-${testname}.${resultfile}" 325 -D "TEST_FOLDER=${PROJECT_BINARY_DIR}/testfiles" 326 -D "TEST_OUTPUT=${resultfile}-${testname}.out" 327 -D "TEST_EXPECT=${resultcode}" 328 -D "TEST_MASK_ERROR=true" 329 -D "TEST_REFERENCE=${resultfile}-${testname}.tst" 330 -P "${HDF_RESOURCES_EXT_DIR}/runTest.cmake" 331 ) 332 set_tests_properties (H5REPACK_MASK-${testname} PROPERTIES DEPENDS H5REPACK_MASK-${testname}-clear-objects) 333 endif () 334 endif () 335 endmacro () 336 337 macro (ADD_H5_DMP_TEST testname testtype resultcode resultfile) 338 if ("${testtype}" STREQUAL "SKIP") 339 if (NOT HDF5_ENABLE_USING_MEMCHECKER) 340 add_test ( 341 NAME H5REPACK_DMP-${testname}-SKIPPED 342 COMMAND ${CMAKE_COMMAND} -E echo "SKIP ${ARGN} ${PROJECT_BINARY_DIR}/testfiles/${resultfile} ${PROJECT_BINARY_DIR}/testfiles/out-${testname}.${resultfile}" 343 ) 344 endif () 345 else () 346 add_test ( 347 NAME H5REPACK_DMP-${testname}-clear-objects 348 COMMAND ${CMAKE_COMMAND} 349 -E remove 350 testfiles/out-${testname}.${resultfile} 351 testfiles/${resultfile}-${testname}.out 352 testfiles/${resultfile}-${testname}.out.err 353 ) 354 if (NOT "${last_test}" STREQUAL "") 355 set_tests_properties (H5REPACK_DMP-${testname}-clear-objects PROPERTIES DEPENDS ${last_test}) 356 endif () 357 add_test ( 358 NAME H5REPACK_DMP-${testname} 359 COMMAND $<TARGET_FILE:h5repack> ${ARGN} ${PROJECT_BINARY_DIR}/testfiles/${resultfile} ${PROJECT_BINARY_DIR}/testfiles/out-${testname}.${resultfile} 360 ) 361 set_tests_properties (H5REPACK_DMP-${testname} PROPERTIES DEPENDS H5REPACK_DMP-${testname}-clear-objects) 362 if (NOT HDF5_ENABLE_USING_MEMCHECKER) 363 add_test ( 364 NAME H5REPACK_DMP-h5dump-${testname} 365 COMMAND "${CMAKE_COMMAND}" 366 -D "TEST_PROGRAM=$<TARGET_FILE:h5dump>" 367 -D "TEST_ARGS:STRING=-q;creation_order;-pH;out-${testname}.${resultfile}" 368 -D "TEST_FOLDER=${PROJECT_BINARY_DIR}/testfiles" 369 -D "TEST_OUTPUT=${resultfile}-${testname}.out" 370 -D "TEST_EXPECT=${resultcode}" 371 -D "TEST_REFERENCE=${testname}.${resultfile}.ddl" 372 -P "${HDF_RESOURCES_EXT_DIR}/runTest.cmake" 373 ) 374 set_tests_properties (H5REPACK_DMP-h5dump-${testname} PROPERTIES DEPENDS "H5REPACK_DMP-${testname}") 375 endif () 376 endif () 377 endmacro () 378 379 macro (ADD_H5_STAT_TEST testname testtype resultcode statarg resultfile) 380 if ("${testtype}" STREQUAL "SKIP") 381 if (NOT HDF5_ENABLE_USING_MEMCHECKER) 382 add_test ( 383 NAME H5REPACK_STAT-${testname}-SKIPPED 384 COMMAND ${CMAKE_COMMAND} -E echo "SKIP ${ARGN} ${PROJECT_BINARY_DIR}/testfiles/${resultfile} ${PROJECT_BINARY_DIR}/testfiles/out-${statarg}.${resultfile}" 385 ) 386 endif () 387 else () 388 add_test ( 389 NAME H5REPACK_STAT-${testname}-clear-objects 390 COMMAND ${CMAKE_COMMAND} 391 -E remove 392 testfiles/out-${statarg}.${resultfile} 393 testfiles/${resultfile}-${testname}.out 394 testfiles/${resultfile}-${testname}.out.err 395 ) 396 if (NOT "${last_test}" STREQUAL "") 397 set_tests_properties (H5REPACK_STAT-${testname}-clear-objects PROPERTIES DEPENDS ${last_test}) 398 endif () 399 add_test ( 400 NAME H5REPACK_STAT-${testname} 401 COMMAND $<TARGET_FILE:h5repack> ${ARGN} ${PROJECT_BINARY_DIR}/testfiles/${resultfile} ${PROJECT_BINARY_DIR}/testfiles/out-${statarg}.${resultfile} 402 ) 403 set_tests_properties (H5REPACK_STAT-${testname} PROPERTIES DEPENDS H5REPACK_STAT-${testname}-clear-objects) 404 if (NOT HDF5_ENABLE_USING_MEMCHECKER) 405 add_test ( 406 NAME H5REPACK_STAT-h5stat-${testname} 407 COMMAND "${CMAKE_COMMAND}" 408 -D "TEST_PROGRAM=$<TARGET_FILE:h5stat>" 409 -D "TEST_ARGS:STRING=-S;-s;out-${statarg}.${resultfile}" 410 -D "TEST_FOLDER=${PROJECT_BINARY_DIR}/testfiles" 411 -D "TEST_OUTPUT=${resultfile}-${testname}.out" 412 -D "TEST_EXPECT=${resultcode}" 413 -D "TEST_REFERENCE=${statarg}.${resultfile}.ddl" 414 -P "${HDF_RESOURCES_EXT_DIR}/runTest.cmake" 415 ) 416 set_tests_properties (H5REPACK_STAT-h5stat-${testname} PROPERTIES DEPENDS "H5REPACK_STAT-${testname}") 417 endif () 418 endif () 419 endmacro () 420 421 macro (ADD_H5_VERIFY_TEST testname testtype resultcode testfile testdset testfilter) 422 if ("${testtype}" STREQUAL "SKIP") 423 if (NOT HDF5_ENABLE_USING_MEMCHECKER) 424 add_test ( 425 NAME H5REPACK_VERIFY_LAYOUT-${testname}-SKIPPED 426 COMMAND ${CMAKE_COMMAND} -E echo "SKIP -d ${testdset} -pH ${PROJECT_BINARY_DIR}/testfiles/out-${testname}.${resultfile}" 427 ) 428 endif () 429 else () 430 if (NOT HDF5_ENABLE_USING_MEMCHECKER) 431 add_test ( 432 NAME H5REPACK_VERIFY_LAYOUT-${testname}-clear-objects 433 COMMAND ${CMAKE_COMMAND} 434 -E remove 435 testfiles/out-${testname}.${testfile} 436 testfiles/${testfile}-${testname}-v.out 437 testfiles/${testfile}-${testname}-v.out.err 438 ) 439 if (NOT "${last_test}" STREQUAL "") 440 set_tests_properties (H5REPACK_VERIFY_LAYOUT-${testname}-clear-objects PROPERTIES DEPENDS ${last_test}) 441 endif () 442 add_test ( 443 NAME H5REPACK_VERIFY_LAYOUT-${testname} 444 COMMAND $<TARGET_FILE:h5repack> ${ARGN} ${PROJECT_BINARY_DIR}/testfiles/${testfile} ${PROJECT_BINARY_DIR}/testfiles/out-${testname}.${testfile} 445 ) 446 set_tests_properties (H5REPACK_VERIFY_LAYOUT-${testname} PROPERTIES DEPENDS H5REPACK_VERIFY_LAYOUT-${testname}-clear-objects) 447 add_test ( 448 NAME H5REPACK_VERIFY_LAYOUT-${testname}_DFF 449 COMMAND $<TARGET_FILE:h5diff> ${PROJECT_BINARY_DIR}/testfiles/${testfile} ${PROJECT_BINARY_DIR}/testfiles/out-${testname}.${testfile} 450 ) 451 set_tests_properties (H5REPACK_VERIFY_LAYOUT-${testname}_DFF PROPERTIES DEPENDS H5REPACK_VERIFY_LAYOUT-${testname}) 452 if ("${resultcode}" STREQUAL "0") 453 add_test ( 454 NAME H5REPACK_VERIFY_LAYOUT-${testname}_DMP 455 COMMAND "${CMAKE_COMMAND}" 456 -D "TEST_PROGRAM=$<TARGET_FILE:h5dump>" 457 -D "TEST_ARGS:STRING=-d;${testdset};-pH;out-${testname}.${testfile}" 458 -D "TEST_FOLDER=${PROJECT_BINARY_DIR}/testfiles" 459 -D "TEST_OUTPUT=${testfile}-${testname}-v.out" 460 -D "TEST_EXPECT=${resultcode}" 461 -D "TEST_FILTER:STRING=${testfilter}" 462 -D "TEST_REFERENCE=${testfilter}" 463 -P "${HDF_RESOURCES_EXT_DIR}/grepTest.cmake" 464 ) 465 set_tests_properties (H5REPACK_VERIFY_LAYOUT-${testname}_DMP PROPERTIES DEPENDS H5REPACK_VERIFY_LAYOUT-${testname}_DFF) 466 else () 467 if ("${testfilter}" STREQUAL "CHUNKED") 468 set (nottestfilter "(CONTIGUOUS|COMPACT)") 469 endif () 470 if ("${testfilter}" STREQUAL "CONTIGUOUS") 471 set (nottestfilter "(CHUNK|COMPACT)") 472 endif () 473 if ("${testfilter}" STREQUAL "COMPACT") 474 set (nottestfilter "(CONTIGUOUS|CHUNK)") 475 endif () 476 add_test ( 477 NAME H5REPACK_VERIFY_LAYOUT-${testname}_DMP 478 COMMAND "${CMAKE_COMMAND}" 479 -D "TEST_PROGRAM=$<TARGET_FILE:h5dump>" 480 -D "TEST_ARGS:STRING=-pH;out-${testname}.${testfile}" 481 -D "TEST_FOLDER=${PROJECT_BINARY_DIR}/testfiles" 482 -D "TEST_OUTPUT=${testfile}-${testname}-v.out" 483 -D "TEST_EXPECT=${resultcode}" 484 -D "TEST_FILTER:STRING=${nottestfilter}" 485 -D "TEST_REFERENCE=${testfilter}" 486 -P "${HDF_RESOURCES_EXT_DIR}/grepTest.cmake" 487 ) 488 set_tests_properties (H5REPACK_VERIFY_LAYOUT-${testname}_DMP PROPERTIES DEPENDS H5REPACK_VERIFY_LAYOUT-${testname}_DFF) 489 endif () 490 endif () 491 endif () 492 endmacro () 493 494 macro (ADD_H5_TEST_META testname testfile) 495 # Remove any output file left over from previous test run 496 add_test ( 497 NAME H5REPACK_META-${testname}_N-clear-objects 498 COMMAND ${CMAKE_COMMAND} 499 -E remove 500 testfiles/out-${testname}_N.${testname}.h5 501 testfiles/out-${testname}_M.${testname}.h5 502 ) 503 if (NOT "${last_test}" STREQUAL "") 504 set_tests_properties (H5REPACK_META-${testname}_N-clear-objects PROPERTIES DEPENDS ${last_test}) 505 endif () 506 add_test ( 507 NAME H5REPACK_META-${testname}_N 508 COMMAND $<TARGET_FILE:h5repack> ${PROJECT_BINARY_DIR}/testfiles/${testfile} ${PROJECT_BINARY_DIR}/testfiles/out-${testname}_N.${testname}.h5 509 ) 510 set_tests_properties (H5REPACK_META-${testname}_N PROPERTIES DEPENDS H5REPACK_META-${testname}_N-clear-objects) 511 add_test ( 512 NAME H5REPACK_META-${testname}_M 513 COMMAND $<TARGET_FILE:h5repack> ${ARGN} ${PROJECT_BINARY_DIR}/testfiles/${testfile} ${PROJECT_BINARY_DIR}/testfiles/out-${testname}_M.${testname}.h5 514 ) 515 set_tests_properties (H5REPACK_META-${testname}_M PROPERTIES DEPENDS H5REPACK_META-${testname}_N) 516 517 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) 518 set_tests_properties (H5REPACK_META-${testname} PROPERTIES WILL_FAIL "true") 519 set_tests_properties (H5REPACK_META-${testname} PROPERTIES DEPENDS H5REPACK_META-${testname}_M) 520 endmacro () 521 522 macro (ADD_H5_UD_TEST testname resultcode resultfile) 523 if (NOT HDF5_ENABLE_USING_MEMCHECKER) 524 # Remove any output file left over from previous test run 525 add_test ( 526 NAME H5REPACK_UD-${testname}-clear-objects 527 COMMAND ${CMAKE_COMMAND} 528 -E remove 529 testfiles/out-${testname}.${resultfile} 530 testfiles/${testname}.${resultfile}.out 531 testfiles/${testname}.${resultfile}.out.err 532 testfiles/${resultfile}-${testname}.out 533 testfiles/${resultfile}-${testname}.out.err 534 ) 535 if (NOT "${last_test}" STREQUAL "") 536 set_tests_properties (H5REPACK_UD-${testname}-clear-objects PROPERTIES DEPENDS ${last_test}) 537 endif () 538 add_test ( 539 NAME H5REPACK_UD-${testname} 540 COMMAND "${CMAKE_COMMAND}" 541 -D "TEST_PROGRAM=$<TARGET_FILE:h5repack>" 542 -D "TEST_ARGS:STRING=${ARGN};${resultfile};out-${testname}.${resultfile}" 543 -D "TEST_FOLDER=${PROJECT_BINARY_DIR}/testfiles" 544 -D "TEST_EXPECT=${resultcode}" 545 -D "TEST_FILTER:STRING=O?...ing file[^\n]+\n" 546 -D "TEST_OUTPUT=${testname}.${resultfile}.out" 547 -D "TEST_REFERENCE=${testname}.${resultfile}.tst" 548 -D "TEST_ENV_VAR=HDF5_PLUGIN_PATH" 549 -D "TEST_ENV_VALUE=${CMAKE_BINARY_DIR}/plugins" 550 -P "${HDF_RESOURCES_EXT_DIR}/runTest.cmake" 551 ) 552 set_tests_properties (H5REPACK_UD-${testname} PROPERTIES DEPENDS H5REPACK_UD-${testname}-clear-objects) 553 add_test ( 554 NAME H5REPACK_UD-${testname}-h5dump 555 COMMAND "${CMAKE_COMMAND}" 556 -D "TEST_PROGRAM=$<TARGET_FILE:h5dump>" 557 -D "TEST_ARGS:STRING=-pH;out-${testname}.${resultfile}" 558 -D "TEST_FOLDER=${PROJECT_BINARY_DIR}/testfiles" 559 -D "TEST_OUTPUT=${resultfile}-${testname}.out" 560 -D "TEST_EXPECT=0" 561 -D "TEST_REFERENCE=${resultfile}-${testname}.ddl" 562 -D "TEST_ENV_VAR=HDF5_PLUGIN_PATH" 563 -D "TEST_ENV_VALUE=${CMAKE_BINARY_DIR}/plugins" 564 -P "${HDF_RESOURCES_EXT_DIR}/runTest.cmake" 565 ) 566 set_tests_properties (H5REPACK_UD-${testname}-h5dump PROPERTIES DEPENDS "H5REPACK_UD-${testname}") 567 endif () 568 endmacro () 569 570############################################################################## 571############################################################################## 572### T H E T E S T S ### 573############################################################################## 574############################################################################## 575 576 # -------------------------------------------------------------------- 577 # test file names 578 # -------------------------------------------------------------------- 579 set (INFO_FILE testfiles/h5repack.info) 580 581 set (FILE0 h5repack_fill.h5) 582 set (FILE1 h5repack_objs.h5) 583 set (FILE2 h5repack_attr.h5) 584 set (FILE3 h5repack_hlink.h5) 585 set (FILE4 h5repack_layout.h5) 586 set (FILE5 h5repack_early.h5) 587 set (FILE7 h5repack_szip.h5) 588 set (FILE8 h5repack_deflate.h5) 589 set (FILE9 h5repack_shuffle.h5) 590 set (FILE10 h5repack_fletcher.h5) 591 set (FILE11 h5repack_filters.h5) 592 set (FILE12 h5repack_nbit.h5) 593 set (FILE13 h5repack_soffset.h5) 594 set (FILE14 h5repack_layouto.h5 ) # A file with an older version of the layout message (copy of test/tlayouto.h5) 595 set (FILE15 h5repack_named_dtypes.h5) 596 set (FILE16 tfamily%05d.h5) # located in common testfiles folder 597 set (FILE18 h5repack_layout2.h5) 598 set (FILE_REF h5repack_refs.h5) 599 set (FILE_ATTR_REF h5repack_attr_refs.h5) 600 601 if (HDF5_ENABLE_USING_MEMCHECKER) 602 # Remove any output file left over from previous test run 603 set (LIST_TO_CLEAR 604 h5dump-help.out 605 h5repack_layout.h5-chunk_18x13-v.out 606 h5repack_layout.h5-chunk_18x13-v.out.err 607 h5repack_layout.h5-chunk_20x10-v.out 608 h5repack_layout.h5-chunk_20x10-v.out.err 609 h5repack_layout.h5-chunk_compa-v.out 610 h5repack_layout.h5-chunk_compa-v.out.err 611 h5repack_layout.h5-chunk_conti-v.out 612 h5repack_layout.h5-chunk_conti-v.out.err 613 h5repack_layout.h5-compa-v.out 614 h5repack_layout.h5-compa-v.out.err 615 h5repack_layout.h5-conti-v.out 616 h5repack_layout.h5-conti-v.out.err 617 h5repack_layout.h5-deflate_limit.out 618 h5repack_layout.h5-deflate_limit.out.err 619 h5repack_layout.h5-dset2_chunk_20x10-v.out 620 h5repack_layout.h5-dset2_chunk_20x10-v.out.err 621 h5repack_layout.h5-dset2_chunk_20x10-errstk.out 622 h5repack_layout.h5-dset2_chunk_20x10-errstk.out.err 623 h5repack_layout.h5-dset2_compa-v.out 624 h5repack_layout.h5-dset2_compa-v.out.err 625 h5repack_layout.h5-dset2_conti-v.out 626 h5repack_layout.h5-dset2_conti-v.out.err 627 h5repack_layout.h5-dset_compa_chunk-v.out 628 h5repack_layout.h5-dset_compa_chunk-v.out.err 629 h5repack_layout.h5-dset_compa_compa-v.out 630 h5repack_layout.h5-dset_compa_compa-v.out.err 631 h5repack_layout.h5-dset_compa_conti-v.out 632 h5repack_layout.h5-dset_compa_conti-v.out.err 633 h5repack_layout.h5-dset_conti_chunk-v.out 634 h5repack_layout.h5-dset_conti_chunk-v.out.err 635 h5repack_layout.h5-dset_conti_compa-v.out 636 h5repack_layout.h5-dset_conti_compa-v.out.err 637 h5repack_layout.h5-dset_conti_conti-v.out 638 h5repack_layout.h5-dset_conti_conti-v.out.err 639 h5repack_layout.h5-layout_long_switches-v.out 640 h5repack_layout.h5-layout_long_switches-v.out.err 641 h5repack_layout.h5-layout_short_switches-v.out 642 h5repack_layout.h5-layout_short_switches-v.out.err 643 h5repack_layout.h5-plugin_test.out 644 h5repack_layout.h5-plugin_test.out.err 645 h5repack_layout2.h5-contig_small_compa-v.out 646 h5repack_layout2.h5-contig_small_compa-v.out.err 647 h5repack_layout2.h5-contig_small_fixed_compa-v.out 648 h5repack_layout2.h5-contig_small_fixed_compa-v.out.err 649 h5repack_layout3.h5-ckdim_biger-v.out 650 h5repack_layout3.h5-ckdim_biger-v.out.err 651 h5repack_layout3.h5-ckdim_smaller-v.out 652 h5repack_layout3.h5-ckdim_smaller-v.out.err 653 h5repack_layout3.h5-chunk2chunk-v.out 654 h5repack_layout3.h5-chunk2chunk-v.out.err 655 h5repack_layout3.h5-chunk2compa-v.out 656 h5repack_layout3.h5-chunk2compa-v.out.err 657 h5repack_layout3.h5-chunk2conti-v.out 658 h5repack_layout3.h5-chunk2conti-v.out.err 659 h5repack_layout3.h5-error1-v.out 660 h5repack_layout3.h5-error1-v.out.err 661 h5repack_layout3.h5-error2-v.out 662 h5repack_layout3.h5-error2-v.out.err 663 h5repack_layout3.h5-error3-v.out 664 h5repack_layout3.h5-error3-v.out.err 665 out-family.tfamily%05d.h5 666 out-HDFFV-7840.h5diff_attr1.h5 667 out-attr.h5repack_attr.h5 668 out-native_attr.h5repack_attr.h5 669 out-HDFFV-5932.h5repack_attr_refs.h5 670 out-deflate_copy.h5repack_deflate.h5 671 out-deflate_remove.h5repack_deflate.h5 672 out-early.h5repack_early.h5 673 out-fill.h5repack_fill.h5 674 out-native_fill.h5repack_fill.h5 675 out-gzip_verbose_filters.h5repack_filters.h5 676 out-fletcher_copy.h5repack_fletcher.h5 677 out-fletcher_remove.h5repack_fletcher.h5 678 out-hlink.h5repack_hlink.h5 679 out-chunk_18x13.h5repack_layout.h5 680 out-chunk_20x10.h5repack_layout.h5 681 out-chunk_compa.h5repack_layout.h5 682 out-chunk_conti.h5repack_layout.h5 683 out-compa.h5repack_layout.h5 684 out-conti.h5repack_layout.h5 685 out-deflate_file.h5repack_layout.h5 686 out-deflate_limit.h5repack_layout.h5 687 out-dset2_chunk_20x10.h5repack_layout.h5 688 out-dset2_compa.h5repack_layout.h5 689 out-dset2_conti.h5repack_layout.h5 690 out-dset_compa_chunk.h5repack_layout.h5 691 out-dset_compa_compa.h5repack_layout.h5 692 out-dset_compa_conti.h5repack_layout.h5 693 out-dset_conti_chunk.h5repack_layout.h5 694 out-dset_conti_compa.h5repack_layout.h5 695 out-dset_conti_conti.h5repack_layout.h5 696 out-fletcher_all.h5repack_layout.h5 697 out-fletcher_individual.h5repack_layout.h5 698 out-global_filters.h5repack_layout.h5 699 out-gzip_all.h5repack_layout.h5 700 out-gzip_individual.h5repack_layout.h5 701 out-layout.h5repack_layout.h5 702 out-layout_long_switches.h5repack_layout.h5 703 out-layout_short_switches.h5repack_layout.h5 704 out-old_style_layout_short_switches.h5repack_layout.h5 705 out-plugin_test.h5repack_layout.h5 706 out-shuffle_all.h5repack_layout.h5 707 out-shuffle_individual.h5repack_layout.h5 708 out-upgrade_layout.h5repack_layouto.h5 709 out-contig_small_compa.h5repack_layout2.h5 710 out-contig_small_fixed_compa.h5repack_layout2.h5 711 out-ckdim_biger.h5repack_layout3.h5 712 out-ckdim_smaller.h5repack_layout3.h5 713 out-chunk2chunk.h5repack_layout3.h5 714 out-chunk2compa.h5repack_layout3.h5 715 out-chunk2conti.h5repack_layout3.h5 716 out-error1.h5repack_layout3.h5 717 out-error2.h5repack_layout3.h5 718 out-error3.h5repack_layout3.h5 719 out-error4.h5repack_layout3.h5 720 out-committed_dt.h5repack_named_dtypes.h5 721 out-nbit_add.h5repack_nbit.h5 722 out-nbit_copy.h5repack_nbit.h5 723 out-nbit_remove.h5repack_nbit.h5 724 out-add_alignment.h5repack_objs.h5 725 out-add_userblock.h5repack_objs.h5 726 out-objs.h5repack_objs.h5 727 out-gt_mallocsize.h5repack_objs.h5 728 out-bug1814.h5repack_refs.h5 729 out-shuffle_copy.h5repack_shuffle.h5 730 out-shuffle_remove.h5repack_shuffle.h5 731 out-scale_add.h5repack_soffset.h5 732 out-scale_copy.h5repack_soffset.h5 733 out-scale_remove.h5repack_soffset.h5 734 out-meta_short_M.meta_short.h5 735 out-meta_short_N.meta_short.h5 736 out-meta_long_M.meta_long.h5 737 out-meta_long_N.meta_long.h5 738 ) 739 740 set (LIST_TO_CLEAR ${LIST_TO_CLEAR} ${LIST_OTHER_TEST_FILES}) 741 742 foreach (h5_file ${LIST_HDF5_TEST_FILES}) 743 get_filename_component(fname "${h5_file}" NAME) 744 set (LIST_TO_CLEAR ${LIST_TO_CLEAR} 745 ${h5_file}.h5 746 ) 747 endforeach () 748 749 foreach (h5_file ${LIST_TST_TEST_FILES}) 750 get_filename_component(fname "${h5_file}" NAME) 751 set (LIST_TO_CLEAR ${LIST_TO_CLEAR} 752 ${h5_file}.tst.out 753 ${h5_file}.tst.out.err 754 ) 755 endforeach () 756 757 foreach (h5_file ${LIST_DDL_TEST_FILES}) 758 get_filename_component(fname "${h5_file}" NAME) 759 set (LIST_TO_CLEAR ${LIST_TO_CLEAR} 760 ${h5_file}.ddl.out 761 ${h5_file}.ddl.out.err 762 ) 763 endforeach () 764 add_test ( 765 NAME H5REPACK-clearall-objects 766 COMMAND ${CMAKE_COMMAND} -E remove ${LIST_TO_CLEAR} 767 ) 768 set_tests_properties (H5REPACK-clearall-objects PROPERTIES WORKING_DIRECTORY "${PROJECT_BINARY_DIR}/testfiles") 769 if (NOT "${last_test}" STREQUAL "") 770 set_tests_properties (H5REPACK-clearall-objects PROPERTIES DEPENDS ${last_test}) 771 endif () 772 endif () 773 774 ADD_HELP_TEST(help 0 -h) 775 776 add_test (NAME H5REPACK-testh5repack_detect_szip COMMAND $<TARGET_FILE:testh5repack_detect_szip>) 777 if (HDF5_ENABLE_SZIP_SUPPORT) 778 if (HDF5_ENABLE_SZIP_ENCODING) 779 set (passRegex "yes") 780 set_tests_properties (H5REPACK-testh5repack_detect_szip PROPERTIES PASS_REGULAR_EXPRESSION "yes") 781 else () 782 set (passRegex "no") 783 set_tests_properties (H5REPACK-testh5repack_detect_szip PROPERTIES PASS_REGULAR_EXPRESSION "no") 784 endif () 785 else () 786 set (passRegex "no") 787 set_tests_properties (H5REPACK-testh5repack_detect_szip PROPERTIES PASS_REGULAR_EXPRESSION "no") 788 endif () 789 set_tests_properties (H5REPACK-testh5repack_detect_szip PROPERTIES DEPENDS H5REPACK-clearall-objects) 790 791 add_test (NAME H5REPACK-h5repacktest COMMAND $<TARGET_FILE:h5repacktest>) 792 set_tests_properties (H5REPACK-h5repacktest PROPERTIES DEPENDS H5REPACK-testh5repack_detect_szip) 793 set (last_test "H5REPACK-h5repacktest") 794 795# 796# The tests 797# We use the files generated by h5repacktst 798# Each run generates "<file>.out.h5" and the tool h5diff is used to 799# compare the input and output files 800# 801# the tests are the same as the program h5repacktst, but run from the CLI 802# 803 804# See which filters are usable (and skip tests for filters we 805# don't have). Do this by searching H5pubconf.h to see which 806# filters are defined. 807 808# detect whether the encoder is present. 809# set (USE_FILTER_SZIP_ENCODER 0) 810 if (HDF5_ENABLE_SZIP_ENCODING) 811 set (USE_FILTER_SZIP_ENCODER ${testh5repack_detect_szip}) 812 endif () 813 814 if (H5_HAVE_FILTER_DEFLATE) 815 set (USE_FILTER_DEFLATE 1) 816 endif () 817 818 if (H5_HAVE_FILTER_SZIP) 819 set (USE_FILTER_SZIP 1) 820 endif () 821 822# copy files (these files have no filters) 823 ADD_H5_TEST (fill "TEST" ${FILE0}) 824 ADD_H5_TEST (objs "TEST" ${FILE1}) 825 ADD_H5_TEST (attr "TEST" ${FILE2}) 826 ADD_H5_TEST (hlink "TEST" ${FILE3}) 827 ADD_H5_TEST (layout "TEST" ${FILE4}) 828 ADD_H5_TEST (early "TEST" ${FILE5}) 829 830# use $FILE4 to write some filters (this file has no filters) 831 832# gzip with individual object 833 set (arg ${FILE4} -f dset1:GZIP=1 -l dset1:CHUNK=20x10) 834 set (TESTTYPE "TEST") 835 if (NOT USE_FILTER_DEFLATE) 836 set (TESTTYPE "SKIP") 837 endif () 838 ADD_H5_TEST (gzip_individual ${TESTTYPE} ${arg}) 839 840# gzip for all 841 set (arg ${FILE4} -f GZIP=1) 842 set (TESTTYPE "TEST") 843 if (NOT USE_FILTER_DEFLATE) 844 set (TESTTYPE "SKIP") 845 endif () 846 ADD_H5_TEST (gzip_all ${TESTTYPE} ${arg}) 847 848# szip with individual object 849 set (arg ${FILE4} -f dset2:SZIP=8,EC -l dset2:CHUNK=20x10) 850 set (TESTTYPE "TEST") 851 if (NOT USE_FILTER_SZIP_ENCODER) 852 if (NOT USE_FILTER_SZIP) 853 set (TESTTYPE "SKIP") 854 endif () 855 endif () 856 ADD_H5_TEST (szip_individual ${TESTTYPE} ${arg}) 857 858# szip for all 859 set (arg ${FILE4} -f SZIP=8,NN) 860 set (TESTTYPE "TEST") 861 if (NOT USE_FILTER_SZIP_ENCODER) 862 if (NOT USE_FILTER_SZIP) 863 set (TESTTYPE "SKIP") 864 endif () 865 endif () 866 ADD_H5_TEST (szip_all ${TESTTYPE} ${arg}) 867 868# shuffle with individual object 869 set (arg ${FILE4} -f dset2:SHUF -l dset2:CHUNK=20x10) 870 ADD_H5_TEST (shuffle_individual "TEST" ${arg}) 871 872# shuffle for all 873 set (arg ${FILE4} -f SHUF) 874 ADD_H5_TEST (shuffle_all "TEST" ${arg}) 875 876# fletcher32 with individual object 877 set (arg ${FILE4} -f dset2:FLET -l dset2:CHUNK=20x10) 878 ADD_H5_TEST (fletcher_individual "TEST" ${arg}) 879 880# fletcher32 for all 881 set (arg ${FILE4} -f FLET) 882 ADD_H5_TEST (fletcher_all "TEST" ${arg}) 883 884# all filters 885 set (arg ${FILE4} -f dset2:SHUF -f dset2:FLET -f dset2:SZIP=8,NN -f dset2:GZIP=1 -l dset2:CHUNK=20x10) 886 set (TESTTYPE "TEST") 887 if (NOT USE_FILTER_SZIP_ENCODER) 888 if (NOT USE_FILTER_SZIP OR NOT USE_FILTER_DEFLATE) 889 set (TESTTYPE "SKIP") 890 endif () 891 endif () 892 ADD_H5_TEST (all_filters ${TESTTYPE} ${arg}) 893 894# verbose gzip with individual object 895 set (arg ${FILE11} -v -f /dset_deflate:GZIP=9) 896 set (TESTTYPE "TEST") 897 if (NOT USE_FILTER_DEFLATE) 898 set (TESTTYPE "SKIP") 899 endif () 900 ADD_H5_CMP_TEST (gzip_verbose_filters "O?...ing file[^\n]+\n" ${TESTTYPE} 0 ${arg}) 901 902########################################################### 903# the following tests assume the input files have filters 904########################################################### 905 906# szip copy 907 set (arg ${FILE7}) 908 set (TESTTYPE "TEST") 909 if (NOT USE_FILTER_SZIP_ENCODER) 910 if (NOT USE_FILTER_SZIP) 911 set (TESTTYPE "SKIP") 912 endif () 913 endif () 914 ADD_H5_TEST (szip_copy ${TESTTYPE} ${arg}) 915 916# szip remove 917 set (arg ${FILE7} --filter=dset_szip:NONE) 918 set (TESTTYPE "TEST") 919 if (NOT USE_FILTER_SZIP_ENCODER) 920 if (NOT USE_FILTER_SZIP) 921 set (TESTTYPE "SKIP") 922 endif () 923 endif () 924 ADD_H5_TEST (szip_remove ${TESTTYPE} ${arg}) 925 926# deflate copy 927 set (arg ${FILE8}) 928 set (TESTTYPE "TEST") 929 if (NOT USE_FILTER_DEFLATE) 930 set (TESTTYPE "SKIP") 931 endif () 932 ADD_H5_TEST (deflate_copy ${TESTTYPE} ${arg}) 933 934# deflate remove 935 set (arg ${FILE8} -f dset_deflate:NONE) 936 set (TESTTYPE "TEST") 937 if (NOT USE_FILTER_DEFLATE) 938 set (TESTTYPE "SKIP") 939 endif () 940 ADD_H5_TEST (deflate_remove ${TESTTYPE} ${arg}) 941 942# shuffle copy 943 set (arg ${FILE9}) 944 ADD_H5_TEST (shuffle_copy "TEST" ${arg}) 945 946# shuffle remove 947 set (arg ${FILE9} -f dset_shuffle:NONE) 948 ADD_H5_TEST (shuffle_remove "TEST" ${arg}) 949 950# fletcher32 copy 951 set (arg ${FILE10}) 952 ADD_H5_TEST (fletcher_copy "TEST" ${arg}) 953 954# fletcher32 remove 955 set (arg ${FILE10} -f dset_fletcher32:NONE) 956 ADD_H5_TEST (fletcher_remove "TEST" ${arg}) 957 958# nbit copy 959 set (arg ${FILE12}) 960 ADD_H5_TEST (nbit_copy "TEST" ${arg}) 961 962# nbit remove 963 set (arg ${FILE12} -f dset_nbit:NONE) 964 ADD_H5_TEST (nbit_remove "TEST" ${arg}) 965 966# nbit add 967 set (arg ${FILE12} -f dset_int31:NBIT) 968 ADD_H5_TEST (nbit_add "TEST" ${arg}) 969 970# scaleoffset copy 971 set (arg ${FILE13}) 972 ADD_H5_TEST (scale_copy "TEST" ${arg}) 973 974# scaleoffset add 975 set (arg ${FILE13} -f dset_none:SOFF=31,IN) 976 ADD_H5_TEST (scale_add "TEST" ${arg}) 977 978# scaleoffset remove 979 set (arg ${FILE13} -f dset_scaleoffset:NONE) 980 ADD_H5_TEST (scale_remove "TEST" ${arg}) 981 982# remove all filters 983 set (arg ${FILE11} -f NONE) 984 set (TESTTYPE "TEST") 985 if (NOT USE_FILTER_SZIP_ENCODER) 986 if (NOT USE_FILTER_SZIP OR NOT USE_FILTER_DEFLATE) 987 set (TESTTYPE "SKIP") 988 endif () 989 endif () 990 ADD_H5_TEST (remove_all ${TESTTYPE} ${arg}) 991 992#filter conversions 993 set (arg ${FILE8} -f dset_deflate:SZIP=8,NN) 994 set (TESTTYPE "TEST") 995 if (NOT USE_FILTER_SZIP_ENCODER) 996 if (NOT USE_FILTER_SZIP OR NOT USE_FILTER_DEFLATE) 997 set (TESTTYPE "SKIP") 998 endif () 999 endif () 1000 ADD_H5_TEST (deflate_convert ${TESTTYPE} ${arg}) 1001 1002 set (arg ${FILE7} -f dset_szip:GZIP=1) 1003 set (TESTTYPE "TEST") 1004 if (NOT USE_FILTER_SZIP_ENCODER) 1005 if (NOT USE_FILTER_SZIP OR NOT USE_FILTER_DEFLATE) 1006 set (TESTTYPE "SKIP") 1007 endif () 1008 endif () 1009 ADD_H5_TEST (szip_convert ${TESTTYPE} ${arg}) 1010 1011#limit 1012 set (arg ${FILE4} -f GZIP=1 -m 1024) 1013 set (TESTTYPE "TEST") 1014 if (NOT USE_FILTER_DEFLATE) 1015 set (TESTTYPE "SKIP") 1016 endif () 1017 ADD_H5_DMP_TEST (deflate_limit ${TESTTYPE} 0 ${arg}) 1018 1019#file 1020 set (arg ${FILE4} -e ${INFO_FILE}) 1021 set (TESTTYPE "TEST") 1022 if (NOT USE_FILTER_DEFLATE) 1023 set (TESTTYPE "SKIP") 1024 endif () 1025 ADD_H5_TEST (deflate_file ${TESTTYPE} ${arg}) 1026 1027#crtorder 1028 set (arg tordergr.h5 -L) 1029 set (TESTTYPE "TEST") 1030 ADD_H5_DMP_TEST (crtorder ${TESTTYPE} 0 ${arg}) 1031 1032######################################################### 1033# layout options (these files have no filters) 1034######################################################### 1035 ADD_H5_VERIFY_TEST (dset2_chunk_20x10 "TEST" 0 ${FILE4} dset2 CHUNKED --layout=dset2:CHUNK=20x10) 1036 ADD_H5_VERIFY_TEST (chunk_20x10 "TEST" 1 ${FILE4} null CHUNKED -l CHUNK=20x10) 1037 ADD_H5_VERIFY_TEST (dset2_conti "TEST" 0 ${FILE4} dset2 CONTIGUOUS -l dset2:CONTI) 1038 ADD_H5_VERIFY_TEST (conti "TEST" 1 ${FILE4} null CONTIGUOUS -l CONTI) 1039 ADD_H5_VERIFY_TEST (dset2_compa "TEST" 0 ${FILE4} dset2 COMPACT -l dset2:COMPA) 1040 ADD_H5_VERIFY_TEST (compa "TEST" 1 ${FILE4} null COMPACT -l COMPA) 1041 ADD_H5_MASK_TEST (dset2_chunk_20x10-errstk "TEST" 0 ${FILE4} --layout=dset2:CHUNK=20x10x5 --enable-error-stack) 1042 1043################################################################ 1044# layout conversions (file has no filters) 1045############################################################### 1046 ADD_H5_VERIFY_TEST (dset_compa_conti "TEST" 0 ${FILE4} dset_compact CONTIGUOUS -l dset_compact:CONTI) 1047 ADD_H5_VERIFY_TEST (dset_compa_chunk "TEST" 0 ${FILE4} dset_compact CHUNKED -l dset_compact:CHUNK=2x5) 1048 ADD_H5_VERIFY_TEST (dset_compa_compa "TEST" 0 ${FILE4} dset_compact COMPACT -l dset_compact:COMPA) 1049 ADD_H5_VERIFY_TEST (dset_conti_compa "TEST" 0 ${FILE4} dset_contiguous COMPACT -l dset_contiguous:COMPA) 1050 ADD_H5_VERIFY_TEST (dset_conti_chunk "TEST" 0 ${FILE4} dset_contiguous CHUNKED -l dset_contiguous:CHUNK=3x6) 1051 ADD_H5_VERIFY_TEST (dset_conti_conti "TEST" 0 ${FILE4} dset_contiguous CONTIGUOUS -l dset_contiguous:CONTI) 1052 ADD_H5_VERIFY_TEST (chunk_compa "TEST" 0 ${FILE4} dset_chunk COMPACT -l dset_chunk:COMPA) 1053 ADD_H5_VERIFY_TEST (chunk_conti "TEST" 0 ${FILE4} dset_chunk CONTIGUOUS -l dset_chunk:CONTI) 1054 ADD_H5_VERIFY_TEST (chunk_18x13 "TEST" 0 ${FILE4} dset_chunk CHUNKED -l dset_chunk:CHUNK=18x13) 1055 1056# test convert small size dataset ( < 1k) to compact layout without -m 1057 ADD_H5_VERIFY_TEST (contig_small_compa "TEST" 0 ${FILE18} contig_small COMPACT -l contig_small:COMPA) 1058 ADD_H5_VERIFY_TEST (contig_small_fixed_compa "TEST" 0 ${FILE18} chunked_small_fixed COMPACT -l chunked_small_fixed:COMPA) 1059 1060#--------------------------------------------------------------------------- 1061# Test file contains chunked datasets (need multiple dsets) with 1062# unlimited max dims. (HDFFV-7933) 1063# Use first dset to test. 1064#--------------------------------------------------------------------------- 1065# chunk to chunk - specify chunk dim bigger than any current dim 1066 ADD_H5_VERIFY_TEST (chunk2chunk "TEST" 0 h5repack_layout3.h5 chunk_unlimit1 CHUNK -l chunk_unlimit1:CHUNK=100x300) 1067 1068# chunk to contiguous 1069 ADD_H5_VERIFY_TEST (chunk2conti "TEST" 0 h5repack_layout3.h5 chunk_unlimit1 CONTI -l chunk_unlimit1:CONTI) 1070 1071# chunk to compact - convert big dataset (should be > 64k) for this purpose, 1072# should remain as original layout (chunk) 1073 ADD_H5_VERIFY_TEST (chunk2compa "TEST" 0 h5repack_layout3.h5 chunk_unlimit1 CHUNK -l chunk_unlimit1:COMPA) 1074 1075#-------------------------------------------------------------------------- 1076# Test -f for some specific cases. Chunked dataset with unlimited max dims. 1077# (HDFFV-8012) 1078#-------------------------------------------------------------------------- 1079# - should not fail 1080# - should not change max dims from unlimit 1081 1082# chunk dim is bigger than dataset dim. ( dset size < 64k ) 1083 ADD_H5_VERIFY_TEST (error1 "TEST" 0 h5repack_layout3.h5 chunk_unlimit1 H5S_UNLIMITED -f chunk_unlimit1:NONE) 1084 1085# chunk dim is bigger than dataset dim. ( dset size > 64k ) 1086 ADD_H5_VERIFY_TEST (error2 "TEST" 0 h5repack_layout3.h5 chunk_unlimit2 H5S_UNLIMITED -f chunk_unlimit2:NONE) 1087 1088# chunk dims are smaller than dataset dims. ( dset size < 64k ) 1089 ADD_H5_VERIFY_TEST (error3 "TEST" 0 h5repack_layout3.h5 chunk_unlimit3 H5S_UNLIMITED -f chunk_unlimit3:NONE) 1090 1091# file input - should not fail 1092 ADD_H5_TEST (error4 "TEST" h5repack_layout3.h5 -f NONE) 1093 1094#-------------------------------------------------------------------------- 1095# Test base: Convert CHUNK to CONTI for a chunked dataset with small dataset 1096# (dset size < 64K) and with unlimited max dims on a condition as follow. 1097# (HDFFV-8214) 1098#-------------------------------------------------------------------------- 1099# chunk dim is bigger than dataset dim. should succeed. 1100 ADD_H5_VERIFY_TEST (ckdim_biger "TEST" 0 h5repack_layout3.h5 chunk_unlimit2 CONTI -l chunk_unlimit2:CONTI) 1101# chunk dim is smaller than dataset dim. should succeed. 1102 ADD_H5_VERIFY_TEST (ckdim_smaller "TEST" 0 h5repack_layout3.h5 chunk_unlimit3 CONTI -l chunk_unlimit3:CONTI) 1103 1104 1105 1106# Native option 1107# Do not use FILE1, as the named dtype will be converted to native, and h5diff will 1108# report a difference. 1109 ADD_H5_TEST (native_fill "TEST" ${FILE0} -n) 1110 ADD_H5_TEST (native_attr "TEST" ${FILE2} -n) 1111 1112# latest file format with long switches. use FILE4=h5repack_layout.h5 (no filters) 1113 set (arg --layout CHUNK=20x10 --filter GZIP=1 --minimum=10 --native --latest --compact=8 --indexed=6 --ssize=8[:dtype]) 1114 set (TESTTYPE "TEST") 1115 if (NOT USE_FILTER_DEFLATE) 1116 set (TESTTYPE "SKIP") 1117 endif () 1118 ADD_H5_VERIFY_TEST (layout_long_switches ${TESTTYPE} 1 ${FILE4} null CHUNKED ${arg}) 1119 1120# latest file format with short switches. use FILE4=h5repack_layout.h5 (no filters) 1121 set (arg -l CHUNK=20x10 -f GZIP=1 -m 10 -n -L -c 8 -d 6 -s 8[:dtype]) 1122 set (TESTTYPE "TEST") 1123 if (NOT USE_FILTER_DEFLATE) 1124 set (TESTTYPE "SKIP") 1125 endif () 1126 ADD_H5_VERIFY_TEST (layout_short_switches ${TESTTYPE} 1 ${FILE4} null CHUNKED ${arg}) 1127 1128# several global filters 1129 set (arg ${FILE4} --filter GZIP=1 --filter SHUF) 1130 set (TESTTYPE "TEST") 1131 if (NOT USE_FILTER_DEFLATE) 1132 set (TESTTYPE "SKIP") 1133 endif () 1134 ADD_H5_TEST (global_filters ${TESTTYPE} ${arg}) 1135 1136# syntax of -i infile -o outfile 1137# latest file format with short switches. use FILE4=h5repack_layout.h5 (no filters) 1138 set (arg ${FILE4} -l CHUNK=20x10 -f GZIP=1 -m 10 -n -L -c 8 -d 6 -s 8[:dtype]) 1139 set (TESTTYPE "LEGACY") 1140 if (NOT USE_FILTER_DEFLATE) 1141 set (TESTTYPE "SKIP") 1142 endif () 1143 ADD_H5_TEST_OLD (old_style_layout_short_switches ${TESTTYPE} ${arg}) 1144 1145# add a userblock to file 1146 set (arg ${FILE1} -u ${PROJECT_BINARY_DIR}/testfiles/ublock.bin -b 2048) 1147 ADD_H5_TEST (add_userblock "TEST" ${arg}) 1148 1149# add alignment 1150 set (arg ${FILE1} -t 1 -a 1) 1151 ADD_H5_TEST (add_alignment "TEST" ${arg}) 1152 1153# Check repacking file with old version of layout message (should get upgraded 1154# to new version and be readable, etc.) 1155 ADD_H5_TEST (upgrade_layout "TEST" ${FILE14}) 1156 1157# test for datum size > H5TOOLS_MALLOCSIZE 1158 if (NOT USE_FILTER_DEFLATE) 1159 set (TESTTYPE "SKIP") 1160 endif () 1161 ADD_H5_TEST (gt_mallocsize ${TESTTYPE} ${FILE1} -f GZIP=1) 1162 1163# Check repacking file with committed datatypes in odd configurations 1164 ADD_H5_TEST (committed_dt "TEST" ${FILE15}) 1165 1166# tests family driver (file is located in common testfiles folder, uses TOOLTEST1 1167 ADD_H5_TEST (family "TEST" ${FILE16}) 1168 1169# test various references (bug 1814 and 1726) 1170 ADD_H5_TEST (bug1814 "TEST" ${FILE_REF}) 1171 1172# test attribute with various references (bug1797 / HDFFV-5932) 1173# the references in attribute of compund or vlen datatype 1174 ADD_H5_TEST (HDFFV-5932 "TEST" ${FILE_ATTR_REF}) 1175 1176# Add test for memory leak in attirbute. This test is verified by CTEST. 1177# 1. leak from vlen string 1178# 2. leak from compound type without reference member 1179# (HDFFV-7840, ) 1180# Note: this test is experimental for sharing test file among tools 1181 ADD_H5_TEST (HDFFV-7840 "TEST" h5diff_attr1.h5) 1182 1183# tests for metadata block size option ('-M') 1184 ADD_H5_TEST_META (meta_short h5repack_layout.h5 -M 8192) 1185 ADD_H5_TEST_META (meta_long h5repack_layout.h5 --metadata_block_size=8192) 1186 1187############################################################################## 1188### P L U G I N T E S T S 1189############################################################################## 1190 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}) 1191 ADD_H5_UD_TEST (plugin_test 0 h5repack_layout.h5 -v -f UD=257,0,1,9) 1192 ADD_H5_UD_TEST (plugin_none 0 h5repack_layout.UD.h5 -v -f NONE) 1193 # check for no parameters 1194 ADD_H5_UD_TEST (plugin_zero 0 h5repack_layout.h5 -v -f UD=250,0,0) 1195 1196 if (HDF5_TEST_VFD) 1197 # Run test with different Virtual File Driver 1198 foreach (vfd ${VFD_LIST}) 1199 ADD_VFD_TEST (${vfd} 0) 1200 endforeach () 1201 endif () 1202