pmrep: fix archive end time reporting
[pcp.git] / qa / 273
blob73a3f96b8396fad5634b357560cb2f1d8c10e8a1
1 #!/bin/sh
2 # PCP QA Test No. 273
3 # Increase testing code coverage in core parts of libpcp
5 # Copyright (c) 2010 Ken McDonell. All Rights Reserved.
8 seq=`basename $0`
9 echo "QA output created by $seq"
11 # get standard environment, filters and checks
12 . ./common.product
13 . ./common.filter
14 . ./common.check
16 [ -d $PCP_PMDAS_DIR/simple ] || _notrun "simple PMDA directory is not installed"
18 _cleanup()
20 _restore_primary_logger
21 rm -f $tmp.*
22 exit $status
25 status=1
26 $sudo rm -rf $tmp.* $seq.full
27 trap "_cleanup" 0 1 2 3 15
29 _filter()
31 sed \
32 -e 's/0x[0-9a-f][0-9a-f]*/HEX/g' \
33 # end
36 # Note - sed at the end is because of non-determinism depending if the
37 # kernel PMDA is configured to use a dso or other IPC option
39 _filter2()
41 sed \
42 -e '/pmResult/s/ .* numpmid/ ... numpmid/' \
43 -e '/build_dsotab/s/parsing .*/ parsing .../' \
44 -e '/^\[[0-9][0-9]*]/d' \
45 -e '/^0x[0-9a-f][0-9a-f]* \[[0-9][0-9]*]/d' \
46 -e '/^__pmLocalPMDA/d' \
47 -e '/^Local Context PMDA Table$/d' \
48 -e '/__pmConnectLogger:/s/pid = [0-9][0-9]*/pid = PID/' \
49 -e 's/fd=[0-9][0-9]*/fd=N/g' \
50 -e '/IPC table fd/s/:.*/: .../' \
51 -e '/__pmSendCreds/s/:.*/: .../' \
52 -e '/NotifyEndLocalContext: /s/:.*/: .../' \
53 -e '/value /s/ [0-9].*/ NUMBER/' \
54 -e '/^__pmDataIPC:/d' \
55 -e '/^__pmSetDataIPC:/{
58 }' \
59 -e 's/Permission denied/No permission to perform requested operation/' \
60 -e '/__pmConnect(fd=/d' \
61 | perl -ne '
62 # squash repeated occurrences of the following pattern
63 # (as a result of needing to do getaddrinfo list walk)
64 if (/^IPC table fd.PDU version.: ...$/) {
65 $saved[1] = $_;
66 } elsif (/^__pmSetSocketIPC: fd=N$/) {
67 $saved[0] = $_;
68 } else {
69 if ($#saved >= 0) { print $saved[0]; }
70 if ($#saved == 1) { print $saved[1]; }
71 @saved = undef;
72 print;
73 }' \
74 | sed \
75 -e '/^__pmSetSocketIPC:/d' \
76 -e '/^NotifyEndLocalContext/d' \
77 -e '/^IPC table fd/d' \
78 # end
81 _filter3()
83 sed \
84 -e 's/Connection timed out/No route to host/' \
85 # end
88 # simple PMDA is using PMDA_INTERFACE_2
90 if [ ! -f $PCP_PMDAS_DIR/simple/pmda_simple.$DSO_SUFFIX ]
91 then
92 ( cd $PCP_PMDAS_DIR/simple; $sudo make; $sudo ./Install </dev/null ) >/dev/null 2>&1
95 # real QA test starts here
96 _change_config pmcd on
97 _change_config pmlogger on
98 _writable_primary_logger
99 $sudo $PCP_RC_DIR/pcp restart >/dev/null 2>&1
100 _wait_for_pmlogger
102 # help.c
104 $sudo pminfo -t -L sampledso 2>&1
105 $sudo pminfo -T -L sampledso 2>&1
106 pminfo -T -a tmparch/foo sample
107 $sudo pminfo -T -L -n $PCP_PMDAS_DIR/simple/root -K clear -K add,253,simple/pmda_simple.$DSO_SUFFIX,simple_init simple.now 2>&1
109 # instance.c
111 $sudo pminfo -L -f -Dfetch sampledso.bin 2>&1 | _filter_dumpresult
112 pminfo -f -Dindom sample.bin 2>&1 | _filter
113 $sudo pminfo -fL -Dfetch,indom -n $PCP_PMDAS_DIR/simple/root -K clear -K add,253,simple/pmda_simple.$DSO_SUFFIX,simple_init simple 2>&1 \
114 | _filter_dumpresult | _filter
115 src/indom sample.bin
116 src/indom sample.long.one
117 pmval -s 1 -i "bin-123" sample.bin
118 $sudo src/torture_indom -L sampledso.colour 2>&1
119 $sudo src/torture_indom -n $PCP_PMDAS_DIR/simple/root -K clear -K add,253,simple/pmda_simple.$DSO_SUFFIX,simple_init -L simple.now 2>&1
121 # fetchlocal.c
123 $sudo pminfo -f -L -Dfetch sampledso.bad.unknown 2>&1 | _filter_dumpresult
125 # spec.c
127 pminfo -f -h localhost:44321 sample.long.hundred
128 pminfo -f -h localhost:1,44321 sample.long.hundred
129 pminfo -f -h localhost: sample.long.hundred
130 pminfo -f -h localhost:44321,1x3 sample.long.hundred
131 pminfo -f -h localhost:44321@no-host sample.long.hundred 2>&1 | _filter3
132 pminfo -f -h localhost:44321@no-host:44322 sample.long.hundred 2>&1 | _filter3
133 pminfo -f -h localhost:44321@ sample.long.hundred
135 # units.c
137 # Pbyte / hour -> 1F055000
138 pmstore sample.dynamic.meta.pmdesc.units 0x1F055000 >/dev/null
139 pminfo -d sample.dynamic.meta.metric
140 # Ebyte / sec -> 1F063000
141 pmstore sample.dynamic.meta.pmdesc.units 0x1F063000 >/dev/null
142 pminfo -d sample.dynamic.meta.metric
143 # bigger than Ebyte -> 10070000
144 pmstore sample.dynamic.meta.pmdesc.units 0x10070000 >/dev/null
145 pminfo -d sample.dynamic.meta.metric
146 # bigger than Hour -> 01006000
147 pmstore sample.dynamic.meta.pmdesc.units 0x01006000 >/dev/null
148 pminfo -d sample.dynamic.meta.metric
149 # byte^2 -> 20000000
150 pmstore sample.dynamic.meta.pmdesc.units 0x20000000 >/dev/null
151 pminfo -d sample.dynamic.meta.metric
152 # nsec / byte -> F1000000
153 pmstore sample.dynamic.meta.pmdesc.units 0xF1000000 >/dev/null
154 pminfo -d sample.dynamic.meta.metric
155 # / byte^2 -> E0000000
156 pmstore sample.dynamic.meta.pmdesc.units 0xE0000000 >/dev/null
157 pminfo -d sample.dynamic.meta.metric
158 # nsec^3 -> 03000000
159 pmstore sample.dynamic.meta.pmdesc.units 0x03000000 >/dev/null
160 pminfo -d sample.dynamic.meta.metric
161 # / nsec^3 -> 0D000000
162 pmstore sample.dynamic.meta.pmdesc.units 0x0D000000 >/dev/null
163 pminfo -d sample.dynamic.meta.metric
164 # count^2 -> 00200000
165 pmstore sample.dynamic.meta.pmdesc.units 0x00200000 >/dev/null
166 pminfo -d sample.dynamic.meta.metric
167 # / count^2 -> 00E00000
168 pmstore sample.dynamic.meta.pmdesc.units 0x00E00000 >/dev/null
169 pminfo -d sample.dynamic.meta.metric
170 # restore to byte / sec -> 1F003000
171 pmstore sample.dynamic.meta.pmdesc.units 0x1F003000 >/dev/null
173 # units.c using grind_cov
175 for type in 0 1 2 3 4 5
177 # space
178 src/grind_conv $type 1024 1:0:0:4:0:0 1:0:0:3:0:0
179 src/grind_conv $type 1048576 1:0:0:3:0:0 1:0:0:4:0:0
180 # space / time
181 src/grind_conv $type 4096 1:-1:0:2:3:0 1:-1:0:3:5:0
182 src/grind_conv $type 14400 1:-1:0:3:5:0 1:-1:0:2:3:0
183 # space-time / count
184 src/grind_conv $type 92160 1:1:-1:1:3:0 1:1:-1:2:4:1
185 src/grind_conv $type 15 1:1:-1:2:4:1 1:1:-1:1:3:0
186 # time / space
187 src/grind_conv $type 1024 -1:1:0:2:3:0 -1:1:0:1:2:0
188 src/grind_conv $type 1000 -1:1:0:1:2:0 -1:1:0:2:3:0
189 done
190 # and some odd cases and error cases
191 src/grind_conv -Dvalue 3 4096 1:0:0:5:0:0 1:0:0:6:0:0
192 src/grind_conv 3 4 1:0:0:6:0:0 1:0:0:5:0:0
193 src/grind_conv 3 4096 1:0:0:7:0:0 1:0:0:6:0:0
194 src/grind_conv 3 4096 1:0:0:5:0:0 1:0:0:7:0:0
195 src/grind_conv 3 3600 0:1:0:0:6:0 0:1:0:0:4:0
196 src/grind_conv -Dvalue 3 3600 0:1:0:0:4:0 0:1:0:0:6:0
197 # dimensions not the same
198 src/grind_conv 3 0 0:1:0:0:1:0 0:2:0:0:1:0
199 # cannot convert events
200 src/grind_conv 8 0 0:1:0:0:1:0 0:1:0:0:1:0
202 # units.c using src/xval
204 echo
205 src/xval -D 0x3fffffff 2>&1 \
206 | sed -e '/pmExtract.*AGGREGATE/{
207 s/feffff3f/3ffffffe/g
208 s/ffffff3f/3fffffff/g
209 s/00000040/40000000/g
211 src/xval 0x7fffffff
212 src/xval 0xffffffff
213 src/xval 0x3fffffffffffffff
214 src/xval 0x7fffffffffffffff
215 src/xval 0xffffffffffffffff
216 src/xval -u 0xffffffffffffffff
217 echo
218 src/xval -e
220 # store.c
222 echo
223 $sudo src/chknumval -L sampledso.long.write_me sampledso.ulong.write_me sampledso.longlong.write_me >$tmp.out 2>$tmp.err
224 cat $tmp.err $tmp.out | _filter2
226 echo
227 $sudo src/chknumval -Dcontext -L pmcd.control.debug sampledso.long.write_me sample.colour >$tmp.out 2>$tmp.err
228 cat $tmp.err $tmp.out | _filter2
229 cat >$tmp.root <<End-of-File
230 root {
231 pmcd
232 sample
233 sampledso
235 pmcd {
236 control
238 pmcd.control {
239 debug 2:0:0
241 sample {
242 colour 29:0:5
244 sampledso {
245 long
247 sampledso.long {
248 write_me 30:0:14
250 End-of-File
252 echo
253 $sudo src/chknumval -L -n $tmp.root pmcd.control.debug sampledso.long.write_me sample.colour >$tmp.out 2>$tmp.err
254 cat $tmp.err $tmp.out | _filter2
256 echo
257 $sudo src/chknumval -n $PCP_PMDAS_DIR/simple/root -K clear -K add,253,simple/pmda_simple.$DSO_SUFFIX,simple_init -L simple.now simple.now simple.now >$tmp.out 2>$tmp.err
258 cat $tmp.err $tmp.out | _filter2
260 # success, all done
261 status=0
262 exit