def test_standard_behavior(self): deferred = TimedDeferredLock() yield deferred.acquire() self.assertTrue(deferred.locked) self.assertEqual(len(deferred.waiting), 0) second_acquire = deferred.acquire() self.assertTrue(deferred.locked) self.assertEqual(len(deferred.waiting), 1) self.assertFalse(second_acquire.called) yield deferred.release() self.assertTrue(second_acquire.called) self.assertTrue(deferred.locked) self.assertEqual(len(deferred.waiting), 0) yield deferred.release() self.assertFalse(deferred.locked) self.assertEqual(len(deferred.waiting), 0)
def test_cancel_timeout(self): deferred = TimedDeferredLock() # Mock out the parts that will leak a Deferred object (which # will cause the tests to fail) with nested( patch.object(reactor, "callLater"), patch.object(deferred, "_cancel_timeout"), ) as (callLater, cancel_timeout): yield deferred.acquire() deferred.acquire(10) yield deferred.release() self.assertEqual(callLater.call_count, 1) timeout, timeout_method, finished = callLater.mock_calls[0][1] self.assertEqual(timeout, 10) self.assertIs( timeout_method.im_func.func_name, deferred._timeout.im_func.func_name) self.assertIsInstance(finished, Deferred)