diff options
author | Alan Conway <aconway@apache.org> | 2008-10-16 20:15:03 +0000 |
---|---|---|
committer | Alan Conway <aconway@apache.org> | 2008-10-16 20:15:03 +0000 |
commit | 564b128b1e7d9ba6d40b135d961cfc64869e06c4 (patch) | |
tree | 17822d81a9679988bf75ce6fc2f8c7cf81b6c272 /cpp/src | |
parent | 879ef8cf4fa5d0c935d52d0fcb1d7e81929cf2d5 (diff) | |
download | qpid-python-564b128b1e7d9ba6d40b135d961cfc64869e06c4.tar.gz |
Extended dump consumer test to cover member death.
git-svn-id: https://svn.apache.org/repos/asf/incubator/qpid/trunk/qpid@705347 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'cpp/src')
-rw-r--r-- | cpp/src/tests/ForkedBroker.h | 4 | ||||
-rw-r--r-- | cpp/src/tests/cluster_test.cpp | 43 |
2 files changed, 31 insertions, 16 deletions
diff --git a/cpp/src/tests/ForkedBroker.h b/cpp/src/tests/ForkedBroker.h index cc8714bf23..c0d72a6235 100644 --- a/cpp/src/tests/ForkedBroker.h +++ b/cpp/src/tests/ForkedBroker.h @@ -58,10 +58,10 @@ class ForkedBroker { } } - void kill() { + void kill(int sig=SIGINT) { using qpid::ErrnoException; if (pid == 0) return; - if (::kill(pid, SIGINT) < 0) throw ErrnoException("kill failed"); + if (::kill(pid, sig) < 0) throw ErrnoException("kill failed"); int status; if (::waitpid(pid, &status, 0) < 0) throw ErrnoException("wait for forked process failed"); if (WEXITSTATUS(status) != 0) diff --git a/cpp/src/tests/cluster_test.cpp b/cpp/src/tests/cluster_test.cpp index c8f5fb9083..5b7f7d1c63 100644 --- a/cpp/src/tests/cluster_test.cpp +++ b/cpp/src/tests/cluster_test.cpp @@ -92,8 +92,8 @@ struct ClusterFixture : public vector<uint16_t> { void add0(bool force); void setup(); - void kill(size_t n) { - if (n) forkedBrokers[n-1].kill(); + void kill(size_t n, int sig=SIGINT) { + if (n) forkedBrokers[n-1].kill(sig); else broker0->broker->shutdown(); } @@ -218,7 +218,7 @@ QPID_AUTO_TEST_CASE(testConnectionKnownHosts) { BOOST_CHECK_EQUAL(kb2,kb0); BOOST_CHECK_EQUAL(kb2,kb1); - cluster.kill(1); + cluster.kill(1,9); kb0 = knownBrokerPorts(c0.connection, 2); kb2 = knownBrokerPorts(c2.connection, 2); BOOST_CHECK_EQUAL(kb0.size(), 2); @@ -226,34 +226,49 @@ QPID_AUTO_TEST_CASE(testConnectionKnownHosts) { } QPID_AUTO_TEST_CASE(DumpConsumers) { - ClusterFixture cluster(1); - Client c0(cluster[0], "c0"); - c0.session.queueDeclare("q"); - c0.subs.subscribe(c0.lq, "q", FlowControl::zero()); - c0.session.sync(); + ClusterFixture cluster(1, false); // Don't init broker 0 - // Start new members cluster.add(); Client c1(cluster[1], "c1"); + c1.session.queueDeclare("q"); + c1.subs.subscribe(c1.lq, "q", FlowControl::zero()); + c1.session.sync(); + + // Start new members + cluster.add0(true); + Client c0(cluster[0], "c0"); cluster.add(); Client c2(cluster[2], "c2"); // Transfer a message, verify all members see it. - c0.session.messageTransfer(arg::content=Message("aaa", "q")); + c1.session.messageTransfer(arg::content=Message("aaa", "q")); BOOST_CHECK_EQUAL(c0.session.queueQuery("q").getMessageCount(), 1u); BOOST_CHECK_EQUAL(c1.session.queueQuery("q").getMessageCount(), 1u); BOOST_CHECK_EQUAL(c2.session.queueQuery("q").getMessageCount(), 1u); - // Activate the subscription, ensure message removed on all queues. - c0.subs.setFlowControl("q", FlowControl::messageCredit(1)); + c1.subs.setFlowControl("q", FlowControl::unlimited()); Message m; - BOOST_CHECK(c0.lq.get(m, TIME_SEC)); + BOOST_CHECK(c1.lq.get(m, TIME_SEC)); BOOST_CHECK_EQUAL(m.getData(), "aaa"); - BOOST_CHECK_EQUAL(c0.session.queueQuery("q").getMessageCount(), 0u); + BOOST_CHECK_EQUAL(c1.session.queueQuery("q").getMessageCount(), 0u); BOOST_CHECK_EQUAL(c1.session.queueQuery("q").getMessageCount(), 0u); BOOST_CHECK_EQUAL(c2.session.queueQuery("q").getMessageCount(), 0u); + + // Kill the subscribing member, ensure further messages are not removed. + { + ScopedSuppressLogging sl; + cluster.kill(1,9); + cluster.waitFor(2); + try { c1.connection.close(); } + catch (...) {} + } + for (int i = 0; i < 10; ++i) { + c0.session.messageTransfer(arg::content=Message("bbb", "q")); + BOOST_REQUIRE(c0.subs.get(m, "q", TIME_SEC)); + BOOST_REQUIRE_EQUAL(m.getData(), "bbb"); + } } QPID_AUTO_TEST_CASE(testCatchupSharedState) { |