Example #1
0
 def testWriteArgs(self):
     result = StringIO.StringIO()
     perfetto_trace_writer.write_thread_descriptor_event(
         output=result,
         pid=1,
         tid=2,
         ts=0,
     )
     perfetto_trace_writer.write_event(
         output=result,
         ph="M",
         category="",
         name="",
         ts=0,
         args={
             'int': 123,
             'double': 1.23,
             'string': 'onetwothree'
         },
         tid=2,
     )
     expected_output = (
         '\n\x13@\x00P\x80\x80@\xc8\x02\x01\xe2\x02\x04\x08\x01\x10'
         '\x02\xd0\x03@\nT@\x00P\x80\x80@Z;\x18\x01"\x07R\x03int {"\x11'
         'R\x06double)\xaeG\xe1z\x14\xae\xf3?"\x15R\x06string2\x0bonetwothree2'
         '\x04\x08\x01\x10Mb\x0c\n\x04\x08\x01\x12\x00\x12\x04\x08\x01\x12\x00'
         '\xd0\x03@')
     self.assertEqual(expected_output, result.getvalue())
Example #2
0
def _write_header():
    tid = threading.current_thread().ident
    if not tid:
        tid = os.getpid()

    if _format == PROTOBUF:
        tid = threading.current_thread().ident
        perfetto_trace_writer.write_thread_descriptor_event(
            output=_log_file,
            pid=os.getpid(),
            tid=tid,
            ts=trace_time.Now(),
        )
        perfetto_trace_writer.write_event(
            output=_log_file,
            ph="M",
            category="process_argv",
            name="process_argv",
            ts=trace_time.Now(),
            args=sys.argv,
            tid=tid,
        )
    else:
        if _format == JSON:
            _log_file.write('[')
        elif _format == JSON_WITH_METADATA:
            _log_file.write('{"traceEvents": [\n')
        else:
            raise TraceException("Unknown format: %s" % _format)
        from py_trace_event import checkFileCode
        encoding = checkFileCode(_log_file)
        print str(encoding)
        json.dump(
            {
                "ph": "M",
                "category": "process_argv",
                "pid": os.getpid(),
                "tid": threading.current_thread().ident,
                "ts": trace_time.Now(),
                "name": "process_argv",
                "args": {
                    "argv": sys.argv
                },
            },
            _log_file,
            encoding=encoding)
        _log_file.write('\n')
Example #3
0
def _write_header():
    if _format == PROTOBUF:
        tid = threading.current_thread().ident
        perfetto_trace_writer.write_clock_snapshot(
            output=_log_file,
            tid=tid,
            telemetry_ts=_telemetry_ts,
            boottime_ts=_boottime_ts,
        )
        perfetto_trace_writer.write_thread_descriptor_event(
            output=_log_file,
            pid=os.getpid(),
            tid=tid,
            ts=trace_time.Now(),
        )
        perfetto_trace_writer.write_event(
            output=_log_file,
            ph="M",
            category="process_argv",
            name="process_argv",
            ts=trace_time.Now(),
            args={"argv": sys.argv},
            tid=tid,
        )
    else:
        if _format == JSON:
            _log_file.write('[')
        elif _format == JSON_WITH_METADATA:
            _log_file.write('{"traceEvents": [\n')
        else:
            raise TraceException("Unknown format: %s" % _format)
        json.dump(
            {
                "ph": "M",
                "category": "process_argv",
                "pid": os.getpid(),
                "tid": threading.current_thread().ident,
                "ts": trace_time.Now(),
                "name": "process_argv",
                "args": {
                    "argv": sys.argv
                },
            }, _log_file)
        _log_file.write('\n')
Example #4
0
def _write_cur_events():
  if _format == PROTOBUF:
    for e in _cur_events:
      perfetto_trace_writer.write_event(
          output=_log_file,
          ph=e["ph"],
          category=e["category"],
          name=e["name"],
          ts=e["ts"],
          args=e["args"],
          tid=threading.current_thread().ident,
      )
  elif _format in (JSON, JSON_WITH_METADATA):
    for e in _cur_events:
      _log_file.write(",\n")
      json.dump(e, _log_file)
  else:
    raise TraceException("Unknown format: %s" % _format)
  del _cur_events[:]
