You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@qpid.apache.org by gs...@apache.org on 2011/05/26 15:30:41 UTC

svn commit: r1127901 - in /qpid/trunk/qpid/cpp/src: qpid/broker/Queue.cpp tests/ClientSessionTest.cpp

Author: gsim
Date: Thu May 26 13:30:41 2011
New Revision: 1127901

URL: http://svn.apache.org/viewvc?rev=1127901&view=rev
Log:
QPID-3278: pass container for expired messages by reference

Modified:
    qpid/trunk/qpid/cpp/src/qpid/broker/Queue.cpp
    qpid/trunk/qpid/cpp/src/tests/ClientSessionTest.cpp

Modified: qpid/trunk/qpid/cpp/src/qpid/broker/Queue.cpp
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/cpp/src/qpid/broker/Queue.cpp?rev=1127901&r1=1127900&r2=1127901&view=diff
==============================================================================
--- qpid/trunk/qpid/cpp/src/qpid/broker/Queue.cpp (original)
+++ qpid/trunk/qpid/cpp/src/qpid/broker/Queue.cpp Thu May 26 13:30:41 2011
@@ -436,7 +436,7 @@ void Queue::purgeExpired()
         std::deque<QueuedMessage> expired;
         {
             Mutex::ScopedLock locker(messageLock);
-            messages->removeIf(boost::bind(&collect_if_expired, expired, _1));
+            messages->removeIf(boost::bind(&collect_if_expired, boost::ref(expired), _1));
         }
         for_each(expired.begin(), expired.end(), boost::bind(&Queue::dequeue, this, (TransactionContext*) 0, _1));
     }

Modified: qpid/trunk/qpid/cpp/src/tests/ClientSessionTest.cpp
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/cpp/src/tests/ClientSessionTest.cpp?rev=1127901&r1=1127900&r2=1127901&view=diff
==============================================================================
--- qpid/trunk/qpid/cpp/src/tests/ClientSessionTest.cpp (original)
+++ qpid/trunk/qpid/cpp/src/tests/ClientSessionTest.cpp Thu May 26 13:30:41 2011
@@ -271,8 +271,12 @@ QPID_AUTO_TEST_CASE(testOpenFailure) {
 QPID_AUTO_TEST_CASE(testPeriodicExpiration) {
     Broker::Options opts;
     opts.queueCleanInterval = 1;
+    opts.queueFlowStopRatio = 0;
+    opts.queueFlowResumeRatio = 0;
     ClientSessionFixture fix(opts);
-    fix.session.queueDeclare(arg::queue="my-queue", arg::exclusive=true, arg::autoDelete=true);
+    FieldTable args;
+    args.setInt("qpid.max_count",10);
+    fix.session.queueDeclare(arg::queue="my-queue", arg::exclusive=true, arg::autoDelete=true, arg::arguments=args);
 
     for (uint i = 0; i < 10; i++) {
         Message m((boost::format("Message_%1%") % (i+1)).str(), "my-queue");
@@ -283,6 +287,7 @@ QPID_AUTO_TEST_CASE(testPeriodicExpirati
     BOOST_CHECK_EQUAL(fix.session.queueQuery(string("my-queue")).getMessageCount(), 10u);
     qpid::sys::sleep(2);
     BOOST_CHECK_EQUAL(fix.session.queueQuery(string("my-queue")).getMessageCount(), 5u);
+    fix.session.messageTransfer(arg::content=Message("Message_11", "my-queue"));//ensure policy is also updated
 }
 
 QPID_AUTO_TEST_CASE(testExpirationOnPop) {



---------------------------------------------------------------------
Apache Qpid - AMQP Messaging Implementation
Project:      http://qpid.apache.org
Use/Interact: mailto:commits-subscribe@qpid.apache.org