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 55fa62b8ad337b7b9ae875b4b3e221c98199da03 Author: Volkan Yazici <[email protected]> AuthorDate: Wed Jul 7 10:55:45 2021 +0200 Consolidate MessageResolver tests. --- .../template/json/JsonTemplateLayoutTest.java | 165 +-------------------- .../json/resolver/MessageResolverTest.java | 158 ++++++++++++++++++++ 2 files changed, 159 insertions(+), 164 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 fa0d275..95210b8 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 @@ -49,8 +49,6 @@ import org.apache.logging.log4j.message.ReusableMessageFactory; import org.apache.logging.log4j.message.SimpleMessage; import org.apache.logging.log4j.message.StringMapMessage; import org.apache.logging.log4j.test.AvailablePortFinder; -import org.apache.logging.log4j.util.SortedArrayStringMap; -import org.apache.logging.log4j.util.StringMap; import org.apache.logging.log4j.util.Strings; import org.assertj.core.api.Assertions; import org.junit.jupiter.api.Test; @@ -72,7 +70,6 @@ import java.time.temporal.TemporalAccessor; import java.util.ArrayList; import java.util.Arrays; import java.util.Collections; -import java.util.LinkedHashMap; import java.util.List; import java.util.Map; import java.util.concurrent.ArrayBlockingQueue; @@ -82,10 +79,7 @@ import java.util.concurrent.atomic.AtomicInteger; import java.util.stream.Collectors; import java.util.stream.IntStream; -import static org.apache.logging.log4j.layout.template.json.TestHelpers.CONFIGURATION; -import static org.apache.logging.log4j.layout.template.json.TestHelpers.asMap; -import static org.apache.logging.log4j.layout.template.json.TestHelpers.usingSerializedLogEventAccessor; -import static org.apache.logging.log4j.layout.template.json.TestHelpers.writeJson; +import static org.apache.logging.log4j.layout.template.json.TestHelpers.*; import static org.assertj.core.api.Assertions.assertThat; @SuppressWarnings("DoubleBraceInitialization") @@ -293,91 +287,6 @@ class JsonTemplateLayoutTest { } @Test - void test_MapMessage_serialization() { - - // Create the event template. - final String eventTemplate = writeJson(asMap( - "message", asMap("$resolver", "message"))); - - // Create the layout. - final JsonTemplateLayout layout = JsonTemplateLayout - .newBuilder() - .setConfiguration(CONFIGURATION) - .setEventTemplate(eventTemplate) - .build(); - - // Create the log event with a MapMessage. - final StringMapMessage mapMessage = new StringMapMessage() - .with("key1", "val1") - .with("key2", 0xDEADBEEF) - .with("key3", Collections.singletonMap("key3.1", "val3.1")); - 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.getString(new String[]{"message", "key1"})).isEqualTo("val1"); - assertThat(accessor.getInteger(new String[]{"message", "key2"})).isEqualTo(0xDEADBEEF); - assertThat(accessor.getString(new String[]{"message", "key3", "key3.1"})).isEqualTo("val3.1"); - }); - - } - - @Test - void test_message_fallbackKey() { - - // Create the event template. - final String eventTemplate = writeJson(asMap( - "message", asMap( - "$resolver", "message", - "fallbackKey", "formattedMessage"))); - - // Create the layout. - final JsonTemplateLayout layout = JsonTemplateLayout - .newBuilder() - .setConfiguration(CONFIGURATION) - .setEventTemplate(eventTemplate) - .build(); - - // Create a log event with a MapMessage. - final Message mapMessage = new StringMapMessage() - .with("key1", "val1"); - final LogEvent mapMessageLogEvent = Log4jLogEvent - .newBuilder() - .setLoggerName(LOGGER_NAME) - .setLevel(Level.INFO) - .setMessage(mapMessage) - .setTimeMillis(System.currentTimeMillis()) - .build(); - - // Check the serialized MapMessage. - usingSerializedLogEventAccessor(layout, mapMessageLogEvent, accessor -> - assertThat(accessor.getString(new String[]{"message", "key1"})) - .isEqualTo("val1")); - - // Create a log event with a SimpleMessage. - final Message simpleMessage = new SimpleMessage("simple"); - final LogEvent simpleMessageLogEvent = Log4jLogEvent - .newBuilder() - .setLoggerName(LOGGER_NAME) - .setLevel(Level.INFO) - .setMessage(simpleMessage) - .setTimeMillis(System.currentTimeMillis()) - .build(); - - // Check the serialized MapMessage. - usingSerializedLogEventAccessor(layout, simpleMessageLogEvent, accessor -> - assertThat(accessor.getString(new String[]{"message", "formattedMessage"})) - .isEqualTo("simple")); - - } - - @Test void test_property_injection() { // Create the log event. @@ -666,78 +575,6 @@ class JsonTemplateLayoutTest { } @Test - void test_StringMapMessage() { - - // Create the log event. - final StringMapMessage message = new StringMapMessage(); - message.put("message", "Hello, World!"); - message.put("bottle", "Kickapoo Joy Juice"); - final LogEvent logEvent = Log4jLogEvent - .newBuilder() - .setLoggerName(LOGGER_NAME) - .setLevel(Level.INFO) - .setMessage(message) - .build(); - - // Create the event template. - final String eventTemplate = writeJson(asMap( - "message", asMap("$resolver", "message"))); - - // 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[]{"message", "message"})).isEqualTo("Hello, World!"); - assertThat(accessor.getString(new String[]{"message", "bottle"})).isEqualTo("Kickapoo Joy Juice"); - }); - - } - - @Test - void test_ObjectMessage() { - - // Create the log event. - final int id = 0xDEADBEEF; - final String name = "name-" + id; - final Object attachment = new LinkedHashMap<String, Object>() {{ - put("id", id); - put("name", name); - }}; - final ObjectMessage message = new ObjectMessage(attachment); - final LogEvent logEvent = Log4jLogEvent - .newBuilder() - .setLoggerName(LOGGER_NAME) - .setLevel(Level.INFO) - .setMessage(message) - .build(); - - // Create the event template. - final String eventTemplate = writeJson(asMap( - "message", asMap("$resolver", "message"))); - - // Create the layout. - JsonTemplateLayout layout = JsonTemplateLayout - .newBuilder() - .setConfiguration(CONFIGURATION) - .setStackTraceEnabled(true) - .setEventTemplate(eventTemplate) - .build(); - - // Check the serialized event. - usingSerializedLogEventAccessor(layout, logEvent, accessor -> { - assertThat(accessor.getInteger(new String[]{"message", "id"})).isEqualTo(id); - assertThat(accessor.getString(new String[]{"message", "name"})).isEqualTo(name); - }); - - } - - @Test void test_StackTraceElement_template() { // Create the stack trace element template. diff --git a/log4j-layout-template-json/src/test/java/org/apache/logging/log4j/layout/template/json/resolver/MessageResolverTest.java b/log4j-layout-template-json/src/test/java/org/apache/logging/log4j/layout/template/json/resolver/MessageResolverTest.java index 5dccd47..595ee91 100644 --- a/log4j-layout-template-json/src/test/java/org/apache/logging/log4j/layout/template/json/resolver/MessageResolverTest.java +++ b/log4j-layout-template-json/src/test/java/org/apache/logging/log4j/layout/template/json/resolver/MessageResolverTest.java @@ -16,19 +16,30 @@ */ 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.junit.LoggerContextSource; import org.apache.logging.log4j.junit.Named; +import org.apache.logging.log4j.layout.template.json.JsonTemplateLayout; import org.apache.logging.log4j.layout.template.json.util.JsonReader; +import org.apache.logging.log4j.message.Message; +import org.apache.logging.log4j.message.ObjectMessage; +import org.apache.logging.log4j.message.SimpleMessage; +import org.apache.logging.log4j.message.StringMapMessage; import org.apache.logging.log4j.test.appender.ListAppender; import org.assertj.core.api.Assertions; import org.junit.jupiter.api.Test; import java.nio.charset.StandardCharsets; import java.util.Collections; +import java.util.LinkedHashMap; import java.util.List; import java.util.stream.Collectors; import java.util.stream.Stream; +import static org.apache.logging.log4j.layout.template.json.TestHelpers.*; +import static org.assertj.core.api.Assertions.assertThat; + class MessageResolverTest { /** @@ -74,4 +85,151 @@ class MessageResolverTest { } + @Test + void test_message_fallbackKey() { + + // Create the event template. + final String eventTemplate = writeJson(asMap( + "message", asMap( + "$resolver", "message", + "fallbackKey", "formattedMessage"))); + + // Create the layout. + final JsonTemplateLayout layout = JsonTemplateLayout + .newBuilder() + .setConfiguration(CONFIGURATION) + .setEventTemplate(eventTemplate) + .build(); + + // Create a log event with a MapMessage. + final Message mapMessage = new StringMapMessage() + .with("key1", "val1"); + final LogEvent mapMessageLogEvent = Log4jLogEvent + .newBuilder() + .setMessage(mapMessage) + .setTimeMillis(System.currentTimeMillis()) + .build(); + + // Check the serialized MapMessage. + usingSerializedLogEventAccessor(layout, mapMessageLogEvent, accessor -> + assertThat(accessor.getString(new String[]{"message", "key1"})) + .isEqualTo("val1")); + + // Create a log event with a SimpleMessage. + final Message simpleMessage = new SimpleMessage("simple"); + final LogEvent simpleMessageLogEvent = Log4jLogEvent + .newBuilder() + .setMessage(simpleMessage) + .setTimeMillis(System.currentTimeMillis()) + .build(); + + // Check the serialized MapMessage. + usingSerializedLogEventAccessor(layout, simpleMessageLogEvent, accessor -> + assertThat(accessor.getString(new String[]{"message", "formattedMessage"})) + .isEqualTo("simple")); + + } + + @Test + void test_StringMapMessage() { + + // Create the log event. + final StringMapMessage message = new StringMapMessage(); + message.put("message", "Hello, World!"); + message.put("bottle", "Kickapoo Joy Juice"); + final LogEvent logEvent = Log4jLogEvent + .newBuilder() + .setMessage(message) + .build(); + + // Create the event template. + final String eventTemplate = writeJson(asMap( + "message", asMap("$resolver", "message"))); + + // 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[]{"message", "message"})).isEqualTo("Hello, World!"); + assertThat(accessor.getString(new String[]{"message", "bottle"})).isEqualTo("Kickapoo Joy Juice"); + }); + + } + + @Test + void test_ObjectMessage() { + + // Create the log event. + final int id = 0xDEADBEEF; + final String name = "name-" + id; + final Object attachment = new LinkedHashMap<String, Object>() {{ + put("id", id); + put("name", name); + }}; + final ObjectMessage message = new ObjectMessage(attachment); + final LogEvent logEvent = Log4jLogEvent + .newBuilder() + .setMessage(message) + .build(); + + // Create the event template. + final String eventTemplate = writeJson(asMap( + "message", asMap("$resolver", "message"))); + + // Create the layout. + JsonTemplateLayout layout = JsonTemplateLayout + .newBuilder() + .setConfiguration(CONFIGURATION) + .setStackTraceEnabled(true) + .setEventTemplate(eventTemplate) + .build(); + + // Check the serialized event. + usingSerializedLogEventAccessor(layout, logEvent, accessor -> { + assertThat(accessor.getInteger(new String[]{"message", "id"})).isEqualTo(id); + assertThat(accessor.getString(new String[]{"message", "name"})).isEqualTo(name); + }); + + } + + @Test + void test_MapMessage_serialization() { + + // Create the event template. + final String eventTemplate = writeJson(asMap( + "message", asMap("$resolver", "message"))); + + // Create the layout. + final JsonTemplateLayout layout = JsonTemplateLayout + .newBuilder() + .setConfiguration(CONFIGURATION) + .setEventTemplate(eventTemplate) + .build(); + + // Create the log event with a MapMessage. + final StringMapMessage mapMessage = new StringMapMessage() + .with("key1", "val1") + .with("key2", 0xDEADBEEF) + .with("key3", Collections.singletonMap("key3.1", "val3.1")); + final LogEvent logEvent = Log4jLogEvent + .newBuilder() + .setMessage(mapMessage) + .setTimeMillis(System.currentTimeMillis()) + .build(); + + // Check the serialized event. + usingSerializedLogEventAccessor(layout, logEvent, accessor -> { + assertThat(accessor.getString(new String[]{"message", "key1"})).isEqualTo("val1"); + assertThat(accessor.getInteger(new String[]{"message", "key2"})).isEqualTo(0xDEADBEEF); + assertThat(accessor.getString(new String[]{"message", "key3", "key3.1"})).isEqualTo("val3.1"); + }); + + } + }
