예제 #1
0
 def setUp(self):
     NeoUnitTestBase.setUp(self)
     config = self.getStorageConfiguration(master_number=1)
     self.app = Application(config)
     self.app.name = 'NEO'
     self.app.ready = True
     self.app.pt = PartitionTable(4, 1)
     self.identification = IdentificationHandler(self.app)
예제 #2
0
 def setUp(self):
     NeoUnitTestBase.setUp(self)
     config = self.getStorageConfiguration(master_number=1)
     self.app = Application(config)
     self.app.name = 'NEO'
     self.app.ready = True
     self.app.pt = PartitionTable(4, 1)
     self.identification = IdentificationHandler(self.app)
예제 #3
0
class StorageIdentificationHandlerTests(NeoUnitTestBase):
    def setUp(self):
        NeoUnitTestBase.setUp(self)
        config = self.getStorageConfiguration(master_number=1)
        self.app = Application(config)
        self.app.name = 'NEO'
        self.app.ready = True
        self.app.pt = PartitionTable(4, 1)
        self.identification = IdentificationHandler(self.app)

    def _tearDown(self, success):
        self.app.close()
        del self.app
        super(StorageIdentificationHandlerTests, self)._tearDown(success)

    def test_requestIdentification1(self):
        """ nodes are rejected during election or if unknown storage """
        self.app.ready = False
        self.assertRaises(
            NotReadyError,
            self.identification.requestIdentification,
            self.getFakeConnection(),
            NodeTypes.CLIENT,
            self.getClientUUID(),
            None,
            self.app.name,
        )
        self.app.ready = True
        self.assertRaises(
            NotReadyError,
            self.identification.requestIdentification,
            self.getFakeConnection(),
            NodeTypes.STORAGE,
            self.getStorageUUID(),
            None,
            self.app.name,
        )

    def test_requestIdentification3(self):
        """ broken nodes must be rejected """
        uuid = self.getClientUUID()
        conn = self.getFakeConnection(uuid=uuid)
        node = self.app.nm.createClient(uuid=uuid)
        node.setBroken()
        self.assertRaises(
            BrokenNodeDisallowedError,
            self.identification.requestIdentification,
            conn,
            NodeTypes.CLIENT,
            uuid,
            None,
            self.app.name,
        )

    def test_requestIdentification2(self):
        """ accepted client must be connected and running """
        uuid = self.getClientUUID()
        conn = self.getFakeConnection(uuid=uuid)
        node = self.app.nm.createClient(uuid=uuid)
        master = (self.local_ip, 3000)
        self.app.master_node = Mock({
            'getAddress': master,
        })
        self.identification.requestIdentification(conn, NodeTypes.CLIENT, uuid,
                                                  None, self.app.name)
        self.assertTrue(node.isRunning())
        self.assertTrue(node.isConnected())
        self.assertEqual(node.getUUID(), uuid)
        self.assertTrue(node.getConnection() is conn)
        args = self.checkAcceptIdentification(conn, decode=True)
        node_type, address, _np, _nr, _uuid, _master, _master_list = args
        self.assertEqual(node_type, NodeTypes.STORAGE)
        self.assertEqual(address, None)
        self.assertEqual(_uuid, uuid)
        self.assertEqual(_master, master)
예제 #4
0
class StorageIdentificationHandlerTests(NeoUnitTestBase):

    def setUp(self):
        NeoUnitTestBase.setUp(self)
        config = self.getStorageConfiguration(master_number=1)
        self.app = Application(config)
        self.app.name = 'NEO'
        self.app.ready = True
        self.app.pt = PartitionTable(4, 1)
        self.identification = IdentificationHandler(self.app)

    def _tearDown(self, success):
        self.app.close()
        del self.app
        super(StorageIdentificationHandlerTests, self)._tearDown(success)

    def test_requestIdentification1(self):
        """ nodes are rejected during election or if unknown storage """
        self.app.ready = False
        self.assertRaises(
                NotReadyError,
                self.identification.requestIdentification,
                self.getFakeConnection(),
                NodeTypes.CLIENT,
                self.getClientUUID(),
                None,
                self.app.name,
        )
        self.app.ready = True
        self.assertRaises(
                NotReadyError,
                self.identification.requestIdentification,
                self.getFakeConnection(),
                NodeTypes.STORAGE,
                self.getStorageUUID(),
                None,
                self.app.name,
        )

    def test_requestIdentification3(self):
        """ broken nodes must be rejected """
        uuid = self.getClientUUID()
        conn = self.getFakeConnection(uuid=uuid)
        node = self.app.nm.createClient(uuid=uuid)
        node.setBroken()
        self.assertRaises(BrokenNodeDisallowedError,
                self.identification.requestIdentification,
                conn,
                NodeTypes.CLIENT,
                uuid,
                None,
                self.app.name,
        )

    def test_requestIdentification2(self):
        """ accepted client must be connected and running """
        uuid = self.getClientUUID()
        conn = self.getFakeConnection(uuid=uuid)
        node = self.app.nm.createClient(uuid=uuid)
        master = (self.local_ip, 3000)
        self.app.master_node = Mock({
          'getAddress': master,
        })
        self.identification.requestIdentification(conn, NodeTypes.CLIENT, uuid,
                None, self.app.name)
        self.assertTrue(node.isRunning())
        self.assertTrue(node.isConnected())
        self.assertEqual(node.getUUID(), uuid)
        self.assertTrue(node.getConnection() is conn)
        args = self.checkAcceptIdentification(conn, decode=True)
        node_type, address, _np, _nr, _uuid, _master, _master_list = args
        self.assertEqual(node_type, NodeTypes.STORAGE)
        self.assertEqual(address, None)
        self.assertEqual(_uuid, uuid)
        self.assertEqual(_master, master)