Support VNC=1 to automatically start up a vnc viewer.
[grml-unittests.git] / framework.sh
1 #!/bin/zsh
2
3 TIMEOUT_TIME=60
4 export URL_PREFIX=http://10.0.2.2
5 BAILOUT_CMD=""
6
7
8 timeout_handler() {
9     wget -q --post-data="Timeout" -O /dev/null http://localhost:$STATUS_PORT//FAIL
10     bailout
11 }
12
13 bailout() {
14     eval $BAILOUT_CMD
15     kill -9 $GATLING_PID $KVM_PID $SERVER_PID $TIMEOUT_PID $$ 2>/dev/null
16 }
17
18 run_test()
19 {
20     python -m SimpleHTTPServer $COMMON_PORT >/dev/null 2>&1 &
21     GATLING_PID=$!
22     kvm -kernel "$KERNEL" -initrd "$INITRD" -append "$CMDLINE"  -vnc :0 -cdrom "$CDROM" -boot d $KVM_PARAMS &
23     KVM_PID=$!
24     $SERVER_STATUS -p $STATUS_PORT -t "$TEST_NAME" &
25     SERVER_PID=$!
26     if [ -n "$VNC" -a -n "$VNCVIEWER" ] ; then
27         while $VNCSTATUS; do
28           VNCSTATUS=true
29           sleep 1
30           if lsof -i -n | grep ':5900' ; then
31             $VNCVIEWER localhost &
32             VNCSTATUS=false
33           fi
34         done
35     fi
36 }
37
38 timeout()
39 {
40     ( sleep $TIMEOUT_TIME ; kill -16 $$; )2>/dev/null &
41     TIMEOUT_PID=$!
42 }
43
44 trap timeout_handler 16
45 trap bailout QUIT INT EXIT
46
47 COMMON_PORT=0
48 STATUS_PORT=0
49
50 # $RANDOM is not set in dash, make sure a user who doesn't use
51 # something like /bin/zsh in his test scripts doesn't get obscure
52 # shell error messages
53 if [ -z "$RANDOM" ] ; then
54     echo "Variable \$RANDOM not set, can not choose random port. Exiting.">&2
55     bailout
56 fi
57
58 while [ $COMMON_PORT -lt 1024 ] || [  $STATUS_PORT -lt 1024 ] ; do
59     COMMON_PORT=$RANDOM
60     STATUS_PORT=$RANDOM
61 done