コード例 #1
0
    def test__fetch_map_exception(self):
        conn1 = Mock()
        conn1.read.side_effect = PyRedisError
        conn2 = Mock()
        conn2.read.side_effect = PyRedisError
        conn3 = Mock()
        conn3.read.side_effect = PyRedisError

        self.connection_mock.side_effect = [conn1, conn2, conn3]

        clustermap = ClusterMap(self.seeds)

        self.assertRaises(PyRedisError, clustermap._fetch_map)

        self.connection_mock.assert_has_calls([
            call(host=u'host1', port=12345, encoding=u'utf-8'),
            call(host=u'host2', port=12345, encoding=u'utf-8'),
            call(host=u'host3', port=12345, encoding=u'utf-8')
        ])

        conn1.write.assert_called_with(u'CLUSTER', u'SLOTS')
        self.assertTrue(conn1.close.called)
        conn2.write.assert_called_with(u'CLUSTER', u'SLOTS')
        self.assertTrue(conn2.close.called)
        conn3.write.assert_called_with(u'CLUSTER', u'SLOTS')
        self.assertTrue(conn3.close.called)
コード例 #2
0
 def test_get_slot_slaves(self):
     clustermap = ClusterMap(self.seeds)
     clustermap._fetch_map = Mock()
     clustermap._fetch_map.return_value = self.map
     clustermap.update(clustermap.id)
     result = clustermap.get_slot(u'blarg')
     self.assertEqual(result, u'127.0.0.1_7001')
コード例 #3
0
ファイル: test_helper.py プロジェクト: alozovskoy/pyredis
 def test_update_slot(self):
     clustermap = ClusterMap(self.seeds)
     clustermap._update_slot(0, ['127.0.0.1', 7000], [['127.0.0.1', 7003]])
     self.assertEqual(clustermap._map[0], {
         'master': '127.0.0.1_7000',
         'slave': '127.0.0.1_7003'
     })
コード例 #4
0
 def __init__(self,
              seeds=None,
              database=0,
              password=None,
              encoding=None,
              slave_ok=False,
              conn_timeout=2,
              read_timeout=2,
              cluster_map=None):
     super(ClusterClient, self).__init__()
     if not bool(seeds) != bool(cluster_map):
         raise PyRedisError(
             u'Ether seeds or cluster_map has to be provided')
     self._cluster = True
     self._conns = dict()
     self._conn_timeout = conn_timeout
     self._read_timeout = read_timeout
     self._encoding = encoding
     self._password = password
     self._database = database
     self._slave_ok = slave_ok
     if cluster_map:
         self._map = cluster_map
     else:
         self._map = ClusterMap(seeds=seeds)
     self._map_id = self._map.id
コード例 #5
0
 def test_hosts_slaves(self):
     clustermap = ClusterMap(self.seeds)
     clustermap._fetch_map = Mock()
     clustermap._fetch_map.return_value = self.minimap
     clustermap.update(clustermap.id)
     self.assertEqual(
         (set([u'127.0.0.1_7003', u'127.0.0.1_7004', u'127.0.0.1_7005'])),
         clustermap.hosts(slave=True))
コード例 #6
0
 def test_hosts_master(self):
     clustermap = ClusterMap(self.seeds)
     clustermap._fetch_map = Mock()
     clustermap._fetch_map.return_value = self.minimap
     clustermap.update(clustermap.id)
     self.assertEqual(
         (set([u'127.0.0.1_7000', u'127.0.0.1_7001', u'127.0.0.1_7002'])),
         clustermap.hosts())
コード例 #7
0
    def test__fetch_map_first_try_ok(self):
        conn1 = Mock()
        conn1.read.return_value = self.map

        self.connection_mock.return_value = conn1

        clustermap = ClusterMap(self.seeds)

        result = clustermap._fetch_map()

        self.assertEqual(result, self.map)
        conn1.write.assert_called_with(u'CLUSTER', u'SLOTS')
        self.assertTrue(conn1.close.called)
コード例 #8
0
    def test__fetch_map_second_try_ok(self):
        conn1 = Mock()
        conn1.read.side_effect = PyRedisError
        conn2 = Mock()
        conn2.read.return_value = self.map

        self.connection_mock.side_effect = [conn1, conn2]

        clustermap = ClusterMap(self.seeds)

        result = clustermap._fetch_map()

        self.assertEqual(result, self.map)
        conn1.write.assert_called_with(u'CLUSTER', u'SLOTS')
        self.assertTrue(conn1.close.called)
        conn2.write.assert_called_with(u'CLUSTER', u'SLOTS')
        self.assertTrue(conn2.close.called)
コード例 #9
0
    def test__fetch_map_first_try_ok(self):
        conn1 = Mock()
        conn1.read.return_value = self.map

        self.connection_mock.return_value = conn1

        clustermap = ClusterMap(self.seeds, password="******")

        result = clustermap._fetch_map()

        self.assertEqual(result, self.map)
        conn1.write.assert_called_with(b'CLUSTER', b'SLOTS')
        self.assertTrue(conn1.close.called)
        self.connection_mock.assert_called_with(host='host1',
                                                port=12345,
                                                encoding='utf-8',
                                                password='******')
コード例 #10
0
 def test_update(self):
     clustermap = ClusterMap(self.seeds)
     update = Mock()
     id = clustermap.id
     clustermap._update_slot = update
     clustermap._fetch_map = Mock()
     clustermap._fetch_map.return_value = self.minimap
     id_new = clustermap.update(clustermap.id)
     clustermap._update_slot.assert_has_calls([
         call(0, [u'127.0.0.1', 7000], [[u'127.0.0.1', 7003]]),
         call(1, [u'127.0.0.1', 7000], [[u'127.0.0.1', 7003]]),
         call(2, [u'127.0.0.1', 7000], [[u'127.0.0.1', 7003]]),
         call(3, [u'127.0.0.1', 7001], [[u'127.0.0.1', 7004]]),
         call(4, [u'127.0.0.1', 7002], [[u'127.0.0.1', 7005]]),
         call(5, [u'127.0.0.1', 7002], [[u'127.0.0.1', 7005]])
     ])
     self.assertNotEqual(clustermap.id, id)
     self.assertEqual(clustermap.id, id_new)
コード例 #11
0
 def __init__(self, seeds, slave_ok=False, **kwargs):
     super().__init__(**kwargs)
     self._map = ClusterMap(seeds=seeds)
     self._slave_ok = slave_ok
     self._cluster = True
コード例 #12
0
 def __init__(self, seeds, slave_ok=False, password=None, **kwargs):
     super().__init__(password=password, **kwargs)
     self._map = ClusterMap(seeds=seeds, password=password)
     self._slave_ok = slave_ok
     self._cluster = True
コード例 #13
0
 def test___init__(self):
     clustermap = ClusterMap(self.seeds)
     self.assertEqual(clustermap._map, {})
     self.assertEqual(clustermap._seeds, deque(self.seeds))
コード例 #14
0
 def test___init__(self):
     clustermap = ClusterMap(self.seeds, password='******')
     self.assertEqual(clustermap._map, {})
     self.assertEqual(clustermap._seeds, deque(self.seeds))
     self.assertEqual(clustermap._password, 'blubber')