def test_store_literal(self): cache = Cache(self.__dir, 10) val = b"0123456789" cache.set("key", val) self.assertEqual(cache.size, 10) self.assertTrue(cache.has("key")) self.assertEqual(cache.get_value("key"), val)
def test_not_expired(self): cache = Cache(self.__dir, 40, min_time=1) val = b"0123456789" cache.set("key1", val) with self.assertRaises(ProtectedError): cache.delete("key1") time.sleep(1) cache.delete("key1") self.assertEqual(cache.size, 0)
def test_delete(self): cache = Cache(self.__dir, 25, min_time=0) val = b"0123456789" cache.set("key1", val) self.assertTrue(cache.has("key1")) self.assertEqual(cache.size, 10) cache.delete("key1") self.assertFalse(cache.has("key1")) self.assertEqual(cache.size, 0)
def test_access_data(self): cache = Cache(self.__dir, 25, min_time=0) val = b"0123456789" cache.set("key", val) self.assertEqual(cache.get_value("key"), val) with cache.get_fileobj("key") as f: self.assertEqual(f.read(), val) with open(cache.get("key"), "rb") as f: self.assertEqual(f.read(), val)
def test_no_auto_prune(self): cache = Cache(self.__dir, 10, min_time=0, auto_prune=False) val = b"0123456789" cache.set("key1", val) cache.set("key2", val) cache.set("key3", val) cache.set("key4", val) self.assertEqual(cache.size, 40) cache.prune() self.assertEqual(cache.size, 10)
def test_missing_cache_file(self): cache = Cache(self.__dir, 10, min_time=0) val = b"0123456789" os.remove(cache.set("key", val)) self.assertEqual(cache.size, 10) self.assertFalse(cache.has("key")) self.assertEqual(cache.size, 0) os.remove(cache.set("key", val)) self.assertEqual(cache.size, 10) with self.assertRaises(CacheMiss): cache.get("key") self.assertEqual(cache.size, 0)
def test_accessing_preserves(self): cache = Cache(self.__dir, 25, min_time=0) val = b"0123456789" cache.set("key1", val) cache.set("key2", val) self.assertEqual(cache.size, 20) cache.get_value("key1") cache.set("key3", val) self.assertEqual(cache.size, 20) self.assertTrue(cache.has("key1")) self.assertFalse(cache.has("key2")) self.assertTrue(cache.has("key3"))
def test_min_time_clear(self): cache = Cache(self.__dir, 40, min_time=1) val = b"0123456789" cache.set("key1", val) cache.set("key2", val) time.sleep(1) cache.set("key3", val) cache.set("key4", val) self.assertEqual(cache.size, 40) cache.clear() self.assertEqual(cache.size, 20) time.sleep(1) cache.clear() self.assertEqual(cache.size, 0)
def test_replace(self): cache = Cache(self.__dir, 20) val_small = b"0" val_big = b"0123456789" cache.set("key", val_small) self.assertEqual(cache.size, 1) cache.set("key", val_big) self.assertEqual(cache.size, 10) cache.set("key", val_small) self.assertEqual(cache.size, 1)
def test_automatic_delete_oldest(self): cache = Cache(self.__dir, 25, min_time=0) val = b"0123456789" cache.set("key1", val) self.assertTrue(cache.has("key1")) self.assertEqual(cache.size, 10) cache.set("key2", val) self.assertEqual(cache.size, 20) self.assertTrue(cache.has("key1")) self.assertTrue(cache.has("key2")) cache.set("key3", val) self.assertEqual(cache.size, 20) self.assertFalse(cache.has("key1")) self.assertTrue(cache.has("key2")) self.assertTrue(cache.has("key3"))
def test_existing_files_order(self): cache = Cache(self.__dir, 30) val = b"0123456789" cache.set("key1", val) cache.set("key2", val) cache.set("key3", val) self.assertEqual(cache.size, 30) # file mtime is accurate to the second time.sleep(1) cache.get_value("key1") cache = Cache(self.__dir, 30, min_time=0) self.assertEqual(cache.size, 30) self.assertTrue(cache.has("key1")) self.assertTrue(cache.has("key2")) self.assertTrue(cache.has("key3")) cache.set("key4", val) self.assertEqual(cache.size, 30) self.assertTrue(cache.has("key1")) self.assertFalse(cache.has("key2")) self.assertTrue(cache.has("key3")) self.assertTrue(cache.has("key4"))