summaryrefslogtreecommitdiffstats
path: root/tools/h5repack/h5repack.sh.in
diff options
context:
space:
mode:
Diffstat (limited to 'tools/h5repack/h5repack.sh.in')
-rwxr-xr-xtools/h5repack/h5repack.sh.in298
1 files changed, 298 insertions, 0 deletions
diff --git a/tools/h5repack/h5repack.sh.in b/tools/h5repack/h5repack.sh.in
new file mode 100755
index 0000000..17c6869
--- /dev/null
+++ b/tools/h5repack/h5repack.sh.in
@@ -0,0 +1,298 @@
+#! /bin/sh
+#
+# 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://hdf.ncsa.uiuc.edu/HDF5/doc/Copyright.html. If you do not have
+# access to either file, you may request a copy from hdfhelp@ncsa.uiuc.edu.
+#
+# Tests for the h5repack tool
+
+# Determine if SZIP has the encoder available
+USE_FILTER_SZIP_ENCODER="@USE_FILTER_SZIP_ENCODER@"
+USE_FILTER_SZIP="@USE_FILTER_SZIP@"
+
+H5REPACK=h5repack # The tool name
+H5REPACK_BIN=`pwd`/$H5REPACK # The path of the tool binary
+
+H5DIFF=../h5diff/h5diff # The h5diff tool name
+H5DIFF_BIN=`pwd`/$H5DIFF # The path of the h5diff tool binary
+
+nerrors=0
+verbose=yes
+
+# The build (current) directory might be different than the source directory.
+#
+if test -z "$srcdir"; then
+ srcdir=.
+fi
+
+test -d ../testfiles || mkdir ../testfiles
+
+# 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'
+}
+
+# Print a line-line message left justified in a field of 70 characters
+# beginning with the word "Verifying".
+#
+VERIFY() {
+ SPACES=" "
+ echo "Testing h5diff output $* $SPACES" | cut -c1-70 | tr -d '\012'
+}
+
+# Print a message that a test has been skipped (because a required filter
+# was unavailable)
+SKIP() {
+ TESTING $H5REPACK $@
+ echo " -SKIP-"
+}
+
+# Call the h5diff tool
+#
+DIFFTEST()
+{
+ VERIFY $@
+ if [ "`uname -s`" = "TFLOPS O/S" ]; then
+ $RUNSERIAL $H5DIFF_BIN $@
+ else
+ $RUNSERIAL $H5DIFF_BIN "$@"
+ fi
+ RET=$?
+ if [ $RET != 0 ] ; then
+ echo "*FAILED*"
+ nerrors="`expr $nerrors + 1`"
+ else
+ echo " PASSED"
+ fi
+
+}
+
+# Call h5repack
+#
+TOOLTEST()
+{
+ # Run test.
+ # Tflops interprets "$@" as "" when no parameter is given (e.g., the
+ # case of missing file name). Changed it to use $@ till Tflops fixes it.
+ TESTING $H5REPACK $@
+
+ infile=$srcdir/../testfiles/$1
+ outfile=out.$1
+ shift
+ if [ "`uname -s`" = "TFLOPS O/S" ]; then
+ $RUNSERIAL $H5REPACK_BIN -i $infile -o $outfile $@
+ else
+ $RUNSERIAL $H5REPACK_BIN -i $infile -o $outfile "$@"
+ fi
+
+ RET=$?
+ if [ $RET != 0 ] ; then
+ echo "*FAILED*"
+ nerrors="`expr $nerrors + 1`"
+ else
+ echo " PASSED"
+ DIFFTEST $infile $outfile
+ fi
+ rm -f $outfile
+}
+
+#
+# The tests
+# We use the files generated by h5repacktst
+# Each run generates "file4.out.h5" and the tool h5diff is used to
+# compare the input and output files
+#
+
+# 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.
+# A filter value of 3 means the filter can read and write, 2
+# is read-only, 1 is write-only, and 0 is not present.
+
+# copy files
+TOOLTEST test1.h5
+TOOLTEST test3.h5
+
+
+arg="test4.h5"
+if test $USE_FILTER_SZIP_ENCODER = "yes" -o $USE_FILTER_SZIP = "no" ; then
+ TOOLTEST $arg
+else
+ SKIP $arg
+fi
+
+#TOOLTEST test5.h5
+
+# remove all filters
+TOOLTEST test4.h5 -f NONE
+
+# remove one filter
+arg="test4.h5 -f dset_gzip:NONE"
+if test $USE_FILTER_SZIP_ENCODER = "yes" -o $USE_FILTER_SZIP = "no" ; then
+ TOOLTEST $arg
+else
+ SKIP $arg
+fi
+
+# gzip
+arg="test4.h5 -f dset1:GZIP=9"
+if test $USE_FILTER_SZIP_ENCODER = "yes" -o $USE_FILTER_SZIP = "no" ; then
+ TOOLTEST $arg
+else
+ SKIP $arg
+fi
+TOOLTEST test4.h5 -f GZIP=1
+
+# szip
+arg1="test4.h5 -f dset1:SZIP=8"
+arg2="test4.h5 -f SZIP=8"
+if test $USE_FILTER_SZIP_ENCODER = "yes" -a $USE_FILTER_SZIP = "yes" ; then
+ TOOLTEST $arg1
+ TOOLTEST $arg2
+else
+ SKIP $arg1
+ SKIP $arg2
+fi
+
+# shuffle
+arg="test4.h5 -f dset1:SHUF"
+if test $USE_FILTER_SZIP_ENCODER = "yes" -o $USE_FILTER_SZIP = "no" ; then
+ TOOLTEST $arg
+else
+ SKIP $arg
+fi
+TOOLTEST test4.h5 -f SHUF
+
+# fletcher
+arg="test4.h5 -f dset1:FLET"
+if test $USE_FILTER_SZIP_ENCODER = "yes" -o $USE_FILTER_SZIP = "no" ; then
+ TOOLTEST $arg
+else
+ SKIP $arg
+fi
+TOOLTEST test4.h5 -f FLET
+
+#layout chunk
+arg1="test4.h5 -l dset1:CHUNK=20x10"
+arg2="test4.h5 -l CHUNK=20x10"
+if test $USE_FILTER_SZIP_ENCODER = "yes" -o $USE_FILTER_SZIP = "no" ; then
+ TOOLTEST $arg1
+ TOOLTEST $arg2
+else
+ SKIP $arg1
+ SKIP $arg2
+fi
+
+#layout compact
+arg1="test4.h5 -l dset1:COMPA"
+arg2="test4.h5 -l COMPA"
+if test $USE_FILTER_SZIP_ENCODER = "yes" -o $USE_FILTER_SZIP = "no" ; then
+ TOOLTEST $arg1
+ TOOLTEST $arg2
+else
+ SKIP $arg1
+ SKIP $arg2
+fi
+
+#layout contiguous
+arg1="test4.h5 -l dset1:CONTI"
+arg2="test4.h5 -l CONTI"
+if test $USE_FILTER_SZIP_ENCODER = "yes" -o $USE_FILTER_SZIP = "no" ; then
+ TOOLTEST $arg1
+ TOOLTEST $arg2
+else
+ SKIP $arg1
+ SKIP $arg2
+fi
+
+#conversions
+arg1="test4.h5 -l dset_compact:CONTI"
+arg2="test4.h5 -l dset_compact:CHUNK=2x5"
+arg3="test4.h5 -l dset_compact:COMPA"
+arg4="test4.h5 -l dset_contiguous:COMPA"
+arg5="test4.h5 -l dset_contiguous:CHUNK=3x6"
+arg6="test4.h5 -l dset_contiguous:CONTI"
+arg7="test4.h5 -l dset_chunk:COMPA"
+arg8="test4.h5 -l dset_chunk:CONTI"
+arg9="test4.h5 -l dset_chunk:CHUNK=18x13"
+if test $USE_FILTER_SZIP_ENCODER = "yes" -o $USE_FILTER_SZIP = "no" ; then
+ TOOLTEST $arg1
+ TOOLTEST $arg2
+ TOOLTEST $arg3
+ TOOLTEST $arg4
+ TOOLTEST $arg5
+ TOOLTEST $arg6
+ TOOLTEST $arg7
+ TOOLTEST $arg8
+ TOOLTEST $arg9
+else
+ SKIP $arg1
+ SKIP $arg2
+ SKIP $arg3
+ SKIP $arg4
+ SKIP $arg5
+ SKIP $arg6
+ SKIP $arg7
+ SKIP $arg8
+ SKIP $arg9
+fi
+
+#filters
+arg1="test4.h5 -f dset1:SHUF -f dset1,dset2:GZIP=6"
+arg2="test4.h5 -l dset1:CHUNK=20x10 -f dset1,dset2:SZIP=8"
+if test $USE_FILTER_SZIP_ENCODER = "yes" -a $USE_FILTER_SZIP = "yes"; then
+ TOOLTEST $arg1
+ TOOLTEST $arg2
+elif test $USE_FILTER_SZIP = "yes" ; then # SZIP has no encoder
+ SKIP $arg1
+ SKIP $arg2
+else # SZIP is absent
+ TOOLTEST $arg1
+ SKIP $arg2
+fi
+
+#filter conversions
+arg1="test4.h5 -f dset_gzip:SZIP=8"
+arg2="test4.h5 -f dset_szip:GZIP=1"
+arg3="test4.h5 -f dset_all:GZIP=1"
+if test $USE_FILTER_SZIP_ENCODER = "yes" -a $USE_FILTER_SZIP = "yes" ; then
+ TOOLTEST $arg1
+ TOOLTEST $arg2
+ TOOLTEST $arg3
+elif test $USE_FILTER_SZIP = "yes" ; then # SZIP has no encoder
+ SKIP $arg1
+ SKIP $arg2
+ SKIP $arg3
+else # SZIP is absent
+ SKIP $arg1
+ TOOLTEST $arg2
+ TOOLTEST $arg3
+fi
+
+#limit
+TOOLTEST test4.h5 -f GZIP=1 -m 1024
+
+#file
+arg="test4.h5 -e ../testfiles/h5repack_info.txt"
+if test $USE_FILTER_SZIP_ENCODER = "yes" -a $USE_FILTER_SZIP = "yes" ; then
+ TOOLTEST $arg
+else
+ SKIP $arg
+fi
+
+if test $nerrors -eq 0 ; then
+ echo "All $H5REPACK tests passed."
+fi
+
+exit $nerrors