On 03/13/2012 04:11 AM, guyanhua wrote: > > This patch adds three test cases for "virsh capabilities" command. > > Use three cases:(1) Call virsh capabilities > (2) Call virsh capabilities with an unexpected option > (3) Call virsh capabilities with libvirtd service stop > > Signed-off-by: Gu Yanhua <[email protected]> > --- > client/tests/libvirt/tests/virsh_capabilities.py | 104 > ++++++++++++++++++++++ > 1 files changed, 104 insertions(+), 0 deletions(-) > create mode 100644 client/tests/libvirt/tests/virsh_capabilities.py > > diff --git a/client/tests/libvirt/tests/virsh_capabilities.py > b/client/tests/libvirt/tests/virsh_capabilities.py > new file mode 100644 > index 0000000..a6fdb84 > --- /dev/null > +++ b/client/tests/libvirt/tests/virsh_capabilities.py > @@ -0,0 +1,104 @@ > +import logging, commands, re > +from xml.dom.minidom import parse, parseString > +from autotest_lib.client.common_lib import utils, error > +from autotest_lib.client.virt import libvirt_vm > + > +def run_virsh_capabilities(test, params, env): > + """ > + Test the command virsh capabilities > + > + (1) Call virsh capabilities > + (2) Call virsh capabilities with an unexpected option > + (3) Call virsh capabilities with libvirtd service stop > + """ > + def virsh_capabilities(option): > + cmd = "virsh capabilities %s" % option > + cmd_result = utils.run(cmd, ignore_status=True) > + logging.info("Output: %s", cmd_result.stdout.strip()) > + logging.error("Error: %s", cmd_result.stderr.strip()) > + logging.info("Status: %d", cmd_result.exit_status) > + return cmd_result.exit_status, cmd_result.stdout.strip() > + > + def compare_capabilities_xml(source): > + dom = parseString(source) > + host = dom.getElementsByTagName('host')[0] > + # check that host has a non-empty UUID tag. > + uuid = host.getElementsByTagName('uuid')[0] > + host_uuid_output = uuid.firstChild.data > + logging.info("The host uuid in capabilities_xml:%s", host_uuid_output) > + if host_uuid_output == "": > + raise error.TestFail("The host uuid in capabilities_xml is none!") > + > + # check the host arch. > + arch = host.getElementsByTagName('arch')[0] > + host_arch_output = arch.firstChild.data > + logging.info("The host arch in capabilities_xml:%s", host_arch_output) > + cmd_result = utils.run("arch", ignore_status=True) > + if cmp(host_arch_output, cmd_result.stdout.strip()) != 0: > + raise error.TestFail("The host arch in capabilities_xml is wrong!") > + > + # check the host cpus num. > + cpus = dom.getElementsByTagName('cpus')[0] > + host_cpus_output = cpus.getAttribute('num') > + logging.info("The host cpus num in capabilities_xml:%s",\ > + host_cpus_output) > + cmd = "less /proc/cpuinfo | grep processor | wc -l" > + cmd_result = utils.run(cmd, ignore_status=True) > + if cmp(host_cpus_output, cmd_result.stdout.strip()) != 0: > + raise error.TestFail("The host cpus num in capabilities_xml is\ > + wrong") > + > + # check the arch of guest supported. > + cmd = "/usr/libexec/qemu-kvm --cpu ? | grep qemu" > + cmd_result = utils.run(cmd, ignore_status=True) > + guest_wordsize_array = dom.getElementsByTagName('wordsize') > + length = len(guest_wordsize_array) > + for i in range(length): > + element = guest_wordsize_array[i] > + guest_wordsize = element.firstChild.data > + logging.info("The arch of guest supported in capabilities_xml:%s",\ > + guest_wordsize) > + if not re.search(guest_wordsize, cmd_result.stdout.strip()): > + raise error.TestFail("The capabilities_xml gives an extra arch \ > + of guest to support! ") > + > + # check the type of hyperviosr. > + guest_domain_type = dom.getElementsByTagName('domain')[0] > + guest_domain_type_output = guest_domain_type.getAttribute('type') > + logging.info("The hyperviosr in capabilities_xml:%s", \ > + guest_domain_type_output) > + cmd_result = utils.run("virsh uri", ignore_status=True) > + if not re.search(guest_domain_type_output, cmd_result.stdout.strip()): > + raise error.TestFail("The capabilities_xml gives an different\ > + hyperviosr") > + > + # Prepare libvirtd service > + check_libvirtd = params.has_key("libvirtd") > + if check_libvirtd: > + libvirtd = params.get("libvirtd") > + if libvirtd == "off": > + libvirt_vm.service_libvirtd_control("stop") > + > + # Run test case > + option = params.get("options") > + status, output = virsh_capabilities(option) > + > + # Recover libvirtd service start > + if libvirtd == "off": > + libvirt_vm.service_libvirtd_control("start") > + > + # Check status_error > + status_error = params.get("status_error") > + if status_error == "yes": > + if status == 0: > + if libvirtd == "off": > + raise error.TestFail("Command 'virsh capabilities' succeeded\ > + with libvirtd service stopped, incorrect") > + else: > + raise error.TestFail("Command 'virsh capabilities %s' succeeded" > + "(incorrect command)" % option) > + elif status_error == "no": > + compare_capabilities_xml(output) > + if status != 0: > + raise error.TestFail("Command 'virsh capabilities %s' failed " > + "(correct command)" % option)
Great! Reading through the checks, this looks really good. Especially checking against the host hardware is a nice touch. Thanks! -- Chris Evich, RHCA, RHCE, RHCDS, RHCSS Quality Assurance Engineer e-mail: cevich + `@' + redhat.com o: 1-888-RED-HAT1 x44214 _______________________________________________ Autotest mailing list [email protected] http://test.kernel.org/cgi-bin/mailman/listinfo/autotest
