You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@pulsar.apache.org by ti...@apache.org on 2023/05/24 10:20:54 UTC
[pulsar] branch master updated: [improve][bk] Add integration test with bookie http server enabled (#20149)
This is an automated email from the ASF dual-hosted git repository.
tison pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/pulsar.git
The following commit(s) were added to refs/heads/master by this push:
new 3f2978d3222 [improve][bk] Add integration test with bookie http server enabled (#20149)
3f2978d3222 is described below
commit 3f2978d32223d61f04db1de330f5b167a63925ae
Author: Massimiliano Mirelli <ma...@gmail.com>
AuthorDate: Wed May 24 12:20:42 2023 +0200
[improve][bk] Add integration test with bookie http server enabled (#20149)
Signed-off-by: tison <wa...@gmail.com>
Co-authored-by: tison <wa...@gmail.com>
---
...BookkeeperInstallWithHttpServerEnabledTest.java | 84 ++++++++++++++++++++++
.../integration/topologies/PulsarCluster.java | 36 ++++++----
.../integration/topologies/PulsarClusterSpec.java | 10 +++
.../topologies/PulsarClusterTestBase.java | 2 +
4 files changed, 120 insertions(+), 12 deletions(-)
diff --git a/tests/integration/src/test/java/org/apache/pulsar/tests/integration/bookkeeper/BookkeeperInstallWithHttpServerEnabledTest.java b/tests/integration/src/test/java/org/apache/pulsar/tests/integration/bookkeeper/BookkeeperInstallWithHttpServerEnabledTest.java
new file mode 100644
index 00000000000..03d7f974ab3
--- /dev/null
+++ b/tests/integration/src/test/java/org/apache/pulsar/tests/integration/bookkeeper/BookkeeperInstallWithHttpServerEnabledTest.java
@@ -0,0 +1,84 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.pulsar.tests.integration.bookkeeper;
+
+import lombok.extern.slf4j.Slf4j;
+import org.apache.pulsar.tests.integration.docker.ContainerExecResult;
+import org.apache.pulsar.tests.integration.topologies.PulsarCluster;
+import org.apache.pulsar.tests.integration.topologies.PulsarClusterSpec;
+import org.apache.pulsar.tests.integration.topologies.PulsarClusterTestBase;
+import org.testng.annotations.AfterClass;
+import org.testng.annotations.BeforeClass;
+import org.testng.annotations.Test;
+
+import java.util.stream.Stream;
+
+import static java.util.stream.Collectors.joining;
+import static org.testng.Assert.assertEquals;
+
+/**
+ * Test bookkeeper setup with http server enabled.
+ */
+@Slf4j
+public class BookkeeperInstallWithHttpServerEnabledTest extends PulsarClusterTestBase {
+
+ @BeforeClass(alwaysRun = true)
+ @Override
+ public final void setupCluster() throws Exception {
+ incrementSetupNumber();
+
+ final String clusterName = Stream.of(this.getClass().getSimpleName(), randomName(5))
+ .filter(s -> !s.isEmpty())
+ .collect(joining("-"));
+ bookkeeperEnvs.put("httpServerEnabled", "true");
+ bookieAdditionalPorts.add(8000);
+ PulsarClusterSpec spec = PulsarClusterSpec.builder()
+ .numBookies(2)
+ .numBrokers(1)
+ .bookkeeperEnvs(bookkeeperEnvs)
+ .bookieAdditionalPorts(bookieAdditionalPorts)
+ .clusterName(clusterName)
+ .build();
+
+ log.info("Setting up cluster {} with {} bookies, {} brokers",
+ spec.clusterName(), spec.numBookies(), spec.numBrokers());
+
+ pulsarCluster = PulsarCluster.forSpec(spec);
+ pulsarCluster.start();
+
+ log.info("Cluster {} is setup", spec.clusterName());
+ }
+
+ @AfterClass(alwaysRun = true)
+ @Override
+ public final void tearDownCluster() throws Exception {
+ super.tearDownCluster();
+ }
+
+ @Test
+ public void testBookieHttpServerIsRunning() throws Exception {
+ ContainerExecResult result = pulsarCluster.getAnyBookie().execCmd(
+ PulsarCluster.CURL,
+ "-X",
+ "GET",
+ "http://localhost:8000/heartbeat");
+ assertEquals(result.getExitCode(), 0);
+ assertEquals(result.getStdout(), "OK\n");
+ }
+}
diff --git a/tests/integration/src/test/java/org/apache/pulsar/tests/integration/topologies/PulsarCluster.java b/tests/integration/src/test/java/org/apache/pulsar/tests/integration/topologies/PulsarCluster.java
index fcc0feec6d4..bd11b7d3873 100644
--- a/tests/integration/src/test/java/org/apache/pulsar/tests/integration/topologies/PulsarCluster.java
+++ b/tests/integration/src/test/java/org/apache/pulsar/tests/integration/topologies/PulsarCluster.java
@@ -157,18 +157,26 @@ public class PulsarCluster {
// create bookies
bookieContainers.putAll(
- runNumContainers("bookie", spec.numBookies(), (name) -> new BKContainer(clusterName, name)
- .withNetwork(network)
- .withNetworkAliases(appendClusterName(name))
- .withEnv("zkServers", appendClusterName(ZKContainer.NAME))
- .withEnv("useHostNameAsBookieID", "true")
- // Disable fsyncs for tests since they're slow within the containers
- .withEnv("journalSyncData", "false")
- .withEnv("journalMaxGroupWaitMSec", "0")
- .withEnv("clusterName", clusterName)
- .withEnv("diskUsageThreshold", "0.99")
- .withEnv("nettyMaxFrameSizeBytes", "" + spec.maxMessageSize)
- )
+ runNumContainers("bookie", spec.numBookies(), (name) -> {
+ BKContainer bookieContainer = new BKContainer(clusterName, name)
+ .withNetwork(network)
+ .withNetworkAliases(appendClusterName(name))
+ .withEnv("zkServers", appendClusterName(ZKContainer.NAME))
+ .withEnv("useHostNameAsBookieID", "true")
+ // Disable fsyncs for tests since they're slow within the containers
+ .withEnv("journalSyncData", "false")
+ .withEnv("journalMaxGroupWaitMSec", "0")
+ .withEnv("clusterName", clusterName)
+ .withEnv("diskUsageThreshold", "0.99")
+ .withEnv("nettyMaxFrameSizeBytes", String.valueOf(spec.maxMessageSize));
+ if (spec.bookkeeperEnvs != null) {
+ bookieContainer.withEnv(spec.bookkeeperEnvs);
+ }
+ if (spec.bookieAdditionalPorts != null) {
+ spec.bookieAdditionalPorts.forEach(bookieContainer::addExposedPort);
+ }
+ return bookieContainer;
+ })
);
// create brokers
@@ -740,4 +748,8 @@ public class PulsarCluster {
private String appendClusterName(String name) {
return sharedCsContainer ? clusterName + "-" + name : name;
}
+
+ public BKContainer getAnyBookie() {
+ return getAnyContainer(bookieContainers, "bookie");
+ }
}
diff --git a/tests/integration/src/test/java/org/apache/pulsar/tests/integration/topologies/PulsarClusterSpec.java b/tests/integration/src/test/java/org/apache/pulsar/tests/integration/topologies/PulsarClusterSpec.java
index 385af99a664..fa28d20e6b3 100644
--- a/tests/integration/src/test/java/org/apache/pulsar/tests/integration/topologies/PulsarClusterSpec.java
+++ b/tests/integration/src/test/java/org/apache/pulsar/tests/integration/topologies/PulsarClusterSpec.java
@@ -150,6 +150,11 @@ public class PulsarClusterSpec {
*/
Map<String, String> brokerEnvs;
+ /**
+ * Specify envs for bookkeeper.
+ */
+ Map<String, String> bookkeeperEnvs;
+
/**
* Specify mount files.
*/
@@ -167,4 +172,9 @@ public class PulsarClusterSpec {
* Additional ports to expose on broker containers.
*/
List<Integer> brokerAdditionalPorts;
+
+ /**
+ * Additional ports to expose on bookie containers.
+ */
+ List<Integer> bookieAdditionalPorts;
}
diff --git a/tests/integration/src/test/java/org/apache/pulsar/tests/integration/topologies/PulsarClusterTestBase.java b/tests/integration/src/test/java/org/apache/pulsar/tests/integration/topologies/PulsarClusterTestBase.java
index d7a1906ec58..ae9e44fa982 100644
--- a/tests/integration/src/test/java/org/apache/pulsar/tests/integration/topologies/PulsarClusterTestBase.java
+++ b/tests/integration/src/test/java/org/apache/pulsar/tests/integration/topologies/PulsarClusterTestBase.java
@@ -34,8 +34,10 @@ import static java.util.stream.Collectors.joining;
@Slf4j
public abstract class PulsarClusterTestBase extends PulsarTestBase {
protected final Map<String, String> brokerEnvs = new HashMap<>();
+ protected final Map<String, String> bookkeeperEnvs = new HashMap<>();
protected final Map<String, String> proxyEnvs = new HashMap<>();
protected final List<Integer> brokerAdditionalPorts = new LinkedList<>();
+ protected final List<Integer> bookieAdditionalPorts = new LinkedList<>();
@Override
protected final void setup() throws Exception {