Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
@@ -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;

Expand All @@ -25,7 +25,7 @@ public class ServiceBusEmulatorContainer extends GenericContainer<ServiceBusEmul
"mcr.microsoft.com/azure-messaging/servicebus-emulator"
);

private MSSQLServerContainer<?> msSqlServerContainer;
private MSSQLServerContainer msSqlServerContainer;

/**
* @param dockerImageName The specified docker image name to run
Expand All @@ -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;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@
import org.testcontainers.utility.DockerImageName;

import java.security.KeyStore;
import java.time.Duration;

/**
* Testcontainers implementation for CosmosDB Emulator.
Expand All @@ -14,6 +15,8 @@
*/
public class CosmosDBEmulatorContainer extends GenericContainer<CosmosDBEmulatorContainer> {

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"
);
Expand All @@ -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());
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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 {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand All @@ -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()
Expand Down