X-Git-Url: https://git.lttng.org/?p=lttng-tools.git;a=blobdiff_plain;f=tests%2Fregression%2Fkernel%2Ftest_syscall;h=1dcae90c3e02d744194dbdb44bc589c529198a37;hp=a7800d2a1fede246cadeaaba7e70f423cd15392c;hb=c8e51d1559c48a12f18053997bbcff0c162691c4;hpb=fac26884aa477a653fb72cc009fb14f970833baf diff --git a/tests/regression/kernel/test_syscall b/tests/regression/kernel/test_syscall index a7800d2a1..1dcae90c3 100755 --- a/tests/regression/kernel/test_syscall +++ b/tests/regression/kernel/test_syscall @@ -20,13 +20,43 @@ TEST_DESC="Kernel tracer - System calls" CURDIR=$(dirname $0)/ TESTDIR=$CURDIR/../.. -NUM_TESTS=157 +NUM_TESTS=183 -# test command issues at least open and close system calls -TESTCMD="cat /proc/cpuinfo > /dev/null" +# `gen-syscall-event` starts and waits for the creation a file passed by +# arguments to start executing 3 syscalls (open,read,close) and returning. +TESTCMD="$TESTDIR/utils/testapp/gen-syscall-events/gen-syscall-events" source $TESTDIR/utils/utils.sh +function trace_testapp() +{ + local start_file_sync + start_file_sync=$(mktemp -u) + + # Clear all entries from the resource tracker + lttng_untrack_kernel_all_ok + + # Launch the testapp and save its Process ID + ./"$TESTCMD" "$start_file_sync" & + PID=$! + + # Set LTTng to track this PID and start the tracing + lttng_track_pid_ok $PID + + start_lttng_tracing_ok + + # Create start file to launch the execution of the workload by the + # test app + touch "$start_file_sync" + + wait $PID + + stop_lttng_tracing_ok + + # Clean up the synchronization file + rm -f "$start_file_sync" +} + function validate_list() { local session_name=$1 @@ -59,24 +89,22 @@ function test_syscall_simple_list() diag "Syscall simple listing" - create_lttng_session $SESSION_NAME $TRACE_PATH + create_lttng_session_ok $SESSION_NAME $TRACE_PATH lttng_enable_kernel_syscall_ok $SESSION_NAME $EVENT_NAME validate_list $SESSION_NAME $EVENT_NAME - start_lttng_tracing - eval ${TESTCMD} - stop_lttng_tracing + trace_testapp - # ensure each is there. + # ensure all events are in the trace. validate_trace_exp "-e syscall_entry_$EVENT_NAME: -e compat_syscall_entry_$EVENT_NAME:" $TRACE_PATH validate_trace_exp "-e syscall_exit_$EVENT_NAME: -e compat_syscall_exit_$EVENT_NAME:" $TRACE_PATH # ensure trace only contains those. 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 - destroy_lttng_session $SESSION_NAME + destroy_lttng_session_ok $SESSION_NAME rm -rf $TRACE_PATH } @@ -90,7 +118,7 @@ function test_syscall_simple_list_two() diag "Syscall simple listing" - create_lttng_session $SESSION_NAME $TRACE_PATH + create_lttng_session_ok $SESSION_NAME $TRACE_PATH lttng_enable_kernel_syscall_ok $SESSION_NAME $EVENT_NAME lttng_enable_kernel_syscall_ok $SESSION_NAME $EVENT_NAME2 @@ -98,22 +126,19 @@ function test_syscall_simple_list_two() validate_list $SESSION_NAME $EVENT_NAME validate_list $SESSION_NAME $EVENT_NAME2 - start_lttng_tracing - eval ${TESTCMD} - stop_lttng_tracing + trace_testapp - # ensure each is there. + # ensure all events are in the trace. validate_trace_exp "-e syscall_entry_$EVENT_NAME: -e compat_syscall_entry_$EVENT_NAME:" $TRACE_PATH validate_trace_exp "-e syscall_exit_$EVENT_NAME: -e compat_syscall_exit_$EVENT_NAME:" $TRACE_PATH - # ensure each is there. validate_trace_exp "-e syscall_entry_$EVENT_NAME2: -e compat_syscall_entry_$EVENT_NAME2:" $TRACE_PATH validate_trace_exp "-e syscall_exit_$EVENT_NAME2: -e compat_syscall_exit_$EVENT_NAME2:" $TRACE_PATH # ensure trace only contains those. 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 - destroy_lttng_session $SESSION_NAME + destroy_lttng_session_ok $SESSION_NAME rm -rf $TRACE_PATH } @@ -125,22 +150,20 @@ function test_syscall_single() diag "Syscall trace single" - create_lttng_session $SESSION_NAME $TRACE_PATH + create_lttng_session_ok $SESSION_NAME $TRACE_PATH lttng_enable_kernel_syscall_ok $SESSION_NAME "open" - start_lttng_tracing - eval ${TESTCMD} - stop_lttng_tracing + trace_testapp - # ensure each is there. + # ensure all events are in the trace. validate_trace_exp "-e syscall_entry_open: -e compat_syscall_entry_open:" $TRACE_PATH validate_trace_exp "-e syscall_exit_open: -e compat_syscall_exit_open:" $TRACE_PATH # ensure trace only contains those. validate_trace_only_exp "-e syscall_entry_open: -e compat_syscall_entry_open: -e syscall_exit_open: -e compat_syscall_exit_open:" $TRACE_PATH - destroy_lttng_session $SESSION_NAME + destroy_lttng_session_ok $SESSION_NAME rm -rf $TRACE_PATH } @@ -152,16 +175,14 @@ function test_syscall_two() diag "Syscall trace two events" - create_lttng_session $SESSION_NAME $TRACE_PATH + create_lttng_session_ok $SESSION_NAME $TRACE_PATH lttng_enable_kernel_syscall_ok $SESSION_NAME "open" lttng_enable_kernel_syscall_ok $SESSION_NAME "close" - start_lttng_tracing - eval ${TESTCMD} - stop_lttng_tracing + trace_testapp - # ensure each is there. + # ensure all events are in the trace. validate_trace_exp "-e syscall_entry_open: -e compat_syscall_entry_open:" $TRACE_PATH validate_trace_exp "-e syscall_exit_open: -e compat_syscall_exit_open:" $TRACE_PATH validate_trace_exp "-e syscall_entry_close: -e compat_syscall_entry_close:" $TRACE_PATH @@ -170,7 +191,7 @@ function test_syscall_two() # ensure trace only contains those. 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 - destroy_lttng_session $SESSION_NAME + destroy_lttng_session_ok $SESSION_NAME rm -rf $TRACE_PATH } @@ -182,14 +203,12 @@ function test_syscall_all() diag "Syscall trace all events" - create_lttng_session $SESSION_NAME $TRACE_PATH + create_lttng_session_ok $SESSION_NAME $TRACE_PATH # enable all syscalls lttng_enable_kernel_syscall_ok $SESSION_NAME - start_lttng_tracing - eval ${TESTCMD} - stop_lttng_tracing + trace_testapp # ensure at least open and close are there. validate_trace_exp "-e syscall_entry_open: -e compat_syscall_entry_open:" $TRACE_PATH @@ -198,7 +217,7 @@ function test_syscall_all() validate_trace_exp "-e syscall_exit_close: -e compat_syscall_exit_close:" $TRACE_PATH # trace may contain other syscalls. - destroy_lttng_session $SESSION_NAME + destroy_lttng_session_ok $SESSION_NAME rm -rf $TRACE_PATH } @@ -210,7 +229,7 @@ function test_syscall_all_disable_one() diag "Syscall trace all events and disable one" - create_lttng_session $SESSION_NAME $TRACE_PATH + create_lttng_session_ok $SESSION_NAME $TRACE_PATH # enable all syscalls lttng_enable_kernel_syscall_ok $SESSION_NAME @@ -218,9 +237,7 @@ function test_syscall_all_disable_one() # "all syscalls" is not "the open" system call. lttng_disable_kernel_syscall_fail $SESSION_NAME "open" - start_lttng_tracing - eval ${TESTCMD} - stop_lttng_tracing + trace_testapp # ensure "open" syscall is there. validate_trace_exp "-e syscall_entry_open: -e compat_syscall_entry_open: -e syscall_exit_open: -e compat_syscall_exit_open:" $TRACE_PATH @@ -229,7 +246,7 @@ function test_syscall_all_disable_one() validate_trace_exp "-e syscall_entry_close: -e compat_syscall_entry_close:" $TRACE_PATH validate_trace_exp "-e syscall_exit_close: -e compat_syscall_exit_close:" $TRACE_PATH - destroy_lttng_session $SESSION_NAME + destroy_lttng_session_ok $SESSION_NAME rm -rf $TRACE_PATH } @@ -241,7 +258,7 @@ function test_syscall_all_disable_two() diag "Syscall trace all events and disable two" - create_lttng_session $SESSION_NAME $TRACE_PATH + create_lttng_session_ok $SESSION_NAME $TRACE_PATH # enable all syscalls lttng_enable_kernel_syscall_ok $SESSION_NAME @@ -250,10 +267,7 @@ function test_syscall_all_disable_two() lttng_disable_kernel_syscall_fail $SESSION_NAME "open" lttng_disable_kernel_syscall_fail $SESSION_NAME "close" - start_lttng_tracing - # generates open, close, execve (at least) - eval ${TESTCMD} - stop_lttng_tracing + trace_testapp # ensure "open" syscall is there. validate_trace_exp "-e syscall_entry_open: -e compat_syscall_entry_open: -e syscall_exit_open: -e compat_syscall_exit_open:" $TRACE_PATH @@ -262,11 +276,11 @@ function test_syscall_all_disable_two() validate_trace_exp "-e syscall_entry_close: -e compat_syscall_entry_close:" $TRACE_PATH validate_trace_exp "-e syscall_exit_close: -e compat_syscall_exit_close:" $TRACE_PATH - # ensure "execve" syscall is there. - validate_trace_exp "-e syscall_entry_execve: -e compat_syscall_entry_execve:" $TRACE_PATH - validate_trace_exp "-e syscall_exit_execve: -e compat_syscall_exit_execve:" $TRACE_PATH + # ensure "read" syscall is there. + validate_trace_exp "-e syscall_entry_read: -e compat_syscall_entry_read:" $TRACE_PATH + validate_trace_exp "-e syscall_exit_read: -e compat_syscall_exit_read:" $TRACE_PATH - destroy_lttng_session $SESSION_NAME + destroy_lttng_session_ok $SESSION_NAME rm -rf $TRACE_PATH } @@ -278,22 +292,19 @@ function test_syscall_enable_all_disable_all() diag "Syscall trace all events and disable all" - create_lttng_session $SESSION_NAME $TRACE_PATH + create_lttng_session_ok $SESSION_NAME $TRACE_PATH # enable all system calls lttng_enable_kernel_syscall_ok $SESSION_NAME # disable all system calls lttng_disable_kernel_syscall_ok $SESSION_NAME - start_lttng_tracing - # generates open, close, execve (at least) - eval ${TESTCMD} - stop_lttng_tracing + trace_testapp # ensure nothing has been traced. validate_trace_empty $TRACE_PATH - destroy_lttng_session $SESSION_NAME + destroy_lttng_session_ok $SESSION_NAME rm -rf $TRACE_PATH } @@ -305,7 +316,7 @@ function test_syscall_enable_all_disable_all_enable_all() diag "Syscall trace all events and enable/disable all" - create_lttng_session $SESSION_NAME $TRACE_PATH + create_lttng_session_ok $SESSION_NAME $TRACE_PATH # enable all system calls lttng_enable_kernel_syscall_ok $SESSION_NAME @@ -314,10 +325,7 @@ function test_syscall_enable_all_disable_all_enable_all() # enable all system calls lttng_enable_kernel_syscall_ok $SESSION_NAME - start_lttng_tracing - # generates open, close, execve (at least) - eval ${TESTCMD} - stop_lttng_tracing + trace_testapp # ensure at least open and close are there. validate_trace_exp "-e syscall_entry_open: -e compat_syscall_entry_open:" $TRACE_PATH @@ -326,7 +334,7 @@ function test_syscall_enable_all_disable_all_enable_all() validate_trace_exp "-e syscall_exit_close: -e compat_syscall_exit_close:" $TRACE_PATH # trace may contain other syscalls. - destroy_lttng_session $SESSION_NAME + destroy_lttng_session_ok $SESSION_NAME rm -rf $TRACE_PATH } @@ -338,7 +346,7 @@ function test_syscall_enable_all_disable_all_twice() diag "Syscall trace all events and enable/disable all twice" - create_lttng_session $SESSION_NAME $TRACE_PATH + create_lttng_session_ok $SESSION_NAME $TRACE_PATH # enable all system calls lttng_enable_kernel_syscall_ok $SESSION_NAME @@ -349,15 +357,12 @@ function test_syscall_enable_all_disable_all_twice() # disable all system calls lttng_disable_kernel_syscall_ok $SESSION_NAME - start_lttng_tracing - # generates open, close, execve (at least) - eval ${TESTCMD} - stop_lttng_tracing + trace_testapp # ensure nothing has been traced. validate_trace_empty $TRACE_PATH - destroy_lttng_session $SESSION_NAME + destroy_lttng_session_ok $SESSION_NAME rm -rf $TRACE_PATH } @@ -369,22 +374,19 @@ function test_syscall_enable_one_disable_one() diag "Syscall trace one event and disable one" - create_lttng_session $SESSION_NAME $TRACE_PATH + create_lttng_session_ok $SESSION_NAME $TRACE_PATH # enable open system call lttng_enable_kernel_syscall_ok $SESSION_NAME "open" # disable open system call lttng_disable_kernel_syscall_ok $SESSION_NAME "open" - start_lttng_tracing - # generates open, close, execve (at least) - eval ${TESTCMD} - stop_lttng_tracing + trace_testapp # ensure nothing has been traced. validate_trace_empty $TRACE_PATH - destroy_lttng_session $SESSION_NAME + destroy_lttng_session_ok $SESSION_NAME rm -rf $TRACE_PATH } @@ -396,7 +398,7 @@ function test_syscall_enable_two_disable_two() diag "Syscall trace two events and disable two" - create_lttng_session $SESSION_NAME $TRACE_PATH + create_lttng_session_ok $SESSION_NAME $TRACE_PATH # enable open and close system calls lttng_enable_kernel_syscall_ok $SESSION_NAME "open" @@ -405,15 +407,12 @@ function test_syscall_enable_two_disable_two() lttng_disable_kernel_syscall_ok $SESSION_NAME "open" lttng_disable_kernel_syscall_ok $SESSION_NAME "close" - start_lttng_tracing - # generates open, close, execve (at least) - eval ${TESTCMD} - stop_lttng_tracing + trace_testapp # ensure nothing has been traced. validate_trace_empty $TRACE_PATH - destroy_lttng_session $SESSION_NAME + destroy_lttng_session_ok $SESSION_NAME rm -rf $TRACE_PATH } @@ -425,7 +424,7 @@ function test_syscall_enable_two_disable_one() diag "Syscall trace two events and disable one" - create_lttng_session $SESSION_NAME $TRACE_PATH + create_lttng_session_ok $SESSION_NAME $TRACE_PATH # enable open and close system calls lttng_enable_kernel_syscall_ok $SESSION_NAME "open" @@ -433,10 +432,7 @@ function test_syscall_enable_two_disable_one() # disable close system call lttng_disable_kernel_syscall_ok $SESSION_NAME "close" - start_lttng_tracing - # generates open, close, execve (at least) - eval ${TESTCMD} - stop_lttng_tracing + trace_testapp # ensure open is there. validate_trace_exp "-e syscall_entry_open: -e compat_syscall_entry_open:" $TRACE_PATH @@ -445,7 +441,7 @@ function test_syscall_enable_two_disable_one() # ensure trace only contains those. validate_trace_only_exp "-e syscall_entry_open: -e compat_syscall_entry_open: -e syscall_exit_open: -e compat_syscall_exit_open:" $TRACE_PATH - destroy_lttng_session $SESSION_NAME + destroy_lttng_session_ok $SESSION_NAME rm -rf $TRACE_PATH } @@ -457,7 +453,7 @@ function test_syscall_disable_twice() diag "Syscall trace one event and disable twice" - create_lttng_session $SESSION_NAME $TRACE_PATH + create_lttng_session_ok $SESSION_NAME $TRACE_PATH lttng_enable_kernel_syscall_ok $SESSION_NAME "open" # First disable will succeed @@ -465,7 +461,7 @@ function test_syscall_disable_twice() # Second disable succeeds too, due to enabler semantic. lttng_disable_kernel_syscall_ok $SESSION_NAME "open" - destroy_lttng_session $SESSION_NAME + destroy_lttng_session_ok $SESSION_NAME rm -rf $TRACE_PATH } @@ -477,7 +473,7 @@ function test_syscall_disable_all_twice() diag "Syscall trace all events and disable all twice" - create_lttng_session $SESSION_NAME $TRACE_PATH + create_lttng_session_ok $SESSION_NAME $TRACE_PATH lttng_enable_kernel_syscall_ok $SESSION_NAME # First disable will succeed @@ -485,7 +481,7 @@ function test_syscall_disable_all_twice() # Second disable succeeds too, due to enabler semantic. lttng_disable_kernel_syscall_ok $SESSION_NAME - destroy_lttng_session $SESSION_NAME + destroy_lttng_session_ok $SESSION_NAME rm -rf $TRACE_PATH } @@ -498,13 +494,13 @@ function test_syscall_enable_unknown() diag "Syscall enable an unknown event" - create_lttng_session $SESSION_NAME $TRACE_PATH + create_lttng_session_ok $SESSION_NAME $TRACE_PATH # Enabling a syscall that does not exist succeeds, due to enabler # semantic. lttng_enable_kernel_syscall_ok $SESSION_NAME "thissyscallcannotexist" - destroy_lttng_session $SESSION_NAME + destroy_lttng_session_ok $SESSION_NAME rm -rf $TRACE_PATH } @@ -516,13 +512,13 @@ function test_syscall_enable_all_enable_one() diag "Syscall enable all and enable one" - create_lttng_session $SESSION_NAME $TRACE_PATH + create_lttng_session_ok $SESSION_NAME $TRACE_PATH lttng_enable_kernel_syscall_ok $SESSION_NAME # Enabling an event already enabled succeeds, due to enabler semantic. lttng_enable_kernel_syscall_ok $SESSION_NAME "open" - destroy_lttng_session $SESSION_NAME + destroy_lttng_session_ok $SESSION_NAME rm -rf $TRACE_PATH } @@ -534,14 +530,14 @@ function test_syscall_disable_all_disable_one() diag "Syscall disable all and disable one" - create_lttng_session $SESSION_NAME $TRACE_PATH + create_lttng_session_ok $SESSION_NAME $TRACE_PATH lttng_enable_kernel_syscall_ok $SESSION_NAME lttng_disable_kernel_syscall_ok $SESSION_NAME # Disabling an event already disabled fails. lttng_disable_kernel_syscall_fail $SESSION_NAME "open" - destroy_lttng_session $SESSION_NAME + destroy_lttng_session_ok $SESSION_NAME rm -rf $TRACE_PATH } @@ -554,14 +550,14 @@ function test_syscall_enable_channel_disable_all() diag "Syscall enable channel and disable all" - create_lttng_session $SESSION_NAME $TRACE_PATH + create_lttng_session_ok $SESSION_NAME $TRACE_PATH lttng_enable_kernel_channel_ok $SESSION_NAME $CHANNEL_NAME # sessiond semantic for "disable all" is to try to match all enalers # it knowns about. Disable all succeeds if it finds no match. lttng_disable_kernel_syscall_ok $SESSION_NAME "-a" $CHANNEL_NAME - destroy_lttng_session $SESSION_NAME + destroy_lttng_session_ok $SESSION_NAME rm -rf $TRACE_PATH } @@ -574,12 +570,12 @@ function test_syscall_enable_channel_disable_one() diag "Syscall enable channel and disable one" - create_lttng_session $SESSION_NAME $TRACE_PATH + create_lttng_session_ok $SESSION_NAME $TRACE_PATH lttng_enable_kernel_channel_ok $SESSION_NAME $CHANNEL_NAME lttng_disable_kernel_syscall_fail $SESSION_NAME "open" $CHANNEL_NAME - destroy_lttng_session $SESSION_NAME + destroy_lttng_session_ok $SESSION_NAME rm -rf $TRACE_PATH }