Skip to content

Commit cb669af

Browse files
committed
Use MongoDBAtlasLocalContainer from Testcontainers 1.20.2
Testcontainers 1.20.2 offers `MongoDBAtlasLocalContainer`. Previous image used during tests was pulling images in every execution. The new image is cached locally and can be executed offline.
1 parent 110a520 commit cb669af

File tree

6 files changed

+23
-56
lines changed

6 files changed

+23
-56
lines changed

spring-ai-spring-boot-autoconfigure/pom.xml

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -494,6 +494,13 @@
494494
<scope>test</scope>
495495
</dependency>
496496

497+
<dependency>
498+
<groupId>org.testcontainers</groupId>
499+
<artifactId>mongodb</artifactId>
500+
<version>1.20.2</version>
501+
<scope>test</scope>
502+
</dependency>
503+
497504
<dependency>
498505
<groupId>org.testcontainers</groupId>
499506
<artifactId>qdrant</artifactId>

spring-ai-spring-boot-autoconfigure/src/test/java/org/springframework/ai/autoconfigure/vectorstore/mongo/MongoDBAtlasVectorStoreAutoConfigurationIT.java

Lines changed: 3 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -18,13 +18,10 @@
1818
import static org.assertj.core.api.Assertions.assertThat;
1919
import static org.springframework.ai.autoconfigure.vectorstore.observation.ObservationTestUtil.assertObservationRegistry;
2020

21-
import java.time.Duration;
2221
import java.util.Collections;
2322
import java.util.List;
24-
import java.util.Map;
2523
import java.util.stream.Collectors;
2624

27-
import org.junit.jupiter.api.Disabled;
2825
import org.junit.jupiter.api.Test;
2926
import org.junit.jupiter.api.condition.EnabledIfEnvironmentVariable;
3027
import org.springframework.ai.autoconfigure.openai.OpenAiAutoConfiguration;
@@ -33,7 +30,6 @@
3330
import org.springframework.ai.observation.conventions.VectorStoreProvider;
3431
import org.springframework.ai.vectorstore.SearchRequest;
3532
import org.springframework.ai.vectorstore.VectorStore;
36-
import org.springframework.ai.vectorstore.filter.Filter;
3733
import org.springframework.ai.vectorstore.filter.FilterExpressionBuilder;
3834
import org.springframework.ai.vectorstore.observation.VectorStoreObservationContext;
3935
import org.springframework.boot.autoconfigure.AutoConfigurations;
@@ -44,12 +40,11 @@
4440
import org.springframework.context.annotation.Bean;
4541
import org.springframework.context.annotation.Configuration;
4642
import org.springframework.data.mongodb.core.MongoTemplate;
47-
import org.testcontainers.containers.GenericContainer;
48-
import org.testcontainers.containers.wait.strategy.Wait;
4943
import org.testcontainers.junit.jupiter.Container;
5044
import org.testcontainers.junit.jupiter.Testcontainers;
5145

5246
import io.micrometer.observation.tck.TestObservationRegistry;
47+
import org.testcontainers.mongodb.MongoDBAtlasLocalContainer;
5348

