Skip to content

Commit 562e37d

Browse files
committed
Move CosmosDB container to a new package
- CosmosDB container is moved to a new package in the Azure module - Leave deprecated implementation at old location - Update documentation Signed-off-by: Esta Nagy <[email protected]>
1 parent f7973aa commit 562e37d

File tree

5 files changed

+81
-55
lines changed

5 files changed

+81
-55
lines changed

docs/modules/azure.md

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -18,31 +18,31 @@ CosmosDBEmulatorContainer | [mcr.microsoft.com/cosmosdb/linux/azure-cosmos-emula
1818
Start Azure CosmosDB Emulator during a test:
1919

2020
<!--codeinclude-->
21-
[Starting a Azure CosmosDB Emulator container](../../modules/azure/src/test/java/org/testcontainers/containers/CosmosDBEmulatorContainerTest.java) inside_block:emulatorContainer
21+
[Starting a Azure CosmosDB Emulator container](../../modules/azure/src/test/java/org/testcontainers/azure/CosmosDBEmulatorContainerTest.java) inside_block:emulatorContainer
2222
<!--/codeinclude-->
2323

2424
Prepare KeyStore to use for SSL.
2525

2626
<!--codeinclude-->
27-
[Building KeyStore from certificate within container](../../modules/azure/src/test/java/org/testcontainers/containers/CosmosDBEmulatorContainerTest.java) inside_block:buildAndSaveNewKeyStore
27+
[Building KeyStore from certificate within container](../../modules/azure/src/test/java/org/testcontainers/azure/CosmosDBEmulatorContainerTest.java) inside_block:buildAndSaveNewKeyStore
2828
<!--/codeinclude-->
2929

3030
Set system trust-store parameters to use already built KeyStore:
3131

3232
<!--codeinclude-->
33-
[Set system trust-store parameters](../../modules/azure/src/test/java/org/testcontainers/containers/CosmosDBEmulatorContainerTest.java) inside_block:setSystemTrustStoreParameters
33+
[Set system trust-store parameters](../../modules/azure/src/test/java/org/testcontainers/azure/CosmosDBEmulatorContainerTest.java) inside_block:setSystemTrustStoreParameters
3434
<!--/codeinclude-->
3535

3636
Build Azure CosmosDB client:
3737

3838
<!--codeinclude-->
39-
[Build Azure CosmosDB client](../../modules/azure/src/test/java/org/testcontainers/containers/CosmosDBEmulatorContainerTest.java) inside_block:buildClient
39+
[Build Azure CosmosDB client](../../modules/azure/src/test/java/org/testcontainers/azure/CosmosDBEmulatorContainerTest.java) inside_block:buildClient
4040
<!--/codeinclude-->
4141

4242
Test against the Emulator:
4343

4444
<!--codeinclude-->
45-
[Testing against Azure CosmosDB Emulator container](../../modules/azure/src/test/java/org/testcontainers/containers/CosmosDBEmulatorContainerTest.java) inside_block:testWithClientAgainstEmulatorContainer
45+
[Testing against Azure CosmosDB Emulator container](../../modules/azure/src/test/java/org/testcontainers/azure/CosmosDBEmulatorContainerTest.java) inside_block:testWithClientAgainstEmulatorContainer
4646
<!--/codeinclude-->
4747

4848
## Adding this module to your project dependencies
Lines changed: 58 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,58 @@
1+
package org.testcontainers.azure;
2+
3+
import org.testcontainers.containers.GenericContainer;
4+
import org.testcontainers.containers.wait.strategy.Wait;
5+
import org.testcontainers.utility.DockerImageName;
6+
7+
import java.security.KeyStore;
8+
9+
/**
10+
* Testcontainers implementation for CosmosDB Emulator.
11+
* <p>
12+
* Supported image: {@code mcr.microsoft.com/cosmosdb/linux/azure-cosmos-emulator}
13+
* <p>
14+
* Exposed ports: 8081
15+
*/
16+
public class CosmosDBEmulatorContainer extends GenericContainer<CosmosDBEmulatorContainer> {
17+
18+
private static final DockerImageName DEFAULT_IMAGE_NAME = DockerImageName.parse(
19+
"mcr.microsoft.com/cosmosdb/linux/azure-cosmos-emulator"
20+
);
21+
22+
private static final int PORT = 8081;
23+
24+
/**
25+
* @param dockerImageName specified docker image name to run
26+
*/
27+
public CosmosDBEmulatorContainer(final DockerImageName dockerImageName) {
28+
super(dockerImageName);
29+
dockerImageName.assertCompatibleWith(DEFAULT_IMAGE_NAME);
30+
withExposedPorts(PORT);
31+
waitingFor(Wait.forLogMessage(".*Started\\r\\n$", 1));
32+
}
33+
34+
/**
35+
* @return new KeyStore built with PKCS12
36+
*/
37+
public KeyStore buildNewKeyStore() {
38+
return KeyStoreBuilder.buildByDownloadingCertificate(getEmulatorEndpoint(), getEmulatorKey());
39+
}
40+
41+
/**
42+
* Emulator key is a known constant and specified in Azure Cosmos DB Documents.
43+
* This key is also used as password for emulator certificate file.
44+
*
45+
* @return predefined emulator key
46+
* @see <a href="https://docs.microsoft.com/en-us/azure/cosmos-db/local-emulator?tabs=ssl-netstd21#authenticate-requests">Azure Cosmos DB Documents</a>
47+
*/
48+
public String getEmulatorKey() {
49+
return "C2y6yDjf5/R+ob0N8A7Cgv30VRDJIWEHLM+4QDU5DE2nQ9nDuVTqobD4b8mGGyPMbIZnqyMsEcaGQy67XIw/Jw==";
50+
}
51+
52+
/**
53+
* @return secure https emulator endpoint to send requests
54+
*/
55+
public String getEmulatorEndpoint() {
56+
return "https://" + getHost() + ":" + getMappedPort(PORT);
57+
}
58+
}

modules/azure/src/main/java/org/testcontainers/containers/KeyStoreBuilder.java renamed to modules/azure/src/main/java/org/testcontainers/azure/KeyStoreBuilder.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
package org.testcontainers.containers;
1+
package org.testcontainers.azure;
22

33
import okhttp3.Cache;
44
import okhttp3.OkHttpClient;
Lines changed: 11 additions & 43 deletions
Original file line numberDiff line numberDiff line change
@@ -1,57 +1,25 @@
11
package org.testcontainers.containers;
22

3-
import org.testcontainers.containers.wait.strategy.Wait;
43
import org.testcontainers.utility.DockerImageName;
54

6-
import java.security.KeyStore;
7-
85
/**
9-
* Testcontainers implementation for CosmosDB Emulator.
10-
* <p>
11-
* Supported image: {@code mcr.microsoft.com/cosmosdb/linux/azure-cosmos-emulator}
12-
* <p>
13-
* Exposed ports: 8081
6+
* Original Testcontainers implementation for CosmosDB Emulator.
7+
*
8+
* @deprecated Please use {@link org.testcontainers.azure.CosmosDBEmulatorContainer}.
149
*/
15-
public class CosmosDBEmulatorContainer extends GenericContainer<CosmosDBEmulatorContainer> {
16-
17-
private static final DockerImageName DEFAULT_IMAGE_NAME = DockerImageName.parse(
18-
"mcr.microsoft.com/cosmosdb/linux/azure-cosmos-emulator"
19-
);
20-
21-
private static final int PORT = 8081;
10+
@Deprecated
11+
public class CosmosDBEmulatorContainer extends org.testcontainers.azure.CosmosDBEmulatorContainer {
2212

2313
/**
2414
* @param dockerImageName specified docker image name to run
15+
* @deprecated Please use {@link org.testcontainers.azure.CosmosDBEmulatorContainer}.
2516
*/
17+
@Deprecated
2618
public CosmosDBEmulatorContainer(final DockerImageName dockerImageName) {
2719
super(dockerImageName);
28-
dockerImageName.assertCompatibleWith(DEFAULT_IMAGE_NAME);
29-
withExposedPorts(PORT);
30-
waitingFor(Wait.forLogMessage(".*Started\\r\\n$", 1));
31-
}
32-
33-
/**
34-
* @return new KeyStore built with PKCS12
35-
*/
36-
public KeyStore buildNewKeyStore() {
37-
return KeyStoreBuilder.buildByDownloadingCertificate(getEmulatorEndpoint(), getEmulatorKey());
38-
}
39-
40-
/**
41-
* Emulator key is a known constant and specified in Azure Cosmos DB Documents.
42-
* This key is also used as password for emulator certificate file.
43-
*
44-
* @return predefined emulator key
45-
* @see <a href="https://docs.microsoft.com/en-us/azure/cosmos-db/local-emulator?tabs=ssl-netstd21#authenticate-requests">Azure Cosmos DB Documents</a>
46-
*/
47-
public String getEmulatorKey() {
48-
return "C2y6yDjf5/R+ob0N8A7Cgv30VRDJIWEHLM+4QDU5DE2nQ9nDuVTqobD4b8mGGyPMbIZnqyMsEcaGQy67XIw/Jw==";
49-
}
50-
51-
/**
52-
* @return secure https emulator endpoint to send requests
53-
*/
54-
public String getEmulatorEndpoint() {
55-
return "https://" + getHost() + ":" + getMappedPort(PORT);
20+
logger()
21+
.warn(
22+
"The CosmosDBEmulatorContainer moved to the org.testcontainers.azure package. This old class will be removed in a future version."
23+
);
5624
}
5725
}

modules/azure/src/test/java/org/testcontainers/containers/CosmosDBEmulatorContainerTest.java renamed to modules/azure/src/test/java/org/testcontainers/azure/CosmosDBEmulatorContainerTest.java

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
package org.testcontainers.containers;
1+
package org.testcontainers.azure;
22

33
import com.azure.cosmos.CosmosAsyncClient;
44
import com.azure.cosmos.CosmosClientBuilder;
@@ -46,8 +46,8 @@ public static void restoreOriginalSystemProperties() {
4646
@Test
4747
public void testWithCosmosClient() throws Exception {
4848
// buildAndSaveNewKeyStore {
49-
Path keyStoreFile = tempFolder.newFile("azure-cosmos-emulator.keystore").toPath();
50-
KeyStore keyStore = emulator.buildNewKeyStore();
49+
final Path keyStoreFile = tempFolder.newFile("azure-cosmos-emulator.keystore").toPath();
50+
final KeyStore keyStore = emulator.buildNewKeyStore();
5151
keyStore.store(new FileOutputStream(keyStoreFile.toFile()), emulator.getEmulatorKey().toCharArray());
5252
// }
5353
// setSystemTrustStoreParameters {
@@ -56,17 +56,17 @@ public void testWithCosmosClient() throws Exception {
5656
System.setProperty("javax.net.ssl.trustStoreType", "PKCS12");
5757
// }
5858
// buildClient {
59-
CosmosAsyncClient client = new CosmosClientBuilder()
59+
final CosmosAsyncClient client = new CosmosClientBuilder()
6060
.gatewayMode()
6161
.endpointDiscoveryEnabled(false)
6262
.endpoint(emulator.getEmulatorEndpoint())
6363
.key(emulator.getEmulatorKey())
6464
.buildAsyncClient();
6565
// }
6666
// testWithClientAgainstEmulatorContainer {
67-
CosmosDatabaseResponse databaseResponse = client.createDatabaseIfNotExists("Azure").block();
67+
final CosmosDatabaseResponse databaseResponse = client.createDatabaseIfNotExists("Azure").block();
6868
assertThat(databaseResponse.getStatusCode()).isEqualTo(201);
69-
CosmosContainerResponse containerResponse = client
69+
final CosmosContainerResponse containerResponse = client
7070
.getDatabase("Azure")
7171
.createContainerIfNotExists("ServiceContainer", "/name")
7272
.block();

0 commit comments

Comments
 (0)