diff options
-rw-r--r-- | kamon-core/src/main/scala/kamon/trace/Span.scala | 10 | ||||
-rw-r--r-- | kamon-core/src/main/scala/kamon/trace/Tracer.scala | 6 | ||||
-rw-r--r-- | kamon-testkit/src/main/scala/kamon/testkit/SpanInspector.scala | 3 |
3 files changed, 18 insertions, 1 deletions
diff --git a/kamon-core/src/main/scala/kamon/trace/Span.scala b/kamon-core/src/main/scala/kamon/trace/Span.scala index ae67f7f6..ea28142e 100644 --- a/kamon-core/src/main/scala/kamon/trace/Span.scala +++ b/kamon-core/src/main/scala/kamon/trace/Span.scala @@ -35,6 +35,8 @@ trait Span { def annotate(annotation: Span.Annotation): Span + def addTag(key: String, value: String): Span + def addSpanTag(key: String, value: String): Span def addSpanTag(key: String, value: Long): Span @@ -72,6 +74,7 @@ object Span { override def isEmpty(): Boolean = true override def isLocal(): Boolean = true override def annotate(annotation: Annotation): Span = this + override def addTag(key: String, value: String): Span = this override def addSpanTag(key: String, value: String): Span = this override def addSpanTag(key: String, value: Long): Span = this override def addSpanTag(key: String, value: Boolean): Span = this @@ -110,6 +113,12 @@ object Span { this } + override def addTag(key: String, value: String): Span = synchronized { + addSpanTag(key, value) + addMetricTag(key, value) + this + } + override def addSpanTag(key: String, value: String): Span = synchronized { if(sampled && open) spanTags = spanTags + (key -> TagValue.String(value)) @@ -196,6 +205,7 @@ object Span { override def isEmpty(): Boolean = false override def isLocal(): Boolean = false override def annotate(annotation: Annotation): Span = this + override def addTag(key: String, value: String): Span = this override def addSpanTag(key: String, value: String): Span = this override def addSpanTag(key: String, value: Long): Span = this override def addSpanTag(key: String, value: Boolean): Span = this diff --git a/kamon-core/src/main/scala/kamon/trace/Tracer.scala b/kamon-core/src/main/scala/kamon/trace/Tracer.scala index 37706926..84cb1899 100644 --- a/kamon-core/src/main/scala/kamon/trace/Tracer.scala +++ b/kamon-core/src/main/scala/kamon/trace/Tracer.scala @@ -100,6 +100,12 @@ object Tracer { this } + def withTag(key: String, value: String): SpanBuilder = { + this.initialMetricTags = this.initialMetricTags + (key -> value) + this.initialSpanTags = this.initialSpanTags + (key -> TagValue.String(value)) + this + } + def withMetricTag(key: String, value: String): SpanBuilder = { this.initialMetricTags = this.initialMetricTags + (key -> value) this diff --git a/kamon-testkit/src/main/scala/kamon/testkit/SpanInspector.scala b/kamon-testkit/src/main/scala/kamon/testkit/SpanInspector.scala index f23fba98..46012c0f 100644 --- a/kamon-testkit/src/main/scala/kamon/testkit/SpanInspector.scala +++ b/kamon-testkit/src/main/scala/kamon/testkit/SpanInspector.scala @@ -27,7 +27,7 @@ class SpanInspector(span: Span) { spanData.tags def metricTags(): Map[String, String] = - getField[Span.Local, Map[String, String]](realSpan, "customMetricTags") + getField[Span.Local, Map[String, String]](realSpan, "kamon$trace$Span$Local$$customMetricTags") def startTimestamp(): Long = getField[Span.Local, Long](realSpan, "startTimestampMicros") @@ -42,6 +42,7 @@ class SpanInspector(span: Span) { private def getField[T, R](target: Any, fieldName: String)(implicit classTag: ClassTag[T]): R = { + println("TRYING TO ACCESS: " + classTag.runtimeClass) val toFinishedSpanMethod = classTag.runtimeClass.getDeclaredField(fieldName) toFinishedSpanMethod.setAccessible(true) toFinishedSpanMethod.get(target).asInstanceOf[R] |