示例#1
0
    def testOnBuildFailureAnalysisResultRequestedTest(self,
                                                      mock_test_analysis):
        luci_project = 'chromium'
        luci_bucket = 'ci'
        luci_builder = 'Linux Builder'
        build_number = 4567
        build = LuciFailedBuild.Create(
            luci_project=luci_project,
            luci_bucket=luci_bucket,
            luci_builder=luci_builder,
            build_id=80004567,
            legacy_build_number=build_number,
            gitiles_host='chromium.googlesource.com',
            gitiles_project='chromium/src',
            gitiles_ref='refs/heads/master',
            gitiles_id='git_hash',
            commit_position=65450,
            status=20,
            create_time=datetime(2019, 3, 28),
            start_time=datetime(2019, 3, 28, 0, 1),
            end_time=datetime(2019, 3, 28, 1),
            build_failure_type=StepTypeEnum.TEST)
        build.put()

        request = findit_result.BuildFailureAnalysisRequest(
            build_id=80004567, failed_steps=['test step'])
        self.assertEqual(['responses'],
                         api.OnBuildFailureAnalysisResultRequested(request))
        mock_test_analysis.assert_called_once_with(request, build)
示例#2
0
    def testOnBuildFailureAnalysisResultRequestedNotSupport(
            self, mock_compile_analysis):
        build_id = 80004567
        build = LuciFailedBuild.Create(
            luci_project='chromium',
            luci_bucket='ci',
            luci_builder='Linux Builder',
            build_id=80004567,
            legacy_build_number=4567,
            gitiles_host='chromium.googlesource.com',
            gitiles_project='chromium/src',
            gitiles_ref='refs/heads/master',
            gitiles_id='git_hash',
            commit_position=65450,
            status=20,
            create_time=datetime(2019, 3, 28),
            start_time=datetime(2019, 3, 28, 0, 1),
            end_time=datetime(2019, 3, 28, 1),
            build_failure_type=StepTypeEnum.INFRA)
        build.put()

        request = findit_result.BuildFailureAnalysisRequest(
            build_id=build_id, failed_steps=['browser_tests'])
        self.assertEqual([],
                         api.OnBuildFailureAnalysisResultRequested(request))
        self.assertFalse(mock_compile_analysis.called)
示例#3
0
 def testOnBuildFailureAnalysisResultRequestedNoBuildInDataStore(
         self, mock_compile_analysis):
     request = findit_result.BuildFailureAnalysisRequest(
         build_id=8000456, failed_steps=['compile'])
     self.assertEqual([],
                      api.OnBuildFailureAnalysisResultRequested(request))
     self.assertFalse(mock_compile_analysis.called)
示例#4
0
    def testOnCompileFailureAnalysisResultRequestedAnalysisRunning(self):
        build_id = 800000000123
        request = findit_result.BuildFailureAnalysisRequest(
            build_id=build_id, failed_steps=[self.compile_step_name])

        build = LuciFailedBuild.Create(
            luci_project='chromium',
            luci_bucket='ci',
            luci_builder='Linux Builder',
            build_id=build_id,
            legacy_build_number=12345,
            gitiles_host='chromium.googlesource.com',
            gitiles_project='chromium/src',
            gitiles_ref='refs/heads/master',
            gitiles_id='git_hash',
            commit_position=65450,
            status=20,
            create_time=datetime(2019, 3, 28),
            start_time=datetime(2019, 3, 28, 0, 1),
            end_time=datetime(2019, 3, 28, 1),
            build_failure_type=StepTypeEnum.COMPILE)
        build.put()

        compile_failure = CompileFailure.Create(build.key,
                                                self.compile_step_name,
                                                ['target1'], 'CXX')
        compile_failure.first_failed_build_id = build.build_id
        compile_failure.failure_group_build_id = build.build_id
        compile_failure.put()

        analysis = CompileFailureAnalysis.Create(
            luci_project=self.context.luci_project_name,
            luci_bucket='postsubmit',
            luci_builder='Linux Builder',
            build_id=build_id,
            gitiles_host=self.context.gitiles_host,
            gitiles_project=self.context.gitiles_project,
            gitiles_ref=self.context.gitiles_ref,
            last_passed_gitiles_id='last_passed_git_hash',
            last_passed_commit_position=65430,
            first_failed_gitiles_id='git_hash',
            first_failed_commit_position=65450,
            rerun_builder_id='chromeos/postsubmit/builder-bisect',
            compile_failure_keys=[])
        analysis.status = analysis_status.RUNNING
        analysis.Save()

        responses = compile_api.OnCompileFailureAnalysisResultRequested(
            request, build)

        self.assertEqual(1, len(responses))
        self.assertEqual(0, len(responses[0].culprits))
        self.assertFalse(responses[0].is_finished)
        self.assertTrue(responses[0].is_supported)
