Back to the main page

The script for configuring and running SunVTS

Please see this page for more info about SunVTS

#!/bin/sh	
#set -x	
## variable	
VTSPATH=/usr/sunvts/bin	
LOGFILE=/tmp/SunVTS.LOG	
DATE=`date +'%Y-%m-%d_%H:%M:%S'`

# error function
err(){
        echo "\n ERROR: $* \n" ; exit 1
}

# check if user is a root	
if [ `id | cut -d= -f2 | cut -d\( -f1` = 0 ]	
	then	
		# user is root	
		sleep 1	
	else	
		korisnik=`id | cut -d= -f2 | cut -d\( -f2 |cut -d\) -f1`	
		echo	
		echo You are NOT root. You are $korisnik so cannot run script - sorry ...	
		echo	
fi	

####################################################	
## Check if required SunVTS packages are installed	
####################################################	

for pkg in SUNWvts SUNWvtsmn SUNWvtsr SUNWvtss SUNWvtsts
do
        /usr/bin/pkginfo ${pkg} 1>/dev/null || err "The package ${pkg} is not installed."
        echo "Okay: ${pkg} installed"

done
	
##########################################	
# check if SunVTS is running on the system	
##########################################
	
/usr/bin/pgrep vtsk > /dev/null	
if [ "$?" -ne "0" ]	
	then	
		echo "\n The SunVTS is installed and it is not running on the system in this moment!"	
	else	
		echo "\n Seems that SunVTS is running on this system. The PID id `/usr/bin/pgrep vtsk`. \	
		Please check this. The script will exit now." ; exit 1	
fi	
	
## Inputs	
# Duration of test	
echo	
echo "\n For how long do you want to run the SunVTS test [in days - must be full day]?"	
echo	
read DAY	
	
# convert duration from hours to minutes	
DURATION=`expr ${DAY} \* 24 \* 60`	
	
# Test mode	
echo; echo "\n Please enter test mode [ Online Stress, System Exerciser, Component Stress ]"	
echo "\n ----------------------------------------------------------------------------------"	
echo; echo "\n Online Stress: Will validate h/w without having significant impact on running applications!"	
echo; echo "\n System Exerciser: Will test system as whole with all components. All tests will run in parallel. No other applications should run during test time."	
echo; echo "\n Component Stress: Will do targeted testing of components. Will do maximum stress on component. Test will not run in parallel. No other applications should run during test time."	
read TMODE	
	
# Error Limit	
echo; echo "\n Please enter number of errors that will cause test to terminate."	
read ERRORLIMIT	
	
# test session name	
echo; echo "\n Please enter name of SunVTS test session, for example hostname-session-1"	
echo; echo "\n If session already exist, it will be overwritten!"	
read SESSION	
	
# What components to test	
echo "\n Please enter do you want to test next components:"	
echo "\n Disk [y/n]"	
read DISK
	
echo "\n Interconnect [y/n]"	
read INT
	
echo "\n Ioports [y/n]"	
read IO	

echo "\n Media [y/n]"	
read MEDIA
	
echo "\n Memory [y/n]"	
read MEM
	
echo "\n Network [y/n]"	
read NET
	
echo "\n Processor [y/n]"	
read PROC
	
	
# start SunVTS in CLI	
echo "\n Starting SunVTS in CLI ...."	
${VTSPATH}/startsunvts -c	
	
# reset number of pass/error from possibly previous tests	
echo "\n Reset number of pass/error from possibly previous test"	
${VTSPATH}/vts_cmd reset || exit 1	
	
# Probes all devices and update SunVTS kernel	
echo "\n Probes all devices and update SunVTS kernel ...."	
${VTSPATH}/vts_cmd reprobe || exit 1	
	
if [ ${DISK} != "y" ]; then	
	echo "\n Disabling test on Disk"	
	${VTSPATH}/vts_cmd disable_test Disk || exit 1	
else	
	echo "\n Setting test options for Disk"	
	${VTSPATH}/vts_cmd set_test_options Disk \
	[Stress:high,Scheduling Policy:Test Time,Test Time:${DURATION},Error Limit:${ERRORLIMIT}] || exit 1	
fi	
	
if [ ${INT} != "y" ]; then	
	echo "\n Disabling test on Interconnect"	
	${VTSPATH}/vts_cmd disable_test Interconnect || exit 1	
