public void ReplayFilter_in_Warn_mode_should_warn_about_messages_from_several_old_writers()
        {
            var filter = Sys.ActorOf(ReplayFilter.Props(TestActor, ReplayFilterMode.Warn, 100, 10, false));

            EventFilter.Warning(start: "Invalid replayed event").Expect(3, () =>
            {
                filter.Tell(_m1);
                var m2B = new ReplayedMessage(WithWriter(_m2.Persistent, WriterB));
                filter.Tell(m2B);
                var m3C = new ReplayedMessage(WithWriter(_m3.Persistent, WriterC));
                filter.Tell(m3C);
                filter.Tell(_m2);
                filter.Tell(_m3);
                var m3B = new ReplayedMessage(WithWriter(_m3.Persistent, WriterB));
                filter.Tell(m3B);
                var m4C = new ReplayedMessage(WithWriter(_m3.Persistent, WriterC));
                filter.Tell(m4C);
                filter.Tell(_successMsg);

                ExpectMsg(_m1);
                ExpectMsg(m2B);
                ExpectMsg(m3C);
                ExpectMsg(_m2);
                ExpectMsg(_m3);
                ExpectMsg(m3B);
                ExpectMsg(m4C);
                ExpectMsg(_successMsg);
            });
        }
 protected bool IsReplayedMessage(ReplayedMessage message, long seqNr, bool isDeleted = false)
 {
     var p = message.Persistent;
     return p.IsDeleted == isDeleted
            && p.Payload.ToString() == "a-" + seqNr
            && p.PersistenceId == Pid
            && p.SequenceNr == seqNr;
 }
Exemple #3
0
        protected bool IsReplayedMessage(ReplayedMessage message, long seqNr, bool isDeleted = false)
        {
            var p = message.Persistent;

            return(p.IsDeleted == isDeleted &&
                   p.Payload.ToString() == "a-" + seqNr &&
                   p.PersistenceId == Pid &&
                   p.SequenceNr == seqNr);
        }
        public void ReplayFilter_in_RepairByDiscardOld_mode_should_pass_on_all_replayed_messages_when_switching_writer()
        {
            var filter = Sys.ActorOf(ReplayFilter.Props(TestActor, ReplayFilterMode.RepairByDiscardOld, 100, 10, false));
            filter.Tell(_m1);
            filter.Tell(_m2);
            var m32 = new ReplayedMessage(WithWriter(_m3.Persistent, WriterB));
            filter.Tell(m32);
            filter.Tell(_successMsg);

            ExpectMsg(_m1);
            ExpectMsg(_m2);
            ExpectMsg(m32);
            ExpectMsg(_successMsg);
        }
