#! /bin/sh # PCP QA Test No. 243 # Multiple PMCDs test # # Copyright (c) 1995-2002 Silicon Graphics, Inc. All Rights Reserved. # seq=`basename $0` echo "QA output created by $seq" # get standard filters . ./common.product . ./common.filter . ./common.check rm -f $seq.out _get_libpcp_config if $ipv6 ; then ln $seq.out.ipv6 $seq.out || exit 1 else ln $seq.out.nonipv6 $seq.out || exit 1 fi _filter_err() { _filter_pmcd_log \ | sed \ -e 's/ __pmBind: / bind: /g' \ -e 's/may already be running/is already running/g' \ -e '/Log for pmcd/,/INADDR_ANY/c\ ... boring stuff deleted' \ -e '/ok FD 44321 ipv6 INADDR_ANY/d' \ -e '/OpenRequestSocket.*unix.*bind: Address already in use/,+1 d' \ -e 's/ INADDR_ANY/ 0x0/g' } _filter_log() { sleep 3 _filter_pmcd_log <./pmcd.log \ | sed \ -e '/^DATA: from client/d' \ -e 's/Cannot open 000000660066: No such file or directory//' \ -e 's/^$//' \ -e '/^00[08]:/d' \ -e '/pmGetPDU/{ s/\[[0-9][0-9]*]/[PID]/ s/from=.*/from=PID/ }' \ -e '/_pmHaveMoreInput/{ s/\[[0-9][0-9]*]/[PID]/ s/0x[^ ]*\([^ ][^ ][^ ]\)/ADDR...\1/ }' \ -e '/Piggy-back/{ s/0x[^ ]*\([^ ][^ ][^ ]\)/ADDR...\1/ s/from=.*/from=PID/ }' \ -e '/pmXmitPDU/s/\[[0-9][0-9]*]/[PID]/' \ -e '/pmResult/s/ .* numpmid/ ... numpmid/' \ -e '/value /{ s/value [0-9][0-9]*/value INTEGER/ }' \ -e 's;pcp/lib/mips_[^.]*\.;pcp/lib/ISA.;' \ | $PCP_AWK_PROG ' $3 ~ /^[0-9][0-9]*$/ { $3 = "A_PID" } { print }' } signal=$PCP_BINADM_DIR/pmsignal _needclean=true rm -rf $tmp mkdir $tmp chmod ugo+rwx $tmp cd $tmp cleanup() { cd $here if $_needclean then _needclean=false $signal -s TERM $my_pmcd_pid sleep 1 unset PMCD_SOCKET echo "Restart and ping pmcd ..." $sudo $PCP_RC_DIR/pcp restart | _filter_pcp_start _wait_for_pmcd _wait_for_pmlogger pmprobe pmcd.control.debug fi rm -rf $tmp } status=1 trap "cleanup; exit \$status" 0 1 2 3 15 # real QA test starts here $sudo $PCP_RC_DIR/pcp stop | _filter_pcp_stop # Note: start pmcd with -f so that its PID stays the same (no daemon) # export PMCD_SOCKET=$tmp/pmcd.socket $PCP_PMCD_PROG -f -x err1 & my_pmcd_pid=$! _wait_for_pmcd echo "Checking for startup errors ..." [ -f err1 ] && _filter_err &1 | _filter_err & sleep 2 echo "Checking for startup errors ..." [ -f err2 ] && _filter_err