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.
4import os
5import unittest
6
7from telemetry import value
8from telemetry.page import page_set
9from telemetry.value import scalar
10
11class TestBase(unittest.TestCase):
12  def setUp(self):
13    self.page_set = page_set.PageSet(file_path=os.path.dirname(__file__))
14    self.page_set.AddPageWithDefaultRunNavigate("http://www.bar.com/")
15    self.page_set.AddPageWithDefaultRunNavigate("http://www.baz.com/")
16    self.page_set.AddPageWithDefaultRunNavigate("http://www.foo.com/")
17
18  @property
19  def pages(self):
20    return self.page_set.pages
21
22class ValueTest(TestBase):
23  def testBuildbotValueType(self):
24    page0 = self.pages[0]
25    v = scalar.ScalarValue(page0, 'x', 'unit', 3, important=True)
26    self.assertEquals('default', v.GetBuildbotDataType(
27        value.COMPUTED_PER_PAGE_SUMMARY_OUTPUT_CONTEXT))
28    self.assertEquals([3], v.GetBuildbotValue())
29    self.assertEquals(('x', page0.display_name),
30                      v.GetBuildbotMeasurementAndTraceNameForPerPageResult())
31
32    v = scalar.ScalarValue(page0, 'x', 'unit', 3, important=False)
33    self.assertEquals(
34        'unimportant',
35        v.GetBuildbotDataType(value.COMPUTED_PER_PAGE_SUMMARY_OUTPUT_CONTEXT))
36
37  def testScalarSamePageMerging(self):
38    page0 = self.pages[0]
39    v0 = scalar.ScalarValue(page0, 'x', 'unit', 1)
40    v1 = scalar.ScalarValue(page0, 'x', 'unit', 2)
41    self.assertTrue(v1.IsMergableWith(v0))
42
43    vM = scalar.ScalarValue.MergeLikeValuesFromSamePage([v0, v1])
44    self.assertEquals(page0, vM.page)
45    self.assertEquals('x', vM.name)
46    self.assertEquals('unit', vM.units)
47    self.assertEquals(True, vM.important)
48    self.assertEquals([1, 2], vM.values)
49
50  def testScalarDifferentSiteMerging(self):
51    page0 = self.pages[0]
52    page1 = self.pages[1]
53    v0 = scalar.ScalarValue(page0, 'x', 'unit', 1)
54    v1 = scalar.ScalarValue(page1, 'x', 'unit', 2)
55
56    vM = scalar.ScalarValue.MergeLikeValuesFromDifferentPages([v0, v1])
57    self.assertEquals(None, vM.page)
58    self.assertEquals('x', vM.name)
59    self.assertEquals('unit', vM.units)
60    self.assertEquals(True, vM.important)
61    self.assertEquals([1, 2], vM.values)
62