
    7\h                       d Z ddlZddlZddlZddlZddlZddlZddl	Z	ddl
Z
ddlZ	 ddlZn# e$ r dZY nw xY wddlZddlZ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Zej        dvr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" ddl#m$Z$ ddl%m&Z& ddl%m'Z' ddl%m(Z(m)Z)m*Z* d Z+d Z,d Z- G d d          Z. G d dej/                  Z0 G d de0          Z1 G d dej2                  Z3 G d dej/                  Z4 G d dej5                  Z6 G d dej7                  Z8 G d  d!          Z9 G d" d#          Z:ej        d$k    r* G d% d&e9e"j;                  Z< G d' d(e9e:e"j;                  Z=nddl>Z> G d) d*e9          Z? e@e>d+          r G d, d-e?e:e"j;                  ZA e@e>d.          r G d/ d0e?e:e"j;                  ZB e@e>d1          r G d2 d3e?e:e"j;                  ZC G d4 d&e?e:e"j;                  Z<d5 ZD G d6 d7e"j;                  ZE G d8 d9ej;                  ZF G d: d;ej;                  ZG G d< d=ej;                  ZH G d> d?          ZI G d@ dAeIej;                  ZJ	 ddlKZK G dB dCeIej;                  ZLn# e$ r Y nw xY w G dD dEej;                  ZM G dF dGej;                  ZNeOdHk    r ejP                     dS dS )IzTests for events.py.    N)mock)win32vxworks)
coroutines)events)proactor_events)selector_events)_cleanup_tests)utils)support)socket_helper)threading_helper)	ALWAYS_EQLARGESTSMALLESTc                  .    t          j        d            d S N)asyncioset_event_loop_policy     G/opt/python-3.11.14/usr/lib/python3.11/test/test_asyncio/test_events.pytearDownModuler   *   s    !$'''''r   c                     t           j                            d          rdS t           j        dk    rdS t          j                    d         } t	          t          t          |                     d                              } | dk     S )z4Return True if the platform is Mac OS 10.4 or older.aixTdarwinFr   .)
      )sysplatform
startswithmac_vertuplemapintsplit)versions    r   broken_unix_getsocknamer)   .   sr    
|u%% t		!	!u  #GCW]]3//0011GWr   c                      d } t          j                    }t          j        |           |                     |                       S )Nc                  
   K   dS Nhellor   r   r   r   doitz8_test_get_event_loop_new_process__sub_proc.<locals>.doit:   s      wr   )r   new_event_loopset_event_looprun_until_complete)r.   loops     r   *_test_get_event_loop_new_process__sub_procr3   9   sL       !##D4   ""4466***r   c                   &    e Zd Zd Zd Zd Zd ZdS )CoroLikec                     d S r   r   )selfvs     r   sendzCoroLike.sendC       r   c                     d S r   r   r7   excs     r   throwzCoroLike.throwF   r:   r   c                     d S r   r   r7   s    r   closezCoroLike.closeI   r:   r   c                     d S r   r   r@   s    r   	__await__zCoroLike.__await__L   r:   r   N)__name__
__module____qualname__r9   r>   rA   rC   r   r   r   r5   r5   B   sP                  r   r5   c                   <    e Zd ZdZdZddZd Zd Zd Zd Z	d Z
dS )	MyBaseProtoNc                     d | _         d| _        d| _        |4|                                | _        |                                | _        d S d S NINITIALr   )	transportstatenbytescreate_future	connecteddoner7   r2   s     r   __init__zMyBaseProto.__init__T   sO    
!//11DN**,,DIII r   c                 L    | j         |vrt          d| j         d|          d S Nzstate: z, expected: rM   AssertionErrorr7   expecteds     r   _assert_statezMyBaseProto._assert_state\   s8    :X%% !Q4:!Q!QX!Q!QRRR &%r   c                     || _         |                     d           d| _        | j        r| j                            d            d S d S NrK   	CONNECTEDrL   rZ   rM   rP   
set_resultr7   rL   s     r   connection_madezMyBaseProto.connection_made`   sT    "9%%% 
> 	,N%%d+++++	, 	,r   c                 j    |                      d           | xj        t          |          z  c_        d S Nr]   rZ   rN   lenr7   datas     r   data_receivedzMyBaseProto.data_receivedg   s0    ;'''s4yy r   c                 >    |                      d           d| _        d S )Nr]   EOF)rZ   rM   r@   s    r   eof_receivedzMyBaseProto.eof_receivedk   s!    ;'''


r   c                     |                      dd           d| _        | j        r| j                            d            d S d S )Nr]   rj   CLOSEDrZ   rM   rQ   r_   r<   s     r   connection_lostzMyBaseProto.connection_losto   sO    ;...
9 	'I  &&&&&	' 	'r   r   )rD   rE   rF   rP   rQ   rS   rZ   ra   rh   rk   ro   r   r   r   rH   rH   P   s        ID- - - -S S S, , ,! ! !  ' ' ' ' 'r   rH   c                        e Zd Z fdZ xZS )MyProtoc                 t    t                                          |           |                    d           d S )Ns%   GET / HTTP/1.0
Host: example.com

)superra   write)r7   rL   	__class__s     r   ra   zMyProto.connection_madew   s4    	***FGGGGGr   rD   rE   rF   ra   __classcell__ru   s   @r   rq   rq   v   sA        H H H H H H H H Hr   rq   c                   8    e Zd ZdZddZd Zd Zd Zd Zd Z	dS )	MyDatagramProtoNc                 \    d| _         d| _        ||                                | _        d S d S rJ   )rM   rN   rO   rQ   rR   s     r   rS   zMyDatagramProto.__init__   s5    
**,,DIII r   c                 P    | j         |k    rt          d| j         d|          d S rU   rV   rX   s     r   rZ   zMyDatagramProto._assert_state   8    :!! !Q4:!Q!QX!Q!QRRR "!r   c                 L    || _         |                     d           d| _        d S )NrK   INITIALIZEDrL   rZ   rM   r`   s     r   ra   zMyDatagramProto.connection_made   s(    "9%%%"


r   c                 j    |                      d           | xj        t          |          z  c_        d S Nr   rd   r7   rg   addrs      r   datagram_receivedz!MyDatagramProto.datagram_received   s0    =)))s4yy r   c                 0    |                      d           d S r   )rZ   r<   s     r   error_receivedzMyDatagramProto.error_received   s    =)))))r   c                     |                      d           d| _        | j        r| j                            d            d S d S )Nr   rm   rn   r<   s     r   ro   zMyDatagramProto.connection_lost   sM    =)))
9 	'I  &&&&&	' 	'r   r   )
rD   rE   rF   rQ   rS   rZ   ra   r   r   ro   r   r   r   rz   rz   |   s{        D- - - -S S S# # #
! ! !* * *' ' ' ' 'r   rz   c                   8    e Zd ZdZddZd Zd Zd Zd Zd Z	dS )	MyReadPipeProtoNc                 l    dg| _         d| _        d | _        ||                                | _        d S d S rJ   )rM   rN   rL   rO   rQ   rR   s     r   rS   zMyReadPipeProto.__init__   s>    [
**,,DIII r   c                 P    | j         |k    rt          d| j         d|          d S rU   rV   rX   s     r   rZ   zMyReadPipeProto._assert_state   r}   r   c                 t    || _         |                     dg           | j                            d           d S r\   )rL   rZ   rM   appendr`   s     r   ra   zMyReadPipeProto.connection_made   s;    "I;'''
+&&&&&r   c                 n    |                      ddg           | xj        t          |          z  c_        d S r\   rd   rf   s     r   rh   zMyReadPipeProto.data_received   s5    I{3444s4yy r   c                 h    |                      ddg           | j                            d           d S )NrK   r]   rj   )rZ   rM   r   r@   s    r   rk   zMyReadPipeProto.eof_received   s7    I{3444
%     r   c                     d| j         vr| j                             d           |                     g d           | j                             d           | j        r| j                            d            d S d S )Nrj   )rK   r]   rj   rm   )rM   r   rZ   rQ   r_   r<   s     r   ro   zMyReadPipeProto.connection_lost   s    
""Je$$$:::;;;
(###9 	'I  &&&&&	' 	'r   r   )
rD   rE   rF   rQ   rS   rZ   ra   rh   rk   ro   r   r   r   r   r      s{        D- - - -S S S' ' '
! ! !! ! !' ' ' ' 'r   r   c                   ,    e Zd ZdZddZd Zd Zd ZdS )MyWritePipeProtoNc                 \    d| _         d | _        ||                                | _        d S d S )NrK   )rM   rL   rO   rQ   rR   s     r   rS   zMyWritePipeProto.__init__   s5    
**,,DIII r   c                 P    | j         |k    rt          d| j         d|          d S rU   rV   rX   s     r   rZ   zMyWritePipeProto._assert_state   r}   r   c                 L    || _         |                     d           d| _        d S r\   r   r`   s     r   ra   z MyWritePipeProto.connection_made   s(    "9%%% 


r   c                     |                      d           d| _        | j        r| j                            d            d S d S Nr]   rm   rn   r<   s     r   ro   z MyWritePipeProto.connection_lost   sM    ;'''
9 	'I  &&&&&	' 	'r   r   )rD   rE   rF   rQ   rS   rZ   ra   ro   r   r   r   r   r      s]        D- - - -S S S! ! !
' ' ' ' 'r   r   c                   8    e Zd Zd Zd Zd Zd Zd Zd Zd Z	dS )	MySubprocessProtocolc                 B   d| _         d | _                                        | _                                        | _        fdt          d          D             | _        ddd| _        d | _        t          j
                    t          j
                    d| _        d S )NrK   c                 :    i | ]}|                                 S r   )rO   ).0fdr2   s     r   
<dictcomp>z1MySubprocessProtocol.__init__.<locals>.<dictcomp>   s'    HHHB 2 2 4 4HHHr      r         )rM   rL   rO   rP   	completedrangedisconnectsrg   
returncoder   Eventgot_datarR   s    `r   rS   zMySubprocessProtocol.__init__   s    
++--++--HHHHuQxxHHH$$	#MOO#MOO- -r   c                 P    | j         |k    rt          d| j         d|          d S rU   rV   rX   s     r   rZ   z"MySubprocessProtocol._assert_state   r}   r   c                     || _         |                     d           d| _        | j                            d            d S r\   r^   r`   s     r   ra   z$MySubprocessProtocol.connection_made   s@    "9%%% 
!!$'''''r   c                 r    |                      d           d| _        | j                            d            d S r   )rZ   rM   r   r_   r<   s     r   ro   z$MySubprocessProtocol.connection_lost   s9    ;'''
!!$'''''r   c                     |                      d           | j        |xx         |z  cc<   | j        |                                          d S rc   )rZ   rg   r   set)r7   r   rg   s      r   pipe_data_receivedz'MySubprocessProtocol.pipe_data_received   sM    ;'''	"br   c                     |                      d           |r"| j        |                             |           d S | j        |                             |           d S rc   )rZ   r   set_exceptionr_   )r7   r   r=   s      r   pipe_connection_lostz)MySubprocessProtocol.pipe_connection_lost   sb    ;''' 	1R ..s33333R ++C00000r   c                 l    |                      d           | j                                        | _        d S rc   )rZ   rL   get_returncoder   r@   s    r   process_exitedz#MySubprocessProtocol.process_exited  s/    ;'''.7799r   N)
rD   rE   rF   rS   rZ   ra   ro   r   r   r   r   r   r   r   r      s        	- 	- 	-S S S( ( (( ( (
     
1 1 1: : : : :r   r   c                   
    e Zd Z fdZ fdZd Zd Zd Zd Zd Z	d Z
d	 Zd
 Zd Zd Zd Z ej         eed          d          d             Z ej         eed          d           ej         eed          d          d                         Z ej         eed          d           ej         eed          d          d                         Zd^dZd Zej        d             Zddi fdZ	 	 d_dZ	 d_dZ ej        e du d          d              Z!ej         ej        e du d          d!                         Z"d" Z#ej$        d#             Z%ej$        d$             Z&d% Z'd`d&Z( ej        e du d          d'             Z)d( Z* e+j,        d)          d*             Z-d+ Z.d, Z/d- Z0 ej         ee1d.          d/          d0             Z2d1 Z3ej        d2             Z4 ej         ee1d3          d4          d5             Z5dad6Z6dad7Z7dad8Z8 ej        e du d          d9             Z9ej         ej        e du d          d:                         Z: ej        e du d          d;             Z;ej         ej        e du d          d<                         Z< ej        e du d          d=             Z=ej         ej        e du d          d>                         Z> ej        e du d          d?             Z?d@ Z@dA ZA ej        ejB        dB          dC             ZCej$        dD             ZDdE ZEdF ZF ej        ejB        dB          dG             ZGdH ZHdI ZIdJ ZJ ej        eKjL        dKk    dL          dM             ZM ej        eKjL        dKk    dL          dN             ZN ej        eKjL        dKk    dL           ej         eeOdO          dP          dQ                         ZP ej        eKjL        dKk    dL          dR             ZQ ej        eKjL        dKk    dL          dS             ZR ej        eKjL        dKk    dL           ej         eeOdO          dP           eSjT        dTdU          dV                                     ZU ej        eKjL        dKk    dL           ej         eeOdO          dP           eSjT        dTdU          dW                                     ZVdX ZWdY ZXdZ ZYd[ ZZd\ Z[d] Z\ xZ]S )bEventLoopTestsMixinc                     t                                                       |                                 | _        |                     | j                   d S r   )rs   setUpcreate_event_loopr2   r0   r7   ru   s    r   r   zEventLoopTestsMixin.setUp  sC    **,,	DI&&&&&r   c                     | j                                         st          j        | j                    |                                  t          j                     t                                                       d S r   )	r2   	is_closed
test_utilsrun_briefly
doCleanupsr   
gc_collectrs   tearDownr   s    r   r   zEventLoopTestsMixin.tearDown  sg    y""$$ 	."49---r   c                      d  fd}                      t          d          5                       t           j        j         |                       d d d            d S # 1 swxY w Y   d S )Nc                  >   K   t          j        d           d {V  d S Nr   r   sleepr   r   r   coro1zBEventLoopTestsMixin.test_run_until_complete_nesting.<locals>.coro1  s.      -"""""""""""r   c                     K                        j                                                   j                                                     d S r   )
assertTruer2   
is_runningr1   )r   r7   s   r   coro2zBEventLoopTestsMixin.test_run_until_complete_nesting.<locals>.coro2  sI      OODI0022333I((11111r   zcoroutine \S+ was never awaited)assertWarnsRegexRuntimeWarningassertRaisesRuntimeErrorr2   r1   )r7   r   r   s   ` @r   test_run_until_complete_nestingz3EventLoopTestsMixin.test_run_until_complete_nesting  s    	# 	# 	#	2 	2 	2 	2 	2 	2 "".
 
 	E 	E di:EEGGE E E		E 	E 	E 	E 	E 	E 	E 	E 	E 	E 	E 	E 	E 	E 	E 	E 	E 	Es   /A##A'*A'c                    d}| j                                         }| j                             t          j        |                     | j                                         |z
  }|                     ||t          j        z
             d S N皙?)r2   timer1   r   r   assertGreaterEqualr   	CLOCK_RES)r7   delayt0dts       r   test_run_until_completez+EventLoopTestsMixin.test_run_until_complete(  sr    Y^^	$$W]5%9%9:::Y^^"EJ,@$@AAAAAr   c                 r      fd} |            }                      t           j        j        |           d S )Nc                  r   K    j                                          t          j        d           d {V  d S r   )r2   stopr   r   r@   s   r   cbz?EventLoopTestsMixin.test_run_until_complete_stopped.<locals>.cb1  sA      INN-$$$$$$$$$$$r   )r   r   r2   r1   )r7   r   tasks   `  r   test_run_until_complete_stoppedz3EventLoopTestsMixin.test_run_until_complete_stopped/  sW    	% 	% 	% 	% 	% rtt,)6	> 	> 	> 	> 	>r   c                      g  fd} j                             d|d            j                                                               dg           d S )Nc                 d                         |            j                                         d S r   r   r2   r   argresultsr7   s    r   callbackz5EventLoopTestsMixin.test_call_later.<locals>.callback;  s-    NN3INNr   r   zhello world)r2   
call_laterrun_foreverassertEqualr7   r   r   s   ` @r   test_call_laterz#EventLoopTestsMixin.test_call_later8  su    	 	 	 	 	 	 		S(M:::	=/22222r   c                      g  fd} j                             |dd            j                                                               dg           d S )Nc                 h                         | |f           j                                         d S r   r   )arg1arg2r   r7   s     r   r   z4EventLoopTestsMixin.test_call_soon.<locals>.callbackF  s1    NND$<(((INNr   r-   world)r-   r   )r2   	call_soonr   r   r   s   ` @r   test_call_soonz"EventLoopTestsMixin.test_call_soonC  sw    	 	 	 	 	 	 		Hgw777	#5"677777r   c                     g t          j                     fd fd}                                 t          j        |          }|                                 5   j                            d            j                                         d d d            n# 1 swxY w Y   |                                  	                    ddg           d S )Nc                                          |            t                    dk    rj                                         d S d S Nr   r   re   r2   r   r   s    r   r   z?EventLoopTestsMixin.test_call_soon_threadsafe.<locals>.callbackR  F    NN37||q  	      ! r   c                  f    j                              d                                            d S r,   )r2   call_soon_threadsaferelease)r   lockr7   s   r   run_in_threadzDEventLoopTestsMixin.test_call_soon_threadsafe.<locals>.run_in_threadW  s,    I**8W===LLNNNNNr   targetr   r-   )
	threadingLockacquireThreadstartr2   r   r   joinr   )r7   r   tr   r   r   s   `  @@@r   test_call_soon_threadsafez-EventLoopTestsMixin.test_call_soon_threadsafeN  s?   ~	! 	! 	! 	! 	! 	!
	 	 	 	 	 	 	 	M222				 	$ 	$I'222I!!###	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	
7G"455555s   &5B''B+.B+c                      g  fd} j                             |d            j                             |d            j                                                               ddg           d S )Nc                                          |            t                    dk    rj                                         d S d S r   r   r   s    r   r   zKEventLoopTestsMixin.test_call_soon_threadsafe_same_thread.<locals>.callbackh  r   r   r-   r   )r2   r   r   r   r   r   s   ` @r   %test_call_soon_threadsafe_same_threadz9EventLoopTestsMixin.test_call_soon_threadsafe_same_threade  s    	! 	! 	! 	! 	! 	!
 		&&x999	Hg...	7G"455555r   c                     d }| j                             d |d          }| j                             |          \  }}|                     |d           |                     |t          j                               d S )Nc                 ,    | t          j                    fS r   )r  	get_ident)r   s    r   runz5EventLoopTestsMixin.test_run_in_executor.<locals>.runs  s    ,..//r   yo)r2   run_in_executorr1   r   assertNotEqualr  r  )r7   r  f2res	thread_ids        r   test_run_in_executorz(EventLoopTestsMixin.test_run_in_executorr  s~    	0 	0 	0Y&&tS$7755b99Yd###Iy':'<'<=====r   c                    dfd}d }| j                             d |          }|                                 | j                             | j                                                    | j                                          || j         _        || j         _        t          j	        d           | 
                               d S )NFc                      dd S NTr   )argscalleds    r   patched_call_soonzJEventLoopTestsMixin.test_run_in_executor_cancel.<locals>.patched_call_soon}  s    FFFr   c                  .    t          j        d           d S )Ng?)r   r   r   r   r   r  z<EventLoopTestsMixin.test_run_in_executor_cancel.<locals>.run  s    Jtr   g?)r2   r  cancelr1   shutdown_default_executorrA   r   r   r   r   assertFalse)r7   r  r  r  r  s       @r   test_run_in_executor_cancelz/EventLoopTestsMixin.test_run_in_executor_cancelz  s    	 	 	 	 		 	 	 Y&&tS11
			$$	3355	7 	7 	7	/	):	&
3     r   c                     t          j                    \  }                    d           t                       fd} j                                                            |            j                            |j        d           t          j
         j        fd            j                            |j        d           t          j
         j        fd            j                            |j                    j                             j        j                    j                                                              d           d S )NFc                  0   	                      d          } n# t          $ r Y d S w xY w| r                    |            d S                     j                                                                                                                  d S N   )recvBlockingIOErrorextendr   r2   remove_readerfilenorA   )rg   
bytes_readrr7   s    r   readerz8EventLoopTestsMixin.test_reader_callback.<locals>.reader  s    vvd||"      !!$'''''	 7 7

 C CDDD					s    
''s   abcc                  *    t                     dk    S )Nr   re   r+  s   r   <lambda>z:EventLoopTestsMixin.test_reader_callback.<locals>.<lambda>      J10D r   s   defc                  *    t                     dk    S )N   r/  r0  s   r   r1  z:EventLoopTestsMixin.test_reader_callback.<locals>.<lambda>  r2  r   s   abcdef)socket
socketpairsetblocking	bytearrayr2   
add_readerr*  r   r9   r   	run_untilrA   r   r   r   )r7   wr-  r+  r,  s   `  @@r   test_reader_callbackz(EventLoopTestsMixin.test_reader_callback  sK    ""1	e[[
	 	 	 	 	 	 	 		QXXZZ000	AFF+++TY(D(D(D(DEEE	AFF+++TY(D(D(D(DEEE	AG$$$	DIN+++	Y/////r   c                     t          j                    \  }                    d            fd}d} j                                                            ||            j                                                               j                                                                                  	                     j                                                                                 
                                 |                    t          |          dz            }|
                                                      ||           d S )NFc                 d                         |            j                                         d S r   )r9   r2   r   )rg   r7   r;  s    r   writerz8EventLoopTestsMixin.test_writer_callback.<locals>.writer  s*    FF4LLLINNr   s   xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxr   )r5  r6  r7  r2   
add_writerr*  r   r   remove_writerr   rA   r&  re   r   )r7   r,  r?  rg   readr;  s   `    @r   test_writer_callbackz(EventLoopTestsMixin.test_writer_callback  s*    ""1	e	 	 	 	 	 	 	QXXZZ666		//

;;<<<00<<===				vvc$ii!m$$				t$$$$$r   SIGKILLz
No SIGKILLc                    dfd}|                      t          | j        j        d|           |                      t          | j        j        d           |                      t
          | j        j        t          j        dz   |           |                      t
          | j        j        t          j        dz              |                      t
          | j        j        d|           |                      t
          | j        j        d           |                      t
          | j        j        d|           |                      t
          | j        j        d           |                      t          | j        j        t          j	        |           | 
                    | j                            t          j	                             | j                            t          j        |           t          j        t          j                    t          j                   t          j        | j        fd           |                     | j                            t          j                             |                     t          j        t          j                  t          j                   | 
                    | j                            t          j                             d S )Nr   c                       dz   d S Nr   r   caughts   r   
my_handlerz?EventLoopTestsMixin.test_add_signal_handler.<locals>.my_handler  s    aKFFFr   boomr   c                       S r   r   rH  s   r   r1  z=EventLoopTestsMixin.test_add_signal_handler.<locals>.<lambda>  s     r   )r   	TypeErrorr2   add_signal_handlerremove_signal_handler
ValueErrorsignalNSIGr   rD  r   SIGINToskillgetpidr   r:  r   r   	getsignaldefault_int_handlerr7   rJ  rI  s     @r   test_add_signal_handlerz+EventLoopTestsMixin.test_add_signal_handler  s   	 	 	 	 	
 	ty3VZ	I 	I 	Ity6	@ 	@ 	@	4fk!m	 	 	 		7Q	H 	H 	H	4a	E 	E 	E	7	< 	< 	<	4b*	F 	F 	F	7	= 	= 	=$)6	 	 	 	88HHIII	$$V]J???
	V]+++TY777 		77FFGGG)&-883	5 	5 	5 	88GGHHHHHr   SIGALRMz
No SIGALRM	setitimerzneed signal.setitimer()c                 L    d fd} j                             t          j        |           t          j        t          j        dd            j                             d j         j                    j                                           	                    d           d S )Nr   c                  D     dz   j                                          d S rG  )r2   r   )rI  r7   s   r   rJ  zLEventLoopTestsMixin.test_signal_handling_while_selecting.<locals>.my_handler  s$    aKFINNr   {Gz?<   r   
r2   rO  rR  r\  r]  ITIMER_REALr   r   r   r   rZ  s   ` @r   $test_signal_handling_while_selectingz8EventLoopTestsMixin.test_signal_handling_while_selecting  s    
 	 	 	 	 	 	
 		$$V^Z@@@+T1555	R000	#####r   c                 F    dd fd}  j         j        t          j        |gR   t          j        t          j        dd            j                             d j         j                    j                                           	                    d           d S )N)*   r   c                  p    dz                       |            j                                         d S rG  )r   r2   r   )r  rI  r7   	some_argss    r   rJ  zAEventLoopTestsMixin.test_signal_handling_args.<locals>.my_handler  s:    aKFT9---INNr   r   ra  r   rb  )r7   rJ  rI  rh  s   ` @@r   test_signal_handling_argsz-EventLoopTestsMixin.test_signal_handling_args  s     		 	 	 	 	 	 	 	%	$V^ZL)LLLL+S!444	R000	#####r   Tc                    | j                             |          \  }}|                     |t          j                   |                     |t          j                   |                     |j        |           |r(|                     |	                    d                     | j                             |j
                   |                     |j        d           |                                 d S )Nsocknamer   )r2   r1   assertIsInstancer   	TransportProtocolassertIsrL   assertIsNotNoneget_extra_inforQ   assertGreaterrN   rA   )r7   connection_futcheck_socknametrprs        r   _basetest_create_connectionz/EventLoopTestsMixin._basetest_create_connection  s    --n==Bb'"3444b'"2333blB''' 	@  !2!2:!>!>???	$$RW---29a(((





r   c                      t          j                    5 }  j        j         fdg|j        R  }                     |           d d d            d S # 1 swxY w Y   d S )Nc                  .    t           j                  S Nr2   rq   r2   r@   s   r   r1  z<EventLoopTestsMixin.test_create_connection.<locals>.<lambda>      TY/// r   )r   run_test_serverr2   create_connectionaddressrw  )r7   httpdconn_futs   `  r   test_create_connectionz*EventLoopTestsMixin.test_create_connection  s    ')) 	7U2ty2////A27-A A AH,,X666	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7s   1AAAc                      t                       }t          j                    5 } j                             fd|j                  }                     ||           d d d            d S # 1 swxY w Y   d S )Nc                  .    t           j                  S rz  r|  r@   s   r   r1  zAEventLoopTestsMixin.test_create_unix_connection.<locals>.<lambda>*  r}  r   )r)   r   run_test_unix_serverr2   create_unix_connectionr  rw  )r7   rt  r  r  s   `   r   test_create_unix_connectionz/EventLoopTestsMixin.test_create_unix_connection"  s     5666,.. 	G%y77////@ @H,,X~FFF	G 	G 	G 	G 	G 	G 	G 	G 	G 	G 	G 	G 	G 	G 	G 	G 	G 	Gs   :A++A/2A/Nc                    |r(|                      |                    d                     |r*|                     ||                    d                     n(|                      |                    d                     |                     ||                    d                     |                    d          }|                     |t                     |                     t          |          d|           |                     |d         t                     |                     |d         t                     |                     |d         t                     |                    d	          }|                      |           |                     |                                |                    d
                     |                     |	                                |                    d                     |                     |
                                |                    d                     |                     |                                |                    d
                     d S )Nrk  peernamepeercertcipherr   r   r   r   
ssl_objectcompression)rp  rq  r   rl  r$   re   strr&   r  r  getpeercert)r7   clientrt  r  r  r  sslobjs          r   check_ssl_extra_infoz(EventLoopTestsMixin.check_ssl_extra_info-  s[    	D  !6!6z!B!BCCC 	DX#22:>>@ @ @ @   !6!6z!B!BCCC..z::	< 	< 	< &&x00fe,,,Va000fQi---fQi---fQi--- &&|44V$$$++--..}==	? 	? 	?..x88	: 	: 	:++--..z::	< 	< 	<++--..}==	? 	? 	? 	? 	?r   c                    | j                             |          \  }}|                     |t          j                   |                     |t          j                   |                     d|j        j        	                                v            | 
                    |||           | j                             |j                   |                     |j        d           |                                 d S )Nsslr   )r2   r1   rl  r   rm  rn  r   ru   rD   lowerr  rQ   rr  rN   rA   )r7   rs  rt  r  ru  rv  s         r   _basetest_create_ssl_connectionz3EventLoopTestsMixin._basetest_create_ssl_connectionM  s     --n==Bb'"3444b'"2333!6!<!<!>!>>???!!"nh???	$$RW---29a(((





r   c                      |t          j                              }                     |||           t          t          d          rt          j        j        fd d d d fd}t          j        d|          5 } |d          }                     |||            	                    |j
        d           d d d            n# 1 swxY w Y                        t          j                  5 } |d          }t          j                    5                       |||           d d d            n# 1 swxY w Y   d d d            n# 1 swxY w Y    	                    |j        j        d	           d S )
Nr  Purpose)cafilecapathcadatac                t                         | t          j        j                   t	          j                    S )z
                A ssl.create_default_context() replacement that doesn't enable
                cert validation.
                )r   r  r  SERVER_AUTHr   dummy_ssl_context)purposer  r  r  r7   s       r   _dummy_ssl_create_contextzREventLoopTestsMixin._test_create_ssl_connection.<locals>._dummy_ssl_create_contexta  s/       #+*ABBB!3555r   zssl.create_default_context)side_effectTr   CERTIFICATE_VERIFY_FAILED)r   r  r  hasattrr  r  r  r   patchr   
call_countr   SSLErrordisable_logger	exceptionreason)	r7   r  r  rt  r  r  r  mcms	   `        r   _test_create_ssl_connectionz/EventLoopTestsMixin._test_create_ssl_connectionY  sm   $$)E)G)GHHH,,X~-5	7 	7 	7 3	"" 	225+2I 615d156 6 6 6 6 6 6 8(AC C C 2FG,,66644X~5=? ? ?  q1112 2 2 2 2 2 2 2 2 2 2 2 2 2 2 s|,, 	?((T222H*,, ? ?44X~5=? ? ?? ? ? ? ? ? ? ? ? ? ? ? ? ? ?	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	,.IJJJJJsH   <?CCC1 ED5)E5D9	9E<D9	=EEEzNo ssl modulec                      t          j        d          5 }t          j         j        j         fdg|j        R  }                     |||j                   d d d            d S # 1 swxY w Y   d S )NTuse_sslc                  .    t           j                  S rz  r|  r@   s   r   r1  z@EventLoopTestsMixin.test_create_ssl_connection.<locals>.<lambda>  r}  r   r  )r   r~  	functoolspartialr2   r  r  r  )r7   r  r  s   `  r   test_create_ssl_connectionz.EventLoopTestsMixin.test_create_ssl_connection~  s    '555 	E ) 1	+////!  !  !  !  ,,U4E6;m - E E E	E 	E 	E 	E 	E 	E 	E 	E 	E 	E 	E 	E 	E 	E 	E 	E 	E 	Es   AA''A+.A+c                     t                       }t          j        d          5 }t          j         j        j         fd|j        d          }                     ||||j                   d d d            d S # 1 swxY w Y   d S )NTr  c                  .    t           j                  S rz  r|  r@   s   r   r1  zEEventLoopTestsMixin.test_create_ssl_unix_connection.<locals>.<lambda>  r}  r   	127.0.0.1)server_hostnamer  )	r)   r   r  r  r  r2   r  r  r  )r7   rt  r  r  s   `   r   test_create_ssl_unix_connectionz3EventLoopTestsMixin.test_create_ssl_unix_connection  s    
 5666,T::: 	Ee ) 1	0//// +!- !- !-
 ,,U4E-;6;m - E E E	E 	E 	E 	E 	E 	E 	E 	E 	E 	E 	E 	E 	E 	E 	E 	E 	E 	Es   A	A<<B B c                     t          j                    5 }t          j                    }  j        j         fdg|j        R d|j        d         |fi} j                            |          \  }}|j        	                    d          d         } 
                    ||           |                                 d d d            d S # 1 swxY w Y   d S )Nc                  .    t           j                  S rz  r|  r@   s   r   r1  zGEventLoopTestsMixin.test_create_connection_local_addr.<locals>.<lambda>  r}  r   
local_addrr   rk  r   )r   r~  r   find_unused_portr2   r  r  r1   rL   rq  r   rA   )r7   r  portfru  rv  rY   s   `      r   !test_create_connection_local_addrz5EventLoopTestsMixin.test_create_connection_local_addr  s)   ')) 	U 133D+	+////EE E E,1M!,<d+CE EA Y11!44FB|22:>>qAHT8,,,HHJJJ	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	s   B&CCCc                 t    t          j                    }t          j                     j        j        fd}| j        _         j                             fdd|df          }                     t                    5   j                            |           d d d            d S # 1 swxY w Y   d S )Nc                    K   |k    r6t           j        t           j        dddft           j        t           j        dddfgS  | |g|R i | d {V S )Nr    ::1r   r   r   r  r   )r5  AF_INET6SOCK_STREAMAF_INEThostr  r  kwargsgetaddrinfo_origport2s       r   getaddrinfoz`EventLoopTestsMixin.test_create_connection_local_addr_skip_different_family.<locals>.getaddrinfo  sy      u}}&*<aEUV);QDTUW W))$FtFFFvFFFFFFFFFr   c                  .    t           j                  S rz  r|  r@   s   r   r1  z]EventLoopTestsMixin.test_create_connection_local_addr_skip_different_family.<locals>.<lambda>      G+++ r   	localhostr  r   r  r2   r  r  r   OSErrorr1   r7   port1r  r  r  r  s   `   @@r   7test_create_connection_local_addr_skip_different_familyzKEventLoopTestsMixin.test_create_connection_local_addr_skip_different_family  s$    .00.0090	G 	G 	G 	G 	G 	G !,	I''++++K+? ( A A w'' 	, 	,I((+++	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	,   B--B14B1c                 t    t          j                    }t          j                     j        j        fd}| j        _         j                             fdd|df          }                     t                    5   j                            |           d d d            d S # 1 swxY w Y   d S )Nc                 r   K   |k    rt           j        t           j        dddfgS  | |g|R i | d {V S )Nr   r  r  )r5  r  r  r  s       r   r  zYEventLoopTestsMixin.test_create_connection_local_addr_nomatch_family.<locals>.getaddrinfo  s_      u}}&*<aEUVWW))$FtFFFvFFFFFFFFFr   c                  .    t           j                  S rz  r|  r@   s   r   r1  zVEventLoopTestsMixin.test_create_connection_local_addr_nomatch_family.<locals>.<lambda>  r  r   r  r  r  r  s   `   @@r   0test_create_connection_local_addr_nomatch_familyzDEventLoopTestsMixin.test_create_connection_local_addr_nomatch_family  s$    .00.0090	G 	G 	G 	G 	G 	G
 !,	I''++++K+? ( A A w'' 	, 	,I((+++	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	,r  c                     t          j                    5 }  j        j         fdg|j        R d|j        i}                     t                    5 } j                            |           d d d            n# 1 swxY w Y                        |j	        j
        t          j                                        t          |j                  |j	        j                   d d d            d S # 1 swxY w Y   d S )Nc                  .    t           j                  S rz  r|  r@   s   r   r1  zNEventLoopTestsMixin.test_create_connection_local_addr_in_use.<locals>.<lambda>  r}  r   r  )r   r~  r2   r  r  r   r  r1   r   r  errno
EADDRINUSEassertInr  strerror)r7   r  r  r  s   `   r   (test_create_connection_local_addr_in_usez<EventLoopTestsMixin.test_create_connection_local_addr_in_use  s   ')) 	EU+	+////:: : :+0=: :A ""7++ 0r	,,Q///0 0 0 0 0 0 0 0 0 0 0 0 0 0 0R\/1ABBBMM#em,,bl.CDDD	E 	E 	E 	E 	E 	E 	E 	E 	E 	E 	E 	E 	E 	E 	E 	E 	E 	Es6   >C.A:.C.:A>	>C.A>	AC..C25C2c                 l  	
 | j          G 
fddt                    }t          j        dd          }|                                	dd d
	fd}t          j        |d	
          }|                                 |                                \  }} |          _         	                    
                    fd||                                                      j                                         |                                 t          j        |           |                     |                                           |                     j        d           |                     j        t+                               |                     
           d S )Nc                   .     e Zd Z fdZ fdZ xZS )AEventLoopTestsMixin.test_connect_accepted_socket.<locals>.MyProtoc                 ~    t                                          |                               j                   d S r   )rs   ro   r   r   )r7   r=   ru   r2   s     r   ro   zQEventLoopTestsMixin.test_connect_accepted_socket.<locals>.MyProto.connection_lost  s5    '',,,ty)))))r   c                 ~    t                                          |           | j                                       d S r   )rs   rh   rL   rt   )r7   rg   ru   expected_responses     r   rh   zOEventLoopTestsMixin.test_connect_accepted_socket.<locals>.MyProto.data_received  s8    %%d+++$$%677777r   )rD   rE   rF   ro   rh   rw   )ru   r  r2   s   @r   rq   r    s\        * * * * * *8 8 8 8 8 8 8 8 8 8r   rq   r  r   )backlogs	   test datas   rogerc                  T   	 t          j                     }                     |           } |                                |                                |                     d          |                                  d S # t          $ r}t          d|           Y d }~d S d }~ww xY w)Nc   z8Failure in client thread in test_connect_accepted_socket)r5  wrap_socketconnectsendallr&  rA   	Exceptionprint)csockr=   r   
client_sslmessageresponses     r   r  z@EventLoopTestsMixin.test_connect_accepted_socket.<locals>.client  s    )&22599Ed###g&&& ::b>>   N        s   A=B 
B'B""B'T)r   daemonr{  c                       S r   r   protos   r   r1  zBEventLoopTestsMixin.test_connect_accepted_socket.<locals>.<lambda>  s     r   r  rm   )r2   rH   r5  create_servergetsocknamer  r  r  acceptr1   connect_accepted_socketr   rL   rA   r   join_threadr   is_aliver   rM   rN   re   )r7   
server_sslr  rq   lsockr  threadconn_r   r  r2   r  r  r  s     `      @@@@@@r   test_connect_accepted_socketz0EventLoopTestsMixin.test_connect_accepted_socket  s   y	8 	8 	8 	8 	8 	8 	8 	8k 	8 	8 	8 $%5qAAA  ""$	 	 	 	 	 	 	 	 !===,,..aT"""
((: ) 7 7	8 	8 	8 	$V,,,**+++h///s7||444#455555r   c                 ~    t          j                    }t          j                    }|                     ||           d S r   )r   simple_server_sslcontextsimple_client_sslcontextr  )r7   server_contextclient_contexts      r    test_ssl_connect_accepted_socketz4EventLoopTestsMixin.test_ssl_connect_accepted_socket  s:    #<>>#<>>))..IIIIIr   c                 T   t          j                     }|                     |j                   | j                            t
          |t          j                  }|                     t          d          5  | j        
                    |           d d d            d S # 1 swxY w Y   d S )N)ssl_handshake_timeoutz1ssl_handshake_timeout is only meaningful with ssl)r5  
addCleanuprA   r2   r   rq   r   LOOPBACK_TIMEOUTassertRaisesRegexrQ  r1   )r7   sockcoros      r   9test_connect_accepted_socket_ssl_timeout_for_plain_socketzMEventLoopTestsMixin.test_connect_accepted_socket_ssl_timeout_for_plain_socket  s    }
###y00T1I 1 K K##CE E 	/ 	/ I((...	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/s   5BB!$B!zasyncio.base_events.socketc                    	 fd		 fd}t          |          }t          j        k    r)d |D             |                                j        _        n(d |D             |                                j        _        | j        _        t          j                     j        _	        t          j                     j        _
         j                             fd|d          } j                            |          }                     |j                   d |j        D             }                     ||           d S )Nc                 |   K   t           j        k    rt           j        dd| |ffgS t           j        dd| |ddffgS )Nr4  r  r   )r5  r  r  )r  r  r  kwfamilys       r   r  zEEventLoopTestsMixin.create_server_multiple_hosts.<locals>.getaddrinfo"  sO      ''!3QT4LIJJ!3QT4A<NOPPr   c                  D    j                              | i |          S r   )r2   create_task)r  kwdsr  r7   s     r   getaddrinfo_taskzJEventLoopTestsMixin.create_server_multiple_hosts.<locals>.getaddrinfo_task(  s(    9((d)Cd)C)CDDDr   c                     g | ]}|d fS )P   r   r   r  s     r   
