class FileCacheTest(unittest.TestCase): def setUp (self): self.cache = FileCache('test_cache') def tearDown (self): os.system('rm -fr test_cache') def testTimeouts (self): self.assertEqual(self.cache.get('date/test/1'), None, 'Key already exists in cache') self.cache.set('date/test/1', '1', timeout=3) self.assertEqual(self.cache.get('date/test/1'), '1', 'Key not properly cached') time.sleep(4) self.assertEqual(self.cache.get('date/test/1'), None, 'Timeout failed') # if _default_timeout is 0, timeouts are simply not checked self.cache.wipe() self.cache._default_timeout = 0 self.assertEqual(self.cache.get('date/test/1'), None, 'Key already exists in cache') self.cache.set('date/test/1', '1', timeout=3) self.assertEqual(self.cache.get('date/test/1'), '1', 'Key not properly cached') time.sleep(4) self.assert_(self.cache.has_key('date/test/1')) self.assertEqual(self.cache.get('date/test/1'), '1', 'Key got timedout and should not') def testMaxSize (self): empty_size, cache_block = _testCacheFSBlockSize(self.cache) self.cache._max_size = empty_size + 4*cache_block + 1 # There is an overhead (8 bytes in my system) for timestamp per file, # and the limit is only enforced after we cross over it for i in range(6): self.cache.set('date/test/%d' % i, 'abcdefgh'*127*cache_block) for i in range(4): self.assertEqual(self.cache.get('date/test/%d' % i), 'abcdefgh'*127*cache_block, 'Key %d not properly cached' % i) self.assertEqual(self.cache.get('date/test/5'), None, 'Size limit failed') self.cache._max_size = 0 self.cache.wipe() for i in range(6): self.cache.set('date/test/%d' % i, 'abcdefgh'*127*cache_block) for i in range(6): self.assertEqual(self.cache.get('date/test/%d' % i), 'abcdefgh'*127*cache_block, 'Key %d not properly cached' % i) def testMaxEntries (self): self.cache._max_entries = 2 self.cache.set('date/test/1', '1') self.cache.set('date/test/2', '2') self.cache.set('date/test/3', '3') self.assertEqual(self.cache.get('date/test/1'), '1', 'Key not properly cached') self.assertEqual(self.cache.get('date/test/2'), '2', 'Key not properly cached') self.assertEqual(self.cache.get('date/test/3'), None, 'File number limit failed') self.cache.wipe() self.cache._max_entries = 0 self.cache.set('date/test/1', '1') self.cache.set('date/test/2', '2') self.cache.set('date/test/3', '3') self.assertEqual(self.cache.get('date/test/1'), '1', 'Key not properly cached') self.assertEqual(self.cache.get('date/test/2'), '2', 'Key not properly cached') self.assertEqual(self.cache.get('date/test/3'), '3', 'Key not properly cached') def testPurge (self): self.cache._max_entries = 2 self.cache._default_timeout = 3 self.cache.set('date/test/1', '1') self.cache.set('date/test/2', '2') self.cache.set('date/test/3', '3') self.assertEqual(self.cache.get('date/test/1'), '1', 'Key not properly cached') self.assertEqual(self.cache.get('date/test/2'), '2', 'Key not properly cached') self.assertEqual(self.cache.get('date/test/3'), None, 'File number limit failed') time.sleep(4) self.cache.set('date/test/3', '3') self.assertEqual(self.cache.get('date/test/3'), '3', 'Purge not working') def testOther (self): # set should only accept strings as values self.assertRaises(ValueError, self.cache.set, 'date/test/1', 123) # keys can't have .. or start with / self.assertRaises(ValueError, self.cache.set, '/date/test/1', '1') self.assertRaises(ValueError, self.cache.set, 'date/test/../1', '1') # get some test data in self.cache.set('date/test/1', '1') self.cache.set('date/test/2', '2') self.cache.set('date/test/3', '3') self.assertEqual(self.cache.get('date/test/1'), '1', 'Key not properly cached') self.assertEqual(self.cache.get('date/test/2'), '2', 'Key not properly cached') self.assertEqual(self.cache.get('date/test/3'), '3', 'Key not properly cached') # check has_key self.assert_(self.cache.has_key('date/test/1')) self.assert_(not self.cache.has_key('date/test/bogus')) # assert wipe() nukes the whole thing self.assertEqual(self.cache._num_entries, 3) self.cache.wipe() self.assertEqual(self.cache._num_entries, 0)
class TestFileCache(object): @pytest.fixture(autouse=True) def setUp (self, request): def fin (): os.system('rm -fr test_cache') request.addfinalizer(fin) self.cache = FileCache('test_cache') def testTimeouts (self): assert self.cache.get('date/test/1') == None, 'Key already exists in cache' self.cache.set('date/test/1', '1', timeout=3) assert self.cache.get('date/test/1') == '1', 'Key not properly cached' time.sleep(4) assert self.cache.get('date/test/1') == None, 'Timeout failed' # if _default_timeout is 0, timeouts are simply not checked self.cache.wipe() self.cache._default_timeout = 0 assert self.cache.get('date/test/1') == None, 'Key already exists in cache' self.cache.set('date/test/1', '1', timeout=3) assert self.cache.get('date/test/1') == '1', 'Key not properly cached' time.sleep(4) assert self.cache.has_key('date/test/1') assert self.cache.get('date/test/1') == '1', 'Key got timedout and should not' def testMaxSize (self): empty_size, cache_block = _testCacheFSBlockSize(self.cache) self.cache._max_size = empty_size + 4*cache_block + 1 # There is an overhead (8 bytes in my system) for timestamp per file, # and the limit is only enforced after we cross over it for i in range(6): self.cache.set('date/test/%d' % i, 'abcdefgh'*127*cache_block) for i in range(4): assert self.cache.get('date/test/%d' % i) == 'abcdefgh'*127*cache_block,\ 'Key %d not properly cached' % i assert self.cache.get('date/test/5') == None, 'Size limit failed' self.cache._max_size = 0 self.cache.wipe() for i in range(6): self.cache.set('date/test/%d' % i, 'abcdefgh'*127*cache_block) for i in range(6): assert self.cache.get('date/test/%d' % i) == 'abcdefgh'*127*cache_block,\ 'Key %d not properly cached' % i def testMaxEntries (self): self.cache._max_entries = 2 self.cache.set('date/test/1', '1') self.cache.set('date/test/2', '2') self.cache.set('date/test/3', '3') assert self.cache.get('date/test/1') == '1', 'Key not properly cached' assert self.cache.get('date/test/2') == '2', 'Key not properly cached' assert self.cache.get('date/test/3') == None, 'File number limit failed' self.cache.wipe() self.cache._max_entries = 0 self.cache.set('date/test/1', '1') self.cache.set('date/test/2', '2') self.cache.set('date/test/3', '3') assert self.cache.get('date/test/1') == '1', 'Key not properly cached' assert self.cache.get('date/test/2') == '2', 'Key not properly cached' assert self.cache.get('date/test/3') == '3', 'Key not properly cached' def testPurge (self): self.cache._max_entries = 2 self.cache._default_timeout = 3 self.cache.set('date/test/1', '1') self.cache.set('date/test/2', '2') self.cache.set('date/test/3', '3') assert self.cache.get('date/test/1') == '1', 'Key not properly cached' assert self.cache.get('date/test/2') == '2', 'Key not properly cached' assert self.cache.get('date/test/3') == None, 'File number limit failed' time.sleep(4) self.cache.set('date/test/3', '3') assert self.cache.get('date/test/3') == '3', 'Purge not working' def testOther (self): # set should only accept strings as values pytest.raises(ValueError, self.cache.set, 'date/test/1', 123) # keys can't have .. or start with / pytest.raises(ValueError, self.cache.set, '/date/test/1', '1') pytest.raises(ValueError, self.cache.set, 'date/test/../1', '1') # get some test data in self.cache.set('date/test/1', '1') self.cache.set('date/test/2', '2') self.cache.set('date/test/3', '3') assert self.cache.get('date/test/1') == '1', 'Key not properly cached' assert self.cache.get('date/test/2') == '2', 'Key not properly cached' assert self.cache.get('date/test/3') == '3', 'Key not properly cached' # check has_key assert self.cache.has_key('date/test/1') assert not self.cache.has_key('date/test/bogus') # assert wipe() nukes the whole thing assert self.cache._num_entries == 3 self.cache.wipe() assert self.cache._num_entries == 0
class TestFileCache(object): @pytest.fixture(autouse=True) def setUp(self, request): def fin(): os.system('rm -fr test_cache') request.addfinalizer(fin) self.cache = FileCache('test_cache') def testTimeouts(self): assert (self.cache.get('date/test/1') is None, 'Key already exists in cache') self.cache.set('date/test/1', '1', timeout=3) assert self.cache.get('date/test/1') == '1', 'Key not properly cached' time.sleep(4) assert self.cache.get('date/test/1') is None, 'Timeout failed' # if _default_timeout is 0, timeouts are simply not checked self.cache.wipe() self.cache._default_timeout = 0 assert (self.cache.get('date/test/1') is None, 'Key already exists in cache') self.cache.set('date/test/1', '1', timeout=3) assert (self.cache.get('date/test/1') == '1', 'Key not properly cached') time.sleep(4) assert self.cache.has_key('date/test/1') # noqa assert (self.cache.get('date/test/1') == '1', 'Key got timedout and should not') def testMaxSize(self): empty_size, cache_block = _testCacheFSBlockSize(self.cache) self.cache._max_size = empty_size + 4 * cache_block + 1 # There is an overhead (8 bytes in my system) for timestamp per file, # and the limit is only enforced after we cross over it for i in range(6): self.cache.set('date/test/%d' % i, 'abcdefgh' * 127 * cache_block) for i in range(4): assert (self.cache.get('date/test/%d' % i) == 'abcdefgh' * 127 * cache_block, 'Key %d not properly cached' % i) assert self.cache.get('date/test/5') is None, 'Size limit failed' self.cache._max_size = 0 self.cache.wipe() for i in range(6): self.cache.set('date/test/%d' % i, 'abcdefgh' * 127 * cache_block) for i in range(6): assert (self.cache.get('date/test/%d' % i) == 'abcdefgh' * 127 * cache_block, 'Key %d not properly cached' % i) def testMaxEntries(self): self.cache._max_entries = 2 self.cache.set('date/test/1', '1') self.cache.set('date/test/2', '2') self.cache.set('date/test/3', '3') assert self.cache.get('date/test/1') == '1', 'Key not properly cached' assert self.cache.get('date/test/2') == '2', 'Key not properly cached' assert (self.cache.get('date/test/3') is None, 'File number limit failed') self.cache.wipe() self.cache._max_entries = 0 self.cache.set('date/test/1', '1') self.cache.set('date/test/2', '2') self.cache.set('date/test/3', '3') assert self.cache.get('date/test/1') == '1', 'Key not properly cached' assert self.cache.get('date/test/2') == '2', 'Key not properly cached' assert self.cache.get('date/test/3') == '3', 'Key not properly cached' def testPurge(self): self.cache._max_entries = 2 self.cache._default_timeout = 3 self.cache.set('date/test/1', '1') self.cache.set('date/test/2', '2') self.cache.set('date/test/3', '3') assert self.cache.get('date/test/1') == '1', 'Key not properly cached' assert self.cache.get('date/test/2') == '2', 'Key not properly cached' assert (self.cache.get('date/test/3') is None, 'File number limit failed') time.sleep(4) self.cache.set('date/test/3', '3') assert self.cache.get('date/test/3') == '3', 'Purge not working' def testOther(self): # set should only accept strings as values pytest.raises(ValueError, self.cache.set, 'date/test/1', 123) # keys can't have .. or start with / pytest.raises(ValueError, self.cache.set, '/date/test/1', '1') pytest.raises(ValueError, self.cache.set, 'date/test/../1', '1') # get some test data in self.cache.set('date/test/1', '1') self.cache.set('date/test/2', '2') self.cache.set('date/test/3', '3') assert self.cache.get('date/test/1') == '1', 'Key not properly cached' assert self.cache.get('date/test/2') == '2', 'Key not properly cached' assert self.cache.get('date/test/3') == '3', 'Key not properly cached' # check has_key assert self.cache.has_key('date/test/1') # noqa assert not self.cache.has_key('date/test/bogus') # noqa # assert wipe() nukes the whole thing assert self.cache._num_entries == 3 self.cache.wipe() assert self.cache._num_entries == 0
class FileCacheTest(unittest.TestCase): def setUp(self): self.cache = FileCache("test_cache") def tearDown(self): os.system("rm -fr test_cache") def testTimeouts(self): self.assertEqual(self.cache.get("date/test/1"), None, "Key already exists in cache") self.cache.set("date/test/1", "1", 3) self.assertEqual(self.cache.get("date/test/1"), "1", "Key not properly cached") time.sleep(4) self.assertEqual(self.cache.get("date/test/1"), None, "Timeout failed") def testMaxSize(self): empty_size, cache_block = _testCacheFSBlockSize(self.cache) self.cache._max_size = empty_size + 4 * cache_block + 1 # There is an overhead (8 bytes in my system) for timestamp per file, # and the limit is only enforced after we cross over it for i in range(6): self.cache.set("date/test/%d" % i, "abcdefgh" * 127 * cache_block) for i in range(4): self.assertEqual( self.cache.get("date/test/%d" % i), "abcdefgh" * 127 * cache_block, "Key %d not properly cached" % i ) self.assertEqual(self.cache.get("date/test/5"), None, "Size limit failed") def testMaxEntries(self): self.cache._max_entries = 2 self.cache.set("date/test/1", "1") self.cache.set("date/test/2", "2") self.cache.set("date/test/3", "3") self.assertEqual(self.cache.get("date/test/1"), "1", "Key not properly cached") self.assertEqual(self.cache.get("date/test/2"), "2", "Key not properly cached") self.assertEqual(self.cache.get("date/test/3"), None, "File number limit failed") def testPurge(self): self.cache._max_entries = 2 self.cache._default_timeout = 3 self.cache.set("date/test/1", "1") self.cache.set("date/test/2", "2") self.cache.set("date/test/3", "3") self.assertEqual(self.cache.get("date/test/1"), "1", "Key not properly cached") self.assertEqual(self.cache.get("date/test/2"), "2", "Key not properly cached") self.assertEqual(self.cache.get("date/test/3"), None, "File number limit failed") time.sleep(4) self.cache.set("date/test/3", "3") self.assertEqual(self.cache.get("date/test/3"), "3", "Purge not working") def testOther(self): # set should only accept strings as values self.assertRaises(ValueError, self.cache.set, "date/test/1", 123) # keys can't have .. or start with / self.assertRaises(ValueError, self.cache.set, "/date/test/1", "1") self.assertRaises(ValueError, self.cache.set, "date/test/../1", "1") # get some test data in self.cache.set("date/test/1", "1") self.cache.set("date/test/2", "2") self.cache.set("date/test/3", "3") self.assertEqual(self.cache.get("date/test/1"), "1", "Key not properly cached") self.assertEqual(self.cache.get("date/test/2"), "2", "Key not properly cached") self.assertEqual(self.cache.get("date/test/3"), "3", "Key not properly cached") # check has_key self.assert_(self.cache.has_key("date/test/1")) self.assert_(not self.cache.has_key("date/test/bogus")) # assert wipe() nukes the whole thing self.assertEqual(self.cache._num_entries, 3) self.cache.wipe() self.assertEqual(self.cache._num_entries, 0)