 50a1aef12b
			
		
	
	
		50a1aef12b
		
	
	
	
	
		
			
			This concerns all services, a.k.a drivers, filesystem drivers, network (inet, lwip, uds) servers, and the system servers. Change-Id: I626fd15c795e15af42df2d10d47fb4a703665d63
		
			
				
	
	
		
			147 lines
		
	
	
		
			2.5 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable File
		
	
	
	
	
			
		
		
	
	
			147 lines
		
	
	
		
			2.5 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable 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
 |