From 4336a5575fbf984a58dcbd0564463843e615a7c7 Mon Sep 17 00:00:00 2001 From: Alan Conway Date: Tue, 3 Apr 2007 18:50:43 +0000 Subject: * cpp/src/broker/Broker.cpp: Join cleaner thread. * cpp/src/broker/BrokerMessageMessage.h, .cpp, ReferenceTest: - Broke reference cycle between broker::MessageMessage and Reference by using a weak_ptr in MessageMessage git-svn-id: https://svn.apache.org/repos/asf/incubator/qpid/trunk/qpid@525244 13f79535-47bb-0310-9956-ffa450edef68 --- cpp/src/tests/ReferenceTest.cpp | 54 ++++++++++++++++++++--------------------- 1 file changed, 26 insertions(+), 28 deletions(-) (limited to 'cpp/src/tests/ReferenceTest.cpp') diff --git a/cpp/src/tests/ReferenceTest.cpp b/cpp/src/tests/ReferenceTest.cpp index b179ab8fdd..223f750ef6 100644 --- a/cpp/src/tests/ReferenceTest.cpp +++ b/cpp/src/tests/ReferenceTest.cpp @@ -28,6 +28,7 @@ #include "../broker/CompletionHandler.h" using namespace boost; +using namespace qpid; using namespace qpid::broker; using namespace qpid::framing; using namespace std; @@ -41,22 +42,8 @@ class ReferenceTest : public CppUnit::TestCase ProtocolVersion v; ReferenceRegistry registry; - Reference::shared_ptr r1; - MessageTransferBody::shared_ptr t1, t2; - MessageMessage::shared_ptr m1, m2; - MessageAppendBody::shared_ptr a1, a2; - public: - - ReferenceTest() : - r1(registry.open("bar")), - t1(new MessageTransferBody(v)), - t2(new MessageTransferBody(v)), - m1(new MessageMessage(0, 1, t1, r1)), - m2(new MessageMessage(0, 2, t2, r1)), - a1(new MessageAppendBody(v)), - a2(new MessageAppendBody(v)) - {} + public: void testRegistry() { Reference::shared_ptr ref = registry.open("foo"); CPPUNIT_ASSERT_EQUAL(string("foo"), ref->getId()); @@ -69,32 +56,43 @@ class ReferenceTest : public CppUnit::TestCase registry.open("foo"); CPPUNIT_FAIL("Expected exception"); } catch(...) {} + ref->close(); + try { + registry.get("foo"); + CPPUNIT_FAIL("Expected exception"); + } catch(...) {} } void testReference() { + + Reference::shared_ptr r1(registry.open("bar")); + + MessageTransferBody::shared_ptr t1(new MessageTransferBody(v)); + // TODO aconway 2007-04-03: hack around lack of generated setters. Clean this up. + const_cast(t1->getBody()) = framing::Content(REFERENCE,"bar"); + MessageMessage::shared_ptr m1(new MessageMessage(0, 1, t1, r1)); + + MessageTransferBody::shared_ptr t2(new MessageTransferBody(v)); + const_cast(t2->getBody()) = framing::Content(REFERENCE,"bar"); + MessageMessage::shared_ptr m2(new MessageMessage(0, 2, t2, r1)); + + MessageAppendBody::shared_ptr a1(new MessageAppendBody(v)); + MessageAppendBody::shared_ptr a2(new MessageAppendBody(v)); + r1->addMessage(m1); r1->addMessage(m2); CPPUNIT_ASSERT_EQUAL(size_t(2), r1->getMessages().size()); r1->append(a1); r1->append(a2); CPPUNIT_ASSERT_EQUAL(size_t(2), r1->getAppends().size()); - const vector messages = r1->getMessages(); r1->close(); - try { - registry.open("bar"); - CPPUNIT_FAIL("Expected exception"); - } catch(...) {} - CPPUNIT_ASSERT_EQUAL(messages[0], m1); - CPPUNIT_ASSERT_EQUAL(messages[0]->getReference()->getAppends()[0], a1); - CPPUNIT_ASSERT_EQUAL(messages[0]->getReference()->getAppends()[1], a2); + CPPUNIT_ASSERT_EQUAL(m1->getReference()->getAppends()[0], a1); + CPPUNIT_ASSERT_EQUAL(m1->getReference()->getAppends()[1], a2); - CPPUNIT_ASSERT_EQUAL(messages[1], m2); - CPPUNIT_ASSERT_EQUAL(messages[1]->getReference()->getAppends()[0], a1); - CPPUNIT_ASSERT_EQUAL(messages[1]->getReference()->getAppends()[1], a2); + CPPUNIT_ASSERT_EQUAL(m2->getReference()->getAppends()[0], a1); + CPPUNIT_ASSERT_EQUAL(m2->getReference()->getAppends()[1], a2); } - - }; // Make this test suite a plugin. -- cgit v1.2.1