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

Side by Side Diff: appengine/findit/waterfall/test/try_job_util_test.py

Issue 2026283002: [Findit] Adding logic to force try jobs regardless of bailout or previous results (Closed) Base URL: https://chromium.googlesource.com/infra/infra.git@master
Patch Set: Addressing comments and rebase Created 4 years, 5 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
1 # Copyright 2015 The Chromium Authors. All rights reserved. 1 # Copyright 2015 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 from datetime import datetime 5 from datetime import datetime
6 from datetime import timedelta 6 from datetime import timedelta
7 7
8 from common.waterfall import failure_type 8 from common.waterfall import failure_type
9 from model import analysis_status 9 from model import analysis_status
10 from model.wf_build import WfBuild 10 from model.wf_build import WfBuild
(...skipping 52 matching lines...) Expand 10 before | Expand all | Expand 10 after
63 'chromium_revision': '223-3' 63 'chromium_revision': '223-3'
64 } 64 }
65 } 65 }
66 } 66 }
67 67
68 self.mock( 68 self.mock(
69 try_job_util.swarming_tasks_to_try_job_pipeline, 69 try_job_util.swarming_tasks_to_try_job_pipeline,
70 'SwarmingTasksToTryJobPipeline', _MockRootPipeline) 70 'SwarmingTasksToTryJobPipeline', _MockRootPipeline)
71 _MockRootPipeline.STARTED = False 71 _MockRootPipeline.STARTED = False
72 72
73 def _MockShouldBailOutForOutdatedBuild(*_):
74 return False
75 self.mock(
76 try_job_util, '_ShouldBailOutForOutdatedBuild',
77 _MockShouldBailOutForOutdatedBuild)
78
79 failure_result_map = try_job_util.ScheduleTryJobIfNeeded( 73 failure_result_map = try_job_util.ScheduleTryJobIfNeeded(
80 failure_info, None, None) 74 failure_info, None, None)
81 75
82 self.assertFalse(_MockRootPipeline.STARTED) 76 self.assertFalse(_MockRootPipeline.STARTED)
83 self.assertEqual({}, failure_result_map) 77 self.assertEqual({}, failure_result_map)
84 78
85 def testBailOutForTestTryJob(self): 79 def testBailOutForTestTryJob(self):
86 master_name = 'master2' 80 master_name = 'master2'
87 builder_name = 'builder2' 81 builder_name = 'builder2'
88 build_number = 223 82 build_number = 223
(...skipping 12 matching lines...) Expand all
101 self.mock( 95 self.mock(
102 try_job_util, '_ShouldBailOutForOutdatedBuild', 96 try_job_util, '_ShouldBailOutForOutdatedBuild',
103 _MockShouldBailOutForOutdatedBuild) 97 _MockShouldBailOutForOutdatedBuild)
104 98
105 failure_result_map = try_job_util.ScheduleTryJobIfNeeded( 99 failure_result_map = try_job_util.ScheduleTryJobIfNeeded(
106 failure_info, None, None) 100 failure_info, None, None)
107 101
108 self.assertEqual({}, failure_result_map) 102 self.assertEqual({}, failure_result_map)
109 103
110 def testBailOutForTryJobWithOutdatedTimestamp(self): 104 def testBailOutForTryJobWithOutdatedTimestamp(self):
111 master_name = 'master3' 105 master_name = 'master1'
112 builder_name = 'builder3' 106 builder_name = 'builder1'
113 build_number = 223 107 build_number = 223
114 failure_info = { 108 failure_info = {
115 'master_name': master_name, 109 'master_name': master_name,
116 'builder_name': builder_name, 110 'builder_name': builder_name,
117 'build_number': build_number, 111 'build_number': build_number,
118 'failed_steps': { 112 'failed_steps': {
119 'compile': { 113 'compile': {
120 'current_failure': 221, 114 'current_failure': 221,
121 'first_failure': 221, 115 'first_failure': 221,
122 'last_pass': 220 116 'last_pass': 220
123 } 117 }
124 }, 118 },
125 } 119 }
126 120
121 yesterday = datetime.utcnow() - timedelta(days=1)
122 build = WfBuild.Create(master_name, builder_name, build_number)
123 build.start_time = yesterday
124 build.put()
125
127 self.mock( 126 self.mock(
128 try_job_util.swarming_tasks_to_try_job_pipeline, 127 try_job_util.swarming_tasks_to_try_job_pipeline,
129 'SwarmingTasksToTryJobPipeline', _MockRootPipeline) 128 'SwarmingTasksToTryJobPipeline', _MockRootPipeline)
130 _MockRootPipeline.STARTED = False 129 _MockRootPipeline.STARTED = False
131 130
132 def _MockShouldBailOutForOutdatedBuild(*_): 131 def _MockShouldBailOutForOutdatedBuild(*_):
133 return True 132 return True
133
134 self.mock( 134 self.mock(
135 try_job_util, '_ShouldBailOutForOutdatedBuild', 135 try_job_util, '_ShouldBailOutForOutdatedBuild',
136 _MockShouldBailOutForOutdatedBuild) 136 _MockShouldBailOutForOutdatedBuild)
137 137
138 failure_result_map = try_job_util.ScheduleTryJobIfNeeded( 138 failure_result_map = try_job_util.ScheduleTryJobIfNeeded(
139 failure_info, None, None) 139 failure_info, None, None, False)
140 140
141 self.assertFalse(_MockRootPipeline.STARTED) 141 self.assertFalse(_MockRootPipeline.STARTED)
142 self.assertEqual({}, failure_result_map) 142 self.assertEqual({}, failure_result_map)
143 143
144 def testForceTryJob(self):
145 master_name = 'm'
146 builder_name = 'b'
147 build_number = 223
148 failure_info = {
149 'master_name': master_name,
150 'builder_name': builder_name,
151 'build_number': build_number,
152 'failed_steps': {
153 'compile': {
154 'current_failure': 223,
155 'first_failure': 223,
156 'last_pass': 222
157 }
158 },
159 'builds': {
160 '222': {
161 'blame_list': ['222-1'],
162 'chromium_revision': '222-1'
163 },
164 '223': {
165 'blame_list': ['223-1', '223-2', '223-3'],
166 'chromium_revision': '223-3'
167 }
168 },
169 'failure_type': failure_type.COMPILE
170 }
171
172 self.mock(
173 try_job_util.swarming_tasks_to_try_job_pipeline,
174 'SwarmingTasksToTryJobPipeline', _MockRootPipeline)
175 _MockRootPipeline.STARTED = False
176
177 try_job_util.ScheduleTryJobIfNeeded(failure_info, None, None, True)
178
179 try_job = WfTryJob.Get(master_name, builder_name, build_number)
180
181 self.assertTrue(_MockRootPipeline.STARTED)
182 self.assertIsNotNone(try_job)
183
144 def testNotNeedANewTryJobIfNotFirstTimeFailure(self): 184 def testNotNeedANewTryJobIfNotFirstTimeFailure(self):
145 master_name = 'm' 185 master_name = 'm'
146 builder_name = 'b' 186 builder_name = 'b'
147 build_number = 223 187 build_number = 223
148 failure_info = { 188 failure_info = {
149 'master_name': master_name, 189 'master_name': master_name,
150 'builder_name': builder_name, 190 'builder_name': builder_name,
151 'build_number': build_number, 191 'build_number': build_number,
152 'failed_steps': { 192 'failed_steps': {
153 'compile': { 193 'compile': {
(...skipping 23 matching lines...) Expand all
177 'failure_type': failure_type.COMPILE 217 'failure_type': failure_type.COMPILE
178 } 218 }
179 219
180 self.mock( 220 self.mock(
181 try_job_util.swarming_tasks_to_try_job_pipeline, 221 try_job_util.swarming_tasks_to_try_job_pipeline,
182 'SwarmingTasksToTryJobPipeline', _MockRootPipeline) 222 'SwarmingTasksToTryJobPipeline', _MockRootPipeline)
183 _MockRootPipeline.STARTED = False 223 _MockRootPipeline.STARTED = False
184 224
185 def _MockShouldBailOutForOutdatedBuild(*_): 225 def _MockShouldBailOutForOutdatedBuild(*_):
186 return False 226 return False
227
187 self.mock( 228 self.mock(
188 try_job_util, '_ShouldBailOutForOutdatedBuild', 229 try_job_util, '_ShouldBailOutForOutdatedBuild',
189 _MockShouldBailOutForOutdatedBuild) 230 _MockShouldBailOutForOutdatedBuild)
190 231
191 try_job_util.ScheduleTryJobIfNeeded(failure_info, None, None) 232 try_job_util.ScheduleTryJobIfNeeded(failure_info, None, None)
192 233
193 self.assertFalse(_MockRootPipeline.STARTED) 234 self.assertFalse(_MockRootPipeline.STARTED)
194 235
195 def testNotNeedANewTryJobIfOneWithResultExists(self): 236 def testNotNeedANewTryJobIfOneWithResultExists(self):
196 master_name = 'm' 237 master_name = 'm'
(...skipping 221 matching lines...) Expand 10 before | Expand all | Expand 10 after
418 'failure_type': failure_type.COMPILE 459 'failure_type': failure_type.COMPILE
419 } 460 }
420 461
421 self.mock( 462 self.mock(
422 try_job_util.swarming_tasks_to_try_job_pipeline, 463 try_job_util.swarming_tasks_to_try_job_pipeline,
423 'SwarmingTasksToTryJobPipeline', _MockRootPipeline) 464 'SwarmingTasksToTryJobPipeline', _MockRootPipeline)
424 _MockRootPipeline.STARTED = False 465 _MockRootPipeline.STARTED = False
425 466
426 def _MockShouldBailOutForOutdatedBuild(*_): 467 def _MockShouldBailOutForOutdatedBuild(*_):
427 return False 468 return False
469
428 self.mock( 470 self.mock(
429 try_job_util, '_ShouldBailOutForOutdatedBuild', 471 try_job_util, '_ShouldBailOutForOutdatedBuild',
430 _MockShouldBailOutForOutdatedBuild) 472 _MockShouldBailOutForOutdatedBuild)
431 473
432 try_job_util.ScheduleTryJobIfNeeded(failure_info, None, None) 474 try_job_util.ScheduleTryJobIfNeeded(failure_info, None, None)
433 475
434 try_job = WfTryJob.Get(master_name, builder_name, build_number) 476 try_job = WfTryJob.Get(master_name, builder_name, build_number)
435 477
436 self.assertTrue(_MockRootPipeline.STARTED) 478 self.assertTrue(_MockRootPipeline.STARTED)
437 self.assertIsNotNone(try_job) 479 self.assertIsNotNone(try_job)
(...skipping 101 matching lines...) Expand 10 before | Expand all | Expand 10 after
539 try_job_util._GetSuspectsFromHeuristicResult(heuristic_result)) 581 try_job_util._GetSuspectsFromHeuristicResult(heuristic_result))
540 582
541 def testShouldBailOutforOutdatedBuild(self): 583 def testShouldBailOutforOutdatedBuild(self):
542 yesterday = datetime.utcnow() - timedelta(days=1) 584 yesterday = datetime.utcnow() - timedelta(days=1)
543 build = WfBuild.Create('m', 'b', 1) 585 build = WfBuild.Create('m', 'b', 1)
544 build.start_time = yesterday 586 build.start_time = yesterday
545 self.assertTrue(try_job_util._ShouldBailOutForOutdatedBuild(build)) 587 self.assertTrue(try_job_util._ShouldBailOutForOutdatedBuild(build))
546 588
547 build.start_time = yesterday + timedelta(hours=1) 589 build.start_time = yesterday + timedelta(hours=1)
548 self.assertFalse(try_job_util._ShouldBailOutForOutdatedBuild(build)) 590 self.assertFalse(try_job_util._ShouldBailOutForOutdatedBuild(build))
OLDNEW
« no previous file with comments | « appengine/findit/waterfall/test/start_try_job_on_demand_pipeline_test.py ('k') | appengine/findit/waterfall/try_job_util.py » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698