From ef927dc672bea427d4de89b8d0ea0bd18bd71285 Mon Sep 17 00:00:00 2001 From: Diego Parra Date: Fri, 8 Jul 2016 11:10:09 -0300 Subject: + Kamon-core: introduce finishWithError(Throwable) for Traces and Segments * + kamon-core: introduce finishWithError(Throwable) for Traces and Segments --- .../test/scala/kamon/metric/TraceMetricsSpec.scala | 35 ++++++++++++++++++++-- .../kamon/trace/TraceContextManipulationSpec.scala | 8 ++--- 2 files changed, 37 insertions(+), 6 deletions(-) (limited to 'kamon-core/src/test/scala/kamon') diff --git a/kamon-core/src/test/scala/kamon/metric/TraceMetricsSpec.scala b/kamon-core/src/test/scala/kamon/metric/TraceMetricsSpec.scala index 3e3e2d8e..7678991e 100644 --- a/kamon-core/src/test/scala/kamon/metric/TraceMetricsSpec.scala +++ b/kamon-core/src/test/scala/kamon/metric/TraceMetricsSpec.scala @@ -1,6 +1,6 @@ /* * ========================================================================================= - * Copyright © 2013-2015 the kamon project + * Copyright © 2013-2016 the kamon project * * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file * except in compliance with the License. You may obtain a copy of the License at @@ -22,6 +22,8 @@ import kamon.testkit.BaseKamonSpec import kamon.trace.Tracer import kamon.metric.instrument.Histogram +import scala.util.control.NoStackTrace + class TraceMetricsSpec extends BaseKamonSpec("trace-metrics-spec") with ImplicitSender { "the TraceMetrics" should { @@ -82,5 +84,34 @@ class TraceMetricsSpec extends BaseKamonSpec("trace-metrics-spec") with Implicit afterFinishSegmentSnapshot.histogram("elapsed-time").get.numberOfMeasurements should be(1) } + + "record the elapsed time between a trace creation and finish with an error" in { + for (repetitions ← 1 to 10) { + Tracer.withContext(newContext("record-elapsed-time-with-error")) { + Tracer.currentContext.finishWithError(new RuntimeException("awesome-trace-error") with NoStackTrace) + } + } + + val snapshot = takeSnapshotOf("record-elapsed-time-with-error", "trace") + snapshot.histogram("elapsed-time").get.numberOfMeasurements should be(10) + snapshot.counter("errors").get.count should be(10) + } + + "record the elapsed time for segments that finish with an error and that occur inside a given trace" in { + Tracer.withContext(newContext("trace-with-segments")) { + val segment = Tracer.currentContext.startSegment("test-segment-with-error", "test-category", "test-library") + segment.finishWithError(new RuntimeException("awesome-segment-error") with NoStackTrace) + Tracer.currentContext.finish() + } + + val snapshot = takeSnapshotOf("test-segment-with-error", "trace-segment", + tags = Map( + "trace" -> "trace-with-segments", + "category" -> "test-category", + "library" -> "test-library")) + + snapshot.histogram("elapsed-time").get.numberOfMeasurements should be(1) + snapshot.counter("errors").get.count should be(1) + } } -} +} \ No newline at end of file diff --git a/kamon-core/src/test/scala/kamon/trace/TraceContextManipulationSpec.scala b/kamon-core/src/test/scala/kamon/trace/TraceContextManipulationSpec.scala index 6a454149..2756eb30 100644 --- a/kamon-core/src/test/scala/kamon/trace/TraceContextManipulationSpec.scala +++ b/kamon-core/src/test/scala/kamon/trace/TraceContextManipulationSpec.scala @@ -60,17 +60,17 @@ class TraceContextManipulationSpec extends BaseKamonSpec("trace-metrics-spec") { } Tracer.currentContext shouldBe empty - createdContext.name shouldBe ("renamed-trace") + createdContext.name shouldBe "renamed-trace" } "allow creating a segment within a trace" in { val createdContext = Tracer.withContext(newContext("trace-with-segments")) { - val segment = Tracer.currentContext.startSegment("segment-1", "segment-1-category", "segment-library") + Tracer.currentContext.startSegment("segment-1", "segment-1-category", "segment-library") Tracer.currentContext } Tracer.currentContext shouldBe empty - createdContext.name shouldBe ("trace-with-segments") + createdContext.name shouldBe "trace-with-segments" } "allow renaming a segment" in { @@ -83,4 +83,4 @@ class TraceContextManipulationSpec extends BaseKamonSpec("trace-metrics-spec") { } } } -} +} \ No newline at end of file -- cgit v1.2.3