1 package org
.lttng
.ust
.agent
.integration
.jul
;
3 import static org
.junit
.Assume
.assumeTrue
;
5 import java
.io
.IOException
;
7 import java
.util
.logging
.Handler
;
8 import java
.util
.logging
.Level
;
9 import java
.util
.logging
.Logger
;
11 import org
.junit
.After
;
12 import org
.junit
.AfterClass
;
13 import org
.junit
.Before
;
14 import org
.junit
.BeforeClass
;
15 import org
.lttng
.ust
.agent
.integration
.common
.EnabledEventsTest
;
16 import org
.lttng
.ust
.agent
.jul
.LttngLogHandler
;
17 import org
.lttng
.ust
.agent
.utils
.LttngSessionControl
;
18 import org
.lttng
.ust
.agent
.utils
.LttngSessionControl
.Domain
;
20 public class JulEnabledEventsTest
extends EnabledEventsTest
{
22 private static final Domain DOMAIN
= Domain
.JUL
;
24 private Logger loggerA
;
25 private Logger loggerB
;
26 private Logger loggerC
;
27 private Logger loggerD
;
30 public static void julClassSetup() {
31 /* Skip tests if we can't find the JNI library or lttng-tools */
33 LttngLogHandler testHandler
= new LttngLogHandler();
35 } catch (SecurityException
| IOException e
) {
39 boolean ret1
= LttngSessionControl
.setupSession(null, DOMAIN
);
40 boolean ret2
= LttngSessionControl
.stopSession(null);
41 /* "lttng view" also tests that Babeltrace is installed and working */
42 List
<String
> contents
= LttngSessionControl
.viewSession(null);
43 boolean ret3
= LttngSessionControl
.destroySession(null);
44 assumeTrue(ret1
&& ret2
&& ret3
);
45 assumeTrue(contents
.isEmpty());
49 public static void julClassCleanup() {
50 LttngSessionControl
.deleteAllTracee();
54 public void julSetup() throws SecurityException
, IOException
{
55 // TODO Wipe all existing LTTng sessions?
57 loggerA
= Logger
.getLogger(EVENT_NAME_A
);
58 loggerB
= Logger
.getLogger(EVENT_NAME_B
);
59 loggerC
= Logger
.getLogger(EVENT_NAME_C
);
60 loggerD
= Logger
.getLogger(EVENT_NAME_D
);
62 loggerA
.setLevel(Level
.ALL
);
63 loggerB
.setLevel(Level
.ALL
);
64 loggerC
.setLevel(Level
.ALL
);
65 loggerD
.setLevel(Level
.ALL
);
67 handlerA
= new LttngLogHandler();
68 handlerB
= new LttngLogHandler();
69 handlerC
= new LttngLogHandler();
71 loggerA
.addHandler((Handler
) handlerA
);
72 loggerB
.addHandler((Handler
) handlerB
);
73 loggerC
.addHandler((Handler
) handlerC
);
77 public void julTeardown() {
78 loggerA
.removeHandler((Handler
) handlerA
);
79 loggerB
.removeHandler((Handler
) handlerB
);
80 loggerC
.removeHandler((Handler
) handlerC
);
89 protected Domain
getDomain() {
94 protected void sendEventsToLoggers() {
95 send10Events(loggerA
);
96 send10Events(loggerB
);
97 send10Events(loggerC
);
98 send10Events(loggerD
);
101 static void send10Events(Logger logger
) {
102 String a
= new String("a");
103 Object
[] params
= { a
, new String("b"), new Object() };
105 // Levels are FINE, FINER, FINEST, INFO, SEVERE, WARNING
106 logger
.fine("A fine level message");
107 logger
.finer("A finer level message");
108 logger
.finest("A finest level message");
109 logger
.info("A info level message");
110 logger
.severe("A severe level message");
111 logger
.warning("A warning level message");
112 logger
.warning("Another warning level message");
113 logger
.log(Level
.WARNING
, "A warning message using Logger.log()");
114 logger
.log(Level
.INFO
, "A message with one parameter", a
);
115 logger
.log(Level
.INFO
, "A message with parameters", params
);