Upstream version 9.38.198.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 scalar
10
11
12 class TestBase(unittest.TestCase):
13   def setUp(self):
14     self.page_set = page_set.PageSet(file_path=os.path.dirname(__file__))
15     self.page_set.AddPageWithDefaultRunNavigate("http://www.bar.com/")
16     self.page_set.AddPageWithDefaultRunNavigate("http://www.baz.com/")
17     self.page_set.AddPageWithDefaultRunNavigate("http://www.foo.com/")
18
19   @property
20   def pages(self):
21     return self.page_set.pages
22
23 class ValueTest(TestBase):
24   def testBuildbotValueType(self):
25     page0 = self.pages[0]
26     v = scalar.ScalarValue(page0, 'x', 'unit', 3, important=True)
27     self.assertEquals('default', v.GetBuildbotDataType(
28         value.COMPUTED_PER_PAGE_SUMMARY_OUTPUT_CONTEXT))
29     self.assertEquals([3], v.GetBuildbotValue())
30     self.assertEquals(('x', page0.display_name),
31                       v.GetBuildbotMeasurementAndTraceNameForPerPageResult())
32
33     v = scalar.ScalarValue(page0, 'x', 'unit', 3, important=False)
34     self.assertEquals(
35         'unimportant',
36         v.GetBuildbotDataType(value.COMPUTED_PER_PAGE_SUMMARY_OUTPUT_CONTEXT))
37
38   def testScalarSamePageMerging(self):
39     page0 = self.pages[0]
40     v0 = scalar.ScalarValue(page0, 'x', 'unit', 1)
41     v1 = scalar.ScalarValue(page0, 'x', 'unit', 2)
42     self.assertTrue(v1.IsMergableWith(v0))
43
44     vM = scalar.ScalarValue.MergeLikeValuesFromSamePage([v0, v1])
45     self.assertEquals(page0, vM.page)
46     self.assertEquals('x', vM.name)
47     self.assertEquals('unit', vM.units)
48     self.assertEquals(True, vM.important)
49     self.assertEquals([1, 2], vM.values)
50
51   def testScalarDifferentSiteMerging(self):
52     page0 = self.pages[0]
53     page1 = self.pages[1]
54     v0 = scalar.ScalarValue(page0, 'x', 'unit', 1)
55     v1 = scalar.ScalarValue(page1, 'x', 'unit', 2)
56
57     vM = scalar.ScalarValue.MergeLikeValuesFromDifferentPages([v0, v1])
58     self.assertEquals(None, vM.page)
59     self.assertEquals('x', vM.name)
60     self.assertEquals('unit', vM.units)
61     self.assertEquals(True, vM.important)
62     self.assertEquals([1, 2], vM.values)
63
64   def testAsDict(self):
65     v = scalar.ScalarValue(None, 'x', 'unit', 42, important=False)
66     d = v.AsDictWithoutBaseClassEntries()
67
68     self.assertEquals(d, {
69           'value': 42
70         })
71
72   def testFromDictInt(self):
73     d = {
74       'type': 'scalar',
75       'name': 'x',
76       'units': 'unit',
77       'value': 42
78     }
79
80     v = value.Value.FromDict(d, {})
81
82     self.assertTrue(isinstance(v, scalar.ScalarValue))
83     self.assertEquals(v.value, 42)
84
85   def testFromDictFloat(self):
86     d = {
87       'type': 'scalar',
88       'name': 'x',
89       'units': 'unit',
90       'value': 42.4
91     }
92
93     v = value.Value.FromDict(d, {})
94
95     self.assertTrue(isinstance(v, scalar.ScalarValue))
96     self.assertEquals(v.value, 42.4)