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 json | 4 import json |
5 import os | 5 import os |
6 import shutil | 6 import shutil |
7 import StringIO | 7 import StringIO |
8 import tempfile | 8 import tempfile |
9 import unittest | 9 import unittest |
10 | 10 |
11 from telemetry import story | 11 from telemetry import story |
12 from telemetry import benchmark | 12 from telemetry import benchmark |
13 from telemetry.internal.results import json_output_formatter | 13 from telemetry.internal.results import json_output_formatter |
14 from telemetry.internal.results import page_test_results | 14 from telemetry.internal.results import page_test_results |
15 from telemetry import page as page_module | 15 from telemetry import page as page_module |
16 from telemetry.timeline import trace_data | 16 from telemetry.timeline import trace_data |
| 17 from telemetry.value import improvement_direction |
17 from telemetry.value import scalar | 18 from telemetry.value import scalar |
18 from telemetry.value import trace | 19 from telemetry.value import trace |
19 | 20 |
20 | 21 |
21 def _MakeStorySet(): | 22 def _MakeStorySet(): |
22 story_set = story.StorySet(base_dir=os.path.dirname(__file__)) | 23 story_set = story.StorySet(base_dir=os.path.dirname(__file__)) |
23 story_set.AddStory( | 24 story_set.AddStory( |
24 page_module.Page('http://www.foo.com/', story_set, story_set.base_dir)) | 25 page_module.Page('http://www.foo.com/', story_set, story_set.base_dir)) |
25 story_set.AddStory( | 26 story_set.AddStory( |
26 page_module.Page('http://www.bar.com/', story_set, story_set.base_dir)) | 27 page_module.Page('http://www.bar.com/', story_set, story_set.base_dir)) |
(...skipping 12 matching lines...) Expand all Loading... |
39 self._formatter = json_output_formatter.JsonOutputFormatter( | 40 self._formatter = json_output_formatter.JsonOutputFormatter( |
40 self._output, | 41 self._output, |
41 benchmark.BenchmarkMetadata('benchmark_name')) | 42 benchmark.BenchmarkMetadata('benchmark_name')) |
42 | 43 |
43 def testOutputAndParse(self): | 44 def testOutputAndParse(self): |
44 results = page_test_results.PageTestResults() | 45 results = page_test_results.PageTestResults() |
45 | 46 |
46 self._output.truncate(0) | 47 self._output.truncate(0) |
47 | 48 |
48 results.WillRunPage(self._story_set[0]) | 49 results.WillRunPage(self._story_set[0]) |
49 v0 = scalar.ScalarValue(results.current_page, 'foo', 'seconds', 3) | 50 v0 = scalar.ScalarValue(results.current_page, 'foo', 'seconds', 3, |
| 51 improvement_direction=improvement_direction.DOWN) |
50 results.AddValue(v0) | 52 results.AddValue(v0) |
51 results.DidRunPage(self._story_set[0]) | 53 results.DidRunPage(self._story_set[0]) |
52 | 54 |
53 self._formatter.Format(results) | 55 self._formatter.Format(results) |
54 json.loads(self._output.getvalue()) | 56 json.loads(self._output.getvalue()) |
55 | 57 |
56 def testAsDictBaseKeys(self): | 58 def testAsDictBaseKeys(self): |
57 results = page_test_results.PageTestResults() | 59 results = page_test_results.PageTestResults() |
58 d = json_output_formatter.ResultsAsDict(results, | 60 d = json_output_formatter.ResultsAsDict(results, |
59 self._formatter.benchmark_metadata) | 61 self._formatter.benchmark_metadata) |
60 | 62 |
61 self.assertEquals(d['format_version'], '0.2') | 63 self.assertEquals(d['format_version'], '0.2') |
62 self.assertEquals(d['next_version'], '0.3') | 64 self.assertEquals(d['next_version'], '0.3') |
63 self.assertEquals(d['benchmark_metadata']['name'], 'benchmark_name') | 65 self.assertEquals(d['benchmark_metadata']['name'], 'benchmark_name') |
64 | 66 |
65 def testAsDictWithOnePage(self): | 67 def testAsDictWithOnePage(self): |
66 results = page_test_results.PageTestResults() | 68 results = page_test_results.PageTestResults() |
67 results.WillRunPage(self._story_set[0]) | 69 results.WillRunPage(self._story_set[0]) |
68 v0 = scalar.ScalarValue(results.current_page, 'foo', 'seconds', 3) | 70 v0 = scalar.ScalarValue(results.current_page, 'foo', 'seconds', 3, |
| 71 improvement_direction=improvement_direction.DOWN) |
69 results.AddValue(v0) | 72 results.AddValue(v0) |
70 results.DidRunPage(self._story_set[0]) | 73 results.DidRunPage(self._story_set[0]) |
71 | 74 |
72 d = json_output_formatter.ResultsAsDict(results, | 75 d = json_output_formatter.ResultsAsDict(results, |
73 self._formatter.benchmark_metadata) | 76 self._formatter.benchmark_metadata) |
74 | 77 |
75 self.assertTrue(_HasPage(d['pages'], self._story_set[0])) | 78 self.assertTrue(_HasPage(d['pages'], self._story_set[0])) |
76 self.assertTrue(_HasValueNamed(d['per_page_values'], 'foo')) | 79 self.assertTrue(_HasValueNamed(d['per_page_values'], 'foo')) |
77 | 80 |
78 def testAsDictWithTraceValue(self): | 81 def testAsDictWithTraceValue(self): |
(...skipping 17 matching lines...) Expand all Loading... |
96 self.assertTrue(output_trace_path.startswith(tempdir)) | 99 self.assertTrue(output_trace_path.startswith(tempdir)) |
97 self.assertTrue(os.path.exists(output_trace_path)) | 100 self.assertTrue(os.path.exists(output_trace_path)) |
98 finally: | 101 finally: |
99 shutil.rmtree(tempdir) | 102 shutil.rmtree(tempdir) |
100 | 103 |
101 | 104 |
102 | 105 |
103 def testAsDictWithTwoPages(self): | 106 def testAsDictWithTwoPages(self): |
104 results = page_test_results.PageTestResults() | 107 results = page_test_results.PageTestResults() |
105 results.WillRunPage(self._story_set[0]) | 108 results.WillRunPage(self._story_set[0]) |
106 v0 = scalar.ScalarValue(results.current_page, 'foo', 'seconds', 3) | 109 v0 = scalar.ScalarValue(results.current_page, 'foo', 'seconds', 3, |
| 110 improvement_direction=improvement_direction.DOWN) |
107 results.AddValue(v0) | 111 results.AddValue(v0) |
108 results.DidRunPage(self._story_set[0]) | 112 results.DidRunPage(self._story_set[0]) |
109 | 113 |
110 results.WillRunPage(self._story_set[1]) | 114 results.WillRunPage(self._story_set[1]) |
111 v1 = scalar.ScalarValue(results.current_page, 'bar', 'seconds', 4) | 115 v1 = scalar.ScalarValue(results.current_page, 'bar', 'seconds', 4, |
| 116 improvement_direction=improvement_direction.DOWN) |
112 results.AddValue(v1) | 117 results.AddValue(v1) |
113 results.DidRunPage(self._story_set[1]) | 118 results.DidRunPage(self._story_set[1]) |
114 | 119 |
115 d = json_output_formatter.ResultsAsDict(results, | 120 d = json_output_formatter.ResultsAsDict(results, |
116 self._formatter.benchmark_metadata) | 121 self._formatter.benchmark_metadata) |
117 | 122 |
118 self.assertTrue(_HasPage(d['pages'], self._story_set[0])) | 123 self.assertTrue(_HasPage(d['pages'], self._story_set[0])) |
119 self.assertTrue(_HasPage(d['pages'], self._story_set[1])) | 124 self.assertTrue(_HasPage(d['pages'], self._story_set[1])) |
120 self.assertTrue(_HasValueNamed(d['per_page_values'], 'foo')) | 125 self.assertTrue(_HasValueNamed(d['per_page_values'], 'foo')) |
121 self.assertTrue(_HasValueNamed(d['per_page_values'], 'bar')) | 126 self.assertTrue(_HasValueNamed(d['per_page_values'], 'bar')) |
122 | 127 |
123 def testAsDictWithSummaryValueOnly(self): | 128 def testAsDictWithSummaryValueOnly(self): |
124 results = page_test_results.PageTestResults() | 129 results = page_test_results.PageTestResults() |
125 v = scalar.ScalarValue(None, 'baz', 'seconds', 5) | 130 v = scalar.ScalarValue(None, 'baz', 'seconds', 5, |
| 131 improvement_direction=improvement_direction.DOWN) |
126 results.AddSummaryValue(v) | 132 results.AddSummaryValue(v) |
127 | 133 |
128 d = json_output_formatter.ResultsAsDict(results, | 134 d = json_output_formatter.ResultsAsDict(results, |
129 self._formatter.benchmark_metadata) | 135 self._formatter.benchmark_metadata) |
130 | 136 |
131 self.assertFalse(d['pages']) | 137 self.assertFalse(d['pages']) |
132 self.assertTrue(_HasValueNamed(d['summary_values'], 'baz')) | 138 self.assertTrue(_HasValueNamed(d['summary_values'], 'baz')) |
OLD | NEW |