Adam Litke has uploaded a new change for review. Change subject: tests: Streamline fake blockSD creation ......................................................................
tests: Streamline fake blockSD creation The BlockManifestTests test various functions of the BlockStorageDomainManifest by creating a mock blockSD using FakeLVM. Some tests created the storage domain's VG and others did not. None of these tests created the other internal LVs needed for a properly functioning SD (ie. metadata, ids, etc.). In order to unify the testing environment and prepare for additional sophistication in FakeLVM, converge make_vg and make_blocksd_manifest into a new function make_blocksd which does everything needed. While sometimes we will set up more than is strictly necessary for some tests, the advantage of unified setup is far more important. Change-Id: I0cc0aef3a77da9e7d81ded85f0c7e8b21cb2b990 Signed-off-by: Adam Litke <[email protected]> --- M tests/manifest_tests.py M tests/storagetestlib.py 2 files changed, 26 insertions(+), 36 deletions(-) git pull ssh://gerrit.ovirt.org:29418/vdsm refs/changes/14/47914/1 diff --git a/tests/manifest_tests.py b/tests/manifest_tests.py index 57d5c41..1219769 100644 --- a/tests/manifest_tests.py +++ b/tests/manifest_tests.py @@ -23,8 +23,7 @@ from testlib import VdsmTestCase, namedTemporaryDir, make_file from monkeypatch import MonkeyPatchScope from storagefakelib import FakeLVM -from storagetestlib import make_filesd_manifest, make_blocksd_manifest, \ - make_file_volume, make_vg +from storagetestlib import make_filesd_manifest, make_blocksd, make_file_volume from storage import sd, blockSD, blockVolume @@ -79,7 +78,7 @@ with namedTemporaryDir() as tmpdir: lvm = FakeLVM(tmpdir) with MonkeyPatchScope([(blockSD, 'lvm', lvm)]): - manifest = make_blocksd_manifest(tmpdir) + manifest = make_blocksd(tmpdir, lvm) vg_name = manifest.sdUUID make_file(lvm.lvPath(vg_name, 'metadata')) self.assertIsInstance(manifest.getReadDelay(), float) @@ -89,8 +88,8 @@ with namedTemporaryDir() as tmpdir: lvm = FakeLVM(tmpdir) with MonkeyPatchScope([(blockSD, 'lvm', lvm)]): - manifest = make_blocksd_manifest(tmpdir) - vg_name = make_vg(lvm, manifest) + manifest = make_blocksd(tmpdir, lvm) + vg_name = manifest.sdUUID lv_name = str(uuid.uuid4()) lvm.createLV(vg_name, lv_name, VOLSIZE / MB) lvm.fake_lv_symlink_create(vg_name, lv_name) @@ -102,10 +101,9 @@ with namedTemporaryDir() as tmpdir: lvm = FakeLVM(tmpdir) with MonkeyPatchScope([(blockSD, 'lvm', lvm)]): - manifest = make_blocksd_manifest(tmpdir) - vg_name = make_vg(lvm, manifest) + manifest = make_blocksd(tmpdir, lvm) lv_name = str(uuid.uuid4()) - lvm.createLV(vg_name, lv_name, VOLSIZE / MB) + lvm.createLV(manifest.sdUUID, lv_name, VOLSIZE / MB) self.assertEqual(VOLSIZE, manifest.getVSize('<imgUUID>', lv_name)) @@ -114,7 +112,7 @@ lvm = FakeLVM(tmpdir) with MonkeyPatchScope([(blockSD, 'lvm', lvm)]): metadata = {sd.DMDK_VERSION: 3} - manifest = make_blocksd_manifest(tmpdir, metadata) + manifest = make_blocksd(tmpdir, lvm, metadata=metadata) metadata[sd.DMDK_SDUUID] = manifest.sdUUID self.assertEquals(manifest.sdUUID, manifest.getMetaParam(sd.DMDK_SDUUID)) @@ -123,7 +121,7 @@ with namedTemporaryDir() as tmpdir: lvm = FakeLVM(tmpdir) with MonkeyPatchScope([(blockSD, 'lvm', lvm)]): - manifest = make_blocksd_manifest(tmpdir) + manifest = make_blocksd(tmpdir, lvm) self.assertEquals(512, manifest.logBlkSize) self.assertEquals(512, manifest.phyBlkSize) @@ -134,7 +132,7 @@ metadata = {sd.DMDK_VERSION: 3, blockSD.DMDK_LOGBLKSIZE: 2048, blockSD.DMDK_PHYBLKSIZE: 1024} - manifest = make_blocksd_manifest(tmpdir, metadata) + manifest = make_blocksd(tmpdir, lvm, metadata=metadata) self.assertEquals(2048, manifest.logBlkSize) self.assertEquals(1024, manifest.phyBlkSize) @@ -145,8 +143,7 @@ with namedTemporaryDir() as tmpdir: lvm = FakeLVM(tmpdir) with MonkeyPatchScope([(blockSD, 'lvm', lvm)]): - manifest = make_blocksd_manifest(tmpdir) - make_vg(lvm, manifest) + manifest = make_blocksd(tmpdir, lvm) lvs = ('0b6287f0-3679-4c4d-8be5-9bbfe3ec9c1f', 'ea13af29-b64a-4d1a-b35f-3e6ab15c3b04') for lv, offset in zip(lvs, [4, 7]): @@ -160,8 +157,7 @@ with namedTemporaryDir() as tmpdir: lvm = FakeLVM(tmpdir) with MonkeyPatchScope([(blockSD, 'lvm', lvm)]): - manifest = make_blocksd_manifest(tmpdir) - make_vg(lvm, manifest) + manifest = make_blocksd(tmpdir, lvm) with manifest.acquireVolumeMetadataSlot(None, 1): acquired = manifest._lvTagMetaSlotLock.acquire(False) self.assertFalse(acquired) diff --git a/tests/storagetestlib.py b/tests/storagetestlib.py index 2f64e0a..f3585cc 100644 --- a/tests/storagetestlib.py +++ b/tests/storagetestlib.py @@ -35,38 +35,32 @@ yield -def make_blocksd_manifest(tmpdir=None, metadata=None, sduuid=None): +def make_blocksd(tmpdir, fake_lvm, sduuid=None, devices=None, metadata=None): if sduuid is None: sduuid = str(uuid.uuid4()) + if devices is None: + devices = get_random_devices() if metadata is None: metadata = FakeMetadata({sd.DMDK_VERSION: 3}) + + fake_lvm.createVG(sduuid, devices, blockSD.STORAGE_DOMAIN_TAG, + blockSD.VG_METADATASIZE) + fake_lvm.createLV(sduuid, sd.METADATA, blockSD.SD_METADATA_SIZE) + + # Create the rest of the special LVs + for metafile, sizemb in sd.SPECIAL_VOLUME_SIZES_MIB.iteritems(): + fake_lvm.createLV(sduuid, metafile, sizemb) + manifest = blockSD.BlockStorageDomainManifest(sduuid, metadata) - if tmpdir is not None: - manifest.domaindir = tmpdir - os.makedirs(os.path.join(manifest.domaindir, sduuid, sd.DOMAIN_IMAGES)) + manifest.domaindir = tmpdir + os.makedirs(os.path.join(manifest.domaindir, sduuid, sd.DOMAIN_IMAGES)) + return manifest def get_random_devices(count=NR_PVS): return ['/dev/mapper/{0}'.format(os.urandom(16).encode('hex')) for _ in range(count)] - - -def make_vg(fake_lvm, manifest, devices=None): - vg_name = manifest.sdUUID - if devices is None: - devices = get_random_devices() - fake_lvm.createVG(vg_name, devices, blockSD.STORAGE_UNREADY_DOMAIN_TAG, - blockSD.VG_METADATASIZE) - fake_lvm.createLV(vg_name, sd.METADATA, blockSD.SD_METADATA_SIZE) - - # Fake the PV information for our metadata LV (example lvs session follows) - # # lvs -o devices b19d16a0-06e1-4c92-b959-2019f503c8ac/metadata - # Devices - # /dev/mapper/360014059e671b7fc2c44169a58c00289(0) - fake_lvm.lvmd[vg_name][sd.METADATA]['devices'] = \ - '{0}(0)'.format(devices[0]) - return vg_name def get_metafile_path(domaindir): -- To view, visit https://gerrit.ovirt.org/47914 To unsubscribe, visit https://gerrit.ovirt.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: I0cc0aef3a77da9e7d81ded85f0c7e8b21cb2b990 Gerrit-PatchSet: 1 Gerrit-Project: vdsm Gerrit-Branch: master Gerrit-Owner: Adam Litke <[email protected]> _______________________________________________ vdsm-patches mailing list [email protected] https://lists.fedorahosted.org/mailman/listinfo/vdsm-patches
