Refactored Caching, Refactored BnfNodeParser, Introduced Sphinx
This commit is contained in:
Vendored
+111
@@ -0,0 +1,111 @@
|
||||
from cache.Cache import Cache
|
||||
from cache.CacheManager import CacheManager
|
||||
from cache.DictionaryCache import DictionaryCache
|
||||
from cache.ListCache import ListCache
|
||||
|
||||
from tests.TestUsingMemoryBasedSheerka import TestUsingMemoryBasedSheerka
|
||||
|
||||
|
||||
class TestCacheManager(TestUsingMemoryBasedSheerka):
|
||||
def test_i_do_not_push_into_sdp_when_cache_only(self):
|
||||
sheerka = self.get_sheerka()
|
||||
context = self.get_context(sheerka)
|
||||
|
||||
cache_manager = CacheManager(True)
|
||||
cache_manager.register_cache("test", Cache(), persist=True)
|
||||
cache_manager.put("test", "key", "value")
|
||||
|
||||
cache_manager.commit(context)
|
||||
assert not sheerka.sdp.exists("test", "key")
|
||||
|
||||
def test_i_do_not_get_value_from_sdp_when_cache_only_is_true(self):
|
||||
sheerka = self.get_sheerka()
|
||||
context = self.get_context(sheerka)
|
||||
with sheerka.sdp.get_transaction(context.event) as transaction:
|
||||
transaction.add("test", "key", "value")
|
||||
|
||||
cache = Cache(default=lambda k: sheerka.sdp.get("test", k))
|
||||
|
||||
cache_manager = CacheManager(True)
|
||||
cache_manager.register_cache("test", cache, persist=True)
|
||||
|
||||
assert cache_manager.get("test", "key") is None
|
||||
|
||||
def test_i_can_get_value_from_sdp_when_cache_only_is_false(self):
|
||||
sheerka = self.get_sheerka()
|
||||
context = self.get_context(sheerka)
|
||||
with sheerka.sdp.get_transaction(context.event) as transaction:
|
||||
transaction.add("test", "key", "value")
|
||||
|
||||
cache = Cache(default=lambda k: sheerka.sdp.get("test", k))
|
||||
|
||||
cache_manager = CacheManager(False)
|
||||
cache_manager.register_cache("test", cache, persist=True)
|
||||
|
||||
assert cache_manager.get("test", "key") == "value"
|
||||
|
||||
def test_i_can_commit_simple_cache(self):
|
||||
sheerka = self.get_sheerka()
|
||||
context = self.get_context(sheerka)
|
||||
|
||||
cache_manager = CacheManager(False)
|
||||
cache_manager.register_cache("test", Cache(), persist=True)
|
||||
cache = cache_manager.caches["test"].cache
|
||||
|
||||
cache_manager.put("test", "key", "value")
|
||||
|
||||
cache_manager.commit(context)
|
||||
assert sheerka.sdp.get("test", "key") == "value"
|
||||
|
||||
cache.update("key", "value", "key", "another_value")
|
||||
cache_manager.commit(context)
|
||||
assert sheerka.sdp.get("test", "key") == "another_value"
|
||||
|
||||
cache.update("key", "another_value", "key2", "another_value")
|
||||
cache_manager.commit(context)
|
||||
assert sheerka.sdp.get("test", "key") is None
|
||||
assert sheerka.sdp.get("test", "key2") == "another_value"
|
||||
|
||||
def test_i_can_commit_list_cache(self):
|
||||
sheerka = self.get_sheerka()
|
||||
context = self.get_context(sheerka)
|
||||
|
||||
cache_manager = CacheManager(False)
|
||||
cache_manager.register_cache("test", ListCache(), persist=True)
|
||||
cache = cache_manager.caches["test"].cache
|
||||
|
||||
cache.put("key", "value")
|
||||
cache_manager.commit(context)
|
||||
assert sheerka.sdp.get("test", "key") == ["value"]
|
||||
|
||||
cache.put("key", "value2")
|
||||
cache_manager.commit(context)
|
||||
assert sheerka.sdp.get("test", "key") == ["value", "value2"]
|
||||
|
||||
cache.update("key", "value2", "key2", "value2")
|
||||
cache_manager.commit(context)
|
||||
assert sheerka.sdp.get("test", "key") == ["value"]
|
||||
assert sheerka.sdp.get("test", "key2") == ["value2"]
|
||||
|
||||
cache.update("key2", "value2", "key3", "value2")
|
||||
cache_manager.commit(context)
|
||||
assert sheerka.sdp.get("test", "key") == ["value"]
|
||||
assert sheerka.sdp.get("test", "key2") is None
|
||||
assert sheerka.sdp.get("test", "key3") == ["value2"]
|
||||
|
||||
def test_i_can_commit_dictionary_cache(self):
|
||||
sheerka = self.get_sheerka()
|
||||
context = self.get_context(sheerka)
|
||||
|
||||
cache_manager = CacheManager(False)
|
||||
cache_manager.register_cache("test", DictionaryCache(), persist=True)
|
||||
cache = cache_manager.caches["test"].cache
|
||||
|
||||
cache.put(False, {"key": "value", "key2": "value2"})
|
||||
cache_manager.commit(context)
|
||||
assert sheerka.sdp.get("test") == {"key": "value", "key2": "value2"}
|
||||
assert sheerka.sdp.get("test", "key") == "value"
|
||||
|
||||
cache.put(False, {"key": "value", "key2": "value2", "key3": "value3"})
|
||||
cache_manager.commit(context)
|
||||
assert sheerka.sdp.get("test") == {"key": "value", "key2": "value2", "key3": "value3"}
|
||||
Reference in New Issue
Block a user