public void DeathWatch_must_fail_a_monitor_which_doesnt_handle_Terminated() { EventFilter.Exception<ActorKilledException>().And.Exception<DeathPactException>().Expect(2, () => { var strategy = new FailedSupervisorStrategy(TestActor); _supervisor = Sys.ActorOf(Props.Create(() => new Supervisor(strategy)).WithDeploy(Deploy.Local)); var failed = _supervisor.Ask(Props.Empty).Result as ActorRef; var brother = _supervisor.Ask(Props.Create(() => new BrotherActor(failed))).Result as ActorRef; StartWatching(brother); failed.Tell(Kill.Instance); var result = ReceiveWhile(TimeSpan.FromSeconds(5), msg => { var res = 0; msg.Match() .With<FF>(ff => { if (ff.Fail.Cause is ActorKilledException && ff.Fail.Child == failed) res = 1; if (ff.Fail.Cause is DeathPactException && ff.Fail.Child == brother) res = 2; }) .With<WrappedTerminated>(x => res = x.Terminated.ActorRef == brother ? 3 : 0); return res.ToString(); }, 3); ((InternalActorRef)TestActor).IsTerminated.ShouldBe(false); result.ShouldOnlyContainInOrder("1", "2", "3"); }); }
private int RouteeSize(ActorRef router) { var routeesTask = router.Ask<Routees>(new GetRoutees(), TestKitSettings.DefaultTimeout); routeesTask.Wait(TestKitSettings.DefaultTimeout); return routeesTask.Result.Members.Count(); }