HBASE-23892 SecureTestCluster should allow its subclasses to pass their Class reference on HBaseKerberosUtils.setSSLConfiguration (#1207)

Signed-off-by: Josh Elser <elserj@apache.org>
This commit is contained in:
Wellington Ramos Chevreuil 2020-02-28 18:35:15 +00:00 committed by GitHub
parent b24ea32b3b
commit 00ef6c624a
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
1 changed files with 28 additions and 7 deletions

View File

@ -52,6 +52,23 @@ public class SecureTestCluster {
private static String HTTP_PRINCIPAL;
//When extending SecureTestCluster on downstream projects that refer SecureTestCluster via
//hbase-server jar, we need to provide a way for the implementation to refer to its own class
//definition, so that KeyStoreTestUtil.getClasspathDir can resolve a valid path in the local FS
//to place required SSL config files.
private static Class testRunnerClass = SecureTestCluster.class;
/**
* SecureTestCluster extending classes can set their own <code>Class</code> reference type
* to be used as the target resource to be looked for on the class loader by
* <code>KeyStoreTestUtil</code>, when deciding where to place ssl related config files.
* @param testRunnerClass a <code>Class</code> reference from the
* <code>SecureTestCluster</code> extender.
*/
protected static void setTestRunner(Class testRunnerClass){
SecureTestCluster.testRunnerClass = testRunnerClass;
}
/**
* Setup and start kerberos, hbase
*/
@ -69,7 +86,7 @@ public class SecureTestCluster {
HBaseKerberosUtils.setSecuredConfiguration(TEST_UTIL.getConfiguration(),
PRINCIPAL + "@" + KDC.getRealm(), HTTP_PRINCIPAL + "@" + KDC.getRealm());
HBaseKerberosUtils.setSSLConfiguration(TEST_UTIL, SecureTestCluster.class);
HBaseKerberosUtils.setSSLConfiguration(TEST_UTIL, testRunnerClass);
TEST_UTIL.getConfiguration().setStrings(CoprocessorHost.REGION_COPROCESSOR_CONF_KEY,
TokenProvider.class.getName());
@ -82,13 +99,17 @@ public class SecureTestCluster {
@AfterClass
public static void tearDown() throws Exception {
if (CLUSTER != null) {
CLUSTER.shutdown();
try {
if (CLUSTER != null) {
CLUSTER.shutdown();
}
CLUSTER.join();
if (KDC != null) {
KDC.stop();
}
TEST_UTIL.shutdownMiniCluster();
} finally {
setTestRunner(SecureTestCluster.class);
}
if (KDC != null) {
KDC.stop();
}
TEST_UTIL.shutdownMiniCluster();
}
}