summaryrefslogtreecommitdiff
path: root/qa/504
diff options
context:
space:
mode:
Diffstat (limited to 'qa/504')
-rwxr-xr-xqa/504173
1 files changed, 173 insertions, 0 deletions
diff --git a/qa/504 b/qa/504
new file mode 100755
index 0000000..3aaa49a
--- /dev/null
+++ b/qa/504
@@ -0,0 +1,173 @@
+#! /bin/sh
+# PCP QA Test No. 504
+# exercises pmie_check functionality
+# Version of No. 115 ... this one uses pmsocks
+#
+# Copyright (c) 1995-2002 Silicon Graphics, Inc. All Rights Reserved.
+#
+
+# get standard filters
+. ./common.product
+. ./common.filter
+. ./common.check
+
+seq=`basename $0`
+
+rm -f $seq.out
+if [ $PCP_VER -lt 3810 ]
+then
+ ln $seq.out.1 $seq.out || exit 1
+else
+ ln $seq.out.2 $seq.out || exit 1
+fi
+
+echo "QA output created by $seq"
+
+if [ "`pmsocks echo ok 2>&1`" != ok ]
+then
+ echo "pmsocks is not installed and/or not configured" >$seq.notrun
+ echo "$seq: [not run] `cat $seq.notrun`"
+ exit 0
+fi
+
+# get standard filters
+. ./common.product
+. ./common.check
+. ./common.filter
+. ./common.config
+
+# Requires common.product:
+if [ "$PCP_VER" -lt 2200 ]
+then
+ echo "test aborted; known problem with pmsocks (#816862)" >$seq.notrun
+ echo "$seq: [not run] `cat $seq.notrun`"
+ exit 0
+fi
+
+signal=$PCP_BINADM_DIR/pmsignal
+lhost=`hostname`
+host=`_get_fqdn`
+remote=`./getpmcdhosts -n 1 -L 2>/dev/null`
+if [ -z "$PCP_PMIECONTROL_PATH" ]
+then
+ echo "Arrgh: Botch: PCP_PMIECONTROL_PATH not defined"
+ exit 1
+fi
+needclean=false
+
+_cleanup()
+{
+ if $needclean
+ then
+ $sudo cp $tmp.control.bak $PCP_PMIECONTROL_PATH
+ $sudo chown pcp:pcp $PCP_PMIECONTROL_PATH
+ $sudo chmod 664 $PCP_PMIECONTROL_PATH
+ $sudo cp $tmp.pmcd.bak $PCP_PMCDCONF_PATH
+ needclean=false
+ fi
+ $sudo rm -f $tmp.*
+}
+
+status=1 # failure is the default!
+trap "_cleanup; exit \$status" 0 1 2 3 15
+
+_filter()
+{
+ sed \
+ -e "s/$seq-$$/PID/g" \
+ -e "s/$$/PID/g" \
+ -e "s/$remote/REMOTEHOST/g" \
+ -e "s/$host/LOCALHOST/g" \
+ -e "s/$lhost/LOCALHOST/g" \
+ -e "s/local:/LOCALHOST/g" \
+
+}
+
+_count_pmies()
+{
+ count=0
+ if [ -d $PCP_TMP_DIR/pmie ]
+ then cd $PCP_TMP_DIR/pmie
+ else return 0
+ fi
+
+ plist=`ls -1`
+ cd $here
+
+ for process in $plist
+ do
+ ps -p $process >/dev/null 2>&1
+ if [ $? = 1 ]
+ then
+ echo "urk, $PCP_TMP_DIR/pmie/$process has no running pmie instance"
+ else
+ count=`expr $count + 1`
+ fi
+ done
+
+ return $count
+}
+
+# create a basic pmcd config file
+cat >$tmp.pmcd.conf << EOF
+# from QA $seq
+irix 1 dso irix_init libirixpmda.so
+pmcd 2 dso pmcd_init pmda_pmcd.so
+proc 3 dso proc_init pmda_proc.so
+EOF
+
+# create a pmie config file
+cat >$tmp.conf << EOF
+foo = sample.long.one;
+doo = sample.long.ten;
+EOF
+
+# create pmie control file
+cat >$tmp.control << EOF
+\$version=1.0
+LOCALHOSTNAME y $tmp.log0 $tmp.conf
+$remote n $tmp.log1 -c $tmp.conf
+$remote y $tmp.log2 -c $tmp.conf
+EOF
+
+# real QA test starts here
+cp $PCP_PMIECONTROL_PATH $tmp.control.bak
+cp $PCP_PMCDCONF_PATH $tmp.pmcd.bak
+needclean=true
+$sudo cp $tmp.pmcd.conf $PCP_PMCDCONF_PATH
+
+$sudo $signal -a -s TERM pmie >/dev/null 2>&1
+_change_config pmcd on
+_change_config pmie off
+$sudo rm -f $PCP_TMP_DIR/pmie/*
+
+_count_pmies
+echo "pmie count at start of QA testing: $?"
+echo
+
+SOCKS_SERVER=$PCPQA_SOCKS_SERVER
+export SOCKS_SERVER
+
+_change_config pmie on
+$sudo cp $tmp.control $PCP_PMIECONTROL_PATH
+$sudo chown pcp:pcp $PCP_PMIECONTROL_PATH
+$sudo chmod 664 $PCP_PMIECONTROL_PATH
+
+echo === check pmie_check and custom config ===
+pmie_check -V -V -N -c $tmp.control 2>&1 | _filter
+# don't bother counting pmie processes, as -N is used above!
+#
+echo
+
+echo === check customised control file ===
+$sudo $PCP_RC_DIR/pmie restart 2>&1 | _filter_pmie_start
+sleep 30 # can take awhile, but in bg - TODO: really needs a "pmie_wait"
+_count_pmies
+echo "pmie count with custom config (expect 3): $?"
+echo
+
+$sudo $PCP_RC_DIR/pmie stop 2>&1 | _filter_pmie_start
+_change_config pmie off
+
+status=0
+exit