Skip to content

Commit bbe15e8

Browse files
authored
Merge pull request #44265 from jgardo/bugfix/pulsar-dev-services-in-it
Fix Pulsar DevService network for @QuarkusIntegrationTest for docker-image-building
2 parents 6775bf1 + 321efed commit bbe15e8

File tree

2 files changed

+42
-4
lines changed

2 files changed

+42
-4
lines changed

extensions/smallrye-reactive-messaging-pulsar/deployment/src/main/java/io/quarkus/smallrye/reactivemessaging/pulsar/deployment/PulsarContainer.java

Lines changed: 30 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
11
package io.quarkus.smallrye.reactivemessaging.pulsar.deployment;
22

3+
import static io.quarkus.smallrye.reactivemessaging.pulsar.deployment.PulsarDevServicesProcessor.DEV_SERVICE_PULSAR;
4+
35
import java.nio.charset.StandardCharsets;
46
import java.time.Duration;
57
import java.util.Collections;
@@ -11,6 +13,8 @@
1113

1214
import com.github.dockerjava.api.command.InspectContainerResponse;
1315

16+
import io.quarkus.devservices.common.ConfigureUtil;
17+
1418
public class PulsarContainer extends GenericContainer<PulsarContainer> {
1519

1620
public static final DockerImageName PULSAR_IMAGE = DockerImageName.parse("apachepulsar/pulsar:3.2.4");
@@ -20,6 +24,9 @@ public class PulsarContainer extends GenericContainer<PulsarContainer> {
2024
public static final int BROKER_PORT = 6650;
2125
public static final int BROKER_HTTP_PORT = 8080;
2226

27+
private boolean useSharedNetwork;
28+
private String hostName;
29+
2330
public PulsarContainer() {
2431
this(PULSAR_IMAGE);
2532
}
@@ -51,6 +58,13 @@ protected void containerIsStarting(InspectContainerResponse containerInfo, boole
5158
STARTER_SCRIPT);
5259
}
5360

61+
public PulsarContainer withSharedNetwork() {
62+
useSharedNetwork = true;
63+
hostName = ConfigureUtil.configureSharedNetwork(this, DEV_SERVICE_PULSAR);
64+
65+
return self();
66+
}
67+
5468
public PulsarContainer withPort(final int fixedPort) {
5569
if (fixedPort <= 0) {
5670
throw new IllegalArgumentException("The fixed port must be greater than 0");
@@ -60,10 +74,24 @@ public PulsarContainer withPort(final int fixedPort) {
6074
}
6175

6276
public String getPulsarBrokerUrl() {
63-
return String.format("pulsar://%s:%s", this.getHost(), this.getMappedPort(BROKER_PORT));
77+
if (useSharedNetwork) {
78+
return getServiceUrl(this.hostName, PulsarContainer.BROKER_PORT);
79+
}
80+
return getServiceUrl(this.getHost(), this.getMappedPort(BROKER_PORT));
81+
}
82+
83+
private String getServiceUrl(String host, int port) {
84+
return String.format("pulsar://%s:%d", host, port);
6485
}
6586

6687
public String getHttpServiceUrl() {
67-
return String.format("http://%s:%s", this.getHost(), this.getMappedPort(BROKER_HTTP_PORT));
88+
if (useSharedNetwork) {
89+
return getHttpServiceUrl(this.hostName, PulsarContainer.BROKER_HTTP_PORT);
90+
}
91+
return getHttpServiceUrl(this.getHost(), this.getMappedPort(BROKER_HTTP_PORT));
92+
}
93+
94+
private String getHttpServiceUrl(String host, int port) {
95+
return String.format("http://%s:%d", host, port);
6896
}
6997
}

extensions/smallrye-reactive-messaging-pulsar/deployment/src/main/java/io/quarkus/smallrye/reactivemessaging/pulsar/deployment/PulsarDevServicesProcessor.java

Lines changed: 12 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
import java.io.Closeable;
44
import java.time.Duration;
55
import java.util.HashMap;
6+
import java.util.List;
67
import java.util.Map;
78
import java.util.Objects;
89
import java.util.Optional;
@@ -21,6 +22,7 @@
2122
import io.quarkus.deployment.builditem.CuratedApplicationShutdownBuildItem;
2223
import io.quarkus.deployment.builditem.DevServicesResultBuildItem;
2324
import io.quarkus.deployment.builditem.DevServicesResultBuildItem.RunningDevService;
25+
import io.quarkus.deployment.builditem.DevServicesSharedNetworkBuildItem;
2426
import io.quarkus.deployment.builditem.DockerStatusBuildItem;
2527
import io.quarkus.deployment.builditem.LaunchModeBuildItem;
2628
import io.quarkus.deployment.console.ConsoleInstalledBuildItem;
@@ -50,6 +52,7 @@ public class PulsarDevServicesProcessor {
5052
PulsarContainer.BROKER_PORT);
5153
private static final String PULSAR_CLIENT_SERVICE_URL = "pulsar.client.serviceUrl";
5254
private static final String PULSAR_ADMIN_SERVICE_URL = "pulsar.admin.serviceUrl";
55+
static final String DEV_SERVICE_PULSAR = "pulsar";
5356
static volatile RunningDevService devService;
5457
static volatile PulsarDevServiceCfg cfg;
5558
static volatile boolean first = true;
@@ -59,12 +62,15 @@ public DevServicesResultBuildItem startPulsarDevService(
5962
DockerStatusBuildItem dockerStatusBuildItem,
6063
LaunchModeBuildItem launchMode,
6164
PulsarBuildTimeConfig pulsarClientBuildTimeConfig,
65+
List<DevServicesSharedNetworkBuildItem> devServicesSharedNetworkBuildItem,
6266
Optional<ConsoleInstalledBuildItem> consoleInstalledBuildItem,
6367
CuratedApplicationShutdownBuildItem closeBuildItem,
6468
LoggingSetupBuildItem loggingSetupBuildItem,
6569
GlobalDevServicesConfig devServicesConfig) {
6670

6771
PulsarDevServiceCfg configuration = getConfiguration(pulsarClientBuildTimeConfig);
72+
boolean useSharedNetwork = DevServicesSharedNetworkBuildItem.isSharedNetworkRequired(devServicesConfig,
73+
devServicesSharedNetworkBuildItem);
6874

6975
if (devService != null) {
7076
boolean shouldShutdownTheBroker = !configuration.equals(cfg);
@@ -80,7 +86,7 @@ public DevServicesResultBuildItem startPulsarDevService(
8086
loggingSetupBuildItem);
8187
try {
8288
RunningDevService newDevService = startPulsarContainer(dockerStatusBuildItem, configuration, launchMode,
83-
devServicesConfig.timeout);
89+
useSharedNetwork, devServicesConfig.timeout);
8490
if (newDevService != null) {
8591
devService = newDevService;
8692
Map<String, String> config = devService.getConfig();
@@ -138,7 +144,8 @@ private void shutdownBroker() {
138144
}
139145

140146
private RunningDevService startPulsarContainer(DockerStatusBuildItem dockerStatusBuildItem, PulsarDevServiceCfg config,
141-
LaunchModeBuildItem launchMode, Optional<Duration> timeout) {
147+
LaunchModeBuildItem launchMode,
148+
boolean useSharedNetwork, Optional<Duration> timeout) {
142149
if (!config.devServicesEnabled) {
143150
// explicitly disabled
144151
log.debug("Not starting Dev Services for Pulsar, as it has been disabled in the config.");
@@ -175,6 +182,9 @@ private RunningDevService startPulsarContainer(DockerStatusBuildItem dockerStatu
175182
container.withPort(config.fixedExposedPort);
176183
}
177184
timeout.ifPresent(container::withStartupTimeout);
185+
if (useSharedNetwork) {
186+
container.withSharedNetwork();
187+
}
178188
container.start();
179189

180190
return getRunningService(container.getContainerId(), container::close, container.getPulsarBrokerUrl(),

0 commit comments

Comments
 (0)