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;
}
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");
}
}
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;
}
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));
}
}
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));
}
}
Aggregations