Apply black code formatter on all Python code
[babeltrace.git] / tests / bindings / python / bt2 / test_trace_collection_message_iterator.py
CommitLineData
32d2d479
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
cc261e29
PP
19import unittest
20import datetime
cc261e29
PP
21import bt2
22import os
23import os.path
24
25
b7c5d194 26_BT_CTF_TRACES_PATH = os.environ['BT_CTF_TRACES_PATH']
61d96b89
FD
27_3EVENTS_INTERSECT_TRACE_PATH = os.path.join(
28 _BT_CTF_TRACES_PATH, 'intersection', '3eventsintersect'
29)
cc261e29
PP
30
31
88fdcc33 32class ComponentSpecTestCase(unittest.TestCase):
cc261e29 33 def test_create_good_no_params(self):
da35796c 34 bt2.ComponentSpec('plugin', 'compcls')
cc261e29
PP
35
36 def test_create_good_with_params(self):
da35796c 37 bt2.ComponentSpec('plugin', 'compcls', {'salut': 23})
cc261e29
PP
38
39 def test_create_good_with_path_params(self):
88fdcc33 40 spec = bt2.ComponentSpec('plugin', 'compcls', 'a path')
da35796c 41 self.assertEqual(spec.params['paths'], ['a path'])
cc261e29
PP
42
43 def test_create_wrong_plugin_name_type(self):
44 with self.assertRaises(TypeError):
da35796c 45 bt2.ComponentSpec(23, 'compcls')
cc261e29
PP
46
47 def test_create_wrong_component_class_name_type(self):
48 with self.assertRaises(TypeError):
da35796c 49 bt2.ComponentSpec('plugin', 190)
cc261e29
PP
50
51 def test_create_wrong_params_type(self):
52 with self.assertRaises(TypeError):
da35796c
SM
53 bt2.ComponentSpec('dwdw', 'compcls', datetime.datetime.now())
54
55
56# Return a map, msg type -> number of messages of this type.
57
61d96b89 58
da35796c
SM
59def _count_msgs_by_type(msgs):
60 res = {}
61
62 for msg in msgs:
63 t = type(msg)
64 n = res.get(t, 0)
65 res[t] = n + 1
66
67 return res
cc261e29
PP
68
69
fa4c33e3 70class TraceCollectionMessageIteratorTestCase(unittest.TestCase):
cc261e29 71 def test_create_wrong_stream_intersection_mode_type(self):
88fdcc33 72 specs = [bt2.ComponentSpec('ctf', 'fs', _3EVENTS_INTERSECT_TRACE_PATH)]
cc261e29
PP
73
74 with self.assertRaises(TypeError):
da35796c 75 bt2.TraceCollectionMessageIterator(specs, stream_intersection_mode=23)
cc261e29
PP
76
77 def test_create_wrong_begin_type(self):
88fdcc33 78 specs = [bt2.ComponentSpec('ctf', 'fs', _3EVENTS_INTERSECT_TRACE_PATH)]
cc261e29
PP
79
80 with self.assertRaises(TypeError):
da35796c 81 bt2.TraceCollectionMessageIterator(specs, begin='hi')
cc261e29
PP
82
83 def test_create_wrong_end_type(self):
88fdcc33 84 specs = [bt2.ComponentSpec('ctf', 'fs', _3EVENTS_INTERSECT_TRACE_PATH)]
cc261e29
PP
85
86 with self.assertRaises(TypeError):
da35796c 87 bt2.TraceCollectionMessageIterator(specs, begin='lel')
cc261e29
PP
88
89 def test_create_no_such_plugin(self):
88fdcc33 90 specs = [bt2.ComponentSpec('77', '101', _3EVENTS_INTERSECT_TRACE_PATH)]
cc261e29
PP
91
92 with self.assertRaises(bt2.Error):
da35796c 93 bt2.TraceCollectionMessageIterator(specs)
cc261e29
PP
94
95 def test_create_begin_s(self):
88fdcc33 96 specs = [bt2.ComponentSpec('ctf', 'fs', _3EVENTS_INTERSECT_TRACE_PATH)]
da35796c 97 bt2.TraceCollectionMessageIterator(specs, begin=19457.918232)
cc261e29
PP
98
99 def test_create_end_s(self):
88fdcc33 100 specs = [bt2.ComponentSpec('ctf', 'fs', _3EVENTS_INTERSECT_TRACE_PATH)]
da35796c 101 bt2.TraceCollectionMessageIterator(specs, end=123.12312)
cc261e29
PP
102
103 def test_create_begin_datetime(self):
88fdcc33 104 specs = [bt2.ComponentSpec('ctf', 'fs', _3EVENTS_INTERSECT_TRACE_PATH)]
da35796c 105 bt2.TraceCollectionMessageIterator(specs, begin=datetime.datetime.now())
cc261e29
PP
106
107 def test_create_end_datetime(self):
88fdcc33 108 specs = [bt2.ComponentSpec('ctf', 'fs', _3EVENTS_INTERSECT_TRACE_PATH)]
da35796c 109 bt2.TraceCollectionMessageIterator(specs, end=datetime.datetime.now())
cc261e29
PP
110
111 def test_iter_no_intersection(self):
88fdcc33 112 specs = [bt2.ComponentSpec('ctf', 'fs', _3EVENTS_INTERSECT_TRACE_PATH)]
fa4c33e3 113 msg_iter = bt2.TraceCollectionMessageIterator(specs)
da35796c 114 msgs = list(msg_iter)
b7cbc799 115 self.assertEqual(len(msgs), 28)
da35796c
SM
116 hist = _count_msgs_by_type(msgs)
117 self.assertEqual(hist[bt2.message._EventMessage], 8)
cc261e29 118
da35796c 119 # Same as the above, but we pass a single spec instead of a spec list.
88fdcc33
PP
120 def test_iter_specs_not_list(self):
121 spec = bt2.ComponentSpec('ctf', 'fs', _3EVENTS_INTERSECT_TRACE_PATH)
da35796c
SM
122 msg_iter = bt2.TraceCollectionMessageIterator(spec)
123 msgs = list(msg_iter)
b7cbc799 124 self.assertEqual(len(msgs), 28)
da35796c
SM
125 hist = _count_msgs_by_type(msgs)
126 self.assertEqual(hist[bt2.message._EventMessage], 8)
88fdcc33
PP
127
128 def test_iter_custom_filter(self):
129 src_spec = bt2.ComponentSpec('ctf', 'fs', _3EVENTS_INTERSECT_TRACE_PATH)
61d96b89 130 flt_spec = bt2.ComponentSpec('utils', 'trimmer', {'end': '13515309.000000075'})
da35796c
SM
131 msg_iter = bt2.TraceCollectionMessageIterator(src_spec, flt_spec)
132 hist = _count_msgs_by_type(msg_iter)
133 self.assertEqual(hist[bt2.message._EventMessage], 5)
88fdcc33 134
cc261e29 135 def test_iter_intersection(self):
88fdcc33 136 specs = [bt2.ComponentSpec('ctf', 'fs', _3EVENTS_INTERSECT_TRACE_PATH)]
61d96b89
FD
137 msg_iter = bt2.TraceCollectionMessageIterator(
138 specs, stream_intersection_mode=True
139 )
da35796c 140 msgs = list(msg_iter)
b7cbc799 141 self.assertEqual(len(msgs), 15)
da35796c
SM
142 hist = _count_msgs_by_type(msgs)
143 self.assertEqual(hist[bt2.message._EventMessage], 3)
cc261e29
PP
144
145 def test_iter_intersection_no_path_param(self):
88fdcc33 146 specs = [bt2.ComponentSpec('text', 'dmesg', {'read-from-stdin': True})]
cc261e29
PP
147
148 with self.assertRaises(bt2.Error):
da35796c 149 bt2.TraceCollectionMessageIterator(specs, stream_intersection_mode=True)
cc261e29
PP
150
151 def test_iter_no_intersection_two_traces(self):
88fdcc33 152 spec = bt2.ComponentSpec('ctf', 'fs', _3EVENTS_INTERSECT_TRACE_PATH)
cc261e29 153 specs = [spec, spec]
fa4c33e3 154 msg_iter = bt2.TraceCollectionMessageIterator(specs)
da35796c 155 msgs = list(msg_iter)
b7cbc799 156 self.assertEqual(len(msgs), 56)
da35796c
SM
157 hist = _count_msgs_by_type(msgs)
158 self.assertEqual(hist[bt2.message._EventMessage], 16)
cc261e29
PP
159
160 def test_iter_no_intersection_begin(self):
88fdcc33 161 specs = [bt2.ComponentSpec('ctf', 'fs', _3EVENTS_INTERSECT_TRACE_PATH)]
da35796c
SM
162 msg_iter = bt2.TraceCollectionMessageIterator(specs, begin=13515309.000000023)
163 hist = _count_msgs_by_type(msg_iter)
164 self.assertEqual(hist[bt2.message._EventMessage], 6)
cc261e29
PP
165
166 def test_iter_no_intersection_end(self):
88fdcc33 167 specs = [bt2.ComponentSpec('ctf', 'fs', _3EVENTS_INTERSECT_TRACE_PATH)]
da35796c
SM
168 msg_iter = bt2.TraceCollectionMessageIterator(specs, end=13515309.000000075)
169 hist = _count_msgs_by_type(msg_iter)
170 self.assertEqual(hist[bt2.message._EventMessage], 5)
This page took 0.042058 seconds and 4 git commands to generate.