aboutsummaryrefslogblamecommitdiff
path: root/kamon-core/src/test/scala/kamon/util/BaggageOnMDCSpec.scala
blob: 4e76c8fe105ad9eeb59a1c3991bc8e9a250132c0 (plain) (tree)






































                                                                                                                        
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)
      }
    }
  }

}