5449
/**
5550
* @author Eddú Meléndez
@@ -62,12 +57,7 @@
6257
class MongoDBAtlasVectorStoreAutoConfigurationIT {
6358

6459
@Container
65-
static GenericContainer<?> mongo = new GenericContainer<>("mongodb/atlas:v1.24.0").withPrivilegedMode(true)
66-
.withCommand("/bin/bash", "-c",
67-
"atlas deployments setup local-test --type local --port 27778 --bindIpAll --username root --password root --force && tail -f /dev/null")
68-
.withExposedPorts(27778)
69-
.waitingFor(Wait.forLogMessage(".*Deployment created!.*\\n", 1))
70-
.withStartupTimeout(Duration.ofMinutes(5));
60+
static MongoDBAtlasLocalContainer mongo = new MongoDBAtlasLocalContainer("mongodb/mongodb-atlas-local:7.0.9");
7161

7262
List<Document> documents = List.of(
7363
new Document("Spring AI rocks!! Spring AI rocks!! Spring AI rocks!! Spring AI rocks!! Spring AI rocks!!",
@@ -94,9 +84,7 @@ class MongoDBAtlasVectorStoreAutoConfigurationIT {
9484
// "spring.ai.vectorstore.mongodb.path-name=testembedding",
9585
"spring.ai.vectorstore.mongodb.index-name=text_index",
9686
"spring.ai.openai.api-key=" + System.getenv("OPENAI_API_KEY"),
97-
String.format(
98-
"spring.data.mongodb.uri=" + String.format("mongodb://root:root@%s:%s/?directConnection=true",
99-
mongo.getHost(), mongo.getMappedPort(27778))));
87+
String.format("spring.data.mongodb.uri=" + mongo.getConnectionString()));
10088

10189
@Test
10290
public void addAndSearch() {

vector-stores/spring-ai-mongodb-atlas-store/pom.xml

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -53,6 +53,11 @@
5353
<groupId>org.testcontainers</groupId>
5454
<artifactId>junit-jupiter</artifactId>
5555
<scope>test</scope>
56+
</dependency><dependency>
57+
<groupId>org.testcontainers</groupId>
58+
<artifactId>mongodb</artifactId>
59+
<version>1.20.2</version>
60+
<scope>test</scope>
5661
</dependency>
5762

5863
<dependency>

vector-stores/spring-ai-mongodb-atlas-store/src/test/java/org/springframework/ai/vectorstore/MongoDBAtlasContainer.java

Lines changed: 0 additions & 39 deletions
This file was deleted.

vector-stores/spring-ai-mongodb-atlas-store/src/test/java/org/springframework/ai/vectorstore/MongoDBAtlasVectorStoreIT.java

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,7 @@
3636

3737
import org.testcontainers.junit.jupiter.Container;
3838
import org.testcontainers.junit.jupiter.Testcontainers;
39+
import org.testcontainers.mongodb.MongoDBAtlasLocalContainer;
3940

4041
import java.util.Arrays;
4142
import java.util.Collections;
@@ -49,12 +50,14 @@
4950
/**
5051
* @author Chris Smith
5152
* @author Soby Chacko
53+
* @author Eddú Meléndez
5254
*/
5355
@Testcontainers
5456
class MongoDBAtlasVectorStoreIT {
5557

5658
@Container
57-
private static MongoDBAtlasContainer container = new MongoDBAtlasContainer();
59+
private static MongoDBAtlasLocalContainer container = new MongoDBAtlasLocalContainer(
60+
"mongodb/mongodb-atlas-local:7.0.9");
5861

5962
private final ApplicationContextRunner contextRunner = new ApplicationContextRunner()
6063
.withUserConfiguration(TestApplication.class)

vector-stores/spring-ai-mongodb-atlas-store/src/test/java/org/springframework/ai/vectorstore/MongoDbVectorStoreObservationIT.java

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -56,18 +56,21 @@
5656
import io.micrometer.observation.ObservationRegistry;
5757
import io.micrometer.observation.tck.TestObservationRegistry;
5858
import io.micrometer.observation.tck.TestObservationRegistryAssert;
59+
import org.testcontainers.mongodb.MongoDBAtlasLocalContainer;
5960

6061
/**
6162
* @author Christian Tzolov
6263
* @author Soby Chacko
6364
* @author Thomas Vitale
65+
* @author Eddú Meléndez
6466
*/
6567
@Testcontainers
6668
@EnabledIfEnvironmentVariable(named = "OPENAI_API_KEY", matches = ".+")
6769
public class MongoDbVectorStoreObservationIT {
6870

6971
@Container
70-
private static MongoDBAtlasContainer container = new MongoDBAtlasContainer();
72+
private static MongoDBAtlasLocalContainer container = new MongoDBAtlasLocalContainer(
73+
"mongodb/mongodb-atlas-local:7.0.9");
7174

7275
private final ApplicationContextRunner contextRunner = new ApplicationContextRunner()
7376
.withUserConfiguration(Config.class)

0 commit comments

Comments
 (0)