| OLD | NEW | 
|---|
| 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  Loading... | 
| 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) | 
| OLD | NEW | 
|---|