def test_max_items(self): cache = Cache(10) self.failUnlessEqual(cache.num_items(),0,"number of items: "+`cache.num_items()`) for i in range(10): item = CacheItem(i,i, sec(1), sec(2), sec(3)) cache.add_item(item) self.failUnlessEqual(cache.num_items(),10,"number of items: "+`cache.num_items()`) for i in range(10,30): item = CacheItem(i,i, sec(1), sec(2), sec(3)) cache.add_item(item) self.failUnless(cache.num_items() > 7,"number of items: "+`cache.num_items()`) self.failUnless(cache.num_items() <= 10,"number of items: "+`cache.num_items()`) self.failUnlessEqual(cache.num_items(),len(cache._items), "number of items: %r, in dict: %r" % (cache.num_items(), cache._items))
def test_item_expiration(self): cache = Cache(100) item = CacheItem("test_addr","test_value", sec(0.1), sec(0.2), sec(0.3)) cache.add_item(item) gitem = cache.get_item("test_addr","fresh") self.failUnlessEqual(gitem,item) sleep(0.01) gitem = cache.get_item("test_addr","fresh") self.failUnlessEqual(gitem,item) sleep(0.1) gitem = cache.get_item("test_addr","fresh") self.failUnlessEqual(gitem,None) cache.tick() gitem = cache.get_item("test_addr","old") self.failUnlessEqual(gitem,item) sleep(0.3) cache.tick() gitem = cache.get_item("test_addr","stale") self.failUnlessEqual(gitem,None) self.failUnlessEqual(cache.num_items(),0,"number of items: "+`cache.num_items()`)