def test_pipelined_map(self): redis = create_cluster({ 'engine': 'nydus.db.backends.redis.Redis', 'router': 'nydus.db.routers.redis.PartitionRouter', 'hosts': { 0: { 'db': 5 }, 1: { 'db': 6 }, 2: { 'db': 7 }, 3: { 'db': 8 }, 4: { 'db': 9 }, } }) chars = ('a', 'b', 'c', 'd', 'e', 'f') with redis.map() as conn: [conn.set(c, i) for i, c in enumerate(chars)] res = [conn.get(c) for c in chars] self.assertEqual(range(len(chars)), [int(r._wrapped) for r in res])
def test_map_only_runs_on_required_nodes(self, RedisClient): redis = create_cluster({ 'engine': 'nydus.db.backends.redis.Redis', 'router': 'nydus.db.routers.keyvalue.PartitionRouter', 'hosts': { 0: {'db': 0}, 1: {'db': 1}, } }) with redis.map() as conn: conn.set('a', 0) conn.set('b', 1) # ensure this was actually called through the pipeline self.assertFalse(RedisClient().set.called) self.assertEquals(RedisClient().pipeline.call_count, 1) RedisClient().pipeline.assert_called_with() self.assertEquals(RedisClient().pipeline().set.call_count, 2) RedisClient().pipeline().set.assert_any_call('a', 0) RedisClient().pipeline().set.assert_any_call('b', 1) self.assertEquals(RedisClient().pipeline().execute.call_count, 1) RedisClient().pipeline().execute.assert_called_with()
def test_map_only_runs_on_required_nodes(self, RedisClient): redis = create_cluster({ 'engine': 'nydus.db.backends.redis.Redis', 'router': 'nydus.db.routers.redis.PartitionRouter', 'hosts': { 0: { 'db': 0 }, 1: { 'db': 1 }, } }) with redis.map() as conn: conn.set('a', 0) conn.set('b', 1) # ensure this was actually called through the pipeline self.assertFalse(RedisClient().set.called) self.assertEquals(RedisClient().pipeline.call_count, 1) RedisClient().pipeline.assert_called_with() self.assertEquals(RedisClient().pipeline().set.call_count, 2) RedisClient().pipeline().set.assert_any_call('a', 0) RedisClient().pipeline().set.assert_any_call('b', 1) self.assertEquals(RedisClient().pipeline().execute.call_count, 1) RedisClient().pipeline().execute.assert_called_with()
def build_cluster(self, connection=FlakeyConnection, router=RetryableRouter): return create_cluster({ 'engine': connection, 'router': router, 'hosts': { 0: {'resp': 'bar'}, } })
def test_create_cluster(self): c = create_cluster({ 'engine': DummyConnection, 'router': DummyRouter, 'hosts': { 0: {'resp': 'bar'}, } }) self.assertEquals(len(c), 1)
def _create_cluster(self, hosts): #create a consistent Hashing cluster logger.info('creating a cache cluster for hosts %s', hosts) cluster = create_cluster({ 'engine': 'nydus.db.backends.redis.Redis', 'router': 'nydus.db.routers.keyvalue.ConsistentHashingRouter', 'hosts': hosts, }) return cluster
def test_create_cluster(self): c = create_cluster({ 'engine': DummyConnection, 'router': DummyRouter, 'hosts': { 0: { 'resp': 'bar' }, } }) self.assertEquals(len(c), 1)
def setUp(self): from nydus.db import create_cluster engine = 'nydus.db.backends.redis.Redis' router = 'nydus.db.routers.redis.PrefixPartitionRouter' nydus_config = dict(engine=engine, router=router, hosts={ 'default': {'db': 0, 'host': 'localhost', 'port': 6380, 'fail_silently': False}, 'simple_cache': {'db': 0, 'host': 'localhost', 'port': 6380, 'fail_silently': True}, 'app_critical': {'db': 0, 'host': 'localhost', 'port': 6380, 'fail_silently': False}, }) redis = create_cluster(nydus_config) self.redis = redis
def build_cluster(self, connection=FlakeyConnection, router=RetryableRouter): return create_cluster({ 'engine': connection, 'router': router, 'hosts': { 0: { 'resp': 'bar' }, } })
def get_cluster(self, router): cluster = create_cluster({ 'engine': 'nydus.db.backends.thoonk.Thoonk', 'router': router, 'hosts': { 0: {'db': 5}, 1: {'db': 6}, 2: {'db': 7}, 3: {'db': 8}, 4: {'db': 9}, } }) self.flush_custer(cluster) return cluster
def test_pipelined_map(self): redis = create_cluster({ 'engine': 'nydus.db.backends.redis.Redis', 'router': 'nydus.db.routers.keyvalue.PartitionRouter', 'hosts': { 0: {'db': 5}, 1: {'db': 6}, 2: {'db': 7}, 3: {'db': 8}, 4: {'db': 9}, } }) chars = ('a', 'b', 'c', 'd', 'e', 'f') with redis.map() as conn: [conn.set(c, i) for i, c in enumerate(chars)] res = [conn.get(c) for c in chars] self.assertEqual(range(len(chars)), [int(r._wrapped) for r in res])