You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@hbase.apache.org by el...@apache.org on 2019/06/11 20:07:00 UTC

[hbase] branch master updated: HBASE-22545 TestLogLevel broken

This is an automated email from the ASF dual-hosted git repository.

elserj pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/hbase.git


The following commit(s) were added to refs/heads/master by this push:
     new 934d469  HBASE-22545 TestLogLevel broken
934d469 is described below

commit 934d469fd57e714b03680ea2bc410ceb15635ad3
Author: Mingliang Liu <li...@apache.org>
AuthorDate: Tue Jun 11 00:44:54 2019 -0700

    HBASE-22545 TestLogLevel broken
    
    Signed-off-by: Josh Elser <el...@apache.org>
---
 .../apache/hadoop/hbase/http/log/TestLogLevel.java | 33 ++++++++++++++++++----
 1 file changed, 27 insertions(+), 6 deletions(-)

diff --git a/hbase-http/src/test/java/org/apache/hadoop/hbase/http/log/TestLogLevel.java b/hbase-http/src/test/java/org/apache/hadoop/hbase/http/log/TestLogLevel.java
index 5b86f91..489dbd8 100644
--- a/hbase-http/src/test/java/org/apache/hadoop/hbase/http/log/TestLogLevel.java
+++ b/hbase-http/src/test/java/org/apache/hadoop/hbase/http/log/TestLogLevel.java
@@ -52,6 +52,7 @@ import org.apache.hadoop.security.UserGroupInformation;
 import org.apache.hadoop.security.authorize.AccessControlList;
 import org.apache.hadoop.security.ssl.SSLFactory;
 import org.apache.hadoop.test.GenericTestUtils;
+import org.apache.hadoop.util.StringUtils;
 import org.apache.log4j.Level;
 import org.apache.log4j.LogManager;
 import org.apache.log4j.Logger;
@@ -409,7 +410,7 @@ public class TestLogLevel {
       fail("A HTTPS Client should not have succeeded in connecting to a " +
           "HTTP server");
     } catch (SSLException e) {
-      GenericTestUtils.assertExceptionContains("Unrecognized SSL message", e);
+      exceptionShouldContains("Unrecognized SSL message", e);
     }
   }
 
@@ -428,7 +429,7 @@ public class TestLogLevel {
       fail("A HTTPS Client should not have succeeded in connecting to a " +
           "HTTP server");
     } catch (SSLException e) {
-      GenericTestUtils.assertExceptionContains("Unrecognized SSL message", e);
+      exceptionShouldContains("Unrecognized SSL message", e);
     }
   }
 
@@ -448,8 +449,7 @@ public class TestLogLevel {
       fail("A HTTP Client should not have succeeded in connecting to a " +
           "HTTPS server");
     } catch (SocketException e) {
-      GenericTestUtils.assertExceptionContains(
-          "Unexpected end of file from server", e);
+      exceptionShouldContains("Unexpected end of file from server", e);
     }
   }
 
@@ -469,8 +469,29 @@ public class TestLogLevel {
       fail("A HTTP Client should not have succeeded in connecting to a " +
           "HTTPS server");
     }  catch (SocketException e) {
-      GenericTestUtils.assertExceptionContains(
-          "Unexpected end of file from server", e);
+      exceptionShouldContains("Unexpected end of file from server", e);
     }
   }
+
+  /**
+   * Assert that a throwable or one of its causes should contain the substr in its message.
+   *
+   * Ideally we should use {@link GenericTestUtils#assertExceptionContains(String, Throwable)} util
+   * method which asserts t.toString() contains the substr. As the original throwable may have been
+   * wrapped in Hadoop3 because of HADOOP-12897, it's required to check all the wrapped causes.
+   * After stop supporting Hadoop2, this method can be removed and assertion in tests can use
+   * t.getCause() directly, similar to HADOOP-15280.
+   */
+  private static void exceptionShouldContains(String substr, Throwable throwable) {
+    Throwable t = throwable;
+    while (t != null) {
+      String msg = t.toString();
+      if (msg != null && msg.contains(substr)) {
+        return;
+      }
+      t = t.getCause();
+    }
+    throw new AssertionError("Expected to find '" + substr + "' but got unexpected exception:" +
+        StringUtils.stringifyException(throwable), throwable);
+  }
 }