You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@qpid.apache.org by gs...@apache.org on 2010/11/10 17:51:17 UTC

svn commit: r1033585 - in /qpid/trunk/qpid: cpp/src/qpid/broker/QueuePolicy.cpp cpp/src/tests/QueuePolicyTest.cpp tests/src/py/qpid_tests/broker_0_10/queue.py

Author: gsim
Date: Wed Nov 10 16:51:16 2010
New Revision: 1033585

URL: http://svn.apache.org/viewvc?rev=1033585&view=rev
Log:
Fix to r1028346: no point in throwing exception after queue has already been created, so just log error and revert to default (do this for floating point values also)

Modified:
    qpid/trunk/qpid/cpp/src/qpid/broker/QueuePolicy.cpp
    qpid/trunk/qpid/cpp/src/tests/QueuePolicyTest.cpp
    qpid/trunk/qpid/tests/src/py/qpid_tests/broker_0_10/queue.py

Modified: qpid/trunk/qpid/cpp/src/qpid/broker/QueuePolicy.cpp
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/cpp/src/qpid/broker/QueuePolicy.cpp?rev=1033585&r1=1033584&r2=1033585&view=diff
==============================================================================
--- qpid/trunk/qpid/cpp/src/qpid/broker/QueuePolicy.cpp (original)
+++ qpid/trunk/qpid/cpp/src/qpid/broker/QueuePolicy.cpp Wed Nov 10 16:51:16 2010
@@ -123,17 +123,23 @@ uint32_t QueuePolicy::getCapacity(const 
     int32_t result = 0;
 
     if (!v) return defaultValue;
-    if (v->convertsTo<int>()) {
+    if (v->getType() == 0x23) {
+        QPID_LOG(debug, "Value for " << key << " specified as float: " << v->get<float>());
+    } else if (v->getType() == 0x33) {
+        QPID_LOG(debug, "Value for " << key << " specified as double: " << v->get<double>());
+    } else if (v->convertsTo<int>()) {
         result = v->get<int>();
+        QPID_LOG(debug, "Got integer value for " << key << ": " << result);
         if (result >= 0) return result;
-    }
-    else {
-        string s(v->get<string>());  // I assume anything can be converted to a string
+    } else if (v->convertsTo<string>()) {
+        string s(v->get<string>());
+        QPID_LOG(debug, "Got string value for " << key << ": " << s);
         std::istringstream convert(s);
         if (convert >> result && result >= 0) return result;
     }
 
-    throw InvalidArgumentException(QPID_MSG("Cannot convert " << key << " to unsigned integer"));
+    QPID_LOG(warning, "Cannot convert " << key << " to unsigned integer, using default (" << defaultValue << ")");
+    return defaultValue;
 }
 
 std::string QueuePolicy::getType(const FieldTable& settings)

Modified: qpid/trunk/qpid/cpp/src/tests/QueuePolicyTest.cpp
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/cpp/src/tests/QueuePolicyTest.cpp?rev=1033585&r1=1033584&r2=1033585&view=diff
==============================================================================
--- qpid/trunk/qpid/cpp/src/tests/QueuePolicyTest.cpp (original)
+++ qpid/trunk/qpid/cpp/src/tests/QueuePolicyTest.cpp Wed Nov 10 16:51:16 2010
@@ -378,6 +378,24 @@ QPID_AUTO_TEST_CASE(testPolicyFailureOnC
     BOOST_CHECK_THROW(f.session.txCommit(), InternalErrorException);
 }
 
+QPID_AUTO_TEST_CASE(testCapacityConversion)
+{
+    FieldTable args;
+    args.setString("qpid.max_count", "5");
+
+    ProxySessionFixture f;
+    std::string q("q");
+    f.session.queueDeclare(arg::queue=q, arg::exclusive=true, arg::autoDelete=true, arg::arguments=args);
+    for (int i = 0; i < 5; i++) {
+        f.session.messageTransfer(arg::content=client::Message((boost::format("%1%_%2%") % "Message" % (i+1)).str(), q));
+    }
+    try {
+        ScopedSuppressLogging sl; // Suppress messages for expected errors.
+        f.session.messageTransfer(arg::content=client::Message("Message_6", q));
+        BOOST_FAIL("expecting ResourceLimitExceededException.");
+    } catch (const ResourceLimitExceededException&) {}
+}
+
 QPID_AUTO_TEST_SUITE_END()
 
 }} // namespace qpid::tests

