
    <e                       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%m&Z&m'Z' d Z(d Z)d Z* G d d          Z+ G d dej,                  Z- G d de-          Z. G d dej/                  Z0 G d dej,                  Z1 G d dej2                  Z3 G d dej4                  Z5 G d d           Z6 G d! d"          Z7ej        d#k    r* G d$ d%e6ej8                  Z9 G d& d'e6e7ej8                  Z:nddl;Z; G d( d)e6          Z< e=e;d*          r G d+ d,e<e7ej8                  Z> e=e;d-          r G d. d/e<e7ej8                  Z? e=e;d0          r G d1 d2e<e7ej8                  Z@ G d3 d%e<e7ej8                  Z9d4 ZA G d5 d6ej8                  ZB G d7 d8ej8                  ZC G d9 d:ej8                  ZD G d; d<ej8                  ZE G d= d>          ZF G d? d@eFej8                  ZG	 ddlHZH G dA dBeFej8                  ZIn# e$ r Y nw xY w G dC dDej8                  ZJ G dE dFej8                  ZKeLdGk    r ejM                     dS dS )HzTests for events.py.    N)mock)win32vxworks)
coroutines)events)proactor_events)selector_events)utils)support)socket_helper)threading_helper)	ALWAYS_EQLARGESTSMALLESTc                  .    t          j        d            d S N)asyncioset_event_loop_policy     4/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>.doit9   s      wr   )r   new_event_loopset_event_looprun_until_complete)r-   loops     r   *_test_get_event_loop_new_process__sub_procr2   8   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.sendB       r   c                     d S r   r   r6   excs     r   throwzCoroLike.throwE   r9   r   c                     d S r   r   r6   s    r   closezCoroLike.closeH   r9   r   c                     d S r   r   r?   s    r   	__await__zCoroLike.__await__K   r9   r   N)__name__
__module____qualname__r8   r=   r@   rB   r   r   r   r4   r4   A   sP                  r   r4   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r6   r1   s     r   __init__zMyBaseProto.__init__S   sO    
!//11DN**,,DIII r   c                 L    | j         |vrt          d| j         d|          d S Nzstate: z, expected: rL   AssertionErrorr6   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 NrJ   	CONNECTEDrK   rY   rL   rO   
set_resultr6   rK   s     r   connection_madezMyBaseProto.connection_made_   sT    "9%%% 
> 	,N%%d+++++	, 	,r   c                 j    |                      d           | xj        t          |          z  c_        d S Nr\   rY   rM   lenr6   datas     r   data_receivedzMyBaseProto.data_receivedf   s0    ;'''s4yy r   c                 >    |                      d           d| _        d S )Nr\   EOF)rY   rL   r?   s    r   eof_receivedzMyBaseProto.eof_receivedj   s!    ;'''


r   c                     |                      dd           d| _        | j        r| j                            d            d S d S )Nr\   ri   CLOSEDrY   rL   rP   r^   r;   s     r   connection_lostzMyBaseProto.connection_lostn   sO    ;...
9 	'I  &&&&&	' 	'r   r   )rC   rD   rE   rO   rP   rR   rY   r`   rg   rj   rn   r   r   r   rG   rG   O   s        ID- - - -S S S, , ,! ! !  ' ' ' ' 'r   rG   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

)superr`   write)r6   rK   	__class__s     r   r`   zMyProto.connection_madev   s4    	***FGGGGGr   rC   rD   rE   r`   __classcell__rt   s   @r   rp   rp   u   sA        H H H H H H H H Hr   rp   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 rI   )rL   rM   rN   rP   rQ   s     r   rR   zMyDatagramProto.__init__~   s5    
**,,DIII r   c                 P    | j         |k    rt          d| j         d|          d S rT   rU   rW   s     r   rY   zMyDatagramProto._assert_state   8    :!! !Q4:!Q!QX!Q!QRRR "!r   c                 L    || _         |                     d           d| _        d S )NrJ   INITIALIZEDrK   rY   rL   r_   s     r   r`   zMyDatagramProto.connection_made   s(    "9%%%"


r   c                 j    |                      d           | xj        t          |          z  c_        d S Nr~   rc   )r6   rf   addrs      r   datagram_receivedz!MyDatagramProto.datagram_received   s0    =)))s4yy r   c                 0    |                      d           d S r   )rY   r;   s     r   error_receivedzMyDatagramProto.error_received   s    =)))))r   c                     |                      d           d| _        | j        r| j                            d            d S d S )Nr~   rl   rm   r;   s     r   rn   zMyDatagramProto.connection_lost   sM    =)))
9 	'I  &&&&&	' 	'r   r   )
rC   rD   rE   rP   rR   rY   r`   r   r   rn   r   r   r   ry   ry   {   s{        D- - - -S S S# # #
! ! !* * *' ' ' ' 'r   ry   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 rI   )rL   rM   rK   rN   rP   rQ   s     r   rR   zMyReadPipeProto.__init__   s>    [
**,,DIII r   c                 P    | j         |k    rt          d| j         d|          d S rT   rU   rW   s     r   rY   zMyReadPipeProto._assert_state   r|   r   c                 t    || _         |                     dg           | j                            d           d S r[   )rK   rY   rL   appendr_   s     r   r`   zMyReadPipeProto.connection_made   s;    "I;'''
+&&&&&r   c                 n    |                      ddg           | xj        t          |          z  c_        d S r[   rc   re   s     r   rg   zMyReadPipeProto.data_received   s5    I{3444s4yy r   c                 h    |                      ddg           | j                            d           d S )NrJ   r\   ri   )rY   rL   r   r?   s    r   rj   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 )Nri   )rJ   r\   ri   rl   )rL   r   rY   rP   r^   r;   s     r   rn   zMyReadPipeProto.connection_lost   s    
""Je$$$:::;;;
(###9 	'I  &&&&&	' 	'r   r   )
rC   rD   rE   rP   rR   rY   r`   rg   rj   rn   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 )NrJ   )rL   rK   rN   rP   rQ   s     r   rR   zMyWritePipeProto.__init__   s5    
**,,DIII r   c                 P    | j         |k    rt          d| j         d|          d S rT   rU   rW   s     r   rY   zMyWritePipeProto._assert_state   r|   r   c                 L    || _         |                     d           d| _        d S r[   r   r_   s     r   r`   z MyWritePipeProto.connection_made   s(    "9%%% 


r   c                     |                      d           d| _        | j        r| j                            d            d S d S Nr\   rl   rm   r;   s     r   rn   z MyWritePipeProto.connection_lost   sM    ;'''
9 	'I  &&&&&	' 	'r   r   )rC   rD   rE   rP   rR   rY   r`   rn   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 )NrJ   c                 :    i | ]}|                                 S r   )rN   ).0fdr1   s     r   
<dictcomp>z1MySubprocessProtocol.__init__.<locals>.<dictcomp>   s'    HHHB 2 2 4 4HHHr      r         )rL   rK   rN   rO   	completedrangedisconnectsrf   
returncoder   Eventgot_datarQ   s    `r   rR   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 rT   rU   rW   s     r   rY   z"MySubprocessProtocol._assert_state   r|   r   c                     || _         |                     d           d| _        | j                            d            d S r[   r]   r_   s     r   r`   z$MySubprocessProtocol.connection_made   s@    "9%%% 
!!$'''''r   c                 r    |                      d           d| _        | j                            d            d S r   )rY   rL   r   r^   r;   s     r   rn   z$MySubprocessProtocol.connection_lost   s9    ;'''
!!$'''''r   c                     |                      d           | j        |xx         |z  cc<   | j        |                                          d S rb   )rY   rf   r   set)r6   r   rf   s      r   pipe_data_receivedz'MySubprocessProtocol.pipe_data_received   sM    ;'''	"br   c                     |                      d           |r"| j        |                             |           d S | j        |                             |           d S rb   )rY   r   set_exceptionr^   )r6   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 rb   )rY   rK   get_returncoder   r?   s    r   process_exitedz#MySubprocessProtocol.process_exited   s/    ;'''.7799r   N)
rC   rD   rE   rR   rY   r`   rn   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#d# Z$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- Z/ ej         ee0d.          d/          d0             Z1d1 Z2ej        d2             Z3 ej         ee0d3          d4          d5             Z4d`d6Z5d`d7Z6d`d8Z7 ej        e du d          d9             Z8ej         ej        e du d          d:                         Z9 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 Z@ ej        ejA        dB          dC             ZBdD ZCdE ZDdF ZE ej        ejA        dB          dG             ZFdH ZGdI ZH ej        eIjJ        dJk    dK          dL             ZK ej        eIjJ        dJk    dK          dM             ZL ej        eIjJ        dJk    dK           ej         eeMdN          dO          dP                         ZN ej        eIjJ        dJk    dK          dQ             ZO ej        eIjJ        dJk    dK          dR             ZP ej        eIjJ        dJk    dK           ej         eeMdN          dO           eQjR        dSdT          dU                                     ZS ej        eIjJ        dJk    dK           ej         eeMdN          dO           eQjR        dSdT          dV                                     ZTdW ZUdX ZVdY ZWdZ ZXd[ ZYd\ ZZ xZ[S )aEventLoopTestsMixinc                     t                                                       |                                 | _        |                     | j                   d S r   )rr   setUpcreate_event_loopr1   r/   r6   rt   s    r   r   zEventLoopTestsMixin.setUp  sC    **,,	DI&&&&&r   c                     | j                                         st          j        | j                    |                                  t          j                     t                                                       d S r   )	r1   	is_closed
test_utilsrun_briefly
doCleanupsr   
gc_collectrr   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   )
assertTruer1   
is_runningr0   )r   r6   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RuntimeErrorr1   r0   )r6   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                    | j                                         }| j                             t          j        d                     | j                                         }|                     d||z
  cxk    odk    nc ||z
             d S )N皙?g{Gz?g?)r1   timer0   r   r   r   )r6   t0t1s      r   test_run_until_completez+EventLoopTestsMixin.test_run_until_complete'  s    Y^^	$$W]3%7%7888Y^^2,,,,,,,,be44444r   c                 r      fd} |            }                      t           j        j        |           d S )Nc                  r   K    j                                          t          j        d           d {V  d S )Nr   )r1   stopr   r   r?   s   r   cbz?EventLoopTestsMixin.test_run_until_complete_stopped.<locals>.cb/  sA      INN-$$$$$$$$$$$r   )r   r   r1   r0   )r6   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   r1   r   argresultsr6   s    r   callbackz5EventLoopTestsMixin.test_call_later.<locals>.callback9  s-    NN3INNr   r   zhello world)r1   
