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
3 # found in the LICENSE file.
7 from telemetry import value
8 from telemetry.page import page_set
9 from telemetry.value import none_values
10 from telemetry.value import scalar
13 class TestBase(unittest.TestCase):
15 self.page_set = page_set.PageSet(file_path=os.path.dirname(__file__))
16 self.page_set.AddPageWithDefaultRunNavigate("http://www.bar.com/")
17 self.page_set.AddPageWithDefaultRunNavigate("http://www.baz.com/")
18 self.page_set.AddPageWithDefaultRunNavigate("http://www.foo.com/")
22 return self.page_set.pages
24 class ValueTest(TestBase):
25 def testBuildbotValueType(self):
27 v = scalar.ScalarValue(page0, 'x', 'unit', 3, important=True)
28 self.assertEquals('default', v.GetBuildbotDataType(
29 value.COMPUTED_PER_PAGE_SUMMARY_OUTPUT_CONTEXT))
30 self.assertEquals([3], v.GetBuildbotValue())
31 self.assertEquals(('x', page0.display_name),
32 v.GetChartAndTraceNameForPerPageResult())
34 v = scalar.ScalarValue(page0, 'x', 'unit', 3, important=False)
37 v.GetBuildbotDataType(value.COMPUTED_PER_PAGE_SUMMARY_OUTPUT_CONTEXT))
39 def testScalarSamePageMerging(self):
41 v0 = scalar.ScalarValue(page0, 'x', 'unit', 1)
42 v1 = scalar.ScalarValue(page0, 'x', 'unit', 2)
43 self.assertTrue(v1.IsMergableWith(v0))
45 vM = scalar.ScalarValue.MergeLikeValuesFromSamePage([v0, v1])
46 self.assertEquals(page0, vM.page)
47 self.assertEquals('x', vM.name)
48 self.assertEquals('unit', vM.units)
49 self.assertEquals(True, vM.important)
50 self.assertEquals([1, 2], vM.values)
52 def testScalarDifferentPageMerging(self):
55 v0 = scalar.ScalarValue(page0, 'x', 'unit', 1)
56 v1 = scalar.ScalarValue(page1, 'x', 'unit', 2)
58 vM = scalar.ScalarValue.MergeLikeValuesFromDifferentPages([v0, v1])
59 self.assertEquals(None, vM.page)
60 self.assertEquals('x', vM.name)
61 self.assertEquals('unit', vM.units)
62 self.assertEquals(True, vM.important)
63 self.assertEquals([1, 2], vM.values)
65 def testScalarWithNoneValueMerging(self):
67 v0 = scalar.ScalarValue(page0, 'x', 'unit', 1)
68 v1 = scalar.ScalarValue(page0, 'x', 'unit', None, none_value_reason='n')
69 self.assertTrue(v1.IsMergableWith(v0))
71 vM = scalar.ScalarValue.MergeLikeValuesFromSamePage([v0, v1])
72 self.assertEquals(None, vM.values)
73 self.assertEquals(none_values.MERGE_FAILURE_REASON,
76 def testScalarWithNoneValueMustHaveNoneReason(self):
78 self.assertRaises(none_values.NoneValueMissingReason,
79 lambda: scalar.ScalarValue(page0, 'x', 'unit', None))
81 def testScalarWithNoneReasonMustHaveNoneValue(self):
83 self.assertRaises(none_values.ValueMustHaveNoneValue,
84 lambda: scalar.ScalarValue(page0, 'x', 'unit', 1,
85 none_value_reason='n'))
88 v = scalar.ScalarValue(None, 'x', 'unit', 42, important=False)
89 d = v.AsDictWithoutBaseClassEntries()
91 self.assertEquals(d, {
95 def testNoneValueAsDict(self):
96 v = scalar.ScalarValue(None, 'x', 'unit', None, important=False,
97 none_value_reason='n')
98 d = v.AsDictWithoutBaseClassEntries()
100 self.assertEquals(d, {
102 'none_value_reason': 'n'
105 def testFromDictInt(self):
113 v = value.Value.FromDict(d, {})
115 self.assertTrue(isinstance(v, scalar.ScalarValue))
116 self.assertEquals(v.value, 42)
118 def testFromDictFloat(self):
126 v = value.Value.FromDict(d, {})
128 self.assertTrue(isinstance(v, scalar.ScalarValue))
129 self.assertEquals(v.value, 42.4)
131 def testFromDictNoneValue(self):
137 'none_value_reason': 'n'
140 v = value.Value.FromDict(d, {})
142 self.assertTrue(isinstance(v, scalar.ScalarValue))
143 self.assertEquals(v.value, None)
144 self.assertEquals(v.none_value_reason, 'n')