Revision b2dabfd6 test/ganeti.locking_unittest.py

b/test/ganeti.locking_unittest.py
470 470
    self.assertEqual(self.done.get(True, 1), 'DONE')
471 471
    self.assertEqual(self.done.get(True, 1), 'DONE')
472 472

  
473
  def testEmptyLockSet(self):
474
    # get the set-lock
475
    self.assertEqual(self.ls.acquire(None), set(['one', 'two', 'three']))
476
    # now empty it...
477
    self.ls.remove(['one', 'two', 'three'])
478
    # and adds/locks by another thread still wait
479
    Thread(target=self._doAddSet, args=(['nine'])).start()
480
    Thread(target=self._doLockSet, args=(None, 1)).start()
481
    Thread(target=self._doLockSet, args=(None, 0)).start()
482
    self.assertRaises(Queue.Empty, self.done.get, True, 0.2)
483
    self.ls.release()
484
    self.assertEqual(self.done.get(True, 1), 'DONE')
485
    self.assertEqual(self.done.get(True, 1), 'DONE')
486
    self.assertEqual(self.done.get(True, 1), 'DONE')
487
    # empty it again...
488
    self.assertEqual(self.ls.remove(['nine']), ['nine'])
489
    # now share it...
490
    self.assertEqual(self.ls.acquire(None, shared=1), set())
491
    # other sharers can go, adds still wait
492
    Thread(target=self._doLockSet, args=(None, 1)).start()
493
    self.assertEqual(self.done.get(True, 1), 'DONE')
494
    Thread(target=self._doAddSet, args=(['nine'])).start()
495
    self.assertRaises(Queue.Empty, self.done.get, True, 0.2)
496
    self.ls.release()
497
    self.assertEqual(self.done.get(True, 1), 'DONE')
498

  
473 499

  
474 500
class TestGanetiLockManager(unittest.TestCase):
475 501

  

Also available in: Unified diff