summaryrefslogtreecommitdiff
path: root/cpp/tests/MessageBuilderTest.cpp
diff options
context:
space:
mode:
authorGordon Sim <gsim@apache.org>2006-12-06 17:51:42 +0000
committerGordon Sim <gsim@apache.org>2006-12-06 17:51:42 +0000
commitf2d0f0cfbfebb082e92f28b8d1b2987a0f20acf6 (patch)
treed71e0a7854dcfbef75040ee426b53f6369e0cc7a /cpp/tests/MessageBuilderTest.cpp
parentf8c692d37104a95ad245402ffe0d7d6b7c4ea816 (diff)
downloadqpid-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.cpp72
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());
+ }
}
};