pmrep: fix archive end time reporting
[pcp.git] / qa / 134
blobb1ef8febb904b4b81ec056ff03844ace1d7933c1
1 #! /bin/sh
2 # PCP QA Test No. 134
3 # Check pmGetArchiveEnd for multi-volume logs
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 trap "$sudo rm -f $tmp.*; exit" 0 1 2 3 15
17 signal=$PCP_BINADM_DIR/pmsignal
19 _do_ls()
21 eval `cat $tmp.last`
22 $PCP_AWK_PROG '
23 /Cannot/ { print; next }
24 { print $9,$5,"bytes" }' \
25 | sed -e "s;$tmp;MYLOG;" \
26 | $PCP_AWK_PROG '
27 BEGIN { l0='$l0'; l1='$l1' }
28 $1 ~ /\.1$/ { if (l1 == 0) {
29 if ($2 == 132)
30 print $1,"initial OK"
31 else
32 print $1,"initial BAD - ",$2
34 else if (l1 == $2)
35 print $1,"unchanged"
36 else
37 print $1,"incr",$2-l1,"bytes"
38 l1=$2
39 next
41 $1 ~ /\.0$/ { if (l0 == 0) {
42 if ($2 > 200 && $2 < 400)
43 print $1,"initial OK"
44 else
45 print $1,"initial BAD - ",$2
47 else if (l0 == $2)
48 print $1,"unchanged"
49 else
50 print $1,"incr",$2-l0,"bytes"
51 l0=$2
52 next
54 { print }
55 END { print "l0=" l0 " l1=" l1 >"'$tmp.last'" }'
56 echo "end _do_ls $tmp.last: `cat $tmp.last`" >>$seq.full
60 _do_time()
62 tstamp=`wc -l <$tmp.sed | sed -e 's/ *//g'`
63 tstamp=`expr $tstamp - 2`
64 sed >$tmp.tmp \
65 -e "s;$tmp;MYLOG;" \
66 -e 's/from host .*/from host LOCALHOST/' \
67 -e "/\"$logger_pid\"/s/$logger_pid/LOGGER_PID/g" \
68 -e '/pmcd.pmlogger.port/s/value .*/value PORT/' \
69 -e '/pmcd.pmlogger.host/s/value ".*/value "HOST"/' \
70 -e '/pmcd.pmlogger.archive/s/value ".*/value "PATH"/'
71 sed -n <$tmp.tmp \
72 -e 's/.*\([0-9][0-9]:[0-9][0-9]:[0-9][0-9].[0-9][0-9][0-9]\).*/\1/p' \
73 | LC_COLLATE=POSIX sort -u \
74 | while read time
76 if grep $time $tmp.sed >/dev/null
77 then
79 else
80 echo "s/$time/TIMESTAMP-$tstamp/g" >>$tmp.sed
81 tstamp=`expr $tstamp + 1`
83 done
85 sed -f $tmp.sed $tmp.tmp \
86 | $PCP_AWK_PROG '
87 $1 ~ /TIMESTAMP/ && NF == 4 { print $1 " " $2 " OFFSET OFFSET"; next }
88 { print }'
91 _do_metrics()
93 echo "Metrics in archive:"
94 egrep 'sample|pmcd' \
95 | sed -e 's/.*(//' -e 's/).*//' -e 's/^/ /'
98 # real QA test starts here
99 $sudo rm -f $tmp.* $seq.full
101 echo 's/ [A-Z][a-z][a-z] [A-Z][a-z][a-z] .. / month-day /g' >$tmp.sed
102 echo 's/ [12][0-9][0-9][0-9]$/ year/' >>$tmp.sed
103 echo "l0=0 l1=0" >$tmp.last
104 echo "init $tmp.last: `cat $tmp.last`" >>$seq.full
106 _start_up_pmlogger -L -c /dev/null -l $tmp.log $tmp
107 _wait_for_pmlogger $pid $tmp.log
109 echo
110 echo "=== logger started, nothing logged ==="
111 echo "=== logger started, nothing logged ===" >>$seq.full
112 LC_TIME=POSIX ls -l $tmp.? 2>&1 | tee -a $seq.full | _do_ls
113 pmdumplog -lt $tmp 2>&1 | tee -a $seq.full | _do_time
114 pmdumplog $tmp | tee -a $seq.full | _do_metrics
116 pmlc <<End-of-File
117 connect $pid
118 log mandatory on once pmcd.control.register["0"]
119 End-of-File
120 pmsleep 1.1
121 echo flush | pmlc $pid >/dev/null
123 echo
124 echo "=== first volume, one result ==="
125 echo "=== first volume, one result ===" >>$seq.full
126 LC_TIME=POSIX ls -l $tmp.? | tee -a $seq.full | _do_ls
127 pmdumplog -lt $tmp | tee -a $seq.full | _do_time
128 pmdumplog $tmp | tee -a $seq.full | _do_metrics
130 pmlc <<End-of-File
131 connect $pid
132 new volume
133 End-of-File
134 pmsleep 1.1
136 echo
137 echo "=== second empty volume ==="
138 echo "=== second empty volume ===" >>$seq.full
139 LC_TIME=POSIX ls -l $tmp.? | tee -a $seq.full | _do_ls
140 pmdumplog -lt $tmp | tee -a $seq.full | _do_time
141 pmdumplog $tmp | tee -a $seq.full | _do_metrics
143 pmlc <<End-of-File
144 connect $pid
145 log mandatory on once pmcd.control.register["0"]
146 End-of-File
147 pmsleep 1.1
148 echo flush | pmlc $pid >/dev/null
150 echo
151 echo "=== second volume, one result ==="
152 echo "=== second volume, one result ===" >>$seq.full
153 LC_TIME=POSIX ls -l $tmp.? | tee -a $seq.full | _do_ls
154 pmdumplog -lt $tmp | tee -a $seq.full | _do_time
155 pmdumplog $tmp | tee -a $seq.full | _do_metrics
157 pmlc <<End-of-File
158 connect $pid
159 log mandatory on once {
160 pmcd.control.debug
161 pmcd.control.timeout
162 sample.bin
164 End-of-File
165 pmsleep 1.1
166 pmlc <<End-of-File
167 connect $pid
168 log mandatory on once pmcd.control.register["0"]
169 End-of-File
170 pmsleep 1.1
171 echo flush | pmlc $pid >/dev/null
173 echo
174 echo "=== second volume, second + third result ==="
175 echo "=== second volume, second + third result ===" >>$seq.full
176 LC_TIME=POSIX ls -l $tmp.? | tee -a $seq.full | _do_ls
177 pmdumplog -lt $tmp | tee -a $seq.full | _do_time
178 pmdumplog $tmp | tee -a $seq.full | _do_metrics
180 $sudo $signal -s TERM $pid
181 _wait_pmlogger_end $pid
183 echo
184 echo "=== logger done ==="
185 echo "=== logger done ===" >>$seq.full
186 LC_TIME=POSIX ls -l $tmp.? | tee -a $seq.full | _do_ls
187 pmdumplog -lt $tmp | tee -a $seq.full | _do_time
188 pmdumplog $tmp | tee -a $seq.full | _do_metrics
190 # save the archive files for post-mortem test failure analysis
192 for i in 0 1 meta index
194 cp ${tmp}.$i $seq.full.$i
195 done
197 exit 0