1
package org.testcontainers.containers;
3
import com.mongodb.client.MongoClient;
4
import com.mongodb.client.MongoClients;
5
import org.bson.Document;
7
import org.junit.runner.RunWith;
8
import org.junit.runners.Parameterized;
10
import static org.assertj.core.api.Assertions.assertThat;
12
@RunWith(Parameterized.class)
13
public class CompatibleImageTest extends AbstractMongo {
15
private final String image;
17
public CompatibleImageTest(String image) {
21
@Parameterized.Parameters(name = "{0}")
22
public static String[] image() {
25
"mongodb/mongodb-community-server:7.0.2-ubi8",
26
"mongodb/mongodb-enterprise-server:7.0.0-ubi8",
31
public void shouldExecuteTransactions() {
33
// creatingMongoDBContainer {
34
final MongoDBContainer mongoDBContainer = new MongoDBContainer("mongo:4.0.10")
37
// startingMongoDBContainer {
38
mongoDBContainer.start();
40
executeTx(mongoDBContainer);
45
public void shouldSupportSharding() {
46
try (final MongoDBContainer mongoDBContainer = new MongoDBContainer(this.image).withSharding()) {
47
mongoDBContainer.start();
48
final MongoClient mongoClient = MongoClients.create(mongoDBContainer.getReplicaSetUrl());
50
mongoClient.getDatabase("mydb1").getCollection("foo").insertOne(new Document("abc", 0));
52
Document shards = mongoClient.getDatabase("config").getCollection("shards").find().first();
53
assertThat(shards).isNotNull();
54
assertThat(shards).isNotEmpty();
55
assertThat(isReplicaSet(mongoClient)).isFalse();
59
private boolean isReplicaSet(MongoClient mongoClient) {
60
return runIsMaster(mongoClient).get("setName") != null;
63
private Document runIsMaster(MongoClient mongoClient) {
64
return mongoClient.getDatabase("admin").runCommand(new Document("ismaster", 1));