Пример #1
0
 def test_try_job_results_url_format_fallback(self):
     git_cl = GitCL(MockHost())
     git_cl.fetch_raw_try_job_results = lambda **_: [
         {
             'builder_name': 'builder-a',
             'status': 'COMPLETED',
             'result': 'FAILURE',
             'tags': [
                 'build_address:luci.chromium.try/chromium_presubmit/100',
             ],
             'url': 'http://ci.chromium.org/p/master/builders/builder-b/builds/10',
         },
         {
             'builder_name': 'builder-b',
             'status': 'COMPLETED',
             'result': 'FAILURE',
             'url': 'http://ci.chromium.org/p/master/builders/builder-b/builds/20',
         },
         {
             'builder_name': 'builder-c',
             'status': 'COMPLETED',
             'result': 'FAILURE',
             'url': 'https://ci.chromium.org/swarming/task/36a767f405d9ee10',
         },
     ]
     self.assertEqual(
         git_cl.try_job_results(),
         {
             Build('builder-a', 100): TryJobStatus('COMPLETED', 'FAILURE'),
             Build('builder-b', 20): TryJobStatus('COMPLETED', 'FAILURE'),
             Build('builder-c', '36a767f405d9ee10'): TryJobStatus('COMPLETED', 'FAILURE'),
         })
Пример #2
0
 def test_try_job_results_with_task_id_in_url(self):
     git_cl = GitCL(MockHost())
     git_cl.fetch_raw_try_job_results = lambda **_: [
         {
             'builder_name':
             'builder-a',
             'status':
             'COMPLETED',
             'result':
             'FAILURE',
             'failure_reason':
             'BUILD_FAILURE',
             'url': ('https://ci.chromium.org/swarming/task/'
                     '36a767f405d9ee10'),
         },
         {
             'builder_name':
             'builder-b',
             'status':
             'COMPLETED',
             'result':
             'SUCCESS',
             'url': ('https://ci.chromium.org/swarming/task/'
                     '38740befcd9c0010?server=chromium-swarm.appspot.com'),
         },
     ]
     self.assertEqual(
         git_cl.try_job_results(), {
             Build('builder-a', '36a767f405d9ee10'):
             TryJobStatus('COMPLETED', 'FAILURE'),
             Build('builder-b', '38740befcd9c0010'):
             TryJobStatus('COMPLETED', 'SUCCESS'),
         })
Пример #3
0
 def test_try_job_results_with_other_builder(self):
     git_cl = GitCL(MockHost())
     git_cl._host.web = MockWeb(responses=[{
         'status_code':
         200,
         'body':
         SEARCHBUILDS_RESPONSE_PREFIX + b"""{
                 "builds": [
                     {
                         "status": "FAILURE",
                         "builder": {
                             "builder": "builder-a"
                         },
                         "number": 100,
                         "tags": [
                             {"key": "user_agent", "value": "cq"}
                         ]
                     }
                 ]
             }"""
     }])
     # We ignore builders that we explicitly don't care about;
     # so if we only care about other-builder, not builder-a,
     # then no exception is raised.
     self.assertEqual(
         git_cl.try_job_results(builder_names=['other-builder']), {})
Пример #4
0
 def test_try_job_results_with_unexpected_url_format(self):
     git_cl = GitCL(MockHost())
     git_cl.fetch_raw_try_job_results = lambda **_: [
         {
             'builder_name': 'builder-a',
             'status': 'COMPLETED',
             'result': 'FAILURE',
             'failure_reason': 'BUILD_FAILURE',
             'url': 'https://example.com/',
         },
     ]
     # We try to parse a build number or task ID from the URL.
     with self.assertRaisesRegexp(AssertionError, 'https://example.com/ did not match expected format'):
         git_cl.try_job_results()
     # We ignore builders that we explicitly don't care about;
     # so if we only care about other-builder, not builder-a,
     # then no exception is raised.
     self.assertEqual(git_cl.try_job_results(['other-builder']), {})
Пример #5
0
 def test_try_job_results_with_swarming_url_with_query(self):
     git_cl = GitCL(MockHost())
     git_cl.fetch_raw_try_job_results = lambda **_: [
         {
             'builder_name': 'builder-b',
             'status': 'COMPLETED',
             'result': 'SUCCESS',
             'url': ('https://ci.chromium.org/swarming/task/'
                     '38740befcd9c0010?server=chromium-swarm.appspot.com'),
         },
     ]
     self.assertEqual(
         git_cl.try_job_results(),
         {
             Build('builder-b', '38740befcd9c0010'): TryJobStatus('COMPLETED', 'SUCCESS'),
         })
Пример #6
0
 def test_try_job_results(self):
     git_cl = GitCL(MockHost())
     git_cl._host.web = MockWeb(responses=[{
         'status_code':
         200,
         'body':
         SEARCHBUILDS_RESPONSE_PREFIX + b"""{
                 "builds": [
                     {
                         "status": "SUCCESS",
                         "builder": {
                             "builder": "builder-a"
                         },
                         "number": 111,
                         "tags": [
                             {"key": "user_agent", "value": "cq"}
                         ]
                     },
                     {
                         "status": "SCHEDULED",
                         "builder": {
                             "builder": "builder-b"
                         },
                         "number": 222
                     },
                     {
                         "status": "INFRA_FAILURE",
                         "builder": {
                             "builder": "builder-c"
                         },
                         "number": 333
                     }
                 ]
             }"""
     }])
     self.assertEqual(
         git_cl.try_job_results(issue_number=None),
         {
             Build('builder-a', 111):
             TryJobStatus('COMPLETED', 'SUCCESS'),
             Build('builder-b', 222):
             TryJobStatus('SCHEDULED', None),
             # INFRA_FAILURE is mapped to FAILURE for this build.
             Build('builder-c', 333):
             TryJobStatus('COMPLETED', 'FAILURE'),
         })
Пример #7
0
 def test_try_job_results_skip_experimental_cq(self):
     git_cl = GitCL(MockHost())
     git_cl._host.web = MockWeb(responses=[{
         'status_code':
         200,
         'body':
         SEARCHBUILDS_RESPONSE_PREFIX + b"""{
                 "builds": [
                     {
                         "status": "SUCCESS",
                         "builder": {
                             "builder": "builder-a"
                         },
                         "number": 111,
                         "tags": [
                             {"key": "user_agent", "value": "cq"}
                         ]
                     },
                     {
                         "status": "SUCCESS",
                         "builder": {
                             "builder": "builder-b"
                         },
                         "number": 222,
                         "tags": [
                             {"key": "user_agent", "value": "cq"},
                             {"key": "cq_experimental", "value": "true"}
                         ]
                     }
                 ]
             }"""
     }])
     self.assertEqual(
         # Only one build appears - builder-b is ignored because it is
         # experimental.
         git_cl.try_job_results(issue_number=None, cq_only=True),
         {
             Build('builder-a', 111): TryJobStatus('COMPLETED', 'SUCCESS'),
         })