diff options
author | Ivan Topolnjak <ivantopo@gmail.com> | 2017-08-15 00:33:06 +0200 |
---|---|---|
committer | Ivan Topolnjak <ivantopo@gmail.com> | 2017-08-15 00:33:06 +0200 |
commit | a90d4aa75e7fdf12a85177f4e81463439bfe5bb3 (patch) | |
tree | 2b815c06862332752ff4192c4bdceb4413cf2945 /kamon-core/src/test/scala/kamon/testkit/SpanInspector.scala | |
parent | 86c72d622ac027dc96f9a744771c0a468d46dc60 (diff) | |
download | Kamon-a90d4aa75e7fdf12a85177f4e81463439bfe5bb3.tar.gz Kamon-a90d4aa75e7fdf12a85177f4e81463439bfe5bb3.tar.bz2 Kamon-a90d4aa75e7fdf12a85177f4e81463439bfe5bb3.zip |
separate the build into core, testkit and core-tests projects
Diffstat (limited to 'kamon-core/src/test/scala/kamon/testkit/SpanInspector.scala')
-rw-r--r-- | kamon-core/src/test/scala/kamon/testkit/SpanInspector.scala | 61 |
1 files changed, 0 insertions, 61 deletions
diff --git a/kamon-core/src/test/scala/kamon/testkit/SpanInspector.scala b/kamon-core/src/test/scala/kamon/testkit/SpanInspector.scala deleted file mode 100644 index f23fba98..00000000 --- a/kamon-core/src/test/scala/kamon/testkit/SpanInspector.scala +++ /dev/null @@ -1,61 +0,0 @@ -package kamon.testkit - -import kamon.trace.{Span, SpanContext} -import kamon.trace.Span.FinishedSpan -import kamon.util.Clock - -import scala.reflect.ClassTag -import scala.util.Try - -class SpanInspector(span: Span) { - private val (realSpan, spanData) = Try { - val realSpan = span match { - case _: Span.Local => span - } - - val spanData = invoke[Span.Local, FinishedSpan](realSpan, "toFinishedSpan", classOf[Long] -> Long.box(Clock.microTimestamp())) - (realSpan, spanData) - }.getOrElse((null, null)) - - def isEmpty: Boolean = - realSpan == null - - def spanTag(key: String): Option[Span.TagValue] = - spanData.tags.get(key) - - def spanTags(): Map[String, Span.TagValue] = - spanData.tags - - def metricTags(): Map[String, String] = - getField[Span.Local, Map[String, String]](realSpan, "customMetricTags") - - def startTimestamp(): Long = - getField[Span.Local, Long](realSpan, "startTimestampMicros") - - def context(): SpanContext = - spanData.context - - def operationName(): String = - spanData.operationName - - - - - private def getField[T, R](target: Any, fieldName: String)(implicit classTag: ClassTag[T]): R = { - val toFinishedSpanMethod = classTag.runtimeClass.getDeclaredField(fieldName) - toFinishedSpanMethod.setAccessible(true) - toFinishedSpanMethod.get(target).asInstanceOf[R] - } - - private def invoke[T, R](target: Any, fieldName: String, parameters: (Class[_], AnyRef)*)(implicit classTag: ClassTag[T]): R = { - val parameterClasses = parameters.map(_._1) - val parameterInstances = parameters.map(_._2) - val toFinishedSpanMethod = classTag.runtimeClass.getDeclaredMethod(fieldName, parameterClasses: _*) - toFinishedSpanMethod.setAccessible(true) - toFinishedSpanMethod.invoke(target, parameterInstances: _*).asInstanceOf[R] - } -} - -object SpanInspector { - def apply(span: Span): SpanInspector = new SpanInspector(span) -} |