aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorIvan Topolnjak <ivantopo@gmail.com>2017-08-16 20:10:50 +0200
committerIvan Topolnjak <ivantopo@gmail.com>2017-08-16 20:10:50 +0200
commit5e0b768f139fc2c5e75d6b5060bd4d0aa48092b0 (patch)
treec373be3478fc7273faf2c23afbf6572b9e52caec
parent61029e115272b9af3f4460b311d3a2e650c806e3 (diff)
downloadKamon-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.scala10
-rw-r--r--kamon-core/src/main/scala/kamon/trace/Tracer.scala6
-rw-r--r--kamon-testkit/src/main/scala/kamon/testkit/SpanInspector.scala3
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]