Пример #1
0
  def test_parse_info_property_fail(self):
    value = 'invalid json'
    self.assertRaises(ValueError, lambda: common.parse_info_property(value))

    value = {'build': "invalid json"}
    self.assertRaises(ValueError, lambda: common.parse_info_property(value))

    value = '42'  # not a dict
    self.assertRaises(ValueError, lambda: common.parse_info_property(value))
Пример #2
0
  def test_parse_info_property_succeed(self):
    value, expected = {'build': {'foo': 'bar'}}, {'build': {'foo': 'bar'}}
    self.assertDictEqual(common.parse_info_property(value), expected)

    value, expected = {'build': '{"foo": "bar"}'}, {'build': {'foo': 'bar'}}
    self.assertDictEqual(common.parse_info_property(value), expected)

    value, expected = '{"build": {"foo": "bar"}}', {'build': {'foo': 'bar'}}
    self.assertDictEqual(common.parse_info_property(value), expected)
    def test_parse_info_property_fail(self):
        value = 'invalid json'
        self.assertRaises(ValueError,
                          lambda: common.parse_info_property(value))

        value = {'build': "invalid json"}
        self.assertRaises(ValueError,
                          lambda: common.parse_info_property(value))

        value = '42'  # not a dict
        self.assertRaises(ValueError,
                          lambda: common.parse_info_property(value))
Пример #4
0
 def _get_build_def(build):
   """Returns buildbucket build def a buildbot build."""
   info = build.properties.getProperty(common.INFO_PROPERTY)
   if info is None:
     return None
   try:
     info = common.parse_info_property(info)
   except ValueError:
     return None
   return info.get(common.BUILD_PROPERTY)
    def test_parse_info_property_succeed(self):
        value, expected = {'build': {'foo': 'bar'}}, {'build': {'foo': 'bar'}}
        self.assertDictEqual(common.parse_info_property(value), expected)

        value, expected = {
            'build': '{"foo": "bar"}'
        }, {
            'build': {
                'foo': 'bar'
            }
        }
        self.assertDictEqual(common.parse_info_property(value), expected)

        value, expected = '{"build": {"foo": "bar"}}', {
            'build': {
                'foo': 'bar'
            }
        }
        self.assertDictEqual(common.parse_info_property(value), expected)
Пример #6
0
  def _get_leases_from_db(self):
    """Returns currently held leases from the database.

    Queries for not-completed-yet build requests. This may take a long time.

    Returns:
      A dict of the same structure, as self._leases. See its description.
    """
    assert self.started
    self.log(
        ('Requesting for all not yet completed build requests. '
          'This may take a long time...'),
        level=logging.DEBUG)
    build_requests = yield self.buildbot.get_incomplete_build_requests()
    self.log(
        'Received %d build requests' % len(build_requests),
        level=logging.DEBUG)

    leases = {}
    for build_request in build_requests:
      info = yield build_request.get_property(common.INFO_PROPERTY)
      if not info:
        # Not a buildbucket build request.
        continue
      try:
        info = common.parse_info_property(info)
      except ValueError as e:
        self.log('invalid buildbucket property: %s' % e, level=logging.ERROR)
        continue
      build = info.get('build', {})
      build_id = build.get('id')
      lease_key = build.get('lease_key')
      if not (build_id and lease_key):
        self.log(
            'build_id or lease_key are not found in %r' % build_request,
            level=logging.WARNING)
        continue
      if build_id in leases:
        self.log(
          'more than one non-completed build request for build %s' % build_id,
          level=logging.WARNING)
        continue
      leases[build_id] = {
          'key': lease_key,
          'build_request': build_request,
      }
    returnValue(leases)