SecureValueRecovery/service/test/test_loop
Jeffrey Griffin e8ca5ddb7f Big Bang
2019-12-19 11:09:53 -08:00

82 lines
2.1 KiB
Bash
Executable File

#!/bin/bash
TIMEOUT=${TIMEOUT:=5400}
function dead_procs {
for pid in `pidof $1`; do
if cut -d' ' -f3 < /proc/$pid/stat | grep -vq Z; then
echo "Stale $1 processes are running!" >&2
exit 99
fi
done
}
dead_procs kbupd
dead_procs kbuptlsd
if sudo iptables -L -n | grep -q ^DROP; then
echo "Stale iptables OUTPUT rule" >&2
exit 98
fi
if [ -z "$IAS_SPID" ]; then
echo "run: . ./env" >&2
exit 97
fi
our_pid=$$
function timeout {
echo Test run took longer than $TIMEOUT seconds! >&2
kill -s TERM %2
}
trap timeout ALRM
function finish {
kill %2 >/dev/null 2>&1
kill %1 >/dev/null 2>&1
}
trap finish EXIT
SKIP_ERRO="bad client reply:"
#XXX Some (all?) of the lines below here should be fixed by reducing the log level in the enclave.
SKIP_ERRO="${SKIP_ERRO}|request canceled by enclave"
SKIP_ERRO="${SKIP_ERRO}|with requested range outside our range"
SKIP_ERRO="${SKIP_ERRO}|resume partitioning as a non-source replica"
SKIP_ERRO="${SKIP_ERRO}|error fetching revocation list from IAS"
SKIP_ERRO="${SKIP_ERRO}|error validating attestation report"
SKIP_ERRO="${SKIP_ERRO}|is now invalid at" #XXX Unclear if this is actually harmless.
SKIP_ERRO="${SKIP_ERRO}|slog-async: logger dropped messages due to channel overflow" #XXX Until fixed.
client_out=-1
i=0
while true; do
rm -rf previous2
mv previous previous2 2>/dev/null
mkdir -p previous
rm -f previous/*
mv *.log previous 2>/dev/null
date
( sleep $TIMEOUT; kill -s ALRM $our_pid ) &
./client_test.py $* >out.log 2>&1 </dev/null &
if ! wait %2; then break; fi
kill -s ALRM %1 >/dev/null 2>&1
wait %1 >/dev/null 2>&1
i=$((i+1))
echo $i `wc -l *.log | awk '{print $1,$2}' | tr '\n' ' ' | sed 's/[.]log//g' | sed 's/up//g' | tr -d '-'`
if egrep -q '(ERROR|FAILED|Traceback)' out.log; then
echo "Error in out.log!" >&2
break
fi
if ! tail -n1 out.log | grep -q '^OK$'; then
echo "Tests failed" >&2
break
fi
if [ `grep ERRO *.log | egrep -v "$SKIP_ERRO" | wc -l` -gt 0 ]; then
echo "Unexpected ERRO in logs" >&2
break
fi
done
date