diff options
author | Ivan Topolnak <itopolnak@despegar.com> | 2014-05-20 17:46:32 -0300 |
---|---|---|
committer | Ivan Topolnak <itopolnak@despegar.com> | 2014-05-20 17:46:32 -0300 |
commit | bb5da348cd27ccfa6561f4d6f63c6424e03004fe (patch) | |
tree | 9018324cb190c22f453d907e5e887808b924c9f7 /kamon-core/src/test/scala | |
parent | 2f0bf70826cfde49e980d362179717314290b6f1 (diff) | |
download | Kamon-bb5da348cd27ccfa6561f4d6f63c6424e03004fe.tar.gz Kamon-bb5da348cd27ccfa6561f4d6f63c6424e03004fe.tar.bz2 Kamon-bb5da348cd27ccfa6561f4d6f63c6424e03004fe.zip |
+ core: initial support for TraceLocal storage
Diffstat (limited to 'kamon-core/src/test/scala')
-rw-r--r-- | kamon-core/src/test/scala/kamon/trace/TraceLocalSpec.scala | 50 |
1 files changed, 50 insertions, 0 deletions
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) + } + } + } + +} |