summaryrefslogtreecommitdiffstats
path: root/tools/test/h5dump
diff options
context:
space:
mode:
authorAllen Byrne <50328838+byrnHDF@users.noreply.github.com>2024-03-10 23:43:37 (GMT)
committerGitHub <noreply@github.com>2024-03-10 23:43:37 (GMT)
commit50a65223220142cf0b06a7d25ca53dc56811be01 (patch)
tree52d42dec08d723ee8949e50b7501dd7fbc1d21d5 /tools/test/h5dump
parent9bc6c201666aa7fcd7937db7241d4074b67824c9 (diff)
downloadhdf5-50a65223220142cf0b06a7d25ca53dc56811be01.zip
hdf5-50a65223220142cf0b06a7d25ca53dc56811be01.tar.gz
hdf5-50a65223220142cf0b06a7d25ca53dc56811be01.tar.bz2
Change compression tests reference files to use masking for compression ratios (#4083)
Rework TEST_FILTER tests to handle slightly different compression ratios
Diffstat (limited to 'tools/test/h5dump')
-rw-r--r--tools/test/h5dump/CMakeTests.cmake46
-rw-r--r--tools/test/h5dump/expected/tallfilters.ddl2
-rw-r--r--tools/test/h5dump/expected/tdeflate.ddl2
-rw-r--r--tools/test/h5dump/expected/tfletcher32.ddl2
-rw-r--r--tools/test/h5dump/expected/tnbit.ddl2
-rw-r--r--tools/test/h5dump/expected/tscaleoffset.ddl2
-rw-r--r--tools/test/h5dump/expected/tszip.ddl2
-rw-r--r--tools/test/h5dump/testh5dump.sh.in75
8 files changed, 115 insertions, 18 deletions
diff --git a/tools/test/h5dump/CMakeTests.cmake b/tools/test/h5dump/CMakeTests.cmake
index d7f39e1..586957e 100644
--- a/tools/test/h5dump/CMakeTests.cmake
+++ b/tools/test/h5dump/CMakeTests.cmake
@@ -511,6 +511,40 @@
endif ()
endmacro ()
+ macro (ADD_H5_COMP_TEST resultfile resultcode resultvalue)
+ # If using memchecker add tests without using scripts
+ if (HDF5_USING_ANALYSIS_TOOL)
+ add_test (NAME H5DUMP-${resultfile} COMMAND ${CMAKE_CROSSCOMPILING_EMULATOR} $<TARGET_FILE:h5dump> ${ARGN})
+ if (${resultcode})
+ set_tests_properties (H5DUMP-${resultfile} PROPERTIES WILL_FAIL "true")
+ endif ()
+ set_tests_properties (H5DUMP-${resultfile} PROPERTIES
+ WORKING_DIRECTORY "${PROJECT_BINARY_DIR}/testfiles/std"
+ )
+ else ()
+ add_test (
+ NAME H5DUMP-${resultfile}
+ COMMAND "${CMAKE_COMMAND}"
+ -D "TEST_EMULATOR=${CMAKE_CROSSCOMPILING_EMULATOR}"
+ -D "TEST_PROGRAM=$<TARGET_FILE:h5dump>"
+ -D "TEST_ARGS:STRING=${ARGN}"
+ -D "TEST_FOLDER=${PROJECT_BINARY_DIR}/testfiles/std"
+ -D "TEST_OUTPUT=${resultfile}.out"
+ -D "TEST_EXPECT=${resultcode}"
+ -D "TEST_REFERENCE=${resultfile}.ddl"
+ -D "TEST_FILTER:STRING=SIZE [0-9]* \\(${resultvalue}\\\.[0-9][0-9][0-9]:1 COMPRESSION\\)"
+ -D "TEST_FILTER_REPLACE:STRING=SIZE XXXX (${resultvalue}.XXX:1 COMPRESSION)"
+ -P "${HDF_RESOURCES_DIR}/runTest.cmake"
+ )
+ endif ()
+ set_tests_properties (H5DUMP-${resultfile} PROPERTIES
+ WORKING_DIRECTORY "${PROJECT_BINARY_DIR}/testfiles/std"
+ )
+ if ("H5DUMP-${resultfile}" MATCHES "${HDF5_DISABLE_TESTS_REGEX}")
+ set_tests_properties (H5DUMP-${resultfile} PROPERTIES DISABLED true)
+ endif ()
+ endmacro ()
+
macro (ADD_H5_TEST_N resultfile resultcode)
add_test (
NAME H5DUMP-N-${resultfile}-clear-objects
@@ -1235,25 +1269,25 @@
# tests for filters
# SZIP
- ADD_H5_TEST (tszip 0 --enable-error-stack -H -p -d szip tfilters.h5)
+ ADD_H5_COMP_TEST (tszip 0 2 --enable-error-stack -H -p -d szip tfilters.h5)
# deflate
- ADD_H5_TEST (tdeflate 0 --enable-error-stack -H -p -d deflate tfilters.h5)
+ ADD_H5_COMP_TEST (tdeflate 0 2 --enable-error-stack -H -p -d deflate tfilters.h5)
# shuffle
ADD_H5_TEST (tshuffle 0 --enable-error-stack -H -p -d shuffle tfilters.h5)
# fletcher32
- ADD_H5_TEST (tfletcher32 0 --enable-error-stack -H -p -d fletcher32 tfilters.h5)
+ ADD_H5_COMP_TEST (tfletcher32 0 0 --enable-error-stack -H -p -d fletcher32 tfilters.h5)
# nbit
- ADD_H5_TEST (tnbit 0 --enable-error-stack -H -p -d nbit tfilters.h5)
+ ADD_H5_COMP_TEST (tnbit 0 10 --enable-error-stack -H -p -d nbit tfilters.h5)
# scaleoffset
- ADD_H5_TEST (tscaleoffset 0 --enable-error-stack -H -p -d scaleoffset tfilters.h5)
+ ADD_H5_COMP_TEST (tscaleoffset 0 4 --enable-error-stack -H -p -d scaleoffset tfilters.h5)
# all
- ADD_H5_TEST (tallfilters 0 --enable-error-stack -H -p -d all tfilters.h5)
+ ADD_H5_COMP_TEST (tallfilters 0 1 --enable-error-stack -H -p -d all tfilters.h5)
# user defined
ADD_H5_TEST (tuserfilter 0 --enable-error-stack -H -p -d myfilter tfilters.h5)
diff --git a/tools/test/h5dump/expected/tallfilters.ddl b/tools/test/h5dump/expected/tallfilters.ddl
index ff2454c..43bcf6a 100644
--- a/tools/test/h5dump/expected/tallfilters.ddl
+++ b/tools/test/h5dump/expected/tallfilters.ddl
@@ -4,7 +4,7 @@ DATASET "all" {
DATASPACE SIMPLE { ( 20, 10 ) / ( 20, 10 ) }
STORAGE_LAYOUT {
CHUNKED ( 10, 5 )
- SIZE 458 (1.747:1 COMPRESSION)
+ SIZE XXXX (1.XXX:1 COMPRESSION)
}
FILTERS {
PREPROCESSING SHUFFLE
diff --git a/tools/test/h5dump/expected/tdeflate.ddl b/tools/test/h5dump/expected/tdeflate.ddl
index 9b92d0e..504d4f3 100644
--- a/tools/test/h5dump/expected/tdeflate.ddl
+++ b/tools/test/h5dump/expected/tdeflate.ddl
@@ -4,7 +4,7 @@ DATASET "deflate" {
DATASPACE SIMPLE { ( 20, 10 ) / ( 20, 10 ) }
STORAGE_LAYOUT {
CHUNKED ( 10, 5 )
- SIZE 385 (2.078:1 COMPRESSION)
+ SIZE XXXX (2.XXX:1 COMPRESSION)
}
FILTERS {
COMPRESSION DEFLATE { LEVEL 9 }
diff --git a/tools/test/h5dump/expected/tfletcher32.ddl b/tools/test/h5dump/expected/tfletcher32.ddl
index 01460e2..aafd4d4 100644
--- a/tools/test/h5dump/expected/tfletcher32.ddl
+++ b/tools/test/h5dump/expected/tfletcher32.ddl
@@ -4,7 +4,7 @@ DATASET "fletcher32" {
DATASPACE SIMPLE { ( 20, 10 ) / ( 20, 10 ) }
STORAGE_LAYOUT {
CHUNKED ( 10, 5 )
- SIZE 816 (0.980:1 COMPRESSION)
+ SIZE XXXX (0.XXX:1 COMPRESSION)
}
FILTERS {
CHECKSUM FLETCHER32
diff --git a/tools/test/h5dump/expected/tnbit.ddl b/tools/test/h5dump/expected/tnbit.ddl
index cf2ac1f..35c111f 100644
--- a/tools/test/h5dump/expected/tnbit.ddl
+++ b/tools/test/h5dump/expected/tnbit.ddl
@@ -4,7 +4,7 @@ DATASET "nbit" {
DATASPACE SIMPLE { ( 20, 10 ) / ( 20, 10 ) }
STORAGE_LAYOUT {
CHUNKED ( 10, 5 )
- SIZE 76 (10.526:1 COMPRESSION)
+ SIZE XXXX (10.XXX:1 COMPRESSION)
}
FILTERS {
COMPRESSION NBIT
diff --git a/tools/test/h5dump/expected/tscaleoffset.ddl b/tools/test/h5dump/expected/tscaleoffset.ddl
index a039736..ebff6c1 100644
--- a/tools/test/h5dump/expected/tscaleoffset.ddl
+++ b/tools/test/h5dump/expected/tscaleoffset.ddl
@@ -4,7 +4,7 @@ DATASET "scaleoffset" {
DATASPACE SIMPLE { ( 20, 10 ) / ( 20, 10 ) }
STORAGE_LAYOUT {
CHUNKED ( 10, 5 )
- SIZE 188 (4.255:1 COMPRESSION)
+ SIZE XXXX (4.XXX:1 COMPRESSION)
}
FILTERS {
COMPRESSION SCALEOFFSET { MIN BITS 2 }
diff --git a/tools/test/h5dump/expected/tszip.ddl b/tools/test/h5dump/expected/tszip.ddl
index 06e2259..3f04cf7 100644
--- a/tools/test/h5dump/expected/tszip.ddl
+++ b/tools/test/h5dump/expected/tszip.ddl
@@ -4,7 +4,7 @@ DATASET "szip" {
DATASPACE SIMPLE { ( 20, 10 ) / ( 20, 10 ) }
STORAGE_LAYOUT {
CHUNKED ( 10, 5 )
- SIZE 372 (2.151:1 COMPRESSION)
+ SIZE XXXX (2.XXX:1 COMPRESSION)
}
FILTERS {
COMPRESSION SZIP {
diff --git a/tools/test/h5dump/testh5dump.sh.in b/tools/test/h5dump/testh5dump.sh.in
index fdeb17d..4734865 100644
--- a/tools/test/h5dump/testh5dump.sh.in
+++ b/tools/test/h5dump/testh5dump.sh.in
@@ -537,6 +537,69 @@ TOOLTEST() {
}
+# same as TOOLTEST but masks out the compression values
+TOOLTESTC() {
+ # check if caseless compare and diff requested
+ if [ "$1" = ignorecase ]; then
+ caseless="-i"
+ # replace cmp with diff which runs much longer.
+ xCMP="$DIFF -i"
+ shift
+ else
+ caseless=""
+ # stick with faster cmp if ignorecase is not requested.
+ xCMP="$CMP"
+ fi
+
+ txttype=$1
+ expect="$TESTDIR/$2"
+ actual="$TESTDIR/`basename $2 .ddl`.out"
+ actual_err="$TESTDIR/`basename $2 .ddl`.err"
+ actual_sav=${actual}-sav
+ actual_err_sav=${actual_err}-sav
+ shift
+ 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
+
+ tmp_file=/tmp/h5test_tmp_$$
+ cp $actual $tmp_file
+ sed -e 's/SIZE [0-9]* ('"$txttype"'\.[0-9][0-9][0-9]:1 COMPRESSION)/SIZE XXXX ('"$txttype"'.XXX:1 COMPRESSION)/' \
+ < $tmp_file > $actual
+ rm -f $tmp_file
+
+ if [ ! -f $expect ]; then
+ # Create the expect file if it doesn't yet exist.
+ echo " CREATED"
+ cp $actual $expect
+ echo " Expected result (*.ddl) missing"
+ nerrors="`expr $nerrors + 1`"
+ elif $xCMP $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 $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
@@ -1355,19 +1418,19 @@ TOOLTEST texceedsubblock.ddl --enable-error-stack -d 1d -k 1,3 taindices.h5
# tests for filters
# SZIP
-TOOLTEST tszip.ddl --enable-error-stack -H -p -d szip tfilters.h5
+TOOLTESTC 2 tszip.ddl --enable-error-stack -H -p -d szip tfilters.h5
# deflate
-TOOLTEST tdeflate.ddl --enable-error-stack -H -p -d deflate tfilters.h5
+TOOLTESTC 2 tdeflate.ddl --enable-error-stack -H -p -d deflate tfilters.h5
# shuffle
TOOLTEST tshuffle.ddl --enable-error-stack -H -p -d shuffle tfilters.h5
# fletcher32
-TOOLTEST tfletcher32.ddl --enable-error-stack -H -p -d fletcher32 tfilters.h5
+TOOLTESTC 0 tfletcher32.ddl --enable-error-stack -H -p -d fletcher32 tfilters.h5
# nbit
-TOOLTEST tnbit.ddl --enable-error-stack -H -p -d nbit tfilters.h5
+TOOLTESTC 10 tnbit.ddl --enable-error-stack -H -p -d nbit tfilters.h5
# scaleoffset
-TOOLTEST tscaleoffset.ddl --enable-error-stack -H -p -d scaleoffset tfilters.h5
+TOOLTESTC 4 tscaleoffset.ddl --enable-error-stack -H -p -d scaleoffset tfilters.h5
# all
-TOOLTEST tallfilters.ddl --enable-error-stack -H -p -d all tfilters.h5
+TOOLTESTC 1 tallfilters.ddl --enable-error-stack -H -p -d all tfilters.h5
# user defined
TOOLTEST tuserfilter.ddl --enable-error-stack -H -p -d myfilter tfilters.h5