summaryrefslogtreecommitdiff
path: root/cpp/src/tests/MessageUtils.h
diff options
context:
space:
mode:
authorCharles E. Rolke <chug@apache.org>2013-04-29 20:20:23 +0000
committerCharles E. Rolke <chug@apache.org>2013-04-29 20:20:23 +0000
commitc150b7c6ff4f9bf0cad4110ef1d3075c02ac8dfe (patch)
treeb6552a1dda15d48bbf2a57bd8bd0c60b14c3a5be /cpp/src/tests/MessageUtils.h
parent9ebd425c617b2433f54cbb088426dccad4764310 (diff)
downloadqpid-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.h43
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);
}