You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@logging.apache.org by mi...@apache.org on 2016/03/08 17:35:47 UTC

[07/10] logging-log4j2 git commit: LOG4J2-1291 added unit tests for PatternLayout.encode(LogEvent, ByteBufferDestination)

LOG4J2-1291 added unit tests for PatternLayout.encode(LogEvent, ByteBufferDestination)


Project: http://git-wip-us.apache.org/repos/asf/logging-log4j2/repo
Commit: http://git-wip-us.apache.org/repos/asf/logging-log4j2/commit/e039c72c
Tree: http://git-wip-us.apache.org/repos/asf/logging-log4j2/tree/e039c72c
Diff: http://git-wip-us.apache.org/repos/asf/logging-log4j2/diff/e039c72c

Branch: refs/heads/gelf-layout-gc-free
Commit: e039c72c8cdb7b16ed6c25d45a35ae6d92a1d495
Parents: 48b2da4
Author: rpopma <rp...@apache.org>
Authored: Wed Mar 9 01:22:41 2016 +1100
Committer: rpopma <rp...@apache.org>
Committed: Wed Mar 9 01:22:41 2016 +1100

----------------------------------------------------------------------
 .../log4j/core/layout/PatternLayoutTest.java    | 67 +++++++++++++++-----
 1 file changed, 51 insertions(+), 16 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/e039c72c/log4j-core/src/test/java/org/apache/logging/log4j/core/layout/PatternLayoutTest.java
----------------------------------------------------------------------
diff --git a/log4j-core/src/test/java/org/apache/logging/log4j/core/layout/PatternLayoutTest.java b/log4j-core/src/test/java/org/apache/logging/log4j/core/layout/PatternLayoutTest.java
index c4e9987..2184599 100644
--- a/log4j-core/src/test/java/org/apache/logging/log4j/core/layout/PatternLayoutTest.java
+++ b/log4j-core/src/test/java/org/apache/logging/log4j/core/layout/PatternLayoutTest.java
@@ -16,6 +16,7 @@
  */
 package org.apache.logging.log4j.core.layout;
 
+import java.nio.ByteBuffer;
 import java.nio.charset.Charset;
 import java.nio.charset.StandardCharsets;
 
@@ -74,6 +75,32 @@ public class PatternLayoutTest {
         ThreadContext.clearMap();
     }
 
