diff options
Diffstat (limited to 'tools/h5repack/h5repack.sh.in')
-rwxr-xr-x | tools/h5repack/h5repack.sh.in | 298 |
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 |