1
+ import re
1
2
import time
2
3
4
+ from virttest import env_process
3
5
from virttest import error_context
6
+ from virttest import utils_misc
4
7
5
8
from virttest .qemu_monitor import QMPCmdError
6
9
from virttest .utils_misc import normalize_data_size
7
10
from virttest .utils_test .qemu import MemoryHotplugTest
11
+ from virttest .utils_version import VersionInterval
12
+
8
13
from provider import virtio_mem_utils
9
14
10
15
@@ -26,6 +31,10 @@ def run(test, params, env):
26
31
timeout = params .get_numeric ("login_timeout" , 240 )
27
32
threshold = params .get_numeric ("threshold" , target_type = float )
28
33
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 )
29
38
vm = env .get_vm (params ["main_vm" ])
30
39
vm .verify_alive ()
31
40
session = vm .wait_for_login (timeout = timeout )
@@ -37,36 +46,41 @@ def run(test, params, env):
37
46
device_id = vmem_dev .get_qid ()
38
47
requested_size_vmem_test = params .get ("requested-size_test_%s" % target_mem )
39
48
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" ))))
43
52
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
+ )
48
59
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 )
53
62
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
+ )
67
81
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 )
71
85
72
86
session .close ()
0 commit comments