Search in sources :

Example 1 with BatchItemResponse

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()));
}
Also used : EventPublishResult(org.zalando.nakadi.domain.EventPublishResult) JSONObject(org.json.JSONObject) TestUtils.buildDefaultEventType(org.zalando.nakadi.utils.TestUtils.buildDefaultEventType) EventType(org.zalando.nakadi.domain.EventType) JSONArray(org.json.JSONArray) BatchItemResponse(org.zalando.nakadi.domain.BatchItemResponse) Test(org.junit.Test)

Example 2 with BatchItemResponse

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());
}
Also used : EventPublishResult(org.zalando.nakadi.domain.EventPublishResult) TestUtils.buildDefaultEventType(org.zalando.nakadi.utils.TestUtils.buildDefaultEventType) EventType(org.zalando.nakadi.domain.EventType) JSONArray(org.json.JSONArray) BatchItemResponse(org.zalando.nakadi.domain.BatchItemResponse) Test(org.junit.Test)

Example 3 with BatchItemResponse

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());
}
Also used : EventPublishResult(org.zalando.nakadi.domain.EventPublishResult) JSONObject(org.json.JSONObject) TestUtils.buildDefaultEventType(org.zalando.nakadi.utils.TestUtils.buildDefaultEventType) EventType(org.zalando.nakadi.domain.EventType) JSONArray(org.json.JSONArray) BatchItemResponse(org.zalando.nakadi.domain.BatchItemResponse) Test(org.junit.Test)

Example 4 with BatchItemResponse

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());
}
Also used : EventPublishResult(org.zalando.nakadi.domain.EventPublishResult) TestUtils.buildDefaultEventType(org.zalando.nakadi.utils.TestUtils.buildDefaultEventType) EventType(org.zalando.nakadi.domain.EventType) JSONArray(org.json.JSONArray) TestUtils.createBatchItem(org.zalando.nakadi.utils.TestUtils.createBatchItem) BatchItem(org.zalando.nakadi.domain.BatchItem) ArrayList(java.util.ArrayList) BatchItemResponse(org.zalando.nakadi.domain.BatchItemResponse) Test(org.junit.Test)

Example 5 with BatchItemResponse

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;
}
Also used : ArrayList(java.util.ArrayList) BatchItemResponse(org.zalando.nakadi.domain.BatchItemResponse)

Aggregations

BatchItemResponse (org.zalando.nakadi.domain.BatchItemResponse)7 JSONArray (org.json.JSONArray)5 Test (org.junit.Test)5 EventPublishResult (org.zalando.nakadi.domain.EventPublishResult)5 EventType (org.zalando.nakadi.domain.EventType)5 TestUtils.buildDefaultEventType (org.zalando.nakadi.utils.TestUtils.buildDefaultEventType)5 ArrayList (java.util.ArrayList)3 JSONObject (org.json.JSONObject)3 BatchItem (org.zalando.nakadi.domain.BatchItem)1 TestUtils.createBatchItem (org.zalando.nakadi.utils.TestUtils.createBatchItem)1