aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorIvan Topolnjak <ivantopo@gmail.com>2013-12-04 00:36:26 -0300
committerIvan Topolnjak <ivantopo@gmail.com>2013-12-04 00:36:26 -0300
commit6150d254657fa2c855b2c1825257a7210bdb2654 (patch)
tree135e174582911ca797ba6ad01cf20d054259fd0d
parent231b5b0fc61438ec96e309436295e86808abdbb5 (diff)
downloadKamon-6150d254657fa2c855b2c1825257a7210bdb2654.tar.gz
Kamon-6150d254657fa2c855b2c1825257a7210bdb2654.tar.bz2
Kamon-6150d254657fa2c855b2c1825257a7210bdb2654.zip
move server tests to a higher level of abstraction
-rw-r--r--kamon-spray/src/main/scala/spray/can/client/ClientRequestTracing.scala3
-rw-r--r--kamon-spray/src/test/scala/kamon/spray/ServerRequestTracingSpec.scala (renamed from kamon-spray/src/test/scala/kamon/ServerRequestTracingSpec.scala)28
2 files changed, 16 insertions, 15 deletions
diff --git a/kamon-spray/src/main/scala/spray/can/client/ClientRequestTracing.scala b/kamon-spray/src/main/scala/spray/can/client/ClientRequestTracing.scala
index ab6f1f9c..b081bf00 100644
--- a/kamon-spray/src/main/scala/spray/can/client/ClientRequestTracing.scala
+++ b/kamon-spray/src/main/scala/spray/can/client/ClientRequestTracing.scala
@@ -39,6 +39,9 @@ class ClientRequestTracing {
@After("requestContextCreation(ctx, request)")
def afterRequestContextCreation(ctx: ContextAndSegmentCompletionAware, request: HttpRequest): Unit = {
+ // The RequestContext will be copied when a request needs to be retried but we are only interested in creating the
+ // completion handle the first time we create one.
+
// The read to ctx.completionHandle should take care of initializing the aspect timely.
if(ctx.completionHandle.isEmpty) {
val requestAttributes = Map[String, String](
diff --git a/kamon-spray/src/test/scala/kamon/ServerRequestTracingSpec.scala b/kamon-spray/src/test/scala/kamon/spray/ServerRequestTracingSpec.scala
index d598431a..e54fe24f 100644
--- a/kamon-spray/src/test/scala/kamon/ServerRequestTracingSpec.scala
+++ b/kamon-spray/src/test/scala/kamon/spray/ServerRequestTracingSpec.scala
@@ -13,20 +13,19 @@
* See the License for the specific language governing permissions and
* limitations under the License.
* ========================================================== */
-package kamon
+package kamon.spray
import _root_.spray.httpx.RequestBuilding
import _root_.spray.routing.SimpleRoutingApp
import akka.testkit.TestKit
-import akka.actor.{ActorRef, ActorSystem}
+import akka.actor.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}
+import kamon.trace.{UowTrace, Trace}
+import kamon.Kamon
class ServerRequestTracingSpec extends TestKit(ActorSystem("server-request-tracing-spec")) with WordSpecLike with RequestBuilding with TestServer {
@@ -37,8 +36,7 @@ class ServerRequestTracingSpec extends TestKit(ActorSystem("server-request-traci
}
within(5 seconds) {
- val traceId = expectMsgPF() { case Start(id, _) => id}
- expectMsgPF() { case Finish(traceId) => }
+ fishForNamedTrace("ok")
}
}
@@ -48,9 +46,7 @@ class ServerRequestTracingSpec extends TestKit(ActorSystem("server-request-traci
}
within(5 seconds) {
- val traceId = expectMsgPF() { case Start(id, _) => id }
- println("Expecting for trace: " + traceId)
- expectMsgPF() { case Finish(traceId) => }
+ fishForNamedTrace("clearcontext")
}
}
@@ -60,19 +56,21 @@ class ServerRequestTracingSpec extends TestKit(ActorSystem("server-request-traci
}
within(5 seconds) {
- expectMsgPF() { case Start(_, "GET: /accounts") => }
+ fishForNamedTrace("accounts")
}
}
}
+
+ def fishForNamedTrace(traceName: String) = fishForMessage() {
+ case trace: UowTrace if trace.name.contains(traceName) => true
+ case _ => false
+ }
}
trait TestServer extends SimpleRoutingApp {
self: TestKit =>
- // Nasty, but very helpful for tests.
- AkkaExtensionSwap.swap(system, Trace, new Extension {
- def manager: ActorRef = testActor
- })
+ Kamon(Trace).tell(Trace.Register, testActor)
implicit val timeout = Timeout(20 seconds)
val port: Int = Await.result(