Search in sources :

Example 26 with Event

use of com.amazon.dataprepper.model.event.Event in project data-prepper by opensearch-project.

the class AbstractStringProcessor method doExecute.

@Override
public Collection<Record<Event>> doExecute(final Collection<Record<Event>> records) {
    for (final Record<Event> record : records) {
        final Event recordEvent = record.getData();
        performStringAction(recordEvent);
    }
    return records;
}
Also used : Event(com.amazon.dataprepper.model.event.Event)

Example 27 with Event

use of com.amazon.dataprepper.model.event.Event in project data-prepper by opensearch-project.

the class FileSourceTests method assertEventRecordsAreEqual.

static void assertEventRecordsAreEqual(final Record<Object> first, final Record<Object> second) {
    try {
        final Event firstEvent = (Event) first.getData();
        final Event secondEvent = (Event) second.getData();
        final Map<String, Object> recordMapFirst = OBJECT_MAPPER.readValue(firstEvent.toJsonString(), MAP_TYPE_REFERENCE);
        final Map<String, Object> recordMapSecond = OBJECT_MAPPER.readValue(secondEvent.toJsonString(), MAP_TYPE_REFERENCE);
        assertThat(recordMapFirst, is(equalTo(recordMapSecond)));
    } catch (JsonProcessingException e) {
        LOG.error("Unable to parse Event as JSON");
    }
}
Also used : JacksonEvent(com.amazon.dataprepper.model.event.JacksonEvent) Event(com.amazon.dataprepper.model.event.Event) JsonProcessingException(com.fasterxml.jackson.core.JsonProcessingException)

Example 28 with Event

use of com.amazon.dataprepper.model.event.Event in project data-prepper by opensearch-project.

the class AggregateActionSynchronizer method concludeGroup.

Optional<Event> concludeGroup(final AggregateIdentificationKeysHasher.IdentificationHash hash, final AggregateGroup aggregateGroup) {
    final Lock concludeGroupLock = aggregateGroup.getConcludeGroupLock();
    final Lock handleEventForGroupLock = aggregateGroup.getHandleEventForGroupLock();
    Optional<Event> concludeGroupEvent = Optional.empty();
    if (concludeGroupLock.tryLock()) {
        handleEventForGroupLock.lock();
        try {
            if (aggregateGroup.shouldConcludeGroup(aggregateGroupManager.getGroupDuration())) {
                LOG.debug("Start critical section in concludeGroup");
                concludeGroupEvent = aggregateAction.concludeGroup(aggregateGroup);
                aggregateGroupManager.closeGroup(hash, aggregateGroup);
            }
        } catch (final Exception e) {
            LOG.debug("Error while concluding group: ", e);
            actionConcludeGroupEventsProcessingErrors.increment();
        } finally {
            handleEventForGroupLock.unlock();
            concludeGroupLock.unlock();
        }
    }
    return concludeGroupEvent;
}
Also used : Event(com.amazon.dataprepper.model.event.Event) Lock(java.util.concurrent.locks.Lock)

Example 29 with Event

use of com.amazon.dataprepper.model.event.Event in project data-prepper by opensearch-project.

the class AggregateProcessorIT method aggregateWithNoConcludingGroupsReturnsExpectedResult.

@RepeatedTest(value = 10)
void aggregateWithNoConcludingGroupsReturnsExpectedResult() throws InterruptedException {
    when(aggregateProcessorConfig.getGroupDuration()).thenReturn(Duration.ofSeconds(1000));
    final AggregateProcessor objectUnderTest = createObjectUnderTest();
    final ExecutorService executorService = Executors.newFixedThreadPool(NUM_THREADS);
    final CountDownLatch countDownLatch = new CountDownLatch(NUM_THREADS);
    for (int i = 0; i < NUM_THREADS; i++) {
        executorService.execute(() -> {
            final List<Record<Event>> recordsOut = (List<Record<Event>>) objectUnderTest.doExecute(eventBatch);
            for (final Record<Event> record : recordsOut) {
                final Map<String, Object> map = record.getData().toMap();
                aggregatedResult.add(map);
            }
            countDownLatch.countDown();
        });
    }
    boolean allThreadsFinished = countDownLatch.await(5L, TimeUnit.SECONDS);
    assertThat(allThreadsFinished, equalTo(true));
    assertThat(aggregatedResult.size(), equalTo(NUM_UNIQUE_EVENTS_PER_BATCH));
    for (final Map<String, Object> uniqueEventMap : uniqueEventMaps) {
        assertThat(aggregatedResult, hasItem(uniqueEventMap));
    }
    for (final Map<String, Object> eventMap : aggregatedResult) {
        assertThat(eventMap, in(uniqueEventMaps));
    }
}
Also used : CountDownLatch(java.util.concurrent.CountDownLatch) ExecutorService(java.util.concurrent.ExecutorService) JacksonEvent(com.amazon.dataprepper.model.event.JacksonEvent) Event(com.amazon.dataprepper.model.event.Event) Record(com.amazon.dataprepper.model.record.Record) ArrayList(java.util.ArrayList) List(java.util.List) RepeatedTest(org.junit.jupiter.api.RepeatedTest)

