public void Tell_TracedMessageAndExceptionDuringProcessing_TracerScopeDisposed() { //setup IAkkaTracer tracer = Substitute.For <IAkkaTracer>(); IScope scope = Substitute.For <IScope>(); tracer.AroundReceive(null, null, null).ReturnsForAnyArgs(scope); var tep = new TracingExtensionProvider(new SubsTracingExtensionFactory(tracer)); Sys.RegisterExtension(tep); var testActor = new TestActorRef <SampleActor>(Sys, Props.Create(() => new SampleActor())); //sync actor //call testActor.Tell(new TracedMessage("exception", null)); //assert scope.ReceivedWithAnyArgs(1).Dispose(); }
protected override bool AroundReceive(Receive receive, object message) { IScope scope = null; try { if (message is TracedMessage m) { scope = _tracer?.AroundReceive(Context, m, GetType()); message = m.Message; } return(base.AroundReceive(receive, message)); } finally { scope?.Dispose(); } }