diff options
author | Ivan Topolnjak <ivantopo@gmail.com> | 2014-07-27 17:03:10 -0300 |
---|---|---|
committer | Ivan Topolnjak <ivantopo@gmail.com> | 2014-07-27 17:03:10 -0300 |
commit | 023cc7a93e92524d1829256677cfbff1056fbe6f (patch) | |
tree | 246f185f10d2acc60b30d847dbb88ef5158c28f0 /kamon-play/src/test | |
parent | f366ce56f60e8df06f943fe48a861c7883bb606f (diff) | |
download | Kamon-023cc7a93e92524d1829256677cfbff1056fbe6f.tar.gz Kamon-023cc7a93e92524d1829256677cfbff1056fbe6f.tar.bz2 Kamon-023cc7a93e92524d1829256677cfbff1056fbe6f.zip |
+ play: record http server metrics, closes #56
Diffstat (limited to 'kamon-play/src/test')
-rw-r--r-- | kamon-play/src/test/scala/kamon/play/RequestInstrumentationSpec.scala | 26 |
1 files changed, 25 insertions, 1 deletions
diff --git a/kamon-play/src/test/scala/kamon/play/RequestInstrumentationSpec.scala b/kamon-play/src/test/scala/kamon/play/RequestInstrumentationSpec.scala index 3090e60e..fc195580 100644 --- a/kamon-play/src/test/scala/kamon/play/RequestInstrumentationSpec.scala +++ b/kamon-play/src/test/scala/kamon/play/RequestInstrumentationSpec.scala @@ -15,6 +15,10 @@ package kamon.play +import scala.concurrent.duration._ +import kamon.Kamon +import kamon.http.HttpServerMetrics +import kamon.metric.{ CollectionContext, Metrics } import kamon.play.action.TraceName import kamon.trace.{ TraceLocal, TraceRecorder } import org.scalatestplus.play._ @@ -23,8 +27,9 @@ import play.api.mvc.Results.Ok import play.api.mvc._ import play.api.test.Helpers._ import play.api.test._ +import play.libs.Akka -import scala.concurrent.Future +import scala.concurrent.{ Await, Future } class RequestInstrumentationSpec extends PlaySpec with OneServerPerSuite { @@ -107,6 +112,25 @@ class RequestInstrumentationSpec extends PlaySpec with OneServerPerSuite { val Some(result) = route(FakeRequest(GET, "/retrieve").withHeaders(traceTokenHeader, traceLocalStorageHeader)) TraceLocal.retrieve(TraceLocalKey).get must be(traceLocalStorageValue) } + + "record http server metrics for all processed requests" in { + val collectionContext = CollectionContext(100) + Kamon(Metrics)(Akka.system()).register(HttpServerMetrics, HttpServerMetrics.Factory).get.collect(collectionContext) + + for (repetition ← 1 to 10) { + Await.result(route(FakeRequest(GET, "/default").withHeaders(traceTokenHeader)).get, 10 seconds) + } + + for (repetition ← 1 to 5) { + Await.result(route(FakeRequest(GET, "/notFound").withHeaders(traceTokenHeader)).get, 10 seconds) + } + + val snapshot = Kamon(Metrics)(Akka.system()).register(HttpServerMetrics, HttpServerMetrics.Factory).get.collect(collectionContext) + snapshot.countsPerTraceAndStatusCode("GET: /default")("200").count must be(10) + snapshot.countsPerTraceAndStatusCode("GET: /notFound")("404").count must be(5) + snapshot.countsPerStatusCode("200").count must be(10) + snapshot.countsPerStatusCode("404").count must be(5) + } } object MockGlobalTest extends WithFilters(TraceLocalFilter) |