diff --git a/qemu/tests/cfg/multi_host_basic.cfg b/qemu/tests/cfg/multi_host_basic.cfg new file mode 100644 index 0000000000..12b82ce147 --- /dev/null +++ b/qemu/tests/cfg/multi_host_basic.cfg @@ -0,0 +1,67 @@ +- multi_host_basic: + virt_test_type = qemu + type = multi_host_basic + restart_vm = yes + kill_vm = yes + login_timeout = 240 + check_vm_needs_restart = no # FIXME: Work around for it + take_regular_screendumps = no + store_vm_info = no + variants: + - @default: + reboot = yes + nodes = node1 node2 + vms = vm1 vm2 + serial_login = yes + node_selectors_node2 = [{"key": "cpu_vendor_id", "operator": "eq", "values": "AuthenticAMD"}, + node_selectors_node2 += {"key": "hostname", "operator": "contains", "values": "redhat.com"}] + node_selectors_node3 = [{"key": "cpu_vendor_id", "operator": "==", "values": "AuthenticAMD"}, + node_selectors_node3 += {"key": "hostname", "operator": "contains", "values": "redhat.com"}] + vm_node_vm1 = node1 + vm_node_vm2 = node2 + mig_dest_node_vm1 = node2 + mig_dest_node_vm2 = node1 + nodes += " node3" + vms += " vm3" + node_selectors_node3 = [{"key": "cpu_vendor_id", "operator": "==", "values": "AuthenticAMD"}, + node_selectors_node3 += {"key": "hostname", "operator": "contains", "values": "redhat.com"}] + vm_node_vm3 = node3 + - with_pool: + reboot = yes + nodes = node1 node2 + vms = vm1 vm2 + serial_login = yes + node_selectors_node1 = [{"key": "cpu_vendor_id", "operator": "eq", "values": "AuthenticAMD"}, + node_selectors_node1 += {"key": "hostname", "operator": "contains", "values": "redhat.com"}] + node_selectors_node2 = [{"key": "cpu_vendor_id", "operator": "==", "values": "AuthenticAMD"}, + node_selectors_node2 += {"key": "hostname", "operator": "contains", "values": "redhat.com"}] + vm_node_vm1 = node1 + vm_node_vm2 = node2 + + image_format = qcow2 + pools = p1 p2 + pool_selectors_p1 = [{"key": "access.nodes", "operator": "==", "values": ['node1']}] + pool_selectors_p2 = [{"key": "access.nodes", "operator": "==", "values": ['node2']}] + image_pool_name_image1_vm1 = p1 + image_pool_name_image1_vm2 = p2 + + - with_migration: + nodes = node1 node2 + vms = vm1 + serial_login = yes + node_selectors_node1 = [{"key": "cpu_vendor_id", "operator": "eq", "values": "AuthenticAMD"}, + node_selectors_node1 += {"key": "hostname", "operator": "contains", "values": "redhat.com"}] + node_selectors_node2 = [{"key": "cpu_vendor_id", "operator": "==", "values": "AuthenticAMD"}, + node_selectors_node2 += {"key": "hostname", "operator": "contains", "values": "redhat.com"}] + vm_node_vm1 = node1 +# vm_node_vm2 = node2 + mig_dest_node_vm1 = node2 +# mig_dest_node_vm2 = node1 +# nodes += " node3" +# vms += " vm3" +# node_selectors_node3 = [{"key": "cpu_vendor_id", "operator": "==", "values": "AuthenticAMD"}, +# node_selectors_node3 += {"key": "hostname", "operator": "contains", "values": "redhat.com"}] +# vm_node_vm3 = node3 + pools += " p3" + pool_selectors_p3 = [{"key": "access.nodes", "operator": "==", "values": ['node3']}] + image_pool_name_image1_vm3 = p3 diff --git a/qemu/tests/multi_host_basic.py b/qemu/tests/multi_host_basic.py new file mode 100644 index 0000000000..a3317b3376 --- /dev/null +++ b/qemu/tests/multi_host_basic.py @@ -0,0 +1,77 @@ +import time +import logging + +from virttest import error_context +from virttest import utils_test +from virttest.vt_vmm.api import vmm +from virttest import qemu_monitor +from virttest import data_dir + +LOG = logging.getLogger("avocado." + __name__) + + +@error_context.context_aware +def run(test, params, env): + """ + :param test: QEMU test object + :param params: Dictionary with the test parameters + :param env: Dictionary with test environment. + """ + + timeout = float(params.get("login_timeout", 240)) + vms = env.get_all_vms() + for vm in vms: + # error_context.context("Try to log into guest '%s'." % vm.name, + # test.log.info) + # session = vm.wait_for_serial_login(timeout=timeout, status_check=False) + # vm_ver = session.cmd_output("cat /proc/version") + # LOG.info("Version of %s: %s", vm.name, vm_ver) + # cpus_info = vm.monitor.info("cpus", debug=False) + # LOG.info("CPU info of %s: %s", vm.name, cpus_info) + # + # if params.get("reboot") == "yes": + # reboot_method = params.get("reboot_method", "shell") + # session = vm.reboot(session, reboot_method, 0, timeout, True) + # vm_info = session.cmd_output("uname -a") + # LOG.info("Info %s: %s", vm.name, vm_info) + # # blocks_info = vm.monitor.info('block') # ERROR: int exceeds XML-RPC limits + # # LOG.info("Block info of %s: %s", vm.name, blocks_info) + # vm.pause() + # vm.resume() + # session.close() + + vm_params = params.object_params(vm.name) + src_node = vm_params.get("vm_node") + dst_node = vm_params.get("mig_dest_node") + if dst_node: + error_context.context( + f"Migrating the guest {vm.name} from {src_node} to {dst_node}", + test.log.info) + vm.migrate( + timeout=3600, + protocol="tcp", + cancel_delay=None, + offline=False, + stable_check=False, + clean=True, + save_path=data_dir.get_tmp_dir(), + dest_host=dst_node, + remote_port=None, + not_wait_for_migration=False, + fd_src=None, + fd_dst=None, + migration_exec_cmd_src=None, + migration_exec_cmd_dst=None, + env=None, + migrate_capabilities=None, + mig_inner_funcs=None, + migrate_parameters=(None, None)) + + error_context.context("Try to log into guest '%s'." % vm.name, + test.log.info) + session = vm.wait_for_serial_login(timeout=timeout, status_check=False) + vm_ver = session.cmd_output("cat /proc/version") + LOG.info("Version of %s: %s", vm.name, vm_ver) + + cpus_info = vm.monitor.info("cpus", debug=False) + LOG.info("CPU info of %s: %s", vm.name, cpus_info)