#! /bin/sh # # Run some of the tests. If any arguments are provided, pass them to the # test programs. # # -mvhome is needed for the ANL SP, and is ignored by others args=@MPIRUNARGS@ device=@DEVICE@ top_srcdir=@top_srcdir@ srcdir=@srcdir@ MPICH_VERSION=@MPICH_VERSION@ STOPFILE=${MPITEST_STOPTEST:-"$HOME/.stopmpichtests"} mpirun=${MPIRUN:-"@MPIRUN@"} MAKE="@MAKE@" # # Load basic procedures . ${top_srcdir}/runbase # # Set mpirun to the name/path of the mpirun program FindMPIRUN # # test_mpi2=@HAS_MPI2@ runtests=1 quiet=0 makeeach=0 writesummaryfile=no MAKE="@MAKE@" for arg in "$@" ; do case $arg in -checkonly ) runtests=0 ;; -margs=*) margs=`echo $arg | sed 's/-margs=//'` args="$args $margs" ;; -summaryfile=*) writesummaryfile=yes summaryfile=`echo A$arg | sed 's/A-summaryfile=//'` ;; -small) makeeach=1 ;; -quiet) shift quiet=1 ;; -help|-u) echo "runtests [-checkonly] [-margs='...']" echo "run tests in this directory. If -checkonly set, just run" echo "the differences check (do NO rerun the test programs)." echo "If -margs is used, these options are passed to mpirun." echo "If -small is used, the examples are built, run, and deleted." exit 1 ;; *) if test -n "$arg" ; then echo "runtests: Unknown argument ($arg)" exit 1 fi ;; esac done # If the programs are not available, run make. if [ ! -x attrt -a $makeeach = 0 -a $runtests = 1 ] ; then $MAKE default fi testfiles="" if [ $runtests = 1 ] ; then # # Run Fortran tests ONLY if Fortran available if [ @HAS_FORTRAN@ = 1 ] ; then RunTest attrtest 2 "*** Testing attributes from Fortran ***" if [ $test_mpi2 = 1 ] ; then RunTest commnamesf 1 "*** Testing Communicator Names from Fortran ***" fi fi RunTest attrt 2 "*** Testing attributes ***" RunTest attrerr 1 "*** Testing attributes (2) ***" RunTest grouptest 4 "*** Testing Groups ***" RunTest groupcreate 4 "*** Testing Group creation ***" RunTest ictest 4 "*** Testing Intercommunicators ***" RunTest icdup 3 "*** Testing dup of an intercommunicator ***" # # ictest2 relies on a inconsistency in the standard, to wit, that the # leader in both groups can be the same process. This seems to be # essential in a dynamic setting, since the only process both groups can # access may be the single parent process (other than using client/server # intercommunicator creating routines, with the parent providing the common # information). # #testfiles="$testfiles ictest2.out" #rm -f ictest2.out #MakeExe ictest2 #echo '*** Testing Intercommunicators (2) ***' #echo '*** Testing Intercommunicators (2) ***' >> ictest2.out #$mpirun $args -np 4 ictest2 $* >> ictest2.out 2>&1 #echo '*** Testing Intercommunicators (2) ***' >> ictest2.out #CleanExe ictest2 RunTest ictest3 4 "*** Testing Intercommunicators (3) ***" if [ $test_mpi2 = 1 ] ; then RunTest commnames 2 "*** Testing Communicator Names ***" fi else # Just run checks testfiles=`echo *.out` fi echo '*** Checking for differences from expected output ***' CheckAllOutput context.diff exit 0