qa: update 660 to generate index.html, fixing pcp-testsuite runs
[pcp.git] / qa / 381
blobf80efd3a5e76ad04a01fa7c0c6a4df4c55d1dc61
1 #! /bin/sh
2 # PCP QA Test No. 381
3 # pmlc with new -p port and "connect port <n>" options
5 # Copyright (c) 1995-2002 Silicon Graphics, Inc. All Rights Reserved.
8 seq=`basename $0`
9 echo "QA output created by $seq"
11 # get standard filters
12 . ./common.product
13 . ./common.filter
14 . ./common.check
16 rem_host=`./getpmcdhosts -L -n 1 -P -a sample 2>$seq.notrun`
17 [ -z "$rem_host" ] && _notrun `cat $seq.notrun`
18 rm -f $seq.notrun
20 _filter()
22 sed \
23 -e '/Performance Co-Pilot Logger/,/ <instance> /d' \
24 -e '/^PMCD host/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' \
39 -e '/^log volume/d' \
40 -e '/^log size/s/.*/... status output .../'
43 # _speak_to_me <host> <pid> [<port>]
45 _speak_to_me()
47 echo
48 # default
49 _port=4330
50 [ -n "$3" ] && _port="$3"
51 echo "=== _host=$1 _logger_id=$2 ===" >$tmp.out
52 echo >>$seq.full
53 echo "=== _host=$1 _logger_id=$2 _port=$_port ===" >>$seq.full
54 # allow pmlogger socket to be closed and ready to accept()
56 sleep 2
57 cat <<End-of-File | pmlc $DEBUG -ei >>$tmp.out 2>&1
58 connect primary $1
59 status
60 query sample.drift
61 connect port $_port $1
62 status
63 flush
64 connect $2 $1
65 status
66 flush
67 End-of-File
68 cat $tmp.out >>$seq.full
69 _filter <$tmp.out \
70 | sed -e "s/port $_port/port PORT/g"
73 _cleanup()
75 if $need_clean
76 then
77 if [ ! -z "$pid" ]
78 then
79 $sudo $signal -s TERM $pid
80 sleep 1
81 pid=''
83 echo
84 if [ -f $tmp.log ]
85 then
86 _filter_pmlogger_log <$tmp.log
87 else
88 echo "Warning: $tmp.log missing"
90 echo
91 $sudo $PCP_RC_DIR/pcp restart | _filter_pcp_start
92 _wait_for_pmcd
93 _wait_for_pmlogger
94 need_clean=false
96 $sudo rm -f $tmp.*
97 exit
100 need_clean=true
101 signal=$PCP_BINADM_DIR/pmsignal
102 status=1 # failure is the default!
103 DEBUG=''
104 trap "_cleanup; exit \$status" 0 1 2 3 15
106 myhost=`hostname`
107 pid=''
109 $sudo rm -f $tmp.*
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"/{
116 s/.*value *//
120 if [ -z "$rem_port" ]
121 then
122 cat $tmp.tmp
123 echo "Error: cannot find port for remote primary logger!"
124 exit
127 rem_pid=`cat $tmp.tmp | sed -n -e '/"primary"/d' -e '/ value '$rem_port' *$/{
128 s/.* "//
129 s/".*//p
131 if [ -z "$rem_pid" ]
132 then
133 cat $tmp.tmp
134 echo "Error: cannot find pid for remote primary logger on port $rem_port!"
135 exit
138 port=`pminfo -f pmcd.pmlogger.port \
139 | sed -n -e '/"primary"/d' -e '/\['$pid' /{
140 s/.* value //p
143 rm -f $seq.full
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
149 _speak_to_me "" $pid
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
163 echo
164 _speak_to_me "" $pid
165 _speak_to_me "" "port $port"
166 #debug# DEBUG="-D all"
167 _speak_to_me @$rem_host $rem_pid $rem_port
169 # success, all done
170 status=0
171 exit