Drop kill/rm from grml-debootstrap and grml2usb runit.sh.
[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     [ -n "$DEBUG" ] && return 0
15     eval $BAILOUT_CMD
16     kill -9 $GATLING_PID $KVM_PID $SERVER_PID $TIMEOUT_PID $$ 2>/dev/null
17 }
18
19 run_test()
20 {
21     python -m SimpleHTTPServer $COMMON_PORT >/dev/null 2>&1 &
22     GATLING_PID=$!
23     kvm -kernel "$KERNEL" -initrd "$INITRD" -append "$CMDLINE"  -vnc :0 -cdrom "$CDROM" -boot d $KVM_PARAMS &
24     KVM_PID=$!
25     $SERVER_STATUS -p $STATUS_PORT -t "$TEST_NAME" &
26     SERVER_PID=$!
27     if [ -n "$VNC" -a -n "$VNCVIEWER" ] ; then
28         while $VNCSTATUS; do
29           VNCSTATUS=true
30           sleep 1
31           if lsof -i -n | grep ':5900' ; then
32             $VNCVIEWER localhost &
33             VNCSTATUS=false
34           fi
35         done
36     fi
37 }
38
39 timeout()
40 {
41     [ -n "$DEBUG" ] && return 0
42     ( sleep $TIMEOUT_TIME ; kill -16 $$; )2>/dev/null &
43     TIMEOUT_PID=$!
44 }
45
46 trap timeout_handler 16
47 trap bailout QUIT INT EXIT
48
49 COMMON_PORT=0
50 STATUS_PORT=0
51
52 # $RANDOM is not set in dash, make sure a user who doesn't use
53 # something like /bin/zsh in his test scripts doesn't get obscure
54 # shell error messages
55 if [ -z "$RANDOM" ] ; then
56     echo "Variable \$RANDOM not set, can not choose random port. Exiting.">&2
57     bailout
58 fi
59
60 while [ $COMMON_PORT -lt 1024 ] || [  $STATUS_PORT -lt 1024 ] ; do
61     COMMON_PORT=$RANDOM
62     STATUS_PORT=$RANDOM
63 done