From e96e664d5f5b42755d6395737611cedf66c4e232 Mon Sep 17 00:00:00 2001 From: wji Date: Sun, 7 Jan 2024 20:36:40 +0800 Subject: [PATCH] Installer test: add static DNS configuration test Driver installer supports restoring DNS configurations after driver upgrade, so add a DNS checkpoint here. Reference: The previous static IP configuration test was #3860 Signed-off-by: wji --- .../win_virtio_driver_update_by_installer.py | 50 +++++++++++++++---- 1 file changed, 40 insertions(+), 10 deletions(-) diff --git a/qemu/tests/win_virtio_driver_update_by_installer.py b/qemu/tests/win_virtio_driver_update_by_installer.py index ae4ec81e61..59d962007a 100644 --- a/qemu/tests/win_virtio_driver_update_by_installer.py +++ b/qemu/tests/win_virtio_driver_update_by_installer.py @@ -24,7 +24,10 @@ def run(test, params, env): 5) Install driver from previous virtio-win.iso. Or virtio-win-guest-tool. 6) Start virtio fs service on guest. - 7) Upgrade driver via virtio-win-guest-tools.exe + 7) Check for ip and dns loss before and after upgrade driver + 7.1) Set ip and dns + 7.2) Upgrade driver via virtio-win-guest-tools.exe + 7.3) Check ip and dns loss 8) Start virtio fs service on guest. 9) Verify the qemu-ga version match expected version. 10) Run driver signature check command in guest. @@ -37,7 +40,8 @@ def run(test, params, env): """ def change_virtio_media(cdrom_virtio): """ - change iso for virtio-win + change iso for virtio-win. + :param cdrom_virtio: iso file """ virtio_iso = utils_misc.get_path(data_dir.get_data_dir(), @@ -45,6 +49,32 @@ def change_virtio_media(cdrom_virtio): test.log.info("Changing virtio iso image to '%s'", virtio_iso) vm.change_media("drive_virtio", virtio_iso) + def check_network_config(session_serial): + """ + check ip and dns loss. + + :param session_serial: session_serial + """ + static_ip_address = utils_net.get_guest_ip_addr( + session_serial, virtio_nic_mac, os_type="windows" + ) + if static_ip_address != params["static_ip"]: + test.fail( + "Failed to setup static ip,current ip is %s" + % static_ip_address + ) + static_dns_address = utils_net.get_windows_nic_attribute( + session_serial, global_switch="nicconfig", + key="MACAddress", value=f"{virtio_nic_mac}", + target="DNSServerSearchOrder" + ) + static_dns_address = static_dns_address.strip('{}').strip('"') + if static_dns_address != params["static_dns"]: + test.fail( + "Static dns is lost after upgrade driver, current dns " + "is %s" % static_dns_address + ) + devcon_path = params["devcon_path"] installer_pkg_check_cmd = params["installer_pkg_check_cmd"] run_install_cmd = params["run_install_cmd"] @@ -89,13 +119,15 @@ def change_virtio_media(cdrom_virtio): copy_files_params=params) session_serial = vm.wait_for_serial_login() if vm.virtnet[1].nic_model == "virtio-net-pci": - ifname = utils_net.get_windows_nic_attribute(session_serial, "macaddress", virtio_nic_mac, - "netconnectionid") + ifname = utils_net.get_windows_nic_attribute( + session_serial, "macaddress", virtio_nic_mac, + "netconnectionid" + ) setup_ip_cmd = params["setup_ip_cmd"] % ifname + setup_dns_cmd = params["setup_dns_cmd"] % ifname session_serial.cmd_status(setup_ip_cmd) - static_ip_address = utils_net.get_guest_ip_addr(session_serial, virtio_nic_mac, os_type='windows') - if static_ip_address != params["static_ip"]: - test.fail("Failed to setup static ip,current ip is %s" % static_ip_address) + session_serial.cmd_status(setup_dns_cmd) + check_network_config(session_serial) session_serial.close() else: for driver_name, device_name, device_hwid in zip( @@ -125,9 +157,7 @@ def change_virtio_media(cdrom_virtio): if params.get("update_from_previous_installer", "no") == "yes": session_serial = vm.wait_for_serial_login() - static_ip_address = utils_net.get_guest_ip_addr(session_serial, virtio_nic_mac, os_type='windows') - if static_ip_address != params["static_ip"]: - test.fail("Static ip is lost after upgrade driver,current ip is %s" % static_ip_address) + check_network_config(session_serial) session_serial.close() # for some guests, need to reboot guest after drivers are updated