call_laterrun_foreverassertEqualr6   r   r   s   ` @r   test_call_laterz#EventLoopTestsMixin.test_call_later6  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   r6   s     r   r   z4EventLoopTestsMixin.test_call_soon.<locals>.callbackD  s1    NND$<(((INNr   r,   world)r,   r   )r1   	call_soonr   r   r   s   ` @r   test_call_soonz"EventLoopTestsMixin.test_call_soonA  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   rd   r1   r   r   s    r   r   z?EventLoopTestsMixin.test_call_soon_threadsafe.<locals>.callbackP  F    NN37||q  	      ! r   c                  f    j                              d                                            d S r+   )r1   call_soon_threadsaferelease)r   lockr6   s   r   run_in_threadzDEventLoopTestsMixin.test_call_soon_threadsafe.<locals>.run_in_threadU  s,    I**8W===LLNNNNNr   targetr   r,   )
	threadingLockacquireThreadstartr1   r   r   joinr   )r6   r   tr   r   r   s   `  @@@r   test_call_soon_threadsafez-EventLoopTestsMixin.test_call_soon_threadsafeL  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>.callbackf  r   r   r,   r   )r1   r   r   r   r   r   s   ` @r   %test_call_soon_threadsafe_same_threadz9EventLoopTestsMixin.test_call_soon_threadsafe_same_threadc  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>.runq  s    ,..//r   yo)r1   run_in_executorr0   r   assertNotEqualr   r  )r6   r  f2res	thread_ids        r   test_run_in_executorz(EventLoopTestsMixin.test_run_in_executorp  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?)r1   r
  cancelr0   shutdown_default_executorr@   r   r   r   r   assertFalse)r6   r  r  r  r  s       @r   test_run_in_executor_cancelz/EventLoopTestsMixin.test_run_in_executor_cancelx  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   r1   remove_readerfilenor@   )rf   
