diff options
author | Ivan Topolnjak <ivantopo@gmail.com> | 2018-09-04 18:32:36 +0200 |
---|---|---|
committer | Ivan Topolnjak <ivantopo@gmail.com> | 2018-09-04 18:32:36 +0200 |
commit | ac43c0476c239a9cf1c20e838b0fd212b20161e1 (patch) | |
tree | 3ecded509503a0a270bdfddf61270a2f69944b37 /kamon-core/src/main/scala/kamon/trace/Tracer.scala | |
parent | c487c51a54e67944c80cf2aecc63ac8158bf99a6 (diff) | |
download | Kamon-ac43c0476c239a9cf1c20e838b0fd212b20161e1.tar.gz Kamon-ac43c0476c239a9cf1c20e838b0fd212b20161e1.tar.bz2 Kamon-ac43c0476c239a9cf1c20e838b0fd212b20161e1.zip |
basic testing for the HTTP server instrumentation
Diffstat (limited to 'kamon-core/src/main/scala/kamon/trace/Tracer.scala')
-rw-r--r-- | kamon-core/src/main/scala/kamon/trace/Tracer.scala | 18 |
1 files changed, 16 insertions, 2 deletions
diff --git a/kamon-core/src/main/scala/kamon/trace/Tracer.scala b/kamon-core/src/main/scala/kamon/trace/Tracer.scala index 3e857f00..ad7ffbed 100644 --- a/kamon-core/src/main/scala/kamon/trace/Tracer.scala +++ b/kamon-core/src/main/scala/kamon/trace/Tracer.scala @@ -99,6 +99,7 @@ object Tracer { private var initialMetricTags = Map.empty[String, String] private var useParentFromContext = true private var trackMetrics = true + private var providedTraceID = IdentityProvider.NoIdentifier def asChildOf(parent: Span): SpanBuilder = { if(parent != Span.Empty) this.parentSpan = parent @@ -158,6 +159,11 @@ object Tracer { this } + def withTraceID(identifier: IdentityProvider.Identifier): SpanBuilder = { + this.providedTraceID = identifier + this + } + def start(): Span = { val spanFrom = if(from == Instant.EPOCH) clock.instant() else from @@ -199,13 +205,21 @@ object Tracer { else parent.context().createChild(tracer._identityProvider.spanIdGenerator().generate(), samplingDecision) - private def newSpanContext(samplingDecision: SamplingDecision): SpanContext = + private def newSpanContext(samplingDecision: SamplingDecision): SpanContext = { + val traceID = + if(providedTraceID != IdentityProvider.NoIdentifier) + providedTraceID + else + tracer._identityProvider.traceIdGenerator().generate() + + SpanContext( - traceID = tracer._identityProvider.traceIdGenerator().generate(), + traceID, spanID = tracer._identityProvider.spanIdGenerator().generate(), parentID = IdentityProvider.NoIdentifier, samplingDecision = samplingDecision ) + } } private final class TracerMetrics(metricLookup: MetricLookup) { |