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

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

Issue 809393002: Added support for improvement_direction to relevant values, which is propogated to chartjson. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Fix linter issues Created 5 years, 11 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 import os 4 import os
5 import unittest 5 import unittest
6 6
7 from telemetry import page as page_module 7 from telemetry import page as page_module
8 from telemetry import value 8 from telemetry import value
9 from telemetry.page import page_set 9 from telemetry.page import page_set
10 from telemetry.value import improvement_direction
10 from telemetry.value import none_values 11 from telemetry.value import none_values
11 from telemetry.value import scalar 12 from telemetry.value import scalar
12 13
13 14
14 class TestBase(unittest.TestCase): 15 class TestBase(unittest.TestCase):
15 def setUp(self): 16 def setUp(self):
16 ps = page_set.PageSet(file_path=os.path.dirname(__file__)) 17 ps = page_set.PageSet(file_path=os.path.dirname(__file__))
17 ps.AddUserStory(page_module.Page('http://www.bar.com/', ps, ps.base_dir)) 18 ps.AddUserStory(page_module.Page('http://www.bar.com/', ps, ps.base_dir))
18 ps.AddUserStory(page_module.Page('http://www.baz.com/', ps, ps.base_dir)) 19 ps.AddUserStory(page_module.Page('http://www.baz.com/', ps, ps.base_dir))
19 ps.AddUserStory(page_module.Page('http://www.foo.com/', ps, ps.base_dir)) 20 ps.AddUserStory(page_module.Page('http://www.foo.com/', ps, ps.base_dir))
20 self.page_set = ps 21 self.page_set = ps
21 22
22 @property 23 @property
23 def pages(self): 24 def pages(self):
24 return self.page_set.pages 25 return self.page_set.pages
25 26
26 class ValueTest(TestBase): 27 class ValueTest(TestBase):
27 def testBuildbotValueType(self): 28 def testBuildbotValueType(self):
28 page0 = self.pages[0] 29 page0 = self.pages[0]
29 v = scalar.ScalarValue(page0, 'x', 'unit', 3, important=True) 30 v = scalar.ScalarValue(page0, 'x', 'unit', 3, important=True,
31 improvement_direction=improvement_direction.DOWN)
30 self.assertEquals('default', v.GetBuildbotDataType( 32 self.assertEquals('default', v.GetBuildbotDataType(
31 value.COMPUTED_PER_PAGE_SUMMARY_OUTPUT_CONTEXT)) 33 value.COMPUTED_PER_PAGE_SUMMARY_OUTPUT_CONTEXT))
32 self.assertEquals([3], v.GetBuildbotValue()) 34 self.assertEquals([3], v.GetBuildbotValue())
33 self.assertEquals(('x', page0.display_name), 35 self.assertEquals(('x', page0.display_name),
34 v.GetChartAndTraceNameForPerPageResult()) 36 v.GetChartAndTraceNameForPerPageResult())
35 37
36 v = scalar.ScalarValue(page0, 'x', 'unit', 3, important=False) 38 v = scalar.ScalarValue(page0, 'x', 'unit', 3, important=False,
39 improvement_direction=improvement_direction.DOWN)
37 self.assertEquals( 40 self.assertEquals(
38 'unimportant', 41 'unimportant',
39 v.GetBuildbotDataType(value.COMPUTED_PER_PAGE_SUMMARY_OUTPUT_CONTEXT)) 42 v.GetBuildbotDataType(value.COMPUTED_PER_PAGE_SUMMARY_OUTPUT_CONTEXT))
40 43
41 def testScalarSamePageMerging(self): 44 def testScalarSamePageMerging(self):
42 page0 = self.pages[0] 45 page0 = self.pages[0]
43 v0 = scalar.ScalarValue(page0, 'x', 'unit', 1) 46 v0 = scalar.ScalarValue(page0, 'x', 'unit', 1,
44 v1 = scalar.ScalarValue(page0, 'x', 'unit', 2) 47 improvement_direction=improvement_direction.UP)
48 v1 = scalar.ScalarValue(page0, 'x', 'unit', 2,
49 improvement_direction=improvement_direction.UP)
45 self.assertTrue(v1.IsMergableWith(v0)) 50 self.assertTrue(v1.IsMergableWith(v0))
46 51
47 vM = scalar.ScalarValue.MergeLikeValuesFromSamePage([v0, v1]) 52 vM = scalar.ScalarValue.MergeLikeValuesFromSamePage([v0, v1])
48 self.assertEquals(page0, vM.page) 53 self.assertEquals(page0, vM.page)
49 self.assertEquals('x', vM.name) 54 self.assertEquals('x', vM.name)
50 self.assertEquals('unit', vM.units) 55 self.assertEquals('unit', vM.units)
51 self.assertEquals(True, vM.important) 56 self.assertEquals(True, vM.important)
52 self.assertEquals([1, 2], vM.values) 57 self.assertEquals([1, 2], vM.values)
58 self.assertEquals(improvement_direction.UP, vM.improvement_direction)
53 59
54 def testScalarDifferentPageMerging(self): 60 def testScalarDifferentPageMerging(self):
55 page0 = self.pages[0] 61 page0 = self.pages[0]
56 page1 = self.pages[1] 62 page1 = self.pages[1]
57 v0 = scalar.ScalarValue(page0, 'x', 'unit', 1) 63 v0 = scalar.ScalarValue(
58 v1 = scalar.ScalarValue(page1, 'x', 'unit', 2) 64 page0, 'x', 'unit', 1, improvement_direction=improvement_direction.UP)
65 v1 = scalar.ScalarValue(
66 page1, 'x', 'unit', 2, improvement_direction=improvement_direction.UP)
59 67
60 vM = scalar.ScalarValue.MergeLikeValuesFromDifferentPages([v0, v1]) 68 vM = scalar.ScalarValue.MergeLikeValuesFromDifferentPages([v0, v1])
61 self.assertEquals(None, vM.page) 69 self.assertEquals(None, vM.page)
62 self.assertEquals('x', vM.name) 70 self.assertEquals('x', vM.name)
63 self.assertEquals('unit', vM.units) 71 self.assertEquals('unit', vM.units)
64 self.assertEquals(True, vM.important) 72 self.assertEquals(True, vM.important)
65 self.assertEquals([1, 2], vM.values) 73 self.assertEquals([1, 2], vM.values)
74 self.assertEquals(improvement_direction.UP, vM.improvement_direction)
66 75
67 def testScalarWithNoneValueMerging(self): 76 def testScalarWithNoneValueMerging(self):
68 page0 = self.pages[0] 77 page0 = self.pages[0]
69 v0 = scalar.ScalarValue(page0, 'x', 'unit', 1) 78 v0 = scalar.ScalarValue(
70 v1 = scalar.ScalarValue(page0, 'x', 'unit', None, none_value_reason='n') 79 page0, 'x', 'unit', 1, improvement_direction=improvement_direction.DOWN)
80 v1 = scalar.ScalarValue(page0, 'x', 'unit', None, none_value_reason='n',
81 improvement_direction=improvement_direction.DOWN)
71 self.assertTrue(v1.IsMergableWith(v0)) 82 self.assertTrue(v1.IsMergableWith(v0))
72 83
73 vM = scalar.ScalarValue.MergeLikeValuesFromSamePage([v0, v1]) 84 vM = scalar.ScalarValue.MergeLikeValuesFromSamePage([v0, v1])
74 self.assertEquals(None, vM.values) 85 self.assertEquals(None, vM.values)
75 self.assertEquals(none_values.MERGE_FAILURE_REASON, 86 self.assertEquals(none_values.MERGE_FAILURE_REASON,
76 vM.none_value_reason) 87 vM.none_value_reason)
77 88
78 def testScalarWithNoneValueMustHaveNoneReason(self): 89 def testScalarWithNoneValueMustHaveNoneReason(self):
79 page0 = self.pages[0] 90 page0 = self.pages[0]
80 self.assertRaises(none_values.NoneValueMissingReason, 91 self.assertRaises(none_values.NoneValueMissingReason,
81 lambda: scalar.ScalarValue(page0, 'x', 'unit', None)) 92 lambda: scalar.ScalarValue(
93 page0, 'x', 'unit', None,
94 improvement_direction=improvement_direction.UP))
82 95
83 def testScalarWithNoneReasonMustHaveNoneValue(self): 96 def testScalarWithNoneReasonMustHaveNoneValue(self):
84 page0 = self.pages[0] 97 page0 = self.pages[0]
85 self.assertRaises(none_values.ValueMustHaveNoneValue, 98 self.assertRaises(none_values.ValueMustHaveNoneValue,
86 lambda: scalar.ScalarValue(page0, 'x', 'unit', 1, 99 lambda: scalar.ScalarValue(
87 none_value_reason='n')) 100 page0, 'x', 'unit', 1, none_value_reason='n',
101 improvement_direction=improvement_direction.UP))
88 102
89 def testAsDict(self): 103 def testAsDict(self):
90 v = scalar.ScalarValue(None, 'x', 'unit', 42, important=False) 104 v = scalar.ScalarValue(None, 'x', 'unit', 42, important=False,
105 improvement_direction=improvement_direction.DOWN)
91 d = v.AsDictWithoutBaseClassEntries() 106 d = v.AsDictWithoutBaseClassEntries()
92 107
93 self.assertEquals(d, { 108 self.assertEquals(d, {
94 'value': 42 109 'value': 42
95 }) 110 })
96 111
97 def testNoneValueAsDict(self): 112 def testNoneValueAsDict(self):
98 v = scalar.ScalarValue(None, 'x', 'unit', None, important=False, 113 v = scalar.ScalarValue(None, 'x', 'unit', None, important=False,
99 none_value_reason='n') 114 none_value_reason='n',
115 improvement_direction=improvement_direction.DOWN)
100 d = v.AsDictWithoutBaseClassEntries() 116 d = v.AsDictWithoutBaseClassEntries()
101 117
102 self.assertEquals(d, { 118 self.assertEquals(d, {
103 'value': None, 119 'value': None,
104 'none_value_reason': 'n' 120 'none_value_reason': 'n'
105 }) 121 })
106 122
107 def testFromDictInt(self): 123 def testFromDictInt(self):
108 d = { 124 d = {
109 'type': 'scalar', 125 'type': 'scalar',
110 'name': 'x', 126 'name': 'x',
111 'units': 'unit', 127 'units': 'unit',
112 'value': 42 128 'value': 42,
129 'improvement_direction': improvement_direction.DOWN,
113 } 130 }
114 131
115 v = value.Value.FromDict(d, {}) 132 v = value.Value.FromDict(d, {})
116 133
117 self.assertTrue(isinstance(v, scalar.ScalarValue)) 134 self.assertTrue(isinstance(v, scalar.ScalarValue))
118 self.assertEquals(v.value, 42) 135 self.assertEquals(v.value, 42)
136 self.assertEquals(v.improvement_direction, improvement_direction.DOWN)
119 137
120 def testFromDictFloat(self): 138 def testFromDictFloat(self):
121 d = { 139 d = {
122 'type': 'scalar', 140 'type': 'scalar',
123 'name': 'x', 141 'name': 'x',
124 'units': 'unit', 142 'units': 'unit',
125 'value': 42.4 143 'value': 42.4,
144 'improvement_direction': improvement_direction.UP,
126 } 145 }
127 146
128 v = value.Value.FromDict(d, {}) 147 v = value.Value.FromDict(d, {})
129 148
130 self.assertTrue(isinstance(v, scalar.ScalarValue)) 149 self.assertTrue(isinstance(v, scalar.ScalarValue))
131 self.assertEquals(v.value, 42.4) 150 self.assertEquals(v.value, 42.4)
132 151
133 def testFromDictNoneValue(self): 152 def testFromDictNoneValue(self):
134 d = { 153 d = {
135 'type': 'scalar', 154 'type': 'scalar',
136 'name': 'x', 155 'name': 'x',
137 'units': 'unit', 156 'units': 'unit',
138 'value': None, 157 'value': None,
139 'none_value_reason': 'n' 158 'none_value_reason': 'n',
159 'improvement_direction': improvement_direction.UP,
140 } 160 }
141 161
142 v = value.Value.FromDict(d, {}) 162 v = value.Value.FromDict(d, {})
143 163
144 self.assertTrue(isinstance(v, scalar.ScalarValue)) 164 self.assertTrue(isinstance(v, scalar.ScalarValue))
145 self.assertEquals(v.value, None) 165 self.assertEquals(v.value, None)
146 self.assertEquals(v.none_value_reason, 'n') 166 self.assertEquals(v.none_value_reason, 'n')
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698