Blame test/mpi/manual/manyconnect.in

Packit 0848f5
#! /bin/sh
Packit 0848f5
file=`pwd`/test-port
Packit 0848f5
prefix="@prefix@"
Packit 0848f5
exec_prefix="@exec_prefix@"
Packit 0848f5
mpiexec="@bindir@/mpiexec"
Packit 0848f5
starter="$mpiexec -n 1"
Packit 0848f5
testpgm=testconnect
Packit 0848f5
Packit 0848f5
rm -f $file
Packit 0848f5
Packit 0848f5
# Default number of processes to start (the test is for large numbers
Packit 0848f5
# of processes; use "manyconnect 10" to start with fewer for debugging)
Packit 0848f5
nconn=100
Packit 0848f5
# To avoid problems with listner queues, we pause every blockstart
Packit 0848f5
# processes
Packit 0848f5
blockstart=10
Packit 0848f5
Packit 0848f5
# Print help/usage information if requested
Packit 0848f5
if [ "$1" = "-help" -o "$1" = "-usage" ] ; then
Packit 0848f5
    echo "$0 [ -singleton ] [ nconn [ testprogram ] ]"
Packit 0848f5
    exit 0
Packit 0848f5
fi
Packit 0848f5
Packit 0848f5
if [ "$1" = "-singleton" ] ; then
Packit 0848f5
    starter=eval
Packit 0848f5
    shift
Packit 0848f5
fi
Packit 0848f5
if [ -n "$1" ] ; then
Packit 0848f5
    nconn=$1
Packit 0848f5
    shift
Packit 0848f5
fi
Packit 0848f5
if [ -n "$1" ] ; then
Packit 0848f5
    if [ -x "$1" ] ; then
Packit 0848f5
	testpgm=$1
Packit 0848f5
    else 
Packit 0848f5
        echo "Expected to find an executable program; found $1"
Packit 0848f5
        exit 1
Packit 0848f5
    fi
Packit 0848f5
    shift
Packit 0848f5
fi
Packit 0848f5
Packit 0848f5
# Make sure that the program is executable
Packit 0848f5
if [ ! -x "$testpgm" ] ; then
Packit 0848f5
    # Try to make it
Packit 0848f5
    echo "Making $testpgm"
Packit 0848f5
    make $testpgm 
Packit 0848f5
    if [ $? != 0 ] ; then
Packit 0848f5
	echo "Failure in make $testpgm"
Packit 0848f5
	exit 1
Packit 0848f5
    fi
Packit 0848f5
    if [ ! -x "$testpgm" ] ; then 
Packit 0848f5
        echo "The program $testpgm either does not exist or is not executable"
Packit 0848f5
        exit 1
Packit 0848f5
    fi
Packit 0848f5
fi
Packit 0848f5
Packit 0848f5
# Start one and sleep to avoid problems with two processes opening the
Packit 0848f5
# test-port file for writing
Packit 0848f5
$starter ./$testpgm $file $nconn 1 &
Packit 0848f5
sleep 1
Packit 0848f5
nstarted=2
Packit 0848f5
blockcount=2
Packit 0848f5
while [ $nstarted -lt $nconn ] ; do
Packit 0848f5
    #echo "Starting $nstarted"
Packit 0848f5
    $starter ./$testpgm $file $nconn $nstarted &
Packit 0848f5
    echo "Started process $! (num $nstarted)"
Packit 0848f5
    nstarted=`expr $nstarted + 1`
Packit 0848f5
    blockcount=`expr $blockcount + 1`
Packit 0848f5
    if [ -n "$2" ] ; then
Packit 0848f5
         sleep $2
Packit 0848f5
    elif [ $blockcount -ge $blockstart ] ; then
Packit 0848f5
        blockcount=0
Packit 0848f5
        sleep 1
Packit 0848f5
    fi
Packit 0848f5
done
Packit 0848f5
#echo "Starting $nstarted"
Packit 0848f5
$starter ./$testpgm $file $nconn $nstarted
Packit 0848f5
wait