This is an automated email from the ASF dual-hosted git repository. ramanathan1504 pushed a commit to branch fix-trace-metadata-1976 in repository https://gitbox.apache.org/repos/asf/logging-log4j2.git
commit df747d0fd56df471b61af047be9598a0e580bb7c Author: Ramanathan <[email protected]> AuthorDate: Sat Jul 4 14:17:24 2026 +0530 Add tests for tracing fields serialization and pattern converters --- .../logging/log4j/core/impl/Log4jLogEventTest.java | 22 +++++++++-- .../core/impl/TraceContextIntegrationTest.java | 45 ++++++++++++++++++++++ 2 files changed, 64 insertions(+), 3 deletions(-) diff --git a/log4j-core-test/src/test/java/org/apache/logging/log4j/core/impl/Log4jLogEventTest.java b/log4j-core-test/src/test/java/org/apache/logging/log4j/core/impl/Log4jLogEventTest.java index ce7cf8d769..082519142f 100644 --- a/log4j-core-test/src/test/java/org/apache/logging/log4j/core/impl/Log4jLogEventTest.java +++ b/log4j-core-test/src/test/java/org/apache/logging/log4j/core/impl/Log4jLogEventTest.java @@ -662,7 +662,6 @@ public class Log4jLogEventTest { } }; - // Assert Java 8 default method fallbacks return null without throwing abstract method exceptions assertNull(legacyEvent.getTraceId()); assertNull(legacyEvent.getSpanId()); assertNull(legacyEvent.getTraceFlags()); @@ -679,15 +678,32 @@ public class Log4jLogEventTest { .setTraceFlags("01") .build(); - // 1. Verify getters on original assertThat(originalEvent.getTraceId()).isEqualTo("4bf92f3577b34da6a3ce929d0e0e4736"); assertThat(originalEvent.getSpanId()).isEqualTo("00f067aa0ba902b7"); assertThat(originalEvent.getTraceFlags()).isEqualTo("01"); - // 2. Verify Builder Copy Constructor final Log4jLogEvent copiedEvent = new Log4jLogEvent.Builder(originalEvent).build(); assertThat(copiedEvent.getTraceId()).isEqualTo("4bf92f3577b34da6a3ce929d0e0e4736"); assertThat(copiedEvent.getSpanId()).isEqualTo("00f067aa0ba902b7"); assertThat(copiedEvent.getTraceFlags()).isEqualTo("01"); } + + @Test + void testTracingFieldsSerialization() throws Exception { + final Log4jLogEvent originalEvent = Log4jLogEvent.newBuilder() + .setLoggerName("SerializationLogger") + .setMessage(new org.apache.logging.log4j.message.SimpleMessage("dummy message")) + .setTraceId("trace-serialize-123") + .setSpanId("span-serialize-456") + .setTraceFlags("01") + .build(); + + final byte[] serializedBytes = serialize(originalEvent); + + final Log4jLogEvent deserializedEvent = deserialize(serializedBytes); + + assertThat(deserializedEvent.getTraceId()).isEqualTo("trace-serialize-123"); + assertThat(deserializedEvent.getSpanId()).isEqualTo("span-serialize-456"); + assertThat(deserializedEvent.getTraceFlags()).isEqualTo("01"); + } } diff --git a/log4j-core-test/src/test/java/org/apache/logging/log4j/core/impl/TraceContextIntegrationTest.java b/log4j-core-test/src/test/java/org/apache/logging/log4j/core/impl/TraceContextIntegrationTest.java index 3f966b877f..48aebe6026 100644 --- a/log4j-core-test/src/test/java/org/apache/logging/log4j/core/impl/TraceContextIntegrationTest.java +++ b/log4j-core-test/src/test/java/org/apache/logging/log4j/core/impl/TraceContextIntegrationTest.java @@ -24,6 +24,9 @@ import org.apache.logging.log4j.ThreadContext; import org.apache.logging.log4j.core.LogEvent; import org.apache.logging.log4j.core.async.RingBufferLogEvent; import org.apache.logging.log4j.core.async.RingBufferLogEventTranslator; +import org.apache.logging.log4j.core.pattern.SpanIdPatternConverter; +import org.apache.logging.log4j.core.pattern.TraceFlagsPatternConverter; +import org.apache.logging.log4j.core.pattern.TraceIdPatternConverter; import org.apache.logging.log4j.core.util.ClockFactory; import org.apache.logging.log4j.core.util.DummyNanoClock; import org.apache.logging.log4j.core.util.TraceContextProviderService; @@ -146,4 +149,46 @@ public class TraceContextIntegrationTest { }) .doesNotThrowAnyException(); } + + @Test + public void testTracePatternConverters() { + // 1. Setup an event with trace data + final LogEvent event = Log4jLogEvent.newBuilder() + .setTraceId("test-trace-123") + .setSpanId("test-span-456") + .setTraceFlags("01") + .build(); + + // 2. Test Trace ID Converter + final StringBuilder traceSb = new StringBuilder(); + org.apache.logging.log4j.core.pattern.TraceIdPatternConverter.newInstance(null) + .format(event, traceSb); + assertThat(traceSb.toString()).isEqualTo("test-trace-123"); + + // 3. Test Span ID Converter + final StringBuilder spanSb = new StringBuilder(); + org.apache.logging.log4j.core.pattern.SpanIdPatternConverter.newInstance(null) + .format(event, spanSb); + assertThat(spanSb.toString()).isEqualTo("test-span-456"); + + // 4. Test Trace Flags Converter + final StringBuilder flagsSb = new StringBuilder(); + org.apache.logging.log4j.core.pattern.TraceFlagsPatternConverter.newInstance(null) + .format(event, flagsSb); + assertThat(flagsSb.toString()).isEqualTo("01"); + } + + @Test + public void testTracePatternConvertersWithNullValues() { + TestTraceContextProvider.clearContext(); + + final LogEvent event = Log4jLogEvent.newBuilder().build(); + final StringBuilder sb = new StringBuilder(); + + TraceIdPatternConverter.newInstance(null).format(event, sb); + SpanIdPatternConverter.newInstance(null).format(event, sb); + TraceFlagsPatternConverter.newInstance(null).format(event, sb); + + assertThat(sb.toString()).isEmpty(); + } }
