diff options
author | Ivan Topolnak <ivantopo@gmail.com> | 2013-11-05 18:38:39 -0300 |
---|---|---|
committer | Ivan Topolnak <ivantopo@gmail.com> | 2013-11-05 18:38:39 -0300 |
commit | 2b63540e5fffab545d0846cfb3dab5c0e1d0c9e1 (patch) | |
tree | 56c4ad1f025c9144376cd4463ad4d4a23e37b571 /kamon-spray/src/test/scala/kamon/ServerRequestTracingSpec.scala | |
parent | 5127c3bb83cd6fe90e071720d995cfb53d913e6a (diff) | |
download | Kamon-2b63540e5fffab545d0846cfb3dab5c0e1d0c9e1.tar.gz Kamon-2b63540e5fffab545d0846cfb3dab5c0e1d0c9e1.tar.bz2 Kamon-2b63540e5fffab545d0846cfb3dab5c0e1d0c9e1.zip |
basic separation of concerns between sub-projects
Diffstat (limited to 'kamon-spray/src/test/scala/kamon/ServerRequestTracingSpec.scala')
-rw-r--r-- | kamon-spray/src/test/scala/kamon/ServerRequestTracingSpec.scala | 49 |
1 files changed, 49 insertions, 0 deletions
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) + + } +} |