Exemplo n.º 1
0
        public void should_send_message_to_persistence()
        {
            // standard case: the message is forwarded to the persistence through SendContext.PersistencePeer
            // the target peer is down

            var senderTransport = CreateAndStartZmqTransport();

            var receiverPeerId = new PeerId("Abc.R.0");

            var persistenceMessages  = new ConcurrentBag <TransportMessage>();
            var persistenceTransport = CreateAndStartZmqTransport(onMessageReceived: persistenceMessages.Add);
            var persistencePeer      = new Peer(persistenceTransport.PeerId, persistenceTransport.InboundEndPoint);

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

            senderTransport.Send(message, Enumerable.Empty <Peer>(), new SendContext {
                PersistentPeerIds = { receiverPeerId }, PersistencePeer = persistencePeer
            });

            Wait.Until(() => persistenceMessages.Count == 1, 2.Seconds());
            var messageFromPersistence = persistenceMessages.ExpectedSingle();

            messageFromPersistence.ShouldHaveSamePropertiesAs(message, "Environment", "WasPersisted", "PersistentPeerIds", "IsPersistTransportMessage");
            messageFromPersistence.Environment.ShouldEqual("Test");
            messageFromPersistence.PersistentPeerIds.ShouldBeEquivalentTo(new[] { receiverPeerId });
        }
Exemplo n.º 2
0
        public void should_send_messages()
        {
            var transport1ReceivedMessages = new ConcurrentBag <TransportMessage>();
            var transport1     = CreateAndStartZmqTransport(onMessageReceived: transport1ReceivedMessages.Add);
            var transport1Peer = new Peer(transport1.PeerId, transport1.InboundEndPoint);

            var transport2ReceivedMessages = new ConcurrentBag <TransportMessage>();
            var transport2     = CreateAndStartZmqTransport(onMessageReceived: transport2ReceivedMessages.Add);
            var transport2Peer = new Peer(transport2.PeerId, transport2.InboundEndPoint);

            var message1 = new FakeCommand(1).ToTransportMessage();

            transport1.Send(message1, new[] { transport2Peer });

            Wait.Until(() => transport2ReceivedMessages.Count == 1, 2.Seconds());
            var transport2ReceivedMessage = transport2ReceivedMessages.ExpectedSingle();

            transport2ReceivedMessage.ShouldHaveSamePropertiesAs(message1, "Environment", "WasPersisted");
            transport2ReceivedMessage.Environment.ShouldEqual("Test");
            transport2ReceivedMessage.WasPersisted.ShouldEqual(false);

            var message2 = new FakeCommand(2).ToTransportMessage();

            transport2.Send(message2, new[] { transport1Peer });

            Wait.Until(() => transport1ReceivedMessages.Count == 1, 2.Seconds());
            var transport1ReceivedMessage = transport1ReceivedMessages.ExpectedSingle();

            transport1ReceivedMessage.ShouldHaveSamePropertiesAs(message2, "Environment", "WasPersisted");
            transport1ReceivedMessage.Environment.ShouldEqual("Test");
            transport1ReceivedMessage.WasPersisted.ShouldEqual(false);
        }
Exemplo n.º 3
0
        public void should_send_persist_transport_message_to_persistence()
        {
            // edge case: the message is directly forwarded to the persistence

            var senderTransport = CreateAndStartZmqTransport();

            var receiverPeerId = new PeerId("Abc.Receiver.123");

            var persistenceMessages  = new ConcurrentBag <TransportMessage>();
            var persistenceTransport = CreateAndStartZmqTransport(onMessageReceived: persistenceMessages.Add);
            var persistencePeer      = new Peer(persistenceTransport.PeerId, persistenceTransport.InboundEndPoint);

            var message = new FakeCommand(999).ToTransportMessage().ToPersistTransportMessage(receiverPeerId);

            senderTransport.Send(message, new[] { persistencePeer });

            Wait.Until(() => persistenceMessages.Count == 1, 2.Seconds());
            var messageFromPersistence = persistenceMessages.ExpectedSingle();

            messageFromPersistence.ShouldHaveSamePropertiesAs(message, "Environment", "WasPersisted");
            messageFromPersistence.Environment.ShouldEqual("Test");
            messageFromPersistence.PersistentPeerIds.ShouldBeEquivalentTo(new[] { receiverPeerId });
        }