Skip to content

Commit 0d050cb

Browse files
committed
hotplug_virtio_mem: forbid virtio_mem unplug for QEMU < 8.1.0
The unplug support for virtio_mem was introduced in RHEL 9.4 with QEMU 8.1, corrects the test to only do this action when the proper QEMU is used. Also applies the black code formatter. Signed-off-by: mcasquer <[email protected]>
1 parent ea04bbd commit 0d050cb

File tree

1 file changed

+41
-27
lines changed

1 file changed

+41
-27
lines changed

qemu/tests/hotplug_virtio_mem.py

Lines changed: 41 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,15 @@
1+
import re
12
import time
23

4+
from virttest import env_process
35
from virttest import error_context
6+
from virttest import utils_misc
47

58
from virttest.qemu_monitor import QMPCmdError
69
from virttest.utils_misc import normalize_data_size
710
from virttest.utils_test.qemu import MemoryHotplugTest
11+
from virttest.utils_version import VersionInterval
12+
813
from provider import virtio_mem_utils
914

1015

@@ -26,6 +31,10 @@ def run(test, params, env):
2631
timeout = params.get_numeric("login_timeout", 240)
2732
threshold = params.get_numeric("threshold", target_type=float)
2833
error_msg = params.get("error_msg")
34+
qemu_path = utils_misc.get_qemu_binary(params)
35+
qemu_version = env_process._get_qemu_version(qemu_path)
36+
match = re.search(r"[0-9]+\.[0-9]+\.[0-9]+(\-[0-9]+)?", qemu_version)
37+
host_qemu = match.group(0)
2938
vm = env.get_vm(params["main_vm"])
3039
vm.verify_alive()
3140
session = vm.wait_for_login(timeout=timeout)
@@ -37,36 +46,41 @@ def run(test, params, env):
3746
device_id = vmem_dev.get_qid()
3847
requested_size_vmem_test = params.get("requested-size_test_%s" % target_mem)
3948

40-
node_id = int(vmem_dev.get_param('node'))
41-
req_size = vmem_dev.get_param('requested-size')
42-
initial_req_size = str(int(float(normalize_data_size(req_size, 'B'))))
49+
node_id = int(vmem_dev.get_param("node"))
50+
req_size = vmem_dev.get_param("requested-size")
51+
initial_req_size = str(int(float(normalize_data_size(req_size, "B"))))
4352

44-
virtio_mem_utils.check_memory_devices(device_id, initial_req_size,
45-
threshold, vm, test)
46-
virtio_mem_utils.check_numa_plugged_mem(node_id, initial_req_size,
47-
threshold, vm, test)
53+
virtio_mem_utils.check_memory_devices(
54+
device_id, initial_req_size, threshold, vm, test
55+
)
56+
virtio_mem_utils.check_numa_plugged_mem(
57+
node_id, initial_req_size, threshold, vm, test
58+
)
4859
for requested_size in requested_size_vmem_test.split():
49-
req_size_normalized = int(float(normalize_data_size(requested_size,
50-
'B')))
51-
vm.monitor.qom_set(device_id, "requested-size",
52-
req_size_normalized)
60+
req_size_normalized = int(float(normalize_data_size(requested_size, "B")))
61+
vm.monitor.qom_set(device_id, "requested-size", req_size_normalized)
5362
time.sleep(30)
54-
virtio_mem_utils.check_memory_devices(device_id, requested_size,
55-
threshold, vm, test)
56-
virtio_mem_utils.check_numa_plugged_mem(node_id, requested_size,
57-
threshold, vm, test)
58-
try:
59-
hotplug_test.unplug_memory(vm, target_mem)
60-
except QMPCmdError as e:
61-
if error_msg not in str(e.data):
62-
test.fail("Unexpected error message: %s" % str(e.data))
63-
test.log.info(error_msg)
64-
else:
65-
test.fail("%s shouldn't have been unplugged! 'size' is greater than 0"
66-
% target_mem)
63+
virtio_mem_utils.check_memory_devices(
64+
device_id, requested_size, threshold, vm, test
65+
)
66+
virtio_mem_utils.check_numa_plugged_mem(
67+
node_id, requested_size, threshold, vm, test
68+
)
69+
if host_qemu in VersionInterval('[8.1.0,)'):
70+
try:
71+
hotplug_test.unplug_memory(vm, target_mem)
72+
except QMPCmdError as e:
73+
if error_msg not in str(e.data):
74+
test.fail("Unexpected error message: %s" % str(e.data))
75+
test.log.info(error_msg)
76+
else:
77+
test.fail(
78+
"%s shouldn't have been unplugged! 'size' is greater than 0"
79+
% target_mem
80+
)
6781

68-
vm.monitor.qom_set(device_id, "requested-size", 0)
69-
time.sleep(10)
70-
hotplug_test.unplug_memory(vm, target_mem)
82+
vm.monitor.qom_set(device_id, "requested-size", 0)
83+
time.sleep(10)
84+
hotplug_test.unplug_memory(vm, target_mem)
7185

7286
session.close()

0 commit comments

Comments
 (0)