Upstream version 10.39.225.0
[platform/framework/web/crosswalk.git] / src / tools / telemetry / telemetry / value / scalar_unittest.py
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.
4 import os
5 import unittest
6
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
11
12
13 class TestBase(unittest.TestCase):
14   def setUp(self):
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/")
19
20   @property
21   def pages(self):
22     return self.page_set.pages
23
24 class ValueTest(TestBase):
25   def testBuildbotValueType(self):
26     page0 = self.pages[0]
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())
33
34     v = scalar.ScalarValue(page0, 'x', 'unit', 3, important=False)
35     self.assertEquals(
36         'unimportant',
37         v.GetBuildbotDataType(value.COMPUTED_PER_PAGE_SUMMARY_OUTPUT_CONTEXT))
38
39   def testScalarSamePageMerging(self):
40     page0 = self.pages[0]
41     v0 = scalar.ScalarValue(page0, 'x', 'unit', 1)
42     v1 = scalar.ScalarValue(page0, 'x', 'unit', 2)
43     self.assertTrue(v1.IsMergableWith(v0))
44
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)
51
52   def testScalarDifferentPageMerging(self):
53     page0 = self.pages[0]
54     page1 = self.pages[1]
55     v0 = scalar.ScalarValue(page0, 'x', 'unit', 1)
56     v1 = scalar.ScalarValue(page1, 'x', 'unit', 2)
57
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)
64
65   def testScalarWithNoneValueMerging(self):
66     page0 = self.pages[0]
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))
70
71     vM = scalar.ScalarValue.MergeLikeValuesFromSamePage([v0, v1])
72     self.assertEquals(None, vM.values)
73     self.assertEquals(none_values.MERGE_FAILURE_REASON,
74                       vM.none_value_reason)
75
76   def testScalarWithNoneValueMustHaveNoneReason(self):
77     page0 = self.pages[0]
78     self.assertRaises(none_values.NoneValueMissingReason,
79                       lambda: scalar.ScalarValue(page0, 'x', 'unit', None))
80
81   def testScalarWithNoneReasonMustHaveNoneValue(self):
82     page0 = self.pages[0]
83     self.assertRaises(none_values.ValueMustHaveNoneValue,
84                       lambda: scalar.ScalarValue(page0, 'x', 'unit', 1,
85                                                  none_value_reason='n'))
86
87   def testAsDict(self):
88     v = scalar.ScalarValue(None, 'x', 'unit', 42, important=False)
89     d = v.AsDictWithoutBaseClassEntries()
90
91     self.assertEquals(d, {
92           'value': 42
93         })
94
95   def testNoneValueAsDict(self):
96     v = scalar.ScalarValue(None, 'x', 'unit', None, important=False,
97                            none_value_reason='n')
98     d = v.AsDictWithoutBaseClassEntries()
99
100     self.assertEquals(d, {
101           'value': None,
102           'none_value_reason': 'n'
103         })
104
105   def testFromDictInt(self):
106     d = {
107       'type': 'scalar',
108       'name': 'x',
109       'units': 'unit',
110       'value': 42
111     }
112
113     v = value.Value.FromDict(d, {})
114
115     self.assertTrue(isinstance(v, scalar.ScalarValue))
116     self.assertEquals(v.value, 42)
117
118   def testFromDictFloat(self):
119     d = {
120       'type': 'scalar',
121       'name': 'x',
122       'units': 'unit',
123       'value': 42.4
124     }
125
126     v = value.Value.FromDict(d, {})
127
128     self.assertTrue(isinstance(v, scalar.ScalarValue))
129     self.assertEquals(v.value, 42.4)
130
131   def testFromDictNoneValue(self):
132     d = {
133       'type': 'scalar',
134       'name': 'x',
135       'units': 'unit',
136       'value': None,
137       'none_value_reason': 'n'
138     }
139
140     v = value.Value.FromDict(d, {})
141
142     self.assertTrue(isinstance(v, scalar.ScalarValue))
143     self.assertEquals(v.value, None)
144     self.assertEquals(v.none_value_reason, 'n')