Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(47)

Side by Side Diff: telemetry/telemetry/internal/results/json_output_formatter_unittest.py

Issue 3004383002: Remove JsonOutputFormatter from telemetry. (Closed)
Patch Set: Created 3 years, 3 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
(Empty)
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
3 # found in the LICENSE file.
4 import json
5 import os
6 import shutil
7 import StringIO
8 import tempfile
9 import unittest
10
11 from telemetry import story
12 from telemetry import benchmark
13 from telemetry.internal.results import json_output_formatter
14 from telemetry.internal.results import page_test_results
15 from telemetry import page as page_module
16 from telemetry.value import improvement_direction
17 from telemetry.value import scalar
18 from telemetry.value import trace
19 from tracing.trace_data import trace_data
20
21
22 def _MakeStorySet():
23 story_set = story.StorySet(base_dir=os.path.dirname(__file__))
24 story_set.AddStory(
25 page_module.Page('http://www.foo.com/', story_set, story_set.base_dir,
26 name='http://www.foo.com/'))
27 story_set.AddStory(
28 page_module.Page('http://www.bar.com/', story_set, story_set.base_dir,
29 name='http://www.bar.com/'))
30 return story_set
31
32 def _HasPage(pages, page):
33 return pages.get(page.id, None) != None
34
35 def _HasValueNamed(values, name):
36 return len([x for x in values if x['name'] == name]) == 1
37
38 class JsonOutputFormatterTest(unittest.TestCase):
39 def setUp(self):
40 self._output = StringIO.StringIO()
41 self._story_set = _MakeStorySet()
42 self._formatter = json_output_formatter.JsonOutputFormatter(
43 self._output,
44 benchmark.BenchmarkMetadata('benchmark_name'))
45
46 def testOutputAndParse(self):
47 results = page_test_results.PageTestResults()
48
49 self._output.truncate(0)
50
51 results.WillRunPage(self._story_set[0])
52 v0 = scalar.ScalarValue(results.current_page, 'foo', 'seconds', 3,
53 improvement_direction=improvement_direction.DOWN)
54 results.AddValue(v0)
55 results.DidRunPage(self._story_set[0])
56
57 self._formatter.Format(results)
58 json.loads(self._output.getvalue())
59
60 def testAsDictBaseKeys(self):
61 results = page_test_results.PageTestResults()
62 d = json_output_formatter.ResultsAsDict(
63 results, self._formatter.benchmark_metadata)
64
65 self.assertEquals(d['format_version'], '0.2')
66 self.assertEquals(d['next_version'], '0.3')
67 self.assertEquals(d['benchmark_metadata']['name'], 'benchmark_name')
68
69 def testAsDictWithOnePage(self):
70 results = page_test_results.PageTestResults()
71 results.WillRunPage(self._story_set[0])
72 v0 = scalar.ScalarValue(results.current_page, 'foo', 'seconds', 3,
73 improvement_direction=improvement_direction.DOWN)
74 results.AddValue(v0)
75 results.DidRunPage(self._story_set[0])
76
77 d = json_output_formatter.ResultsAsDict(
78 results, self._formatter.benchmark_metadata)
79
80 self.assertTrue(_HasPage(d['pages'], self._story_set[0]))
81 self.assertTrue(_HasValueNamed(d['per_page_values'], 'foo'))
82
83 def testAsDictWithTraceValue(self):
84 tempdir = tempfile.mkdtemp()
85 try:
86 results = page_test_results.PageTestResults()
87 results.WillRunPage(self._story_set[0])
88 v0 = trace.TraceValue(
89 results.current_page,
90 trace_data.CreateTraceDataFromRawData([{'event': 'test'}]))
91 results.AddValue(v0)
92 results.DidRunPage(self._story_set[0])
93 results._SerializeTracesToDirPath(tempdir)
94 d = json_output_formatter.ResultsAsDict(
95 results, self._formatter.benchmark_metadata)
96
97 self.assertTrue(_HasPage(d['pages'], self._story_set[0]))
98 self.assertTrue(_HasValueNamed(d['per_page_values'], 'trace'))
99 self.assertEquals(len(d['files']), 1)
100 output_trace_path = d['files'].values()[0]
101 self.assertTrue(output_trace_path.startswith(tempdir))
102 self.assertTrue(os.path.exists(output_trace_path))
103 finally:
104 shutil.rmtree(tempdir)
105
106 def testAsDictWithTwoPages(self):
107 results = page_test_results.PageTestResults()
108 results.WillRunPage(self._story_set[0])
109 v0 = scalar.ScalarValue(results.current_page, 'foo', 'seconds', 3,
110 improvement_direction=improvement_direction.DOWN)
111 results.AddValue(v0)
112 results.DidRunPage(self._story_set[0])
113
114 results.WillRunPage(self._story_set[1])
115 v1 = scalar.ScalarValue(results.current_page, 'bar', 'seconds', 4,
116 improvement_direction=improvement_direction.DOWN)
117 results.AddValue(v1)
118 results.DidRunPage(self._story_set[1])
119
120 d = json_output_formatter.ResultsAsDict(
121 results, self._formatter.benchmark_metadata)
122
123 self.assertTrue(_HasPage(d['pages'], self._story_set[0]))
124 self.assertTrue(_HasPage(d['pages'], self._story_set[1]))
125 self.assertTrue(_HasValueNamed(d['per_page_values'], 'foo'))
126 self.assertTrue(_HasValueNamed(d['per_page_values'], 'bar'))
127
128 def testAsDictWithSummaryValueOnly(self):
129 results = page_test_results.PageTestResults()
130 v = scalar.ScalarValue(None, 'baz', 'seconds', 5,
131 improvement_direction=improvement_direction.DOWN)
132 results.AddSummaryValue(v)
133
134 d = json_output_formatter.ResultsAsDict(
135 results, self._formatter.benchmark_metadata)
136
137 self.assertFalse(d['pages'])
138 self.assertTrue(_HasValueNamed(d['summary_values'], 'baz'))
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698