+    private static class Destination implements ByteBufferDestination {
+        ByteBuffer byteBuffer = ByteBuffer.wrap(new byte[2048]);
+        @Override
+        public ByteBuffer getByteBuffer() {
+            return byteBuffer;
+        }
+
+        @Override
+        public ByteBuffer drain(final ByteBuffer buf) {
+            throw new IllegalStateException("Unexpected message larger than 2048 bytes");
+        }
+    }
+
+    private void assertToByteArray(final String expectedStr, final PatternLayout layout, final LogEvent event) {
+        final byte[] result = layout.toByteArray(event);
+        assertEquals(expectedStr, new String(result));
+    }
+
+    private void assertEncode(final String expectedStr, final PatternLayout layout, final LogEvent event) {
+        final Destination destination = new Destination();
+        layout.encode(event, destination);
+        final ByteBuffer byteBuffer = destination.getByteBuffer();
+        byteBuffer.flip(); // set limit to position, position back to zero
+        assertEquals(expectedStr, new String(byteBuffer.array(), 0, byteBuffer.limit()));
+    }
+
     @Test
     public void testEqualsEmptyMarker() throws Exception {
         // replace "[]" with the empty string
@@ -85,15 +112,17 @@ public class PatternLayoutTest {
                 .setLevel(Level.INFO) //
                 .setMarker(MarkerManager.getMarker("TestMarker")) //
                 .setMessage(new SimpleMessage("Hello, world!")).build();
-        final byte[] result1 = layout.toByteArray(event1);
-        assertEquals("[org.apache.logging.log4j.core.layout.PatternLayoutTest][TestMarker] Hello, world!", new String(result1));
+        assertToByteArray("[org.apache.logging.log4j.core.layout.PatternLayoutTest][TestMarker] Hello, world!", layout,
+                event1);
+        assertEncode("[org.apache.logging.log4j.core.layout.PatternLayoutTest][TestMarker] Hello, world!", layout,
+                event1);
         // empty marker
         final LogEvent event2 = Log4jLogEvent.newBuilder() //
                 .setLoggerName(this.getClass().getName()).setLoggerFqcn("org.apache.logging.log4j.core.Logger") //
                 .setLevel(Level.INFO) //
                 .setMessage(new SimpleMessage("Hello, world!")).build();
-        final byte[] result2 = layout.toByteArray(event2);
-        assertEquals("[org.apache.logging.log4j.core.layout.PatternLayoutTest] Hello, world!", new String(result2));
+        assertToByteArray("[org.apache.logging.log4j.core.layout.PatternLayoutTest] Hello, world!", layout, event2);
+        assertEncode("[org.apache.logging.log4j.core.layout.PatternLayoutTest] Hello, world!", layout, event2);
     }
 
     @Test
@@ -167,8 +196,8 @@ public class PatternLayoutTest {
                 .setLoggerName(this.getClass().getName()).setLoggerFqcn("org.apache.logging.log4j.core.Logger") //
                 .setLevel(Level.INFO) //
                 .setMessage(new SimpleMessage("Hello")).build();
-        final byte[] result = layout.toByteArray(event);
-        assertEquals(expectedStr, new String(result));
+        assertToByteArray(expectedStr, layout, event);
+        assertEncode(expectedStr, layout, event);
     }
 
     @Test
@@ -210,7 +239,7 @@ public class PatternLayoutTest {
                 .setIncludeLocation(true)
                 .setMessage(new SimpleMessage("entry")).build();
         final String result1 = new FauxLogger().formatEvent(event1, layout);
-        final String expectSuffix1 = String.format("====== PatternLayoutTest.testPatternSelector:212 entry ======%n");
+        final String expectSuffix1 = String.format("====== PatternLayoutTest.testPatternSelector:241 entry ======%n");
         assertTrue("Unexpected result: " + result1, result1.endsWith(expectSuffix1));
         final LogEvent event2 = Log4jLogEvent.newBuilder() //
                 .setLoggerName(this.getClass().getName()).setLoggerFqcn("org.apache.logging.log4j.core.Logger") //
@@ -229,8 +258,8 @@ public class PatternLayoutTest {
                 .setLoggerName(this.getClass().getName()).setLoggerFqcn("org.apache.logging.log4j.core.Logger") //
                 .setLevel(Level.INFO) //
                 .setMessage(new SimpleMessage("Hello, world!")).build();
-        final byte[] result = layout.toByteArray(event);
-        assertEquals("org/apache/logging/log4j/core/layout/PatternLayoutTest Hello, world!", new String(result));
+        assertToByteArray("org/apache/logging/log4j/core/layout/PatternLayoutTest Hello, world!", layout, event);
+        assertEncode("org/apache/logging/log4j/core/layout/PatternLayoutTest Hello, world!", layout, event);
     }
 
     @Test
@@ -244,15 +273,18 @@ public class PatternLayoutTest {
                 .setLevel(Level.INFO) //
                 .setMarker(MarkerManager.getMarker("TestMarker")) //
                 .setMessage(new SimpleMessage("Hello, world!")).build();
-        final byte[] result1 = layout.toByteArray(event1);
-        assertEquals("[org.apache.logging.log4j.core.layout.PatternLayoutTest][TestMarker] Hello, world!", new String(result1));
+        assertToByteArray("[org.apache.logging.log4j.core.layout.PatternLayoutTest][TestMarker] Hello, world!", layout,
+                event1);
+        assertEncode("[org.apache.logging.log4j.core.layout.PatternLayoutTest][TestMarker] Hello, world!", layout,
+                event1);
+
         // empty marker
         final LogEvent event2 = Log4jLogEvent.newBuilder() //
                 .setLoggerName(this.getClass().getName()).setLoggerFqcn("org.apache.logging.log4j.core.Logger") //
                 .setLevel(Level.INFO) //
                 .setMessage(new SimpleMessage("Hello, world!")).build();
-        final byte[] result2 = layout.toByteArray(event2);
-        assertEquals("[org.apache.logging.log4j.core.layout.PatternLayoutTest] Hello, world!", new String(result2));
+        assertToByteArray("[org.apache.logging.log4j.core.layout.PatternLayoutTest] Hello, world!", layout, event2);
+        assertEncode("[org.apache.logging.log4j.core.layout.PatternLayoutTest] Hello, world!", layout, event2);
     }
 
     @Test
@@ -263,9 +295,12 @@ public class PatternLayoutTest {
                 .setLoggerName(this.getClass().getName()).setLoggerFqcn("org.apache.logging.log4j.core.Logger") //
                 .setLevel(Level.INFO) //
                 .setMessage(new SimpleMessage("Hello, world!")).build();
-        final byte[] result = layout.toByteArray(event);
-        assertEquals("\\INFO\tHello, world!\n\torg.apache.logging.log4j.core.layout.PatternLayoutTest\r\n\f",
-                new String(result));
+        assertToByteArray("\\INFO\tHello, world!\n" +
+                "\torg.apache.logging.log4j.core.layout.PatternLayoutTest\r\n" +
+                "\f", layout, event);
+        assertEncode("\\INFO\tHello, world!\n" +
+                "\torg.apache.logging.log4j.core.layout.PatternLayoutTest\r\n" +
+                "\f", layout, event);
     }
 
     @Test