diff options
| author | Robert Gemmell <robbie@apache.org> | 2012-03-11 16:43:07 +0000 |
|---|---|---|
| committer | Robert Gemmell <robbie@apache.org> | 2012-03-11 16:43:07 +0000 |
| commit | 7f8b5ecd9a9d1c44503eb867cc8c9815b092bb7d (patch) | |
| tree | 72d4fa1cc272e3e66e5120587c61e72b3ed370fb /qpid/java | |
| parent | 35abed69dfd8972b15be07c3d8863cc0c7b0a1f6 (diff) | |
| download | qpid-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.java | 66 |
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); + } } |
