|
6 | 6 |
|
7 | 7 | from avocado.utils import process
|
8 | 8 | from virttest import error_context, utils_disk, utils_misc, utils_net
|
| 9 | +from virttest.utils_misc import normalize_data_size |
9 | 10 |
|
10 |
| -from provider import virtio_fs_utils, win_driver_utils |
| 11 | +from provider import virtio_fs_utils, virtio_mem_utils, win_driver_utils |
11 | 12 | from provider.storage_benchmark import generate_instance
|
12 | 13 | from qemu.tests.virtio_serial_file_transfer import transfer_data
|
13 | 14 |
|
|
25 | 26 | "netkvm",
|
26 | 27 | "vioinput",
|
27 | 28 | "fwcfg",
|
| 29 | + "viomem", |
28 | 30 | ]
|
29 | 31 |
|
30 | 32 | device_hwid_list = [
|
|
38 | 40 | '"PCI\\VEN_1AF4&DEV_1000" "PCI\\VEN_1AF4&DEV_1041"',
|
39 | 41 | '"PCI\\VEN_1AF4&DEV_1052"',
|
40 | 42 | '"ACPI\\VEN_QEMU&DEV_0002"',
|
| 43 | + r'"PCI\VEN_1AF4&DEV_1002" "PCI\VEN_1AF4&DEV_1058"', |
41 | 44 | ]
|
42 | 45 |
|
43 | 46 | device_name_list = [
|
|
51 | 54 | "Red Hat VirtIO Ethernet Adapter",
|
52 | 55 | "VirtIO Input Driver",
|
53 | 56 | "QEMU FwCfg Device",
|
| 57 | + "VirtIO Viomem Driver", |
54 | 58 | ]
|
55 | 59 |
|
56 | 60 |
|
@@ -104,6 +108,9 @@ def win_uninstall_all_drivers(session, test, params):
|
104 | 108 | for driver_name, device_name, device_hwid in zip(
|
105 | 109 | driver_name_list, device_name_list, device_hwid_list
|
106 | 110 | ):
|
| 111 | + if params.get("boot_with_viomem", "no") == "no": |
| 112 | + if driver_name == "viomem": |
| 113 | + continue |
107 | 114 | win_driver_utils.uninstall_driver(
|
108 | 115 | session, test, devcon_path, driver_name, device_name, device_hwid
|
109 | 116 | )
|
@@ -173,6 +180,9 @@ def driver_check(session, test, params):
|
173 | 180 | driver_name_list = [params["driver_name"]]
|
174 | 181 | device_name_list = [params["device_name"]]
|
175 | 182 | for driver_name, device_name in zip(driver_name_list, device_name_list):
|
| 183 | + if params.get("boot_with_viomem", "no") == "no": |
| 184 | + if driver_name == "viomem": |
| 185 | + continue |
176 | 186 | error_context.context("%s Driver Check" % driver_name, LOG_JOB.info)
|
177 | 187 | inf_path = win_driver_utils.get_driver_inf_path(
|
178 | 188 | session, test, media_type, driver_name
|
@@ -414,3 +424,29 @@ def fwcfg_test(test, params, vm):
|
414 | 424 | process.system("rm -rf %s" % dump_file, shell=True)
|
415 | 425 | if dump_size == 0:
|
416 | 426 | test.fail("The dump file is empty")
|
| 427 | + |
| 428 | + |
| 429 | +def viomem_test(test, params, vm): |
| 430 | + """ |
| 431 | + Grow/shrink virtio-mem device. |
| 432 | +
|
| 433 | + :param test: kvm test object. |
| 434 | + :param params: the dict used for parameters. |
| 435 | + :param vm: vm object. |
| 436 | + """ |
| 437 | + threshold = params.get_numeric("threshold", target_type=float) |
| 438 | + for i, vmem_dev in enumerate( |
| 439 | + vm.devices.get_by_params({"driver": "virtio-mem-pci"}) |
| 440 | + ): |
| 441 | + device_id = vmem_dev.get_qid() |
| 442 | + requested_size_vmem = params.get("requested-size_test_vmem%d" % i) |
| 443 | + for requested_size in requested_size_vmem.split(): |
| 444 | + req_size_normalized = int(float(normalize_data_size(requested_size, "B"))) |
| 445 | + vm.monitor.qom_set(device_id, "requested-size", req_size_normalized) |
| 446 | + time.sleep(30) |
| 447 | + # FIXME: workaround the problem that the memory value not accurate |
| 448 | + # after shrink/grow the viomem device |
| 449 | + vm.reboot() |
| 450 | + virtio_mem_utils.check_memory_devices( |
| 451 | + device_id, requested_size, threshold, vm, test |
| 452 | + ) |
0 commit comments