Skip to content

Commit 0c9833b

Browse files
authored
Add Milvus module (#8352)
1 parent 2c5244d commit 0c9833b

File tree

13 files changed

+205
-0
lines changed

13 files changed

+205
-0
lines changed

.github/ISSUE_TEMPLATE/bug_report.yaml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,7 @@ body:
3333
- Kafka
3434
- LocalStack
3535
- MariaDB
36+
- Milvus
3637
- MinIO
3738
- MockServer
3839
- MongoDB

.github/ISSUE_TEMPLATE/enhancement.yaml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,7 @@ body:
3333
- Kafka
3434
- LocalStack
3535
- MariaDB
36+
- Milvus
3637
- MinIO
3738
- MockServer
3839
- MongoDB

.github/ISSUE_TEMPLATE/feature.yaml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,7 @@ body:
3333
- Kafka
3434
- LocalStack
3535
- MariaDB
36+
- Milvus
3637
- MinIO
3738
- MockServer
3839
- MongoDB

.github/dependabot.yml

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -166,6 +166,11 @@ updates:
166166
ignore:
167167
- dependency-name: "org.mariadb:r2dbc-mariadb"
168168
update-types: [ "version-update:semver-minor" ]
169+
- package-ecosystem: "gradle"
170+
directory: "/modules/milvus"
171+
schedule:
172+
interval: "weekly"
173+
open-pull-requests-limit: 10
169174
- package-ecosystem: "gradle"
170175
directory: "/modules/minio"
171176
schedule:

.github/labeler.yml

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -99,6 +99,10 @@
9999
- changed-files:
100100
- any-glob-to-any-file:
101101
- modules/mariadb/**/*
102+
"modules/milvus":
103+
- changed-files:
104+
- any-glob-to-any-file:
105+
- modules/milvus/**/*
102106
"modules/minio":
103107
- changed-files:
104108
- any-glob-to-any-file:

.github/settings.yml

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -169,6 +169,9 @@ labels:
169169
- name: modules/mariadb
170170
color: '#006b75'
171171

172+
- name: modules/milvus
173+
color: '#006b75'
174+
172175
- name: modules/minio
173176
color: '#006b75'
174177

docs/modules/milvus.md

Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
# Milvus
2+
3+
Testcontainers module for [Milvus](https://hub.docker.com/r/milvusdb/milvus).
4+
5+
## Milvus's usage examples
6+
7+
You can start a Milvus container instance from any Java application by using:
8+
9+
<!--codeinclude-->
10+
[Default config](../../modules/milvus/src/test/java/org/testcontainers/milvus/MilvusContainerTest.java) inside_block:milvusContainer
11+
<!--/codeinclude-->
12+
13+
With external Etcd:
14+
15+
<!--codeinclude-->
16+
[External Etcd](../../modules/milvus/src/test/java/org/testcontainers/milvus/MilvusContainerTest.java) inside_block:externalEtcd
17+
<!--/codeinclude-->
18+
19+
## Adding this module to your project dependencies
20+
21+
Add the following dependency to your `pom.xml`/`build.gradle` file:
22+
23+
=== "Gradle"
24+
```groovy
25+
testImplementation "org.testcontainers:milvus:{{latest_version}}"
26+
```
27+
28+
=== "Maven"
29+
```xml
30+
<dependency>
31+
<groupId>org.testcontainers</groupId>
32+
<artifactId>milvus</artifactId>
33+
<version>{{latest_version}}</version>
34+
<scope>test</scope>
35+
</dependency>
36+
```

mkdocs.yml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -84,6 +84,7 @@ nav:
8484
- modules/k3s.md
8585
- modules/kafka.md
8686
- modules/localstack.md
87+
- modules/milvus.md
8788
- modules/minio.md
8889
- modules/mockserver.md
8990
- modules/nginx.md

modules/milvus/build.gradle

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
description = "Testcontainers :: ActiveMQ"
2+
3+
dependencies {
4+
api project(':testcontainers')
5+
6+
testImplementation 'org.assertj:assertj-core:3.25.1'
7+
testImplementation 'io.milvus:milvus-sdk-java:2.3.4'
8+
}
Lines changed: 61 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,61 @@
1+
package org.testcontainers.milvus;
2+
3+
import org.testcontainers.containers.GenericContainer;
4+
import org.testcontainers.containers.wait.strategy.Wait;
5+
import org.testcontainers.utility.DockerImageName;
6+
import org.testcontainers.utility.MountableFile;
7+
8+
/**
9+
* Testcontainers implementation for Milvus.
10+
* <p>
11+
* Supported image: {@code milvusdb/milvus}
12+
* <p>
13+
* Exposed ports:
14+
* <ul>
15+
* <li>Management port: 9091</li>
16+
* <li>HTTP: 19530</li>
17+
* </ul>
18+
*/
19+
public class MilvusContainer extends GenericContainer<MilvusContainer> {
20+
21+
private static final DockerImageName DEFAULT_IMAGE_NAME = DockerImageName.parse("milvusdb/milvus");
22+
23+
private String etcdEndpoint;
24+
25+
public MilvusContainer(String image) {
26+
this(DockerImageName.parse(image));
27+
}
28+
29+
public MilvusContainer(DockerImageName dockerImageName) {
30+
super(dockerImageName);
31+
dockerImageName.assertCompatibleWith(DEFAULT_IMAGE_NAME);
32+
withExposedPorts(9091, 19530);
33+
waitingFor(Wait.forHttp("/healthz").forPort(9091));
34+
withCommand("milvus", "run", "standalone");
35+
withCopyFileToContainer(
36+
MountableFile.forClasspathResource("testcontainers/embedEtcd.yaml"),
37+
"/milvus/configs/embedEtcd.yaml"
38+
);
39+
withEnv("COMMON_STORAGETYPE", "local");
40+
}
41+
42+
@Override
43+
protected void configure() {
44+
if (this.etcdEndpoint == null) {
45+
withEnv("ETCD_USE_EMBED", "true");
46+
withEnv("ETCD_DATA_DIR", "/var/lib/milvus/etcd");
47+
withEnv("ETCD_CONFIG_PATH", "/milvus/configs/embedEtcd.yaml");
48+
} else {
49+
withEnv("ETCD_ENDPOINTS", this.etcdEndpoint);
50+
}
51+
}
52+
53+
public MilvusContainer withEtcdEndpoint(String etcdEndpoint) {
54+
this.etcdEndpoint = etcdEndpoint;
55+
return this;
56+
}
57+
58+
public String getEndpoint() {
59+
return "http://" + getHost() + ":" + getMappedPort(19530);
60+
}
61+
}

0 commit comments

Comments
 (0)