Beispiel #1
0
  def test_http_500(self):
    net.json_request_async.return_value = future_exception(
        net.Error('internal', 500, 'Internal server error')
    )

    with self.assertRaises(net.Error):
      self._create_task()
Beispiel #2
0
def fetch_json_async(hostname, path, payload=None, headers=None, **kwargs):
    """Sends JSON request to Gerrit, parses prefixed JSON response.

  See 'fetch' for the list of arguments.

  Returns:
    Deserialized response body on success.
    None on 404 response.

  Raises:
    net.Error on communication errors.
  """
    headers = (headers or {}).copy()
    headers['Accept'] = 'application/json'
    if payload is not None:
        headers['Content-Type'] = 'application/json; charset=utf-8'
    content = yield fetch_async(
        hostname=hostname,
        path=path,
        payload=utils.encode_to_json(payload) if payload is not None else None,
        headers=headers,
        **kwargs)
    if content is None:
        raise ndb.Return(None)
    if not content.startswith(RESPONSE_PREFIX):
        msg = ('Unexpected response format. Expected prefix %s. Received: %s' %
               (RESPONSE_PREFIX, content))
        raise net.Error(msg, status_code=200, response=content)
    raise ndb.Return(json.loads(content[len(RESPONSE_PREFIX):]))
Beispiel #3
0
    def test_http_400(self):
        net.json_request_async.return_value = future_exception(
            net.Error('HTTP 401', 400, 'invalid request'))

        swarming._create_swarming_task(1)

        build = self.build.key.get()
        self.assertEqual(build.status, common_pb2.INFRA_FAILURE)
        self.assertEqual(
            build.proto.summary_markdown,
            r'Swarming task creation API responded with HTTP 400: `invalid request`'
        )
Beispiel #4
0
 def test_response_transport_error_internal(self, request_async):
     request_async.side_effect = net.Error(
         msg='boom',
         status_code=500,
         response='boom',
         headers={
             # No X-Prpc-Grpc-Code  header.
         },
     )
     with self.assertRaises(prpc_client.RpcError) as cm:
         self.make_test_client().Take(empty_pb2.Empty())
     self.assertEqual(cm.exception.status_code, codes.StatusCode.INTERNAL)
  def test_not_allowed_account(self):
    now = datetime.datetime(2010, 1, 2, 3, 4, 5)
    self.mock_now(now)

    self.mock_json_request(
        expected_url='https://tokens.example.com/prpc/'
            'tokenserver.minter.TokenMinter/MintOAuthTokenGrant',
        expected_payload=None,
      response=net.Error('bad', 403, 'Token server error message'))

    with self.assertRaises(auth.AuthorizationError) as err:
      service_accounts.get_oauth_token_grant(
          '*****@*****.**', datetime.timedelta(seconds=3600))
    self.assertEqual('Token server error message', str(err.exception))
Beispiel #6
0
 def test_finalize_invocation_async_failed_precondition(self):
     with mock.patch('server.resultdb._call_resultdb_recorder_api_async'
                     ) as mock_call:
         mock_call.side_effect = net.Error(
             msg='error',
             status_code=400,
             response='error',
             headers={'X-Prpc-Grpc-Code': '9'})
         resultdb.finalize_invocation_async('task001',
                                            'secret').get_result()
         mock_call.assert_called_once_with(
             'FinalizeInvocation', {
                 'name':
                 'invocations/task-test-swarming.appspot.com-task001',
             },
             headers={'update-token': 'secret'},
             scopes=None)
Beispiel #7
0
 def test_publish_fatal_error(self):
   self.mock_requests([
     {
       'url': 'https://pubsub.googleapis.com/v1/projects/a/topics/def:publish',
       'method': 'POST',
       'payload': {
         'messages': [
           {
             'attributes': {'a': 1, 'b': 2},
             'data': 'bXNn',
           },
         ],
       },
       'response': net.Error('fatal error', 403, ''),
     }
   ])
   with self.assertRaises(pubsub.Error):
     pubsub.publish('projects/a/topics/def', 'msg', {'a': 1, 'b': 2})
 def json_request(url, *args, **kwargs):
     raise net.Error('', 400, '')
 def create_instance_group_manager(*args, **kwargs):
     raise net.Error('', 400, '')
Beispiel #10
0
 def test_yield_instances_in_zones(self):
   self.mock_requests([
     (
       {
         'deadline': 120,
         'params': {
           'maxResults': 250,
         },
         'url':
             'https://www.googleapis.com/compute/v1/projects/123'
             '/zones/z1/instances',
       },
       {
         'items': [instance('a')],
         'nextPageToken': 'page-token',
       },
     ),
     (
       {
         'deadline': 120,
         'params': {
           'maxResults': 250,
           'pageToken': 'page-token',
         },
         'url':
             'https://www.googleapis.com/compute/v1/projects/123'
             '/zones/z1/instances',
       },
       {
         'items': [instance('b')],
       },
     ),
     (
       {
         'deadline': 120,
         'params': {
           'maxResults': 250,
         },
         'url':
             'https://www.googleapis.com/compute/v1/projects/123'
             '/zones/z2/instances',
       },
       {
         'items': [instance('c')],
       },
     ),
     (
       {
         'deadline': 120,
         'params': {
           'maxResults': 250,
         },
         'url':
             'https://www.googleapis.com/compute/v1/projects/123'
             '/zones/z3/instances',
       },
       # Missing zone is ignored.
       net.Error('Bad request', 400, json.dumps({
         'error': {
           'errors': [{
             'domain': 'global',
             'reason': 'invalid',
             'message':
               'Invalid value for field \'zone\': \'z3\'. Unknown zone.',
           }],
           'code': 400,
           'message':
             'Invalid value for field \'zone\': \'z3\'. Unknown zone.',
         },
       })),
     ),
   ])
   result = gce.Project('123').yield_instances_in_zones(['z1', 'z2', 'z3'])
   self.assertEqual(
       [instance('a'), instance('b'), instance('c')], list(result))
Beispiel #11
0
 def create_instance_template(*args, **kwargs):
     raise net.Error('', 409, '')
 def mock_raise(_):
     raise net.Error('test', 404, None)
Beispiel #13
0
 def json_request(*args, **kwargs):
     raise net.Error('403', 403, '403')