OLD | NEW |
1 # Copyright (c) 2015 The Chromium Authors. All rights reserved. | 1 # Copyright (c) 2015 The Chromium Authors. All rights reserved. |
2 # Use of this source code is governed by a BSD-style license that can be | 2 # Use of this source code is governed by a BSD-style license that can be |
3 # found in the LICENSE file. | 3 # found in the LICENSE file. |
4 import argparse | 4 import argparse |
5 import os | 5 import os |
6 import sys | 6 import sys |
7 import traceback | 7 import traceback |
8 | 8 |
9 import perf_insights | 9 import perf_insights |
10 from perf_insights import local_directory_corpus_driver | 10 from perf_insights import local_directory_corpus_driver |
(...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
49 | 49 |
50 | 50 |
51 def Main(argv): | 51 def Main(argv): |
52 parser = argparse.ArgumentParser( | 52 parser = argparse.ArgumentParser( |
53 description='Bulk trace processing') | 53 description='Bulk trace processing') |
54 parser.add_argument( | 54 parser.add_argument( |
55 '-c', '--corpus', | 55 '-c', '--corpus', |
56 choices=_CORPUS_DRIVERS.keys(), | 56 choices=_CORPUS_DRIVERS.keys(), |
57 default=_CORPUS_DRIVER_DEFAULT) | 57 default=_CORPUS_DRIVER_DEFAULT) |
58 parser.add_argument('--query') | 58 parser.add_argument('--query') |
59 parser.add_argument('map_file') | 59 parser.add_argument('map_function_name') |
| 60 parser.add_argument('--map-file') |
60 | 61 |
| 62 parser.add_argument('--no-vulcanize', dest='vulcanize', |
| 63 action='store_false', default=True) |
61 parser.add_argument('-j', '--jobs', type=int, default=1) | 64 parser.add_argument('-j', '--jobs', type=int, default=1) |
62 parser.add_argument('-o', '--output-file') | 65 parser.add_argument('-o', '--output-file') |
63 parser.add_argument('-s', '--stop-on-error', | 66 parser.add_argument('-s', '--stop-on-error', |
64 action='store_true') | 67 action='store_true') |
65 | 68 |
66 for k, v in _CORPUS_DRIVERS.iteritems(): | 69 for k, v in _CORPUS_DRIVERS.iteritems(): |
67 if not v: | 70 if not v: |
68 continue | 71 continue |
69 parser_group = parser.add_argument_group(k) | 72 parser_group = parser.add_argument_group(k) |
70 driver_cls = v['class'] | 73 driver_cls = v['class'] |
(...skipping 11 matching lines...) Expand all Loading... |
82 corpus_descriptions = '\n'.join( | 85 corpus_descriptions = '\n'.join( |
83 ['%s: %s' % (k, v['description']) | 86 ['%s: %s' % (k, v['description']) |
84 for k, v in _CORPUS_DRIVERS.iteritems() if v] | 87 for k, v in _CORPUS_DRIVERS.iteritems() if v] |
85 ) | 88 ) |
86 parser.exit('Valid drivers:\n\n%s\n' % corpus_descriptions) | 89 parser.exit('Valid drivers:\n\n%s\n' % corpus_descriptions) |
87 | 90 |
88 cls = _CORPUS_DRIVERS[corpus]['class'] | 91 cls = _CORPUS_DRIVERS[corpus]['class'] |
89 init_args = cls.CheckAndCreateInitArguments(parser, args) | 92 init_args = cls.CheckAndCreateInitArguments(parser, args) |
90 corpus_driver = cls(**init_args) | 93 corpus_driver = cls(**init_args) |
91 | 94 |
92 if not os.path.exists(args.map_file): | 95 if args.map_file and not os.path.exists(args.map_file): |
93 parser.error('Map does not exist.') | 96 parser.error('Map does not exist.') |
94 | 97 |
95 if args.query == 'help': | 98 if args.query == 'help': |
96 parser.exit(_CORPUS_QUERY_HELP) | 99 parser.exit(_CORPUS_QUERY_HELP) |
97 elif args.query is None: | 100 elif args.query is None: |
98 query = corpus_query.CorpusQuery.FromString('True') | 101 query = corpus_query.CorpusQuery.FromString('True') |
99 else: | 102 else: |
100 query = corpus_query.CorpusQuery.FromString(args.query) | 103 query = corpus_query.CorpusQuery.FromString(args.query) |
101 | 104 |
102 if args.output_file: | 105 if args.output_file: |
103 ofile = open(args.output_file, 'w') | 106 ofile = open(args.output_file, 'w') |
104 else: | 107 else: |
105 ofile = sys.stdout | 108 ofile = sys.stdout |
106 | 109 |
107 output_formatter = json_output_formatter.JSONOutputFormatter(ofile) | 110 output_formatter = json_output_formatter.JSONOutputFormatter(ofile) |
108 | 111 |
| 112 map_file_path = None |
| 113 if args.map_file: |
| 114 map_file_path = os.path.abspath(args.map_file) |
109 map_function_handle = map_function_handle_module.MapFunctionHandle( | 115 map_function_handle = map_function_handle_module.MapFunctionHandle( |
110 filename=os.path.abspath(args.map_file)) | 116 filename=map_file_path, map_function_name=args.map_function_name) |
111 try: | 117 try: |
112 trace_handles = corpus_driver.GetTraceHandlesMatchingQuery(query) | 118 trace_handles = corpus_driver.GetTraceHandlesMatchingQuery(query) |
113 runner = map_runner.MapRunner(trace_handles, map_function_handle, | 119 runner = map_runner.MapRunner(trace_handles, map_function_handle, |
114 stop_on_error=args.stop_on_error) | 120 stop_on_error=args.stop_on_error, |
| 121 vulcanize=args.vulcanize) |
115 results = runner.Run(jobs=args.jobs, output_formatters=[output_formatter]) | 122 results = runner.Run(jobs=args.jobs, output_formatters=[output_formatter]) |
116 if not results.had_failures: | 123 if not results.had_failures: |
117 return 0 | 124 return 0 |
118 else: | 125 else: |
119 return 255 | 126 return 255 |
120 finally: | 127 finally: |
121 if ofile != sys.stdout: | 128 if ofile != sys.stdout: |
122 ofile.close() | 129 ofile.close() |
OLD | NEW |