Chromium Code Reviews| Index: appengine/findit/waterfall/test/build_failure_analysis_pipelines_test.py |
| diff --git a/appengine/findit/waterfall/test/build_failure_analysis_pipelines_test.py b/appengine/findit/waterfall/test/build_failure_analysis_pipelines_test.py |
| index 8b40736b3dfad0b3f35bdd7856165767c5d54c6b..3d4dfc00ad2b5387befd6fc07399c1f05fdad8f3 100644 |
| --- a/appengine/findit/waterfall/test/build_failure_analysis_pipelines_test.py |
| +++ b/appengine/findit/waterfall/test/build_failure_analysis_pipelines_test.py |
| @@ -2,29 +2,33 @@ |
| # Use of this source code is governed by a BSD-style license that can be |
| # found in the LICENSE file. |
| +import os |
| + |
| from pipeline_utils.appengine_third_party_pipeline_src_pipeline import handlers |
| from testing_utils import testing |
| -from model.build import Build |
| +from model.build_analysis import BuildAnalysis |
| from model.build_analysis_status import BuildAnalysisStatus |
| from waterfall import build_failure_analysis_pipelines |
| +from waterfall import buildbot |
| class BuildFailureAnalysisPipelinesTest(testing.AppengineTestCase): |
| app_module = handlers._APP |
| - def _CreateAndSaveBuild(self, master_name, builder_name, build_number, |
| - analysis_status): |
| - build = Build.CreateBuild(master_name, builder_name, build_number) |
| - build.analysis_status = analysis_status |
| - build.put() |
| + def _CreateAndSaveBuildAnanlysis( |
| + self, master_name, builder_name, build_number, status): |
| + analysis = BuildAnalysis.CreateBuildAnalysis( |
| + master_name, builder_name, build_number) |
| + analysis.status = status |
| + analysis.put() |
| def testAnanlysIsNeededWhenBuildWasNeverAnalyzed(self): |
| master_name = 'm' |
| builder_name = 'b 1' |
| build_number = 123 |
| - _, need_analysis = build_failure_analysis_pipelines.NeedANewAnalysis( |
| + need_analysis = build_failure_analysis_pipelines.NeedANewAnalysis( |
| master_name, builder_name, build_number, False) |
| self.assertTrue(need_analysis) |
| @@ -33,37 +37,56 @@ class BuildFailureAnalysisPipelinesTest(testing.AppengineTestCase): |
| master_name = 'm' |
| builder_name = 'b 1' |
| build_number = 123 |
| - self._CreateAndSaveBuild(master_name, builder_name, build_number, |
| + self._CreateAndSaveBuildAnanlysis(master_name, builder_name, build_number, |
| BuildAnalysisStatus.ANALYZED) |
| - build, need_analysis = build_failure_analysis_pipelines.NeedANewAnalysis( |
| + need_analysis = build_failure_analysis_pipelines.NeedANewAnalysis( |
| master_name, builder_name, build_number, False) |
| self.assertFalse(need_analysis) |
| - self.assertEqual(BuildAnalysisStatus.ANALYZED, build.analysis_status) |
| def testNewAnanlysIsNeededWhenForced(self): |
| master_name = 'm' |
| builder_name = 'b 1' |
| build_number = 123 |
| - self._CreateAndSaveBuild(master_name, builder_name, build_number, |
| + self._CreateAndSaveBuildAnanlysis(master_name, builder_name, build_number, |
| BuildAnalysisStatus.ANALYZED) |
| - _, need_analysis = build_failure_analysis_pipelines.NeedANewAnalysis( |
| + need_analysis = build_failure_analysis_pipelines.NeedANewAnalysis( |
| master_name, builder_name, build_number, True) |
| self.assertTrue(need_analysis) |
| - def testAnalysisScheduled(self): |
| + def testSuccessfulAnalysisOfBuildFailure(self): |
| master_name = 'm' |
| - builder_name = 'b 1' |
| + builder_name = 'b' |
| build_number = 123 |
| - build_failure_analysis_pipelines.ScheduleAnalysisIfNeeded( |
| - master_name, builder_name, build_number, False, 'default') |
| - |
| - self.execute_queued_tasks() |
| - |
| - build = Build.GetBuild(master_name, builder_name, build_number) |
| - self.assertIsNotNone(build) |
| - self.assertEqual(BuildAnalysisStatus.ANALYZED, build.analysis_status) |
| + def _MockFunc(*_): |
| + return True |
| + |
| + original_func = build_failure_analysis_pipelines._WaitUntilDownloadAllowed |
| + try: |
| + build_failure_analysis_pipelines._WaitUntilDownloadAllowed = _MockFunc |
| + |
| + with self.mock_urlfetch() as urlfetch: |
| + for i in range(3): |
| + file_name = os.path.join(os.path.dirname(__file__), 'data', |
| + 'm_b_%s.json' % (build_number - i)) |
| + with open(file_name, 'r') as f: |
| + urlfetch.register_handler( |
| + buildbot.CreateBuildUrl( |
| + master_name, builder_name, build_number - i, json_api=True), |
| + f.read()) |
|
qyearsley
2015/01/07 06:59:46
It's not very clear what's happening here --
1) Ma
stgao
2015/01/09 01:28:23
I add a comment about the purpose of the code.
url
|
| + |
| + build_failure_analysis_pipelines.ScheduleAnalysisIfNeeded( |
| + master_name, builder_name, build_number, False, 'default') |
| + |
| + self.execute_queued_tasks() |
| + |
| + analysis = BuildAnalysis.GetBuildAnalysis( |
| + master_name, builder_name, build_number) |
| + self.assertIsNotNone(analysis) |
| + self.assertEqual(BuildAnalysisStatus.ANALYZED, analysis.status) |
| + finally: |
| + build_failure_analysis_pipelines._WaitUntilDownloadAllowed = original_func |