mirror of
https://github.com/Unidata/netcdf-c.git
synced 2025-02-23 16:59:54 +08:00
to do prefetch on either a lazy or eager basis. Lazy means that the prefetch does not occur until and unless the client actually makes a get_var request. Also repaired a problem where doing prefetch wrt a url that has a constraint will prefetch a whole variable if its constrained size is small enough, even if the underlying variable is too large to warrant prefetch.
135 lines
2.5 KiB
Bash
Executable File
135 lines
2.5 KiB
Bash
Executable File
#!/bin/sh
|
|
|
|
#set -x
|
|
quiet=0
|
|
leakcheck=0
|
|
|
|
PARAMS="[log]"
|
|
#PARAMS="${PARAMS}[fetch=memory]"
|
|
#PARAMS="${PARAMS}[show=fetch]"
|
|
|
|
OCLOGFILE=/dev/null
|
|
|
|
# Capture arguments
|
|
srcdir="$1"
|
|
builddir="$2"
|
|
mode="$3"
|
|
|
|
# Locate the testdata and expected directory
|
|
testdata3="${srcdir}/testdata3"
|
|
expected3="${srcdir}/expected3"
|
|
expected4="${srcdir}/expected4"
|
|
|
|
# get the list of test files
|
|
. ${srcdir}/tst_ncdap_shared.sh
|
|
|
|
FLAGS=
|
|
|
|
case "$mode" in
|
|
*3)
|
|
EXPECTED="$expected3"
|
|
TITLE="DAP to netCDF-3 translation"
|
|
PARAMS="${PARAMS}[cache]"
|
|
;;
|
|
*4)
|
|
EXPECTED="$expected4"
|
|
TITLE="DAP to netCDF-4 translation"
|
|
PARAMS="${PARAMS}[netcdf4][cache]"
|
|
;;
|
|
esac
|
|
|
|
case "$mode" in
|
|
file*)
|
|
TESTURL="$FILEURL"
|
|
TESTSET="$FILETESTS"
|
|
;;
|
|
dds*)
|
|
TESTURL="[noprefetch]$FILEURL"
|
|
TESTSET="$DDSTESTS"
|
|
FLAGS="-h"
|
|
;;
|
|
remote*)
|
|
TESTURL="$REMOTEURL"
|
|
TITLE="Remote $TITLE"
|
|
TESTSET="$REMOTETESTS"
|
|
;;
|
|
esac
|
|
|
|
RESULTSDIR="./results"
|
|
# Locate some tools
|
|
NCDUMP="${builddir}/ncdump/ncdump $FLAGS"
|
|
if test "x$leakcheck" = "x1" ; then
|
|
VALGRIND="valgrind -q --error-exitcode=2 --leak-check=full"
|
|
else
|
|
VALGRIND=
|
|
fi
|
|
|
|
rm -fr ${RESULTSDIR}
|
|
mkdir "${RESULTSDIR}"
|
|
|
|
passcount=0
|
|
xfailcount=0
|
|
failcount=0
|
|
|
|
echo "*** Testing $TITLE "
|
|
echo " Base URL: ${TESTURL}"
|
|
echo " Client Parameters: ${PARAMS}"
|
|
|
|
cd ${RESULTSDIR}
|
|
rm -f ./.dodsrc
|
|
echo '#DODSRC' >./.dodsrc
|
|
|
|
for x in ${TESTSET} ; do
|
|
url="${PARAMS}${TESTURL}/$x"
|
|
if test "x$quiet" = "x0" ; then echo "*** Testing: ${x} ; url=$url" ; fi
|
|
# determine if this is an xfailtest
|
|
isxfail=0
|
|
for t in ${XFAILTESTS} ; do
|
|
if test "x${t}" = "x${x}" ; then isxfail=1; fi
|
|
done
|
|
ok=1
|
|
if ${VALGRIND} ${NCDUMP} "${url}" > ${x}.dmp ; then ok=$ok; else ok=0; fi
|
|
# compare with expected
|
|
if diff -w ${EXPECTED}/${x}.dmp ${x}.dmp ; then ok=$ok; else ok=0; fi
|
|
if test "$ok" = 1 ; then
|
|
status=0 # succeed
|
|
elif test "x$isxfail" = "x0" ; then
|
|
status=1 # fail
|
|
else
|
|
status=2 # xfail
|
|
fi
|
|
|
|
case "$status" in
|
|
0)
|
|
passcount=`expr $passcount + 1`
|
|
if test "x$quiet" = "x" ; then echo "*** SUCCEED: ${x}"; fi
|
|
;;
|
|
1)
|
|
failcount=`expr $failcount + 1`
|
|
echo "*** FAIL: ${x}"
|
|
;;
|
|
2)
|
|
xfailcount=`expr $xfailcount + 1`
|
|
echo "*** XFAIL : ${x}"
|
|
;;
|
|
esac
|
|
|
|
done
|
|
|
|
rm -f ./.dodsrc
|
|
|
|
cd ..
|
|
|
|
totalcount=`expr $passcount + $failcount + $xfailcount`
|
|
okcount=`expr $passcount + $xfailcount`
|
|
|
|
echo "*** PASSED: ${okcount}/${totalcount} ; ${xfailcount} expected failures ; ${failcount} unexpected failures"
|
|
|
|
#failcount=0
|
|
if test "$failcount" -gt 0
|
|
then
|
|
exit 1
|
|
else
|
|
exit 0
|
|
fi
|