From 0c5dd0e5ddf2f539c7824f2b4e3ab1350b5d3a8c Mon Sep 17 00:00:00 2001 From: dev-jonghoonpark Date: Fri, 4 Apr 2025 23:41:46 +0900 Subject: [PATCH 1/4] handle new chroma db api version --- .../chromadb/ChromaDBContainer.java | 25 ++++++++++++++++++- .../chromadb/ChromaDBContainerTest.java | 21 ++++++++++++++++ 2 files changed, 45 insertions(+), 1 deletion(-) diff --git a/modules/chromadb/src/main/java/org/testcontainers/chromadb/ChromaDBContainer.java b/modules/chromadb/src/main/java/org/testcontainers/chromadb/ChromaDBContainer.java index a1bccf3904f..3065bf164df 100644 --- a/modules/chromadb/src/main/java/org/testcontainers/chromadb/ChromaDBContainer.java +++ b/modules/chromadb/src/main/java/org/testcontainers/chromadb/ChromaDBContainer.java @@ -1,7 +1,9 @@ package org.testcontainers.chromadb; +import lombok.extern.slf4j.Slf4j; import org.testcontainers.containers.GenericContainer; import org.testcontainers.containers.wait.strategy.Wait; +import org.testcontainers.utility.ComparableVersion; import org.testcontainers.utility.DockerImageName; /** @@ -11,6 +13,7 @@ *

* Exposed ports: 8000 */ +@Slf4j public class ChromaDBContainer extends GenericContainer { private static final DockerImageName DEFAULT_DOCKER_IMAGE = DockerImageName.parse("chromadb/chroma"); @@ -22,13 +25,33 @@ public ChromaDBContainer(String dockerImageName) { } public ChromaDBContainer(DockerImageName dockerImageName) { + this(dockerImageName, isVersion2(dockerImageName.getVersionPart())); + } + + public ChromaDBContainer(DockerImageName dockerImageName, boolean isVersion2) { super(dockerImageName); + + String apiPath = isVersion2 ? "/api/v2/heartbeat" : "/api/v1/heartbeat"; dockerImageName.assertCompatibleWith(DEFAULT_DOCKER_IMAGE, GHCR_DOCKER_IMAGE); withExposedPorts(8000); - waitingFor(Wait.forHttp("/api/v1/heartbeat")); + waitingFor(Wait.forHttp(apiPath)); } public String getEndpoint() { return "http://" + getHost() + ":" + getFirstMappedPort(); } + + private static boolean isVersion2(String version) { + if (version.equals("latest")) { + return true; + } + + ComparableVersion comparableVersion = new ComparableVersion(version); + if (comparableVersion.isGreaterThanOrEqualTo("1.0.0")) { + return true; + } + + log.warn("Version {} is not a semantic version,", version); + return false; + } } diff --git a/modules/chromadb/src/test/java/org/testcontainers/chromadb/ChromaDBContainerTest.java b/modules/chromadb/src/test/java/org/testcontainers/chromadb/ChromaDBContainerTest.java index 6cc01ac4d59..754ca15d479 100644 --- a/modules/chromadb/src/test/java/org/testcontainers/chromadb/ChromaDBContainerTest.java +++ b/modules/chromadb/src/test/java/org/testcontainers/chromadb/ChromaDBContainerTest.java @@ -27,4 +27,25 @@ public void test() { given().baseUri(chroma.getEndpoint()).when().get("/api/v1/databases/test").then().statusCode(200); } } + + @Test + public void testVersion2() { + try ( // container { + ChromaDBContainer chroma = new ChromaDBContainer("chromadb/chroma:1.0.0") + // } + ) { + chroma.start(); + + given() + .baseUri(chroma.getEndpoint()) + .when() + .body("{\"name\": \"test\"}") + .contentType(ContentType.JSON) + .post("/api/v2/tenants") + .then() + .statusCode(200); + + given().baseUri(chroma.getEndpoint()).when().get("/api/v2/tenants/test").then().statusCode(200); + } + } } From c8c8f523c615a09e274168ea2f6fd75234b33138 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Edd=C3=BA=20Mel=C3=A9ndez=20Gonzales?= Date: Fri, 4 Apr 2025 10:02:07 -0600 Subject: [PATCH 2/4] Update modules/chromadb/src/test/java/org/testcontainers/chromadb/ChromaDBContainerTest.java --- .../org/testcontainers/chromadb/ChromaDBContainerTest.java | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/modules/chromadb/src/test/java/org/testcontainers/chromadb/ChromaDBContainerTest.java b/modules/chromadb/src/test/java/org/testcontainers/chromadb/ChromaDBContainerTest.java index 754ca15d479..7fe15d39e74 100644 --- a/modules/chromadb/src/test/java/org/testcontainers/chromadb/ChromaDBContainerTest.java +++ b/modules/chromadb/src/test/java/org/testcontainers/chromadb/ChromaDBContainerTest.java @@ -30,9 +30,8 @@ public void test() { @Test public void testVersion2() { - try ( // container { + try ( ChromaDBContainer chroma = new ChromaDBContainer("chromadb/chroma:1.0.0") - // } ) { chroma.start(); From 8ff8eed14c303d011fe60068d9eacf9c40b9ee63 Mon Sep 17 00:00:00 2001 From: dev-jonghoonpark Date: Sat, 5 Apr 2025 01:37:09 +0900 Subject: [PATCH 3/4] update logging --- .../java/org/testcontainers/chromadb/ChromaDBContainer.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/chromadb/src/main/java/org/testcontainers/chromadb/ChromaDBContainer.java b/modules/chromadb/src/main/java/org/testcontainers/chromadb/ChromaDBContainer.java index 3065bf164df..85e65a1f717 100644 --- a/modules/chromadb/src/main/java/org/testcontainers/chromadb/ChromaDBContainer.java +++ b/modules/chromadb/src/main/java/org/testcontainers/chromadb/ChromaDBContainer.java @@ -51,7 +51,7 @@ private static boolean isVersion2(String version) { return true; } - log.warn("Version {} is not a semantic version,", version); + log.warn("Version {} is less than 1.0.0 or not a semantic version.", version); return false; } } From 576f47d8aa727e13004f5aa3ef18014fab79dfb4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Edd=C3=BA=20Mel=C3=A9ndez?= Date: Fri, 4 Apr 2025 11:05:45 -0600 Subject: [PATCH 4/4] Fix format --- .../java/org/testcontainers/chromadb/ChromaDBContainer.java | 1 - .../org/testcontainers/chromadb/ChromaDBContainerTest.java | 4 +--- 2 files changed, 1 insertion(+), 4 deletions(-) diff --git a/modules/chromadb/src/main/java/org/testcontainers/chromadb/ChromaDBContainer.java b/modules/chromadb/src/main/java/org/testcontainers/chromadb/ChromaDBContainer.java index 85e65a1f717..af6c3df33fc 100644 --- a/modules/chromadb/src/main/java/org/testcontainers/chromadb/ChromaDBContainer.java +++ b/modules/chromadb/src/main/java/org/testcontainers/chromadb/ChromaDBContainer.java @@ -30,7 +30,6 @@ public ChromaDBContainer(DockerImageName dockerImageName) { public ChromaDBContainer(DockerImageName dockerImageName, boolean isVersion2) { super(dockerImageName); - String apiPath = isVersion2 ? "/api/v2/heartbeat" : "/api/v1/heartbeat"; dockerImageName.assertCompatibleWith(DEFAULT_DOCKER_IMAGE, GHCR_DOCKER_IMAGE); withExposedPorts(8000); diff --git a/modules/chromadb/src/test/java/org/testcontainers/chromadb/ChromaDBContainerTest.java b/modules/chromadb/src/test/java/org/testcontainers/chromadb/ChromaDBContainerTest.java index 7fe15d39e74..0ec6b00601c 100644 --- a/modules/chromadb/src/test/java/org/testcontainers/chromadb/ChromaDBContainerTest.java +++ b/modules/chromadb/src/test/java/org/testcontainers/chromadb/ChromaDBContainerTest.java @@ -30,9 +30,7 @@ public void test() { @Test public void testVersion2() { - try ( - ChromaDBContainer chroma = new ChromaDBContainer("chromadb/chroma:1.0.0") - ) { + try (ChromaDBContainer chroma = new ChromaDBContainer("chromadb/chroma:1.0.0")) { chroma.start(); given()