You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@sling.apache.org by ch...@apache.org on 2015/01/14 19:11:37 UTC

svn commit: r1651758 - /sling/trunk/testing/tools/src/main/java/org/apache/sling/testing/tools/junit/RemoteLogDumper.java

Author: chetanm
Date: Wed Jan 14 18:11:36 2015
New Revision: 1651758

URL: http://svn.apache.org/r1651758
Log:
SLING-4280 - Enable dumping of remote server logs in case of test failures

Detect the case when running with slf4j-simple which does not have function MDC support and log a warning in that case

Modified:
    sling/trunk/testing/tools/src/main/java/org/apache/sling/testing/tools/junit/RemoteLogDumper.java

Modified: sling/trunk/testing/tools/src/main/java/org/apache/sling/testing/tools/junit/RemoteLogDumper.java
URL: http://svn.apache.org/viewvc/sling/trunk/testing/tools/src/main/java/org/apache/sling/testing/tools/junit/RemoteLogDumper.java?rev=1651758&r1=1651757&r2=1651758&view=diff
==============================================================================
--- sling/trunk/testing/tools/src/main/java/org/apache/sling/testing/tools/junit/RemoteLogDumper.java (original)
+++ sling/trunk/testing/tools/src/main/java/org/apache/sling/testing/tools/junit/RemoteLogDumper.java Wed Jan 14 18:11:36 2015
@@ -30,6 +30,7 @@ import org.apache.sling.testing.tools.sl
 import org.junit.rules.TestWatcher;
 import org.junit.runner.Description;
 import org.slf4j.MDC;
+import org.slf4j.spi.MDCAdapter;
 
 /**
  * The RemoteLogDumper Rule fetches logs which are generated due to execution of test from the
@@ -80,6 +81,7 @@ public class RemoteLogDumper extends Tes
 
         if (baseUrl != null) {
             try {
+                warnIfNopMDCAdapterBeingUsed();
                 DefaultHttpClient httpClient = new DefaultHttpClient();
                 RequestExecutor executor = new RequestExecutor(httpClient);
                 RequestBuilder rb = new RequestBuilder(baseUrl);
@@ -115,6 +117,27 @@ public class RemoteLogDumper extends Tes
         }
     }
 
+    private static void warnIfNopMDCAdapterBeingUsed() {
+        try {
+            MDCAdapter adapter = MDC.getMDCAdapter();
+            String msg = null;
+            if (adapter == null) {
+                msg = "No MDC Adapter found.";
+            } else if ("org.slf4j.helpers.NOPMDCAdapter".equals(adapter.getClass().getName())) {
+                msg = "MDC adapter set to [org.slf4j.helpers.NOPMDCAdapter].";
+            }
+
+            if (msg != null) {
+                System.err.printf("%s Possibly running with slf4j-simple. " +
+                        "Use Logging implementation like Logback to enable proper MDC support so " +
+                        "as to make use of RemoteLogDumper feature.%n", msg);
+            }
+
+        } catch (Throwable ignore) {
+
+        }
+    }
+
     private static String getServerBaseUrl() {
         SlingInstanceState testState = SlingInstanceState.getInstance(SlingInstanceState.DEFAULT_INSTANCE_NAME);
         String baseUrl = testState.getServerBaseUrl();