Zhou Zheng Sheng has uploaded a new change for review. Change subject: generate initramfs on demand in VM creation test ......................................................................
generate initramfs on demand in VM creation test Fedora is shipped with initramfs, so use it directly. Some other distros are shipped with initrd, so generate initramfs on demand. Change-Id: I07a7a246cd66bd3f9bac30f56a4d63081d04ea29 Signed-off-by: Zhou Zheng Sheng <[email protected]> --- M tests/functional/xmlrpcTests.py M vdsm.spec.in 2 files changed, 62 insertions(+), 32 deletions(-) git pull ssh://gerrit.ovirt.org:29418/vdsm refs/changes/93/7693/1 diff --git a/tests/functional/xmlrpcTests.py b/tests/functional/xmlrpcTests.py index cfda085..226478c 100644 --- a/tests/functional/xmlrpcTests.py +++ b/tests/functional/xmlrpcTests.py @@ -19,16 +19,55 @@ # import os +import tempfile import time from testrunner import VdsmTestCase as TestCaseBase from nose.plugins.skip import SkipTest +from contextlib import contextmanager from vdsm.config import config from vdsm import vdscli +from storage.misc import execCmd +from vdsm.utils import CommandPath if not config.getboolean('vars', 'xmlrpc_enable'): raise SkipTest("XML-RPC Bindings are disabled") + +_mkinitrd = CommandPath("mkinird", "/usr/bin/mkinitrd") + + +@contextmanager +def kernelBootImages(): + kernelVer = os.uname()[2] + kernelPath = "/boot/vmlinuz-" + kernelVer + initramfsPath = "/boot/initramfs-%s.img" % kernelVer + + if not os.path.isfile(kernelPath): + raise SkipTest("Can not locate kernel image for release %s" % + kernelVer) + + if os.path.isfile(initramfsPath): + # There is an initramfs shipped with the distro, use it + try: + yield (kernelPath, initramfsPath) + finally: + pass + else: + # Generate an initramfs on demand, use it, delete it + initramfsPath = genInitramfs(kernelVer) + try: + yield (kernelPath, initramfsPath) + finally: + os.unlink(initramfsPath) + + +def genInitramfs(kernelVer): + fd, path = tempfile.mkstemp() + cmd = [_mkinitrd.cmd, "-f", path, kernelVer] + rc, out, err = execCmd(cmd, sudo=False) + os.chmod(path, 0644) + return path class XMLRPCTest(TestCaseBase): @@ -91,41 +130,31 @@ self.assertVdsOK(r) def testStartSmallVM(self): - kernelVer = os.uname()[2] - kernelPath = "/boot/vmlinuz-" + kernelVer - initramfsPath = "/boot/initramfs-%s.img" % kernelVer - - if not os.path.isfile(kernelPath): - raise SkipTest("Can not locate kernel image for release %s" % - kernelVer) - - if not os.path.isfile(initramfsPath): - raise SkipTest("Can not locate initramfs image for release %s" % - kernelVer) - - VMID = '77777777-ffff-3333-bbbb-222222222222' - conf = {'display': 'vnc', - 'kernel': kernelPath, - 'initrd': initramfsPath, - # The initramfs is generated by dracut. The following - # arguments will be interpreted by init scripts created by - # dracut. - 'kernelArgs': 'rd.break=cmdline rd.shell rd.skipfsck', - 'kvmEnable': 'true', - 'memSize': '256', - 'vmId': VMID, - 'vmName': 'vdsm_testSmallVM', - 'vmType': 'kvm'} - def assertVMAndGuestUp(): self.assertVmUp(VMID) self.assertGuestUp(VMID) - try: - self.assertVdsOK(self.s.create(conf)) - # wait 65 seconds for VM to come up until timeout - self.retryAssert(assertVMAndGuestUp, 65, 1) - finally: - destroyResult = self.s.destroy(VMID) + VMID = '77777777-ffff-3333-bbbb-222222222222' + + with kernelBootImages() as (kernelPath, initramfsPath): + conf = {'display': 'vnc', + 'kernel': kernelPath, + 'initrd': initramfsPath, + # The initramfs is generated by dracut. The following + # arguments will be interpreted by init scripts created by + # dracut. + 'kernelArgs': 'rd.break=cmdline rd.shell rd.skipfsck', + 'kvmEnable': 'true', + 'memSize': '256', + 'vmId': VMID, + 'vmName': 'vdsm_testSmallVM', + 'vmType': 'kvm'} + + try: + self.assertVdsOK(self.s.create(conf)) + # wait 65 seconds for VM to come up until timeout + self.retryAssert(assertVMAndGuestUp, 65, 1) + finally: + destroyResult = self.s.destroy(VMID) self.assertVdsOK(destroyResult) diff --git a/vdsm.spec.in b/vdsm.spec.in index 0d1b195..6cd4e0c 100644 --- a/vdsm.spec.in +++ b/vdsm.spec.in @@ -165,6 +165,7 @@ %package tests Summary: VDSM Test Suite Requires: vdsm = %{version}-%{release} +Requires: dracut BuildArch: noarch %description tests -- To view, visit http://gerrit.ovirt.org/7693 To unsubscribe, visit http://gerrit.ovirt.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: I07a7a246cd66bd3f9bac30f56a4d63081d04ea29 Gerrit-PatchSet: 1 Gerrit-Project: vdsm Gerrit-Branch: master Gerrit-Owner: Zhou Zheng Sheng <[email protected]> _______________________________________________ vdsm-patches mailing list [email protected] https://lists.fedorahosted.org/mailman/listinfo/vdsm-patches
