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

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

Issue 2230103002: [Findit] Pipeline change to save suspected cls to data store. (Closed) Base URL: https://chromium.googlesource.com/infra/infra.git@0808-resubmit-suspected_cl_model
Patch Set: . Created 4 years, 4 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 5ff5729df71521260e9d36ffb8644116684eb7e6..e263cb04625fb47b8a51b00cecafb700bc647b4f 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
@@ -6,9 +6,11 @@ from testing_utils import testing
from common.git_repository import GitRepository
from common.waterfall import failure_type
+from model import analysis_approach_type
from model import analysis_status
from model import result_status
from model.wf_analysis import WfAnalysis
+from model.wf_suspected_cl import WfSuspectedCL
from model.wf_try_job import WfTryJob
from model.wf_try_job_data import WfTryJobData
from waterfall import identify_try_job_culprit_pipeline
@@ -26,8 +28,8 @@ 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')
+ mock_change_logs['rev1'] = MockedChangeLog(1, 'url_1')
+ mock_change_logs['rev2'] = MockedChangeLog(2, 'url_2')
return mock_change_logs.get(revision)
def setUp(self):
@@ -101,7 +103,7 @@ class IdentifyTryJobCulpritPipelineTest(testing.AppengineTestCase):
'culprit': {
'compile': {
'revision': 'rev1',
- 'commit_position': '1',
+ 'commit_position': 1,
'url': 'url_1',
'repo_name': 'chromium'
}
@@ -124,7 +126,7 @@ class IdentifyTryJobCulpritPipelineTest(testing.AppengineTestCase):
'culprit': {
'compile': {
'revision': 'rev1',
- 'commit_position': '1',
+ 'commit_position': 1,
'url': 'url_1',
'repo_name': 'chromium'
}
@@ -148,7 +150,7 @@ class IdentifyTryJobCulpritPipelineTest(testing.AppengineTestCase):
'culprit': {
'compile': {
'revision': 'rev1',
- 'commit_position': '1',
+ 'commit_position': 1,
'url': 'url_1',
'repo_name': 'chromium'
}
@@ -171,7 +173,7 @@ class IdentifyTryJobCulpritPipelineTest(testing.AppengineTestCase):
'culprit': {
'compile': {
'revision': 'rev1',
- 'commit_position': '1',
+ 'commit_position': 1,
'url': 'url_1',
'repo_name': 'chromium'
}
@@ -206,7 +208,7 @@ class IdentifyTryJobCulpritPipelineTest(testing.AppengineTestCase):
'culprit': {
'compile': {
'revision': 'rev1',
- 'commit_position': '1',
+ 'commit_position': 1,
'url': 'url_1',
'repo_name': 'chromium'
}
@@ -248,14 +250,14 @@ class IdentifyTryJobCulpritPipelineTest(testing.AppengineTestCase):
def testGetSuspectedCLsForCompileTryJob(self):
heuristic_suspected_cl = {
'revision': 'rev1',
- 'commit_position': '1',
+ 'commit_position': 1,
'url': 'url_1',
'repo_name': 'chromium'
}
compile_suspected_cl = {
'revision': 'rev2',
- 'commit_position': '2',
+ 'commit_position': 2,
'url': 'url_2',
'repo_name': 'chromium'
}
@@ -264,20 +266,17 @@ class IdentifyTryJobCulpritPipelineTest(testing.AppengineTestCase):
analysis.suspected_cls = [heuristic_suspected_cl]
analysis.put()
- result = {
- 'culprit': {
- 'compile': compile_suspected_cl
- }
- }
+ try_job_suspected_cls = [compile_suspected_cl]
self.assertEqual(
- identify_try_job_culprit_pipeline._GetSuspectedCLs(analysis, result),
+ identify_try_job_culprit_pipeline._GetSuspectedCLs(
+ analysis, try_job_suspected_cls),
[heuristic_suspected_cl, compile_suspected_cl])
def testGetSuspectedCLsForTestTryJobAndHeuristicResultsSame(self):
suspected_cl = {
'revision': 'rev1',
- 'commit_position': '1',
+ 'commit_position': 1,
'url': 'url_1',
'repo_name': 'chromium'
}
@@ -286,38 +285,34 @@ class IdentifyTryJobCulpritPipelineTest(testing.AppengineTestCase):
analysis.suspected_cls = [suspected_cl]
analysis.put()
- result = {
- 'culprit': {
- 'compile': suspected_cl
- }
- }
+ try_job_suspected_cls = [suspected_cl]
self.assertEqual(
- identify_try_job_culprit_pipeline._GetSuspectedCLs(analysis, result),
- [suspected_cl])
+ identify_try_job_culprit_pipeline._GetSuspectedCLs(
+ analysis, try_job_suspected_cls), [suspected_cl])
def testGetSuspectedCLsForTestTryJob(self):
suspected_cl1 = {
'revision': 'rev1',
- 'commit_position': '1',
+ 'commit_position': 1,
'url': 'url_1',
'repo_name': 'chromium'
}
suspected_cl2 = {
'revision': 'rev2',
- 'commit_position': '2',
+ 'commit_position': 2,
'url': 'url_2',
'repo_name': 'chromium'
}
suspected_cl3 = {
'revision': 'rev3',
- 'commit_position': '3',
+ 'commit_position': 3,
'url': 'url_3',
'repo_name': 'chromium'
}
analysis = WfAnalysis.Create('m', 'b', 1)
- analysis.suspected_cls = []
+ analysis.suspected_cls = [suspected_cl3]
analysis.put()
result = {
@@ -335,22 +330,24 @@ class IdentifyTryJobCulpritPipelineTest(testing.AppengineTestCase):
},
'c_test': {
'revision': 'rev3',
- 'commit_position': '3',
+ 'commit_position': 3,
'url': 'url_3',
'repo_name': 'chromium',
'tests': {}
}
}
}
+ try_job_suspected_cls = [suspected_cl1, suspected_cl1, suspected_cl2]
+ result = identify_try_job_culprit_pipeline._GetSuspectedCLs(
+ analysis, try_job_suspected_cls)
self.assertEqual(
- identify_try_job_culprit_pipeline._GetSuspectedCLs(analysis, result),
- [suspected_cl3, suspected_cl2, suspected_cl1])
+ result, [suspected_cl3, suspected_cl1, suspected_cl2])
def testGetSuspectedCLsForTestTryJobWithHeuristicResult(self):
suspected_cl = {
'revision': 'rev1',
- 'commit_position': '1',
+ 'commit_position': 1,
'url': 'url_1',
'repo_name': 'chromium'
}
@@ -359,19 +356,8 @@ class IdentifyTryJobCulpritPipelineTest(testing.AppengineTestCase):
analysis.suspected_cls = [suspected_cl]
analysis.put()
- result = {
- 'culprit': {
- 'a_test': {
- 'revision': 'rev1',
- 'commit_position': '1',
- 'url': 'url_1',
- 'repo_name': 'chromium',
- 'tests': {}
- }
- }
- }
self.assertEqual(
- identify_try_job_culprit_pipeline._GetSuspectedCLs(analysis, result),
+ identify_try_job_culprit_pipeline._GetSuspectedCLs(analysis, []),
[suspected_cl])
def testIdentifyCulpritForCompileTryJobNoCulprit(self):
@@ -442,7 +428,7 @@ class IdentifyTryJobCulpritPipelineTest(testing.AppengineTestCase):
expected_culprit = 'rev2'
expected_suspected_cl = {
'revision': 'rev2',
- 'commit_position': '2',
+ 'commit_position': 2,
'url': 'url_2',
'repo_name': 'chromium'
}
@@ -543,7 +529,7 @@ class IdentifyTryJobCulpritPipelineTest(testing.AppengineTestCase):
suspected_cl = {
'revision': 'rev1',
- 'commit_position': '1',
+ 'commit_position': 1,
'url': 'url_1',
'repo_name': 'chromium'
}
@@ -694,10 +680,6 @@ class IdentifyTryJobCulpritPipelineTest(testing.AppengineTestCase):
'status': 'failed',
'valid': True,
'failures': ['b_test1']
- },
- 'c_test': {
- 'status': 'passed',
- 'valid': True
}
},
'rev2': {
@@ -709,11 +691,6 @@ class IdentifyTryJobCulpritPipelineTest(testing.AppengineTestCase):
'b_test': {
'status': 'passed',
'valid': True
- },
- 'c_test': {
- 'status': 'failed',
- 'valid': True,
- 'failures': []
}
}
}
@@ -737,13 +714,13 @@ class IdentifyTryJobCulpritPipelineTest(testing.AppengineTestCase):
a_test1_suspected_cl = {
'revision': 'rev1',
- 'commit_position': '1',
+ 'commit_position': 1,
'url': 'url_1',
'repo_name': 'chromium'
}
a_test2_suspected_cl = {
'revision': 'rev2',
- 'commit_position': '2',
+ 'commit_position': 2,
'url': 'url_2',
'repo_name': 'chromium'
}
@@ -763,10 +740,6 @@ class IdentifyTryJobCulpritPipelineTest(testing.AppengineTestCase):
'status': 'failed',
'valid': True,
'failures': ['b_test1']
- },
- 'c_test': {
- 'status': 'passed',
- 'valid': True
}
},
'rev2': {
@@ -778,11 +751,6 @@ class IdentifyTryJobCulpritPipelineTest(testing.AppengineTestCase):
'b_test': {
'status': 'passed',
'valid': True
- },
- 'c_test': {
- 'status': 'failed',
- 'valid': True,
- 'failures': []
}
}
}
@@ -800,13 +768,6 @@ class IdentifyTryJobCulpritPipelineTest(testing.AppengineTestCase):
'tests': {
'b_test1': b_test1_suspected_cl
}
- },
- 'c_test': {
- 'revision': 'rev2',
- 'commit_position': '2',
- 'url': 'url_2',
- 'repo_name': 'chromium',
- 'tests': {}
}
}
}
@@ -826,37 +787,46 @@ class IdentifyTryJobCulpritPipelineTest(testing.AppengineTestCase):
},
'b_test': {
'b_test1': 'rev1',
- },
- 'c_test': 'rev2'
}
+ }
self.assertEqual(expected_culprit_data, try_job_data.culprits)
self.assertEqual(analysis.result_status,
result_status.FOUND_UNTRIAGED)
self.assertEqual(analysis.suspected_cls,
- [a_test2_suspected_cl, a_test1_suspected_cl])
+ [a_test1_suspected_cl, a_test2_suspected_cl])
def testAnalysisIsUpdatedOnlyIfStatusOrSuspectedCLsChanged(self):
master_name = 'm'
builder_name = 'b'
build_number = 1
try_job_id = '1'
+ repo_name = 'chromium'
+ revision = 'rev1'
+ commit_position = 1
- suspected_cl = {
- 'revision': 'rev1',
- 'commit_position': '1',
+ heuristic_suspected_cl = {
+ 'revision': revision,
+ 'commit_position': commit_position,
'url': 'url_1',
- 'repo_name': 'chromium'
+ 'repo_name': repo_name
}
analysis = WfAnalysis.Create(master_name, builder_name, build_number)
- analysis.suspected_cls = [suspected_cl]
+ analysis.suspected_cls = [heuristic_suspected_cl]
analysis.result_status = result_status.FOUND_UNTRIAGED
analysis.put()
version = analysis.version
+
+ build_info = [master_name, builder_name, build_number]
+ suspected_cl = WfSuspectedCL.Create(repo_name, revision, commit_position)
+ suspected_cl.approach = analysis_approach_type.HEURISTIC
+ suspected_cl.builds = [build_info]
+ suspected_cl.put()
+
compile_result = {
'report': {
'result': {
- 'rev1': 'failed',
+ revision: 'failed',
},
},
}
@@ -869,7 +839,7 @@ class IdentifyTryJobCulpritPipelineTest(testing.AppengineTestCase):
try_job.compile_results = [{
'report': {
'result': {
- 'rev1': 'failed',
+ revision: 'failed',
},
},
'try_job_id': try_job_id,
@@ -878,14 +848,18 @@ class IdentifyTryJobCulpritPipelineTest(testing.AppengineTestCase):
try_job.put()
pipeline = IdentifyTryJobCulpritPipeline()
- pipeline.run(master_name, builder_name, build_number, ['rev1'],
+ pipeline.run(master_name, builder_name, build_number, [revision],
failure_type.COMPILE, '1', compile_result)
self.assertEqual(analysis.result_status,
result_status.FOUND_UNTRIAGED)
- self.assertEqual(analysis.suspected_cls, [suspected_cl])
+ self.assertEqual(analysis.suspected_cls, [heuristic_suspected_cl])
self.assertEqual(version, analysis.version) # No update to analysis.
+ suspected_cl = WfSuspectedCL.Get(repo_name, revision)
+ self.assertEqual(analysis_approach_type.BOTH, suspected_cl.approach)
+ self.assertEqual([build_info], suspected_cl.builds)
+
def testFindCulpritForEachTestFailureRevisionNotRun(self):
blame_list = ['rev1']
result = {

Powered by Google App Engine
This is Rietveld 408576698