bytes_readrr6   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   rd   r$  s   r   <lambda>z:EventLoopTestsMixin.test_reader_callback.<locals>.<lambda>      J10D r   s   defc                  *    t                     dk    S )N   r(  r)  s   r   r*  z:EventLoopTestsMixin.test_reader_callback.<locals>.<lambda>  r+  r   s   abcdef)socket
socketpairsetblocking	bytearrayr1   
add_readerr#  r   r8   r   	run_untilr@   r   r   r   )r6   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   )r8   r1   r   )rf   r6   r4  s    r   writerz8EventLoopTestsMixin.test_writer_callback.<locals>.writer  s*    FF4LLLINNr   s   xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxr   )r.  r/  r0  r1   
add_writerr#  r   r   remove_writerr  r@   r  rd   r   )r6   r%  r8  rf   readr4  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   rA  s   r   r*  z=EventLoopTestsMixin.test_add_signal_handler.<locals>.<lambda>  s     r   )r   	TypeErrorr1   add_signal_handlerremove_signal_handler
ValueErrorsignalNSIGr   r=  r  SIGINToskillgetpidr   r3  r   r   	getsignaldefault_int_handlerr6   rC  rB  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 r@  )r1   r   )rB  r6   s   r   rC  zLEventLoopTestsMixin.test_signal_handling_while_selecting.<locals>.my_handler  s$    aKFINNr   {Gz?<   r   
r1   rH  rK  rU  rV  ITIMER_REALr   r   r   r   rS  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 r@  )r   r1   r   )r  rB  r6   	some_argss    r   rC  zAEventLoopTestsMixin.test_signal_handling_args.<locals>.my_handler  s:    aKFT9---INNr   r   rZ  r   r[  )r6   rC  rB  ra  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   )r1   r0   assertIsInstancer   	TransportProtocolassertIsrK   assertIsNotNoneget_extra_inforP   assertGreaterrM   r@   )r6   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r1   rp   r1   r?   s   r   r*  z<EventLoopTestsMixin.test_create_connection.<locals>.<lambda>      TY/// r   )r   run_test_serverr1   create_connectionaddressrp  )r6   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 rs  ru  r?   s   r   r*  zAEventLoopTestsMixin.test_create_unix_connection.<locals>.<lambda>(  rv  r   )r(   r   run_test_unix_serverr1   create_unix_connectionry  rp  )r6   rm  rz  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 )Nrd  peernamepeercertcipherr   r   r   r   
ssl_objectcompression)ri  rj  r   re  r#   rd   strr%   r  r  getpeercert)r6   clientrm  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   )r1   r0   re  r   rf  rg  r   rt   rC   lowerr  rP   rk  rM   r@   )r6   rl  rm  r  rn  ro  s         r   _basetest_create_ssl_connectionz3EventLoopTestsMixin._basetest_create_ssl_connectionK  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  r6   s       r   _dummy_ssl_create_contextzREventLoopTestsMixin._test_create_ssl_connection.<locals>._dummy_ssl_create_context_  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)	r6   rz  rx  rm  r  r{  r  mcms	   `        r   _test_create_ssl_connectionz/EventLoopTestsMixin._test_create_ssl_connectionW  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 rs  ru  r?   s   r   r*  z@EventLoopTestsMixin.test_create_ssl_connection.<locals>.<lambda>  rv  r   r  )r   rw  	functoolspartialr1   rx  ry  r  )r6   rz  rx  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 rs  ru  r?   s   r   r*  zEEventLoopTestsMixin.test_create_ssl_unix_connection.<locals>.<lambda>  rv  r   	127.0.0.1)server_hostnamer  )	r(   r   r  r  r  r1   r  ry  r  )r6   rm  rz  rx  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 rs  ru  r?   s   r   r*  zGEventLoopTestsMixin.test_create_connection_local_addr.<locals>.<lambda>  rv  r   
local_addrr   rd  r   )r   rw  r   find_unused_portr1   rx  ry  r0   rK   rj  r   r@   )r6   rz  portfrn  ro  rX   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   )r.  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 rs  ru  r?   s   r   r*  z]EventLoopTestsMixin.test_create_connection_local_addr_skip_different_family.<locals>.<lambda>      G+++ r   	localhostr  r   r  r1   r  rx  r   OSErrorr0   r6   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  )r.  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 rs  ru  r?   s   r   r*  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 rs  ru  r?   s   r   r*  zNEventLoopTestsMixin.test_create_connection_local_addr_in_use.<locals>.<lambda>  rv  r   r  )r   rw  r1   rx  ry  r   r  r0   r   r  errno
EADDRINUSEassertInr  strerror)r6   rz  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   )rr   rn   r   r   )r6   r<   rt   r1   s     r   rn   zQEventLoopTestsMixin.test_connect_accepted_socket.<locals>.MyProto.connection_lost  s5    '',,,ty)))))r   c                 ~    t                                          |           | j                                       d S r   )rr   rg   rK   rs   )r6   rf   rt   expected_responses     r   rg   zOEventLoopTestsMixin.test_connect_accepted_socket.<locals>.MyProto.data_received  s8    %%d+++$$%677777r   )rC   rD   rE   rn   rg   rv   )rt   r  r1   s   @r   rp   r    s\        * * * * * *8 8 8 8 8 8 8 8 8 8r   rp   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)r.  wrap_socketconnectsendallr  r@   	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   daemonrt  c                       S r   r   protos   r   r*  zBEventLoopTestsMixin.test_connect_accepted_socket.<locals>.<lambda>   s     r   r  rl   )r1   rG   r.  create_servergetsocknamer   r   r   acceptr0   connect_accepted_socketr   rK   r@   r   join_threadr  is_aliver   rL   rM   rd   )r6   
server_sslr  rp   lsockr  threadconn_r   r  r1   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  )r6   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)r.  
addCleanupr@   r1   r  rp   r   LOOPBACK_TIMEOUTassertRaisesRegexrJ  r0   )r6   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 )Nr-  r  r   )r.  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   )r1   create_task)r  kwdsr  r6   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>-  s.     <; <; <;%)r1a <; <; <;r   c                  ,    t           j                  S r   ru  r?   s   r   r*  zBEventLoopTestsMixin.create_server_multiple_hosts.<locals>.<lambda>2  s    GDI,>,> r   r  c                 B    h | ]}|                                 d          S )r   )getsockbyname)r   r  s     r   	<setcomp>zCEventLoopTestsMixin.create_server_multiple_hosts.<locals>.<setcomp>5  s)    KKKD**,,Q/KKKr   )r   r.  r  r  r  r1   r  r   Mock_start_serving_stop_servingr  r0   r
  r@   socketsr   )
r6   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.8r,  )r*  r.  r  r?   s    r   &test_create_server_multiple_hosts_ipv4z:EventLoopTestsMixin.test_create_server_multiple_hosts_ipv48  s6    ))&.*K*K*K	M 	M 	M 	M 	Mr   c                 J    |                      t          j        g d           d S )N)r  z::2r  )r*  r.  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   r*  z8EventLoopTestsMixin.test_create_server.<locals>.<lambda>B  s    E r   0.0.0.0r   r   r     xxxr\   c                       j         dk    S r   rM   r  s   r   r*  z8EventLoopTestsMixin.test_create_server.<locals>.<lambda>O      q0@ r   r   rd  r  rl   )rp   r1   r  r0   r   rd   r$  r  r.  r  r  rO   rL   r   r3  rM   ri  rK   rj  r@   rP   )r6   r  r(  r  r  r  r  r  s          @r   test_create_serverz&EventLoopTestsMixin.test_create_server@  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   r*  zCEventLoopTestsMixin.test_create_server_reuse_port.<locals>.<lambda>h      E r   r2  r   r   c                       S r   r   r  s   r   r*  zCEventLoopTestsMixin.test_create_server_reuse_port.<locals>.<lambda>u  r;  r   T)
reuse_port)rp   r1   r  r0   r   rd   r$  r  
getsockoptr.  
SOL_SOCKETr8  r@   r   r   r   )r6   r  r(  r  r  s       @r   test_create_server_reuse_portz1EventLoopTestsMixin.test_create_server_reuse_portd  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   )rN  pathexistsunlink)rC  s   r   r*  z7EventLoopTestsMixin._make_unix_server.<locals>.<lambda>  s"    t 4 4 H4 r   )r   gen_unix_socket_pathr
  r1   create_unix_serverr0   )r6   factoryr  r  r(  rC  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 )	Nrt  c                       S r   r   r  s   r   r*  z=EventLoopTestsMixin.test_create_unix_server.<locals>.<lambda>  s    e r   r   r3  r\   c                       j         dk    S r   r5  r  s   r   r*  z=EventLoopTestsMixin.test_create_unix_server.<locals>.<lambda>  r6  r   r   rl   )rp   r1   rI  r   rd   r$  r.  AF_UNIXr  r  r0   rO   rL   r   r3  rM   rK   r@   rP   )r6   r(  rC  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   rM  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 )Nrt  c                       S r   r   r  s   r   r*  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)rp   r1   r.  rG  r  rJ  r0   )r6   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)r6   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  )r\  r1   r  r0   r$  r  r   )
