def test_data_overwrite(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) data = [1, 2, 3, 4] 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.data, data)
class StoreCommand: COMMAND_PREFIX = 'STR' def __init__(self, settings): self.settings = settings self.repository = RepositoryFactory.build_repository(settings) self.cache_item_factory = CacheItemFactory(self.settings) def execute(self, key, data): cache_item = self.cache_item_factory.build_cache_item(key, data) return self.repository.store(cache_item)
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)
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)
def test_store_to_invalid_server(self): settings = OrmucoCacheClientSettings() settings.server.port = 12424 repository = ClientNetworkRepository(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, False)
def test_set_key_returns_same_data(self): settings = OrmucoCacheClientSettings() repository = ClientNetworkRepository(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.data, data)
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)