| Index: telemetry/telemetry/value/scalar.py
|
| diff --git a/telemetry/telemetry/value/scalar.py b/telemetry/telemetry/value/scalar.py
|
| index cb5a32d4e6d16805d6e444b1260a57d7cd1f648c..a876ca9ca7d1058150826217f2a465331114f1c7 100644
|
| --- a/telemetry/telemetry/value/scalar.py
|
| +++ b/telemetry/telemetry/value/scalar.py
|
| @@ -13,7 +13,8 @@ from telemetry.value import summarizable
|
| class ScalarValue(summarizable.SummarizableValue):
|
| def __init__(self, page, name, units, value, important=True,
|
| description=None, tir_label=None,
|
| - none_value_reason=None, improvement_direction=None):
|
| + none_value_reason=None, improvement_direction=None,
|
| + grouping_keys=None):
|
| """A single value (float or integer) result from a test.
|
|
|
| A test that counts the number of DOM elements in a page might produce a
|
| @@ -21,7 +22,8 @@ class ScalarValue(summarizable.SummarizableValue):
|
| ScalarValue(page, 'num_dom_elements', 'count', num_elements)
|
| """
|
| super(ScalarValue, self).__init__(page, name, units, important, description,
|
| - tir_label, improvement_direction)
|
| + tir_label, improvement_direction,
|
| + grouping_keys)
|
| assert value is None or isinstance(value, numbers.Number)
|
| none_values.ValidateNoneValueReason(value, none_value_reason)
|
| self.value = value
|
| @@ -33,7 +35,7 @@ class ScalarValue(summarizable.SummarizableValue):
|
| else:
|
| page_name = 'None'
|
| return ('ScalarValue(%s, %s, %s, %s, important=%s, description=%s, '
|
| - 'tir_label=%s, improvement_direction=%s') % (
|
| + 'tir_label=%s, improvement_direction=%s, grouping_keys=%s') % (
|
| page_name,
|
| self.name,
|
| self.units,
|
| @@ -41,7 +43,8 @@ class ScalarValue(summarizable.SummarizableValue):
|
| self.important,
|
| self.description,
|
| self.tir_label,
|
| - self.improvement_direction)
|
| + self.improvement_direction,
|
| + self.grouping_keys)
|
|
|
| def GetBuildbotDataType(self, output_context):
|
| if self._IsImportantGivenOutputIntent(output_context):
|
| @@ -81,8 +84,6 @@ class ScalarValue(summarizable.SummarizableValue):
|
| kwargs['improvement_direction'] = value_dict['improvement_direction']
|
| if 'none_value_reason' in value_dict:
|
| kwargs['none_value_reason'] = value_dict['none_value_reason']
|
| - if 'tir_label' in value_dict:
|
| - kwargs['tir_label'] = value_dict['tir_label']
|
|
|
| return ScalarValue(**kwargs)
|
|
|
| @@ -90,16 +91,18 @@ class ScalarValue(summarizable.SummarizableValue):
|
| def MergeLikeValuesFromSamePage(cls, values):
|
| assert len(values) > 0
|
| v0 = values[0]
|
| - return cls._MergeLikeValues(values, v0.page, v0.name, v0.tir_label)
|
| + return cls._MergeLikeValues(values, v0.page, v0.name, v0.tir_label,
|
| + v0.grouping_keys)
|
|
|
| @classmethod
|
| def MergeLikeValuesFromDifferentPages(cls, values):
|
| assert len(values) > 0
|
| v0 = values[0]
|
| - return cls._MergeLikeValues(values, None, v0.name, v0.tir_label)
|
| + return cls._MergeLikeValues(values, None, v0.name, v0.tir_label,
|
| + v0.grouping_keys)
|
|
|
| @classmethod
|
| - def _MergeLikeValues(cls, values, page, name, tir_label):
|
| + def _MergeLikeValues(cls, values, page, name, tir_label, grouping_keys):
|
| v0 = values[0]
|
| merged_value = [v.value for v in values]
|
| none_value_reason = None
|
| @@ -110,4 +113,5 @@ class ScalarValue(summarizable.SummarizableValue):
|
| page, name, v0.units, merged_value, important=v0.important,
|
| tir_label=tir_label,
|
| none_value_reason=none_value_reason,
|
| - improvement_direction=v0.improvement_direction)
|
| + improvement_direction=v0.improvement_direction,
|
| + grouping_keys=grouping_keys)
|
|
|