Merge branch 'master' of git://git.pcp.io/pcp into qt
[pcp.git] / qa / 038
blobdeaf50f1de92ae29838c63a36cd07eeb53e9360a
1 #! /bin/sh
2 # PCP QA Test No. 038
3 # pmlogger would die with horrible errors when diagnostics enabled, due
4 # to early timer events
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 _filter_dumplog()
18 _filter_dumpresult | sed \
19 -e '/inst /{
20 s;inst \[[0-9][0-9]* or ".*/dbs/.*\.dbf"];inst [FILE];
25 trap "rm -f $tmp.*; exit" 0 1 2 3 15
27 # real QA test starts here
28 $sudo rm -f $tmp.* $seq.full
29 cat <<End-of-File >$tmp.config
30 log mandatory on 1 sec {
31 sample.control
32 sample.milliseconds
33 sample.load
34 sample.colour
35 sample.bin
36 sample.bucket
37 sample.drift
38 sample.step
39 sample.write_me
40 sample.lights
41 sample.magnitude
42 sample.sysinfo
43 sample.pdu
44 sample.recv_pdu
45 sample.xmit_pdu
46 sample.noinst
47 disk.all.read
48 disk.all.write
49 disk.all.total
50 disk.all.blkread
51 disk.all.blkwrite
52 disk.all.blktotal
53 disk.all.active
54 disk.all.response
55 disk.all.bytes
56 disk.all.read_bytes
57 disk.all.write_bytes
58 disk.all.avg_disk.active
59 disk.all.avg_disk.response
60 kernel.all.cpu.idle
61 kernel.all.cpu.intr
62 kernel.all.cpu.sys
63 kernel.all.cpu.sxbrk
64 kernel.all.cpu.user
65 kernel.all.cpu.wait.total
66 kernel.all.cpu.wait.gfxc
67 kernel.all.cpu.wait.gfxf
68 kernel.all.cpu.wait.io
69 kernel.all.cpu.wait.pio
70 kernel.all.cpu.wait.swap
71 kernel.all.io.iget
72 kernel.all.io.bread
73 kernel.all.io.bwrite
74 kernel.all.io.lread
75 kernel.all.io.lwrite
76 kernel.all.io.phread
77 kernel.all.io.phwrite
78 kernel.all.io.wcancel
79 kernel.all.io.namei
80 kernel.all.io.dirblk
81 kernel.all.swap.swpocc
82 kernel.all.swap.swpque
83 kernel.all.load
84 kernel.all.users
85 kernel.all.pswitch
86 kernel.all.readch
87 kernel.all.runocc
88 kernel.all.runque
89 kernel.all.syscall
90 kernel.all.sysexec
91 kernel.all.sysfork
92 kernel.all.sysread
93 kernel.all.syswrite
94 kernel.all.writech
95 kernel.all.tty.recvintr
96 kernel.all.tty.xmitintr
97 kernel.all.tty.mdmintr
98 kernel.all.tty.out
99 kernel.all.tty.raw
100 kernel.all.tty.canon
101 kernel.all.intr.vme
102 kernel.all.intr.non_vme
103 kernel.all.ipc.msg
104 kernel.all.ipc.sema
105 kernel.all.pty.masterch
106 kernel.all.pty.slavech
107 kernel.all.flock.alloc
108 kernel.all.flock.inuse
109 hinv.ncpu
110 hinv.dcache
111 hinv.icache
112 hinv.physmem
113 hinv.pmeminterleave
114 hinv.ndisk
116 End-of-File
118 $sudo rm -f core*
119 # -D 511 is all of the PMAPI debug flags, excluding PM_TRACE_AF (the
120 # latter is non-deterministic, unfortunately)
121 pmlogger -D 511 -c $tmp.config -s 2 -l $tmp.log $tmp >$tmp.out 2>&1 &
122 logger_pid=$!
124 wait
126 if [ "`echo core*`" != "core*" ]
127 then
128 echo "Arrgh ... pmlogger dumped core?"
129 ls -l core*
130 file core*
131 else
132 echo "OK, pmlogger survived"
135 # The traces and the list of metrics depend on which operating
136 # system you're running on. There is no real point in generating all
137 # this output (filtered diagnostics and verbose pmdumplog) because
138 # I expect to be different.
139 # -Ken 1 June 2001
141 # Simple sanity check on the number of pmResults in the archive ...
143 echo
144 echo "count records in archive (expect 1 for preamble + 2) ..."
145 pmdumplog $tmp 2>&1 \
146 | tee -a $seq.full \
147 | _filter_dumplog \
148 | sed -n -e '/TIMESTAMP/s/STAMP.*/STAMP/p'
150 # and truncate the test here!
152 exit
154 # enable this to see what is really happening!
155 echo "=== out ===" >038.full
156 cat $tmp.out >>038.full
157 echo >>038.full
158 echo "=== log ===" >>038.full
159 cat $tmp.log >>038.full
161 # may need this yet...
163 # filter output and sum by diagnostic type
164 cat $tmp.out $tmp.log \
165 | sed \
166 -e '/success*/d' \
167 -e 's/Log f.*/Log/g' \
168 -e 's/searchindom/__localLogGetInDom/g' \
169 | _filter_dumpresult \
170 | sed \
171 -e 's/^\[[0-9][0-9]*]//' \
172 -e '/^[0-9][0-9][0-9]:/d' \
173 -e 's/^ *//' \
174 -e 's/After loading config/After_loading_config/' \
175 -e 's/Dump Contexts/Dump_Contexts/' \
176 -e 's/Dump Instance Profile/Dump_Instance_Profile/' \
177 -e 's/Dump optfetch/Dump_optfetch/' \
178 -e 's/free pdubuf/free_pdubuf/' \
179 -e '/__pmDecodeXtendError/d' \
180 -e '/__pmFdLookupIPC/d' \
181 -e 's/[(: =].*//'
183 # now, what is in the log? ...
184 pmdumplog $tmp 2>&1 \
185 | _filter_dumplog \
186 | sed \
187 -e "/\"$logger_pid\"/s/$logger_pid/LOGGER_PID/g" \
188 -e '/pmcd.pmlogger.port/s/value .*/value PORT/' \
189 -e '/pmcd.pmlogger.host/s/value ".*/value "HOST"/' \
190 | ./xlate_2_new_pmns