#! /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 <$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