diff options
| author | Rafael H. Schloming <rhs@apache.org> | 2009-12-26 12:42:57 +0000 |
|---|---|---|
| committer | Rafael H. Schloming <rhs@apache.org> | 2009-12-26 12:42:57 +0000 |
| commit | 248f1fe188fe2307b9dcf2c87a83b653eaa1920c (patch) | |
| tree | d5d0959a70218946ff72e107a6c106e32479a398 /cpp/src/tests/MessageBuilderTest.cpp | |
| parent | 3c83a0e3ec7cf4dc23e83a340b25f5fc1676f937 (diff) | |
| download | qpid-python-248f1fe188fe2307b9dcf2c87a83b653eaa1920c.tar.gz | |
synchronized with trunk except for ruby dir
git-svn-id: https://svn.apache.org/repos/asf/qpid/branches/qpid.rnr@893970 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'cpp/src/tests/MessageBuilderTest.cpp')
| -rw-r--r-- | cpp/src/tests/MessageBuilderTest.cpp | 110 |
1 files changed, 72 insertions, 38 deletions
diff --git a/cpp/src/tests/MessageBuilderTest.cpp b/cpp/src/tests/MessageBuilderTest.cpp index 63c3a800de..c2fb8ad32e 100644 --- a/cpp/src/tests/MessageBuilderTest.cpp +++ b/cpp/src/tests/MessageBuilderTest.cpp @@ -7,9 +7,9 @@ * to you under the Apache License, Version 2.0 (the * "License"); you may not use this file except in compliance * with the License. You may obtain a copy of the License at - * + * * http://www.apache.org/licenses/LICENSE-2.0 - * + * * Unless required by applicable law or agreed to in writing, * software distributed under the License is distributed on an * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY @@ -27,20 +27,22 @@ #include "unit_test.h" #include <list> -using namespace boost; using namespace qpid::broker; using namespace qpid::framing; using namespace qpid::sys; +namespace qpid { +namespace tests { + class MockMessageStore : public NullMessageStore { enum Op {STAGE=1, APPEND=2}; uint64_t id; - intrusive_ptr<PersistableMessage> expectedMsg; + boost::intrusive_ptr<PersistableMessage> expectedMsg; string expectedData; std::list<Op> ops; - + void checkExpectation(Op actual) { BOOST_CHECK_EQUAL(ops.front(), actual); @@ -50,40 +52,47 @@ class MockMessageStore : public NullMessageStore public: MockMessageStore() : id(0), expectedMsg(0) {} - void expectStage(PersistableMessage& msg) - { + void expectStage(PersistableMessage& msg) + { expectedMsg = &msg; - ops.push_back(STAGE); + ops.push_back(STAGE); } - void expectAppendContent(PersistableMessage& msg, const string& data) - { + void expectAppendContent(PersistableMessage& msg, const string& data) + { expectedMsg = &msg; expectedData = data; - ops.push_back(APPEND); + ops.push_back(APPEND); } - void stage(const intrusive_ptr<PersistableMessage>& msg) + void stage(const boost::intrusive_ptr<PersistableMessage>& msg) { checkExpectation(STAGE); BOOST_CHECK_EQUAL(expectedMsg, msg); msg->setPersistenceId(++id); } - void appendContent(const intrusive_ptr<const PersistableMessage>& msg, + void appendContent(const boost::intrusive_ptr<const PersistableMessage>& msg, const string& data) { checkExpectation(APPEND); - BOOST_CHECK_EQUAL(static_pointer_cast<const PersistableMessage>(expectedMsg), msg); - BOOST_CHECK_EQUAL(expectedData, data); + BOOST_CHECK_EQUAL(boost::static_pointer_cast<const PersistableMessage>(expectedMsg), msg); + BOOST_CHECK_EQUAL(expectedData, data); } bool expectationsMet() { return ops.empty(); } + + //don't treat this store as a null impl + bool isNull() const + { + return false; + } + }; - + QPID_AUTO_TEST_SUITE(MessageBuilderTestSuite) QPID_AUTO_TEST_CASE(testHeaderOnly) @@ -94,11 +103,10 @@ QPID_AUTO_TEST_CASE(testHeaderOnly) std::string exchange("builder-exchange"); std::string key("builder-exchange"); - AMQFrame method(in_place<MessageTransferBody>( - ProtocolVersion(), exchange, 0, 0)); - AMQFrame header(in_place<AMQHeaderBody>()); + AMQFrame method((MessageTransferBody(ProtocolVersion(), exchange, 0, 0))); + AMQFrame header((AMQHeaderBody())); - header.castBody<AMQHeaderBody>()->get<MessageProperties>(true)->setContentLength(0); + header.castBody<AMQHeaderBody>()->get<MessageProperties>(true)->setContentLength(0); header.castBody<AMQHeaderBody>()->get<DeliveryProperties>(true)->setRoutingKey(key); builder.handle(method); @@ -119,15 +127,15 @@ QPID_AUTO_TEST_CASE(test1ContentFrame) std::string exchange("builder-exchange"); std::string key("builder-exchange"); - AMQFrame method(in_place<MessageTransferBody>(ProtocolVersion(), exchange, 0, 0)); - AMQFrame header(in_place<AMQHeaderBody>()); - AMQFrame content(in_place<AMQContentBody>(data)); + AMQFrame method((MessageTransferBody(ProtocolVersion(), exchange, 0, 0))); + AMQFrame header((AMQHeaderBody())); + AMQFrame content((AMQContentBody(data))); method.setEof(false); header.setBof(false); header.setEof(false); content.setBof(false); - header.castBody<AMQHeaderBody>()->get<MessageProperties>(true)->setContentLength(data.size()); + header.castBody<AMQHeaderBody>()->get<MessageProperties>(true)->setContentLength(data.size()); header.castBody<AMQHeaderBody>()->get<DeliveryProperties>(true)->setRoutingKey(key); builder.handle(method); @@ -138,7 +146,7 @@ QPID_AUTO_TEST_CASE(test1ContentFrame) BOOST_CHECK(builder.getMessage()); BOOST_CHECK(!builder.getMessage()->getFrames().isComplete()); - builder.handle(content); + builder.handle(content); BOOST_CHECK(builder.getMessage()); BOOST_CHECK(builder.getMessage()->getFrames().isComplete()); } @@ -153,11 +161,10 @@ QPID_AUTO_TEST_CASE(test2ContentFrames) std::string exchange("builder-exchange"); std::string key("builder-exchange"); - AMQFrame method(in_place<MessageTransferBody>( - ProtocolVersion(), exchange, 0, 0)); - AMQFrame header(in_place<AMQHeaderBody>()); - AMQFrame content1(in_place<AMQContentBody>(data1)); - AMQFrame content2(in_place<AMQContentBody>(data2)); + AMQFrame method((MessageTransferBody(ProtocolVersion(), exchange, 0, 0))); + AMQFrame header((AMQHeaderBody())); + AMQFrame content1((AMQContentBody(data1))); + AMQFrame content2((AMQContentBody(data2))); method.setEof(false); header.setBof(false); header.setEof(false); @@ -165,7 +172,7 @@ QPID_AUTO_TEST_CASE(test2ContentFrames) content1.setEof(false); content2.setBof(false); - header.castBody<AMQHeaderBody>()->get<MessageProperties>(true)->setContentLength(data1.size() + data2.size()); + header.castBody<AMQHeaderBody>()->get<MessageProperties>(true)->setContentLength(data1.size() + data2.size()); header.castBody<AMQHeaderBody>()->get<DeliveryProperties>(true)->setRoutingKey(key); builder.handle(method); @@ -184,19 +191,18 @@ QPID_AUTO_TEST_CASE(testStaging) MockMessageStore store; MessageBuilder builder(&store, 5); builder.start(SequenceNumber()); - + std::string data1("abcdefg"); std::string data2("hijklmn"); std::string exchange("builder-exchange"); std::string key("builder-exchange"); - AMQFrame method(in_place<MessageTransferBody>( - ProtocolVersion(), exchange, 0, 0)); - AMQFrame header(in_place<AMQHeaderBody>()); - AMQFrame content1(in_place<AMQContentBody>(data1)); - AMQFrame content2(in_place<AMQContentBody>(data2)); + AMQFrame method(MessageTransferBody(ProtocolVersion(), exchange, 0, 0)); + AMQFrame header((AMQHeaderBody())); + AMQFrame content1((AMQContentBody(data1))); + AMQFrame content2((AMQContentBody(data2))); - header.castBody<AMQHeaderBody>()->get<MessageProperties>(true)->setContentLength(data1.size() + data2.size()); + header.castBody<AMQHeaderBody>()->get<MessageProperties>(true)->setContentLength(data1.size() + data2.size()); header.castBody<AMQHeaderBody>()->get<DeliveryProperties>(true)->setRoutingKey(key); builder.handle(method); @@ -214,4 +220,32 @@ QPID_AUTO_TEST_CASE(testStaging) BOOST_CHECK(!builder.getMessage()->isContentLoaded()); } +QPID_AUTO_TEST_CASE(testNoManagementStaging) +{ + // Make sure management messages don't stage + MockMessageStore store; + MessageBuilder builder(&store, 5); + builder.start(SequenceNumber()); + + std::string data1("abcdefg"); + std::string exchange("qpid.management"); + std::string key("builder-exchange"); + + AMQFrame method(MessageTransferBody(ProtocolVersion(), exchange, 0, 0)); + AMQFrame header((AMQHeaderBody())); + AMQFrame content1((AMQContentBody(data1))); + + header.castBody<AMQHeaderBody>()->get<MessageProperties>(true)->setContentLength(data1.size()); + header.castBody<AMQHeaderBody>()->get<DeliveryProperties>(true)->setRoutingKey(key); + + builder.handle(method); + builder.handle(header); + + builder.handle(content1); + BOOST_CHECK(store.expectationsMet()); + BOOST_CHECK_EQUAL((uint64_t) 0, builder.getMessage()->getPersistenceId()); +} + QPID_AUTO_TEST_SUITE_END() + +}} // namespace qpid::tests |
