xref: /minix3/minix/commands/swifi/tests/run_t2 (revision c58da9fbc35f86051ff0a75e6dd91e937d83cfff)
1875abb87SDavid van Moolenbroek#!/bin/sh
2875abb87SDavid van Moolenbroek
3875abb87SDavid van MoolenbroekLABEL=dp8390
4875abb87SDavid van MoolenbroekEXEDIR=/service/dp8390
5875abb87SDavid van MoolenbroekEXE=$EXEDIR/$LABEL
6875abb87SDavid van MoolenbroekDAYTIME_HOST=jetsam.cs.vu.nl
7875abb87SDavid van MoolenbroekFAULTS_PER_BLOCK=1
8875abb87SDavid van Moolenbroek
9875abb87SDavid van Moolenbroek:>log
10875abb87SDavid van Moolenbroek
11875abb87SDavid van Moolenbroekfault_blocks=0
12875abb87SDavid van Moolenbroekconnect_blocks=0
13875abb87SDavid van Moolenbroekdont_connect=0
14875abb87SDavid van Moolenbroek
15875abb87SDavid van Moolenbroekdo_one()
16875abb87SDavid van Moolenbroek{
17875abb87SDavid van Moolenbroek	# $1 = test-nr, $2 = count, $3 = seed
18875abb87SDavid van Moolenbroek	pid=''
19875abb87SDavid van Moolenbroek	while [ X"$pid" = X ]
20875abb87SDavid van Moolenbroek	do
21875abb87SDavid van Moolenbroek		pid=`ps ax | grep $LABEL | grep -v grep |
22875abb87SDavid van Moolenbroek			sed 's,^[ 	]*,,;s,[ 	].*,,'`
23875abb87SDavid van Moolenbroek		if [ X"$pid" != X ]
24875abb87SDavid van Moolenbroek		then
25875abb87SDavid van Moolenbroek			break
26875abb87SDavid van Moolenbroek		fi
27875abb87SDavid van Moolenbroek		sleep 10
28875abb87SDavid van Moolenbroek	done
29875abb87SDavid van Moolenbroek	echo pid = $pid
30875abb87SDavid van Moolenbroek	swifi -f $EXE $pid $1 $2 $3 >/tmp/out
31875abb87SDavid van Moolenbroek	sleep 1
32875abb87SDavid van Moolenbroek	fault_blocks=`expr $fault_blocks + 1`
33875abb87SDavid van Moolenbroek	if kill -0 $pid
34875abb87SDavid van Moolenbroek	then
35875abb87SDavid van Moolenbroek		if [ $dont_connect -eq 0 ]
36875abb87SDavid van Moolenbroek		then
37875abb87SDavid van Moolenbroek			if ./socket -t 10 $DAYTIME_HOST daytime < /dev/null
38875abb87SDavid van Moolenbroek			then
39875abb87SDavid van Moolenbroek				connect_blocks=`expr $connect_blocks + 1`
40875abb87SDavid van Moolenbroek			else
41875abb87SDavid van Moolenbroek				dont_connect=1
42875abb87SDavid van Moolenbroek			fi
43875abb87SDavid van Moolenbroek		fi
44875abb87SDavid van Moolenbroek		echo "driver failed to die, params: test $1, count $2, seed $3"
45875abb87SDavid van Moolenbroek	else
46875abb87SDavid van Moolenbroek		connect_blocks=`expr $connect_blocks + 1`
47875abb87SDavid van Moolenbroek		echo "driver crashed after $fault_blocks blocks"
48875abb87SDavid van Moolenbroek		echo "driver failed to connect after $connect_blocks blocks"
49875abb87SDavid van Moolenbroek		fault_blocks=0
50875abb87SDavid van Moolenbroek		connect_blocks=0
51875abb87SDavid van Moolenbroek		dont_connect=0
52875abb87SDavid van Moolenbroek	fi
53875abb87SDavid van Moolenbroek}
54875abb87SDavid van Moolenbroek
55875abb87SDavid van Moolenbroekone_round()
56875abb87SDavid van Moolenbroek{
57875abb87SDavid van Moolenbroek	# $1 = count, $2 = seed
58875abb87SDavid van Moolenbroek	count=$1
59875abb87SDavid van Moolenbroek	seed=$2
60875abb87SDavid van Moolenbroek	echo "Seed: $seed" >> log
61875abb87SDavid van Moolenbroek	sync
62875abb87SDavid van Moolenbroek	do_one 6 $count $seed	# Source fault
63875abb87SDavid van Moolenbroek	do_one 5 $count $seed	# Destination fault
64875abb87SDavid van Moolenbroek	do_one 8 $count $seed	# Pointer fault
65875abb87SDavid van Moolenbroek	do_one 14 $count $seed	# Interface fault
66875abb87SDavid van Moolenbroek	do_one 12 $count $seed	# Loop fault
67875abb87SDavid van Moolenbroek	do_one 0 $count $seed	# Text fault
68875abb87SDavid van Moolenbroek	do_one 4 $count $seed	# Nop fault
69875abb87SDavid van Moolenbroek}
70875abb87SDavid van Moolenbroek
71875abb87SDavid van Moolenbroekusage()
72875abb87SDavid van Moolenbroek{
73875abb87SDavid van Moolenbroek	echo "Usage: run_t2 <count> <type> <seed>" >&2
74875abb87SDavid van Moolenbroek	echo \
75875abb87SDavid van Moolenbroek"Valid types are: source destination pointer interface loop text nop random" >&2
76875abb87SDavid van Moolenbroek	exit 1
77875abb87SDavid van Moolenbroek}
78875abb87SDavid van Moolenbroek
79875abb87SDavid van Moolenbroekselect_from()
80875abb87SDavid van Moolenbroek{
81875abb87SDavid van Moolenbroek	# $1 = index, $2... = choices
82875abb87SDavid van Moolenbroek	index="$1"
83875abb87SDavid van Moolenbroek	index=`expr "$index" + 1`
84875abb87SDavid van Moolenbroek	shift
85875abb87SDavid van Moolenbroek	v=`eval echo '$'$index`
86875abb87SDavid van Moolenbroek	echo "$v"
87875abb87SDavid van Moolenbroek}
88875abb87SDavid van Moolenbroek
89875abb87SDavid van Moolenbroekrandom_type()
90875abb87SDavid van Moolenbroek{
91875abb87SDavid van Moolenbroek	# $1 = seed
92875abb87SDavid van Moolenbroek	seed="$1"
93875abb87SDavid van Moolenbroek	r=`./rnd -m 7 -s "$seed"`
94875abb87SDavid van Moolenbroek	select_from "$r" 6 5 8 14 12 0 4
95875abb87SDavid van Moolenbroek}
96875abb87SDavid van Moolenbroek
97875abb87SDavid van Moolenbroekif [ $# -ne 3 ]; then usage; fi
98875abb87SDavid van Moolenbroekcount="$1"
99875abb87SDavid van Moolenbroektype="$2"
100875abb87SDavid van Moolenbroekseed="$3"
101875abb87SDavid van Moolenbroek
102875abb87SDavid van Moolenbroekcase "$type" in
103875abb87SDavid van Moolenbroeksource)		type_arg=6
104875abb87SDavid van Moolenbroek;;
105875abb87SDavid van Moolenbroekdestination)	type_arg=5
106875abb87SDavid van Moolenbroek;;
107875abb87SDavid van Moolenbroekpointer)	type_arg=8
108875abb87SDavid van Moolenbroek;;
109875abb87SDavid van Moolenbroekinterface)	type_arg=14
110875abb87SDavid van Moolenbroek;;
111875abb87SDavid van Moolenbroekloop)		type_arg=12
112875abb87SDavid van Moolenbroek;;
113875abb87SDavid van Moolenbroektext)		type_arg=0
114875abb87SDavid van Moolenbroek;;
115875abb87SDavid van Moolenbroeknop)		type_arg=4
116875abb87SDavid van Moolenbroek;;
117875abb87SDavid van Moolenbroekrandom)
118875abb87SDavid van Moolenbroek;;
119875abb87SDavid van Moolenbroek*)
120875abb87SDavid van Moolenbroek	usage
121875abb87SDavid van Moolenbroekesac
122875abb87SDavid van Moolenbroek
123875abb87SDavid van Moolenbroek# Start our own driver.
124*c58da9fbSDavid van Moolenbroekminix-service down $LABEL
125875abb87SDavid van Moolenbroeksleep 10	# Allow driver to die
126*c58da9fbSDavid van Moolenbroekminix-service up $EXE -script `pwd`/rs.restart_imm -period 3HZ
127875abb87SDavid van Moolenbroek
128875abb87SDavid van Moolenbroeki=0
129875abb87SDavid van Moolenbroekwhile [ $i -lt "$count" ]
130875abb87SDavid van Moolenbroekdo
131875abb87SDavid van Moolenbroek	echo "Seed: $seed"
132875abb87SDavid van Moolenbroek	if [ "$type" = "random" ]
133875abb87SDavid van Moolenbroek	then
134875abb87SDavid van Moolenbroek		type_arg=`random_type $seed`
135875abb87SDavid van Moolenbroek	fi
136875abb87SDavid van Moolenbroek	do_one "$type_arg" $FAULTS_PER_BLOCK $seed
137875abb87SDavid van Moolenbroek	i=`expr $i + 1`
138875abb87SDavid van Moolenbroek	seed=`expr $seed + 1`
139875abb87SDavid van Moolenbroekdone
140875abb87SDavid van Moolenbroek
141875abb87SDavid van Moolenbroekconnect_blocks=`expr $connect_blocks + 1`
142875abb87SDavid van Moolenbroekecho "driver crashed after $fault_blocks blocks"
143875abb87SDavid van Moolenbroekecho "driver failed to connect after $connect_blocks blocks"
144875abb87SDavid van Moolenbroek
145875abb87SDavid van Moolenbroek# Restart the driver
146*c58da9fbSDavid van Moolenbroekminix-service refresh $LABEL
147