def _PullTraces(controllers, output, compress, write_json): ui.PrintMessage('Downloading...', eol='') trace_files = [controller.PullTrace() for controller in controllers] trace_files = [trace for trace in trace_files if trace] if not trace_files: ui.PrintMessage('No results') return '' trace_files = output_generator.MergeTraceFilesIfNeeded(trace_files) if not write_json: print 'Writing trace HTML' html_file = os.path.splitext(trace_files[0])[0] + '.html' trace_results = _PrepareTracesForOutput(trace_files) result = output_generator.GenerateHTMLOutput(trace_results, html_file) print '\nWrote file://%s\n' % result trace_files = [html_file] if compress and len(trace_files) == 1: result = output or trace_files[0] + '.gz' util.CompressFile(trace_files[0], result) elif len(trace_files) > 1: result = (output or 'chrome-combined-trace-%s.zip' % util.GetTraceTimestamp()) util.ArchiveFiles(trace_files, result) elif output: result = output shutil.move(trace_files[0], result) else: result = trace_files[0] return result
def PullTrace(self): self._thread.join() self._thread = None if self._trace_data: output_name = 'systrace-%s' % util.GetTraceTimestamp() with open(output_name, 'w') as out: out.write(self._trace_data) return output_name
def StartAgentTracing(self, options, categories, timeout=None): self._output_file = ('/data/local/tmp/ddms-profile-%s' % util.GetTraceTimestamp()) cmd = 'am profile start ' if self._supports_sampling: cmd += '--sampling %d ' % _DDMS_SAMPLING_FREQUENCY_US cmd += '%s %s' % (self._package, self._output_file) self._device.RunShellCommand(cmd)
def StartAgentTracing(self, config, timeout=None): self._output_file = ('/data/local/tmp/ddms-profile-%s' % util.GetTraceTimestamp()) cmd = ['am', 'profile', 'start'] if self._supports_sampling: cmd.extend(['--sampling', str(_DDMS_SAMPLING_FREQUENCY_US)]) cmd.extend([self._package, self._output_file]) self._device.RunShellCommand(cmd, check_return=True) return True
def _GetResults(trace_results, controller, output, compress, write_json, interval): ui.PrintMessage('Downloading...') # Wait for the trace file to get written. time.sleep(1) for agent in controller.get_child_agents: if isinstance(agent, chrome_tracing_agent.ChromeTracingAgent): time.sleep(interval / 4) # Ignore the systraceController because it will not contain any results, # instead being in charge of collecting results. trace_results = [ x for x in controller.all_results if not (x.source_name == 'systraceController') ] if not trace_results: ui.PrintMessage('No results') return '' result = None trace_results = output_generator.MergeTraceResultsIfNeeded(trace_results) if not write_json: ui.PrintMessage('Writing trace HTML...') html_file = output or trace_results[0].source_name + '.html' result = output_generator.GenerateHTMLOutput(trace_results, html_file) ui.PrintMessage('\nWrote file://%s' % result) elif compress and len(trace_results) == 1: result = output or trace_results[0].source_name + '.gz' util.WriteDataToCompressedFile(trace_results[0].raw_data, result) elif len(trace_results) > 1: result = (output or 'chrome-combined-trace-%s.zip' % util.GetTraceTimestamp()) util.ArchiveData(trace_results, result) elif output: result = output with open(result, 'wb') as f: f.write(trace_results[0].raw_data) else: result = trace_results[0].source_name with open(result, 'wb') as f: f.write(trace_results[0].raw_data) return result
def PackageTraces(trace_files, output=None, compress=False, write_json=False): trace_files = _MergeTracesIfNeeded(trace_files) if not write_json: html_file = os.path.splitext(trace_files[0])[0] + '.html' _PackageTracesAsHtml(trace_files, html_file) trace_files = [html_file] if compress and len(trace_files) == 1: result = output or trace_files[0] + '.gz' _CompressFile(trace_files[0], result) elif len(trace_files) > 1: result = output or 'chrome-combined-trace-%s.zip' % util.GetTraceTimestamp() _ArchiveFiles(trace_files, result) elif output: result = output shutil.move(trace_files[0], result) else: result = trace_files[0] return result
def _GetResults(agents, output, compress, write_json, interval): ui.PrintMessage('Downloading...', eol='') # Wait for the trace file to get written. time.sleep(1) trace_results = [] for agent in agents: if isinstance(agent, chrome_tracing_agent.ChromeTracingAgent): time.sleep(interval / 4) trace_results.append(agent.GetResults()) if not trace_results: ui.PrintMessage('No results') return '' result = None trace_results = output_generator.MergeTraceResultsIfNeeded(trace_results) if not write_json: print 'Writing trace HTML' html_file = trace_results[0].source_name + '.html' result = output_generator.GenerateHTMLOutput(trace_results, html_file) print '\nWrote file://%s\n' % result elif compress and len(trace_results) == 1: result = output or trace_results[0].source_name + '.gz' util.WriteDataToCompressedFile(trace_results[0].raw_data, result) elif len(trace_results) > 1: result = (output or 'chrome-combined-trace-%s.zip' % util.GetTraceTimestamp()) util.ArchiveData(trace_results, result) elif output: result = output with open(result, 'wb') as f: f.write(trace_results[0].raw_data) else: result = trace_results[0].source_name with open(result, 'wb') as f: f.write(trace_results[0].raw_data) return result