r6   rH  rY  rZ  r[  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  )r\  rI  )r6   rH  rY  rZ  r[  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 )
Nrt  c                       S r   r   r  s   r   r*  z<EventLoopTestsMixin.test_create_server_ssl.<locals>.<lambda>  r;  r   r  r3  r\   c                       j         dk    S r   r5  r  s   r   r*  z<EventLoopTestsMixin.test_create_server_ssl.<locals>.<lambda>  r6  r   r   r  rl   )rp   r1   r^  r   ONLYCERTONLYKEYrx  rG   r  r0   rs   rO   r   rL   r3  rM   r  rK   r@   rP   )r6   r(  r  r  f_cr  ro  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 )
Nrt  c                       S r   r   r  s   r   r*  zAEventLoopTestsMixin.test_create_unix_server_ssl.<locals>.<lambda>  r;  r   r  r  r  r3  r\   c                       j         dk    S r   r5  r  s   r   r*  zAEventLoopTestsMixin.test_create_unix_server_ssl.<locals>.<lambda>  r6  r   r   rl   )rp   r1   r`  r   rd  re  r  rG   r  r0   rs   rO   r   rL   r3  rM   rK   r@   rP   )r6   r(  rC  rf  r  ro  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 )Nrt  c                       S r   r   r  s   r   r*  zJEventLoopTestsMixin.test_create_server_ssl_verify_failed.<locals>.<lambda>  r;  r   check_hostnameTr  call_exception_handler(?i)certificate.verify.failed)rp   r1   r^  r   SIGNED_CERTFILEr  rT  PROTOCOL_TLS_CLIENTrV  rW  CERT_REQUIREDverify_moder  ro  rx  r   r  objectr  r  r  r0   r   assertIsNonerK   r@   r6   r(  r  r  sslcontext_clientrf  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 )	Nrt  c                       S r   r   r  s   r   r*  zOEventLoopTestsMixin.test_create_unix_server_ssl_verify_failed.<locals>.<lambda>$  r;  r   ro  Tinvalidrj  rp  rq  )rp   r1   r`  r   rr  r  rT  rs  rV  rW  rt  ru  r  ro  r  r   r  rv  r  r  r  r0   r   rw  rK   r@   )r6   r(  rC  ry  rf  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 )	Nrt  c                       S r   r   r  s   r   r*  zIEventLoopTestsMixin.test_create_server_ssl_match_failed.<locals>.<lambda>A  r;  r   r  ro  Tr  rp  z=IP address mismatch, certificate is not valid for '127.0.0.1')rp   r1   r^  r   rr  r  rT  rs  rV  rW  rt  ru  load_verify_locations
SIGNING_CAr  ro  rx  r   r  rv  r  r  CertificateErrorr0   rw  rK   r@   rx  s         @r   #test_create_server_ssl_match_failedz7EventLoopTestsMixin.test_create_server_ssl_match_failed=  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 )Nrt  c                       S r   r   r  s   r   r*  zJEventLoopTestsMixin.test_create_unix_server_ssl_verified.<locals>.<lambda>`  r;  r   r  ro  Tr  rj  )rp   r1   r`  r   rr  r  rT  rs  rV  rW  rt  ru  r  r  r  ro  r  r0   rO   rK   r@   rP   )r6   r(  rC  ry  rf  r  ro  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 )	Nrt  c                       S r   r   r  s   r   r*  zEEventLoopTestsMixin.test_create_server_ssl_verified.<locals>.<lambda>z  r;  r   r  ro  Tr  rj  )r  r  )rp   r1   r^  r   rr  r  rT  rs  rV  rW  rt  ru  r  r  r  ro  rx  r0   rO   r  PEERCERTrK   r@   rP   )	r6   r(  r  r  ry  rf  r  ro  r  s	           @r   test_create_server_ssl_verifiedz3EventLoopTestsMixin.test_create_server_ssl_verifiedv  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   rr   r`   r^   )r6   rK   rt   r  s     r   r`   zPEventLoopTestsMixin.test_create_server_sock.<locals>.TestMyProto.connection_made  s5    ''	222  &&&&&r   ru   )rt   r  s   @r   TestMyProtor    s>        ' ' ' ' ' ' ' ' ' 'r   r  r2  r   rQ  r   r2  r  r3  )r1   rN   rp   r.  r  r0   r$  r   r#  r  r  r8   r@   )
r6   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  rQ  r   r  r  )r.  r  r1   rp   r0   r$  r  r   r  r   r  r  r  r@   )r6   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  )r6   rK   rt   f_protos     r   r`   zVEventLoopTestsMixin.test_create_server_dual_stack.<locals>.TestMyProto.connection_made  s5    ''	222""4(((((r   ru   )rt   r  s   @r   r  r    s>        ) ) ) ) ) ) ) ) ) )r   r  r   Tr  r   r   r  r3  r  )r1   rN   rp   r   r  r  r0   r  r  r  assertGreaterEqualr.  r  r8   rK   r@   r  )
r6   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 )Nr2  r   r  r3  )r1   r  rp   r0   r$  r  r.  r  r8   r@   r   ConnectionRefusedError)r6   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 rs  )rr   rR   r1   )
inner_selfrt   r6   s    r   rR   zXEventLoopTestsMixin._test_create_datagram_endpoint.<locals>.TestMyDatagramProto.__init__  s&      di 00000r   c                     t                                          ||           | j                            d|z   |           d S )Ns   resp:)rr   r   rK   sendto)r6   rf   r   rt   s      r   r   zaEventLoopTestsMixin._test_create_datagram_endpoint.<locals>.TestMyDatagramProto.datagram_received  s?    ))$555%%htmT:::::r   )rC   rD   rE   rR   r   rv   )rt   r6   s   @r   TestMyDatagramProtor    sW        1 1 1 1 1 1; ; ; ; ; ; ; ; ;r   r  )r  r  rd  r~   c                  .    t           j                  S rs  ry   r1   r?   s   r   r*  zDEventLoopTestsMixin._test_create_datagram_endpoint.<locals>.<lambda>      O333 r   )remote_addrr3  c                       j         S r   r5  )r(  s   r   r*  zDEventLoopTestsMixin._test_create_datagram_endpoint.<locals>.<lambda>  	     r   r   c                       j         S r   r5  )r  s   r   r*  zDEventLoopTestsMixin._test_create_datagram_endpoint.<locals>.<lambda>  r  r      rl   )ry   r1   create_datagram_endpointr0   rj  r.  getnameinfoNI_NUMERICHOSTNI_NUMERICSERVre  r   rf  r   rL   rh  rK   r  r   r3  rM   ri  r@   rP   )r6   r  r  r  r  s_transportrd  r  r  rK   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  r.  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  r.  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 rs  r  r?   s   r   r*  zHEventLoopTestsMixin.test_create_datagram_endpoint_sock.<locals>.<lambda>?  r  r   rQ  )r1   r0   r  r.  
SOCK_DGRAMr0  bindfailr  re  r   rf  ry   r@   rP   )r6   r  local_addressinfosr  r  r  cnamery  r  rn  ro  s   `           r   "test_create_datagram_endpoint_sockz6EventLoopTestsMixin.test_create_datagram_endpoint_sock,  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                    |                                  }t          |t          j                  s)|                                 |                     d           |                     d|j                   |                                 |                     d|j                   |                     |j	                   |                     |j
                   d S )Nz#loop is not a BaseSelectorEventLoopr   r   )r   
