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'))
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'))
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))))
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'))
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))))