1 package org
.lttng
.ust
.agent
.integration
.jul
;
3 import static org
.junit
.Assert
.assertEquals
;
4 import static org
.junit
.Assert
.assertNotNull
;
5 import static org
.junit
.Assert
.assertTrue
;
6 import static org
.junit
.Assume
.assumeTrue
;
8 import java
.io
.IOException
;
10 import java
.util
.logging
.Handler
;
11 import java
.util
.logging
.Level
;
12 import java
.util
.logging
.Logger
;
14 import org
.junit
.After
;
15 import org
.junit
.Before
;
16 import org
.junit
.BeforeClass
;
17 import org
.junit
.Test
;
18 import org
.lttng
.ust
.agent
.jul
.LttngLogHandler
;
19 import org
.lttng
.ust
.agent
.utils
.LttngSessionControl
;
20 import org
.lttng
.ust
.agent
.utils
.LttngSessionControl
.Domain
;
22 public class JulEnabledEventsTest
{
24 private static final Domain DOMAIN
= Domain
.JUL
;
26 private static final String EVENT_NAME_A
= "EventA";
27 private static final String EVENT_NAME_B
= "EventAB";
28 private static final String EVENT_NAME_C
= "EventABC";
29 private static final String EVENT_NAME_D
= "EventABCD";
31 private Logger loggerA
;
32 private Logger loggerB
;
33 private Logger loggerC
;
34 private Logger loggerD
;
36 private Handler handlerA
;
37 private Handler handlerB
;
38 private Handler handlerC
;
41 public static void classSetup() {
42 /* Skip tests if we can't find the JNI library or lttng-tools */
44 LttngLogHandler testHandler
= new LttngLogHandler();
46 } catch (SecurityException
| IOException e
) {
50 boolean ret1
= LttngSessionControl
.setupSession(null, DOMAIN
);
51 boolean ret2
= LttngSessionControl
.stopSession();
52 boolean ret3
= LttngSessionControl
.destroySession();
53 assumeTrue(ret1
&& ret2
&& ret3
);
57 public void setup() throws SecurityException
, IOException
{
58 loggerA
= Logger
.getLogger(EVENT_NAME_A
);
59 loggerB
= Logger
.getLogger(EVENT_NAME_B
);
60 loggerC
= Logger
.getLogger(EVENT_NAME_C
);
61 loggerD
= Logger
.getLogger(EVENT_NAME_D
);
63 loggerA
.setLevel(Level
.ALL
);
64 loggerB
.setLevel(Level
.ALL
);
65 loggerC
.setLevel(Level
.ALL
);
66 loggerD
.setLevel(Level
.ALL
);
68 handlerA
= new LttngLogHandler();
69 handlerB
= new LttngLogHandler();
70 handlerC
= new LttngLogHandler();
72 loggerA
.addHandler(handlerA
);
73 loggerB
.addHandler(handlerB
);
74 loggerC
.addHandler(handlerB
);
78 public void teardown() {
79 loggerA
.removeHandler(handlerA
);
80 loggerB
.removeHandler(handlerB
);
81 loggerC
.removeHandler(handlerC
);
97 * Test sending events on the Java side, but no events enabled in the
98 * tracing session. There should be nothing in the resulting trace.
101 public void testNoEvents() {
102 assertTrue(LttngSessionControl
.setupSession(null, DOMAIN
));
104 send10Events(loggerA
);
105 send10Events(loggerB
);
106 send10Events(loggerC
);
107 send10Events(loggerD
);
109 assertTrue(LttngSessionControl
.stopSession());
111 List
<String
> output
= LttngSessionControl
.viewSession();
112 assertNotNull(output
);
113 assertTrue(output
.isEmpty());
115 assertTrue(LttngSessionControl
.destroySession());
119 * Test sending events on the Java side, and all events enabled in the
120 * tracing session. All handlers should have sent their events.
123 public void testAllEvents() {
124 assertTrue(LttngSessionControl
.setupSessionAllEvents(null, DOMAIN
));
126 send10Events(loggerA
);
127 send10Events(loggerB
);
128 send10Events(loggerC
);
129 send10Events(loggerD
);
131 assertTrue(LttngSessionControl
.stopSession());
133 List
<String
> output
= LttngSessionControl
.viewSession();
134 assertNotNull(output
);
135 assertEquals(20, output
.size()); // loggerC has no handler attached
137 assertTrue(LttngSessionControl
.destroySession());
141 * Test sending events on the Java side, with only some of them enabled in
142 * the tracing session. Only the subset that is enabled should be received.
145 public void testSomeEvents() {
146 assertTrue(LttngSessionControl
.setupSession(null, DOMAIN
,
147 EVENT_NAME_A
, EVENT_NAME_D
));
149 send10Events(loggerA
);
150 send10Events(loggerB
);
151 send10Events(loggerC
);
152 send10Events(loggerD
);
154 assertTrue(LttngSessionControl
.stopSession());
156 List
<String
> output
= LttngSessionControl
.viewSession();
157 assertNotNull(output
);
158 assertEquals(10, output
.size()); // loggerC has no handler attached
160 assertTrue(LttngSessionControl
.destroySession());
163 private static void send10Events(Logger logger
) {
164 String a
= new String("a");
165 Object
[] params
= {a
, new String("b"), new Object()};
167 // Levels are FINE, FINER, FINEST, INFO, SEVERE, WARNING
168 logger
.fine("A fine level message");
169 logger
.finer("A finer level message");
170 logger
.finest("A finest level message");
171 logger
.info("A info level message");
172 logger
.severe("A severe level message");
173 logger
.warning("A warning level message");
174 logger
.warning("Another warning level message");
175 logger
.log(Level
.WARNING
, "A warning message using Logger.log()");
176 logger
.log(Level
.INFO
, "A message with one parameter", a
);
177 logger
.log(Level
.INFO
, "A message with parameters", params
);