activemq-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From jgo...@apache.org
Subject svn commit: r683376 - in /activemq/activemq-dotnet/Apache.NMS/trunk: src/test/csharp/ConsumerTest.cs src/test/csharp/DurableTest.cs src/test/csharp/NMSTestSupport.cs vs2008-nms.csproj
Date Wed, 06 Aug 2008 19:05:08 GMT
Author: jgomes
Date: Wed Aug  6 12:05:08 2008
New Revision: 683376

URL: http://svn.apache.org/viewvc?rev=683376&view=rev
Log:
Refactored durable consumer tests.
Fixes [AMQNET-92]. (See https://issues.apache.org/activemq/browse/AMQNET-92)

Modified:
    activemq/activemq-dotnet/Apache.NMS/trunk/src/test/csharp/ConsumerTest.cs
    activemq/activemq-dotnet/Apache.NMS/trunk/src/test/csharp/DurableTest.cs
    activemq/activemq-dotnet/Apache.NMS/trunk/src/test/csharp/NMSTestSupport.cs
    activemq/activemq-dotnet/Apache.NMS/trunk/vs2008-nms.csproj

Modified: activemq/activemq-dotnet/Apache.NMS/trunk/src/test/csharp/ConsumerTest.cs
URL: http://svn.apache.org/viewvc/activemq/activemq-dotnet/Apache.NMS/trunk/src/test/csharp/ConsumerTest.cs?rev=683376&r1=683375&r2=683376&view=diff
==============================================================================
--- activemq/activemq-dotnet/Apache.NMS/trunk/src/test/csharp/ConsumerTest.cs (original)
+++ activemq/activemq-dotnet/Apache.NMS/trunk/src/test/csharp/ConsumerTest.cs Wed Aug  6 12:05:08
2008
@@ -17,78 +17,80 @@
 using System;
 using System.Threading;
 using NUnit.Framework;
+using Apache.NMS.Util;
 
 namespace Apache.NMS.Test
 {
     [TestFixture]
     public abstract class ConsumerTest : NMSTestSupport
     {
-        public int prefetch;
-        public bool durableConsumer;
-
-        [SetUp]
-        public override void SetUp()
-        {
-            clientId = "Apache.NMS.Test.ConsumerTest";
-            base.SetUp();
-        }
-
-        [TearDown]
-        public override void TearDown()
-        {
-            base.TearDown();
-        }
-
+		private static string TEST_CLIENT_ID = "ConsumerTestClientId";
+		private static string TOPIC = "TestTopicConsumerTest";
+		private static string CONSUMER_ID = "ConsumerTestConsumerId";
 
         [Test]
         public void TestDurableConsumerSelectorChangePersistent()
         {
-            destinationType = DestinationType.Topic;
-            persistent = true;
-            doTestDurableConsumerSelectorChange();
+            doTestDurableConsumerSelectorChange(true);
         }
 
         [Test]
         public void TestDurableConsumerSelectorChangeNonPersistent()
         {
-            destinationType = DestinationType.Topic;
-            persistent = false;
-            doTestDurableConsumerSelectorChange();
+            doTestDurableConsumerSelectorChange(false);
         }
 
-        public void doTestDurableConsumerSelectorChange()
+        public void doTestDurableConsumerSelectorChange(bool persistent)
         {
-            IMessageProducer producer = Session.CreateProducer(Destination);
-            producer.Persistent = persistent;
-            IMessageConsumer consumer =
-                Session.CreateDurableConsumer((ITopic) Destination, "test", "color='red'",
false);
-
-            // Send the messages
-            ITextMessage message = Session.CreateTextMessage("1st");
-            message.Properties["color"] = "red";
-            producer.Send(message);
-
-            IMessage m = consumer.Receive(receiveTimeout);
-            Assert.IsNotNull(m);
-            Assert.AreEqual("1st", ((ITextMessage) m).Text);
-
-            // Change the subscription.
-            consumer.Dispose();
-            consumer = Session.CreateDurableConsumer((ITopic) Destination, "test", "color='blue'",
false);
-
-            message = Session.CreateTextMessage("2nd");
-            message.Properties["color"] = "red";
-            producer.Send(message);
-            message = Session.CreateTextMessage("3rd");
-            message.Properties["color"] = "blue";
-            producer.Send(message);
-
-            // Selector should skip the 2nd message.
-            m = consumer.Receive(TimeSpan.FromMilliseconds(1000));
-            Assert.IsNotNull(m);
-            Assert.AreEqual("3rd", ((ITextMessage) m).Text);
-
-            Assert.IsNull(consumer.ReceiveNoWait());
+			try
+			{
+				using(IConnection connection = CreateConnection(TEST_CLIENT_ID))
+				{
+					connection.Start();
+					using(ISession session = connection.CreateSession(AcknowledgementMode.AutoAcknowledge))
+					{
+						ITopic topic = SessionUtil.GetTopic(session, TOPIC);
+						IMessageProducer producer = session.CreateProducer(topic);
+						IMessageConsumer consumer = session.CreateDurableConsumer(topic, CONSUMER_ID, "color='red'",
false);
+
+						producer.Persistent = persistent;
+
+						// Send the messages
+						ITextMessage sendMessage = session.CreateTextMessage("1st");
+						sendMessage.Properties["color"] = "red";
+						producer.Send(sendMessage);
+
+						ITextMessage receiveMsg = consumer.Receive(receiveTimeout) as ITextMessage;
+						Assert.IsNotNull(receiveMsg, "Failed to retrieve 1st durable message.");
+						Assert.AreEqual("1st", receiveMsg.Text);
+						Assert.IsTrue(receiveMsg.NMSPersistent == persistent, "message does not match persistent
setting.");
+
+						// Change the subscription.
+						consumer.Dispose();
+						consumer = session.CreateDurableConsumer(topic, CONSUMER_ID, "color='blue'", false);
+
+						sendMessage = session.CreateTextMessage("2nd");
+						sendMessage.Properties["color"] = "red";
+						producer.Send(sendMessage);
+						sendMessage = session.CreateTextMessage("3rd");
+						sendMessage.Properties["color"] = "blue";
+						producer.Send(sendMessage);
+
+						// Selector should skip the 2nd message.
+						receiveMsg = consumer.Receive(receiveTimeout) as ITextMessage;
+						Assert.IsNotNull(receiveMsg, "Failed to retrieve durable message.");
+						Assert.AreEqual("3rd", receiveMsg.Text, "Retrieved the wrong durable message.");
+						Assert.IsTrue(receiveMsg.NMSPersistent == persistent, "message does not match persistent
setting.");
+
+						// Make sure there are no pending messages.
+						Assert.IsNull(consumer.ReceiveNoWait(), "Wrong number of messages in durable subscription.");
+					}
+				}
+			}
+			finally
+			{
+				UnregisterDurableConsumer(TEST_CLIENT_ID, CONSUMER_ID);
+			}
         }
 
 		[Test]
@@ -97,26 +99,33 @@
 			destinationType = DestinationType.Queue;
 			// Launch a thread to perform IMessageConsumer.Receive().
 			// If it doesn't fail in less than three seconds, no exception was thrown.
-			Thread receiveThread = new Thread(new ThreadStart(doTestNoTimeoutConsumer));
-
-			using(timeoutConsumer = Session.CreateConsumer(Destination))
+			Thread receiveThread = new Thread(new ThreadStart(TimeoutConsumerThreadProc));
+			using(IConnection connection = CreateConnection(TEST_CLIENT_ID))
 			{
-				receiveThread.Start();
-				if(receiveThread.Join(3000))
-				{
-					Assert.Fail("IMessageConsumer.Receive() returned without blocking.  Test failed.");
-				}
-				else
+				connection.Start();
+				using(ISession session = connection.CreateSession(AcknowledgementMode.AutoAcknowledge))
 				{
-					// Kill the thread - otherwise it'll sit in Receive() until a message arrives.
-					receiveThread.Interrupt();
+					ITemporaryQueue queue = session.CreateTemporaryQueue();
+					using(this.timeoutConsumer = session.CreateConsumer(queue))
+					{
+						receiveThread.Start();
+						if(receiveThread.Join(3000))
+						{
+							Assert.Fail("IMessageConsumer.Receive() returned without blocking.  Test failed.");
+						}
+						else
+						{
+							// Kill the thread - otherwise it'll sit in Receive() until a message arrives.
+							receiveThread.Interrupt();
+						}
+					}
 				}
 			}
 		}
 
 		protected IMessageConsumer timeoutConsumer;
 		
-		public void doTestNoTimeoutConsumer()
+		protected void TimeoutConsumerThreadProc()
 		{
 			try
 			{
@@ -125,7 +134,7 @@
 			catch(ArgumentOutOfRangeException e)
 			{
 				// The test failed.  We will know because the timeout will expire inside TestNoTimeoutConsumer().
-				Console.WriteLine("Test failed with exception: " + e.Message);
+				Assert.Fail("Test failed with exception: " + e.Message);
 			}
 			catch(ThreadInterruptedException)
 			{
@@ -134,7 +143,7 @@
 			catch(Exception e)
 			{
 				// Some other exception occurred.
-				Console.WriteLine("Test failed with exception: " + e.Message);
+				Assert.Fail("Test failed with exception: " + e.Message);
 			}
 		}
     }

Modified: activemq/activemq-dotnet/Apache.NMS/trunk/src/test/csharp/DurableTest.cs
URL: http://svn.apache.org/viewvc/activemq/activemq-dotnet/Apache.NMS/trunk/src/test/csharp/DurableTest.cs?rev=683376&r1=683375&r2=683376&view=diff
==============================================================================
--- activemq/activemq-dotnet/Apache.NMS/trunk/src/test/csharp/DurableTest.cs (original)
+++ activemq/activemq-dotnet/Apache.NMS/trunk/src/test/csharp/DurableTest.cs Wed Aug  6 12:05:08
2008
@@ -16,6 +16,7 @@
  */
 using System;
 using NUnit.Framework;
+using Apache.NMS.Util;
 
 namespace Apache.NMS.Test
 {
@@ -28,33 +29,6 @@
 		private static string CONSUMER_ID = "DurableTestConsumerId";
 		private static string DURABLE_SELECTOR = "2 > 1";
 
-		protected void RegisterDurableConsumer()
-		{
-			using(IConnection connection = CreateConnection(TEST_CLIENT_ID))
-			{
-				connection.Start();
-				using(ISession session = connection.CreateSession(AcknowledgementMode.DupsOkAcknowledge))
-				{
-					ITopic topic = session.GetTopic(TOPIC);
-					using(IMessageConsumer consumer = session.CreateDurableConsumer(topic, CONSUMER_ID,
DURABLE_SELECTOR, false))
-					{
-					}
-				}
-			}
-		}
-
-		protected void UnregisterDurableConsumer()
-		{
-			using(IConnection connection = CreateConnection(TEST_CLIENT_ID))
-			{
-				connection.Start();
-				using(ISession session = connection.CreateSession(AcknowledgementMode.DupsOkAcknowledge))
-				{
-					session.DeleteDurableConsumer(CONSUMER_ID);
-				}
-			}
-		}
-
 		protected void SendPersistentMessage()
 		{
 			using(IConnection connection = CreateConnection(SEND_CLIENT_ID))
@@ -62,11 +36,13 @@
 				connection.Start();
 				using(ISession session = connection.CreateSession(AcknowledgementMode.DupsOkAcknowledge))
 				{
-					ITopic topic = session.GetTopic(TOPIC);
+					ITopic topic = SessionUtil.GetTopic(session, TOPIC);
 					ITextMessage message = session.CreateTextMessage("Persistent Hello");
-					using(IMessageProducer producer = session.CreateProducer())
+					using(IMessageProducer producer = session.CreateProducer(topic))
 					{
-						producer.Send(topic, message, true, message.NMSPriority, receiveTimeout);
+						producer.Persistent = true;
+						producer.RequestTimeout = TimeSpan.FromSeconds(5);
+						producer.Send(message);
 					}
 				}
 			}
@@ -75,17 +51,17 @@
 		[Test]
 		public void TestDurableConsumer()
 		{
-			RegisterDurableConsumer();
-			SendPersistentMessage();
-
 			try
 			{
+				RegisterDurableConsumer(TEST_CLIENT_ID, TOPIC, CONSUMER_ID, DURABLE_SELECTOR, false);
+				SendPersistentMessage();
+
 				using(IConnection connection = CreateConnection(TEST_CLIENT_ID))
 				{
 					connection.Start();
 					using(ISession session = connection.CreateSession(AcknowledgementMode.DupsOkAcknowledge))
 					{
-						ITopic topic = session.GetTopic(TOPIC);
+						ITopic topic = SessionUtil.GetTopic(session, TOPIC);
 						using(IMessageConsumer consumer = session.CreateDurableConsumer(topic, CONSUMER_ID,
DURABLE_SELECTOR, false))
 						{
 							IMessage msg = consumer.Receive(receiveTimeout);
@@ -100,22 +76,22 @@
 			}
 			finally
 			{
-				UnregisterDurableConsumer();
+				UnregisterDurableConsumer(TEST_CLIENT_ID, CONSUMER_ID);
 			}
 		}
 
 		[Test]
 		public void TestDurableConsumerTransactional()
 		{
-			RegisterDurableConsumer();
 			try
 			{
+				RegisterDurableConsumer(TEST_CLIENT_ID, TOPIC, CONSUMER_ID, DURABLE_SELECTOR, false);
 				RunTestDurableConsumerTransactional();
 				RunTestDurableConsumerTransactional();
 			}
 			finally
 			{
-				UnregisterDurableConsumer();
+				UnregisterDurableConsumer(TEST_CLIENT_ID, CONSUMER_ID);
 			}
 		}
 
@@ -128,7 +104,7 @@
 				connection.Start();
 				using(ISession session = connection.CreateSession(AcknowledgementMode.Transactional))
 				{
-					ITopic topic = session.GetTopic(TOPIC);
+					ITopic topic = SessionUtil.GetTopic(session, TOPIC);
 					using(IMessageConsumer consumer = session.CreateDurableConsumer(topic, CONSUMER_ID,
DURABLE_SELECTOR, false))
 					{
 						IMessage msg = consumer.Receive(receiveTimeout);

Modified: activemq/activemq-dotnet/Apache.NMS/trunk/src/test/csharp/NMSTestSupport.cs
URL: http://svn.apache.org/viewvc/activemq/activemq-dotnet/Apache.NMS/trunk/src/test/csharp/NMSTestSupport.cs?rev=683376&r1=683375&r2=683376&view=diff
==============================================================================
--- activemq/activemq-dotnet/Apache.NMS/trunk/src/test/csharp/NMSTestSupport.cs (original)
+++ activemq/activemq-dotnet/Apache.NMS/trunk/src/test/csharp/NMSTestSupport.cs Wed Aug  6
12:05:08 2008
@@ -15,6 +15,7 @@
  * limitations under the License.
  */
 using Apache.NMS;
+using Apache.NMS.Util;
 using NUnit.Framework;
 using System;
 using System.IO;
@@ -48,6 +49,11 @@
 		protected DestinationType destinationType = DestinationType.Queue;
 		protected AcknowledgementMode acknowledgementMode = AcknowledgementMode.ClientAcknowledge;
 
+		public NMSTestSupport()
+		{
+			clientId = "NMSUnitTests";
+		}
+
 		[SetUp]
 		public virtual void SetUp()
 		{
@@ -296,6 +302,41 @@
 			return newConnection;
 		}
 
+		/// <summary>
+		/// Register a durable consumer
+		/// </summary>
+		/// <param name="destination">Destination name to register.  Supports embedded prefix
names.</param>
+		/// <param name="consumerID">Name of the durable consumer.</param>
+		/// <param name="selector">Selector parameters for consumer.</param>
+		/// <param name="noLocal"></param>
+		protected void RegisterDurableConsumer(string connectionID, string destination, string
consumerID, string selector, bool noLocal)
+		{
+			using(IConnection connection = CreateConnection(connectionID))
+			{
+				connection.Start();
+				using(ISession session = connection.CreateSession(AcknowledgementMode.DupsOkAcknowledge))
+				{
+					ITopic destinationTopic = SessionUtil.GetTopic(session, destination);
+					Assert.IsNotNull(destinationTopic, "Could not get destination topic.");
+					using(IMessageConsumer consumer = session.CreateDurableConsumer(destinationTopic, consumerID,
selector, noLocal, receiveTimeout))
+					{
+					}
+				}
+			}
+		}
+
+		protected void UnregisterDurableConsumer(string connectionID, string consumerID)
+		{
+			using(IConnection connection = CreateConnection(connectionID))
+			{
+				connection.Start();
+				using(ISession session = connection.CreateSession(AcknowledgementMode.DupsOkAcknowledge))
+				{
+					session.DeleteDurableConsumer(consumerID, receiveTimeout);
+				}
+			}
+		}
+
 		protected virtual IMessageProducer CreateProducer()
 		{
 			return Session.CreateProducer(Destination);

Modified: activemq/activemq-dotnet/Apache.NMS/trunk/vs2008-nms.csproj
URL: http://svn.apache.org/viewvc/activemq/activemq-dotnet/Apache.NMS/trunk/vs2008-nms.csproj?rev=683376&r1=683375&r2=683376&view=diff
==============================================================================
--- activemq/activemq-dotnet/Apache.NMS/trunk/vs2008-nms.csproj (original)
+++ activemq/activemq-dotnet/Apache.NMS/trunk/vs2008-nms.csproj Wed Aug  6 12:05:08 2008
@@ -72,7 +72,10 @@
     <Compile Include="src\main\csharp\Util\Convert.cs" />
     <Compile Include="src\main\csharp\Util\CountDownLatch.cs" />
     <Compile Include="src\main\csharp\Util\DateUtils.cs" />
-    <Compile Include="src\main\csharp\Util\URISupport.cs" />
+    <Compile Include="src\main\csharp\Util\SessionUtils.cs" />
+    <Compile Include="src\main\csharp\Util\URISupport.cs">
+      <SubType>Code</SubType>
+    </Compile>
   </ItemGroup>
   <ItemGroup>
     <None Include="activemq-dotnet.snk" />



Mime
View raw message