Search in sources :

Example 51 with Event

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

the class ParseTreeCoercionServiceTest method testCoerceTerminalNodeJsonPointerTypeSupportedValues.

@ParameterizedTest
@MethodSource("provideSupportedJsonPointerValues")
void testCoerceTerminalNodeJsonPointerTypeSupportedValues(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);
    final Object result = objectUnderTest.coercePrimaryTerminalNode(terminalNode, testEvent);
    if (testValue instanceof Double) {
        assertThat(result, instanceOf(Float.class));
        assertThat(result, equalTo(((Double) testValue).floatValue()));
    } else {
        assertThat(result, equalTo(testValue));
    }
}
Also used : HashMap(java.util.HashMap) Event(com.amazon.dataprepper.model.event.Event) TestObject(org.opensearch.dataprepper.expression.util.TestObject) ArgumentMatchers.anyString(org.mockito.ArgumentMatchers.anyString) ParameterizedTest(org.junit.jupiter.params.ParameterizedTest) MethodSource(org.junit.jupiter.params.provider.MethodSource)

Example 52 with Event

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

the class ParseTreeCoercionServiceTest method testCoerceTerminalNodeBooleanType.

@Test
void testCoerceTerminalNodeBooleanType() {
    when(token.getType()).thenReturn(DataPrepperExpressionParser.Boolean);
    final Boolean testBoolean = new Random().nextBoolean();
    when(terminalNode.getSymbol()).thenReturn(token);
    when(terminalNode.getText()).thenReturn(String.valueOf(testBoolean));
    final Event testEvent = createTestEvent(new HashMap<>());
    final Object result = objectUnderTest.coercePrimaryTerminalNode(terminalNode, testEvent);
    assertThat(result, instanceOf(Boolean.class));
    assertThat(result, equalTo(testBoolean));
}
Also used : Random(java.util.Random) Event(com.amazon.dataprepper.model.event.Event) TestObject(org.opensearch.dataprepper.expression.util.TestObject) Test(org.junit.jupiter.api.Test) ParameterizedTest(org.junit.jupiter.params.ParameterizedTest)

Example 53 with Event

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

the class ParseTreeCoercionServiceTest method testCoerceTerminalNodeEscapeJsonPointerTypeSupportedValues.

@ParameterizedTest
@MethodSource("provideSupportedJsonPointerValues")
void testCoerceTerminalNodeEscapeJsonPointerTypeSupportedValues(final Object testValue) {
    final String testKey = "testKey";
    final String testEscapeJsonPointerKey = String.format("\"/%s\"", testKey);
    final Event testEvent = testValue == null ? createTestEvent(new HashMap<>()) : createTestEvent(Map.of(testKey, testValue));
    when(token.getType()).thenReturn(DataPrepperExpressionParser.EscapedJsonPointer);
    when(terminalNode.getSymbol()).thenReturn(token);
    when(terminalNode.getText()).thenReturn(testEscapeJsonPointerKey);
    final Object result = objectUnderTest.coercePrimaryTerminalNode(terminalNode, testEvent);
    if (testValue instanceof Double) {
        assertThat(result, instanceOf(Float.class));
        assertThat(result, equalTo(((Double) testValue).floatValue()));
    } else {
        assertThat(result, equalTo(testValue));
    }
}
Also used : HashMap(java.util.HashMap) Event(com.amazon.dataprepper.model.event.Event) TestObject(org.opensearch.dataprepper.expression.util.TestObject) ArgumentMatchers.anyString(org.mockito.ArgumentMatchers.anyString) ParameterizedTest(org.junit.jupiter.params.ParameterizedTest) MethodSource(org.junit.jupiter.params.provider.MethodSource)

Example 54 with Event

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

the class ParseTreeCoercionServiceTest method testCoerceTerminalNodeEscapeJsonPointerTypeWithSpecialCharacters.

@ParameterizedTest
@MethodSource("provideKeys")
void testCoerceTerminalNodeEscapeJsonPointerTypeWithSpecialCharacters(final String testKey, final String testEscapeJsonPointer) throws ExpressionCoercionException {
    final String testValue = "test value";
    final Event testEvent = createTestEvent(Map.of(testKey, testValue));
    when(token.getType()).thenReturn(DataPrepperExpressionParser.EscapedJsonPointer);
    when(terminalNode.getSymbol()).thenReturn(token);
    when(terminalNode.getText()).thenReturn(testEscapeJsonPointer);
    final Object result = objectUnderTest.coercePrimaryTerminalNode(terminalNode, testEvent);
    assertThat(result, instanceOf(String.class));
    assertThat(result, equalTo(testValue));
}
Also used : Event(com.amazon.dataprepper.model.event.Event) TestObject(org.opensearch.dataprepper.expression.util.TestObject) ArgumentMatchers.anyString(org.mockito.ArgumentMatchers.anyString) ParameterizedTest(org.junit.jupiter.params.ParameterizedTest) MethodSource(org.junit.jupiter.params.provider.MethodSource)

Example 55 with Event

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

the class ParseTreeEvaluatorListenerTest method testSimpleRelationalOperatorExpressionWithJsonPointerTypeInValidValue.

@Test
void testSimpleRelationalOperatorExpressionWithJsonPointerTypeInValidValue() {
    final String testKey = "testKey";
    final boolean testValue = true;
    final Map<String, Boolean> data = Map.of(testKey, testValue);
    final Event testEvent = createTestEvent(data);
    final String greaterThanStatement = String.format(" /%s > %s", testKey, testValue);
    final String greaterThanOrEqualStatement = String.format(" /%s >= /%s", testKey, testKey);
    final String lessThanStatement = String.format(" /%s < %s", testKey, testValue);
    final String lessThanOrEqualStatement = String.format(" /%s <= /%s", testKey, testKey);
    assertThrows(ExpressionEvaluationException.class, () -> evaluateStatementOnEvent(greaterThanStatement, testEvent));
    assertThrows(ExpressionEvaluationException.class, () -> evaluateStatementOnEvent(greaterThanOrEqualStatement, testEvent));
    assertThrows(ExpressionEvaluationException.class, () -> evaluateStatementOnEvent(lessThanStatement, testEvent));
    assertThrows(ExpressionEvaluationException.class, () -> evaluateStatementOnEvent(lessThanOrEqualStatement, testEvent));
}
Also used : Event(com.amazon.dataprepper.model.event.Event) JacksonEvent(com.amazon.dataprepper.model.event.JacksonEvent) Test(org.junit.jupiter.api.Test)

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