Tests: Change syscall tests to use `gen-syscall-events` testapp
[lttng-tools.git] / tests / regression / kernel / test_syscall
index a7800d2a1fede246cadeaaba7e70f423cd15392c..1dcae90c3e02d744194dbdb44bc589c529198a37 100755 (executable)
@@ -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
 }
This page took 0.031304 seconds and 4 git commands to generate.