Пример #1
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))
Пример #2
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))
    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)
    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']))
Пример #5
0
 def testGetStepLogViewUrlNoMatchingLog(self):
   build_id = 8945610992972640896
   mock_log = Step.Log()
   mock_log.name = 'another_log'
   mock_log.view_url = 'view_url'
   mock_step1 = Step()
   mock_step1.name = 's1'
   mock_step1.logs.extend([mock_log])
   mock_step2 = Step()
   mock_step2.name = 's2'
   mock_step2.logs.extend([mock_log])
   mock_build = Build()
   mock_build.id = build_id
   mock_build.steps.extend([mock_step1, mock_step2])
   self.assertIsNone(step_util._GetStepLogViewUrl(mock_build, 's2', 'log'))
Пример #6
0
    def testGetStepStartAndEndTime(self):
        build_id = '8945610992972640896'
        start_time = datetime.datetime(2019, 3, 6)
        end_time = datetime.datetime(2019, 3, 6, 0, 0, 10)
        step = Step()
        step.name = 's'
        step.start_time.FromDatetime(start_time)
        step.end_time.FromDatetime(end_time)
        build = Build()
        build.id = int(build_id)
        build.steps.extend([step])

        self.assertEqual((start_time, end_time),
                         step_util.GetStepStartAndEndTime(build, 's'))
        self.assertEqual((None, None),
                         step_util.GetStepStartAndEndTime(build, 's2'))
Пример #7
0
 def testGetStepLogForLuciBuild(self, mock_get_build, mock_get_log, _):
   build_id = '8945610992972640896'
   mock_log = Step.Log()
   mock_log.name = 'step_metadata'
   mock_log.view_url = 'view_url'
   mock_step = Step()
   mock_step.name = 's'
   mock_step.logs.extend([mock_log])
   mock_build = Build()
   mock_build.id = int(build_id)
   mock_build.steps.extend([mock_step])
   mock_get_build.return_value = mock_build
   self.assertEqual(
       'log',
       step_util.GetStepLogForLuciBuild(build_id, 's', None, 'step_metadata'))
   mock_get_log.assert_called_once_with('view_url', None)
Пример #8
0
 def testGetStepLogForLuciBuildNoViewUrl(self, mock_get_build, mock_get_log,
                                         _):
   build_id = '8945610992972640896'
   mock_log = Step.Log()
   mock_log.name = 'step_metadata'
   mock_log.view_url = 'view_url'
   mock_step = Step()
   mock_step.name = 's'
   mock_step.logs.extend([mock_log])
   mock_build = Build()
   mock_build.id = int(build_id)
   mock_build.steps.extend([mock_step])
   mock_get_build.return_value = mock_build
   self.assertIsNone(
       step_util.GetStepLogForLuciBuild(build_id, 's', None, 'step_metadata'))
   self.assertFalse(mock_get_log.called)
    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)