Author: cctrieloff
Date: Fri Aug 17 07:51:24 2007
New Revision: 567059

URL: http://svn.apache.org/viewvc?view=rev&rev=567059
Log:

- corrected getMessageCount() for async messages
- added test for async message count.


Modified:
    incubator/qpid/trunk/qpid/cpp/src/qpid/broker/BrokerQueue.cpp
    incubator/qpid/trunk/qpid/cpp/src/tests/QueueTest.cpp

Modified: incubator/qpid/trunk/qpid/cpp/src/qpid/broker/BrokerQueue.cpp
URL: 
http://svn.apache.org/viewvc/incubator/qpid/trunk/qpid/cpp/src/qpid/broker/BrokerQueue.cpp?view=diff&rev=567059&r1=567058&r2=567059
==============================================================================
--- incubator/qpid/trunk/qpid/cpp/src/qpid/broker/BrokerQueue.cpp (original)
+++ incubator/qpid/trunk/qpid/cpp/src/qpid/broker/BrokerQueue.cpp Fri Aug 17 
07:51:24 2007
@@ -223,9 +223,16 @@
     }
 }
 
+/** function only provided for unit tests, or code not in critical message 
path */
 uint32_t Queue::getMessageCount() const{
     Mutex::ScopedLock locker(messageLock);
-    return messages.size();
+  
+    uint32_t count =0;
+    for ( Messages::const_iterator i = messages.begin(); i != messages.end(); 
++i ) {
+        if ( (*i)->isEnqueueComplete() ) count ++;
+    }
+    
+    return count;
 }
 
 uint32_t Queue::getConsumerCount() const{

Modified: incubator/qpid/trunk/qpid/cpp/src/tests/QueueTest.cpp
URL: 
http://svn.apache.org/viewvc/incubator/qpid/trunk/qpid/cpp/src/tests/QueueTest.cpp?view=diff&rev=567059&r1=567058&r2=567059
==============================================================================
--- incubator/qpid/trunk/qpid/cpp/src/tests/QueueTest.cpp (original)
+++ incubator/qpid/trunk/qpid/cpp/src/tests/QueueTest.cpp Fri Aug 17 07:51:24 
2007
@@ -64,6 +64,7 @@
     CPPUNIT_TEST(testDequeue);
     CPPUNIT_TEST(testBound);
     CPPUNIT_TEST(testAsyncMessage);
+    CPPUNIT_TEST(testAsyncMessageCount);
     CPPUNIT_TEST_SUITE_END();
 
 
@@ -95,6 +96,21 @@
         CPPUNIT_ASSERT_EQUAL(msg1.get(), received.get());
        
    
+    }
+    
+    
+    void testAsyncMessageCount(){
+        Queue::shared_ptr queue(new Queue("my_test_queue", true));
+        Message::shared_ptr msg1 = message("e", "A");
+       
+        queue->process(msg1);
+       sleep(2);
+       uint32_t compval=0;
+        CPPUNIT_ASSERT_EQUAL(compval, queue->getMessageCount());
+       msg1->enqueueComplete();
+       compval=1;
+        CPPUNIT_ASSERT_EQUAL(compval, queue->getMessageCount());
+    
     }
     
     void testConsumers(){


Reply via email to