Files
PolyORB/examples/bbs/client-controller
Thomas Quinot d7082e8d2f Updated host lists.
[Imported from Perforce change 5936 at 2006-12-01 19:50:52]

Subversion-branch: /trunk/polyorb
Subversion-revision: 34164
2002-12-04 01:18:53 +00:00

169 lines
4.3 KiB
Bash
Executable File

#! /bin/sh
# A simple script to launch an automated test run.
# Highly dependant on the local setup.
# $Id$
ab_names=/infres/shalmaneser/quinot/projects/droopi/cos/naming/ab_names
serverp=/infres/shalmaneser/quinot/projects/droopi/examples/bbs/serverp
serverp_conf=/infres/shalmaneser/quinot/projects/droopi/examples/bbs/serverp.conf
evolutedp=/infres/ir10/astre/quinot/polyorb-sparc/build/examples/bbs/evolutedp
evolutedp_conf=/infres/shalmaneser/quinot/projects/droopi/examples/bbs/evolutedp.conf
output=/infres/shalmaneser/quinot/polyorb-output
Revolutedp_pids=""
sol8_hosts=valjean:cosette:fadette:roland:isengrin:candide:fracasse:donjuan:chimene:elvire:gavroche:lantier:folcoche:quasimodo:
#cyrano:
sol9_hosts=nadja:blizzard:aurelien:goriot:esmeralda:esmeralda2:rodrigue:vautrin:arsene:javert:
hosts=$sol8_hosts
nhosts=`echo $hosts | tr -cd : | wc -c`
size=100
count=100
cli_per_host=1
nmax=$nhosts
ulimit -c unlimited
kill=false
broadcast=""
while getopts bks:c:n:N: opt; do
case "$opt" in
k) kill=true ;;
b) broadcast="-b" ;;
s) size=$OPTARG ;;
c) count=$OPTARG ;;
N) cli_per_host=$OPTARG ;;
n) nmax=$OPTARG ;;
*) echo "invalid parameter"; exit 1;;
esac
done
if [ "$nmax" -gt `expr "$nhosts" '*' "$cli_per_host"` ]; then
echo "Too many total clients ($nhosts hosts, $cli_per_host clients each".
exit 1
fi
if $kill; then
IFS=:
for h in $hosts; do
if [ "$h" != "" ]; then
echo $h
rsh $h "/usr/ucb/ps axuw|grep 'quinot.*$evolutedp' | grep -v grep \
| awk '{print \$2}' | xargs kill -9 2> /dev/null || echo ---"
fi
done
ps axw|grep "tail -f /tmp/cli"|awk '{print $1}'|xargs kill 2> /dev/null
exit 0
fi
now=`date +"%F_%T" | tr -d :`
output=$output/$now
mkdir $output
(
echo "output=$output"
echo "size=$size"
echo "count=$count"
echo "nmax=$nmax"
echo "cli_per_host=$cli_per_host"
if [ "$brodcast" = "-b" ]; then
echo "broadcast=true"
else
echo "broadcast=false"
fi
) > $output/00PARAMETERS
echo "000 init"
sed "s/^/ /" $output/00PARAMETERS
cp $ab_names_conf $serverp_conf $evolutedp_conf $output 2> /dev/null || true
trap 'echo kill $ab_names_pid $serverp_pid $Revolutedp_pids;
kill -9 $ab_names_pid $serverp_pid $Revolutedp_pids;
exit' 0 2 15
echo "001 Starting name server..."
touch $output/ab_names.out
POLYORB_CONF=$ab_names_conf $ab_names > $output/ab_names.out 2> /dev/null &
ab_names_pid=$!
while ! grep POLYORB_CORBA_NAMING_IOR $output/ab_names.out; do
sleep 5
done
. $output/ab_names.out
export POLYORB_CORBA_NAMING_IOR
echo "002 Starting server partition..."
POLYORB_CONF=$serverp_conf $serverp > $output/serverp.out 2>&1 &
serverp_pid=$!
sleep 5
clinumber=0
hostnumber=0
while [ "$hostnumber" -lt "$nhosts" -a "$clinumber" -lt "$nmax" ]; do
eval `echo $hosts | sed 's/^\([^:]*\):\(.*\)$/host=\1;hosts=\2/'`
ping -c 2 $host > /dev/null || continue
cli_thishost=0
while [ "$cli_thishost" -lt "$cli_per_host" -a "$clinumber" -lt "$nmax" ]; do
ctl=/tmp/cli${clinumber}_ctl
rm -f $ctl
mkfifo $ctl
cliout=$output/cli$clinumber-$host
touch $cliout
cliouts="$cliouts $cliout"
echo `expr 100 + $clinumber`" Starting client $clinumber on $host"
sh -c "tail -f $ctl | rsh $host \"ulimit -c unlimited;TERM=dumb \
POLYORB_CORBA_NAMING_IOR=$POLYORB_CORBA_NAMING_IOR \
POLYORB_CONF=$evolutedp_conf \
LD_LIBRARY_PATH=/usr/local/lib \
$evolutedp $broadcast -n $nmax -c $count -s $size TEST_$clinumber 2>&1 \" \
>> $cliout" &
Revolutedp_pids="$Revolutedp_pids $!"
eval "cli_host_$clinumber=$h"
clinumber=`expr $clinumber + 1`
cli_thishost=`expr $cli_thishost + 1`
done
done
echo "200 Waiting for clients to become ready."
retries=0
while [ "`grep -L Ready $cliouts`" != "" -a "$retries" -lt 60 ]; do
retries=`expr $retries + 1`
sleep 2
done
if [ "$retries" -ge 60 ]; then
echo "222 Timed out"
$0 -k
exit 1
fi
echo "201 GO!"
date
i=0
while [ $i -lt $clinumber ]; do
echo "" > /tmp/cli${i}_ctl &
i=`expr $i + 1`
done
date
echo "202 Waiting for clients to complete."
while true; do
if [ "`grep -L 'Elapsed :' $cliouts`" = "" ]; then
echo "555 Success."
echo OK > $output/98STATUS
break
fi
if egrep -i 'Raised|STORAGE|ASSERT' $cliouts > /dev/null; then
echo "666 Exception."
echo FAIL > $output/98STATUS
break
fi
sleep 5
done
date
echo "888 Completed, cleaning up."
$0 -k