diff options
Diffstat (limited to 'site/src/test/scala')
-rw-r--r-- | site/src/test/scala/kamon/docs/trace/SimpleContextPropagation.scala | 63 |
1 files changed, 63 insertions, 0 deletions
diff --git a/site/src/test/scala/kamon/docs/trace/SimpleContextPropagation.scala b/site/src/test/scala/kamon/docs/trace/SimpleContextPropagation.scala new file mode 100644 index 00000000..e8b1635f --- /dev/null +++ b/site/src/test/scala/kamon/docs/trace/SimpleContextPropagation.scala @@ -0,0 +1,63 @@ +/* + * ========================================================================================= + * Copyright © 2013 the kamon project <http://kamon.io/> + * + * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software distributed under the + * License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, + * either express or implied. See the License for the specific language governing permissions + * and limitations under the License. + * ========================================================================================= + */ + +package kamon.docs.trace + +import akka.actor._ +import akka.testkit.{ImplicitSender, TestKit} +import org.scalatest.WordSpecLike +import kamon.trace.TraceRecorder + + +class SimpleContextPropagation extends TestKit(ActorSystem("simple-context-propagation")) + with WordSpecLike with ImplicitSender { + + "Kamon propagates the TraceContext when sending messages between actors" in { + val upperCaser = system.actorOf(Props[UpperCaser], "upper-caser") + + for(_ <- 1 to 5) { + upperCaser ! s"Hello without context" + } + + expectMsgAllOf(21, 21, 21, 21, 21) + + for(_ <- 1 to 5) { + TraceRecorder.withNewTraceContext("simple-test") { + upperCaser ! "Hello World with TraceContext" + } + } + + expectMsgAllOf(29, 29, 29, 29, 29) + } +} + +class UpperCaser extends Actor with ActorLogging { + val lengthCalculator = context.actorOf(Props[LengthCalculator], "length-calculator") + + def receive = { + case anyString: String => + log.info("Upper casing [{}]", anyString) + lengthCalculator.forward(anyString.toUpperCase) + } +} + +class LengthCalculator extends Actor with ActorLogging { + def receive = { + case anyString: String => + log.info("Calculating the length of: [{}]", anyString) + sender ! anyString.length + } +}
\ No newline at end of file |