isinstancer	   BaseSelectorEventLoopr@   skipTestr   _internal_fdsrw  _csock_ssockrQ   s     r   test_internal_fdsz%EventLoopTestsMixin.test_internal_fdsF  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 )Nrt  rbr  c                  ,  K   j                             fd           d {V \  } }                    |                               | j                                       ddgj                                       dj                   d S )Nc                       S r   r   r  s   r   r*  zEEventLoopTestsMixin.test_read_pipe.<locals>.connect.<locals>.<lambda>\  s     r   rJ   r\   r   r1   connect_read_piperh  rK   r   rL   rM   )r   ppipeobjr  r6   s     r   r  z3EventLoopTestsMixin.test_read_pipe.<locals>.connectZ  s      44w( ( ( ( ( ( ( (DAqMM!U###MM!U_---i5u{CCCQ-----r      1c                       j         dk    S r@  r5  r  s   r   r*  z4EventLoopTestsMixin.test_read_pipe.<locals>.<lambda>e      0A r   r      2345c                       j         dk    S Nr   r5  r  s   r   r*  z4EventLoopTestsMixin.test_read_pipe.<locals>.<lambda>i  r  r   rJ   r\   r   rJ   r\   ri   rl   pipe)r   r1   rN  r  ioopenr0   rs   r   r3  r   rM   rL   r@   rP   ri  rK   rj  )r6   rpipewpiper  r  r  s   `   @@r   test_read_pipez"EventLoopTestsMixin.test_read_pipeR  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 )	Nrt  r  r  r4  zutf-8)encodingc                     K                        fd           d {V \  } }                    fd           d {V \  }}| |fS )Nc                       S r   r   
read_protos   r   r*  zSEventLoopTestsMixin.test_unclosed_pipe_transport.<locals>.connect.<locals>.<lambda>  s    
 r   c                       S r   r   write_protos   r   r*  zSEventLoopTestsMixin.test_unclosed_pipe_transport.<locals>.connect.<locals>.<lambda>  s     r   )r  connect_write_pipe)read_transportr   write_transportr1   r  rpipeobjwpipeobjr  s      r   r  zAEventLoopTestsMixin.test_unclosed_pipe_transport.<locals>.connect  s      &*&<&<""""H'. '. !. !. !. !. !. !.NA'+'>'>####X(/ (/ "/ "/ "/ "/ "/ "/OQ!?22r   r  )r   r   r   rN  r  r  r  r0   r@   r  repr_pipe)r6   r  r  r  r  r  r1   r  r  r  r  s         @@@@@r   test_unclosed_pipe_transportz0EventLoopTestsMixin.test_unclosed_pipe_transportt  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 )Nrt  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   r*  zKEventLoopTestsMixin.test_read_pty_output.<locals>.connect.<locals>.<lambda>  s    U r   rJ   r\   r   r  )r   r  master_read_objr  r6   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   r5  r  s   r   r*  z:EventLoopTestsMixin.test_read_pty_output.<locals>.<lambda>  s	     r   r   r  c                       j         dk    S r  r5  r  s   r   r*  z:EventLoopTestsMixin.test_read_pty_output.<locals>.<lambda>  r  r   rJ   r\   r   r  r  )r   r1   rN  r  r  r  r0   rs   r   r3  r   rM   rL   r@   rK   rP   ri  rj  )r6   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  rt  c                       S r   r   r  s   r   r*  z5EventLoopTestsMixin.test_write_pipe.<locals>.<lambda>      u r   r\   r  c                 V    t          j        d          }| |z  } t          |           S r  rN  r;  rd   )rf   chunkr  s     r   r&  z3EventLoopTestsMixin.test_write_pipe.<locals>.reader  s)    GE4((EEMDt99r   c                  "                dk    S r@  r   rf   r&  s   r   r*  z5EventLoopTestsMixin.test_write_pipe.<locals>.<lambda>      t0A r   r  c                  "                dk    S r  r   r	  s   r   r*  z5EventLoopTestsMixin.test_write_pipe.<locals>.<lambda>  r
  r      12345r  rl   )rN  r  r  r  r   r1   r  r0   rh  rK   r   rL   rs   r1  r   r3  r@   ri  rj  rP   )
r6   r  r  r  rK   r  rf   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  rt  c                       S r   r   r  s   r   r*  zIEventLoopTestsMixin.test_write_pipe_disconnect_on_close.<locals>.<lambda>  r  r   r\   r  rl   )r.  r/  r0  r  r  detachr   r1   r  r0   rh  rK   r   rL   rs   	sock_recvr@   rP   )	r6   rsockwsockr  r  rK   r  rf   r  s	           @r   #test_write_pipe_disconnect_on_closez7EventLoopTestsMixin.test_write_pipe_disconnect_on_close  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   r-  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   rt  c                       S r   r   r  s   r   r*  z4EventLoopTestsMixin.test_write_pty.<locals>.<lambda>  r  r   r\   r  c                 V    t          j        d          }| |z  } t          |           S r  r  rf   r  r  s     r   r&  z2EventLoopTestsMixin.test_write_pty.<locals>.reader  )    GFD))EEMDt99r   c                  "                dk    S r@  r   r	  s   r   r*  z4EventLoopTestsMixin.test_write_pty.<locals>.<lambda>  r
  r   timeoutr  c                  "                dk    S r  r   r	  s   r   r*  z4EventLoopTestsMixin.test_write_pty.<locals>.<lambda>  r
  r   r  r  rl   )rN  r  r  r  r   r1   r  r0   rh  rK   r   rL   rs   r1  r   r3  r   SHORT_TIMEOUTr@   ri  rj  rP   )
r6   r  slave_write_objr  rK   r  rf   r  r  r&  s
         @@@@r   test_write_ptyz"EventLoopTestsMixin.test_write_pty  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   rt  c                       S r   r   r  s   r   r*  z<EventLoopTestsMixin.test_bidirectional_pty.<locals>.<lambda>2  s    : r   rJ   r\   r  c                       S r   r   r  s   r   r*  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>.readerE  r  r   r  c                  "                dk    S r@  r   r	  s   r   r*  z<EventLoopTestsMixin.test_bidirectional_pty.<locals>.<lambda>K  r
  r   r     ac                       j         dk    S r@  r5  r  s   r   r*  z<EventLoopTestsMixin.test_bidirectional_pty.<locals>.<lambda>R      
0AQ0F r   r   r  c                  "                dk    S r  r   r	  s   r   r*  z<EventLoopTestsMixin.test_bidirectional_pty.<locals>.<lambda>Y  r
  r   r  s   bcdec                       j         dk    S r  r5  r  s   r   r*  z<EventLoopTestsMixin.test_bidirectional_pty.<locals>.<lambda>`  r(  r   r   r  rl   )rN  r  dupttysetrawr  r  r   r1   r  r0   rh  rK   r   rL   rM   r   r  r1  rs   r   r3  r   r  r@   rP   )r6   
read_slavewrite_slaveslave_read_objread_connectr  r  r  write_connectr  rf   r  r  r&  r  s             @@@@@r   test_bidirectional_ptyz*EventLoopTestsMixin.test_bidirectional_pty%  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                 v    t          j                    \  }}|                    d            j                             j                            |d                    t          dd           }|                     |j                    fd}t          j
                    } j                             |                      } j                                         t          j
                    |z
  }                     |d                                |                                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)r1   r   r  r   CancelledErrorr   )r  r  r6   s    r   mainz:EventLoopTestsMixin.test_prompt_cancellation.<locals>.mainy  s      !	##AH---  ) " " "!"
 	    	    Js&   '/ A  A A  AA   A;r   r7  )r.  r/  r0  r1   r  r  getattrr   pendingr   	monotonicr   
assertLessr   resultr   r   r8  r  r#  r@   )	r6   r%  r4  r5  r9  r   r   elapsedr  s	   `       @r   test_prompt_cancellationz,EventLoopTestsMixin.test_prompt_cancellationq  s    ""1	eI!!$)"5"5a";";<<Qd##>OOBJ'''
	 
	 
	 
	 
	 
	   I!!$$&&))	.""U*%%%[111'0!(;;;>RZ(((	"""										r   c                 0     fd} j         j        d j         _        | j         _         fd} j                              |                                             j         j        d j         j         j         j        j        j        d           d S )Nc                  F    j         xj        dz  c_                       d S r@  )r1   _run_once_counter)orig_run_oncer6   s   r   	_run_oncez<EventLoopTestsMixin.test_timeout_rounding.<locals>._run_once  s(    I''1,''MOOOOOr   r   c                    K   j         } 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 )NrY  g-C6?gư>g:0yE>g|=)r1   r   r   r1   r6   s    r   waitz7EventLoopTestsMixin.test_timeout_rounding.<locals>.wait  s      9D-%%%%%%%%%-%%%%%%%%%-%%%%%%%%%-%%%%%%%%%-&&&&&&&&&&&r      )clock_resolutionselector)	r1   rE  rC  r0   assertLessEqual_clock_resolution	_selectorrt   rC   )r6   rE  rH  rD  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   r*  zCEventLoopTestsMixin.test_remove_fds_after_closing.<locals>.<lambda>      4 r   )
