Search in sources :

Example 46 with Event

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

the class DateProcessorTests method match_without_year_test.

@ParameterizedTest
@ValueSource(strings = { "MMM/dd", "MM dd" })
void match_without_year_test(String pattern) {
    when(mockDateMatch.getKey()).thenReturn("logDate");
    when(mockDateMatch.getPatterns()).thenReturn(Collections.singletonList(pattern));
    List<DateProcessorConfig.DateMatch> dateMatches = Collections.singletonList(mockDateMatch);
    when(mockDateProcessorConfig.getMatch()).thenReturn(dateMatches);
    when(mockDateProcessorConfig.getSourceZoneId()).thenReturn(ZoneId.systemDefault());
    when(mockDateProcessorConfig.getDestinationZoneId()).thenReturn(ZoneId.systemDefault());
    when(mockDateProcessorConfig.getSourceLocale()).thenReturn(Locale.ROOT);
    dateProcessor = createObjectUnderTest();
    Map<String, Object> testData = getTestData();
    testData.put("logDate", expectedDateTime.format(DateTimeFormatter.ofPattern(pattern)));
    final Record<Event> record = buildRecordWithEvent(testData);
    final List<Record<Event>> processedRecords = (List<Record<Event>>) dateProcessor.doExecute(Collections.singletonList(record));
    ZonedDateTime actualZonedDateTime = record.getData().get(TIMESTAMP_KEY, ZonedDateTime.class);
    ZonedDateTime expectedZonedDatetime = expectedDateTime.atZone(mockDateProcessorConfig.getSourceZoneId()).truncatedTo(ChronoUnit.SECONDS);
    Assertions.assertTrue(actualZonedDateTime.toLocalDate().isEqual(expectedZonedDatetime.toLocalDate()));
    verify(dateProcessingMatchSuccessCounter, times(1)).increment();
}
Also used : ZonedDateTime(java.time.ZonedDateTime) JacksonEvent(com.amazon.dataprepper.model.event.JacksonEvent) Event(com.amazon.dataprepper.model.event.Event) Record(com.amazon.dataprepper.model.record.Record) List(java.util.List) ValueSource(org.junit.jupiter.params.provider.ValueSource) ParameterizedTest(org.junit.jupiter.params.ParameterizedTest)

Example 47 with Event

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

the class DropEventsProcessorTests method testGivenWhenSettingThenIsStatementFalseUsed.

@Test
void testGivenWhenSettingThenIsStatementFalseUsed() {
    final Event event = mock(Event.class);
    final Record<Event> record = mock(Record.class);
    final int inputRecordCount = 10;
    final List<Record<Event>> recordsToBeProcessed = Collections.nCopies(inputRecordCount, record);
    final int numberOfMockedFalseEvaluations = 8;
    final boolean repeatedReturnValue = false;
    doReturn(whenSetting).when(dropEventProcessorConfig).getDropWhen();
    doReturn(true, true, repeatedReturnValue).when(expressionEvaluator).evaluate(eq(whenSetting), eq(event));
    doReturn(event).when(record).getData();
    dropProcessor = new DropEventsProcessor(pluginMetrics, dropEventProcessorConfig, expressionEvaluator);
    final Collection<Record<Event>> results = dropProcessor.doExecute(recordsToBeProcessed);
    assertThat(results.size(), is(numberOfMockedFalseEvaluations));
    verify(record, times(inputRecordCount)).getData();
}
Also used : JacksonEvent(com.amazon.dataprepper.model.event.JacksonEvent) Event(com.amazon.dataprepper.model.event.Event) Record(com.amazon.dataprepper.model.record.Record) Test(org.junit.jupiter.api.Test)

Example 48 with Event

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

the class KeyValueProcessor method doExecute.

@Override
public Collection<Record<Event>> doExecute(final Collection<Record<Event>> records) {
    for (final Record<Event> record : records) {
        final Map<String, Object> parsedMap = new HashMap<>();
        final Event recordEvent = record.getData();
        final String groupsRaw = recordEvent.get(keyValueProcessorConfig.getSource(), String.class);
        final String[] groups = fieldDelimiterPattern.split(groupsRaw, 0);
        for (final String group : groups) {
            final String[] terms = keyValueDelimiterPattern.split(group, 2);
            String key = terms[0];
            Object value;
            if (keyValueProcessorConfig.getDeleteKeyRegex() != null && !Objects.equals(keyValueProcessorConfig.getDeleteKeyRegex(), "")) {
                key = key.replaceAll(keyValueProcessorConfig.getDeleteKeyRegex(), "");
            }
            key = keyValueProcessorConfig.getPrefix() + key;
            if (terms.length == 2) {
                value = terms[1];
            } else {
                LOG.debug(String.format("Unsuccessful match: '%s'", terms[0]));
                value = keyValueProcessorConfig.getNonMatchValue();
            }
            if (value != null && value instanceof String && keyValueProcessorConfig.getDeleteValueRegex() != null && !Objects.equals(keyValueProcessorConfig.getDeleteValueRegex(), "")) {
                value = ((String) value).replaceAll(keyValueProcessorConfig.getDeleteValueRegex(), "");
            }
            addKeyValueToMap(parsedMap, key, value);
        }
        recordEvent.put(keyValueProcessorConfig.getDestination(), parsedMap);
    }
    return records;
}
Also used : HashMap(java.util.HashMap) Event(com.amazon.dataprepper.model.event.Event)

Example 49 with Event

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

the class RenameKeyProcessor method doExecute.

@Override
public Collection<Record<Event>> doExecute(final Collection<Record<Event>> records) {
    for (final Record<Event> record : records) {
        final Event recordEvent = record.getData();
        for (RenameKeyProcessorConfig.Entry entry : entries) {
            if (entry.getFromKey().equals(entry.getToKey()) || !recordEvent.containsKey(entry.getFromKey())) {
                continue;
            }
            if (!recordEvent.containsKey(entry.getToKey()) || entry.getOverwriteIfToKeyExists()) {
                final Object source = recordEvent.get(entry.getFromKey(), Object.class);
                recordEvent.put(entry.getToKey(), source);
                recordEvent.delete(entry.getFromKey());
            }
        }
    }
    return records;
}
Also used : Event(com.amazon.dataprepper.model.event.Event)

Example 50 with Event

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

the class ParseTreeCoercionServiceTest method testCoerceTerminalNodeJsonPointerTypeUnSupportedValues.

@ParameterizedTest
@MethodSource("provideUnSupportedJsonPointerValues")
void testCoerceTerminalNodeJsonPointerTypeUnSupportedValues(final Object testValue) {
    final String testKey1 = "key1";
    final String testKey2 = "key2";
    final String testJsonPointerKey = String.format("/%s/%s", testKey1, testKey2);
    final Event testEvent = testValue == null ? createTestEvent(new HashMap<>()) : createTestEvent(Map.of(testKey1, Map.of(testKey2, testValue)));
    when(token.getType()).thenReturn(DataPrepperExpressionParser.JsonPointer);
    when(terminalNode.getSymbol()).thenReturn(token);
    when(terminalNode.getText()).thenReturn(testJsonPointerKey);
    assertThrows(ExpressionCoercionException.class, () -> objectUnderTest.coercePrimaryTerminalNode(terminalNode, testEvent));
}
Also used : HashMap(java.util.HashMap) Event(com.amazon.dataprepper.model.event.Event) ArgumentMatchers.anyString(org.mockito.ArgumentMatchers.anyString) ParameterizedTest(org.junit.jupiter.params.ParameterizedTest) MethodSource(org.junit.jupiter.params.provider.MethodSource)

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