|
60 | 60 | import static org.hamcrest.Matchers.empty;
|
61 | 61 | import static org.hamcrest.Matchers.equalTo;
|
62 | 62 | import static org.hamcrest.Matchers.hasSize;
|
| 63 | +import static org.hamcrest.Matchers.instanceOf; |
63 | 64 | import static org.hamcrest.Matchers.is;
|
64 | 65 | import static org.hamcrest.Matchers.nullValue;
|
65 | 66 | import static org.mockito.ArgumentMatchers.any;
|
@@ -375,6 +376,34 @@ public void testBulkRequestRetriesMsgHandlerIsCalled() {
|
375 | 376 | assertThat(lastMessage.get(), containsString("failed to index after [1] attempts. Will attempt again"));
|
376 | 377 | }
|
377 | 378 |
|
| 379 | + public void testBuildNewRequestFromFailures_resetsId() { |
| 380 | + var bulkRequest = new BulkRequest(); |
| 381 | + var indexRequestAutoGeneratedId = new IndexRequest("index-foo"); |
| 382 | + indexRequestAutoGeneratedId.autoGenerateId(); |
| 383 | + var autoGenId = indexRequestAutoGeneratedId.id(); |
| 384 | + var plainIndexRequest = new IndexRequest("index-foo2").id("id-set"); |
| 385 | + |
| 386 | + bulkRequest.add(indexRequestAutoGeneratedId); |
| 387 | + bulkRequest.add(plainIndexRequest); |
| 388 | + |
| 389 | + var bulkResponse = mock(BulkResponse.class); |
| 390 | + |
| 391 | + var failed = mock(BulkItemResponse.class); |
| 392 | + when(failed.isFailed()).thenReturn(Boolean.TRUE); |
| 393 | + when(failed.getId()).thenReturn(autoGenId); |
| 394 | + |
| 395 | + var sucessful = mock(BulkItemResponse.class); |
| 396 | + when(sucessful.isFailed()).thenReturn(Boolean.FALSE); |
| 397 | + |
| 398 | + when(bulkResponse.getItems()).thenReturn(new BulkItemResponse[] { failed, sucessful }); |
| 399 | + |
| 400 | + var modifiedRequestForRetry = ResultsPersisterService.buildNewRequestFromFailures(bulkRequest, bulkResponse); |
| 401 | + assertThat(modifiedRequestForRetry.requests(), hasSize(1)); // only the failed item is in the new request |
| 402 | + assertThat(modifiedRequestForRetry.requests().get(0), instanceOf(IndexRequest.class)); |
| 403 | + var ir = (IndexRequest) modifiedRequestForRetry.requests().get(0); |
| 404 | + assertEquals(ir.getAutoGeneratedTimestamp(), -1L); // failed request was reset |
| 405 | + } |
| 406 | + |
378 | 407 | private static <Response> Stubber doAnswerWithResponses(Response response1, Response response2) {
|
379 | 408 | return doAnswer(withResponse(response1)).doAnswer(withResponse(response2));
|
380 | 409 | }
|
|
0 commit comments