use of org.zalando.nakadi.domain.BatchItemResponse in project nakadi by zalando.
the class EventPublisherTest method whenEventIsTooLargeThenAllItemsAreAborted.
@Test
public void whenEventIsTooLargeThenAllItemsAreAborted() throws Exception {
final EventType eventType = buildDefaultEventType();
final JSONArray batch = buildDefaultBatch(1);
final JSONObject largeEvent = new JSONObject();
largeEvent.put("foo", randomStringOfLength(10000));
batch.put(largeEvent);
final JSONObject smallEvent = new JSONObject();
smallEvent.put("foo", randomString());
batch.put(smallEvent);
mockSuccessfulValidation(eventType);
final EventPublishResult result = publisher.publish(batch.toString(), eventType.getName());
assertThat(result.getStatus(), equalTo(EventPublishingStatus.ABORTED));
final BatchItemResponse firstResponse = result.getResponses().get(0);
assertThat(firstResponse.getPublishingStatus(), equalTo(EventPublishingStatus.ABORTED));
assertThat(firstResponse.getStep(), equalTo(EventPublishingStep.VALIDATING));
assertThat(firstResponse.getDetail(), is(isEmptyString()));
final BatchItemResponse secondResponse = result.getResponses().get(1);
assertThat(secondResponse.getPublishingStatus(), equalTo(EventPublishingStatus.FAILED));
assertThat(secondResponse.getStep(), equalTo(EventPublishingStep.VALIDATING));
assertThat(secondResponse.getDetail(), startsWith("Event too large"));
final BatchItemResponse thirdResponse = result.getResponses().get(2);
assertThat(thirdResponse.getPublishingStatus(), equalTo(EventPublishingStatus.ABORTED));
assertThat(thirdResponse.getStep(), equalTo(EventPublishingStep.NONE));
assertThat(thirdResponse.getDetail(), is(isEmptyString()));
}
use of org.zalando.nakadi.domain.BatchItemResponse in project nakadi by zalando.
the class EventPublisherTest method whenEnrichmentFailsThenSubsequentItemsAreAborted.
@Test
public void whenEnrichmentFailsThenSubsequentItemsAreAborted() throws Exception {
final EventType eventType = buildDefaultEventType();
final JSONArray batch = buildDefaultBatch(2);
mockSuccessfulValidation(eventType);
mockFaultEnrichment();
final EventPublishResult result = publisher.publish(batch.toString(), eventType.getName());
assertThat(result.getStatus(), equalTo(EventPublishingStatus.ABORTED));
final BatchItemResponse first = result.getResponses().get(0);
assertThat(first.getPublishingStatus(), equalTo(EventPublishingStatus.FAILED));
assertThat(first.getStep(), equalTo(EventPublishingStep.ENRICHING));
assertThat(first.getDetail(), equalTo("enrichment error"));
final BatchItemResponse second = result.getResponses().get(1);
assertThat(second.getPublishingStatus(), equalTo(EventPublishingStatus.ABORTED));
assertThat(second.getStep(), equalTo(EventPublishingStep.PARTITIONING));
assertThat(second.getDetail(), is(isEmptyString()));
verify(enrichment, times(1)).enrich(any(), any());
}
use of org.zalando.nakadi.domain.BatchItemResponse in project nakadi by zalando.
the class EventPublisherTest method whenValidationFailsThenSubsequentItemsAreAborted.
@Test
public void whenValidationFailsThenSubsequentItemsAreAborted() throws Exception {
final EventType eventType = buildDefaultEventType();
final JSONArray batch = buildDefaultBatch(2);
final JSONObject event = batch.getJSONObject(0);
mockFaultValidation(eventType, "error");
final EventPublishResult result = publisher.publish(batch.toString(), eventType.getName());
assertThat(result.getStatus(), equalTo(EventPublishingStatus.ABORTED));
final BatchItemResponse first = result.getResponses().get(0);
assertThat(first.getPublishingStatus(), equalTo(EventPublishingStatus.FAILED));
assertThat(first.getStep(), equalTo(EventPublishingStep.VALIDATING));
assertThat(first.getDetail(), equalTo("error"));
final BatchItemResponse second = result.getResponses().get(1);
assertThat(second.getPublishingStatus(), equalTo(EventPublishingStatus.ABORTED));
assertThat(second.getStep(), equalTo(EventPublishingStep.NONE));
assertThat(second.getDetail(), is(isEmptyString()));
verify(cache, times(1)).getValidator(any());
}
use of org.zalando.nakadi.domain.BatchItemResponse in project nakadi by zalando.
the class EventPublisherTest method whenPartitionFailsThenSubsequentItemsAreAborted.
@Test
public void whenPartitionFailsThenSubsequentItemsAreAborted() throws Exception {
final EventType eventType = buildDefaultEventType();
final JSONArray array = buildDefaultBatch(2);
final List<BatchItem> batch = new ArrayList<>();
batch.add(createBatchItem(array.getJSONObject(0)));
batch.add(createBatchItem(array.getJSONObject(1)));
mockSuccessfulValidation(eventType);
mockFaultPartition();
final EventPublishResult result = publisher.publish(createStringFromBatchItems(batch), eventType.getName());
assertThat(result.getStatus(), equalTo(EventPublishingStatus.ABORTED));
final BatchItemResponse first = result.getResponses().get(0);
assertThat(first.getPublishingStatus(), equalTo(EventPublishingStatus.FAILED));
assertThat(first.getStep(), equalTo(EventPublishingStep.PARTITIONING));
assertThat(first.getDetail(), equalTo("partition error"));
final BatchItemResponse second = result.getResponses().get(1);
assertThat(second.getPublishingStatus(), equalTo(EventPublishingStatus.ABORTED));
assertThat(second.getStep(), equalTo(EventPublishingStep.VALIDATING));
assertThat(second.getDetail(), is(isEmptyString()));
verify(cache, times(2)).getValidator(any());
verify(partitionResolver, times(1)).resolvePartition(any(), any());
}
use of org.zalando.nakadi.domain.BatchItemResponse in project nakadi by zalando.
the class EventPublishingControllerTest method responses.
private List<BatchItemResponse> responses() {
final BatchItemResponse response = new BatchItemResponse();
response.setPublishingStatus(ABORTED);
response.setStep(VALIDATING);
final List<BatchItemResponse> responses = new ArrayList<>();
responses.add(response);
return responses;
}
Aggregations