Chromium Code Reviews| Index: tools/telemetry/telemetry/results/results_options.py |
| diff --git a/tools/telemetry/telemetry/results/results_options.py b/tools/telemetry/telemetry/results/results_options.py |
| index ebb71320df805e08912ffcccf5ebc1a8d2fe11b6..9224bb0763923a8957b09ef746a963b2203f7ea8 100644 |
| --- a/tools/telemetry/telemetry/results/results_options.py |
| +++ b/tools/telemetry/telemetry/results/results_options.py |
| @@ -33,6 +33,8 @@ def AddResultsOptions(parser): |
| dest='output_file', |
| default=None, |
| help='Redirects output to a file. Defaults to stdout.') |
| + group.add_option('--output-dir', default=None, |
| + help='Where to save output data after the run.') |
|
nednguyen
2014/10/01 04:37:36
It looks like output_file takes precedence over ou
ariblue
2014/10/01 17:21:09
Nope. You can't specify both. Throws a parser erro
|
| group.add_option('--output-trace-tag', |
| default='', |
| help='Append a tag to the key of each result trace.') |
| @@ -49,7 +51,19 @@ def AddResultsOptions(parser): |
| parser.add_option_group(group) |
| -def _GetOutputStream(output_format, output_file): |
| +def ProcessCommandLineArgs(parser, args): |
| + # TODO(chrishenry): It doesn't make sense to have a single output_file flag |
| + # with multiple output formatters. We should explore other possible options: |
| + # - Have an output_file per output formatter |
| + # - Have --output-dir instead of --output-file |
| + if len(args.output_formats) > 1 and args.output_file: |
| + parser.error('Cannot specify --output with multiple --output-format flags.') |
| + |
| + if args.output_dir and args.output_file: |
| + parser.error('Cannot specify both --output and --output-dir.') |
| + |
| + |
| +def _GetOutputStream(output_format, output_file, output_dir): |
| assert output_format in _OUTPUT_FORMAT_CHOICES, 'Must specify a valid format.' |
| assert output_format not in ('gtest', 'none'), ( |
| 'Cannot set stream for \'gtest\' or \'none\' output formats.') |
| @@ -57,7 +71,8 @@ def _GetOutputStream(output_format, output_file): |
| if output_file is None: |
| if output_format != 'html' and output_format != 'json': |
| return sys.stdout |
| - output_file = os.path.join(util.GetBaseDir(), 'results.' + output_format) |
| + directory = output_dir if output_dir is not None else util.GetBaseDir() |
| + output_file = os.path.join(directory, 'results.' + output_format) |
| output_file = os.path.expanduser(output_file) |
| open(output_file, 'a').close() # Create file if it doesn't exist. |
| @@ -80,20 +95,13 @@ def CreateResults(benchmark_metadata, options): |
| if not options.output_formats: |
| options.output_formats = [_OUTPUT_FORMAT_CHOICES[0]] |
| - # TODO(chrishenry): It doesn't make sense to have a single output_file flag |
| - # with multiple output formatters. We should explore other possible options: |
| - # - Have an output_file per output formatter |
| - # - Have --output-dir instead of --output-file |
| - if len(options.output_formats) != 1 and options.output_file: |
| - raise Exception('Cannot specify output_file flag with multiple output ' |
| - 'formats.') |
| - |
| output_formatters = [] |
| for output_format in options.output_formats: |
| if output_format == 'none' or output_format == "gtest" or options.chartjson: |
| continue |
| - output_stream = _GetOutputStream(output_format, options.output_file) |
| + output_stream = _GetOutputStream( |
| + output_format, options.output_file, options.output_dir) |
| if output_format == 'csv': |
| output_formatters.append(csv_output_formatter.CsvOutputFormatter( |
| output_stream)) |