Make sure tests work with dash as well.
[grml-unittests.git] / framework.sh
1 #!/bin/sh
2
3 TIMEOUT_TIME=60
4 export URL_PREFIX=http://10.0.2.2
5 BAILOUT_CMD=""
6
7 timeout_handler() {
8     wget -q --post-data="Timeout" -O /dev/null http://localhost:$STATUS_PORT//FAIL
9     bailout
10 }
11
12 bailout() {
13     eval $BAILOUT_CMD
14     kill -9 $GATLING_PID $KVM_PID $SERVER_PID $TIMEOUT_PID $$ 2>/dev/null
15 }
16
17 run_test()
18 {
19     python -m SimpleHTTPServer $COMMON_PORT >/dev/null 2>&1 &
20     GATLING_PID=$!
21     kvm -kernel "$KERNEL" -initrd "$INITRD" -append "$CMDLINE"  -vnc :0 -cdrom "$CDROM" -boot d $KVM_PARAMS &
22     KVM_PID=$!
23     $SERVER_STATUS -p $STATUS_PORT -t "$TEST_NAME" &
24     SERVER_PID=$!
25 }
26 timeout()
27 {
28     ( sleep $TIMEOUT_TIME ; kill -16 $$; )2>/dev/null &
29     TIMEOUT_PID=$!
30 }
31
32 trap timeout_handler 16
33 trap bailout QUIT INT EXIT
34
35 COMMON_PORT=0
36 STATUS_PORT=0
37
38 # $RANDOM is not set in dash
39 if [ -z "$RANDOM" ] ; then
40     echo "Variable \$RANDOM not set, can not choose random port. Exiting.">&2
41     bailout
42 fi
43
44 while [ $COMMON_PORT -lt 1024 ] || [  $STATUS_PORT -lt 1024 ] ; do
45     COMMON_PORT=$RANDOM
46     STATUS_PORT=$RANDOM
47 done