blob: 72d3b318c2af6f55a5dca953480c3bedf330a24d [file] [log] [blame]
# Copyright 2013 The Chromium Authors. All rights reserved.
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.
import os
import unittest
from telemetry.page import page_set
from telemetry.value import list_of_scalar_values
from telemetry.value import merge_values
from telemetry.value import scalar
class TestBase(unittest.TestCase):
def setUp(self):
self.page_set = page_set.PageSet(file_path=os.path.dirname(__file__))
self.page_set.AddPageWithDefaultRunNavigate("http://www.bar.com/")
self.page_set.AddPageWithDefaultRunNavigate("http://www.baz.com/")
self.page_set.AddPageWithDefaultRunNavigate("http://www.foo.com/")
@property
def pages(self):
return self.page_set.pages
class MergeValueTest(TestBase):
def testSamePageMergeBasic(self):
page0 = self.pages[0]
page1 = self.pages[1]
all_values = [scalar.ScalarValue(page0, 'x', 'units', 1),
scalar.ScalarValue(page1, 'x', 'units', 4),
scalar.ScalarValue(page0, 'x', 'units', 2),
scalar.ScalarValue(page1, 'x', 'units', 5)]
merged_values = merge_values.MergeLikeValuesFromSamePage(all_values)
# Sort the results so that their order is predictable for the subsequent
# assertions.
merged_values.sort(key=lambda x: x.page.url)
self.assertEquals(2, len(merged_values))
self.assertEquals((page0, 'x'),
(merged_values[0].page, merged_values[0].name))
self.assertEquals([1, 2], merged_values[0].values)
self.assertEquals((page1, 'x'),
(merged_values[1].page, merged_values[1].name))
self.assertEquals([4, 5], merged_values[1].values)
def testSamePageMergeOneValue(self):
page0 = self.pages[0]
all_values = [scalar.ScalarValue(page0, 'x', 'units', 1)]
# Sort the results so that their order is predictable for the subsequent
# assertions.
merged_values = merge_values.MergeLikeValuesFromSamePage(all_values)
self.assertEquals(1, len(merged_values))
self.assertEquals(all_values[0].name, merged_values[0].name)
self.assertEquals(all_values[0].units, merged_values[0].units)
def testDifferentPageMergeBasic(self):
page0 = self.pages[0]
page1 = self.pages[1]
all_values = [scalar.ScalarValue(page0, 'x', 'units', 1),
scalar.ScalarValue(page1, 'x', 'units', 2),
scalar.ScalarValue(page0, 'y', 'units', 10),
scalar.ScalarValue(page1, 'y', 'units', 20)]
# Sort the results so that their order is predictable for the subsequent
# assertions.
merged_values = merge_values.MergeLikeValuesFromDifferentPages(all_values)
merged_values.sort(key=lambda x: x.name)
self.assertEquals(2, len(merged_values))
self.assertEquals((None, 'x'),
(merged_values[0].page, merged_values[0].name))
self.assertEquals([1, 2], merged_values[0].values)
self.assertEquals((None, 'y'),
(merged_values[1].page, merged_values[1].name))
self.assertEquals([10, 20], merged_values[1].values)
def testDifferentPageMergeSingleValueStillMerges(self):
page0 = self.pages[0]
all_values = [scalar.ScalarValue(page0, 'x', 'units', 1)]
# Sort the results so that their order is predictable for the subsequent
# assertions.
merged_values = merge_values.MergeLikeValuesFromDifferentPages(all_values)
self.assertEquals(1, len(merged_values))
self.assertEquals((None, 'x'),
(merged_values[0].page, merged_values[0].name))
self.assertTrue(
isinstance(merged_values[0], list_of_scalar_values.ListOfScalarValues))
self.assertEquals([1], merged_values[0].values)
def testDifferentPageMergeBasicIgnoreTraceName(self):
page0 = self.pages[0]
page1 = self.pages[1]
all_values = [scalar.ScalarValue(page0, 'x.score', 'units', 1),
scalar.ScalarValue(page1, 'y.score', 'units', 2)]
# Sort the results so that their order is predictable for the subsequent
# assertions.
merged_values = merge_values.MergeLikeValuesFromDifferentPages(
all_values,
group_by_name_suffix=True)
self.assertEquals(1, len(merged_values))
self.assertEquals((None, 'score'),
(merged_values[0].page, merged_values[0].name))
self.assertEquals([1, 2], merged_values[0].values)