Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(188)

Unified Diff: client/tests/kvm/tests/whql_client_install.py

Issue 3554003: Merge remote branch 'cros/upstream' into tempbranch3 (Closed) Base URL: http://git.chromium.org/git/autotest.git
Patch Set: Created 10 years, 3 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « client/tests/kvm/tests/virtio_console.py ('k') | client/tests/kvm/tests/whql_submission.py » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: client/tests/kvm/tests/whql_client_install.py
diff --git a/client/tests/kvm/tests/whql_client_install.py b/client/tests/kvm/tests/whql_client_install.py
new file mode 100644
index 0000000000000000000000000000000000000000..d866df7ed88ea68adb1a6bda3e8a1d64ad9a3dd8
--- /dev/null
+++ b/client/tests/kvm/tests/whql_client_install.py
@@ -0,0 +1,116 @@
+import logging, time, os, re
+from autotest_lib.client.common_lib import error
+import kvm_subprocess, kvm_test_utils, kvm_utils, rss_file_transfer
+
+
+def run_whql_client_install(test, params, env):
+ """
+ WHQL DTM client installation:
+ 1) Log into the guest (the client machine) and into a DTM server machine
+ 2) Stop the DTM client service (wttsvc) on the client machine
+ 3) Delete the client machine from the server's data store
+ 4) Rename the client machine (give it a randomly generated name)
+ 5) Move the client machine into the server's workgroup
+ 6) Reboot the client machine
+ 7) Install the DTM client software
+
+ @param test: kvm test object
+ @param params: Dictionary with the test parameters
+ @param env: Dictionary with test environment.
+ """
+ vm = kvm_test_utils.get_living_vm(env, params.get("main_vm"))
+ session = kvm_test_utils.wait_for_login(vm, 0, 240)
+
+ # Collect test params
+ server_address = params.get("server_address")
+ server_shell_port = int(params.get("server_shell_port"))
+ server_file_transfer_port = int(params.get("server_file_transfer_port"))
+ server_studio_path = params.get("server_studio_path", "%programfiles%\\ "
+ "Microsoft Driver Test Manager\\Studio")
+ server_username = params.get("server_username")
+ server_password = params.get("server_password")
+ dsso_delete_machine_binary = params.get("dsso_delete_machine_binary",
+ "deps/whql_delete_machine_15.exe")
+ dsso_delete_machine_binary = kvm_utils.get_path(test.bindir,
+ dsso_delete_machine_binary)
+ install_timeout = float(params.get("install_timeout", 600))
+ install_cmd = params.get("install_cmd")
+ wtt_services = params.get("wtt_services")
+
+ # Stop WTT service(s) on client
+ for svc in wtt_services.split():
+ kvm_test_utils.stop_windows_service(session, svc)
+
+ # Copy dsso_delete_machine_binary to server
+ rss_file_transfer.upload(server_address, server_file_transfer_port,
+ dsso_delete_machine_binary, server_studio_path,
+ timeout=60)
+
+ # Open a shell session with server
+ server_session = kvm_utils.remote_login("nc", server_address,
+ server_shell_port, "", "",
+ session.prompt, session.linesep)
+
+ # Get server and client information
+ cmd = "echo %computername%"
+ server_name = server_session.get_command_output(cmd).strip()
+ client_name = session.get_command_output(cmd).strip()
+ cmd = "wmic computersystem get domain"
+ server_workgroup = server_session.get_command_output(cmd).strip()
+ server_workgroup = server_workgroup.splitlines()[-1]
+ regkey = r"HKLM\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters"
+ cmd = "reg query %s /v Domain" % regkey
+ server_dns_suffix = server_session.get_command_output(cmd).split()[-1]
+
+ # Delete the client machine from the server's data store (if it's there)
+ server_session.get_command_output("cd %s" % server_studio_path)
+ cmd = "%s %s %s" % (os.path.basename(dsso_delete_machine_binary),
+ server_name, client_name)
+ server_session.get_command_output(cmd, print_func=logging.info)
+ server_session.close()
+
+ # Rename the client machine
+ client_name = "autotest_%s" % kvm_utils.generate_random_string(4)
+ logging.info("Renaming client machine to '%s'" % client_name)
+ cmd = ('wmic computersystem where name="%%computername%%" rename name="%s"'
+ % client_name)
+ if session.get_command_status(cmd, timeout=600) != 0:
+ raise error.TestError("Could not rename the client machine")
+
+ # Join the server's workgroup
+ logging.info("Joining workgroup '%s'" % server_workgroup)
+ cmd = ('wmic computersystem where name="%%computername%%" call '
+ 'joindomainorworkgroup name="%s"' % server_workgroup)
+ if session.get_command_status(cmd, timeout=600) != 0:
+ raise error.TestError("Could not change the client's workgroup")
+
+ # Set the client machine's DNS suffix
+ logging.info("Setting DNS suffix to '%s'" % server_dns_suffix)
+ cmd = "reg add %s /v Domain /d %s /f" % (regkey, server_dns_suffix)
+ if session.get_command_status(cmd, timeout=300) != 0:
+ raise error.TestError("Could not set the client's DNS suffix")
+
+ # Reboot
+ session = kvm_test_utils.reboot(vm, session)
+
+ # Access shared resources on the server machine
+ logging.info("Attempting to access remote share on server")
+ cmd = r"net use \\%s /user:%s %s" % (server_name, server_username,
+ server_password)
+ end_time = time.time() + 120
+ while time.time() < end_time:
+ s = session.get_command_status(cmd)
+ if s == 0:
+ break
+ time.sleep(5)
+ else:
+ raise error.TestError("Could not access server share from client "
+ "machine")
+
+ # Install
+ logging.info("Installing DTM client (timeout=%ds)", install_timeout)
+ install_cmd = r"cmd /c \\%s\%s" % (server_name, install_cmd.lstrip("\\"))
+ if session.get_command_status(install_cmd, timeout=install_timeout) != 0:
+ raise error.TestError("Client installation failed")
+
+ session.close()
« no previous file with comments | « client/tests/kvm/tests/virtio_console.py ('k') | client/tests/kvm/tests/whql_submission.py » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698