Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(9)

Side by Side Diff: telemetry/telemetry/internal/results/html_output_formatter.py

Issue 2446853002: Write results2.html for TBMv2 benchmarks if --output-format=html. (Closed)
Patch Set: restore GetCombinedResults for test Created 4 years, 1 month ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « no previous file | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 # Copyright 2014 The Chromium Authors. All rights reserved. 1 # Copyright 2014 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 4
5 import datetime 5 import datetime
6 import json 6 import json
7 import logging 7 import logging
8 import os 8 import os
9 import re 9 import re
10 10
11 from py_utils import cloud_storage # pylint: disable=import-error 11 from py_utils import cloud_storage # pylint: disable=import-error
12 12
13 from telemetry.core import util 13 from telemetry.core import util
14 from telemetry.internal.results import chart_json_output_formatter 14 from telemetry.internal.results import chart_json_output_formatter
15 from telemetry.internal.results import html2_output_formatter
15 from telemetry.internal.results import output_formatter 16 from telemetry.internal.results import output_formatter
16 from telemetry import value as value_module 17 from telemetry import value as value_module
17 from telemetry.value import list_of_scalar_values 18 from telemetry.value import list_of_scalar_values
18 19
19 20
20 _TEMPLATE_HTML_PATH = os.path.join( 21 _TEMPLATE_HTML_PATH = os.path.join(
21 util.GetTelemetryDir(), 'support', 'html_output', 'results-template.html') 22 util.GetTelemetryDir(), 'support', 'html_output', 'results-template.html')
22 _JS_PLUGINS = [os.path.join('flot', 'jquery.flot.min.js'), 23 _JS_PLUGINS = [os.path.join('flot', 'jquery.flot.min.js'),
23 os.path.join('WebKit', 'PerformanceTests', 'resources', 24 os.path.join('WebKit', 'PerformanceTests', 'resources',
24 'jquery.tablesorter.min.js'), 25 'jquery.tablesorter.min.js'),
(...skipping 13 matching lines...) Expand all
38 39
39 # TODO(eakuefner): rewrite template to use Telemetry JSON directly 40 # TODO(eakuefner): rewrite template to use Telemetry JSON directly
40 class HtmlOutputFormatter(output_formatter.OutputFormatter): 41 class HtmlOutputFormatter(output_formatter.OutputFormatter):
41 def __init__(self, output_stream, metadata, reset_results, upload_results, 42 def __init__(self, output_stream, metadata, reset_results, upload_results,
42 browser_type, results_label=None): 43 browser_type, results_label=None):
43 super(HtmlOutputFormatter, self).__init__(output_stream) 44 super(HtmlOutputFormatter, self).__init__(output_stream)
44 self._metadata = metadata 45 self._metadata = metadata
45 self._reset_results = reset_results 46 self._reset_results = reset_results
46 self._upload_results = upload_results 47 self._upload_results = upload_results
47 self._build_time = self._GetBuildTime() 48 self._build_time = self._GetBuildTime()
48 self._existing_results = self._ReadExistingResults(output_stream) 49 self._combined_results = []
49 if results_label: 50 if results_label:
50 self._results_label = results_label 51 self._results_label = results_label
51 else: 52 else:
52 self._results_label = '%s (%s)' % ( 53 self._results_label = '%s (%s)' % (
53 metadata.name, _ShortDatetimeInEs5CompatibleFormat(self._build_time)) 54 metadata.name, _ShortDatetimeInEs5CompatibleFormat(self._build_time))
54 self._result = { 55 self._result = {
55 'buildTime': _DatetimeInEs5CompatibleFormat(self._build_time), 56 'buildTime': _DatetimeInEs5CompatibleFormat(self._build_time),
56 'label': self._results_label, 57 'label': self._results_label,
57 'platform': browser_type, 58 'platform': browser_type,
58 'tests': {} 59 'tests': {}
(...skipping 86 matching lines...) Expand 10 before | Expand all | Expand 10 after
145 value.units, result_type, std) 146 value.units, result_type, std)
146 147
147 @property 148 @property
148 def _test_name(self): 149 def _test_name(self):
149 return self._metadata.name 150 return self._metadata.name
150 151
151 def GetResults(self): 152 def GetResults(self):
152 return self._result 153 return self._result
153 154
154 def GetCombinedResults(self): 155 def GetCombinedResults(self):
155 all_results = list(self._existing_results) 156 return self._combined_results
156 all_results.append(self.GetResults())
157 return all_results
158 157
159 def Format(self, page_test_results): 158 def Format(self, page_test_results):
159 if page_test_results.value_set:
160 html2_formatter = html2_output_formatter.Html2OutputFormatter(
161 self._output_stream, self._reset_results, self._upload_results)
162 html2_formatter.Format(page_test_results)
163 return
164
160 chart_json_dict = chart_json_output_formatter.ResultsAsChartDict( 165 chart_json_dict = chart_json_output_formatter.ResultsAsChartDict(
161 self._metadata, page_test_results.all_page_specific_values, 166 self._metadata, page_test_results.all_page_specific_values,
162 page_test_results.all_summary_values) 167 page_test_results.all_summary_values)
163 168
164 self._TranslateChartJson(chart_json_dict) 169 self._TranslateChartJson(chart_json_dict)
165 self._PrintPerfResult('telemetry_page_measurement_results', 'num_failed', 170 self._PrintPerfResult('telemetry_page_measurement_results', 'num_failed',
166 [len(page_test_results.failures)], 'count', 171 [len(page_test_results.failures)], 'count',
167 'unimportant') 172 'unimportant')
168 173
174 self._combined_results = self._ReadExistingResults(self._output_stream)
175 self._combined_results.append(self._result)
176
169 html = self._GetHtmlTemplate() 177 html = self._GetHtmlTemplate()
170 html = html.replace('%json_results%', json.dumps(self.GetCombinedResults())) 178 html = html.replace('%json_results%', json.dumps(self.GetCombinedResults()))
171 html = html.replace('%json_units%', self._GetUnitJson()) 179 html = html.replace('%json_units%', self._GetUnitJson())
172 html = html.replace('%plugins%', self._GetPlugins()) 180 html = html.replace('%plugins%', self._GetPlugins())
173 self._SaveResults(html) 181 self._SaveResults(html)
174 182
175 if self._upload_results: 183 if self._upload_results:
176 file_path = os.path.abspath(self._output_stream.name) 184 file_path = os.path.abspath(self._output_stream.name)
177 file_name = 'html-results/results-%s' % datetime.datetime.now().strftime( 185 file_name = 'html-results/results-%s' % datetime.datetime.now().strftime(
178 '%Y-%m-%d_%H-%M-%S') 186 '%Y-%m-%d_%H-%M-%S')
179 try: 187 try:
180 cloud_storage.Insert(cloud_storage.PUBLIC_BUCKET, file_name, file_path) 188 cloud_storage.Insert(cloud_storage.PUBLIC_BUCKET, file_name, file_path)
181 print 189 print
182 print ('View online at ' 190 print ('View online at '
183 'http://storage.googleapis.com/chromium-telemetry/%s' 191 'http://storage.googleapis.com/chromium-telemetry/%s'
184 % file_name) 192 % file_name)
185 except cloud_storage.PermissionError as e: 193 except cloud_storage.PermissionError as e:
186 logging.error('Cannot upload profiling files to cloud storage due to ' 194 logging.error('Cannot upload profiling files to cloud storage due to '
187 ' permission error: %s' % e.message) 195 ' permission error: %s' % e.message)
188 print 196 print
189 print 'View result at file://%s' % os.path.abspath( 197 print 'View result at file://%s' % os.path.abspath(
190 self._output_stream.name) 198 self._output_stream.name)
OLDNEW
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698