aboutsummaryrefslogtreecommitdiff
path: root/catapult/telemetry/telemetry/value/common_value_helpers.py
diff options
context:
space:
mode:
Diffstat (limited to 'catapult/telemetry/telemetry/value/common_value_helpers.py')
-rw-r--r--catapult/telemetry/telemetry/value/common_value_helpers.py41
1 files changed, 41 insertions, 0 deletions
diff --git a/catapult/telemetry/telemetry/value/common_value_helpers.py b/catapult/telemetry/telemetry/value/common_value_helpers.py
new file mode 100644
index 00000000..a1d366ce
--- /dev/null
+++ b/catapult/telemetry/telemetry/value/common_value_helpers.py
@@ -0,0 +1,41 @@
+# Copyright 2016 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.
+
+import copy
+from telemetry.value import failure
+from telemetry.value import improvement_direction
+from telemetry.value import scalar
+
+
+def TranslateMreFailure(mre_failure, page):
+ return failure.FailureValue.FromMessage(page, mre_failure.stack)
+
+
+def TranslateScalarValue(scalar_value, page):
+ # This function should not modify scalar_value because it is also held by
+ # PageTestResults.value_set.
+ scalar_value = copy.deepcopy(scalar_value)
+
+ value = scalar_value['numeric']['value']
+ scalar_value['value'] = value
+ if value is None:
+ scalar_value['none_value_reason'] = 'Common scalar contained None'
+
+ name = scalar_value['name']
+
+ unit_parts = scalar_value['numeric']['unit'].split('_')
+ if len(unit_parts) != 2:
+ raise ValueError('Must specify improvement direction for value ' + name)
+
+ scalar_value['units'] = unit_parts[0]
+
+ if unit_parts[1] == 'biggerIsBetter':
+ scalar_value['improvement_direction'] = improvement_direction.UP
+ else:
+ assert unit_parts[1] == 'smallerIsBetter'
+ scalar_value['improvement_direction'] = improvement_direction.DOWN
+
+ scalar_value['page_id'] = page.id
+ scalar_value['name'] = name
+ return scalar.ScalarValue.FromDict(scalar_value, {page.id: page})