mirror of
https://github.com/HDFGroup/hdf5.git
synced 2025-03-01 16:28:09 +08:00
New feature Solution: Testing of Extendable Dataset support in h5toh4 converter when extendable dimension is first dimension. Platform tested: Solaris2.5
265 lines
4.7 KiB
Bash
265 lines
4.7 KiB
Bash
#! /bin/sh
|
|
# Test scripts for h5toh4.
|
|
# See the USAGE function for command usage.
|
|
|
|
|
|
# Definitions of commands and variables
|
|
CMD='../h5toh4'
|
|
RM='rm -f'
|
|
SED='sed '
|
|
H4DUMP='hdp'
|
|
DIFF=diff
|
|
CMP='cmp -s'
|
|
nerrors=0 # number of errors (0)
|
|
quitonerr=0 # quit on error (not)
|
|
noclean=0 # no cleaning temp. files (yes)
|
|
only="" # dumper sub-command to test only
|
|
except="" # dumper sub-command to test not
|
|
|
|
|
|
# Definitions of functions/shorthands
|
|
#
|
|
|
|
# Print Usage of the command
|
|
USAGE()
|
|
{
|
|
echo "Usage: $0 [-help] [-noclean] [-quit] [-except <command>] [-only <command>]"
|
|
echo " -help: display help information"
|
|
echo " -noclean: do not clean away temporary files"
|
|
echo " -quit: quit immediately if any test fails"
|
|
echo " -except: skip one specific command"
|
|
echo " -only: test one specific command"
|
|
echo "<command> can be one of {list, dumpsds, dumprig, dumpvd, dumpvg, dumpgr}"
|
|
}
|
|
|
|
# Print message with formats according to message level ($1)
|
|
MESG()
|
|
{
|
|
level=$1
|
|
shift
|
|
case $level in
|
|
0)
|
|
echo '============================='
|
|
echo $*
|
|
echo '============================='
|
|
;;
|
|
3)
|
|
echo '-----------------------------'
|
|
echo $*
|
|
echo '-----------------------------'
|
|
;;
|
|
6)
|
|
echo "*** Arguments are $* ***"
|
|
;;
|
|
*)
|
|
echo "MESG(): Unknown level ($level)"
|
|
exit 1
|
|
;;
|
|
esac
|
|
|
|
}
|
|
|
|
|
|
# Run the test to produce an output file which is then
|
|
# compared with the expected ($1) output.
|
|
# Note that this can be used to produce the expected
|
|
# output files by replace "$output" with "$expected"
|
|
# in the run-the-test commands.
|
|
TEST()
|
|
{
|
|
# shift
|
|
# print a id banner
|
|
MESG 6 $@
|
|
# run the test
|
|
(
|
|
echo "#############################"
|
|
echo "'$CMD $@'"
|
|
echo "#############################"
|
|
cd testfiles
|
|
$CMD "$@"
|
|
cd ..
|
|
)
|
|
|
|
case "$1" in
|
|
|
|
"-m")
|
|
|
|
shift
|
|
for i in $@
|
|
do
|
|
h4file=testfiles/`echo $i | $SED -e s/\.h5/.hdf/g`
|
|
|
|
output=`echo $h4file | $SED -e s/\.hdf/.tmp/`
|
|
expected=`echo $h4file | $SED -e s/\.hdf/.dmp/`
|
|
|
|
$H4DUMP dumpvg $h4file > $output
|
|
|
|
$H4DUMP dumpvd $h4file >> $output
|
|
|
|
$H4DUMP dumpsds $h4file >> $output
|
|
|
|
|
|
$CMP $expected $output
|
|
if [ $? -ne 0 ]
|
|
then
|
|
echo $DIFF $expected $output
|
|
$DIFF $expected $output
|
|
echo " <<< FAILED >>>"
|
|
nerrors=`expr $nerrors + 1`
|
|
if [ $quitonerr -gt 0 ];
|
|
then
|
|
FINISH
|
|
fi
|
|
fi
|
|
|
|
done
|
|
|
|
;;
|
|
|
|
|
|
* )
|
|
|
|
if [ $# -eq 1 ]
|
|
then
|
|
h4file=testfiles/`echo $1 | $SED -e s/\.h5/.hdf/`
|
|
else
|
|
h4file=testfiles/$2
|
|
fi
|
|
|
|
output=`echo $h4file | $SED -e s/\.hdf/.tmp/`
|
|
expected=`echo $h4file | $SED -e s/\.hdf/.dmp/`
|
|
|
|
$H4DUMP dumpvg $h4file > $output
|
|
|
|
$H4DUMP dumpvd $h4file >> $output
|
|
|
|
$H4DUMP dumpsds $h4file >> $output
|
|
|
|
$CMP $expected $output
|
|
if [ $? -ne 0 ]
|
|
then
|
|
echo $DIFF $expected $output
|
|
$DIFF $expected $output
|
|
echo " <<< FAILED >>>"
|
|
nerrors=`expr $nerrors + 1`
|
|
if [ $quitonerr -gt 0 ];
|
|
then
|
|
FINISH
|
|
fi
|
|
fi
|
|
|
|
;;
|
|
esac
|
|
|
|
# if [ $noclean -eq 0 ]
|
|
# then
|
|
# $RM $output
|
|
# fi
|
|
}
|
|
|
|
|
|
# Report the result and exit
|
|
FINISH()
|
|
{
|
|
if [ $nerrors -eq 0 ]
|
|
then
|
|
MESG 0 "All h5toh4 tests passed"
|
|
else
|
|
MESG 0 "h5toh4 tests failed: $nerrors"
|
|
fi
|
|
exit $nerrors
|
|
}
|
|
|
|
|
|
#===============
|
|
# Main Body
|
|
#===============
|
|
|
|
# parse arguments
|
|
while [ $# -gt 0 ]
|
|
do
|
|
case "$1" in
|
|
"-quit")
|
|
quitonerr=1
|
|
;;
|
|
"-noclean")
|
|
noclean=1
|
|
;;
|
|
"-help")
|
|
USAGE
|
|
exit 0
|
|
;;
|
|
"-only")
|
|
shift
|
|
case "$1" in
|
|
"h5toh4")
|
|
only="$1"
|
|
;;
|
|
*)
|
|
echo "Unknown command: $1"
|
|
USAGE
|
|
exit 1
|
|
;;
|
|
esac
|
|
;;
|
|
"-except")
|
|
shift
|
|
case "$1" in
|
|
"h5toh4")
|
|
except="$1"
|
|
;;
|
|
*)
|
|
echo "Unknown command: $1"
|
|
USAGE
|
|
exit 1
|
|
;;
|
|
esac
|
|
;;
|
|
* )
|
|
echo "Unknow option: $1"
|
|
USAGE
|
|
exit 1
|
|
;;
|
|
esac
|
|
shift
|
|
done
|
|
|
|
# Print a beginning banner
|
|
MESG 0 "Running h5toh4 tests"
|
|
|
|
# Test command list
|
|
TestCmd=h5toh4
|
|
TestName="Test command $TestCmd"
|
|
if [ "$except" != $TestCmd -a \( -z "$only" -o "$only" = $TestCmd \) ]
|
|
then
|
|
MESG 3 "$TestName"
|
|
$RM ./testfiles/*.hdf ./testfiles/*.tmp
|
|
TEST tgroup.h5
|
|
TEST tdset.h5
|
|
TEST tdset2.h5
|
|
TEST tattr.h5
|
|
TEST tslink.h5
|
|
TEST thlink.h5
|
|
TEST tcompound.h5
|
|
TEST tcompound2.h5
|
|
TEST tall.h5
|
|
$RM ./testfiles/*.tmp
|
|
TEST tgroup.h5 tgroup.hdf
|
|
TEST tdset.h5 tdset.hdf
|
|
TEST tdset2.h5 tdset2.hdf
|
|
TEST tattr.h5 tattr.hdf
|
|
TEST tslink.h5 tslink.hdf
|
|
TEST thlink.h5 thlink.hdf
|
|
TEST tcompound.h5 tcompound.hdf
|
|
TEST tcompound2.h5 tcompound2.hdf
|
|
TEST tall.h5 tall.hdf
|
|
$RM ./testfiles/*.hdf ./testfiles/*.tmp
|
|
TEST -m tgroup.h5 tdset.h5 tdset2.h5 tattr.h5 tslink.h5 thlink.h5 tcompound.h5 tcompound2.h5 tall.h5
|
|
$RM ./testfiles/*.hdf ./testfiles/*.tmp
|
|
else
|
|
MESG 3 "$TestName <<<SKIPPED>>>"
|
|
fi
|
|
|
|
# End of test
|
|
FINISH
|