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); } }
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); } }
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 })); } }
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); } }
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)); } }
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)); } }
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(); } }