Friendly reminder, I was cleaning my patch queue and verified that this wasn't worked since Sep 18. Please keep it in mind, I'm going to remove it from my queue, awaiting on a v2 from you.
Thanks and sorry for all the trouble, Lucas On Tue, Sep 18, 2012 at 6:12 AM, <[email protected]> wrote: > From: Yunping Zheng <[email protected]> > > using this patch you can enable or disable pci msi before test. > if you want to disable pci msi before test,just set: > disable_pci_msi = yes > in subtests.cfg > this patch also support modify image file before test using libguestfs. > > Signed-off-by: Yunping Zheng <[email protected]> > --- > client/tests/virt/virttest/env_process.py | 14 ++++-- > client/tests/virt/virttest/utils_disk.py | 83 > ++++++++++++++++++++++++++++++- > 2 files changed, 91 insertions(+), 6 deletions(-) > > diff --git a/client/tests/virt/virttest/env_process.py > b/client/tests/virt/virttest/env_process.py > index 6f9f7da..bbcc5f7 100644 > --- a/client/tests/virt/virttest/env_process.py > +++ b/client/tests/virt/virttest/env_process.py > @@ -2,7 +2,7 @@ import os, time, commands, re, logging, glob, threading, > shutil > from autotest.client import utils > from autotest.client.shared import error > import aexpect, kvm_monitor, ppm_utils, test_setup, virt_vm, kvm_vm > -import libvirt_vm, video_maker, utils_misc, storage, kvm_storage > +import libvirt_vm, video_maker, utils_disk, utils_misc, storage, kvm_storage > import remote, ovirt > > try: > @@ -17,7 +17,7 @@ _screendump_thread = None > _screendump_thread_termination_event = None > > > -def preprocess_image(test, params, image_name): > +def preprocess_image(test, params, env, image_name): > """ > Preprocess a single QEMU image according to the instructions in params. > > @@ -44,6 +44,10 @@ def preprocess_image(test, params, image_name): > if not image.create(params): > raise error.TestError("Could not create image") > > + #if you want set "pci=nomsi" before test, set "disable_pci_msi = yes" > + disable_pci_msi = params.get("disable_pci_msi", "no") > + utils_disk.enable_disable_pci_msi(test, params, env, image_filename, > + disable_pci_msi) > > def preprocess_vm(test, params, env, name): > """ > @@ -114,7 +118,7 @@ def preprocess_vm(test, params, env, name): > vm.params = params > > > -def postprocess_image(test, params, image_name): > +def postprocess_image(test, params, env, image_name): > """ > Postprocess a single QEMU image according to the instructions in params. > > @@ -228,14 +232,14 @@ def process(test, params, env, image_func, vm_func, > vm_first=False): > if vm is not None and vm.is_alive(): > vm.pause() > try: > - image_func(test, image_params, image_name) > + image_func(test, image_params, env, image_name) > finally: > if vm is not None and vm.is_alive(): > vm.resume() > else: > for image_name in params.objects("images"): > image_params = params.object_params(image_name) > - image_func(test, image_params, image_name) > + image_func(test, image_params, env, image_name) > > if not vm_first: > _call_image_func() > diff --git a/client/tests/virt/virttest/utils_disk.py > b/client/tests/virt/virttest/utils_disk.py > index bc9ae25..356e416 100644 > --- a/client/tests/virt/virttest/utils_disk.py > +++ b/client/tests/virt/virttest/utils_disk.py > @@ -4,9 +4,10 @@ Virtualization test - Virtual disk related utility functions > @copyright: Red Hat Inc. > """ > > -import os, glob, shutil, tempfile, logging, ConfigParser > +import os, time, re, glob, shutil, tempfile, logging, ConfigParser > from autotest.client import utils > from autotest.client.shared import error > +import utils_misc > > > # Whether to print all shell commands called > @@ -47,6 +48,86 @@ def clean_old_image(image): > utils.run('umount %s' % image, verbose=DEBUG) > os.remove(image) > > +def enable_disable_pci_msi(test, params, env, image_filename, > disable_pci_msi): > + """ > + Modify kernel config "pci=nomsi", before the guest is start. > + > + @Parm image_filename: image you want to modify. > + @Param disable_pci_msi: flag of if disable pci msi. > + """ > + grub_file = params.get("grub_file", "/boot/grub/grub.conf") > + kernel_cfg_pos_reg = params.get("kernel_cfg_pos_reg", > + "\s*kernel\s*\/vmlinuz-\d+.*") > + msi_keyword = params.get("msi_keyword", " pci=nomsi") > + > + kernel_config_ori = read_file_from_image(image_filename, grub_file) > + kernel_config_line = re.findall(kernel_cfg_pos_reg, kernel_config_ori)[0] > + kernel_need_modify = False > + > + if disable_pci_msi == "yes": > + if not re.findall(msi_keyword, kernel_config_line): > + kernel_config_set = kernel_config_line + msi_keyword > + kernel_need_modify = True > + elif disable_pci_msi == "no": > + if re.findall(msi_keyword, kernel_config_line): > + kernel_config_set = re.sub(msi_keyword, "", kernel_config_line) > + kernel_need_modify = True > + if kernel_need_modify: > + for key in env.keys(): > + vm = env[key] > + if not utils_misc.is_vm(vm): > + continue > + if vm.is_alive(): > + vm.destroy() > + time.sleep(1) > + replace_image_file_content(image_filename, grub_file, > + kernel_config_line, kernel_config_set) > + > +def read_file_from_image(image_filename, file_name): > + """ > + read image file, return the content of the file > + > + @Param image_filename: image you want to modify. > + @Param file_name: the file you want to read. > + """ > + cmd = "guestfish --rw -a %s -i " % image_filename > + cmd_read = "cat %s" % file_name > + o = utils.system_output(cmd + cmd_read) > + if o: > + return o > + else: > + raise error.TestError("can't read file %s or it is empty" % > file_name) > + > +def write_to_image_file(image_filename, file_name, content): > + """ > + wirte content to image file > + > + @Param image_filename: image you want to modify. > + @Param file_name: the file you want to write > + @Param content: the content you want to write. > + """ > + cmd = "guestfish --rw -a %s -i " % image_filename > + cmd_write = "write %s '%s'" % (file_name, content) > + s = utils.system(cmd + cmd_write) > + if s == 0: > + return True > + else: > + return False > + > +def replace_image_file_content(image_filename, file_name, find_con, rep_con): > + """ > + replace file in the image content. > + > + @Param image_filename: image you want to modify. > + @Param file_name: the file you want to replace > + @Param find_con: the orign content you want to replace. > + @Param rep_con: the replace content you want. > + """ > + file_content = read_file_from_image(image_filename, file_name) > + file_content_after_replace = re.sub(find_con, rep_con, file_content ) > + if file_content != file_content_after_replace : > + return write_to_image_file(image_filename, file_name, > + file_content_after_replace) > > class Disk(object): > """ > -- > 1.7.11.4 > > _______________________________________________ > Autotest-kernel mailing list > [email protected] > https://www.redhat.com/mailman/listinfo/autotest-kernel -- Lucas _______________________________________________ Autotest-kernel mailing list [email protected] https://www.redhat.com/mailman/listinfo/autotest-kernel
