public void RecoveryPermitter_must_return_permit_when_actor_is_prematurely_terminated_when_holding_permit() { var p1 = CreateTestProbe(); var p2 = CreateTestProbe(); var p3 = CreateTestProbe(); var p4 = CreateTestProbe(); var actor = Sys.ActorOf(ForwardActor.Props(p1.Ref)); permitter.Tell(RequestRecoveryPermit.Instance, actor); p1.ExpectMsg <RecoveryPermitGranted>(); RequestPermit(p2); RequestPermit(p3); permitter.Tell(RequestRecoveryPermit.Instance, p4.Ref); p4.ExpectNoMsg(100); actor.Tell(PoisonPill.Instance); p4.ExpectMsg <RecoveryPermitGranted>(); permitter.Tell(ReturnRecoveryPermit.Instance, p2.Ref); permitter.Tell(ReturnRecoveryPermit.Instance, p3.Ref); permitter.Tell(ReturnRecoveryPermit.Instance, p4.Ref); }
public void CreateAndUseForwardActor() { int total = 0; EventWaitHandle wait = new AutoResetEvent(false); Actor actor = new LambdaActor(c => { total += (int)c; wait.Set(); }); ActorSystem system = new ActorSystem(); var actorref = system.ActorOf(actor); Actor forwarder = new ForwardActor(actorref); forwarder.Receive(1); wait.WaitOne(); Assert.AreEqual(1, total); }