<listcomp>zDEventLoopTestsMixin.create_server_multiple_hosts.<locals>.<listcomp>.  s)     <5 <5 <5#r
<5 <5 <5r   c                     g | ]}|d ddf	S )r   r   r   r!  s     r   r"  zDEventLoopTestsMixin.create_server_multiple_hosts.<locals>.<listcomp>1  s.     <; <; <;%)r1a <; <; <;r   c                  ,    t           j                  S r   r|  r@   s   r   r1  zBEventLoopTestsMixin.create_server_multiple_hosts.<locals>.<lambda>6  s    GDI,>,> r   r   c                 B    h | ]}|                                 d          S )r   )getsockbyname)r   r  s     r   	<setcomp>zCEventLoopTestsMixin.create_server_multiple_hosts.<locals>.<setcomp>9  s)    KKKD**,,Q/KKKr   )r   r5  r  r&  r  r2   r  r   Mock_start_serving_stop_servingr  r1   r  rA   socketsr   )
r7   r  hosts	mock_sockr  unique_hostsr  serverserver_hostsr  s
   ``       @r   create_server_multiple_hostsz0EventLoopTestsMixin.create_server_multiple_hosts   sk   	Q 	Q 	Q 	Q 	Q	E 	E 	E 	E 	E 	E 5zzV^##<5 <5'3<5 <5 <5I,88<; <;-9<; <; <;I,8 0	#'9;;	 "&)++	I##$>$>$>$>rJJ--a00%%%KKFNKKK|44444r   c                 J    |                      t          j        g d           d S )N)1.2.3.4z5.6.7.8r3  )r1  r5  r  r@   s    r   &test_create_server_multiple_hosts_ipv4z:EventLoopTestsMixin.test_create_server_multiple_hosts_ipv4<  s6    ))&.*K*K*K	M 	M 	M 	M 	Mr   c                 J    |                      t          j        g d           d S )N)r  z::2r  )r1  r5  r  r@   s    r   &test_create_server_multiple_hosts_ipv6z:EventLoopTestsMixin.test_create_server_multiple_hosts_ipv6@  s6    ))&/*?*?*?	A 	A 	A 	A 	Ar   c                    t          | j                  | j                            fddd          }| j                            |          }|                     t          |j                  d           |j        d         }|                                \  }}|                     |d           t          j                    }|	                    d|f           |
                    d           | j                            j                   |                     dj                   t          j        | j        fd           |                     d	j                   |                     j                            d
                     |                     dj                            d          d                    j                                         | j                            j                   |                     dj                   |                                 |                                 d S )Nc                       S r   r   r  s   r   r1  z8EventLoopTestsMixin.test_create_server.<locals>.<lambda>F  s    E r   0.0.0.0r   r   r     xxxr]   c                       j         dk    S r   rN   r  s   r   r1  z8EventLoopTestsMixin.test_create_server.<locals>.<lambda>S      q0@ r   r   rk  r  rm   )rq   r2   r  r1   r   re   r+  r  r5  r  r  rP   rM   r   r:  rN   rp  rL   rq  rA   rQ   )r7   r  r/  r  r  r  r  r  s          @r   test_create_serverz&EventLoopTestsMixin.test_create_serverD  s   	""I##MMMM9a@@--a00V^,,a000~a %%''
