コード例 #1
0
 def setUp(self):
     self.redis_client = mock.Mock(name='RedisClient')
     self.version_store = RedisVersionWrapper(self.redis_client)
コード例 #2
0
class TestRedisVersionClient(unittest.TestCase):
    """Test specifics of Redis client"""
    def setUp(self):
        self.redis_client = mock.Mock(name='RedisClient')
        self.version_store = RedisVersionWrapper(self.redis_client)

    def test_get_master_version(self):
        master_version = self.version_store._get_master_version()

        self.assertEqual(master_version, self.redis_client.get.return_value)
        self.redis_client.get.assert_called_once_with('cache')

    def test_set_master_version(self):
        with mock.patch('pyramid_caching.ext.redis.time') as m_t:
            m_t.time.return_value = 42
            self.version_store._set_master_version()

        self.redis_client.set.assert_called_once_with('cache', 42, nx=True)

    def test_get_multi(self):
        keys = ['one', 'two']
        self.redis_client.mget.return_value = ['42', '1', None]

        result = self.version_store.get_multi(keys)

        self.assertEqual(result, [('cache', '42'), ('one', '1'), ('two', '0')])
        self.redis_client.mget.assert_called_once_with(['cache', 'one', 'two'])

    def test_get_multi_no_master_version(self):
        keys = ['one', 'two']
        self.redis_client.mget.return_value = [None, '1', '2']
        self.redis_client.get.return_value = '84'

        with mock.patch('pyramid_caching.ext.redis.time') as m_t:
            m_t.time.return_value = 42
            result = self.version_store.get_multi(keys)

        expected = [('cache', '84'), ('one', '1'), ('two', '2')]
        self.assertEqual(result, expected)
        self.redis_client.set.assert_called_once_with('cache', 42, nx=True)

    def test_get_multi_no_master_version_after_reset_attempt(self):
        keys = []
        self.redis_client.mget.return_value = [None]
        self.redis_client.get.return_value = None

        with mock.patch('pyramid_caching.ext.redis.time') as m_t:
            m_t.time.return_value = 42
            with self.assertRaises(VersionMasterVersionError):
                self.version_store.get_multi(keys)

    def test_get_multi_redis_error_1(self):
        self.redis_client.mget.side_effect = RedisError()

        with self.assertRaises(VersionGetError):
            self.version_store.get_multi([])

    def test_get_multi_redis_error_2(self):
        self.redis_client.mget.return_value = [None]
        self.redis_client.set.side_effect = RedisError()

        with self.assertRaises(VersionMasterVersionError):
            self.version_store.get_multi([])

    def test_get_multi_redis_error_3(self):
        self.redis_client.mget.return_value = [None]
        self.redis_client.get.side_effect = RedisError()

        with self.assertRaises(VersionMasterVersionError):
            self.version_store.get_multi([])

    def test_incr(self):
        self.version_store.incr('FOO')
        self.redis_client.incr.assert_called_once_with('FOO')

    def test_incr_redis_error(self):
        self.redis_client.incr.side_effect = RedisError()

        with self.assertRaises(VersionIncrementError):
            self.version_store.incr('FOO')

    def test_inhibit_caching(self):
        self.redis_client.mget.return_value = ['off']

        with self.assertRaises(CacheDisabled):
            self.version_store.get_multi([])
コード例 #3
0
 def setUp(self):
     self.redis_client = mock.Mock(name='RedisClient')
     self.version_store = RedisVersionWrapper(self.redis_client)
コード例 #4
0
def get_redis():
    return RedisVersionWrapper(StrictRedis())
コード例 #5
0
class TestRedisVersionClient(unittest.TestCase):
    """Test specifics of Redis client"""

    def setUp(self):
        self.redis_client = mock.Mock(name='RedisClient')
        self.version_store = RedisVersionWrapper(self.redis_client)

    def test_get_master_version(self):
        master_version = self.version_store._get_master_version()

        self.assertEqual(master_version, self.redis_client.get.return_value)
        self.redis_client.get.assert_called_once_with('cache')

    def test_set_master_version(self):
        with mock.patch('pyramid_caching.ext.redis.time') as m_t:
            m_t.time.return_value = 42
            self.version_store._set_master_version()

        self.redis_client.set.assert_called_once_with('cache', 42, nx=True)

    def test_get_multi(self):
        keys = ['one', 'two']
        self.redis_client.mget.return_value = ['42', '1', None]

        result = self.version_store.get_multi(keys)

        self.assertEqual(result, [('cache', '42'), ('one', '1'), ('two', '0')])
        self.redis_client.mget.assert_called_once_with(['cache', 'one', 'two'])

    def test_get_multi_no_master_version(self):
        keys = ['one', 'two']
        self.redis_client.mget.return_value = [None, '1', '2']
        self.redis_client.get.return_value = '84'

        with mock.patch('pyramid_caching.ext.redis.time') as m_t:
            m_t.time.return_value = 42
            result = self.version_store.get_multi(keys)

        expected = [('cache', '84'),
                    ('one', '1'),
                    ('two', '2')]
        self.assertEqual(result, expected)
        self.redis_client.set.assert_called_once_with('cache', 42, nx=True)

    def test_get_multi_no_master_version_after_reset_attempt(self):
        keys = []
        self.redis_client.mget.return_value = [None]
        self.redis_client.get.return_value = None

        with mock.patch('pyramid_caching.ext.redis.time') as m_t:
            m_t.time.return_value = 42
            with self.assertRaises(VersionMasterVersionError):
                self.version_store.get_multi(keys)

    def test_get_multi_redis_error_1(self):
        self.redis_client.mget.side_effect = RedisError()

        with self.assertRaises(VersionGetError):
            self.version_store.get_multi([])

    def test_get_multi_redis_error_2(self):
        self.redis_client.mget.return_value = [None]
        self.redis_client.set.side_effect = RedisError()

        with self.assertRaises(VersionMasterVersionError):
            self.version_store.get_multi([])

    def test_get_multi_redis_error_3(self):
        self.redis_client.mget.return_value = [None]
        self.redis_client.get.side_effect = RedisError()

        with self.assertRaises(VersionMasterVersionError):
            self.version_store.get_multi([])

    def test_incr(self):
        self.version_store.incr('FOO')
        self.redis_client.incr.assert_called_once_with('FOO')

    def test_incr_redis_error(self):
        self.redis_client.incr.side_effect = RedisError()

        with self.assertRaises(VersionIncrementError):
            self.version_store.incr('FOO')

    def test_inhibit_caching(self):
        self.redis_client.mget.return_value = ['off']

        with self.assertRaises(CacheDisabled):
            self.version_store.get_multi([])