Exemple #1
0
 def test_recover_missing_fullpath(self):
     """
     Test what happens when the BlobConverter encounters a chunk with
     neither a fullpath extended attribute, not any of the legacy
     attributes.
     """
     victim = random.choice(self.chunks)
     path = self._chunk_path(victim)
     remove_fullpath_xattr(path)
     self._test_converter_single_chunk(victim)
Exemple #2
0
 def test_recover_missing_fullpath_not_indexed(self):
     """
     Test what happens when the BlobConverter encounters a chunk with
     neither a fullpath extended attribute, not any of the legacy
     attributes, and the chunk does not appear in rdir.
     """
     victim = random.choice(self.chunks)
     path = self._chunk_path(victim)
     remove_fullpath_xattr(path)
     self._deindex_chunk(victim)
     conf = dict(self.conf)
     conf['volume'] = self.rawx_volumes[self._chunk_volume_id(victim)]
     converter = BlobConverter(conf)
     self.assertRaises(KeyError, converter.recover_chunk_fullpath, path)
Exemple #3
0
 def test_recover_missing_fullpath_orphan_chunk(self):
     """
     Test what happens when the BlobConverter encounters a chunk with
     neither a fullpath extended attribute, not any of the legacy
     attributes, and the chunk does not appear in object description.
     """
     victim = random.choice(self.chunks)
     path = self._chunk_path(victim)
     remove_fullpath_xattr(path)
     cbean = {
         'content': self.content_id,
         'hash': victim['hash'],
         'id': victim['url'],
         'size': victim['size'],
         'pos': victim['pos'],
         'type': 'chunk'
     }
     self.api.container.container_raw_delete(
         self.account, self.container, data=[cbean])
     conf = dict(self.conf)
     conf['volume'] = self.rawx_volumes[self._chunk_volume_id(victim)]
     converter = BlobConverter(conf)
     self.assertRaises(OrphanChunk, converter.recover_chunk_fullpath, path)