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)
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')
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' })
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
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))
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())
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)
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)
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='******')
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)
def __init__(self, seeds, slave_ok=False, **kwargs): super().__init__(**kwargs) self._map = ClusterMap(seeds=seeds) self._slave_ok = slave_ok self._cluster = True
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
def test___init__(self): clustermap = ClusterMap(self.seeds) self.assertEqual(clustermap._map, {}) self.assertEqual(clustermap._seeds, deque(self.seeds))
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')