aboutsummaryrefslogtreecommitdiff
path: root/kamon-core-tests
diff options
context:
space:
mode:
authorIvan Topolnjak <ivantopo@gmail.com>2018-01-09 14:41:00 +0100
committerIvan Topolnjak <ivantopo@gmail.com>2018-01-09 14:41:00 +0100
commited6504f67549184c86e3b6fe752985179912f35c (patch)
treea8b22fac3ff53bb52a48311f67d4e03db6feb76c /kamon-core-tests
parent0af84e03488a0c9caa5d53d5218751f71bd6188a (diff)
downloadKamon-ed6504f67549184c86e3b6fe752985179912f35c.tar.gz
Kamon-ed6504f67549184c86e3b6fe752985179912f35c.tar.bz2
Kamon-ed6504f67549184c86e3b6fe752985179912f35c.zip
ensure that a sampling decision is taken when the parent decision is unknown
Diffstat (limited to 'kamon-core-tests')
-rw-r--r--kamon-core-tests/src/test/scala/kamon/trace/TracerSpec.scala27
1 files changed, 26 insertions, 1 deletions
diff --git a/kamon-core-tests/src/test/scala/kamon/trace/TracerSpec.scala b/kamon-core-tests/src/test/scala/kamon/trace/TracerSpec.scala
index a9a4ec10..f325d1d1 100644
--- a/kamon-core-tests/src/test/scala/kamon/trace/TracerSpec.scala
+++ b/kamon-core-tests/src/test/scala/kamon/trace/TracerSpec.scala
@@ -22,6 +22,7 @@ import kamon.Kamon
import kamon.context.Context
import kamon.testkit.{SpanBuilding, SpanInspection}
import kamon.trace.Span.TagValue
+import kamon.trace.SpanContext.SamplingDecision
import org.scalatest.{Matchers, OptionValues, WordSpec}
class TracerSpec extends WordSpec with Matchers with SpanBuilding with SpanInspection with OptionValues {
@@ -94,7 +95,6 @@ class TracerSpec extends WordSpec with Matchers with SpanBuilding with SpanInspe
"preserve the same Span and Parent identifier when creating a Span with a remote parent if join-remote-parents-with-same-span-id is enabled" in {
val previousConfig = Kamon.config()
-
Kamon.reconfigure {
ConfigFactory.parseString("kamon.trace.join-remote-parents-with-same-span-id = yes")
.withFallback(Kamon.config())
@@ -110,6 +110,31 @@ class TracerSpec extends WordSpec with Matchers with SpanBuilding with SpanInspe
Kamon.reconfigure(previousConfig)
}
+ "propagate sampling decisions from parent to child spans, if the decision is known" in {
+ val sampledRemoteParent = Span.Remote(createSpanContext().copy(samplingDecision = SamplingDecision.Sample))
+ val notSampledRemoteParent = Span.Remote(createSpanContext().copy(samplingDecision = SamplingDecision.DoNotSample))
+
+ tracer.buildSpan("childOfSampled").asChildOf(sampledRemoteParent).start().context()
+ .samplingDecision shouldBe(SamplingDecision.Sample)
+
+ tracer.buildSpan("childOfNotSampled").asChildOf(notSampledRemoteParent).start().context()
+ .samplingDecision shouldBe(SamplingDecision.DoNotSample)
+ }
+
+ "take a sampling decision if the parent's decision is unknown" in {
+ val previousConfig = Kamon.config()
+ Kamon.reconfigure {
+ ConfigFactory.parseString("kamon.trace.sampler = always")
+ .withFallback(Kamon.config())
+ }
+
+ val unknownSamplingRemoteParent = Span.Remote(createSpanContext().copy(samplingDecision = SamplingDecision.Unknown))
+ tracer.buildSpan("childOfSampled").asChildOf(unknownSamplingRemoteParent).start().context()
+ .samplingDecision shouldBe(SamplingDecision.Sample)
+
+ Kamon.reconfigure(previousConfig)
+ }
+
}
val tracer: Tracer = Kamon