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

Side by Side Diff: Tools/Scripts/webkitpy/layout_tests/models/test_run_results_unittest.py

Issue 230533002: Add tests for leak errors (Closed) Base URL: svn://svn.chromium.org/blink/trunk
Patch Set: Created 6 years, 8 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 | Annotate | Revision Log
OLDNEW
1 # Copyright (C) 2010 Google Inc. All rights reserved. 1 # Copyright (C) 2010 Google Inc. All rights reserved.
2 # 2 #
3 # Redistribution and use in source and binary forms, with or without 3 # Redistribution and use in source and binary forms, with or without
4 # modification, are permitted provided that the following conditions are 4 # modification, are permitted provided that the following conditions are
5 # met: 5 # met:
6 # 6 #
7 # * Redistributions of source code must retain the above copyright 7 # * Redistributions of source code must retain the above copyright
8 # notice, this list of conditions and the following disclaimer. 8 # notice, this list of conditions and the following disclaimer.
9 # * Redistributions in binary form must reproduce the above 9 # * Redistributions in binary form must reproduce the above
10 # copyright notice, this list of conditions and the following disclaimer 10 # copyright notice, this list of conditions and the following disclaimer
(...skipping 25 matching lines...) Expand all
36 36
37 37
38 def get_result(test_name, result_type=test_expectations.PASS, run_time=0): 38 def get_result(test_name, result_type=test_expectations.PASS, run_time=0):
39 failures = [] 39 failures = []
40 if result_type == test_expectations.TIMEOUT: 40 if result_type == test_expectations.TIMEOUT:
41 failures = [test_failures.FailureTimeout()] 41 failures = [test_failures.FailureTimeout()]
42 elif result_type == test_expectations.AUDIO: 42 elif result_type == test_expectations.AUDIO:
43 failures = [test_failures.FailureAudioMismatch()] 43 failures = [test_failures.FailureAudioMismatch()]
44 elif result_type == test_expectations.CRASH: 44 elif result_type == test_expectations.CRASH:
45 failures = [test_failures.FailureCrash()] 45 failures = [test_failures.FailureCrash()]
46 elif result_type == test_expectations.LEAK:
47 failures = [test_failures.FailureLeak()]
46 return test_results.TestResult(test_name, failures=failures, test_run_time=r un_time) 48 return test_results.TestResult(test_name, failures=failures, test_run_time=r un_time)
47 49
48 50
49 def run_results(port, extra_skipped_tests=[]): 51 def run_results(port, extra_skipped_tests=[]):
50 tests = ['passes/text.html', 'failures/expected/timeout.html', 'failures/exp ected/crash.html', 'failures/expected/keyboard.html', 52 tests = ['passes/text.html', 'failures/expected/timeout.html', 'failures/exp ected/crash.html', 'failures/expected/leak.html', 'failures/expected/keyboard.ht ml',
51 'failures/expected/audio.html', 'passes/skipped/skip.html'] 53 'failures/expected/audio.html', 'passes/skipped/skip.html']
52 expectations = test_expectations.TestExpectations(port, tests) 54 expectations = test_expectations.TestExpectations(port, tests)
53 if extra_skipped_tests: 55 if extra_skipped_tests:
54 expectations.add_extra_skipped_tests(extra_skipped_tests) 56 expectations.add_extra_skipped_tests(extra_skipped_tests)
55 return test_run_results.TestRunResults(expectations, len(tests)) 57 return test_run_results.TestRunResults(expectations, len(tests))
56 58
57 59
58 def summarized_results(port, expected, passing, flaky, only_include_failing=Fals e, extra_skipped_tests=[]): 60 def summarized_results(port, expected, passing, flaky, only_include_failing=Fals e, extra_skipped_tests=[]):
59 test_is_slow = False 61 test_is_slow = False
60 62
61 initial_results = run_results(port, extra_skipped_tests) 63 initial_results = run_results(port, extra_skipped_tests)
62 if expected: 64 if expected:
63 initial_results.add(get_result('passes/text.html', test_expectations.PAS S), expected, test_is_slow) 65 initial_results.add(get_result('passes/text.html', test_expectations.PAS S), expected, test_is_slow)
64 initial_results.add(get_result('failures/expected/audio.html', test_expe ctations.AUDIO), expected, test_is_slow) 66 initial_results.add(get_result('failures/expected/audio.html', test_expe ctations.AUDIO), expected, test_is_slow)
65 initial_results.add(get_result('failures/expected/timeout.html', test_ex pectations.TIMEOUT), expected, test_is_slow) 67 initial_results.add(get_result('failures/expected/timeout.html', test_ex pectations.TIMEOUT), expected, test_is_slow)
66 initial_results.add(get_result('failures/expected/crash.html', test_expe ctations.CRASH), expected, test_is_slow) 68 initial_results.add(get_result('failures/expected/crash.html', test_expe ctations.CRASH), expected, test_is_slow)
69 initial_results.add(get_result('failures/expected/leak.html', test_expec tations.LEAK), expected, test_is_slow)
67 elif passing: 70 elif passing:
68 skipped_result = get_result('passes/skipped/skip.html') 71 skipped_result = get_result('passes/skipped/skip.html')
69 skipped_result.type = test_expectations.SKIP 72 skipped_result.type = test_expectations.SKIP
70 initial_results.add(skipped_result, expected, test_is_slow) 73 initial_results.add(skipped_result, expected, test_is_slow)
71 74
72 initial_results.add(get_result('passes/text.html', run_time=1), expected , test_is_slow) 75 initial_results.add(get_result('passes/text.html', run_time=1), expected , test_is_slow)
73 initial_results.add(get_result('failures/expected/audio.html'), expected , test_is_slow) 76 initial_results.add(get_result('failures/expected/audio.html'), expected , test_is_slow)
74 initial_results.add(get_result('failures/expected/timeout.html'), expect ed, test_is_slow) 77 initial_results.add(get_result('failures/expected/timeout.html'), expect ed, test_is_slow)
75 initial_results.add(get_result('failures/expected/crash.html'), expected , test_is_slow) 78 initial_results.add(get_result('failures/expected/crash.html'), expected , test_is_slow)
79 initial_results.add(get_result('failures/expected/leak.html'), expected, test_is_slow)
76 else: 80 else:
77 initial_results.add(get_result('passes/text.html', test_expectations.TIM EOUT, run_time=1), expected, test_is_slow) 81 initial_results.add(get_result('passes/text.html', test_expectations.TIM EOUT, run_time=1), expected, test_is_slow)
78 initial_results.add(get_result('failures/expected/audio.html', test_expe ctations.AUDIO, run_time=0.049), expected, test_is_slow) 82 initial_results.add(get_result('failures/expected/audio.html', test_expe ctations.AUDIO, run_time=0.049), expected, test_is_slow)
79 initial_results.add(get_result('failures/expected/timeout.html', test_ex pectations.CRASH, run_time=0.05), expected, test_is_slow) 83 initial_results.add(get_result('failures/expected/timeout.html', test_ex pectations.CRASH, run_time=0.05), expected, test_is_slow)
80 initial_results.add(get_result('failures/expected/crash.html', test_expe ctations.TIMEOUT), expected, test_is_slow) 84 initial_results.add(get_result('failures/expected/crash.html', test_expe ctations.TIMEOUT), expected, test_is_slow)
85 initial_results.add(get_result('failures/expected/leak.html', test_expec tations.TIMEOUT), expected, test_is_slow)
81 86
82 # we only list keyboard.html here, since normally this is WontFix 87 # we only list keyboard.html here, since normally this is WontFix
83 initial_results.add(get_result('failures/expected/keyboard.html', test_e xpectations.SKIP), expected, test_is_slow) 88 initial_results.add(get_result('failures/expected/keyboard.html', test_e xpectations.SKIP), expected, test_is_slow)
84 89
85 if flaky: 90 if flaky:
86 retry_results = run_results(port, extra_skipped_tests) 91 retry_results = run_results(port, extra_skipped_tests)
87 retry_results.add(get_result('passes/text.html'), True, test_is_slow) 92 retry_results.add(get_result('passes/text.html'), True, test_is_slow)
88 retry_results.add(get_result('failures/expected/timeout.html'), True, te st_is_slow) 93 retry_results.add(get_result('failures/expected/timeout.html'), True, te st_is_slow)
89 retry_results.add(get_result('failures/expected/crash.html'), True, test _is_slow) 94 retry_results.add(get_result('failures/expected/crash.html'), True, test _is_slow)
95 retry_results.add(get_result('failures/expected/leak.html'), True, test_ is_slow)
90 else: 96 else:
91 retry_results = None 97 retry_results = None
92 98
93 return test_run_results.summarize_results(port, initial_results.expectations , initial_results, retry_results, enabled_pixel_tests_in_retry=False, only_inclu de_failing=only_include_failing) 99 return test_run_results.summarize_results(port, initial_results.expectations , initial_results, retry_results, enabled_pixel_tests_in_retry=False, only_inclu de_failing=only_include_failing)
94 100
95 101
96 class InterpretTestFailuresTest(unittest.TestCase): 102 class InterpretTestFailuresTest(unittest.TestCase):
97 def setUp(self): 103 def setUp(self):
98 host = MockHost() 104 host = MockHost()
99 self.port = host.port_factory.get(port_name='test') 105 self.port = host.port_factory.get(port_name='test')
(...skipping 19 matching lines...) Expand all
119 def setUp(self): 125 def setUp(self):
120 host = MockHost(initialize_scm_by_default=False) 126 host = MockHost(initialize_scm_by_default=False)
121 self.port = host.port_factory.get(port_name='test') 127 self.port = host.port_factory.get(port_name='test')
122 128
123 def test_no_svn_revision(self): 129 def test_no_svn_revision(self):
124 summary = summarized_results(self.port, expected=False, passing=False, f laky=False) 130 summary = summarized_results(self.port, expected=False, passing=False, f laky=False)
125 self.assertNotIn('revision', summary) 131 self.assertNotIn('revision', summary)
126 132
127 def test_num_failures_by_type(self): 133 def test_num_failures_by_type(self):
128 summary = summarized_results(self.port, expected=False, passing=False, f laky=False) 134 summary = summarized_results(self.port, expected=False, passing=False, f laky=False)
129 self.assertEquals(summary['num_failures_by_type'], {'CRASH': 1, 'MISSING ': 0, 'TEXT': 0, 'IMAGE': 0, 'NEEDSREBASELINE': 0, 'NEEDSMANUALREBASELINE': 0, ' PASS': 0, 'REBASELINE': 0, 'SKIP': 0, 'SLOW': 0, 'TIMEOUT': 2, 'IMAGE+TEXT': 0, 'LEAK': 0, 'FAIL': 0, 'AUDIO': 1, 'WONTFIX': 1}) 135 self.assertEquals(summary['num_failures_by_type'], {'CRASH': 1, 'MISSING ': 0, 'TEXT': 0, 'IMAGE': 0, 'NEEDSREBASELINE': 0, 'NEEDSMANUALREBASELINE': 0, ' PASS': 0, 'REBASELINE': 0, 'SKIP': 0, 'SLOW': 0, 'TIMEOUT': 3, 'IMAGE+TEXT': 0, 'LEAK': 0, 'FAIL': 0, 'AUDIO': 1, 'WONTFIX': 1})
Dirk Pranke 2014/04/09 16:11:51 why does timeout increase here?
hajimehoshi 2014/04/10 02:08:20 It's because the newly added test (at L85) is trea
130 136
131 summary = summarized_results(self.port, expected=True, passing=False, fl aky=False) 137 summary = summarized_results(self.port, expected=True, passing=False, fl aky=False)
132 self.assertEquals(summary['num_failures_by_type'], {'CRASH': 1, 'MISSING ': 0, 'TEXT': 0, 'IMAGE': 0, 'NEEDSREBASELINE': 0, 'NEEDSMANUALREBASELINE': 0, ' PASS': 1, 'REBASELINE': 0, 'SKIP': 0, 'SLOW': 0, 'TIMEOUT': 1, 'IMAGE+TEXT': 0, 'LEAK': 0, 'FAIL': 0, 'AUDIO': 1, 'WONTFIX': 0}) 138 self.assertEquals(summary['num_failures_by_type'], {'CRASH': 1, 'MISSING ': 0, 'TEXT': 0, 'IMAGE': 0, 'NEEDSREBASELINE': 0, 'NEEDSMANUALREBASELINE': 0, ' PASS': 1, 'REBASELINE': 0, 'SKIP': 0, 'SLOW': 0, 'TIMEOUT': 1, 'IMAGE+TEXT': 0, 'LEAK': 1, 'FAIL': 0, 'AUDIO': 1, 'WONTFIX': 0})
133 139
134 summary = summarized_results(self.port, expected=False, passing=True, fl aky=False) 140 summary = summarized_results(self.port, expected=False, passing=True, fl aky=False)
135 self.assertEquals(summary['num_failures_by_type'], {'CRASH': 0, 'MISSING ': 0, 'TEXT': 0, 'IMAGE': 0, 'NEEDSREBASELINE': 0, 'NEEDSMANUALREBASELINE': 0, ' PASS': 4, 'REBASELINE': 0, 'SKIP': 1, 'SLOW': 0, 'TIMEOUT': 0, 'IMAGE+TEXT': 0, 'LEAK': 0, 'FAIL': 0, 'AUDIO': 0, 'WONTFIX': 0}) 141 self.assertEquals(summary['num_failures_by_type'], {'CRASH': 0, 'MISSING ': 0, 'TEXT': 0, 'IMAGE': 0, 'NEEDSREBASELINE': 0, 'NEEDSMANUALREBASELINE': 0, ' PASS': 5, 'REBASELINE': 0, 'SKIP': 1, 'SLOW': 0, 'TIMEOUT': 0, 'IMAGE+TEXT': 0, 'LEAK': 0, 'FAIL': 0, 'AUDIO': 0, 'WONTFIX': 0})
136 142
137 def test_svn_revision(self): 143 def test_svn_revision(self):
138 self.port._options.builder_name = 'dummy builder' 144 self.port._options.builder_name = 'dummy builder'
139 summary = summarized_results(self.port, expected=False, passing=False, f laky=False) 145 summary = summarized_results(self.port, expected=False, passing=False, f laky=False)
140 self.assertNotEquals(summary['blink_revision'], '') 146 self.assertNotEquals(summary['blink_revision'], '')
141 147
142 def test_bug_entry(self): 148 def test_bug_entry(self):
143 self.port._options.builder_name = 'dummy builder' 149 self.port._options.builder_name = 'dummy builder'
144 summary = summarized_results(self.port, expected=False, passing=True, fl aky=False) 150 summary = summarized_results(self.port, expected=False, passing=True, fl aky=False)
145 self.assertEquals(summary['tests']['passes']['skipped']['skip.html']['bu gs'], ['Bug(test)']) 151 self.assertEquals(summary['tests']['passes']['skipped']['skip.html']['bu gs'], ['Bug(test)'])
(...skipping 15 matching lines...) Expand all
161 self.assertTrue(summary['tests']['passes']['text.html']) 167 self.assertTrue(summary['tests']['passes']['text.html'])
162 self.assertTrue('is_unexpected' not in summary['tests']['passes']['text. html']) 168 self.assertTrue('is_unexpected' not in summary['tests']['passes']['text. html'])
163 169
164 def test_summarized_results_expected_only_include_failing(self): 170 def test_summarized_results_expected_only_include_failing(self):
165 self.port._options.builder_name = 'dummy builder' 171 self.port._options.builder_name = 'dummy builder'
166 summary = summarized_results(self.port, expected=True, passing=False, fl aky=False, only_include_failing=True) 172 summary = summarized_results(self.port, expected=True, passing=False, fl aky=False, only_include_failing=True)
167 self.assertNotIn('passes', summary['tests']) 173 self.assertNotIn('passes', summary['tests'])
168 self.assertTrue(summary['tests']['failures']['expected']['audio.html']) 174 self.assertTrue(summary['tests']['failures']['expected']['audio.html'])
169 self.assertTrue(summary['tests']['failures']['expected']['timeout.html'] ) 175 self.assertTrue(summary['tests']['failures']['expected']['timeout.html'] )
170 self.assertTrue(summary['tests']['failures']['expected']['crash.html']) 176 self.assertTrue(summary['tests']['failures']['expected']['crash.html'])
177 self.assertTrue(summary['tests']['failures']['expected']['leak.html'])
171 178
172 def test_summarized_results_skipped(self): 179 def test_summarized_results_skipped(self):
173 self.port._options.builder_name = 'dummy builder' 180 self.port._options.builder_name = 'dummy builder'
174 summary = summarized_results(self.port, expected=False, passing=True, fl aky=False) 181 summary = summarized_results(self.port, expected=False, passing=True, fl aky=False)
175 self.assertEquals(summary['tests']['passes']['skipped']['skip.html']['ex pected'], 'SKIP') 182 self.assertEquals(summary['tests']['passes']['skipped']['skip.html']['ex pected'], 'SKIP')
176 183
177 def test_summarized_results_only_inlude_failing(self): 184 def test_summarized_results_only_inlude_failing(self):
178 self.port._options.builder_name = 'dummy builder' 185 self.port._options.builder_name = 'dummy builder'
179 summary = summarized_results(self.port, expected=False, passing=True, fl aky=False, only_include_failing=True) 186 summary = summarized_results(self.port, expected=False, passing=True, fl aky=False, only_include_failing=True)
180 self.assertTrue('passes' not in summary['tests']) 187 self.assertTrue('passes' not in summary['tests'])
181 188
182 def test_rounded_run_times(self): 189 def test_rounded_run_times(self):
183 summary = summarized_results(self.port, expected=False, passing=False, f laky=False) 190 summary = summarized_results(self.port, expected=False, passing=False, f laky=False)
184 self.assertEquals(summary['tests']['passes']['text.html']['time'], 1) 191 self.assertEquals(summary['tests']['passes']['text.html']['time'], 1)
185 self.assertTrue('time' not in summary['tests']['failures']['expected'][' audio.html']) 192 self.assertTrue('time' not in summary['tests']['failures']['expected'][' audio.html'])
186 self.assertEquals(summary['tests']['failures']['expected']['timeout.html ']['time'], 0.1) 193 self.assertEquals(summary['tests']['failures']['expected']['timeout.html ']['time'], 0.1)
187 self.assertTrue('time' not in summary['tests']['failures']['expected'][' crash.html']) 194 self.assertTrue('time' not in summary['tests']['failures']['expected'][' crash.html'])
195 self.assertTrue('time' not in summary['tests']['failures']['expected'][' leak.html'])
188 196
189 def test_timeout_then_unexpected_pass(self): 197 def test_timeout_then_unexpected_pass(self):
190 tests = ['failures/expected/image.html'] 198 tests = ['failures/expected/image.html']
191 expectations = test_expectations.TestExpectations(self.port, tests) 199 expectations = test_expectations.TestExpectations(self.port, tests)
192 initial_results = test_run_results.TestRunResults(expectations, len(test s)) 200 initial_results = test_run_results.TestRunResults(expectations, len(test s))
193 initial_results.add(get_result('failures/expected/image.html', test_expe ctations.TIMEOUT, run_time=1), False, False) 201 initial_results.add(get_result('failures/expected/image.html', test_expe ctations.TIMEOUT, run_time=1), False, False)
194 retry_results = test_run_results.TestRunResults(expectations, len(tests) ) 202 retry_results = test_run_results.TestRunResults(expectations, len(tests) )
195 retry_results.add(get_result('failures/expected/image.html', test_expect ations.PASS, run_time=0.1), False, False) 203 retry_results.add(get_result('failures/expected/image.html', test_expect ations.PASS, run_time=0.1), False, False)
196 summary = test_run_results.summarize_results(self.port, expectations, in itial_results, retry_results, enabled_pixel_tests_in_retry=True, only_include_fa iling=True) 204 summary = test_run_results.summarize_results(self.port, expectations, in itial_results, retry_results, enabled_pixel_tests_in_retry=True, only_include_fa iling=True)
197 self.assertEquals(summary['num_regressions'], 0) 205 self.assertEquals(summary['num_regressions'], 0)
198 self.assertEquals(summary['num_passes'], 1) 206 self.assertEquals(summary['num_passes'], 1)
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698