diff options
| author | Charles E. Rolke <chug@apache.org> | 2013-04-29 20:20:23 +0000 |
|---|---|---|
| committer | Charles E. Rolke <chug@apache.org> | 2013-04-29 20:20:23 +0000 |
| commit | c150b7c6ff4f9bf0cad4110ef1d3075c02ac8dfe (patch) | |
| tree | b6552a1dda15d48bbf2a57bd8bd0c60b14c3a5be /cpp/src/tests/MessageUtils.h | |
| parent | 9ebd425c617b2433f54cbb088426dccad4764310 (diff) | |
| download | qpid-python-c150b7c6ff4f9bf0cad4110ef1d3075c02ac8dfe.tar.gz | |
QPID-4720: C++ Broker headers exchange tests not using run-time comaprisons.
Main code modified only slighty so that tests can hook into actual logic.
git-svn-id: https://svn.apache.org/repos/asf/qpid/trunk/qpid@1477317 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'cpp/src/tests/MessageUtils.h')
| -rw-r--r-- | cpp/src/tests/MessageUtils.h | 43 |
1 files changed, 27 insertions, 16 deletions
diff --git a/cpp/src/tests/MessageUtils.h b/cpp/src/tests/MessageUtils.h index 5024f5b77c..a6a5aa65fd 100644 --- a/cpp/src/tests/MessageUtils.h +++ b/cpp/src/tests/MessageUtils.h @@ -28,6 +28,7 @@ #include "qpid/framing/MessageTransferBody.h" #include "qpid/framing/Uuid.h" #include "qpid/types/Variant.h" +#include "qpid/amqp_0_10/Codecs.h" using namespace qpid; using namespace broker; @@ -38,7 +39,11 @@ namespace tests { struct MessageUtils { - static Message createMessage(const qpid::types::Variant::Map& properties, const std::string& content="", const std::string& destination = "") + static Message createMessage(const qpid::types::Variant::Map& properties, + const std::string& content="", + const std::string& destination = "", + bool replaceHeaders = false + ) { boost::intrusive_ptr<broker::amqp_0_10::MessageTransfer> msg(new broker::amqp_0_10::MessageTransfer()); @@ -52,22 +57,28 @@ struct MessageUtils AMQFrame data((AMQContentBody(content))); msg->getFrames().append(data); } - for (qpid::types::Variant::Map::const_iterator i = properties.begin(); i != properties.end(); ++i) { - if (i->first == "routing-key" && !i->second.isVoid()) { - msg->getFrames().getHeaders()->get<DeliveryProperties>(true)->setRoutingKey(i->second); - } else if (i->first == "message-id" && !i->second.isVoid()) { - qpid::types::Uuid id = i->second; - qpid::framing::Uuid id2(id.data()); - msg->getFrames().getHeaders()->get<MessageProperties>(true)->setMessageId(id2); - } else if (i->first == "ttl" && !i->second.isVoid()) { - msg->getFrames().getHeaders()->get<DeliveryProperties>(true)->setTtl(i->second); - } else if (i->first == "priority" && !i->second.isVoid()) { - msg->getFrames().getHeaders()->get<DeliveryProperties>(true)->setPriority(i->second); - } else if (i->first == "durable" && !i->second.isVoid()) { - msg->getFrames().getHeaders()->get<DeliveryProperties>(true)->setDeliveryMode(i->second.asBool() ? 2 : 1); - } else { - msg->getFrames().getHeaders()->get<MessageProperties>(true)->getApplicationHeaders().setString(i->first, i->second); + if (!replaceHeaders) { + for (qpid::types::Variant::Map::const_iterator i = properties.begin(); i != properties.end(); ++i) { + if (i->first == "routing-key" && !i->second.isVoid()) { + msg->getFrames().getHeaders()->get<DeliveryProperties>(true)->setRoutingKey(i->second); + } else if (i->first == "message-id" && !i->second.isVoid()) { + qpid::types::Uuid id = i->second; + qpid::framing::Uuid id2(id.data()); + msg->getFrames().getHeaders()->get<MessageProperties>(true)->setMessageId(id2); + } else if (i->first == "ttl" && !i->second.isVoid()) { + msg->getFrames().getHeaders()->get<DeliveryProperties>(true)->setTtl(i->second); + } else if (i->first == "priority" && !i->second.isVoid()) { + msg->getFrames().getHeaders()->get<DeliveryProperties>(true)->setPriority(i->second); + } else if (i->first == "durable" && !i->second.isVoid()) { + msg->getFrames().getHeaders()->get<DeliveryProperties>(true)->setDeliveryMode(i->second.asBool() ? 2 : 1); + } else { + msg->getFrames().getHeaders()->get<MessageProperties>(true)->getApplicationHeaders().setString(i->first, i->second); + } } + } else { + framing::FieldTable newHeaders; + qpid::amqp_0_10::translate(properties, newHeaders); + msg->getFrames().getHeaders()->get<MessageProperties>(true)->getApplicationHeaders() = newHeaders; } return Message(msg, msg); } |
