3 # pmlc with new -p port and "connect port <n>" options
5 # Copyright (c) 1995-2002 Silicon Graphics, Inc. All Rights Reserved.
9 echo "QA output created by $seq"
11 # get standard filters
16 rem_host
=`./getpmcdhosts -L -n 1 -P -a sample 2>$seq.notrun`
17 [ -z "$rem_host" ] && _notrun
`cat $seq.notrun`
23 -e '/Performance Co-Pilot Logger/,/ <instance> /d' \
25 -e "s/ $pid / QA-PMLOGGER-PID /" \
26 -e "s/\[$pid\]/[QA-PMLOGGER-PID]/" \
27 -e "s/_logger_id=$pid/_logger_id=QA-PMLOGGER-PID/" \
28 -e 's/connect [0-9][0-9]* /connect PID /' \
29 -e "s/\[[0-9][0-9]*\]/[PMLOGGER-PID]/" \
30 -e "s/_logger_id=[0-9][0-9]*/_logger_id=PMLOGGER-PID/" \
31 -e "s/$rem_host/REMOTE-HOST/" \
32 -e "s/$myhost/LOCAL-HOST/" \
33 -e "s/local:/LOCAL-HOST/" \
34 -e "s/port $port /port PORT /" \
35 -e 's/logging metrics from host .*/logging metrics from host .../' \
36 -e '/^log started/d' \
37 -e '/^last log entry/d' \
38 -e '/^current time/d' \
40 -e '/^log size/s/.*/... status output .../'
43 # _speak_to_me <host> <pid> [<port>]
50 [ -n "$3" ] && _port
="$3"
51 echo "=== _host=$1 _logger_id=$2 ===" >$tmp.out
53 echo "=== _host=$1 _logger_id=$2 _port=$_port ===" >>$seq.full
54 # allow pmlogger socket to be closed and ready to accept()
57 cat <<End-of-File | pmlc $DEBUG -ei >>$tmp.out 2>&1
61 connect port $_port $1
68 cat $tmp.out
>>$seq.full
70 |
sed -e "s/port $_port/port PORT/g"
79 $sudo $signal -s TERM
$pid
86 _filter_pmlogger_log
<$tmp.log
88 echo "Warning: $tmp.log missing"
91 $sudo $PCP_RC_DIR/pcp restart | _filter_pcp_start
101 signal
=$PCP_BINADM_DIR/pmsignal
102 status
=1 # failure is the default!
104 trap "_cleanup; exit \$status" 0 1 2 3 15
111 _start_up_pmlogger
-h $rem_host -L -c /dev
/null
-l $tmp.log
$tmp >/dev
/null
2>&1
112 _wait_for_pmlogger
$pid $tmp.log
114 pminfo
-f -h $rem_host pmcd.pmlogger.port
>$tmp.tmp
115 rem_port
=`cat $tmp.tmp | sed -n -e '/"primary"/{
120 if [ -z "$rem_port" ]
123 echo "Error: cannot find port for remote primary logger!"
127 rem_pid
=`cat $tmp.tmp | sed -n -e '/"primary"/d' -e '/ value '$rem_port' *$/{
134 echo "Error: cannot find pid for remote primary logger on port $rem_port!"
138 port
=`pminfo -f pmcd.pmlogger.port \
139 | sed -n -e '/"primary"/d' -e '/\['$pid' /{
144 echo "Remote host: $rem_host [pid: $rem_pid port: $rem_port]" >>$seq.full
145 echo "Local host: $myhost [pid: $pid port: $port]" >>$seq.full
147 # real QA test starts here
150 _speak_to_me
"" "port $port"
152 _speak_to_me @
$myhost $pid
153 _speak_to_me @
$myhost "port $port"
155 _speak_to_me @
$rem_host $rem_pid $rem_port
157 # make sure the primary logger is terminated and stop pmcd
159 prim_pid
=`ps $PCP_PS_ALL_FLAGS | grep pmlogger | grep ' -P' | $PCP_AWK_PROG '{ print $2 }'`
160 [ ! -z "$prim_pid" ] && $sudo $signal -s TERM
$prim_pid
161 $sudo $PCP_RC_DIR/pcp stop | _filter_pcp_stop
165 _speak_to_me
"" "port $port"
166 #debug# DEBUG="-D all"
167 _speak_to_me @
$rem_host $rem_pid $rem_port