def locks(self): img_ns = sd.getNamespace(sc.IMAGE_NAMESPACE, self.sd_id) mode = rm.EXCLUSIVE if self._writable else rm.SHARED ret = [rm.ResourceManagerLock(sc.STORAGE, self.sd_id, rm.SHARED), rm.ResourceManagerLock(img_ns, self.img_id, mode)] if self._writable: ret.append(volume.VolumeLease(self._host_id, self.sd_id, self.img_id, self.vol_id)) return ret
def test_repr(self): mode = rm.SHARED lock = rm.ResourceManagerLock('ns', 'name', mode) lock_string = str(lock) self.assertIn("ResourceManagerLock", lock_string) self.assertIn("ns=ns", lock_string) self.assertIn("name=name", lock_string) self.assertIn("mode=" + mode, lock_string) self.assertIn("%x" % id(lock), lock_string)
def expected_locks(self, src_vol, dst_vol): src_img_ns = sd.getNamespace(sc.IMAGE_NAMESPACE, src_vol.sdUUID) dst_img_ns = sd.getNamespace(sc.IMAGE_NAMESPACE, dst_vol.sdUUID) ret = [ # Domain lock for each volume resourceManager.ResourceManagerLock(sc.STORAGE, src_vol.sdUUID, resourceManager.SHARED), resourceManager.ResourceManagerLock(sc.STORAGE, dst_vol.sdUUID, resourceManager.SHARED), # Image lock for each volume, exclusive for the destination resourceManager.ResourceManagerLock(src_img_ns, src_vol.imgUUID, resourceManager.SHARED), resourceManager.ResourceManagerLock(dst_img_ns, dst_vol.imgUUID, resourceManager.EXCLUSIVE), # Volume lease for the destination volume volume.VolumeLease(0, dst_vol.sdUUID, dst_vol.imgUUID, dst_vol.volUUID) ] return ret
def test_acquire_release(self): lock = rm.ResourceManagerLock('ns_A', 'name_A', rm.SHARED) expected = [] lock.acquire() expected.append(('acquireResource', (lock.ns, lock.name, lock.mode), {"timeout": None})) self.assertEqual(expected, rm._manager.__calls__) lock.release() expected.append(('releaseResource', (lock.ns, lock.name), {})) self.assertEqual(expected, rm._manager.__calls__)
def test_mode_ignored_for_sorting(self): a = rm.ResourceManagerLock('nsA', 'nameA', 'modeA') b = rm.ResourceManagerLock('nsA', 'nameA', 'modeB') self.assertFalse(a < b) self.assertFalse(b < a)
def test_mode_used_for_equality(self): a = rm.ResourceManagerLock('nsA', 'nameA', 'modeA') b = rm.ResourceManagerLock('nsA', 'nameA', 'modeB') self.assertNotEqual(a, b)
def test_equality(self): a = rm.ResourceManagerLock('ns', 'name', 'mode') b = rm.ResourceManagerLock('ns', 'name', 'mode') self.assertEqual(a, b)
def test_less_than(self, a, b): b = rm.ResourceManagerLock(*b) a = rm.ResourceManagerLock(*a) self.assertLess(a, b)
def test_properties(self): a = rm.ResourceManagerLock('ns', 'name', 'mode') self.assertEqual('ns', a.ns) self.assertEqual('name', a.name) self.assertEqual('mode', a.mode)