diff options
author | Igor Pashev <pashev.igor@gmail.com> | 2014-10-26 12:33:50 +0400 |
---|---|---|
committer | Igor Pashev <pashev.igor@gmail.com> | 2014-10-26 12:33:50 +0400 |
commit | 47e6e7c84f008a53061e661f31ae96629bc694ef (patch) | |
tree | 648a07f3b5b9d67ce19b0fd72e8caa1175c98f1a /qa/381 | |
download | pcp-47e6e7c84f008a53061e661f31ae96629bc694ef.tar.gz |
Debian 3.9.10debian/3.9.10debian
Diffstat (limited to 'qa/381')
-rwxr-xr-x | qa/381 | 150 |
1 files changed, 150 insertions, 0 deletions
@@ -0,0 +1,150 @@ +#! /bin/sh +# PCP QA Test No. 381 +# pmlc with new -p port and "connect port <n>" options +# +# 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 + +rem_host=`./getpmcdhosts -L -n 1 -P -a sample 2>$seq.notrun` +[ -z "$rem_host" ] && _notrun `cat $seq.notrun` +rm -f $seq.notrun + +_filter() +{ + sed \ + -e '/Performance Co-Pilot Logger/,/ <instance> /d' \ + -e '/^PMCD host/d' \ + -e "s/ $pid / QA-PMLOGGER-PID /" \ + -e "s/\[$pid\]/[QA-PMLOGGER-PID]/" \ + -e "s/_logger_id=$pid/_logger_id=QA-PMLOGGER-PID/" \ + -e 's/connect [0-9][0-9]* /connect PID /' \ + -e "s/\[[0-9][0-9]*\]/[PMLOGGER-PID]/" \ + -e "s/_logger_id=[0-9][0-9]*/_logger_id=PMLOGGER-PID/" \ + -e "s/$rem_host/REMOTE-HOST/" \ + -e "s/$myhost/LOCAL-HOST/" \ + -e "s/local:/LOCAL-HOST/" \ + -e "s/port $port /port QA-PMLOGGER-PORT /" \ + -e 's/logging metrics from host .*/logging metrics from host .../' \ + -e '/^log started/d' \ + -e '/^last log entry/d' \ + -e '/^current time/d' \ + -e '/^log volume/d' \ + -e '/^log size/s/.*/... status output .../' +} + +# _speak_to_me <host> <pid> +# +_speak_to_me() +{ + echo + echo "=== _host=$1 _logger_id=$2 ===" >$tmp.out + echo >>$seq.full + echo "=== _host=$1 _logger_id=$2 ===" >>$seq.full + # allow pmlogger socket to be closed and ready to accept() + # + sleep 2 + cat <<End-of-File | pmlc $DEBUG -ei >>$tmp.out 2>&1 +connect primary $1 +status +query sample.drift +connect port 4330 $1 +status +flush +connect $2 $1 +status +flush +End-of-File + cat $tmp.out >>$seq.full + _filter <$tmp.out +} + +_cleanup() +{ + if $need_clean + then + if [ ! -z "$pid" ] + then + $sudo $signal -s TERM $pid + sleep 1 + pid='' + fi + echo + _filter_pmlogger_log <$tmp.log + echo + $sudo $PCP_RC_DIR/pcp restart | _filter_pcp_start + _wait_for_pmcd + _wait_for_pmlogger + need_clean=false + fi + $sudo rm -f $tmp.* + exit +} + +need_clean=true +signal=$PCP_BINADM_DIR/pmsignal +status=1 # failure is the default! +DEBUG='' +trap "_cleanup; exit \$status" 0 1 2 3 15 + +myhost=`hostname` +pid='' + +$sudo rm -f $tmp.* + +rem_pid=`pminfo -f -h $rem_host pmcd.pmlogger.port \ + | sed -n -e '/primary/d' -e '/ value 4330 *$/{ +s/.* "// +s/".*//p +}'` +if [ -z "$rem_pid" ] +then + pminfo -f -h $rem_host pmcd.pmlogger.port + echo "Error: cannot find pid for remote primary logger!" + exit +fi + +_start_up_pmlogger -h $rem_host -L -c /dev/null -l $tmp.log $tmp >/dev/null 2>&1 +_wait_for_pmlogger $pid $tmp.log + +port=`pminfo -f pmcd.pmlogger.port \ + | sed -n -e '/primary/d' -e '/\['$pid' /{ +s/.* value //p +}'` + +rm -f $seq.full +echo "Remote host: $rem_host [pid: $rem_pid]" >>$seq.full +echo "Local host: $myhost [pid: $pid port: $port]" >>$seq.full + +# real QA test starts here + +_speak_to_me "" $pid +_speak_to_me "" "port $port" + +_speak_to_me @$myhost $pid +_speak_to_me @$myhost "port $port" + +_speak_to_me @$rem_host $rem_pid + +# make sure the primary logger is terminated and stop pmcd +# +prim_pid=`ps $PCP_PS_ALL_FLAGS | grep pmlogger | grep ' -P' | $PCP_AWK_PROG '{ print $2 }'` +[ ! -z "$prim_pid" ] && $sudo $signal -s TERM $prim_pid +$sudo $PCP_RC_DIR/pcp stop | _filter_pcp_stop + +echo +_speak_to_me "" $pid +_speak_to_me "" "port $port" +#debug# DEBUG="-D all" +_speak_to_me @$rem_host $rem_pid + +# success, all done +status=0 +exit |