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

Unified Diff: systrace/profile_chrome/atrace_tracing_agent.py

Issue 2276263003: Pass in custom options to Systrace agents (Closed) Base URL: https://chromium.googlesource.com/external/github.com/catapult-project/catapult.git@master
Patch Set: Created 4 years, 4 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: systrace/profile_chrome/atrace_tracing_agent.py
diff --git a/systrace/profile_chrome/atrace_tracing_agent.py b/systrace/profile_chrome/atrace_tracing_agent.py
index c9ce8e446d17a9b5f20a770ba4827fcf0e6655f5..8d9e941e968fddc2052270f5e6cd555362948803 100644
--- a/systrace/profile_chrome/atrace_tracing_agent.py
+++ b/systrace/profile_chrome/atrace_tracing_agent.py
@@ -2,6 +2,7 @@
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.
+import optparse
Sami 2016/08/26 15:53:43 Not something for this patch, but we should consid
washingtonp 2016/08/26 18:50:54 I agree with this. The subcommand support, better
import py_utils
import threading
import zlib
@@ -26,14 +27,14 @@ _TRACING_ON_PATH = '/sys/kernel/debug/tracing/tracing_on'
class AtraceAgent(tracing_agents.TracingAgent):
- def __init__(self, device, categories, ring_buffer):
+ def __init__(self, device, ring_buffer):
tracing_agents.TracingAgent.__init__(self)
self._device = device
- self._categories = categories
self._ring_buffer = ring_buffer
self._done = threading.Event()
self._thread = None
self._trace_data = None
+ self._categories = None
def __repr__(self):
return 'atrace'
@@ -43,7 +44,8 @@ class AtraceAgent(tracing_agents.TracingAgent):
return device.RunShellCommand('atrace --list_categories')
@py_utils.Timeout(tracing_agents.START_STOP_TIMEOUT)
- def StartAgentTracing(self, options, categories, timeout=None):
+ def StartAgentTracing(self, config, timeout=None):
+ self._categories = _ComputeAtraceCategories(config)
self._thread = threading.Thread(target=self._CollectData)
self._thread.start()
@@ -117,3 +119,29 @@ class AtraceAgent(tracing_agents.TracingAgent):
# Skip the initial newline.
return trace_data[1:]
+
Sami 2016/08/26 15:53:43 nit: two blank lines around top level entries plea
washingtonp 2016/08/26 18:50:54 Done.
+class AtraceConfig(tracing_agents.TracingConfig):
+ def __init__(self, atrace_categories):
+ tracing_agents.TracingConfig.__init__(self)
+ self.atrace_categories = atrace_categories
+
+def add_options(parser):
+ atrace_opts = optparse.OptionGroup(parser, 'Atrace tracing options')
+ atrace_opts.add_option('-s', '--systrace', help='Capture a systrace with '
+ 'the chosen comma-delimited systrace categories. You'
+ ' can also capture a combined Chrome + systrace by '
+ 'enabling both types of categories. Use "list" to '
+ 'see the available categories. Systrace is disabled'
+ ' by default. Note that in this case, Systrace is '
+ 'synonymous with Atrace.',
+ metavar='ATRACE_CATEGORIES',
+ dest='atrace_categories', default='')
+ return atrace_opts
+
+def get_config(options):
+ return AtraceConfig(options.atrace_categories)
+
+def _ComputeAtraceCategories(options):
+ if not options.atrace_categories:
+ return []
+ return options.atrace_categories.split(',')

Powered by Google App Engine
This is Rietveld 408576698