aboutsummaryrefslogtreecommitdiff
path: root/kamon-trace/src/test/scala/kamon
diff options
context:
space:
mode:
Diffstat (limited to 'kamon-trace/src/test/scala/kamon')
-rw-r--r--kamon-trace/src/test/scala/kamon/ActorInstrumentationSpec.scala4
-rw-r--r--kamon-trace/src/test/scala/kamon/AskPatternTracingSpec.scala43
2 files changed, 45 insertions, 2 deletions
diff --git a/kamon-trace/src/test/scala/kamon/ActorInstrumentationSpec.scala b/kamon-trace/src/test/scala/kamon/ActorInstrumentationSpec.scala
index f5d88f06..d675c4f4 100644
--- a/kamon-trace/src/test/scala/kamon/ActorInstrumentationSpec.scala
+++ b/kamon-trace/src/test/scala/kamon/ActorInstrumentationSpec.scala
@@ -65,7 +65,7 @@ class ActorInstrumentationSpec extends TestKit(ActorSystem("ActorInstrumentation
}
trait TraceContextEchoFixture {
- val testTraceContext = Trace.newTraceContext()
+ val testTraceContext = Trace.newTraceContext("")
val echo = system.actorOf(Props[TraceContextEcho])
Trace.set(testTraceContext)
@@ -75,7 +75,7 @@ class ActorInstrumentationSpec extends TestKit(ActorSystem("ActorInstrumentation
override val echo = system.actorOf(Props[TraceContextEcho].withRouter(RoundRobinRouter(nrOfInstances = 10)))
def tellWithNewContext(target: ActorRef, message: Any): TraceContext = {
- val context = Trace.newTraceContext()
+ val context = Trace.newTraceContext("")
Trace.set(context)
target ! message
diff --git a/kamon-trace/src/test/scala/kamon/AskPatternTracingSpec.scala b/kamon-trace/src/test/scala/kamon/AskPatternTracingSpec.scala
new file mode 100644
index 00000000..c2566725
--- /dev/null
+++ b/kamon-trace/src/test/scala/kamon/AskPatternTracingSpec.scala
@@ -0,0 +1,43 @@
+package kamon
+
+import akka.testkit.TestKit
+import akka.actor.{Props, Actor, ActorSystem}
+import org.scalatest.{Matchers, WordSpecLike}
+import akka.event.Logging.Warning
+import scala.concurrent.duration._
+import akka.pattern.ask
+import akka.util.Timeout
+import kamon.trace.{Trace, ContextAware}
+import org.scalatest.OptionValues._
+
+
+class AskPatternTracingSpec extends TestKit(ActorSystem("ask-pattern-tracing-spec")) with WordSpecLike with Matchers {
+
+ "the AskPatternTracing" should {
+ "log a warning with a stack trace and TraceContext taken from the moment the ask was triggered" in {
+ implicit val ec = system.dispatcher
+ implicit val timeout = Timeout(10 milliseconds)
+ val noReply = system.actorOf(Props[NoReply])
+ system.eventStream.subscribe(testActor, classOf[Warning])
+
+ within(500 milliseconds) {
+ val initialCtx = Trace.start("ask-test")
+ noReply ? "hello"
+
+ val warn = expectMsgPF() {
+ case warn: Warning if warn.message.toString.contains("Timeout triggered for ask pattern") => warn
+ }
+ val capturedCtx = warn.asInstanceOf[ContextAware].traceContext
+
+ capturedCtx should be('defined)
+ capturedCtx.value should equal (initialCtx)
+ }
+ }
+ }
+}
+
+class NoReply extends Actor {
+ def receive = {
+ case any =>
+ }
+}