Пример #1
0
    def _check_cache_key(self, _callable, cache_key, *args, **kwargs):
        self.local_cache.clear()
        self.assertNotIn(cache_key, self.local_cache)

        _callable(*args, **kwargs)
        self.assertIn(cache_key, self.local_cache)

        as_property = getattr(_callable, 'property', False)
        if as_property:
            invalidate_cache_key(cache_key)
        else:
            _callable.invalidate_cache_by_key(*args, **kwargs)

        self.assertNotIn(cache_key, self.local_cache)
        _callable(*args, **kwargs)
Пример #2
0
    def _check_cache_key(self, _callable, cache_key, *args, **kwargs):
        self.local_cache.clear()
        self.assertNotIn(cache_key, self.local_cache)

        _callable(*args, **kwargs)
        self.assertIn(cache_key, self.local_cache)

        as_property = getattr(_callable, 'property', False)
        if as_property:
            invalidate_cache_key(cache_key)
        else:
            _callable.invalidate_cache_by_key(*args, **kwargs)

        self.assertNotIn(cache_key, self.local_cache)
        _callable(*args, **kwargs)
Пример #3
0
    def test_invalidators(self):
        a, b = u'a', u'b'
        cache_callable = ordinal_func
        cache_prefix = ordinal_func.prefix
        cache_key = create_cache_key(cache_prefix, a, b)

        self.cache.reset_mock()

        result = process_args(a=a, b=b)

        self.assertEqual(cache_callable(a=a, b=b), result)
        self.cache.assert_called_once_with(result)
        self.cache.reset_mock()

        # cached version
        self.assertEqual(cache_callable(a=a, b=b), result)
        self.assertFalse(self.cache.called)
        self.cache.reset_mock()

        # invalidate cache via cache key
        invalidate_cache_key(cache_key)
        self.assertEqual(cache_callable(a=a, b=b), result)
        self.cache.assert_called_once_with(result)
        self.cache.reset_mock()

        # cached version
        self.assertEqual(cache_callable(a=a, b=b), result)
        self.assertFalse(self.cache.called)
        self.cache.reset_mock()

        # invalidate cache via prefix
        invalidate_cache_prefix(cache_prefix)
        self.assertEqual(cache_callable(a=a, b=b), result)
        self.cache.assert_called_once_with(result)
        self.cache.reset_mock()

        # cached version
        self.assertEqual(cache_callable(a=a, b=b), result)
        self.assertFalse(self.cache.called)
        self.cache.reset_mock()

        # invalidate cache via attached invalidator
        cache_callable.invalidate_cache_by_key(a=a, b=b)
        self.assertEqual(cache_callable(a=a, b=b), result)
        self.cache.assert_called_once_with(result)
        self.cache.reset_mock()
Пример #4
0
    def test_invalidators(self):
        a, b = u'a', u'b'
        cache_callable = ordinal_func
        cache_prefix = ordinal_func.prefix
        cache_key = create_cache_key(cache_prefix, a, b)

        self.cache.reset_mock()

        result = process_args(a=a, b=b)

        self.assertEqual(cache_callable(a=a, b=b), result)
        self.cache.assert_called_once_with(result)
        self.cache.reset_mock()

        # cached version
        self.assertEqual(cache_callable(a=a, b=b), result)
        self.assertFalse(self.cache.called)
        self.cache.reset_mock()

        # invalidate cache via cache key
        invalidate_cache_key(cache_key)
        self.assertEqual(cache_callable(a=a, b=b), result)
        self.cache.assert_called_once_with(result)
        self.cache.reset_mock()

        # cached version
        self.assertEqual(cache_callable(a=a, b=b), result)
        self.assertFalse(self.cache.called)
        self.cache.reset_mock()

        # invalidate cache via prefix
        invalidate_cache_prefix(cache_prefix)
        self.assertEqual(cache_callable(a=a, b=b), result)
        self.cache.assert_called_once_with(result)
        self.cache.reset_mock()

        # cached version
        self.assertEqual(cache_callable(a=a, b=b), result)
        self.assertFalse(self.cache.called)
        self.cache.reset_mock()

        # invalidate cache via attached invalidator
        cache_callable.invalidate_cache_by_key(a=a, b=b)
        self.assertEqual(cache_callable(a=a, b=b), result)
        self.cache.assert_called_once_with(result)
        self.cache.reset_mock()