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);
            }
        }
예제 #2
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.Start();
                _bus.Publish(@event);

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

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

                var sentMessage = _transport.Messages.Single();
                expectedTransportMessage.ShouldHaveSamePropertiesAs(sentMessage.TransportMessage);
                var destination = sentMessage.Targets.Single();
                destination.ShouldHaveSamePropertiesAs(_peerUp);
            }
        }
        public void should_send_a_MessageProcessingFailed_on_unknown_event_error()
        {
            SetupPeersHandlingMessage<MessageProcessingFailed>(_peerUp);

            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));
            }
        }
예제 #5
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);

            _bus.Start();

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

                handled.ShouldBeFalse();

                _transport.ExpectExactly(new TransportMessageSent(message.ToTransportMessage(_self), _self));
            }
        }