Exemplo n.º 1
0
    def test_trace_file(self):
        # Get path to trace_processor_shell and construct TraceProcessor
        tp = TraceProcessor(file_path=os.path.join(
            os.environ["ROOT_DIR"], 'test', 'data',
            'example_android_trace_30s.pb'),
                            bin_path=os.environ["SHELL_PATH"])
        qr_iterator = tp.query('select * from slice limit 10')
        dur_result = [
            178646, 119740, 58073, 155000, 173177, 20209377, 3589167, 90104,
            275312, 65313
        ]

        for num, row in enumerate(qr_iterator):
            self.assertEqual(row.type, 'internal_slice')
            self.assertEqual(row.dur, dur_result[num])

        # Test the batching logic by issuing a large query and ensuring we receive
        # all rows, not just a truncated subset.
        qr_iterator = tp.query('select count(*) as cnt from slice')
        expected_count = next(qr_iterator).cnt
        self.assertGreater(expected_count, 0)

        qr_iterator = tp.query('select * from slice')
        count = sum(1 for _ in qr_iterator)
        self.assertEqual(count, expected_count)

        tp.close()
Exemplo n.º 2
0
def main():
    # Parse arguments passed from command line
    parser = argparse.ArgumentParser()
    parser.add_argument(
        "-a",
        "--address",
        help=
        "Address at which trace_processor is being run, e.g. localhost:9001",
        type=str)
    parser.add_argument("-b",
                        "--binary",
                        help="Absolute path to a trace processor binary",
                        type=str)
    parser.add_argument("-f",
                        "--file",
                        help="Absolute path to trace",
                        type=str)
    args = parser.parse_args()

    # Pass arguments into api to construct the trace processor and load the trace
    if args.address is None and args.file is None:
        raise Exception("You must specify an address or a file path to trace")
    elif args.address is None:
        tp = TraceProcessor(file_path=args.file, bin_path=args.binary)
    elif args.file is None:
        tp = TraceProcessor(addr=args.address)
    else:
        tp = TraceProcessor(addr=args.address,
                            file_path=args.file,
                            bin_path=args.binary)

    # Iterate through QueryResultIterator
    res_it = tp.query('select * from slice limit 10')
    for row in res_it:
        print(row.name)

    # Convert QueryResultIterator into a pandas dataframe + iterate. This yields
    # the same results as the function above.
    try:
        res_df = tp.query('select * from slice limit 10').as_pandas()
        for index, row in res_df.iterrows():
            print(row['name'])
    except Exception:
        pass

    # Call another function on the loaded trace
    am_metrics = tp.metric(['android_mem'])
    tp.close()
Exemplo n.º 3
0
def main():
  # Parse arguments passed from command line
  parser = argparse.ArgumentParser()
  parser.add_argument(
      "-a",
      "--address",
      help="Address at which trace_processor is being run, e.g. localhost:9001",
      type=str)
  parser.add_argument("-f", "--file", help="Absolute path to trace", type=str)
  args = parser.parse_args()

  # Pass arguments into api to construct the trace processor and load the trace
  if args.address == None and args.file == None:
    raise Exception("You must specify an address or a file path to trace")
  elif args.address == None:
    tp = TraceProcessor(file_path=args.file)
  elif args.file == None:
    tp = TraceProcessor(uri=args.address)
  else:
    tp = TraceProcessor(uri=args.address, file_path=args.file)

  # Call functions on the loaded trace
  res_it = tp.query('select * from slice limit 10')
  for row in res_it:
    print(row.name)
  am_metrics = tp.metric(['android_mem'])
  tp.close()
Exemplo n.º 4
0
    def test_trace_file(self):
        # Get path to trace_processor_shell and construct TraceProcessor
        tp = TraceProcessor(file_path=os.path.join(
            os.environ["ROOT_DIR"], 'test', 'data',
            'example_android_trace_30s.pb'),
                            bin_path=os.environ["SHELL_PATH"])
        qr_iterator = tp.query('select * from slice limit 10')
        dur_result = [
            178646, 119740, 58073, 155000, 173177, 20209377, 3589167, 90104,
            275312, 65313
        ]

        for num, row in enumerate(qr_iterator):
            self.assertEqual(row.type, 'internal_slice')
            self.assertEqual(row.dur, dur_result[num])

        tp.close()
Exemplo n.º 5
0
from trace_processor.api import TraceProcessor  # pip install trace_processor

import os

path = 'test_data/android/trace/trace.pftrace'

if os.path.isfile(path):
    tp = TraceProcessor(file_path=path)

    qr_it = tp.query('SELECT ts, dur, name FROM slice')
    for row in qr_it:
        print(row.ts, row.dur, row.name)