opentelemetry-java-instrume.../instrumentation/log4j/log4j-context-data/log4j-context-data-common/testing/src/main/groovy/Log4j2Test.groovy

100 lines
3.0 KiB
Groovy

/*
* Copyright The OpenTelemetry Authors
* SPDX-License-Identifier: Apache-2.0
*/
import io.opentelemetry.api.baggage.Baggage
import io.opentelemetry.api.trace.Span
import io.opentelemetry.instrumentation.log4j.contextdata.ListAppender
import io.opentelemetry.instrumentation.test.InstrumentationSpecification
import org.apache.logging.log4j.LogManager
abstract class Log4j2Test extends InstrumentationSpecification {
def setup() {
ListAppender.get().clearEvents()
}
def "no ids when no span"() {
given:
def logger = LogManager.getLogger("TestLogger")
when:
logger.info("log message 1")
logger.info("log message 2")
def events = ListAppender.get().getEvents()
then:
events.size() == 2
events[0].message == "log message 1"
events[0].contextData["trace_id"] == null
events[0].contextData["span_id"] == null
events[0].contextData["trace_flags"] == null
events[1].message == "log message 2"
events[1].contextData["trace_id"] == null
events[1].contextData["span_id"] == null
events[1].contextData["trace_flags"] == null
}
def "ids when span"() {
given:
def logger = LogManager.getLogger("TestLogger")
when:
Baggage baggage = Baggage.empty().toBuilder().put("baggage_key", "baggage_value").build()
Span spanParent
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")
Span span2 = runWithSpan("test 2") {
logger.info("log message 3")
Span.current()
}
def events = ListAppender.get().getEvents()
then:
events.size() == 4
events[0].message == "log span parent"
events[0].contextData["trace_id"] == spanParent.spanContext.traceId
events[0].contextData["span_id"] == spanParent.spanContext.spanId
events[0].contextData["trace_flags"] == "01"
events[0].contextData["baggage.baggage_key"] == (expectBaggage() ? "baggage_value" : null)
events[1].message == "log span child"
events[1].contextData["trace_id"] == spanChild.spanContext.traceId
events[1].contextData["span_id"] == spanChild.spanContext.spanId
events[1].contextData["trace_flags"] == "01"
events[1].contextData["baggage.baggage_key"] == (expectBaggage() ? "baggage_value" : null)
events[2].message == "log message 2"
events[2].contextData["trace_id"] == null
events[2].contextData["span_id"] == null
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
}
}