Beispiel #1
0
def PiReportToHTML(ofile,
                   corpus_driver,
                   pi_report_file,
                   query,
                   json_output=False,
                   stop_on_error=False,
                   jobs=1,
                   quiet=False):
    project = perf_insights_project.PerfInsightsProject()

    with open(pi_report_file, 'r') as f:
        pi_report_file_contents = f.read()

    map_function_href, pi_report_element_name = _GetMapFunctionHrefFromPiReport(
        pi_report_file_contents)
    map_file = project.GetAbsPathFromHRef(map_function_href)
    map_function_handle = map_function_handle_module.MapFunctionHandle(
        filename=map_file)

    if map_file == None:
        raise Exception('Could not find %s' % map_function_href)

    results = _MapTraces(corpus_driver, map_function_handle, query,
                         stop_on_error, jobs, quiet)
    if stop_on_error and results.had_failures:
        sys.stderr.write('There were mapping errors. Aborting.')
        return 255

    if json_output:
        json.dump(results.AsDict(), ofile, indent=2)
    else:
        WriteResultsToFile(ofile, project, pi_report_file,
                           pi_report_element_name, results)
    return 0
    def get(self, *args, **kwargs):  # pylint: disable=unused-argument
        map_function = kwargs.pop('map_function')

        map_function_handle = map_function_handle_module.MapFunctionHandle(
            map_function_name=map_function)

        pi_data_dir = kwargs.pop('_pi_data_dir')
        corpus_driver = local_directory_corpus_driver.LocalDirectoryCorpusDriver(
            pi_data_dir)

        # TODO(nduca): pass self.request.params to the map function [maybe].
        query_string = self.request.params.get('corpus_query', 'True')
        query = corpus_query.CorpusQuery.FromString(query_string)

        trace_handles = corpus_driver.GetTraceHandlesMatchingQuery(query)

        self._RunMapper(trace_handles, map_function_handle)
Beispiel #3
0
def Main(argv):
    parser = argparse.ArgumentParser(description='Local bulk trace processing')
    parser.add_argument('trace_directory')
    parser.add_argument('--query')
    parser.add_argument('map_file')

    parser.add_argument('-j', '--jobs', type=int, default=1)
    parser.add_argument('-o', '--output-file')
    parser.add_argument('-s', '--stop-on-error', action='store_true')
    args = parser.parse_args(argv[1:])

    if not os.path.exists(args.trace_directory):
        parser.error('trace_directory does not exist')
    if not os.path.exists(args.map_file):
        parser.error('map does not exist')

    corpus_driver = local_directory_corpus_driver.LocalDirectoryCorpusDriver(
        os.path.abspath(os.path.expanduser(args.trace_directory)))
    if args.query is None:
        query = corpus_query.CorpusQuery.FromString('True')
    else:
        query = corpus_query.CorpusQuery.FromString(args.query)

    if args.output_file:
        ofile = open(args.output_file, 'w')
    else:
        ofile = sys.stdout

    output_formatter = json_output_formatter.JSONOutputFormatter(ofile)

    map_function_handle = map_function_handle_module.MapFunctionHandle(
        filename=os.path.abspath(args.map_file))
    try:
        trace_handles = corpus_driver.GetTraceHandlesMatchingQuery(query)
        runner = map_runner.MapRunner(trace_handles,
                                      map_function_handle,
                                      stop_on_error=args.stop_on_error)
        results = runner.Run(jobs=args.jobs,
                             output_formatters=[output_formatter])
        if not results.had_failures:
            return 0
        else:
            return 255
    finally:
        if ofile != sys.stdout:
            ofile.close()
def _Handle(filename):
    return map_function_handle_module.MapFunctionHandle(filename=filename)