This patch adds test for virsh list command. Signed-off-by: Yu Mingfei <yuming...@cn.fujitsu.com> --- client/tests/libvirt/tests/virsh_list.py | 132 ++++++++++++++++++++++++++++++ 1 files changed, 132 insertions(+), 0 deletions(-) create mode 100644 client/tests/libvirt/tests/virsh_list.py
diff --git a/client/tests/libvirt/tests/virsh_list.py b/client/tests/libvirt/tests/virsh_list.py new file mode 100644 index 0000000..52b8b13 --- /dev/null +++ b/client/tests/libvirt/tests/virsh_list.py @@ -0,0 +1,132 @@ +import re, logging, time, commands +from autotest.client.shared import utils, error +from autotest.client.virt import virt_remote, libvirt_vm + + +def run_virsh_list(test, params, env): + """ + Test command: virsh list. + + There are 50 testcases to test list: + 1) normal test with valid options(9 cases) + 2) normal test with invalid options(4 cases) + 3) list transient domains with valid options(9 cases) + 4) list persistent domains with valid options(9 cases) + 5) list domains with managed save mark(1 case) + 6) list local domains on remote host with valid options(9 cases) + 7) list domains when libvirtd off(9 cases) + """ + def list_local_domains_on_remote(options_ref, remote_ip, remote_passwd, local_ip): + """ + Create a virsh list command and execute it on remote host. + It will list local domains on remote host. + + @param options_ref:options in virsh list command. + @param remote_ip:remote host's ip. + @param remote_passwd:remote host's password. + @param local_ip:local ip, to create uri in virsh list. + @return:return status and output of the virsh list command. + """ + command_on_remote = "virsh -c qemu+ssh://%s/system list %s" % (local_ip, options_ref) + session = virt_remote.remote_login("ssh", remote_ip, "22", "root", remote_passwd, "#") + time.sleep(5) + status, output = session.cmd_status_output(command_on_remote, internal_timeout=5) + time.sleep(5) + session.close() + return int(status), output + + vm_name = params.get("main_vm", "vm1") + vm = env.get_vm(params["main_vm"]) + if not vm.is_alive(): + vm.start() + time.sleep(5) + + options_ref = params.get("options_ref", "") + list_ref = params.get("list_ref", "table") + vm_ref = params.get("vm_ref", "") + status_error = params.get("status_error", "no") + addition_status_error = params.get("addition_status_error", "no") + domuuid = vm.get_uuid().strip() + # If a transient domain is destroyed, it will disappear. + if vm_ref == "transient" and options_ref == "inactive": + addition_status_error = "yes" + + if vm_ref == "transient": + tmp_xml = vm.backup_xml() + vm.undefine() + elif vm_ref == "managed-save": + vm.managedsave(ignore_status=True, print_info=True) + + #Prepare libvirtd status + libvirtd = params.get("libvirtd", "on") + if libvirtd == "off": + libvirt_vm.service_libvirtd_control("stop") + + #run test case + if list_ref == "uuid": + result_expected = domuuid + logging.info("%s's uuid is: %s", vm_name, domuuid) + else: + result_expected = vm_name + logging.info("domain's name is: %s", vm_name) + + if options_ref == "vm_id": + domid = vm.get_id().strip() + logging.info("%s's running-id is: %s", vm_name, domid) + options_ref = "%s --%s" % (domid, list_ref) + elif options_ref == "vm_uuid": + logging.info("%s's uuid is: %s", vm_name, domuuid) + options_ref = "%s --%s" % (domuuid, list_ref) + elif options_ref == "inactive": + vm.destroy() + options_ref = "--inactive --%s" % list_ref + elif options_ref == "vm_name": + options_ref = "%s --%s" % (vm_name, list_ref) + elif options_ref == "all": + options_ref = "--all --%s" % list_ref + elif options_ref == "": + options_ref = "--%s" % list_ref + + remote_ref = params.get("remote_ref", "local") + if remote_ref == "remote": + remote_ip = params.get("remote_ip", "none") + remote_passwd = params.get("remote_passwd", "none") + local_ip = params.get("local_ip", "none") + logging.info("Execute virsh command on remote host %s.", remote_ip) + status, output = list_local_domains_on_remote(options_ref, remote_ip, remote_passwd, local_ip) + logging.info("Status:%s", status) + logging.info("Output:\n%s", output) + else: + if vm_ref: + options_ref = "%s --%s" % (options_ref, vm_ref) + result = libvirt_vm.virsh_list(options_ref, ignore_status=True, print_info=True) + status = result.exit_status + output = result.stdout.strip() + + #Recover libvirtd service status + if libvirtd == "off": + libvirt_vm.service_libvirtd_control("start") + + #Recover of domain + if vm_ref == "transient": + vm.define(tmp_xml) + elif vm_ref == "managed-save": + utils.run("rm -f /var/lib/libvirt/qemu/save/%s.save" % vm_name, ignore_status=True) + + #Check result + status_error = (status_error == "no") and (addition_status_error == "no") + if vm_ref == "managed-save": + saved_output = re.search(vm_name+" +saved", output) + if saved_output: + output = saved_output.group(0) + else: + output = "" + + if not status_error: + if status == 0 and re.search(result_expected, output): + raise error.TestFail("Run successful with wrong command!") + else: + if status != 0: + raise error.TestFail("Run failed with right command.") + if not re.search(result_expected, output): + raise error.TestFail("Run successful but result is not expected.") -- 1.7.1 -- Best Regards Yu Mingfei _______________________________________________ Autotest mailing list Autotest@test.kernel.org http://test.kernel.org/cgi-bin/mailman/listinfo/autotest