Ë
    êmxi  ã                   óÖ   — d dl Z d dlZd dlZd dlZd dlZd dlmZ d dlmZ d dl	m
Z
 d dlmZ d dlmZ d dlmZmZmZmZ d dlmZ  G d	„ d
e«      Ze G d„ dej.                  «      «       Zy)é    N)Úgen)ÚIOStream)Úapp_log)Ú	TCPServer)ÚskipIfNonUnix)ÚAsyncTestCaseÚ	ExpectLogÚbind_unused_portÚgen_test)ÚTuplec                   óB   — e Zd Zed„ «       Zed„ «       Zd„ Zed„ «       Zy)ÚTCPServerTestc              #   ó8  K  —  G d„ dt         «      }d x}}	 t        «       \  }} |«       }|j                  |«       t        t	        j                  «       «      }t        t        d«      5  |j                  d|f«      –— |j                  d«      –— |j                  «       –— t        j                  –— d d d «       |�|j                  «        |�|j                  «        y y # 1 sw Y   Œ/xY w# |�|j                  «        |�|j                  «        w w xY w­w)Nc                   ó0   — e Zd Zej                  d„ «       Zy)úFTCPServerTest.test_handle_stream_coroutine_logging.<locals>.TestServerc              3   ón   K  — |j                  t        d«      «      –— |j                  «        ddz   y ­w)Nó   helloé   r   )Ú
read_bytesÚlenÚclose©ÚselfÚstreamÚaddresss      úR/home/htdocs/ttos/venv/lib/python3.12/site-packages/tornado/test/tcpserver_test.pyÚhandle_streamzTTCPServerTest.test_handle_stream_coroutine_logging.<locals>.TestServer.handle_stream   s+   è ø€ à×'Ñ'¬¨H«Ó6Ò6Ø—‘”Ø�A“ùs   ‚35N©Ú__name__Ú
__module__Ú__qualname__r   Ú	coroutiner   © ó    r   Ú
TestServerr      s   „ Ø�]‰]ñó ñr$   r%   zException in callbackÚ	localhostr   )r   r
   Ú
add_socketr   Úsocketr	   r   ÚconnectÚwriteÚread_until_closer   ÚmomentÚstopr   )r   r%   ÚserverÚclientÚsockÚports         r   Ú$test_handle_stream_coroutine_loggingz2TCPServerTest.test_handle_stream_coroutine_logging   sú   è ø€ ô	œô 	ð Ðˆ�ð	Ü)Ó+‰JˆD�$Ù“\ˆFØ×Ñ˜dÔ#ÜœfŸm™m›oÓ.ˆFÜœ7Ð$;Ó<ñ !Ø—n‘n k°4Ð%8Ó9Ò9Ø—l‘l 8Ó,Ò,Ø×-Ñ-Ó/Ò/Ü—j‘jÒ ÷	!ð Ð!Ø—‘”ØÐ!Ø—‘•ð "÷!ð !ûð Ð!Ø—‘”ØÐ!Ø—‘•ð "üs6   ‚D—AC0 Á)AC$Â6C0 Â>&DÃ$C-Ã)C0 Ã0'DÄDc              #   ó`  K  —  G d„ dt         «      }t        «       \  }} |«       }|j                  |«       t        t	        j                  «       «      }|j                  d|f«      –— |j                  «       –—}| j                  |d«       |j                  «        |j                  «        y ­w)Nc                   ó   — e Zd Zd„ Zy)úETCPServerTest.test_handle_stream_native_coroutine.<locals>.TestServerc              “   óN   K  — |j                  d«       |j                  «        y ­w)Nó   data)r*   r   r   s      r   r   zSTCPServerTest.test_handle_stream_native_coroutine.<locals>.TestServer.handle_stream3   s   è ø€ Ø—‘˜WÔ%Ø—‘•ùs   ‚#%N)r   r    r!   r   r#   r$   r   r%   r5   2   s   „ ór$   r%   r&   r7   )
r   r
   r'   r   r(   r)   r+   ÚassertEqualr-   r   )r   r%   r0   r1   r.   r/   Úresults          r   Ú#test_handle_stream_native_coroutinez1TCPServerTest.test_handle_stream_native_coroutine.   sŒ   è ø€ ô	œô 	ô
 &Ó'‰
