Skip to content

Commit b35cd87

Browse files
committed
test: parametrize number of failed/succeeded objects
1 parent 61ac2cf commit b35cd87

2 files changed

Lines changed: 46 additions & 23 deletions

File tree

pom.xml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -239,6 +239,7 @@
239239
<artifactId>maven-surefire-plugin</artifactId>
240240
<version>2.22.2</version>
241241
<configuration>
242+
<trimStackTrace>false</trimStackTrace>
242243
<argLine>
243244
<!--
244245
Gson (used for JSON serialization) utilizes reflection and needs to be able to access private fields of
Lines changed: 45 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,17 @@
11
package io.weaviate.client.v1.batch.api;
22

3+
import java.util.ArrayList;
34
import java.util.Arrays;
45
import java.util.List;
56
import java.util.stream.Collectors;
67

8+
import org.apache.http.HttpStatus;
79
import org.assertj.core.api.Assertions;
810
import org.junit.Test;
11+
import org.junit.runner.RunWith;
912

10-
import com.github.dockerjava.zerodep.shaded.org.apache.hc.core5.http.HttpStatus;
13+
import com.jparams.junit4.JParamsTestRunner;
14+
import com.jparams.junit4.data.DataMethod;
1115

1216
import io.weaviate.client.base.Result;
1317
import io.weaviate.client.base.WeaviateError;
@@ -16,26 +20,35 @@
1620
import io.weaviate.client.v1.batch.model.ObjectGetResponse;
1721
import io.weaviate.client.v1.data.model.WeaviateObject;
1822

23+
@RunWith(JParamsTestRunner.class)
1924
public class ObjectsBatcherTest {
25+
public static Object[][] batchReplyTestCases() {
26+
return new Object[][] {
27+
{ 1, 2 },
28+
{ 0, 3 },
29+
{ 3, 0 },
30+
{ 2, 2 },
31+
};
32+
}
33+
34+
@DataMethod(source = ObjectsBatcherTest.class, method = "batchReplyTestCases")
2035
@Test
21-
public void test_resultFromBatchObjectsReply() {
36+
public void test_resultFromBatchObjectsReply(int wantSucceed, int wantFail) {
2237
// Arrange
23-
List<WeaviateObject> batch = Arrays.asList(
24-
WeaviateObject.builder().id("id-0").build(),
25-
WeaviateObject.builder().id("id-1").build(),
26-
WeaviateObject.builder().id("id-2").build());
27-
WeaviateProtoBatch.BatchObjectsReply reply = WeaviateProtoBatch.BatchObjectsReply.newBuilder()
28-
.addAllErrors(Arrays.asList(
29-
WeaviateProtoBatch.BatchObjectsReply.BatchError.newBuilder()
30-
.setIndex(0).setError("error-0")
31-
.build(),
32-
WeaviateProtoBatch.BatchObjectsReply.BatchError.newBuilder()
33-
.setIndex(1).setError("error-1")
34-
.build()))
35-
.build();
36-
37-
// Act
38-
Result<ObjectGetResponse[]> got = ObjectsBatcher.resultFromBatchObjectsReply(reply, batch);
38+
List<WeaviateObject> batch = new ArrayList<>();
39+
int total = wantSucceed + wantFail;
40+
for (int i = 0; i < total; i++) {
41+
batch.add(WeaviateObject.builder().id("id-" + i).build());
42+
}
43+
44+
WeaviateProtoBatch.BatchObjectsReply.Builder reply = WeaviateProtoBatch.BatchObjectsReply.newBuilder();
45+
for (int i = 0; i < wantFail; i++) {
46+
reply.addErrors(WeaviateProtoBatch.BatchObjectsReply.BatchError.newBuilder()
47+
.setIndex(i).setError("error-" + i)
48+
.build());
49+
}
50+
51+
Result<ObjectGetResponse[]> got = ObjectsBatcher.resultFromBatchObjectsReply(reply.build(), batch);
3952

4053
// Assert
4154
List<ObjectGetResponse> succeeded = Arrays.stream(got.getResult())
@@ -44,15 +57,24 @@ public void test_resultFromBatchObjectsReply() {
4457
List<ObjectGetResponse> failed = Arrays.stream(got.getResult())
4558
.filter(result -> result.getResult().getErrors() != null)
4659
.collect(Collectors.toList());
47-
Assertions.assertThat(got.getResult()).hasSize(3);
48-
Assertions.assertThat(succeeded).hasSize(1);
49-
Assertions.assertThat(failed).hasSize(2);
60+
Assertions.assertThat(got.getResult()).hasSize(total);
61+
Assertions.assertThat(failed).hasSize(wantFail);
62+
Assertions.assertThat(succeeded).hasSize(wantSucceed);
63+
64+
if (wantFail == 0) {
65+
Assertions.assertThat(got.getError()).isNull();
66+
return;
67+
}
5068

69+
String[] wantErrors = new String[wantFail];
70+
for (int i = 0; i < failed.size(); i++) {
71+
wantErrors[i] = failed.get(i).getResult().getErrors().getError().get(0).getMessage();
72+
}
5173
Assertions.assertThat(got.getError()).returns(HttpStatus.SC_UNPROCESSABLE_ENTITY, WeaviateError::getStatusCode);
5274
Assertions.assertThat(got.getError().getMessages())
53-
.hasSize(2)
75+
.hasSize(wantFail)
5476
.extracting(WeaviateErrorMessage::getMessage)
55-
.contains("error-0", "error-1");
77+
.contains(wantErrors);
5678

5779
}
5880
}

0 commit comments

Comments
 (0)