From bb5da348cd27ccfa6561f4d6f63c6424e03004fe Mon Sep 17 00:00:00 2001 From: Ivan Topolnak Date: Tue, 20 May 2014 17:46:32 -0300 Subject: + core: initial support for TraceLocal storage --- .../test/scala/kamon/trace/TraceLocalSpec.scala | 50 ++++++++++++++++++++++ 1 file changed, 50 insertions(+) create mode 100644 kamon-core/src/test/scala/kamon/trace/TraceLocalSpec.scala (limited to 'kamon-core/src/test/scala') diff --git a/kamon-core/src/test/scala/kamon/trace/TraceLocalSpec.scala b/kamon-core/src/test/scala/kamon/trace/TraceLocalSpec.scala new file mode 100644 index 00000000..53ff8a24 --- /dev/null +++ b/kamon-core/src/test/scala/kamon/trace/TraceLocalSpec.scala @@ -0,0 +1,50 @@ +package kamon.trace + +import akka.testkit.TestKit +import akka.actor.ActorSystem +import org.scalatest.{ OptionValues, Matchers, WordSpecLike } +import org.scalatest.concurrent.PatienceConfiguration + +class TraceLocalSpec extends TestKit(ActorSystem("trace-local-spec")) with WordSpecLike with Matchers + with PatienceConfiguration with OptionValues { + + object SampleTraceLocalKey extends TraceLocal.TraceLocalKey { type ValueType = String } + + "the TraceLocal storage" should { + "allow storing and retrieving values" in { + TraceRecorder.withNewTraceContext("store-and-retrieve-trace-local") { + val testString = "Hello World" + + TraceLocal.store(SampleTraceLocalKey)(testString) + TraceLocal.retrieve(SampleTraceLocalKey).value should equal(testString) + } + } + + "return None when retrieving a non existent key" in { + TraceRecorder.withNewTraceContext("non-existent-key") { + TraceLocal.retrieve(SampleTraceLocalKey) should equal(None) + } + } + + "return None when retrieving a key without a current TraceContext" in { + TraceLocal.retrieve(SampleTraceLocalKey) should equal(None) + } + + "be attached to the TraceContext when it is propagated" in { + val testString = "Hello World" + val testContext = TraceRecorder.withNewTraceContext("manually-propagated-trace-local") { + TraceLocal.store(SampleTraceLocalKey)(testString) + TraceLocal.retrieve(SampleTraceLocalKey).value should equal(testString) + TraceRecorder.currentContext + } + + /** No TraceLocal should be available here */ + TraceLocal.retrieve(SampleTraceLocalKey) should equal(None) + + TraceRecorder.withTraceContext(testContext) { + TraceLocal.retrieve(SampleTraceLocalKey).value should equal(testString) + } + } + } + +} -- cgit v1.2.3