From bec6807fcab137d95f942c71a9305f96570ca7b3 Mon Sep 17 00:00:00 2001 From: Ted Ross Date: Fri, 15 Jun 2012 18:35:34 +0000 Subject: QPID-4066 - Allow configuration to override the broker's federation tag git-svn-id: https://svn.apache.org/repos/asf/qpid/trunk@1350732 13f79535-47bb-0310-9956-ffa450edef68 --- qpid/cpp/src/qpid/broker/Broker.cpp | 15 +++++++++++---- qpid/cpp/src/qpid/broker/Broker.h | 1 + qpid/cpp/src/tests/federation.py | 3 +++ qpid/cpp/src/tests/run_federation_tests | 8 ++++---- 4 files changed, 19 insertions(+), 8 deletions(-) diff --git a/qpid/cpp/src/qpid/broker/Broker.cpp b/qpid/cpp/src/qpid/broker/Broker.cpp index 4b7b4cb2a6..77c578bd37 100644 --- a/qpid/cpp/src/qpid/broker/Broker.cpp +++ b/qpid/cpp/src/qpid/broker/Broker.cpp @@ -173,6 +173,7 @@ Broker::Options::Options(const std::string& name) : ("link-maintenace-interval", optValue(linkMaintenanceInterval, "SECONDS")) ("link-heartbeat-interval", optValue(linkHeartbeatInterval, "SECONDS")) ("max-negotiate-time", optValue(maxNegotiateTime, "MilliSeconds"), "Maximum time a connection can take to send the initial protocol negotiation") + ("federation-tag", optValue(fedTag, "NAME"), "Override the federation tag") ; } @@ -244,8 +245,11 @@ Broker::Broker(const Broker::Options& conf) : // management schema correct. Vhost* vhost = new Vhost(this, this); vhostObject = Vhost::shared_ptr(vhost); - framing::Uuid uuid(managementAgent->getUuid()); - federationTag = uuid.str(); + if (conf.fedTag.empty()) { + framing::Uuid uuid(managementAgent->getUuid()); + federationTag = uuid.str(); + } else + federationTag = conf.fedTag; vhostObject->setFederationTag(federationTag); queues.setParent(vhost); @@ -254,8 +258,11 @@ Broker::Broker(const Broker::Options& conf) : } else { // Management is disabled so there is no broker management ID. // Create a unique uuid to use as the federation tag. - framing::Uuid uuid(true); - federationTag = uuid.str(); + if (conf.fedTag.empty()) { + framing::Uuid uuid(true); + federationTag = uuid.str(); + } else + federationTag = conf.fedTag; } QueuePolicy::setDefaultMaxSize(conf.queueLimit); diff --git a/qpid/cpp/src/qpid/broker/Broker.h b/qpid/cpp/src/qpid/broker/Broker.h index 83f34a839a..c385a3ec56 100644 --- a/qpid/cpp/src/qpid/broker/Broker.h +++ b/qpid/cpp/src/qpid/broker/Broker.h @@ -128,6 +128,7 @@ class Broker : public sys::Runnable, public Plugin::Target, double linkMaintenanceInterval; // FIXME aconway 2012-02-13: consistent parsing of SECONDS values. uint16_t linkHeartbeatInterval; uint32_t maxNegotiateTime; // Max time in ms for connection with no negotiation + std::string fedTag; private: std::string getHome(); diff --git a/qpid/cpp/src/tests/federation.py b/qpid/cpp/src/tests/federation.py index 3b58dce107..d3dfaedaf9 100755 --- a/qpid/cpp/src/tests/federation.py +++ b/qpid/cpp/src/tests/federation.py @@ -394,6 +394,9 @@ class FederationTests(TestBase010): for i in range(1, 11): try: msg = queue.get(timeout=5) + mp = msg.get("message_properties").application_headers + self.assertEqual(mp.__class__, dict) + self.assertEqual(mp['x-qpid.trace'], 'REMOTE') # check that the federation-tag override works self.assertEqual("Message %d" % i, msg.body) except Empty: self.fail("Failed to find expected message containing 'Message %d'" % i) diff --git a/qpid/cpp/src/tests/run_federation_tests b/qpid/cpp/src/tests/run_federation_tests index 7735b559cf..c2ee550226 100755 --- a/qpid/cpp/src/tests/run_federation_tests +++ b/qpid/cpp/src/tests/run_federation_tests @@ -36,10 +36,10 @@ fi QPIDD_CMD="../qpidd --daemon --port 0 --no-data-dir $MODULES --auth no --log-enable=info+ --log-enable=debug+:Bridge --log-to-file" start_brokers() { rm -f fed_local.log fed_remote.log fed_b1.log fed_b2.log - LOCAL_PORT=$($QPIDD_CMD fed_local.log) - REMOTE_PORT=$($QPIDD_CMD fed_remote.log) - REMOTE_B1=$($QPIDD_CMD fed_b1.log) - REMOTE_B2=$($QPIDD_CMD fed_b2.log) + LOCAL_PORT=$($QPIDD_CMD fed_local.log --federation-tag LOCAL) + REMOTE_PORT=$($QPIDD_CMD fed_remote.log --federation-tag REMOTE) + REMOTE_B1=$($QPIDD_CMD fed_b1.log --federation-tag B1) + REMOTE_B2=$($QPIDD_CMD fed_b2.log --federation-tag B2) } stop_brokers() { -- cgit v1.2.1