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