summaryrefslogtreecommitdiff
path: root/cpp/src/tests
diff options
context:
space:
mode:
authorAlan Conway <aconway@apache.org>2008-08-05 19:29:09 +0000
committerAlan Conway <aconway@apache.org>2008-08-05 19:29:09 +0000
commitb5f8cf1bd9b5652e2691d6bc5b9b1c3228f53d68 (patch)
tree3c74eaf22c916844bea3b130a8ee6bd2635261d7 /cpp/src/tests
parentbd47fd629bb2356df93af70b174a6a070f3a58cc (diff)
downloadqpid-python-b5f8cf1bd9b5652e2691d6bc5b9b1c3228f53d68.tar.gz
Fix Cluster::send encode race.
git-svn-id: https://svn.apache.org/repos/asf/incubator/qpid/trunk/qpid@682885 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'cpp/src/tests')
-rw-r--r--cpp/src/tests/cluster_test.cpp27
1 files changed, 26 insertions, 1 deletions
diff --git a/cpp/src/tests/cluster_test.cpp b/cpp/src/tests/cluster_test.cpp
index 567896d44d..9a907fc476 100644
--- a/cpp/src/tests/cluster_test.cpp
+++ b/cpp/src/tests/cluster_test.cpp
@@ -244,7 +244,32 @@ QPID_AUTO_TEST_CASE(testMessageDequeue) {
BOOST_CHECK(c1.subs.get(msg, "q"));
BOOST_CHECK_EQUAL("bar", msg.getData());
- // Queue should be empty on all queues.
+ // Queue should be empty on all cluster members.
+ BOOST_CHECK_EQUAL(0u, c0.session.queueQuery("q").getMessageCount());
+ BOOST_CHECK_EQUAL(0u, c1.session.queueQuery("q").getMessageCount());
+ BOOST_CHECK_EQUAL(0u, c2.session.queueQuery("q").getMessageCount());
+}
+
+QPID_AUTO_TEST_CASE(testDequeueWaitingSubscription) {
+ ClusterFixture cluster(3);
+ // First start a subscription.
+ Client c0(cluster[0]);
+ c0.session.queueDeclare("q");
+ c0.subs.subscribe(c0.lq, "q", FlowControl::messageCredit(2));
+ // Now send messages
+ Client c1(cluster[1]);
+ c1.session.messageTransfer(arg::content=TransferContent("foo", "q"));
+ c1.session.messageTransfer(arg::content=TransferContent("bar", "q"));
+
+ // Check they arrived
+ Message m;
+ BOOST_CHECK(c0.lq.get(m, sys::TIME_SEC));
+ BOOST_CHECK_EQUAL("foo", m.getData());
+ BOOST_CHECK(c0.lq.get(m, sys::TIME_SEC));
+ BOOST_CHECK_EQUAL("bar", m.getData());
+
+ // Queue should be empty on all cluster members.
+ Client c2(cluster[2]);
BOOST_CHECK_EQUAL(0u, c0.session.queueQuery("q").getMessageCount());
BOOST_CHECK_EQUAL(0u, c1.session.queueQuery("q").getMessageCount());
BOOST_CHECK_EQUAL(0u, c2.session.queueQuery("q").getMessageCount());