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.
8 from telemetry
import story
9 from telemetry
.internal
.results
import base_test_results_unittest
10 from telemetry
.internal
.results
import gtest_progress_reporter
11 from telemetry
.internal
.results
import page_test_results
12 from telemetry
import page
as page_module
13 from telemetry
.testing
import fakes
14 from telemetry
.testing
import stream
15 from telemetry
.value
import failure
16 from telemetry
.value
import skip
19 _GROUPING_KEY_DEFAULT
= {'1': '2'}
23 story_set
= story
.StorySet(base_dir
=os
.path
.dirname(__file__
))
25 page_module
.Page('http://www.foo.com/', story_set
, story_set
.base_dir
))
27 page_module
.Page('http://www.bar.com/', story_set
, story_set
.base_dir
))
29 page_module
.Page('http://www.baz.com/', story_set
, story_set
.base_dir
))
31 page_module
.Page('http://www.roz.com/', story_set
, story_set
.base_dir
))
33 page_module
.Page('http://www.fus.com/', story_set
, story_set
.base_dir
,
34 grouping_keys
=_GROUPING_KEY_DEFAULT
))
36 page_module
.Page('http://www.ro.com/', story_set
, story_set
.base_dir
,
37 grouping_keys
=_GROUPING_KEY_DEFAULT
))
41 class GTestProgressReporterTest(
42 base_test_results_unittest
.BaseTestResultsUnittest
):
45 super(GTestProgressReporterTest
, self
).setUp()
46 self
._fake
_timer
= fakes
.FakeTimer(gtest_progress_reporter
)
48 self
._output
_stream
= stream
.TestOutputStream()
49 self
._reporter
= gtest_progress_reporter
.GTestProgressReporter(
53 self
._fake
_timer
.Restore()
55 def testSingleSuccessPage(self
):
56 test_story_set
= _MakeStorySet()
58 results
= page_test_results
.PageTestResults(
59 progress_reporter
=self
._reporter
)
60 results
.WillRunPage(test_story_set
.stories
[0])
61 self
._fake
_timer
.SetTime(0.007)
62 results
.DidRunPage(test_story_set
.stories
[0])
64 results
.PrintSummary()
65 expected
= ('[ RUN ] http://www.foo.com/\n'
66 '[ OK ] http://www.foo.com/ (7 ms)\n'
67 '[ PASSED ] 1 test.\n\n')
68 self
.assertEquals(expected
, ''.join(self
._output
_stream
.output_data
))
70 def testSingleSuccessPageWithGroupingKeys(self
):
71 test_story_set
= _MakeStorySet()
73 results
= page_test_results
.PageTestResults(
74 progress_reporter
=self
._reporter
)
75 results
.WillRunPage(test_story_set
.stories
[4])
76 self
._fake
_timer
.SetTime(0.007)
77 results
.DidRunPage(test_story_set
.stories
[4])
79 results
.PrintSummary()
80 expected
= ("[ RUN ] http://www.fus.com/@{'1': '2'}\n"
81 "[ OK ] http://www.fus.com/@{'1': '2'} (7 ms)\n"
82 "[ PASSED ] 1 test.\n\n")
83 self
.assertEquals(expected
, ''.join(self
._output
_stream
.output_data
))
85 def testSingleFailedPage(self
):
86 test_story_set
= _MakeStorySet()
88 results
= page_test_results
.PageTestResults(
89 progress_reporter
=self
._reporter
)
90 results
.WillRunPage(test_story_set
.stories
[0])
91 exc_info
= self
.CreateException()
92 results
.AddValue(failure
.FailureValue(test_story_set
.stories
[0], exc_info
))
93 results
.DidRunPage(test_story_set
.stories
[0])
95 results
.PrintSummary()
96 exception_trace
= ''.join(traceback
.format_exception(*exc_info
))
97 expected
= ('[ RUN ] http://www.foo.com/\n'
99 '[ FAILED ] http://www.foo.com/ (0 ms)\n'
100 '[ PASSED ] 0 tests.\n'
101 '[ FAILED ] 1 test, listed below:\n'
102 '[ FAILED ] http://www.foo.com/\n\n'
103 '1 FAILED TEST\n\n' % exception_trace
)
104 self
.assertEquals(expected
, ''.join(self
._output
_stream
.output_data
))
106 def testSingleFailedPageWithGroupingKeys(self
):
107 test_story_set
= _MakeStorySet()
109 results
= page_test_results
.PageTestResults(
110 progress_reporter
=self
._reporter
)
111 results
.WillRunPage(test_story_set
.stories
[4])
112 exc_info
= self
.CreateException()
113 results
.AddValue(failure
.FailureValue(test_story_set
.stories
[4], exc_info
))
114 results
.DidRunPage(test_story_set
.stories
[4])
116 results
.PrintSummary()
117 exception_trace
= ''.join(traceback
.format_exception(*exc_info
))
118 expected
= ("[ RUN ] http://www.fus.com/@{'1': '2'}\n"
120 "[ FAILED ] http://www.fus.com/@{'1': '2'} (0 ms)\n"
121 "[ PASSED ] 0 tests.\n"
122 "[ FAILED ] 1 test, listed below:\n"
123 "[ FAILED ] http://www.fus.com/@{'1': '2'}\n\n"
124 "1 FAILED TEST\n\n" % exception_trace
)
125 self
.assertEquals(expected
, ''.join(self
._output
_stream
.output_data
))
127 def testSingleSkippedPage(self
):
128 test_story_set
= _MakeStorySet()
129 results
= page_test_results
.PageTestResults(
130 progress_reporter
=self
._reporter
)
131 results
.WillRunPage(test_story_set
.stories
[0])
132 self
._fake
_timer
.SetTime(0.007)
133 results
.AddValue(skip
.SkipValue(test_story_set
.stories
[0],
134 'Page skipped for testing reason'))
135 results
.DidRunPage(test_story_set
.stories
[0])
137 results
.PrintSummary()
138 expected
= ('[ RUN ] http://www.foo.com/\n'
139 '===== SKIPPING TEST http://www.foo.com/:'
140 ' Page skipped for testing reason =====\n'
141 '[ OK ] http://www.foo.com/ (7 ms)\n'
142 '[ PASSED ] 1 test.\n\n')
143 self
.assertEquals(expected
, ''.join(self
._output
_stream
.output_data
))
145 def testPassAndFailedPages(self
):
146 test_story_set
= _MakeStorySet()
147 results
= page_test_results
.PageTestResults(
148 progress_reporter
=self
._reporter
)
149 exc_info
= self
.CreateException()
151 results
.WillRunPage(test_story_set
.stories
[0])
152 self
._fake
_timer
.SetTime(0.007)
153 results
.DidRunPage(test_story_set
.stories
[0])
155 results
.WillRunPage(test_story_set
.stories
[1])
156 self
._fake
_timer
.SetTime(0.009)
157 results
.AddValue(failure
.FailureValue(test_story_set
.stories
[1], exc_info
))
158 results
.DidRunPage(test_story_set
.stories
[1])
160 results
.WillRunPage(test_story_set
.stories
[2])
161 self
._fake
_timer
.SetTime(0.015)
162 results
.AddValue(failure
.FailureValue(test_story_set
.stories
[2], exc_info
))
163 results
.DidRunPage(test_story_set
.stories
[2])
165 results
.WillRunPage(test_story_set
.stories
[3])
166 self
._fake
_timer
.SetTime(0.020)
167 results
.DidRunPage(test_story_set
.stories
[3])
169 results
.WillRunPage(test_story_set
.stories
[4])
170 self
._fake
_timer
.SetTime(0.025)
171 results
.DidRunPage(test_story_set
.stories
[4])
173 results
.WillRunPage(test_story_set
.stories
[5])
174 self
._fake
_timer
.SetTime(0.030)
175 results
.AddValue(failure
.FailureValue(test_story_set
.stories
[5], exc_info
))
176 results
.DidRunPage(test_story_set
.stories
[5])
178 results
.PrintSummary()
179 exception_trace
= ''.join(traceback
.format_exception(*exc_info
))
180 expected
= ("[ RUN ] http://www.foo.com/\n"
181 "[ OK ] http://www.foo.com/ (7 ms)\n"
182 "[ RUN ] http://www.bar.com/\n"
184 "[ FAILED ] http://www.bar.com/ (2 ms)\n"
185 "[ RUN ] http://www.baz.com/\n"
187 "[ FAILED ] http://www.baz.com/ (6 ms)\n"
188 "[ RUN ] http://www.roz.com/\n"
189 "[ OK ] http://www.roz.com/ (5 ms)\n"
190 "[ RUN ] http://www.fus.com/@{'1': '2'}\n"
191 "[ OK ] http://www.fus.com/@{'1': '2'} (5 ms)\n"
192 "[ RUN ] http://www.ro.com/@{'1': '2'}\n"
194 "[ FAILED ] http://www.ro.com/@{'1': '2'} (5 ms)\n"
195 "[ PASSED ] 3 tests.\n"
196 "[ FAILED ] 3 tests, listed below:\n"
197 "[ FAILED ] http://www.bar.com/\n"
198 "[ FAILED ] http://www.baz.com/\n"
199 "[ FAILED ] http://www.ro.com/@{'1': '2'}\n\n"
201 % (exception_trace
, exception_trace
, exception_trace
))
202 self
.assertEquals(expected
, ''.join(self
._output
_stream
.output_data
))
204 def testStreamingResults(self
):
205 test_story_set
= _MakeStorySet()
206 results
= page_test_results
.PageTestResults(
207 progress_reporter
=self
._reporter
)
208 exc_info
= self
.CreateException()
210 results
.WillRunPage(test_story_set
.stories
[0])
211 self
._fake
_timer
.SetTime(0.007)
212 results
.DidRunPage(test_story_set
.stories
[0])
213 expected
= ('[ RUN ] http://www.foo.com/\n'
214 '[ OK ] http://www.foo.com/ (7 ms)\n')
215 self
.assertEquals(expected
, ''.join(self
._output
_stream
.output_data
))
217 results
.WillRunPage(test_story_set
.stories
[1])
218 self
._fake
_timer
.SetTime(0.009)
219 exception_trace
= ''.join(traceback
.format_exception(*exc_info
))
220 results
.AddValue(failure
.FailureValue(test_story_set
.stories
[1], exc_info
))
221 results
.DidRunPage(test_story_set
.stories
[1])
222 expected
= ('[ RUN ] http://www.foo.com/\n'
223 '[ OK ] http://www.foo.com/ (7 ms)\n'
224 '[ RUN ] http://www.bar.com/\n'
226 '[ FAILED ] http://www.bar.com/ (2 ms)\n' % exception_trace
)
228 def testOutputSkipInformation(self
):
229 test_story_set
= _MakeStorySet()
230 self
._reporter
= gtest_progress_reporter
.GTestProgressReporter(
231 self
._output
_stream
, output_skipped_tests_summary
=True)
232 results
= page_test_results
.PageTestResults(
233 progress_reporter
=self
._reporter
)
234 results
.WillRunPage(test_story_set
.stories
[0])
235 self
._fake
_timer
.SetTime(0.007)
236 results
.AddValue(skip
.SkipValue(test_story_set
.stories
[0],
237 'Page skipped for testing reason'))
238 results
.DidRunPage(test_story_set
.stories
[0])
240 results
.PrintSummary()
241 expected
= ('[ RUN ] http://www.foo.com/\n'
242 '===== SKIPPING TEST http://www.foo.com/:'
243 ' Page skipped for testing reason =====\n'
244 '[ OK ] http://www.foo.com/ (7 ms)\n'
245 '[ PASSED ] 1 test.\n'
248 'http://www.foo.com/\n'
250 self
.assertEquals(expected
, ''.join(self
._output
_stream
.output_data
))