Skip to content

Commit

Permalink
Multi-host: Demo of multiple hosts test
Browse files Browse the repository at this point in the history
Signed-off-by: Yongxue Hong <[email protected]>
  • Loading branch information
YongxueHong committed Oct 7, 2024
1 parent ce74c91 commit 577c919
Show file tree
Hide file tree
Showing 2 changed files with 144 additions and 0 deletions.
67 changes: 67 additions & 0 deletions qemu/tests/cfg/multi_host_basic.cfg
Original file line number Diff line number Diff line change
@@ -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
77 changes: 77 additions & 0 deletions qemu/tests/multi_host_basic.py
Original file line number Diff line number Diff line change
@@ -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)

0 comments on commit 577c919

Please sign in to comment.