Skip to content

Commit cd6b75c

Browse files
authored
Add testcases for alias interface spport database (milvus-io#1498)
Signed-off-by: yongpengli-z <yongpeng.li@zilliz.com>
1 parent 23c3a09 commit cd6b75c

14 files changed

Lines changed: 365 additions & 71 deletions

File tree

.github/workflows/java_sdk_ci_test.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@ jobs:
2828
run: |
2929
echo "build jar"
3030
git submodule update --init
31-
mvn clean versions:set -DnewVersion=2.5.5
31+
mvn clean versions:set -DnewVersion=2.6.0
3232
mvn clean install -Dmaven.test.skip=true
3333
3434
# - name: Test

tests/milvustestv2/src/main/java/com/zilliz/milvustestv2/common/BaseTest.java

Lines changed: 64 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -14,21 +14,22 @@
1414
import io.milvus.v2.common.IndexParam;
1515
import io.milvus.v2.service.collection.request.DropCollectionReq;
1616
import io.milvus.v2.service.collection.request.LoadCollectionReq;
17-
import io.milvus.v2.service.partition.request.CreatePartitionReq;
17+
import io.milvus.v2.service.collection.response.ListCollectionsResp;
18+
import io.milvus.v2.service.database.request.DropDatabaseReq;
19+
import io.milvus.v2.service.database.response.ListDatabasesResp;
1820
import io.milvus.v2.service.utility.request.CreateAliasReq;
1921
import io.milvus.v2.service.utility.request.DropAliasReq;
22+
import io.milvus.v2.service.utility.request.ListAliasesReq;
23+
import io.milvus.v2.service.utility.response.ListAliasResp;
2024
import io.milvus.v2.service.vector.request.InsertReq;
2125
import io.milvus.v2.service.vector.response.InsertResp;
2226
import lombok.extern.slf4j.Slf4j;
23-
import org.springframework.beans.factory.annotation.Autowired;
2427
import org.springframework.boot.test.context.SpringBootTest;
2528
import org.springframework.test.context.testng.AbstractTestNGSpringContextTests;
2629
import org.testng.annotations.AfterSuite;
2730
import org.testng.annotations.BeforeSuite;
2831
import org.testng.annotations.Parameters;
2932

30-
import java.net.URI;
31-
import java.util.ArrayList;
3233
import java.util.List;
3334

3435
/**
@@ -39,18 +40,19 @@
3940
@SpringBootTest(classes = Milvustestv2Application.class)
4041

4142
public class BaseTest extends AbstractTestNGSpringContextTests {
42-
public static MilvusClientV2 milvusClientV2 ;
43+
public static MilvusClientV2 milvusClientV2;
4344

4445
@Parameters()
4546
@BeforeSuite(alwaysRun = true)
4647
public void initCollection() {
4748
milvusClientV2 = new MilvusClientV2(ConnectConfig.builder()
48-
.uri( System.getProperty("uri")== null? PropertyFilesUtil.getRunValue("uri"):System.getProperty("uri"))
49+
.uri(System.getProperty("uri") == null ? PropertyFilesUtil.getRunValue("uri") : System.getProperty("uri"))
4950
.token("root:Milvus")
5051
.secure(false)
5152
.connectTimeoutMs(5000L)
5253
.build());
5354
logger.info("**************************************************BeforeSuit**********************");
55+
cleanAllData();
5456
milvusClientV2.dropAlias(DropAliasReq.builder().alias(CommonData.alias).build());
5557
milvusClientV2.dropCollection(DropCollectionReq.builder().collectionName(CommonData.defaultFloatVectorCollection).build());
5658
milvusClientV2.dropCollection(DropCollectionReq.builder().collectionName(CommonData.defaultBFloat16VectorCollection).build());
@@ -71,44 +73,74 @@ public void cleanTestData() {
7173
// milvusClientV2.dropCollection(DropCollectionReq.builder().collectionName(CommonData.defaultFloat16VectorCollection).build());
7274
// milvusClientV2.dropCollection(DropCollectionReq.builder().collectionName(CommonData.defaultBinaryVectorCollection).build());
7375
// milvusClientV2.dropCollection(DropCollectionReq.builder().collectionName(CommonData.defaultSparseFloatVectorCollection).build());
76+
// 清除所有数据
77+
cleanAllData();
7478
}
7579

76-
public void initFloatVectorCollectionForTest(){
77-
CommonFunction.createNewCollection(CommonData.dim,CommonData.defaultFloatVectorCollection, DataType.FloatVector);
80+
public void initFloatVectorCollectionForTest() {
81+
CommonFunction.createNewCollection(CommonData.dim, CommonData.defaultFloatVectorCollection, DataType.FloatVector);
7882
milvusClientV2.createAlias(CreateAliasReq.builder().collectionName(CommonData.defaultFloatVectorCollection).alias(CommonData.alias).build());
7983
// insert data
80-
List<JsonObject> jsonObjects = CommonFunction.generateDefaultData(0,CommonData.numberEntities, CommonData.dim,DataType.FloatVector);
84+
List<JsonObject> jsonObjects = CommonFunction.generateDefaultData(0, CommonData.numberEntities, CommonData.dim, DataType.FloatVector);
8185
InsertResp insert = milvusClientV2.insert(InsertReq.builder().collectionName(CommonData.defaultFloatVectorCollection).data(jsonObjects).build());
82-
CommonFunction.createVectorIndex(CommonData.defaultFloatVectorCollection,CommonData.fieldFloatVector, IndexParam.IndexType.AUTOINDEX, IndexParam.MetricType.L2);
86+
CommonFunction.createVectorIndex(CommonData.defaultFloatVectorCollection, CommonData.fieldFloatVector, IndexParam.IndexType.AUTOINDEX, IndexParam.MetricType.L2);
8387
milvusClientV2.loadCollection(LoadCollectionReq.builder().collectionName(CommonData.defaultFloatVectorCollection).build());
84-
log.info("insert default float vector collection:"+insert);
88+
log.info("insert default float vector collection:" + insert);
8589
// create partition
86-
CommonFunction.createPartition(CommonData.defaultFloatVectorCollection,CommonData.partitionNameA);
87-
CommonFunction.createPartition(CommonData.defaultFloatVectorCollection,CommonData.partitionNameB);
88-
CommonFunction.createPartition(CommonData.defaultFloatVectorCollection,CommonData.partitionNameC);
89-
List<JsonObject> jsonObjectsA = CommonFunction.generateDefaultData(0,CommonData.numberEntities, CommonData.dim,DataType.FloatVector);
90-
List<JsonObject> jsonObjectsB = CommonFunction.generateDefaultData(0,CommonData.numberEntities*2, CommonData.dim,DataType.FloatVector);
91-
List<JsonObject> jsonObjectsC = CommonFunction.generateDefaultData(0,CommonData.numberEntities*3, CommonData.dim,DataType.FloatVector);
92-
milvusClientV2.insert(InsertReq.builder().collectionName(CommonData.defaultFloatVectorCollection).partitionName(CommonData.partitionNameA).data(jsonObjectsA).build());
93-
milvusClientV2.insert(InsertReq.builder().collectionName(CommonData.defaultFloatVectorCollection).partitionName(CommonData.partitionNameB).data(jsonObjectsB).build());
94-
milvusClientV2.insert(InsertReq.builder().collectionName(CommonData.defaultFloatVectorCollection).partitionName(CommonData.partitionNameC).data(jsonObjectsC).build());
90+
CommonFunction.createPartition(CommonData.defaultFloatVectorCollection, CommonData.partitionNameA);
91+
CommonFunction.createPartition(CommonData.defaultFloatVectorCollection, CommonData.partitionNameB);
92+
CommonFunction.createPartition(CommonData.defaultFloatVectorCollection, CommonData.partitionNameC);
93+
List<JsonObject> jsonObjectsA = CommonFunction.generateDefaultData(0, CommonData.numberEntities, CommonData.dim, DataType.FloatVector);
94+
List<JsonObject> jsonObjectsB = CommonFunction.generateDefaultData(0, CommonData.numberEntities * 2, CommonData.dim, DataType.FloatVector);
95+
List<JsonObject> jsonObjectsC = CommonFunction.generateDefaultData(0, CommonData.numberEntities * 3, CommonData.dim, DataType.FloatVector);
96+
milvusClientV2.insert(InsertReq.builder().collectionName(CommonData.defaultFloatVectorCollection).partitionName(CommonData.partitionNameA).data(jsonObjectsA).build());
97+
milvusClientV2.insert(InsertReq.builder().collectionName(CommonData.defaultFloatVectorCollection).partitionName(CommonData.partitionNameB).data(jsonObjectsB).build());
98+
milvusClientV2.insert(InsertReq.builder().collectionName(CommonData.defaultFloatVectorCollection).partitionName(CommonData.partitionNameC).data(jsonObjectsC).build());
9599
}
96100

97-
public void initBF16VectorForTest(){
98-
CommonFunction.createNewCollection(CommonData.dim,CommonData.defaultBFloat16VectorCollection, DataType.BFloat16Vector);
99-
CommonFunction.createIndexAndInsertAndLoad(CommonData.defaultBFloat16VectorCollection,DataType.BFloat16Vector,true,CommonData.numberEntities);
101+
public void initBF16VectorForTest() {
102+
CommonFunction.createNewCollection(CommonData.dim, CommonData.defaultBFloat16VectorCollection, DataType.BFloat16Vector);
103+
CommonFunction.createIndexAndInsertAndLoad(CommonData.defaultBFloat16VectorCollection, DataType.BFloat16Vector, true, CommonData.numberEntities);
100104
}
101-
public void initFloat16VectorForTest(){
102-
CommonFunction.createNewCollection(CommonData.dim,CommonData.defaultFloat16VectorCollection, DataType.Float16Vector);
103-
CommonFunction.createIndexAndInsertAndLoad(CommonData.defaultFloat16VectorCollection,DataType.Float16Vector,true,CommonData.numberEntities);
105+
106+
public void initFloat16VectorForTest() {
107+
CommonFunction.createNewCollection(CommonData.dim, CommonData.defaultFloat16VectorCollection, DataType.Float16Vector);
108+
CommonFunction.createIndexAndInsertAndLoad(CommonData.defaultFloat16VectorCollection, DataType.Float16Vector, true, CommonData.numberEntities);
109+
}
110+
111+
public void initBinaryVectorForTest() {
112+
CommonFunction.createNewCollection(CommonData.dim, CommonData.defaultBinaryVectorCollection, DataType.BinaryVector);
113+
CommonFunction.createIndexAndInsertAndLoad(CommonData.defaultBinaryVectorCollection, DataType.BinaryVector, true, CommonData.numberEntities);
104114
}
105-
public void initBinaryVectorForTest(){
106-
CommonFunction.createNewCollection(CommonData.dim,CommonData.defaultBinaryVectorCollection, DataType.BinaryVector);
107-
CommonFunction.createIndexAndInsertAndLoad(CommonData.defaultBinaryVectorCollection,DataType.BinaryVector,true,CommonData.numberEntities);
115+
116+
public void initSparseVectorForTest() {
117+
CommonFunction.createNewCollection(CommonData.dim, CommonData.defaultSparseFloatVectorCollection, DataType.SparseFloatVector);
118+
CommonFunction.createIndexAndInsertAndLoad(CommonData.defaultSparseFloatVectorCollection, DataType.SparseFloatVector, true, CommonData.numberEntities);
108119
}
109120

110-
public void initSparseVectorForTest(){
111-
CommonFunction.createNewCollection(CommonData.dim,CommonData.defaultSparseFloatVectorCollection, DataType.SparseFloatVector);
112-
CommonFunction.createIndexAndInsertAndLoad(CommonData.defaultSparseFloatVectorCollection,DataType.SparseFloatVector,true,CommonData.numberEntities);
121+
public void cleanAllData(){
122+
// 清除所有数据
123+
ListDatabasesResp listDatabasesResp = milvusClientV2.listDatabases();
124+
List<String> databaseNames = listDatabasesResp.getDatabaseNames();
125+
for (String databaseName : databaseNames) {
126+
try {
127+
milvusClientV2.useDatabase(databaseName);
128+
ListCollectionsResp listCollectionsResp = milvusClientV2.listCollections();
129+
List<String> collectionNames = listCollectionsResp.getCollectionNames();
130+
for (String collectionName : collectionNames) {
131+
ListAliasResp listAliasResp = milvusClientV2.listAliases(ListAliasesReq.builder().collectionName(collectionName).build());
132+
List<String> aliasList = listAliasResp.getAlias();
133+
for (String alias : aliasList) {
134+
milvusClientV2.dropAlias(DropAliasReq.builder().alias(alias).build());
135+
}
136+
milvusClientV2.dropCollection(DropCollectionReq.builder().collectionName(collectionName).build());
137+
}
138+
} catch (InterruptedException e) {
139+
throw new RuntimeException(e);
140+
}
141+
if (!databaseName.equalsIgnoreCase("default")) {
142+
milvusClientV2.dropDatabase(DropDatabaseReq.builder().databaseName(databaseName).build());
143+
}
144+
}
113145
}
114146
}

tests/milvustestv2/src/main/java/com/zilliz/milvustestv2/common/CommonFunction.java

Lines changed: 108 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -275,6 +275,114 @@ public static String createNewCollection(int dim, String collectionName, DataTyp
275275
log.info("create collection:" + collectionName);
276276
return collectionName;
277277
}
278+
public static String createNewCollectionWithDatabase(int dim, String collectionName, DataType vectorType,String databaseName) {
279+
if (collectionName == null || collectionName.equals("")) {
280+
collectionName = "Collection_" + GenerateUtil.getRandomString(10);
281+
}
282+
CreateCollectionReq.FieldSchema fieldInt64 = CreateCollectionReq.FieldSchema.builder()
283+
.autoID(false)
284+
.dataType(io.milvus.v2.common.DataType.Int64)
285+
.isPrimaryKey(true)
286+
.name(CommonData.fieldInt64)
287+
.build();
288+
CreateCollectionReq.FieldSchema fieldInt32 = CreateCollectionReq.FieldSchema.builder()
289+
.dataType(DataType.Int32)
290+
.name(CommonData.fieldInt32)
291+
.isPrimaryKey(false)
292+
.build();
293+
CreateCollectionReq.FieldSchema fieldInt16 = CreateCollectionReq.FieldSchema.builder()
294+
.dataType(DataType.Int16)
295+
.name(CommonData.fieldInt16)
296+
.isPrimaryKey(false)
297+
.build();
298+
CreateCollectionReq.FieldSchema fieldInt8 = CreateCollectionReq.FieldSchema.builder()
299+
.dataType(DataType.Int8)
300+
.name(CommonData.fieldInt8)
301+
.isPrimaryKey(false)
302+
.build();
303+
CreateCollectionReq.FieldSchema fieldDouble = CreateCollectionReq.FieldSchema.builder()
304+
.dataType(DataType.Double)
305+
.name(CommonData.fieldDouble)
306+
.isPrimaryKey(false)
307+
.build();
308+
CreateCollectionReq.FieldSchema fieldArray = CreateCollectionReq.FieldSchema.builder()
309+
.dataType(DataType.Array)
310+
.name(CommonData.fieldArray)
311+
.elementType(DataType.Int64)
312+
.maxCapacity(100)
313+
.isPrimaryKey(false)
314+
.build();
315+
CreateCollectionReq.FieldSchema fieldBool = CreateCollectionReq.FieldSchema.builder()
316+
.dataType(DataType.Bool)
317+
.name(CommonData.fieldBool)
318+
.isPrimaryKey(false)
319+
.build();
320+
CreateCollectionReq.FieldSchema fieldVarchar = CreateCollectionReq.FieldSchema.builder()
321+
.dataType(DataType.VarChar)
322+
.name(CommonData.fieldVarchar)
323+
.isPrimaryKey(false)
324+
.maxLength(100)
325+
.build();
326+
CreateCollectionReq.FieldSchema fieldFloat = CreateCollectionReq.FieldSchema.builder()
327+
.dataType(DataType.Float)
328+
.name(CommonData.fieldFloat)
329+
.isPrimaryKey(false)
330+
.build();
331+
CreateCollectionReq.FieldSchema fieldJson = CreateCollectionReq.FieldSchema.builder()
332+
.dataType(DataType.JSON)
333+
.name(CommonData.fieldJson)
334+
.isPrimaryKey(false)
335+
.build();
336+
CreateCollectionReq.FieldSchema fieldVector = CreateCollectionReq.FieldSchema.builder()
337+
.dataType(vectorType)
338+
.isPrimaryKey(false)
339+
.build();
340+
if (vectorType == DataType.FloatVector) {
341+
fieldVector.setDimension(dim);
342+
fieldVector.setName(CommonData.fieldFloatVector);
343+
}
344+
if (vectorType == DataType.BinaryVector) {
345+
fieldVector.setDimension(dim);
346+
fieldVector.setName(CommonData.fieldBinaryVector);
347+
}
348+
if (vectorType == DataType.Float16Vector) {
349+
fieldVector.setDimension(dim);
350+
fieldVector.setName(CommonData.fieldFloat16Vector);
351+
}
352+
if (vectorType == DataType.BFloat16Vector) {
353+
fieldVector.setDimension(dim);
354+
fieldVector.setName(CommonData.fieldBF16Vector);
355+
}
356+
if (vectorType == DataType.SparseFloatVector) {
357+
fieldVector.setName(CommonData.fieldSparseVector);
358+
}
359+
List<CreateCollectionReq.FieldSchema> fieldSchemaList = new ArrayList<>();
360+
fieldSchemaList.add(fieldInt64);
361+
fieldSchemaList.add(fieldInt32);
362+
fieldSchemaList.add(fieldInt16);
363+
fieldSchemaList.add(fieldInt8);
364+
fieldSchemaList.add(fieldFloat);
365+
fieldSchemaList.add(fieldDouble);
366+
fieldSchemaList.add(fieldArray);
367+
fieldSchemaList.add(fieldBool);
368+
fieldSchemaList.add(fieldJson);
369+
fieldSchemaList.add(fieldVarchar);
370+
fieldSchemaList.add(fieldVector);
371+
CreateCollectionReq.CollectionSchema collectionSchema = CreateCollectionReq.CollectionSchema.builder()
372+
.fieldSchemaList(fieldSchemaList)
373+
.build();
374+
CreateCollectionReq createCollectionReq = CreateCollectionReq.builder()
375+
.collectionSchema(collectionSchema)
376+
.collectionName(collectionName)
377+
.enableDynamicField(false)
378+
.description("collection desc")
379+
.databaseName(databaseName)
380+
.numShards(1)
381+
.build();
382+
milvusClientV2.createCollection(createCollectionReq);
383+
log.info("create collection:" + collectionName);
384+
return collectionName;
385+
}
278386
public static String createNewCollectionWithDynamic(int dim, String collectionName, DataType vectorType) {
279387
if (collectionName == null || collectionName.equals("")) {
280388
collectionName = "Collection_" + GenerateUtil.getRandomString(10);

0 commit comments

Comments
 (0)