예제 #1
0
파일: model.py 프로젝트: misscache/luci-py
def entry_key_from_id(key_id):
  """Returns the ndb.Key for the key_id."""
  hash_key = key_id.rsplit('/', 1)[1]
  N = config.settings().sharding_letters
  return ndb.Key(
      ContentEntry, key_id,
      parent=datastore_utils.shard_key(hash_key, N, 'ContentShard'))
예제 #2
0
def entry_key_from_id(key_id):
    """Returns the ndb.Key for the key_id."""
    hash_key = key_id.rsplit('/', 1)[1]
    N = config.settings().sharding_letters
    return ndb.Key(ContentEntry,
                   key_id,
                   parent=datastore_utils.shard_key(hash_key, N,
                                                    'ContentShard'))
예제 #3
0
  def test_ancestor_assumption(self):
    prefix = '1234'
    suffix = 40 - len(prefix)
    c = model.new_content_entry(model.get_entry_key('n', prefix + '0' * suffix))
    self.assertEqual(0, len(list(model.ContentEntry.query())))
    c.put()
    self.assertEqual(1, len(list(model.ContentEntry.query())))

    c = model.new_content_entry(model.get_entry_key('n', prefix + '1' * suffix))
    self.assertEqual(1, len(list(model.ContentEntry.query())))
    c.put()
    self.assertEqual(2, len(list(model.ContentEntry.query())))

    actual_prefix = c.key.parent().id()
    k = datastore_utils.shard_key(
        actual_prefix, len(actual_prefix), 'ContentShard')
    self.assertEqual(2, len(list(model.ContentEntry.query(ancestor=k))))
예제 #4
0
def entry_key_from_id(key_id):
    """Returns the ndb.Key for the key_id."""
    namespace, hash_key = key_id.rsplit('/', 1)
    # https://crbug.com/944896
    N = config.settings().sharding_letters
    assert N in (1, 4), N
    if namespace != 'default-gzip':
        # This is to work around https://crbug.com/943571, where prod instances have
        # sharding_letters: 1. Oops.
        #
        # This is a temporary hack until we migrate off default-gzip and
        # deprecate sharding_letters.
        N = 4
    return ndb.Key(ContentEntry,
                   key_id,
                   parent=datastore_utils.shard_key(hash_key, N,
                                                    'ContentShard'))
예제 #5
0
    def test_ancestor_assumption(self):
        prefix = '1234'
        suffix = 40 - len(prefix)
        c = model.new_content_entry(
            model.get_entry_key('n', prefix + '0' * suffix))
        self.assertEqual(0, len(list(model.ContentEntry.query())))
        c.put()
        self.assertEqual(1, len(list(model.ContentEntry.query())))

        c = model.new_content_entry(
            model.get_entry_key('n', prefix + '1' * suffix))
        self.assertEqual(1, len(list(model.ContentEntry.query())))
        c.put()
        self.assertEqual(2, len(list(model.ContentEntry.query())))

        actual_prefix = c.key.parent().id()
        k = datastore_utils.shard_key(actual_prefix, len(actual_prefix),
                                      'ContentShard')
        self.assertEqual(2, len(list(model.ContentEntry.query(ancestor=k))))