diff options
Diffstat (limited to 'ACE/apps/JAWS/clients/WebSTONE/bin/runbench')
-rwxr-xr-x | ACE/apps/JAWS/clients/WebSTONE/bin/runbench | 193 |
1 files changed, 193 insertions, 0 deletions
diff --git a/ACE/apps/JAWS/clients/WebSTONE/bin/runbench b/ACE/apps/JAWS/clients/WebSTONE/bin/runbench new file mode 100755 index 00000000000..409351f8f55 --- /dev/null +++ b/ACE/apps/JAWS/clients/WebSTONE/bin/runbench @@ -0,0 +1,193 @@ +#!/bin/sh +# $Header$ +# set -x +set +x +[ -n "$WEBSTONEROOT" ] || WEBSTONEROOT=`pwd`/../ + +case $# in + 1) + FILELIST=$1 + ;; + *) + FILELIST=$WEBSTONEROOT/conf/filelist + ;; +esac + +# load configurations +. $WEBSTONEROOT/conf/testbed + +[ -n "$DEBUG" ] && set +x + +# check variables +[ -n "$ITERATIONS" ] || ITERATIONS="1" +[ -n "$MINCLIENTS" ] || MINCLIENTS="1" +[ -n "$MAXCLIENTS" ] || MAXCLIENTS="1" +[ -n "$CLIENTINCR" ] || CLIENTINCR="1" +[ -n "$TIMEPERRUN" ] || TIMEPERRUN="1" +# don't care about PROXYSERVER +[ -n "$SERVER" ] || SERVER="www" +[ -n "$PORTNO" ] || PORTNO="80" +# [ -n "$SERVERINFO" ] || SERVERINFO="uname -a" +# OSTUNINGFILES +# WEBSERVERDIR +# WEBDOCDIR +# WEBSERVERTUNINGFILES +[ -n "$CLIENTS" ] || CLIENTS="localhost" +[ -n "$CLIENTACCOUNT" ] || CLIENTACCOUNT=$USER +[ -n "$CLIENTPASSWORD" ] || CLIENTPASSWORD=$CLIENTACCOUNT +# [ -n "$CLIENTINFO" ] || CLIENTINFO="uname -a" +[ -n "$TMPDIR" ] || TMPDIR="/tmp" +[ -n "$RCP" ] || RCP="rcp" +[ -n "$RSH" ] || RSH="rsh" + +export ITERATIONS MINCLIENTS MAXCLIENTS CLIENTINCR TIMEPERRUN +export SERVER PORTNO SERVERINFO +export CLIENTS CLIENTACCOUNT CLIENTPASSWORD CLIENTINFO +export TMPDIR RCP RSH + +echo "Clients: " $CLIENTS + +# +# Estimate run time +# +NUMCLIENTHOSTS=`echo $CLIENTS | wc -w` +TRIALS=`expr 1 + \( $MAXCLIENTS - $MINCLIENTS \) / $CLIENTINCR` +RUNTIME=`expr 60 \* $ITERATIONS \* $TRIALS \* $TIMEPERRUN` +RUNTIME=`expr $RUNTIME + $TRIALS \* \( $MAXCLIENTS + $MINCLIENTS \) \ + / \( 2 \* $NUMCLIENTHOSTS \)` + +echo "Estimated run time:" `expr $RUNTIME / 3600` "hours" \ + `expr $RUNTIME % 3600 / 60` "minutes" + +# +# Checking for valid set of benchmark files to retrieve +# +#if [ -z "$PROXYSERVER" ] +#then +# echo "Checking for a valid set of benchmark files" +# CHECKLISTTMP=$TMPDIR/webstone-checkfilelist.$$ +# rm -f $CHECKFILELISTTMP +# $WEBSTONEROOT/bin/checkfilelist $SERVER $PORTNO $FILELIST > $CHECKLISTTMP 2>&1 +# if [ `grep -c ' 4[0-9][0-9] '< $CHECKLISTTMP` -gt 0 ] +# then +# echo "ERROR: not all files in filelist are on server:" +# echo "----- checkfilelist results -----" +# cat $CHECKLISTTMP +# echo "----- checkfilelist results -----" +# rm -f $CHECKLISTTMP +# exit 1 +# else +# echo "OK: All files found" +# fi +# rm -f $CHECKLISTTMP +#fi +# end if $PROXYSERVER + +# +# distribute webclient binary +# +for i in $CLIENTS +do + $RCP $WEBSTONEROOT/bin/webclient $i:$TMPDIR #/usr/local/bin +done + +# BEGIN iterations +J=1 +while [ $J -le $ITERATIONS ] +do + NUMCLIENTS=$MINCLIENTS + while [ $NUMCLIENTS -le $MAXCLIENTS ] + do + echo "***** Iteration $J, Total clients "`expr $NUMCLIENTS`" **********" + date + TIMESTAMP=`date +"%y%m%d_%H%M"` + LOGDIR=$WEBSTONEROOT/bin/runs/$TIMESTAMP + + # + # nuke debug files + # + for client in $CLIENTS + do + $RSH $client "rm /tmp/webstone-debug*" > /dev/null 2>&1 + done + + mkdir -p $LOGDIR + rm -f $LOGDIR/config + touch $LOGDIR/config + CLIENTSPERHOST=`expr $NUMCLIENTS / $NUMCLIENTHOSTS` + EXTRACLIENTS=`expr $NUMCLIENTS % $NUMCLIENTHOSTS` + + for i in $CLIENTS + do + if [ $EXTRACLIENTS -gt 0 ] + then + echo "$i $CLIENTACCOUNT $CLIENTPASSWORD `expr $CLIENTSPERHOST + 1`" \ + >> $LOGDIR/config + EXTRACLIENTS=`expr $EXTRACLIENTS - 1` + else + echo "$i $CLIENTACCOUNT $CLIENTPASSWORD $CLIENTSPERHOST" \ + >> $LOGDIR/config + fi + done + cp $FILELIST $LOGDIR/`basename $FILELIST` + + # + # Put test configuration files on clients + # + for i in $CLIENTS localhost + do + $RSH $i "rm -f $TMPDIR/config $TMPDIR/`basename $FILELIST`" + $RCP $LOGDIR/config $i:$TMPDIR/config + $RCP $LOGDIR/`basename $FILELIST` $i:$TMPDIR/filelist + done + + # + # Get starting configuration and stats from each participant + # + $RSH $SERVER "$SERVERINFO" > $LOGDIR/hardware.$SERVER 2>&1 + for i in $CLIENTS + do + $RSH $i "$CLIENTINFO" > $LOGDIR/hardware.$i 2>&1 + done + + # set -x + for i in $OSTUNINGFILES $WEBSERVERTUNINGFILES + do + $RCP $SERVER:$i $LOGDIR + done + set +x + + # + # Run benchmark + # + date + CMD="$WEBSTONEROOT/bin/webmaster -v -u $TMPDIR/filelist" + CMD=$CMD" -f $TMPDIR/config -l $TIMEPERRUN" + [ -n "$SERVER" ] && CMD=$CMD" -w $SERVER" + [ -n "$PORTNO" ] && CMD=$CMD" -p $PORTNO" + [ -n "$PROXYSERVER" ] && CMD=$CMD" -P $PROXYSERVER" + [ -n "$DEBUG" ] && CMD=$CMD" -d" + echo $CMD + + # dump environment into $LOGDIR + rm -rf $LOGDIR/controller.env + env > $LOGDIR/controller.env + + $CMD | tee $LOGDIR/run + + # + # Get ending configuration and stats from each participant + # + date + #for i in $SERVER $CLIENTS + #do + #$WEBSTONEROOT/bin/getstats $i > $LOGDIR/end.$i 2>&1 + #done + #date + NUMCLIENTS=`expr $NUMCLIENTS + $CLIENTINCR` + done + # while NUMCLIENTS + J=`expr $J + 1` +done +# while J +# end |