583 |
583 |
self.assertEqual(self.GL._names(locking.LEVEL_NODE), set(self.nodes))
|
584 |
584 |
self.assertEqual(self.GL._names(locking.LEVEL_INSTANCE),
|
585 |
585 |
set(self.instances))
|
586 |
|
self.assertEqual(self.GL._names(locking.LEVEL_CONFIG), set(['config']))
|
587 |
586 |
|
588 |
587 |
def testInitAndResources(self):
|
589 |
588 |
locking.GanetiLockManager._instance = None
|
... | ... | |
591 |
590 |
self.assertEqual(self.GL._names(locking.LEVEL_CLUSTER), set(['BGL']))
|
592 |
591 |
self.assertEqual(self.GL._names(locking.LEVEL_NODE), set())
|
593 |
592 |
self.assertEqual(self.GL._names(locking.LEVEL_INSTANCE), set())
|
594 |
|
self.assertEqual(self.GL._names(locking.LEVEL_CONFIG), set(['config']))
|
595 |
593 |
|
596 |
594 |
locking.GanetiLockManager._instance = None
|
597 |
595 |
self.GL = locking.GanetiLockManager(nodes=self.nodes)
|
598 |
596 |
self.assertEqual(self.GL._names(locking.LEVEL_CLUSTER), set(['BGL']))
|
599 |
597 |
self.assertEqual(self.GL._names(locking.LEVEL_NODE), set(self.nodes))
|
600 |
598 |
self.assertEqual(self.GL._names(locking.LEVEL_INSTANCE), set())
|
601 |
|
self.assertEqual(self.GL._names(locking.LEVEL_CONFIG), set(['config']))
|
602 |
599 |
|
603 |
600 |
locking.GanetiLockManager._instance = None
|
604 |
601 |
self.GL = locking.GanetiLockManager(instances=self.instances)
|
... | ... | |
606 |
603 |
self.assertEqual(self.GL._names(locking.LEVEL_NODE), set())
|
607 |
604 |
self.assertEqual(self.GL._names(locking.LEVEL_INSTANCE),
|
608 |
605 |
set(self.instances))
|
609 |
|
self.assertEqual(self.GL._names(locking.LEVEL_CONFIG), set(['config']))
|
610 |
606 |
|
611 |
607 |
def testAcquireRelease(self):
|
612 |
608 |
self.GL.acquire(locking.LEVEL_CLUSTER, ['BGL'], shared=1)
|
... | ... | |
616 |
612 |
self.GL.acquire(locking.LEVEL_NODE, ['n1'])
|
617 |
613 |
self.assertEquals(self.GL._list_owned(locking.LEVEL_NODE), set(['n1']))
|
618 |
614 |
self.GL.acquire(locking.LEVEL_INSTANCE, ['i1', 'i2'])
|
619 |
|
self.GL.acquire(locking.LEVEL_CONFIG, ['config'])
|
620 |
615 |
self.GL.release(locking.LEVEL_INSTANCE, ['i2'])
|
621 |
616 |
self.assertEquals(self.GL._list_owned(locking.LEVEL_INSTANCE), set(['i1']))
|
622 |
617 |
self.GL.release(locking.LEVEL_NODE)
|
623 |
618 |
self.GL.release(locking.LEVEL_INSTANCE)
|
624 |
|
self.GL.release(locking.LEVEL_CONFIG)
|
625 |
619 |
self.assertRaises(errors.LockError, self.GL.acquire,
|
626 |
620 |
locking.LEVEL_INSTANCE, ['i5'])
|
627 |
621 |
self.GL.acquire(locking.LEVEL_INSTANCE, ['i3'], shared=1)
|
... | ... | |
645 |
639 |
self.assertRaises(AssertionError, self.GL.release,
|
646 |
640 |
locking.LEVEL_CLUSTER)
|
647 |
641 |
self.GL.release(locking.LEVEL_INSTANCE)
|
648 |
|
self.GL.acquire(locking.LEVEL_CONFIG, ['config'])
|
649 |
|
self.assertRaises(AssertionError, self.GL.release,
|
650 |
|
locking.LEVEL_CLUSTER)
|
651 |
642 |
|
652 |
643 |
def testWrongOrder(self):
|
653 |
644 |
self.GL.acquire(locking.LEVEL_CLUSTER, ['BGL'], shared=1)
|
... | ... | |
656 |
647 |
locking.LEVEL_NODE, ['n1'])
|
657 |
648 |
self.assertRaises(AssertionError, self.GL.acquire,
|
658 |
649 |
locking.LEVEL_INSTANCE, ['i2'])
|
659 |
|
self.GL.acquire(locking.LEVEL_CONFIG, ['config'])
|
660 |
|
self.assertRaises(AssertionError, self.GL.acquire,
|
661 |
|
locking.LEVEL_CONFIG, ['config'])
|
662 |
|
self.GL.release(locking.LEVEL_INSTANCE)
|
663 |
|
self.assertRaises(AssertionError, self.GL.acquire,
|
664 |
|
locking.LEVEL_NODE, ['n1'])
|
665 |
|
self.assertRaises(AssertionError, self.GL.acquire,
|
666 |
|
locking.LEVEL_INSTANCE, ['i2'])
|
667 |
|
self.assertRaises(AssertionError, self.GL.acquire,
|
668 |
|
locking.LEVEL_CONFIG, ['config'])
|
669 |
650 |
|
670 |
651 |
# Helper function to run as a thread that shared the BGL and then acquires
|
671 |
652 |
# some locks at another level.
|
... | ... | |
685 |
666 |
self.assertEqual(self.done.get(True, 1), 'DONE')
|
686 |
667 |
self.GL.acquire(locking.LEVEL_NODE, ['n1'])
|
687 |
668 |
self.GL.acquire(locking.LEVEL_INSTANCE, ['i3'])
|
688 |
|
self.GL.acquire(locking.LEVEL_CONFIG, ['config'])
|
689 |
669 |
Thread(target=self._doLock, args=(locking.LEVEL_INSTANCE, 'i1', 1)).start()
|
690 |
670 |
self.assertEqual(self.done.get(True, 1), 'DONE')
|
691 |
671 |
Thread(target=self._doLock, args=(locking.LEVEL_INSTANCE, 'i3', 1)).start()
|
692 |
672 |
self.assertRaises(Queue.Empty, self.done.get, True, 0.2)
|
693 |
|
self.GL.release(locking.LEVEL_CONFIG)
|
694 |
673 |
self.GL.release(locking.LEVEL_INSTANCE)
|
695 |
674 |
self.assertEqual(self.done.get(True, 1), 'DONE')
|
696 |
675 |
self.GL.acquire(locking.LEVEL_INSTANCE, ['i2'], shared=1)
|