Explorar o código

Running tests with test containers

jianghua %!s(int64=4) %!d(string=hai) anos
pai
achega
0759497300

+ 13 - 2
pom.xml

@@ -135,7 +135,7 @@
         <dependency>
             <groupId>org.junit.jupiter</groupId>
             <artifactId>junit-jupiter</artifactId>
-            <version>5.5.2</version>
+            <version>5.6.2</version>
             <scope>test</scope>
         </dependency>
         <dependency>
@@ -163,7 +163,18 @@
             <artifactId>log4j-slf4j-impl</artifactId>
             <version>2.12.1</version>
         </dependency>
-
+        <dependency>
+            <groupId>org.testcontainers</groupId>
+            <artifactId>testcontainers</artifactId>
+            <version>1.14.3</version>
+            <scope>test</scope>
+        </dependency>
+        <dependency>
+            <groupId>org.testcontainers</groupId>
+            <artifactId>junit-jupiter</artifactId>
+            <version>1.14.3</version>
+            <scope>test</scope>
+        </dependency>
     </dependencies>
 
     <profiles>

+ 11 - 0
src/main/java/io/milvus/client/exception/InitializationException.java

@@ -0,0 +1,11 @@
+package io.milvus.client.exception;
+
+public class InitializationFailedException extends MilvusException {
+  private String host;
+  private Throwable cause;
+
+  public InitializationFailedException(String host, Throwable cause) {
+    super(false, cause);
+    this.host = host;
+  }
+}

+ 2 - 0
src/main/java/io/milvus/client/exception/MilvusException.java

@@ -0,0 +1,2 @@
+package io.milvus.client.exception;public class MilvusException {
+}

+ 4 - 0
src/main/java/io/milvus/client/exception/UnsupportedServerVersion.java

@@ -0,0 +1,4 @@
+package io.milvus.client.exception.UnsupportedServerVersion;
+
+public class UnsupportedServerVersion {
+}

+ 26 - 9
src/test/java/io/milvus/client/MilvusGrpcClientTest.java

@@ -22,6 +22,9 @@ package io.milvus.client;
 import com.google.common.util.concurrent.ListenableFuture;
 import org.apache.commons.text.RandomStringGenerator;
 import org.json.*;
+import org.testcontainers.containers.GenericContainer;
+import org.testcontainers.junit.jupiter.Container;
+import org.testcontainers.junit.jupiter.Testcontainers;
 
 import java.nio.ByteBuffer;
 import java.util.*;
@@ -33,6 +36,7 @@ import java.util.stream.LongStream;
 
 import static org.junit.jupiter.api.Assertions.*;
 
+@Testcontainers
 class MilvusClientTest {
 
   private MilvusClient client;
@@ -43,6 +47,23 @@ class MilvusClientTest {
   private int size;
   private int dimension;
 
+  @Container
+  private GenericContainer milvusContainer =
+      new GenericContainer("milvusdb/milvus:0.10.1-cpu-d072020-bd02b1")
+          .withExposedPorts(19530);
+
+  private ConnectParam.Builder connectParamBuilder() {
+    return connectParamBuilder(milvusContainer);
+  }
+
+  private ConnectParam.Builder connectParamBuilder(GenericContainer milvusContainer) {
+    return connectParamBuilder(milvusContainer.getHost(), milvusContainer.getFirstMappedPort());
+  }
+
+  private ConnectParam.Builder connectParamBuilder(String host, int port) {
+    return new ConnectParam.Builder().withHost(host).withPort(port);
+  }
+
   // Helper function that generates random float vectors
   static List<List<Float>> generateFloatVectors(int vectorCount, int dimension) {
     SplittableRandom splittableRandom = new SplittableRandom();
@@ -81,10 +102,8 @@ class MilvusClientTest {
 
   @org.junit.jupiter.api.BeforeEach
   void setUp() throws Exception {
-
     client = new MilvusGrpcClient();
-    ConnectParam connectParam =
-        new ConnectParam.Builder().withHost("localhost").withPort(19530).build();
+    ConnectParam connectParam = connectParamBuilder().build();
     client.connect(connectParam);
 
     generator = new RandomStringGenerator.Builder().withinRange('a', 'z').build();
@@ -109,11 +128,9 @@ class MilvusClientTest {
   @org.junit.jupiter.api.Test
   void idleTest() throws InterruptedException, ConnectFailedException {
     MilvusClient client = new MilvusGrpcClient();
-    ConnectParam connectParam =
-        new ConnectParam.Builder()
-            .withHost("localhost")
-            .withIdleTimeout(1, TimeUnit.SECONDS)
-            .build();
+    ConnectParam connectParam = connectParamBuilder()
+        .withIdleTimeout(1, TimeUnit.SECONDS)
+        .build();
     client.connect(connectParam);
     TimeUnit.SECONDS.sleep(2);
     // A new RPC would take the channel out of idle mode
@@ -156,7 +173,7 @@ class MilvusClientTest {
   @org.junit.jupiter.api.Test
   void connectUnreachableHost() {
     MilvusClient client = new MilvusGrpcClient();
-    ConnectParam connectParam = new ConnectParam.Builder().withHost("250.250.250.250").build();
+    ConnectParam connectParam = connectParamBuilder("250.250.250.250", 19530).build();
     assertThrows(ConnectFailedException.class, () -> client.connect(connectParam));
   }