From a02e4e608269dbd76f66031462e837207dc67237 Mon Sep 17 00:00:00 2001 From: Allen Byrne Date: Thu, 14 Apr 2016 14:01:01 -0500 Subject: [svn-r29694] HDFFV-9756,9766,9719: 9756-fix h5diff VDS 9766-fix h5repack VDS 9719 - reconcile tools differences --- MANIFEST | 10 +++ src/H5Dint.c | 72 ++++++++++--------- test/vds.c | 13 ++++ tools/Makefile.am | 3 +- tools/h5copy/CMakeTests.cmake | 2 +- tools/h5diff/CMakeTests.cmake | 31 ++++++-- tools/h5diff/testfiles/h5diff_v1.txt | 2 +- tools/h5diff/testfiles/h5diff_v3.txt | 2 +- tools/h5diff/testh5diff.sh.in | 11 +-- tools/h5dump/CMakeTests.cmake | 5 +- tools/h5dump/CMakeTestsPBITS.cmake | 6 +- tools/h5dump/CMakeTestsVDS.cmake | 10 +-- tools/h5dump/CMakeTestsXML.cmake | 4 +- tools/h5dump/testh5dump.sh.in | 2 + tools/h5ls/CMakeTests.cmake | 9 ++- tools/h5ls/CMakeTestsVDS.cmake | 2 +- tools/h5repack/CMakeTests.cmake | 76 +++++++++++++++++--- tools/h5repack/h5repack.sh.in | 124 +++++++++++++++++++++++++------- tools/h5stat/CMakeTests.cmake | 4 ++ tools/h5stat/h5stat_gentest.c | 7 +- tools/lib/h5diff_dset.c | 41 ++++++++--- tools/misc/CMakeLists.txt | 19 +++++ tools/misc/CMakeTests.cmake | 134 ++++++++++++++++++++++++++++------- tools/misc/Makefile.am | 2 - 24 files changed, 460 insertions(+), 131 deletions(-) diff --git a/MANIFEST b/MANIFEST index b4b2793..70b0e58 100644 --- a/MANIFEST +++ b/MANIFEST @@ -2347,6 +2347,16 @@ ./tools/h5repack/testfiles/h5repack_layout.h5.ddl ./tools/h5repack/testfiles/h5repack_layout.UD.h5-plugin_none.ddl ./tools/h5repack/testfiles/h5repack_layout.h5-plugin_test.ddl +./tools/h5repack/testfiles/1_vds.h5-vds_dset_compa-v.ddl +./tools/h5repack/testfiles/1_vds.h5-vds_dset_conti-v.ddl +./tools/h5repack/testfiles/2_vds.h5-vds_null_compa-v.ddl +./tools/h5repack/testfiles/2_vds.h5-vds_null_conti-v.ddl +./tools/h5repack/testfiles/4_vds.h5-vds_compa_compa-v.ddl +./tools/h5repack/testfiles/4_vds.h5-vds_compa_conti-v.ddl +./tools/h5repack/testfiles/4_vds.h5-vds_compa-v.ddl +./tools/h5repack/testfiles/4_vds.h5-vds_conti_compa-v.ddl +./tools/h5repack/testfiles/4_vds.h5-vds_conti_conti-v.ddl +./tools/h5repack/testfiles/4_vds.h5-vds_conti-v.ddl # jam utility and tests ./tools/h5jam/h5jam.c diff --git a/src/H5Dint.c b/src/H5Dint.c index 06ea1e4..9359311 100644 --- a/src/H5Dint.c +++ b/src/H5Dint.c @@ -530,39 +530,47 @@ H5D__get_space_status(H5D_t *dset, H5D_space_status_t *allocation, hid_t dxpl_id HDassert(dset); - /* Get the dataset's dataspace */ - HDassert(dset->shared->space); - - /* Get the total number of elements in dataset's dataspace */ - if((snelmts = H5S_GET_EXTENT_NPOINTS(dset->shared->space)) < 0) - HGOTO_ERROR(H5E_DATASET, H5E_CANTGET, FAIL, "unable to retrieve number of elements in dataspace") - nelmts = (hsize_t)snelmts; - - /* Get the size of the dataset's datatype */ - if(0 == (dt_size = H5T_GET_SIZE(dset->shared->type))) - HGOTO_ERROR(H5E_DATASET, H5E_CANTGET, FAIL, "unable to retrieve size of datatype") - - /* Compute the maximum size of the dataset in bytes */ - full_size = nelmts * dt_size; - - /* Check for overflow during multiplication */ - if(nelmts != (full_size / dt_size)) - HGOTO_ERROR(H5E_DATASET, H5E_OVERFLOW, FAIL, "size of dataset's storage overflowed") - - /* Difficult to error check, since the error value is 0 and 0 is a valid value... :-/ */ - if(H5D__get_storage_size(dset, dxpl_id, &space_allocated) < 0) - HGOTO_ERROR(H5E_DATASET, H5E_CANTGET, FAIL, "can't get size of dataset's storage") - - /* Decide on how much of the space is allocated */ - if(space_allocated == 0) - *allocation = H5D_SPACE_STATUS_NOT_ALLOCATED; - else if(space_allocated == full_size) - *allocation = H5D_SPACE_STATUS_ALLOCATED; + /* Check for chunked layout */ + if(dset->shared->layout.type == H5D_CHUNKED) { + /* For chunked layout set the space status by the storage size */ + /* Get the dataset's dataspace */ + HDassert(dset->shared->space); + + /* Get the total number of elements in dataset's dataspace */ + if((snelmts = H5S_GET_EXTENT_NPOINTS(dset->shared->space)) < 0) + HGOTO_ERROR(H5E_DATASET, H5E_CANTGET, FAIL, "unable to retrieve number of elements in dataspace") + nelmts = (hsize_t)snelmts; + + /* Get the size of the dataset's datatype */ + if(0 == (dt_size = H5T_GET_SIZE(dset->shared->type))) + HGOTO_ERROR(H5E_DATASET, H5E_CANTGET, FAIL, "unable to retrieve size of datatype") + + /* Compute the maximum size of the dataset in bytes */ + full_size = nelmts * dt_size; + + /* Check for overflow during multiplication */ + if(nelmts != (full_size / dt_size)) + HGOTO_ERROR(H5E_DATASET, H5E_OVERFLOW, FAIL, "size of dataset's storage overflowed") + + /* Difficult to error check, since the error value is 0 and 0 is a valid value... :-/ */ + if(H5D__get_storage_size(dset, dxpl_id, &space_allocated) < 0) + HGOTO_ERROR(H5E_DATASET, H5E_CANTGET, FAIL, "can't get size of dataset's storage") + + /* Decide on how much of the space is allocated */ + if(space_allocated == 0) + *allocation = H5D_SPACE_STATUS_NOT_ALLOCATED; + else if(space_allocated == full_size) + *allocation = H5D_SPACE_STATUS_ALLOCATED; + else + *allocation = H5D_SPACE_STATUS_PART_ALLOCATED; + } /* end if */ else { - /* Should only happen for chunked datasets currently */ - HDassert(dset->shared->layout.type == H5D_CHUNKED); - - *allocation = H5D_SPACE_STATUS_PART_ALLOCATED; + /* For non-chunked layouts set space status by result of is_space_alloc + * function */ + if(dset->shared->layout.ops->is_space_alloc(&dset->shared->layout.storage)) + *allocation = H5D_SPACE_STATUS_ALLOCATED; + else + *allocation = H5D_SPACE_STATUS_NOT_ALLOCATED; } /* end else */ done: diff --git a/test/vds.c b/test/vds.c index 1c3dcca..50523f0 100644 --- a/test/vds.c +++ b/test/vds.c @@ -332,6 +332,7 @@ test_api_get_ex_dcpl(test_api_config_t config, hid_t fapl, hid_t dcpl, { hid_t file = -1; /* File */ hid_t dset = -1; /* Virtual dataset */ + H5D_space_status_t space_status; /* Dataset space status */ void *plist_buf = NULL; /* Serialized property list buffer */ H5O_info_t oinfo; /* Object info struct */ htri_t tri_ret; @@ -352,6 +353,12 @@ test_api_get_ex_dcpl(test_api_config_t config, hid_t fapl, hid_t dcpl, if((dset = H5Dcreate2(file, "vdset", H5T_NATIVE_INT, vspace, H5P_DEFAULT, dcpl, H5P_DEFAULT)) < 0) TEST_ERROR + /* Test H5Dget_space_status */ + if(H5Dget_space_status(dset, &space_status) < 0) + TEST_ERROR + if(space_status != H5D_SPACE_STATUS_ALLOCATED) + TEST_ERROR + /* Reopen dataset if requested */ if(config >= TEST_API_REOPEN_DSET) { /* Close dataset */ @@ -401,6 +408,12 @@ test_api_get_ex_dcpl(test_api_config_t config, hid_t fapl, hid_t dcpl, if(oinfo.meta_size.attr.index_size != (hsize_t)0) TEST_ERROR + /* Test H5Dget_space_status */ + if(H5Dget_space_status(dset, &space_status) < 0) + TEST_ERROR + if(space_status != H5D_SPACE_STATUS_ALLOCATED) + TEST_ERROR + /* Close dataset */ if(H5Dclose(dset) < 0) TEST_ERROR diff --git a/tools/Makefile.am b/tools/Makefile.am index bffc14d..887c0f0 100644 --- a/tools/Makefile.am +++ b/tools/Makefile.am @@ -24,6 +24,7 @@ include $(top_srcdir)/config/commence.am CONFIG=ordered # All subdirectories -SUBDIRS=lib h5diff h5ls h5dump misc h5import h5repack h5jam h5copy h5stat h5format_convert perform +SUBDIRS=lib h5diff h5ls h5dump misc h5import h5repack h5jam h5copy h5stat \ + h5format_convert perform include $(top_srcdir)/config/conclude.am diff --git a/tools/h5copy/CMakeTests.cmake b/tools/h5copy/CMakeTests.cmake index 9002e5a..4ef49ee 100644 --- a/tools/h5copy/CMakeTests.cmake +++ b/tools/h5copy/CMakeTests.cmake @@ -22,7 +22,7 @@ file (MAKE_DIRECTORY "${PROJECT_BINARY_DIR}/testfiles") foreach (listfiles ${LIST_HDF5_TEST_FILES} ${LIST_OTHER_TEST_FILES}) - GET_FILENAME_COMPONENT(fname "${listfiles}" NAME) + get_filename_component(fname "${listfiles}" NAME) set (dest "${PROJECT_BINARY_DIR}/testfiles/${fname}") #message (STATUS " Copying ${listfiles}") add_custom_command ( diff --git a/tools/h5diff/CMakeTests.cmake b/tools/h5diff/CMakeTests.cmake index 0595edd..e58f90c 100644 --- a/tools/h5diff/CMakeTests.cmake +++ b/tools/h5diff/CMakeTests.cmake @@ -44,12 +44,17 @@ ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/h5diff_exclude3-1.h5 ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/h5diff_exclude3-2.h5 ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/h5diff_comp_vl_strs.h5 - ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/h5diff_attr_v_level1.h5 - ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/h5diff_attr_v_level2.h5 ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/compounds_array_vlen1.h5 ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/compounds_array_vlen2.h5 + ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/h5diff_attr_v_level1.h5 + ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/h5diff_attr_v_level2.h5 + ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/h5diff_enum_invalid_values.h5 ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/non_comparables1.h5 ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/non_comparables2.h5 + ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/tmptest.he5 + ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/tmptest2.he5 + ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/tmpSingleSiteBethe.reference.h5 + ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/tmpSingleSiteBethe.output.h5 # tools/testfiles/vds ${HDF5_TOOLS_SRC_DIR}/testfiles/vds/1_a.h5 ${HDF5_TOOLS_SRC_DIR}/testfiles/vds/1_b.h5 @@ -119,6 +124,7 @@ ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/h5diff_26.txt ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/h5diff_27.txt ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/h5diff_28.txt + ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/h5diff_30.txt ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/h5diff_300.txt ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/h5diff_400.txt ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/h5diff_401.txt @@ -255,6 +261,8 @@ ${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_tmp1.txt + ${HDF5_TOOLS_H5DIFF_SOURCE_DIR}/testfiles/h5diff_tmp2.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 @@ -267,7 +275,7 @@ # copy test files from source to build dir # foreach (h5_tstfiles ${LIST_HDF5_TEST_FILES} ${LIST_OTHER_TEST_FILES}) - GET_FILENAME_COMPONENT(fname "${h5_tstfiles}" NAME) + get_filename_component(fname "${h5_tstfiles}" NAME) set (dest "${PROJECT_BINARY_DIR}/testfiles/${fname}") #message (STATUS " Copying ${fname}") add_custom_command ( @@ -930,6 +938,15 @@ ADD_H5_TEST (h5diff_27 1 -v ${FILE3} ${FILE3} t1 t2) ADD_H5_TEST (h5diff_28 1 -v ${FILE3} ${FILE3} l1 l2) # ############################################################################## +# # Enum value tests (may become more comprehensive in the future) +# ############################################################################## + +# 3.0 +# test enum types which may have invalid values +ADD_H5_TEST (h5diff_30 1 -v h5diff_enum_invalid_values.h5 h5diff_enum_invalid_values.h5 dset1 dset2) + + +# ############################################################################## # # Dataset datatypes # ############################################################################## @@ -1073,6 +1090,10 @@ 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}) +# temporary test to verify HDF5-8625 +ADD_H5_TEST (h5diff_tmp1 0 tmptest2.he5 tmptest.he5) +# temporary test to verify HDF5-8639 +ADD_H5_TEST (h5diff_tmp2 1 tmpSingleSiteBethe.output.h5 tmpSingleSiteBethe.reference.h5) # ################################################## # attrs with verbose option level @@ -1115,8 +1136,10 @@ ADD_H5_TEST (h5diff_90 0 -v ${FILE2} ${FILE2}) ADD_H5_TEST (h5diff_100 1 -v ${FILE9} ${FILE10}) # 11. floating point comparison +# double value ADD_H5_TEST (h5diff_101 1 -v ${FILE1} ${FILE1} g1/d1 g1/d2) +# float value ADD_H5_TEST (h5diff_102 1 -v ${FILE1} ${FILE1} g1/fp1 g1/fp2) # with --use-system-epsilon for double value. expect less differences @@ -1361,7 +1384,7 @@ ADD_H5_TEST (h5diff_517 1 -v ${GRP_RECURSE1_EXT} ${GRP_RECURSE2_EXT1} /g1) ADD_H5_TEST (h5diff_518 0 -v --follow-symlinks ${GRP_RECURSE1_EXT} ${GRP_RECURSE2_EXT1} /g1) # ############################################################################## -# # Exclude path (--exclude-path) +# # Exclude objects (--exclude-path) # ############################################################################## # # Same structure, same names and different value. diff --git a/tools/h5diff/testfiles/h5diff_v1.txt b/tools/h5diff/testfiles/h5diff_v1.txt index 31a3eae..8210cf9 100644 --- a/tools/h5diff/testfiles/h5diff_v1.txt +++ b/tools/h5diff/testfiles/h5diff_v1.txt @@ -7,7 +7,7 @@ file1 file2 group : and 0 differences found dataset: and -Not comparable: or is an empty dataset +Warning: or is a virtual dataset Not comparable: has rank 3, dimensions [5x18x8], max dimensions [18446744073709551615x18x8] and has rank 3, dimensions [6x8x14], max dimensions [18446744073709551615x8x14] 0 differences found diff --git a/tools/h5diff/testfiles/h5diff_v3.txt b/tools/h5diff/testfiles/h5diff_v3.txt index 8c5d2a2..57af303 100644 --- a/tools/h5diff/testfiles/h5diff_v3.txt +++ b/tools/h5diff/testfiles/h5diff_v3.txt @@ -1,4 +1,4 @@ -Not comparable: or is an empty dataset +Warning: or is a virtual dataset Not comparable: has rank 3, dimensions [5x18x8], max dimensions [18446744073709551615x18x8] and 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 fec6035..0dfdaa2 100644 --- a/tools/h5diff/testh5diff.sh.in +++ b/tools/h5diff/testh5diff.sh.in @@ -120,6 +120,10 @@ $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_H5DIFF_TESTFILES/tmptest.he5 +$SRC_H5DIFF_TESTFILES/tmptest2.he5 +$SRC_H5DIFF_TESTFILES/tmpSingleSiteBethe.reference.h5 +$SRC_H5DIFF_TESTFILES/tmpSingleSiteBethe.output.h5 $SRC_TOOLS_TESTFILES/vds/1_a.h5 $SRC_TOOLS_TESTFILES/vds/1_b.h5 $SRC_TOOLS_TESTFILES/vds/1_c.h5 @@ -327,10 +331,9 @@ $SRC_H5DIFF_TESTFILES/h5diff_80.txt $SRC_H5DIFF_TESTFILES/h5diff_90.txt $SRC_H5DIFF_TESTFILES/h5diff_tmp1.txt $SRC_H5DIFF_TESTFILES/h5diff_tmp2.txt -$SRC_H5DIFF_TESTFILES/tmptest.he5 -$SRC_H5DIFF_TESTFILES/tmptest2.he5 -$SRC_H5DIFF_TESTFILES/tmpSingleSiteBethe.reference.h5 -$SRC_H5DIFF_TESTFILES/tmpSingleSiteBethe.output.h5 +$SRC_H5DIFF_TESTFILES/h5diff_v1.txt +$SRC_H5DIFF_TESTFILES/h5diff_v2.txt +$SRC_H5DIFF_TESTFILES/h5diff_v3.txt " # diff --git a/tools/h5dump/CMakeTests.cmake b/tools/h5dump/CMakeTests.cmake index 9f7e2b0..7897311 100644 --- a/tools/h5dump/CMakeTests.cmake +++ b/tools/h5dump/CMakeTests.cmake @@ -1141,10 +1141,10 @@ ADD_H5_TEST_N (tattr-2 0 --enable-error-stack -N /\\\\/attr1 --any_path /attr4 --any_path=/attr5 tattr.h5) # test for header and error messages ADD_H5ERR_MASK_TEST (tattr-3 1 --enable-error-stack --header -a /attr2 --attribute=/attr tattr.h5) - # test for displaying attributes in shared datatype (also in group and dataset) - ADD_H5_TEST (tnamed_dtype_attr 0 --enable-error-stack tnamed_dtype_attr.h5) # test for displaying at least 9 attributes on root from a be machine ADD_H5_TEST (tattr-4_be 0 --enable-error-stack tattr4_be.h5) + # test for displaying attributes in shared datatype (also in group and dataset) + ADD_H5_TEST (tnamed_dtype_attr 0 --enable-error-stack tnamed_dtype_attr.h5) # test for displaying soft links and user-defined links ADD_H5_TEST (tslink-1 0 --enable-error-stack tslink.h5) @@ -1423,6 +1423,7 @@ # test for dataset region references ADD_H5_TEST (tdatareg 0 --enable-error-stack tdatareg.h5) ADD_H5ERR_MASK_TEST (tdataregR 0 --enable-error-stack -R tdatareg.h5) + ADD_H5_TEST (tattrreg 0 --enable-error-stack tattrreg.h5) ADD_H5ERR_MASK_TEST (tattrregR 0 -R --enable-error-stack tattrreg.h5) ADD_H5_EXPORT_TEST (tbinregR tdatareg.h5 0 --enable-error-stack -d /Dataset1 -s 0 -R -y -o) diff --git a/tools/h5dump/CMakeTestsPBITS.cmake b/tools/h5dump/CMakeTestsPBITS.cmake index e76fa0e..745d5b1 100644 --- a/tools/h5dump/CMakeTestsPBITS.cmake +++ b/tools/h5dump/CMakeTestsPBITS.cmake @@ -86,7 +86,7 @@ ) foreach (pbits_h5_file ${HDF5_REFERENCE_TEST_PBITS}) - GET_FILENAME_COMPONENT(fname "${pbits_h5_file}" NAME) + get_filename_component(fname "${pbits_h5_file}" NAME) set (dest "${PROJECT_BINARY_DIR}/testfiles/pbits/${fname}") #message (STATUS " Copying ${pbits_h5_file}") add_custom_command ( @@ -99,7 +99,7 @@ foreach (ddl_pbits ${HDF5_REFERENCE_PBITS}) - GET_FILENAME_COMPONENT(fname "${ddl_pbits}" NAME) + get_filename_component(fname "${ddl_pbits}" NAME) set (ddldest "${PROJECT_BINARY_DIR}/testfiles/pbits/${fname}") #message (STATUS " Copying ${ddl_pbits}") add_custom_command ( @@ -111,7 +111,7 @@ endforeach (ddl_pbits ${HDF5_REFERENCE_PBITS}) foreach (ddl_pbits ${HDF5_ERROR_REFERENCE_PBITS}) - GET_FILENAME_COMPONENT(fname "${ddl_pbits}" NAME) + get_filename_component(fname "${ddl_pbits}" NAME) set (ddldest "${PROJECT_BINARY_DIR}/testfiles/pbits/${fname}") #message (STATUS " Copying ${ddl_pbits}") add_custom_command ( diff --git a/tools/h5dump/CMakeTestsVDS.cmake b/tools/h5dump/CMakeTestsVDS.cmake index cc68896..dcb90e0 100644 --- a/tools/h5dump/CMakeTestsVDS.cmake +++ b/tools/h5dump/CMakeTestsVDS.cmake @@ -65,7 +65,7 @@ ) foreach (vds_h5_file ${HDF5_REFERENCE_TEST_VDS}) - GET_FILENAME_COMPONENT(fname "${vds_h5_file}" NAME) + 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 ( @@ -78,7 +78,7 @@ foreach (ddl_vds ${HDF5_REFERENCE_VDS}) - GET_FILENAME_COMPONENT(fname "${ddl_vds}" NAME) + get_filename_component(fname "${ddl_vds}" NAME) set (ddldest "${PROJECT_BINARY_DIR}/testfiles/vds/${fname}") #message (STATUS " Copying ${ddl_vds}") add_custom_command ( @@ -90,7 +90,7 @@ endforeach (ddl_vds ${HDF5_REFERENCE_VDS}) foreach (ddl_vds ${HDF5_ERROR_REFERENCE_VDS}) - GET_FILENAME_COMPONENT(fname "${ddl_vds}" NAME) + get_filename_component(fname "${ddl_vds}" NAME) set (ddldest "${PROJECT_BINARY_DIR}/testfiles/vds/${fname}") #message (STATUS " Copying ${ddl_vds}") add_custom_command ( @@ -111,7 +111,7 @@ # If using memchecker add tests without using scripts if (HDF5_ENABLE_USING_MEMCHECKER) add_test (NAME H5DUMP-${resultfile} COMMAND $ ${ARGN}) - set_tests_properties (H5DUMP-${resultfile} PROPERTIES WORKING_DIRECTORY "${PROJECT_BINARY_DIR}/testfilesvds") + set_tests_properties (H5DUMP-${resultfile} PROPERTIES WORKING_DIRECTORY "${PROJECT_BINARY_DIR}/testfiles/vds") if (NOT ${resultcode} STREQUAL "0") set_tests_properties (H5DUMP-${resultfile} PROPERTIES WILL_FAIL "true") endif (NOT ${resultcode} STREQUAL "0") @@ -144,7 +144,7 @@ # If using memchecker add tests without using scripts if (HDF5_ENABLE_USING_MEMCHECKER) add_test (NAME H5DUMP-${resultfile} COMMAND $ -p ${ARGN}) - set_tests_properties (H5DUMP-${resultfile} PROPERTIES WORKING_DIRECTORY "${PROJECT_BINARY_DIR}/testfilesvds") + set_tests_properties (H5DUMP-${resultfile} PROPERTIES WORKING_DIRECTORY "${PROJECT_BINARY_DIR}/testfiles/vds") if (NOT ${resultcode} STREQUAL "0") set_tests_properties (H5DUMP-${resultfile} PROPERTIES WILL_FAIL "true") endif (NOT ${resultcode} STREQUAL "0") diff --git a/tools/h5dump/CMakeTestsXML.cmake b/tools/h5dump/CMakeTestsXML.cmake index 0a667c4..fc6cae7 100644 --- a/tools/h5dump/CMakeTestsXML.cmake +++ b/tools/h5dump/CMakeTestsXML.cmake @@ -128,7 +128,7 @@ ) foreach (tst_xml_h5_file ${HDF5_XML_REFERENCE_TEST_FILES}) - GET_FILENAME_COMPONENT(fname "${tst_xml_h5_file}" NAME) + get_filename_component(fname "${tst_xml_h5_file}" NAME) set (dest "${PROJECT_BINARY_DIR}/testfiles/xml/${fname}") #message (STATUS " Copying ${tst_xml_h5_file}") add_custom_command ( @@ -140,7 +140,7 @@ endforeach (tst_xml_h5_file ${HDF5_XML_REFERENCE_TEST_FILES}) foreach (tst_xml_other_file ${HDF5_XML_REFERENCE_FILES}) - GET_FILENAME_COMPONENT(fname "${tst_xml_other_file}" NAME) + get_filename_component(fname "${tst_xml_other_file}" NAME) set (dest "${PROJECT_BINARY_DIR}/testfiles/xml/${fname}") #message (STATUS " Copying ${tst_xml_other_file}") add_custom_command ( diff --git a/tools/h5dump/testh5dump.sh.in b/tools/h5dump/testh5dump.sh.in index 6d481c6..944fb85 100644 --- a/tools/h5dump/testh5dump.sh.in +++ b/tools/h5dump/testh5dump.sh.in @@ -1034,6 +1034,8 @@ TOOLTEST tcomp-2.ddl --enable-error-stack -N /type1 --any_path /type2 --any_path TOOLTEST4 tcomp-3.ddl --enable-error-stack -t /#6632 -g /group2 tcompound.h5 # test complicated compound datatype TOOLTEST tcomp-4.ddl --enable-error-stack tcompound_complex.h5 +# tests for bitfields and opaque data types +TOOLTEST tbitnopaque.ddl --enable-error-stack tbitnopaque.h5 #test for the nested compound type TOOLTEST tnestcomp-1.ddl --enable-error-stack tnestedcomp.h5 diff --git a/tools/h5ls/CMakeTests.cmake b/tools/h5ls/CMakeTests.cmake index a42fa17..2e3d398 100644 --- a/tools/h5ls/CMakeTests.cmake +++ b/tools/h5ls/CMakeTests.cmake @@ -31,6 +31,7 @@ ${HDF5_TOOLS_SRC_DIR}/testfiles/tstr.h5 ${HDF5_TOOLS_SRC_DIR}/testfiles/tudlink.h5 ${HDF5_TOOLS_SRC_DIR}/testfiles/tvldtypes1.h5 + ${HDF5_TOOLS_SRC_DIR}/testfiles/tdset_idx.h5 ) set (LIST_OTHER_TEST_FILES @@ -90,13 +91,14 @@ ${HDF5_TOOLS_SRC_DIR}/testfiles/tvldtypes1.ls ${HDF5_TOOLS_SRC_DIR}/testfiles/tvldtypes2le.ls ${HDF5_TOOLS_SRC_DIR}/testfiles/tvldtypes2be.ls + ${HDF5_TOOLS_SRC_DIR}/testfiles/tdset_idx.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) + get_filename_component(fname "${listfiles}" NAME) set (dest "${PROJECT_BINARY_DIR}/testfiles/${fname}") #message (STATUS " Copying ${listfiles} to ${dest}") add_custom_command ( @@ -400,3 +402,8 @@ else (H5_WORDS_BIGENDIAN) ADD_H5_TEST (tdataregle 0 -v tdatareg.h5) endif (H5_WORDS_BIGENDIAN) + +# test for file with datasets that use Fixed Array chunk indices +#echo "***skip testing tdset_idx.h5" +#ADD_H5_TEST (tdset_idx 0 -w80 -d tdset_idx.h5) + \ No newline at end of file diff --git a/tools/h5ls/CMakeTestsVDS.cmake b/tools/h5ls/CMakeTestsVDS.cmake index 1ef3f20..3e85803 100644 --- a/tools/h5ls/CMakeTestsVDS.cmake +++ b/tools/h5ls/CMakeTestsVDS.cmake @@ -47,7 +47,7 @@ # copy the list of test files foreach (listfiles ${LIST_HDF5_TEST_FILES} ${LIST_OTHER_TEST_FILES}) - GET_FILENAME_COMPONENT(fname "${listfiles}" NAME) + get_filename_component(fname "${listfiles}" NAME) set (dest "${PROJECT_BINARY_DIR}/testfiles/vds/${fname}") #message (STATUS " Copying ${listfiles} to ${dest}") add_custom_command ( diff --git a/tools/h5repack/CMakeTests.cmake b/tools/h5repack/CMakeTests.cmake index 8aee98f..1f4887f 100644 --- a/tools/h5repack/CMakeTests.cmake +++ b/tools/h5repack/CMakeTests.cmake @@ -57,6 +57,8 @@ ${HDF5_TOOLS_H5REPACK_SOURCE_DIR}/testfiles/h5repack_layout3.h5 ${HDF5_TOOLS_H5REPACK_SOURCE_DIR}/testfiles/h5repack_layout.UD.h5 ${HDF5_TOOLS_H5REPACK_SOURCE_DIR}/testfiles/h5repack_named_dtypes.h5 + ${HDF5_TOOLS_H5REPACK_SOURCE_DIR}/testfiles/h5repack_nested_8bit_enum.h5 + ${HDF5_TOOLS_H5REPACK_SOURCE_DIR}/testfiles/h5repack_nested_8bit_enum_deflated.h5 ${HDF5_TOOLS_H5REPACK_SOURCE_DIR}/testfiles/h5repack_nbit.h5 ${HDF5_TOOLS_H5REPACK_SOURCE_DIR}/testfiles/h5repack_objs.h5 ${HDF5_TOOLS_H5REPACK_SOURCE_DIR}/testfiles/h5repack_refs.h5 @@ -115,10 +117,20 @@ ${HDF5_TOOLS_H5REPACK_SOURCE_DIR}/testfiles/plugin_test.h5repack_layout.h5.tst ${HDF5_TOOLS_H5REPACK_SOURCE_DIR}/testfiles/h5repack_layout.UD.h5-plugin_none.ddl ${HDF5_TOOLS_H5REPACK_SOURCE_DIR}/testfiles/plugin_none.h5repack_layout.UD.h5.tst + ${HDF5_TOOLS_H5REPACK_SOURCE_DIR}/testfiles/1_vds.h5-vds_dset_compa-v.ddl + ${HDF5_TOOLS_H5REPACK_SOURCE_DIR}/testfiles/1_vds.h5-vds_dset_conti-v.ddl + ${HDF5_TOOLS_H5REPACK_SOURCE_DIR}/testfiles/2_vds.h5-vds_null_compa-v.ddl + ${HDF5_TOOLS_H5REPACK_SOURCE_DIR}/testfiles/2_vds.h5-vds_null_conti-v.ddl + ${HDF5_TOOLS_H5REPACK_SOURCE_DIR}/testfiles/4_vds.h5-vds_compa_compa-v.ddl + ${HDF5_TOOLS_H5REPACK_SOURCE_DIR}/testfiles/4_vds.h5-vds_compa_conti-v.ddl + ${HDF5_TOOLS_H5REPACK_SOURCE_DIR}/testfiles/4_vds.h5-vds_compa-v.ddl + ${HDF5_TOOLS_H5REPACK_SOURCE_DIR}/testfiles/4_vds.h5-vds_conti_compa-v.ddl + ${HDF5_TOOLS_H5REPACK_SOURCE_DIR}/testfiles/4_vds.h5-vds_conti_conti-v.ddl + ${HDF5_TOOLS_H5REPACK_SOURCE_DIR}/testfiles/4_vds.h5-vds_conti-v.ddl ) foreach (h5_file ${LIST_HDF5_TEST_FILES} ${LIST_OTHER_TEST_FILES}) - GET_FILENAME_COMPONENT(fname "${h5_file}" NAME) + get_filename_component(fname "${h5_file}" NAME) set (dest "${PROJECT_BINARY_DIR}/testfiles/${fname}") #message (STATUS " Copying ${h5_file}") add_custom_command ( @@ -345,6 +357,41 @@ endif ("${testtype}" STREQUAL "SKIP") ENDMACRO (ADD_H5_VERIFY_TEST) + MACRO (ADD_H5_VERIFY_VDS testname testtype resultcode testfile testdset testfilter) + if ("${testtype}" STREQUAL "SKIP") + if (NOT HDF5_ENABLE_USING_MEMCHECKER) + add_test ( + NAME H5REPACK_VERIFY_LAYOUT-${testname}-SKIPPED + COMMAND ${CMAKE_COMMAND} -E echo "SKIP -d ${testdset} -pH ${PROJECT_BINARY_DIR}/testfiles/out-${testname}.${resultfile}" + ) + endif (NOT HDF5_ENABLE_USING_MEMCHECKER) + else ("${testtype}" STREQUAL "SKIP") + if (NOT HDF5_ENABLE_USING_MEMCHECKER) + add_test ( + NAME H5REPACK_VERIFY_LAYOUT-${testname} + COMMAND $ ${ARGN} ${PROJECT_BINARY_DIR}/testfiles/${testfile} ${PROJECT_BINARY_DIR}/testfiles/out-${testname}.${testfile} + ) + set_tests_properties (H5REPACK_VERIFY_LAYOUT-${testname} PROPERTIES WORKING_DIRECTORY "${PROJECT_BINARY_DIR}/testfiles") + if (NOT "${last_test}" STREQUAL "") + set_tests_properties (H5REPACK_VERIFY_LAYOUT-${testname} PROPERTIES DEPENDS ${last_test}) + endif (NOT "${last_test}" STREQUAL "") + add_test ( + NAME H5REPACK_VERIFY_LAYOUT-${testname}_DMP + COMMAND "${CMAKE_COMMAND}" + -D "TEST_PROGRAM=$" + -D "TEST_ARGS:STRING=-d;${testdset};-p;out-${testname}.${testfile}" + -D "TEST_FOLDER=${PROJECT_BINARY_DIR}/testfiles" + -D "TEST_OUTPUT=${testfile}-${testname}-v.out" + -D "TEST_EXPECT=${resultcode}" + -D "TEST_REFERENCE=${testfile}-${testname}-v.ddl" + -P "${HDF_RESOURCES_EXT_DIR}/runTest.cmake" + ) + set_tests_properties (H5REPACK_VERIFY_LAYOUT-${testname}_DMP PROPERTIES WORKING_DIRECTORY "${PROJECT_BINARY_DIR}/testfiles") + set_tests_properties (H5REPACK_VERIFY_LAYOUT-${testname}_DMP PROPERTIES DEPENDS H5REPACK_VERIFY_LAYOUT-${testname}) + endif (NOT HDF5_ENABLE_USING_MEMCHECKER) + endif ("${testtype}" STREQUAL "SKIP") + ENDMACRO (ADD_H5_VERIFY_VDS) + MACRO (ADD_H5_TEST_META testname testfile) add_test ( NAME H5REPACK_META-${testname}_N @@ -716,6 +763,13 @@ ADD_H5_TEST (layout "TEST" ${FILE4}) ADD_H5_TEST (early "TEST" ${FILE5}) +# nested 8bit enum in both deflated and non-deflated datafiles + if (NOT USE_FILTER_DEFLATE) + ADD_H5_TEST (nested_8bit_enum "TEST" h5repack_nested_8bit_enum.h5) + else (NOT USE_FILTER_DEFLATE) + ADD_H5_TEST (nested_8bit_enum "TEST" h5repack_nested_8bit_enum_deflated.h5) + endif (NOT USE_FILTER_DEFLATE) + # use $FILE4 to write some filters (this file has no filters) # gzip with individual object @@ -1053,20 +1107,20 @@ ######################################################### # 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) + ADD_H5_VERIFY_VDS (vds_dset_conti "TEST" 0 ${FILEV1} vds_dset CONTIGUOUS -l vds_dset:CONTI) + ADD_H5_VERIFY_VDS (vds_null_conti "TEST" 1 ${FILEV2} null CONTIGUOUS -l CONTI) + ADD_H5_VERIFY_VDS (vds_dset_compa "TEST" 0 ${FILEV1} vds_dset COMPACT -l vds_dset:COMPA) + ADD_H5_VERIFY_VDS (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) + ADD_H5_VERIFY_VDS (vds_compa_conti "TEST" 0 ${FILEV4} vds_dset CONTIGUOUS -l vds_dset:CONTI) + ADD_H5_VERIFY_VDS (vds_compa_compa "TEST" 0 ${FILEV4} vds_dset COMPACT -l vds_dset:COMPA) + ADD_H5_VERIFY_VDS (vds_conti_compa "TEST" 0 ${FILEV4} vds_dset COMPACT -l vds_dset:COMPA) + ADD_H5_VERIFY_VDS (vds_conti_conti "TEST" 0 ${FILEV4} vds_dset CONTIGUOUS -l vds_dset:CONTI) + ADD_H5_VERIFY_VDS (vds_compa "TEST" 0 ${FILEV4} vds_dset COMPACT -l vds_dset:COMPA) + ADD_H5_VERIFY_VDS (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 24298d0..bb686db 100644 --- a/tools/h5repack/h5repack.sh.in +++ b/tools/h5repack/h5repack.sh.in @@ -39,6 +39,8 @@ H5DUMP=../h5dump/h5dump # The h5dump tool name H5DUMP_BIN=`pwd`/$H5DUMP # The path of the h5dump tool binary RM='rm -rf' +CMP='cmp' +DIFF='diff -c' GREP='grep' CP='cp' DIRNAME='dirname' @@ -148,6 +150,16 @@ $SRC_H5REPACK_TESTFILES/h5repack_layout.h5.ddl $SRC_H5REPACK_TESTFILES/h5repack_filters.h5.tst $SRC_H5REPACK_TESTFILES/h5repack_layout.h5-plugin_test.ddl $SRC_H5REPACK_TESTFILES/plugin_test.h5repack_layout.h5.tst +$SRC_H5REPACK_TESTFILES/1_vds.h5-vds_dset_compa-v.ddl +$SRC_H5REPACK_TESTFILES/1_vds.h5-vds_dset_conti-v.ddl +$SRC_H5REPACK_TESTFILES/2_vds.h5-vds_null_compa-v.ddl +$SRC_H5REPACK_TESTFILES/2_vds.h5-vds_null_conti-v.ddl +$SRC_H5REPACK_TESTFILES/4_vds.h5-vds_compa_compa-v.ddl +$SRC_H5REPACK_TESTFILES/4_vds.h5-vds_compa_conti-v.ddl +$SRC_H5REPACK_TESTFILES/4_vds.h5-vds_compa-v.ddl +$SRC_H5REPACK_TESTFILES/4_vds.h5-vds_conti_compa-v.ddl +$SRC_H5REPACK_TESTFILES/4_vds.h5-vds_conti_conti-v.ddl +$SRC_H5REPACK_TESTFILES/4_vds.h5-vds_conti-v.ddl " # @@ -171,7 +183,7 @@ 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 ." @@ -188,7 +200,7 @@ 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` + SDIR=`$DIRNAME $SRC_H5REPACK_TESTFILES/h5repack-help.txt` 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 @@ -321,6 +333,70 @@ VERIFY_LAYOUT_DSET() rm -f $layoutfile } +#------------------------------------------ +# Verifying layouts of a dataset +VERIFY_LAYOUT_VDS() +{ + layoutfile=layout-$1.$2 + dset=$3 + expectlayout=$4 + infile=$2 + outfile=out-$1.$2 + + expect="$TESTDIR/$2-$1-v.ddl" + actual="$TESTDIR/$2-$1-v.out" + actual_err="$TESTDIR/$2-$1-v.err" + + shift + shift + shift + shift + + TESTING $H5REPACK $@ + ( + cd $TESTDIR + $RUNSERIAL $H5REPACK_BIN "$@" $infile $outfile + ) + RET=$? + if [ $RET != 0 ] ; then + echo "*FAILED*" + nerrors="`expr $nerrors + 1`" + else + echo " PASSED" + fi + + #--------------------------------- + # check the layout from a dataset + VERIFY "a dataset layout" + ( + cd $TESTDIR + $RUNSERIAL $H5DUMP_BIN -d $dset -p $outfile + ) >$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 > /dev/null 2>&1 ; then + echo " PASSED" + else + echo "*FAILED*" + echo " Expected result (*.ddl) differs from actual result (*.out)" + nerrors="`expr $nerrors + 1`" + test yes = "$verbose" && $DIFF $caseless $expect $actual |sed 's/^/ /' + fi + + # Clean up output file + if test -z "$HDF5_NOCLEANUP"; then + rm -f $actual $actual_err + fi + + # clean up tmp files + rm -f $outfile +} + #---------------------------------------- # Verifying layouts from entire file VERIFY_LAYOUT_ALL() @@ -469,11 +545,11 @@ 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 } @@ -500,11 +576,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 @@ -634,11 +710,11 @@ 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 @@ -711,7 +787,7 @@ 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 @@ -1057,7 +1133,7 @@ TOOLTEST add_alignment $arg # Check repacking file with old version of layout message (should get upgraded # to new version and be readable, etc.) -TOOLTEST pgrade_layout h5repack_layouto.h5 +TOOLTEST upgrade_layout h5repack_layouto.h5 # test for datum size > H5TOOLS_MALLOCSIZE TOOLTEST gt_mallocsize h5repack_objs.h5 -f GZIP=1 @@ -1091,20 +1167,20 @@ TOOLTEST_META meta_long h5repack_layout.h5 --metadata_block_size=8192 ######################################################### # layout options ######################################################### -VERIFY_LAYOUT_DSET vds_dset_conti 1_vds.h5 vds_dset CONTIGUOUS -l vds_dset:CONTI +VERIFY_LAYOUT_VDS 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_VDS 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 +VERIFY_LAYOUT_VDS vds_compa_conti 4_vds.h5 vds_dset CONTIGUOUS -l vds_dset:CONTI +VERIFY_LAYOUT_VDS vds_compa_compa 4_vds.h5 vds_dset COMPACT -l vds_dset:COMPA +VERIFY_LAYOUT_VDS vds_conti_compa 4_vds.h5 vds_dset COMPACT -l vds_dset:COMPA +VERIFY_LAYOUT_VDS vds_conti_conti 4_vds.h5 vds_dset CONTIGUOUS -l vds_dset:CONTI +VERIFY_LAYOUT_VDS vds_compa 4_vds.h5 vds_dset COMPACT -l vds_dset:COMPA +VERIFY_LAYOUT_VDS 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/CMakeTests.cmake b/tools/h5stat/CMakeTests.cmake index 4175eb2..5d3c82e 100644 --- a/tools/h5stat/CMakeTests.cmake +++ b/tools/h5stat/CMakeTests.cmake @@ -25,6 +25,7 @@ h5stat_newgrat.ddl h5stat_newgrat-UG.ddl h5stat_newgrat-UA.ddl + h5stat_idx.ddl h5stat_err1_links.ddl h5stat_links1.ddl h5stat_links2.ddl @@ -45,6 +46,7 @@ h5stat_filters.h5 h5stat_tsohm.h5 h5stat_newgrat.h5 + h5stat_idx.h5 h5stat_threshold.h5 ) @@ -213,6 +215,8 @@ ADD_H5_TEST (h5stat_newgrat 0 h5stat_newgrat.h5) ADD_H5_TEST (h5stat_newgrat-UG 0 -G h5stat_newgrat.h5) ADD_H5_TEST (h5stat_newgrat-UA 0 -A h5stat_newgrat.h5) +# h5stat_idx.h5 is generated by h5stat_gentest.c + ADD_H5_TEST (h5stat_idx 0 h5stat_idx.h5) # # Tests for -l (--links) option on h5stat_threshold.h5: # -l 0 (incorrect threshold value) diff --git a/tools/h5stat/h5stat_gentest.c b/tools/h5stat/h5stat_gentest.c index 02bd136..b1ab168 100644 --- a/tools/h5stat/h5stat_gentest.c +++ b/tools/h5stat/h5stat_gentest.c @@ -121,10 +121,10 @@ gen_newgrat_file(const char *fname) goto error; if(H5Dclose(did) < 0) goto error; - if(H5Tclose(tid) < 0) - goto error; if(H5Sclose(sid) < 0) goto error; + if(H5Tclose(tid) < 0) + goto error; if(H5Fclose(fid) < 0) goto error; @@ -133,15 +133,14 @@ error: H5Pclose(fapl); H5Pclose(fcpl); H5Aclose(attr_id); + H5Dclose(did); H5Tclose(tid); H5Sclose(sid); H5Gclose(gid); - H5Dclose(did); H5Fclose(fid); } H5E_END_TRY; } /* gen_newgrat_file() */ - /* * Generate an HDF5 file with groups, datasets, attributes for testing the options: * -l N (--links=N): Set the threshold for # of links when printing information for small groups. diff --git a/tools/lib/h5diff_dset.c b/tools/lib/h5diff_dset.c index b8dd0e8..63f1483 100644 --- a/tools/lib/h5diff_dset.c +++ b/tools/lib/h5diff_dset.c @@ -71,9 +71,7 @@ hsize_t diff_dataset( hid_t file1_id, if((dcpl1 = H5Dget_create_plist(did1)) < 0) goto error; if((dcpl2 = H5Dget_create_plist(did2)) < 0) - { goto error; - } /*------------------------------------------------------------------------- * check if the dataset creation property list has filters that @@ -191,6 +189,10 @@ hsize_t diff_datasetid( hid_t did1, hid_t f_tid2=-1; hid_t m_tid1=-1; hid_t m_tid2=-1; + hid_t dcpl1 = -1; + hid_t dcpl2 = -1; + H5D_layout_t stl1 = -1; + H5D_layout_t stl2 = -1; size_t m_size1; size_t m_size2; H5T_sign_t sign1; @@ -260,6 +262,21 @@ hsize_t diff_datasetid( hid_t did1, goto error; } + + /*------------------------------------------------------------------------- + * get the storage layout type + *------------------------------------------------------------------------- + */ + if((dcpl1 = H5Dget_create_plist(did1)) < 0) + goto error; + if((dcpl2 = H5Dget_create_plist(did2)) < 0) + goto error; + + if((stl1 = H5Pget_layout(dcpl1)) < 0) + goto error; + if((stl2 = H5Pget_layout(dcpl2)) < 0) + goto error; + /*------------------------------------------------------------------------- * check for empty datasets *------------------------------------------------------------------------- @@ -271,10 +288,18 @@ hsize_t diff_datasetid( hid_t did1, if (storage_size1==0 || storage_size2==0) { - if ( (options->m_verbose||options->m_list_not_cmp) && obj1_name && obj2_name) - parallel_print("Not comparable: <%s> or <%s> is an empty dataset\n", obj1_name, obj2_name); - can_compare=0; - options->not_cmp=1; + if (stl1==H5D_VIRTUAL || stl2==H5D_VIRTUAL) + { + if ( (options->m_verbose||options->m_list_not_cmp) && obj1_name && obj2_name) + parallel_print("Warning: <%s> or <%s> is a virtual dataset\n", obj1_name, obj2_name); + } + else + { + if ( (options->m_verbose||options->m_list_not_cmp) && obj1_name && obj2_name) + parallel_print("Not comparable: <%s> or <%s> is an empty dataset\n", obj1_name, obj2_name); + can_compare=0; + options->not_cmp=1; + } } /*------------------------------------------------------------------------- @@ -329,7 +354,7 @@ hsize_t diff_datasetid( hid_t did1, parallel_print("Not comparable: <%s> has sign %s ", obj1_name, get_sign(sign1)); parallel_print("and <%s> has sign %s\n", obj2_name, get_sign(sign2)); } - + can_compare=0; options->not_cmp=1; } @@ -369,7 +394,7 @@ hsize_t diff_datasetid( hid_t did1, h5difftrace("upgrade the smaller memory size?\n"); if (FAIL == match_up_memsize (f_tid1, f_tid2, - &m_tid1, &m_tid2, + &m_tid1, &m_tid2, &m_size1, &m_size2)) goto error; diff --git a/tools/misc/CMakeLists.txt b/tools/misc/CMakeLists.txt index 088dbdf..6397899 100644 --- a/tools/misc/CMakeLists.txt +++ b/tools/misc/CMakeLists.txt @@ -28,10 +28,17 @@ TARGET_C_PROPERTIES (h5mkgrp STATIC " " " ") target_link_libraries (h5mkgrp ${HDF5_TOOLS_LIB_TARGET} ${HDF5_LIB_TARGET}) set_target_properties (h5mkgrp PROPERTIES FOLDER tools) +add_executable (h5clear ${HDF5_TOOLS_MISC_SOURCE_DIR}/h5clear.c) +TARGET_NAMING (h5clear STATIC) +TARGET_C_PROPERTIES (h5clear STATIC " " " ") +target_link_libraries (h5clear ${HDF5_TOOLS_LIB_TARGET} ${HDF5_LIB_TARGET}) +set_target_properties (h5clear PROPERTIES FOLDER tools) + set (H5_DEP_EXECUTABLES h5debug h5repart h5mkgrp + h5clear ) #----------------------------------------------------------------------------- @@ -63,6 +70,18 @@ if (BUILD_TESTING) target_link_libraries (h5repart_test ${HDF5_LIB_TARGET} ${HDF5_TOOLS_LIB_TARGET}) set_target_properties (h5repart_test PROPERTIES FOLDER tools) + add_executable (h5clear_gentest ${HDF5_TOOLS_MISC_SOURCE_DIR}/h5clear_gentest.c) + TARGET_NAMING (h5clear_gentest STATIC) + TARGET_C_PROPERTIES (h5clear_gentest STATIC " " " ") + target_link_libraries (h5clear_gentest ${HDF5_LIB_TARGET} ${HDF5_TOOLS_LIB_TARGET}) + set_target_properties (h5clear_gentest PROPERTIES FOLDER tools) + + add_executable (clear_open_chk ${HDF5_TOOLS_MISC_SOURCE_DIR}/clear_open_chk.c) + TARGET_NAMING (clear_open_chk STATIC) + TARGET_C_PROPERTIES (clear_open_chk STATIC " " " ") + target_link_libraries (clear_open_chk ${HDF5_LIB_TARGET} ${HDF5_TOOLS_LIB_TARGET}) + set_target_properties (clear_open_chk PROPERTIES FOLDER tools) + include (CMakeTests.cmake) endif (BUILD_TESTING) diff --git a/tools/misc/CMakeTests.cmake b/tools/misc/CMakeTests.cmake index d28b744..1a31c92 100644 --- a/tools/misc/CMakeTests.cmake +++ b/tools/misc/CMakeTests.cmake @@ -4,7 +4,7 @@ ### T E S T I N G ### ############################################################################## ############################################################################## - + # -------------------------------------------------------------------- # Copy all the HDF5 files from the source directory into the test directory # -------------------------------------------------------------------- @@ -39,7 +39,7 @@ ARGS -E copy_if_different ${HDF5_TOOLS_SRC_DIR}/testfiles/${h5_file} ${dest} ) endforeach (h5_file ${HDF5_REFERENCE_TEST_FILES}) - + set (HDF5_MKGRP_TEST_FILES #h5mkgrp_help.txt #h5mkgrp_version @@ -90,14 +90,14 @@ add_test ( NAME H5MKGRP-${resultfile}-clear-objects COMMAND ${CMAKE_COMMAND} - -E remove - ${resultfile}.h5 + -E remove + ${resultfile}.h5 ${resultfile}.out ${resultfile}.out.err ) set_tests_properties (H5MKGRP-${resultfile}-clear-objects PROPERTIES WORKING_DIRECTORY "${PROJECT_BINARY_DIR}/testfiles") endif (NOT HDF5_ENABLE_USING_MEMCHECKER) - + add_test ( NAME H5MKGRP-${resultfile} COMMAND $ ${resultoption} ${resultfile}.h5 ${ARGN} @@ -132,8 +132,8 @@ add_test ( NAME H5MKGRP_CMP-${resultfile}-clear-objects COMMAND ${CMAKE_COMMAND} - -E remove - ${resultfile}.h5 + -E remove + ${resultfile}.h5 ${resultfile}.out ${resultfile}.out.err ) @@ -159,11 +159,12 @@ ############################################################################## ############################################################################## + ###################### H5REPART ######################### # Remove any output file left over from previous test run add_test ( NAME H5REPART-clearall-objects COMMAND ${CMAKE_COMMAND} - -E remove + -E remove fst_family00000.h5 scd_family00000.h5 scd_family00001.h5 @@ -175,7 +176,7 @@ set_tests_properties (H5REPART-clearall-objects PROPERTIES DEPENDS ${last_test}) endif (NOT "${last_test}" STREQUAL "") set (last_test "H5REPART-clearall-objects") - + # repartition family member size to 20,000 bytes. add_test (NAME H5REPART-h5repart_20K COMMAND $ -m 20000 family_file%05d.h5 fst_family%05d.h5) set_tests_properties (H5REPART-h5repart_20K PROPERTIES DEPENDS H5REPART-clearall-objects) @@ -195,50 +196,135 @@ set (H5_DEP_EXECUTABLES ${H5_DEP_EXECUTABLES} h5repart_test ) - + + ###################### H5CLEAR ######################### + # Remove any output file left over from previous test run + add_test ( + NAME H5CLEAR-clearall-objects + COMMAND ${CMAKE_COMMAND} + -E remove + h5clear_sec2_v3.h5 + h5clear_log_v3.h5 + h5clear_sec2_v0.h5 + h5clear_sec2_v2.h5 + ) + if (NOT "${last_test}" STREQUAL "") + set_tests_properties (H5CLEAR-clearall-objects PROPERTIES DEPENDS ${last_test}) + endif (NOT "${last_test}" STREQUAL "") + set (last_test "H5CLEAR-clearall-objects") + + # create the output files to be used. + add_test (NAME H5CLEAR-h5clear_gentest COMMAND $) + set_tests_properties (H5CLEAR-h5clear_gentest PROPERTIES DEPENDS "H5CLEAR-clearall-objects") + + # Initial file open fails + add_test (NAME H5CLEAR-clear_open_chk-sec2_v3_F COMMAND $ h5clear_sec2_v3.h5) + set_tests_properties (H5CLEAR-clear_open_chk-sec2_v3_F PROPERTIES WILL_FAIL "true") + set_tests_properties (H5CLEAR-clear_open_chk-sec2_v3_F PROPERTIES DEPENDS H5CLEAR-h5clear_gentest) + # After "h5clear" the file, the subsequent file open succeeds + add_test (NAME H5CLEAR-h5clear-sec2_v3 COMMAND $ h5clear_sec2_v3.h5) + set_tests_properties (H5CLEAR-h5clear-sec2_v3 PROPERTIES DEPENDS H5CLEAR-clear_open_chk-sec2_v3_F) + add_test (NAME H5CLEAR-clear_open_chk-sec2_v3 COMMAND $ h5clear_sec2_v3.h5) + set_tests_properties (H5CLEAR-clear_open_chk-sec2_v3 PROPERTIES DEPENDS H5CLEAR-h5clear-sec2_v3) + + # Initial file open fails + add_test (NAME H5CLEAR-clear_open_chk-log_v3_F COMMAND $ h5clear_log_v3.h5) + set_tests_properties (H5CLEAR-clear_open_chk-log_v3_F PROPERTIES WILL_FAIL "true") + set_tests_properties (H5CLEAR-clear_open_chk-log_v3_F PROPERTIES DEPENDS H5CLEAR-h5clear_gentest) + # After "h5clear" the file, the subsequent file open succeeds + add_test (NAME H5CLEAR-h5clear-log_v3 COMMAND $ h5clear_log_v3.h5) + set_tests_properties (H5CLEAR-h5clear-log_v3 PROPERTIES DEPENDS H5CLEAR-clear_open_chk-log_v3_F) + add_test (NAME H5CLEAR-clear_open_chk-log_v3 COMMAND $ h5clear_log_v3.h5) + set_tests_properties (H5CLEAR-clear_open_chk-log_v3 PROPERTIES DEPENDS H5CLEAR-h5clear-log_v3) + + # Initial file open fails + add_test (NAME H5CLEAR-clear_open_chk-latest_sec2_v3_F COMMAND $ latest_h5clear_sec2_v3.h5) + set_tests_properties (H5CLEAR-clear_open_chk-latest_sec2_v3_F PROPERTIES WILL_FAIL "true") + set_tests_properties (H5CLEAR-clear_open_chk-latest_sec2_v3_F PROPERTIES DEPENDS H5CLEAR-h5clear_gentest) + # After "h5clear" the file, the subsequent file open succeeds + add_test (NAME H5CLEAR-h5clear-latest_sec2_v3 COMMAND $ latest_h5clear_sec2_v3.h5) + set_tests_properties (H5CLEAR-h5clear-latest_sec2_v3 PROPERTIES DEPENDS H5CLEAR-clear_open_chk-latest_sec2_v3_F) + add_test (NAME H5CLEAR-clear_open_chk-latest_sec2_v3 COMMAND $ latest_h5clear_sec2_v3.h5) + set_tests_properties (H5CLEAR-clear_open_chk-latest_sec2_v3 PROPERTIES DEPENDS H5CLEAR-h5clear-latest_sec2_v3) + + # Initial file open fails + add_test (NAME H5CLEAR-clear_open_chk-latest_log_v3_F COMMAND $ h5clear_log_v3.h5) + set_tests_properties (H5CLEAR-clear_open_chk-latest_log_v3_F PROPERTIES WILL_FAIL "true") + set_tests_properties (H5CLEAR-clear_open_chk-latest_log_v3_F PROPERTIES DEPENDS H5CLEAR-h5clear_gentest) + # After "h5clear" the file, the subsequent file open succeeds + add_test (NAME H5CLEAR-h5clear-latest_log_v3 COMMAND $ latest_h5clear_log_v3.h5) + set_tests_properties (H5CLEAR-h5clear-latest_log_v3 PROPERTIES DEPENDS H5CLEAR-clear_open_chk-latest_log_v3_F) + add_test (NAME H5CLEAR-clear_open_chk-latest_log_v3 COMMAND $ latest_h5clear_log_v3.h5) + set_tests_properties (H5CLEAR-clear_open_chk-latest_log_v3 PROPERTIES DEPENDS H5CLEAR-h5clear-latest_log_v3) + + # + # File open succeeds because the library does not check status_flags for file with < v3 superblock + add_test (NAME H5CLEAR-clear_open_chk-sec2_v0_P COMMAND $ h5clear_sec2_v0.h5) + set_tests_properties (H5CLEAR-clear_open_chk-sec2_v0_P PROPERTIES DEPENDS H5CLEAR-h5clear_gentest) + # After "h5clear" the file, the subsequent file open succeeds + add_test (NAME H5CLEAR-h5clear-sec2_v0 COMMAND $ h5clear_sec2_v0.h5) + set_tests_properties (H5CLEAR-h5clear-sec2_v0 PROPERTIES DEPENDS H5CLEAR-clear_open_chk-sec2_v0_P) + add_test (NAME H5CLEAR-clear_open_chk-sec2_v0 COMMAND $ h5clear_sec2_v0.h5) + set_tests_properties (H5CLEAR-clear_open_chk-sec2_v0 PROPERTIES DEPENDS H5CLEAR-h5clear-sec2_v0) + + # + # File open succeeds because the library does not check status_flags for file with < v3 superblock + add_test (NAME H5CLEAR-clear_open_chk-sec2_v2_P COMMAND $ h5clear_sec2_v2.h5) + set_tests_properties (H5CLEAR-clear_open_chk-sec2_v2_P PROPERTIES DEPENDS H5CLEAR-h5clear_gentest) + # After "h5clear" the file, the subsequent file open succeeds + add_test (NAME H5CLEAR-h5clear-sec2_v2 COMMAND $ h5clear_sec2_v2.h5) + set_tests_properties (H5CLEAR-h5clear-sec2_v2 PROPERTIES DEPENDS H5CLEAR-clear_open_chk-sec2_v2_P) + add_test (NAME H5CLEAR-clear_open_chk-sec2_v2 COMMAND $ h5clear_sec2_v2.h5) + set_tests_properties (H5CLEAR-clear_open_chk-sec2_v2 PROPERTIES DEPENDS H5CLEAR-h5clear-sec2_v2) + + set (H5_DEP_EXECUTABLES ${H5_DEP_EXECUTABLES} + h5clear_gentest + ) + + ###################### H5MKGRP ######################### if (HDF5_ENABLE_USING_MEMCHECKER) add_test ( NAME H5MKGRP-clearall-objects COMMAND ${CMAKE_COMMAND} - -E remove + -E remove h5mkgrp_help.out h5mkgrp_help.out.err h5mkgrp_version.out h5mkgrp_version.out.err - h5mkgrp_single.h5 + h5mkgrp_single.h5 h5mkgrp_single.out h5mkgrp_single.out.err - h5mkgrp_single_v.h5 + h5mkgrp_single_v.h5 h5mkgrp_single_v.out h5mkgrp_single_v.out.err - h5mkgrp_single_p.h5 + h5mkgrp_single_p.h5 h5mkgrp_single_p.out h5mkgrp_single_p.out.err - h5mkgrp_single_l.h5 + h5mkgrp_single_l.h5 h5mkgrp_single_l.out h5mkgrp_single_l.out.err - h5mkgrp_several.h5 + h5mkgrp_several.h5 h5mkgrp_several.out h5mkgrp_several.out.err - h5mkgrp_several_v.h5 + h5mkgrp_several_v.h5 h5mkgrp_several_v.out h5mkgrp_several_v.out.err - h5mkgrp_several_p.h5 + h5mkgrp_several_p.h5 h5mkgrp_several_p.out h5mkgrp_several_p.out.err - h5mkgrp_several_l.h5 + h5mkgrp_several_l.h5 h5mkgrp_several_l.out h5mkgrp_several_l.out.err - h5mkgrp_nested_p.h5 + h5mkgrp_nested_p.h5 h5mkgrp_nested_p.out h5mkgrp_nested_p.out.err - h5mkgrp_nested_lp.h5 + h5mkgrp_nested_lp.h5 h5mkgrp_nested_lp.out h5mkgrp_nested_lp.out.err - h5mkgrp_nested_mult_p.h5 + h5mkgrp_nested_mult_p.h5 h5mkgrp_nested_mult_p.out h5mkgrp_nested_mult_p.out.err - h5mkgrp_nested_mult_lp.h5 + h5mkgrp_nested_mult_lp.h5 h5mkgrp_nested_mult_lp.out h5mkgrp_nested_mult_lp.out.err ) @@ -265,7 +351,7 @@ ADD_H5_TEST (h5mkgrp_several_p 0 "-p" one two) ADD_H5_TEST (h5mkgrp_several_l 0 "-l" one two) - # Create various nested groups + # Create various nested groups ADD_H5_TEST (h5mkgrp_nested_p 0 "-p" /one/two) ADD_H5_TEST (h5mkgrp_nested_lp 0 "-lp" /one/two) ADD_H5_TEST (h5mkgrp_nested_mult_p 0 "-p" /one/two /three/four) diff --git a/tools/misc/Makefile.am b/tools/misc/Makefile.am index bde6805..b4d6bac 100644 --- a/tools/misc/Makefile.am +++ b/tools/misc/Makefile.am @@ -29,12 +29,10 @@ AM_CPPFLAGS+=-I$(top_srcdir)/src -I$(top_srcdir)/tools/lib TEST_PROG=h5repart_gentest talign TEST_SCRIPT=testh5repart.sh testh5mkgrp.sh testh5clear.sh - check_PROGRAMS=$(TEST_PROG) repart_test clear_open_chk check_SCRIPTS=$(TEST_SCRIPT) SCRIPT_DEPEND=h5repart$(EXEEXT) h5mkgrp$(EXEEXT) h5clear$(EXEEXT) - # These are our main targets, the tools bin_PROGRAMS=h5debug h5repart h5mkgrp h5clear bin_SCRIPTS=h5redeploy -- cgit v0.12