
    2hh5                         S SK r S SKr S SKrS SKrS SKrS SKrS SKrS SKrS SKrS SK	J
r
   " S S5      r " S S5      r " S S\R                  5      r " S	 S
\5      r " S S\5      rg)    N)supportc                       \ rS rSrS rSS.S jrS rS rS r\	R                  S	\R                  S
SS.S jr\	R                  \R                  4S jrS rS r\R$                  S 5       rS rSrg	)FunctionalTestCaseMixin   c                 ,    [         R                  " 5       $ N)asyncionew_event_loopselfs    E/opt/python-3.13.8/usr/lib/python3.13/test/test_asyncio/functional.pynew_loop FunctionalTestCaseMixin.new_loop   s    %%''    g{Gz?)delayc                b    U R                   R                  [        R                  " U5      5        g r   )looprun_until_completer	   sleep)r   r   s     r   run_loop_briefly(FunctionalTestCaseMixin.run_loop_briefly   s    		$$W]]5%9:r   c                 p    U R                   R                  U5        U R                  R                  U5        g r   )._FunctionalTestCaseMixin__unhandled_exceptionsappendr   default_exception_handler)r   r   contexts      r   loop_exception_handler.FunctionalTestCaseMixin.loop_exception_handler   s(    ##**73		++G4r   c                     U R                  5       U l        [        R                  " S 5        U R                  R	                  U R
                  5        / U l        g r   )r   r   r	   set_event_loopset_exception_handlerr   r   r   s    r   setUpFunctionalTestCaseMixin.setUp   s=    MMO	t$		''(C(CD&(#r   c                 R    U R                   R                  5         U R                  (       a<  [        S5        [        R                  " U R                  5        U R                  S5        [        R                  " S 5        S U l         g ! [        R                  " S 5        S U l         f = f)Nz2Unexpected calls to loop.call_exception_handler():z1unexpected calls to loop.call_exception_handler())r   closer   printpprintfailr	   r    r   s    r   tearDown FunctionalTestCaseMixin.tearDown    sv    
	IIOO**JKd99:		MN ""4(DI ""4(DIs   A'B B&N   
   )familyaddrtimeoutbacklogmax_clientsc                z   UcV  [        [        S5      (       a?  U[        R                  :X  a+  [        R                  " 5        nUR
                  nS S S 5        OSn[        R                  " X2US9nUc  [        S5      eUS::  a  [        S5      eUR                  U5        [        XXU5      $ ! , (       d  f       N`= f)NAF_UNIX)z	127.0.0.1r   )r-   r0   timeout is requiredr   #only blocking sockets are supported)
hasattrsocketr3   tempfileNamedTemporaryFilenamecreate_serverRuntimeError
settimeoutTestThreadedServer)	r   server_progr-   r.   r/   r0   r1   tmpsocks	            r   
tcp_server"FunctionalTestCaseMixin.tcp_server-   s     <vy))f.F002c88D 32 (##DI?455a<DEE !k; 	; 32s   B,,
B:c                     [         R                   " U[         R                  5      nUc  [        S5      eUS::  a  [        S5      eUR                  U5        [	        XX5      $ )Nr4   r   r5   )r7   SOCK_STREAMr<   r=   TestThreadedClient)r   client_progr-   r/   rA   s        r   
tcp_client"FunctionalTestCaseMixin.tcp_clientE   s\     }}VV%7%78?455a<DEE !. 	.r   c                 |    [        [        S5      (       d  [        eU R                  " US[        R                  0UD6$ Nr3   r-   )r6   r7   NotImplementedErrorrB   r3   r   argskwargss      r   unix_server#FunctionalTestCaseMixin.unix_serverT   2    vy))%%FV^^FvFFr   c                 |    [        [        S5      (       d  [        eU R                  " US[        R                  0UD6$ rK   )r6   r7   rL   rH   r3   rM   s      r   unix_client#FunctionalTestCaseMixin.unix_clientY   rR   r   c              #   Z  #    [         R                  " 5        n[        R                  R	                  US5      n Uv    [        R
                  " U5        S S S 5        g ! [         a     Nf = f!  [        R
                  " U5        f ! [         a     f f = f= f! , (       d  f       g = f7f)NrA   )r8   TemporaryDirectoryospathjoinunlinkOSError)r   tdfns      r   unix_sock_name&FunctionalTestCaseMixin.unix_sock_name^   s     ((*bb&)BIIbM +*  IIbM  +*sn   B+!BA.A	B+
A+(B*A++B.B0BB
B	BB	BB
B($B+c                      U R                   R                  5         U R                  U5        g ! U R                  U5        f = fr   )r   stopr(   r   exs     r   _abort_socket_test*FunctionalTestCaseMixin._abort_socket_testj   s,    	IINNIIbMDIIbMs	   . A)__unhandled_exceptionsr   )__name__
__module____qualname____firstlineno__r   r   r   r"   r)   r7   AF_INETr   LOOPBACK_TIMEOUTrB   rH   rP   rT   
contextlibcontextmanagerr_   re   __static_attributes__ r   r   r   r      s    ( )- ;5) !.."33!;2 !.."33.G
G
 	 	r   r   c                   <    \ rS rSrS rS rSSS.S jrS rS	 rS
r	g)TestSocketWrapperv   c                     Xl         g r   )_TestSocketWrapper__sockr   rA   s     r   __init__TestSocketWrapper.__init__x   s    r   c                     Sn[        U5      U:  a>  U R                  U[        U5      -
  5      nUS:X  a  [        eX#-  n[        U5      U:  a  M>  U$ )Nr   )lenrecvConnectionAbortedError)r   nbufdatas       r   recv_allTestSocketWrapper.recv_all{   sP    #hl99QS\*Ds{,,KC	 #hl
 
r   FN)server_sideserver_hostnamec                
   UR                  U R                  UUSS9n UR                  5          U R                  R                  5         X@l        g !   UR                  5         e = f! U R                  R                  5         f = f)NF)r   r   do_handshake_on_connect)wrap_socketrv   do_handshaker%   )r   ssl_contextr   r   ssl_socks        r   	start_tlsTestSocketWrapper.start_tls   su     **KK[+$) + +
	 !!#
 KK	NNKKs   A A##A& &Bc                 .    [        U R                  U5      $ r   )getattrrv   )r   r:   s     r   __getattr__TestSocketWrapper.__getattr__   s    t{{D))r   c                 `    SR                  [        U 5      R                  U R                  5      $ )Nz	<{} {!r}>)formattyperh   rv   r   s    r   __repr__TestSocketWrapper.__repr__   s#    !!$t*"5"5t{{CCr   )__sock)
rh   ri   rj   rk   rx   r   r   r   r   rp   rq   r   r   rs   rs   v   s$     $"&&*Dr   rs   c                   &    \ rS rSrS rS rS rSrg)SocketThread   c                 2    SU l         U R                  5         g NF)_activerZ   r   s    r   rb   SocketThread.stop   s    		r   c                 &    U R                  5         U $ r   )startr   s    r   	__enter__SocketThread.__enter__   s    

r   c                 $    U R                  5         g r   )rb   )r   excs     r   __exit__SocketThread.__exit__   s    		r   )r   N)rh   ri   rj   rk   rb   r   r   rp   rq   r   r   r   r      s    r   r   c                        \ rS rSrS rS rSrg)rF      c                     [         R                  R                  U S S S5        SU l        X@l        X l        SU l        X0l        Xl        g )Nztest-clientT)		threadingThreadrx   daemon_timeout_sockr   _prog_test)r   testrA   progr/   s        r   rx   TestThreadedClient.__init__   s>    !!$dMB


