Пример #1
0
    def test_cache_purge(self):
        with freeze_time(self.now):
            result = kinda_sum(2, 3)
            self.assertEquals(result, 5)
            self.assertEquals(self.cache_hit_patched.call_count, 0)
            self.assertEquals(self.cache_outdated_patched.call_count, 0)
            self.assertEquals(self.cache_missed_patched.call_count, 1)

            result = kinda_sum(2, 4)
            self.assertEquals(result, 6)
            self.assertEquals(self.cache_hit_patched.call_count, 0)
            self.assertEquals(self.cache_outdated_patched.call_count, 0)
            self.assertEquals(self.cache_missed_patched.call_count, 2)

            CacheClient.instantiate(self.cache_backend).purge()

            result = kinda_sum(2, 3)
            self.assertEquals(result, 5)
            self.assertEquals(self.cache_hit_patched.call_count, 0)
            self.assertEquals(self.cache_outdated_patched.call_count, 0)
            self.assertEquals(self.cache_missed_patched.call_count, 3)

            result = kinda_sum(2, 4)
            self.assertEquals(result, 6)
            self.assertEquals(self.cache_hit_patched.call_count, 0)
            self.assertEquals(self.cache_outdated_patched.call_count, 0)
            self.assertEquals(self.cache_missed_patched.call_count, 4)
Пример #2
0
    def test_cache_purge(self):
        with freeze_time(self.now):
            result = kinda_sum(2, 3)
            self.assertEquals(result, 5)
            self.assertEquals(self.cache_hit_patched.call_count, 0)
            self.assertEquals(self.cache_outdated_patched.call_count, 0)
            self.assertEquals(self.cache_missed_patched.call_count, 1)

            result = kinda_sum(2, 4)
            self.assertEquals(result, 6)
            self.assertEquals(self.cache_hit_patched.call_count, 0)
            self.assertEquals(self.cache_outdated_patched.call_count, 0)
            self.assertEquals(self.cache_missed_patched.call_count, 2)

            CacheClient.instantiate(self.cache_backend).purge()

            result = kinda_sum(2, 3)
            self.assertEquals(result, 5)
            self.assertEquals(self.cache_hit_patched.call_count, 0)
            self.assertEquals(self.cache_outdated_patched.call_count, 0)
            self.assertEquals(self.cache_missed_patched.call_count, 3)

            result = kinda_sum(2, 4)
            self.assertEquals(result, 6)
            self.assertEquals(self.cache_hit_patched.call_count, 0)
            self.assertEquals(self.cache_outdated_patched.call_count, 0)
            self.assertEquals(self.cache_missed_patched.call_count, 4)
Пример #3
0
    def setUp(self):
        super(CacheCommonTestCase, self).setUp()

        os.environ['PYSMARTCACHE_BACKEND'] = self.cache_backend
        CacheClient.instantiate(self.cache_backend).purge()
        self.now = datetime.datetime.utcnow()

        self._patch1 = mock.patch.object(CacheEngine, '_cache_hit_signal')
        self.cache_hit_patched = self._patch1.start()
        self._patch2 = mock.patch.object(CacheEngine, '_cache_outdated_signal')
        self.cache_outdated_patched = self._patch2.start()
        self._patch3 = mock.patch.object(CacheEngine, '_cache_missed_signal')
        self.cache_missed_patched = self._patch3.start()
        self.mocks = [self._patch1, self._patch2, self._patch3]
Пример #4
0
    def setUp(self):
        super(CacheCommonTestCase, self).setUp()

        os.environ['PYSMARTCACHE_BACKEND'] = self.cache_backend
        CacheClient.instantiate(self.cache_backend).purge()
        self.now = datetime.datetime.utcnow()

        self._patch1 = mock.patch.object(CacheEngine, '_cache_hit_signal')
        self.cache_hit_patched = self._patch1.start()
        self._patch2 = mock.patch.object(CacheEngine, '_cache_outdated_signal')
        self.cache_outdated_patched = self._patch2.start()
        self._patch3 = mock.patch.object(CacheEngine, '_cache_missed_signal')
        self.cache_missed_patched = self._patch3.start()
        self.mocks = [self._patch1, self._patch2, self._patch3]
Пример #5
0
    def __init__(self, func, keys, function_args, function_kwargs,
                 timeout=None, cache_backend=None, cache_host=None, verbose=None):
        self.timeout = PySmartCacheSettings._get_timeout(timeout)
        self.cache_backend = PySmartCacheSettings._get_cache_backend(cache_backend)
        self.verbose = PySmartCacheSettings._get_verbose(verbose)

        self.func = func
        self.keys = keys
        self.function_args = function_args
        self.function_kwargs = function_kwargs

        self.function_arguments = inspect.getcallargs(self.func, *self.function_args, **self.function_kwargs)
        self.now_reference = datetime.datetime.now()
        self.cache_client = CacheClient.instantiate(self.cache_backend, cache_host)

        self._create_func_full_qualified_name()
        self._create_cache_key()

        self.stored_info = self.info()
        self.stored_value = self.stored_info['value'] if self.stored_info else None
        self.stored_at = self.stored_info['date added'] if self.stored_info else None

        if self.verbose:
            print '-' * 50
            print 'KEY: {}'.format(self.cache_key)
