Explicitly mention `black` in CodingStyle guidelines
[babeltrace.git] / tests / bindings / python / bt2 / test_trace_collection_message_iterator.py
CommitLineData
d2d857a8
MJ
1#
2# Copyright (C) 2019 EfficiOS Inc.
3#
4# This program is free software; you can redistribute it and/or
5# modify it under the terms of the GNU General Public License
6# as published by the Free Software Foundation; only version 2
7# of the License.
8#
9# This program is distributed in the hope that it will be useful,
10# but WITHOUT ANY WARRANTY; without even the implied warranty of
11# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12# GNU General Public License for more details.
13#
14# You should have received a copy of the GNU General Public License
15# along with this program; if not, write to the Free Software
16# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
17#
18
704c2307
PP
19import unittest
20import datetime
704c2307
PP
21import bt2
22import os
23import os.path
24
25
bbff0ab4
MJ
26_BT_CTF_TRACES_PATH = os.environ['BT_CTF_TRACES_PATH']
27_3EVENTS_INTERSECT_TRACE_PATH = os.path.join(_BT_CTF_TRACES_PATH,
704c2307
PP
28 'intersection',
29 '3eventsintersect')
30
31
3d60267b 32class ComponentSpecTestCase(unittest.TestCase):
704c2307 33 def test_create_good_no_params(self):
907f2b70 34 bt2.ComponentSpec('plugin', 'compcls')
704c2307
PP
35
36 def test_create_good_with_params(self):
907f2b70 37 bt2.ComponentSpec('plugin', 'compcls', {'salut': 23})
704c2307
PP
38
39 def test_create_good_with_path_params(self):
3d60267b 40 spec = bt2.ComponentSpec('plugin', 'compcls', 'a path')
907f2b70 41 self.assertEqual(spec.params['paths'], ['a path'])
704c2307
PP
42
43 def test_create_wrong_plugin_name_type(self):
44 with self.assertRaises(TypeError):
907f2b70 45 bt2.ComponentSpec(23, 'compcls')
704c2307
PP
46
47 def test_create_wrong_component_class_name_type(self):
48 with self.assertRaises(TypeError):
907f2b70 49 bt2.ComponentSpec('plugin', 190)
704c2307
PP
50
51 def test_create_wrong_params_type(self):
52 with self.assertRaises(TypeError):
907f2b70
SM
53 bt2.ComponentSpec('dwdw', 'compcls', datetime.datetime.now())
54
55
56# Return a map, msg type -> number of messages of this type.
57
58def _count_msgs_by_type(msgs):
59 res = {}
60
61 for msg in msgs:
62 t = type(msg)
63 n = res.get(t, 0)
64 res[t] = n + 1
65
66 return res
704c2307
PP
67
68
5602ef81 69class TraceCollectionMessageIteratorTestCase(unittest.TestCase):
704c2307 70 def test_create_wrong_stream_intersection_mode_type(self):
3d60267b 71 specs = [bt2.ComponentSpec('ctf', 'fs', _3EVENTS_INTERSECT_TRACE_PATH)]
704c2307
PP
72
73 with self.assertRaises(TypeError):
907f2b70 74 bt2.TraceCollectionMessageIterator(specs, stream_intersection_mode=23)
704c2307
PP
75
76 def test_create_wrong_begin_type(self):
3d60267b 77 specs = [bt2.ComponentSpec('ctf', 'fs', _3EVENTS_INTERSECT_TRACE_PATH)]
704c2307
PP
78
79 with self.assertRaises(TypeError):
907f2b70 80 bt2.TraceCollectionMessageIterator(specs, begin='hi')
704c2307
PP
81
82 def test_create_wrong_end_type(self):
3d60267b 83 specs = [bt2.ComponentSpec('ctf', 'fs', _3EVENTS_INTERSECT_TRACE_PATH)]
704c2307
PP
84
85 with self.assertRaises(TypeError):
907f2b70 86 bt2.TraceCollectionMessageIterator(specs, begin='lel')
704c2307
PP
87
88 def test_create_no_such_plugin(self):
3d60267b 89 specs = [bt2.ComponentSpec('77', '101', _3EVENTS_INTERSECT_TRACE_PATH)]
704c2307
PP
90
91 with self.assertRaises(bt2.Error):
907f2b70 92 bt2.TraceCollectionMessageIterator(specs)
704c2307
PP
93
94 def test_create_begin_s(self):
3d60267b 95 specs = [bt2.ComponentSpec('ctf', 'fs', _3EVENTS_INTERSECT_TRACE_PATH)]
907f2b70 96 bt2.TraceCollectionMessageIterator(specs, begin=19457.918232)
704c2307
PP
97
98 def test_create_end_s(self):
3d60267b 99 specs = [bt2.ComponentSpec('ctf', 'fs', _3EVENTS_INTERSECT_TRACE_PATH)]
907f2b70 100 bt2.TraceCollectionMessageIterator(specs, end=123.12312)
704c2307
PP
101
102 def test_create_begin_datetime(self):
3d60267b 103 specs = [bt2.ComponentSpec('ctf', 'fs', _3EVENTS_INTERSECT_TRACE_PATH)]
907f2b70 104 bt2.TraceCollectionMessageIterator(specs, begin=datetime.datetime.now())
704c2307
PP
105
106 def test_create_end_datetime(self):
3d60267b 107 specs = [bt2.ComponentSpec('ctf', 'fs', _3EVENTS_INTERSECT_TRACE_PATH)]
907f2b70 108 bt2.TraceCollectionMessageIterator(specs, end=datetime.datetime.now())
704c2307
PP
109
110 def test_iter_no_intersection(self):
3d60267b 111 specs = [bt2.ComponentSpec('ctf', 'fs', _3EVENTS_INTERSECT_TRACE_PATH)]
5602ef81 112 msg_iter = bt2.TraceCollectionMessageIterator(specs)
907f2b70 113 msgs = list(msg_iter)
188edac1 114 self.assertEqual(len(msgs), 28)
907f2b70
SM
115 hist = _count_msgs_by_type(msgs)
116 self.assertEqual(hist[bt2.message._EventMessage], 8)
704c2307 117
907f2b70 118 # Same as the above, but we pass a single spec instead of a spec list.
3d60267b
PP
119 def test_iter_specs_not_list(self):
120 spec = bt2.ComponentSpec('ctf', 'fs', _3EVENTS_INTERSECT_TRACE_PATH)
907f2b70
SM
121 msg_iter = bt2.TraceCollectionMessageIterator(spec)
122 msgs = list(msg_iter)
188edac1 123 self.assertEqual(len(msgs), 28)
907f2b70
SM
124 hist = _count_msgs_by_type(msgs)
125 self.assertEqual(hist[bt2.message._EventMessage], 8)
3d60267b
PP
126
127 def test_iter_custom_filter(self):
128 src_spec = bt2.ComponentSpec('ctf', 'fs', _3EVENTS_INTERSECT_TRACE_PATH)
129 flt_spec = bt2.ComponentSpec('utils', 'trimmer', {
907f2b70 130 'end': '13515309.000000075',
3d60267b 131 })
907f2b70
SM
132 msg_iter = bt2.TraceCollectionMessageIterator(src_spec, flt_spec)
133 hist = _count_msgs_by_type(msg_iter)
134 self.assertEqual(hist[bt2.message._EventMessage], 5)
3d60267b 135
704c2307 136 def test_iter_intersection(self):
3d60267b 137 specs = [bt2.ComponentSpec('ctf', 'fs', _3EVENTS_INTERSECT_TRACE_PATH)]
5602ef81 138 msg_iter = bt2.TraceCollectionMessageIterator(specs, stream_intersection_mode=True)
907f2b70 139 msgs = list(msg_iter)
188edac1 140 self.assertEqual(len(msgs), 15)
907f2b70
SM
141 hist = _count_msgs_by_type(msgs)
142 self.assertEqual(hist[bt2.message._EventMessage], 3)
704c2307
PP
143
144 def test_iter_intersection_no_path_param(self):
3d60267b 145 specs = [bt2.ComponentSpec('text', 'dmesg', {'read-from-stdin': True})]
704c2307
PP
146
147 with self.assertRaises(bt2.Error):
907f2b70 148 bt2.TraceCollectionMessageIterator(specs, stream_intersection_mode=True)
704c2307
PP
149
150 def test_iter_no_intersection_two_traces(self):
3d60267b 151 spec = bt2.ComponentSpec('ctf', 'fs', _3EVENTS_INTERSECT_TRACE_PATH)
704c2307 152 specs = [spec, spec]
5602ef81 153 msg_iter = bt2.TraceCollectionMessageIterator(specs)
907f2b70 154 msgs = list(msg_iter)
188edac1 155 self.assertEqual(len(msgs), 56)
907f2b70
SM
156 hist = _count_msgs_by_type(msgs)
157 self.assertEqual(hist[bt2.message._EventMessage], 16)
704c2307
PP
158
159 def test_iter_no_intersection_begin(self):
3d60267b 160 specs = [bt2.ComponentSpec('ctf', 'fs', _3EVENTS_INTERSECT_TRACE_PATH)]
907f2b70
SM
161 msg_iter = bt2.TraceCollectionMessageIterator(specs, begin=13515309.000000023)
162 hist = _count_msgs_by_type(msg_iter)
163 self.assertEqual(hist[bt2.message._EventMessage], 6)
704c2307
PP
164
165 def test_iter_no_intersection_end(self):
3d60267b 166 specs = [bt2.ComponentSpec('ctf', 'fs', _3EVENTS_INTERSECT_TRACE_PATH)]
907f2b70
SM
167 msg_iter = bt2.TraceCollectionMessageIterator(specs, end=13515309.000000075)
168 hist = _count_msgs_by_type(msg_iter)
169 self.assertEqual(hist[bt2.message._EventMessage], 5)
This page took 0.041736 seconds and 4 git commands to generate.