aboutsummaryrefslogtreecommitdiffstats
path: root/testing/scripts/xstart-umls
blob: ed2662b6c7f7ff0d47922a679901cdd0bc3da818 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
#!/bin/bash
# starts the UML instances in an xterm (requires X11R6)
#
# Copyright (C) 2004  Eric Marchionni, Patrik Rayo
# Zuercher Hochschule Winterthur
#
# This program is free software; you can redistribute it and/or modify it
# under the terms of the GNU General Public License as published by the
# Free Software Foundation; either version 2 of the License, or (at your
# option) any later version.  See <http://www.fsf.org/copyleft/gpl.txt>.
#
# This program is distributed in the hope that it will be useful, but
# WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
# or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
# for more details.

DIR=`dirname $0`

source $DIR/function.sh

[ -f $DIR/../testing.conf ] || die "Configuration file 'testing.conf' not found"

source $DIR/../testing.conf

if [ "$#" -eq 0 ]
then
    HOSTS=$STRONGSWANHOSTS
else
    HOSTS=$*
fi

BOOTING_HOSTS=""
count_max=12
count=0

#position of xterm window on the desktop
x0=8
y0=8
dx=12
dy=24

for host in $HOSTS
do
    up=0

    if [ -d ~/.uml/${host} ]
    then
	pid=`cat ~/.uml/${host}/pid`
	up=`ps up $pid | wc -l`
    fi
    
    if [ $up -eq 2 ]
    then
	cecho " * Great, ${host} is already running!"
    else
	rm -rf ~/.uml/${host}
	BOOTING_HOSTS="$BOOTING_HOSTS ${host}"
	let "count_max += 12"

	UMLHOSTFS=$BUILDDIR/root-fs/gentoo-fs-${host}
	[ -f  $UMLHOSTFS ] || die "!! uml root file system '$UMLHOSTFS' not found"

	cecho-n " * Starting ${host}.."
	eval xterm -title ${host} -geometry "+${x0}+${y0}" -rightbar -sb -sl 500 -e "$UMLKERNEL \
	    umid=${host} \
	    ubda=$UMLHOSTFS \
	    \$SWITCH_${host} \
	    mem=${MEM}M con=pty con0=fd:0,fd:1" &
        cgecho "done"
        sleep 15
    fi
    let "x0+=dx"
    let "y0+=dy"
done

if [ -z "$BOOTING_HOSTS" ]
then
    exit 0
fi

cecho " * Waiting for the uml instances to finish booting"

for host in $BOOTING_HOSTS
do
    cecho-n " * Checking on $host.."

    while [ $count -lt $count_max ] && [ ! -d ~/.uml/$host ]
    do
	cecho-n "."
	sleep 5
	let "count+=1"
    done

    if [ $count -ge $count_max ]
    then
	cecho "exit"
	exit 1
    fi

    up=`uml_mconsole $host proc net/route 2> /dev/null | grep eth0 | wc -l`

    while [ $count -lt $count_max ] && [ $up -eq 0 ]
    do
	cecho-n "."
	sleep 5
	up=`uml_mconsole $host proc net/route 2> /dev/null | grep eth0 | wc -l`
	let "count+=1"
    done

    if [ $count -ge $count_max ]
    then
	cecho "exit"
	exit 1
    else
	cgecho "up"
    fi

    if [ "$host" = "alice" ]
    then
	sleep 5
	eval ipv4_${host}="`echo $HOSTNAMEIPV4 | sed -n -e "s/^.*${host},//gp" | awk -F, '{ print $1 }' | awk '{ print $1 }'`"
	ssh root@$ipv4_alice /etc/init.d/net.eth1 stop
    fi
done

cecho " * All uml instances are up now"