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