#!/bin/sh

#    Copyright (c) International Business Machines  Corp., 2003
#
#    This program is free software;  you can redistribute it and/or modify
#    it under the terms of the GNU General Public License as published by
#    the Free Software Foundation; either version 2 of the License, or
#    (at your option) any later version.
#
#    This program is distributed in the hope that it will be useful,
#    but WITHOUT ANY WARRANTY;  without even the implied warranty of
#    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See
#    the GNU General Public License for more details.
#
#    You should have received a copy of the GNU General Public License
#    along with this program;  if not, write to the Free Software
#    Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
#
#   FILE        : ltpstress.sh
#   DESCRIPTION : A script that will stress your system using the LTP testsuite.
#   REQUIREMENTS:
#                 1) The 'rsh' daemon must be running and NFS (versions 2 &3) must be
#                    configured into the kernel and installed for networking tests.
#		  2) The 'sar' application must be installed to use the "-S" option
#   HISTORY     :
#       02/11/2003 Robbie Williamson (robbiew@austin.ibm.com)
#               written
#	11/20/2008 Aime Le Rouzic (aime.lerouzic@bull.net)
#		adapt script to work with portmap and rpcbind
##############################################################

export LTPROOT=${PWD}
echo $LTPROOT | grep testscripts > /dev/null 2>&1
if [ $? -eq 0 ]; then
 cd ..
 export LTPROOT=${PWD}
fi
export TMPBASE="/tmp"
export TMP="${TMPBASE}/ltpstress-$$"
export PATH=$LTPROOT/testcases/bin:$PATH
memsize=0
hours=24
PROC_NUM=0
leftover_memsize=0
duration=86400
datafile="/tmp/ltpstress.data"
iofile="/tmp/ltpstress.iodata"
logfile="/tmp/ltpstress.log"
interval=10
Sar=0
Top=0
Iostat=0
LOGGING=0
NO_NETWORK=0

usage()
{

	cat <<-END >&2
	usage: ${0##*/} [ -d datafile ] [ -i # (in seconds) ] [ -I iofile ] [ -l logfile ] [ -m # (in Mb) ] [ -n ] [ -t duration ] [ [-S]|[-T] ]

    -d datafile     Data file for 'sar' or 'top' to log to. Default is "/tmp/ltpstress.data".
    -i # (in sec)   Interval that 'sar' or 'top' should take snapshots. Default is 10 seconds.
    -I iofile       Log results of 'iostat' to a file every interval. Default is "/tmp/ltpstress.iodata".
    -l logfile      Log results of test in a logfile. Default is "/tmp/ltpstress.log"
    -m # (in Mb)    Specify the _minimum_ memory load of # megabytes in background. Default is all the RAM + 1/2 swap.
    -n              Disable networking stress.
    -S              Use 'sar' to measure data.
    -T              Use LTP's modified 'top' tool to measure data.
    -t duration     Execute the testsuite for given duration in hours. Default is 24.

	example: ${0##*/} -d /tmp/sardata -l /tmp/ltplog.$$ -m 128 -t 24 -S
	END
exit
}

check_memsize()
{
  while [ $memsize -gt 1048576 ]   #if greater than 1GB
  do
    PROC_NUM=$(( PROC_NUM + 1 ))
    memsize=$(( $memsize - 1048576 ))
  done
  leftover_memsize=$memsize
}


mkdir -p ${TMP}

cd ${TMP}
if [ $? -ne 0 ]; then
  echo "could not cd ${TMP} ... exiting"
  exit
fi

while getopts d:hi:I:l:STt:m:n\? arg
do  case $arg in

	d)	datafile="$OPTARG";;

        h)      echo "Help info:"
		usage;;

	i)	interval=$OPTARG;;

	I)	Iostat=1
		iofile=$OPTARG;;

        l)      logfile=$OPTARG
		LOGGING=1;;

        m)	memsize=$(($OPTARG * 1024))
		check_memsize;;

	n)	NO_NETWORK=1;;

        S)      if [ $Top -eq 0 ]; then
                  Sar=1
                else
                  echo "Cannot specify -S and -T...exiting"
                  exit
                fi;;

	T)	if [ $Sar -eq 0 ]; then
                  $LTPROOT/testcases/bin/top -h 2>&1 | grep "\-f filename" >/dev/null
		  if [ $? -eq 0 ]; then
                    Top=1
                  else
		    echo "ERROR: Please build and install the version of top in the /tools dir"
		    exit
 		  fi
                else
                  echo "Cannot specify -S and -T...exiting"
                  exit
                fi;;

        t)      hours=$OPTARG
		duration=$(($hours * 60 * 60));;

        \?)     echo "Help info:"
		usage;;
        esac
done

