Exemplo n.º 1
0
  def testGetV2Build(self, mock_post):
    build_id = '8945610992972640896'
    mock_build = Build()
    mock_build.id = int(build_id)
    mock_build.status = 12
    mock_build.output.properties['mastername'] = 'chromium.linux'
    mock_build.output.properties['buildername'] = 'Linux Builder'
    mock_build.output.properties.get_or_create_struct(
        'swarm_hashes_ref/heads/mockmaster(at){#123}'
    )['mock_target'] = 'mock_hash'
    gitiles_commit = mock_build.input.gitiles_commit
    gitiles_commit.host = 'gitiles.host'
    gitiles_commit.project = 'gitiles/project'
    gitiles_commit.ref = 'refs/heads/mockmaster'
    mock_build.builder.project = 'mock_luci_project'
    mock_build.builder.bucket = 'mock_bucket'
    mock_build.builder.builder = 'Linux Builder'
    mock_headers = {'X-Prpc-Grpc-Code': '0'}
    binary_data = mock_build.SerializeToString()
    mock_post.return_value = (200, binary_data, mock_headers)
    build = buildbucket_client.GetV2Build(build_id)
    self.assertIsNotNone(build)
    self.assertEqual(mock_build.id, build.id)

    mock_headers = {'X-Prpc-Grpc-Code': '4'}
    binary_data = mock_build.SerializeToString()
    mock_post.return_value = (404, binary_data, mock_headers)
    self.assertIsNone(buildbucket_client.GetV2Build(build_id))
Exemplo n.º 2
0
  def testTriggerV2BuildFailed(self, mock_post):
    mock_build = Build()
    mock_headers = {'X-Prpc-Grpc-Code': '0'}
    binary_data = mock_build.SerializeToString()
    mock_post.return_value = (403, binary_data, mock_headers)

    builder = BuilderID(project='chromium', bucket='try', builder='linux-rel')
    gitiles_commit = GitilesCommit(
        project='gitiles/project',
        host='gitiles.host.com',
        ref='refs/heads/master',
        id='git_hash')
    properties = {
        'property1': 'property1',
        'property2': ['property2'],
        'property3': {
            'property3-key': 'property3-value'
        }
    }
    tags = [{'key': 'tag-key', 'value': 'tag-value'}]
    dimensions = [{'key': 'gpu', 'value': 'NVidia'}]

    build = buildbucket_client.TriggerV2Build(
        builder, gitiles_commit, properties, tags=tags, dimensions=dimensions)
    self.assertIsNone(build)
Exemplo n.º 3
0
  def testGetBuildNumberFromBuildId(self, mock_post):
    build_id = 10000
    expected_build_number = 12345
    mock_build = Build()
    mock_build.id = build_id
    mock_build.status = 12
    mock_build.output.properties['mastername'] = 'chromium.linux'
    mock_build.output.properties['buildername'] = 'Linux Builder'
    mock_build.output.properties['buildnumber'] = expected_build_number
    mock_build.output.properties.get_or_create_struct(
        'swarm_hashes_ref/heads/mockmaster(at){#123}'
    )['mock_target'] = 'mock_hash'
    gitiles_commit = mock_build.input.gitiles_commit
    gitiles_commit.host = 'gitiles.host'
    gitiles_commit.project = 'gitiles/project'
    gitiles_commit.ref = 'refs/heads/mockmaster'
    mock_build.builder.project = 'mock_luci_project'
    mock_build.builder.bucket = 'mock_bucket'
    mock_build.builder.builder = 'Linux Builder'
    mock_headers = {'X-Prpc-Grpc-Code': '0'}
    binary_data = mock_build.SerializeToString()
    mock_post.return_value = (200, binary_data, mock_headers)

    self.assertEqual(expected_build_number,
                     buildbucket_client.GetBuildNumberFromBuildId(build_id))
    def testSucessfulPushTryJob(self, mock_post, *_):
        mock_build = Build()
        mock_build.id = 8945610992972640896
        mock_build.status = 12
        mock_build.output.properties['mastername'] = 'luci.chromium.findit'
        mock_build.output.properties['buildername'] = ('findit_variable')
        mock_build.output.properties['target_mastername'] = 'chromium.linux'
        mock_build.output.properties['target_buildername'] = (
            'linux_chromium_compile_dbg_ng')
        mock_build.output.properties.get_or_create_struct(
            'swarm_hashes_ref/heads/mockmaster(at){#123}_with_patch'
        )['mock_target'] = 'mock_hash'
        mock_build.output.properties.get_or_create_struct(
            'swarm_hashes_ref/heads/mockmaster(at){#123}_without_patch'
        )['mock_target'] = 'mock_hash_without'
        mock_build.output.properties['repository'] = (
            'https://test.googlesource.com/team/project.git')
        mock_build.output.properties['gitiles_ref'] = 'refs/heads/mockmaster'
        mock_change = mock_build.input.gerrit_changes.add()
        mock_change.host = 'mock.gerrit.host'
        mock_change.change = 12345
        mock_change.patchset = 1
        mock_build.builder.project = 'mock_luci_project'
        mock_build.builder.bucket = 'mock_bucket'
        mock_build.builder.builder = 'findit_variable'
        mock_headers = {'X-Prpc-Grpc-Code': '0'}
        binary_data = mock_build.SerializeToString()
        mock_post.return_value = (200, binary_data, mock_headers)

        request_body = json.dumps({
            'message': {
                'attributes': {
                    'build_id': str(mock_build.id),
                },
                'data':
                base64.b64encode(
                    json.dumps({
                        'build': {
                            'project': 'chromium',
                            'bucket': 'luci.chromium.ci',
                            'status': 'COMPLETED',
                            'parameters_json': '{"builder_name": "builder"}',
                        }
                    })),
            },
        })
        response = self.test_app.post('/index-isolated-builds?format=json',
                                      params=request_body)
        self.assertEqual(200, response.status_int)
        self.assertEqual(
            123,
            IsolatedTarget.get_by_id(
                '8945610992972640896/mock_target').commit_position)
        self.assertEqual(2, len(json.loads(response.body)['created_rows']))

        # Ensure target values were used.
        entry = IsolatedTarget.get_by_id('8945610992972640896/mock_target')
        self.assertEqual('chromium.linux', entry.master_name)
        self.assertEqual('linux_chromium_compile_dbg_ng', entry.builder_name)
