| Index: tools/telemetry/telemetry/value/scalar.py
|
| diff --git a/tools/telemetry/telemetry/value/scalar.py b/tools/telemetry/telemetry/value/scalar.py
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..e076671d4319416763f1ab94cb62cd22fa68d0ce
|
| --- /dev/null
|
| +++ b/tools/telemetry/telemetry/value/scalar.py
|
| @@ -0,0 +1,67 @@
|
| +# Copyright (c) 2013 The Chromium Authors. All rights reserved.
|
| +# Use of this source code is governed by a BSD-style license that can be
|
| +# found in the LICENSE file.
|
| +from telemetry.value import Value
|
| +from telemetry.value.list_of_scalar_values import ListOfScalarValues
|
| +
|
| +class ScalarValue(Value):
|
| + def __init__(self, page, name, units, value, important=True):
|
| + """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
|
| + scalar value:
|
| + ScalarValue(page, 'num_dom_elements', 'count', num_elements)
|
| + """
|
| + super(ScalarValue, self).__init__(page, name, units, important)
|
| + assert isinstance(value, int) or isinstance(value, float)
|
| + self.value = value
|
| +
|
| + def __repr__(self):
|
| + if self.page:
|
| + page_name = self.page.url
|
| + else:
|
| + page_name = None
|
| + return 'ScalarValue(%s, %s, %s, %s, important=%s)' % (
|
| + page_name,
|
| + self.name, self.units,
|
| + self.value,
|
| + self.important)
|
| +
|
| + def GetBuildbotDataType(self, output_context):
|
| + if self._IsImportantGivenOutputIntent(output_context):
|
| + return 'default'
|
| + return 'unimportant'
|
| +
|
| + def GetBuildbotValue(self):
|
| + # Buildbot's print_perf_results method likes to get lists for all values,
|
| + # even when they are scalar, so list-ize the return value.
|
| + return [self.value]
|
| +
|
| + def GetRepresentativeNumber(self):
|
| + return self.value
|
| +
|
| + def GetRepresentativeString(self):
|
| + return str(self.value)
|
| +
|
| + @classmethod
|
| + def MergeLikeValuesFromSamePage(cls, values):
|
| + assert len(values) > 0
|
| + v0 = values[0]
|
| + return ListOfScalarValues(
|
| + v0.page, v0.name, v0.units,
|
| + [v.value for v in values],
|
| + important=v0.important)
|
| +
|
| + @classmethod
|
| + def MergeLikeValuesFromDifferentPages(cls, values,
|
| + group_by_name_suffix=False):
|
| + assert len(values) > 0
|
| + v0 = values[0]
|
| + if not group_by_name_suffix:
|
| + name = v0.name
|
| + else:
|
| + name = v0.name_suffix
|
| + return ListOfScalarValues(
|
| + None, name, v0.units,
|
| + [v.value for v in values],
|
| + important=v0.important)
|
|
|