aboutsummaryrefslogtreecommitdiff
path: root/kamon-core/src/test/scala/kamon/util/BaggageOnMDCSpec.scala
blob: 4e76c8fe105ad9eeb59a1c3991bc8e9a250132c0 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
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)
      }
    }
  }

}