Hi~
OK, I got it. :)
The test cases for {at,de}tach_device will come in a week. We are on it now.
And in the future, class VM API and test cases will come together.
Thanks for that.:)
On 02/23/2012 05:09 PM, Alex Jia wrote:
> On 02/23/2012 04:23 PM, tangchen wrote:
>> Hi~
>>
>> Thanks for the comments.:)
>>
>> In my optinion, the functions in VM class should act exactly the same as
>> virsh command.
>> All the check work should be done in test cases.
> As I said, It's okay if a caller/test case will do these checkpoint.
>
> However, the patches set are better to instead of just to wrapper some virsh
> commands
> separately, IMHO, they should be committed together like a unit test, for
> instance,
>
> 1. wrapper virsh cmdline with internal API
> 2. implement test cases to verify the internal API
> 2.1 add test cases in configuration file
> 2.2 add test cases for the interanl API
>
> Regards,
> Alex
>> We are also doing libvirt test recently. In our {at,de}tach_device tests,
>> just like you said,
>> we also login VM and do some more checks. But we put all this checks in our
>> test cases, not in
>> class VM.
>>
>> Maybe virsh command returns 0, and class VM API returns True. But this
>> doesn't mean that the test
>> passes. In the test cases, if we find something wrong, the test should fail,
>> and we can still
>> find out what is wrong.
>>
>> And, class VM API should act exactly the same as virsh command. So that if
>> we are sure our test
>> case is correct, but the result is FAIL, then we find a bug.
>>
>> Thanks. :)
>>
>> On 02/23/2012 03:53 PM, Alex Jia wrote:
>>> On 02/23/2012 01:42 PM, tangchen wrote:
>>>> This patch adds 2 functions to libvirt_vm.
>>>> 1) attach-device()
>>>> 2) detach-device()
>>>>
>>> If each test cases just check virsh command return value, in other words,
>>> it only wrappers virsh command in autotest, I assume you haven't other
>>> function will call the virsh_{at,de}tach_device then enhance checkpoint
>>> in caller, if so, you will push check work to qemu/kvm, I'm not sure it's a
>>> good idea, for example, if libvirt makes a mistake, a actual result is
>>> failed,
>>> but virsh cmdline return 0, how to debug it?
>>>
>>> We do the same test on libvirt, as usual, we will check pci device driver
>>> change,
>>> for instance, if attaching device is successful, the pci device will be
>>> separated
>>> from original driver and put into pci-stub driver for kvm hypervisor,
>>> meanwhile,
>>> we also log in guest to check whether the pci device works well etc.
>>>
>>> Regards,
>>> Alex
>>>> Signed-off-by: Tang Chen<[email protected]>
>>>> ---
>>>> client/virt/libvirt_vm.py | 34 ++++++++++++++++++++++++++++++++++
>>>> 1 files changed, 34 insertions(+), 0 deletions(-)
>>>>
>>>> diff --git a/client/virt/libvirt_vm.py b/client/virt/libvirt_vm.py
>>>> index 4b391c1..d7eb7b0 100644
>>>> --- a/client/virt/libvirt_vm.py
>>>> +++ b/client/virt/libvirt_vm.py
>>>> @@ -374,6 +374,29 @@ def virsh_migrate(options, name, dest_uri, extra, uri
>>>> = ""):
>>>> return False
>>>> return True
>>>>
>>>> +def virsh_attach_device(name, xml_file, extra = "", uri = ""):
>>>> + """
>>>> + Attach a device to VM.
>>>> + """
>>>> + cmd = "attach-device --domain %s --file %s %s" % (name, xml_file,
>>>> extra)
>>>> + try:
>>>> + virsh_cmd(cmd, uri)
>>>> + return True
>>>> + except error.CmdError:
>>>> + logging.error("Attaching device to VM %s failed." % name)
>>>> + return False
>>>> +
>>>> +def virsh_detach_device(name, xml_file, extra = "", uri = ""):
>>>> + """
>>>> + Detach a device from VM.
>>>> + """
>>>> + cmd = "detach-device --domain %s --file %s %s" % (name, xml_file,
>>>> extra)
>>>> + try:
>>>> + virsh_cmd(cmd, uri)
>>>> + return True
>>>> + except error.CmdError:
>>>> + logging.error("Detaching device from VM %s failed." % name)
>>>> + return False
>>>>
>>>> class VM(virt_vm.BaseVM):
>>>> """
>>>> @@ -1126,6 +1149,17 @@ class VM(virt_vm.BaseVM):
>>>> self.connect_uri = dest_uri
>>>> return result
>>>>
>>>> + def attach_device(self, xml_file, extra = ""):
>>>> + """
>>>> + Attach a device to VM.
>>>> + """
>>>> + return virsh_attach_device(self.name, xml_file, extra,
>>>> self.connect_uri)
>>>> +
>>>> + def detach_device(self, xml_file, extra = ""):
>>>> + """
>>>> + Detach a device from VM.
>>>> + """
>>>> + return virsh_detach_device(self.name, xml_file, extra,
>>>> self.connect_uri)
>>>>
>>>> def destroy(self, gracefully=True, free_mac_addresses=True):
>>>> """
>>>
>
>
--
Best Regards,
Tang chen
_______________________________________________
Autotest mailing list
[email protected]
http://test.kernel.org/cgi-bin/mailman/listinfo/autotest