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 2015/01/21 15:51:00 UTC

svn commit: r1653548 - in /qpid/trunk/qpid/cpp/src: qpid/client/amqp0_10/AddressResolution.cpp tests/assertions.py

Author: gsim
Date: Wed Jan 21 14:50:59 2015
New Revision: 1653548

URL: http://svn.apache.org/r1653548
Log:
QPID-6329: slightly more forgiving equivalence check on fieldvalues in assertions on 0-10 path

Modified:
    qpid/trunk/qpid/cpp/src/qpid/client/amqp0_10/AddressResolution.cpp
    qpid/trunk/qpid/cpp/src/tests/assertions.py

Modified: qpid/trunk/qpid/cpp/src/qpid/client/amqp0_10/AddressResolution.cpp
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/cpp/src/qpid/client/amqp0_10/AddressResolution.cpp?rev=1653548&r1=1653547&r2=1653548&view=diff
==============================================================================
--- qpid/trunk/qpid/cpp/src/qpid/client/amqp0_10/AddressResolution.cpp (original)
+++ qpid/trunk/qpid/cpp/src/qpid/client/amqp0_10/AddressResolution.cpp Wed Jan 21 14:50:59 2015
@@ -55,6 +55,7 @@ using qpid::messaging::AssertionFailed;
 using qpid::framing::ExchangeBoundResult;
 using qpid::framing::ExchangeQueryResult;
 using qpid::framing::FieldTable;
+using qpid::framing::FieldValue;
 using qpid::framing::QueueQueryResult;
 using qpid::framing::ReplyTo;
 using qpid::framing::Uuid;
@@ -140,6 +141,11 @@ const std::string PREFIX_AMQ("amq.");
 const std::string PREFIX_QPID("qpid.");
 
 const Verifier verifier;
+
+bool areEquivalent(const FieldValue& a, const FieldValue& b)
+{
+    return ((a == b) || (a.convertsTo<int64_t>() && b.convertsTo<int64_t>() && a.get<int64_t>() == b.get<int64_t>()));
+}
 }
 
 struct Binding
@@ -806,7 +812,7 @@ void Queue::checkAssert(qpid::client::As
                 FieldTable::ValuePtr v = result.getArguments().get(i->first);
                 if (!v) {
                     throw AssertionFailed((boost::format("Option %1% not set for %2%") % i->first % name).str());
-                } else if (*i->second != *v) {
+                } else if (!areEquivalent(*i->second, *v)) {
                     throw AssertionFailed((boost::format("Option %1% does not match for %2%, expected %3%, got %4%")
                                           % i->first % name % *(i->second) % *v).str());
                 }
@@ -906,7 +912,7 @@ void Exchange::checkAssert(qpid::client:
                 FieldTable::ValuePtr v = result.getArguments().get(i->first);
                 if (!v) {
                     throw AssertionFailed((boost::format("Option %1% not set for %2%") % i->first % name).str());
-                } else if (*i->second != *v) {
+                } else if (!areEquivalent(*i->second, *v)) {
                     throw AssertionFailed((boost::format("Option %1% does not match for %2%, expected %3%, got %4%")
                                           % i->first % name % *(i->second) % *v).str());
                 }

Modified: qpid/trunk/qpid/cpp/src/tests/assertions.py
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/cpp/src/tests/assertions.py?rev=1653548&r1=1653547&r2=1653548&view=diff
==============================================================================
--- qpid/trunk/qpid/cpp/src/tests/assertions.py (original)
+++ qpid/trunk/qpid/cpp/src/tests/assertions.py Wed Jan 21 14:50:59 2015
@@ -177,3 +177,18 @@ class AssertionTests (VersionTest):
             assert False, "Expected assertion to fail on unspecified option"
         except AssertionFailed: None
         except MessagingError: None
+
+    def test_queue_autodelete_timeout(self):
+        name = str(uuid4())
+        # create subscription queue with 0-10 to be sure of name
+        ssn_0_10 = self.create_connection("amqp0-10", True).session()
+        ssn_0_10.receiver("amq.direct; {link:{name:%s,timeout:30}}" % name)
+        self.ssn.sender("%s; {assert:always, node:{x-declare:{arguments: {qpid.auto_delete_timeout: 30}}}}" % name)
+        ssn_0_10_other = self.create_connection("amqp0-10", True).session()
+        ssn_0_10_other.sender("%s; {assert:always, node:{x-declare:{arguments: {qpid.auto_delete_timeout: 30}}}}" % name)
+        try:
+            self.ssn.sender("%s; {assert:always, node:{x-declare:{arguments: {qpid.auto_delete_timeout: 60}}}}" % name)
+            ssn_0_10_other.sender("%s; {assert:always, node:{x-declare:{arguments: {qpid.auto_delete_timeout: 60}}}}" % name)
+            assert False, "Expected assertion to fail for auto_delete_timeout"
+        except AssertionFailed: None
+        except MessagingError: None



---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@qpid.apache.org
For additional commands, e-mail: commits-help@qpid.apache.org