async def test_parallel_writer_ordering(aio_file_maker, temp_file, uuid): w_file = await aio_file_maker(temp_file, "wb") r_file = await aio_file_maker(temp_file, "rb") count = 1000 chunk_size = 1024 data = os.urandom(chunk_size * count) futures = list() for idx, chunk in enumerate(split_by(data, chunk_size)): futures.append(w_file.write(chunk, idx * chunk_size)) shuffle(futures) await asyncio.gather(*futures) await w_file.fsync() result = b"" async for chunk in Reader(r_file, chunk_size=chunk_size): result += chunk assert data == result
async def test_unicode_reader(aio_file_maker, temp_file): async with aio_file_maker(temp_file, 'w+') as afp: await afp.write('한글') async with aio_file_maker(temp_file, 'r') as afp: reader = Reader(afp, chunk_size=1) assert await reader.read_chunk() == '한' assert await reader.read_chunk() == '글'
async def test_reader_writer2(aio_file_maker, temp_file, uuid): r_file = await aio_file_maker(temp_file, "r") w_file = await aio_file_maker(temp_file, "w") writer = Writer(w_file) for _ in range(100): await writer(uuid) await w_file.fsync() async for chunk in Reader(r_file, chunk_size=len(uuid)): assert chunk == uuid
async def test_parallel_writer(aio_file_maker, temp_file, uuid): w_file = await aio_file_maker(temp_file, "w") r_file = await aio_file_maker(temp_file, "r") futures = list() for i in range(1000): futures.append(w_file.write(uuid, i * len(uuid))) shuffle(futures) await asyncio.gather(*futures) await w_file.fsync() count = 0 async for chunk in Reader(r_file, chunk_size=len(uuid)): assert chunk == uuid count += 1 assert count == 1000
async def test_reader_writer(aio_file_maker, temp_file, uuid): r_file = await aio_file_maker(temp_file, "rb") w_file = await aio_file_maker(temp_file, "wb") chunk_size = 16 count = 10 payload = os.urandom(chunk_size * count) writer = Writer(w_file) await writer(payload) await w_file.fsync() buff = BytesIO(payload) async for chunk in Reader(r_file, chunk_size=chunk_size): if not chunk: break assert chunk == buff.read(chunk_size) assert not buff.read()