Example #1
0
 def setUp(self):
     
     client.zc.zk.ZooKeeper = ZooKeeperMock
     client.redis.Redis = RedisMock
     self.rs = RedisFailover('localhost:8888', '/redis/cluster')
     
     self.rs._setup_redis_master()
     self.rs._setup_redis_slaves()
Example #2
0
 def test_swith_master_ko(self):
     
     client.redis.Redis = RedisConnectionErrorMock
     self.rs = RedisFailover('localhost:8888', '/redis/cluster')
     
     self.rs.zk.repository = {'/redis/cluster':{"master":["localhost:6399","KO"],
                        "slaves":{"0":["localhost:6389","KO"],
                                  "1":["localhost:6379","KO"]}}}
     
     self.rs._setup_redis_master()
     self.rs._setup_redis_slaves()
             
     # everything is down :-( 
     try:
         self.assertRaises(ConnectionError, self.rs.get('ok') )
     
   
         # set should fail
         self.assertRaises(ConnectionError, self.rs.set('test', 'ok'))
    
     except ConnectionError, e:
         print e
Example #3
0
class TestClient(unittest.TestCase):

    def setUp(self):
        
        client.zc.zk.ZooKeeper = ZooKeeperMock
        client.redis.Redis = RedisMock
        self.rs = RedisFailover('localhost:8888', '/redis/cluster')
        
        self.rs._setup_redis_master()
        self.rs._setup_redis_slaves()

    def test_setup_master_slave(self):
        
        self.assertTrue( isinstance(self.rs.redis_master, RedisMock))
        self.assertEqual( len(self.rs.redis_slaves), 2)

    def test_set(self):
         
        resp = self.rs.set('test', 'ok')
        
        self.assertEquals(resp, 'OK', 'Response ok')
        
    def test_get_ko(self):
        
        resp = self.rs.get('test')        
        self.assertNotEqual(resp, 'OK', 'Response ok')
        
    def test_get_ok(self):
        
        resp = self.rs.get('ok')        
        self.assertEqual(resp, 'ok', 'Response ok')
        
    def test_slave_ko(self):
        
        self.assertEqual( len(self.rs.redis_slaves), 2)
        
        self.rs.zk.repository = {'/redis/cluster':{"master":["localhost:6379","OK"],
                           "slaves":{"0":["localhost:6389","KO"],
                                     "1":["localhost:6399","OK"]}}}
        
        self.rs._setup_redis_slaves()
        
        # the first slave is now KO
        self.assertEqual( len(self.rs.redis_slaves), 1)
        
        # reads methods should work fine on 
        resp = self.rs.get('ok')        
        self.assertEqual(resp, 'ok', 'Response ok')
        
    def test_slaves_ko(self):
        
        # both slaves going down. Reading is still possible via the master
        
        self.rs.zk.repository = {'/redis/cluster':{"master":["localhost:6379","OK"],
                           "slaves":{"0":["localhost:6389","KO"],
                                     "1":["localhost:6399","KO"]}}}
        
        self.rs._setup_redis_slaves()
        
        # the first slave is now KO
        self.assertEqual( len(self.rs.redis_slaves), 0)
        
        # reads methods should work fine on the master anyway.!!
        resp = self.rs.get('ok')        
        self.assertEqual(resp, 'ok', 'Response ok')


    def test_swith_master_ok(self):
        
        # this should never happen
        
        self.rs.zk.repository = {'/redis/cluster':{"master":["localhost:6399","OK"],
                           "slaves":{"0":["localhost:6389","OK"],
                                     "1":["localhost:6379","OK"]}}}
        
        self.rs._setup_redis_master()
        self.rs._setup_redis_slaves()
                
        # reads methods should work fine on the slaves.!!
        resp = self.rs.get('ok')        
        self.assertEqual(resp, 'ok', 'Response ok')
        
        # set should fail
        resp = self.rs.set('test', 'ok')       
        self.assertEquals(resp, 'OK', 'Response ok')
        
    def test_swith_master_ko(self):
        
        client.redis.Redis = RedisConnectionErrorMock
        self.rs = RedisFailover('localhost:8888', '/redis/cluster')
        
        self.rs.zk.repository = {'/redis/cluster':{"master":["localhost:6399","KO"],
                           "slaves":{"0":["localhost:6389","KO"],
                                     "1":["localhost:6379","KO"]}}}
        
        self.rs._setup_redis_master()
        self.rs._setup_redis_slaves()
                
        # everything is down :-( 
        try:
            self.assertRaises(ConnectionError, self.rs.get('ok') )
        
      
            # set should fail
            self.assertRaises(ConnectionError, self.rs.set('test', 'ok'))
       
        except ConnectionError, e:
            print e