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(){