aboutsummaryrefslogtreecommitdiff
path: root/kamon-core/src/test/scala/kamon/metrics/ActorMetricsSpec.scala
diff options
context:
space:
mode:
authorDiego <diegolparra@gmail.com>2014-05-01 19:49:22 -0300
committerDiego <diegolparra@gmail.com>2014-05-01 19:49:22 -0300
commit80f8a5d0b3a6c936453645254c1349b9691b1df2 (patch)
treeada6f152bef39a3dacbd32d3cf56eef1bdbc0984 /kamon-core/src/test/scala/kamon/metrics/ActorMetricsSpec.scala
parentb260e19fac6fc85822c53abc4688e90b6166a0af (diff)
downloadKamon-80f8a5d0b3a6c936453645254c1349b9691b1df2.tar.gz
Kamon-80f8a5d0b3a6c936453645254c1349b9691b1df2.tar.bz2
Kamon-80f8a5d0b3a6c936453645254c1349b9691b1df2.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.scala31
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()