From ae32ba97fdc56b4b5ebf473dda4b51dbbd1089ff Mon Sep 17 00:00:00 2001 From: Quincey Koziol Date: Fri, 6 Aug 2010 12:51:53 -0500 Subject: [svn-r19182] Description: Bring r19179 from trunk to 1.8 branch: Bring changes from Coverity branch back to trunk: r19079 & 19080: [BZ1942] h5dump -u to generate XML, it does not respect the -m option xml version of dump_data function didn't check for use of fp_format variable. Added new test expected file for committed bug 1942 r19103, 19104 & 19105: [BZ1821] h5repack -v did not display correct output for a selected compression. Needed new test for comparing output of -v option. Added new test file for solution to BZ1821 BZ1821 - Bring test changes from the shell script actually used. Tested on: Mac OS X/32 10.6.4 (amazon) debug & production (h5committested on branch) --- MANIFEST | 3 ++ tools/h5dump/h5dump.c | 6 ++++ tools/h5dump/testh5dumpxml.sh.in | 3 ++ tools/h5repack/CMakeLists.txt | 37 +++++++++++++++++++-- tools/h5repack/h5repack.sh.in | 39 ++++++++++++++++++++++ tools/h5repack/h5repack_copy.c | 16 ++++----- tools/testfiles/h5repack_filters.h5.ddl | 13 ++++++++ tools/testfiles/tfpformat.h5.xml | 59 +++++++++++++++++++++++++++++++++ 8 files changed, 164 insertions(+), 12 deletions(-) create mode 100644 tools/testfiles/h5repack_filters.h5.ddl create mode 100644 tools/testfiles/tfpformat.h5.xml diff --git a/MANIFEST b/MANIFEST index 4b33099..7711928 100644 --- a/MANIFEST +++ b/MANIFEST @@ -1322,6 +1322,8 @@ ./tools/testfiles/torderattr.h5 ./tools/testfiles/tfpformat.ddl ./tools/testfiles/tfpformat.h5 +# h5dump h5repack validation +./tools/testfiles/h5repack_filters.h5.ddl # Expected output from h5ls tests @@ -1394,6 +1396,7 @@ ./tools/testfiles/tdset2.h5.xml ./tools/testfiles/tempty.h5.xml ./tools/testfiles/tenum.h5.xml +./tools/testfiles/tfpformat.h5.xml ./tools/testfiles/tgroup.h5.xml ./tools/testfiles/thlink.h5.xml ./tools/testfiles/tloop.h5.xml diff --git a/tools/h5dump/h5dump.c b/tools/h5dump/h5dump.c index d9c373a..cf44d13 100644 --- a/tools/h5dump/h5dump.c +++ b/tools/h5dump/h5dump.c @@ -5614,6 +5614,12 @@ xml_dump_data(hid_t obj_id, int obj_data, struct subset_t UNUSED * sset, int UNU int depth; int stdindent = COL; /* should be 3 */ + if (fp_format) + { + outputformat->fmt_double = fp_format; + outputformat->fmt_float = fp_format; + } + if (nCols==0) { outputformat->line_ncols = 65535; outputformat->line_per_line = 1; diff --git a/tools/h5dump/testh5dumpxml.sh.in b/tools/h5dump/testh5dumpxml.sh.in index c4c8657..c9f1ad2 100755 --- a/tools/h5dump/testh5dumpxml.sh.in +++ b/tools/h5dump/testh5dumpxml.sh.in @@ -188,6 +188,9 @@ TOOLTEST torderattr2.h5.xml --xml -H --sort_by=name --sort_order=descending tord TOOLTEST torderattr3.h5.xml --xml -H --sort_by=creation_order --sort_order=ascending torderattr.h5 TOOLTEST torderattr4.h5.xml --xml -H --sort_by=creation_order --sort_order=descending torderattr.h5 +# tests for floating point user defined printf format +TOOLTEST tfpformat.h5.xml -u -m %.7f tfpformat.h5 + if test $nerrors -eq 0 ; then echo "All $TESTNAME tests passed." diff --git a/tools/h5repack/CMakeLists.txt b/tools/h5repack/CMakeLists.txt index adec48a..31e4e90 100644 --- a/tools/h5repack/CMakeLists.txt +++ b/tools/h5repack/CMakeLists.txt @@ -142,6 +142,7 @@ IF (BUILD_TESTING) tfamily00008.h5 tfamily00009.h5 tfamily00010.h5 + h5repack_filters.h5.ddl ) FOREACH (h5_file ${HDF5_REFERENCE_TEST_FILES}) @@ -166,10 +167,12 @@ IF (BUILD_TESTING) ) ENDFOREACH (h5c_file ${HDF5_COMMON_TEST_FILES}) - MACRO (ADD_H5_TEST testname testtype testfile) IF (${testtype} STREQUAL "SKIP") - MESSAGE (STATUS "SKIP ${testfile} ${ARGN}") + ADD_TEST ( + NAME H5REPACK-${testname} + COMMAND ${CMAKE_COMMAND} -E echo "SKIP ${ARGN} ${PROJECT_BINARY_DIR}/testfiles/${testfile} ${PROJECT_BINARY_DIR}/testfiles/out.${testfile}" + ) ELSE (${testtype} STREQUAL "SKIP") ADD_TEST ( NAME H5REPACK-${testname} @@ -182,6 +185,28 @@ IF (BUILD_TESTING) ENDIF (${testtype} STREQUAL "SKIP") ENDMACRO (ADD_H5_TEST testname testfile testtype) + MACRO (ADD_H5_CMP_TEST testname testfilter testtype resultcode resultfile) + IF (${testtype} STREQUAL "SKIP") + ADD_TEST ( + NAME H5REPACK-${testname} + COMMAND ${CMAKE_COMMAND} -E echo "SKIP ${ARGN} ${PROJECT_BINARY_DIR}/testfiles/${resultfile} ${PROJECT_BINARY_DIR}/testfiles/out.${resultfile}" + ) + ELSE (${testtype} STREQUAL "SKIP") + ADD_TEST ( + NAME H5REPACK-${testname} + COMMAND "${CMAKE_COMMAND}" + -D "TEST_PROGRAM=$" + -D "TEST_ARGS:STRING=${ARGN};${PROJECT_BINARY_DIR}/testfiles/${resultfile};${PROJECT_BINARY_DIR}/testfiles/out.${resultfile}" + -D "TEST_FOLDER=${PROJECT_BINARY_DIR}" + -D "TEST_OUTPUT=${resultfile}.out" + -D "TEST_EXPECT=${resultcode}" + -D "TEST_FILTER=${testfilter}" + -D "TEST_REFERENCE=${PROJECT_BINARY_DIR}/testfiles/${resultfile}.ddl" + -P "${HDF5_RESOURCES_DIR}/runTest.cmake" + ) + ENDIF (${testtype} STREQUAL "SKIP") + ENDMACRO (ADD_H5_CMP_TEST file) + # # The tests # We use the files generated by h5repacktst @@ -306,6 +331,14 @@ IF (NOT USE_FILTER_SZIP_ENCODER OR NOT USE_FILTER_SZIP OR NOT USE_FILTER_SHUFFLE SET (TESTTYPE "SKIP") ENDIF (NOT USE_FILTER_SZIP_ENCODER OR NOT USE_FILTER_SZIP OR NOT USE_FILTER_SHUFFLE OR NOT USE_FILTER_FLETCHER32 OR NOT USE_FILTER_DEFLATE) ADD_H5_TEST (all_filters ${TESTTYPE} ${arg}) + +# verbose gzip with individual object +SET (arg ${FILE11} -v -f /dset_deflate:GZIP=9) +SET (TESTTYPE "TEST") +IF (NOT USE_FILTER_DEFLATE) + 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 diff --git a/tools/h5repack/h5repack.sh.in b/tools/h5repack/h5repack.sh.in index 9225b9c..fee30bf 100755 --- a/tools/h5repack/h5repack.sh.in +++ b/tools/h5repack/h5repack.sh.in @@ -182,6 +182,37 @@ TOOLTEST1() fi rm -f $outfile } + +# Call h5repack and compare output to a text file for -v option +# +TOOLTESTV() +{ + expect="$srcdir/../testfiles/$1" + actual="../testfiles/`basename $1 .ddl`.out" + actual_err="../testfiles/`basename $1 .ddl`.err" + shift + + # Run test. + TESTING $H5REPACK $@ + + infile=$srcdir/testfiles/$1 + path=`pwd` + outfile=$path/out.$1 + shift + $RUNSERIAL $H5REPACK_BIN "$@" $infile $outfile >$actual 2>$actual_err + cat $actual_err >> $actual + + if cmp -s $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 -c $expect $actual |sed 's/^/ /' + fi + +# rm -f $actual $actual_err +} # # The tests @@ -285,6 +316,14 @@ if test $USE_FILTER_SZIP_ENCODER != "yes" -o $USE_FILTER_SZIP != "yes" -o $USE_F else TOOLTEST $arg fi + +# verbose gzip with individual object +arg="$FILE11 -v -f dset_deflate:GZIP=9" +if test $USE_FILTER_DEFLATE != "yes" ; then + SKIP $arg +else + TOOLTEST $arg +fi ########################################################### # the following tests assume the input files have filters diff --git a/tools/h5repack/h5repack_copy.c b/tools/h5repack/h5repack_copy.c index b4c191c..ece870f 100644 --- a/tools/h5repack/h5repack_copy.c +++ b/tools/h5repack/h5repack_copy.c @@ -642,19 +642,15 @@ int do_copy_objects(hid_t fidin, req_filter = 1; /* check if filters were requested for individual objects */ - for( u = 0; u < options->op_tbl->nelems; u++) - { + for (u = 0; u < options->op_tbl->nelems; u++) { int k; - for( k = 0; k < options->op_tbl->objs[u].nfilters; k++) - { - if ( options->op_tbl->objs[u].filter->filtn > 0 ) - { - - req_filter = 1; - + if (strcmp(travt->objs[i].name, options->op_tbl->objs[u].path) == 0) { + for (k = 0; k < options->op_tbl->objs[u].nfilters; k++) { + if (options->op_tbl->objs[u].filter->filtn > 0) { + req_filter = 1; + } } - } } diff --git a/tools/testfiles/h5repack_filters.h5.ddl b/tools/testfiles/h5repack_filters.h5.ddl new file mode 100644 index 0000000..36e65b9 --- /dev/null +++ b/tools/testfiles/h5repack_filters.h5.ddl @@ -0,0 +1,13 @@ +Objects to modify layout are... +Objects to apply filter are... + with GZIP filter + ...Found +----------------------------------------- + Type Filter (Compression) Name +----------------------------------------- + group / + dset /dset_all + dset GZIP (0.995:1) /dset_deflate + dset /dset_fletcher32 + dset /dset_nbit + dset /dset_shuffle diff --git a/tools/testfiles/tfpformat.h5.xml b/tools/testfiles/tfpformat.h5.xml new file mode 100644 index 0000000..939d7b3 --- /dev/null +++ b/tools/testfiles/tfpformat.h5.xml @@ -0,0 +1,59 @@ +############################# +Expected output for 'h5dump -u -m %.7f tfpformat.h5' +############################# + + + + + + + + + + + + + + + + + + + + + + + + + + -0.1234567 0.1234567 0.0000000 0.0000000 0.0000000 0.0000000 + + + + + + + + + + + + + + + + + + + + + + + + + -0.1234567 0.1234567 0.0000000 0.0000000 0.0000000 0.0000000 + + + + + -- cgit v0.12