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

Side by Side Diff: appengine/findit/waterfall/test/monitor_try_job_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: If different tests within the same step fail in different revisions, all revisions should be culpri… 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 unified diff | Download patch
OLDNEW
1 # Copyright 2015 The Chromium Authors. All rights reserved. 1 # Copyright 2015 The Chromium Authors. All rights reserved.
2 # Use of this source code is governed by a BSD-style license that can be 2 # Use of this source code is governed by a BSD-style license that can be
3 # found in the LICENSE file. 3 # found in the LICENSE file.
4 4
5 from testing_utils import testing 5 from testing_utils import testing
6 6
7 from common import buildbucket_client 7 from common import buildbucket_client
8 from model import wf_analysis_status 8 from model import wf_analysis_status
9 from model.wf_try_job import WfTryJob 9 from model.wf_try_job import WfTryJob
10 from waterfall.monitor_try_job_pipeline import MonitorTryJobPipeline 10 from waterfall.monitor_try_job_pipeline import MonitorTryJobPipeline
(...skipping 10 matching lines...) Expand all
21 'result_details_json': ( 21 'result_details_json': (
22 '{"properties": {"result": [["rev1", "passed"],' 22 '{"properties": {"result": [["rev1", "passed"],'
23 ' ["rev2", "failed"]]}}') 23 ' ["rev2", "failed"]]}}')
24 } 24 }
25 }, 25 },
26 '2': { 26 '2': {
27 'error': { 27 'error': {
28 'reason': 'BUILD_NOT_FOUND', 28 'reason': 'BUILD_NOT_FOUND',
29 'message': 'message', 29 'message': 'message',
30 } 30 }
31 },
32 '3': {
33 'build': {
34 'id': '3',
35 'url': 'url',
36 'status': 'COMPLETED',
37 'result_details_json': (
38 '{"properties": {"result": {"rev1": {"a_test": {"status":'
39 ' "passed", "valid": true}}, "rev2": {"a_test": '
40 '{"status": "failed", "valid": true, "failures": ["test1"'
41 ', "test2"]}}}}}')
42 }
31 } 43 }
32 } 44 }
33 compile_results = [] 45 try_job_results = []
34 build_error = data.get(build_id) 46 build_error = data.get(build_id)
35 if build_error.get('error'): # pragma: no cover 47 if build_error.get('error'): # pragma: no cover
36 compile_results.append(( 48 try_job_results.append((
37 buildbucket_client.BuildbucketError(build_error['error']), None)) 49 buildbucket_client.BuildbucketError(build_error['error']), None))
38 else: 50 else:
39 compile_results.append(( 51 try_job_results.append((
40 None, buildbucket_client.BuildbucketBuild(build_error['build']))) 52 None, buildbucket_client.BuildbucketBuild(build_error['build'])))
41 return compile_results 53 return try_job_results
42 self.mock(buildbucket_client, 'GetTryJobs', Mocked_GetTryJobs) 54 self.mock(buildbucket_client, 'GetTryJobs', Mocked_GetTryJobs)
43 55
44 def testGetTryJobsForCompileSuccess(self): 56 def testGetTryJobsForCompileSuccess(self):
45 master_name = 'm' 57 master_name = 'm'
46 builder_name = 'b' 58 builder_name = 'b'
47 build_number = 1 59 build_number = 1
48 try_job_id = '1' 60 try_job_id = '1'
49 61
50 try_job = WfTryJob.Create(master_name, builder_name, build_number) 62 try_job = WfTryJob.Create(master_name, builder_name, build_number)
51 try_job.compile_results = [ 63 try_job.compile_results = [
52 { 64 {
53 'result': None, 65 'result': None,
54 'url': 'url', 66 'url': 'url',
55 'try_job_id': '1', 67 'try_job_id': '1',
56 } 68 }
57 ] 69 ]
58 try_job.status = wf_analysis_status.ANALYZING 70 try_job.status = wf_analysis_status.ANALYZING
59 try_job.put() 71 try_job.put()
60 self._Mock_GetTryJobs(try_job_id) 72 self._Mock_GetTryJobs(try_job_id)
61 73
62 pipeline = MonitorTryJobPipeline() 74 pipeline = MonitorTryJobPipeline()
63 compile_result = pipeline.run( 75 compile_result = pipeline.run(
64 master_name, builder_name, build_number, try_job_id) 76 master_name, builder_name, build_number, 'compile', try_job_id)
65 77
66 expected_compile_result = { 78 expected_compile_result = {
67 'result': [ 79 'result': [
68 ['rev1', 'passed'], 80 ['rev1', 'passed'],
69 ['rev2', 'failed'] 81 ['rev2', 'failed']
70 ], 82 ],
71 'url': 'url', 83 'url': 'url',
72 'try_job_id': '1', 84 'try_job_id': '1',
73 } 85 }
74 self.assertEqual(expected_compile_result, compile_result) 86 self.assertEqual(expected_compile_result, compile_result)
75 87
76 try_job = WfTryJob.Get(master_name, builder_name, build_number) 88 try_job = WfTryJob.Get(master_name, builder_name, build_number)
77 self.assertEqual(expected_compile_result, try_job.compile_results[-1]) 89 self.assertEqual(expected_compile_result, try_job.compile_results[-1])
78 self.assertEqual(wf_analysis_status.ANALYZING, try_job.status) 90 self.assertEqual(wf_analysis_status.ANALYZING, try_job.status)
91
92
93 def testGetTryJobsForTestSuccess(self):
94 master_name = 'm'
95 builder_name = 'b'
96 build_number = 1
97 try_job_id = '3'
98
99 try_job = WfTryJob.Create(master_name, builder_name, build_number)
100 try_job.test_results = [
101 {
102 'result': None,
103 'url': 'url',
104 'try_job_id': '3',
105 }
106 ]
107 try_job.status = wf_analysis_status.ANALYZING
108 try_job.put()
109 self._Mock_GetTryJobs(try_job_id)
110
111 pipeline = MonitorTryJobPipeline()
112 test_result = pipeline.run(
113 master_name, builder_name, build_number, 'test', try_job_id)
114
115 expected_test_result = {
116 'result': {
117 'rev1': {
118 'a_test': {
119 'status': 'passed',
120 'valid': True
121 }
122 },
123 'rev2': {
124 'a_test': {
125 'status': 'failed',
126 'valid': True,
127 'failures': ['test1', 'test2']
128 }
129 }
130 },
131 'url': 'url',
132 'try_job_id': '3',
133 }
134 self.assertEqual(expected_test_result, test_result)
135
136 try_job = WfTryJob.Get(master_name, builder_name, build_number)
137 self.assertEqual(expected_test_result, try_job.test_results[-1])
138 self.assertEqual(wf_analysis_status.ANALYZING, try_job.status)
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698