示例#5
0
  def testOnTestFailureAnalysisResultRequestedGetCulpritFromMergedFailure(self):
    build_id = 800000000123
    request = findit_result.BuildFailureAnalysisRequest(
        build_id=build_id, failed_steps=[self.test_step_name])

    culprit_id = 'git_hash_65432'
    culprit_commit_position = 65432
    culprit = Culprit.Create(
        self.context.gitiles_host, self.context.gitiles_project,
        self.context.gitiles_ref, culprit_id, culprit_commit_position)
    culprit.put()

    merge_failure = TestFailure.Create(
        ndb.Key(LuciFailedBuild, build_id), self.test_step_name, 'test7')
    merge_failure.culprit_commit_key = culprit.key
    merge_failure.first_failed_build_id = build_id
    merge_failure.failure_group_build_id = build_id
    merge_failure.put()

    analysis = TestFailureAnalysis.Create(
        luci_project=self.context.luci_project_name,
        luci_bucket='postsubmit',
        luci_builder='Linux Builder',
        build_id=build_id,
        gitiles_host=self.context.gitiles_host,
        gitiles_project=self.context.gitiles_project,
        gitiles_ref=self.context.gitiles_ref,
        last_passed_gitiles_id='last_passed_git_hash',
        last_passed_commit_position=65430,
        first_failed_gitiles_id='git_hash',
        first_failed_commit_position=65450,
        rerun_builder_id='chromeos/postsubmit/builder-bisect',
        test_failure_keys=[merge_failure.key])
    analysis.status = analysis_status.COMPLETED
    analysis.Save()

    build = LuciFailedBuild.Create(
        luci_project='chromium',
        luci_bucket='ci',
        luci_builder='Linux Builder',
        build_id=800000000124,
        legacy_build_number=12345,
        gitiles_host='chromium.googlesource.com',
        gitiles_project='chromium/src',
        gitiles_ref='refs/heads/master',
        gitiles_id='git_hash',
        commit_position=65450,
        status=20,
        create_time=datetime(2019, 3, 28),
        start_time=datetime(2019, 3, 28, 0, 1),
        end_time=datetime(2019, 3, 28, 1),
        build_failure_type=StepTypeEnum.TEST)
    build.put()

    test_failure = TestFailure.Create(
        ndb.Key(LuciFailedBuild, 800000000124), self.test_step_name, 'test7')
    test_failure.merged_failure_key = merge_failure.key
    test_failure.first_failed_build_id = build.build_id
    test_failure.failure_group_build_id = build.build_id
    test_failure.put()

    responses = test_analysis.OnTestFailureAnalysisResultRequested(
        request, build)

    self.assertEqual(1, len(responses))
    self.assertEqual(1, len(responses[0].culprits))
    self.assertEqual(culprit_id, responses[0].culprits[0].commit.id)
    self.assertTrue(responses[0].is_finished)
    self.assertEqual('test7', responses[0].test_name)