From 2b63540e5fffab545d0846cfb3dab5c0e1d0c9e1 Mon Sep 17 00:00:00 2001 From: Ivan Topolnak Date: Tue, 5 Nov 2013 18:38:39 -0300 Subject: basic separation of concerns between sub-projects --- .../scala/kamon/ServerRequestTracingSpec.scala | 49 ++++++++++++++++++++++ 1 file changed, 49 insertions(+) create mode 100644 kamon-spray/src/test/scala/kamon/ServerRequestTracingSpec.scala (limited to 'kamon-spray/src/test/scala/kamon') diff --git a/kamon-spray/src/test/scala/kamon/ServerRequestTracingSpec.scala b/kamon-spray/src/test/scala/kamon/ServerRequestTracingSpec.scala new file mode 100644 index 00000000..4cff38be --- /dev/null +++ b/kamon-spray/src/test/scala/kamon/ServerRequestTracingSpec.scala @@ -0,0 +1,49 @@ +package kamon + +import _root_.spray.httpx.RequestBuilding +import _root_.spray.routing.SimpleRoutingApp +import akka.testkit.TestKit +import akka.actor.{ActorRef, ActorSystem} +import org.scalatest.WordSpecLike +import scala.concurrent.Await +import scala.concurrent.duration._ +import _root_.spray.client.pipelining._ +import akka.util.Timeout +import kamon.trace.Trace +import kamon.Kamon.Extension +import kamon.trace.UowTracing.{Finish, Start} + +class ServerRequestTracingSpec extends TestKit(ActorSystem("server-request-tracing-spec")) with WordSpecLike with RequestBuilding { + + "the spray server request tracing instrumentation" should { + "start tracing a request when entering the server and close it when responding" in new TestServer { + client(Get(s"http://127.0.0.1:$port/")) + + within(5 seconds) { + val traceId = expectMsgPF() { case Start(id) => id} + expectMsgPF() { case Finish(traceId) => } + } + } + } + + + + trait TestServer extends SimpleRoutingApp { + + // Nasty, but very helpful for tests. + AkkaExtensionSwap.swap(system, Trace, new Extension { + def manager: ActorRef = testActor + }) + + implicit val timeout = Timeout(20 seconds) + val port: Int = Await.result( + startServer(interface = "127.0.0.1", port = 0)( + get { + complete("ok") + } + ), timeout.duration).localAddress.getPort + + val client = sendReceive(system, system.dispatcher, timeout) + + } +} -- cgit v1.2.3