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

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

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

Powered by Google App Engine
This is Rietveld 408576698