From a90d4aa75e7fdf12a85177f4e81463439bfe5bb3 Mon Sep 17 00:00:00 2001 From: Ivan Topolnjak Date: Tue, 15 Aug 2017 00:33:06 +0200 Subject: separate the build into core, testkit and core-tests projects --- .../src/test/scala/kamon/trace/SpanMetrics.scala | 64 ++++++++++++++++++++++ 1 file changed, 64 insertions(+) create mode 100644 kamon-core-tests/src/test/scala/kamon/trace/SpanMetrics.scala (limited to 'kamon-core-tests/src/test/scala/kamon/trace/SpanMetrics.scala') diff --git a/kamon-core-tests/src/test/scala/kamon/trace/SpanMetrics.scala b/kamon-core-tests/src/test/scala/kamon/trace/SpanMetrics.scala new file mode 100644 index 00000000..9ecffb24 --- /dev/null +++ b/kamon-core-tests/src/test/scala/kamon/trace/SpanMetrics.scala @@ -0,0 +1,64 @@ +package kamon.trace + +import kamon.Kamon +import kamon.Kamon.buildSpan +import kamon.metric._ +import org.scalatest.{Matchers, WordSpecLike} + +class SpanMetrics extends WordSpecLike with Matchers { + import SpanMetricsTestHelper._ + + val errorTag = "error" -> "true" + val histogramMetric: HistogramMetric = Kamon.histogram("span.elapsed-time") + + "Span Metrics" should { + "be recorded for successeful execution" in { + val operation = "span-success" + val operationTag = "operation" -> operation + + buildSpan(operation) + .start() + .finish() + + val histogram = histogramMetric.refine(operationTag) + histogram.distribution().count === 1 + + val errorHistogram = histogramMetric.refine(Map(operationTag, errorTag)).distribution() + errorHistogram.count === 0 + + } + + "record correctly error latency and count" in { + val operation = "span-failure" + val operationTag = "operation" -> operation + + buildSpan(operation) + .start() + .addSpanTag("error", true) + .finish() + + val histogram = histogramMetric.refine(operationTag) + histogram.distribution().count === 0 + + val errorHistogram = histogramMetric.refine(operationTag, errorTag).distribution() + errorHistogram.count === 1 + + } + } + +} + +object SpanMetricsTestHelper { + + implicit class HistogramMetricSyntax(histogram: Histogram) { + def distribution(resetState: Boolean = true): Distribution = + histogram match { + case hm: HistogramMetric => hm.refine(Map.empty[String, String]).distribution(resetState) + case h: AtomicHdrHistogram => h.snapshot(resetState).distribution + case h: HdrHistogram => h.snapshot(resetState).distribution + } + } +} + + + -- cgit v1.2.3