summaryrefslogtreecommitdiff
path: root/qa/301
diff options
context:
space:
mode:
Diffstat (limited to 'qa/301')
-rwxr-xr-xqa/301119
1 files changed, 119 insertions, 0 deletions
diff --git a/qa/301 b/qa/301
new file mode 100755
index 0000000..bc4d9b5
--- /dev/null
+++ b/qa/301
@@ -0,0 +1,119 @@
+#!/bin/sh
+# PCP QA Test No. 301
+# Stop pmcd and check no pmdas are still running.
+#
+# Copyright (c) 1995-2002 Silicon Graphics, Inc. All Rights Reserved.
+#
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+# get standard filters
+. ./common.product
+. ./common.filter
+. ./common.check
+
+signal=$PCP_BINADM_DIR/pmsignal
+status=1 # failure is the default!
+trap "rm -f $tmp.*; exit \$status" 0 1 2 3 15
+
+# real QA test starts here
+
+
+# Useful definitions...
+DEADLIMIT=120 # seconds
+BREATHER=30 # seconds
+
+# Debugging controls...
+CMND=$seq # already done for us
+DBUG=${DBUG:-FALSE} # normally, the name of this script, $0
+DBUGLVL=${DBUGLVL:-1} # normally set to 1
+
+# Requires common.product:
+case $PCP_PLATFORM
+in
+ linux|darwin|solaris)
+ AMTIME1970PROG="date +%s"
+ ;;
+ *)
+ if [ -x /usr/etc/amtime1970 ]
+ then
+ AMTIME1970PROG=/usr/etc/amtime1970
+ else
+ echo "Unknown platfrom $PCP_PLATFORM"
+ exit 1
+ fi
+ ;;
+esac
+
+dbugEcho () {
+ if [ $# -gt 1 -a "$DBUG" != FALSE -a "$DBUG" = "$CMND" -a "$DBUGLVL" -ge "$1" ]
+ then
+ shift
+ printf " ?: " 1>&2
+ for P
+ do
+ printf "%s" "$P" 1>&2
+ done
+ printf "\n" 1>&2
+ fi
+}
+
+
+waitTilDead () {
+ NUMPROC=1
+ DEADSTART=`$AMTIME1970PROG`
+ DEADTIME=0
+ while [ "$NUMPROC" -gt 0 -a $DEADTIME -lt $DEADLIMIT ]
+ do
+ sleep 1
+ NUMPROC=`ps -eo "args pid" | $PCP_AWK_PROG '
+/^\/var\/pcp\/pmdas\/.*pmda.*/ { print $NF," ",$1 }
+' | wc -l`
+ DEADTIME=`$AMTIME1970PROG`
+ DEADTIME=`expr $DEADTIME - $DEADSTART`
+ done
+
+ echo $DEADTIME
+ return 0
+}
+
+
+dbugEcho 1 "Shutting down PCP"
+$sudo sh $PCP_RC_DIR/pcp stop >/dev/null &
+
+# Wait for PMDAs with sprocs to exit.
+dbugEcho 1 "Waiting until PCP is dead"
+SDTIME=`waitTilDead`
+if [ $? != 0 ]
+then
+ echo 1>&2 "$seq: unable to determine current time of day"
+ status=2
+else
+ if [ "$SDTIME" -ge $DEADLIMIT ]
+ then
+ echo 1>&2 "$seq: PCP could not be shut down after $DEADLIMIT seconds"
+ status=2
+ else
+ dbugEcho 1 "PMDAs took $SDTIME second(s) to shut down"
+ fi
+fi
+
+# really make sure the "$PCP_RC_DIR/pcp stop" is complete, so it does
+# not terminate the pmcd we're going to start
+#
+$sudo $signal -a pmcd >/dev/null 2>&1
+wait
+
+if [ $status -gt 1 ]
+then
+ dbugEcho 1 "Recovering after $BREATHER seconds"
+ sleep $BREATHER
+fi
+dbugEcho 1 "Starting up PCP"
+$sudo sh $PCP_RC_DIR/pcp restart >/dev/null
+_wait_for_pmcd
+
+# success or failure, we've finished
+status=`expr $status - 1`
+exit