You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@activemq.apache.org by jg...@apache.org on 2009/05/28 21:51:12 UTC

svn commit: r779745 - in /activemq/activemq-dotnet: Apache.NMS.ActiveMQ/trunk/src/test/csharp/VirtualTopicTest.cs Apache.NMS/trunk/src/test/csharp/

Author: jgomes
Date: Thu May 28 19:51:12 2009
New Revision: 779745

URL: http://svn.apache.org/viewvc?rev=779745&view=rev
Log:
Refactored VirtualTopicTest to separate synchronous test from asynchronous test.  Added additional persistent vs. non-persistent test cases.

Modified:
    activemq/activemq-dotnet/Apache.NMS.ActiveMQ/trunk/src/test/csharp/VirtualTopicTest.cs
    activemq/activemq-dotnet/Apache.NMS/trunk/src/test/csharp/   (props changed)

Modified: activemq/activemq-dotnet/Apache.NMS.ActiveMQ/trunk/src/test/csharp/VirtualTopicTest.cs
URL: http://svn.apache.org/viewvc/activemq/activemq-dotnet/Apache.NMS.ActiveMQ/trunk/src/test/csharp/VirtualTopicTest.cs?rev=779745&r1=779744&r2=779745&view=diff
==============================================================================
--- activemq/activemq-dotnet/Apache.NMS.ActiveMQ/trunk/src/test/csharp/VirtualTopicTest.cs (original)
+++ activemq/activemq-dotnet/Apache.NMS.ActiveMQ/trunk/src/test/csharp/VirtualTopicTest.cs Thu May 28 19:51:12 2009
@@ -25,118 +25,151 @@
 	[TestFixture]
 	public class VirtualTopicTest : NMSTestSupport
 	{
-		protected static string PRODUCER_DESTINATION_NAME = "topic://VirtualTopic.TestDestination";
-		protected static string CONSUMER_A_DESTINATION_NAME = "queue://Consumer.A.VirtualTopic.TestDestination";
-		protected static string CONSUMER_B_DESTINATION_NAME = "queue://Consumer.B.VirtualTopic.TestDestination";
-		protected static string TEST_CLIENT_ID = "VirtualTopicClientId";
+		protected static string DESTINATION_NAME = "TestDestination";
+		protected static string PRODUCER_DESTINATION_NAME = "VirtualTopic." + DESTINATION_NAME;
+		protected static string CONSUMER_A_DESTINATION_NAME = "Consumer.A." + PRODUCER_DESTINATION_NAME;
+		protected static string CONSUMER_B_DESTINATION_NAME = "Consumer.B." + PRODUCER_DESTINATION_NAME;
+		protected static string TEST_CLIENT_ID = "VirtualTopicTestClientId";
 
 		protected const int totalMsgs = 5;
-		protected AcknowledgementMode currentAckMode;
+
+#if !NET_1_1
+		[RowTest]
+		[Row(AcknowledgementMode.AutoAcknowledge,   MsgDeliveryMode.NonPersistent)]
+		[Row(AcknowledgementMode.AutoAcknowledge,   MsgDeliveryMode.Persistent)]
+		[Row(AcknowledgementMode.ClientAcknowledge, MsgDeliveryMode.NonPersistent)]
+		[Row(AcknowledgementMode.ClientAcknowledge, MsgDeliveryMode.Persistent)]
+		[Row(AcknowledgementMode.DupsOkAcknowledge, MsgDeliveryMode.NonPersistent)]
+		[Row(AcknowledgementMode.DupsOkAcknowledge, MsgDeliveryMode.Persistent)]
+		[Row(AcknowledgementMode.Transactional,     MsgDeliveryMode.NonPersistent)]
+		[Row(AcknowledgementMode.Transactional,     MsgDeliveryMode.Persistent)]
+#endif
+		public void SendReceiveVirtualTopicMessage(AcknowledgementMode ackMode, MsgDeliveryMode deliveryMode)
+		{
+			using(IConnection connection = CreateConnection(TEST_CLIENT_ID))
+			{
+				connection.Start();
+				using(ISession session = connection.CreateSession(ackMode))
+				{
+					using(IMessageConsumer consumerA = session.CreateConsumer(session.GetQueue(CONSUMER_A_DESTINATION_NAME)))
+					using(IMessageConsumer consumerB = session.CreateConsumer(session.GetQueue(CONSUMER_B_DESTINATION_NAME)))
+					using(IMessageProducer producer = session.CreateProducer(session.GetTopic(PRODUCER_DESTINATION_NAME)))
+					{
+						producer.RequestTimeout = receiveTimeout;
+						producer.DeliveryMode = deliveryMode;
+
+						for(int index = 0; index < totalMsgs; index++)
+						{
+							string msgText = "Message #" + index;
+							Tracer.Info("Sending: " + msgText);
+							producer.Send(session.CreateTextMessage(msgText));
+						}
+
+						if(AcknowledgementMode.Transactional == ackMode)
+						{
+							session.Commit();
+						}
+
+						for(int index = 0; index < totalMsgs; index++)
+						{
+							string msgText = "Message #" + index;
+							ITextMessage messageA = consumerA.Receive(receiveTimeout) as ITextMessage;
+							Assert.IsNotNull(messageA, "Did not receive message for consumer A.");
+							messageA.Acknowledge();
+							Tracer.Info("Received A: " + msgText);
+
+							ITextMessage messageB = consumerB.Receive(receiveTimeout) as ITextMessage;
+							Assert.IsNotNull(messageB, "Did not receive message for consumer B.");
+							messageB.Acknowledge();
+							Tracer.Info("Received B: " + msgText);
+
+							Assert.AreEqual(msgText, messageA.Text, "Message text A does not match.");
+							Assert.AreEqual(msgText, messageB.Text, "Message text B does not match.");
+						}
+
+						if(AcknowledgementMode.Transactional == ackMode)
+						{
+							session.Commit();
+						}
+					}
+				}
+			}
+		}
+
 		protected int receivedA;
 		protected int receivedB;
 
 #if !NET_1_1
 		[RowTest]
-		[Row(AcknowledgementMode.AutoAcknowledge, false)]
-        [Row(AcknowledgementMode.ClientAcknowledge, false)]
-        [Row(AcknowledgementMode.Transactional, false)]
-
-        [Row(AcknowledgementMode.AutoAcknowledge, true)]
-        [Row(AcknowledgementMode.ClientAcknowledge, true)]
+		[Row(AcknowledgementMode.AutoAcknowledge,   MsgDeliveryMode.NonPersistent)]
+		[Row(AcknowledgementMode.AutoAcknowledge,   MsgDeliveryMode.Persistent)]
+		[Row(AcknowledgementMode.ClientAcknowledge, MsgDeliveryMode.NonPersistent)]
+		[Row(AcknowledgementMode.ClientAcknowledge, MsgDeliveryMode.Persistent)]
+		[Row(AcknowledgementMode.DupsOkAcknowledge, MsgDeliveryMode.NonPersistent)]
+		[Row(AcknowledgementMode.DupsOkAcknowledge, MsgDeliveryMode.Persistent)]
 		// Do not use listeners with transactional processing.
 #endif
-		public void SendReceiveVirtualTopicMessage(AcknowledgementMode ackMode, bool useListeners)
+		public void AsyncSendReceiveVirtualTopicMessage(AcknowledgementMode ackMode, MsgDeliveryMode deliveryMode)
 		{
-			currentAckMode = ackMode;
 			receivedA = 0;
 			receivedB = 0;
 
 			using(IConnection connection = CreateConnection(TEST_CLIENT_ID))
 			{
 				connection.Start();
-				using(ISession session = connection.CreateSession(currentAckMode))
+				using(ISession session = connection.CreateSession(ackMode))
 				{
-					using(IMessageConsumer consumerA = session.CreateConsumer(SessionUtil.GetDestination(session, CONSUMER_A_DESTINATION_NAME)))
-					using(IMessageConsumer consumerB = session.CreateConsumer(SessionUtil.GetDestination(session, CONSUMER_B_DESTINATION_NAME)))
-					using(IMessageProducer producer = session.CreateProducer(SessionUtil.GetDestination(session, PRODUCER_DESTINATION_NAME)))
+					using(IMessageConsumer consumerA = session.CreateConsumer(session.GetQueue(CONSUMER_A_DESTINATION_NAME)))
+					using(IMessageConsumer consumerB = session.CreateConsumer(session.GetQueue(CONSUMER_B_DESTINATION_NAME)))
+					using(IMessageProducer producer = session.CreateProducer(session.GetTopic(PRODUCER_DESTINATION_NAME)))
 					{
 						producer.RequestTimeout = receiveTimeout;
-						if(useListeners)
+						producer.DeliveryMode = deliveryMode;
+
+						consumerA.Listener += MessageListenerA;
+						consumerB.Listener += MessageListenerB;
+
+						for(int index = 0; index < totalMsgs; index++)
 						{
-							consumerA.Listener += MessageListenerA;
-							consumerB.Listener += MessageListenerB;
+							string msgText = "Message #" + index;
+							Tracer.Info("Sending: " + msgText);
+							producer.Send(session.CreateTextMessage(msgText));
 						}
 
-                        for (int index = 0; index < totalMsgs; index++)
-                        {
-                            producer.Send(session.CreateTextMessage("Message #" + index));
-                        }
-
-                        if (AcknowledgementMode.Transactional == currentAckMode)
-                        {
-                            session.Commit();
-                        }
-
-                        if (!useListeners)
-                        {
-                            for (int index = 0; index < totalMsgs; index++)
-                            {
-                                IMessage messageA = consumerA.Receive(receiveTimeout);
-                                IMessage messageB = consumerB.Receive(receiveTimeout);
-
-                                Assert.IsNotNull(messageA, "Did not receive message for consumer A.");
-                                Assert.IsNotNull(messageB, "Did not receive message for consumer B.");
-
-                                if (AcknowledgementMode.ClientAcknowledge == currentAckMode)
-                                {
-                                    messageA.Acknowledge();
-                                    messageB.Acknowledge();
-                                }
-                            }
-                        }
-                        else
-                        {
-                            int waitCount = 0;
-                            while (receivedA < totalMsgs && receivedB < totalMsgs)
-                            {
-                                if (waitCount++ > 50)
-                                {
-                                    Assert.Fail("Timed out waiting for message consumers.  A = " + receivedA + ", B = " + receivedB);
-                                }
-
-                                Thread.Sleep(250);
-                            }
-                        }
-					}
-
-                    if (AcknowledgementMode.Transactional == currentAckMode)
-                    {
-                        session.Commit();
-                    }
+						int waitCount = 0;
+						while(receivedA < totalMsgs && receivedB < totalMsgs)
+						{
+							if(waitCount++ > 50)
+							{
+								Assert.Fail("Timed out waiting for message consumers.  A = " + receivedA + ", B = " + receivedB);
+							}
 
-                    session.Close();
+							Tracer.Info("Waiting... Received A = " + receivedA + ", Received B = " + receivedB);
+							Thread.Sleep(250);
+						}
+					}
 				}
-
-                connection.Close();
 			}
 		}
 
 		private void MessageListenerA(IMessage message)
 		{
+			message.Acknowledge();
+			ITextMessage messageA = message as ITextMessage;
+			string msgText = "Message #" + receivedA;
+			Assert.AreEqual(msgText, messageA.Text, "Message text A does not match.");
+			Tracer.Info("Received Listener A: " + msgText);
 			receivedA++;
-			if(AcknowledgementMode.ClientAcknowledge == currentAckMode)
-			{
-				message.Acknowledge();
-			}
 		}
 
 		private void MessageListenerB(IMessage message)
 		{
+			message.Acknowledge();
+			ITextMessage messageB = message as ITextMessage;
+			string msgText = "Message #" + receivedB;
+			Assert.AreEqual(msgText, messageB.Text, "Message text B does not match.");
+			Tracer.Info("Received Listener B: " + msgText);
 			receivedB++;
-			if(AcknowledgementMode.ClientAcknowledge == currentAckMode)
-			{
-				message.Acknowledge();
-			}
 		}
 	}
 }

Propchange: activemq/activemq-dotnet/Apache.NMS/trunk/src/test/csharp/
------------------------------------------------------------------------------
--- svn:ignore (added)
+++ svn:ignore Thu May 28 19:51:12 2009
@@ -0,0 +1 @@
+CommonAssemblyInfo.cs