from core.concept import ALL_ATTRIBUTES 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): ALL_ATTRIBUTES.clear() sheerka = Sheerka(cache_only=cache_only) sheerka.initialize("mem://", save_execution_context=False, enable_process_return_values=False) return sheerka def get_sheerka(self, **kwargs): cache_only = kwargs.get("cache_only", True) use_singleton = kwargs.get("singleton", True) reset_attrs = kwargs.get("reset_attrs", True) sheerka = kwargs.get("sheerka", None) if sheerka: return sheerka if reset_attrs: ALL_ATTRIBUTES.clear() if use_singleton: singleton_instance = TestUsingMemoryBasedSheerka.singleton_instance if singleton_instance: singleton_instance.reset(cache_only) singleton_instance.cache_manager.init_from_dump(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)