Example #1
0
    def test_sync_nodes(self):
        broker = BrokerServer.create(ADDRESS, node_client=MockNodeClient)
        broker.register_node(
            'some_id', 'some_address', wait_for_sync=False
        )

        d = broker.sync_nodes()
        d.addCallback(lambda suc: self.assertIsInstance(suc, Success))
        return d
Example #2
0
 def _create_n_register_node_for_operations(self):
     """ Heavily verbos method for creating a broker ready to be tested
         against the persistent operations (as in set/get/mget/etc)
     """
     broker = BrokerServer.create(ADDRESS, node_client=MockNodeClient)
     broker._distribute_to_nodes = Mock(return_value=defer.succeed(None))
     broker.register_node(
         'some_id', 'some_address', wait_for_sync=False
     )
     return broker
Example #3
0
    def test__take_snapshots(self):
        broker = BrokerServer.create(ADDRESS, node_client=MockNodeClient)
        broker.sync_nodes = Mock(side_affect=lambda: defer.succeed(None))
        broker.register_node(
            'some_id', 'some_address', wait_for_sync=False
        )

        d = broker._take_snapshots()
        d.addCallback(self.assertEqual, {'some': 'data'})
        return d
Example #4
0
    def test_ping_nodes(self):
        MockNodeClient.ping = Mock(
            side_affect=lambda: defer.succeed(None),
            return_value=defer.succeed(None)
        )
        broker = BrokerServer.create(ADDRESS, node_client=MockNodeClient)
        broker.register_node(
            'some_id', 'some_address', wait_for_sync=False
        )

        broker.ping_nodes()
        self.assertTrue(MockNodeClient.ping.called)
Example #5
0
    def test__sync_nodes(self):
        MockNodeClient.sync = Mock(
            side_affect=lambda: defer.succeed(None),
            return_value=defer.succeed(None)
        )
        broker = BrokerServer.create(ADDRESS, node_client=MockNodeClient)
        broker.register_node(
            'some_id', 'some_address', wait_for_sync=False
        )

        d = broker._sync_nodes({'key1': 'value1', 'key2': 'value2'})
        d.addCallback(lambda _: self.assertTrue(MockNodeClient.sync.called))
        return d
Example #6
0
 def test_create(self):
     allowed_methods = (
         'register_node', 'set', 'get', 'mget',
         'delete', 'keys', 'sync_nodes'
     )
     server = BrokerServer.create(ADDRESS)
     self.assertEqual(server.__allowed_methods__, allowed_methods)
     self.assertEqual(server.__serializer__, MockJSONSerializer)
     self.assertIsInstance(server.factory, ZmqFactory)
     self.assertIsInstance(server.endpoints[0], ZmqEndpoint)
     self.assertEqual(server._node_client, NodeClient)
     self.assertEqual(server._hash_class, ConsistentHash)
     self.assertEqual(server._ping_timeout, 1)
     self.assertEqual(server._ping_frequencey, 5)
     self.assertEqual(server.num_nodes, 0)
     server.shutdown()
Example #7
0
    def test_register_node(self):

        def verify_result(result):
            self.assertIsInstance(result, Success)
            self.assertTrue(result.success)
            self.assertEqual(result.message, None)

        broker = BrokerServer.create(ADDRESS, node_client=MockNodeClient)
        d = broker.register_node(
            'some_id', 'some_address', wait_for_sync=False
        )
        d.addCallback(verify_result)
        d.addCallback(lambda _: self.assertEqual(broker.num_nodes, 1))
        d.addCallback(lambda _: self.assertIsInstance(
            broker._connections['some_id'], MockNodeClient
        ))
        return d
Example #8
0
    def test_register_node_over_one_wait_for_sync(self):

        def verify_result(result):
            self.assertIsInstance(result, Success)
            self.assertTrue(result.success)
            self.assertEqual(result.message, None)

        dlist = []
        broker = BrokerServer.create(ADDRESS, node_client=MockNodeClient)
        broker.sync_nodes = Mock(
            side_affect=lambda: defer.succeed(None),
            return_value=defer.succeed(None)
        )

        d1 = broker.register_node(
            'some_id1', 'some_address1', wait_for_sync=True
        )
        d1.addCallback(verify_result)
        d1.addCallback(lambda _: self.assertEqual(broker.num_nodes, 1))
        d1.addCallback(lambda _: self.assertEqual(len(broker._connections), 1))
        d1.addCallback(lambda _: self.assertFalse(broker.sync_nodes.called))
        dlist.append(d1)

        d2 = broker.register_node(
            'some_id2', 'some_address2', wait_for_sync=True
        )
        d2.addCallback(verify_result)
        d2.addCallback(lambda _: self.assertEqual(broker.num_nodes, 2))
        d2.addCallback(lambda _: self.assertEqual(len(broker._connections), 2))
        d2.addCallback(lambda _: self.assertTrue(broker.sync_nodes.called))
        dlist.append(d2)

        d3 = broker.register_node(
            'some_id3', 'some_address3', wait_for_sync=True
        )
        d3.addCallback(verify_result)
        d3.addCallback(lambda _: self.assertEqual(broker.num_nodes, 3))
        d3.addCallback(lambda _: self.assertEqual(len(broker._connections), 3))
        d3.addCallback(lambda _: self.assertTrue(broker.sync_nodes.called))
        dlist.append(d3)

        d = defer.DeferredList(dlist)
        return d
Example #9
0
    def test__distribute_to_nodes(self):
        MockNodeClient.sync = Mock(
            side_affect=lambda: defer.succeed(None),
            return_value=defer.succeed(True)
        )
        MockNodeClient.set = Mock(
            side_affect=lambda: defer.succeed(None),
            return_value=defer.succeed(True)
        )
        broker = BrokerServer.create(ADDRESS, node_client=MockNodeClient)
        broker.register_node(
            'some_id1', 'some_address1', wait_for_sync=False
        )
        broker.register_node(
            'some_id2', 'some_address2', wait_for_sync=False
        )

        main_node = broker._connections['some_id1']
        d = broker._distribute_to_nodes('set', main_node)
        d.addCallback(
            lambda _: self.assertEqual(MockNodeClient.set.call_count, 2)
        )
        return d
Example #10
0
 def test_delete_zero_nodes(self):
     broker = BrokerServer.create(ADDRESS, node_client=MockNodeClient)
     self.assertRaises(ZeroNodes, broker.set, 'some_key')
Example #11
0
 def test_sync_zero_nodes(self):
     broker = BrokerServer.create(ADDRESS, node_client=MockNodeClient)
     self.assertRaises(ZeroNodes, broker.sync_nodes)
Example #12
0
 def test_unregister_node_zero_nodes(self):
     broker = BrokerServer.create(ADDRESS, node_client=MockNodeClient)
     self.assertRaises(ZeroNodes, broker.unregister_node, 'some_id')