from core.sheerka.Sheerka import Sheerka from tests.BaseTest import BaseTest class TestUsingMemoryBasedSheerka(BaseTest): singleton_instance = None dump = None @staticmethod def _inner_get_sheerka(cache_only): sheerka = Sheerka(cache_only=cache_only) sheerka.initialize("mem://", save_execution_context=False) return sheerka def get_sheerka(self, **kwargs): cache_only = kwargs.get("cache_only", True) use_singleton = kwargs.get("singleton", True) sheerka = kwargs.get("sheerka", None) if sheerka: return sheerka if use_singleton: singleton_instance = TestUsingMemoryBasedSheerka.singleton_instance if singleton_instance: singleton_instance.reset(cache_only) singleton_instance.cache_manager.init_from(TestUsingMemoryBasedSheerka.dump) return singleton_instance else: new_instance = self._inner_get_sheerka(cache_only) TestUsingMemoryBasedSheerka.dump = new_instance.cache_manager.dump() TestUsingMemoryBasedSheerka.singleton_instance = new_instance return TestUsingMemoryBasedSheerka.singleton_instance return self._inner_get_sheerka(cache_only)