diff --git a/hbase-http/pom.xml b/hbase-http/pom.xml
index c4063428b942..d64e6cd7fa84 100644
--- a/hbase-http/pom.xml
+++ b/hbase-http/pom.xml
@@ -184,6 +184,10 @@
org.bouncycastle
bcprov-jdk15on
+
+ org.bouncycastle
+ bcpkix-jdk15on
+
diff --git a/hbase-http/src/test/java/org/apache/hadoop/hbase/http/LdapServerTestBase.java b/hbase-http/src/test/java/org/apache/hadoop/hbase/http/LdapServerTestBase.java
index bbf35b8585f6..8856aaa0e205 100644
--- a/hbase-http/src/test/java/org/apache/hadoop/hbase/http/LdapServerTestBase.java
+++ b/hbase-http/src/test/java/org/apache/hadoop/hbase/http/LdapServerTestBase.java
@@ -21,34 +21,73 @@
import java.net.HttpURLConnection;
import java.net.URL;
import org.apache.commons.codec.binary.Base64;
-import org.apache.directory.server.core.integ.CreateLdapServerRule;
+import org.apache.directory.ldap.client.template.LdapConnectionTemplate;
+import org.apache.directory.server.core.api.DirectoryService;
+import org.apache.directory.server.core.integ.ApacheDSTestExtension;
+import org.apache.directory.server.ldap.LdapServer;
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.hbase.http.resource.JerseyResource;
-import org.junit.AfterClass;
-import org.junit.BeforeClass;
-import org.junit.ClassRule;
+import org.junit.jupiter.api.AfterAll;
+import org.junit.jupiter.api.BeforeAll;
+import org.junit.jupiter.api.extension.ExtendWith;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
/**
* Base class for setting up and testing an HTTP server with LDAP authentication.
*/
+@ExtendWith(ApacheDSTestExtension.class)
public class LdapServerTestBase extends HttpServerFunctionalTest {
private static final Logger LOG = LoggerFactory.getLogger(LdapServerTestBase.class);
- @ClassRule
- public static CreateLdapServerRule ldapRule = new CreateLdapServerRule();
-
protected static HttpServer server;
protected static URL baseUrl;
+ /**
+ * The following fields are set by ApacheDSTestExtension. These are normally inherited from
+ * AbstractLdapTestUnit, but this class already has a parent. We only use ldapServer, but
+ * declaring that one alone does not work.
+ */
+
+ /** The class DirectoryService instance */
+ public static DirectoryService classDirectoryService;
+
+ /** The test DirectoryService instance */
+ public static DirectoryService methodDirectoryService;
+
+ /** The current DirectoryService instance */
+ public static DirectoryService directoryService;
+
+ /** The class LdapServer instance */
+ public static LdapServer classLdapServer;
+
+ /** The test LdapServer instance */
+ public static LdapServer methodLdapServer;
+
+ /** The current LdapServer instance */
+ public static LdapServer ldapServer;
+
+ /** The Ldap connection template */
+ public static LdapConnectionTemplate ldapConnectionTemplate;
+
+ /** The current revision */
+ public static long revision = 0L;
+
+ /**
+ * End of fields required by ApacheDSTestExtension
+ */
+
private static final String AUTH_TYPE = "Basic ";
+ protected static LdapServer getLdapServer() {
+ return classLdapServer;
+ }
+
/**
* Sets up the HTTP server with LDAP authentication before any tests are run.
* @throws Exception if an error occurs during server setup
*/
- @BeforeClass
+ @BeforeAll
public static void setupServer() throws Exception {
Configuration conf = new Configuration();
setLdapConfigurations(conf);
@@ -66,7 +105,7 @@ public static void setupServer() throws Exception {
* Stops the HTTP server after all tests are completed.
* @throws Exception if an error occurs during server shutdown
*/
- @AfterClass
+ @AfterAll
public static void stopServer() throws Exception {
try {
if (null != server) {
@@ -90,8 +129,8 @@ protected static void setLdapConfigurations(Configuration conf) {
conf.set(HttpServer.FILTER_INITIALIZERS_PROPERTY,
"org.apache.hadoop.hbase.http.lib.AuthenticationFilterInitializer");
conf.set("hadoop.http.authentication.type", "ldap");
- conf.set("hadoop.http.authentication.ldap.providerurl", String.format("ldap://%s:%s",
- LdapConstants.LDAP_SERVER_ADDR, ldapRule.getLdapServer().getPort()));
+ conf.set("hadoop.http.authentication.ldap.providerurl",
+ String.format("ldap://%s:%s", LdapConstants.LDAP_SERVER_ADDR, getLdapServer().getPort()));
conf.set("hadoop.http.authentication.ldap.enablestarttls", "false");
conf.set("hadoop.http.authentication.ldap.basedn", LdapConstants.LDAP_BASE_DN);
}
diff --git a/hbase-http/src/test/java/org/apache/hadoop/hbase/http/TestLdapAdminACL.java b/hbase-http/src/test/java/org/apache/hadoop/hbase/http/TestLdapAdminACL.java
index 459865509630..900c1fef07b1 100644
--- a/hbase-http/src/test/java/org/apache/hadoop/hbase/http/TestLdapAdminACL.java
+++ b/hbase-http/src/test/java/org/apache/hadoop/hbase/http/TestLdapAdminACL.java
@@ -17,10 +17,11 @@
*/
package org.apache.hadoop.hbase.http;
-import static org.junit.Assert.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertEquals;
import java.io.IOException;
import java.net.HttpURLConnection;
+import java.util.concurrent.TimeUnit;
import org.apache.directory.server.annotations.CreateLdapServer;
import org.apache.directory.server.annotations.CreateTransport;
import org.apache.directory.server.core.annotations.ApplyLdifs;
@@ -29,21 +30,19 @@
import org.apache.directory.server.core.annotations.CreatePartition;
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.CommonConfigurationKeys;
-import org.apache.hadoop.hbase.HBaseClassTestRule;
import org.apache.hadoop.hbase.http.resource.JerseyResource;
-import org.apache.hadoop.hbase.testclassification.MiscTests;
-import org.apache.hadoop.hbase.testclassification.SmallTests;
-import org.junit.BeforeClass;
-import org.junit.ClassRule;
-import org.junit.Test;
-import org.junit.experimental.categories.Category;
+import org.junit.jupiter.api.BeforeAll;
+import org.junit.jupiter.api.Tag;
+import org.junit.jupiter.api.Test;
+import org.junit.jupiter.api.Timeout;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
/**
* Test class for admin ACLs with LDAP authentication on the HttpServer.
*/
-@Category({ MiscTests.class, SmallTests.class })
+@Tag("org.apache.hadoop.hbase.testclassification.MiscTests")
+@Tag("org.apache.hadoop.hbase.testclassification.SmallTests")
@CreateLdapServer(
transports = { @CreateTransport(protocol = "LDAP", address = LdapConstants.LDAP_SERVER_ADDR), })
@CreateDS(name = "TestLdapAdminACL", allowAnonAccess = true,
@@ -55,18 +54,16 @@
"dn: uid=jdoe," + LdapConstants.LDAP_BASE_DN, "cn: John Doe", "sn: Doe",
"objectClass: inetOrgPerson", "uid: jdoe", "userPassword: secure123" })
+@Timeout(value = 1, unit = TimeUnit.MINUTES)
public class TestLdapAdminACL extends LdapServerTestBase {
- @ClassRule
- public static final HBaseClassTestRule CLASS_RULE =
- HBaseClassTestRule.forClass(TestLdapAdminACL.class);
private static final Logger LOG = LoggerFactory.getLogger(TestLdapAdminACL.class);
private static final String ADMIN_CREDENTIALS = "bjones:p@ssw0rd";
private static final String NON_ADMIN_CREDENTIALS = "jdoe:secure123";
private static final String WRONG_CREDENTIALS = "bjones:password";
- @BeforeClass
+ @BeforeAll
public static void setupServer() throws Exception {
Configuration conf = new Configuration();
setLdapConfigurationWithACLs(conf);
diff --git a/hbase-http/src/test/java/org/apache/hadoop/hbase/http/TestLdapHttpServer.java b/hbase-http/src/test/java/org/apache/hadoop/hbase/http/TestLdapHttpServer.java
index bff4dc9d9591..66b3b2924eed 100644
--- a/hbase-http/src/test/java/org/apache/hadoop/hbase/http/TestLdapHttpServer.java
+++ b/hbase-http/src/test/java/org/apache/hadoop/hbase/http/TestLdapHttpServer.java
@@ -17,27 +17,26 @@
*/
package org.apache.hadoop.hbase.http;
-import static org.junit.Assert.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertEquals;
import java.io.IOException;
import java.net.HttpURLConnection;
+import java.util.concurrent.TimeUnit;
import org.apache.directory.server.annotations.CreateLdapServer;
import org.apache.directory.server.annotations.CreateTransport;
import org.apache.directory.server.core.annotations.ApplyLdifs;
import org.apache.directory.server.core.annotations.ContextEntry;
import org.apache.directory.server.core.annotations.CreateDS;
import org.apache.directory.server.core.annotations.CreatePartition;
-import org.apache.hadoop.hbase.HBaseClassTestRule;
-import org.apache.hadoop.hbase.testclassification.MiscTests;
-import org.apache.hadoop.hbase.testclassification.SmallTests;
-import org.junit.ClassRule;
-import org.junit.Test;
-import org.junit.experimental.categories.Category;
+import org.junit.jupiter.api.Tag;
+import org.junit.jupiter.api.Test;
+import org.junit.jupiter.api.Timeout;
/**
* Test class for LDAP authentication on the HttpServer.
*/
-@Category({ MiscTests.class, SmallTests.class })
+@Tag("org.apache.hadoop.hbase.testclassification.MiscTests")
+@Tag("org.apache.hadoop.hbase.testclassification.SmallTests")
@CreateLdapServer(
transports = { @CreateTransport(protocol = "LDAP", address = LdapConstants.LDAP_SERVER_ADDR), })
@CreateDS(name = "TestLdapHttpServer", allowAnonAccess = true,
@@ -46,12 +45,9 @@
+ "dc: example\n" + "objectClass: top\n" + "objectClass: domain\n\n")) })
@ApplyLdifs({ "dn: uid=bjones," + LdapConstants.LDAP_BASE_DN, "cn: Bob Jones", "sn: Jones",
"objectClass: inetOrgPerson", "uid: bjones", "userPassword: p@ssw0rd" })
+@Timeout(value = 1, unit = TimeUnit.MINUTES)
public class TestLdapHttpServer extends LdapServerTestBase {
- @ClassRule
- public static final HBaseClassTestRule CLASS_RULE =
- HBaseClassTestRule.forClass(TestLdapHttpServer.class);
-
private static final String BJONES_CREDENTIALS = "bjones:p@ssw0rd";
private static final String WRONG_CREDENTIALS = "bjones:password";
diff --git a/pom.xml b/pom.xml
index 6e8fab5e8b29..75370482fd8e 100644
--- a/pom.xml
+++ b/pom.xml
@@ -1069,8 +1069,8 @@
none
- 2.0.0.AM26
- 2.0.0
+ 2.0.0.AM27
+ 2.1.7
${project.build.directory}/META-INF/resources/webjars
5.3.3