/minix/commands/swifi/tests/run_t2
http://www.minix3.org/ · Shell · 146 lines · 125 code · 14 blank · 7 comment · 9 complexity · 6f51728e9d72d9ea9ce7ffde47f62d3a MD5 · raw file
- #!/bin/sh
- LABEL=dp8390
- EXEDIR=/service/dp8390
- EXE=$EXEDIR/$LABEL
- DAYTIME_HOST=jetsam.cs.vu.nl
- FAULTS_PER_BLOCK=1
- :>log
- fault_blocks=0
- connect_blocks=0
- dont_connect=0
- do_one()
- {
- # $1 = test-nr, $2 = count, $3 = seed
- pid=''
- while [ X"$pid" = X ]
- do
- pid=`ps ax | grep $LABEL | grep -v grep |
- sed 's,^[ ]*,,;s,[ ].*,,'`
- if [ X"$pid" != X ]
- then
- break
- fi
- sleep 10
- done
- echo pid = $pid
- swifi -f $EXE $pid $1 $2 $3 >/tmp/out
- sleep 1
- fault_blocks=`expr $fault_blocks + 1`
- if kill -0 $pid
- then
- if [ $dont_connect -eq 0 ]
- then
- if ./socket -t 10 $DAYTIME_HOST daytime < /dev/null
- then
- connect_blocks=`expr $connect_blocks + 1`
- else
- dont_connect=1
- fi
- fi
- echo "driver failed to die, params: test $1, count $2, seed $3"
- else
- connect_blocks=`expr $connect_blocks + 1`
- echo "driver crashed after $fault_blocks blocks"
- echo "driver failed to connect after $connect_blocks blocks"
- fault_blocks=0
- connect_blocks=0
- dont_connect=0
- fi
- }
- one_round()
- {
- # $1 = count, $2 = seed
- count=$1
- seed=$2
- echo "Seed: $seed" >> log
- sync
- do_one 6 $count $seed # Source fault
- do_one 5 $count $seed # Destination fault
- do_one 8 $count $seed # Pointer fault
- do_one 14 $count $seed # Interface fault
- do_one 12 $count $seed # Loop fault
- do_one 0 $count $seed # Text fault
- do_one 4 $count $seed # Nop fault
- }
- usage()
- {
- echo "Usage: run_t2 <count> <type> <seed>" >&2
- echo \
- "Valid types are: source destination pointer interface loop text nop random" >&2
- exit 1
- }
- select_from()
- {
- # $1 = index, $2... = choices
- index="$1"
- index=`expr "$index" + 1`
- shift
- v=`eval echo '$'$index`
- echo "$v"
- }
- random_type()
- {
- # $1 = seed
- seed="$1"
- r=`./rnd -m 7 -s "$seed"`
- select_from "$r" 6 5 8 14 12 0 4
- }
- if [ $# -ne 3 ]; then usage; fi
- count="$1"
- type="$2"
- seed="$3"
- case "$type" in
- source) type_arg=6
- ;;
- destination) type_arg=5
- ;;
- pointer) type_arg=8
- ;;
- interface) type_arg=14
- ;;
- loop) type_arg=12
- ;;
- text) type_arg=0
- ;;
- nop) type_arg=4
- ;;
- random)
- ;;
- *)
- usage
- esac
- # Start our own driver.
- service down $LABEL
- sleep 10 # Allow driver to die
- service up $EXE -script `pwd`/rs.restart_imm -period 3HZ
- i=0
- while [ $i -lt "$count" ]
- do
- echo "Seed: $seed"
- if [ "$type" = "random" ]
- then
- type_arg=`random_type $seed`
- fi
- do_one "$type_arg" $FAULTS_PER_BLOCK $seed
- i=`expr $i + 1`
- seed=`expr $seed + 1`
- done
- connect_blocks=`expr $connect_blocks + 1`
- echo "driver crashed after $fault_blocks blocks"
- echo "driver failed to connect after $connect_blocks blocks"
- # Restart the driver
- service refresh $LABEL