else	
	echo "\n Setting test options for Interconnect"	
	${VTSPATH}/vts_cmd set_test_options Interconnect \
	[Stress:high,Scheduling Policy:Test Time,Test Time:${DURATION},Error Limit:${ERRORLIMIT}] || exit 1	
fi	
	
if [ ${IO} != "y" ]; then	
	echo "\n Disabling test on Ioports"	
	${VTSPATH}/vts_cmd disable_test Ioports || exit 1	
else	
	echo "\n Setting test options for Ioports"	
	${VTSPATH}/vts_cmd set_test_options Ioports \
	[Stress:high,Scheduling Policy:Test Time,Test Time:${DURATION},Error Limit:${ERRORLIMIT}] || exit 1	
fi	
	
if [ ${MEDIA} != "y" ]; then	
	echo "\n Disabling test on Media"	
	${VTSPATH}/vts_cmd disable_test Media || exit 1	
else	
	echo "\n Setting test options for Media"	
	${VTSPATH}/vts_cmd set_test_options Media \
	[Stress:high,Scheduling Policy:Test Time,Test Time:${DURATION},Error Limit:${ERRORLIMIT}] || exit 1	
fi	
	
if [ ${MEM} != "y" ]; then	
	echo "\n Disabling test on Memory"	
	${VTSPATH}/vts_cmd disable_test Memory || exit 1	
else	
	echo "\n Setting test options for Memory"	
	${VTSPATH}/vts_cmd set_test_options Memory \
	[Stress:high,Scheduling Policy:Test Time,Test Time:${DURATION},Error Limit:${ERRORLIMIT}] || exit 1	
fi	
	
if [ ${NET} != "y" ]; then	
	echo "\n Disabling test on Network"	
	${VTSPATH}/vts_cmd disable_test Network || exit 1	
else	
	echo "\n Setting test options for Network"	
	${VTSPATH}/vts_cmd set_test_options Network \
	[Stress:high,Scheduling Policy:Test Time,Test Time:${DURATION},Error Limit:${ERRORLIMIT}] || exit 1	
fi	
	
if [ ${PROC} != "y" ]; then	
	echo "\n Disabling test on Processor"	
	${VTSPATH}/vts_cmd disable_test Processor || exit 1	
else	
	echo "\n Setting test options for Processor"	
	${VTSPATH}/vts_cmd set_test_options Processor \
	[Stress:high,Scheduling Policy:Test Time,Test Time:${DURATION},Error Limit:${ERRORLIMIT}] || exit 1	
fi	
	
# set global options	
echo "\n Setting global testing options"	

${VTSPATH}/vts_cmd set_global_options \
[Duration of Testing:${DURATION},Verbose:Enable,Duration of Logging:${DURATION}] || exit 1	
	
# check global options	
echo "\n Checking global options"	

${VTSPATH}/vts_cmd get_global_options || exit 1	

echo " \n Are global options okay?"	
echo " \n Hit ENTER to continue or Ctrl.C to abort ***"	
echo " \n ... waiting for response ..."	

read xxx	
	
# save session	
echo "\n Saving session ${SESSION}"	

${VTSPATH}/vts_cmd save_session [overwrite:yes,defaultMode:${TMODE},name:${SESSION}] || exit 1	
	
# load session	
echo "\n Loading session ${SESSION}"	

${VTSPATH}/vts_cmd load_session [overwrite:yes,defaultMode:${TMODE},name:${SESSION}] \
|| exit 1	
	
# start all enabled tests	
echo "\n Start all enabled tests"	

${VTSPATH}/vts_cmd start || exit 1	
	
# check session	
echo "\n Listing loaded and running session"	

${VTSPATH}/vts_cmd get_session_name || exit 1	
	
# give 15 sec to system to start testing components	
echo "\n Please wait 15 sec for tests to start on all selected components ....."	
sleep 15	
	
# check test status	
echo "\n Check test status ..."	

${VTSPATH}/vts_cmd get_status || exit 1	
	
# check that tests are running	
echo "\n Tests are running ...."	

${VTSPATH}/vts_cmd list_tests || exit 1	

echo; echo "\n Please check results in ${DAY} days!"	
echo; echo "\n Use the command ${VTSPATH}/vts_cmd list_tests"	
	
exit 0	
Back to the main page