MCPcopy Index your code
hub / github.com/python/cpython / test_start_server

Method test_start_server

Lib/test/test_asyncio/test_streams.py:619–687  ·  view source on GitHub ↗
(self)

Source from the content-addressed store, hash-verified

617 self.assertIs(stream._waiter, None)
618
619 def test_start_server(self):
620
621 class MyServer:
622
623 def __init__(self, loop):
624 self.server = None
625 self.loop = loop
626
627 async def handle_client(self, client_reader, client_writer):
628 data = await client_reader.readline()
629 client_writer.write(data)
630 await client_writer.drain()
631 client_writer.close()
632 await client_writer.wait_closed()
633
634 def start(self):
635 sock = socket.create_server(('127.0.0.1', 0))
636 self.server = self.loop.run_until_complete(
637 asyncio.start_server(self.handle_client,
638 sock=sock))
639 return sock.getsockname()
640
641 def handle_client_callback(self, client_reader, client_writer):
642 self.loop.create_task(self.handle_client(client_reader,
643 client_writer))
644
645 def start_callback(self):
646 sock = socket.create_server(('127.0.0.1', 0))
647 addr = sock.getsockname()
648 sock.close()
649 self.server = self.loop.run_until_complete(
650 asyncio.start_server(self.handle_client_callback,
651 host=addr[0], port=addr[1]))
652 return addr
653
654 def stop(self):
655 if self.server is not None:
656 self.server.close()
657 self.loop.run_until_complete(self.server.wait_closed())
658 self.server = None
659
660 async def client(addr):
661 reader, writer = await asyncio.open_connection(*addr)
662 # send a line
663 writer.write(b"hello world!\n")
664 # read it back
665 msgback = await reader.readline()
666 writer.close()
667 await writer.wait_closed()
668 return msgback
669
670 messages = []
671 self.loop.set_exception_handler(lambda loop, ctx: messages.append(ctx))
672
673 # test the server variant with a coroutine as client handler
674 server = MyServer(self.loop)
675 addr = server.start()
676 msg = self.loop.run_until_complete(self.loop.create_task(client(addr)))

Callers

nothing calls this directly

Calls 9

startMethod · 0.95
stopMethod · 0.95
start_callbackMethod · 0.95
MyServerClass · 0.70
set_exception_handlerMethod · 0.45
appendMethod · 0.45
run_until_completeMethod · 0.45
create_taskMethod · 0.45
assertEqualMethod · 0.45

Tested by

no test coverage detected