summaryrefslogtreecommitdiff
path: root/qa/115
diff options
context:
space:
mode:
Diffstat (limited to 'qa/115')
-rwxr-xr-xqa/115152
1 files changed, 152 insertions, 0 deletions
diff --git a/qa/115 b/qa/115
new file mode 100755
index 0000000..14d3504
--- /dev/null
+++ b/qa/115
@@ -0,0 +1,152 @@
+#! /bin/sh
+# PCP QA Test No. 115
+# exercises pmie_check functionality
+# See also of No. 504 ... for a version that uses pmsocks
+#
+# Copyright (c) 2002 Silicon Graphics, Inc. All Rights Reserved.
+#
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+# get standard filters
+. ./common.product
+. ./common.check
+. ./common.filter
+
+signal=$PCP_BINADM_DIR/pmsignal
+lhost=`hostname | sed -e 's/\..*//'`
+host=`_get_fqdn`
+remote=`./getpmcdhosts -n 1 -L 2>$tmp.out`
+rhost=`echo $remote | sed -e 's/\..*//'`
+if [ -z "$remote" ]
+then
+ cat $tmp.out >$seq.notrun
+ rm -f $tmp.out
+ exit
+fi
+needclean=false
+if [ -z "$PCP_PMIECONTROL_PATH" ]
+then
+ echo "Arrgh: Botch: PCP_PMIECONTROL_PATH not defined"
+ exit 1
+fi
+
+_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
+ 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-$$/SEQ-PID/g" \
+ -e 's/$/ /' \
+ -e 's/\([ "]\)'"$remote"'\([ "]\)/\1REMOTEHOST\2/g' \
+ -e 's/\([ "]\)'"$rhost"'\([ "]\)/\1REMOTEHOST\2/g' \
+ -e 's/\([ "]\)'"$host"'\([ "]\)/\1LOCALHOST\2/g' \
+ -e 's/\([ "]\)local:\([ "]\)/\1LOCALHOST\2/g' \
+ -e "s;/private/tmp;/tmp;g" \
+ -e 's/ $//'
+}
+
+_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 files
+cat >$tmp.control << EOF
+\$version=1.0
+$remote n $tmp.log1 -c $tmp.conf
+$remote n $tmp.log2 -c $tmp.conf
+LOCALHOSTNAME n $tmp.log0 $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
+
+echo === check default install operation ===
+$sudo $PCP_RC_DIR/pmie restart 2>&1 | _filter_pmie_start
+_count_pmies
+echo "pmie count after chkconfig pmie off: $?"
+echo
+
+echo === check for missing control file ===
+_change_config pmie off
+$sudo rm -f $PCP_PMIECONTROL_PATH
+_change_config pmie on
+$sudo $PCP_RC_DIR/pmie restart 2>&1 | _filter_pmie_start
+_count_pmies
+echo "pmie count after attempt without control file: $?"
+echo
+
+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
+
+$sudo $PCP_RC_DIR/pmie stop 2>&1 \
+| _filter_pmie_start \
+| sed -e '/pmie: PMIE not running/d'
+_change_config pmie off
+
+status=0
+exit