Ejemplo n.º 1
0
 def get_object_at(self, offset):
     if offset in self._offset_cache:
         return self._offset_cache[offset]
     assert offset >= self._header_size
     pack_reader = SwiftPackReader(self.scon, self._filename,
                                   self.pack_length)
     pack_reader.seek(offset)
     unpacked, _ = unpack_object(pack_reader.read)
     return (unpacked.pack_type_num, unpacked._obj())
Ejemplo n.º 2
0
 def get_object_at(self, offset):
     if offset in self._offset_cache:
         return self._offset_cache[offset]
     assert offset >= self._header_size
     pack_reader = SwiftPackReader(self.scon, self._filename,
                                   self.pack_length)
     pack_reader.seek(offset)
     unpacked, _ = unpack_object(pack_reader.read)
     return (unpacked.pack_type_num, unpacked._obj())
Ejemplo n.º 3
0
    def test_write_pack_object(self):
        f = BytesIO()
        f.write('header')
        offset = f.tell()
        crc32 = write_pack_object(f, Blob.type_num, 'blob')
        self.assertEqual(crc32, zlib.crc32(f.getvalue()[6:]) & 0xffffffff)

        f.write('x')  # unpack_object needs extra trailing data.
        f.seek(offset)
        unpacked, unused = unpack_object(f.read, compute_crc32=True)
        self.assertEqual(Blob.type_num, unpacked.pack_type_num)
        self.assertEqual(Blob.type_num, unpacked.obj_type_num)
        self.assertEqual(['blob'], unpacked.decomp_chunks)
        self.assertEqual(crc32, unpacked.crc32)
        self.assertEqual('x', unused)