def test_get_deletes_expired_key(self): key1, expected1 = 'key1', 'value1' key2, expected2 = 'key2', 'value2' key3, expected3 = 'key3', 'value3' c = Cache() c.set(key1, expected1, 0.03) c.set(key2, expected2) c.set(key3, expected3, 0.05) sleep(0.12) self.assertRaises(KeyExpiredError, c.get, key1) self.assertRaises(KeyExpiredError, c.get, key3) self.assertEquals(len(c), 1) self.assertNotIn(key1, c) self.assertIn(key2, c) self.assertNotIn(key3, c) # It will be arranged in the same order as .get were called in self.assertListEqual(c._expired_on_op, [key1, key3]) deleted = c.delete_expired() self.assertEquals(sorted(deleted), [key1, key3]) self.assertListEqual(c._expired_on_op, [])
def test_set_already_exists_extend_expiry_on_set_false(self): key1, expected1 = 'key1', 'value1' expected1_new = 'value1_new' c = Cache(extend_expiry_on_set=False) c.set(key1, expected1, 0.1) sleep(0.11) self.assertRaises(KeyExpiredError, c.set, key1, expected1_new) self.assertEquals(len(c), 0) self.assertListEqual(c._expired_on_op, [key1]) deleted = c.delete_expired() self.assertEquals(sorted(deleted), [key1]) self.assertListEqual(c._expired_on_op, [])
def test_delete_expired(self): key1, expected1 = 'key1', 'value1' key2, expected2 = 'key2', 'value2' key3, expected3 = 'key3', 'value3' c = Cache() c.set(key1, expected1, 0.1) c.set(key2, expected2) c.set(key3, expected3, 0.03) sleep(0.12) deleted = c.delete_expired() self.assertEquals(sorted(deleted), [key1, key3]) self.assertEquals(len(c), 1) self.assertNotIn(key1, c) self.assertIn(key2, c) self.assertNotIn(key3, c)