diff --git a/qemu/tests/cfg/hotplug_virtio_mem.cfg b/qemu/tests/cfg/hotplug_virtio_mem.cfg index c6a94de17a..2ce82a6468 100644 --- a/qemu/tests/cfg/hotplug_virtio_mem.cfg +++ b/qemu/tests/cfg/hotplug_virtio_mem.cfg @@ -28,4 +28,8 @@ kernel_extra_params_add = "memhp_default_state=online_movable" pcie_extra_root_port = 1 requested-size_test_vmem0 = "4G 2G" - error_msg = "virtio-mem device cannot get unplugged while 'size' != '0'" + variants operation: + - @default: + - with_unplug: + required_qemu = [8.1.0,) + error_msg = "virtio-mem device cannot get unplugged while 'size' != '0'" diff --git a/qemu/tests/hotplug_virtio_mem.py b/qemu/tests/hotplug_virtio_mem.py index 13ce657252..be8ced6510 100644 --- a/qemu/tests/hotplug_virtio_mem.py +++ b/qemu/tests/hotplug_virtio_mem.py @@ -26,6 +26,7 @@ def run(test, params, env): timeout = params.get_numeric("login_timeout", 240) threshold = params.get_numeric("threshold", target_type=float) error_msg = params.get("error_msg") + operation = params.get("operation") vm = env.get_vm(params["main_vm"]) vm.verify_alive() session = vm.wait_for_login(timeout=timeout) @@ -37,36 +38,41 @@ def run(test, params, env): device_id = vmem_dev.get_qid() requested_size_vmem_test = params.get("requested-size_test_%s" % target_mem) - node_id = int(vmem_dev.get_param('node')) - req_size = vmem_dev.get_param('requested-size') - initial_req_size = str(int(float(normalize_data_size(req_size, 'B')))) + node_id = int(vmem_dev.get_param("node")) + req_size = vmem_dev.get_param("requested-size") + initial_req_size = str(int(float(normalize_data_size(req_size, "B")))) - virtio_mem_utils.check_memory_devices(device_id, initial_req_size, - threshold, vm, test) - virtio_mem_utils.check_numa_plugged_mem(node_id, initial_req_size, - threshold, vm, test) + virtio_mem_utils.check_memory_devices( + device_id, initial_req_size, threshold, vm, test + ) + virtio_mem_utils.check_numa_plugged_mem( + node_id, initial_req_size, threshold, vm, test + ) for requested_size in requested_size_vmem_test.split(): - req_size_normalized = int(float(normalize_data_size(requested_size, - 'B'))) - vm.monitor.qom_set(device_id, "requested-size", - req_size_normalized) + req_size_normalized = int(float(normalize_data_size(requested_size, "B"))) + vm.monitor.qom_set(device_id, "requested-size", req_size_normalized) time.sleep(30) - virtio_mem_utils.check_memory_devices(device_id, requested_size, - threshold, vm, test) - virtio_mem_utils.check_numa_plugged_mem(node_id, requested_size, - threshold, vm, test) - try: - hotplug_test.unplug_memory(vm, target_mem) - except QMPCmdError as e: - if error_msg not in str(e.data): - test.fail("Unexpected error message: %s" % str(e.data)) - test.log.info(error_msg) - else: - test.fail("%s shouldn't have been unplugged! 'size' is greater than 0" - % target_mem) + virtio_mem_utils.check_memory_devices( + device_id, requested_size, threshold, vm, test + ) + virtio_mem_utils.check_numa_plugged_mem( + node_id, requested_size, threshold, vm, test + ) + if operation == "with_unplug": + try: + hotplug_test.unplug_memory(vm, target_mem) + except QMPCmdError as e: + if error_msg not in str(e.data): + test.fail("Unexpected error message: %s" % str(e.data)) + test.log.info(error_msg) + else: + test.fail( + "%s shouldn't have been unplugged! 'size' is greater than 0" + % target_mem + ) - vm.monitor.qom_set(device_id, "requested-size", 0) - time.sleep(10) - hotplug_test.unplug_memory(vm, target_mem) + vm.monitor.qom_set(device_id, "requested-size", 0) + time.sleep(10) + hotplug_test.unplug_memory(vm, target_mem) session.close()