1 package org
.lttng
.ust
.agent
.integration
.log4j
;
3 import static org
.junit
.Assume
.assumeTrue
;
5 import java
.io
.IOException
;
8 import org
.apache
.log4j
.Appender
;
9 import org
.apache
.log4j
.Level
;
10 import org
.apache
.log4j
.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
.log4j
.LttngLogAppender
;
17 import org
.lttng
.ust
.agent
.utils
.LttngSessionControl
;
18 import org
.lttng
.ust
.agent
.utils
.LttngSessionControl
.Domain
;
20 public class Log4jEnabledEventsTest
extends EnabledEventsTest
{
22 private static final Domain DOMAIN
= Domain
.LOG4J
;
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 LttngLogAppender testHandler
= new LttngLogAppender();
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 LttngLogAppender();
68 handlerB
= new LttngLogAppender();
69 handlerC
= new LttngLogAppender();
71 loggerA
.addAppender((Appender
) handlerA
);
72 loggerB
.addAppender((Appender
) handlerB
);
73 loggerC
.addAppender((Appender
) handlerC
);
77 public void julTeardown() {
78 loggerA
.removeAppender((Appender
) handlerA
);
79 loggerB
.removeAppender((Appender
) handlerB
);
80 loggerC
.removeAppender((Appender
) 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 // Levels/priorities are DEBUG, ERROR, FATAL, INFO, TRACE, WARN
103 logger
.debug("Debug message. Lost among so many.");
104 logger
.debug("Debug message with a throwable", new IOException());
105 logger
.error("Error messsage. This might be bad.");
106 logger
.error("Error message with a throwable", new IOException());
107 logger
.fatal("A fatal message. You are already dead.");
108 logger
.info("A info message. Lol, who cares.");
109 logger
.trace("A trace message. No, no *that* trace");
110 logger
.warn("A warn message. Yellow underline.");
111 logger
.log(Level
.DEBUG
, "A debug message using .log()");
112 logger
.log(Level
.ERROR
, "A error message using .log()");