def cancel(self, request): """Cancels a build.""" build = service.cancel_async( request.id, result_details=parse_json_object(request.result_details_json, 'result_details_json'), ).get_result() return build_to_response_message(build)
def test_cancel(self, cancel_task_async): test_util.build(id=1).put() build = service.cancel_async(1, summary_markdown='nope').get_result() self.assertEqual(build.proto.status, common_pb2.CANCELED) self.assertEqual(build.proto.end_time.ToDatetime(), utils.utcnow()) self.assertEqual(build.proto.summary_markdown, 'nope') self.assertEqual(build.proto.canceled_by, self.current_identity.to_bytes()) cancel_task_async.assert_called_with('swarming.example.com', 'deadbeef') self.assertEqual(build.status_changed_time, utils.utcnow())
def cancel_batch(self, request): """Cancels builds.""" res = self.CancelBatchResponseMessage() result_details = parse_json_object(request.result_details_json, 'result_details_json') futs = [(build_id, service.cancel_async(build_id, result_details=result_details)) for build_id in request.build_ids] for build_id, cancel_fut in futs: one_res = res.OneResult(build_id=build_id) try: one_res.build = build_to_message(cancel_fut.get_result()) except errors.Error as ex: one_res.error = exception_to_error_message(ex) res.results.append(one_res) return res
def cancel_build_async(req, res, _ctx, mask): validation.validate_cancel_build_request(req) build = yield service.cancel_async(req.id, summary_markdown=req.summary_markdown) yield build_to_proto_async(build, res, mask)
def test_cancel_result_details(self): self.classic_build(id=1).put() result_details = {'message': 'bye bye build'} build = service.cancel_async( 1, result_details=result_details).get_result() self.assertEqual(build.result_details, result_details)
def test_cancel_completed_build(self): build = self.classic_build(id=1, status=common_pb2.SUCCESS) build.put() with self.assertRaises(errors.BuildIsCompletedError): service.cancel_async(1).get_result()
def test_cancel_with_auth_error(self): self.new_started_build(id=1) self.mock_cannot(user.Action.CANCEL_BUILD) with self.assertRaises(auth.AuthorizationError): service.cancel_async(1).get_result()
def test_cancel_nonexistent_build(self): with self.assertRaises(errors.BuildNotFoundError): service.cancel_async(1).get_result()
def test_cancel_started_build(self): self.new_started_build(id=1).put() service.cancel_async(1).get_result()
def test_cancel_is_idempotent(self): build = self.classic_build(id=1) build.put() service.cancel_async(1).get_result() service.cancel_async(1).get_result()