package kamon.util import kamon.Kamon import kamon.Kamon.buildSpan import kamon.trace.SpanContext import org.scalatest.{Matchers, WordSpec} import org.slf4j.MDC class BaggageOnMDCSpec extends WordSpec with Matchers { "the BaggageOnMDC utility" should { "copy all baggage items and the trace ID to MDC and clear them after evaluating the supplied code" in { val parent = new SpanContext(1, 1, 0, true, Map.empty) Kamon.withSpan(buildSpan("propagate-mdc").asChildOf(parent).startManual().setBaggageItem("key-to-mdc", "value")) { BaggageOnMDC.withBaggageOnMDC { MDC.get("key-to-mdc") should be("value") MDC.get("trace_id") should be(HexCodec.toLowerHex(1)) } MDC.get("key-to-mdc") should be(null) MDC.get("trace_id") should be(null) } } "don't copy the trace ID to MDC if not required" in { Kamon.withSpan(buildSpan("propagate-mdc").startManual().setBaggageItem("key-to-mdc", "value")) { BaggageOnMDC.withBaggageOnMDC(false, { MDC.get("key-to-mdc") should be("value") MDC.get("trace_id") should be(null) }) MDC.get("key-to-mdc") should be(null) MDC.get("trace_id") should be(null) } } } }