[telemetry][autotest]: move all telemetry tests to drone
BUG=chromium:1165407
TEST=[in chroot] autoserv -s --control-name telemetry_Benchmarks.rendering.desktop --host-info-subdir <path to host_info_store> -m <dut hostname> -l <board>/<version>/crosbolt_perf_perbuild/telemetry_Benchmarks.rendering.desktop --lab False --verify_job_repo_url -p --local-only-host-info True -r <results_dir>
Previous-Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/third_party/autotest/+/2688741
Reviewed-by: Congbin Guo <guocb@chromium.org>
Commit-Queue: Sanika Kulkarni <sanikak@chromium.org>
Tested-by: Sanika Kulkarni <sanikak@chromium.org>
Auto-Submit: Sanika Kulkarni <sanikak@chromium.org>
(cherry picked from commit 7ef23fe99e626166e8426aa47010787b2238a300)
Change-Id: I481abb1f350dd7f9e5611e082a2cf4bb3c419a85
Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/third_party/autotest/+/2719158
Tested-by: Congbin Guo <guocb@chromium.org>
Auto-Submit: Congbin Guo <guocb@chromium.org>
Reviewed-by: Sanika Kulkarni <sanikak@chromium.org>
Commit-Queue: Sanika Kulkarni <sanikak@chromium.org>
diff --git a/server/cros/telemetry_runner.py b/server/cros/telemetry_runner.py
index 77b2a7e..44cf103 100644
--- a/server/cros/telemetry_runner.py
+++ b/server/cros/telemetry_runner.py
@@ -12,7 +12,6 @@
import logging
import numbers
import os
-import random
import tempfile
import six
@@ -20,7 +19,6 @@
import common
from autotest_lib.client.common_lib import error, utils
-from autotest_lib.client.common_lib.cros import dev_server
from autotest_lib.server.cros import telemetry_setup
TELEMETRY_RUN_BENCHMARKS_SCRIPT = 'tools/perf/run_benchmark'
@@ -88,25 +86,7 @@
if local:
return LocalTelemetryRunner(host, telemetry_on_dut)
else:
- # TODO(crbug.com/165407): Once all telemetry tests are being
- # executed on the drone, deprecate DevserverTelemetryRunner class.
- #
- # In case of Lab tests, we want to move all telemetry test execution
- # from the devserver to the drone. But a slow rollout is key, as we
- # are not sure what kind of problems moving telemetry to drone will
- # cause. The determiner is a random number between 1 to 100 and the
- # cutoff essentially decides the "percentage" of tests that will
- # executed on the drone. Every once in a while (may be once or twice
- # a week), this cutoff value will be increased until it reaches 100
- # i.e 100% of telemetry tests are executed on the drones and 0%
- # tests are executed on the devserver. Once this has reached, the
- # DevserverTelemetryRunner can be safely deprecated.
- determiner = random.randint(1, 100)
- cutoff = 50
- if determiner <= cutoff:
- return DroneTelemetryRunner(host, telemetry_on_dut)
- else:
- return DevserverTelemetryRunner(host, telemetry_on_dut)
+ return DroneTelemetryRunner(host, telemetry_on_dut)
class TelemetryRunner(six.with_metaclass(abc.ABCMeta, object)):
@@ -129,7 +109,6 @@
"""
self._host = host
self._telemetry_path = None
- self._devserver = None
self._perf_value_writer = None
self._setup_telemetry()
self._telemetry_on_dut = telemetry_on_dut
@@ -165,13 +144,6 @@
@returns Full telemetry command to execute the script.
"""
telemetry_cmd = []
- # TODO(crbug.com/165407): All conditional blocks that are dependent on
- # "self_devserver" must be deleted once all telemetry tests are
- # migrated to the drone and DevserverTelemetryRunner is deprecated.
- if self._devserver:
- devserver_hostname = self._devserver.hostname
- telemetry_cmd.extend(['ssh', devserver_hostname])
-
no_verbose = kwargs.get('no_verbose', False)
output_dir = (DUT_CHROME_ROOT
@@ -253,15 +225,7 @@
# 2) DUT will be reflashed frequently and no need to worry about
# result size.
scp_cmd.extend(['rsync', '-avz', '--remove-source-files'])
- # TODO(crbug.com/165407): All conditional blocks that are dependent
- # on "self._devserver" must be deleted once all telemetry tests
- # are migrated to the drone and DevserverTelemetryRunner is
- # deprecated.
- devserver_hostname = ''
- if self._devserver:
- devserver_hostname = self._devserver.hostname
- devserver_hostname += ':'
- src = '%s%s' % (devserver_hostname, self._telemetry_path)
+ src = self._telemetry_path
if self._perf_value_writer:
src = os.path.join(src, self._perf_value_writer.tmpdir.strip('/'))
@@ -461,19 +425,11 @@
execution.
"""
script = os.path.join(DUT_CHROME_ROOT, TELEMETRY_RUN_GPU_TESTS_SCRIPT)
- cmd = []
- # TODO(crbug.com/165407): All conditional blocks that are dependent on
- # "self._devserver" must be deleted once all telemetry tests are
- # migrated to the drone and DevserverTelemetryRunner is deprecated.
- if self._devserver:
- devserver_hostname = self._devserver.hostname
- cmd.extend(['ssh', devserver_hostname])
-
- cmd.extend([
- self._host.ssh_command(
- alive_interval=900, connection_attempts=4), 'python2',
+ cmd = [
+ self._host.ssh_command(alive_interval=900,
+ connection_attempts=4), 'python2',
script
- ])
+ ]
cmd.extend(args)
cmd.append(test)
cmd = ' '.join(cmd)
@@ -508,15 +464,6 @@
command_fetch = format_fetch % (fetch_path, deps_path, test_name)
command_get = 'cat %s' % deps_path
- # TODO(crbug.com/165407): All conditional blocks that are dependent on
- # "self._devserver" must be deleted once all telemetry tests are
- # migrated to the drone and DevserverTelemetryRunner is deprecated.
- if self._devserver:
- devserver_hostname = self._devserver.url().split(
- 'http://')[1].split(':')[0]
- command_fetch = 'ssh %s %s' % (devserver_hostname, command_fetch)
- command_get = 'ssh %s %s' % (devserver_hostname, command_get)
-
logging.info('Getting DEPs: %s', command_fetch)
_, _, exit_code = self._run_cmd(command_fetch)
if exit_code != 0:
@@ -531,17 +478,10 @@
for dep in deps[test_name]:
src = os.path.join(self._telemetry_path, dep)
dst = os.path.join(DUT_CHROME_ROOT, dep)
- if self._devserver:
- logging.info('Copying: %s -> %s', src, dst)
- rsync_cmd = utils.sh_escape(
- 'rsync %s %s %s:%s' % (self._host.rsync_options(), src,
- self._host.hostname, dst))
- utils.run('ssh %s "%s"' % (devserver_hostname, rsync_cmd))
- else:
- if not os.path.isfile(src):
- raise error.TestFail('Error occurred while saving DEPs.')
- logging.info('Copying: %s -> %s', src, dst)
- dut.send_file(src, dst)
+ if not os.path.isfile(src):
+ raise error.TestFail('Error occurred while saving DEPs.')
+ logging.info('Copying: %s -> %s', src, dst)
+ dut.send_file(src, dst)
@staticmethod
def convert_chart_json(histogram_set):
@@ -764,45 +704,3 @@
except telemetry_setup.TelemetrySetupError as e:
raise error.AutotestError('Telemetry Environment could not be '
'setup: %s.' % e)
-
-
-class DevserverTelemetryRunner(TelemetryRunner):
- """Handle telemetry test setup and execution on the devserver."""
-
- def __init__(self, *args, **kwargs):
- """Initialize DevserverTelemetryRunner.
-
- The telemetry test will run on the devserver. Depending on whether
- telemetry_on_dut is True or False, there can be possible combinations
- for the execution of this test:
-
- telemetry_on_dut=False:
- ssh [devserver] python2 run_benchmark --browser=cros-chrome
- --remote=[dut] [test]
-
- telemetry_on_dut=True:
- ssh [devserver] ssh [dut] python2 run_benchmark --browser=system [test]
-
- @param args: The list of arguments to be passed. See Base class for a
- complete list of accepted arguments.
- @param kwargs: Any keyword arguments to be passed. See Base class for a
- complete list of accepted keyword arguments.
- """
- super(DevserverTelemetryRunner, self).__init__(*args, **kwargs)
-
- def _setup_telemetry(self):
- """Setup Telemetry to use the devserver."""
- logging.debug('Setting up telemetry for devserver testing')
- logging.debug('Grabbing build from AFE.')
- info = self._host.host_info_store.get()
- if not info.build:
- logging.error('Unable to locate build label for host: %s.',
- self._host.host_port)
- raise error.AutotestError('Failed to grab build for host %s.' %
- self._host.host_port)
- logging.debug('Setting up telemetry for build: %s', info.build)
- self._devserver = dev_server.ImageServer.resolve(
- info.build, hostname=self._host.hostname)
- self._devserver.stage_artifacts(info.build, ['autotest_packages'])
- self._telemetry_path = self._devserver.setup_telemetry(
- build=info.build)