@@ -3,7 +3,8 @@ package kamon.datadog
33import java .time .Instant
44
55import kamon .Kamon
6- import kamon .metric .{ Instrument , MeasurementUnit , Metric , MetricSnapshot , PeriodSnapshot }
6+ import kamon .metric .Distribution .Percentile
7+ import kamon .metric ._
78import kamon .module .ModuleFactory
89import kamon .tag .TagSet
910import kamon .testkit .Reconfigure
@@ -23,7 +24,6 @@ class DatadogAPIReporterSpec extends AbstractHttpReporter with Matchers with Rec
2324 val baseUrl = mockResponse(" /test" , new MockResponse ().setStatus(" HTTP/1.1 200 OK" ))
2425 applyConfig(" kamon.datadog.api.api-url = \" " + baseUrl + " \" " )
2526 applyConfig(" kamon.datadog.api.api-key = \" dummy\" " )
26-
2727 reporter.reconfigure(Kamon .config())
2828
2929 reporter.reportPeriodSnapshot(
@@ -45,13 +45,67 @@ class DatadogAPIReporterSpec extends AbstractHttpReporter with Matchers with Rec
4545 val request = server.takeRequest()
4646 request.getRequestUrl.toString shouldEqual baseUrl + " ?api_key=dummy"
4747 request.getMethod shouldEqual " POST"
48- Json .parse(request.getBody() .readUtf8()) shouldEqual Json
48+ Json .parse(request.getBody.readUtf8()) shouldEqual Json
4949 .parse(
5050 """ {"series":[{"metric":"test.counter","interval":1,"points":[[1523394,0]],"type":"count","host":"test","tags":["env:staging","service:kamon-application","tag1:value1"]}]}"""
5151 )
5252
5353 }
5454
55+ " send timer metrics" in {
56+ val baseUrl = mockResponse(" /test" , new MockResponse ().setStatus(" HTTP/1.1 200 OK" ))
57+ applyConfig(" kamon.datadog.api.api-url = \" " + baseUrl + " \" " )
58+ applyConfig(" kamon.datadog.api.api-key = \" dummy\" " )
59+ reporter.reconfigure(Kamon .config())
60+
61+ val distribution = new Distribution {
62+ override def dynamicRange : DynamicRange = ???
63+ override def min : Long = 0
64+ override def max : Long = 10
65+ override def sum : Long = 100
66+ override def count : Long = 5
67+ override def percentile (rank : Double ): Distribution .Percentile = new Percentile {
68+ override def rank : Double = 0
69+ override def value : Long = 0
70+ override def countAtRank : Long = 0
71+ }
72+ override def percentiles : Seq [Distribution .Percentile ] = ???
73+ override def percentilesIterator : Iterator [Distribution .Percentile ] = ???
74+ override def buckets : Seq [Distribution .Bucket ] = ???
75+ override def bucketsIterator : Iterator [Distribution .Bucket ] = ???
76+ }
77+
78+ reporter.reportPeriodSnapshot(
79+ PeriodSnapshot .apply(
80+ now.minusMillis(1000 ),
81+ now,
82+ Nil ,
83+ Nil ,
84+ Nil ,
85+ MetricSnapshot .ofDistributions(
86+ " test.timer" ,
87+ " test" ,
88+ Metric .Settings .ForDistributionInstrument (MeasurementUnit .none, java.time.Duration .ZERO , DynamicRange .Default ),
89+ Instrument .Snapshot .apply(TagSet .Empty , distribution) :: Nil
90+ ) :: Nil ,
91+ Nil
92+ )
93+ )
94+ val request = server.takeRequest()
95+ request.getRequestUrl.toString shouldEqual baseUrl + " ?api_key=dummy"
96+ request.getMethod shouldEqual " POST"
97+ Json .parse(request.getBody.readUtf8()) shouldEqual Json
98+ .parse(
99+ """ {"series":[
100+ |{"metric":"test.timer.avg","interval":1,"points":[[1523394,20]],"type":"gauge","host":"test","tags":["env:staging","service:kamon-application"]},
101+ |{"metric":"test.timer.count","interval":1,"points":[[1523394,5]],"type":"count","host":"test","tags":["env:staging","service:kamon-application"]},
102+ |{"metric":"test.timer.median","interval":1,"points":[[1523394,0]],"type":"gauge","host":"test","tags":["env:staging","service:kamon-application"]},
103+ |{"metric":"test.timer.95percentile","interval":1,"points":[[1523394,0]],"type":"gauge","host":"test","tags":["env:staging","service:kamon-application"]},
104+ |{"metric":"test.timer.max","interval":1,"points":[[1523394,10]],"type":"gauge","host":"test","tags":["env:staging","service:kamon-application"]},
105+ |{"metric":"test.timer.min","interval":1,"points":[[1523394,0]],"type":"gauge","host":"test","tags":["env:staging","service:kamon-application"]}]}""" .stripMargin
106+ )
107+ }
108+
55109 reporter.stop()
56110
57111 }
0 commit comments