def __init__(self, edrserver): self.server = edrserver self._player = EDPlayerOne() self.heartbeat_timestamp = None edr_config = EDRConfig() self._edr_heartbeat = edr_config.edr_heartbeat() try: with open(self.EDR_CMDRS_CACHE, 'rb') as handle: self.cmdrs_cache = pickle.load(handle) except: self.cmdrs_cache = LRUCache(edr_config.lru_max_size(), edr_config.cmdrs_max_age()) try: with open(self.EDR_INARA_CACHE, 'rb') as handle: self.inara_cache = pickle.load(handle) except: self.inara_cache = LRUCache(edr_config.lru_max_size(), edr_config.inara_max_age()) try: with open(self.EDR_SQDRDEX_CACHE, 'rb') as handle: self.sqdrdex_cache = pickle.load(handle) except: self.sqdrdex_cache = LRUCache(edr_config.lru_max_size(), edr_config.sqdrdex_max_age())
def test_get(self): c = LRUCache(3) c.put(4, 2) c.put(1, 1) c.put(2, 3) # get the first key self.assertEqual(c.get(2), 3) self.assertEqual(c.cache(), {2: 3, 1: 1, 4: 2}) self.assertEqual(c.size(), 3) # get the second key self.assertEqual(c.get(1), 1) self.assertEqual(c.cache(), {1: 1, 2: 3, 4: 2}) self.assertEqual(c.size(), 3) # get the last key self.assertEqual(c.get(4), 2) self.assertEqual(c.cache(), {4: 2, 2: 3, 1: 1}) self.assertEqual(c.size(), 3) # get a non-existing key self.assertEqual(c.get(40), -1) self.assertEqual(c.cache(), {4: 2, 2: 3, 1: 1}) self.assertEqual(c.size(), 3)
def test_removing_item_from_cache(): lru_cache = LRUCache(capacity=3) lru_cache[10] = 5 lru_cache[20] = 7 lru_cache[40] = 9 del lru_cache[10] assert list(lru_cache) == [(40, 9), (20, 7)]
def test_getting_last_item_2(): lru_cache = LRUCache(capacity=3) lru_cache[10] = 5 lru_cache[20] = 7 lru_cache[40] = 9 assert lru_cache[10] == 5 assert list(lru_cache) == [(10, 5), (40, 9), (20, 7)]
def test_getting_middle_item(): lru_cache = LRUCache(capacity=3) lru_cache[10] = 5 lru_cache[20] = 7 lru_cache[40] = 9 assert lru_cache[20] == 7 assert list(lru_cache) == [(20, 7), (40, 9), (10, 5)]
def test_adding_single_item_to_full_cache(): lru_cache = LRUCache(capacity=3) lru_cache[10] = 5 lru_cache[20] = 5 lru_cache[40] = 7 lru_cache[50] = 9 assert list(lru_cache) == [(50, 9), (40, 7), (20, 5)]
def test_updating_item(): lru_cache = LRUCache(capacity=3) lru_cache[10] = 5 lru_cache[20] = 7 lru_cache[40] = 9 lru_cache[20] = 10 assert list(lru_cache) == [(20, 10), (40, 9), (10, 5)]
def test_keys_appended_to_lru_cache_are_in_correct_order_after_get(self): context = LRUCache(capacity=5) context.set("Michael", "Jordan") context.set("Scotty", "Pippen") context.get("Michael") expected = OrderedDict([("Scotty", "Pippen"), ("Michael", "Jordan")]) assert context.cache == expected
def test_reset(self): cache = LRUCache(3,60) cache.set("a", 34) cache.reset() self.assertEqual(cache.keys(), []) self.assertEqual(cache.values(), []) self.assertEqual(cache.last_updated, None)
def test_lru_item_is_removed_from_cache(self): context = LRUCache(capacity=2) context.set("Michael", "Jordan") context.set("Scotty", "Pippen") context.set("Dennis", "Rodman") expected = OrderedDict([("Scotty", "Pippen"), ("Dennis", "Rodman")]) assert context.cache == expected
def __init__(self, cache_dir, cache_size_unblock=4096, cache_size_block=8192): """Cache for block test result. Two caches for block/unblock are used, so we can set different cache size for blocked or unblocked url cache. """ self.save_trigger = 64 self.cache_dir = cache_dir self.cache_filename_unblock = os.path.join(cache_dir, self.filename_unblock) self.cache_filename_block = os.path.join(cache_dir, self.filename_block) from lrucache import LRUCache self.cache_unblock = LRUCache(cache_size_unblock) self.cache_block = LRUCache(cache_size_block)
def test_lru_remember_everything(self): cache = LRUCache(5) cache[1] = '1' cache[2] = '2' cache[3] = '3' self.assertEqual("[(1, '1'), (2, '2'), (3, '3')]", str(cache)) self.assertEqual(3, len(cache))
def test_add_item_after_removing(): lru_cache = LRUCache(capacity=3) lru_cache[10] = 5 lru_cache[20] = 7 lru_cache[40] = 9 del lru_cache[10] lru_cache[50] = 11 assert list(lru_cache) == [(50, 11), (40, 9), (20, 7)]
def test_lru_keep_fresh(self): cache = LRUCache(3) cache[1] = '1' cache[2] = '2' cache[3] = '3' cache[4] = '4' self.assertEqual("[(2, '2'), (3, '3'), (4, '4')]", str(cache)) self.assertEqual(3, len(cache))
def test_clean(self): cache = LRUCache(3) cache[1] = '1' cache[2] = '2' cache[3] = '3' self.assertEqual(3, len(cache)) cache.clean() self.assertEqual(0, len(cache))
def test_adding_multiple_items_to_full_cache(): lru_cache = LRUCache(capacity=3) lru_cache[10] = 5 lru_cache[20] = 5 lru_cache[40] = 7 lru_cache[50] = 9 lru_cache[60] = 11 assert list(lru_cache) == [(60, 11), (50, 9), (40, 7)]
def test_read_counter_is_reset_when_read_limit_reached(self): context = LRUCache(capacity=1) context.set("Michael", "Jordan") for _ in range(11): context.get("Michael") context.set("Michael", "Jordan") context.get("Michael") assert context.get("Michael") == OrderedDict([("Michael", "Jordan")])
def test_instanciation_with_timeout_5sec(self): cache = LRUCache(5, 5) cache.put('first', 'first') cache.put('second', 'second') self.assertEqual(len(cache.keys()), 2) time.sleep(7) self.assertEqual(len(cache.keys()), 0) cache.stop_timer()
def test_key_is_removed_from_lru_cache_after_accessed_10_times(self): context = LRUCache(capacity=5) context.set("Michael", "Jordan") context.set("Scotty", "Pippen") for _ in range(11): context.get("Michael") expected = OrderedDict([("Scotty", "Pippen")]) assert context.cache == expected
def test_stale(self): cache = LRUCache(5, 1) sample = {"test": True, "foo": "bar"} key = "a" cache.set(key, sample) self.assertFalse(cache.is_stale(key)) time.sleep(1.2) self.assertTrue(cache.is_stale(key)) self.assertEqual(cache.get("a"), None)
def test_add_multiple_items_after_removing(): lru_cache = LRUCache(capacity=3) lru_cache[10] = 5 lru_cache[20] = 7 lru_cache[40] = 9 del lru_cache[10] lru_cache[50] = 11 lru_cache[60] = 13 assert list(lru_cache) == [(60, 13), (50, 11), (40, 9)]
def test_set_move_front(self): cache = LRUCache(2) cache.set('foo', 10) cache.set('bar', 20) cache.set('foo', 40) cache.set('baz', 30) self.assertEqual(cache.get('foo'), 40) self.assertEqual(cache.get('bar'), None) self.assertEqual(cache.get('baz'), 30)
def __init__(self): edr_config = EDRConfig() try: with open(self.EDR_FACTIONS_CACHE, 'rb') as handle: self.factions_cache = pickle.load(handle) except: self.factions_cache = LRUCache(edr_config.lru_max_size(), edr_config.factions_max_age())
def test_del_element(self): cache = LRUCache(4) cache[1] = '1' cache[2] = '2' cache[3] = '3' cache[4] = '4' del cache[3] self.assertEqual("[(1, '1'), (2, '2'), (4, '4')]", str(cache)) self.assertEqual(3, len(cache))
def test_reset(self): c = LRUCache(3) c.put(4, 2) c.put(1, 1) c.put(2, 3) # after reset, nothing existing in the cache c.reset() self.assertEqual(c.size(), 0) self.assertEqual(c.cache(), {})
def test_pop_element(self): cache = LRUCache(3) cache[1] = '1' cache[2] = '2' cache[3] = '3' self.assertEqual("[(1, '1'), (2, '2'), (3, '3')]", str(cache)) self.assertEqual('1', cache.pop(1)) self.assertEqual("[(2, '2'), (3, '3')]", str(cache)) self.assertEqual(2, len(cache)) self.assertRaises(KeyError, cache.pop, 1)
def test_get_element(self): cache = LRUCache(3) cache[1] = '1' cache[2] = '2' cache[3] = '3' self.assertEqual('test', cache.get(11, 'test')) self.assertEqual("[(1, '1'), (2, '2'), (3, '3')]", str(cache)) self.assertEqual('1', cache.get(1, 'test')) self.assertEqual("[(2, '2'), (3, '3'), (1, '1')]", str(cache)) self.assertEqual(3, len(cache))
def test_lru_fresh_on_access(self): cache = LRUCache(3) cache[1] = '1' cache[2] = '2' cache[3] = '3' # Just access to first element. _ = cache[1] self.assertEqual("[(2, '2'), (3, '3'), (1, '1')]", str(cache)) self.assertEqual(3, len(cache))
def test_instanciation_without_timeout(self): cache = LRUCache(5) cache.put('1', '2') cache.put('2', '3') cache.put('3', '4') cache.put('4', '5') cache.put('first', 'value') self.assertEqual(cache.get('1'), '2') self.assertEqual(cache.get('2'), '3') self.assertEqual(cache.get('3'), '4') self.assertEqual(cache.get('4'), '5') self.assertEqual(cache.get('5'), -1)
def test_get_dict_copy_and_keys(self): cache = LRUCache(3) cache[1] = '1' cache[2] = '2' cache[3] = '3' self.assertEqual({1: '1', 2: '2', 3: '3'}, cache.dict_copy()) keys = cache.keys() # Sort keys to make sure they are in the same order on all platforms. keys.sort() self.assertEqual([1, 2, 3], keys) self.assertEqual(3, len(cache))