summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRyan Harper <[email protected]>2019-06-05 15:26:08 +0000
committerServer Team CI Bot <[email protected]>2019-06-05 15:26:08 +0000
commit37a7a0f466f7277fec92ad043075580b0d228bf9 (patch)
treea639182ce65521c1116e016c2bb4f25f5e91aa10
parenta5de952f0b304496e2f75c07b23fa8cb21c23d69 (diff)
vmtests: determine block name via dname when verifying volume groups
The LVM tests verify `pvs` output to check that a VG is composed of the specified devices from the storage config. The current test expected /dev/sda, /dev/sdb for certain VGs, however, sda/sdb kernel names are not stable and sometimes we would fail to verify when the order was swapped. Instead we now look up the dname, which is stable to determine the kname of the specific disk at runtime and use that to verify the VG is composed of the correct devices.
-rw-r--r--tests/vmtests/test_lvm.py30
-rw-r--r--tests/vmtests/test_lvm_iscsi.py11
-rw-r--r--tests/vmtests/test_lvm_raid.py4
3 files changed, 35 insertions, 10 deletions
diff --git a/tests/vmtests/test_lvm.py b/tests/vmtests/test_lvm.py
index d5a73289..206b8358 100644
--- a/tests/vmtests/test_lvm.py
+++ b/tests/vmtests/test_lvm.py
@@ -4,6 +4,7 @@ from . import VMBaseClass
from .releases import base_vm_classes as relbase
from .releases import centos_base_vm_classes as centos_relbase
+import os
import textwrap
@@ -30,14 +31,35 @@ class TestLvmAbs(VMBaseClass):
('vg1-lv1', 0),
('vg1-lv2', 0)]
+ def _dname_to_kname(self, dname):
+ # extract kname from /dev/disk/by-dname on /dev/<kname>
+ # parsing ls -al output on /dev/disk/by-dname:
+ # lrwxrwxrwx. 1 root root 9 Jun 3 21:16 iscsi_disk1 -> ../../sdb
+ ls_bydname = self.load_collect_file("ls_al_bydname")
+ kname = [os.path.basename(line.split()[10])
+ for line in ls_bydname.split('\n')
+ if dname in line.split()]
+ self.assertEqual(len(kname), 1)
+ kname = kname.pop()
+ self.assertTrue(kname is not None)
+ return kname
+
+ def _test_pvs(self, dname_to_vg):
+ for dname, vg in dname_to_vg.items():
+ kname = self._dname_to_kname(dname)
+ self.check_file_strippedline("pvs", "%s=/dev/%s" % (vg, kname))
+
+ def test_pvs(self):
+ dname_to_vg = {
+ 'main_disk-part5': 'vg1',
+ 'main_disk-part6': 'vg1',
+ }
+ return self._test_pvs(dname_to_vg)
+
def test_lvs(self):
self.check_file_strippedline("lvs", "lv1=vg1")
self.check_file_strippedline("lvs", "lv2=vg1")
- def test_pvs(self):
- self.check_file_strippedline("pvs", "vg1=/dev/vda5")
- self.check_file_strippedline("pvs", "vg1=/dev/vda6")
-
def test_output_files_exist(self):
self.output_files_exist(
["fstab", "ls_dname"])
diff --git a/tests/vmtests/test_lvm_iscsi.py b/tests/vmtests/test_lvm_iscsi.py
index 9e42163a..e07338e6 100644
--- a/tests/vmtests/test_lvm_iscsi.py
+++ b/tests/vmtests/test_lvm_iscsi.py
@@ -51,10 +51,13 @@ class TestLvmIscsiAbs(TestLvmAbs, TestBasicIscsiAbs):
self.check_file_strippedline("lvs", "lv4=vg2")
def test_pvs(self):
- self.check_file_strippedline("pvs", "vg1=/dev/sda5")
- self.check_file_strippedline("pvs", "vg1=/dev/sda6")
- self.check_file_strippedline("pvs", "vg2=/dev/sdb5")
- self.check_file_strippedline("pvs", "vg2=/dev/sdb6")
+ dname_to_vg = {
+ 'iscsi_disk1-part5': 'vg1',
+ 'iscsi_disk1-part6': 'vg1',
+ 'iscsi_disk2-part5': 'vg2',
+ 'iscsi_disk2-part6': 'vg2',
+ }
+ return self._test_pvs(dname_to_vg)
class Centos70XenialTestLvmIscsi(centos_relbase.centos70_xenial,
diff --git a/tests/vmtests/test_lvm_raid.py b/tests/vmtests/test_lvm_raid.py
index 155bbb90..362191a2 100644
--- a/tests/vmtests/test_lvm_raid.py
+++ b/tests/vmtests/test_lvm_raid.py
@@ -39,8 +39,8 @@ class TestLvmOverRaidAbs(TestMdadmAbs, TestLvmAbs):
self.check_file_strippedline("lvs", "lv-0=vg0")
def test_pvs(self):
- self.check_file_strippedline("pvs", "vg0=/dev/md0")
- self.check_file_strippedline("pvs", "vg0=/dev/md1")
+ dname_to_vg = {'md0': 'vg0', 'md1': 'vg0'}
+ return self._test_pvs(dname_to_vg)
class EoanTestLvmOverRaid(relbase.eoan, TestLvmOverRaidAbs):