You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@logging.apache.org by rp...@apache.org on 2016/08/27 06:56:04 UTC

[35/42] logging-log4j2 git commit: Added org.apache.logging.log4j.core.layout.CsvParameterLayoutTest.testLogJsonArgument() for [LOG4J2-1502] CsvParameterLayout is inserting NUL character if data starts with {, (, [ or "

Added
org.apache.logging.log4j.core.layout.CsvParameterLayoutTest.testLogJsonArgument()
for [LOG4J2-1502] CsvParameterLayout is inserting NUL character if data
starts with {, (, [ or "

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

Branch: refs/heads/LOG4J2-1349-gcfree-threadcontext
Commit: ae218df64450d6e3d8744c07d173ed714473de19
Parents: d8d2ac0
Author: Gary Gregory <gg...@apache.org>
Authored: Fri Aug 26 18:01:41 2016 -0700
Committer: Gary Gregory <gg...@apache.org>
Committed: Fri Aug 26 18:01:41 2016 -0700

----------------------------------------------------------------------
 .../core/layout/CsvParameterLayoutTest.java     | 59 ++++++++++++++------
 1 file changed, 43 insertions(+), 16 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/ae218df6/log4j-core/src/test/java/org/apache/logging/log4j/core/layout/CsvParameterLayoutTest.java
----------------------------------------------------------------------
diff --git a/log4j-core/src/test/java/org/apache/logging/log4j/core/layout/CsvParameterLayoutTest.java b/log4j-core/src/test/java/org/apache/logging/log4j/core/layout/CsvParameterLayoutTest.java
index 58ce1bd..f4eddd1 100644
--- a/log4j-core/src/test/java/org/apache/logging/log4j/core/layout/CsvParameterLayoutTest.java
+++ b/log4j-core/src/test/java/org/apache/logging/log4j/core/layout/CsvParameterLayoutTest.java
@@ -28,6 +28,7 @@ import java.util.concurrent.TimeUnit;
 
 import org.apache.commons.csv.CSVFormat;
 import org.apache.logging.log4j.Level;
+import org.apache.logging.log4j.LogManager;
 import org.apache.logging.log4j.core.Appender;
 import org.apache.logging.log4j.core.Logger;
 import org.apache.logging.log4j.junit.LoggerContextRule;
@@ -49,19 +50,15 @@ import org.junit.runners.Parameterized;
 public class CsvParameterLayoutTest {
     @Parameterized.Parameters(name = "{0}")
     public static Collection<Object[]> data() {
-        return Arrays.asList(
-                new Object[][]{
-                        { new LoggerContextRule("csvParamsSync.xml"), },
-                        { new LoggerContextRule("csvParamsMixedAsync.xml"), },
-                }
-        );
+        return Arrays.asList(new Object[][] { { new LoggerContextRule("csvParamsSync.xml"), },
+                { new LoggerContextRule("csvParamsMixedAsync.xml"), }, });
     }
 
     @Rule
     public final LoggerContextRule init;
 
     @Rule
-    public final ThreadContextRule threadContextRule = new ThreadContextRule(); 
+    public final ThreadContextRule threadContextRule = new ThreadContextRule();
 
     public CsvParameterLayoutTest(final LoggerContextRule contextRule) {
         this.init = contextRule;
@@ -86,11 +83,9 @@ public class CsvParameterLayoutTest {
         assertEquals("text/csv; charset=UTF-8", layout.getContentType());
     }
 
-    static void testLayoutNormalApi(final Logger root, final AbstractCsvLayout layout, final boolean messageApi) throws Exception {
-        final Map<String, Appender> appenders = root.getAppenders();
-        for (final Appender appender : appenders.values()) {
-            root.removeAppender(appender);
-        }
+    static void testLayoutNormalApi(final Logger root, final AbstractCsvLayout layout, final boolean messageApi)
+            throws Exception {
+        removeAppenders(root);
         // set up appender
         final ListAppender appender = new ListAppender("List", null, layout, true, false);
         appender.start();
@@ -107,10 +102,12 @@ public class CsvParameterLayoutTest {
         } else {
             logDebugNormalApi(root);
         }
-
-        // wait until background thread finished processing
-        appender.countDownLatch.await(10, TimeUnit.SECONDS);
-        assertEquals("Background thread did not finish processing: msg count", 4, appender.getMessages().size());
+        final int msgCount = 4;
+        if (appender.getMessages().size() < msgCount) {
+            // wait until background thread finished processing
+            appender.countDownLatch.await(10, TimeUnit.SECONDS);
+        }
+        assertEquals("Background thread did not finish processing: msg count", msgCount, appender.getMessages().size());
 
         // don't stop appender until background thread is done
         appender.stop();
@@ -123,6 +120,13 @@ public class CsvParameterLayoutTest {
         Assert.assertEquals("7" + d + "8" + d + "9" + d + "10", list.get(3));
     }
 
+    private static void removeAppenders(final Logger root) {
+        final Map<String, Appender> appenders = root.getAppenders();
+        for (final Appender appender : appenders.values()) {
+            root.removeAppender(appender);
+        }
+    }
+
     private static void logDebugNormalApi(final Logger root) {
         root.debug("with placeholders: {}{}{}", 1, 2, 3);
         root.debug("without placeholders", 2, 3);
@@ -154,4 +158,27 @@ public class CsvParameterLayoutTest {
         final Logger root = this.init.getRootLogger();
         testLayoutNormalApi(root, CsvParameterLayout.createLayout(CSVFormat.TDF), true);
     }
+
+    @Test
+    public void testLogJsonArgument() throws InterruptedException {
+        ListAppender appender = (ListAppender) init.getAppender("List");
+        appender.countDownLatch = new CountDownLatch(4);
+        appender.clear();
+        Logger logger = (Logger) LogManager.getRootLogger();
+        final String json = "{\"id\":10,\"name\":\"Alice\"}";
+        logger.error("log:{}", json);
+        // wait until background thread finished processing
+        final int msgCount = 1;
+        if (appender.getMessages().size() < msgCount) {
+            appender.countDownLatch.await(5, TimeUnit.SECONDS);
+        }
+        assertEquals("Background thread did not finish processing: msg count", msgCount, appender.getMessages().size());
+
+        // don't stop appender until background thread is done
+        appender.stop();
+        final List<String> list = appender.getMessages();
+        final String eventStr = list.get(0).toString();
+        Assert.assertTrue(eventStr, eventStr.contains(json));
+    }
+
 }