testapp: gen-syscall-events: use dynamic paths provided via args
[lttng-tools.git] / tests / regression / kernel / test_syscall
CommitLineData
8cfcd41c
MD
1#!/bin/bash
2#
9d16b343
MJ
3# Copyright (C) 2013 Christian Babeux <christian.babeux@efficios.com>
4# Copyright (C) 2014 Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
8cfcd41c 5#
9d16b343 6# SPDX-License-Identifier: GPL-2.0-only
8cfcd41c 7#
8cfcd41c
MD
8
9TEST_DESC="Kernel tracer - System calls"
10
11CURDIR=$(dirname $0)/
12TESTDIR=$CURDIR/../..
0ee507ec 13NUM_TESTS=214
8cfcd41c 14
c8e51d15
FD
15# `gen-syscall-event` starts and waits for the creation a file passed by
16# arguments to start executing 3 syscalls (open,read,close) and returning.
17TESTCMD="$TESTDIR/utils/testapp/gen-syscall-events/gen-syscall-events"
8cfcd41c
MD
18
19source $TESTDIR/utils/utils.sh
20
c8e51d15
FD
21function trace_testapp()
22{
23 local start_file_sync
24 start_file_sync=$(mktemp -u)
25
26 # Clear all entries from the resource tracker
27 lttng_untrack_kernel_all_ok
28
29 # Launch the testapp and save its Process ID
ca342eaf 30 ./"$TESTCMD" "$start_file_sync" "/proc/cpuinfo" "/proc/cmdline" &
c8e51d15
FD
31 PID=$!
32
33 # Set LTTng to track this PID and start the tracing
34 lttng_track_pid_ok $PID
35
36 start_lttng_tracing_ok
37
38 # Create start file to launch the execution of the workload by the
39 # test app
40 touch "$start_file_sync"
41
42 wait $PID
43
44 stop_lttng_tracing_ok
45
46 # Clean up the synchronization file
47 rm -f "$start_file_sync"
48}
49
02db71ba
DG
50function validate_list()
51{
52 local session_name=$1
53 local event_name=$2
54 local opt=$3
55
56 out=$($TESTDIR/../src/bin/lttng/$LTTNG_BIN list $session_name $opt | grep $event_name)
57 if [ -z "$out" ]; then
58 fail "Validate syscall listing"
59 diag "$event_name not found when listing $session_name (opt $opt)"
60 else
61 pass "Validate syscall listing. Found $event_name."
62 fi
63}
64
65function test_syscall_event_list()
66{
67 local EVENT_NAME="getpid"
68
69 diag "Syscall event listing"
70
71 validate_list "" $EVENT_NAME "-k --syscall"
72}
73
74function test_syscall_simple_list()
75{
76 TRACE_PATH=$(mktemp -d)
77 SESSION_NAME="kernel_syscall_simple_list"
78 local EVENT_NAME="close"
79
80 diag "Syscall simple listing"
81
bf6ae429 82 create_lttng_session_ok $SESSION_NAME $TRACE_PATH
02db71ba
DG
83
84 lttng_enable_kernel_syscall_ok $SESSION_NAME $EVENT_NAME
85
86 validate_list $SESSION_NAME $EVENT_NAME
87
c8e51d15 88 trace_testapp
02db71ba 89
c8e51d15 90 # ensure all events are in the trace.
02db71ba
DG
91 validate_trace_exp "-e syscall_entry_$EVENT_NAME: -e compat_syscall_entry_$EVENT_NAME:" $TRACE_PATH
92 validate_trace_exp "-e syscall_exit_$EVENT_NAME: -e compat_syscall_exit_$EVENT_NAME:" $TRACE_PATH
93
94 # ensure trace only contains those.
95 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
96
67b4c664 97 destroy_lttng_session_ok $SESSION_NAME
02db71ba
DG
98
99 rm -rf $TRACE_PATH
100}
101
102function test_syscall_simple_list_two()
103{
104 TRACE_PATH=$(mktemp -d)
105 SESSION_NAME="kernel_syscall_simple_list_two"
106 local EVENT_NAME="close"
107 local EVENT_NAME2="read"
108
109 diag "Syscall simple listing"
110
bf6ae429 111 create_lttng_session_ok $SESSION_NAME $TRACE_PATH
02db71ba
DG
112
113 lttng_enable_kernel_syscall_ok $SESSION_NAME $EVENT_NAME
114 lttng_enable_kernel_syscall_ok $SESSION_NAME $EVENT_NAME2
115
116 validate_list $SESSION_NAME $EVENT_NAME
117 validate_list $SESSION_NAME $EVENT_NAME2
118
c8e51d15 119 trace_testapp
02db71ba 120
c8e51d15 121 # ensure all events are in the trace.
02db71ba
DG
122 validate_trace_exp "-e syscall_entry_$EVENT_NAME: -e compat_syscall_entry_$EVENT_NAME:" $TRACE_PATH
123 validate_trace_exp "-e syscall_exit_$EVENT_NAME: -e compat_syscall_exit_$EVENT_NAME:" $TRACE_PATH
124
02db71ba
DG
125 validate_trace_exp "-e syscall_entry_$EVENT_NAME2: -e compat_syscall_entry_$EVENT_NAME2:" $TRACE_PATH
126 validate_trace_exp "-e syscall_exit_$EVENT_NAME2: -e compat_syscall_exit_$EVENT_NAME2:" $TRACE_PATH
127
128 # ensure trace only contains those.
129 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
130
67b4c664 131 destroy_lttng_session_ok $SESSION_NAME
02db71ba
DG
132
133 rm -rf $TRACE_PATH
134}
135
8cfcd41c
MD
136function test_syscall_single()
137{
138 TRACE_PATH=$(mktemp -d)
139 SESSION_NAME="kernel_syscall_single"
140
031f232e
DG
141 diag "Syscall trace single"
142
bf6ae429 143 create_lttng_session_ok $SESSION_NAME $TRACE_PATH
8cfcd41c 144
8192bd8f 145 lttng_enable_kernel_syscall_ok $SESSION_NAME "openat"
8cfcd41c 146
c8e51d15 147 trace_testapp
8cfcd41c 148
c8e51d15 149 # ensure all events are in the trace.
8192bd8f
FD
150 validate_trace_exp "-e syscall_entry_openat: -e compat_syscall_entry_openat:" $TRACE_PATH
151 validate_trace_exp "-e syscall_exit_openat: -e compat_syscall_exit_openat:" $TRACE_PATH
8cfcd41c
MD
152
153 # ensure trace only contains those.
8192bd8f 154 validate_trace_only_exp "-e syscall_entry_openat: -e compat_syscall_entry_openat: -e syscall_exit_openat: -e compat_syscall_exit_openat:" $TRACE_PATH
8cfcd41c 155
67b4c664 156 destroy_lttng_session_ok $SESSION_NAME
8cfcd41c
MD
157
158 rm -rf $TRACE_PATH
159}
160
161function test_syscall_two()
162{
163 TRACE_PATH=$(mktemp -d)
164 SESSION_NAME="kernel_syscall_two"
165
031f232e
DG
166 diag "Syscall trace two events"
167
bf6ae429 168 create_lttng_session_ok $SESSION_NAME $TRACE_PATH
8cfcd41c 169
8192bd8f 170 lttng_enable_kernel_syscall_ok $SESSION_NAME "openat"
8cfcd41c
MD
171 lttng_enable_kernel_syscall_ok $SESSION_NAME "close"
172
c8e51d15 173 trace_testapp
8cfcd41c 174
c8e51d15 175 # ensure all events are in the trace.
8192bd8f
FD
176 validate_trace_exp "-e syscall_entry_openat: -e compat_syscall_entry_openat:" $TRACE_PATH
177 validate_trace_exp "-e syscall_exit_openat: -e compat_syscall_exit_openat:" $TRACE_PATH
a39bd0ab
MD
178 validate_trace_exp "-e syscall_entry_close: -e compat_syscall_entry_close:" $TRACE_PATH
179 validate_trace_exp "-e syscall_exit_close: -e compat_syscall_exit_close:" $TRACE_PATH
8cfcd41c
MD
180
181 # ensure trace only contains those.
8192bd8f 182 validate_trace_only_exp "-e syscall_entry_openat: -e compat_syscall_entry_openat: -e syscall_exit_openat: -e compat_syscall_exit_openat: -e syscall_entry_close: -e compat_syscall_entry_close: -e syscall_exit_close: -e compat_syscall_exit_close:" $TRACE_PATH
8cfcd41c 183
67b4c664 184 destroy_lttng_session_ok $SESSION_NAME
8cfcd41c
MD
185
186 rm -rf $TRACE_PATH
187}
188
189function test_syscall_all()
190{
191 TRACE_PATH=$(mktemp -d)
192 SESSION_NAME="kernel_syscall_all"
193
031f232e
DG
194 diag "Syscall trace all events"
195
bf6ae429 196 create_lttng_session_ok $SESSION_NAME $TRACE_PATH
8cfcd41c
MD
197
198 # enable all syscalls
199 lttng_enable_kernel_syscall_ok $SESSION_NAME
200
c8e51d15 201 trace_testapp
8cfcd41c
MD
202
203 # ensure at least open and close are there.
8192bd8f
FD
204 validate_trace_exp "-e syscall_entry_openat: -e compat_syscall_entry_openat:" $TRACE_PATH
205 validate_trace_exp "-e syscall_exit_openat: -e compat_syscall_exit_openat:" $TRACE_PATH
a39bd0ab
MD
206 validate_trace_exp "-e syscall_entry_close: -e compat_syscall_entry_close:" $TRACE_PATH
207 validate_trace_exp "-e syscall_exit_close: -e compat_syscall_exit_close:" $TRACE_PATH
8cfcd41c
MD
208 # trace may contain other syscalls.
209
67b4c664 210 destroy_lttng_session_ok $SESSION_NAME
8cfcd41c
MD
211
212 rm -rf $TRACE_PATH
213}
214
215function test_syscall_all_disable_one()
216{
217 TRACE_PATH=$(mktemp -d)
218 SESSION_NAME="kernel_syscall_all_disable_one"
219
031f232e
DG
220 diag "Syscall trace all events and disable one"
221
bf6ae429 222 create_lttng_session_ok $SESSION_NAME $TRACE_PATH
8cfcd41c
MD
223
224 # enable all syscalls
225 lttng_enable_kernel_syscall_ok $SESSION_NAME
fac26884
MD
226 # try to disable open system call: fails because enabler semantic of
227 # "all syscalls" is not "the open" system call.
8192bd8f 228 lttng_disable_kernel_syscall_fail $SESSION_NAME "openat"
8cfcd41c 229
c8e51d15 230 trace_testapp
8cfcd41c 231
8192bd8f
FD
232 # ensure "openat" syscall is there.
233 validate_trace_exp "-e syscall_entry_openat: -e compat_syscall_entry_openat: -e syscall_exit_openat: -e compat_syscall_exit_openat:" $TRACE_PATH
8cfcd41c
MD
234
235 # ensure "close" syscall is there.
a39bd0ab
MD
236 validate_trace_exp "-e syscall_entry_close: -e compat_syscall_entry_close:" $TRACE_PATH
237 validate_trace_exp "-e syscall_exit_close: -e compat_syscall_exit_close:" $TRACE_PATH
8cfcd41c 238
67b4c664 239 destroy_lttng_session_ok $SESSION_NAME
8cfcd41c
MD
240
241 rm -rf $TRACE_PATH
242}
243
244function test_syscall_all_disable_two()
245{
246 TRACE_PATH=$(mktemp -d)
247 SESSION_NAME="kernel_syscall_all_disable_two"
248
031f232e
DG
249 diag "Syscall trace all events and disable two"
250
bf6ae429 251 create_lttng_session_ok $SESSION_NAME $TRACE_PATH
8cfcd41c
MD
252
253 # enable all syscalls
254 lttng_enable_kernel_syscall_ok $SESSION_NAME
fac26884
MD
255 # try to disable open and close system calls: fails because enabler
256 # semantic of "all syscalls" is not "the open" system call.
8192bd8f 257 lttng_disable_kernel_syscall_fail $SESSION_NAME "openat"
fac26884 258 lttng_disable_kernel_syscall_fail $SESSION_NAME "close"
8cfcd41c 259
c8e51d15 260 trace_testapp
8cfcd41c 261
8192bd8f
FD
262 # ensure "openat" syscall is there.
263 validate_trace_exp "-e syscall_entry_openat: -e compat_syscall_entry_openat: -e syscall_exit_openat: -e compat_syscall_exit_openat:" $TRACE_PATH
fac26884
MD
264
265 # ensure "close" syscall is there.
266 validate_trace_exp "-e syscall_entry_close: -e compat_syscall_entry_close:" $TRACE_PATH
267 validate_trace_exp "-e syscall_exit_close: -e compat_syscall_exit_close:" $TRACE_PATH
8cfcd41c 268
c8e51d15
FD
269 # ensure "read" syscall is there.
270 validate_trace_exp "-e syscall_entry_read: -e compat_syscall_entry_read:" $TRACE_PATH
271 validate_trace_exp "-e syscall_exit_read: -e compat_syscall_exit_read:" $TRACE_PATH
8cfcd41c 272
67b4c664 273 destroy_lttng_session_ok $SESSION_NAME
8cfcd41c
MD
274
275 rm -rf $TRACE_PATH
276}
277
278function test_syscall_enable_all_disable_all()
279{
280 TRACE_PATH=$(mktemp -d)
281 SESSION_NAME="kernel_syscall_enable_all_disable_all"
282
031f232e
DG
283 diag "Syscall trace all events and disable all"
284
bf6ae429 285 create_lttng_session_ok $SESSION_NAME $TRACE_PATH
8cfcd41c
MD
286
287 # enable all system calls
288 lttng_enable_kernel_syscall_ok $SESSION_NAME
289 # disable all system calls
290 lttng_disable_kernel_syscall_ok $SESSION_NAME
291
c8e51d15 292 trace_testapp
8cfcd41c
MD
293
294 # ensure nothing has been traced.
295 validate_trace_empty $TRACE_PATH
296
67b4c664 297 destroy_lttng_session_ok $SESSION_NAME
8cfcd41c
MD
298
299 rm -rf $TRACE_PATH
300}
301
302function test_syscall_enable_all_disable_all_enable_all()
303{
304 TRACE_PATH=$(mktemp -d)
305 SESSION_NAME="kernel_syscall_enable_all_disable_all_enable_all"
306
031f232e
DG
307 diag "Syscall trace all events and enable/disable all"
308
bf6ae429 309 create_lttng_session_ok $SESSION_NAME $TRACE_PATH
8cfcd41c
MD
310
311 # enable all system calls
312 lttng_enable_kernel_syscall_ok $SESSION_NAME
313 # disable all system calls
314 lttng_disable_kernel_syscall_ok $SESSION_NAME
315 # enable all system calls
316 lttng_enable_kernel_syscall_ok $SESSION_NAME
317
c8e51d15 318 trace_testapp
8cfcd41c
MD
319
320 # ensure at least open and close are there.
8192bd8f
FD
321 validate_trace_exp "-e syscall_entry_openat: -e compat_syscall_entry_openat:" $TRACE_PATH
322 validate_trace_exp "-e syscall_exit_openat: -e compat_syscall_exit_openat:" $TRACE_PATH
a39bd0ab
MD
323 validate_trace_exp "-e syscall_entry_close: -e compat_syscall_entry_close:" $TRACE_PATH
324 validate_trace_exp "-e syscall_exit_close: -e compat_syscall_exit_close:" $TRACE_PATH
8cfcd41c
MD
325 # trace may contain other syscalls.
326
67b4c664 327 destroy_lttng_session_ok $SESSION_NAME
8cfcd41c
MD
328
329 rm -rf $TRACE_PATH
330}
331
0ee507ec
MJ
332function test_syscall_enable_all_enable_one_disable_all()
333{
334 TRACE_PATH=$(mktemp -d)
335 SESSION_NAME="kernel_syscall_enable_all_enable_one_disable_all"
336
337 diag "Syscall trace all events, enable one and disable all"
338
339 create_lttng_session_ok $SESSION_NAME "$TRACE_PATH"
340
341 # enable all syscalls
342 lttng_enable_kernel_syscall_ok $SESSION_NAME
343
344 # enable one specific syscall, "openat"
345 lttng_enable_kernel_syscall_ok $SESSION_NAME openat
346
347 # disable all syscalls
348 lttng_disable_kernel_syscall_ok $SESSION_NAME
349
350 trace_testapp
351
352 # The trace shouldn't contain any syscalls, disable-all should disable
353 # even individually specified syscalls
354 trace_match_only openat 0 "$TRACE_PATH"
355
356 destroy_lttng_session_ok $SESSION_NAME
357
358 rm -rf "$TRACE_PATH"
359}
360
361function test_syscall_enable_one_enable_all_disable_one()
362{
363 TRACE_PATH=$(mktemp -d)
364 SESSION_NAME="kernel_syscall_enable_one_enable_all_disable_one"
365
366 diag "Syscall trace all events and enable/disable one"
367
368 create_lttng_session_ok $SESSION_NAME "$TRACE_PATH"
369
370 # enable one specific syscall, "openat"
371 lttng_enable_kernel_syscall_ok $SESSION_NAME openat
372
373 # enable all syscalls
374 lttng_enable_kernel_syscall_ok $SESSION_NAME
375
376 # disable one specific syscall, "openat"
377 lttng_disable_kernel_syscall_ok $SESSION_NAME openat
378
379 trace_testapp
380
381 # The trace should contain all syscalls, including 'openat' because
382 # enable-all overrides individually disabled syscalls.
383 validate_trace openat "$TRACE_PATH"
384
385 destroy_lttng_session_ok $SESSION_NAME
386
387 rm -rf "$TRACE_PATH"
388}
389
390function test_syscall_enable_one_enable_all_disable_all_disable_one()
391{
392 TRACE_PATH=$(mktemp -d)
393 SESSION_NAME="kernel_syscall_enable_one_enable_all_disable_all_disable_one"
394
395 diag "Syscall trace all events and enable/disable one"
396
397 create_lttng_session_ok $SESSION_NAME "$TRACE_PATH"
398
399 # enable one specific syscall, "openat"
400 lttng_enable_kernel_syscall_ok $SESSION_NAME openat
401
402 # enable all syscalls
403 lttng_enable_kernel_syscall_ok $SESSION_NAME
404
405 # disable all syscalls
406 lttng_disable_kernel_syscall_ok $SESSION_NAME
407
408 # disable one specific syscall, "openat"
409 lttng_disable_kernel_syscall_ok $SESSION_NAME openat
410
411 trace_testapp
412
413 # The trace shouldn't contain any syscalls, disable-all should disable
414 # even individually specified syscalls
415 trace_match_only openat 0 "$TRACE_PATH"
416
417 destroy_lttng_session_ok $SESSION_NAME
418
419 rm -rf "$TRACE_PATH"
420}
421
8cfcd41c
MD
422function test_syscall_enable_all_disable_all_twice()
423{
424 TRACE_PATH=$(mktemp -d)
425 SESSION_NAME="kernel_syscall_enable_all_disable_all_twice"
426
031f232e
DG
427 diag "Syscall trace all events and enable/disable all twice"
428
bf6ae429 429 create_lttng_session_ok $SESSION_NAME $TRACE_PATH
8cfcd41c
MD
430
431 # enable all system calls
432 lttng_enable_kernel_syscall_ok $SESSION_NAME
433 # disable all system calls
434 lttng_disable_kernel_syscall_ok $SESSION_NAME
435 # enable all system calls
436 lttng_enable_kernel_syscall_ok $SESSION_NAME
437 # disable all system calls
438 lttng_disable_kernel_syscall_ok $SESSION_NAME
439
c8e51d15 440 trace_testapp
8cfcd41c
MD
441
442 # ensure nothing has been traced.
443 validate_trace_empty $TRACE_PATH
444
67b4c664 445 destroy_lttng_session_ok $SESSION_NAME
8cfcd41c
MD
446
447 rm -rf $TRACE_PATH
448}
449
450function test_syscall_enable_one_disable_one()
451{
452 TRACE_PATH=$(mktemp -d)
453 SESSION_NAME="kernel_syscall_enable_one_disable_one"
454
031f232e
DG
455 diag "Syscall trace one event and disable one"
456
bf6ae429 457 create_lttng_session_ok $SESSION_NAME $TRACE_PATH
8cfcd41c
MD
458
459 # enable open system call
8192bd8f 460 lttng_enable_kernel_syscall_ok $SESSION_NAME "openat"
8cfcd41c 461 # disable open system call
8192bd8f 462 lttng_disable_kernel_syscall_ok $SESSION_NAME "openat"
8cfcd41c 463
c8e51d15 464 trace_testapp
8cfcd41c
MD
465
466 # ensure nothing has been traced.
467 validate_trace_empty $TRACE_PATH
468
67b4c664 469 destroy_lttng_session_ok $SESSION_NAME
8cfcd41c
MD
470
471 rm -rf $TRACE_PATH
472}
473
474function test_syscall_enable_two_disable_two()
475{
476 TRACE_PATH=$(mktemp -d)
477 SESSION_NAME="kernel_syscall_enable_two_disable_two"
478
031f232e
DG
479 diag "Syscall trace two events and disable two"
480
bf6ae429 481 create_lttng_session_ok $SESSION_NAME $TRACE_PATH
8cfcd41c
MD
482
483 # enable open and close system calls
8192bd8f 484 lttng_enable_kernel_syscall_ok $SESSION_NAME "openat"
8cfcd41c
MD
485 lttng_enable_kernel_syscall_ok $SESSION_NAME "close"
486 # disable open and close system calls
8192bd8f 487 lttng_disable_kernel_syscall_ok $SESSION_NAME "openat"
8cfcd41c
MD
488 lttng_disable_kernel_syscall_ok $SESSION_NAME "close"
489
c8e51d15 490 trace_testapp
8cfcd41c
MD
491
492 # ensure nothing has been traced.
493 validate_trace_empty $TRACE_PATH
494
67b4c664 495 destroy_lttng_session_ok $SESSION_NAME
8cfcd41c
MD
496
497 rm -rf $TRACE_PATH
498}
499
500function test_syscall_enable_two_disable_one()
501{
502 TRACE_PATH=$(mktemp -d)
503 SESSION_NAME="kernel_syscall_enable_two_disable_one"
504
031f232e
DG
505 diag "Syscall trace two events and disable one"
506
bf6ae429 507 create_lttng_session_ok $SESSION_NAME $TRACE_PATH
8cfcd41c
MD
508
509 # enable open and close system calls
8192bd8f 510 lttng_enable_kernel_syscall_ok $SESSION_NAME "openat"
8cfcd41c
MD
511 lttng_enable_kernel_syscall_ok $SESSION_NAME "close"
512 # disable close system call
513 lttng_disable_kernel_syscall_ok $SESSION_NAME "close"
514
c8e51d15 515 trace_testapp
8cfcd41c
MD
516
517 # ensure open is there.
8192bd8f
FD
518 validate_trace_exp "-e syscall_entry_openat: -e compat_syscall_entry_openat:" $TRACE_PATH
519 validate_trace_exp "-e syscall_exit_openat: -e compat_syscall_exit_openat:" $TRACE_PATH
8cfcd41c
MD
520
521 # ensure trace only contains those.
8192bd8f 522 validate_trace_only_exp "-e syscall_entry_openat: -e compat_syscall_entry_openat: -e syscall_exit_openat: -e compat_syscall_exit_openat:" $TRACE_PATH
8cfcd41c 523
67b4c664 524 destroy_lttng_session_ok $SESSION_NAME
8cfcd41c
MD
525
526 rm -rf $TRACE_PATH
527}
528
529function test_syscall_disable_twice()
530{
531 TRACE_PATH=$(mktemp -d)
532 SESSION_NAME="kernel_syscall_disable_twice"
533
031f232e
DG
534 diag "Syscall trace one event and disable twice"
535
bf6ae429 536 create_lttng_session_ok $SESSION_NAME $TRACE_PATH
8cfcd41c 537
8192bd8f 538 lttng_enable_kernel_syscall_ok $SESSION_NAME "openat"
8cfcd41c 539 # First disable will succeed
8192bd8f 540 lttng_disable_kernel_syscall_ok $SESSION_NAME "openat"
fac26884 541 # Second disable succeeds too, due to enabler semantic.
8192bd8f 542 lttng_disable_kernel_syscall_ok $SESSION_NAME "openat"
8cfcd41c 543
67b4c664 544 destroy_lttng_session_ok $SESSION_NAME
8cfcd41c
MD
545
546 rm -rf $TRACE_PATH
547}
548
549function test_syscall_disable_all_twice()
550{
551 TRACE_PATH=$(mktemp -d)
552 SESSION_NAME="kernel_syscall_disable_all_twice"
553
031f232e
DG
554 diag "Syscall trace all events and disable all twice"
555
bf6ae429 556 create_lttng_session_ok $SESSION_NAME $TRACE_PATH
8cfcd41c
MD
557
558 lttng_enable_kernel_syscall_ok $SESSION_NAME
559 # First disable will succeed
560 lttng_disable_kernel_syscall_ok $SESSION_NAME
fac26884
MD
561 # Second disable succeeds too, due to enabler semantic.
562 lttng_disable_kernel_syscall_ok $SESSION_NAME
8cfcd41c 563
67b4c664 564 destroy_lttng_session_ok $SESSION_NAME
8cfcd41c
MD
565
566 rm -rf $TRACE_PATH
567}
568
569
570function test_syscall_enable_unknown()
571{
572 TRACE_PATH=$(mktemp -d)
573 SESSION_NAME="kernel_syscall_enable_unknown"
574
031f232e
DG
575 diag "Syscall enable an unknown event"
576
bf6ae429 577 create_lttng_session_ok $SESSION_NAME $TRACE_PATH
8cfcd41c 578
fac26884
MD
579 # Enabling a syscall that does not exist succeeds, due to enabler
580 # semantic.
581 lttng_enable_kernel_syscall_ok $SESSION_NAME "thissyscallcannotexist"
8cfcd41c 582
67b4c664 583 destroy_lttng_session_ok $SESSION_NAME
8cfcd41c
MD
584
585 rm -rf $TRACE_PATH
586}
587
588function test_syscall_enable_all_enable_one()
589{
590 TRACE_PATH=$(mktemp -d)
591 SESSION_NAME="kernel_syscall_enable_all_enable_one"
592
031f232e
DG
593 diag "Syscall enable all and enable one"
594
bf6ae429 595 create_lttng_session_ok $SESSION_NAME $TRACE_PATH
8cfcd41c
MD
596
597 lttng_enable_kernel_syscall_ok $SESSION_NAME
fac26884 598 # Enabling an event already enabled succeeds, due to enabler semantic.
8192bd8f 599 lttng_enable_kernel_syscall_ok $SESSION_NAME "openat"
8cfcd41c 600
67b4c664 601 destroy_lttng_session_ok $SESSION_NAME
8cfcd41c
MD
602
603 rm -rf $TRACE_PATH
604}
605
606function test_syscall_disable_all_disable_one()
607{
608 TRACE_PATH=$(mktemp -d)
609 SESSION_NAME="kernel_syscall_enable_all_enable_one"
610
031f232e
DG
611 diag "Syscall disable all and disable one"
612
bf6ae429 613 create_lttng_session_ok $SESSION_NAME $TRACE_PATH
8cfcd41c
MD
614
615 lttng_enable_kernel_syscall_ok $SESSION_NAME
616 lttng_disable_kernel_syscall_ok $SESSION_NAME
617 # Disabling an event already disabled fails.
8192bd8f 618 lttng_disable_kernel_syscall_fail $SESSION_NAME "openat"
8cfcd41c 619
67b4c664 620 destroy_lttng_session_ok $SESSION_NAME
8cfcd41c
MD
621
622 rm -rf $TRACE_PATH
623}
624
d96f6315
MD
625function test_syscall_enable_channel_disable_all()
626{
627 TRACE_PATH=$(mktemp -d)
628 SESSION_NAME="kernel_syscall_enable_channel_disable_all"
629 CHANNEL_NAME="channel"
630
031f232e
DG
631 diag "Syscall enable channel and disable all"
632
bf6ae429 633 create_lttng_session_ok $SESSION_NAME $TRACE_PATH
d96f6315
MD
634
635 lttng_enable_kernel_channel_ok $SESSION_NAME $CHANNEL_NAME
fac26884
MD
636 # sessiond semantic for "disable all" is to try to match all enalers
637 # it knowns about. Disable all succeeds if it finds no match.
638 lttng_disable_kernel_syscall_ok $SESSION_NAME "-a" $CHANNEL_NAME
d96f6315 639
67b4c664 640 destroy_lttng_session_ok $SESSION_NAME
d96f6315
MD
641
642 rm -rf $TRACE_PATH
643}
644
645function test_syscall_enable_channel_disable_one()
646{
647 TRACE_PATH=$(mktemp -d)
648 SESSION_NAME="kernel_syscall_enable_channel_disable_all"
649 CHANNEL_NAME="channel"
650
031f232e
DG
651 diag "Syscall enable channel and disable one"
652
bf6ae429 653 create_lttng_session_ok $SESSION_NAME $TRACE_PATH
d96f6315
MD
654
655 lttng_enable_kernel_channel_ok $SESSION_NAME $CHANNEL_NAME
8192bd8f 656 lttng_disable_kernel_syscall_fail $SESSION_NAME "openat" $CHANNEL_NAME
d96f6315 657
67b4c664 658 destroy_lttng_session_ok $SESSION_NAME
d96f6315
MD
659
660 rm -rf $TRACE_PATH
661}
662
8cfcd41c
MD
663# MUST set TESTDIR before calling those functions
664plan_tests $NUM_TESTS
665
666print_test_banner "$TEST_DESC"
667
668if [ "$(id -u)" == "0" ]; then
669 isroot=1
670else
671 isroot=0
672fi
673
674skip $isroot "Root access is needed. Skipping all tests." $NUM_TESTS ||
675{
676 start_lttng_sessiond
677
02db71ba
DG
678 test_syscall_event_list
679 test_syscall_simple_list
680 test_syscall_simple_list_two
8cfcd41c
MD
681 test_syscall_single
682 test_syscall_two
683 test_syscall_all
684 test_syscall_all_disable_one
685 test_syscall_all_disable_two
686 test_syscall_enable_all_disable_all
687 test_syscall_enable_all_disable_all_enable_all
688 test_syscall_enable_all_disable_all_twice
0ee507ec
MJ
689 test_syscall_enable_all_enable_one_disable_all
690 test_syscall_enable_one_enable_all_disable_one
691 test_syscall_enable_one_enable_all_disable_all_disable_one
8cfcd41c
MD
692 test_syscall_enable_one_disable_one
693 test_syscall_enable_two_disable_two
694 test_syscall_enable_two_disable_one
695 test_syscall_disable_twice
696 test_syscall_disable_all_twice
697 test_syscall_enable_unknown
698 test_syscall_enable_all_enable_one
699 test_syscall_disable_all_disable_one
d96f6315
MD
700 test_syscall_enable_channel_disable_all
701 test_syscall_enable_channel_disable_one
8cfcd41c
MD
702
703 stop_lttng_sessiond
704}
This page took 0.067369 seconds and 4 git commands to generate.