Ejemplo n.º 1
0
        public void should_handle_execution_completion_received()
        {
            var messageExecutionCompletedTransportMessage = new MessageExecutionCompleted(MessageId.NextId(), 0, null).ToTransportMessage();

            InnerTransport.RaiseMessageReceived(messageExecutionCompletedTransportMessage);

            var forwardedMessage = MessagesForwardedToBus.Single(x => x.MessageTypeId == MessageExecutionCompleted.TypeId);

            forwardedMessage.ShouldEqualDeeply(messageExecutionCompletedTransportMessage);
        }
Ejemplo n.º 2
0
        public void should_only_forward_replayed_messages_during_replay_phase()
        {
            Transport.Start();
            var transportMessageToForward = new FakeCommand(123).ToTransportMessage();
            var normalTransportMessage    = new FakeEvent(123).ToTransportMessage();

            var replayedTransportMessage = transportMessageToForward.ToReplayedTransportMessage(ReplayId);

            InnerTransport.RaiseMessageReceived(replayedTransportMessage);
            InnerTransport.RaiseMessageReceived(normalTransportMessage);

            MessagesForwardedToBus.Count.ShouldEqual(1);
            MessagesForwardedToBus.Single().Id.ShouldEqual(transportMessageToForward.Id);
        }
Ejemplo n.º 3
0
        public void should_stop_to_deduplicate_after_safety_phase()
        {
            Transport.Start();
            var duplicatedMessage = new FakeCommand(123).ToTransportMessage();

            InnerTransport.RaiseMessageReceived(new ReplayPhaseEnded(StartMessageReplayCommand.ReplayId).ToTransportMessage());
            InnerTransport.RaiseMessageReceived(new SafetyPhaseEnded(StartMessageReplayCommand.ReplayId).ToTransportMessage());
            InnerTransport.RaiseMessageReceived(duplicatedMessage);
            InnerTransport.RaiseMessageReceived(duplicatedMessage);

            Wait.Until(() => MessagesForwardedToBus.Count == 2, 100.Milliseconds());

            MessagesForwardedToBus.ForEach(msg => msg.Id.ShouldEqual(duplicatedMessage.Id));
        }
Ejemplo n.º 4
0
        public void should_forward_normal_message_after_replay_phase()
        {
            Transport.Start();

            var message = new FakeCommand(123).ToTransportMessage();

            InnerTransport.RaiseMessageReceived(new ReplayPhaseEnded(StartMessageReplayCommand.ReplayId).ToTransportMessage());
            Thread.Sleep(10);
            InnerTransport.RaiseMessageReceived(message);
            Thread.Sleep(10);

            MessagesForwardedToBus.Count.ShouldEqual(1);
            MessagesForwardedToBus.Single().Id.ShouldEqual(message.Id);
        }
Ejemplo n.º 5
0
        public void should_not_handle_twice_duplicate_messages()
        {
            Transport.Start();

            var duplicatedMessage = new FakeCommand(123).ToTransportMessage();

            InnerTransport.RaiseMessageReceived(new ReplayPhaseEnded(StartMessageReplayCommand.ReplayId).ToTransportMessage());
            InnerTransport.RaiseMessageReceived(duplicatedMessage);
            InnerTransport.RaiseMessageReceived(duplicatedMessage.ToReplayedTransportMessage(StartMessageReplayCommand.ReplayId));

            Wait.Until(() => MessagesForwardedToBus.Count == 1, 150.Milliseconds());

            MessagesForwardedToBus.Single().Id.ShouldEqual(duplicatedMessage.Id);
        }
Ejemplo n.º 6
0
        public void should_forward_a_normal_message_after_a_back_to_live_event()
        {
            Transport.Start();

            var transportMessageToForward = new FakeCommand(123).ToTransportMessage();

            InnerTransport.RaiseMessageReceived(transportMessageToForward);
            MessagesForwardedToBus.ShouldBeEmpty();

            InnerTransport.RaiseMessageReceived(new ReplayPhaseEnded(StartMessageReplayCommand.ReplayId).ToTransportMessage());

            Thread.Sleep(50);
            MessagesForwardedToBus.Count.ShouldEqual(1);
            MessagesForwardedToBus.Single().ShouldEqualDeeply(transportMessageToForward);
        }
