3 # Copyright (C) - 2015 Jonathan Rajotte <jonathan.rajotte-julien@efficios.com>
4 # Copyright (C) - 2016 Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
6 # This library is free software; you can redistribute it and/or modify it under
7 # the terms of the GNU Lesser General Public License as published by the Free
8 # Software Foundation; version 2.1 of the License.
10 # This library is distributed in the hope that it will be useful, but WITHOUT
11 # ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
12 # FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more
15 # You should have received a copy of the GNU Lesser General Public License
16 # along with this library; if not, write to the Free Software Foundation, Inc.,
17 # 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
18 TEST_DESC
="UST - Blocking mode"
21 TESTDIR
=$CURDIR/..
/..
/..
22 SESSION_NAME
="blocking"
23 CHANNEL_NAME
="testchan"
25 TESTAPP_PATH
="$TESTDIR/utils/testapp"
26 TESTAPP_NAME
="gen-ust-events"
27 TESTAPP_BIN
="$TESTAPP_PATH/$TESTAPP_NAME/$TESTAPP_NAME"
28 EVENT_NAME
="tp:tptest"
32 source $TESTDIR/utils
/utils.sh
34 # MUST set TESTDIR before calling those functions
35 # Run app on CPU 0 to ensure we only write in a single ring buffer.
38 taskset
0x00000001 $TESTAPP_BIN $NUM_EVENT
39 ok $?
"Application done"
42 function test_ust_implicit_no_blocking
()
45 diag
"UST implicit non-blocking mode (default): will hang if fails"
48 # session in no-output mode
49 create_lttng_session_no_output
$SESSION_NAME
50 enable_ust_lttng_event_ok
$SESSION_NAME "$EVENT_NAME"
51 start_lttng_tracing_ok
$SESSION_NAME
53 stop_lttng_tracing_ok
$SESSION_NAME
54 destroy_lttng_session_ok
$SESSION_NAME
60 function test_ust_implicit_no_blocking_with_channel_blocking
()
63 diag
"UST implicit non-blocking mode (default) with blocking-timeout=inf channel: will hang if fails"
66 # session in no-output mode
67 create_lttng_session_no_output
$SESSION_NAME
68 enable_ust_lttng_channel_ok
$SESSION_NAME $CHANNEL_NAME "--blocking-timeout=inf"
69 enable_ust_lttng_event_ok
$SESSION_NAME "$EVENT_NAME" $CHANNEL_NAME
70 start_lttng_tracing_ok
$SESSION_NAME
72 stop_lttng_tracing_ok
$SESSION_NAME
73 destroy_lttng_session_ok
$SESSION_NAME
79 function test_ust_timeout_no_blocking
()
82 diag
"UST 1ms timeout blocking mode: will hang if fails"
85 # session in no-output mode
86 create_lttng_session_no_output
$SESSION_NAME
87 # blocking timeout 1ms
88 enable_ust_lttng_channel_ok
$SESSION_NAME $CHANNEL_NAME "--blocking-timeout=1000"
89 enable_ust_lttng_event_ok
$SESSION_NAME "$EVENT_NAME" $CHANNEL_NAME
90 start_lttng_tracing_ok
$SESSION_NAME
91 LTTNG_UST_ALLOW_BLOCKING
=1 run_app
92 stop_lttng_tracing_ok
$SESSION_NAME
93 destroy_lttng_session_ok
$SESSION_NAME
99 function test_ust_snapshot_no_blocking
()
102 diag
"UST blocking mode: don't block in snapshot mode"
104 # Test without the plugin
106 create_lttng_session_ok
$SESSION_NAME $TRACE_PATH --snapshot
107 # blocking timeout 1ms
108 enable_ust_lttng_channel_ok
$SESSION_NAME $CHANNEL_NAME "--blocking-timeout=1000"
109 enable_ust_lttng_event_ok
$SESSION_NAME "$EVENT_NAME" $CHANNEL_NAME
110 start_lttng_tracing_ok
$SESSION_NAME
111 LTTNG_UST_ALLOW_BLOCKING
=1 run_app
112 stop_lttng_tracing_ok
$SESSION_NAME
113 destroy_lttng_session_ok
$SESSION_NAME
119 function test_ust_blocking_no_discard
()
122 diag
"UST blocking mode: no event discarded"
124 # Test without the plugin
126 create_lttng_session_ok
$SESSION_NAME $TRACE_PATH
127 # infinite blocking timeout
128 enable_ust_lttng_channel_ok
$SESSION_NAME $CHANNEL_NAME "--blocking-timeout=inf"
129 enable_ust_lttng_event_ok
$SESSION_NAME "$EVENT_NAME" $CHANNEL_NAME
130 start_lttng_tracing_ok
$SESSION_NAME
131 LTTNG_UST_ALLOW_BLOCKING
=1 run_app
132 stop_lttng_tracing_ok
$SESSION_NAME
133 destroy_lttng_session_ok
$SESSION_NAME
136 nr_events
=$
(babeltrace
$TRACE_PATH 2>/dev
/null |
wc -l)
138 test $nr_events -eq $NUM_EVENT
139 ok $?
"No event lost with UST blocking mode: found $nr_events expect $NUM_EVENT"
142 plan_tests
$NUM_TESTS
144 print_test_banner
"$TEST_DESC"
147 "test_ust_implicit_no_blocking"
148 "test_ust_implicit_no_blocking_with_channel_blocking"
149 "test_ust_timeout_no_blocking"
150 "test_ust_snapshot_no_blocking"
151 "test_ust_blocking_no_discard"
154 TEST_COUNT
=${#TESTS[@]}
157 while [ "$i" -lt "$TEST_COUNT" ]; do
159 TRACE_PATH
=$
(mktemp
-d)