diff options
| author | Pavel Moravec <pmoravec@apache.org> | 2014-02-26 14:12:56 +0000 |
|---|---|---|
| committer | Pavel Moravec <pmoravec@apache.org> | 2014-02-26 14:12:56 +0000 |
| commit | 3e67aef7b465cbc3cc2a4d104b87d7032f455e0e (patch) | |
| tree | f8c06128b13e95749852ca57776ed3c25b16a24e /cpp/src | |
| parent | c1b0d1b234f0d002522e00bc83fe5164b7abb0d7 (diff) | |
| download | qpid-python-3e67aef7b465cbc3cc2a4d104b87d7032f455e0e.tar.gz | |
QPID-5561: QPID-5565: Broker->ACL module improvements
git-svn-id: https://svn.apache.org/repos/asf/qpid/trunk/qpid@1572059 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'cpp/src')
| -rw-r--r-- | cpp/src/qpid/broker/Broker.cpp | 20 | ||||
| -rw-r--r-- | cpp/src/qpid/broker/QueueFactory.cpp | 4 | ||||
| -rw-r--r-- | cpp/src/qpid/broker/QueueFactory.h | 3 | ||||
| -rwxr-xr-x | cpp/src/tests/acl.py | 16 |
4 files changed, 27 insertions, 16 deletions
diff --git a/cpp/src/qpid/broker/Broker.cpp b/cpp/src/qpid/broker/Broker.cpp index 7f076e92cd..0010f602c1 100644 --- a/cpp/src/qpid/broker/Broker.cpp +++ b/cpp/src/qpid/broker/Broker.cpp @@ -1306,12 +1306,20 @@ std::pair<boost::shared_ptr<Queue>, bool> Broker::createQueue( params.insert(make_pair(acl::PROP_AUTODELETE, settings.autodelete ? _TRUE : _FALSE)); params.insert(make_pair(acl::PROP_POLICYTYPE, settings.getLimitPolicy())); params.insert(make_pair(acl::PROP_PAGING, settings.paging ? _TRUE : _FALSE)); - params.insert(make_pair(acl::PROP_MAXPAGES, boost::lexical_cast<string>(settings.maxPages))); - params.insert(make_pair(acl::PROP_MAXPAGEFACTOR, boost::lexical_cast<string>(settings.pageFactor))); - params.insert(make_pair(acl::PROP_MAXQUEUECOUNT, boost::lexical_cast<string>(settings.maxDepth.getCount()))); - params.insert(make_pair(acl::PROP_MAXQUEUESIZE, boost::lexical_cast<string>(settings.maxDepth.getSize()))); - params.insert(make_pair(acl::PROP_MAXFILECOUNT, boost::lexical_cast<string>(settings.maxFileCount))); - params.insert(make_pair(acl::PROP_MAXFILESIZE, boost::lexical_cast<string>(settings.maxFileSize))); + if (settings.paging) { + params.insert(make_pair(acl::PROP_MAXPAGES, boost::lexical_cast<string>(settings.maxPages ? settings.maxPages : DEFAULT_MAX_PAGES))); + params.insert(make_pair(acl::PROP_MAXPAGEFACTOR, boost::lexical_cast<string>(settings.pageFactor ? settings.pageFactor : DEFAULT_PAGE_FACTOR))); + } + if (settings.maxDepth.hasCount()) + params.insert(make_pair(acl::PROP_MAXQUEUECOUNT, boost::lexical_cast<string>(settings.maxDepth.getCount() ? settings.maxDepth.getCount() : std::numeric_limits<uint64_t>::max()))); + if (settings.maxDepth.hasSize()) + params.insert(make_pair(acl::PROP_MAXQUEUESIZE, boost::lexical_cast<string>(settings.maxDepth.getSize() ? settings.maxDepth.getSize() : std::numeric_limits<uint64_t>::max()))); + else + params.insert(make_pair(acl::PROP_MAXQUEUESIZE, boost::lexical_cast<string>(config.queueLimit))); + if (settings.durable) { + params.insert(make_pair(acl::PROP_MAXFILECOUNT, boost::lexical_cast<string>(settings.maxFileCount ? settings.maxFileCount : 8))); + params.insert(make_pair(acl::PROP_MAXFILESIZE, boost::lexical_cast<string>(settings.maxFileSize ? settings.maxFileSize : 24))); + } if (!acl->authorise(userId,acl::ACT_CREATE,acl::OBJ_QUEUE,name,¶ms) ) throw framing::UnauthorizedAccessException(QPID_MSG("ACL denied queue create request from " << userId)); diff --git a/cpp/src/qpid/broker/QueueFactory.cpp b/cpp/src/qpid/broker/QueueFactory.cpp index 08988ed4ac..b4eccd646d 100644 --- a/cpp/src/qpid/broker/QueueFactory.cpp +++ b/cpp/src/qpid/broker/QueueFactory.cpp @@ -80,8 +80,8 @@ boost::shared_ptr<Queue> QueueFactory::create(const std::string& name, const Que QPID_LOG(warning, "Cannot create paged queue; no paging directory enabled"); } else { queue->messages = std::auto_ptr<Messages>(new PagedQueue(name, broker->getPagingDir().getPath(), - settings.maxPages ? settings.maxPages : 4, - settings.pageFactor ? settings.pageFactor : 1, + settings.maxPages ? settings.maxPages : DEFAULT_MAX_PAGES, + settings.pageFactor ? settings.pageFactor : DEFAULT_PAGE_FACTOR, broker->getProtocolRegistry(), broker->getExpiryPolicy())); } } else if (settings.lvqKey.empty()) {//LVQ already handled above diff --git a/cpp/src/qpid/broker/QueueFactory.h b/cpp/src/qpid/broker/QueueFactory.h index b6a79f1f1a..585983ba25 100644 --- a/cpp/src/qpid/broker/QueueFactory.h +++ b/cpp/src/qpid/broker/QueueFactory.h @@ -25,6 +25,9 @@ #include "qpid/types/Variant.h" #include <boost/shared_ptr.hpp> +#define DEFAULT_MAX_PAGES 4 +#define DEFAULT_PAGE_FACTOR 1 + namespace qpid { namespace management { class Manageable; diff --git a/cpp/src/tests/acl.py b/cpp/src/tests/acl.py index c9b2db64db..ec6b229ba4 100755 --- a/cpp/src/tests/acl.py +++ b/cpp/src/tests/acl.py @@ -1234,7 +1234,7 @@ class ACLTests(TestBase010): queue_options = {} queue_options["qpid.file_count"] = 200 queue_options["qpid.file_size"] = 500 - session.queue_declare(queue="qf5", exclusive=True, arguments=queue_options) + session.queue_declare(queue="qf5", exclusive=True, durable=True, arguments=queue_options) self.fail("ACL should deny queue create request with name=qf5, qpid.file_size=500 and qpid.file_count=200"); except qpid.session.SessionException, e: self.assertEqual(403,e.args[0].error_code) @@ -1388,7 +1388,7 @@ class ACLTests(TestBase010): queue_options = {} queue_options["qpid.file_count"] = 200 queue_options["qpid.file_size"] = 500 - session.queue_declare(queue="qfd5", arguments=queue_options) + session.queue_declare(queue="qfd5", durable=True, arguments=queue_options) self.fail("ACL should deny queue create request with name=qfd5 filemaxsizeupperlimit=500 filemaxcountupperlimit=200"); except qpid.session.SessionException, e: self.assertEqual(403,e.args[0].error_code) @@ -1398,7 +1398,7 @@ class ACLTests(TestBase010): queue_options = {} queue_options["qpid.file_count"] = 100 queue_options["qpid.file_size"] = 500 - session.queue_declare(queue="qfd5", arguments=queue_options) + session.queue_declare(queue="qfd5", durable=True, arguments=queue_options) except qpid.session.SessionException, e: if (403 == e.args[0].error_code): self.fail("ACL should allow queue create request with name=qfd5 filemaxsizeupperlimit=500 filemaxcountupperlimit=200"); @@ -1407,7 +1407,7 @@ class ACLTests(TestBase010): queue_options = {} queue_options["qpid.file_count"] = 49 queue_options["qpid.file_size"] = 100 - session.queue_declare(queue="qfd6", arguments=queue_options) + session.queue_declare(queue="qfd6", durable=True, arguments=queue_options) self.fail("ACL should deny queue create request with name=qfd6 filemaxsizeupperlimit=100 filemaxcountupperlimit=49"); except qpid.session.SessionException, e: self.assertEqual(403,e.args[0].error_code) @@ -1417,7 +1417,7 @@ class ACLTests(TestBase010): queue_options = {} queue_options["qpid.file_count"] = 101 queue_options["qpid.file_size"] = 100 - session.queue_declare(queue="qfd6", arguments=queue_options) + session.queue_declare(queue="qfd6", durable=True, arguments=queue_options) self.fail("ACL should allow queue create request with name=qfd6 filemaxsizeupperlimit=100 filemaxcountupperlimit=101"); except qpid.session.SessionException, e: self.assertEqual(403,e.args[0].error_code) @@ -1427,7 +1427,7 @@ class ACLTests(TestBase010): queue_options = {} queue_options["qpid.file_count"] = 100 queue_options["qpid.file_size"] = 49 - session.queue_declare(queue="qfd6", arguments=queue_options) + session.queue_declare(queue="qfd6", durable=True, arguments=queue_options) self.fail("ACL should deny queue create request with name=qfd6 filemaxsizeupperlimit=49 filemaxcountupperlimit=100"); except qpid.session.SessionException, e: self.assertEqual(403,e.args[0].error_code) @@ -1437,7 +1437,7 @@ class ACLTests(TestBase010): queue_options = {} queue_options["qpid.file_count"] = 100 queue_options["qpid.file_size"] =101 - session.queue_declare(queue="qfd6", arguments=queue_options) + session.queue_declare(queue="qfd6", durable=True, arguments=queue_options) self.fail("ACL should deny queue create request with name=qfd6 filemaxsizeupperlimit=101 filemaxcountupperlimit=100"); except qpid.session.SessionException, e: self.assertEqual(403,e.args[0].error_code) @@ -1447,7 +1447,7 @@ class ACLTests(TestBase010): queue_options = {} queue_options["qpid.file_count"] = 50 queue_options["qpid.file_size"] = 50 - session.queue_declare(queue="qfd6", arguments=queue_options) + session.queue_declare(queue="qfd6", durable=True, arguments=queue_options) except qpid.session.SessionException, e: if (403 == e.args[0].error_code): self.fail("ACL should allow queue create request with name=qfd6 filemaxsizeupperlimit=50 filemaxcountupperlimit=50"); |
