| Index: scripts/slave/runtest.py
|
| diff --git a/scripts/slave/runtest.py b/scripts/slave/runtest.py
|
| index a439dfcbe15b204bcdf3179c22cfe3b915547fc6..b16d6149206ce5fd3f42d02be66603f5e70c22ba 100755
|
| --- a/scripts/slave/runtest.py
|
| +++ b/scripts/slave/runtest.py
|
| @@ -701,6 +701,43 @@ def _ResultsDashboardDict(options):
|
| return fields
|
|
|
|
|
| +def _GenerateDashboardJson(log_processor, args):
|
| + """Generates chartjson to send to the dashboard.
|
| +
|
| + Args:
|
| + log_processor: An instance of a log processor class, which has been used to
|
| + process the test output, so it contains the test results.
|
| + args: Dict of additional args to send to results_dashboard.
|
| + """
|
| + assert log_processor.IsChartJson()
|
| +
|
| + chart_json = log_processor.ChartJson()
|
| + if chart_json:
|
| + return results_dashboard.MakeDashboardJsonV1(
|
| + chart_json,
|
| + args['revisions'], args['system'], args['mastername'],
|
| + args['buildername'], args['buildnumber'],
|
| + args['supplemental_columns'], log_processor.IsReferenceBuild())
|
| + return None
|
| +
|
| +
|
| +def _WriteChartJsonToOutput(chartjson_file, log_processor, args):
|
| + """Writes the dashboard chartjson to a file for display in the waterfall.
|
| +
|
| + Args:
|
| + chartjson_file: Path to the file to write the chartjson.
|
| + log_processor: An instance of a log processor class, which has been used to
|
| + process the test output, so it contains the test results.
|
| + args: Dict of additional args to send to results_dashboard.
|
| + """
|
| + assert log_processor.IsChartJson()
|
| +
|
| + chartjson_data = _GenerateDashboardJson(log_processor, args)
|
| +
|
| + with open(chartjson_file, 'w') as f:
|
| + json.dump(chartjson_data, f)
|
| +
|
| +
|
| def _SendResultsToDashboard(log_processor, args):
|
| """Sends results from a log processor instance to the dashboard.
|
|
|
| @@ -716,14 +753,8 @@ def _SendResultsToDashboard(log_processor, args):
|
|
|
| results = None
|
| if log_processor.IsChartJson():
|
| - chart_json = log_processor.ChartJson()
|
| - if chart_json:
|
| - results = results_dashboard.MakeDashboardJsonV1(
|
| - chart_json,
|
| - args['revisions'], args['system'], args['mastername'],
|
| - args['buildername'], args['buildnumber'],
|
| - args['supplemental_columns'], log_processor.IsReferenceBuild())
|
| - else:
|
| + results = _GenerateDashboardJson(log_processor, args)
|
| + if not results:
|
| print 'Error: No json output from telemetry.'
|
| print '@@@STEP_FAILURE@@@'
|
| log_processor.Cleanup()
|
| @@ -1120,6 +1151,11 @@ def _MainMac(options, args, extra_env):
|
| options.factory_properties.get('full_test_name'),
|
| perf_dashboard_id=options.perf_dashboard_id)
|
|
|
| + if options.chartjson_file and telemetry_info:
|
| + _WriteChartJsonToOutput(options.chartjson_file,
|
| + log_processor,
|
| + _ResultsDashboardDict(options))
|
| +
|
| if options.results_url:
|
| _SendResultsToDashboard(log_processor, _ResultsDashboardDict(options))
|
|
|
| @@ -1392,6 +1428,11 @@ def _MainLinux(options, args, extra_env):
|
| options.factory_properties.get('full_test_name'),
|
| perf_dashboard_id=options.perf_dashboard_id)
|
|
|
| + if options.chartjson_file and telemetry_info:
|
| + _WriteChartJsonToOutput(options.chartjson_file,
|
| + log_processor,
|
| + _ResultsDashboardDict(options))
|
| +
|
| if options.results_url:
|
| _SendResultsToDashboard(log_processor, _ResultsDashboardDict(options))
|
|
|
| @@ -1509,6 +1550,11 @@ def _MainWin(options, args, extra_env):
|
| options.factory_properties.get('full_test_name'),
|
| perf_dashboard_id=options.perf_dashboard_id)
|
|
|
| + if options.chartjson_file and telemetry_info:
|
| + _WriteChartJsonToOutput(options.chartjson_file,
|
| + log_processor,
|
| + _ResultsDashboardDict(options))
|
| +
|
| if options.results_url:
|
| _SendResultsToDashboard(log_processor, _ResultsDashboardDict(options))
|
|
|
| @@ -1699,6 +1745,8 @@ def main():
|
| help='Options to pass to sharding_supervisor.')
|
| option_parser.add_option('-o', '--results-directory', default='',
|
| help='output results directory for JSON file.')
|
| + option_parser.add_option('--chartjson-file', default='',
|
| + help='File to dump chartjson results.')
|
| option_parser.add_option('--builder-name', default=None,
|
| help='The name of the builder running this script.')
|
| option_parser.add_option('--slave-name', default=None,
|
|
|