dy)))T*+++v	$$U_555ek222TY(@(@(@(@AAAEL))) 	U_;;JGGHHH77
CCAF	H 	H 	H 		$$UZ0005;/// 	 	r   SO_REUSEPORTzNo SO_REUSEPORTc                    t          | j                  | j                            fddd          }| j                            |          }|                     t          |j                  d           |j        d         }|                     |                    t          j
        t          j                             |                                 t          j        | j                   t          | j                  | j                            fdddd          }| j                            |          }|                     t          |j                  d           |j        d         }|                     |                    t          j
        t          j                             |                                 d S )Nc                       S r   r   r  s   r   r1  zCEventLoopTestsMixin.test_create_server_reuse_port.<locals>.<lambda>l      E r   r9  r   r   c                       S r   r   r  s   r   r1  zCEventLoopTestsMixin.test_create_server_reuse_port.<locals>.<lambda>y  rB  r   T)
reuse_port)rq   r2   r  r1   r   re   r+  r   
getsockoptr5  
SOL_SOCKETr?  rA   r   r   r   )r7   r  r/  r  r  s       @r   test_create_server_reuse_portz1EventLoopTestsMixin.test_create_server_reuse_porth  s   	""I##MMM9a) )--a00V^,,a000~a OO!6#68 8	9 	9 	9 	ty)))	""I##MMM9aD $ : :--a00V^,,a000~a OO!6#68 8	9 	9 	9 	r   c                     t          j                    |                     fd            | j        j        |fi |}| j                            |          }|fS )Nc                  j    t           j                                       ot          j                   S r   )rU  pathexistsunlink)rJ  s   r   r1  z7EventLoopTestsMixin._make_unix_server.<locals>.<lambda>  s"    t 4 4 H4 r   )r   gen_unix_socket_pathr  r2   create_unix_serverr1   )r7   factoryr  r  r/  rJ  s        @r   _make_unix_serverz%EventLoopTestsMixin._make_unix_server  sj    .00HHHHIII(DI($AA&AA--a00t|r   c                 "   t          | j                  |                     fd          \  }}|                     t	          |j                  d           t          j        t          j                  }|                    |           |	                    d           | j        
                    j                   |                     dj                   t          j        | j        fd           |                     dj                   j                                         | j        
                    j                   |                     dj                   |                                 |                                 d S )	Nr{  c                       S r   r   r  s   r   r1  z=EventLoopTestsMixin.test_create_unix_server.<locals>.<lambda>  s    e r   r   r:  r]   c                       j         dk    S r   r<  r  s   r   r1  z=EventLoopTestsMixin.test_create_unix_server.<locals>.<lambda>  r=  r   r   rm   )rq   r2   rP  r   re   r+  r5  AF_UNIXr  r  r1   rP   rM   r   r:  rN   rL   rA   rQ   )r7   r/  rJ  r  r  s       @r   test_create_unix_serverz+EventLoopTestsMixin.test_create_unix_server  sV   TY'''--mmmm<<V^,,a000v~..tv	$$U_555ek222TY(@(@(@(@AAAEL))) 		$$UZ0005;/// 	 	r   rT  zNo UNIX Socketsc                 h   t          | j                  t          j                    }|5  | j                            fdd|          }|                     t
          d          5  | j                            |           d d d            n# 1 swxY w Y   d d d            d S # 1 swxY w Y   d S )Nr{  c                       S r   r   r  s   r   r1  zOEventLoopTestsMixin.test_create_unix_server_path_socket_error.<locals>.<lambda>  s    U r   z/testr  z3path and sock can not be specified at the same time)rq   r2   r5  rN  r  rQ  r1   )r7   r  r  r  s      @r   )test_create_unix_server_path_socket_errorz=EventLoopTestsMixin.test_create_unix_server_path_socket_error  s6   TY'''} 	0 	0	,,]]]]G$,OOA''
);< < 0 0 	,,Q///0 0 0 0 0 0 0 0 0 0 0 0 0 0 0	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0s5   <B'(BB'B	B'B	B''B+.B+c                     t          j        t           j                  }|xj        t           j        z  c_        |                    ||           |S r   )r  
SSLContextPROTOCOL_TLS_SERVERoptionsOP_NO_SSLv2load_cert_chain)r7   certfilekeyfile
sslcontexts       r   _create_ssl_contextz'EventLoopTestsMixin._create_ssl_context  sF    ^C$;<<
co-""8W555r   c                    |                      ||          }| j                            |dd|          }| j                            |          }|j        d         }|                                \  }}	|                     |d           |||	fS )Nr  r   r  )rc  r2   r  r1   r+  r  r   )
r7   rO  r`  ra  rb  r  r/  r  r  r  s
             r   _make_ssl_serverz$EventLoopTestsMixin._make_ssl_server  s    --h@@
I##G[!#LL--a00~a %%''
d{+++tT!!r   c                 \    |                      ||          }|                     ||          S )Nr  )rc  rP  )r7   rO  r`  ra  rb  s        r   _make_ssl_unix_serverz)EventLoopTestsMixin._make_ssl_unix_server  s0    --h@@
%%g:%>>>r   c                 n   t          | j                  |                     fdt          j        t          j                  \  }}}| j                            t          ||t          j                              }| j        	                    |          \  }}|
                    d           | j        	                    j                   |                     dj                   t          j        | j        fd           |                     dj                   |                     |||f           j                                         | j        	                    j                   |                     d	j                   |                                 |                                 d S )
Nr{  c                       S r   r   r  s   r   r1  z<EventLoopTestsMixin.test_create_server_ssl.<locals>.<lambda>  rB  r   r  r:  r]   c                       j         dk    S r   r<  r  s   r   r1  z<EventLoopTestsMixin.test_create_server_ssl.<locals>.<lambda>  r=  r   r   r  rm   )rq   r2   re  r   ONLYCERTONLYKEYr  rH   r  r1   rt   rP   r   rM   r:  rN   r  rL   rA   rQ   )r7   r/  r  r  f_cr  rv  r  s          @r   test_create_server_sslz*EventLoopTestsMixin.test_create_server_ssl  s   TY'''!22MMM:.
0BD Dd i))+tT.8.J.L.L * N NY11#66
V	$$U_555ek222TY(@(@(@(@AAAEL))) 	!!&D$<!@@@ 		$$UZ0005;/// 	 	r   c                 :   t          | j                  |                     fdt          j        t          j                  \  }}| j                            t          |t          j                    d          }| j        	                    |          \  }}|
                    d           | j        	                    j                   |                     dj                   t          j        | j        fd           |                     dj                   j                                         | j        	                    j                   |                     d	j                   |                                 |                                 d S )
Nr{  c                       S r   r   r  s   r   r1  zAEventLoopTestsMixin.test_create_unix_server_ssl.<locals>.<lambda>  rB  r   r  r  r  r:  r]   c                       j         dk    S r   r<  r  s   r   r1  zAEventLoopTestsMixin.test_create_unix_server_ssl.<locals>.<lambda>  r=  r   r   rm   )rq   r2   rg  r   rk  rl  r  rH   r  r1   rt   rP   r   rM   r:  rN   rL   rA   rQ   )r7   r/  rJ  rm  r  rv  r  s         @r   test_create_unix_server_sslz/EventLoopTestsMixin.test_create_unix_server_ssl  sr    TY'''11MMM:.
0BD D i..:#?#A#A /     Y11#66
V	$$U_555ek222TY(@(@(@(@AAAEL))) 		$$UZ0005;/// 	 	r   c                    t          | j                  |                     fdt          j                  \  }}}t          j        t
          j                  }|xj        t
          j	        z  c_        t
          j
        |_        t          |d          rd|_        | j                            t           |||          }t          j                            | j        d          5  t          j                    5  |                     t
          j        d          5  | j                            |           d d d            n# 1 swxY w Y   d d d            n# 1 swxY w Y   t          j        | j                   d d d            n# 1 swxY w Y   |                     j                   |                                 d S )Nr{  c                       S r   r   r  s   r   r1  zJEventLoopTestsMixin.test_create_server_ssl_verify_failed.<locals>.<lambda>
  rB  r   check_hostnameTr  call_exception_handler(?i)certificate.verify.failed)rq   r2   re  r   SIGNED_CERTFILEr  r[  PROTOCOL_TLS_CLIENTr]  r^  CERT_REQUIREDverify_moder  rv  r  r   r  objectr  r  r  r1   r   assertIsNonerL   rA   r7   r/  r  r  sslcontext_clientrm  r  s         @r   $test_create_server_ssl_verify_failedz8EventLoopTestsMixin.test_create_server_ssl_verify_failed  sX   TY'''!22MMM:57 7d  N3+BCC!!S_4!!(+(9%$&677 	4/3, i))'4.? * A AZty*BCC 	. 	.*,, 6 6++CL,KM M 6 6I005556 6 6 6 6 6 6 6 6 6 6 6 6 6 66 6 6 6 6 6 6 6 6 6 6 6 6 6 6 "49---	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	%/***sZ   &F	:!EE6EEE	E
EF	E	F	 E	!F		FFc                    t          | j                  |                     fdt          j                  \  }}t          j        t
          j                  }|xj        t
          j	        z  c_        t
          j
        |_        t          |d          rd|_        | j                            t           ||d          }t          j                            | j        d          5  t          j                    5  |                     t
          j        d          5  | j                            |           d d d            n# 1 swxY w Y   d d d            n# 1 swxY w Y   t          j        | j                   d d d            n# 1 swxY w Y   |                     j                   |                                 d S )	Nr{  c                       S r   r   r  s   r   r1  zOEventLoopTestsMixin.test_create_unix_server_ssl_verify_failed.<locals>.<lambda>(  rB  r   rv  Tinvalidrq  rw  rx  )rq   r2   rg  r   ry  r  r[  rz  r]  r^  r{  r|  r  rv  r  r   r  r}  r  r  r  r1   r   r~  rL   rA   )r7   r/  rJ  r  rm  r  s        @r   )test_create_unix_server_ssl_verify_failedz=EventLoopTestsMixin.test_create_unix_server_ssl_verify_failed#  sZ    TY'''11MMM:57 7  N3+BCC!!S_4!!(+(9%$&677 	4/3, i..w3D?H / J J Zty*BCC 	. 	.*,, 6 6++CL,KM M 6 6I005556 6 6 6 6 6 6 6 6 6 6 6 6 6 66 6 6 6 6 6 6 6 6 6 6 6 6 6 6 "49---	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	%/***sZ   %F9!EE5EEEE	EFE	FE	 FFFc                    t          | j                  |                     fdt          j                  \  }}}t          j        t
          j                  }|xj        t
          j	        z  c_        t
          j
        |_        |                    t          j                   t          |d          rd|_        | j                            t           |||          }t"          j                            | j        d          5  t          j                    5  |                     t
          j        d          5  | j                            |           d d d            n# 1 swxY w Y   d d d            n# 1 swxY w Y   d d d            n# 1 swxY w Y   |                     j                   |                                 d S )	Nr{  c                       S r   r   r  s   r   r1  zIEventLoopTestsMixin.test_create_server_ssl_match_failed.<locals>.<lambda>E  rB  r   r  rv  Tr  rw  z=IP address mismatch, certificate is not valid for '127.0.0.1')rq   r2   re  r   ry  r  r[  rz  r]  r^  r{  r|  load_verify_locations
