OLD | NEW |
1 # Copyright 2014 The Chromium Authors. All rights reserved. | 1 # Copyright 2014 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 csv | 4 import csv |
5 import os | 5 import os |
6 import StringIO | 6 import StringIO |
7 import unittest | 7 import unittest |
8 | 8 |
9 from telemetry import page as page_module | 9 from telemetry import page as page_module |
10 from telemetry.page import page_set | 10 from telemetry.page import page_set |
11 from telemetry.results import csv_output_formatter | 11 from telemetry.results import csv_output_formatter |
12 from telemetry.results import page_test_results | 12 from telemetry.results import page_test_results |
13 from telemetry.value import histogram | 13 from telemetry.value import histogram |
| 14 from telemetry.value import improvement_direction |
14 from telemetry.value import scalar | 15 from telemetry.value import scalar |
15 | 16 |
16 | 17 |
17 def _MakePageSet(): | 18 def _MakePageSet(): |
18 ps = page_set.PageSet(file_path=os.path.dirname(__file__)) | 19 ps = page_set.PageSet(file_path=os.path.dirname(__file__)) |
19 ps.AddUserStory(page_module.Page('http://www.foo.com/', ps, ps.base_dir)) | 20 ps.AddUserStory(page_module.Page('http://www.foo.com/', ps, ps.base_dir)) |
20 ps.AddUserStory(page_module.Page('http://www.bar.com/', ps, ps.base_dir)) | 21 ps.AddUserStory(page_module.Page('http://www.bar.com/', ps, ps.base_dir)) |
21 return ps | 22 return ps |
22 | 23 |
23 | 24 |
(...skipping 14 matching lines...) Expand all Loading... |
38 return rows[0] | 39 return rows[0] |
39 | 40 |
40 @property | 41 @property |
41 def output_data_rows(self): | 42 def output_data_rows(self): |
42 rows = list(csv.reader(self.lines)) | 43 rows = list(csv.reader(self.lines)) |
43 return rows[1:] | 44 return rows[1:] |
44 | 45 |
45 def test_with_no_results_on_second_run(self): | 46 def test_with_no_results_on_second_run(self): |
46 results = page_test_results.PageTestResults() | 47 results = page_test_results.PageTestResults() |
47 results.WillRunPage(self._page_set[0]) | 48 results.WillRunPage(self._page_set[0]) |
48 results.AddValue(scalar.ScalarValue(self._page_set[0], 'foo', 'seconds', 3)) | 49 results.AddValue(scalar.ScalarValue( |
| 50 self._page_set[0], 'foo', 'seconds', 3, |
| 51 improvement_direction=improvement_direction.DOWN)) |
49 results.DidRunPage(self._page_set[0]) | 52 results.DidRunPage(self._page_set[0]) |
50 | 53 |
51 results.WillRunPage(self._page_set[1]) | 54 results.WillRunPage(self._page_set[1]) |
52 results.DidRunPage(self._page_set[1]) | 55 results.DidRunPage(self._page_set[1]) |
53 | 56 |
54 self._formatter.Format(results) | 57 self._formatter.Format(results) |
55 | 58 |
56 self.assertEqual(['page_name', 'foo (seconds)'], self.output_header_row) | 59 self.assertEqual(['page_name', 'foo (seconds)'], self.output_header_row) |
57 # TODO(chrishenry): Is this really the right behavior? Should this | 60 # TODO(chrishenry): Is this really the right behavior? Should this |
58 # not output a second row with '-' as its results? | 61 # not output a second row with '-' as its results? |
59 expected = [[self._page_set[0].url, '3.0']] | 62 expected = [[self._page_set[0].url, '3.0']] |
60 self.assertEqual(expected, self.output_data_rows) | 63 self.assertEqual(expected, self.output_data_rows) |
61 | 64 |
62 def test_fewer_results_on_second_run(self): | 65 def test_fewer_results_on_second_run(self): |
63 results = page_test_results.PageTestResults() | 66 results = page_test_results.PageTestResults() |
64 results.WillRunPage(self._page_set[0]) | 67 results.WillRunPage(self._page_set[0]) |
65 results.AddValue(scalar.ScalarValue(self._page_set[0], 'foo', 'seconds', 3)) | 68 results.AddValue(scalar.ScalarValue( |
66 results.AddValue(scalar.ScalarValue(self._page_set[0], 'bar', 'seconds', 4)) | 69 self._page_set[0], 'foo', 'seconds', 3, |
| 70 improvement_direction=improvement_direction.DOWN)) |
| 71 results.AddValue(scalar.ScalarValue( |
| 72 self._page_set[0], 'bar', 'seconds', 4, |
| 73 improvement_direction=improvement_direction.DOWN)) |
67 results.DidRunPage(self._page_set[0]) | 74 results.DidRunPage(self._page_set[0]) |
68 | 75 |
69 results.WillRunPage(self._page_set[1]) | 76 results.WillRunPage(self._page_set[1]) |
70 results.AddValue(scalar.ScalarValue(self._page_set[1], 'bar', 'seconds', 5)) | 77 results.AddValue(scalar.ScalarValue( |
| 78 self._page_set[1], 'bar', 'seconds', 5, |
| 79 improvement_direction=improvement_direction.DOWN)) |
71 results.DidRunPage(self._page_set[1]) | 80 results.DidRunPage(self._page_set[1]) |
72 | 81 |
73 self._formatter.Format(results) | 82 self._formatter.Format(results) |
74 self.assertEqual(['page_name', 'bar (seconds)', 'foo (seconds)'], | 83 self.assertEqual(['page_name', 'bar (seconds)', 'foo (seconds)'], |
75 self.output_header_row) | 84 self.output_header_row) |
76 expected = [[self._page_set[0].url, '4.0', '3.0'], | 85 expected = [[self._page_set[0].url, '4.0', '3.0'], |
77 [self._page_set[1].url, '5.0', '-']] | 86 [self._page_set[1].url, '5.0', '-']] |
78 self.assertEqual(expected, self.output_data_rows) | 87 self.assertEqual(expected, self.output_data_rows) |
79 | 88 |
80 def test_with_output_at_print_summary_time(self): | 89 def test_with_output_at_print_summary_time(self): |
81 results = page_test_results.PageTestResults() | 90 results = page_test_results.PageTestResults() |
82 results.WillRunPage(self._page_set[0]) | 91 results.WillRunPage(self._page_set[0]) |
83 results.AddValue(scalar.ScalarValue(self._page_set[0], 'foo', 'seconds', 3)) | 92 results.AddValue(scalar.ScalarValue( |
| 93 self._page_set[0], 'foo', 'seconds', 3, |
| 94 improvement_direction=improvement_direction.DOWN)) |
84 results.DidRunPage(self._page_set[0]) | 95 results.DidRunPage(self._page_set[0]) |
85 | 96 |
86 results.WillRunPage(self._page_set[1]) | 97 results.WillRunPage(self._page_set[1]) |
87 results.AddValue(scalar.ScalarValue(self._page_set[1], 'bar', 'seconds', 4)) | 98 results.AddValue(scalar.ScalarValue( |
| 99 self._page_set[1], 'bar', 'seconds', 4, |
| 100 improvement_direction=improvement_direction.DOWN)) |
88 results.DidRunPage(self._page_set[1]) | 101 results.DidRunPage(self._page_set[1]) |
89 | 102 |
90 self._formatter.Format(results) | 103 self._formatter.Format(results) |
91 | 104 |
92 self.assertEqual( | 105 self.assertEqual( |
93 self.output_header_row, | 106 self.output_header_row, |
94 ['page_name', 'bar (seconds)', 'foo (seconds)']) | 107 ['page_name', 'bar (seconds)', 'foo (seconds)']) |
95 | 108 |
96 expected = [[self._page_set[0].display_name, '-', '3.0'], | 109 expected = [[self._page_set[0].display_name, '-', '3.0'], |
97 [self._page_set[1].display_name, '4.0', '-']] | 110 [self._page_set[1].display_name, '4.0', '-']] |
98 self.assertEqual(expected, self.output_data_rows) | 111 self.assertEqual(expected, self.output_data_rows) |
99 | 112 |
100 def test_histogram(self): | 113 def test_histogram(self): |
101 results = page_test_results.PageTestResults() | 114 results = page_test_results.PageTestResults() |
102 results.WillRunPage(self._page_set[0]) | 115 results.WillRunPage(self._page_set[0]) |
103 results.AddValue(histogram.HistogramValue( | 116 results.AddValue(histogram.HistogramValue( |
104 self._page_set[0], 'a', '', | 117 self._page_set[0], 'a', '', |
105 raw_value_json='{"buckets": [{"low": 1, "high": 2, "count": 1}]}')) | 118 raw_value_json='{"buckets": [{"low": 1, "high": 2, "count": 1}]}', |
| 119 improvement_direction=improvement_direction.UP)) |
106 results.DidRunPage(self._page_set[0]) | 120 results.DidRunPage(self._page_set[0]) |
107 | 121 |
108 results.WillRunPage(self._page_set[1]) | 122 results.WillRunPage(self._page_set[1]) |
109 results.AddValue(histogram.HistogramValue( | 123 results.AddValue(histogram.HistogramValue( |
110 self._page_set[1], 'a', '', | 124 self._page_set[1], 'a', '', |
111 raw_value_json='{"buckets": [{"low": 2, "high": 3, "count": 1}]}')) | 125 raw_value_json='{"buckets": [{"low": 2, "high": 3, "count": 1}]}', |
| 126 improvement_direction=improvement_direction.UP)) |
112 results.DidRunPage(self._page_set[1]) | 127 results.DidRunPage(self._page_set[1]) |
113 | 128 |
114 self._formatter.Format(results) | 129 self._formatter.Format(results) |
115 | 130 |
116 self.assertEqual( | 131 self.assertEqual( |
117 self.output_header_row, | 132 self.output_header_row, |
118 ['page_name', 'a ()']) | 133 ['page_name', 'a ()']) |
119 self.assertEqual( | 134 self.assertEqual( |
120 self.output_data_rows, | 135 self.output_data_rows, |
121 [[self._page_set[0].display_name, '1.5'], | 136 [[self._page_set[0].display_name, '1.5'], |
122 [self._page_set[1].display_name, '2.5']]) | 137 [self._page_set[1].display_name, '2.5']]) |
OLD | NEW |