diff --git a/bookkeeper-admin-api/pom.xml b/bookkeeper-admin-api/pom.xml
index 70dc438..25826ed 100644
--- a/bookkeeper-admin-api/pom.xml
+++ b/bookkeeper-admin-api/pom.xml
@@ -10,5 +10,11 @@
bookkeeper-admin-api
-
+
+
+ io.github.openfacade
+ http-facade
+ ${http-facade.version}
+
+
diff --git a/bookkeeper-admin-api/src/main/java/io/github/protocol/bookkeeper/admin/api/Configuration.java b/bookkeeper-admin-api/src/main/java/io/github/protocol/bookkeeper/admin/api/Configuration.java
index 38a0942..950cec9 100644
--- a/bookkeeper-admin-api/src/main/java/io/github/protocol/bookkeeper/admin/api/Configuration.java
+++ b/bookkeeper-admin-api/src/main/java/io/github/protocol/bookkeeper/admin/api/Configuration.java
@@ -1,5 +1,7 @@
package io.github.protocol.bookkeeper.admin.api;
+import io.github.openfacade.http.HttpClientEngine;
+
public class Configuration {
public String host = "localhost";
@@ -9,6 +11,8 @@ public class Configuration {
public TlsConfig tlsConfig;
+ public HttpClientEngine engine;
+
public Configuration() {
}
@@ -31,4 +35,9 @@ public Configuration tlsConfig(TlsConfig tlsConfig) {
this.tlsConfig = tlsConfig;
return this;
}
+
+ public Configuration engine(HttpClientEngine engine) {
+ this.engine = engine;
+ return this;
+ }
}
diff --git a/bookkeeper-admin/pom.xml b/bookkeeper-admin/pom.xml
index 50426c6..950cfc9 100644
--- a/bookkeeper-admin/pom.xml
+++ b/bookkeeper-admin/pom.xml
@@ -10,7 +10,6 @@
bookkeeper-admin
-
io.github.protocol-laboratory
@@ -22,6 +21,41 @@
http-facade
${http-facade.version}
+
+ org.apache.httpcomponents.client5
+ httpclient5
+ ${apache-http-client.version}
+ test
+
+
+ org.asynchttpclient
+ async-http-client
+ ${asynchttp.version}
+ test
+
+
+ org.eclipse.jetty
+ jetty-client
+ ${jetty.version}
+ test
+
+
+ com.squareup.okhttp3
+ okhttp
+ ${okhttp.version}
+ test
+
+
+ io.vertx
+ vertx-web-client
+ ${vertx.version}
+
+
+ io.github.embedded-middleware
+ embedded-bookkeeper-core
+ ${embedded-bookkeeper.version}
+ test
+
diff --git a/bookkeeper-admin/src/main/java/io/github/protocol/bookkeeper/admin/jdk/InnerHttpClient.java b/bookkeeper-admin/src/main/java/io/github/protocol/bookkeeper/admin/jdk/InnerHttpClient.java
index c580cee..c13b9a8 100644
--- a/bookkeeper-admin/src/main/java/io/github/protocol/bookkeeper/admin/jdk/InnerHttpClient.java
+++ b/bookkeeper-admin/src/main/java/io/github/protocol/bookkeeper/admin/jdk/InnerHttpClient.java
@@ -29,7 +29,8 @@ public class InnerHttpClient {
public InnerHttpClient(Configuration conf) {
HttpClientConfig.Builder clientConfigBuilder = new HttpClientConfig.Builder();
- clientConfigBuilder.engine(HttpClientEngine.Java);
+ HttpClientEngine engine = conf.engine == null ? HttpClientEngine.Java : conf.engine;
+ clientConfigBuilder.engine(engine);
if (conf.tlsEnabled) {
TlsConfig.Builder tlsConfigBuilder = new TlsConfig.Builder();
io.github.protocol.bookkeeper.admin.api.TlsConfig tlsConfig = conf.tlsConfig;
diff --git a/bookkeeper-admin/src/test/java/io/github/protocol/bookkeeper/admin/jdk/AutoRecoveryImplTest.java b/bookkeeper-admin/src/test/java/io/github/protocol/bookkeeper/admin/jdk/AutoRecoveryImplTest.java
index d1d716c..00c2dc7 100644
--- a/bookkeeper-admin/src/test/java/io/github/protocol/bookkeeper/admin/jdk/AutoRecoveryImplTest.java
+++ b/bookkeeper-admin/src/test/java/io/github/protocol/bookkeeper/admin/jdk/AutoRecoveryImplTest.java
@@ -1,51 +1,32 @@
package io.github.protocol.bookkeeper.admin.jdk;
-import io.github.embedded.bookkeeper.core.EmbeddedBookkeeperServer;
-import io.github.protocol.bookkeeper.admin.api.Configuration;
-import org.junit.jupiter.api.AfterAll;
import org.junit.jupiter.api.Assertions;
-import org.junit.jupiter.api.BeforeAll;
-import org.junit.jupiter.api.Test;
+import org.junit.jupiter.params.ParameterizedTest;
+import org.junit.jupiter.params.provider.MethodSource;
import java.util.Collections;
-public class AutoRecoveryImplTest {
-
- private static final EmbeddedBookkeeperServer SERVER = new EmbeddedBookkeeperServer();
-
- private static AutoRecoveryImpl autoRecovery = null;
-
- @BeforeAll
- public static void setup() throws Exception {
- SERVER.start();
- Configuration conf = new Configuration();
- conf.host("localhost");
- conf.port(SERVER.getBkWebPort());
- autoRecovery = new AutoRecoveryImpl(new InnerHttpClient(conf));
- }
-
- @AfterAll
- public static void teardown() throws Exception {
- SERVER.close();
- }
-
- @Test
- public void testAutoRecoveryStatus() throws BookkeeperAdminException {
+public class AutoRecoveryImplTest extends BaseTest {
+ @ParameterizedTest
+ @MethodSource("provideAutoRecoveries")
+ public void testAutoRecoveryStatus(AutoRecoveryImpl autoRecovery) throws BookkeeperAdminException {
AutoRecoveryStatus status = autoRecovery.autoRecoveryStatus();
Assertions.assertNotNull(status);
Assertions.assertTrue(status.isEnabled());
}
- @Test
- public void testRecoveryBookie() throws BookkeeperAdminException {
+ @ParameterizedTest
+ @MethodSource("provideAutoRecoveries")
+ public void testRecoveryBookie(AutoRecoveryImpl autoRecovery) throws BookkeeperAdminException {
RecoveryBookieReqData reqData = new RecoveryBookieReqData();
reqData.setBookieSrc(Collections.singletonList("localhost:3181"));
reqData.setDeleteCookie(false);
autoRecovery.recoveryBookie(reqData);
}
- @Test
- public void testRecoveryBookieError() {
+ @ParameterizedTest
+ @MethodSource("provideAutoRecoveries")
+ public void testRecoveryBookieError(AutoRecoveryImpl autoRecovery) {
RecoveryBookieReqData reqData = new RecoveryBookieReqData();
// bookie src is required
reqData.setBookieSrc(null);
@@ -53,35 +34,41 @@ public void testRecoveryBookieError() {
Assertions.assertThrows(BookkeeperAdminException.class, () -> autoRecovery.recoveryBookie(reqData));
}
- @Test
- public void testListUnderReplicatedLedger() {
+ @ParameterizedTest
+ @MethodSource("provideAutoRecoveries")
+ public void testListUnderReplicatedLedger(AutoRecoveryImpl autoRecovery) {
ListUnderReplicatedLedgerReqData reqData = new ListUnderReplicatedLedgerReqData();
reqData.setPrintMissingReplica(true);
Assertions.assertThrows(BookkeeperAdminException.class, () -> autoRecovery.listUnderReplicatedLedger(reqData));
}
- @Test
- public void testWhoIsAuditor() {
+ @ParameterizedTest
+ @MethodSource("provideAutoRecoveries")
+ public void testWhoIsAuditor(AutoRecoveryImpl autoRecovery) {
Assertions.assertThrows(BookkeeperAdminException.class, () -> autoRecovery.whoIsAuditor());
}
- @Test
- public void testTriggerAudit() {
+ @ParameterizedTest
+ @MethodSource("provideAutoRecoveries")
+ public void testTriggerAudit(AutoRecoveryImpl autoRecovery) {
Assertions.assertThrows(BookkeeperAdminException.class, () -> autoRecovery.triggerAudit());
}
- @Test
- public void testLostBookieRecoveryDelayByDefault() {
+ @ParameterizedTest
+ @MethodSource("provideAutoRecoveries")
+ public void testLostBookieRecoveryDelayByDefault(AutoRecoveryImpl autoRecovery) {
Assertions.assertThrows(BookkeeperAdminException.class, () -> autoRecovery.lostBookieRecoveryDelay());
}
- @Test
- public void testLostBookieRecoveryDelay() throws BookkeeperAdminException {
+ @ParameterizedTest
+ @MethodSource("provideAutoRecoveries")
+ public void testLostBookieRecoveryDelay(AutoRecoveryImpl autoRecovery) throws BookkeeperAdminException {
autoRecovery.lostBookieRecoveryDelay(5);
}
- @Test
- public void testDecommission() throws BookkeeperAdminException {
+ @ParameterizedTest
+ @MethodSource("provideAutoRecoveries")
+ public void testDecommission(AutoRecoveryImpl autoRecovery) throws BookkeeperAdminException {
autoRecovery.decommission("localhost:3181");
}
}
diff --git a/bookkeeper-admin/src/test/java/io/github/protocol/bookkeeper/admin/jdk/BaseTest.java b/bookkeeper-admin/src/test/java/io/github/protocol/bookkeeper/admin/jdk/BaseTest.java
new file mode 100644
index 0000000..6815362
--- /dev/null
+++ b/bookkeeper-admin/src/test/java/io/github/protocol/bookkeeper/admin/jdk/BaseTest.java
@@ -0,0 +1,67 @@
+package io.github.protocol.bookkeeper.admin.jdk;
+
+import io.github.embedded.bookkeeper.core.EmbeddedBookkeeperServer;
+import io.github.openfacade.http.HttpClientEngine;
+import io.github.protocol.bookkeeper.admin.api.Configuration;
+import org.junit.jupiter.api.AfterAll;
+import org.junit.jupiter.api.BeforeAll;
+import org.junit.jupiter.api.TestInstance;
+import org.junit.jupiter.params.provider.Arguments;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.stream.Stream;
+
+@TestInstance(TestInstance.Lifecycle.PER_CLASS)
+public class BaseTest {
+ protected final EmbeddedBookkeeperServer server = new EmbeddedBookkeeperServer();
+
+ @BeforeAll
+ public void setup() throws Exception {
+ server.start();
+ }
+
+ @AfterAll
+ public void teardown() throws Exception {
+ server.close();
+ }
+
+ public Stream provideAutoRecoveries() {
+ List autoRecoveries = new ArrayList<>();
+ Configuration conf = new Configuration();
+ conf.host("localhost");
+ conf.port(server.getBkWebPort());
+ for (HttpClientEngine engine : HttpClientEngine.values()) {
+ conf.engine(engine);
+ AutoRecoveryImpl recovery = new AutoRecoveryImpl(new InnerHttpClient(conf));
+ autoRecoveries.add(recovery);
+ }
+ return autoRecoveries.stream().map(recovery -> Arguments.arguments(recovery));
+ }
+
+ public Stream provideBookiesImpl() {
+ List bookies = new ArrayList<>();
+ Configuration conf = new Configuration();
+ conf.host("localhost");
+ conf.port(server.getBkWebPort());
+ for (HttpClientEngine engine : HttpClientEngine.values()) {
+ conf.engine(engine);
+ Bookies bookie = new BookiesImpl(new InnerHttpClient(conf));
+ bookies.add(bookie);
+ }
+ return bookies.stream().map(recovery -> Arguments.arguments(recovery));
+ }
+
+ public Stream provideConfigsImpl() {
+ List configs = new ArrayList<>();
+ Configuration conf = new Configuration();
+ conf.host("localhost");
+ conf.port(server.getBkWebPort());
+ for (HttpClientEngine engine : HttpClientEngine.values()) {
+ conf.engine(engine);
+ Configs config = new ConfigsImpl(new InnerHttpClient(conf));
+ configs.add(config);
+ }
+ return configs.stream().map(recovery -> Arguments.arguments(recovery));
+ }
+}
diff --git a/bookkeeper-admin/src/test/java/io/github/protocol/bookkeeper/admin/jdk/BookiesImplTest.java b/bookkeeper-admin/src/test/java/io/github/protocol/bookkeeper/admin/jdk/BookiesImplTest.java
index 0403f5a..d9a7fe5 100644
--- a/bookkeeper-admin/src/test/java/io/github/protocol/bookkeeper/admin/jdk/BookiesImplTest.java
+++ b/bookkeeper-admin/src/test/java/io/github/protocol/bookkeeper/admin/jdk/BookiesImplTest.java
@@ -1,66 +1,56 @@
package io.github.protocol.bookkeeper.admin.jdk;
-import io.github.embedded.bookkeeper.core.EmbeddedBookkeeperServer;
-import io.github.protocol.bookkeeper.admin.api.Configuration;
-import org.junit.jupiter.api.AfterAll;
import org.junit.jupiter.api.Assertions;
-import org.junit.jupiter.api.BeforeAll;
-import org.junit.jupiter.api.Test;
+import org.junit.jupiter.params.ParameterizedTest;
+import org.junit.jupiter.params.provider.MethodSource;
import java.util.List;
import java.util.Map;
-public class BookiesImplTest {
+public class BookiesImplTest extends BaseTest {
- private static final EmbeddedBookkeeperServer SERVER = new EmbeddedBookkeeperServer();
-
- private static Bookies bookiesImpl = null;
-
- @BeforeAll
- public static void setup() throws Exception {
- SERVER.start();
- Configuration conf = new Configuration();
- conf.host("localhost");
- conf.port(SERVER.getBkWebPort());
- bookiesImpl = new BookiesImpl(new InnerHttpClient(conf));
- }
-
- @Test
- public void testBookiesList() throws BookkeeperAdminException {
+ @ParameterizedTest
+ @MethodSource("provideBookiesImpl")
+ public void testBookiesList(Bookies bookiesImpl) throws BookkeeperAdminException {
Map map = bookiesImpl.bookieList();
Assertions.assertEquals(1, map.size());
String key = "";
for (Map.Entry entry : map.entrySet()) {
key = entry.getKey();
}
- Assertions.assertTrue(key.contains(String.valueOf(SERVER.getBkPort())));
+ Assertions.assertTrue(key.contains(String.valueOf(server.getBkPort())));
}
- @Test
- public void testListBookieInfo() throws BookkeeperAdminException {
+ @ParameterizedTest
+ @MethodSource("provideBookiesImpl")
+ public void testListBookieInfo(Bookies bookiesImpl) throws BookkeeperAdminException {
Map info = bookiesImpl.listBookieInfo();
Assertions.assertEquals(2, info.size());
}
- @Test
- public void testLastLogMark() throws BookkeeperAdminException {
+ @ParameterizedTest
+ @MethodSource("provideBookiesImpl")
+ public void testLastLogMark(Bookies bookiesImpl) throws BookkeeperAdminException {
LastLogMark lastLogMark = bookiesImpl.lastLogMark();
Assertions.assertEquals(1, lastLogMark.getLogFileIdTxnMap().size());
}
- @Test
- public void testListDiskFile() throws BookkeeperAdminException {
+ @ParameterizedTest
+ @MethodSource("provideBookiesImpl")
+ public void testListDiskFile(Bookies bookiesImpl) throws BookkeeperAdminException {
bookiesImpl.listDiskFile();
}
- @Test
- public void testIsInForceGc() throws BookkeeperAdminException {
+ @ParameterizedTest
+ @MethodSource("provideBookiesImpl")
+ public void testIsInForceGc(Bookies bookiesImpl) throws BookkeeperAdminException {
boolean inForceGc = bookiesImpl.isInForceGc();
Assertions.assertFalse(inForceGc);
}
- @Test
- public void testGcStatus() throws BookkeeperAdminException {
+ @ParameterizedTest
+ @MethodSource("provideBookiesImpl")
+ public void testGcStatus(Bookies bookiesImpl) throws BookkeeperAdminException {
List statuses = bookiesImpl.gcStatusList();
Assertions.assertEquals(1, statuses.size());
GarbageCollectionStatus garbageCollectionStatus = statuses.get(0);
@@ -68,36 +58,35 @@ public void testGcStatus() throws BookkeeperAdminException {
}
- @Test
- public void testBookiesStatus() throws BookkeeperAdminException {
+ @ParameterizedTest
+ @MethodSource("provideBookiesImpl")
+ public void testBookiesStatus(Bookies bookiesImpl) throws BookkeeperAdminException {
BookieStatus status = bookiesImpl.status();
Assertions.assertTrue(status.isRunning());
Assertions.assertFalse(status.isReadOnly());
}
- @Test
- public void testIsReadOnly() throws BookkeeperAdminException {
+ @ParameterizedTest
+ @MethodSource("provideBookiesImpl")
+ public void testIsReadOnly(Bookies bookiesImpl) throws BookkeeperAdminException {
boolean readOnly = bookiesImpl.isReadOnly();
Assertions.assertFalse(readOnly);
}
- @Test
- public void testBookiesIsReady() throws BookkeeperAdminException {
+ @ParameterizedTest
+ @MethodSource("provideBookiesImpl")
+ public void testBookiesIsReady(Bookies bookiesImpl) throws BookkeeperAdminException {
boolean ready = bookiesImpl.isReady();
Assertions.assertTrue(ready);
}
- @Test
- public void testBookiesInfo() throws BookkeeperAdminException {
+ @ParameterizedTest
+ @MethodSource("provideBookiesImpl")
+ public void testBookiesInfo(Bookies bookiesImpl) throws BookkeeperAdminException {
BookieInfo bookieInfo = bookiesImpl.bookieInfo();
Assertions.assertTrue(bookieInfo.getFreeSpace() > 0);
Assertions.assertTrue(bookieInfo.getTotalSpace() > 0);
}
- @AfterAll
- public static void teardown() throws Exception {
- SERVER.close();
- }
-
}
diff --git a/bookkeeper-admin/src/test/java/io/github/protocol/bookkeeper/admin/jdk/ConfigsImplTest.java b/bookkeeper-admin/src/test/java/io/github/protocol/bookkeeper/admin/jdk/ConfigsImplTest.java
index 9789c72..7f39f35 100644
--- a/bookkeeper-admin/src/test/java/io/github/protocol/bookkeeper/admin/jdk/ConfigsImplTest.java
+++ b/bookkeeper-admin/src/test/java/io/github/protocol/bookkeeper/admin/jdk/ConfigsImplTest.java
@@ -1,33 +1,16 @@
package io.github.protocol.bookkeeper.admin.jdk;
-import io.github.embedded.bookkeeper.core.EmbeddedBookkeeperServer;
-import io.github.protocol.bookkeeper.admin.api.Configuration;
-import org.junit.jupiter.api.AfterAll;
import org.junit.jupiter.api.Assertions;
-import org.junit.jupiter.api.BeforeAll;
-import org.junit.jupiter.api.Test;
+import org.junit.jupiter.params.ParameterizedTest;
+import org.junit.jupiter.params.provider.MethodSource;
import java.util.HashMap;
import java.util.Map;
-public class ConfigsImplTest {
-
-
- private static final EmbeddedBookkeeperServer SERVER = new EmbeddedBookkeeperServer();
-
- private static ConfigsImpl configsImpl = null;
-
- @BeforeAll
- public static void setup() throws Exception {
- SERVER.start();
- Configuration conf = new Configuration();
- conf.host("localhost");
- conf.port(SERVER.getBkWebPort());
- configsImpl = new ConfigsImpl(new InnerHttpClient(conf));
- }
-
- @Test
- public void testPutConfig() throws BookkeeperAdminException {
+public class ConfigsImplTest extends BaseTest {
+ @ParameterizedTest
+ @MethodSource("provideConfigsImpl")
+ public void testPutConfig(Configs configsImpl) throws BookkeeperAdminException {
HashMap config = new HashMap<>();
config.put("allowEphemeralPorts", "false");
configsImpl.putConfig(config);
@@ -35,14 +18,10 @@ public void testPutConfig() throws BookkeeperAdminException {
Assertions.assertEquals("false", resp.get("allowEphemeralPorts"));
}
- @Test
- public void testGetConfig() throws BookkeeperAdminException {
+ @ParameterizedTest
+ @MethodSource("provideConfigsImpl")
+ public void testGetConfig(Configs configsImpl) throws BookkeeperAdminException {
Map config = configsImpl.getConfig();
Assertions.assertTrue(config.size() != 0);
}
-
- @AfterAll
- public static void teardown() throws Exception {
- SERVER.close();
- }
}
diff --git a/bookkeeper-admin/src/test/java/io/github/protocol/bookkeeper/admin/jdk/HeartbeatTest.java b/bookkeeper-admin/src/test/java/io/github/protocol/bookkeeper/admin/jdk/HeartbeatTest.java
index 28425fe..f2424ea 100644
--- a/bookkeeper-admin/src/test/java/io/github/protocol/bookkeeper/admin/jdk/HeartbeatTest.java
+++ b/bookkeeper-admin/src/test/java/io/github/protocol/bookkeeper/admin/jdk/HeartbeatTest.java
@@ -1,26 +1,11 @@
package io.github.protocol.bookkeeper.admin.jdk;
-import io.github.embedded.bookkeeper.core.EmbeddedBookkeeperServer;
-import org.junit.jupiter.api.AfterAll;
-import org.junit.jupiter.api.BeforeAll;
import org.junit.jupiter.api.Test;
-public class HeartbeatTest {
- private static final EmbeddedBookkeeperServer SERVER = new EmbeddedBookkeeperServer();
-
- @BeforeAll
- public static void setup() throws Exception {
- SERVER.start();
- }
-
- @AfterAll
- public static void teardown() throws Exception {
- SERVER.close();
- }
-
+public class HeartbeatTest extends BaseTest {
@Test
public void testHeartbeat() throws BookkeeperAdminException {
- BookkeeperAdmin bookkeeperAdmin = BookkeeperAdmin.builder().port(SERVER.getBkWebPort()).build();
+ BookkeeperAdmin bookkeeperAdmin = BookkeeperAdmin.builder().port(server.getBkWebPort()).build();
bookkeeperAdmin.heartbeat().heartbeat();
}
}
diff --git a/pom.xml b/pom.xml
index f93829f..df592fe 100644
--- a/pom.xml
+++ b/pom.xml
@@ -47,6 +47,13 @@
1.7.0
4.8.6.2
2.43.0
+ 3.0.0
+ 5.3.1
+ 12.0.13
+ 4.12.0
+ 4.5.10
+ 4.17.1
+ 4.1.112.Final
@@ -58,6 +65,30 @@
pom
import
+
+ io.vertx
+ vertx-core
+ ${vertx.version}
+ test
+
+
+ io.vertx
+ vertx-web
+ ${vertx.version}
+ test
+
+
+ org.apache.bookkeeper.http
+ vertx-http-server
+ ${vertx-http-server.version}
+ test
+
+
+ io.netty
+ netty-transport-native-epoll
+ linux-x86_64
+ ${netty.version}
+
@@ -83,15 +114,15 @@
test
- org.apache.logging.log4j
- log4j-slf4j-impl
- ${log4j.version}
+ org.junit.jupiter
+ junit-jupiter-params
+ ${junit.version}
test
- io.github.embedded-middleware
- embedded-bookkeeper-core
- ${embedded-bookkeeper.version}
+ org.apache.logging.log4j
+ log4j-slf4j-impl
+ ${log4j.version}
test