Skip to content

Commit fbbb099

Browse files
doh - server ready, search index server still down.
1 parent d2c2fca commit fbbb099

File tree

3 files changed

+37
-1
lines changed

3 files changed

+37
-1
lines changed

spring-data-mongodb/src/test/java/org/springframework/data/mongodb/core/index/VectorIndexIntegrationTests.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -51,6 +51,7 @@
5151
*/
5252
@ExtendWith(MongoServerCondition.class)
5353
@Testcontainers(disabledWithoutDocker = true)
54+
@Tag("collection:movie")
5455
class VectorIndexIntegrationTests {
5556

5657
private static final @Container AtlasContainer atlasLocal = AtlasContainer.bestMatch();

spring-data-mongodb/src/test/java/org/springframework/data/mongodb/test/util/MongoServerCondition.java

Lines changed: 22 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,9 @@
1515
*/
1616
package org.springframework.data.mongodb.test.util;
1717

18+
import java.time.Duration;
19+
import java.util.Optional;
20+
1821
import org.junit.jupiter.api.extension.ConditionEvaluationResult;
1922
import org.junit.jupiter.api.extension.ExecutionCondition;
2023
import org.junit.jupiter.api.extension.ExtensionContext;
@@ -23,6 +26,7 @@
2326
import org.springframework.data.util.Version;
2427
import org.springframework.util.NumberUtils;
2528
import org.springframework.util.StringUtils;
29+
import org.testcontainers.shaded.org.awaitility.Awaitility;
2630

2731
import com.mongodb.client.MongoClient;
2832

@@ -103,7 +107,24 @@ private boolean atlasEnvironment(ExtensionContext context) {
103107

104108
if (StringUtils.hasText(host) && StringUtils.hasText(port)) {
105109
try (MongoClient client = MongoTestUtils.client(host, NumberUtils.parseNumber(port, Integer.class))) {
106-
return MongoTestUtils.isVectorSearchEnabled(client);
110+
if (!MongoTestUtils.isVectorSearchEnabled(client)) {
111+
return false;
112+
}
113+
114+
Optional<String> collectionTag = context.getTags().stream().filter(tag -> tag.startsWith("collection"))
115+
.findFirst();
116+
if (collectionTag.isPresent()) {
117+
118+
String collectionName = collectionTag.get().split(":")[1];
119+
try {
120+
Awaitility.await().atMost(Duration.ofSeconds(60)).pollInterval(Duration.ofMillis(200)).until(() -> {
121+
return MongoTestUtils.isSearchIndexReady(client, null, collectionName);
122+
});
123+
} catch (Exception e) {
124+
return false;
125+
}
126+
}
127+
return true;
107128
}
108129
}
109130
return MongoTestUtils.isVectorSearchEnabled();

spring-data-mongodb/src/test/java/org/springframework/data/mongodb/test/util/MongoTestUtils.java

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,8 @@
1515
*/
1616
package org.springframework.data.mongodb.test.util;
1717

18+
import org.jspecify.annotations.Nullable;
19+
import org.springframework.util.StringUtils;
1820
import reactor.core.publisher.Mono;
1921
import reactor.test.StepVerifier;
2022
import reactor.util.retry.Retry;
@@ -289,6 +291,18 @@ public static boolean isVectorSearchEnabled(MongoClient client) {
289291
}
290292
}
291293

294+
public static boolean isSearchIndexReady(MongoClient client, @Nullable String database, String collectionName) {
295+
296+
try {
297+
MongoCollection<Document> collection = client.getDatabase(StringUtils.hasText(database) ? database : "test").getCollection(collectionName);
298+
collection.aggregate(List.of(new Document("$listSearchIndexes", new Document())));
299+
} catch (Exception e) {
300+
return false;
301+
}
302+
return true;
303+
304+
}
305+
292306
public static Duration getTimeout() {
293307

294308
return ObjectUtils.nullSafeEquals("jenkins", ENV.getProperty("user.name")) ? Duration.ofMillis(100)

0 commit comments

Comments
 (0)