Example #1
0
        public void Tail_chopping_router_must_throw_exception_if_no_result_will_arrive_within_the_given_time()
        {
            var actor1 = Sys.ActorOf(Props.Create(() => new TailChopTestActor(500)), "Actor5");
            var actor2 = Sys.ActorOf(Props.Create(() => new TailChopTestActor(500)), "Actor6");

            var probe = CreateTestProbe();

            var routedActor = Sys.ActorOf(Props.Create <TestActor>()
                                          .WithRouter(new TailChoppingGroup(
                                                          new[]
            {
                actor1.Path.ToString(),
                actor2.Path.ToString()
            },
                                                          TimeSpan.FromMilliseconds(300),
                                                          TimeSpan.FromMilliseconds(50))
                                                      ));

            probe.Send(routedActor, "");
            probe.ExpectMsg <Status.Failure>(TimeSpan.FromMilliseconds(700));

            var actorList = new List <IActorRef> {
                actor1, actor2
            };

            Assert.True(AllShouldEqual(1, actorList)(x => (int)x.Ask("times").Result));

            routedActor.Tell(new Broadcast("stop"));
        }
        public void Tail_chopping_group_router_must_throw_exception_if_no_result_will_arrive_within_the_given_time()
        {
            var actor1 = Sys.ActorOf(Props.Create(() => new TailChopTestActor(1500.Milliseconds())), "Actor3");
            var actor2 = Sys.ActorOf(Props.Create(() => new TailChopTestActor(1500.Milliseconds())), "Actor4");

            var probe = CreateTestProbe();
            var paths = new List <string> {
                actor1.Path.ToString(), actor2.Path.ToString()
            };
            var routedActor = Sys.ActorOf(new TailChoppingGroup(paths, TimeSpan.FromMilliseconds(300), TimeSpan.FromMilliseconds(50)).Props());

            probe.Send(routedActor, "");
            var failure = probe.ExpectMsg <Status.Failure>();

            failure.Cause.Should().BeOfType <AskTimeoutException>();

            var actorList = new List <IActorRef> {
                actor1, actor2
            };

            AllShouldEqual(1, actorList)(x => (int)x.Ask("times").Result).Should().BeTrue();;

            routedActor.Tell(new Broadcast("stop"));
        }