aboutsummaryrefslogtreecommitdiff
path: root/kamon-spray/src/test/scala/kamon/ServerRequestTracingSpec.scala
diff options
context:
space:
mode:
authorIvan Topolnak <ivantopo@gmail.com>2013-11-05 18:38:39 -0300
committerIvan Topolnak <ivantopo@gmail.com>2013-11-05 18:38:39 -0300
commit2b63540e5fffab545d0846cfb3dab5c0e1d0c9e1 (patch)
tree56c4ad1f025c9144376cd4463ad4d4a23e37b571 /kamon-spray/src/test/scala/kamon/ServerRequestTracingSpec.scala
parent5127c3bb83cd6fe90e071720d995cfb53d913e6a (diff)
downloadKamon-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.scala49
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)
+
+ }
+}