Example #1
0
 def test_acquire_and_release(self):
     log = []
     expected = [('acquire', 'ns', 'name', 'mode'),
                 ('release', 'ns', 'name', 'mode')]
     lock = FakeGuardedLock('ns', 'name', 'mode', log)
     lock.acquire()
     self.assertEqual(expected[:1], log)
     lock.release()
     self.assertEqual(expected, log)
Example #2
0
 def test_deadlock(self):
     log = []
     locks = [
         FakeGuardedLock('00_storage', 'dom', 'shared', log),
         # Attemting to lock next locks will deadlock in resourceManager.
         FakeGuardedLock('02_img.dom', 'img', 'exclusive', log),
         FakeGuardedLock('02_img.dom', 'img', 'shared', log),
         FakeGuardedLock('03_vol.dom', 'vol', 'exclusive', log),
     ]
     # Creating a context should raise
     with self.assertRaises(guarded.Deadlock):
         with guarded.context(locks):
             pass
     # Without locking any of the locks
     self.assertEqual([], log)
Example #3
0
 def test_one_vol(self):
     log = []
     locks = [
         FakeGuardedLock('01_dom', 'dom', 'mode', log),
         FakeGuardedLock('02_img', 'img', 'mode', log),
         FakeGuardedLock('03_vol', 'vol', 'mode', log)
     ]
     expected = [('acquire', '01_dom', 'dom', 'mode'),
                 ('acquire', '02_img', 'img', 'mode'),
                 ('acquire', '03_vol', 'vol', 'mode'),
                 ('release', '03_vol', 'vol', 'mode'),
                 ('release', '02_img', 'img', 'mode'),
                 ('release', '01_dom', 'dom', 'mode')]
     with guarded.context(locks):
         self.assertEqual(expected[:3], log)
     self.assertEqual(expected, log)
Example #4
0
 def test_fail_inside_context(self):
     log = []
     locks = [
         FakeGuardedLock('01_dom', 'dom1', 'mode', log),
         FakeGuardedLock('02_img', 'img1', 'mode', log),
         FakeGuardedLock('03_vol', 'vol1', 'mode', log)
     ]
     expected = [('acquire', '01_dom', 'dom1', 'mode'),
                 ('acquire', '02_img', 'img1', 'mode'),
                 ('acquire', '03_vol', 'vol1', 'mode'),
                 ('release', '03_vol', 'vol1', 'mode'),
                 ('release', '02_img', 'img1', 'mode'),
                 ('release', '01_dom', 'dom1', 'mode')]
     with self.assertRaises(InjectedFailure):
         with guarded.context(locks):
             raise InjectedFailure()
     self.assertEqual(expected, log)
Example #5
0
 def test_release_failure(self):
     log = []
     locks = [
         FakeGuardedLock('01_dom', 'dom1', 'mode', log),
         FakeGuardedLock('02_img', 'img1', 'mode', log),
         FakeGuardedLock('03_vol',
                         'vol1',
                         'mode',
                         log,
                         release=InjectedFailure)
     ]
     expected = [('acquire', '01_dom', 'dom1', 'mode'),
                 ('acquire', '02_img', 'img1', 'mode'),
                 ('acquire', '03_vol', 'vol1', 'mode'),
                 ('release', '02_img', 'img1', 'mode'),
                 ('release', '01_dom', 'dom1', 'mode')]
     with self.assertRaises(guarded.ReleaseError):
         with guarded.context(locks):
             pass
     self.assertEqual(expected, log)
Example #6
0
 def test_two_vols_different_domains(self):
     log = []
     locks = [
         FakeGuardedLock('01_dom', 'dom1', 'mode', log),
         FakeGuardedLock('02_img', 'img1', 'mode', log),
         FakeGuardedLock('03_vol', 'vol1', 'mode', log),
         FakeGuardedLock('01_dom', 'dom2', 'mode', log),
         FakeGuardedLock('02_img', 'img2', 'mode', log),
         FakeGuardedLock('03_vol', 'vol2', 'mode', log)
     ]
     expected = [('acquire', '01_dom', 'dom1', 'mode'),
                 ('acquire', '01_dom', 'dom2', 'mode'),
                 ('acquire', '02_img', 'img1', 'mode'),
                 ('acquire', '02_img', 'img2', 'mode'),
                 ('acquire', '03_vol', 'vol1', 'mode'),
                 ('acquire', '03_vol', 'vol2', 'mode'),
                 ('release', '03_vol', 'vol2', 'mode'),
                 ('release', '03_vol', 'vol1', 'mode'),
                 ('release', '02_img', 'img2', 'mode'),
                 ('release', '02_img', 'img1', 'mode'),
                 ('release', '01_dom', 'dom2', 'mode'),
                 ('release', '01_dom', 'dom1', 'mode')]
     with guarded.context(locks):
         self.assertEqual(expected[:6], log)
     self.assertEqual(expected, log)
