瀏覽代碼

modify failed testcases (#420)

Signed-off-by: yongpengli-z <yongpeng.li@zilliz.com>
yongpengli-z 2 年之前
父節點
當前提交
46da81a07b

+ 1 - 0
tests/milvustest/src/main/java/com/zilliz/milvustest/entity/FieldType.java

@@ -7,6 +7,7 @@ public enum FieldType {
   FLOAT_FIELD,
   BOOLEAN_FIELD,
   FLOAT_VECTOR_FIELD,
+  BINARY_VECTOR_FIELD,
   LONG_FIELD,
   STRING_PK_FIELD;
 }

+ 5 - 0
tests/milvustest/src/main/java/com/zilliz/milvustest/util/FileUtils.java

@@ -11,6 +11,7 @@ import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
 import java.io.*;
+import java.nio.ByteBuffer;
 import java.security.InvalidKeyException;
 import java.security.NoSuchAlgorithmException;
 import java.util.*;
@@ -93,6 +94,10 @@ public class FileUtils {
                 String[] strings = MathUtil.generateString(rows);
                 x.setFieldValue(Arrays.asList(strings));
               }
+              if (x.getFieldType().equals(FieldType.BINARY_VECTOR_FIELD)) {
+                List<int[]> ints = MathUtil.generateBinaryVectors(rows, dim);
+                x.setFieldValue(ints);
+              }
             });
     if (rowBased) {
 

+ 28 - 0
tests/milvustest/src/main/java/com/zilliz/milvustest/util/K8SUtils.java

@@ -0,0 +1,28 @@
+package com.zilliz.milvustest.util;
+
+import io.kubernetes.client.openapi.ApiClient;
+import io.kubernetes.client.util.ClientBuilder;
+import io.kubernetes.client.util.credentials.AccessTokenAuthentication;
+
+/**
+ * @Author yongpeng.li
+ * @Date 2023/1/3 17:23
+ */
+public class K8SUtils {
+    public static ApiClient getApiClient(){
+
+        String master = "https://devops.apiserver.zilliz.cc:6443/";
+        String oauthToken = "eyJhbGciOiJSUzI1NiIsImtpZCI6ImN1SjZtbE00dTJxUWE3RHhnUUQ3MjVONUVRY3NpWlgzc1FEN09iNVV5d2sifQ.eyJhdWQiOlsiaHR0cHM6Ly9rdWJlcm5ldGVzLmRlZmF1bHQuc3ZjLmNsdXN0ZXIubG9jYWwiXSwiZXhwIjo1MjU4NzE2MDU5LCJpYXQiOjE2NTg3MTk2NTksImlzcyI6Imh0dHBzOi8va3ViZXJuZXRlcy5kZWZhdWx0LnN2Yy5jbHVzdGVyLmxvY2FsIiwia3ViZXJuZXRlcy5pbyI6eyJuYW1lc3BhY2UiOiJxYSIsInNlcnZpY2VhY2NvdW50Ijp7Im5hbWUiOiJxYS1hZG1pbiIsInVpZCI6ImI3MWRkNmI4LTMxOGUtNGQzNi1hNjE1LWZmZDI1MGQ3NjI3MiJ9fSwibmJmIjoxNjU4NzE5NjU5LCJzdWIiOiJzeXN0ZW06c2VydmljZWFjY291bnQ6cWE6cWEtYWRtaW4ifQ.JwMQJ2bUKjXHSd2brWBKwKGlrtXTgZre1vJZ1j0hy5AK1JzhhC4QSfuU7QDdkksAF4xPPj7DJ31e2Qclvs3F4WviRBr0v8fYRDgEqNpSKdIJ9KGTqJEjD2UwsITJC4_P8sNKtX8yw4-eVitha7Bf2na7eorOQas-ebjGvNf4usUHGQh9eQDfR7DMebUn4dzJfE2ArQn5Ua6dKNkdO-7uQpOuqPIKytEfzIk_ZrWmbWTbzNMaq2z-zb_yd8iTU3sfpMaZLgOAkLtl1XxnDwvFMapJJcPFEqPMVvR98O7BkRkobQ4SngZmwEui9U2I-ann8cS_yjKB4DeajCxCvCoJBw";
+
+        ApiClient apiClient = new ClientBuilder()
+                //设置 k8s 服务所在 ip地址
+                .setBasePath(master)
+                //是否开启 ssl 验证
+                .setVerifyingSsl(false)
+                //插入访问 连接用的 Token
+                .setAuthentication(new AccessTokenAuthentication(oauthToken))
+                .build();
+        io.kubernetes.client.openapi.Configuration.setDefaultApiClient(apiClient);
+        return apiClient;
+    }
+}

+ 16 - 0
tests/milvustest/src/main/java/com/zilliz/milvustest/util/MathUtil.java

@@ -2,6 +2,7 @@ package com.zilliz.milvustest.util;
 
 import java.io.File;
 import java.math.BigDecimal;
+import java.nio.ByteBuffer;
 import java.util.*;
 
 public class MathUtil {
@@ -119,6 +120,21 @@ public class MathUtil {
     return doubleList;
   }
 
+  public static List<int[]> generateBinaryVectors(int num, int dim) {
+    Random random=new Random();
+    List<int[]> intList = new ArrayList<>(num);
+    for (int j = 0; j < num; j++) {
+      int[] intvalue = new int[dim/8];
+      for (int i = 0; i < dim/8; i++) {
+
+        intvalue[i] = random.nextInt(100);
+      }
+      intList.add(intvalue);
+    }
+    return intList;
+
+  }
+
   public static Boolean[] generateBoolean(int num) {
     Boolean[] booleans = new Boolean[num];
     Random random = new Random();

+ 36 - 0
tests/milvustest/src/test/java/com/zilliz/milvustest/K8STEST.java

@@ -0,0 +1,36 @@
+package com.zilliz.milvustest;
+
+import com.zilliz.milvustest.util.K8SUtils;
+import io.kubernetes.client.openapi.ApiClient;
+import io.kubernetes.client.openapi.ApiException;
+import io.kubernetes.client.openapi.Configuration;
+import io.kubernetes.client.openapi.apis.CoreV1Api;
+import io.kubernetes.client.openapi.models.V1Pod;
+import io.kubernetes.client.openapi.models.V1PodList;
+import io.kubernetes.client.util.ClientBuilder;
+import io.kubernetes.client.util.KubeConfig;
+
+import java.io.FileNotFoundException;
+import java.io.FileReader;
+import java.io.IOException;
+
+/**
+ * @Author yongpeng.li
+ * @Date 2023/1/3 17:27
+ */
+public class K8STEST {
+
+    public static void main(String[] args) throws ApiException, IOException {
+        ApiClient client = ClientBuilder.kubeconfig(KubeConfig.loadKubeConfig(new FileReader("src/test/java/resources/config/k8s.config"))).build();
+        Configuration.setDefaultApiClient(client);
+        CoreV1Api api = new CoreV1Api();
+        V1PodList list = api.listPodForAllNamespaces(null,null,null,null,null,null,null,null,null,null);
+        StringBuilder str = new StringBuilder();
+        for (V1Pod item : list.getItems()) {
+            str.append(item.toString());
+            str.append("\n");
+        }
+        System.out.println(str.toString());
+
+    }
+}

+ 1 - 1
tests/milvustest/src/test/java/com/zilliz/milvustest/collection/GetCollectionStatisticsTest.java

@@ -30,7 +30,7 @@ public class GetCollectionStatisticsTest extends BaseTest {
     Assert.assertEquals(respCollectionStatistics.getStatus().intValue(), 0);
     GetCollStatResponseWrapper wrapperCollectionStatistics =
         new GetCollStatResponseWrapper(respCollectionStatistics.getData());
-    Assert.assertEquals(wrapperCollectionStatistics.getRowCount(), 0);
+    Assert.assertEquals(wrapperCollectionStatistics.getRowCount(), 2000);
     System.out.println(wrapperCollectionStatistics);
   }
 

+ 36 - 1
tests/milvustest/src/test/java/com/zilliz/milvustest/index/CreateIndexTest.java

@@ -3,11 +3,16 @@ package com.zilliz.milvustest.index;
 import com.zilliz.milvustest.common.BaseTest;
 import com.zilliz.milvustest.common.CommonData;
 import com.zilliz.milvustest.common.CommonFunction;
+import io.milvus.grpc.MutationResult;
+import io.milvus.grpc.QueryResults;
 import io.milvus.param.IndexType;
 import io.milvus.param.MetricType;
 import io.milvus.param.R;
 import io.milvus.param.RpcStatus;
 import io.milvus.param.collection.DropCollectionParam;
+import io.milvus.param.collection.LoadCollectionParam;
+import io.milvus.param.dml.InsertParam;
+import io.milvus.param.dml.QueryParam;
 import io.milvus.param.index.CreateIndexParam;
 import io.milvus.param.index.DropIndexParam;
 import io.qameta.allure.*;
@@ -17,6 +22,9 @@ import org.testng.annotations.BeforeClass;
 import org.testng.annotations.DataProvider;
 import org.testng.annotations.Test;
 
+import java.util.Arrays;
+import java.util.List;
+
 import static com.zilliz.milvustest.util.MathUtil.combine;
 
 @Epic("Index")
@@ -304,7 +312,7 @@ public class CreateIndexTest extends BaseTest {
                     CreateIndexParam.newBuilder()
                             .withCollectionName(newCollection)
                             .withFieldName("book_id")
-                            .withIndexName(CommonData.defaultIndex)
+                            .withIndexName("book_id_index")
                             .withMetricType(MetricType.IP)
                             .withIndexType(IndexType.HNSW)
                             .withExtraParam(CommonFunction.provideExtraParam(IndexType.HNSW))
@@ -312,9 +320,36 @@ public class CreateIndexTest extends BaseTest {
                             .withSyncWaitingTimeout(30L)
                             .withSyncWaitingInterval(500L)
                             .build());
+
+    milvusClient.createIndex(
+            CreateIndexParam.newBuilder()
+                    .withCollectionName(newCollection)
+                    .withFieldName(CommonData.defaultVectorField)
+                    .withIndexName(CommonData.defaultIndex)
+                    .withMetricType(MetricType.IP)
+                    .withIndexType(IndexType.HNSW)
+                    .withExtraParam(CommonFunction.provideExtraParam(IndexType.HNSW))
+                    .withSyncMode(Boolean.TRUE)
+                    .withSyncWaitingTimeout(30L)
+                    .withSyncWaitingInterval(500L)
+                    .build());
     System.out.println("Create index" + rpcStatusR);
     Assert.assertEquals(rpcStatusR.getStatus().intValue(), 0);
     Assert.assertEquals(rpcStatusR.getData().getMsg(), "Success");
+    List<InsertParam.Field> fields = CommonFunction.generateData(1000);
+    R<MutationResult> insert = milvusClient.insert(InsertParam.newBuilder().withCollectionName(newCollection)
+            .withFields(fields).build());
+    logger.info("insert result:{}",insert);
+    R<RpcStatus> rpcStatusR1 = milvusClient.loadCollection(LoadCollectionParam.newBuilder().withCollectionName(newCollection).withSyncLoadWaitingInterval(500L)
+            .withSyncLoadWaitingTimeout(30L)
+            .build());
+    logger.info("Load result:{}",rpcStatusR1);
+    R<QueryResults> query = milvusClient.query(QueryParam.newBuilder()
+            .withCollectionName(newCollection)
+            .withExpr("book_id in [1,2,3,4,5,6,7]")
+            .withOutFields(Arrays.asList("book_id", "word_count"))
+            .build());
+    logger.info("query:{}",query);
     milvusClient.dropCollection(
             DropCollectionParam.newBuilder().withCollectionName(newCollection).build());
   }

+ 64 - 0
tests/milvustest/src/test/java/com/zilliz/milvustest/search/SearchTest.java

@@ -1666,4 +1666,68 @@ public class SearchTest extends BaseTest {
     Assert.assertTrue(searchResultsR.getException().getMessage().contains("cannot parse expression"));
 
   }
+
+  public long data1=0L;
+  public long data2=0L;
+
+  @Severity(SeverityLevel.BLOCKER)
+  @Test(
+          description =
+                  "Search with pagination(offset=0)",groups = {"Smoke"})
+  public void intPKAndFloatVectorSearchWithPagination() {
+    Integer SEARCH_K = 4; // TopK
+    String SEARCH_PARAM = "{\"nprobe\":10,\"offset\":0}";
+    List<String> search_output_fields = Arrays.asList("book_id");
+    List<List<Float>> search_vectors = Arrays.asList(Arrays.asList(MathUtil.generateFloat(128)));
+    SearchParam searchParam =
+            SearchParam.newBuilder()
+                    .withCollectionName(CommonData.defaultCollection)
+                    .withMetricType(MetricType.L2)
+                    .withOutFields(search_output_fields)
+                    .withTopK(SEARCH_K)
+                    .withVectors(search_vectors)
+                    .withVectorFieldName(CommonData.defaultVectorField)
+                    .withParams(SEARCH_PARAM)
+                    .withConsistencyLevel(ConsistencyLevelEnum.BOUNDED)
+                    .build();
+    R<SearchResults> searchResultsR = milvusClient.search(searchParam);
+    Assert.assertEquals(searchResultsR.getStatus().intValue(), 0);
+    SearchResultsWrapper searchResultsWrapper =
+            new SearchResultsWrapper(searchResultsR.getData().getResults());
+    Assert.assertEquals(searchResultsWrapper.getFieldData("book_id", 0).size(), 4);
+    data1=searchResultsR.getData().getResults().getIds().getIntId().getData(2);
+    data2=searchResultsR.getData().getResults().getIds().getIntId().getData(3);
+  }
+
+
+  @Severity(SeverityLevel.BLOCKER)
+  @Test(
+          description =
+                  "Search with pagination.",
+          groups = {"Smoke"},dependsOnMethods = "intPKAndFloatVectorSearchWithPagination")
+  public void intPKAndFloatVectorSearchWithPagination2() {
+    Integer SEARCH_K = 4; // TopK
+    String SEARCH_PARAM = "{\"nprobe\":10,\"offset\":2}";
+    List<String> search_output_fields = Arrays.asList("book_id");
+    List<List<Float>> search_vectors = Arrays.asList(Arrays.asList(MathUtil.generateFloat(128)));
+    SearchParam searchParam =
+            SearchParam.newBuilder()
+                    .withCollectionName(CommonData.defaultCollection)
+                    .withMetricType(MetricType.L2)
+                    .withOutFields(search_output_fields)
+                    .withTopK(SEARCH_K)
+                    .withVectors(search_vectors)
+                    .withVectorFieldName(CommonData.defaultVectorField)
+                    .withParams(SEARCH_PARAM)
+                    .withConsistencyLevel(ConsistencyLevelEnum.BOUNDED)
+                    .build();
+    R<SearchResults> searchResultsR = milvusClient.search(searchParam);
+    Assert.assertEquals(searchResultsR.getStatus().intValue(), 0);
+    SearchResultsWrapper searchResultsWrapper =
+            new SearchResultsWrapper(searchResultsR.getData().getResults());
+    Assert.assertEquals(searchResultsWrapper.getFieldData("book_id", 0).size(), 4);
+    Assert.assertEquals(searchResultsR.getData().getResults().getIds().getIntId().getData(0),data1);
+    Assert.assertEquals(searchResultsR.getData().getResults().getIds().getIntId().getData(1),data2);
+    logger.info(searchResultsR.getData().getResults().toString());
+  }
 }

+ 19 - 0
tests/milvustest/src/test/java/resources/config/k8s.config

@@ -0,0 +1,19 @@
+apiVersion: v1
+clusters:
+- cluster:
+    insecure-skip-tls-verify: true
+    server: https://devops.apiserver.zilliz.cc:6443
+  name: kubernetes
+contexts:
+- context:
+    cluster: kubernetes
+    namespace: qa
+    user: qa-admin
+  name: qa
+current-context: qa
+kind: Config
+preferences: {}
+users:
+- name: qa-admin
+  user:
+    token: eyJhbGciOiJSUzI1NiIsImtpZCI6ImN1SjZtbE00dTJxUWE3RHhnUUQ3MjVONUVRY3NpWlgzc1FEN09iNVV5d2sifQ.eyJhdWQiOlsiaHR0cHM6Ly9rdWJlcm5ldGVzLmRlZmF1bHQuc3ZjLmNsdXN0ZXIubG9jYWwiXSwiZXhwIjo1MjU4NzE2MDU5LCJpYXQiOjE2NTg3MTk2NTksImlzcyI6Imh0dHBzOi8va3ViZXJuZXRlcy5kZWZhdWx0LnN2Yy5jbHVzdGVyLmxvY2FsIiwia3ViZXJuZXRlcy5pbyI6eyJuYW1lc3BhY2UiOiJxYSIsInNlcnZpY2VhY2NvdW50Ijp7Im5hbWUiOiJxYS1hZG1pbiIsInVpZCI6ImI3MWRkNmI4LTMxOGUtNGQzNi1hNjE1LWZmZDI1MGQ3NjI3MiJ9fSwibmJmIjoxNjU4NzE5NjU5LCJzdWIiOiJzeXN0ZW06c2VydmljZWFjY291bnQ6cWE6cWEtYWRtaW4ifQ.JwMQJ2bUKjXHSd2brWBKwKGlrtXTgZre1vJZ1j0hy5AK1JzhhC4QSfuU7QDdkksAF4xPPj7DJ31e2Qclvs3F4WviRBr0v8fYRDgEqNpSKdIJ9KGTqJEjD2UwsITJC4_P8sNKtX8yw4-eVitha7Bf2na7eorOQas-ebjGvNf4usUHGQh9eQDfR7DMebUn4dzJfE2ArQn5Ua6dKNkdO-7uQpOuqPIKytEfzIk_ZrWmbWTbzNMaq2z-zb_yd8iTU3sfpMaZLgOAkLtl1XxnDwvFMapJJcPFEqPMVvR98O7BkRkobQ4SngZmwEui9U2I-ann8cS_yjKB4DeajCxCvCoJBw

+ 4 - 3
tests/milvustest/src/test/java/resources/run.properties

@@ -1,13 +1,14 @@
-milvusHost=10.100.31.105
+milvusHost=127.0.0.1
 milvusPort=19530
 ScenarioDesc=CI
 BuildId=1d
 #enviroment
-milvusV=2.1.0
-milvusJdkJavaV=2.1.0
+milvusV=2.2.2
+milvusJdkJavaV=2.2.0
 #minio
 minioHost=http://127.0.0.1:9000
 accesskey=minioadmin
 secretkey=minioadmin
+#https://devops.apiserver.zilliz.cc:6443