Esempio n. 1
0
def test_memoize_annotated_delete(app, cache):
    with app.test_request_context():

        @cache.memoize(5)
        def big_foo_annotated(a, b):
            return a + b + random.randrange(0, 100000)

        big_foo_annotated.__annotations__ = {"a": int, "b": int, "return": int}

        result = big_foo_annotated(5, 2)
        result2 = big_foo_annotated(5, 3)

        time.sleep(1)

        assert big_foo_annotated(5, 2) == result
        assert big_foo_annotated(5, 2) == result
        assert big_foo_annotated(5, 3) != result
        assert big_foo_annotated(5, 3) == result2

        cache.delete_memoized_verhash(big_foo_annotated)

        _fname, _fname_instance = function_namespace(big_foo_annotated)
        version_key = cache._memvname(_fname)
        assert cache.get(version_key) is None

        assert big_foo_annotated(5, 2) != result
        assert big_foo_annotated(5, 3) != result2

        assert cache.get(version_key) is not None
Esempio n. 2
0
    def test_07c_delete_memoized_annotated(self):
        with self.app.test_request_context():

            @self.cache.memoize(5)
            def big_foo_annotated(a, b):
                return a + b + random.randrange(0, 100000)

            big_foo_annotated.__annotations__ = {
                'a': int,
                'b': int,
                'return': int
            }

            result = big_foo_annotated(5, 2)
            result2 = big_foo_annotated(5, 3)

            time.sleep(1)

            assert big_foo_annotated(5, 2) == result
            assert big_foo_annotated(5, 2) == result
            assert big_foo_annotated(5, 3) != result
            assert big_foo_annotated(5, 3) == result2

            self.cache.delete_memoized_verhash(big_foo_annotated)

            _fname, _fname_instance = function_namespace(big_foo_annotated)
            version_key = self.cache._memvname(_fname)
            assert self.cache.get(version_key) is None

            assert big_foo_annotated(5, 2) != result
            assert big_foo_annotated(5, 3) != result2

            assert self.cache.get(version_key) is not None
Esempio n. 3
0
    def test_07c_delete_memoized_annotated(self):
            with self.app.test_request_context():
                @self.cache.memoize(5)
                def big_foo_annotated(a, b):
                    return a + b + random.randrange(0, 100000)

                big_foo_annotated.__annotations__ = {'a': int, 'b': int, 'return': int}

                result = big_foo_annotated(5, 2)
                result2 = big_foo_annotated(5, 3)

                time.sleep(1)

                assert big_foo_annotated(5, 2) == result
                assert big_foo_annotated(5, 2) == result
                assert big_foo_annotated(5, 3) != result
                assert big_foo_annotated(5, 3) == result2

                self.cache.delete_memoized_verhash(big_foo_annotated)

                _fname, _fname_instance = function_namespace(big_foo_annotated)
                version_key = self.cache._memvname(_fname)
                assert self.cache.get(version_key) is None

                assert big_foo_annotated(5, 2) != result
                assert big_foo_annotated(5, 3) != result2

                assert self.cache.get(version_key) is not None
Esempio n. 4
0
def test_memoize_verhash_delete(app, cache):
    with app.test_request_context():
        @cache.memoize(5)
        def big_foo(a, b):
            return a + b + random.randrange(0, 100000)

        result = big_foo(5, 2)
        result2 = big_foo(5, 3)

        time.sleep(1)

        assert big_foo(5, 2) == result
        assert big_foo(5, 2) == result
        assert big_foo(5, 3) != result
        assert big_foo(5, 3) == result2

        cache.delete_memoized_verhash(big_foo)

        _fname, _fname_instance = function_namespace(big_foo)
        version_key = cache._memvname(_fname)
        assert cache.get(version_key) is None

        assert big_foo(5, 2) != result
        assert big_foo(5, 3) != result2

        assert cache.get(version_key) is not None
Esempio n. 5
0
        def make_cache_key(f, *args, **kwargs):
            fname, _ = function_namespace(f)
            if callable(make_name):
                altfname = make_name(fname)
            else:
                altfname = fname

            updated = altfname + json.dumps(dict(
                args=self._extract_self_arg(f, args),
                kwargs=kwargs), sort_keys=True)

            return b64encode(
                sha256(updated.encode('utf-8')).digest()
            )[:16].decode('utf-8')
Esempio n. 6
0
        def make_cache_key(f, *args, **kwargs):
            fname, _ = function_namespace(f)

            if callable(make_name):
                altfname = make_name(fname)
            else:
                altfname = fname

            cache_key = altfname + json.dumps(
                dict(args=self._extract_self_arg(f, args), kwargs=kwargs),
                sort_keys=True,
            )
            cache_key = md5(cache_key.encode("utf-8"))
            cache_key = b64encode(cache_key.digest())
            cache_key = cache_key[:16].decode("utf-8")
            return cache_key