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 | ||
13 | class TestLttngPythonModule (unittest.TestCase): | |
14 | ||
68f8c317 JR |
15 | def setUp(self): |
16 | self.tmpdir = tempfile.TemporaryDirectory() | |
36907cb5 | 17 | |
68f8c317 JR |
18 | def tearDown(self): |
19 | self.tmpdir.cleanup() | |
36907cb5 | 20 | |
68f8c317 JR |
21 | def test_kernel_all_events(self): |
22 | dom = Domain() | |
23 | dom.type = DOMAIN_KERNEL | |
24 | dom.buf_type = BUFFER_GLOBAL | |
36907cb5 | 25 | |
68f8c317 JR |
26 | event = Event() |
27 | event.type = EVENT_TRACEPOINT | |
28 | event.loglevel_type = EVENT_LOGLEVEL_ALL | |
36907cb5 | 29 | |
68f8c317 | 30 | han = Handle("test_kernel_all_ev", dom) |
36907cb5 | 31 | |
68f8c317 JR |
32 | r = create("test_kernel_all_ev", self.tmpdir.name) |
33 | self.assertGreaterEqual(r, 0, strerror(r)) | |
36907cb5 | 34 | |
68f8c317 JR |
35 | r = enable_event(han, event, None) |
36 | self.assertGreaterEqual(r, 0, strerror(r)) | |
36907cb5 | 37 | |
68f8c317 JR |
38 | r = start("test_kernel_all_ev") |
39 | self.assertGreaterEqual(r, 0, strerror(r)) | |
40 | time.sleep(2) | |
36907cb5 | 41 | |
68f8c317 JR |
42 | r = stop("test_kernel_all_ev") |
43 | self.assertGreaterEqual(r, 0, strerror(r)) | |
36907cb5 | 44 | |
68f8c317 JR |
45 | r = destroy("test_kernel_all_ev") |
46 | self.assertGreaterEqual(r, 0, strerror(r)) | |
36907cb5 | 47 | |
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 JR |
55 | channel = Channel() |
56 | channel.name="mychan" | |
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 | |
68f8c317 JR |
81 | #Create session test |
82 | r = create("test_kernel_event", self.tmpdir.name) | |
83 | self.assertGreaterEqual(r, 0, strerror(r)) | |
36907cb5 | 84 | |
68f8c317 JR |
85 | #Enabling channel tests |
86 | r = enable_channel(han, channel) | |
87 | self.assertGreaterEqual(r, 0, strerror(r)) | |
36907cb5 | 88 | |
68f8c317 JR |
89 | #Enabling events tests |
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 | |
68f8c317 JR |
99 | #Disabling events tests |
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 | |
68f8c317 JR |
106 | #Renabling events tests |
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 | |
68f8c317 JR |
113 | #Start, stop, destroy |
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 | |
68f8c317 JR |
121 | r=disable_channel(han, channel.name) |
122 | self.assertGreaterEqual(r, 0, strerror(r)) | |
36907cb5 | 123 | |
68f8c317 JR |
124 | r=destroy("test_kernel_event") |
125 | self.assertGreaterEqual(r, 0, strerror(r)) | |
36907cb5 | 126 | |
36907cb5 | 127 | |
36907cb5 | 128 | |
68f8c317 JR |
129 | def test_ust_all_events(self): |
130 | dom = Domain() | |
131 | dom.type = DOMAIN_UST | |
132 | dom.buf_type = BUFFER_PER_UID | |
36907cb5 | 133 | |
68f8c317 JR |
134 | event = Event() |
135 | event.type = EVENT_TRACEPOINT | |
136 | event.loglevel_type = EVENT_LOGLEVEL_ALL | |
36907cb5 | 137 | |
68f8c317 | 138 | han = Handle("test_ust_all_ev", dom) |
36907cb5 | 139 | |
68f8c317 JR |
140 | r = create("test_ust_all_ev", self.tmpdir.name) |
141 | self.assertGreaterEqual(r, 0, strerror(r)) | |
36907cb5 | 142 | |
68f8c317 JR |
143 | r = enable_event(han, event, None) |
144 | self.assertGreaterEqual(r, 0, strerror(r)) | |
36907cb5 | 145 | |
68f8c317 JR |
146 | r = start("test_ust_all_ev") |
147 | self.assertGreaterEqual(r, 0, strerror(r)) | |
148 | time.sleep(2) | |
36907cb5 | 149 | |
68f8c317 JR |
150 | r = stop("test_ust_all_ev") |
151 | self.assertGreaterEqual(r, 0, strerror(r)) | |
36907cb5 | 152 | |
68f8c317 JR |
153 | r = destroy("test_ust_all_ev") |
154 | self.assertGreaterEqual(r, 0, strerror(r)) | |
36907cb5 | 155 | |
36907cb5 | 156 | |
68f8c317 | 157 | def test_ust_event(self): |
36907cb5 | 158 | |
68f8c317 JR |
159 | dom = Domain() |
160 | dom.type = DOMAIN_UST | |
161 | dom.buf_type = BUFFER_PER_UID | |
36907cb5 | 162 | |
68f8c317 JR |
163 | channel = Channel() |
164 | channel.name="mychan" | |
165 | channel.attr.overwrite = 0 | |
166 | channel.attr.subbuf_size = 4096 | |
167 | channel.attr.num_subbuf = 8 | |
168 | channel.attr.switch_timer_interval = 0 | |
169 | channel.attr.read_timer_interval = 200 | |
170 | channel.attr.output = EVENT_MMAP | |
36907cb5 | 171 | |
68f8c317 JR |
172 | ev1 = Event() |
173 | ev1.name = "tp1" | |
174 | ev1.type = EVENT_TRACEPOINT | |
175 | ev1.loglevel_type = EVENT_LOGLEVEL_ALL | |
36907cb5 | 176 | |
68f8c317 JR |
177 | ev2 = Event() |
178 | ev2.name = "ev2" | |
179 | ev2.type = EVENT_TRACEPOINT | |
180 | ev2.loglevel_type = EVENT_LOGLEVEL_ALL | |
36907cb5 | 181 | |
68f8c317 JR |
182 | ev3 = Event() |
183 | ev3.name = "ev3" | |
184 | ev3.type = EVENT_TRACEPOINT | |
185 | ev3.loglevel_type = EVENT_LOGLEVEL_ALL | |
36907cb5 | 186 | |
68f8c317 | 187 | han = Handle("test_ust_event", dom) |
36907cb5 | 188 | |
68f8c317 JR |
189 | #Create session test |
190 | r = create("test_ust_event", self.tmpdir.name) | |
191 | self.assertGreaterEqual(r, 0, strerror(r)) | |
36907cb5 | 192 | |
68f8c317 JR |
193 | #Enabling channel tests |
194 | r = enable_channel(han, channel) | |
195 | self.assertGreaterEqual(r, 0, strerror(r)) | |
36907cb5 | 196 | |
68f8c317 JR |
197 | #Enabling events tests |
198 | r = enable_event(han, ev1, channel.name) | |
199 | self.assertGreaterEqual(r, 0, strerror(r)) | |
36907cb5 | 200 | |
68f8c317 JR |
201 | r = enable_event(han, ev2, channel.name) |
202 | self.assertGreaterEqual(r, 0, strerror(r)) | |
36907cb5 | 203 | |
68f8c317 JR |
204 | r = enable_event(han, ev3, channel.name) |
205 | self.assertGreaterEqual(r, 0, strerror(r)) | |
36907cb5 | 206 | |
68f8c317 JR |
207 | #Disabling events tests |
208 | r = disable_event(han, ev1.name, channel.name) | |
209 | self.assertGreaterEqual(r, 0, strerror(r)) | |
36907cb5 | 210 | |
68f8c317 JR |
211 | r = disable_event(han, ev3.name, channel.name) |
212 | self.assertGreaterEqual(r, 0, strerror(r)) | |
36907cb5 | 213 | |
68f8c317 JR |
214 | #Renabling events tests |
215 | r = enable_event(han, ev1, channel.name) | |
216 | self.assertGreaterEqual(r, 0, strerror(r)) | |
36907cb5 | 217 | |
68f8c317 JR |
218 | r = enable_event(han, ev3, channel.name) |
219 | self.assertGreaterEqual(r, 0, strerror(r)) | |
36907cb5 | 220 | |
68f8c317 JR |
221 | #Start, stop |
222 | r = start("test_ust_event") | |
223 | self.assertGreaterEqual(r, 0, strerror(r)) | |
224 | time.sleep(2) | |
36907cb5 | 225 | |
68f8c317 JR |
226 | r = stop("test_ust_event") |
227 | self.assertGreaterEqual(r, 0, strerror(r)) | |
36907cb5 | 228 | |
68f8c317 JR |
229 | #Restart/restop |
230 | r = start("test_ust_event") | |
231 | self.assertGreaterEqual(r, 0, strerror(r)) | |
232 | time.sleep(2) | |
36907cb5 | 233 | |
68f8c317 JR |
234 | r = stop("test_ust_event") |
235 | self.assertGreaterEqual(r, 0, strerror(r)) | |
36907cb5 | 236 | |
68f8c317 JR |
237 | #Disabling channel and destroy |
238 | r=disable_channel(han, channel.name) | |
239 | self.assertGreaterEqual(r, 0, strerror(r)) | |
36907cb5 | 240 | |
68f8c317 JR |
241 | r=destroy("test_ust_event") |
242 | self.assertGreaterEqual(r, 0, strerror(r)) | |
36907cb5 | 243 | |
36907cb5 | 244 | |
68f8c317 JR |
245 | def test_other_functions(self): |
246 | dom = Domain() | |
247 | dom.type=DOMAIN_KERNEL | |
248 | dom.buf_type = BUFFER_GLOBAL | |
36907cb5 | 249 | |
68f8c317 JR |
250 | event=Event() |
251 | event.type=EVENT_TRACEPOINT | |
252 | event.loglevel_type=EVENT_LOGLEVEL_ALL | |
36907cb5 | 253 | |
68f8c317 JR |
254 | ctx = EventContext() |
255 | ctx.type=EVENT_CONTEXT_PID | |
36907cb5 | 256 | |
68f8c317 JR |
257 | chattr = ChannelAttr() |
258 | chattr.overwrite = 0 | |
259 | chattr.subbuf_size = 4096 | |
260 | chattr.num_subbuf = 8 | |
261 | chattr.switch_timer_interval = 0 | |
262 | chattr.read_timer_interval = 200 | |
263 | chattr.output = EVENT_SPLICE | |
36907cb5 | 264 | |
68f8c317 | 265 | han = Handle("test_otherf" , dom) |
36907cb5 | 266 | |
68f8c317 JR |
267 | r = create("test_otherf", self.tmpdir.name) |
268 | self.assertGreaterEqual(r, 0, strerror(r)) | |
36907cb5 | 269 | |
68f8c317 JR |
270 | r = enable_event(han, event, None) |
271 | self.assertGreaterEqual(r, 0, strerror(r)) | |
36907cb5 | 272 | |
68f8c317 JR |
273 | #Context test |
274 | r = add_context(han, ctx, "sched_switch", "channel0") | |
275 | self.assertGreaterEqual(r, 0, strerror(r)) | |
276 | #Any channel | |
277 | r = add_context(han, ctx, "sched_wakeup", None) | |
278 | self.assertGreaterEqual(r, 0, strerror(r)) | |
279 | #All events | |
280 | r = add_context(han, ctx, None, None) | |
281 | self.assertGreaterEqual(r, 0, strerror(r)) | |
36907cb5 | 282 | |
68f8c317 JR |
283 | #Def. channel attr |
284 | channel_set_default_attr(dom, chattr) | |
285 | channel_set_default_attr(None, None) | |
36907cb5 | 286 | |
68f8c317 JR |
287 | #Ses Daemon alive |
288 | r = session_daemon_alive() | |
289 | self.assertTrue(r == 1 or r == 0, strerror(r)) | |
36907cb5 | 290 | |
68f8c317 JR |
291 | #Setting trace group |
292 | r = set_tracing_group("testing") | |
293 | self.assertGreaterEqual(r, 0, strerror(r)) | |
36907cb5 | 294 | |
36907cb5 | 295 | |
68f8c317 JR |
296 | r = start("test_otherf") |
297 | self.assertGreaterEqual(r, 0, strerror(r)) | |
298 | time.sleep(2) | |
36907cb5 | 299 | |
68f8c317 JR |
300 | r = stop("test_otherf") |
301 | self.assertGreaterEqual(r, 0, strerror(r)) | |
36907cb5 | 302 | |
68f8c317 JR |
303 | domains = list_domains("test_otherf") |
304 | self.assertTrue(domains[0].type == DOMAIN_KERNEL) | |
305 | self.assertTrue(domains[0].buf_type == BUFFER_GLOBAL) | |
36907cb5 | 306 | |
68f8c317 | 307 | del han |
36907cb5 | 308 | |
68f8c317 JR |
309 | r = destroy("test_otherf") |
310 | self.assertGreaterEqual(r, 0, strerror(r)) | |
311 | ||
312 | ||
313 | def ust_suite(): | |
314 | suite = unittest.TestSuite() | |
315 | suite.addTest(TestLttngPythonModule("test_ust_event")) | |
316 | suite.addTest(TestLttngPythonModule("test_ust_all_events")) | |
317 | return suite | |
318 | ||
319 | def kernel_suite(): | |
320 | suite = unittest.TestSuite() | |
321 | suite.addTest(TestLttngPythonModule("test_kernel_event")) | |
322 | suite.addTest(TestLttngPythonModule("test_kernel_all_events")) | |
323 | suite.addTest(TestLttngPythonModule("test_other_functions")) | |
324 | return suite | |
325 | ||
326 | if __name__ == '__main__': | |
327 | destroy("test_kernel_event") | |
328 | destroy("test_kernel_all_events") | |
329 | destroy("test_ust_all_events") | |
330 | destroy("test_ust_event") | |
331 | destroy("test_otherf") | |
332 | ||
333 | runner = unittest.TextTestRunner(verbosity=2) | |
334 | ||
335 | if os.geteuid() == 0: | |
336 | runner.run(kernel_suite()) | |
337 | ||
338 | runner.run(ust_suite()) |