summaryrefslogtreecommitdiffstats
path: root/test/testvfdswmr.sh.in
diff options
context:
space:
mode:
authorDavid Young <dyoung@hdfgroup.org>2019-08-28 18:21:26 (GMT)
committerDavid Young <dyoung@hdfgroup.org>2019-08-28 18:21:26 (GMT)
commit508cfab552d844c1ea313af99b5e815e87053c7c (patch)
tree20ba128b365836841f6a56c2242c35657dbc72a0 /test/testvfdswmr.sh.in
parente178ab0e11a6d4ac8f3541549b03cfff1456b38a (diff)
downloadhdf5-508cfab552d844c1ea313af99b5e815e87053c7c.zip
hdf5-508cfab552d844c1ea313af99b5e815e87053c7c.tar.gz
hdf5-508cfab552d844c1ea313af99b5e815e87053c7c.tar.bz2
Tand the he VFD SWMR test script used `| tee` to redirect test programs'
output, then it tested $? for an error exit. $? told the error status of `tee`, though, not the test programs! So no test failures were counted, even when some tests clearly failed. I changed the test script to use a shell subroutine, `catch_out_err_and_rc`, to catch test programs' output and result code.
Diffstat (limited to 'test/testvfdswmr.sh.in')
-rw-r--r--test/testvfdswmr.sh.in135
1 files changed, 76 insertions, 59 deletions
diff --git a/test/testvfdswmr.sh.in b/test/testvfdswmr.sh.in
index 09fdb23..6cb2960 100644
--- a/test/testvfdswmr.sh.in
+++ b/test/testvfdswmr.sh.in
@@ -21,6 +21,8 @@
srcdir=@srcdir@
+. ${srcdir}/supervise.subr
+
###############################################################################
## test parameters
###############################################################################
@@ -211,7 +213,8 @@ do
# Launch the Writer
echo launch the vfd_swmr_writer
seed="" # Put -r <random seed> command here
- ./vfd_swmr_writer -o $Nrecords $seed 2>&1 |tee vfd_swmr_writer.out &
+ catch_out_err_and_rc vfd_swmr_writer \
+ ./vfd_swmr_writer -o $Nrecords $seed &
pid_writer=$!
$DPRINT pid_writer=$pid_writer
@@ -226,30 +229,32 @@ do
while [ $n -lt $Nreaders ]; do
#seed="-r ${seeds[$n]}"
seed=""
- ./vfd_swmr_reader $Nsecs_add $seed 2>&1 |tee vfd_swmr_reader.out.$n &
+ catch_out_err_and_rc vfd_swmr_reader.$n \
+ ./vfd_swmr_reader $Nsecs_add $seed &
pid_readers="$pid_readers $!"
n=`expr $n + 1`
done
$DPRINT pid_readers=$pid_readers
$IFDEBUG ps
- # Collect exit code of the readers first because they usually finish
- # before the writer.
- for xpid in $pid_readers; do
- $DPRINT checked reader $xpid
- wait $xpid
- if test $? -ne 0; then
+ # Wait for the readers and the writer to finish.
+ wait
+
+ # Collect exit codes of the readers
+ n=0
+ while [ $n -lt $Nreaders ]; do
+ if [ $(cat vfd_swmr_reader.$n.rc) -ne 0 ]; then
echo reader had error
- nerrors=`expr $nerrors + 1`
+ nerrors=$((nerrors + 1))
fi
+ n=$((n + 1))
done
# Collect exit code of the writer
$DPRINT checked writer $pid_writer
- wait $pid_writer
- if test $? -ne 0; then
+ if [ $(cat vfd_swmr_writer.rc) -ne 0 ]; then
echo writer had error
- nerrors=`expr $nerrors + 1`
+ nerrors=$((nerrors + 1))
fi
# Check for error and exit if one occured
@@ -261,8 +266,8 @@ do
fi
# Clean up output files
- rm -f vfd_swmr_writer.out
- rm -f vfd_swmr_reader.out.*
+ rm -f vfd_swmr_writer.{out,rc}
+ rm -f vfd_swmr_reader.*.{out,rc}
echo
echo "###############################################################################"
@@ -274,7 +279,8 @@ do
# Launch the Remove Writer
echo launch the vfd_swmr_remove_writer
seed="" # Put -r <random seed> command here
- ./vfd_swmr_remove_writer -o $Nrecs_rem $seed 2>&1 |tee vfd_swmr_writer.out &
+ catch_out_err_and_rc vfd_swmr_writer \
+ ./vfd_swmr_remove_writer -o $Nrecs_rem $seed &
pid_writer=$!
$DPRINT pid_writer=$pid_writer
@@ -289,30 +295,32 @@ do
while [ $n -lt $Nreaders ]; do
#seed="-r ${seeds[$n]}"
seed=""
- ./vfd_swmr_remove_reader $Nsecs_rem $seed 2>&1 |tee vfd_swmr_reader.out.$n &
+ catch_out_err_and_rc vfd_swmr_reader.$n \
+ ./vfd_swmr_remove_reader $Nsecs_rem $seed &
pid_readers="$pid_readers $!"
n=`expr $n + 1`
done
$DPRINT pid_readers=$pid_readers
$IFDEBUG ps
- # Collect exit code of the readers first because they usually finish
- # before the writer.
- for xpid in $pid_readers; do
- $DPRINT checked reader $xpid
- wait $xpid
- if test $? -ne 0; then
+ # Wait for the readers and the writer to finish.
+ wait
+
+ # Collect exit codes of the readers
+ n=0
+ while [ $n -lt $Nreaders ]; do
+ if [ $(cat vfd_swmr_reader.$n.rc) -ne 0 ]; then
echo reader had error
- nerrors=`expr $nerrors + 1`
+ nerrors=$((nerrors + 1))
fi
+ n=$((n + 1))
done
# Collect exit code of the writer
$DPRINT checked writer $pid_writer
- wait $pid_writer
- if test $? -ne 0; then
+ if [ $(cat vfd_swmr_writer.rc) -ne 0 ]; then
echo writer had error
- nerrors=`expr $nerrors + 1`
+ nerrors=$((nerrors + 1))
fi
# Check for error and exit if one occured
@@ -324,9 +332,10 @@ do
fi
# Clean up output files
- rm -f vfd_swmr_writer.out
- rm -f vfd_swmr_reader.out.*
+ rm -f vfd_swmr_writer.{out,rc}
+ rm -f vfd_swmr_reader.*.{out,rc}
+if false; then
echo
echo "###############################################################################"
echo "## Add/remove test - randomly grow or shrink the dataset"
@@ -355,7 +364,8 @@ do
# Launch the Add/Remove Writer
echo launch the vfd_swmr_addrem_writer
seed="" # Put -r <random seed> command here
- ./vfd_swmr_addrem_writer $Nrecords $seed 2>&1 |tee vfd_swmr_writer.out &
+ catch_out_err_and_rc vfd_swmr_writer \
+ ./vfd_swmr_addrem_writer $Nrecords $seed &
pid_writer=$!
$DPRINT pid_writer=$pid_writer
@@ -370,30 +380,32 @@ do
while [ $n -lt $Nreaders ]; do
#seed="-r ${seeds[$n]}"
seed=""
- ./vfd_swmr_remove_reader $Nsecs_addrem $seed 2>&1 |tee vfd_swmr_reader.out.$n &
+ catch_out_err_and_rc vfd_swmr_reader.$n \
+ ./vfd_swmr_remove_reader $Nsecs_addrem $seed &
pid_readers="$pid_readers $!"
n=`expr $n + 1`
done
$DPRINT pid_readers=$pid_readers
$IFDEBUG ps
- # Collect exit code of the readers first because they usually finish
- # before the writer.
- for xpid in $pid_readers; do
- $DPRINT checked reader $xpid
- wait $xpid
- if test $? -ne 0; then
+ # Wait for the readers and the writer to finish.
+ wait
+
+ # Collect exit codes of the readers
+ n=0
+ while [ $n -lt $Nreaders ]; do
+ if [ $(cat vfd_swmr_reader.$n.rc) -ne 0 ]; then
echo reader had error
- nerrors=`expr $nerrors + 1`
+ nerrors=$((nerrors + 1))
fi
+ n=$((n + 1))
done
# Collect exit code of the writer
$DPRINT checked writer $pid_writer
- wait $pid_writer
- if test $? -ne 0; then
+ if [ $(cat vfd_swmr_writer.rc) -ne 0 ]; then
echo writer had error
- nerrors=`expr $nerrors + 1`
+ nerrors=$((nerrors + 1))
fi
# Check for error and exit if one occured
@@ -405,9 +417,10 @@ do
fi
# Clean up output files
- rm -f vfd_swmr_writer.out
- rm -f vfd_swmr_reader.out.*
+ rm -f vfd_swmr_writer.{out,rc}
+ rm -f vfd_swmr_reader.*.{out,rc}
+fi
echo
echo "###############################################################################"
echo "## Sparse writer test - test writing to random locations in the dataset"
@@ -428,7 +441,8 @@ do
rm -f $WRITER_MESSAGE
# Launch the Sparse writer
echo launch the vfd_swmr_sparse_writer
- nice -n 20 ./vfd_swmr_sparse_writer $Nrecs_spa 2>&1 |tee vfd_swmr_writer.out &
+ catch_out_err_and_rc vfd_swmr_writer nice -n 20 \
+ ./vfd_swmr_sparse_writer $Nrecs_spa &
pid_writer=$!
$DPRINT pid_writer=$pid_writer
@@ -441,31 +455,34 @@ do
echo launch $Nrdrs_spa vfd_swmr_sparse_readers
while [ $n -lt $Nrdrs_spa ]; do
# The sparse reader spits out a LOT of data so it's set to 'quiet'
- ./vfd_swmr_sparse_reader -q $Nrecs_spa 2>&1 |tee vfd_swmr_reader.out.$n &
+ catch_out_err_and_rc vfd_swmr_reader.$n \
+ ./vfd_swmr_sparse_reader -q $Nrecs_spa &
pid_readers="$pid_readers $!"
n=`expr $n + 1`
done
$DPRINT pid_readers=$pid_readers
$IFDEBUG ps
- # Collect exit code of the writer
- $DPRINT checked writer $pid_writer
- wait $pid_writer
- if test $? -ne 0; then
- echo writer had error
- nerrors=`expr $nerrors + 1`
- fi
+ # Wait for the readers and the writer to finish.
+ wait
- # Collect exit code of the readers
- for xpid in $pid_readers; do
- $DPRINT checked reader $xpid
- wait $xpid
- if test $? -ne 0; then
+ # Collect exit codes of the readers
+ n=0
+ while [ $n -lt $Nrdrs_spa ]; do
+ if [ $(cat vfd_swmr_reader.$n.rc) -ne 0 ]; then
echo reader had error
- nerrors=`expr $nerrors + 1`
+ nerrors=$((nerrors + 1))
fi
+ n=$((n + 1))
done
+ # Collect exit code of the writer
+ $DPRINT checked writer $pid_writer
+ if [ $(cat vfd_swmr_writer.rc) -ne 0 ]; then
+ echo writer had error
+ nerrors=$((nerrors + 1))
+ fi
+
# Check for error and exit if one occured
$DPRINT nerrors=$nerrors
if test $nerrors -ne 0 ; then
@@ -475,8 +492,8 @@ do
fi
# Clean up output files
- rm -f vfd_swmr_writer.out
- rm -f vfd_swmr_reader.out.*
+ rm -f vfd_swmr_writer.{out,rc}
+ rm -f vfd_swmr_reader.*.{out,rc}
done
done