Commit | Line | Data |
---|---|---|
de7e372e MD |
1 | #!/bin/bash |
2 | # | |
9d16b343 MJ |
3 | # Copyright (C) 2015 Jonathan Rajotte <jonathan.rajotte-julien@efficios.com> |
4 | # Copyright (C) 2016 Mathieu Desnoyers <mathieu.desnoyers@efficios.com> | |
de7e372e | 5 | # |
9d16b343 MJ |
6 | # SPDX-License-Identifier: LGPL-2.1-only |
7 | ||
de7e372e MD |
8 | TEST_DESC="UST - Blocking mode" |
9 | ||
10 | CURDIR=$(dirname $0)/ | |
11 | TESTDIR=$CURDIR/../../.. | |
12 | SESSION_NAME="blocking" | |
491d1539 | 13 | CHANNEL_NAME="testchan" |
de7e372e MD |
14 | |
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" | |
19 | ||
491d1539 | 20 | NUM_TESTS=49 |
de7e372e | 21 | |
2a05e025 OD |
22 | # shellcheck source=../utils/utils.sh |
23 | source "$TESTDIR/utils/utils.sh" | |
de7e372e MD |
24 | |
25 | # MUST set TESTDIR before calling those functions | |
2a05e025 | 26 | # Run app on a single CPU to ensure we only write in a single ring buffer. |
de7e372e MD |
27 | function run_app() |
28 | { | |
2a05e025 | 29 | taskset --cpu-list "$(get_any_available_cpu)" $TESTAPP_BIN -i $NUM_EVENT |
de7e372e MD |
30 | ok $? "Application done" |
31 | } | |
32 | ||
33 | function test_ust_implicit_no_blocking() | |
34 | { | |
491d1539 | 35 | NUM_EVENT=5000000 |
de7e372e MD |
36 | diag "UST implicit non-blocking mode (default): will hang if fails" |
37 | ||
de7e372e | 38 | start_lttng_sessiond |
491d1539 | 39 | # session in no-output mode |
de7e372e MD |
40 | create_lttng_session_no_output $SESSION_NAME |
41 | enable_ust_lttng_event_ok $SESSION_NAME "$EVENT_NAME" | |
42 | start_lttng_tracing_ok $SESSION_NAME | |
43 | run_app | |
44 | stop_lttng_tracing_ok $SESSION_NAME | |
45 | destroy_lttng_session_ok $SESSION_NAME | |
46 | stop_lttng_sessiond | |
47 | ||
48 | ok 0 "Does not hang" | |
49 | } | |
50 | ||
491d1539 | 51 | function test_ust_implicit_no_blocking_with_channel_blocking() |
de7e372e | 52 | { |
491d1539 | 53 | NUM_EVENT=5000000 |
63dd9b28 | 54 | diag "UST implicit non-blocking mode (default) with blocking-timeout=inf channel: will hang if fails" |
de7e372e | 55 | |
de7e372e | 56 | start_lttng_sessiond |
491d1539 | 57 | # session in no-output mode |
de7e372e | 58 | create_lttng_session_no_output $SESSION_NAME |
63dd9b28 | 59 | enable_ust_lttng_channel_ok $SESSION_NAME $CHANNEL_NAME "--blocking-timeout=inf" |
491d1539 | 60 | enable_ust_lttng_event_ok $SESSION_NAME "$EVENT_NAME" $CHANNEL_NAME |
de7e372e | 61 | start_lttng_tracing_ok $SESSION_NAME |
491d1539 | 62 | run_app |
de7e372e MD |
63 | stop_lttng_tracing_ok $SESSION_NAME |
64 | destroy_lttng_session_ok $SESSION_NAME | |
65 | stop_lttng_sessiond | |
66 | ||
67 | ok 0 "Does not hang" | |
68 | } | |
69 | ||
70 | function test_ust_timeout_no_blocking() | |
71 | { | |
72 | NUM_EVENT=12500 | |
491d1539 | 73 | diag "UST 1ms timeout blocking mode: will hang if fails" |
de7e372e MD |
74 | |
75 | start_lttng_sessiond | |
491d1539 | 76 | # session in no-output mode |
de7e372e | 77 | create_lttng_session_no_output $SESSION_NAME |
491d1539 MD |
78 | # blocking timeout 1ms |
79 | enable_ust_lttng_channel_ok $SESSION_NAME $CHANNEL_NAME "--blocking-timeout=1000" | |
80 | enable_ust_lttng_event_ok $SESSION_NAME "$EVENT_NAME" $CHANNEL_NAME | |
de7e372e | 81 | start_lttng_tracing_ok $SESSION_NAME |
491d1539 | 82 | LTTNG_UST_ALLOW_BLOCKING=1 run_app |
de7e372e MD |
83 | stop_lttng_tracing_ok $SESSION_NAME |
84 | destroy_lttng_session_ok $SESSION_NAME | |
85 | stop_lttng_sessiond | |
86 | ||
87 | ok 0 "Does not hang" | |
88 | } | |
89 | ||
90 | function test_ust_snapshot_no_blocking() | |
91 | { | |
491d1539 | 92 | NUM_EVENT=5000000 |
de7e372e MD |
93 | diag "UST blocking mode: don't block in snapshot mode" |
94 | ||
95 | # Test without the plugin | |
96 | start_lttng_sessiond | |
97 | create_lttng_session_ok $SESSION_NAME $TRACE_PATH --snapshot | |
491d1539 MD |
98 | # blocking timeout 1ms |
99 | enable_ust_lttng_channel_ok $SESSION_NAME $CHANNEL_NAME "--blocking-timeout=1000" | |
100 | enable_ust_lttng_event_ok $SESSION_NAME "$EVENT_NAME" $CHANNEL_NAME | |
de7e372e | 101 | start_lttng_tracing_ok $SESSION_NAME |
491d1539 | 102 | LTTNG_UST_ALLOW_BLOCKING=1 run_app |
de7e372e MD |
103 | stop_lttng_tracing_ok $SESSION_NAME |
104 | destroy_lttng_session_ok $SESSION_NAME | |
105 | stop_lttng_sessiond | |
106 | ||
107 | ok 0 "Does not hang" | |
108 | } | |
109 | ||
110 | function test_ust_blocking_no_discard() | |
111 | { | |
491d1539 | 112 | NUM_EVENT=5000000 |
de7e372e MD |
113 | diag "UST blocking mode: no event discarded" |
114 | ||
115 | # Test without the plugin | |
116 | start_lttng_sessiond | |
117 | create_lttng_session_ok $SESSION_NAME $TRACE_PATH | |
491d1539 | 118 | # infinite blocking timeout |
63dd9b28 | 119 | enable_ust_lttng_channel_ok $SESSION_NAME $CHANNEL_NAME "--blocking-timeout=inf" |
491d1539 | 120 | enable_ust_lttng_event_ok $SESSION_NAME "$EVENT_NAME" $CHANNEL_NAME |
de7e372e | 121 | start_lttng_tracing_ok $SESSION_NAME |
491d1539 | 122 | LTTNG_UST_ALLOW_BLOCKING=1 run_app |
de7e372e MD |
123 | stop_lttng_tracing_ok $SESSION_NAME |
124 | destroy_lttng_session_ok $SESSION_NAME | |
125 | stop_lttng_sessiond | |
126 | ||
c125de8f | 127 | nr_events=$("$BABELTRACE_BIN" $TRACE_PATH 2>/dev/null | wc -l) |
de7e372e MD |
128 | |
129 | test $nr_events -eq $NUM_EVENT | |
130 | ok $? "No event lost with UST blocking mode: found $nr_events expect $NUM_EVENT" | |
131 | } | |
132 | ||
133 | plan_tests $NUM_TESTS | |
134 | ||
135 | print_test_banner "$TEST_DESC" | |
136 | ||
c125de8f FD |
137 | bail_out_if_no_babeltrace |
138 | ||
de7e372e MD |
139 | TESTS=( |
140 | "test_ust_implicit_no_blocking" | |
491d1539 | 141 | "test_ust_implicit_no_blocking_with_channel_blocking" |
de7e372e MD |
142 | "test_ust_timeout_no_blocking" |
143 | "test_ust_snapshot_no_blocking" | |
144 | "test_ust_blocking_no_discard" | |
145 | ) | |
146 | ||
147 | TEST_COUNT=${#TESTS[@]} | |
148 | i=0 | |
149 | ||
150 | while [ "$i" -lt "$TEST_COUNT" ]; do | |
151 | ||
8d5a3312 | 152 | TRACE_PATH=$(mktemp -d -t tmp.test_blocking_ust_trace_path.XXXXXX) |
de7e372e MD |
153 | |
154 | # Execute test | |
155 | ${TESTS[$i]} | |
156 | ||
157 | rm -rf $TRACE_PATH | |
158 | ||
159 | let "i++" | |
160 | done |