| Index: telemetry/telemetry/internal/results/html_output_formatter.py
|
| diff --git a/telemetry/telemetry/internal/results/html_output_formatter.py b/telemetry/telemetry/internal/results/html_output_formatter.py
|
| index 2cf32dedc72634fa874eabed6a03a70955b61e49..63d4cc728003ed8fd370d214b9781839c83aad4a 100644
|
| --- a/telemetry/telemetry/internal/results/html_output_formatter.py
|
| +++ b/telemetry/telemetry/internal/results/html_output_formatter.py
|
| @@ -7,6 +7,8 @@
|
| import logging
|
| import os
|
| import re
|
| +
|
| +from py_utils import cloud_storage # pylint: disable=import-error
|
|
|
| from telemetry.core import util
|
| from telemetry.internal.results import chart_json_output_formatter
|
| @@ -37,11 +39,13 @@
|
|
|
| # TODO(eakuefner): rewrite template to use Telemetry JSON directly
|
| class HtmlOutputFormatter(output_formatter.OutputFormatter):
|
| - def __init__(self, output_stream, metadata, reset_results, browser_type,
|
| - results_label=None):
|
| + def __init__(self, output_stream, metadata, reset_results, upload_results,
|
| + browser_type, results_label=None, upload_bucket=None):
|
| super(HtmlOutputFormatter, self).__init__(output_stream)
|
| self._metadata = metadata
|
| self._reset_results = reset_results
|
| + self._upload_results = upload_results
|
| + self._upload_bucket = upload_bucket
|
| self._build_time = self._GetBuildTime()
|
| self._combined_results = []
|
| if results_label:
|
| @@ -155,7 +159,8 @@
|
| def Format(self, page_test_results):
|
| if page_test_results.value_set:
|
| html2_formatter = html2_output_formatter.Html2OutputFormatter(
|
| - self._output_stream, self._metadata, self._reset_results)
|
| + self._output_stream, self._metadata, self._reset_results,
|
| + self._upload_results, self._upload_bucket)
|
| html2_formatter.Format(page_test_results)
|
| return
|
|
|
| @@ -176,3 +181,19 @@
|
| html = html.replace('%json_units%', self._GetUnitJson())
|
| html = html.replace('%plugins%', self._GetPlugins())
|
| self._SaveResults(html)
|
| +
|
| + if self._upload_results and self._upload_bucket:
|
| + file_path = os.path.abspath(self._output_stream.name)
|
| + file_name = 'html-results/results-%s' % datetime.datetime.now().strftime(
|
| + '%Y-%m-%d_%H-%M-%S')
|
| + try:
|
| + cloud_storage.Insert(self._upload_bucket, file_name, file_path)
|
| + print 'View online at',
|
| + print 'http://storage.googleapis.com/{bucket}/{path}'.format(
|
| + bucket=self._upload_bucket, path=file_name)
|
| + except cloud_storage.PermissionError as e:
|
| + logging.error('Cannot upload profiling files to cloud storage due to '
|
| + ' permission error: %s' % e.message)
|
| + print
|
| + print 'View result at file://%s' % os.path.abspath(
|
| + self._output_stream.name)
|
|
|