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

Unified Diff: tools/telemetry/telemetry/core/backends/chrome/tracing_backend.py

Issue 814813003: Added test that SurfaceFlinger metrics are calculated on android (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: PLEASE IGNORE: accidentally uploaded to wrong issue Created 6 years 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/backends/chrome/tracing_backend.py
diff --git a/tools/telemetry/telemetry/core/backends/chrome/tracing_backend.py b/tools/telemetry/telemetry/core/backends/chrome/tracing_backend.py
index 62426419bdc07504e10264d4b74b915761da93a8..4fe2020295771da4c4a69916ba4121ec619d33d8 100644
--- a/tools/telemetry/telemetry/core/backends/chrome/tracing_backend.py
+++ b/tools/telemetry/telemetry/core/backends/chrome/tracing_backend.py
@@ -6,6 +6,7 @@ import logging
from telemetry.core.backends.chrome_inspector import inspector_websocket
from telemetry.core.platform import tracing_options
+from telemetry.timeline import trace_data as trace_data_module
class TracingUnsupportedException(Exception):
@@ -28,7 +29,7 @@ class TracingBackend(object):
self._inspector_websocket.Connect(
'ws://127.0.0.1:%i/devtools/browser' % devtools_port)
- self._tracing_data = []
+ self._trace_events = []
self._is_tracing_running = False
self._chrome_browser_backend = chrome_browser_backend
@@ -47,7 +48,7 @@ class TracingBackend(object):
if self.is_tracing_running:
return False
# Reset collected tracing data from previous tracing calls.
- self._tracing_data = []
+ self._trace_events = []
self._CheckNotificationSupported()
#TODO(nednguyen): remove this when the stable branch pass 2118.
if (trace_options.record_mode == tracing_options.RECORD_AS_MUCH_AS_POSSIBLE
@@ -72,32 +73,33 @@ class TracingBackend(object):
self._is_tracing_running = True
return True
- def StopTracing(self, timeout=30):
- """ Stops tracing and returns the raw json trace result. It this is called
- after tracing has been stopped, trace data from the last tracing run is
- returned.
+ def StopTracing(self, trace_data_builder, timeout=30):
+ """ Stops tracing and pushes results to the supplied TraceDataBuilder.
+
+ If this is called after tracing has been stopped, trace data from the last
+ tracing run is pushed.
"""
if not self.is_tracing_running:
- if not self._tracing_data:
+ if not self._trace_events:
raise TracingHasNotRunException()
- else:
- return self._tracing_data
- req = {'method': 'Tracing.end'}
- self._inspector_websocket.SendAndIgnoreResponse(req)
- # After Tracing.end, chrome browser will send asynchronous notifications
- # containing trace data. This is until Tracing.tracingComplete is sent,
- # which means there is no trace buffers pending flush.
- try:
- self._inspector_websocket.DispatchNotificationsUntilDone(timeout)
- except \
- inspector_websocket.DispatchNotificationsUntilDoneTimeoutException \
- as err:
- raise TracingTimeoutException(
- 'Trace data was not fully received due to timeout after %s '
- 'seconds. If the trace data is big, you may want to increase the '
- 'time out amount.' % err.elapsed_time)
+ else:
+ req = {'method': 'Tracing.end'}
+ self._inspector_websocket.SendAndIgnoreResponse(req)
+ # After Tracing.end, chrome browser will send asynchronous notifications
+ # containing trace data. This is until Tracing.tracingComplete is sent,
+ # which means there is no trace buffers pending flush.
+ try:
+ self._inspector_websocket.DispatchNotificationsUntilDone(timeout)
+ except \
+ inspector_websocket.DispatchNotificationsUntilDoneTimeoutException \
+ as err:
+ raise TracingTimeoutException(
+ 'Trace data was not fully received due to timeout after %s '
+ 'seconds. If the trace data is big, you may want to increase the '
+ 'time out amount.' % err.elapsed_time)
self._is_tracing_running = False
- return self._tracing_data
+ trace_data_builder.AddEventsTo(
+ trace_data_module.CHROME_TRACE_PART, self._trace_events)
def _ErrorHandler(self, elapsed):
logging.error('Unrecoverable error after %ds reading tracing response.',
@@ -108,9 +110,9 @@ class TracingBackend(object):
if 'Tracing.dataCollected' == res.get('method'):
value = res.get('params', {}).get('value')
if type(value) in [str, unicode]:
- self._tracing_data.append(value)
+ self._trace_events.append(value)
elif type(value) is list:
- self._tracing_data.extend(value)
+ self._trace_events.extend(value)
else:
logging.warning('Unexpected type in tracing data')
elif 'Tracing.tracingComplete' == res.get('method'):

Powered by Google App Engine
This is Rietveld 408576698