#!/bin/bash

function check_okay {
	if [ $? -ne 0 ]
	then
		exit 1
	fi
}

function do_onex {
	cd $1
	echo
	pwd
#	./mk
  rm out.txt
  rm err.txt
  echo start >> out.txt
	./rn >> out.txt 2> err.txt
	more err.txt >> out.txt
  echo end >> out.txt
	exit
	cd ..
}


function check_restart {
  if [ "$4" != skip ]
  then
    rm -f "$3"
    ./re "$4" >> out.txt 2> err.txt
  	more err.txt >> out.txt
  	cat err.txt
  	rm err.txt
    ./ck >& final_check_diff.txt
    if [ $? -ne 0 ]
    then
    	echo "******************** $1 restart $4 failed for diff "$3" final_check.mod after ./re $4 ********************"
    	echo "******************** $1 restart $4 failed for diff "$3" final_check.mod after ./re $4 ********************" >> out.txt
    elif [ -s final_check_diff.txt ]
    then
    	echo "******************** $1 restart $4 failed for diff "$3" final_check.mod after ./re $4 ********************"
    	echo "******************** $1 restart $4 failed for diff "$3" final_check.mod after ./re $4 ********************" >> out.txt
    else
    	echo "$1 matches final_check.mod after ./re $4"
    	echo "$1 matches final_check.mod after ./re $4" >> out.txt

    	#check_profile
    	diff -b final_profile.data final_profile_check.data >& final_profile_check_diff.txt
      if [ $? -ne 0 ]
      then
      	echo "******************** $1 restart failed for diff final_profile.data after ./re $4 ********************"
      	echo "******************** $1 restart failed for diff final_profile.data after ./re $4 ********************" >> out.txt
      elif [ -s final_check_diff.txt ]
      then
      	echo "******************** $1 restart failed for diff final_profile.data after ./re $4 ********************"
      	echo "******************** $1 restart failed for diff final_profile.data after ./re $4 ********************" >> out.txt
      else
        echo "$1 matches final_profile.data after ./re $4"
        echo "$1 matches final_profile.data after ./re $4" >> out.txt
    	fi
    fi
  fi
}


function do_one {
	cd $1
	echo "build_and_run" $1
  ./clean
  check_okay
  ./mk > mk.txt
  check_okay
  rm mk.txt
  if [ ! -z $3 ]
  then
    rm -f $3
  fi
	date "+   start %H:%M:%S"
  ./rn >> out.txt 2> err.txt
	more err.txt >> out.txt
	cat err.txt
	rm err.txt
	date "+  finish %H:%M:%S"
  grep -i "$2" out.txt
  if [ $? -ne 0 ]
  then
    echo $2
    echo "******************** $1 failed to match test string ********************"
    echo "******************** $1 failed to match test string ********************" >> out.txt
    echo ""
  else
    grep -i runtime out.txt
    if [ -z $3 ]
    then
      pwd
      echo missing name of final mod test file -- fix do1_test_source for $1
      echo
    elif [ "$3" != skip ]
    then    
      cp "$3" final_check.mod 
      cp final_profile.data final_profile_check.data
    	if [ -z $4 ]
    	then
        pwd
        echo missing arg for ./re
        echo
    	else
    	  check_restart "$1" "$2" "$3" "$4"
    	fi
    fi      
  fi
	echo ""
	cd ..
}


date
#echo ""
#./clean_each_test

echo ""

source do1_test_source

date "+DATE: %Y-%m-%d%nTIME: %H:%M:%S"
echo ""
date
