def testAPIConformity(self): c = NonRegisteredCache("c") mgr = CacheMemoryManager() # dont clean up while we are testing mgr.disable() import weakref d = NonRegisteredCache("testwr") s = weakref.WeakSet() s.add(d) del d gc.collect() l = list(s) assert len(l) == 0, l[0].name c1 = NonRegisteredCache("c1") c1a = c1 c2 = NonRegisteredCache("c2") mgr.addFirstClassCache(c) mgr.addCache(c1) mgr.addCache(c1a) mgr.addCache(c2) fcc = mgr.getFirstClassCaches() assert len(fcc) == 1, "too many first class caches" assert c in fcc, "did not register fcc correctly" del fcc cs = mgr.getCaches() assert len(cs) == 3, "wrong number of caches" refcs = [c, c1, c2] for cache in refcs: assert cache in cs, "{} not stored".format(cache.name) del cs del refcs del cache del c1a gc.collect() cs = mgr.getCaches() assert c1 in cs assert len(cs) == 3, str([x.name for x in cs]) del cs del c2 gc.collect() cs = mgr.getCaches() assert len(cs) == 2, str([x.name for x in cs])
def registerWithMemoryManager(self): manager = CacheMemoryManager() if self.parent is None or not isinstance(self.parent, Cache): manager.addFirstClassCache(self) else: manager.addCache(self)