public void AroundReceive_SpanMessageAvailable_SpanContextChildSetup() { //setup builder and span var tracer = Substitute.For <ITracer>(); var spanBuilder = Substitute.For <ISpanBuilder>(); tracer.BuildSpan(null).ReturnsForAnyArgs(spanBuilder); var scope = Substitute.For <IScope>(); spanBuilder.StartActive(true).ReturnsForAnyArgs(scope); //setup akka context var context = Substitute.For <IActorContext>(); var add = new Address("akka", "system"); context.Self.Path.Returns(GetActorPath(add, "/ra")); context.Sender.Path.Returns(GetActorPath(add, "/sa")); //call var at = new AkkaTracer(tracer, "akka://service"); var m = new TracedMessage("m", null); m.Context["a"] = "b"; at.AroundReceive(context, m, typeof(SampleActor)); //assert spanBuilder.ReceivedWithAnyArgs(1).AsChildOf((ISpanContext)null); }
public void AroundReceive_SimpleSenderReceiver_SpanSetupCorrectly() { //setup builder and span var tracer = Substitute.For <ITracer>(); var spanBuilder = Substitute.For <ISpanBuilder>(); tracer.BuildSpan(null).ReturnsForAnyArgs(spanBuilder); var scope = Substitute.For <IScope>(); spanBuilder.StartActive(true).ReturnsForAnyArgs(scope); //setup akka context var context = Substitute.For <IActorContext>(); var add = new Address("akka", "system"); context.Self.Path.Returns(GetActorPath(add, "/ra")); context.Sender.Path.Returns(GetActorPath(add, "/sa")); //call var at = new AkkaTracer(tracer, "akka://service"); at.AroundReceive(context, new TracedMessage("m", null), typeof(SampleActor)); //assert scope.Span.Received(1).SetTag("sender.path", "akka://service/sa"); scope.Span.Received(1).SetTag("receiver.path", "akka://service/ra"); scope.Span.Received(1).SetTag("receiver.type", "Akka.OpenTracing.Tests.SampleActor"); scope.Span.Received(1).SetTag("message.type", "System.String"); }