From: Yiqiao Pu <ypu@redhat.com>
To: Lucas Meneghel Rodrigues <lmr@redhat.com>
Cc: autotest@test.kernel.org, KVM mailing list <kvm@vger.kernel.org>
Subject: Re: [Autotest] [PATCH] KVM test: Update pci_hotplug to suit for new qemu
Date: Thu, 02 Sep 2010 16:53:52 +0000 [thread overview]
Message-ID: <4C7FD6A0.1080605@redhat.com> (raw)
In-Reply-To: <1282907824.2924.21.camel@freedom>
On 08/27/2010 11:17 AM, Lucas Meneghel Rodrigues wrote:
> On Fri, 2010-08-06 at 10:23 +0800, Yiqiao Pu wrote:
>> In the new version of qemu in RHEL 6.0 device_add is instead of pci_add. So
>> modify the scripts to suit for the new version of qemu.
>> There is still one problem here. Block device htoplug only supported in qmp
>> command line, but qmp don't implement pci query in the current version which
>> is needed by the verification of device hotplug. So the block device
>> hotplug will report a failed rignt now.
>>
>> Signed-off-by: Yiqiao Pu<ypu@redhat.com>
>> ---
>> client/tests/kvm/tests/pci_hotplug.py | 64 ++++++++++++++++++++++++---------
>> 1 files changed, 47 insertions(+), 17 deletions(-)
>>
>> diff --git a/client/tests/kvm/tests/pci_hotplug.py b/client/tests/kvm/tests/pci_hotplug.py
>> index 2c459d7..5202cf6 100644
>> --- a/client/tests/kvm/tests/pci_hotplug.py
>> +++ b/client/tests/kvm/tests/pci_hotplug.py
>> @@ -1,4 +1,4 @@
>> -import logging, os
>> +import logging, os, commands, re
>> from autotest_lib.client.common_lib import error
>> import kvm_subprocess, kvm_test_utils, kvm_utils, kvm_vm
>>
>> @@ -35,26 +35,56 @@ def run_pci_hotplug(test, params, env):
>>
>> tested_model = params.get("pci_model")
>> test_type = params.get("pci_type")
>> -
>> - if test_type == "nic":
>> - pci_add_cmd = "pci_add pci_addr=auto nic model=%s" % tested_model
>> - elif test_type == "block":
>> - image_params = kvm_utils.get_sub_dict(params, "stg")
>> - image_filename = kvm_vm.get_image_filename(image_params, test.bindir)
>> - pci_add_cmd = ("pci_add pci_addr=auto storage file=%s,if=%s" %
>> - (image_filename, tested_model))
>> -
>> - # Execute pci_add (should be replaced by a proper monitor method call)
>> - add_output = vm.monitor.cmd(pci_add_cmd)
>> - if not "OK domain" in add_output:
>> - raise error.TestFail("Add device failed. Hypervisor command is: %s. "
>> - "Output: %r" % (pci_add_cmd, add_output))
>> - after_add = vm.monitor.info("pci")
>> + s, o = commands.getstatusoutput("uname -r")
>> + if len(re.findall("el6", o))> 0:
> ^ This check is not good for upstream code, after all we might be
> running on qemu-kvm upstream, generic versions that already support the
> new syntax. Asking the monitor the set of supported commands seems the
> most sensible solution here. Please resolve this issue and re-send the
> patch.
>
>> + cmd_type = "device"
>> + else:
>> + cmd_type = "pci"
>> +
>> + if cmd_type == "pci":
>> + if test_type == "nic":
>> + pci_add_cmd = "pci_add pci_addr=auto nic model=%s" % tested_model
>> + elif test_type == "block":
>> + image_params = kvm_utils.get_sub_dict(params, "stg")
>> + image_filename = kvm_vm.get_image_filename(image_params,
>> + test.bindir)
>> + pci_add_cmd = ("pci_add pci_addr=auto storage file=%s,if=%s" %
>> + (image_filename, tested_model))
>> + # Execute pci_add (should be replaced by a proper monitor method call)
>> + add_output = vm.monitor.cmd(pci_add_cmd)
> ^ You might want to wrap pci device addition on a new monitor method, as
> the TODO comment on this above line suggests. This comment was made by
> Michael on his monitor patchset, and since you are working on this test,
> it's a good opportunity to get this implemented.
>
>> + if not "OK domain" in add_output:
>> + raise error.TestFail("Add device failed. Hypervisor command is: %s"
>> + ". Output: %r" % (pci_add_cmd, add_output))
>> + after_add = vm.monitor.info("pci")
>> + elif cmd_type == "device":
>> + # block device hotplug is not support rignt now
> ^ Typo, "supported"
>
>> + id = test_type + "-" + kvm_utils.generate_random_string(4)
>> + if test_type == "nic":
>> + if tested_model == "virtio":
>> + tested_model = "virtio-net-pci"
>> + pci_add_cmd = "device_add id=%s,driver=%s" % (id, tested_model)
>> + elif test_type == "block":
>> + if tested_model == "virtio":
>> + tested_model = "virtio-blk-pci"
>> + if tested_model == "scsi":
>> + tested_model = "scsi-disk"
>> + pci_add_cmd = "device_add %s,id=%s,driver=%s" % (image_filename,
>> + id, tested_model)
>> +
>> + raise error.TestError("Do not support in current version")
> ^ Here, we should verify whether the monitor does support pci query
> command (at some point, this *will* be implemented). If it doesn't,
> throw a error.TestNA with the message "PCI block hotplug is not
> supported by the monitor".
>
>> + add_output = vm.monitor.cmd(pci_add_cmd)
>> + after_add = vm.monitor.info("pci")
>> + if not id in after_add:
>> + raise error.TestFail("Add device failed. Hypervisor command is: %s"
>> + ". Output: %r" % (pci_add_cmd, add_output))
>>
>> # Define a helper function to delete the device
>> def pci_del(ignore_failure=False):
>> - slot_id = "0" + add_output.split(",")[2].split()[1]
>> - cmd = "pci_del pci_addr=%s" % slot_id
>> + if cmd_type == "pci":
>> + slot_id = "0" + add_output.split(",")[2].split()[1]
>> + cmd = "pci_del pci_addr=%s" % slot_id
>> + elif cmd_type == "device":
>> + cmd = "device_del id=%s" % id
>> # This should be replaced by a proper monitor method call
>> vm.monitor.cmd(cmd)
>>
Hi Lucas,
Sorry that I didn't see your reply until now, because my bad filter for
emails. Now we find that the block devices also supported by monitor
command line(virtio blocks), so we update the patch. I will modify that
patch according your comments and resend it soon. Thank you.
Best Regards
Yiqiao Pu
prev parent reply other threads:[~2010-09-02 8:53 UTC|newest]
Thread overview: 2+ messages / expand[flat|nested] mbox.gz Atom feed top
[not found] <1281061418-3938-1-git-send-email-ypu@redhat.com>
2010-08-27 11:17 ` [Autotest] [PATCH] KVM test: Update pci_hotplug to suit for new qemu Lucas Meneghel Rodrigues
2010-09-02 16:53 ` Yiqiao Pu [this message]
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=4C7FD6A0.1080605@redhat.com \
--to=ypu@redhat.com \
--cc=autotest@test.kernel.org \
--cc=kvm@vger.kernel.org \
--cc=lmr@redhat.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox