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)
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]
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)
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'))
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
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
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)
def test_get_memcached_client(self): client = CacheClient.instantiate('memcached') self.assertTrue(isinstance(client, MemcachedClient))
def test_get_redis_client(self): client = CacheClient.instantiate('redis') self.assertTrue(isinstance(client, RedisClient))
def tearDown(self): super(CacheClientFunctionalTestCase, self).tearDown() CacheClient.instantiate(self.cache_backend).purge()
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"')
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"')