Пример #1
0
 def test_40_confirm_easy(self):
     """Confirm a lock that's already held"""
     t = self.get_transport()
     lf1 = LockDir(t, 'test_lock')
     lf1.create()
     lf1.attempt_lock()
     lf1.confirm()
Пример #2
0
 def test_40_confirm_easy(self):
     """Confirm a lock that's already held"""
     t = self.get_transport()
     lf1 = LockDir(t, 'test_lock')
     lf1.create()
     lf1.attempt_lock()
     lf1.confirm()
Пример #3
0
 def test_auto_break_stale_lock_configured_off(self):
     """Automatic breaking can be turned off"""
     l1 = LockDir(self.get_transport(), 'a',
         extra_holder_info={'pid': '12312313'})
     token_1 = l1.attempt_lock()
     self.addCleanup(l1.unlock)
     l2 = LockDir(self.get_transport(), 'a')
     # This fails now, because dead lock breaking is off by default.
     self.assertRaises(LockContention,
         l2.attempt_lock)
     # and it's in fact not broken
     l1.confirm()
Пример #4
0
 def test_auto_break_stale_lock_configured_off(self):
     """Automatic breaking can be turned off"""
     l1 = LockDir(self.get_transport(), 'a',
         extra_holder_info={'pid': '12312313'})
     token_1 = l1.attempt_lock()
     self.addCleanup(l1.unlock)
     l2 = LockDir(self.get_transport(), 'a')
     # This fails now, because dead lock breaking is off by default.
     self.assertRaises(LockContention,
         l2.attempt_lock)
     # and it's in fact not broken
     l1.confirm()
Пример #5
0
 def test_44_break_already_released(self):
     """Lock break races with regular release"""
     t = self.get_transport()
     lf1 = LockDir(t, 'test_lock')
     lf1.create()
     lf1.attempt_lock()
     # someone else sees it's still locked
     lf2 = LockDir(t, 'test_lock')
     holder_info = lf2.peek()
     # in the interim the lock is released
     lf1.unlock()
     # break should succeed
     lf2.force_break(holder_info)
     # now we should be able to take it
     lf2.attempt_lock()
     lf2.confirm()
Пример #6
0
 def test_43_break(self):
     """Break a lock whose caller has forgotten it"""
     t = self.get_transport()
     lf1 = LockDir(t, 'test_lock')
     lf1.create()
     lf1.attempt_lock()
     # we incorrectly discard the lock object without unlocking it
     del lf1
     # someone else sees it's still locked
     lf2 = LockDir(t, 'test_lock')
     holder_info = lf2.peek()
     self.assertTrue(holder_info)
     lf2.force_break(holder_info)
     # now we should be able to take it
     lf2.attempt_lock()
     lf2.confirm()
Пример #7
0
 def test_44_break_already_released(self):
     """Lock break races with regular release"""
     t = self.get_transport()
     lf1 = LockDir(t, 'test_lock')
     lf1.create()
     lf1.attempt_lock()
     # someone else sees it's still locked
     lf2 = LockDir(t, 'test_lock')
     holder_info = lf2.peek()
     # in the interim the lock is released
     lf1.unlock()
     # break should succeed
     lf2.force_break(holder_info)
     # now we should be able to take it
     lf2.attempt_lock()
     lf2.confirm()
Пример #8
0
 def test_43_break(self):
     """Break a lock whose caller has forgotten it"""
     t = self.get_transport()
     lf1 = LockDir(t, 'test_lock')
     lf1.create()
     lf1.attempt_lock()
     # we incorrectly discard the lock object without unlocking it
     del lf1
     # someone else sees it's still locked
     lf2 = LockDir(t, 'test_lock')
     holder_info = lf2.peek()
     self.assertTrue(holder_info)
     lf2.force_break(holder_info)
     # now we should be able to take it
     lf2.attempt_lock()
     lf2.confirm()