Example #1
0
 def testUpdate_BuildFailed_Cancelled(self, get_build_status):
   get_build_status.return_value = {
       'build': {
           'status': 'COMPLETED',
           'result': 'CANCELLED',
           'result_details_json': '{}',
       }
   }
   self.assertDictEqual(
       {
           'build_7c7e90be': {
               'isolate_server': None,
               'isolate_hash': None,
               'buildbucket_result': {
                   'build': {
                       'id': '345982437987234'
                   }
               },
               'buildbucket_job_status': {
                   'status': 'COMPLETED',
                   'result': 'CANCELLED',
                   'result_details_json': '{}',
               },
               'status': 'cancelled',
           },
       },
       task_module.Evaluate(
           self.job,
           find_isolate.BuildEvent(
               type='update',
               target_task='build_7c7e90be',
               payload={'status': 'build_completed'}),
           find_isolate.Evaluator(self.job)))
   self.assertEqual(1, get_build_status.call_count)
Example #2
0
 def testUpdate_MissingIsolates_InvalidJson(self, get_build_status):
   json = '{ invalid }'
   get_build_status.return_value = {
       'build': {
           'status': 'COMPLETED',
           'result': 'SUCCESS',
           'result_details_json': json,
       }
   }
   self.assertDictEqual(
       {
           'build_7c7e90be': {
               'isolate_server': None,
               'isolate_hash': None,
               'buildbucket_result': {
                   'build': {
                       'id': '345982437987234'
                   }
               },
               'buildbucket_job_status': mock.ANY,
               'status': 'failed',
               'errors': mock.ANY,
           },
       },
       task_module.Evaluate(
           self.job,
           find_isolate.BuildEvent(
               type='update',
               target_task='build_7c7e90be',
               payload={'status': 'build_completed'}),
           find_isolate.Evaluator(self.job)))
   self.assertEqual(1, get_build_status.call_count)
Example #3
0
  def setUp(self):
    super(FindIsolateEvaluatorUpdateTests, self).setUp()

    # Here we set up the pre-requisite for polling, where we've already had a
    # successful build scheduled.
    with mock.patch('dashboard.services.buildbucket_service.Put') as put:
      put.return_value = {'build': {'id': '345982437987234'}}
      self.assertDictEqual(
          {
              'build_7c7e90be': {
                  'isolate_server': None,
                  'isolate_hash': None,
                  'buildbucket_result': {
                      'build': {
                          'id': '345982437987234'
                      }
                  },
                  'buildbucket_job_status': None,
                  'status': 'ongoing',
              },
          },
          task_module.Evaluate(
              self.job,
              find_isolate.BuildEvent(
                  type='initiate', target_task='build_7c7e90be', payload={}),
              find_isolate.Evaluator(self.job)))
      self.assertEqual(1, put.call_count)
Example #4
0
  def testInitiate_ScheduleBuild(self, put, _):
    # We then need to make sure that the buildbucket put was called.
    put.return_value = {'build': {'id': '345982437987234'}}

    # This time we don't seed the isolate for the change to force the build.
    self.assertDictEqual(
        {
            'build_7c7e90be': {
                'isolate_server': None,
                'isolate_hash': None,
                'buildbucket_result': {
                    'build': {
                        'id': '345982437987234'
                    },
                },
                'buildbucket_job_status': None,
                'status': 'ongoing',
            },
        },
        task_module.Evaluate(
            self.job,
            find_isolate.BuildEvent(
                type='initiate', target_task='build_7c7e90be', payload={}),
            find_isolate.Evaluator(self.job)))
    self.assertEqual(1, put.call_count)
Example #5
0
 def testUpdate_MissingIsolates_Revision(self, get_build_status):
   json = """
   {
     "properties": {
         "isolate_server": "https://isolate.server",
         "swarm_hashes_refs/heads/master(at)7c7e90be_without_patch":
             {"telemetry_perf_tests": "192923affe212adf"}
     }
   }"""
   get_build_status.return_value = {
       'build': {
           'status': 'COMPLETED',
           'result': 'SUCCESS',
           'result_details_json': json,
       }
   }
   self.assertDictEqual(
       {
           'build_7c7e90be': {
               'isolate_server': None,
               'isolate_hash': None,
               'buildbucket_result': {
                   'build': {
                       'id': '345982437987234'
                   }
               },
               'buildbucket_job_status': mock.ANY,
               'status': 'failed',
               'errors': mock.ANY,
           },
       },
       task_module.Evaluate(
           self.job,
           find_isolate.BuildEvent(
               type='update',
               target_task='build_7c7e90be',
               payload={'status': 'build_completed'}),
           find_isolate.Evaluator(self.job)))
   self.assertEqual(1, get_build_status.call_count)
Example #6
0
  def testInitiate_FoundIsolate(self, *_):
    # Seed the isolate for this change.
    change = change_module.Change(
        commits=[change_module.Commit('chromium', '7c7e90be')])
    isolate.Put((('Mac Builder', change, 'telemetry_perf_tests',
                  'https://isolate.server', '7c7e90be'),))

    # Then ensure that we can find the seeded isolate for the specified
    # revision.
    self.assertDictEqual(
        {
            'build_7c7e90be': {
                'isolate_server': 'https://isolate.server',
                'isolate_hash': '7c7e90be',
                'buildbucket_result': None,
                'buildbucket_job_status': None,
                'status': 'completed',
            },
        },
        task_module.Evaluate(
            self.job,
            find_isolate.BuildEvent(
                type='initiate', target_task='build_7c7e90be', payload={}),
            find_isolate.Evaluator(self.job)))
Example #7
0
  def testUpdate_BuildSuccessful(self, put, get_build_status):
    # First we're going to initiate so we have a build scheduled.
    put.return_value = {'build': {'id': '345982437987234'}}
    self.assertDictEqual(
        {
            'build_7c7e90be': {
                'isolate_server': None,
                'isolate_hash': None,
                'buildbucket_result': {
                    'build': {
                        'id': '345982437987234'
                    }
                },
                'buildbucket_job_status': None,
                'status': 'ongoing',
            },
        },
        task_module.Evaluate(
            self.job,
            find_isolate.BuildEvent(
                type='initiate', target_task='build_7c7e90be', payload={}),
            find_isolate.Evaluator(self.job)))
    self.assertEqual(1, put.call_count)

    # Now we send an update event which should cause us to poll the status of
    # the build on demand.
    json = """
    {
      "properties": {
          "got_revision_cp": "refs/heads/master@7c7e90be",
          "isolate_server": "https://isolate.server",
          "swarm_hashes_refs/heads/master(at)7c7e90be_without_patch":
              {"telemetry_perf_tests": "192923affe212adf"}
      }
    }"""
    get_build_status.return_value = {
        'build': {
            'status': 'COMPLETED',
            'result': 'SUCCESS',
            'result_details_json': json,
        }
    }
    self.assertDictEqual(
        {
            'build_7c7e90be': {
                'isolate_server': 'https://isolate.server',
                'isolate_hash': '192923affe212adf',
                'buildbucket_result': {
                    'build': {
                        'id': '345982437987234'
                    }
                },
                'buildbucket_job_status': mock.ANY,
                'status': 'completed',
            },
        },
        task_module.Evaluate(
            self.job,
            find_isolate.BuildEvent(
                type='update',
                target_task='build_7c7e90be',
                payload={'status': 'build_completed'}),
            find_isolate.Evaluator(self.job)))
    self.assertEqual(1, get_build_status.call_count)