Adds tests for log4j2 ThreadContext baggage attributes (#8955)
This commit is contained in:
parent
2bdddafdc4
commit
1e0635ba5a
|
|
@ -18,7 +18,7 @@ spotless {
|
||||||
groovy {
|
groovy {
|
||||||
licenseHeaderFile(
|
licenseHeaderFile(
|
||||||
rootProject.file("buildscripts/spotless.license.java"),
|
rootProject.file("buildscripts/spotless.license.java"),
|
||||||
"(package|import|class)"
|
"(package|import|(?:abstract )?class)"
|
||||||
)
|
)
|
||||||
endWithNewline()
|
endWithNewline()
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -44,6 +44,27 @@ testing {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
val testAddBaggage by registering(JvmTestSuite::class) {
|
||||||
|
sources {
|
||||||
|
groovy {
|
||||||
|
setSrcDirs(listOf("src/testAddBaggage/groovy"))
|
||||||
|
}
|
||||||
|
}
|
||||||
|
dependencies {
|
||||||
|
implementation(project(":instrumentation:log4j:log4j-context-data:log4j-context-data-common:testing"))
|
||||||
|
}
|
||||||
|
|
||||||
|
targets {
|
||||||
|
all {
|
||||||
|
testTask.configure {
|
||||||
|
jvmArgs("-Dotel.instrumentation.log4j-context-data.add-baggage=true")
|
||||||
|
jvmArgs("-Dlog4j2.is.webapp=false")
|
||||||
|
jvmArgs("-Dlog4j2.enable.threadlocals=true")
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,9 @@
|
||||||
|
/*
|
||||||
|
* Copyright The OpenTelemetry Authors
|
||||||
|
* SPDX-License-Identifier: Apache-2.0
|
||||||
|
*/
|
||||||
|
|
||||||
|
import io.opentelemetry.instrumentation.test.AgentTestTrait
|
||||||
|
|
||||||
|
class AutoLog4jBaggageTest extends Log4J2BaggageTest implements AgentTestTrait {
|
||||||
|
}
|
||||||
|
|
@ -9,3 +9,22 @@ dependencies {
|
||||||
|
|
||||||
testImplementation(project(":instrumentation:log4j:log4j-context-data:log4j-context-data-common:testing"))
|
testImplementation(project(":instrumentation:log4j:log4j-context-data:log4j-context-data-common:testing"))
|
||||||
}
|
}
|
||||||
|
|
||||||
|
tasks {
|
||||||
|
test {
|
||||||
|
filter {
|
||||||
|
excludeTestsMatching("LibraryLog4j2BaggageTest")
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
val testAddBaggage by registering(Test::class) {
|
||||||
|
filter {
|
||||||
|
includeTestsMatching("LibraryLog4j2BaggageTest")
|
||||||
|
}
|
||||||
|
jvmArgs("-Dotel.instrumentation.log4j-context-data.add-baggage=true")
|
||||||
|
}
|
||||||
|
|
||||||
|
named("check") {
|
||||||
|
dependsOn(testAddBaggage)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,9 @@
|
||||||
|
/*
|
||||||
|
* Copyright The OpenTelemetry Authors
|
||||||
|
* SPDX-License-Identifier: Apache-2.0
|
||||||
|
*/
|
||||||
|
|
||||||
|
import io.opentelemetry.instrumentation.test.LibraryTestTrait
|
||||||
|
|
||||||
|
class LibraryLog4j2BaggageTest extends Log4J2BaggageTest implements LibraryTestTrait {
|
||||||
|
}
|
||||||
|
|
@ -20,3 +20,22 @@ dependencies {
|
||||||
|
|
||||||
latestDepTestLibrary("org.apache.logging.log4j:log4j-core:2.16.+") // see log4j-context-data-2.17 module
|
latestDepTestLibrary("org.apache.logging.log4j:log4j-core:2.16.+") // see log4j-context-data-2.17 module
|
||||||
}
|
}
|
||||||
|
|
||||||
|
tasks {
|
||||||
|
test {
|
||||||
|
filter {
|
||||||
|
excludeTestsMatching("Log4j27BaggageTest")
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
val testAddBaggage by registering(Test::class) {
|
||||||
|
filter {
|
||||||
|
includeTestsMatching("Log4j27BaggageTest")
|
||||||
|
}
|
||||||
|
jvmArgs("-Dotel.instrumentation.log4j-context-data.add-baggage=true")
|
||||||
|
}
|
||||||
|
|
||||||
|
named("check") {
|
||||||
|
dependsOn(testAddBaggage)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,9 @@
|
||||||
|
/*
|
||||||
|
* Copyright The OpenTelemetry Authors
|
||||||
|
* SPDX-License-Identifier: Apache-2.0
|
||||||
|
*/
|
||||||
|
|
||||||
|
import io.opentelemetry.instrumentation.test.AgentTestTrait
|
||||||
|
|
||||||
|
class Log4j27BaggageTest extends Log4J2BaggageTest implements AgentTestTrait {
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,11 @@
|
||||||
|
/*
|
||||||
|
* Copyright The OpenTelemetry Authors
|
||||||
|
* SPDX-License-Identifier: Apache-2.0
|
||||||
|
*/
|
||||||
|
|
||||||
|
abstract class Log4J2BaggageTest extends Log4j2Test {
|
||||||
|
@Override
|
||||||
|
boolean expectBaggage() {
|
||||||
|
return true
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -3,6 +3,7 @@
|
||||||
* SPDX-License-Identifier: Apache-2.0
|
* SPDX-License-Identifier: Apache-2.0
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
import io.opentelemetry.api.baggage.Baggage
|
||||||
import io.opentelemetry.api.trace.Span
|
import io.opentelemetry.api.trace.Span
|
||||||
import io.opentelemetry.instrumentation.log4j.contextdata.ListAppender
|
import io.opentelemetry.instrumentation.log4j.contextdata.ListAppender
|
||||||
import io.opentelemetry.instrumentation.test.InstrumentationSpecification
|
import io.opentelemetry.instrumentation.test.InstrumentationSpecification
|
||||||
|
|
@ -41,9 +42,19 @@ abstract class Log4j2Test extends InstrumentationSpecification {
|
||||||
def logger = LogManager.getLogger("TestLogger")
|
def logger = LogManager.getLogger("TestLogger")
|
||||||
|
|
||||||
when:
|
when:
|
||||||
Span span1 = runWithSpan("test") {
|
Baggage baggage = Baggage.empty().toBuilder().put("baggage_key", "baggage_value").build()
|
||||||
logger.info("log message 1")
|
Span spanParent
|
||||||
Span.current()
|
Span spanChild
|
||||||
|
try (var unusedScope = baggage.makeCurrent()) {
|
||||||
|
runWithSpan("test") {
|
||||||
|
spanParent = Span.current()
|
||||||
|
logger.info("log span parent")
|
||||||
|
|
||||||
|
runWithSpan("test-child") {
|
||||||
|
logger.info("log span child")
|
||||||
|
spanChild = Span.current()
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
logger.info("log message 2")
|
logger.info("log message 2")
|
||||||
|
|
@ -56,20 +67,33 @@ abstract class Log4j2Test extends InstrumentationSpecification {
|
||||||
def events = ListAppender.get().getEvents()
|
def events = ListAppender.get().getEvents()
|
||||||
|
|
||||||
then:
|
then:
|
||||||
events.size() == 3
|
events.size() == 4
|
||||||
events[0].message == "log message 1"
|
events[0].message == "log span parent"
|
||||||
events[0].contextData["trace_id"] == span1.spanContext.traceId
|
events[0].contextData["trace_id"] == spanParent.spanContext.traceId
|
||||||
events[0].contextData["span_id"] == span1.spanContext.spanId
|
events[0].contextData["span_id"] == spanParent.spanContext.spanId
|
||||||
events[0].contextData["trace_flags"] == "01"
|
events[0].contextData["trace_flags"] == "01"
|
||||||
|
events[0].contextData["baggage.baggage_key"] == (expectBaggage() ? "baggage_value" : null)
|
||||||
|
|
||||||
events[1].message == "log message 2"
|
events[1].message == "log span child"
|
||||||
events[1].contextData["trace_id"] == null
|
events[1].contextData["trace_id"] == spanChild.spanContext.traceId
|
||||||
events[1].contextData["span_id"] == null
|
events[1].contextData["span_id"] == spanChild.spanContext.spanId
|
||||||
events[1].contextData["trace_flags"] == null
|
events[1].contextData["trace_flags"] == "01"
|
||||||
|
events[1].contextData["baggage.baggage_key"] == (expectBaggage() ? "baggage_value" : null)
|
||||||
|
|
||||||
events[2].message == "log message 3"
|
events[2].message == "log message 2"
|
||||||
events[2].contextData["trace_id"] == span2.spanContext.traceId
|
events[2].contextData["trace_id"] == null
|
||||||
events[2].contextData["span_id"] == span2.spanContext.spanId
|
events[2].contextData["span_id"] == null
|
||||||
events[2].contextData["trace_flags"] == "01"
|
events[2].contextData["trace_flags"] == null
|
||||||
|
events[2].contextData["baggage.baggage_key"] == null
|
||||||
|
|
||||||
|
events[3].message == "log message 3"
|
||||||
|
events[3].contextData["trace_id"] == span2.spanContext.traceId
|
||||||
|
events[3].contextData["span_id"] == span2.spanContext.spanId
|
||||||
|
events[3].contextData["trace_flags"] == "01"
|
||||||
|
events[3].contextData["baggage.baggage_key"] == null
|
||||||
|
}
|
||||||
|
|
||||||
|
boolean expectBaggage() {
|
||||||
|
return false
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -2,7 +2,7 @@
|
||||||
<Configuration status="WARN" packages="com.example.appender">
|
<Configuration status="WARN" packages="com.example.appender">
|
||||||
<Appenders>
|
<Appenders>
|
||||||
<Console name="Console" target="SYSTEM_OUT">
|
<Console name="Console" target="SYSTEM_OUT">
|
||||||
<PatternLayout pattern="%d{HH:mm:ss.SSS} [%t] %-5level %logger{36} traceId: %X{trace_id} spanId: %X{span_id} flags: %X{trace_flags} - %msg%n" />
|
<PatternLayout pattern="%d{HH:mm:ss.SSS} [%t] %-5level %logger{36} traceId: %X{trace_id} spanId: %X{span_id} flags: %X{trace_flags} baggage.baggage_key: %X{baggage.baggage_key} - %msg%n" />
|
||||||
</Console>
|
</Console>
|
||||||
<ListAppender name="ListAppender" />
|
<ListAppender name="ListAppender" />
|
||||||
</Appenders>
|
</Appenders>
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue