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

Side by Side Diff: telemetry/telemetry/value/list_of_scalar_values_unittest.py

Issue 2162963002: [polymer] Merge of master into polymer10-migration (Closed) Base URL: git@github.com:catapult-project/catapult.git@polymer10-migration
Patch Set: Merge polymer10-migration int polymer10-merge Created 4 years, 5 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
« no previous file with comments | « telemetry/telemetry/value/list_of_scalar_values.py ('k') | telemetry/telemetry/value/scalar.py » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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 story 7 from telemetry import story
8 from telemetry import page as page_module 8 from telemetry import page as page_module
9 from telemetry import value 9 from telemetry import value
10 from telemetry.value import improvement_direction 10 from telemetry.value import improvement_direction
(...skipping 54 matching lines...) Expand 10 before | Expand all | Expand 10 after
65 65
66 @property 66 @property
67 def pages(self): 67 def pages(self):
68 return self.story_set.stories 68 return self.story_set.stories
69 69
70 class ValueTest(TestBase): 70 class ValueTest(TestBase):
71 def testRepr(self): 71 def testRepr(self):
72 page = self.pages[0] 72 page = self.pages[0]
73 v = list_of_scalar_values.ListOfScalarValues( 73 v = list_of_scalar_values.ListOfScalarValues(
74 page, 'x', 'unit', [10, 9, 9, 7], important=True, description='desc', 74 page, 'x', 'unit', [10, 9, 9, 7], important=True, description='desc',
75 tir_label='my_ir', std=42, same_page_merge_policy=value.CONCATENATE, 75 tir_label='my_ir', std=42,
76 improvement_direction=improvement_direction.DOWN) 76 improvement_direction=improvement_direction.DOWN)
77 77
78 expected = ('ListOfScalarValues(http://www.bar.com/, x, unit, ' 78 expected = ('ListOfScalarValues(http://www.bar.com/, x, unit, '
79 '[10, 9, 9, 7], important=True, description=desc, ' 79 '[10, 9, 9, 7], important=True, description=desc, '
80 'tir_label=my_ir, std=42, ' 80 'tir_label=my_ir, std=42, '
81 'same_page_merge_policy=CONCATENATE, '
82 'improvement_direction=down, grouping_keys={})') 81 'improvement_direction=down, grouping_keys={})')
83 82
84 self.assertEquals(expected, str(v)) 83 self.assertEquals(expected, str(v))
85 84
86 def testListSamePageMergingWithSamePageConcatenatePolicy(self): 85 def testListSamePageMerging(self):
87 page0 = self.pages[0] 86 page0 = self.pages[0]
88 v0 = list_of_scalar_values.ListOfScalarValues( 87 v0 = list_of_scalar_values.ListOfScalarValues(
89 page0, 'x', 'unit', 88 page0, 'x', 'unit',
90 [10, 9, 9, 7], same_page_merge_policy=value.CONCATENATE, 89 [10, 9, 9, 7], description='list-based metric',
91 description='list-based metric',
92 improvement_direction=improvement_direction.DOWN) 90 improvement_direction=improvement_direction.DOWN)
93 v1 = list_of_scalar_values.ListOfScalarValues( 91 v1 = list_of_scalar_values.ListOfScalarValues(
94 page0, 'x', 'unit', 92 page0, 'x', 'unit',
95 [300, 302, 303, 304], same_page_merge_policy=value.CONCATENATE, 93 [300, 302, 303, 304], description='list-based metric',
96 description='list-based metric',
97 improvement_direction=improvement_direction.DOWN) 94 improvement_direction=improvement_direction.DOWN)
98 self.assertTrue(v1.IsMergableWith(v0)) 95 self.assertTrue(v1.IsMergableWith(v0))
99 96
100 vM = (list_of_scalar_values.ListOfScalarValues. 97 vM = (list_of_scalar_values.ListOfScalarValues.
101 MergeLikeValuesFromSamePage([v0, v1])) 98 MergeLikeValuesFromSamePage([v0, v1]))
102 self.assertEquals(page0, vM.page) 99 self.assertEquals(page0, vM.page)
103 self.assertEquals('x', vM.name) 100 self.assertEquals('x', vM.name)
104 self.assertEquals('unit', vM.units) 101 self.assertEquals('unit', vM.units)
105 self.assertEquals(value.CONCATENATE, vM.same_page_merge_policy)
106 self.assertEquals(True, vM.important) 102 self.assertEquals(True, vM.important)
107 self.assertEquals([10, 9, 9, 7, 300, 302, 303, 304], vM.values) 103 self.assertEquals([10, 9, 9, 7, 300, 302, 303, 304], vM.values)
108 # Values from the same page use regular standard deviation. 104 # Values from the same page use regular standard deviation.
109 self.assertAlmostEqual(156.88849, vM.std, places=4) 105 self.assertAlmostEqual(156.88849, vM.std, places=4)
110 self.assertEquals('list-based metric', vM.description) 106 self.assertEquals('list-based metric', vM.description)
111 self.assertEquals(improvement_direction.DOWN, vM.improvement_direction) 107 self.assertEquals(improvement_direction.DOWN, vM.improvement_direction)
112 108
113 def testListSamePageMergingWithPickFirstPolicy(self):
114 page0 = self.pages[0]
115 v0 = list_of_scalar_values.ListOfScalarValues(
116 page0, 'x', 'unit',
117 [1, 2], same_page_merge_policy=value.PICK_FIRST,
118 improvement_direction=improvement_direction.UP)
119 v1 = list_of_scalar_values.ListOfScalarValues(
120 page0, 'x', 'unit',
121 [3, 4], same_page_merge_policy=value.PICK_FIRST,
122 improvement_direction=improvement_direction.UP)
123 self.assertTrue(v1.IsMergableWith(v0))
124
125 vM = (list_of_scalar_values.ListOfScalarValues.
126 MergeLikeValuesFromSamePage([v0, v1]))
127 self.assertEquals(page0, vM.page)
128 self.assertEquals('x', vM.name)
129 self.assertEquals('unit', vM.units)
130 self.assertEquals(value.PICK_FIRST, vM.same_page_merge_policy)
131 self.assertEquals(True, vM.important)
132 self.assertEquals([1, 2], vM.values)
133 self.assertEquals(improvement_direction.UP, vM.improvement_direction)
134
135 def testListDifferentPageMerging(self): 109 def testListDifferentPageMerging(self):
136 page0 = self.pages[0] 110 page0 = self.pages[0]
137 page1 = self.pages[1] 111 page1 = self.pages[1]
138 v0 = list_of_scalar_values.ListOfScalarValues( 112 v0 = list_of_scalar_values.ListOfScalarValues(
139 page0, 'x', 'unit', 113 page0, 'x', 'unit',
140 [10, 9, 9, 7], same_page_merge_policy=value.CONCATENATE, 114 [10, 9, 9, 7], improvement_direction=improvement_direction.DOWN)
141 improvement_direction=improvement_direction.DOWN)
142 v1 = list_of_scalar_values.ListOfScalarValues( 115 v1 = list_of_scalar_values.ListOfScalarValues(
143 page1, 'x', 'unit', 116 page1, 'x', 'unit',
144 [300, 302, 303, 304], same_page_merge_policy=value.CONCATENATE, 117 [300, 302, 303, 304], improvement_direction=improvement_direction.DOWN)
145 improvement_direction=improvement_direction.DOWN)
146 self.assertTrue(v1.IsMergableWith(v0)) 118 self.assertTrue(v1.IsMergableWith(v0))
147 119
148 vM = (list_of_scalar_values.ListOfScalarValues. 120 vM = (list_of_scalar_values.ListOfScalarValues.
149 MergeLikeValuesFromDifferentPages([v0, v1])) 121 MergeLikeValuesFromDifferentPages([v0, v1]))
150 self.assertEquals(None, vM.page) 122 self.assertEquals(None, vM.page)
151 self.assertEquals('x', vM.name) 123 self.assertEquals('x', vM.name)
152 self.assertEquals('unit', vM.units) 124 self.assertEquals('unit', vM.units)
153 self.assertEquals(value.CONCATENATE, vM.same_page_merge_policy)
154 self.assertEquals(True, vM.important) 125 self.assertEquals(True, vM.important)
155 self.assertEquals([10, 9, 9, 7, 300, 302, 303, 304], vM.values) 126 self.assertEquals([10, 9, 9, 7, 300, 302, 303, 304], vM.values)
156 # Values from different pages use pooled standard deviation. 127 # Values from different pages use pooled standard deviation.
157 # SQRT((19/12 * 3 + 35/12 * 3)/6) = 1.5 128 # SQRT((19/12 * 3 + 35/12 * 3)/6) = 1.5
158 self.assertAlmostEqual(1.5, vM.std) 129 self.assertAlmostEqual(1.5, vM.std)
159 self.assertEquals(improvement_direction.DOWN, vM.improvement_direction) 130 self.assertEquals(improvement_direction.DOWN, vM.improvement_direction)
160 131
161 def testListWithNoneValueMerging(self): 132 def testListWithNoneValueMerging(self):
162 page0 = self.pages[0] 133 page0 = self.pages[0]
163 v0 = list_of_scalar_values.ListOfScalarValues( 134 v0 = list_of_scalar_values.ListOfScalarValues(
164 page0, 'x', 'unit', 135 page0, 'x', 'unit',
165 [1, 2], same_page_merge_policy=value.CONCATENATE, 136 [1, 2], improvement_direction=improvement_direction.UP)
166 improvement_direction=improvement_direction.UP)
167 v1 = list_of_scalar_values.ListOfScalarValues( 137 v1 = list_of_scalar_values.ListOfScalarValues(
168 page0, 'x', 'unit', 138 page0, 'x', 'unit',
169 None, same_page_merge_policy=value.CONCATENATE, none_value_reason='n', 139 None, none_value_reason='n',
170 improvement_direction=improvement_direction.UP) 140 improvement_direction=improvement_direction.UP)
171 self.assertTrue(v1.IsMergableWith(v0)) 141 self.assertTrue(v1.IsMergableWith(v0))
172 142
173 vM = (list_of_scalar_values.ListOfScalarValues. 143 vM = (list_of_scalar_values.ListOfScalarValues.
174 MergeLikeValuesFromSamePage([v0, v1])) 144 MergeLikeValuesFromSamePage([v0, v1]))
175 self.assertEquals(None, vM.values) 145 self.assertEquals(None, vM.values)
176 self.assertEquals(none_values.MERGE_FAILURE_REASON, 146 expected_none_value_reason = (
177 vM.none_value_reason) 147 'Merging values containing a None value results in a None value. '
148 'None values: [ListOfScalarValues(http://www.bar.com/, x, unit, None, '
149 'important=True, description=None, tir_label=None, std=None,'
150 ' improvement_direction=up, grouping_keys={})]')
151 self.assertEquals(expected_none_value_reason, vM.none_value_reason)
178 self.assertEquals(improvement_direction.UP, vM.improvement_direction) 152 self.assertEquals(improvement_direction.UP, vM.improvement_direction)
179 153
180 def testListWithNoneValueMustHaveNoneReason(self): 154 def testListWithNoneValueMustHaveNoneReason(self):
181 page0 = self.pages[0] 155 page0 = self.pages[0]
182 self.assertRaises(none_values.NoneValueMissingReason, 156 self.assertRaises(none_values.NoneValueMissingReason,
183 lambda: list_of_scalar_values.ListOfScalarValues( 157 lambda: list_of_scalar_values.ListOfScalarValues(
184 page0, 'x', 'unit', None, 158 page0, 'x', 'unit', None,
185 improvement_direction=improvement_direction.DOWN)) 159 improvement_direction=improvement_direction.DOWN))
186 160
187 def testListWithNoneReasonMustHaveNoneValue(self): 161 def testListWithNoneReasonMustHaveNoneValue(self):
188 page0 = self.pages[0] 162 page0 = self.pages[0]
189 self.assertRaises(none_values.ValueMustHaveNoneValue, 163 self.assertRaises(none_values.ValueMustHaveNoneValue,
190 lambda: list_of_scalar_values.ListOfScalarValues( 164 lambda: list_of_scalar_values.ListOfScalarValues(
191 page0, 'x', 'unit', [1, 2], 165 page0, 'x', 'unit', [1, 2],
192 none_value_reason='n', 166 none_value_reason='n',
193 improvement_direction=improvement_direction.UP)) 167 improvement_direction=improvement_direction.UP))
194 168
195 def testAsDict(self): 169 def testAsDict(self):
196 v = list_of_scalar_values.ListOfScalarValues( 170 v = list_of_scalar_values.ListOfScalarValues(
197 None, 'x', 'unit', [1, 2], 171 None, 'x', 'unit', [1, 2],
198 same_page_merge_policy=value.PICK_FIRST, important=False, 172 important=False, improvement_direction=improvement_direction.DOWN)
199 improvement_direction=improvement_direction.DOWN)
200 d = v.AsDictWithoutBaseClassEntries() 173 d = v.AsDictWithoutBaseClassEntries()
201 174
202 self.assertEquals(d['values'], [1, 2]) 175 self.assertEquals(d['values'], [1, 2])
203 self.assertAlmostEqual(d['std'], 0.7071, places=4) 176 self.assertAlmostEqual(d['std'], 0.7071, places=4)
204 177
205 def testMergedValueAsDict(self): 178 def testMergedValueAsDict(self):
206 page0 = self.pages[0] 179 page0 = self.pages[0]
207 v0 = list_of_scalar_values.ListOfScalarValues( 180 v0 = list_of_scalar_values.ListOfScalarValues(
208 page0, 'x', 'unit', 181 page0, 'x', 'unit',
209 [10, 9, 9, 7], same_page_merge_policy=value.CONCATENATE, 182 [10, 9, 9, 7], improvement_direction=improvement_direction.DOWN)
210 improvement_direction=improvement_direction.DOWN)
211 v1 = list_of_scalar_values.ListOfScalarValues( 183 v1 = list_of_scalar_values.ListOfScalarValues(
212 page0, 'x', 'unit', 184 page0, 'x', 'unit',
213 [300, 302, 303, 304], same_page_merge_policy=value.CONCATENATE, 185 [300, 302, 303, 304], improvement_direction=improvement_direction.DOWN)
214 improvement_direction=improvement_direction.DOWN)
215 self.assertTrue(v1.IsMergableWith(v0)) 186 self.assertTrue(v1.IsMergableWith(v0))
216 187
217 vM = (list_of_scalar_values.ListOfScalarValues. 188 vM = (list_of_scalar_values.ListOfScalarValues.
218 MergeLikeValuesFromSamePage([v0, v1])) 189 MergeLikeValuesFromSamePage([v0, v1]))
219 d = vM.AsDict() 190 d = vM.AsDict()
220 self.assertEquals(d['values'], [10, 9, 9, 7, 300, 302, 303, 304]) 191 self.assertEquals(d['values'], [10, 9, 9, 7, 300, 302, 303, 304])
221 # Values from the same page use regular standard deviation. 192 # Values from the same page use regular standard deviation.
222 self.assertAlmostEqual(d['std'], 156.88849, places=4) 193 self.assertAlmostEqual(d['std'], 156.88849, places=4)
223 194
224 195
225 def testNoneValueAsDict(self): 196 def testNoneValueAsDict(self):
226 v = list_of_scalar_values.ListOfScalarValues( 197 v = list_of_scalar_values.ListOfScalarValues(
227 None, 'x', 'unit', None, same_page_merge_policy=value.PICK_FIRST, 198 None, 'x', 'unit', None,
228 important=False, none_value_reason='n', 199 important=False, none_value_reason='n',
229 improvement_direction=improvement_direction.UP) 200 improvement_direction=improvement_direction.UP)
230 d = v.AsDictWithoutBaseClassEntries() 201 d = v.AsDictWithoutBaseClassEntries()
231 202
232 self.assertEquals(d, { 203 self.assertEquals(d, {
233 'values': None, 204 'values': None,
234 'none_value_reason': 'n', 205 'none_value_reason': 'n',
235 'std': None 206 'std': None
236 }) 207 })
237 208
(...skipping 49 matching lines...) Expand 10 before | Expand all | Expand 10 after
287 'values': None, 258 'values': None,
288 'std': None, 259 'std': None,
289 'none_value_reason': 'n', 260 'none_value_reason': 'n',
290 'improvement_direction': improvement_direction.DOWN 261 'improvement_direction': improvement_direction.DOWN
291 } 262 }
292 v = value.Value.FromDict(d, {}) 263 v = value.Value.FromDict(d, {})
293 264
294 self.assertTrue(isinstance(v, list_of_scalar_values.ListOfScalarValues)) 265 self.assertTrue(isinstance(v, list_of_scalar_values.ListOfScalarValues))
295 self.assertEquals(v.values, None) 266 self.assertEquals(v.values, None)
296 self.assertEquals(v.none_value_reason, 'n') 267 self.assertEquals(v.none_value_reason, 'n')
OLDNEW
« no previous file with comments | « telemetry/telemetry/value/list_of_scalar_values.py ('k') | telemetry/telemetry/value/scalar.py » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698