1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125
|
#!/bin/bash
#
# SPDX-FileCopyrightText: 2017 Julien Desfossez <jdesfossez@efficios.com>
#
# SPDX-License-Identifier: GPL-2.0-only
#
TEST_DESC="Kernel tracer - lttng-logger"
CURDIR=$(dirname $0)/
TESTDIR=$CURDIR/../..
NUM_TESTS=32
PAYLOAD="test_logger"
SESSION_NAME="kernel_event_basic"
source $TESTDIR/utils/utils.sh
function test_proc_logger()
{
diag "Test /proc/lttng-logger"
local TRACE_PATH=$(mktemp -d -t "tmp.${FUNCNAME[0]}_trace_path.XXXXXX")
create_lttng_session_ok $SESSION_NAME $TRACE_PATH
lttng_enable_kernel_event $SESSION_NAME "lttng_logger"
start_lttng_tracing_ok
test -e /proc/lttng-logger
if test $? = 0; then
pass "/proc/lttng-logger exists"
echo -n "$PAYLOAD proc" > /proc/lttng-logger
ok $? "Write in /proc/lttng-logger"
else
fail "No /proc/lttng-logger"
fi
stop_lttng_tracing_ok
validate_trace_count "lttng_logger" $TRACE_PATH 1
validate_trace_only_exp "$PAYLOAD" $TRACE_PATH
destroy_lttng_session_ok $SESSION_NAME
rm -rf $TRACE_PATH
}
function test_dev_logger()
{
diag "Test /dev/lttng-logger"
local TRACE_PATH=$(mktemp -d -t "tmp.${FUNCNAME[0]}_trace_path.XXXXXX")
create_lttng_session_ok $SESSION_NAME $TRACE_PATH
lttng_enable_kernel_event $SESSION_NAME "lttng_logger"
start_lttng_tracing_ok
test -c /dev/lttng-logger
if test $? = 0; then
pass "/dev/lttng-logger is a character device"
echo -n "$PAYLOAD dev" > /dev/lttng-logger
ok $? "Write in /dev/lttng-logger"
else
fail "No /dev/lttng-logger"
fi
stop_lttng_tracing_ok
validate_trace_count "lttng_logger" $TRACE_PATH 1
validate_trace_only_exp "$PAYLOAD" $TRACE_PATH
destroy_lttng_session_ok $SESSION_NAME
rm -rf $TRACE_PATH
}
function test_payload_limit()
{
diag "Test lttng-logger payload limit"
local TRACE_PATH=$(mktemp -d -t "tmp.${FUNCNAME[0]}_trace_path.XXXXXX")
create_lttng_session_ok $SESSION_NAME $TRACE_PATH
lttng_enable_kernel_event $SESSION_NAME "lttng_logger"
start_lttng_tracing_ok
# Write 100 times "test_logger", which generates 1200 characters, we expect
# the tracer to write 2 events from that string because it limits the
# input to 1024 strings.
printf "%.s $PAYLOAD" {1..100} > /proc/lttng-logger
printf "%.s $PAYLOAD" {1..100} > /dev/lttng-logger
stop_lttng_tracing_ok
validate_trace_count "lttng_logger" $TRACE_PATH 4
validate_trace_only_exp "$PAYLOAD" $TRACE_PATH
destroy_lttng_session_ok $SESSION_NAME
rm -rf $TRACE_PATH
}
# MUST set TESTDIR before calling those functions
plan_tests $NUM_TESTS
print_test_banner "$TEST_DESC"
check_skip_kernel_test "$NUM_TESTS" "Skipping all tests." ||
{
lttng_modules_loaded_fail
validate_lttng_modules_present
start_lttng_sessiond
test_proc_logger
test_dev_logger
test_payload_limit
stop_lttng_sessiond
lttng_modules_loaded_fail
}
|