#!/bin/sh

NAME=ED
if [ $# -ne 1 ]  && [ $# -ne 3 ];
then
  echo "Usage: \"$0 CLASS [MODE]\""
  echo "   CLASS:             S, W, or A"
  #echo "   MODE:  -u:         unformatted data files (ignored)"
  #echo "          -v:         verbose mode"
  #echo "          -uv or -vu: unformatted data files (ignored) + verbose mode"
  echo "          -i: numero de la iteracion"
  exit
fi

if [ $# -eq 3  ];
then
  MODE=$2
else
  MODE=default
fi

PID=$$
CLASS=$1
LOG_FILE=____LOG_$NAME.$PID
ERR=____ERR.$PID
#The default script behavior is nonverbose
VERBOSE=0
#We don't really need a file format specifier, but define it for convenience
ASCII=1
ITER=0;

case $MODE  in
  -i	    )  ITER=$3			   ;;
  -u        )  ASCII=0;                           ;;
  -v        )  VERBOSE=1                          ;;
  -vu | -uv )  ASCII=0; VERBOSE=1                 ;; 			  
  default   )						;;
  *         )  echo Error, wrong mode $MODE; exit ;;
esac

if [ $VERBOSE -eq 1 ];
then
  THROWIT="tee"
else
  THROWIT="cat >"
fi

case $CLASS in 
  S   )   WIDTH=9     ;;
  W   )   WIDTH=9     ;;
  A   )   WIDTH=9     ;;
  B   )   WIDTH=18    ;;
  C   )   WIDTH=36    ;;
  *   )   echo Error, wrong class $CLASS; exit ;;
esac
    
DEPTH=1
MAX_ITER=`expr $WIDTH \* $DEPTH`
ERROR=0
 
#ITER=0

echo Running GridNPB3.0-SHF-SER code $NAME                     
echo Class is $CLASS                       
echo Number of iterations is $MAX_ITER     
echo Name of executable is sp.$CLASS     

set SECONDS=0    
#while :
#do
 
 if [ $ERROR -eq 1 ];
  then
    echo Failure in iteration $ITER of benchmark $NAME.$CLASS
    break
  else 
    if [ $ITER -eq $MAX_ITER ];
    then
      echo Benchmark $NAME.$CLASS completed successfully  
      break
    fi
  fi

  echo Iteration number $ITER, code sp.$CLASS -- being verified
# The next line executes the SP node code
  chmod +x sp.$CLASS
  eval "(./sp.$CLASS <<-EOF; echo $? > $ERR;) | $THROWIT $LOG_FILE
	$ASCII
	$NAME 
	$CLASS
	$ITER 
	$WIDTH
	$DEPTH 
	$PID
	$VERBOSE
	EOF"

  ERROR_STATUS=`cat $ERR`
  LINE_COUNT=`cat $LOG_FILE | grep "Verification successful" | wc -l`
  if [ $LINE_COUNT -eq 0 ] || [ $ERROR_STATUS -ne 0 ];
  then
    ERROR=1
  fi

#  ITER=`expr $ITER + 1`

#done

echo Turnaround time: $SECONDS seconds

rm -f $LOG_FILE $ERR

