diff options
author | Ivan Topolnjak <ivantopo@gmail.com> | 2017-08-16 20:10:50 +0200 |
---|---|---|
committer | Ivan Topolnjak <ivantopo@gmail.com> | 2017-08-16 20:10:50 +0200 |
commit | 5e0b768f139fc2c5e75d6b5060bd4d0aa48092b0 (patch) | |
tree | c373be3478fc7273faf2c23afbf6572b9e52caec | |
parent | 61029e115272b9af3f4460b311d3a2e650c806e3 (diff) | |
download | Kamon-5e0b768f139fc2c5e75d6b5060bd4d0aa48092b0.tar.gz Kamon-5e0b768f139fc2c5e75d6b5060bd4d0aa48092b0.tar.bz2 Kamon-5e0b768f139fc2c5e75d6b5060bd4d0aa48092b0.zip |
add utility function for including metric and trace tags simultaneously
-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] |