+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
+ local event_name=$2
+ local opt=$3
+
+ out=$($TESTDIR/../src/bin/lttng/$LTTNG_BIN list $session_name $opt | grep $event_name)
+ if [ -z "$out" ]; then
+ fail "Validate syscall listing"
+ diag "$event_name not found when listing $session_name (opt $opt)"
+ else
+ pass "Validate syscall listing. Found $event_name."
+ fi
+}
+
+function test_syscall_event_list()
+{
+ local EVENT_NAME="getpid"
+
+ diag "Syscall event listing"
+
+ validate_list "" $EVENT_NAME "-k --syscall"
+}
+
+function test_syscall_simple_list()
+{
+ TRACE_PATH=$(mktemp -d)
+ SESSION_NAME="kernel_syscall_simple_list"
+ local EVENT_NAME="close"
+
+ diag "Syscall simple listing"
+
+ create_lttng_session_ok $SESSION_NAME $TRACE_PATH
+
+ lttng_enable_kernel_syscall_ok $SESSION_NAME $EVENT_NAME
+
+ validate_list $SESSION_NAME $EVENT_NAME
+
+ trace_testapp
+
+ # 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_ok $SESSION_NAME
+
+ rm -rf $TRACE_PATH
+}
+
+function test_syscall_simple_list_two()
+{
+ TRACE_PATH=$(mktemp -d)
+ SESSION_NAME="kernel_syscall_simple_list_two"
+ local EVENT_NAME="close"
+ local EVENT_NAME2="read"
+
+ diag "Syscall simple listing"
+
+ 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
+
+ validate_list $SESSION_NAME $EVENT_NAME
+ validate_list $SESSION_NAME $EVENT_NAME2
+
+ trace_testapp
+
+ # 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
+
+ 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_ok $SESSION_NAME
+
+ rm -rf $TRACE_PATH
+}
+