#!/bin/bash -f

# construct the disk
./ct_driver -seed 10001 -RAID_type 4 -mode construct -trace RAID4:3

# Rerun the ct-driver executable as long as the return code is indicates
# error-injection. 
recovery_rc=200

RC=$recovery_rc

count=0
while [ $count -lt 100 ]
do
    count=`expr $count + 1`

    ./ct_driver -seed $count -RAID_type 4 -mode recover -num_rounds 20000 -error_prob 0.0005 
    RC=$?
    if [ $RC == $recovery_rc ] ; then 
	echo "[$count] An error-injection case"
    elif [ $RC == 0 ] ; then 
	echo "program completed normally"
    else
	echo "[$count] A bug occured"
	exit 0
    fi
done

while [ $count -lt 200 ]
do
    count=`expr $count + 1`

    ./ct_driver -seed $count -RAID_type 4 -mode recover -num_rounds 20000 -error_prob 0.003
    RC=$?
    if [ $RC == $recovery_rc ] ; then 
	echo "[$count] An error-injection case"
    elif [ $RC == 0 ] ; then 
	echo "program completed normally"
    else
	echo "[$count] A bug occured"
	exit 0
    fi
done

while [ $count -lt 300 ]
do
    count=`expr $count + 1`

    ./ct_driver -seed $count -RAID_type 4 -mode recover -num_rounds 20000 -error_prob 0.0005
    RC=$?
    if [ $RC == $recovery_rc ] ; then 
	echo "[$count] An error-injection case"
    elif [ $RC == 0 ] ; then 
	echo "program completed normally"
    else
	echo "[$count] A bug occured"
	exit 0
    fi
done

while [ $count -lt 400 ]
do
    count=`expr $count + 1`

    ./ct_driver -seed $count -RAID_type 4 -mode recover -num_rounds 20000 -error_prob 0.001
    RC=$?
    if [ $RC == $recovery_rc ] ; then 
	echo "[$count] An error-injection case"
    elif [ $RC == 0 ] ; then 
	echo "program completed normally"
    else
	echo "[$count] A bug occured"
	exit 0
    fi
done

