Commit | Line | Data |
---|---|---|
8cfcd41c MD |
1 | #!/bin/bash |
2 | # | |
3 | # Copyright (C) - 2013 Christian Babeux <christian.babeux@efficios.com> | |
4 | # Copyright (C) - 2014 Mathieu Desnoyers <mathieu.desnoyers@efficios.com> | |
5 | # | |
6 | # This program is free software; you can redistribute it and/or modify it | |
7 | # under the terms of the GNU General Public License, version 2 only, as | |
8 | # published by the Free Software Foundation. | |
9 | # | |
10 | # This program is distributed in the hope that it will be useful, but WITHOUT | |
11 | # ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or | |
12 | # FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for | |
13 | # more details. | |
14 | # | |
15 | # You should have received a copy of the GNU General Public License along with | |
16 | # this program; if not, write to the Free Software Foundation, Inc., 51 | |
17 | # Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. | |
18 | ||
19 | TEST_DESC="Kernel tracer - System calls" | |
20 | ||
21 | CURDIR=$(dirname $0)/ | |
22 | TESTDIR=$CURDIR/../.. | |
02db71ba | 23 | NUM_TESTS=155 |
8cfcd41c MD |
24 | |
25 | # test command issues at least open and close system calls | |
26 | TESTCMD="cat /proc/cpuinfo > /dev/null" | |
27 | ||
28 | source $TESTDIR/utils/utils.sh | |
29 | ||
02db71ba DG |
30 | function validate_list() |
31 | { | |
32 | local session_name=$1 | |
33 | local event_name=$2 | |
34 | local opt=$3 | |
35 | ||
36 | out=$($TESTDIR/../src/bin/lttng/$LTTNG_BIN list $session_name $opt | grep $event_name) | |
37 | if [ -z "$out" ]; then | |
38 | fail "Validate syscall listing" | |
39 | diag "$event_name not found when listing $session_name (opt $opt)" | |
40 | else | |
41 | pass "Validate syscall listing. Found $event_name." | |
42 | fi | |
43 | } | |
44 | ||
45 | function test_syscall_event_list() | |
46 | { | |
47 | local EVENT_NAME="getpid" | |
48 | ||
49 | diag "Syscall event listing" | |
50 | ||
51 | validate_list "" $EVENT_NAME "-k --syscall" | |
52 | } | |
53 | ||
54 | function test_syscall_simple_list() | |
55 | { | |
56 | TRACE_PATH=$(mktemp -d) | |
57 | SESSION_NAME="kernel_syscall_simple_list" | |
58 | local EVENT_NAME="close" | |
59 | ||
60 | diag "Syscall simple listing" | |
61 | ||
62 | create_lttng_session $SESSION_NAME $TRACE_PATH | |
63 | ||
64 | lttng_enable_kernel_syscall_ok $SESSION_NAME $EVENT_NAME | |
65 | ||
66 | validate_list $SESSION_NAME $EVENT_NAME | |
67 | ||
68 | start_lttng_tracing | |
69 | eval ${TESTCMD} | |
70 | stop_lttng_tracing | |
71 | ||
72 | # ensure each is there. | |
73 | validate_trace_exp "-e syscall_entry_$EVENT_NAME: -e compat_syscall_entry_$EVENT_NAME:" $TRACE_PATH | |
74 | validate_trace_exp "-e syscall_exit_$EVENT_NAME: -e compat_syscall_exit_$EVENT_NAME:" $TRACE_PATH | |
75 | ||
76 | # ensure trace only contains those. | |
77 | validate_trace_only_exp "-e syscall_entry_$EVENT_NAME: -e compat_syscall_entry_$EVENT_NAME: -e syscall_exit_$EVENT_NAME: -e compat_syscall_exit_$EVENT_NAME:" $TRACE_PATH | |
78 | ||
79 | destroy_lttng_session $SESSION_NAME | |
80 | ||
81 | rm -rf $TRACE_PATH | |
82 | } | |
83 | ||
84 | function test_syscall_simple_list_two() | |
85 | { | |
86 | TRACE_PATH=$(mktemp -d) | |
87 | SESSION_NAME="kernel_syscall_simple_list_two" | |
88 | local EVENT_NAME="close" | |
89 | local EVENT_NAME2="read" | |
90 | ||
91 | diag "Syscall simple listing" | |
92 | ||
93 | create_lttng_session $SESSION_NAME $TRACE_PATH | |
94 | ||
95 | lttng_enable_kernel_syscall_ok $SESSION_NAME $EVENT_NAME | |
96 | lttng_enable_kernel_syscall_ok $SESSION_NAME $EVENT_NAME2 | |
97 | ||
98 | validate_list $SESSION_NAME $EVENT_NAME | |
99 | validate_list $SESSION_NAME $EVENT_NAME2 | |
100 | ||
101 | start_lttng_tracing | |
102 | eval ${TESTCMD} | |
103 | stop_lttng_tracing | |
104 | ||
105 | # ensure each is there. | |
106 | validate_trace_exp "-e syscall_entry_$EVENT_NAME: -e compat_syscall_entry_$EVENT_NAME:" $TRACE_PATH | |
107 | validate_trace_exp "-e syscall_exit_$EVENT_NAME: -e compat_syscall_exit_$EVENT_NAME:" $TRACE_PATH | |
108 | ||
109 | # ensure each is there. | |
110 | validate_trace_exp "-e syscall_entry_$EVENT_NAME2: -e compat_syscall_entry_$EVENT_NAME2:" $TRACE_PATH | |
111 | validate_trace_exp "-e syscall_exit_$EVENT_NAME2: -e compat_syscall_exit_$EVENT_NAME2:" $TRACE_PATH | |
112 | ||
113 | # ensure trace only contains those. | |
114 | validate_trace_only_exp "-e syscall_entry_$EVENT_NAME: -e compat_syscall_entry_$EVENT_NAME: -e syscall_exit_$EVENT_NAME: -e compat_syscall_exit_$EVENT_NAME: -e syscall_entry_$EVENT_NAME2: -e compat_syscall_entry_$EVENT_NAME2: -e syscall_exit_$EVENT_NAME2: -e compat_syscall_exit_$EVENT_NAME2:" $TRACE_PATH | |
115 | ||
116 | destroy_lttng_session $SESSION_NAME | |
117 | ||
118 | rm -rf $TRACE_PATH | |
119 | } | |
120 | ||
8cfcd41c MD |
121 | function test_syscall_single() |
122 | { | |
123 | TRACE_PATH=$(mktemp -d) | |
124 | SESSION_NAME="kernel_syscall_single" | |
125 | ||
031f232e DG |
126 | diag "Syscall trace single" |
127 | ||
8cfcd41c MD |
128 | create_lttng_session $SESSION_NAME $TRACE_PATH |
129 | ||
130 | lttng_enable_kernel_syscall_ok $SESSION_NAME "open" | |
131 | ||
132 | start_lttng_tracing | |
133 | eval ${TESTCMD} | |
134 | stop_lttng_tracing | |
135 | ||
136 | # ensure each is there. | |
a39bd0ab MD |
137 | validate_trace_exp "-e syscall_entry_open: -e compat_syscall_entry_open:" $TRACE_PATH |
138 | validate_trace_exp "-e syscall_exit_open: -e compat_syscall_exit_open:" $TRACE_PATH | |
8cfcd41c MD |
139 | |
140 | # ensure trace only contains those. | |
a39bd0ab | 141 | validate_trace_only_exp "-e syscall_entry_open: -e compat_syscall_entry_open: -e syscall_exit_open: -e compat_syscall_exit_open:" $TRACE_PATH |
8cfcd41c MD |
142 | |
143 | destroy_lttng_session $SESSION_NAME | |
144 | ||
145 | rm -rf $TRACE_PATH | |
146 | } | |
147 | ||
148 | function test_syscall_two() | |
149 | { | |
150 | TRACE_PATH=$(mktemp -d) | |
151 | SESSION_NAME="kernel_syscall_two" | |
152 | ||
031f232e DG |
153 | diag "Syscall trace two events" |
154 | ||
8cfcd41c MD |
155 | create_lttng_session $SESSION_NAME $TRACE_PATH |
156 | ||
157 | lttng_enable_kernel_syscall_ok $SESSION_NAME "open" | |
158 | lttng_enable_kernel_syscall_ok $SESSION_NAME "close" | |
159 | ||
160 | start_lttng_tracing | |
161 | eval ${TESTCMD} | |
162 | stop_lttng_tracing | |
163 | ||
164 | # ensure each is there. | |
a39bd0ab MD |
165 | validate_trace_exp "-e syscall_entry_open: -e compat_syscall_entry_open:" $TRACE_PATH |
166 | validate_trace_exp "-e syscall_exit_open: -e compat_syscall_exit_open:" $TRACE_PATH | |
167 | validate_trace_exp "-e syscall_entry_close: -e compat_syscall_entry_close:" $TRACE_PATH | |
168 | validate_trace_exp "-e syscall_exit_close: -e compat_syscall_exit_close:" $TRACE_PATH | |
8cfcd41c MD |
169 | |
170 | # ensure trace only contains those. | |
a39bd0ab | 171 | validate_trace_only_exp "-e syscall_entry_open: -e compat_syscall_entry_open: -e syscall_exit_open: -e compat_syscall_exit_open: -e syscall_entry_close: -e compat_syscall_entry_close: -e syscall_exit_close: -e compat_syscall_exit_close:" $TRACE_PATH |
8cfcd41c MD |
172 | |
173 | destroy_lttng_session $SESSION_NAME | |
174 | ||
175 | rm -rf $TRACE_PATH | |
176 | } | |
177 | ||
178 | function test_syscall_all() | |
179 | { | |
180 | TRACE_PATH=$(mktemp -d) | |
181 | SESSION_NAME="kernel_syscall_all" | |
182 | ||
031f232e DG |
183 | diag "Syscall trace all events" |
184 | ||
8cfcd41c MD |
185 | create_lttng_session $SESSION_NAME $TRACE_PATH |
186 | ||
187 | # enable all syscalls | |
188 | lttng_enable_kernel_syscall_ok $SESSION_NAME | |
189 | ||
190 | start_lttng_tracing | |
191 | eval ${TESTCMD} | |
192 | stop_lttng_tracing | |
193 | ||
194 | # ensure at least open and close are there. | |
a39bd0ab MD |
195 | validate_trace_exp "-e syscall_entry_open: -e compat_syscall_entry_open:" $TRACE_PATH |
196 | validate_trace_exp "-e syscall_exit_open: -e compat_syscall_exit_open:" $TRACE_PATH | |
197 | validate_trace_exp "-e syscall_entry_close: -e compat_syscall_entry_close:" $TRACE_PATH | |
198 | validate_trace_exp "-e syscall_exit_close: -e compat_syscall_exit_close:" $TRACE_PATH | |
8cfcd41c MD |
199 | # trace may contain other syscalls. |
200 | ||
201 | destroy_lttng_session $SESSION_NAME | |
202 | ||
203 | rm -rf $TRACE_PATH | |
204 | } | |
205 | ||
206 | function test_syscall_all_disable_one() | |
207 | { | |
208 | TRACE_PATH=$(mktemp -d) | |
209 | SESSION_NAME="kernel_syscall_all_disable_one" | |
210 | ||
031f232e DG |
211 | diag "Syscall trace all events and disable one" |
212 | ||
8cfcd41c MD |
213 | create_lttng_session $SESSION_NAME $TRACE_PATH |
214 | ||
215 | # enable all syscalls | |
216 | lttng_enable_kernel_syscall_ok $SESSION_NAME | |
217 | # disable open system call | |
218 | lttng_disable_kernel_syscall_ok $SESSION_NAME "open" | |
219 | ||
220 | start_lttng_tracing | |
221 | eval ${TESTCMD} | |
222 | stop_lttng_tracing | |
223 | ||
224 | # ensure "open" syscall is not there. | |
a39bd0ab | 225 | validate_trace_only_exp "-v -e syscall_entry_open: -e compat_syscall_entry_open: -e syscall_exit_open: -e compat_syscall_exit_open:" $TRACE_PATH |
8cfcd41c MD |
226 | |
227 | # ensure "close" syscall is there. | |
a39bd0ab MD |
228 | validate_trace_exp "-e syscall_entry_close: -e compat_syscall_entry_close:" $TRACE_PATH |
229 | validate_trace_exp "-e syscall_exit_close: -e compat_syscall_exit_close:" $TRACE_PATH | |
8cfcd41c MD |
230 | |
231 | destroy_lttng_session $SESSION_NAME | |
232 | ||
233 | rm -rf $TRACE_PATH | |
234 | } | |
235 | ||
236 | function test_syscall_all_disable_two() | |
237 | { | |
238 | TRACE_PATH=$(mktemp -d) | |
239 | SESSION_NAME="kernel_syscall_all_disable_two" | |
240 | ||
031f232e DG |
241 | diag "Syscall trace all events and disable two" |
242 | ||
8cfcd41c MD |
243 | create_lttng_session $SESSION_NAME $TRACE_PATH |
244 | ||
245 | # enable all syscalls | |
246 | lttng_enable_kernel_syscall_ok $SESSION_NAME | |
247 | # disable open system call | |
248 | lttng_disable_kernel_syscall_ok $SESSION_NAME "open" | |
249 | lttng_disable_kernel_syscall_ok $SESSION_NAME "close" | |
250 | ||
251 | start_lttng_tracing | |
252 | # generates open, close, execve (at least) | |
253 | eval ${TESTCMD} | |
254 | stop_lttng_tracing | |
255 | ||
256 | # ensure "open" and "close" syscalls are not there. | |
a39bd0ab | 257 | validate_trace_only_exp "-v -e syscall_entry_open: -e compat_syscall_entry_open: -e syscall_exit_open: -e compat_syscall_exit_open: -e syscall_entry_close: -e compat_syscall_entry_close: -e syscall_exit_close: -e compat_syscall_exit_close:" $TRACE_PATH |
8cfcd41c MD |
258 | |
259 | # ensure "execve" syscall is there. | |
a39bd0ab MD |
260 | validate_trace_exp "-e syscall_entry_execve: -e compat_syscall_entry_execve:" $TRACE_PATH |
261 | validate_trace_exp "-e syscall_exit_execve: -e compat_syscall_exit_execve:" $TRACE_PATH | |
8cfcd41c MD |
262 | |
263 | destroy_lttng_session $SESSION_NAME | |
264 | ||
265 | rm -rf $TRACE_PATH | |
266 | } | |
267 | ||
268 | function test_syscall_enable_all_disable_all() | |
269 | { | |
270 | TRACE_PATH=$(mktemp -d) | |
271 | SESSION_NAME="kernel_syscall_enable_all_disable_all" | |
272 | ||
031f232e DG |
273 | diag "Syscall trace all events and disable all" |
274 | ||
8cfcd41c MD |
275 | create_lttng_session $SESSION_NAME $TRACE_PATH |
276 | ||
277 | # enable all system calls | |
278 | lttng_enable_kernel_syscall_ok $SESSION_NAME | |
279 | # disable all system calls | |
280 | lttng_disable_kernel_syscall_ok $SESSION_NAME | |
281 | ||
282 | start_lttng_tracing | |
283 | # generates open, close, execve (at least) | |
284 | eval ${TESTCMD} | |
285 | stop_lttng_tracing | |
286 | ||
287 | # ensure nothing has been traced. | |
288 | validate_trace_empty $TRACE_PATH | |
289 | ||
290 | destroy_lttng_session $SESSION_NAME | |
291 | ||
292 | rm -rf $TRACE_PATH | |
293 | } | |
294 | ||
295 | function test_syscall_enable_all_disable_all_enable_all() | |
296 | { | |
297 | TRACE_PATH=$(mktemp -d) | |
298 | SESSION_NAME="kernel_syscall_enable_all_disable_all_enable_all" | |
299 | ||
031f232e DG |
300 | diag "Syscall trace all events and enable/disable all" |
301 | ||
8cfcd41c MD |
302 | create_lttng_session $SESSION_NAME $TRACE_PATH |
303 | ||
304 | # enable all system calls | |
305 | lttng_enable_kernel_syscall_ok $SESSION_NAME | |
306 | # disable all system calls | |
307 | lttng_disable_kernel_syscall_ok $SESSION_NAME | |
308 | # enable all system calls | |
309 | lttng_enable_kernel_syscall_ok $SESSION_NAME | |
310 | ||
311 | start_lttng_tracing | |
312 | # generates open, close, execve (at least) | |
313 | eval ${TESTCMD} | |
314 | stop_lttng_tracing | |
315 | ||
316 | # ensure at least open and close are there. | |
a39bd0ab MD |
317 | validate_trace_exp "-e syscall_entry_open: -e compat_syscall_entry_open:" $TRACE_PATH |
318 | validate_trace_exp "-e syscall_exit_open: -e compat_syscall_exit_open:" $TRACE_PATH | |
319 | validate_trace_exp "-e syscall_entry_close: -e compat_syscall_entry_close:" $TRACE_PATH | |
320 | validate_trace_exp "-e syscall_exit_close: -e compat_syscall_exit_close:" $TRACE_PATH | |
8cfcd41c MD |
321 | # trace may contain other syscalls. |
322 | ||
323 | destroy_lttng_session $SESSION_NAME | |
324 | ||
325 | rm -rf $TRACE_PATH | |
326 | } | |
327 | ||
328 | function test_syscall_enable_all_disable_all_twice() | |
329 | { | |
330 | TRACE_PATH=$(mktemp -d) | |
331 | SESSION_NAME="kernel_syscall_enable_all_disable_all_twice" | |
332 | ||
031f232e DG |
333 | diag "Syscall trace all events and enable/disable all twice" |
334 | ||
8cfcd41c MD |
335 | create_lttng_session $SESSION_NAME $TRACE_PATH |
336 | ||
337 | # enable all system calls | |
338 | lttng_enable_kernel_syscall_ok $SESSION_NAME | |
339 | # disable all system calls | |
340 | lttng_disable_kernel_syscall_ok $SESSION_NAME | |
341 | # enable all system calls | |
342 | lttng_enable_kernel_syscall_ok $SESSION_NAME | |
343 | # disable all system calls | |
344 | lttng_disable_kernel_syscall_ok $SESSION_NAME | |
345 | ||
346 | start_lttng_tracing | |
347 | # generates open, close, execve (at least) | |
348 | eval ${TESTCMD} | |
349 | stop_lttng_tracing | |
350 | ||
351 | # ensure nothing has been traced. | |
352 | validate_trace_empty $TRACE_PATH | |
353 | ||
354 | destroy_lttng_session $SESSION_NAME | |
355 | ||
356 | rm -rf $TRACE_PATH | |
357 | } | |
358 | ||
359 | function test_syscall_enable_one_disable_one() | |
360 | { | |
361 | TRACE_PATH=$(mktemp -d) | |
362 | SESSION_NAME="kernel_syscall_enable_one_disable_one" | |
363 | ||
031f232e DG |
364 | diag "Syscall trace one event and disable one" |
365 | ||
8cfcd41c MD |
366 | create_lttng_session $SESSION_NAME $TRACE_PATH |
367 | ||
368 | # enable open system call | |
369 | lttng_enable_kernel_syscall_ok $SESSION_NAME "open" | |
370 | # disable open system call | |
371 | lttng_disable_kernel_syscall_ok $SESSION_NAME "open" | |
372 | ||
373 | start_lttng_tracing | |
374 | # generates open, close, execve (at least) | |
375 | eval ${TESTCMD} | |
376 | stop_lttng_tracing | |
377 | ||
378 | # ensure nothing has been traced. | |
379 | validate_trace_empty $TRACE_PATH | |
380 | ||
381 | destroy_lttng_session $SESSION_NAME | |
382 | ||
383 | rm -rf $TRACE_PATH | |
384 | } | |
385 | ||
386 | function test_syscall_enable_two_disable_two() | |
387 | { | |
388 | TRACE_PATH=$(mktemp -d) | |
389 | SESSION_NAME="kernel_syscall_enable_two_disable_two" | |
390 | ||
031f232e DG |
391 | diag "Syscall trace two events and disable two" |
392 | ||
8cfcd41c MD |
393 | create_lttng_session $SESSION_NAME $TRACE_PATH |
394 | ||
395 | # enable open and close system calls | |
396 | lttng_enable_kernel_syscall_ok $SESSION_NAME "open" | |
397 | lttng_enable_kernel_syscall_ok $SESSION_NAME "close" | |
398 | # disable open and close system calls | |
399 | lttng_disable_kernel_syscall_ok $SESSION_NAME "open" | |
400 | lttng_disable_kernel_syscall_ok $SESSION_NAME "close" | |
401 | ||
402 | start_lttng_tracing | |
403 | # generates open, close, execve (at least) | |
404 | eval ${TESTCMD} | |
405 | stop_lttng_tracing | |
406 | ||
407 | # ensure nothing has been traced. | |
408 | validate_trace_empty $TRACE_PATH | |
409 | ||
410 | destroy_lttng_session $SESSION_NAME | |
411 | ||
412 | rm -rf $TRACE_PATH | |
413 | } | |
414 | ||
415 | function test_syscall_enable_two_disable_one() | |
416 | { | |
417 | TRACE_PATH=$(mktemp -d) | |
418 | SESSION_NAME="kernel_syscall_enable_two_disable_one" | |
419 | ||
031f232e DG |
420 | diag "Syscall trace two events and disable one" |
421 | ||
8cfcd41c MD |
422 | create_lttng_session $SESSION_NAME $TRACE_PATH |
423 | ||
424 | # enable open and close system calls | |
425 | lttng_enable_kernel_syscall_ok $SESSION_NAME "open" | |
426 | lttng_enable_kernel_syscall_ok $SESSION_NAME "close" | |
427 | # disable close system call | |
428 | lttng_disable_kernel_syscall_ok $SESSION_NAME "close" | |
429 | ||
430 | start_lttng_tracing | |
431 | # generates open, close, execve (at least) | |
432 | eval ${TESTCMD} | |
433 | stop_lttng_tracing | |
434 | ||
435 | # ensure open is there. | |
a39bd0ab MD |
436 | validate_trace_exp "-e syscall_entry_open: -e compat_syscall_entry_open:" $TRACE_PATH |
437 | validate_trace_exp "-e syscall_exit_open: -e compat_syscall_exit_open:" $TRACE_PATH | |
8cfcd41c MD |
438 | |
439 | # ensure trace only contains those. | |
a39bd0ab | 440 | validate_trace_only_exp "-e syscall_entry_open: -e compat_syscall_entry_open: -e syscall_exit_open: -e compat_syscall_exit_open:" $TRACE_PATH |
8cfcd41c MD |
441 | |
442 | destroy_lttng_session $SESSION_NAME | |
443 | ||
444 | rm -rf $TRACE_PATH | |
445 | } | |
446 | ||
447 | function test_syscall_disable_twice() | |
448 | { | |
449 | TRACE_PATH=$(mktemp -d) | |
450 | SESSION_NAME="kernel_syscall_disable_twice" | |
451 | ||
031f232e DG |
452 | diag "Syscall trace one event and disable twice" |
453 | ||
8cfcd41c MD |
454 | create_lttng_session $SESSION_NAME $TRACE_PATH |
455 | ||
456 | lttng_enable_kernel_syscall_ok $SESSION_NAME "open" | |
457 | # First disable will succeed | |
458 | lttng_disable_kernel_syscall_ok $SESSION_NAME "open" | |
459 | # Second disable will fail | |
460 | lttng_disable_kernel_syscall_fail $SESSION_NAME "open" | |
461 | ||
462 | destroy_lttng_session $SESSION_NAME | |
463 | ||
464 | rm -rf $TRACE_PATH | |
465 | } | |
466 | ||
467 | function test_syscall_disable_all_twice() | |
468 | { | |
469 | TRACE_PATH=$(mktemp -d) | |
470 | SESSION_NAME="kernel_syscall_disable_all_twice" | |
471 | ||
031f232e DG |
472 | diag "Syscall trace all events and disable all twice" |
473 | ||
8cfcd41c MD |
474 | create_lttng_session $SESSION_NAME $TRACE_PATH |
475 | ||
476 | lttng_enable_kernel_syscall_ok $SESSION_NAME | |
477 | # First disable will succeed | |
478 | lttng_disable_kernel_syscall_ok $SESSION_NAME | |
479 | # Second disable will fail | |
480 | lttng_disable_kernel_syscall_fail $SESSION_NAME | |
481 | ||
482 | destroy_lttng_session $SESSION_NAME | |
483 | ||
484 | rm -rf $TRACE_PATH | |
485 | } | |
486 | ||
487 | ||
488 | function test_syscall_enable_unknown() | |
489 | { | |
490 | TRACE_PATH=$(mktemp -d) | |
491 | SESSION_NAME="kernel_syscall_enable_unknown" | |
492 | ||
031f232e DG |
493 | diag "Syscall enable an unknown event" |
494 | ||
8cfcd41c MD |
495 | create_lttng_session $SESSION_NAME $TRACE_PATH |
496 | ||
497 | lttng_enable_kernel_syscall_fail $SESSION_NAME "thissyscallcannotexist" | |
498 | ||
499 | destroy_lttng_session $SESSION_NAME | |
500 | ||
501 | rm -rf $TRACE_PATH | |
502 | } | |
503 | ||
504 | function test_syscall_enable_all_enable_one() | |
505 | { | |
506 | TRACE_PATH=$(mktemp -d) | |
507 | SESSION_NAME="kernel_syscall_enable_all_enable_one" | |
508 | ||
031f232e DG |
509 | diag "Syscall enable all and enable one" |
510 | ||
8cfcd41c MD |
511 | create_lttng_session $SESSION_NAME $TRACE_PATH |
512 | ||
513 | lttng_enable_kernel_syscall_ok $SESSION_NAME | |
514 | # Enabling an event already enabled fails. | |
515 | lttng_enable_kernel_syscall_fail $SESSION_NAME "open" | |
516 | ||
517 | destroy_lttng_session $SESSION_NAME | |
518 | ||
519 | rm -rf $TRACE_PATH | |
520 | } | |
521 | ||
522 | function test_syscall_disable_all_disable_one() | |
523 | { | |
524 | TRACE_PATH=$(mktemp -d) | |
525 | SESSION_NAME="kernel_syscall_enable_all_enable_one" | |
526 | ||
031f232e DG |
527 | diag "Syscall disable all and disable one" |
528 | ||
8cfcd41c MD |
529 | create_lttng_session $SESSION_NAME $TRACE_PATH |
530 | ||
531 | lttng_enable_kernel_syscall_ok $SESSION_NAME | |
532 | lttng_disable_kernel_syscall_ok $SESSION_NAME | |
533 | # Disabling an event already disabled fails. | |
534 | lttng_disable_kernel_syscall_fail $SESSION_NAME "open" | |
535 | ||
536 | destroy_lttng_session $SESSION_NAME | |
537 | ||
538 | rm -rf $TRACE_PATH | |
539 | } | |
540 | ||
d96f6315 MD |
541 | function test_syscall_enable_channel_disable_all() |
542 | { | |
543 | TRACE_PATH=$(mktemp -d) | |
544 | SESSION_NAME="kernel_syscall_enable_channel_disable_all" | |
545 | CHANNEL_NAME="channel" | |
546 | ||
031f232e DG |
547 | diag "Syscall enable channel and disable all" |
548 | ||
d96f6315 MD |
549 | create_lttng_session $SESSION_NAME $TRACE_PATH |
550 | ||
551 | lttng_enable_kernel_channel_ok $SESSION_NAME $CHANNEL_NAME | |
552 | lttng_disable_kernel_syscall_fail $SESSION_NAME "-a" $CHANNEL_NAME | |
553 | ||
554 | destroy_lttng_session $SESSION_NAME | |
555 | ||
556 | rm -rf $TRACE_PATH | |
557 | } | |
558 | ||
559 | function test_syscall_enable_channel_disable_one() | |
560 | { | |
561 | TRACE_PATH=$(mktemp -d) | |
562 | SESSION_NAME="kernel_syscall_enable_channel_disable_all" | |
563 | CHANNEL_NAME="channel" | |
564 | ||
031f232e DG |
565 | diag "Syscall enable channel and disable one" |
566 | ||
d96f6315 MD |
567 | create_lttng_session $SESSION_NAME $TRACE_PATH |
568 | ||
569 | lttng_enable_kernel_channel_ok $SESSION_NAME $CHANNEL_NAME | |
570 | lttng_disable_kernel_syscall_fail $SESSION_NAME "open" $CHANNEL_NAME | |
571 | ||
572 | destroy_lttng_session $SESSION_NAME | |
573 | ||
574 | rm -rf $TRACE_PATH | |
575 | } | |
576 | ||
8cfcd41c MD |
577 | # MUST set TESTDIR before calling those functions |
578 | plan_tests $NUM_TESTS | |
579 | ||
580 | print_test_banner "$TEST_DESC" | |
581 | ||
582 | if [ "$(id -u)" == "0" ]; then | |
583 | isroot=1 | |
584 | else | |
585 | isroot=0 | |
586 | fi | |
587 | ||
588 | skip $isroot "Root access is needed. Skipping all tests." $NUM_TESTS || | |
589 | { | |
590 | start_lttng_sessiond | |
591 | ||
02db71ba DG |
592 | test_syscall_event_list |
593 | test_syscall_simple_list | |
594 | test_syscall_simple_list_two | |
8cfcd41c MD |
595 | test_syscall_single |
596 | test_syscall_two | |
597 | test_syscall_all | |
598 | test_syscall_all_disable_one | |
599 | test_syscall_all_disable_two | |
600 | test_syscall_enable_all_disable_all | |
601 | test_syscall_enable_all_disable_all_enable_all | |
602 | test_syscall_enable_all_disable_all_twice | |
603 | test_syscall_enable_one_disable_one | |
604 | test_syscall_enable_two_disable_two | |
605 | test_syscall_enable_two_disable_one | |
606 | test_syscall_disable_twice | |
607 | test_syscall_disable_all_twice | |
608 | test_syscall_enable_unknown | |
609 | test_syscall_enable_all_enable_one | |
610 | test_syscall_disable_all_disable_one | |
d96f6315 MD |
611 | test_syscall_enable_channel_disable_all |
612 | test_syscall_enable_channel_disable_one | |
8cfcd41c MD |
613 | |
614 | stop_lttng_sessiond | |
615 | } |