Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- def test_make_rebuild_fragment_iter(self):
- job = {
- 'partition': 0,
- 'policy': self.policy,
- }
- part_nodes = self.policy.object_ring.get_part_nodes(0)
- node = part_nodes[4]
- metadata = {
- 'name': '/a/c/o',
- 'Content-Length': 0,
- 'ETag': 'etag',
- }
- test_data = ('rebuild' * self.policy.ec_segment_size)[:-777]
- etag = md5(test_data).hexdigest()
- ec_archive_bodies = make_ec_archive_bodies(self.policy, test_data)
- broken_body = ec_archive_bodies.pop(4)
- base_responses = list((200, body) for body in ec_archive_bodies)
- # since we're already missing a fragment a +2 scheme can only support
- # one additional failure at a time
- for error in (Timeout(), 404, Exception('kaboom!')):
- responses = list(base_responses)
- error_index = random.randint(0, len(responses) - 1)
- responses[error_index] = (error, '')
- headers = {'X-Object-Sysmeta-Ec-Etag': etag}
- codes, body_iter = zip(*responses)
- with mocked_http_conn(*codes, body_iter=body_iter,
- headers=headers):
- df = self.reconstructor.reconstruct_fa(
- job, node, dict(metadata))
- fixed_body = ''.join(df.reader())
- # self.assertTrue(self.reconstructor.logger.get_lines_for_level(
- # 'error')[-1].startsWith("Error trying to rebuild"))
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement