Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
19 changes: 19 additions & 0 deletions src/main/java/io/weaviate/client/v1/misc/model/RQConfig.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
package io.weaviate.client.v1.misc.model;

import lombok.AccessLevel;
import lombok.Builder;
import lombok.EqualsAndHashCode;
import lombok.Getter;
import lombok.ToString;
import lombok.experimental.FieldDefaults;

@Getter
@Builder
@ToString
@EqualsAndHashCode
@FieldDefaults(makeFinal = true, level = AccessLevel.PRIVATE)
public class RQConfig {
Boolean enabled;
Long bits;
Long rescoreLimit;
}
Original file line number Diff line number Diff line change
Expand Up @@ -30,14 +30,14 @@ public class VectorIndexConfig {
PQConfig pq;
BQConfig bq;
SQConfig sq;
RQConfig rq;

@SerializedName("multivector")
MultiVectorConfig multiVector;

public enum FilterStrategy {
@SerializedName("sweeping")
SWEEPING,
@SerializedName("acorn")
SWEEPING, @SerializedName("acorn")
ACORN;
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -3,13 +3,12 @@
public class WeaviateVersion {

// docker image version
public static final String WEAVIATE_IMAGE = "1.31.0";
public static final String WEAVIATE_IMAGE = "1.32.0-rc.1-175d482";

// to be set according to weaviate docker image
public static final String EXPECTED_WEAVIATE_VERSION = "1.31.0";
public static final String EXPECTED_WEAVIATE_VERSION = "1.32.0-rc.1";
// to be set according to weaviate docker image
public static final String EXPECTED_WEAVIATE_GIT_HASH = "79499d6";
public static final String EXPECTED_WEAVIATE_GIT_HASH = "175d482";

private WeaviateVersion() {
}
private WeaviateVersion() {}
}

Large diffs are not rendered by default.

Large diffs are not rendered by default.

Original file line number Diff line number Diff line change
Expand Up @@ -337,7 +337,7 @@ public static void testListExistingBackups(List<Supplier<Result<BackupCreateResp

assertThat(listResult.getError()).isNull();
assertThat(listResult.getResult()).isNotNull()
.hasSize(2);
.hasSizeGreaterThan(2);
}

public static void testFailOnCreateBackupOnNotExistingBackend(Supplier<Result<BackupCreateResponse>> supplierCreate) {
Expand Down Expand Up @@ -664,10 +664,12 @@ private static void waitForCreateStatus(Supplier<Result<BackupCreateStatusRespon
* @param result Any Result object from a request.
*/
private static void skipIfNotImplemented(Result<?> result) {
assumeTrue(
"this operation is not implemented on the server",
result.getError().getMessages().stream()
.noneMatch(err -> err.getMessage().toLowerCase().contains("not implemented"))
);
if (result.hasErrors()) {
assumeTrue(
"this operation is not implemented on the server",
result.getError().getMessages().stream()
.noneMatch(err -> err.getMessage().toLowerCase().contains("not implemented"))
);
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@
import io.weaviate.client.v1.data.model.WeaviateObject;
import io.weaviate.client.v1.misc.model.BQConfig;
import io.weaviate.client.v1.misc.model.SQConfig;
import io.weaviate.client.v1.misc.model.RQConfig;
import io.weaviate.client.v1.misc.model.VectorIndexConfig;
import io.weaviate.client.v1.schema.model.Property;
import io.weaviate.client.v1.schema.model.WeaviateClass;
Expand All @@ -20,10 +21,10 @@
public class ClientBatchGrpcCreateTestSuite {

public static void shouldCreateBatch(WeaviateClient client,
Function<WeaviateClass, Result<Boolean>> createClass,
Function<WeaviateObject[], Result<ObjectGetResponse[]>> batchCreate,
Function<WeaviateObject, Result<List<WeaviateObject>>> fetchObject,
Function<String, Result<Boolean>> deleteClass) {
Function<WeaviateClass, Result<Boolean>> createClass,
Function<WeaviateObject[], Result<ObjectGetResponse[]>> batchCreate,
Function<WeaviateObject, Result<List<WeaviateObject>>> fetchObject,
Function<String, Result<Boolean>> deleteClass) {

testSuite t = new testSuite(client, createClass, batchCreate, fetchObject, deleteClass);

Expand All @@ -36,6 +37,7 @@ public static void shouldCreateBatch(WeaviateClient client,
t.testCreateBatchWithMultiReferenceWithNested();
t.testCreateBatchWithFlatVectorIndex();
t.testCreateBatchWithHNSWSQVectorIndex();
t.testCreateBatchWithHNSWRQVectorIndex();
}

private static class testSuite {
Expand All @@ -47,8 +49,9 @@ private static class testSuite {
private final Function<String, Result<Boolean>> deleteClass;

public testSuite(WeaviateClient client, Function<WeaviateClass, Result<Boolean>> createClass,
Function<WeaviateObject[], Result<ObjectGetResponse[]>> batchCreate, Function<WeaviateObject, Result<List<WeaviateObject>>> fetchObject,
Function<String, Result<Boolean>> deleteClass) {
Function<WeaviateObject[], Result<ObjectGetResponse[]>> batchCreate,
Function<WeaviateObject, Result<List<WeaviateObject>>> fetchObject,
Function<String, Result<Boolean>> deleteClass) {
this.client = client;
this.createClass = createClass;
this.batchCreate = batchCreate;
Expand All @@ -57,7 +60,8 @@ public testSuite(WeaviateClient client, Function<WeaviateClass, Result<Boolean>>
}

public void testCreateBatchWithReferenceWithoutNested() {
WeaviateTestGenerics.AllPropertiesSchema testData = new WeaviateTestGenerics.AllPropertiesSchema();
WeaviateTestGenerics.AllPropertiesSchema testData =
new WeaviateTestGenerics.AllPropertiesSchema();
// create ref class and populate objects
testData.createRefClassesWithObjects(client);
// create all properties class
Expand All @@ -70,7 +74,8 @@ public void testCreateBatchWithReferenceWithoutNested() {
}

public void testCreateBatchWithMultiReferenceWithoutNested() {
WeaviateTestGenerics.AllPropertiesSchema testData = new WeaviateTestGenerics.AllPropertiesSchema();
WeaviateTestGenerics.AllPropertiesSchema testData =
new WeaviateTestGenerics.AllPropertiesSchema();
// create ref class and populate objects
testData.createRefClassesWithObjects(client);
// create all properties class
Expand All @@ -83,7 +88,8 @@ public void testCreateBatchWithMultiReferenceWithoutNested() {
}

public void testCreateBatchWithReferenceWithNested() {
WeaviateTestGenerics.AllPropertiesSchema testData = new WeaviateTestGenerics.AllPropertiesSchema();
WeaviateTestGenerics.AllPropertiesSchema testData =
new WeaviateTestGenerics.AllPropertiesSchema();
// create ref class and populate objects
testData.createRefClassesWithObjects(client);
// create all properties class
Expand All @@ -96,7 +102,8 @@ public void testCreateBatchWithReferenceWithNested() {
}

public void testCreateBatchWithMultiReferenceWithNested() {
WeaviateTestGenerics.AllPropertiesSchema testData = new WeaviateTestGenerics.AllPropertiesSchema();
WeaviateTestGenerics.AllPropertiesSchema testData =
new WeaviateTestGenerics.AllPropertiesSchema();
// create ref class and populate objects
testData.createRefClassesWithObjects(client);
// create all properties class
Expand All @@ -109,24 +116,29 @@ public void testCreateBatchWithMultiReferenceWithNested() {
}

public void testCreateBatch(String vectorIndexType, VectorIndexConfig vectorIndexConfig) {
WeaviateTestGenerics.AllPropertiesSchema testData = new WeaviateTestGenerics.AllPropertiesSchema();
WeaviateTestGenerics.AllPropertiesSchema testData =
new WeaviateTestGenerics.AllPropertiesSchema();
String className = testData.CLASS_NAME;
List<Property> properties = testData.properties();
WeaviateObject[] objects = testData.objects();
testCreateBatch(className, properties, objects, vectorIndexType, vectorIndexConfig);
}

public void testCreateBatchWithFlatVectorIndex() {
VectorIndexConfig vectorIndexConfig = VectorIndexConfig.builder()
.bq(BQConfig.builder().enabled(true).build())
.build();
VectorIndexConfig vectorIndexConfig =
VectorIndexConfig.builder().bq(BQConfig.builder().enabled(true).build()).build();
testCreateBatch("flat", vectorIndexConfig);
}

public void testCreateBatchWithHNSWSQVectorIndex() {
VectorIndexConfig vectorIndexConfig = VectorIndexConfig.builder()
.sq(SQConfig.builder().enabled(true).build())
.build();
VectorIndexConfig vectorIndexConfig =
VectorIndexConfig.builder().sq(SQConfig.builder().enabled(true).build()).build();
testCreateBatch("hnsw", vectorIndexConfig);
}

public void testCreateBatchWithHNSWRQVectorIndex() {
VectorIndexConfig vectorIndexConfig =
VectorIndexConfig.builder().rq(RQConfig.builder().enabled(true).build()).build();
testCreateBatch("hnsw", vectorIndexConfig);
}

Expand All @@ -135,66 +147,62 @@ public void testCreateBatch() {
}

public void testCreateBatchWithNested() {
WeaviateTestGenerics.AllPropertiesSchema testData = new WeaviateTestGenerics.AllPropertiesSchema();
WeaviateTestGenerics.AllPropertiesSchema testData =
new WeaviateTestGenerics.AllPropertiesSchema();
String className = testData.CLASS_NAME;
List<Property> properties = testData.propertiesWithNestedObject();
WeaviateObject[] objects = testData.objectsWithNestedObject();
testCreateBatch(className, properties, objects);
}

public void testCreateBatchWithNestedAndNestArrayObject() {
WeaviateTestGenerics.AllPropertiesSchema testData = new WeaviateTestGenerics.AllPropertiesSchema();
WeaviateTestGenerics.AllPropertiesSchema testData =
new WeaviateTestGenerics.AllPropertiesSchema();
String className = testData.CLASS_NAME;
List<Property> properties = testData.propertiesWithNestedObjectAndNestedArrayObject();
WeaviateObject[] objects = testData.objectsWithNestedObjectAndNestedArrayObject();
testCreateBatch(className, properties, objects);
}

public void testCreateBatch(String className, List<Property> properties, WeaviateObject[] objects) {
public void testCreateBatch(String className, List<Property> properties,
WeaviateObject[] objects) {
testCreateBatch(className, properties, objects, null, null);
}

public void testCreateBatch(String className, List<Property> properties, WeaviateObject[] objects,
String vectorIndexType, VectorIndexConfig vectorIndexConfig) {
public void testCreateBatch(String className, List<Property> properties,
WeaviateObject[] objects, String vectorIndexType, VectorIndexConfig vectorIndexConfig) {
// create schema
WeaviateClass.WeaviateClassBuilder weaviateClassBuilder = WeaviateClass.builder()
.className(className)
.properties(properties);
WeaviateClass.WeaviateClassBuilder weaviateClassBuilder =
WeaviateClass.builder().className(className).properties(properties);
if (StringUtils.isNotBlank(vectorIndexType) && vectorIndexConfig != null) {
weaviateClassBuilder.vectorIndexType(vectorIndexType).vectorIndexConfig(vectorIndexConfig);
}
Result<Boolean> createResult = this.createClass.apply(weaviateClassBuilder.build());
assertThat(createResult).isNotNull()
.returns(false, Result::hasErrors)
.returns(true, Result::getResult);
assertThat(createResult).isNotNull().returns(false, Result::hasErrors).returns(true,
Result::getResult);

Result<ObjectGetResponse[]> result = this.batchCreate.apply(objects);
assertThat(result).isNotNull()
.returns(false, Result::hasErrors)
.extracting(Result::getResult).asInstanceOf(ARRAY)
.hasSize(objects.length);
assertThat(result).isNotNull().returns(false, Result::hasErrors).extracting(Result::getResult)
.asInstanceOf(ARRAY).hasSize(objects.length);

for (WeaviateObject obj : objects) {
Result<List<WeaviateObject>> resultObj = fetchObject.apply(obj);
assertThat(resultObj).isNotNull()
.returns(false, Result::hasErrors)
.extracting(Result::getResult).isNotNull()
.extracting(r -> r.get(0)).isNotNull()
.satisfies(o -> {
assertThat(o.getId()).isEqualTo(obj.getId());
assertThat(o.getVector()).isNotEmpty();
assertThat(o.getProperties()).isNotNull()
.extracting(Map::size).isEqualTo(obj.getProperties().size());
obj.getProperties().keySet().forEach(propName -> {
assertThat(o.getProperties().get(propName)).isNotNull();
assertThat(resultObj).isNotNull().returns(false, Result::hasErrors)
.extracting(Result::getResult).isNotNull().extracting(r -> r.get(0)).isNotNull()
.satisfies(o -> {
assertThat(o.getId()).isEqualTo(obj.getId());
assertThat(o.getVector()).isNotEmpty();
assertThat(o.getProperties()).isNotNull().extracting(Map::size)
.isEqualTo(obj.getProperties().size());
obj.getProperties().keySet().forEach(propName -> {
assertThat(o.getProperties().get(propName)).isNotNull();
});
});
});
}
// clean up
Result<Boolean> delete = this.deleteClass.apply(className);
assertThat(delete).isNotNull()
.returns(false, Result::hasErrors)
.extracting(Result::getResult).isEqualTo(Boolean.TRUE);
assertThat(delete).isNotNull().returns(false, Result::hasErrors).extracting(Result::getResult)
.isEqualTo(Boolean.TRUE);
}
}
}