This is an automated email from the ASF dual-hosted git repository. vy pushed a commit to branch release-2.x in repository https://gitbox.apache.org/repos/asf/logging-log4j2.git
commit 2e391b6d35f904f900b77de0005a7e64330864ca Author: Volkan Yazici <[email protected]> AuthorDate: Wed Jul 7 10:52:28 2021 +0200 Consolidate ReadOnlyStringMapResolver tests. --- .../template/json/JsonTemplateLayoutTest.java | 341 -------------------- .../resolver/ReadOnlyStringMapResolverTest.java | 348 ++++++++++++++++++++- 2 files changed, 347 insertions(+), 342 deletions(-) diff --git a/log4j-layout-template-json/src/test/java/org/apache/logging/log4j/layout/template/json/JsonTemplateLayoutTest.java b/log4j-layout-template-json/src/test/java/org/apache/logging/log4j/layout/template/json/JsonTemplateLayoutTest.java index a0c4321..fa0d275 100644 --- a/log4j-layout-template-json/src/test/java/org/apache/logging/log4j/layout/template/json/JsonTemplateLayoutTest.java +++ b/log4j-layout-template-json/src/test/java/org/apache/logging/log4j/layout/template/json/JsonTemplateLayoutTest.java @@ -329,47 +329,6 @@ class JsonTemplateLayoutTest { } @Test - void test_MapMessage_keyed_access() { - - // Create the event template. - final String key = "list"; - final String eventTemplate = writeJson(asMap( - "typedValue", asMap( - "$resolver", "map", - "key", key), - "stringifiedValue", asMap( - "$resolver", "map", - "key", key, - "stringified", true))); - - // Create the layout. - final JsonTemplateLayout layout = JsonTemplateLayout - .newBuilder() - .setConfiguration(CONFIGURATION) - .setEventTemplate(eventTemplate) - .build(); - - // Create the log event with a MapMessage. - final List<Integer> value = Arrays.asList(1, 2); - final StringMapMessage mapMessage = new StringMapMessage() - .with(key, value); - final LogEvent logEvent = Log4jLogEvent - .newBuilder() - .setLoggerName(LOGGER_NAME) - .setLevel(Level.INFO) - .setMessage(mapMessage) - .setTimeMillis(System.currentTimeMillis()) - .build(); - - // Check the serialized event. - usingSerializedLogEventAccessor(layout, logEvent, accessor -> { - assertThat(accessor.getObject("typedValue")).isEqualTo(value); - assertThat(accessor.getString("stringifiedValue")).isEqualTo(String.valueOf(value)); - }); - - } - - @Test void test_message_fallbackKey() { // Create the event template. @@ -707,306 +666,6 @@ class JsonTemplateLayoutTest { } @Test - void test_mdc_key_access() { - - // Create the log event. - final SimpleMessage message = new SimpleMessage("Hello, World!"); - final StringMap contextData = new SortedArrayStringMap(); - final String mdcDirectlyAccessedKey = "mdcKey1"; - final String mdcDirectlyAccessedValue = "mdcValue1"; - contextData.putValue(mdcDirectlyAccessedKey, mdcDirectlyAccessedValue); - final String mdcDirectlyAccessedNullPropertyKey = "mdcKey2"; - contextData.putValue(mdcDirectlyAccessedNullPropertyKey, null); - final LogEvent logEvent = Log4jLogEvent - .newBuilder() - .setLoggerName(LOGGER_NAME) - .setLevel(Level.INFO) - .setMessage(message) - .setContextData(contextData) - .build(); - - // Check the serialized event. - testReadOnlyStringMapKeyAccess( - mdcDirectlyAccessedKey, - mdcDirectlyAccessedValue, - mdcDirectlyAccessedNullPropertyKey, - logEvent, - "mdc"); - - } - - @Test - public void test_map_key_access() { - - // Create the log event. - final String directlyAccessedKey = "mapKey1"; - final String directlyAccessedValue = "mapValue1"; - final String directlyAccessedNullPropertyKey = "mapKey2"; - final Message message = new StringMapMessage() - .with(directlyAccessedKey, directlyAccessedValue); - final LogEvent logEvent = Log4jLogEvent - .newBuilder() - .setLoggerName(LOGGER_NAME) - .setLevel(Level.INFO) - .setMessage(message) - .build(); - - // Check the serialized event. - testReadOnlyStringMapKeyAccess( - directlyAccessedKey, - directlyAccessedValue, - directlyAccessedNullPropertyKey, - logEvent, - "map"); - - } - - private static void testReadOnlyStringMapKeyAccess( - final String directlyAccessedKey, - final String directlyAccessedValue, - final String directlyAccessedNullPropertyKey, - final LogEvent logEvent, - final String resolverName) { - - // Create the event template. - String eventTemplate = writeJson(asMap( - directlyAccessedKey, asMap( - "$resolver", resolverName, - "key", directlyAccessedKey), - directlyAccessedNullPropertyKey, asMap( - "$resolver", resolverName, - "key", directlyAccessedNullPropertyKey))); - - // Create the layout. - final JsonTemplateLayout layout = JsonTemplateLayout - .newBuilder() - .setConfiguration(CONFIGURATION) - .setStackTraceEnabled(true) - .setEventTemplate(eventTemplate) - .build(); - - // Check the serialized event. - usingSerializedLogEventAccessor(layout, logEvent, accessor -> { - assertThat(accessor.getString(directlyAccessedKey)).isEqualTo(directlyAccessedValue); - assertThat(accessor.getString(directlyAccessedNullPropertyKey)).isNull(); - }); - - } - - @Test - void test_mdc_pattern() { - - // Create the log event. - final SimpleMessage message = new SimpleMessage("Hello, World!"); - final StringMap contextData = new SortedArrayStringMap(); - final String mdcPatternMatchedKey = "mdcKey1"; - final String mdcPatternMatchedValue = "mdcValue1"; - contextData.putValue(mdcPatternMatchedKey, mdcPatternMatchedValue); - final String mdcPatternMismatchedKey = "mdcKey2"; - final String mdcPatternMismatchedValue = "mdcValue2"; - contextData.putValue(mdcPatternMismatchedKey, mdcPatternMismatchedValue); - final LogEvent logEvent = Log4jLogEvent - .newBuilder() - .setLoggerName(LOGGER_NAME) - .setLevel(Level.INFO) - .setMessage(message) - .setContextData(contextData) - .build(); - - // Check the serialized event. - testReadOnlyStringMapPattern( - mdcPatternMatchedKey, - mdcPatternMatchedValue, - mdcPatternMismatchedKey, - logEvent, - "mdc"); - - } - - @Test - public void test_map_pattern() { - - // Create the log event. - final String patternMatchedKey = "mapKey1"; - final String patternMatchedValue = "mapValue1"; - final String patternMismatchedKey = "mapKey2"; - final String patternMismatchedValue = "mapValue2"; - final Message message = new StringMapMessage() - .with(patternMatchedKey, patternMatchedValue) - .with(patternMismatchedKey, patternMismatchedValue); - final LogEvent logEvent = Log4jLogEvent - .newBuilder() - .setLoggerName(LOGGER_NAME) - .setLevel(Level.INFO) - .setMessage(message) - .build(); - - // Check the serialized event. - testReadOnlyStringMapPattern( - patternMatchedKey, - patternMatchedValue, - patternMismatchedKey, - logEvent, - "map"); - - } - - private static void testReadOnlyStringMapPattern( - final String patternMatchedKey, - final String patternMatchedValue, - final String patternMismatchedKey, - final LogEvent logEvent, - final String resolverName) { - - // Create the event template. - final String mapFieldName = "map"; - final String eventTemplate = writeJson(asMap( - mapFieldName, asMap( - "$resolver", resolverName, - "pattern", patternMatchedKey))); - - // Create the layout. - final JsonTemplateLayout layout = JsonTemplateLayout - .newBuilder() - .setConfiguration(CONFIGURATION) - .setStackTraceEnabled(true) - .setEventTemplate(eventTemplate) - .build(); - - // Check the serialized event. - usingSerializedLogEventAccessor(layout, logEvent, accessor -> { - assertThat(accessor.getString(new String[]{mapFieldName, patternMatchedKey})).isEqualTo(patternMatchedValue); - assertThat(accessor.exists(new String[]{mapFieldName, patternMismatchedKey})).isFalse(); - }); - - } - - @Test - void test_mdc_flatten() { - - // Create the log event. - final SimpleMessage message = new SimpleMessage("Hello, World!"); - final StringMap contextData = new SortedArrayStringMap(); - final String mdcPatternMatchedKey = "mdcKey1"; - final String mdcPatternMatchedValue = "mdcValue1"; - contextData.putValue(mdcPatternMatchedKey, mdcPatternMatchedValue); - final String mdcPatternMismatchedKey = "mdcKey2"; - final String mdcPatternMismatchedValue = "mdcValue2"; - contextData.putValue(mdcPatternMismatchedKey, mdcPatternMismatchedValue); - final LogEvent logEvent = Log4jLogEvent - .newBuilder() - .setLoggerName(LOGGER_NAME) - .setLevel(Level.INFO) - .setMessage(message) - .setContextData(contextData) - .build(); - - // Check the serialized event. - testReadOnlyStringMapFlatten( - mdcPatternMatchedKey, - mdcPatternMatchedValue, - mdcPatternMismatchedKey, - logEvent, - "mdc"); - - } - - @Test - public void test_map_flatten() { - - // Create the log event. - final String patternMatchedKey = "mapKey1"; - final String patternMatchedValue = "mapValue1"; - final String patternMismatchedKey = "mapKey2"; - final String patternMismatchedValue = "mapValue2"; - final Message message = new StringMapMessage() - .with(patternMatchedKey, patternMatchedValue) - .with(patternMismatchedKey, patternMismatchedValue); - final LogEvent logEvent = Log4jLogEvent - .newBuilder() - .setLoggerName(LOGGER_NAME) - .setLevel(Level.INFO) - .setMessage(message) - .build(); - - // Check the serialized event. - testReadOnlyStringMapFlatten( - patternMatchedKey, - patternMatchedValue, - patternMismatchedKey, - logEvent, - "map"); - - } - - private static void testReadOnlyStringMapFlatten( - final String patternMatchedKey, - final String patternMatchedValue, - final String patternMismatchedKey, - final LogEvent logEvent, - final String resolverName) { - - // Create the event template. - final String prefix = "_map."; - final String eventTemplate = writeJson(asMap( - "ignoredFieldName", asMap( - "$resolver", resolverName, - "pattern", patternMatchedKey, - "flatten", asMap("prefix", prefix)))); - - // Create the layout. - final JsonTemplateLayout layout = JsonTemplateLayout - .newBuilder() - .setConfiguration(CONFIGURATION) - .setStackTraceEnabled(true) - .setEventTemplate(eventTemplate) - .build(); - - // Check the serialized event. - usingSerializedLogEventAccessor(layout, logEvent, accessor -> { - assertThat(accessor.getString(prefix + patternMatchedKey)).isEqualTo(patternMatchedValue); - assertThat(accessor.exists(prefix + patternMismatchedKey)).isFalse(); - }); - - } - - @Test - void test_MapResolver() { - - // Create the log event. - final StringMapMessage message = new StringMapMessage().with("key1", "val1"); - final LogEvent logEvent = Log4jLogEvent - .newBuilder() - .setLoggerName(LOGGER_NAME) - .setLevel(Level.INFO) - .setMessage(message) - .build(); - - // Create the event template node with map values. - final String eventTemplate = writeJson(asMap( - "mapValue1", asMap( - "$resolver", "map", - "key", "key1"), - "mapValue2", asMap( - "$resolver", "map", - "key", "key?"))); - - // Create the layout. - final JsonTemplateLayout layout = JsonTemplateLayout - .newBuilder() - .setConfiguration(CONFIGURATION) - .setEventTemplate(eventTemplate) - .build(); - - // Check serialized event. - usingSerializedLogEventAccessor(layout, logEvent, accessor -> { - assertThat(accessor.getString("mapValue1")).isEqualTo("val1"); - assertThat(accessor.getString("mapValue2")).isNull(); - }); - - } - - @Test void test_StringMapMessage() { // Create the log event. diff --git a/log4j-layout-template-json/src/test/java/org/apache/logging/log4j/layout/template/json/resolver/ReadOnlyStringMapResolverTest.java b/log4j-layout-template-json/src/test/java/org/apache/logging/log4j/layout/template/json/resolver/ReadOnlyStringMapResolverTest.java index baaedef..921e153 100644 --- a/log4j-layout-template-json/src/test/java/org/apache/logging/log4j/layout/template/json/resolver/ReadOnlyStringMapResolverTest.java +++ b/log4j-layout-template-json/src/test/java/org/apache/logging/log4j/layout/template/json/resolver/ReadOnlyStringMapResolverTest.java @@ -1,13 +1,34 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache license, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the license for the specific language governing permissions and + * limitations under the license. + */ package org.apache.logging.log4j.layout.template.json.resolver; import org.apache.logging.log4j.core.LogEvent; import org.apache.logging.log4j.core.impl.Log4jLogEvent; import org.apache.logging.log4j.layout.template.json.JsonTemplateLayout; +import org.apache.logging.log4j.message.Message; +import org.apache.logging.log4j.message.SimpleMessage; +import org.apache.logging.log4j.message.StringMapMessage; import org.apache.logging.log4j.util.SortedArrayStringMap; import org.apache.logging.log4j.util.StringMap; import org.assertj.core.api.Assertions; import org.junit.jupiter.api.Test; +import java.util.Arrays; +import java.util.List; import java.util.regex.PatternSyntaxException; import static org.apache.logging.log4j.layout.template.json.TestHelpers.*; @@ -57,7 +78,7 @@ class ReadOnlyStringMapResolverTest { "replacement cannot be provided without a pattern"); } - private void verifyConfigFailure( + private static void verifyConfigFailure( final String eventTemplate, final Class<? extends Throwable> failureClass, final String failureMessage) { @@ -104,4 +125,329 @@ class ReadOnlyStringMapResolverTest { } + @Test + void test_mdc_key_access() { + + // Create the log event. + final SimpleMessage message = new SimpleMessage("Hello, World!"); + final StringMap contextData = new SortedArrayStringMap(); + final String mdcDirectlyAccessedKey = "mdcKey1"; + final String mdcDirectlyAccessedValue = "mdcValue1"; + contextData.putValue(mdcDirectlyAccessedKey, mdcDirectlyAccessedValue); + final String mdcDirectlyAccessedNullPropertyKey = "mdcKey2"; + contextData.putValue(mdcDirectlyAccessedNullPropertyKey, null); + final LogEvent logEvent = Log4jLogEvent + .newBuilder() + .setMessage(message) + .setContextData(contextData) + .build(); + + // Check the serialized event. + testReadOnlyStringMapKeyAccess( + mdcDirectlyAccessedKey, + mdcDirectlyAccessedValue, + mdcDirectlyAccessedNullPropertyKey, + logEvent, + "mdc"); + + } + + @Test + public void test_map_key_access() { + + // Create the log event. + final String directlyAccessedKey = "mapKey1"; + final String directlyAccessedValue = "mapValue1"; + final String directlyAccessedNullPropertyKey = "mapKey2"; + final Message message = new StringMapMessage() + .with(directlyAccessedKey, directlyAccessedValue); + final LogEvent logEvent = Log4jLogEvent + .newBuilder() + .setMessage(message) + .build(); + + // Check the serialized event. + testReadOnlyStringMapKeyAccess( + directlyAccessedKey, + directlyAccessedValue, + directlyAccessedNullPropertyKey, + logEvent, + "map"); + + } + + private static void testReadOnlyStringMapKeyAccess( + final String directlyAccessedKey, + final String directlyAccessedValue, + final String directlyAccessedNullPropertyKey, + final LogEvent logEvent, + final String resolverName) { + + // Create the event template. + String eventTemplate = writeJson(asMap( + directlyAccessedKey, asMap( + "$resolver", resolverName, + "key", directlyAccessedKey), + directlyAccessedNullPropertyKey, asMap( + "$resolver", resolverName, + "key", directlyAccessedNullPropertyKey))); + + // Create the layout. + final JsonTemplateLayout layout = JsonTemplateLayout + .newBuilder() + .setConfiguration(CONFIGURATION) + .setStackTraceEnabled(true) + .setEventTemplate(eventTemplate) + .build(); + + // Check the serialized event. + usingSerializedLogEventAccessor(layout, logEvent, accessor -> { + assertThat(accessor.getString(directlyAccessedKey)).isEqualTo(directlyAccessedValue); + assertThat(accessor.getString(directlyAccessedNullPropertyKey)).isNull(); + }); + + } + + @Test + void test_mdc_pattern() { + + // Create the log event. + final SimpleMessage message = new SimpleMessage("Hello, World!"); + final StringMap contextData = new SortedArrayStringMap(); + final String mdcPatternMatchedKey = "mdcKey1"; + final String mdcPatternMatchedValue = "mdcValue1"; + contextData.putValue(mdcPatternMatchedKey, mdcPatternMatchedValue); + final String mdcPatternMismatchedKey = "mdcKey2"; + final String mdcPatternMismatchedValue = "mdcValue2"; + contextData.putValue(mdcPatternMismatchedKey, mdcPatternMismatchedValue); + final LogEvent logEvent = Log4jLogEvent + .newBuilder() + .setMessage(message) + .setContextData(contextData) + .build(); + + // Check the serialized event. + testReadOnlyStringMapPattern( + mdcPatternMatchedKey, + mdcPatternMatchedValue, + mdcPatternMismatchedKey, + logEvent, + "mdc"); + + } + + @Test + public void test_map_pattern() { + + // Create the log event. + final String patternMatchedKey = "mapKey1"; + final String patternMatchedValue = "mapValue1"; + final String patternMismatchedKey = "mapKey2"; + final String patternMismatchedValue = "mapValue2"; + final Message message = new StringMapMessage() + .with(patternMatchedKey, patternMatchedValue) + .with(patternMismatchedKey, patternMismatchedValue); + final LogEvent logEvent = Log4jLogEvent + .newBuilder() + .setMessage(message) + .build(); + + // Check the serialized event. + testReadOnlyStringMapPattern( + patternMatchedKey, + patternMatchedValue, + patternMismatchedKey, + logEvent, + "map"); + + } + + private static void testReadOnlyStringMapPattern( + final String patternMatchedKey, + final String patternMatchedValue, + final String patternMismatchedKey, + final LogEvent logEvent, + final String resolverName) { + + // Create the event template. + final String mapFieldName = "map"; + final String eventTemplate = writeJson(asMap( + mapFieldName, asMap( + "$resolver", resolverName, + "pattern", patternMatchedKey))); + + // Create the layout. + final JsonTemplateLayout layout = JsonTemplateLayout + .newBuilder() + .setConfiguration(CONFIGURATION) + .setStackTraceEnabled(true) + .setEventTemplate(eventTemplate) + .build(); + + // Check the serialized event. + usingSerializedLogEventAccessor(layout, logEvent, accessor -> { + assertThat(accessor.getString(new String[]{mapFieldName, patternMatchedKey})).isEqualTo(patternMatchedValue); + assertThat(accessor.exists(new String[]{mapFieldName, patternMismatchedKey})).isFalse(); + }); + + } + + @Test + void test_mdc_flatten() { + + // Create the log event. + final SimpleMessage message = new SimpleMessage("Hello, World!"); + final StringMap contextData = new SortedArrayStringMap(); + final String mdcPatternMatchedKey = "mdcKey1"; + final String mdcPatternMatchedValue = "mdcValue1"; + contextData.putValue(mdcPatternMatchedKey, mdcPatternMatchedValue); + final String mdcPatternMismatchedKey = "mdcKey2"; + final String mdcPatternMismatchedValue = "mdcValue2"; + contextData.putValue(mdcPatternMismatchedKey, mdcPatternMismatchedValue); + final LogEvent logEvent = Log4jLogEvent + .newBuilder() + .setMessage(message) + .setContextData(contextData) + .build(); + + // Check the serialized event. + testReadOnlyStringMapFlatten( + mdcPatternMatchedKey, + mdcPatternMatchedValue, + mdcPatternMismatchedKey, + logEvent, + "mdc"); + + } + + @Test + public void test_map_flatten() { + + // Create the log event. + final String patternMatchedKey = "mapKey1"; + final String patternMatchedValue = "mapValue1"; + final String patternMismatchedKey = "mapKey2"; + final String patternMismatchedValue = "mapValue2"; + final Message message = new StringMapMessage() + .with(patternMatchedKey, patternMatchedValue) + .with(patternMismatchedKey, patternMismatchedValue); + final LogEvent logEvent = Log4jLogEvent + .newBuilder() + .setMessage(message) + .build(); + + // Check the serialized event. + testReadOnlyStringMapFlatten( + patternMatchedKey, + patternMatchedValue, + patternMismatchedKey, + logEvent, + "map"); + + } + + private static void testReadOnlyStringMapFlatten( + final String patternMatchedKey, + final String patternMatchedValue, + final String patternMismatchedKey, + final LogEvent logEvent, + final String resolverName) { + + // Create the event template. + final String prefix = "_map."; + final String eventTemplate = writeJson(asMap( + "ignoredFieldName", asMap( + "$resolver", resolverName, + "pattern", patternMatchedKey, + "flatten", asMap("prefix", prefix)))); + + // Create the layout. + final JsonTemplateLayout layout = JsonTemplateLayout + .newBuilder() + .setConfiguration(CONFIGURATION) + .setStackTraceEnabled(true) + .setEventTemplate(eventTemplate) + .build(); + + // Check the serialized event. + usingSerializedLogEventAccessor(layout, logEvent, accessor -> { + assertThat(accessor.getString(prefix + patternMatchedKey)).isEqualTo(patternMatchedValue); + assertThat(accessor.exists(prefix + patternMismatchedKey)).isFalse(); + }); + + } + + @Test + void test_MapResolver() { + + // Create the log event. + final StringMapMessage message = new StringMapMessage().with("key1", "val1"); + final LogEvent logEvent = Log4jLogEvent + .newBuilder() + .setMessage(message) + .build(); + + // Create the event template node with map values. + final String eventTemplate = writeJson(asMap( + "mapValue1", asMap( + "$resolver", "map", + "key", "key1"), + "mapValue2", asMap( + "$resolver", "map", + "key", "key?"))); + + // Create the layout. + final JsonTemplateLayout layout = JsonTemplateLayout + .newBuilder() + .setConfiguration(CONFIGURATION) + .setEventTemplate(eventTemplate) + .build(); + + // Check serialized event. + usingSerializedLogEventAccessor(layout, logEvent, accessor -> { + assertThat(accessor.getString("mapValue1")).isEqualTo("val1"); + assertThat(accessor.getString("mapValue2")).isNull(); + }); + + } + + @Test + void test_MapMessage_keyed_access() { + + // Create the event template. + final String key = "list"; + final String eventTemplate = writeJson(asMap( + "typedValue", asMap( + "$resolver", "map", + "key", key), + "stringifiedValue", asMap( + "$resolver", "map", + "key", key, + "stringified", true))); + + // Create the layout. + final JsonTemplateLayout layout = JsonTemplateLayout + .newBuilder() + .setConfiguration(CONFIGURATION) + .setEventTemplate(eventTemplate) + .build(); + + // Create the log event with a MapMessage. + final List<Integer> value = Arrays.asList(1, 2); + final StringMapMessage mapMessage = new StringMapMessage() + .with(key, value); + final LogEvent logEvent = Log4jLogEvent + .newBuilder() + .setMessage(mapMessage) + .setTimeMillis(System.currentTimeMillis()) + .build(); + + // Check the serialized event. + usingSerializedLogEventAccessor(layout, logEvent, accessor -> { + assertThat(accessor.getObject("typedValue")).isEqualTo(value); + assertThat(accessor.getString("stringifiedValue")).isEqualTo(String.valueOf(value)); + }); + + } + }
