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