diff options
Diffstat (limited to 'qa/583')
-rwxr-xr-x | qa/583 | 149 |
1 files changed, 149 insertions, 0 deletions
@@ -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 |