#! /bin/bash # # This Source Code Form is subject to the terms of the Mozilla Public # License, v. 2.0. If a copy of the MPL was not distributed with this # file, You can obtain one at http://mozilla.org/MPL/2.0/.
######################################################################## # # mozilla/security/nss/tests/ssl/ssl_dist_stress.sh # # Script to test NSS SSL - distributed stresstest - this script needs to # source the regular ssl.sh (for shellfunctions, certs and variables # initialisation) # create certs # start server # start itself via rsh on different systems to connect back to the server # # # needs to work on all Unix and Windows platforms # # special strings # --------------- # FIXME ... known problems, search for this string # NOTE .... unexpected behavior # ########################################################################
############################## ssl_ds_init ############################# # local shell function to initialize this script ########################################################################
ssl_ds_init()
{ if [ -z "$GLOB_MIN_CERT" ] ; then
GLOB_MIN_CERT=0 fi if [ -z "$GLOB_MAX_CERT" ] ; then
GLOB_MAX_CERT=200 fi
IP_PARAM=""
CD_QADIR_SSL=""
if [ -n "$1" ] ; then
ssl_ds_eval_opts $* fi
SCRIPTNAME=ssl_dist_stress.sh # sourced - $0 would point to all.sh
if [ -z "${CLEANUP}" ] ; then# if nobody else is responsible for
CLEANUP="${SCRIPTNAME}"# cleaning this script will do it fi
ssl_init # let some other script do the hard work (initialize, generate certs, ...
######################### ssl_ds_usage ################################# # local shell function to explain the usage ########################################################################
ssl_ds_usage()
{ echo"Usage: `basename $1`" echo" -host hostname " echo" ...host who runs the server, for distributed stress test" echo" -stress " echo" ...runs the server sider of the distributed stress test" echo" -dir unixdirectory " echo" ...lets the server side of the distributed stress test" echo" know where to find the scritp to start on the remote side" echo" -certnum start-end" echo" ... provides the range of certs for distributed stress test" echo" for example -certnum 10-20 will connect 10 times" echo" no blanks in the range string (not 10 - 20)" echo" valid range ${GLOB_MIN_CERT}-${GLOB_MAX_CERT}" echo" -? ...prints this text"
exit 1 #does not need to be Exit, very early in script
}
######################### ssl_ds_eval_opts ############################# # local shell function to deal with options and parameters ########################################################################
ssl_ds_eval_opts()
{ #use $0 not $SCRIPTNAM<E, too early, SCRIPTNAME not yet set
while [ -n "$1" ] do
case $1 in
-host)
BUILD_OPT=1 export BUILD_OPT
DO_REM_ST="TRUE"
shift
SERVERHOST=$1
HOST=$1 if [ -z $SERVERHOST ] ; then echo"$0 `uname -n`: -host requires hostname"
ssl_ds_usage fi echo"$0 `uname -n`: host $HOST ($1)"
;;
-certn*)
shift
rangeOK=`echo $1 | sed -e 's/[0-9][0-9]*-[0-9][0-9]*/OK/'`
MIN_CERT=`echo $1 | sed -e 's/-[0-9][0-9]*//' -e 's/^00*//'`
MAX_CERT=`echo $1 | sed -e 's/[0-9][0-9]*-//' -e 's/^00*//'` if [ -z "$rangeOK" -o "$rangeOK" != "OK" -o \
-z "$MIN_CERT" -o -z "$MAX_CERT" -o \ "$MIN_CERT" -gt "$MAX_CERT" -o \ "$MIN_CERT" -lt "$GLOB_MIN_CERT" -o \ "$MAX_CERT" -gt "$GLOB_MAX_CERT" ] ; then echo"$0 `uname -n`: -certn range not valid"
ssl_ds_usage fi echo"$0 `uname -n`: will use certs from $MIN_CERT to $MAX_CERT"
;;
-server|-stress|-dist*st*)
BUILD_OPT=1 export BUILD_OPT
DO_DIST_ST="TRUE"
;;
-dir|-unixdir|-uxdir|-qadir)
shift
UX_DIR=$1 #FIXME - we need a default unixdir if [ -z "$UX_DIR" ] ; then# -o ! -d "$UX_DIR" ] ; then can't do, Win doesn't know... echo"$0 `uname -n`: -dir requires directoryname "
ssl_ds_usage fi
CD_QADIR_SSL="cd $UX_DIR"
;;
-ip*)
shift
IP_ADDRESS=$1 if [ -z "$IP_ADDRESS" ] ; then echo"$0 `uname -n`: -ip requires ip-address "
ssl_ds_usage fi
USE_IP=TRUE
IP_PARAM="-ip $IP_ADDRESS"
;;
-h|-help|"-?"|*)
ssl_ds_usage
;;
esac
shift done
}
############################## ssl_ds_rem_stress ####################### # local shell function to perform the client part of the SSL stress test ########################################################################
ssl_ds_rem_stress()
{
testname="SSL remote part of Stress test (`uname -n`)" echo"$SCRIPTNAME `uname -n`: $testname"
CONTINUE=$MAX_CERT while [ $CONTINUE -ge $MIN_CERT ] do echo"strsclnt -D -p ${PORT} -d ${P_R_CLIENTDIR} -w nss -c 1 $verbose " echo" -n TestUser$CONTINUE ${HOSTADDR} #`uname -n`"
${BINDIR}/strsclnt -D -p ${PORT} -d . -w nss -c 1 $verbose \
-n "TestUser$CONTINUE" ${HOSTADDR} & #${HOSTADDR} &
CONTINUE=`expr $CONTINUE - 1 ` #sleep 4 #give process time to start up done
html_msg 0 0 "${testname}"#FIXME
}
######################### ssl_ds_dist_stress ########################### # local shell function to perform the server part of the new, distributed # SSL stress test ########################################################################
echo cd "${CLIENTDIR}"
cd "${CLIENTDIR}" if [ -z "CD_QADIR_SSL" ] ; then
CD_QADIR_SSL="cd $QADIR/ssl" else cp -r $HOSTDIR $HOSTDIR/../../../../../booboo_Solaris8/mozilla/tests_results/security fi
############################ get_certrange ############################# # local shell function to find the range of certs that the next remote # client is supposed to use (only for server side of the dist stress test ########################################################################
get_certrange()
{
rangeOK=`echo $1 | sed -e 's/[0-9][0-9]*/OK/'` if [ -z "$rangeOK" -o "$rangeOK" != "OK" -o $1 = "OK" ] ; then
range=10 echo"$SCRIPTNAME `uname -n`: $1 is not a valid number of certs " echo" defaulting to 10 for $client" else
range=$1 if [ $range -gt $GLOB_MAX_CERT ] ; then
range=$GLOB_MAX_CERT fi fi if [ -z "$FROM_CERT" ] ; then# start new on top of the cert stack
FROM_CERT=$GLOB_MAX_CERT elif [ `expr $FROM_CERT - $range + 1 ` -lt 0 ] ; then
FROM_CERT=$GLOB_MAX_CERT # dont let it fall below 0 on the TO_CERT
fi
TO_CERT=`expr $FROM_CERT - $range + 1 ` if [ $TO_CERT -lt 0 ] ; then# it's not that I'm bad in math, I just
TO_CERT=0 # don't trust expr... fi
CERTRANGE="${TO_CERT}-${FROM_CERT}"
FROM_CERT=`expr ${TO_CERT} - 1 ` #start the next client one below
}
################## main #################################################
DO_DIST_ST="TRUE"
. ./ssl.sh
ssl_ds_init $* if [ -n "$DO_REM_ST" -a "$DO_REM_ST" = "TRUE" ] ; then
ssl_ds_rem_stress
exit 0 #no cleanup on purpose elif [ -n "$DO_DIST_ST" -a "$DO_DIST_ST" = "TRUE" ] ; then
ssl_ds_dist_stress fi
ssl_cleanup
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.