blob: 92f54c0ad5b87b66e81b326361f303d594875890 [file] [log] [blame]
#!/bin/sh
#
# 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.
#
# 04/23/03 - Robbie Williamson - Added "-o" option and ability to set network
# testing variables RHOST and PASSWD.
#
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 ] [ -o outputfile ]
[ -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.
-n Run LTP with network traffic in background.
-o outputfile Redirect test output to a file.
-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. Examples:
-t 60s = 60 seconds
-t 45m = 45 minutes
-t 24h = 24 hours
-t 2d = 2 days
-x instances Run multiple instances of this testsuite.
example: ./${0##*/} -i 1024 -m 128 -p -q -l /tmp/resultlog.$$ -d ${PWD}
NOTE: If you do not wish to learn these options use the "runltp" program instead.
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:Nno:pqr:t:x: arg
do case $arg in
c)
$LTPROOT/testcases/bin/genload --cpu 1 2>&1 1>/dev/null &
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 2>&1 1>/dev/null &
$LTPROOT/testcases/bin/genload --hdd 0 --hdd-bytes $bytesize \
2>&1 1>/dev/null &
GenLoad=1 ;;
l)
case $OPTARG in
/*)
logfile="-l $OPTARG" ;;
*)
if [ ! -d $LTPROOT/results ]; then
mkdir -p $LTPROOT/results
if [ $? -ne 0 ]; then
echo "ERROR: failed to create $LTPROOT/results"
exit 1
fi
fi
logfile="-l $LTPROOT/results/$OPTARG"
alt_dir=1 ;;
esac ;;
m)
memsize=$(($OPTARG * 1024 * 1024))
$LTPROOT/testcases/bin/genload --vm 0 --vm-bytes $memsize\
2>&1 1>/dev/null &
GenLoad=1;;
N) run_netest=1;;
n) $LTPROOT/testcases/bin/netpipe.sh
NetPipe=1;;
o) outputfile="-o $OPTARG" ;;
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
echo "WARNING: The use of -x can cause unpredictable failures, as a"
echo " result of concurrently running multiple tests designed"
echo " to be ran exclusively."
echo ""
echo "Pausing for 10 seconds..."
sleep 10
instances="-x $OPTARG -O ${TMP}";;
\?) usage;;
esac
done
if [ $run_netest -eq 1 ]
then
if [ -z $RHOST ] || [ -z $PASSWD ]
then
if [ -z $RHOST ]
then
echo " "
echo "Please enter RHOST = 'name of the remote host machine'"
echo -n "-> "
read RHOST
fi
if [ -z $PASSWD ]
then
echo " "
echo "Please enter PASSWD = 'root passwd of the remote host machine'"
echo -n "-> "
read PASSWD
fi
fi
export $RHOST
export $PASSWD
fi
# If user does not provide a command file select a default set of testcases
# to execute.
if [ -z $cmdfile ]
then
cat ${LTPROOT}/runtest/syscalls ${LTPROOT}/runtest/fs ${LTPROOT}/runtest/fsx ${LTPROOT}/runtest/dio ${LTPROOT}/runtest/mm ${LTPROOT}/runtest/ipc ${LTPROOT}/runtest/sched ${LTPROOT}/runtest/math ${LTPROOT}/runtest/pty > ${TMP}/alltests
else
cat $cmdfile > ${TMP}/alltests
fi
if [ $run_netest -eq 1 ]
then
cat ${LTPROOT}/runtest/tcp_cmds >> ${TMP}/alltests
cat ${LTPROOT}/runtest/multicast >> ${TMP}/alltests
cat ${LTPROOT}/runtest/rpc >> ${TMP}/alltests
cat ${LTPROOT}/runtest/nfs >> ${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
# check for required users and groups
${LTPROOT}/IDcheck.sh
# display versions of installed software
${LTPROOT}/ver_linux
${LTPROOT}/pan/pan $quiet_mode -e -S $instances $duration -a $$ -n $$ $pretty_prt -f ${TMP}/alltests $logfile $outputfile
if [ $? -eq 0 ]; then
echo pan reported PASS
else
echo pan reported FAIL
fi
if [ $GenLoad -eq 1 ]
then
killall -9 genload
fi
if [ $NetPipe -eq 1 ]
then
killall -9 NPtcp
fi
if [ $alt_dir -eq 1 ]
then
echo " "
echo "###############################################################"
echo " "
echo " Done executing testcases."
echo " result log is in the $LTPROOT/results directory"
echo " "
echo "###############################################################"
echo " "
fi
rm -rf ${TMP}