Example #5
0
def _write_cur_events():
  if _format == PROTOBUF:
    for e in _cur_events:
      perfetto_trace_writer.write_event(
          output=_log_file,
          ph=e["ph"],
          category=e["category"],
          name=e["name"],
          ts=e["ts"],
          args=e["args"],
          tid=threading.current_thread().ident,
      )
  elif _format in (JSON, JSON_WITH_METADATA):
    for e in _cur_events:
      _log_file.write(",\n")
      json.dump(e, _log_file)
  else:
    raise TraceException("Unknown format: %s" % _format)
  del _cur_events[:]
Example #6
0
def _write_header():
  tid = threading.current_thread().ident
  if not tid:
    tid = os.getpid()

  if _format == PROTOBUF:
    tid = threading.current_thread().ident
    perfetto_trace_writer.write_thread_descriptor_event(
        output=_log_file,
        pid=os.getpid(),
        tid=tid,
        ts=trace_time.Now(),
    )
    perfetto_trace_writer.write_event(
        output=_log_file,
        ph="M",
        category="process_argv",
        name="process_argv",
        ts=trace_time.Now(),
        args=sys.argv,
        tid=tid,
    )
  else:
    if _format == JSON:
      _log_file.write('[')
    elif _format == JSON_WITH_METADATA:
      _log_file.write('{"traceEvents": [\n')
    else:
      raise TraceException("Unknown format: %s" % _format)
    json.dump({
        "ph": "M",
        "category": "process_argv",
        "pid": os.getpid(),
        "tid": threading.current_thread().ident,
        "ts": trace_time.Now(),
        "name": "process_argv",
        "args": {"argv": sys.argv},
    }, _log_file)
    _log_file.write('\n')
 def testWriteTwoEvents(self):
     result = StringIO.StringIO()
     perfetto_trace_writer.write_thread_descriptor_event(
         output=result,
         pid=1,
         tid=2,
         ts=1556716807306000,
     )
     perfetto_trace_writer.write_event(
         output=result,
         ph="M",
         category="category",
         name="event_name",
         ts=1556716807406000,
         args={},
         tid=2,
     )
     expected_output = (
         '\n\x17P\x80\x80@\xc8\x02\x01\xe2\x02\r\x08\x01\x10'
         '\x020\x90\xf6\xc2\x82\xb6\xfa\xe1\x02\n2P\x80\x80@Z\x0c\x08'
         '\xa0\x8d\x06\x18\x012\x04\x08\x01\x10Mb\x1e\n\x0c\x08\x01'
         '\x12\x08category\x12\x0e\x08\x01\x12\nevent_name')
     self.assertEqual(expected_output, result.getvalue())
Example #8
0
 def testWriteTwoEvents(self):
     result = StringIO.StringIO()
     perfetto_trace_writer.write_thread_descriptor_event(
         output=result,
         pid=1,
         tid=2,
         ts=2076949764620672,
     )
     perfetto_trace_writer.write_event(
         output=result,
         ph="M",
         category="category",
         name="event_name",
         ts=2076949764620673,
         args={},
         tid=2,
     )
     expected_output = (
         '\n\x18P\x80\x80@\xc8\x02\x01\xe2\x02\x0e\x08\x01\x10\x020\x80\xb8'
         '\xaf\xc4\xe8\xd9\xb3\xe9\x1c\n1P\x80\x80@Z\x0b\x08\xe8\x07\x18\x002'
         '\x04\x08\x00\x10Mb\x1e\n\x0c\x08\x00\x12\x08category'
         '\x12\x0e\x08\x00\x12\nevent_name')
     self.assertEqual(expected_output, result.getvalue())
Example #9
0
 def testWriteTwoEvents(self):
     result = StringIO.StringIO()
     perfetto_trace_writer.write_thread_descriptor_event(
         output=result,
         pid=1,
         tid=2,
         ts=1556716807306000,
     )
     perfetto_trace_writer.write_event(
         output=result,
         ph="M",
         category="category",
         name="event_name",
         ts=1556716807406000,
         args={},
         tid=2,
     )
     expected_output = (
         '\n\x1b@\x80\xec\xea\xda\x83\xb6\xa4\xcd\x15P\x80\x80@'
         '\xc8\x02\x01\xe2\x02\x04\x08\x01\x10\x02\xd0\x03@\n;@'
         '\x80\xb0\xc2\x8a\x84\xb6\xa4\xcd\x15P\x80\x80@Z\x08'
         '\x18\x012\x04\x08\x01\x10Mb\x1e\n\x0c\x08\x01\x12\x08'
         'category\x12\x0e\x08\x01\x12\nevent_name\xd0\x03@')
     self.assertEqual(expected_output, result.getvalue())