Exemple #5
0
        private void OnReplayedMessage(ReplayedMessage replayed)
        {
            // no need to buffer live messages if subscription is not live or toOffset is exceeded
            if ((_isLive || !_isCaughtUp) && _currentOffset < _toOffset)
            {
                _buffer.Add(new EventEnvelope(
                                new Sequence(replayed.Persistent.SequenceNr),
                                _persistenceId,
                                replayed.Persistent.SequenceNr,
                                replayed.Persistent.Payload
                                ));
                _currentOffset = replayed.Persistent.SequenceNr;
            }

            MaybeReply();
        }
        public void ReplayFilter_in_RepairByDiscardOld_mode_should_pass_on_all_replayed_messages_when_switching_writer()
        {
            var filter = Sys.ActorOf(ReplayFilter.Props(TestActor, ReplayFilterMode.RepairByDiscardOld, 100, 10, false));

            filter.Tell(_m1);
            filter.Tell(_m2);
            var m32 = new ReplayedMessage(WithWriter(_m3.Persistent, WriterB));

            filter.Tell(m32);
            filter.Tell(_successMsg);

            ExpectMsg(_m1);
            ExpectMsg(_m2);
            ExpectMsg(m32);
            ExpectMsg(_successMsg);
        }
        public void ReplayFilter_in_Fail_mode_should_fail_when_message_with_same_SequenceNo_from_old_overlapping_writer()
        {
            var filter = Sys.ActorOf(ReplayFilter.Props(TestActor, ReplayFilterMode.Fail, 100, 10, false));

            EventFilter.Error(start: "Invalid replayed event").ExpectOne(() =>
            {
                filter.Tell(_m1);
                filter.Tell(_m2);
                filter.Tell(_m3);
                var m3B = new ReplayedMessage(WithWriter(_m3.Persistent, WriterB));
                filter.Tell(m3B); // same as SequenceNo as m3, but from WriterB
                filter.Tell(_successMsg);

                ExpectMsg <ReplayMessagesFailure>(m => m.Cause is IllegalStateException);
            });
        }
        public void ReplayFilter_in_RepairByDiscardOld_mode_should_discard_message_with_same_SequenceNo_from_old_overlapping_writer()
        {
            var filter = Sys.ActorOf(ReplayFilter.Props(TestActor, ReplayFilterMode.RepairByDiscardOld, 100, 10, false));
            EventFilter.Warning(start: "Invalid replayed event").ExpectOne(() =>
            {
                filter.Tell(_m1);
                filter.Tell(_m2);
                filter.Tell(_m3);
                var m3B = new ReplayedMessage(WithWriter(_m3.Persistent, WriterB));
                filter.Tell(m3B); // same SequenceNo as m3, but from WriterB
                filter.Tell(_successMsg);

                ExpectMsg(_m1);
                ExpectMsg(_m2);
                ExpectMsg(m3B); // discard m3, because same SequenceNo from new writer
                ExpectMsg(_successMsg);
            });
        }
        public void ReplayFilter_in_RepairByDiscardOld_mode_should_discard_message_with_same_SequenceNo_from_old_overlapping_writer()
        {
            var filter = Sys.ActorOf(ReplayFilter.Props(TestActor, ReplayFilterMode.RepairByDiscardOld, 100, 10, false));

            EventFilter.Warning(start: "Invalid replayed event").ExpectOne(() =>
            {
                filter.Tell(_m1);
                filter.Tell(_m2);
                filter.Tell(_m3);
                var m3B = new ReplayedMessage(WithWriter(_m3.Persistent, WriterB));
                filter.Tell(m3B); // same SequenceNo as m3, but from WriterB
                filter.Tell(_successMsg);

                ExpectMsg(_m1);
                ExpectMsg(_m2);
                ExpectMsg(m3B); // discard m3, because same SequenceNo from new writer
                ExpectMsg(_successMsg);
            });
        }
        public void ReplayFilter_in_RepairByDiscardOld_mode_should_discard_messages_from_old_writer_after_switching_writer()
        {
            var filter = Sys.ActorOf(ReplayFilter.Props(TestActor, ReplayFilterMode.RepairByDiscardOld, 100, 10, false));

            EventFilter.Warning(start: "Invalid replayed event").Expect(2, () =>
            {
                filter.Tell(_m1);
                filter.Tell(_m2);
                var m3B = new ReplayedMessage(WithWriter(_m3.Persistent, WriterB));
                filter.Tell(m3B);
                filter.Tell(_m3);
                filter.Tell(_m4);
                filter.Tell(_successMsg);

                ExpectMsg(_m1);
                ExpectMsg(_m2);
                ExpectMsg(m3B);
                // discard m3, m4
                ExpectMsg(_successMsg);
            });
        }
        public void ReplayFilter_in_RepairByDiscardOld_mode_should_discard_messages_from_old_writer_after_switching_writer()
        {
            var filter = Sys.ActorOf(ReplayFilter.Props(TestActor, ReplayFilterMode.RepairByDiscardOld, 100, 10, false));
            EventFilter.Warning(start: "Invalid replayed event").Expect(2, () =>
            {
                filter.Tell(_m1);
                filter.Tell(_m2);
                var m3B = new ReplayedMessage(WithWriter(_m3.Persistent, WriterB));
                filter.Tell(m3B);
                filter.Tell(_m3);
                filter.Tell(_m4);
                filter.Tell(_successMsg);

                ExpectMsg(_m1);
                ExpectMsg(_m2);
                ExpectMsg(m3B);
                // discard m3, m4
                ExpectMsg(_successMsg);
            });
        }
        public void ReplayFilter_in_Warn_mode_should_warn_about_messages_from_several_old_writers()
        {
            var filter = Sys.ActorOf(ReplayFilter.Props(TestActor, ReplayFilterMode.Warn, 100, 10, false));
            EventFilter.Warning(start: "Invalid replayed event").Expect(3, () =>
            {
                filter.Tell(_m1);
                var m2B = new ReplayedMessage(WithWriter(_m2.Persistent, WriterB));
                filter.Tell(m2B);
                var m3C = new ReplayedMessage(WithWriter(_m3.Persistent, WriterC));
                filter.Tell(m3C);
                filter.Tell(_m2);
                filter.Tell(_m3);
                var m3B = new ReplayedMessage(WithWriter(_m3.Persistent, WriterB));
                filter.Tell(m3B);
                var m4C = new ReplayedMessage(WithWriter(_m3.Persistent, WriterC));
                filter.Tell(m4C);
                filter.Tell(_successMsg);

                ExpectMsg(_m1);
                ExpectMsg(m2B);
                ExpectMsg(m3C);
                ExpectMsg(_m2);
                ExpectMsg(_m3);
                ExpectMsg(m3B);
                ExpectMsg(m4C);
                ExpectMsg(_successMsg);
            });
        }
        public void ReplayFilter_in_Fail_mode_should_fail_when_messages_from_old_writer_after_switching_writer()
        {
            var filter = Sys.ActorOf(ReplayFilter.Props(TestActor, ReplayFilterMode.Fail, 100, 10, false));
            EventFilter.Error(start: "Invalid replayed event").ExpectOne(() =>
            {
                filter.Tell(_m1);
                filter.Tell(_m2);
                var m3B = new ReplayedMessage(WithWriter(_m3.Persistent, WriterB));
                filter.Tell(m3B);
                filter.Tell(_m3);
                filter.Tell(_m4);
                filter.Tell(_successMsg);

                ExpectMsg<ReplayMessagesFailure>(m => m.Cause is IllegalStateException);
            });
        }