def _testNow(self, la): l = locks.BaseLock("name") self.failUnless(l.isAvailable(la)) l.claim("owner1", la) self.failIf(l.isAvailable(la)) l.release("owner1", la) self.failUnless(l.isAvailable(la))
def testLater(self): lock = locks.BaseLock("name", 2) lock.claim("owner1") lock.claim("owner2") d = claimHarder(lock, "owner3") d.addCallback(lambda lock: lock.release("owner3")) lock.release("owner2") lock.release("owner1") return d
def testNowMixed2(self): """ Test counting is not possible when an exclsuive has the lock """ lid = locks.MasterLock('dummy') lac = locks.LockAccess(lid, 'counting') lae = locks.LockAccess(lid, 'exclusive') l = locks.BaseLock("name", maxCount=2) self.failUnless(l.isAvailable(lae)) l.claim("count-owner", lae) self.failIf(l.isAvailable(lac)) l.release("count-owner", lae) self.failUnless(l.isAvailable(lae))
def testLaterCounting(self): lid = locks.MasterLock('dummy') la = locks.LockAccess(lid, 'counting') lock = locks.BaseLock("name", 2) lock.claim("owner1", la) lock.claim("owner2", la) d = claimHarder(lock, "owner3", la) d.addCallback(lambda lock: lock.release("owner3", la)) lock.release("owner2", la) lock.release("owner1", la) return d
def testNow(self): lock = locks.BaseLock("name", 2) self.failUnless(lock.isAvailable()) lock.claim("owner1") self.failUnless(lock.isAvailable()) lock.claim("owner2") self.failIf(lock.isAvailable()) lock.release("owner1") self.failUnless(lock.isAvailable()) lock.release("owner2") self.failUnless(lock.isAvailable())
def _testRandom(self, la): lock = locks.BaseLock("name") dl = [] for i in range(100): owner = "owner%d" % i mode = random.choice(["now", "very soon", "soon"]) d = claimHarder(lock, owner, la) d.addCallback(hold, owner, la, mode) dl.append(d) d = defer.DeferredList(dl) d.addCallback(self._cleanup, lock, la) return d
def testNowCounting(self): lid = locks.MasterLock('dummy') la = locks.LockAccess(lid, 'counting') lock = locks.BaseLock("name", 2) self.failUnless(lock.isAvailable(la)) lock.claim("owner1", la) self.failUnless(lock.isAvailable(la)) lock.claim("owner2", la) self.failIf(lock.isAvailable(la)) lock.release("owner1", la) self.failUnless(lock.isAvailable(la)) lock.release("owner2", la) self.failUnless(lock.isAvailable(la))
def testRandomCounting(self): lid = locks.MasterLock('dummy') la = locks.LockAccess(lid, 'counting') COUNT = 5 lock = locks.BaseLock("name", COUNT) dl = [] for i in range(100): owner = "owner%d" % i mode = random.choice(["now", "very soon", "soon"]) d = claimHarder(lock, owner, la) def _check(lock): self.failIf(len(lock.owners) > COUNT) return lock d.addCallback(_check) d.addCallback(hold, owner, la, mode) dl.append(d) d = defer.DeferredList(dl) d.addCallback(self._cleanup, lock, COUNT, la) return d
def testRandom(self): COUNT = 5 lock = locks.BaseLock("name", COUNT) dl = [] for i in range(100): owner = "owner%d" % i mode = random.choice(["now", "very soon", "soon"]) d = claimHarder(lock, owner) def _check(lock): self.failIf(len(lock.owners) > COUNT) return lock d.addCallback(_check) d.addCallback(hold, owner, mode) dl.append(d) d = defer.DeferredList(dl) d.addCallback(self._cleanup, lock, COUNT) return d
def _testLater(self, la): lock = locks.BaseLock("name") d = claimHarder(lock, "owner1", la) d.addCallback(lambda lock: lock.release("owner1", la)) return d
def _testCompetition(self, la): lock = locks.BaseLock("name") d = claimHarder(lock, "owner1", la) d.addCallback(self._claim1, la) return d