1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151
|
#!/bin/sh
if [ -d "../Debug" ]; then
BIN="../Debug"
else
BIN=".."
fi
# for linux, ../Debug may exist to hold a debug copy of the
# O2 library, but we need to indicate BIN is .. to find tests
if [ `uname` == 'Linux' ]; then
BIN=".."
fi
# runtest testname - runs testname, saving output in output.txt,
# searches output.txt for single full line containing "DONE",
# returns status=0 if DONE was found (indicating success), or
# else status=-1 (indicating failure).
runtest(){
printf "%30s: " "$1"
$BIN/$1 > output.txt
if grep -Fxq "DONE" output.txt
then
echo "PASS"
status=0
else
status=-1
fi
}
rundouble(){
printf "%30s: " "$1+$3"
./regression_run_two.sh "$BIN/$1" "$BIN/$3" &>misc.txt 2>&1
if grep -Fxq "$2" output.txt
then
if grep -Fxq "$4" output2.txt
then
echo "PASS"
status=0
else
echo "FAIL"
status=-1
fi
else
echo "FAIL"
status=-1
fi
}
# the while loop never iterates, it is here to make "break"
# into a kind of "goto error" when an error is encountered
while true; do
errorflag=1
echo "Running regression tests for O2 ..."
runtest "dispatchtest"
if [ $status == -1 ]; then break; fi
runtest "typestest"
if [ $status == -1 ]; then break; fi
runtest "coercetest"
if [ $status == -1 ]; then break; fi
runtest "longtest"
if [ $status == -1 ]; then break; fi
runtest "arraytest"
if [ $status == -1 ]; then break; fi
runtest "bundletest"
if [ $status == -1 ]; then break; fi
rundouble "statusserver" "SERVER DONE" "statusclient" "CLIENT DONE"
if [ $status == -1 ]; then break; fi
rundouble "clockmaster" "CLOCKMASTER DONE" "clockslave" "CLOCKSLAVE DONE"
if [ $status == -1 ]; then break; fi
rundouble "o2client" "CLIENT DONE" "o2server" "SERVER DONE"
if [ $status == -1 ]; then break; fi
rundouble "oscsendtest u" "OSCSEND DONE" "oscrecvtest u" "OSCRECV DONE"
if [ $status == -1 ]; then break; fi
rundouble "oscsendtest u" "OSCSEND DONE" "oscanytest u" "OSCANY DONE"
if [ $status == -1 ]; then break; fi
rundouble "oscsendtest" "OSCSEND DONE" "oscrecvtest" "OSCRECV DONE"
if [ $status == -1 ]; then break; fi
rundouble "tcpclient" "CLIENT DONE" "tcpserver" "SERVER DONE"
if [ $status == -1 ]; then break; fi
rundouble "oscbndlsend u" "OSCSEND DONE" "oscbndlrecv u" "OSCRECV DONE"
if [ $status == -1 ]; then break; fi
rundouble "oscbndlsend" "OSCSEND DONE" "oscbndlrecv" "OSCRECV DONE"
if [ $status == -1 ]; then break; fi
# tests for compatibility with liblo are run only if the binaries were built
# In CMake, set BUILD_TESTS_WITH_LIBLO to create the binaries
if [ -f "$BIN/lo_oscrecv" ]; then
rundouble "oscsendtest Mu" "OSCSEND DONE" "lo_oscrecv u" "OSCRECV DONE"
if [ $status == -1 ]; then break; fi
rundouble "oscsendtest M" "OSCSEND DONE" "lo_oscrecv" "OSCRECV DONE"
if [ $status == -1 ]; then break; fi
fi
if [ -f "$BIN/lo_oscsend" ]; then
rundouble "lo_oscsend u" "OSCSEND DONE" "oscrecvtest u" "OSCRECV DONE"
if [ $status == -1 ]; then break; fi
rundouble "lo_oscsend" "OSCSEND DONE" "oscrecvtest" "OSCRECV DONE"
if [ $status == -1 ]; then break; fi
fi
if [ -f "$BIN/lo_bndlsend" ]; then
rundouble "lo_bndlsend u" "OSCSEND DONE" "oscbndlrecv u" "OSCRECV DONE"
if [ $status == -1 ]; then break; fi
rundouble "lo_bndlsend" "OSCSEND DONE" "oscbndlrecv" "OSCRECV DONE"
if [ $status == -1 ]; then break; fi
fi
if [ -f "$BIN/lo_bndlrecv" ]; then
rundouble "oscbndlsend Mu" "OSCSEND DONE" "lo_bndlrecv u" "OSCRECV DONE"
if [ $status == -1 ]; then break; fi
rundouble "oscbndlsend M" "OSCSEND DONE" "lo_bndlrecv" "OSCRECV DONE"
if [ $status == -1 ]; then break; fi
fi
# exit with no errors
errorflag=0
break
done
if [ "$errorflag" == 1 ]
then
echo "ERROR: exiting regression tests because a test failed."
echo " See output.txt (and possibly output2.txt) for "
echo " output from the failing test(s)."
else
echo "**** All O2 regression tests PASSED."
fi
|