470bdc61b5200e769e67c5dedeeaf9ad6df18924
[strongswan.git] / testing / scripts / start-umls
1 #!/bin/bash
2 # starts the UML instances with a hidden screen
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 for host in $HOSTS
37 do
38     up=0
39
40     if [ -d ~/.uml/${host} ]
41     then
42         pid=`cat ~/.uml/${host}/pid`
43         up=`ps up $pid | wc -l`
44     fi
45
46     if [ $up -eq 2 ]
47     then
48         cecho " * Great, ${host} is already running!"
49     else
50         rm -rf ~/.uml/${host}
51         BOOTING_HOSTS="$BOOTING_HOSTS ${host}"
52         let "count_max += 12"
53
54         UMLHOSTFS=$BUILDDIR/root-fs/${host}.img
55         [ -f  $UMLHOSTFS ] || die "!! uml root file system '$UMLHOSTFS' not found"
56
57         cecho-n " * Starting ${host}.."
58         eval setsid $UMLKERNEL umid=${host} ubda=$UMLHOSTFS \$SWITCH_${host} mem=${MEM}M con=null con1=xterm >>$LOGFILE 2>&1 &
59         cgecho "done"
60     fi
61 done
62
63 if [ -z "$BOOTING_HOSTS" ]
64 then
65     exit 0
66 fi
67
68 cecho " * Waiting for the uml instances to finish booting"
69
70 for host in $BOOTING_HOSTS
71 do
72     cecho-n " * Checking on $host.."
73
74     while [ $count -lt $count_max ] && [ ! -d ~/.uml/$host ]
75     do
76         cecho-n "."
77         sleep 5
78         let "count+=1"
79     done
80
81     if [ $count -ge $count_max ]
82     then
83         cecho "exit"
84         exit 1
85     fi
86
87     up=`uml_mconsole $host proc net/route 2> /dev/null | grep eth0 | wc -l`
88
89     while [ $count -lt $count_max ] && [ $up -eq 0 ]
90     do
91         cecho-n "."
92         sleep 5
93         up=`uml_mconsole $host proc net/route 2> /dev/null | grep eth0 | wc -l`
94         let "count+=1"
95     done
96
97     if [ $count -ge $count_max ]
98     then
99         cecho "exit"
100         exit 1
101     else
102         cgecho "up"
103     fi
104
105 done
106
107 cecho " * All uml instances are up now"