Jelajahi Sumber

Add missing test for ZmqTransport

Olivier Coanet 7 tahun lalu
induk
melakukan
3d17821157
1 mengubah file dengan 25 tambahan dan 0 penghapusan
  1. 25 0
      src/Abc.Zebus.Tests/Transport/ZmqTransportTests.cs

+ 25 - 0
src/Abc.Zebus.Tests/Transport/ZmqTransportTests.cs

@@ -145,6 +145,7 @@ namespace Abc.Zebus.Tests.Transport
         public void should_send_message_to_peer_and_persistence()
         {
             // standard case: the message is forwarded to the persistence through SendContext.PersistencePeer
+            // the target peer is up
 
             var senderTransport = CreateAndStartZmqTransport();
 
@@ -172,6 +173,30 @@ namespace Abc.Zebus.Tests.Transport
             messageFromPersistence.PersistentPeerIds.ShouldBeEquivalentTo(new[] { receiverPeer.Id });
         }
 
+        [Test]
+        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, 500.Milliseconds());
+            var messageFromPersistence = persistenceMessages.ExpectedSingle();
+            messageFromPersistence.ShouldHaveSamePropertiesAs(message, "Environment", "WasPersisted", "PersistentPeerIds", "IsPersistTransportMessage");
+            messageFromPersistence.Environment.ShouldEqual("Test");
+            messageFromPersistence.PersistentPeerIds.ShouldBeEquivalentTo(new[] { receiverPeerId });
+        }
+
         [Test]
         public void should_send_persist_transport_message_to_persistence()
         {