You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@logging.apache.org by gg...@apache.org on 2014/06/25 19:26:39 UTC
svn commit: r1605510 -
/logging/log4j/log4j2/trunk/log4j-core/src/test/java/org/apache/logging/log4j/core/layout/PatternLayoutTest.java
Author: ggregory
Date: Wed Jun 25 17:26:39 2014
New Revision: 1605510
URL: http://svn.apache.org/r1605510
Log:
[LOG4J2-688] Make org.apache.logging.log4j.core.layout.PatternLayout immutable. Test without using org.apache.logging.log4j.core.layout.PatternLayout.setConversionPattern(String).
Modified:
logging/log4j/log4j2/trunk/log4j-core/src/test/java/org/apache/logging/log4j/core/layout/PatternLayoutTest.java
Modified: logging/log4j/log4j2/trunk/log4j-core/src/test/java/org/apache/logging/log4j/core/layout/PatternLayoutTest.java
URL: http://svn.apache.org/viewvc/logging/log4j/log4j2/trunk/log4j-core/src/test/java/org/apache/logging/log4j/core/layout/PatternLayoutTest.java?rev=1605510&r1=1605509&r2=1605510&view=diff
==============================================================================
--- logging/log4j/log4j2/trunk/log4j-core/src/test/java/org/apache/logging/log4j/core/layout/PatternLayoutTest.java (original)
+++ logging/log4j/log4j2/trunk/log4j-core/src/test/java/org/apache/logging/log4j/core/layout/PatternLayoutTest.java Wed Jun 25 17:26:39 2014
@@ -61,100 +61,55 @@ public class PatternLayoutTest {
@After
public void after() {
ThreadContext.clearMap();
+
}
LoggerContext ctx = (LoggerContext) LogManager.getContext();
Logger root = ctx.getLogger("");
- /**
- * Test case for MDC conversion pattern.
- */
- @Test
- public void testMdcPattern() throws Exception {
-
- final String mdcMsgPattern1 = "%m : %X%n";
- final String mdcMsgPattern2 = "%m : %X{key1}%n";
- final String mdcMsgPattern3 = "%m : %X{key2}%n";
- final String mdcMsgPattern4 = "%m : %X{key3}%n";
- final String mdcMsgPattern5 = "%m : %X{key1},%X{key2},%X{key3}%n";
- final Map<String, Appender> appenders = root.getAppenders();
- for (final Appender appender : appenders.values()) {
- root.removeAppender(appender);
- }
-
- // set up appender
- final PatternLayout layout = PatternLayout.newBuilder()
- .withPattern(msgPattern)
- .withConfiguration(ctx.getConfiguration())
- .build();
- final FileAppender appender = FileAppender.createAppender(OUTPUT_FILE + "_mdc", "false", "false", "File",
- "false", "true", "false", null, layout, null, "false", null, null);
- appender.start();
-
- // set appender on root and set level to debug
- root.addAppender(appender);
- root.setLevel(Level.DEBUG);
-
- // output starting message
- root.debug("starting mdc pattern test");
-
- layout.setConversionPattern(mdcMsgPattern1);
- root.debug("empty mdc, no key specified in pattern");
-
- layout.setConversionPattern(mdcMsgPattern2);
- root.debug("empty mdc, key1 in pattern");
-
- layout.setConversionPattern(mdcMsgPattern3);
- root.debug("empty mdc, key2 in pattern");
-
- layout.setConversionPattern(mdcMsgPattern4);
- root.debug("empty mdc, key3 in pattern");
-
- layout.setConversionPattern(mdcMsgPattern5);
- root.debug("empty mdc, key1, key2, and key3 in pattern");
-
- ThreadContext.put("key1", "value1");
- ThreadContext.put("key2", "value2");
-
- layout.setConversionPattern(mdcMsgPattern1);
- root.debug("filled mdc, no key specified in pattern");
-
- layout.setConversionPattern(mdcMsgPattern2);
- root.debug("filled mdc, key1 in pattern");
-
- layout.setConversionPattern(mdcMsgPattern3);
- root.debug("filled mdc, key2 in pattern");
-
- layout.setConversionPattern(mdcMsgPattern4);
- root.debug("filled mdc, key3 in pattern");
-
- layout.setConversionPattern(mdcMsgPattern5);
- root.debug("filled mdc, key1, key2, and key3 in pattern");
-
- ThreadContext.remove("key1");
- ThreadContext.remove("key2");
+ @Test
+ public void testMdcPattern1() throws Exception {
+ testMdcPattern("%m : %X", "Hello : {}", false);
+ }
- layout.setConversionPattern(msgPattern);
- root.debug("finished mdc pattern test");
+ @Test
+ public void testMdcPattern2() throws Exception {
+ testMdcPattern("%m : %X{key1}", "Hello : value1", true);
+ }
- assertTrue(Compare.compare(this.getClass(), OUTPUT_FILE + "_mdc", WITNESS_FILE + "_mdc"));
+ @Test
+ public void testMdcPattern3() throws Exception {
+ testMdcPattern("%m : %X{key2}", "Hello : value2", true);
+ }
- root.removeAppender(appender);
+ @Test
+ public void testMdcPattern4() throws Exception {
+ testMdcPattern("%m : %X{key3}", "Hello : ", true);
+ }
- appender.stop();
+ @Test
+ public void testMdcPattern5() throws Exception {
+ testMdcPattern("%m : %X{key1}, %X{key2}, %X{key3}", "Hello : value1, value2, ", true);
+ }
- for (final Appender app : appenders.values()) {
- root.addAppender(app);
+ private void testMdcPattern(String patternStr, String expectedStr, boolean useThreadContext) throws Exception {
+ final PatternLayout layout = PatternLayout.newBuilder().withPattern(patternStr)
+ .withConfiguration(ctx.getConfiguration()).build();
+ if (useThreadContext) {
+ ThreadContext.put("key1", "value1");
+ ThreadContext.put("key2", "value2");
}
+ final LogEvent event = new Log4jLogEvent(this.getClass().getName(), null,
+ "org.apache.logging.log4j.core.Logger", Level.INFO, new SimpleMessage("Hello"), null);
+ final byte[] result = layout.toByteArray(event);
+ assertEquals(expectedStr, new String(result));
}
@Test
public void testRegex() throws Exception {
- final PatternLayout layout = PatternLayout.newBuilder()
- .withPattern(regexPattern)
- .withConfiguration(ctx.getConfiguration())
- .build();
+ final PatternLayout layout = PatternLayout.newBuilder().withPattern(regexPattern)
+ .withConfiguration(ctx.getConfiguration()).build();
final LogEvent event = new Log4jLogEvent(this.getClass().getName(), null,
"org.apache.logging.log4j.core.Logger", Level.INFO, new SimpleMessage("Hello, world!"), null);
final byte[] result = layout.toByteArray(event);
@@ -162,10 +117,8 @@ public class PatternLayoutTest {
}
private void testUnixTime(final String pattern) throws Exception {
- final PatternLayout layout = PatternLayout.newBuilder()
- .withPattern(pattern + " %m")
- .withConfiguration(ctx.getConfiguration())
- .build();
+ final PatternLayout layout = PatternLayout.newBuilder().withPattern(pattern + " %m")
+ .withConfiguration(ctx.getConfiguration()).build();
final LogEvent event1 = new Log4jLogEvent(this.getClass().getName(), null,
"org.apache.logging.log4j.core.Logger", Level.INFO, new SimpleMessage("Hello, world 1!"), null);
final byte[] result1 = layout.toByteArray(event1);
@@ -180,10 +133,8 @@ public class PatternLayoutTest {
@Test
public void testUnixTime() throws Exception {
- final PatternLayout layout = PatternLayout.newBuilder()
- .withPattern("%d{UNIX} %m")
- .withConfiguration(ctx.getConfiguration())
- .build();
+ final PatternLayout layout = PatternLayout.newBuilder().withPattern("%d{UNIX} %m")
+ .withConfiguration(ctx.getConfiguration()).build();
final LogEvent event1 = new Log4jLogEvent(this.getClass().getName(), null,
"org.apache.logging.log4j.core.Logger", Level.INFO, new SimpleMessage("Hello, world 1!"), null);
final byte[] result1 = layout.toByteArray(event1);
@@ -198,10 +149,8 @@ public class PatternLayoutTest {
@Test
public void testUnixTimeMillis() throws Exception {
- final PatternLayout layout = PatternLayout.newBuilder()
- .withPattern("%d{UNIX_MILLIS} %m")
- .withConfiguration(ctx.getConfiguration())
- .build();
+ final PatternLayout layout = PatternLayout.newBuilder().withPattern("%d{UNIX_MILLIS} %m")
+ .withConfiguration(ctx.getConfiguration()).build();
final LogEvent event1 = new Log4jLogEvent(this.getClass().getName(), null,
"org.apache.logging.log4j.core.Logger", Level.INFO, new SimpleMessage("Hello, world 1!"), null);
final byte[] result1 = layout.toByteArray(event1);
@@ -216,30 +165,27 @@ public class PatternLayoutTest {
@Test
public void testHeaderFooter() throws Exception {
- final PatternLayout layout = PatternLayout.newBuilder()
- .withPattern("%d{UNIX} %m")
- .withConfiguration(ctx.getConfiguration())
- .withHeader("${ctx:header}")
- .withFooter("${ctx:footer}")
- .build();
+ final PatternLayout layout = PatternLayout.newBuilder().withPattern("%d{UNIX} %m")
+ .withConfiguration(ctx.getConfiguration()).withHeader("${ctx:header}").withFooter("${ctx:footer}")
+ .build();
ThreadContext.put("header", "Hello world Header");
ThreadContext.put("footer", "Hello world Footer");
final LogEvent event1 = new Log4jLogEvent(this.getClass().getName(), null,
- "org.apache.logging.log4j.core.Logger", Level.INFO, new SimpleMessage("Hello, world 1!"), null);
+ "org.apache.logging.log4j.core.Logger", Level.INFO, new SimpleMessage("Hello, world 1!"), null);
final byte[] header = layout.getHeader();
assertNotNull("No header", header);
- assertTrue("expected \"Hello world Header\", actual \"" + new String(header) + '"', new String(header).equals(new String("Hello world Header")));
+ assertTrue("expected \"Hello world Header\", actual \"" + new String(header) + '"',
+ new String(header).equals(new String("Hello world Header")));
}
@Test
public void testSpecialChars() throws Exception {
- final PatternLayout layout = PatternLayout.newBuilder()
- .withPattern("\\\\%level\\t%msg\\n\\t%logger\\r\\n\\f")
- .withConfiguration(ctx.getConfiguration())
- .build();
+ final PatternLayout layout = PatternLayout.newBuilder().withPattern("\\\\%level\\t%msg\\n\\t%logger\\r\\n\\f")
+ .withConfiguration(ctx.getConfiguration()).build();
final LogEvent event = new Log4jLogEvent(this.getClass().getName(), null,
"org.apache.logging.log4j.core.Logger", Level.INFO, new SimpleMessage("Hello, world!"), null);
final byte[] result = layout.toByteArray(event);
- assertEquals("\\INFO\tHello, world!\n\torg.apache.logging.log4j.core.layout.PatternLayoutTest\r\n\f", new String(result));
+ assertEquals("\\INFO\tHello, world!\n\torg.apache.logging.log4j.core.layout.PatternLayoutTest\r\n\f",
+ new String(result));
}
}