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

Side by Side Diff: telemetry/telemetry/internal/backends/chrome_inspector/tracing_backend.py

Issue 2619073002: [Telemetry] Change trace_data to hold a list of raw trace data for each trace part (Closed)
Patch Set: Created 3 years, 11 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 unified diff | Download patch
OLDNEW
1 # Copyright 2013 The Chromium Authors. All rights reserved. 1 # Copyright 2013 The Chromium Authors. All rights reserved.
2 # Use of this source code is governed by a BSD-style license that can be 2 # Use of this source code is governed by a BSD-style license that can be
3 # found in the LICENSE file. 3 # found in the LICENSE file.
4 4
5 import json 5 import json
6 import logging 6 import logging
7 import socket 7 import socket
8 import time 8 import time
9 import traceback 9 import traceback
10 10
(...skipping 253 matching lines...) Expand 10 before | Expand all | Expand 10 after
264 raise TracingTimeoutException( 264 raise TracingTimeoutException(
265 'Only received partial trace data due to timeout after %s ' 265 'Only received partial trace data due to timeout after %s '
266 'seconds. If the trace data is big, you may want to increase ' 266 'seconds. If the trace data is big, you may want to increase '
267 'the timeout amount.' % elapsed_time) 267 'the timeout amount.' % elapsed_time)
268 finally: 268 finally:
269 self._trace_data_builder = None 269 self._trace_data_builder = None
270 270
271 def _NotificationHandler(self, res): 271 def _NotificationHandler(self, res):
272 if 'Tracing.dataCollected' == res.get('method'): 272 if 'Tracing.dataCollected' == res.get('method'):
273 value = res.get('params', {}).get('value') 273 value = res.get('params', {}).get('value')
274 self._trace_data_builder.AddEventsTo( 274 self._trace_data_builder.AddTraceFor(
275 trace_data_module.CHROME_TRACE_PART, value) 275 trace_data_module.CHROME_TRACE_PART, value)
276 elif 'Tracing.tracingComplete' == res.get('method'): 276 elif 'Tracing.tracingComplete' == res.get('method'):
277 stream_handle = res.get('params', {}).get('stream') 277 stream_handle = res.get('params', {}).get('stream')
278 if not stream_handle: 278 if not stream_handle:
279 self._has_received_all_tracing_data = True 279 self._has_received_all_tracing_data = True
280 return 280 return
281 reader = _DevToolsStreamReader(self._inspector_websocket, stream_handle) 281 reader = _DevToolsStreamReader(self._inspector_websocket, stream_handle)
282 reader.Read(self._ReceivedAllTraceDataFromStream) 282 reader.Read(self._ReceivedAllTraceDataFromStream)
283 283
284 def _ReceivedAllTraceDataFromStream(self, data): 284 def _ReceivedAllTraceDataFromStream(self, data):
285 # For now we still unpack trace data to dictionary form.
285 trace = json.loads(data) 286 trace = json.loads(data)
286 if type(trace) == dict: 287 self._trace_data_builder.AddTraceFor(
287 for part in trace_data_module.ALL_TRACE_PARTS:
288 field_name = part.raw_field_name
289 if field_name in trace:
290 self._trace_data_builder.AddEventsTo(part, trace[field_name])
291
292 if 'metadata' in trace:
293 self._trace_data_builder.SetMetadataFor(
294 trace_data_module.CHROME_TRACE_PART, trace['metadata'])
295
296 elif type(trace) == list:
297 self._trace_data_builder.AddEventsTo(
298 trace_data_module.CHROME_TRACE_PART, trace) 288 trace_data_module.CHROME_TRACE_PART, trace)
299 else:
300 raise TracingUnexpectedResponseException('Unexpected trace type')
301 self._has_received_all_tracing_data = True 289 self._has_received_all_tracing_data = True
302 290
303 def Close(self): 291 def Close(self):
304 self._inspector_websocket.UnregisterDomain(self._TRACING_DOMAIN) 292 self._inspector_websocket.UnregisterDomain(self._TRACING_DOMAIN)
305 self._inspector_websocket = None 293 self._inspector_websocket = None
306 294
307 @decorators.Cache 295 @decorators.Cache
308 def IsTracingSupported(self): 296 def IsTracingSupported(self):
309 req = {'method': 'Tracing.hasCompleted'} 297 req = {'method': 'Tracing.hasCompleted'}
310 res = self._inspector_websocket.SyncRequest(req, timeout=10) 298 res = self._inspector_websocket.SyncRequest(req, timeout=10)
311 return not res.get('response') 299 return not res.get('response')
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698