| OLD | NEW |
| 1 # Copyright 2015 The Chromium Authors. All rights reserved. | 1 # Copyright 2015 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 optparse | 5 import optparse |
| 6 import os | 6 import os |
| 7 import py_utils | 7 import py_utils |
| 8 import re | 8 import re |
| 9 | 9 |
| 10 from profile_chrome import util | 10 from profile_chrome import util |
| (...skipping 23 matching lines...) Expand all Loading... |
| 34 | 34 |
| 35 @py_utils.Timeout(tracing_agents.START_STOP_TIMEOUT) | 35 @py_utils.Timeout(tracing_agents.START_STOP_TIMEOUT) |
| 36 def StartAgentTracing(self, config, timeout=None): | 36 def StartAgentTracing(self, config, timeout=None): |
| 37 self._output_file = ( | 37 self._output_file = ( |
| 38 '/data/local/tmp/ddms-profile-%s' % util.GetTraceTimestamp()) | 38 '/data/local/tmp/ddms-profile-%s' % util.GetTraceTimestamp()) |
| 39 cmd = 'am profile start ' | 39 cmd = 'am profile start ' |
| 40 if self._supports_sampling: | 40 if self._supports_sampling: |
| 41 cmd += '--sampling %d ' % _DDMS_SAMPLING_FREQUENCY_US | 41 cmd += '--sampling %d ' % _DDMS_SAMPLING_FREQUENCY_US |
| 42 cmd += '%s %s' % (self._package, self._output_file) | 42 cmd += '%s %s' % (self._package, self._output_file) |
| 43 self._device.RunShellCommand(cmd) | 43 self._device.RunShellCommand(cmd) |
| 44 return True |
| 44 | 45 |
| 45 @py_utils.Timeout(tracing_agents.START_STOP_TIMEOUT) | 46 @py_utils.Timeout(tracing_agents.START_STOP_TIMEOUT) |
| 46 def StopAgentTracing(self, timeout=None): | 47 def StopAgentTracing(self, timeout=None): |
| 47 self._device.RunShellCommand('am profile stop %s' % self._package) | 48 self._device.RunShellCommand('am profile stop %s' % self._package) |
| 49 return True |
| 48 | 50 |
| 49 @py_utils.Timeout(tracing_agents.GET_RESULTS_TIMEOUT) | 51 @py_utils.Timeout(tracing_agents.GET_RESULTS_TIMEOUT) |
| 50 def GetResults(self, timeout=None): | 52 def GetResults(self, timeout=None): |
| 51 with open(self._PullTrace(), 'r') as f: | 53 with open(self._PullTrace(), 'r') as f: |
| 52 trace_data = f.read() | 54 trace_data = f.read() |
| 53 return trace_result.TraceResult('ddms', trace_data) | 55 return trace_result.TraceResult('ddms', trace_data) |
| 54 | 56 |
| 55 def _PullTrace(self): | 57 def _PullTrace(self): |
| 56 if not self._output_file: | 58 if not self._output_file: |
| 57 return None | 59 return None |
| 58 | 60 |
| 59 host_file = os.path.join( | 61 host_file = os.path.join( |
| 60 os.path.curdir, os.path.basename(self._output_file)) | 62 os.path.curdir, os.path.basename(self._output_file)) |
| 61 self._device.PullFile(self._output_file, host_file) | 63 self._device.PullFile(self._output_file, host_file) |
| 62 return host_file | 64 return host_file |
| 63 | 65 |
| 64 def SupportsExplicitClockSync(self): | 66 def SupportsExplicitClockSync(self): |
| 65 return False | 67 return False |
| 66 | 68 |
| 67 def RecordClockSyncMarker(self, sync_id, did_record_sync_marker_callback): | 69 def RecordClockSyncMarker(self, sync_id, did_record_sync_marker_callback): |
| 70 # pylint: disable=unused-argument |
| 68 assert self.SupportsExplicitClockSync(), ('Clock sync marker cannot be ' | 71 assert self.SupportsExplicitClockSync(), ('Clock sync marker cannot be ' |
| 69 'recorded since explicit clock sync is not supported.') | 72 'recorded since explicit clock sync is not supported.') |
| 70 | 73 |
| 71 | 74 |
| 72 class DdmsConfig(tracing_agents.TracingConfig): | 75 class DdmsConfig(tracing_agents.TracingConfig): |
| 73 def __init__(self): | 76 def __init__(self, device, package_info, ddms): |
| 74 tracing_agents.TracingConfig.__init__(self) | 77 tracing_agents.TracingConfig.__init__(self) |
| 78 self.device = device |
| 79 self.package_info = package_info |
| 80 self.ddms = ddms |
| 75 | 81 |
| 76 | 82 |
| 83 def try_create_agent(config): |
| 84 if config.ddms: |
| 85 return DdmsAgent(config.device, config.package_info) |
| 86 return False |
| 87 |
| 77 def add_options(parser): | 88 def add_options(parser): |
| 78 options = optparse.OptionGroup(parser, 'Java tracing') | 89 options = optparse.OptionGroup(parser, 'Java tracing') |
| 79 options.add_option('--ddms', help='Trace Java execution using DDMS ' | 90 options.add_option('--ddms', help='Trace Java execution using DDMS ' |
| 80 'sampling.', action='store_true') | 91 'sampling.', action='store_true') |
| 81 return options | 92 return options |
| 82 | 93 |
| 83 def get_config(options): | 94 def get_config(options): |
| 84 # pylint: disable=unused-argument | 95 return DdmsConfig(options.device, options.package_info, options.ddms) |
| 85 return DdmsConfig() | |
| OLD | NEW |