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