aboutsummaryrefslogtreecommitdiff
path: root/src/test/scala/akka/instrumentation/ActorInstrumentationSpec.scala
blob: 2921824e577e97bbd427e394b732ce1d345acee9 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
package akka.instrumentation

import org.scalatest.WordSpec
import org.scalatest.matchers.{ShouldMatchers, MustMatchers}
import akka.actor.{Actor, Props, ActorSystem}
import kamon.metric.Metrics
import com.codahale.metrics.Meter
import scala.collection.JavaConverters._


class ActorInstrumentationSpec extends WordSpec with MustMatchers with ShouldMatchers {
  import Metrics.metricsRegistry._
  val system = ActorSystem()

  import system._
  val echoRef = actorOf(Props(new EchoActor), "Echo-Actor")

  "a instrumented Actor" should  {
    "send a message and record a metric on the Metrics Registry and count messages" in {

      echoRef ! "Message 1"
      echoRef ! "Message 2"
      echoRef ! "Message 3"
      echoRef ! "Message 4"
      echoRef ! "Message 5"
      echoRef ! "Message 6"

      val meter = getMeters.asScala.filterKeys(_.toLowerCase.contains("Echo-Actor".toLowerCase())).collectFirst{case pair:(String, Meter) => pair._2.getCount}.get

      meter should equal(6)
    }
  }

}

class EchoActor extends Actor {
  def receive = {
    case msg  sender ! msg
  }
}