qa: update 660 to generate index.html, fixing pcp-testsuite runs
[pcp.git] / qa / 003
blobd638de178d639c761025a5ec93aee9b7978010d2
1 #! /bin/sh
2 # PCP QA Test No. 003
3 # Check that we get the expected metrics failing for each OS
4 # Will need to be updated with every kernel pmda change
6 # Copyright (c) 1995-2002 Silicon Graphics, Inc. All Rights Reserved.
9 seq=`basename $0`
10 echo "QA output created by $seq"
12 # get standard filters
13 . ./common.product
14 . ./common.filter
16 case "$PCP_PLATFORM"
18 linux|darwin|solaris|freebsd|netbsd)
21 echo "Need to hand-craft the exceptions list in ./003 for this platform"
22 exit 1
24 esac
26 trap "rm -f $tmp.*; exit" 0 1 2 3 15
28 # Expected error messages
30 nosupport="pmFetch: Metric not supported"
31 unknown="pmLookupDesc: Unknown or illegal metric identifier"
32 unavailable="pmFetch: no value available"
33 explicit="pmFetch: Explicit instance identifier(s) required"
34 missing="pmFetch: Missing metric value(s)"
35 nyi="pmFetch: Functionality not yet implemented"
37 pmie_filter()
39 sed -e "/pmcd\.pmie\.actions: $unavailable/d" \
40 -e "/pmcd\.pmie\.configfile: $unavailable/d" \
41 -e "/pmcd\.pmie\.eval\.actual: $unavailable/d" \
42 -e "/pmcd\.pmie\.eval\.expected: $unavailable/d" \
43 -e "/pmcd\.pmie\.eval\.false: $unavailable/d" \
44 -e "/pmcd\.pmie\.eval\.true: $unavailable/d" \
45 -e "/pmcd\.pmie\.eval\.unknown: $unavailable/d" \
46 -e "/pmcd\.pmie\.logfile: $unavailable/d" \
47 -e "/pmcd\.pmie\.numrules: $unavailable/d" \
48 -e "/pmcd\.pmie\.pmcd_host: $unavailable/d" \
49 -e "/pmcd\.pmie\.host: $unavailable/d"
52 linux_filter()
54 sed \
55 -e "/disk\.dm\..*: $unavailable/d" \
56 -e "/filesys\.readonly: $unknown/d" \
57 -e "/hinv\.cpu\..*: $unavailable/d" \
58 -e "/hinv\.hugepagesize: $unavailable/d" \
59 -e "/hinv\.map\.dmname: $unavailable/d" \
60 -e "/hinv\.nlv: $unavailable/d" \
61 -e "/hinv\.node\.online: $unavailable/d" \
62 -e "/kernel\.pernode..*: $unavailable/d" \
63 -e "/mem\.util\.active_anon: $unavailable/d" \
64 -e "/mem\.util\.active_file: $unavailable/d" \
65 -e "/mem\.util\.anonhugepages: $unavailable/d" \
66 -e "/mem\.util\.available: $unavailable/d" \
67 -e "/mem\.util\.corrupthardware: $unavailable/d" \
68 -e "/mem\.util\.directMap1G: $unavailable/d" \
69 -e "/mem\.util\.directMap2M: $unavailable/d" \
70 -e "/mem\.util\.directMap4k: $unavailable/d" \
71 -e "/mem\.util\.highFree: $unavailable/d" \
72 -e "/mem\.util\.highTotal: $unavailable/d" \
73 -e "/mem\.util\.hugepagesFree: $unavailable/d" \
74 -e "/mem\.util\.hugepagesRsvd: $unavailable/d" \
75 -e "/mem\.util\.hugepagesSurp: $unavailable/d" \
76 -e "/mem\.util\.hugepagesTotal: $unavailable/d" \
77 -e "/mem\.util\.inactive_anon: $unavailable/d" \
78 -e "/mem\.util\.inactive_file: $unavailable/d" \
79 -e "/mem\.util\.kernelStack: $unavailable/d" \
80 -e "/mem\.util\.lowFree: $unavailable/d" \
81 -e "/mem\.util\.lowTotal: $unavailable/d" \
82 -e "/mem\.util\.mlocked: $unavailable/d" \
83 -e "/mem\.util\.mmap_copy: $unavailable/d" \
84 -e "/mem\.util\.quicklists: $unavailable/d" \
85 -e "/mem\.util\.shmem: $unavailable/d" \
86 -e "/mem\.util\.slabReclaimable: $unavailable/d" \
87 -e "/mem\.util\.slabUnreclaimable: $unavailable/d" \
88 -e "/mem\.util\.unevictable: $unavailable/d" \
89 -e "/mem\.vmstat\..*: $unavailable/d" \
90 -e "/network\.icmpmsg\..*: $unavailable/d" \
91 -e "/network\.interface\.hw_addr: $unavailable/d" \
92 -e "/network\.interface\.ipv6_addr: $unavailable/d" \
93 -e "/network\.interface\.ipv6_scope: $unavailable/d" \
94 -e "/network\.ip\.ce.*: $unavailable/d" \
95 -e "/network\.ip\.csum.*: $unavailable/d" \
96 -e "/network\.ip\.ect.*: $unavailable/d" \
97 -e "/network\.ip\.inbcastoctets: $unavailable/d" \
98 -e "/network\.ip\.inoctets: $unavailable/d" \
99 -e "/network\.ip\..*mcast.*: $unavailable/d" \
100 -e "/network\.ip\.noect.*: $unavailable/d" \
101 -e "/network\.ip\.outbcastoctets: $unavailable/d" \
102 -e "/network\.ip\.outoctets: $unavailable/d" \
103 -e "/network\.softnet\..*: $nosupport/d" \
104 -e "/network\.tcp\.autocork.*: $unavailable/d" \
105 -e "/network\.tcp\.backlogdrop: $unavailable/d" \
106 -e "/network\.tcp\.busypoll.*: $unavailable/d" \
107 -e "/network\.tcp\.challenge.*: $unavailable/d" \
108 -e "/network\.tcp\.defer.*: $unavailable/d" \
109 -e "/network\.tcp\.dsackignorednoundo: $unavailable/d" \
110 -e "/network\.tcp\.dsackignoredold: $unavailable/d" \
111 -e "/network\.tcp\.fast.*: $unavailable/d" \
112 -e "/network\.tcp\.from.*: $unavailable/d" \
113 -e "/network\.tcp\.iprpfilter.*: $unavailable/d" \
114 -e "/network\.tcp\.loss.*: $unavailable/d" \
115 -e "/network\.tcp\.md5notfound: $unavailable/d" \
116 -e "/network\.tcp\.md5unexpected: $unavailable/d" \
117 -e "/network\.tcp\.minttldrop: $unavailable/d" \
118 -e "/network\.tcp\.ofo.*: $unavailable/d" \
119 -e "/network\.tcp\.orig.*: $unavailable/d" \
120 -e "/network\.tcp\.rcv.*: $unavailable/d" \
121 -e "/network\.tcp\.reqq.*: $unavailable/d" \
122 -e "/network\.tcp\.retrans.*: $unavailable/d" \
123 -e "/network\.tcp\.sackdiscard: $unavailable/d" \
124 -e "/network\.tcp\.sackmerged: $unavailable/d" \
125 -e "/network\.tcp\.sackshifted: $unavailable/d" \
126 -e "/network\.tcp\.sackshiftfallback: $unavailable/d" \
127 -e "/network\.tcp\.spurious.*: $unavailable/d" \
128 -e "/network\.tcp\.syn.*: $unavailable/d" \
129 -e "/network\.tcp\.timewait.*: $unavailable/d" \
130 -e "/network\.tcp\..*window.*: $unavailable/d" \
131 -e "/network\.udplite\..*: $unavailable/d" \
132 -e "/network\.udp\.recvbuferrors: $unavailable/d" \
133 -e "/network\.udp\.sndbuferrors: $unavailable/d" \
134 -e "/network\.softnet\.flow_limit_count: $nosupport/d" \
135 -e "/swapdev\.free: $unavailable/d" \
136 -e "/swapdev\.length: $unavailable/d" \
137 -e "/swapdev\.maxswap: $unavailable/d" \
138 -e "/swapdev\.priority: $unavailable/d" \
139 -e "/swapdev\.vlength: $unavailable/d" \
140 -e "/swap\.in: $nosupport/d" \
141 -e "/swap\.out: $nosupport/d"
145 sample_filter()
147 sed -e "/sample\.bad\.nosupport: $nosupport/d" \
148 -e "/sample\.bad\.unknown: $unknown/d" \
149 -e "/sample\.bad\.novalues: $unavailable/d" \
150 -e "/sample\.needprofile: $explicit/d" \
151 -e "/sample\.noinst: $unavailable/d" \
152 -e "/sample\.dynamic\.counter: $unavailable/d" \
153 -e "/sample\.dynamic\.discrete: $unavailable/d" \
154 -e "/sample\.dynamic\.instant: $unavailable/d" \
155 -e "/sample\.darkness: $unavailable/d" \
156 -e "/sample\.secret: $unknown/d" \
157 -e "/sample\.event\.type: $unavailable/d" \
158 -e "/sample\.event\.param_.*: $unavailable/d" \
159 -e "/sampledso\.bad\.nosupport: $nosupport/d" \
160 -e "/sampledso\.bad\.unknown: $unknown/d" \
161 -e "/sampledso\.bad\.novalues: $unavailable/d" \
162 -e "/sampledso\.needprofile: $explicit/d" \
163 -e "/sampledso\.noinst: $unavailable/d" \
164 -e "/sampledso\.dynamic\.counter: $unavailable/d" \
165 -e "/sampledso\.dynamic\.discrete: $unavailable/d" \
166 -e "/sampledso\.dynamic\.instant: $unavailable/d" \
167 -e "/sampledso\.darkness: $unavailable/d" \
168 -e "/sampledso\.secret: $unknown/d" \
169 -e "/sampledso\.event\.type: $unavailable/d" \
170 -e "/sampledso\.event\.param_.*: $unavailable/d" \
174 count_filter()
176 sed -e '/[0-9][0-9]* metrics, [0-9][0-9]* getindom, [0-9][0-9]* insitu, [0-9][0-9]* ptr/d'
179 echo "=== no output is good news ==="
181 for root in \
182 sample sampledso \
183 buffer_cache disk filesys hinv hw ipc kernel mem name_cache network \
184 nfs nfs3 resource rpc stream swap swapdev vnodes xfs \
185 pmcd
187 src/exercise -i 5 $root \
188 | LC_COLLATE=POSIX sort \
189 | sample_filter \
190 | linux_filter \
191 | pmie_filter \
192 | count_filter >$tmp.tmp
194 if [ "$PCP_PLATFORM" = linux ]
195 then
196 sed <$tmp.tmp \
197 -e "/disk\.all\.avactive: $unavailable/d" \
198 -e "/disk\.all\.aveq: $unavailable/d" \
199 -e "/disk\.all\..*_bytes: $unavailable/d" \
200 -e "/disk\.dev\.avactive: $unavailable/d" \
201 -e "/disk\.dev\.aveq: $unavailable/d" \
202 -e "/disk\.dev\..*_bytes: $unavailable/d" \
203 -e "/disk\.partitions\./d" \
204 -e "/disk\.xvm\..*: $unavailable/d" \
205 -e "/hinv\.interconnect: $unavailable/d" \
206 -e "/hinv\.map\.cpu: $unavailable/d" \
207 -e "/hinv\.map\.disk: $unavailable/d" \
208 -e "/hinv\.map\.node: $unavailable/d" \
209 -e "/hinv\.map\.routerport: $unavailable/d" \
210 -e "/hinv\.map\.router: $unavailable/d" \
211 -e "/hinv\.map\.scsi: $unavailable/d" \
212 -e "/hinv\.map\.xbow: $unavailable/d" \
213 -e "/hinv\.nxbow: $nyi/d" \
214 -e "/hw\.hub\..*: $missing/d" \
215 -e "/hw\.hub\..*: $unavailable/d" \
216 -e "/hw\.router\..*: $unavailable/d" \
217 -e "/kernel\..*\.syscall: $unavailable/d" \
218 -e "/mem\.slabinfo\.objects\.active: $unavailable/d" \
219 -e "/mem\.slabinfo\.objects\.size: $unavailable/d" \
220 -e "/mem\.slabinfo\.objects\.total: $unavailable/d" \
221 -e "/mem\.slabinfo\.slabs\.active: $unavailable/d" \
222 -e "/mem\.slabinfo\.slabs\.objects_per_slab: $unavailable/d" \
223 -e "/mem\.slabinfo\.slabs\.pages_per_slab: $unavailable/d" \
224 -e "/mem\.slabinfo\.slabs\.total: $unavailable/d" \
225 -e "/mem\.slabinfo\.slabs\.total_size: $unavailable/d" \
226 -e "/mem\.vmstat\.nr_slab: $unavailable/d" \
227 -e "/mem\.numa\..*: $unavailable/d" \
228 -e "/mem\.util\.other: $unavailable/d" \
229 -e "/mem\.util\.reverseMaps: $unavailable/d" \
230 -e "/mem\.util\.shared: $unavailable/d" \
231 -e "/network\.ib\..*/d" \
232 -e "/network\.interface\.baudrate: $unavailable/d" \
233 -e "/network\.interface\.duplex: $unavailable/d" \
234 -e "/network\.interface\.inet_addr: $unavailable/d" \
235 -e "/network\.interface\.speed: $unavailable/d" \
236 -e "/network\..*\.incsumerrors: $unavailable/d" \
237 -e "/nfs3\.server\..*: $unavailable/d" \
238 -e "/nfs.*\.client\.calls: $unavailable/d" \
239 -e "/nfs.*\.client\.reqs: $unavailable/d" \
240 -e "/nfs\.server\..*: $unavailable/d" \
241 -e '/pmcd\.simabi/d' \
242 -e "/rpc\.client\..*: $unavailable/d" \
243 -e "/rpc\.server\..*: $unavailable/d" \
244 -e "/sampledso\.sysinfo: $nosupport/d" \
245 -e "/sample\.sysinfo: $nosupport/d" \
246 -e "/xfs\..*: $unavailable/d"
247 elif [ "$PCP_PLATFORM" = darwin ]
248 then
249 # do nothing at the moment
250 sed <$tmp.tmp \
251 -e 's/a/a/'
252 elif [ "$PCP_PLATFORM" = solaris ]
253 then
254 # do nothing at the moment
255 sed <$tmp.tmp \
256 -e 's/a/a/'
257 elif [ "$PCP_PLATFORM" = freebsd ]
258 then
259 # do nothing at the moment
260 sed <$tmp.tmp \
261 -e 's/a/a/'
262 elif [ "$PCP_PLATFORM" = netbsd ]
263 then
264 # do nothing at the moment
265 sed <$tmp.tmp \
266 -e 's/a/a/'
268 done