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

bharathv pushed a commit to branch branch-1
in repository https://gitbox.apache.org/repos/asf/hbase.git


The following commit(s) were added to refs/heads/branch-1 by this push:
     new b7fbfdd  HBASE-26074: Fix 
testLogLevelByHttps/testLogLevelByHttpsWithSpnego (#3466)
b7fbfdd is described below

commit b7fbfdd0786e18fa9789f5bf164ddc0b0a4f1655
Author: Bharath Vissapragada <[email protected]>
AuthorDate: Thu Jul 8 22:46:50 2021 -0700

    HBASE-26074: Fix testLogLevelByHttps/testLogLevelByHttpsWithSpnego (#3466)
    
    Signed-off-by: Reid Chan <[email protected]>
---
 .../apache/hadoop/hbase/http/log/TestLogLevel.java | 35 +++++++++++++---------
 1 file changed, 21 insertions(+), 14 deletions(-)

diff --git 
a/hbase-server/src/test/java/org/apache/hadoop/hbase/http/log/TestLogLevel.java 
b/hbase-server/src/test/java/org/apache/hadoop/hbase/http/log/TestLogLevel.java
index b475c1a..bf90bac 100644
--- 
a/hbase-server/src/test/java/org/apache/hadoop/hbase/http/log/TestLogLevel.java
+++ 
b/hbase-server/src/test/java/org/apache/hadoop/hbase/http/log/TestLogLevel.java
@@ -23,6 +23,7 @@ import static org.junit.Assert.assertNotEquals;
 import static org.junit.Assert.assertTrue;
 import static org.junit.Assert.fail;
 
+import com.google.common.base.Joiner;
 import java.io.File;
 import java.net.BindException;
 import java.net.SocketException;
@@ -400,7 +401,7 @@ public class TestLogLevel {
       testDynamicLogLevel(LogLevel.PROTOCOL_HTTP, LogLevel.PROTOCOL_HTTPS, 
false);
       fail("A HTTPS Client should not have succeeded in connecting to a HTTP 
server");
     } catch (SSLException e) {
-      exceptionShouldContains("Unrecognized SSL message", e);
+      exceptionShouldContains(e, "Unrecognized SSL message");
     }
   }
 
@@ -417,7 +418,7 @@ public class TestLogLevel {
       testDynamicLogLevel(LogLevel.PROTOCOL_HTTP, LogLevel.PROTOCOL_HTTPS, 
true);
       fail("A HTTPS Client should not have succeeded in connecting to a HTTP 
server");
     } catch (SSLException e) {
-      exceptionShouldContains("Unrecognized SSL message", e);
+      exceptionShouldContains(e, "Unrecognized SSL message");
     }
   }
 
@@ -434,7 +435,10 @@ public class TestLogLevel {
       testDynamicLogLevel(LogLevel.PROTOCOL_HTTPS, LogLevel.PROTOCOL_HTTP, 
false);
       fail("A HTTP Client should not have succeeded in connecting to a HTTPS 
server");
     } catch (SocketException e) {
-      exceptionShouldContains("Unexpected end of file from server", e);
+      // Connection clean up and state management depends on the JVM and it's 
corresponding SSL
+      // libraries in use. We specifically noticed different behaviors with 
OpenJDK and Azul JVMs,
+      // See HBASE-26074.
+      exceptionShouldContains(e, "Unexpected end of file from server", 
"Connection reset");
     }
   }
 
@@ -453,12 +457,12 @@ public class TestLogLevel {
       fail("A HTTP Client should not have succeeded in connecting to a " +
           "HTTPS server");
     }  catch (SocketException e) {
-      exceptionShouldContains("Unexpected end of file from server", e);
+      exceptionShouldContains(e, "Unexpected end of file from server", 
"Connection reset");
     }
   }
 
   /**
-   * Assert that a throwable or one of its causes should contain the substr in 
its message.
+   * Assert that a throwable or one of its causes should contain any of 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
@@ -466,16 +470,19 @@ public class TestLogLevel {
    * 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.toLowerCase().contains(substr.toLowerCase())) {
-        return;
+  private static void exceptionShouldContains(Throwable throwable, String... 
substr) {
+    for (String s: substr) {
+      Throwable t = throwable;
+      while (t != null) {
+        String msg = t.toString();
+        if (msg != null && msg.toLowerCase().contains(s.toLowerCase())) {
+          return;
+        }
+        t = t.getCause();
       }
-      t = t.getCause();
     }
-    throw new AssertionError("Expected to find '" + substr + "' but got 
unexpected exception:" +
-        StringUtils.stringifyException(throwable), throwable);
+    String debug = "[" + Joiner.on(" , ").join(substr) + "]";
+    throw new AssertionError("Expected to find any of " + debug + " but got 
unexpected"
+      + " exception:" + StringUtils.stringifyException(throwable), throwable);
   }
 }

Reply via email to