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

Side by Side Diff: appengine/findit/waterfall/test/monitor_try_job_pipeline_test.py

Issue 1836293002: [Findit] Adding central config test class for unit tests (Closed) Base URL: https://chromium.googlesource.com/infra/infra.git@master
Patch Set: Rebase Created 4 years, 8 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 datetime import datetime 5 from datetime import datetime
6 import json 6 import json
7 from testing_utils import testing
8 import time 7 import time
9 8
10 from common import buildbucket_client 9 from common import buildbucket_client
11 from model import wf_analysis_status 10 from model import wf_analysis_status
12 from model.wf_try_job import WfTryJob 11 from model.wf_try_job import WfTryJob
13 from model.wf_try_job_data import WfTryJobData 12 from model.wf_try_job_data import WfTryJobData
14 from waterfall import waterfall_config
15 from waterfall.monitor_try_job_pipeline import MonitorTryJobPipeline 13 from waterfall.monitor_try_job_pipeline import MonitorTryJobPipeline
14 from waterfall.test import wf_testcase
16 from waterfall.try_job_type import TryJobType 15 from waterfall.try_job_type import TryJobType
17 16
18 17
19 # A counter to enable different responses to requests in a loop. 18 # A counter to enable different responses to requests in a loop.
20 REQUEST_COUNTER = { 19 REQUEST_COUNTER = {
21 '1': 0, 20 '1': 0,
22 '2': 0, 21 '2': 0,
23 '3': 0 22 '3': 0
24 } 23 }
25 24
26 25
27 class MonitorTryJobPipelineTest(testing.AppengineTestCase): 26 class MonitorTryJobPipelineTest(wf_testcase.WaterfallTestCase):
28 27
29 def _MockGetTryJobs(self, build_id): 28 def _MockGetTryJobs(self, build_id):
30 def Mocked_GetTryJobs(*_): 29 def Mocked_GetTryJobs(*_):
31 data = { 30 data = {
32 '1': [ 31 '1': [
33 { 32 {
34 'build': { 33 'build': {
35 'id': '1', 34 'id': '1',
36 'url': 'url', 35 'url': 'url',
37 'status': 'COMPLETED', 36 'status': 'COMPLETED',
(...skipping 76 matching lines...) Expand 10 before | Expand all | Expand 10 after
114 try_job_results.append(( 113 try_job_results.append((
115 buildbucket_client.BuildbucketError(build_error['error']), None)) 114 buildbucket_client.BuildbucketError(build_error['error']), None))
116 else: 115 else:
117 try_job_results.append(( 116 try_job_results.append((
118 None, buildbucket_client.BuildbucketBuild(build_error['build']))) 117 None, buildbucket_client.BuildbucketBuild(build_error['build'])))
119 REQUEST_COUNTER[build_id] += 1 118 REQUEST_COUNTER[build_id] += 1
120 return try_job_results 119 return try_job_results
121 120
122 self.mock(buildbucket_client, 'GetTryJobs', Mocked_GetTryJobs) 121 self.mock(buildbucket_client, 'GetTryJobs', Mocked_GetTryJobs)
123 122
124 def _MockGetTryJobSettings(self):
125 return {
126 'server_query_interval_seconds': 60,
127 'job_timeout_hours': 5,
128 'allowed_response_error_times': 5
129 }
130
131 def setUp(self): 123 def setUp(self):
132 super(MonitorTryJobPipelineTest, self).setUp() 124 super(MonitorTryJobPipelineTest, self).setUp()
133 self.mock(
134 waterfall_config, 'GetTryJobSettings', self._MockGetTryJobSettings)
135 self.mock(time, 'sleep', lambda x: None) 125 self.mock(time, 'sleep', lambda x: None)
136 126
137 def testMicrosecondsToDatetime(self): 127 def testMicrosecondsToDatetime(self):
138 self.assertEqual( 128 self.assertEqual(
139 datetime(2016, 2, 1, 22, 59, 34), 129 datetime(2016, 2, 1, 22, 59, 34),
140 MonitorTryJobPipeline._MicrosecondsToDatetime(1454367574000000)) 130 MonitorTryJobPipeline._MicrosecondsToDatetime(1454367574000000))
141 self.assertIsNone(MonitorTryJobPipeline._MicrosecondsToDatetime(None)) 131 self.assertIsNone(MonitorTryJobPipeline._MicrosecondsToDatetime(None))
142 132
143 def testUpdateTryJobMetadataForBuildError(self): 133 def testUpdateTryJobMetadataForBuildError(self):
144 error_data = { 134 error_data = {
(...skipping 63 matching lines...) Expand 10 before | Expand all | Expand 10 after
208 try_job.compile_results = [ 198 try_job.compile_results = [
209 { 199 {
210 'report': None, 200 'report': None,
211 'url': 'url', 201 'url': 'url',
212 'try_job_id': '1', 202 'try_job_id': '1',
213 } 203 }
214 ] 204 ]
215 try_job.status = wf_analysis_status.ANALYZING 205 try_job.status = wf_analysis_status.ANALYZING
216 try_job.put() 206 try_job.put()
217 self._MockGetTryJobs(try_job_id) 207 self._MockGetTryJobs(try_job_id)
218 self._MockGetTryJobSettings()
219 208
220 pipeline = MonitorTryJobPipeline() 209 pipeline = MonitorTryJobPipeline()
221 compile_result = pipeline.run( 210 compile_result = pipeline.run(
222 master_name, builder_name, build_number, TryJobType.COMPILE, 211 master_name, builder_name, build_number, TryJobType.COMPILE,
223 try_job_id) 212 try_job_id)
224 213
225 expected_compile_result = { 214 expected_compile_result = {
226 'report': { 215 'report': {
227 'result': { 216 'result': {
228 'rev1': 'passed', 217 'rev1': 'passed',
(...skipping 26 matching lines...) Expand all
255 try_job.test_results = [ 244 try_job.test_results = [
256 { 245 {
257 'report': None, 246 'report': None,
258 'url': 'url', 247 'url': 'url',
259 'try_job_id': '3', 248 'try_job_id': '3',
260 } 249 }
261 ] 250 ]
262 try_job.status = wf_analysis_status.ANALYZING 251 try_job.status = wf_analysis_status.ANALYZING
263 try_job.put() 252 try_job.put()
264 self._MockGetTryJobs(try_job_id) 253 self._MockGetTryJobs(try_job_id)
265 self._MockGetTryJobSettings()
266 254
267 pipeline = MonitorTryJobPipeline() 255 pipeline = MonitorTryJobPipeline()
268 test_result = pipeline.run( 256 test_result = pipeline.run(
269 master_name, builder_name, build_number, TryJobType.TEST, 257 master_name, builder_name, build_number, TryJobType.TEST,
270 try_job_id) 258 try_job_id)
271 259
272 expected_test_result = { 260 expected_test_result = {
273 'report': { 261 'report': {
274 'result': { 262 'result': {
275 'rev1': { 263 'rev1': {
(...skipping 27 matching lines...) Expand all
303 try_job_id = '3' 291 try_job_id = '3'
304 292
305 try_job = WfTryJob.Create(master_name, builder_name, build_number).put() 293 try_job = WfTryJob.Create(master_name, builder_name, build_number).put()
306 294
307 pipeline = MonitorTryJobPipeline() 295 pipeline = MonitorTryJobPipeline()
308 pipeline._UpdateTryJobResult( 296 pipeline._UpdateTryJobResult(
309 buildbucket_client.BuildbucketBuild.STARTED, master_name, builder_name, 297 buildbucket_client.BuildbucketBuild.STARTED, master_name, builder_name,
310 build_number, TryJobType.TEST, try_job_id, 'url') 298 build_number, TryJobType.TEST, try_job_id, 'url')
311 try_job = WfTryJob.Get(master_name, builder_name, build_number) 299 try_job = WfTryJob.Get(master_name, builder_name, build_number)
312 self.assertEqual(wf_analysis_status.ANALYZING, try_job.status) 300 self.assertEqual(wf_analysis_status.ANALYZING, try_job.status)
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698