Exemplo n.º 1
0
def read_trace(logname, root_dir, cwd_dir, product_dir):
  # Resolve any symlink
  root_dir = os.path.realpath(root_dir)
  api = trace_inputs.get_api()
  _, _, _, _, simplified = trace_inputs.load_trace(logname, root_dir, api)
  variables = trace_inputs.generate_dict(simplified, cwd_dir, product_dir)
  trace_inputs.pretty_print(variables, sys.stdout)
Exemplo n.º 2
0
def read_trace(logname, root_dir, cwd_dir, product_dir):
    # Resolve any symlink
    root_dir = os.path.realpath(root_dir)
    api = trace_inputs.get_api()
    _, _, _, _, simplified = trace_inputs.load_trace(logname, root_dir, api)
    variables = trace_inputs.generate_dict(simplified, cwd_dir, product_dir)
    trace_inputs.pretty_print(variables, sys.stdout)
Exemplo n.º 3
0
def CMDread(args):
  """Reads the trace file generated with command 'trace'.

  Ignores --outdir.
  """
  parser = OptionParserIsolate(command='read', require_result=False)
  options, _ = parser.parse_args(args)
  complete_state = load_complete_state(options, NO_INFO)

  api = trace_inputs.get_api()
  logfile = complete_state.result_file + '.log'
  if not os.path.isfile(logfile):
    raise ExecutionError(
        'No log file \'%s\' to read, did you forget to \'trace\'?' % logfile)
  try:
    results = trace_inputs.load_trace(
        logfile, complete_state.root_dir, api, isolate_common.default_blacklist)
    value = isolate_common.generate_isolate(
        results.existent,
        complete_state.root_dir,
        complete_state.saved_state.variables,
        complete_state.result.relative_cwd)
    isolate_common.pretty_print(value, sys.stdout)
  except trace_inputs.TracingFailure, e:
    raise ExecutionError(
        'Reading traces failed for: %s\n%s' %
          (' '.join(complete_state.result.command), str(e)))
Exemplo n.º 4
0
def trace_test_case(test_case, executable, root_dir, cwd_dir, product_dir,
                    leak):
    """Traces a single test case and returns the .isolate compatible variable
  dict.
  """
    # Resolve any symlink
    root_dir = os.path.realpath(root_dir)

    api = trace_inputs.get_api()
    cmd = [executable, '--gtest_filter=%s' % test_case]

    if not leak:
        f, logname = tempfile.mkstemp(prefix='trace')
        os.close(f)
    else:
        logname = '%s.%s.log' % (executable, test_case.replace('/', '-'))
        f = None

    try:
        simplified = None
        processes = 0
        for i in range(10):
            start = time.time()
            returncode, output = trace_inputs.trace(
                logname, cmd, os.path.join(root_dir, cwd_dir), api, True)
            if returncode and i < 5:
                print '\nFailed while running: %s' % ' '.join(cmd)
                continue
            duration = time.time() - start
            try:
                results, simplified = trace_inputs.load_trace(
                    logname, root_dir, api)
                break
            except Exception:
                print '\nFailed loading the trace for: %s' % ' '.join(cmd)
        if simplified:
            variables = trace_inputs.generate_dict(simplified, cwd_dir,
                                                   product_dir)
        else:
            variables = {}
        return {
            'case': test_case,
            'duration': duration,
            'output': output,
            'processes': processes,
            'result': returncode,
            'variables': variables,
            'results': results.flatten(),
        }
    finally:
        if f:
            os.remove(logname)
Exemplo n.º 5
0
def trace_test_case(
    test_case, executable, root_dir, cwd_dir, product_dir, leak):
  """Traces a single test case and returns the .isolate compatible variable
  dict.
  """
  # Resolve any symlink
  root_dir = os.path.realpath(root_dir)

  api = trace_inputs.get_api()
  cmd = [executable, '--gtest_filter=%s' % test_case]

  if not leak:
    f, logname = tempfile.mkstemp(prefix='trace')
    os.close(f)
  else:
    logname = '%s.%s.log' % (executable, test_case.replace('/', '-'))
    f = None

  try:
    simplified = None
    processes = 0
    for i in range(10):
      start = time.time()
      returncode, output = trace_inputs.trace(
          logname, cmd, os.path.join(root_dir, cwd_dir), api, True)
      if returncode and i < 5:
        print '\nFailed while running: %s' % ' '.join(cmd)
        continue
      duration = time.time() - start
      try:
        results, simplified = trace_inputs.load_trace(logname, root_dir, api)
        break
      except Exception:
        print '\nFailed loading the trace for: %s' % ' '.join(cmd)
    if simplified:
      variables = trace_inputs.generate_dict(simplified, cwd_dir, product_dir)
    else:
      variables = {}
    return {
      'case': test_case,
      'duration': duration,
      'output': output,
      'processes': processes,
      'result': returncode,
      'variables': variables,
      'results': results.flatten(),
    }
  finally:
    if f:
      os.remove(logname)
Exemplo n.º 6
0
def MODEread(_outdir, state):
    """Reads the trace file generated with --mode=trace."""
    api = trace_inputs.get_api()
    logfile = state.result_file + '.log'
    if not os.path.isfile(logfile):
        return 1
    try:
        results = trace_inputs.load_trace(logfile, state.root_dir, api,
                                          isolate_common.default_blacklist)
        value = isolate_common.generate_isolate(results.existent,
                                                state.root_dir,
                                                state.saved_state.variables,
                                                state.result.relative_cwd)
        isolate_common.pretty_print(value, sys.stdout)
        return 0
    except trace_inputs.TracingFailure, e:
        print >> sys.stderr, ('\nReading traces failed for: %s' %
                              ' '.join(state.result.command))
        print >> sys.stderr, str(e)
        return 1
Exemplo n.º 7
0
def read(complete_state):
  """Reads a trace and returns the .isolate dictionary."""
  api = trace_inputs.get_api()
  logfile = complete_state.result_file + '.log'
  if not os.path.isfile(logfile):
    raise ExecutionError(
        'No log file \'%s\' to read, did you forget to \'trace\'?' % logfile)
  try:
    results = trace_inputs.load_trace(
        logfile, complete_state.root_dir, api, isolate_common.default_blacklist)
    tracked, touched = isolate_common.split_touched(results.existent)
    value = isolate_common.generate_isolate(
        tracked,
        [],
        touched,
        complete_state.root_dir,
        complete_state.saved_state.variables,
        complete_state.result.relative_cwd)
    return value
  except trace_inputs.TracingFailure, e:
    raise ExecutionError(
        'Reading traces failed for: %s\n%s' %
          (' '.join(complete_state.result.command), str(e)))