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"
32 TRACE_PATH
=$
(mktemp
-d)
36 source $TESTDIR/utils
/utils.sh
41 local fire_second_tp
=$2
43 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 &
48 while [ -n "$(pidof java)" ]; do
51 pass
"Wait for applications to end"
54 # MUST set TESTDIR before calling those functions
56 function test_jul_before_start
()
58 diag
"Test JUL application BEFORE tracing starts"
59 create_lttng_session
$SESSION_NAME $TRACE_PATH
60 enable_jul_lttng_event
$SESSION_NAME $EVENT_NAME
62 # Run 5 times with a 1 second delay
65 start_lttng_tracing
$SESSION_NAME
69 stop_lttng_tracing
$SESSION_NAME
70 destroy_lttng_session
$SESSION_NAME
72 # Validate test. Expecting all events.
73 trace_matches
$EVENT_NAME $NR_ITER $TRACE_PATH
79 function test_jul_after_start
()
81 diag
"Test JUL application AFTER tracing starts"
83 create_lttng_session
$SESSION_NAME $TRACE_PATH
84 enable_jul_lttng_event
$SESSION_NAME $EVENT_NAME
85 start_lttng_tracing
$SESSION_NAME
87 # Run 5 times with a 1 second delay
92 stop_lttng_tracing
$SESSION_NAME
93 destroy_lttng_session
$SESSION_NAME
95 # Validate test. Expecting all events.
96 trace_matches
$EVENT_NAME $NR_ITER $TRACE_PATH
102 function test_jul_loglevel
()
104 diag
"Test JUL application with loglevel"
106 create_lttng_session
$SESSION_NAME $TRACE_PATH
107 enable_jul_lttng_event_loglevel
$SESSION_NAME $EVENT_NAME "JUL_INFO"
108 start_lttng_tracing
$SESSION_NAME
110 # Run 5 times with a 1 second delay
115 stop_lttng_tracing
$SESSION_NAME
116 destroy_lttng_session
$SESSION_NAME
118 # Validate test. Expecting all events.
119 trace_matches
$EVENT_NAME $NR_ITER $TRACE_PATH
120 if [ $?
-ne 0 ]; then
124 diag
"Test JUL applications with lower loglevel"
126 create_lttng_session
$SESSION_NAME $TRACE_PATH
127 enable_jul_lttng_event_loglevel
$SESSION_NAME $EVENT_NAME "JUL_SEVERE"
128 start_lttng_tracing
$SESSION_NAME
130 # Run 5 times with a 1 second delay
135 stop_lttng_tracing
$SESSION_NAME
136 destroy_lttng_session
$SESSION_NAME
138 # Validate test. Expecting 0 events.
139 trace_matches
$EVENT_NAME 0 $TRACE_PATH
140 if [ $?
-ne 0 ]; then
144 diag
"Test JUL applications with higher loglevel"
146 create_lttng_session
$SESSION_NAME $TRACE_PATH
147 enable_jul_lttng_event_loglevel
$SESSION_NAME $EVENT_NAME "JUL_FINER"
148 start_lttng_tracing
$SESSION_NAME
150 # Run 5 times with a 1 second delay
155 stop_lttng_tracing
$SESSION_NAME
156 destroy_lttng_session
$SESSION_NAME
158 # Validate test. Expecting all events.
159 trace_matches
$EVENT_NAME $NR_ITER $TRACE_PATH
163 function test_jul_loglevel_multiple
()
165 diag
"Test JUL application with multiple loglevel"
167 create_lttng_session
$SESSION_NAME $TRACE_PATH
168 enable_jul_lttng_event_loglevel
$SESSION_NAME $EVENT_NAME "JUL_INFO"
169 enable_jul_lttng_event_loglevel
$SESSION_NAME $EVENT_NAME "JUL_FINEST"
170 start_lttng_tracing
$SESSION_NAME
172 # Run 5 times with a 1 second delay and fire two TP.
176 stop_lttng_tracing
$SESSION_NAME
177 destroy_lttng_session
$SESSION_NAME
179 # Validate test. Expecting all events times two.
180 trace_matches
$EVENT_NAME $
(($NR_ITER * 2)) $TRACE_PATH
181 if [ $?
-ne 0 ]; then
185 create_lttng_session
$SESSION_NAME $TRACE_PATH
186 enable_jul_lttng_event_loglevel
$SESSION_NAME '*' "JUL_INFO"
187 enable_jul_lttng_event_loglevel
$SESSION_NAME '*' "JUL_FINEST"
188 start_lttng_tracing
$SESSION_NAME
190 # Run 5 times with a 1 second delay and fire two TP.
194 stop_lttng_tracing
$SESSION_NAME
195 destroy_lttng_session
$SESSION_NAME
197 # Validate test. Expecting all events times two.
198 trace_matches
$EVENT_NAME $
(($NR_ITER * 2)) $TRACE_PATH
199 if [ $?
-ne 0 ]; then
204 function test_jul_multi_session
()
206 diag
"Test JUL with multiple session"
208 create_lttng_session
$SESSION_NAME-1 $TRACE_PATH/$SESSION_NAME-1
209 enable_jul_lttng_event
$SESSION_NAME-1 $EVENT_NAME
210 start_lttng_tracing
$SESSION_NAME-1
212 create_lttng_session
$SESSION_NAME-2 $TRACE_PATH/$SESSION_NAME-2
213 enable_jul_lttng_event
$SESSION_NAME-2 $EVENT_NAME2
214 start_lttng_tracing
$SESSION_NAME-2
216 # Run 5 times with a 1 second delay and fire second TP.
220 stop_lttng_tracing
$SESSION_NAME-1
221 stop_lttng_tracing
$SESSION_NAME-2
222 destroy_lttng_session
$SESSION_NAME-1
223 destroy_lttng_session
$SESSION_NAME-2
225 # Validate test. Expecting all events of first TP
226 trace_matches
$EVENT_NAME $NR_ITER $TRACE_PATH/$SESSION_NAME-1
227 if [ $?
-ne 0 ]; then
231 # Validate test. Expecting one event of the second TP.
232 trace_matches
$EVENT_NAME2 1 $TRACE_PATH/$SESSION_NAME-2
233 if [ $?
-ne 0 ]; then
238 plan_tests
$NUM_TESTS
240 print_test_banner
"$TEST_DESC"
242 if [ ! -f "$TESTAPP_PATH.class" ]; then
248 skip
$withapp "JUL support is needed. Skipping all tests." $NUM_TESTS ||
254 test_jul_loglevel_multiple
255 test_jul_before_start
257 test_jul_multi_session
260 for fct_test
in ${tests[@]};
263 if [ $?
-ne 0 ]; then