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