def test_incorrect_params(self): with pytest.raises(TypeError): cache.ttl_cache("cache", lambda: 1) with pytest.raises(TypeError): cache.ttl_cache(cache.FifoCache(4), "function") c = cache.ttl_cache(cache.FifoCache(10), lambda: 5) with pytest.raises(ValueError): c.put(1, ttl=2, expires=8)
def test_naming(self): c = cache.ttl_cache(cache.FifoCache(4), lambda: 0) self.assertEqual(c.get.__name__, 'get') self.assertEqual(c.put.__name__, 'put') self.assertEqual(c.dump.__name__, 'dump') self.assertEqual(c.clear.__name__, 'clear') self.assertEqual(c.has.__name__, 'has')
def test_naming(self): c = cache.ttl_cache(cache.FifoCache(4), lambda: 0) assert c.get.__name__ == 'get' assert c.put.__name__ == 'put' assert c.dump.__name__ == 'dump' assert c.clear.__name__ == 'clear' assert c.has.__name__ == 'has'
def test_inf_ttl(self): curr_time = 1 f_time = lambda: curr_time c = cache.ttl_cache(cache.FifoCache(5), f_time) c.put(1) c.put(2) c.put(3) curr_time = 1000 dump = c.dump() self.assertIn((1, np.infty), dump) self.assertIn((2, np.infty), dump) self.assertIn((3, np.infty), dump) c.put(1, ttl=100) curr_time = 2000 dump = c.dump() self.assertEqual(len(dump), 3) self.assertIn((1, np.infty), dump) self.assertIn((2, np.infty), dump) self.assertIn((3, np.infty), dump) c.put(4, ttl=200) dump = c.dump() self.assertEqual(len(dump), 4) self.assertEqual(dump[0], (4, 2200)) self.assertIn((1, np.infty), dump) self.assertIn((2, np.infty), dump) self.assertIn((3, np.infty), dump) curr_time = 3000 dump = c.dump() self.assertEqual(len(dump), 3) self.assertIn((1, np.infty), dump) self.assertIn((2, np.infty), dump) self.assertIn((3, np.infty), dump)
def test_naming(self): c = cache.ttl_cache(cache.FifoCache(4), lambda: 0) assert c.get.__name__ == "get" assert c.put.__name__ == "put" assert c.dump.__name__ == "dump" assert c.clear.__name__ == "clear" assert c.has.__name__ == "has"
def test_inf_ttl(self): curr_time = 1 def f_time(): return curr_time c = cache.ttl_cache(cache.FifoCache(5), f_time) c.put(1) c.put(2) c.put(3) curr_time = 1000 dump = c.dump() assert (1, np.infty) in dump assert (2, np.infty) in dump assert (3, np.infty) in dump c.put(1, ttl=100) curr_time = 2000 dump = c.dump() assert len(dump) == 3 assert (1, np.infty) in dump assert (2, np.infty) in dump assert (3, np.infty) in dump c.put(4, ttl=200) dump = c.dump() assert len(dump) == 4 assert dump[0] == (4, 2200) assert (1, np.infty) in dump assert (2, np.infty) in dump assert (3, np.infty) in dump curr_time = 3000 dump = c.dump() assert len(dump) == 3 assert (1, np.infty) in dump assert (2, np.infty) in dump assert (3, np.infty) in dump
def test_naming(self): c = cache.insert_after_k_hits_cache(cache.FifoCache(3), k=3) assert c.get.__name__ == "get" assert c.put.__name__ == "put" assert c.dump.__name__ == "dump" assert c.clear.__name__ == "clear" assert len(c.get.__doc__) > 0 assert len(c.put.__doc__) > 0 assert len(c.dump.__doc__) > 0 assert len(c.clear.__doc__) > 0
def test_naming(self): c = cache.insert_after_k_hits_cache(cache.FifoCache(3), k=3) assert c.get.__name__ == 'get' assert c.put.__name__ == 'put' assert c.dump.__name__ == 'dump' assert c.clear.__name__ == 'clear' assert len(c.get.__doc__) > 0 assert len(c.put.__doc__) > 0 assert len(c.dump.__doc__) > 0 assert len(c.clear.__doc__) > 0
def test_naming(self): c = cache.insert_after_k_hits_cache(cache.FifoCache(3), k=3) self.assertEqual(c.get.__name__, 'get') self.assertEqual(c.put.__name__, 'put') self.assertEqual(c.dump.__name__, 'dump') self.assertEqual(c.clear.__name__, 'clear') self.assertGreater(len(c.get.__doc__), 0) self.assertGreater(len(c.put.__doc__), 0) self.assertGreater(len(c.dump.__doc__), 0) self.assertGreater(len(c.clear.__doc__), 0)
def test_naming(self): c = cache.keyval_cache(cache.FifoCache(3)) self.assertEqual(c.get.__name__, 'get') self.assertEqual(c.put.__name__, 'put') self.assertEqual(c.dump.__name__, 'dump') self.assertEqual(c.clear.__name__, 'clear') self.assertGreater(len(c.get.__doc__), 0) self.assertGreater(len(c.put.__doc__), 0) self.assertGreater(len(c.dump.__doc__), 0) self.assertGreater(len(c.clear.__doc__), 0)
def test_eviction(self): curr_time = 0 f_time = lambda: curr_time c = cache.ttl_cache(cache.FifoCache(3), f_time) assert c.put(1, ttl=4) is None assert c.put(2, ttl=6) is None assert c.put(3, ttl=8) is None assert c.put(4, ttl=10) == 1 curr_time = 7 assert c.put(5, ttl=12) is None
def test_eviction(self): curr_time = 0 f_time = lambda: curr_time c = cache.ttl_cache(cache.FifoCache(3), f_time) self.assertIsNone(c.put(1, ttl=4)) self.assertIsNone(c.put(2, ttl=6)) self.assertIsNone(c.put(3, ttl=8)) self.assertEqual(c.put(4, ttl=10), 1) curr_time = 7 self.assertIsNone(c.put(5, ttl=12))
def test_naming(self): c = cache.keyval_cache(cache.FifoCache(3)) assert c.get.__name__ == 'get' assert c.put.__name__ == 'put' assert c.dump.__name__ == 'dump' assert c.clear.__name__ == 'clear' assert len(c.get.__doc__) > 0 assert len(c.put.__doc__) > 0 assert len(c.dump.__doc__) > 0 assert len(c.clear.__doc__) > 0
def test_naming(self): c = cache.keyval_cache(cache.FifoCache(3)) assert c.get.__name__ == "get" assert c.put.__name__ == "put" assert c.dump.__name__ == "dump" assert c.clear.__name__ == "clear" assert len(c.get.__doc__) > 0 assert len(c.put.__doc__) > 0 assert len(c.dump.__doc__) > 0 assert len(c.clear.__doc__) > 0
def test_clear(self): curr_time = 1 f_time = lambda: curr_time c = cache.ttl_cache(cache.FifoCache(3), f_time) c.put(1, ttl=4) c.put(2, ttl=5) c.put(1, ttl=8) c.put(3, ttl=3) c.put(4, ttl=1) c.clear() assert len(c) == 0 assert c.dump() == []
def test_clear(self): curr_time = 1 f_time = lambda: curr_time c = cache.ttl_cache(cache.FifoCache(3), f_time) c.put(1, ttl=4) c.put(2, ttl=5) c.put(1, ttl=8) c.put(3, ttl=3) c.put(4, ttl=1) c.clear() self.assertEqual(len(c), 0) self.assertEqual(c.dump(), [])
def test_remove(self): c = cache.FifoCache(4) c.put(1) c.put(2) c.put(3) c.remove(2) self.assertEqual(len(c), 2) self.assertEqual(c.dump(), [3, 1]) c.put(4) c.put(5) self.assertEqual(c.dump(), [5, 4, 3, 1]) c.remove(5) self.assertEqual(len(c), 3) self.assertEqual(c.dump(), [4, 3, 1])
def test_remove(self): c = cache.FifoCache(4) c.put(1) c.put(2) c.put(3) c.remove(2) assert len(c) == 2 assert c.dump() == [3, 1] c.put(4) c.put(5) assert c.dump() == [5, 4, 3, 1] c.remove(5) assert len(c) == 3 assert c.dump() == [4, 3, 1]
def test_get(self): curr_time = 1 f_time = lambda: curr_time c = cache.ttl_cache(cache.FifoCache(3), f_time) c.put(1, ttl=2) assert c.get(1) assert not c.get(2) assert c.get(1) c.put(2, ttl=7) assert c.get(1) assert c.get(2) curr_time = 4 assert not c.get(1) assert c.get(2) curr_time = 15 assert not c.get(1) assert not c.get(2)
def test_get(self): curr_time = 1 f_time = lambda: curr_time c = cache.ttl_cache(cache.FifoCache(3), f_time) c.put(1, ttl=2) self.assertTrue(c.get(1)) self.assertFalse(c.get(2)) self.assertTrue(c.get(1)) c.put(2, ttl=7) self.assertTrue(c.get(1)) self.assertTrue(c.get(2)) curr_time = 4 self.assertFalse(c.get(1)) self.assertTrue(c.get(2)) curr_time = 15 self.assertFalse(c.get(1)) self.assertFalse(c.get(2))
def test_key_val_cache(self): c = cache.keyval_cache(cache.FifoCache(3)) c.put(1, 11) self.assertEqual(c.get(1), 11) c.put(1, 12) self.assertEqual(c.get(1), 12) self.assertEqual(c.dump(), [(1, 12)]) c.put(2, 21) self.assertTrue(c.has(1)) self.assertTrue(c.has(2)) c.put(3, 31) k, v = c.put(4, 41) self.assertEqual(c.remove(2), 21) self.assertEqual(len(c), 2) self.assertEqual((k, v), (1, 12)) c.clear() self.assertEqual(len(c), 0)
def test_key_val_cache(self): c = cache.keyval_cache(cache.FifoCache(3)) c.put(1, 11) assert c.get(1) == 11 c.put(1, 12) assert c.get(1) == 12 assert c.dump() == [(1, 12)] c.put(2, 21) assert c.has(1) assert c.has(2) c.put(3, 31) k, v = c.put(4, 41) assert c.remove(2) == 21 assert len(c) == 2 assert (k, v) == (1, 12) c.clear() assert len(c) == 0
def test_key_val_cache(self): c = cache.keyval_cache(cache.FifoCache(3)) c.put(1, 11) self.assertEqual(c.get(1), 11) c.put(1, 12) self.assertEqual(c.get(1), 12) self.assertEqual(c.dump(), [(1, 12)]) c.put(2, 21) self.assertTrue(c.has(1)) self.assertTrue(c.has(2)) c.put(3, 31) k, v = c.put(4, 41) self.assertEqual((k, v), (1, 12)) c.clear() self.assertEqual(len(c), 0) self.assertEqual(c.get.__name__, 'get') self.assertEqual(c.put.__name__, 'put') self.assertEqual(c.dump.__name__, 'dump') self.assertEqual(c.clear.__name__, 'clear')
def test_put_dump(self): curr_time = 1 f_time = lambda: curr_time c = cache.ttl_cache(cache.FifoCache(4), f_time) c.put(1, ttl=2) c.put(2, ttl=5) c.put(3, ttl=3) assert c.dump() == [(3, 4), (2, 6), (1, 3)] assert c.has(1) assert c.has(2) assert c.has(3) curr_time = 4 assert not c.has(1) assert c.has(2) assert c.has(3) assert c.dump() == [(3, 4), (2, 6)] c.put(3, ttl=6) assert c.dump() == [(3, 10), (2, 6)] curr_time = 11 assert c.dump() == []
def test_put_dump(self): curr_time = 1 f_time = lambda: curr_time c = cache.ttl_cache(cache.FifoCache(4), f_time) c.put(1, ttl=2) c.put(2, ttl=5) c.put(3, ttl=3) self.assertEqual(c.dump(), [(3, 4), (2, 6), (1, 3)]) self.assertTrue(c.has(1)) self.assertTrue(c.has(2)) self.assertTrue(c.has(3)) curr_time = 4 self.assertFalse(c.has(1)) self.assertTrue(c.has(2)) self.assertTrue(c.has(3)) self.assertEqual(c.dump(), [(3, 4), (2, 6)]) c.put(3, ttl=6) self.assertEqual(c.dump(), [(3, 10), (2, 6)]) curr_time = 11 self.assertEqual(c.dump(), [])
def test_do(self): c = cache.FifoCache(2) assert len(c) == 0 c.do('PUT', 1) assert len(c) == 1 c.do('UPDATE', 1) assert len(c) == 1 assert c.do('GET', 1) c.do('PUT', 2) assert c.do('GET', 2) assert len(c) == 2 assert c.dump() == [2, 1] c.do('PUT', 3) assert len(c) == 2 assert c.dump() == [3, 2] assert c.do('GET', 2) assert c.do('GET', 3) assert not c.do('GET', 1) c.do('DELETE', 3) assert not c.do('GET', 3) assert c.dump() == [2] c.do('DELETE', 2) assert not c.do('GET', 2) assert c.dump() == []
def test_do(self): c = cache.FifoCache(2) assert len(c) == 0 c.do("PUT", 1) assert len(c) == 1 c.do("UPDATE", 1) assert len(c) == 1 assert c.do("GET", 1) c.do("PUT", 2) assert c.do("GET", 2) assert len(c) == 2 assert c.dump() == [2, 1] c.do("PUT", 3) assert len(c) == 2 assert c.dump() == [3, 2] assert c.do("GET", 2) assert c.do("GET", 3) assert not c.do("GET", 1) c.do("DELETE", 3) assert not c.do("GET", 3) assert c.dump() == [2] c.do("DELETE", 2) assert not c.do("GET", 2) assert c.dump() == []
def test_fifo(self): c = cache.FifoCache(4) assert len(c) == 0 c.put(1) assert len(c) == 1 c.put(2) assert len(c) == 2 c.put(3) assert len(c) == 3 c.put(4) assert len(c) == 4 assert c.dump() == [4, 3, 2, 1] c.put(5) assert len(c) == 4 assert c.dump() == [5, 4, 3, 2] c.get(2) assert c.dump() == [5, 4, 3, 2] c.get(4) assert c.dump() == [5, 4, 3, 2] c.put(6) assert c.dump() == [6, 5, 4, 3] c.clear() assert len(c) == 0 assert c.dump() == []
def test_fifo(self): c = cache.FifoCache(4) self.assertEquals(len(c), 0) c.put(1) self.assertEquals(len(c), 1) c.put(2) self.assertEquals(len(c), 2) c.put(3) self.assertEquals(len(c), 3) c.put(4) self.assertEquals(len(c), 4) self.assertEquals(c.dump(), [4, 3, 2, 1]) c.put(5) self.assertEquals(len(c), 4) self.assertEquals(c.dump(), [5, 4, 3, 2]) c.get(2) self.assertEquals(c.dump(), [5, 4, 3, 2]) c.get(4) self.assertEquals(c.dump(), [5, 4, 3, 2]) c.put(6) self.assertEquals(c.dump(), [6, 5, 4, 3]) c.clear() self.assertEquals(len(c), 0) self.assertEquals(c.dump(), [])
def test_do(self): c = cache.FifoCache(2) self.assertEquals(len(c), 0) c.do('PUT', 1) self.assertEquals(len(c), 1) c.do('UPDATE', 1) self.assertEquals(len(c), 1) self.assertTrue(c.do('GET', 1)) c.do('PUT', 2) self.assertTrue(c.do('GET', 2)) self.assertEquals(len(c), 2) self.assertEquals(c.dump(), [2, 1]) c.do('PUT', 3) self.assertEquals(len(c), 2) self.assertEquals(c.dump(), [3, 2]) self.assertTrue(c.do('GET', 2)) self.assertTrue(c.do('GET', 3)) self.assertFalse(c.do('GET', 1)) c.do('DELETE', 3) self.assertFalse(c.do('GET', 3)) self.assertEquals(c.dump(), [2]) c.do('DELETE', 2) self.assertFalse(c.do('GET', 2)) self.assertEquals(c.dump(), [])