diff options
author | Diego <diegolparra@gmail.com> | 2014-05-01 19:49:22 -0300 |
---|---|---|
committer | Diego <diegolparra@gmail.com> | 2014-05-01 19:49:22 -0300 |
commit | 2880da2f2d97813b05b2cd07c747cfa96dd812e0 (patch) | |
tree | 2fc5da910771aa3a40163b4dc4cd03839d46d9d9 /kamon-core/src/test/scala/kamon/metrics/ActorMetricsSpec.scala | |
parent | 77bb479f2b839d148e2f05f8911bae94f3170df1 (diff) | |
download | Kamon-2880da2f2d97813b05b2cd07c747cfa96dd812e0.tar.gz Kamon-2880da2f2d97813b05b2cd07c747cfa96dd812e0.tar.bz2 Kamon-2880da2f2d97813b05b2cd07c747cfa96dd812e0.zip |
! core: first implementetion of kamon counter intrument and actor errors metrics
Diffstat (limited to 'kamon-core/src/test/scala/kamon/metrics/ActorMetricsSpec.scala')
-rw-r--r-- | kamon-core/src/test/scala/kamon/metrics/ActorMetricsSpec.scala | 31 |
1 files changed, 31 insertions, 0 deletions
diff --git a/kamon-core/src/test/scala/kamon/metrics/ActorMetricsSpec.scala b/kamon-core/src/test/scala/kamon/metrics/ActorMetricsSpec.scala index 61d15bc9..2144bd55 100644 --- a/kamon-core/src/test/scala/kamon/metrics/ActorMetricsSpec.scala +++ b/kamon-core/src/test/scala/kamon/metrics/ActorMetricsSpec.scala @@ -103,6 +103,17 @@ class ActorMetricsSpec extends TestKitBase with WordSpecLike with Matchers { } } + "track the number of errors" in new ErrorActorFixture { + val (error, metricsListener) = failedActor("tracked-errors") + + for (_ ← 1 to 5) { + error ! Error + } + + val actorMetrics = expectActorMetrics("user/tracked-errors", metricsListener, 3 seconds) + actorMetrics.errorCounter.numberOfMeasurements should be(5L) + } + def expectActorMetrics(actorPath: String, listener: TestProbe, waitTime: FiniteDuration): ActorMetricSnapshot = { val tickSnapshot = within(waitTime) { listener.expectMsgType[TickMetricSnapshot] @@ -124,6 +135,19 @@ class ActorMetricsSpec extends TestKitBase with WordSpecLike with Matchers { (actor, metricsListener) } } + + trait ErrorActorFixture { + def failedActor(name: String): (ActorRef, TestProbe) = { + val actor = system.actorOf(Props[FailedActor], name) + val metricsListener = TestProbe() + + Kamon(Metrics).subscribe(ActorMetrics, "user/" + name, metricsListener.ref, permanently = true) + // Wait for one empty snapshot before proceeding to the test. + metricsListener.expectMsgType[TickMetricSnapshot] + + (actor, metricsListener) + } + } } class DelayableActor extends Actor { @@ -133,5 +157,12 @@ class DelayableActor extends Actor { } } +class FailedActor extends Actor { + def receive = { + case Error ⇒ 1 / 0 + case Discard ⇒ + } +} case object Discard case class Delay(time: FiniteDuration) +case class Error() |