[Neo-report] r2216 vincent - in /trunk/neo: master/ tests/master/

nobody at svn.erp5.org nobody at svn.erp5.org
Mon Aug 23 16:36:40 CEST 2010


Author: vincent
Date: Mon Aug 23 16:36:37 2010
New Revision: 2216

Log:
Factorise code handling expected answers.

Also, stop using a dict in an inefficient way, and replace it by a set.

Modified:
    trunk/neo/master/verification.py
    trunk/neo/tests/master/testVerification.py

Modified: trunk/neo/master/verification.py
==============================================================================
--- trunk/neo/master/verification.py [iso-8859-1] (original)
+++ trunk/neo/master/verification.py [iso-8859-1] Mon Aug 23 16:36:37 2010
@@ -41,24 +41,40 @@ class VerificationManager(BaseServiceHan
         BaseServiceHandler.__init__(self, app)
         self._oid_set = set()
         self._tid_set = set()
-        self._uuid_dict = {}
+        self._uuid_set = set()
         self._object_present = False
 
     def _askStorageNodesAndWait(self, packet, node_list):
         poll = self.app.em.poll
         operational = self.app.pt.operational
-        uuid_dict = self._uuid_dict
-        uuid_dict.clear()
+        uuid_set = self._uuid_set
+        uuid_set.clear()
         for node in node_list:
-            uuid_dict[node.getUUID()] = False
+            uuid_set.add(node.getUUID())
             node.ask(packet)
         while True:
             poll(1)
             if not operational():
                 raise VerificationFailure
-            if False not in uuid_dict.values():
+            if not uuid_set:
                 break
 
+    def _gotAnswerFrom(self, uuid):
+        """
+        Returns True if answer from given uuid is waited upon by
+        _askStorageNodesAndWait, False otherwise.
+
+        Also, mark this uuid as having answered, so it stops being waited upon
+        by _askStorageNodesAndWait.
+        """
+        try:
+            self._uuid_set.remove(uuid)
+        except KeyError:
+            result = False
+        else:
+            result = True
+        return result
+
     def getHandler(self):
         return self
 
@@ -179,18 +195,15 @@ class VerificationManager(BaseServiceHan
     def answerUnfinishedTransactions(self, conn, tid_list):
         uuid = conn.getUUID()
         logging.info('got unfinished transactions %s from %r', tid_list, conn)
-        if self._uuid_dict.get(uuid, True):
-            # No interest.
+        if not self._gotAnswerFrom(uuid):
             return
         self._tid_set.update(tid_list)
-        self._uuid_dict[uuid] = True
 
     def answerTransactionInformation(self, conn, tid,
                                            user, desc, ext, packed, oid_list):
         uuid = conn.getUUID()
         app = self.app
-        if self._uuid_dict.get(uuid, True):
-            # No interest.
+        if not self._gotAnswerFrom(uuid):
             return
         oid_set = set(oid_list)
         if self._oid_set is None:
@@ -201,34 +214,26 @@ class VerificationManager(BaseServiceHan
             self._oid_set.update(oid_set)
         elif self._oid_set != oid_set:
             self._oid_set = None
-        self._uuid_dict[uuid] = True
 
     def tidNotFound(self, conn, message):
         uuid = conn.getUUID()
         logging.info('TID not found: %s', message)
-        if self._uuid_dict.get(uuid, True):
-            # No interest.
+        if not self._gotAnswerFrom(uuid):
             return
         self._oid_set = None
-        self._uuid_dict[uuid] = True
 
     def answerObjectPresent(self, conn, oid, tid):
         uuid = conn.getUUID()
         logging.info('object %s:%s found', dump(oid), dump(tid))
-        if self._uuid_dict.get(uuid, True):
-            # No interest.
-            return
-        self._uuid_dict[uuid] = True
+        self._gotAnswerFrom(uuid)
 
     def oidNotFound(self, conn, message):
         uuid = conn.getUUID()
         logging.info('OID not found: %s', message)
         app = self.app
-        if self._uuid_dict.get(uuid, True):
-            # No interest.
+        if not self._gotAnswerFrom(uuid):
             return
         app.object_present = False
-        self._uuid_dict[uuid] = True
 
     def connectionCompleted(self, conn):
         pass

Modified: trunk/neo/tests/master/testVerification.py
==============================================================================
--- trunk/neo/tests/master/testVerification.py [iso-8859-1] (original)
+++ trunk/neo/tests/master/testVerification.py [iso-8859-1] Mon Aug 23 16:36:37 2010
@@ -123,19 +123,18 @@ class MasterVerificationTests(NeoTestBas
         uuid = self.identifyToMasterNode()
         # do nothing
         conn = self.getFakeConnection(uuid, self.storage_address)
-        self.assertEquals(len(self.verification._uuid_dict), 0)
-        self.verification._uuid_dict[uuid]  = True
+        self.assertEquals(len(self.verification._uuid_set), 0)
         self.assertEquals(len(self.verification._tid_set), 0)
         new_tid = self.getNextTID()
         verification.answerUnfinishedTransactions(conn, [new_tid])
         self.assertEquals(len(self.verification._tid_set), 0)
         # update dict
         conn = self.getFakeConnection(uuid, self.storage_address)
-        self.verification._uuid_dict[uuid]  = False
+        self.verification._uuid_set.add(uuid)
         self.assertEquals(len(self.verification._tid_set), 0)
         new_tid = self.getNextTID(new_tid)
         verification.answerUnfinishedTransactions(conn, [new_tid,])
-        self.assertTrue(self.verification._uuid_dict[uuid])
+        self.assertTrue(uuid not in self.verification._uuid_set)
         self.assertEquals(len(self.verification._tid_set), 1)
         self.assertTrue(new_tid in self.verification._tid_set)
 
@@ -144,8 +143,8 @@ class MasterVerificationTests(NeoTestBas
         uuid = self.identifyToMasterNode()
         # do nothing, as unfinished_oid_set is None
         conn = self.getFakeConnection(uuid, self.storage_address)
-        self.assertEquals(len(self.verification._uuid_dict), 0)
-        self.verification._uuid_dict[uuid]  = False
+        self.assertEquals(len(self.verification._uuid_set), 0)
+        self.verification._uuid_set.add(uuid)
         self.verification._oid_set  = None
         new_tid = self.getNextTID()
         new_oid = self.getOID(1)
@@ -154,8 +153,7 @@ class MasterVerificationTests(NeoTestBas
         self.assertEquals(self.verification._oid_set, None)
         # do nothing as asking_uuid_dict is True
         conn = self.getFakeConnection(uuid, self.storage_address)
-        self.assertEquals(len(self.verification._uuid_dict), 1)
-        self.verification._uuid_dict[uuid]  = True
+        self.assertEquals(len(self.verification._uuid_set), 0)
         self.verification._oid_set  = set()
         self.assertEquals(len(self.verification._oid_set), 0)
         verification.answerTransactionInformation(conn, new_tid,
@@ -163,8 +161,8 @@ class MasterVerificationTests(NeoTestBas
         self.assertEquals(len(self.verification._oid_set), 0)
         # do work
         conn = self.getFakeConnection(uuid, self.storage_address)
-        self.assertEquals(len(self.verification._uuid_dict), 1)
-        self.verification._uuid_dict[uuid]  = False
+        self.assertEquals(len(self.verification._uuid_set), 0)
+        self.verification._uuid_set.add(uuid)
         self.assertEquals(len(self.verification._oid_set), 0)
         verification.answerTransactionInformation(conn, new_tid,
                 "user", "desc", "ext", False, [new_oid,])
@@ -172,8 +170,8 @@ class MasterVerificationTests(NeoTestBas
         self.assertTrue(new_oid in self.verification._oid_set)
         # do not work as oid is diff
         conn = self.getFakeConnection(uuid, self.storage_address)
-        self.assertEquals(len(self.verification._uuid_dict), 1)
-        self.verification._uuid_dict[uuid]  = False
+        self.assertEquals(len(self.verification._uuid_set), 0)
+        self.verification._uuid_set.add(uuid)
         self.assertEquals(len(self.verification._oid_set), 1)
         new_oid = self.getOID(2)
         verification.answerTransactionInformation(conn, new_tid,
@@ -185,15 +183,14 @@ class MasterVerificationTests(NeoTestBas
         uuid = self.identifyToMasterNode()
         # do nothing as asking_uuid_dict is True
         conn = self.getFakeConnection(uuid, self.storage_address)
-        self.assertEquals(len(self.verification._uuid_dict), 0)
-        self.verification._uuid_dict[uuid]  = True
+        self.assertEquals(len(self.verification._uuid_set), 0)
         self.verification._oid_set  = []
         verification.tidNotFound(conn, "msg")
         self.assertNotEqual(self.verification._oid_set, None)
         # do work as asking_uuid_dict is False
         conn = self.getFakeConnection(uuid, self.storage_address)
-        self.assertEquals(len(self.verification._uuid_dict), 1)
-        self.verification._uuid_dict[uuid]  = False
+        self.assertEquals(len(self.verification._uuid_set), 0)
+        self.verification._uuid_set.add(uuid)
         self.verification._oid_set  = []
         verification.tidNotFound(conn, "msg")
         self.assertEqual(self.verification._oid_set, None)
@@ -205,35 +202,33 @@ class MasterVerificationTests(NeoTestBas
         new_tid = self.getNextTID()
         new_oid = self.getOID(1)
         conn = self.getFakeConnection(uuid, self.storage_address)
-        self.assertEquals(len(self.verification._uuid_dict), 0)
-        self.verification._uuid_dict[uuid]  = True
+        self.assertEquals(len(self.verification._uuid_set), 0)
         verification.answerObjectPresent(conn, new_oid, new_tid)
         # do work
         conn = self.getFakeConnection(uuid, self.storage_address)
-        self.assertEquals(len(self.verification._uuid_dict), 1)
-        self.verification._uuid_dict[uuid]  = False
+        self.assertEquals(len(self.verification._uuid_set), 0)
+        self.verification._uuid_set.add(uuid)
         verification.answerObjectPresent(conn, new_oid, new_tid)
-        self.assertTrue(self.verification._uuid_dict[uuid])
+        self.assertTrue(uuid not in self.verification._uuid_set)
 
     def test_15_oidNotFound(self):
         verification = self.verification
         uuid = self.identifyToMasterNode()
         # do nothing as asking_uuid_dict is True
         conn = self.getFakeConnection(uuid, self.storage_address)
-        self.assertEquals(len(self.verification._uuid_dict), 0)
-        self.verification._uuid_dict[uuid]  = True
+        self.assertEquals(len(self.verification._uuid_set), 0)
         self.app.object_present = True
         self.assertTrue(self.app.object_present)
         verification.oidNotFound(conn, "msg")
         self.assertTrue(self.app.object_present)
         # do work as asking_uuid_dict is False
         conn = self.getFakeConnection(uuid, self.storage_address)
-        self.assertEquals(len(self.verification._uuid_dict), 1)
-        self.verification._uuid_dict[uuid]  = False
+        self.assertEquals(len(self.verification._uuid_set), 0)
+        self.verification._uuid_set.add(uuid)
         self.assertTrue(self.app.object_present)
         verification.oidNotFound(conn, "msg")
         self.assertFalse(self.app.object_present)
-        self.assertTrue(self.verification._uuid_dict[uuid ])
+        self.assertTrue(uuid not in self.verification._uuid_set)
 
 if __name__ == '__main__':
     unittest.main()





More information about the Neo-report mailing list