Fix: add missing synchronization point for before app test case
[lttng-tools.git] / tests / regression / ust / java-jul / test_java_jul
CommitLineData
37175ce4
DG
1#!/bin/bash
2#
3# Copyright (C) - 2013 David Goulet <dgoulet@efficios.com>
4#
5# This program is free software; you can redistribute it and/or modify it under
6# the terms of the GNU General Public License, version 2 only, as published by
7# the Free Software Foundation.
8#
9# This program 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 General Public License for more
12# details.
13#
14# You should have received a copy of the GNU General Public License along with
15# this program; if not, write to the Free Software Foundation, Inc., 51
16# Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
17
18TEST_DESC="Java JUL support"
19
20CURDIR=$(dirname $0)/
21TESTDIR=$CURDIR/../../..
22NR_ITER=6
23NR_MSEC_WAIT=1000
24TESTAPP_NAME="JTestLTTng"
25TESTAPP_BIN="$TESTAPP_NAME.java"
26TESTAPP_PATH="$CURDIR/$TESTAPP_NAME"
27SESSION_NAME="jul"
28EVENT_NAME="JTestLTTng"
9b21e6d5 29EVENT_NAME2="JTestLTTng2"
37175ce4
DG
30JAVA_CP="$CURDIR:/usr/local/lib/lttng/java/liblttng-ust-jul.jar:/usr/lib/lttng/java/liblttng-ust-jul.jar"
31
5ddababf 32NUM_TESTS=139
37175ce4
DG
33
34source $TESTDIR/utils/utils.sh
35
36function run_app
37{
88f54ca9 38 local finest_tp=$1
9b21e6d5 39 local fire_second_tp=$2
88f54ca9 40
75b7424d
MD
41 #FIXME: app should have synchro.
42 java -cp $JAVA_CP -Djava.library.path="/usr/local/lib:/usr/lib" $TESTAPP_NAME $NR_ITER $NR_MSEC_WAIT $finest_tp $fire_second_tp >/dev/null 2>&1
37175ce4
DG
43}
44
45function wait_apps
46{
47 while [ -n "$(pidof java)" ]; do
48 sleep 0.5
49 done
50 pass "Wait for applications to end"
51}
52
3e1c9ff7
DG
53function enable_jul_loglevel_only()
54{
55 sess_name=$1
56 event_name="$2"
57 loglevel=$3
58 channel_name=$4
59
60 if [ -z $channel_name ]; then
61 # default channel if none specified
62 chan=""
63 else
64 chan="-c $channel_name"
65 fi
66
67 $TESTDIR/../src/bin/lttng/$LTTNG_BIN enable-event --loglevel-only $loglevel "$event_name" $chan -s $sess_name -j >/dev/null 2>&1
68 ok $? "Enable JUL event $event_name for session $sess_name with loglevel-only $loglevel"
69}
70
34c40351
DG
71function enable_jul_filter()
72{
73 local sess_name="$1"
74 local event_name="$2"
75 local filter="$3"
76
77 $TESTDIR/../src/bin/lttng/$LTTNG_BIN enable-event "$event_name" -s $sess_name -j --filter "$filter" >/dev/null 2>&1
78 ok $? "Enable event $event_name with filter $filter for session $sess_name"
79}
80
37175ce4
DG
81# MUST set TESTDIR before calling those functions
82
83function test_jul_before_start ()
84{
75b7424d
MD
85 local file_sync_after_first=$(mktemp -u)
86 local file_sync_before_last=$(mktemp -u)
87
37175ce4
DG
88 diag "Test JUL application BEFORE tracing starts"
89 create_lttng_session $SESSION_NAME $TRACE_PATH
90 enable_jul_lttng_event $SESSION_NAME $EVENT_NAME
91
92 # Run 5 times with a 1 second delay
93 run_app
94
95 start_lttng_tracing $SESSION_NAME
96
75b7424d
MD
97 touch ${file_sync_before_last}
98
d4607bc6
MD
99 # Wait for the applications started in background
100 wait
37175ce4
DG
101
102 stop_lttng_tracing $SESSION_NAME
103 destroy_lttng_session $SESSION_NAME
b2064f54 104
75b7424d
MD
105 rm -f ${file_sync_after_first}
106 rm -f ${file_sync_before_last}
107
b2064f54 108 # Validate test. Expecting all events.
1b500e7a 109 trace_matches $EVENT_NAME $NR_ITER $TRACE_PATH
b2064f54
DG
110 if [ $? -ne 0 ]; then
111 return $?
112 fi
37175ce4
DG
113}
114
115function test_jul_after_start ()
116{
117 diag "Test JUL application AFTER tracing starts"
118
119 create_lttng_session $SESSION_NAME $TRACE_PATH
120 enable_jul_lttng_event $SESSION_NAME $EVENT_NAME
121 start_lttng_tracing $SESSION_NAME
122
123 # Run 5 times with a 1 second delay
124 run_app
125
126 wait_apps
127
128 stop_lttng_tracing $SESSION_NAME
129 destroy_lttng_session $SESSION_NAME
b2064f54
DG
130
131 # Validate test. Expecting all events.
1b500e7a 132 trace_matches $EVENT_NAME $NR_ITER $TRACE_PATH
b2064f54
DG
133 if [ $? -ne 0 ]; then
134 return $?
135 fi
136}
137
138function test_jul_loglevel ()
139{
140 diag "Test JUL application with loglevel"
141
142 create_lttng_session $SESSION_NAME $TRACE_PATH
143 enable_jul_lttng_event_loglevel $SESSION_NAME $EVENT_NAME "JUL_INFO"
144 start_lttng_tracing $SESSION_NAME
145
146 # Run 5 times with a 1 second delay
147 run_app
148
149 wait_apps
150
151 stop_lttng_tracing $SESSION_NAME
152 destroy_lttng_session $SESSION_NAME
153
154 # Validate test. Expecting all events.
1b500e7a 155 trace_matches $EVENT_NAME $NR_ITER $TRACE_PATH
b2064f54
DG
156 if [ $? -ne 0 ]; then
157 return $?
158 fi
159
160 diag "Test JUL applications with lower loglevel"
161
162 create_lttng_session $SESSION_NAME $TRACE_PATH
163 enable_jul_lttng_event_loglevel $SESSION_NAME $EVENT_NAME "JUL_SEVERE"
164 start_lttng_tracing $SESSION_NAME
165
166 # Run 5 times with a 1 second delay
167 run_app
168
169 wait_apps
170
171 stop_lttng_tracing $SESSION_NAME
172 destroy_lttng_session $SESSION_NAME
173
174 # Validate test. Expecting 0 events.
175 trace_matches $EVENT_NAME 0 $TRACE_PATH
176 if [ $? -ne 0 ]; then
177 return $?
178 fi
179
180 diag "Test JUL applications with higher loglevel"
181
182 create_lttng_session $SESSION_NAME $TRACE_PATH
183 enable_jul_lttng_event_loglevel $SESSION_NAME $EVENT_NAME "JUL_FINER"
184 start_lttng_tracing $SESSION_NAME
185
186 # Run 5 times with a 1 second delay
187 run_app
188
189 wait_apps
190
191 stop_lttng_tracing $SESSION_NAME
192 destroy_lttng_session $SESSION_NAME
193
194 # Validate test. Expecting all events.
1b500e7a 195 trace_matches $EVENT_NAME $NR_ITER $TRACE_PATH
b2064f54 196 return $?
37175ce4
DG
197}
198
88f54ca9
DG
199function test_jul_loglevel_multiple ()
200{
201 diag "Test JUL application with multiple loglevel"
202
203 create_lttng_session $SESSION_NAME $TRACE_PATH
204 enable_jul_lttng_event_loglevel $SESSION_NAME $EVENT_NAME "JUL_INFO"
205 enable_jul_lttng_event_loglevel $SESSION_NAME $EVENT_NAME "JUL_FINEST"
206 start_lttng_tracing $SESSION_NAME
207
208 # Run 5 times with a 1 second delay and fire two TP.
209 run_app 1
210 wait_apps
211
212 stop_lttng_tracing $SESSION_NAME
213 destroy_lttng_session $SESSION_NAME
214
215 # Validate test. Expecting all events times two.
216 trace_matches $EVENT_NAME $(($NR_ITER * 2)) $TRACE_PATH
217 if [ $? -ne 0 ]; then
218 return $?
219 fi
220
221 create_lttng_session $SESSION_NAME $TRACE_PATH
222 enable_jul_lttng_event_loglevel $SESSION_NAME '*' "JUL_INFO"
223 enable_jul_lttng_event_loglevel $SESSION_NAME '*' "JUL_FINEST"
224 start_lttng_tracing $SESSION_NAME
225
226 # Run 5 times with a 1 second delay and fire two TP.
227 run_app 1
228 wait_apps
229
230 stop_lttng_tracing $SESSION_NAME
231 destroy_lttng_session $SESSION_NAME
232
233 # Validate test. Expecting all events times two.
234 trace_matches $EVENT_NAME $(($NR_ITER * 2)) $TRACE_PATH
235 if [ $? -ne 0 ]; then
236 return $?
237 fi
238}
239
3e1c9ff7
DG
240function test_jul_multi_session_loglevel()
241{
242 diag "Test JUL with multiple session"
243
244 create_lttng_session $SESSION_NAME-1 $TRACE_PATH/$SESSION_NAME-1
245 enable_jul_loglevel_only $SESSION_NAME-1 '*' "JUL_INFO"
246 start_lttng_tracing $SESSION_NAME-1
247
248 create_lttng_session $SESSION_NAME-2 $TRACE_PATH/$SESSION_NAME-2
249 enable_jul_loglevel_only $SESSION_NAME-2 '*' "JUL_FINEST"
250 start_lttng_tracing $SESSION_NAME-2
251
252 # Run 5 times with a 1 second delay and fire second TP.
253 run_app 1 1
254 wait_apps
255
256 stop_lttng_tracing $SESSION_NAME-1
257 stop_lttng_tracing $SESSION_NAME-2
258 destroy_lttng_session $SESSION_NAME-1
259 destroy_lttng_session $SESSION_NAME-2
260
261 # Expecting 6 events being the main event plus the second tp.
262 trace_matches $EVENT_NAME $(($NR_ITER + 1)) $TRACE_PATH/$SESSION_NAME-1
263 if [ $? -ne 0 ]; then
264 return $?
265 fi
266
267 # Expectin 5 events being the finest TP.
268 trace_matches $EVENT_NAME $NR_ITER $TRACE_PATH/$SESSION_NAME-2
269 if [ $? -ne 0 ]; then
270 return $?
271 fi
272}
273
5ddababf
DG
274function test_jul_multi_session_disable()
275{
276 diag "Test JUL with multiple session with disabled event"
277
278 create_lttng_session $SESSION_NAME-1 $TRACE_PATH/$SESSION_NAME-1
279 enable_jul_lttng_event $SESSION_NAME-1 $EVENT_NAME
280 enable_jul_lttng_event $SESSION_NAME-1 $EVENT_NAME2
281 disable_jul_lttng_event $SESSION_NAME-1 $EVENT_NAME
282 start_lttng_tracing $SESSION_NAME-1
283
284 create_lttng_session $SESSION_NAME-2 $TRACE_PATH/$SESSION_NAME-2
285 enable_jul_lttng_event $SESSION_NAME-2 $EVENT_NAME2
286 start_lttng_tracing $SESSION_NAME-2
287
288 # Run 5 times with a 1 second delay and fire second TP.
289 run_app 0 1
290 wait_apps
291
292 stop_lttng_tracing $SESSION_NAME-1
293 stop_lttng_tracing $SESSION_NAME-2
294 destroy_lttng_session $SESSION_NAME-1
295 destroy_lttng_session $SESSION_NAME-2
296
297 # Validate test. Expecting one event of the second TP.
3910e60d 298 trace_match_only $EVENT_NAME2 1 $TRACE_PATH/$SESSION_NAME-1
5ddababf
DG
299 if [ $? -ne 0 ]; then
300 return $?
301 fi
302
303 # Validate test. Expecting one event of the second TP.
3910e60d 304 trace_match_only $EVENT_NAME2 1 $TRACE_PATH/$SESSION_NAME-2
5ddababf
DG
305 if [ $? -ne 0 ]; then
306 return $?
307 fi
308}
309
9b21e6d5
DG
310function test_jul_multi_session()
311{
312 diag "Test JUL with multiple session"
313
314 create_lttng_session $SESSION_NAME-1 $TRACE_PATH/$SESSION_NAME-1
315 enable_jul_lttng_event $SESSION_NAME-1 $EVENT_NAME
316 start_lttng_tracing $SESSION_NAME-1
317
318 create_lttng_session $SESSION_NAME-2 $TRACE_PATH/$SESSION_NAME-2
319 enable_jul_lttng_event $SESSION_NAME-2 $EVENT_NAME2
320 start_lttng_tracing $SESSION_NAME-2
321
322 # Run 5 times with a 1 second delay and fire second TP.
323 run_app 0 1
324 wait_apps
325
326 stop_lttng_tracing $SESSION_NAME-1
327 stop_lttng_tracing $SESSION_NAME-2
328 destroy_lttng_session $SESSION_NAME-1
329 destroy_lttng_session $SESSION_NAME-2
330
331 # Validate test. Expecting all events of first TP
332 trace_matches $EVENT_NAME $NR_ITER $TRACE_PATH/$SESSION_NAME-1
333 if [ $? -ne 0 ]; then
334 return $?
335 fi
336
337 # Validate test. Expecting one event of the second TP.
338 trace_matches $EVENT_NAME2 1 $TRACE_PATH/$SESSION_NAME-2
339 if [ $? -ne 0 ]; then
340 return $?
341 fi
342}
343
3e1c9ff7
DG
344function test_jul_destroy_session()
345{
346 diag "Test JUL two session with destroy"
347
348 create_lttng_session $SESSION_NAME $TRACE_PATH/first-sess
349 enable_jul_lttng_event $SESSION_NAME $EVENT_NAME
350 start_lttng_tracing $SESSION_NAME
351
352 # Run 5 times with a 1 second delay
353 run_app 0 1
354
d4607bc6
MD
355 # Wait for the applications started in background
356 wait
3e1c9ff7
DG
357
358 stop_lttng_tracing $SESSION_NAME
359 destroy_lttng_session $SESSION_NAME
360
361 # Validate test. Expecting at least one event num 1
362 validate_trace $EVENT_NAME $TRACE_PATH/first-sess
363 if [ $? -ne 0 ]; then
364 return $?
365 fi
366
367 create_lttng_session $SESSION_NAME $TRACE_PATH/second-sess
368 enable_jul_lttng_event $SESSION_NAME $EVENT_NAME2
369 start_lttng_tracing $SESSION_NAME
370
d4607bc6
MD
371 # Run 5 times with a 1 second delay
372 run_app_background 0 1
373
374 # Wait for the applications started in background
375 wait
3e1c9ff7
DG
376
377 stop_lttng_tracing $SESSION_NAME
378 destroy_lttng_session $SESSION_NAME
379
380 # Validate test. Expecting only one event num 2
381 trace_matches $EVENT_NAME2 1 $TRACE_PATH/second-sess
382 if [ $? -ne 0 ]; then
383 return $?
384 fi
385}
386
34c40351
DG
387function test_jul_filtering()
388{
389 diag "Test JUL filtering"
390
391 create_lttng_session $SESSION_NAME $TRACE_PATH/$SESSION_NAME
392 # Enable all event with a filter.
393 enable_jul_filter $SESSION_NAME '*' 'msg == "JUL second logger fired"'
394 start_lttng_tracing $SESSION_NAME
395
396 # Run 5 times with a 1 second delay and fire second TP.
397 run_app 0 1
398 wait_apps
399
400 stop_lttng_tracing $SESSION_NAME
401 destroy_lttng_session $SESSION_NAME
402
403 # Validate test. Expecting one event of the second TP only.
404 trace_matches $EVENT_NAME2 1 $TRACE_PATH/$SESSION_NAME
405 if [ $? -ne 0 ]; then
406 return $?
407 fi
408
409 create_lttng_session $SESSION_NAME $TRACE_PATH/$SESSION_NAME
410 # Enable first Logger but filter msg payload for the INFO one while
411 # triggering the finest and second TP.
412 enable_jul_filter $SESSION_NAME $EVENT_NAME 'msg == "JUL tp fired!"'
413 start_lttng_tracing $SESSION_NAME
414
415 # Run 5 times with a 1 second delay, fire finest and second TP.
416 run_app 1 1
417 wait_apps
418
419 stop_lttng_tracing $SESSION_NAME
420 destroy_lttng_session $SESSION_NAME
421
422 # Validate test. Expecting NR_ITER event of the main INFO tp.
423 trace_matches $EVENT_NAME $NR_ITER $TRACE_PATH/$SESSION_NAME
424 if [ $? -ne 0 ]; then
425 return $?
426 fi
427}
428
5ddababf
DG
429function test_jul_disable()
430{
431 diag "Test JUL disable event"
432
433 create_lttng_session $SESSION_NAME $TRACE_PATH/$SESSION_NAME
434 # Enable all event with a filter.
435 enable_jul_lttng_event $SESSION_NAME $EVENT_NAME
436 enable_jul_lttng_event $SESSION_NAME $EVENT_NAME2
437 disable_jul_lttng_event $SESSION_NAME $EVENT_NAME
438 start_lttng_tracing $SESSION_NAME
439
440 # Run 5 times with a 1 second delay and fire second TP.
441 run_app 0 1
442 wait_apps
443
444 stop_lttng_tracing $SESSION_NAME
445 destroy_lttng_session $SESSION_NAME
446
447 # Validate test. Expecting one event of the second TP only.
3910e60d 448 trace_match_only $EVENT_NAME2 1 $TRACE_PATH/$SESSION_NAME
5ddababf
DG
449 if [ $? -ne 0 ]; then
450 return $?
451 fi
452}
453
454function test_jul_disable_enable()
455{
456 diag "Test JUL disable event followed by an enable"
457
458 create_lttng_session $SESSION_NAME $TRACE_PATH/$SESSION_NAME
459 # Enable all event with a filter.
460 enable_jul_lttng_event $SESSION_NAME $EVENT_NAME
461 disable_jul_lttng_event $SESSION_NAME $EVENT_NAME
462 enable_jul_lttng_event $SESSION_NAME $EVENT_NAME
463 start_lttng_tracing $SESSION_NAME
464
465 # Run 5 times with a 1 second delay and fire second TP.
466 run_app 0 1
467 wait_apps
468
469 stop_lttng_tracing $SESSION_NAME
470 destroy_lttng_session $SESSION_NAME
471
472 # Validate test. Expecting NR_ITER event of the main INFO tp.
3910e60d 473 trace_match_only $EVENT_NAME $NR_ITER $TRACE_PATH/$SESSION_NAME
5ddababf
DG
474 if [ $? -ne 0 ]; then
475 return $?
476 fi
477}
478
37175ce4
DG
479plan_tests $NUM_TESTS
480
481print_test_banner "$TEST_DESC"
482
483if [ ! -f "$TESTAPP_PATH.class" ]; then
484 withapp=0
485else
486 withapp=1
487fi
488
489skip $withapp "JUL support is needed. Skipping all tests." $NUM_TESTS ||
490{
491 start_lttng_sessiond
492
493 tests=(
5ddababf
DG
494 test_jul_multi_session_disable
495 test_jul_disable
496 test_jul_disable_enable
34c40351 497 test_jul_filtering
3e1c9ff7
DG
498 test_jul_multi_session_loglevel
499 test_jul_destroy_session
b2064f54 500 test_jul_loglevel
88f54ca9 501 test_jul_loglevel_multiple
37175ce4
DG
502 test_jul_before_start
503 test_jul_after_start
9b21e6d5 504 test_jul_multi_session
37175ce4
DG
505 )
506
507 for fct_test in ${tests[@]};
508 do
3e1c9ff7
DG
509 TRACE_PATH=$(mktemp -d)
510
37175ce4 511 ${fct_test}
b2064f54
DG
512 if [ $? -ne 0 ]; then
513 break;
37175ce4 514 fi
b2064f54 515 rm -rf $TRACE_PATH
37175ce4
DG
516 done
517
518 stop_lttng_sessiond
519}
This page took 0.044373 seconds and 4 git commands to generate.