Exemplo n.º 5
0
  def testGetV2BuildByBuilderAndBuildNumber(self, mock_post):
    master_name = 'tryserver.chromium.win'

    mock_build = Build()
    mock_build.input.properties['mastername'] = master_name
    mock_headers = {'X-Prpc-Grpc-Code': '0'}
    binary_data = mock_build.SerializeToString()
    mock_post.return_value = (200, binary_data, mock_headers)

    build = buildbucket_client.GetV2BuildByBuilderAndBuildNumber(
        'chromium', 'try', 'win10_chromium_x64_rel_ng', 123)
    self.assertEqual(master_name, build.input.properties['mastername'])
    def testSucessfulPushCIBuild(self, mock_post, *_):
        mock_build = Build()
        mock_build.id = 8945610992972640896
        mock_build.status = 12
        mock_build.output.properties['mastername'] = 'chromium.linux'
        mock_build.output.properties['buildername'] = 'Linux Builder'
        mock_build.output.properties.get_or_create_struct(
            'swarm_hashes_ref/heads/mockmaster(at){#123}'
        )['mock_target'] = 'mock_hash'
        gitiles_commit = mock_build.input.gitiles_commit
        gitiles_commit.host = 'gitiles.host'
        gitiles_commit.project = 'gitiles/project'
        gitiles_commit.ref = 'refs/heads/mockmaster'
        mock_build.builder.project = 'mock_luci_project'
        mock_build.builder.bucket = 'mock_bucket'
        mock_build.builder.builder = 'Linux Builder'
        mock_headers = {'X-Prpc-Grpc-Code': '0'}
        binary_data = mock_build.SerializeToString()
        mock_post.return_value = (200, binary_data, mock_headers)

        request_body = json.dumps({
            'message': {
                'attributes': {
                    'build_id': str(mock_build.id),
                },
                'data':
                base64.b64encode(
                    json.dumps({
                        'build': {
                            'project': 'chromium',
                            'bucket': 'luci.chromium.ci',
                            'status': 'COMPLETED',
                            'parameters_json': '{"builder_name": "builder"}',
                        }
                    })),
            },
        })
        response = self.test_app.post('/index-isolated-builds?format=json',
                                      params=request_body)
        self.assertEqual(200, response.status_int)
        self.assertEqual(
            123,
            IsolatedTarget.get_by_id(
                '8945610992972640896/mock_target').commit_position)
        self.assertEqual(
            8945610992972640896,
            IsolatedTarget.get_by_id(
                '8945610992972640896/mock_target').build_id)
        self.assertEqual(1, len(json.loads(response.body)['created_rows']))
    def testNonIsolateBuild(self, mock_post, *_):
        # This build does not isolate any targets.
        mock_build = Build()
        mock_build.id = 8945610992972640896
        mock_build.status = 12
        mock_build.output.properties['mastername'] = 'chromium.linux'
        mock_build.output.properties['buildername'] = 'Linux Tester'
        gitiles_commit = mock_build.input.gitiles_commit
        gitiles_commit.host = 'gitiles.host'
        gitiles_commit.project = 'gitiles/project'
        gitiles_commit.ref = 'refs/heads/mockmaster'
        mock_build.builder.project = 'mock_luci_project'
        mock_build.builder.bucket = 'mock_bucket'
        mock_build.builder.builder = 'Linux Tester'
        mock_headers = {'X-Prpc-Grpc-Code': '0'}
        binary_data = mock_build.SerializeToString()
        mock_post.return_value = (200, binary_data, mock_headers)

        request_body = json.dumps({
            'message': {
                'attributes': {
                    'build_id': str(mock_build.id),
                },
                'data':
                base64.b64encode(
                    json.dumps({
                        'build': {
                            'project': 'chromium',
                            'bucket': 'luci.chromium.ci',
                            'status': 'COMPLETED',
                            'parameters_json': '{"builder_name": "builder"}',
                        }
                    })),
            },
        })
        response = self.test_app.post('/index-isolated-builds?format=json',
                                      params=request_body)
        self.assertEqual(200, response.status_int)
        self.assertNotIn('created_rows', response.body)