Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1519)

Unified Diff: appengine/findit/waterfall/test/build_failure_analysis_pipelines_test.py

Issue 820113002: [Findit] Add a sub-pipeline to detect first-known failure. (Closed) Base URL: https://chromium.googlesource.com/infra/infra.git@master
Patch Set: Address comments Created 5 years, 11 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « appengine/findit/waterfall/lock_util.py ('k') | appengine/findit/waterfall/test/data/m_b_121.json » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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..b8e26621b4a43326887c62fe223f047530ad565a 100644
--- a/appengine/findit/waterfall/test/build_failure_analysis_pipelines_test.py
+++ b/appengine/findit/waterfall/test/build_failure_analysis_pipelines_test.py
@@ -1,30 +1,35 @@
-# Copyright (c) 2014 The Chromium Authors. All rights reserved.
+# Copyright 2014 The Chromium Authors. All rights reserved.
# 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
+from waterfall import lock_util
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 +38,52 @@ 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
+ def _WaitUntilDownloadAllowed(*_):
+ return True
+
+ self.mock(lock_util, 'WaitUntilDownloadAllowed', _WaitUntilDownloadAllowed)
+
+ # Mock build data in urlfetch.
+ with self.mock_urlfetch() as urlfetch:
+ for i in range(3):
+ build_url = buildbot.CreateBuildUrl(
+ master_name, builder_name, build_number - i, json_api=True)
+ 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(build_url, f.read())
+
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)
+ analysis = BuildAnalysis.GetBuildAnalysis(
+ master_name, builder_name, build_number)
+ self.assertIsNotNone(analysis)
+ self.assertEqual(BuildAnalysisStatus.ANALYZED, analysis.status)
« no previous file with comments | « appengine/findit/waterfall/lock_util.py ('k') | appengine/findit/waterfall/test/data/m_b_121.json » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698