6 echo "Usage: $0 [-p <pre-exec-cmd>] [-m <email>] -- <make test options|verify>" 1>&2
8 echo "Parameters:" 1>&2
9 echo " -p <pre-exec-cmd> - run a command before each test loop (e.g. 'git pull')" 1>&2
10 echo " -m <email> - if set, email is sent to this address on failure" 1>&2
13 echo " $0 -m <somebody@cisco.com> -- test-debug TEST=l2bd" 1>&2
14 echo " $0 -m <somebody@cisco.com> -- verify" 1>&2
21 while getopts "p:m:h" o; do
24 PRE_EXEC_CMD=${OPTARG}
27 regex="^[a-z0-9!#\$%&'*+/=?^_\`{|}~-]+(\.[a-z0-9!#$%&'*+/=?^_\`{|}~-]+)*@([a-z0-9]([a-z0-9-]*[a-z0-9])?\.)+[a-z0-9]([a-z0-9-]*[a-z0-9])?\$"
29 if [[ ! $m =~ $regex ]]
31 echo "Invalid -m parameter value: \`$m'" >&2
46 if ! echo $* | grep test >/dev/null
48 if ! echo $* | grep verify >/dev/null
50 echo "Error: command line doesn't look right - should contain \`test' or \`verify' token..." >&2
57 RUNTIME=$((NOW - START))
58 AVG=$(echo "scale=2; $RUNTIME/$COUNT" | bc)
59 OUT="*********************************************************************"
60 OUT="$OUT\n* tail -n 30 $TMP:"
61 OUT="$OUT\n*********************************************************************"
62 OUT="$OUT\n`tail -n 30 $TMP`"
63 OUT="$OUT\n*********************************************************************"
64 OUT="$OUT\n* Total runtime: ${RUNTIME}s"
65 OUT="$OUT\n* Iterations: ${COUNT}"
66 OUT="$OUT\n* Average time: ${AVG}s"
67 OUT="$OUT\n* Log file: ${TMP}"
68 OUT="$OUT\n*********************************************************************"
70 if [[ "$EMAIL" != "" && "$REASON" != "" ]]
72 SUBJECT="test loop finished ($REASON)"
73 echo -e "$OUT" | mail -s "$SUBJECT" $EMAIL
77 trap "echo Caught signal, exiting...; REASON=\"received signal\"; finish; exit -1" SIGINT SIGTERM
85 echo "Couldn't create temporary file!"
89 echo "Temporary file is $TMP"
91 echo "Command line is \`$CMD'"
98 if [[ "$PRE_EXEC_CMD" != "" ]]
100 echo "Executing \`$PRE_EXEC_CMD' before test.."
101 if ! ($PRE_EXEC_CMD 2>&1 | tee $TMP)
103 echo "\`$PRE_EXEC_CMD' failed!" >&2
104 REASON="$PRE_EXEC_CMD failed"
108 echo -n "Running test iteration #$COUNT..."
109 if ! ($CMD >$TMP 2>&1)
112 RUNTIME=$((AFTER-BEFORE))
113 echo "FAILED! (after ${RUNTIME}s)"
118 RUNTIME=$((AFTER-BEFORE))
119 echo "PASSED (after ${RUNTIME}s)"