r   r.  r/  r
  r@   r2  r9  r  r"  r:  r6   r1   r   r%  r4  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   r*  z@EventLoopTestsMixin.test_add_fds_after_closing.<locals>.<lambda>  rR  r   )	r   r.  r/  r
  r@   r   r   r2  r9  rS  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   )r1   r@   rG  s    r   
close_loopzEEventLoopTestsMixin.test_close_running_event_loop.<locals>.close_loop  s      IOOr   )r1   r   r   r0   )r6   rZ  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   r*  z0EventLoopTestsMixin.test_close.<locals>.<lambda>  s    u r   g      ?g        )r1   r@   r
  r   r   r   rN   r0   r   r   r   call_atr   r  rH  rK  SIGTERMr
  rB   next)r6   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   )\rC   rD   rE   r   r   r   r   r   r   r   r  r  r  r  r5  r<  unittest
skipUnlessr  rK  rT  r]  rb  rp  r|  r   skip_unless_bind_unix_socketr  r  r  r  skipIfr  r  r  r  r  r  r  r  r  r  r   r  r*  r-  r/  r7  r.  r@  rI  rN  rR  r\  r^  r`  rg  rl  rz  r~  r  r  r  r  r  IPV6_ENABLEDr  r  r  r  r  r  r  r   r    r  r  rN  r   r  r  r   requires_mac_verr   r3  r@  rO  rT  rW  r[  rg  rv   rw   s   @r   r   r     s	       ' ' ' ' '
    E E E$5 5 5> > >	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. . .4
' 
' 
' 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! ! !FB B B4
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    re  r%   r   rK  rb  r6   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 rq  )r   r    re  r%   r   rK  r=  rr  s     r   check_killedz!SubprocessTestsMixin.check_killed  rt  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   )rN  rC  r   dirname__file__r1   subprocess_execr  r  r   r   
executabler0   re  rO   r   rL   get_pipe_transportrs   r   rH  r   r  r@   r   rv  r   rf   r6   progr  transpr  stdins         r   test_subprocess_execz)SubprocessTestsMixin.test_subprocess_exec  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 )Nrx  r\   r   s   Python r   s
   The Winnerry  )rN  rC  r   rz  r{  r1   r|  r  r  r   r   r}  r0   re  rO   r   rL   r~  rs   r   rH  clearrf   r   r  r@   r   rv  r   r  s         r   test_subprocess_interactivez0SubprocessTestsMixin.test_subprocess_interactive  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   )rP   )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   )r1   subprocess_shellr  r  r   r0   re  rO   r~  r@   r   r   r   r   allr   valuesrf   rstripr6   r  r  r  s       r   test_subprocess_shellz*SubprocessTestsMixin.test_subprocess_shell3  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   r1   r  r  r  r   r0   re  r   r   r   r@   r  s       r   test_subprocess_exitcodez-SubprocessTestsMixin.test_subprocess_exitcodeC  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  )r1   r  r  r  r   r0   re  rw  r~  r   r   r   r@   r  s       r   "test_subprocess_close_after_finishz7SubprocessTestsMixin.test_subprocess_close_after_finishN  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 Nrx  )rN  rC  r   rz  r{  r1   r|  r  r  r   r   r}  r0   re  rO   rO  r   rv  r   r@   r6   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  )rN  rC  r   rz  r{  r1   r|  r  r  r   r   r}  r0   re  rO   	terminater   rs  r   r@   r  s        r   test_subprocess_terminatez.SubprocessTestsMixin.test_subprocess_terminatel  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  )rK  SIGHUPSIG_DFLrN  rC  r   rz  r{  r1   r|  r  r  r   r   r}  r0   re  rO   send_signalr   r   r   r@   )r6   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)rN  rC  r   rz  r{  r1   r|  r  r  r   r   r}  r0   re  rO   r~  rs   r   r@   r   rf   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   )rN  rC  r   rz  r{  r1   r|  r  r  r   r   r}  
subprocessSTDOUTr0   re  rO   r~  ri  rw  rs   r   r   rf   r!   r   r@   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  r3  r   r   s   ERR:BrokenPipeErrors   ERR:OSError)rN  rC  r   rz  r{  r1   r|  r  r  r   r   r}  r0   re  rO   r~  rs   r   rH  r   rf   r@   r   r    r   r  r   rv  r   )r6   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_group  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)r1   r|  r   SubprocessProtocol)r  r6   s    r   r  zGSubprocessTestsMixin.test_subprocess_exec_invalid_args.<locals>.connect  s^      +$)+*           r   Tuniversal_newlines   bufsizeshellr   rJ  r1   r0   r6   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  )r1   r  r   r  )cmdr  r6   s     r   r  zHSubprocessTestsMixin.test_subprocess_shell_invalid_args.<locals>.connect   sk       ,$),*           r   lsz-lTr  r  r  Fr  r   r  r  s   ` r   "test_subprocess_shell_invalid_argsz7SubprocessTestsMixin.test_subprocess_shell_invalid_args  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)rC   rD   rE   rs  rv  r  r  r  r  r  r  r  rh  rk  r   r    r  r  r  r  r  r  r  r   r   r   ro  ro    s)       : : :: : :> > >*, , ,6   	 	 	* * *       X_S\W,.ABB6 6 CB60. . .*. . .2 ,  ,  ,D
 
 
> > >? ? ? ? ?r   ro  r   c                       e Zd Zd ZdS )SelectEventLoopTestsc                 (    t          j                    S r   )r   SelectorEventLoopr?   s    r   r   z&SelectEventLoopTests.create_event_loop      ,...r   NrC   rD   rE   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_loop  r  r   c                 *    t          j        d          Nz(IocpEventLoop does not have add_reader()rh  SkipTestr?   s    r   r5  z+ProactorEventLoopTests.test_reader_callback       #$NOOOr   c                 *    t          j        d          r  r  r?   s    r   test_reader_callback_cancelz2ProactorEventLoopTests.test_reader_callback_cancel#  r  r   c                 *    t          j        d          Nz(IocpEventLoop does not have add_writer()r  r?   s    r   r<  z+ProactorEventLoopTests.test_writer_callback&  r  r   c                 *    t          j        d          r  r  r?   s    r   test_writer_callback_cancelz2ProactorEventLoopTests.test_writer_callback_cancel)  r  r   c                 *    t          j        d          r  r  r?   s    r   rT  z4ProactorEventLoopTests.test_remove_fds_after_closing,  r  r   N)	rC   rD   rE   r   r5  r  r<  r  rT  r   r   r   r  r    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   )rr   r   r   SafeChildWatcherattach_loopr1   set_child_watcherr6   watcherrt   s     r   r   zUnixEventLoopTestsMixin.setUp2  sO    GGMMOOO.00G	***%g.....r   c                 p    t          j        d            t                                                       d S r   )r   r  rr   r   r   s    r   r   z UnixEventLoopTestsMixin.tearDown8  s0    %d+++GGr   )rC   rD   rE   r   r   rv   rw   s   @r   r  r  1  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_loopB  s#    0,..0 0 0r   r   	   openbsdztest hangs on OpenBSDc                 H    t                                                       d S r   )rr   r   r   s    r   r   z)KqueueEventLoopTests.test_read_pty_outputH  s!     ,,.....r   c                 H    t                                                       d S r   )rr   r   r   s    r   r   z#KqueueEventLoopTests.test_write_ptyR  s    &&(((((r   )rC   rD   rE   r   r   rm  rh  rk  r   r    r!   r   r   rv   rw   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  W  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_loopc  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_loopk  s    ,Y-E-G-GHHHr   Nr  r   r   r   r  r  g  s(        	I 	I 	I 	I 	Ir   c                      d S r   r   )r  r  s     r   noopr  o  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  )rr   r   r   r!  r1   	get_debugreturn_valuer   s    r   r   zHandleTests.setUpu  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   Handler1   rh  	_callback_argsr  r7  r  r   )r6   r   r  hs       r   test_handlezHandleTests.test_handlez  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   )rJ  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!  r1   rp  r   r  _runassert_called_withr   MockPatternANY_source_traceback)r6   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   r*  z1HandleTests.test_handle_weakref.<locals>.<lambda>  s    4 r   r   r
  )weakrefWeakValueDictionaryr   r  r1   )r6   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 )r1   r  r  r   r  r  r   get_function_sourcer   r  r  types	coroutiner  r  reescapeassertRegexr  test_handle_reprpartialmethod)r6   r
  filenamelinenor   regexmethodcb_regexs           r   r'  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 )r1   r  r  r{  r   	_getframef_linenor   r  r  r   r!  r   r  r  r6   create_filenamecreate_linenor
  r)  r*  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   rE  r   test_handle_source_traceback)r   r0  r1  re  r  listr   r{  )r
  r*  r6   s     r   check_source_tracebackzHHandleTests.test_handle_source_traceback.<locals>.check_source_traceback  sv    ]1%%.2F!!!"5t<<<Q04RaR8&$<>? ? ? ? ?r   r   )	r   get_event_loop_policyr.   	set_debugr/   r   r  r   r   )r6   r1   r:  r
  s   `   r   r8  z(HandleTests.test_handle_source_traceback  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__>() runningr4   z
CoroLike())r4   rC   r   r   iscoroutiner   r   _format_coroutinerE   
cr_runningcr_code)r6   r  s     r   +test_coroutine_like_object_debug_formattingz7HandleTests.test_coroutine_like_object_debug_formatting	  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   )rC   rD   rE   r   r  r  r  r'  r5  r8  rh  ri  r  collectionsabcrE  rv   rw   s   @r   r  r  s  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   )rr   r   r   r!  r1   r   s    r   r   zTimerTests.setUp'	  s%    IKK			r   c                     t          j                    }t          j        |d dt	          j                              }|                     t          |          t          |                     d S )Nc                      dS r`  r   r   r   r   r*  z&TimerTests.test_hash.<locals>.<lambda>-	      e r   r   )r   r<  r   TimerHandler   r!  r   hashr6   whenr
  s      r   	test_hashzTimerTests.test_hash+	  sZ    ~mmR $	- -a$t**-----r   c                     t          j                    }t          j        |d dt	          j                              }|                     ||                                           d S )Nc                      dS r`  r   r   r   r   r*  z&TimerTests.test_when.<locals>.<lambda>3	  rM  r   r   )r   r<  r   rN  r   r!  r   rQ  rP  s      r   	test_whenzTimerTests.test_when1	  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>.callback8	  r  r   )r   r   r   )r   r<  r   rN  r   r!  rh  r  r	  r  r7  r  r   rw  )r6   r   r  rQ  r
  s        r   
test_timerzTimerTests.test_timer7	  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>)r1   r  r  r   rN  r  r   r!  r   r  r  )r6   r
  srcs      r   test_timer_reprzTimerTests.test_timer_reprI	  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   rZ  r   z <TimerHandle when=123 noop() at r  r/  r  z*<TimerHandle cancelled when=123 noop() at )r1   r  r  r{  r   r0  r1  r   rN  r  r   r!  r   r  r  r2  s         r   test_timer_repr_debugz TimerTests.test_timer_repr_debugW	  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>.callbackm	  r  r   r   g      $@)r   r<  r   rN  r1   r  r   r  r  rh  NotImplemented__eq____ne__r   rG  r   r   r   )r6   r   rQ  h1h2h3s         r   test_timer_comparisonz TimerTests.test_timer_comparisonl	  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;)rC   rD   rE   r   rR  rU  rX  r\  r^  rg  rv   rw   s   @r   rI  rI  %	  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 r@  )r   r!  r   AbstractEventLoopr   NotImplementedErrorr   r0   r   r   r   r@   r  r   ra  r   r   r   set_default_executorr2  r"  r9  r:  rH  rI  set_exception_handlerdefault_exception_handlerrp  r  r<  )r6   r  r1   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  rs  r   )r   r!  r   rk  r   rl  r
  r  r  rx  r  r  r  sock_recv_intosock_sendallsock_connectsock_acceptsock_sendfilesendfiler  sentinelr  r  r  r|  )r  r1   r6   s     r   innerz@AbstractEventLoopTests.test_not_implemented_async.<locals>.inner	  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.   r0   r@   )r6   r{  r1   s   `  r   test_not_implemented_asyncz1AbstractEventLoopTests.test_not_implemented_async	  sX    %	. %	. %	. %	. %	.N %''(((

r   N)rC   rD   rE   rp  r|  r   r   r   ri  ri  	  s3        44 44 44l+ + + + +r   ri  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   rl  get_event_loopr/   rv  r.   get_child_watcherr  r6   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   DefaultEventLoopPolicyrw  _local_loopr  re  rk  rh  r@   r6   r  r1   s      r   test_get_event_loopzPolicyTests.test_get_event_loop
  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 )Nr/   )wraps)
