[Neo-report] r1866 gregory - in /trunk/neo: storage/app.py tests/storage/testStorageApp.py

nobody at svn.erp5.org nobody at svn.erp5.org
Fri Feb 26 14:04:18 CET 2010


Author: gregory
Date: Fri Feb 26 14:04:18 2010
New Revision: 1866

Log:
Bug fix: Queued events must have the right peer id on their connection.

When called, queued events were using the last peer message id instead of
having the good one on their connection when recalled, so answers made from
queued events was using the wrong message id.

Modified:
    trunk/neo/storage/app.py
    trunk/neo/tests/storage/testStorageApp.py

Modified: trunk/neo/storage/app.py
==============================================================================
--- trunk/neo/storage/app.py [iso-8859-1] (original)
+++ trunk/neo/storage/app.py [iso-8859-1] Fri Feb 26 14:04:18 2010
@@ -263,15 +263,17 @@
             if not node.isHidden():
                 break
 
-    def queueEvent(self, some_callable, *args, **kwargs):
-        self.event_queue.append((some_callable, args, kwargs))
+    def queueEvent(self, some_callable, conn, *args, **kwargs):
+        msg_id = conn.getPeerId()
+        self.event_queue.append((some_callable, msg_id, conn, args, kwargs))
 
     def executeQueuedEvents(self):
         l = len(self.event_queue)
         p = self.event_queue.popleft
         for i in xrange(l):
-            some_callable, args, kwargs = p()
-            some_callable(*args, **kwargs)
+            some_callable, msg_id, conn, args, kwargs = p()
+            conn.setPeerId(msg_id)
+            some_callable(conn, *args, **kwargs)
 
     def shutdown(self, erase=False):
         """Close all connections and exit"""

Modified: trunk/neo/tests/storage/testStorageApp.py
==============================================================================
--- trunk/neo/tests/storage/testStorageApp.py [iso-8859-1] (original)
+++ trunk/neo/tests/storage/testStorageApp.py [iso-8859-1] Fri Feb 26 14:04:18 2010
@@ -122,23 +122,27 @@
 
     def test_02_queueEvent(self):
         self.assertEqual(len(self.app.event_queue), 0)
-        event = Mock({"getId": 1325136})
-        self.app.queueEvent(event, "test", key="value")
+        msg_id = 1325136
+        event = Mock({'__repr__': 'event'})
+        conn = Mock({'__repr__': 'conn', 'getPeerId': msg_id})
+        self.app.queueEvent(event, conn, "test", key="value")
         self.assertEqual(len(self.app.event_queue), 1)
-        event, args, kw = self.app.event_queue[0]
-        self.assertEqual(event.getId(), 1325136)
+        _event, _msg_id, _conn, args, kw = self.app.event_queue[0]
+        self.assertEqual(msg_id, _msg_id)
         self.assertEqual(len(args), 1)
         self.assertEqual(args[0], "test")
         self.assertEqual(kw, {"key" : "value"})
 
     def test_03_executeQueuedEvents(self):
         self.assertEqual(len(self.app.event_queue), 0)
-        event = Mock({"getId": 1325136})
-        self.app.queueEvent(event, "test", key="value")
+        msg_id = 1325136
+        event = Mock({'__repr__': 'event'})
+        conn = Mock({'__repr__': 'conn', 'getPeerId': msg_id})
+        self.app.queueEvent(event, conn, "test", key="value")
         self.app.executeQueuedEvents()
         self.assertEquals(len(event.mockGetNamedCalls("__call__")), 1)
         call = event.mockGetNamedCalls("__call__")[0]
-        params = call.getParam(0)
+        params = call.getParam(1)
         self.assertEqual(params, "test")
         params = call.kwparams
         self.assertEqual(params, {'key': 'value'})





More information about the Neo-report mailing list