コード例 #1
0
    def test_storecache(self):
        from liquer.store import MemoryStore

        state = State().with_data(123)
        state.query = "abc"

        for cache in [
            StoreCache(MemoryStore(), path=""),
            StoreCache(MemoryStore(), path="xx"),
            StoreCache(MemoryStore(), path="xx", flat=True),
        ]:
            cache.remove("abc")  # Try to remove key from empty cache
            assert not cache.contains("abc")
            assert list(cache.keys()) == []
            cache.store(state)

            assert cache.contains("abc")
            assert list(cache.keys()) == ["abc"]
            assert cache.get("abc").get() == 123
            assert cache.get_metadata("abc")["query"] == "abc"
            assert cache.store_metadata(dict(query="abc", mymetafield="Hello"))
            assert cache.get_metadata("abc")["mymetafield"] == "Hello"

            assert not cache.contains("xyz")
            assert cache.get("xyz") == None

            assert not cache.contains("xxx")
            assert cache.store_metadata(dict(query="xxx", mymetafield="Hello"))
            assert cache.contains("xxx")
            assert sorted(cache.keys()) == ["abc", "xxx"]

            cache.clean()
            assert not cache.contains("abc")
            assert list(cache.keys()) == []
            assert cache.get("abc") == None
コード例 #2
0
    def test_filecache(self):
        state = State().with_data(123)
        state.query = "abc"
        with tempfile.TemporaryDirectory() as cachepath:
            cache = FileCache(cachepath)
            cache.remove("abc")  # Try to remove key from empty cache
            assert not cache.contains("abc")
            assert list(cache.keys()) == []
            cache.store(state)

            assert cache.contains("abc")
            assert list(cache.keys()) == ["abc"]
            assert cache.get("abc").get() == 123
            assert cache.get_metadata("abc")["query"] == "abc"
            assert cache.store_metadata(dict(query="abc", mymetafield="Hello"))
            assert cache.get_metadata("abc")["mymetafield"] == "Hello"

            assert not cache.contains("xyz")
            assert cache.get("xyz") == None

            assert not cache.contains("xxx")
            assert cache.store_metadata(dict(query="xxx", mymetafield="Hello"))
            assert cache.contains("xxx")
            assert sorted(cache.keys()) == ["abc", "xxx"]

            cache.clean()
            assert not cache.contains("abc")
            assert list(cache.keys()) == []
            assert cache.get("abc") == None
コード例 #3
0
    def test_memory(self):
        state = State().with_data(123)
        state.query = "abc"
        cache = MemoryCache()
        assert not cache.contains("abc")
        cache.store(state)

        assert cache.contains("abc")
        assert cache.get("abc").get() == 123

        assert not cache.contains("xyz")
        assert cache.get("xyz") == None
コード例 #4
0
    def test_nocache(self):
        state = State().with_data(123)
        state.query = "abc"
        cache = NoCache()
        assert not cache.contains("abc")
        cache.store(state)

        assert not cache.contains("abc")
        assert cache.get("abc") == None

        assert not cache.contains("xyz")
        assert cache.get("xyz") == None
コード例 #5
0
    def test_filecache(self):
        state = State().with_data(123)
        state.query = "abc"
        with tempfile.TemporaryDirectory() as cachepath:
            cache = FileCache(cachepath)
            assert not cache.contains("abc")
            cache.store(state)

            assert cache.contains("abc")
            assert cache.get("abc").get() == 123

            assert not cache.contains("xyz")
            assert cache.get("xyz") == None
コード例 #6
0
    def test_cached_part_nocache(self):
        cache = NoCache()
        state, remainder = cached_part("abc", cache)
        assert remainder == "abc"
        assert state.get() == None

        state = State().with_data(123)
        state.query = "abc"
        cache.store(state)
        state, remainder = cached_part("/abc/", cache)
        assert remainder == "abc"
        assert state.get() == None

        state, remainder = cached_part("/abc/def/", cache)
        assert remainder == "abc/def"
        assert state.get() == None
コード例 #7
0
    def test_sqlite_string(self):
        state = State().with_data(123)
        state.query = "abc"
        cache = SQLStringCache.from_sqlite()
        cache.remove("abc")  # Try to remove key from empty cache
        assert not cache.contains("abc")
        cache.store(state)

        assert cache.contains("abc")
        assert cache.get("abc").get() == 123

        assert not cache.contains("xyz")
        assert cache.get("xyz") == None

        cache.clean()
        assert not cache.contains("abc")
        assert cache.get("abc") == None
コード例 #8
0
    def test_xor_file_cache(self):
        state = State().with_data(123)
        state.query = "abc"
        with tempfile.TemporaryDirectory() as cachepath:
            cache = XORFileCache(cachepath, b"**")
            cache.remove("abc")  # Try to remove key from empty cache
            assert not cache.contains("abc")
            cache.store(state)

            assert cache.contains("abc")
            assert cache.get("abc").get() == 123

            assert not cache.contains("xyz")
            assert cache.get("xyz") == None

            cache.clean()
            assert not cache.contains("abc")
            assert cache.get("abc") == None
コード例 #9
0
    def test_nocache(self):
        state = State().with_data(123)
        state.query = "abc"
        cache = NoCache()
        cache.remove("abc")  # Try to remove key from empty cache

        assert not cache.contains("abc")
        cache.store(state)

        assert not cache.contains("abc")
        assert cache.get("abc") == None

        assert not cache.contains("xyz")
        assert cache.get("xyz") == None

        cache.clean()
        assert not cache.contains("abc")
        assert cache.get("abc") == None
コード例 #10
0
    def test_fernet_file_cache(self):
        from cryptography.fernet import Fernet

        fernet_key = Fernet.generate_key()
        state = State().with_data(123)
        state.query = "abc"
        with tempfile.TemporaryDirectory() as cachepath:
            cache = FernetFileCache(cachepath, fernet_key)
            cache.remove("abc")  # Try to remove key from empty cache
            assert not cache.contains("abc")
            cache.store(state)

            assert cache.contains("abc")
            assert cache.get("abc").get() == 123

            assert not cache.contains("xyz")
            assert cache.get("xyz") == None

            cache.clean()
            assert not cache.contains("abc")
            assert cache.get("abc") == None
コード例 #11
0
 def create_initial_state(self):
     state = State()
     state.query = ""
     return state