You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@qpid.apache.org by rh...@apache.org on 2010/03/05 01:50:58 UTC

svn commit: r919251 - in /qpid/trunk/qpid/python/qpid/tests/messaging: __init__.py endpoints.py message.py

Author: rhs
Date: Fri Mar  5 00:50:57 2010
New Revision: 919251

URL: http://svn.apache.org/viewvc?rev=919251&view=rev
Log:
made drain work on messages as well as content

Modified:
    qpid/trunk/qpid/python/qpid/tests/messaging/__init__.py
    qpid/trunk/qpid/python/qpid/tests/messaging/endpoints.py
    qpid/trunk/qpid/python/qpid/tests/messaging/message.py

Modified: qpid/trunk/qpid/python/qpid/tests/messaging/__init__.py
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/python/qpid/tests/messaging/__init__.py?rev=919251&r1=919250&r2=919251&view=diff
==============================================================================
--- qpid/trunk/qpid/python/qpid/tests/messaging/__init__.py (original)
+++ qpid/trunk/qpid/python/qpid/tests/messaging/__init__.py Fri Mar  5 00:50:57 2010
@@ -71,15 +71,45 @@
     assert msg.content == content, "expected %r, got %r" % (content, msg.content)
 
   def drain(self, rcv, limit=None, timeout=0, expected=None):
-    contents = []
+    messages = []
     try:
-      while limit is None or len(contents) < limit:
-        contents.append(rcv.fetch(timeout=timeout).content)
+      while limit is None or len(messages) < limit:
+        messages.append(rcv.fetch(timeout=timeout))
     except Empty:
       pass
     if expected is not None:
-      assert expected == contents, "expected %s, got %s" % (expected, contents)
-    return contents
+      self.assertEchos(expected, messages)
+    return messages
+
+  def diff(self, m1, m2):
+    result = {}
+    for attr in ("id", "subject", "user_id", "to", "reply_to",
+                 "correlation_id", "durable", "priority", "ttl",
+                 "properties", "content_type", "content"):
+      a1 = getattr(m1, attr)
+      a2 = getattr(m2, attr)
+      if a1 != a2:
+        result[attr] = (a1, a2)
+    return result
+
+  def assertEcho(self, msg, echo):
+    if not isinstance(msg, Message) or not isinstance(echo, Message):
+      if isinstance(msg, Message):
+        msg = msg.content
+      if isinstance(echo, Message):
+        echo = echo.content
+        assert msg == echo, "expected %s, got %s" % (msg, echo)
+    else:
+      delta = self.diff(msg, echo)
+      mttl, ettl = delta.pop("ttl", (0, 0))
+      assert mttl is not None and ettl is not None, "%s, %s" % (mttl, ettl)
+      assert mttl >= ettl, "%s, %s" % (mttl, ettl)
+      assert not delta, "expected %s, got %s, delta %s" % (msg, echo, delta)
+
+  def assertEchos(self, msgs, echoes):
+    assert len(msgs) == len(echoes), "%s, %s" % (msgs, echoes)
+    for m, e in zip(msgs, echoes):
+      self.assertEcho(m, e)
 
   def assertEmpty(self, rcv):
     contents = self.drain(rcv)

Modified: qpid/trunk/qpid/python/qpid/tests/messaging/endpoints.py
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/python/qpid/tests/messaging/endpoints.py?rev=919251&r1=919250&r2=919251&view=diff
==============================================================================
--- qpid/trunk/qpid/python/qpid/tests/messaging/endpoints.py (original)
+++ qpid/trunk/qpid/python/qpid/tests/messaging/endpoints.py Fri Mar  5 00:50:57 2010
@@ -255,10 +255,10 @@
     if commit:
       txssn.commit()
       self.assertEmpty(rcv)
-      assert contents == self.drain(copy_rcv)
+      self.drain(copy_rcv, expected=contents)
     else:
       txssn.rollback()
-      assert contents == self.drain(rcv)
+      self.drain(rcv, expected=contents)
       self.assertEmpty(copy_rcv)
     self.ssn.acknowledge()
 
@@ -277,7 +277,7 @@
 
     if commit:
       txssn.commit()
-      assert contents == self.drain(rcv)
+      self.drain(rcv, expected=contents)
       self.ssn.acknowledge()
     else:
       txssn.rollback()
@@ -298,17 +298,16 @@
     txrcv = txssn.receiver(TX_ACK_QC)
     self.assertEmpty(txrcv)
     contents = self.send(self.ssn, TX_ACK_QC, "txTestAck", 3)
-    assert contents == self.drain(txrcv)
+    self.drain(txrcv, expected=contents)
 
     if commit:
       txssn.acknowledge()
     else:
       txssn.rollback()
-      drained = self.drain(txrcv)
-      assert contents == drained, "expected %s, got %s" % (contents, drained)
+      self.drain(txrcv, expected=contents)
       txssn.acknowledge()
       txssn.rollback()
-      assert contents == self.drain(txrcv)
+      self.drain(txrcv, expected=contents)
       txssn.commit() # commit without ack
       self.assertEmpty(txrcv)
 
@@ -316,7 +315,7 @@
 
     txssn = self.conn.session(transactional=True)
     txrcv = txssn.receiver(TX_ACK_QC)
-    assert contents == self.drain(txrcv)
+    self.drain(txrcv, expected=contents)
     txssn.acknowledge()
     txssn.commit()
     rcv = self.ssn.receiver(TX_ACK_QD)
@@ -838,8 +837,7 @@
     msgs = [self.content("asyncTest", i) for i in range(15)]
     for m in msgs:
       self.snd.send(m, sync=False)
-    drained = self.drain(self.rcv, timeout=self.delay())
-    assert msgs == drained, "expected %s, got %s" % (msgs, drained)
+    self.drain(self.rcv, timeout=self.delay(), expected=msgs)
     self.ssn.acknowledge()
 
   def testSendAsyncCapacity0(self):

Modified: qpid/trunk/qpid/python/qpid/tests/messaging/message.py
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/python/qpid/tests/messaging/message.py?rev=919251&r1=919250&r2=919251&view=diff
==============================================================================
--- qpid/trunk/qpid/python/qpid/tests/messaging/message.py (original)
+++ qpid/trunk/qpid/python/qpid/tests/messaging/message.py Fri Mar  5 00:50:57 2010
@@ -68,23 +68,7 @@
   def check(self, msg):
     self.snd.send(msg)
     echo = self.rcv.fetch(0)
-
-    assert msg.id == echo.id
-    assert msg.subject == echo.subject
-    assert msg.user_id == echo.user_id
-    assert msg.to == echo.to
-    assert msg.reply_to == echo.reply_to
-    assert msg.correlation_id == echo.correlation_id
-    assert msg.durable == echo.durable
-    assert msg.priority == echo.priority
-    if msg.ttl is None:
-      assert echo.ttl is None
-    else:
-      assert msg.ttl >= echo.ttl
-    assert msg.properties == echo.properties
-    assert msg.content_type == echo.content_type
-    assert msg.content == echo.content, "%s, %s" % (msg, echo)
-
+    self.assertEcho(msg, echo)
     self.ssn.acknowledge(echo)
 
   def testStringContent(self):



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