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

Unified Diff: tools/telemetry/telemetry/core/platform.py

Issue 1647513002: Delete tools/telemetry. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 4 years, 11 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 | « tools/telemetry/telemetry/core/os_version.py ('k') | tools/telemetry/telemetry/core/platform_unittest.py » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: tools/telemetry/telemetry/core/platform.py
diff --git a/tools/telemetry/telemetry/core/platform.py b/tools/telemetry/telemetry/core/platform.py
deleted file mode 100644
index 9aa4c811a02487286208c01326941e5f4706dead..0000000000000000000000000000000000000000
--- a/tools/telemetry/telemetry/core/platform.py
+++ /dev/null
@@ -1,400 +0,0 @@
-# Copyright 2012 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 as real_logging
-import os
-import sys
-
-from telemetry.core import discover
-from telemetry.core import local_server
-from telemetry.core import memory_cache_http_server
-from telemetry.core import network_controller
-from telemetry.core import tracing_controller
-from telemetry.core import util
-from telemetry.internal.platform import (platform_backend as
- platform_backend_module)
-
-_host_platform = None
-# Remote platform is a dictionary from device ids to remote platform instances.
-_remote_platforms = {}
-
-
-def _InitHostPlatformIfNeeded():
- global _host_platform
- if _host_platform:
- return
- backend = None
- backends = _IterAllPlatformBackendClasses()
- for platform_backend_class in backends:
- if platform_backend_class.IsPlatformBackendForHost():
- backend = platform_backend_class()
- break
- if not backend:
- raise NotImplementedError()
- _host_platform = Platform(backend)
-
-
-def GetHostPlatform():
- _InitHostPlatformIfNeeded()
- return _host_platform
-
-
-def _IterAllPlatformBackendClasses():
- platform_dir = os.path.dirname(os.path.realpath(
- platform_backend_module.__file__))
- return discover.DiscoverClasses(
- platform_dir, util.GetTelemetryDir(),
- platform_backend_module.PlatformBackend).itervalues()
-
-
-def GetPlatformForDevice(device, finder_options, logging=real_logging):
- """ Returns a platform instance for the device.
- Args:
- device: a device.Device instance.
- """
- if device.guid in _remote_platforms:
- return _remote_platforms[device.guid]
- try:
- for platform_backend_class in _IterAllPlatformBackendClasses():
- if platform_backend_class.SupportsDevice(device):
- _remote_platforms[device.guid] = (
- platform_backend_class.CreatePlatformForDevice(device,
- finder_options))
- return _remote_platforms[device.guid]
- return None
- except Exception:
- current_exception = sys.exc_info()
- logging.error('Fail to create platform instance for %s.', device.name)
- raise current_exception[0], current_exception[1], current_exception[2]
-
-
-class Platform(object):
- """The platform that the target browser is running on.
-
- Provides a limited interface to interact with the platform itself, where
- possible. It's important to note that platforms may not provide a specific
- API, so check with IsFooBar() for availability.
- """
-
- def __init__(self, platform_backend):
- self._platform_backend = platform_backend
- self._platform_backend.InitPlatformBackend()
- self._platform_backend.SetPlatform(self)
- self._network_controller = network_controller.NetworkController(
- self._platform_backend.network_controller_backend)
- self._tracing_controller = tracing_controller.TracingController(
- self._platform_backend.tracing_controller_backend)
- self._local_server_controller = local_server.LocalServerController(
- self._platform_backend)
- self._is_monitoring_power = False
-
- @property
- def is_host_platform(self):
- return self == GetHostPlatform()
-
- @property
- def network_controller(self):
- """Control network settings and servers to simulate the Web."""
- return self._network_controller
-
- @property
- def tracing_controller(self):
- return self._tracing_controller
-
- def CanMonitorThermalThrottling(self):
- """Platforms may be able to detect thermal throttling.
-
- Some fan-less computers go into a reduced performance mode when their heat
- exceeds a certain threshold. Performance tests in particular should use this
- API to detect if this has happened and interpret results accordingly.
- """
- return self._platform_backend.CanMonitorThermalThrottling()
-
- def IsThermallyThrottled(self):
- """Returns True if the device is currently thermally throttled."""
- return self._platform_backend.IsThermallyThrottled()
-
- def HasBeenThermallyThrottled(self):
- """Returns True if the device has been thermally throttled."""
- return self._platform_backend.HasBeenThermallyThrottled()
-
- def GetDeviceTypeName(self):
- """Returns a string description of the Platform device, or None.
-
- Examples: Nexus 7, Nexus 6, Desktop"""
- return self._platform_backend.GetDeviceTypeName()
-
- def GetArchName(self):
- """Returns a string description of the Platform architecture.
-
- Examples: x86_64 (posix), AMD64 (win), armeabi-v7a, x86"""
- return self._platform_backend.GetArchName()
-
- def GetOSName(self):
- """Returns a string description of the Platform OS.
-
- Examples: WIN, MAC, LINUX, CHROMEOS"""
- return self._platform_backend.GetOSName()
-
- def GetOSVersionName(self):
- """Returns a logically sortable, string-like description of the Platform OS
- version.
-
- Examples: VISTA, WIN7, LION, MOUNTAINLION"""
- return self._platform_backend.GetOSVersionName()
-
- def GetOSVersionNumber(self):
- """Returns an integer description of the Platform OS major version.
-
- Examples: On Mac, 13 for Mavericks, 14 for Yosemite."""
- return self._platform_backend.GetOSVersionNumber()
-
- def CanFlushIndividualFilesFromSystemCache(self):
- """Returns true if the disk cache can be flushed for specific files."""
- return self._platform_backend.CanFlushIndividualFilesFromSystemCache()
-
- def FlushEntireSystemCache(self):
- """Flushes the OS's file cache completely.
-
- This function may require root or administrator access."""
- return self._platform_backend.FlushEntireSystemCache()
-
- def FlushSystemCacheForDirectory(self, directory):
- """Flushes the OS's file cache for the specified directory.
-
- This function does not require root or administrator access."""
- return self._platform_backend.FlushSystemCacheForDirectory(directory)
-
- def FlushDnsCache(self):
- """Flushes the OS's DNS cache completely.
-
- This function may require root or administrator access."""
- return self._platform_backend.FlushDnsCache()
-
- def LaunchApplication(self,
- application,
- parameters=None,
- elevate_privilege=False):
- """"Launches the given |application| with a list of |parameters| on the OS.
-
- Set |elevate_privilege| to launch the application with root or admin rights.
-
- Returns:
- A popen style process handle for host platforms.
- """
- return self._platform_backend.LaunchApplication(
- application,
- parameters,
- elevate_privilege=elevate_privilege)
-
- def IsApplicationRunning(self, application):
- """Returns whether an application is currently running."""
- return self._platform_backend.IsApplicationRunning(application)
-
- def CanLaunchApplication(self, application):
- """Returns whether the platform can launch the given application."""
- return self._platform_backend.CanLaunchApplication(application)
-
- def InstallApplication(self, application):
- """Installs the given application."""
- return self._platform_backend.InstallApplication(application)
-
- def CanCaptureVideo(self):
- """Returns a bool indicating whether the platform supports video capture."""
- return self._platform_backend.CanCaptureVideo()
-
- def StartVideoCapture(self, min_bitrate_mbps):
- """Starts capturing video.
-
- Outer framing may be included (from the OS, browser window, and webcam).
-
- Args:
- min_bitrate_mbps: The minimum capture bitrate in MegaBits Per Second.
- The platform is free to deliver a higher bitrate if it can do so
- without increasing overhead.
-
- Raises:
- ValueError if the required |min_bitrate_mbps| can't be achieved.
- """
- return self._platform_backend.StartVideoCapture(min_bitrate_mbps)
-
- def StopVideoCapture(self):
- """Stops capturing video.
-
- Returns:
- A telemetry.core.video.Video object.
- """
- return self._platform_backend.StopVideoCapture()
-
- def CanMonitorPower(self):
- """Returns True iff power can be monitored asynchronously via
- StartMonitoringPower() and StopMonitoringPower().
- """
- return self._platform_backend.CanMonitorPower()
-
- def CanMeasurePerApplicationPower(self):
- """Returns True if the power monitor can measure power for the target
- application in isolation. False if power measurement is for full system
- energy consumption."""
- return self._platform_backend.CanMeasurePerApplicationPower()
-
- def StartMonitoringPower(self, browser):
- """Starts monitoring power utilization statistics.
-
- Args:
- browser: The browser to monitor.
- """
- assert self._platform_backend.CanMonitorPower()
- self._platform_backend.StartMonitoringPower(browser)
- self._is_monitoring_power = True
-
- def StopMonitoringPower(self):
- """Stops monitoring power utilization and returns stats
-
- Returns:
- None if power measurement failed for some reason, otherwise a dict of
- power utilization statistics containing: {
- # An identifier for the data provider. Allows to evaluate the precision
- # of the data. Example values: monsoon, powermetrics, ds2784
- 'identifier': identifier,
-
- # The instantaneous power (voltage * current) reading in milliwatts at
- # each sample.
- 'power_samples_mw': [mw0, mw1, ..., mwN],
-
- # The full system energy consumption during the sampling period in
- # milliwatt hours. May be estimated by integrating power samples or may
- # be exact on supported hardware.
- 'energy_consumption_mwh': mwh,
-
- # The target application's energy consumption during the sampling period
- # in milliwatt hours. Should be returned iff
- # CanMeasurePerApplicationPower() return true.
- 'application_energy_consumption_mwh': mwh,
-
- # A platform-specific dictionary of additional details about the
- # utilization of individual hardware components.
- component_utilization: {
- ...
- }
- # Platform-specific data not attributed to any particular hardware
- # component.
- platform_info: {
-
- # Device-specific onboard temperature sensor.
- 'average_temperature_c': c,
-
- ...
- }
-
- }
- """
- ret_val = self._platform_backend.StopMonitoringPower()
- self._is_monitoring_power = False
- return ret_val
-
- def IsMonitoringPower(self):
- """Returns true if power is currently being monitored, false otherwise."""
- # TODO(rnephew): Remove when crbug.com/553601 is solved.
- real_logging.info('IsMonitoringPower: %s', self._is_monitoring_power)
- return self._is_monitoring_power
-
- def CanMonitorNetworkData(self):
- """Returns true if network data can be retrieved, false otherwise."""
- return self._platform_backend.CanMonitorNetworkData()
-
- def GetNetworkData(self, browser):
- """Get current network data.
- Returns:
- Tuple of (sent_data, received_data) in kb if data can be found,
- None otherwise.
- """
- assert browser.platform == self
- return self._platform_backend.GetNetworkData(browser)
-
- def IsCooperativeShutdownSupported(self):
- """Indicates whether CooperativelyShutdown, below, is supported.
- It is not necessary to implement it on all platforms."""
- return self._platform_backend.IsCooperativeShutdownSupported()
-
- def CooperativelyShutdown(self, proc, app_name):
- """Cooperatively shut down the given process from subprocess.Popen.
-
- Currently this is only implemented on Windows. See
- crbug.com/424024 for background on why it was added.
-
- Args:
- proc: a process object returned from subprocess.Popen.
- app_name: on Windows, is the prefix of the application's window
- class name that should be searched for. This helps ensure
- that only the application's windows are closed.
-
- Returns True if it is believed the attempt succeeded.
- """
- return self._platform_backend.CooperativelyShutdown(proc, app_name)
-
- def CanTakeScreenshot(self):
- return self._platform_backend.CanTakeScreenshot()
-
- # TODO(nednguyen): Implement this on Mac, Linux & Win. (crbug.com/369490)
- def TakeScreenshot(self, file_path):
- """ Takes a screenshot of the platform and save to |file_path|.
-
- Note that this method may not be supported on all platform, so check with
- CanTakeScreenshot before calling this.
-
- Args:
- file_path: Where to save the screenshot to. If the platform is remote,
- |file_path| is the path on the host platform.
-
- Returns True if it is believed the attempt succeeded.
- """
- return self._platform_backend.TakeScreenshot(file_path)
-
- def StartLocalServer(self, server):
- """Starts a LocalServer and associates it with this platform.
- |server.Close()| should be called manually to close the started server.
- """
- self._local_server_controller.StartServer(server)
-
- @property
- def http_server(self):
- return self._local_server_controller.GetRunningServer(
- memory_cache_http_server.MemoryCacheHTTPServer, None)
-
- def SetHTTPServerDirectories(self, paths):
- """Returns True if the HTTP server was started, False otherwise."""
- if isinstance(paths, basestring):
- paths = set([paths])
- paths = set(os.path.realpath(p) for p in paths)
-
- # If any path is in a subdirectory of another, remove the subdirectory.
- duplicates = set()
- for parent_path in paths:
- for sub_path in paths:
- if parent_path == sub_path:
- continue
- if os.path.commonprefix((parent_path, sub_path)) == parent_path:
- duplicates.add(sub_path)
- paths -= duplicates
-
- if self.http_server:
- if paths and self.http_server.paths == paths:
- return False
-
- self.http_server.Close()
-
- if not paths:
- return False
-
- server = memory_cache_http_server.MemoryCacheHTTPServer(paths)
- self.StartLocalServer(server)
- return True
-
- def StopAllLocalServers(self):
- self._local_server_controller.Close()
-
- @property
- def local_servers(self):
- """Returns the currently running local servers."""
- return self._local_server_controller.local_servers
« no previous file with comments | « tools/telemetry/telemetry/core/os_version.py ('k') | tools/telemetry/telemetry/core/platform_unittest.py » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698