#! /bin/sh # PCP QA Test No. 374 # $Revision: 1.18 $ # pmlogger (PCP 2.0) and pmlc (assorted) version compatibility # # # Copyright (c) 1995-2002 Silicon Graphics, Inc. All Rights Reserved. # # creator owner=kenmcd seq=`basename $0` echo "QA output created by $seq" # get standard filters . ./common.product . ./common.filter . ./common.check PMCD_CONNECT_TIMEOUT=30 PMCD_REQUEST_TIMEOUT=30 export PMCD_CONNECT_TIMEOUT PMCD_REQUEST_TIMEOUT rm -f $seq.out && ln $seq.${PCP_PLATFORM} $seq.out || exit 1 _filter() { _filter_pmdumplog \ | sed \ -e '/^pmlogger .* on host .* is logging metrics from host .*/d' \ -e '/^PMCD host/d' \ -e '/^TIMESTAMP started/d' \ | $PCP_AWK_PROG ' $1 == "log" && $2 == "size" { if ($3 > 100 && $3 <= 200) $3 = "more than 100" else if ($3 > 200 && $3 <= 300) $3 = "more than 200" } { print }' } _speak_to_me() { host=$1 rm -f /tmp/$$.* ( pmlogger -L -c /dev/null -l /tmp/$$.log /tmp/$$ /dev/null 2>&1 ) & pid=$! _wait_for_pmlogger $pid /tmp/$$.log # the success cases # cat <$tmp.out 2>$tmp.err connect $pid@$me status new volume status flush # singular, all instances query { pmcd.simabi pmcd.control.register } # some instances query pmcd.agent.type [ "$PCP_PLATFORM" "pmcd" "trace"] # non-leaf query pmcd.pdu_in # logging log mandatory on once pmcd.agent.type ["$PCP_PLATFORM" "pmcd"] log mandatory off pmcd.agent.type ["trace"] End-of-File # do rsh again is probably long enough for "once" metrics above # to have been logged # cat <>$tmp.out 2>>$tmp.err connect $pid@$me query pmcd.agent.type ["$PCP_PLATFORM" "pmcd" "trace"] End-of-File cat $tmp.err $tmp.out | _filter # the failures # # echo "log mandatory on once trace" | pmlc -h $host $pid -D1 echo "connect $pid@$me" | rsh $host -l pcpqa "sh -c 'PMCD_CONNECT_TIMEOUT=$PMCD_CONNECT_TIMEOUT PMCD_REQUEST_TIMEOUT=$PMCD_REQUEST_TIMEOUT pmlc'" >$tmp.out 2>$tmp.err cat $tmp.err $tmp.out | _filter # cleanup # if [ ! -z "$host" ] then kill -INT $pid pid='' fi } _cleanup() { if $need_clean then if [ ! -z "$pid" ] then kill -INT $pid sleep 1 kill -KILL $pid pid='' fi need_clean=false fi rm -f $tmp.* exit } tmp=/tmp/$$ need_clean=true sudo=`pwd`/sudo status=1 # failure is the default! trap "_cleanup; exit \$status" 0 1 2 3 15 if [ -x $PCP_BINADM_DIR/pmhostname ] then me=`pmhostname` else host=`hostname` me=`_host_to_fqdn $host` fi pid='' # real QA test starts here for type in "-b 32 -v pcp=2" "-b 64 -v pcp=2" do echo echo "=== pmlc host type: $type ===" host=`./getpmcdhosts -L -n 1 $type` if [ -z "$host" ] then echo "Arrgh, cannot find a suitable pmlc host" else # echo $host _speak_to_me $host fi done # success, all done status=0 exit