Gen-ust-events: use options instead of arguments
[lttng-tools.git] / tests / regression / ust / blocking / test_blocking
... / ...
CommitLineData
1#!/bin/bash
2#
3# Copyright (C) - 2015 Jonathan Rajotte <jonathan.rajotte-julien@efficios.com>
4# Copyright (C) - 2016 Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
5#
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.
9#
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
13# details.
14#
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
18TEST_DESC="UST - Blocking mode"
19
20CURDIR=$(dirname $0)/
21TESTDIR=$CURDIR/../../..
22SESSION_NAME="blocking"
23CHANNEL_NAME="testchan"
24
25TESTAPP_PATH="$TESTDIR/utils/testapp"
26TESTAPP_NAME="gen-ust-events"
27TESTAPP_BIN="$TESTAPP_PATH/$TESTAPP_NAME/$TESTAPP_NAME"
28EVENT_NAME="tp:tptest"
29
30NUM_TESTS=49
31
32source $TESTDIR/utils/utils.sh
33
34# MUST set TESTDIR before calling those functions
35# Run app on CPU 0 to ensure we only write in a single ring buffer.
36function run_app()
37{
38 taskset 0x00000001 $TESTAPP_BIN -i $NUM_EVENT
39 ok $? "Application done"
40}
41
42function test_ust_implicit_no_blocking()
43{
44 NUM_EVENT=5000000
45 diag "UST implicit non-blocking mode (default): will hang if fails"
46
47 start_lttng_sessiond
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
52 run_app
53 stop_lttng_tracing_ok $SESSION_NAME
54 destroy_lttng_session_ok $SESSION_NAME
55 stop_lttng_sessiond
56
57 ok 0 "Does not hang"
58}
59
60function test_ust_implicit_no_blocking_with_channel_blocking()
61{
62 NUM_EVENT=5000000
63 diag "UST implicit non-blocking mode (default) with blocking-timeout=inf channel: will hang if fails"
64
65 start_lttng_sessiond
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
71 run_app
72 stop_lttng_tracing_ok $SESSION_NAME
73 destroy_lttng_session_ok $SESSION_NAME
74 stop_lttng_sessiond
75
76 ok 0 "Does not hang"
77}
78
79function test_ust_timeout_no_blocking()
80{
81 NUM_EVENT=12500
82 diag "UST 1ms timeout blocking mode: will hang if fails"
83
84 start_lttng_sessiond
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
94 stop_lttng_sessiond
95
96 ok 0 "Does not hang"
97}
98
99function test_ust_snapshot_no_blocking()
100{
101 NUM_EVENT=5000000
102 diag "UST blocking mode: don't block in snapshot mode"
103
104 # Test without the plugin
105 start_lttng_sessiond
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
114 stop_lttng_sessiond
115
116 ok 0 "Does not hang"
117}
118
119function test_ust_blocking_no_discard()
120{
121 NUM_EVENT=5000000
122 diag "UST blocking mode: no event discarded"
123
124 # Test without the plugin
125 start_lttng_sessiond
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
134 stop_lttng_sessiond
135
136 nr_events=$(babeltrace $TRACE_PATH 2>/dev/null | wc -l)
137
138 test $nr_events -eq $NUM_EVENT
139 ok $? "No event lost with UST blocking mode: found $nr_events expect $NUM_EVENT"
140}
141
142plan_tests $NUM_TESTS
143
144print_test_banner "$TEST_DESC"
145
146TESTS=(
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"
152)
153
154TEST_COUNT=${#TESTS[@]}
155i=0
156
157while [ "$i" -lt "$TEST_COUNT" ]; do
158
159 TRACE_PATH=$(mktemp -d)
160
161 # Execute test
162 ${TESTS[$i]}
163
164 rm -rf $TRACE_PATH
165
166 let "i++"
167done
This page took 0.023352 seconds and 5 git commands to generate.