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