8 class UserMessageIteratorTestCase(unittest
.TestCase
):
10 def _create_graph(src_comp_cls
):
11 class MySink(bt2
._UserSinkComponent
):
12 def __init__(self
, params
):
13 self
._add
_input
_port
('in')
18 def _graph_is_configured(self
):
19 self
._msg
_iter
= self
._input
_ports
['in'].create_message_iterator()
22 src_comp
= graph
.add_component(src_comp_cls
, 'src')
23 sink_comp
= graph
.add_component(MySink
, 'sink')
24 graph
.connect_ports(src_comp
.output_ports
['out'],
25 sink_comp
.input_ports
['in'])
29 the_output_port_from_source
= None
30 the_output_port_from_iter
= None
32 class MyIter(bt2
._UserMessageIterator
):
33 def __init__(self
, self_port_output
):
35 nonlocal the_output_port_from_iter
37 the_output_port_from_iter
= self_port_output
39 class MySource(bt2
._UserSourceComponent
,
40 message_iterator_class
=MyIter
):
41 def __init__(self
, params
):
42 nonlocal the_output_port_from_source
43 the_output_port_from_source
= self
._add
_output
_port
('out', 'user data')
46 graph
= self
._create
_graph
(MySource
)
48 self
.assertTrue(initialized
)
49 self
.assertEqual(the_output_port_from_source
.addr
, the_output_port_from_iter
.addr
)
50 self
.assertEqual(the_output_port_from_iter
.user_data
, 'user data')
52 def test_finalize(self
):
53 class MyIter(bt2
._UserMessageIterator
):
58 class MySource(bt2
._UserSourceComponent
,
59 message_iterator_class
=MyIter
):
60 def __init__(self
, params
):
61 self
._add
_output
_port
('out')
64 graph
= self
._create
_graph
(MySource
)
67 self
.assertTrue(finalized
)
69 def test_component(self
):
70 class MyIter(bt2
._UserMessageIterator
):
71 def __init__(self
, self_port_output
):
73 salut
= self
._component
._salut
75 class MySource(bt2
._UserSourceComponent
,
76 message_iterator_class
=MyIter
):
77 def __init__(self
, params
):
78 self
._add
_output
_port
('out')
82 graph
= self
._create
_graph
(MySource
)
84 self
.assertEqual(salut
, 23)
87 class MyIter(bt2
._UserMessageIterator
):
88 def __init__(self
, self_port_output
):
92 class MySource(bt2
._UserSourceComponent
,
93 message_iterator_class
=MyIter
):
94 def __init__(self
, params
):
95 self
._add
_output
_port
('out')
98 graph
= self
._create
_graph
(MySource
)
100 self
.assertIsNotNone(addr
)
101 self
.assertNotEqual(addr
, 0)
104 class OutputPortMessageIteratorTestCase(unittest
.TestCase
):
105 def test_component(self
):
106 class MyIter(bt2
._UserMessageIterator
):
107 def __init__(self
, self_port_output
):
115 msg
= self
._create
_stream
_beginning
_message
(test_obj
._stream
)
117 msg
= self
._create
_packet
_beginning
_message
(test_obj
._packet
)
119 msg
= self
._create
_packet
_end
_message
(test_obj
._packet
)
121 msg
= self
._create
_stream
_end
_message
(test_obj
._stream
)
123 msg
= self
._create
_event
_message
(test_obj
._event
_class
, test_obj
._packet
)
124 msg
.event
.payload_field
['my_int'] = self
._at
* 3
129 class MySource(bt2
._UserSourceComponent
,
130 message_iterator_class
=MyIter
):
131 def __init__(self
, params
):
132 self
._add
_output
_port
('out')
134 trace_class
= self
._create
_trace
_class
()
135 stream_class
= trace_class
.create_stream_class()
137 # Create payload field class
138 my_int_ft
= trace_class
.create_signed_integer_field_class(32)
139 payload_ft
= trace_class
.create_structure_field_class()
140 payload_ft
+= collections
.OrderedDict([
141 ('my_int', my_int_ft
),
144 event_class
= stream_class
.create_event_class(name
='salut', payload_field_class
=payload_ft
)
146 trace
= trace_class()
147 stream
= trace
.create_stream(stream_class
)
148 packet
= stream
.create_packet()
150 test_obj
._event
_class
= event_class
151 test_obj
._stream
= stream
152 test_obj
._packet
= packet
156 src
= graph
.add_component(MySource
, 'src')
157 msg_iter
= graph
.create_output_port_message_iterator(src
.output_ports
['out'])
159 for at
, msg
in enumerate(msg_iter
):
161 self
.assertIsInstance(msg
, bt2
.message
._StreamBeginningMessage
)
163 self
.assertIsInstance(msg
, bt2
.message
._PacketBeginningMessage
)
165 self
.assertIsInstance(msg
, bt2
.message
._PacketEndMessage
)
167 self
.assertIsInstance(msg
, bt2
.message
._StreamEndMessage
)
169 self
.assertIsInstance(msg
, bt2
.message
._EventMessage
)
170 self
.assertEqual(msg
.event
.event_class
.name
, 'salut')
171 field
= msg
.event
.payload_field
['my_int']
172 self
.assertEqual(field
, at
* 3)