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

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

Issue 3541002: Revert "Merge remote branch 'cros/upstream' into tempbranch2" (Closed) Base URL: ssh://git@gitrw.chromium.org:9222/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/whql_client_install.py ('k') | client/tests/kvm/tests_base.cfg.sample » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: client/tests/kvm/tests/whql_submission.py
diff --git a/client/tests/kvm/tests/whql_submission.py b/client/tests/kvm/tests/whql_submission.py
deleted file mode 100644
index 1fe27c9ed03413b55d4122113f0aef6e57a4dade..0000000000000000000000000000000000000000
--- a/client/tests/kvm/tests/whql_submission.py
+++ /dev/null
@@ -1,188 +0,0 @@
-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_submission(test, params, env):
- """
- WHQL submission test:
- 1) Log into the guest (the client machine) and into a DTM server machine
- 2) Copy the automation program binary (dsso_test_binary) to the server machine
- 3) Run the automation program
- 4) Pass the program all relevant parameters (e.g. device_data)
- 5) Wait for the program to terminate
- 6) Parse and report job results
- (logs and HTML reports are placed in test.bindir)
-
- @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 parameters
- 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")
- dsso_test_binary = params.get("dsso_test_binary",
- "deps/whql_submission_15.exe")
- dsso_test_binary = kvm_utils.get_path(test.bindir, dsso_test_binary)
- test_device = params.get("test_device")
- job_filter = params.get("job_filter", ".*")
- test_timeout = float(params.get("test_timeout", 600))
- wtt_services = params.get("wtt_services")
-
- # Restart WTT service(s) on the client
- logging.info("Restarting WTT services on client")
- for svc in wtt_services.split():
- kvm_test_utils.stop_windows_service(session, svc)
- for svc in wtt_services.split():
- kvm_test_utils.start_windows_service(session, svc)
-
- # Copy dsso_test_binary to the server
- rss_file_transfer.upload(server_address, server_file_transfer_port,
- dsso_test_binary, server_studio_path, timeout=60)
-
- # Open a shell session with the server
- server_session = kvm_utils.remote_login("nc", server_address,
- server_shell_port, "", "",
- session.prompt, session.linesep)
-
- # Get the computer names of the server and client
- cmd = "echo %computername%"
- server_name = server_session.get_command_output(cmd).strip()
- client_name = session.get_command_output(cmd).strip()
- session.close()
-
- # Run the automation program on the server
- server_session.get_command_output("cd %s" % server_studio_path)
- cmd = "%s %s %s %s %s %s" % (os.path.basename(dsso_test_binary),
- server_name,
- client_name,
- "%s_pool" % client_name,
- "%s_submission" % client_name,
- test_timeout)
- server_session.sendline(cmd)
-
- # Helper function: wait for a given prompt and raise an exception if an
- # error occurs
- def find_prompt(prompt):
- m, o = server_session.read_until_last_line_matches(
- [prompt, server_session.prompt], print_func=logging.info,
- timeout=600)
- if m != 0:
- errors = re.findall("^Error:.*$", o, re.I | re.M)
- if errors:
- raise error.TestError(errors[0])
- else:
- raise error.TestError("Error running automation program: could "
- "not find '%s' prompt" % prompt)
-
- # Tell the automation program which device to test
- find_prompt("Device to test:")
- server_session.sendline(test_device)
-
- # Tell the automation program which jobs to run
- find_prompt("Jobs to run:")
- server_session.sendline(job_filter)
-
- # Give the automation program all the device data supplied by the user
- find_prompt("DeviceData name:")
- for dd in kvm_utils.get_sub_dict_names(params, "device_data"):
- dd_params = kvm_utils.get_sub_dict(params, dd)
- if dd_params.get("dd_name") and dd_params.get("dd_data"):
- server_session.sendline(dd_params.get("dd_name"))
- server_session.sendline(dd_params.get("dd_data"))
- server_session.sendline()
-
- # Give the automation program all the descriptor information supplied by
- # the user
- find_prompt("Descriptor path:")
- for desc in kvm_utils.get_sub_dict_names(params, "descriptors"):
- desc_params = kvm_utils.get_sub_dict(params, desc)
- if desc_params.get("desc_path"):
- server_session.sendline(desc_params.get("desc_path"))
- server_session.sendline()
-
- # Wait for the automation program to terminate
- m, o = server_session.read_up_to_prompt(print_func=logging.info,
- timeout=test_timeout + 300)
- # (test_timeout + 300 is used here because the automation program is
- # supposed to terminate cleanly on its own when test_timeout expires)
- server_session.close()
-
- # Look for test results in the automation program's output
- result_summaries = re.findall(r"---- \[.*?\] ----", o, re.DOTALL)
- if not result_summaries:
- raise error.TestError("The automation program did not return any "
- "results")
- results = result_summaries[-1].strip("-")
- results = eval("".join(results.splitlines()))
-
- # Download logs and HTML reports from the server
- for i, r in enumerate(results):
- if "report" in r:
- try:
- rss_file_transfer.download(server_address,
- server_file_transfer_port,
- r["report"], test.debugdir)
- except rss_file_transfer.FileTransferNotFoundError:
- pass
- if "logs" in r:
- try:
- rss_file_transfer.download(server_address,
- server_file_transfer_port,
- r["logs"], test.debugdir)
- except rss_file_transfer.FileTransferNotFoundError:
- pass
- else:
- try:
- # Create symlinks to test log dirs to make it easier
- # to access them (their original names are not human
- # readable)
- link_name = "logs_%s" % r["report"].split("\\")[-1]
- link_name = link_name.replace(" ", "_")
- link_name = link_name.replace("/", "_")
- os.symlink(r["logs"].split("\\")[-1],
- os.path.join(test.debugdir, link_name))
- except (KeyError, OSError):
- pass
-
- # Print result summary
- logging.info("")
- logging.info("Result summary:")
- name_length = max(len(r.get("job", "")) for r in results)
- fmt = "%%-6s %%-%ds %%-15s %%-8s %%-8s %%-8s %%-15s" % name_length
- logging.info(fmt % ("ID", "Job", "Status", "Pass", "Fail", "NotRun",
- "NotApplicable"))
- logging.info(fmt % ("--", "---", "------", "----", "----", "------",
- "-------------"))
- for r in results:
- logging.info(fmt % (r.get("id"), r.get("job"), r.get("status"),
- r.get("pass"), r.get("fail"), r.get("notrun"),
- r.get("notapplicable")))
- logging.info("(see logs and HTML reports in %s)" % test.debugdir)
-
- # Kill the VM and fail if the automation program did not terminate on time
- if not m:
- vm.destroy()
- raise error.TestFail("The automation program did not terminate "
- "on time")
-
- # Fail if there are failed or incomplete jobs (kill the VM if there are
- # incomplete jobs)
- failed_jobs = [r.get("job") for r in results
- if r.get("status", "").lower() == "investigate"]
- running_jobs = [r.get("job") for r in results
- if r.get("status", "").lower() == "inprogress"]
- errors = []
- if failed_jobs:
- errors += ["Jobs failed: %s." % failed_jobs]
- if running_jobs:
- vm.destroy()
- errors += ["Jobs did not complete on time: %s." % running_jobs]
- if errors:
- raise error.TestFail(" ".join(errors))
« no previous file with comments | « client/tests/kvm/tests/whql_client_install.py ('k') | client/tests/kvm/tests_base.cfg.sample » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698