r   r  r   r  rv  r/   r  r
  r@   r  )r6   r  m_set_event_loopr1   s       r   (test_get_event_loop_calls_set_event_loopz4PolicyTests.test_get_event_loop_calls_set_event_loop&
  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  r/   r   r   r  r  s     r   "test_get_event_loop_after_set_nonez.PolicyTests.test_get_event_loop_after_set_none7
  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  r6   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   )r6   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.   re  rk  r@   r  s      r   test_new_event_loopzPolicyTests.test_new_event_loopG
  sK    /11$$&&dG$=>>>

r   c                    t          j                    }|                                }|                    |           |                     t
          |j        t                                 |                                }|                    |           |                     ||                                           | 	                    ||                                           |
                                 |
                                 d S r   )r   r  r.   r/   r   rG  rv  rh  r  assertIsNotr@   )r6   r  old_loopr1   s       r   test_set_event_loopzPolicyTests.test_set_event_loopN
  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;  re  r  rh  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   rG  r   r   rv  r;  r  rh  r  )r6   
old_policyr  s      r   test_set_event_loop_policyz&PolicyTests.test_set_event_loop_policya
  s    w4fhh	@ 	@ 	@ 244
/11%f---fg;==>>>,,,,,r   N)rC   rD   rE   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 rq  )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   rr   r   r.   r1   r/   r   r    r  r  r  r  s     r   r   zGetEventLoopTestsMixin.setUpt
  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rq  )r   r    r   r  rr   r   r1   r@   r/   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                      fd}                      j                             |                      d           d S )Nc                     K   t           j                                        } j                            | t
                     d {V }|                                  |S r   )
