parent
b665ec4c21
commit
fa8e08c242
|
@ -1,7 +1,7 @@
|
||||||
__title__ = 'i2plib'
|
__title__ = 'i2plib'
|
||||||
__description__ = 'A modern asynchronous library for building I2P applications.'
|
__description__ = 'A modern asynchronous library for building I2P applications.'
|
||||||
__url__ = 'https://github.com/l-n-s/i2plib'
|
__url__ = 'https://github.com/l-n-s/i2plib'
|
||||||
__version__ = '0.0.10'
|
__version__ = '0.0.11'
|
||||||
__author__ = 'Viktor Villainov'
|
__author__ = 'Viktor Villainov'
|
||||||
__author_email__ = 'supervillain@riseup.net'
|
__author_email__ = 'supervillain@riseup.net'
|
||||||
__license__ = 'MIT'
|
__license__ = 'MIT'
|
||||||
|
|
|
@ -39,12 +39,7 @@ async def fake_sam_server_handler(reader, writer):
|
||||||
|
|
||||||
writer.close()
|
writer.close()
|
||||||
|
|
||||||
|
async def coroutines_test(sam_address, loop):
|
||||||
async def ping_pong(sam_address, loop):
|
|
||||||
asyncio.ensure_future(asyncio.start_server(
|
|
||||||
fake_sam_server_handler, *sam_address, loop=loop), loop=loop)
|
|
||||||
await asyncio.sleep(0.1)
|
|
||||||
|
|
||||||
_, server_session_writer = await i2plib.create_session("ppserver",
|
_, server_session_writer = await i2plib.create_session("ppserver",
|
||||||
sam_address=sam_address, loop=loop, destination=PK_B64)
|
sam_address=sam_address, loop=loop, destination=PK_B64)
|
||||||
server_reader, server_writer = await i2plib.stream_accept("ppserver",
|
server_reader, server_writer = await i2plib.stream_accept("ppserver",
|
||||||
|
@ -71,13 +66,49 @@ async def ping_pong(sam_address, loop):
|
||||||
server_session_writer.close()
|
server_session_writer.close()
|
||||||
client_session_writer.close()
|
client_session_writer.close()
|
||||||
|
|
||||||
await asyncio.sleep(0.0001) # wait until all tasks are completed
|
async def context_managers_test(sam_address, loop):
|
||||||
|
async def server(sam_address, loop, ready):
|
||||||
|
async with i2plib.Session("ppserver", sam_address=sam_address, loop=loop, destination=PK_B64):
|
||||||
|
ready.release()
|
||||||
|
async with i2plib.StreamAcceptor("ppserver", sam_address=sam_address, loop=loop) as s:
|
||||||
|
incoming = await s.read(BUFFER_SIZE)
|
||||||
|
dest, request = incoming.split(b"\n", 1)
|
||||||
|
remote_destination = i2plib.Destination(dest.decode())
|
||||||
|
if not request:
|
||||||
|
request = await s.read(BUFFER_SIZE)
|
||||||
|
assert request == b"PING"
|
||||||
|
s.write(b"PONG")
|
||||||
|
|
||||||
|
ready = asyncio.Lock(loop=loop)
|
||||||
|
await ready.acquire()
|
||||||
|
server_task = asyncio.ensure_future(server(sam_address, loop, ready), loop=loop)
|
||||||
|
await ready.acquire()
|
||||||
|
|
||||||
|
async with i2plib.Session("ppclient", sam_address=sam_address, loop=loop):
|
||||||
|
async with i2plib.StreamConnection("ppclient", DEST_B32, sam_address=sam_address, loop=loop) as c:
|
||||||
|
c.write(b"PING")
|
||||||
|
response = await c.read(BUFFER_SIZE)
|
||||||
|
assert response == b"PONG"
|
||||||
|
|
||||||
|
await server_task
|
||||||
|
|
||||||
|
async def main(sam_address, loop):
|
||||||
|
sam_server = await asyncio.start_server(
|
||||||
|
fake_sam_server_handler, *sam_address, loop=loop)
|
||||||
|
|
||||||
|
await coroutines_test(sam_address, loop)
|
||||||
|
await context_managers_test(sam_address, loop)
|
||||||
|
|
||||||
|
sam_server.close()
|
||||||
|
await sam_server.wait_closed()
|
||||||
|
|
||||||
|
for t in asyncio.Task.all_tasks(loop=loop):
|
||||||
|
if t != asyncio.Task.current_task(loop=loop):
|
||||||
|
await t
|
||||||
|
|
||||||
if __name__ == "__main__":
|
if __name__ == "__main__":
|
||||||
loop = asyncio.get_event_loop()
|
|
||||||
sam_address = ("127.0.0.1", 19132)
|
sam_address = ("127.0.0.1", 19132)
|
||||||
|
loop = asyncio.get_event_loop()
|
||||||
loop.run_until_complete(ping_pong(sam_address, loop))
|
loop.run_until_complete(main(sam_address, loop))
|
||||||
loop.stop()
|
loop.stop()
|
||||||
loop.close()
|
loop.close()
|
||||||
|
|
Loading…
Reference in New Issue