ˆˆdÙ“ˆØ×Ñ˜$ÔÜœ&Ÿ-™-›/Ó*ˆØ�n‰n˜k¨4Ð0Ó1Ò1Ø×.Ñ.Ó0Ñ0ˆØ×Ñ˜ Ô)Ø�‰ŒØ�‰�ùs   ‚B,B.c                 ó”   — t        «       \  }}t        «       }|j                  |«       |j                  «        |j                  «        y ©N)r
   r   r'   r-   )r   r0   r1   r.   s       r   Útest_stop_twicezTCPServerTest.test_stop_twiceA   s5   € Ü%Ó'‰
ˆˆdÜ“ˆØ×Ñ˜$ÔØ�‰ŒØ�‰�r$   c              #   óH  ‡	‡
‡K  —  G ˆ
fd„dt         «      }t        «       \  }} |«       Š
‰
j                  |«       d|fŠd}t        |«      D �cg c]  }t	        t        j
                  «       «      ‘Œ! }}g Š	t        j                  ˆ	ˆfd„«       }|D �cg c]
  } ||«      ‘Œ c}–— | j                  t        ‰	«      dd«       	 t        ‰	«      |k(  r| j                  d«       ‰	D ]  }|j                  «        Œ y c c}w c c}w # ‰	D ]  }|j                  «        Œ w xY w­w)	Nc                   ó6   •— e Zd Zej                  ˆ fd„«       Zy)ú7TCPServerTest.test_stop_in_callback.<locals>.TestServerc              3   óR   •K  — ‰j                  «        |j                  «       –— y ­wr<   )r-   r+   )r   r   r   r.   s      €r   r   zETCPServerTest.test_stop_in_callback.<locals>.TestServer.handle_streamO   s   øè ø€ à—‘”Ø×-Ñ-Ó/Ó/ùs   ƒ$'Nr   )r.   s   €r   r%   r@   N   s   ø„ Ø�]‰]ó0ó ñ0r$   r%   r&   é(   c              3   óv   •K  — 	 | j                  ‰«      –— ‰j                  | «       y # t        $ r Y y w xY w­wr<   )r)   ÚappendÚOSError)ÚcÚconnected_clientsÚserver_addrs    €€r   r)   z4TCPServerTest.test_stop_in_callback.<locals>.connect\   s>   øè ø€ ð,Ø—i‘i Ó,Ò,ð "×(Ñ(¨Õ+øô ò Ùðüs   ƒ9…* ˜9ª	6³9µ6¶9r   zall clients failed connectingzHat least one client should fail connecting for the test to be meaningful)r   r
   r'   Úranger   r(   r   r"   ÚassertGreaterr   ÚskipTestr   )r   r%   r0   r1   ÚNÚiÚclientsr)   rF   rG   r.   rH   s            @@@r   Útest_stop_in_callbackz#TCPServerTest.test_stop_in_callbackH   s  úè ø€ ö	0œô 	0ô &Ó'‰
ˆˆdÙ“ˆØ×Ñ˜$ÔØ" DÐ)ˆØˆÜ6;¸A³hÖ?°”8œFŸM™M›OÕ,Ð?ˆÐ?ØÐä	�‰ô	,ó 
ð	,ð $+Ö+˜a‰w�q�zÒ+Ò+à×Ñœ3Ð0Ó1°1Ð6UÔVð
	ÜÐ$Ó%¨Ò*ð —‘ð4ôð
 'ò �Ø—‘•	ñùò1 @ùò ,øð 'ò �Ø—‘•	ñüs6   …A
D"Á$C<Á3!D"ÂDÂ#!D"ÃD Ã$"D"ÄDÄD"N)r   r    r!   r   r2   r:   r=   rO   r#   r$   r   r   r      sA   „ Øñó ðð6 ñó ðò$ð ñ)ó ñ)r$   r   c                   ó>   — e Zd Zdedeeef   fd„Zd„ Zd„ Zd„ Zd„ Z	y)	ÚTestMultiprocessÚcodeÚreturnc           	      ó$  — 	 t        j                  t        j                  dgd|dd¬«      }|j                  |j                  fS # t         j                  $ r8}t        d|j                  › d|j                  › d|j                  › �«      |‚d }~ww xY w)Nz-Werror::DeprecationWarningTÚutf8)Úcapture_outputÚinputÚencodingÚcheckzProcess returned z stdout=z stderr=)	Ú
subprocessÚrunÚsysÚ
executableÚCalledProcessErrorÚRuntimeErrorÚ
returncodeÚstdoutÚstderr)r   rR   r9   Úes       r   Úrun_subproczTestMultiprocess.run_subproc~   s�   € ð	Ü—^‘^Ü—‘Ð!>Ð?Ø#ØØØôˆFð �}‰}˜fŸm™mÐ+Ð+øô	 ×,Ñ,ò 	ÜØ# A§L¡L >°¸!¿(¹(¸À8ÈAÏHÉHÈ:ÐVóàðûð	ús   ‚*A ÁBÁ3B
Â
Bc                 óÎ   — t        j                  d«      }| j                  |«      \  }}| j                  dj	                  t        |«      «      d«       | j                  |d«       y )Na  
            import asyncio
            from tornado.tcpserver import TCPServer

            async def main():
                server = TCPServer()
                server.listen(0, address='127.0.0.1')

            asyncio.run(main())
            print('012', end='')
        Ú Ú012©ÚtextwrapÚdedentrd   r8   ÚjoinÚsorted©r   rR   ÚoutÚerrs       r   Útest_listen_singlez#TestMultiprocess.test_listen_single�   sZ   € ô �‰ð
