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 |