예제 #1
0
 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)
예제 #2
0
 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())
예제 #3
0
 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
예제 #4
0
파일: api.py 프로젝트: xinghun61/infra
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)
예제 #5
0
 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)
예제 #6
0
 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()
예제 #7
0
 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()
예제 #8
0
 def test_cancel_nonexistent_build(self):
     with self.assertRaises(errors.BuildNotFoundError):
         service.cancel_async(1).get_result()
예제 #9
0
 def test_cancel_started_build(self):
     self.new_started_build(id=1).put()
     service.cancel_async(1).get_result()
예제 #10
0
 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()