ó
ˆð ×#Ñ# DÓ)‰ˆˆSØ×Ñ˜Ÿ™¤¨£Ó-¨uÔ5Ø×Ñ˜˜bÕ!r$   c                 óÎ   — t        j                  d«      }| j                  |«      \  }}| j                  dj	                  t        |«      «      d«       | j                  |d«       y )NaÀ  
            import warnings

            from tornado.ioloop import IOLoop
            from tornado.process import task_id
            from tornado.tcpserver import TCPServer

            warnings.simplefilter("ignore", DeprecationWarning)

            server = TCPServer()
            server.bind(0, address='127.0.0.1')
            server.start(3)
            IOLoop.current().run_sync(lambda: None)
            print(task_id(), end='')
        rf   rg   rh   rm   s       r   Útest_bind_startz TestMultiprocess.test_bind_start¡   óX   € Ü�‰ðó
ˆð" ×#Ñ# DÓ)‰ˆˆSØ×Ñ˜Ÿ™¤¨£Ó-¨uÔ5Ø×Ñ˜˜bÕ!r$   c                 óÎ   — t        j                  d«      }| j                  |«      \  }}| j                  dj	                  t        |«      «      d«       | j                  |d«       y )Na  
            import asyncio
            from tornado.netutil import bind_sockets
            from tornado.process import fork_processes, task_id
            from tornado.ioloop import IOLoop
            from tornado.tcpserver import TCPServer

            sockets = bind_sockets(0, address='127.0.0.1')
            fork_processes(3)
            async def post_fork_main():
                server = TCPServer()
                server.add_sockets(sockets)
            asyncio.run(post_fork_main())
            print(task_id(), end='')
        rf   rg   rh   rm   s       r   Útest_add_socketsz!TestMultiprocess.test_add_sockets·   rs   r$   c                 óÎ   — t        j                  d«      }| j                  |«      \  }}| j                  dj	                  t        |«      «      d«       | j                  |d«       y )NaÍ  
            import asyncio
            import socket
            from tornado.netutil import bind_sockets
            from tornado.process import task_id, fork_processes
            from tornado.tcpserver import TCPServer

            # Pick an unused port which we will be able to bind to multiple times.
            (sock,) = bind_sockets(0, address='127.0.0.1',
                family=socket.AF_INET, reuse_port=True)
            port = sock.getsockname()[1]

            fork_processes(3)

            async def main():
                server = TCPServer()
                server.listen(port, address='127.0.0.1', reuse_port=True)
            asyncio.run(main())
            print(task_id(), end='')
            rf   rg   rh   rm   s       r   Útest_listen_multi_reuse_portz-TestMultiprocess.test_listen_multi_reuse_portÍ   sX   € Ü�‰ðó
ˆð, ×#Ñ# DÓ)‰ˆˆSØ×Ñ˜Ÿ™¤¨£Ó-¨uÔ5Ø×Ñ˜˜bÕ!r$   N)
r   r    r!   Ústrr   rd   rp   rr   ru   rw   r#   r$   r   rQ   rQ   w   s1   „ ð, ð ,¨¨c°3¨h©ó ,ò"ò("ò,"ó,"r$   rQ   )r(   rZ   r\   ri   ÚunittestÚtornador   Útornado.iostreamr   Útornado.logr   Útornado.tcpserverr   Útornado.test.utilr   Útornado.testingr   r	   r
   r   Útypingr   r   ÚTestCaserQ   r#   r$   r   ú<module>r‚      s_   ðÛ Û Û 
Û Û å Ý %Ý Ý 'Ý +ß PÓ På ôa�Mô aðL ôn"�x×(Ñ(ó n"ó ñn"r$   