summaryrefslogtreecommitdiff
path: root/qa/583
diff options
context:
space:
mode:
Diffstat (limited to 'qa/583')
-rwxr-xr-xqa/583149
1 files changed, 149 insertions, 0 deletions
diff --git a/qa/583 b/qa/583
new file mode 100755
index 0000000..4bf8216
--- /dev/null
+++ b/qa/583
@@ -0,0 +1,149 @@
+#! /bin/sh
+# PCP QA Test No. 583
+# based on 519, caused pmie to dump core initially
+# also #698718
+#
+# Copyright (c) 1995-2002 Silicon Graphics, Inc. All Rights Reserved.
+#
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+# get standard environment, filters and checks
+. ./common.product
+. ./common.filter
+. ./common.check
+
+eval `./getpmcdhosts -n 2 -L | sed -e 's/ / other2=/' -e 's/^/other1=/'`
+if [ -z "$other1" ]
+then
+ echo "Cannot find first remote host running pmcd" >$seq.notrun
+ exit
+fi
+if [ -z "$other2" ]
+then
+ echo "Cannot find second remote host running pmcd" >$seq.notrun
+ exit
+fi
+
+case $PCP_PLATFORM
+in
+ irix|linux|solaris)
+ # same syslog options for Irix, Linux and OpenSolaris
+ SYSLOG_OPT='"-p daemon.info"'
+ ;;
+ darwin)
+ SYSLOG_OPT=''
+ ;;
+ *)
+ echo "Arrgh ... need syslog option for $PCP_PLATFORM"
+ exit 1
+ ;;
+esac
+
+_filter()
+{
+ sed \
+ -e 's/[A-Z][a-z][a-z] [A-Z][a-z][a-z] *[0-9][0-9]* [0-9][0-9]:[0-9][0-9]:[0-9][0-9]/TIMESTAMP/' \
+ -e 's/[A-Z][a-z][a-z] *[0-9][0-9]* [0-9][0-9]:[0-9][0-9]:[0-9][0-9]/TIMESTAMP/' \
+ -e "s/`hostname | sed -e 's/\..*//'` /HOST /" \
+ -e 's/[0-9][A-Z]:HOST/HOST/' \
+ -e 's/\(pmie[([]\)[0-9][0-9]*/\1PID/'
+}
+
+signal=$PCP_BINADM_DIR/pmsignal
+status=0 # success is the default!
+trap "rm -f $tmp.*; exit \$status" 0 1 2 3 15
+
+PMCD_CONNECT_TIMEOUT=60
+PMCD_REQUEST_TIMEOUT=60
+PMCD_RECONNECT_TIMEOUT=1,2
+export PMCD_CONNECT_TIMEOUT PMCD_REQUEST_TIMEOUT PMCD_RECONNECT_TIMEOUT
+
+SYSLOG=''
+for f in /var/adm/SYSLOG /var/log/daemon.log /var/log/messages /var/log/syslog /var/log/system.log
+do
+ if [ -f $f ]
+ then
+ SYSLOG=$f
+ break
+ fi
+done
+if [ -z "$SYSLOG" ]
+then
+ echo "Arrgh! Cannot find your syslog file"
+ exit 1
+fi
+
+# real QA test starts here
+$sudo rm -f core* $seq.core*
+
+$sudo $PCP_RC_DIR/pcp stop | _filter_pcp_stop
+sleep 3
+
+# note the following is time sensitive, run it too long
+# and we'll get extraneous output...
+cat <<EOF >$tmp.in
+// use hosts not in QA circus
+//
+
+hosts = ":'$other1' :'$other2' :localhost";
+
+some_host (
+ some_inst (
+ ( 100 * filesys.used \$hosts / filesys.capacity \$hosts ) > 0 ) )
+-> print 5sec "full" " %h:[%i] %v% "
+ & syslog 5sec $SYSLOG_OPT "PCP QA $seq - please ignore - ..." " %h:[%i] %v% ";
+
+EOF
+
+rm -f $seq.full
+echo "=== pmie.conf ===" >$seq.full
+cat $tmp.in >>$seq.full
+
+pmie -t 1sec >$tmp.out 2>$tmp.err <$tmp.in &
+pmie_pid=$!
+
+sleep 5
+$sudo $PCP_RC_DIR/pcp restart | _filter_pcp_start
+_wait_for_pmcd
+_wait_for_pmlogger
+
+sleep 15
+$signal -s TERM $pmie_pid
+wait
+
+echo "pmie output ..."
+sed <$tmp.out \
+ -e "/ $other1:/d" \
+ -e "/ $other2:/d" \
+ -e '/ localhost:/d'
+grep " $other1:" <$tmp.out >/dev/null && echo "... at least one line for other1 host"
+grep " $other2:" <$tmp.out >/dev/null && echo "... at least one line for other2 host"
+grep ' localhost:' <$tmp.out >/dev/null && echo "... at least one line for localhost"
+
+echo
+echo "pmie stderr ..."
+_filter <$tmp.err
+
+echo >>$seq.full
+echo "=== pmie stdout ===" >>$seq.full
+cat $tmp.out >>$seq.full
+echo >>$seq.full
+echo "=== pmie stderr ===" >>$seq.full
+cat $tmp.err >>$seq.full
+
+echo
+echo "SYSLOG ..."
+$sudo tail -100 $SYSLOG >$tmp.tmp
+sed <$tmp.tmp -n '/PCP QA '"$seq"' - please ignore/s/\.\.\..*/.../p' \
+| _filter \
+| LC_COLLATE=POSIX sort -u
+
+echo >>$seq.full
+echo "=== tail SYSLOG ($SYSLOG) ===" >>$seq.full
+cat $tmp.tmp >>$seq.full
+
+_check_core
+
+exit