Skip to content

Commit 2d8ba00

Browse files
authored
convert Log4j mdc test from groovy to java (#8170)
Related to #7195
1 parent 1adc5d3 commit 2d8ba00

File tree

5 files changed

+131
-106
lines changed

5 files changed

+131
-106
lines changed

instrumentation/log4j/log4j-mdc-1.2/javaagent/src/test/groovy/ListAppender.groovy

-29
This file was deleted.

instrumentation/log4j/log4j-mdc-1.2/javaagent/src/test/groovy/Log4j1MdcTest.groovy

-76
This file was deleted.
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
/*
2+
* Copyright The OpenTelemetry Authors
3+
* SPDX-License-Identifier: Apache-2.0
4+
*/
5+
6+
package io.opentelemetry.javaagent.instrumentation.log4j.mdc.v1_2;
7+
8+
import java.util.ArrayList;
9+
import java.util.List;
10+
import org.apache.log4j.AppenderSkeleton;
11+
import org.apache.log4j.spi.LoggingEvent;
12+
13+
public class ListAppender extends AppenderSkeleton {
14+
15+
private static final List<LoggingEvent> events = new ArrayList<LoggingEvent>();
16+
17+
@Override
18+
protected void append(LoggingEvent loggingEvent) {
19+
events.add(loggingEvent);
20+
}
21+
22+
@Override
23+
public boolean requiresLayout() {
24+
return false;
25+
}
26+
27+
@Override
28+
public void close() {}
29+
30+
public static void clearEvents() {
31+
events.clear();
32+
}
33+
34+
public static List<LoggingEvent> getEvents() {
35+
return events;
36+
}
37+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,93 @@
1+
/*
2+
* Copyright The OpenTelemetry Authors
3+
* SPDX-License-Identifier: Apache-2.0
4+
*/
5+
6+
package io.opentelemetry.javaagent.instrumentation.log4j.mdc.v1_2;
7+
8+
import static org.junit.jupiter.api.Assertions.assertEquals;
9+
import static org.junit.jupiter.api.Assertions.assertNull;
10+
11+
import io.opentelemetry.api.trace.Span;
12+
import io.opentelemetry.instrumentation.testing.junit.AgentInstrumentationExtension;
13+
import io.opentelemetry.instrumentation.testing.junit.InstrumentationExtension;
14+
import java.util.List;
15+
import org.apache.log4j.LogManager;
16+
import org.apache.log4j.Logger;
17+
import org.apache.log4j.spi.LoggingEvent;
18+
import org.junit.jupiter.api.BeforeEach;
19+
import org.junit.jupiter.api.Test;
20+
import org.junit.jupiter.api.extension.RegisterExtension;
21+
22+
public class Log4j1MdcTest {
23+
24+
@RegisterExtension
25+
private static final InstrumentationExtension testing = AgentInstrumentationExtension.create();
26+
27+
private static final Logger logger = LogManager.getLogger("TestLogger");
28+
29+
@BeforeEach
30+
void cleanup() {
31+
ListAppender.clearEvents();
32+
}
33+
34+
@Test
35+
void noIdsWhenNoSpan() {
36+
logger.info("log message 1");
37+
logger.info("log message 2");
38+
39+
List<LoggingEvent> events = ListAppender.getEvents();
40+
41+
assertEquals(2, events.size());
42+
assertEquals("log message 1", events.get(0).getMessage());
43+
assertNull(events.get(0).getMDC("trace_id"));
44+
assertNull(events.get(0).getMDC("span_id"));
45+
assertNull(events.get(0).getMDC("trace_flags"));
46+
47+
assertEquals("log message 2", events.get(1).getMessage());
48+
assertNull(events.get(1).getMDC("trace_id"));
49+
assertNull(events.get(1).getMDC("span_id"));
50+
assertNull(events.get(1).getMDC("trace_flags"));
51+
}
52+
53+
@Test
54+
void idsWhenSpan() {
55+
Span span1 =
56+
testing.runWithSpan(
57+
"test",
58+
() -> {
59+
logger.info("log message 1");
60+
return Span.current();
61+
});
62+
63+
logger.info("log message 2");
64+
65+
Span span2 =
66+
testing.runWithSpan(
67+
"test 2",
68+
() -> {
69+
logger.info("log message 3");
70+
return Span.current();
71+
});
72+
73+
List<LoggingEvent> events = ListAppender.getEvents();
74+
75+
assertEquals(3, events.size());
76+
assertEquals("log message 1", events.get(0).getMessage());
77+
assertEquals(events.get(0).getMDC("trace_id"), span1.getSpanContext().getTraceId());
78+
assertEquals(events.get(0).getMDC("span_id"), span1.getSpanContext().getSpanId());
79+
assertEquals(events.get(0).getMDC("trace_flags"), "01");
80+
81+
assertEquals("log message 2", events.get(1).getMessage());
82+
assertNull(events.get(1).getMDC("trace_id"));
83+
assertNull(events.get(1).getMDC("span_id"));
84+
assertNull(events.get(1).getMDC("trace_flags"));
85+
86+
assertEquals("log message 3", events.get(2).getMessage());
87+
// this explicit getMDCCopy() call here is to make sure that whole instrumentation is tested
88+
events.get(2).getMDCCopy();
89+
assertEquals(events.get(2).getMDC("trace_id"), span2.getSpanContext().getTraceId());
90+
assertEquals(events.get(2).getMDC("span_id"), span2.getSpanContext().getSpanId());
91+
assertEquals(events.get(2).getMDC("trace_flags"), "01");
92+
}
93+
}
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,2 @@
11
log4j.rootLogger=INFO, LIST
2-
log4j.appender.LIST=ListAppender
2+
log4j.appender.LIST=io.opentelemetry.javaagent.instrumentation.log4j.mdc.v1_2.ListAppender

0 commit comments

Comments
 (0)