Skip to content

Commit

Permalink
Merge pull request quarkusio#44265 from jgardo/bugfix/pulsar-dev-serv…
Browse files Browse the repository at this point in the history
…ices-in-it

Fix Pulsar DevService network for @QuarkusIntegrationTest for docker-image-building
  • Loading branch information
ozangunalp authored Nov 12, 2024
2 parents 6775bf1 + 321efed commit bbe15e8
Show file tree
Hide file tree
Showing 2 changed files with 42 additions and 4 deletions.
Original file line number Diff line number Diff line change
@@ -1,5 +1,7 @@
package io.quarkus.smallrye.reactivemessaging.pulsar.deployment;

import static io.quarkus.smallrye.reactivemessaging.pulsar.deployment.PulsarDevServicesProcessor.DEV_SERVICE_PULSAR;

import java.nio.charset.StandardCharsets;
import java.time.Duration;
import java.util.Collections;
Expand All @@ -11,6 +13,8 @@

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

import io.quarkus.devservices.common.ConfigureUtil;

public class PulsarContainer extends GenericContainer<PulsarContainer> {

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

private boolean useSharedNetwork;
private String hostName;

public PulsarContainer() {
this(PULSAR_IMAGE);
}
Expand Down Expand Up @@ -51,6 +58,13 @@ protected void containerIsStarting(InspectContainerResponse containerInfo, boole
STARTER_SCRIPT);
}

public PulsarContainer withSharedNetwork() {
useSharedNetwork = true;
hostName = ConfigureUtil.configureSharedNetwork(this, DEV_SERVICE_PULSAR);

return self();
}

public PulsarContainer withPort(final int fixedPort) {
if (fixedPort <= 0) {
throw new IllegalArgumentException("The fixed port must be greater than 0");
Expand All @@ -60,10 +74,24 @@ public PulsarContainer withPort(final int fixedPort) {
}

public String getPulsarBrokerUrl() {
return String.format("pulsar://%s:%s", this.getHost(), this.getMappedPort(BROKER_PORT));
if (useSharedNetwork) {
return getServiceUrl(this.hostName, PulsarContainer.BROKER_PORT);
}
return getServiceUrl(this.getHost(), this.getMappedPort(BROKER_PORT));
}

private String getServiceUrl(String host, int port) {
return String.format("pulsar://%s:%d", host, port);
}

public String getHttpServiceUrl() {
return String.format("http://%s:%s", this.getHost(), this.getMappedPort(BROKER_HTTP_PORT));
if (useSharedNetwork) {
return getHttpServiceUrl(this.hostName, PulsarContainer.BROKER_HTTP_PORT);
}
return getHttpServiceUrl(this.getHost(), this.getMappedPort(BROKER_HTTP_PORT));
}

private String getHttpServiceUrl(String host, int port) {
return String.format("http://%s:%d", host, port);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@
import java.io.Closeable;
import java.time.Duration;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Objects;
import java.util.Optional;
Expand All @@ -21,6 +22,7 @@
import io.quarkus.deployment.builditem.CuratedApplicationShutdownBuildItem;
import io.quarkus.deployment.builditem.DevServicesResultBuildItem;
import io.quarkus.deployment.builditem.DevServicesResultBuildItem.RunningDevService;
import io.quarkus.deployment.builditem.DevServicesSharedNetworkBuildItem;
import io.quarkus.deployment.builditem.DockerStatusBuildItem;
import io.quarkus.deployment.builditem.LaunchModeBuildItem;
import io.quarkus.deployment.console.ConsoleInstalledBuildItem;
Expand Down Expand Up @@ -50,6 +52,7 @@ public class PulsarDevServicesProcessor {
PulsarContainer.BROKER_PORT);
private static final String PULSAR_CLIENT_SERVICE_URL = "pulsar.client.serviceUrl";
private static final String PULSAR_ADMIN_SERVICE_URL = "pulsar.admin.serviceUrl";
static final String DEV_SERVICE_PULSAR = "pulsar";
static volatile RunningDevService devService;
static volatile PulsarDevServiceCfg cfg;
static volatile boolean first = true;
Expand All @@ -59,12 +62,15 @@ public DevServicesResultBuildItem startPulsarDevService(
DockerStatusBuildItem dockerStatusBuildItem,
LaunchModeBuildItem launchMode,
PulsarBuildTimeConfig pulsarClientBuildTimeConfig,
List<DevServicesSharedNetworkBuildItem> devServicesSharedNetworkBuildItem,
Optional<ConsoleInstalledBuildItem> consoleInstalledBuildItem,
CuratedApplicationShutdownBuildItem closeBuildItem,
LoggingSetupBuildItem loggingSetupBuildItem,
GlobalDevServicesConfig devServicesConfig) {

PulsarDevServiceCfg configuration = getConfiguration(pulsarClientBuildTimeConfig);
boolean useSharedNetwork = DevServicesSharedNetworkBuildItem.isSharedNetworkRequired(devServicesConfig,
devServicesSharedNetworkBuildItem);

if (devService != null) {
boolean shouldShutdownTheBroker = !configuration.equals(cfg);
Expand All @@ -80,7 +86,7 @@ public DevServicesResultBuildItem startPulsarDevService(
loggingSetupBuildItem);
try {
RunningDevService newDevService = startPulsarContainer(dockerStatusBuildItem, configuration, launchMode,
devServicesConfig.timeout);
useSharedNetwork, devServicesConfig.timeout);
if (newDevService != null) {
devService = newDevService;
Map<String, String> config = devService.getConfig();
Expand Down Expand Up @@ -138,7 +144,8 @@ private void shutdownBroker() {
}

private RunningDevService startPulsarContainer(DockerStatusBuildItem dockerStatusBuildItem, PulsarDevServiceCfg config,
LaunchModeBuildItem launchMode, Optional<Duration> timeout) {
LaunchModeBuildItem launchMode,
boolean useSharedNetwork, Optional<Duration> timeout) {
if (!config.devServicesEnabled) {
// explicitly disabled
log.debug("Not starting Dev Services for Pulsar, as it has been disabled in the config.");
Expand Down Expand Up @@ -175,6 +182,9 @@ private RunningDevService startPulsarContainer(DockerStatusBuildItem dockerStatu
container.withPort(config.fixedExposedPort);
}
timeout.ifPresent(container::withStartupTimeout);
if (useSharedNetwork) {
container.withSharedNetwork();
}
container.start();

return getRunningService(container.getContainerId(), container::close, container.getPulsarBrokerUrl(),
Expand Down

0 comments on commit bbe15e8

Please sign in to comment.