#!/bin/sh
#BHEADER***********************************************************************
# (c) 1998   The Regents of the University of California
#
# See the file COPYRIGHT_and_DISCLAIMER for a complete copyright
# notice, contact person, and disclaimer.
#
# $Revision: 2.20 $
#EHEADER***********************************************************************

perform_test()
{
  echo ""
  echo "======================================================================"
  echo "Running tests on $HYPRE_RUN_MACHINE"
  echo "======================================================================"
  echo ""

  echo "creating new AUTOTEST directory...."
  ssh ${HYPRE_COMPILE_MACHINE} "\
    (\
        rm -fR ${HYPRE_REMOTE_DIR};\
        mkdir ${HYPRE_REMOTE_DIR}\
    )"

  echo "copying new source...."
  scp -pr linear_solvers ${HYPRE_COMPILE_MACHINE}:${HYPRE_REMOTE_DIR}

  echo "running autotest...."
  ssh ${HYPRE_COMPILE_MACHINE} "\
    (\
        cd ${HYPRE_REMOTE_DIR};\
	. linear_solvers/test/autotest_env;\
	[ -f linear_solvers/test/env.${HYPRE_ARCH} ] && . linear_solvers/test/env.${HYPRE_ARCH};\
        . linear_solvers/test/autotest_test ${HYPRE_MACHINE_COMMANDS};\
        chmod -fR a+rX,u+w,go-w linear_solvers;\
        chgrp -fR hypre linear_solvers\
    )"
  echo "finished autotest...."
}

#==============================================================================
# This script is the top-level script used to regression test hypre.
#==============================================================================

OldMask=umask
umask 022
. ./autotest_env

#=============================================================================
# Check out the repository in the HYPRE_AUTOTEST_DIR directory
#=============================================================================

if [ ! -d "$CVSROOT" ]
then
    echo "Error: no CVS repository, CVSROOT = $CVSROOT"
    exit
fi

cd $HYPRE_AUTOTEST_DIR
rm -fR linear_solvers
cvs -q checkout -P linear_solvers 1> $0.checkout.log 2> $0.checkout.err
echo "$HYPRE_CHECKOUT_EMAIL" > $0.checkout.err.email 
chmod -fR a+rX,u+w,go-w linear_solvers
chgrp -fR hypre linear_solvers

#==============================================================================
# Run test suites on remote machines
#==============================================================================

while [ "$*" != "" ]
do
  case $1 in
    -blue)
        HYPRE_ARCH="blue"
        HYPRE_COMPILE_MACHINE="blue"
        HYPRE_RUN_MACHINE="blue"
        HYPRE_REMOTE_DIR="/usr/gapps/hypre/powerpc-ibm-aix4.3.3.0/AUTOTEST"
	HYPRE_MACHINE_COMMANDS="-m -a 2 -cf -o 1"
	perform_test
        shift;;
    -casc)
        HYPRE_ARCH="casc"
        HYPRE_COMPILE_MACHINE="perrin"
        HYPRE_RUN_MACHINE="perrin"
        HYPRE_REMOTE_DIR="/home/casc/software/hypre/autotest"
	HYPRE_MACHINE_COMMANDS="-m -a 2 -dcxfy -t 1 -ns"
        ./autotest_test $HYPRE_MACHINE_COMMANDS
        shift;;
    -compass)
        HYPRE_ARCH="dec"
        HYPRE_COMPILE_MACHINE="west"
        HYPRE_RUN_MACHINE="southeast"
        HYPRE_REMOTE_DIR="/usr/gapps/hypre/alphaev56-dec-osf4.0f/AUTOTEST"
	HYPRE_MACHINE_COMMANDS="-m -r $HYPRE_RUN_MACHINE -a 2 -cf -o 1"
	perform_test
        shift;;
    -lx)
        HYPRE_ARCH="linux"
        HYPRE_COMPILE_MACHINE="lx10"
        HYPRE_RUN_MACHINE="lx10"
        HYPRE_REMOTE_DIR="/usr/gapps/hypre/alphaev67-unknown-linux-gnu/AUTOTEST"
	HYPRE_MACHINE_COMMANDS="-m -a 2 -cf"
	perform_test
        shift;;
    -purify)
        HYPRE_ARCH="casc"
        HYPRE_COMPILE_MACHINE="perrin"
        HYPRE_RUN_MACHINE="perrin"
        HYPRE_REMOTE_DIR="/home/casc/software/hypre/autotest"
	HYPRE_MACHINE_COMMANDS="-m -q 2 -da 1 -cxfy -t 1 -ns"
        ./autotest_test $HYPRE_MACHINE_COMMANDS
        shift;;
    -red)
        HYPRE_ARCH="red"
        HYPRE_COMPILE_MACHINE="sasn100"
        HYPRE_RUN_MACHINE="janus"
        HYPRE_REMOTE_DIR="/usr/apps/hypre/AUTOTEST"
	HYPRE_MACHINE_COMMANDS="-m -r $HYPRE_RUN_MACHINE -a 2 -cf -o 1"
	perform_test
        shift;;
    -riptide)
        HYPRE_ARCH="sgi"
        HYPRE_COMPILE_MACHINE="riptide"
        HYPRE_RUN_MACHINE="riptide"
        HYPRE_REMOTE_DIR="/usr/gapps/hypre/mips-sgi-irix6.5/AUTOTEST"
	HYPRE_MACHINE_COMMANDS="-m -a 2 -cf"
	perform_test
        shift;;
    -tc2k)
        HYPRE_ARCH="dec"
        HYPRE_COMPILE_MACHINE="tc2k"
        HYPRE_RUN_MACHINE="tc2k"
        HYPRE_REMOTE_DIR="/usr/gapps/hypre/alphaev67-dec-osf5.0/AUTOTEST"
	HYPRE_MACHINE_COMMANDS="-m -a 2 -cf -o 1"
	perform_test
        shift;;
    -tc)
        HYPRE_ARCH="dec"
        HYPRE_COMPILE_MACHINE="tc01"
        HYPRE_RUN_MACHINE="tc01"
        HYPRE_REMOTE_DIR="/usr/gapps/hypre/alphaev56-dec-osf5.1/AUTOTEST"
	HYPRE_MACHINE_COMMANDS="-m -a 2 -cf -o 1"
	perform_test
        shift;;
    -vivid)
        HYPRE_ARCH="linux"
        HYPRE_COMPILE_MACHINE="vivid"
        HYPRE_RUN_MACHINE="vivid"
        HYPRE_REMOTE_DIR="/usr/gapps/hypre/i686-pc-linux-gnu/AUTOTEST"
	HYPRE_MACHINE_COMMANDS="-m -a 2 -cf"
	perform_test
        shift;;
  esac


done

#==============================================================================
# Autotest completion check: create "autotest finished" file
#==============================================================================

touch $HYPRE_AUTOTEST_DIR/autotest_finished

umask $OldMask