SIGNING_CAr  rv  r  r   r  r}  r  r  CertificateErrorr1   r~  rL   rA   r  s         @r   #test_create_server_ssl_match_failedz7EventLoopTestsMixin.test_create_server_ssl_match_failedA  sj   TY'''!22MMM:57 7d  N3+BCC!!S_4!!(+(9%//( 	0 	* 	* 	*$&677 	4/3, i))'4.? * A AZty*BCC 	6 	6*,, 6 6++,&' ' 6 6 I00555	6 6 6 6 6 6 6 6 6 6 6 6 6 6 66 6 6 6 6 6 6 6 6 6 6 6 6 6 6	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	%/***sZ   F!E9;E"E9"E&&E9)E&*E9-F9E=	=F E=	FFFc                    t          | j                  |                     fdt          j                  \  }}t          j        t
          j                  }|xj        t
          j	        z  c_        t
          j
        |_        |                    t          j                   t          |d          rd|_        | j                            t           ||d          }| j                            |          \  }}| j                            j                   j                                         |                                 |                                 | j                            j                   d S )Nr{  c                       S r   r   r  s   r   r1  zJEventLoopTestsMixin.test_create_unix_server_ssl_verified.<locals>.<lambda>d  rB  r   r  rv  Tr  rq  )rq   r2   rg  r   ry  r  r[  rz  r]  r^  r{  r|  r  r  r  rv  r  r1   rP   rL   rA   rQ   )r7   r/  rJ  r  rm  r  rv  r  s          @r   $test_create_unix_server_ssl_verifiedz8EventLoopTestsMixin.test_create_unix_server_ssl_verified_  sW    TY'''11MMM:57 7  N3+BCC!!S_4!!(+(9%//z7L/MMM$&677 	4/3, i..w3D?J / L L Y11#66
	$$U_555 		$$UZ00000r   c                 H   t          | j                  |                     fdt          j                  \  }}}t          j        t
          j                  }|xj        t
          j	        z  c_        t
          j
        |_        |                    t          j                   t          |d          rd|_        | j                            t           |||d          }| j                            |          \  }}| j                            j                   |                     |||ft          j                   j                                         |                                 |                                 | j                            j                   d S )	Nr{  c                       S r   r   r  s   r   r1  zEEventLoopTestsMixin.test_create_server_ssl_verified.<locals>.<lambda>~  rB  r   r  rv  Tr  rq  )r  r  )rq   r2   re  r   ry  r  r[  rz  r]  r^  r{  r|  r  r  r  rv  r  r1   rP   r  PEERCERTrL   rA   rQ   )	r7   r/  r  r  r  rm  r  rv  r  s	           @r   test_create_server_ssl_verifiedz3EventLoopTestsMixin.test_create_server_ssl_verifiedz  s   TY'''!22MMM:57 7d  N3+BCC!!S_4!!(+(9%//z7L/MMM$&677 	4/3, i))'4.?:E * G G Y11#66
	$$U_555 	!!&D$<+5+> 	" 	@ 	@ 	@ 		$$UZ00000r   c                   	 | j                                         	 G 	fddt                    }t          j        d          }| j                             ||          }| j                             |          }|j        d         }|                     |                                |                                           |	                                \  }}|                     |d           t          j                    }|
                    d|f           |                    d           |                                 |                                 d S )	Nc                   "     e Zd Z fdZ xZS )@EventLoopTestsMixin.test_create_server_sock.<locals>.TestMyProtoc                 t    t                                          |                               |            d S r   rs   ra   r_   )r7   rL   ru   r  s     r   ra   zPEventLoopTestsMixin.test_create_server_sock.<locals>.TestMyProto.connection_made  s5    ''	222  &&&&&r   rv   )ru   r  s   @r   TestMyProtor    s>        ' ' ' ' ' ' ' ' ' 'r   r  r9  r   rX  r   r9  r  r:  )r2   rO   rq   r5  r  r1   r+  r   r*  r  r  r9   rA   )
r7   r  sock_obr  r/  r  r  r  r  r  s
            @r   test_create_server_sockz+EventLoopTestsMixin.test_create_server_sock  s<   	''))	' 	' 	' 	' 	' 	' 	'' 	' 	' 	'
 &~66I##Kg#>>--a00~a (8(8999%%''
dy)))T*+++Fr   c                 D   t          j        d          }| j                            t          |          }| j                            |          }|j        d         }|                                \  }}| j                            t          ||          }|                     t                    5 }| j                            |           d d d            n# 1 swxY w Y   | 	                    |j
        j        t          j                   |                                 d S )Nr  rX  r   r  r  )r5  r  r2   rq   r1   r+  r  r   r  r   r  r  r  rA   )r7   r  r  r/  r  r  r  r  s           r   test_create_server_addr_in_usez2EventLoopTestsMixin.test_create_server_addr_in_use  s)   &~66I##G'#::--a00~a %%''
dI##G$T#BBw'' 	,2I((+++	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	,+U-=>>>s   0CCCzIPv6 not supported or enabledc                   	 | j                                         	 G 	fddt                    }d}	 	 t          j                    }| j                             |d |          }| j                             |          }nH# t          $ r;}|j        t          j	        k    r |dz  }| 
                    d|           Y d }~ d }~ww xY wt          j                    }|                    d|f           |                    d	           | j                             	          }|j                                         |                                 | j                                         	t          j        t          j                  }|                    d
|f           |                    d	           | j                             	          }|j                                         |                                 |                                 d S )Nc                   "     e Zd Z fdZ xZS )FEventLoopTestsMixin.test_create_server_dual_stack.<locals>.TestMyProtoc                 t    t                                          |                               |            d S r   r  )r7   rL   ru   f_protos     r   ra   zVEventLoopTestsMixin.test_create_server_dual_stack.<locals>.TestMyProto.connection_made  s5    ''	222""4(((((r   rv   )ru   r  s   @r   r  r    s>        ) ) ) ) ) ) ) ) ) )r   r  r   Tr  r   r   r  r:  r  )r2   rO   rq   r   r  r  r1   r  r  r  r   r5  r  r9   rL   rA   r  )
r7   r  	try_countr  r  r/  exr  r  r  s
            @r   test_create_server_dual_stackz1EventLoopTestsMixin.test_create_server_dual_stack  s   )))++	) 	) 	) 	) 	) 	) 	)' 	) 	) 	)
 		$577I++Kd+NN55a88     8u///NI++Ay999HHHH T*+++F	,,W55)))++v//t}%%%F	,,W55s   A
A? ?
C	0B?>B??Cc                 &   | j                             t          dd          }| j                             |          }|j        d         }|                                \  }}t          j                    }|                    d|f           |                    d           |	                                 |	                                 t          j                    }| 
                    t          |j        d|f           |	                                 d S )Nr9  r   r  r:  )r2   r  rq   r1   r+  r  r5  r  r9   rA   r   ConnectionRefusedError)r7   r  r/  r  r  r  r  s          r   test_server_closez%EventLoopTestsMixin.test_server_close  s    I##GY::--a00~a %%''
dT*+++F"FN[$4G	I 	I 	Ir   c                    
  G  fddt                     } j                            |||          } j                            |          \  }|                    d          }t          j        |t
          j        t
          j        z            \  }} 	                    |t          j                    	                    |                                dj                                        j        |            j                             fd||f          } j                            |          \  }	
 	                    |	t          j                    	                    
t                                           d
j                                        
j        |	           |	                    d           t#          j         j        fd	                                d
j                   t#          j         j        
fd                                d
j                                        |	                    d                     |	                                  j                            
j                                        d
j                   j                                         d S )Nc                   ,     e Zd Z fdZ fdZ xZS )OEventLoopTestsMixin._test_create_datagram_endpoint.<locals>.TestMyDatagramProtoc                 V    t                                          j                   d S rz  )rs   rS   r2   )
inner_selfru   r7   s    r   rS   zXEventLoopTestsMixin._test_create_datagram_endpoint.<locals>.TestMyDatagramProto.__init__  s&      di 00000r   c                     t                                          ||           | j                            d|z   |           d S )Ns   resp:)rs   r   rL   sendto)r7   rg   r   ru   s      r   r   zaEventLoopTestsMixin._test_create_datagram_endpoint.<locals>.TestMyDatagramProto.datagram_received  s?    ))$555%%htmT:::::r   )rD   rE   rF   rS   r   rw   )ru   r7   s   @r   TestMyDatagramProtor    sW        1 1 1 1 1 1; ; ; ; ; ; ; ; ;r   r  )r  r  rk  r   c                  .    t           j                  S rz  rz   r2   r@   s   r   r1  zDEventLoopTestsMixin._test_create_datagram_endpoint.<locals>.<lambda>      O333 r   )remote_addrr:  c                       j         S r   r<  )r/  s   r   r1  zDEventLoopTestsMixin._test_create_datagram_endpoint.<locals>.<lambda>  	     r   r   c                       j         S r   r<  )r  s   r   r1  zDEventLoopTestsMixin._test_create_datagram_endpoint.<locals>.<lambda>  r  r      rm   )rz   r2   create_datagram_endpointr1   rq  r5  getnameinfoNI_NUMERICHOSTNI_NUMERICSERVrl  r   rm  r   rM   ro  rL   r  r   r:  rN   rp  rA   rQ   )r7   r  r  r  r  s_transportrk  r  r  rL   r  r/  s   `         @@r   _test_create_datagram_endpointz2EventLoopTestsMixin._test_create_datagram_endpoint  s   	; 	; 	; 	; 	; 	; 	;/ 	; 	; 	; y11Jv 2 G G"i::4@@V--j99'f+F,AAC C
d 	k7+<===f&9:::555f&444y113333t 2 & & !I88>>	6i):;;;fo666555f&	222   TY(=(=(=(=>>>FM***TY(=(=(=(=>>> 	FM*** 	Y55jAABBB 		$$V[1116<000     r   c                 F    |                      dt          j                   d S )Nr  )r  r5  r  r@   s    r   test_create_datagram_endpointz1EventLoopTestsMixin.test_create_datagram_endpoint*  s!    ++,<fnMMMMMr   c                 F    |                      dt          j                   d S )N)r  r   )r  r5  r  r@   s    r   "test_create_datagram_endpoint_ipv6z6EventLoopTestsMixin.test_create_datagram_endpoint_ipv6-  s     ++JHHHHHr   c                     d }d} j                               j         j        |dt          j        i          }|D ]R\  }}}}}	 t          j        |||          }|                    d           |                    |            n#  Y PxY w                     d            j                              fd|          }	 j                             |	          \  }
} 	                    |
t          j                    	                    |t                     |
                                  j                             |j                   d S )Nr  type)r  r  r  FzCan not create socket.c                  .    t           j                  S rz  r  r@   s   r   r1  zHEventLoopTestsMixin.test_create_datagram_endpoint_sock.<locals>.<lambda>D  r  r   rX  )r2   r1   r  r5  
SOCK_DGRAMr7  bindfailr  rl  r   rm  rz   rA   rQ   )r7   r  local_addressinfosr  r  r  cnamer  r  ru  rv  s   `           r   "test_create_datagram_endpoint_sockz6EventLoopTestsMixin.test_create_datagram_endpoint_sock1  sl   (	,,!DI!8%+%68 89 9 49 
	0 
	0/FD%}FUKKK  '''		'"""  II.///I..3333$ / @ @--a00Bb'"3444b/222



	$$RW-----s   ABBc                    | j          G fddt          j                  }d } |            }                                        ||                    \  }}|                                } |            }                                        ||                    \  }}	|                                }
 |            }                                        ||                    \  }}|                                }|                                 |                    d|
           |                                         |		                                          d           |                    d|           |                                         |	                                          d           |                    d|                               t          j
        d	                     |                    d
|           |                                         |	                                          d
           |                                 |                                 d S )Nc                   $    e Zd ZdZd Z fdZdS )QEventLoopTestsMixin.test_datagram_send_to_non_listening_address.<locals>.ProtocolNc                 :    | j                             |           d S r   )_received_datagramr_   r   s      r   r   zcEventLoopTestsMixin.test_datagram_send_to_non_listening_address.<locals>.Protocol.datagram_receivedY  s    '22488888r   c                    K                                    | _        t          j        | j        d           d {V }d | _        |S )Nr   )rO   r  r   wait_for)r7   resultr2   s     r   wait_for_datagram_receivedzlEventLoopTestsMixin.test_datagram_send_to_non_listening_address.<locals>.Protocol.wait_for_datagram_received\  sO      *.*<*<*>*>'&/0GLLLLLLLL*.'r   )rD   rE   rF   r  r   r  r{  s   r   rn  r  U  sC        !%9 9 9      r   rn  c                      t          j         t           j        t           j                  } |                     d           |                     d           | S )NFr  )r5  r  r  r7  r  rX  s    r   create_socketzVEventLoopTestsMixin.test_datagram_send_to_non_listening_address.<locals>.create_socketb  sD    =1BCCDU###II&'''Kr   rX     a)r      b   cr      d)r2   r   DatagramProtocolr1   r  r  abortr  r   r  r   rA   )r7   rn  r  socket_1transport_1
protocol_1addr_1socket_2transport_2
protocol_2addr_2socket_3transport_3
protocol_3addr_3r2   s                  @r   +test_datagram_send_to_non_listening_addressz?EventLoopTestsMixin.test_datagram_send_to_non_listening_addressK  s    y	 	 	 	 	 	 	w/ 	 	 		 	 	 !=??"&"9"9))()BB#
 #
Z %%'' =??"&"9"9))()BB#
 #
Z %%'' !=??"&"9"9))()BB#
 #
Z %%''4f---001133
 
	 	 	 	4f---001133
 
	 	 	
 	4f---a 0 0111 	4f---001133
 
	 	 	 	r   c                    |                                  }t          |t          j                  s)|                                 |                     d           |                     d|j                   |                                 |                     d|j                   |                     |j	                   |                     |j
                   d S )Nz#loop is not a BaseSelectorEventLoopr   r   )r   
isinstancer	   BaseSelectorEventLooprA   skipTestr   _internal_fdsr~  _csock_ssockrR   s     r   test_internal_fdsz%EventLoopTestsMixin.test_internal_fds  s    %%''$ EFF 	AJJLLLMM?@@@D.///

D.///$+&&&$+&&&&&r   r   zDon't support pipes for Windowsc                 H    t           j                  t          j                    \  }}t	          j        |dd           fd} j                             |                       t          j        |d           t          j	         j        fd            
                    dj                   t          j        |d           t          j	         j        fd	            
                    d
