diff options
author | Diego Parra <dparra@despegar.com> | 2013-05-31 17:57:26 -0300 |
---|---|---|
committer | Diego Parra <dparra@despegar.com> | 2013-05-31 17:57:26 -0300 |
commit | 0609c571e2c390f4b069db3f0b1808947d27154d (patch) | |
tree | 3d1544811f0eb5c44d3983d17e5c530ac68506c0 | |
parent | e737bdf5cf87e2ce6a03754a88b68bd87a78678b (diff) | |
download | Kamon-0609c571e2c390f4b069db3f0b1808947d27154d.tar.gz Kamon-0609c571e2c390f4b069db3f0b1808947d27154d.tar.bz2 Kamon-0609c571e2c390f4b069db3f0b1808947d27154d.zip |
WIP:Metrics 3
-rw-r--r-- | src/main/resources/META-INF/aop.xml | 1 | ||||
-rw-r--r-- | src/main/scala/akka/ActorInstrumentation.scala (renamed from src/main/scala/akka/ActorAspect.scala) | 2 | ||||
-rw-r--r-- | src/main/scala/kamon/metric/MetricsUtils.scala | 9 | ||||
-rw-r--r-- | src/test/scala/akka/instrumentation/ActorInstrumentationSpec.scala | 42 |
4 files changed, 53 insertions, 1 deletions
diff --git a/src/main/resources/META-INF/aop.xml b/src/main/resources/META-INF/aop.xml index d97a00ea..09f60a8f 100644 --- a/src/main/resources/META-INF/aop.xml +++ b/src/main/resources/META-INF/aop.xml @@ -10,6 +10,7 @@ <!--<aspect name="akka.ActorSystemAspect"/> <!–<aspect name="akka.MailboxAspect"/>–> <aspect name="akka.PoolMonitorAspect"/>--> + <aspect name="akka.ActorInstrumentation" /> <aspect name="akka.instrumentation.ActorRefTellInstrumentation"/> <aspect name="akka.instrumentation.ActorCellInvokeInstrumentation"/> <aspect name="kamon.instrumentation.PromiseCompletingRunnableInstrumentation" /> diff --git a/src/main/scala/akka/ActorAspect.scala b/src/main/scala/akka/ActorInstrumentation.scala index ae21aa13..afe0e459 100644 --- a/src/main/scala/akka/ActorAspect.scala +++ b/src/main/scala/akka/ActorInstrumentation.scala @@ -8,7 +8,7 @@ import com.codahale.metrics.Meter import kamon.metric.MetricsUtils._ @Aspect("perthis(actorCellCreation(*))") -class ActorAspect { +class ActorInstrumentation { /** * Aspect members diff --git a/src/main/scala/kamon/metric/MetricsUtils.scala b/src/main/scala/kamon/metric/MetricsUtils.scala index fc72dcf3..5b4ceaf4 100644 --- a/src/main/scala/kamon/metric/MetricsUtils.scala +++ b/src/main/scala/kamon/metric/MetricsUtils.scala @@ -34,6 +34,15 @@ object MetricsUtils { // } //} +// implicit def runnable(f: () => Unit): Runnable = +// new Runnable() { def run() = f() } +// +// +// import java.util.concurrent.Callable +// +// implicit def callable[T](f: () => T): Callable[T] = +// new Callable[T]() { def call() = f() } + // private val actorCounter:Counter = new Counter // private val actorTimer:Timer = new Timer // diff --git a/src/test/scala/akka/instrumentation/ActorInstrumentationSpec.scala b/src/test/scala/akka/instrumentation/ActorInstrumentationSpec.scala new file mode 100644 index 00000000..2921824e --- /dev/null +++ b/src/test/scala/akka/instrumentation/ActorInstrumentationSpec.scala @@ -0,0 +1,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 + } +} + + |