3 # Copyright (C) 2017 Julien Desfossez <jdesfossez@efficios.com>
5 # SPDX-License-Identifier: GPL-2.0-only
8 TEST_DESC
="Kernel tracer - lttng-logger"
14 SESSION_NAME
="kernel_event_basic"
16 source $TESTDIR/utils
/utils.sh
18 function test_proc_logger
()
20 diag
"Test /proc/lttng-logger"
22 TRACE_PATH
=$
(mktemp
-d)
24 create_lttng_session_ok
$SESSION_NAME $TRACE_PATH
26 lttng_enable_kernel_event
$SESSION_NAME "lttng_logger"
28 start_lttng_tracing_ok
30 test -e /proc
/lttng-logger
32 pass
"/proc/lttng-logger exists"
33 echo -n "$PAYLOAD proc" > /proc
/lttng-logger
34 ok $?
"Write in /proc/lttng-logger"
36 fail
"No /proc/lttng-logger"
41 validate_trace_count
"lttng_logger" $TRACE_PATH 1
42 validate_trace_only_exp
"$PAYLOAD" $TRACE_PATH
44 destroy_lttng_session_ok
$SESSION_NAME
49 function test_dev_logger
()
51 diag
"Test /dev/lttng-logger"
53 TRACE_PATH
=$
(mktemp
-d)
55 create_lttng_session_ok
$SESSION_NAME $TRACE_PATH
57 lttng_enable_kernel_event
$SESSION_NAME "lttng_logger"
59 start_lttng_tracing_ok
61 test -c /dev
/lttng-logger
63 pass
"/dev/lttng-logger is a character device"
64 echo -n "$PAYLOAD dev" > /dev
/lttng-logger
65 ok $?
"Write in /dev/lttng-logger"
67 fail
"No /dev/lttng-logger"
72 validate_trace_count
"lttng_logger" $TRACE_PATH 1
73 validate_trace_only_exp
"$PAYLOAD" $TRACE_PATH
75 destroy_lttng_session_ok
$SESSION_NAME
80 function test_payload_limit
()
82 diag
"Test lttng-logger payload limit"
84 TRACE_PATH
=$
(mktemp
-d)
86 create_lttng_session_ok
$SESSION_NAME $TRACE_PATH
88 lttng_enable_kernel_event
$SESSION_NAME "lttng_logger"
90 start_lttng_tracing_ok
92 # Write 100 times "test_logger", which generates 1200 characters, we expect
93 # the tracer to write 2 events from that string because it limits the
94 # input to 1024 strings.
95 printf "%.s $PAYLOAD" {1.
.100} > /proc
/lttng-logger
96 printf "%.s $PAYLOAD" {1.
.100} > /dev
/lttng-logger
100 validate_trace_count
"lttng_logger" $TRACE_PATH 4
101 validate_trace_only_exp
"$PAYLOAD" $TRACE_PATH
103 destroy_lttng_session_ok
$SESSION_NAME
108 # MUST set TESTDIR before calling those functions
109 plan_tests
$NUM_TESTS
111 print_test_banner
"$TEST_DESC"
113 if [ "$(id -u)" == "0" ]; then
119 skip
$isroot "Root access is needed. Skipping all tests." $NUM_TESTS ||