diff options
| author | Ryan Harper <[email protected]> | 2019-06-05 15:26:08 +0000 |
|---|---|---|
| committer | Server Team CI Bot <[email protected]> | 2019-06-05 15:26:08 +0000 |
| commit | 37a7a0f466f7277fec92ad043075580b0d228bf9 (patch) | |
| tree | a639182ce65521c1116e016c2bb4f25f5e91aa10 | |
| parent | a5de952f0b304496e2f75c07b23fa8cb21c23d69 (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.py | 30 | ||||
| -rw-r--r-- | tests/vmtests/test_lvm_iscsi.py | 11 | ||||
| -rw-r--r-- | tests/vmtests/test_lvm_raid.py | 4 |
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): |
