| Index: tools/telemetry/telemetry/internal/platform/cros_platform_backend.py
|
| diff --git a/tools/telemetry/telemetry/internal/platform/cros_platform_backend.py b/tools/telemetry/telemetry/internal/platform/cros_platform_backend.py
|
| deleted file mode 100644
|
| index 89b04bfcb88af5f4399468cefe68d9066ac21fb7..0000000000000000000000000000000000000000
|
| --- a/tools/telemetry/telemetry/internal/platform/cros_platform_backend.py
|
| +++ /dev/null
|
| @@ -1,152 +0,0 @@
|
| -# Copyright 2013 The Chromium 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 logging
|
| -
|
| -from telemetry.core import cros_interface
|
| -from telemetry.core import platform
|
| -from telemetry.core import util
|
| -from telemetry.internal.forwarders import cros_forwarder
|
| -from telemetry.internal.platform import cros_device
|
| -from telemetry.internal.platform import linux_based_platform_backend
|
| -from telemetry.internal.platform.power_monitor import cros_power_monitor
|
| -from telemetry.internal.util import ps_util
|
| -
|
| -
|
| -class CrosPlatformBackend(
|
| - linux_based_platform_backend.LinuxBasedPlatformBackend):
|
| - def __init__(self, device=None):
|
| - super(CrosPlatformBackend, self).__init__(device)
|
| - if device and not device.is_local:
|
| - self._cri = cros_interface.CrOSInterface(
|
| - device.host_name, device.ssh_port, device.ssh_identity)
|
| - self._cri.TryLogin()
|
| - else:
|
| - self._cri = cros_interface.CrOSInterface()
|
| - self._powermonitor = cros_power_monitor.CrosPowerMonitor(self)
|
| -
|
| - @classmethod
|
| - def IsPlatformBackendForHost(cls):
|
| - return util.IsRunningOnCrosDevice()
|
| -
|
| - @classmethod
|
| - def SupportsDevice(cls, device):
|
| - return isinstance(device, cros_device.CrOSDevice)
|
| -
|
| - @classmethod
|
| - def CreatePlatformForDevice(cls, device, finder_options):
|
| - assert cls.SupportsDevice(device)
|
| - return platform.Platform(CrosPlatformBackend(device))
|
| -
|
| - @property
|
| - def cri(self):
|
| - return self._cri
|
| -
|
| - @property
|
| - def forwarder_factory(self):
|
| - if not self._forwarder_factory:
|
| - self._forwarder_factory = cros_forwarder.CrOsForwarderFactory(self._cri)
|
| - return self._forwarder_factory
|
| -
|
| - def GetRemotePort(self, port):
|
| - if self._cri.local:
|
| - return port
|
| - return self._cri.GetRemotePort()
|
| -
|
| - def IsThermallyThrottled(self):
|
| - raise NotImplementedError()
|
| -
|
| - def HasBeenThermallyThrottled(self):
|
| - raise NotImplementedError()
|
| -
|
| - def RunCommand(self, args):
|
| - if not isinstance(args, list):
|
| - args = [args]
|
| - stdout, stderr = self._cri.RunCmdOnDevice(args)
|
| - if stderr:
|
| - raise IOError('Failed to run: cmd = %s, stderr = %s' %
|
| - (str(args), stderr))
|
| - return stdout
|
| -
|
| - def GetFileContents(self, filename):
|
| - try:
|
| - return self.RunCommand(['cat', filename])
|
| - except AssertionError:
|
| - return ''
|
| -
|
| - def GetPsOutput(self, columns, pid=None):
|
| - return ps_util.GetPsOutputWithPlatformBackend(self, columns, pid)
|
| -
|
| - @staticmethod
|
| - def ParseCStateSample(sample):
|
| - sample_stats = {}
|
| - for cpu in sample:
|
| - values = sample[cpu].splitlines()
|
| - # There are three values per state after excluding the single time value.
|
| - num_states = (len(values) - 1) / 3
|
| - names = values[:num_states]
|
| - times = values[num_states:2 * num_states]
|
| - latencies = values[2 * num_states:]
|
| - # The last line in the sample contains the time.
|
| - cstates = {'C0': int(values[-1]) * 10 ** 6}
|
| - for i, state in enumerate(names):
|
| - if names[i] == 'POLL' and not int(latencies[i]):
|
| - # C0 state. Kernel stats aren't right, so calculate by
|
| - # subtracting all other states from total time (using epoch
|
| - # timer since we calculate differences in the end anyway).
|
| - # NOTE: Only x86 lists C0 under cpuidle, ARM does not.
|
| - continue
|
| - cstates['C0'] -= int(times[i])
|
| - if names[i] == '<null>':
|
| - # Kernel race condition that can happen while a new C-state gets
|
| - # added (e.g. AC->battery). Don't know the 'name' of the state
|
| - # yet, but its 'time' would be 0 anyway.
|
| - continue
|
| - cstates[state] = int(times[i])
|
| - sample_stats[cpu] = cstates
|
| - return sample_stats
|
| -
|
| - def GetOSName(self):
|
| - return 'chromeos'
|
| -
|
| - def GetOSVersionName(self):
|
| - return '' # TODO: Implement this.
|
| -
|
| - def GetChildPids(self, pid):
|
| - """Returns a list of child pids of |pid|."""
|
| - all_process_info = self._cri.ListProcesses()
|
| - processes = [(curr_pid, curr_ppid, curr_state)
|
| - for curr_pid, _, curr_ppid, curr_state in all_process_info]
|
| - return ps_util.GetChildPids(processes, pid)
|
| -
|
| - def GetCommandLine(self, pid):
|
| - procs = self._cri.ListProcesses()
|
| - return next((proc[1] for proc in procs if proc[0] == pid), None)
|
| -
|
| - def CanFlushIndividualFilesFromSystemCache(self):
|
| - return True
|
| -
|
| - def FlushEntireSystemCache(self):
|
| - raise NotImplementedError()
|
| -
|
| - def FlushSystemCacheForDirectory(self, directory):
|
| - flush_command = (
|
| - '/usr/local/telemetry/src/src/out/Release/clear_system_cache')
|
| - self.RunCommand(['chmod', '+x', flush_command])
|
| - self.RunCommand([flush_command, '--recurse', directory])
|
| -
|
| - def CanMonitorPower(self):
|
| - return self._powermonitor.CanMonitorPower()
|
| -
|
| - def StartMonitoringPower(self, browser):
|
| - self._powermonitor.StartMonitoringPower(browser)
|
| -
|
| - def StopMonitoringPower(self):
|
| - return self._powermonitor.StopMonitoringPower()
|
| -
|
| - def PathExists(self, path, timeout=None, retries=None):
|
| - if timeout or retries:
|
| - logging.warning(
|
| - 'PathExists: params timeout and retries are not support on CrOS.')
|
| - return self._cri.FileExistsOnDevice(path)
|
|
|