concurrentfuturesProcessPoolExecutorr1   r
  r2   shutdown)poolr>  r6   s     r   r9  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   r1   r0   )r6   r9  s   ` r   test_get_event_loop_new_processz6GetEventLoopTestsMixin.test_get_event_loop_new_process
  sm     >@@@     	,,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)rC   rD   rE   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   )r6   r  s    r   r  z^GetEventLoopTestsMixin.test_get_event_loop_returns_running_loop.<locals>.Policy.get_event_loop
  s    r   N)rC   rD   rE   r  )r  s   r   Policyr  
  s.                     r   r  
no runningc                     K                        t          j                                                     t          j                                                     t          j                                d S r   rh  r   r  r  r  rG  s   r   rd  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  r/   r  r   r  rh  r  r0   r@   )r6   r  r  rd  r  r1   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  rG  s   r   rd  zNGetEventLoopTestsMixin.test_get_event_loop_returns_running_loop2.<locals>.func
  r  r   )r   r;  r   r  r.   r
  r@   r  r/   r  r   r  rh  r  r0   )r6   r  loop2rd  r1   s   `   @r   )test_get_event_loop_returns_running_loop2z@GetEventLoopTestsMixin.test_get_event_loop_returns_running_loop2
  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/)rC   rD   rE   r  r  r  r  r   r   r   r    r  r  r  rv   rw   s   @r   r  r  m
  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)rC   rD   rE   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)rC   rD   rE   r   _c__get_running_loopr  _c__set_running_loopr  _c_get_running_loopr  _c_get_event_loopr  r   r   r   r  r    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   r*  z*TestServer.test_get_loop.<locals>.<lambda>*  s    E r   r2  r   )
r   r.   r
  r@   rp   r0   r  r   get_loopwait_closed)r6   r1   r(  r  s      @r   test_get_loopzTestServer.test_get_loop&  s    %''
###((););MMMM9VW)X)XYY**D111 2 2 4 455555r   N)rC   rD   rE   r  r   r   r   r  r  $  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   rl  r   AbstractServerr@   r?   s    r   rg  zTestAbstractServer.test_close2  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
  r@   r   rl  r0   r   r  r  rQ   s     r   test_wait_closedz#TestAbstractServer.test_wait_closed6  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   rl  r   r  r  r?   s    r   r  z TestAbstractServer.test_get_loop=  s    233 	/ 	/!##,,...	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/r  N)rC   rD   rE   rg  r  r  r   r   r   r  r  0  sD        , , ,K K K/ / / / /r   r  __main__)N__doc__collections.abcrF  concurrent.futuresr  r  r  rN  r    r$  rK  r.  r  ImportErrorr  r   r   r   r"  r  rh  r   r  r,  r   r   r   r   r	   test.test_asyncior
   r   r^  r   test.supportr   r   r   r   r   r   r(   r2   r4   rg  rG   rp   DatagramProtocolry   r   BaseProtocolr   r  r   r   ro  TestCaser  r  r  r  r  r  r  r  r  r  rI  ri  r~  r  r  _asyncior  r  r  rC   r9  r   r   r   <module>r     s                 				 				  				  JJJJ   
CCC     



               <+++JJJ              # # # # # # # # # # # # 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k k k k k k k k\/[? [? [? [? [? [? [? [?| <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 ^9B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8J JJ