Exemplo n.º 1
0
            public void should_publish_a_message_to_All_peers()
            {
                using (MessageId.PauseIdGeneration())
                {
                    // Arrange
                    var message       = new FakeEvent(42);
                    var anotherPeerUp = new Peer(new PeerId("Abc.Testing.other"), "somePeer");
                    SetupPeersHandlingMessage <FakeEvent>(_peerUp, anotherPeerUp);
                    var expectedTransportMessage = message.ToTransportMessage(_self);

                    // Act
                    _bus.Start();
                    _bus.Publish(message);

                    // Assert

                    var sentMessage = _transport.Messages.ExpectedSingle();
                    expectedTransportMessage.ShouldHaveSamePropertiesAs(sentMessage.TransportMessage);
                    sentMessage.Targets.Count.ShouldEqual(2);
                    var destination1 = sentMessage.Targets.ExpectedSingle(x => x.Id == _peerUp.Id);
                    destination1.ShouldHaveSamePropertiesAs(_peerUp);
                    var destination2 = sentMessage.Targets.ExpectedSingle(x => x.Id == anotherPeerUp.Id);
                    destination2.ShouldHaveSamePropertiesAs(anotherPeerUp);
                }
            }
Exemplo n.º 2
0
            public void shoud_not_send_a_completion_message_for_events()
            {
                using (MessageId.PauseIdGeneration())
                {
                    var @event = new FakeEvent(123);

                    var transportMessageReceived = @event.ToTransportMessage(_peerUp);
                    _transport.RaiseMessageReceived(transportMessageReceived);

                    _transport.Messages.ShouldNotContain(x => x.TransportMessage.MessageTypeId == MessageExecutionCompleted.TypeId);
                }
            }
Exemplo n.º 3
0
        public void should_not_consider_if_peer_is_up_to_publish_events()
        {
            using (MessageId.PauseIdGeneration())
            {
                var @event = new FakeEvent(456);
                SetupPeersHandlingMessage <FakeEvent>(_peerUp, _peerDown);

                _bus.Publish(@event);

                _transport.ExpectExactly(new TransportMessageSent(@event.ToTransportMessage(_self), new[] { _peerUp, _peerDown }));
            }
        }
Exemplo n.º 4
0
        public void should_publish_a_message()
        {
            using (MessageId.PauseIdGeneration())
            {
                var message = new FakeEvent(456);
                SetupPeersHandlingMessage <FakeEvent>(_peerUp);
                var expectedTransportMessage = message.ToTransportMessage(_self);

                _bus.Publish(message);

                var sentMessage = _transport.Messages.Single();
                expectedTransportMessage.ShouldHaveSamePropertiesAs(sentMessage.TransportMessage);
                var destination = sentMessage.Targets.Single();
                destination.ShouldHaveSamePropertiesAs(_peerUp);
            }
        }
Exemplo n.º 5
0
        public void should_send_a_MessageProcessingFailed_on_unknown_event_error()
        {
            using (SystemDateTime.PauseTime())
                using (MessageId.PauseIdGeneration())
                {
                    var message     = new FakeEvent(123);
                    var messageJson = JsonConvert.SerializeObject(message);
                    var exception   = new Exception("Exception message");
                    SetupDispatch(message, error: exception);
                    var transportMessageReceived = message.ToTransportMessage(_peerUp);

                    _transport.RaiseMessageReceived(transportMessageReceived);

                    var expectedTransportMessage = new MessageProcessingFailed(transportMessageReceived, messageJson, exception.ToString(), SystemDateTime.UtcNow, new[] { typeof(FakeMessageHandler).FullName }).ToTransportMessage(_self);
                    _transport.Expect(new TransportMessageSent(expectedTransportMessage, _peerUp));
                }
        }
Exemplo n.º 6
0
        public void should_not_handle_event_locally_when_local_dispatch_is_disabled()
        {
            var message = new FakeEvent(1);
            var handled = false;

            SetupDispatch(message, x => handled = true);
            SetupPeersHandlingMessage <FakeEvent>(_self);

            using (LocalDispatch.Disable())
                using (MessageId.PauseIdGeneration())
                {
                    _bus.Publish(message);

                    handled.ShouldBeFalse();

                    _transport.ExpectExactly(new TransportMessageSent(message.ToTransportMessage(_self), _self));
                }
        }
Exemplo n.º 7
0
            public void should_not_send_a_MessageProcessingFailed_when_error_publication_is_not_enabled()
            {
                _configuration.SetupGet(x => x.IsErrorPublicationEnabled).Returns(false);

                SetupPeersHandlingMessage <MessageProcessingFailed>(_peerUp);

                _bus.Start();

                using (SystemDateTime.PauseTime())
                    using (MessageId.PauseIdGeneration())
                    {
                        var message   = new FakeEvent(123);
                        var exception = new Exception("Exception message");
                        SetupDispatch(message, error: exception);

                        _transport.RaiseMessageReceived(message.ToTransportMessage(_peerUp));

                        _transport.ExpectNothing();
                    }
            }