示例#1
0
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
示例#3
0
 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
示例#5
0
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
示例#7
0
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