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);
        }
Esempio n. 2
0
        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);
        }