diff options
author | Gordon Sim <gsim@apache.org> | 2006-12-06 17:51:42 +0000 |
---|---|---|
committer | Gordon Sim <gsim@apache.org> | 2006-12-06 17:51:42 +0000 |
commit | f2d0f0cfbfebb082e92f28b8d1b2987a0f20acf6 (patch) | |
tree | d71e0a7854dcfbef75040ee426b53f6369e0cc7a /cpp/tests/MessageBuilderTest.cpp | |
parent | f8c692d37104a95ad245402ffe0d7d6b7c4ea816 (diff) | |
download | qpid-python-f2d0f0cfbfebb082e92f28b8d1b2987a0f20acf6.tar.gz |
Allow non-durable messages to be lazy-loaded. Cleanup of lazy-loaded messages
that are never enqueued.
git-svn-id: https://svn.apache.org/repos/asf/incubator/qpid/trunk/qpid@483165 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'cpp/tests/MessageBuilderTest.cpp')
-rw-r--r-- | cpp/tests/MessageBuilderTest.cpp | 72 |
1 files changed, 41 insertions, 31 deletions
diff --git a/cpp/tests/MessageBuilderTest.cpp b/cpp/tests/MessageBuilderTest.cpp index 3f84142461..88e8318832 100644 --- a/cpp/tests/MessageBuilderTest.cpp +++ b/cpp/tests/MessageBuilderTest.cpp @@ -50,7 +50,7 @@ class MessageBuilderTest : public CppUnit::TestCase public: - void stage(Message::shared_ptr& msg) + void stage(Message* const msg) { if (msg->getPersistenceId() == 0) { header = new Buffer(msg->encodedHeaderSize()); @@ -71,6 +71,11 @@ class MessageBuilderTest : public CppUnit::TestCase } } + void destroy(Message* msg) + { + CPPUNIT_ASSERT(msg->getPersistenceId()); + } + Message::shared_ptr getRestoredMessage() { Message::shared_ptr msg(new Message()); @@ -164,37 +169,42 @@ class MessageBuilderTest : public CppUnit::TestCase } void testStaging(){ - DummyHandler handler; + //store must be the last thing to be destroyed or destructor + //of Message fails (it uses the store to call destroy if lazy + //loaded content is in use) TestMessageStore store(14); - MessageBuilder builder(&handler, &store, 5); - - string data1("abcdefg"); - string data2("hijklmn"); - - Message::shared_ptr message(new Message(0, "test", "my_routing_key", false, false)); - AMQHeaderBody::shared_ptr header(new AMQHeaderBody(BASIC)); - header->setContentSize(14); - BasicHeaderProperties* properties = dynamic_cast<BasicHeaderProperties*>(header->getProperties()); - properties->setMessageId("MyMessage"); - properties->getHeaders().setString("abc", "xyz"); - - AMQContentBody::shared_ptr part1(new AMQContentBody(data1)); - AMQContentBody::shared_ptr part2(new AMQContentBody(data2)); - - builder.initialise(message); - builder.setHeader(header); - builder.addContent(part1); - builder.addContent(part2); - CPPUNIT_ASSERT(handler.msg); - CPPUNIT_ASSERT_EQUAL(message, handler.msg); - - Message::shared_ptr restored = store.getRestoredMessage(); - CPPUNIT_ASSERT_EQUAL(message->getExchange(), restored->getExchange()); - CPPUNIT_ASSERT_EQUAL(message->getRoutingKey(), restored->getRoutingKey()); - CPPUNIT_ASSERT_EQUAL(message->getHeaderProperties()->getMessageId(), restored->getHeaderProperties()->getMessageId()); - CPPUNIT_ASSERT_EQUAL(message->getHeaderProperties()->getHeaders().getString("abc"), - restored->getHeaderProperties()->getHeaders().getString("abc")); - CPPUNIT_ASSERT_EQUAL((u_int64_t) 14, restored->contentSize()); + { + DummyHandler handler; + MessageBuilder builder(&handler, &store, 5); + + string data1("abcdefg"); + string data2("hijklmn"); + + Message::shared_ptr message(new Message(0, "test", "my_routing_key", false, false)); + AMQHeaderBody::shared_ptr header(new AMQHeaderBody(BASIC)); + header->setContentSize(14); + BasicHeaderProperties* properties = dynamic_cast<BasicHeaderProperties*>(header->getProperties()); + properties->setMessageId("MyMessage"); + properties->getHeaders().setString("abc", "xyz"); + + AMQContentBody::shared_ptr part1(new AMQContentBody(data1)); + AMQContentBody::shared_ptr part2(new AMQContentBody(data2)); + + builder.initialise(message); + builder.setHeader(header); + builder.addContent(part1); + builder.addContent(part2); + CPPUNIT_ASSERT(handler.msg); + CPPUNIT_ASSERT_EQUAL(message, handler.msg); + + Message::shared_ptr restored = store.getRestoredMessage(); + CPPUNIT_ASSERT_EQUAL(message->getExchange(), restored->getExchange()); + CPPUNIT_ASSERT_EQUAL(message->getRoutingKey(), restored->getRoutingKey()); + CPPUNIT_ASSERT_EQUAL(message->getHeaderProperties()->getMessageId(), restored->getHeaderProperties()->getMessageId()); + CPPUNIT_ASSERT_EQUAL(message->getHeaderProperties()->getHeaders().getString("abc"), + restored->getHeaderProperties()->getHeaders().getString("abc")); + CPPUNIT_ASSERT_EQUAL((u_int64_t) 14, restored->contentSize()); + } } }; |