OLD | NEW |
1 # Copyright 2013 The Chromium Authors. All rights reserved. | 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 | 2 # Use of this source code is governed by a BSD-style license that can be |
3 # found in the LICENSE file. | 3 # found in the LICENSE file. |
4 import os | 4 import os |
5 import unittest | 5 import unittest |
6 | 6 |
7 from telemetry import story | 7 from telemetry import story |
8 from telemetry import page as page_module | 8 from telemetry import page as page_module |
| 9 from telemetry.value import improvement_direction |
9 from telemetry.value import list_of_scalar_values | 10 from telemetry.value import list_of_scalar_values |
10 from telemetry.value import merge_values | 11 from telemetry.value import merge_values |
11 from telemetry.value import scalar | 12 from telemetry.value import scalar |
12 | 13 |
13 | 14 |
14 class TestBase(unittest.TestCase): | 15 class TestBase(unittest.TestCase): |
15 def setUp(self): | 16 def setUp(self): |
16 story_set = story.StorySet(base_dir=os.path.dirname(__file__)) | 17 story_set = story.StorySet(base_dir=os.path.dirname(__file__)) |
17 story_set.AddStory( | 18 story_set.AddStory( |
18 page_module.Page('http://www.bar.com/', story_set, story_set.base_dir)) | 19 page_module.Page('http://www.bar.com/', story_set, story_set.base_dir)) |
19 story_set.AddStory( | 20 story_set.AddStory( |
20 page_module.Page('http://www.baz.com/', story_set, story_set.base_dir)) | 21 page_module.Page('http://www.baz.com/', story_set, story_set.base_dir)) |
21 story_set.AddStory( | 22 story_set.AddStory( |
22 page_module.Page('http://www.foo.com/', story_set, story_set.base_dir)) | 23 page_module.Page('http://www.foo.com/', story_set, story_set.base_dir)) |
23 self.story_set = story_set | 24 self.story_set = story_set |
24 | 25 |
25 @property | 26 @property |
26 def pages(self): | 27 def pages(self): |
27 return self.story_set.stories | 28 return self.story_set.stories |
28 | 29 |
29 class MergeValueTest(TestBase): | 30 class MergeValueTest(TestBase): |
30 def testSamePageMergeBasic(self): | 31 def testSamePageMergeBasic(self): |
31 page0 = self.pages[0] | 32 page0 = self.pages[0] |
32 page1 = self.pages[1] | 33 page1 = self.pages[1] |
33 | 34 |
34 all_values = [scalar.ScalarValue(page0, 'x', 'units', 1), | 35 all_values = [scalar.ScalarValue( |
35 scalar.ScalarValue(page1, 'x', 'units', 4), | 36 page0, 'x', 'units', 1, |
36 scalar.ScalarValue(page0, 'x', 'units', 2), | 37 improvement_direction=improvement_direction.UP), |
37 scalar.ScalarValue(page1, 'x', 'units', 5)] | 38 scalar.ScalarValue( |
| 39 page1, 'x', 'units', 4, |
| 40 improvement_direction=improvement_direction.UP), |
| 41 scalar.ScalarValue( |
| 42 page0, 'x', 'units', 2, |
| 43 improvement_direction=improvement_direction.UP), |
| 44 scalar.ScalarValue( |
| 45 page1, 'x', 'units', 5, |
| 46 improvement_direction=improvement_direction.UP)] |
38 | 47 |
39 merged_values = merge_values.MergeLikeValuesFromSamePage(all_values) | 48 merged_values = merge_values.MergeLikeValuesFromSamePage(all_values) |
40 # Sort the results so that their order is predictable for the subsequent | 49 # Sort the results so that their order is predictable for the subsequent |
41 # assertions. | 50 # assertions. |
42 merged_values.sort(key=lambda x: x.page.url) | 51 merged_values.sort(key=lambda x: x.page.url) |
43 | 52 |
44 self.assertEquals(2, len(merged_values)) | 53 self.assertEquals(2, len(merged_values)) |
45 | 54 |
46 self.assertEquals((page0, 'x'), | 55 self.assertEquals((page0, 'x'), |
47 (merged_values[0].page, merged_values[0].name)) | 56 (merged_values[0].page, merged_values[0].name)) |
48 self.assertEquals([1, 2], merged_values[0].values) | 57 self.assertEquals([1, 2], merged_values[0].values) |
49 | 58 |
50 self.assertEquals((page1, 'x'), | 59 self.assertEquals((page1, 'x'), |
51 (merged_values[1].page, merged_values[1].name)) | 60 (merged_values[1].page, merged_values[1].name)) |
52 self.assertEquals([4, 5], merged_values[1].values) | 61 self.assertEquals([4, 5], merged_values[1].values) |
53 | 62 |
54 def testSamePageMergeOneValue(self): | 63 def testSamePageMergeOneValue(self): |
55 page0 = self.pages[0] | 64 page0 = self.pages[0] |
56 | 65 |
57 all_values = [scalar.ScalarValue(page0, 'x', 'units', 1)] | 66 all_values = [scalar.ScalarValue( |
| 67 page0, 'x', 'units', 1, |
| 68 improvement_direction=improvement_direction.DOWN)] |
58 | 69 |
59 # Sort the results so that their order is predictable for the subsequent | 70 # Sort the results so that their order is predictable for the subsequent |
60 # assertions. | 71 # assertions. |
61 merged_values = merge_values.MergeLikeValuesFromSamePage(all_values) | 72 merged_values = merge_values.MergeLikeValuesFromSamePage(all_values) |
62 self.assertEquals(1, len(merged_values)) | 73 self.assertEquals(1, len(merged_values)) |
63 self.assertEquals(all_values[0].name, merged_values[0].name) | 74 self.assertEquals(all_values[0].name, merged_values[0].name) |
64 self.assertEquals(all_values[0].units, merged_values[0].units) | 75 self.assertEquals(all_values[0].units, merged_values[0].units) |
65 | 76 |
66 def testSamePageMergeWithInteractionRecord(self): | 77 def testSamePageMergeWithInteractionRecord(self): |
67 page0 = self.pages[0] | 78 page0 = self.pages[0] |
68 | 79 |
69 all_values = [scalar.ScalarValue(page0, 'foo-x', 'units', 1, | 80 all_values = [scalar.ScalarValue( |
70 tir_label='foo'), | 81 page0, 'foo-x', 'units', 1, tir_label='foo', |
71 scalar.ScalarValue(page0, 'foo-x', 'units', 4, | 82 improvement_direction=improvement_direction.UP), |
72 tir_label='foo')] | 83 scalar.ScalarValue( |
| 84 page0, 'foo-x', 'units', 4, tir_label='foo', |
| 85 improvement_direction=improvement_direction.UP)] |
73 | 86 |
74 merged_values = merge_values.MergeLikeValuesFromSamePage(all_values) | 87 merged_values = merge_values.MergeLikeValuesFromSamePage(all_values) |
75 self.assertEquals(1, len(merged_values)) | 88 self.assertEquals(1, len(merged_values)) |
76 self.assertEquals('foo', merged_values[0].tir_label) | 89 self.assertEquals('foo', merged_values[0].tir_label) |
77 | 90 |
78 def testDifferentPageMergeBasic(self): | 91 def testDifferentPageMergeBasic(self): |
79 page0 = self.pages[0] | 92 page0 = self.pages[0] |
80 page1 = self.pages[1] | 93 page1 = self.pages[1] |
81 | 94 |
82 all_values = [scalar.ScalarValue(page0, 'x', 'units', 1), | 95 all_values = [scalar.ScalarValue( |
83 scalar.ScalarValue(page1, 'x', 'units', 2), | 96 page0, 'x', 'units', 1, |
84 scalar.ScalarValue(page0, 'y', 'units', 10), | 97 improvement_direction=improvement_direction.UP), |
85 scalar.ScalarValue(page1, 'y', 'units', 20)] | 98 scalar.ScalarValue( |
| 99 page1, 'x', 'units', 2, |
| 100 improvement_direction=improvement_direction.UP), |
| 101 scalar.ScalarValue( |
| 102 page0, 'y', 'units', 10, |
| 103 improvement_direction=improvement_direction.UP), |
| 104 scalar.ScalarValue( |
| 105 page1, 'y', 'units', 20, |
| 106 improvement_direction=improvement_direction.UP)] |
86 | 107 |
87 # Sort the results so that their order is predictable for the subsequent | 108 # Sort the results so that their order is predictable for the subsequent |
88 # assertions. | 109 # assertions. |
89 merged_values = merge_values.MergeLikeValuesFromDifferentPages(all_values) | 110 merged_values = merge_values.MergeLikeValuesFromDifferentPages(all_values) |
90 merged_values.sort(key=lambda x: x.name) | 111 merged_values.sort(key=lambda x: x.name) |
91 self.assertEquals(2, len(merged_values)) | 112 self.assertEquals(2, len(merged_values)) |
92 | 113 |
93 self.assertEquals((None, 'x'), | 114 self.assertEquals((None, 'x'), |
94 (merged_values[0].page, merged_values[0].name)) | 115 (merged_values[0].page, merged_values[0].name)) |
95 self.assertEquals([1, 2], merged_values[0].values) | 116 self.assertEquals([1, 2], merged_values[0].values) |
96 | 117 |
97 self.assertEquals((None, 'y'), | 118 self.assertEquals((None, 'y'), |
98 (merged_values[1].page, merged_values[1].name)) | 119 (merged_values[1].page, merged_values[1].name)) |
99 self.assertEquals([10, 20], merged_values[1].values) | 120 self.assertEquals([10, 20], merged_values[1].values) |
100 | 121 |
101 def testDifferentPageMergeSingleValueStillMerges(self): | 122 def testDifferentPageMergeSingleValueStillMerges(self): |
102 page0 = self.pages[0] | 123 page0 = self.pages[0] |
103 | 124 |
104 all_values = [scalar.ScalarValue(page0, 'x', 'units', 1)] | 125 all_values = [scalar.ScalarValue( |
| 126 page0, 'x', 'units', 1, |
| 127 improvement_direction=improvement_direction.DOWN)] |
105 | 128 |
106 # Sort the results so that their order is predictable for the subsequent | 129 # Sort the results so that their order is predictable for the subsequent |
107 # assertions. | 130 # assertions. |
108 merged_values = merge_values.MergeLikeValuesFromDifferentPages(all_values) | 131 merged_values = merge_values.MergeLikeValuesFromDifferentPages(all_values) |
109 self.assertEquals(1, len(merged_values)) | 132 self.assertEquals(1, len(merged_values)) |
110 | 133 |
111 self.assertEquals((None, 'x'), | 134 self.assertEquals((None, 'x'), |
112 (merged_values[0].page, merged_values[0].name)) | 135 (merged_values[0].page, merged_values[0].name)) |
113 self.assertTrue( | 136 self.assertTrue( |
114 isinstance(merged_values[0], list_of_scalar_values.ListOfScalarValues)) | 137 isinstance(merged_values[0], list_of_scalar_values.ListOfScalarValues)) |
115 self.assertEquals([1], merged_values[0].values) | 138 self.assertEquals([1], merged_values[0].values) |
OLD | NEW |