Modified: qpid/trunk/qpid/tests/src/py/qpid_tests/broker_0_10/queue.py
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/tests/src/py/qpid_tests/broker_0_10/queue.py?rev=1033585&r1=1033584&r2=1033585&view=diff
==============================================================================
--- qpid/trunk/qpid/tests/src/py/qpid_tests/broker_0_10/queue.py (original)
+++ qpid/trunk/qpid/tests/src/py/qpid_tests/broker_0_10/queue.py Wed Nov 10 16:51:16 2010
@@ -115,81 +115,6 @@ class QueueTests(TestBase010):
         except SessionException, e:
             self.assertEquals(405, e.args[0].error_code)
 
-    def test_declare_capacity_valid(self):
-        session = self.session
-
-        try:
-            queue_options = {}
-            queue_options["qpid.max_count"] = 0
-            queue_options["qpid.max_size"] = 0
-            session.queue_declare(queue="queue_capacity1", exclusive=True, arguments=queue_options)
-        except SessionException, e:
-            self.fail("Should accept queue create request with name=queue_capacity1, qpid.max_count=0 and qpid.max_size=0")
-
-        try:
-            queue_options = {}
-            queue_options["qpid.max_count"] = 3
-            queue_options["qpid.max_size"] = 0
-            session.queue_declare(queue="queue_capacity2", exclusive=True, arguments=queue_options)
-        except SessionException, e:
-            self.fail("Should accept queue create request with name=queue_capacity2, qpid.max_count=3 and qpid.max_size=0")
-
-        try:
-            queue_options = {}
-            queue_options["qpid.max_count"] = 0
-            queue_options["qpid.max_size"] = 300
-            session.queue_declare(queue="queue_capacity3", exclusive=True, arguments=queue_options)
-        except SessionException, e:
-            self.fail("Should accept queue create request with name=queue_capacity3, qpid.max_count=0 and qpid.max_size=300")
-
-        try:
-            queue_options = {}
-            queue_options["qpid.max_count"] = 0
-            queue_options["qpid.max_size"] = "3"
-            session.queue_declare(queue="queue_capacity6", exclusive=True, arguments=queue_options)
-        except SessionException, e:
-            self.fail("Should allow queue create request with qpid.max_size='3'")
-
-
-    def test_declare_capacity_invalid(self):
-        session = self.session
-        try:
-            queue_options = {}
-            queue_options["qpid.max_count"] = -1
-            queue_options["qpid.max_size"] = 0
-            session.queue_declare(queue="queue_capacity4", exclusive=True, arguments=queue_options)
-            self.fail("Should reject queue create request with name=queue_capacity4, qpid.max_count=-1 and qpid.max_size=0")
-        except SessionException, e:
-            pass
-
-        try:
-            queue_options = {}
-            queue_options["qpid.max_count"] = 0
-            queue_options["qpid.max_size"] = -1
-            session.queue_declare(queue="queue_capacity5", exclusive=True, arguments=queue_options)
-            self.fail("Should reject queue create request with name=queue_capacity5, qpid.max_count=0 and qpid.max_size=-1")
-        except SessionException, e:
-            pass
-
-        try:
-            queue_options = {}
-            queue_options["qpid.max_count"] = 0
-            queue_options["qpid.max_size"] = "flummery"
-            session.queue_declare(queue="queue_capacity7", exclusive=True, arguments=queue_options)
-            self.fail("Should deny queue create request with name=queue_capacity7, qpid.max_count=0 and qpid.max_size='flummery'")
-        except SessionException, e:
-            pass
-
-        try:
-            queue_options = {}
-            queue_options["qpid.max_count"] = 0
-            queue_options["qpid.max_size"] = 3.14159
-            session.queue_declare(queue="queue_capacity8", exclusive=True, arguments=queue_options)
-            self.fail("Should deny queue create request with name=queue_capacity4, qpid.max_count=0 and qpid.max_size=3.14159");
-        except SessionException, e:
-            pass
-
-
     def test_declare_passive(self):
         """
         Test that the passive field is honoured in queue.declare



---------------------------------------------------------------------
Apache Qpid - AMQP Messaging Implementation
Project:      http://qpid.apache.org
Use/Interact: mailto:commits-subscribe@qpid.apache.org