Change in vdsm[master]: tests: FakeLVM test command failure
alitke at redhat.com
alitke at redhat.com
Thu Oct 29 17:52:12 UTC 2015
Adam Litke has uploaded a new change for review.
Change subject: tests: FakeLVM test command failure
......................................................................
tests: FakeLVM test command failure
Change-Id: I954b750d744df0dbd9b7ac13138731d80db54bb8
Signed-off-by: Adam Litke <alitke at redhat.com>
---
M tests/storagefakelib.py
M tests/storagefakelibTests.py
2 files changed, 49 insertions(+), 8 deletions(-)
git pull ssh://gerrit.ovirt.org:29418/vdsm refs/changes/64/47864/1
diff --git a/tests/storagefakelib.py b/tests/storagefakelib.py
index 1548ab9..9e2536f 100644
--- a/tests/storagefakelib.py
+++ b/tests/storagefakelib.py
@@ -23,6 +23,7 @@
from copy import deepcopy
from storage import lvm as real_lvm
+from storage import storage_exception as se
class FakeLVM(object):
@@ -77,7 +78,10 @@
def createLV(self, vgName, lvName, size, activate=True, contiguous=False,
initialTag=None):
# Size is expected as a string in MB, convert to a string in bytes.
- size = str(int(size) << 20)
+ try:
+ size = str(int(size) << 20)
+ except ValueError:
+ raise se.CannotCreateLogicalVolume(vgName, lvName)
# devices is hard to emulate properly (must have a PE allocator that
# works the same as for LVM). Since we don't need this value, use None
@@ -105,36 +109,57 @@
opened=False,
active=bool(activate))
- vg_dict = self.lvmd.setdefault(vgName, {})
+ try:
+ vg_dict = self.lvmd.setdefault(vgName, {})
+ lv_count = int(self.vgmd[vgName]['lv_count']) + 1
+ except KeyError:
+ raise se.CannotCreateLogicalVolume(vgName, lvName)
+
+ if lvName in vg_dict:
+ raise se.CannotCreateLogicalVolume(vgName, lvName)
+
vg_dict[lvName] = lv_md
- lv_count = int(self.vgmd[vgName]['lv_count']) + 1
self.vgmd[vgName]['lv_count'] = str(lv_count)
def activateLVs(self, vgName, lvNames):
for lv in lvNames:
- self.lvmd[vgName][lv]['active'] = True
- self.lvmd[vgName][lv]['attr']['state'] = 'a'
+ try:
+ self.lvmd[vgName][lv]['active'] = True
+ self.lvmd[vgName][lv]['attr']['state'] = 'a'
+ except KeyError as e:
+ raise se.CannotActivateLogicalVolume(str(e))
def addtag(self, vg, lv, tag):
- self.lvmd[vg][lv]['tags'] += (tag,)
+ try:
+ self.lvmd[vg][lv]['tags'] += (tag,)
+ except KeyError:
+ raise se.MissingTagOnLogicalVolume("%s/%s" % (vg, lv), tag)
def lvPath(self, vgName, lvName):
return os.path.join(self.root, "dev", vgName, lvName)
def getPV(self, pvName):
- md = deepcopy(self.pvmd[pvName])
+ try:
+ md = deepcopy(self.pvmd[pvName])
+ except KeyError:
+ raise se.InaccessiblePhysDev((pvName,))
vg_name = md['vg_name']
md['vg_uuid'] = self.vgmd[vg_name]['uuid']
return real_lvm.PV(**md)
def getVG(self, vgName):
+ if vgName not in self.vgmd:
+ raise se.VolumeGroupDoesNotExist(vgName)
vg_md = deepcopy(self.vgmd[vgName])
vg_attr = real_lvm.VG_ATTR(**vg_md['attr'])
vg_md['attr'] = vg_attr
return real_lvm.VG(**vg_md)
def _getLV(self, vgName, lvName):
- lv_md = deepcopy(self.lvmd[vgName][lvName])
+ try:
+ lv_md = deepcopy(self.lvmd[vgName][lvName])
+ except KeyError:
+ raise se.LogicalVolumeDoesNotExistError("%s/%s" % (vgName, lvName))
lv_attr = real_lvm.LV_ATTR(**lv_md['attr'])
lv_md['attr'] = lv_attr
return real_lvm.LV(**lv_md)
diff --git a/tests/storagefakelibTests.py b/tests/storagefakelibTests.py
index ca0d398..c3712dd 100644
--- a/tests/storagefakelibTests.py
+++ b/tests/storagefakelibTests.py
@@ -25,6 +25,7 @@
from storagefakelib import FakeLVM
from storage import blockSD, blockVolume
+from storage import storage_exception as se
@expandPermutations
@@ -281,6 +282,7 @@
self.assertEqual('a', lv.attr.state)
+ at expandPermutations
class FakeLVMGeneralTests(VdsmTestCase):
def test_lvpath(self):
@@ -290,3 +292,17 @@
lv_name = 'bar'
expected = os.path.join(tmpdir, 'dev', vg_name, lv_name)
self.assertEqual(expected, lvm.lvPath(vg_name, lv_name))
+
+ @permutations([
+ [se.VolumeGroupDoesNotExist, 'getVG', ['vg']],
+ [se.CannotActivateLogicalVolume, 'activateLVs', ['vg', ['lv']]],
+ [se.MissingTagOnLogicalVolume, 'addtag', ['vg', 'lv', 'tag']],
+ [se.CannotCreateLogicalVolume, 'createLV', ['vg', 'lv', '1024']],
+ [se.LogicalVolumeDoesNotExistError, 'getLV', ['vg', 'lv']],
+ [se.InaccessiblePhysDev, 'getPV', ['pv']],
+ ])
+ def test_bad_args(self, exception, fn, args):
+ with namedTemporaryDir() as tmpdir:
+ lvm = FakeLVM(tmpdir)
+ lvm_fn = getattr(lvm, fn)
+ self.assertRaises(exception, lvm_fn, *args)
--
To view, visit https://gerrit.ovirt.org/47864
To unsubscribe, visit https://gerrit.ovirt.org/settings
Gerrit-MessageType: newchange
Gerrit-Change-Id: I954b750d744df0dbd9b7ac13138731d80db54bb8
Gerrit-PatchSet: 1
Gerrit-Project: vdsm
Gerrit-Branch: master
Gerrit-Owner: Adam Litke <alitke at redhat.com>
More information about the vdsm-patches
mailing list