summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorzhenw <zhenw@chromium.org>2015-08-03 14:14:53 -0700
committerCommit bot <commit-bot@chromium.org>2015-08-03 21:15:48 +0000
commit32947b64aed2c97035cb559a408f4be67702257c (patch)
treee36554791bb3590b55fc9a4b25e6952c468ad9cb
parent089bcbb1d07f842cfa79c782a282aff60432520b (diff)
downloadchromium_src-32947b64aed2c97035cb559a408f4be67702257c.zip
chromium_src-32947b64aed2c97035cb559a408f4be67702257c.tar.gz
chromium_src-32947b64aed2c97035cb559a408f4be67702257c.tar.bz2
[Telemetry] Separate devtools functionality from tracing agent
This CL separates devtools functionality from tracing agent. Right now, ChromeTracingAgent is just a wrapper around ChromeDevtoolsTracingBackend. In the next CL, creating/removing the trace config file will be added to ChromeTracingAgent. Design doc for platform-level tracing in telemetry: https://docs.google.com/document/d/1Uv8SzOq2ugvzLiOcP85g7qPiaxwsn4tgOdxpe3YjUkM/edit?usp=sharing BUG=515323 Review URL: https://codereview.chromium.org/1253003006 Cr-Commit-Position: refs/heads/master@{#341612}
-rw-r--r--tools/telemetry/telemetry/internal/backends/chrome_inspector/devtools_client_backend.py7
-rw-r--r--tools/telemetry/telemetry/internal/platform/tracing_agent/chrome_devtools_tracing_backend.py (renamed from tools/telemetry/telemetry/internal/platform/tracing_agent/chrome_devtools_tracing_agent.py)6
-rw-r--r--tools/telemetry/telemetry/internal/platform/tracing_agent/chrome_tracing_agent.py32
-rw-r--r--tools/telemetry/telemetry/internal/platform/tracing_agent/chrome_tracing_agent_unittest.py (renamed from tools/telemetry/telemetry/internal/platform/tracing_agent/chrome_devtools_tracing_agent_unittest.py)95
-rw-r--r--tools/telemetry/telemetry/internal/platform/tracing_controller_backend.py13
5 files changed, 87 insertions, 66 deletions
diff --git a/tools/telemetry/telemetry/internal/backends/chrome_inspector/devtools_client_backend.py b/tools/telemetry/telemetry/internal/backends/chrome_inspector/devtools_client_backend.py
index ddb4b61..a75a2af 100644
--- a/tools/telemetry/telemetry/internal/backends/chrome_inspector/devtools_client_backend.py
+++ b/tools/telemetry/telemetry/internal/backends/chrome_inspector/devtools_client_backend.py
@@ -11,8 +11,7 @@ from telemetry import decorators
from telemetry.internal.backends.chrome_inspector import devtools_http
from telemetry.internal.backends.chrome_inspector import inspector_backend
from telemetry.internal.backends.chrome_inspector import tracing_backend
-from telemetry.internal.platform.tracing_agent import (
- chrome_devtools_tracing_agent)
+from telemetry.internal.platform.tracing_agent import chrome_tracing_agent
from telemetry.timeline import trace_data as trace_data_module
@@ -67,8 +66,8 @@ class DevToolsClientBackend(object):
self._devtools_context_map_backend = _DevToolsContextMapBackend(
self._app_backend, self)
- (chrome_devtools_tracing_agent.ChromeDevtoolsTracingAgent
- .RegisterDevToolsClient(self, self._app_backend.platform_backend))
+ chrome_tracing_agent.ChromeTracingAgent.RegisterDevToolsClient(
+ self, self._app_backend.platform_backend)
@property
def remote_port(self):
diff --git a/tools/telemetry/telemetry/internal/platform/tracing_agent/chrome_devtools_tracing_agent.py b/tools/telemetry/telemetry/internal/platform/tracing_agent/chrome_devtools_tracing_backend.py
index 827e2e1..b1345ad9 100644
--- a/tools/telemetry/telemetry/internal/platform/tracing_agent/chrome_devtools_tracing_agent.py
+++ b/tools/telemetry/telemetry/internal/platform/tracing_agent/chrome_devtools_tracing_backend.py
@@ -4,8 +4,6 @@
import sys
import traceback
-from telemetry.internal.platform import tracing_agent
-
class ChromeTracingStartedError(Exception):
pass
@@ -15,7 +13,7 @@ class ChromeTracingStoppedError(Exception):
pass
-class ChromeDevtoolsTracingAgent(tracing_agent.TracingAgent):
+class ChromeDevtoolsTracingBackend(object):
# A singleton map from platform backends to maps of uniquely-identifying
# remote port (which may be the same as local port) to DevToolsClientBackend.
# There is no guarantee that the devtools agent is still alive.
@@ -24,7 +22,7 @@ class ChromeDevtoolsTracingAgent(tracing_agent.TracingAgent):
_is_tracing_running_for_platform_backend.setdefault(False)
def __init__(self, platform_backend):
- super(ChromeDevtoolsTracingAgent, self).__init__(platform_backend)
+ self._platform_backend = platform_backend
@classmethod
def _RemoveStaleDevToolsClient(cls, platform_backend):
diff --git a/tools/telemetry/telemetry/internal/platform/tracing_agent/chrome_tracing_agent.py b/tools/telemetry/telemetry/internal/platform/tracing_agent/chrome_tracing_agent.py
new file mode 100644
index 0000000..4e4fc13
--- /dev/null
+++ b/tools/telemetry/telemetry/internal/platform/tracing_agent/chrome_tracing_agent.py
@@ -0,0 +1,32 @@
+# Copyright 2015 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.
+
+from telemetry.internal.platform import tracing_agent
+from telemetry.internal.platform.tracing_agent import (
+ chrome_devtools_tracing_backend)
+
+
+class ChromeTracingAgent(tracing_agent.TracingAgent):
+ def __init__(self, platform_backend):
+ super(ChromeTracingAgent, self).__init__(platform_backend)
+ self._chrome_devtools_tracing_backend = (
+ chrome_devtools_tracing_backend.ChromeDevtoolsTracingBackend(
+ platform_backend))
+
+ @classmethod
+ def RegisterDevToolsClient(cls, devtools_client_backend, platform_backend):
+ (chrome_devtools_tracing_backend.ChromeDevtoolsTracingBackend
+ .RegisterDevToolsClient(devtools_client_backend, platform_backend))
+
+ @classmethod
+ def IsSupported(cls, platform_backend):
+ return (chrome_devtools_tracing_backend.ChromeDevtoolsTracingBackend
+ .IsSupported(platform_backend))
+
+ def Start(self, trace_options, category_filter, timeout):
+ return self._chrome_devtools_tracing_backend.Start(
+ trace_options, category_filter, timeout)
+
+ def Stop(self, trace_data_builder):
+ self._chrome_devtools_tracing_backend.Stop(trace_data_builder)
diff --git a/tools/telemetry/telemetry/internal/platform/tracing_agent/chrome_devtools_tracing_agent_unittest.py b/tools/telemetry/telemetry/internal/platform/tracing_agent/chrome_tracing_agent_unittest.py
index 087f09a..837d84d 100644
--- a/tools/telemetry/telemetry/internal/platform/tracing_agent/chrome_devtools_tracing_agent_unittest.py
+++ b/tools/telemetry/telemetry/internal/platform/tracing_agent/chrome_tracing_agent_unittest.py
@@ -5,7 +5,8 @@
import unittest
from telemetry.internal.platform.tracing_agent import (
- chrome_devtools_tracing_agent)
+ chrome_devtools_tracing_backend)
+from telemetry.internal.platform.tracing_agent import chrome_tracing_agent
class FakePlatformBackend(object):
@@ -44,17 +45,15 @@ class FakeCategoryFilter(object):
self.filter_string = 'foo'
-class ChromeDevtoolsTracingAgentUnittest(unittest.TestCase):
+class ChromeTracingAgentUnittest(unittest.TestCase):
def setUp(self):
self.platform1 = FakePlatformBackend()
self.platform2 = FakePlatformBackend()
self.platform3 = FakePlatformBackend()
def StartTracing(self, platform_backend, enable_chrome_trace=True):
- assert chrome_devtools_tracing_agent.ChromeDevtoolsTracingAgent.IsSupported(
- platform_backend)
- agent = chrome_devtools_tracing_agent.ChromeDevtoolsTracingAgent(
- platform_backend)
+ assert chrome_tracing_agent.ChromeTracingAgent.IsSupported(platform_backend)
+ agent = chrome_tracing_agent.ChromeTracingAgent(platform_backend)
trace_options = FakeTraceOptions()
trace_options.enable_chrome_trace = enable_chrome_trace
agent.Start(trace_options, FakeCategoryFilter(), 10)
@@ -64,56 +63,50 @@ class ChromeDevtoolsTracingAgentUnittest(unittest.TestCase):
tracing_agent.Stop(None)
def testRegisterDevtoolsClient(self):
- (chrome_devtools_tracing_agent.ChromeDevtoolsTracingAgent
- .RegisterDevToolsClient(FakeDevtoolsClient(1), self.platform1))
- (chrome_devtools_tracing_agent.ChromeDevtoolsTracingAgent
- .RegisterDevToolsClient(FakeDevtoolsClient(2), self.platform1))
- (chrome_devtools_tracing_agent.ChromeDevtoolsTracingAgent
- .RegisterDevToolsClient(FakeDevtoolsClient(3), self.platform1))
+ chrome_tracing_agent.ChromeTracingAgent.RegisterDevToolsClient(
+ FakeDevtoolsClient(1), self.platform1)
+ chrome_tracing_agent.ChromeTracingAgent.RegisterDevToolsClient(
+ FakeDevtoolsClient(2), self.platform1)
+ chrome_tracing_agent.ChromeTracingAgent.RegisterDevToolsClient(
+ FakeDevtoolsClient(3), self.platform1)
tracing_agent_of_platform1 = self.StartTracing(self.platform1)
with self.assertRaises(
- chrome_devtools_tracing_agent.ChromeTracingStartedError):
- (chrome_devtools_tracing_agent.ChromeDevtoolsTracingAgent
- .RegisterDevToolsClient(FakeDevtoolsClient(4), self.platform1))
- (chrome_devtools_tracing_agent.ChromeDevtoolsTracingAgent
- .RegisterDevToolsClient(FakeDevtoolsClient(5), self.platform2))
+ chrome_devtools_tracing_backend.ChromeTracingStartedError):
+ chrome_tracing_agent.ChromeTracingAgent.RegisterDevToolsClient(
+ FakeDevtoolsClient(4), self.platform1)
+ chrome_tracing_agent.ChromeTracingAgent.RegisterDevToolsClient(
+ FakeDevtoolsClient(5), self.platform2)
self.StopTracing(tracing_agent_of_platform1)
- (chrome_devtools_tracing_agent.ChromeDevtoolsTracingAgent
- .RegisterDevToolsClient(FakeDevtoolsClient(6), self.platform1))
+ chrome_tracing_agent.ChromeTracingAgent.RegisterDevToolsClient(
+ FakeDevtoolsClient(6), self.platform1)
def testIsSupport(self):
self.assertFalse(
- chrome_devtools_tracing_agent.ChromeDevtoolsTracingAgent.IsSupported(
- self.platform1))
+ chrome_tracing_agent.ChromeTracingAgent.IsSupported(self.platform1))
self.assertFalse(
- chrome_devtools_tracing_agent.ChromeDevtoolsTracingAgent.IsSupported(
- self.platform2))
+ chrome_tracing_agent.ChromeTracingAgent.IsSupported(self.platform2))
self.assertFalse(
- chrome_devtools_tracing_agent.ChromeDevtoolsTracingAgent.IsSupported(
- self.platform3))
+ chrome_tracing_agent.ChromeTracingAgent.IsSupported(self.platform3))
devtool1 = FakeDevtoolsClient(1)
devtool2 = FakeDevtoolsClient(2)
- (chrome_devtools_tracing_agent.ChromeDevtoolsTracingAgent
- .RegisterDevToolsClient(devtool1, self.platform1))
- (chrome_devtools_tracing_agent.ChromeDevtoolsTracingAgent
- .RegisterDevToolsClient(devtool2, self.platform2))
+ chrome_tracing_agent.ChromeTracingAgent.RegisterDevToolsClient(
+ devtool1, self.platform1)
+ chrome_tracing_agent.ChromeTracingAgent.RegisterDevToolsClient(
+ devtool2, self.platform2)
devtool2.is_alive = False
# Chrome tracing is only supported on platform 1 since only platform 1 has
# an alive devtool.
self.assertTrue(
- chrome_devtools_tracing_agent.ChromeDevtoolsTracingAgent.IsSupported(
- self.platform1))
+ chrome_tracing_agent.ChromeTracingAgent.IsSupported(self.platform1))
self.assertFalse(
- chrome_devtools_tracing_agent.ChromeDevtoolsTracingAgent.IsSupported(
- self.platform2))
+ chrome_tracing_agent.ChromeTracingAgent.IsSupported(self.platform2))
self.assertFalse(
- chrome_devtools_tracing_agent.ChromeDevtoolsTracingAgent.IsSupported(
- self.platform3))
+ chrome_tracing_agent.ChromeTracingAgent.IsSupported(self.platform3))
def testStartAndStopTracing(self):
devtool1 = FakeDevtoolsClient(1)
@@ -121,19 +114,19 @@ class ChromeDevtoolsTracingAgentUnittest(unittest.TestCase):
devtool3 = FakeDevtoolsClient(3)
devtool4 = FakeDevtoolsClient(2)
# Register devtools 1, 2, 3 on platform1 and devtool 4 on platform 2
- (chrome_devtools_tracing_agent.ChromeDevtoolsTracingAgent
- .RegisterDevToolsClient(devtool1, self.platform1))
- (chrome_devtools_tracing_agent.ChromeDevtoolsTracingAgent
- .RegisterDevToolsClient(devtool2, self.platform1))
- (chrome_devtools_tracing_agent.ChromeDevtoolsTracingAgent
- .RegisterDevToolsClient(devtool3, self.platform1))
- (chrome_devtools_tracing_agent.ChromeDevtoolsTracingAgent
- .RegisterDevToolsClient(devtool4, self.platform2))
+ chrome_tracing_agent.ChromeTracingAgent.RegisterDevToolsClient(
+ devtool1, self.platform1)
+ chrome_tracing_agent.ChromeTracingAgent.RegisterDevToolsClient(
+ devtool2, self.platform1)
+ chrome_tracing_agent.ChromeTracingAgent.RegisterDevToolsClient(
+ devtool3, self.platform1)
+ chrome_tracing_agent.ChromeTracingAgent.RegisterDevToolsClient(
+ devtool4, self.platform2)
devtool2.is_alive = False
tracing_agent1 = self.StartTracing(self.platform1)
with self.assertRaises(
- chrome_devtools_tracing_agent.ChromeTracingStartedError):
+ chrome_devtools_tracing_backend.ChromeTracingStartedError):
self.StartTracing(self.platform1)
self.assertTrue(devtool1.tracing_started)
@@ -161,10 +154,10 @@ class ChromeDevtoolsTracingAgentUnittest(unittest.TestCase):
devtool1 = FakeDevtoolsClient(1)
devtool2 = FakeDevtoolsClient(2)
# Register devtools 1, 2 on platform 1
- (chrome_devtools_tracing_agent.ChromeDevtoolsTracingAgent
- .RegisterDevToolsClient(devtool1, self.platform1))
- (chrome_devtools_tracing_agent.ChromeDevtoolsTracingAgent
- .RegisterDevToolsClient(devtool2, self.platform1))
+ chrome_tracing_agent.ChromeTracingAgent.RegisterDevToolsClient(
+ devtool1, self.platform1)
+ chrome_tracing_agent.ChromeTracingAgent.RegisterDevToolsClient(
+ devtool2, self.platform1)
tracing_agent1 = self.StartTracing(self.platform1)
self.assertTrue(devtool1.tracing_started)
@@ -172,15 +165,15 @@ class ChromeDevtoolsTracingAgentUnittest(unittest.TestCase):
devtool2.will_raise_exception_in_stop_tracing = True
with self.assertRaises(
- chrome_devtools_tracing_agent.ChromeTracingStoppedError):
+ chrome_devtools_tracing_backend.ChromeTracingStoppedError):
self.StopTracing(tracing_agent1)
devtool1.is_alive = False
devtool2.is_alive = False
# Register devtools 3 on platform 1 should not raise any exception.
devtool3 = FakeDevtoolsClient(3)
- (chrome_devtools_tracing_agent.ChromeDevtoolsTracingAgent
- .RegisterDevToolsClient(devtool3, self.platform1))
+ chrome_tracing_agent.ChromeTracingAgent.RegisterDevToolsClient(
+ devtool3, self.platform1)
# Start & Stop tracing on platform 1 should work just fine.
tracing_agent2 = self.StartTracing(self.platform1)
diff --git a/tools/telemetry/telemetry/internal/platform/tracing_controller_backend.py b/tools/telemetry/telemetry/internal/platform/tracing_controller_backend.py
index 1e79c4d..ee318bd 100644
--- a/tools/telemetry/telemetry/internal/platform/tracing_controller_backend.py
+++ b/tools/telemetry/telemetry/internal/platform/tracing_controller_backend.py
@@ -6,8 +6,7 @@ import os
from telemetry.core import util
from telemetry.internal.platform import tracing_agent
-from telemetry.internal.platform.tracing_agent import (
- chrome_devtools_tracing_agent)
+from telemetry.internal.platform.tracing_agent import chrome_tracing_agent
from telemetry.timeline import trace_data as trace_data_module
from telemetry.timeline import tracing_category_filter
from telemetry.timeline import tracing_options
@@ -26,7 +25,7 @@ class TracingControllerBackend(object):
self._platform_backend = platform_backend
self._current_trace_options = None
self._current_category_filter = None
- self._current_chrome_devtools_tracing_agent = None
+ self._current_chrome_tracing_agent = None
self._supported_agents_classes = [
agent_classes for agent_classes in _IterAllTracingAgentClasses() if
agent_classes.IsSupported(platform_backend)]
@@ -47,12 +46,12 @@ class TracingControllerBackend(object):
# Hack: chrome tracing agent depends on the number of alive chrome devtools
# processes, rather platform, hence we add it to the list of supported
# agents here if it was not added.
- if (chrome_devtools_tracing_agent.ChromeDevtoolsTracingAgent.IsSupported(
+ if (chrome_tracing_agent.ChromeTracingAgent.IsSupported(
self._platform_backend) and
- not chrome_devtools_tracing_agent.ChromeDevtoolsTracingAgent in
+ not chrome_tracing_agent.ChromeTracingAgent in
self._supported_agents_classes):
self._supported_agents_classes.append(
- chrome_devtools_tracing_agent.ChromeDevtoolsTracingAgent)
+ chrome_tracing_agent.ChromeTracingAgent)
for agent_class in self._supported_agents_classes:
agent = agent_class(self._platform_backend)
@@ -70,7 +69,7 @@ class TracingControllerBackend(object):
return trace_data_builder.AsData()
def IsChromeTracingSupported(self):
- return chrome_devtools_tracing_agent.ChromeDevtoolsTracingAgent.IsSupported(
+ return chrome_tracing_agent.ChromeTracingAgent.IsSupported(
self._platform_backend)
@property