3 # Copyright (C) 2013 David Goulet <dgoulet@efficios.com>
5 # SPDX-License-Identifier: LGPL-2.1-only
7 TEST_DESC
="Streaming - Snapshot Kernel tracing"
10 TESTDIR
=$CURDIR/..
/..
/..
11 EVENT_NAME
="sched_switch"
15 TRACE_PATH
=$
(mktemp
-d)
19 source $TESTDIR/utils
/utils.sh
21 function snapshot_add_output
()
28 if [ ! -z $name ]; then
32 $TESTDIR/..
/src
/bin
/lttng
/$LTTNG_BIN snapshot add-output
-s $sess_name $extra_opt $trace_path >/dev
/null
2>&1
33 ok $?
"Added snapshot output $trace_path"
36 # Test a snapshot using a default name for the output destination.
37 function test_kernel_default_name_with_del
()
39 diag
"Test kernel snapshot streaming with default name with delete output"
40 create_lttng_session_no_output
$SESSION_NAME
41 enable_lttng_mmap_overwrite_kernel_channel
$SESSION_NAME $CHANNEL_NAME
42 lttng_enable_kernel_event
$SESSION_NAME $EVENT_NAME $CHANNEL_NAME
43 start_lttng_tracing_ok
$SESSION_NAME
44 snapshot_add_output
$SESSION_NAME "net://localhost"
45 lttng_snapshot_record
$SESSION_NAME
48 validate_trace
$EVENT_NAME $TRACE_PATH/$HOSTNAME/$SESSION_NAME*/snapshot-1
*
53 lttng_snapshot_del_output_ok
$SESSION_NAME 1
54 snapshot_add_output
$SESSION_NAME "net://localhost"
55 lttng_snapshot_record
$SESSION_NAME
57 # Validate test with the next ID since a del output was done prior.
58 validate_trace
$EVENT_NAME $TRACE_PATH/$HOSTNAME/$SESSION_NAME*/snapshot-2
*
63 stop_lttng_tracing_ok
$SESSION_NAME
64 destroy_lttng_session_ok
$SESSION_NAME
69 # Test a snapshot using a default name for the output destination.
70 function test_kernel_default_name
()
72 diag
"Test kernel snapshot streaming with default name"
73 create_lttng_session_no_output
$SESSION_NAME
74 enable_lttng_mmap_overwrite_kernel_channel
$SESSION_NAME $CHANNEL_NAME
75 lttng_enable_kernel_event
$SESSION_NAME $EVENT_NAME $CHANNEL_NAME
76 start_lttng_tracing_ok
$SESSION_NAME
77 snapshot_add_output
$SESSION_NAME "net://localhost"
78 lttng_snapshot_record
$SESSION_NAME
79 stop_lttng_tracing_ok
$SESSION_NAME
80 destroy_lttng_session_ok
$SESSION_NAME
82 validate_trace
$EVENT_NAME $TRACE_PATH/$HOSTNAME/$SESSION_NAME*/snapshot-1
*
88 # Test a snapshot using a custom name for the output destination.
89 function test_kernel_custom_name
()
92 local name
="asnapshotname"
94 diag
"Test kernel snapshot streaming with custom name"
95 create_lttng_session_no_output
$SESSION_NAME
96 enable_lttng_mmap_overwrite_kernel_channel
$SESSION_NAME $CHANNEL_NAME
97 lttng_enable_kernel_event
$SESSION_NAME $EVENT_NAME $CHANNEL_NAME
98 start_lttng_tracing_ok
$SESSION_NAME
99 snapshot_add_output
$SESSION_NAME "net://localhost" $name
100 lttng_snapshot_record
$SESSION_NAME
101 stop_lttng_tracing_ok
$SESSION_NAME
102 destroy_lttng_session_ok
$SESSION_NAME
104 if ls $TRACE_PATH/$HOSTNAME/$SESSION_NAME*/$name* &> /dev
/null
; then
105 ok
0 "Custom name snapshot exists"
107 validate_trace
$EVENT_NAME $TRACE_PATH/$HOSTNAME/$SESSION_NAME*/$name-*
110 fail
"No custom name snapshot found"
117 function test_kernel_n_snapshot
()
119 diag
"Test kernel snapshot streaming multiple consecutive snapshot"
120 create_lttng_session_no_output
$SESSION_NAME
121 enable_lttng_mmap_overwrite_kernel_channel
$SESSION_NAME $CHANNEL_NAME
122 lttng_enable_kernel_event
$SESSION_NAME $EVENT_NAME $CHANNEL_NAME
123 snapshot_add_output
$SESSION_NAME "net://localhost"
127 start_lttng_tracing_ok
$SESSION_NAME
128 lttng_snapshot_record
$SESSION_NAME
129 stop_lttng_tracing_ok
$SESSION_NAME
130 validate_trace
$EVENT_NAME $TRACE_PATH/$HOSTNAME/$SESSION_NAME*/snapshot-1
*
131 if [ $?
-ne 0 ]; then
135 rm -rf $TRACE_PATH/$HOSTNAME
139 destroy_lttng_session_ok
$SESSION_NAME
143 plan_tests
$NUM_TESTS
145 print_test_banner
"$TEST_DESC"
147 if [ "$(id -u)" == "0" ]; then
153 skip
$isroot "Root access is needed. Skipping all kernel streaming tests" $NUM_TESTS ||
155 validate_lttng_modules_present
157 start_lttng_relayd
"-o $TRACE_PATH"
160 tests
=( test_kernel_default_name
161 test_kernel_custom_name
162 test_kernel_default_name_with_del
163 test_kernel_n_snapshot
166 for fct_test
in ${tests[@]};
168 SESSION_NAME
=$
(randstring
16 0)
170 if [ $?
-eq 0 ]; then
171 # Only delete if successful