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

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

Issue 1622813003: [Findit] Adding support for extracting revisions from dict instead of list (Closed) Base URL: https://chromium.googlesource.com/infra/infra.git@master
Patch Set: Addressing code review comments Created 4 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
Index: appengine/findit/waterfall/test/identify_try_job_culprit_pipeline_test.py
diff --git a/appengine/findit/waterfall/test/identify_try_job_culprit_pipeline_test.py b/appengine/findit/waterfall/test/identify_try_job_culprit_pipeline_test.py
index 4557aa46735982ce6fdb8ad322e11d8652b2dbe7..8abda36162eda9eb2577011bebebb23f64d7826a 100644
--- a/appengine/findit/waterfall/test/identify_try_job_culprit_pipeline_test.py
+++ b/appengine/findit/waterfall/test/identify_try_job_culprit_pipeline_test.py
@@ -24,6 +24,62 @@ class IdentifyTryJobCulpritPipelineTest(testing.AppengineTestCase):
mock_change_logs['rev2'] = MockedChangeLog('2', 'url_2')
return mock_change_logs.get(revision)
+ def testGetFailedRevisionFromResultsDict(self):
+ self.assertIsNone(
+ IdentifyTryJobCulpritPipeline._GetFailedRevisionFromResultsDict({}))
+ self.assertEqual(
+ None,
+ IdentifyTryJobCulpritPipeline._GetFailedRevisionFromResultsDict(
+ {'rev1': 'passed'}))
+ self.assertEqual(
+ 'rev1',
+ IdentifyTryJobCulpritPipeline._GetFailedRevisionFromResultsDict(
+ {'rev1': 'failed'}))
+ self.assertEqual(
+ 'rev2',
+ IdentifyTryJobCulpritPipeline._GetFailedRevisionFromResultsDict(
+ {'rev1': 'passed', 'rev2': 'failed'}))
+
+ def testFindFailedRevisionFromCompileResult(self):
+ self.assertIsNone(
+ IdentifyTryJobCulpritPipeline._FindFailedRevisionFromCompileResult(
+ None))
+ self.assertIsNone(
+ IdentifyTryJobCulpritPipeline._FindFailedRevisionFromCompileResult(
+ {'analysis_info': {}}))
+ self.assertIsNone(
+ IdentifyTryJobCulpritPipeline._FindFailedRevisionFromCompileResult(
+ {
+ 'analysis_info': {
+ 'result': {
+ 'rev1': 'passed'
+ }
+ }
+ }))
+ self.assertEqual(
+ 'rev2',
+ IdentifyTryJobCulpritPipeline._FindFailedRevisionFromCompileResult(
+ {
+ 'analysis_info': {
+ 'result': {
+ 'rev1': 'passed',
+ 'rev2': 'failed'
+ }
+ }
+ }))
+
+ def testGetCulpritFromFailedRevision(self):
+ self.mock(GitRepository, 'GetChangeLog', self._MockGetChangeLog)
+ self.assertIsNone(
+ IdentifyTryJobCulpritPipeline._GetCulpritFromFailedRevision(None))
+ self.assertEqual(
+ {
+ 'revision': 'rev2',
+ 'commit_position': '2',
+ 'review_url': 'url_2'
+ },
+ IdentifyTryJobCulpritPipeline._GetCulpritFromFailedRevision('rev2'))
+
def testIdentifyCulpritForCompileReturnNoneIfNoCompileResult(self):
master_name = 'm'
builder_name = 'b'
@@ -46,7 +102,9 @@ class IdentifyTryJobCulpritPipelineTest(testing.AppengineTestCase):
build_number = 1
try_job_id = '1'
compile_result = {
- 'result': [],
+ 'analysis_info': {
+ 'result': {},
+ },
'url': 'url',
'try_job_id': '1',
}
@@ -66,6 +124,135 @@ class IdentifyTryJobCulpritPipelineTest(testing.AppengineTestCase):
build_number = 1
try_job_id = '1'
compile_result = {
+ 'analysis_info': {
+ 'result': {
+ 'rev1': 'passed',
+ 'rev2': 'passed'
+ }
+ },
+ 'url': 'url',
+ 'try_job_id': '1',
+ }
+ WfTryJob.Create(master_name, builder_name, build_number).put()
+
+ pipeline = IdentifyTryJobCulpritPipeline()
+ culprit = pipeline.run(
+ master_name, builder_name, build_number, try_job_id, compile_result)
+ try_job = WfTryJob.Get(master_name, builder_name, build_number)
+
+ self.assertIsNone(culprit)
+ self.assertEqual(wf_analysis_status.ANALYZED, try_job.status)
+
+ def testIdentifyCulpritForCompileReturnNoneIfNoChangeLog(self):
+ master_name = 'm'
+ builder_name = 'b'
+ build_number = 1
+ try_job_id = '1'
+ compile_result = {
+ 'result': [
+ ['rev1', 'failed']
+ ],
+ 'url': 'url',
+ 'try_job_id': '1',
+ }
+
+ self.mock(GitRepository, 'GetChangeLog', self._MockGetChangeLog)
+ WfTryJob.Create(master_name, builder_name, build_number).put()
+
+ pipeline = IdentifyTryJobCulpritPipeline()
+ culprit = pipeline.run(
+ master_name, builder_name, build_number, try_job_id, compile_result)
+ try_job = WfTryJob.Get(master_name, builder_name, build_number)
+
+ self.assertIsNone(culprit)
+ self.assertEqual(wf_analysis_status.ANALYZED, try_job.status)
+
+ def testIdentifyCulpritForCompileTryJobSuccess(self):
+ master_name = 'm'
+ builder_name = 'b'
+ build_number = 1
+ try_job_id = '1'
+ compile_result = {
+ 'analysis_info': {
+ 'result': {
+ 'rev1': 'passed',
+ 'rev2': 'failed'
+ }
+ },
+ 'url': 'url',
+ 'try_job_id': '1',
+ }
+
+ try_job = WfTryJob.Create(master_name, builder_name, build_number)
+ try_job.status = wf_analysis_status.ANALYZING
+ try_job.compile_results = [{
+ 'analysis_info': {
+ 'result': {
+ 'rev1': 'passed',
+ 'rev2': 'failed'
+ },
+ },
+ 'url': 'url',
+ 'try_job_id': '1',
+ }]
+ try_job.put()
+
+ self.mock(GitRepository, 'GetChangeLog', self._MockGetChangeLog)
+
+ pipeline = IdentifyTryJobCulpritPipeline()
+ culprit = pipeline.run(
+ master_name, builder_name, build_number, try_job_id, compile_result)
+
+ expected_compile_result = {
+ 'analysis_info': {
+ 'result': {
+ 'rev1': 'passed',
+ 'rev2': 'failed'
+ }
+ },
+ 'url': 'url',
+ 'try_job_id': '1',
+ 'culprit': {
+ 'revision': 'rev2',
+ 'commit_position': '2',
+ 'review_url': 'url_2'
+ }
+ }
+
+ self.assertEqual(expected_compile_result['culprit'], culprit)
+
+ try_job = WfTryJob.Get(master_name, builder_name, build_number)
+ self.assertEqual(expected_compile_result, try_job.compile_results[-1])
+ self.assertEqual(wf_analysis_status.ANALYZED, try_job.status)
+
+ # TODO(lijeffrey): Deprecate all tests with compile_results whose 'result'
+ # key is a list once it is returned as a dict from the recipe.
+ def testIdentifyCulpritForCompileNoTryJobResultListForCompile(self):
+ master_name = 'm'
+ builder_name = 'b'
+ build_number = 1
+ try_job_id = '1'
+ compile_result = {
+ 'result': [],
+ 'url': 'url',
+ 'try_job_id': '1',
+ }
+ WfTryJob.Create(master_name, builder_name, build_number).put()
+
+ pipeline = IdentifyTryJobCulpritPipeline()
+ culprit = pipeline.run(
+ master_name, builder_name, build_number, try_job_id, compile_result)
+ try_job = WfTryJob.Get(master_name, builder_name, build_number)
+
+ self.assertIsNone(culprit)
+ self.assertEqual(wf_analysis_status.ANALYZED, try_job.status)
+
+ def testIdentifyCulpritForCompileListReturnNoneIfAllPassed(self):
+ master_name = 'm'
+ builder_name = 'b'
+ build_number = 1
+ try_job_id = '1'
+ compile_result = {
'result': [
['rev1', 'passed'],
['rev2', 'passed']
@@ -83,7 +270,7 @@ class IdentifyTryJobCulpritPipelineTest(testing.AppengineTestCase):
self.assertIsNone(culprit)
self.assertEqual(wf_analysis_status.ANALYZED, try_job.status)
- def testIdentifyCulpritForCompileReturnNoneIfNoChangeLog(self):
+ def testIdentifyCulpritForCompileListReturnNoneIfNoChangeLog(self):
master_name = 'm'
builder_name = 'b'
build_number = 1
@@ -107,7 +294,7 @@ class IdentifyTryJobCulpritPipelineTest(testing.AppengineTestCase):
self.assertIsNone(culprit)
self.assertEqual(wf_analysis_status.ANALYZED, try_job.status)
- def testIdentifyCulpritForCompileTryJobSuccess(self):
+ def testIdentifyCulpritForCompileListTryJobSuccess(self):
master_name = 'm'
builder_name = 'b'
build_number = 1

Powered by Google App Engine
This is Rietveld 408576698