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 | de01db7334940006c4ff8909831a779449be2c30 (patch) | |
| tree | 7fbc067a76f413eed94f4c93753069b6cd691262 /java | |
| parent | 5a2f5a5d91d9d1bad78054291dbf5f610d77cfc5 (diff) | |
| download | qpid-python-de01db7334940006c4ff8909831a779449be2c30.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/qpid@1299395 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'java')
| -rw-r--r-- | java/systests/src/main/java/org/apache/qpid/test/unit/transacted/TransactionTimeoutTest.java | 66 |
1 files changed, 66 insertions, 0 deletions
diff --git a/java/systests/src/main/java/org/apache/qpid/test/unit/transacted/TransactionTimeoutTest.java b/java/systests/src/main/java/org/apache/qpid/test/unit/transacted/TransactionTimeoutTest.java index f554b0089e..9e11e940c0 100644 --- a/java/systests/src/main/java/org/apache/qpid/test/unit/transacted/TransactionTimeoutTest.java +++ b/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); + } } |
