Skip to content

Commit 4f36813

Browse files
Copilotrujche
andauthored
Enable CosmosTestcontainersTest (#820)
* Initial plan * Enable CosmosTestcontainersTest with @EnabledOnOs(OS.LINUX) and proper wait strategy Co-authored-by: rujche <[email protected]> * Fix pipeline failure by adding sdk/tools/linting-extensions into sparse checkout * Fix pipeline failure by adding .vscode/ into sparse checkout * Resolve PR comments --------- Co-authored-by: copilot-swe-agent[bot] <[email protected]> Co-authored-by: rujche <[email protected]> Co-authored-by: Rujun Chen <[email protected]>
1 parent 96746b7 commit 4f36813

3 files changed

Lines changed: 16 additions & 10 deletions

File tree

.github/workflows/codeql-analysis.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,7 @@ jobs:
4242
name: Checkout Azure/azure-sdk-for-java
4343
with:
4444
patterns: |
45-
sdk/spring sdk/jdbc sdk/spring-experimental eng sdk/boms sdk/parents
45+
sdk/spring sdk/jdbc sdk/spring-experimental eng sdk/boms sdk/parents sdk/tools/linting-extensions .vscode/
4646
repository: Azure/azure-sdk-for-java
4747
ref: main
4848
path: azure-sdk-for-java

CONTRIBUTING.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,8 @@
1818
echo "eng" >> .git/info/sparse-checkout
1919
echo "sdk/keyvault" >> .git/info/sparse-checkout
2020
echo "sdk/boms" >> .git/info/sparse-checkout
21+
echo "sdk/tools/linting-extensions" >> .git/info/sparse-checkout
22+
echo ".vscode/" >> .git/info/sparse-checkout
2123
git pull --depth=1 origin feature/azure-spring-cloud-4.0
2224
mvn clean install -Dmaven.javadoc.skip=true -DskipTests \
2325
-Dcheckstyle.skip=true \

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

Lines changed: 13 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -6,8 +6,8 @@
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.OS;
1111
import org.junit.jupiter.api.extension.ExtendWith;
1212
import org.junit.jupiter.api.io.TempDir;
1313
import org.springframework.beans.factory.annotation.Autowired;
@@ -16,22 +16,27 @@
1616
import org.springframework.boot.testcontainers.service.connection.ServiceConnection;
1717
import org.springframework.test.context.junit.jupiter.SpringExtension;
1818
import org.testcontainers.containers.CosmosDBEmulatorContainer;
19+
import org.testcontainers.containers.wait.strategy.Wait;
1920
import org.testcontainers.junit.jupiter.Container;
2021
import org.testcontainers.junit.jupiter.Testcontainers;
2122
import org.testcontainers.utility.DockerImageName;
2223

2324
import java.io.File;
25+
import java.io.IOException;
2426
import java.nio.file.Files;
2527
import java.nio.file.Path;
2628
import java.security.KeyStore;
29+
import java.security.KeyStoreException;
30+
import java.security.NoSuchAlgorithmException;
31+
import java.security.cert.CertificateException;
32+
import java.time.Duration;
2733

2834
import static org.assertj.core.api.Assertions.assertThat;
2935

3036
@SpringBootTest(classes = CosmosTestcontainersTest.class)
3137
@Testcontainers
3238
@ExtendWith(SpringExtension.class)
3339
@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")
3540
public class CosmosTestcontainersTest {
3641

3742
@TempDir
@@ -43,17 +48,16 @@ public class CosmosTestcontainersTest {
4348
@Container
4449
@ServiceConnection
4550
static CosmosDBEmulatorContainer cosmos = new CosmosDBEmulatorContainer(
46-
DockerImageName.parse("mcr.microsoft.com/cosmosdb/linux/azure-cosmos-emulator:latest"));
51+
DockerImageName.parse("mcr.microsoft.com/cosmosdb/linux/azure-cosmos-emulator:latest"))
52+
.waitingFor(Wait.forHttps("/_explorer/emulator.pem").forStatusCode(200).allowInsecure())
53+
.withStartupTimeout(Duration.ofMinutes(3));
4754

4855
@BeforeAll
49-
public static void setup() {
50-
cosmos.start();
56+
public static void setup() throws IOException, CertificateException, KeyStoreException, NoSuchAlgorithmException {
5157
Path keyStoreFile = new File(tempFolder, "azure-cosmos-emulator.keystore").toPath();
5258
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);
59+
try (var out = Files.newOutputStream(keyStoreFile.toFile().toPath())) {
60+
keyStore.store(out, cosmos.getEmulatorKey().toCharArray());
5761
}
5862

5963
System.setProperty("javax.net.ssl.trustStore", keyStoreFile.toString());

0 commit comments

Comments
 (0)