Skip to content

Commit 8d8d658

Browse files
authored
Merge pull request quarkiverse#414 from albers/fix-container-tests
Fix QuarkusIntegrationTests for containers
2 parents a2cb269 + 40f7f9d commit 8d8d658

File tree

1 file changed

+29
-9
lines changed

1 file changed

+29
-9
lines changed

services/azure-servicebus/deployment/src/main/java/io/quarkiverse/azure/servicebus/deployment/ServiceBusDevServicesProcessor.java

Lines changed: 29 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@
1111
import java.util.List;
1212
import java.util.Map;
1313

14+
import org.jboss.logging.Logger;
1415
import org.testcontainers.azure.ServiceBusEmulatorContainer;
1516
import org.testcontainers.containers.MSSQLServerContainer;
1617
import org.testcontainers.containers.Network;
@@ -22,12 +23,15 @@
2223
import io.quarkus.deployment.annotations.BuildStep;
2324
import io.quarkus.deployment.builditem.DevServicesResultBuildItem;
2425
import io.quarkus.deployment.builditem.DevServicesResultBuildItem.RunningDevService;
26+
import io.quarkus.deployment.builditem.DevServicesSharedNetworkBuildItem;
2527
import io.quarkus.deployment.dev.devservices.DevServicesConfig;
2628
import io.quarkus.runtime.configuration.ConfigUtils;
2729
import io.quarkus.runtime.configuration.ConfigurationException;
2830

2931
public class ServiceBusDevServicesProcessor {
3032

33+
private static final Logger log = Logger.getLogger(ServiceBusDevServicesProcessor.class);
34+
private static final int DEFAULT_EMULATOR_PORT = 5672;
3135
private static final String EMULATOR_CONFIG_FILE = "servicebus-config.json";
3236
public static final String SERVICEBUS_EULA_URL = "https://github.com/Azure/azure-service-bus-emulator-installer/blob/main/EMULATOR_EULA.txt";
3337
public static final String MSSQL_SERVER_EULA_URL = "https://hub.docker.com/r/microsoft/mssql-server";
@@ -36,13 +40,14 @@ public class ServiceBusDevServicesProcessor {
3640
@BuildStep(onlyIfNot = IsNormal.class, onlyIf = { DevServicesConfig.Enabled.class,
3741
ServiceBusDevServicesConfig.Enabled.class })
3842
public List<DevServicesResultBuildItem> startServiceBusEmulator(ServiceBusDevServicesConfig devServicesConfig,
43+
List<DevServicesSharedNetworkBuildItem> devServicesSharedNetworkBuildItem,
3944
BuildProducer<ValidationErrorBuildItem> configErrors) {
4045
if (isServiceBusConnectionConfigured() || hasConfigurationProblems(devServicesConfig, configErrors)) {
4146
return null;
4247
}
4348

4449
if (devServices == null) {
45-
devServices = startContainers(devServicesConfig);
50+
devServices = startContainers(devServicesConfig, devServicesSharedNetworkBuildItem);
4651
}
4752

4853
return devServices.stream()
@@ -79,23 +84,38 @@ private static boolean isEmulatorConfigFileMissing() {
7984
return resourceUrl == null;
8085
}
8186

82-
private List<RunningDevService> startContainers(ServiceBusDevServicesConfig devServicesConfig) {
83-
Network internalNetwork = Network.newNetwork();
87+
private List<RunningDevService> startContainers(ServiceBusDevServicesConfig devServicesConfig,
88+
List<DevServicesSharedNetworkBuildItem> devServicesSharedNetworkBuildItem) {
89+
log.info("Dev Services for Azure Service Bus starting the Azure Service Bus emulator");
90+
91+
boolean useSharedNetwork = !devServicesSharedNetworkBuildItem.isEmpty();
8492

8593
MSSQLServerContainer<?> database = new MSSQLServerContainer<>(devServicesConfig.database().imageName())
8694
.acceptLicense()
87-
.withNetwork(internalNetwork);
88-
89-
ServiceBusEmulatorContainer emulator = new ServiceBusEmulatorContainer(devServicesConfig.emulator().imageName())
95+
.withNetwork(Network.SHARED);
96+
97+
ServiceBusEmulatorContainer emulator = new ServiceBusEmulatorContainer(
98+
devServicesConfig.emulator().imageName()) {
99+
@Override
100+
public String getHost() {
101+
return useSharedNetwork ? getNetworkAliases().get(0) : super.getHost();
102+
}
103+
104+
@Override
105+
public Integer getMappedPort(int originalPort) {
106+
return useSharedNetwork ? DEFAULT_EMULATOR_PORT : super.getMappedPort(originalPort);
107+
}
108+
}
90109
.acceptLicense()
91110
.withConfig(MountableFile.forClasspathResource(EMULATOR_CONFIG_FILE))
92111
.withMsSqlServerContainer(database)
93-
.withNetwork(internalNetwork);
112+
.withNetwork(Network.SHARED);
94113

95114
emulator.start();
115+
log.infof("Azure Service Bus emulator started - connection string is '%s'", emulator.getConnectionString());
96116

97-
Map<String, String> configOverrides = Map.of(CONFIG_KEY_CONNECTION_STRING,
98-
emulator.getConnectionString());
117+
Map<String, String> configOverrides = Map.of(
118+
CONFIG_KEY_CONNECTION_STRING, emulator.getConnectionString());
99119

100120
RunningDevService databaseDevService = new RunningDevService(FEATURE, database.getContainerId(), database::close,
101121
Collections.emptyMap());

0 commit comments

Comments
 (0)