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

Method test_start_tls

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

Source from the content-addressed store, hash-verified

758
759 @unittest.skipIf(ssl is None, 'No ssl module')
760 def test_start_tls(self):
761
762 class MyServer:
763
764 def __init__(self, loop):
765 self.server = None
766 self.loop = loop
767
768 async def handle_client(self, client_reader, client_writer):
769 data1 = await client_reader.readline()
770 client_writer.write(data1)
771 await client_writer.drain()
772 assert client_writer.get_extra_info('sslcontext') is None
773 await client_writer.start_tls(
774 test_utils.simple_server_sslcontext())
775 assert client_writer.get_extra_info('sslcontext') is not None
776 data2 = await client_reader.readline()
777 client_writer.write(data2)
778 await client_writer.drain()
779 client_writer.close()
780 await client_writer.wait_closed()
781
782 def start(self):
783 sock = socket.create_server(('127.0.0.1', 0))
784 self.server = self.loop.run_until_complete(
785 asyncio.start_server(self.handle_client,
786 sock=sock))
787 return sock.getsockname()
788
789 def stop(self):
790 if self.server is not None:
791 self.server.close()
792 self.loop.run_until_complete(self.server.wait_closed())
793 self.server = None
794
795 async def client(addr):
796 reader, writer = await asyncio.open_connection(*addr)
797 writer.write(b"hello world 1!\n")
798 await writer.drain()
799 msgback1 = await reader.readline()
800 assert writer.get_extra_info('sslcontext') is None
801 await writer.start_tls(test_utils.simple_client_sslcontext())
802 assert writer.get_extra_info('sslcontext') is not None
803 writer.write(b"hello world 2!\n")
804 await writer.drain()
805 msgback2 = await reader.readline()
806 writer.close()
807 await writer.wait_closed()
808 return msgback1, msgback2
809
810 messages = []
811 self.loop.set_exception_handler(lambda loop, ctx: messages.append(ctx))
812
813 server = MyServer(self.loop)
814 addr = server.start()
815 msg1, msg2 = self.loop.run_until_complete(client(addr))
816 server.stop()
817

Callers

nothing calls this directly

Calls 7

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

Tested by

no test coverage detected