1*29921a8fSScott Kruger 2*29921a8fSScott Kruger 3*29921a8fSScott Krugerscriptname=`basename $0` 4*29921a8fSScott Krugerrundir=${scriptname%.sh} 5*29921a8fSScott Kruger 6*29921a8fSScott Krugerif test "$PWD"!=`dirname $0`; then 7*29921a8fSScott Kruger cd `dirname $0` 8*29921a8fSScott Krugerfi 9*29921a8fSScott Krugermkdir -p ${rundir} 10*29921a8fSScott Krugercd ${rundir} 11*29921a8fSScott Kruger 12*29921a8fSScott Kruger# 13*29921a8fSScott Kruger# Method to print out general and script specific options 14*29921a8fSScott Kruger# 15*29921a8fSScott Krugerprint_usage() { 16*29921a8fSScott Kruger 17*29921a8fSScott Krugercat >&2 <<EOF 18*29921a8fSScott KrugerUsage: $0 [options] 19*29921a8fSScott Kruger 20*29921a8fSScott KrugerOPTIONS 21*29921a8fSScott Kruger -a <args> ......... Override default arguments 22*29921a8fSScott Kruger -c <cleanup> ...... Cleanup (remove generated files) 23*29921a8fSScott Kruger -e <args> ......... Add extra arguments to default 24*29921a8fSScott Kruger -h ................ help: print this message 25*29921a8fSScott Kruger -n <integer> ...... Override the number of processors to use 26*29921a8fSScott Kruger -o <output file> .. Override default output file to diff with 27*29921a8fSScott Kruger -t <testname> ..... Override test name 28*29921a8fSScott Kruger -v ................ Verbose: Print commands 29*29921a8fSScott KrugerEOF 30*29921a8fSScott Kruger 31*29921a8fSScott Kruger if declare -f extrausage > /dev/null; then extrausage; fi 32*29921a8fSScott Kruger exit $1 33*29921a8fSScott Kruger} 34*29921a8fSScott Kruger### 35*29921a8fSScott Kruger## Arguments for overriding things 36*29921a8fSScott Kruger# 37*29921a8fSScott Krugerverbose=false 38*29921a8fSScott Krugercleanup=false 39*29921a8fSScott Krugerwhile getopts "a:c:e:hn:o:t:v" arg 40*29921a8fSScott Krugerdo 41*29921a8fSScott Kruger case $arg in 42*29921a8fSScott Kruger a ) args=$OPTARG ;; 43*29921a8fSScott Kruger c ) cleanup=true ;; 44*29921a8fSScott Kruger e ) extra_args=$OPTARG ;; 45*29921a8fSScott Kruger h ) print_usage; exit ;; 46*29921a8fSScott Kruger n ) nsize=$OPTARG ;; 47*29921a8fSScott Kruger o ) output_file=$OPTARG ;; 48*29921a8fSScott Kruger t ) testname=$OPTARG ;; 49*29921a8fSScott Kruger v ) verbose=true ;; 50*29921a8fSScott Kruger *) # To take care of any extra args 51*29921a8fSScott Kruger if test -n "$OPTARG"; then 52*29921a8fSScott Kruger eval $arg=\"$OPTARG\" 53*29921a8fSScott Kruger else 54*29921a8fSScott Kruger eval $arg=found 55*29921a8fSScott Kruger fi 56*29921a8fSScott Kruger ;; 57*29921a8fSScott Kruger esac 58*29921a8fSScott Krugerdone 59*29921a8fSScott Krugershift $(( $OPTIND - 1 )) 60*29921a8fSScott Kruger 61*29921a8fSScott Krugerif test -n "$extra_args"; then 62*29921a8fSScott Kruger args="$args $extra_args" 63*29921a8fSScott Krugerfi 64*29921a8fSScott Kruger 65*29921a8fSScott Kruger# Init 66*29921a8fSScott Krugersuccess=0; failed=0; failures=""; rmfiles="" 67*29921a8fSScott Krugertotal=0 68*29921a8fSScott Krugertodo=-1; skip=-1 69*29921a8fSScott Kruger 70*29921a8fSScott Krugerfunction petsc_testrun() { 71*29921a8fSScott Kruger # First arg = Basic command 72*29921a8fSScott Kruger # Second arg = stdout file 73*29921a8fSScott Kruger # Third arg = stderr file 74*29921a8fSScott Kruger # Fourth arg = label for reporting 75*29921a8fSScott Kruger # Fifth arg = Filter 76*29921a8fSScott Kruger rmfiles="${rmfiles} $2 $3" 77*29921a8fSScott Kruger tlabel=$4 78*29921a8fSScott Kruger filter=$5 79*29921a8fSScott Kruger 80*29921a8fSScott Kruger if test -z "$filter"; then 81*29921a8fSScott Kruger cmd="$1 > $2 2> $3" 82*29921a8fSScott Kruger else 83*29921a8fSScott Kruger cmd="$1 | $filter > $2 2> $3" 84*29921a8fSScott Kruger fi 85*29921a8fSScott Kruger if "${verbose}"; then 86*29921a8fSScott Kruger printf "${cmd}\n" 87*29921a8fSScott Kruger fi 88*29921a8fSScott Kruger eval $cmd 89*29921a8fSScott Kruger if test $? == 0; then 90*29921a8fSScott Kruger printf "ok $tlabel $cmd\n" 91*29921a8fSScott Kruger let success=$success+1 92*29921a8fSScott Kruger else 93*29921a8fSScott Kruger printf "not ok $tlabel\n" 94*29921a8fSScott Kruger awk '{print "#\t" $0}' < $3 95*29921a8fSScott Kruger let failed=$failed+1 96*29921a8fSScott Kruger failures="$failures $tlabel" 97*29921a8fSScott Kruger fi 98*29921a8fSScott Kruger let total=$success+$failed 99*29921a8fSScott Kruger} 100*29921a8fSScott Kruger 101*29921a8fSScott Krugerfunction petsc_testend() { 102*29921a8fSScott Kruger logfile=$1/counts/${label}.counts 103*29921a8fSScott Kruger logdir=`dirname $logfile` 104*29921a8fSScott Kruger if ! test -d "$logdir"; then 105*29921a8fSScott Kruger mkdir -p $logdir 106*29921a8fSScott Kruger fi 107*29921a8fSScott Kruger if ! test -e "$logfile"; then 108*29921a8fSScott Kruger touch $logfile 109*29921a8fSScott Kruger fi 110*29921a8fSScott Kruger printf "total $total\n" > $logfile 111*29921a8fSScott Kruger printf "success $success\n" >> $logfile 112*29921a8fSScott Kruger printf "failed $failed\n" >> $logfile 113*29921a8fSScott Kruger printf "failures $failures\n" >> $logfile 114*29921a8fSScott Kruger if test ${todo} -gt 0; then 115*29921a8fSScott Kruger printf "todo $todo\n" >> $logfile 116*29921a8fSScott Kruger fi 117*29921a8fSScott Kruger if test ${skip} -gt 0; then 118*29921a8fSScott Kruger printf "skip $skip\n" >> $logfile 119*29921a8fSScott Kruger fi 120*29921a8fSScott Kruger if $cleanup; then 121*29921a8fSScott Kruger echo "Cleaning up" 122*29921a8fSScott Kruger /bin/rm -f $rmfiles 123*29921a8fSScott Kruger fi 124*29921a8fSScott Kruger} 125