You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@activemq.apache.org by gt...@apache.org on 2009/07/29 12:26:19 UTC

svn commit: r798842 - /activemq/trunk/activemq-core/src/test/java/org/apache/activemq/broker/BrokerTest.java

Author: gtully
Date: Wed Jul 29 10:26:19 2009
New Revision: 798842

URL: http://svn.apache.org/viewvc?rev=798842&view=rev
Log:
resolve https://issues.apache.org/activemq/browse/AMQ-2075 - async dispatch of brokerInfo could end up getting dispatched after messages

Modified:
    activemq/trunk/activemq-core/src/test/java/org/apache/activemq/broker/BrokerTest.java

Modified: activemq/trunk/activemq-core/src/test/java/org/apache/activemq/broker/BrokerTest.java
URL: http://svn.apache.org/viewvc/activemq/trunk/activemq-core/src/test/java/org/apache/activemq/broker/BrokerTest.java?rev=798842&r1=798841&r2=798842&view=diff
==============================================================================
--- activemq/trunk/activemq-core/src/test/java/org/apache/activemq/broker/BrokerTest.java (original)
+++ activemq/trunk/activemq-core/src/test/java/org/apache/activemq/broker/BrokerTest.java Wed Jul 29 10:26:19 2009
@@ -1127,15 +1127,16 @@
         }
 
         // give the async ack a chance to perculate and validate all are currently consumed
-        assertNull(connection1.getDispatchQueue().poll(MAX_NULL_WAIT, TimeUnit.MILLISECONDS));
-
+        Message msg = receiveMessage(connection1, MAX_NULL_WAIT);
+        assertNull("all messages were received " + msg, msg);
+        
         // Close the connection, this should in turn close the consumer.
         connection1.request(closeConnectionInfo(connectionInfo1));
 
         // Send another message, connection1 should not get the message.
         connection2.request(createMessage(producerInfo2, destination, deliveryMode));
 
-        assertNull(connection1.getDispatchQueue().poll(MAX_NULL_WAIT, TimeUnit.MILLISECONDS));
+        assertNull("no message received", receiveMessage(connection1, MAX_NULL_WAIT));
     }
 
     public void initCombosForTestSessionCloseCascades() {
@@ -1187,7 +1188,7 @@
         // Send another message, connection1 should not get the message.
         connection2.request(createMessage(producerInfo2, destination, deliveryMode));
 
-        Object msg = connection1.getDispatchQueue().poll(MAX_NULL_WAIT, TimeUnit.MILLISECONDS);
+        Message msg = receiveMessage(connection1,MAX_NULL_WAIT);
         assertNull("no message received from connection1 after session close", msg);
     }
 
@@ -1235,7 +1236,8 @@
         }
 
         // give the async ack a chance to perculate and validate all are currently consumed
-        Object result = connection1.getDispatchQueue().poll(MAX_NULL_WAIT, TimeUnit.MILLISECONDS);
+        // use receive rather than poll as broker info is sent async and may still need to be dequeued
+        Message result = receiveMessage(connection1, MAX_NULL_WAIT);
         assertNull("no more messages " + result, result);
  
         // Close the consumer.
@@ -1244,7 +1246,8 @@
         // Send another message, connection1 should not get the message.
         connection2.request(createMessage(producerInfo2, destination, deliveryMode));
 
-        assertNull(connection1.getDispatchQueue().poll(MAX_NULL_WAIT, TimeUnit.MILLISECONDS));
+        result = receiveMessage(connection1, MAX_NULL_WAIT);
+        assertNull("no message received after close " + result, result);
     }
 
     public void initCombosForTestTopicNoLocal() {