1
0
mirror of git://sourceware.org/git/lvm2.git synced 2025-01-03 05:18:29 +03:00

lvmdbus: Make unit tests work in test env

Reduced the size of LVs created and use actual PE numbers instead of hard
coding them to allow us to work with the loop back devices.

Signed-off-by: Tony Asleson <tasleson@redhat.com>
This commit is contained in:
Tony Asleson 2016-02-22 14:03:31 -06:00
parent 70d0b210e1
commit 64aab5885d

View File

@ -47,6 +47,10 @@ def rs(length, suffix, character_set=string.ascii_lowercase):
bus = dbus.SystemBus(mainloop=DBusGMainLoop())
def mib(s):
return 1024 * 1024 * s
class DbusIntrospection(object):
@staticmethod
def introspect(xml_representation):
@ -368,7 +372,7 @@ class TestDbusService(unittest.TestCase):
# Create some LVs in the VG
for i in range(0, 5):
lv_t = self._create_lv(size=1024 * 1024 * 16, vg=vg)
lv_t = self._create_lv(size=mib(4), vg=vg)
full_name = "%s/%s" % (vg_name_start, lv_t.LvCommon.Name)
lv_path = mgr.LookUpByLvmId(full_name)
self.assertTrue(lv_path == lv_t.object_path)
@ -432,10 +436,10 @@ class TestDbusService(unittest.TestCase):
# Let's create a thin pool which uses a raid 5 meta and raid5 data
# areas
lv_meta_path = vg.LvCreateRaid(
"meta_r5", "raid5", 1024 * 1024 * 16, 0, 0, -1, {})[0]
"meta_r5", "raid5", mib(4), 0, 0, -1, {})[0]
lv_data_path = vg.LvCreateRaid(
"data_r5", "raid5", 1024 * 1024 * 512, 0, 0, -1, {})[0]
"data_r5", "raid5", mib(16), 0, 0, -1, {})[0]
thin_pool_path = vg.CreateThinPool(
lv_meta_path, lv_data_path, -1, {})[0]
@ -450,7 +454,7 @@ class TestDbusService(unittest.TestCase):
lv_name = rs(8, '_lv')
thin_lv_path = thin_pool.ThinPool.LvCreate(
lv_name, 1024 * 1024 * 16, -1, {})[0]
lv_name, mib(16), -1, {})[0]
self.assertTrue(thin_lv_path != '/')
@ -504,7 +508,7 @@ class TestDbusService(unittest.TestCase):
vg = self._vg_create().Vg
self._test_lv_create(
vg.LvCreate,
(rs(8, '_lv'), 1024 * 1024 * 4,
(rs(8, '_lv'), mib(4),
dbus.Array([], '(ott)'), -1, {}), vg)
def test_lv_create_linear(self):
@ -512,7 +516,7 @@ class TestDbusService(unittest.TestCase):
vg = self._vg_create().Vg
self._test_lv_create(
vg.LvCreateLinear,
(rs(8, '_lv'), 1024 * 1024 * 4, False, -1, {}), vg)
(rs(8, '_lv'), mib(4), False, -1, {}), vg)
def test_lv_create_striped(self):
pv_paths = []
@ -522,7 +526,7 @@ class TestDbusService(unittest.TestCase):
vg = self._vg_create(pv_paths).Vg
self._test_lv_create(
vg.LvCreateStriped,
(rs(8, '_lv'), 1024 * 1024 * 4, 2, 8, False,
(rs(8, '_lv'), mib(4), 2, 8, False,
-1, {}), vg)
def test_lv_create_mirror(self):
@ -532,7 +536,7 @@ class TestDbusService(unittest.TestCase):
vg = self._vg_create(pv_paths).Vg
self._test_lv_create(vg.LvCreateMirror,
(rs(8, '_lv'), 1024 * 1024 * 4, 2, -1, {}), vg)
(rs(8, '_lv'), mib(4), 2, -1, {}), vg)
def test_lv_create_raid(self):
pv_paths = []
@ -542,7 +546,7 @@ class TestDbusService(unittest.TestCase):
vg = self._vg_create(pv_paths).Vg
self._test_lv_create(vg.LvCreateRaid,
(rs(8, '_lv'), 'raid4',
1024 * 1024 * 16, 2, 8, -1, {}), vg)
mib(16), 2, 8, -1, {}), vg)
def _create_lv(self, thinpool=False, size=None, vg=None):
@ -554,14 +558,14 @@ class TestDbusService(unittest.TestCase):
vg = self._vg_create(pv_paths).Vg
if size is None:
size = 1024 * 1024 * 128
size = mib(4)
return self._test_lv_create(
vg.LvCreateLinear,
(rs(8, '_lv'), size, thinpool, -1, {}), vg)
def test_lv_create_rounding(self):
self._create_lv(size=1024 * 1024 * 2 + 13)
self._create_lv(size=(mib(2) + 13))
def test_lv_create_thin_pool(self):
self._create_lv(True)
@ -602,7 +606,7 @@ class TestDbusService(unittest.TestCase):
tp = self._create_lv(True)
thin_path = tp.ThinPool.LvCreate(
rs(10, '_thin_lv'), 1024 * 1024 * 10, -1, {})[0]
rs(10, '_thin_lv'), mib(8), -1, {})[0]
lv = ClientProxy(self.bus, thin_path)
rc = lv.Lv.Rename('rename_test' + lv.LvCommon.Name, -1, {})
@ -668,9 +672,11 @@ class TestDbusService(unittest.TestCase):
pv = vg.Pvs
self._test_lv_create(vg.LvCreate,
(rs(8, '_lv'), 1024 * 1024 * 4,
dbus.Array([[pv[0], 0, 100]], '(ott)'), -1, {}), vg)
pv_proxy = ClientProxy(self.bus, pv[0])
self._test_lv_create(vg.LvCreate, (rs(8, '_lv'), mib(4),
dbus.Array([[pv_proxy.object_path, 0, (pv_proxy.Pv.PeCount - 1)]],
'(ott)'), -1, {}), vg)
def test_lv_resize(self):
@ -679,7 +685,7 @@ class TestDbusService(unittest.TestCase):
pv_paths.append(pp.object_path)
vg = self._vg_create(pv_paths).Vg
lv = self._create_lv(vg=vg)
lv = self._create_lv(vg=vg, size=mib(16))
for size in [
lv.LvCommon.SizeBytes + 4194304,
@ -694,8 +700,10 @@ class TestDbusService(unittest.TestCase):
prev = lv.LvCommon.SizeBytes
if len(pv_empty):
p = ClientProxy(self.bus, pv_empty[0])
rc = lv.Lv.Resize(
size, dbus.Array([[pv_empty[0], 0, 100]], '(oii)'),
size,
dbus.Array([[p.object_path, 0, p.Pv.PeCount - 1]], '(oii)'),
-1, {})
else:
rc = lv.Lv.Resize(size, dbus.Array([], '(oii)'), -1, {})
@ -817,17 +825,23 @@ class TestDbusService(unittest.TestCase):
# add a number of LVs and then remove the VG and all the contained
# LVs which appears to consistently run a little slow.
vg = self._vg_create(pv_paths).Vg
vg_proxy = self._vg_create(pv_paths)
for i in range(0, num_lvs):
obj_path, job = vg.LvCreateLinear(
rs(8, "_lv"), 1024 * 1024 * 4, False, -1, {})
self.assertTrue(job == '/')
vg_proxy.update()
if vg_proxy.Vg.FreeCount > 0:
obj_path, job = vg_proxy.Vg.LvCreateLinear(
rs(8, "_lv"), mib(4), False, -1, {})
self.assertTrue(job == '/')
else:
# We ran out of space, test will probably fail
break
# Make sure that we are honoring the timeout
start = time.time()
remove_job = vg.Remove(1, {})
remove_job = vg_proxy.Vg.Remove(1, {})
end = time.time()
@ -902,7 +916,7 @@ class TestDbusService(unittest.TestCase):
vg = self._vg_create().Vg
lv = self._test_lv_create(
vg.LvCreateLinear,
(rs(8, '_lv'), 1024 * 1024 * 4, False, -1, {}),
(rs(8, '_lv'), mib(4), False, -1, {}),
vg)
t = ['Testing', 'tags']
@ -968,7 +982,7 @@ class TestDbusService(unittest.TestCase):
vg = self._vg_create().Vg
self._test_lv_create(
vg.LvCreateLinear,
(rs(8, '_lv'), 1024 * 1024 * 4, False, -1, {}),
(rs(8, '_lv'), mib(4), False, -1, {}),
vg)
vg.update()
@ -1081,9 +1095,9 @@ class TestDbusService(unittest.TestCase):
def test_snapshot_merge(self):
# Create a non-thin LV and merge it
ss_size = 1024 * 1024 * 512
ss_size = mib(8)
lv_p = self._create_lv(size=1024 * 1024 * 1024)
lv_p = self._create_lv(size=mib(16))
ss_name = lv_p.LvCommon.Name + '_snap'
snapshot_path = lv_p.Lv.Snapshot(ss_name, ss_size, -1, {})[0]
ss = ClientProxy(self.bus, snapshot_path)
@ -1101,7 +1115,7 @@ class TestDbusService(unittest.TestCase):
tp = self._create_lv(True)
thin_path = tp.ThinPool.LvCreate(
rs(10, '_thin_lv'), 1024 * 1024 * 10, -1, {})[0]
rs(10, '_thin_lv'), mib(10), -1, {})[0]
lv_p = ClientProxy(self.bus, thin_path)
@ -1115,8 +1129,8 @@ class TestDbusService(unittest.TestCase):
def _create_cache_pool(self):
vg = self._vg_create().Vg
md = self._create_lv(size=(1024 * 1024 * 8), vg=vg)
data = self._create_lv(size=(1024 * 1024 * 256), vg=vg)
md = self._create_lv(size=(mib(8)), vg=vg)
data = self._create_lv(size=(mib(8)), vg=vg)
cache_pool_path = vg.CreateCachePool(
md.object_path, data.object_path, -1, {})[0]
@ -1137,7 +1151,7 @@ class TestDbusService(unittest.TestCase):
for destroy_cache in [True, False]:
vg, cache_pool = self._create_cache_pool()
lv_to_cache = self._create_lv(size=(1024 * 1024 * 1024), vg=vg)
lv_to_cache = self._create_lv(size=mib(8), vg=vg)
c_lv_path = cache_pool.CachePool.CacheLv(
lv_to_cache.object_path, -1, {})[0]
@ -1196,18 +1210,18 @@ class TestDbusService(unittest.TestCase):
for c in bad_chars:
with self.assertRaises(dbus.exceptions.DBusException):
vg_proxy.Vg.LvCreateLinear(rs(8, '_lv') + c,
1024 * 1024 * 4, False, -1, {})
mib(4), False, -1, {})
for r in ("_cdata", "_cmeta", "_corig", "_mimage", "_mlog",
"_pmspare", "_rimage", "_rmeta", "_tdata", "_tmeta", "_vorigin"):
with self.assertRaises(dbus.exceptions.DBusException):
vg_proxy.Vg.LvCreateLinear(rs(8, '_lv') + r,
1024 * 1024 * 4, False, -1, {})
mib(4), False, -1, {})
for r in ("snapshot", "pvmove"):
with self.assertRaises(dbus.exceptions.DBusException):
vg_proxy.Vg.LvCreateLinear(r + rs(8, '_lv'),
1024 * 1024 * 4, False, -1, {})
mib(4), False, -1, {})
_ALLOWABLE_TAG_CH = string.ascii_letters + string.digits + "._-+/=!:&#"