#! /bin/sh # PCP QA Test No. 374 # pmlogger (PCP 2.0) and pmlc (assorted) version compatibility # # 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 PMCD_CONNECT_TIMEOUT=30 PMCD_REQUEST_TIMEOUT=30 export PMCD_CONNECT_TIMEOUT PMCD_REQUEST_TIMEOUT rm -f $seq.out case $PCP_PLATFORM in linux|darwin|solaris) if [ $PCP_VER -lt 3600 ]; then ln $seq.$PCP_PLATFORM $seq.out || exit 1 elif [ $PCP_VER -lt 3800 ]; then ln $seq.$PCP_PLATFORM.2 $seq.out || exit 1 else ln $seq.$PCP_PLATFORM.3 $seq.out || exit 1 fi ;; *) _notrun "Need qualified output for $PCP_PLATFORM" ;; esac _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 $sudo rm -f /tmp/$$.* _start_up_pmlogger -L -c /dev/null -l /tmp/$$.log /tmp/$$ /dev/null 2>&1 _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" "sample"] # non-leaf query pmcd.pdu_in # logging log mandatory on once pmcd.agent.type ["$PCP_PLATFORM" "pmcd"] log mandatory off pmcd.agent.type ["sample"] End-of-File # do ssh 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" "sample"] End-of-File cat $tmp.err $tmp.out | _filter # the failures # # echo "log mandatory on once sample" | pmlc -h $host $pid -D1 echo "connect $pid@$me" | ssh -q pcpqa@$host "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 $sudo $signal -s TERM $pid pid='' fi } _cleanup() { if $need_clean then if [ ! -z "$pid" ] then $sudo $signal -s TERM $pid sleep 1 $sudo $signal -s KILL $pid pid='' fi need_clean=false fi $sudo rm -f $tmp.* exit } need_clean=true signal=$PCP_BINADM_DIR/pmsignal 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 _notrun "Cannot find a 64-bit host running PCP" else # echo $host _speak_to_me $host fi done # success, all done status=0 exit