Home | History | Annotate | Download | only in value
      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.page import page_set
      8 from telemetry.value import list_of_scalar_values
      9 from telemetry.value import merge_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 MergeValueTest(TestBase):
     25   def testSamePageMergeBasic(self):
     26     page0 = self.pages[0]
     27     page1 = self.pages[1]
     28 
     29     all_values = [scalar.ScalarValue(page0, 'x', 'units', 1),
     30                   scalar.ScalarValue(page1, 'x', 'units', 4),
     31                   scalar.ScalarValue(page0, 'x', 'units', 2),
     32                   scalar.ScalarValue(page1, 'x', 'units', 5)]
     33 
     34     merged_values = merge_values.MergeLikeValuesFromSamePage(all_values)
     35     # Sort the results so that their order is predictable for the subsequent
     36     # assertions.
     37     merged_values.sort(key=lambda x: x.page.url)
     38 
     39     self.assertEquals(2, len(merged_values))
     40 
     41     self.assertEquals((page0, 'x'),
     42                       (merged_values[0].page, merged_values[0].name))
     43     self.assertEquals([1, 2], merged_values[0].values)
     44 
     45     self.assertEquals((page1, 'x'),
     46                       (merged_values[1].page, merged_values[1].name))
     47     self.assertEquals([4, 5], merged_values[1].values)
     48 
     49   def testSamePageMergeOneValue(self):
     50     page0 = self.pages[0]
     51 
     52     all_values = [scalar.ScalarValue(page0, 'x', 'units', 1)]
     53 
     54     # Sort the results so that their order is predictable for the subsequent
     55     # assertions.
     56     merged_values = merge_values.MergeLikeValuesFromSamePage(all_values)
     57     self.assertEquals(1, len(merged_values))
     58     self.assertEquals(all_values[0].name, merged_values[0].name)
     59     self.assertEquals(all_values[0].units, merged_values[0].units)
     60 
     61   def testDifferentPageMergeBasic(self):
     62     page0 = self.pages[0]
     63     page1 = self.pages[1]
     64 
     65     all_values = [scalar.ScalarValue(page0, 'x', 'units', 1),
     66                   scalar.ScalarValue(page1, 'x', 'units', 2),
     67                   scalar.ScalarValue(page0, 'y', 'units', 10),
     68                   scalar.ScalarValue(page1, 'y', 'units', 20)]
     69 
     70     # Sort the results so that their order is predictable for the subsequent
     71     # assertions.
     72     merged_values = merge_values.MergeLikeValuesFromDifferentPages(all_values)
     73     merged_values.sort(key=lambda x: x.name)
     74     self.assertEquals(2, len(merged_values))
     75 
     76     self.assertEquals((None, 'x'),
     77                       (merged_values[0].page, merged_values[0].name))
     78     self.assertEquals([1, 2], merged_values[0].values)
     79 
     80     self.assertEquals((None, 'y'),
     81                       (merged_values[1].page, merged_values[1].name))
     82     self.assertEquals([10, 20], merged_values[1].values)
     83 
     84   def testDifferentPageMergeSingleValueStillMerges(self):
     85     page0 = self.pages[0]
     86 
     87     all_values = [scalar.ScalarValue(page0, 'x', 'units', 1)]
     88 
     89     # Sort the results so that their order is predictable for the subsequent
     90     # assertions.
     91     merged_values = merge_values.MergeLikeValuesFromDifferentPages(all_values)
     92     self.assertEquals(1, len(merged_values))
     93 
     94     self.assertEquals((None, 'x'),
     95                       (merged_values[0].page, merged_values[0].name))
     96     self.assertTrue(
     97         isinstance(merged_values[0], list_of_scalar_values.ListOfScalarValues))
     98     self.assertEquals([1], merged_values[0].values)
     99 
    100   def testDifferentPageMergeBasicIgnoreTraceName(self):
    101     page0 = self.pages[0]
    102     page1 = self.pages[1]
    103 
    104     all_values = [scalar.ScalarValue(page0, 'x.score', 'units', 1),
    105                   scalar.ScalarValue(page1, 'y.score', 'units', 2)]
    106     # Sort the results so that their order is predictable for the subsequent
    107     # assertions.
    108     merged_values = merge_values.MergeLikeValuesFromDifferentPages(
    109         all_values,
    110         group_by_name_suffix=True)
    111     self.assertEquals(1, len(merged_values))
    112 
    113     self.assertEquals((None, 'score'),
    114                       (merged_values[0].page, merged_values[0].name))
    115     self.assertEquals([1, 2], merged_values[0].values)
    116