Author: chirino
Date: Wed Aug  2 08:22:30 2006
New Revision: 428022

URL: http://svn.apache.org/viewvc?rev=428022&view=rev
Log:
Added test case to verify that the prefetch buffer works as expected for 
prefetch==1

http://www.nabble.com/Trouble-with-prefetch-buffer.-tf2029800.html#a5599978

Modified:
    
incubator/activemq/trunk/activemq-core/src/test/java/org/apache/activemq/JMSConsumerTest.java

Modified: 
incubator/activemq/trunk/activemq-core/src/test/java/org/apache/activemq/JMSConsumerTest.java
URL: 
http://svn.apache.org/viewvc/incubator/activemq/trunk/activemq-core/src/test/java/org/apache/activemq/JMSConsumerTest.java?rev=428022&r1=428021&r2=428022&view=diff
==============================================================================
--- 
incubator/activemq/trunk/activemq-core/src/test/java/org/apache/activemq/JMSConsumerTest.java
 (original)
+++ 
incubator/activemq/trunk/activemq-core/src/test/java/org/apache/activemq/JMSConsumerTest.java
 Wed Aug  2 08:22:30 2006
@@ -32,6 +32,7 @@
 import org.apache.activemq.ActiveMQConnection;
 import org.apache.activemq.ActiveMQMessageConsumer;
 import org.apache.activemq.command.ActiveMQDestination;
+import org.apache.activemq.command.ActiveMQQueue;
 
 import edu.emory.mathcs.backport.java.util.concurrent.CountDownLatch;
 import edu.emory.mathcs.backport.java.util.concurrent.TimeUnit;
@@ -486,7 +487,48 @@
         assertNull(consumer.receiveNoWait());
 
     }
+    public void initCombosForTestPrefetch1MessageNotDispatched() {
+        addCombinationValues("deliveryMode", new Object[] { new 
Integer(DeliveryMode.NON_PERSISTENT),
+                new Integer(DeliveryMode.PERSISTENT) });
+    }
+    
+    public void testPrefetch1MessageNotDispatched() throws Exception {
+
+        // Set prefetch to 1
+        connection.getPrefetchPolicy().setAll(1);
+        connection.start();
 
+        Session session = connection.createSession(true, 0);
+        destination = new ActiveMQQueue("TEST");
+        MessageConsumer consumer = session.createConsumer(destination);
+
+        // Send 2 messages to the destination.
+        sendMessages(session, destination, 2);
+        session.commit();
+
+        // Only pick up the first message.
+        Message message1 = message1 = consumer.receive(1000);
+        assertNotNull(message1);        
+        
+        // Don't acknowledge yet.  This should keep our prefetch full.        
+        // Since prefetch is still full, the 2nd message should get dispatched 
to 
+        // another consumer..  lets create the 2nd consumer test that it does 
make sure it does.        
+        ActiveMQConnection connection2 = (ActiveMQConnection) 
factory.createConnection();
+        connections.add(connection2);
+        Session session2 = connection2.createSession(true, 0);
+        MessageConsumer consumer2 = session2.createConsumer(destination);
+        
+        // Only pick up the 2nd messages.
+        Message message2 = consumer.receive(1000);
+        assertNotNull(message2);
+        
+        session.commit();
+        session2.commit();
+
+        assertNull(consumer.receiveNoWait());
+
+    }
+    
     public void initCombosForTestDontStart() {
         addCombinationValues("deliveryMode", new Object[] { new 
Integer(DeliveryMode.NON_PERSISTENT), });
         addCombinationValues("destinationType", new Object[] { new 
Byte(ActiveMQDestination.QUEUE_TYPE),


Reply via email to