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

Side by Side Diff: appengine/cr-buildbucket/swarming/test/swarming_test.py

Issue 2096233002: swarmbucket: add bucket-level execution timeout (Closed) Base URL: https://chromium.googlesource.com/infra/infra.git@master
Patch Set: rebased 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
« no previous file with comments | « appengine/cr-buildbucket/swarming/swarming.py ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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 import base64 5 import base64
6 import contextlib 6 import contextlib
7 import datetime 7 import datetime
8 import json 8 import json
9 9
10 from components import auth 10 from components import auth
(...skipping 130 matching lines...) Expand 10 before | Expand all | Expand 10 after
141 {'junk': 1}, 141 {'junk': 1},
142 {'recipe': []}, 142 {'recipe': []},
143 {'recipe': {'junk': 1}}, 143 {'recipe': {'junk': 1}},
144 {'recipe': {'revision': 1}}, 144 {'recipe': {'revision': 1}},
145 ] 145 ]
146 for p in bad: 146 for p in bad:
147 with self.assertRaises(errors.InvalidInputError): 147 with self.assertRaises(errors.InvalidInputError):
148 validate_swarming_param(p) 148 validate_swarming_param(p)
149 149
150 def test_execution_timeout(self): 150 def test_execution_timeout(self):
151 builder_cfg = project_config_pb2.Swarming.Builder( 151 self.bucket_cfg.swarming.common_execution_timeout_secs = 120
152 name='fast-builder', 152 builder_cfg = project_config_pb2.Swarming.Builder(name='fast-builder')
153 execution_timeout_secs=60,
154 )
155 153
156 build = model.Build( 154 build = model.Build(
157 bucket='bucket', 155 bucket='bucket',
158 parameters={ 156 parameters={
159 'builder_name': 'fast-builder', 157 'builder_name': 'fast-builder',
160 }, 158 },
161 ) 159 )
162 160
163 task_def = swarming.create_task_def_async( 161 task_def = swarming.create_task_def_async(
164 self.bucket_cfg.swarming, builder_cfg, build).get_result() 162 self.bucket_cfg.swarming, builder_cfg, build).get_result()
165 163
166 self.assertEqual( 164 self.assertEqual(
165 task_def['properties']['execution_timeout_secs'], 120)
166
167 builder_cfg.execution_timeout_secs = 60
168 task_def = swarming.create_task_def_async(
169 self.bucket_cfg.swarming, builder_cfg, build).get_result()
170 self.assertEqual(
167 task_def['properties']['execution_timeout_secs'], 60) 171 task_def['properties']['execution_timeout_secs'], 60)
168 172
169 def test_create_task_async(self): 173 def test_create_task_async(self):
170 build = model.Build( 174 build = model.Build(
171 bucket='bucket', 175 bucket='bucket',
172 tags=['builder:builder'], 176 tags=['builder:builder'],
173 parameters={ 177 parameters={
174 'builder_name': 'builder', 178 'builder_name': 'builder',
175 'swarming': { 179 'swarming': {
176 'recipe': {'revision': 'badcoffee'}, 180 'recipe': {'revision': 'badcoffee'},
(...skipping 188 matching lines...) Expand 10 before | Expand all | Expand 10 after
365 'status': model.BuildStatus.COMPLETED, 369 'status': model.BuildStatus.COMPLETED,
366 'result': model.BuildResult.FAILURE, 370 'result': model.BuildResult.FAILURE,
367 'failure_reason': model.FailureReason.INFRA_FAILURE, 371 'failure_reason': model.FailureReason.INFRA_FAILURE,
368 }, 372 },
369 373
370 { 374 {
371 'task_result': { 375 'task_result': {
372 'state': 'TIMED_OUT', 376 'state': 'TIMED_OUT',
373 }, 377 },
374 'status': model.BuildStatus.COMPLETED, 378 'status': model.BuildStatus.COMPLETED,
375 'result': model.BuildResult.CANCELED, 379 'result': model.BuildResult.FAILURE,
376 'cancelation_reason': model.CancelationReason.TIMEOUT, 380 'failure_reason': model.FailureReason.INFRA_FAILURE,
377 }, 381 },
378 382
379 { 383 {
380 'task_result': { 384 'task_result': {
381 'state': 'EXPIRED', 385 'state': 'EXPIRED',
382 }, 386 },
383 'status': model.BuildStatus.COMPLETED, 387 'status': model.BuildStatus.COMPLETED,
384 'result': model.BuildResult.CANCELED, 388 'result': model.BuildResult.CANCELED,
385 'cancelation_reason': model.CancelationReason.TIMEOUT, 389 'cancelation_reason': model.CancelationReason.TIMEOUT,
386 }, 390 },
(...skipping 225 matching lines...) Expand 10 before | Expand all | Expand 10 after
612 self.assertEqual(build.status, model.BuildStatus.COMPLETED) 616 self.assertEqual(build.status, model.BuildStatus.COMPLETED)
613 self.assertEqual(build.result, model.BuildResult.FAILURE) 617 self.assertEqual(build.result, model.BuildResult.FAILURE)
614 self.assertEqual(build.failure_reason, model.FailureReason.INFRA_FAILURE) 618 self.assertEqual(build.failure_reason, model.FailureReason.INFRA_FAILURE)
615 self.assertIsNotNone(build.result_details) 619 self.assertIsNotNone(build.result_details)
616 self.assertIsNone(build.lease_key) 620 self.assertIsNone(build.lease_key)
617 self.assertIsNotNone(build.complete_time) 621 self.assertIsNotNone(build.complete_time)
618 622
619 623
620 def b64json(data): 624 def b64json(data):
621 return base64.b64encode(json.dumps(data)) 625 return base64.b64encode(json.dumps(data))
OLDNEW
« no previous file with comments | « appengine/cr-buildbucket/swarming/swarming.py ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698