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)
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)))
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)
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)
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
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)))