diff --git a/modules/azure/src/main/java/org/testcontainers/azure/ServiceBusEmulatorContainer.java b/modules/azure/src/main/java/org/testcontainers/azure/ServiceBusEmulatorContainer.java index fd055a0d39b..4557b6acb6a 100644 --- a/modules/azure/src/main/java/org/testcontainers/azure/ServiceBusEmulatorContainer.java +++ b/modules/azure/src/main/java/org/testcontainers/azure/ServiceBusEmulatorContainer.java @@ -1,9 +1,9 @@ package org.testcontainers.azure; import org.testcontainers.containers.GenericContainer; -import org.testcontainers.containers.MSSQLServerContainer; import org.testcontainers.containers.wait.strategy.Wait; import org.testcontainers.images.builder.Transferable; +import org.testcontainers.mssqlserver.MSSQLServerContainer; import org.testcontainers.utility.DockerImageName; import org.testcontainers.utility.LicenseAcceptance; @@ -25,7 +25,7 @@ public class ServiceBusEmulatorContainer extends GenericContainer msSqlServerContainer; + private MSSQLServerContainer msSqlServerContainer; /** * @param dockerImageName The specified docker image name to run @@ -51,7 +51,7 @@ public ServiceBusEmulatorContainer(final DockerImageName dockerImageName) { * @param msSqlServerContainer The MS SQL Server container used by Service Bus as a dependency * @return this */ - public ServiceBusEmulatorContainer withMsSqlServerContainer(final MSSQLServerContainer msSqlServerContainer) { + public ServiceBusEmulatorContainer withMsSqlServerContainer(final MSSQLServerContainer msSqlServerContainer) { dependsOn(msSqlServerContainer); this.msSqlServerContainer = msSqlServerContainer; return this; diff --git a/modules/azure/src/main/java/org/testcontainers/containers/CosmosDBEmulatorContainer.java b/modules/azure/src/main/java/org/testcontainers/containers/CosmosDBEmulatorContainer.java index a1cfdeaf124..8442e28514a 100644 --- a/modules/azure/src/main/java/org/testcontainers/containers/CosmosDBEmulatorContainer.java +++ b/modules/azure/src/main/java/org/testcontainers/containers/CosmosDBEmulatorContainer.java @@ -4,6 +4,7 @@ import org.testcontainers.utility.DockerImageName; import java.security.KeyStore; +import java.time.Duration; /** * Testcontainers implementation for CosmosDB Emulator. @@ -14,6 +15,8 @@ */ public class CosmosDBEmulatorContainer extends GenericContainer { + static final String CERTIFICATE_ENDPOINT = "/_explorer/emulator.pem"; + private static final DockerImageName DEFAULT_IMAGE_NAME = DockerImageName.parse( "mcr.microsoft.com/cosmosdb/linux/azure-cosmos-emulator" ); @@ -27,13 +30,16 @@ public CosmosDBEmulatorContainer(final DockerImageName dockerImageName) { super(dockerImageName); dockerImageName.assertCompatibleWith(DEFAULT_IMAGE_NAME); withExposedPorts(PORT); - waitingFor(Wait.forLogMessage(".*Started\\r\\n$", 1)); + // Wait.forLogMessage(".*Started\\r\\n$") is not sufficient with the current version of cosmos db emulator (vnext-EN20251022), + // see https://github.com/Azure/azure-cosmos-db-emulator-docker/issues/209 . + // On my machine it typically takes around 110s (!) before this endpoint becomes available. + waitingFor(Wait.forHttps(CERTIFICATE_ENDPOINT).allowInsecure().withStartupTimeout(Duration.ofSeconds(180))); } /** * @return new KeyStore built with PKCS12 */ - public KeyStore buildNewKeyStore() { + public KeyStore buildNewKeyStore() throws InterruptedException { return KeyStoreBuilder.buildByDownloadingCertificate(getEmulatorEndpoint(), getEmulatorKey()); } diff --git a/modules/azure/src/main/java/org/testcontainers/containers/KeyStoreBuilder.java b/modules/azure/src/main/java/org/testcontainers/containers/KeyStoreBuilder.java index f7b6af370ac..ded0be5a14f 100644 --- a/modules/azure/src/main/java/org/testcontainers/containers/KeyStoreBuilder.java +++ b/modules/azure/src/main/java/org/testcontainers/containers/KeyStoreBuilder.java @@ -65,7 +65,7 @@ private static OkHttpClient buildTrustAllClient(TrustManager[] trustManagers) th } private static Request buildRequest(String endpoint) { - return new Request.Builder().get().url(endpoint + "/_explorer/emulator.pem").build(); + return new Request.Builder().get().url(endpoint + CosmosDBEmulatorContainer.CERTIFICATE_ENDPOINT).build(); } private static KeyStore buildKeyStore(InputStream certificateStream, String keyStorePassword) throws Exception { diff --git a/modules/azure/src/test/java/org/testcontainers/azure/ServiceBusEmulatorContainerTest.java b/modules/azure/src/test/java/org/testcontainers/azure/ServiceBusEmulatorContainerTest.java index 6bf6ac80fae..83cd633c5a9 100644 --- a/modules/azure/src/test/java/org/testcontainers/azure/ServiceBusEmulatorContainerTest.java +++ b/modules/azure/src/test/java/org/testcontainers/azure/ServiceBusEmulatorContainerTest.java @@ -10,8 +10,8 @@ import com.github.dockerjava.api.model.Capability; import org.assertj.core.api.Assertions; import org.junit.jupiter.api.Test; -import org.testcontainers.containers.MSSQLServerContainer; import org.testcontainers.containers.Network; +import org.testcontainers.mssqlserver.MSSQLServerContainer; import org.testcontainers.utility.MountableFile; import java.util.List; @@ -31,7 +31,7 @@ void testWithClient() { Network network = Network.newNetwork(); // } // sqlContainer { - MSSQLServerContainer mssqlServerContainer = new MSSQLServerContainer<>( + MSSQLServerContainer mssqlServerContainer = new MSSQLServerContainer( "mcr.microsoft.com/mssql/server:2022-CU14-ubuntu-22.04" ) .acceptLicense()