Skip to content

Commit

Permalink
HBASE-22545 TestLogLevel broken
Browse files Browse the repository at this point in the history
Signed-off-by: Josh Elser <[email protected]>
  • Loading branch information
liuml07 authored and joshelser committed Jun 11, 2019
1 parent 3e779fc commit 60cea9e
Showing 1 changed file with 32 additions and 7 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -51,6 +51,7 @@
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;
Expand Down Expand Up @@ -399,7 +400,7 @@ public void testLogLevelByHttp() throws Exception {
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) {
GenericTestUtils.assertExceptionContains("Unrecognized SSL message", e);
exceptionShouldContains("Unrecognized SSL message", e);
}
}

Expand All @@ -416,7 +417,7 @@ public void testLogLevelByHttpWithSpnego() throws Exception {
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) {
GenericTestUtils.assertExceptionContains("Unrecognized SSL message", e);
exceptionShouldContains("Unrecognized SSL message", e);
}
}

Expand All @@ -433,7 +434,7 @@ public void testLogLevelByHttps() throws Exception {
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) {
GenericTestUtils.assertExceptionContains("Unexpected end of file from server", e);
exceptionShouldContains("Unexpected end of file from server", e);
}
}

Expand All @@ -447,10 +448,34 @@ public void testLogLevelByHttps() throws Exception {
public void testLogLevelByHttpsWithSpnego() throws Exception {
testDynamicLogLevel(LogLevel.PROTOCOL_HTTPS, LogLevel.PROTOCOL_HTTPS, true);
try {
testDynamicLogLevel(LogLevel.PROTOCOL_HTTPS, LogLevel.PROTOCOL_HTTP, true);
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);
testDynamicLogLevel(LogLevel.PROTOCOL_HTTPS, LogLevel.PROTOCOL_HTTP,
true);
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);
}
}

/**
* 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);
}
}

0 comments on commit 60cea9e

Please sign in to comment.