Revision c6a622cf test/ganeti.locking_unittest.py
b/test/ganeti.locking_unittest.py | ||
---|---|---|
1035 | 1035 |
newls = locking.LockSet([], "TestLockSet.testResources") |
1036 | 1036 |
self.assertEquals(newls._names(), set()) |
1037 | 1037 |
|
1038 |
def testCheckOwnedUnknown(self): |
|
1039 |
self.assertFalse(self.ls.check_owned("certainly-not-owning-this-one")) |
|
1040 |
for shared in [-1, 0, 1, 6378, 24255]: |
|
1041 |
self.assertFalse(self.ls.check_owned("certainly-not-owning-this-one", |
|
1042 |
shared=shared)) |
|
1043 |
|
|
1044 |
def testCheckOwnedUnknownWhileHolding(self): |
|
1045 |
self.assertFalse(self.ls.check_owned([])) |
|
1046 |
self.ls.acquire("one", shared=1) |
|
1047 |
self.assertRaises(errors.LockError, self.ls.check_owned, "nonexist") |
|
1048 |
self.assertTrue(self.ls.check_owned("one", shared=1)) |
|
1049 |
self.assertFalse(self.ls.check_owned("one", shared=0)) |
|
1050 |
self.assertFalse(self.ls.check_owned(["one", "two"])) |
|
1051 |
self.assertRaises(errors.LockError, self.ls.check_owned, |
|
1052 |
["one", "nonexist"]) |
|
1053 |
self.assertRaises(errors.LockError, self.ls.check_owned, "") |
|
1054 |
self.ls.release() |
|
1055 |
self.assertFalse(self.ls.check_owned([])) |
|
1056 |
self.assertFalse(self.ls.check_owned("one")) |
|
1057 |
|
|
1038 | 1058 |
def testAcquireRelease(self): |
1059 |
self.assertFalse(self.ls.check_owned(self.ls._names())) |
|
1039 | 1060 |
self.assert_(self.ls.acquire('one')) |
1040 | 1061 |
self.assertEquals(self.ls.list_owned(), set(['one'])) |
1062 |
self.assertTrue(self.ls.check_owned("one")) |
|
1063 |
self.assertTrue(self.ls.check_owned("one", shared=0)) |
|
1064 |
self.assertFalse(self.ls.check_owned("one", shared=1)) |
|
1041 | 1065 |
self.ls.release() |
1042 | 1066 |
self.assertEquals(self.ls.list_owned(), set()) |
1067 |
self.assertFalse(self.ls.check_owned(self.ls._names())) |
|
1043 | 1068 |
self.assertEquals(self.ls.acquire(['one']), set(['one'])) |
1044 | 1069 |
self.assertEquals(self.ls.list_owned(), set(['one'])) |
1045 | 1070 |
self.ls.release() |
1046 | 1071 |
self.assertEquals(self.ls.list_owned(), set()) |
1047 | 1072 |
self.ls.acquire(['one', 'two', 'three']) |
1048 | 1073 |
self.assertEquals(self.ls.list_owned(), set(['one', 'two', 'three'])) |
1074 |
self.assertTrue(self.ls.check_owned(self.ls._names())) |
|
1075 |
self.assertTrue(self.ls.check_owned(self.ls._names(), shared=0)) |
|
1076 |
self.assertFalse(self.ls.check_owned(self.ls._names(), shared=1)) |
|
1049 | 1077 |
self.ls.release('one') |
1078 |
self.assertFalse(self.ls.check_owned(["one"])) |
|
1079 |
self.assertTrue(self.ls.check_owned(["two", "three"])) |
|
1080 |
self.assertTrue(self.ls.check_owned(["two", "three"], shared=0)) |
|
1081 |
self.assertFalse(self.ls.check_owned(["two", "three"], shared=1)) |
|
1050 | 1082 |
self.assertEquals(self.ls.list_owned(), set(['two', 'three'])) |
1051 | 1083 |
self.ls.release(['three']) |
1052 | 1084 |
self.assertEquals(self.ls.list_owned(), set(['two'])) |
... | ... | |
1056 | 1088 |
self.assertEquals(self.ls.list_owned(), set(['one', 'three'])) |
1057 | 1089 |
self.ls.release() |
1058 | 1090 |
self.assertEquals(self.ls.list_owned(), set()) |
1091 |
for name in self.ls._names(): |
|
1092 |
self.assertFalse(self.ls.check_owned(name)) |
|
1059 | 1093 |
|
1060 | 1094 |
def testNoDoubleAcquire(self): |
1061 | 1095 |
self.ls.acquire('one') |
... | ... | |
1504 | 1538 |
|
1505 | 1539 |
self.assertFalse(compat.any(i.is_owned() |
1506 | 1540 |
for i in self.ls._get_lockdict().values())) |
1541 |
self.assertFalse(self.ls.check_owned(self.ls._names())) |
|
1542 |
for name in self.ls._names(): |
|
1543 |
self.assertFalse(self.ls.check_owned(name)) |
|
1507 | 1544 |
|
1508 | 1545 |
self.assertEquals(self.ls.acquire(None, shared=0), |
1509 | 1546 |
set(["one", "two", "three"])) |
1510 | 1547 |
self.assertRaises(AssertionError, self.ls.downgrade, "unknown lock") |
1511 | 1548 |
|
1549 |
self.assertTrue(self.ls.check_owned(self.ls._names(), shared=0)) |
|
1550 |
for name in self.ls._names(): |
|
1551 |
self.assertTrue(self.ls.check_owned(name)) |
|
1552 |
self.assertTrue(self.ls.check_owned(name, shared=0)) |
|
1553 |
self.assertFalse(self.ls.check_owned(name, shared=1)) |
|
1554 |
|
|
1512 | 1555 |
self.assertTrue(self.ls._get_lock().is_owned(shared=0)) |
1513 | 1556 |
self.assertTrue(compat.all(i.is_owned(shared=0) |
1514 | 1557 |
for i in self.ls._get_lockdict().values())) |
... | ... | |
1520 | 1563 |
for name, lock in |
1521 | 1564 |
self.ls._get_lockdict().items())) |
1522 | 1565 |
|
1566 |
self.assertFalse(self.ls.check_owned("one", shared=0)) |
|
1567 |
self.assertTrue(self.ls.check_owned("one", shared=1)) |
|
1568 |
self.assertTrue(self.ls.check_owned("two", shared=0)) |
|
1569 |
self.assertTrue(self.ls.check_owned("three", shared=0)) |
|
1570 |
|
|
1571 |
# Downgrade second lock |
|
1523 | 1572 |
self.assertTrue(self.ls.downgrade(names="two")) |
1524 | 1573 |
self.assertTrue(self.ls._get_lock().is_owned(shared=0)) |
1525 | 1574 |
should_share = lambda name: [0, 1][int(name in ("one", "two"))] |
... | ... | |
1527 | 1576 |
for name, lock in |
1528 | 1577 |
self.ls._get_lockdict().items())) |
1529 | 1578 |
|
1579 |
self.assertFalse(self.ls.check_owned("one", shared=0)) |
|
1580 |
self.assertTrue(self.ls.check_owned("one", shared=1)) |
|
1581 |
self.assertFalse(self.ls.check_owned("two", shared=0)) |
|
1582 |
self.assertTrue(self.ls.check_owned("two", shared=1)) |
|
1583 |
self.assertTrue(self.ls.check_owned("three", shared=0)) |
|
1584 |
|
|
1530 | 1585 |
# Downgrading the last exclusive lock to shared must downgrade the |
1531 | 1586 |
# lockset-internal lock too |
1532 | 1587 |
self.assertTrue(self.ls.downgrade(names="three")) |
... | ... | |
1534 | 1589 |
self.assertTrue(compat.all(i.is_owned(shared=1) |
1535 | 1590 |
for i in self.ls._get_lockdict().values())) |
1536 | 1591 |
|
1592 |
# Verify owned locks |
|
1593 |
for name in self.ls._names(): |
|
1594 |
self.assertTrue(self.ls.check_owned(name, shared=1)) |
|
1595 |
|
|
1537 | 1596 |
# Downgrading a shared lock must be a no-op |
1538 | 1597 |
self.assertTrue(self.ls.downgrade(names=["one", "three"])) |
1539 | 1598 |
self.assertTrue(self.ls._get_lock().is_owned(shared=1)) |
... | ... | |
1657 | 1716 |
self.GL.acquire(locking.LEVEL_INSTANCE, ['i1']) |
1658 | 1717 |
self.GL.acquire(locking.LEVEL_NODEGROUP, ['g2']) |
1659 | 1718 |
self.GL.acquire(locking.LEVEL_NODE, ['n1', 'n2'], shared=1) |
1719 |
self.assertTrue(self.GL.check_owned(locking.LEVEL_NODE, ["n1", "n2"], |
|
1720 |
shared=1)) |
|
1721 |
self.assertFalse(self.GL.check_owned(locking.LEVEL_INSTANCE, ["i1", "i3"])) |
|
1660 | 1722 |
self.GL.release(locking.LEVEL_NODE, ['n2']) |
1661 | 1723 |
self.assertEquals(self.GL.list_owned(locking.LEVEL_NODE), set(['n1'])) |
1662 | 1724 |
self.assertEquals(self.GL.list_owned(locking.LEVEL_NODEGROUP), set(['g2'])) |
Also available in: Unified diff