6 class AllMessagesTestCase(unittest
.TestCase
):
9 class MyIter(bt2
._UserMessageIterator
):
10 def __init__(self
, self_port_output
):
14 if test_obj
._clock
_class
:
16 msg
= self
._create
_stream
_beginning
_message
(test_obj
._stream
)
18 msg
= self
._create
_stream
_activity
_beginning
_message
(test_obj
._stream
, default_clock_snapshot
=self
._at
)
20 msg
= self
._create
_packet
_beginning
_message
(test_obj
._packet
, self
._at
)
22 msg
= self
._create
_event
_message
(test_obj
._event
_class
, test_obj
._packet
, self
._at
)
24 msg
= self
._create
_message
_iterator
_inactivity
_message
(test_obj
._clock
_class
, self
._at
)
26 msg
= self
._create
_discarded
_events
_message
(test_obj
._stream
, 890, self
._at
, self
._at
)
28 msg
= self
._create
_packet
_end
_message
(test_obj
._packet
, self
._at
)
30 msg
= self
._create
_discarded
_packets
_message
(test_obj
._stream
, 678, self
._at
, self
._at
)
32 msg
= self
._create
_stream
_activity
_end
_message
(test_obj
._stream
, default_clock_snapshot
=self
._at
)
34 msg
= self
._create
_stream
_end
_message
(test_obj
._stream
)
39 msg
= self
._create
_stream
_beginning
_message
(test_obj
._stream
)
41 msg
= self
._create
_stream
_activity
_beginning
_message
(test_obj
._stream
)
43 msg
= self
._create
_packet
_beginning
_message
(test_obj
._packet
)
45 msg
= self
._create
_event
_message
(test_obj
._event
_class
, test_obj
._packet
)
47 msg
= self
._create
_discarded
_events
_message
(test_obj
._stream
, 890)
49 msg
= self
._create
_packet
_end
_message
(test_obj
._packet
)
51 msg
= self
._create
_discarded
_packets
_message
(test_obj
._stream
, 678)
53 msg
= self
._create
_stream
_activity
_end
_message
(test_obj
._stream
)
55 msg
= self
._create
_stream
_end
_message
(test_obj
._stream
)
62 class MySrc(bt2
._UserSourceComponent
, message_iterator_class
=MyIter
):
63 def __init__(self
, params
):
64 self
._add
_output
_port
('out')
66 with_cc
= bool(params
['with_cc'])
67 tc
= self
._create
_trace
_class
()
69 cc
= self
._create
_clock
_class
()
73 sc
= tc
.create_stream_class(default_clock_class
=cc
,
74 packets_have_beginning_default_clock_snapshot
=with_cc
,
75 packets_have_end_default_clock_snapshot
=with_cc
,
76 supports_discarded_events
=True,
77 discarded_events_have_default_clock_snapshots
=with_cc
,
78 supports_discarded_packets
=True,
79 discarded_packets_have_default_clock_snapshots
=with_cc
)
81 # Create payload field class
82 my_int_fc
= tc
.create_signed_integer_field_class(32)
83 payload_fc
= tc
.create_structure_field_class()
84 payload_fc
+= collections
.OrderedDict([
85 ('my_int', my_int_fc
),
88 ec
= sc
.create_event_class(name
='salut', payload_field_class
=payload_fc
)
91 stream
= trace
.create_stream(sc
)
92 packet
= stream
.create_packet()
94 test_obj
._trace
= trace
95 test_obj
._stream
= stream
96 test_obj
._packet
= packet
97 test_obj
._event
_class
= ec
98 test_obj
._clock
_class
= cc
101 self
._graph
= bt2
.Graph()
105 def test_all_msg_with_cc(self
):
106 params
= {'with_cc': True}
107 self
._src
_comp
= self
._graph
.add_component(self
._src
, 'my_source', params
)
108 self
._msg
_iter
= self
._graph
.create_output_port_message_iterator(self
._src
_comp
.output_ports
['out'])
110 for i
, msg
in enumerate(self
._msg
_iter
):
112 self
.assertIsInstance(msg
, bt2
.message
._StreamBeginningMessage
)
113 self
.assertEqual(msg
.stream
.addr
, self
._stream
.addr
)
115 self
.assertIsInstance(msg
, bt2
.message
._StreamActivityBeginningMessage
)
116 self
.assertEqual(msg
.default_clock_snapshot
.value
, i
)
118 self
.assertIsInstance(msg
, bt2
.message
._PacketBeginningMessage
)
119 self
.assertEqual(msg
.packet
.addr
, self
._packet
.addr
)
120 self
.assertEqual(msg
.default_clock_snapshot
.value
, i
)
122 self
.assertIsInstance(msg
, bt2
.message
._EventMessage
)
123 self
.assertEqual(msg
.event
.cls
.addr
, self
._event
_class
.addr
)
124 self
.assertEqual(msg
.default_clock_snapshot
.value
, i
)
126 self
.assertIsInstance(msg
, bt2
.message
._MessageIteratorInactivityMessage
)
127 self
.assertEqual(msg
.default_clock_snapshot
.value
, i
)
129 self
.assertIsInstance(msg
, bt2
.message
._DiscardedEventsMessage
)
130 self
.assertEqual(msg
.stream
.addr
, self
._stream
.addr
)
131 self
.assertEqual(msg
.count
, 890)
132 self
.assertEqual(msg
.stream
.cls
.default_clock_class
.addr
, self
._clock
_class
.addr
)
133 self
.assertEqual(msg
.beginning_default_clock_snapshot
.value
, i
)
134 self
.assertEqual(msg
.end_default_clock_snapshot
.value
, i
)
136 self
.assertIsInstance(msg
, bt2
.message
._PacketEndMessage
)
137 self
.assertEqual(msg
.packet
.addr
, self
._packet
.addr
)
138 self
.assertEqual(msg
.default_clock_snapshot
.value
, i
)
140 self
.assertIsInstance(msg
, bt2
.message
._DiscardedPacketsMessage
)
141 self
.assertEqual(msg
.stream
.addr
, self
._stream
.addr
)
142 self
.assertEqual(msg
.count
, 678)
143 self
.assertEqual(msg
.stream
.cls
.default_clock_class
.addr
, self
._clock
_class
.addr
)
144 self
.assertEqual(msg
.beginning_default_clock_snapshot
.value
, i
)
145 self
.assertEqual(msg
.end_default_clock_snapshot
.value
, i
)
147 self
.assertIsInstance(msg
, bt2
.message
._StreamActivityEndMessage
)
148 self
.assertEqual(msg
.stream
.addr
, self
._stream
.addr
)
149 self
.assertEqual(msg
.default_clock_snapshot
.value
, i
)
151 self
.assertIsInstance(msg
, bt2
.message
._StreamEndMessage
)
152 self
.assertEqual(msg
.stream
.addr
, self
._stream
.addr
)
156 def test_all_msg_without_cc(self
):
157 params
= {'with_cc': False}
158 self
._src
_comp
= self
._graph
.add_component(self
._src
, 'my_source', params
)
159 self
._msg
_iter
= self
._graph
.create_output_port_message_iterator(self
._src
_comp
.output_ports
['out'])
161 for i
, msg
in enumerate(self
._msg
_iter
):
163 self
.assertIsInstance(msg
, bt2
.message
._StreamBeginningMessage
)
164 self
.assertEqual(msg
.stream
.addr
, self
._stream
.addr
)
166 self
.assertIsInstance(msg
, bt2
.message
._StreamActivityBeginningMessage
)
167 self
.assertIsInstance(msg
.default_clock_snapshot
,
168 bt2
._UnknownClockSnapshot
)
170 self
.assertIsInstance(msg
, bt2
.message
._PacketBeginningMessage
)
171 self
.assertEqual(msg
.packet
.addr
, self
._packet
.addr
)
173 self
.assertIsInstance(msg
, bt2
.message
._EventMessage
)
174 self
.assertEqual(msg
.event
.cls
.addr
, self
._event
_class
.addr
)
175 with self
.assertRaises(bt2
.NonexistentClockSnapshot
):
176 msg
.default_clock_snapshot
178 self
.assertIsInstance(msg
, bt2
.message
._DiscardedEventsMessage
)
179 self
.assertEqual(msg
.stream
.addr
, self
._stream
.addr
)
180 self
.assertEqual(msg
.count
, 890)
181 self
.assertIsNone(msg
.stream
.cls
.default_clock_class
)
182 with self
.assertRaises(bt2
.NonexistentClockSnapshot
):
183 msg
.beginning_default_clock_snapshot
184 with self
.assertRaises(bt2
.NonexistentClockSnapshot
):
185 msg
.end_default_clock_snapshot
187 self
.assertIsInstance(msg
, bt2
.message
._PacketEndMessage
)
188 self
.assertEqual(msg
.packet
.addr
, self
._packet
.addr
)
190 self
.assertIsInstance(msg
, bt2
.message
._DiscardedPacketsMessage
)
191 self
.assertEqual(msg
.stream
.addr
, self
._stream
.addr
)
192 self
.assertEqual(msg
.count
, 678)
193 self
.assertIsNone(msg
.stream
.cls
.default_clock_class
)
194 with self
.assertRaises(bt2
.NonexistentClockSnapshot
):
195 msg
.beginning_default_clock_snapshot
196 with self
.assertRaises(bt2
.NonexistentClockSnapshot
):
197 msg
.end_default_clock_snapshot
199 self
.assertIsInstance(msg
, bt2
.message
._StreamActivityEndMessage
)
200 self
.assertEqual(msg
.stream
.addr
, self
._stream
.addr
)
201 self
.assertIsInstance(msg
.default_clock_snapshot
,
202 bt2
._UnknownClockSnapshot
)
204 self
.assertIsInstance(msg
, bt2
.message
._StreamEndMessage
)
205 self
.assertEqual(msg
.stream
.addr
, self
._stream
.addr
)
210 class StreamActivityMessagesTestCase(unittest
.TestCase
):
211 def _test_create_msg(self
, with_cc
, test_create_beginning_func
, test_create_end_func
):
212 class MyIter(bt2
._UserMessageIterator
):
213 def __init__(self
, self_port_output
):
218 msg
= self
._create
_stream
_beginning
_message
(self
._component
._stream
)
220 msg
= test_create_beginning_func(self
, self
._component
._stream
)
222 msg
= test_create_end_func(self
, self
._component
._stream
)
224 msg
= self
._create
_stream
_end
_message
(self
._component
._stream
)
231 class MySrc(bt2
._UserSourceComponent
, message_iterator_class
=MyIter
):
232 def __init__(self
, params
):
233 self
._add
_output
_port
('out')
234 tc
= self
._create
_trace
_class
()
237 cc
= self
._create
_clock
_class
()
238 sc
= tc
.create_stream_class(default_clock_class
=cc
)
240 sc
= tc
.create_stream_class()
242 # Create payload field class
244 self
._stream
= trace
.create_stream(sc
)
247 src_comp
= graph
.add_component(MySrc
, 'src')
248 msg_iter
= graph
.create_output_port_message_iterator(src_comp
.output_ports
['out'])
253 def test_create_beginning_with_cc_with_known_default_cs(self
):
254 def create_beginning(msg_iter
, stream
):
255 msg
= msg_iter
._create
_stream
_activity
_beginning
_message
(stream
, 172)
256 self
.assertEqual(msg
.default_clock_snapshot
.value
, 172)
259 def create_end(msg_iter
, stream
):
260 return msg_iter
._create
_stream
_activity
_end
_message
(stream
, 199)
262 self
._test
_create
_msg
(True, create_beginning
, create_end
)
264 def test_create_end_with_cc_with_known_default_cs(self
):
265 def create_beginning(msg_iter
, stream
):
266 return msg_iter
._create
_stream
_activity
_beginning
_message
(stream
, 172)
268 def create_end(msg_iter
, stream
):
269 msg
= msg_iter
._create
_stream
_activity
_end
_message
(stream
, 199)
270 self
.assertEqual(msg
.default_clock_snapshot
.value
, 199)
273 self
._test
_create
_msg
(True, create_beginning
, create_end
)
275 def test_create_beginning_with_cc_with_unknown_default_cs(self
):
276 def create_beginning(msg_iter
, stream
):
277 msg
= msg_iter
._create
_stream
_activity
_beginning
_message
(stream
,
278 msg_iter
._unknown
_clock
_snapshot
)
279 self
.assertIsInstance(msg
.default_clock_snapshot
,
280 bt2
._UnknownClockSnapshot
)
283 def create_end(msg_iter
, stream
):
284 return msg_iter
._create
_stream
_activity
_end
_message
(stream
, 199)
286 self
._test
_create
_msg
(True, create_beginning
, create_end
)
288 def test_create_end_with_cc_with_unknown_default_cs(self
):
289 def create_beginning(msg_iter
, stream
):
290 return msg_iter
._create
_stream
_activity
_beginning
_message
(stream
, 172)
292 def create_end(msg_iter
, stream
):
293 msg
= msg_iter
._create
_stream
_activity
_end
_message
(stream
,
294 msg_iter
._unknown
_clock
_snapshot
)
295 self
.assertIsInstance(msg
.default_clock_snapshot
,
296 bt2
._UnknownClockSnapshot
)
299 self
._test
_create
_msg
(True, create_beginning
, create_end
)
301 def test_create_beginning_with_cc_with_infinite_default_cs(self
):
302 def create_beginning(msg_iter
, stream
):
303 msg
= msg_iter
._create
_stream
_activity
_beginning
_message
(stream
,
304 msg_iter
._infinite
_clock
_snapshot
)
305 self
.assertIsInstance(msg
.default_clock_snapshot
,
306 bt2
._InfiniteClockSnapshot
)
309 def create_end(msg_iter
, stream
):
310 return msg_iter
._create
_stream
_activity
_end
_message
(stream
, 199)
312 self
._test
_create
_msg
(True, create_beginning
, create_end
)
314 def test_create_end_with_cc_with_infinite_default_cs(self
):
315 def create_beginning(msg_iter
, stream
):
316 return msg_iter
._create
_stream
_activity
_beginning
_message
(stream
, 172)
318 def create_end(msg_iter
, stream
):
319 msg
= msg_iter
._create
_stream
_activity
_end
_message
(stream
,
320 msg_iter
._infinite
_clock
_snapshot
)
321 self
.assertIsInstance(msg
.default_clock_snapshot
,
322 bt2
._InfiniteClockSnapshot
)
325 self
._test
_create
_msg
(True, create_beginning
, create_end
)
327 def test_create_beginning_without_cc_with_known_default_cs(self
):
328 def create_beginning(msg_iter
, stream
):
329 with self
.assertRaises(ValueError):
330 msg_iter
._create
_stream
_activity
_beginning
_message
(stream
, 172)
332 return msg_iter
._create
_stream
_activity
_beginning
_message
(stream
)
334 def create_end(msg_iter
, stream
):
335 return msg_iter
._create
_stream
_activity
_end
_message
(stream
)
337 self
._test
_create
_msg
(False, create_beginning
, create_end
)
339 def test_create_end_without_cc_with_known_default_cs(self
):
340 def create_beginning(msg_iter
, stream
):
341 return msg_iter
._create
_stream
_activity
_beginning
_message
(stream
)
343 def create_end(msg_iter
, stream
):
344 with self
.assertRaises(ValueError):
345 msg_iter
._create
_stream
_activity
_end
_message
(stream
, 199)
347 return msg_iter
._create
_stream
_activity
_end
_message
(stream
)
349 self
._test
_create
_msg
(False, create_beginning
, create_end
)
351 def test_create_beginning_without_cc_with_unknown_default_cs(self
):
352 def create_beginning(msg_iter
, stream
):
353 msg
= msg_iter
._create
_stream
_activity
_beginning
_message
(stream
,
354 msg_iter
._unknown
_clock
_snapshot
)
355 self
.assertIsInstance(msg
.default_clock_snapshot
,
356 bt2
._UnknownClockSnapshot
)
359 def create_end(msg_iter
, stream
):
360 return msg_iter
._create
_stream
_activity
_end
_message
(stream
)
362 self
._test
_create
_msg
(False, create_beginning
, create_end
)
364 def test_create_end_without_cc_with_unknown_default_cs(self
):
365 def create_beginning(msg_iter
, stream
):
366 return msg_iter
._create
_stream
_activity
_beginning
_message
(stream
)
368 def create_end(msg_iter
, stream
):
369 msg
= msg_iter
._create
_stream
_activity
_end
_message
(stream
,
370 msg_iter
._unknown
_clock
_snapshot
)
371 self
.assertIsInstance(msg
.default_clock_snapshot
,
372 bt2
._UnknownClockSnapshot
)
375 self
._test
_create
_msg
(False, create_beginning
, create_end
)
377 def test_create_beginning_without_cc_with_infinite_default_cs(self
):
378 def create_beginning(msg_iter
, stream
):
379 msg
= msg_iter
._create
_stream
_activity
_beginning
_message
(stream
,
380 msg_iter
._infinite
_clock
_snapshot
)
381 self
.assertIsInstance(msg
.default_clock_snapshot
,
382 bt2
._InfiniteClockSnapshot
)
385 def create_end(msg_iter
, stream
):
386 return msg_iter
._create
_stream
_activity
_end
_message
(stream
)
388 self
._test
_create
_msg
(False, create_beginning
, create_end
)
390 def test_create_end_without_cc_with_infinite_default_cs(self
):
391 def create_beginning(msg_iter
, stream
):
392 return msg_iter
._create
_stream
_activity
_beginning
_message
(stream
)
394 def create_end(msg_iter
, stream
):
395 msg
= msg_iter
._create
_stream
_activity
_end
_message
(stream
,
396 msg_iter
._infinite
_clock
_snapshot
)
397 self
.assertIsInstance(msg
.default_clock_snapshot
,
398 bt2
._InfiniteClockSnapshot
)
401 self
._test
_create
_msg
(False, create_beginning
, create_end
)
403 def test_create_beginning_default_cs_wrong_type(self
):
404 def create_beginning(msg_iter
, stream
):
405 with self
.assertRaises(TypeError):
406 msg_iter
._create
_stream
_activity
_beginning
_message
(stream
, 'infinite')
408 return msg_iter
._create
_stream
_activity
_beginning
_message
(stream
)
410 def create_end(msg_iter
, stream
):
411 return msg_iter
._create
_stream
_activity
_end
_message
(stream
)
413 self
._test
_create
_msg
(False, create_beginning
, create_end
)
415 def test_create_end_without_default_cs_wrong_type(self
):
416 def create_beginning(msg_iter
, stream
):
417 return msg_iter
._create
_stream
_activity
_beginning
_message
(stream
)
419 def create_end(msg_iter
, stream
):
420 with self
.assertRaises(TypeError):
421 msg_iter
._create
_stream
_activity
_end
_message
(stream
, 'unknown')
423 return msg_iter
._create
_stream
_activity
_end
_message
(stream
)
425 self
._test
_create
_msg
(False, create_beginning
, create_end
)