Ejemplo n.º 7
0
        public void should_force_WasPersisted_for_replayed_messages()
        {
            Transport.Start();

            var sourceTransportMessage = new FakeCommand(123).ToTransportMessage();

            sourceTransportMessage.WasPersisted = null;

            var replayTransportMessage = sourceTransportMessage.ToReplayedTransportMessage(ReplayId);

            InnerTransport.RaiseMessageReceived(replayTransportMessage);

            var forwardedTransportMessage = MessagesForwardedToBus.ExpectedSingle();

            forwardedTransportMessage.WasPersisted.ShouldEqual(true);
        }
Ejemplo n.º 8
0
        public void should_not_lose_messages_when_switching_to_safety_phase()
        {
            Transport.Start();

            var liveMessageToStack = new FakeCommand(123).ToTransportMessage();
            var replayedMessageToPlayAfterStack = new FakeCommand(456).ToTransportMessage();

            InnerTransport.RaiseMessageReceived(liveMessageToStack);
            InnerTransport.RaiseMessageReceived(new ReplayPhaseEnded(StartMessageReplayCommand.ReplayId).ToTransportMessage());
            InnerTransport.RaiseMessageReceived(replayedMessageToPlayAfterStack.ToReplayedTransportMessage(StartMessageReplayCommand.ReplayId));

            Wait.Until(() => MessagesForwardedToBus.Count >= 2, 150.Milliseconds());

            MessagesForwardedToBus.Count.ShouldEqual(2);
            MessagesForwardedToBus.First().Id.ShouldEqual(liveMessageToStack.Id);
            MessagesForwardedToBus.Last().Id.ShouldEqual(replayedMessageToPlayAfterStack.Id);
        }
Ejemplo n.º 9
0
        public void should_prioritize_infrastructure_messages()
        {
            Transport.Start();

            Transport.MessageReceived += x =>
            {
                Thread.Sleep(200);
            };

            InnerTransport.RaiseMessageReceived(new FakeCommand(1).ToTransportMessage());
            InnerTransport.RaiseMessageReceived(new FakeInfrastructureCommand().ToTransportMessage());
            Thread.Sleep(20);

            MessagesForwardedToBus.ShouldContain(x => x.MessageTypeId == new MessageTypeId(typeof(FakeInfrastructureCommand)));

            Transport.Stop();
        }
Ejemplo n.º 10
0
        public void should_forward_a_normal_message_after_a_back_to_live_event()
        {
            Transport.Start();

            var transportMessageToForward = new FakeCommand(123).ToTransportMessage();

            InnerTransport.RaiseMessageReceived(transportMessageToForward);
            MessagesForwardedToBus.ShouldBeEmpty();

            InnerTransport.RaiseMessageReceived(new ReplayPhaseEnded(StartMessageReplayCommand.ReplayId).ToTransportMessage());

            Wait.Until(() => MessagesForwardedToBus.Count == 1, 150.Milliseconds());

            var transportMessage = MessagesForwardedToBus.Single();

            transportMessage.ShouldEqualDeeply(transportMessageToForward);
        }
Ejemplo n.º 11
0
        public void should_force_WasPersisted_for_replayed_messages_during_safety_phase()
        {
            Transport.Start();

            InnerTransport.RaiseMessageReceived(new ReplayPhaseEnded(ReplayId).ToTransportMessage());

            var sourceTransportMessage = new FakeCommand(123).ToTransportMessage();

            sourceTransportMessage.WasPersisted = null;

            var replayTransportMessage = sourceTransportMessage.ToReplayedTransportMessage(ReplayId);

            InnerTransport.RaiseMessageReceived(replayTransportMessage);

            Wait.Until(() => MessagesForwardedToBus.Count == 1, 150.Milliseconds());

            var forwardedTransportMessage = MessagesForwardedToBus.ExpectedSingle();

            forwardedTransportMessage.WasPersisted.ShouldEqual(true);
        }