diff options
author | zhenw <zhenw@chromium.org> | 2015-08-03 14:14:53 -0700 |
---|---|---|
committer | Commit bot <commit-bot@chromium.org> | 2015-08-03 21:15:48 +0000 |
commit | 32947b64aed2c97035cb559a408f4be67702257c (patch) | |
tree | e36554791bb3590b55fc9a4b25e6952c468ad9cb | |
parent | 089bcbb1d07f842cfa79c782a282aff60432520b (diff) | |
download | chromium_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.py | 7 | ||||
-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.py | 32 | ||||
-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.py | 13 |
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 |