summaryrefslogtreecommitdiff
path: root/qpid/java
diff options
context:
space:
mode:
authorRobert Gemmell <robbie@apache.org>2012-03-11 16:43:07 +0000
committerRobert Gemmell <robbie@apache.org>2012-03-11 16:43:07 +0000
commit7f8b5ecd9a9d1c44503eb867cc8c9815b092bb7d (patch)
tree72d4fa1cc272e3e66e5120587c61e72b3ed370fb /qpid/java
parent35abed69dfd8972b15be07c3d8863cc0c7b0a1f6 (diff)
downloadqpid-python-7f8b5ecd9a9d1c44503eb867cc8c9815b092bb7d.tar.gz
QPID-3873: Add tests to verify that publishing of unroutable messages does not cause long running store transactions
Applied patch from Oleksandr Rudyy <orudyy@gmail.com> git-svn-id: https://svn.apache.org/repos/asf/qpid/trunk@1299395 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'qpid/java')
-rw-r--r--qpid/java/systests/src/main/java/org/apache/qpid/test/unit/transacted/TransactionTimeoutTest.java66
1 files changed, 66 insertions, 0 deletions
diff --git a/qpid/java/systests/src/main/java/org/apache/qpid/test/unit/transacted/TransactionTimeoutTest.java b/qpid/java/systests/src/main/java/org/apache/qpid/test/unit/transacted/TransactionTimeoutTest.java
index f554b0089e..9e11e940c0 100644
--- a/qpid/java/systests/src/main/java/org/apache/qpid/test/unit/transacted/TransactionTimeoutTest.java
+++ b/qpid/java/systests/src/main/java/org/apache/qpid/test/unit/transacted/TransactionTimeoutTest.java
@@ -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 extends TransactionTimeoutTestCase
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);
+ }
}