Commit | Line | Data |
---|---|---|
811644b8 PP |
1 | import collections |
2 | import unittest | |
811644b8 PP |
3 | import bt2 |
4 | ||
5 | ||
9ec609ec | 6 | class AllMessagesTestCase(unittest.TestCase): |
811644b8 | 7 | def setUp(self): |
811644b8 | 8 | |
5602ef81 | 9 | class MyIter(bt2._UserMessageIterator): |
c5f330cd | 10 | def __init__(self, self_port_output): |
9ec609ec | 11 | self._at = 0 |
811644b8 PP |
12 | |
13 | def __next__(self): | |
9ec609ec SM |
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 | |
811644b8 | 37 | else: |
9ec609ec SM |
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 | |
811644b8 PP |
58 | |
59 | self._at += 1 | |
5602ef81 | 60 | return msg |
811644b8 | 61 | |
9ec609ec | 62 | class MySrc(bt2._UserSourceComponent, message_iterator_class=MyIter): |
811644b8 PP |
63 | def __init__(self, params): |
64 | self._add_output_port('out') | |
65 | ||
9ec609ec SM |
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 | |
811644b8 | 71 | else: |
9ec609ec SM |
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 | |
811644b8 | 206 |