dgj                    
                    dj                   t          j        |            j                            j                    
                    g dj                                        j                            d                     d S )Nr{  rbr%  c                  ,  K   j                             fd           d {V \  } }                    |                               | j                                       ddgj                                       dj                   d S )Nc                       S r   r   r  s   r   r1  zEEventLoopTestsMixin.test_read_pipe.<locals>.connect.<locals>.<lambda>  s     r   rK   r]   r   r2   connect_read_pipero  rL   r   rM   rN   )r  ppipeobjr  r7   s     r   r  z3EventLoopTestsMixin.test_read_pipe.<locals>.connect  s      44w( ( ( ( ( ( ( (DAqMM!U###MM!U_---i5u{CCCQ-----r      1c                       j         dk    S rG  r<  r  s   r   r1  z4EventLoopTestsMixin.test_read_pipe.<locals>.<lambda>      0A r   r      2345c                       j         dk    S Nr   r<  r  s   r   r1  z4EventLoopTestsMixin.test_read_pipe.<locals>.<lambda>  r  r   rK   r]   r   rK   r]   rj   rm   pipe)r   r2   rU  r  ioopenr1   rt   r   r:  r   rN   rM   rA   rQ   rp  rL   rq  )r7   rpipewpiper  r  r  s   `   @@r   test_read_pipez"EventLoopTestsMixin.test_read_pipe  s     TY///wyyu'%t,,	. 	. 	. 	. 	. 	. 	. 		$$WWYY///
TY(A(A(A(ABBBEL)))
   TY(A(A(A(ABBB)[15;???EL)))
	$$UZ000555u{	D 	D 	D 	U_;;FCCDDDDDr   c                 r  	
 |                                  t                    t                    
t          j                    \  }}t          j        |dd          t          j        |ddd          		
fd}                     |                      \  }}                                 | 	                    dt          |                     | 	                    dt          |                                                      	                                 d |_        d |_        d S )	Nr{  r  r%  r;  zutf-8)encodingc                     K                        fd           d {V \  } }                    fd           d {V \  }}| |fS )Nc                       S r   r   
read_protos   r   r1  zSEventLoopTestsMixin.test_unclosed_pipe_transport.<locals>.connect.<locals>.<lambda>  s    
 r   c                       S r   r   write_protos   r   r1  zSEventLoopTestsMixin.test_unclosed_pipe_transport.<locals>.connect.<locals>.<lambda>  s     r   )r  connect_write_pipe)read_transportr  write_transportr2   r  rpipeobjwpipeobjr  s      r   r  zAEventLoopTestsMixin.test_unclosed_pipe_transport.<locals>.connect  s      &*&<&<""""H'. '. !. !. !. !. !. !.NA'+'>'>####X(/ (/ "/ "/ "/ "/ "/ "/OQ!?22r   r  )r   r   r   rU  r  r  r  r1   rA   r  repr_pipe)r7   r  r  r  r  r  r2   r  r  r  r  s         @@@@@r   test_unclosed_pipe_transportz0EventLoopTestsMixin.test_unclosed_pipe_transport  s@    %%''$$///
&D111wyyu75$--75#tg>>>	3 	3 	3 	3 	3 	3 	3 	3 	3 +/*A*A''))*L*L'

 	fd>22333fd?33444 	# $r   openptyzneed os.openpty()c                 z    t           j                  t          j                    \  }}t	          j        |dd           fd} j                             |                       t          j        |d           t          j	         j        fd            
                    dj                   t          j        |d           t          j	         j        fd	            
                    d
dgj                    
                    dj                   t          j        |           j                                          j                            j                    
                    g dj                                        j                            d                     d S )Nr{  r  r   c                  ,  K   j                             fd           d {V \  } }                    |                               | j                                       ddgj                                       dj                   d S )Nc                       S r   r   r  s   r   r1  zKEventLoopTestsMixin.test_read_pty_output.<locals>.connect.<locals>.<lambda>  s    U r   rK   r]   r   r  )r  r  master_read_objr  r7   s     r   r  z9EventLoopTestsMixin.test_read_pty_output.<locals>.connect  s      44]]]]5DF F F F F F F FDAqMM!U###MM!U_---i5u{CCCQ-----r   r  c                       j         S r   r<  r  s   r   r1  z:EventLoopTestsMixin.test_read_pty_output.<locals>.<lambda>  s	     r   r   r   c                       j         dk    S r  r<  r  s   r   r1  z:EventLoopTestsMixin.test_read_pty_output.<locals>.<lambda>  r  r   rK   r]   r   r  r  )r   r2   rU  r  r  r  r1   rt   r   r:  r   rN   rM   rA   rL   rQ   rp  rq  )r7   masterslaver  r  r  s   `   @@r   test_read_pty_outputz(EventLoopTestsMixin.test_read_pty_output  s     TY///
'&$22	. 	. 	. 	. 	. 	. 	. 		$$WWYY///
TY(<(<(<(<===EL)))
   TY(A(A(A(ABBB)[15;???EL)))
	$$UZ000555u{	D 	D 	D 	U_;;FCCDDDDDr   c                 F  	 t          j                    \  	}t          j        |dd          }t	          | j                  | j                            fd|          }| j                            |          \  }}|                     |           |                     |j	                   | 
                    dj                   |                    d           t                      	fdt          j        | j        fd           | 
                    d           |                    d	           t          j        | j        fd
           | 
                    d           | 
                    dj                   t          j        	           |                     j	                            d                     j	                                         | j                            j                   | 
                    dj                   d S )Nwbr%  r{  c                       S r   r   r  s   r   r1  z5EventLoopTestsMixin.test_write_pipe.<locals>.<lambda>      u r   r]   r  c                 V    t          j        d          }| |z  } t          |           S r$  rU  rB  re   )rg   chunkr  s     r   r-  z3EventLoopTestsMixin.test_write_pipe.<locals>.reader  s)    GE4((EEMDt99r   c                  "                dk    S rG  r   rg   r-  s   r   r1  z5EventLoopTestsMixin.test_write_pipe.<locals>.<lambda>      t0A r   r   c                  "                dk    S r  r   r-  s   r   r1  z5EventLoopTestsMixin.test_write_pipe.<locals>.<lambda>"  r.  r      12345r  rm   )rU  r  r  r  r   r2   r  r1   ro  rL   r   rM   rt   r8  r   r:  rA   rp  rq  rQ   )
r7   r  r  r  rL   r  rg   r  r-  r  s
         @@@@r   test_write_pipez#EventLoopTestsMixin.test_write_pipe	  s    wyyu'%t,, di000)..}}}}gFFy33G<<	1ai111ek222{{	 	 	 	 	
 	TY(A(A(A(A(ABBBt$$$   TY(A(A(A(A(ABBB4(((ek222
 	U_;;FCCDDD 		$$UZ0005;/////r   c                 >   t          j                    \  }}|                    d           t          j        |                                dd          }t          | j                  | j                            fd|          }| j        	                    |          \  }}| 
                    |           | 
                    |j                   |                     dj                   |                    d           | j        	                    | j                            |d                    }|                     d|           |                                 | j        	                    j                   |                     dj                   d S )	NFr&  r%  r{  c                       S r   r   r  s   r   r1  zIEventLoopTestsMixin.test_write_pipe_disconnect_on_close.<locals>.<lambda>8  r(  r   r]   r  rm   )r5  r6  r7  r  r  detachr   r2   r  r1   ro  rL   r   rM   rt   	sock_recvrA   rQ   )	r7   rsockwsockr  r  rL   r  rg   r  s	           @r   #test_write_pipe_disconnect_on_closez7EventLoopTestsMixin.test_write_pipe_disconnect_on_close0  sb    (**u%   '%,,..$55 di000)..}}}}gFFy33G<<	1ai111ek222y++DI,?,?t,L,LMMt$$$	$$UZ0005;/////r   r   r4  c                 v  	 t          j                    \  }t          j        |dd          }t	          | j                  | j                            fd|          }| j                            |          \  }}|                     |           |                     |j	                   | 
                    dj                   |                    d           t                      fd	t          j        | j        	fdt           j        	           | 
                    d           |                    d
           t          j        | j        	fdt           j        	           | 
                    d           | 
                    dj                   t          j                   |                     j	                            d                     j	                                         | j                            j                   | 
                    dj                   d S )Nr&  r   r{  c                       S r   r   r  s   r   r1  z4EventLoopTestsMixin.test_write_pty.<locals>.<lambda>R  r(  r   r]   r  c                 V    t          j        d          }| |z  } t          |           S r$  r*  rg   r+  r"  s     r   r-  z2EventLoopTestsMixin.test_write_pty.<locals>.reader[  )    GFD))EEMDt99r   c                  "                dk    S rG  r   r-  s   r   r1  z4EventLoopTestsMixin.test_write_pty.<locals>.<lambda>`  r.  r   timeoutr   c                  "                dk    S r  r   r-  s   r   r1  z4EventLoopTestsMixin.test_write_pty.<locals>.<lambda>e  r.  r   r0  r  rm   )rU  r  r  r  r   r2   r  r1   ro  rL   r   rM   rt   r8  r   r:  r   SHORT_TIMEOUTrA   rp  rq  rQ   )
r7   r#  slave_write_objr  rL   r  rg   r"  r  r-  s
         @@@@r   test_write_ptyz"EventLoopTestsMixin.test_write_ptyG  s(    
'%q11 di000)..}}}}oNNy33G<<	1ai111ek222{{	 	 	 	 	
 	TY(A(A(A(A(A%,%:	< 	< 	< 	<t$$$   TY(A(A(A(A(A%,%:	< 	< 	< 	<4(((ek222
 	U_;;FCCDDD 		$$UZ0005;/////r   c                 	  
 t          j                    \  }t          j        |          }t          j        |           t          j        |dd          }t          | j                  | j        	                    fd|          }| j        
                    |          \  }}|                     |           |                     |j                   |                     ddgj                   |                     dj                   t          j        |dd          }t!          | j                  | j                            fd|          }| j        
                    |          \  }	}|                     |           |                     |	j                   |                     dj                   t%                      
fd	|	                    d
           t)          j        | j        
fdt,          j                   |                     d

           |                     ddgj                   |                     dj                   t          j        d           t)          j        | j        fdt,          j                   |                     ddgj                   |                     dj                   |                     dj                   |	                    d           t)          j        | j        
fdt,          j                   |                     d
           |                     ddgj                   |                     dj                   t          j        d           t)          j        | j        fdt,          j                   |                     ddgj                   |                     dj                   |                     dj                   t          j                   |                                 | j        
                    j                   |                     g dj                   |	                                 | j        
                    j                   |                     dj                   d S )Nr  r   r{  c                       S r   r   r  s   r   r1  z<EventLoopTestsMixin.test_bidirectional_pty.<locals>.<lambda>  s    : r   rK   r]   r&  c                       S r   r   r  s   r   r1  z<EventLoopTestsMixin.test_bidirectional_pty.<locals>.<lambda>  s    [ r   c                 V    t          j        d          }| |z  } t          |           S r$  r*  r<  s     r   r-  z:EventLoopTestsMixin.test_bidirectional_pty.<locals>.reader  r=  r   r  c                  "                dk    S rG  r   r-  s   r   r1  z<EventLoopTestsMixin.test_bidirectional_pty.<locals>.<lambda>  r.  r   r?  r  c                       j         dk    S rG  r<  r  s   r   r1  z<EventLoopTestsMixin.test_bidirectional_pty.<locals>.<lambda>      
0AQ0F r   r   r   c                  "                dk    S r  r   r-  s   r   r1  z<EventLoopTestsMixin.test_bidirectional_pty.<locals>.<lambda>  r.  r   r0  s   bcdec                       j         dk    S r  r<  r  s   r   r1  z<EventLoopTestsMixin.test_bidirectional_pty.<locals>.<lambda>  rK  r   r   r  rm   )rU  r  dupttysetrawr  r  r   r2   r  r1   ro  rL   r   rM   rN   r   r  r8  rt   r   r:  r   rB  rA   rQ   )r7   
read_slavewrite_slaveslave_read_objread_connectr  r  rC  write_connectr  rg   r"  r  r-  r  s             @@@@@r   test_bidirectional_ptyz*EventLoopTestsMixin.test_bidirectional_ptyt  s     Z\\
fZ((
:T155$$)444
y223E3E3E3E3AC C I88FFa$$$nj&:;;;)[1:3CDDDJ-... '+tQ77&DI666	445H5H5H5H5DF F!Y99-HHa%%%o{'<===k&7888{{	 	 	 	 	
 	d###TY(A(A(A(A(A%,%:	< 	< 	< 	<t$$$)[1:3CDDDk&7888
TY(F(F(F(F%,%:	< 	< 	< 	<)[1:3CDDDJ-...k&7888g&&&TY(A(A(A(A(A%,%:	< 	< 	< 	<4((()[1:3CDDDk&7888
!!!TY(F(F(F(F%,%:	< 	< 	< 	<)[1:3CDDDJ-...k&7888
	$$Z_555555z7G	I 	I 	I 		$$[%5666;#455555r   c                     t          j                    \  }}|                    d            j                             j                            |d                    t          dd           }|                     |j                    fd} j                             |                      } j        	                                  
                    |                                d                                t          j        j                   |                     |j                    j                            |           |                                 |                                 d S )NFr   ovc                     K   	 j                             j                    d {V  d } n# t          j        $ r d} Y nw xY wj                                          n# j                                          w xY w| S )N	cancelled)r2   r   r  r   CancelledErrorr   )r  r  r7   s    r   mainz:EventLoopTestsMixin.test_prompt_cancellation.<locals>.main  s      !	##AH---  ) " " "!"
 	    	    Js&   '/ A  A A  AA   A;rZ  )r5  r6  r7  r2   r  r5  getattrr   pendingr   r   r  r   r   r[  r   r*  rA   )r7   r,  r;  rX  r\  r  r  s   `     @r   test_prompt_cancellationz,EventLoopTestsMixin.test_prompt_cancellation  sP    ""1	eI!!$)"5"5a";";<<Qd##>OOBJ'''
	 
	 
	 
	 
	 
	 I!!$$&&))	[111'0!(;;;>RZ(((	"""										r   c                 ,     fd} j         j        d j         _        | j         _        d } j                              |                                             j         j        d j         j         j         j        j        j        d           d S )Nc                  F    j         xj        dz  c_                       d S rG  )r2   _run_once_counter)orig_run_oncer7   s   r   	_run_oncez<EventLoopTestsMixin.test_timeout_rounding.<locals>._run_once  s(    I''1,''MOOOOOr   r   c                    K   t          j        d           d {V  t          j        d           d {V  t          j        d           d {V  t          j        d           d {V  t          j        d           d {V  d S )Nr`  g-C6?gư>g:0yE>g|=r   r   r   r   waitz7EventLoopTestsMixin.test_timeout_rounding.<locals>.wait  s      -%%%%%%%%%-%%%%%%%%%-%%%%%%%%%-%%%%%%%%%-&&&&&&&&&&&r      )clock_resolutionselector)	r2   rd  rb  r1   assertLessEqual_clock_resolution	_selectorru   rD   )r7   rd  rf  rc  s   `  @r   test_timeout_roundingz)EventLoopTestsMixin.test_timeout_rounding  s    	 	 	 	 	 	 	+&'	#'		' 	' 	' 		$$TTVV,,,
 	TY8"!%!<,6?A A	B 	B 	B 	B 	Br   c                    |                                  }d }t          j                    \  }}|                     |j                   |                     |j                   |                    ||           |                    ||           |                                 |                     |                    |                     |                     |	                    |                     d S )Nc                      d S r   r   r   r   r   r1  zCEventLoopTestsMixin.test_remove_fds_after_closing.<locals>.<lambda>      4 r   )
r   r5  r6  r  rA   r9  r@  r   r)  rA  r7   r2   r   r,  r;  s        r   test_remove_fds_after_closingz1EventLoopTestsMixin.test_remove_fds_after_closing  s    %%''< ""1      8$$$8$$$

++A..///++A../////r   c                    |                                  }d }t          j                    \  }}|                     |j                   |                     |j                   |                                 |                     t                    5  |                    ||           d d d            n# 1 swxY w Y   |                     t                    5  |                    ||           d d d            d S # 1 swxY w Y   d S )Nc                      d S r   r   r   r   r   r1  z@EventLoopTestsMixin.test_add_fds_after_closing.<locals>.<lambda>  rp  r   )	r   r5  r6  r  rA   r   r   r9  r@  rq  s        r   test_add_fds_after_closingz.EventLoopTestsMixin.test_add_fds_after_closing  sj   %%''< ""1      

|,, 	) 	)OOAx(((	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	)|,, 	) 	)OOAx(((	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	)s$   B33B7:B7C<<D D c                       fd} | j                   }                     t                    5   j                             |           d d d            d S # 1 swxY w Y   d S )Nc                 >   K   j                                          d S r   )r2   rA   r2   r7   s    r   
close_loopzEEventLoopTestsMixin.test_close_running_event_loop.<locals>.close_loop  s      IOOr   )r2   r   r   r1   )r7   ry  r  s   `  r   test_close_running_event_loopz1EventLoopTestsMixin.test_close_running_event_loop  s    	 	 	 	 	 z$)$$|,, 	/ 	/I((...	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/s   AA Ac                    | j                                          d }d } |            }|                     |j                   |                     t                    5  | j                                          d d d            n# 1 swxY w Y   |                     t                    5  | j                                         }| j                             |           d d d            n# 1 swxY w Y   |                     t                    5  | j                             |           d d d            n# 1 swxY w Y   |                     t                    5  | j         	                    |           d d d            n# 1 swxY w Y   |                     t                    5  | j         
                    d|           d d d            n# 1 swxY w Y   |                     t                    5  | j                             | j                                         dz   |           d d d            n# 1 swxY w Y   |                     t                    5  | j                             |           d d d            n# 1 swxY w Y   |                     t                    5  | j                             t          j        |           d d d            n# 1 swxY w Y   |                     t                    5  | j                             d |                                          }t'          |           d d d            d S # 1 swxY w Y   d S )Nc                  
   K   d S r   r   r   r   r   testz,EventLoopTestsMixin.test_close.<locals>.test  s      Dr   c                      dS NFr   r   r   r   r1  z0EventLoopTestsMixin.test_close.<locals>.<lambda>  s    u r   g      ?g        )r2   rA   r  r   r   r   rO   r1   r   r   r   call_atr   r  rO  rR  SIGTERMr  rC   next)r7   r}  funcr  futits         r   
test_closezEventLoopTestsMixin.test_close  s   		 	 	 }tvv
### |,, 	$ 	$I!!###	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$|,, 	. 	.)))++CI((---	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. |,, 	& 	&I%%%	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	&|,, 	1 	1I**4000	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1|,, 	, 	,I  d+++	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	,|,, 	; 	;Idinn..3T:::	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	;|,, 	( 	(I!!$'''	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	(|,, 	? 	?I((>>>	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? |,, 	 	**466@@BBBHHH	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	s   BBB)4C))C-0C-D55D9<D9FFF&GGG36H55H9<H9JJJ&&KKK==MMM)T)TN)NNr   )^rD   rE   rF   r   r   r   r   r   r   r   r  r  r  r!  r<  rC  unittest
skipUnlessr  rR  r[  rd  ri  rw  r  r   skip_unless_bind_unix_socketr  r  r  r  skipIfr  r  r  r  skip_if_tcp_blackholer  r  r  r  r  r  r   r  r1  r4  r6  r>  r5  rG  rP  rU  rY  rc  re  rg  rn  rs  r  r  r  r  r  r  r  IPV6_ENABLEDr  r  r  r  r  r  r  r  r    r!   r	  r  rU  r$  r1  r8  r   requires_mac_verrD  rV  r_  rm  rr  ru  rz  r  rw   rx   s   @r   r   r     s
       ' ' ' ' '
    E E E$B B B> > >	3 	3 	3	8 	8 	86 6 6.6 6 6> > >! ! !(0 0 08% % %( X33\BB)I )I CB)IV X33\BBX5524 4$ $4 4 CB$  X33\BBX5524 4$ $4 4 CB$"	 	 	 	7 7 7 /G G 0/G ;?&*R? ? ? ?B 8<15
 
 
 
 CG#K #K #K #KJ X_SD[/22E E 32E /X_SD[/22E E 32 0/E	 	 	 (, , )(,* (, , )(,(E E E46 46 46 46l X_SD[/22J J 32J/ / / TZ,--5 5 .-56M M MA A A" " "H X88:KLL  ML2   /  0/6 X335FGG0 0 HG0   	" 	" 	" 	"? ? ? ? X_SD[/22  32> /X_SD[/22  32 0/: X_SD[/22  328 /X_SD[/22  32 0/8 X_SD[/22  32: /X_SD[/221 1 32 0/12 X_SD[/221 1 321:  .   X35TUU& & VU&P (  )($.! .! .!`N N N X35TUUI I VUI. . .4H H HT
