705
707
if block is None:
706
708
block = record._manager._block
707
709
manager = record._manager
710
raw_block_z_bytes = block._z_content
711
block._ensure_content(block._content_length)
712
raw_block_bytes = block._content
709
714
self.assertIs(block, record._manager._block)
710
715
self.assertIs(manager, record._manager)
711
716
# 'unordered' fetching will put that in the same order it was inserted
712
717
self.assertEqual([(r,) for r in 'abcdefghijkl'], record_order)
718
# If we fetch enough of the block, but not everything, then it
719
# should simply decompress, truncate, and recompress
720
vf2 = self.make_test_vf(True, dir='target')
722
for record in vf.get_record_stream([(r,) for r in 'acf'],
724
record._manager._full_enough_block_size = 50
725
record._manager._max_cut_fraction = 0.3
727
vf2.insert_record_stream(small_stream())
730
record = vf2.get_record_stream([('a',)], 'unordered', False).next()
731
new_block = record._manager._block
732
self.assertIsNot(None, new_block._z_content)
733
self.assertNotEqual(raw_block_z_bytes, new_block._z_content)
734
new_block._ensure_content(new_block._content_length)
735
# The new content is simply the truncation of the old content
736
self.assertStartsWith(raw_block_bytes, new_block._content)
737
self.assertTrue(len(new_block._content) < len(raw_block_bytes))
714
739
def test_add_missing_noncompression_parent_unvalidated_index(self):
715
740
unvalidated = self.make_g_index_missing_parent()