Search in sources :

Example 1 with EventPublishResult

use of org.zalando.nakadi.domain.EventPublishResult 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 EventPublishResult

use of org.zalando.nakadi.domain.EventPublishResult in project nakadi by zalando.

the class EventPublisherTest method whenPartitionFailsThenResultIsAborted.

@Test
public void whenPartitionFailsThenResultIsAborted() throws Exception {
    final EventType eventType = buildDefaultEventType();
    final List<BatchItem> batch = new ArrayList<>();
    batch.add(createBatchItem(buildDefaultBatch(1).getJSONObject(0)));
    final JSONObject event = batch.get(0).getEvent();
    mockSuccessfulValidation(eventType);
    mockFaultPartition();
    final EventPublishResult result = publisher.publish(createStringFromBatchItems(batch), eventType.getName());
    assertThat(result.getStatus(), equalTo(EventPublishingStatus.ABORTED));
}
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) TestUtils.createBatchItem(org.zalando.nakadi.utils.TestUtils.createBatchItem) BatchItem(org.zalando.nakadi.domain.BatchItem) ArrayList(java.util.ArrayList) Test(org.junit.Test)

Example 3 with EventPublishResult

use of org.zalando.nakadi.domain.EventPublishResult in project nakadi by zalando.

the class EventPublisherTest method whenEnrichmentFailsThenResultIsAborted.

@Test
public void whenEnrichmentFailsThenResultIsAborted() throws Exception {
    final EventType eventType = buildDefaultEventType();
    final JSONArray batch = buildDefaultBatch(1);
    final JSONObject event = batch.getJSONObject(0);
    mockSuccessfulValidation(eventType);
    mockFaultEnrichment();
    final EventPublishResult result = publisher.publish(batch.toString(), eventType.getName());
    assertThat(result.getStatus(), equalTo(EventPublishingStatus.ABORTED));
    verify(cache, times(1)).getValidator(eventType.getName());
    verify(partitionResolver, times(1)).resolvePartition(any(), any());
    verify(enrichment, times(1)).enrich(any(), any());
    verify(topicRepository, times(0)).syncPostBatch(any(), 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) Test(org.junit.Test)

Example 4 with EventPublishResult

use of org.zalando.nakadi.domain.EventPublishResult 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 5 with EventPublishResult

use of org.zalando.nakadi.domain.EventPublishResult 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)

Aggregations

EventPublishResult (org.zalando.nakadi.domain.EventPublishResult)23 Test (org.junit.Test)22 EventType (org.zalando.nakadi.domain.EventType)17 TestUtils.buildDefaultEventType (org.zalando.nakadi.utils.TestUtils.buildDefaultEventType)17 JSONArray (org.json.JSONArray)15 JSONObject (org.json.JSONObject)8 BatchItemResponse (org.zalando.nakadi.domain.BatchItemResponse)5 ArrayList (java.util.ArrayList)2 BatchItem (org.zalando.nakadi.domain.BatchItem)2 TestUtils.createBatchItem (org.zalando.nakadi.utils.TestUtils.createBatchItem)2 Supplier (java.util.function.Supplier)1 JSONException (org.json.JSONException)1 NakadiException (org.zalando.nakadi.exceptions.NakadiException)1 NoSuchEventTypeException (org.zalando.nakadi.exceptions.NoSuchEventTypeException)1 EventTypeMetrics (org.zalando.nakadi.metrics.EventTypeMetrics)1