' 
' 
' X0:< <E E< <E@ X0:< <% %< <%@ X0:< <XY//1DEEE E FE< <EB X0:< <#0 #0< <#0J X0:< <0 0< <0* X0:< <XY//1DEE Wb!$$%0 %0 %$ FE< <%0N X0:< <XY//1DEE Wb!$$D6 D6 %$ FE< <D6L  @B B B2
0 
0 
0
) 
) 
)/ / /" " " " " " "r   r   c                       e Zd Zd Zd Zd Zd Zd Zd Zd Z	d Z
d	 Z ej        ej        d
k    d          d             Zd Zd Zd Zd Zd Zd ZdS )SubprocessTestsMixinc                     t           j        dk    r|                     |t                     d S |                     t
          j         |           d S Nr   )r    r!   rl  r&   r   rR  r  r7   r   s     r   check_terminatedz%SubprocessTestsMixin.check_terminated@  M    <7""!!*c22222 fn_j99999r   c                     t           j        dk    r|                     |t                     d S |                     t
          j         |           d S r  )r    r!   rl  r&   r   rR  rD  r  s     r   check_killedz!SubprocessTestsMixin.check_killedG  r  r   c                    t           j                            t           j                            t                    d          }| j                            t          j        t          | j                  t          j        |          }| j                            |          \  }}|                     |t                     | j                            |j                   |                     d|j                   |                    d          }|                    d           | j                            |j        d                                                    t+          j                    5  |                                 d d d            n# 1 swxY w Y   | j                            |j                   |                     |j                   |                     d|j        d                    d S )Necho.pyr]   r      Python The Winnerr   )rU  rJ  r  dirname__file__r2   subprocess_execr  r  r   r    
executabler1   rl  rP   r   rM   get_pipe_transportrt   r   rf  r   r  rA   r   r  r   rg   r7   progr  transpr  stdins         r   test_subprocess_execz)SubprocessTestsMixin.test_subprocess_execN  s   w||BGOOH55yAA)++!)*>	JJ. . 	44W==e%9:::	$$U_555ek222))!,,()))	$$U^A%6%;%;%=%=>>>&(( 	 	LLNNN	 	 	 	 	 	 	 	 	 	 	 	 	 	 		$$U_555%*+++-uz!}=====s   ,FFFc                     t           j                            t           j                            t                    d          }| j                            t          j        t          | j                  t          j        |          }| j                            |          \  }}|                     |t                     | j                            |j                   |                     d|j                   |                    d          }|                    d           | j                            |j        d                                                    |j        d                                          |                     d|j        d                    |                    d           | j                            |j        d                                                    |                     d|j        d                    t/          j                    5  |                                 d d d            n# 1 swxY w Y   | j                            |j                   |                     |j                   d S )Nr  r]   r   s   Python r   s
   The Winnerr  )rU  rJ  r  r  r  r2   r  r  r  r   r    r  r1   rl  rP   r   rM   r  rt   r   rf  clearrg   r   r  rA   r   r  r   r  s         r   test_subprocess_interactivez0SubprocessTestsMixin.test_subprocess_interactivec  s9   w||BGOOH55yAA)++!)*>	JJ. . 	44W==e%9:::	$$U_555ek222))!,,J	$$U^A%6%;%;%=%=>>>q!!!UZ]333M"""	$$U^A%6%;%;%=%=>>>-uz!}===&(( 	 	LLNNN	 	 	 	 	 	 	 	 	 	 	 	 	 	 		$$U_555%*+++++s   H::H>H>c                 >   | j                             t          j        t          | j                   d          }| j                             |          \  }}|                     |t                     | j                             |j                   |                    d          	                                 | j                             |j
                   |                     d|j                   |                     t          d |j                                        D                                  |                     |j        d                             d          d           |                     |j        d         d           |	                                 d S )	Nzecho Pythonr   c              3   >   K   | ]}|                                 V  d S r   )rQ   )r   r  s     r   	<genexpr>z=SubprocessTestsMixin.test_subprocess_shell.<locals>.<genexpr>  s*      IIAFFHHIIIIIIr   r   s   
s   Pythonr   r   )r2   subprocess_shellr  r  r   r1   rl  rP   r  rA   r   r   r   r   allr   valuesrg   rstripr7   r  r  r  s       r   test_subprocess_shellz*SubprocessTestsMixin.test_subprocess_shell~  sY   ),,!)*>	JJ%' ' 	44W==e%9:::	$$U_555!!!$$**,,,	$$U_555E,---IIe.?.F.F.H.HIIIIIJJJA--g66	BBBA,,,r   c                    | j                             t          j        t          | j                   dd d d           }| j                             |          \  }}|                     |t                     | j                             |j                   |                     d|j	                   |
                                 d S )Nexit 7r  stdoutstderr   r2   r  r  r  r   r1   rl  r   r   r   rA   r  s       r   test_subprocess_exitcodez-SubprocessTestsMixin.test_subprocess_exitcode  s    ),,!)*>	JJ T$ - H H 	44W==e%9:::	$$U_555E,---r   c                    | j                             t          j        t          | j                   dd d d           }| j                             |          \  }}|                     |t                     |                     |                    d                     |                     |                    d                     |                     |                    d                     | j                             |j	                   | 
                    d|j                   |                     |                                           d S )Nr  r  r   r   r   r  )r2   r  r  r  r   r1   rl  r~  r  r   r   r   rA   r  s       r   "test_subprocess_close_after_finishz7SubprocessTestsMixin.test_subprocess_close_after_finish  s'   ),,!)*>	JJ T$ - H H 	44W==e%9:::&33A66777&33A66777&33A66777	$$U_555E,---&,,..)))))r   c                    t           j                            t           j                            t                    d          }| j                            t          j        t          | j                  t          j        |          }| j                            |          \  }}|                     |t                     | j                            |j                   |                                 | j                            |j                   |                     |j                   |                                 d S Nr  )rU  rJ  r  r  r  r2   r  r  r  r   r    r  r1   rl  rP   rV  r   r  r   rA   r7   r  r  r  r  s        r   test_subprocess_killz)SubprocessTestsMixin.test_subprocess_kill  s    w||BGOOH55yAA)++!)*>	JJ. . 	44W==e%9:::	$$U_555	$$U_555%*+++r   c                    t           j                            t           j                            t                    d          }| j                            t          j        t          | j                  t          j        |          }| j                            |          \  }}|                     |t                     | j                            |j                   |                                 | j                            |j                   |                     |j                   |                                 d S r  )rU  rJ  r  r  r  r2   r  r  r  r   r    r  r1   rl  rP   	terminater   r  r   rA   r  s        r   test_subprocess_terminatez.SubprocessTestsMixin.test_subprocess_terminate  s    w||BGOOH55yAA)++!)*>	JJ. . 	44W==e%9:::	$$U_555	$$U_555e.///r   r   zDon't have SIGHUPc                    t          j         t           j        t           j                  }	 t          j                            t          j                            t                    d          }| j        	                    t          j        t          | j                  t          j        |          }| j                            |          \  }}|                     |t                     | j                            |j                   |                    t           j                   | j                            |j                   |                     t           j         |j                   |                                 t          j         t           j        |           d S # t          j         t           j        |           w xY wr  )rR  SIGHUPSIG_DFLrU  rJ  r  r  r  r2   r  r  r  r   r    r  r1   rl  rP   send_signalr   r   r   rA   )r7   old_handlerr  r  r  r  s         r   test_subprocess_send_signalz0SubprocessTestsMixin.test_subprocess_send_signal  sH   
 mFM6>BB	67<< 9 99EEDi//%-.BDINNND2 2G
 !I88AAMFE!!%)=>>>I((999v}---I((999fm^U-=>>>LLNNNM&-55555FM&-5555s   EF   !Gc                 n   t           j                            t           j                            t                    d          }| j                            t          j        t          | j                  t          j        |          }| j                            |          \  }}|                     |t                     | j                            |j                   |                    d          }|                    d           | j                            |j                   |                                 |                     d|j        d                    |                     |j        d                             d          |j        d                    |                     d|j                   d S )Necho2.pyr      test   OUT:testr   r   s   ERR:test)rU  rJ  r  r  r  r2   r  r  r  r   r    r  r1   rl  rP   r  rt   r   rA   r   rg   r   r"   r   r  s         r   test_subprocess_stderrz+SubprocessTestsMixin.test_subprocess_stderr  sS   w||BGOOH55zBB)++!)*>	JJ. . 	44W==e%9:::	$$U_555))!,,G	$$U_555ejm444
100==uz!}MMME,-----r   c                 &   t           j                            t           j                            t                    d          }| j                            t          j        t          | j                  t          j        |t          j                  }| j                            |          \  }}|                     |t                     | j                            |j                   |                    d          }|                     |                    d                     |                     |                    d                     |                    d           | j                            |j                   |                     |j        d                             d          |j        d                    |                     d|j        d                    |                                 |                     d|j                   d S )	Nr  )r  r   r   r   r  s   OUT:testERR:testr   )rU  rJ  r  r  r  r2   r  r  r  r   r    r  
subprocessSTDOUTr1   rl  rP   r  rp  r~  rt   r   r   rg   r"   r   rA   r   r  s         r   )test_subprocess_stderr_redirect_to_stdoutz>SubprocessTestsMixin.test_subprocess_stderr_redirect_to_stdout  s   w||BGOOH55zBB)++!)*>	JJZ5F , H H
 	44W==e%9:::	$$U_555))!,,V66q99:::&33A66777G	$$U_555
1001DEE
1	' 	' 	'ejm,,,E,-----r   c                    t           j                            t           j                            t                    d          }| j                            t          j        t          | j                  t          j        |          }| j                            |          \  }}|                     |t                     | j                            |j                   |                    d          }|                    d          }|                    d           | j                            |j        d                                                    |                     d|j        d                    |                                 | j                            |j        d                    |                    d           | j                            |j        d                                                    t          j        dk    r"|                     d	|j        d                    n!|                     d
|j        d                    t1          j                    5  |                                 d d d            n# 1 swxY w Y   | j                            |j                   |                     |j                   d S )Nzecho3.pyr   r   r  r  r:  r   r   s   ERR:BrokenPipeErrors   ERR:OSError)rU  rJ  r  r  r  r2   r  r  r  r   r    r  r1   rl  rP   r  rt   r   rf  r   rg   rA   r   r!   r   r  r   r  r   )r7   r  r  r  r  r  r  s          r   #test_subprocess_close_client_streamz8SubprocessTestsMixin.test_subprocess_close_client_stream  st   w||BGOOH55zBB)++!)*>	JJ. . 	44W==e%9:::	$$U_555))!,,**1--G	$$U^A%6%;%;%=%=>>>ejm444	$$U%6q%9:::F	$$U^A%6%;%;%=%=>>><7""3UZ]CCCC ^UZ];;;&(( 	 	LLNNN	 	 	 	 	 	 	 	 	 	 	 	 	 	 		$$U_555%*+++++s   J  JJc                    | j                             t          j        t          | j                   dd d d d          }| j                             |          \  }}|                     |t                     | j                             |j                   |                     d|j	                   |
                                 d S )Nr  T)r  r  r  start_new_sessionr  r  r  s       r   "test_subprocess_wait_no_same_groupz7SubprocessTestsMixin.test_subprocess_wait_no_same_group0  s    ),,!)*>	JJ T$*. - 0 0 	44W==e%9:::	$$U_555E,---r   c                      fd}                      t                    5   j                             |d                     d d d            n# 1 swxY w Y                         t                    5   j                             |d                     d d d            n# 1 swxY w Y                         t                    5   j                             |d                     d d d            d S # 1 swxY w Y   d S )Nc                  T   K    j         j        t          j        dfi |  d {V  d S Npwd)r2   r  r   SubprocessProtocol)r  r7   s    r   r  zGSubprocessTestsMixin.test_subprocess_exec_invalid_args.<locals>.connect=  s^      +$)+*           r   Tuniversal_newlines   bufsizeshellr   rQ  r2   r1   r7   r  s   ` r   !test_subprocess_exec_invalid_argsz6SubprocessTestsMixin.test_subprocess_exec_invalid_args<  s   	 	 	 	 	
 z** 	K 	KI((D)I)I)IJJJ	K 	K 	K 	K 	K 	K 	K 	K 	K 	K 	K 	K 	K 	K 	Kz** 	@ 	@I(()>)>)>???	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@z** 	> 	>I((t)<)<)<===	> 	> 	> 	> 	> 	> 	> 	> 	> 	> 	> 	> 	> 	> 	> 	> 	> 	>s5   %AAA7%B((B,/B,%C??DDc                     d
 fd	}                      t                    5   j                             |ddg                     d d d            n# 1 swxY w Y                         t                    5   j                             |d                     d d d            n# 1 swxY w Y                         t                    5   j                             |d                     d d d            n# 1 swxY w Y                         t                    5   j                             |d	                     d d d            d S # 1 swxY w Y   d S )Nc                 \   K   | sd}  j         j        t          j        | fi | d {V  d S r  )r2   r  r   r  )cmdr  r7   s     r   r  zHSubprocessTestsMixin.test_subprocess_shell_invalid_args.<locals>.connectK  sk       ,$),*           r   lsz-lTr  r  r  Fr  r   r  r  s   ` r   "test_subprocess_shell_invalid_argsz7SubprocessTestsMixin.test_subprocess_shell_invalid_argsI  s   	 	 	 	 	 	 z** 	@ 	@I(($)>)>???	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@z** 	K 	KI((D)I)I)IJJJ	K 	K 	K 	K 	K 	K 	K 	K 	K 	K 	K 	K 	K 	K 	Kz** 	@ 	@I(()>)>)>???	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@z** 	? 	?I((u)=)=)=>>>	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	?sG   &AAA9%B**B.1B.%D  DD%%EEEN)rD   rE   rF   r  r  r  r  r  r  r  r  r  r  r  r    r!   r  r  r  r  r  r  r  r   r   r   r  r  >  s)       : : :: : :> > >*, , ,6   	 	 	* * *       X_S\W,.ABB6 6 CB60. . .*. . .2 ,  ,  ,D
 
 
> > >? ? ? ? ?r   r  r   c                       e Zd Zd ZdS )SelectEventLoopTestsc                 (    t          j                    S r   )r   SelectorEventLoopr@   s    r   r   z&SelectEventLoopTests.create_event_loopa      ,...r   NrD   rE   rF   r   r   r   r   r  r  ^  s#        	/ 	/ 	/ 	/ 	/r   r  c                   2    e Zd Zd Zd Zd Zd Zd Zd ZdS )ProactorEventLoopTestsc                 (    t          j                    S r   )r   ProactorEventLoopr@   s    r   r   z(ProactorEventLoopTests.create_event_looph  r  r   c                 *    t          j        d          Nz(IocpEventLoop does not have add_reader()r  SkipTestr@   s    r   r<  z+ProactorEventLoopTests.test_reader_callbackk      #$NOOOr   c                 *    t          j        d          r  r  r@   s    r   test_reader_callback_cancelz2ProactorEventLoopTests.test_reader_callback_canceln  r  r   c                 *    t          j        d          Nz(IocpEventLoop does not have add_writer()r  r@   s    r   rC  z+ProactorEventLoopTests.test_writer_callbackq  r  r   c                 *    t          j        d          r  r  r@   s    r   test_writer_callback_cancelz2ProactorEventLoopTests.test_writer_callback_cancelt  r  r   c                 *    t          j        d          r  r  r@   s    r   rr  z4ProactorEventLoopTests.test_remove_fds_after_closingw  r  r   N)	rD   rE   rF   r   r<  r  rC  r  rr  r   r   r   r  r  d  s        	/ 	/ 	/	P 	P 	P	P 	P 	P	P 	P 	P	P 	P 	P	P 	P 	P 	P 	Pr   r  c                   (     e Zd Z fdZ fdZ xZS )UnixEventLoopTestsMixinc                     t                                                       t          j                    }|                    | j                   t          j        |           d S r   )rs   r   r   SafeChildWatcherattach_loopr2   set_child_watcherr7   watcherru   s     r   r   zUnixEventLoopTestsMixin.setUp}  sO    GGMMOOO.00G	***%g.....r   c                 p    t          j        d            t                                                       d S r   )r   r  rs   r   r   s    r   r   z UnixEventLoopTestsMixin.tearDown  s0    %d+++GGr   )rD   rE   rF   r   r   rw   rx   s   @r   r   r   |  sQ        	/ 	/ 	/ 	/ 	/	 	 	 	 	 	 	 	 	r   r   KqueueSelectorc                        e Zd Zd Z ej        dd           ej        ej	        
                    d          d           fd                        Z ej        dd           fd            Z xZS )KqueueEventLoopTestsc                 L    t          j        t          j                              S r   )r   r  	selectorsr  r@   s    r   r   z&KqueueEventLoopTests.create_event_loop  s#    0,..0 0 0r   r   	   openbsdztest hangs on OpenBSDc                 H    t                                                       d S r   )rs   r$  r   s    r   r$  z)KqueueEventLoopTests.test_read_pty_output  s!     ,,.....r   c                 H    t                                                       d S r   )rs   rD  r   s    r   rD  z#KqueueEventLoopTests.test_write_pty  s    &&(((((r   )rD   rE   rF   r   r   r  r  r  r    r!   r"   r$  rD  rw   rx   s   @r   r
  r
    s        0 0 0 &W%b!,, X_S\44Y??46 6/ / / /6 6 -,
/
 &W%b!,,) ) ) ) -,) ) ) ) )r   r
  EpollSelectorc                       e Zd Zd ZdS )EPollEventLoopTestsc                 L    t          j        t          j                              S r   )r   r  r  r  r@   s    r   r   z%EPollEventLoopTests.create_event_loop  s    01H1J1JKKKr   Nr  r   r   r   r  r    s(        L L L L Lr   r  PollSelectorc                       e Zd Zd ZdS )PollEventLoopTestsc                 L    t          j        t          j                              S r   )r   r  r  r  r@   s    r   r   z$PollEventLoopTests.create_event_loop  s    01G1I1IJJJr   Nr  r   r   r   r  r    s(        K K K K Kr   r  c                       e Zd Zd ZdS )r  c                 L    t          j        t          j                              S r   )r   r  r  SelectSelectorr@   s    r   r   z&SelectEventLoopTests.create_event_loop  s    ,Y-E-G-GHHHr   Nr  r   r   r   r  r    s(        	I 	I 	I 	I 	Ir   c                      d S r   r   )r  r  s     r   noopr    s    Dr   c                        e Zd Z fdZd Zd Zd Zd Zd Zd Z	 e
j         eej        d          d	          d
             Z xZS )HandleTestsc                     t                                                       t          j                    | _        d| j        j        _        d S r  )rs   r   r   r(  r2   	get_debugreturn_valuer   s    r   r   zHandleTests.setUp  s4    IKK	+/	(((r   c                 v   d }d}t          j        ||| j                  }|                     |j        |           |                     |j        |           |                     |                                           |                                 | 	                    |                                           d S )Nc                      | S r   r   r  s    r   r   z)HandleTests.test_handle.<locals>.callback      Kr   r   )
r   Handler2   ro  	_callback_argsr   rZ  r  r   )r7   r   r  hs       r   test_handlezHandleTests.test_handle  s    	 	 	 N8T4955ak8,,,agt$$$'''	


&&&&&r   c                 ^   d }t          j                    | _        t          j                    | j        _        t	          j        |d| j                  }|                                 | j        j                            t          j	        d          t           j
        ||j        d           d S )Nc                      t                      r   )rQ  r   r   r   r   z:HandleTests.test_callback_with_exception.<locals>.callback  s    ,,r   r   zException in callback.*)r  r  handlesource_traceback)r   r(  r2   rw  r   r'  _runassert_called_withr   MockPatternANY_source_traceback)r7   r   r*  s      r   test_callback_with_exceptionz(HandleTests.test_callback_with_exception  s    	 	 	 IKK	+/9;;	(N8R33		(;;!-.GHH ! 3	=
 =
 	 	 	 	 	r   c                 n    t          j                    }t          j        d d| j                  }||d<   d S )Nc                      d S r   r   r   r   r   r1  z1HandleTests.test_handle_weakref.<locals>.<lambda>  s    4 r   r   r*  )weakrefWeakValueDictionaryr   r'  r2   )r7   wdr*  s      r   test_handle_weakrefzHandleTests.test_handle_weakref  s4    (**N<<TY773r   c                 $   d| j         j        _        t          j        t
          d| j                   }t          j        t
                    \  }}|                     t          |          d|d|d           |
                                 |                     t          |          d           t          j        t
                    }t          j        |d| j                   }|                     t          |          d|d|d           t          j        t
          d	d
          }t          j        |d| j                   }dt          j        |          d|d}|                     t          |          |           t          j        t
          d	          }t          j        |d| j                   }dt          j        |          d|d}|                     t          |          |           t$          j        }t          j        |          }t          j        |          \  }}t          j        |d| j                   }d}d| d}d| dt          j        |           d| d}|                     t          |          |           d S )NFr   <Handle noop(1, 2) at :>z<Handle cancelled>r   z<Handle noop() at r   r   )r   z^<Handle noop\(1, 2\)\(3\) at z>$)x)r   r   z ^<Handle noop\(x=1\)\(2, 3\) at z*<function HandleTests.test_handle_repr .*>zfunctools.partialmethod\(z
, , \)\(\)z	^<Handle z at )r2   r!  r"  r   r'  r  r   get_function_sourcer   r  r  types	coroutiner  r  reescapeassertRegexr  test_handle_reprpartialmethod)r7   r*  filenamelinenor   regexmethodcb_regexs           r   rG  zHandleTests.test_handle_repr  ss   +0	( N433%9$??&a#88VVV-	. 	. 	.
 	



a,	. 	. 	. _T""N2r49--a#88VVV-	. 	. 	.
 tQ**N2tTY//Ih''''1a%((( tq)))N2vty11Ih''''1a%((( -$V,,%9&AA&N2r49--@DDDDKXKK29X+>+>KKKKKa%(((((r   c                 T   d| j         j        _        t          }t	          j                    j        dz   }t          j        t          d| j                   }t          j        t                    \  }}|                     t          |          d|d|d|d|d	           |                                 |                     t          |          d|d|d|d|d	           |                                 |                     t          |          d|d|d|d|d	           d S )	NTr   r   r=  r>   created at r?  z <Handle cancelled noop(1, 2) at )r2   r!  r"  r  r    	_getframef_linenor   r'  r  r   rA  r   r  r  r7   create_filenamecreate_linenor*  rI  rJ  s         r   test_handle_repr_debugz"HandleTests.test_handle_repr_debug	  sK   +/	( #014N433%9$??&a#88VVV___mmmM	N 	N 	N
 	



GGGxx---A	B 	B 	B 	



GGGxx---A	B 	B 	B 	B 	Br   c                     t          j                                                    }|                    d                                |            fd}|                    t                    } ||           |                    t                    } ||           |                    dt                    } ||           |                    dt                    } ||           d S )NTc                     t          j        d          j        dz
  }                    | j        t
                                         | j        d         d d         t          |df           d S )Nr   rL  r   test_handle_source_traceback)r    rP  rQ  rl  r4  listr   r  )r*  rJ  r7   s     r   check_source_tracebackzHHandleTests.test_handle_source_traceback.<locals>.check_source_traceback6	  sv    ]1%%.2F!!!"5t<<<Q04RaR8&$<>? ? ? ? ?r   r   )	r   get_event_loop_policyr/   	set_debugr0   r   r  r   r   )r7   r2   rZ  r*  s   `   r   rX  z(HandleTests.test_handle_source_traceback1	  s    ,..==??tD!!!	? 	? 	? 	? 	? NN4  q!!! %%d++q!!! OOAt$$q!!! OOAt$$q!!!!!r   	CoroutinezNo collections.abc.Coroutinec                    t                      }d|_        |                     t          j        |                     |                     t          j        |          d           d|_        |                     t          j        |          d           d|_	        |                     t          j        |          d           d x|_        |_        |                     t          j        |          d           t                      }d|_        |                     t          j        |          d	           t                      }d|_        d |_
        |                     t          j        |          d           d S )
NAAAzAAA()BBBzBBB()TzBBB() runningz%<CoroLike without __name__>() runningr5   z
CoroLike())r5   rD   r   r   iscoroutiner   r   _format_coroutinerF   
cr_runningcr_code)r7   r  s     r   +test_coroutine_like_object_debug_formattingz7HandleTests.test_coroutine_like_object_debug_formattingN	  sR    zz+D112225d;;WEEE!5d;;WEEE5d;;_MMM,00)5d;;@	B 	B 	B zz& 	5d;;\JJJzz!5d;;WEEEEEr   )rD   rE   rF   r   r+  r5  r;  rG  rU  rX  r  r  r  collectionsabcre  rw   rx   s   @r   r  r    s        0 0 0 0 0
' ' '  "  
-) -) -)^B B B4" " ": X+>>79 9F F9 9F F F F Fr   r  c                   B     e Zd Z fdZd Zd Zd Zd Zd Zd Z	 xZ
S )
TimerTestsc                 x    t                                                       t          j                    | _        d S r   )rs   r   r   r(  r2   r   s    r   r   zTimerTests.setUpr	  s%    IKK			r   c                     t          j                    }t          j        |d dt	          j                              }|                     t          |          t          |                     d S )Nc                      dS r  r   r   r   r   r1  z&TimerTests.test_hash.<locals>.<lambda>x	      e r   r   )r   	monotonicr   TimerHandler   r(  r   hashr7   whenr*  s      r   	test_hashzTimerTests.test_hashv	  sZ    ~mmR $	- -a$t**-----r   c                     t          j                    }t          j        |d dt	          j                              }|                     ||                                           d S )Nc                      dS r  r   r   r   r   r1  z&TimerTests.test_when.<locals>.<lambda>~	  rm  r   r   )r   rn  r   ro  r   r(  r   rr  rq  s      r   	test_whenzTimerTests.test_when|	  sV    ~mmR $	- -qvvxx(((((r   c                    d }d}t          j                    }t          j        |||t	          j                              }|                     |j        |           |                     |j        |           | 	                    |
                                           |                                 |                     |
                                           |                     |j                   |                     |j                   d S )Nc                      | S r   r   r%  s    r   r   z'TimerTests.test_timer.<locals>.callback	  r&  r   )r   r   r   )r   rn  r   ro  r   r(  ro  r(  r)  r   rZ  r  r   r~  )r7   r   r  rr  r*  s        r   
test_timerzTimerTests.test_timer	  s    	 	 	 ~hdikkBBak8,,,agt$$$''' 	



&&&!+&&&!'"""""r   c                 V   d| j         j        _        t          j        dt
          d| j                   }t          j        t
                    }|                     t          |          d|z             |
                                 |                     t          |          d           d S )NF{   r   z&<TimerHandle when=123 noop() at %s:%s>z <TimerHandle cancelled when=123>)r2   r!  r"  r   ro  r  r   rA  r   r  r  )r7   r*  srcs      r   test_timer_reprzTimerTests.test_timer_repr	  s    +0	( T2ty99,T22a@3F	H 	H 	H 	



