Fix: Tests that assume CPU 0 is present
[lttng-tools.git] / tests / regression / ust / blocking / test_blocking
CommitLineData
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
8TEST_DESC="UST - Blocking mode"
9
10CURDIR=$(dirname $0)/
11TESTDIR=$CURDIR/../../..
12SESSION_NAME="blocking"
491d1539 13CHANNEL_NAME="testchan"
de7e372e
MD
14
15TESTAPP_PATH="$TESTDIR/utils/testapp"
16TESTAPP_NAME="gen-ust-events"
17TESTAPP_BIN="$TESTAPP_PATH/$TESTAPP_NAME/$TESTAPP_NAME"
18EVENT_NAME="tp:tptest"
19
491d1539 20NUM_TESTS=49
de7e372e 21
2a05e025
OD
22# shellcheck source=../utils/utils.sh
23source "$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
27function 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
33function 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 51function 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
70function 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
90function 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
110function 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
133plan_tests $NUM_TESTS
134
135print_test_banner "$TEST_DESC"
136
c125de8f
FD
137bail_out_if_no_babeltrace
138
de7e372e
MD
139TESTS=(
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
147TEST_COUNT=${#TESTS[@]}
148i=0
149
150while [ "$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++"
160done
This page took 0.049072 seconds and 4 git commands to generate.