bt2: Adapt test_message.py and make it pass
[babeltrace.git] / tests / bindings / python / bt2 / test_message.py
1 import collections
2 import unittest
3 import bt2
4
5
6 class AllMessagesTestCase(unittest.TestCase):
7 def setUp(self):
8
9 class MyIter(bt2._UserMessageIterator):
10 def __init__(self):
11 self._at = 0
12
13 def __next__(self):
14 if test_obj._clock_class:
15 if self._at == 0:
16 msg = self._create_stream_beginning_message(test_obj._stream)
17 elif self._at == 1:
18 msg = self._create_stream_activity_beginning_message(test_obj._stream, default_clock_snapshot=self._at)
19 elif self._at == 2:
20 msg = self._create_packet_beginning_message(test_obj._packet, self._at)
21 elif self._at == 3:
22 msg = self._create_event_message(test_obj._event_class, test_obj._packet, self._at)
23 elif self._at == 4:
24 msg = self._create_message_iterator_inactivity_message(test_obj._clock_class, self._at)
25 elif self._at == 5:
26 msg = self._create_discarded_events_message(test_obj._stream, 890, self._at, self._at)
27 elif self._at == 6:
28 msg = self._create_packet_end_message(test_obj._packet, self._at)
29 elif self._at == 7:
30 msg = self._create_discarded_packets_message(test_obj._stream, 678, self._at, self._at)
31 elif self._at == 8:
32 msg = self._create_stream_activity_end_message(test_obj._stream, default_clock_snapshot=self._at)
33 elif self._at == 9:
34 msg = self._create_stream_end_message(test_obj._stream)
35 elif self._at >= 10:
36 raise bt2.Stop
37 else:
38 if self._at == 0:
39 msg = self._create_stream_beginning_message(test_obj._stream)
40 elif self._at == 1:
41 msg = self._create_stream_activity_beginning_message(test_obj._stream)
42 elif self._at == 2:
43 msg = self._create_packet_beginning_message(test_obj._packet)
44 elif self._at == 3:
45 msg = self._create_event_message(test_obj._event_class, test_obj._packet)
46 elif self._at == 4:
47 msg = self._create_discarded_events_message(test_obj._stream, 890)
48 elif self._at == 5:
49 msg = self._create_packet_end_message(test_obj._packet)
50 elif self._at == 6:
51 msg = self._create_discarded_packets_message(test_obj._stream, 678)
52 elif self._at == 7:
53 msg = self._create_stream_activity_end_message(test_obj._stream)
54 elif self._at == 8:
55 msg = self._create_stream_end_message(test_obj._stream)
56 elif self._at >= 9:
57 raise bt2.Stop
58
59 self._at += 1
60 return msg
61
62 class MySrc(bt2._UserSourceComponent, message_iterator_class=MyIter):
63 def __init__(self, params):
64 self._add_output_port('out')
65
66 with_cc = params['with_cc']
67 tc = self._create_trace_class()
68 if with_cc:
69 cc = self._create_clock_class()
70 packets_have_clock_snapshots = True
71 else:
72 cc = None
73 packets_have_clock_snapshots = False
74
75 sc = tc.create_stream_class(default_clock_class=cc,
76 packets_have_default_beginning_clock_snapshot=packets_have_clock_snapshots,
77 packets_have_default_end_clock_snapshot=packets_have_clock_snapshots)
78
79 # Create payload field class
80 my_int_fc = tc.create_signed_integer_field_class(32)
81 payload_fc = tc.create_structure_field_class()
82 payload_fc += collections.OrderedDict([
83 ('my_int', my_int_fc),
84 ])
85
86 ec = sc.create_event_class(name='salut', payload_field_class=payload_fc)
87
88 trace = tc()
89 stream = trace.create_stream(sc)
90 packet = stream.create_packet()
91
92 test_obj._trace = trace
93 test_obj._stream = stream
94 test_obj._packet = packet
95 test_obj._event_class = ec
96 test_obj._clock_class = cc
97
98 test_obj = self
99 self._graph = bt2.Graph()
100 self._src = MySrc
101 self._iter = MyIter
102
103 def test_all_msg_with_cc(self):
104 params = {'with_cc': True}
105 self._src_comp = self._graph.add_component(self._src, 'my_source', params)
106 self._msg_iter = self._graph.create_output_port_message_iterator(self._src_comp.output_ports['out'])
107
108 for i, msg in enumerate(self._msg_iter):
109 if i == 0:
110 self.assertIsInstance(msg, bt2.message._StreamBeginningMessage)
111 self.assertEqual(msg.stream.addr, self._stream.addr)
112 elif i == 1:
113 self.assertIsInstance(msg, bt2.message._StreamActivityBeginningMessage)
114 self.assertEqual(msg.default_clock_snapshot.value, i)
115 elif i == 2:
116 self.assertIsInstance(msg, bt2.message._PacketBeginningMessage)
117 self.assertEqual(msg.packet.addr, self._packet.addr)
118 self.assertEqual(msg.default_clock_snapshot.value, i)
119 elif i == 3:
120 self.assertIsInstance(msg, bt2.message._EventMessage)
121 self.assertEqual(msg.event.event_class.addr, self._event_class.addr)
122 self.assertEqual(msg.default_clock_snapshot.value, i)
123 elif i == 4:
124 self.assertIsInstance(msg, bt2.message._MessageIteratorInactivityMessage)
125 self.assertEqual(msg.default_clock_snapshot.value, i)
126 elif i == 5:
127 self.assertIsInstance(msg, bt2.message._DiscardedEventsMessage)
128 self.assertEqual(msg.stream.addr, self._stream.addr)
129 self.assertEqual(msg.count, 890)
130 self.assertEqual(msg.default_clock_class.addr, self._clock_class.addr)
131 self.assertEqual(msg.beginning_default_clock_snapshot.value, i)
132 self.assertEqual(msg.end_default_clock_snapshot.value, i)
133 elif i == 6:
134 self.assertIsInstance(msg, bt2.message._PacketEndMessage)
135 self.assertEqual(msg.packet.addr, self._packet.addr)
136 self.assertEqual(msg.default_clock_snapshot.value, i)
137 elif i == 7:
138 self.assertIsInstance(msg, bt2.message._DiscardedPacketsMessage)
139 self.assertEqual(msg.stream.addr, self._stream.addr)
140 self.assertEqual(msg.count, 678)
141 self.assertEqual(msg.default_clock_class.addr, self._clock_class.addr)
142 self.assertEqual(msg.beginning_default_clock_snapshot.value, i)
143 self.assertEqual(msg.end_default_clock_snapshot.value, i)
144 elif i == 8:
145 self.assertIsInstance(msg, bt2.message._StreamActivityEndMessage)
146 self.assertEqual(msg.stream.addr, self._stream.addr)
147 self.assertEqual(msg.default_clock_snapshot.value, i)
148 elif i == 9:
149 self.assertIsInstance(msg, bt2.message._StreamEndMessage)
150 self.assertEqual(msg.stream.addr, self._stream.addr)
151 else:
152 raise Exception
153
154 def test_all_msg_without_cc(self):
155 params = {'with_cc': False}
156 self._src_comp = self._graph.add_component(self._src, 'my_source', params)
157 self._msg_iter = self._graph.create_output_port_message_iterator(self._src_comp.output_ports['out'])
158
159 for i, msg in enumerate(self._msg_iter):
160 if i == 0:
161 self.assertIsInstance(msg, bt2.message._StreamBeginningMessage)
162 self.assertEqual(msg.stream.addr, self._stream.addr)
163 elif i == 1:
164 self.assertIsInstance(msg, bt2.message._StreamActivityBeginningMessage)
165 with self.assertRaises(bt2.NoDefaultClockClass):
166 msg.default_clock_snapshot
167 elif i == 2:
168 self.assertIsInstance(msg, bt2.message._PacketBeginningMessage)
169 self.assertEqual(msg.packet.addr, self._packet.addr)
170 elif i == 3:
171 self.assertIsInstance(msg, bt2.message._EventMessage)
172 self.assertEqual(msg.event.event_class.addr, self._event_class.addr)
173 with self.assertRaises(bt2.NoDefaultClockClass):
174 msg.default_clock_snapshot
175 elif i == 4:
176 self.assertIsInstance(msg, bt2.message._DiscardedEventsMessage)
177 self.assertEqual(msg.stream.addr, self._stream.addr)
178 self.assertEqual(msg.count, 890)
179 self.assertIsNone(msg.default_clock_class)
180 with self.assertRaises(bt2.NoDefaultClockClass):
181 msg.beginning_default_clock_snapshot
182 with self.assertRaises(bt2.NoDefaultClockClass):
183 msg.end_default_clock_snapshot
184 elif i == 5:
185 self.assertIsInstance(msg, bt2.message._PacketEndMessage)
186 self.assertEqual(msg.packet.addr, self._packet.addr)
187 elif i == 6:
188 self.assertIsInstance(msg, bt2.message._DiscardedPacketsMessage)
189 self.assertEqual(msg.stream.addr, self._stream.addr)
190 self.assertEqual(msg.count, 678)
191 self.assertIsNone(msg.default_clock_class)
192 with self.assertRaises(bt2.NoDefaultClockClass):
193 msg.beginning_default_clock_snapshot
194 with self.assertRaises(bt2.NoDefaultClockClass):
195 msg.end_default_clock_snapshot
196 elif i == 7:
197 self.assertIsInstance(msg, bt2.message._StreamActivityEndMessage)
198 self.assertEqual(msg.stream.addr, self._stream.addr)
199 with self.assertRaises(bt2.NoDefaultClockClass):
200 msg.default_clock_snapshot
201 elif i == 8:
202 self.assertIsInstance(msg, bt2.message._StreamEndMessage)
203 self.assertEqual(msg.stream.addr, self._stream.addr)
204 else:
205 raise Exception
206
This page took 0.037449 seconds and 5 git commands to generate.