summaryrefslogtreecommitdiff
path: root/java
diff options
context:
space:
mode:
authorAidan Skinner <aidan@apache.org>2008-02-21 15:28:43 +0000
committerAidan Skinner <aidan@apache.org>2008-02-21 15:28:43 +0000
commita7901852d59190651225843843d013ac34e77b52 (patch)
tree4e2a372d6a86fa90f6a1135cbd482d6ec674bf11 /java
parent3047c0ec2d581f4b51c77fec84fbf0bec8599573 (diff)
downloadqpid-python-a7901852d59190651225843843d013ac34e77b52.tar.gz
QPID-785: Make sure queue browser consumers are auto-close, add test for browsing an empty queue. Refactor QueueBrowserTest a little to split up responsibilities a bit.
We should move the sendMessage stuff to a super class, there are at least 4 implementations of that kicking about. git-svn-id: https://svn.apache.org/repos/asf/incubator/qpid/branches/M2.1@629824 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'java')
-rw-r--r--java/client/src/main/java/org/apache/qpid/client/AMQQueueBrowser.java1
-rw-r--r--java/systests/src/main/java/org/apache/qpid/test/client/QueueBrowserTest.java88
2 files changed, 54 insertions, 35 deletions
diff --git a/java/client/src/main/java/org/apache/qpid/client/AMQQueueBrowser.java b/java/client/src/main/java/org/apache/qpid/client/AMQQueueBrowser.java
index 28e5992b26..4171e9bf9b 100644
--- a/java/client/src/main/java/org/apache/qpid/client/AMQQueueBrowser.java
+++ b/java/client/src/main/java/org/apache/qpid/client/AMQQueueBrowser.java
@@ -88,6 +88,7 @@ public class AMQQueueBrowser implements QueueBrowser
checkState();
final BasicMessageConsumer consumer =
(BasicMessageConsumer) _session.createBrowserConsumer(_queue, _messageSelector, false);
+ consumer.closeWhenNoMessages(true);
_consumers.add(consumer);
return new Enumeration()
diff --git a/java/systests/src/main/java/org/apache/qpid/test/client/QueueBrowserTest.java b/java/systests/src/main/java/org/apache/qpid/test/client/QueueBrowserTest.java
index ec9df8f1b3..06f05462ba 100644
--- a/java/systests/src/main/java/org/apache/qpid/test/client/QueueBrowserTest.java
+++ b/java/systests/src/main/java/org/apache/qpid/test/client/QueueBrowserTest.java
@@ -34,6 +34,8 @@ import javax.jms.TextMessage;
import javax.jms.JMSException;
import javax.jms.QueueReceiver;
import javax.jms.Message;
+import javax.naming.NamingException;
+
import java.util.Enumeration;
import junit.framework.TestCase;
@@ -42,8 +44,6 @@ public class QueueBrowserTest extends VMTestCase
{
private static final Logger _logger = Logger.getLogger(QueueBrowserTest.class);
- private static final int MSG_COUNT = 10;
-
private Connection _clientConnection;
private Session _clientSession;
private Queue _queue;
@@ -64,6 +64,10 @@ public class QueueBrowserTest extends VMTestCase
//Ensure _queue is created
_clientSession.createConsumer(_queue).close();
+ }
+
+ private void sendMessages(int num) throws JMSException, NamingException
+ {
//Create Producer put some messages on the queue
Connection producerConnection = ((ConnectionFactory) _context.lookup("connection")).createConnection();
@@ -74,23 +78,17 @@ public class QueueBrowserTest extends VMTestCase
MessageProducer producer = producerSession.createProducer(_queue);
- for (int msg = 0; msg < MSG_COUNT; msg++)
+ for (int msg = 0; msg < num; msg++)
{
producer.send(producerSession.createTextMessage("Message " + msg));
}
producerConnection.close();
-
}
- /*
- * Test Messages Remain on Queue
- * Create a queu and send messages to it. Browse them and then receive them all to verify they were still there
- *
- */
-
- public void testQueueBrowserMsgsRemainOnQueue() throws JMSException
+ private void checkQueueDepth(int depth) throws JMSException, NamingException
{
+ sendMessages(depth);
// create QueueBrowser
_logger.info("Creating Queue Browser");
@@ -100,7 +98,7 @@ public class QueueBrowserTest extends VMTestCase
// check for messages
if (_logger.isDebugEnabled())
{
- _logger.debug("Checking for " + MSG_COUNT + " messages with QueueBrowser");
+ _logger.debug("Checking for " + depth + " messages with QueueBrowser");
}
int msgCount = 0;
@@ -119,34 +117,54 @@ public class QueueBrowserTest extends VMTestCase
// check to see if all messages found
// assertEquals("browser did not find all messages", MSG_COUNT, msgCount);
- if (msgCount != MSG_COUNT)
+ if (msgCount != depth)
{
- _logger.warn(msgCount + "/" + MSG_COUNT + " messages received.");
+ _logger.warn(msgCount + " off" + depth + " messages received.");
}
//Close browser
queueBrowser.close();
-
- // VERIFY
-
- // continue and try to receive all messages
- MessageConsumer consumer = _clientSession.createConsumer(_queue);
-
- _logger.info("Verify messages are still on the queue");
-
- Message tempMsg;
-
- for (msgCount = 0; msgCount < MSG_COUNT; msgCount++)
- {
- tempMsg = (TextMessage) consumer.receive(RECEIVE_TIMEOUT);
- if (tempMsg == null)
- {
- fail("Message " + msgCount + " not retrieved from queue");
- }
- }
-
- _logger.info("All messages recevied from queue");
}
-
+ /*
+ * Test Messages Remain on Queue
+ * Create a queu and send messages to it. Browse them and then receive them all to verify they were still there
+ *
+ */
+
+ public void testQueueBrowserMsgsRemainOnQueue() throws Exception
+ {
+ int messages = 10;
+
+ checkQueueDepth(messages);
+
+ // VERIFY
+
+ // continue and try to receive all messages
+ MessageConsumer consumer = _clientSession.createConsumer(_queue);
+
+ _logger.info("Verify messages are still on the queue");
+
+ Message tempMsg;
+
+ for (int msgCount = 0; msgCount < messages; msgCount++)
+ {
+ tempMsg = (TextMessage) consumer.receive(RECEIVE_TIMEOUT);
+ if (tempMsg == null)
+ {
+ fail("Message " + msgCount + " not retrieved from queue");
+ }
+ }
+
+ _logger.info("All messages recevied from queue");
+ }
+
+ /**
+ * This tests you can browse an empty queue, see QPID-785
+ * @throws Exception
+ */
+ public void testBrowsingEmptyQueue() throws Exception
+ {
+ checkQueueDepth(0);
+ }
}