a:	< 	< 	< 	< 	<r   c                    d| j         j        _        t          }t	          j                    j        dz   }t          j        dt          d| j                   }t          j        t                    \  }}|                     t          |          d|d|d|d|d	           |                                 |                     t          |          d	|d|d|d|d	           d S )
NTr   r{  r   z <TimerHandle when=123 noop() at r>  rO  r?  z*<TimerHandle cancelled when=123 noop() at )r2   r!  r"  r  r    rP  rQ  r   ro  r  r   rA  r   r  r  rR  s         r   test_timer_repr_debugz TimerTests.test_timer_repr_debug	  s    +/	( #014T2ty99%9$??&a $88VVV___mmmM	N 	N 	N 	



a $88VVV___mmmM	N 	N 	N 	N 	Nr   c                 
   d }t          j                    }t          j        ||d| j                  }t          j        ||d| j                  }|                     ||k                |                     ||k                |                     ||k               |                     ||k               |                     ||k               |                     ||k               |                     ||k               |                     ||k               |                     ||k               |                     ||k               |                                 |                     ||k               t          j        ||d| j                  }t          j        |dz   |d| j                  }|                     ||k                |                     ||k                |                     ||k               |                     ||k               |                     ||k               |                     ||k               |                     ||k               |                     ||k               |                     ||k               |                     ||k               t          j        |d| j                  }| 	                    t          |                    |                     | 	                    t          |                    |                     |                     t                    5  |dk      d d d            n# 1 swxY w Y   |                     t                    5  |dk     d d d            n# 1 swxY w Y   |                     t                    5  |dk     d d d            n# 1 swxY w Y   |                     t                    5  |dk     d d d            n# 1 swxY w Y   |                     |dk               |                     |dk               |                     |t          k               |                     |t          k               |                     |t           k                |                     |t           k               |                     |t           k               |                     |t           k               |                     |t"          k                |                     |t"          k               |                     |t"          k               |                     |t"          k               d S )Nc                      | S r   r   r%  s    r   r   z2TimerTests.test_timer_comparison.<locals>.callback	  r&  r   r   g      $@)r   rn  r   ro  r2   r   r   r  r'  ro  NotImplemented__eq____ne__r   rN  r   r   r   )r7   r   rr  h1h2h3s         r   test_timer_comparisonz TimerTests.test_timer_comparison	  s   	 	 	 ~ xTY?? xTY??b!!!b!!!b!!!b!!!b!!!b!!!b!!!b!!!b!!!r"""
		r""" xTY?? hDIFFR   b!!!b!!!r"""b!!!R   r"""b!!!r"""b!!!^Hb$)44nbiimm444nbiimm444y)) 	 	GG	 	 	 	 	 	 	 	 	 	 	 	 	 	 	y)) 	 	GG	 	 	 	 	 	 	 	 	 	 	 	 	 	 	y)) 	 	"HH	 	 	 	 	 	 	 	 	 	 	 	 	 	 	y)) 	 	"HH	 	 	 	 	 	 	 	 	 	 	 	 	 	 	r"""b!!!i(((y)))W%%%g&&&g&&&w'''h'''X&&&x(((h'''''sH   <MMM4NNN,N??OO$O77O;>O;)rD   rE   rF   r   rs  rv  ry  r}  r  r  rw   rx   s   @r   ri  ri  p	  s                 . . .) ) )# # #$< < <N N N*<( <( <( <( <( <( <(r   ri  c                       e Zd Zd Zd ZdS )AbstractEventLoopTestsc                    t          j                    }t          j                    }|                     t
          |j                   |                     t
          |j        d            |                     t
          |j                   |                     t
          |j	                   |                     t
          |j
                   |                     t
          |j                   |                     t
          |j        d            |                     t
          |j        d d            |                     t
          |j        ||           |                     t
          |j        d            |                     t
          |j                   |                     t
          |j        d            |                     t
          |j        |           |                     t
          |j        d|           |                     t
          |j        d           |                     t
          |j        d|           |                     t
          |j        d           |                     t
          |j        d|           |                     t
          |j        d           |                     t
          |j        d           |                     t
          |j        |           |                     t
          |j        |           |                     t
          |j        |           |                     t
          |j                   |                     t
          |j        |           d S rG  )r   r(  r   AbstractEventLoopr   NotImplementedErrorr   r1   r   r   r   rA   r  r   r  r   r   r   set_default_executorr9  r)  r@  rA  rO  rP  set_exception_handlerdefault_exception_handlerrw  r!  r\  )r7   r  r2   s      r   test_not_implementedz+AbstractEventLoopTests.test_not_implemented	  s   IKK(**!1	3 	3 	3!8$	@ 	@ 	@	, 	, 	,	2 	2 	2	1 	1 	1	- 	- 	-!14	9 	9 	9$	> 	> 	>q!	5 	5 	5	7 	7 	7	, 	, 	,!:D	B 	B 	B!:A	? 	? 	?!Q	8 	8 	8!3Q	8 	8 	8!Q	8 	8 	8!3Q	8 	8 	8!8!Q	@ 	@ 	@!;Q	@ 	@ 	@!;Q	@ 	@ 	@!;Q	@ 	@ 	@!?	D 	D 	D!<a	A 	A 	A	1 	1 	1	4 	4 	4 	4 	4r   c                       fd}t          j                    }|                     |                       |                                 d S )Nc                  
  K   t          j                    } t          j                    }                    t
                    5  |                    | |            d {V  d d d            n# 1 swxY w Y                       t
                    5  |                    dd           d {V  d d d            n# 1 swxY w Y                       t
                    5  |                    d           d {V  d d d            n# 1 swxY w Y                       t
                    5  |	                    |            d {V  d d d            n# 1 swxY w Y                       t
                    5  |
                    |            d {V  d d d            n# 1 swxY w Y                       t
                    5  |                    |            d {V  d d d            n# 1 swxY w Y                       t
                    5  |                    | d           d {V  d d d            n# 1 swxY w Y                       t
                    5  |                    | d           d {V  d d d            n# 1 swxY w Y                       t
                    5  |                    | d           d {V  d d d            n# 1 swxY w Y                       t
                    5  |                    | |            d {V  d d d            n# 1 swxY w Y                       t
                    5  |                    |            d {V  d d d            n# 1 swxY w Y                       t
                    5  |                    | |            d {V  d d d            n# 1 swxY w Y                       t
                    5  |                    | |            d {V  d d d            n# 1 swxY w Y                       t
                    5  |                    | t           j        j                   d {V  d d d            n# 1 swxY w Y                       t
                    5  |                    | t           j        j                   d {V  d d d            n# 1 swxY w Y                       t
                    5  |                    | t           j                   d {V  d d d            n# 1 swxY w Y                       t
                    5  |                    |            d {V  d d d            d S # 1 swxY w Y   d S )Nr    )r  r  r   )r   r(  r   r  r   r  r  r  r  r  r  r  r5  sock_recv_intosock_sendallsock_connectsock_acceptsock_sendfilesendfiler  sentinelr  r  r  r  )r  r2   r7   s     r   innerz@AbstractEventLoopTests.test_not_implemented_async.<locals>.inner0
  s 
     	A,..D""#677 1 1**1a0000000001 1 1 1 1 1 1 1 1 1 1 1 1 1 1""#677 : :&&{D999999999: : : : : : : : : : : : : : :""#677 < <&&':;;;;;;;;;< < < < < < < < < < < < < < <""#677 0 0,,Q/////////0 0 0 0 0 0 0 0 0 0 0 0 0 0 0""#677 , ,((+++++++++, , , , , , , , , , , , , , ,""#677 7 733A6666666667 7 7 7 7 7 7 7 7 7 7 7 7 7 7""#677 , ,nnQ+++++++++, , , , , , , , , , , , , , ,""#677 1 1))!R0000000001 1 1 1 1 1 1 1 1 1 1 1 1 1 1""#677 / /''2........./ / / / / / / / / / / / / / /""#677 . .''1---------. . . . . . . . . . . . . . .""#677 * *&&q)))))))))* * * * * * * * * * * * * * *""#677 / /((A........./ / / / / / / / / / / / / / /""#677 * *mmAq)))))))))* * * * * * * * * * * * * * *""#677 D D,,Q0BCCCCCCCCCD D D D D D D D D D D D D D D""#677 E E--a1CDDDDDDDDDE E E E E E E E E E E E E E E""#677 > >++At}=========> > > > > > > > > > > > > > >""#677 . .**1---------. . . . . . . . . . . . . . . . . .s2  A--A14A1B;;B?B? DDD-EEE:F""F&)F&G//G36G3H==II"JJJ0KK K>L''L+.L+M44M8;M8OO	O'PPP5,Q--Q14Q1,S

SS/'T""T&)T&U00U47U4)r   r/   r1   rA   )r7   r  r2   s   `  r   test_not_implemented_asyncz1AbstractEventLoopTests.test_not_implemented_async.
  sX    %	. %	. %	. %	. %	.N %''(((

r   N)rD   rE   rF   r  r  r   r   r   r  r  	  s3        44 44 44l+ + + + +r   r  c                   p    e Zd Zd Zd Zd Zd Z ej        d          d             Z	d Z
d Zd	 Zd
 ZdS )PolicyTestsc                    t          j                    }|                     t          |j                   |                     t          |j        t                                 |                     t          |j                   |                     t          |j                   |                     t          |j	        t                                 d S r   )
r   AbstractEventLoopPolicyr   r  get_event_loopr0   r}  r/   get_child_watcherr  r7   policys     r   test_event_loop_policyz"PolicyTests.test_event_loop_policy^
  s    022-v/DEEE-v/DfhhOOO-v/DEEE-v/GHHH-v/G ((	$ 	$ 	$ 	$ 	$r   c                    t          j                    }|                     |j        j                   |                                }|                     |t           j                   |                     |j        j        |           |                     ||                                           |	                                 d S r   )
r   DefaultEventLoopPolicyr~  _local_loopr  rl  r  ro  rA   r7   r  r2   s      r   test_get_event_loopzPolicyTests.test_get_event_loopg
  s    /11&--...$$&&dG$=>>>fm)4000dF1133444

r   c                 X   t          j                    }t          j                            |d|j                  5 }|                                }|                     |j                   |	                    |           d d d            n# 1 swxY w Y   |                                 d S )Nr0   )wraps)
r   r  r   r  r}  r0   r  r  rA   r1  )r7   r  m_set_event_loopr2   s       r   (test_get_event_loop_calls_set_event_loopz4PolicyTests.test_get_event_loop_calls_set_event_loopq
  s    /11Z(+  - - 
	60@((**DOODJ'''
 //555
	6 
	6 
	6 
	6 
	6 
	6 
	6 
	6 
	6 
	6 
	6 
	6 
	6 
	6 
	6 	

s   ABBBc                     t          j                    }|                    d            |                     t          |j                   d S r   )r   r  r0   r   r   r  r  s     r   "test_get_event_loop_after_set_nonez.PolicyTests.test_get_event_loop_after_set_none
  sC    /11d###,(=>>>>>r   z'asyncio.events.threading.current_threadc                       fd}t          j        |          }|                                 |                                 d S )Nc                  n    t          j                    }                     t          | j                   d S r   )r   r  r   r   r  )r  r7   s    r   r  z1PolicyTests.test_get_event_loop_thread.<locals>.f
  s0    355FlF,ABBBBBr   r   )r  r  r  r  )r7   m_current_threadr  ths   `   r   test_get_event_loop_threadz&PolicyTests.test_get_event_loop_thread
  sT    	C 	C 	C 	C 	C Q'''




					r   c                     t          j                    }|                                }|                     |t           j                   |                                 d S r   )r   r  r/   rl  r  rA   r  s      r   test_new_event_loopzPolicyTests.test_new_event_loop
  sK    /11$$&&dG$=>>>

r   c                    t          j                    }|                                }|                    |           |                     t
          |j        t                                 |                                }|                    |           |                     ||                                           | 	                    ||                                           |
                                 |
                                 d S r   )r   r  r/   r0   r   rN  r}  ro  r  assertIsNotrA   )r7   r  old_loopr2   s       r   test_set_event_loopzPolicyTests.test_set_event_loop
  s    /11((**h''')V%:FHHEEE$$&&d###dF11334446#8#8#:#:;;;

r   c                     t          j                    }|                     |t           j                   |                     |t          j                               d S r   )r   r[  rl  r  ro  r  s     r   test_get_event_loop_policyz&PolicyTests.test_get_event_loop_policy
  sL    .00fg&EFFFfg;==>>>>>r   c                 X   |                      t          t          j        t	                                 t          j                    }t          j                    }t          j        |           |                     |t          j                               |                     ||           d S r   )	r   rN  r   r   r}  r[  r  ro  r  )r7   
old_policyr  s      r   test_set_event_loop_policyz&PolicyTests.test_set_event_loop_policy
  s    w4fhh	@ 	@ 	@ 244
/11%f---fg;==>>>,,,,,r   N)rD   rE   rF   r  r  r  r  r   r  r  r  r  r  r  r   r   r   r  r  \
  s        $ $ $    "? ? ?
 TZ9::  ;:    ? ? ?
	- 	- 	- 	- 	-r   r  c                   `     e Zd ZdZdZdZdZ fdZ fdZe	j
        dk    rd Zd Zd Z xZS )GetEventLoopTestsMixinNc                    t           j        | _        t           j        | _        t           j        | _        t           j        | _        t          |           j
        t           _        t          |           j        t           _        t          |           j        t           _        t          |           j        t           _        t          |           j
        t          _        t          |           j        t          _        t          |           j        t          _        t          |           j        t          _        t                                                       t          j                    | _        t          j        | j                   t(          j        dk    rCt          j                    }|                    | j                   t          j        |           d S d S r  )r   _get_running_loop_get_running_loop_saved_set_running_loop_set_running_loop_savedget_running_loopget_running_loop_savedr  get_event_loop_savedr  _get_running_loop_impl_set_running_loop_implget_running_loop_implget_event_loop_implr   rs   r   r/   r2   r0   r    r!   r  r  r  r  s     r   r   zGetEventLoopTestsMixin.setUp
  s;   '-'?$'-'?$&,&=#$*$9!#'::#D #'::#D "&t**"B $T

 >$(JJ$E!$(JJ$E!#'::#C !%d!?*,,	ty)))<7"".00G	***%g..... #"r   c                 p   	 t           j        dk    rt          j        d            t	                                                       | j                                         t          j        d            | j	        t          _        | j        t          _        | j        t          _        | j        t          _        | j	        t          _        | j        t          _        | j        t          _        | j        t          _        d S # | j                                         t          j        d            | j	        t          _        | j        t          _        | j        t          _        | j        t          _        | j	        t          _        | j        t          _        | j        t          _        | j        t          _        w xY wr  )r    r!   r   r  rs   r   r2   rA   r0   r  r   r  r  r  r  r  r  r  r   s    r   r   zGetEventLoopTestsMixin.tearDown
  sG   	?|w&&)$///GGIOO"4((('+'CF$'+'CF$&*&AF#$($=F!(,(DG%(,(DG%'+'BG$%)%>G""" IOO"4((('+'CF$'+'CF$&*&AF#$($=F!(,(DG%(,(DG%'+'BG$%)%>G">>>>s   AC> >B7F5r   c                      t          j                                          t                      fd}                      j                             |                      d           d S )Nc                     K   t           j                                        } j                            | t
                     d {V }|                                  |S r   )
