Skip to content

Commit 0f88816

Browse files
Copilotrujche
andcommitted
Enable CosmosTestcontainersTest with @EnabledOnOs(OS.LINUX) and proper wait strategy
Co-authored-by: rujche <171773178+rujche@users.noreply.github.com>
1 parent 121e1b7 commit 0f88816

1 file changed

Lines changed: 14 additions & 10 deletions

File tree

testcontainers/spring-cloud-azure-testcontainers-for-cosmos-sample/src/test/java/CosmosTestcontainersTest.java

Lines changed: 14 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -6,8 +6,9 @@
66
import com.azure.spring.cloud.autoconfigure.implementation.context.AzureGlobalPropertiesAutoConfiguration;
77
import com.azure.spring.cloud.autoconfigure.implementation.cosmos.AzureCosmosAutoConfiguration;
88
import org.junit.jupiter.api.BeforeAll;
9-
import org.junit.jupiter.api.Disabled;
109
import org.junit.jupiter.api.Test;
10+
import org.junit.jupiter.api.condition.EnabledOnOs;
11+
import org.junit.jupiter.api.condition.OS;
1112
import org.junit.jupiter.api.extension.ExtendWith;
1213
import org.junit.jupiter.api.io.TempDir;
1314
import org.springframework.beans.factory.annotation.Autowired;
@@ -16,22 +17,28 @@
1617
import org.springframework.boot.testcontainers.service.connection.ServiceConnection;
1718
import org.springframework.test.context.junit.jupiter.SpringExtension;
1819
import org.testcontainers.containers.CosmosDBEmulatorContainer;
20+
import org.testcontainers.containers.wait.strategy.Wait;
1921
import org.testcontainers.junit.jupiter.Container;
2022
import org.testcontainers.junit.jupiter.Testcontainers;
2123
import org.testcontainers.utility.DockerImageName;
2224

2325
import java.io.File;
26+
import java.io.IOException;
2427
import java.nio.file.Files;
2528
import java.nio.file.Path;
2629
import java.security.KeyStore;
30+
import java.security.KeyStoreException;
31+
import java.security.NoSuchAlgorithmException;
32+
import java.security.cert.CertificateException;
33+
import java.time.Duration;
2734

2835
import static org.assertj.core.api.Assertions.assertThat;
2936

3037
@SpringBootTest(classes = CosmosTestcontainersTest.class)
3138
@Testcontainers
3239
@ExtendWith(SpringExtension.class)
3340
@ImportAutoConfiguration(classes = { AzureGlobalPropertiesAutoConfiguration.class, AzureCosmosAutoConfiguration.class})
34-
@Disabled("Cosmos DB emulator has SSL certificate issues in CI environments. See https://github.com/Azure/azure-cosmos-db-emulator-docker/issues/229")
41+
@EnabledOnOs(OS.LINUX)
3542
public class CosmosTestcontainersTest {
3643

3744
@TempDir
@@ -43,18 +50,15 @@ public class CosmosTestcontainersTest {
4350
@Container
4451
@ServiceConnection
4552
static CosmosDBEmulatorContainer cosmos = new CosmosDBEmulatorContainer(
46-
DockerImageName.parse("mcr.microsoft.com/cosmosdb/linux/azure-cosmos-emulator:latest"));
53+
DockerImageName.parse("mcr.microsoft.com/cosmosdb/linux/azure-cosmos-emulator:latest"))
54+
.waitingFor(Wait.forHttps("/_explorer/emulator.pem").forStatusCode(200).allowInsecure())
55+
.withStartupTimeout(Duration.ofMinutes(3));
4756

4857
@BeforeAll
49-
public static void setup() {
50-
cosmos.start();
58+
public static void setup() throws IOException, CertificateException, KeyStoreException, NoSuchAlgorithmException {
5159
Path keyStoreFile = new File(tempFolder, "azure-cosmos-emulator.keystore").toPath();
5260
KeyStore keyStore = cosmos.buildNewKeyStore();
53-
try {
54-
keyStore.store(Files.newOutputStream(keyStoreFile.toFile().toPath()), cosmos.getEmulatorKey().toCharArray());
55-
} catch (Exception e) {
56-
throw new RuntimeException(e);
57-
}
61+
keyStore.store(Files.newOutputStream(keyStoreFile.toFile().toPath()), cosmos.getEmulatorKey().toCharArray());
5862

5963
System.setProperty("javax.net.ssl.trustStore", keyStoreFile.toString());
6064
System.setProperty("javax.net.ssl.trustStorePassword", cosmos.getEmulatorKey());

0 commit comments

Comments
 (0)