activemq-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From michaelpea...@apache.org
Subject [activemq-nms-amqp] branch master updated: AMQNET-622: Invoke IConnection event listeners on connection lost and on reconnect
Date Thu, 16 Jan 2020 12:23:34 GMT
This is an automated email from the ASF dual-hosted git repository.

michaelpearce pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/activemq-nms-amqp.git


The following commit(s) were added to refs/heads/master by this push:
     new e523178  AMQNET-622: Invoke IConnection event listeners on connection lost and on
reconnect
     new d87646e  Merge pull request #51 from HavretGC/AMQNET-622_invoke-IConnection-event-listeners-on-reconnect
e523178 is described below

commit e5231786f4422c4a738bd4583ccede7dc1e0ab5f
Author: Havret <h4vret@gmail.com>
AuthorDate: Mon Dec 30 15:41:30 2019 +0100

    AMQNET-622: Invoke IConnection event listeners on connection lost and on reconnect
---
 src/NMS.AMQP/NmsConnection.cs                      |  4 ++
 .../Integration/FailoverIntegrationTest.cs         | 53 ++++++++++++++++++++++
 2 files changed, 57 insertions(+)

diff --git a/src/NMS.AMQP/NmsConnection.cs b/src/NMS.AMQP/NmsConnection.cs
index 6ce0903..978c2f4 100644
--- a/src/NMS.AMQP/NmsConnection.cs
+++ b/src/NMS.AMQP/NmsConnection.cs
@@ -326,6 +326,8 @@ namespace Apache.NMS.AMQP
             {
                 listener.OnConnectionRestored(remoteUri);
             }
+            
+            ConnectionResumedListener?.Invoke();
         }
 
         public void OnResourceClosed(INmsResource resource, Exception error)
@@ -370,6 +372,8 @@ namespace Apache.NMS.AMQP
             
             foreach (INmsConnectionListener listener in connectionListeners)
                 listener.OnConnectionInterrupted(failedUri);
+            
+            ConnectionInterruptedListener?.Invoke();
         }
 
         private void CheckClosedOrFailed()
diff --git a/test/Apache-NMS-AMQP-Test/Integration/FailoverIntegrationTest.cs b/test/Apache-NMS-AMQP-Test/Integration/FailoverIntegrationTest.cs
index 2bd93ff..d853df0 100644
--- a/test/Apache-NMS-AMQP-Test/Integration/FailoverIntegrationTest.cs
+++ b/test/Apache-NMS-AMQP-Test/Integration/FailoverIntegrationTest.cs
@@ -1060,6 +1060,59 @@ namespace NMS.AMQP.Test.Integration
             }
         }
 
+        [Test, Timeout(20_000), Category("Windows")]
+        public void TestConnectionInterruptedInvokedWhenConnectionToBrokerLost()
+        {
+            using (TestAmqpPeer originalPeer = new TestAmqpPeer())
+            {
+                ManualResetEvent connectionInterruptedInvoked = new ManualResetEvent(false);
+
+                originalPeer.ExpectSaslAnonymous();
+                originalPeer.ExpectOpen();
+                originalPeer.ExpectBegin();
+                originalPeer.ExpectBegin();
+
+                NmsConnection connection = EstablishAnonymousConnection(originalPeer);
+
+                connection.ConnectionInterruptedListener += () => connectionInterruptedInvoked.Set();
+
+                connection.Start();
+                
+                originalPeer.Close();
+
+                Assert.IsTrue(connectionInterruptedInvoked.WaitOne(TimeSpan.FromSeconds(10)));
+            }
+        }
+        
+        [Test, Timeout(20_000), Category("Windows")]
+        public void TestConnectionResumedInvokedWhenConnectionToBrokerLost()
+        {
+            using (TestAmqpPeer originalPeer = new TestAmqpPeer())
+            using (TestAmqpPeer finalPeer = new TestAmqpPeer())
+            {
+                ManualResetEvent connectionResumedInvoked = new ManualResetEvent(false);
+
+                originalPeer.ExpectSaslAnonymous();
+                originalPeer.ExpectOpen();
+                originalPeer.ExpectBegin();
+                originalPeer.ExpectBegin();
+
+                finalPeer.ExpectSaslAnonymous();
+                finalPeer.ExpectOpen();
+                finalPeer.ExpectBegin();
+                finalPeer.ExpectBegin();
+
+                NmsConnection connection = EstablishAnonymousConnection(originalPeer, finalPeer);
+
+                connection.ConnectionResumedListener += () => connectionResumedInvoked.Set();
+
+                connection.Start();
+                
+                originalPeer.Close();
+                Assert.IsTrue(connectionResumedInvoked.WaitOne(TimeSpan.FromSeconds(10)));
+            }
+        }
+
         private NmsConnection EstablishAnonymousConnection(params TestAmqpPeer[] peers)
         {
             return EstablishAnonymousConnection(null, null, peers);


Mime
View raw message