Commit | Line | Data |
---|---|---|
ab5be9fa MJ |
1 | # |
2 | # Copyright (C) 2012 Danny Serres <danny.serres@efficios.com> | |
3 | # | |
4 | # SPDX-License-Identifier: GPL-2.0-only | |
5 | # | |
6 | ||
36907cb5 DS |
7 | import unittest |
8 | import os | |
9 | import time | |
68f8c317 | 10 | import tempfile |
36907cb5 DS |
11 | from lttng import * |
12 | ||
6a871bbe KS |
13 | |
14 | class TestLttngPythonModule(unittest.TestCase): | |
36907cb5 | 15 | |
68f8c317 JR |
16 | def setUp(self): |
17 | self.tmpdir = tempfile.TemporaryDirectory() | |
36907cb5 | 18 | |
68f8c317 JR |
19 | def tearDown(self): |
20 | self.tmpdir.cleanup() | |
36907cb5 | 21 | |
68f8c317 JR |
22 | def test_kernel_all_events(self): |
23 | dom = Domain() | |
24 | dom.type = DOMAIN_KERNEL | |
25 | dom.buf_type = BUFFER_GLOBAL | |
36907cb5 | 26 | |
68f8c317 JR |
27 | event = Event() |
28 | event.type = EVENT_TRACEPOINT | |
29 | event.loglevel_type = EVENT_LOGLEVEL_ALL | |
36907cb5 | 30 | |
68f8c317 | 31 | han = Handle("test_kernel_all_ev", dom) |
36907cb5 | 32 | |
68f8c317 JR |
33 | r = create("test_kernel_all_ev", self.tmpdir.name) |
34 | self.assertGreaterEqual(r, 0, strerror(r)) | |
36907cb5 | 35 | |
68f8c317 JR |
36 | r = enable_event(han, event, None) |
37 | self.assertGreaterEqual(r, 0, strerror(r)) | |
36907cb5 | 38 | |
68f8c317 JR |
39 | r = start("test_kernel_all_ev") |
40 | self.assertGreaterEqual(r, 0, strerror(r)) | |
41 | time.sleep(2) | |
36907cb5 | 42 | |
68f8c317 JR |
43 | r = stop("test_kernel_all_ev") |
44 | self.assertGreaterEqual(r, 0, strerror(r)) | |
36907cb5 | 45 | |
68f8c317 JR |
46 | r = destroy("test_kernel_all_ev") |
47 | self.assertGreaterEqual(r, 0, strerror(r)) | |
36907cb5 | 48 | |
68f8c317 | 49 | def test_kernel_event(self): |
36907cb5 | 50 | |
68f8c317 JR |
51 | dom = Domain() |
52 | dom.type = DOMAIN_KERNEL | |
53 | dom.buf_type = BUFFER_GLOBAL | |
36907cb5 | 54 | |
68f8c317 | 55 | channel = Channel() |
6a871bbe | 56 | channel.name = "mychan" |
68f8c317 JR |
57 | channel.attr.overwrite = 0 |
58 | channel.attr.subbuf_size = 4096 | |
59 | channel.attr.num_subbuf = 8 | |
60 | channel.attr.switch_timer_interval = 0 | |
61 | channel.attr.read_timer_interval = 200 | |
62 | channel.attr.output = EVENT_SPLICE | |
36907cb5 | 63 | |
68f8c317 JR |
64 | sched_switch = Event() |
65 | sched_switch.name = "sched_switch" | |
66 | sched_switch.type = EVENT_TRACEPOINT | |
67 | sched_switch.loglevel_type = EVENT_LOGLEVEL_ALL | |
36907cb5 | 68 | |
68f8c317 JR |
69 | sched_process_exit = Event() |
70 | sched_process_exit.name = "sched_process_exit" | |
71 | sched_process_exit.type = EVENT_TRACEPOINT | |
72 | sched_process_exit.loglevel_type = EVENT_LOGLEVEL_ALL | |
36907cb5 | 73 | |
68f8c317 JR |
74 | sched_process_free = Event() |
75 | sched_process_free.name = "sched_process_free" | |
76 | sched_process_free.type = EVENT_TRACEPOINT | |
77 | sched_process_free.loglevel_type = EVENT_LOGLEVEL_ALL | |
36907cb5 | 78 | |
68f8c317 | 79 | han = Handle("test_kernel_event", dom) |
36907cb5 | 80 | |
6a871bbe | 81 | # Create session test |
68f8c317 JR |
82 | r = create("test_kernel_event", self.tmpdir.name) |
83 | self.assertGreaterEqual(r, 0, strerror(r)) | |
36907cb5 | 84 | |
6a871bbe | 85 | # Enabling channel tests |
68f8c317 JR |
86 | r = enable_channel(han, channel) |
87 | self.assertGreaterEqual(r, 0, strerror(r)) | |
36907cb5 | 88 | |
6a871bbe | 89 | # Enabling events tests |
68f8c317 JR |
90 | r = enable_event(han, sched_switch, channel.name) |
91 | self.assertGreaterEqual(r, 0, strerror(r)) | |
36907cb5 | 92 | |
68f8c317 JR |
93 | r = enable_event(han, sched_process_exit, channel.name) |
94 | self.assertGreaterEqual(r, 0, strerror(r)) | |
36907cb5 | 95 | |
68f8c317 JR |
96 | r = enable_event(han, sched_process_free, channel.name) |
97 | self.assertGreaterEqual(r, 0, strerror(r)) | |
36907cb5 | 98 | |
6a871bbe | 99 | # Disabling events tests |
68f8c317 JR |
100 | r = disable_event(han, sched_switch.name, channel.name) |
101 | self.assertGreaterEqual(r, 0, strerror(r)) | |
36907cb5 | 102 | |
68f8c317 JR |
103 | r = disable_event(han, sched_process_free.name, channel.name) |
104 | self.assertGreaterEqual(r, 0, strerror(r)) | |
36907cb5 | 105 | |
6a871bbe | 106 | # Renabling events tests |
68f8c317 JR |
107 | r = enable_event(han, sched_switch, channel.name) |
108 | self.assertGreaterEqual(r, 0, strerror(r)) | |
36907cb5 | 109 | |
68f8c317 JR |
110 | r = enable_event(han, sched_process_free, channel.name) |
111 | self.assertGreaterEqual(r, 0, strerror(r)) | |
36907cb5 | 112 | |
6a871bbe | 113 | # Start, stop, destroy |
68f8c317 JR |
114 | r = start("test_kernel_event") |
115 | self.assertGreaterEqual(r, 0, strerror(r)) | |
116 | time.sleep(2) | |
36907cb5 | 117 | |
68f8c317 JR |
118 | r = stop("test_kernel_event") |
119 | self.assertGreaterEqual(r, 0, strerror(r)) | |
36907cb5 | 120 | |
6a871bbe | 121 | r = disable_channel(han, channel.name) |
68f8c317 | 122 | self.assertGreaterEqual(r, 0, strerror(r)) |
36907cb5 | 123 | |
6a871bbe | 124 | r = destroy("test_kernel_event") |
68f8c317 | 125 | self.assertGreaterEqual(r, 0, strerror(r)) |
36907cb5 | 126 | |
68f8c317 JR |
127 | def test_ust_all_events(self): |
128 | dom = Domain() | |
129 | dom.type = DOMAIN_UST | |
130 | dom.buf_type = BUFFER_PER_UID | |
36907cb5 | 131 | |
68f8c317 JR |
132 | event = Event() |
133 | event.type = EVENT_TRACEPOINT | |
134 | event.loglevel_type = EVENT_LOGLEVEL_ALL | |
36907cb5 | 135 | |
68f8c317 | 136 | han = Handle("test_ust_all_ev", dom) |
36907cb5 | 137 | |
68f8c317 JR |
138 | r = create("test_ust_all_ev", self.tmpdir.name) |
139 | self.assertGreaterEqual(r, 0, strerror(r)) | |
36907cb5 | 140 | |
68f8c317 JR |
141 | r = enable_event(han, event, None) |
142 | self.assertGreaterEqual(r, 0, strerror(r)) | |
36907cb5 | 143 | |
68f8c317 JR |
144 | r = start("test_ust_all_ev") |
145 | self.assertGreaterEqual(r, 0, strerror(r)) | |
146 | time.sleep(2) | |
36907cb5 | 147 | |
68f8c317 JR |
148 | r = stop("test_ust_all_ev") |
149 | self.assertGreaterEqual(r, 0, strerror(r)) | |
36907cb5 | 150 | |
68f8c317 JR |
151 | r = destroy("test_ust_all_ev") |
152 | self.assertGreaterEqual(r, 0, strerror(r)) | |
36907cb5 | 153 | |
68f8c317 | 154 | def test_ust_event(self): |
36907cb5 | 155 | |
68f8c317 JR |
156 | dom = Domain() |
157 | dom.type = DOMAIN_UST | |
158 | dom.buf_type = BUFFER_PER_UID | |
36907cb5 | 159 | |
68f8c317 | 160 | channel = Channel() |
6a871bbe | 161 | channel.name = "mychan" |
68f8c317 JR |
162 | channel.attr.overwrite = 0 |
163 | channel.attr.subbuf_size = 4096 | |
164 | channel.attr.num_subbuf = 8 | |
165 | channel.attr.switch_timer_interval = 0 | |
166 | channel.attr.read_timer_interval = 200 | |
167 | channel.attr.output = EVENT_MMAP | |
36907cb5 | 168 | |
68f8c317 JR |
169 | ev1 = Event() |
170 | ev1.name = "tp1" | |
171 | ev1.type = EVENT_TRACEPOINT | |
172 | ev1.loglevel_type = EVENT_LOGLEVEL_ALL | |
36907cb5 | 173 | |
68f8c317 JR |
174 | ev2 = Event() |
175 | ev2.name = "ev2" | |
176 | ev2.type = EVENT_TRACEPOINT | |
177 | ev2.loglevel_type = EVENT_LOGLEVEL_ALL | |
36907cb5 | 178 | |
68f8c317 JR |
179 | ev3 = Event() |
180 | ev3.name = "ev3" | |
181 | ev3.type = EVENT_TRACEPOINT | |
182 | ev3.loglevel_type = EVENT_LOGLEVEL_ALL | |
36907cb5 | 183 | |
68f8c317 | 184 | han = Handle("test_ust_event", dom) |
36907cb5 | 185 | |
6a871bbe | 186 | # Create session test |
68f8c317 JR |
187 | r = create("test_ust_event", self.tmpdir.name) |
188 | self.assertGreaterEqual(r, 0, strerror(r)) | |
36907cb5 | 189 | |
6a871bbe | 190 | # Enabling channel tests |
68f8c317 JR |
191 | r = enable_channel(han, channel) |
192 | self.assertGreaterEqual(r, 0, strerror(r)) | |
36907cb5 | 193 | |
6a871bbe | 194 | # Enabling events tests |
68f8c317 JR |
195 | r = enable_event(han, ev1, channel.name) |
196 | self.assertGreaterEqual(r, 0, strerror(r)) | |
36907cb5 | 197 | |
68f8c317 JR |
198 | r = enable_event(han, ev2, channel.name) |
199 | self.assertGreaterEqual(r, 0, strerror(r)) | |
36907cb5 | 200 | |
68f8c317 JR |
201 | r = enable_event(han, ev3, channel.name) |
202 | self.assertGreaterEqual(r, 0, strerror(r)) | |
36907cb5 | 203 | |
6a871bbe | 204 | # Disabling events tests |
68f8c317 JR |
205 | r = disable_event(han, ev1.name, channel.name) |
206 | self.assertGreaterEqual(r, 0, strerror(r)) | |
36907cb5 | 207 | |
68f8c317 JR |
208 | r = disable_event(han, ev3.name, channel.name) |
209 | self.assertGreaterEqual(r, 0, strerror(r)) | |
36907cb5 | 210 | |
6a871bbe | 211 | # Renabling events tests |
68f8c317 JR |
212 | r = enable_event(han, ev1, channel.name) |
213 | self.assertGreaterEqual(r, 0, strerror(r)) | |
36907cb5 | 214 | |
68f8c317 JR |
215 | r = enable_event(han, ev3, channel.name) |
216 | self.assertGreaterEqual(r, 0, strerror(r)) | |
36907cb5 | 217 | |
6a871bbe | 218 | # Start, stop |
68f8c317 JR |
219 | r = start("test_ust_event") |
220 | self.assertGreaterEqual(r, 0, strerror(r)) | |
221 | time.sleep(2) | |
36907cb5 | 222 | |
68f8c317 JR |
223 | r = stop("test_ust_event") |
224 | self.assertGreaterEqual(r, 0, strerror(r)) | |
36907cb5 | 225 | |
6a871bbe | 226 | # Restart/restop |
68f8c317 JR |
227 | r = start("test_ust_event") |
228 | self.assertGreaterEqual(r, 0, strerror(r)) | |
229 | time.sleep(2) | |
36907cb5 | 230 | |
68f8c317 JR |
231 | r = stop("test_ust_event") |
232 | self.assertGreaterEqual(r, 0, strerror(r)) | |
36907cb5 | 233 | |
6a871bbe KS |
234 | # Disabling channel and destroy |
235 | r = disable_channel(han, channel.name) | |
68f8c317 | 236 | self.assertGreaterEqual(r, 0, strerror(r)) |
36907cb5 | 237 | |
6a871bbe | 238 | r = destroy("test_ust_event") |
68f8c317 | 239 | self.assertGreaterEqual(r, 0, strerror(r)) |
36907cb5 | 240 | |
68f8c317 JR |
241 | def test_other_functions(self): |
242 | dom = Domain() | |
6a871bbe | 243 | dom.type = DOMAIN_KERNEL |
68f8c317 | 244 | dom.buf_type = BUFFER_GLOBAL |
36907cb5 | 245 | |
6a871bbe KS |
246 | event = Event() |
247 | event.type = EVENT_TRACEPOINT | |
248 | event.loglevel_type = EVENT_LOGLEVEL_ALL | |
36907cb5 | 249 | |
68f8c317 | 250 | ctx = EventContext() |
6a871bbe | 251 | ctx.type = EVENT_CONTEXT_PID |
36907cb5 | 252 | |
68f8c317 JR |
253 | chattr = ChannelAttr() |
254 | chattr.overwrite = 0 | |
255 | chattr.subbuf_size = 4096 | |
256 | chattr.num_subbuf = 8 | |
257 | chattr.switch_timer_interval = 0 | |
258 | chattr.read_timer_interval = 200 | |
259 | chattr.output = EVENT_SPLICE | |
36907cb5 | 260 | |
6a871bbe | 261 | han = Handle("test_otherf", dom) |
36907cb5 | 262 | |
68f8c317 JR |
263 | r = create("test_otherf", self.tmpdir.name) |
264 | self.assertGreaterEqual(r, 0, strerror(r)) | |
36907cb5 | 265 | |
68f8c317 JR |
266 | r = enable_event(han, event, None) |
267 | self.assertGreaterEqual(r, 0, strerror(r)) | |
36907cb5 | 268 | |
6a871bbe | 269 | # Context test |
68f8c317 JR |
270 | r = add_context(han, ctx, "sched_switch", "channel0") |
271 | self.assertGreaterEqual(r, 0, strerror(r)) | |
6a871bbe | 272 | # Any channel |
68f8c317 JR |
273 | r = add_context(han, ctx, "sched_wakeup", None) |
274 | self.assertGreaterEqual(r, 0, strerror(r)) | |
6a871bbe | 275 | # All events |
68f8c317 JR |
276 | r = add_context(han, ctx, None, None) |
277 | self.assertGreaterEqual(r, 0, strerror(r)) | |
36907cb5 | 278 | |
6a871bbe | 279 | # Def. channel attr |
68f8c317 JR |
280 | channel_set_default_attr(dom, chattr) |
281 | channel_set_default_attr(None, None) | |
36907cb5 | 282 | |
6a871bbe | 283 | # Ses Daemon alive |
68f8c317 JR |
284 | r = session_daemon_alive() |
285 | self.assertTrue(r == 1 or r == 0, strerror(r)) | |
36907cb5 | 286 | |
6a871bbe | 287 | # Setting trace group |
68f8c317 JR |
288 | r = set_tracing_group("testing") |
289 | self.assertGreaterEqual(r, 0, strerror(r)) | |
36907cb5 | 290 | |
68f8c317 JR |
291 | r = start("test_otherf") |
292 | self.assertGreaterEqual(r, 0, strerror(r)) | |
293 | time.sleep(2) | |
36907cb5 | 294 | |
68f8c317 JR |
295 | r = stop("test_otherf") |
296 | self.assertGreaterEqual(r, 0, strerror(r)) | |
36907cb5 | 297 | |
68f8c317 JR |
298 | domains = list_domains("test_otherf") |
299 | self.assertTrue(domains[0].type == DOMAIN_KERNEL) | |
300 | self.assertTrue(domains[0].buf_type == BUFFER_GLOBAL) | |
36907cb5 | 301 | |
68f8c317 | 302 | del han |
36907cb5 | 303 | |
68f8c317 JR |
304 | r = destroy("test_otherf") |
305 | self.assertGreaterEqual(r, 0, strerror(r)) | |
306 | ||
307 | ||
308 | def ust_suite(): | |
309 | suite = unittest.TestSuite() | |
310 | suite.addTest(TestLttngPythonModule("test_ust_event")) | |
311 | suite.addTest(TestLttngPythonModule("test_ust_all_events")) | |
312 | return suite | |
313 | ||
6a871bbe | 314 | |
68f8c317 JR |
315 | def kernel_suite(): |
316 | suite = unittest.TestSuite() | |
317 | suite.addTest(TestLttngPythonModule("test_kernel_event")) | |
318 | suite.addTest(TestLttngPythonModule("test_kernel_all_events")) | |
319 | suite.addTest(TestLttngPythonModule("test_other_functions")) | |
320 | return suite | |
321 | ||
6a871bbe KS |
322 | |
323 | if __name__ == "__main__": | |
68f8c317 JR |
324 | destroy("test_kernel_event") |
325 | destroy("test_kernel_all_events") | |
326 | destroy("test_ust_all_events") | |
327 | destroy("test_ust_event") | |
328 | destroy("test_otherf") | |
329 | ||
330 | runner = unittest.TextTestRunner(verbosity=2) | |
331 | ||
332 | if os.geteuid() == 0: | |
333 | runner.run(kernel_suite()) | |
334 | ||
335 | runner.run(ust_suite()) |