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

Side by Side Diff: tools/telemetry/telemetry/csv_page_benchmark_results.py

Issue 12278015: [Telemetry] Reorganize everything. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Re-add shebangs. Created 7 years, 10 months 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 | Annotate | Revision Log
OLDNEW
(Empty)
1 # Copyright (c) 2012 The Chromium Authors. All rights reserved.
2 # Use of this source code is governed by a BSD-style license that can be
3 # found in the LICENSE file.
4 from telemetry.page_benchmark_results import PageBenchmarkResults
5
6 class CsvPageBenchmarkResults(PageBenchmarkResults):
7 def __init__(self, results_writer, output_after_every_page):
8 super(CsvPageBenchmarkResults, self).__init__()
9 self._results_writer = results_writer
10 self._did_output_header = False
11 self._header_names_written_to_writer = None
12 self._output_after_every_page = output_after_every_page
13
14 def DidMeasurePage(self):
15 assert self.values_for_current_page, 'Failed to call WillMeasurePage'
16 if not self._output_after_every_page:
17 super(CsvPageBenchmarkResults, self).DidMeasurePage()
18 return
19
20 if not self._did_output_header:
21 self._OutputHeader()
22 else:
23 self._ValidateOutputNamesForCurrentPage()
24
25 self._OutputValuesForPage(self.values_for_current_page)
26
27 super(CsvPageBenchmarkResults, self).DidMeasurePage()
28
29 def PrintSummary(self, trace_tag):
30 if not self._output_after_every_page:
31 self._OutputHeader()
32 for page_values in self.page_results:
33 self._OutputValuesForPage(page_values)
34
35 super(CsvPageBenchmarkResults, self).PrintSummary(trace_tag)
36
37 def _ValidateOutputNamesForCurrentPage(self):
38 assert self._did_output_header
39 current_page_measurement_names = \
40 set(self.values_for_current_page.measurement_names)
41 header_names_written_to_writer = \
42 set(self._header_names_written_to_writer)
43 if header_names_written_to_writer == current_page_measurement_names:
44 return
45 assert False, """To use CsvPageBenchmarkResults, you must add the same
46 result names for every page. In this case, first page output:
47 %s
48
49 Thus, all subsequent pages must output this as well. Instead, the current page
50 output:
51 %s
52
53 Change your test to produce the same thing each time, or modify
54 MultiPageBenchmark.results_are_the_same_on_every_page to return False.
55 """ % (repr(header_names_written_to_writer),
56 repr(current_page_measurement_names))
57
58 def _OutputHeader(self):
59 assert not self._did_output_header
60 all_measurement_names = list(
61 self.all_measurements_that_have_been_seen.keys())
62 all_measurement_names.sort()
63 self._did_output_header = True
64 self._header_names_written_to_writer = list(all_measurement_names)
65
66 row = ['url']
67 for measurement_name in all_measurement_names:
68 measurement_data = \
69 self.all_measurements_that_have_been_seen[measurement_name]
70 row.append('%s (%s)' % (measurement_name, measurement_data['units']))
71 self._results_writer.writerow(row)
72
73 def _OutputValuesForPage(self, page_values):
74 row = [page_values.page.url]
75 for measurement_name in self._header_names_written_to_writer:
76 value = page_values.FindValueByMeasurementName(measurement_name)
77 if value:
78 row.append('%s' % value.output_value)
79 else:
80 row.append('-')
81 self._results_writer.writerow(row)
OLDNEW
« no previous file with comments | « tools/telemetry/telemetry/crx_id.py ('k') | tools/telemetry/telemetry/csv_page_benchmark_results_unittest.py » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698