Exemplo n.º 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)
Exemplo n.º 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)
Exemplo n.º 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)
Exemplo n.º 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)
Exemplo n.º 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)
Exemplo n.º 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)
Exemplo n.º 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)
Exemplo n.º 8
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)
Exemplo n.º 9
0
 def test_mode_used_for_equality(self):
     a = FakeGuardedLock('nsA', 'nameA', 'modeA', [])
     b = FakeGuardedLock('nsA', 'nameA', 'modeB', [])
     self.assertNotEqual(a, b)
Exemplo n.º 10
0
 def test_equality(self):
     a = FakeGuardedLock('ns', 'name', 'mode', [])
     b = FakeGuardedLock('ns', 'name', 'mode', [])
     self.assertEqual(a, b)
Exemplo n.º 11
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)
Exemplo n.º 12
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]))
Exemplo n.º 13
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))
Exemplo n.º 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)
Exemplo n.º 15
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))