tests: truncate metadata file for regenerate metadata test
[lttng-tools.git] / tests / regression / tools / regen-metadata / test_ust
CommitLineData
801236b0
JD
1#!/bin/bash
2#
3# Copyright (C) - 2015 Julien Desfossez <jdesfossez@efficios.com>
4#
5# This library is free software; you can redistribute it and/or modify it under
6# the terms of the GNU Lesser General Public License as published by the Free
7# Software Foundation; version 2.1 of the License.
8#
9# This library is distributed in the hope that it will be useful, but WITHOUT
10# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
11# FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more
12# details.
13#
14# You should have received a copy of the GNU Lesser General Public License
15# along with this library; if not, write to the Free Software Foundation, Inc.,
16# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
17TEST_DESC="Streaming - User space tracing"
18
19CURDIR=$(dirname $0)/
20TESTDIR=$CURDIR/../../..
21NR_ITER=1
22NR_USEC_WAIT=0
23TESTAPP_PATH="$TESTDIR/utils/testapp"
24TESTAPP_NAME="gen-ust-events"
25TESTAPP_BIN="$TESTAPP_PATH/$TESTAPP_NAME/$TESTAPP_NAME"
26SESSION_NAME="stream"
27EVENT_NAME="tp:tptest"
801236b0
JD
28
29TRACE_PATH=$(mktemp -d)
30
e13c8ac0 31NUM_TESTS=39
801236b0
JD
32
33source $TESTDIR/utils/utils.sh
34
35if [ ! -x "$TESTAPP_BIN" ]; then
36 BAIL_OUT "No UST events binary detected."
37fi
38
801236b0
JD
39function enable_channel_per_pid()
40{
41 sess_name=$1
42 channel_name=$2
43
44 $TESTDIR/../src/bin/lttng/$LTTNG_BIN enable-channel --buffers-pid -u $channel_name -s $sess_name >/dev/null 2>&1
45 ok $? "Enable channel $channel_name per PID for session $sess_name"
46}
47
48# MUST set TESTDIR before calling those functions
49
50function test_ust_streaming ()
51{
52 local file_sync_after_first=$(mktemp -u)
53 local file_sync_before_last=$(mktemp -u)
e13c8ac0 54 local metadata_path
801236b0
JD
55
56 diag "Test UST streaming with metadata regeneration"
f0d43d3d 57 create_lttng_session_uri $SESSION_NAME net://localhost
801236b0
JD
58 enable_ust_lttng_event_ok $SESSION_NAME $EVENT_NAME
59
60 $TESTAPP_BIN $NR_ITER $NR_USEC_WAIT ${file_sync_after_first} ${file_sync_before_last} /dev/null 2>&1 &
61
62 start_lttng_tracing_ok $SESSION_NAME
63
64 touch ${file_sync_before_last}
65
66 # Wait for the applications started in background
67 wait
801236b0 68
e13c8ac0 69 # Expect a valid trace
801236b0 70 stop_lttng_tracing_ok $SESSION_NAME
e13c8ac0
JR
71 validate_trace $EVENT_NAME "$TRACE_PATH/$HOSTNAME/$SESSION_NAME"*
72
73 # Find the metadata file
74 metadata_path=$(find "$TRACE_PATH/$HOSTNAME/$SESSION_NAME"* | grep metadata)
75
76 # Empty the metadata file
77 echo -n > "$metadata_path"
78
79 start_lttng_tracing_ok $SESSION_NAME
80 regenerate_metadata_ok $SESSION_NAME
81 stop_lttng_tracing_ok $SESSION_NAME
82
83 # Metadata file must have been regenerated
801236b0 84 validate_trace $EVENT_NAME $TRACE_PATH/$HOSTNAME/$SESSION_NAME*
e13c8ac0
JR
85 destroy_lttng_session_ok $SESSION_NAME
86
87 rm -rf "$TRACE_PATH"
801236b0
JD
88 rm -f ${file_sync_after_first}
89 rm -f ${file_sync_before_last}
90}
91
92function test_ust_local ()
93{
94 local file_sync_after_first=$(mktemp -u)
95 local file_sync_before_last=$(mktemp -u)
e13c8ac0 96 local metadata_path
801236b0
JD
97
98 diag "Test UST local with metadata regeneration"
99 create_lttng_session_ok $SESSION_NAME $TRACE_PATH
100 enable_ust_lttng_event_ok $SESSION_NAME $EVENT_NAME
101
102 $TESTAPP_BIN $NR_ITER $NR_USEC_WAIT ${file_sync_after_first} ${file_sync_before_last} /dev/null 2>&1 &
103
104 start_lttng_tracing_ok $SESSION_NAME
105
106 touch ${file_sync_before_last}
107
108 # Wait for the applications started in background
109 wait
801236b0 110
e13c8ac0 111 # Expect a valid trace
801236b0 112 stop_lttng_tracing_ok $SESSION_NAME
e13c8ac0
JR
113 validate_trace $EVENT_NAME "$TRACE_PATH"
114
115 # Find the metadata file
116 metadata_path=$(find "$TRACE_PATH"* | grep metadata)
117
118 # Empty the metadata file
119 echo -n > "$metadata_path"
120
121 start_lttng_tracing_ok $SESSION_NAME
122 regenerate_metadata_ok $SESSION_NAME
123 stop_lttng_tracing_ok $SESSION_NAME
124
125 # Metadata file must have been regenerated
801236b0 126 validate_trace $EVENT_NAME $TRACE_PATH
e13c8ac0
JR
127 destroy_lttng_session_ok $SESSION_NAME
128
129 rm -rf "$TRACE_PATH"
801236b0
JD
130 rm -f ${file_sync_after_first}
131 rm -f ${file_sync_before_last}
132}
133
134function test_ust_pid ()
135{
136 local file_sync_after_first=$(mktemp -u)
137 local file_sync_before_last=$(mktemp -u)
138
139 diag "Test UST per-pid with metadata regeneration (expect failure)"
140 create_lttng_session_ok $SESSION_NAME $TRACE_PATH
141 enable_channel_per_pid $SESSION_NAME "channel0"
142 enable_ust_lttng_event_ok $SESSION_NAME $EVENT_NAME "channel0"
143
144 $TESTAPP_BIN $NR_ITER $NR_USEC_WAIT ${file_sync_after_first} ${file_sync_before_last} /dev/null 2>&1 &
145
146 start_lttng_tracing_ok $SESSION_NAME
147
148 touch ${file_sync_before_last}
149
150 # Wait for the applications started in background
151 wait
eded6438 152 regenerate_metadata_fail $SESSION_NAME
801236b0
JD
153
154 stop_lttng_tracing_ok $SESSION_NAME
155 destroy_lttng_session_ok $SESSION_NAME
156 # Validate test
157 validate_trace $EVENT_NAME $TRACE_PATH
158 if [ $? -eq 0 ]; then
159 # Only delete if successful
160 rm -rf $TRACE_PATH
161 fi
162 rm -f ${file_sync_after_first}
163 rm -f ${file_sync_before_last}
164}
165
166function test_ust_live ()
167{
168 local file_sync_after_first=$(mktemp -u)
169 local file_sync_before_last=$(mktemp -u)
170
171 diag "Test UST live with metadata regeneration (expect failure)"
f0d43d3d 172 create_lttng_session_uri $SESSION_NAME net://localhost --live
801236b0
JD
173 enable_ust_lttng_event_ok $SESSION_NAME $EVENT_NAME
174
175 $TESTAPP_BIN $NR_ITER $NR_USEC_WAIT ${file_sync_after_first} ${file_sync_before_last} /dev/null 2>&1 &
176
177 start_lttng_tracing_ok $SESSION_NAME
178
179 touch ${file_sync_before_last}
180
181 # Wait for the applications started in background
182 wait
eded6438 183 regenerate_metadata_fail $SESSION_NAME
801236b0
JD
184
185 stop_lttng_tracing_ok $SESSION_NAME
186 destroy_lttng_session_ok $SESSION_NAME
187 # Validate test
188 validate_trace $EVENT_NAME $TRACE_PATH
189 if [ $? -eq 0 ]; then
190 # Only delete if successful
191 rm -rf $TRACE_PATH
192 fi
193 rm -f ${file_sync_after_first}
194 rm -f ${file_sync_before_last}
195}
196
197plan_tests $NUM_TESTS
198
199print_test_banner "$TEST_DESC"
200
201start_lttng_relayd "-o $TRACE_PATH"
202start_lttng_sessiond
203
204tests=( test_ust_streaming test_ust_local test_ust_pid test_ust_live )
205
206for fct_test in ${tests[@]};
207do
208 SESSION_NAME=$(randstring 16 0)
209 ${fct_test}
210done
211
212stop_lttng_sessiond
213stop_lttng_relayd
214
215exit $out
This page took 0.037834 seconds and 4 git commands to generate.