#! /bin/sh
#
# Run the tests for the 3way tests (synchronization delays)
#
#MACH=anlsp2
MACH=`uname -s`
Show=eval
OPT="-O"
donopoll=1
do_html=0
#PATH=/usr/local/mpi/lib/rs6000/ch_mpl:$PATH
#PATH=/home/MPI/mpich/lib/rs6000/ch_mpl:$PATH
#export PATH
do_base=0
do_log=0
do_update=0
mpirunargs=""
#
for arg in "$@" ; do
    case $arg in 
	-echo) set -x ;;
        -np=*) NPLIST=`echo a$arg | sed "s/a-np=//"` ;;
	-base) do_base=1 ;;
	-show) Show=echo ;;
        -logs) do_log=1 ;;
	-update) do_update=1 ;;
	-nopoll) mpirunargs="-nopoll" ;;
	-html) do_html=1 ;;
	-mach=*) MACH=`echo a$arg | sed "s/a-mach=//"` ;;
        *) echo "Unrecognized argument $arg" ; exit 1 ;;
    esac
done
#
if [ $do_base = 1 ] ; then 
    if [ -s related.lst ] ; then 
	dirs=". `cat related.lst`"
    else
	dirs="."
    fi
    cur_dir=`pwd`
    for dir in $dirs ; do
	if [ $do_log = 1 ] ; then 
	    cd $dir
	    if [ $do_html = 1 ] ; then
	        echo "<H2>`cat title.txt`</H2>"
	        echo "<PRE>"
	    else 
		cat title.txt
	    fi
	    $Show make bad.log
	    if [ $do_update = 0 -o ! -s bad.$MACH-8.alog ] ; then 
	        $Show mpirun $mpirunargs -np 3 -mvhome -mvback bad.log_profile.log bad.log -n 8
	        $Show /bin/mv $mpirunargs bad.log_profile.log bad.$MACH-8.alog
	    fi
	    if [ $do_update = 0 -o ! -s bad.$MACH-9.alog ] ; then 
	        $Show mpirun $mpirunargs -np 3 -mvhome -mvback bad.log_profile.log bad.log -n 9
	        $Show /bin/mv bad.log_profile.log bad.$MACH-9.alog
	    fi
	    if [ $do_update = 0 -o ! -s bad.$MACH-511.alog ] ; then 
	        $Show mpirun $mpirunargs -np 3 -mvhome -mvback bad.log_profile.log bad.log -n 511
		$Show /bin/mv bad.log_profile.log bad.$MACH-511.alog
	    fi
	    if [ $do_update = 0 -o ! -s bad.$MACH-512.alog ] ; then 
		$Show mpirun $mpirunargs -np 3 -mvhome -mvback bad.log_profile.log bad.log -n 512
		$Show /bin/mv bad.log_profile.log bad.$MACH-512.alog
	    fi
	    if [ $do_update = 0 -o ! -s bad.$MACH-513.alog ] ; then
		$Show mpirun $mpirunargs -np 3 -mvhome -mvback bad.log_profile.log bad.log -n 513
		$Show /bin/mv bad.log_profile.log bad.$MACH-513.alog
	    fi
	    if [ $do_update = 0 -o ! -s bounce.$MACH.alog ] ; then 
		$Show make bounce.log
		$Show mpirun $mpirunargs -np 2 -mvhome -mvback bounce.log_profile.log bounce.log
		$Show /bin/mv bounce.log_profile.log bounce.$MACH.alog
	    fi
	    if [ $do_html = 1 ] ; then 
	        echo "</PRE>"
		echo "<UL>"
		echo "<LI> <A HREF="'"'"3way/C/bad.$MACH-8.alog"'"'">Logs for bad -n 8</A>"
		echo "<LI> <A HREF="'"'"3way/C/bad.$MACH-9.alog"'"'">Logs for bad -n 9</A>"
		echo "<LI> <A HREF="'"'"3way/C/bad.$MACH-511.alog"'"'">Logs for bad -n 511</A>"
		echo "<LI> <A HREF="'"'"3way/C/bad.$MACH-512.alog"'"'">Logs for bad -n 512</A>"
		echo "<LI> <A HREF="'"'"3way/C/bad.$MACH-513.alog"'"'">Logs for bad -n 513</A>"
		echo "<LI> <A HREF="'"'"3way/C/bounce.$MACH.alog"'"'">Logs for bounce</A>"
		echo "</UL>"
	    fi
	    cd $cur_dir
	else
	    cd $dir
	    if [ $do_html = 1 ] ; then
	        echo "<H2>`cat title.txt`</H2>"
	        echo "<PRE>"
	    else 
		cat title.txt
	    fi
            $Show make bad
	    $Show mpirun $mpirunargs -np 3 -mvhome bad -n 8
	    $Show mpirun $mpirunargs -np 3 -mvhome bad -n 9
	    $Show mpirun $mpirunargs -np 3 -mvhome bad -n 511
	    $Show mpirun $mpirunargs -np 3 -mvhome bad -n 512
	    $Show mpirun $mpirunargs -np 3 -mvhome bad -n 513
	    if [ $do_html = 1 ] ; then
	        echo "</PRE>"
	    fi
	    cd $cur_dir
	fi
    done
    exit 0
fi
