From 1a469b992ef2f28d98f43e63cf4d520c1bf830a4 Mon Sep 17 00:00:00 2001 From: Alan Conway Date: Mon, 23 Jul 2007 13:08:16 +0000 Subject: * src/tests/cluster.mk: Enable cluster test. * src/tests/Cluster.h (class TestHandler): Fixed race in TestHandler::waitFor * src/tests/Cluster.cpp - Allow separate start of parent and child processes. * src/qpid/Options.cpp (parse): Skip argv parsing if argc=0. * src/qpid/cluster/Cluster.cpp (configChange): assert group name. * src/qpid/cluster/Cpg.cpp, .h: Additional logging * src/qpid/framing/AMQFrame.cpp: Initialize all fields in ctor, avoid valgrind warning. * src/qpid/log/Logger.cpp: Initialize singleton automatically from environment so logging can be used on tests. * src/qpid/sys/Time.h: Avoid overflow in AbsTime(t, TIME_INFINITE) git-svn-id: https://svn.apache.org/repos/asf/incubator/qpid/trunk/qpid@558710 13f79535-47bb-0310-9956-ffa450edef68 --- cpp/src/tests/Cluster.h | 19 ++++++++++++------- 1 file changed, 12 insertions(+), 7 deletions(-) (limited to 'cpp/src/tests/Cluster.h') diff --git a/cpp/src/tests/Cluster.h b/cpp/src/tests/Cluster.h index bf6d1c2a64..c2909e0c1b 100644 --- a/cpp/src/tests/Cluster.h +++ b/cpp/src/tests/Cluster.h @@ -48,20 +48,25 @@ using namespace boost; void null_deleter(void*) {} template -struct TestHandler : public Handler, public vector, public Monitor +class TestHandler : public Handler, public vector { + Monitor lock; + + public: void handle(T& frame) { - Mutex::ScopedLock l(*this); + Mutex::ScopedLock l(lock); push_back(frame); - notifyAll(); + BOOST_MESSAGE(getpid()<<" TestHandler::handle: " << this->size()); + lock.notifyAll(); } bool waitFor(size_t n) { - Mutex::ScopedLock l(*this); - AbsTime deadline(now(), 5*TIME_SEC); - while (vector::size() != n && wait(deadline)) + Mutex::ScopedLock l(lock); + BOOST_MESSAGE(getpid()<<" TestHandler::waitFor("<size()); + AbsTime deadline(now(), 2*TIME_SEC); + while (vector::size() < n && lock.wait(deadline)) ; - return vector::size() == n; + return vector::size() >= n; } }; -- cgit v1.2.1