win_virtio_driver_update_test.py 2.1 KB
Newer Older
1 2 3
import logging

from virttest import error_context
4 5 6
from virttest import utils_misc
from virttest import data_dir

7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31
from qemu.tests import single_driver_install


@error_context.context_aware
def run(test, params, env):
    """
    Virtio driver test for windows guest.
    1) boot guest with virtio device.
    2) enable and check driver verifier in guest.
    3) Uninstall and install driver:
    3.1) uninstall driver.
    3.2) install driver.
    3) Downgrade and upgrade driver:
    3.1) downgrade virtio driver to specified version.
    3.2) run subtest. (optional)
    3.3) upgrade virtio driver to original version.
    4) clear the driver verifier.

    :param test: QEMU test object
    :param params: Dictionary with the test parameters
    :param env: Dictionary with test environment
    """
    vm = env.get_vm(params["main_vm"])
    vm.verify_alive()

32 33 34 35 36 37 38 39 40 41
    def change_virtio_media(cdrom_virtio):
        """
        change iso for virtio-win
        :param cdrom_virtio: iso file
        """
        virtio_iso = utils_misc.get_path(data_dir.get_data_dir(),
                                         cdrom_virtio)
        logging.info("Changing virtio iso image to '%s'" % virtio_iso)
        vm.change_media("drive_virtio", virtio_iso)

42 43
    if params.get("need_uninstall") == "yes":
        error_context.context("Uninstall virtio driver", logging.info)
44
        single_driver_install.run(test, params, env)
45 46 47 48 49
        # Need install driver after uninstallation.
        params["need_uninstall"] = False
        error_context.context("Install virtio driver", logging.info)
    else:
        error_context.context("Downgrade virtio driver", logging.info)
50 51 52 53 54
        change_virtio_media(params["cdrom_virtio_downgrade"])
        single_driver_install.run(test, params, env)
        error_context.context("Reboot guest after downgrade virtio driver",
                              logging.info)
        vm.reboot()
55 56
        error_context.context("Upgrade virtio driver to original",
                              logging.info)
57 58

    change_virtio_media(params["cdrom_virtio"])
59 60
    single_driver_install.run(test, params, env)
    vm.destroy()