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

nobody at svn.erp5.org nobody at svn.erp5.org
Fri Dec 24 23:56:54 CET 2010


Author: vincent
Date: Fri Dec 24 23:56:54 2010
New Revision: 2574

Log:
Restore msg id.

This fixes cases where storage tries to answer a request after executing
queued events. This cannto happen with current code, but will happen in
near future.

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 Dec 24 23:56:54 2010
@@ -329,8 +329,10 @@ class Application(object):
             some_callable, msg_id, conn, args = p()
             if conn.isAborted() or conn.isClosed():
                 continue
+            orig_msg_id = conn.getPeerId()
             conn.setPeerId(msg_id)
             some_callable(conn, *args)
+            conn.setPeerId(orig_msg_id)
 
     def logQueuedEvents(self):
         if self.event_queue is None:

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 Dec 24 23:56:54 2010
@@ -16,7 +16,7 @@
 # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
 
 import unittest
-from mock import Mock
+from mock import Mock, ReturnValues
 from neo.tests import NeoUnitTestBase
 from neo.storage.app import Application
 from neo.protocol import CellStates
@@ -131,8 +131,9 @@ class StorageAppTests(NeoUnitTestBase):
     def test_03_executeQueuedEvents(self):
         self.assertEqual(len(self.app.event_queue), 0)
         msg_id = 1325136
+        msg_id_2 = 1325137
         event = Mock({'__repr__': 'event'})
-        conn = Mock({'__repr__': 'conn', 'getPeerId': msg_id})
+        conn = Mock({'__repr__': 'conn', 'getPeerId': ReturnValues(msg_id, msg_id_2)})
         self.app.queueEvent(event, conn, "test")
         self.app.executeQueuedEvents()
         self.assertEquals(len(event.mockGetNamedCalls("__call__")), 1)
@@ -141,6 +142,10 @@ class StorageAppTests(NeoUnitTestBase):
         self.assertEqual(params, "test")
         params = call.kwparams
         self.assertEqual(params, {})
+        calls = conn.mockGetNamedCalls("setPeerId")
+        self.assertEqual(len(calls), 2)
+        calls[0].checkArgs(msg_id)
+        calls[1].checkArgs(msg_id_2)
 
 if __name__ == '__main__':
     unittest.main()




More information about the Neo-report mailing list