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

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

Issue 1591003002: [Findit] Modify tryjob pipelines to trigger try jobs for test failure. (Closed) Base URL: https://chromium.googlesource.com/infra/infra.git@master
Patch Set: . 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 05d637b5ec66124dfd454d4fcffa12acabef49a2..abe5cae22d425c2aa68827e9e795277c76f1ba23 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
@@ -9,6 +9,7 @@ from model import wf_analysis_status
from model.wf_try_job import WfTryJob
from waterfall.identify_try_job_culprit_pipeline import(
IdentifyTryJobCulpritPipeline)
+from waterfall.try_job_type import TryJobType
class IdentifyTryJobCulpritPipelineTest(testing.AppengineTestCase):
@@ -21,6 +22,7 @@ class IdentifyTryJobCulpritPipelineTest(testing.AppengineTestCase):
self.code_review_url = code_review_url
mock_change_logs = {}
+ mock_change_logs['rev1'] = MockedChangeLog('1', 'url_1')
mock_change_logs['rev2'] = MockedChangeLog('2', 'url_2')
return mock_change_logs.get(revision)
@@ -77,33 +79,19 @@ class IdentifyTryJobCulpritPipelineTest(testing.AppengineTestCase):
]
}))
- def testGetCulpritFromFailedRevision(self):
- self.mock(GitRepository, 'GetChangeLog', self._MockGetChangeLog)
- self.assertIsNone(
- IdentifyTryJobCulpritPipeline._GetCulpritFromFailedRevision(None))
- self.assertIsNone(
- IdentifyTryJobCulpritPipeline._GetCulpritFromFailedRevision(
- 'revision_with_no_change_log'))
- self.assertEqual(
- {
- 'revision': 'rev2',
- 'commit_position': '2',
- 'review_url': 'url_2'
- },
- IdentifyTryJobCulpritPipeline._GetCulpritFromFailedRevision('rev2'))
-
def testIdentifyCulpritForCompileTryJobNoCulprit(self):
master_name = 'm'
builder_name = 'b'
build_number = 1
- try_job_id = '1'
try_job = WfTryJob.Create(master_name, builder_name, build_number)
try_job.put()
pipeline = IdentifyTryJobCulpritPipeline()
culprit = pipeline.run(
- master_name, builder_name, build_number, try_job_id, None)
+ master_name, builder_name, build_number, ['rev1'],
+ TryJobType.COMPILE, '1', None)
+ try_job = WfTryJob.Get(master_name, builder_name, build_number)
self.assertEqual(wf_analysis_status.ANALYZED, try_job.status)
self.assertEqual([], try_job.compile_results)
@@ -113,7 +101,6 @@ class IdentifyTryJobCulpritPipelineTest(testing.AppengineTestCase):
master_name = 'm'
builder_name = 'b'
build_number = 1
- try_job_id = '1'
compile_result = {
'report': {
'result': {
@@ -140,8 +127,8 @@ class IdentifyTryJobCulpritPipelineTest(testing.AppengineTestCase):
pipeline = IdentifyTryJobCulpritPipeline()
culprit = pipeline.run(
- master_name, builder_name, build_number, try_job_id, compile_result)
-
+ master_name, builder_name, build_number, ['rev1'],
+ TryJobType.COMPILE, '1', compile_result)
expected_compile_result = {
'report': {
'result': {
@@ -160,48 +147,71 @@ class IdentifyTryJobCulpritPipelineTest(testing.AppengineTestCase):
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)
+ def testIdentifyCulpritForCompileReturnNoneIfAllPassed(self):
+ master_name = 'm'
+ builder_name = 'b'
+ build_number = 1
+ compile_result = {
+ 'report': {
+ '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, ['rev1'],
+ TryJobType.COMPILE, '1', compile_result)
+ try_job = WfTryJob.Get(master_name, builder_name, build_number)
+
+ self.assertIsNone(culprit)
+ 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 testIdentifyCulpritForCompileListTryJobSuccess(self):
master_name = 'm'
builder_name = 'b'
build_number = 1
- try_job_id = '1'
compile_result = {
- 'report': [
- ['rev1', 'passed'],
- ['rev2', 'failed']
- ],
+ 'report': {
+ '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 = [{
- 'report': [
- ['rev1', 'passed'],
- ['rev2', 'failed']
- ],
- 'url': 'url',
- 'try_job_id': '1',
- }]
+ try_job.compile_results = [compile_result]
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)
+ master_name, builder_name, build_number, ['rev1'],
+ TryJobType.COMPILE, '1', compile_result)
expected_compile_result = {
- 'report': [
- ['rev1', 'passed'],
- ['rev2', 'failed']
- ],
+ 'report': {
+ 'result': {
+ 'rev1': 'passed',
+ 'rev2': 'failed'
+ }
+ },
'url': 'url',
'try_job_id': '1',
'culprit': {
@@ -216,3 +226,217 @@ class IdentifyTryJobCulpritPipelineTest(testing.AppengineTestCase):
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)
+
+ def testIdentifyCulpritForTestTryJobReturnNoneIfNoTryJobResult(self):
+ master_name = 'm'
+ builder_name = 'b'
+ build_number = 1
+
+ try_job = WfTryJob.Create(master_name, builder_name, build_number)
+ try_job.status = wf_analysis_status.ANALYZING
+ try_job.put()
+
+ pipeline = IdentifyTryJobCulpritPipeline()
+ culprit = pipeline.run(
+ master_name, builder_name, build_number, ['rev1', 'rev2'],
+ TryJobType.TEST, '1', None)
+
+ self.assertIsNone(culprit)
+
+ def testIdentifyCulpritForTestTryJobReturnNoneIfNoRevisionToCheck(self):
+ master_name = 'm'
+ builder_name = 'b'
+ build_number = 1
+ test_result = {
+ 'report': {
+ 'rev1': {
+ 'a_test': {
+ 'status': 'failed',
+ 'valid': True,
+ 'failures': ['a_test1']
+ }
+ }
+ },
+ '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.put()
+
+ pipeline = IdentifyTryJobCulpritPipeline()
+ culprit = pipeline.run(
+ master_name, builder_name, build_number, [], TryJobType.TEST, '1',
+ test_result)
+
+ self.assertIsNone(culprit)
+
+ def testIdentifyCulpritForTestTryJobReturnNoneIfNoCulpritInfo(self):
+ master_name = 'm'
+ builder_name = 'b'
+ build_number = 1
+ test_result = {
+ 'report': {
+ 'rev3': {
+ 'a_test': {
+ 'status': 'failed',
+ 'valid': True,
+ 'failures': ['a_test1']
+ }
+ }
+ },
+ '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.put()
+
+ pipeline = IdentifyTryJobCulpritPipeline()
+ culprit = pipeline.run(
+ master_name, builder_name, build_number, ['rev3'], TryJobType.TEST,
+ '1', test_result)
+
+ expected_culprit = {
+ 'a_test': {
+ 'tests':{
+ 'a_test1': {
+ 'revision': 'rev3'
+ }
+ }
+ }
+ }
+ self.assertEqual(expected_culprit, culprit)
+
+ def testIdentifyCulpritForTestTryJobSuccess(self):
+ master_name = 'm'
+ builder_name = 'b'
+ build_number = 1
+ test_result = {
+ 'report': {
+ 'rev1': {
+ 'a_test': {
+ 'status': 'failed',
+ 'valid': True,
+ 'failures': ['a_test1']
+ },
+ 'b_test': {
+ 'status': 'failed',
+ 'valid': True,
+ 'failures': ['b_test1']
+ },
+ 'c_test': {
+ 'status': 'passed',
+ 'valid': True
+ }
+ },
+ 'rev2': {
+ 'a_test': {
+ 'status': 'failed',
+ 'valid': True,
+ 'failures': ['a_test1', 'a_test2']
+ },
+ 'b_test': {
+ 'status': 'passed',
+ 'valid': True
+ },
+ 'c_test': {
+ 'status': 'failed',
+ 'valid': True,
+ 'failures': []
+ }
+ }
+ },
+ '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.test_results = [test_result]
+ try_job.put()
+
+ self.mock(GitRepository, 'GetChangeLog', self._MockGetChangeLog)
+
+ pipeline = IdentifyTryJobCulpritPipeline()
+ culprit = pipeline.run(
+ master_name, builder_name, build_number, ['rev1', 'rev2'],
+ TryJobType.TEST, '1', test_result)
+
+ expected_test_result = {
+ 'report': {
+ 'rev1': {
+ 'a_test': {
+ 'status': 'failed',
+ 'valid': True,
+ 'failures': ['a_test1']
+ },
+ 'b_test': {
+ 'status': 'failed',
+ 'valid': True,
+ 'failures': ['b_test1']
+ },
+ 'c_test': {
+ 'status': 'passed',
+ 'valid': True
+ }
+ },
+ 'rev2': {
+ 'a_test': {
+ 'status': 'failed',
+ 'valid': True,
+ 'failures': ['a_test1', 'a_test2']
+ },
+ 'b_test': {
+ 'status': 'passed',
+ 'valid': True
+ },
+ 'c_test': {
+ 'status': 'failed',
+ 'valid': True,
+ 'failures': []
+ }
+ }
+ },
+ 'url': 'url',
+ 'try_job_id': '1',
+ 'culprit': {
+ 'a_test': {
+ 'tests': {
+ 'a_test1': {
+ 'revision': 'rev1',
+ 'commit_position': '1',
+ 'review_url': 'url_1'
+ },
+ 'a_test2': {
+ 'revision': 'rev2',
+ 'commit_position': '2',
+ 'review_url': 'url_2'
+ }
+ }
+ },
+ 'b_test': {
+ 'tests': {
+ 'b_test1': {
+ 'revision': 'rev1',
+ 'commit_position': '1',
+ 'review_url': 'url_1'
+ }
+ }
+ },
+ 'c_test': {
+ 'revision': 'rev2',
+ 'commit_position': '2',
+ 'review_url': 'url_2',
+ 'tests': {}
+ }
+ }
+ }
+
+ self.assertEqual(expected_test_result['culprit'], culprit)
+
+ try_job = WfTryJob.Get(master_name, builder_name, build_number)
+ self.assertEqual(expected_test_result, try_job.test_results[-1])
+ self.assertEqual(wf_analysis_status.ANALYZED, try_job.status)

Powered by Google App Engine
This is Rietveld 408576698