Skip to content

Commit ed9c9d8

Browse files
committed
Migrate dd-trace-ot tests to JUnit 5
1 parent 50466f1 commit ed9c9d8

32 files changed

Lines changed: 1974 additions & 1976 deletions

dd-trace-ot/build.gradle.kts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -66,6 +66,7 @@ dependencies {
6666
implementation(project(":dd-trace-ot:correlation-id-injection"))
6767

6868
testImplementation(project(":dd-java-agent:testing"))
69+
testImplementation(libs.bundles.mockito)
6970

7071
// Kotlin accessors not generated if not coming from plugin
7172
add("ot33CompatibilityTestImplementation", "io.opentracing:opentracing-api") {

dd-trace-ot/correlation-id-injection/build.gradle.kts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,7 @@ dependencies {
2828
testImplementation(libs.guava)
2929
testImplementation(project(":dd-trace-ot"))
3030
testImplementation(project(":dd-java-agent:testing"))
31+
testImplementation(libs.bundles.mockito)
3132
testImplementation("org.apache.logging.log4j:log4j-core:$log4j2")
3233
testImplementation("ch.qos.logback:logback-core:$logback")
3334
}

dd-trace-ot/correlation-id-injection/src/test/groovy/CorrelationIdInjectorTest.groovy

Lines changed: 0 additions & 74 deletions
This file was deleted.

dd-trace-ot/correlation-id-injection/src/test/groovy/Log4j2CorrelationIdInjectorTest.groovy

Lines changed: 0 additions & 64 deletions
This file was deleted.

dd-trace-ot/correlation-id-injection/src/test/groovy/Slf4jCorrelationIdInjectorTest.groovy

Lines changed: 0 additions & 63 deletions
This file was deleted.
Lines changed: 92 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,92 @@
1+
import static org.junit.jupiter.api.Assertions.assertEquals;
2+
3+
import datadog.opentracing.DDTracer;
4+
import datadog.trace.api.CorrelationIdentifier;
5+
import datadog.trace.api.GlobalTracer;
6+
import datadog.trace.test.util.DDJavaSpecification;
7+
import io.opentracing.Scope;
8+
import io.opentracing.Span;
9+
import org.junit.jupiter.api.Test;
10+
11+
abstract class CorrelationIdInjectorTest extends DDJavaSpecification {
12+
13+
String logPattern =
14+
"TRACE_ID=%X{"
15+
+ CorrelationIdentifier.getTraceIdKey()
16+
+ "} SPAN_ID=%X{"
17+
+ CorrelationIdentifier.getSpanIdKey()
18+
+ "} %m";
19+
20+
@Test
21+
void testCorrelationIdInjection() throws Exception {
22+
DDTracer tracer = buildTracer();
23+
LogJournal journal = buildJournal();
24+
TestLogger logger = buildLogger();
25+
26+
logger.log("Event without context");
27+
28+
assertEquals("TRACE_ID= SPAN_ID= Event without context", journal.nextLog());
29+
30+
Span rootSpan = tracer.buildSpan("operation1").start();
31+
Scope rootScope = tracer.activateSpan(rootSpan);
32+
logger.log("Event with root span context");
33+
34+
assertEquals(
35+
"TRACE_ID="
36+
+ CorrelationIdentifier.getTraceId()
37+
+ " SPAN_ID="
38+
+ CorrelationIdentifier.getSpanId()
39+
+ " Event with root span context",
40+
journal.nextLog());
41+
42+
Span childSpan = tracer.buildSpan("operation1").asChildOf(rootSpan).start();
43+
Scope childScope = tracer.activateSpan(childSpan);
44+
logger.log("Event with child span context");
45+
46+
assertEquals(
47+
"TRACE_ID="
48+
+ CorrelationIdentifier.getTraceId()
49+
+ " SPAN_ID="
50+
+ CorrelationIdentifier.getSpanId()
51+
+ " Event with child span context",
52+
journal.nextLog());
53+
54+
childScope.close();
55+
childSpan.finish();
56+
logger.log("Event with root span context");
57+
58+
assertEquals(
59+
"TRACE_ID="
60+
+ CorrelationIdentifier.getTraceId()
61+
+ " SPAN_ID="
62+
+ CorrelationIdentifier.getSpanId()
63+
+ " Event with root span context",
64+
journal.nextLog());
65+
66+
rootScope.close();
67+
rootSpan.finish();
68+
logger.log("Event without context");
69+
70+
assertEquals("TRACE_ID= SPAN_ID= Event without context", journal.nextLog());
71+
72+
tracer.close();
73+
}
74+
75+
DDTracer buildTracer() {
76+
DDTracer tracer = new DDTracer.DDTracerBuilder().build();
77+
GlobalTracer.registerIfAbsent(tracer);
78+
return tracer;
79+
}
80+
81+
abstract LogJournal buildJournal();
82+
83+
abstract TestLogger buildLogger();
84+
85+
interface LogJournal {
86+
String nextLog();
87+
}
88+
89+
interface TestLogger {
90+
void log(String message);
91+
}
92+
}
Lines changed: 69 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,69 @@
1+
import java.util.ArrayList;
2+
import java.util.List;
3+
import org.apache.logging.log4j.Level;
4+
import org.apache.logging.log4j.LogManager;
5+
import org.apache.logging.log4j.core.Appender;
6+
import org.apache.logging.log4j.core.Filter;
7+
import org.apache.logging.log4j.core.LogEvent;
8+
import org.apache.logging.log4j.core.LoggerContext;
9+
import org.apache.logging.log4j.core.appender.AbstractAppender;
10+
import org.apache.logging.log4j.core.config.Configuration;
11+
import org.apache.logging.log4j.core.config.LoggerConfig;
12+
import org.apache.logging.log4j.core.layout.PatternLayout;
13+
14+
class Log4j2CorrelationIdInjectorTest extends CorrelationIdInjectorTest {
15+
16+
@Override
17+
LogJournal buildJournal() {
18+
LoggerContext context = LoggerContext.getContext(false);
19+
Configuration config = context.getConfiguration();
20+
21+
TestAppender appender =
22+
new TestAppender(PatternLayout.newBuilder().withPattern(logPattern).build());
23+
appender.start();
24+
config.addAppender(appender);
25+
updateLoggers(appender, config);
26+
return appender;
27+
}
28+
29+
@Override
30+
TestLogger buildLogger() {
31+
org.apache.logging.log4j.Logger logger = LogManager.getLogger("TestLogger");
32+
return message -> logger.error(message);
33+
}
34+
35+
private static void updateLoggers(Appender appender, Configuration config) {
36+
Level level = null;
37+
Filter filter = null;
38+
for (LoggerConfig loggerConfig : config.getLoggers().values()) {
39+
loggerConfig.addAppender(appender, level, filter);
40+
}
41+
config.getRootLogger().addAppender(appender, level, filter);
42+
}
43+
44+
static class TestAppender extends AbstractAppender
45+
implements CorrelationIdInjectorTest.LogJournal {
46+
List<String> events;
47+
int read;
48+
49+
protected TestAppender(PatternLayout patternLayout) {
50+
super("TestAppender", null, patternLayout, false, null);
51+
events = new ArrayList<>();
52+
read = 0;
53+
}
54+
55+
@Override
56+
public void append(LogEvent event) {
57+
String log = ((PatternLayout) getLayout()).toSerializable(event);
58+
events.add(log);
59+
}
60+
61+
@Override
62+
public String nextLog() {
63+
if (events.size() <= read) {
64+
return null;
65+
}
66+
return events.get(read++);
67+
}
68+
}
69+
}

0 commit comments

Comments
 (0)