aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDiego Parra <dparra@despegar.com>2013-05-31 17:57:26 -0300
committerDiego Parra <dparra@despegar.com>2013-05-31 17:57:26 -0300
commit0609c571e2c390f4b069db3f0b1808947d27154d (patch)
tree3d1544811f0eb5c44d3983d17e5c530ac68506c0
parente737bdf5cf87e2ce6a03754a88b68bd87a78678b (diff)
downloadKamon-0609c571e2c390f4b069db3f0b1808947d27154d.tar.gz
Kamon-0609c571e2c390f4b069db3f0b1808947d27154d.tar.bz2
Kamon-0609c571e2c390f4b069db3f0b1808947d27154d.zip
WIP:Metrics 3
-rw-r--r--src/main/resources/META-INF/aop.xml1
-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.scala9
-rw-r--r--src/test/scala/akka/instrumentation/ActorInstrumentationSpec.scala42
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"/>
&lt;!&ndash;<aspect name="akka.MailboxAspect"/>&ndash;&gt;
<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
+ }
+}
+
+