aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDiego Parra <dparra@despegar.com>2013-05-31 19:50:16 -0300
committerDiego Parra <dparra@despegar.com>2013-05-31 19:50:16 -0300
commit8f4c649e6082671c416b250589540005d9fe1bf8 (patch)
treead5fb52d871c8b66b634379f434818e86af6bd7e
parent0609c571e2c390f4b069db3f0b1808947d27154d (diff)
downloadKamon-8f4c649e6082671c416b250589540005d9fe1bf8.tar.gz
Kamon-8f4c649e6082671c416b250589540005d9fe1bf8.tar.bz2
Kamon-8f4c649e6082671c416b250589540005d9fe1bf8.zip
WIP: Metrics 3
-rw-r--r--src/main/scala/kamon/metric/NewRelicReporter.scala12
-rw-r--r--src/test/scala/akka/instrumentation/ActorInstrumentationSpec.scala28
2 files changed, 23 insertions, 17 deletions
diff --git a/src/main/scala/kamon/metric/NewRelicReporter.scala b/src/main/scala/kamon/metric/NewRelicReporter.scala
index 76c901f5..56dce913 100644
--- a/src/main/scala/kamon/metric/NewRelicReporter.scala
+++ b/src/main/scala/kamon/metric/NewRelicReporter.scala
@@ -9,14 +9,20 @@ import scala.collection.JavaConverters._
class NewRelicReporter(registry: MetricRegistry, name: String,filter: MetricFilter, rateUnit: TimeUnit, durationUnit: TimeUnit) extends ScheduledReporter(registry, name, filter, rateUnit, durationUnit) {
- def processMeter(name: String, meter: Meter) {
- println(s"Logging to NewRelic: ${meter.getCount()}")
+ private[NewRelicReporter] def processMeter(name: String, meter: Meter) {
NewRelic.recordMetric("Custom/Actor/MessagesPerSecond", meter.getMeanRate().toFloat)
}
+ private[NewRelicReporter] def processCounter(name:String, counter:Counter) {
+ println(s"Logging to NewRelic: ${counter.getCount}")
+
+ }
def report(gauges: util.SortedMap[String, Gauge[_]], counters: util.SortedMap[String, Counter], histograms: util.SortedMap[String, Histogram], meters: util.SortedMap[String, Meter], timers: util.SortedMap[String, Timer]) {
//Process Meters
- meters.asScala.map{case(k,v) => processMeter(k,v)}
+ meters.asScala.map{case(name, meter) => processMeter(name, meter)}
+
+ //Process Meters
+ counters.asScala.map{case(name, counter) => processCounter(name, counter)}
}
}
diff --git a/src/test/scala/akka/instrumentation/ActorInstrumentationSpec.scala b/src/test/scala/akka/instrumentation/ActorInstrumentationSpec.scala
index 2921824e..4cc15a2f 100644
--- a/src/test/scala/akka/instrumentation/ActorInstrumentationSpec.scala
+++ b/src/test/scala/akka/instrumentation/ActorInstrumentationSpec.scala
@@ -3,31 +3,31 @@ 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 kamon.metric.Metrics._
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")
+ val meterForEchoActor = "meter-for-akka://default/user/Echo-Actor"
+ val totalMessages = 1000
+
+ "an instrumented Actor" should {
+ "send a message and record a metric on the Metrics Registry with the number of sent messages" in {
- "a instrumented Actor" should {
- "send a message and record a metric on the Metrics Registry and count messages" in {
+ (1 to totalMessages).foreach {x:Int =>
+ echoRef ! s"Message ${x}"
+ }
- echoRef ! "Message 1"
- echoRef ! "Message 2"
- echoRef ! "Message 3"
- echoRef ! "Message 4"
- echoRef ! "Message 5"
- echoRef ! "Message 6"
+ //to ensure that all messages was received
+ Thread.sleep(1000)
- val meter = getMeters.asScala.filterKeys(_.toLowerCase.contains("Echo-Actor".toLowerCase())).collectFirst{case pair:(String, Meter) => pair._2.getCount}.get
+ val messages = metricsRegistry.getMeters.asScala.get(meterForEchoActor).get.getCount
- meter should equal(6)
+ messages should equal(totalMessages)
}
}