| #!/usr/bin/python |
| |
| # Copyright (c) 2013 The Chromium OS Authors. All rights reserved. |
| # Use of this source code is governed by a BSD-style license that can be |
| # found in the LICENSE file. |
| |
| import os |
| import time |
| |
| from utils import command_executer |
| |
| |
| class SuiteRunner(object): |
| """ This defines the interface from crosperf to test script. |
| """ |
| def __init__(self, logger_to_use=None): |
| self._logger = logger_to_use |
| self._ce = command_executer.GetCommandExecuter(self._logger) |
| self._ct = command_executer.CommandTerminator() |
| |
| def Run(self, machine, label, benchmark, test_args): |
| if benchmark.suite == "telemetry": |
| return self.Telemetry_Run(machine, label, benchmark) |
| else: |
| return self.Pyauto_Run(machine, label, benchmark, test_args) |
| |
| def RebootMachine(self, machine_name, chromeos_root): |
| command ="reboot && exit" |
| self._ce.CrosRunCommand(command, machine=machine_name, |
| chromeos_root=chromeos_root) |
| time.sleep(60) |
| |
| |
| def Pyauto_Run(self, machine, label, benchmark, test_args): |
| """Run the run_remote_test.""" |
| options = "" |
| if label.board: |
| options += " --board=%s" % label.board |
| if test_args: |
| options += " %s" % test_args |
| command = "rm -rf /usr/local/autotest/results/*" |
| self._ce.CrosRunCommand(command, machine=machine, username="root", |
| chromeos_root=label.chromeos_root) |
| |
| self.RebootMachine(machine, label.chromeos_root) |
| |
| command = ("./run_remote_tests.sh --remote=%s %s %s" % |
| (machine, options, benchmark.test_name)) |
| return self._ce.ChrootRunCommand(label.chromeos_root, |
| command, |
| True, |
| self._ct) |
| |
| def Telemetry_Run(self, machine, label, benchmark): |
| if not os.path.isdir(label.chrome_src): |
| self._logger.LogFatal("Cannot find chrome src dir to" |
| " run telemetry.") |
| rsa_key = os.path.join(label.chromeos_root, |
| "src/scripts/mod_for_test_scripts/ssh_keys/testing_rsa") |
| |
| cmd = ("cd {0} && " |
| "./tools/perf/run_measurement " |
| "--browser=cros-chrome " |
| "--output-format=csv " |
| "--remote={1} " |
| "--identity {2} " |
| "{3} {4}".format(label.chrome_src, machine, |
| rsa_key, |
| benchmark.test_name, |
| benchmark.test_args)) |
| return self._ce.RunCommand(cmd, return_output=True, |
| print_to_console=False) |
| |
| def Terminate(self): |
| self._ct.Terminate() |
| |
| |
| class MockSuiteRunner(object): |
| def __init__(self): |
| pass |
| |
| def Run(self, *args): |
| return ["", "", 0] |