def testResourceStatuses(self): self.assertEquals(rm._getResourceStatus("storage", "resource"), rm.LockState.free) exclusive1 = rm.acquireResource("storage", "resource", rm.EXCLUSIVE) self.assertEquals(rm._getResourceStatus("storage", "resource"), rm.LockState.locked) exclusive1.release() shared1 = rm.acquireResource("storage", "resource", rm.SHARED) self.assertEquals(rm._getResourceStatus("storage", "resource"), rm.LockState.shared) shared1.release() try: self.assertEquals(rm._getResourceStatus("null", "resource"), rm.LockState.free) except KeyError: return self.fail("Managed to get status on a non existing resource")
def testResourceAutorelease(self): self.log.info("Acquiring resource", extra={'resource': "bob"}) res = rm.acquireResource("storage", "resource", rm.SHARED) resProxy = proxy(res) res = None # wait for object to die self.log.info("Waiting for request") try: while True: resProxy.granted() except: pass self.log.info("Waiting for autoclean") while True: resStatus = rm._getResourceStatus("storage", "resource") if resStatus == rm.LockState.free: break time.sleep(1)