#! /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= device= MPICH_VERSION= STOPFILE=${MPITEST_STOPTEST:-"$HOME/.stopmpichtests"} MAKE="make --no-print-directory" # # Set mpirun to the name/path of the mpirun program #FindMPIRUN # # test_mpi2=1 runtests=1 quiet=0 makeeach=0 have_fortran=0 writesummaryfile=no MAKE="make --no-print-directory" for arg in "$@" ; do case $arg in -basedir=* ) basedir=`echo $arg | sed 's/-basedir=//'` ;; -srcdir=* ) srcdir=`echo $arg | sed 's/-srcdir=//'` ;; -fort=* ) have_fortran=`echo $arg | sed 's/-fort=//'` ;; -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 # # Load basic procedures . ${srcdir}/../runbase # If the programs are not available, run make. if [ ! -x attrerr -a $makeeach = 0 -a $runtests = 1 ] ; then $MAKE fi mpirun=" ${basedir}/bin/smpirun -platform ${srcdir}/../../../../examples/msg/small_platform_with_routers.xml -hostfile ${srcdir}/../../hostfile --log=root.thres:critical" testfiles="" if [ $runtests = 1 ] ; then # # Run Fortran tests ONLY if Fortran available #no fortran tests compile with smpi at this time #if [ $have_fortran -eq "1" ] ; then # #RunTest attrtest 2 "*** Testing attributes from Fortran ***" # if [ $test_mpi2 = 1 ] ; then # RunTest commnamesf 1 "*** Testing Communicator Names from Fortran ***" # fi #fi #uses attr, not implemented #RunTest attrt 2 "*** Testing attributes ***" #fails, uses MPI_Attr_get, et MPI_Attr_put #RunTest attrerr 1 "*** Testing attributes (2) ***" RunTest grouptest_mpich 4 "*** Testing Groups ***" RunTest groupcreate 4 "*** Testing Group creation ***" #uses MPI_Intercomm_create #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 #uses MPI_Comm_test_inter and MPI_Intercomm_create #RunTest ictest3 4 "*** Testing Intercommunicators (3) ***" #if [ $have_fortran -eq "1" ] ; then # RunTest commnamesf 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