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

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

Issue 541693004: Move remote platform creation logic from cros_browser_finders to platform. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Address achuith's comments Created 6 years, 3 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
Index: tools/telemetry/telemetry/core/platform/__init__.py
diff --git a/tools/telemetry/telemetry/core/platform/__init__.py b/tools/telemetry/telemetry/core/platform/__init__.py
index 8737e423f07d23ab2ac596f282c826f117d5a816..bca5da304bb798be1aa70bc5ac5036966a80afb1 100644
--- a/tools/telemetry/telemetry/core/platform/__init__.py
+++ b/tools/telemetry/telemetry/core/platform/__init__.py
@@ -2,21 +2,41 @@
# 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.platform import cros_device
+from telemetry.core.platform import cros_interface
+from telemetry.core.platform import cros_platform_backend
from telemetry.core.platform import profiling_controller
from telemetry.core.platform import tracing_controller
_host_platform = None
+# Remote platform is a dictionary from device ids to remote platform instances.
+_remote_platforms = {}
+
+
+def _IsRunningOnCrosDevice():
+ """Returns True if we're on a ChromeOS device."""
+ lsb_release = '/etc/lsb-release'
+ if sys.platform.startswith('linux') and os.path.exists(lsb_release):
+ with open(lsb_release, 'r') as f:
+ res = f.read()
+ if res.count('CHROMEOS_RELEASE_NAME'):
+ return True
+ return False
def _InitHostPlatformIfNeeded():
global _host_platform
if _host_platform:
return
-
- if sys.platform.startswith('linux'):
+ if _IsRunningOnCrosDevice():
+ backend = cros_platform_backend.CrosPlatformBackend(
+ cros_interface.CrOSInterface())
+ elif sys.platform.startswith('linux'):
from telemetry.core.platform import linux_platform_backend
backend = linux_platform_backend.LinuxPlatformBackend()
elif sys.platform == 'darwin':
@@ -36,6 +56,27 @@ def GetHostPlatform():
return _host_platform
+def GetPlatformForDevice(device, logging=real_logging):
+ """ Returns a platform instance for the device.
+ Args:
+ device: a device.Device instance.
+ """
+ if device.device_id not in _remote_platforms:
+ try:
+ if isinstance(device, cros_device.CrOSDevice):
+ cri = cros_interface.CrOSInterface(
+ device.host_name, device.ssh_identity)
+ cri.TryLogin()
+ _remote_platforms[device.device_id] = (
+ Platform(cros_platform_backend.CrosPlatformBackend(cri)))
+ else:
+ raise ValueError('Unsupported device type')
+ except:
+ logging.error('Fail to create platform instance for %s.', device.name)
+ raise
+ return _remote_platforms[device.device_id]
+
+
class Platform(object):
"""The platform that the target browser is running on.

Powered by Google App Engine
This is Rietveld 408576698