Codebase list qsslcaudit / a37fde1b-decf-41b3-ba60-c88a55557115/main tools / run-e2e-test.sh
a37fde1b-decf-41b3-ba60-c88a55557115/main

Tree @a37fde1b-decf-41b3-ba60-c88a55557115/main (Download .tar.gz)

run-e2e-test.sh @a37fde1b-decf-41b3-ba60-c88a55557115/mainraw · history · blame

#!/bin/sh -e

if [ $# -ne 2 ] ; then
	echo "Usage: $0 MODE TESTNAME" >&2
	exit 1
fi

BASEDIR=`dirname $0`
E2E_DIR=$BASEDIR/../e2e

MODE="$1"
TEST="$2"

if [ "$MODE" != "safe" -a "$MODE" != "unsafe" ] ; then
	echo "ERROR: unsupported mode '$MODE' (must be 'safe' or 'unsafe')" >&2
	exit 1
fi

SCRIPT="$E2E_DIR/$TEST.sh"

DIST=`lsb_release -sc`
REFXML="$E2E_DIR/$TEST.$MODE-$DIST.xml"
[ -f "$REFXML" ] || REFXML="$E2E_DIR/$TEST.$MODE.xml"

PID="/tmp/$TEST.pid"; export PID
XML="/tmp/$TEST.xml"; export XML
CLIENT_OUT="/tmp/$TEST.client.out"
SERVER_OUT="/tmp/$TEST.server.out"

if [ ! -f $REFXML ] ; then
	echo "$TEST: skipped (no refxml)"
	exit 0
fi

# kill old qsslcaudit instance, if any
if [ -e "$PID" ] ; then
	kill `cat $PID` || true
	sleep 1
	rm "$PID"
fi

# launch the new one
(. "$SCRIPT" && server )> "$SERVER_OUT" &

# wait 10s
for _ in `seq 20` ; do sleep .5 && [ -e "$PID" ] && break; done
if [ ! -e "$PID" ] ; then
	echo "$TEST: ERROR: PID file '$PID' has not appeared in 10s (qsslcaudit failed to start?)" >&2
	exit 2
fi

# hammer util pidfile disappears
for _ in `seq 100` ; do
	[ ! -e "$PID" ] && break
	echo ; echo ; echo "===== `date` =====" ; echo
	(. "$SCRIPT" && client) 2>&1
	sleep .5
done > "$CLIENT_OUT"
if [ -e "$PID" ] ; then
       echo "===== $SERVER_OUT ====="
       cat "$SERVER_OUT"
       echo
       echo "===== $CLIENT_OUT ====="
       cat "$CLIENT_OUT"
       echo "======================="
       echo "$TEST: ERROR: qsslcaudit is still running, after 100 client iterations" >&2
	exit 3
fi

if ! diff -b -u "$REFXML" "$XML" ; then
	echo "===== $SERVER_OUT ====="
	cat "$SERVER_OUT"
	echo
	echo "===== $CLIENT_OUT ====="
	cat "$CLIENT_OUT"
       echo "======================="
       echo "$TEST: ERROR: refxml mismatch" >&2
       exit 3
else
	rm "$XML" "$SERVER_OUT" "$CLIENT_OUT"
	echo "$TEST: ok"
fi