OLD | NEW |
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') |
OLD | NEW |