aboutsummaryrefslogtreecommitdiff
path: root/kamon-datadog/src/test/scala
diff options
context:
space:
mode:
authorIvan Topolnjak <ivantopo@gmail.com>2014-05-21 09:09:34 -0300
committerIvan Topolnjak <ivantopo@gmail.com>2014-05-21 09:09:34 -0300
commit4ef79b01d0b9d6cb4628886a8a2a29048d997b13 (patch)
treefc223020d37bc08c3770e2f1a112822f90db2095 /kamon-datadog/src/test/scala
parent9d276fe8167da0e285b2c2a00721a6a3014699c4 (diff)
downloadKamon-4ef79b01d0b9d6cb4628886a8a2a29048d997b13.tar.gz
Kamon-4ef79b01d0b9d6cb4628886a8a2a29048d997b13.tar.bz2
Kamon-4ef79b01d0b9d6cb4628886a8a2a29048d997b13.zip
+ datadog: include identification tags and clean up all irrelevant code from StatsD
Diffstat (limited to 'kamon-datadog/src/test/scala')
-rw-r--r--kamon-datadog/src/test/scala/kamon/datadog/DatadogMetricSenderSpec.scala81
1 files changed, 21 insertions, 60 deletions
diff --git a/kamon-datadog/src/test/scala/kamon/datadog/DatadogMetricSenderSpec.scala b/kamon-datadog/src/test/scala/kamon/datadog/DatadogMetricSenderSpec.scala
index 98b36159..c649a044 100644
--- a/kamon-datadog/src/test/scala/kamon/datadog/DatadogMetricSenderSpec.scala
+++ b/kamon-datadog/src/test/scala/kamon/datadog/DatadogMetricSenderSpec.scala
@@ -17,7 +17,7 @@
package kamon.datadog
import akka.testkit.{ TestKitBase, TestProbe }
-import akka.actor.{Props, ActorRef, ActorSystem}
+import akka.actor.{ Props, ActorRef, ActorSystem }
import kamon.metrics.instruments.CounterRecorder
import org.scalatest.{ Matchers, WordSpecLike }
import kamon.metrics._
@@ -33,21 +33,19 @@ class DatadogMetricSenderSpec extends TestKitBase with WordSpecLike with Matcher
ConfigFactory.parseString("kamon.datadog.max-packet-size = 256 bytes"))
"the DataDogMetricSender" should {
- "flush the metrics data after processing the tick, even if the max-packet-size is not reached" in new UdpListenerFixture {
- val testMetricName = "test-metric"
- val testMetricKey = buildMetricKey(testMetricName)
+ "send latency measurements" in new UdpListenerFixture {
+ val testMetricName = "processing-time"
val testRecorder = HdrRecorder(1000L, 2, Scale.Unit)
testRecorder.record(10L)
val udp = setup(Map(testMetricName -> testRecorder.collect()))
val Udp.Send(data, _, _) = udp.expectMsgType[Udp.Send]
- data.utf8String should be(s"$testMetricKey:10|ms")
+ data.utf8String should be(s"kamon.actor.processing-time:10|ms|#actor:user/kamon")
}
- "include the correspondent sampling rate when rendering multiple occurrences of the same value" in new UdpListenerFixture {
- val testMetricName = "test-metric"
- val testMetricKey = buildMetricKey(testMetricName)
+ "include the sampling rate in case of multiple measurements of the same value" in new UdpListenerFixture {
+ val testMetricName = "processing-time"
val testRecorder = HdrRecorder(1000L, 2, Scale.Unit)
testRecorder.record(10L)
testRecorder.record(10L)
@@ -55,59 +53,23 @@ class DatadogMetricSenderSpec extends TestKitBase with WordSpecLike with Matcher
val udp = setup(Map(testMetricName -> testRecorder.collect()))
val Udp.Send(data, _, _) = udp.expectMsgType[Udp.Send]
- data.utf8String should be(s"$testMetricKey:10|ms|@0.5")
+ data.utf8String should be(s"kamon.actor.processing-time:10|ms|@0.5|#actor:user/kamon")
}
- "flush the packet when the max-packet-size is reached" in new UdpListenerFixture {
- val testMetricName = "test-metric"
- val testMetricKey = buildMetricKey(testMetricName)
- val testRecorder = HdrRecorder(testMaxPacketSize, 3, Scale.Unit)
-
- var bytes = 0//testMetricKey.length
- var level = 0
- while (bytes <= testMaxPacketSize) {
- level += 1
- testRecorder.record(level)
- bytes += s"$testMetricKey:$level|ms".length
- }
+ "send only one packet per measurement" in new UdpListenerFixture {
+ val testMetricName = "processing-time"
+ val testRecorder = HdrRecorder(1000L, 2, Scale.Unit)
+ testRecorder.record(10L)
+ testRecorder.record(10L)
+ testRecorder.record(20L)
val udp = setup(Map(testMetricName -> testRecorder.collect()))
- udp.expectMsgType[Udp.Send] // let the first flush pass
- val Udp.Send(data, _, _) = udp.expectMsgType[Udp.Send]
- data.utf8String should be(s"$testMetricKey:$level|ms")
- }
-
- "render multiple keys in the same packet using newline as separator" in new UdpListenerFixture {
- val firstTestMetricName = "first-test-metric"
- val firstTestMetricKey = buildMetricKey(firstTestMetricName)
- val secondTestMetricName = "second-test-metric"
- val secondTestMetricKey = buildMetricKey(secondTestMetricName)
- val thirdTestMetricName = "third-test-metric"
- val thirdTestMetricKey = buildMetricKey(thirdTestMetricName)
-
- val firstTestRecorder = HdrRecorder(1000L, 2, Scale.Unit)
- val secondTestRecorder = HdrRecorder(1000L, 2, Scale.Unit)
- val thirdTestRecorder = CounterRecorder()
-
- firstTestRecorder.record(10L)
- firstTestRecorder.record(10L)
-
- secondTestRecorder.record(21L)
-
- thirdTestRecorder.record(1L)
- thirdTestRecorder.record(1L)
- thirdTestRecorder.record(1L)
- thirdTestRecorder.record(1L)
-
- val t = thirdTestRecorder.collect()
- val udp = setup(Map(
- firstTestMetricName -> firstTestRecorder.collect(),
- secondTestMetricName -> secondTestRecorder.collect(),
- thirdTestMetricName -> t))
- val Udp.Send(data, _, _) = udp.expectMsgType[Udp.Send]
+ val Udp.Send(data1, _, _) = udp.expectMsgType[Udp.Send]
+ data1.utf8String should be(s"kamon.actor.processing-time:10|ms|@0.5|#actor:user/kamon")
- data.utf8String should be(s"$firstTestMetricKey:10|ms|@0.5\n$secondTestMetricKey:21|ms\n$thirdTestMetricKey:4|c")
+ val Udp.Send(data2, _, _) = udp.expectMsgType[Udp.Send]
+ data2.utf8String should be(s"kamon.actor.processing-time:20|ms|#actor:user/kamon")
}
}
@@ -115,11 +77,9 @@ class DatadogMetricSenderSpec extends TestKitBase with WordSpecLike with Matcher
val localhostName = ManagementFactory.getRuntimeMXBean.getName.split('@')(1)
val testMaxPacketSize = system.settings.config.getBytes("kamon.datadog.max-packet-size")
- def buildMetricKey(metricName: String): String = s"kamon.$localhostName.test-metric-category.test-group.$metricName"
-
def setup(metrics: Map[String, MetricSnapshotLike]): TestProbe = {
val udp = TestProbe()
- val metricsSender = system.actorOf(Props(new DatadogMetricsSender(new InetSocketAddress(localhostName, 0), testMaxPacketSize) {
+ val metricsSender = system.actorOf(Props(new DatadogMetricsSender(new InetSocketAddress(localhostName, 0)) {
override def udpExtension(implicit system: ActorSystem): ActorRef = udp.ref
}))
@@ -127,10 +87,11 @@ class DatadogMetricSenderSpec extends TestKitBase with WordSpecLike with Matcher
udp.expectMsgType[Udp.SimpleSender]
udp.reply(Udp.SimpleSenderReady)
+ // These names are not intented to match the real actor metrics, it's just about seeing more familiar data in tests.
val testGroupIdentity = new MetricGroupIdentity {
- val name: String = "test-group"
+ val name: String = "user/kamon"
val category: MetricGroupCategory = new MetricGroupCategory {
- val name: String = "test-metric-category"
+ val name: String = "actor"
}
}