concurrentfuturesProcessPoolExecutorr2   r  r3   shutdown)poolr  r7   s     r   r\  zDGetEventLoopTestsMixin.test_get_event_loop_new_process.<locals>.main
  sp      !)==??#y88D F  F F F F F F Fr   r-   )r   *skip_if_broken_multiprocessing_synchronizer  multiprocessing_cleanup_testsr   r2   r1   )r7   r\  s   ` r   test_get_event_loop_new_processz6GetEventLoopTestsMixin.test_get_event_loop_new_process
  s     >@@@OO9:::     	,,TTVV44    r   c                      G d dt                      G fddt          j                  }t          j                    }	 t          j         |                       t          j                                                   5  t          j                     d d d            n# 1 swxY w Y   t          j        d                                           5  t          j                     d d d            n# 1 swxY w Y    	                    t          d          5  t          j                     d d d            n# 1 swxY w Y                        t          j                    d             fd}                     |                       t          j                                                  5  t          j                     d d d            n# 1 swxY w Y   t          j        d                                           5  t          j                     d d d            n# 1 swxY w Y   t          j        |                                            n0# t          j        |                                            w w xY w 	                    t          d          5  t          j                     d d d            n# 1 swxY w Y                        t          j                    d            d S )Nc                       e Zd ZdS )RGetEventLoopTestsMixin.test_get_event_loop_returns_running_loop.<locals>.TestErrorN)rD   rE   rF   r   r   r   	TestErrorr    s        Dr   r  c                       e Zd Z fdZdS )OGetEventLoopTestsMixin.test_get_event_loop_returns_running_loop.<locals>.Policyc                     r   r   )r7   r  s    r   r  z^GetEventLoopTestsMixin.test_get_event_loop_returns_running_loop.<locals>.Policy.get_event_loop  s    r   N)rD   rE   rF   r  )r  s   r   Policyr    s.                     r   r  
no runningc                     K                        t          j                                                     t          j                                                     t          j                                d S r   ro  r   r  r  r  rx  s   r   r  zMGetEventLoopTestsMixin.test_get_event_loop_returns_running_loop.<locals>.func  d      g466===g688$???g7994@@@@@r   )r  r   r  r[  r   r/   r   r  r0   r  r   r  ro  r  r1   rA   )r7   r  r  r  r  r2   s   `   @@r   (test_get_event_loop_returns_running_loopz?GetEventLoopTestsMixin.test_get_event_loop_returns_running_loop  s   	 	 	 	 		 	 	 		  	  	  	  	  	  	 W3 	  	  	  244
	)&&((333)++D""9-- ) )&((() ) ) ) ) ) ) ) ) ) ) ) ) ) )"4(((""9-- ) )&((() ) ) ) ) ) ) ) ) ) ) ) ) ) ) ''lCC + +(***+ + + + + + + + + + + + + + +MM'355t<<<A A A A A A
 ##DDFF+++"4(((""9-- ) )&((() ) ) ) ) ) ) ) ) ) ) ) ) ) )"4(((""9-- ) )&((() ) ) ) ) ) ) ) ) ) ) ) ) ) ) )*555

 )*555

   ##L,?? 	' 	'$&&&	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	g/11488888s   AI+ 	B)I+ )B--I+ 0B-1,I+ C=1I+ =DI+ DI+ #E7I+ EI+ 
EA6I+ G!I+ !G%%I+ (G%),I+ H5)I+ 5H99I+ <H9=I+ +-J6KKKc                     t          j                    }	 t          j        t          j                               t          j                                         j                   t          j                    }                     |j                   t          j        d             	                    t          d          5  t          j                     d d d            n# 1 swxY w Y    	                    t          d          5  t          j                     d d d            n# 1 swxY w Y                        t          j                    d             fd}                     |                       t          j                                        t          j                               t          j        d             	                    t          d          5  t          j                     d d d            n# 1 swxY w Y   t          j        |                                            n0# t          j        |                                            w w xY w 	                    t          d          5  t          j                     d d d            n# 1 swxY w Y                        t          j                    d            d S )Nz
no currentr  c                     K                        t          j                                                     t          j                                                     t          j                                d S r   r  rx  s   r   r  zNGetEventLoopTestsMixin.test_get_event_loop_returns_running_loop2.<locals>.funcB  r  r   )r   r[  r   r  r/   r  rA   r  r0   r  r   r  ro  r  r1   )r7   r  loop2r  r2   s   `   @r   )test_get_event_loop_returns_running_loop2z@GetEventLoopTestsMixin.test_get_event_loop_returns_running_loop21  s   244
 	)'*H*J*JKKK)++DOODJ'''*,,EOOEK((("4(((''lCC ) )&((() ) ) ) ) ) ) ) ) ) ) ) ) ) ) ''lCC + +(***+ + + + + + + + + + + + + + +MM'355t<<<A A A A A A
 ##DDFF+++"4(((MM'022D999"4(((''lCC ) )&((() ) ) ) ) ) ) ) ) ) ) ) ) ) ) )*555

 )*555

   ##L,?? 	' 	'$&&&	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	g/11488888s   B.I  C%I  %C))I  ,C)-I  D+I  +D//I  2D/3B7I  *H
>I  
HI  HI   -I-J++J/2J/)rD   rE   rF   r  r  r  r  r   r   r    r!   r  r  r  rw   rx   s   @r   r  r  
  s        !! / / / / /4? ? ? ? ?( |w	 	 	&-9 -9 -9^'9 '9 '9 '9 '9 '9 '9r   r  c                   F    e Zd Zej        Zej        Zej        Z	ej
        ZdS )TestPyGetEventLoopN)rD   rE   rF   r   _py__get_running_loopr  _py__set_running_loopr  _py_get_running_loopr  _py_get_event_loopr  r   r   r   r  r  [  s4        #9#9"7 3r   r  c                   F    e Zd Zej        Zej        Zej        Z	ej
        ZdS )TestCGetEventLoopN)rD   rE   rF   r   _c__get_running_loopr  _c__set_running_loopr  _c_get_running_loopr  _c_get_event_loopr  r   r   r   r  r  i  s4        !'!<!'!< & :$6r   r  c                       e Zd Zd ZdS )
TestServerc                    t          j                    }|                     |j                   t	          |          |                    |                    fddd                    }|                     |                                |           |                                 |                    |	                                           d S )Nc                       S r   r   r  s   r   r1  z*TestServer.test_get_loop.<locals>.<lambda>w  s    E r   r9  r   )
r   r/   r  rA   rq   r1   r  r   get_loopwait_closed)r7   r2   r/  r  s      @r   test_get_loopzTestServer.test_get_loops  s    %''
###((););MMMM9VW)X)XYY**D111 2 2 4 455555r   N)rD   rE   rF   r  r   r   r   r  r  q  s#        6 6 6 6 6r   r  c                        e Zd Zd Zd Zd ZdS )TestAbstractServerc                     |                      t                    5  t          j                                                     d d d            d S # 1 swxY w Y   d S r   )r   r  r   AbstractServerrA   r@   s    r   r  zTestAbstractServer.test_close  s    233 	, 	,!##))+++	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	,   &AAAc                 6   t          j                    }|                     |j                   |                     t
                    5  |                    t          j                    	                                           d d d            d S # 1 swxY w Y   d S r   )
r   r/   r  rA   r   r  r1   r   r  r  rR   s     r   test_wait_closedz#TestAbstractServer.test_wait_closed  s    %''
###233 	K 	K##F$9$;$;$G$G$I$IJJJ	K 	K 	K 	K 	K 	K 	K 	K 	K 	K 	K 	K 	K 	K 	K 	K 	K 	Ks   9BBBc                     |                      t                    5  t          j                                                     d d d            d S # 1 swxY w Y   d S r   )r   r  r   r  r  r@   s    r   r  z TestAbstractServer.test_get_loop  s    233 	/ 	/!##,,...	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/r  N)rD   rE   rF   r  r  r  r   r   r   r  r  }  sD        , , ,K K K/ / / / /r   r  __main__)Q__doc__collections.abcrf  concurrent.futuresr  r  r  rU  r!   rD  rR  r5  r  ImportErrorr  r    r  r   rB  r  r  r   r8  rO  r   r   r   r   r	   multiprocessing.utilr
   r  test.test_asyncior   r   r}  r   test.supportr   r   r   r   r   r   r)   r3   r5   rn  rH   rq   r  rz   r   BaseProtocolr   r  r   r   r  TestCaser  r  r  r   r  r
  r  r  r  r  ri  r  r  r  r  _asyncior  r  r  rD   r\  r   r   r   <module>r     s                 				 				  				  JJJJ   
CCC     



               <+++JJJ              # # # # # # # # # # # # P P P P P P 1 1 1 1 1 1       & & & & & & ) ) ) ) ) ) 5 5 5 5 5 5 5 5 5 5( ( (  + + +       #' #' #' #' #''" #' #' #'LH H H H Hk H H H' ' ' ' 'g. ' ' '@!' !' !' !' !'g& !' !' !'H' ' ' ' 'w+ ' ' '2*: *: *: *: *:75 *: *: *:Zu u u u u u u up1[? [? [? [? [? [? [? [?| <7/ / / / /2)2/ / /P P P P P!4!5!+!4P P P P, 	 	 	 	 	"5 	 	 	 wy*++ )	) 	) 	) 	) 	)#:#7#-#6	) 	) 	)0 wy/** L	L 	L 	L 	L 	L"9"6","5	L 	L 	L wy.)) K	K 	K 	K 	K 	K!8!5!+!4	K 	K 	KI I I I I63)2I I I	 	 	oF oF oF oF oF*% oF oF oFdC( C( C( C( C(" C( C( C(Lc c c c cX. c c cLY- Y- Y- Y- Y-(# Y- Y- Y-x`9 `9 `9 `9 `9 `9 `9 `9F4 4 4 4 4/1B 4 4 47OOO
7 7 7 7 72H4E 7 7 7 7	  	 	 	D		6 	6 	6 	6 	6" 	6 	6 	6/ / / / /* / / /$ zHMOOOOO s   - 77>J JJ