Example #1
0
 def test_trimming_exclude(self, get_async):
     get_async.return_value = future(
         test_util.build(input=dict(
             properties=bbutil.dict_to_struct({'a': 'b'}))), )
     req = rpc_pb2.GetBuildRequest(id=1)
     res = self.call(self.api.GetBuild, req)
     self.assertFalse(res.input.HasField('properties'))
Example #2
0
 def test_valid_number(self):
     msg = rpc_pb2.GetBuildRequest(
         builder=build_pb2.BuilderID(project='chromium',
                                     bucket='try',
                                     builder='linux-rel'),
         build_number=1,
     )
     self.assert_valid(msg)
Example #3
0
 def test_not_found_by_number(self):
     builder_id = build_pb2.BuilderID(project='chromium',
                                      bucket='try',
                                      builder='linux-try')
     req = rpc_pb2.GetBuildRequest(builder=builder_id, build_number=2)
     self.call(self.api.GetBuild,
               req,
               expected_code=prpc.StatusCode.NOT_FOUND)
Example #4
0
 def test_trimming_include(self, get_async):
     get_async.return_value = future(
         test_util.build(input=dict(
             properties=bbutil.dict_to_struct({'a': 'b'}))), )
     req = rpc_pb2.GetBuildRequest(id=1,
                                   fields=dict(paths=['input.properties']))
     res = self.call(self.api.GetBuild, req)
     self.assertEqual(res.input.properties.items(), [('a', 'b')])
Example #5
0
 def test_invalid_field_mask(self):
     req = rpc_pb2.GetBuildRequest(fields=dict(paths=['invalid']))
     self.call(
         self.api.GetBuild,
         req,
         expected_code=prpc.StatusCode.INVALID_ARGUMENT,
         expected_details=('invalid fields: invalid path "invalid": '
                           'field "invalid" does not exist in message '
                           'buildbucket.v2.Build'))
Example #6
0
    def error_handling_test(self, ex, expected_code, expected_details):
        @api.rpc_impl_async('GetBuild')
        @ndb.tasklet
        def get_build_async(_req, _res, _ctx, _mask):
            raise ex

        ctx = prpc_context.ServicerContext()
        req = rpc_pb2.GetBuildRequest(id=1)
        res = build_pb2.Build()
        # pylint: disable=no-value-for-parameter
        get_build_async(req, res, ctx).get_result()
        self.assertEqual(ctx.code, expected_code)
        self.assertEqual(ctx.details, expected_details)
Example #7
0
    def test_by_number(self, search_async):
        builder_id = build_pb2.BuilderID(project='chromium',
                                         bucket='try',
                                         builder='linux-try')
        build = test_util.build(id=1, builder=builder_id, number=2)
        search_async.return_value = future(([build], None))
        req = rpc_pb2.GetBuildRequest(builder=builder_id, build_number=2)
        res = self.call(self.api.GetBuild, req)
        self.assertEqual(res.id, 1)
        self.assertEqual(res.builder, builder_id)
        self.assertEqual(res.number, 2)

        search_async.assert_called_once_with(
            search.Query(
                bucket_ids=['chromium/try'],
                tags=['build_address:luci.chromium.try/linux-try/2'],
                include_experimental=True,
            ))
Example #8
0
 def test_id_and_builder(self):
     msg = rpc_pb2.GetBuildRequest(
         id=1,
         builder=build_pb2.BuilderID(project='chromium'),
     )
     self.assert_invalid(msg, r'mutually exclusive')
Example #9
0
 def test_empty(self):
     msg = rpc_pb2.GetBuildRequest()
     self.assert_invalid(
         msg, r'id or \(builder and build_number\) are required')
Example #10
0
 def test_valid_id(self):
     msg = rpc_pb2.GetBuildRequest(id=1)
     self.assert_valid(msg)
Example #11
0
 def test_id_with_number(self):
     req = rpc_pb2.GetBuildRequest(id=1, build_number=1)
     self.call(self.api.GetBuild,
               req,
               expected_code=prpc.StatusCode.INVALID_ARGUMENT)
Example #12
0
 def test_empty_request(self):
     req = rpc_pb2.GetBuildRequest()
     self.call(self.api.GetBuild,
               req,
               expected_code=prpc.StatusCode.INVALID_ARGUMENT)
Example #13
0
 def test_not_found_by_id(self):
     req = rpc_pb2.GetBuildRequest(id=54)
     self.call(self.api.GetBuild,
               req,
               expected_code=prpc.StatusCode.NOT_FOUND)
Example #14
0
 def test_by_id(self, get_async):
     get_async.return_value = future(test_util.build(id=54))
     req = rpc_pb2.GetBuildRequest(id=54)
     res = self.call(self.api.GetBuild, req)
     self.assertEqual(res.id, 54)
     get_async.assert_called_once_with(54)