diff options
Diffstat (limited to 'test/testswmr.sh')
-rwxr-xr-x | test/testswmr.sh | 276 |
1 files changed, 234 insertions, 42 deletions
diff --git a/test/testswmr.sh b/test/testswmr.sh index c0d2e08..090a131 100755 --- a/test/testswmr.sh +++ b/test/testswmr.sh @@ -24,8 +24,13 @@ ############################################################################### Nreaders=5 # number of readers to launch +Nrdrs_spa=3 # number of sparse readers to launch Nrecords=200000 # number of records to write -Nsecs=5 # number of seconds per read interval +Nrecs_rem=40000 # number of times to shrink +Nrecs_spa=20000 # number of records to write in the sparse test +Nsecs_add=5 # number of seconds per read interval +Nsecs_rem=3 # number of seconds per read interval +Nsecs_addrem=8 # number of seconds per read interval nerrors=0 ############################################################################### @@ -63,49 +68,236 @@ while [ $# -gt 0 ]; do esac done -# Launch the Generator -echo launch the swmr_generator -./swmr_generator -if test $? -ne 0; then - echo generator had error - nerrors=`expr $nerrors + 1` -fi +# Loop over index types +for index_type in "-i b1" "-i ea" +do + # Try with and without compression + for compress in "" "-c 1" + do + ############################################################################### + ## Writer test - test expanding the dataset + ############################################################################### -# Launch the Writer -echo launch the swmr_writer -./swmr_writer $Nrecords & -pid_writer=$! -$DPRINT pid_writer=$pid_writer - -# Launch the Readers -n=0 -echo launch $Nreaders swmr_readers -while [ $n -lt $Nreaders ]; do - ./swmr_reader -r $n $Nsecs & - 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 - echo reader had error - nerrors=`expr $nerrors + 1` - fi -done + # Launch the Generator + echo launch the swmr_generator + ./swmr_generator $compress $index_type + if test $? -ne 0; then + echo generator had error + nerrors=`expr $nerrors + 1` + fi -# 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 + # Launch the Writer + echo launch the swmr_writer + ./swmr_writer $Nrecords & + pid_writer=$! + $DPRINT pid_writer=$pid_writer + + # Launch the Readers + n=0 + echo launch $Nreaders swmr_readers + pid_readers="" + while [ $n -lt $Nreaders ]; do + ./swmr_reader -r $n $Nsecs_add & + 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 + echo reader had error + nerrors=`expr $nerrors + 1` + fi + done + + # 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 + + # Check for error and exit if one occured + $DPRINT nerrors=$nerrors + if test $nerrors -ne 0 ; then + echo "SWMR tests failed with $nerrors errors." + exit 1 + fi + + ############################################################################### + ## Remove test - test shrinking the dataset + ############################################################################### + + # Launch the Remove Writer + echo launch the swmr_remove_writer + ./swmr_remove_writer $Nrecs_rem & + pid_writer=$! + $DPRINT pid_writer=$pid_writer + + # Launch the Remove Readers + n=0 + pid_readers="" + echo launch $Nreaders swmr_remove_readers + while [ $n -lt $Nreaders ]; do + ./swmr_remove_reader -r $n $Nsecs_rem & + 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 + echo reader had error + nerrors=`expr $nerrors + 1` + fi + done + + # 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 + + # Check for error and exit if one occured + $DPRINT nerrors=$nerrors + if test $nerrors -ne 0 ; then + echo "SWMR tests failed with $nerrors errors." + exit 1 + fi + + ############################################################################### + ## Add/remove test - randomly grow or shrink the dataset + ############################################################################### + + # Launch the Generator + echo launch the swmr_generator + ./swmr_generator $compress $index_type + if test $? -ne 0; then + echo generator had error + nerrors=`expr $nerrors + 1` + fi + + # Launch the Writer (not in parallel - just to rebuild the datasets) + echo launch the swmr_writer + ./swmr_writer $Nrecords + if test $? -ne 0; then + echo writer had error + nerrors=`expr $nerrors + 1` + fi + + # Launch the Add/Remove Writer + echo launch the swmr_addrem_writer + ./swmr_addrem_writer $Nrecords & + pid_writer=$! + $DPRINT pid_writer=$pid_writer + + # Launch the Add/Remove Readers + n=0 + pid_readers="" + echo launch $Nreaders swmr_remove_readers + while [ $n -lt $Nreaders ]; do + ./swmr_remove_reader -r $n $Nsecs_addrem & + 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 + echo reader had error + nerrors=`expr $nerrors + 1` + fi + done + + # 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 + + # Check for error and exit if one occured + $DPRINT nerrors=$nerrors + if test $nerrors -ne 0 ; then + echo "SWMR tests failed with $nerrors errors." + exit 1 + fi + + ############################################################################### + ## Sparse writer test - test writing to random locations in the dataset + ############################################################################### + + # Launch the Generator + echo launch the swmr_generator + ./swmr_generator $compress $index_type + if test $? -ne 0; then + echo generator had error + nerrors=`expr $nerrors + 1` + fi + + # Launch the Sparse writer + echo launch the swmr_sparse_writer + nice -n 20 ./swmr_sparse_writer -q $Nrecs_spa & + pid_writer=$! + $DPRINT pid_writer=$pid_writer + + # Launch the Sparse readers + n=0 + pid_readers="" + echo launch $Nrdrs_spa swmr_sparse_readers + while [ $n -lt $Nrdrs_spa ]; do + ./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 + + # Collect exit code of the readers + for xpid in $pid_readers; do + $DPRINT checked reader $xpid + wait $xpid + if test $? -ne 0; then + echo reader had error + nerrors=`expr $nerrors + 1` + fi + done + + # Check for error and exit if one occured + $DPRINT nerrors=$nerrors + if test $nerrors -ne 0 ; then + echo "SWMR tests failed with $nerrors errors." + exit 1 + fi + done +done ############################################################################### ## Report and exit |