r   c                      U R                  [        U R                  5      5        g ! [         a%  nU R                  R                  U5         S nAg S nAff = fr   )r   rs   r   	Exceptionr   re   rc   s     r   runTestThreadedClient.run   sB    	.JJ(45 	.JJ))"--	.s   $' 
AAA)r   r   r   r   r   r   N)rh   ri   rj   rk   rx   r   rp   rq   r   r   rF   rF      s    .r   rF   c                   P   ^  \ rS rSrS rU 4S jrS rS rS r\	S 5       r
SrU =r$ )	r>      c                 6   [         R                  R                  U S S S5        SU l        SU l        SU l        XPl        X@l        X l        SU l	        X0l
        [        R                  " 5       u  U l        U l        U R                  R                  S5        Xl        g )Nztest-serverTr   F)r   r   rx   r   _clients_finished_clients_max_clientsr   r   r   r   r7   
socketpair_s1_s2setblockingr   )r   r   rA   r   r/   r1   s         r   rx   TestThreadedServer.__init__   s|    !!$dMB!"'

#..0$(U#
r   c                    >  U R                   (       a:  U R                   R                  5       S:w  a   U R                   R                  S5        [        TU ]  5         g ! [         a     Nf = f! [        TU ]  5         f = f)Ns   stop)r   filenosendr\   superrb   )r   	__class__s    r   rb   TestThreadedServer.stop   sa    	xxDHHOO-3HHMM'* GLN   GLNs(   /A- A 
A*'A- )A**A- -A=c                     U R                      U R                   R                  S5        U R                  5         S S S 5        U R                  R	                  5         U R
                  R	                  5         g ! , (       d  f       NC= f! U R                  R	                  5         U R
                  R	                  5         f = fr   )r   r   _runr   r%   r   r   s    r   r   TestThreadedServer.run   ss    	

&&u-		  HHNNHHNN  HHNNHHNNs!   B ,A7B 7
BB 6B>c                    U R                   (       a  U R                  U R                  :  a  g [        R                  " U R                  U R
                  // / U R                  5      u  pnU R
                  U;   a  g U R                  U;   aj   U R                  R                  5       u  pEU =R                  S-  sl        UR                  U R                  5         U   U R                  U5        S S S 5        U R                   (       a  M  g g ! , (       d  f       N#= f! [         a.  nSU l          e ! U R                  R                  U5        f = fS nAff = f! [         a     GMb  [         a    U R                   (       d   g e f = f)Nr+   F)r   r   r   selectr   r   r   acceptr=   _handle_clientr   r   re   BlockingIOErrorTimeoutError)r   rwxconnr.   rd   s          r   r   TestThreadedServer._run   s%   ll}} 1 11mmTXX&B?GA! xx1}zzQ>!%!2!2!4JD MMQ&MOODMM2>! //5 "1 lll0 "T$ >',>! JJ99"=> ' # <<	s`   E D D	,D 	
DD D 
E$E,D--E

EE
F#F?Fc                 8    U R                  [        U5      5        g r   )r   rs   rw   s     r   r   !TestThreadedServer._handle_client  s    

$T*+r   c                 6    U R                   R                  5       $ r   )r   getsocknamer   s    r   r.   TestThreadedServer.addr  s    zz%%''r   )r   r   r   r   r   r   r   r   r   r   r   )rh   ri   rj   rk   rx   rb   r   r   r   propertyr.   rp   __classcell__)r   s   @r   r>   r>      s1    $ >D, ( (r   r>   )r	   asyncio.eventsrn   rX   r'   r   r7   r8   r   r   r   r   rs   r   r   rF   r>   rq   r   r   <module>r      si       	      a aR%D %DP9## . .&N( N(r   