| 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 | 4 |
| 5 import json | 5 import json |
| 6 import os | 6 import os |
| 7 import StringIO | 7 import StringIO |
| 8 import unittest | 8 import unittest |
| 9 | 9 |
| 10 from telemetry import benchmark | 10 from telemetry import benchmark |
| 11 from telemetry import story | 11 from telemetry import story |
| 12 from telemetry.internal.results import chart_json_output_formatter | 12 from telemetry.internal.results import chart_json_output_formatter |
| 13 from telemetry.internal.results import page_test_results | 13 from telemetry.internal.results import page_test_results |
| 14 from telemetry import page as page_module | 14 from telemetry import page as page_module |
| 15 from telemetry.value import improvement_direction |
| 15 from telemetry.value import list_of_scalar_values | 16 from telemetry.value import list_of_scalar_values |
| 16 from telemetry.value import scalar | 17 from telemetry.value import scalar |
| 17 | 18 |
| 18 | 19 |
| 19 def _MakeStorySet(): | 20 def _MakeStorySet(): |
| 20 ps = story.StorySet(base_dir=os.path.dirname(__file__)) | 21 ps = story.StorySet(base_dir=os.path.dirname(__file__)) |
| 21 ps.AddStory(page_module.Page('http://www.foo.com/', ps, ps.base_dir)) | 22 ps.AddStory(page_module.Page('http://www.foo.com/', ps, ps.base_dir)) |
| 22 ps.AddStory(page_module.Page('http://www.bar.com/', ps, ps.base_dir)) | 23 ps.AddStory(page_module.Page('http://www.bar.com/', ps, ps.base_dir)) |
| 23 return ps | 24 return ps |
| 24 | 25 |
| 25 class ChartJsonTest(unittest.TestCase): | 26 class ChartJsonTest(unittest.TestCase): |
| 26 def setUp(self): | 27 def setUp(self): |
| 27 self._output = StringIO.StringIO() | 28 self._output = StringIO.StringIO() |
| 28 self._story_set = _MakeStorySet() | 29 self._story_set = _MakeStorySet() |
| 29 self._benchmark_metadata = benchmark.BenchmarkMetadata( | 30 self._benchmark_metadata = benchmark.BenchmarkMetadata( |
| 30 'benchmark_name', 'benchmark_description') | 31 'benchmark_name', 'benchmark_description') |
| 31 self._formatter = chart_json_output_formatter.ChartJsonOutputFormatter( | 32 self._formatter = chart_json_output_formatter.ChartJsonOutputFormatter( |
| 32 self._output, self._benchmark_metadata) | 33 self._output, self._benchmark_metadata) |
| 33 | 34 |
| 34 def testOutputAndParse(self): | 35 def testOutputAndParse(self): |
| 35 results = page_test_results.PageTestResults() | 36 results = page_test_results.PageTestResults() |
| 36 | 37 |
| 37 self._output.truncate(0) | 38 self._output.truncate(0) |
| 38 | 39 |
| 39 results.WillRunPage(self._story_set[0]) | 40 results.WillRunPage(self._story_set[0]) |
| 40 v0 = scalar.ScalarValue(results.current_page, 'foo', 'seconds', 3) | 41 v0 = scalar.ScalarValue(results.current_page, 'foo', 'seconds', 3, |
| 42 improvement_direction=improvement_direction.DOWN) |
| 41 results.AddValue(v0) | 43 results.AddValue(v0) |
| 42 results.DidRunPage(self._story_set[0]) | 44 results.DidRunPage(self._story_set[0]) |
| 43 | 45 |
| 44 self._formatter.Format(results) | 46 self._formatter.Format(results) |
| 45 d = json.loads(self._output.getvalue()) | 47 d = json.loads(self._output.getvalue()) |
| 46 self.assertIn('foo', d['charts']) | 48 self.assertIn('foo', d['charts']) |
| 47 | 49 |
| 48 def testAsChartDictSerializable(self): | 50 def testAsChartDictSerializable(self): |
| 49 v0 = scalar.ScalarValue(self._story_set[0], 'foo', 'seconds', 3) | 51 v0 = scalar.ScalarValue(self._story_set[0], 'foo', 'seconds', 3, |
| 52 improvement_direction=improvement_direction.DOWN) |
| 50 page_specific_values = [v0] | 53 page_specific_values = [v0] |
| 51 summary_values = [] | 54 summary_values = [] |
| 52 | 55 |
| 53 d = chart_json_output_formatter.ResultsAsChartDict( | 56 d = chart_json_output_formatter.ResultsAsChartDict( |
| 54 self._benchmark_metadata, | 57 self._benchmark_metadata, |
| 55 page_specific_values, | 58 page_specific_values, |
| 56 summary_values) | 59 summary_values) |
| 57 json.dumps(d) | 60 json.dumps(d) |
| 58 | 61 |
| 59 def testAsChartDictBaseKeys(self): | 62 def testAsChartDictBaseKeys(self): |
| (...skipping 17 matching lines...) Expand all Loading... |
| 77 summary_values = [] | 80 summary_values = [] |
| 78 | 81 |
| 79 d = chart_json_output_formatter.ResultsAsChartDict( | 82 d = chart_json_output_formatter.ResultsAsChartDict( |
| 80 benchmark.BenchmarkMetadata('benchmark_name', ''), | 83 benchmark.BenchmarkMetadata('benchmark_name', ''), |
| 81 page_specific_values, | 84 page_specific_values, |
| 82 summary_values) | 85 summary_values) |
| 83 | 86 |
| 84 self.assertEquals('', d['benchmark_metadata']['description']) | 87 self.assertEquals('', d['benchmark_metadata']['description']) |
| 85 | 88 |
| 86 def testAsChartDictPageSpecificValuesSamePage(self): | 89 def testAsChartDictPageSpecificValuesSamePage(self): |
| 87 v0 = scalar.ScalarValue(self._story_set[0], 'foo', 'seconds', 3) | 90 v0 = scalar.ScalarValue(self._story_set[0], 'foo', 'seconds', 3, |
| 88 v1 = scalar.ScalarValue(self._story_set[0], 'foo', 'seconds', 4) | 91 improvement_direction=improvement_direction.DOWN) |
| 92 v1 = scalar.ScalarValue(self._story_set[0], 'foo', 'seconds', 4, |
| 93 improvement_direction=improvement_direction.DOWN) |
| 89 page_specific_values = [v0, v1] | 94 page_specific_values = [v0, v1] |
| 90 summary_values = [] | 95 summary_values = [] |
| 91 | 96 |
| 92 d = chart_json_output_formatter.ResultsAsChartDict( | 97 d = chart_json_output_formatter.ResultsAsChartDict( |
| 93 self._benchmark_metadata, | 98 self._benchmark_metadata, |
| 94 page_specific_values, | 99 page_specific_values, |
| 95 summary_values) | 100 summary_values) |
| 96 | 101 |
| 97 self.assertTrue('foo' in d['charts']) | 102 self.assertTrue('foo' in d['charts']) |
| 98 self.assertTrue('http://www.foo.com/' in d['charts']['foo']) | 103 self.assertTrue('http://www.foo.com/' in d['charts']['foo']) |
| 99 | 104 |
| 100 def testAsChartDictPageSpecificValuesAndComputedSummaryWithTraceName(self): | 105 def testAsChartDictPageSpecificValuesAndComputedSummaryWithTraceName(self): |
| 101 v0 = scalar.ScalarValue(self._story_set[0], 'foo.bar', 'seconds', 3) | 106 v0 = scalar.ScalarValue(self._story_set[0], 'foo.bar', 'seconds', 3, |
| 102 v1 = scalar.ScalarValue(self._story_set[1], 'foo.bar', 'seconds', 4) | 107 improvement_direction=improvement_direction.DOWN) |
| 108 v1 = scalar.ScalarValue(self._story_set[1], 'foo.bar', 'seconds', 4, |
| 109 improvement_direction=improvement_direction.DOWN) |
| 103 page_specific_values = [v0, v1] | 110 page_specific_values = [v0, v1] |
| 104 summary_values = [] | 111 summary_values = [] |
| 105 | 112 |
| 106 d = chart_json_output_formatter.ResultsAsChartDict( | 113 d = chart_json_output_formatter.ResultsAsChartDict( |
| 107 self._benchmark_metadata, | 114 self._benchmark_metadata, |
| 108 page_specific_values, | 115 page_specific_values, |
| 109 summary_values) | 116 summary_values) |
| 110 | 117 |
| 111 self.assertTrue('foo' in d['charts']) | 118 self.assertTrue('foo' in d['charts']) |
| 112 self.assertTrue('http://www.foo.com/' in d['charts']['foo']) | 119 self.assertTrue('http://www.foo.com/' in d['charts']['foo']) |
| 113 self.assertTrue('http://www.bar.com/' in d['charts']['foo']) | 120 self.assertTrue('http://www.bar.com/' in d['charts']['foo']) |
| 114 self.assertTrue('bar' in d['charts']['foo']) | 121 self.assertTrue('bar' in d['charts']['foo']) |
| 115 | 122 |
| 116 def testAsChartDictPageSpecificValuesAndComputedSummaryWithoutTraceName(self): | 123 def testAsChartDictPageSpecificValuesAndComputedSummaryWithoutTraceName(self): |
| 117 v0 = scalar.ScalarValue(self._story_set[0], 'foo', 'seconds', 3) | 124 v0 = scalar.ScalarValue(self._story_set[0], 'foo', 'seconds', 3, |
| 118 v1 = scalar.ScalarValue(self._story_set[1], 'foo', 'seconds', 4) | 125 improvement_direction=improvement_direction.DOWN) |
| 126 v1 = scalar.ScalarValue(self._story_set[1], 'foo', 'seconds', 4, |
| 127 improvement_direction=improvement_direction.DOWN) |
| 119 page_specific_values = [v0, v1] | 128 page_specific_values = [v0, v1] |
| 120 summary_values = [] | 129 summary_values = [] |
| 121 | 130 |
| 122 d = chart_json_output_formatter.ResultsAsChartDict( | 131 d = chart_json_output_formatter.ResultsAsChartDict( |
| 123 self._benchmark_metadata, | 132 self._benchmark_metadata, |
| 124 page_specific_values, | 133 page_specific_values, |
| 125 summary_values) | 134 summary_values) |
| 126 | 135 |
| 127 self.assertTrue('foo' in d['charts']) | 136 self.assertTrue('foo' in d['charts']) |
| 128 self.assertTrue('http://www.foo.com/' in d['charts']['foo']) | 137 self.assertTrue('http://www.foo.com/' in d['charts']['foo']) |
| 129 self.assertTrue('http://www.bar.com/' in d['charts']['foo']) | 138 self.assertTrue('http://www.bar.com/' in d['charts']['foo']) |
| 130 self.assertTrue('summary' in d['charts']['foo']) | 139 self.assertTrue('summary' in d['charts']['foo']) |
| 131 | 140 |
| 132 def testAsChartDictSummaryValueWithTraceName(self): | 141 def testAsChartDictSummaryValueWithTraceName(self): |
| 133 v0 = list_of_scalar_values.ListOfScalarValues(None, 'foo.bar', 'seconds', | 142 v0 = list_of_scalar_values.ListOfScalarValues( |
| 134 [3, 4]) | 143 None, 'foo.bar', 'seconds', [3, 4], |
| 144 improvement_direction=improvement_direction.DOWN) |
| 135 page_specific_values = [] | 145 page_specific_values = [] |
| 136 summary_values = [v0] | 146 summary_values = [v0] |
| 137 | 147 |
| 138 d = chart_json_output_formatter.ResultsAsChartDict( | 148 d = chart_json_output_formatter.ResultsAsChartDict( |
| 139 self._benchmark_metadata, | 149 self._benchmark_metadata, |
| 140 page_specific_values, | 150 page_specific_values, |
| 141 summary_values) | 151 summary_values) |
| 142 | 152 |
| 143 self.assertTrue('bar' in d['charts']['foo']) | 153 self.assertTrue('bar' in d['charts']['foo']) |
| 144 | 154 |
| 145 def testAsChartDictSummaryValueWithoutTraceName(self): | 155 def testAsChartDictSummaryValueWithoutTraceName(self): |
| 146 v0 = list_of_scalar_values.ListOfScalarValues(None, 'foo', 'seconds', | 156 v0 = list_of_scalar_values.ListOfScalarValues( |
| 147 [3, 4]) | 157 None, 'foo', 'seconds', [3, 4], |
| 158 improvement_direction=improvement_direction.DOWN) |
| 148 page_specific_values = [] | 159 page_specific_values = [] |
| 149 summary_values = [v0] | 160 summary_values = [v0] |
| 150 | 161 |
| 151 d = chart_json_output_formatter.ResultsAsChartDict( | 162 d = chart_json_output_formatter.ResultsAsChartDict( |
| 152 self._benchmark_metadata, | 163 self._benchmark_metadata, |
| 153 page_specific_values, | 164 page_specific_values, |
| 154 summary_values) | 165 summary_values) |
| 155 | 166 |
| 156 self.assertTrue('summary' in d['charts']['foo']) | 167 self.assertTrue('summary' in d['charts']['foo']) |
| 157 | 168 |
| 158 def testAsChartDictValueSmokeTest(self): | 169 def testAsChartDictValueSmokeTest(self): |
| 159 v0 = list_of_scalar_values.ListOfScalarValues(None, 'foo.bar', 'seconds', | 170 v0 = list_of_scalar_values.ListOfScalarValues( |
| 160 [3, 4]) | 171 None, 'foo.bar', 'seconds', [3, 4], |
| 172 improvement_direction=improvement_direction.DOWN) |
| 161 page_specific_values = [] | 173 page_specific_values = [] |
| 162 summary_values = [v0] | 174 summary_values = [v0] |
| 163 | 175 |
| 164 d = chart_json_output_formatter.ResultsAsChartDict( | 176 d = chart_json_output_formatter.ResultsAsChartDict( |
| 165 self._benchmark_metadata, | 177 self._benchmark_metadata, |
| 166 page_specific_values, | 178 page_specific_values, |
| 167 summary_values) | 179 summary_values) |
| 168 | 180 |
| 169 self.assertEquals(d['charts']['foo']['bar']['values'], [3, 4]) | 181 self.assertEquals(d['charts']['foo']['bar']['values'], [3, 4]) |
| OLD | NEW |