#!/bin/bash
#
# 07/10/02 - Jeff Martin - martinjn@us.ibm.com: Added instance and
# time command line options
#
# 12/15/02 - Manoj Iyer - manjo@mail.utexas.edu: Added options to run
# LTP under CPU, IO and MM load.
#
# 01/26/03 - Manoj Iyer - manjo@mail.utexas.edu: Added -f option; Execute
# user defined set of testcases.
#
# 01/27/03 - Manoj Iyer - manjo@mail.utexas.edu: Enabled formatted printing
# of logfiles.
#
# 01/28/03 - Manoj Iyer - manjo@mail.utexas.edu: added option to enable
# formatted printing of logfiles.
#
# 01/29/03 - Manoj Iyer - manjo@mail.utexas.edu: merged networktests.sh with
# this script, added the -n option to run these
# tests. Also, added -h option to print help messages.
#
# 01/29/03 - Manoj Iyer - manjo@mail.utexas.edu:
# added code to cause pan to print less verbose
# output.
# 02/01/03 - Manoj Iyer - manjo@mail.utexas.edu: Removed variables
# initialization of RHOST and PASSWD.
#
# 02/05/03 - Robbie Williamson - Added configurability to the optional load
# generator sections. Also added network traffic
# option.
#
cd `dirname $0`
export LTPROOT=${PWD}
export TMPBASE="/tmp"
export TMP="${TMPBASE}/runalltests-$$"
export PATH="${PATH}:${LTPROOT}/../testcases/bin"
cmdfile=""
pretty_prt=" "
alt_dir=0
run_netest=0
quiet_mode=" "
NetPipe=0
GenLoad=0
usage()
{
cat <<-END >&2
usage: ./${0##*/} -c [-d tmpdir] [-f cmdfile ] [-i # (in Mb)] [ -l logfile ]
[ -m # (in Mb)] -N -n -q [ -r ltproot ] [ -t duration ] [ -x instances ]
-c Run LTP under additional background CPU load.
-d tmpdir Directory where temporary files will be created.
-f cmdfile Execute user defined list of testcases.
-h Help. Prints all available options.
-i # (in Mb) Run LTP with a _minimum_ IO load of # megabytes in background.
-l logfile Log results of test in a logfile.
-m # (in Mb) Run LTP with a _minimum_ memory load of # megabytes in background.
-N Run all the networking tests.
(export RHOST = remote hostname)
(export PASSWD = passwd of remote host)
-n Run LTP with network traffic in background.
-p Human readable format logfiles.
-q Print less verbose output to screen.
-r ltproot Fully qualified path where testsuite is installed.
-t duration Execute the testsuite for given duration in hours.
-x instances Run multiple instances of this testsuite.
example: ./${0##*/} -i 1024 -m 128 -p -q -l /tmp/resultlog.$$ -d ${PWD}
END
exit
}
mkdir -p ${TMP}
cd ${TMP}
if [ $? -ne 0 ]; then
echo "could not cd ${TMP} ... exiting"
exit
fi
while getopts cd:f:hi:l:m:Nnpqr:t:x arg
do case $arg in
c)
$LTPROOT/../testcases/bin/genload --cpu 1 >/dev/null 2>&1 &
GenLoad=1 ;;
d) # append $$ to TMP, as it is recursively
# removed at end of script.
TMPBASE=$OPTARG;;
f) # Execute user defined set of testcases.
cmdfile=$OPTARG;;
h) usage;;
i)
bytesize=$(($OPTARG * 1024 * 1024))
$LTPROOT/../testcases/bin/genload --io 1 >/dev/null 2>&1 &
$LTPROOT/../testcases/bin/genload --hdd 0 --hdd-bytes $bytesize \
>/dev/null 2>&1 &
GenLoad=1 ;;
l)
if [ ${OPTARG:0:1} != "/" ]
then
if [ -d $LTPROOT/results ]
then
logfile="-l $LTPROOT/results/$OPTARG"
else
mkdir -p $LTPROOT/results
if [ $? -ne 0 ]
then
echo "ERROR: failed to create $LTPROOT/results"
exit 1
fi
logfile="-l $LTPROOT/results/$OPTARG"
fi
alt_dir=1
else
logfile="-l $OPTARG"
fi ;;
m)
memsize=$(($OPTARG * 1024 * 1024))
$LTPROOT/../testcases/bin/genload --vm 0 --vm-bytes $memsize\
>/dev/null 2>&1 &
GenLoad=1;;
N) run_netest=1;;
n) $LTPROOT/../testcases/bin/netpipe.sh
NetPipe=1;;
p) pretty_prt=" -p ";;
q) quiet_mode=" -q ";;
r) LTPROOT=$OPTARG;;
t) # In case you want to specify the time
# to run from the command line
# (2m = two minutes, 2h = two hours, etc)
duration="-t $OPTARG" ;;
x) # number of ltp's to run
instances="-x $OPTARG";;
\?) usage;;
esac
done
if [ -z $PASSWD ]
then
echo " "
echo "ERROR:"
echo "Please export enviroment variable PASSWD"
echo "INFO: export PASSWD = 'root's password'"
exit 1
fi
#if [ $run_netest -eq 1 ]
#then
# if [[ -z $RHOST || -z $PASSWD ]]
# then
# echo " "
# echo " "
# echo "ERROR: Initializing networking tests."
# echo "INFO: Please export RHOST = 'name of the remote host machine'"
# echo "INFO: Please export PASSWD = 'passwd of the remote host machine'"
# echo "INFO: before running the networking tests."
# echo " "
# echo " "
# echo " "
# usage
# fi
#fi
if [ -n "$instances" ]; then
instances="$instances -O ${TMP}"
fi
# If user does not provide a command file select a default set of testcases
# to execute.
if [ -z $cmdfile ]
then
cat ${LTPROOT}/../runtest/admin_tools > ${TMP}/alltests
else
cat $cmdfile > ${TMP}/alltests
fi
if [ $run_netest -eq 1 ]
then
cat ${LTPROOT}/../runtest/network_commands >> ${TMP}/alltests
fi
# The fsx-linux tests use the SCRATCHDEV environment variable as a location
# that can be reformatted and run on. Set SCRATCHDEV if you want to run
# these tests. As a safeguard, this is disabled.
unset SCRATCHDEV
if [ -n "$SCRATCHDEV" ]; then
cat ${LTPROOT}/../runtest/fsx >> ${TMP}/alltests
fi
# display versions of installed software
${LTPROOT}/../ver_linux
${LTPROOT}/../bin/ltp-pan $quiet_mode -e -S $instances $duration -a $$ -n $$ $pretty_prt -f ${TMP}/alltests $logfile
if [ $? -eq 0 ]; then
echo ltp-pan reported PASS
else
echo ltp-pan reported FAIL
fi
if [ $GenLoad -eq 1 ]
then
killall -9 genload >/dev/null 2>&1
fi
if [ $NetPipe -eq 1 ]
then
killall -9 NPtcp
fi
if [ $alt_dir -eq 1 ]
then
echo " "
echo "###############################################################"
echo " "
echo " result log is in the $LTPROOT/results directory"
echo " "
echo "###############################################################"
echo " "
fi
rm -rf ${TMP}