Example 30 with Event

use of com.amazon.dataprepper.model.event.Event in project data-prepper by opensearch-project.

the class AggregateProcessorIT method aggregateWithConcludingGroupsOnceReturnsExpectedResult.

@RepeatedTest(value = 2)
void aggregateWithConcludingGroupsOnceReturnsExpectedResult() throws InterruptedException {
    when(aggregateProcessorConfig.getGroupDuration()).thenReturn(Duration.ofSeconds(GROUP_DURATION_FOR_ONLY_SINGLE_CONCLUDE));
    final AggregateProcessor objectUnderTest = createObjectUnderTest();
    final ExecutorService executorService = Executors.newFixedThreadPool(NUM_THREADS);
    final CountDownLatch countDownLatch = new CountDownLatch(NUM_THREADS);
    objectUnderTest.doExecute(eventBatch);
    Thread.sleep(GROUP_DURATION_FOR_ONLY_SINGLE_CONCLUDE * 1000);
    for (int i = 0; i < NUM_THREADS; i++) {
        executorService.execute(() -> {
            final List<Record<Event>> recordsOut = (List<Record<Event>>) objectUnderTest.doExecute(eventBatch);
            for (final Record<Event> record : recordsOut) {
                final Map<String, Object> map = record.getData().toMap();
                aggregatedResult.add(map);
            }
            countDownLatch.countDown();
        });
    }
    boolean allThreadsFinished = countDownLatch.await(5L, TimeUnit.SECONDS);
    assertThat(allThreadsFinished, equalTo(true));
    assertThat(aggregatedResult.size(), equalTo(NUM_UNIQUE_EVENTS_PER_BATCH));
    for (final Map<String, Object> uniqueEventMap : uniqueEventMaps) {
        assertThat(aggregatedResult, hasItem(uniqueEventMap));
    }
    for (final Map<String, Object> eventMap : aggregatedResult) {
        assertThat(eventMap, in(uniqueEventMaps));
    }
}
Also used : CountDownLatch(java.util.concurrent.CountDownLatch) ExecutorService(java.util.concurrent.ExecutorService) JacksonEvent(com.amazon.dataprepper.model.event.JacksonEvent) Event(com.amazon.dataprepper.model.event.Event) Record(com.amazon.dataprepper.model.record.Record) ArrayList(java.util.ArrayList) List(java.util.List) RepeatedTest(org.junit.jupiter.api.RepeatedTest)

Aggregations

Event (com.amazon.dataprepper.model.event.Event)81 Test (org.junit.jupiter.api.Test)52 JacksonEvent (com.amazon.dataprepper.model.event.JacksonEvent)46 Record (com.amazon.dataprepper.model.record.Record)23 ParameterizedTest (org.junit.jupiter.params.ParameterizedTest)22 List (java.util.List)12 TestObject (org.opensearch.dataprepper.expression.util.TestObject)11 ArgumentMatchers.anyString (org.mockito.ArgumentMatchers.anyString)10 ArrayList (java.util.ArrayList)7 HashMap (java.util.HashMap)7 MethodSource (org.junit.jupiter.params.provider.MethodSource)6 ZonedDateTime (java.time.ZonedDateTime)5 Map (java.util.Map)5 ParseTree (org.antlr.v4.runtime.tree.ParseTree)4 AggregateActionInput (com.amazon.dataprepper.plugins.processor.aggregate.AggregateActionInput)3 InputStream (java.io.InputStream)3 LinkedList (java.util.LinkedList)3 Random (java.util.Random)3 Test (org.junit.Test)3 ValueSource (org.junit.jupiter.params.provider.ValueSource)3