summaryrefslogtreecommitdiff
path: root/qpid/cpp
diff options
context:
space:
mode:
authorCarl C. Trieloff <cctrieloff@apache.org>2007-08-17 14:51:24 +0000
committerCarl C. Trieloff <cctrieloff@apache.org>2007-08-17 14:51:24 +0000
commit20a9feffbda0d414726f426cc5c550eeb856928a (patch)
tree117c9d8a8730b29615146a13011a21e1113bb36f /qpid/cpp
parentd57c3f2e09e91a80aa709220d5fc2c4410539a48 (diff)
downloadqpid-python-20a9feffbda0d414726f426cc5c550eeb856928a.tar.gz
- corrected getMessageCount() for async messages
- added test for async message count. git-svn-id: https://svn.apache.org/repos/asf/incubator/qpid/trunk@567059 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'qpid/cpp')
-rw-r--r--qpid/cpp/src/qpid/broker/BrokerQueue.cpp9
-rw-r--r--qpid/cpp/src/tests/QueueTest.cpp16
2 files changed, 24 insertions, 1 deletions
diff --git a/qpid/cpp/src/qpid/broker/BrokerQueue.cpp b/qpid/cpp/src/qpid/broker/BrokerQueue.cpp
index 3ae2ce8de3..ea092bb33b 100644
--- a/qpid/cpp/src/qpid/broker/BrokerQueue.cpp
+++ b/qpid/cpp/src/qpid/broker/BrokerQueue.cpp
@@ -223,9 +223,16 @@ void Queue::push(Message::shared_ptr& msg){
}
}
+/** 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{
diff --git a/qpid/cpp/src/tests/QueueTest.cpp b/qpid/cpp/src/tests/QueueTest.cpp
index 6b30f9ff42..e7ca124631 100644
--- a/qpid/cpp/src/tests/QueueTest.cpp
+++ b/qpid/cpp/src/tests/QueueTest.cpp
@@ -64,6 +64,7 @@ class QueueTest : public CppUnit::TestCase
CPPUNIT_TEST(testDequeue);
CPPUNIT_TEST(testBound);
CPPUNIT_TEST(testAsyncMessage);
+ CPPUNIT_TEST(testAsyncMessageCount);
CPPUNIT_TEST_SUITE_END();
@@ -97,6 +98,21 @@ class QueueTest : public CppUnit::TestCase
}
+
+ 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(){
Queue::shared_ptr queue(new Queue("my_queue", true));