diff options
Diffstat (limited to 'tools')
90 files changed, 7280 insertions, 415 deletions
diff --git a/tools/h5diff/CMakeTests.cmake b/tools/h5diff/CMakeTests.cmake index c650dbe..33d0971 100644 --- a/tools/h5diff/CMakeTests.cmake +++ b/tools/h5diff/CMakeTests.cmake @@ -4,7 +4,7 @@ ### T E S T I N G ### ############################################################################## ############################################################################## - + # -------------------------------------------------------------------- # Copy all the HDF5 files from the test directory into the source directory # -------------------------------------------------------------------- @@ -50,6 +50,30 @@ ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/compounds_array_vlen2.h5 ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/non_comparables1.h5 ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/non_comparables2.h5 + # tools/testfiles/vds + ${HDF5_TOOLS_SRC_DIR}/testfiles/vds/1_a.h5 + ${HDF5_TOOLS_SRC_DIR}/testfiles/vds/1_b.h5 + ${HDF5_TOOLS_SRC_DIR}/testfiles/vds/1_c.h5 + ${HDF5_TOOLS_SRC_DIR}/testfiles/vds/1_d.h5 + ${HDF5_TOOLS_SRC_DIR}/testfiles/vds/1_e.h5 + ${HDF5_TOOLS_SRC_DIR}/testfiles/vds/1_f.h5 + ${HDF5_TOOLS_SRC_DIR}/testfiles/vds/1_vds.h5 + ${HDF5_TOOLS_SRC_DIR}/testfiles/vds/2_a.h5 + ${HDF5_TOOLS_SRC_DIR}/testfiles/vds/2_b.h5 + ${HDF5_TOOLS_SRC_DIR}/testfiles/vds/2_c.h5 + ${HDF5_TOOLS_SRC_DIR}/testfiles/vds/2_d.h5 + ${HDF5_TOOLS_SRC_DIR}/testfiles/vds/2_e.h5 + ${HDF5_TOOLS_SRC_DIR}/testfiles/vds/2_vds.h5 + ${HDF5_TOOLS_SRC_DIR}/testfiles/vds/3_1_vds.h5 + ${HDF5_TOOLS_SRC_DIR}/testfiles/vds/3_2_vds.h5 + ${HDF5_TOOLS_SRC_DIR}/testfiles/vds/4_0.h5 + ${HDF5_TOOLS_SRC_DIR}/testfiles/vds/4_1.h5 + ${HDF5_TOOLS_SRC_DIR}/testfiles/vds/4_2.h5 + ${HDF5_TOOLS_SRC_DIR}/testfiles/vds/4_vds.h5 + ${HDF5_TOOLS_SRC_DIR}/testfiles/vds/5_a.h5 + ${HDF5_TOOLS_SRC_DIR}/testfiles/vds/5_b.h5 + ${HDF5_TOOLS_SRC_DIR}/testfiles/vds/5_c.h5 + ${HDF5_TOOLS_SRC_DIR}/testfiles/vds/5_vds.h5 ) set (LIST_OTHER_TEST_FILES @@ -231,6 +255,9 @@ ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/h5diff_710.txt ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/h5diff_80.txt ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/h5diff_90.txt + ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/h5diff_v1.txt + ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/h5diff_v2.txt + ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/h5diff_v3.txt ) # Make testfiles dir under build dir @@ -283,7 +310,7 @@ ARGS -E copy_if_different ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/h5diff_104w.txt ${PROJECT_BINARY_DIR}/testfiles/h5diff_104.txt ) endif (WIN32) - + ############################################################################## ############################################################################## ### T H E T E S T S M A C R O S ### @@ -399,7 +426,7 @@ ############################################################################## # -------------------------------------------------------------------- - # test file names + # test file names # -------------------------------------------------------------------- set (FILE1 h5diff_basic1.h5) set (FILE2 h5diff_basic2.h5) @@ -425,7 +452,7 @@ set (DANGLE_LINK_FILE2 h5diff_danglelinks2.h5) set (GRP_RECURSE_FILE1 h5diff_grp_recurse1.h5) set (GRP_RECURSE_FILE2 h5diff_grp_recurse2.h5) - # group recursive - same structure via external links through files + # group recursive - same structure via external links through files set (GRP_RECURSE1_EXT h5diff_grp_recurse_ext1.h5) set (GRP_RECURSE2_EXT1 h5diff_grp_recurse_ext2-1.h5) set (GRP_RECURSE2_EXT2 h5diff_grp_recurse_ext2-2.h5) @@ -447,13 +474,20 @@ # attrs with verbose option level set (ATTR_VERBOSE_LEVEL_FILE1 h5diff_attr_v_level1.h5) set (ATTR_VERBOSE_LEVEL_FILE2 h5diff_attr_v_level2.h5) +# VDS tests + set (FILEV1 1_vds.h5) + set (FILEV2 2_vds.h5) + set (FILEV3_1 3_1_vds.h5) + set (FILEV3_2 3_2_vds.h5) + set (FILEV4 4_vds.h5) + set (FILEV5 5_vds.h5) if (HDF5_ENABLE_USING_MEMCHECKER) # Remove any output file left over from previous test run add_test ( NAME H5DIFF-clearall-objects COMMAND ${CMAKE_COMMAND} - -E remove + -E remove h5diff_10.out h5diff_10.out.err h5diff_100.out @@ -800,6 +834,12 @@ h5diff_80.out.err h5diff_90.out h5diff_90.out.err + h5diff_v1.out + h5diff_v1.out.err + h5diff_v2.out + h5diff_v2.out.err + h5diff_v3.out + h5diff_v3.out.err ) set_tests_properties (H5DIFF-clearall-objects PROPERTIES WORKING_DIRECTORY "${PROJECT_BINARY_DIR}/testfiles") if (NOT "${last_test}" STREQUAL "") @@ -816,13 +856,13 @@ ADD_H5_TEST (h5diff_10 0 -h) # 1.1 normal mode -ADD_H5_TEST (h5diff_11 1 ${FILE1} ${FILE2}) +ADD_H5_TEST (h5diff_11 1 ${FILE1} ${FILE2}) # 1.2 normal mode with objects ADD_H5_TEST (h5diff_12 1 ${FILE1} ${FILE2} g1/dset1 g1/dset2) # 1.3 report mode -ADD_H5_TEST (h5diff_13 1 -r ${FILE1} ${FILE2}) +ADD_H5_TEST (h5diff_13 1 -r ${FILE1} ${FILE2}) # 1.4 report mode with objects ADD_H5_TEST (h5diff_14 1 -r ${FILE1} ${FILE2} g1/dset1 g1/dset2) @@ -840,7 +880,7 @@ ADD_H5_TEST (h5diff_16_2 1 --verbose --relative=0.02 ${FILE1} ${FILE1} g1/dset7 ADD_H5_TEST (h5diff_16_3 1 -v -p 0.02 ${FILE1} ${FILE1} g1/dset9 g1/dset10) # 1.7 verbose mode -ADD_H5_TEST (h5diff_17 1 -v ${FILE1} ${FILE2}) +ADD_H5_TEST (h5diff_17 1 -v ${FILE1} ${FILE2}) # 1.7 test 32-bit INFINITY ADD_H5_TEST (h5diff_171 0 -v ${FILE1} ${FILE1} /g1/fp19 /g1/fp19_COPY) @@ -848,8 +888,8 @@ ADD_H5_TEST (h5diff_171 0 -v ${FILE1} ${FILE1} /g1/fp19 /g1/fp19_COPY) # 1.7 test 64-bit INFINITY ADD_H5_TEST (h5diff_172 0 -v ${FILE1} ${FILE1} /g1/fp20 /g1/fp20_COPY) -# 1.8 quiet mode -ADD_H5_TEST (h5diff_18 1 -q ${FILE1} ${FILE2}) +# 1.8 quiet mode +ADD_H5_TEST (h5diff_18 1 -q ${FILE1} ${FILE2}) # 1.8 -v and -q ADD_H5_TEST (h5diff_18_1 2 -v -q ${FILE1} ${FILE2}) @@ -878,7 +918,7 @@ ADD_H5_TEST (h5diff_23 0 -v ${FILE3} ${FILE3} g1 g1) ADD_H5_TEST (h5diff_24 0 -v ${FILE3} ${FILE3} t1 t1) # 2.5 -ADD_H5_TEST (h5diff_25 0 -v ${FILE3} ${FILE3} l1 l1) +ADD_H5_TEST (h5diff_25 0 -v ${FILE3} ${FILE3} l1 l1) # 2.6 ADD_H5_TEST (h5diff_26 0 -v ${FILE3} ${FILE3} g1 g2) @@ -920,7 +960,7 @@ ADD_H5_TEST (h5diff_57 0 -v ${FILE4} ${FILE4} dset7a dset7b) # 5.8 (region reference) ADD_H5_TEST (h5diff_58 1 -v ${FILE7} ${FILE8} refreg) -# test for both dset and attr with same type but with different size +# test for both dset and attr with same type but with different size # ( HDDFV-7942 ) ADD_H5_TEST (h5diff_59 0 -v ${FILE4} ${FILE4} dset11a dset11b) @@ -929,13 +969,13 @@ ADD_H5_TEST (h5diff_59 0 -v ${FILE4} ${FILE4} dset11a dset11b) # ############################################################################## # 6.0: Check if the command line number of arguments is less than 3 -ADD_H5_TEST (h5diff_600 1 ${FILE1}) +ADD_H5_TEST (h5diff_600 1 ${FILE1}) -# 6.1: Check if non-exist object name is specified +# 6.1: Check if non-exist object name is specified ADD_H5_TEST (h5diff_601 2 ${FILE1} ${FILE1} nono_obj) # ############################################################################## -# # -d +# # -d # ############################################################################## # 6.3: negative value @@ -953,7 +993,7 @@ ADD_H5_TEST (h5diff_606 1 -d 0x1 ${FILE1} ${FILE2} g1/dset3 g1/dset4) # 6.7: string ADD_H5_TEST (h5diff_607 1 -d "1" ${FILE1} ${FILE2} g1/dset3 g1/dset4) -# 6.8: use system epsilon +# 6.8: use system epsilon ADD_H5_TEST (h5diff_608 1 --use-system-epsilon ${FILE1} ${FILE2} g1/dset3 g1/dset4) # 6.9: number larger than biggest difference @@ -1032,12 +1072,12 @@ ADD_H5_TEST (h5diff_631 0 -v --use-system-epsilon ${FILE1} ${FILE1} g1/fp18 g1/f # ############################################################################## # 7. attributes # ############################################################################## -ADD_H5_TEST (h5diff_70 1 -v ${FILE5} ${FILE6}) +ADD_H5_TEST (h5diff_70 1 -v ${FILE5} ${FILE6}) # ################################################## # attrs with verbose option level # ################################################## -ADD_H5_TEST (h5diff_700 1 -v1 ${FILE5} ${FILE6}) +ADD_H5_TEST (h5diff_700 1 -v1 ${FILE5} ${FILE6}) ADD_H5_TEST (h5diff_701 1 -v2 ${FILE5} ${FILE6}) ADD_H5_TEST (h5diff_702 1 --verbose=1 ${FILE5} ${FILE6}) ADD_H5_TEST (h5diff_703 1 --verbose=2 ${FILE5} ${FILE6}) @@ -1054,7 +1094,7 @@ ADD_H5_TEST (h5diff_706 1 -v2 ${ATTR_VERBOSE_LEVEL_FILE1} ${ATTR_VERBOSE_LEVEL_F # different attr number , same attr name (intersected) ADD_H5_TEST (h5diff_707 1 -v2 ${ATTR_VERBOSE_LEVEL_FILE1} ${ATTR_VERBOSE_LEVEL_FILE2} /g2) -# different attr number , all different attr name +# different attr number , all different attr name ADD_H5_TEST (h5diff_708 1 -v2 ${ATTR_VERBOSE_LEVEL_FILE1} ${ATTR_VERBOSE_LEVEL_FILE2} /g3) # when no attributes exist in both objects @@ -1066,31 +1106,31 @@ ADD_H5_TEST (h5diff_710 1 -v2 ${ATTR_VERBOSE_LEVEL_FILE1} ${ATTR_VERBOSE_LEVEL_F # ############################################################################## # 8. all dataset datatypes # ############################################################################## -ADD_H5_TEST (h5diff_80 1 -v ${FILE7} ${FILE8}) +ADD_H5_TEST (h5diff_80 1 -v ${FILE7} ${FILE8}) # 9. compare a file with itself ADD_H5_TEST (h5diff_90 0 -v ${FILE2} ${FILE2}) # 10. read by hyperslab, print indexes -ADD_H5_TEST (h5diff_100 1 -v ${FILE9} ${FILE10}) +ADD_H5_TEST (h5diff_100 1 -v ${FILE9} ${FILE10}) # 11. floating point comparison -ADD_H5_TEST (h5diff_101 1 -v ${FILE1} ${FILE1} g1/d1 g1/d2) +ADD_H5_TEST (h5diff_101 1 -v ${FILE1} ${FILE1} g1/d1 g1/d2) -ADD_H5_TEST (h5diff_102 1 -v ${FILE1} ${FILE1} g1/fp1 g1/fp2) +ADD_H5_TEST (h5diff_102 1 -v ${FILE1} ${FILE1} g1/fp1 g1/fp2) -# with --use-system-epsilon for double value. expect less differences +# with --use-system-epsilon for double value. expect less differences ADD_H5_TEST (h5diff_103 1 -v --use-system-epsilon ${FILE1} ${FILE1} g1/d1 -g1/d2) +g1/d2) # with --use-system-epsilon for float value. expect less differences ADD_H5_TEST (h5diff_104 1 -v --use-system-epsilon ${FILE1} ${FILE1} g1/fp1 g1/fp2) # not comparable -c flag -ADD_H5_TEST (h5diff_200 0 ${FILE2} ${FILE2} g2/dset1 g2/dset2) +ADD_H5_TEST (h5diff_200 0 ${FILE2} ${FILE2} g2/dset1 g2/dset2) -ADD_H5_TEST (h5diff_201 0 -c ${FILE2} ${FILE2} g2/dset1 g2/dset2) +ADD_H5_TEST (h5diff_201 0 -c ${FILE2} ${FILE2} g2/dset1 g2/dset2) ADD_H5_TEST (h5diff_202 0 -c ${FILE2} ${FILE2} g2/dset2 g2/dset3) @@ -1106,9 +1146,9 @@ ADD_H5_TEST (h5diff_206 0 -c ${FILE2} ${FILE2} g2/dset7 g2/dset8) ADD_H5_TEST (h5diff_207 0 -c ${FILE2} ${FILE2} g2/dset8 g2/dset9) # not comparable in dataspace of zero dimension size -ADD_H5_TEST (h5diff_208 0 -c ${FILE19} ${FILE20}) +ADD_H5_TEST (h5diff_208 0 -c ${FILE19} ${FILE20}) -# non-comparable dataset with comparable attribute, and other comparable datasets. +# non-comparable dataset with comparable attribute, and other comparable datasets. # All the rest comparables should display differences. ADD_H5_TEST (h5diff_220 1 -c non_comparables1.h5 non_comparables2.h5 /g1) @@ -1221,28 +1261,28 @@ ADD_H5_TEST (h5diff_425 1 --follow-symlinks -v ${FILE17} ${FILE17} /ext_link_to_ ADD_H5_TEST (h5diff_450 1 --follow-symlinks -v ${DANGLE_LINK_FILE1} ${DANGLE_LINK_FILE2}) # dangling links --follow-symlinks and --no-dangling-links (FILE to FILE) -ADD_H5_TEST (h5diff_451 2 --follow-symlinks -v --no-dangling-links ${DANGLE_LINK_FILE1} ${DANGLE_LINK_FILE2}) +ADD_H5_TEST (h5diff_451 2 --follow-symlinks -v --no-dangling-links ${DANGLE_LINK_FILE1} ${DANGLE_LINK_FILE2}) # try --no-dangling-links without --follow-symlinks options ADD_H5_TEST (h5diff_452 2 --no-dangling-links ${FILE13} ${FILE13}) # dangling link found for soft links (FILE to FILE) -ADD_H5_TEST (h5diff_453 2 --follow-symlinks -v --no-dangling-links ${FILE13} ${FILE13}) +ADD_H5_TEST (h5diff_453 2 --follow-symlinks -v --no-dangling-links ${FILE13} ${FILE13}) # dangling link found for soft links (obj to obj) -ADD_H5_TEST (h5diff_454 2 --follow-symlinks -v --no-dangling-links ${FILE13} ${FILE13} /softlink_dset2 /softlink_noexist) +ADD_H5_TEST (h5diff_454 2 --follow-symlinks -v --no-dangling-links ${FILE13} ${FILE13} /softlink_dset2 /softlink_noexist) # dangling link found for soft links (obj to obj) Both dangle links -ADD_H5_TEST (h5diff_455 2 --follow-symlinks -v --no-dangling-links ${FILE13} ${FILE13} /softlink_noexist /softlink_noexist) +ADD_H5_TEST (h5diff_455 2 --follow-symlinks -v --no-dangling-links ${FILE13} ${FILE13} /softlink_noexist /softlink_noexist) # dangling link found for ext links (FILE to FILE) -ADD_H5_TEST (h5diff_456 2 --follow-symlinks -v --no-dangling-links ${FILE15} ${FILE15}) +ADD_H5_TEST (h5diff_456 2 --follow-symlinks -v --no-dangling-links ${FILE15} ${FILE15}) # dangling link found for ext links (obj to obj). target file exist -ADD_H5_TEST (h5diff_457 2 --follow-symlinks -v --no-dangling-links ${FILE15} ${FILE15} /ext_link_dset1 /ext_link_noexist1) +ADD_H5_TEST (h5diff_457 2 --follow-symlinks -v --no-dangling-links ${FILE15} ${FILE15} /ext_link_dset1 /ext_link_noexist1) # dangling link found for ext links (obj to obj). target file NOT exist -ADD_H5_TEST (h5diff_458 2 --follow-symlinks -v --no-dangling-links ${FILE15} ${FILE15} /ext_link_dset1 /ext_link_noexist2) +ADD_H5_TEST (h5diff_458 2 --follow-symlinks -v --no-dangling-links ${FILE15} ${FILE15} /ext_link_dset1 /ext_link_noexist2) # dangling link found for ext links (obj to obj). Both dangle links ADD_H5_TEST (h5diff_459 2 --follow-symlinks -v --no-dangling-links ${FILE15} ${FILE15} /ext_link_noexist1 /ext_link_noexist2) @@ -1261,9 +1301,9 @@ ADD_H5_TEST (h5diff_468 0 -v --follow-symlinks h5diff_danglelinks1.h5 h5diff_dan ADD_H5_TEST (h5diff_469 1 -v --follow-symlinks h5diff_danglelinks1.h5 h5diff_danglelinks2.h5 /ext_link2) #--------------------------------------------------- -# dangling links without follow symlink +# dangling links without follow symlink # (HDFFV-7998) -# test - soft dangle links (same and different paths), +# test - soft dangle links (same and different paths), # - external dangle links (same and different paths) ADD_H5_TEST (h5diff_471 1 -v h5diff_danglelinks1.h5 h5diff_danglelinks2.h5) ADD_H5_TEST (h5diff_472 0 -v h5diff_danglelinks1.h5 h5diff_danglelinks2.h5 /soft_link1) @@ -1275,7 +1315,7 @@ ADD_H5_TEST (h5diff_475 1 -v h5diff_danglelinks1.h5 h5diff_danglelinks2.h5 /ext_ # ############################################################################## # # test for group diff recursivly # ############################################################################## -# root +# root ADD_H5_TEST (h5diff_500 1 -v ${GRP_RECURSE_FILE1} ${GRP_RECURSE_FILE2} / /) ADD_H5_TEST (h5diff_501 1 -v --follow-symlinks ${GRP_RECURSE_FILE1} ${GRP_RECURSE_FILE2} / /) @@ -1309,7 +1349,7 @@ ADD_H5_TEST (h5diff_513 1 -v ${GRP_RECURSE_FILE1} ${GRP_RECURSE_FILE2} /slink_gr ADD_H5_TEST (h5diff_514 1 -v --follow-symlinks ${GRP_RECURSE_FILE1} ${GRP_RECURSE_FILE2} /slink_grp10 /slink_grp11) ############################################################################### -# Test for group recursive diff via multi-linked external links +# Test for group recursive diff via multi-linked external links # With follow-symlinks, file $GRP_RECURSE1_EXT and $GRP_RECURSE2_EXT1 should # be same with the external links. ############################################################################### @@ -1332,7 +1372,7 @@ ADD_H5_TEST (h5diff_480 0 -v --exclude-path /group1/dset3 ${EXCLUDE_FILE1_1} ${E ADD_H5_TEST (h5diff_481 1 -v ${EXCLUDE_FILE1_1} ${EXCLUDE_FILE1_2}) # -# Different structure, different names. +# Different structure, different names. # # Exclude all the different objects. Expect return - same ADD_H5_TEST (h5diff_482 0 -v --exclude-path "/group1" --exclude-path "/dset1" ${EXCLUDE_FILE2_1} ${EXCLUDE_FILE2_2}) @@ -1364,10 +1404,10 @@ ADD_H5_TEST (h5diff_530 0 -v ${COMP_VL_STRS_FILE} ${COMP_VL_STRS_FILE} /group / ADD_H5_TEST (h5diff_540 1 -v ${COMPS_ARRAY_VLEN_FILE1} ${COMPS_ARRAY_VLEN_FILE2}) # ############################################################################## -# # Test mutually exclusive options +# # Test mutually exclusive options # ############################################################################## # -# Test with -d , -p and --use-system-epsilon. +# Test with -d , -p and --use-system-epsilon. ADD_H5_TEST (h5diff_640 1 -v -d 5 -p 0.05 --use-system-epsilon ${FILE1} ${FILE2} /g1/dset3 /g1/dset4) ADD_H5_TEST (h5diff_641 1 -v -d 5 -p 0.05 ${FILE1} ${FILE2} /g1/dset3 /g1/dset4) ADD_H5_TEST (h5diff_642 1 -v -p 0.05 -d 5 ${FILE1} ${FILE2} /g1/dset3 /g1/dset4) @@ -1375,3 +1415,9 @@ ADD_H5_TEST (h5diff_643 1 -v -d 5 --use-system-epsilon ${FILE1} ${FILE2} /g1/dse ADD_H5_TEST (h5diff_644 1 -v --use-system-epsilon -d 5 ${FILE1} ${FILE2} /g1/dset3 /g1/dset4) ADD_H5_TEST (h5diff_645 1 -v -p 0.05 --use-system-epsilon ${FILE1} ${FILE2} /g1/dset3 /g1/dset4) ADD_H5_TEST (h5diff_646 1 -v --use-system-epsilon -p 0.05 ${FILE1} ${FILE2} /g1/dset3 /g1/dset4) + +# VDS +ADD_H5_TEST (h5diff_v1 0 -v ${FILEV1} ${FILEV2}) +ADD_H5_TEST (h5diff_v2 0 -r ${FILEV1} ${FILEV2}) +ADD_H5_TEST (h5diff_v3 0 -c ${FILEV1} ${FILEV2}) + diff --git a/tools/h5diff/testfiles/h5diff_v1.txt b/tools/h5diff/testfiles/h5diff_v1.txt new file mode 100644 index 0000000..31a3eae --- /dev/null +++ b/tools/h5diff/testfiles/h5diff_v1.txt @@ -0,0 +1,18 @@ + +file1 file2 +--------------------------------------- + x x / + x x /vds_dset + +group : </> and </> +0 differences found +dataset: </vds_dset> and </vds_dset> +Not comparable: </vds_dset> or </vds_dset> is an empty dataset +Not comparable: </vds_dset> has rank 3, dimensions [5x18x8], max dimensions [18446744073709551615x18x8] +and </vds_dset> has rank 3, dimensions [6x8x14], max dimensions [18446744073709551615x8x14] +0 differences found +-------------------------------- +Some objects are not comparable +-------------------------------- +Use -c for a list of objects without details of differences. +EXIT CODE: 0 diff --git a/tools/h5diff/testfiles/h5diff_v2.txt b/tools/h5diff/testfiles/h5diff_v2.txt new file mode 100644 index 0000000..aa327b1 --- /dev/null +++ b/tools/h5diff/testfiles/h5diff_v2.txt @@ -0,0 +1,7 @@ +dataset: </vds_dset> and </vds_dset> +0 differences found +-------------------------------- +Some objects are not comparable +-------------------------------- +Use -c for a list of objects. +EXIT CODE: 0 diff --git a/tools/h5diff/testfiles/h5diff_v3.txt b/tools/h5diff/testfiles/h5diff_v3.txt new file mode 100644 index 0000000..8c5d2a2 --- /dev/null +++ b/tools/h5diff/testfiles/h5diff_v3.txt @@ -0,0 +1,4 @@ +Not comparable: </vds_dset> or </vds_dset> is an empty dataset +Not comparable: </vds_dset> has rank 3, dimensions [5x18x8], max dimensions [18446744073709551615x18x8] +and </vds_dset> has rank 3, dimensions [6x8x14], max dimensions [18446744073709551615x8x14] +EXIT CODE: 0 diff --git a/tools/h5diff/testh5diff.sh.in b/tools/h5diff/testh5diff.sh.in index 3be0b80..07fa7ba 100644 --- a/tools/h5diff/testh5diff.sh.in +++ b/tools/h5diff/testh5diff.sh.in @@ -120,6 +120,29 @@ $SRC_H5DIFF_TESTFILES/h5diff_attr_v_level2.h5 $SRC_H5DIFF_TESTFILES/h5diff_enum_invalid_values.h5 $SRC_H5DIFF_TESTFILES/non_comparables1.h5 $SRC_H5DIFF_TESTFILES/non_comparables2.h5 +$SRC_TOOLS_TESTFILES/vds/1_a.h5 +$SRC_TOOLS_TESTFILES/vds/1_b.h5 +$SRC_TOOLS_TESTFILES/vds/1_c.h5 +$SRC_TOOLS_TESTFILES/vds/1_d.h5 +$SRC_TOOLS_TESTFILES/vds/1_e.h5 +$SRC_TOOLS_TESTFILES/vds/1_f.h5 +$SRC_TOOLS_TESTFILES/vds/1_vds.h5 +$SRC_TOOLS_TESTFILES/vds/2_a.h5 +$SRC_TOOLS_TESTFILES/vds/2_b.h5 +$SRC_TOOLS_TESTFILES/vds/2_c.h5 +$SRC_TOOLS_TESTFILES/vds/2_d.h5 +$SRC_TOOLS_TESTFILES/vds/2_e.h5 +$SRC_TOOLS_TESTFILES/vds/2_vds.h5 +$SRC_TOOLS_TESTFILES/vds/3_1_vds.h5 +$SRC_TOOLS_TESTFILES/vds/3_2_vds.h5 +$SRC_TOOLS_TESTFILES/vds/4_0.h5 +$SRC_TOOLS_TESTFILES/vds/4_1.h5 +$SRC_TOOLS_TESTFILES/vds/4_2.h5 +$SRC_TOOLS_TESTFILES/vds/4_vds.h5 +$SRC_TOOLS_TESTFILES/vds/5_a.h5 +$SRC_TOOLS_TESTFILES/vds/5_b.h5 +$SRC_TOOLS_TESTFILES/vds/5_c.h5 +$SRC_TOOLS_TESTFILES/vds/5_vds.h5 " LIST_OTHER_TEST_FILES=" @@ -331,10 +354,10 @@ COPY_TESTFILES_TO_TESTDIR() INODE_SDIR=`$LS -i -d $SDIR | $AWK -F' ' '{print $1}'` INODE_DDIR=`$LS -i -d $TESTDIR | $AWK -F' ' '{print $1}'` if [ "$INODE_SDIR" != "$INODE_DDIR" ]; then - $CP -f $tstfile $TESTDIR + $CP -f $tstfile $TESTDIR if [ $? -ne 0 ]; then echo "Error: FAILED to copy $tstfile ." - + # Comment out this to CREATE expected file exit $EXIT_FAILURE fi @@ -362,23 +385,23 @@ CLEAN_TESTFILES_AND_TESTDIR() while [ $# -gt 0 ]; do case "$1" in -p) # reset the tool name and bin to run ph5diff tests - TESTNAME=ph5diff - H5DIFF=ph5diff # The tool name - H5DIFF_BIN=`pwd`/$H5DIFF - pmode=yes - shift - ;; + TESTNAME=ph5diff + H5DIFF=ph5diff # The tool name + H5DIFF_BIN=`pwd`/$H5DIFF + pmode=yes + shift + ;; -h) # print help page - echo "$0 [-p] [-h]" - echo " -p run ph5diff tests" - echo " -h print help page" - shift - exit 0 - ;; + echo "$0 [-p] [-h]" + echo " -p run ph5diff tests" + echo " -h print help page" + shift + exit 0 + ;; *) # unknown option echo "$0: Unknown option ($1)" - exit 1 - ;; + exit 1 + ;; esac done @@ -429,11 +452,11 @@ TOOLTEST() { # Run test. TESTING $H5DIFF $@ ( - #echo "#############################" - #echo "Expected output for '$H5DIFF $@'" - #echo "#############################" - cd $TESTDIR - eval $RUNCMD $H5DIFF_BIN "$@" + #echo "#############################" + #echo "Expected output for '$H5DIFF $@'" + #echo "#############################" + cd $TESTDIR + eval $RUNCMD $H5DIFF_BIN "$@" ) >$actual 2>$actual_err EXIT_CODE=$? # save actual and actual_err in case they are needed later. @@ -442,9 +465,9 @@ TOOLTEST() { cp $actual_err $actual_err_sav STDERR_FILTER $actual_err cat $actual_err >> $actual - # don't add exit code check in pmode, as it causes failure. (exit code + # don't add exit code check in pmode, as it causes failure. (exit code # is from mpirun not tool) - # if any problem occurs relate to an exit code, it will be caught in + # if any problem occurs relate to an exit code, it will be caught in # serial mode, so the test is fullfilled. if test $h5haveexitcode = 'yes' -a -z "$pmode"; then echo "EXIT CODE: $EXIT_CODE" >> $actual @@ -462,7 +485,7 @@ TOOLTEST() { nerrors="`expr $nerrors + 1`" test yes = "$verbose" && $DIFF $expect $actual |sed 's/^/ /' else - # parallel mode output are often of different ordering from serial + # parallel mode output are often of different ordering from serial # output. If the sorted expected and actual files compare the same, # it is safe to assume the actual output match the expected file. expect_sorted=expect_sorted @@ -473,44 +496,44 @@ TOOLTEST() { # is done by serial mode. grep -v "EXIT CODE:" $expect_sorted > $expect_sorted.noexit mv $expect_sorted.noexit $expect_sorted - if $CMP $expect_sorted $actual_sorted; then - echo " PASSED" - else - echo "*FAILED*" - nerrors="`expr $nerrors + 1`" - if test yes = "$verbose"; then - echo "====Expected result ($expect_sorted) differs from actual result ($actual_sorted)" - $DIFF $expect_sorted $actual_sorted |sed 's/^/ /' - echo "====The actual output ($actual_sav)" - sed 's/^/ /' < $actual_sav - echo "====The actual stderr ($actual_err_sav)" - sed 's/^/ /' < $actual_err_sav - echo "====End of actual stderr ($actual_err_sav)" - echo "" - fi - fi + if $CMP $expect_sorted $actual_sorted; then + echo " PASSED" + else + echo "*FAILED*" + nerrors="`expr $nerrors + 1`" + if test yes = "$verbose"; then + echo "====Expected result ($expect_sorted) differs from actual result ($actual_sorted)" + $DIFF $expect_sorted $actual_sorted |sed 's/^/ /' + echo "====The actual output ($actual_sav)" + sed 's/^/ /' < $actual_sav + echo "====The actual stderr ($actual_err_sav)" + sed 's/^/ /' < $actual_err_sav + echo "====End of actual stderr ($actual_err_sav)" + echo "" + fi + fi fi # Clean up output file if test -z "$HDF5_NOCLEANUP"; then - rm -f $actual $actual_err $actual_sav $actual_err_sav - rm -f $actual_sorted $expect_sorted + rm -f $actual $actual_err $actual_sav $actual_err_sav + rm -f $actual_sorted $expect_sorted fi } # Print a "SKIP" message SKIP() { - TESTING $H5DIFF $@ - echo " -SKIP-" + TESTING $H5DIFF $@ + echo " -SKIP-" } ############################################################################## -# The tests +# The tests # To avoid the printing of the complete full path of the test file, that hides -# all the other parameters for long paths, the printing of the command line +# all the other parameters for long paths, the printing of the command line # is done first in # TESTING with the name only of the test file $TOOL, not its full path $TESTFILE ############################################################################## @@ -525,13 +548,13 @@ COPY_TESTFILES_TO_TESTDIR TOOLTEST h5diff_10.txt -h # 1.1 normal mode -TOOLTEST h5diff_11.txt h5diff_basic1.h5 h5diff_basic2.h5 +TOOLTEST h5diff_11.txt h5diff_basic1.h5 h5diff_basic2.h5 # 1.2 normal mode with objects TOOLTEST h5diff_12.txt h5diff_basic1.h5 h5diff_basic2.h5 g1/dset1 g1/dset2 # 1.3 report mode -TOOLTEST h5diff_13.txt -r h5diff_basic1.h5 h5diff_basic2.h5 +TOOLTEST h5diff_13.txt -r h5diff_basic1.h5 h5diff_basic2.h5 # 1.4 report mode with objects TOOLTEST h5diff_14.txt -r h5diff_basic1.h5 h5diff_basic2.h5 g1/dset1 g1/dset2 @@ -549,7 +572,7 @@ TOOLTEST h5diff_16_2.txt --verbose --relative=0.02 h5diff_basic1.h5 h5diff_basic TOOLTEST h5diff_16_3.txt -v -p 0.02 h5diff_basic1.h5 h5diff_basic1.h5 g1/dset9 g1/dset10 # 1.7 verbose mode -TOOLTEST h5diff_17.txt -v h5diff_basic1.h5 h5diff_basic2.h5 +TOOLTEST h5diff_17.txt -v h5diff_basic1.h5 h5diff_basic2.h5 # 1.7 test 32-bit INFINITY TOOLTEST h5diff_171.txt -v h5diff_basic1.h5 h5diff_basic1.h5 /g1/fp19 /g1/fp19_COPY @@ -557,8 +580,8 @@ TOOLTEST h5diff_171.txt -v h5diff_basic1.h5 h5diff_basic1.h5 /g1/fp19 /g1/fp19_C # 1.7 test 64-bit INFINITY TOOLTEST h5diff_172.txt -v h5diff_basic1.h5 h5diff_basic1.h5 /g1/fp20 /g1/fp20_COPY -# 1.8 quiet mode -TOOLTEST h5diff_18.txt -q h5diff_basic1.h5 h5diff_basic2.h5 +# 1.8 quiet mode +TOOLTEST h5diff_18.txt -q h5diff_basic1.h5 h5diff_basic2.h5 # 1.8 -v and -q TOOLTEST h5diff_18_1.txt -v -q h5diff_basic1.h5 h5diff_basic2.h5 @@ -588,7 +611,7 @@ TOOLTEST h5diff_23.txt -v h5diff_types.h5 h5diff_types.h5 g1 g1 TOOLTEST h5diff_24.txt -v h5diff_types.h5 h5diff_types.h5 t1 t1 # 2.5 -TOOLTEST h5diff_25.txt -v h5diff_types.h5 h5diff_types.h5 l1 l1 +TOOLTEST h5diff_25.txt -v h5diff_types.h5 h5diff_types.h5 l1 l1 # 2.6 TOOLTEST h5diff_26.txt -v h5diff_types.h5 h5diff_types.h5 g1 g2 @@ -642,7 +665,7 @@ TOOLTEST h5diff_57.txt -v h5diff_dtypes.h5 h5diff_dtypes.h5 dset7a dset7b # 5.8 (region reference) TOOLTEST h5diff_58.txt -v h5diff_dset1.h5 h5diff_dset2.h5 refreg -# test for both dset and attr with same type but with different size +# test for both dset and attr with same type but with different size # ( HDDFV-7942 ) TOOLTEST h5diff_59.txt -v h5diff_dtypes.h5 h5diff_dtypes.h5 dset11a dset11b @@ -652,14 +675,14 @@ TOOLTEST h5diff_59.txt -v h5diff_dtypes.h5 h5diff_dtypes.h5 dset11a dset11b # 6.0: Check if the command line number of arguments is less than 3 -TOOLTEST h5diff_600.txt h5diff_basic1.h5 +TOOLTEST h5diff_600.txt h5diff_basic1.h5 -# 6.1: Check if non-exist object name is specified +# 6.1: Check if non-exist object name is specified TOOLTEST h5diff_601.txt h5diff_basic1.h5 h5diff_basic1.h5 nono_obj # ############################################################################## -# # -d +# # -d # ############################################################################## @@ -678,7 +701,7 @@ TOOLTEST h5diff_606.txt -d 0x1 h5diff_basic1.h5 h5diff_basic2.h5 g1/dset3 g1/dse # 6.7: string TOOLTEST h5diff_607.txt -d "1" h5diff_basic1.h5 h5diff_basic2.h5 g1/dset3 g1/dset4 -# 6.8: use system epsilon +# 6.8: use system epsilon TOOLTEST h5diff_608.txt --use-system-epsilon h5diff_basic1.h5 h5diff_basic2.h5 g1/dset3 g1/dset4 # 6.9: number larger than biggest difference @@ -762,7 +785,7 @@ TOOLTEST h5diff_631.txt -v --use-system-epsilon h5diff_basic1.h5 h5diff_basic1.h # ############################################################################## # 7. attributes # ############################################################################## -TOOLTEST h5diff_70.txt -v h5diff_attr1.h5 h5diff_attr2.h5 +TOOLTEST h5diff_70.txt -v h5diff_attr1.h5 h5diff_attr2.h5 # temporary test to verify HDF5-8625 TOOLTEST h5diff_tmp1.txt tmptest2.he5 tmptest.he5 # temporary test to verify HDF5-8639 @@ -772,10 +795,10 @@ TOOLTEST h5diff_tmp2.txt tmpSingleSiteBethe.output.h5 tmpSingleSiteBethe.referen # attrs with verbose option level # ################################################## -TOOLTEST h5diff_700.txt -v1 h5diff_attr1.h5 h5diff_attr2.h5 -TOOLTEST h5diff_701.txt -v2 h5diff_attr1.h5 h5diff_attr2.h5 -TOOLTEST h5diff_702.txt --verbose=1 h5diff_attr1.h5 h5diff_attr2.h5 -TOOLTEST h5diff_703.txt --verbose=2 h5diff_attr1.h5 h5diff_attr2.h5 +TOOLTEST h5diff_700.txt -v1 h5diff_attr1.h5 h5diff_attr2.h5 +TOOLTEST h5diff_701.txt -v2 h5diff_attr1.h5 h5diff_attr2.h5 +TOOLTEST h5diff_702.txt --verbose=1 h5diff_attr1.h5 h5diff_attr2.h5 +TOOLTEST h5diff_703.txt --verbose=2 h5diff_attr1.h5 h5diff_attr2.h5 # same attr number , all same attr name TOOLTEST h5diff_704.txt -v2 h5diff_attr_v_level1.h5 h5diff_attr_v_level2.h5 /g @@ -789,7 +812,7 @@ TOOLTEST h5diff_706.txt -v2 h5diff_attr_v_level1.h5 h5diff_attr_v_level2.h5 /nty # different attr number , same attr name (intersected) TOOLTEST h5diff_707.txt -v2 h5diff_attr_v_level1.h5 h5diff_attr_v_level2.h5 /g2 -# different attr number , all different attr name +# different attr number , all different attr name TOOLTEST h5diff_708.txt -v2 h5diff_attr_v_level1.h5 h5diff_attr_v_level2.h5 /g3 # when no attributes exist in both objects @@ -801,32 +824,32 @@ TOOLTEST h5diff_710.txt -v2 h5diff_attr_v_level1.h5 h5diff_attr_v_level2.h5 # ############################################################################## # 8. all dataset datatypes # ############################################################################## -TOOLTEST h5diff_80.txt -v h5diff_dset1.h5 h5diff_dset2.h5 +TOOLTEST h5diff_80.txt -v h5diff_dset1.h5 h5diff_dset2.h5 # 9. compare a file with itself TOOLTEST h5diff_90.txt -v h5diff_basic2.h5 h5diff_basic2.h5 # 10. read by hyperslab, print indexes -TOOLTEST h5diff_100.txt -v h5diff_hyper1.h5 h5diff_hyper2.h5 +TOOLTEST h5diff_100.txt -v h5diff_hyper1.h5 h5diff_hyper2.h5 # 11. floating point comparison # double value -TOOLTEST h5diff_101.txt -v h5diff_basic1.h5 h5diff_basic1.h5 g1/d1 g1/d2 +TOOLTEST h5diff_101.txt -v h5diff_basic1.h5 h5diff_basic1.h5 g1/d1 g1/d2 # float value -TOOLTEST h5diff_102.txt -v h5diff_basic1.h5 h5diff_basic1.h5 g1/fp1 g1/fp2 +TOOLTEST h5diff_102.txt -v h5diff_basic1.h5 h5diff_basic1.h5 g1/fp1 g1/fp2 -# with --use-system-epsilon for double value -TOOLTEST h5diff_103.txt -v --use-system-epsilon h5diff_basic1.h5 h5diff_basic1.h5 g1/d1 g1/d2 +# with --use-system-epsilon for double value +TOOLTEST h5diff_103.txt -v --use-system-epsilon h5diff_basic1.h5 h5diff_basic1.h5 g1/d1 g1/d2 # with --use-system-epsilon for float value -TOOLTEST h5diff_104.txt -v --use-system-epsilon h5diff_basic1.h5 h5diff_basic1.h5 g1/fp1 g1/fp2 +TOOLTEST h5diff_104.txt -v --use-system-epsilon h5diff_basic1.h5 h5diff_basic1.h5 g1/fp1 g1/fp2 # not comparable -c flag -TOOLTEST h5diff_200.txt h5diff_basic2.h5 h5diff_basic2.h5 g2/dset1 g2/dset2 +TOOLTEST h5diff_200.txt h5diff_basic2.h5 h5diff_basic2.h5 g2/dset1 g2/dset2 -TOOLTEST h5diff_201.txt -c h5diff_basic2.h5 h5diff_basic2.h5 g2/dset1 g2/dset2 +TOOLTEST h5diff_201.txt -c h5diff_basic2.h5 h5diff_basic2.h5 g2/dset1 g2/dset2 TOOLTEST h5diff_202.txt -c h5diff_basic2.h5 h5diff_basic2.h5 g2/dset2 g2/dset3 @@ -842,9 +865,9 @@ TOOLTEST h5diff_206.txt -c h5diff_basic2.h5 h5diff_basic2.h5 g2/dset7 g2/dset8 TOOLTEST h5diff_207.txt -c h5diff_basic2.h5 h5diff_basic2.h5 g2/dset8 g2/dset9 # not comparable in dataspace of zero dimension size -TOOLTEST h5diff_208.txt -c h5diff_dset_zero_dim_size1.h5 h5diff_dset_zero_dim_size2.h5 +TOOLTEST h5diff_208.txt -c h5diff_dset_zero_dim_size1.h5 h5diff_dset_zero_dim_size2.h5 -# non-comparable dataset with comparable attribute, and other comparable datasets. +# non-comparable dataset with comparable attribute, and other comparable datasets. # Also test non-compatible attributes with different type, dimention, rank. # All the comparables should display differences. TOOLTEST h5diff_220.txt -c non_comparables1.h5 non_comparables2.h5 /g1 @@ -862,7 +885,7 @@ TOOLTEST h5diff_222.txt -c non_comparables1.h5 non_comparables2.h5 TOOLTEST h5diff_223.txt -c non_comparables1.h5 non_comparables2.h5 /diffobjtypes # swap files TOOLTEST h5diff_224.txt -c non_comparables2.h5 non_comparables1.h5 /diffobjtypes - + # ############################################################################## # # Links compare without --follow-symlinks nor --no-dangling-links # ############################################################################## @@ -958,28 +981,28 @@ TOOLTEST h5diff_425.txt --follow-symlinks -v h5diff_ext2softlink_src.h5 h5diff_e TOOLTEST h5diff_450.txt --follow-symlinks -v h5diff_danglelinks1.h5 h5diff_danglelinks2.h5 # dangling links --follow-symlinks and --no-dangling-links (FILE to FILE) -TOOLTEST h5diff_451.txt --follow-symlinks -v --no-dangling-links h5diff_danglelinks1.h5 h5diff_danglelinks2.h5 +TOOLTEST h5diff_451.txt --follow-symlinks -v --no-dangling-links h5diff_danglelinks1.h5 h5diff_danglelinks2.h5 # try --no-dangling-links without --follow-symlinks options TOOLTEST h5diff_452.txt --no-dangling-links h5diff_softlinks.h5 h5diff_softlinks.h5 # dangling link found for soft links (FILE to FILE) -TOOLTEST h5diff_453.txt --follow-symlinks -v --no-dangling-links h5diff_softlinks.h5 h5diff_softlinks.h5 +TOOLTEST h5diff_453.txt --follow-symlinks -v --no-dangling-links h5diff_softlinks.h5 h5diff_softlinks.h5 # dangling link found for soft links (obj to obj) -TOOLTEST h5diff_454.txt --follow-symlinks -v --no-dangling-links h5diff_softlinks.h5 h5diff_softlinks.h5 /softlink_dset2 /softlink_noexist +TOOLTEST h5diff_454.txt --follow-symlinks -v --no-dangling-links h5diff_softlinks.h5 h5diff_softlinks.h5 /softlink_dset2 /softlink_noexist # dangling link found for soft links (obj to obj) Both dangle links -TOOLTEST h5diff_455.txt --follow-symlinks -v --no-dangling-links h5diff_softlinks.h5 h5diff_softlinks.h5 /softlink_noexist /softlink_noexist +TOOLTEST h5diff_455.txt --follow-symlinks -v --no-dangling-links h5diff_softlinks.h5 h5diff_softlinks.h5 /softlink_noexist /softlink_noexist # dangling link found for ext links (FILE to FILE) -TOOLTEST h5diff_456.txt --follow-symlinks -v --no-dangling-links h5diff_extlink_src.h5 h5diff_extlink_src.h5 +TOOLTEST h5diff_456.txt --follow-symlinks -v --no-dangling-links h5diff_extlink_src.h5 h5diff_extlink_src.h5 # dangling link found for ext links (obj to obj). target file exist -TOOLTEST h5diff_457.txt --follow-symlinks -v --no-dangling-links h5diff_extlink_src.h5 h5diff_extlink_src.h5 /ext_link_dset1 /ext_link_noexist1 +TOOLTEST h5diff_457.txt --follow-symlinks -v --no-dangling-links h5diff_extlink_src.h5 h5diff_extlink_src.h5 /ext_link_dset1 /ext_link_noexist1 # dangling link found for ext links (obj to obj). target file NOT exist -TOOLTEST h5diff_458.txt --follow-symlinks -v --no-dangling-links h5diff_extlink_src.h5 h5diff_extlink_src.h5 /ext_link_dset1 /ext_link_noexist2 +TOOLTEST h5diff_458.txt --follow-symlinks -v --no-dangling-links h5diff_extlink_src.h5 h5diff_extlink_src.h5 /ext_link_dset1 /ext_link_noexist2 # dangling link found for ext links (obj to obj). Both dangle links TOOLTEST h5diff_459.txt --follow-symlinks -v --no-dangling-links h5diff_extlink_src.h5 h5diff_extlink_src.h5 /ext_link_noexist1 /ext_link_noexist2 @@ -993,14 +1016,14 @@ TOOLTEST h5diff_466.txt -v --follow-symlinks h5diff_danglelinks1.h5 h5diff_dangl # soft link vs. soft dangling TOOLTEST h5diff_467.txt -v --follow-symlinks h5diff_danglelinks1.h5 h5diff_danglelinks2.h5 /soft_link2 # ext dangling vs. ext dangling -TOOLTEST h5diff_468.txt -v --follow-symlinks h5diff_danglelinks1.h5 h5diff_danglelinks2.h5 /ext_link4 +TOOLTEST h5diff_468.txt -v --follow-symlinks h5diff_danglelinks1.h5 h5diff_danglelinks2.h5 /ext_link4 # ext link vs. ext dangling TOOLTEST h5diff_469.txt -v --follow-symlinks h5diff_danglelinks1.h5 h5diff_danglelinks2.h5 /ext_link2 #---------------------------------------- -# dangling links without follow symlink +# dangling links without follow symlink # (HDFFV-7998) -# test - soft dangle links (same and different paths), +# test - soft dangle links (same and different paths), # - external dangle links (same and different paths) TOOLTEST h5diff_471.txt -v h5diff_danglelinks1.h5 h5diff_danglelinks2.h5 TOOLTEST h5diff_472.txt -v h5diff_danglelinks1.h5 h5diff_danglelinks2.h5 /soft_link1 @@ -1011,7 +1034,7 @@ TOOLTEST h5diff_475.txt -v h5diff_danglelinks1.h5 h5diff_danglelinks2.h5 /ext_li # ############################################################################## # # test for group diff recursivly # ############################################################################## -# root +# root TOOLTEST h5diff_500.txt -v h5diff_grp_recurse1.h5 h5diff_grp_recurse2.h5 / / TOOLTEST h5diff_501.txt -v --follow-symlinks h5diff_grp_recurse1.h5 h5diff_grp_recurse2.h5 / / @@ -1045,7 +1068,7 @@ TOOLTEST h5diff_513.txt -v h5diff_grp_recurse1.h5 h5diff_grp_recurse2.h5 /slink_ TOOLTEST h5diff_514.txt -v --follow-symlinks h5diff_grp_recurse1.h5 h5diff_grp_recurse2.h5 /slink_grp10 /slink_grp11 ############################################################################### -# Test for group recursive diff via multi-linked external links +# Test for group recursive diff via multi-linked external links # With follow-symlinks, file h5diff_grp_recurse_ext1.h5 and h5diff_grp_recurse_ext2-1.h5 should # be same with the external links. ############################################################################### @@ -1068,7 +1091,7 @@ TOOLTEST h5diff_480.txt -v --exclude-path /group1/dset3 h5diff_exclude1-1.h5 h5d TOOLTEST h5diff_481.txt -v h5diff_exclude1-1.h5 h5diff_exclude1-2.h5 # -# Different structure, different names. +# Different structure, different names. # # Exclude all the different objects. Expect return - same TOOLTEST h5diff_482.txt -v --exclude-path "/group1" --exclude-path "/dset1" h5diff_exclude2-1.h5 h5diff_exclude2-2.h5 @@ -1099,9 +1122,9 @@ TOOLTEST h5diff_530.txt -v h5diff_comp_vl_strs.h5 h5diff_comp_vl_strs.h5 /group TOOLTEST h5diff_540.txt -v compounds_array_vlen1.h5 compounds_array_vlen2.h5 # ############################################################################## -# # Test mutually exclusive options +# # Test mutually exclusive options # ############################################################################## -# Test with -d , -p and --use-system-epsilon. +# Test with -d , -p and --use-system-epsilon. TOOLTEST h5diff_640.txt -v -d 5 -p 0.05 --use-system-epsilon h5diff_basic1.h5 h5diff_basic2.h5 /g1/dset3 /g1/dset4 TOOLTEST h5diff_641.txt -v -d 5 -p 0.05 h5diff_basic1.h5 h5diff_basic2.h5 /g1/dset3 /g1/dset4 TOOLTEST h5diff_642.txt -v -p 0.05 -d 5 h5diff_basic1.h5 h5diff_basic2.h5 /g1/dset3 /g1/dset4 @@ -1110,6 +1133,13 @@ TOOLTEST h5diff_644.txt -v --use-system-epsilon -d 5 h5diff_basic1.h5 h5diff_bas TOOLTEST h5diff_645.txt -v -p 0.05 --use-system-epsilon h5diff_basic1.h5 h5diff_basic2.h5 /g1/dset3 /g1/dset4 TOOLTEST h5diff_646.txt -v --use-system-epsilon -p 0.05 h5diff_basic1.h5 h5diff_basic2.h5 /g1/dset3 /g1/dset4 +# ############################################################################## +# VDS tests +# ############################################################################## +TOOLTEST h5diff_v1.txt -v 1_vds.h5 2_vds.h5 +TOOLTEST h5diff_v2.txt -r 1_vds.h5 2_vds.h5 +TOOLTEST h5diff_v3.txt -c 1_vds.h5 2_vds.h5 + # ############################################################################## # # END diff --git a/tools/h5dump/CMakeLists.txt b/tools/h5dump/CMakeLists.txt index 47ba7a8..be08e2a 100644 --- a/tools/h5dump/CMakeLists.txt +++ b/tools/h5dump/CMakeLists.txt @@ -39,6 +39,8 @@ if (BUILD_TESTING) include (CMakeTestsPBITS.cmake) + include (CMakeTestsVDS.cmake) + include (CMakeTestsXML.cmake) endif (BUILD_TESTING) diff --git a/tools/h5dump/CMakeTestsVDS.cmake b/tools/h5dump/CMakeTestsVDS.cmake new file mode 100644 index 0000000..58287fa --- /dev/null +++ b/tools/h5dump/CMakeTestsVDS.cmake @@ -0,0 +1,238 @@ + +############################################################################## +############################################################################## +### T E S T I N G ### +############################################################################## +############################################################################## + + # -------------------------------------------------------------------- + # VDS + # -------------------------------------------------------------------- + #-- Copy all the HDF5 files from the test directory into the source directory + set (HDF5_REFERENCE_VDS + tvds-1.ddl + tvds-2.ddl + tvds-3_1.ddl + tvds-3_2.ddl + tvds-4.ddl + tvds-5.ddl + tvds_layout-1.ddl + tvds_layout-2.ddl + tvds_layout-3_1.ddl + tvds_layout-3_2.ddl + tvds_layout-4.ddl + tvds_layout-5.ddl + ) + set (HDF5_REFERENCE_TEST_VDS + 1_a.h5 + 1_b.h5 + 1_c.h5 + 1_d.h5 + 1_e.h5 + 1_f.h5 + 1_vds.h5 + 2_a.h5 + 2_b.h5 + 2_c.h5 + 2_d.h5 + 2_e.h5 + 2_vds.h5 + 3_1_vds.h5 + 3_2_vds.h5 + 4_0.h5 + 4_1.h5 + 4_2.h5 + 4_vds.h5 + 5_a.h5 + 5_b.h5 + 5_c.h5 + 5_vds.h5 + ) + set (HDF5_ERROR_REFERENCE_VDS + ) + + foreach (vds_h5_file ${HDF5_REFERENCE_TEST_VDS}) + GET_FILENAME_COMPONENT(fname "${vds_h5_file}" NAME) + set (dest "${PROJECT_BINARY_DIR}/testfiles/vds/${fname}") + #message (STATUS " Copying ${vds_h5_file}") + add_custom_command ( + TARGET h5dump + POST_BUILD + COMMAND ${CMAKE_COMMAND} + ARGS -E copy_if_different ${HDF5_TOOLS_SRC_DIR}/testfiles/vds/${vds_h5_file} ${dest} + ) + endforeach (vds_h5_file ${HDF5_REFERENCE_TEST_VDS}) + + + foreach (ddl_vds ${HDF5_REFERENCE_VDS}) + GET_FILENAME_COMPONENT(fname "${ddl_vds}" NAME) + set (ddldest "${PROJECT_BINARY_DIR}/testfiles/vds/${fname}") + #message (STATUS " Copying ${ddl_vds}") + add_custom_command ( + TARGET h5dump + POST_BUILD + COMMAND ${CMAKE_COMMAND} + ARGS -E copy_if_different ${HDF5_TOOLS_SRC_DIR}/testfiles/vds/${ddl_vds} ${ddldest} + ) + endforeach (ddl_vds ${HDF5_REFERENCE_VDS}) + + foreach (ddl_vds ${HDF5_ERROR_REFERENCE_VDS}) + GET_FILENAME_COMPONENT(fname "${ddl_vds}" NAME) + set (ddldest "${PROJECT_BINARY_DIR}/testfiles/vds/${fname}") + #message (STATUS " Copying ${ddl_vds}") + add_custom_command ( + TARGET h5dump + POST_BUILD + COMMAND ${CMAKE_COMMAND} + ARGS -E copy_if_different ${PROJECT_SOURCE_DIR}/errfiles/${ddl_vds} ${ddldest} + ) + endforeach (ddl_vds ${HDF5_ERROR_REFERENCE_VDS}) + +############################################################################## +############################################################################## +### T H E T E S T S M A C R O S ### +############################################################################## +############################################################################## + + MACRO (ADD_H5_VDS_TEST resultfile resultcode) + # If using memchecker add tests without using scripts + if (HDF5_ENABLE_USING_MEMCHECKER) + add_test (NAME H5DUMP-${resultfile} COMMAND $<TARGET_FILE:h5dump> ${ARGN}) + set_tests_properties (H5DUMP-${resultfile} PROPERTIES WORKING_DIRECTORY "${PROJECT_BINARY_DIR}/testfilesvds") + if (NOT ${resultcode} STREQUAL "0") + set_tests_properties (H5DUMP-${resultfile} PROPERTIES WILL_FAIL "true") + endif (NOT ${resultcode} STREQUAL "0") + if (NOT "${last_vds_test}" STREQUAL "") + set_tests_properties (H5DUMP-${resultfile} PROPERTIES DEPENDS ${last_VDS_test}) + endif (NOT "${last_vds_test}" STREQUAL "") + else (HDF5_ENABLE_USING_MEMCHECKER) + add_test ( + NAME H5DUMP-${resultfile}-clear-objects + COMMAND ${CMAKE_COMMAND} + -E remove ${resultfile}.out ${resultfile}.out.err + ) + set_tests_properties (H5DUMP-${resultfile}-clear-objects PROPERTIES WORKING_DIRECTORY "${PROJECT_BINARY_DIR}/testfiles/vds") + add_test ( + NAME H5DUMP-${resultfile} + COMMAND "${CMAKE_COMMAND}" + -D "TEST_PROGRAM=$<TARGET_FILE:h5dump>" + -D "TEST_ARGS:STRING=${ARGN}" + -D "TEST_FOLDER=${PROJECT_BINARY_DIR}/testfiles/vds" + -D "TEST_OUTPUT=${resultfile}.out" + -D "TEST_EXPECT=${resultcode}" + -D "TEST_REFERENCE=${resultfile}.ddl" + -P "${HDF_RESOURCES_EXT_DIR}/runTest.cmake" + ) + set_tests_properties (H5DUMP-${resultfile} PROPERTIES DEPENDS "H5DUMP-${resultfile}-clear-objects") + endif (HDF5_ENABLE_USING_MEMCHECKER) + ENDMACRO (ADD_H5_VDS_TEST file) + + MACRO (ADD_H5_VDS_LAYOUT resultfile resultcode) + # If using memchecker add tests without using scripts + if (HDF5_ENABLE_USING_MEMCHECKER) + add_test (NAME H5DUMP-${resultfile} COMMAND $<TARGET_FILE:h5dump> -p ${ARGN}) + set_tests_properties (H5DUMP-${resultfile} PROPERTIES WORKING_DIRECTORY "${PROJECT_BINARY_DIR}/testfilesvds") + if (NOT ${resultcode} STREQUAL "0") + set_tests_properties (H5DUMP-${resultfile} PROPERTIES WILL_FAIL "true") + endif (NOT ${resultcode} STREQUAL "0") + if (NOT "${last_vds_test}" STREQUAL "") + set_tests_properties (H5DUMP-${resultfile} PROPERTIES DEPENDS ${last_VDS_test}) + endif (NOT "${last_vds_test}" STREQUAL "") + else (HDF5_ENABLE_USING_MEMCHECKER) + add_test ( + NAME H5DUMP-${resultfile}-clear-objects + COMMAND ${CMAKE_COMMAND} + -E remove ${resultfile}.out ${resultfile}.out.err + ) + set_tests_properties (H5DUMP-${resultfile}-clear-objects PROPERTIES WORKING_DIRECTORY "${PROJECT_BINARY_DIR}/testfiles/vds") + add_test ( + NAME H5DUMP-${resultfile} + COMMAND "${CMAKE_COMMAND}" + -D "TEST_PROGRAM=$<TARGET_FILE:h5dump>" + -D "TEST_ARGS:STRING=-p;${ARGN}" + -D "TEST_FOLDER=${PROJECT_BINARY_DIR}/testfiles/vds" + -D "TEST_OUTPUT=${resultfile}.out" + -D "TEST_EXPECT=${resultcode}" + -D "TEST_REFERENCE=${resultfile}.ddl" + -P "${HDF_RESOURCES_EXT_DIR}/runTest.cmake" + ) + set_tests_properties (H5DUMP-${resultfile} PROPERTIES DEPENDS "H5DUMP-${resultfile}-clear-objects") + endif (HDF5_ENABLE_USING_MEMCHECKER) + ENDMACRO (ADD_H5_VDS_LAYOUT file) + +############################################################################## +############################################################################## +### T H E T E S T S ### +############################################################################## +############################################################################## + + if (HDF5_ENABLE_USING_MEMCHECKER) + # Remove any output file left over from previous test run + add_test ( + NAME H5DUMP_VDS-clearall-objects + COMMAND ${CMAKE_COMMAND} + -E remove + tvds-1.out + tvds-1.out.err + tvds-2.out + tvds-2.out.err + tvds-3_1.out + tvds-3_1.out.err + tvds-3_2.out + tvds-3_2.out.err + tvds-4.out + tvds-4.out.err + tvds-5.out + tvds-5.out.err + tvds_layout-1.out + tvds_layout-1.out.err + tvds_layout-2.out + tvds_layout-2.out.err + tvds_layout-3_1.out + tvds_layout-3_1.out.err + tvds_layout-3_2.out + tvds_layout-3_2.out.err + tvds_layout-4.out + tvds_layout-4.out.err + tvds_layout-5.out + tvds_layout-5.out.err + ) + set_tests_properties (H5DUMP_VDS-clearall-objects PROPERTIES WORKING_DIRECTORY "${PROJECT_BINARY_DIR}/testfiles/vds") + if (NOT "${last_vds_test}" STREQUAL "") + set_tests_properties (H5DUMP_VDS-clearall-objects PROPERTIES DEPENDS ${last_vds_test}) + endif (NOT "${last_vds_test}" STREQUAL "") + set (last_VDS_test "H5DUMP_VDS-clearall-objects") + endif (HDF5_ENABLE_USING_MEMCHECKER) + +# See which filters are usable (and skip tests for filters we +# don't have). Do this by searching H5pubconf.h to see which +# filters are defined. + +# detect whether the encoder is present. + if (H5_HAVE_FILTER_DEFLATE) + set (USE_FILTER_DEFLATE "true") + endif (H5_HAVE_FILTER_DEFLATE) + + if (H5_HAVE_FILTER_SZIP) + set (USE_FILTER_SZIP "true") + endif (H5_HAVE_FILTER_SZIP) + + # Data read + if (USE_FILTER_DEFLATE) + ADD_H5_VDS_TEST (tvds-1 0 --enable-error-stack 1_vds.h5) + ADD_H5_VDS_TEST (tvds-2 0 --enable-error-stack 2_vds.h5) + ADD_H5_VDS_TEST (tvds-3_1 0 --enable-error-stack 3_1_vds.h5) + ADD_H5_VDS_TEST (tvds-3_2 0 --enable-error-stack 3_2_vds.h5) + ADD_H5_VDS_TEST (tvds-4 0 --enable-error-stack 4_vds.h5) + ADD_H5_VDS_TEST (tvds-5 0 --enable-error-stack 5_vds.h5) + endif (USE_FILTER_DEFLATE) + + # Layout read + if (USE_FILTER_DEFLATE) + ADD_H5_VDS_LAYOUT (tvds_layout-1 0 --enable-error-stack 1_vds.h5) + ADD_H5_VDS_LAYOUT (tvds_layout-2 0 --enable-error-stack 2_vds.h5) + ADD_H5_VDS_LAYOUT (tvds_layout-3_1 0 --enable-error-stack 3_1_vds.h5) + ADD_H5_VDS_LAYOUT (tvds_layout-3_2 0 --enable-error-stack 3_2_vds.h5) + ADD_H5_VDS_LAYOUT (tvds_layout-4 0 --enable-error-stack 4_vds.h5) + ADD_H5_VDS_LAYOUT (tvds_layout-5 0 --enable-error-stack 5_vds.h5) + endif (USE_FILTER_DEFLATE) diff --git a/tools/h5dump/Makefile.am b/tools/h5dump/Makefile.am index cee4801..93ba195 100644 --- a/tools/h5dump/Makefile.am +++ b/tools/h5dump/Makefile.am @@ -25,7 +25,7 @@ AM_CPPFLAGS+=-I$(top_srcdir)/src -I$(top_srcdir)/tools/lib # Test programs and scripts TEST_PROG=h5dumpgentest -TEST_SCRIPT=testh5dump.sh testh5dumppbits.sh testh5dumpxml.sh +TEST_SCRIPT=testh5dump.sh testh5dumppbits.sh testh5dumpvds.sh testh5dumpxml.sh check_PROGRAMS=$(TEST_PROG) binread check_SCRIPTS=$(TEST_SCRIPT) diff --git a/tools/h5dump/Makefile.in b/tools/h5dump/Makefile.in index 208e4e0..8c54492 100644 --- a/tools/h5dump/Makefile.in +++ b/tools/h5dump/Makefile.in @@ -99,8 +99,8 @@ DIST_COMMON = $(top_srcdir)/config/commence.am \ $(top_srcdir)/config/conclude.am $(srcdir)/Makefile.in \ $(srcdir)/Makefile.am $(top_srcdir)/bin/mkinstalldirs \ $(srcdir)/testh5dump.sh.in $(srcdir)/testh5dumppbits.sh.in \ - $(srcdir)/testh5dumpxml.sh.in $(top_srcdir)/bin/depcomp \ - $(top_srcdir)/bin/test-driver + $(srcdir)/testh5dumpvds.sh.in $(srcdir)/testh5dumpxml.sh.in \ + $(top_srcdir)/bin/depcomp $(top_srcdir)/bin/test-driver check_PROGRAMS = $(am__EXEEXT_1) binread$(EXEEXT) bin_PROGRAMS = h5dump$(EXEEXT) TESTS = $(am__EXEEXT_1) $(TEST_SCRIPT) @@ -113,7 +113,8 @@ am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ mkinstalldirs = $(SHELL) $(top_srcdir)/bin/mkinstalldirs CONFIG_HEADER = $(top_builddir)/src/H5config.h \ $(top_builddir)/fortran/src/H5config_f.inc -CONFIG_CLEAN_FILES = testh5dump.sh testh5dumppbits.sh testh5dumpxml.sh +CONFIG_CLEAN_FILES = testh5dump.sh testh5dumppbits.sh testh5dumpvds.sh \ + testh5dumpxml.sh CONFIG_CLEAN_VPATH_FILES = am__installdirs = "$(DESTDIR)$(bindir)" am__EXEEXT_1 = h5dumpgentest$(EXEEXT) @@ -693,7 +694,7 @@ CHECK_CLEANFILES = *.chkexe *.chklog *.clog *.clog2 *.h5 *.bin # Test programs and scripts TEST_PROG = h5dumpgentest -TEST_SCRIPT = testh5dump.sh testh5dumppbits.sh testh5dumpxml.sh +TEST_SCRIPT = testh5dump.sh testh5dumppbits.sh testh5dumpvds.sh testh5dumpxml.sh check_SCRIPTS = $(TEST_SCRIPT) SCRIPT_DEPEND = h5dump$(EXEEXT) @@ -765,6 +766,8 @@ testh5dump.sh: $(top_builddir)/config.status $(srcdir)/testh5dump.sh.in cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ testh5dumppbits.sh: $(top_builddir)/config.status $(srcdir)/testh5dumppbits.sh.in cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ +testh5dumpvds.sh: $(top_builddir)/config.status $(srcdir)/testh5dumpvds.sh.in + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ testh5dumpxml.sh: $(top_builddir)/config.status $(srcdir)/testh5dumpxml.sh.in cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ install-binPROGRAMS: $(bin_PROGRAMS) diff --git a/tools/h5dump/testh5dumpvds.sh.in b/tools/h5dump/testh5dumpvds.sh.in new file mode 100644 index 0000000..b15606f --- /dev/null +++ b/tools/h5dump/testh5dumpvds.sh.in @@ -0,0 +1,505 @@ +#! /bin/sh +# +# Copyright by The HDF Group. +# Copyright by the Board of Trustees of the University of Illinois. +# All rights reserved. +# +# This file is part of HDF5. The full HDF5 copyright notice, including +# terms governing use, modification, and redistribution, is contained in +# the files COPYING and Copyright.html. COPYING can be found at the root +# of the source code distribution tree; Copyright.html can be found at the +# root level of an installed copy of the electronic HDF5 document set and +# is linked from the top-level documents page. It can also be found at +# http://hdfgroup.org/HDF5/doc/Copyright.html. If you do not have +# access to either file, you may request a copy from help@hdfgroup.org. +# +# Tests for the h5dump tool with vds type files + +srcdir=@srcdir@ + +# Determine which filters are available +USE_FILTER_SZIP="@USE_FILTER_SZIP@" +USE_FILTER_DEFLATE="@USE_FILTER_DEFLATE@" + +TESTNAME=h5dump +EXIT_SUCCESS=0 +EXIT_FAILURE=1 + +DUMPER=h5dump # The tool name +DUMPER_BIN=`pwd`/$DUMPER # The path of the tool binary + +H5DIFF=../h5diff/h5diff # The h5diff tool name +H5DIFF_BIN=`pwd`/$H5DIFF # The path of the h5diff tool binary + +H5IMPORT=../h5import/h5import # The h5import tool name +H5IMPORT_BIN=`pwd`/$H5IMPORT # The path of the h5import tool binary + +RM='rm -rf' +CMP='cmp -s' +DIFF='diff -c' +CP='cp' +DIRNAME='dirname' +LS='ls' +AWK='awk' + +nerrors=0 +verbose=yes + +# source dirs +SRC_TOOLS="$srcdir/../" + +SRC_TOOLS_TESTFILES="$SRC_TOOLS/testfiles" +# testfiles source dirs for tools +SRC_H5LS_TESTFILES="$SRC_TOOLS_TESTFILES" +SRC_H5DUMP_TESTFILES="$SRC_TOOLS_TESTFILES" +SRC_H5DUMP_ERRORFILES="$srcdir/errfiles" +SRC_H5DIFF_TESTFILES="$SRC_TOOLS/h5diff/testfiles" +SRC_H5COPY_TESTFILES="$SRC_TOOLS/h5copy/testfiles" +SRC_H5REPACK_TESTFILES="$SRC_TOOLS/h5repack/testfiles" +SRC_H5JAM_TESTFILES="$SRC_TOOLS/h5jam/testfiles" +SRC_H5STAT_TESTFILES="$SRC_TOOLS/h5stat/testfiles" +SRC_H5IMPORT_TESTFILES="$SRC_TOOLS/h5import/testfiles" + +TEST_P_DIR=./testfiles +TESTDIR=./testfiles/vds +test -d $TEST_P_DIR || mkdir -p $TEST_P_DIR +test -d $TESTDIR || mkdir -p $TESTDIR + +###################################################################### +# test files +# -------------------------------------------------------------------- +# All the test files copy from source directory to test directory +# NOTE: Keep this framework to add/remove test files. +# Any test files from other tools can be used in this framework. +# This list are also used for checking exist. +# Comment '#' without space can be used. +# -------------------------------------------------------------------- +LIST_HDF5_TEST_FILES=" +$SRC_H5DUMP_TESTFILES/vds/1_a.h5 +$SRC_H5DUMP_TESTFILES/vds/1_b.h5 +$SRC_H5DUMP_TESTFILES/vds/1_c.h5 +$SRC_H5DUMP_TESTFILES/vds/1_d.h5 +$SRC_H5DUMP_TESTFILES/vds/1_e.h5 +$SRC_H5DUMP_TESTFILES/vds/1_f.h5 +$SRC_H5DUMP_TESTFILES/vds/1_vds.h5 +$SRC_H5DUMP_TESTFILES/vds/2_a.h5 +$SRC_H5DUMP_TESTFILES/vds/2_b.h5 +$SRC_H5DUMP_TESTFILES/vds/2_c.h5 +$SRC_H5DUMP_TESTFILES/vds/2_d.h5 +$SRC_H5DUMP_TESTFILES/vds/2_e.h5 +$SRC_H5DUMP_TESTFILES/vds/2_vds.h5 +$SRC_H5DUMP_TESTFILES/vds/3_1_vds.h5 +$SRC_H5DUMP_TESTFILES/vds/3_2_vds.h5 +$SRC_H5DUMP_TESTFILES/vds/4_0.h5 +$SRC_H5DUMP_TESTFILES/vds/4_1.h5 +$SRC_H5DUMP_TESTFILES/vds/4_2.h5 +$SRC_H5DUMP_TESTFILES/vds/4_vds.h5 +$SRC_H5DUMP_TESTFILES/vds/5_a.h5 +$SRC_H5DUMP_TESTFILES/vds/5_b.h5 +$SRC_H5DUMP_TESTFILES/vds/5_c.h5 +$SRC_H5DUMP_TESTFILES/vds/5_vds.h5 +" + +LIST_OTHER_TEST_FILES=" +$SRC_H5DUMP_TESTFILES/vds/tvds-1.ddl +$SRC_H5DUMP_TESTFILES/vds/tvds-2.ddl +$SRC_H5DUMP_TESTFILES/vds/tvds-3_1.ddl +$SRC_H5DUMP_TESTFILES/vds/tvds-3_2.ddl +$SRC_H5DUMP_TESTFILES/vds/tvds-4.ddl +$SRC_H5DUMP_TESTFILES/vds/tvds-5.ddl +$SRC_H5DUMP_TESTFILES/vds/tvds_layout-1.ddl +$SRC_H5DUMP_TESTFILES/vds/tvds_layout-2.ddl +$SRC_H5DUMP_TESTFILES/vds/tvds_layout-3_1.ddl +$SRC_H5DUMP_TESTFILES/vds/tvds_layout-3_2.ddl +$SRC_H5DUMP_TESTFILES/vds/tvds_layout-4.ddl +$SRC_H5DUMP_TESTFILES/vds/tvds_layout-5.ddl +" + +LIST_ERROR_TEST_FILES=" +" + +# +# copy test files and expected output files from source dirs to test dir +# +COPY_TESTFILES="$LIST_HDF5_TEST_FILES $LIST_OTHER_TEST_FILES $LIST_ERROR_TEST_FILES" + +COPY_TESTFILES_TO_TESTDIR() +{ + # copy test files. Used -f to make sure get a new copy + for tstfile in $COPY_TESTFILES + do + # ignore '#' comment + echo $tstfile | tr -d ' ' | grep '^#' > /dev/null + RET=$? + if [ $RET -eq 1 ]; then + # skip cp if srcdir is same as destdir + # this occurs when build/test performed in source dir and + # make cp fail + SDIR=`$DIRNAME $tstfile` + INODE_SDIR=`$LS -i -d $SDIR | $AWK -F' ' '{print $1}'` + INODE_DDIR=`$LS -i -d $TESTDIR | $AWK -F' ' '{print $1}'` + if [ "$INODE_SDIR" != "$INODE_DDIR" ]; then + $CP -f $tstfile $TESTDIR + if [ $? -ne 0 ]; then + echo "Error: FAILED to copy $tstfile ." + + # Comment out this to CREATE expected file + exit $EXIT_FAILURE + fi + fi + fi + done +} + +CLEAN_TESTFILES_AND_TESTDIR() +{ + # skip rm if srcdir is same as destdir + # this occurs when build/test performed in source dir and + # make cp fail + SDIR=`$DIRNAME $tstfile` + INODE_SDIR=`$LS -i -d $SDIR | $AWK -F' ' '{print $1}'` + INODE_DDIR=`$LS -i -d $TESTDIR | $AWK -F' ' '{print $1}'` + if [ "$INODE_SDIR" != "$INODE_DDIR" ]; then + $RM $TESTDIR + fi +} + +# Print a line-line message left justified in a field of 70 characters +# beginning with the word "Testing". +# +TESTING() { + SPACES=" " + echo "Testing $* $SPACES" | cut -c1-70 | tr -d '\012' +} + +# Source in the output filter function definitions. +. $srcdir/../../bin/output_filter.sh + +# Run a test and print PASS or *FAIL*. If a test fails then increment +# the `nerrors' global variable and (if $verbose is set) display the +# difference between the actual output and the expected output. The +# expected output is given as the first argument to this function and +# the actual output file is calculated by replacing the `.ddl' with +# `.out'. The actual output is not removed if $HDF5_NOCLEANUP has a +# non-zero value. +# +TOOLTEST() { + expect="$TESTDIR/$1" + actual="$TESTDIR/`basename $1 .ddl`.out" + actual_err="$TESTDIR/`basename $1 .ddl`.err" + actual_sav=${actual}-sav + actual_err_sav=${actual_err}-sav + shift + + # Run test. + TESTING $DUMPER $@ + ( + cd $TESTDIR + $RUNSERIAL $DUMPER_BIN "$@" + ) >$actual 2>$actual_err + + # save actual and actual_err in case they are needed later. + cp $actual $actual_sav + STDOUT_FILTER $actual + cp $actual_err $actual_err_sav + STDERR_FILTER $actual_err + cat $actual_err >> $actual + + if [ ! -f $expect ]; then + # Create the expect file if it doesn't yet exist. + echo " CREATED" + cp $actual $expect + elif $CMP $expect $actual; then + echo " PASSED" + else + echo "*FAILED*" + echo " Expected result (*.ddl) differs from actual result (*.out)" + nerrors="`expr $nerrors + 1`" + test yes = "$verbose" && $DIFF $expect $actual |sed 's/^/ /' + fi + + # Clean up output file + if test -z "$HDF5_NOCLEANUP"; then + rm -f $actual $actual_err $actual_sav $actual_err_sav $actual_ext + fi + +} + + +# same as TOOLTEST1 but compares generated file to expected output +# and compares the generated data file to the expected data file +# used for the binary tests that expect a full path in -o without -b +TOOLTEST2() { + + expectdata="$TESTDIR/$1" + expect="$TESTDIR/`basename $1 .exp`.ddl" + actualdata="$TESTDIR/`basename $1 .exp`.txt" + actual="$TESTDIR/`basename $1 .exp`.out" + actual_err="$TESTDIR/`basename $1 .exp`.err" + shift + + # Run test. + TESTING $DUMPER $@ + ( + cd $TESTDIR + $RUNSERIAL $DUMPER_BIN "$@" + ) >$actual 2>$actual_err + cat $actual_err >> $actual + + if [ ! -f $expect ]; then + # Create the expect file if it doesn't yet exist. + echo " CREATED" + cp $actual $expect + elif $CMP $expect $actual; then + if [ ! -f $expectdata ]; then + # Create the expect data file if it doesn't yet exist. + echo " CREATED" + cp $actualdata $expectdata + elif $CMP $expectdata $actualdata; then + echo " PASSED" + else + echo "*FAILED*" + echo " Expected datafile (*.exp) differs from actual datafile (*.txt)" + nerrors="`expr $nerrors + 1`" + test yes = "$verbose" && $DIFF $expectdata $actualdata |sed 's/^/ /' + fi + else + echo "*FAILED*" + echo " Expected result (*.ddl) differs from actual result (*.out)" + nerrors="`expr $nerrors + 1`" + test yes = "$verbose" && $DIFF $expect $actual |sed 's/^/ /' + fi + + # Clean up output file + if test -z "$HDF5_NOCLEANUP"; then + rm -f $actual $actualdata $actual_err + fi + +} + +# same as TOOLTEST but filters error stack outp +# Extract file name, line number, version and thread IDs because they may be different +TOOLTEST3() { + + expect="$TESTDIR/$1" + actual="$TESTDIR/`basename $1 .ddl`.out" + actual_err="$TESTDIR/`basename $1 .ddl`.err" + actual_ext="$TESTDIR/`basename $1 .ddl`.ext" + actual_sav=${actual}-sav + actual_err_sav=${actual_err}-sav + shift + + # Run test. + TESTING $DUMPER $@ + ( + cd $TESTDIR + $RUNSERIAL $DUMPER_BIN "$@" + ) >$actual 2>$actual_err + + # save actual and actual_err in case they are needed later. + cp $actual $actual_sav + STDOUT_FILTER $actual + cp $actual_err $actual_err_sav + STDERR_FILTER $actual_err + + # Extract file name, line number, version and thread IDs because they may be different + sed -e 's/thread [0-9]*/thread (IDs)/' -e 's/: .*\.c /: (file name) /' \ + -e 's/line [0-9]*/line (number)/' \ + -e 's/v[1-9]*\.[0-9]*\./version (number)\./' \ + -e 's/[1-9]*\.[0-9]*\.[0-9]*[^)]*/version (number)/' \ + -e 's/H5Eget_auto[1-2]*/H5Eget_auto(1 or 2)/' \ + -e 's/H5Eset_auto[1-2]*/H5Eset_auto(1 or 2)/' \ + $actual_err > $actual_ext + cat $actual_ext >> $actual + + if [ ! -f $expect ]; then + # Create the expect file if it doesn't yet exist. + echo " CREATED" + cp $actual $expect + elif $CMP $expect $actual; then + echo " PASSED" + else + echo "*FAILED*" + echo " Expected result (*.ddl) differs from actual result (*.out)" + nerrors="`expr $nerrors + 1`" + test yes = "$verbose" && $DIFF $expect $actual |sed 's/^/ /' + fi + + # Clean up output file + if test -z "$HDF5_NOCLEANUP"; then + rm -f $actual $actual_err $actual_sav $actual_err_sav + fi + +} + +# same as TOOLTEST3 but filters error stack output and compares to an error file +# Extract file name, line number, version and thread IDs because they may be different +TOOLTEST4() { + + expect="$TESTDIR/$1" + expect_err="$TESTDIR/`basename $1 .ddl`.err" + actual="$TESTDIR/`basename $1 .ddl`.out" + actual_err="$TESTDIR/`basename $1 .ddl`.oerr" + actual_ext="$TESTDIR/`basename $1 .ddl`.ext" + actual_sav=${actual}-sav + actual_err_sav=${actual_err}-sav + shift + + # Run test. + TESTING $DUMPER $@ + ( + cd $TESTDIR + $RUNSERIAL $DUMPER_BIN "$@" + ) >$actual 2>$actual_err + + # save actual and actual_err in case they are needed later. + cp $actual $actual_sav + STDOUT_FILTER $actual + cp $actual_err $actual_err_sav + STDERR_FILTER $actual_err + + # Extract file name, line number, version and thread IDs because they may be different + sed -e 's/thread [0-9]*/thread (IDs)/' -e 's/: .*\.c /: (file name) /' \ + -e 's/line [0-9]*/line (number)/' \ + -e 's/v[1-9]*\.[0-9]*\./version (number)\./' \ + -e 's/[1-9]*\.[0-9]*\.[0-9]*[^)]*/version (number)/' \ + -e 's/H5Eget_auto[1-2]*/H5Eget_auto(1 or 2)/' \ + -e 's/H5Eset_auto[1-2]*/H5Eset_auto(1 or 2)/' \ + $actual_err > $actual_ext + #cat $actual_ext >> $actual + + if [ ! -f $expect ]; then + # Create the expect file if it doesn't yet exist. + echo " CREATED" + cp $actual $expect + elif $CMP $expect $actual; then + if $CMP $expect_err $actual_ext; then + echo " PASSED" + else + echo "*FAILED*" + echo " Expected result (*.err) differs from actual result (*.oerr)" + nerrors="`expr $nerrors + 1`" + test yes = "$verbose" && $DIFF $expect_err $actual_ext |sed 's/^/ /' + fi + else + echo "*FAILED*" + echo " Expected result (*.ddl) differs from actual result (*.out)" + nerrors="`expr $nerrors + 1`" + test yes = "$verbose" && $DIFF $expect $actual |sed 's/^/ /' + fi + + # Clean up output file + if test -z "$HDF5_NOCLEANUP"; then + rm -f $actual $actual_err $actual_sav $actual_err_sav + fi + +} + +# Print a "SKIP" message +SKIP() { + TESTING $DUMPER $@ + echo " -SKIP-" +} + +# Print a line-line message left justified in a field of 70 characters +# +PRINT_H5DIFF() { + SPACES=" " + echo " Running h5diff $* $SPACES" | cut -c1-70 | tr -d '\012' +} + + +# Call the h5diff tool +# +DIFFTEST() +{ + PRINT_H5DIFF $@ + ( + cd $TESTDIR + $RUNSERIAL $H5DIFF_BIN "$@" -q + ) + RET=$? + if [ $RET != 0 ] ; then + echo "*FAILED*" + nerrors="`expr $nerrors + 1`" + else + echo " PASSED" + fi + +} + +# Print a line-line message left justified in a field of 70 characters +# beginning with the word "Verifying". +# +PRINT_H5IMPORT() { + SPACES=" " + echo " Running h5import $* $SPACES" | cut -c1-70 | tr -d '\012' +} + +# Call the h5import tool +# +IMPORTTEST() +{ + # remove the output hdf5 file if it exists + hdf5_file="$TESTDIR/$5" + if [ -f $hdf5_file ]; then + rm -f $hdf5_file + fi + + PRINT_H5IMPORT $@ + ( + cd $TESTDIR + $RUNSERIAL $H5IMPORT_BIN "$@" + ) + RET=$? + if [ $RET != 0 ] ; then + echo "*FAILED*" + nerrors="`expr $nerrors + 1`" + else + echo " PASSED" + fi + +} + + +############################################################################## +############################################################################## +### T H E T E S T S ### +############################################################################## +############################################################################## +# prepare for test +COPY_TESTFILES_TO_TESTDIR + +####### test for dataset vds ###### + + # Data read +if test $USE_FILTER_DEFLATE = "yes" ; then + TOOLTEST tvds-1.ddl --enable-error-stack 1_vds.h5 + TOOLTEST tvds-2.ddl --enable-error-stack 2_vds.h5 + TOOLTEST tvds-3_1.ddl --enable-error-stack 3_1_vds.h5 + TOOLTEST tvds-3_2.ddl --enable-error-stack 3_2_vds.h5 + TOOLTEST tvds-4.ddl --enable-error-stack 4_vds.h5 + TOOLTEST tvds-5.ddl --enable-error-stack 5_vds.h5 +fi + + # Layout read +if test $USE_FILTER_DEFLATE = "yes" ; then + TOOLTEST tvds_layout-1.ddl -p --enable-error-stack 1_vds.h5 + TOOLTEST tvds_layout-2.ddl -p --enable-error-stack 2_vds.h5 + TOOLTEST tvds_layout-3_1.ddl -p --enable-error-stack 3_1_vds.h5 + TOOLTEST tvds_layout-3_2.ddl -p --enable-error-stack 3_2_vds.h5 + TOOLTEST tvds_layout-4.ddl -p --enable-error-stack 4_vds.h5 + TOOLTEST tvds_layout-5.ddl -p --enable-error-stack 5_vds.h5 +fi + +# Clean up temporary files/directories +CLEAN_TESTFILES_AND_TESTDIR + +# Report test results and exit +if test $nerrors -eq 0 ; then + echo "All $TESTNAME tests passed." + exit $EXIT_SUCCESS +else + echo "$TESTNAME tests failed with $nerrors errors." + exit $EXIT_FAILURE +fi diff --git a/tools/h5ls/CMakeLists.txt b/tools/h5ls/CMakeLists.txt index 4e96db2..6e7f00c 100644 --- a/tools/h5ls/CMakeLists.txt +++ b/tools/h5ls/CMakeLists.txt @@ -23,6 +23,8 @@ if (BUILD_TESTING) include (CMakeTests.cmake) + include (CMakeTestsVDS.cmake) + endif (BUILD_TESTING) ############################################################################## diff --git a/tools/h5ls/CMakeTestsVDS.cmake b/tools/h5ls/CMakeTestsVDS.cmake new file mode 100644 index 0000000..1ef3f20 --- /dev/null +++ b/tools/h5ls/CMakeTestsVDS.cmake @@ -0,0 +1,149 @@ + +############################################################################## +############################################################################## +### T E S T I N G ### +############################################################################## +############################################################################## + + # -------------------------------------------------------------------- + # Copy all the test files from source directory to test directory + # -------------------------------------------------------------------- + set (LIST_HDF5_TEST_FILES + 1_a.h5 + 1_b.h5 + 1_c.h5 + 1_d.h5 + 1_e.h5 + 1_f.h5 + 1_vds.h5 + 2_a.h5 + 2_b.h5 + 2_c.h5 + 2_d.h5 + 2_e.h5 + 2_vds.h5 + 3_1_vds.h5 + 3_2_vds.h5 + 4_0.h5 + 4_1.h5 + 4_2.h5 + 4_vds.h5 + 5_a.h5 + 5_b.h5 + 5_c.h5 + 5_vds.h5 + ) + + set (LIST_OTHER_TEST_FILES + tvds-1.ls + tvds-2.ls + tvds-3_1.ls + tvds-3_2.ls + tvds-4.ls + tvds-5.ls + ) + + file (MAKE_DIRECTORY "${PROJECT_BINARY_DIR}/testfiles") + + # copy the list of test files + foreach (listfiles ${LIST_HDF5_TEST_FILES} ${LIST_OTHER_TEST_FILES}) + GET_FILENAME_COMPONENT(fname "${listfiles}" NAME) + set (dest "${PROJECT_BINARY_DIR}/testfiles/vds/${fname}") + #message (STATUS " Copying ${listfiles} to ${dest}") + add_custom_command ( + TARGET h5ls + POST_BUILD + COMMAND ${CMAKE_COMMAND} + ARGS -E copy_if_different ${HDF5_TOOLS_SRC_DIR}/testfiles/vds/${listfiles} ${dest} + ) + endforeach (listfiles ${LIST_HDF5_TEST_FILES} ${LIST_OTHER_TEST_FILES}) + + +############################################################################## +############################################################################## +### T H E T E S T S M A C R O S ### +############################################################################## +############################################################################## + + MACRO (ADD_H5_VDS_TEST resultfile resultcode) + # If using memchecker add tests without using scripts + if (HDF5_ENABLE_USING_MEMCHECKER) + add_test (NAME H5LS-${resultfile} COMMAND $<TARGET_FILE:h5ls> ${ARGN}) + set_tests_properties (H5LS-${resultfile} PROPERTIES WORKING_DIRECTORY "${PROJECT_BINARY_DIR}/testfiles/vds") + if (${resultcode} STREQUAL "1") + set_tests_properties (H5LS-${resultfile} PROPERTIES WILL_FAIL "true") + endif (${resultcode} STREQUAL "1") + if (NOT "${last_test}" STREQUAL "") + set_tests_properties (H5LS-${resultfile} PROPERTIES DEPENDS ${last_test}) + endif (NOT "${last_test}" STREQUAL "") + else (HDF5_ENABLE_USING_MEMCHECKER) + add_test ( + NAME H5LS-${resultfile}-clear-objects + COMMAND ${CMAKE_COMMAND} + -E remove ./testfiles/${resultfile}.out ./testfiles/vds/${resultfile}.out.err + ) + add_test ( + NAME H5LS-${resultfile} + COMMAND "${CMAKE_COMMAND}" + -D "TEST_PROGRAM=$<TARGET_FILE:h5ls>" + -D "TEST_ARGS=${ARGN}" + -D "TEST_FOLDER=${PROJECT_BINARY_DIR}/testfiles/vds" + -D "TEST_OUTPUT=${resultfile}.out" + -D "TEST_EXPECT=${resultcode}" + -D "TEST_REFERENCE=${resultfile}.ls" + -P "${HDF_RESOURCES_EXT_DIR}/runTest.cmake" + ) + set_tests_properties (H5LS-${resultfile} PROPERTIES DEPENDS "H5LS_VDS-${resultfile}-clear-objects") + endif (HDF5_ENABLE_USING_MEMCHECKER) + ENDMACRO (ADD_H5_VDS_TEST file) + +############################################################################## +############################################################################## +### T H E T E S T S ### +############################################################################## +############################################################################## + + if (HDF5_ENABLE_USING_MEMCHECKER) + # Remove any output file left over from previous test run + add_test ( + NAME H5LS_VDS-clearall-objects + COMMAND ${CMAKE_COMMAND} + -E remove + tvds-1.out + tvds-1.out.err + tvds-2.out + tvds-2.out.err + tvds-3_1.out + tvds-3_1.out.err + tvds-3_2.out + tvds-3_2.out.err + tvds-4.out + tvds-4.out.err + tvds-5.out + tvds-5.out.err + tvds_layout-1.out + tvds_layout-1.out.err + tvds_layout-2.out + tvds_layout-2.out.err + tvds_layout-3_1.out + tvds_layout-3_1.out.err + tvds_layout-3_2.out + tvds_layout-3_2.out.err + tvds_layout-4.out + tvds_layout-4.out.err + tvds_layout-5.out + tvds_layout-5.out.err + ) + if (NOT "${last_test}" STREQUAL "") + set_tests_properties (H5LS_VDS-clearall-objects PROPERTIES DEPENDS ${last_test}) + endif (NOT "${last_test}" STREQUAL "") + set (last_test "H5LS_VDS-clearall-objects") + endif (HDF5_ENABLE_USING_MEMCHECKER) + + ADD_H5_VDS_TEST (tvds-1 0 -w80 -v -S 1_vds.h5) + ADD_H5_VDS_TEST (tvds-2 0 -w80 -v -S 2_vds.h5) + ADD_H5_VDS_TEST (tvds-3_1 0 -w80 -v -S 3_1_vds.h5) + ADD_H5_VDS_TEST (tvds-3_2 0 -w80 -v -S 3_2_vds.h5) + ADD_H5_VDS_TEST (tvds-4 0 -w80 -v -S 4_vds.h5) + ADD_H5_VDS_TEST (tvds-5 0 -w80 -v -S 5_vds.h5) + diff --git a/tools/h5ls/Makefile.am b/tools/h5ls/Makefile.am index 408ce93..54a06f1 100644 --- a/tools/h5ls/Makefile.am +++ b/tools/h5ls/Makefile.am @@ -24,7 +24,7 @@ include $(top_srcdir)/config/commence.am AM_CPPFLAGS+=-I$(top_srcdir)/src -I$(top_srcdir)/tools/lib # Test programs and scripts -TEST_SCRIPT=testh5ls.sh +TEST_SCRIPT=testh5ls.sh testh5lsvds.sh check_SCRIPTS=$(TEST_SCRIPT) SCRIPT_DEPEND=h5ls$(EXEEXT) diff --git a/tools/h5ls/Makefile.in b/tools/h5ls/Makefile.in index 73bef6c..68c87b5 100644 --- a/tools/h5ls/Makefile.in +++ b/tools/h5ls/Makefile.in @@ -98,8 +98,8 @@ host_triplet = @host@ DIST_COMMON = $(top_srcdir)/config/commence.am \ $(top_srcdir)/config/conclude.am $(srcdir)/Makefile.in \ $(srcdir)/Makefile.am $(top_srcdir)/bin/mkinstalldirs \ - $(srcdir)/testh5ls.sh.in $(top_srcdir)/bin/depcomp \ - $(top_srcdir)/bin/test-driver + $(srcdir)/testh5ls.sh.in $(srcdir)/testh5lsvds.sh.in \ + $(top_srcdir)/bin/depcomp $(top_srcdir)/bin/test-driver bin_PROGRAMS = h5ls$(EXEEXT) TESTS = $(TEST_SCRIPT) subdir = tools/h5ls @@ -111,7 +111,7 @@ am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ mkinstalldirs = $(SHELL) $(top_srcdir)/bin/mkinstalldirs CONFIG_HEADER = $(top_builddir)/src/H5config.h \ $(top_builddir)/fortran/src/H5config_f.inc -CONFIG_CLEAN_FILES = testh5ls.sh +CONFIG_CLEAN_FILES = testh5ls.sh testh5lsvds.sh CONFIG_CLEAN_VPATH_FILES = am__installdirs = "$(DESTDIR)$(bindir)" PROGRAMS = $(bin_PROGRAMS) @@ -675,7 +675,7 @@ TRACE = perl $(top_srcdir)/bin/trace CHECK_CLEANFILES = *.chkexe *.chklog *.clog *.clog2 # Test programs and scripts -TEST_SCRIPT = testh5ls.sh +TEST_SCRIPT = testh5ls.sh testh5lsvds.sh check_SCRIPTS = $(TEST_SCRIPT) SCRIPT_DEPEND = h5ls$(EXEEXT) @@ -741,6 +741,8 @@ $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) $(am__aclocal_m4_deps): testh5ls.sh: $(top_builddir)/config.status $(srcdir)/testh5ls.sh.in cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ +testh5lsvds.sh: $(top_builddir)/config.status $(srcdir)/testh5lsvds.sh.in + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ install-binPROGRAMS: $(bin_PROGRAMS) @$(NORMAL_INSTALL) @list='$(bin_PROGRAMS)'; test -n "$(bindir)" || list=; \ diff --git a/tools/h5ls/h5ls.c b/tools/h5ls/h5ls.c index fe146c1..f291958 100644 --- a/tools/h5ls/h5ls.c +++ b/tools/h5ls/h5ls.c @@ -1759,6 +1759,7 @@ dataset_list2(hid_t dset, const char H5_ATTR_UNUSED *name) size_t cd_nelmts; /* filter client number of values */ size_t cd_num; /* filter client data counter */ char f_name[256]; /* filter/file name */ + char dset_name[256]; /* filter/file name */ char s[64]; /* temporary string buffer */ off_t f_offset; /* offset in external file */ hsize_t f_size; /* bytes used in external file */ @@ -1847,6 +1848,33 @@ dataset_list2(hid_t dset, const char H5_ATTR_UNUSED *name) } /* end if */ break; + case H5D_VIRTUAL: + { + size_t vmaps; + + H5Pget_virtual_count(dcpl, &vmaps); + + if (vmaps) { + size_t next; + ssize_t ssize_out; + + h5tools_str_append(&buffer, " %-10s {%ld} Source {\n", "Maps:", vmaps); + for (next = 0; next < (unsigned) vmaps; next++) { + ssize_out = H5Pget_virtual_filename(dcpl, next, NULL, 0); + H5Pget_virtual_filename(dcpl, next, f_name, sizeof(f_name)); + ssize_out = H5Pget_virtual_dsetname(dcpl, next, NULL, 0); + H5Pget_virtual_dsetname(dcpl, next, dset_name, sizeof(dset_name)); + h5tools_str_append(&buffer, " %-10s ", " "); + print_string(&buffer, f_name, TRUE); + h5tools_str_append(&buffer, " "); + print_string(&buffer, dset_name, TRUE); + h5tools_str_append(&buffer, "\n"); + } + h5tools_str_append(&buffer, " %-10s}\n", " "); + } + } + break; + case H5D_LAYOUT_ERROR: case H5D_NLAYOUTS: default: diff --git a/tools/h5ls/testh5lsvds.sh.in b/tools/h5ls/testh5lsvds.sh.in new file mode 100644 index 0000000..d194992 --- /dev/null +++ b/tools/h5ls/testh5lsvds.sh.in @@ -0,0 +1,258 @@ +#! /bin/sh +# +# Copyright by The HDF Group. +# Copyright by the Board of Trustees of the University of Illinois. +# All rights reserved. +# +# This file is part of HDF5. The full HDF5 copyright notice, including +# terms governing use, modification, and redistribution, is contained in +# the files COPYING and Copyright.html. COPYING can be found at the root +# of the source code distribution tree; Copyright.html can be found at the +# root level of an installed copy of the electronic HDF5 document set and +# is linked from the top-level documents page. It can also be found at +# http://hdfgroup.org/HDF5/doc/Copyright.html. If you do not have +# access to either file, you may request a copy from help@hdfgroup.org. +# +# Tests for the h5ls tool + +srcdir=@srcdir@ + +TESTNAME=h5ls +EXIT_SUCCESS=0 +EXIT_FAILURE=1 + +H5LS=h5ls # The tool name +H5LS_BIN=`pwd`/$H5LS # The path of the tool binary + +RM='rm -rf' +CMP='cmp -s' +DIFF='diff -c' +CP='cp' +NLINES=20 # Max. lines of output to display if test fails +DIRNAME='dirname' +LS='ls' +AWK='awk' + +WORDS_BIGENDIAN="@WORDS_BIGENDIAN@" + +nerrors=0 +verbose=yes +h5haveexitcode=yes # default is yes + +# source dirs +SRC_TOOLS="$srcdir/.." +SRC_TOOLS_TESTFILES="$SRC_TOOLS/testfiles" + +# testfiles source dirs for tools +SRC_H5LS_TESTFILES="$SRC_TOOLS_TESTFILES" +SRC_H5DUMP_TESTFILES="$SRC_TOOLS_TESTFILES" +SRC_H5DIFF_TESTFILES="$SRC_TOOLS/h5diff/testfiles" +SRC_H5COPY_TESTFILES="$SRC_TOOLS/h5copy/testfiles" +SRC_H5REPACK_TESTFILES="$SRC_TOOLS/h5repack/testfiles" +SRC_H5JAM_TESTFILES="$SRC_TOOLS/h5jam/testfiles" +SRC_H5STAT_TESTFILES="$SRC_TOOLS/h5stat/testfiles" +SRC_H5IMPORT_TESTFILES="$SRC_TOOLS/h5import/testfiles" + +TEST_P_DIR=./testfiles +TESTDIR=./testfiles/vds +test -d $TEST_P_DIR || mkdir -p $TEST_P_DIR +test -d $TESTDIR || mkdir $TESTDIR + +###################################################################### +# test files +# -------------------------------------------------------------------- +# All the test files copy from source directory to test directory +# NOTE: Keep this framework to add/remove test files. +# Any test files from other tools can be used in this framework. +# This list are also used for checking exist. +# Comment '#' without space can be used. +# -------------------------------------------------------------------- +LIST_HDF5_TEST_FILES=" +$SRC_H5LS_TESTFILES/vds/1_a.h5 +$SRC_H5LS_TESTFILES/vds/1_b.h5 +$SRC_H5LS_TESTFILES/vds/1_c.h5 +$SRC_H5LS_TESTFILES/vds/1_d.h5 +$SRC_H5LS_TESTFILES/vds/1_e.h5 +$SRC_H5LS_TESTFILES/vds/1_f.h5 +$SRC_H5LS_TESTFILES/vds/1_vds.h5 +$SRC_H5LS_TESTFILES/vds/2_a.h5 +$SRC_H5LS_TESTFILES/vds/2_b.h5 +$SRC_H5LS_TESTFILES/vds/2_c.h5 +$SRC_H5LS_TESTFILES/vds/2_d.h5 +$SRC_H5LS_TESTFILES/vds/2_e.h5 +$SRC_H5LS_TESTFILES/vds/2_vds.h5 +$SRC_H5LS_TESTFILES/vds/3_1_vds.h5 +$SRC_H5LS_TESTFILES/vds/3_2_vds.h5 +$SRC_H5LS_TESTFILES/vds/4_0.h5 +$SRC_H5LS_TESTFILES/vds/4_1.h5 +$SRC_H5LS_TESTFILES/vds/4_2.h5 +$SRC_H5LS_TESTFILES/vds/4_vds.h5 +$SRC_H5LS_TESTFILES/vds/5_a.h5 +$SRC_H5LS_TESTFILES/vds/5_b.h5 +$SRC_H5LS_TESTFILES/vds/5_c.h5 +$SRC_H5LS_TESTFILES/vds/5_vds.h5 +" + +LIST_OTHER_TEST_FILES=" +$SRC_H5LS_TESTFILES/vds/tvds-1.ls +$SRC_H5LS_TESTFILES/vds/tvds-2.ls +$SRC_H5LS_TESTFILES/vds/tvds-3_1.ls +$SRC_H5LS_TESTFILES/vds/tvds-3_2.ls +$SRC_H5LS_TESTFILES/vds/tvds-4.ls +$SRC_H5LS_TESTFILES/vds/tvds-5.ls +" + + +# RUNSERIAL is used. Check if it can return exit code from executalbe correctly. +if [ -n "$RUNSERIAL_NOEXITCODE" ]; then + echo "***Warning*** Serial Exit Code is not passed back to shell corretly." + echo "***Warning*** Exit code checking is skipped." + h5haveexitcode=no +fi + +# +# copy test files and expected output files from source dirs to test dir +# +COPY_TESTFILES="$LIST_HDF5_TEST_FILES $LIST_OTHER_TEST_FILES" + +COPY_TESTFILES_TO_TESTDIR() +{ + # copy test files. Used -f to make sure get a new copy + for tstfile in $COPY_TESTFILES + do + # ignore '#' comment + echo $tstfile | tr -d ' ' | grep '^#' > /dev/null + RET=$? + if [ $RET -eq 1 ]; then + # skip cp if srcdir is same as destdir + # this occurs when build/test performed in source dir and + # make cp fail + SDIR=`$DIRNAME $tstfile` + INODE_SDIR=`$LS -i -d $SDIR | $AWK -F' ' '{print $1}'` + INODE_DDIR=`$LS -i -d $TESTDIR | $AWK -F' ' '{print $1}'` + if [ "$INODE_SDIR" != "$INODE_DDIR" ]; then + $CP -f $tstfile $TESTDIR + if [ $? -ne 0 ]; then + echo "Error: FAILED to copy $tstfile ." + + # Comment out this to CREATE expected file + exit $EXIT_FAILURE + fi + fi + fi + done +} + +CLEAN_TESTFILES_AND_TESTDIR() +{ + # skip rm if srcdir is same as destdir + # this occurs when build/test performed in source dir and + # make cp fail + SDIR=`$DIRNAME $tstfile` + INODE_SDIR=`$LS -i -d $SDIR | $AWK -F' ' '{print $1}'` + INODE_DDIR=`$LS -i -d $TESTDIR | $AWK -F' ' '{print $1}'` + if [ "$INODE_SDIR" != "$INODE_DDIR" ]; then + $RM $TESTDIR + fi +} + +# Print a line-line message left justified in a field of 70 characters +# beginning with the word "Testing". +TESTING() { + SPACES=" " + echo "Testing $* $SPACES" |cut -c1-70 |tr -d '\012' +} + +# Source in the output filter function definitions. +. $srcdir/../../bin/output_filter.sh + +# Run a test and print PASS or *FAIL*. For now, if h5ls can complete +# with exit status 0, consider it pass. If a test fails then increment +# the `nerrors' global variable and (if $verbose is set) display up to $NLINS +# lines of the actual output from the tool test. The actual output is not +# removed if $HDF5_NOCLEANUP has a non-zero value. +# Arguemnts: +# $1 -- actual output filename to use +# $2 and on -- argument for the h5ls tool +TOOLTEST() { + expect="$TESTDIR/$1" + actual="$TESTDIR/`basename $1 .ls`.out" + actual_err="$TESTDIR/`basename $1 .ls`.err" + actual_sav=${actual}-sav + actual_err_sav=${actual_err}-sav + shift + retvalexpect=$1 + shift + + # Run test. + # Stderr is included in stdout so that the diff can detect + # any unexpected output from that stream too. + TESTING $H5LS $@ + ( + cd $TESTDIR + $RUNSERIAL $H5LS_BIN "$@" + ) >$actual 2>$actual_err + + exitcode=$? + # save actual and actual_err in case they are needed later. + cp $actual $actual_sav + STDOUT_FILTER $actual + cp $actual_err $actual_err_sav + STDERR_FILTER $actual_err + cat $actual_err >> $actual + if [ $h5haveexitcode = 'yes' -a $exitcode -ne $retvalexpect ]; then + echo "*FAILED*" + nerrors="`expr $nerrors + 1`" + if [ yes = "$verbose" ]; then + echo "test returned with exit code $exitcode" + echo "test output: (up to $NLINES lines)" + head -$NLINES $actual + echo "***end of test output***" + echo "" + fi + elif [ ! -f $expect ]; then + # Create the expect file if it doesn't yet exist. + echo " CREATED" + cp $actual $expect + elif $CMP $expect $actual; then + echo " PASSED" + else + echo "*FAILED*" + echo " Expected result differs from actual result" + nerrors="`expr $nerrors + 1`" + test yes = "$verbose" && $DIFF $expect $actual |sed 's/^/ /' + fi + + # Clean up output file + if test -z "$HDF5_NOCLEANUP"; then + rm -f $actual $actual_err $actual_sav $actual_err_sav + fi +} + +############################################################################## +############################################################################## +### T H E T E S T S ### +############################################################################## +############################################################################## +# prepare for test +COPY_TESTFILES_TO_TESTDIR + +####### test for dataset vds ###### + +TOOLTEST tvds-1.ls 0 -w80 -v -S 1_vds.h5 +TOOLTEST tvds-2.ls 0 -w80 -v -S 2_vds.h5 +TOOLTEST tvds-3_1.ls 0 -w80 -v -S 3_1_vds.h5 +TOOLTEST tvds-3_2.ls 0 -w80 -v -S 3_2_vds.h5 +TOOLTEST tvds-4.ls 0 -w80 -v -S 4_vds.h5 +TOOLTEST tvds-5.ls 0 -w80 -v -S 5_vds.h5 + +# Clean up temporary files/directories +CLEAN_TESTFILES_AND_TESTDIR + +if test $nerrors -eq 0 ; then + echo "All $TESTNAME tests passed." + exit $EXIT_SUCCESS +else + echo "$TESTNAME tests failed with $nerrors errors." + exit $EXIT_FAILURE +fi diff --git a/tools/h5repack/CMakeTests.cmake b/tools/h5repack/CMakeTests.cmake index dee97ed..caad5c1 100644 --- a/tools/h5repack/CMakeTests.cmake +++ b/tools/h5repack/CMakeTests.cmake @@ -14,14 +14,14 @@ multi family ) - + if (DIRECT_VFD) set (VFD_LIST ${VFD_LIST} direct) endif (DIRECT_VFD) MACRO (ADD_VFD_TEST vfdname resultcode) add_test ( - NAME H5REPACK-VFD-${vfdname}-h5repacktest + NAME H5REPACK-VFD-${vfdname}-h5repacktest COMMAND "${CMAKE_COMMAND}" -D "TEST_PROGRAM=$<TARGET_FILE:h5repacktest>" -D "TEST_ARGS:STRING=" @@ -37,7 +37,7 @@ set (last_test "H5REPACK-VFD-${vfdname}-h5repacktest") ENDMACRO (ADD_VFD_TEST) endif (HDF5_TEST_VFD) - + # -------------------------------------------------------------------- # Copy all the HDF5 files from the source directory into the test directory # -------------------------------------------------------------------- @@ -77,6 +77,30 @@ ${HDF5_TOOLS_SRC_DIR}/testfiles/tfamily00008.h5 ${HDF5_TOOLS_SRC_DIR}/testfiles/tfamily00009.h5 ${HDF5_TOOLS_SRC_DIR}/testfiles/tfamily00010.h5 + # tools/testfiles/vds + ${HDF5_TOOLS_SRC_DIR}/testfiles/vds/1_a.h5 + ${HDF5_TOOLS_SRC_DIR}/testfiles/vds/1_b.h5 + ${HDF5_TOOLS_SRC_DIR}/testfiles/vds/1_c.h5 + ${HDF5_TOOLS_SRC_DIR}/testfiles/vds/1_d.h5 + ${HDF5_TOOLS_SRC_DIR}/testfiles/vds/1_e.h5 + ${HDF5_TOOLS_SRC_DIR}/testfiles/vds/1_f.h5 + ${HDF5_TOOLS_SRC_DIR}/testfiles/vds/1_vds.h5 + ${HDF5_TOOLS_SRC_DIR}/testfiles/vds/2_a.h5 + ${HDF5_TOOLS_SRC_DIR}/testfiles/vds/2_b.h5 + ${HDF5_TOOLS_SRC_DIR}/testfiles/vds/2_c.h5 + ${HDF5_TOOLS_SRC_DIR}/testfiles/vds/2_d.h5 + ${HDF5_TOOLS_SRC_DIR}/testfiles/vds/2_e.h5 + ${HDF5_TOOLS_SRC_DIR}/testfiles/vds/2_vds.h5 + ${HDF5_TOOLS_SRC_DIR}/testfiles/vds/3_1_vds.h5 + ${HDF5_TOOLS_SRC_DIR}/testfiles/vds/3_2_vds.h5 + ${HDF5_TOOLS_SRC_DIR}/testfiles/vds/4_0.h5 + ${HDF5_TOOLS_SRC_DIR}/testfiles/vds/4_1.h5 + ${HDF5_TOOLS_SRC_DIR}/testfiles/vds/4_2.h5 + ${HDF5_TOOLS_SRC_DIR}/testfiles/vds/4_vds.h5 + ${HDF5_TOOLS_SRC_DIR}/testfiles/vds/5_a.h5 + ${HDF5_TOOLS_SRC_DIR}/testfiles/vds/5_b.h5 + ${HDF5_TOOLS_SRC_DIR}/testfiles/vds/5_c.h5 + ${HDF5_TOOLS_SRC_DIR}/testfiles/vds/5_vds.h5 ) set (LIST_OTHER_TEST_FILES @@ -346,7 +370,7 @@ add_test ( NAME H5REPACK_UD-${testname}-clearall-objects COMMAND ${CMAKE_COMMAND} - -E remove + -E remove testfiles/out-${testname}.${resultfile} testfiles/${testname}.${resultfile}.out testfiles/${testname}.${resultfile}.out.err @@ -392,7 +416,7 @@ ############################################################################## # -------------------------------------------------------------------- - # test file names + # test file names # -------------------------------------------------------------------- set (INFO_FILE testfiles/h5repack.info) @@ -415,12 +439,18 @@ set (FILE18 h5repack_layout2.h5) set (FILE_REF h5repack_refs.h5) set (FILE_ATTR_REF h5repack_attr_refs.h5) - + set (FILEV1 1_vds.h5) + set (FILEV2 2_vds.h5) + set (FILEV3_1 3_1_vds.h5) + set (FILEV3_2 3_2_vds.h5) + set (FILEV4 4_vds.h5) + set (FILEV5 5_vds.h5) + # Remove any output file left over from previous test run add_test ( NAME H5REPACK-clearall-objects COMMAND ${CMAKE_COMMAND} - -E remove + -E remove ./testfiles/h5dump-help.out ./testfiles/h5repack_filters.h5-gzip_verbose_filters.out ./testfiles/h5repack_filters.h5-gzip_verbose_filters.out.err @@ -555,12 +585,41 @@ ./testfiles/out-meta_short_N.meta_short.h5 ./testfiles/out-meta_long_M.meta_long.h5 ./testfiles/out-meta_long_N.meta_long.h5 - # from the h5repacktst + ./testfiles/1_vds.h5-vds_dset_compa-v.out + ./testfiles/1_vds.h5-vds_dset_compa-v.out.err + ./testfiles/1_vds.h5-vds_dset_conti-v.out + ./testfiles/1_vds.h5-vds_dset_conti-v.out.err + ./testfiles/2_vds.h5-vds_null_compa-v.out + ./testfiles/2_vds.h5-vds_null_compa-v.out.err + ./testfiles/2_vds.h5-vds_null_conti-v.out + ./testfiles/2_vds.h5-vds_null_conti-v.out.err + ./testfiles/4_vds.h5-vds_compa-v.out + ./testfiles/4_vds.h5-vds_compa-v.out.err + ./testfiles/4_vds.h5-vds_compa_compa-v.out + ./testfiles/4_vds.h5-vds_compa_compa-v.out.err + ./testfiles/4_vds.h5-vds_compa_conti-v.out + ./testfiles/4_vds.h5-vds_compa_conti-v.out.err + ./testfiles/4_vds.h5-vds_conti-v.out + ./testfiles/4_vds.h5-vds_conti-v.out.err + ./testfiles/4_vds.h5-vds_conti_compa-v.out + ./testfiles/4_vds.h5-vds_conti_compa-v.out.err + ./testfiles/4_vds.h5-vds_conti_conti-v.out + ./testfiles/4_vds.h5-vds_conti_conti-v.out.err + ./testfiles/out-vds_compa.4_vds.h5 + ./testfiles/out-vds_compa_compa.4_vds.h5 + ./testfiles/out-vds_compa_conti.4_vds.h5 + ./testfiles/out-vds_conti.4_vds.h5 + ./testfiles/out-vds_conti_compa.4_vds.h5 + ./testfiles/out-vds_conti_conti.4_vds.h5 + ./testfiles/out-vds_dset_compa.1_vds.h5 + ./testfiles/out-vds_dset_conti.1_vds.h5 + ./testfiles/out-vds_null_compa.2_vds.h5 + ./testfiles/out-vds_null_conti.2_vds.h5 h5repack_attr.h5 h5repack_attr_out.h5 h5repack_attr_refs.h5 h5repack_big.h5 - h5repack_deflate.h5 + h5repack_deflate.h5 h5repack_deflate_out.h5 h5repack_early2.h5 h5repack_early.h5 @@ -588,7 +647,7 @@ h5repack_refs.h5 h5repack_shuffle.h5 h5repack_shuffle_out.h5 - h5repack_soffset.h5 + h5repack_soffset.h5 h5repack_soffset_out.h5 h5repack_szip.h5 h5repack_szip_out.h5 @@ -628,14 +687,14 @@ # Each run generates "<file>.out.h5" and the tool h5diff is used to # compare the input and output files # -# the tests are the same as the program h5repacktst, but run from the CLI +# the tests are the same as the program h5repacktst, but run from the CLI # # See which filters are usable (and skip tests for filters we # don't have). Do this by searching H5pubconf.h to see which # filters are defined. -# detect whether the encoder is present. +# detect whether the encoder is present. set (USE_FILTER_SZIP_ENCODER "no") if (HDF5_ENABLE_SZIP_ENCODING) set (USE_FILTER_SZIP_ENCODER ${testh5repack_detect_szip}) @@ -649,7 +708,7 @@ set (USE_FILTER_SZIP "true") endif (H5_HAVE_FILTER_SZIP) -# copy files (these files have no filters) +# copy files (these files have no filters) ADD_H5_TEST (fill "TEST" ${FILE0}) ADD_H5_TEST (objs "TEST" ${FILE1}) ADD_H5_TEST (attr "TEST" ${FILE2}) @@ -666,8 +725,8 @@ set (TESTTYPE "SKIP") endif (NOT USE_FILTER_DEFLATE) ADD_H5_TEST (gzip_individual ${TESTTYPE} ${arg}) - -# gzip for all + +# gzip for all set (arg ${FILE4} -f GZIP=1) set (TESTTYPE "TEST") if (NOT USE_FILTER_DEFLATE) @@ -681,7 +740,7 @@ if (NOT USE_FILTER_SZIP_ENCODER OR NOT USE_FILTER_SZIP) set (TESTTYPE "SKIP") endif (NOT USE_FILTER_SZIP_ENCODER OR NOT USE_FILTER_SZIP) - ADD_H5_TEST (szip_individual ${TESTTYPE} ${arg}) + ADD_H5_TEST (szip_individual ${TESTTYPE} ${arg}) # szip for all set (arg ${FILE4} -f SZIP=8,NN) @@ -689,16 +748,16 @@ if (NOT USE_FILTER_SZIP_ENCODER OR NOT USE_FILTER_SZIP) set (TESTTYPE "SKIP") endif (NOT USE_FILTER_SZIP_ENCODER OR NOT USE_FILTER_SZIP) - ADD_H5_TEST (szip_all ${TESTTYPE} ${arg}) + ADD_H5_TEST (szip_all ${TESTTYPE} ${arg}) # shuffle with individual object set (arg ${FILE4} -f dset2:SHUF -l dset2:CHUNK=20x10) - ADD_H5_TEST (shuffle_individual "TEST" ${arg}) + ADD_H5_TEST (shuffle_individual "TEST" ${arg}) # shuffle for all set (arg ${FILE4} -f SHUF) ADD_H5_TEST (shuffle_all "TEST" ${arg}) - + # fletcher32 with individual object set (arg ${FILE4} -f dset2:FLET -l dset2:CHUNK=20x10) ADD_H5_TEST (fletcher_individual "TEST" ${arg}) @@ -722,7 +781,7 @@ set (TESTTYPE "SKIP") endif (NOT USE_FILTER_DEFLATE) ADD_H5_CMP_TEST (gzip_verbose_filters "O?...ing file[^\n]+\n" ${TESTTYPE} 0 ${arg}) - + ########################################################### # the following tests assume the input files have filters ########################################################### @@ -734,7 +793,7 @@ set (TESTTYPE "SKIP") endif (NOT USE_FILTER_SZIP_ENCODER OR NOT USE_FILTER_SZIP) ADD_H5_TEST (szip_copy ${TESTTYPE} ${arg}) - + # szip remove set (arg ${FILE7} --filter=dset_szip:NONE) set (TESTTYPE "TEST") @@ -742,7 +801,7 @@ set (TESTTYPE "SKIP") endif (NOT USE_FILTER_SZIP_ENCODER OR NOT USE_FILTER_SZIP) ADD_H5_TEST (szip_remove ${TESTTYPE} ${arg}) - + # deflate copy set (arg ${FILE8}) set (TESTTYPE "TEST") @@ -758,7 +817,7 @@ set (TESTTYPE "SKIP") endif (NOT USE_FILTER_DEFLATE) ADD_H5_TEST (deflate_remove ${TESTTYPE} ${arg}) - + # shuffle copy set (arg ${FILE9}) ADD_H5_TEST (shuffle_copy "TEST" ${arg}) @@ -813,14 +872,14 @@ if (NOT USE_FILTER_SZIP_ENCODER OR NOT USE_FILTER_SZIP OR NOT USE_FILTER_DEFLATE) set (TESTTYPE "SKIP") endif (NOT USE_FILTER_SZIP_ENCODER OR NOT USE_FILTER_SZIP OR NOT USE_FILTER_DEFLATE) - ADD_H5_TEST (deflate_convert ${TESTTYPE} ${arg}) + ADD_H5_TEST (deflate_convert ${TESTTYPE} ${arg}) set (arg ${FILE7} -f dset_szip:GZIP=1) set (TESTTYPE "TEST") if (NOT USE_FILTER_SZIP OR NOT USE_FILTER_SZIP_ENCODER OR NOT USE_FILTER_DEFLATE) set (TESTTYPE "SKIP") endif (NOT USE_FILTER_SZIP OR NOT USE_FILTER_SZIP_ENCODER OR NOT USE_FILTER_DEFLATE) - ADD_H5_TEST (szip_convert ${TESTTYPE} ${arg}) + ADD_H5_TEST (szip_convert ${TESTTYPE} ${arg}) #limit set (arg ${FILE4} -f GZIP=1 -m 1024) @@ -836,7 +895,7 @@ if (NOT USE_FILTER_DEFLATE) set (TESTTYPE "SKIP") endif (NOT USE_FILTER_DEFLATE) - ADD_H5_TEST (deflate_file ${TESTTYPE} ${arg}) + ADD_H5_TEST (deflate_file ${TESTTYPE} ${arg}) ######################################################### # layout options (these files have no filters) @@ -865,18 +924,18 @@ ADD_H5_VERIFY_TEST (contig_small_compa "TEST" 0 ${FILE18} contig_small COMPACT -l contig_small:COMPA) ADD_H5_VERIFY_TEST (contig_small_fixed_compa "TEST" 0 ${FILE18} chunked_small_fixed COMPACT -l chunked_small_fixed:COMPA) -#--------------------------------------------------------------------------- -# Test file contains chunked datasets (need multiple dsets) with +#--------------------------------------------------------------------------- +# Test file contains chunked datasets (need multiple dsets) with # unlimited max dims. (HDFFV-7933) # Use first dset to test. #--------------------------------------------------------------------------- # chunk to chunk - specify chunk dim bigger than any current dim ADD_H5_VERIFY_TEST (chunk2chunk "TEST" 0 h5repack_layout3.h5 chunk_unlimit1 CHUNK -l chunk_unlimit1:CHUNK=100x300) -# chunk to contiguous +# chunk to contiguous ADD_H5_VERIFY_TEST (chunk2conti "TEST" 0 h5repack_layout3.h5 chunk_unlimit1 CONTI -l chunk_unlimit1:CONTI) -# chunk to compact - convert big dataset (should be > 64k) for this purpose, +# chunk to compact - convert big dataset (should be > 64k) for this purpose, # should remain as original layout (chunk) ADD_H5_VERIFY_TEST (chunk2compa "TEST" 0 h5repack_layout3.h5 chunk_unlimit1 CHUNK -l chunk_unlimit1:COMPA) @@ -884,7 +943,7 @@ # Test -f for some specific cases. Chunked dataset with unlimited max dims. # (HDFFV-8012) #-------------------------------------------------------------------------- -# - should not fail +# - should not fail # - should not change max dims from unlimit # chunk dim is bigger than dataset dim. ( dset size < 64k ) @@ -900,13 +959,13 @@ ADD_H5_TEST (error4 "TEST" h5repack_layout3.h5 -f NONE) #-------------------------------------------------------------------------- -# Test base: Convert CHUNK to CONTI for a chunked dataset with small dataset +# Test base: Convert CHUNK to CONTI for a chunked dataset with small dataset # (dset size < 64K) and with unlimited max dims on a condition as follow. # (HDFFV-8214) #-------------------------------------------------------------------------- # chunk dim is bigger than dataset dim. should succeed. ADD_H5_VERIFY_TEST (ckdim_biger "TEST" 0 h5repack_layout3.h5 chunk_unlimit2 CONTI -l chunk_unlimit2:CONTI) -# chunk dim is smaller than dataset dim. should succeed. +# chunk dim is smaller than dataset dim. should succeed. ADD_H5_VERIFY_TEST (ckdim_smaller "TEST" 0 h5repack_layout3.h5 chunk_unlimit3 CONTI -l chunk_unlimit3:CONTI) @@ -975,11 +1034,11 @@ ADD_H5_TEST (bug1814 "TEST" ${FILE_REF}) # test attribute with various references (bug1797 / HDFFV-5932) -# the references in attribute of compund or vlen datatype +# the references in attribute of compund or vlen datatype ADD_H5_TEST (HDFFV-5932 "TEST" ${FILE_ATTR_REF}) -# Add test for memory leak in attirbute. This test is verified by CTEST. -# 1. leak from vlen string +# Add test for memory leak in attirbute. This test is verified by CTEST. +# 1. leak from vlen string # 2. leak from compound type without reference member # (HDFFV-7840, ) # Note: this test is experimental for sharing test file among tools @@ -989,6 +1048,26 @@ ADD_H5_TEST_META (meta_short h5repack_layout.h5 -M 8192) ADD_H5_TEST_META (meta_long h5repack_layout.h5 --metadata_block_size=8192) +# VDS tests + +######################################################### +# layout options +######################################################### + ADD_H5_VERIFY_TEST (vds_dset_conti "TEST" 0 ${FILEV1} vds_dset CONTIGUOUS -l vds_dset:CONTI) + ADD_H5_VERIFY_TEST (vds_null_conti "TEST" 1 ${FILEV2} null CONTIGUOUS -l CONTI) + ADD_H5_VERIFY_TEST (vds_dset_compa "TEST" 0 ${FILEV1} vds_dset COMPACT -l vds_dset:COMPA) + ADD_H5_VERIFY_TEST (vds_null_compa "TEST" 1 ${FILEV2} null COMPACT -l COMPA) + +################################################################ +# layout conversions +############################################################### + ADD_H5_VERIFY_TEST (vds_compa_conti "TEST" 0 ${FILEV4} vds_dset CONTIGUOUS -l vds_dset:CONTI) + ADD_H5_VERIFY_TEST (vds_compa_compa "TEST" 0 ${FILEV4} vds_dset COMPACT -l vds_dset:COMPA) + ADD_H5_VERIFY_TEST (vds_conti_compa "TEST" 0 ${FILEV4} vds_dset COMPACT -l vds_dset:COMPA) + ADD_H5_VERIFY_TEST (vds_conti_conti "TEST" 0 ${FILEV4} vds_dset CONTIGUOUS -l vds_dset:CONTI) + ADD_H5_VERIFY_TEST (vds_compa "TEST" 0 ${FILEV4} vds_dset COMPACT -l vds_dset:COMPA) + ADD_H5_VERIFY_TEST (vds_conti "TEST" 0 ${FILEV4} vds_dset CONTIGUOUS -l vds_dset:CONTI) + ############################################################################## ### P L U G I N T E S T S ############################################################################## diff --git a/tools/h5repack/h5repack.sh.in b/tools/h5repack/h5repack.sh.in index 4a32491..478ca36 100644 --- a/tools/h5repack/h5repack.sh.in +++ b/tools/h5repack/h5repack.sh.in @@ -18,7 +18,7 @@ # Modification: # Pedro Vicente Nunes, 11/15/2006 # Added $FILEN variables for file names -# +# srcdir=@srcdir@ @@ -32,7 +32,7 @@ EXIT_FAILURE=1 H5REPACK=h5repack # The tool name H5REPACK_BIN=`pwd`/$H5REPACK # The path of the tool binary -H5DIFF=../h5diff/h5diff # The h5diff tool name +H5DIFF=../h5diff/h5diff # The h5diff tool name H5DIFF_BIN=`pwd`/$H5DIFF # The path of the h5diff tool binary H5DUMP=../h5dump/h5dump # The h5dump tool name @@ -45,8 +45,8 @@ DIRNAME='dirname' LS='ls' AWK='awk' -H5DETECTSZIP=testh5repack_detect_szip -H5DETECTSZIP_BIN=`pwd`/$H5DETECTSZIP +H5DETECTSZIP=testh5repack_detect_szip +H5DETECTSZIP_BIN=`pwd`/$H5DETECTSZIP nerrors=0 @@ -113,6 +113,29 @@ $SRC_TOOLS_TESTFILES/tfamily00007.h5 $SRC_TOOLS_TESTFILES/tfamily00008.h5 $SRC_TOOLS_TESTFILES/tfamily00009.h5 $SRC_TOOLS_TESTFILES/tfamily00010.h5 +$SRC_TOOLS_TESTFILES/vds/1_a.h5 +$SRC_TOOLS_TESTFILES/vds/1_b.h5 +$SRC_TOOLS_TESTFILES/vds/1_c.h5 +$SRC_TOOLS_TESTFILES/vds/1_d.h5 +$SRC_TOOLS_TESTFILES/vds/1_e.h5 +$SRC_TOOLS_TESTFILES/vds/1_f.h5 +$SRC_TOOLS_TESTFILES/vds/1_vds.h5 +$SRC_TOOLS_TESTFILES/vds/2_a.h5 +$SRC_TOOLS_TESTFILES/vds/2_b.h5 +$SRC_TOOLS_TESTFILES/vds/2_c.h5 +$SRC_TOOLS_TESTFILES/vds/2_d.h5 +$SRC_TOOLS_TESTFILES/vds/2_e.h5 +$SRC_TOOLS_TESTFILES/vds/2_vds.h5 +$SRC_TOOLS_TESTFILES/vds/3_1_vds.h5 +$SRC_TOOLS_TESTFILES/vds/3_2_vds.h5 +$SRC_TOOLS_TESTFILES/vds/4_0.h5 +$SRC_TOOLS_TESTFILES/vds/4_1.h5 +$SRC_TOOLS_TESTFILES/vds/4_2.h5 +$SRC_TOOLS_TESTFILES/vds/4_vds.h5 +$SRC_TOOLS_TESTFILES/vds/5_a.h5 +$SRC_TOOLS_TESTFILES/vds/5_b.h5 +$SRC_TOOLS_TESTFILES/vds/5_c.h5 +$SRC_TOOLS_TESTFILES/vds/5_vds.h5 " LIST_OTHER_TEST_FILES=" @@ -148,10 +171,10 @@ COPY_TESTFILES_TO_TESTDIR() INODE_SDIR=`$LS -i -d $SDIR | $AWK -F' ' '{print $1}'` INODE_DDIR=`$LS -i -d $TESTDIR | $AWK -F' ' '{print $1}'` if [ "$INODE_SDIR" != "$INODE_DDIR" ]; then - $CP -f $tstfile $TESTDIR + $CP -f $tstfile $TESTDIR if [ $? -ne 0 ]; then echo "Error: FAILED to copy $tstfile ." - + # Comment out this to CREATE expected file exit $EXIT_FAILURE fi @@ -203,12 +226,12 @@ SKIP() { # Call the h5diff tool # -DIFFTEST() +DIFFTEST() { VERIFY h5diff output $@ ( cd $TESTDIR - $RUNSERIAL $H5DIFF_BIN -q "$@" + $RUNSERIAL $H5DIFF_BIN -q "$@" ) RET=$? if [ $RET != 0 ] ; then @@ -217,7 +240,7 @@ DIFFTEST() else echo " PASSED" fi - + } # Call h5repack @@ -225,7 +248,7 @@ DIFFTEST() # call TOOLTEST_MAIN and delete $output file -TOOLTEST() +TOOLTEST() { echo $@ infile=$2 @@ -251,7 +274,7 @@ TOOLTEST() } #------------------------------------------ -# Verifying layouts of a dataset +# Verifying layouts of a dataset VERIFY_LAYOUT_DSET() { layoutfile=layout-$1.$2 @@ -263,9 +286,9 @@ VERIFY_LAYOUT_DSET() shift shift shift - + TESTING $H5REPACK $@ - ( + ( cd $TESTDIR $RUNSERIAL $H5REPACK_BIN "$@" $infile $outfile ) @@ -277,7 +300,7 @@ VERIFY_LAYOUT_DSET() echo " PASSED" DIFFTEST $infile $outfile fi - + #--------------------------------- # check the layout from a dataset VERIFY "a dataset layout" @@ -309,9 +332,9 @@ VERIFY_LAYOUT_ALL() shift shift shift - + TESTING $H5REPACK $@ - ( + ( cd $TESTDIR $RUNSERIAL $H5REPACK_BIN "$@" $infile $outfile ) @@ -323,8 +346,8 @@ VERIFY_LAYOUT_ALL() echo " PASSED" DIFFTEST $infile $outfile fi - - + + #--------------------------------- # check the layout from a dataset # check if the other layouts still exsit @@ -351,7 +374,7 @@ VERIFY_LAYOUT_ALL() echo " PASSED" fi fi - else + else # if COMPACT if [ $expectlayout = "COMPACT" ]; then TESTING $H5DUMP_BIN -pH $outfile @@ -403,7 +426,7 @@ VERIFY_LAYOUT_ALL() # same as TOOLTEST, but it uses the old syntax -i input_file -o output_file # -TOOLTEST0() +TOOLTEST0() { infile=$2 outfile=out-$1.$2 @@ -431,7 +454,7 @@ TOOLTEST0() # same as TOOLTEST, but it uses without -i -o options # used to test the family driver, where these files reside # -TOOLTEST1() +TOOLTEST1() { infile=$2 outfile=out-$1.$2 @@ -446,19 +469,19 @@ TOOLTEST1() ) RET=$? if [ $RET != 0 ] ; then - echo "*FAILED*" - nerrors="`expr $nerrors + 1`" + echo "*FAILED*" + nerrors="`expr $nerrors + 1`" else - echo " PASSED" - DIFFTEST $infile $outfile + echo " PASSED" + DIFFTEST $infile $outfile fi rm -f $outfile } - + # This is same as TOOLTEST() with comparing display output # from -v option # -TOOLTESTV() +TOOLTESTV() { expect="$TESTDIR/$2.tst" actual="$TESTDIR/`basename $2 .ddl`.out" @@ -468,7 +491,7 @@ TOOLTESTV() outfile=out-$1.$2 shift shift - + # Run test. TESTING $H5REPACK $@ ( @@ -477,11 +500,11 @@ TOOLTESTV() ) >$actual 2>$actual_err RET=$? if [ $RET != 0 ] ; then - echo "*FAILED*" - nerrors="`expr $nerrors + 1`" + echo "*FAILED*" + nerrors="`expr $nerrors + 1`" else - echo " PASSED" - DIFFTEST $infile $outfile + echo " PASSED" + DIFFTEST $infile $outfile fi # display output compare @@ -497,15 +520,15 @@ TOOLTESTV() nerrors="`expr $nerrors + 1`" test yes = "$verbose" && diff -c $expect $actual |sed 's/^/ /' fi - + rm -f $actual $actual_err rm -f $outfile } - + # This is same as TOOLTESTV() with comparing h5dump output # from -pH option # -TOOLTEST_DUMP() +TOOLTEST_DUMP() { infile=$2 outfile=out-$1.$2 @@ -515,7 +538,7 @@ TOOLTEST_DUMP() shift shift - + # Run test. TESTING $H5REPACK $@ ( @@ -531,12 +554,12 @@ TOOLTEST_DUMP() VERIFY h5dump output $@ ( cd $TESTDIR - $RUNSERIAL $H5DUMP_BIN -pH $outfile + $RUNSERIAL $H5DUMP_BIN -pH $outfile ) >$actual 2>$actual_err cat $actual_err >> $actual RET=$? - + fi if cmp -s $expect $actual; then @@ -547,7 +570,7 @@ TOOLTEST_DUMP() nerrors="`expr $nerrors + 1`" test yes = "$verbose" && diff -c $expect $actual |sed 's/^/ /' fi - + rm -f $actual $actual_err rm -f $outfile } @@ -611,14 +634,14 @@ TOOLTEST_META() # verify sizes. MESSAGE "Verify the sizes of both output files ($size1 vs $size2)" if [ $size1 -lt $size2 ]; then - # pass - echo " PASSED" + # pass + echo " PASSED" else - #fail - echo "*FAILED*" + #fail + echo "*FAILED*" nerrors="`expr $nerrors + 1`" fi - + rm -f $outfile } # ADD_HELP_TEST @@ -648,7 +671,7 @@ TOOLTEST_HELP() { echo " Expected output (*.txt) differs from actual output (*.out)" nerrors="`expr $nerrors + 1`" fi - + # Clean up output file if test -z "$HDF5_NOCLEANUP"; then rm -f $actual $actual_err @@ -674,28 +697,28 @@ STDOUT_FILTER() { # Each run generates "<file>.out.h5" and the tool h5diff is used to # compare the input and output files # -# the tests are the same as the program h5repacktst, but run from the CLI +# the tests are the same as the program h5repacktst, but run from the CLI # # See which filters are usable (and skip tests for filters we # don't have). Do this by searching H5pubconf.h to see which # filters are defined. -# detect whether the encoder is present. +# detect whether the encoder is present. USE_FILTER_SZIP_ENCODER="no"; if test $USE_FILTER_SZIP = "yes"; then USE_FILTER_SZIP_ENCODER=`$RUNSERIAL $H5DETECTSZIP_BIN` fi ############################################################################## -### T H E T E S T S +### T H E T E S T S ############################################################################## # prepare for test COPY_TESTFILES_TO_TESTDIR TOOLTEST_HELP h5repack-help.txt -h -# copy files (these files have no filters) +# copy files (these files have no filters) TOOLTEST fill h5repack_fill.h5 TOOLTEST objs h5repack_objs.h5 TOOLTEST attr h5repack_attr.h5 @@ -719,8 +742,8 @@ if test $USE_FILTER_DEFLATE != "yes" ; then else TOOLTEST gzip_individual $arg fi - -# gzip for all + +# gzip for all arg="h5repack_layout.h5 -f GZIP=1" if test $USE_FILTER_DEFLATE != "yes" ; then SKIP $arg @@ -733,7 +756,7 @@ arg="h5repack_layout.h5 -f dset2:SZIP=8,EC -l dset2:CHUNK=20x10" if test $USE_FILTER_SZIP_ENCODER != "yes" -o $USE_FILTER_SZIP != "yes" ; then SKIP $arg else - TOOLTEST szip_individual $arg + TOOLTEST szip_individual $arg fi # szip for all @@ -741,18 +764,18 @@ arg="h5repack_layout.h5 -f SZIP=8,NN" if test $USE_FILTER_SZIP_ENCODER != "yes" -o $USE_FILTER_SZIP != "yes" ; then SKIP $arg else - TOOLTEST szip_all $arg + TOOLTEST szip_all $arg fi # shuffle with individual object arg="h5repack_layout.h5 -f dset2:SHUF -l dset2:CHUNK=20x10" -TOOLTEST shuffle_individual $arg - +TOOLTEST shuffle_individual $arg + # shuffle for all arg="h5repack_layout.h5 -f SHUF" TOOLTEST shuffle_all $arg - + # fletcher32 with individual object arg="h5repack_layout.h5 -f dset2:FLET -l dset2:CHUNK=20x10" TOOLTEST fletcher_individual $arg @@ -777,7 +800,7 @@ else # compare output TOOLTESTV gzip_verbose_filters $arg fi - + ########################################################### # the following tests assume the input files have filters ########################################################### @@ -789,7 +812,7 @@ if test $USE_FILTER_SZIP_ENCODER != "yes" -o $USE_FILTER_SZIP != "yes" ; then else TOOLTEST szip_copy $arg fi - + # szip remove arg="h5repack_szip.h5 --filter=dset_szip:NONE" if test $USE_FILTER_SZIP_ENCODER != "yes" -o $USE_FILTER_SZIP != "yes" ; then @@ -797,7 +820,7 @@ if test $USE_FILTER_SZIP_ENCODER != "yes" -o $USE_FILTER_SZIP != "yes" ; then else TOOLTEST szip_remove $arg fi - + # deflate copy arg="h5repack_deflate.h5" if test $USE_FILTER_DEFLATE != "yes" ; then @@ -813,7 +836,7 @@ if test $USE_FILTER_DEFLATE != "yes" ; then else TOOLTEST deflate_remove $arg fi - + # shuffle copy arg="h5repack_shuffle.h5" TOOLTEST shuffle_copy $arg @@ -868,14 +891,14 @@ arg="h5repack_deflate.h5 -f dset_deflate:SZIP=8,NN" if test $USE_FILTER_SZIP_ENCODER != "yes" -o $USE_FILTER_SZIP != "yes" -o $USE_FILTER_DEFLATE != "yes" ; then SKIP $arg else - TOOLTEST deflate_convert $arg + TOOLTEST deflate_convert $arg fi arg="h5repack_szip.h5 -f dset_szip:GZIP=1" if test $USE_FILTER_SZIP != "yes" -o $USE_FILTER_SZIP_ENCODER != "yes" -o $USE_FILTER_DEFLATE != "yes" ; then SKIP $arg else - TOOLTEST szip_convert $arg + TOOLTEST szip_convert $arg fi @@ -890,9 +913,9 @@ fi #file arg="h5repack_layout.h5 -e h5repack.info" if test $USE_FILTER_DEFLATE != "yes" ; then - SKIP $arg + SKIP $arg else - TOOLTEST deflate_file $arg + TOOLTEST deflate_file $arg fi ######################################################### @@ -937,18 +960,18 @@ VERIFY_LAYOUT_DSET contig_small_compa h5repack_layout2.h5 contig_small COMPACT - VERIFY_LAYOUT_DSET contig_small_fixed_compa h5repack_layout2.h5 chunked_small_fixed COMPACT -l chunked_small_fixed:COMPA -#--------------------------------------------------------------------------- -# Test file contains chunked datasets (need multiple dsets) with +#--------------------------------------------------------------------------- +# Test file contains chunked datasets (need multiple dsets) with # unlimited max dims. (HDFFV-7933) # Use first dset to test. #--------------------------------------------------------------------------- # chunk to chunk - specify chunk dim bigger than any current dim VERIFY_LAYOUT_DSET chunk2chunk h5repack_layout3.h5 chunk_unlimit1 CHUNK -l chunk_unlimit1:CHUNK=100x300 -# chunk to contiguous +# chunk to contiguous VERIFY_LAYOUT_DSET chunk2conti h5repack_layout3.h5 chunk_unlimit1 CONTI -l chunk_unlimit1:CONTI -# chunk to compact - convert big dataset (should be > 64k) for this purpose, +# chunk to compact - convert big dataset (should be > 64k) for this purpose, # should remain as original layout (chunk) VERIFY_LAYOUT_DSET chunk2compa h5repack_layout3.h5 chunk_unlimit1 CHUNK -l chunk_unlimit1:COMPA @@ -956,7 +979,7 @@ VERIFY_LAYOUT_DSET chunk2compa h5repack_layout3.h5 chunk_unlimit1 CHUNK -l chunk # Test -f for some specific cases. Chunked dataset with unlimited max dims. # (HDFFV-8012) #-------------------------------------------------------------------------- -# - should not fail +# - should not fail # - should not change max dims from unlimit # chunk dim is bigger than dataset dim. ( dset size < 64k ) @@ -972,14 +995,14 @@ VERIFY_LAYOUT_DSET error3 h5repack_layout3.h5 chunk_unlimit3 H5S_UNLIMITED -f ch TOOLTEST error4 h5repack_layout3.h5 -f NONE #-------------------------------------------------------------------------- -# Test base: Convert CHUNK to CONTI for a chunked dataset with small dataset +# Test base: Convert CHUNK to CONTI for a chunked dataset with small dataset # (dset size < 64K) and with unlimited max dims on a condition as follow. # (HDFFV-8214) #-------------------------------------------------------------------------- # chunk dim is bigger than dataset dim. should succeed. VERIFY_LAYOUT_DSET ckdim_biger h5repack_layout3.h5 chunk_unlimit2 CONTI -l chunk_unlimit2:CONTI -# chunk dim is smaller than dataset dim. should succeed. +# chunk dim is smaller than dataset dim. should succeed. VERIFY_LAYOUT_DSET ckdim_smaller h5repack_layout3.h5 chunk_unlimit3 CONTI -l chunk_unlimit3:CONTI @@ -1022,7 +1045,7 @@ if test $USE_FILTER_DEFLATE != "yes" ; then SKIP $arg else TOOLTEST0 old_style_layout_short_switches $arg -fi +fi # add a userblock to file arg="h5repack_objs.h5 -u ublock.bin -b 2048" @@ -1049,20 +1072,40 @@ TOOLTEST1 family tfamily%05d.h5 TOOLTEST bug1814 h5repack_refs.h5 # test attribute with various references (bug1797 / HDFFV-5932) -# the references in attribute of compund or vlen datatype -TOOLTEST HDFFV-5932 h5repack_attr_refs.h5 +# the references in attribute of compund or vlen datatype +TOOLTEST HDFFV-5932 h5repack_attr_refs.h5 -# Add test for memory leak in attirbute. This test is verified by CTEST. -# 1. leak from vlen string +# Add test for memory leak in attirbute. This test is verified by CTEST. +# 1. leak from vlen string # 2. leak from compound type without reference member # (HDFFV-7840, ) # Note: this test is experimental for sharing test file among tools TOOLTEST HDFFV-7840 h5diff_attr1.h5 -# tests for metadata block size option +# tests for metadata block size option TOOLTEST_META meta_short h5repack_layout.h5 -M 8192 TOOLTEST_META meta_long h5repack_layout.h5 --metadata_block_size=8192 +# VDS tests + +######################################################### +# layout options +######################################################### +VERIFY_LAYOUT_DSET vds_dset_conti 1_vds.h5 vds_dset CONTIGUOUS -l vds_dset:CONTI +VERIFY_LAYOUT_ALL vds_null_conti 2_vds.h5 CONTIGUOUS -l CONTI +VERIFY_LAYOUT_DSET vds_dset_compa 1_vds.h5 vds_dset COMPACT -l vds_dset:COMPA +VERIFY_LAYOUT_ALL vds_null_compa 2_vds.h5 COMPACT -l COMPA + +################################################################ +# layout conversions +############################################################### +VERIFY_LAYOUT_DSET vds_compa_conti 4_vds.h5 vds_dset CONTIGUOUS -l vds_dset:CONTI +VERIFY_LAYOUT_DSET vds_compa_compa 4_vds.h5 vds_dset COMPACT -l vds_dset:COMPA +VERIFY_LAYOUT_DSET vds_conti_compa 4_vds.h5 vds_dset COMPACT -l vds_dset:COMPA +VERIFY_LAYOUT_DSET vds_conti_conti 4_vds.h5 vds_dset CONTIGUOUS -l vds_dset:CONTI +VERIFY_LAYOUT_DSET vds_compa 4_vds.h5 vds_dset COMPACT -l vds_dset:COMPA +VERIFY_LAYOUT_DSET vds_conti 4_vds.h5 vds_dset CONTIGUOUS -l vds_dset:CONTI + # Clean up temporary files/directories CLEAN_TESTFILES_AND_TESTDIR diff --git a/tools/h5stat/h5stat.c b/tools/h5stat/h5stat.c index c19aba5..ac6ca23 100644 --- a/tools/h5stat/h5stat.c +++ b/tools/h5stat/h5stat.c @@ -1342,8 +1342,8 @@ print_dataset_info(const iter_t *iter) printf("Dataset layout information:\n"); for(u = 0; u < H5D_NLAYOUTS; u++) - printf("\tDataset layout counts[%s]: %lu\n", (u == 0 ? "COMPACT" : - (u == 1 ? "CONTIG" : "CHUNKED")), iter->dset_layouts[u]); + printf("\tDataset layout counts[%s]: %lu\n", (u == H5D_COMPACT ? "COMPACT" : + (u == H5D_CONTIGUOUS ? "CONTIG" : (u == H5D_CHUNKED ? "CHUNKED" : "VIRTUAL"))), iter->dset_layouts[u]); printf("\tNumber of external files : %lu\n", iter->nexternal); printf("Dataset filters information:\n"); diff --git a/tools/h5stat/testfiles/h5stat_dims1.ddl b/tools/h5stat/testfiles/h5stat_dims1.ddl index c285ea4..07b2900 100644 --- a/tools/h5stat/testfiles/h5stat_dims1.ddl +++ b/tools/h5stat/testfiles/h5stat_dims1.ddl @@ -31,6 +31,7 @@ Dataset layout information: Dataset layout counts[COMPACT]: 0 Dataset layout counts[CONTIG]: 23 Dataset layout counts[CHUNKED]: 0 + Dataset layout counts[VIRTUAL]: 0 Number of external files : 0 Dataset filters information: Number of datasets with: diff --git a/tools/h5stat/testfiles/h5stat_dims2.ddl b/tools/h5stat/testfiles/h5stat_dims2.ddl index 769749e..dbccd05 100644 --- a/tools/h5stat/testfiles/h5stat_dims2.ddl +++ b/tools/h5stat/testfiles/h5stat_dims2.ddl @@ -22,6 +22,7 @@ Dataset layout information: Dataset layout counts[COMPACT]: 0 Dataset layout counts[CONTIG]: 23 Dataset layout counts[CHUNKED]: 0 + Dataset layout counts[VIRTUAL]: 0 Number of external files : 0 Dataset filters information: Number of datasets with: diff --git a/tools/h5stat/testfiles/h5stat_filters-d.ddl b/tools/h5stat/testfiles/h5stat_filters-d.ddl index 2e0bd64..6e6dd61 100644 --- a/tools/h5stat/testfiles/h5stat_filters-d.ddl +++ b/tools/h5stat/testfiles/h5stat_filters-d.ddl @@ -18,6 +18,7 @@ Dataset layout information: Dataset layout counts[COMPACT]: 1 Dataset layout counts[CONTIG]: 2 Dataset layout counts[CHUNKED]: 12 + Dataset layout counts[VIRTUAL]: 0 Number of external files : 2 Dataset filters information: Number of datasets with: diff --git a/tools/h5stat/testfiles/h5stat_filters-dT.ddl b/tools/h5stat/testfiles/h5stat_filters-dT.ddl index 9ef3e82..b14ca9f 100644 --- a/tools/h5stat/testfiles/h5stat_filters-dT.ddl +++ b/tools/h5stat/testfiles/h5stat_filters-dT.ddl @@ -18,6 +18,7 @@ Dataset layout information: Dataset layout counts[COMPACT]: 1 Dataset layout counts[CONTIG]: 2 Dataset layout counts[CHUNKED]: 12 + Dataset layout counts[VIRTUAL]: 0 Number of external files : 2 Dataset filters information: Number of datasets with: diff --git a/tools/h5stat/testfiles/h5stat_filters.ddl b/tools/h5stat/testfiles/h5stat_filters.ddl index 24522cd..1a4fd72 100644 --- a/tools/h5stat/testfiles/h5stat_filters.ddl +++ b/tools/h5stat/testfiles/h5stat_filters.ddl @@ -56,6 +56,7 @@ Dataset layout information: Dataset layout counts[COMPACT]: 1 Dataset layout counts[CONTIG]: 2 Dataset layout counts[CHUNKED]: 12 + Dataset layout counts[VIRTUAL]: 0 Number of external files : 2 Dataset filters information: Number of datasets with: diff --git a/tools/h5stat/testfiles/h5stat_links2.ddl b/tools/h5stat/testfiles/h5stat_links2.ddl index 09bf937..4622884 100644 --- a/tools/h5stat/testfiles/h5stat_links2.ddl +++ b/tools/h5stat/testfiles/h5stat_links2.ddl @@ -64,6 +64,7 @@ Dataset layout information: Dataset layout counts[COMPACT]: 0 Dataset layout counts[CONTIG]: 23 Dataset layout counts[CHUNKED]: 0 + Dataset layout counts[VIRTUAL]: 0 Number of external files : 0 Dataset filters information: Number of datasets with: diff --git a/tools/h5stat/testfiles/h5stat_newgrat.ddl b/tools/h5stat/testfiles/h5stat_newgrat.ddl index 33d756b..e305f58 100644 --- a/tools/h5stat/testfiles/h5stat_newgrat.ddl +++ b/tools/h5stat/testfiles/h5stat_newgrat.ddl @@ -54,6 +54,7 @@ Dataset layout information: Dataset layout counts[COMPACT]: 0 Dataset layout counts[CONTIG]: 1 Dataset layout counts[CHUNKED]: 0 + Dataset layout counts[VIRTUAL]: 0 Number of external files : 0 Dataset filters information: Number of datasets with: diff --git a/tools/h5stat/testfiles/h5stat_numattrs2.ddl b/tools/h5stat/testfiles/h5stat_numattrs2.ddl index 1313aec..ccb23c1 100644 --- a/tools/h5stat/testfiles/h5stat_numattrs2.ddl +++ b/tools/h5stat/testfiles/h5stat_numattrs2.ddl @@ -65,6 +65,7 @@ Dataset layout information: Dataset layout counts[COMPACT]: 0 Dataset layout counts[CONTIG]: 23 Dataset layout counts[CHUNKED]: 0 + Dataset layout counts[VIRTUAL]: 0 Number of external files : 0 Dataset filters information: Number of datasets with: diff --git a/tools/h5stat/testfiles/h5stat_tsohm.ddl b/tools/h5stat/testfiles/h5stat_tsohm.ddl index 37de79b..4cf33fc 100644 --- a/tools/h5stat/testfiles/h5stat_tsohm.ddl +++ b/tools/h5stat/testfiles/h5stat_tsohm.ddl @@ -53,6 +53,7 @@ Dataset layout information: Dataset layout counts[COMPACT]: 0 Dataset layout counts[CONTIG]: 0 Dataset layout counts[CHUNKED]: 3 + Dataset layout counts[VIRTUAL]: 0 Number of external files : 0 Dataset filters information: Number of datasets with: diff --git a/tools/lib/h5tools.h b/tools/lib/h5tools.h index d6c3720..6512f9b 100644 --- a/tools/lib/h5tools.h +++ b/tools/lib/h5tools.h @@ -81,7 +81,7 @@ #define FLETCHER32 "CHECKSUM FLETCHER32" #define SZIP "COMPRESSION SZIP" #define NBIT "COMPRESSION NBIT" -#define SCALEOFFSET "COMPRESSION SCALEOFFSET" +#define SCALEOFFSET "COMPRESSION SCALEOFFSET" #define SCALEOFFSET_MINBIT "MIN BITS" #define STORAGE_LAYOUT "STORAGE_LAYOUT" #define CONTIGUOUS "CONTIGUOUS" @@ -93,6 +93,16 @@ #define PACKED_BITS "PACKED_BITS" #define PACKED_OFFSET "OFFSET" #define PACKED_LENGTH "LENGTH" +#define VDS_VIRTUAL "VIRTUAL" +#define VDS_MAPPING "MAPPING" +#define VDS_SOURCE "SOURCE" +#define VDS_REG_HYPERSLAB "SELECTION REGULAR_HYPERSLAB" +#define VDS_IRR_HYPERSLAB "SELECTION IRREGULAR_HYPERSLAB" +#define VDS_POINT "POINT" +#define VDS_SRC_FILE "FILE" +#define VDS_SRC_DATASET "DATASET" +#define VDS_NONE "SELECTION NONE" +#define VDS_ALL "SELECTION ALL" #define BEGIN "{" #define END "}" @@ -182,6 +192,15 @@ typedef struct h5tools_dump_header_t { const char *dataspacedimbegin; const char *dataspacedimend; + const char *virtualselectionbegin; + const char *virtualselectionend; + const char *virtualselectionblockbegin; + const char *virtualselectionblockend; + const char *virtualfilenamebegin; + const char *virtualfilenameend; + const char *virtualdatasetnamebegin; + const char *virtualdatasetnameend; + } h5tools_dump_header_t; /* diff --git a/tools/lib/h5tools_dump.c b/tools/lib/h5tools_dump.c index 6388273..2afe3e4 100644 --- a/tools/lib/h5tools_dump.c +++ b/tools/lib/h5tools_dump.c @@ -179,6 +179,15 @@ BLOCK, /*blockbegin */ "", /*dataspacedescriptionend */ "(", /*dataspacedimbegin */ ")", /*dataspacedimend */ + +"", /*virtualselectionbegin */ +"", /*virtualselectionend */ +"{", /*virtualselectionblockbegin */ +"}", /*virtualselectionblockend */ +"\"", /*virtualfilenamebeginbegin */ +"\"", /*virtualfilenamebeginend */ +"\"", /*virtualdatasetnamebegin */ +"\"", /*virtualdtatasetnameend */ }; const h5tools_dump_header_t* h5tools_dump_header_format; @@ -216,6 +225,14 @@ void h5tools_print_dims(h5tools_str_t *buffer, hsize_t *s, int dims); void h5tools_dump_subsetting_header(FILE *stream, const h5tool_format_t *info, h5tools_context_t *ctx, struct subset_t *sset, int dims); +void h5tools_print_virtual_selection(hid_t vspace, hid_t dcpl_id, size_t index, + FILE *stream, const h5tool_format_t *info, + h5tools_context_t *ctx/*in,out*/, + h5tools_str_t *buffer/*string into which to render */, + hsize_t *curr_pos/*total data element position*/, + size_t ncols, hsize_t region_elmt_counter/*element counter*/, + hsize_t elmt_counter); + void h5tools_dump_init(void) { @@ -368,7 +385,7 @@ h5tools_dump_simple_data(FILE *stream, const h5tool_format_t *info, hid_t contai } ctx->need_prefix = TRUE; - + if(FALSE == dimension_break) elmt_counter = 0; } /* end for (i = 0; i < nelmts... */ @@ -810,7 +827,7 @@ h5tools_print_region_data_points(hid_t region_space, hid_t region_id, HGOTO_ERROR(FAIL, H5E_tools_min_id_g, "Could not allocate buffer for dims"); dims1[0] = npoints; - + /* Create dataspace for reading buffer */ if((mem_space = H5Screate_simple(1, dims1, NULL)) < 0) HGOTO_ERROR(FAIL, H5E_tools_min_id_g, "H5Screate_simple failed"); @@ -1457,7 +1474,7 @@ h5tools_dump_simple_subset(FILE *stream, const h5tool_format_t *info, h5tools_co if((f_space = H5Dget_space(dset)) < 0) H5E_THROW(FAIL, H5E_tools_min_id_g, "H5Dget_space failed"); - + if((sndims = H5Sget_simple_extent_ndims(f_space)) < 0) H5E_THROW(FAIL, H5E_tools_min_id_g, "H5Sget_simple_extent_ndims failed"); ctx->ndims = (unsigned)sndims; @@ -1522,6 +1539,7 @@ h5tools_dump_simple_dset(FILE *stream, const h5tool_format_t *info, h5tools_cont /* Hyperslab info */ hsize_t hs_offset[H5S_MAX_RANK]; /* starting offset */ hsize_t hs_size[H5S_MAX_RANK]; /* size this pass */ + //hsize_t hs_count[H5S_MAX_RANK]; /* size this pass */ hsize_t hs_nelmts; /* elements in request */ /* VL data special information */ @@ -1604,9 +1622,11 @@ h5tools_dump_simple_dset(FILE *stream, const h5tool_format_t *info, h5tools_cont hs_size[i] = MIN(total_size[i] - hs_offset[i], sm_size[i]); ctx->p_max_idx[i] = ctx->p_min_idx[i] + hs_size[i]; hs_nelmts *= hs_size[i]; +// hs_count[i] = 1; } H5Sselect_hyperslab(f_space, H5S_SELECT_SET, hs_offset, NULL, hs_size, NULL); +// H5Sselect_hyperslab(f_space, H5S_SELECT_SET, hs_offset, NULL, hs_count, hs_size); H5Sselect_hyperslab(sm_space, H5S_SELECT_SET, zero, NULL, &hs_nelmts, NULL); } else { @@ -1743,7 +1763,7 @@ CATCH *------------------------------------------------------------------------- */ int -h5tools_dump_dset(FILE *stream, const h5tool_format_t *info, h5tools_context_t *ctx, +h5tools_dump_dset(FILE *stream, const h5tool_format_t *info, h5tools_context_t *ctx, hid_t dset, struct subset_t *sset) { hid_t f_space = -1; @@ -1819,7 +1839,7 @@ done: *------------------------------------------------------------------------- */ int -h5tools_dump_mem(FILE *stream, const h5tool_format_t *info, h5tools_context_t *ctx, +h5tools_dump_mem(FILE *stream, const h5tool_format_t *info, h5tools_context_t *ctx, hid_t obj_id, hid_t type, hid_t space, void *mem) { HERR_INIT(int, SUCCEED) @@ -1898,18 +1918,18 @@ h5tools_print_datatype(FILE *stream, h5tools_str_t *buffer, const h5tool_format_ } else h5tools_str_append(buffer, "\"%s\"", obj->objname); - } + } else { error_msg("unknown committed type.\n"); h5tools_setstatus(EXIT_FAILURE); } return ret_value; - } - + } + if (info->line_ncols > 0) ncols = info->line_ncols; - + switch (type_class) { case H5T_INTEGER: if (H5Tequal(type, H5T_STD_I8BE) == TRUE) { @@ -2231,7 +2251,7 @@ h5tools_print_datatype(FILE *stream, h5tools_str_t *buffer, const h5tool_format_ HERROR(H5E_tools_g, H5E_tools_min_id_g, "H5Tset_order failed"); } /* end if */ else if(order == H5T_ORDER_BE) { - if(H5Tset_order(str_type, H5T_ORDER_BE) < 0) + if(H5Tset_order(str_type, H5T_ORDER_BE) < 0) HERROR(H5E_tools_g, H5E_tools_min_id_g, "H5Tset_order failed"); } /* end if */ @@ -2262,7 +2282,7 @@ h5tools_print_datatype(FILE *stream, h5tools_str_t *buffer, const h5tool_format_ HERROR(H5E_tools_g, H5E_tools_min_id_g, "H5Tset_order failed"); } /* end if */ else if(order == H5T_ORDER_BE) { - if(H5Tset_order(str_type, H5T_ORDER_BE) < 0) + if(H5Tset_order(str_type, H5T_ORDER_BE) < 0) HERROR(H5E_tools_g, H5E_tools_min_id_g, "H5Tset_order failed"); } /* end if */ @@ -2336,9 +2356,9 @@ h5tools_print_datatype(FILE *stream, h5tools_str_t *buffer, const h5tool_format_ h5tools_str_reset(buffer); h5tools_str_append(buffer, "OPAQUE_TAG \"%s\";", ttag); h5tools_render_element(stream, info, ctx, buffer, &curr_pos, (size_t)ncols, (hsize_t)0, (hsize_t)0); - + H5free_memory(ttag); - } + } ctx->indent_level--; ctx->need_prefix = TRUE; @@ -2352,7 +2372,7 @@ h5tools_print_datatype(FILE *stream, h5tools_str_t *buffer, const h5tool_format_ if((snmembers = H5Tget_nmembers(type)) < 0) H5E_THROW(FAIL, H5E_tools_min_id_g, "H5Tget_nmembers failed"); nmembers = (unsigned)snmembers; - + h5tools_str_append(buffer, "H5T_COMPOUND %s", h5tools_dump_header_format->structblockbegin); h5tools_render_element(stream, info, ctx, buffer, &curr_pos, (size_t)ncols, (hsize_t)0, (hsize_t)0); @@ -2407,7 +2427,7 @@ h5tools_print_datatype(FILE *stream, h5tools_str_t *buffer, const h5tool_format_ h5tools_str_reset(buffer); h5tools_print_datatype(stream, buffer, info, ctx, super, TRUE); - + if(H5Tclose(super) < 0) HERROR(H5E_tools_g, H5E_tools_min_id_g, "H5Tclose failed"); @@ -2597,7 +2617,7 @@ h5tools_print_enum(FILE *stream, h5tools_str_t *buffer, const h5tool_format_t *i if (info->line_ncols > 0) ncols = info->line_ncols; - + if((snmembs = H5Tget_nmembers(type)) < 0) H5E_THROW(FAIL, H5E_tools_min_id_g, "H5Tget_nmembers failed"); nmembs = (unsigned)snmembs; @@ -2737,7 +2757,7 @@ h5tools_dump_datatype(FILE *stream, const h5tool_format_t *info, ncols = info->line_ncols; ctx->need_prefix = TRUE; - + h5tools_str_reset(&buffer); h5tools_str_append(&buffer, "%s %s ", h5tools_dump_header_format->datatypebegin, @@ -2759,7 +2779,7 @@ h5tools_dump_datatype(FILE *stream, const h5tool_format_t *info, /*------------------------------------------------------------------------- * Function: dump_dataspace * - * Purpose: Dump the dataspace. + * Purpose: Dump the dataspace. * * Return: void * @@ -2785,7 +2805,7 @@ h5tools_dump_dataspace(FILE *stream, const h5tool_format_t *info, ncols = info->line_ncols; ctx->need_prefix = TRUE; - + h5tools_str_reset(&buffer); h5tools_str_append(&buffer, "%s ", h5tools_dump_header_format->dataspacebegin); @@ -2835,7 +2855,7 @@ h5tools_dump_oid(FILE *stream, const h5tool_format_t *info, ctx->need_prefix = TRUE; h5tools_simple_prefix(stream, info, ctx, curr_pos, 0); - + h5tools_str_reset(&buffer); h5tools_str_append(&buffer, "%s %s %d %s", OBJID, BEGIN, oid, END); h5tools_render_element(stream, info, ctx, &buffer, &curr_pos, (size_t)ncols, (hsize_t)0, (hsize_t)0); @@ -2843,7 +2863,79 @@ h5tools_dump_oid(FILE *stream, const h5tool_format_t *info, h5tools_str_close(&buffer); } +/*------------------------------------------------------------------------- + * Function: print_virtual_selection + * + * Purpose: Print the virtual dataset selection. + * + * Return: void + *------------------------------------------------------------------------- + */ +void +h5tools_print_virtual_selection(hid_t vspace, hid_t dcpl_id, size_t index, + FILE *stream, const h5tool_format_t *info, + h5tools_context_t *ctx/*in,out*/, + h5tools_str_t *buffer/*string into which to render */, + hsize_t *curr_pos/*total data element position*/, + size_t ncols, hsize_t region_elmt_counter/*element counter*/, + hsize_t elmt_counter) +{ + switch(H5Sget_select_type(vspace)) { + case H5S_SEL_NONE: /* Nothing selected */ + ctx->need_prefix = TRUE; + h5tools_simple_prefix(stream, info, ctx, curr_pos, 0); + + h5tools_str_reset(buffer); + h5tools_str_append(buffer, "%s", VDS_NONE); + break; + case H5S_SEL_POINTS: /* Sequence of points selected */ + h5tools_str_reset(buffer); + h5tools_str_append(buffer, "%s %s ", VDS_POINT, h5tools_dump_header_format->virtualselectionblockbegin); + h5tools_str_dump_space_points(buffer, vspace, info); + h5tools_str_append(buffer, " %s", h5tools_dump_header_format->virtualselectionblockend); + break; + case H5S_SEL_HYPERSLABS: /* "New-style" hyperslab selection defined */ + ctx->need_prefix = TRUE; + h5tools_simple_prefix(stream, info, ctx, curr_pos, 0); + + h5tools_str_reset(buffer); + if (H5Sis_regular_hyperslab(vspace)) { + h5tools_str_append(buffer, "%s %s ", VDS_REG_HYPERSLAB, h5tools_dump_header_format->virtualselectionblockbegin); + h5tools_render_element(stream, info, ctx, buffer, curr_pos, (size_t) ncols, (hsize_t) 0, (hsize_t) 0); + + h5tools_str_reset(buffer); + h5tools_str_dump_space_slabs(buffer, vspace, info, ctx); + } + else { + h5tools_str_append(buffer, "%s %s ", VDS_IRR_HYPERSLAB, h5tools_dump_header_format->virtualselectionblockbegin); + h5tools_render_element(stream, info, ctx, buffer, curr_pos, (size_t) ncols, (hsize_t) 0, (hsize_t) 0); + ctx->indent_level++; + ctx->need_prefix = TRUE; + h5tools_simple_prefix(stream, info, ctx, curr_pos, 0); + + h5tools_str_reset(buffer); + h5tools_str_dump_space_blocks(buffer, vspace, info); + ctx->indent_level--; + } + h5tools_render_element(stream, info, ctx, buffer, curr_pos, (size_t) ncols, (hsize_t) 0, (hsize_t) 0); + ctx->need_prefix = TRUE; + h5tools_simple_prefix(stream, info, ctx, curr_pos, 0); + h5tools_str_reset(buffer); + h5tools_str_append(buffer, "%s", h5tools_dump_header_format->virtualselectionblockend); + break; + case H5S_SEL_ALL: /* Entire extent selected */ + ctx->need_prefix = TRUE; + h5tools_simple_prefix(stream, info, ctx, curr_pos, 0); + + h5tools_str_reset(buffer); + h5tools_str_append(buffer, "%s", VDS_ALL); + break; + default: + h5tools_str_append(buffer, "Unknown Selection"); + } + h5tools_render_element(stream, info, ctx, buffer, curr_pos, (size_t) ncols, (hsize_t) 0, (hsize_t) 0); +} /*------------------------------------------------------------------------- * Function: dump_fill_value @@ -2905,6 +2997,7 @@ h5tools_dump_dcpl(FILE *stream, const h5tool_format_t *info, off_t offset; /* offset of external file */ char f_name[256]; /* filter name */ char name[256]; /* external or virtual file name */ + char dsetname[256]; /* virtual datset name */ hsize_t chsize[64]; /* chunk size in elements */ hsize_t size; /* size of external file */ hsize_t storage_size; @@ -2926,19 +3019,18 @@ h5tools_dump_dcpl(FILE *stream, const h5tool_format_t *info, */ ctx->need_prefix = TRUE; h5tools_simple_prefix(stream, info, ctx, curr_pos, 0); - + h5tools_str_reset(&buffer); h5tools_str_append(&buffer, "%s %s", STORAGE_LAYOUT, BEGIN); h5tools_render_element(stream, info, ctx, &buffer, &curr_pos, (size_t)ncols, (hsize_t)0, (hsize_t)0); - ctx->indent_level++; - - ctx->need_prefix = TRUE; - h5tools_simple_prefix(stream, info, ctx, curr_pos, 0); - stl = H5Pget_layout(dcpl_id); switch (stl) { case H5D_CHUNKED: + ctx->indent_level++; + ctx->need_prefix = TRUE; + h5tools_simple_prefix(stream, info, ctx, curr_pos, 0); + h5tools_str_reset(&buffer); h5tools_str_append(&buffer, "%s ", CHUNKED); @@ -3001,8 +3093,13 @@ h5tools_dump_dcpl(FILE *stream, const h5tool_format_t *info, h5tools_str_append(&buffer, "SIZE " HSIZE_T_FORMAT, storage_size); } h5tools_render_element(stream, info, ctx, &buffer, &curr_pos, (size_t) ncols, (hsize_t) 0, (hsize_t) 0); + ctx->indent_level--; break; case H5D_COMPACT: + ctx->indent_level++; + ctx->need_prefix = TRUE; + h5tools_simple_prefix(stream, info, ctx, curr_pos, 0); + h5tools_str_reset(&buffer); h5tools_str_append(&buffer, "%s", COMPACT); h5tools_render_element(stream, info, ctx, &buffer, &curr_pos, (size_t) ncols, (hsize_t) 0, (hsize_t) 0); @@ -3013,6 +3110,7 @@ h5tools_dump_dcpl(FILE *stream, const h5tool_format_t *info, h5tools_str_reset(&buffer); h5tools_str_append(&buffer, "SIZE " HSIZE_T_FORMAT, storage_size); h5tools_render_element(stream, info, ctx, &buffer, &curr_pos, (size_t) ncols, (hsize_t) 0, (hsize_t) 0); + ctx->indent_level--; break; case H5D_CONTIGUOUS: { @@ -3024,7 +3122,11 @@ h5tools_dump_dcpl(FILE *stream, const h5tool_format_t *info, * EXTERNAL_FILE *------------------------------------------------------------------------- */ + ctx->indent_level++; if (next) { + ctx->need_prefix = TRUE; + h5tools_simple_prefix(stream, info, ctx, curr_pos, 0); + h5tools_str_reset(&buffer); h5tools_str_append(&buffer, "%s", CONTIGUOUS); h5tools_render_element(stream, info, ctx, &buffer, &curr_pos, (size_t) ncols, (hsize_t) 0, (hsize_t) 0); @@ -3060,6 +3162,9 @@ h5tools_dump_dcpl(FILE *stream, const h5tool_format_t *info, else { haddr_t ioffset; + ctx->need_prefix = TRUE; + h5tools_simple_prefix(stream, info, ctx, curr_pos, 0); + h5tools_str_reset(&buffer); h5tools_str_append(&buffer, "%s", CONTIGUOUS); h5tools_render_element(stream, info, ctx, &buffer, &curr_pos, (size_t) ncols, (hsize_t) 0, (hsize_t) 0); @@ -3079,8 +3184,111 @@ h5tools_dump_dcpl(FILE *stream, const h5tool_format_t *info, h5tools_str_append(&buffer, "OFFSET "H5_PRINTF_HADDR_FMT, ioffset); h5tools_render_element(stream, info, ctx, &buffer, &curr_pos, (size_t) ncols, (hsize_t) 0, (hsize_t) 0); } + ctx->indent_level--; } break; + + case H5D_VIRTUAL: + { + size_t vmaps; + + H5Pget_virtual_count(dcpl_id, &vmaps); + + if (vmaps) { + size_t next; + ssize_t ssize_out; + + ctx->indent_level++; + for (next = 0; next < (unsigned) vmaps; next++) { + hid_t virtual_vspace = H5Pget_virtual_vspace(dcpl_id, next); + hid_t virtual_srcspace = H5Pget_virtual_srcspace(dcpl_id, next); + + ctx->need_prefix = TRUE; + h5tools_simple_prefix(stream, info, ctx, curr_pos, 0); + + h5tools_str_reset(&buffer); + h5tools_str_append(&buffer, "%s %ld %s ", VDS_MAPPING, next, BEGIN); + h5tools_render_element(stream, info, ctx, &buffer, &curr_pos, (size_t) ncols, (hsize_t) 0, (hsize_t) 0); + + ctx->indent_level++; + + ctx->need_prefix = TRUE; + h5tools_simple_prefix(stream, info, ctx, curr_pos, 0); + + h5tools_str_reset(&buffer); + h5tools_str_append(&buffer, "%s %s", VDS_VIRTUAL, BEGIN); + h5tools_render_element(stream, info, ctx, &buffer, &curr_pos, (size_t) ncols, (hsize_t) 0, (hsize_t) 0); + + ctx->indent_level++; + + h5tools_print_virtual_selection(virtual_vspace, dcpl_id, next, stream, info, ctx, &buffer, &curr_pos, (size_t) ncols, (hsize_t) 0, (hsize_t) 0); + + ctx->indent_level--; + + ctx->need_prefix = TRUE; + h5tools_simple_prefix(stream, info, ctx, curr_pos, 0); + + h5tools_str_reset(&buffer); + h5tools_str_append(&buffer, "%s", END); + h5tools_render_element(stream, info, ctx, &buffer, &curr_pos, (size_t) ncols, (hsize_t) 0, (hsize_t) 0); + + ctx->need_prefix = TRUE; + h5tools_simple_prefix(stream, info, ctx, curr_pos, 0); + + h5tools_str_reset(&buffer); + h5tools_str_append(&buffer, "%s %s", VDS_SOURCE, BEGIN); + h5tools_render_element(stream, info, ctx, &buffer, &curr_pos, (size_t) ncols, (hsize_t) 0, (hsize_t) 0); + + ctx->indent_level++; + + ssize_out = H5Pget_virtual_filename(dcpl_id, next, NULL, 0); + H5Pget_virtual_filename(dcpl_id, next, name, sizeof(name)); + ssize_out = H5Pget_virtual_dsetname(dcpl_id, next, NULL, 0); + H5Pget_virtual_dsetname(dcpl_id, next, dsetname, sizeof(dsetname)); + + ctx->need_prefix = TRUE; + h5tools_simple_prefix(stream, info, ctx, curr_pos, 0); + + h5tools_str_reset(&buffer); + h5tools_str_append(&buffer, "%s %s", VDS_SRC_FILE, h5tools_dump_header_format->virtualfilenamebegin); + h5tools_str_append(&buffer, "%s", name); + h5tools_str_append(&buffer, "%s", h5tools_dump_header_format->virtualfilenameend); + h5tools_render_element(stream, info, ctx, &buffer, &curr_pos, (size_t) ncols, (hsize_t) 0, (hsize_t) 0); + + ctx->need_prefix = TRUE; + h5tools_simple_prefix(stream, info, ctx, curr_pos, 0); + + h5tools_str_reset(&buffer); + h5tools_str_append(&buffer, "%s %s", VDS_SRC_DATASET, h5tools_dump_header_format->virtualdatasetnamebegin); + h5tools_str_append(&buffer, "%s", dsetname); + h5tools_str_append(&buffer, "%s", h5tools_dump_header_format->virtualdatasetnameend); + h5tools_render_element(stream, info, ctx, &buffer, &curr_pos, (size_t) ncols, (hsize_t) 0, (hsize_t) 0); + + h5tools_print_virtual_selection(virtual_srcspace, dcpl_id, next, stream, info, ctx, &buffer, &curr_pos, (size_t) ncols, (hsize_t) 0, (hsize_t) 0); + + ctx->indent_level--; + + ctx->need_prefix = TRUE; + h5tools_simple_prefix(stream, info, ctx, curr_pos, 0); + + h5tools_str_reset(&buffer); + h5tools_str_append(&buffer, "%s", END); + h5tools_render_element(stream, info, ctx, &buffer, &curr_pos, (size_t) ncols, (hsize_t) 0, (hsize_t) 0); + + ctx->indent_level--; + + ctx->need_prefix = TRUE; + h5tools_simple_prefix(stream, info, ctx, curr_pos, 0); + + h5tools_str_reset(&buffer); + h5tools_str_append(&buffer, "%s", END); + h5tools_render_element(stream, info, ctx, &buffer, &curr_pos, (size_t) ncols, (hsize_t) 0, (hsize_t) 0); + } + ctx->indent_level--; + } + } + break; + case H5D_LAYOUT_ERROR: case H5D_NLAYOUTS: default: @@ -3089,8 +3297,6 @@ h5tools_dump_dcpl(FILE *stream, const h5tool_format_t *info, h5tools_render_element(stream, info, ctx, &buffer, &curr_pos, (size_t) ncols, (hsize_t) 0, (hsize_t) 0); }/*switch*/ - ctx->indent_level--; - ctx->need_prefix = TRUE; h5tools_simple_prefix(stream, info, ctx, curr_pos, 0); @@ -3105,7 +3311,7 @@ h5tools_dump_dcpl(FILE *stream, const h5tool_format_t *info, ctx->need_prefix = TRUE; h5tools_simple_prefix(stream, info, ctx, curr_pos, 0); - + h5tools_str_reset(&buffer); h5tools_str_append(&buffer, "%s %s", FILTERS, BEGIN); h5tools_render_element(stream, info, ctx, &buffer, &curr_pos, (size_t)ncols, (hsize_t)0, (hsize_t)0); @@ -3117,13 +3323,13 @@ h5tools_dump_dcpl(FILE *stream, const h5tool_format_t *info, cd_nelmts = NELMTS(cd_values); filtn = H5Pget_filter2(dcpl_id, (unsigned)i, &filt_flags, &cd_nelmts, cd_values, sizeof(f_name), f_name, NULL); - - if (filtn < 0) - continue; /* nothing to print for invalid filter */ + + if (filtn < 0) + continue; /* nothing to print for invalid filter */ ctx->need_prefix = TRUE; h5tools_simple_prefix(stream, info, ctx, curr_pos, 0); - + h5tools_str_reset(&buffer); switch(filtn) { case H5Z_FILTER_DEFLATE: @@ -3187,7 +3393,7 @@ h5tools_dump_dcpl(FILE *stream, const h5tool_format_t *info, if(szip_options_mask & H5_SZIP_RAW_OPTION_MASK) { ctx->need_prefix = TRUE; h5tools_simple_prefix(stream, info, ctx, curr_pos, 0); - + h5tools_str_reset(&buffer); h5tools_str_append(&buffer, "HEADER %s", "RAW"); h5tools_render_element(stream, info, ctx, &buffer, &curr_pos, (size_t)ncols, (hsize_t)0, (hsize_t)0); @@ -3212,11 +3418,11 @@ h5tools_dump_dcpl(FILE *stream, const h5tool_format_t *info, break; default: /* filters do not have to be available for showing registered filter info. - see HDFFV-8346 for details. --xcao@hdfgroup.org + see HDFFV-8346 for details. --xcao@hdfgroup.org if(H5Zfilter_avail(filtn)) h5tools_str_append(&buffer, "%s %s", "USER_REGISTERED_FILTER", BEGIN); else - */ + */ h5tools_str_append(&buffer, "%s %s", "USER_DEFINED_FILTER", BEGIN); h5tools_render_element(stream, info, ctx, &buffer, &curr_pos, (size_t)ncols, (hsize_t)0, (hsize_t)0); @@ -3224,15 +3430,15 @@ h5tools_dump_dcpl(FILE *stream, const h5tool_format_t *info, ctx->need_prefix = TRUE; h5tools_simple_prefix(stream, info, ctx, curr_pos, 0); - + h5tools_str_reset(&buffer); h5tools_str_append(&buffer, "FILTER_ID %d", filtn); h5tools_render_element(stream, info, ctx, &buffer, &curr_pos, (size_t)ncols, (hsize_t)0, (hsize_t)0); - + if(f_name[0] != '\0') { ctx->need_prefix = TRUE; h5tools_simple_prefix(stream, info, ctx, curr_pos, 0); - + h5tools_str_reset(&buffer); h5tools_str_append(&buffer, "COMMENT %s", f_name); h5tools_render_element(stream, info, ctx, &buffer, &curr_pos, (size_t)ncols, (hsize_t)0, (hsize_t)0); @@ -3240,7 +3446,7 @@ h5tools_dump_dcpl(FILE *stream, const h5tool_format_t *info, if (cd_nelmts) { ctx->need_prefix = TRUE; h5tools_simple_prefix(stream, info, ctx, curr_pos, 0); - + h5tools_str_reset(&buffer); h5tools_str_append(&buffer, "%s %s ","PARAMS", BEGIN); for (j=0; j<cd_nelmts; j++) @@ -3252,7 +3458,7 @@ h5tools_dump_dcpl(FILE *stream, const h5tool_format_t *info, ctx->need_prefix = TRUE; h5tools_simple_prefix(stream, info, ctx, curr_pos, 0); - + h5tools_str_reset(&buffer); h5tools_str_append(&buffer, "%s",END); h5tools_render_element(stream, info, ctx, &buffer, &curr_pos, (size_t)ncols, (hsize_t)0, (hsize_t)0); @@ -3264,7 +3470,7 @@ h5tools_dump_dcpl(FILE *stream, const h5tool_format_t *info, ctx->need_prefix = TRUE; h5tools_simple_prefix(stream, info, ctx, curr_pos, 0); - + h5tools_str_reset(&buffer); h5tools_str_append(&buffer, "NONE"); h5tools_render_element(stream, info, ctx, &buffer, &curr_pos, (size_t)ncols, (hsize_t)0, (hsize_t)0); @@ -3273,7 +3479,7 @@ h5tools_dump_dcpl(FILE *stream, const h5tool_format_t *info, ctx->need_prefix = TRUE; h5tools_simple_prefix(stream, info, ctx, curr_pos, 0); - + h5tools_str_reset(&buffer); h5tools_str_append(&buffer, "%s",END); h5tools_render_element(stream, info, ctx, &buffer, &curr_pos, (size_t)ncols, (hsize_t)0, (hsize_t)0); @@ -3284,7 +3490,7 @@ h5tools_dump_dcpl(FILE *stream, const h5tool_format_t *info, */ ctx->need_prefix = TRUE; h5tools_simple_prefix(stream, info, ctx, curr_pos, 0); - + h5tools_str_reset(&buffer); h5tools_str_append(&buffer, "%s %s", FILLVALUE, BEGIN); h5tools_render_element(stream, info, ctx, &buffer, &curr_pos, (size_t)ncols, (hsize_t)0, (hsize_t)0); @@ -3293,10 +3499,10 @@ h5tools_dump_dcpl(FILE *stream, const h5tool_format_t *info, ctx->need_prefix = TRUE; h5tools_simple_prefix(stream, info, ctx, curr_pos, 0); - + h5tools_str_reset(&buffer); h5tools_str_append(&buffer, "FILL_TIME "); - + H5Pget_fill_time(dcpl_id, &ft); switch(ft) { case H5D_FILL_TIME_ALLOC: @@ -3317,7 +3523,7 @@ h5tools_dump_dcpl(FILE *stream, const h5tool_format_t *info, ctx->need_prefix = TRUE; h5tools_simple_prefix(stream, info, ctx, curr_pos, 0); - + h5tools_str_reset(&buffer); h5tools_str_append(&buffer, "%s ", "VALUE "); H5Pfill_value_defined(dcpl_id, &fvstatus); @@ -3333,7 +3539,7 @@ h5tools_dump_dcpl(FILE *stream, const h5tool_format_t *info, ctx->need_prefix = TRUE; h5tools_simple_prefix(stream, info, ctx, curr_pos, 0); - + h5tools_str_reset(&buffer); h5tools_str_append(&buffer, "%s", END); h5tools_render_element(stream, info, ctx, &buffer, &curr_pos, (size_t)ncols, (hsize_t)0, (hsize_t)0); @@ -3344,7 +3550,7 @@ h5tools_dump_dcpl(FILE *stream, const h5tool_format_t *info, */ ctx->need_prefix = TRUE; h5tools_simple_prefix(stream, info, ctx, curr_pos, 0); - + h5tools_str_reset(&buffer); h5tools_str_append(&buffer, "ALLOCATION_TIME %s", BEGIN); h5tools_render_element(stream, info, ctx, &buffer, &curr_pos, (size_t)ncols, (hsize_t)0, (hsize_t)0); @@ -3353,7 +3559,7 @@ h5tools_dump_dcpl(FILE *stream, const h5tool_format_t *info, ctx->need_prefix = TRUE; h5tools_simple_prefix(stream, info, ctx, curr_pos, 0); - + h5tools_str_reset(&buffer); H5Pget_alloc_time(dcpl_id, &at); switch(at) { @@ -3378,7 +3584,7 @@ h5tools_dump_dcpl(FILE *stream, const h5tool_format_t *info, ctx->need_prefix = TRUE; h5tools_simple_prefix(stream, info, ctx, curr_pos, 0); - + h5tools_str_reset(&buffer); h5tools_str_append(&buffer, "%s", END); h5tools_render_element(stream, info, ctx, &buffer, &curr_pos, (size_t)ncols, (hsize_t)0, (hsize_t)0); @@ -3428,7 +3634,7 @@ h5tools_dump_comment(FILE *stream, const h5tool_format_t *info, comment[cmt_bufsize] = '\0'; /* necessary because null char is not returned */ ctx->need_prefix = TRUE; - + h5tools_str_reset(&buffer); h5tools_str_append(&buffer, "COMMENT \"%s\"", comment); h5tools_render_element(stream, info, ctx, &buffer, &curr_pos, (size_t)ncols, (hsize_t)0, (hsize_t)0); @@ -3443,7 +3649,7 @@ h5tools_dump_comment(FILE *stream, const h5tool_format_t *info, /*------------------------------------------------------------------------- * Function: dump_attribute * - * Purpose: Dump the attribute. + * Purpose: Dump the attribute. * * Return: void * @@ -3452,7 +3658,7 @@ h5tools_dump_comment(FILE *stream, const h5tool_format_t *info, */ void h5tools_dump_attribute(FILE *stream, const h5tool_format_t *info, - h5tools_context_t *ctx, const char *attr_name, hid_t attr_id, + h5tools_context_t *ctx, const char *attr_name, hid_t attr_id, int display_index, int display_char) { h5tools_str_t buffer; /* string into which to render */ @@ -3471,7 +3677,7 @@ h5tools_dump_attribute(FILE *stream, const h5tool_format_t *info, ctx->need_prefix = TRUE; h5tools_simple_prefix(stream, info, ctx, curr_pos, 0); - + h5tools_str_reset(&buffer); h5tools_str_append(&buffer, "%s \"%s\" %s", h5tools_dump_header_format->attributebegin, attr_name, @@ -3480,7 +3686,7 @@ h5tools_dump_attribute(FILE *stream, const h5tool_format_t *info, if(attr_id < 0) { error_msg("unable to open attribute \"%s\"\n", attr_name); - } + } else { hid_t type, space; @@ -3507,7 +3713,7 @@ h5tools_dump_attribute(FILE *stream, const h5tool_format_t *info, ctx->need_prefix = TRUE; h5tools_simple_prefix(stream, info, ctx, (hsize_t)0, 0); - + h5tools_str_reset(&buffer); if (HDstrlen(h5tools_dump_header_format->attributeblockend)) { @@ -3563,36 +3769,36 @@ void h5tools_print_packed_bits(h5tools_str_t *buffer, hid_t type) { int packed_bits_size = 0; - + hid_t n_type = h5tools_get_native_type(type); if(H5Tget_class(n_type)==H5T_INTEGER) { if(H5Tequal(n_type, H5T_NATIVE_SCHAR) == TRUE) { packed_bits_size = 8 * sizeof(char); - } + } else if(H5Tequal(n_type, H5T_NATIVE_UCHAR) == TRUE) { packed_bits_size = 8 * sizeof(unsigned char); - } + } else if(H5Tequal(n_type, H5T_NATIVE_SHORT) == TRUE) { packed_bits_size = 8 * sizeof(short); - } + } else if(H5Tequal(n_type, H5T_NATIVE_USHORT) == TRUE) { packed_bits_size = 8 * sizeof(unsigned short); - } + } else if(H5Tequal(n_type, H5T_NATIVE_INT) == TRUE) { packed_bits_size = 8 * sizeof(int); - } + } else if(H5Tequal(n_type, H5T_NATIVE_UINT) == TRUE) { packed_bits_size = 8 * sizeof(unsigned int); - } + } else if(H5Tequal(n_type, H5T_NATIVE_LONG) == TRUE) { packed_bits_size = 8 * sizeof(long); - } + } else if(H5Tequal(n_type, H5T_NATIVE_ULONG) == TRUE) { packed_bits_size = 8 * sizeof(unsigned long); - } + } else if(H5Tequal(n_type, H5T_NATIVE_LLONG) == TRUE) { packed_bits_size = 8 * sizeof(long long); - } + } else if(H5Tequal(n_type, H5T_NATIVE_ULLONG) == TRUE) { packed_bits_size = 8 * sizeof(unsigned long long); } @@ -3633,25 +3839,25 @@ h5tools_dump_subsetting_header(FILE *stream, const h5tool_format_t *info, HDmemset(&buffer, 0, sizeof(h5tools_str_t)); if (info->line_ncols > 0) ncols = info->line_ncols; - + ctx->need_prefix = TRUE; h5tools_simple_prefix(stream, info, ctx, (hsize_t)0, 0); - + h5tools_str_reset(&buffer); h5tools_str_append(&buffer, "%s %s", h5tools_dump_header_format->subsettingbegin, h5tools_dump_header_format->subsettingblockbegin); h5tools_render_element(stream, info, ctx, &buffer, &curr_pos, (size_t)ncols, (hsize_t)0, (hsize_t)0); ctx->indent_level++; - + ctx->need_prefix = TRUE; h5tools_simple_prefix(stream, info, ctx, (hsize_t)0, 0); - + h5tools_str_reset(&buffer); h5tools_str_append(&buffer, "%s %s ", h5tools_dump_header_format->startbegin, h5tools_dump_header_format->startblockbegin); h5tools_print_dims(&buffer, sset->start.data, dims); h5tools_str_append(&buffer, "%s %s", h5tools_dump_header_format->startend, h5tools_dump_header_format->startblockend); h5tools_render_element(stream, info, ctx, &buffer, &curr_pos, (size_t)ncols, (hsize_t)0, (hsize_t)0); - + ctx->need_prefix = TRUE; h5tools_simple_prefix(stream, info, ctx, (hsize_t)0, 0); @@ -3660,7 +3866,7 @@ h5tools_dump_subsetting_header(FILE *stream, const h5tool_format_t *info, h5tools_print_dims(&buffer, sset->stride.data, dims); h5tools_str_append(&buffer, "%s %s", h5tools_dump_header_format->strideend, h5tools_dump_header_format->strideblockend); h5tools_render_element(stream, info, ctx, &buffer, &curr_pos, (size_t)ncols, (hsize_t)0, (hsize_t)0); - + ctx->need_prefix = TRUE; h5tools_simple_prefix(stream, info, ctx, (hsize_t)0, 0); @@ -3674,7 +3880,7 @@ h5tools_dump_subsetting_header(FILE *stream, const h5tool_format_t *info, h5tools_str_append(&buffer, "%s %s", h5tools_dump_header_format->countend, h5tools_dump_header_format->countblockend); h5tools_render_element(stream, info, ctx, &buffer, &curr_pos, (size_t)ncols, (hsize_t)0, (hsize_t)0); - + ctx->need_prefix = TRUE; h5tools_simple_prefix(stream, info, ctx, (hsize_t)0, 0); @@ -3688,7 +3894,7 @@ h5tools_dump_subsetting_header(FILE *stream, const h5tool_format_t *info, h5tools_str_append(&buffer, "%s %s", h5tools_dump_header_format->blockend, h5tools_dump_header_format->blockblockend); h5tools_render_element(stream, info, ctx, &buffer, &curr_pos, (size_t)ncols, (hsize_t)0, (hsize_t)0); - + ctx->indent_level--; h5tools_str_close(&buffer); @@ -3705,7 +3911,7 @@ h5tools_dump_subsetting_header(FILE *stream, const h5tool_format_t *info, */ void h5tools_dump_data(FILE *stream, const h5tool_format_t *info, - h5tools_context_t *ctx, hid_t obj_id, int obj_data, struct subset_t *sset, + h5tools_context_t *ctx, hid_t obj_id, int obj_data, struct subset_t *sset, int display_index, int display_char) { H5S_class_t space_type; @@ -3768,10 +3974,10 @@ h5tools_dump_data(FILE *stream, const h5tool_format_t *info, h5tools_dump_subsetting_header(stream, &outputformat, ctx, sset, H5Sget_simple_extent_ndims(f_space)); H5Sclose(f_space); - + ctx->indent_level++; } - + ctx->need_prefix = TRUE; h5tools_str_reset(&buffer); h5tools_str_append(&buffer, "%s %s", h5tools_dump_header_format->databegin, h5tools_dump_header_format->datablockbegin); @@ -3797,7 +4003,7 @@ h5tools_dump_data(FILE *stream, const h5tool_format_t *info, datactx.indent_level++; datactx.need_prefix = TRUE; h5tools_simple_prefix(stream, info, &datactx, (hsize_t)0, 0); - + string_dataformat = *info; string_dataformat.idx_fmt = "\""; string_dataformat.line_multi_new = 1; @@ -3865,7 +4071,7 @@ h5tools_dump_data(FILE *stream, const h5tool_format_t *info, datactx.indent_level++; datactx.need_prefix = TRUE; h5tools_simple_prefix(stream, info, &datactx, (hsize_t)0, 0); - + string_dataformat = *info; string_dataformat.idx_fmt = "\""; string_dataformat.line_multi_new = 1; @@ -3892,7 +4098,7 @@ h5tools_dump_data(FILE *stream, const h5tool_format_t *info, H5Dvlen_reclaim(p_type, space, H5P_DEFAULT, buf); HDfree(buf); - } + } else status = SUCCEED; @@ -3922,10 +4128,10 @@ h5tools_dump_data(FILE *stream, const h5tool_format_t *info, if (sset && obj_data) { ctx->indent_level--; - + ctx->need_prefix = TRUE; h5tools_simple_prefix(stream, &outputformat, ctx, (hsize_t)0, 0); - + h5tools_str_reset(&buffer); if(HDstrlen(h5tools_dump_header_format->subsettingblockend)) { h5tools_str_append(&buffer, "%s", h5tools_dump_header_format->subsettingblockend); diff --git a/tools/lib/h5tools_str.c b/tools/lib/h5tools_str.c index 88308ed..c10f33b 100644 --- a/tools/lib/h5tools_str.c +++ b/tools/lib/h5tools_str.c @@ -413,9 +413,9 @@ h5tools_str_region_prefix(h5tools_str_t *str, const h5tool_format_t *info, } /*------------------------------------------------------------------------- - * Function: h5tools_str_dump_region_blocks + * Function: h5tools_str_dump_space_slabs * - * Purpose: Prints information about a dataspace region by appending + * Purpose: Prints information about a dataspace selection by appending * the information to the specified string. * * Return: none @@ -426,19 +426,85 @@ h5tools_str_region_prefix(h5tools_str_t *str, const h5tool_format_t *info, *------------------------------------------------------------------------- */ void -h5tools_str_dump_region_blocks(h5tools_str_t *str, hid_t region, +h5tools_str_dump_space_slabs(h5tools_str_t *str, hid_t rspace, + const h5tool_format_t *info, h5tools_context_t *ctx) +{ + hsize_t start[H5S_MAX_RANK]; + hsize_t stride[H5S_MAX_RANK]; + hsize_t count[H5S_MAX_RANK]; + hsize_t block[H5S_MAX_RANK]; + int j; + int ndims = H5Sget_simple_extent_ndims(rspace); + + H5Sget_regular_hyperslab(rspace, start, stride, count, block); + + /* Print hyperslab information */ + + /* Start coordinates */ + h5tools_str_append(str, "%s%s ", info->line_indent, START); + for (j = 0; j < ndims; j++) + h5tools_str_append(str, "%s" HSIZE_T_FORMAT, j ? "," : "(", start[j]); + h5tools_str_append(str, ")"); + h5tools_str_append(str, "%s", "\n"); + h5tools_str_indent(str, info, ctx); + + /* Stride coordinates */ + h5tools_str_append(str, "%s ", STRIDE); + for (j = 0; j < ndims; j++) + h5tools_str_append(str, "%s" HSIZE_T_FORMAT, j ? "," : "(", stride[j]); + h5tools_str_append(str, ")"); + h5tools_str_append(str, "%s", "\n"); + h5tools_str_indent(str, info, ctx); + + /* Count coordinates */ + h5tools_str_append(str, "%s ", COUNT); + for (j = 0; j < ndims; j++) { + if(count[j] == H5S_UNLIMITED) + h5tools_str_append(str, "%s%s", j ? "," : "(","H5S_UNLIMITED"); + else + h5tools_str_append(str, "%s" HSIZE_T_FORMAT, j ? "," : "(", count[j]); + } + h5tools_str_append(str, ")"); + h5tools_str_append(str, "%s", "\n"); + h5tools_str_indent(str, info, ctx); + + /* Block coordinates */ + h5tools_str_append(str, "%s ", BLOCK); + for (j = 0; j < ndims; j++) { + if(block[j] == H5S_UNLIMITED) + h5tools_str_append(str, "%s%s", j ? "," : "(","H5S_UNLIMITED"); + else + h5tools_str_append(str, "%s" HSIZE_T_FORMAT, j ? "," : "(", block[j]); + } + h5tools_str_append(str, ")"); +} + +/*------------------------------------------------------------------------- + * Function: h5tools_str_dump_space_blocks + * + * Purpose: Prints information about a dataspace selection by appending + * the information to the specified string. + * + * Return: none + * + * In/Out: + * h5tools_str_t *str + *------------------------------------------------------------------------- + */ +void +h5tools_str_dump_space_blocks(h5tools_str_t *str, hid_t rspace, const h5tool_format_t *info) { hssize_t nblocks; hsize_t alloc_size; hsize_t *ptdata; - int ndims = H5Sget_simple_extent_ndims(region); + int ndims = H5Sget_simple_extent_ndims(rspace); /* - * This function fails if the region does not have blocks. + * This function fails if the rspace does not have blocks. */ H5E_BEGIN_TRY { - nblocks = H5Sget_select_hyper_nblocks(region); + nblocks = H5Sget_select_hyper_nblocks(rspace); } H5E_END_TRY; /* Print block information */ @@ -449,13 +515,12 @@ h5tools_str_dump_region_blocks(h5tools_str_t *str, hid_t region, HDassert(alloc_size == (hsize_t) ((size_t) alloc_size)); /*check for overflow*/ ptdata = (hsize_t *)HDmalloc((size_t) alloc_size); H5_CHECK_OVERFLOW(nblocks, hssize_t, hsize_t); - H5Sget_select_hyper_blocklist(region, (hsize_t)0, (hsize_t)nblocks, ptdata); + H5Sget_select_hyper_blocklist(rspace, (hsize_t)0, (hsize_t)nblocks, ptdata); for (i = 0; i < nblocks; i++) { int j; - h5tools_str_append(str, info->dset_blockformat_pre, i ? "," OPTIONAL_LINE_BREAK " " : "", - (unsigned long)i); + h5tools_str_append(str, info->dset_blockformat_pre, i ? "," OPTIONAL_LINE_BREAK " " : "", (unsigned long)i); /* Start coordinates and opposite corner */ for (j = 0; j < ndims; j++) @@ -474,32 +539,31 @@ h5tools_str_dump_region_blocks(h5tools_str_t *str, hid_t region, } /*------------------------------------------------------------------------- - * Function: h5tools_str_dump_region_points + * Function: h5tools_str_dump_space_points * - * Purpose: Prints information about a dataspace region by appending + * Purpose: Prints information about a dataspace selection by appending * the information to the specified string. * * Return: none * * In/Out: - * h5tools_context_t *ctx * h5tools_str_t *str *------------------------------------------------------------------------- */ void -h5tools_str_dump_region_points(h5tools_str_t *str, hid_t region, +h5tools_str_dump_space_points(h5tools_str_t *str, hid_t rspace, const h5tool_format_t *info) { hssize_t npoints; hsize_t alloc_size; hsize_t *ptdata; - int ndims = H5Sget_simple_extent_ndims(region); + int ndims = H5Sget_simple_extent_ndims(rspace); /* - * This function fails if the region does not have points. + * This function fails if the rspace does not have points. */ H5E_BEGIN_TRY { - npoints = H5Sget_select_elem_npoints(region); + npoints = H5Sget_select_elem_npoints(rspace); } H5E_END_TRY; /* Print point information */ @@ -510,7 +574,7 @@ h5tools_str_dump_region_points(h5tools_str_t *str, hid_t region, HDassert(alloc_size == (hsize_t) ((size_t) alloc_size)); /*check for overflow*/ ptdata = (hsize_t *)HDmalloc((size_t) alloc_size); H5_CHECK_OVERFLOW(npoints, hssize_t, hsize_t); - H5Sget_select_elem_pointlist(region, (hsize_t)0, (hsize_t)npoints, ptdata); + H5Sget_select_elem_pointlist(rspace, (hsize_t)0, (hsize_t)npoints, ptdata); for (i = 0; i < npoints; i++) { int j; @@ -1244,9 +1308,9 @@ h5tools_str_sprint_region(h5tools_str_t *str, const h5tool_format_t *info, region_type = H5Sget_select_type(region); if(region_type==H5S_SEL_POINTS) - h5tools_str_dump_region_points(str, region, info); + h5tools_str_dump_space_points(str, region, info); else - h5tools_str_dump_region_blocks(str, region, info); + h5tools_str_dump_space_blocks(str, region, info); h5tools_str_append(str, "}"); @@ -1392,23 +1456,23 @@ h5tools_str_is_zero(const void *_mem, size_t size) char * h5tools_str_replace ( const char *string, const char *substr, const char *replacement ) { - char *tok = NULL; - char *newstr = NULL; - char *oldstr = NULL; - char *head = NULL; - - if ( substr == NULL || replacement == NULL ) - return HDstrdup (string); - - newstr = HDstrdup (string); - head = newstr; - while ( (tok = HDstrstr ( head, substr ))){ - oldstr = newstr; - newstr = (char *)HDmalloc( HDstrlen( oldstr ) - HDstrlen( substr ) + HDstrlen( replacement ) + 1 ); + char *tok = NULL; + char *newstr = NULL; + char *oldstr = NULL; + char *head = NULL; + + if ( substr == NULL || replacement == NULL ) + return HDstrdup (string); + + newstr = HDstrdup (string); + head = newstr; + while ( (tok = HDstrstr ( head, substr ))){ + oldstr = newstr; + newstr = (char *)HDmalloc( HDstrlen( oldstr ) - HDstrlen( substr ) + HDstrlen( replacement ) + 1 ); if ( newstr == NULL ){ - HDfree (oldstr); - return NULL; + HDfree (oldstr); + return NULL; } HDmemcpy ( newstr, oldstr, tok - oldstr ); HDmemcpy ( newstr + (tok - oldstr), replacement, HDstrlen ( replacement ) ); diff --git a/tools/lib/h5tools_str.h b/tools/lib/h5tools_str.h index 38697c6..6173b89 100644 --- a/tools/lib/h5tools_str.h +++ b/tools/lib/h5tools_str.h @@ -40,8 +40,9 @@ H5TOOLS_DLL char *h5tools_str_prefix(h5tools_str_t *str, const h5tool_format_ H5TOOLS_DLL char *h5tools_str_region_prefix(h5tools_str_t *str, const h5tool_format_t *info, hsize_t elmtno, hsize_t *ptdata, unsigned ndims, hsize_t max_idx[], h5tools_context_t *ctx); -H5TOOLS_DLL void h5tools_str_dump_region_blocks(h5tools_str_t *, hid_t, const h5tool_format_t *); -H5TOOLS_DLL void h5tools_str_dump_region_points(h5tools_str_t *, hid_t, const h5tool_format_t *); +H5TOOLS_DLL void h5tools_str_dump_space_slabs(h5tools_str_t *, hid_t, const h5tool_format_t *, h5tools_context_t *ctx); +H5TOOLS_DLL void h5tools_str_dump_space_blocks(h5tools_str_t *, hid_t, const h5tool_format_t *); +H5TOOLS_DLL void h5tools_str_dump_space_points(h5tools_str_t *, hid_t, const h5tool_format_t *); H5TOOLS_DLL void h5tools_str_sprint_region(h5tools_str_t *str, const h5tool_format_t *info, hid_t container, void *vp); H5TOOLS_DLL char *h5tools_str_sprint(h5tools_str_t *str, const h5tool_format_t *info, diff --git a/tools/misc/CMakeLists.txt b/tools/misc/CMakeLists.txt index d53cdc8..088dbdf 100644 --- a/tools/misc/CMakeLists.txt +++ b/tools/misc/CMakeLists.txt @@ -52,6 +52,9 @@ if (BUILD_TESTING) target_link_libraries (h5repart_gentest ${HDF5_LIB_TARGET} ${HDF5_TOOLS_LIB_TARGET}) set_target_properties (h5repart_gentest PROPERTIES FOLDER generator/tools) #add_test (NAME h5repart_gentest COMMAND $<TARGET_FILE:h5repart_gentest>) + + add_subdirectory (${HDF5_TOOLS_MISC_SOURCE_DIR}/vds) + endif (HDF5_BUILD_GENERATORS) add_executable (h5repart_test ${HDF5_TOOLS_MISC_SOURCE_DIR}/repart_test.c) diff --git a/tools/misc/Makefile.am b/tools/misc/Makefile.am index 882f8f2..fdfe8f7 100644 --- a/tools/misc/Makefile.am +++ b/tools/misc/Makefile.am @@ -20,10 +20,12 @@ include $(top_srcdir)/config/commence.am +SUBDIRS=vds + # Include src directory AM_CPPFLAGS+=-I$(top_srcdir)/src -I$(top_srcdir)/tools/lib -#test script and program +#test scripts and programs TEST_PROG=h5repart_gentest talign TEST_SCRIPT=testh5repart.sh testh5mkgrp.sh diff --git a/tools/misc/Makefile.in b/tools/misc/Makefile.in index 4b6c31c..2dac1d4 100644 --- a/tools/misc/Makefile.in +++ b/tools/misc/Makefile.in @@ -222,11 +222,27 @@ SOURCES = h5debug.c h5mkgrp.c h5repart.c h5repart_gentest.c \ repart_test.c talign.c DIST_SOURCES = h5debug.c h5mkgrp.c h5repart.c h5repart_gentest.c \ repart_test.c talign.c +RECURSIVE_TARGETS = all-recursive check-recursive cscopelist-recursive \ + ctags-recursive dvi-recursive html-recursive info-recursive \ + install-data-recursive install-dvi-recursive \ + install-exec-recursive install-html-recursive \ + install-info-recursive install-pdf-recursive \ + install-ps-recursive install-recursive installcheck-recursive \ + installdirs-recursive pdf-recursive ps-recursive \ + tags-recursive uninstall-recursive am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ *) (install-info --version) >/dev/null 2>&1;; \ esac +RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \ + distclean-recursive maintainer-clean-recursive +am__recursive_targets = \ + $(RECURSIVE_TARGETS) \ + $(RECURSIVE_CLEAN_TARGETS) \ + $(am__extra_recursive_targets) +AM_RECURSIVE_TARGETS = $(am__recursive_targets:-recursive=) TAGS CTAGS \ + check recheck distdir am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) # Read a list of newline-separated strings from the standard input, # and print each of them once, without duplicates. Input order is @@ -402,7 +418,6 @@ am__set_TESTS_bases = \ bases=`for i in $$bases; do echo $$i; done | sed 's/\.log$$//'`; \ bases=`echo $$bases` RECHECK_LOGS = $(TEST_LOGS) -AM_RECURSIVE_TARGETS = check recheck TEST_SUITE_LOG = test-suite.log LOG_DRIVER = $(SHELL) $(top_srcdir)/bin/test-driver LOG_COMPILE = $(LOG_COMPILER) $(AM_LOG_FLAGS) $(LOG_FLAGS) @@ -421,7 +436,33 @@ am__test_logs2 = $(am__test_logs1:@EXEEXT@.log=.log) TEST_LOGS = $(am__test_logs2:.sh.log=.log) SH_LOG_DRIVER = $(SHELL) $(top_srcdir)/bin/test-driver SH_LOG_COMPILE = $(SH_LOG_COMPILER) $(AM_SH_LOG_FLAGS) $(SH_LOG_FLAGS) +DIST_SUBDIRS = $(SUBDIRS) DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +am__relativize = \ + dir0=`pwd`; \ + sed_first='s,^\([^/]*\)/.*$$,\1,'; \ + sed_rest='s,^[^/]*/*,,'; \ + sed_last='s,^.*/\([^/]*\)$$,\1,'; \ + sed_butlast='s,/*[^/]*$$,,'; \ + while test -n "$$dir1"; do \ + first=`echo "$$dir1" | sed -e "$$sed_first"`; \ + if test "$$first" != "."; then \ + if test "$$first" = ".."; then \ + dir2=`echo "$$dir0" | sed -e "$$sed_last"`/"$$dir2"; \ + dir0=`echo "$$dir0" | sed -e "$$sed_butlast"`; \ + else \ + first2=`echo "$$dir2" | sed -e "$$sed_first"`; \ + if test "$$first2" = "$$first"; then \ + dir2=`echo "$$dir2" | sed -e "$$sed_rest"`; \ + else \ + dir2="../$$dir2"; \ + fi; \ + dir0="$$dir0"/"$$first"; \ + fi; \ + fi; \ + dir1=`echo "$$dir1" | sed -e "$$sed_rest"`; \ + done; \ + reldir="$$dir2" ACLOCAL = @ACLOCAL@ ADD_PARALLEL_FILES = @ADD_PARALLEL_FILES@ AMTAR = @AMTAR@ @@ -713,8 +754,9 @@ TRACE = perl $(top_srcdir)/bin/trace # and scd_family*.h5 were created by setting the HDF5_NOCLEANUP variable. CHECK_CLEANFILES = *.chkexe *.chklog *.clog *.clog2 *.h5 \ ../testfiles/fst_family*.h5 ../testfiles/scd_family*.h5 +SUBDIRS = vds -#test script and program +#test scripts and programs TEST_PROG = h5repart_gentest talign TEST_SCRIPT = testh5repart.sh testh5mkgrp.sh check_SCRIPTS = $(TEST_SCRIPT) @@ -759,7 +801,7 @@ TEST_PROG_CHKEXE = $(TEST_PROG:=.chkexe_) TEST_PROG_PARA_CHKEXE = $(TEST_PROG_PARA:=.chkexe_) TEST_SCRIPT_CHKSH = $(TEST_SCRIPT:=.chkexe_) TEST_SCRIPT_PARA_CHKSH = $(TEST_SCRIPT_PARA:=.chkexe_) -all: all-am +all: all-recursive .SUFFIXES: .SUFFIXES: .c .lo .log .o .obj .sh .sh$(EXEEXT) .trs @@ -958,14 +1000,61 @@ mostlyclean-libtool: clean-libtool: -rm -rf .libs _libs +# This directory's subdirectories are mostly independent; you can cd +# into them and run 'make' without going through this Makefile. +# To change the values of 'make' variables: instead of editing Makefiles, +# (1) if the variable is set in 'config.status', edit 'config.status' +# (which will cause the Makefiles to be regenerated when you run 'make'); +# (2) otherwise, pass the desired values on the 'make' command line. +$(am__recursive_targets): + @fail=; \ + if $(am__make_keepgoing); then \ + failcom='fail=yes'; \ + else \ + failcom='exit 1'; \ + fi; \ + dot_seen=no; \ + target=`echo $@ | sed s/-recursive//`; \ + case "$@" in \ + distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \ + *) list='$(SUBDIRS)' ;; \ + esac; \ + for subdir in $$list; do \ + echo "Making $$target in $$subdir"; \ + if test "$$subdir" = "."; then \ + dot_seen=yes; \ + local_target="$$target-am"; \ + else \ + local_target="$$target"; \ + fi; \ + ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ + || eval $$failcom; \ + done; \ + if test "$$dot_seen" = "no"; then \ + $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \ + fi; test -z "$$fail" + ID: $(am__tagged_files) $(am__define_uniq_tagged_files); mkid -fID $$unique -tags: tags-am +tags: tags-recursive TAGS: tags tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) set x; \ here=`pwd`; \ + if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \ + include_option=--etags-include; \ + empty_fix=.; \ + else \ + include_option=--include; \ + empty_fix=; \ + fi; \ + list='$(SUBDIRS)'; for subdir in $$list; do \ + if test "$$subdir" = .; then :; else \ + test ! -f $$subdir/TAGS || \ + set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \ + fi; \ + done; \ $(am__define_uniq_tagged_files); \ shift; \ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ @@ -978,7 +1067,7 @@ tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) $$unique; \ fi; \ fi -ctags: ctags-am +ctags: ctags-recursive CTAGS: ctags ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) @@ -991,7 +1080,7 @@ GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && $(am__cd) $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) "$$here" -cscopelist: cscopelist-am +cscopelist: cscopelist-recursive cscopelist-am: $(am__tagged_files) list='$(am__tagged_files)'; \ @@ -1199,24 +1288,50 @@ distdir: $(DISTFILES) || exit 1; \ fi; \ done + @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ + if test "$$subdir" = .; then :; else \ + $(am__make_dryrun) \ + || test -d "$(distdir)/$$subdir" \ + || $(MKDIR_P) "$(distdir)/$$subdir" \ + || exit 1; \ + dir1=$$subdir; dir2="$(distdir)/$$subdir"; \ + $(am__relativize); \ + new_distdir=$$reldir; \ + dir1=$$subdir; dir2="$(top_distdir)"; \ + $(am__relativize); \ + new_top_distdir=$$reldir; \ + echo " (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir="$$new_top_distdir" distdir="$$new_distdir" \\"; \ + echo " am__remove_distdir=: am__skip_length_check=: am__skip_mode_fix=: distdir)"; \ + ($(am__cd) $$subdir && \ + $(MAKE) $(AM_MAKEFLAGS) \ + top_distdir="$$new_top_distdir" \ + distdir="$$new_distdir" \ + am__remove_distdir=: \ + am__skip_length_check=: \ + am__skip_mode_fix=: \ + distdir) \ + || exit 1; \ + fi; \ + done check-am: all-am $(MAKE) $(AM_MAKEFLAGS) $(check_PROGRAMS) $(check_SCRIPTS) $(MAKE) $(AM_MAKEFLAGS) check-TESTS -check: check-am +check: check-recursive all-am: Makefile $(PROGRAMS) $(SCRIPTS) all-local -installdirs: +installdirs: installdirs-recursive +installdirs-am: for dir in "$(DESTDIR)$(bindir)" "$(DESTDIR)$(bindir)"; do \ test -z "$$dir" || $(MKDIR_P) "$$dir"; \ done -install: install-am -install-exec: install-exec-am -install-data: install-data-am -uninstall: uninstall-am +install: install-recursive +install-exec: install-exec-recursive +install-data: install-data-recursive +uninstall: uninstall-recursive install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am -installcheck: installcheck-am +installcheck: installcheck-recursive install-strip: if test -z '$(STRIP)'; then \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ @@ -1243,85 +1358,85 @@ distclean-generic: maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." -clean: clean-am +clean: clean-recursive clean-am: clean-binPROGRAMS clean-checkPROGRAMS clean-generic \ clean-libtool mostlyclean-am -distclean: distclean-am +distclean: distclean-recursive -rm -rf ./$(DEPDIR) -rm -f Makefile distclean-am: clean-am distclean-compile distclean-generic \ distclean-tags -dvi: dvi-am +dvi: dvi-recursive dvi-am: -html: html-am +html: html-recursive html-am: -info: info-am +info: info-recursive info-am: install-data-am: -install-dvi: install-dvi-am +install-dvi: install-dvi-recursive install-dvi-am: install-exec-am: install-binPROGRAMS install-binSCRIPTS \ install-exec-local -install-html: install-html-am +install-html: install-html-recursive install-html-am: -install-info: install-info-am +install-info: install-info-recursive install-info-am: install-man: -install-pdf: install-pdf-am +install-pdf: install-pdf-recursive install-pdf-am: -install-ps: install-ps-am +install-ps: install-ps-recursive install-ps-am: installcheck-am: -maintainer-clean: maintainer-clean-am +maintainer-clean: maintainer-clean-recursive -rm -rf ./$(DEPDIR) -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic -mostlyclean: mostlyclean-am +mostlyclean: mostlyclean-recursive mostlyclean-am: mostlyclean-compile mostlyclean-generic \ mostlyclean-libtool mostlyclean-local -pdf: pdf-am +pdf: pdf-recursive pdf-am: -ps: ps-am +ps: ps-recursive ps-am: uninstall-am: uninstall-binPROGRAMS uninstall-binSCRIPTS \ uninstall-local -.MAKE: check-am install-am install-strip +.MAKE: $(am__recursive_targets) check-am install-am install-strip -.PHONY: CTAGS GTAGS TAGS all all-am all-local check check-TESTS \ - check-am clean clean-binPROGRAMS clean-checkPROGRAMS \ - clean-generic clean-libtool cscopelist-am ctags ctags-am \ - distclean distclean-compile distclean-generic \ +.PHONY: $(am__recursive_targets) CTAGS GTAGS TAGS all all-am all-local \ + check check-TESTS check-am clean clean-binPROGRAMS \ + clean-checkPROGRAMS clean-generic clean-libtool cscopelist-am \ + ctags ctags-am distclean distclean-compile distclean-generic \ distclean-libtool distclean-tags distdir dvi dvi-am html \ html-am info info-am install install-am install-binPROGRAMS \ install-binSCRIPTS install-data install-data-am install-dvi \ @@ -1329,10 +1444,10 @@ uninstall-am: uninstall-binPROGRAMS uninstall-binSCRIPTS \ install-html install-html-am install-info install-info-am \ install-man install-pdf install-pdf-am install-ps \ install-ps-am install-strip installcheck installcheck-am \ - installdirs maintainer-clean maintainer-clean-generic \ - mostlyclean mostlyclean-compile mostlyclean-generic \ - mostlyclean-libtool mostlyclean-local pdf pdf-am ps ps-am \ - recheck tags tags-am uninstall uninstall-am \ + installdirs installdirs-am maintainer-clean \ + maintainer-clean-generic mostlyclean mostlyclean-compile \ + mostlyclean-generic mostlyclean-libtool mostlyclean-local pdf \ + pdf-am ps ps-am recheck tags tags-am uninstall uninstall-am \ uninstall-binPROGRAMS uninstall-binSCRIPTS uninstall-local diff --git a/tools/misc/vds/CMakeLists.txt b/tools/misc/vds/CMakeLists.txt new file mode 100644 index 0000000..dcf883c --- /dev/null +++ b/tools/misc/vds/CMakeLists.txt @@ -0,0 +1,28 @@ +cmake_minimum_required (VERSION 3.1.0) +PROJECT (HDF5_TOOLS_MISC_VDS) + +#----------------------------------------------------------------------------- +# Setup include Directories +#----------------------------------------------------------------------------- +INCLUDE_DIRECTORIES (${HDF5_TOOLS_SRC_DIR}/lib) + +MACRO (ADD_H5_GENERATOR genfile) + add_executable (${genfile} ${HDF5_TOOLS_MISC_VDS_SOURCE_DIR}/${genfile}.c) + TARGET_NAMING (${genfile} STATIC) + TARGET_C_PROPERTIES (${genfile} STATIC " " " ") + target_link_libraries (${genfile} ${HDF5_LIB_TARGET} ${HDF5_TOOLS_LIB_TARGET}) + set_target_properties (${genfile} PROPERTIES FOLDER generator/tools) +ENDMACRO (ADD_H5_GENERATOR genfile) + +# generator executables +set (H5_GENERATORS + UC_1_one_dim_gen + UC_2_two_dims_gen + UC_3_gaps_gen + UC_4_printf_gen + UC_5_stride_gen +) + +foreach (gen ${H5_GENERATORS}) + ADD_H5_GENERATOR (${gen}) +endforeach (gen ${H5_GENERATORS}) diff --git a/tools/misc/vds/Makefile.am b/tools/misc/vds/Makefile.am new file mode 100644 index 0000000..f1ef80c --- /dev/null +++ b/tools/misc/vds/Makefile.am @@ -0,0 +1,38 @@ +# +# Copyright by The HDF Group. +# Copyright by the Board of Trustees of the University of Illinois. +# All rights reserved. +# +# This file is part of HDF5. The full HDF5 copyright notice, including +# terms governing use, modification, and redistribution, is contained in +# the files COPYING and Copyright.html. COPYING can be found at the root +# of the source code distribution tree; Copyright.html can be found at the +# root level of an installed copy of the electronic HDF5 document set and +# is linked from the top-level documents page. It can also be found at +# http://hdfgroup.org/HDF5/doc/Copyright.html. If you do not have +# access to either file, you may request a copy from help@hdfgroup.org. +## +## Makefile.am +## Run automake to generate a Makefile.in from this file. +# +# HDF5 Library Makefile(.in) +# + +include $(top_srcdir)/config/commence.am + +# Include src directory +AM_CPPFLAGS+=-I$(top_srcdir)/src -I$(top_srcdir)/tools/lib + +#test scripts and programs +TEST_PROG=UC_1_one_dim_gen UC_2_two_dims_gen UC_3_gaps_gen UC_4_printf_gen \ + UC_5_stride_gen + +check_PROGRAMS=$(TEST_PROG) + +# Temporary files. +CHECK_CLEANFILES+=*.h5 + +# All programs rely on hdf5 library and h5tools library +LDADD=$(LIBH5TOOLS) $(LIBHDF5) + +include $(top_srcdir)/config/conclude.am diff --git a/tools/misc/vds/Makefile.in b/tools/misc/vds/Makefile.in new file mode 100644 index 0000000..8977925 --- /dev/null +++ b/tools/misc/vds/Makefile.in @@ -0,0 +1,1423 @@ +# Makefile.in generated by automake 1.14.1 from Makefile.am. +# @configure_input@ + +# Copyright (C) 1994-2013 Free Software Foundation, Inc. + +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + +@SET_MAKE@ + +# +# Copyright by The HDF Group. +# Copyright by the Board of Trustees of the University of Illinois. +# All rights reserved. +# +# This file is part of HDF5. The full HDF5 copyright notice, including +# terms governing use, modification, and redistribution, is contained in +# the files COPYING and Copyright.html. COPYING can be found at the root +# of the source code distribution tree; Copyright.html can be found at the +# root level of an installed copy of the electronic HDF5 document set and +# is linked from the top-level documents page. It can also be found at +# http://hdfgroup.org/HDF5/doc/Copyright.html. If you do not have +# access to either file, you may request a copy from help@hdfgroup.org. +# +# HDF5 Library Makefile(.in) +# +VPATH = @srcdir@ +am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)' +am__make_running_with_option = \ + case $${target_option-} in \ + ?) ;; \ + *) echo "am__make_running_with_option: internal error: invalid" \ + "target option '$${target_option-}' specified" >&2; \ + exit 1;; \ + esac; \ + has_opt=no; \ + sane_makeflags=$$MAKEFLAGS; \ + if $(am__is_gnu_make); then \ + sane_makeflags=$$MFLAGS; \ + else \ + case $$MAKEFLAGS in \ + *\\[\ \ ]*) \ + bs=\\; \ + sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ + | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ + esac; \ + fi; \ + skip_next=no; \ + strip_trailopt () \ + { \ + flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ + }; \ + for flg in $$sane_makeflags; do \ + test $$skip_next = yes && { skip_next=no; continue; }; \ + case $$flg in \ + *=*|--*) continue;; \ + -*I) strip_trailopt 'I'; skip_next=yes;; \ + -*I?*) strip_trailopt 'I';; \ + -*O) strip_trailopt 'O'; skip_next=yes;; \ + -*O?*) strip_trailopt 'O';; \ + -*l) strip_trailopt 'l'; skip_next=yes;; \ + -*l?*) strip_trailopt 'l';; \ + -[dEDm]) skip_next=yes;; \ + -[JT]) skip_next=yes;; \ + esac; \ + case $$flg in \ + *$$target_option*) has_opt=yes; break;; \ + esac; \ + done; \ + test $$has_opt = yes +am__make_dryrun = (target_option=n; $(am__make_running_with_option)) +am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) +pkgdatadir = $(datadir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkglibexecdir = $(libexecdir)/@PACKAGE@ +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +build_triplet = @build@ +host_triplet = @host@ +DIST_COMMON = $(top_srcdir)/config/commence.am \ + $(top_srcdir)/config/conclude.am $(srcdir)/Makefile.in \ + $(srcdir)/Makefile.am $(top_srcdir)/bin/mkinstalldirs \ + $(top_srcdir)/bin/depcomp $(top_srcdir)/bin/test-driver +check_PROGRAMS = $(am__EXEEXT_1) +TESTS = $(am__EXEEXT_1) +subdir = tools/misc/vds +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/m4/aclocal_cxx.m4 \ + $(top_srcdir)/m4/aclocal_fc.m4 $(top_srcdir)/configure.ac +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +mkinstalldirs = $(SHELL) $(top_srcdir)/bin/mkinstalldirs +CONFIG_HEADER = $(top_builddir)/src/H5config.h \ + $(top_builddir)/fortran/src/H5config_f.inc +CONFIG_CLEAN_FILES = +CONFIG_CLEAN_VPATH_FILES = +am__EXEEXT_1 = UC_1_one_dim_gen$(EXEEXT) UC_2_two_dims_gen$(EXEEXT) \ + UC_3_gaps_gen$(EXEEXT) UC_4_printf_gen$(EXEEXT) \ + UC_5_stride_gen$(EXEEXT) +UC_1_one_dim_gen_SOURCES = UC_1_one_dim_gen.c +UC_1_one_dim_gen_OBJECTS = UC_1_one_dim_gen.$(OBJEXT) +UC_1_one_dim_gen_LDADD = $(LDADD) +UC_1_one_dim_gen_DEPENDENCIES = $(LIBH5TOOLS) $(LIBHDF5) +AM_V_lt = $(am__v_lt_@AM_V@) +am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@) +am__v_lt_0 = --silent +am__v_lt_1 = +UC_2_two_dims_gen_SOURCES = UC_2_two_dims_gen.c +UC_2_two_dims_gen_OBJECTS = UC_2_two_dims_gen.$(OBJEXT) +UC_2_two_dims_gen_LDADD = $(LDADD) +UC_2_two_dims_gen_DEPENDENCIES = $(LIBH5TOOLS) $(LIBHDF5) +UC_3_gaps_gen_SOURCES = UC_3_gaps_gen.c +UC_3_gaps_gen_OBJECTS = UC_3_gaps_gen.$(OBJEXT) +UC_3_gaps_gen_LDADD = $(LDADD) +UC_3_gaps_gen_DEPENDENCIES = $(LIBH5TOOLS) $(LIBHDF5) +UC_4_printf_gen_SOURCES = UC_4_printf_gen.c +UC_4_printf_gen_OBJECTS = UC_4_printf_gen.$(OBJEXT) +UC_4_printf_gen_LDADD = $(LDADD) +UC_4_printf_gen_DEPENDENCIES = $(LIBH5TOOLS) $(LIBHDF5) +UC_5_stride_gen_SOURCES = UC_5_stride_gen.c +UC_5_stride_gen_OBJECTS = UC_5_stride_gen.$(OBJEXT) +UC_5_stride_gen_LDADD = $(LDADD) +UC_5_stride_gen_DEPENDENCIES = $(LIBH5TOOLS) $(LIBHDF5) +AM_V_P = $(am__v_P_@AM_V@) +am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) +am__v_P_0 = false +am__v_P_1 = : +AM_V_GEN = $(am__v_GEN_@AM_V@) +am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) +am__v_GEN_0 = @echo " GEN " $@; +am__v_GEN_1 = +AM_V_at = $(am__v_at_@AM_V@) +am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) +am__v_at_0 = @ +am__v_at_1 = +DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)/src -I$(top_builddir)/fortran/src +depcomp = $(SHELL) $(top_srcdir)/bin/depcomp +am__depfiles_maybe = depfiles +am__mv = mv -f +COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ + $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) +LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ + $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \ + $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ + $(AM_CFLAGS) $(CFLAGS) +AM_V_CC = $(am__v_CC_@AM_V@) +am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@) +am__v_CC_0 = @echo " CC " $@; +am__v_CC_1 = +CCLD = $(CC) +LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ + $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ + $(AM_LDFLAGS) $(LDFLAGS) -o $@ +AM_V_CCLD = $(am__v_CCLD_@AM_V@) +am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@) +am__v_CCLD_0 = @echo " CCLD " $@; +am__v_CCLD_1 = +SOURCES = UC_1_one_dim_gen.c UC_2_two_dims_gen.c UC_3_gaps_gen.c \ + UC_4_printf_gen.c UC_5_stride_gen.c +DIST_SOURCES = UC_1_one_dim_gen.c UC_2_two_dims_gen.c UC_3_gaps_gen.c \ + UC_4_printf_gen.c UC_5_stride_gen.c +am__can_run_installinfo = \ + case $$AM_UPDATE_INFO_DIR in \ + n|no|NO) false;; \ + *) (install-info --version) >/dev/null 2>&1;; \ + esac +am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) +# Read a list of newline-separated strings from the standard input, +# and print each of them once, without duplicates. Input order is +# *not* preserved. +am__uniquify_input = $(AWK) '\ + BEGIN { nonempty = 0; } \ + { items[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in items) print i; }; } \ +' +# Make sure the list of sources is unique. This is necessary because, +# e.g., the same source file might be shared among _SOURCES variables +# for different programs/libraries. +am__define_uniq_tagged_files = \ + list='$(am__tagged_files)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | $(am__uniquify_input)` +ETAGS = etags +CTAGS = ctags +am__tty_colors_dummy = \ + mgn= red= grn= lgn= blu= brg= std=; \ + am__color_tests=no +am__tty_colors = { \ + $(am__tty_colors_dummy); \ + if test "X$(AM_COLOR_TESTS)" = Xno; then \ + am__color_tests=no; \ + elif test "X$(AM_COLOR_TESTS)" = Xalways; then \ + am__color_tests=yes; \ + elif test "X$$TERM" != Xdumb && { test -t 1; } 2>/dev/null; then \ + am__color_tests=yes; \ + fi; \ + if test $$am__color_tests = yes; then \ + red='[0;31m'; \ + grn='[0;32m'; \ + lgn='[1;32m'; \ + blu='[1;34m'; \ + mgn='[0;35m'; \ + brg='[1m'; \ + std='[m'; \ + fi; \ +} +am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; +am__vpath_adj = case $$p in \ + $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ + *) f=$$p;; \ + esac; +am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; +am__install_max = 40 +am__nobase_strip_setup = \ + srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` +am__nobase_strip = \ + for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" +am__nobase_list = $(am__nobase_strip_setup); \ + for p in $$list; do echo "$$p $$p"; done | \ + sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ + $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ + if (++n[$$2] == $(am__install_max)) \ + { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ + END { for (dir in files) print dir, files[dir] }' +am__base_list = \ + sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ + sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' +am__uninstall_files_from_dir = { \ + test -z "$$files" \ + || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \ + || { echo " ( cd '$$dir' && rm -f" $$files ")"; \ + $(am__cd) "$$dir" && rm -f $$files; }; \ + } +am__recheck_rx = ^[ ]*:recheck:[ ]* +am__global_test_result_rx = ^[ ]*:global-test-result:[ ]* +am__copy_in_global_log_rx = ^[ ]*:copy-in-global-log:[ ]* +# A command that, given a newline-separated list of test names on the +# standard input, print the name of the tests that are to be re-run +# upon "make recheck". +am__list_recheck_tests = $(AWK) '{ \ + recheck = 1; \ + while ((rc = (getline line < ($$0 ".trs"))) != 0) \ + { \ + if (rc < 0) \ + { \ + if ((getline line2 < ($$0 ".log")) < 0) \ + recheck = 0; \ + break; \ + } \ + else if (line ~ /$(am__recheck_rx)[nN][Oo]/) \ + { \ + recheck = 0; \ + break; \ + } \ + else if (line ~ /$(am__recheck_rx)[yY][eE][sS]/) \ + { \ + break; \ + } \ + }; \ + if (recheck) \ + print $$0; \ + close ($$0 ".trs"); \ + close ($$0 ".log"); \ +}' +# A command that, given a newline-separated list of test names on the +# standard input, create the global log from their .trs and .log files. +am__create_global_log = $(AWK) ' \ +function fatal(msg) \ +{ \ + print "fatal: making $@: " msg | "cat >&2"; \ + exit 1; \ +} \ +function rst_section(header) \ +{ \ + print header; \ + len = length(header); \ + for (i = 1; i <= len; i = i + 1) \ + printf "="; \ + printf "\n\n"; \ +} \ +{ \ + copy_in_global_log = 1; \ + global_test_result = "RUN"; \ + while ((rc = (getline line < ($$0 ".trs"))) != 0) \ + { \ + if (rc < 0) \ + fatal("failed to read from " $$0 ".trs"); \ + if (line ~ /$(am__global_test_result_rx)/) \ + { \ + sub("$(am__global_test_result_rx)", "", line); \ + sub("[ ]*$$", "", line); \ + global_test_result = line; \ + } \ + else if (line ~ /$(am__copy_in_global_log_rx)[nN][oO]/) \ + copy_in_global_log = 0; \ + }; \ + if (copy_in_global_log) \ + { \ + rst_section(global_test_result ": " $$0); \ + while ((rc = (getline line < ($$0 ".log"))) != 0) \ + { \ + if (rc < 0) \ + fatal("failed to read from " $$0 ".log"); \ + print line; \ + }; \ + printf "\n"; \ + }; \ + close ($$0 ".trs"); \ + close ($$0 ".log"); \ +}' +# Restructured Text title. +am__rst_title = { sed 's/.*/ & /;h;s/./=/g;p;x;s/ *$$//;p;g' && echo; } +# Solaris 10 'make', and several other traditional 'make' implementations, +# pass "-e" to $(SHELL), and POSIX 2008 even requires this. Work around it +# by disabling -e (using the XSI extension "set +e") if it's set. +am__sh_e_setup = case $$- in *e*) set +e;; esac +# Default flags passed to test drivers. +am__common_driver_flags = \ + --color-tests "$$am__color_tests" \ + --enable-hard-errors "$$am__enable_hard_errors" \ + --expect-failure "$$am__expect_failure" +# To be inserted before the command running the test. Creates the +# directory for the log if needed. Stores in $dir the directory +# containing $f, in $tst the test, in $log the log. Executes the +# developer- defined test setup AM_TESTS_ENVIRONMENT (if any), and +# passes TESTS_ENVIRONMENT. Set up options for the wrapper that +# will run the test scripts (or their associated LOG_COMPILER, if +# thy have one). +am__check_pre = \ +$(am__sh_e_setup); \ +$(am__vpath_adj_setup) $(am__vpath_adj) \ +$(am__tty_colors); \ +srcdir=$(srcdir); export srcdir; \ +case "$@" in \ + */*) am__odir=`echo "./$@" | sed 's|/[^/]*$$||'`;; \ + *) am__odir=.;; \ +esac; \ +test "x$$am__odir" = x"." || test -d "$$am__odir" \ + || $(MKDIR_P) "$$am__odir" || exit $$?; \ +if test -f "./$$f"; then dir=./; \ +elif test -f "$$f"; then dir=; \ +else dir="$(srcdir)/"; fi; \ +tst=$$dir$$f; log='$@'; \ +if test -n '$(DISABLE_HARD_ERRORS)'; then \ + am__enable_hard_errors=no; \ +else \ + am__enable_hard_errors=yes; \ +fi; \ +case " $(XFAIL_TESTS) " in \ + *[\ \ ]$$f[\ \ ]* | *[\ \ ]$$dir$$f[\ \ ]*) \ + am__expect_failure=yes;; \ + *) \ + am__expect_failure=no;; \ +esac; \ +$(AM_TESTS_ENVIRONMENT) $(TESTS_ENVIRONMENT) +# A shell command to get the names of the tests scripts with any registered +# extension removed (i.e., equivalently, the names of the test logs, with +# the '.log' extension removed). The result is saved in the shell variable +# '$bases'. This honors runtime overriding of TESTS and TEST_LOGS. Sadly, +# we cannot use something simpler, involving e.g., "$(TEST_LOGS:.log=)", +# since that might cause problem with VPATH rewrites for suffix-less tests. +# See also 'test-harness-vpath-rewrite.sh' and 'test-trs-basic.sh'. +am__set_TESTS_bases = \ + bases='$(TEST_LOGS)'; \ + bases=`for i in $$bases; do echo $$i; done | sed 's/\.log$$//'`; \ + bases=`echo $$bases` +RECHECK_LOGS = $(TEST_LOGS) +AM_RECURSIVE_TARGETS = check recheck +TEST_SUITE_LOG = test-suite.log +LOG_DRIVER = $(SHELL) $(top_srcdir)/bin/test-driver +LOG_COMPILE = $(LOG_COMPILER) $(AM_LOG_FLAGS) $(LOG_FLAGS) +am__set_b = \ + case '$@' in \ + */*) \ + case '$*' in \ + */*) b='$*';; \ + *) b=`echo '$@' | sed 's/\.log$$//'`; \ + esac;; \ + *) \ + b='$*';; \ + esac +am__test_logs1 = $(TESTS:=.log) +am__test_logs2 = $(am__test_logs1:@EXEEXT@.log=.log) +TEST_LOGS = $(am__test_logs2:.sh.log=.log) +SH_LOG_DRIVER = $(SHELL) $(top_srcdir)/bin/test-driver +SH_LOG_COMPILE = $(SH_LOG_COMPILER) $(AM_SH_LOG_FLAGS) $(SH_LOG_FLAGS) +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +ACLOCAL = @ACLOCAL@ +ADD_PARALLEL_FILES = @ADD_PARALLEL_FILES@ +AMTAR = @AMTAR@ + +# H5_CFLAGS holds flags that should be used when building hdf5, +# but which should not be exported to h5cc for building other programs. +# AM_CFLAGS is an automake construct which should be used by Makefiles +# instead of CFLAGS, as CFLAGS is reserved solely for the user to define. +# This applies to FCFLAGS, CXXFLAGS, CPPFLAGS, and LDFLAGS as well. +AM_CFLAGS = @AM_CFLAGS@ @H5_CFLAGS@ + +# Include src directory +AM_CPPFLAGS = @AM_CPPFLAGS@ @H5_CPPFLAGS@ -I$(top_srcdir)/src \ + -I$(top_srcdir)/tools/lib +AM_CXXFLAGS = @AM_CXXFLAGS@ @H5_CXXFLAGS@ +AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ +AM_FCFLAGS = @AM_FCFLAGS@ @H5_FCFLAGS@ +AM_LDFLAGS = @AM_LDFLAGS@ @H5_LDFLAGS@ +AM_MAKEFLAGS = @AM_MAKEFLAGS@ +AR = @AR@ +AUTOCONF = @AUTOCONF@ +AUTOHEADER = @AUTOHEADER@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +BYTESEX = @BYTESEX@ +CC = @CC@ +CCDEPMODE = @CCDEPMODE@ +CC_VERSION = @CC_VERSION@ +CFLAGS = @CFLAGS@ +CLEARFILEBUF = @CLEARFILEBUF@ +CODESTACK = @CODESTACK@ +CONFIG_DATE = @CONFIG_DATE@ +CONFIG_MODE = @CONFIG_MODE@ +CONFIG_USER = @CONFIG_USER@ +CPP = @CPP@ +CPPFLAGS = @CPPFLAGS@ +CXX = @CXX@ +CXXCPP = @CXXCPP@ +CXXDEPMODE = @CXXDEPMODE@ +CXXFLAGS = @CXXFLAGS@ +CXX_VERSION = @CXX_VERSION@ +CYGPATH_W = @CYGPATH_W@ +DEBUG_PKG = @DEBUG_PKG@ +DEFAULT_API_VERSION = @DEFAULT_API_VERSION@ +DEFS = @DEFS@ +DEPDIR = @DEPDIR@ +DEPRECATED_SYMBOLS = @DEPRECATED_SYMBOLS@ +DIRECT_VFD = @DIRECT_VFD@ +DLLTOOL = @DLLTOOL@ +DSYMUTIL = @DSYMUTIL@ +DUMPBIN = @DUMPBIN@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +EGREP = @EGREP@ +EXEEXT = @EXEEXT@ +EXTERNAL_FILTERS = @EXTERNAL_FILTERS@ + +# Make sure that these variables are exported to the Makefiles +F9XMODEXT = @F9XMODEXT@ +F9XMODFLAG = @F9XMODFLAG@ +F9XSUFFIXFLAG = @F9XSUFFIXFLAG@ +FC = @FC@ +FCFLAGS = @FCFLAGS@ +FCFLAGS_f90 = @FCFLAGS_f90@ +FCLIBS = @FCLIBS@ +FC_VERSION = @FC_VERSION@ +FGREP = @FGREP@ +FORTRAN_C_LONG_DOUBLE_IS_UNIQUE = @FORTRAN_C_LONG_DOUBLE_IS_UNIQUE@ +FORTRAN_HAVE_C_LONG_DOUBLE = @FORTRAN_HAVE_C_LONG_DOUBLE@ +FORTRAN_SIZEOF_LONG_DOUBLE = @FORTRAN_SIZEOF_LONG_DOUBLE@ +FSEARCH_DIRS = @FSEARCH_DIRS@ +Fortran_COMPILER_ID = @Fortran_COMPILER_ID@ +GREP = @GREP@ +H5CONFIG_F_IKIND = @H5CONFIG_F_IKIND@ +H5CONFIG_F_NUM_IKIND = @H5CONFIG_F_NUM_IKIND@ +H5CONFIG_F_NUM_RKIND = @H5CONFIG_F_NUM_RKIND@ +H5CONFIG_F_RKIND = @H5CONFIG_F_RKIND@ +H5CONFIG_F_RKIND_SIZEOF = @H5CONFIG_F_RKIND_SIZEOF@ +H5_CFLAGS = @H5_CFLAGS@ +H5_CPPFLAGS = @H5_CPPFLAGS@ +H5_CXXFLAGS = @H5_CXXFLAGS@ +H5_FCFLAGS = @H5_FCFLAGS@ +H5_FORTRAN_SHARED = @H5_FORTRAN_SHARED@ +H5_LDFLAGS = @H5_LDFLAGS@ +H5_VERSION = @H5_VERSION@ +HADDR_T = @HADDR_T@ +HAVE_DMALLOC = @HAVE_DMALLOC@ +HAVE_Fortran_INTEGER_SIZEOF_16 = @HAVE_Fortran_INTEGER_SIZEOF_16@ +HAVE_PTHREAD = @HAVE_PTHREAD@ +HDF5_HL = @HDF5_HL@ +HDF5_INTERFACES = @HDF5_INTERFACES@ +HDF_CXX = @HDF_CXX@ +HDF_FORTRAN = @HDF_FORTRAN@ +HID_T = @HID_T@ +HL = @HL@ +HL_FOR = @HL_FOR@ +HSIZE_T = @HSIZE_T@ +HSSIZE_T = @HSSIZE_T@ +INSTALL = @INSTALL@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +INSTRUMENT = @INSTRUMENT@ +INSTRUMENT_LIBRARY = @INSTRUMENT_LIBRARY@ +LD = @LD@ +LDFLAGS = @LDFLAGS@ +LIBOBJS = @LIBOBJS@ +LIBS = @LIBS@ +LIBTOOL = @LIBTOOL@ +LIPO = @LIPO@ +LL_PATH = @LL_PATH@ +LN_S = @LN_S@ +LTLIBOBJS = @LTLIBOBJS@ +LT_STATIC_EXEC = @LT_STATIC_EXEC@ +MAINT = @MAINT@ +MAKEINFO = @MAKEINFO@ +MANIFEST_TOOL = @MANIFEST_TOOL@ +MKDIR_P = @MKDIR_P@ +MPE = @MPE@ +NM = @NM@ +NMEDIT = @NMEDIT@ +OBJDUMP = @OBJDUMP@ +OBJECT_NAMELEN_DEFAULT_F = @OBJECT_NAMELEN_DEFAULT_F@ +OBJEXT = @OBJEXT@ +OTOOL = @OTOOL@ +OTOOL64 = @OTOOL64@ +PACKAGE = @PACKAGE@ +PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ +PACKAGE_NAME = @PACKAGE_NAME@ +PACKAGE_STRING = @PACKAGE_STRING@ +PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_URL = @PACKAGE_URL@ +PACKAGE_VERSION = @PACKAGE_VERSION@ +PAC_C_MAX_REAL_PRECISION = @PAC_C_MAX_REAL_PRECISION@ +PAC_FC_ALL_INTEGER_KINDS = @PAC_FC_ALL_INTEGER_KINDS@ +PAC_FC_ALL_INTEGER_KINDS_SIZEOF = @PAC_FC_ALL_INTEGER_KINDS_SIZEOF@ +PAC_FC_ALL_REAL_KINDS = @PAC_FC_ALL_REAL_KINDS@ +PAC_FC_ALL_REAL_KINDS_SIZEOF = @PAC_FC_ALL_REAL_KINDS_SIZEOF@ +PAC_FC_MAX_REAL_PRECISION = @PAC_FC_MAX_REAL_PRECISION@ +PAC_FORTRAN_NATIVE_DOUBLE_KIND = @PAC_FORTRAN_NATIVE_DOUBLE_KIND@ +PAC_FORTRAN_NATIVE_DOUBLE_SIZEOF = @PAC_FORTRAN_NATIVE_DOUBLE_SIZEOF@ +PAC_FORTRAN_NATIVE_INTEGER_KIND = @PAC_FORTRAN_NATIVE_INTEGER_KIND@ +PAC_FORTRAN_NATIVE_INTEGER_SIZEOF = @PAC_FORTRAN_NATIVE_INTEGER_SIZEOF@ +PAC_FORTRAN_NATIVE_REAL_KIND = @PAC_FORTRAN_NATIVE_REAL_KIND@ +PAC_FORTRAN_NATIVE_REAL_SIZEOF = @PAC_FORTRAN_NATIVE_REAL_SIZEOF@ +PARALLEL = @PARALLEL@ +PATH_SEPARATOR = @PATH_SEPARATOR@ +RANLIB = @RANLIB@ +ROOT = @ROOT@ +RUNPARALLEL = @RUNPARALLEL@ +RUNSERIAL = @RUNSERIAL@ +R_INTEGER = @R_INTEGER@ +R_LARGE = @R_LARGE@ +SEARCH = @SEARCH@ +SED = @SED@ +SET_MAKE = @SET_MAKE@ +SHELL = @SHELL@ +SIZE_T = @SIZE_T@ +STATIC_EXEC = @STATIC_EXEC@ +STATIC_SHARED = @STATIC_SHARED@ +STRICT_FORMAT_CHECKS = @STRICT_FORMAT_CHECKS@ +STRIP = @STRIP@ +TESTPARALLEL = @TESTPARALLEL@ +THREADSAFE = @THREADSAFE@ +TIME = @TIME@ +TR = @TR@ +TRACE_API = @TRACE_API@ +UNAME_INFO = @UNAME_INFO@ +USE_FILTER_DEFLATE = @USE_FILTER_DEFLATE@ +USE_FILTER_SZIP = @USE_FILTER_SZIP@ +USINGMEMCHECKER = @USINGMEMCHECKER@ +VERSION = @VERSION@ +WORDS_BIGENDIAN = @WORDS_BIGENDIAN@ +abs_builddir = @abs_builddir@ +abs_srcdir = @abs_srcdir@ +abs_top_builddir = @abs_top_builddir@ +abs_top_srcdir = @abs_top_srcdir@ +ac_ct_AR = @ac_ct_AR@ +ac_ct_CC = @ac_ct_CC@ +ac_ct_CXX = @ac_ct_CXX@ +ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ +ac_ct_FC = @ac_ct_FC@ +am__include = @am__include@ +am__leading_dot = @am__leading_dot@ +am__quote = @am__quote@ +am__tar = @am__tar@ +am__untar = @am__untar@ +bindir = @bindir@ +build = @build@ +build_alias = @build_alias@ +build_cpu = @build_cpu@ +build_os = @build_os@ +build_vendor = @build_vendor@ +builddir = @builddir@ +datadir = @datadir@ +datarootdir = @datarootdir@ + +# Install directories that automake doesn't know about +docdir = $(exec_prefix)/doc +dvidir = @dvidir@ +enable_shared = @enable_shared@ +enable_static = @enable_static@ +exec_prefix = @exec_prefix@ +host = @host@ +host_alias = @host_alias@ +host_cpu = @host_cpu@ +host_os = @host_os@ +host_vendor = @host_vendor@ +htmldir = @htmldir@ +includedir = @includedir@ +infodir = @infodir@ +install_sh = @install_sh@ +libdir = @libdir@ +libexecdir = @libexecdir@ +localedir = @localedir@ +localstatedir = @localstatedir@ +mandir = @mandir@ +mkdir_p = @mkdir_p@ +oldincludedir = @oldincludedir@ +pdfdir = @pdfdir@ +prefix = @prefix@ +program_transform_name = @program_transform_name@ +psdir = @psdir@ +sbindir = @sbindir@ +sharedstatedir = @sharedstatedir@ +srcdir = @srcdir@ +sysconfdir = @sysconfdir@ +target_alias = @target_alias@ +top_build_prefix = @top_build_prefix@ +top_builddir = @top_builddir@ +top_srcdir = @top_srcdir@ + +# Shell commands used in Makefiles +RM = rm -f +CP = cp + +# Some machines need a command to run executables; this is that command +# so that our tests will run. +# We use RUNEXEC instead of RUNSERIAL directly because it may be that +# some tests need to be run with a different command. Older versions +# of the makefiles used the command +# $(LIBTOOL) --mode=execute +# in some directories, for instance. +RUNEXEC = $(RUNSERIAL) + +# Libraries to link to while building +LIBHDF5 = $(top_builddir)/src/libhdf5.la +LIBH5TEST = $(top_builddir)/test/libh5test.la +LIBH5F = $(top_builddir)/fortran/src/libhdf5_fortran.la +LIBH5FTEST = $(top_builddir)/fortran/test/libh5test_fortran.la +LIBH5CPP = $(top_builddir)/c++/src/libhdf5_cpp.la +LIBH5TOOLS = $(top_builddir)/tools/lib/libh5tools.la +LIBH5_HL = $(top_builddir)/hl/src/libhdf5_hl.la +LIBH5F_HL = $(top_builddir)/hl/fortran/src/libhdf5hl_fortran.la +LIBH5CPP_HL = $(top_builddir)/hl/c++/src/libhdf5_hl_cpp.la + +# Note that in svn revision 19400 the '/' after DESTDIR in H5* variables below +# has been removed. According to the official description of DESTDIR by Gnu at +# http://www.gnu.org/prep/standards/html_node/DESTDIR.html, DESTDIR is +# prepended to the normal and complete install path that it precedes for the +# purpose of installing in a temporary directory which is useful for building +# rpms and other packages. The '/' after ${DESTDIR} will be followed by another +# '/' at the beginning of the normal install path. When DESTDIR is empty the +# path then begins with '//', which is incorrect and causes problems at least for +# Cygwin. + +# Scripts used to build examples +# If only shared libraries have been installed, have h5cc build examples with +# shared libraries instead of static libraries +H5CC = ${DESTDIR}$(bindir)/h5cc +H5CC_PP = ${DESTDIR}$(bindir)/h5pcc +H5FC = ${DESTDIR}$(bindir)/h5fc +H5FC_PP = ${DESTDIR}$(bindir)/h5pfc +H5CPP = ${DESTDIR}$(bindir)/h5c++ +ACLOCAL_AMFLAGS = "-I m4" + +# The trace script; this is used on source files from the C library to +# insert tracing macros. +TRACE = perl $(top_srcdir)/bin/trace + +# .chkexe files are used to mark tests that have run successfully. +# .chklog files are output from those tests. +# *.clog and *.clog2 are from the MPE option. + +# Temporary files. +CHECK_CLEANFILES = *.chkexe *.chklog *.clog *.clog2 *.h5 + +#test scripts and programs +TEST_PROG = UC_1_one_dim_gen UC_2_two_dims_gen UC_3_gaps_gen UC_4_printf_gen \ + UC_5_stride_gen + + +# All programs rely on hdf5 library and h5tools library +LDADD = $(LIBH5TOOLS) $(LIBHDF5) + +# Automake needs to be taught how to build lib, progs, and tests targets. +# These will be filled in automatically for the most part (e.g., +# lib_LIBRARIES are built for lib target), but EXTRA_LIB, EXTRA_PROG, and +# EXTRA_TEST variables are supplied to allow the user to force targets to +# be built at certain times. +LIB = $(lib_LIBRARIES) $(lib_LTLIBRARIES) $(noinst_LIBRARIES) \ + $(noinst_LTLIBRARIES) $(check_LIBRARIES) $(check_LTLIBRARIES) $(EXTRA_LIB) + +PROGS = $(bin_PROGRAMS) $(bin_SCRIPTS) $(noinst_PROGRAMS) $(noinst_SCRIPTS) \ + $(EXTRA_PROG) + +chk_TESTS = $(check_PROGRAMS) $(check_SCRIPTS) $(EXTRA_TEST) +TEST_EXTENSIONS = .sh +SH_LOG_COMPILER = $(SHELL) +AM_SH_LOG_FLAGS = +TEST_PROG_CHKEXE = $(TEST_PROG:=.chkexe_) +TEST_PROG_PARA_CHKEXE = $(TEST_PROG_PARA:=.chkexe_) +TEST_SCRIPT_CHKSH = $(TEST_SCRIPT:=.chkexe_) +TEST_SCRIPT_PARA_CHKSH = $(TEST_SCRIPT_PARA:=.chkexe_) +all: all-am + +.SUFFIXES: +.SUFFIXES: .c .lo .log .o .obj .sh .sh$(EXEEXT) .trs +$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(top_srcdir)/config/commence.am $(top_srcdir)/config/conclude.am $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ + && { if test -f $@; then exit 0; else break; fi; }; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign tools/misc/vds/Makefile'; \ + $(am__cd) $(top_srcdir) && \ + $(AUTOMAKE) --foreign tools/misc/vds/Makefile +.PRECIOUS: Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ + esac; +$(top_srcdir)/config/commence.am $(top_srcdir)/config/conclude.am: + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(am__aclocal_m4_deps): + +clean-checkPROGRAMS: + @list='$(check_PROGRAMS)'; test -n "$$list" || exit 0; \ + echo " rm -f" $$list; \ + rm -f $$list || exit $$?; \ + test -n "$(EXEEXT)" || exit 0; \ + list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \ + echo " rm -f" $$list; \ + rm -f $$list + +UC_1_one_dim_gen$(EXEEXT): $(UC_1_one_dim_gen_OBJECTS) $(UC_1_one_dim_gen_DEPENDENCIES) $(EXTRA_UC_1_one_dim_gen_DEPENDENCIES) + @rm -f UC_1_one_dim_gen$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(UC_1_one_dim_gen_OBJECTS) $(UC_1_one_dim_gen_LDADD) $(LIBS) + +UC_2_two_dims_gen$(EXEEXT): $(UC_2_two_dims_gen_OBJECTS) $(UC_2_two_dims_gen_DEPENDENCIES) $(EXTRA_UC_2_two_dims_gen_DEPENDENCIES) + @rm -f UC_2_two_dims_gen$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(UC_2_two_dims_gen_OBJECTS) $(UC_2_two_dims_gen_LDADD) $(LIBS) + +UC_3_gaps_gen$(EXEEXT): $(UC_3_gaps_gen_OBJECTS) $(UC_3_gaps_gen_DEPENDENCIES) $(EXTRA_UC_3_gaps_gen_DEPENDENCIES) + @rm -f UC_3_gaps_gen$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(UC_3_gaps_gen_OBJECTS) $(UC_3_gaps_gen_LDADD) $(LIBS) + +UC_4_printf_gen$(EXEEXT): $(UC_4_printf_gen_OBJECTS) $(UC_4_printf_gen_DEPENDENCIES) $(EXTRA_UC_4_printf_gen_DEPENDENCIES) + @rm -f UC_4_printf_gen$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(UC_4_printf_gen_OBJECTS) $(UC_4_printf_gen_LDADD) $(LIBS) + +UC_5_stride_gen$(EXEEXT): $(UC_5_stride_gen_OBJECTS) $(UC_5_stride_gen_DEPENDENCIES) $(EXTRA_UC_5_stride_gen_DEPENDENCIES) + @rm -f UC_5_stride_gen$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(UC_5_stride_gen_OBJECTS) $(UC_5_stride_gen_LDADD) $(LIBS) + +mostlyclean-compile: + -rm -f *.$(OBJEXT) + +distclean-compile: + -rm -f *.tab.c + +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/UC_1_one_dim_gen.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/UC_2_two_dims_gen.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/UC_3_gaps_gen.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/UC_4_printf_gen.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/UC_5_stride_gen.Po@am__quote@ + +.c.o: +@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ $< + +.c.obj: +@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'` + +.c.lo: +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LTCOMPILE) -c -o $@ $< + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs + +ID: $(am__tagged_files) + $(am__define_uniq_tagged_files); mkid -fID $$unique +tags: tags-am +TAGS: tags + +tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + set x; \ + here=`pwd`; \ + $(am__define_uniq_tagged_files); \ + shift; \ + if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ + test -n "$$unique" || unique=$$empty_fix; \ + if test $$# -gt 0; then \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + "$$@" $$unique; \ + else \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$unique; \ + fi; \ + fi +ctags: ctags-am + +CTAGS: ctags +ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + $(am__define_uniq_tagged_files); \ + test -z "$(CTAGS_ARGS)$$unique" \ + || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ + $$unique + +GTAGS: + here=`$(am__cd) $(top_builddir) && pwd` \ + && $(am__cd) $(top_srcdir) \ + && gtags -i $(GTAGS_ARGS) "$$here" +cscopelist: cscopelist-am + +cscopelist-am: $(am__tagged_files) + list='$(am__tagged_files)'; \ + case "$(srcdir)" in \ + [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ + *) sdir=$(subdir)/$(srcdir) ;; \ + esac; \ + for i in $$list; do \ + if test -f "$$i"; then \ + echo "$(subdir)/$$i"; \ + else \ + echo "$$sdir/$$i"; \ + fi; \ + done >> $(top_builddir)/cscope.files + +distclean-tags: + -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags + +# Recover from deleted '.trs' file; this should ensure that +# "rm -f foo.log; make foo.trs" re-run 'foo.test', and re-create +# both 'foo.log' and 'foo.trs'. Break the recipe in two subshells +# to avoid problems with "make -n". +.log.trs: + rm -f $< $@ + $(MAKE) $(AM_MAKEFLAGS) $< + +# Leading 'am--fnord' is there to ensure the list of targets does not +# expand to empty, as could happen e.g. with make check TESTS=''. +am--fnord $(TEST_LOGS) $(TEST_LOGS:.log=.trs): $(am__force_recheck) +am--force-recheck: + @: + +$(TEST_SUITE_LOG): $(TEST_LOGS) + @$(am__set_TESTS_bases); \ + am__f_ok () { test -f "$$1" && test -r "$$1"; }; \ + redo_bases=`for i in $$bases; do \ + am__f_ok $$i.trs && am__f_ok $$i.log || echo $$i; \ + done`; \ + if test -n "$$redo_bases"; then \ + redo_logs=`for i in $$redo_bases; do echo $$i.log; done`; \ + redo_results=`for i in $$redo_bases; do echo $$i.trs; done`; \ + if $(am__make_dryrun); then :; else \ + rm -f $$redo_logs && rm -f $$redo_results || exit 1; \ + fi; \ + fi; \ + if test -n "$$am__remaking_logs"; then \ + echo "fatal: making $(TEST_SUITE_LOG): possible infinite" \ + "recursion detected" >&2; \ + else \ + am__remaking_logs=yes $(MAKE) $(AM_MAKEFLAGS) $$redo_logs; \ + fi; \ + if $(am__make_dryrun); then :; else \ + st=0; \ + errmsg="fatal: making $(TEST_SUITE_LOG): failed to create"; \ + for i in $$redo_bases; do \ + test -f $$i.trs && test -r $$i.trs \ + || { echo "$$errmsg $$i.trs" >&2; st=1; }; \ + test -f $$i.log && test -r $$i.log \ + || { echo "$$errmsg $$i.log" >&2; st=1; }; \ + done; \ + test $$st -eq 0 || exit 1; \ + fi + @$(am__sh_e_setup); $(am__tty_colors); $(am__set_TESTS_bases); \ + ws='[ ]'; \ + results=`for b in $$bases; do echo $$b.trs; done`; \ + test -n "$$results" || results=/dev/null; \ + all=` grep "^$$ws*:test-result:" $$results | wc -l`; \ + pass=` grep "^$$ws*:test-result:$$ws*PASS" $$results | wc -l`; \ + fail=` grep "^$$ws*:test-result:$$ws*FAIL" $$results | wc -l`; \ + skip=` grep "^$$ws*:test-result:$$ws*SKIP" $$results | wc -l`; \ + xfail=`grep "^$$ws*:test-result:$$ws*XFAIL" $$results | wc -l`; \ + xpass=`grep "^$$ws*:test-result:$$ws*XPASS" $$results | wc -l`; \ + error=`grep "^$$ws*:test-result:$$ws*ERROR" $$results | wc -l`; \ + if test `expr $$fail + $$xpass + $$error` -eq 0; then \ + success=true; \ + else \ + success=false; \ + fi; \ + br='==================='; br=$$br$$br$$br$$br; \ + result_count () \ + { \ + if test x"$$1" = x"--maybe-color"; then \ + maybe_colorize=yes; \ + elif test x"$$1" = x"--no-color"; then \ + maybe_colorize=no; \ + else \ + echo "$@: invalid 'result_count' usage" >&2; exit 4; \ + fi; \ + shift; \ + desc=$$1 count=$$2; \ + if test $$maybe_colorize = yes && test $$count -gt 0; then \ + color_start=$$3 color_end=$$std; \ + else \ + color_start= color_end=; \ + fi; \ + echo "$${color_start}# $$desc $$count$${color_end}"; \ + }; \ + create_testsuite_report () \ + { \ + result_count $$1 "TOTAL:" $$all "$$brg"; \ + result_count $$1 "PASS: " $$pass "$$grn"; \ + result_count $$1 "SKIP: " $$skip "$$blu"; \ + result_count $$1 "XFAIL:" $$xfail "$$lgn"; \ + result_count $$1 "FAIL: " $$fail "$$red"; \ + result_count $$1 "XPASS:" $$xpass "$$red"; \ + result_count $$1 "ERROR:" $$error "$$mgn"; \ + }; \ + { \ + echo "$(PACKAGE_STRING): $(subdir)/$(TEST_SUITE_LOG)" | \ + $(am__rst_title); \ + create_testsuite_report --no-color; \ + echo; \ + echo ".. contents:: :depth: 2"; \ + echo; \ + for b in $$bases; do echo $$b; done \ + | $(am__create_global_log); \ + } >$(TEST_SUITE_LOG).tmp || exit 1; \ + mv $(TEST_SUITE_LOG).tmp $(TEST_SUITE_LOG); \ + if $$success; then \ + col="$$grn"; \ + else \ + col="$$red"; \ + test x"$$VERBOSE" = x || cat $(TEST_SUITE_LOG); \ + fi; \ + echo "$${col}$$br$${std}"; \ + echo "$${col}Testsuite summary for $(PACKAGE_STRING)$${std}"; \ + echo "$${col}$$br$${std}"; \ + create_testsuite_report --maybe-color; \ + echo "$$col$$br$$std"; \ + if $$success; then :; else \ + echo "$${col}See $(subdir)/$(TEST_SUITE_LOG)$${std}"; \ + if test -n "$(PACKAGE_BUGREPORT)"; then \ + echo "$${col}Please report to $(PACKAGE_BUGREPORT)$${std}"; \ + fi; \ + echo "$$col$$br$$std"; \ + fi; \ + $$success || exit 1 +recheck: all $(check_PROGRAMS) + @test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG) + @set +e; $(am__set_TESTS_bases); \ + bases=`for i in $$bases; do echo $$i; done \ + | $(am__list_recheck_tests)` || exit 1; \ + log_list=`for i in $$bases; do echo $$i.log; done`; \ + log_list=`echo $$log_list`; \ + $(MAKE) $(AM_MAKEFLAGS) $(TEST_SUITE_LOG) \ + am__force_recheck=am--force-recheck \ + TEST_LOGS="$$log_list"; \ + exit $$? +UC_1_one_dim_gen.log: UC_1_one_dim_gen$(EXEEXT) + @p='UC_1_one_dim_gen$(EXEEXT)'; \ + b='UC_1_one_dim_gen'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +UC_2_two_dims_gen.log: UC_2_two_dims_gen$(EXEEXT) + @p='UC_2_two_dims_gen$(EXEEXT)'; \ + b='UC_2_two_dims_gen'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +UC_3_gaps_gen.log: UC_3_gaps_gen$(EXEEXT) + @p='UC_3_gaps_gen$(EXEEXT)'; \ + b='UC_3_gaps_gen'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +UC_4_printf_gen.log: UC_4_printf_gen$(EXEEXT) + @p='UC_4_printf_gen$(EXEEXT)'; \ + b='UC_4_printf_gen'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +UC_5_stride_gen.log: UC_5_stride_gen$(EXEEXT) + @p='UC_5_stride_gen$(EXEEXT)'; \ + b='UC_5_stride_gen'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +.sh.log: + @p='$<'; \ + $(am__set_b); \ + $(am__check_pre) $(SH_LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_SH_LOG_DRIVER_FLAGS) $(SH_LOG_DRIVER_FLAGS) -- $(SH_LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +@am__EXEEXT_TRUE@.sh$(EXEEXT).log: +@am__EXEEXT_TRUE@ @p='$<'; \ +@am__EXEEXT_TRUE@ $(am__set_b); \ +@am__EXEEXT_TRUE@ $(am__check_pre) $(SH_LOG_DRIVER) --test-name "$$f" \ +@am__EXEEXT_TRUE@ --log-file $$b.log --trs-file $$b.trs \ +@am__EXEEXT_TRUE@ $(am__common_driver_flags) $(AM_SH_LOG_DRIVER_FLAGS) $(SH_LOG_DRIVER_FLAGS) -- $(SH_LOG_COMPILE) \ +@am__EXEEXT_TRUE@ "$$tst" $(AM_TESTS_FD_REDIRECT) + +distdir: $(DISTFILES) + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + if test -d $$d/$$file; then \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d "$(distdir)/$$file"; then \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ + else \ + test -f "$(distdir)/$$file" \ + || cp -p $$d/$$file "$(distdir)/$$file" \ + || exit 1; \ + fi; \ + done +check-am: all-am + $(MAKE) $(AM_MAKEFLAGS) $(check_PROGRAMS) + $(MAKE) $(AM_MAKEFLAGS) check-TESTS +check: check-am +all-am: Makefile all-local +installdirs: +install: install-am +install-exec: install-exec-am +install-data: install-data-am +uninstall: uninstall-am + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-am +install-strip: + if test -z '$(STRIP)'; then \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + install; \ + else \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ + fi +mostlyclean-generic: + -test -z "$(TEST_LOGS)" || rm -f $(TEST_LOGS) + -test -z "$(TEST_LOGS:.log=.trs)" || rm -f $(TEST_LOGS:.log=.trs) + -test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG) + +clean-generic: + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." +clean: clean-am + +clean-am: clean-checkPROGRAMS clean-generic clean-libtool \ + mostlyclean-am + +distclean: distclean-am + -rm -rf ./$(DEPDIR) + -rm -f Makefile +distclean-am: clean-am distclean-compile distclean-generic \ + distclean-tags + +dvi: dvi-am + +dvi-am: + +html: html-am + +html-am: + +info: info-am + +info-am: + +install-data-am: + +install-dvi: install-dvi-am + +install-dvi-am: + +install-exec-am: + +install-html: install-html-am + +install-html-am: + +install-info: install-info-am + +install-info-am: + +install-man: + +install-pdf: install-pdf-am + +install-pdf-am: + +install-ps: install-ps-am + +install-ps-am: + +installcheck-am: + +maintainer-clean: maintainer-clean-am + -rm -rf ./$(DEPDIR) + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-am + +mostlyclean-am: mostlyclean-compile mostlyclean-generic \ + mostlyclean-libtool mostlyclean-local + +pdf: pdf-am + +pdf-am: + +ps: ps-am + +ps-am: + +uninstall-am: + +.MAKE: check-am install-am install-strip + +.PHONY: CTAGS GTAGS TAGS all all-am all-local check check-TESTS \ + check-am clean clean-checkPROGRAMS clean-generic clean-libtool \ + cscopelist-am ctags ctags-am distclean distclean-compile \ + distclean-generic distclean-libtool distclean-tags distdir dvi \ + dvi-am html html-am info info-am install install-am \ + install-data install-data-am install-dvi install-dvi-am \ + install-exec install-exec-am install-html install-html-am \ + install-info install-info-am install-man install-pdf \ + install-pdf-am install-ps install-ps-am install-strip \ + installcheck installcheck-am installdirs maintainer-clean \ + maintainer-clean-generic mostlyclean mostlyclean-compile \ + mostlyclean-generic mostlyclean-libtool mostlyclean-local pdf \ + pdf-am ps ps-am recheck tags tags-am uninstall uninstall-am + + +# List all build rules defined by HDF5 Makefiles as "PHONY" targets here. +# This tells the Makefiles that these targets are not files to be built but +# commands that should be executed even if a file with the same name already +# exists. +.PHONY: build-check-clean build-check-p build-check-s build-lib build-progs \ + build-tests check-clean check-install check-p check-s check-vfd \ + install-doc lib progs tests uninstall-doc _exec_check-s _test help + +help: + @$(top_srcdir)/bin/makehelp + +# lib/progs/tests targets recurse into subdirectories. build-* targets +# build files in this directory. +build-lib: $(LIB) +build-progs: $(LIB) $(PROGS) +build-tests: $(LIB) $(PROGS) $(chk_TESTS) + +# General rule for recursive building targets. +# BUILT_SOURCES contain targets that need to be built before anything else +# in the directory (e.g., for Fortran type detection) +lib progs tests check-s check-p :: $(BUILT_SOURCES) + @$(MAKE) $(AM_MAKEFLAGS) build-$@ || exit 1; + @for d in X $(SUBDIRS); do \ + if test $$d != X && test $$d != .; then \ + (set -x; cd $$d && $(MAKE) $(AM_MAKEFLAGS) $@) || exit 1; \ + fi; \ + done + +# General rule for recursive cleaning targets. Like the rule above, +# but doesn't require building BUILT_SOURCES. +check-clean :: + @$(MAKE) $(AM_MAKEFLAGS) build-$@ || exit 1; + @for d in X $(SUBDIRS); do \ + if test $$d != X && test $$d != .; then \ + (set -x; cd $$d && $(MAKE) $(AM_MAKEFLAGS) $@) || exit 1; \ + fi; \ + done + +# Tell Automake to build tests when the user types `make all' (this is +# not its default behavior). Also build EXTRA_LIB and EXTRA_PROG since +# Automake won't build them automatically, either. +all-local: $(EXTRA_LIB) $(EXTRA_PROG) $(chk_TESTS) + +# make install-doc doesn't do anything outside of doc directory, but +# Makefiles should recognize it. +# UPDATE: docs no longer reside in this build tree, so this target +# is depreciated. +install-doc uninstall-doc: + @echo "Nothing to be done." + +# clean up files generated by tests so they can be re-run. +build-check-clean: + $(RM) -rf $(CHECK_CLEANFILES) + +# run check-clean whenever mostlyclean is run +mostlyclean-local: build-check-clean + +# check-install is just a synonym for installcheck +check-install: installcheck + +# Run each test in order, passing $(TEST_FLAGS) to the program. +# Since tests are done in a shell loop, "make -i" does apply inside it. +# Set HDF5_Make_Ignore to a non-blank string to ignore errors inside the loop. +# The timestamps give a rough idea how much time the tests use. +# +# Note that targets in chk_TESTS (defined above) will be built when the user +# types 'make tests' or 'make check', but only programs in TEST_PROG, +# TEST_PROG_PARA, or TEST_SCRIPT will actually be executed. +check-TESTS: test + +test _test: + @$(MAKE) build-check-s + @$(MAKE) build-check-p + +# Actual execution of check-s. +build-check-s: $(LIB) $(PROGS) $(chk_TESTS) + @if test -n "$(TEST_PROG)$(TEST_SCRIPT)"; then \ + echo "===Serial tests in `echo ${PWD} | sed -e s:.*/::` begin `date`==="; \ + fi + @$(MAKE) $(AM_MAKEFLAGS) _exec_check-s + @if test -n "$(TEST_PROG)$(TEST_SCRIPT)"; then \ + echo "===Serial tests in `echo ${PWD} | sed -e s:.*/::` ended `date`===";\ + fi + +_exec_check-s: $(TEST_PROG_CHKEXE) $(TEST_SCRIPT_CHKSH) + +# The dummy.chkexe here prevents the target from being +# empty if there are no tests in the current directory. +# $${log} is the log file. +# $${tname} is the name of test. +$(TEST_PROG_CHKEXE) $(TEST_PROG_PARA_CHKEXE) dummy.chkexe_: + @if test "X$@" != "X.chkexe_" && test "X$@" != "Xdummy.chkexe_"; then \ + tname=$(@:.chkexe_=)$(EXEEXT);\ + log=$(@:.chkexe_=.chklog); \ + echo "============================"; \ + if $(top_srcdir)/bin/newer $(@:.chkexe_=.chkexe) $${tname}; then \ + echo "No need to test $${tname} again."; \ + else \ + echo "============================" > $${log}; \ + if test "X$(FORTRAN_API)" = "Xyes"; then \ + echo "Fortran API: Testing $(HDF5_DRIVER) $${tname} $(TEST_FLAGS)"; \ + echo "Fortran API: $(HDF5_DRIVER) $${tname} $(TEST_FLAGS) Test Log" >> $${log}; \ + elif test "X$(CXX_API)" = "Xyes"; then \ + echo "C++ API: Testing $(HDF5_DRIVER) $${tname} $(TEST_FLAGS)"; \ + echo "C++ API: $(HDF5_DRIVER) $${tname} $(TEST_FLAGS) Test Log" >> $${log};\ + else \ + echo "Testing $(HDF5_DRIVER) $${tname} $(TEST_FLAGS)"; \ + echo "$(HDF5_DRIVER) $${tname} $(TEST_FLAGS) Test Log" >> $${log}; \ + fi; \ + echo "============================" >> $${log}; \ + srcdir="$(srcdir)" \ + $(TIME) $(RUNEXEC) ./$${tname} $(TEST_FLAGS) >> $${log} 2>&1 \ + && touch $(@:.chkexe_=.chkexe) || \ + (test $$HDF5_Make_Ignore && echo "*** Error ignored") || \ + (cat $${log} && false) || exit 1; \ + echo "" >> $${log}; \ + echo "Finished testing $${tname} $(TEST_FLAGS)" >> $${log}; \ + echo "============================" >> $${log}; \ + echo "Finished testing $${tname} $(TEST_FLAGS)"; \ + cat $${log}; \ + fi; \ + fi + +# The dummysh.chkexe here prevents the target from being +# empty if there are no tests in the current directory. +# $${log} is the log file. +# $${tname} is the name of test. +$(TEST_SCRIPT_CHKSH) $(TEST_SCRIPT_PARA_CHKSH) dummysh.chkexe_: + @if test "X$@" != "X.chkexe_" && test "X$@" != "Xdummysh.chkexe_"; then \ + cmd=$(@:.chkexe_=);\ + tname=`basename $$cmd`;\ + chkname=`basename $(@:.chkexe_=.chkexe)`;\ + log=`basename $(@:.chkexe_=.chklog)`; \ + echo "============================"; \ + if $(top_srcdir)/bin/newer $${chkname} $$cmd $(SCRIPT_DEPEND); then \ + echo "No need to test $${tname} again."; \ + else \ + echo "============================" > $${log}; \ + if test "X$(FORTRAN_API)" = "Xyes"; then \ + echo "Fortran API: Testing $${tname} $(TEST_FLAGS)"; \ + echo "Fortran API: $${tname} $(TEST_FLAGS) Test Log" >> $${log}; \ + elif test "X$(CXX_API)" = "Xyes"; then \ + echo "C++ API: Testing $${tname} $(TEST_FLAGS)"; \ + echo "C++ API: $${tname} $(TEST_FLAGS) Test Log" >> $${log}; \ + else \ + echo "Testing $${tname} $(TEST_FLAGS)"; \ + echo "$${tname} $(TEST_FLAGS) Test Log" >> $${log}; \ + fi; \ + echo "============================" >> $${log}; \ + RUNSERIAL="$(RUNSERIAL)" RUNPARALLEL="$(RUNPARALLEL)" \ + srcdir="$(srcdir)" \ + $(TIME) $(SHELL) $$cmd $(TEST_FLAGS) >> $${log} 2>&1 \ + && touch $${chkname} || \ + (test $$HDF5_Make_Ignore && echo "*** Error ignored") || \ + (cat $${log} && false) || exit 1; \ + echo "" >> $${log}; \ + echo "Finished testing $${tname} $(TEST_FLAGS)" >> $${log}; \ + echo "============================" >> $${log}; \ + echo "Finished testing $${tname} $(TEST_FLAGS)"; \ + cat $${log}; \ + fi; \ + echo "============================"; \ + fi + +# Actual execution of check-p. +build-check-p: $(LIB) $(PROGS) $(chk_TESTS) + @if test -n "$(TEST_PROG_PARA)$(TEST_SCRIPT_PARA)"; then \ + echo "===Parallel tests in `echo ${PWD} | sed -e s:.*/::` begin `date`==="; \ + fi + @if test -n "$(TEST_PROG_PARA)"; then \ + echo "**** Hint ****"; \ + echo "Parallel test files reside in the current directory" \ + "by default."; \ + echo "Set HDF5_PARAPREFIX to use another directory. E.g.,"; \ + echo " HDF5_PARAPREFIX=/PFS/user/me"; \ + echo " export HDF5_PARAPREFIX"; \ + echo " make check"; \ + echo "**** end of Hint ****"; \ + fi + @for test in $(TEST_PROG_PARA) dummy; do \ + if test $$test != dummy; then \ + $(MAKE) $(AM_MAKEFLAGS) $$test.chkexe_ \ + RUNEXEC="$(RUNPARALLEL)" || exit 1; \ + fi; \ + done + @for test in $(TEST_SCRIPT_PARA) dummy; do \ + if test $$test != dummy; then \ + $(MAKE) $(AM_MAKEFLAGS) $$test.chkexe_ || exit 1; \ + fi; \ + done + @if test -n "$(TEST_PROG_PARA)$(TEST_SCRIPT_PARA)"; then \ + echo "===Parallel tests in `echo ${PWD} | sed -e s:.*/::` ended `date`===";\ + fi + +# Run test with different Virtual File Driver +check-vfd: $(LIB) $(PROGS) $(chk_TESTS) + @for vfd in $(VFD_LIST) dummy; do \ + if test $$vfd != dummy; then \ + echo "============================"; \ + echo "Testing Virtual File Driver $$vfd"; \ + echo "============================"; \ + $(MAKE) $(AM_MAKEFLAGS) check-clean || exit 1; \ + HDF5_DRIVER=$$vfd $(MAKE) $(AM_MAKEFLAGS) check || exit 1; \ + fi; \ + done + +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/tools/misc/vds/UC_1.h b/tools/misc/vds/UC_1.h new file mode 100644 index 0000000..29df72b --- /dev/null +++ b/tools/misc/vds/UC_1.h @@ -0,0 +1,150 @@ +/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * + * Copyright by The HDF Group. * + * Copyright by the Board of Trustees of the University of Illinois. * + * All rights reserved. * + * * + * This file is part of HDF5. The full HDF5 copyright notice, including * + * terms governing use, modification, and redistribution, is contained in * + * the files COPYING and Copyright.html. COPYING can be found at the root * + * of the source code distribution tree; Copyright.html can be found at the * + * root level of an installed copy of the electronic HDF5 document set and * + * is linked from the top-level documents page. It can also be found at * + * http://hdfgroup.org/HDF5/doc/Copyright.html. If you do not have * + * access to either file, you may request a copy from help@hdfgroup.org. * + * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ + +#ifndef UC_1_H +#define UC_1_H + +#include "hdf5.h" + +#include "UC_common.h" + +/* + * Definitions for VDS use case 1 + * + * Datasets have a single unlimited dimension and two fixed dimensions. They + * are mapped along a single dimension in the VDS with no gaps between them. + */ + +/* virtual dataset <---> source dataset mapping and sizes + + ***************** --+ + * A * K + ***************** --+ + * * | + * B * N + * * | + ***************** --+ + * C * + ***************** + * * + * D * + * * + ***************** + * E * + ***************** + * * + * F * + * * + ***************** + + | | + +-------M-------+ + + + dim[0] + / + / + / + -----> dim[2] + | + | + | + dim[1] + + */ + + +#define UC_1_N_SOURCES 6 + +/* Dataset dimensions */ +#define UC_1_SM_HEIGHT 2 /* K */ +#define UC_1_LG_HEIGHT 4 /* N */ +#define UC_1_SM_LG_HEIGHT 6 /* SM_HEIGHT + LG_HEIGHT */ +#define UC_1_FULL_HEIGHT 18 /* (3 * K) + (3 * N) */ +#define UC_1_HALF_HEIGHT 9 +#define UC_1_WIDTH 8 /* M */ +#define UC_1_HALF_WIDTH 4 + +#define UC_1_N_MAX_PLANES H5S_UNLIMITED /* max number of planes */ +#define UC_1_N_TEST_PLANES 5 /* number of planes we write */ + +/* Dataset datatypes */ +#define UC_1_SOURCE_DATATYPE H5T_STD_I32LE +#define UC_1_VDS_DATATYPE H5T_STD_I32LE + +/* Starting size of datasets, both source and VDS */ +static hsize_t UC_1_DIMS[UC_1_N_SOURCES][RANK] = { + {0, UC_1_SM_HEIGHT, UC_1_WIDTH}, + {0, UC_1_LG_HEIGHT, UC_1_WIDTH}, + {0, UC_1_SM_HEIGHT, UC_1_WIDTH}, + {0, UC_1_LG_HEIGHT, UC_1_WIDTH}, + {0, UC_1_SM_HEIGHT, UC_1_WIDTH}, + {0, UC_1_LG_HEIGHT, UC_1_WIDTH} +}; +static hsize_t UC_1_VDS_DIMS[RANK] = {0, UC_1_FULL_HEIGHT, UC_1_WIDTH}; + +/* Maximum size of datasets, both source and VDS */ +static hsize_t UC_1_MAX_DIMS[UC_1_N_SOURCES][RANK] = { + {UC_1_N_MAX_PLANES, UC_1_SM_HEIGHT, UC_1_WIDTH}, + {UC_1_N_MAX_PLANES, UC_1_LG_HEIGHT, UC_1_WIDTH}, + {UC_1_N_MAX_PLANES, UC_1_SM_HEIGHT, UC_1_WIDTH}, + {UC_1_N_MAX_PLANES, UC_1_LG_HEIGHT, UC_1_WIDTH}, + {UC_1_N_MAX_PLANES, UC_1_SM_HEIGHT, UC_1_WIDTH}, + {UC_1_N_MAX_PLANES, UC_1_LG_HEIGHT, UC_1_WIDTH} +}; +static hsize_t UC_1_VDS_MAX_DIMS[RANK] = {UC_1_N_MAX_PLANES, UC_1_FULL_HEIGHT, UC_1_WIDTH}; + +/* Planes */ +static hsize_t UC_1_PLANES[UC_1_N_SOURCES][RANK] = { + {1, UC_1_SM_HEIGHT, UC_1_WIDTH}, + {1, UC_1_LG_HEIGHT, UC_1_WIDTH}, + {1, UC_1_SM_HEIGHT, UC_1_WIDTH}, + {1, UC_1_LG_HEIGHT, UC_1_WIDTH}, + {1, UC_1_SM_HEIGHT, UC_1_WIDTH}, + {1, UC_1_LG_HEIGHT, UC_1_WIDTH} +}; +static hsize_t UC_1_VDS_PLANE[RANK] = {1, UC_1_FULL_HEIGHT, UC_1_WIDTH}; + +/* File names for source datasets */ +static char UC_1_FILE_NAMES[UC_1_N_SOURCES][NAME_LEN] = { + {"1_a.h5"}, + {"1_b.h5"}, + {"1_c.h5"}, + {"1_d.h5"}, + {"1_e.h5"}, + {"1_f.h5"} +}; + +/* VDS file name */ +static char UC_1_VDS_FILE_NAME[NAME_LEN] = "1_vds.h5"; + +/* Dataset names */ +static char UC_1_SOURCE_DSET_NAME[NAME_LEN] = "source_dset"; +static char UC_1_SOURCE_DSET_PATH[NAME_LEN] = "/source_dset"; +static char UC_1_VDS_DSET_NAME[NAME_LEN] = "vds_dset"; + +/* Fill values */ +static hsize_t UC_1_FILL_VALUES[UC_1_N_SOURCES] = { + -1, + -2, + -3, + -4, + -5, + -6 +}; +static int UC_1_VDS_FILL_VALUE = -9; + +#endif /* UC_1_H */ + diff --git a/tools/misc/vds/UC_1_one_dim_gen.c b/tools/misc/vds/UC_1_one_dim_gen.c new file mode 100644 index 0000000..a78268b --- /dev/null +++ b/tools/misc/vds/UC_1_one_dim_gen.c @@ -0,0 +1,239 @@ +/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * + * Copyright by The HDF Group. * + * Copyright by the Board of Trustees of the University of Illinois. * + * All rights reserved. * + * * + * This file is part of HDF5. The full HDF5 copyright notice, including * + * terms governing use, modification, and redistribution, is contained in * + * the files COPYING and Copyright.html. COPYING can be found at the root * + * of the source code distribution tree; Copyright.html can be found at the * + * root level of an installed copy of the electronic HDF5 document set and * + * is linked from the top-level documents page. It can also be found at * + * http://hdfgroup.org/HDF5/doc/Copyright.html. If you do not have * + * access to either file, you may request a copy from help@hdfgroup.org. * + * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ + +/* + * File/dataset generator for VDS use case 1 + * + * See the header file for a description. + */ + +#include <stdio.h> +#include <stdlib.h> + +#include "hdf5.h" + +#include "UC_common.h" +#include "UC_1.h" + + +int +main(int argc, char *argv[]) +{ + hid_t src_sid = -1; /* source dataset's dataspace ID */ + hid_t src_dcplid = -1; /* source dataset property list ID */ + + hid_t vds_sid = -1; /* VDS dataspace ID */ + hid_t vds_dcplid = -1; /* VDS dataset property list ID */ + + hid_t fid = -1; /* HDF5 file ID */ + hid_t did = -1; /* dataset ID */ + hid_t msid = -1; /* memory dataspace ID */ + hid_t fsid = -1; /* file dataspace ID */ + + hsize_t extent[RANK]; /* dataset extents */ + hsize_t start[RANK]; /* starting point for hyperslab */ + int map_start = -1; /* starting point in the VDS map */ + + int *buffer = NULL; /* data buffer */ + hsize_t count = 0; /* number of elements in a plane */ + int n_planes = -1; /* number of planes to write */ + int value = -1; /* value written to datasets */ + + int i; /* iterator */ + int j; /* iterator */ + int k; /* iterator */ + + + /* Start by creating the virtual dataset (VDS) dataspace and creation + * property list. The individual source datasets are then created + * and the VDS map (stored in the VDS property list) is updated. + */ + + /* Create VDS dcpl */ + if((vds_dcplid = H5Pcreate(H5P_DATASET_CREATE)) < 0) + UC_ERROR + if(H5Pset_fill_value(vds_dcplid, UC_1_VDS_DATATYPE, + &UC_1_VDS_FILL_VALUE) < 0) + UC_ERROR + + /* Create VDS dataspace */ + if((vds_sid = H5Screate_simple(RANK, UC_1_VDS_DIMS, + UC_1_VDS_MAX_DIMS)) < 0) + UC_ERROR + + /************************************ + * Create source files and datasets * + ************************************/ + + start[0] = 0; + start[1] = 0; + start[2] = 0; + map_start = 0; + + for(i = 0; i < UC_1_N_SOURCES; i++) { + + /* Create source dataset dcpl */ + if((src_dcplid = H5Pcreate(H5P_DATASET_CREATE)) < 0) + UC_ERROR + if(H5Pset_chunk(src_dcplid, RANK, UC_1_PLANES[i]) < 0) + UC_ERROR + if(H5Pset_fill_value(src_dcplid, UC_1_SOURCE_DATATYPE, + &UC_1_FILL_VALUES[i]) < 0) + UC_ERROR + if(0 != i % 2) + if(H5Pset_deflate(src_dcplid, COMPRESSION_LEVEL) < 0) + UC_ERROR + + /* Create source file, dataspace, and dataset */ + if((fid = H5Fcreate(UC_1_FILE_NAMES[i], H5F_ACC_TRUNC, + H5P_DEFAULT, H5P_DEFAULT)) < 0) + UC_ERROR + if((src_sid = H5Screate_simple(RANK, UC_1_DIMS[i], + UC_1_MAX_DIMS[i])) < 0) + UC_ERROR + if((did = H5Dcreate2(fid, UC_1_SOURCE_DSET_NAME, + UC_1_SOURCE_DATATYPE, src_sid, + H5P_DEFAULT, src_dcplid, H5P_DEFAULT)) < 0) + UC_ERROR + + /* Set the dataset's extent (will eventually vary with i) */ + extent[0] = UC_1_N_TEST_PLANES; + extent[1] = UC_1_PLANES[i][1]; + extent[2] = UC_1_PLANES[i][2]; + if(H5Dset_extent(did, extent) < 0) + UC_ERROR + + /* Create a data buffer that represents a plane */ + count = UC_1_PLANES[i][1] * UC_1_PLANES[i][2]; + if(NULL == (buffer = (int *)malloc(count * sizeof(int)))) + UC_ERROR + + /* Create the memory dataspace */ + if((msid = H5Screate_simple(RANK, UC_1_PLANES[i], NULL)) < 0) + UC_ERROR + + /* Get the file dataspace */ + if((fsid = H5Dget_space(did)) < 0) + UC_ERROR + + /* Write planes to the dataset, number will eventually vary with i */ + n_planes = UC_1_N_TEST_PLANES; + for(j = 0; j < n_planes; j++) { + + value = ((i + 1) * 10) + j; + for(k = 0; k < count; k++) + buffer[k] = value; + + start[0] = j; + start[1] = 0; + start[2] = 0; + if(H5Sselect_hyperslab(fsid, H5S_SELECT_SET, start, NULL, UC_1_PLANES[i], NULL) < 0) + UC_ERROR + if(H5Dwrite(did, H5T_NATIVE_INT, msid, fsid, H5P_DEFAULT, buffer) < 0) + UC_ERROR + + } /* end for */ + + /* set up hyperslabs for source and destination datasets */ + start[0] = 0; + start[1] = 0; + start[2] = 0; + if(H5Sselect_hyperslab(src_sid, H5S_SELECT_SET, start, NULL, + UC_1_MAX_DIMS[i], NULL) < 0) + UC_ERROR + start[0] = 0; + start[1] = map_start; + start[2] = 0; + if(H5Sselect_hyperslab(vds_sid, H5S_SELECT_SET, start, NULL, + UC_1_MAX_DIMS[i], NULL) < 0) + UC_ERROR + map_start += UC_1_PLANES[i][1]; + + /* Add VDS mapping */ + if(H5Pset_virtual(vds_dcplid, vds_sid, UC_1_FILE_NAMES[i], + UC_1_SOURCE_DSET_PATH, src_sid) < 0) + UC_ERROR + + /* close */ + if(H5Sclose(src_sid) < 0) + UC_ERROR + if(H5Pclose(src_dcplid) < 0) + UC_ERROR + if(H5Sclose(msid) < 0) + UC_ERROR + if(H5Sclose(fsid) < 0) + UC_ERROR + if(H5Dclose(did) < 0) + UC_ERROR + if(H5Fclose(fid) < 0) + UC_ERROR + free(buffer); + + } /* end for */ + + + /******************* + * Create VDS file * + *******************/ + + /* file */ + if((fid = H5Fcreate(UC_1_VDS_FILE_NAME, H5F_ACC_TRUNC, + H5P_DEFAULT, H5P_DEFAULT)) < 0) + UC_ERROR + + /* dataset */ + if((did = H5Dcreate2(fid, UC_1_VDS_DSET_NAME, UC_1_VDS_DATATYPE, vds_sid, + H5P_DEFAULT, vds_dcplid, H5P_DEFAULT)) < 0) + UC_ERROR + + /* close */ + if(H5Pclose(vds_dcplid) < 0) + UC_ERROR + if(H5Sclose(vds_sid) < 0) + UC_ERROR + if(H5Dclose(did) < 0) + UC_ERROR + if(H5Fclose(fid) < 0) + UC_ERROR + + return EXIT_SUCCESS; + +error: + + H5E_BEGIN_TRY { + if(src_sid >= 0) + (void)H5Sclose(src_sid); + if(src_dcplid >= 0) + (void)H5Pclose(src_dcplid); + if(vds_sid >= 0) + (void)H5Sclose(vds_sid); + if(vds_dcplid >= 0) + (void)H5Pclose(vds_dcplid); + if(fid >= 0) + (void)H5Fclose(fid); + if(did >= 0) + (void)H5Dclose(did); + if(msid >= 0) + (void)H5Sclose(msid); + if(fsid >= 0) + (void)H5Sclose(fsid); + if(buffer != NULL) + free(buffer); + } H5E_END_TRY + + return EXIT_FAILURE; + +} /* end main */ + diff --git a/tools/misc/vds/UC_2.h b/tools/misc/vds/UC_2.h new file mode 100644 index 0000000..3e4e4fd --- /dev/null +++ b/tools/misc/vds/UC_2.h @@ -0,0 +1,151 @@ +/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * + * Copyright by The HDF Group. * + * Copyright by the Board of Trustees of the University of Illinois. * + * All rights reserved. * + * * + * This file is part of HDF5. The full HDF5 copyright notice, including * + * terms governing use, modification, and redistribution, is contained in * + * the files COPYING and Copyright.html. COPYING can be found at the root * + * of the source code distribution tree; Copyright.html can be found at the * + * root level of an installed copy of the electronic HDF5 document set and * + * is linked from the top-level documents page. It can also be found at * + * http://hdfgroup.org/HDF5/doc/Copyright.html. If you do not have * + * access to either file, you may request a copy from help@hdfgroup.org. * + * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ + +#ifndef UC_2_H +#define UC_2_H + +#include "hdf5.h" + +/* + * Definitions for VDS use case 2 + * + * Datasets have a single unlimited dimension and two fixed dimensions. They + * are mapped along two dimensions in the VDS with no gaps between them. + */ + +/* virtual dataset <---> source dataset mapping and sizes + + ********************************** + * A * * + ***************** D * + * * * + * B * * + * ****************** + ***************** E * + * C * * + ********************************** + + + dim[0] + / + / + / + -----> dim[2] + | + | + | + dim[1] + + */ + +#define UC_2_N_SOURCES 5 + +/* Dataset dimensions */ +#define UC_2_A_HEIGHT 2 +#define UC_2_B_HEIGHT 4 +#define UC_2_AB_HEIGHT 6 /* For hyperslab start position */ +#define UC_2_C_HEIGHT 2 +#define UC_2_D_HEIGHT 5 +#define UC_2_E_HEIGHT 3 +#define UC_2_FULL_HEIGHT 8 /* A+B+C and D+E */ +#define UC_2_WIDTH 7 +#define UC_2_FULL_WIDTH 14 /* 2*width */ + +#define UC_2_N_PLANES_IN_SERIES 3 /* number of planes in a series of sub-images */ +#define UC_2_N_MAX_PLANES H5S_UNLIMITED /* max number of planes */ +#define UC_2_N_TEST_PLANES 6 /* number of planes we write */ + +/* Dataset datatypes */ +#define UC_2_SOURCE_DATATYPE H5T_STD_I32LE +#define UC_2_VDS_DATATYPE H5T_STD_I32LE + +/* Starting size of datasets, both source and VDS */ +static hsize_t UC_2_DIMS[UC_2_N_SOURCES][RANK] = { + {0, UC_2_A_HEIGHT, UC_2_WIDTH}, + {0, UC_2_B_HEIGHT, UC_2_WIDTH}, + {0, UC_2_C_HEIGHT, UC_2_WIDTH}, + {0, UC_2_D_HEIGHT, UC_2_WIDTH}, + {0, UC_2_E_HEIGHT, UC_2_WIDTH} +}; +static hsize_t UC_2_VDS_DIMS[RANK] = {0, UC_2_FULL_HEIGHT, UC_2_FULL_WIDTH}; + +/* Maximum size of datasets, both source and VDS */ +static hsize_t UC_2_MAX_DIMS[UC_2_N_SOURCES][RANK] = { + {UC_2_N_MAX_PLANES, UC_2_A_HEIGHT, UC_2_WIDTH}, + {UC_2_N_MAX_PLANES, UC_2_B_HEIGHT, UC_2_WIDTH}, + {UC_2_N_MAX_PLANES, UC_2_C_HEIGHT, UC_2_WIDTH}, + {UC_2_N_MAX_PLANES, UC_2_D_HEIGHT, UC_2_WIDTH}, + {UC_2_N_MAX_PLANES, UC_2_E_HEIGHT, UC_2_WIDTH} +}; +static hsize_t UC_2_VDS_MAX_DIMS[RANK] = {UC_2_N_MAX_PLANES, UC_2_FULL_HEIGHT, UC_2_FULL_WIDTH}; + +/* Positions of source datasets in the VDS */ +static hsize_t UC_2_POSITIONS[UC_2_N_SOURCES][RANK] = { + /* A */ {0, 0, 0}, + /* B */ {0, UC_2_A_HEIGHT, 0}, + /* C */ {0, UC_2_AB_HEIGHT, 0}, + /* D */ {0, 0, UC_2_WIDTH}, + /* E */ {0, UC_2_D_HEIGHT, UC_2_WIDTH} +}; + +/* Planes */ +static hsize_t UC_2_PLANES[UC_2_N_SOURCES][RANK] = { + {1, UC_2_A_HEIGHT, UC_2_WIDTH}, + {1, UC_2_B_HEIGHT, UC_2_WIDTH}, + {1, UC_2_C_HEIGHT, UC_2_WIDTH}, + {1, UC_2_D_HEIGHT, UC_2_WIDTH}, + {1, UC_2_E_HEIGHT, UC_2_WIDTH} +}; +static hsize_t UC_2_VDS_SUB_IMAGE[RANK] = {1, UC_2_FULL_HEIGHT, UC_2_WIDTH}; +static hsize_t UC_2_VDS_PLANE[RANK] = {1, UC_2_FULL_HEIGHT, UC_2_FULL_WIDTH}; + +/* Chunk dimensions */ +static hsize_t UC_2_CHUNK_DIMS[UC_2_N_SOURCES][RANK] = { + {UC_2_N_PLANES_IN_SERIES, UC_2_A_HEIGHT, UC_2_WIDTH}, + {UC_2_N_PLANES_IN_SERIES, UC_2_B_HEIGHT, UC_2_WIDTH}, + {UC_2_N_PLANES_IN_SERIES, UC_2_C_HEIGHT, UC_2_WIDTH}, + {UC_2_N_PLANES_IN_SERIES, UC_2_D_HEIGHT, UC_2_WIDTH}, + {UC_2_N_PLANES_IN_SERIES, UC_2_E_HEIGHT, UC_2_WIDTH} +}; + +/* File names for source datasets */ +static char UC_2_FILE_NAMES[UC_2_N_SOURCES][NAME_LEN] = { + {"2_a.h5"}, + {"2_b.h5"}, + {"2_c.h5"}, + {"2_d.h5"}, + {"2_e.h5"} +}; + +/* VDS file name */ +#define UC_2_VDS_FILE_NAME "2_vds.h5" + +/* Dataset names */ +#define UC_2_SOURCE_DSET_NAME "source_dset" +#define UC_2_SOURCE_DSET_PATH "/source_dset" +#define UC_2_VDS_DSET_NAME "vds_dset" + +/* Fill values */ +static hsize_t UC_2_FILL_VALUES[UC_2_N_SOURCES] = { + -1, + -2, + -3, + -4, + -5 +}; +static int UC_2_VDS_FILL_VALUE = -9; + +#endif /* UC_2_H */ + diff --git a/tools/misc/vds/UC_2_two_dims_gen.c b/tools/misc/vds/UC_2_two_dims_gen.c new file mode 100644 index 0000000..b5fd319 --- /dev/null +++ b/tools/misc/vds/UC_2_two_dims_gen.c @@ -0,0 +1,230 @@ +/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * + * Copyright by The HDF Group. * + * Copyright by the Board of Trustees of the University of Illinois. * + * All rights reserved. * + * * + * This file is part of HDF5. The full HDF5 copyright notice, including * + * terms governing use, modification, and redistribution, is contained in * + * the files COPYING and Copyright.html. COPYING can be found at the root * + * of the source code distribution tree; Copyright.html can be found at the * + * root level of an installed copy of the electronic HDF5 document set and * + * is linked from the top-level documents page. It can also be found at * + * http://hdfgroup.org/HDF5/doc/Copyright.html. If you do not have * + * access to either file, you may request a copy from help@hdfgroup.org. * + * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ + +/* + * File/dataset generator for VDS use case 2 + * + * See the header file for a description. + */ + + +#include <stdlib.h> + +#include "hdf5.h" + +#include "UC_common.h" +#include "UC_2.h" + +int +main(int argc, char *argv[]) +{ + hid_t src_sid = -1; /* source dataset's dataspace ID */ + hid_t src_dcplid = -1; /* source dataset property list ID */ + + hid_t vds_sid = -1; /* VDS dataspace ID */ + hid_t vds_dcplid = -1; /* VDS dataset property list ID */ + + hid_t fid = -1; /* HDF5 file ID */ + hid_t did = -1; /* dataset ID */ + hid_t msid = -1; /* memory dataspace ID */ + hid_t fsid = -1; /* file dataspace ID */ + + hsize_t start[RANK]; /* starting point for hyperslab */ + hsize_t extent[RANK]; /* dataset extents */ + + int *buffer = NULL; /* data buffer */ + int value = -1; /* value written to datasets */ + hsize_t count = 0; /* number of elements in a plane */ + int n_planes = -1; /* number of planes to write */ + + int i; /* iterator */ + int j; /* iterator */ + int k; /* iterator */ + + + /* Start by creating the virtual dataset (VDS) dataspace and creation + * property list. The individual source datasets are then created + * and the VDS map (stored in the VDS property list) is updated. + */ + + /* Create VDS dcpl */ + if((vds_dcplid = H5Pcreate(H5P_DATASET_CREATE)) < 0) + UC_ERROR + if(H5Pset_fill_value(vds_dcplid, UC_2_VDS_DATATYPE, + &UC_2_VDS_FILL_VALUE) < 0) + UC_ERROR + + /* Create VDS dataspace */ + if((vds_sid = H5Screate_simple(RANK, UC_2_VDS_DIMS, + UC_2_VDS_MAX_DIMS)) < 0) + UC_ERROR + + /************************************ + * Create source files and datasets * + ************************************/ + + start[0] = 0; + start[1] = 0; + start[2] = 0; + + for(i = 0; i < UC_2_N_SOURCES; i++) { + + /* source dataset dcpl */ + if((src_dcplid = H5Pcreate(H5P_DATASET_CREATE)) < 0) + UC_ERROR + if(H5Pset_chunk(src_dcplid, RANK, UC_2_CHUNK_DIMS[i]) < 0) + UC_ERROR + if(H5Pset_fill_value(src_dcplid, UC_2_SOURCE_DATATYPE, + &UC_2_FILL_VALUES[i]) < 0) + UC_ERROR + if(H5Pset_deflate(src_dcplid, COMPRESSION_LEVEL) < 0) + UC_ERROR + + /* Create source file, dataspace, and dataset */ + if((fid = H5Fcreate(UC_2_FILE_NAMES[i], H5F_ACC_TRUNC, + H5P_DEFAULT, H5P_DEFAULT)) < 0) + UC_ERROR + if((src_sid = H5Screate_simple(RANK, UC_2_DIMS[i], + UC_2_MAX_DIMS[i])) < 0) + UC_ERROR + if((did = H5Dcreate2(fid, UC_2_SOURCE_DSET_NAME, + UC_2_SOURCE_DATATYPE, src_sid, + H5P_DEFAULT, src_dcplid, H5P_DEFAULT)) < 0) + UC_ERROR + + /* Set the dataset's extent (will eventually vary with i) */ + extent[0] = UC_2_N_TEST_PLANES; + extent[1] = UC_2_PLANES[i][1]; + extent[2] = UC_2_PLANES[i][2]; + if(H5Dset_extent(did, extent) < 0) + UC_ERROR + + /* Create a data buffer that represents a plane */ + count = UC_2_PLANES[i][1] * UC_2_PLANES[i][2]; + if(NULL == (buffer = (int *)malloc(count * sizeof(int)))) + UC_ERROR + + /* Create the memory dataspace */ + if((msid = H5Screate_simple(RANK, UC_2_PLANES[i], NULL)) < 0) + UC_ERROR + + /* Get the file dataspace */ + if((fsid = H5Dget_space(did)) < 0) + UC_ERROR + + /* Write planes to the dataset, number will eventually vary with i */ + n_planes = UC_2_N_TEST_PLANES; + for(j = 0; j < n_planes; j++) { + + value = ((i + 1) * 10) + j; + for(k = 0; k < count; k++) + buffer[k] = value; + + start[0] = j; + start[1] = 0; + start[2] = 0; + if(H5Sselect_hyperslab(fsid, H5S_SELECT_SET, start, NULL, UC_2_PLANES[i], NULL) < 0) + UC_ERROR + if(H5Dwrite(did, H5T_NATIVE_INT, msid, fsid, H5P_DEFAULT, buffer) < 0) + UC_ERROR + + } /* end for */ + + /* set up hyperslabs for source and destination datasets */ + start[0] = 0; + start[1] = 0; + start[2] = 0; + if(H5Sselect_hyperslab(src_sid, H5S_SELECT_SET, start, NULL, + UC_2_MAX_DIMS[i], NULL) < 0) + UC_ERROR + if(H5Sselect_hyperslab(vds_sid, H5S_SELECT_SET, UC_2_POSITIONS[i], NULL, + UC_2_MAX_DIMS[i], NULL) < 0) + UC_ERROR + + /* Add VDS mapping */ + if(H5Pset_virtual(vds_dcplid, vds_sid, UC_2_FILE_NAMES[i], + UC_2_SOURCE_DSET_PATH, src_sid) < 0) + UC_ERROR + + /* close */ + if(H5Sclose(msid) < 0) + UC_ERROR + if(H5Sclose(fsid) < 0) + UC_ERROR + if(H5Sclose(src_sid) < 0) + UC_ERROR + if(H5Pclose(src_dcplid) < 0) + UC_ERROR + if(H5Dclose(did) < 0) + UC_ERROR + if(H5Fclose(fid) < 0) + UC_ERROR + free(buffer); + + } /* end for */ + + /******************************* + * Create VDS file and dataset * + *******************************/ + + /* file */ + if((fid = H5Fcreate(UC_2_VDS_FILE_NAME, H5F_ACC_TRUNC, + H5P_DEFAULT, H5P_DEFAULT)) < 0) + UC_ERROR + + /* dataset */ + if((did = H5Dcreate2(fid, UC_2_VDS_DSET_NAME, UC_2_VDS_DATATYPE, vds_sid, + H5P_DEFAULT, vds_dcplid, H5P_DEFAULT)) < 0) + UC_ERROR + + /* close */ + if(H5Pclose(vds_dcplid) < 0) + UC_ERROR + if(H5Sclose(vds_sid) < 0) + UC_ERROR + if(H5Dclose(did) < 0) + UC_ERROR + if(H5Fclose(fid) < 0) + UC_ERROR + + return EXIT_SUCCESS; + +error: + + H5E_BEGIN_TRY { + if(src_sid >= 0) + (void)H5Sclose(src_sid); + if(src_dcplid >= 0) + (void)H5Pclose(src_dcplid); + if(vds_sid >= 0) + (void)H5Sclose(vds_sid); + if(vds_dcplid >= 0) + (void)H5Pclose(vds_dcplid); + if(fid >= 0) + (void)H5Fclose(fid); + if(did >= 0) + (void)H5Dclose(did); + if(msid >= 0) + (void)H5Sclose(msid); + if(fsid >= 0) + (void)H5Sclose(fsid); + if(buffer != NULL) + free(buffer); + } H5E_END_TRY + + return EXIT_FAILURE; + +} /* end main() */ + diff --git a/tools/misc/vds/UC_3.h b/tools/misc/vds/UC_3.h new file mode 100644 index 0000000..a27c3cf --- /dev/null +++ b/tools/misc/vds/UC_3.h @@ -0,0 +1,78 @@ +/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * + * Copyright by The HDF Group. * + * Copyright by the Board of Trustees of the University of Illinois. * + * All rights reserved. * + * * + * This file is part of HDF5. The full HDF5 copyright notice, including * + * terms governing use, modification, and redistribution, is contained in * + * the files COPYING and Copyright.html. COPYING can be found at the root * + * of the source code distribution tree; Copyright.html can be found at the * + * root level of an installed copy of the electronic HDF5 document set and * + * is linked from the top-level documents page. It can also be found at * + * http://hdfgroup.org/HDF5/doc/Copyright.html. If you do not have * + * access to either file, you may request a copy from help@hdfgroup.org. * + * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ + +#ifndef UC_3_H +#define UC_3_H + +#include "hdf5.h" + +#include "UC_1.h" +#include "UC_2.h" + +/* + * Definitions for VDS use case 3 + * + * Datasets have a single unlimited dimension and one or two fixed + * dimensions (they are reused from use cases 1 and 2). In this use case, + * the datasets are mapped in the VDS with gaps between them. + */ + +/* VDS dimensions + * Height and width are large enough to encompass the + * mapped source datasets with gaps. + */ +#define UC_31_VDS_HEIGHT 25 /* full height + 7 (gaps of 1) */ +#define UC_31_VDS_WIDTH 8 /* full width + 0 (no gaps) */ +#define UC_32_VDS_HEIGHT 13 /* full height + 5 */ +#define UC_32_VDS_WIDTH 19 /* full width + 5 */ +#define UC_31_GAP 1 + +/* VDS datatypes */ +#define UC_31_VDS_DATATYPE H5T_STD_I32LE +#define UC_32_VDS_DATATYPE H5T_STD_I32LE + +/* Starting size of virtual datasets */ +static hsize_t UC_31_VDS_DIMS[RANK] = {0, UC_31_VDS_HEIGHT, UC_31_VDS_WIDTH}; +static hsize_t UC_32_VDS_DIMS[RANK] = {0, UC_32_VDS_HEIGHT, UC_32_VDS_WIDTH}; + +/* Maximum size of virtual datasets */ +static hsize_t UC_31_VDS_MAX_DIMS[RANK] = {UC_1_N_MAX_PLANES, UC_31_VDS_HEIGHT, UC_31_VDS_WIDTH}; +static hsize_t UC_32_VDS_MAX_DIMS[RANK] = {UC_2_N_MAX_PLANES, UC_32_VDS_HEIGHT, UC_32_VDS_WIDTH}; + +/* Positions of mapped source datasets */ +static hsize_t UC_32_POSITIONS[UC_2_N_SOURCES][RANK] = { + /* A */ {0, 1, 1}, + /* B */ {0, 4, 0}, + /* C */ {0, 11, 4}, + /* D */ {0, 1, 9}, + /* E */ {0, 8, 12} +}; + +/* Planes */ +static hsize_t UC_31_VDS_PLANE[RANK] = {1, UC_31_VDS_HEIGHT, UC_31_VDS_WIDTH}; +static hsize_t UC_32_VDS_PLANE[RANK] = {1, UC_32_VDS_HEIGHT, UC_32_VDS_WIDTH}; + +/* VDS file names */ +#define UC_31_VDS_FILE_NAME "3_1_vds.h5" +#define UC_32_VDS_FILE_NAME "3_2_vds.h5" + +/* Dataset name */ +#define UC_3_VDS_DSET_NAME "vds_dset" + +/* Fill value */ +static int UC_3_VDS_FILL_VALUE = -9; + +#endif /* UC_3_H */ + diff --git a/tools/misc/vds/UC_3_gaps_gen.c b/tools/misc/vds/UC_3_gaps_gen.c new file mode 100644 index 0000000..1f150c1 --- /dev/null +++ b/tools/misc/vds/UC_3_gaps_gen.c @@ -0,0 +1,255 @@ +/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * + * Copyright by The HDF Group. * + * Copyright by the Board of Trustees of the University of Illinois. * + * All rights reserved. * + * * + * This file is part of HDF5. The full HDF5 copyright notice, including * + * terms governing use, modification, and redistribution, is contained in * + * the files COPYING and Copyright.html. COPYING can be found at the root * + * of the source code distribution tree; Copyright.html can be found at the * + * root level of an installed copy of the electronic HDF5 document set and * + * is linked from the top-level documents page. It can also be found at * + * http://hdfgroup.org/HDF5/doc/Copyright.html. If you do not have * + * access to either file, you may request a copy from help@hdfgroup.org. * + * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ + +/* + * File/dataset generator for VDS use case 3 + * + * See the header file for a description. + */ + +#include <stdlib.h> +#include <string.h> + +#include <hdf5.h> + +#include "UC_common.h" +#include "UC_3.h" + +/* Create the VDS that uses use case 1 files */ +herr_t +create_3_1_vds(void) +{ + hid_t src_sid = -1; /* source dataset's dataspace ID */ + hid_t vds_sid = -1; /* VDS dataspace ID */ + hid_t vds_dcplid = -1; /* VDS dataset property list ID */ + + hid_t fid = -1; /* HDF5 file ID */ + hid_t did = -1; /* dataset ID */ + + hsize_t start[RANK]; /* source starting point for hyperslab */ + hsize_t position[RANK]; /* vds mapping positions */ + + int i; /* iterator */ + + /* Create VDS dcpl */ + if((vds_dcplid = H5Pcreate(H5P_DATASET_CREATE)) < 0) + UC_ERROR + if(H5Pset_fill_value(vds_dcplid, UC_31_VDS_DATATYPE, + &UC_3_VDS_FILL_VALUE) < 0) + UC_ERROR + + /* Create VDS dataspace */ + if((vds_sid = H5Screate_simple(RANK, UC_31_VDS_DIMS, + UC_31_VDS_MAX_DIMS)) < 0) + UC_ERROR + + /* Set starting positions */ + start[0] = 0; + start[1] = 0; + start[2] = 0; + + position[0] = 0; + position[1] = UC_31_GAP; + position[2] = 0; + + /****************************** + * Create source-VDS mappings * + ******************************/ + for(i = 0; i < UC_1_N_SOURCES; i++) { + + if((src_sid = H5Screate_simple(RANK, UC_1_DIMS[i], + UC_1_MAX_DIMS[i])) < 0) + UC_ERROR + + /* set up hyperslabs for source and destination datasets */ + if(H5Sselect_hyperslab(src_sid, H5S_SELECT_SET, start, NULL, + UC_1_MAX_DIMS[i], NULL) < 0) + UC_ERROR + if(H5Sselect_hyperslab(vds_sid, H5S_SELECT_SET, position, + NULL, UC_1_MAX_DIMS[i], NULL) < 0) + UC_ERROR + position[1] += UC_1_DIMS[i][1] + UC_31_GAP; + + /* Add VDS mapping */ + if(H5Pset_virtual(vds_dcplid, vds_sid, UC_1_FILE_NAMES[i], + UC_1_SOURCE_DSET_PATH, src_sid) < 0) + UC_ERROR + if(H5Sclose(src_sid) < 0) + UC_ERROR + + } /* end for */ + + /******************************* + * Create VDS file and dataset * + *******************************/ + + /* file */ + if((fid = H5Fcreate(UC_31_VDS_FILE_NAME, H5F_ACC_TRUNC, + H5P_DEFAULT, H5P_DEFAULT)) < 0) + UC_ERROR + + /* dataset */ + if((did = H5Dcreate2(fid, UC_3_VDS_DSET_NAME, UC_31_VDS_DATATYPE, vds_sid, + H5P_DEFAULT, vds_dcplid, H5P_DEFAULT)) < 0) + UC_ERROR + + /* close */ + if(H5Pclose(vds_dcplid) < 0) + UC_ERROR + if(H5Sclose(vds_sid) < 0) + UC_ERROR + if(H5Dclose(did) < 0) + UC_ERROR + if(H5Fclose(fid) < 0) + UC_ERROR + + return 0; + +error: + + H5E_BEGIN_TRY { + if(vds_sid >= 0) + (void)H5Sclose(vds_sid); + if(vds_dcplid >= 0) + (void)H5Pclose(vds_dcplid); + if(fid >= 0) + (void)H5Fclose(fid); + if(did >= 0) + (void)H5Dclose(did); + } H5E_END_TRY + + return -1; + +} /* end create_3_1_vds() */ + +/* Create the VDS that uses use case 2 files */ +herr_t +create_3_2_vds(void) +{ + hid_t src_sid = -1; /* source dataset's dataspace ID */ + hid_t vds_sid = -1; /* VDS dataspace ID */ + hid_t vds_dcplid = -1; /* VDS dataset property list ID */ + + hid_t fid = -1; /* HDF5 file ID */ + hid_t did = -1; /* dataset ID */ + + hsize_t start[RANK]; /* source starting point for hyperslab */ + + int i; /* iterator */ + + /* Create VDS dcpl */ + if((vds_dcplid = H5Pcreate(H5P_DATASET_CREATE)) < 0) + UC_ERROR + if(H5Pset_fill_value(vds_dcplid, UC_32_VDS_DATATYPE, + &UC_3_VDS_FILL_VALUE) < 0) + UC_ERROR + + /* Create VDS dataspace */ + if((vds_sid = H5Screate_simple(RANK, UC_32_VDS_DIMS, + UC_32_VDS_MAX_DIMS)) < 0) + UC_ERROR + + /* Set starting positions */ + start[0] = 0; + start[1] = 0; + start[2] = 0; + + /****************************** + * Create source-VDS mappings * + ******************************/ + for(i = 0; i < UC_2_N_SOURCES; i++) { + + if((src_sid = H5Screate_simple(RANK, UC_2_DIMS[i], + UC_2_MAX_DIMS[i])) < 0) + UC_ERROR + + /* set up hyperslabs for source and destination datasets */ + if(H5Sselect_hyperslab(src_sid, H5S_SELECT_SET, start, NULL, + UC_2_MAX_DIMS[i], NULL) < 0) + UC_ERROR + if(H5Sselect_hyperslab(vds_sid, H5S_SELECT_SET, UC_32_POSITIONS[i], + NULL, UC_2_MAX_DIMS[i], NULL) < 0) + UC_ERROR + + /* Add VDS mapping */ + if(H5Pset_virtual(vds_dcplid, vds_sid, UC_2_FILE_NAMES[i], + UC_2_SOURCE_DSET_PATH, src_sid) < 0) + UC_ERROR + if(H5Sclose(src_sid) < 0) + UC_ERROR + + } /* end for */ + + /******************************* + * Create VDS file and dataset * + *******************************/ + + /* file */ + if((fid = H5Fcreate(UC_32_VDS_FILE_NAME, H5F_ACC_TRUNC, + H5P_DEFAULT, H5P_DEFAULT)) < 0) + UC_ERROR + + /* dataset */ + if((did = H5Dcreate2(fid, UC_3_VDS_DSET_NAME, UC_32_VDS_DATATYPE, vds_sid, + H5P_DEFAULT, vds_dcplid, H5P_DEFAULT)) < 0) + UC_ERROR + + /* close */ + if(H5Pclose(vds_dcplid) < 0) + UC_ERROR + if(H5Sclose(vds_sid) < 0) + UC_ERROR + if(H5Dclose(did) < 0) + UC_ERROR + if(H5Fclose(fid) < 0) + UC_ERROR + + return 0; + +error: + + H5E_BEGIN_TRY { + if(vds_sid >= 0) + (void)H5Sclose(vds_sid); + if(vds_dcplid >= 0) + (void)H5Pclose(vds_dcplid); + if(fid >= 0) + (void)H5Fclose(fid); + if(did >= 0) + (void)H5Dclose(did); + } H5E_END_TRY + + return -1; + +} /* end create_3_2_vds() */ + +int +main(int argc, char *argv[]) +{ + + if(create_3_1_vds() < 0) + UC_ERROR + + if(create_3_2_vds() < 0) + UC_ERROR + + return EXIT_SUCCESS; + +error: + + return EXIT_FAILURE; + +} /* end main() */ + diff --git a/tools/misc/vds/UC_4.h b/tools/misc/vds/UC_4.h new file mode 100644 index 0000000..ce74e63 --- /dev/null +++ b/tools/misc/vds/UC_4.h @@ -0,0 +1,86 @@ +/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * + * Copyright by The HDF Group. * + * Copyright by the Board of Trustees of the University of Illinois. * + * All rights reserved. * + * * + * This file is part of HDF5. The full HDF5 copyright notice, including * + * terms governing use, modification, and redistribution, is contained in * + * the files COPYING and Copyright.html. COPYING can be found at the root * + * of the source code distribution tree; Copyright.html can be found at the * + * root level of an installed copy of the electronic HDF5 document set and * + * is linked from the top-level documents page. It can also be found at * + * http://hdfgroup.org/HDF5/doc/Copyright.html. If you do not have * + * access to either file, you may request a copy from help@hdfgroup.org. * + * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ + +#ifndef UC_4_H +#define UC_4_H + +#include "hdf5.h" + +#include "UC_common.h" + +/* + * Definitions for VDS use case 4 + * + * Source datasets have three fixed dimensions. In this use case, the + * datasets are mapped consecutively in the VDS along a single dimension with + * no gaps between them. Datasets are automatically loaded using a + * printf-like format string for the file name. + */ + +/* virtual dataset <---> source dataset mapping and sizes */ + +#define UC_4_N_SOURCES 3 + +/* Dataset dimensions */ +#define UC_4_SRC_PLANES 3 +#define UC_4_HEIGHT 4 +#define UC_4_WIDTH 4 + +/* max number of planes for VDS (sources are finite) */ +#define UC_4_VDS_MAX_PLANES H5S_UNLIMITED +#define UC_4_N_TEST_PLANES 9 /* number of planes in the VDS */ + +/* Dataset datatypes */ +#define UC_4_SOURCE_DATATYPE H5T_STD_I32LE +#define UC_4_VDS_DATATYPE H5T_STD_I32LE + +/* Starting size of datasets, both source and VDS */ +static hsize_t UC_4_SOURCE_DIMS[RANK] = {0, UC_4_HEIGHT, UC_4_WIDTH}; +static hsize_t UC_4_VDS_DIMS[RANK] = {0, UC_4_HEIGHT, UC_4_WIDTH}; + +/* Max size of datasets, both source and VDS */ +static hsize_t UC_4_SOURCE_MAX_DIMS[RANK] = {UC_4_SRC_PLANES, UC_4_HEIGHT, UC_4_WIDTH}; +static hsize_t UC_4_VDS_MAX_DIMS[RANK] = {UC_4_VDS_MAX_PLANES, UC_4_HEIGHT, UC_4_WIDTH}; + +/* Planes (both source and VDS) */ +static hsize_t UC_4_PLANE[RANK] = {1, UC_4_HEIGHT, UC_4_WIDTH}; + +/* File names for source datasets */ +static char UC_4_FILE_NAMES[UC_4_N_SOURCES][NAME_LEN] = { + {"4_0.h5"}, + {"4_1.h5"}, + {"4_2.h5"} +}; +static char UC_4_MAPPING_FILE_NAME[NAME_LEN] = "4_%b.h5"; + +/* VDS file name */ +static char UC_4_VDS_FILE_NAME[NAME_LEN] = "4_vds.h5"; + +/* Dataset names */ +static char UC_4_SOURCE_DSET_NAME[NAME_LEN] = "source_dset"; +static char UC_4_SOURCE_DSET_PATH[NAME_LEN] = "/source_dset"; +static char UC_4_VDS_DSET_NAME[NAME_LEN] = "vds_dset"; + +/* Fill values */ +static hsize_t UC_4_FILL_VALUES[UC_4_N_SOURCES] = { + -1, + -2, + -3 +}; +static int UC_4_VDS_FILL_VALUE = -9; + +#endif /* UC_4_H */ + + diff --git a/tools/misc/vds/UC_4_printf_gen.c b/tools/misc/vds/UC_4_printf_gen.c new file mode 100644 index 0000000..c8e111a --- /dev/null +++ b/tools/misc/vds/UC_4_printf_gen.c @@ -0,0 +1,219 @@ +/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * + * Copyright by The HDF Group. * + * Copyright by the Board of Trustees of the University of Illinois. * + * All rights reserved. * + * * + * This file is part of HDF5. The full HDF5 copyright notice, including * + * terms governing use, modification, and redistribution, is contained in * + * the files COPYING and Copyright.html. COPYING can be found at the root * + * of the source code distribution tree; Copyright.html can be found at the * + * root level of an installed copy of the electronic HDF5 document set and * + * is linked from the top-level documents page. It can also be found at * + * http://hdfgroup.org/HDF5/doc/Copyright.html. If you do not have * + * access to either file, you may request a copy from help@hdfgroup.org. * + * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ + +/* + * File/dataset generator for VDS use case 4 + * + * See the header file for a description. + */ + +#include <stdlib.h> + +#include <hdf5.h> + +#include "UC_common.h" +#include "UC_4.h" + +int +main(int argc, char *argv[]) +{ + hid_t src_sid = -1; /* source dataset's dataspace ID */ + hid_t src_dcplid = -1; /* source dataset property list ID */ + + hid_t vds_sid = -1; /* VDS dataspace ID */ + hid_t vds_dcplid = -1; /* VDS dataset property list ID */ + + hid_t fid = -1; /* HDF5 file ID */ + hid_t did = -1; /* dataset ID */ + hid_t msid = -1; /* memory dataspace ID */ + hid_t fsid = -1; /* file dataspace ID */ + + /* Hyperslab arrays */ + hsize_t start[RANK] = {0, 0, 0}; + hsize_t count[RANK] = {H5S_UNLIMITED, 1, 1}; + + int *buffer = NULL; /* data buffer */ + int value = -1; /* value written to datasets */ + + hsize_t n = 0; /* number of elements in a plane */ + + int i; /* iterator */ + int j; /* iterator */ + int k; /* iterator */ + + /************************************ + * Create source files and datasets * + ************************************/ + + /* Create source dataspace ID */ + if((src_sid = H5Screate_simple(RANK, UC_4_SOURCE_DIMS, + UC_4_SOURCE_MAX_DIMS)) < 0) + UC_ERROR + if(H5Sselect_hyperslab(src_sid, H5S_SELECT_SET, start, NULL, + UC_4_SOURCE_MAX_DIMS, NULL) < 0) + UC_ERROR + + /* Create source files and datasets */ + for(i = 0; i < UC_4_N_SOURCES; i++) { + + /* source dataset dcpl */ + if((src_dcplid = H5Pcreate(H5P_DATASET_CREATE)) < 0) + UC_ERROR + if(H5Pset_chunk(src_dcplid, RANK, UC_4_PLANE) < 0) + UC_ERROR + if(H5Pset_fill_value(src_dcplid, UC_4_SOURCE_DATATYPE, + &UC_4_FILL_VALUES[i]) < 0) + UC_ERROR + if(H5Pset_deflate(src_dcplid, COMPRESSION_LEVEL) < 0) + UC_ERROR + + /* Create source file and dataset */ + if((fid = H5Fcreate(UC_4_FILE_NAMES[i], H5F_ACC_TRUNC, + H5P_DEFAULT, H5P_DEFAULT)) < 0) + UC_ERROR + if((did = H5Dcreate2(fid, UC_4_SOURCE_DSET_NAME, + UC_4_SOURCE_DATATYPE, src_sid, + H5P_DEFAULT, src_dcplid, H5P_DEFAULT)) < 0) + UC_ERROR + + /* Set the dataset's extent */ + if(H5Dset_extent(did, UC_4_SOURCE_MAX_DIMS) < 0) + UC_ERROR + + /* Create a data buffer that represents a plane */ + n = UC_4_PLANE[1] * UC_4_PLANE[2]; + if(NULL == (buffer = (int *)malloc(n * sizeof(int)))) + UC_ERROR + + /* Create the memory dataspace */ + if((msid = H5Screate_simple(RANK, UC_4_PLANE, NULL)) < 0) + UC_ERROR + + /* Get the file dataspace */ + if((fsid = H5Dget_space(did)) < 0) + UC_ERROR + + /* Write planes to the dataset */ + for(j = 0; j < UC_4_SRC_PLANES; j++) { + + value = ((i + 1) * 10) + j; + for(k = 0; k < n; k++) + buffer[k] = value; + + start[0] = j; + start[1] = 0; + start[2] = 0; + if(H5Sselect_hyperslab(fsid, H5S_SELECT_SET, start, NULL, UC_4_PLANE, NULL) < 0) + UC_ERROR + if(H5Dwrite(did, H5T_NATIVE_INT, msid, fsid, H5P_DEFAULT, buffer) < 0) + UC_ERROR + + } /* end for */ + + /* close */ + if(H5Sclose(msid) < 0) + UC_ERROR + if(H5Sclose(fsid) < 0) + UC_ERROR + if(H5Pclose(src_dcplid) < 0) + UC_ERROR + if(H5Dclose(did) < 0) + UC_ERROR + if(H5Fclose(fid) < 0) + UC_ERROR + free(buffer); + + } /* end for */ + + /******************* + * Create VDS file * + *******************/ + + /* Create file */ + if((fid = H5Fcreate(UC_4_VDS_FILE_NAME, H5F_ACC_TRUNC, + H5P_DEFAULT, H5P_DEFAULT)) < 0) + UC_ERROR + + /* Create VDS dcpl */ + if((vds_dcplid = H5Pcreate(H5P_DATASET_CREATE)) < 0) + UC_ERROR + if(H5Pset_fill_value(vds_dcplid, UC_4_VDS_DATATYPE, + &UC_4_VDS_FILL_VALUE) < 0) + UC_ERROR + + /* Create VDS dataspace */ + if((vds_sid = H5Screate_simple(RANK, UC_4_VDS_DIMS, + UC_4_VDS_MAX_DIMS)) < 0) + UC_ERROR + start[0] = 0; + start[1] = 0; + start[2] = 0; + if(H5Sselect_hyperslab(vds_sid, H5S_SELECT_SET, start, + UC_4_SOURCE_MAX_DIMS, count, UC_4_SOURCE_MAX_DIMS) < 0) + UC_ERROR + + /* Add VDS mapping - The mapped file name uses a printf-like + * naming scheme that automatically maps new files. + */ + if(H5Pset_virtual(vds_dcplid, vds_sid, UC_4_MAPPING_FILE_NAME, + UC_4_SOURCE_DSET_PATH, src_sid) < 0) + UC_ERROR + + /* Create dataset */ + if((did = H5Dcreate2(fid, UC_4_VDS_DSET_NAME, UC_4_VDS_DATATYPE, vds_sid, + H5P_DEFAULT, vds_dcplid, H5P_DEFAULT)) < 0) + UC_ERROR + + /* close */ + if(H5Sclose(src_sid) < 0) + UC_ERROR + if(H5Pclose(vds_dcplid) < 0) + UC_ERROR + if(H5Sclose(vds_sid) < 0) + UC_ERROR + if(H5Dclose(did) < 0) + UC_ERROR + if(H5Fclose(fid) < 0) + UC_ERROR + + return EXIT_SUCCESS; + +error: + + H5E_BEGIN_TRY { + if(src_sid >= 0) + (void)H5Sclose(src_sid); + if(src_dcplid >= 0) + (void)H5Pclose(src_dcplid); + if(vds_sid >= 0) + (void)H5Sclose(vds_sid); + if(vds_dcplid >= 0) + (void)H5Pclose(vds_dcplid); + if(fid >= 0) + (void)H5Fclose(fid); + if(did >= 0) + (void)H5Dclose(did); + if(msid >= 0) + (void)H5Sclose(msid); + if(fsid >= 0) + (void)H5Sclose(fsid); + if(buffer != NULL) + free(buffer); + } H5E_END_TRY + + return EXIT_FAILURE; + +} /* end main() */ + diff --git a/tools/misc/vds/UC_5.h b/tools/misc/vds/UC_5.h new file mode 100644 index 0000000..b22b177 --- /dev/null +++ b/tools/misc/vds/UC_5.h @@ -0,0 +1,83 @@ +/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * + * Copyright by The HDF Group. * + * Copyright by the Board of Trustees of the University of Illinois. * + * All rights reserved. * + * * + * This file is part of HDF5. The full HDF5 copyright notice, including * + * terms governing use, modification, and redistribution, is contained in * + * the files COPYING and Copyright.html. COPYING can be found at the root * + * of the source code distribution tree; Copyright.html can be found at the * + * root level of an installed copy of the electronic HDF5 document set and * + * is linked from the top-level documents page. It can also be found at * + * http://hdfgroup.org/HDF5/doc/Copyright.html. If you do not have * + * access to either file, you may request a copy from help@hdfgroup.org. * + * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ + +#ifndef UC_5_H +#define UC_5_H + +#include <hdf5.h> + +#include "UC_common.h" + +/* + * Definitions for VDS use case 5 + * + * Source datasets have one unlimited dimension and two fixed dimensions. In + * this use case, the datasets are mapped in the VDS so that alternating + * planes in the source are interleaved in the VDS. + */ + +/* virtual dataset <---> source dataset mapping and sizes */ + +#define UC_5_N_SOURCES 3 + +/* Dataset dimensions */ +#define UC_5_SRC_PLANES 3 +#define UC_5_HEIGHT 4 +#define UC_5_WIDTH 4 + +/* max number of planes for datasets */ +#define UC_5_MAX_PLANES H5S_UNLIMITED +#define UC_5_N_TEST_PLANES 9 /* number of planes in VDS */ + +/* Dataset datatypes */ +#define UC_5_SOURCE_DATATYPE H5T_STD_I32LE +#define UC_5_VDS_DATATYPE H5T_STD_I32LE + +/* Starting size of datasets, both source and VDS */ +static hsize_t UC_5_SOURCE_DIMS[RANK] = {0, UC_5_HEIGHT, UC_5_WIDTH}; +static hsize_t UC_5_VDS_DIMS[RANK] = {0, UC_5_HEIGHT, UC_5_WIDTH}; + +/* Max size of datasets, both source and VDS */ +static hsize_t UC_5_SOURCE_MAX_DIMS[RANK] = {UC_5_MAX_PLANES, UC_5_HEIGHT, UC_5_WIDTH}; +static hsize_t UC_5_VDS_MAX_DIMS[RANK] = {UC_5_MAX_PLANES, UC_5_HEIGHT, UC_5_WIDTH}; + +/* Planes (both source and VDS) */ +static hsize_t UC_5_PLANE[RANK] = {1, UC_5_HEIGHT, UC_5_WIDTH}; + +/* File names for source datasets */ +static char UC_5_FILE_NAMES[UC_5_N_SOURCES][NAME_LEN] = { + {"5_a.h5"}, + {"5_b.h5"}, + {"5_c.h5"} +}; + +/* VDS file name */ +static char UC_5_VDS_FILE_NAME[NAME_LEN] = "5_vds.h5"; + +/* Dataset names */ +static char UC_5_SOURCE_DSET_NAME[NAME_LEN] = "source_dset"; +static char UC_5_SOURCE_DSET_PATH[NAME_LEN] = "/source_dset"; +static char UC_5_VDS_DSET_NAME[NAME_LEN] = "vds_dset"; + +/* Fill values */ +static hsize_t UC_5_FILL_VALUES[UC_5_N_SOURCES] = { + -1, + -2, + -3 +}; +static int UC_5_VDS_FILL_VALUE = -9; + +#endif /* UC_5_H */ + diff --git a/tools/misc/vds/UC_5_stride_gen.c b/tools/misc/vds/UC_5_stride_gen.c new file mode 100644 index 0000000..984aadc --- /dev/null +++ b/tools/misc/vds/UC_5_stride_gen.c @@ -0,0 +1,243 @@ +/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * + * Copyright by The HDF Group. * + * Copyright by the Board of Trustees of the University of Illinois. * + * All rights reserved. * + * * + * This file is part of HDF5. The full HDF5 copyright notice, including * + * terms governing use, modification, and redistribution, is contained in * + * the files COPYING and Copyright.html. COPYING can be found at the root * + * of the source code distribution tree; Copyright.html can be found at the * + * root level of an installed copy of the electronic HDF5 document set and * + * is linked from the top-level documents page. It can also be found at * + * http://hdfgroup.org/HDF5/doc/Copyright.html. If you do not have * + * access to either file, you may request a copy from help@hdfgroup.org. * + * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ + +/* + * File/dataset generator for VDS use case 5 + * + * See the header file for a description. + */ + +#include <stdlib.h> + +#include <hdf5.h> + +#include "UC_common.h" +#include "UC_5.h" + +int +main(int argc, char *argv[]) +{ + hid_t src_sid = -1; /* source dataset's dataspace ID */ + hid_t src_dcplid = -1; /* source dataset property list ID */ + + hid_t vds_sid = -1; /* VDS dataspace ID */ + hid_t vds_dcplid = -1; /* VDS dataset property list ID */ + + hid_t fid = -1; /* HDF5 file ID */ + hid_t did = -1; /* dataset ID */ + hid_t msid = -1; /* memory dataspace ID */ + hid_t fsid = -1; /* file dataspace ID */ + + hsize_t extent[RANK]; /* source dataset extents */ + hsize_t start[RANK]; /* starting point for hyperslab */ + hsize_t stride[RANK]; /* hypserslab stride */ + hsize_t count[RANK]; /* hypserslab count */ + int map_start = -1; /* starting point in the VDS map */ + + int *buffer = NULL; /* data buffer */ + int value = -1; /* value written to datasets */ + + hsize_t n = 0; /* number of elements in a plane */ + + int i; /* iterator */ + int j; /* iterator */ + int k; /* iterator */ + + /* Start by creating the virtual dataset (VDS) dataspace and creation + * property list. The individual source datasets are then created + * and the VDS map (stored in the VDS property list) is updated. + */ + + /* Create VDS dcpl */ + if((vds_dcplid = H5Pcreate(H5P_DATASET_CREATE)) < 0) + UC_ERROR + if(H5Pset_fill_value(vds_dcplid, UC_5_VDS_DATATYPE, + &UC_5_VDS_FILL_VALUE) < 0) + UC_ERROR + + /* Create VDS dataspace */ + if((vds_sid = H5Screate_simple(RANK, UC_5_VDS_DIMS, + UC_5_VDS_MAX_DIMS)) < 0) + UC_ERROR + + /********************************* + * Map source files and datasets * + *********************************/ + + /* Hyperslab array setup */ + start[0] = 0; + start[1] = 0; + start[2] = 0; + map_start = 0; + + stride[0] = UC_5_N_SOURCES; + stride[1] = 1; + stride[2] = 1; + + count[0] = H5S_UNLIMITED; + count[1] = 1; + count[2] = 1; + + extent[0] = UC_5_SRC_PLANES; + extent[1] = UC_5_HEIGHT; + extent[2] = UC_5_WIDTH; + + for(i = 0; i < UC_5_N_SOURCES; i++) { + + /* source dataset dcpl */ + if((src_dcplid = H5Pcreate(H5P_DATASET_CREATE)) < 0) + UC_ERROR + if(H5Pset_chunk(src_dcplid, RANK, UC_5_PLANE) < 0) + UC_ERROR + if(H5Pset_fill_value(src_dcplid, UC_5_SOURCE_DATATYPE, + &UC_5_FILL_VALUES[i]) < 0) + UC_ERROR + if(H5Pset_deflate(src_dcplid, COMPRESSION_LEVEL) < 0) + UC_ERROR + + /* Create source file, dataspace, and dataset */ + if((fid = H5Fcreate(UC_5_FILE_NAMES[i], H5F_ACC_TRUNC, + H5P_DEFAULT, H5P_DEFAULT)) < 0) + UC_ERROR + if((src_sid = H5Screate_simple(RANK, UC_5_SOURCE_DIMS, + UC_5_SOURCE_MAX_DIMS)) < 0) + UC_ERROR + if((did = H5Dcreate2(fid, UC_5_SOURCE_DSET_NAME, + UC_5_SOURCE_DATATYPE, src_sid, + H5P_DEFAULT, src_dcplid, H5P_DEFAULT)) < 0) + UC_ERROR + + /* Set the dataset's extent */ + if(H5Dset_extent(did, extent) < 0) + UC_ERROR + + /* Create a data buffer that represents a plane */ + n = UC_5_PLANE[1] * UC_5_PLANE[2]; + if(NULL == (buffer = (int *)malloc(n * sizeof(int)))) + UC_ERROR + + /* Create the memory dataspace */ + if((msid = H5Screate_simple(RANK, UC_5_PLANE, NULL)) < 0) + UC_ERROR + + /* Get the file dataspace */ + if((fsid = H5Dget_space(did)) < 0) + UC_ERROR + + /* Write planes to the dataset */ + for(j = 0; j < UC_5_SRC_PLANES; j++) { + + value = ((i + 1) * 10) + j; + for(k = 0; k < n; k++) + buffer[k] = value; + + start[0] = j; + start[1] = 0; + start[2] = 0; + if(H5Sselect_hyperslab(fsid, H5S_SELECT_SET, start, NULL, UC_5_PLANE, NULL) < 0) + UC_ERROR + if(H5Dwrite(did, H5T_NATIVE_INT, msid, fsid, H5P_DEFAULT, buffer) < 0) + UC_ERROR + + } /* end for */ + + /* set up hyperslabs for source and destination datasets */ + start[0] = 0; + start[1] = 0; + start[2] = 0; + if(H5Sselect_hyperslab(src_sid, H5S_SELECT_SET, start, NULL, + UC_5_SOURCE_MAX_DIMS, NULL) < 0) + UC_ERROR + start[0] = map_start; + if(H5Sselect_hyperslab(vds_sid, H5S_SELECT_SET, start, stride, + count, UC_5_PLANE) < 0) + UC_ERROR + map_start += 1; + + /* Add VDS mapping */ + if(H5Pset_virtual(vds_dcplid, vds_sid, UC_5_FILE_NAMES[i], + UC_5_SOURCE_DSET_PATH, src_sid) < 0) + UC_ERROR + + /* close */ + if(H5Sclose(msid) < 0) + UC_ERROR + if(H5Sclose(fsid) < 0) + UC_ERROR + if(H5Sclose(src_sid) < 0) + UC_ERROR + if(H5Pclose(src_dcplid) < 0) + UC_ERROR + if(H5Dclose(did) < 0) + UC_ERROR + if(H5Fclose(fid) < 0) + UC_ERROR + free(buffer); + + } /* end for */ + + /******************* + * Create VDS file * + *******************/ + + /* file */ + if((fid = H5Fcreate(UC_5_VDS_FILE_NAME, H5F_ACC_TRUNC, + H5P_DEFAULT, H5P_DEFAULT)) < 0) + UC_ERROR + + /* dataset */ + if((did = H5Dcreate2(fid, UC_5_VDS_DSET_NAME, UC_5_VDS_DATATYPE, vds_sid, + H5P_DEFAULT, vds_dcplid, H5P_DEFAULT)) < 0) + UC_ERROR + + /* close */ + if(H5Pclose(vds_dcplid) < 0) + UC_ERROR + if(H5Sclose(vds_sid) < 0) + UC_ERROR + if(H5Dclose(did) < 0) + UC_ERROR + if(H5Fclose(fid) < 0) + UC_ERROR + + return EXIT_SUCCESS; + +error: + + H5E_BEGIN_TRY { + if(src_sid >= 0) + (void)H5Sclose(src_sid); + if(src_dcplid >= 0) + (void)H5Pclose(src_dcplid); + if(vds_sid >= 0) + (void)H5Sclose(vds_sid); + if(vds_dcplid >= 0) + (void)H5Pclose(vds_dcplid); + if(fid >= 0) + (void)H5Fclose(fid); + if(did >= 0) + (void)H5Dclose(did); + if(msid >= 0) + (void)H5Sclose(msid); + if(fsid >= 0) + (void)H5Sclose(fsid); + if(buffer != NULL) + free(buffer); + } H5E_END_TRY + + return EXIT_FAILURE; + +} /* end main() */ + diff --git a/tools/misc/vds/UC_common.h b/tools/misc/vds/UC_common.h new file mode 100644 index 0000000..0e61016 --- /dev/null +++ b/tools/misc/vds/UC_common.h @@ -0,0 +1,41 @@ +/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * + * Copyright by The HDF Group. * + * Copyright by the Board of Trustees of the University of Illinois. * + * All rights reserved. * + * * + * This file is part of HDF5. The full HDF5 copyright notice, including * + * terms governing use, modification, and redistribution, is contained in * + * the files COPYING and Copyright.html. COPYING can be found at the root * + * of the source code distribution tree; Copyright.html can be found at the * + * root level of an installed copy of the electronic HDF5 document set and * + * is linked from the top-level documents page. It can also be found at * + * http://hdfgroup.org/HDF5/doc/Copyright.html. If you do not have * + * access to either file, you may request a copy from help@hdfgroup.org. * + * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ + +#ifndef USE_CASE_COMMON_H +#define USE_CASE_COMMON_H + +/****************************************** + * Symbols used across multiple use cases * + ******************************************/ + +/* All datasets are 3D */ +#define RANK 3 + +/* Lengths of string identifiers (file, dataset names, etc.) */ +#define NAME_LEN 32 + +/* Compression level */ +#define COMPRESSION_LEVEL 7 + +/* Booleans */ +#define TRUE 1 +#define FALSE 0 + +/* Testing macros */ +#define AT() printf (" at %s:%d in %s()...\n", __FILE__, __LINE__, __func__); +#define UC_ERROR {puts("*ERROR*"); fflush(stdout); AT(); goto error;} + +#endif /* USE_CASE_COMMON_H */ + diff --git a/tools/testfiles/vds/1_a.h5 b/tools/testfiles/vds/1_a.h5 Binary files differnew file mode 100644 index 0000000..953d33d --- /dev/null +++ b/tools/testfiles/vds/1_a.h5 diff --git a/tools/testfiles/vds/1_b.h5 b/tools/testfiles/vds/1_b.h5 Binary files differnew file mode 100644 index 0000000..6ba95e6 --- /dev/null +++ b/tools/testfiles/vds/1_b.h5 diff --git a/tools/testfiles/vds/1_c.h5 b/tools/testfiles/vds/1_c.h5 Binary files differnew file mode 100644 index 0000000..4bcebbd --- /dev/null +++ b/tools/testfiles/vds/1_c.h5 diff --git a/tools/testfiles/vds/1_d.h5 b/tools/testfiles/vds/1_d.h5 Binary files differnew file mode 100644 index 0000000..9c2d795 --- /dev/null +++ b/tools/testfiles/vds/1_d.h5 diff --git a/tools/testfiles/vds/1_e.h5 b/tools/testfiles/vds/1_e.h5 Binary files differnew file mode 100644 index 0000000..4f7aa7b --- /dev/null +++ b/tools/testfiles/vds/1_e.h5 diff --git a/tools/testfiles/vds/1_f.h5 b/tools/testfiles/vds/1_f.h5 Binary files differnew file mode 100644 index 0000000..62e86bc --- /dev/null +++ b/tools/testfiles/vds/1_f.h5 diff --git a/tools/testfiles/vds/1_vds.h5 b/tools/testfiles/vds/1_vds.h5 Binary files differnew file mode 100644 index 0000000..707a37f --- /dev/null +++ b/tools/testfiles/vds/1_vds.h5 diff --git a/tools/testfiles/vds/2_a.h5 b/tools/testfiles/vds/2_a.h5 Binary files differnew file mode 100644 index 0000000..5227e9e --- /dev/null +++ b/tools/testfiles/vds/2_a.h5 diff --git a/tools/testfiles/vds/2_b.h5 b/tools/testfiles/vds/2_b.h5 Binary files differnew file mode 100644 index 0000000..34723a3 --- /dev/null +++ b/tools/testfiles/vds/2_b.h5 diff --git a/tools/testfiles/vds/2_c.h5 b/tools/testfiles/vds/2_c.h5 Binary files differnew file mode 100644 index 0000000..d2252fc --- /dev/null +++ b/tools/testfiles/vds/2_c.h5 diff --git a/tools/testfiles/vds/2_d.h5 b/tools/testfiles/vds/2_d.h5 Binary files differnew file mode 100644 index 0000000..6880c2e --- /dev/null +++ b/tools/testfiles/vds/2_d.h5 diff --git a/tools/testfiles/vds/2_e.h5 b/tools/testfiles/vds/2_e.h5 Binary files differnew file mode 100644 index 0000000..81ffacc --- /dev/null +++ b/tools/testfiles/vds/2_e.h5 diff --git a/tools/testfiles/vds/2_vds.h5 b/tools/testfiles/vds/2_vds.h5 Binary files differnew file mode 100644 index 0000000..cbef59c --- /dev/null +++ b/tools/testfiles/vds/2_vds.h5 diff --git a/tools/testfiles/vds/3_1_vds.h5 b/tools/testfiles/vds/3_1_vds.h5 Binary files differnew file mode 100644 index 0000000..e66e4c7 --- /dev/null +++ b/tools/testfiles/vds/3_1_vds.h5 diff --git a/tools/testfiles/vds/3_2_vds.h5 b/tools/testfiles/vds/3_2_vds.h5 Binary files differnew file mode 100644 index 0000000..a19dab5 --- /dev/null +++ b/tools/testfiles/vds/3_2_vds.h5 diff --git a/tools/testfiles/vds/4_0.h5 b/tools/testfiles/vds/4_0.h5 Binary files differnew file mode 100644 index 0000000..5e71d20 --- /dev/null +++ b/tools/testfiles/vds/4_0.h5 diff --git a/tools/testfiles/vds/4_1.h5 b/tools/testfiles/vds/4_1.h5 Binary files differnew file mode 100644 index 0000000..edad46e --- /dev/null +++ b/tools/testfiles/vds/4_1.h5 diff --git a/tools/testfiles/vds/4_2.h5 b/tools/testfiles/vds/4_2.h5 Binary files differnew file mode 100644 index 0000000..a82b012 --- /dev/null +++ b/tools/testfiles/vds/4_2.h5 diff --git a/tools/testfiles/vds/4_vds.h5 b/tools/testfiles/vds/4_vds.h5 Binary files differnew file mode 100644 index 0000000..64c2288 --- /dev/null +++ b/tools/testfiles/vds/4_vds.h5 diff --git a/tools/testfiles/vds/5_a.h5 b/tools/testfiles/vds/5_a.h5 Binary files differnew file mode 100644 index 0000000..e8ea552 --- /dev/null +++ b/tools/testfiles/vds/5_a.h5 diff --git a/tools/testfiles/vds/5_b.h5 b/tools/testfiles/vds/5_b.h5 Binary files differnew file mode 100644 index 0000000..6da7cf5 --- /dev/null +++ b/tools/testfiles/vds/5_b.h5 diff --git a/tools/testfiles/vds/5_c.h5 b/tools/testfiles/vds/5_c.h5 Binary files differnew file mode 100644 index 0000000..3e3bc61 --- /dev/null +++ b/tools/testfiles/vds/5_c.h5 diff --git a/tools/testfiles/vds/5_vds.h5 b/tools/testfiles/vds/5_vds.h5 Binary files differnew file mode 100644 index 0000000..379485e --- /dev/null +++ b/tools/testfiles/vds/5_vds.h5 diff --git a/tools/testfiles/vds/tvds-1.ddl b/tools/testfiles/vds/tvds-1.ddl new file mode 100644 index 0000000..47fd413 --- /dev/null +++ b/tools/testfiles/vds/tvds-1.ddl @@ -0,0 +1,100 @@ +HDF5 "1_vds.h5" { +GROUP "/" { + DATASET "vds_dset" { + DATATYPE H5T_STD_I32LE + DATASPACE SIMPLE { ( 5, 18, 8 ) / ( H5S_UNLIMITED, 18, 8 ) } + DATA { + (0,0,0): 10, 10, 10, 10, 10, 10, 10, 10, + (0,1,0): 10, 10, 10, 10, 10, 10, 10, 10, + (0,2,0): 20, 20, 20, 20, 20, 20, 20, 20, + (0,3,0): 20, 20, 20, 20, 20, 20, 20, 20, + (0,4,0): 20, 20, 20, 20, 20, 20, 20, 20, + (0,5,0): 20, 20, 20, 20, 20, 20, 20, 20, + (0,6,0): 30, 30, 30, 30, 30, 30, 30, 30, + (0,7,0): 30, 30, 30, 30, 30, 30, 30, 30, + (0,8,0): 40, 40, 40, 40, 40, 40, 40, 40, + (0,9,0): 40, 40, 40, 40, 40, 40, 40, 40, + (0,10,0): 40, 40, 40, 40, 40, 40, 40, 40, + (0,11,0): 40, 40, 40, 40, 40, 40, 40, 40, + (0,12,0): 50, 50, 50, 50, 50, 50, 50, 50, + (0,13,0): 50, 50, 50, 50, 50, 50, 50, 50, + (0,14,0): 60, 60, 60, 60, 60, 60, 60, 60, + (0,15,0): 60, 60, 60, 60, 60, 60, 60, 60, + (0,16,0): 60, 60, 60, 60, 60, 60, 60, 60, + (0,17,0): 60, 60, 60, 60, 60, 60, 60, 60, + (1,0,0): 11, 11, 11, 11, 11, 11, 11, 11, + (1,1,0): 11, 11, 11, 11, 11, 11, 11, 11, + (1,2,0): 21, 21, 21, 21, 21, 21, 21, 21, + (1,3,0): 21, 21, 21, 21, 21, 21, 21, 21, + (1,4,0): 21, 21, 21, 21, 21, 21, 21, 21, + (1,5,0): 21, 21, 21, 21, 21, 21, 21, 21, + (1,6,0): 31, 31, 31, 31, 31, 31, 31, 31, + (1,7,0): 31, 31, 31, 31, 31, 31, 31, 31, + (1,8,0): 41, 41, 41, 41, 41, 41, 41, 41, + (1,9,0): 41, 41, 41, 41, 41, 41, 41, 41, + (1,10,0): 41, 41, 41, 41, 41, 41, 41, 41, + (1,11,0): 41, 41, 41, 41, 41, 41, 41, 41, + (1,12,0): 51, 51, 51, 51, 51, 51, 51, 51, + (1,13,0): 51, 51, 51, 51, 51, 51, 51, 51, + (1,14,0): 61, 61, 61, 61, 61, 61, 61, 61, + (1,15,0): 61, 61, 61, 61, 61, 61, 61, 61, + (1,16,0): 61, 61, 61, 61, 61, 61, 61, 61, + (1,17,0): 61, 61, 61, 61, 61, 61, 61, 61, + (2,0,0): 12, 12, 12, 12, 12, 12, 12, 12, + (2,1,0): 12, 12, 12, 12, 12, 12, 12, 12, + (2,2,0): 22, 22, 22, 22, 22, 22, 22, 22, + (2,3,0): 22, 22, 22, 22, 22, 22, 22, 22, + (2,4,0): 22, 22, 22, 22, 22, 22, 22, 22, + (2,5,0): 22, 22, 22, 22, 22, 22, 22, 22, + (2,6,0): 32, 32, 32, 32, 32, 32, 32, 32, + (2,7,0): 32, 32, 32, 32, 32, 32, 32, 32, + (2,8,0): 42, 42, 42, 42, 42, 42, 42, 42, + (2,9,0): 42, 42, 42, 42, 42, 42, 42, 42, + (2,10,0): 42, 42, 42, 42, 42, 42, 42, 42, + (2,11,0): 42, 42, 42, 42, 42, 42, 42, 42, + (2,12,0): 52, 52, 52, 52, 52, 52, 52, 52, + (2,13,0): 52, 52, 52, 52, 52, 52, 52, 52, + (2,14,0): 62, 62, 62, 62, 62, 62, 62, 62, + (2,15,0): 62, 62, 62, 62, 62, 62, 62, 62, + (2,16,0): 62, 62, 62, 62, 62, 62, 62, 62, + (2,17,0): 62, 62, 62, 62, 62, 62, 62, 62, + (3,0,0): 13, 13, 13, 13, 13, 13, 13, 13, + (3,1,0): 13, 13, 13, 13, 13, 13, 13, 13, + (3,2,0): 23, 23, 23, 23, 23, 23, 23, 23, + (3,3,0): 23, 23, 23, 23, 23, 23, 23, 23, + (3,4,0): 23, 23, 23, 23, 23, 23, 23, 23, + (3,5,0): 23, 23, 23, 23, 23, 23, 23, 23, + (3,6,0): 33, 33, 33, 33, 33, 33, 33, 33, + (3,7,0): 33, 33, 33, 33, 33, 33, 33, 33, + (3,8,0): 43, 43, 43, 43, 43, 43, 43, 43, + (3,9,0): 43, 43, 43, 43, 43, 43, 43, 43, + (3,10,0): 43, 43, 43, 43, 43, 43, 43, 43, + (3,11,0): 43, 43, 43, 43, 43, 43, 43, 43, + (3,12,0): 53, 53, 53, 53, 53, 53, 53, 53, + (3,13,0): 53, 53, 53, 53, 53, 53, 53, 53, + (3,14,0): 63, 63, 63, 63, 63, 63, 63, 63, + (3,15,0): 63, 63, 63, 63, 63, 63, 63, 63, + (3,16,0): 63, 63, 63, 63, 63, 63, 63, 63, + (3,17,0): 63, 63, 63, 63, 63, 63, 63, 63, + (4,0,0): 14, 14, 14, 14, 14, 14, 14, 14, + (4,1,0): 14, 14, 14, 14, 14, 14, 14, 14, + (4,2,0): 24, 24, 24, 24, 24, 24, 24, 24, + (4,3,0): 24, 24, 24, 24, 24, 24, 24, 24, + (4,4,0): 24, 24, 24, 24, 24, 24, 24, 24, + (4,5,0): 24, 24, 24, 24, 24, 24, 24, 24, + (4,6,0): 34, 34, 34, 34, 34, 34, 34, 34, + (4,7,0): 34, 34, 34, 34, 34, 34, 34, 34, + (4,8,0): 44, 44, 44, 44, 44, 44, 44, 44, + (4,9,0): 44, 44, 44, 44, 44, 44, 44, 44, + (4,10,0): 44, 44, 44, 44, 44, 44, 44, 44, + (4,11,0): 44, 44, 44, 44, 44, 44, 44, 44, + (4,12,0): 54, 54, 54, 54, 54, 54, 54, 54, + (4,13,0): 54, 54, 54, 54, 54, 54, 54, 54, + (4,14,0): 64, 64, 64, 64, 64, 64, 64, 64, + (4,15,0): 64, 64, 64, 64, 64, 64, 64, 64, + (4,16,0): 64, 64, 64, 64, 64, 64, 64, 64, + (4,17,0): 64, 64, 64, 64, 64, 64, 64, 64 + } + } +} +} diff --git a/tools/testfiles/vds/tvds-1.ls b/tools/testfiles/vds/tvds-1.ls new file mode 100644 index 0000000..61c9e46 --- /dev/null +++ b/tools/testfiles/vds/tvds-1.ls @@ -0,0 +1,14 @@ +Opened "1_vds.h5" with sec2 driver. +vds_dset Dataset {5/Inf, 18/18, 8/8} + Location: 1:800 + Links: 1 + Maps: {6} Source { + 1_a.h5 /source_dset + 1_b.h5 /source_dset + 1_c.h5 /source_dset + 1_d.h5 /source_dset + 1_e.h5 /source_dset + 1_f.h5 /source_dset + } + Storage: 2880 logical bytes, 0 allocated bytes + Type: 32-bit little-endian integer diff --git a/tools/testfiles/vds/tvds-2.ddl b/tools/testfiles/vds/tvds-2.ddl new file mode 100644 index 0000000..5f2ae16 --- /dev/null +++ b/tools/testfiles/vds/tvds-2.ddl @@ -0,0 +1,58 @@ +HDF5 "2_vds.h5" { +GROUP "/" { + DATASET "vds_dset" { + DATATYPE H5T_STD_I32LE + DATASPACE SIMPLE { ( 6, 8, 14 ) / ( H5S_UNLIMITED, 8, 14 ) } + DATA { + (0,0,0): 10, 10, 10, 10, 10, 10, 10, 40, 40, 40, 40, 40, 40, 40, + (0,1,0): 10, 10, 10, 10, 10, 10, 10, 40, 40, 40, 40, 40, 40, 40, + (0,2,0): 20, 20, 20, 20, 20, 20, 20, 40, 40, 40, 40, 40, 40, 40, + (0,3,0): 20, 20, 20, 20, 20, 20, 20, 40, 40, 40, 40, 40, 40, 40, + (0,4,0): 20, 20, 20, 20, 20, 20, 20, 40, 40, 40, 40, 40, 40, 40, + (0,5,0): 20, 20, 20, 20, 20, 20, 20, 50, 50, 50, 50, 50, 50, 50, + (0,6,0): 30, 30, 30, 30, 30, 30, 30, 50, 50, 50, 50, 50, 50, 50, + (0,7,0): 30, 30, 30, 30, 30, 30, 30, 50, 50, 50, 50, 50, 50, 50, + (1,0,0): 11, 11, 11, 11, 11, 11, 11, 41, 41, 41, 41, 41, 41, 41, + (1,1,0): 11, 11, 11, 11, 11, 11, 11, 41, 41, 41, 41, 41, 41, 41, + (1,2,0): 21, 21, 21, 21, 21, 21, 21, 41, 41, 41, 41, 41, 41, 41, + (1,3,0): 21, 21, 21, 21, 21, 21, 21, 41, 41, 41, 41, 41, 41, 41, + (1,4,0): 21, 21, 21, 21, 21, 21, 21, 41, 41, 41, 41, 41, 41, 41, + (1,5,0): 21, 21, 21, 21, 21, 21, 21, 51, 51, 51, 51, 51, 51, 51, + (1,6,0): 31, 31, 31, 31, 31, 31, 31, 51, 51, 51, 51, 51, 51, 51, + (1,7,0): 31, 31, 31, 31, 31, 31, 31, 51, 51, 51, 51, 51, 51, 51, + (2,0,0): 12, 12, 12, 12, 12, 12, 12, 42, 42, 42, 42, 42, 42, 42, + (2,1,0): 12, 12, 12, 12, 12, 12, 12, 42, 42, 42, 42, 42, 42, 42, + (2,2,0): 22, 22, 22, 22, 22, 22, 22, 42, 42, 42, 42, 42, 42, 42, + (2,3,0): 22, 22, 22, 22, 22, 22, 22, 42, 42, 42, 42, 42, 42, 42, + (2,4,0): 22, 22, 22, 22, 22, 22, 22, 42, 42, 42, 42, 42, 42, 42, + (2,5,0): 22, 22, 22, 22, 22, 22, 22, 52, 52, 52, 52, 52, 52, 52, + (2,6,0): 32, 32, 32, 32, 32, 32, 32, 52, 52, 52, 52, 52, 52, 52, + (2,7,0): 32, 32, 32, 32, 32, 32, 32, 52, 52, 52, 52, 52, 52, 52, + (3,0,0): 13, 13, 13, 13, 13, 13, 13, 43, 43, 43, 43, 43, 43, 43, + (3,1,0): 13, 13, 13, 13, 13, 13, 13, 43, 43, 43, 43, 43, 43, 43, + (3,2,0): 23, 23, 23, 23, 23, 23, 23, 43, 43, 43, 43, 43, 43, 43, + (3,3,0): 23, 23, 23, 23, 23, 23, 23, 43, 43, 43, 43, 43, 43, 43, + (3,4,0): 23, 23, 23, 23, 23, 23, 23, 43, 43, 43, 43, 43, 43, 43, + (3,5,0): 23, 23, 23, 23, 23, 23, 23, 53, 53, 53, 53, 53, 53, 53, + (3,6,0): 33, 33, 33, 33, 33, 33, 33, 53, 53, 53, 53, 53, 53, 53, + (3,7,0): 33, 33, 33, 33, 33, 33, 33, 53, 53, 53, 53, 53, 53, 53, + (4,0,0): 14, 14, 14, 14, 14, 14, 14, 44, 44, 44, 44, 44, 44, 44, + (4,1,0): 14, 14, 14, 14, 14, 14, 14, 44, 44, 44, 44, 44, 44, 44, + (4,2,0): 24, 24, 24, 24, 24, 24, 24, 44, 44, 44, 44, 44, 44, 44, + (4,3,0): 24, 24, 24, 24, 24, 24, 24, 44, 44, 44, 44, 44, 44, 44, + (4,4,0): 24, 24, 24, 24, 24, 24, 24, 44, 44, 44, 44, 44, 44, 44, + (4,5,0): 24, 24, 24, 24, 24, 24, 24, 54, 54, 54, 54, 54, 54, 54, + (4,6,0): 34, 34, 34, 34, 34, 34, 34, 54, 54, 54, 54, 54, 54, 54, + (4,7,0): 34, 34, 34, 34, 34, 34, 34, 54, 54, 54, 54, 54, 54, 54, + (5,0,0): 15, 15, 15, 15, 15, 15, 15, 45, 45, 45, 45, 45, 45, 45, + (5,1,0): 15, 15, 15, 15, 15, 15, 15, 45, 45, 45, 45, 45, 45, 45, + (5,2,0): 25, 25, 25, 25, 25, 25, 25, 45, 45, 45, 45, 45, 45, 45, + (5,3,0): 25, 25, 25, 25, 25, 25, 25, 45, 45, 45, 45, 45, 45, 45, + (5,4,0): 25, 25, 25, 25, 25, 25, 25, 45, 45, 45, 45, 45, 45, 45, + (5,5,0): 25, 25, 25, 25, 25, 25, 25, 55, 55, 55, 55, 55, 55, 55, + (5,6,0): 35, 35, 35, 35, 35, 35, 35, 55, 55, 55, 55, 55, 55, 55, + (5,7,0): 35, 35, 35, 35, 35, 35, 35, 55, 55, 55, 55, 55, 55, 55 + } + } +} +} diff --git a/tools/testfiles/vds/tvds-2.ls b/tools/testfiles/vds/tvds-2.ls new file mode 100644 index 0000000..49fe05f --- /dev/null +++ b/tools/testfiles/vds/tvds-2.ls @@ -0,0 +1,13 @@ +Opened "2_vds.h5" with sec2 driver. +vds_dset Dataset {6/Inf, 8/8, 14/14} + Location: 1:800 + Links: 1 + Maps: {5} Source { + 2_a.h5 /source_dset + 2_b.h5 /source_dset + 2_c.h5 /source_dset + 2_d.h5 /source_dset + 2_e.h5 /source_dset + } + Storage: 2688 logical bytes, 0 allocated bytes + Type: 32-bit little-endian integer diff --git a/tools/testfiles/vds/tvds-3_1.ddl b/tools/testfiles/vds/tvds-3_1.ddl new file mode 100644 index 0000000..7d7d8b6 --- /dev/null +++ b/tools/testfiles/vds/tvds-3_1.ddl @@ -0,0 +1,135 @@ +HDF5 "3_1_vds.h5" { +GROUP "/" { + DATASET "vds_dset" { + DATATYPE H5T_STD_I32LE + DATASPACE SIMPLE { ( 5, 25, 8 ) / ( H5S_UNLIMITED, 25, 8 ) } + DATA { + (0,0,0): -9, -9, -9, -9, -9, -9, -9, -9, + (0,1,0): 10, 10, 10, 10, 10, 10, 10, 10, + (0,2,0): 10, 10, 10, 10, 10, 10, 10, 10, + (0,3,0): -9, -9, -9, -9, -9, -9, -9, -9, + (0,4,0): 20, 20, 20, 20, 20, 20, 20, 20, + (0,5,0): 20, 20, 20, 20, 20, 20, 20, 20, + (0,6,0): 20, 20, 20, 20, 20, 20, 20, 20, + (0,7,0): 20, 20, 20, 20, 20, 20, 20, 20, + (0,8,0): -9, -9, -9, -9, -9, -9, -9, -9, + (0,9,0): 30, 30, 30, 30, 30, 30, 30, 30, + (0,10,0): 30, 30, 30, 30, 30, 30, 30, 30, + (0,11,0): -9, -9, -9, -9, -9, -9, -9, -9, + (0,12,0): 40, 40, 40, 40, 40, 40, 40, 40, + (0,13,0): 40, 40, 40, 40, 40, 40, 40, 40, + (0,14,0): 40, 40, 40, 40, 40, 40, 40, 40, + (0,15,0): 40, 40, 40, 40, 40, 40, 40, 40, + (0,16,0): -9, -9, -9, -9, -9, -9, -9, -9, + (0,17,0): 50, 50, 50, 50, 50, 50, 50, 50, + (0,18,0): 50, 50, 50, 50, 50, 50, 50, 50, + (0,19,0): -9, -9, -9, -9, -9, -9, -9, -9, + (0,20,0): 60, 60, 60, 60, 60, 60, 60, 60, + (0,21,0): 60, 60, 60, 60, 60, 60, 60, 60, + (0,22,0): 60, 60, 60, 60, 60, 60, 60, 60, + (0,23,0): 60, 60, 60, 60, 60, 60, 60, 60, + (0,24,0): -9, -9, -9, -9, -9, -9, -9, -9, + (1,0,0): -9, -9, -9, -9, -9, -9, -9, -9, + (1,1,0): 11, 11, 11, 11, 11, 11, 11, 11, + (1,2,0): 11, 11, 11, 11, 11, 11, 11, 11, + (1,3,0): -9, -9, -9, -9, -9, -9, -9, -9, + (1,4,0): 21, 21, 21, 21, 21, 21, 21, 21, + (1,5,0): 21, 21, 21, 21, 21, 21, 21, 21, + (1,6,0): 21, 21, 21, 21, 21, 21, 21, 21, + (1,7,0): 21, 21, 21, 21, 21, 21, 21, 21, + (1,8,0): -9, -9, -9, -9, -9, -9, -9, -9, + (1,9,0): 31, 31, 31, 31, 31, 31, 31, 31, + (1,10,0): 31, 31, 31, 31, 31, 31, 31, 31, + (1,11,0): -9, -9, -9, -9, -9, -9, -9, -9, + (1,12,0): 41, 41, 41, 41, 41, 41, 41, 41, + (1,13,0): 41, 41, 41, 41, 41, 41, 41, 41, + (1,14,0): 41, 41, 41, 41, 41, 41, 41, 41, + (1,15,0): 41, 41, 41, 41, 41, 41, 41, 41, + (1,16,0): -9, -9, -9, -9, -9, -9, -9, -9, + (1,17,0): 51, 51, 51, 51, 51, 51, 51, 51, + (1,18,0): 51, 51, 51, 51, 51, 51, 51, 51, + (1,19,0): -9, -9, -9, -9, -9, -9, -9, -9, + (1,20,0): 61, 61, 61, 61, 61, 61, 61, 61, + (1,21,0): 61, 61, 61, 61, 61, 61, 61, 61, + (1,22,0): 61, 61, 61, 61, 61, 61, 61, 61, + (1,23,0): 61, 61, 61, 61, 61, 61, 61, 61, + (1,24,0): -9, -9, -9, -9, -9, -9, -9, -9, + (2,0,0): -9, -9, -9, -9, -9, -9, -9, -9, + (2,1,0): 12, 12, 12, 12, 12, 12, 12, 12, + (2,2,0): 12, 12, 12, 12, 12, 12, 12, 12, + (2,3,0): -9, -9, -9, -9, -9, -9, -9, -9, + (2,4,0): 22, 22, 22, 22, 22, 22, 22, 22, + (2,5,0): 22, 22, 22, 22, 22, 22, 22, 22, + (2,6,0): 22, 22, 22, 22, 22, 22, 22, 22, + (2,7,0): 22, 22, 22, 22, 22, 22, 22, 22, + (2,8,0): -9, -9, -9, -9, -9, -9, -9, -9, + (2,9,0): 32, 32, 32, 32, 32, 32, 32, 32, + (2,10,0): 32, 32, 32, 32, 32, 32, 32, 32, + (2,11,0): -9, -9, -9, -9, -9, -9, -9, -9, + (2,12,0): 42, 42, 42, 42, 42, 42, 42, 42, + (2,13,0): 42, 42, 42, 42, 42, 42, 42, 42, + (2,14,0): 42, 42, 42, 42, 42, 42, 42, 42, + (2,15,0): 42, 42, 42, 42, 42, 42, 42, 42, + (2,16,0): -9, -9, -9, -9, -9, -9, -9, -9, + (2,17,0): 52, 52, 52, 52, 52, 52, 52, 52, + (2,18,0): 52, 52, 52, 52, 52, 52, 52, 52, + (2,19,0): -9, -9, -9, -9, -9, -9, -9, -9, + (2,20,0): 62, 62, 62, 62, 62, 62, 62, 62, + (2,21,0): 62, 62, 62, 62, 62, 62, 62, 62, + (2,22,0): 62, 62, 62, 62, 62, 62, 62, 62, + (2,23,0): 62, 62, 62, 62, 62, 62, 62, 62, + (2,24,0): -9, -9, -9, -9, -9, -9, -9, -9, + (3,0,0): -9, -9, -9, -9, -9, -9, -9, -9, + (3,1,0): 13, 13, 13, 13, 13, 13, 13, 13, + (3,2,0): 13, 13, 13, 13, 13, 13, 13, 13, + (3,3,0): -9, -9, -9, -9, -9, -9, -9, -9, + (3,4,0): 23, 23, 23, 23, 23, 23, 23, 23, + (3,5,0): 23, 23, 23, 23, 23, 23, 23, 23, + (3,6,0): 23, 23, 23, 23, 23, 23, 23, 23, + (3,7,0): 23, 23, 23, 23, 23, 23, 23, 23, + (3,8,0): -9, -9, -9, -9, -9, -9, -9, -9, + (3,9,0): 33, 33, 33, 33, 33, 33, 33, 33, + (3,10,0): 33, 33, 33, 33, 33, 33, 33, 33, + (3,11,0): -9, -9, -9, -9, -9, -9, -9, -9, + (3,12,0): 43, 43, 43, 43, 43, 43, 43, 43, + (3,13,0): 43, 43, 43, 43, 43, 43, 43, 43, + (3,14,0): 43, 43, 43, 43, 43, 43, 43, 43, + (3,15,0): 43, 43, 43, 43, 43, 43, 43, 43, + (3,16,0): -9, -9, -9, -9, -9, -9, -9, -9, + (3,17,0): 53, 53, 53, 53, 53, 53, 53, 53, + (3,18,0): 53, 53, 53, 53, 53, 53, 53, 53, + (3,19,0): -9, -9, -9, -9, -9, -9, -9, -9, + (3,20,0): 63, 63, 63, 63, 63, 63, 63, 63, + (3,21,0): 63, 63, 63, 63, 63, 63, 63, 63, + (3,22,0): 63, 63, 63, 63, 63, 63, 63, 63, + (3,23,0): 63, 63, 63, 63, 63, 63, 63, 63, + (3,24,0): -9, -9, -9, -9, -9, -9, -9, -9, + (4,0,0): -9, -9, -9, -9, -9, -9, -9, -9, + (4,1,0): 14, 14, 14, 14, 14, 14, 14, 14, + (4,2,0): 14, 14, 14, 14, 14, 14, 14, 14, + (4,3,0): -9, -9, -9, -9, -9, -9, -9, -9, + (4,4,0): 24, 24, 24, 24, 24, 24, 24, 24, + (4,5,0): 24, 24, 24, 24, 24, 24, 24, 24, + (4,6,0): 24, 24, 24, 24, 24, 24, 24, 24, + (4,7,0): 24, 24, 24, 24, 24, 24, 24, 24, + (4,8,0): -9, -9, -9, -9, -9, -9, -9, -9, + (4,9,0): 34, 34, 34, 34, 34, 34, 34, 34, + (4,10,0): 34, 34, 34, 34, 34, 34, 34, 34, + (4,11,0): -9, -9, -9, -9, -9, -9, -9, -9, + (4,12,0): 44, 44, 44, 44, 44, 44, 44, 44, + (4,13,0): 44, 44, 44, 44, 44, 44, 44, 44, + (4,14,0): 44, 44, 44, 44, 44, 44, 44, 44, + (4,15,0): 44, 44, 44, 44, 44, 44, 44, 44, + (4,16,0): -9, -9, -9, -9, -9, -9, -9, -9, + (4,17,0): 54, 54, 54, 54, 54, 54, 54, 54, + (4,18,0): 54, 54, 54, 54, 54, 54, 54, 54, + (4,19,0): -9, -9, -9, -9, -9, -9, -9, -9, + (4,20,0): 64, 64, 64, 64, 64, 64, 64, 64, + (4,21,0): 64, 64, 64, 64, 64, 64, 64, 64, + (4,22,0): 64, 64, 64, 64, 64, 64, 64, 64, + (4,23,0): 64, 64, 64, 64, 64, 64, 64, 64, + (4,24,0): -9, -9, -9, -9, -9, -9, -9, -9 + } + } +} +} diff --git a/tools/testfiles/vds/tvds-3_1.ls b/tools/testfiles/vds/tvds-3_1.ls new file mode 100644 index 0000000..fe24002 --- /dev/null +++ b/tools/testfiles/vds/tvds-3_1.ls @@ -0,0 +1,14 @@ +Opened "3_1_vds.h5" with sec2 driver. +vds_dset Dataset {5/Inf, 25/25, 8/8} + Location: 1:800 + Links: 1 + Maps: {6} Source { + 1_a.h5 /source_dset + 1_b.h5 /source_dset + 1_c.h5 /source_dset + 1_d.h5 /source_dset + 1_e.h5 /source_dset + 1_f.h5 /source_dset + } + Storage: 4000 logical bytes, 0 allocated bytes + Type: 32-bit little-endian integer diff --git a/tools/testfiles/vds/tvds-3_2.ddl b/tools/testfiles/vds/tvds-3_2.ddl new file mode 100644 index 0000000..baec6f0 --- /dev/null +++ b/tools/testfiles/vds/tvds-3_2.ddl @@ -0,0 +1,166 @@ +HDF5 "3_2_vds.h5" { +GROUP "/" { + DATASET "vds_dset" { + DATATYPE H5T_STD_I32LE + DATASPACE SIMPLE { ( 6, 13, 19 ) / ( H5S_UNLIMITED, 13, 19 ) } + DATA { + (0,0,0): -9, -9, -9, -9, -9, -9, -9, -9, -9, -9, -9, -9, -9, -9, -9, + (0,0,15): -9, -9, -9, -9, + (0,1,0): -9, 10, 10, 10, 10, 10, 10, 10, -9, 40, 40, 40, 40, 40, 40, + (0,1,15): 40, -9, -9, -9, + (0,2,0): -9, 10, 10, 10, 10, 10, 10, 10, -9, 40, 40, 40, 40, 40, 40, + (0,2,15): 40, -9, -9, -9, + (0,3,0): -9, -9, -9, -9, -9, -9, -9, -9, -9, 40, 40, 40, 40, 40, 40, + (0,3,15): 40, -9, -9, -9, + (0,4,0): 20, 20, 20, 20, 20, 20, 20, -9, -9, 40, 40, 40, 40, 40, 40, + (0,4,15): 40, -9, -9, -9, + (0,5,0): 20, 20, 20, 20, 20, 20, 20, -9, -9, 40, 40, 40, 40, 40, 40, + (0,5,15): 40, -9, -9, -9, + (0,6,0): 20, 20, 20, 20, 20, 20, 20, -9, -9, -9, -9, -9, -9, -9, -9, + (0,6,15): -9, -9, -9, -9, + (0,7,0): 20, 20, 20, 20, 20, 20, 20, -9, -9, -9, -9, -9, -9, -9, -9, + (0,7,15): -9, -9, -9, -9, + (0,8,0): -9, -9, -9, -9, -9, -9, -9, -9, -9, -9, -9, -9, 50, 50, 50, + (0,8,15): 50, 50, 50, 50, + (0,9,0): -9, -9, -9, -9, -9, -9, -9, -9, -9, -9, -9, -9, 50, 50, 50, + (0,9,15): 50, 50, 50, 50, + (0,10,0): -9, -9, -9, -9, -9, -9, -9, -9, -9, -9, -9, -9, 50, 50, 50, + (0,10,15): 50, 50, 50, 50, + (0,11,0): -9, -9, -9, -9, 30, 30, 30, 30, 30, 30, 30, -9, -9, -9, -9, + (0,11,15): -9, -9, -9, -9, + (0,12,0): -9, -9, -9, -9, 30, 30, 30, 30, 30, 30, 30, -9, -9, -9, -9, + (0,12,15): -9, -9, -9, -9, + (1,0,0): -9, -9, -9, -9, -9, -9, -9, -9, -9, -9, -9, -9, -9, -9, -9, + (1,0,15): -9, -9, -9, -9, + (1,1,0): -9, 11, 11, 11, 11, 11, 11, 11, -9, 41, 41, 41, 41, 41, 41, + (1,1,15): 41, -9, -9, -9, + (1,2,0): -9, 11, 11, 11, 11, 11, 11, 11, -9, 41, 41, 41, 41, 41, 41, + (1,2,15): 41, -9, -9, -9, + (1,3,0): -9, -9, -9, -9, -9, -9, -9, -9, -9, 41, 41, 41, 41, 41, 41, + (1,3,15): 41, -9, -9, -9, + (1,4,0): 21, 21, 21, 21, 21, 21, 21, -9, -9, 41, 41, 41, 41, 41, 41, + (1,4,15): 41, -9, -9, -9, + (1,5,0): 21, 21, 21, 21, 21, 21, 21, -9, -9, 41, 41, 41, 41, 41, 41, + (1,5,15): 41, -9, -9, -9, + (1,6,0): 21, 21, 21, 21, 21, 21, 21, -9, -9, -9, -9, -9, -9, -9, -9, + (1,6,15): -9, -9, -9, -9, + (1,7,0): 21, 21, 21, 21, 21, 21, 21, -9, -9, -9, -9, -9, -9, -9, -9, + (1,7,15): -9, -9, -9, -9, + (1,8,0): -9, -9, -9, -9, -9, -9, -9, -9, -9, -9, -9, -9, 51, 51, 51, + (1,8,15): 51, 51, 51, 51, + (1,9,0): -9, -9, -9, -9, -9, -9, -9, -9, -9, -9, -9, -9, 51, 51, 51, + (1,9,15): 51, 51, 51, 51, + (1,10,0): -9, -9, -9, -9, -9, -9, -9, -9, -9, -9, -9, -9, 51, 51, 51, + (1,10,15): 51, 51, 51, 51, + (1,11,0): -9, -9, -9, -9, 31, 31, 31, 31, 31, 31, 31, -9, -9, -9, -9, + (1,11,15): -9, -9, -9, -9, + (1,12,0): -9, -9, -9, -9, 31, 31, 31, 31, 31, 31, 31, -9, -9, -9, -9, + (1,12,15): -9, -9, -9, -9, + (2,0,0): -9, -9, -9, -9, -9, -9, -9, -9, -9, -9, -9, -9, -9, -9, -9, + (2,0,15): -9, -9, -9, -9, + (2,1,0): -9, 12, 12, 12, 12, 12, 12, 12, -9, 42, 42, 42, 42, 42, 42, + (2,1,15): 42, -9, -9, -9, + (2,2,0): -9, 12, 12, 12, 12, 12, 12, 12, -9, 42, 42, 42, 42, 42, 42, + (2,2,15): 42, -9, -9, -9, + (2,3,0): -9, -9, -9, -9, -9, -9, -9, -9, -9, 42, 42, 42, 42, 42, 42, + (2,3,15): 42, -9, -9, -9, + (2,4,0): 22, 22, 22, 22, 22, 22, 22, -9, -9, 42, 42, 42, 42, 42, 42, + (2,4,15): 42, -9, -9, -9, + (2,5,0): 22, 22, 22, 22, 22, 22, 22, -9, -9, 42, 42, 42, 42, 42, 42, + (2,5,15): 42, -9, -9, -9, + (2,6,0): 22, 22, 22, 22, 22, 22, 22, -9, -9, -9, -9, -9, -9, -9, -9, + (2,6,15): -9, -9, -9, -9, + (2,7,0): 22, 22, 22, 22, 22, 22, 22, -9, -9, -9, -9, -9, -9, -9, -9, + (2,7,15): -9, -9, -9, -9, + (2,8,0): -9, -9, -9, -9, -9, -9, -9, -9, -9, -9, -9, -9, 52, 52, 52, + (2,8,15): 52, 52, 52, 52, + (2,9,0): -9, -9, -9, -9, -9, -9, -9, -9, -9, -9, -9, -9, 52, 52, 52, + (2,9,15): 52, 52, 52, 52, + (2,10,0): -9, -9, -9, -9, -9, -9, -9, -9, -9, -9, -9, -9, 52, 52, 52, + (2,10,15): 52, 52, 52, 52, + (2,11,0): -9, -9, -9, -9, 32, 32, 32, 32, 32, 32, 32, -9, -9, -9, -9, + (2,11,15): -9, -9, -9, -9, + (2,12,0): -9, -9, -9, -9, 32, 32, 32, 32, 32, 32, 32, -9, -9, -9, -9, + (2,12,15): -9, -9, -9, -9, + (3,0,0): -9, -9, -9, -9, -9, -9, -9, -9, -9, -9, -9, -9, -9, -9, -9, + (3,0,15): -9, -9, -9, -9, + (3,1,0): -9, 13, 13, 13, 13, 13, 13, 13, -9, 43, 43, 43, 43, 43, 43, + (3,1,15): 43, -9, -9, -9, + (3,2,0): -9, 13, 13, 13, 13, 13, 13, 13, -9, 43, 43, 43, 43, 43, 43, + (3,2,15): 43, -9, -9, -9, + (3,3,0): -9, -9, -9, -9, -9, -9, -9, -9, -9, 43, 43, 43, 43, 43, 43, + (3,3,15): 43, -9, -9, -9, + (3,4,0): 23, 23, 23, 23, 23, 23, 23, -9, -9, 43, 43, 43, 43, 43, 43, + (3,4,15): 43, -9, -9, -9, + (3,5,0): 23, 23, 23, 23, 23, 23, 23, -9, -9, 43, 43, 43, 43, 43, 43, + (3,5,15): 43, -9, -9, -9, + (3,6,0): 23, 23, 23, 23, 23, 23, 23, -9, -9, -9, -9, -9, -9, -9, -9, + (3,6,15): -9, -9, -9, -9, + (3,7,0): 23, 23, 23, 23, 23, 23, 23, -9, -9, -9, -9, -9, -9, -9, -9, + (3,7,15): -9, -9, -9, -9, + (3,8,0): -9, -9, -9, -9, -9, -9, -9, -9, -9, -9, -9, -9, 53, 53, 53, + (3,8,15): 53, 53, 53, 53, + (3,9,0): -9, -9, -9, -9, -9, -9, -9, -9, -9, -9, -9, -9, 53, 53, 53, + (3,9,15): 53, 53, 53, 53, + (3,10,0): -9, -9, -9, -9, -9, -9, -9, -9, -9, -9, -9, -9, 53, 53, 53, + (3,10,15): 53, 53, 53, 53, + (3,11,0): -9, -9, -9, -9, 33, 33, 33, 33, 33, 33, 33, -9, -9, -9, -9, + (3,11,15): -9, -9, -9, -9, + (3,12,0): -9, -9, -9, -9, 33, 33, 33, 33, 33, 33, 33, -9, -9, -9, -9, + (3,12,15): -9, -9, -9, -9, + (4,0,0): -9, -9, -9, -9, -9, -9, -9, -9, -9, -9, -9, -9, -9, -9, -9, + (4,0,15): -9, -9, -9, -9, + (4,1,0): -9, 14, 14, 14, 14, 14, 14, 14, -9, 44, 44, 44, 44, 44, 44, + (4,1,15): 44, -9, -9, -9, + (4,2,0): -9, 14, 14, 14, 14, 14, 14, 14, -9, 44, 44, 44, 44, 44, 44, + (4,2,15): 44, -9, -9, -9, + (4,3,0): -9, -9, -9, -9, -9, -9, -9, -9, -9, 44, 44, 44, 44, 44, 44, + (4,3,15): 44, -9, -9, -9, + (4,4,0): 24, 24, 24, 24, 24, 24, 24, -9, -9, 44, 44, 44, 44, 44, 44, + (4,4,15): 44, -9, -9, -9, + (4,5,0): 24, 24, 24, 24, 24, 24, 24, -9, -9, 44, 44, 44, 44, 44, 44, + (4,5,15): 44, -9, -9, -9, + (4,6,0): 24, 24, 24, 24, 24, 24, 24, -9, -9, -9, -9, -9, -9, -9, -9, + (4,6,15): -9, -9, -9, -9, + (4,7,0): 24, 24, 24, 24, 24, 24, 24, -9, -9, -9, -9, -9, -9, -9, -9, + (4,7,15): -9, -9, -9, -9, + (4,8,0): -9, -9, -9, -9, -9, -9, -9, -9, -9, -9, -9, -9, 54, 54, 54, + (4,8,15): 54, 54, 54, 54, + (4,9,0): -9, -9, -9, -9, -9, -9, -9, -9, -9, -9, -9, -9, 54, 54, 54, + (4,9,15): 54, 54, 54, 54, + (4,10,0): -9, -9, -9, -9, -9, -9, -9, -9, -9, -9, -9, -9, 54, 54, 54, + (4,10,15): 54, 54, 54, 54, + (4,11,0): -9, -9, -9, -9, 34, 34, 34, 34, 34, 34, 34, -9, -9, -9, -9, + (4,11,15): -9, -9, -9, -9, + (4,12,0): -9, -9, -9, -9, 34, 34, 34, 34, 34, 34, 34, -9, -9, -9, -9, + (4,12,15): -9, -9, -9, -9, + (5,0,0): -9, -9, -9, -9, -9, -9, -9, -9, -9, -9, -9, -9, -9, -9, -9, + (5,0,15): -9, -9, -9, -9, + (5,1,0): -9, 15, 15, 15, 15, 15, 15, 15, -9, 45, 45, 45, 45, 45, 45, + (5,1,15): 45, -9, -9, -9, + (5,2,0): -9, 15, 15, 15, 15, 15, 15, 15, -9, 45, 45, 45, 45, 45, 45, + (5,2,15): 45, -9, -9, -9, + (5,3,0): -9, -9, -9, -9, -9, -9, -9, -9, -9, 45, 45, 45, 45, 45, 45, + (5,3,15): 45, -9, -9, -9, + (5,4,0): 25, 25, 25, 25, 25, 25, 25, -9, -9, 45, 45, 45, 45, 45, 45, + (5,4,15): 45, -9, -9, -9, + (5,5,0): 25, 25, 25, 25, 25, 25, 25, -9, -9, 45, 45, 45, 45, 45, 45, + (5,5,15): 45, -9, -9, -9, + (5,6,0): 25, 25, 25, 25, 25, 25, 25, -9, -9, -9, -9, -9, -9, -9, -9, + (5,6,15): -9, -9, -9, -9, + (5,7,0): 25, 25, 25, 25, 25, 25, 25, -9, -9, -9, -9, -9, -9, -9, -9, + (5,7,15): -9, -9, -9, -9, + (5,8,0): -9, -9, -9, -9, -9, -9, -9, -9, -9, -9, -9, -9, 55, 55, 55, + (5,8,15): 55, 55, 55, 55, + (5,9,0): -9, -9, -9, -9, -9, -9, -9, -9, -9, -9, -9, -9, 55, 55, 55, + (5,9,15): 55, 55, 55, 55, + (5,10,0): -9, -9, -9, -9, -9, -9, -9, -9, -9, -9, -9, -9, 55, 55, 55, + (5,10,15): 55, 55, 55, 55, + (5,11,0): -9, -9, -9, -9, 35, 35, 35, 35, 35, 35, 35, -9, -9, -9, -9, + (5,11,15): -9, -9, -9, -9, + (5,12,0): -9, -9, -9, -9, 35, 35, 35, 35, 35, 35, 35, -9, -9, -9, -9, + (5,12,15): -9, -9, -9, -9 + } + } +} +} diff --git a/tools/testfiles/vds/tvds-3_2.ls b/tools/testfiles/vds/tvds-3_2.ls new file mode 100644 index 0000000..a4ad84f --- /dev/null +++ b/tools/testfiles/vds/tvds-3_2.ls @@ -0,0 +1,13 @@ +Opened "3_2_vds.h5" with sec2 driver. +vds_dset Dataset {6/Inf, 13/13, 19/19} + Location: 1:800 + Links: 1 + Maps: {5} Source { + 2_a.h5 /source_dset + 2_b.h5 /source_dset + 2_c.h5 /source_dset + 2_d.h5 /source_dset + 2_e.h5 /source_dset + } + Storage: 5928 logical bytes, 0 allocated bytes + Type: 32-bit little-endian integer diff --git a/tools/testfiles/vds/tvds-4.ddl b/tools/testfiles/vds/tvds-4.ddl new file mode 100644 index 0000000..1832724 --- /dev/null +++ b/tools/testfiles/vds/tvds-4.ddl @@ -0,0 +1,46 @@ +HDF5 "4_vds.h5" { +GROUP "/" { + DATASET "vds_dset" { + DATATYPE H5T_STD_I32LE + DATASPACE SIMPLE { ( 9, 4, 4 ) / ( H5S_UNLIMITED, 4, 4 ) } + DATA { + (0,0,0): 10, 10, 10, 10, + (0,1,0): 10, 10, 10, 10, + (0,2,0): 10, 10, 10, 10, + (0,3,0): 10, 10, 10, 10, + (1,0,0): 11, 11, 11, 11, + (1,1,0): 11, 11, 11, 11, + (1,2,0): 11, 11, 11, 11, + (1,3,0): 11, 11, 11, 11, + (2,0,0): 12, 12, 12, 12, + (2,1,0): 12, 12, 12, 12, + (2,2,0): 12, 12, 12, 12, + (2,3,0): 12, 12, 12, 12, + (3,0,0): 20, 20, 20, 20, + (3,1,0): 20, 20, 20, 20, + (3,2,0): 20, 20, 20, 20, + (3,3,0): 20, 20, 20, 20, + (4,0,0): 21, 21, 21, 21, + (4,1,0): 21, 21, 21, 21, + (4,2,0): 21, 21, 21, 21, + (4,3,0): 21, 21, 21, 21, + (5,0,0): 22, 22, 22, 22, + (5,1,0): 22, 22, 22, 22, + (5,2,0): 22, 22, 22, 22, + (5,3,0): 22, 22, 22, 22, + (6,0,0): 30, 30, 30, 30, + (6,1,0): 30, 30, 30, 30, + (6,2,0): 30, 30, 30, 30, + (6,3,0): 30, 30, 30, 30, + (7,0,0): 31, 31, 31, 31, + (7,1,0): 31, 31, 31, 31, + (7,2,0): 31, 31, 31, 31, + (7,3,0): 31, 31, 31, 31, + (8,0,0): 32, 32, 32, 32, + (8,1,0): 32, 32, 32, 32, + (8,2,0): 32, 32, 32, 32, + (8,3,0): 32, 32, 32, 32 + } + } +} +} diff --git a/tools/testfiles/vds/tvds-4.ls b/tools/testfiles/vds/tvds-4.ls new file mode 100644 index 0000000..176529b --- /dev/null +++ b/tools/testfiles/vds/tvds-4.ls @@ -0,0 +1,9 @@ +Opened "4_vds.h5" with sec2 driver. +vds_dset Dataset {9/Inf, 4/4, 4/4} + Location: 1:800 + Links: 1 + Maps: {1} Source { + 4_%b.h5 /source_dset + } + Storage: 576 logical bytes, 0 allocated bytes + Type: 32-bit little-endian integer diff --git a/tools/testfiles/vds/tvds-5.ddl b/tools/testfiles/vds/tvds-5.ddl new file mode 100644 index 0000000..f59017b --- /dev/null +++ b/tools/testfiles/vds/tvds-5.ddl @@ -0,0 +1,46 @@ +HDF5 "5_vds.h5" { +GROUP "/" { + DATASET "vds_dset" { + DATATYPE H5T_STD_I32LE + DATASPACE SIMPLE { ( 9, 4, 4 ) / ( H5S_UNLIMITED, 4, 4 ) } + DATA { + (0,0,0): 10, 10, 10, 10, + (0,1,0): 10, 10, 10, 10, + (0,2,0): 10, 10, 10, 10, + (0,3,0): 10, 10, 10, 10, + (1,0,0): 20, 20, 20, 20, + (1,1,0): 20, 20, 20, 20, + (1,2,0): 20, 20, 20, 20, + (1,3,0): 20, 20, 20, 20, + (2,0,0): 30, 30, 30, 30, + (2,1,0): 30, 30, 30, 30, + (2,2,0): 30, 30, 30, 30, + (2,3,0): 30, 30, 30, 30, + (3,0,0): 11, 11, 11, 11, + (3,1,0): 11, 11, 11, 11, + (3,2,0): 11, 11, 11, 11, + (3,3,0): 11, 11, 11, 11, + (4,0,0): 21, 21, 21, 21, + (4,1,0): 21, 21, 21, 21, + (4,2,0): 21, 21, 21, 21, + (4,3,0): 21, 21, 21, 21, + (5,0,0): 31, 31, 31, 31, + (5,1,0): 31, 31, 31, 31, + (5,2,0): 31, 31, 31, 31, + (5,3,0): 31, 31, 31, 31, + (6,0,0): 12, 12, 12, 12, + (6,1,0): 12, 12, 12, 12, + (6,2,0): 12, 12, 12, 12, + (6,3,0): 12, 12, 12, 12, + (7,0,0): 22, 22, 22, 22, + (7,1,0): 22, 22, 22, 22, + (7,2,0): 22, 22, 22, 22, + (7,3,0): 22, 22, 22, 22, + (8,0,0): 32, 32, 32, 32, + (8,1,0): 32, 32, 32, 32, + (8,2,0): 32, 32, 32, 32, + (8,3,0): 32, 32, 32, 32 + } + } +} +} diff --git a/tools/testfiles/vds/tvds-5.ls b/tools/testfiles/vds/tvds-5.ls new file mode 100644 index 0000000..5f98e84 --- /dev/null +++ b/tools/testfiles/vds/tvds-5.ls @@ -0,0 +1,11 @@ +Opened "5_vds.h5" with sec2 driver. +vds_dset Dataset {9/Inf, 4/4, 4/4} + Location: 1:800 + Links: 1 + Maps: {3} Source { + 5_a.h5 /source_dset + 5_b.h5 /source_dset + 5_c.h5 /source_dset + } + Storage: 576 logical bytes, 0 allocated bytes + Type: 32-bit little-endian integer diff --git a/tools/testfiles/vds/tvds_layout-1.ddl b/tools/testfiles/vds/tvds_layout-1.ddl new file mode 100644 index 0000000..5d8a62c --- /dev/null +++ b/tools/testfiles/vds/tvds_layout-1.ddl @@ -0,0 +1,232 @@ +HDF5 "1_vds.h5" { +GROUP "/" { + DATASET "vds_dset" { + DATATYPE H5T_STD_I32LE + DATASPACE SIMPLE { ( 5, 18, 8 ) / ( H5S_UNLIMITED, 18, 8 ) } + STORAGE_LAYOUT { + MAPPING 0 { + VIRTUAL { + SELECTION REGULAR_HYPERSLAB { + START (0,0,0) + STRIDE (1,1,1) + COUNT (1,1,1) + BLOCK (H5S_UNLIMITED,2,8) + } + } + SOURCE { + FILE "1_a.h5" + DATASET "/source_dset" + SELECTION REGULAR_HYPERSLAB { + START (0,0,0) + STRIDE (1,1,1) + COUNT (1,1,1) + BLOCK (H5S_UNLIMITED,2,8) + } + } + } + MAPPING 1 { + VIRTUAL { + SELECTION REGULAR_HYPERSLAB { + START (0,2,0) + STRIDE (1,1,1) + COUNT (1,1,1) + BLOCK (H5S_UNLIMITED,4,8) + } + } + SOURCE { + FILE "1_b.h5" + DATASET "/source_dset" + SELECTION REGULAR_HYPERSLAB { + START (0,0,0) + STRIDE (1,1,1) + COUNT (1,1,1) + BLOCK (H5S_UNLIMITED,4,8) + } + } + } + MAPPING 2 { + VIRTUAL { + SELECTION REGULAR_HYPERSLAB { + START (0,6,0) + STRIDE (1,1,1) + COUNT (1,1,1) + BLOCK (H5S_UNLIMITED,2,8) + } + } + SOURCE { + FILE "1_c.h5" + DATASET "/source_dset" + SELECTION REGULAR_HYPERSLAB { + START (0,0,0) + STRIDE (1,1,1) + COUNT (1,1,1) + BLOCK (H5S_UNLIMITED,2,8) + } + } + } + MAPPING 3 { + VIRTUAL { + SELECTION REGULAR_HYPERSLAB { + START (0,8,0) + STRIDE (1,1,1) + COUNT (1,1,1) + BLOCK (H5S_UNLIMITED,4,8) + } + } + SOURCE { + FILE "1_d.h5" + DATASET "/source_dset" + SELECTION REGULAR_HYPERSLAB { + START (0,0,0) + STRIDE (1,1,1) + COUNT (1,1,1) + BLOCK (H5S_UNLIMITED,4,8) + } + } + } + MAPPING 4 { + VIRTUAL { + SELECTION REGULAR_HYPERSLAB { + START (0,12,0) + STRIDE (1,1,1) + COUNT (1,1,1) + BLOCK (H5S_UNLIMITED,2,8) + } + } + SOURCE { + FILE "1_e.h5" + DATASET "/source_dset" + SELECTION REGULAR_HYPERSLAB { + START (0,0,0) + STRIDE (1,1,1) + COUNT (1,1,1) + BLOCK (H5S_UNLIMITED,2,8) + } + } + } + MAPPING 5 { + VIRTUAL { + SELECTION REGULAR_HYPERSLAB { + START (0,14,0) + STRIDE (1,1,1) + COUNT (1,1,1) + BLOCK (H5S_UNLIMITED,4,8) + } + } + SOURCE { + FILE "1_f.h5" + DATASET "/source_dset" + SELECTION REGULAR_HYPERSLAB { + START (0,0,0) + STRIDE (1,1,1) + COUNT (1,1,1) + BLOCK (H5S_UNLIMITED,4,8) + } + } + } + } + FILTERS { + NONE + } + FILLVALUE { + FILL_TIME H5D_FILL_TIME_IFSET + VALUE -9 + } + ALLOCATION_TIME { + H5D_ALLOC_TIME_INCR + } + DATA { + (0,0,0): 10, 10, 10, 10, 10, 10, 10, 10, + (0,1,0): 10, 10, 10, 10, 10, 10, 10, 10, + (0,2,0): 20, 20, 20, 20, 20, 20, 20, 20, + (0,3,0): 20, 20, 20, 20, 20, 20, 20, 20, + (0,4,0): 20, 20, 20, 20, 20, 20, 20, 20, + (0,5,0): 20, 20, 20, 20, 20, 20, 20, 20, + (0,6,0): 30, 30, 30, 30, 30, 30, 30, 30, + (0,7,0): 30, 30, 30, 30, 30, 30, 30, 30, + (0,8,0): 40, 40, 40, 40, 40, 40, 40, 40, + (0,9,0): 40, 40, 40, 40, 40, 40, 40, 40, + (0,10,0): 40, 40, 40, 40, 40, 40, 40, 40, + (0,11,0): 40, 40, 40, 40, 40, 40, 40, 40, + (0,12,0): 50, 50, 50, 50, 50, 50, 50, 50, + (0,13,0): 50, 50, 50, 50, 50, 50, 50, 50, + (0,14,0): 60, 60, 60, 60, 60, 60, 60, 60, + (0,15,0): 60, 60, 60, 60, 60, 60, 60, 60, + (0,16,0): 60, 60, 60, 60, 60, 60, 60, 60, + (0,17,0): 60, 60, 60, 60, 60, 60, 60, 60, + (1,0,0): 11, 11, 11, 11, 11, 11, 11, 11, + (1,1,0): 11, 11, 11, 11, 11, 11, 11, 11, + (1,2,0): 21, 21, 21, 21, 21, 21, 21, 21, + (1,3,0): 21, 21, 21, 21, 21, 21, 21, 21, + (1,4,0): 21, 21, 21, 21, 21, 21, 21, 21, + (1,5,0): 21, 21, 21, 21, 21, 21, 21, 21, + (1,6,0): 31, 31, 31, 31, 31, 31, 31, 31, + (1,7,0): 31, 31, 31, 31, 31, 31, 31, 31, + (1,8,0): 41, 41, 41, 41, 41, 41, 41, 41, + (1,9,0): 41, 41, 41, 41, 41, 41, 41, 41, + (1,10,0): 41, 41, 41, 41, 41, 41, 41, 41, + (1,11,0): 41, 41, 41, 41, 41, 41, 41, 41, + (1,12,0): 51, 51, 51, 51, 51, 51, 51, 51, + (1,13,0): 51, 51, 51, 51, 51, 51, 51, 51, + (1,14,0): 61, 61, 61, 61, 61, 61, 61, 61, + (1,15,0): 61, 61, 61, 61, 61, 61, 61, 61, + (1,16,0): 61, 61, 61, 61, 61, 61, 61, 61, + (1,17,0): 61, 61, 61, 61, 61, 61, 61, 61, + (2,0,0): 12, 12, 12, 12, 12, 12, 12, 12, + (2,1,0): 12, 12, 12, 12, 12, 12, 12, 12, + (2,2,0): 22, 22, 22, 22, 22, 22, 22, 22, + (2,3,0): 22, 22, 22, 22, 22, 22, 22, 22, + (2,4,0): 22, 22, 22, 22, 22, 22, 22, 22, + (2,5,0): 22, 22, 22, 22, 22, 22, 22, 22, + (2,6,0): 32, 32, 32, 32, 32, 32, 32, 32, + (2,7,0): 32, 32, 32, 32, 32, 32, 32, 32, + (2,8,0): 42, 42, 42, 42, 42, 42, 42, 42, + (2,9,0): 42, 42, 42, 42, 42, 42, 42, 42, + (2,10,0): 42, 42, 42, 42, 42, 42, 42, 42, + (2,11,0): 42, 42, 42, 42, 42, 42, 42, 42, + (2,12,0): 52, 52, 52, 52, 52, 52, 52, 52, + (2,13,0): 52, 52, 52, 52, 52, 52, 52, 52, + (2,14,0): 62, 62, 62, 62, 62, 62, 62, 62, + (2,15,0): 62, 62, 62, 62, 62, 62, 62, 62, + (2,16,0): 62, 62, 62, 62, 62, 62, 62, 62, + (2,17,0): 62, 62, 62, 62, 62, 62, 62, 62, + (3,0,0): 13, 13, 13, 13, 13, 13, 13, 13, + (3,1,0): 13, 13, 13, 13, 13, 13, 13, 13, + (3,2,0): 23, 23, 23, 23, 23, 23, 23, 23, + (3,3,0): 23, 23, 23, 23, 23, 23, 23, 23, + (3,4,0): 23, 23, 23, 23, 23, 23, 23, 23, + (3,5,0): 23, 23, 23, 23, 23, 23, 23, 23, + (3,6,0): 33, 33, 33, 33, 33, 33, 33, 33, + (3,7,0): 33, 33, 33, 33, 33, 33, 33, 33, + (3,8,0): 43, 43, 43, 43, 43, 43, 43, 43, + (3,9,0): 43, 43, 43, 43, 43, 43, 43, 43, + (3,10,0): 43, 43, 43, 43, 43, 43, 43, 43, + (3,11,0): 43, 43, 43, 43, 43, 43, 43, 43, + (3,12,0): 53, 53, 53, 53, 53, 53, 53, 53, + (3,13,0): 53, 53, 53, 53, 53, 53, 53, 53, + (3,14,0): 63, 63, 63, 63, 63, 63, 63, 63, + (3,15,0): 63, 63, 63, 63, 63, 63, 63, 63, + (3,16,0): 63, 63, 63, 63, 63, 63, 63, 63, + (3,17,0): 63, 63, 63, 63, 63, 63, 63, 63, + (4,0,0): 14, 14, 14, 14, 14, 14, 14, 14, + (4,1,0): 14, 14, 14, 14, 14, 14, 14, 14, + (4,2,0): 24, 24, 24, 24, 24, 24, 24, 24, + (4,3,0): 24, 24, 24, 24, 24, 24, 24, 24, + (4,4,0): 24, 24, 24, 24, 24, 24, 24, 24, + (4,5,0): 24, 24, 24, 24, 24, 24, 24, 24, + (4,6,0): 34, 34, 34, 34, 34, 34, 34, 34, + (4,7,0): 34, 34, 34, 34, 34, 34, 34, 34, + (4,8,0): 44, 44, 44, 44, 44, 44, 44, 44, + (4,9,0): 44, 44, 44, 44, 44, 44, 44, 44, + (4,10,0): 44, 44, 44, 44, 44, 44, 44, 44, + (4,11,0): 44, 44, 44, 44, 44, 44, 44, 44, + (4,12,0): 54, 54, 54, 54, 54, 54, 54, 54, + (4,13,0): 54, 54, 54, 54, 54, 54, 54, 54, + (4,14,0): 64, 64, 64, 64, 64, 64, 64, 64, + (4,15,0): 64, 64, 64, 64, 64, 64, 64, 64, + (4,16,0): 64, 64, 64, 64, 64, 64, 64, 64, + (4,17,0): 64, 64, 64, 64, 64, 64, 64, 64 + } + } +} +} diff --git a/tools/testfiles/vds/tvds_layout-2.ddl b/tools/testfiles/vds/tvds_layout-2.ddl new file mode 100644 index 0000000..af6b718 --- /dev/null +++ b/tools/testfiles/vds/tvds_layout-2.ddl @@ -0,0 +1,170 @@ +HDF5 "2_vds.h5" { +GROUP "/" { + DATASET "vds_dset" { + DATATYPE H5T_STD_I32LE + DATASPACE SIMPLE { ( 6, 8, 14 ) / ( H5S_UNLIMITED, 8, 14 ) } + STORAGE_LAYOUT { + MAPPING 0 { + VIRTUAL { + SELECTION REGULAR_HYPERSLAB { + START (0,0,0) + STRIDE (1,1,1) + COUNT (1,1,1) + BLOCK (H5S_UNLIMITED,2,7) + } + } + SOURCE { + FILE "2_a.h5" + DATASET "/source_dset" + SELECTION REGULAR_HYPERSLAB { + START (0,0,0) + STRIDE (1,1,1) + COUNT (1,1,1) + BLOCK (H5S_UNLIMITED,2,7) + } + } + } + MAPPING 1 { + VIRTUAL { + SELECTION REGULAR_HYPERSLAB { + START (0,2,0) + STRIDE (1,1,1) + COUNT (1,1,1) + BLOCK (H5S_UNLIMITED,4,7) + } + } + SOURCE { + FILE "2_b.h5" + DATASET "/source_dset" + SELECTION REGULAR_HYPERSLAB { + START (0,0,0) + STRIDE (1,1,1) + COUNT (1,1,1) + BLOCK (H5S_UNLIMITED,4,7) + } + } + } + MAPPING 2 { + VIRTUAL { + SELECTION REGULAR_HYPERSLAB { + START (0,6,0) + STRIDE (1,1,1) + COUNT (1,1,1) + BLOCK (H5S_UNLIMITED,2,7) + } + } + SOURCE { + FILE "2_c.h5" + DATASET "/source_dset" + SELECTION REGULAR_HYPERSLAB { + START (0,0,0) + STRIDE (1,1,1) + COUNT (1,1,1) + BLOCK (H5S_UNLIMITED,2,7) + } + } + } + MAPPING 3 { + VIRTUAL { + SELECTION REGULAR_HYPERSLAB { + START (0,0,7) + STRIDE (1,1,1) + COUNT (1,1,1) + BLOCK (H5S_UNLIMITED,5,7) + } + } + SOURCE { + FILE "2_d.h5" + DATASET "/source_dset" + SELECTION REGULAR_HYPERSLAB { + START (0,0,0) + STRIDE (1,1,1) + COUNT (1,1,1) + BLOCK (H5S_UNLIMITED,5,7) + } + } + } + MAPPING 4 { + VIRTUAL { + SELECTION REGULAR_HYPERSLAB { + START (0,5,7) + STRIDE (1,1,1) + COUNT (1,1,1) + BLOCK (H5S_UNLIMITED,3,7) + } + } + SOURCE { + FILE "2_e.h5" + DATASET "/source_dset" + SELECTION REGULAR_HYPERSLAB { + START (0,0,0) + STRIDE (1,1,1) + COUNT (1,1,1) + BLOCK (H5S_UNLIMITED,3,7) + } + } + } + } + FILTERS { + NONE + } + FILLVALUE { + FILL_TIME H5D_FILL_TIME_IFSET + VALUE -9 + } + ALLOCATION_TIME { + H5D_ALLOC_TIME_INCR + } + DATA { + (0,0,0): 10, 10, 10, 10, 10, 10, 10, 40, 40, 40, 40, 40, 40, 40, + (0,1,0): 10, 10, 10, 10, 10, 10, 10, 40, 40, 40, 40, 40, 40, 40, + (0,2,0): 20, 20, 20, 20, 20, 20, 20, 40, 40, 40, 40, 40, 40, 40, + (0,3,0): 20, 20, 20, 20, 20, 20, 20, 40, 40, 40, 40, 40, 40, 40, + (0,4,0): 20, 20, 20, 20, 20, 20, 20, 40, 40, 40, 40, 40, 40, 40, + (0,5,0): 20, 20, 20, 20, 20, 20, 20, 50, 50, 50, 50, 50, 50, 50, + (0,6,0): 30, 30, 30, 30, 30, 30, 30, 50, 50, 50, 50, 50, 50, 50, + (0,7,0): 30, 30, 30, 30, 30, 30, 30, 50, 50, 50, 50, 50, 50, 50, + (1,0,0): 11, 11, 11, 11, 11, 11, 11, 41, 41, 41, 41, 41, 41, 41, + (1,1,0): 11, 11, 11, 11, 11, 11, 11, 41, 41, 41, 41, 41, 41, 41, + (1,2,0): 21, 21, 21, 21, 21, 21, 21, 41, 41, 41, 41, 41, 41, 41, + (1,3,0): 21, 21, 21, 21, 21, 21, 21, 41, 41, 41, 41, 41, 41, 41, + (1,4,0): 21, 21, 21, 21, 21, 21, 21, 41, 41, 41, 41, 41, 41, 41, + (1,5,0): 21, 21, 21, 21, 21, 21, 21, 51, 51, 51, 51, 51, 51, 51, + (1,6,0): 31, 31, 31, 31, 31, 31, 31, 51, 51, 51, 51, 51, 51, 51, + (1,7,0): 31, 31, 31, 31, 31, 31, 31, 51, 51, 51, 51, 51, 51, 51, + (2,0,0): 12, 12, 12, 12, 12, 12, 12, 42, 42, 42, 42, 42, 42, 42, + (2,1,0): 12, 12, 12, 12, 12, 12, 12, 42, 42, 42, 42, 42, 42, 42, + (2,2,0): 22, 22, 22, 22, 22, 22, 22, 42, 42, 42, 42, 42, 42, 42, + (2,3,0): 22, 22, 22, 22, 22, 22, 22, 42, 42, 42, 42, 42, 42, 42, + (2,4,0): 22, 22, 22, 22, 22, 22, 22, 42, 42, 42, 42, 42, 42, 42, + (2,5,0): 22, 22, 22, 22, 22, 22, 22, 52, 52, 52, 52, 52, 52, 52, + (2,6,0): 32, 32, 32, 32, 32, 32, 32, 52, 52, 52, 52, 52, 52, 52, + (2,7,0): 32, 32, 32, 32, 32, 32, 32, 52, 52, 52, 52, 52, 52, 52, + (3,0,0): 13, 13, 13, 13, 13, 13, 13, 43, 43, 43, 43, 43, 43, 43, + (3,1,0): 13, 13, 13, 13, 13, 13, 13, 43, 43, 43, 43, 43, 43, 43, + (3,2,0): 23, 23, 23, 23, 23, 23, 23, 43, 43, 43, 43, 43, 43, 43, + (3,3,0): 23, 23, 23, 23, 23, 23, 23, 43, 43, 43, 43, 43, 43, 43, + (3,4,0): 23, 23, 23, 23, 23, 23, 23, 43, 43, 43, 43, 43, 43, 43, + (3,5,0): 23, 23, 23, 23, 23, 23, 23, 53, 53, 53, 53, 53, 53, 53, + (3,6,0): 33, 33, 33, 33, 33, 33, 33, 53, 53, 53, 53, 53, 53, 53, + (3,7,0): 33, 33, 33, 33, 33, 33, 33, 53, 53, 53, 53, 53, 53, 53, + (4,0,0): 14, 14, 14, 14, 14, 14, 14, 44, 44, 44, 44, 44, 44, 44, + (4,1,0): 14, 14, 14, 14, 14, 14, 14, 44, 44, 44, 44, 44, 44, 44, + (4,2,0): 24, 24, 24, 24, 24, 24, 24, 44, 44, 44, 44, 44, 44, 44, + (4,3,0): 24, 24, 24, 24, 24, 24, 24, 44, 44, 44, 44, 44, 44, 44, + (4,4,0): 24, 24, 24, 24, 24, 24, 24, 44, 44, 44, 44, 44, 44, 44, + (4,5,0): 24, 24, 24, 24, 24, 24, 24, 54, 54, 54, 54, 54, 54, 54, + (4,6,0): 34, 34, 34, 34, 34, 34, 34, 54, 54, 54, 54, 54, 54, 54, + (4,7,0): 34, 34, 34, 34, 34, 34, 34, 54, 54, 54, 54, 54, 54, 54, + (5,0,0): 15, 15, 15, 15, 15, 15, 15, 45, 45, 45, 45, 45, 45, 45, + (5,1,0): 15, 15, 15, 15, 15, 15, 15, 45, 45, 45, 45, 45, 45, 45, + (5,2,0): 25, 25, 25, 25, 25, 25, 25, 45, 45, 45, 45, 45, 45, 45, + (5,3,0): 25, 25, 25, 25, 25, 25, 25, 45, 45, 45, 45, 45, 45, 45, + (5,4,0): 25, 25, 25, 25, 25, 25, 25, 45, 45, 45, 45, 45, 45, 45, + (5,5,0): 25, 25, 25, 25, 25, 25, 25, 55, 55, 55, 55, 55, 55, 55, + (5,6,0): 35, 35, 35, 35, 35, 35, 35, 55, 55, 55, 55, 55, 55, 55, + (5,7,0): 35, 35, 35, 35, 35, 35, 35, 55, 55, 55, 55, 55, 55, 55 + } + } +} +} diff --git a/tools/testfiles/vds/tvds_layout-3_1.ddl b/tools/testfiles/vds/tvds_layout-3_1.ddl new file mode 100644 index 0000000..968327d --- /dev/null +++ b/tools/testfiles/vds/tvds_layout-3_1.ddl @@ -0,0 +1,267 @@ +HDF5 "3_1_vds.h5" { +GROUP "/" { + DATASET "vds_dset" { + DATATYPE H5T_STD_I32LE + DATASPACE SIMPLE { ( 5, 25, 8 ) / ( H5S_UNLIMITED, 25, 8 ) } + STORAGE_LAYOUT { + MAPPING 0 { + VIRTUAL { + SELECTION REGULAR_HYPERSLAB { + START (0,1,0) + STRIDE (1,1,1) + COUNT (1,1,1) + BLOCK (H5S_UNLIMITED,2,8) + } + } + SOURCE { + FILE "1_a.h5" + DATASET "/source_dset" + SELECTION REGULAR_HYPERSLAB { + START (0,0,0) + STRIDE (1,1,1) + COUNT (1,1,1) + BLOCK (H5S_UNLIMITED,2,8) + } + } + } + MAPPING 1 { + VIRTUAL { + SELECTION REGULAR_HYPERSLAB { + START (0,4,0) + STRIDE (1,1,1) + COUNT (1,1,1) + BLOCK (H5S_UNLIMITED,4,8) + } + } + SOURCE { + FILE "1_b.h5" + DATASET "/source_dset" + SELECTION REGULAR_HYPERSLAB { + START (0,0,0) + STRIDE (1,1,1) + COUNT (1,1,1) + BLOCK (H5S_UNLIMITED,4,8) + } + } + } + MAPPING 2 { + VIRTUAL { + SELECTION REGULAR_HYPERSLAB { + START (0,9,0) + STRIDE (1,1,1) + COUNT (1,1,1) + BLOCK (H5S_UNLIMITED,2,8) + } + } + SOURCE { + FILE "1_c.h5" + DATASET "/source_dset" + SELECTION REGULAR_HYPERSLAB { + START (0,0,0) + STRIDE (1,1,1) + COUNT (1,1,1) + BLOCK (H5S_UNLIMITED,2,8) + } + } + } + MAPPING 3 { + VIRTUAL { + SELECTION REGULAR_HYPERSLAB { + START (0,12,0) + STRIDE (1,1,1) + COUNT (1,1,1) + BLOCK (H5S_UNLIMITED,4,8) + } + } + SOURCE { + FILE "1_d.h5" + DATASET "/source_dset" + SELECTION REGULAR_HYPERSLAB { + START (0,0,0) + STRIDE (1,1,1) + COUNT (1,1,1) + BLOCK (H5S_UNLIMITED,4,8) + } + } + } + MAPPING 4 { + VIRTUAL { + SELECTION REGULAR_HYPERSLAB { + START (0,17,0) + STRIDE (1,1,1) + COUNT (1,1,1) + BLOCK (H5S_UNLIMITED,2,8) + } + } + SOURCE { + FILE "1_e.h5" + DATASET "/source_dset" + SELECTION REGULAR_HYPERSLAB { + START (0,0,0) + STRIDE (1,1,1) + COUNT (1,1,1) + BLOCK (H5S_UNLIMITED,2,8) + } + } + } + MAPPING 5 { + VIRTUAL { + SELECTION REGULAR_HYPERSLAB { + START (0,20,0) + STRIDE (1,1,1) + COUNT (1,1,1) + BLOCK (H5S_UNLIMITED,4,8) + } + } + SOURCE { + FILE "1_f.h5" + DATASET "/source_dset" + SELECTION REGULAR_HYPERSLAB { + START (0,0,0) + STRIDE (1,1,1) + COUNT (1,1,1) + BLOCK (H5S_UNLIMITED,4,8) + } + } + } + } + FILTERS { + NONE + } + FILLVALUE { + FILL_TIME H5D_FILL_TIME_IFSET + VALUE -9 + } + ALLOCATION_TIME { + H5D_ALLOC_TIME_INCR + } + DATA { + (0,0,0): -9, -9, -9, -9, -9, -9, -9, -9, + (0,1,0): 10, 10, 10, 10, 10, 10, 10, 10, + (0,2,0): 10, 10, 10, 10, 10, 10, 10, 10, + (0,3,0): -9, -9, -9, -9, -9, -9, -9, -9, + (0,4,0): 20, 20, 20, 20, 20, 20, 20, 20, + (0,5,0): 20, 20, 20, 20, 20, 20, 20, 20, + (0,6,0): 20, 20, 20, 20, 20, 20, 20, 20, + (0,7,0): 20, 20, 20, 20, 20, 20, 20, 20, + (0,8,0): -9, -9, -9, -9, -9, -9, -9, -9, + (0,9,0): 30, 30, 30, 30, 30, 30, 30, 30, + (0,10,0): 30, 30, 30, 30, 30, 30, 30, 30, + (0,11,0): -9, -9, -9, -9, -9, -9, -9, -9, + (0,12,0): 40, 40, 40, 40, 40, 40, 40, 40, + (0,13,0): 40, 40, 40, 40, 40, 40, 40, 40, + (0,14,0): 40, 40, 40, 40, 40, 40, 40, 40, + (0,15,0): 40, 40, 40, 40, 40, 40, 40, 40, + (0,16,0): -9, -9, -9, -9, -9, -9, -9, -9, + (0,17,0): 50, 50, 50, 50, 50, 50, 50, 50, + (0,18,0): 50, 50, 50, 50, 50, 50, 50, 50, + (0,19,0): -9, -9, -9, -9, -9, -9, -9, -9, + (0,20,0): 60, 60, 60, 60, 60, 60, 60, 60, + (0,21,0): 60, 60, 60, 60, 60, 60, 60, 60, + (0,22,0): 60, 60, 60, 60, 60, 60, 60, 60, + (0,23,0): 60, 60, 60, 60, 60, 60, 60, 60, + (0,24,0): -9, -9, -9, -9, -9, -9, -9, -9, + (1,0,0): -9, -9, -9, -9, -9, -9, -9, -9, + (1,1,0): 11, 11, 11, 11, 11, 11, 11, 11, + (1,2,0): 11, 11, 11, 11, 11, 11, 11, 11, + (1,3,0): -9, -9, -9, -9, -9, -9, -9, -9, + (1,4,0): 21, 21, 21, 21, 21, 21, 21, 21, + (1,5,0): 21, 21, 21, 21, 21, 21, 21, 21, + (1,6,0): 21, 21, 21, 21, 21, 21, 21, 21, + (1,7,0): 21, 21, 21, 21, 21, 21, 21, 21, + (1,8,0): -9, -9, -9, -9, -9, -9, -9, -9, + (1,9,0): 31, 31, 31, 31, 31, 31, 31, 31, + (1,10,0): 31, 31, 31, 31, 31, 31, 31, 31, + (1,11,0): -9, -9, -9, -9, -9, -9, -9, -9, + (1,12,0): 41, 41, 41, 41, 41, 41, 41, 41, + (1,13,0): 41, 41, 41, 41, 41, 41, 41, 41, + (1,14,0): 41, 41, 41, 41, 41, 41, 41, 41, + (1,15,0): 41, 41, 41, 41, 41, 41, 41, 41, + (1,16,0): -9, -9, -9, -9, -9, -9, -9, -9, + (1,17,0): 51, 51, 51, 51, 51, 51, 51, 51, + (1,18,0): 51, 51, 51, 51, 51, 51, 51, 51, + (1,19,0): -9, -9, -9, -9, -9, -9, -9, -9, + (1,20,0): 61, 61, 61, 61, 61, 61, 61, 61, + (1,21,0): 61, 61, 61, 61, 61, 61, 61, 61, + (1,22,0): 61, 61, 61, 61, 61, 61, 61, 61, + (1,23,0): 61, 61, 61, 61, 61, 61, 61, 61, + (1,24,0): -9, -9, -9, -9, -9, -9, -9, -9, + (2,0,0): -9, -9, -9, -9, -9, -9, -9, -9, + (2,1,0): 12, 12, 12, 12, 12, 12, 12, 12, + (2,2,0): 12, 12, 12, 12, 12, 12, 12, 12, + (2,3,0): -9, -9, -9, -9, -9, -9, -9, -9, + (2,4,0): 22, 22, 22, 22, 22, 22, 22, 22, + (2,5,0): 22, 22, 22, 22, 22, 22, 22, 22, + (2,6,0): 22, 22, 22, 22, 22, 22, 22, 22, + (2,7,0): 22, 22, 22, 22, 22, 22, 22, 22, + (2,8,0): -9, -9, -9, -9, -9, -9, -9, -9, + (2,9,0): 32, 32, 32, 32, 32, 32, 32, 32, + (2,10,0): 32, 32, 32, 32, 32, 32, 32, 32, + (2,11,0): -9, -9, -9, -9, -9, -9, -9, -9, + (2,12,0): 42, 42, 42, 42, 42, 42, 42, 42, + (2,13,0): 42, 42, 42, 42, 42, 42, 42, 42, + (2,14,0): 42, 42, 42, 42, 42, 42, 42, 42, + (2,15,0): 42, 42, 42, 42, 42, 42, 42, 42, + (2,16,0): -9, -9, -9, -9, -9, -9, -9, -9, + (2,17,0): 52, 52, 52, 52, 52, 52, 52, 52, + (2,18,0): 52, 52, 52, 52, 52, 52, 52, 52, + (2,19,0): -9, -9, -9, -9, -9, -9, -9, -9, + (2,20,0): 62, 62, 62, 62, 62, 62, 62, 62, + (2,21,0): 62, 62, 62, 62, 62, 62, 62, 62, + (2,22,0): 62, 62, 62, 62, 62, 62, 62, 62, + (2,23,0): 62, 62, 62, 62, 62, 62, 62, 62, + (2,24,0): -9, -9, -9, -9, -9, -9, -9, -9, + (3,0,0): -9, -9, -9, -9, -9, -9, -9, -9, + (3,1,0): 13, 13, 13, 13, 13, 13, 13, 13, + (3,2,0): 13, 13, 13, 13, 13, 13, 13, 13, + (3,3,0): -9, -9, -9, -9, -9, -9, -9, -9, + (3,4,0): 23, 23, 23, 23, 23, 23, 23, 23, + (3,5,0): 23, 23, 23, 23, 23, 23, 23, 23, + (3,6,0): 23, 23, 23, 23, 23, 23, 23, 23, + (3,7,0): 23, 23, 23, 23, 23, 23, 23, 23, + (3,8,0): -9, -9, -9, -9, -9, -9, -9, -9, + (3,9,0): 33, 33, 33, 33, 33, 33, 33, 33, + (3,10,0): 33, 33, 33, 33, 33, 33, 33, 33, + (3,11,0): -9, -9, -9, -9, -9, -9, -9, -9, + (3,12,0): 43, 43, 43, 43, 43, 43, 43, 43, + (3,13,0): 43, 43, 43, 43, 43, 43, 43, 43, + (3,14,0): 43, 43, 43, 43, 43, 43, 43, 43, + (3,15,0): 43, 43, 43, 43, 43, 43, 43, 43, + (3,16,0): -9, -9, -9, -9, -9, -9, -9, -9, + (3,17,0): 53, 53, 53, 53, 53, 53, 53, 53, + (3,18,0): 53, 53, 53, 53, 53, 53, 53, 53, + (3,19,0): -9, -9, -9, -9, -9, -9, -9, -9, + (3,20,0): 63, 63, 63, 63, 63, 63, 63, 63, + (3,21,0): 63, 63, 63, 63, 63, 63, 63, 63, + (3,22,0): 63, 63, 63, 63, 63, 63, 63, 63, + (3,23,0): 63, 63, 63, 63, 63, 63, 63, 63, + (3,24,0): -9, -9, -9, -9, -9, -9, -9, -9, + (4,0,0): -9, -9, -9, -9, -9, -9, -9, -9, + (4,1,0): 14, 14, 14, 14, 14, 14, 14, 14, + (4,2,0): 14, 14, 14, 14, 14, 14, 14, 14, + (4,3,0): -9, -9, -9, -9, -9, -9, -9, -9, + (4,4,0): 24, 24, 24, 24, 24, 24, 24, 24, + (4,5,0): 24, 24, 24, 24, 24, 24, 24, 24, + (4,6,0): 24, 24, 24, 24, 24, 24, 24, 24, + (4,7,0): 24, 24, 24, 24, 24, 24, 24, 24, + (4,8,0): -9, -9, -9, -9, -9, -9, -9, -9, + (4,9,0): 34, 34, 34, 34, 34, 34, 34, 34, + (4,10,0): 34, 34, 34, 34, 34, 34, 34, 34, + (4,11,0): -9, -9, -9, -9, -9, -9, -9, -9, + (4,12,0): 44, 44, 44, 44, 44, 44, 44, 44, + (4,13,0): 44, 44, 44, 44, 44, 44, 44, 44, + (4,14,0): 44, 44, 44, 44, 44, 44, 44, 44, + (4,15,0): 44, 44, 44, 44, 44, 44, 44, 44, + (4,16,0): -9, -9, -9, -9, -9, -9, -9, -9, + (4,17,0): 54, 54, 54, 54, 54, 54, 54, 54, + (4,18,0): 54, 54, 54, 54, 54, 54, 54, 54, + (4,19,0): -9, -9, -9, -9, -9, -9, -9, -9, + (4,20,0): 64, 64, 64, 64, 64, 64, 64, 64, + (4,21,0): 64, 64, 64, 64, 64, 64, 64, 64, + (4,22,0): 64, 64, 64, 64, 64, 64, 64, 64, + (4,23,0): 64, 64, 64, 64, 64, 64, 64, 64, + (4,24,0): -9, -9, -9, -9, -9, -9, -9, -9 + } + } +} +} diff --git a/tools/testfiles/vds/tvds_layout-3_2.ddl b/tools/testfiles/vds/tvds_layout-3_2.ddl new file mode 100644 index 0000000..7e14ec2 --- /dev/null +++ b/tools/testfiles/vds/tvds_layout-3_2.ddl @@ -0,0 +1,278 @@ +HDF5 "3_2_vds.h5" { +GROUP "/" { + DATASET "vds_dset" { + DATATYPE H5T_STD_I32LE + DATASPACE SIMPLE { ( 6, 13, 19 ) / ( H5S_UNLIMITED, 13, 19 ) } + STORAGE_LAYOUT { + MAPPING 0 { + VIRTUAL { + SELECTION REGULAR_HYPERSLAB { + START (0,1,1) + STRIDE (1,1,1) + COUNT (1,1,1) + BLOCK (H5S_UNLIMITED,2,7) + } + } + SOURCE { + FILE "2_a.h5" + DATASET "/source_dset" + SELECTION REGULAR_HYPERSLAB { + START (0,0,0) + STRIDE (1,1,1) + COUNT (1,1,1) + BLOCK (H5S_UNLIMITED,2,7) + } + } + } + MAPPING 1 { + VIRTUAL { + SELECTION REGULAR_HYPERSLAB { + START (0,4,0) + STRIDE (1,1,1) + COUNT (1,1,1) + BLOCK (H5S_UNLIMITED,4,7) + } + } + SOURCE { + FILE "2_b.h5" + DATASET "/source_dset" + SELECTION REGULAR_HYPERSLAB { + START (0,0,0) + STRIDE (1,1,1) + COUNT (1,1,1) + BLOCK (H5S_UNLIMITED,4,7) + } + } + } + MAPPING 2 { + VIRTUAL { + SELECTION REGULAR_HYPERSLAB { + START (0,11,4) + STRIDE (1,1,1) + COUNT (1,1,1) + BLOCK (H5S_UNLIMITED,2,7) + } + } + SOURCE { + FILE "2_c.h5" + DATASET "/source_dset" + SELECTION REGULAR_HYPERSLAB { + START (0,0,0) + STRIDE (1,1,1) + COUNT (1,1,1) + BLOCK (H5S_UNLIMITED,2,7) + } + } + } + MAPPING 3 { + VIRTUAL { + SELECTION REGULAR_HYPERSLAB { + START (0,1,9) + STRIDE (1,1,1) + COUNT (1,1,1) + BLOCK (H5S_UNLIMITED,5,7) + } + } + SOURCE { + FILE "2_d.h5" + DATASET "/source_dset" + SELECTION REGULAR_HYPERSLAB { + START (0,0,0) + STRIDE (1,1,1) + COUNT (1,1,1) + BLOCK (H5S_UNLIMITED,5,7) + } + } + } + MAPPING 4 { + VIRTUAL { + SELECTION REGULAR_HYPERSLAB { + START (0,8,12) + STRIDE (1,1,1) + COUNT (1,1,1) + BLOCK (H5S_UNLIMITED,3,7) + } + } + SOURCE { + FILE "2_e.h5" + DATASET "/source_dset" + SELECTION REGULAR_HYPERSLAB { + START (0,0,0) + STRIDE (1,1,1) + COUNT (1,1,1) + BLOCK (H5S_UNLIMITED,3,7) + } + } + } + } + FILTERS { + NONE + } + FILLVALUE { + FILL_TIME H5D_FILL_TIME_IFSET + VALUE -9 + } + ALLOCATION_TIME { + H5D_ALLOC_TIME_INCR + } + DATA { + (0,0,0): -9, -9, -9, -9, -9, -9, -9, -9, -9, -9, -9, -9, -9, -9, -9, + (0,0,15): -9, -9, -9, -9, + (0,1,0): -9, 10, 10, 10, 10, 10, 10, 10, -9, 40, 40, 40, 40, 40, 40, + (0,1,15): 40, -9, -9, -9, + (0,2,0): -9, 10, 10, 10, 10, 10, 10, 10, -9, 40, 40, 40, 40, 40, 40, + (0,2,15): 40, -9, -9, -9, + (0,3,0): -9, -9, -9, -9, -9, -9, -9, -9, -9, 40, 40, 40, 40, 40, 40, + (0,3,15): 40, -9, -9, -9, + (0,4,0): 20, 20, 20, 20, 20, 20, 20, -9, -9, 40, 40, 40, 40, 40, 40, + (0,4,15): 40, -9, -9, -9, + (0,5,0): 20, 20, 20, 20, 20, 20, 20, -9, -9, 40, 40, 40, 40, 40, 40, + (0,5,15): 40, -9, -9, -9, + (0,6,0): 20, 20, 20, 20, 20, 20, 20, -9, -9, -9, -9, -9, -9, -9, -9, + (0,6,15): -9, -9, -9, -9, + (0,7,0): 20, 20, 20, 20, 20, 20, 20, -9, -9, -9, -9, -9, -9, -9, -9, + (0,7,15): -9, -9, -9, -9, + (0,8,0): -9, -9, -9, -9, -9, -9, -9, -9, -9, -9, -9, -9, 50, 50, 50, + (0,8,15): 50, 50, 50, 50, + (0,9,0): -9, -9, -9, -9, -9, -9, -9, -9, -9, -9, -9, -9, 50, 50, 50, + (0,9,15): 50, 50, 50, 50, + (0,10,0): -9, -9, -9, -9, -9, -9, -9, -9, -9, -9, -9, -9, 50, 50, 50, + (0,10,15): 50, 50, 50, 50, + (0,11,0): -9, -9, -9, -9, 30, 30, 30, 30, 30, 30, 30, -9, -9, -9, -9, + (0,11,15): -9, -9, -9, -9, + (0,12,0): -9, -9, -9, -9, 30, 30, 30, 30, 30, 30, 30, -9, -9, -9, -9, + (0,12,15): -9, -9, -9, -9, + (1,0,0): -9, -9, -9, -9, -9, -9, -9, -9, -9, -9, -9, -9, -9, -9, -9, + (1,0,15): -9, -9, -9, -9, + (1,1,0): -9, 11, 11, 11, 11, 11, 11, 11, -9, 41, 41, 41, 41, 41, 41, + (1,1,15): 41, -9, -9, -9, + (1,2,0): -9, 11, 11, 11, 11, 11, 11, 11, -9, 41, 41, 41, 41, 41, 41, + (1,2,15): 41, -9, -9, -9, + (1,3,0): -9, -9, -9, -9, -9, -9, -9, -9, -9, 41, 41, 41, 41, 41, 41, + (1,3,15): 41, -9, -9, -9, + (1,4,0): 21, 21, 21, 21, 21, 21, 21, -9, -9, 41, 41, 41, 41, 41, 41, + (1,4,15): 41, -9, -9, -9, + (1,5,0): 21, 21, 21, 21, 21, 21, 21, -9, -9, 41, 41, 41, 41, 41, 41, + (1,5,15): 41, -9, -9, -9, + (1,6,0): 21, 21, 21, 21, 21, 21, 21, -9, -9, -9, -9, -9, -9, -9, -9, + (1,6,15): -9, -9, -9, -9, + (1,7,0): 21, 21, 21, 21, 21, 21, 21, -9, -9, -9, -9, -9, -9, -9, -9, + (1,7,15): -9, -9, -9, -9, + (1,8,0): -9, -9, -9, -9, -9, -9, -9, -9, -9, -9, -9, -9, 51, 51, 51, + (1,8,15): 51, 51, 51, 51, + (1,9,0): -9, -9, -9, -9, -9, -9, -9, -9, -9, -9, -9, -9, 51, 51, 51, + (1,9,15): 51, 51, 51, 51, + (1,10,0): -9, -9, -9, -9, -9, -9, -9, -9, -9, -9, -9, -9, 51, 51, 51, + (1,10,15): 51, 51, 51, 51, + (1,11,0): -9, -9, -9, -9, 31, 31, 31, 31, 31, 31, 31, -9, -9, -9, -9, + (1,11,15): -9, -9, -9, -9, + (1,12,0): -9, -9, -9, -9, 31, 31, 31, 31, 31, 31, 31, -9, -9, -9, -9, + (1,12,15): -9, -9, -9, -9, + (2,0,0): -9, -9, -9, -9, -9, -9, -9, -9, -9, -9, -9, -9, -9, -9, -9, + (2,0,15): -9, -9, -9, -9, + (2,1,0): -9, 12, 12, 12, 12, 12, 12, 12, -9, 42, 42, 42, 42, 42, 42, + (2,1,15): 42, -9, -9, -9, + (2,2,0): -9, 12, 12, 12, 12, 12, 12, 12, -9, 42, 42, 42, 42, 42, 42, + (2,2,15): 42, -9, -9, -9, + (2,3,0): -9, -9, -9, -9, -9, -9, -9, -9, -9, 42, 42, 42, 42, 42, 42, + (2,3,15): 42, -9, -9, -9, + (2,4,0): 22, 22, 22, 22, 22, 22, 22, -9, -9, 42, 42, 42, 42, 42, 42, + (2,4,15): 42, -9, -9, -9, + (2,5,0): 22, 22, 22, 22, 22, 22, 22, -9, -9, 42, 42, 42, 42, 42, 42, + (2,5,15): 42, -9, -9, -9, + (2,6,0): 22, 22, 22, 22, 22, 22, 22, -9, -9, -9, -9, -9, -9, -9, -9, + (2,6,15): -9, -9, -9, -9, + (2,7,0): 22, 22, 22, 22, 22, 22, 22, -9, -9, -9, -9, -9, -9, -9, -9, + (2,7,15): -9, -9, -9, -9, + (2,8,0): -9, -9, -9, -9, -9, -9, -9, -9, -9, -9, -9, -9, 52, 52, 52, + (2,8,15): 52, 52, 52, 52, + (2,9,0): -9, -9, -9, -9, -9, -9, -9, -9, -9, -9, -9, -9, 52, 52, 52, + (2,9,15): 52, 52, 52, 52, + (2,10,0): -9, -9, -9, -9, -9, -9, -9, -9, -9, -9, -9, -9, 52, 52, 52, + (2,10,15): 52, 52, 52, 52, + (2,11,0): -9, -9, -9, -9, 32, 32, 32, 32, 32, 32, 32, -9, -9, -9, -9, + (2,11,15): -9, -9, -9, -9, + (2,12,0): -9, -9, -9, -9, 32, 32, 32, 32, 32, 32, 32, -9, -9, -9, -9, + (2,12,15): -9, -9, -9, -9, + (3,0,0): -9, -9, -9, -9, -9, -9, -9, -9, -9, -9, -9, -9, -9, -9, -9, + (3,0,15): -9, -9, -9, -9, + (3,1,0): -9, 13, 13, 13, 13, 13, 13, 13, -9, 43, 43, 43, 43, 43, 43, + (3,1,15): 43, -9, -9, -9, + (3,2,0): -9, 13, 13, 13, 13, 13, 13, 13, -9, 43, 43, 43, 43, 43, 43, + (3,2,15): 43, -9, -9, -9, + (3,3,0): -9, -9, -9, -9, -9, -9, -9, -9, -9, 43, 43, 43, 43, 43, 43, + (3,3,15): 43, -9, -9, -9, + (3,4,0): 23, 23, 23, 23, 23, 23, 23, -9, -9, 43, 43, 43, 43, 43, 43, + (3,4,15): 43, -9, -9, -9, + (3,5,0): 23, 23, 23, 23, 23, 23, 23, -9, -9, 43, 43, 43, 43, 43, 43, + (3,5,15): 43, -9, -9, -9, + (3,6,0): 23, 23, 23, 23, 23, 23, 23, -9, -9, -9, -9, -9, -9, -9, -9, + (3,6,15): -9, -9, -9, -9, + (3,7,0): 23, 23, 23, 23, 23, 23, 23, -9, -9, -9, -9, -9, -9, -9, -9, + (3,7,15): -9, -9, -9, -9, + (3,8,0): -9, -9, -9, -9, -9, -9, -9, -9, -9, -9, -9, -9, 53, 53, 53, + (3,8,15): 53, 53, 53, 53, + (3,9,0): -9, -9, -9, -9, -9, -9, -9, -9, -9, -9, -9, -9, 53, 53, 53, + (3,9,15): 53, 53, 53, 53, + (3,10,0): -9, -9, -9, -9, -9, -9, -9, -9, -9, -9, -9, -9, 53, 53, 53, + (3,10,15): 53, 53, 53, 53, + (3,11,0): -9, -9, -9, -9, 33, 33, 33, 33, 33, 33, 33, -9, -9, -9, -9, + (3,11,15): -9, -9, -9, -9, + (3,12,0): -9, -9, -9, -9, 33, 33, 33, 33, 33, 33, 33, -9, -9, -9, -9, + (3,12,15): -9, -9, -9, -9, + (4,0,0): -9, -9, -9, -9, -9, -9, -9, -9, -9, -9, -9, -9, -9, -9, -9, + (4,0,15): -9, -9, -9, -9, + (4,1,0): -9, 14, 14, 14, 14, 14, 14, 14, -9, 44, 44, 44, 44, 44, 44, + (4,1,15): 44, -9, -9, -9, + (4,2,0): -9, 14, 14, 14, 14, 14, 14, 14, -9, 44, 44, 44, 44, 44, 44, + (4,2,15): 44, -9, -9, -9, + (4,3,0): -9, -9, -9, -9, -9, -9, -9, -9, -9, 44, 44, 44, 44, 44, 44, + (4,3,15): 44, -9, -9, -9, + (4,4,0): 24, 24, 24, 24, 24, 24, 24, -9, -9, 44, 44, 44, 44, 44, 44, + (4,4,15): 44, -9, -9, -9, + (4,5,0): 24, 24, 24, 24, 24, 24, 24, -9, -9, 44, 44, 44, 44, 44, 44, + (4,5,15): 44, -9, -9, -9, + (4,6,0): 24, 24, 24, 24, 24, 24, 24, -9, -9, -9, -9, -9, -9, -9, -9, + (4,6,15): -9, -9, -9, -9, + (4,7,0): 24, 24, 24, 24, 24, 24, 24, -9, -9, -9, -9, -9, -9, -9, -9, + (4,7,15): -9, -9, -9, -9, + (4,8,0): -9, -9, -9, -9, -9, -9, -9, -9, -9, -9, -9, -9, 54, 54, 54, + (4,8,15): 54, 54, 54, 54, + (4,9,0): -9, -9, -9, -9, -9, -9, -9, -9, -9, -9, -9, -9, 54, 54, 54, + (4,9,15): 54, 54, 54, 54, + (4,10,0): -9, -9, -9, -9, -9, -9, -9, -9, -9, -9, -9, -9, 54, 54, 54, + (4,10,15): 54, 54, 54, 54, + (4,11,0): -9, -9, -9, -9, 34, 34, 34, 34, 34, 34, 34, -9, -9, -9, -9, + (4,11,15): -9, -9, -9, -9, + (4,12,0): -9, -9, -9, -9, 34, 34, 34, 34, 34, 34, 34, -9, -9, -9, -9, + (4,12,15): -9, -9, -9, -9, + (5,0,0): -9, -9, -9, -9, -9, -9, -9, -9, -9, -9, -9, -9, -9, -9, -9, + (5,0,15): -9, -9, -9, -9, + (5,1,0): -9, 15, 15, 15, 15, 15, 15, 15, -9, 45, 45, 45, 45, 45, 45, + (5,1,15): 45, -9, -9, -9, + (5,2,0): -9, 15, 15, 15, 15, 15, 15, 15, -9, 45, 45, 45, 45, 45, 45, + (5,2,15): 45, -9, -9, -9, + (5,3,0): -9, -9, -9, -9, -9, -9, -9, -9, -9, 45, 45, 45, 45, 45, 45, + (5,3,15): 45, -9, -9, -9, + (5,4,0): 25, 25, 25, 25, 25, 25, 25, -9, -9, 45, 45, 45, 45, 45, 45, + (5,4,15): 45, -9, -9, -9, + (5,5,0): 25, 25, 25, 25, 25, 25, 25, -9, -9, 45, 45, 45, 45, 45, 45, + (5,5,15): 45, -9, -9, -9, + (5,6,0): 25, 25, 25, 25, 25, 25, 25, -9, -9, -9, -9, -9, -9, -9, -9, + (5,6,15): -9, -9, -9, -9, + (5,7,0): 25, 25, 25, 25, 25, 25, 25, -9, -9, -9, -9, -9, -9, -9, -9, + (5,7,15): -9, -9, -9, -9, + (5,8,0): -9, -9, -9, -9, -9, -9, -9, -9, -9, -9, -9, -9, 55, 55, 55, + (5,8,15): 55, 55, 55, 55, + (5,9,0): -9, -9, -9, -9, -9, -9, -9, -9, -9, -9, -9, -9, 55, 55, 55, + (5,9,15): 55, 55, 55, 55, + (5,10,0): -9, -9, -9, -9, -9, -9, -9, -9, -9, -9, -9, -9, 55, 55, 55, + (5,10,15): 55, 55, 55, 55, + (5,11,0): -9, -9, -9, -9, 35, 35, 35, 35, 35, 35, 35, -9, -9, -9, -9, + (5,11,15): -9, -9, -9, -9, + (5,12,0): -9, -9, -9, -9, 35, 35, 35, 35, 35, 35, 35, -9, -9, -9, -9, + (5,12,15): -9, -9, -9, -9 + } + } +} +} diff --git a/tools/testfiles/vds/tvds_layout-4.ddl b/tools/testfiles/vds/tvds_layout-4.ddl new file mode 100644 index 0000000..018644e --- /dev/null +++ b/tools/testfiles/vds/tvds_layout-4.ddl @@ -0,0 +1,78 @@ +HDF5 "4_vds.h5" { +GROUP "/" { + DATASET "vds_dset" { + DATATYPE H5T_STD_I32LE + DATASPACE SIMPLE { ( 9, 4, 4 ) / ( H5S_UNLIMITED, 4, 4 ) } + STORAGE_LAYOUT { + MAPPING 0 { + VIRTUAL { + SELECTION REGULAR_HYPERSLAB { + START (0,0,0) + STRIDE (3,1,1) + COUNT (H5S_UNLIMITED,1,1) + BLOCK (3,4,4) + } + } + SOURCE { + FILE "4_%b.h5" + DATASET "/source_dset" + SELECTION REGULAR_HYPERSLAB { + START (0,0,0) + STRIDE (1,1,1) + COUNT (1,1,1) + BLOCK (3,4,4) + } + } + } + } + FILTERS { + NONE + } + FILLVALUE { + FILL_TIME H5D_FILL_TIME_IFSET + VALUE -9 + } + ALLOCATION_TIME { + H5D_ALLOC_TIME_INCR + } + DATA { + (0,0,0): 10, 10, 10, 10, + (0,1,0): 10, 10, 10, 10, + (0,2,0): 10, 10, 10, 10, + (0,3,0): 10, 10, 10, 10, + (1,0,0): 11, 11, 11, 11, + (1,1,0): 11, 11, 11, 11, + (1,2,0): 11, 11, 11, 11, + (1,3,0): 11, 11, 11, 11, + (2,0,0): 12, 12, 12, 12, + (2,1,0): 12, 12, 12, 12, + (2,2,0): 12, 12, 12, 12, + (2,3,0): 12, 12, 12, 12, + (3,0,0): 20, 20, 20, 20, + (3,1,0): 20, 20, 20, 20, + (3,2,0): 20, 20, 20, 20, + (3,3,0): 20, 20, 20, 20, + (4,0,0): 21, 21, 21, 21, + (4,1,0): 21, 21, 21, 21, + (4,2,0): 21, 21, 21, 21, + (4,3,0): 21, 21, 21, 21, + (5,0,0): 22, 22, 22, 22, + (5,1,0): 22, 22, 22, 22, + (5,2,0): 22, 22, 22, 22, + (5,3,0): 22, 22, 22, 22, + (6,0,0): 30, 30, 30, 30, + (6,1,0): 30, 30, 30, 30, + (6,2,0): 30, 30, 30, 30, + (6,3,0): 30, 30, 30, 30, + (7,0,0): 31, 31, 31, 31, + (7,1,0): 31, 31, 31, 31, + (7,2,0): 31, 31, 31, 31, + (7,3,0): 31, 31, 31, 31, + (8,0,0): 32, 32, 32, 32, + (8,1,0): 32, 32, 32, 32, + (8,2,0): 32, 32, 32, 32, + (8,3,0): 32, 32, 32, 32 + } + } +} +} diff --git a/tools/testfiles/vds/tvds_layout-5.ddl b/tools/testfiles/vds/tvds_layout-5.ddl new file mode 100644 index 0000000..b43629a --- /dev/null +++ b/tools/testfiles/vds/tvds_layout-5.ddl @@ -0,0 +1,118 @@ +HDF5 "5_vds.h5" { +GROUP "/" { + DATASET "vds_dset" { + DATATYPE H5T_STD_I32LE + DATASPACE SIMPLE { ( 9, 4, 4 ) / ( H5S_UNLIMITED, 4, 4 ) } + STORAGE_LAYOUT { + MAPPING 0 { + VIRTUAL { + SELECTION REGULAR_HYPERSLAB { + START (0,0,0) + STRIDE (3,1,1) + COUNT (H5S_UNLIMITED,1,1) + BLOCK (1,4,4) + } + } + SOURCE { + FILE "5_a.h5" + DATASET "/source_dset" + SELECTION REGULAR_HYPERSLAB { + START (0,0,0) + STRIDE (1,1,1) + COUNT (1,1,1) + BLOCK (H5S_UNLIMITED,4,4) + } + } + } + MAPPING 1 { + VIRTUAL { + SELECTION REGULAR_HYPERSLAB { + START (1,0,0) + STRIDE (3,1,1) + COUNT (H5S_UNLIMITED,1,1) + BLOCK (1,4,4) + } + } + SOURCE { + FILE "5_b.h5" + DATASET "/source_dset" + SELECTION REGULAR_HYPERSLAB { + START (0,0,0) + STRIDE (1,1,1) + COUNT (1,1,1) + BLOCK (H5S_UNLIMITED,4,4) + } + } + } + MAPPING 2 { + VIRTUAL { + SELECTION REGULAR_HYPERSLAB { + START (2,0,0) + STRIDE (3,1,1) + COUNT (H5S_UNLIMITED,1,1) + BLOCK (1,4,4) + } + } + SOURCE { + FILE "5_c.h5" + DATASET "/source_dset" + SELECTION REGULAR_HYPERSLAB { + START (0,0,0) + STRIDE (1,1,1) + COUNT (1,1,1) + BLOCK (H5S_UNLIMITED,4,4) + } + } + } + } + FILTERS { + NONE + } + FILLVALUE { + FILL_TIME H5D_FILL_TIME_IFSET + VALUE -9 + } + ALLOCATION_TIME { + H5D_ALLOC_TIME_INCR + } + DATA { + (0,0,0): 10, 10, 10, 10, + (0,1,0): 10, 10, 10, 10, + (0,2,0): 10, 10, 10, 10, + (0,3,0): 10, 10, 10, 10, + (1,0,0): 20, 20, 20, 20, + (1,1,0): 20, 20, 20, 20, + (1,2,0): 20, 20, 20, 20, + (1,3,0): 20, 20, 20, 20, + (2,0,0): 30, 30, 30, 30, + (2,1,0): 30, 30, 30, 30, + (2,2,0): 30, 30, 30, 30, + (2,3,0): 30, 30, 30, 30, + (3,0,0): 11, 11, 11, 11, + (3,1,0): 11, 11, 11, 11, + (3,2,0): 11, 11, 11, 11, + (3,3,0): 11, 11, 11, 11, + (4,0,0): 21, 21, 21, 21, + (4,1,0): 21, 21, 21, 21, + (4,2,0): 21, 21, 21, 21, + (4,3,0): 21, 21, 21, 21, + (5,0,0): 31, 31, 31, 31, + (5,1,0): 31, 31, 31, 31, + (5,2,0): 31, 31, 31, 31, + (5,3,0): 31, 31, 31, 31, + (6,0,0): 12, 12, 12, 12, + (6,1,0): 12, 12, 12, 12, + (6,2,0): 12, 12, 12, 12, + (6,3,0): 12, 12, 12, 12, + (7,0,0): 22, 22, 22, 22, + (7,1,0): 22, 22, 22, 22, + (7,2,0): 22, 22, 22, 22, + (7,3,0): 22, 22, 22, 22, + (8,0,0): 32, 32, 32, 32, + (8,1,0): 32, 32, 32, 32, + (8,2,0): 32, 32, 32, 32, + (8,3,0): 32, 32, 32, 32 + } + } +} +} |