3 # Copyright (C) 2015 Jonathan Rajotte <jonathan.rajotte-julien@efficios.com>
4 # Copyright (C) 2016 Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
6 # SPDX-License-Identifier: LGPL-2.1-only
8 TEST_DESC
="UST - Blocking mode"
11 TESTDIR
=$CURDIR/..
/..
/..
12 SESSION_NAME
="blocking"
13 CHANNEL_NAME
="testchan"
15 TESTAPP_PATH
="$TESTDIR/utils/testapp"
16 TESTAPP_NAME
="gen-ust-events"
17 TESTAPP_BIN
="$TESTAPP_PATH/$TESTAPP_NAME/$TESTAPP_NAME"
18 EVENT_NAME
="tp:tptest"
22 source $TESTDIR/utils
/utils.sh
24 # MUST set TESTDIR before calling those functions
25 # Run app on CPU 0 to ensure we only write in a single ring buffer.
28 taskset
0x00000001 $TESTAPP_BIN -i $NUM_EVENT
29 ok $?
"Application done"
32 function test_ust_implicit_no_blocking
()
35 diag
"UST implicit non-blocking mode (default): will hang if fails"
38 # session in no-output mode
39 create_lttng_session_no_output
$SESSION_NAME
40 enable_ust_lttng_event_ok
$SESSION_NAME "$EVENT_NAME"
41 start_lttng_tracing_ok
$SESSION_NAME
43 stop_lttng_tracing_ok
$SESSION_NAME
44 destroy_lttng_session_ok
$SESSION_NAME
50 function test_ust_implicit_no_blocking_with_channel_blocking
()
53 diag
"UST implicit non-blocking mode (default) with blocking-timeout=inf channel: will hang if fails"
56 # session in no-output mode
57 create_lttng_session_no_output
$SESSION_NAME
58 enable_ust_lttng_channel_ok
$SESSION_NAME $CHANNEL_NAME "--blocking-timeout=inf"
59 enable_ust_lttng_event_ok
$SESSION_NAME "$EVENT_NAME" $CHANNEL_NAME
60 start_lttng_tracing_ok
$SESSION_NAME
62 stop_lttng_tracing_ok
$SESSION_NAME
63 destroy_lttng_session_ok
$SESSION_NAME
69 function test_ust_timeout_no_blocking
()
72 diag
"UST 1ms timeout blocking mode: will hang if fails"
75 # session in no-output mode
76 create_lttng_session_no_output
$SESSION_NAME
77 # blocking timeout 1ms
78 enable_ust_lttng_channel_ok
$SESSION_NAME $CHANNEL_NAME "--blocking-timeout=1000"
79 enable_ust_lttng_event_ok
$SESSION_NAME "$EVENT_NAME" $CHANNEL_NAME
80 start_lttng_tracing_ok
$SESSION_NAME
81 LTTNG_UST_ALLOW_BLOCKING
=1 run_app
82 stop_lttng_tracing_ok
$SESSION_NAME
83 destroy_lttng_session_ok
$SESSION_NAME
89 function test_ust_snapshot_no_blocking
()
92 diag
"UST blocking mode: don't block in snapshot mode"
94 # Test without the plugin
96 create_lttng_session_ok
$SESSION_NAME $TRACE_PATH --snapshot
97 # blocking timeout 1ms
98 enable_ust_lttng_channel_ok
$SESSION_NAME $CHANNEL_NAME "--blocking-timeout=1000"
99 enable_ust_lttng_event_ok
$SESSION_NAME "$EVENT_NAME" $CHANNEL_NAME
100 start_lttng_tracing_ok
$SESSION_NAME
101 LTTNG_UST_ALLOW_BLOCKING
=1 run_app
102 stop_lttng_tracing_ok
$SESSION_NAME
103 destroy_lttng_session_ok
$SESSION_NAME
109 function test_ust_blocking_no_discard
()
112 diag
"UST blocking mode: no event discarded"
114 # Test without the plugin
116 create_lttng_session_ok
$SESSION_NAME $TRACE_PATH
117 # infinite blocking timeout
118 enable_ust_lttng_channel_ok
$SESSION_NAME $CHANNEL_NAME "--blocking-timeout=inf"
119 enable_ust_lttng_event_ok
$SESSION_NAME "$EVENT_NAME" $CHANNEL_NAME
120 start_lttng_tracing_ok
$SESSION_NAME
121 LTTNG_UST_ALLOW_BLOCKING
=1 run_app
122 stop_lttng_tracing_ok
$SESSION_NAME
123 destroy_lttng_session_ok
$SESSION_NAME
126 nr_events
=$
("$BABELTRACE_BIN" $TRACE_PATH 2>/dev
/null |
wc -l)
128 test $nr_events -eq $NUM_EVENT
129 ok $?
"No event lost with UST blocking mode: found $nr_events expect $NUM_EVENT"
132 plan_tests
$NUM_TESTS
134 print_test_banner
"$TEST_DESC"
136 bail_out_if_no_babeltrace
139 "test_ust_implicit_no_blocking"
140 "test_ust_implicit_no_blocking_with_channel_blocking"
141 "test_ust_timeout_no_blocking"
142 "test_ust_snapshot_no_blocking"
143 "test_ust_blocking_no_discard"
146 TEST_COUNT
=${#TESTS[@]}
149 while [ "$i" -lt "$TEST_COUNT" ]; do
151 TRACE_PATH
=$
(mktemp
--tmpdir -d tmp.test_blocking_ust_trace_path.XXXXXX
)