lod plugins for scepclient
[strongswan.git] / testing / scripts / xstart-umls
1 #!/bin/bash
2 # starts the UML instances in an xterm (requires X11R6)
3 #
4 # Copyright (C) 2004  Eric Marchionni, Patrik Rayo
5 # Zuercher Hochschule Winterthur
6 #
7 # This program is free software; you can redistribute it and/or modify it
8 # under the terms of the GNU General Public License as published by the
9 # Free Software Foundation; either version 2 of the License, or (at your
10 # option) any later version.  See <http://www.fsf.org/copyleft/gpl.txt>.
11 #
12 # This program is distributed in the hope that it will be useful, but
13 # WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
14 # or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
15 # for more details.
16
17 DIR=`dirname $0`
18
19 source $DIR/function.sh
20
21 [ -f $DIR/../testing.conf ] || die "Configuration file 'testing.conf' not found"
22
23 source $DIR/../testing.conf
24
25 if [ "$#" -eq 0 ]
26 then
27     HOSTS=$STRONGSWANHOSTS
28 else
29     HOSTS=$*
30 fi
31
32 BOOTING_HOSTS=""
33 count_max=12
34 count=0
35
36 #position of xterm window on the desktop
37 x0=8
38 y0=8
39 dx=12
40 dy=24
41
42 for host in $HOSTS
43 do
44     up=0
45
46     if [ -d ~/.uml/${host} ]
47     then
48         pid=`cat ~/.uml/${host}/pid`
49         up=`ps up $pid | wc -l`
50     fi
51     
52     if [ $up -eq 2 ]
53     then
54         cecho " * Great, ${host} is already running!"
55     else
56         rm -rf ~/.uml/${host}
57         BOOTING_HOSTS="$BOOTING_HOSTS ${host}"
58         let "count_max += 12"
59
60         UMLHOSTFS=$BUILDDIR/root-fs/gentoo-fs-${host}
61         [ -f  $UMLHOSTFS ] || die "!! uml root file system '$UMLHOSTFS' not found"
62
63         cecho-n " * Starting ${host}.."
64         eval xterm -title ${host} -geometry "+${x0}+${y0}" -rightbar -sb -sl 500 -e "$UMLKERNEL \
65             umid=${host} \
66             ubda=$UMLHOSTFS \
67             \$SWITCH_${host} \
68             mem=${MEM}M con=pty con0=fd:0,fd:1" &
69         cgecho "done"
70     fi
71     let "x0+=dx"
72     let "y0+=dy"
73     sleep 15
74 done
75
76 if [ -z "$BOOTING_HOSTS" ]
77 then
78     exit 0
79 fi
80
81 cecho " * Waiting for the uml instances to finish booting"
82
83 for host in $BOOTING_HOSTS
84 do
85     cecho-n " * Checking on $host.."
86
87     while [ $count -lt $count_max ] && [ ! -d ~/.uml/$host ]
88     do
89         cecho-n "."
90         sleep 5
91         let "count+=1"
92     done
93
94     if [ $count -ge $count_max ]
95     then
96         cecho "exit"
97         exit 1
98     fi
99
100     up=`uml_mconsole $host proc net/route 2> /dev/null | grep eth0 | wc -l`
101
102     while [ $count -lt $count_max ] && [ $up -eq 0 ]
103     do
104         cecho-n "."
105         sleep 5
106         up=`uml_mconsole $host proc net/route 2> /dev/null | grep eth0 | wc -l`
107         let "count+=1"
108     done
109
110     if [ $count -ge $count_max ]
111     then
112         cecho "exit"
113         exit 1
114     else
115         cgecho "up"
116     fi
117
118     if [ "$host" = "alice" ]
119     then
120         sleep 5
121         eval ipv4_${host}="`echo $HOSTNAMEIPV4 | sed -n -e "s/^.*${host},//gp" | awk -F, '{ print $1 }' | awk '{ print $1 }'`"
122         ssh root@$ipv4_alice /etc/init.d/net.eth1 stop
123     fi
124 done
125
126 cecho " * All uml instances are up now"