aboutsummaryrefslogtreecommitdiff
path: root/kamon-play
diff options
context:
space:
mode:
authorIvan Topolnjak <ivantopo@gmail.com>2015-02-12 11:30:06 +0100
committerIvan Topolnjak <ivantopo@gmail.com>2015-02-13 05:15:30 +0100
commitc6bb65535bcc3cc1ff3834a91473ee8dfa6145e8 (patch)
treed7dbe6a1007b168998f167ac74a98744542c6fa8 /kamon-play
parent6729c9632245328a007332cdcce7d362584d735a (diff)
downloadKamon-c6bb65535bcc3cc1ff3834a91473ee8dfa6145e8.tar.gz
Kamon-c6bb65535bcc3cc1ff3834a91473ee8dfa6145e8.tar.bz2
Kamon-c6bb65535bcc3cc1ff3834a91473ee8dfa6145e8.zip
! all: Kamon now works as a single instance in a companion object.
Diffstat (limited to 'kamon-play')
-rw-r--r--kamon-play/src/main/scala/kamon/play/Play.scala6
-rw-r--r--kamon-play/src/main/scala/kamon/play/instrumentation/RequestInstrumentation.scala17
-rw-r--r--kamon-play/src/main/scala/kamon/play/instrumentation/WSInstrumentation.scala3
-rw-r--r--kamon-play/src/test/scala/kamon/play/LoggerLikeInstrumentationSpec.scala3
-rw-r--r--kamon-play/src/test/scala/kamon/play/RequestInstrumentationSpec.scala15
-rw-r--r--kamon-play/src/test/scala/kamon/play/WSInstrumentationSpec.scala12
6 files changed, 27 insertions, 29 deletions
diff --git a/kamon-play/src/main/scala/kamon/play/Play.scala b/kamon-play/src/main/scala/kamon/play/Play.scala
index 7ca81028..3c3e4fa7 100644
--- a/kamon-play/src/main/scala/kamon/play/Play.scala
+++ b/kamon-play/src/main/scala/kamon/play/Play.scala
@@ -20,7 +20,7 @@ import akka.actor.{ ExtendedActorSystem, Extension, ExtensionId, ExtensionIdProv
import akka.event.Logging
import kamon.Kamon
import kamon.http.HttpServerMetrics
-import kamon.metric.{ Entity, Metrics }
+import kamon.metric.Entity
import play.api.libs.ws.WSRequest
import play.api.mvc.RequestHeader
@@ -37,11 +37,11 @@ class PlayExtension(private val system: ExtendedActorSystem) extends Kamon.Exten
private val config = system.settings.config.getConfig("kamon.play")
val httpServerMetrics = {
- val metricsExtension = Metrics.get(system)
+ val metricsExtension = Kamon.metrics
val factory = metricsExtension.instrumentFactory(HttpServerMetrics.category)
val entity = Entity("play-server", HttpServerMetrics.category)
- Metrics.get(system).register(entity, new HttpServerMetrics(factory)).recorder
+ metricsExtension.register(entity, new HttpServerMetrics(factory)).recorder
}
val defaultDispatcher = system.dispatchers.lookup(config.getString("dispatcher"))
diff --git a/kamon-play/src/main/scala/kamon/play/instrumentation/RequestInstrumentation.scala b/kamon-play/src/main/scala/kamon/play/instrumentation/RequestInstrumentation.scala
index 38f499b4..e9b2d570 100644
--- a/kamon-play/src/main/scala/kamon/play/instrumentation/RequestInstrumentation.scala
+++ b/kamon-play/src/main/scala/kamon/play/instrumentation/RequestInstrumentation.scala
@@ -36,14 +36,13 @@ class RequestInstrumentation {
@After("call(* play.api.GlobalSettings.onStart(*)) && args(application)")
def afterApplicationStart(application: play.api.Application): Unit = {
- Kamon(Play)(Akka.system())
+ Kamon(Play)
}
@Before("call(* play.api.GlobalSettings.onRouteRequest(..)) && args(requestHeader)")
def beforeRouteRequest(requestHeader: RequestHeader): Unit = {
- implicit val system = Akka.system()
+ import Kamon.tracer
val playExtension = Kamon(Play)
- val tracer = Kamon(Tracer)
val defaultTraceName = playExtension.generateTraceName(requestHeader)
val token = if (playExtension.includeTraceToken) {
@@ -58,14 +57,14 @@ class RequestInstrumentation {
def aroundDoFilter(pjp: ProceedingJoinPoint, next: EssentialAction): Any = {
val essentialAction = (requestHeader: RequestHeader) ⇒ {
- val executor = Kamon(Play)(Akka.system()).defaultDispatcher
+ val playExtension = Kamon(Play)
+ val executor = playExtension.defaultDispatcher
def onResult(result: Result): Result = {
TraceContext.map { ctx ⇒
ctx.finish()
- val playExtension = ctx.lookupExtension(Play)
- recordHttpServerMetrics(result.header, ctx.name, playExtension)
+ recordHttpServerMetrics(result.header, ctx.name)
if (playExtension.includeTraceToken) result.withHeaders(playExtension.traceTokenHeaderName -> ctx.token)
else result
@@ -87,12 +86,12 @@ class RequestInstrumentation {
@Before("call(* play.api.GlobalSettings.onError(..)) && args(request, ex)")
def beforeOnError(request: TraceContextAware, ex: Throwable): Unit = {
TraceContext.map { ctx ⇒
- recordHttpServerMetrics(InternalServerError.header, ctx.name, ctx.lookupExtension(Play))
+ recordHttpServerMetrics(InternalServerError.header, ctx.name)
}
}
- def recordHttpServerMetrics(header: ResponseHeader, traceName: String, playExtension: PlayExtension): Unit =
- playExtension.httpServerMetrics.recordResponse(traceName, header.status.toString)
+ def recordHttpServerMetrics(header: ResponseHeader, traceName: String): Unit =
+ Kamon(Play).httpServerMetrics.recordResponse(traceName, header.status.toString)
def storeDiagnosticData(request: RequestHeader): Unit = {
val agent = request.headers.get(UserAgent).getOrElse(Unknown)
diff --git a/kamon-play/src/main/scala/kamon/play/instrumentation/WSInstrumentation.scala b/kamon-play/src/main/scala/kamon/play/instrumentation/WSInstrumentation.scala
index fc58f9da..8b76ab8b 100644
--- a/kamon-play/src/main/scala/kamon/play/instrumentation/WSInstrumentation.scala
+++ b/kamon-play/src/main/scala/kamon/play/instrumentation/WSInstrumentation.scala
@@ -16,6 +16,7 @@
package kamon.play.instrumentation
+import kamon.Kamon
import kamon.play.Play
import kamon.trace.{ TraceContext, SegmentCategory }
import org.aspectj.lang.ProceedingJoinPoint
@@ -33,7 +34,7 @@ class WSInstrumentation {
@Around("onExecuteRequest(request)")
def aroundExecuteRequest(pjp: ProceedingJoinPoint, request: WSRequest): Any = {
TraceContext.map { ctx ⇒
- val playExtension = ctx.lookupExtension(Play)
+ val playExtension = Kamon(Play)
val executor = playExtension.defaultDispatcher
val segmentName = playExtension.generateHttpClientSegmentName(request)
val segment = ctx.startSegment(segmentName, SegmentCategory.HttpClient, Play.SegmentLibraryName)
diff --git a/kamon-play/src/test/scala/kamon/play/LoggerLikeInstrumentationSpec.scala b/kamon-play/src/test/scala/kamon/play/LoggerLikeInstrumentationSpec.scala
index 622c2501..de85743c 100644
--- a/kamon-play/src/test/scala/kamon/play/LoggerLikeInstrumentationSpec.scala
+++ b/kamon-play/src/test/scala/kamon/play/LoggerLikeInstrumentationSpec.scala
@@ -19,6 +19,7 @@ import ch.qos.logback.classic.spi.ILoggingEvent
import ch.qos.logback.classic.{ AsyncAppender, LoggerContext }
import ch.qos.logback.core.read.ListAppender
import ch.qos.logback.core.status.NopStatusListener
+import kamon.Kamon
import kamon.trace.TraceLocal
import kamon.trace.TraceLocal.AvailableToMdc
import org.scalatest.BeforeAndAfter
@@ -34,7 +35,7 @@ import scala.concurrent.duration._
import scala.concurrent.{ Await, Future }
class LoggerLikeInstrumentationSpec extends PlaySpec with OneServerPerSuite with BeforeAndAfter {
-
+ Kamon.start()
System.setProperty("config.file", "./kamon-play/src/test/resources/conf/application.conf")
val executor = scala.concurrent.ExecutionContext.Implicits.global
diff --git a/kamon-play/src/test/scala/kamon/play/RequestInstrumentationSpec.scala b/kamon-play/src/test/scala/kamon/play/RequestInstrumentationSpec.scala
index 0feecb82..3e199df6 100644
--- a/kamon-play/src/test/scala/kamon/play/RequestInstrumentationSpec.scala
+++ b/kamon-play/src/test/scala/kamon/play/RequestInstrumentationSpec.scala
@@ -16,8 +16,6 @@
package kamon.play
import kamon.Kamon
-import kamon.http.HttpServerMetrics
-import kamon.metric.{ Metrics, TraceMetrics }
import kamon.metric.instrument.CollectionContext
import kamon.play.action.TraceName
import kamon.trace.TraceLocal.HttpContextKey
@@ -33,13 +31,12 @@ import play.api.test.Helpers._
import play.api.test._
import play.core.Router.{ HandlerDef, Route, Routes }
import play.core.{ DynamicPart, PathPattern, Router, StaticPart }
-import play.libs.Akka
import scala.concurrent.duration._
import scala.concurrent.{ Await, Future }
class RequestInstrumentationSpec extends PlaySpec with OneServerPerSuite {
-
+ Kamon.start()
System.setProperty("config.file", "./kamon-play/src/test/resources/conf/application.conf")
val executor = scala.concurrent.ExecutionContext.Implicits.global
@@ -130,17 +127,17 @@ class RequestInstrumentationSpec extends PlaySpec with OneServerPerSuite {
"response to the getRouted Action and normalise the current TraceContext name" in {
Await.result(WS.url("http://localhost:19001/getRouted").get(), 10 seconds)
- Kamon(Metrics)(Akka.system()).find("getRouted.get", "trace") must not be empty
+ Kamon.metrics.find("getRouted.get", "trace") must not be empty
}
"response to the postRouted Action and normalise the current TraceContext name" in {
Await.result(WS.url("http://localhost:19001/postRouted").post("content"), 10 seconds)
- Kamon(Metrics)(Akka.system()).find("postRouted.post", "trace") must not be empty
+ Kamon.metrics.find("postRouted.post", "trace") must not be empty
}
"response to the showRouted Action and normalise the current TraceContext name" in {
Await.result(WS.url("http://localhost:19001/showRouted/2").get(), 10 seconds)
- Kamon(Metrics)(Akka.system()).find("show.some.id.get", "trace") must not be empty
+ Kamon.metrics.find("show.some.id.get", "trace") must not be empty
}
"include HttpContext information for help to diagnose possible errors" in {
@@ -155,7 +152,7 @@ class RequestInstrumentationSpec extends PlaySpec with OneServerPerSuite {
"record http server metrics for all processed requests" in {
val collectionContext = CollectionContext(100)
- Kamon(Metrics)(Akka.system()).find("play-server", "http-server").get.collect(collectionContext)
+ Kamon.metrics.find("play-server", "http-server").get.collect(collectionContext)
for (repetition ← 1 to 10) {
Await.result(route(FakeRequest(GET, "/default").withHeaders(traceTokenHeader)).get, 10 seconds)
@@ -169,7 +166,7 @@ class RequestInstrumentationSpec extends PlaySpec with OneServerPerSuite {
Await.result(routeWithOnError(FakeRequest(GET, "/error").withHeaders(traceTokenHeader)).get, 10 seconds)
}
- val snapshot = Kamon(Metrics)(Akka.system()).find("play-server", "http-server").get.collect(collectionContext)
+ val snapshot = Kamon.metrics.find("play-server", "http-server").get.collect(collectionContext)
snapshot.counter("GET: /default_200").get.count must be(10)
snapshot.counter("GET: /notFound_404").get.count must be(5)
snapshot.counter("GET: /error_500").get.count must be(5)
diff --git a/kamon-play/src/test/scala/kamon/play/WSInstrumentationSpec.scala b/kamon-play/src/test/scala/kamon/play/WSInstrumentationSpec.scala
index 795453d0..9e87da84 100644
--- a/kamon-play/src/test/scala/kamon/play/WSInstrumentationSpec.scala
+++ b/kamon-play/src/test/scala/kamon/play/WSInstrumentationSpec.scala
@@ -17,8 +17,8 @@
package kamon.play
import kamon.Kamon
-import kamon.metric.{ Metrics, EntitySnapshot, TraceMetrics }
-import kamon.trace.{ Tracer, TraceContext, SegmentCategory }
+import kamon.metric.{ EntitySnapshot, TraceMetrics }
+import kamon.trace.{ TraceContext, SegmentCategory }
import org.scalatest.{ Matchers, WordSpecLike }
import org.scalatestplus.play.OneServerPerSuite
import play.api.libs.ws.WS
@@ -26,12 +26,12 @@ import play.api.mvc.Action
import play.api.mvc.Results.Ok
import play.api.test.Helpers._
import play.api.test._
-import play.libs.Akka
import scala.concurrent.Await
import scala.concurrent.duration._
class WSInstrumentationSpec extends WordSpecLike with Matchers with OneServerPerSuite {
+ Kamon.start()
import kamon.metric.TraceMetricsSpec.SegmentSyntax
System.setProperty("config.file", "./kamon-play/src/test/resources/conf/application.conf")
@@ -66,11 +66,11 @@ class WSInstrumentationSpec extends WordSpecLike with Matchers with OneServerPer
}
def newContext(name: String): TraceContext =
- Kamon(Tracer)(Akka.system).newContext(name)
+ Kamon.tracer.newContext(name)
def takeSnapshotOf(traceName: String): EntitySnapshot = {
- val recorder = Kamon(Metrics)(Akka.system()).register(TraceMetrics, traceName).get.recorder
- val collectionContext = Kamon(Metrics)(Akka.system()).buildDefaultCollectionContext
+ val recorder = Kamon.metrics.register(TraceMetrics, traceName).get.recorder
+ val collectionContext = Kamon.metrics.buildDefaultCollectionContext
recorder.collect(collectionContext)
}