HADOOP-13470. GenericTestUtils$LogCapturer is flaky. (Contributed by Mingliang 
Liu)


Project: http://git-wip-us.apache.org/repos/asf/hadoop/repo
Commit: http://git-wip-us.apache.org/repos/asf/hadoop/commit/23161c67
Tree: http://git-wip-us.apache.org/repos/asf/hadoop/tree/23161c67
Diff: http://git-wip-us.apache.org/repos/asf/hadoop/diff/23161c67

Branch: refs/heads/branch-2
Commit: 23161c67cf1420de417461614d4af86fefe24f50
Parents: 82623ea
Author: Mingliang Liu <lium...@apache.org>
Authored: Mon Aug 15 20:24:54 2016 -0700
Committer: Mingliang Liu <lium...@apache.org>
Committed: Mon Aug 15 20:38:40 2016 -0700

----------------------------------------------------------------------
 .../apache/hadoop/test/GenericTestUtils.java    | 25 ++++++-----
 .../hadoop/test/TestGenericTestUtils.java       | 44 ++++++++++++++++++++
 2 files changed, 56 insertions(+), 13 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/hadoop/blob/23161c67/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/test/GenericTestUtils.java
----------------------------------------------------------------------
diff --git 
a/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/test/GenericTestUtils.java
 
b/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/test/GenericTestUtils.java
index 116a111..6b5135c 100644
--- 
a/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/test/GenericTestUtils.java
+++ 
b/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/test/GenericTestUtils.java
@@ -42,10 +42,10 @@ import org.apache.commons.logging.impl.Log4JLogger;
 import org.apache.hadoop.fs.FileUtil;
 import org.apache.hadoop.util.StringUtils;
 import org.apache.hadoop.util.Time;
-import org.apache.log4j.Layout;
 import org.apache.log4j.Level;
 import org.apache.log4j.LogManager;
 import org.apache.log4j.Logger;
+import org.apache.log4j.PatternLayout;
 import org.apache.log4j.WriterAppender;
 import org.junit.Assert;
 import org.junit.Assume;
@@ -275,36 +275,35 @@ public abstract class GenericTestUtils {
     private StringWriter sw = new StringWriter();
     private WriterAppender appender;
     private Logger logger;
-    
+
     public static LogCapturer captureLogs(Log l) {
       Logger logger = ((Log4JLogger)l).getLogger();
-      LogCapturer c = new LogCapturer(logger);
-      return c;
+      return new LogCapturer(logger);
+    }
+
+    public static LogCapturer captureLogs(org.slf4j.Logger logger) {
+      return new LogCapturer(toLog4j(logger));
     }
-    
 
     private LogCapturer(Logger logger) {
       this.logger = logger;
-      Layout layout = Logger.getRootLogger().getAppender("stdout").getLayout();
-      WriterAppender wa = new WriterAppender(layout, sw);
-      logger.addAppender(wa);
+      this.appender = new WriterAppender(new PatternLayout(), sw);
+      logger.addAppender(appender);
     }
-    
+
     public String getOutput() {
       return sw.toString();
     }
-    
+
     public void stopCapturing() {
       logger.removeAppender(appender);
-
     }
 
     public void clearOutput() {
       sw.getBuffer().setLength(0);
     }
   }
-  
-  
+
   /**
    * Mockito answer helper that triggers one latch as soon as the
    * method is called, then waits on another before continuing.

http://git-wip-us.apache.org/repos/asf/hadoop/blob/23161c67/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/test/TestGenericTestUtils.java
----------------------------------------------------------------------
diff --git 
a/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/test/TestGenericTestUtils.java
 
b/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/test/TestGenericTestUtils.java
index 8a7b5f6..86df5d5 100644
--- 
a/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/test/TestGenericTestUtils.java
+++ 
b/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/test/TestGenericTestUtils.java
@@ -18,8 +18,16 @@
 
 package org.apache.hadoop.test;
 
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+
 import org.junit.Test;
 
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import static org.junit.Assert.assertTrue;
+
 public class TestGenericTestUtils extends GenericTestUtils {
 
   @Test
@@ -75,4 +83,40 @@ public class TestGenericTestUtils extends GenericTestUtils {
     }
   }
 
+  @Test(timeout = 10000)
+  public void testLogCapturer() {
+    final Log log = LogFactory.getLog(TestGenericTestUtils.class);
+    LogCapturer logCapturer = LogCapturer.captureLogs(log);
+    final String infoMessage = "info message";
+    // test get output message
+    log.info(infoMessage);
+    assertTrue(logCapturer.getOutput().endsWith(
+        String.format(infoMessage + "%n")));
+    // test clear output
+    logCapturer.clearOutput();
+    assertTrue(logCapturer.getOutput().isEmpty());
+    // test stop capturing
+    logCapturer.stopCapturing();
+    log.info(infoMessage);
+    assertTrue(logCapturer.getOutput().isEmpty());
+  }
+
+  @Test(timeout = 10000)
+  public void testLogCapturerSlf4jLogger() {
+    final Logger logger = LoggerFactory.getLogger(TestGenericTestUtils.class);
+    LogCapturer logCapturer = LogCapturer.captureLogs(logger);
+    final String infoMessage = "info message";
+    // test get output message
+    logger.info(infoMessage);
+    assertTrue(logCapturer.getOutput().endsWith(
+        String.format(infoMessage + "%n")));
+    // test clear output
+    logCapturer.clearOutput();
+    assertTrue(logCapturer.getOutput().isEmpty());
+    // test stop capturing
+    logCapturer.stopCapturing();
+    logger.info(infoMessage);
+    assertTrue(logCapturer.getOutput().isEmpty());
+  }
+
 }


---------------------------------------------------------------------
To unsubscribe, e-mail: common-commits-unsubscr...@hadoop.apache.org
For additional commands, e-mail: common-commits-h...@hadoop.apache.org

Reply via email to