CURDIR=$(dirname $0)/
TESTDIR=$CURDIR/../..
-NUM_TESTS=183
+NUM_TESTS=214
# `gen-syscall-event` starts and waits for the creation a file passed by
# arguments to start executing 3 syscalls (open,read,close) and returning.
function trace_testapp()
{
- local start_file_sync
- start_file_sync=$(mktemp -u)
+ local start_file_sync=$(mktemp -u -t "tmp.${FUNCNAME[0]}_sync_start.XXXXXX")
# Clear all entries from the resource tracker
lttng_untrack_kernel_all_ok
# Launch the testapp and save its Process ID
- ./"$TESTCMD" "$start_file_sync" &
+ ./"$TESTCMD" "$start_file_sync" "/proc/cpuinfo" "/proc/cmdline" &
PID=$!
# Set LTTng to track this PID and start the tracing
function test_syscall_simple_list()
{
- TRACE_PATH=$(mktemp -d)
+ local TRACE_PATH=$(mktemp -d -t "tmp.${FUNCNAME[0]}_trace_path.XXXXXX")
SESSION_NAME="kernel_syscall_simple_list"
local EVENT_NAME="close"
function test_syscall_simple_list_two()
{
- TRACE_PATH=$(mktemp -d)
+ local TRACE_PATH=$(mktemp -d -t "tmp.${FUNCNAME[0]}_trace_path.XXXXXX")
SESSION_NAME="kernel_syscall_simple_list_two"
local EVENT_NAME="close"
local EVENT_NAME2="read"
function test_syscall_single()
{
- TRACE_PATH=$(mktemp -d)
+ local TRACE_PATH=$(mktemp -d -t "tmp.${FUNCNAME[0]}_trace_path.XXXXXX")
SESSION_NAME="kernel_syscall_single"
diag "Syscall trace single"
function test_syscall_two()
{
- TRACE_PATH=$(mktemp -d)
+ local TRACE_PATH=$(mktemp -d -t "tmp.${FUNCNAME[0]}_trace_path.XXXXXX")
SESSION_NAME="kernel_syscall_two"
diag "Syscall trace two events"
function test_syscall_all()
{
- TRACE_PATH=$(mktemp -d)
+ local TRACE_PATH=$(mktemp -d -t "tmp.${FUNCNAME[0]}_trace_path.XXXXXX")
SESSION_NAME="kernel_syscall_all"
diag "Syscall trace all events"
function test_syscall_all_disable_one()
{
- TRACE_PATH=$(mktemp -d)
+ local TRACE_PATH=$(mktemp -d -t "tmp.${FUNCNAME[0]}_trace_path.XXXXXX")
SESSION_NAME="kernel_syscall_all_disable_one"
diag "Syscall trace all events and disable one"
function test_syscall_all_disable_two()
{
- TRACE_PATH=$(mktemp -d)
+ local TRACE_PATH=$(mktemp -d -t "tmp.${FUNCNAME[0]}_trace_path.XXXXXX")
SESSION_NAME="kernel_syscall_all_disable_two"
diag "Syscall trace all events and disable two"
function test_syscall_enable_all_disable_all()
{
- TRACE_PATH=$(mktemp -d)
+ local TRACE_PATH=$(mktemp -d -t "tmp.${FUNCNAME[0]}_trace_path.XXXXXX")
SESSION_NAME="kernel_syscall_enable_all_disable_all"
diag "Syscall trace all events and disable all"
function test_syscall_enable_all_disable_all_enable_all()
{
- TRACE_PATH=$(mktemp -d)
+ local TRACE_PATH=$(mktemp -d -t "tmp.${FUNCNAME[0]}_trace_path.XXXXXX")
SESSION_NAME="kernel_syscall_enable_all_disable_all_enable_all"
diag "Syscall trace all events and enable/disable all"
rm -rf $TRACE_PATH
}
+function test_syscall_enable_all_enable_one_disable_all()
+{
+ local TRACE_PATH=$(mktemp -d -t "tmp.${FUNCNAME[0]}_trace_path.XXXXXX")
+ SESSION_NAME="kernel_syscall_enable_all_enable_one_disable_all"
+
+ diag "Syscall trace all events, enable one and disable all"
+
+ create_lttng_session_ok $SESSION_NAME "$TRACE_PATH"
+
+ # enable all syscalls
+ lttng_enable_kernel_syscall_ok $SESSION_NAME
+
+ # enable one specific syscall, "openat"
+ lttng_enable_kernel_syscall_ok $SESSION_NAME openat
+
+ # disable all syscalls
+ lttng_disable_kernel_syscall_ok $SESSION_NAME
+
+ trace_testapp
+
+ # The trace shouldn't contain any syscalls, disable-all should disable
+ # even individually specified syscalls
+ trace_match_only openat 0 "$TRACE_PATH"
+
+ destroy_lttng_session_ok $SESSION_NAME
+
+ rm -rf "$TRACE_PATH"
+}
+
+function test_syscall_enable_one_enable_all_disable_one()
+{
+ local TRACE_PATH=$(mktemp -d -t "tmp.${FUNCNAME[0]}_trace_path.XXXXXX")
+ SESSION_NAME="kernel_syscall_enable_one_enable_all_disable_one"
+
+ diag "Syscall trace all events and enable/disable one"
+
+ create_lttng_session_ok $SESSION_NAME "$TRACE_PATH"
+
+ # enable one specific syscall, "openat"
+ lttng_enable_kernel_syscall_ok $SESSION_NAME openat
+
+ # enable all syscalls
+ lttng_enable_kernel_syscall_ok $SESSION_NAME
+
+ # disable one specific syscall, "openat"
+ lttng_disable_kernel_syscall_ok $SESSION_NAME openat
+
+ trace_testapp
+
+ # The trace should contain all syscalls, including 'openat' because
+ # enable-all overrides individually disabled syscalls.
+ validate_trace openat "$TRACE_PATH"
+
+ destroy_lttng_session_ok $SESSION_NAME
+
+ rm -rf "$TRACE_PATH"
+}
+
+function test_syscall_enable_one_enable_all_disable_all_disable_one()
+{
+ local TRACE_PATH=$(mktemp -d -t "tmp.${FUNCNAME[0]}_trace_path.XXXXXX")
+ SESSION_NAME="kernel_syscall_enable_one_enable_all_disable_all_disable_one"
+
+ diag "Syscall trace all events and enable/disable one"
+
+ create_lttng_session_ok $SESSION_NAME "$TRACE_PATH"
+
+ # enable one specific syscall, "openat"
+ lttng_enable_kernel_syscall_ok $SESSION_NAME openat
+
+ # enable all syscalls
+ lttng_enable_kernel_syscall_ok $SESSION_NAME
+
+ # disable all syscalls
+ lttng_disable_kernel_syscall_ok $SESSION_NAME
+
+ # disable one specific syscall, "openat"
+ lttng_disable_kernel_syscall_ok $SESSION_NAME openat
+
+ trace_testapp
+
+ # The trace shouldn't contain any syscalls, disable-all should disable
+ # even individually specified syscalls
+ trace_match_only openat 0 "$TRACE_PATH"
+
+ destroy_lttng_session_ok $SESSION_NAME
+
+ rm -rf "$TRACE_PATH"
+}
+
function test_syscall_enable_all_disable_all_twice()
{
- TRACE_PATH=$(mktemp -d)
+ local TRACE_PATH=$(mktemp -d -t "tmp.${FUNCNAME[0]}_trace_path.XXXXXX")
SESSION_NAME="kernel_syscall_enable_all_disable_all_twice"
diag "Syscall trace all events and enable/disable all twice"
function test_syscall_enable_one_disable_one()
{
- TRACE_PATH=$(mktemp -d)
+ local TRACE_PATH=$(mktemp -d -t "tmp.${FUNCNAME[0]}_trace_path.XXXXXX")
SESSION_NAME="kernel_syscall_enable_one_disable_one"
diag "Syscall trace one event and disable one"
function test_syscall_enable_two_disable_two()
{
- TRACE_PATH=$(mktemp -d)
+ local TRACE_PATH=$(mktemp -d -t "tmp.${FUNCNAME[0]}_trace_path.XXXXXX")
SESSION_NAME="kernel_syscall_enable_two_disable_two"
diag "Syscall trace two events and disable two"
function test_syscall_enable_two_disable_one()
{
- TRACE_PATH=$(mktemp -d)
+ local TRACE_PATH=$(mktemp -d -t "tmp.${FUNCNAME[0]}_trace_path.XXXXXX")
SESSION_NAME="kernel_syscall_enable_two_disable_one"
diag "Syscall trace two events and disable one"
function test_syscall_disable_twice()
{
- TRACE_PATH=$(mktemp -d)
+ local TRACE_PATH=$(mktemp -d -t "tmp.${FUNCNAME[0]}_trace_path.XXXXXX")
SESSION_NAME="kernel_syscall_disable_twice"
diag "Syscall trace one event and disable twice"
function test_syscall_disable_all_twice()
{
- TRACE_PATH=$(mktemp -d)
+ local TRACE_PATH=$(mktemp -d -t "tmp.${FUNCNAME[0]}_trace_path.XXXXXX")
SESSION_NAME="kernel_syscall_disable_all_twice"
diag "Syscall trace all events and disable all twice"
function test_syscall_enable_unknown()
{
- TRACE_PATH=$(mktemp -d)
+ local TRACE_PATH=$(mktemp -d -t "tmp.${FUNCNAME[0]}_trace_path.XXXXXX")
SESSION_NAME="kernel_syscall_enable_unknown"
diag "Syscall enable an unknown event"
function test_syscall_enable_all_enable_one()
{
- TRACE_PATH=$(mktemp -d)
+ local TRACE_PATH=$(mktemp -d -t "tmp.${FUNCNAME[0]}_trace_path.XXXXXX")
SESSION_NAME="kernel_syscall_enable_all_enable_one"
diag "Syscall enable all and enable one"
function test_syscall_disable_all_disable_one()
{
- TRACE_PATH=$(mktemp -d)
+ local TRACE_PATH=$(mktemp -d -t "tmp.${FUNCNAME[0]}_trace_path.XXXXXX")
SESSION_NAME="kernel_syscall_enable_all_enable_one"
diag "Syscall disable all and disable one"
function test_syscall_enable_channel_disable_all()
{
- TRACE_PATH=$(mktemp -d)
+ local TRACE_PATH=$(mktemp -d -t "tmp.${FUNCNAME[0]}_trace_path.XXXXXX")
SESSION_NAME="kernel_syscall_enable_channel_disable_all"
CHANNEL_NAME="channel"
function test_syscall_enable_channel_disable_one()
{
- TRACE_PATH=$(mktemp -d)
+ local TRACE_PATH=$(mktemp -d -t "tmp.${FUNCNAME[0]}_trace_path.XXXXXX")
SESSION_NAME="kernel_syscall_enable_channel_disable_all"
CHANNEL_NAME="channel"
print_test_banner "$TEST_DESC"
-if [ "$(id -u)" == "0" ]; then
- isroot=1
-else
- isroot=0
-fi
-
-skip $isroot "Root access is needed. Skipping all tests." $NUM_TESTS ||
+check_skip_kernel_test "$NUM_TESTS" "Skipping all tests." ||
{
+ validate_lttng_modules_present
start_lttng_sessiond
test_syscall_event_list
test_syscall_enable_all_disable_all
test_syscall_enable_all_disable_all_enable_all
test_syscall_enable_all_disable_all_twice
+ test_syscall_enable_all_enable_one_disable_all
+ test_syscall_enable_one_enable_all_disable_one
+ test_syscall_enable_one_enable_all_disable_all_disable_one
test_syscall_enable_one_disable_one
test_syscall_enable_two_disable_two
test_syscall_enable_two_disable_one