def METHOD_NAME(self):
    # Note: only when the data stream doesn't have header, we need header stream to help
    file_path = os.path.join(AvroReaderTests._samples_dir_root, 'changeFeed.avro')
    # this data stream has header
    full_data_stream = BytesIO()
    with open(file_path, 'rb') as reader:
        full_data = reader.read()
        full_data_stream.write(full_data)
    # This initialization helps find the position after the first sync_marker
    DataFileReader(full_data_stream, DatumReader())
    position_after_sync_marker = full_data_stream.tell()
    # construct the partial data stream which doesn't have header
    partial_data_stream = _HeaderStream()
    with open(file_path, 'rb') as reader:
        reader.seek(position_after_sync_marker)
        partial_data_stream.write(reader.read())
    header_stream = _HeaderStream()
    with open(file_path, 'rb') as reader:
        header_data = reader.read()
        header_stream.write(header_data)
    df_reader = DataFileReader(partial_data_stream, DatumReader(), header_reader=header_stream)
    records = list(df_reader)
    self.assertEqual(CHANGE_FEED_RECORD, records[0])
    self.assertIsNot(partial_data_stream.object_position, 0)