netcdf-c/nczarr_test/run_unittests.sh
Dennis Heimbigner d538cf38c2 Fix nczarr-experimental to better support CMake and find AWS libraries
The primary fix is to improve CMake build support.
Specific changes include:
* CMake: Provide a better soln to locating the AWS SDK
  libraries; the new way is the preferred method as described in
  the aws-cpp-sdk documentation.
* CMake (and Automake): allow -DENABLE_S3_SDK (default off) to suppress
  looking for AWS libraries.
* CMake: add the complete set of nczarr tests
* CMake: add EXTERNL as needed to various .h files.
* Improve support for windows drive letters in paths.
* Add nczarr and s3 flags to nc-config
* For VisualStudio X nczarr, cleanup the NAN+INFINITY handling
* Convert _MSC_VER -> _WIN32 and vice versa as needed
* NCZarr - support multiple platform paths including windows, cygwin.
  mingw, etc.
* NCZarr - sort the test outputs because different platforms
  produce directory contents in different orders.

One big change concerns netcdf-c/CMakeLists.txt and netcdf-c/configure.ac.
In the current versions, it was the case that --disable-hdf5
disabled netcdf-4 (libsrc4). With nczarr, this can no longer
be the case because nczarr requires libsrc4 even if libhdf5
is disabled. So, I modified the above files to move the
format options (HDF5, NCZarr, HDF4, etc) to a single place
near the front of the files. Now it is the case that:
* Enabling any of the formats that require libsrc4
  also does an implicit --enable-netcdf4.
* --disable-netcdf4 | --disable-netcdf-4 now becomes
  and alias for --disable-hdf5.

There are probably some bugs in this change in terms of
dependencies between format options.

Problems:
* CMake S3 support is still not working for Visual Studio
* A recent issue points out that there is work to do on handling
  UTF8 filenames, but that will be addressed in a separate fix.

Notes:
* Consider converting all of our includes/.h files to use EXTERNL
2020-07-12 12:21:56 -06:00

194 lines
3.7 KiB
Bash
Executable File

#!/bin/sh
if test "x$srcdir" = x ; then srcdir=`pwd`; fi
. ../test_common.sh
set -e
# Control which test sets are executed
# possible sets: mapnc4 json proj walk
TESTS=walk
# Functions
extfor() {
case "$1" in
nc4) zext="nz4" ;;
nz4) zext="nz4" ;;
nzf) zext="nzf" ;;
*) echo "unknown kind: $1" ; exit 1;;
esac
}
dumpmap1() {
tmp=
if test -f $1 ; then
if test -s $1 ; then
ftype=`file -b $1`
case "$ftype" in
[Aa][Ss][Cc]*) tmp=`cat $1 | tr '\r\n' ' '` ;;
data*) tmp=`hexdump -v -e '1/1 " %1x"' ./testmap.nzf/data1` ;;
*) echo fail ; exit 1 ;;
esac
fi
echo "$1 : |" "$tmp" "|" >> $2
else
echo "$1" >> $2
fi
}
dumpmap() {
case "$1" in
nz4) rm -f $3 ; ${NCDUMP} $2 > $3 ;;
nzf)
rm -f $3;
lr=`find $2 | tr '\r\n' ' '`
for f in $lr ; do dumpmap1 $f $3 ; done
;;
esac
}
deletemap() {
rm -fr $2
}
# Common
CMD="${execdir}/ut_map${ext}"
testmapcreate() {
echo ""; echo "*** Test zmap create -k $1"
extfor "$1"
tag="map"
output="test$tag.$zext"
deletemap $1 $output
# Create the test file
$CMD -k$1 -x create -o ./$output
cdl="ut_${tag}_create_${zext}.cdl"
dumpmap $zext ./$output ./$cdl
diff -wb ${srcdir}/ref_$cdl ./$cdl
# delete the test file
$CMD -k$1 -x delete -f $output
rm -f $cdl
if test -f $output; then
echo "delete did not delete $output"
exit 1
fi
# re-create the test file
$CMD -k$1 -x create -o ./$output
}
testmapmeta() {
echo ""; echo "*** Test zmap read/write meta -k $1"
extfor "$1"
tag="map"
file="test$tag.$zext"
$CMD -k$1 -x writemeta -f ./$file
cdl="ut_${tag}_writemeta_${zext}.cdl"
dumpmap $zext ./$file ./$cdl
diff -wb ${srcdir}/ref_$cdl ./$cdl
$CMD -k$1 -x writemeta2 -o ${srcdir}/$file
cdl="ut_${tag}_write2meta_${zext}.cdl"
dumpmap $zext ./$file ./$cdl
diff -wb ${srcdir}/ref_$cdl ./$cdl
output="ut_${tag}_readmeta_$zext.txt"
$CMD -k$1 -x readmeta -f $file > ${srcdir}/$output
diff -wb ${srcdir}/ref_$output ./$output
}
testmapdata() {
echo ""; echo "*** Test zmap read/write data -k $1"
extfor "$1"
tag="map"
file="test$tag.$zext"
$CMD -k$1 -x "writedata" -f ./$file
cdl="ut_${tag}_writedata_${zext}.cdl"
dumpmap $zext ./$file ./$cdl
diff -wb ${srcdir}/ref_$cdl ./$cdl
# readata is verification only
$CMD -k$1 -x readdata -f ./$file
}
testmapsearch() {
echo ""; echo "*** Test zmap search -k $1"
extfor "$1"
tag="map"
file="test$tag.$zext"
txt=ut_${tag}_search_$zext.txt
rm -f $txt
$CMD -k$1 -x "search" -f ./$file > $txt
diff -wb ${srcdir}/ref_$txt ./$txt
}
testjson() {
file="ut_json_build.txt"
rm -f $file
CMD="${execdir}/ut_json${ext}"
$CMD -x build > $file
diff -wb ${srcdir}/ref_$file ./$file
file="ut_json_parse.txt"
rm -f $file
$CMD -x parse > $file
diff -wb ${srcdir}/ref_$file ./$file
}
testproj() {
file="ut_proj.txt"
rm -f $file
CMD="${execdir}/ut_projections${ext}"
$CMD -ddim1=4 -v "int v(dim1/2)" -s "[0:4:1]" > $file
diff -wb ${srcdir}/ref_$file ./$file
}
testwalk() {
file="ut_walk.txt"
rm -f $file
CMD="${execdir}/ut_walk${ext}"
$CMD -ddim1=4 -v "int v(dim1/2)" -s "[0:4:1]" > $file
diff -wb ${srcdir}/ref_$file ./$file
}
echo ""
echo "*** Unit Testing"
for T in $TESTS ; do
case "$T" in
map)
#echo ""; echo "*** Test zmap_nz4"
#testmapcreate nz4; testmapmeta nz4; testmapdata nz4; testmapsearch nz4
echo ""; echo "*** Test zmap_nzf"
testmapcreate nzf; testmapmeta nzf; testmapdata nzf; testmapsearch nzf
;;
json)
echo ""; echo "*** Test zjson"
testjson
;;
proj)
echo ""; echo "*** Test projection computations"
echo ""; echo "*** Test 1"
testproj
;;
walk)
echo ""; echo "*** Test chunk walkings"
testwalk
;;
*) echo "Unknown test set: $T"; exit 1 ;;
esac
done
exit 0