[svn-r19179] Description:

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)
This commit is contained in:
Quincey Koziol 2010-08-05 18:19:01 -05:00
parent 1fe94ec545
commit 0de252524d
9 changed files with 173 additions and 12 deletions

View File

@ -1347,6 +1347,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
@ -1419,6 +1421,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

View File

@ -17,6 +17,9 @@ ENDIF (NOT TEST_OUTPUT)
#IF (NOT TEST_EXPECT)
# MESSAGE (STATUS "Require TEST_EXPECT to be defined")
#ENDIF (NOT TEST_EXPECT)
#IF (NOT TEST_FILTER)
# MESSAGE (STATUS "Require TEST_FILTER to be defined")
#ENDIF (NOT TEST_FILTER)
IF (NOT TEST_REFERENCE)
MESSAGE (FATAL_ERROR "Require TEST_REFERENCE to be defined")
ENDIF (NOT TEST_REFERENCE)
@ -61,6 +64,12 @@ IF (TEST_MASK)
FILE (WRITE ${TEST_FOLDER}/${TEST_OUTPUT} "${TEST_STREAM}")
ENDIF (TEST_MASK)
IF (TEST_FILTER)
FILE (READ ${TEST_FOLDER}/${TEST_OUTPUT} TEST_STREAM)
STRING(REGEX REPLACE "${TEST_FILTER}" "" TEST_STREAM "${TEST_STREAM}")
FILE (WRITE ${TEST_FOLDER}/${TEST_OUTPUT} "${TEST_STREAM}")
ENDIF (TEST_FILTER)
IF (WIN32 AND NOT MINGW)
FILE (READ ${TEST_FOLDER}/${TEST_REFERENCE} TEST_STREAM)
FILE (WRITE ${TEST_FOLDER}/${TEST_REFERENCE} "${TEST_STREAM}")

View File

@ -5429,6 +5429,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;

View File

@ -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."

View File

@ -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=$<TARGET_FILE:h5repack>"
-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

View File

@ -183,6 +183,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
@ -286,6 +317,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

View File

@ -686,19 +686,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;
}
}
}
}

View File

@ -0,0 +1,13 @@
Objects to modify layout are...
Objects to apply filter are...
</dset_deflate> with GZIP filter
</dset_deflate>...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

View File

@ -0,0 +1,59 @@
#############################
Expected output for 'h5dump -u -m %.7f tfpformat.h5'
#############################
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE HDF5-File PUBLIC "HDF5-File.dtd" "http://www.hdfgroup.org/DTDs/HDF5-File.dtd">
<HDF5-File>
<RootGroup OBJ-XID="xid_96" H5Path="/">
<Dataset Name="double" OBJ-XID="xid_800" H5Path= "/double" Parents="xid_96" H5ParentPaths="/">
<StorageLayout>
<ContiguousLayout/>
</StorageLayout>
<FillValueInfo FillTime="FillIfSet" AllocationTime="Late">
<FillValue>
<NoFill/>
</FillValue>
</FillValueInfo>
<Dataspace>
<SimpleDataspace Ndims="1">
<Dimension DimSize="6" MaxDimSize="6"/>
</SimpleDataspace>
</Dataspace>
<DataType>
<AtomicType>
<FloatType ByteOrder="LE" Size="8" SignBitLocation="63" ExponentBits="11" ExponentLocation="52" MantissaBits="52" MantissaLocation="0" />
</AtomicType>
</DataType>
<Data>
<DataFromFile>
-0.1234567 0.1234567 0.0000000 0.0000000 0.0000000 0.0000000
</DataFromFile>
</Data>
</Dataset>
<Dataset Name="float" OBJ-XID="xid_1400" H5Path= "/float" Parents="xid_96" H5ParentPaths="/">
<StorageLayout>
<ContiguousLayout/>
</StorageLayout>
<FillValueInfo FillTime="FillIfSet" AllocationTime="Late">
<FillValue>
<NoFill/>
</FillValue>
</FillValueInfo>
<Dataspace>
<SimpleDataspace Ndims="1">
<Dimension DimSize="6" MaxDimSize="6"/>
</SimpleDataspace>
</Dataspace>
<DataType>
<AtomicType>
<FloatType ByteOrder="LE" Size="4" SignBitLocation="31" ExponentBits="8" ExponentLocation="23" MantissaBits="23" MantissaLocation="0" />
</AtomicType>
</DataType>
<Data>
<DataFromFile>
-0.1234567 0.1234567 0.0000000 0.0000000 0.0000000 0.0000000
</DataFromFile>
</Data>
</Dataset>
</RootGroup>
</HDF5-File>