| OLD | NEW |
| 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 Loading... |
| 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 Loading... |
| 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 Loading... |
| 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)) |
| OLD | NEW |