Esempio n. 1
0
 def test_lru(self):
     cache = StateCache(5)
     cache.put("key", "cache_token", "value")
     cache.put("key2", "cache_token2", "value2")
     cache.put("key3", "cache_token", "value0")
     cache.put("key3", "cache_token", "value3")
     cache.put("key4", "cache_token4", "value4")
     cache.put("key5", "cache_token", "value0")
     cache.put("key5", "cache_token", ["value5"])
     self.assertEqual(len(cache), 5)
     self.assertEqual(cache.get("key", "cache_token"), "value")
     self.assertEqual(cache.get("key2", "cache_token2"), "value2")
     self.assertEqual(cache.get("key3", "cache_token"), "value3")
     self.assertEqual(cache.get("key4", "cache_token4"), "value4")
     self.assertEqual(cache.get("key5", "cache_token"), ["value5"])
     # insert another key to trigger cache eviction
     cache.put("key6", "cache_token2", "value7")
     self.assertEqual(len(cache), 5)
     # least recently used key should be gone ("key")
     self.assertEqual(cache.get("key", "cache_token"), None)
     # trigger a read on "key2"
     cache.get("key2", "cache_token")
     # insert another key to trigger cache eviction
     cache.put("key7", "cache_token", "value7")
     self.assertEqual(len(cache), 5)
     # least recently used key should be gone ("key3")
     self.assertEqual(cache.get("key3", "cache_token"), None)
     # trigger a put on "key2"
     cache.put("key2", "cache_token", "put")
     self.assertEqual(len(cache), 5)
     # insert another key to trigger cache eviction
     cache.put("key8", "cache_token", "value8")
     self.assertEqual(len(cache), 5)
     # least recently used key should be gone ("key4")
     self.assertEqual(cache.get("key4", "cache_token"), None)
     # make "key5" used by appending to it
     cache.extend("key5", "cache_token", ["another"])
     # least recently used key should be gone ("key6")
     self.assertEqual(cache.get("key6", "cache_token"), None)
Esempio n. 2
0
 def test_extend(self):
     cache = StateCache(3)
     cache.put("key", "cache_token", ['val'])
     # test extend for existing key
     cache.extend("key", "cache_token", ['yet', 'another', 'val'])
     self.assertEqual(len(cache), 1)
     self.assertEqual(cache.get("key", "cache_token"),
                      ['val', 'yet', 'another', 'val'])
     # test extend without existing key
     cache.extend("key2", "cache_token", ['another', 'val'])
     self.assertEqual(len(cache), 2)
     self.assertEqual(cache.get("key2", "cache_token"), ['another', 'val'])
     # test eviction in case the cache token changes
     cache.extend("key2", "new_token", ['new_value'])
     self.assertEqual(cache.get("key2", "new_token"), None)
     self.assertEqual(len(cache), 1)