public void AtLeastOnceDeliveryActorSetsDeliverySnapshotDuringRecovery()
        {
            var atLeastOnceDeliverySettings = new PersistenceSettings.AtLeastOnceDeliverySettings(TimeSpan.FromMilliseconds(200), 2, 5, 10);
            // TestActor is the destination actor.
            var alodActorProps = Props.Create <AlodActor>(atLeastOnceDeliverySettings, TestActor);
            var alodActor      = Sys.ActorOf(alodActorProps);

            alodActor.Tell(new Msg("payload"));
            Thread.Sleep(TimeSpan.FromSeconds(1)); // Allow for some retries.
            ExpectMsg <AlodEnvelope>(alode => LastSender.Tell(new Confirmation(alode.DeliveryId)));
            ReceiveWhile <object>(obj => obj as string == "Message delivered!", TimeSpan.FromSeconds(3));
            ReceiveWhile <object>(obj => true, TimeSpan.FromSeconds(3)); // Discard remaining messages.

            alodActor.Tell("snap");
            alodActor.Tell("delete");

            Watch(alodActor);
            alodActor.Tell(PoisonPill.Instance);
            ExpectTerminated(alodActor);
            Unwatch(alodActor);

            alodActor = Sys.ActorOf(alodActorProps);
            ExpectNoMsg(TimeSpan.FromSeconds(5));

            alodActor.Tell("last");
            ExpectMsg <long>(l => l == 1L);
        }
Пример #2
0
        public async Task A_Graph_stage_ActorRef_must_be_able_to_be_replied_to()
        {
            var t = Source.Maybe <int>().ToMaterialized(SumStage(TestActor), Keep.Both).Run(Materializer);

            var stageRef = ExpectMsg <IActorRef>();

            stageRef.Tell(new AddAndTell(1));
            ExpectMsg(1);
            stageRef.Should().Be(LastSender);
            LastSender.Tell(new AddAndTell(9));
            ExpectMsg(10);

            stageRef.Tell(StopNow.Instance);
            (await t.Item2).Should().Be(10);
        }
Пример #3
0
        public void A_Graph_stage_ActorRef_must_be_able_to_be_replied_to()
        {
            var t   = Source.Maybe <int>().ToMaterialized(SumStage(TestActor), Keep.Both).Run(Materializer);
            var res = t.Item2;

            var stageRef = ExpectMsg <IActorRef>();

            stageRef.Tell(new AddAndTell(1));
            ExpectMsg(1);
            stageRef.Should().Be(LastSender);
            LastSender.Tell(new AddAndTell(9));
            ExpectMsg(10);

            stageRef.Tell(StopNow.Instance);
            res.Wait(TimeSpan.FromSeconds(3)).Should().BeTrue();
            res.Result.Should().Be(10);
        }
Пример #4
0
        public async Task A_Graph_stage_ActorRef_must_yield_the_same_self_ref_each_time()
        {
            var t = Source.Maybe <int>().ToMaterialized(SumStage(TestActor), Keep.Both).Run(Materializer);

            var stageRef = ExpectMsg <IActorRef>();

            stageRef.Tell(CallInitStageActorRef.Instance);
            var explicitlyObtained = ExpectMsg <IActorRef>();

            stageRef.Should().Be(explicitlyObtained);
            explicitlyObtained.Tell(new AddAndTell(1));
            ExpectMsg(1);
            LastSender.Tell(new AddAndTell(2));
            ExpectMsg(3);
            stageRef.Tell(new AddAndTell(3));
            ExpectMsg(6);

            stageRef.Tell(StopNow.Instance);

            (await t.Item2).Should().Be(6);
        }
Пример #5
0
        public void A_Graph_stage_ActorRef_must_yield_the_same_self_ref_each_time()
        {
            var t   = Source.Maybe <int>().ToMaterialized(SumStage(TestActor), Keep.Both).Run(Materializer);
            var res = t.Item2;

            var stageRef = ExpectMsg <IActorRef>();

            stageRef.Tell(CallInitStageActorRef.Instance);
            var explicitlyObtained = ExpectMsg <IActorRef>();

            stageRef.Should().Be(explicitlyObtained);
            explicitlyObtained.Tell(new AddAndTell(1));
            ExpectMsg(1);
            LastSender.Tell(new AddAndTell(2));
            ExpectMsg(3);
            stageRef.Tell(new AddAndTell(3));
            ExpectMsg(6);

            stageRef.Tell(StopNow.Instance);
            res.Wait(TimeSpan.FromSeconds(3)).Should().BeTrue();
            res.Result.Should().Be(6);
        }