From 34f38dc1cc22b20f007f19a28f8c42c26e034a69 Mon Sep 17 00:00:00 2001 From: Ivan Topolnjak Date: Wed, 5 Mar 2014 08:04:57 -0300 Subject: basic traces documentation --- site/src/test/resources/application.conf | 4 ++ site/src/test/resources/logback.xml | 13 +++++ .../docs/trace/SimpleContextPropagation.scala | 63 ++++++++++++++++++++++ 3 files changed, 80 insertions(+) create mode 100644 site/src/test/resources/application.conf create mode 100644 site/src/test/resources/logback.xml create mode 100644 site/src/test/scala/kamon/docs/trace/SimpleContextPropagation.scala (limited to 'site/src/test') diff --git a/site/src/test/resources/application.conf b/site/src/test/resources/application.conf new file mode 100644 index 00000000..dc63c307 --- /dev/null +++ b/site/src/test/resources/application.conf @@ -0,0 +1,4 @@ +akka { + loggers = [ "akka.event.slf4j.Slf4jLogger" ] + loglevel = INFO +} \ No newline at end of file diff --git a/site/src/test/resources/logback.xml b/site/src/test/resources/logback.xml new file mode 100644 index 00000000..6083e8f6 --- /dev/null +++ b/site/src/test/resources/logback.xml @@ -0,0 +1,13 @@ + + + + + %date{HH:mm:ss.SSS} %-5level [%traceToken][%X{akkaSource}] %msg%n + + + + + + + + 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 + * + * 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 -- cgit v1.2.3