if [ $NO_NETWORK -eq 0 ];then
  # Networking setup
  echo `hostname` >> /root/.rhosts
  chmod 644 /root/.rhosts

  netstat -an | grep 514
  if [ $? -eq 1 ];then
    echo "Error: 'rsh' daemon not active on this machine."
    exit 1
  fi

  ps -ef | grep portmap | grep -v grep
  if [ $? -eq 1 ];then
    ps -ef | grep rpcbind | grep -v grep
    if [ $? -eq 1 ];then
      echo "Portmap and rpcbind not running"
      echo "Let's start portmap"
      /sbin/portmap &
      sleep 1
      ps -ef | grep portmap | grep -v grep
      if [ $? -eq 1 ];then
        echo "Could not start portmap, Let's start rpcbind"
        /sbin/rpcbind &
        sleep 1
        ps -ef | grep rpcbind | grep -v grep
        if [ $? -eq 1 ];then
          Echo "Error: Could not start rpcbind daemon."
          exit 1
        else
          echo "The RPC test suite is using rpcbind"
        fi
      else
	echo "The RPC test suite is using portmap"
      fi
    else
      echo "The RPC test suite is using rpcbind"
    fi
  else
    echo "The RPC test suite is using portmap"
  fi

  ps -e | grep nfsd
  if [ $? -eq 1 ];then
    /usr/sbin/rpc.nfsd
  fi
  sleep 1
  ps -e | grep nfsd
  if [ $? -eq 1 ];then
    echo "Error: Could not start nfs server daemon."
    exit 1
  fi

  ps -e | grep rpc.statd
  if [ $? -eq 1 ];then
    /sbin/rpc.statd
  fi
  sleep 1
  ps -e | grep rpc.statd
  if [ $? -eq 1 ];then
    echo "Error: Could not start statd daemon."
    exit 1
  fi

  ps -e | grep rpc.mountd
  if [ $? -eq 1 ];then
    /usr/sbin/rpc.mountd
  fi
  sleep 1
  ps -e | grep rpc.mountd
  if [ $? -eq 1 ];then
    echo "Error: Could not start mountd daemon."
    exit 1
  fi
  # End of network setup
fi

#If -m not set, use all the RAM + 1/2 swapspace
if [ $memsize -eq 0 ]; then
  TOTALRAM=$(free -m | grep Mem: | awk {'print $2'})
  TOTALSWAP=$(free -m | grep Swap: | awk {'print $2'})
  TESTSWAP=$(($TOTALSWAP / 2))
  if [ $TESTSWAP -eq 0 ]; then
       #if there is no swap in the system, use only the free RAM
       TESTMEM=$(free -m | grep Mem: | awk {'print $4'})
  else
       TESTMEM=$(($TESTSWAP + $TOTALRAM))
  fi
 #Convert to kilobytes
  memsize=$(($TESTMEM * 1024))
  check_memsize
fi

# Set max processes to unlimited.
ulimit -u unlimited

if [ $PROC_NUM -gt 0 ];then
  genload --vm $PROC_NUM --vm-bytes 1073741824 2>&1 1>/dev/null &
fi
if [ $leftover_memsize -gt 0 ];then
  genload --vm 1 --vm-bytes $(($leftover_memsize * 1024)) 2>&1 1>/dev/null &
fi

if [ $NO_NETWORK -eq 0 ];then
 netpipe.sh >/dev/null 2>/dev/null &
fi
${LTPROOT}/bin/rand_lines -g ${LTPROOT}/runtest/stress.part1 > ${TMP}/stress.part1
${LTPROOT}/bin/rand_lines -g ${LTPROOT}/runtest/stress.part2 > ${TMP}/stress.part2
${LTPROOT}/bin/rand_lines -g ${LTPROOT}/runtest/stress.part3 > ${TMP}/stress.part3

sleep 2

if [ $Sar -eq 1 ]; then
  sar -o $datafile $interval 0 &
fi

if [ $Top -eq 1 ]; then
  screen -d -m $LTPROOT/testcases/bin/top -o $datafile -d $interval &
  SCREEN_PID=$(ps -e | grep screen | awk {'print $1'})
fi

sleep 2

if [ $Iostat -eq 1 ]; then
  while [ 0 = 0 ];do iostat -dt >> $iofile; sleep $interval;done &
  Iostat_PID=$?
fi

sleep 2

output1=${TMPBASE}/ltpstress.$$.output1
output2=${TMPBASE}/ltpstress.$$.output2
output3=${TMPBASE}/ltpstress.$$.output3

${LTPROOT}/bin/ltp-pan -e -p -q -S -t ${hours}h -a stress1 -n stress1 -l $logfile -f ${TMP}/stress.part1 -o $output1 &
${LTPROOT}/bin/ltp-pan -e -p -q -S -t ${hours}h -a stress2 -n stress2 -l $logfile -f ${TMP}/stress.part2 -o $output2 &
${LTPROOT}/bin/ltp-pan -e -p -q -S -t ${hours}h -a stress3 -n stress3 -l $logfile -f ${TMP}/stress.part3 -o $output3 &

echo "Running LTP Stress for $hours hour(s) using $(($memsize/1024)) Mb"
echo ""
echo "Test output recorded in:"
echo "        $output1"
echo "        $output2"
echo "        $output3"

# Sleep a little longer than duration to let ltp-pan "try" to gracefully end itself.
sleep $(($duration + 10))

if [ $Sar -eq 1 ]; then
  killall -9 sadc >/dev/null 2>&1
fi
if [ $Top -eq 1 ]; then
  kill $SCREEN_PID >/dev/null 2>&1
fi
killall -9 ltp-pan >/dev/null 2>&1
killall -9 genload >/dev/null 2>&1
if [ $NO_NETWORK -eq 0 ];then
  killall -9 netpipe.sh >/dev/null 2>&1
  killall -9 NPtcp >/dev/null 2>&1
fi
if [ $Iostat -eq 1 ];then
  kill -9 $Iostat_PID >/dev/null 2>&1
fi
rm -rf ${TMP}
echo "Testing done"
if [ $LOGGING -eq 1 ];then
  grep FAIL $logfile >/dev/null 2>&1
  if [ $? -eq 1 ]; then
    echo "All Tests PASSED!"
  else
    echo "Testing yielded failures. See logfile: $logfile"
    if [ $NO_NETWORK -eq 1 ];then
      echo "The NFS related tests should fail because network stress was disabled"
    fi
  fi
fi


