1*ec2ed2fbSBrad Bishop# Test PDM configuration file.  This file validates that all
2*ec2ed2fbSBrad Bishop# possible configuration file directives result in an application
3*ec2ed2fbSBrad Bishop# that builds.  For an example with documentation please see
4*ec2ed2fbSBrad Bishop# example.yaml
5*ec2ed2fbSBrad Bishop
6*ec2ed2fbSBrad Bishop- name: test path group
7*ec2ed2fbSBrad Bishop  class: group
8*ec2ed2fbSBrad Bishop  group: path
9*ec2ed2fbSBrad Bishop  members:
10*ec2ed2fbSBrad Bishop    - meta: PATH
11*ec2ed2fbSBrad Bishop      path: /xyz/openbmc_project/testing/inst1
12*ec2ed2fbSBrad Bishop    - meta: PATH
13*ec2ed2fbSBrad Bishop      path: /xyz/openbmc_project/testing/inst2
14*ec2ed2fbSBrad Bishop    - meta: PATH
15*ec2ed2fbSBrad Bishop      path: /xyz/openbmc_project/testing/inst3
16*ec2ed2fbSBrad Bishop    - meta: PATH
17*ec2ed2fbSBrad Bishop      path: /xyz/openbmc_project/testing/inst4
18*ec2ed2fbSBrad Bishop
19*ec2ed2fbSBrad Bishop- name: test byte property group
20*ec2ed2fbSBrad Bishop  class: group
21*ec2ed2fbSBrad Bishop  group: property
22*ec2ed2fbSBrad Bishop  type: byte
23*ec2ed2fbSBrad Bishop  members:
24*ec2ed2fbSBrad Bishop    - interface: xyz.openbmc_project.byteIface
25*ec2ed2fbSBrad Bishop      meta: PROPERTY
26*ec2ed2fbSBrad Bishop      property: byteValue
27*ec2ed2fbSBrad Bishop
28*ec2ed2fbSBrad Bishop- name: test u16 property group
29*ec2ed2fbSBrad Bishop  class: group
30*ec2ed2fbSBrad Bishop  group: property
31*ec2ed2fbSBrad Bishop  type: uint16
32*ec2ed2fbSBrad Bishop  members:
33*ec2ed2fbSBrad Bishop    - interface: xyz.openbmc_project.U16Iface
34*ec2ed2fbSBrad Bishop      meta: PROPERTY
35*ec2ed2fbSBrad Bishop      property: u16Value
36*ec2ed2fbSBrad Bishop
37*ec2ed2fbSBrad Bishop- name: test u32 property group
38*ec2ed2fbSBrad Bishop  class: group
39*ec2ed2fbSBrad Bishop  group: property
40*ec2ed2fbSBrad Bishop  type: uint32
41*ec2ed2fbSBrad Bishop  members:
42*ec2ed2fbSBrad Bishop    - interface: xyz.openbmc_project.U32Iface
43*ec2ed2fbSBrad Bishop      meta: PROPERTY
44*ec2ed2fbSBrad Bishop      property: u32Value
45*ec2ed2fbSBrad Bishop
46*ec2ed2fbSBrad Bishop- name: test u64 property group
47*ec2ed2fbSBrad Bishop  class: group
48*ec2ed2fbSBrad Bishop  group: property
49*ec2ed2fbSBrad Bishop  type: uint64
50*ec2ed2fbSBrad Bishop  members:
51*ec2ed2fbSBrad Bishop    - interface: xyz.openbmc_project.U64Iface
52*ec2ed2fbSBrad Bishop      meta: PROPERTY
53*ec2ed2fbSBrad Bishop      property: u64Value
54*ec2ed2fbSBrad Bishop
55*ec2ed2fbSBrad Bishop- name: test s16 property group
56*ec2ed2fbSBrad Bishop  class: group
57*ec2ed2fbSBrad Bishop  group: property
58*ec2ed2fbSBrad Bishop  type: int16
59*ec2ed2fbSBrad Bishop  members:
60*ec2ed2fbSBrad Bishop    - interface: xyz.openbmc_project.S16Iface
61*ec2ed2fbSBrad Bishop      meta: PROPERTY
62*ec2ed2fbSBrad Bishop      property: s16Value
63*ec2ed2fbSBrad Bishop
64*ec2ed2fbSBrad Bishop- name: test s32 property group
65*ec2ed2fbSBrad Bishop  class: group
66*ec2ed2fbSBrad Bishop  group: property
67*ec2ed2fbSBrad Bishop  type: int32
68*ec2ed2fbSBrad Bishop  members:
69*ec2ed2fbSBrad Bishop    - interface: xyz.openbmc_project.S32Iface
70*ec2ed2fbSBrad Bishop      meta: PROPERTY
71*ec2ed2fbSBrad Bishop      property: s32Value
72*ec2ed2fbSBrad Bishop
73*ec2ed2fbSBrad Bishop- name: test s64 property group
74*ec2ed2fbSBrad Bishop  class: group
75*ec2ed2fbSBrad Bishop  group: property
76*ec2ed2fbSBrad Bishop  type: int64
77*ec2ed2fbSBrad Bishop  members:
78*ec2ed2fbSBrad Bishop    - interface: xyz.openbmc_project.S64Iface
79*ec2ed2fbSBrad Bishop      meta: PROPERTY
80*ec2ed2fbSBrad Bishop      property: s64Value
81*ec2ed2fbSBrad Bishop
82*ec2ed2fbSBrad Bishop- name: test string property group
83*ec2ed2fbSBrad Bishop  class: group
84*ec2ed2fbSBrad Bishop  group: property
85*ec2ed2fbSBrad Bishop  type: string
86*ec2ed2fbSBrad Bishop  members:
87*ec2ed2fbSBrad Bishop    - interface: xyz.openbmc_project.StringIface
88*ec2ed2fbSBrad Bishop      meta: PROPERTY
89*ec2ed2fbSBrad Bishop      property: StringValue
90*ec2ed2fbSBrad Bishop
91*ec2ed2fbSBrad Bishop- name: test bool property group
92*ec2ed2fbSBrad Bishop  class: group
93*ec2ed2fbSBrad Bishop  group: property
94*ec2ed2fbSBrad Bishop  type: boolean
95*ec2ed2fbSBrad Bishop  members:
96*ec2ed2fbSBrad Bishop    - interface: xyz.openbmc_project.BoolIface
97*ec2ed2fbSBrad Bishop      meta: PROPERTY
98*ec2ed2fbSBrad Bishop      property: BoolValue
99*ec2ed2fbSBrad Bishop
100*ec2ed2fbSBrad Bishop- name: test byte watch
101*ec2ed2fbSBrad Bishop  class: watch
102*ec2ed2fbSBrad Bishop  watch: property
103*ec2ed2fbSBrad Bishop  paths: test path group
104*ec2ed2fbSBrad Bishop  properties: test byte property group
105*ec2ed2fbSBrad Bishop
106*ec2ed2fbSBrad Bishop- name: test u16 watch
107*ec2ed2fbSBrad Bishop  class: watch
108*ec2ed2fbSBrad Bishop  watch: property
109*ec2ed2fbSBrad Bishop  paths: test path group
110*ec2ed2fbSBrad Bishop  properties: test u16 property group
111*ec2ed2fbSBrad Bishop
112*ec2ed2fbSBrad Bishop- name: test u32 watch
113*ec2ed2fbSBrad Bishop  class: watch
114*ec2ed2fbSBrad Bishop  watch: property
115*ec2ed2fbSBrad Bishop  paths: test path group
116*ec2ed2fbSBrad Bishop  properties: test u32 property group
117*ec2ed2fbSBrad Bishop
118*ec2ed2fbSBrad Bishop- name: test u64 watch
119*ec2ed2fbSBrad Bishop  class: watch
120*ec2ed2fbSBrad Bishop  watch: property
121*ec2ed2fbSBrad Bishop  paths: test path group
122*ec2ed2fbSBrad Bishop  properties: test u64 property group
123*ec2ed2fbSBrad Bishop
124*ec2ed2fbSBrad Bishop- name: test s16 watch
125*ec2ed2fbSBrad Bishop  class: watch
126*ec2ed2fbSBrad Bishop  watch: property
127*ec2ed2fbSBrad Bishop  paths: test path group
128*ec2ed2fbSBrad Bishop  properties: test s16 property group
129*ec2ed2fbSBrad Bishop
130*ec2ed2fbSBrad Bishop- name: test s32 watch
131*ec2ed2fbSBrad Bishop  class: watch
132*ec2ed2fbSBrad Bishop  watch: property
133*ec2ed2fbSBrad Bishop  paths: test path group
134*ec2ed2fbSBrad Bishop  properties: test s32 property group
135*ec2ed2fbSBrad Bishop
136*ec2ed2fbSBrad Bishop- name: test s64 watch
137*ec2ed2fbSBrad Bishop  class: watch
138*ec2ed2fbSBrad Bishop  watch: property
139*ec2ed2fbSBrad Bishop  paths: test path group
140*ec2ed2fbSBrad Bishop  properties: test s64 property group
141*ec2ed2fbSBrad Bishop
142*ec2ed2fbSBrad Bishop- name: test bool watch
143*ec2ed2fbSBrad Bishop  class: watch
144*ec2ed2fbSBrad Bishop  watch: property
145*ec2ed2fbSBrad Bishop  paths: test path group
146*ec2ed2fbSBrad Bishop  properties: test bool property group
147*ec2ed2fbSBrad Bishop
148*ec2ed2fbSBrad Bishop- name: test string watch
149*ec2ed2fbSBrad Bishop  class: watch
150*ec2ed2fbSBrad Bishop  watch: property
151*ec2ed2fbSBrad Bishop  paths: test path group
152*ec2ed2fbSBrad Bishop  properties: test string property group
153*ec2ed2fbSBrad Bishop
154*ec2ed2fbSBrad Bishop- name: test byte journal
155*ec2ed2fbSBrad Bishop  class: callback
156*ec2ed2fbSBrad Bishop  callback: journal
157*ec2ed2fbSBrad Bishop  paths: test path group
158*ec2ed2fbSBrad Bishop  properties: test byte property group
159*ec2ed2fbSBrad Bishop  severity: DEBUG
160*ec2ed2fbSBrad Bishop  message: Testing...
161*ec2ed2fbSBrad Bishop
162*ec2ed2fbSBrad Bishop- name: test u16 journal
163*ec2ed2fbSBrad Bishop  class: callback
164*ec2ed2fbSBrad Bishop  callback: journal
165*ec2ed2fbSBrad Bishop  paths: test path group
166*ec2ed2fbSBrad Bishop  properties: test u16 property group
167*ec2ed2fbSBrad Bishop  severity: INFO
168*ec2ed2fbSBrad Bishop  message: Testing...
169*ec2ed2fbSBrad Bishop
170*ec2ed2fbSBrad Bishop- name: test u32 journal
171*ec2ed2fbSBrad Bishop  class: callback
172*ec2ed2fbSBrad Bishop  callback: journal
173*ec2ed2fbSBrad Bishop  paths: test path group
174*ec2ed2fbSBrad Bishop  properties: test u32 property group
175*ec2ed2fbSBrad Bishop  severity: NOTICE
176*ec2ed2fbSBrad Bishop  message: Testing...
177*ec2ed2fbSBrad Bishop
178*ec2ed2fbSBrad Bishop- name: test u64 journal
179*ec2ed2fbSBrad Bishop  class: callback
180*ec2ed2fbSBrad Bishop  callback: journal
181*ec2ed2fbSBrad Bishop  paths: test path group
182*ec2ed2fbSBrad Bishop  properties: test u64 property group
183*ec2ed2fbSBrad Bishop  severity: WARNING
184*ec2ed2fbSBrad Bishop  message: Testing...
185*ec2ed2fbSBrad Bishop
186*ec2ed2fbSBrad Bishop- name: test s16 journal
187*ec2ed2fbSBrad Bishop  class: callback
188*ec2ed2fbSBrad Bishop  callback: journal
189*ec2ed2fbSBrad Bishop  paths: test path group
190*ec2ed2fbSBrad Bishop  properties: test s16 property group
191*ec2ed2fbSBrad Bishop  severity: ERR
192*ec2ed2fbSBrad Bishop  message: Testing...
193*ec2ed2fbSBrad Bishop
194*ec2ed2fbSBrad Bishop- name: test s32 journal
195*ec2ed2fbSBrad Bishop  class: callback
196*ec2ed2fbSBrad Bishop  callback: journal
197*ec2ed2fbSBrad Bishop  paths: test path group
198*ec2ed2fbSBrad Bishop  properties: test s32 property group
199*ec2ed2fbSBrad Bishop  severity: CRIT
200*ec2ed2fbSBrad Bishop  message: Testing...
201*ec2ed2fbSBrad Bishop
202*ec2ed2fbSBrad Bishop- name: test s64 journal
203*ec2ed2fbSBrad Bishop  class: callback
204*ec2ed2fbSBrad Bishop  callback: journal
205*ec2ed2fbSBrad Bishop  paths: test path group
206*ec2ed2fbSBrad Bishop  properties: test s64 property group
207*ec2ed2fbSBrad Bishop  severity: ALERT
208*ec2ed2fbSBrad Bishop  message: Testing...
209*ec2ed2fbSBrad Bishop
210*ec2ed2fbSBrad Bishop- name: test bool journal
211*ec2ed2fbSBrad Bishop  class: callback
212*ec2ed2fbSBrad Bishop  callback: journal
213*ec2ed2fbSBrad Bishop  paths: test path group
214*ec2ed2fbSBrad Bishop  properties: test bool property group
215*ec2ed2fbSBrad Bishop  severity: EMERG
216*ec2ed2fbSBrad Bishop  message: Testing...
217*ec2ed2fbSBrad Bishop
218*ec2ed2fbSBrad Bishop- name: test string journal
219*ec2ed2fbSBrad Bishop  class: callback
220*ec2ed2fbSBrad Bishop  callback: journal
221*ec2ed2fbSBrad Bishop  paths: test path group
222*ec2ed2fbSBrad Bishop  properties: test string property group
223*ec2ed2fbSBrad Bishop  severity: INFO
224*ec2ed2fbSBrad Bishop  message: Testing...
225*ec2ed2fbSBrad Bishop
226*ec2ed2fbSBrad Bishop- name: test method
227*ec2ed2fbSBrad Bishop  class: callback
228*ec2ed2fbSBrad Bishop  callback: method
229*ec2ed2fbSBrad Bishop  service: org.test
230*ec2ed2fbSBrad Bishop  path: /test
231*ec2ed2fbSBrad Bishop  interface: org.test
232*ec2ed2fbSBrad Bishop  method: Test
233*ec2ed2fbSBrad Bishop  args:
234*ec2ed2fbSBrad Bishop    - value: 123
235*ec2ed2fbSBrad Bishop      type: string
236*ec2ed2fbSBrad Bishop    - value: false
237*ec2ed2fbSBrad Bishop      type: boolean
238*ec2ed2fbSBrad Bishop    - value: true
239*ec2ed2fbSBrad Bishop      type: boolean
240*ec2ed2fbSBrad Bishop    - value: 123
241*ec2ed2fbSBrad Bishop      type: byte
242*ec2ed2fbSBrad Bishop    - value: 123
243*ec2ed2fbSBrad Bishop      type: uint16
244*ec2ed2fbSBrad Bishop    - value: 123
245*ec2ed2fbSBrad Bishop      type: uint32
246*ec2ed2fbSBrad Bishop    - value: 123
247*ec2ed2fbSBrad Bishop      type: uint64
248*ec2ed2fbSBrad Bishop    - value: 123
249*ec2ed2fbSBrad Bishop      type: int16
250*ec2ed2fbSBrad Bishop    - value: 123
251*ec2ed2fbSBrad Bishop      type: int32
252*ec2ed2fbSBrad Bishop    - value: 123
253*ec2ed2fbSBrad Bishop      type: int64
254*ec2ed2fbSBrad Bishop
255*ec2ed2fbSBrad Bishop- name: test count lt
256*ec2ed2fbSBrad Bishop  class: condition
257*ec2ed2fbSBrad Bishop  condition: count
258*ec2ed2fbSBrad Bishop  paths: test path group
259*ec2ed2fbSBrad Bishop  properties: test byte property group
260*ec2ed2fbSBrad Bishop  callback: test method
261*ec2ed2fbSBrad Bishop  countop: '<'
262*ec2ed2fbSBrad Bishop  countbound: 3
263*ec2ed2fbSBrad Bishop  op: '<'
264*ec2ed2fbSBrad Bishop  bound: 115
265*ec2ed2fbSBrad Bishop
266*ec2ed2fbSBrad Bishop- name: test count lte
267*ec2ed2fbSBrad Bishop  class: condition
268*ec2ed2fbSBrad Bishop  condition: count
269*ec2ed2fbSBrad Bishop  paths: test path group
270*ec2ed2fbSBrad Bishop  properties: test byte property group
271*ec2ed2fbSBrad Bishop  callback: test method
272*ec2ed2fbSBrad Bishop  defer: 1000us
273*ec2ed2fbSBrad Bishop  countop: '<='
274*ec2ed2fbSBrad Bishop  countbound: 3
275*ec2ed2fbSBrad Bishop  op: '<='
276*ec2ed2fbSBrad Bishop  bound: 115
277*ec2ed2fbSBrad Bishop
278*ec2ed2fbSBrad Bishop- name: test count gt
279*ec2ed2fbSBrad Bishop  class: condition
280*ec2ed2fbSBrad Bishop  condition: count
281*ec2ed2fbSBrad Bishop  paths: test path group
282*ec2ed2fbSBrad Bishop  properties: test byte property group
283*ec2ed2fbSBrad Bishop  defer: 1000us
284*ec2ed2fbSBrad Bishop  callback: test method
285*ec2ed2fbSBrad Bishop  countop: '>'
286*ec2ed2fbSBrad Bishop  countbound: 3
287*ec2ed2fbSBrad Bishop  op: '>'
288*ec2ed2fbSBrad Bishop  bound: 115
289*ec2ed2fbSBrad Bishop
290*ec2ed2fbSBrad Bishop- name: test count gte
291*ec2ed2fbSBrad Bishop  class: condition
292*ec2ed2fbSBrad Bishop  condition: count
293*ec2ed2fbSBrad Bishop  paths: test path group
294*ec2ed2fbSBrad Bishop  properties: test byte property group
295*ec2ed2fbSBrad Bishop  defer: 1000us
296*ec2ed2fbSBrad Bishop  callback: test method
297*ec2ed2fbSBrad Bishop  countop: '>='
298*ec2ed2fbSBrad Bishop  countbound: 3
299*ec2ed2fbSBrad Bishop  op: '>='
300*ec2ed2fbSBrad Bishop  bound: 115
301*ec2ed2fbSBrad Bishop
302*ec2ed2fbSBrad Bishop- name: test count eq
303*ec2ed2fbSBrad Bishop  class: condition
304*ec2ed2fbSBrad Bishop  condition: count
305*ec2ed2fbSBrad Bishop  paths: test path group
306*ec2ed2fbSBrad Bishop  properties: test byte property group
307*ec2ed2fbSBrad Bishop  defer: 1000us
308*ec2ed2fbSBrad Bishop  callback: test method
309*ec2ed2fbSBrad Bishop  countop: '=='
310*ec2ed2fbSBrad Bishop  countbound: 3
311*ec2ed2fbSBrad Bishop  op: '=='
312*ec2ed2fbSBrad Bishop  bound: 115
313*ec2ed2fbSBrad Bishop
314*ec2ed2fbSBrad Bishop- name: test count neq
315*ec2ed2fbSBrad Bishop  class: condition
316*ec2ed2fbSBrad Bishop  condition: count
317*ec2ed2fbSBrad Bishop  paths: test path group
318*ec2ed2fbSBrad Bishop  properties: test byte property group
319*ec2ed2fbSBrad Bishop  defer: 1000us
320*ec2ed2fbSBrad Bishop  callback: test method
321*ec2ed2fbSBrad Bishop  countop: '!='
322*ec2ed2fbSBrad Bishop  countbound: 3
323*ec2ed2fbSBrad Bishop  op: '!='
324*ec2ed2fbSBrad Bishop  bound: 115
325*ec2ed2fbSBrad Bishop
326*ec2ed2fbSBrad Bishop- name: test count u16
327*ec2ed2fbSBrad Bishop  class: condition
328*ec2ed2fbSBrad Bishop  condition: count
329*ec2ed2fbSBrad Bishop  paths: test path group
330*ec2ed2fbSBrad Bishop  properties: test u16 property group
331*ec2ed2fbSBrad Bishop  defer: 1000us
332*ec2ed2fbSBrad Bishop  callback: test method
333*ec2ed2fbSBrad Bishop  countop: '=='
334*ec2ed2fbSBrad Bishop  countbound: 3
335*ec2ed2fbSBrad Bishop  op: '=='
336*ec2ed2fbSBrad Bishop  bound: 115
337*ec2ed2fbSBrad Bishop
338*ec2ed2fbSBrad Bishop- name: test count u32
339*ec2ed2fbSBrad Bishop  class: condition
340*ec2ed2fbSBrad Bishop  condition: count
341*ec2ed2fbSBrad Bishop  paths: test path group
342*ec2ed2fbSBrad Bishop  properties: test u32 property group
343*ec2ed2fbSBrad Bishop  defer: 1000us
344*ec2ed2fbSBrad Bishop  callback: test method
345*ec2ed2fbSBrad Bishop  countop: '=='
346*ec2ed2fbSBrad Bishop  countbound: 3
347*ec2ed2fbSBrad Bishop  op: '=='
348*ec2ed2fbSBrad Bishop  bound: 115
349*ec2ed2fbSBrad Bishop
350*ec2ed2fbSBrad Bishop- name: test count u64
351*ec2ed2fbSBrad Bishop  class: condition
352*ec2ed2fbSBrad Bishop  condition: count
353*ec2ed2fbSBrad Bishop  paths: test path group
354*ec2ed2fbSBrad Bishop  properties: test u64 property group
355*ec2ed2fbSBrad Bishop  defer: 1000us
356*ec2ed2fbSBrad Bishop  callback: test method
357*ec2ed2fbSBrad Bishop  countop: '=='
358*ec2ed2fbSBrad Bishop  countbound: 3
359*ec2ed2fbSBrad Bishop  op: '=='
360*ec2ed2fbSBrad Bishop  bound: 115
361*ec2ed2fbSBrad Bishop
362*ec2ed2fbSBrad Bishop- name: test count s16
363*ec2ed2fbSBrad Bishop  class: condition
364*ec2ed2fbSBrad Bishop  condition: count
365*ec2ed2fbSBrad Bishop  paths: test path group
366*ec2ed2fbSBrad Bishop  properties: test s16 property group
367*ec2ed2fbSBrad Bishop  defer: 1000us
368*ec2ed2fbSBrad Bishop  callback: test method
369*ec2ed2fbSBrad Bishop  countop: '=='
370*ec2ed2fbSBrad Bishop  countbound: 3
371*ec2ed2fbSBrad Bishop  op: '=='
372*ec2ed2fbSBrad Bishop  bound: 115
373*ec2ed2fbSBrad Bishop
374*ec2ed2fbSBrad Bishop- name: test count s32
375*ec2ed2fbSBrad Bishop  class: condition
376*ec2ed2fbSBrad Bishop  condition: count
377*ec2ed2fbSBrad Bishop  paths: test path group
378*ec2ed2fbSBrad Bishop  properties: test s32 property group
379*ec2ed2fbSBrad Bishop  defer: 1000us
380*ec2ed2fbSBrad Bishop  callback: test method
381*ec2ed2fbSBrad Bishop  countop: '=='
382*ec2ed2fbSBrad Bishop  countbound: 3
383*ec2ed2fbSBrad Bishop  op: '=='
384*ec2ed2fbSBrad Bishop  bound: 115
385*ec2ed2fbSBrad Bishop
386*ec2ed2fbSBrad Bishop- name: test count s64
387*ec2ed2fbSBrad Bishop  class: condition
388*ec2ed2fbSBrad Bishop  condition: count
389*ec2ed2fbSBrad Bishop  paths: test path group
390*ec2ed2fbSBrad Bishop  properties: test s64 property group
391*ec2ed2fbSBrad Bishop  defer: 1000us
392*ec2ed2fbSBrad Bishop  callback: test method
393*ec2ed2fbSBrad Bishop  countop: '=='
394*ec2ed2fbSBrad Bishop  countbound: 3
395*ec2ed2fbSBrad Bishop  op: '=='
396*ec2ed2fbSBrad Bishop  bound: 115
397*ec2ed2fbSBrad Bishop
398*ec2ed2fbSBrad Bishop- name: test count bool
399*ec2ed2fbSBrad Bishop  class: condition
400*ec2ed2fbSBrad Bishop  condition: count
401*ec2ed2fbSBrad Bishop  paths: test path group
402*ec2ed2fbSBrad Bishop  properties: test bool property group
403*ec2ed2fbSBrad Bishop  defer: 1000us
404*ec2ed2fbSBrad Bishop  callback: test method
405*ec2ed2fbSBrad Bishop  countop: '=='
406*ec2ed2fbSBrad Bishop  countbound: 3
407*ec2ed2fbSBrad Bishop  op: '=='
408*ec2ed2fbSBrad Bishop  bound: false
409