Example #7
0
 def test_acquire_and_release(self):
     log = []
     expected = [('acquire', 'ns', 'name', 'mode'),
                 ('release', 'ns', 'name', 'mode')]
     lock = FakeGuardedLock('ns', 'name', 'mode', log)
     lock.acquire()
     self.assertEqual(expected[:1], log)
     lock.release()
     self.assertEqual(expected, log)
Example #8
0
def test_acquire_and_release():
    log = []
    expected = [('acquire', 'ns', 'name', 'mode'),
                ('release', 'ns', 'name', 'mode')]
    lock = FakeGuardedLock('ns', 'name', 'mode', log)
    lock.acquire()
    assert expected[:1] == log
    lock.release()
    assert expected == log
Example #9
0
 def test_mode_ignored_for_sorting(self):
     a = FakeGuardedLock('nsA', 'nameA', 'modeA', [])
     b = FakeGuardedLock('nsA', 'nameA', 'modeB', [])
     self.assertFalse(a < b)
     self.assertFalse(b < a)
Example #10
0
 def test_mode_used_for_equality(self):
     a = FakeGuardedLock('nsA', 'nameA', 'modeA', [])
     b = FakeGuardedLock('nsA', 'nameA', 'modeB', [])
     self.assertNotEqual(a, b)
Example #11
0
def test_mode_ignored_for_sorting():
    a = FakeGuardedLock('nsA', 'nameA', 'modeA', [])
    b = FakeGuardedLock('nsA', 'nameA', 'modeB', [])
    assert not a < b
    assert not b < a
Example #12
0
def test_equality():
    a = FakeGuardedLock('ns', 'name', 'mode', [])
    b = FakeGuardedLock('ns', 'name', 'mode', [])
    assert a == b
Example #13
0
def test_different_types_sortable():
    a = FakeGuardedLock('nsA', 'name', 'mode', [])
    b = OtherFakeLock('nsB', 'name', 'mode', [])
    assert a < b
    assert not b < a
    assert [a, b] == sorted([b, a])
Example #14
0
 def test_properties(self):
     a = FakeGuardedLock('ns', 'name', 'mode', [])
     self.assertEqual('ns', a.ns)
     self.assertEqual('name', a.name)
     self.assertEqual('mode', a.mode)
Example #15
0
def test_properties():
    a = FakeGuardedLock('ns', 'name', 'mode', [])
    assert 'ns' == a.ns
    assert 'name' == a.name
    assert 'mode' == a.mode
Example #16
0
def test_different_types_not_equal():
    a = FakeGuardedLock('ns', 'name', 'mode', [])
    b = OtherFakeLock('ns', 'name', 'mode', [])
    assert not a.__eq__(b)
    assert a.__ne__(b)
Example #17
0
 def test_different_types_not_equal(self):
     a = FakeGuardedLock('ns', 'name', 'mode', [])
     b = OtherFakeLock('ns', 'name', 'mode', [])
     self.assertFalse(a.__eq__(b))
     self.assertTrue(a.__ne__(b))
Example #18
0
def test_less_than(a, b):
    ns_a, name_a, mode_a = a
    ns_b, name_b, mode_b = b
    b = FakeGuardedLock(ns_b, name_b, mode_b, [])
    a = FakeGuardedLock(ns_a, name_a, mode_a, [])
    assert a < b
Example #19
0
 def test_different_types_sortable(self):
     a = FakeGuardedLock('nsA', 'name', 'mode', [])
     b = OtherFakeLock('nsB', 'name', 'mode', [])
     self.assertTrue(a < b)
     self.assertFalse(b < a)
     self.assertEqual([a, b], sorted([b, a]))
Example #20
0
def test_mode_used_for_equality():
    a = FakeGuardedLock('nsA', 'nameA', 'modeA', [])
    b = FakeGuardedLock('nsA', 'nameA', 'modeB', [])
    assert a != b
Example #21
0
 def test_less_than(self, a, b):
     ns_a, name_a, mode_a = a
     ns_b, name_b, mode_b = b
     b = FakeGuardedLock(ns_b, name_b, mode_b, [])
     a = FakeGuardedLock(ns_a, name_a, mode_a, [])
     self.assertLess(a, b)
Example #22
0
 def test_equality(self):
     a = FakeGuardedLock('ns', 'name', 'mode', [])
     b = FakeGuardedLock('ns', 'name', 'mode', [])
     self.assertEqual(a, b)
Example #23
0
 def test_different_types_not_equal(self):
     a = FakeGuardedLock('ns', 'name', 'mode', [])
     b = OtherFakeLock('ns', 'name', 'mode', [])
     self.assertFalse(a.__eq__(b))
     self.assertTrue(a.__ne__(b))