3 # Copyright (C) - 2013 David Goulet <dgoulet@efficios.com>
5 # SPDX-License-Identifier: LGPL-2.1-only
7 TEST_DESC
="Streaming - Snapshot UST tracing"
9 CURDIR
=$
(dirname "$0")/
10 TESTDIR
="$CURDIR/../../.."
11 EVENT_NAME
="tp:tptest"
14 TESTAPP_PATH
="$TESTDIR/utils/testapp"
15 TESTAPP_NAME
="gen-ust-events"
16 TESTAPP_BIN
="$TESTAPP_PATH/$TESTAPP_NAME/$TESTAPP_NAME"
21 TRACE_PATH
=$
(mktemp
-d -t tmp.test_snapshots_ust_streaming_trace_path.XXXXXX
)
25 # shellcheck source-path=SCRIPTDIR/../../../
26 source "$TESTDIR/utils/utils.sh"
28 if [ ! -x "$TESTAPP_BIN" ]; then
29 BAIL_OUT
"No UST events binary detected."
32 function snapshot_add_output
()
40 if [ -n "$sess_name" ] ; then
41 options
+=(-s "$sess_name")
44 if [ -n "$name" ]; then
48 # Checking for any other optional arguments that should be passed to the lttng command
50 if [ -n "${args[*]:3}" ] ; then
51 options
+=("${args[@]:3}")
54 # The trace_path is a positional argument and must always come last if it is defined
55 if [ -n "$trace_path" ] ; then
56 options
+=("$trace_path")
59 "$TESTDIR/../src/bin/lttng/$LTTNG_BIN" snapshot add-output
"${options[@]}" >/dev
/null
2>&1
60 ok $?
"Added snapshot output $trace_path"
63 # Start trace application and return once one event has been hit.
64 function start_test_app
()
67 tmp_file
=$
(mktemp
-u -t tmp.test_
"${FUNCNAME[0]}"_tmp_file.XXXXXX
)
69 # Start application with a temporary file.
70 $TESTAPP_BIN -i $NR_ITER -w $NR_USEC_WAIT --sync-after-first-event "$tmp_file" &
73 ok
$ret "Start application to trace"
75 # Wait for the application file to appear indicating that at least one
76 # tracepoint has been fired.
77 while [ ! -f "$tmp_file" ]; do
80 diag
"Removing test app temporary file $tmp_file"
84 function stop_test_apps
()
86 diag
"Stopping $TESTAPP_NAME"
88 wait "${APP_PIDS[@]}" 2>/dev
/null
92 # Test a snapshot using a default name for the output destination.
93 function test_ust_default_name_with_del
()
95 diag
"Test UST snapshot streaming with default name with delete output"
96 create_lttng_session_no_output
"$SESSION_NAME"
97 enable_lttng_mmap_overwrite_ust_channel
"$SESSION_NAME" $CHANNEL_NAME
98 enable_ust_lttng_event_ok
"$SESSION_NAME" $EVENT_NAME $CHANNEL_NAME
99 start_lttng_tracing_ok
"$SESSION_NAME"
103 snapshot_add_output
"$SESSION_NAME" "net://localhost"
104 lttng_snapshot_record
"$SESSION_NAME"
107 validate_trace_path_ust_uid_snapshot_network
"$TRACE_PATH" "$SESSION_NAME" "snapshot-1" 0
108 if ! validate_trace
$EVENT_NAME "$TRACE_PATH/$HOSTNAME/$SESSION_NAME*/snapshot-1*" ; then
113 lttng_snapshot_del_output_ok
"$SESSION_NAME" 1
114 snapshot_add_output
"$SESSION_NAME" "net://localhost"
115 lttng_snapshot_record
"$SESSION_NAME"
117 # Validate test with the next ID since a del output was done prior.
118 validate_trace_path_ust_uid_snapshot_network
"$TRACE_PATH" "$SESSION_NAME" "snapshot-2" 1
119 if ! validate_trace
$EVENT_NAME "$TRACE_PATH/$HOSTNAME/$SESSION_NAME*/snapshot-2*" ; then
124 stop_lttng_tracing_ok
"$SESSION_NAME"
125 destroy_lttng_session_ok
"$SESSION_NAME"
132 # Test a snapshot using a default name for the output destination.
133 function test_ust_default_name
()
135 diag
"Test UST snapshot streaming with default name"
136 create_lttng_session_no_output
"$SESSION_NAME"
137 enable_lttng_mmap_overwrite_ust_channel
"$SESSION_NAME" $CHANNEL_NAME
138 enable_ust_lttng_event_ok
"$SESSION_NAME" $EVENT_NAME $CHANNEL_NAME
139 start_lttng_tracing_ok
"$SESSION_NAME"
143 snapshot_add_output
"$SESSION_NAME" "net://localhost"
144 lttng_snapshot_record
"$SESSION_NAME"
145 stop_lttng_tracing_ok
"$SESSION_NAME"
146 destroy_lttng_session_ok
"$SESSION_NAME"
148 validate_trace_path_ust_uid_snapshot_network
"$TRACE_PATH" "$SESSION_NAME" "snapshot-1" 0
149 validate_trace
$EVENT_NAME "$TRACE_PATH/$HOSTNAME/$SESSION_NAME*/snapshot-1*"
157 function test_ust_default_name_custom_uri
()
159 diag
"Test UST snapshot streaming with default name with custom URL"
160 create_lttng_session_no_output
"$SESSION_NAME"
161 enable_lttng_mmap_overwrite_ust_channel
"$SESSION_NAME" $CHANNEL_NAME
162 enable_ust_lttng_event_ok
"$SESSION_NAME" $EVENT_NAME $CHANNEL_NAME
163 start_lttng_tracing_ok
"$SESSION_NAME"
167 snapshot_add_output
"$SESSION_NAME" '' '' -C tcp
://localhost
:5342 -D tcp
://localhost
:5343
168 lttng_snapshot_record
"$SESSION_NAME"
169 stop_lttng_tracing_ok
"$SESSION_NAME"
170 destroy_lttng_session_ok
"$SESSION_NAME"
172 validate_trace_path_ust_uid_snapshot_network
"$TRACE_PATH" "$SESSION_NAME" "snapshot-1" 0
173 validate_trace
$EVENT_NAME "$TRACE_PATH/$HOSTNAME/$SESSION_NAME*/snapshot-1*"
181 # Test a snapshot using a custom name for the output destination.
182 function test_ust_custom_name
()
185 local name
="asnapshotname"
187 diag
"Test UST snapshot streaming with custom name"
188 create_lttng_session_no_output
"$SESSION_NAME"
189 enable_lttng_mmap_overwrite_ust_channel
"$SESSION_NAME" $CHANNEL_NAME
190 enable_ust_lttng_event_ok
"$SESSION_NAME" $EVENT_NAME $CHANNEL_NAME
191 start_lttng_tracing_ok
"$SESSION_NAME"
195 snapshot_add_output
"$SESSION_NAME" "net://localhost" $name
196 lttng_snapshot_record
"$SESSION_NAME"
197 stop_lttng_tracing_ok
"$SESSION_NAME"
198 destroy_lttng_session_ok
"$SESSION_NAME"
200 if ls "$TRACE_PATH/$HOSTNAME/$SESSION_NAME"*/"$name"* &> /dev
/null
; then
201 ok
0 "Custom name snapshot exists"
203 validate_trace_path_ust_uid_snapshot_network
"$TRACE_PATH" "$SESSION_NAME" "$name" 0
204 validate_trace
$EVENT_NAME "$TRACE_PATH/$HOSTNAME/$SESSION_NAME*/$name-*"
207 fail
"No custom name snapshot found"
216 function test_ust_n_snapshot
()
218 diag
"Test ust snapshot streaming multiple consecutive snapshot"
219 create_lttng_session_no_output
"$SESSION_NAME"
220 enable_lttng_mmap_overwrite_ust_channel
"$SESSION_NAME" $CHANNEL_NAME
221 enable_ust_lttng_event_ok
"$SESSION_NAME" $EVENT_NAME $CHANNEL_NAME
222 snapshot_add_output
"$SESSION_NAME" "net://localhost"
226 start_lttng_tracing_ok
"$SESSION_NAME"
227 lttng_snapshot_record
"$SESSION_NAME"
228 stop_lttng_tracing_ok
"$SESSION_NAME"
229 validate_trace_path_ust_uid_snapshot_network
"$TRACE_PATH" "$SESSION_NAME" "snapshot-1" "$i"
230 if ! validate_trace
$EVENT_NAME "$TRACE_PATH/$HOSTNAME/$SESSION_NAME*/snapshot-1*" ; then
234 rm -rf "${TRACE_PATH:?}/${HOSTNAME}"
238 destroy_lttng_session_ok
"$SESSION_NAME"
243 plan_tests
$NUM_TESTS
245 print_test_banner
"$TEST_DESC"
247 bail_out_if_no_babeltrace
249 start_lttng_relayd
"-o $TRACE_PATH"
250 # shellcheck disable=SC2119
253 tests
=( test_ust_default_name_with_del
254 test_ust_default_name
256 test_ust_default_name_custom_uri
260 for fct_test
in "${tests[@]}";
262 SESSION_NAME
=$
(randstring
16 0)
263 if ${fct_test} ; then
264 # Only delete if successful
271 # shellcheck disable=SC2119
273 # shellcheck disable=SC2119