Пример #6
0
    def test_common(self):
        client = CacheClient.instantiate(self.cache_backend)

        self.assertIsNone(client.get('answer'))

        client.set('answer', '42')
        self.assertEquals(client.get('answer'), '42')

        client.set('impulse', '101')
        self.assertEquals(client.get('impulse'), '101')
        self.assertEquals(client.get('answer'), '42')

        client.delete('impulse')
        self.assertIsNone(client.get('impulse'))
        self.assertEquals(client.get('answer'), '42')

        client.purge()
        self.assertIsNone(client.get('impulse'))
        self.assertIsNone(client.get('answer'))
Пример #7
0
    def test_common(self):
        client = CacheClient.instantiate(self.cache_backend)

        self.assertIsNone(client.get('answer'))

        client.set('answer', '42')
        self.assertEquals(client.get('answer'), '42')

        client.set('impulse', '101')
        self.assertEquals(client.get('impulse'), '101')
        self.assertEquals(client.get('answer'), '42')

        client.delete('impulse')
        self.assertIsNone(client.get('impulse'))
        self.assertEquals(client.get('answer'), '42')

        client.purge()
        self.assertIsNone(client.get('impulse'))
        self.assertIsNone(client.get('answer'))
Пример #8
0
    def _get_cache_backend(cls, cache_backend):
        from pysmartcache.clients import CacheClient

        client_implementations = CacheClient.all_implementations()

        if cache_backend is None:
            cache_backend = PySmartCacheSettings.cache_backend

        if cache_backend is None:
            cache_backend = os.environ.get('PYSMARTCACHE_BACKEND')

        if cache_backend is None:
            cache_backend = cls._DEFAULT_CACHE_BACKEND

        if cache_backend not in client_implementations:
            raise ImproperlyConfigured('PySmartCache cache backend settings must be one of "{}"'
                                       .format('", "'.join(client_implementations)))

        return cache_backend
Пример #9
0
    def _get_cache_backend(cls, cache_backend):
        from pysmartcache.clients import CacheClient

        client_implementations = CacheClient.all_implementations()

        if cache_backend is None:
            cache_backend = PySmartCacheSettings.cache_backend

        if cache_backend is None:
            cache_backend = os.environ.get('PYSMARTCACHE_BACKEND')

        if cache_backend is None:
            cache_backend = cls._DEFAULT_CACHE_BACKEND

        if cache_backend not in client_implementations:
            raise ImproperlyConfigured(
                'PySmartCache cache backend settings must be one of "{}"'.
                format('", "'.join(client_implementations)))

        return cache_backend
Пример #10
0
    def __init__(self,
                 func,
                 keys,
                 function_args,
                 function_kwargs,
                 timeout=None,
                 cache_backend=None,
                 cache_host=None,
                 verbose=None):
        self.timeout = PySmartCacheSettings._get_timeout(timeout)
        self.cache_backend = PySmartCacheSettings._get_cache_backend(
            cache_backend)
        self.verbose = PySmartCacheSettings._get_verbose(verbose)

        self.func = func
        self.keys = keys
        self.function_args = function_args
        self.function_kwargs = function_kwargs

        self.function_arguments = inspect.getcallargs(self.func,
                                                      *self.function_args,
                                                      **self.function_kwargs)
        self.now_reference = datetime.datetime.now()
        self.cache_client = CacheClient.instantiate(self.cache_backend,
                                                    cache_host)

        self._create_func_full_qualified_name()
        self._create_cache_key()

        self.stored_info = self.info()
        self.stored_value = self.stored_info[
            'value'] if self.stored_info else None
        self.stored_at = self.stored_info[
            'date added'] if self.stored_info else None

        if self.verbose:
            print '-' * 50
            print 'KEY: {}'.format(self.cache_key)
Пример #11
0
 def test_get_memcached_client(self):
     client = CacheClient.instantiate('memcached')
     self.assertTrue(isinstance(client, MemcachedClient))
Пример #12
0
 def test_get_redis_client(self):
     client = CacheClient.instantiate('redis')
     self.assertTrue(isinstance(client, RedisClient))
Пример #13
0
 def test_get_memcached_client(self):
     client = CacheClient.instantiate('memcached')
     self.assertTrue(isinstance(client, MemcachedClient))
Пример #14
0
 def tearDown(self):
     super(CacheClientFunctionalTestCase, self).tearDown()
     CacheClient.instantiate(self.cache_backend).purge()
Пример #15
0
 def test_get_invalid_client(self):
     with self.assertRaises(CacheClientNotFound) as e:
         CacheClient.instantiate('hamster')
     self.assertEquals(
         str(e.exception), u'Cache client not found with name "hamster". '
         'Caches implemented: "memcached", "redis"')
Пример #16
0
 def test_get_redis_client(self):
     client = CacheClient.instantiate('redis')
     self.assertTrue(isinstance(client, RedisClient))
Пример #17
0
 def test_get_invalid_client(self):
     with self.assertRaises(CacheClientNotFound) as e:
         CacheClient.instantiate('hamster')
     self.assertEquals(str(e.exception), u'Cache client not found with name "hamster". '
                                         'Caches implemented: "memcached", "redis"')
Пример #18
0
 def tearDown(self):
     super(CacheClientFunctionalTestCase, self).tearDown()
     CacheClient.instantiate(self.cache_backend).purge()