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

Side by Side Diff: tools/telemetry/telemetry/value/scalar.py

Issue 1313243003: [Telemetry] Introduce SummarizableValue. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Rebase Created 5 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
OLDNEW
1 # Copyright 2013 The Chromium Authors. All rights reserved. 1 # Copyright 2013 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 numbers 5 import numbers
6 6
7 from telemetry import value as value_module 7 from telemetry import value as value_module
8 from telemetry.value import list_of_scalar_values 8 from telemetry.value import list_of_scalar_values
9 from telemetry.value import none_values 9 from telemetry.value import none_values
10 from telemetry.value import summarizable
10 11
11 12
12 class ScalarValue(value_module.Value): 13 class ScalarValue(summarizable.SummarizableValue):
13 def __init__(self, page, name, units, value, important=True, 14 def __init__(self, page, name, units, value, important=True,
14 description=None, tir_label=None, 15 description=None, tir_label=None,
15 none_value_reason=None): 16 none_value_reason=None, improvement_direction=None):
16 """A single value (float or integer) result from a test. 17 """A single value (float or integer) result from a test.
17 18
18 A test that counts the number of DOM elements in a page might produce a 19 A test that counts the number of DOM elements in a page might produce a
19 scalar value: 20 scalar value:
20 ScalarValue(page, 'num_dom_elements', 'count', num_elements) 21 ScalarValue(page, 'num_dom_elements', 'count', num_elements)
21 """ 22 """
22 super(ScalarValue, self).__init__(page, name, units, important, description, 23 super(ScalarValue, self).__init__(page, name, units, important, description,
23 tir_label) 24 tir_label, improvement_direction)
24 assert value is None or isinstance(value, numbers.Number) 25 assert value is None or isinstance(value, numbers.Number)
25 none_values.ValidateNoneValueReason(value, none_value_reason) 26 none_values.ValidateNoneValueReason(value, none_value_reason)
26 self.value = value 27 self.value = value
27 self.none_value_reason = none_value_reason 28 self.none_value_reason = none_value_reason
28 29
29 def __repr__(self): 30 def __repr__(self):
30 if self.page: 31 if self.page:
31 page_name = self.page.display_name 32 page_name = self.page.display_name
32 else: 33 else:
33 page_name = 'None' 34 page_name = 'None'
34 return ('ScalarValue(%s, %s, %s, %s, important=%s, description=%s, ' 35 return ('ScalarValue(%s, %s, %s, %s, important=%s, description=%s, '
35 'tir_label=%s') % ( 36 'tir_label=%s, improvement_direction=%s') % (
36 page_name, 37 page_name,
37 self.name, 38 self.name,
38 self.units, 39 self.units,
39 self.value, 40 self.value,
40 self.important, 41 self.important,
41 self.description, 42 self.description,
42 self.tir_label) 43 self.tir_label,
44 self.improvment_direction)
43 45
44 def GetBuildbotDataType(self, output_context): 46 def GetBuildbotDataType(self, output_context):
45 if self._IsImportantGivenOutputIntent(output_context): 47 if self._IsImportantGivenOutputIntent(output_context):
46 return 'default' 48 return 'default'
47 return 'unimportant' 49 return 'unimportant'
48 50
49 def GetBuildbotValue(self): 51 def GetBuildbotValue(self):
50 # Buildbot's print_perf_results method likes to get lists for all values, 52 # Buildbot's print_perf_results method likes to get lists for all values,
51 # even when they are scalar, so list-ize the return value. 53 # even when they are scalar, so list-ize the return value.
52 return [self.value] 54 return [self.value]
(...skipping 14 matching lines...) Expand all
67 69
68 if self.none_value_reason is not None: 70 if self.none_value_reason is not None:
69 d['none_value_reason'] = self.none_value_reason 71 d['none_value_reason'] = self.none_value_reason
70 72
71 return d 73 return d
72 74
73 @staticmethod 75 @staticmethod
74 def FromDict(value_dict, page_dict): 76 def FromDict(value_dict, page_dict):
75 kwargs = value_module.Value.GetConstructorKwArgs(value_dict, page_dict) 77 kwargs = value_module.Value.GetConstructorKwArgs(value_dict, page_dict)
76 kwargs['value'] = value_dict['value'] 78 kwargs['value'] = value_dict['value']
79 kwargs['improvement_direction'] = value_dict['improvement_direction']
77 80
78 if 'none_value_reason' in value_dict: 81 if 'none_value_reason' in value_dict:
79 kwargs['none_value_reason'] = value_dict['none_value_reason'] 82 kwargs['none_value_reason'] = value_dict['none_value_reason']
80 if 'tir_label' in value_dict: 83 if 'tir_label' in value_dict:
81 kwargs['tir_label'] = value_dict['tir_label'] 84 kwargs['tir_label'] = value_dict['tir_label']
82 85
83 return ScalarValue(**kwargs) 86 return ScalarValue(**kwargs)
84 87
85 @classmethod 88 @classmethod
86 def MergeLikeValuesFromSamePage(cls, values): 89 def MergeLikeValuesFromSamePage(cls, values):
(...skipping 11 matching lines...) Expand all
98 def _MergeLikeValues(cls, values, page, name, tir_label): 101 def _MergeLikeValues(cls, values, page, name, tir_label):
99 v0 = values[0] 102 v0 = values[0]
100 merged_value = [v.value for v in values] 103 merged_value = [v.value for v in values]
101 none_value_reason = None 104 none_value_reason = None
102 if None in merged_value: 105 if None in merged_value:
103 merged_value = None 106 merged_value = None
104 none_value_reason = none_values.MERGE_FAILURE_REASON 107 none_value_reason = none_values.MERGE_FAILURE_REASON
105 return list_of_scalar_values.ListOfScalarValues( 108 return list_of_scalar_values.ListOfScalarValues(
106 page, name, v0.units, merged_value, important=v0.important, 109 page, name, v0.units, merged_value, important=v0.important,
107 tir_label=tir_label, 110 tir_label=tir_label,
108 none_value_reason=none_value_reason) 111 none_value_reason=none_value_reason,
112 improvement_direction=v0.improvement_direction)
OLDNEW
« no previous file with comments | « tools/telemetry/telemetry/value/merge_values_unittest.py ('k') | tools/telemetry/telemetry/value/scalar_unittest.py » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698