From 730ddc7d89b048baf1cc94b039c5d9fa8ebb902a Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Gr=C3=A9gory=20Wisniewski?= <gregory@nexedi.com>
Date: Fri, 17 Apr 2009 09:16:58 +0000
Subject: [PATCH] Fix some problems with storage/bootstrap.py tests * Unused
 code removed * Check when no packet should be sent * Add some comments

git-svn-id: https://svn.erp5.org/repos/neo/branches/prototype3@369 71dcc9de-d417-0410-9af5-da40c76e7ee4
---
 .../tests/testStorageBootstrapHandler.py      | 55 +++++++++++--------
 1 file changed, 32 insertions(+), 23 deletions(-)

diff --git a/neo/storage/tests/testStorageBootstrapHandler.py b/neo/storage/tests/testStorageBootstrapHandler.py
index d258b395..9791bac3 100644
--- a/neo/storage/tests/testStorageBootstrapHandler.py
+++ b/neo/storage/tests/testStorageBootstrapHandler.py
@@ -41,8 +41,7 @@ NEO_SQL_DATABASE = 'test_neo1'
 class StorageBootstrapTests(unittest.TestCase):
 
     def setUp(self):
-        logging.basicConfig(level = logging.DEBUG)
-        #logging.basicConfig(level = logging.ERROR)
+        #logging.basicConfig(level = logging.DEBUG)
         # create an application object
         config_file_text = """# Default parameters.
 [DEFAULT]
@@ -82,6 +81,7 @@ server: 127.0.0.1:10020
         cursor.execute('CREATE DATABASE %s' % (NEO_SQL_DATABASE, ))
         cursor.execute('GRANT ALL ON %s.* TO "%s"@"localhost" IDENTIFIED BY "%s"' % 
                 (NEO_SQL_DATABASE, NEO_SQL_USER, NEO_SQL_PASSWORD))
+        cursor.close()
         # config file
         tmp_id, self.tmp_path = mkstemp()
         tmp_file = os.fdopen(tmp_id, "w+b")
@@ -89,15 +89,9 @@ server: 127.0.0.1:10020
         tmp_file.close()
         self.app = Application(self.tmp_path, "storagetest")        
         for server in self.app.master_node_list:
-            master = MasterNode(server = server)
-            self.app.nm.add(master)
-        self.trying_master_node = master
+            self.app.nm.add(MasterNode(server = server))
+        self.trying_master_node = self.app.nm.getMasterNodeList()[0 ]
         self.bootstrap = BootstrapEventHandler(self.app)
-        self.app.unconnected_master_node_set = set()
-        self.app.negotiating_master_node_set = set()
-        for node in self.app.nm.getMasterNodeList():
-            self.app.unconnected_master_node_set.add(node.getServer())
-            node.setState(RUNNING_STATE)
         # define some variable to simulate client and storage node
         self.master_port = 10010
         self.storage_port = 10020
@@ -140,30 +134,37 @@ server: 127.0.0.1:10020
         self.assertTrue(isinstance(packet, Packet))
         self.assertEquals(packet.getType(), ERROR)
 
+    def checkNoPacketSent(self, conn):
+        # no packet should be sent
+        self.assertEquals(len(conn.mockGetNamedCalls('addPacket')), 0)
+
     # Tests
     def test_01_connectionCompleted(self):
+        # trying mn is None -> RuntimeError
         uuid = self.getNewUUID()
         conn = Mock({"getUUID" : uuid,
                      "getAddress" : ("127.0.0.1", self.master_port)})
         self.app.trying_master_node = None
         self.assertRaises(RuntimeError, self.bootstrap.connectionCompleted, conn)
+        # request identification
         self.app.trying_master_node = self.trying_master_node
         self.bootstrap.connectionCompleted(conn)
         self.checkCalledRequestNodeIdentification(conn)
 
     def test_02_connectionFailed(self):
+        # trying mn is None -> RuntimeError
         uuid = self.getNewUUID()
         conn = Mock({"getUUID" : uuid,
                      "getAddress" : ("127.0.0.1", self.master_port)})
         self.app.trying_master_node = None
         self.assertRaises(RuntimeError, self.bootstrap.connectionFailed, conn)
-
+        # the primary is dead
         self.app.trying_master_node = self.trying_master_node
         self.app.primary_master_node = self.app.trying_master_node
         self.bootstrap.connectionFailed(conn)
         self.assertEquals(self.app.primary_master_node, None)
         self.assertEquals(self.app.trying_master_node, None)
-
+        # a master is dead
         self.app.trying_master_node = self.trying_master_node
         master_node = MasterNode()
         self.app.primary_master_node = master_node
@@ -171,87 +172,94 @@ server: 127.0.0.1:10020
         self.assertEquals(self.app.primary_master_node, master_node)
         self.assertEquals(self.app.trying_master_node, None)
 
-    def test_03_connectionAcccepted(self):
+    def test_03_connectionAccepted(self):
+        # no packet sent
         uuid = self.getNewUUID()
+        em = Mock({ 'register': None})
         conn = Mock({"getUUID" : uuid,
                      "getAddress" : ("127.0.0.1", self.master_port),
                      "getHandler" : self.bootstrap,
+                     "getEventManager": em
         })
         connector = Mock({ })
         addr = ("127.0.0.1", self.master_port)
-        #self.bootstrap.connectionAccepted(conn, connector, addr)
-        # FIXME: nothing to test ?
+        self.bootstrap.connectionAccepted(conn, connector, addr)
+        self.assertEquals(len(connector.mockGetNamedCalls('getEventManager')), 0)
+        self.checkNoPacketSent(conn)
 
     def test_04_timeoutExpired(self):
         conn = Mock({
             "isListeningConnection": False, 
             "getAddress" : ("127.0.0.1", self.master_port),
         })
-        
+        # pmn connection has expired
         self.app.trying_master_node = self.trying_master_node
         self.app.trying_master_node = self.trying_master_node
         self.bootstrap.timeoutExpired(conn)
         self.assertEquals(self.app.primary_master_node, None)
         self.assertEquals(self.app.trying_master_node, None)
-
+        # another master connection as expired
         self.app.trying_master_node = self.trying_master_node
         master_node = MasterNode()
         self.app.primary_master_node = master_node
         self.bootstrap.connectionFailed(conn)
         self.assertEquals(self.app.primary_master_node, master_node)
         self.assertEquals(self.app.trying_master_node, None)
+        self.checkNoPacketSent(conn)
 
     def test_05_connectionClosed(self):
         conn = Mock({
             "isListeningConnection": False, 
             "getAddress" : ("127.0.0.1", self.master_port),
         })
-        
+        # pmn connection is closed
         self.app.trying_master_node = self.trying_master_node
         self.app.trying_master_node = self.trying_master_node
         self.bootstrap.connectionClosed(conn)
         self.assertEquals(self.app.primary_master_node, None)
         self.assertEquals(self.app.trying_master_node, None)
-
+        # another master node connection is closed
         self.app.trying_master_node = self.trying_master_node
         master_node = MasterNode()
         self.app.primary_master_node = master_node
         self.bootstrap.connectionClosed(conn)
         self.assertEquals(self.app.primary_master_node, master_node)
         self.assertEquals(self.app.trying_master_node, None)
+        self.checkNoPacketSent(conn)
 
     def test_06_peerBroken(self):
         conn = Mock({
             "isListeningConnection": False, 
             "getAddress" : ("127.0.0.1", self.master_port),
         })
-        
+        # the primary is broken 
         self.app.trying_master_node = self.trying_master_node
         self.app.trying_master_node = self.trying_master_node
         self.bootstrap.peerBroken(conn)
         self.assertEquals(self.app.primary_master_node, None)
         self.assertEquals(self.app.trying_master_node, None)
-
+        # another master is broken
         self.app.trying_master_node = self.trying_master_node
         master_node = MasterNode()
         self.app.primary_master_node = master_node
         self.bootstrap.peerBroken(conn)
         self.assertEquals(self.app.primary_master_node, master_node)
         self.assertEquals(self.app.trying_master_node, None)
+        self.checkNoPacketSent(conn)
 
     def test_07_handleNotReady(self):
         conn = Mock({
             "isListeningConnection": False, 
             "getAddress" : ("127.0.0.1", self.master_port),
         })
-        
+        # the primary is not ready 
         self.app.trying_master_node = self.trying_master_node
         self.app.trying_master_node = self.trying_master_node
         self.bootstrap.handleNotReady(conn, None, None)
         self.assertEquals(self.app.primary_master_node, None)
         self.assertEquals(self.app.trying_master_node, None)
         self.assertEquals(len(conn.mockGetNamedCalls("close")), 1)
-
+        # another master is not ready
         self.app.trying_master_node = self.trying_master_node
         master_node = MasterNode()
         self.app.primary_master_node = master_node
@@ -259,6 +267,7 @@ server: 127.0.0.1:10020
         self.assertEquals(self.app.primary_master_node, master_node)
         self.assertEquals(self.app.trying_master_node, None)
         self.assertEquals(len(conn.mockGetNamedCalls("close")), 2)
+        self.checkNoPacketSent(conn)
 
     def test_08_handleRequestNodeIdentification1(self):
         # client connection
-- 
2.30.9