4 class TheIteratorOfConfusion(bt2
._UserMessageIterator
):
5 def __init__(self
, port
):
7 test_name
= port
.user_data
[0]
8 TEST_CASES
[test_name
].create_msgs(self
, port
.user_data
[1:])
11 if self
._at
< len(self
._msgs
):
12 msg
= self
._msgs
[self
._at
]
18 @bt2.plugin_component_class
19 class TheSourceOfConfusion(
20 bt2
._UserSourceComponent
, message_iterator_class
=TheIteratorOfConfusion
22 def __init__(self
, params
, obj
):
23 tc
= self
._create
_trace
_class
()
25 test_name
= str(params
['test-name'])
27 TEST_CASES
[test_name
].source_setup(self
, test_name
)
31 def source_setup(src
, test_name
):
32 tc1
= src
._create
_trace
_class
()
33 cc1
= src
._create
_clock
_class
(frequency
=1, offset
=bt2
.ClockClassOffset(0))
34 tc2
= src
._create
_trace
_class
()
35 cc2
= src
._create
_clock
_class
(frequency
=1, offset
=bt2
.ClockClassOffset(0))
38 trace_name2
= 'noranda'
40 src
._add
_output
_port
('out1', (test_name
, 1, tc1
, cc1
, trace_name1
))
41 src
._add
_output
_port
('out2', (test_name
, 2, tc2
, cc2
, trace_name2
))
43 def create_msgs(msg_iter
, params
):
44 iter_id
, tc
, cc
, trace_name
= params
45 trace
= tc(name
=trace_name
)
46 sc
= tc
.create_stream_class(
47 default_clock_class
=cc
, assigns_automatic_stream_id
=False
49 stream
= trace
.create_stream(sc
, 0)
51 sb_msg
= msg_iter
._create
_stream
_beginning
_message
(stream
, 0)
52 se_msg
= msg_iter
._create
_stream
_end
_message
(stream
, iter_id
* 193)
54 msg_iter
._msgs
= [sb_msg
, se_msg
]
58 def source_setup(src
, test_name
):
59 tc1
= src
._create
_trace
_class
()
60 cc1
= src
._create
_clock
_class
(frequency
=1, offset
=bt2
.ClockClassOffset(0))
61 tc2
= src
._create
_trace
_class
()
62 cc2
= src
._create
_clock
_class
(frequency
=1, offset
=bt2
.ClockClassOffset(0))
64 stream_name1
= 'port-daniel'
65 stream_name2
= 'gascon'
67 src
._add
_output
_port
('out1', (test_name
, 1, tc1
, cc1
, stream_name1
))
68 src
._add
_output
_port
('out2', (test_name
, 2, tc2
, cc2
, stream_name2
))
70 def create_msgs(msg_iter
, params
):
71 iter_id
, tc
, cc
, stream_name
= params
73 sc
= tc
.create_stream_class(
74 default_clock_class
=cc
, assigns_automatic_stream_id
=False
76 stream
= trace
.create_stream(sc
, 0, stream_name
)
78 sb_msg
= msg_iter
._create
_stream
_beginning
_message
(stream
, 0)
79 se_msg
= msg_iter
._create
_stream
_end
_message
(stream
, iter_id
* 193)
81 msg_iter
._msgs
= [sb_msg
, se_msg
]
85 def source_setup(src
, test_name
):
86 tc1
= src
._create
_trace
_class
()
87 cc1
= src
._create
_clock
_class
(frequency
=1, offset
=bt2
.ClockClassOffset(0))
88 tc2
= src
._create
_trace
_class
()
89 cc2
= src
._create
_clock
_class
(frequency
=1, offset
=bt2
.ClockClassOffset(0))
94 src
._add
_output
_port
('out1', (test_name
, 1, tc1
, cc1
, stream_id1
))
95 src
._add
_output
_port
('out2', (test_name
, 2, tc2
, cc2
, stream_id2
))
97 def create_msgs(msg_iter
, params
):
98 iter_id
, tc
, cc
, stream_id
= params
100 sc
= tc
.create_stream_class(
101 default_clock_class
=cc
, assigns_automatic_stream_id
=False
103 stream
= trace
.create_stream(sc
, stream_id
)
105 sb_msg
= msg_iter
._create
_stream
_beginning
_message
(stream
, 0)
106 se_msg
= msg_iter
._create
_stream
_end
_message
(stream
, iter_id
* 193)
108 msg_iter
._msgs
= [sb_msg
, se_msg
]
111 class DiffStreamNoName
:
112 def source_setup(src
, test_name
):
113 tc1
= src
._create
_trace
_class
()
114 cc1
= src
._create
_clock
_class
(frequency
=1, offset
=bt2
.ClockClassOffset(0))
115 tc2
= src
._create
_trace
_class
()
116 cc2
= src
._create
_clock
_class
(frequency
=1, offset
=bt2
.ClockClassOffset(0))
121 src
._add
_output
_port
('out1', (test_name
, 1, tc1
, cc1
, stream_name1
))
122 src
._add
_output
_port
('out2', (test_name
, 2, tc2
, cc2
, stream_name2
))
124 def create_msgs(msg_iter
, params
):
125 iter_id
, tc
, cc
, stream_no_name
= params
127 sc
= tc
.create_stream_class(
128 default_clock_class
=cc
, assigns_automatic_stream_id
=False
130 stream
= trace
.create_stream(sc
, 0, name
=stream_no_name
)
132 sb_msg
= msg_iter
._create
_stream
_beginning
_message
(stream
, 0)
133 se_msg
= msg_iter
._create
_stream
_end
_message
(stream
, iter_id
* 193)
135 msg_iter
._msgs
= [sb_msg
, se_msg
]
138 class DiffStreamClassId
:
139 def source_setup(src
, test_name
):
140 tc1
= src
._create
_trace
_class
(assigns_automatic_stream_class_id
=False)
141 cc1
= src
._create
_clock
_class
(frequency
=1, offset
=bt2
.ClockClassOffset(0))
142 tc2
= src
._create
_trace
_class
(assigns_automatic_stream_class_id
=False)
143 cc2
= src
._create
_clock
_class
(frequency
=1, offset
=bt2
.ClockClassOffset(0))
145 stream_class_id1
= 18
146 stream_class_id2
= 23
148 src
._add
_output
_port
('out1', (test_name
, 1, tc1
, cc1
, stream_class_id1
))
149 src
._add
_output
_port
('out2', (test_name
, 2, tc2
, cc2
, stream_class_id2
))
151 def create_msgs(msg_iter
, params
):
152 iter_id
, tc
, cc
, stream_class_id
= params
154 sc
= tc
.create_stream_class(
155 default_clock_class
=cc
,
157 assigns_automatic_stream_id
=False,
159 stream
= trace
.create_stream(sc
, 0)
161 sb_msg
= msg_iter
._create
_stream
_beginning
_message
(stream
, 0)
162 se_msg
= msg_iter
._create
_stream
_end
_message
(stream
, iter_id
* 193)
164 msg_iter
._msgs
= [sb_msg
, se_msg
]
167 class DiffStreamClassName
:
168 def source_setup(src
, test_name
):
169 tc1
= src
._create
_trace
_class
(assigns_automatic_stream_class_id
=False)
170 cc1
= src
._create
_clock
_class
(frequency
=1, offset
=bt2
.ClockClassOffset(0))
171 tc2
= src
._create
_trace
_class
(assigns_automatic_stream_class_id
=False)
172 cc2
= src
._create
_clock
_class
(frequency
=1, offset
=bt2
.ClockClassOffset(0))
174 stream_class_name1
= 'one'
175 stream_class_name2
= 'two'
177 src
._add
_output
_port
('out1', (test_name
, 1, tc1
, cc1
, stream_class_name1
))
178 src
._add
_output
_port
('out2', (test_name
, 2, tc2
, cc2
, stream_class_name2
))
180 def create_msgs(msg_iter
, params
):
181 iter_id
, tc
, cc
, stream_class_name
= params
183 sc
= tc
.create_stream_class(
184 default_clock_class
=cc
,
186 name
=stream_class_name
,
187 assigns_automatic_stream_id
=False,
189 stream
= trace
.create_stream(sc
, 0)
191 sb_msg
= msg_iter
._create
_stream
_beginning
_message
(stream
, 0)
192 se_msg
= msg_iter
._create
_stream
_end
_message
(stream
, iter_id
* 193)
194 msg_iter
._msgs
= [sb_msg
, se_msg
]
197 class DiffStreamClassNoName
:
198 def source_setup(src
, test_name
):
199 tc1
= src
._create
_trace
_class
(assigns_automatic_stream_class_id
=False)
200 cc1
= src
._create
_clock
_class
(frequency
=1, offset
=bt2
.ClockClassOffset(0))
201 tc2
= src
._create
_trace
_class
(assigns_automatic_stream_class_id
=False)
202 cc2
= src
._create
_clock
_class
(frequency
=1, offset
=bt2
.ClockClassOffset(0))
204 stream_class_name1
= 'one'
205 stream_class_name2
= None
207 src
._add
_output
_port
('out1', (test_name
, 1, tc1
, cc1
, stream_class_name1
))
208 src
._add
_output
_port
('out2', (test_name
, 2, tc2
, cc2
, stream_class_name2
))
210 def create_msgs(msg_iter
, params
):
211 iter_id
, tc
, cc
, stream_class_name
= params
213 sc
= tc
.create_stream_class(
214 default_clock_class
=cc
,
216 name
=stream_class_name
,
217 assigns_automatic_stream_id
=False,
219 stream
= trace
.create_stream(sc
, 0)
221 sb_msg
= msg_iter
._create
_stream
_beginning
_message
(stream
, 0)
222 se_msg
= msg_iter
._create
_stream
_end
_message
(stream
, iter_id
* 193)
224 msg_iter
._msgs
= [sb_msg
, se_msg
]
227 class BasicTimestampOrdering
:
228 def source_setup(src
, test_name
):
229 tc
= src
._create
_trace
_class
()
230 cc
= src
._create
_clock
_class
(frequency
=1, offset
=bt2
.ClockClassOffset(0))
236 src
._add
_output
_port
('out1', (test_name
, 1, tc
, cc
, timestamp1
))
237 src
._add
_output
_port
('out2', (test_name
, 2, tc
, cc
, timestamp2
))
238 src
._add
_output
_port
('out3', (test_name
, 3, tc
, cc
, timestamp3
))
240 def create_msgs(msg_iter
, params
):
241 iter_id
, tc
, cc
, timestamp
= params
243 sc
= tc
.create_stream_class(default_clock_class
=cc
)
244 stream
= trace
.create_stream(sc
)
246 sb_msg
= msg_iter
._create
_stream
_beginning
_message
(stream
, timestamp
)
247 se_msg
= msg_iter
._create
_stream
_end
_message
(stream
, iter_id
* 193)
249 msg_iter
._msgs
= [sb_msg
, se_msg
]
252 class MultiIterOrdering
:
253 def source_setup(src
, test_name
):
254 tc1
= src
._create
_trace
_class
(assigns_automatic_stream_class_id
=False)
255 tc2
= src
._create
_trace
_class
(assigns_automatic_stream_class_id
=False)
256 tc3
= src
._create
_trace
_class
(assigns_automatic_stream_class_id
=False)
257 tc4
= src
._create
_trace
_class
(assigns_automatic_stream_class_id
=False)
258 cc
= src
._create
_clock
_class
(frequency
=1, offset
=bt2
.ClockClassOffset(0))
260 src
._add
_output
_port
('out1', (test_name
, 1, tc1
, cc
))
261 src
._add
_output
_port
('out2', (test_name
, 2, tc2
, cc
))
262 src
._add
_output
_port
('out3', (test_name
, 3, tc3
, cc
))
263 src
._add
_output
_port
('out4', (test_name
, 4, tc4
, cc
))
265 def create_msgs(msg_iter
, params
):
266 iter_id
, tc
, cc
= params
267 trace_hello
= tc(name
='hello')
268 trace_meow
= tc(name
='meow')
270 # Craft list of messages for each iterator so that the last messages of
271 # each iterator are all sharing the same timestamp.
272 clock_snapshot_value
= 25
275 # Event, 2500 ns, trace "hello", stream class 0, stream 1
276 stream_class0
= tc
.create_stream_class(
277 id=0, default_clock_class
=cc
, assigns_automatic_stream_id
=False
279 sc_0_stream_1
= trace_hello
.create_stream(stream_class0
, id=1)
280 event_class
= stream_class0
.create_event_class(name
='saumon atlantique')
283 msg_iter
._create
_stream
_beginning
_message
(sc_0_stream_1
, 0),
284 msg_iter
._create
_event
_message
(
285 event_class
, sc_0_stream_1
, clock_snapshot_value
287 msg_iter
._create
_stream
_end
_message
(sc_0_stream_1
, iter_id
* 193),
290 # Packet beginning, 2500 ns, trace "meow", stream class 0, stream 1
291 stream_class0
= tc
.create_stream_class(
293 default_clock_class
=cc
,
294 supports_packets
=True,
295 packets_have_beginning_default_clock_snapshot
=True,
296 packets_have_end_default_clock_snapshot
=True,
297 assigns_automatic_stream_id
=False,
300 sc_0_stream_1
= trace_meow
.create_stream(stream_class0
, id=1)
301 packet
= sc_0_stream_1
.create_packet()
304 msg_iter
._create
_stream
_beginning
_message
(sc_0_stream_1
, 1),
305 msg_iter
._create
_packet
_beginning
_message
(packet
, clock_snapshot_value
),
306 msg_iter
._create
_packet
_end
_message
(packet
, iter_id
* 79),
307 msg_iter
._create
_stream
_end
_message
(sc_0_stream_1
, iter_id
* 193),
310 # Stream beginning, 2500 ns, trace "hello", stream class 0, stream 0
311 stream_class0
= tc
.create_stream_class(
312 id=0, default_clock_class
=cc
, assigns_automatic_stream_id
=False
315 sc_0_stream_0
= trace_hello
.create_stream(stream_class0
, id=0)
318 msg_iter
._create
_stream
_beginning
_message
(
319 sc_0_stream_0
, clock_snapshot_value
321 msg_iter
._create
_stream
_end
_message
(sc_0_stream_0
, iter_id
* 193),
324 # Event, 2500 ns, trace "meow", stream class 1, stream 1
325 stream_class1
= tc
.create_stream_class(
326 id=1, default_clock_class
=cc
, assigns_automatic_stream_id
=False
329 sc_1_stream_1
= trace_meow
.create_stream(stream_class1
, id=1)
331 event_class
= stream_class1
.create_event_class(name
='bar rayƩ')
333 msg_iter
._create
_stream
_beginning
_message
(sc_1_stream_1
, 3),
334 msg_iter
._create
_event
_message
(
335 event_class
, sc_1_stream_1
, clock_snapshot_value
337 msg_iter
._create
_stream
_end
_message
(sc_1_stream_1
, iter_id
* 193),
341 class DiffEventClassName
:
342 def source_setup(src
, test_name
):
343 tc1
= src
._create
_trace
_class
(assigns_automatic_stream_class_id
=False)
344 cc1
= src
._create
_clock
_class
(frequency
=1, offset
=bt2
.ClockClassOffset(0))
345 tc2
= src
._create
_trace
_class
(assigns_automatic_stream_class_id
=False)
346 cc2
= src
._create
_clock
_class
(frequency
=1, offset
=bt2
.ClockClassOffset(0))
348 event_class_name1
= 'Hull'
349 event_class_name2
= 'Gatineau'
351 src
._add
_output
_port
('out1', (test_name
, 1, tc1
, cc1
, event_class_name1
))
352 src
._add
_output
_port
('out2', (test_name
, 2, tc2
, cc2
, event_class_name2
))
354 def create_msgs(msg_iter
, params
):
355 iter_id
, tc
, cc
, event_class_name
= params
357 sc
= tc
.create_stream_class(
358 default_clock_class
=cc
,
360 assigns_automatic_stream_id
=False,
361 supports_packets
=False,
363 ec
= sc
.create_event_class(name
=event_class_name
)
365 stream
= trace
.create_stream(sc
, 0)
367 # Use event class name length as timestamp so that both stream
368 # beginning message are not at the same time. This test is targetting
370 sb_msg
= msg_iter
._create
_stream
_beginning
_message
(stream
, len(ec
.name
))
371 ev_msg
= msg_iter
._create
_event
_message
(ec
, stream
, 50)
372 se_msg
= msg_iter
._create
_stream
_end
_message
(stream
, iter_id
* 193)
374 msg_iter
._msgs
= [sb_msg
, ev_msg
, se_msg
]
377 class DiffEventClassId
:
378 def source_setup(src
, test_name
):
379 tc1
= src
._create
_trace
_class
(assigns_automatic_stream_class_id
=False)
380 cc1
= src
._create
_clock
_class
(frequency
=1, offset
=bt2
.ClockClassOffset(0))
381 tc2
= src
._create
_trace
_class
(assigns_automatic_stream_class_id
=False)
382 cc2
= src
._create
_clock
_class
(frequency
=1, offset
=bt2
.ClockClassOffset(0))
387 src
._add
_output
_port
('out1', (test_name
, 1, tc1
, cc1
, event_class_id1
))
388 src
._add
_output
_port
('out2', (test_name
, 2, tc2
, cc2
, event_class_id2
))
390 def create_msgs(msg_iter
, params
):
391 iter_id
, tc
, cc
, event_class_id
= params
393 sc
= tc
.create_stream_class(
394 default_clock_class
=cc
,
396 assigns_automatic_stream_id
=False,
397 assigns_automatic_event_class_id
=False,
398 supports_packets
=False,
400 ec
= sc
.create_event_class(id=event_class_id
)
402 stream
= trace
.create_stream(sc
, 0)
404 # Use event class id as timestamp so that both stream beginning message
405 # are not at the same time. This test is targetting event message.
406 sb_msg
= msg_iter
._create
_stream
_beginning
_message
(stream
, ec
.id)
407 ev_msg
= msg_iter
._create
_event
_message
(ec
, stream
, 50)
408 se_msg
= msg_iter
._create
_stream
_end
_message
(stream
, iter_id
* 193)
410 msg_iter
._msgs
= [sb_msg
, ev_msg
, se_msg
]
413 class DiffInactivityMsgCs
:
414 def source_setup(src
, test_name
):
415 cc1
= src
._create
_clock
_class
(
416 frequency
=1, name
='La Baie', offset
=bt2
.ClockClassOffset(0)
418 cc2
= src
._create
_clock
_class
(
419 frequency
=1, name
='Chicoutimi', offset
=bt2
.ClockClassOffset(0)
422 src
._add
_output
_port
('out1', (test_name
, cc1
))
423 src
._add
_output
_port
('out2', (test_name
, cc2
))
425 def create_msgs(msg_iter
, params
):
427 sb_msg
= msg_iter
._create
_message
_iterator
_inactivity
_message
(cc
, 0)
428 msg_iter
._msgs
= [sb_msg
]
432 'diff_trace_name': DiffTraceName
,
433 'diff_event_class_name': DiffEventClassName
,
434 'diff_event_class_id': DiffEventClassId
,
435 'diff_stream_name': DiffStreamName
,
436 'diff_stream_no_name': DiffStreamNoName
,
437 'diff_stream_id': DiffStreamId
,
438 'diff_stream_class_id': DiffStreamClassId
,
439 'diff_stream_class_name': DiffStreamClassName
,
440 'diff_stream_class_no_name': DiffStreamClassNoName
,
441 'diff_inactivity_msg_cs': DiffInactivityMsgCs
,
442 'basic_timestamp_ordering': BasicTimestampOrdering
,
443 'multi_iter_ordering': MultiIterOrdering
,
446 bt2
.register_plugin(__name__
, 'test-muxer')