tests: truncate metadata file for regenerate metadata test
[lttng-tools.git] / tests / regression / tools / regen-metadata / test_ust
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
17 TEST_DESC="Streaming - User space tracing"
18
19 CURDIR=$(dirname $0)/
20 TESTDIR=$CURDIR/../../..
21 NR_ITER=1
22 NR_USEC_WAIT=0
23 TESTAPP_PATH="$TESTDIR/utils/testapp"
24 TESTAPP_NAME="gen-ust-events"
25 TESTAPP_BIN="$TESTAPP_PATH/$TESTAPP_NAME/$TESTAPP_NAME"
26 SESSION_NAME="stream"
27 EVENT_NAME="tp:tptest"
28
29 TRACE_PATH=$(mktemp -d)
30
31 NUM_TESTS=39
32
33 source $TESTDIR/utils/utils.sh
34
35 if [ ! -x "$TESTAPP_BIN" ]; then
36 BAIL_OUT "No UST events binary detected."
37 fi
38
39 function 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
50 function test_ust_streaming ()
51 {
52 local file_sync_after_first=$(mktemp -u)
53 local file_sync_before_last=$(mktemp -u)
54 local metadata_path
55
56 diag "Test UST streaming with metadata regeneration"
57 create_lttng_session_uri $SESSION_NAME net://localhost
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
68
69 # Expect a valid trace
70 stop_lttng_tracing_ok $SESSION_NAME
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
84 validate_trace $EVENT_NAME $TRACE_PATH/$HOSTNAME/$SESSION_NAME*
85 destroy_lttng_session_ok $SESSION_NAME
86
87 rm -rf "$TRACE_PATH"
88 rm -f ${file_sync_after_first}
89 rm -f ${file_sync_before_last}
90 }
91
92 function test_ust_local ()
93 {
94 local file_sync_after_first=$(mktemp -u)
95 local file_sync_before_last=$(mktemp -u)
96 local metadata_path
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
110
111 # Expect a valid trace
112 stop_lttng_tracing_ok $SESSION_NAME
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
126 validate_trace $EVENT_NAME $TRACE_PATH
127 destroy_lttng_session_ok $SESSION_NAME
128
129 rm -rf "$TRACE_PATH"
130 rm -f ${file_sync_after_first}
131 rm -f ${file_sync_before_last}
132 }
133
134 function 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
152 regenerate_metadata_fail $SESSION_NAME
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
166 function 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)"
172 create_lttng_session_uri $SESSION_NAME net://localhost --live
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
183 regenerate_metadata_fail $SESSION_NAME
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
197 plan_tests $NUM_TESTS
198
199 print_test_banner "$TEST_DESC"
200
201 start_lttng_relayd "-o $TRACE_PATH"
202 start_lttng_sessiond
203
204 tests=( test_ust_streaming test_ust_local test_ust_pid test_ust_live )
205
206 for fct_test in ${tests[@]};
207 do
208 SESSION_NAME=$(randstring 16 0)
209 ${fct_test}
210 done
211
212 stop_lttng_sessiond
213 stop_lttng_relayd
214
215 exit $out
This page took 0.043475 seconds and 4 git commands to generate.