diff options
Diffstat (limited to 'crosperf/suite_runner.py')
-rw-r--r-- | crosperf/suite_runner.py | 83 |
1 files changed, 83 insertions, 0 deletions
diff --git a/crosperf/suite_runner.py b/crosperf/suite_runner.py new file mode 100644 index 00000000..d89f307d --- /dev/null +++ b/crosperf/suite_runner.py @@ -0,0 +1,83 @@ +#!/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.GetLogger().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_multipage_benchmarks " + "--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] |