示例#1
0
    def test_unset_key_returns_none(self):
        settings = OrmucoCacheClientSettings()
        repository = MemoryRepository(settings)

        result = repository.retrieve('unset-key')

        self.assertEqual(result, None)
示例#2
0
    def test_overflow_cache_size(self):
        settings = OrmucoCacheClientSettings()
        repository = MemoryRepository(settings)
        factory = CacheItemFactory(settings)

        for i in range(0, settings.cache_max_size + 2):
            key = str(i + 1)
            data = [1, 2, 3]
            cache_item = factory.build_cache_item(key, data)
            repository.store(cache_item)

        retrieve_result = repository.retrieve(str(5))
        self.assertIsInstance(retrieve_result, CacheItem)
示例#3
0
    def test_lru_cache_updating(self):
        settings = OrmucoCacheClientSettings()
        repository = MemoryRepository(settings)
        factory = CacheItemFactory(settings)

        for i in range(0, 3):
            key = str(i + 1)
            data = [1, 2, 3]
            cache_item = factory.build_cache_item(key, data)
            repository.store(cache_item)

        retrieve_result = repository.retrieve(str(1))
        self.assertIsInstance(retrieve_result, CacheItem)
示例#4
0
    def test_set_key_returns_same_data(self):
        settings = OrmucoCacheClientSettings()
        repository = MemoryRepository(settings)
        factory = CacheItemFactory(settings)

        key = 'some-key'
        data = [1, 2, 3]
        cache_item = factory.build_cache_item(key, data)

        store_result = repository.store(cache_item)
        self.assertEqual(store_result, True)

        retrieve_result = repository.retrieve(key)
        self.assertEqual(retrieve_result, cache_item)
示例#5
0
    def test_cache_item_expiration(self):
        settings = OrmucoCacheClientSettings()
        settings.cache_expiration = 0.0001
        repository = MemoryRepository(settings)
        factory = CacheItemFactory(settings)

        key = 'some-key'
        data = [1, 2, 3]
        cache_item = factory.build_cache_item(key, data)

        store_result = repository.store(cache_item)
        self.assertEqual(store_result, True)

        time.sleep(settings.cache_expiration)
        retrieve_result = repository.retrieve(key)
        self.assertEqual(retrieve_result, None)
示例#6
0
class ChainClientRepository(BaseRepository):
    def __init__(self, settings):
        super().__init__(settings)
        self.memory_repository = MemoryRepository(settings)
        self.network_repository = ClientNetworkRepository(settings)

    def retrieve(self, key):
        cache_item = self.memory_repository.retrieve(key)
        if cache_item != None:
            return cache_item

        cache_item = self.network_repository.retrieve(key)
        if cache_item != None:
            self.memory_repository.store(cache_item)

        return cache_item

    def store(self, cache_item):
        self.memory_repository.store(cache_item)
        self.network_repository.store(cache_item)
        return True
 def get_memory_repository(settings):
     if RepositoryFactory.memory_repository == None:
         RepositoryFactory.memory_repository = MemoryRepository(settings)
     return RepositoryFactory.memory_repository
示例#8
0
 def __init__(self, settings):
     super().__init__(settings)
     self.memory_repository = MemoryRepository(settings)
     self.network_repository = ClientNetworkRepository(settings)