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

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

Issue 3010193002: Remove CsvPivotTableOutputFormatter from telemetry. (Closed)
Patch Set: Created 3 years, 3 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
« no previous file with comments | « no previous file | telemetry/telemetry/internal/results/csv_pivot_table_output_formatter_unittest.py » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
(Empty)
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
3 # found in the LICENSE file.
4
5 import csv
6
7 from telemetry.internal.results import output_formatter
8 from telemetry.value import scalar
9 from telemetry.value import trace
10
11
12 class CsvPivotTableOutputFormatter(output_formatter.OutputFormatter):
13 """Output the results as CSV suitable for reading into a spreadsheet.
14
15 This will write a header row, and one row for each value. Each value row
16 contains the value and unit, identifies the value (story_set, page, name), and
17 (optionally) data from --output-trace-tag. This format matches what
18 spreadsheet programs expect as input for a "pivot table".
19
20 A trace tag (--output-trace-tag) can be used to tag each value, to allow
21 easy combination of the resulting CSVs from several runs.
22 If the trace_tag contains a comma, it will be written as several
23 comma-separated values.
24
25 This class only processes scalar values.
26 """
27
28 FIELDS = ['story_set', 'page', 'name', 'value', 'units', 'run_index']
29
30 def __init__(self, output_stream, trace_tag=''):
31 super(CsvPivotTableOutputFormatter, self).__init__(output_stream)
32 self._trace_tag = trace_tag
33
34 def Format(self, page_test_results):
35 csv_writer = csv.writer(self.output_stream)
36
37 # Observe trace_tag. Use comma to split up the trace tag.
38 tag_values = self._trace_tag.split(',')
39 tag_values = [x for x in tag_values if x] # filter empty list entries
40 tag_headers = ['trace_tag_%d' % i for i in range(len(tag_values))]
41
42 # Write header.
43 csv_writer.writerow(self.FIELDS + tag_headers)
44
45 # Write all values. Each row contains a value + page-level metadata.
46 for run in page_test_results.all_page_runs:
47 run_index = page_test_results.all_page_runs.index(run)
48 page_dict = {
49 'page': run.story.name,
50 'story_set': run.story.page_set.Name(),
51 'run_index': run_index,
52 }
53 for value in run.values:
54 if (isinstance(value, scalar.ScalarValue) or
55 isinstance(value, trace.TraceValue)):
56 value_dict = {
57 'name': value.name,
58 'value': value.value,
59 'units': value.units,
60 }
61 value_dict.update(page_dict.items())
62 csv_writer.writerow(
63 [value_dict[field] for field in self.FIELDS] + tag_values)
OLDNEW
« no previous file with comments | « no previous file | telemetry/telemetry/internal/results/csv_pivot_table_output_formatter_unittest.py » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698