
    g(                         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      P/var/www/openai/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     	 	 	)+JD$\Fd#fmmo.F7$;<nnk4%899ll8,,--//jj 	 = !! " =< !! "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$&--/*nnk4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EnvironmentError)cconnected_clientsserver_addrs    r   r)   z4TCPServerTest.test_stop_in_callback.<locals>.connect\   s>     ,ii,, "((+ $ 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;Ah?h8FMMO,h?		, 
	, $++7awqz7++30116U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 }}fmm++	 ,, 	#ALL>!((8AHH: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    , ,c3h ,"(",","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$   