Author: robbie
Date: Sun Mar 11 16:43:07 2012
New Revision: 1299395

URL: http://svn.apache.org/viewvc?rev=1299395&view=rev
Log:
QPID-3873: Add tests to verify that publishing of unroutable messages does not 
cause long running store transactions

Applied patch from Oleksandr Rudyy <[email protected]>

Modified:
    
qpid/trunk/qpid/java/systests/src/main/java/org/apache/qpid/test/unit/transacted/TransactionTimeoutTest.java

Modified: 
qpid/trunk/qpid/java/systests/src/main/java/org/apache/qpid/test/unit/transacted/TransactionTimeoutTest.java
URL: 
http://svn.apache.org/viewvc/qpid/trunk/qpid/java/systests/src/main/java/org/apache/qpid/test/unit/transacted/TransactionTimeoutTest.java?rev=1299395&r1=1299394&r2=1299395&view=diff
==============================================================================
--- 
qpid/trunk/qpid/java/systests/src/main/java/org/apache/qpid/test/unit/transacted/TransactionTimeoutTest.java
 (original)
+++ 
qpid/trunk/qpid/java/systests/src/main/java/org/apache/qpid/test/unit/transacted/TransactionTimeoutTest.java
 Sun Mar 11 16:43:07 2012
@@ -20,6 +20,16 @@
  */
 package org.apache.qpid.test.unit.transacted;
 
+import javax.jms.DeliveryMode;
+import javax.jms.JMSException;
+import javax.jms.Message;
+import javax.jms.MessageProducer;
+import javax.jms.Queue;
+import javax.jms.Session;
+import javax.jms.Topic;
+import javax.jms.TopicPublisher;
+import javax.jms.TopicSession;
+
 /**
  * This tests the behaviour of transactional sessions when the {@code 
transactionTimeout} configuration
  * is set for a virtual host.
@@ -305,4 +315,60 @@ public class TransactionTimeoutTest exte
 
         monitor(0, 0);
     }
+
+    public void testTransactionCommittedOnNonRoutableQueuePersistentMessage() 
throws Exception
+    {
+        
checkTransactionCommittedOnNonRoutableQueueMessage(DeliveryMode.PERSISTENT);
+    }
+
+    public void testTransactionCommittedOnNonRoutableQueueTransientMessage() 
throws Exception
+    {
+        
checkTransactionCommittedOnNonRoutableQueueMessage(DeliveryMode.PERSISTENT);
+    }
+
+    public void testTransactionCommittedOnNonRoutableTopicPersistentMessage() 
throws Exception
+    {
+        
checkTransactionCommittedOnNonRoutableTopicMessage(DeliveryMode.PERSISTENT);
+    }
+
+    public void testTransactionCommittedOnNonRoutableTopicTransientMessage() 
throws Exception
+    {
+        
checkTransactionCommittedOnNonRoutableTopicMessage(DeliveryMode.PERSISTENT);
+    }
+
+    protected void checkTransactionCommittedOnNonRoutableQueueMessage(int 
deliveryMode) throws JMSException, Exception
+    {
+        Queue nonExisting = _psession.createQueue("non-existent-queue-" + 
System.currentTimeMillis());
+        MessageProducer producer = _psession.createProducer(nonExisting);
+        Message message = _psession.createMessage();
+        message.setJMSDeliveryMode(deliveryMode);
+        for (int i=0;i<1000; i++)
+        {
+            producer.send(message);
+        }
+        _psession.commit();
+
+        // give time to house keeping thread to log messages
+        sleep(3f);
+        monitor(0, 0);
+    }
+
+    protected void checkTransactionCommittedOnNonRoutableTopicMessage(int 
deliveryMode) throws JMSException, Exception
+    {
+        final TopicSession session = _con.createTopicSession(true, 
Session.SESSION_TRANSACTED);
+        Topic nonExisting = session.createTopic("non-existent-topic-" + 
System.currentTimeMillis());
+
+        TopicPublisher topicPublisher = session.createPublisher(nonExisting);
+        Message message = session.createMessage();
+        message.setJMSDeliveryMode(deliveryMode);
+        for (int i=0;i<1000; i++)
+        {
+            topicPublisher.send(message);
+        }
+        session.commit();
+
+        // give time to house keeping thread to log messages
+        sleep(3f);
+        monitor(0, 0);
+    }
 }



---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to