3 # Copyright (C) - 2013 David Goulet <dgoulet@efficios.com>
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.
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
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.
18 TEST_DESC
="Java JUL support"
21 TESTDIR
=$CURDIR/..
/..
/..
24 TESTAPP_NAME
="JTestLTTng"
25 TESTAPP_BIN
="$TESTAPP_NAME.java"
26 TESTAPP_PATH
="$CURDIR/$TESTAPP_NAME"
28 EVENT_NAME
="JTestLTTng"
29 EVENT_NAME2
="JTestLTTng2"
30 JAVA_CP
="$CURDIR:/usr/local/lib/lttng/java/liblttng-ust-jul.jar:/usr/lib/lttng/java/liblttng-ust-jul.jar"
34 source $TESTDIR/utils
/utils.sh
39 local fire_second_tp
=$2
41 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 &
46 while [ -n "$(pidof java)" ]; do
49 pass
"Wait for applications to end"
52 function enable_jul_loglevel_only
()
59 if [ -z $channel_name ]; then
60 # default channel if none specified
63 chan
="-c $channel_name"
66 $TESTDIR/..
/src
/bin
/lttng
/$LTTNG_BIN enable-event
--loglevel-only $loglevel "$event_name" $chan -s $sess_name -j >/dev
/null
2>&1
67 ok $?
"Enable JUL event $event_name for session $sess_name with loglevel-only $loglevel"
70 # MUST set TESTDIR before calling those functions
72 function test_jul_before_start
()
74 diag
"Test JUL application BEFORE tracing starts"
75 create_lttng_session
$SESSION_NAME $TRACE_PATH
76 enable_jul_lttng_event
$SESSION_NAME $EVENT_NAME
78 # Run 5 times with a 1 second delay
81 start_lttng_tracing
$SESSION_NAME
83 # Wait for the applications started in background
86 stop_lttng_tracing
$SESSION_NAME
87 destroy_lttng_session
$SESSION_NAME
89 # Validate test. Expecting all events.
90 trace_matches
$EVENT_NAME $NR_ITER $TRACE_PATH
96 function test_jul_after_start
()
98 diag
"Test JUL application AFTER tracing starts"
100 create_lttng_session
$SESSION_NAME $TRACE_PATH
101 enable_jul_lttng_event
$SESSION_NAME $EVENT_NAME
102 start_lttng_tracing
$SESSION_NAME
104 # Run 5 times with a 1 second delay
109 stop_lttng_tracing
$SESSION_NAME
110 destroy_lttng_session
$SESSION_NAME
112 # Validate test. Expecting all events.
113 trace_matches
$EVENT_NAME $NR_ITER $TRACE_PATH
114 if [ $?
-ne 0 ]; then
119 function test_jul_loglevel
()
121 diag
"Test JUL application with loglevel"
123 create_lttng_session
$SESSION_NAME $TRACE_PATH
124 enable_jul_lttng_event_loglevel
$SESSION_NAME $EVENT_NAME "JUL_INFO"
125 start_lttng_tracing
$SESSION_NAME
127 # Run 5 times with a 1 second delay
132 stop_lttng_tracing
$SESSION_NAME
133 destroy_lttng_session
$SESSION_NAME
135 # Validate test. Expecting all events.
136 trace_matches
$EVENT_NAME $NR_ITER $TRACE_PATH
137 if [ $?
-ne 0 ]; then
141 diag
"Test JUL applications with lower loglevel"
143 create_lttng_session
$SESSION_NAME $TRACE_PATH
144 enable_jul_lttng_event_loglevel
$SESSION_NAME $EVENT_NAME "JUL_SEVERE"
145 start_lttng_tracing
$SESSION_NAME
147 # Run 5 times with a 1 second delay
152 stop_lttng_tracing
$SESSION_NAME
153 destroy_lttng_session
$SESSION_NAME
155 # Validate test. Expecting 0 events.
156 trace_matches
$EVENT_NAME 0 $TRACE_PATH
157 if [ $?
-ne 0 ]; then
161 diag
"Test JUL applications with higher loglevel"
163 create_lttng_session
$SESSION_NAME $TRACE_PATH
164 enable_jul_lttng_event_loglevel
$SESSION_NAME $EVENT_NAME "JUL_FINER"
165 start_lttng_tracing
$SESSION_NAME
167 # Run 5 times with a 1 second delay
172 stop_lttng_tracing
$SESSION_NAME
173 destroy_lttng_session
$SESSION_NAME
175 # Validate test. Expecting all events.
176 trace_matches
$EVENT_NAME $NR_ITER $TRACE_PATH
180 function test_jul_loglevel_multiple
()
182 diag
"Test JUL application with multiple loglevel"
184 create_lttng_session
$SESSION_NAME $TRACE_PATH
185 enable_jul_lttng_event_loglevel
$SESSION_NAME $EVENT_NAME "JUL_INFO"
186 enable_jul_lttng_event_loglevel
$SESSION_NAME $EVENT_NAME "JUL_FINEST"
187 start_lttng_tracing
$SESSION_NAME
189 # Run 5 times with a 1 second delay and fire two TP.
193 stop_lttng_tracing
$SESSION_NAME
194 destroy_lttng_session
$SESSION_NAME
196 # Validate test. Expecting all events times two.
197 trace_matches
$EVENT_NAME $
(($NR_ITER * 2)) $TRACE_PATH
198 if [ $?
-ne 0 ]; then
202 create_lttng_session
$SESSION_NAME $TRACE_PATH
203 enable_jul_lttng_event_loglevel
$SESSION_NAME '*' "JUL_INFO"
204 enable_jul_lttng_event_loglevel
$SESSION_NAME '*' "JUL_FINEST"
205 start_lttng_tracing
$SESSION_NAME
207 # Run 5 times with a 1 second delay and fire two TP.
211 stop_lttng_tracing
$SESSION_NAME
212 destroy_lttng_session
$SESSION_NAME
214 # Validate test. Expecting all events times two.
215 trace_matches
$EVENT_NAME $
(($NR_ITER * 2)) $TRACE_PATH
216 if [ $?
-ne 0 ]; then
221 function test_jul_multi_session_loglevel
()
223 diag
"Test JUL with multiple session"
225 create_lttng_session
$SESSION_NAME-1 $TRACE_PATH/$SESSION_NAME-1
226 enable_jul_loglevel_only
$SESSION_NAME-1 '*' "JUL_INFO"
227 start_lttng_tracing
$SESSION_NAME-1
229 create_lttng_session
$SESSION_NAME-2 $TRACE_PATH/$SESSION_NAME-2
230 enable_jul_loglevel_only
$SESSION_NAME-2 '*' "JUL_FINEST"
231 start_lttng_tracing
$SESSION_NAME-2
233 # Run 5 times with a 1 second delay and fire second TP.
237 stop_lttng_tracing
$SESSION_NAME-1
238 stop_lttng_tracing
$SESSION_NAME-2
239 destroy_lttng_session
$SESSION_NAME-1
240 destroy_lttng_session
$SESSION_NAME-2
242 # Expecting 6 events being the main event plus the second tp.
243 trace_matches
$EVENT_NAME $
(($NR_ITER + 1)) $TRACE_PATH/$SESSION_NAME-1
244 if [ $?
-ne 0 ]; then
248 # Expectin 5 events being the finest TP.
249 trace_matches
$EVENT_NAME $NR_ITER $TRACE_PATH/$SESSION_NAME-2
250 if [ $?
-ne 0 ]; then
255 function test_jul_multi_session
()
257 diag
"Test JUL with multiple session"
259 create_lttng_session
$SESSION_NAME-1 $TRACE_PATH/$SESSION_NAME-1
260 enable_jul_lttng_event
$SESSION_NAME-1 $EVENT_NAME
261 start_lttng_tracing
$SESSION_NAME-1
263 create_lttng_session
$SESSION_NAME-2 $TRACE_PATH/$SESSION_NAME-2
264 enable_jul_lttng_event
$SESSION_NAME-2 $EVENT_NAME2
265 start_lttng_tracing
$SESSION_NAME-2
267 # Run 5 times with a 1 second delay and fire second TP.
271 stop_lttng_tracing
$SESSION_NAME-1
272 stop_lttng_tracing
$SESSION_NAME-2
273 destroy_lttng_session
$SESSION_NAME-1
274 destroy_lttng_session
$SESSION_NAME-2
276 # Validate test. Expecting all events of first TP
277 trace_matches
$EVENT_NAME $NR_ITER $TRACE_PATH/$SESSION_NAME-1
278 if [ $?
-ne 0 ]; then
282 # Validate test. Expecting one event of the second TP.
283 trace_matches
$EVENT_NAME2 1 $TRACE_PATH/$SESSION_NAME-2
284 if [ $?
-ne 0 ]; then
289 function test_jul_destroy_session
()
291 diag
"Test JUL two session with destroy"
293 create_lttng_session
$SESSION_NAME $TRACE_PATH/first-sess
294 enable_jul_lttng_event
$SESSION_NAME $EVENT_NAME
295 start_lttng_tracing
$SESSION_NAME
297 # Run 5 times with a 1 second delay
300 # Wait for the applications started in background
303 stop_lttng_tracing
$SESSION_NAME
304 destroy_lttng_session
$SESSION_NAME
306 # Validate test. Expecting at least one event num 1
307 validate_trace
$EVENT_NAME $TRACE_PATH/first-sess
308 if [ $?
-ne 0 ]; then
312 create_lttng_session
$SESSION_NAME $TRACE_PATH/second-sess
313 enable_jul_lttng_event
$SESSION_NAME $EVENT_NAME2
314 start_lttng_tracing
$SESSION_NAME
316 # Run 5 times with a 1 second delay
317 run_app_background
0 1
319 # Wait for the applications started in background
322 stop_lttng_tracing
$SESSION_NAME
323 destroy_lttng_session
$SESSION_NAME
325 # Validate test. Expecting only one event num 2
326 trace_matches
$EVENT_NAME2 1 $TRACE_PATH/second-sess
327 if [ $?
-ne 0 ]; then
332 function test_jul_disable
()
334 diag
"Test JUL disable event"
336 create_lttng_session
$SESSION_NAME $TRACE_PATH/$SESSION_NAME
337 # Enable all event with a filter.
338 enable_jul_lttng_event
$SESSION_NAME $EVENT_NAME
339 enable_jul_lttng_event
$SESSION_NAME $EVENT_NAME2
340 disable_jul_lttng_event
$SESSION_NAME $EVENT_NAME
341 start_lttng_tracing
$SESSION_NAME
343 # Fire second TP but not the finest one.
347 stop_lttng_tracing
$SESSION_NAME
348 destroy_lttng_session
$SESSION_NAME
350 # Validate test. Expecting one event of the second TP only.
351 trace_match_only
$EVENT_NAME2 1 $TRACE_PATH/$SESSION_NAME
352 if [ $?
-ne 0 ]; then
357 plan_tests
$NUM_TESTS
359 print_test_banner
"$TEST_DESC"
361 if [ ! -f "$TESTAPP_PATH.class" ]; then
367 skip
$withapp "JUL support is needed. Skipping all tests." $NUM_TESTS ||
373 test_jul_multi_session_loglevel
374 test_jul_destroy_session
376 test_jul_loglevel_multiple
377 test_jul_before_start
379 test_jul_multi_session
382 for fct_test
in ${tests[@]};
384 TRACE_PATH
=$
(mktemp
-d)
387 if [ $?
-ne 0 ]; then