diff options
author | Ivan Topolnjak <ivantopo@gmail.com> | 2015-02-12 11:30:06 +0100 |
---|---|---|
committer | Ivan Topolnjak <ivantopo@gmail.com> | 2015-02-13 05:15:30 +0100 |
commit | c6bb65535bcc3cc1ff3834a91473ee8dfa6145e8 (patch) | |
tree | d7dbe6a1007b168998f167ac74a98744542c6fa8 /kamon-play/src | |
parent | 6729c9632245328a007332cdcce7d362584d735a (diff) | |
download | Kamon-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/src')
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) } |