#! /bin/bash . acsstartupAcsPorts #-------------------------------------- CL_RHOST= # These options can be recognized (longopts comma-separated. colon means argument is required) LONGOPTS=help,rhost: SHORTOPTS=h # Usage info. Be nice and keep this up-to-date! function printUsage { echo "Runs component performance tests" echo "" echo "Usage: `basename $0` [OPTIONS] " echo "Options: " echo " -rhost remote_host remote host" echo " -h | -help prints this help and exits" } # Run getopt (posixly_correct needed). We run twice: # First run is simply to check the commandline for correctness # Second run is the real deal which replaces the command line args with getopt's output export POSIXLY_CORRECT=1 getopt -n `basename $0` -Q -u -a -l $LONGOPTS $SHORTOPTS "$@" || { printUsage exit 43; } set -- `getopt -u -a -l $LONGOPTS $SHORTOPTS "$@"` # Iterate over getopt's output and set CL_XXX variables accordingly while : do case "$1" in --rhost) CL_RHOST=$2 ; shift ;; --help) CL_HELP=true ;; -h) CL_HELP=true ;; --) break ;; esac shift done shift # must be unset! otherwise our custom export() function # that is defined below doesn't get used by the shell export POSIXLY_CORRECT= unset POSIXLY_CORRECT if [ "$CL_HELP" ] ; then printUsage exit 0 fi #-------------------------------------- rm -rf $ACS_TMP mkdir $ACS_TMP if [ ! $CL_RHOST ] then export DATABASE=../doc/compEvent.dbm export OUT_HTML=../doc/ComponentEventPerf.html else export DATABASE=../doc/remoteCompEvent.dbm export OUT_HTML=../doc/RemoteComponentEventPerf.html fi #Startup services/manager acsutilTATPrologue export ACS_INSTANCE=`cat $ACS_TMP/acs_instance` #Startup containers if [ ! $CL_RHOST ] then acsStartContainer -cpp bilboContainer >& $ACS_TMP/bilboContainer.log& sleep 15 acsStartContainer -java frodoContainer >& $ACS_TMP/frodoContainer.log& sleep 15 acsStartContainer -py aragornContainer >& $ACS_TMP/aragornContainer.log& sleep 15 else export MANAGER_REFERENCE=corbaloc::`getIP`:`getManagerPort`/Manager echo "Starting remote containers on '$CL_RHOST'. It may be necessary to enter a password here..." (ssh -f $USER@$CL_RHOST acsStartContainer -cpp -m $MANAGER_REFERENCE bilboContainer) >& $ACS_TMP/bilboContainer.log sleep 15 (ssh -f $USER@$CL_RHOST acsStartContainer -java -m $MANAGER_REFERENCE frodoContainer) >& $ACS_TMP/frodoContainer.log sleep 15 (ssh -f $USER@$CL_RHOST acsStartContainer -py -m $MANAGER_REFERENCE aragornContainer) >& $ACS_TMP/aragornContainer.log sleep 15 fi #--Component Tests------------------------------------------------- #--The peformance data for the proceeding tests is retrieved from - #--the container output. It does not matter what programming language #--the client is written in. echo "C++ Notification channel suppliers" componentsClientEventConsumer 100& sleep 2 componentsGenericTestPy SUP01 setup\(100L,5L,0L\) method\(\) componentsClientEventConsumer 100& sleep 2 componentsGenericTestPy SUP01 setup\(100L,10L,0L\) method\(\) componentsClientEventConsumer 100& sleep 2 componentsGenericTestPy SUP01 setup\(100L,25L,0L\) method\(\) componentsClientEventConsumer 100& sleep 2 componentsGenericTestPy SUP01 setup\(100L,100L,0L\) method\(\) componentsClientEventConsumer 100& sleep 2 componentsGenericTestPy SUP01 setup\(100L,1000L,0L\) method\(\) componentsClientEventConsumer 100& sleep 2 componentsGenericTestPy SUP01 setup\(100L,5000L,0L\) method\(\) componentsClientEventConsumer 100& sleep 2 componentsGenericTestPy SUP01 setup\(100L,50000L,0L\) method\(\) componentsClientEventConsumer 100& sleep 2 echo "Python Notification channel suppliers" componentsGenericTestPy SUPPY01 setup\(100L,5L,0L\) method\(\) componentsClientEventConsumer 100& sleep 2 componentsGenericTestPy SUPPY01 setup\(100L,10L,0L\) method\(\) componentsClientEventConsumer 100& sleep 2 componentsGenericTestPy SUPPY01 setup\(100L,25L,0L\) method\(\) componentsClientEventConsumer 100& sleep 2 componentsGenericTestPy SUPPY01 setup\(100L,100L,0L\) method\(\) componentsClientEventConsumer 100& sleep 2 componentsGenericTestPy SUPPY01 setup\(100L,1000L,0L\) method\(\) componentsClientEventConsumer 100& sleep 2 componentsGenericTestPy SUPPY01 setup\(100L,5000L,0L\) method\(\) componentsClientEventConsumer 100& sleep 2 componentsGenericTestPy SUPPY01 setup\(100L,50000L,0L\) method\(\) componentsClientEventConsumer 100& sleep 2 echo "Java Notification channel suppliers" componentsGenericTestPy SUPJAVA01 setup\(100L,5L,0L\) method\(\) componentsClientEventConsumer 100& sleep 2 componentsGenericTestPy SUPJAVA01 setup\(100L,10L,0L\) method\(\) componentsClientEventConsumer 100& sleep 2 componentsGenericTestPy SUPJAVA01 setup\(100L,25L,0L\) method\(\) componentsClientEventConsumer 100& sleep 2 componentsGenericTestPy SUPJAVA01 setup\(100L,100L,0L\) method\(\) componentsClientEventConsumer 100& sleep 2 componentsGenericTestPy SUPJAVA01 setup\(100L,1000L,0L\) method\(\) componentsClientEventConsumer 100& sleep 2 componentsGenericTestPy SUPJAVA01 setup\(100L,5000L,0L\) method\(\) componentsClientEventConsumer 100& sleep 2 componentsGenericTestPy SUPJAVA01 setup\(100L,50000L,0L\) method\(\) #------------------------------------------------------- #Stop containers/manager/services acsStopContainer aragornContainer >& /dev/null acsStopContainer frodoContainer >& /dev/null acsStopContainer bilboContainer >& /dev/null sleep 10 acsutilTATEpilogue #Give everything time to finish... sleep 5 #Load the data into the database ACSPerfAnalyzer $DATABASE $ACS_TMP/bilboContainer.log ACSPerfAnalyzer $DATABASE $ACS_TMP/frodoContainer.log ACSPerfAnalyzer $DATABASE $ACS_TMP/aragornContainer.log #Generate HTML report ACSPerfReportGen $DATABASE > $OUT_HTML