def run(test, params, env): """ Simple test for Remote Desktop connection Tests expectes that Remote Desktop client (spice/vnc) will be executed from within a second guest so we won't be limited to Linux only clients The plan is to support remote-viewer at first place :param test: QEMU test object. :param params: Dictionary with the test parameters. :param env: Dictionary with test environment. """ guest_vm = env.get_vm(params["guest_vm"]) guest_vm.verify_alive() guest_session = guest_vm.wait_for_login( timeout=int(params.get("login_timeout", 360))) client_vm = env.get_vm(params["client_vm"]) client_vm.verify_alive() client_session = client_vm.wait_for_login( timeout=int(params.get("login_timeout", 360))) if (client_vm.params.get("os_type") == "windows" and client_vm.params.get("rv_installer", None)): utils_spice.install_rv_win(client_vm, params.get("rv_installer")) return if params.get("clear_interface", "yes") == "yes": for vm in params.get("vms").split(): try: session = env.get_vm(vm).wait_for_login(timeout=360) output = session.cmd('cat /etc/redhat-release') logging.info(output) except ShellCmdError: test.cancel("Test is only currently supported on " "RHEL and Fedora operating systems") if "release 6." in output: waittime = 15 else: waittime = 60 utils_spice.clear_interface( env.get_vm(vm), int(params.get("login_timeout", "360"))) utils_spice.wait_timeout(waittime) launch_rv(test, client_vm, guest_vm, params) client_session.close() guest_session.close()
def run(test, params, env): """ Simple test for Remote Desktop connection Tests expectes that Remote Desktop client (spice/vnc) will be executed from within a second guest so we won't be limited to Linux only clients The plan is to support remote-viewer at first place :param test: QEMU test object. :param params: Dictionary with the test parameters. :param env: Dictionary with test environment. """ guest_vm = env.get_vm(params["guest_vm"]) guest_vm.verify_alive() guest_session = guest_vm.wait_for_login( timeout=int(params.get("login_timeout", 360))) client_vm = env.get_vm(params["client_vm"]) client_vm.verify_alive() client_session = client_vm.wait_for_login( timeout=int(params.get("login_timeout", 360))) if (client_vm.params.get("os_type") == "windows" and client_vm.params.get("rv_installer", None)): utils_spice.install_rv_win(client_vm, params.get("rv_installer")) return if params.get("clear_interface", "yes") == "yes": for vm in params.get("vms").split(): try: session = env.get_vm(vm).wait_for_login(timeout=360) output = session.cmd('cat /etc/redhat-release') logging.info(output) except ShellCmdError: raise error.TestNAError("Test is only currently supported on " "RHEL and Fedora operating systems") if "release 6." in output: waittime = 15 else: waittime = 60 utils_spice.clear_interface(env.get_vm(vm), int(params.get("login_timeout", "360"))) utils_spice.wait_timeout(waittime) launch_rv(client_vm, guest_vm, params) client_session.close() guest_session.close()
def run(test, params, env): """ Simple test for Remote Desktop connection Tests expectes that Remote Desktop client (spice/vnc) will be executed from within a second guest so we won't be limited to Linux only clients The plan is to support remote-viewer at first place :param test: QEMU test object. :param params: Dictionary with the test parameters. :param env: Dictionary with test environment. """ guest_vm = env.get_vm(params["guest_vm"]) guest_vm.verify_alive() guest_session = guest_vm.wait_for_login( timeout=int(params.get("login_timeout", 360))) client_vm = env.get_vm(params["client_vm"]) client_vm.verify_alive() client_session = client_vm.wait_for_login( timeout=int(params.get("login_timeout", 360))) if (client_vm.params.get("os_type") == "windows" and client_vm.params.get("rv_installer", None)): utils_spice.install_rv_win(client_vm, params.get("rv_installer")) return if params.get("clear_interface", "yes") == "yes": for vm in params.get("vms").split(): utils_spice.clear_interface( env.get_vm(vm), int(params.get("login_timeout", "360"))) utils_spice.wait_timeout(15) launch_rv(client_vm, guest_vm, params) client_session.close() guest_session.close()
def run_rv_connect(test, params, env): """ Simple test for Remote Desktop connection Tests expectes that Remote Desktop client (spice/vnc) will be executed from within a second guest so we won't be limited to Linux only clients The plan is to support remote-viewer at first place :param test: QEMU test object. :param params: Dictionary with the test parameters. :param env: Dictionary with test environment. """ guest_vm = env.get_vm(params["guest_vm"]) guest_vm.verify_alive() guest_session = guest_vm.wait_for_login( timeout=int(params.get("login_timeout", 360))) client_vm = env.get_vm(params["client_vm"]) client_vm.verify_alive() client_session = client_vm.wait_for_login( timeout=int(params.get("login_timeout", 360))) if (client_vm.params.get("os_type") == "windows" and client_vm.params.get("rv_installer", None)): utils_spice.install_rv_win(client_vm, params.get("rv_installer")) return if params.get("clear_interface", "yes") == "yes": for vm in params.get("vms").split(): utils_spice.clear_interface(env.get_vm(vm), int(params.get("login_timeout", "360"))) utils_spice.wait_timeout(15) launch_rv(client_vm, guest_vm, params) client_session.close() guest_session.close()
def setup_vm_windows(test, params, env, vm): setup_type = vm.params.get("setup_type", None) logging.info("Setup type: %s" % setup_type) if vm.params.get("display", None) == "vnc": logging.info("Display of VM is VNC; assuming it is client") utils_spice.install_rv_win(vm, params.get("rv_installer"), env) utils_spice.install_usbclerk_win(vm, params.get("usb_installer"), env) return if setup_type == "guest_tools": logging.info("Installing Windows guest tools") session = vm.wait_for_login( timeout=int(params.get("login_timeout", 360))) winqxl = params.get("winqxl") winvdagent = params.get("winvdagent") vioserial = params.get("vioserial") pnputil = params.get("pnputil") winp7 = params.get("winp7zip") guest_script_req = params.get("guest_script_req") md5sumwin = params.get("md5sumwin") md5sumwin_dir = os.path.join("scripts", md5sumwin) guest_sr_dir = os.path.join("scripts", guest_script_req) guest_sr_path = utils_misc.get_path(test.virtdir, guest_sr_dir) md5sumwin_path = utils_misc.get_path(test.virtdir, md5sumwin_dir) winp7_path = os.path.join(test.virtdir, 'deps', winp7) winqxlzip = os.path.join(test.virtdir, 'deps', winqxl) winvdagentzip = os.path.join(test.virtdir, 'deps', winvdagent) vioserialzip = os.path.join(test.virtdir, 'deps', vioserial) #copy p7zip to windows and install it silently logging.info("Installing 7zip") vm.copy_files_to(winp7_path, "C:\\") session.cmd_status("start /wait msiexec /i C:\\7z920-x64.msi /qn") #copy over the winqxl, winvdagent, virtio serial vm.copy_files_to(winqxlzip, "C:\\") vm.copy_files_to(winvdagentzip, "C:\\") vm.copy_files_to(vioserialzip, "C:\\") vm.copy_files_to(guest_sr_path, "C:\\") vm.copy_files_to(md5sumwin_path, "C:\\") #extract winvdagent zip and start service if vdservice is not installed try: output = session.cmd('sc queryex type= service state= all' + ' | FIND "vdservice"') except aexpect.ShellCmdError: session.cmd_status( '"C:\\Program Files\\7-Zip\\7z.exe" e C:\\wvdagent.zip -oC:\\') utils_spice.wait_timeout(2) session.cmd_status("C:\\vdservice.exe install") #wait for vdservice to come up utils_spice.wait_timeout(5) logging.info(session.cmd("net start vdservice")) logging.info(session.cmd("chdir")) #extract winqxl driver, place drivers in correct location & reboot #Note pnputil only works win 7+, need to find a way for win xp #Verify if virtio serial is already installed output = session.cmd(pnputil + " /e") if ("System devices" in output): logging.info("Virtio Serial already installed") else: session.cmd_status( '"C:\\Program Files\\7-Zip\\7z.exe" e C:\\vioserial.zip -oC:\\' ) output = session.cmd(pnputil + " -i -a C:\\vioser.inf") logging.info("Virtio Serial status: " + output) #Make sure virtio install is complete utils_spice.wait_timeout(5) output = session.cmd(pnputil + " /e") if ("Display adapters" in output): logging.info("QXL already installed") else: #winqxl session.cmd_status( '"C:\\Program Files\\7-Zip\\7z.exe" e C:\\wqxl.zip -oC:\\') output = session.cmd(pnputil + " -i -a C:\\qxl.inf") logging.info("Win QXL status: " + output) #Make sure qxl install is complete utils_spice.wait_timeout(5) vm.reboot() logging.info("Installation of Windows guest tools completed") logging.info("Setup complete")
def setup_vm_windows(test, params, env, vm): setup_type = vm.params.get("setup_type", None) logging.info("Setup type: %s" % setup_type) if vm.params.get("display", None) == "vnc": logging.info("Display of VM is VNC; assuming it is client") utils_spice.install_rv_win(vm, params.get("rv_installer"), env) utils_spice.install_usbclerk_win(vm, params.get("usb_installer"), env) return if setup_type == "guest_tools": logging.info("Installing Windows guest tools") session = vm.wait_for_login( timeout = int(params.get("login_timeout", 360))) winqxl = params.get("winqxl") winvdagent = params.get("winvdagent") vioserial = params.get("vioserial") pnputil = params.get("pnputil") winp7 = params.get("winp7zip") guest_script_req = params.get("guest_script_req") md5sumwin = params.get("md5sumwin") md5sumwin_dir = os.path.join("scripts", md5sumwin) guest_sr_dir = os.path.join("scripts", guest_script_req) guest_sr_path = utils_misc.get_path(test.virtdir, guest_sr_dir) md5sumwin_path = utils_misc.get_path(test.virtdir, md5sumwin_dir) winp7_path = os.path.join(test.virtdir, 'deps', winp7) winqxlzip = os.path.join(test.virtdir, 'deps', winqxl) winvdagentzip = os.path.join(test.virtdir, 'deps', winvdagent) vioserialzip = os.path.join(test.virtdir, 'deps', vioserial) #copy p7zip to windows and install it silently logging.info("Installing 7zip") vm.copy_files_to(winp7_path, "C:\\") session.cmd_status("start /wait msiexec /i C:\\7z920-x64.msi /qn") #copy over the winqxl, winvdagent, virtio serial vm.copy_files_to(winqxlzip, "C:\\") vm.copy_files_to(winvdagentzip, "C:\\") vm.copy_files_to(vioserialzip, "C:\\") vm.copy_files_to(guest_sr_path, "C:\\") vm.copy_files_to(md5sumwin_path, "C:\\") #extract winvdagent zip and start service if vdservice is not installed try: output = session.cmd('sc queryex type= service state= all' + ' | FIND "vdservice"') except aexpect.ShellCmdError: session.cmd_status('"C:\\Program Files\\7-Zip\\7z.exe" e C:\\wvdagent.zip -oC:\\') utils_spice.wait_timeout(2) session.cmd_status("C:\\vdservice.exe install") #wait for vdservice to come up utils_spice.wait_timeout(5) logging.info(session.cmd("net start vdservice")) logging.info(session.cmd("chdir")) #extract winqxl driver, place drivers in correct location & reboot #Note pnputil only works win 7+, need to find a way for win xp #Verify if virtio serial is already installed output = session.cmd(pnputil + " /e") if("System devices" in output): logging.info( "Virtio Serial already installed") else: session.cmd_status('"C:\\Program Files\\7-Zip\\7z.exe" e C:\\vioserial.zip -oC:\\') output = session.cmd(pnputil + " -i -a C:\\vioser.inf") logging.info("Virtio Serial status: " + output) #Make sure virtio install is complete utils_spice.wait_timeout(5) output = session.cmd(pnputil + " /e") if("Display adapters" in output): logging.info("QXL already installed") else: #winqxl session.cmd_status('"C:\\Program Files\\7-Zip\\7z.exe" e C:\\wqxl.zip -oC:\\') output = session.cmd(pnputil + " -i -a C:\\qxl.inf") logging.info( "Win QXL status: " + output ) #Make sure qxl install is complete utils_spice.wait_timeout(5) vm.reboot() logging.info("Installation of Windows guest tools completed") logging.info("Setup complete")