
    2hh!                       S r SSKrSSKrSSKrSSKrSSKrSSKrSSKrSSK	r	SSK
r
SSKr SSKrSSKrSSKrSSKrSSKrSSKrSSKrSSKrSSKJr  SSKrSSKr\R                  S;  a  SSKrSSKrSSKJr  SSKJr  SSKJr  SSKJr  SS	K J!r"  SS
K#J$r$  SSK%J&r&  SSK%J'r'  SSK%J(r(J)r)J*r*  S r+S r,S r- " S S5      r. " S S\R^                  5      r0 " S S\05      r1 " S S\Rd                  5      r3 " S S\R^                  5      r4 " S S\Rj                  5      r6 " S S\Rn                  5      r8 " S S 5      r9 " S! S"5      r:\R                  S#:X  a.   " S$ S%\9\"Rv                  5      r< " S& S'\9\:\"Rv                  5      r=OSSK>r> " S( S)\95      r?\@" \>S*5      (       a   " S+ S,\?\:\"Rv                  5      rA\@" \>S-5      (       a   " S. S/\?\:\"Rv                  5      rB\@" \>S05      (       a   " S1 S2\?\:\"Rv                  5      rC " S3 S%\?\:\"Rv                  5      r<S4 rD " S5 S6\"Rv                  5      rE " S7 S8\Rv                  5      rF " S9 S:\Rv                  5      rG " S; S<\Rv                  5      rH " S= S>5      rI " S? S@\I\Rv                  5      rJ SSKKrK " SA SB\I\Rv                  5      rL " SC SD\Rv                  5      rM " SE SF\Rv                  5      rN\OSG:X  a  \R                  " 5         gg! \ a    Sr GNf = f! \ a     NZf = f)HzTests for events.py.    N)mock)win32vxworks)
coroutines)events)selector_events)_cleanup_tests)utils)support)socket_helper)threading_helper)	ALWAYS_EQLARGESTSMALLESTc                  0    [         R                  " S 5        g N)asyncioset_event_loop_policy     F/opt/python-3.13.8/usr/lib/python3.13/test/test_asyncio/test_events.pytearDownModuler   *   s    !!$'r   c                      [         R                  R                  S5      (       a  g[         R                  S:w  a  g[        R                  " 5       S   n [	        [        [        U R                  S5      5      5      n U 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(   .   sa    
||u%%		! #GCW]]3/01GWr   c                      S n [         R                  " [        R                  " 5       5       n[        R                  " U5        UR                  U " 5       5      sS S S 5        $ ! , (       d  f       g = f)Nc                     #    g7fNhellor   r   r   r   doit8_test_get_event_loop_new_process__sub_proc.<locals>.doit:   s        )
contextlibclosingr   new_event_loopset_event_looprun_until_complete)r-   loops     r   *_test_get_event_loop_new_process__sub_procr6   9   sL     
		G224	5t$&&tv. 
6	5	5s   ,A##
A1c                   ,    \ rS rSrS rS rS rS rSrg)CoroLikeB   c                     g r   r   )selfvs     r   sendCoroLike.sendC       r   c                     g r   r   r;   excs     r   throwCoroLike.throwF   r?   r   c                     g r   r   r;   s    r   closeCoroLike.closeI   r?   r   c                     g r   r   rF   s    r   	__await__CoroLike.__await__L   r?   r   r   N)	__name__
__module____qualname____firstlineno__r=   rC   rG   rJ   __static_attributes__r   r   r   r8   r8   B   s    r   r8   c                   D    \ rS rSrSrSrS
S jrS rS rS r	S r
S rS	rg)MyBaseProtoP   Nc                     S U l         SU l        SU l        Ub+  UR                  5       U l        UR                  5       U l        g g NINITIALr   )	transportstatenbytescreate_future	connecteddoner;   r5   s     r   __init__MyBaseProto.__init__T   sB    
!//1DN**,DI r   c                 ^    U R                   U;  a  [        SU R                   < SU< 35      eg Nzstate: z, expected: rX   AssertionErrorr;   expecteds     r   _assert_stateMyBaseProto._assert_state\   s/    ::X% 74::.XL!QRR &r   c                     Xl         U R                  S5        SU l        U R                  (       a  U R                  R	                  S 5        g g NrV   	CONNECTEDrW   rf   rX   r[   
set_resultr;   rW   s     r   connection_madeMyBaseProto.connection_made`   s:    "9% 
>>NN%%d+ r   c                 b    U R                  S5        U =R                  [        U5      -  sl        g Nrj   rf   rY   lenr;   datas     r   data_receivedMyBaseProto.data_receivedg   s"    ;'s4y r   c                 4    U R                  S5        SU l        g )Nrj   EOF)rf   rX   rF   s    r   eof_receivedMyBaseProto.eof_receivedk   s    ;'
r   c                     U R                  SS5        SU l        U R                  (       a  U R                  R                  S 5        g g )Nrj   ry   CLOSEDrf   rX   r\   rl   rA   s     r   connection_lostMyBaseProto.connection_losto   s7    ;.
99II  & r   )r[   r\   rY   rX   rW   r   )rL   rM   rN   rO   r[   r\   r^   rf   rn   rv   rz   r   rP   r   r   r   rR   rR   P   s+    ID-S,!'r   rR   c                   (   ^  \ rS rSrU 4S jrSrU =r$ )MyProtov   c                 F   > [         TU ]  U5        UR                  S5        g )Ns%   GET / HTTP/1.0
Host: example.com

)superrn   write)r;   rW   	__class__s     r   rn   MyProto.connection_madew   s    	*FGr   r   rL   rM   rN   rO   rn   rP   __classcell__r   s   @r   r   r   v   s    H Hr   r   c                   @    \ rS rSrSrS
S jrS rS rS rS r	S r
S	rg)MyDatagramProto|   Nc                 R    SU l         SU l        Ub  UR                  5       U l        g g rU   )rX   rY   rZ   r\   r]   s     r   r^   MyDatagramProto.__init__   s+    
**,DI r   c                 ^    U R                   U:w  a  [        SU R                   < SU< 35      eg ra   rb   rd   s     r   rf   MyDatagramProto._assert_state   /    ::! 74::.XL!QRR "r   c                 @    Xl         U R                  S5        SU l        g )NrV   INITIALIZEDrW   rf   rX   rm   s     r   rn   MyDatagramProto.connection_made   s    "9%"
r   c                 b    U R                  S5        U =R                  [        U5      -  sl        g Nr   rr   r;   ru   addrs      r   datagram_received!MyDatagramProto.datagram_received   s"    =)s4y r   c                 &    U R                  S5        g r   )rf   rA   s     r   error_receivedMyDatagramProto.error_received   s    =)r   c                     U R                  S5        SU l        U R                  (       a  U R                  R                  S 5        g g )Nr   r}   r~   rA   s     r   r   MyDatagramProto.connection_lost   s5    =)
99II  & r   r\   rY   rX   rW   r   )rL   rM   rN   rO   r\   r^   rf   rn   r   r   r   rP   r   r   r   r   r   |   s&    D-S#
!*'r   r   c                   @    \ rS rSrSrS
S jrS rS rS rS r	S r
S	rg)MyReadPipeProto   Nc                 b    S/U l         SU l        S U l        Ub  UR                  5       U l        g g rU   )rX   rY   rW   rZ   r\   r]   s     r   r^   MyReadPipeProto.__init__   s4    [
**,DI r   c                 ^    U R                   U:w  a  [        SU R                   < SU< 35      eg ra   rb   rd   s     r   rf   MyReadPipeProto._assert_state   r   r   c                 j    Xl         U R                  S/5        U R                  R                  S5        g ri   )rW   rf   rX   appendrm   s     r   rn   MyReadPipeProto.connection_made   s)    "I;'

+&r   c                 f    U R                  SS/5        U =R                  [        U5      -  sl        g ri   rr   rt   s     r   rv   MyReadPipeProto.data_received   s'    I{34s4y r   c                 `    U R                  SS/5        U R                  R                  S5        g )NrV   rj   ry   )rf   rX   r   rF   s    r   rz   MyReadPipeProto.eof_received   s'    I{34

% r   c                    SU R                   ;  a  U R                   R                  S5        U R                  / SQ5        U R                   R                  S5        U R                  (       a  U R                  R	                  S 5        g g )Nry   )rV   rj   ry   r}   )rX   r   rf   r\   rl   rA   s     r   r   MyReadPipeProto.connection_lost   s_    

"JJe$:;

(#99II  & r   r   r   )rL   rM   rN   rO   r\   r^   rf   rn   rv   rz   r   rP   r   r   r   r   r      s&    D-S'
!!'r   r   c                   4    \ rS rSrSrSS jrS rS rS rSr	g)	MyWritePipeProto   Nc                 R    SU l         S U l        Ub  UR                  5       U l        g g )NrV   )rX   rW   rZ   r\   r]   s     r   r^   MyWritePipeProto.__init__   s+    
**,DI r   c                 ^    U R                   U:w  a  [        SU R                   < SU< 35      eg ra   rb   rd   s     r   rf   MyWritePipeProto._assert_state   r   r   c                 @    Xl         U R                  S5        SU l        g ri   r   rm   s     r   rn    MyWritePipeProto.connection_made   s    "9% 
r   c                     U R                  S5        SU l        U R                  (       a  U R                  R                  S 5        g g Nrj   r}   r~   rA   s     r   r    MyWritePipeProto.connection_lost   s5    ;'
99II  & r   )r\   rX   rW   r   )
rL   rM   rN   rO   r\   r^   rf   rn   r   rP   r   r   r   r   r      s    D-S!
'r   r   c                   >    \ rS rSrS rS rS rS rS rS r	S r
S	rg
)MySubprocessProtocol   c                 ^   SU l         S U l        UR                  5       U l        UR                  5       U l        [        S5       Vs0 s H  o"UR                  5       _M     snU l        SSS.U l        S U l        [        R                  " 5       [        R                  " 5       S.U l        g s  snf )NrV      r         )rX   rW   rZ   r[   	completedrangedisconnectsru   
returncoder   Eventgot_data)r;   r5   fds      r   r^   MySubprocessProtocol.__init__   s    
++-++-?DQxHx 2 2 44xH$	#MMO#MMO- Is   B*c                 ^    U R                   U:w  a  [        SU R                   < SU< 35      eg ra   rb   rd   s     r   rf   "MySubprocessProtocol._assert_state   r   r   c                 v    Xl         U R                  S5        SU l        U R                  R	                  S 5        g ri   rk   rm   s     r   rn   $MySubprocessProtocol.connection_made   s.    "9% 
!!$'r   c                 j    U R                  S5        SU l        U R                  R                  S 5        g r   )rf   rX   r   rl   rA   s     r   r   $MySubprocessProtocol.connection_lost   s)    ;'
!!$'r   c                     U R                  S5        U R                  U==   U-  ss'   U R                  U   R                  5         g rq   )rf   ru   r   set)r;   r   ru   s      r   pipe_data_received'MySubprocessProtocol.pipe_data_received   s7    ;'		"br   c                     U R                  S5        U(       a  U R                  U   R                  U5        g U R                  U   R                  U5        g rq   )rf   r   set_exceptionrl   )r;   r   rB   s      r   pipe_connection_lost)MySubprocessProtocol.pipe_connection_lost   sE    ;'R ..s3R ++C0r   c                 d    U R                  S5        U R                  R                  5       U l        g rq   )rf   rW   get_returncoder   rF   s    r   process_exited#MySubprocessProtocol.process_exited  s$    ;'..779r   )r   r[   ru   r   r   r   rX   rW   N)rL   rM   rN   rO   r^   rf   rn   r   r   r   r   rP   r   r   r   r   r      s&    	-S((
 
1:r   r   c                   (
  ^  \ rS rSrU 4S jrU 4S jrS rS rS rS r	S r
S	 rS
 rS rS rS rS r\R$                  " \" \S5      S5      S 5       r\R$                  " \" \S5      S5      \R$                  " \" \S5      S5      S 5       5       r\R$                  " \" \S5      S5      \R$                  " \" \S5      S5      S 5       5       rSaS jrS r\R6                  S 5       rSS0 4S jr  SbS jr SbS jr\R@                  " \!SL S 5      S! 5       r"\R6                  \R@                  " \!SL S 5      S" 5       5       r#S# r$\RJ                  S$ 5       r&\RJ                  S% 5       r'S& r(ScS' jr)\R@                  " \!SL S 5      S( 5       r*S) r+\,RZ                  " S*5      S+ 5       r.S, r/S- r0S. r1S/ r2\R$                  " \" \3S05      S15      S2 5       r4S3 r5\R6                  S4 5       r6\R$                  " \" \3S55      S65      S7 5       r7SdS8 jr8SdS9 jr9SdS: jr:\R@                  " \!SL S 5      S; 5       r;\R6                  \R@                  " \!SL S 5      S< 5       5       r<\R@                  " \!SL S 5      S= 5       r=\R6                  \R@                  " \!SL S 5      S> 5       5       r>\R@                  " \!SL S 5      S? 5       r?\R6                  \R@                  " \!SL S 5      S@ 5       5       r@\R@                  " \!SL S 5      SA 5       rASB rBSC rC\R$                  " \R                  SD5      SE 5       rE\RJ                  SF 5       rFSG rGSH rH\R$                  " \R                  SD5      SI 5       rISJ rJSK rKSL rL\R$                  " \MR                  SM:g  SN5      SO 5       rO\R$                  " \MR                  SM:g  SN5      SP 5       rP\R$                  " \MR                  SM:g  SN5      \R$                  " \" \QSQ5      SR5      SS 5       5       rR\R$                  " \MR                  SM:g  SN5      ST 5       rS\R$                  " \MR                  SM:g  SN5      SU 5       rT\R$                  " \MR                  SM:g  SN5      \R$                  " \" \QSQ5      SR5      \UR                  " SVSW5      SX 5       5       5       rW\R$                  " \MR                  SM:g  SN5      \R$                  " \" \QSQ5      SR5      \UR                  " SVSW5      SY 5       5       5       rXSZ rYS[ rZS\ r[S] r\S^ r]S_ r^S`r_U =r`$ )eEventLoopTestsMixini  c                    > [         TU ]  5         U R                  5       U l        U R	                  U R                  5        g r   )r   setUpcreate_event_loopr5   r3   r;   r   s    r   r   EventLoopTestsMixin.setUp  s.    **,	DII&r   c                    > U R                   R                  5       (       d   [        R                  " U R                   5        U R	                  5         [
        R                  " 5         [        TU ]!  5         g r   )	r5   	is_closed
test_utilsrun_briefly
doCleanupsr   
gc_collectr   tearDownr   s    r   r   EventLoopTestsMixin.tearDown  sI    yy""$$""499-r   c                    ^ ^ S mUU 4S jnT R                  [        S5         T R                  [        T R                  R
                  U" 5       5        S S S 5        g ! , (       d  f       g = f)Nc                  L   #    [         R                  " S5      I S h  vN   g  N7fNr   r   sleepr   r   r   coro1BEventLoopTestsMixin.test_run_until_complete_nesting.<locals>.coro1  s     --"""s   $"$c                     >#    TR                  TR                  R                  5       5        TR                  R                  T " 5       5        g 7fr   )
assertTruer5   
is_runningr4   )r   r;   s   r   coro2BEventLoopTestsMixin.test_run_until_complete_nesting.<locals>.coro2  s3     OODII0023II((1s   AAzcoroutine \S+ was never awaited)assertWarnsRegexRuntimeWarningassertRaisesRuntimeErrorr5   r4   )r;   r   r   s   ` @r   test_run_until_complete_nesting3EventLoopTestsMixin.test_run_until_complete_nesting  sW    	#	2 "".
 dii::EGE	
 
 
s   1A
A+c                    SnU R                   R                  5       nU R                   R                  [        R                  " U5      5        U R                   R                  5       U-
  nU R                  X1[        R                  -
  5        g N皙?)r5   timer4   r   r   assertGreaterEqualr   	CLOCK_RES)r;   delayt0dts       r   test_run_until_complete+EventLoopTestsMixin.test_run_until_complete(  s`    YY^^		$$W]]5%9:YY^^"J,@,@$@Ar   c                 v   ^  U 4S jnU" 5       nT R                  [        T R                  R                  U5        g )Nc                     >#    T R                   R                  5         [        R                  " S5      I S h  vN   g  N7fr  )r5   stopr   r   rF   s   r   cb?EventLoopTestsMixin.test_run_until_complete_stopped.<locals>.cb1  s&     IINN--$$$s   4?=?)r   r   r5   r4   )r;   r  tasks   `  r   test_run_until_complete_stopped3EventLoopTestsMixin.test_run_until_complete_stopped/  s0    	% t,))66	>r   c                    ^ ^ / mUU 4S jnT R                   R                  SUS5        T R                   R                  5         T R                  TS/5        g )Nc                 \   > TR                  U 5        TR                  R                  5         g r   r   r5   r  argresultsr;   s    r   callback5EventLoopTestsMixin.test_call_later.<locals>.callback;  s    NN3IINNr   r  zhello world)r5   
call_laterrun_foreverassertEqualr;   r  r  s   ` @r   test_call_later#EventLoopTestsMixin.test_call_later8  sG    	 			S(M:		=/2r   c                    ^ ^ / mUU 4S jnT R                   R                  USS5        T R                   R                  5         T R                  TS/5        g )Nc                 ^   > TR                  X45        TR                  R                  5         g r   r  )arg1arg2r  r;   s     r   r  4EventLoopTestsMixin.test_call_soon.<locals>.callbackF  s    NND<(IINNr   r,   world)r,   r)  )r5   	call_soonr  r   r!  s   ` @r   test_call_soon"EventLoopTestsMixin.test_call_soonC  sI    	 			Hgw7		#5"67r   c                   ^ ^^^ / m[         R                  " 5       mUU 4S jmUUU 4S jnTR                  5         [         R                  " US9nUR	                  5         T   T R
                  R                  TS5        T R
                  R                  5         S S S 5        UR                  5         T R                  TSS/5        g ! , (       d  f       N3= f)Nc                 |   > TR                  U 5        [        T5      S:  a  TR                  R                  5         g g Nr   r   rs   r5   r  r  s    r   r  ?EventLoopTestsMixin.test_call_soon_threadsafe.<locals>.callbackR  .    NN37|q 		  !r   c                  ^   > TR                   R                  T S5        TR                  5         g r+   )r5   call_soon_threadsaferelease)r  lockr;   s   r   run_in_threadDEventLoopTestsMixin.test_call_soon_threadsafe.<locals>.run_in_threadW  s     II**8W=LLNr   targetr)  r,   )
	threadingLockacquireThreadstartr5   r*  r  joinr   )r;   r7  tr  r6  r  s   `  @@@r   test_call_soon_threadsafe-EventLoopTestsMixin.test_call_soon_threadsafeN  s    ~~	!
	 	M2		II'2II!!#  	
7G"45	 Ts   !7C
Cc                    ^ ^ / mUU 4S jnT R                   R                  US5        T R                   R                  US5        T R                   R                  5         T R	                  TSS/5        g )Nc                 |   > TR                  U 5        [        T5      S:  a  TR                  R                  5         g g r/  r0  r  s    r   r  KEventLoopTestsMixin.test_call_soon_threadsafe_same_thread.<locals>.callbackh  r2  r   r,   r)  )r5   r4  r*  r  r   r!  s   ` @r   %test_call_soon_threadsafe_same_thread9EventLoopTestsMixin.test_call_soon_threadsafe_same_threade  s\    	!
 			&&x9		Hg.		7G"45r   c                     S nU R                   R                  S US5      nU R                   R                  U5      u  p4U R                  US5        U R	                  U[
        R                  " 5       5        g )Nc                 0    U [         R                  " 5       4$ r   )r;  	get_ident)r  s    r   run5EventLoopTestsMixin.test_run_in_executor.<locals>.runs  s    ,,.//r   yo)r5   run_in_executorr4   r   assertNotEqualr;  rK  )r;   rL  f2res	thread_ids        r   test_run_in_executor(EventLoopTestsMixin.test_run_in_executorr  s^    	0YY&&tS$755b9d#Iy':':'<=r   c                   ^ SmU4S jnS nU R                   R                  S U5      nUR                  5         U R                   R                  U R                   R	                  5       5        U R                   R                  5         XR                   l        XR                   l        [        R                  " S5        U R                  T5        g )NFc                  
   > Smg NTr   )argscalleds    r   patched_call_soonJEventLoopTestsMixin.test_run_in_executor_cancel.<locals>.patched_call_soon}  s    Fr   c                  0    [         R                  " S5        g )Ng?)r  r   r   r   r   rL  <EventLoopTestsMixin.test_run_in_executor_cancel.<locals>.run  s    JJtr   g?)r5   rO  cancelr4   shutdown_default_executorrG   r*  r4  r  r   assertFalse)r;   r[  rL  rQ  rZ  s       @r   test_run_in_executor_cancel/EventLoopTestsMixin.test_run_in_executor_cancelz  s    		 YY&&tS1
				$$		335	7		/		):		&

3 r   c                    ^ ^^ [         R                  " 5       u  mnTR                  S5        [        5       mUUU 4S jnT R                  R                  TR                  5       U5        T R                  R                  UR                  S5        [        R                  " T R                  U4S j5        T R                  R                  UR                  S5        [        R                  " T R                  U4S j5        T R                  R                  UR                  5        T R                  R                  T R                  R                  5        T R                  R                  5         T R                  TS5        g )NFc                    >  TR                  S5      n U (       a  TR                  U 5        g TR                  TR                  R                  TR                  5       5      5        TR                  5         g ! [         a     g f = fN   )recvBlockingIOErrorextendr   r5   remove_readerfilenorG   )ru   
bytes_readrr;   s    r   reader8EventLoopTestsMixin.test_reader_callback.<locals>.reader  sh    vvd|
 !!$'		 7 7
 CD	 #  s   A6 6
BBs   abcc                      > [        T 5      S:  $ )Nr   rs   rm  s   r   <lambda>:EventLoopTestsMixin.test_reader_callback.<locals>.<lambda>      J10Dr   s   defc                      > [        T 5      S:  $ )N   rr  rs  s   r   rt  ru    rv  r   s   abcdef)socket
socketpairsetblocking	bytearrayr5   
add_readerrl  r*  r=   r   	run_untilrG   r  r  r   )r;   wro  rm  rn  s   `  @@r   test_reader_callback(EventLoopTestsMixin.test_reader_callback  s      "1	e[
	 			QXXZ0		AFFF+TYY(DE		AFFF+TYY(DE		AGG$		DIINN+		Y/r   c                 p  ^ ^ [         R                  " 5       u  nmTR                  S5        U U4S jnSnT R                  R	                  TR                  5       X#5        T R                  R                  5         T R                  T R                  R                  TR                  5       5      5        T R                  T R                  R                  TR                  5       5      5        TR                  5         UR                  [        U5      S-  5      nUR                  5         T R                  XC5        g )NFc                 \   > TR                  U 5        TR                  R                  5         g r   )r=   r5   r  )ru   r;   r  s    r   writer8EventLoopTestsMixin.test_writer_callback.<locals>.writer  s    FF4LIINNr   s   xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxr   )ry  rz  r{  r5   
add_writerrl  r  r   remove_writerra  rG   rh  rs   r   )r;   rn  r  ru   readr  s   `    @r   test_writer_callback(EventLoopTestsMixin.test_writer_callback  s      "1	e	 		QXXZ6				//
;<00<=		vvc$i!m$		$r   SIGKILLz
No SIGKILLc                 h  ^ SmU4S jnU R                  [        U R                  R                  SU5        U R                  [        U R                  R                  S5        U R                  [
        U R                  R                  [        R                  S-   U5        U R                  [
        U R                  R                  [        R                  S-   5        U R                  [
        U R                  R                  SU5        U R                  [
        U R                  R                  S5        U R                  [
        U R                  R                  SU5        U R                  [
        U R                  R                  S5        U R                  [        U R                  R                  [        R                  U5        U R                  U R                  R	                  [        R                  5      5        U R                  R                  [        R                  U5        [        R                  " [        R                  " 5       [        R                  5        [        R                   " U R                  U4S j5        U R#                  U R                  R	                  [        R                  5      5        U R%                  [        R&                  " [        R                  5      [        R(                  5        U R                  U R                  R	                  [        R                  5      5        g )Nr   c                     > T S-  m g Nr   r   caughts   r   
my_handler?EventLoopTestsMixin.test_add_signal_handler.<locals>.my_handler  s    aKFr   boomr   c                     > T $ r   r   r  s   r   rt  =EventLoopTestsMixin.test_add_signal_handler.<locals>.<lambda>  s    r   )r   	TypeErrorr5   add_signal_handlerremove_signal_handler
ValueErrorsignalNSIGr   r  ra  SIGINToskillgetpidr   r~  r   r   	getsignaldefault_int_handlerr;   r  r  s     @r   test_add_signal_handler+EventLoopTestsMixin.test_add_signal_handler  s    	
 	tyy33VZ	Ityy66	@		44fkk!m	 			77Q	H		44a	E		77	<		44b*	F		77	=$))66	 	88HI		$$V]]J?
		V]]+TYY7 			77FG))&--833	5 	88GHr   SIGALRMz
No SIGALRM	setitimerzneed signal.setitimer()c                 r  ^ ^ SmUU 4S jnT R                   R                  [        R                  U5        [        R                  " [        R
                  SS5        T R                   R                  ST R                   R                  5        T R                   R                  5         T R                  TS5        g )Nr   c                  D   > T S-  m TR                   R                  5         g r  )r5   r  )r  r;   s   r   r  LEventLoopTestsMixin.test_signal_handling_while_selecting.<locals>.my_handler  s    aKFIINNr   {Gz?<   r   
r5   r  r  r  r  ITIMER_REALr  r  r  r   r  s   ` @r   $test_signal_handling_while_selecting8EventLoopTestsMixin.test_signal_handling_while_selecting  s}    
 	
 			$$V^^Z@++T15		R0		#r   c                 ~  ^ ^^ SmSmUU U4S jnT R                   R                  " [        R                  U/TQ76   [        R                  " [        R
                  SS5        T R                   R                  ST R                   R                  5        T R                   R                  5         T R                  TS5        g )N)*   r   c                  h   > TS-  mTR                  U T5        TR                  R                  5         g r  )r   r5   r  )rY  r  r;   	some_argss    r   r  AEventLoopTestsMixin.test_signal_handling_args.<locals>.my_handler  s*    aKFT9-IINNr   r  r  r   r  )r;   r  r  r  s   ` @@r   test_signal_handling_args-EventLoopTestsMixin.test_signal_handling_args  s     		 			$$V^^ZL)L++S!4		R0		#r   Tc                    U R                   R                  U5      u  p4U R                  U[        R                  5        U R                  U[        R
                  5        U R                  UR                  U5        U(       a   U R                  UR                  S5      5        U R                   R                  UR                  5        U R                  UR                  S5        UR                  5         g )Nsocknamer   )r5   r4   assertIsInstancer   	TransportProtocolassertIsrW   assertIsNotNoneget_extra_infor\   assertGreaterrY   rG   )r;   connection_futcheck_socknametrprs        r   _basetest_create_connection/EventLoopTestsMixin._basetest_create_connection  s    --n=b'"3"34b'"2"23bllB'  !2!2:!>?		$$RWW-299a(

r   c                    ^  [         R                  " 5        nT R                  R                  " U 4S j/UR                  Q76 nT R                  U5        S S S 5        g ! , (       d  f       g = f)Nc                  *   > [        T R                  S9$ Nr5   r   r5   rF   s   r   rt  <EventLoopTestsMixin.test_create_connection.<locals>.<lambda>      TYY/r   )r   run_test_serverr5   create_connectionaddressr  )r;   httpdconn_futs   `  r   test_create_connection*EventLoopTestsMixin.test_create_connection  sP    '')Uyy22/A27--AH,,X6 *))s   =A
A+c                    ^  [        5       (       + n[        R                  " 5        nT R                  R	                  U 4S jUR
                  5      nT R                  X15        S S S 5        g ! , (       d  f       g = f)Nc                  *   > [        T R                  S9$ r  r  rF   s   r   rt  AEventLoopTestsMixin.test_create_unix_connection.<locals>.<lambda>*  r  r   )r(   r   run_test_unix_serverr5   create_unix_connectionr  r  )r;   r  r  r  s   `   r   test_create_unix_connection/EventLoopTestsMixin.test_create_unix_connection"  sV     566,,.%yy77/@H,,XF /..s   <A++
A9Nc                    U(       a   U R                  UR                  S5      5        U(       a"  U R                  UUR                  S5      5        O U R                  UR                  S5      5        U R                  UUR                  S5      5        UR                  S5      nU R                  U[        5        U R                  [        U5      SU5        U R                  US   [        5        U R                  US   [        5        U R                  US   [        5        UR                  S	5      nU R                  U5        U R                  UR                  5       UR                  S
5      5        U R                  UR                  5       UR                  S5      5        U R                  UR                  5       UR                  S5      5        U R                  UR                  5       UR                  S
5      5        g )Nr  peernamepeercertcipherr   r   r   r   
ssl_objectcompression)r  r  r   r  r#   rs   strr%   r  r  getpeercert)r;   clientr  r  r  r  sslobjs          r   check_ssl_extra_info(EventLoopTestsMixin.check_ssl_extra_info-  s     !6!6z!BCX#22:>@   !6!6z!BC..z:	< &&x0fe,Va0fQi-fQi-fQi- &&|4V$++-..}=	?..x8	:++-..z:	<++-..}=	?r   c                    U R                   R                  U5      u  pEU R                  U[        R                  5        U R                  U[        R
                  5        U R                  SUR                  R                  R                  5       ;   5        U R                  XBU5        U R                   R                  UR                  5        U R                  UR                  S5        UR                  5         g )Nsslr   )r5   r4   r  r   r  r  r   r   rL   lowerr  r\   r  rY   rG   )r;   r  r  r  r  r  s         r   _basetest_create_ssl_connection3EventLoopTestsMixin._basetest_create_ssl_connectionM  s     --n=b'"3"34b'"2"23!6!6!<!<!>>?!!"h?		$$RWW-299a(

r   c                   ^  U" [         R                  " 5       S9nT R                  XSU5        [        [        S5      (       ay  [        R
                  R                  4S S S S.U 4S jjjn[        R                  " SUS9 nU" SS9nT R                  XSU5        T R                  UR                  S5        S S S 5        T R                  [        R                  5       nU" SS9n[         R                  " 5          T R                  XSU5        S S S 5        S S S 5        T R                  WR                  R                  S	5        g ! , (       d  f       N= f! , (       d  f       NN= f! , (       d  f       NW= f)
Nr  Purpose)cafilecapathcadatac                   > TR                  U [        R                  R                  5        [        R
                  " 5       $ )zQ
A ssl.create_default_context() replacement that doesn't enable
cert validation.
)r   r  r  SERVER_AUTHr   dummy_ssl_context)purposer  r  r  r;   s       r   _dummy_ssl_create_contextREventLoopTestsMixin._test_create_ssl_connection.<locals>._dummy_ssl_create_contexta  s.       #++*A*AB!33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)	r;   r  r  r  r  r  r  mcms	   `        r   _test_create_ssl_connection/EventLoopTestsMixin._test_create_ssl_connectionY  s0   $)E)E)GH,,X-5	7 3	""25++2I2I 615d156 6 8(ACFG,644X5=?  q1C s||,(T2H**,44X5=? - - 	,,.IJ!C C -, -,s0   >5E E"6E	E" 
E
E	E""
E0zNo ssl modulec                 
  ^  [         R                  " SS9 n[        R                  " T R                  R
                  U 4S j/UR                  Q76 nT R                  XUR                  S9  S S S 5        g ! , (       d  f       g = f)NTuse_sslc                  *   > [        T R                  S9$ r  r  rF   s   r   rt  @EventLoopTestsMixin.test_create_ssl_connection.<locals>.<lambda>  r  r   r  )r   r  	functoolspartialr5   r  r  r  )r;   r  r  s   `  r   test_create_ssl_connection.EventLoopTestsMixin.test_create_ssl_connection~  sm    ''5 ) 1 1		++/!  !  ,,U6;mm - E 655s   AA44
Bc                 (  ^  [        5       (       + n[        R                  " SS9 n[        R                  " T R
                  R                  U 4S jUR                  SS9nT R                  X#UUR                  S9  S S S 5        g ! , (       d  f       g = f)NTr  c                  *   > [        T R                  S9$ r  r  rF   s   r   rt  EEventLoopTestsMixin.test_create_ssl_unix_connection.<locals>.<lambda>  r  r   	127.0.0.1)server_hostnamer  )	r(   r   r  r  r  r5   r  r  r  )r;   r  r  r  s   `   r   test_create_ssl_unix_connection3EventLoopTestsMixin.test_create_ssl_unix_connection  sx    
 566,,T:e ) 1 1		00/ +!-
 ,,U-;6;mm - E ;::s   AB
Bc                   ^  [         R                  " 5        n[        R                  " 5       nT R                  R
                  " U 4S j/UR                  Q7SUR                  S   U406nT R                  R                  U5      u  pEUR                  R                  S5      S   nT R                  X&5        UR                  5         S S S 5        g ! , (       d  f       g = f)Nc                  *   > [        T R                  S9$ r  r  rF   s   r   rt  GEventLoopTestsMixin.test_create_connection_local_addr.<locals>.<lambda>  r  r   
local_addrr   r  r   )r   r  r   find_unused_portr5   r  r  r4   rW   r  r   rG   )r;   r  portfr  r  re   s   `      r   !test_create_connection_local_addr5EventLoopTestsMixin.test_create_connection_local_addr  s    '')U 113D		++/EE,1MM!,<d+CEA YY11!4FB||22:>qAHT,HHJ *))s   B/C
Cc                   ^ ^^ [         R                  " 5       n[         R                  " 5       mT R                  R                  mUU4S jnUT R                  l        T R                  R	                  U 4S jSUST4S9nT R                  [        5         T R                  R                  U5        S S S 5        g ! , (       d  f       g = f)Nc                    >#    UT:X  aF  [         R                  [         R                  SSS4[         R                  [         R                  SSS4/$ T" X/UQ70 UD6I S h  vN $  N7f)Nr    ::1r   r   r   r  r   )ry  AF_INET6SOCK_STREAMAF_INEThostr  rY  kwargsgetaddrinfo_origport2s       r   getaddrinfo`EventLoopTestsMixin.test_create_connection_local_addr_skip_different_family.<locals>.getaddrinfo  sf     u}&*<*<aEUV););QDTUW W)$FtFvFFFFs   AA&A$ A&c                  *   > [        T R                  S9$ r  r  rF   s   r   rt  ]EventLoopTestsMixin.test_create_connection_local_addr_skip_different_family.<locals>.<lambda>      G+r   	localhostr  r   r  r5   r.  r  r   OSErrorr4   r;   port1r.  r  r,  r-  s   `   @@r   7test_create_connection_local_addr_skip_different_familyKEventLoopTestsMixin.test_create_connection_local_addr_skip_different_family  s     ..0..09900	G !,		II''+K+? ( A w'II((+ (''   B88
Cc                   ^ ^^ [         R                  " 5       n[         R                  " 5       mT R                  R                  mUU4S jnUT R                  l        T R                  R	                  U 4S jSUST4S9nT R                  [        5         T R                  R                  U5        S S S 5        g ! , (       d  f       g = f)Nc                    >#    UT:X  a$  [         R                  [         R                  SSS4/$ T" X/UQ70 UD6I S h  vN $  N7f)Nr   r"  r#  )ry  r&  r'  r)  s       r   r.  YEventLoopTestsMixin.test_create_connection_local_addr_nomatch_family.<locals>.getaddrinfo  sG     u}&*<*<aEUVWW)$FtFvFFFFs   :AAAc                  *   > [        T R                  S9$ r  r  rF   s   r   rt  VEventLoopTestsMixin.test_create_connection_local_addr_nomatch_family.<locals>.<lambda>  r2  r   r3  r4  r5  r7  s   `   @@r   0test_create_connection_local_addr_nomatch_familyDEventLoopTestsMixin.test_create_connection_local_addr_nomatch_family  s     ..0..09900	G
 !,		II''+K+? ( A w'II((+ (''r;  c                 B  ^  [         R                  " 5        nT R                  R                  " U 4S j/UR                  Q7SUR                  06nT R                  [        5       nT R                  R                  U5        S S S 5        T R                  WR                  R                  [        R                  5        T R                  [        UR                  5      UR                  R                  5        S S S 5        g ! , (       d  f       N= f! , (       d  f       g = f)Nc                  *   > [        T R                  S9$ r  r  rF   s   r   rt  NEventLoopTestsMixin.test_create_connection_local_addr_in_use.<locals>.<lambda>  r  r   r  )r   r  r5   r  r  r   r6  r4   r   r   errno
EADDRINUSEassertInr  strerror)r;   r  r  r  s   `   r   (test_create_connection_local_addr_in_use<EventLoopTestsMixin.test_create_connection_local_addr_in_use  s    '')U		++/::+0==:A ""7+r		,,Q/ ,R\\//1A1ABMM#emm,bll.C.CD *) ,+	 *)s%   AD%C?A5D?
D		D
Dc                 
  ^^	^
^^^^ U R                   m " U
U4S jS[        5      n[        R                  " SSS9nUR	                  5       m	SmS mSm
U	UUU4S jn[
        R                  " US	S
9nUR                  5         UR                  5       u  pxU" TS9mTTl         TR                  TR                  U4S jXqS95        TR                  5         TR                  R                  5         UR                  5         [        R                  " U5        U R!                  UR#                  5       5        U R%                  TR&                  S5        U R%                  TR(                  [+        T5      5        U R%                  TT
5        g )Nc                   :   >^  \ rS rSrU U4S jrU U4S jrSrU =r$ )AEventLoopTestsMixin.test_connect_accepted_socket.<locals>.MyProtoi  c                 Z   > [         TU ]  U5        TR                  TR                  5        g r   )r   r   r*  r  )r;   rB   r   r5   s     r   r   QEventLoopTestsMixin.test_connect_accepted_socket.<locals>.MyProto.connection_lost  s     ',tyy)r   c                 Z   > [         TU ]  U5        U R                  R                  T5        g r   )r   rv   rW   r   )r;   ru   r   expected_responses     r   rv   OEventLoopTestsMixin.test_connect_accepted_socket.<locals>.MyProto.data_received  s#    %d+$$%67r   r   )rL   rM   rN   rO   r   rv   rP   r   )r   rR  r5   s   @r   r   rN    s    *8 8r   r   r%  r   )backlogs	   test datas   rogerc                  &  >  [         R                   " 5       n Tb  TR                  U 5      n U R                  T5        U R                  T5        U R	                  S5      mU R                  5         g ! [         a  n[        SU5         S nAg S nAff = f)Nc   z8Failure in client thread in test_connect_accepted_socket)ry  wrap_socketconnectsendallrh  rG   	Exceptionprint)csockrB   r   
client_sslmessageresponses     r   r  @EventLoopTestsMixin.test_connect_accepted_socket.<locals>.client  sz    )&2259Ed#g& ::b> N s   A,A0 0
B:BBT)r:  daemonr  c                     > T $ r   r   protos   r   rt  BEventLoopTestsMixin.test_connect_accepted_socket.<locals>.<lambda>  s    r   r  r}   )r5   rR   ry  create_servergetsocknamer;  r>  r?  acceptr4   connect_accepted_socketr  rW   rG   r   join_threadra  is_aliver   rX   rY   rs   )r;   
server_sslr]  r   lsockr  threadconn_r   rR  r5   r^  rd  r_  s     `      @@@@@@r   test_connect_accepted_socket0EventLoopTestsMixin.test_connect_accepted_socket  sB   yy	8 	8k 	8 $$%5qA  "$	 	 !!=,,.T"
(( ) 7	8 	$$V,*+h/s7|4#45r   c                 z    [         R                  " 5       n[         R                  " 5       nU R                  X5        g r   )r   simple_server_sslcontextsimple_client_sslcontextrq  )r;   server_contextclient_contexts      r    test_ssl_connect_accepted_socket4EventLoopTestsMixin.test_ssl_connect_accepted_socket  s,    #<<>#<<>)).Ir   c                 T   [         R                   " 5       nU R                  UR                  5        U R                  R	                  [
        U[        R                  S9nU R                  [        S5         U R                  R                  U5        S S S 5        g ! , (       d  f       g = f)N)ssl_handshake_timeoutz1ssl_handshake_timeout is only meaningful with ssl)ry  
addCleanuprG   r5   ri  r   r   LOOPBACK_TIMEOUTassertRaisesRegexr  r4   )r;   sockcoros      r   9test_connect_accepted_socket_ssl_timeout_for_plain_socketMEventLoopTestsMixin.test_connect_accepted_socket_ssl_timeout_for_plain_socket  s    }}

#yy00T1I1I 1 K##CE II((.E E Es   4B
B'zasyncio.base_events.socketc                 $  ^ ^^ U4S jmUU 4S jn[        U5      nT[        R                  :X  a2  U Vs/ s H  ofS4PM     snUR                  5       R                  l        O3U Vs/ s H  ofSSS4PM
     snUR                  5       R                  l        UT R
                  l        [        R                  " 5       T R
                  l	        [        R                  " 5       T R
                  l
        T R
                  R                  U 4S jUS5      nT R
                  R                  U5      nT R                  UR                  5        UR                   V	s1 s H  oR                  5       S   iM     n
n	T R!                  X5        g s  snf s  snf s  sn	f )Nc                    >#    T[         R                  :X  a  T[         R                  SSX44/$ T[         R                  SSXSS44/$ 7f)Nrx  r"  r   )ry  r(  r'  )r*  r  rY  kwfamilys       r   r.  EEventLoopTestsMixin.create_server_multiple_hosts.<locals>.getaddrinfo"  sO     '!3!3QTLIJJ!3!3QTA<NOPPs   AAc                  F   > TR                   R                  T" U 0 UD65      $ r   )r5   create_task)rY  kwdsr.  r;   s     r   getaddrinfo_taskJEventLoopTestsMixin.create_server_multiple_hosts.<locals>.getaddrinfo_task(  s"    99((d)Cd)CDDr   rS   r   c                  .   > [        T R                  5      $ r   r  rF   s   r   rt  BEventLoopTestsMixin.create_server_multiple_hosts.<locals>.<lambda>6  s    GDII,>r   )r   ry  r(  getsockbynamer  r5   r.  r   Mock_start_serving_stop_servingrf  r4   r|  rG   socketsr   )r;   r  hosts	mock_sockr  unique_hostsr*  r  serverr  server_hostsr.  s   ``         @r   create_server_multiple_hosts0EventLoopTestsMixin.create_server_multiple_hosts   s6   	Q	E 5zV^^#'3<5'3tr
|<5I,,8 .:<;-9Tr1a \<;I,,8 0		#'99;		 "&))+		II##$>rJ--a0%<BNNKND**,Q/NK4<5<; Ls   F&FFc                 H    U R                  [        R                  / SQ5        g )N)1.2.3.4z5.6.7.8r  )r  ry  r(  rF   s    r   &test_create_server_multiple_hosts_ipv4:EventLoopTestsMixin.test_create_server_multiple_hosts_ipv4<  s    ))&..*K	Mr   c                 H    U R                  [        R                  / SQ5        g )N)r$  z::2r$  )r  ry  r&  rF   s    r   &test_create_server_multiple_hosts_ipv6:EventLoopTestsMixin.test_create_server_multiple_hosts_ipv6@  s    ))&//*?	Ar   c                 t  ^ [        U R                  5      mU R                  R                  U4S jSS5      nU R                  R                  U5      nU R	                  [        UR                  5      S5        UR                  S   nUR                  5       u  pEU R	                  US5        [        R                  " 5       nUR                  SU45        UR                  S5        U R                  R                  TR                  5        U R	                  STR                  5        [        R                  " U R                  U4S j5        U R	                  S	TR                  5        U R!                  TR"                  R%                  S
5      5        U R	                  STR"                  R%                  S5      S   5        TR"                  R'                  5         U R                  R                  TR(                  5        U R	                  STR                  5        UR'                  5         UR'                  5         g )Nc                     > T $ r   r   rc  s   r   rt  8EventLoopTestsMixin.test_create_server.<locals>.<lambda>F      Er   0.0.0.0r   r   r     xxxrj   c                  "   > T R                   S:  $ r   rY   rc  s   r   rt  r  S      q0@r   r   r  r  r}   )r   r5   rf  r4   r   rs   r  rg  ry  rX  rY  r[   rX   r   r~  rY   r  rW   r  rG   r\   )r;   r  r  r  r*  r  r  rd  s          @r   test_create_server&EventLoopTestsMixin.test_create_serverD  s   		"II##M9a@--a0V^^,a0~~a %%'
y)T*+v		$$U__5ekk2TYY(@AELL) 	U__;;JGH77
CAF	H 			$$UZZ05;;/ 	 	r   c                 $  ^ [        U R                  5      mU R                  R                  U4S jSS5      nU R                  R                  U5      nU R	                  [        UR                  5      S5        UR                  S   nU R                  U[        R                  R                  5        UR                  5       u  pEU R	                  US5        UR                  5       nU R                  UR                  5        U R                  U[        R                  5        U R!                  UR#                  5       5        U R%                  [&        5         UR)                  S5        S S S 5        UR)                  S5        U R	                  UR+                  5       S5        U R%                  [&        5         UR-                  S5        S S S 5        UR-                  S5        UR                  5         g ! , (       d  f       N= f! , (       d  f       NA= f)Nc                     > T $ r   r   rc  s   r   rt  ?EventLoopTestsMixin.test_create_server_trsock.<locals>.<lambda>j  r  r   r  r   r   TF)r   r5   rf  r4   r   rs   r  r  r   trsockTransportSocketrg  dupr|  rG   ry  ra  get_inheritabler   r  
settimeout
gettimeoutr{  )r;   r  r  r  r*  r  r  rd  s          @r   test_create_server_trsock-EventLoopTestsMixin.test_create_server_trsockh  sp   		"II##M9a@--a0V^^,a0~~a dGNN$B$BC%%'
y)hhj		"c6==1--/0z*OOA +*A.z*T" + +* +*s   G04H0
G>
HSO_REUSEPORTzNo SO_REUSEPORTc                   ^ [        U R                  5      mU R                  R                  U4S jSS5      nU R                  R                  U5      nU R	                  [        UR                  5      S5        UR                  S   nU R                  UR                  [        R                  [        R                  5      5        UR                  5         [        R                  " U R                  5        [        U R                  5      mU R                  R                  U4S jSSSS9nU R                  R                  U5      nU R	                  [        UR                  5      S5        UR                  S   nU R                  UR                  [        R                  [        R                  5      5        UR                  5         g )Nc                     > T $ r   r   rc  s   r   rt  CEventLoopTestsMixin.test_create_server_reuse_port.<locals>.<lambda>      Er   r  r   r   c                     > T $ r   r   rc  s   r   rt  r    r  r   T)
reuse_port)r   r5   rf  r4   r   rs   r  ra  
getsockoptry  
SOL_SOCKETr  rG   r   r   r   )r;   r  r  r  rd  s       @r   test_create_server_reuse_port1EventLoopTestsMixin.test_create_server_reuse_port  sN   		"II##9a)--a0V^^,a0~~a OO!!6#6#68	9 	tyy)		"II##9aD $ :--a0V^^,a0~~a OO!!6#6#68	9 	r   c                    ^ [         R                  " 5       mU R                  U4S j5        U R                  R                  " UT40 UD6nU R                  R                  U5      nUT4$ )Nc                  |   > [         R                  R                  T 5      =(       a    [         R                  " T 5      $ r   )r  pathexistsunlink)r  s   r   rt  7EventLoopTestsMixin._make_unix_server.<locals>.<lambda>  s"    t 4 H4 Hr   )r   gen_unix_socket_pathr|  r5   create_unix_serverr4   )r;   factoryr+  r  r  r  s        @r   _make_unix_server%EventLoopTestsMixin._make_unix_server  sW    ..0HIII(($A&A--a0t|r   c                 *  ^ [        U R                  S9mU R                  U4S j5      u  pU R                  [	        UR
                  5      S5        [        R                  " [        R                  5      nUR                  U5        UR                  S5        U R                  R                  TR                  5        U R                  STR                  5        [        R                  " U R                  U4S j5        U R                  STR                  5        TR                   R#                  5         U R                  R                  TR$                  5        U R                  STR                  5        UR#                  5         UR#                  5         g )	Nr  c                     > T $ r   r   rc  s   r   rt  =EventLoopTestsMixin.test_create_unix_server.<locals>.<lambda>  s    er   r   r  rj   c                  "   > T R                   S:  $ r   r  rc  s   r   rt  r    r  r   r   r}   )r   r5   r  r   rs   r  ry  AF_UNIXrX  rY  r4   r[   rX   r   r~  rY   rW   rG   r\   )r;   r  r  r  rd  s       @r   test_create_unix_server+EventLoopTestsMixin.test_create_unix_server  s   TYY'--m<V^^,a0v~~.tv		$$U__5ekk2TYY(@AELL) 			$$UZZ05;;/ 	 	r   r  zNo UNIX Socketsc                 b  ^ [        U R                  S9m[        R                  " 5       nU   U R                  R                  U4S jSUS9nU R	                  [
        S5         U R                  R                  U5        S S S 5        S S S 5        g ! , (       d  f       N= f! , (       d  f       g = f)Nr  c                     > T $ r   r   rc  s   r   rt  OEventLoopTestsMixin.test_create_unix_server_path_socket_error.<locals>.<lambda>  s    Ur   z/testr  z3path and sock can not be specified at the same time)r   r5   ry  r  r~  r  r4   )r;   r  r  rd  s      @r   )test_create_unix_server_path_socket_error=EventLoopTestsMixin.test_create_unix_server_path_socket_error  s    TYY'}}		,,]G$,OA''
);< 		,,Q/< T< < Ts#   6B "B>B 
B	B  
B.c                     [         R                  " [         R                  5      nU=R                  [         R                  -  sl        UR                  X5        U$ r   )r  
SSLContextPROTOCOL_TLS_SERVERoptionsOP_NO_SSLv2load_cert_chain)r;   certfilekeyfile
sslcontexts       r   _create_ssl_context'EventLoopTestsMixin._create_ssl_context  s?    ^^C$;$;<
coo-""85r   c                     U R                  X#5      nU R                  R                  USSUS9nU R                  R                  U5      nUR                  S   nUR                  5       u  pU R                  US5        XhU	4$ )Nr  r   r  )r  r5   rf  r4   r  rg  r   )
r;   r  r  r  r  r  r  r  r*  r  s
             r   _make_ssl_server$EventLoopTestsMixin._make_ssl_server  s|    --h@
II##G[!#L--a0~~a %%'
{+T!!r   c                 B    U R                  X#5      nU R                  XS9$ )Nr  )r  r  )r;   r  r  r  r  s        r   _make_ssl_unix_server)EventLoopTestsMixin._make_ssl_unix_server  s&    --h@
%%g%>>r   c                 t  ^ [        U R                  S9mU R                  U4S j[        R                  [        R
                  5      u  pnU R                  R                  [        X#[        R                  " 5       S9nU R                  R                  U5      u  pVUR                  S5        U R                  R                  TR                  5        U R                  STR                  5        [        R                  " U R                  U4S j5        U R                  STR                  5        U R!                  XRU4S9  TR"                  R%                  5         U R                  R                  TR&                  5        U R                  S	TR                  5        UR%                  5         UR%                  5         g )
Nr  c                     > T $ r   r   rc  s   r   rt  <EventLoopTestsMixin.test_create_server_ssl.<locals>.<lambda>  r  r   r  r  rj   c                  "   > T R                   S:  $ r   r  rc  s   r   rt  r    r  r   r   r  r}   )r   r5   r  r   ONLYCERTONLYKEYr  rR   r  r4   r   r[   r   rX   r~  rY   r  rW   rG   r\   )r;   r  r*  r  f_cr  r  rd  s          @r   test_create_server_ssl*EventLoopTestsMixin.test_create_server_ssl  sD   TYY'!22:..
0B0BDd ii))+t.8.J.J.L * NYY11#6
V		$$U__5ekk2TYY(@AELL) 	!!&$<!@ 			$$UZZ05;;/ 	 	r   c                 R  ^ [        U R                  S9mU R                  U4S j[        R                  [        R
                  5      u  pU R                  R                  [        U[        R                  " 5       SS9nU R                  R                  U5      u  pEUR                  S5        U R                  R                  TR                  5        U R                  STR                  5        [        R                  " U R                  U4S j5        U R                  STR                  5        TR                   R#                  5         U R                  R                  TR$                  5        U R                  S	TR                  5        UR#                  5         UR#                  5         g )
Nr  c                     > T $ r   r   rc  s   r   rt  AEventLoopTestsMixin.test_create_unix_server_ssl.<locals>.<lambda>  r  r   r"  r  r  r  rj   c                  "   > T R                   S:  $ r   r  rc  s   r   rt  r    r  r   r   r}   )r   r5   r  r   r  r  r  rR   r  r4   r   r[   r   rX   r~  rY   rW   rG   r\   )r;   r  r  r  r  r  rd  s         @r   test_create_unix_server_ssl/EventLoopTestsMixin.test_create_unix_server_ssl  s0    TYY'11:..
0B0BD ii..:#?#?#A /   YY11#6
V		$$U__5ekk2TYY(@AELL) 			$$UZZ05;;/ 	 	r   c                   ^ [        U R                  S9mU R                  U4S j[        R                  5      u  pn[
        R                  " [
        R                  5      nU=R                  [
        R                  -  sl        [
        R                  Ul        [        US5      (       a  SUl        U R                  R                  [         X#US9n[        R                   R#                  U R                  S5         [        R$                  " 5          U R'                  [
        R(                  S5         U R                  R+                  U5        S S S 5        S S S 5        [        R,                  " U R                  5        S S S 5        U R/                  TR0                  5        UR3                  5         g ! , (       d  f       Nj= f! , (       d  f       Ns= f! , (       d  f       N\= f)Nr  c                     > T $ r   r   rc  s   r   rt  JEventLoopTestsMixin.test_create_server_ssl_verify_failed.<locals>.<lambda>!  r  r   check_hostnameTr  call_exception_handler(?i)certificate.verify.failed)r   r5   r  r   SIGNED_CERTFILEr  r  PROTOCOL_TLS_CLIENTr  r  CERT_REQUIREDverify_moder  r  r  r   r  objectr  r~  r  r4   r   assertIsNonerW   rG   )r;   r  r*  r  sslcontext_clientr  rd  s         @r   $test_create_server_ssl_verify_failed8EventLoopTestsMixin.test_create_server_ssl_verify_failed  sX   TYY'!22:557d  NN3+B+BC!!S__4!(+(9(9%$&677/3, ii))'4.? * AZZtyy*BC**,++CLL,KMII005M - ""499- D 	%//*M M -, DC<   9G!G0F0G(G0
F>:G
G	G
G c                   ^ [        U R                  S9mU R                  U4S j[        R                  5      u  p[
        R                  " [
        R                  5      nU=R                  [
        R                  -  sl        [
        R                  Ul        [        US5      (       a  SUl        U R                  R                  [         UUSS9n[        R                   R#                  U R                  S5         [        R$                  " 5          U R'                  [
        R(                  S5         U R                  R+                  U5        S S S 5        S S S 5        [        R,                  " U R                  5        S S S 5        U R/                  TR0                  5        UR3                  5         g ! , (       d  f       Nj= f! , (       d  f       Ns= f! , (       d  f       N\= f)	Nr  c                     > T $ r   r   rc  s   r   rt  OEventLoopTestsMixin.test_create_unix_server_ssl_verify_failed.<locals>.<lambda>?  r  r   r  Tinvalidr  r   r  )r   r5   r  r   r  r  r  r  r  r  r  r  r  r  r  r   r  r  r  r~  r  r4   r   r  rW   rG   )r;   r  r  r  r  rd  s        @r   )test_create_unix_server_ssl_verify_failed=EventLoopTestsMixin.test_create_unix_server_ssl_verify_failed:  s\    TYY'11:557  NN3+B+BC!!S__4!(+(9(9%$&677/3, ii..w3D?H / J ZZtyy*BC**,++CLL,KMII005M - ""499- D 	%//*M M -, DCr  c                 
  ^ [        U R                  S9mU R                  U4S j[        R                  5      u  pn[
        R                  " [
        R                  5      nU=R                  [
        R                  -  sl        [
        R                  Ul        UR                  [        R                  S9  [        US5      (       a  SUl        U R                  R!                  [         X#US9n["        R$                  " S["        R&                  5      n[(        R*                  R-                  U R                  S5         [        R.                  " 5          U R1                  [
        R2                  U5         U R                  R5                  U5        S S S 5        S S S 5        S S S 5        U R7                  TR8                  5        UR;                  5         g ! , (       d  f       NJ= f! , (       d  f       NS= f! , (       d  f       N\= f)	Nr  c                     > T $ r   r   rc  s   r   rt  IEventLoopTestsMixin.test_create_server_ssl_match_failed.<locals>.<lambda>\  r  r   r  r  Tr  z(
            IP address mismatch, certificate is not valid for '127.0.0.1'   # OpenSSL
            |
            CERTIFICATE_VERIFY_FAILED                                       # AWS-LC
        )r   )r   r5   r  r   r  r  r  r  r  r  r  r  load_verify_locations
SIGNING_CAr  r  r  recompileXr   r  r  r  r~  CertificateErrorr4   r  rW   rG   )r;   r  r*  r  r  r  regexrd  s          @r   #test_create_server_ssl_match_failed7EventLoopTestsMixin.test_create_server_ssl_match_failedX  s{   TYY'!22:557d  NN3+B+BC!!S__4!(+(9(9%//(( 	0 	*$&677/3, ii))'4.? * A 

  dd	
 ZZtyy*BC**,++C,@,@%HII005 I - D 	%//* IH -, DCs<   ;G4!G#2GG#G4
G G##
G1	-G44
Hc                   ^ [        U R                  S9mU R                  U4S j[        R                  5      u  p[
        R                  " [
        R                  5      nU=R                  [
        R                  -  sl        [
        R                  Ul        UR                  [        R                  S9  [        US5      (       a  SUl        U R                  R!                  [         UUSS9nU R                  R#                  U5      u  pVU R                  R#                  TR$                  5        TR&                  R)                  5         UR)                  5         UR)                  5         U R                  R#                  TR*                  5        g )Nr  c                     > T $ r   r   rc  s   r   rt  JEventLoopTestsMixin.test_create_unix_server_ssl_verified.<locals>.<lambda>  r  r   r  r  Tr3  r  )r   r5   r  r   r  r  r  r  r  r  r  r  r  r  r  r  r  r4   r[   rW   rG   r\   )r;   r  r  r  r  r  r  rd  s          @r   $test_create_unix_server_ssl_verified8EventLoopTestsMixin.test_create_unix_server_ssl_verifiedz  s(    TYY'11:557  NN3+B+BC!!S__4!(+(9(9%//z7L7L/M$&677/3, ii..w3D?J / L YY11#6
		$$U__5 			$$UZZ0r   c                 ^  ^ [        U R                  S9mU R                  U4S j[        R                  5      u  pn[
        R                  " [
        R                  5      nU=R                  [
        R                  -  sl        [
        R                  Ul        UR                  [        R                  S9  [        US5      (       a  SUl        U R                  R!                  [         X#USS9nU R                  R#                  U5      u  pgU R                  R#                  TR$                  5        U R'                  XbU4[        R(                  S9  TR*                  R-                  5         UR-                  5         UR-                  5         U R                  R#                  TR.                  5        g )	Nr  c                     > T $ r   r   rc  s   r   rt  EEventLoopTestsMixin.test_create_server_ssl_verified.<locals>.<lambda>  r  r   r  r  Tr3  r  )r  r  )r   r5   r  r   r  r  r  r  r  r  r  r  r  r  r  r  r  r4   r[   r  PEERCERTrW   rG   r\   )	r;   r  r*  r  r  r  r  r  rd  s	           @r   test_create_server_ssl_verified3EventLoopTestsMixin.test_create_server_ssl_verified  sN   TYY'!22:557d  NN3+B+BC!!S__4!(+(9(9%//z7L7L/M$&677/3, ii))'4.?:E * G YY11#6
		$$U__5 	!!&$<+5+>+> 	" 	@ 			$$UZZ0r   c                 f  ^	 U R                   R                  5       m	 " U	4S jS[        5      n[        R                  " S5      nU R                   R	                  XS9nU R                   R                  U5      nUR                  S   nU R                  UR                  5       UR                  5       5        UR                  5       u  pgU R                  US5        [        R                  " 5       nUR                  SU45        UR                  S5        UR                  5         UR                  5         g )	Nc                   ,   >^  \ rS rSrU U4S jrSrU =r$ )@EventLoopTestsMixin.test_create_server_sock.<locals>.TestMyProtoi  c                 F   > [         TU ]  U5        TR                  U 5        g r   r   rn   rl   )r;   rW   r   rd  s     r   rn   PEventLoopTestsMixin.test_create_server_sock.<locals>.TestMyProto.connection_made  s    '	2  &r   r   r   )r   rd  s   @r   TestMyProtor,    s    ' 'r   r0  r  r   r  r   r  r  r  )r5   rZ   r   ry  rf  r4   r  r   rl  rg  rX  r=   rG   )
r;   r0  sock_obr  r  r  r*  r  r  rd  s
            @r   test_create_server_sock+EventLoopTestsMixin.test_create_server_sock  s    		'')	'' 	'
 &&~6II##K#>--a0~~a (89%%'
y)T*+Fr   c                 <   [         R                  " S5      nU R                  R                  [        US9nU R                  R	                  U5      nUR
                  S   nUR                  5       u  pVU R                  R                  [        XVS9nU R                  [        5       nU R                  R	                  U5        S S S 5        U R                  WR                  R                  [        R                  5        UR                  5         g ! , (       d  f       NS= f)Nr1  r  r   r*  r  )ry  rf  r5   r   r4   r  rg  r   r6  r   r   rF  rG  rG   )r;   r2  r  r  r  r*  r  r  s           r   test_create_server_addr_in_use2EventLoopTestsMixin.test_create_server_addr_in_use  s    &&~6II##G'#:--a0~~a %%'
II##G$#Bw'2II((+ (++U-=-=>	 ('s   $D
DzIPv6 not supported or enabledc                   ^	 U R                   R                  5       m	 " U	4S jS[        5      nSn  [        R                  " 5       nU R                   R                  US US9nU R                   R                  U5      n [        R                  " 5       nUR                  SU45        UR                  S5        U R                   R                  T	5      nUR                  R                  5         UR                  5         U R                   R                  5       m	[        R                  " [        R                   5      nUR                  S	U45        UR                  S5        U R                   R                  T	5      nUR                  R                  5         UR                  5         UR                  5         g ! [         aB  nUR                  [        R                  :X  a  US-  nU R                  SU5         S nAGM  e S nAff = f)
Nc                   ,   >^  \ rS rSrU U4S jrSrU =r$ )FEventLoopTestsMixin.test_create_server_dual_stack.<locals>.TestMyProtoi  c                 F   > [         TU ]  U5        TR                  U 5        g r   r.  )r;   rW   r   f_protos     r   rn   VEventLoopTestsMixin.test_create_server_dual_stack.<locals>.TestMyProto.connection_made  s    '	2""4(r   r   r   )r   r=  s   @r   r0  r;    s    ) )r   r0  r   r6  r   r   r  r  r$  )r5   rZ   r   r   r  rf  r4   r6  rF  rG  r  ry  rX  r=   rW   rG   r&  )
r;   r0  	try_countr  r  r  exr  rd  r=  s
            @r   test_create_server_dual_stack1EventLoopTestsMixin.test_create_server_dual_stack  s   ))))+	)' 	)
 	$557II++Kd+N55a8 T*+F		,,W5))))+v/t}%F		,,W51  88u///NI++Ay9s   AF4 4
H >5G;:G;;H c                     U R                   R                  [        SS5      nU R                   R                  U5      nUR                  S   nUR                  5       u  pE[        R                  " 5       nUR                  SU45        UR                  S5        UR                  5         UR                  5         [        R                  " 5       nU R                  [        UR                  SU45        UR                  5         g )Nr  r   r  r  )r5   rf  r   r4   r  rg  ry  rX  r=   rG   r   ConnectionRefusedError)r;   r  r  r  r*  r  r  s          r   test_server_close%EventLoopTestsMixin.test_server_close  s    II##GY:--a0~~a %%'
T*+F"FNN[$4G	Ir   c                   ^ ^
^  " U 4S jS[         5      nT R                  R                  X1US9nT R                  R                  U5      u  nmUR	                  S5      n[
        R                  " U[
        R                  [
        R                  -  5      u  pxT R                  U[        R                  5        T R                  TU5        T R                  STR                  5        T R                  TR                  U5        T R                  R                  U 4S jXx4S9nT R                  R                  U5      u  n	m
T R                  U	[        R                  5        T R                  T
[         5        T R                  ST
R                  5        T R                  T
R                  U	5        U	R!                  S5        ["        R$                  " T R                  U4S	 j5        T R                  S
TR&                  5        ["        R$                  " T R                  U
4S j5        T R                  ST
R&                  5        T R)                  U	R	                  S5      5        U	R+                  5         T R                  R                  T
R,                  5        T R                  ST
R                  5        TR                  R+                  5         g )Nc                   8   >^  \ rS rSrU U4S jrU 4S jrSrU =r$ )OEventLoopTestsMixin._test_create_datagram_endpoint.<locals>.TestMyDatagramProtoi  c                 4   > [         TU ]  TR                  S9  g r  )r   r^   r5   )
inner_selfr   r;   s    r   r^   XEventLoopTestsMixin._test_create_datagram_endpoint.<locals>.TestMyDatagramProto.__init__  s     dii 0r   c                 b   > [         TU ]  X5        U R                  R                  SU-   U5        g )Ns   resp:)r   r   rW   sendto)r;   ru   r   r   s      r   r   aEventLoopTestsMixin._test_create_datagram_endpoint.<locals>.TestMyDatagramProto.datagram_received  s(    )$5%%htmT:r   r   )rL   rM   rN   rO   r^   r   rP   r   )r   r;   s   @r   TestMyDatagramProtorI    s    1; ;r   rP  )r  r  r  r   c                  *   > [        T R                  S9$ r  r   r5   rF   s   r   rt  DEventLoopTestsMixin._test_create_datagram_endpoint.<locals>.<lambda>+      O3r   )remote_addrr  c                     > T R                   $ r   r  )r  s   r   rt  rS  5  	    r   r   c                     > T R                   $ r   r  )r  s   r   rt  rS  7  rW  r      r}   )r   r5   create_datagram_endpointr4   r  ry  getnameinfoNI_NUMERICHOSTNI_NUMERICSERVr  r   r  r   rX   r  rW   rN  r   r~  rY   r  rG   r\   )r;   r  r  rP  r  s_transportr  r*  r  rW   r  r  s   `         @@r   _test_create_datagram_endpoint2EventLoopTestsMixin._test_create_datagram_endpoint  s"   	;/ 	; yy11v 2 G"ii::4@V--j9''f++F,A,AAC
 	k7+<+<=f&9:5f&&4yy113 2 & !II88>	6i):):;fo65f&&	2 TYY(=>FMM*TYY(=> 	FMM* 	Y55jAB 			$$V[[16<<0 r   c                 D    U R                  S[        R                  5        g )Nr%  )r_  ry  r(  rF   s    r   test_create_datagram_endpoint1EventLoopTestsMixin.test_create_datagram_endpointE  s    ++,<fnnMr   c                 D    U R                  S[        R                  5        g )N)r$  r   )r_  ry  r&  rF   s    r   "test_create_datagram_endpoint_ipv66EventLoopTestsMixin.test_create_datagram_endpoint_ipv6H  s    ++JHr   c                   ^  S nSnT R                   R                  T R                   R                  " US[        R                  065      nU H?  u  pEpgn [        R                  " XEUS9nUR                  S5        UR                  U5          O   T R                  S5        T R                   R                  U 4S jUS9n	T R                   R                  U	5      u  pT R                  U
[        R                  5        T R                  U[        5        U
R                  5         T R                   R                  UR                  5        g !    GM  = f)Nr%  type)r  rh  rd  FzCan not create socket.c                  *   > [        T R                  S9$ r  rR  rF   s   r   rt  HEventLoopTestsMixin.test_create_datagram_endpoint_sock.<locals>.<lambda>_  rT  r   r  )r5   r4   r.  ry  
SOCK_DGRAMr{  bindfailrZ  r  r   r  r   rG   r\   )r;   r  local_addressinfosr  rh  rd  cnamer  r  r  r  s   `           r   "test_create_datagram_endpoint_sock6EventLoopTestsMixin.test_create_datagram_endpoint_sockL  s   (		,,II!!8%+%6%689 49/F%}}FUK  '		'"  49 II./II..3$ / @--a0b'"3"34b/2

		$$RWW-s   7EEc                   ^ U R                   m " U4S jS[        R                  5      nS nU" 5       nTR                  TR	                  XS95      u  pEUR                  5       nU" 5       nTR                  TR	                  XS95      u  pUR                  5       n
U" 5       nTR                  TR	                  XS95      u  pUR                  5       nUR                  5         UR                  SU
S9  U R                  TR                  U	R                  5       5      S5        UR                  SUS9  U R                  TR                  UR                  5       5      S5        UR                  SUS9  TR                  [        R                  " S	5      5        UR                  S
US9  U R                  TR                  UR                  5       5      S
5        UR                  5         UR                  5         g )Nc                   ,   > \ rS rSrSrS rU 4S jrSrg)QEventLoopTestsMixin.test_datagram_send_to_non_listening_address.<locals>.Protocolip  Nc                 :    U R                   R                  U5        g r   )_received_datagramrl   r   s      r   r   cEventLoopTestsMixin.test_datagram_send_to_non_listening_address.<locals>.Protocol.datagram_receivedt  s    ''2248r   c                    >#    TR                  5       U l        [        R                  " U R                  S5      I S h  vN nS U l        U$  N7f)Nr   )rZ   rw  r   wait_for)r;   resultr5   s     r   wait_for_datagram_receivedlEventLoopTestsMixin.test_datagram_send_to_non_listening_address.<locals>.Protocol.wait_for_datagram_receivedw  sE     *.*<*<*>'&//0G0GLL*.' Ms   :AAA)rw  )rL   rM   rN   rO   rw  r   r|  rP   r  s   r   r  ru  p  s    !%9 r   r  c                      [         R                   " [         R                  [         R                  5      n U R                  S5        U R	                  S5        U $ )NFr%  )ry  r(  rk  r{  rl  r  s    r   create_socketVEventLoopTestsMixin.test_datagram_send_to_non_listening_address.<locals>.create_socket}  s<    ==1B1BCDU#II&'Kr   r     a)r      b   cr      d)r5   r   DatagramProtocolr4   rZ  rg  abortrN  r   r|  r   rG   )r;   r  r  socket_1transport_1
protocol_1addr_1socket_2transport_2
protocol_2addr_2socket_3transport_3
protocol_3addr_3r5   s                  @r   +test_datagram_send_to_non_listening_address?EventLoopTestsMixin.test_datagram_send_to_non_listening_addressf  s    yy	w// 		 !?"&"9"9))()B#
 %%' ?"&"9"9))()B#
 %%' !?"&"9"9))()B#
 %%'4f-00113
	 	4f-00113
	
 	4f-a 01 	4f-00113
	 	r   c                    U R                  5       n[        U[        R                  5      (       d!  UR	                  5         U R                  S5        U R                  SUR                  5        UR	                  5         U R                  SUR                  5        U R                  UR                  5        U R                  UR                  5        g )Nz#loop is not a BaseSelectorEventLoopr   r   )r   
isinstancer   BaseSelectorEventLooprG   skipTestr   _internal_fdsr  _csock_ssockr]   s     r   test_internal_fds%EventLoopTestsMixin.test_internal_fds  s    %%'$ E EFFJJLMM?@D../

D../$++&$++&r   r   zDon't support pipes for Windowsc                   ^ ^^ [        T R                  S9m[        R                  " 5       u  p[        R
                  " USS5      mUUU 4S jnT R                  R                  U" 5       5        [        R                  " US5        [        R                  " T R                  U4S j5        T R                  STR                  5        [        R                  " US5        [        R                  " T R                  U4S	 j5        T R                  S
S/TR                  5        T R                  STR                  5        [        R                  " U5        T R                  R                  TR                  5        T R                  / SQTR                  5        T R                  TR                   R#                  S5      5        g )Nr  rbrg  c                  6  >#    TR                   R                  U4S jT5      I S h  vN u  pTR                  UT5        TR                  U TR                  5        TR	                  SS/TR
                  5        TR	                  STR                  5        g  No7f)Nc                     > T $ r   r   rc  s   r   rt  EEventLoopTestsMixin.test_read_pipe.<locals>.connect.<locals>.<lambda>  s    r   rV   rj   r   r5   connect_read_piper  rW   r   rX   rY   )rA  ppipeobjrd  r;   s     r   rX  3EventLoopTestsMixin.test_read_pipe.<locals>.connect  sx     44w( (DAMM!U#MM!U__-i5u{{CQ-(   $BBA0B   1c                  "   > T R                   S:  $ r  r  rc  s   r   rt  4EventLoopTestsMixin.test_read_pipe.<locals>.<lambda>      0Ar   r      2345c                  "   > T R                   S:  $ Nr   r  rc  s   r   rt  r    r  r   rV   rj   r   rV   rj   ry   r}   pipe)r   r5   r  r  ioopenr4   r   r   r~  r   rY   rX   rG   r\   r  rW   r  )r;   rpipewpiperX  r  rd  s   `   @@r   test_read_pipe"EventLoopTestsMixin.test_read_pipe  s,     TYY/wwy''%t,	. 			$$WY/
TYY(ABELL)
 TYY(AB)[15;;?ELL)
		$$UZZ05u{{	D 	U__;;FCDr   c                 
  ^^^^	^
 U R                  5       m[        TS9m[        TS9m
[        R                  " 5       u  p[
        R                  " USS5      m[
        R                  " USSSS9m	UUUU	U
4S jnTR                  U" 5       5      u  pETR                  5         U R                  S[        U5      5        U R                  S[        U5      5        TR                  5         T	R                  5         S Ul        S Ul        g )	Nr  r  rg  r  zutf-8)encodingc                     >#    TR                  U4S jT5      I S h  vN u  pTR                  U4S jT5      I S h  vN u  p!X4$  N) N7f)Nc                     > T $ r   r   
read_protos   r   rt  SEventLoopTestsMixin.test_unclosed_pipe_transport.<locals>.connect.<locals>.<lambda>  s    
r   c                     > T $ r   r   write_protos   r   rt  r    s    r   )r  connect_write_pipe)read_transportrp  write_transportr5   r  rpipeobjwpipeobjr  s      r   rX  AEventLoopTestsMixin.test_unclosed_pipe_transport.<locals>.connect  sS     &*&<&<"H'. !.N'+'>'>#X(/ "/O!22	!."/s   AAAA	
A	Ar  )r   r   r   r  r  r  r  r4   rG   rH  repr_pipe)r;   r  r  rX  r  r  r5   r  r  r  r  s         @@@@@r   test_unclosed_pipe_transport0EventLoopTestsMixin.test_unclosed_pipe_transport  s     %%'$$/
&D1wwy775$-775#tg>	3 	3 +/*A*A')*L'

 	fd>23fd?34 	# $r   openptyzneed os.openpty()c                   ^ ^^ [        T R                  S9m[        R                  " 5       u  p[        R
                  " USS5      mUUU 4S jnT R                  R                  U" 5       5        [        R                  " US5        [        R                  " T R                  U4S j5        T R                  STR                  5        [        R                  " US5        [        R                  " T R                  U4S	 j5        T R                  S
S/TR                  5        T R                  STR                  5        [        R                  " U5        TR                  R                  5         T R                  R                  TR                  5        T R                  / SQTR                  5        T R!                  TR                  R#                  S5      5        g )Nr  r  r   c                  6  >#    TR                   R                  U4S jT5      I S h  vN u  pTR                  UT5        TR                  U TR                  5        TR	                  SS/TR
                  5        TR	                  STR                  5        g  No7f)Nc                     > T $ r   r   rc  s   r   rt  KEventLoopTestsMixin.test_read_pty_output.<locals>.connect.<locals>.<lambda>
  s    Ur   rV   rj   r   r  )rA  r  master_read_objrd  r;   s     r   rX  9EventLoopTestsMixin.test_read_pty_output.<locals>.connect	  s{     44]5DF FDAMM!U#MM!U__-i5u{{CQ-Fr  r  c                     > T R                   $ r   r  rc  s   r   rt  :EventLoopTestsMixin.test_read_pty_output.<locals>.<lambda>  s	    r   r   r  c                  "   > T R                   S:  $ r  r  rc  s   r   rt  r    r  r   rV   rj   r   r  r  )r   r5   r  r  r  r  r4   r   r   r~  r   rY   rX   rG   rW   r\   r  r  )r;   masterslaverX  r  rd  s   `   @@r   test_read_pty_output(EventLoopTestsMixin.test_read_pty_output   s<     TYY/

''&$2	. 			$$WY/
TYY(<=ELL)
 TYY(AB)[15;;?ELL)
		$$UZZ05u{{	D 	U__;;FCDr   c                 R  ^^^^	 [         R                  " 5       u  m	n[        R                  " USS5      n[	        U R
                  S9mU R
                  R                  U4S jU5      nU R
                  R                  U5      u  pEU R                  UT5        U R                  UTR                  5        U R                  STR                  5        UR                  S5        [        5       mU	4S jm[        R                  " U R
                  UU4S j5        U R                  ST5        UR                  S	5        [        R                  " U R
                  UU4S
 j5        U R                  ST5        U R                  STR                  5        [         R                   " T	5        U R#                  TR                  R%                  S5      5        TR                  R!                  5         U R
                  R                  TR&                  5        U R                  STR                  5        g )Nwbrg  r  c                     > T $ r   r   rc  s   r   rt  5EventLoopTestsMixin.test_write_pipe.<locals>.<lambda>+      ur   rj   r  c                 P   > [         R                  " TS5      nX-  n [        U 5      $ rf  r  r  rs   )ru   chunkr  s     r   ro  3EventLoopTestsMixin.test_write_pipe.<locals>.reader4  s$    GGE4(EMDt9r   c                     > T" T 5      S:  $ r  r   ru   ro  s   r   rt  r  9      t0Ar   r  c                     > T" T 5      S:  $ r  r   r  s   r   rt  r  =  r  r      12345r  r}   )r  r  r  r  r   r5   r  r4   r  rW   r   rX   r   r|  r   r~  rG   r  r  r\   )
r;   r  r  rX  rW   r  ru   rd  ro  r  s
         @@@@r   test_write_pipe#EventLoopTestsMixin.test_write_pipe$  s~    wwyu''%t, dii0))..}gFyy33G<	ai1ekk2{	
 	TYY(ABt$ TYY(AB4(ekk2
 	U__;;FCD 			$$UZZ05;;/r   c                 (  ^ [         R                  " 5       u  pUR                  S5        [        R                  " UR                  5       SS5      n[        U R                  S9mU R                  R                  U4S jU5      nU R                  R                  U5      u  pVU R                  UT5        U R                  UTR                  5        U R                  STR                  5        UR                  S5        U R                  R                  U R                  R                  US5      5      nU R                  SU5        UR!                  5         U R                  R                  TR"                  5        U R                  STR                  5        g )	NFr  rg  r  c                     > T $ r   r   rc  s   r   rt  IEventLoopTestsMixin.test_write_pipe_disconnect_on_close.<locals>.<lambda>S  r  r   rj   r  r}   )ry  rz  r{  r  r  detachr   r5   r  r4   r  rW   r   rX   r   	sock_recvrG   r\   )	r;   rsockwsockr  rX  rW   r  ru   rd  s	           @r   #test_write_pipe_disconnect_on_close7EventLoopTestsMixin.test_write_pipe_disconnect_on_closeK  s    ((*% ''%,,.$5 dii0))..}gFyy33G<	ai1ekk2yy++DII,?,?t,LMt$		$$UZZ05;;/r   r   rx  c                   ^^^^	 [         R                  " 5       u  mn[        R                  " USS5      n[	        U R
                  S9mU R
                  R                  U4S jU5      nU R
                  R                  U5      u  pEU R                  UT5        U R                  UTR                  5        U R                  STR                  5        UR                  S5        [        5       mU4S jm	[        R                  " U R
                  UU	4S j[         R"                  S	9  U R                  ST5        UR                  S
5        [        R                  " U R
                  UU	4S j[         R"                  S	9  U R                  ST5        U R                  STR                  5        [         R$                  " T5        U R'                  TR                  R)                  S5      5        TR                  R%                  5         U R
                  R                  TR*                  5        U R                  STR                  5        g )Nr  r   r  c                     > T $ r   r   rc  s   r   rt  4EventLoopTestsMixin.test_write_pty.<locals>.<lambda>m  r  r   rj   r  c                 P   > [         R                  " TS5      nX-  n [        U 5      $ rf  r  ru   r  r  s     r   ro  2EventLoopTestsMixin.test_write_pty.<locals>.readerv  $    GGFD)EMDt9r   c                     > T" T 5      S:  $ r  r   r  s   r   rt  r  {  r  r   timeoutr  c                     > T" T 5      S:  $ r  r   r  s   r   rt  r    r  r   r  r  r}   )r  r  r  r  r   r5   r  r4   r  rW   r   rX   r   r|  r   r~  r   SHORT_TIMEOUTrG   r  r  r\   )
r;   r  slave_write_objrX  rW   r  ru   r  rd  ro  s
         @@@@r   test_write_pty"EventLoopTestsMixin.test_write_ptyb  s    

''%q1 dii0))..}oNyy33G<	ai1ekk2{	
 	TYY(A%,%:%:	<t$ TYY(A%,%:%:	<4(ekk2
 	U__;;FCD 			$$UZZ05;;/r   c                 	  ^
^^^^ [         R                  " 5       u  mn[         R                  " U5      n[        R                  " U5        [
        R                  " USS5      n[        U R                  S9mU R                  R                  U4S jU5      nU R                  R                  U5      u  pVU R                  UT5        U R                  UTR                  5        U R                  SS/TR                  5        U R                  STR                  5        [
        R                  " USS5      n[!        U R                  S9mU R                  R#                  U4S jU5      nU R                  R                  U5      u  pU R                  UT5        U R                  U	TR                  5        U R                  STR                  5        [%        5       m
U4S	 jmU	R'                  S
5        [(        R*                  " U R                  U
U4S j[,        R.                  S9  U R                  S
T
5        U R                  SS/TR                  5        U R                  STR                  5        [         R&                  " TS5        [(        R*                  " U R                  U4S j[,        R.                  S9  U R                  SS/TR                  5        U R                  STR                  5        U R                  STR                  5        U	R'                  S5        [(        R*                  " U R                  U
U4S j[,        R.                  S9  U R                  ST
5        U R                  SS/TR                  5        U R                  STR                  5        [         R&                  " TS5        [(        R*                  " U R                  U4S j[,        R.                  S9  U R                  SS/TR                  5        U R                  STR                  5        U R                  STR                  5        [         R0                  " T5        UR1                  5         U R                  R                  TR2                  5        U R                  / SQTR                  5        U	R1                  5         U R                  R                  TR2                  5        U R                  STR                  5        g )Nr  r   r  c                     > T $ r   r   r  s   r   rt  <EventLoopTestsMixin.test_bidirectional_pty.<locals>.<lambda>  s    :r   rV   rj   r  c                     > T $ r   r   r  s   r   rt  r    s    [r   c                 P   > [         R                  " TS5      nX-  n [        U 5      $ rf  r  r  s     r   ro  :EventLoopTestsMixin.test_bidirectional_pty.<locals>.reader  r  r   r  c                     > T" T 5      S:  $ r  r   r  s   r   rt  r    r  r   r  r  c                  "   > T R                   S:  $ r  r  r  s   r   rt  r        
0A0AQ0Fr   r   r  c                     > T" T 5      S:  $ r  r   r  s   r   rt  r    r  r   r  s   bcdec                  "   > T R                   S:  $ r  r  r  s   r   rt  r    r
  r   r   r  r}   )r  r  r  ttysetrawr  r  r   r5   r  r4   r  rW   r   rX   rY   r   r  r|  r   r   r~  r   r  rG   r\   )r;   
read_slavewrite_slaveslave_read_objread_connectr  r  r  write_connectr  ru   r  r  ro  r  s             @@@@@r   test_bidirectional_pty*EventLoopTestsMixin.test_bidirectional_pty  s     ZZ\
ffZ(

:T15$$))4
yy223E3AC II88Fa$nj&:&:;)[1:3C3CDJ--. ''+tQ7&DII6		445H5DF!YY99-Ha%o{'<'<=k&7&78{	
 	d#TYY(A%,%:%:	<t$)[1:3C3CDk&7&78
TYY(F%,%:%:	<)[1:3C3CDJ--.k&7&78g&TYY(A%,%:%:	<4()[1:3C3CDk&7&78
!TYY(F%,%:%:	<)[1:3C3CDJ--.k&7&78
		$$Z__55z7G7G	I 			$$[%5%56;#4#45r   c                   ^ ^ [         R                  " 5       u  pUR                  S5        T R                  R	                  T R                  R                  US5      5      m[        TSS 5      nUb  T R                  UR                  5        UU 4S jnT R                  R	                  U" 5       5      nT R                  R                  5         T R                  UR                  5       S5        T R                  [        R                  TR                  5        Ub  T R                  UR                  5        T R                  R!                  U5        UR#                  5         UR#                  5         g )NFr   ovc                  "  >#     TR                   R                  TR                  5        TI S h  vN   S n TR                   R                  5         U $  N"! [        R                   a    Sn  N6f = f! TR                   R                  5         f = f7f)N	cancelled)r5   r*  r_  r   CancelledErrorr  )rR  r  r;   s    r   main:EventLoopTestsMixin.test_prompt_cancellation.<locals>.main  sq     !		##AHH- 		 J )) "!"
 		 sH   B*A AA A0 BA A-*A0 ,A--A0 0BBr  )ry  rz  r{  r5   r  r  getattrr   pendingr  r   r{  r   r   r  ra  r  rG   )r;   rn  r  r  r  rA  r  s   `     @r   test_prompt_cancellation,EventLoopTestsMixin.test_prompt_cancellation  s      "	eII!!$))"5"5a";<Qd#>OOBJJ'
	 II!!$&)		[1'00!((;>RZZ(		"				r   c                   ^ ^ UU 4S jnT R                   R                  mST R                   l        UT R                   l        S nT R                   R                  U" 5       5        T R	                  T R                   R                  ST R                   R
                  T R                   R                  R                  R                  S.5        g )Nc                  R   > TR                   =R                  S-  sl        T " 5         g r  )r5   _run_once_counter)orig_run_oncer;   s   r   	_run_once<EventLoopTestsMixin.test_timeout_rounding.<locals>._run_once  s    II''1,'Or   r   c                  L  #    [         R                  " S5      I S h  vN   [         R                  " S5      I S h  vN   [         R                  " S5      I S h  vN   [         R                  " S5      I S h  vN   [         R                  " S5      I S h  vN   g  N} Na NE N) N7f)Nr  g-C6?gư>g:0yE>g|=r   r   r   r   wait7EventLoopTestsMixin.test_timeout_rounding.<locals>.wait  sp     --%%%--%%%--%%%--%%%--&&&	 &%%%&sU   B$BB$BB$BB$6B 7B$B"B$B$B$ B$"B$   )clock_resolutionselector)	r5   r%  r#  r4   assertLessEqual_clock_resolution	_selectorr   rL   )r;   r%  r(  r$  s   `  @r   test_timeout_rounding)EventLoopTestsMixin.test_timeout_rounding  s    	 		++&'		#'			' 			$$TV,
 	TYY88"!%!<!<,,66??A	Br   c                    U R                  5       nS n[        R                  " 5       u  p4U R                  UR                  5        U R                  UR                  5        UR                  X25        UR                  XB5        UR	                  5         U R                  UR                  U5      5        U R                  UR                  U5      5        g )Nc                      g r   r   r   r   r   rt  CEventLoopTestsMixin.test_remove_fds_after_closing.<locals>.<lambda>      4r   )
r   ry  rz  r|  rG   r}  r  ra  rk  r  r;   r5   r  rn  r  s        r   test_remove_fds_after_closing1EventLoopTestsMixin.test_remove_fds_after_closing  s    %%'  "  $$

++A./++A./r   c                    U R                  5       nS n[        R                  " 5       u  p4U R                  UR                  5        U R                  UR                  5        UR	                  5         U R                  [        5         UR                  X25        S S S 5        U R                  [        5         UR                  XB5        S S S 5        g ! , (       d  f       N>= f! , (       d  f       g = f)Nc                      g r   r   r   r   r   rt  @EventLoopTestsMixin.test_add_fds_after_closing.<locals>.<lambda>"  r5  r   )	r   ry  rz  r|  rG   r   r   r}  r  r6  s        r   test_add_fds_after_closing.EventLoopTestsMixin.test_add_fds_after_closing   s    %%'  "  

|,OOA( -|,OOA( -, -,,,s   C5C!
C!
C/c                    ^  U 4S jnU" T R                   5      nT R                  [        5         T R                   R                  U5        S S S 5        g ! , (       d  f       g = f)Nc                 B   >#    TR                   R                  5         g 7fr   )r5   rG   r5   r;   s    r   
close_loopEEventLoopTestsMixin.test_close_running_event_loop.<locals>.close_loop-  s     IIOOs   )r5   r   r   r4   )r;   rA  r  s   `  r   test_close_running_event_loop1EventLoopTestsMixin.test_close_running_event_loop,  sD    	 $))$|,II((. -,,s   A
A"c                    U R                   R                  5         S nS nU" 5       nU R                  UR                  5        U R                  [        5         U R                   R                  5         S S S 5        U R                  [        5         U R                   R                  5       nU R                   R                  U5        S S S 5        U R                  [        5         U R                   R                  U5        S S S 5        U R                  [        5         U R                   R                  U5        S S S 5        U R                  [        5         U R                   R                  SU5        S S S 5        U R                  [        5         U R                   R                  U R                   R                  5       S-   U5        S S S 5        U R                  [        5         U R                   R                  U5        S S S 5        U R                  [        5         U R                   R                  [        R                   U5        S S S 5        U R                  [        5         U R                   R#                  S U5      R%                  5       n['        U5        S S S 5        g ! , (       d  f       GN8= f! , (       d  f       GN= f! , (       d  f       GN= f! , (       d  f       GN= f! , (       d  f       GN= f! , (       d  f       GN>= f! , (       d  f       GN= f! , (       d  f       N= f! , (       d  f       g = f)Nc                     #    g 7fr   r   r   r   r   test,EventLoopTestsMixin.test_close.<locals>.test7  s     r/   c                      gNFr   r   r   r   rt  0EventLoopTestsMixin.test_close.<locals>.<lambda>:  s    ur   g      ?g        )r5   rG   r|  r   r   r  rZ   r4   r*  r4  r  call_atr  r  r  r  SIGTERMrO  rJ   next)r;   rG  funcr  futits         r   
test_closeEventLoopTestsMixin.test_close4  s   			 v

# |,II!!# -|,))))+CII((- - |,II% -|,II**40 -|,II  d+ -|,IIdiinn.3T: -|,II!!$' -|,II((> - |,**46@@BBH -,+ -,,, -,,,,,,,,,,, -,sl   J$6J6#KKK,8K>$L+L"%6L3$
J36
K
K
K),
K;>
L
L"
L03
Mr  )T)TN)NNr   )arL   rM   rN   rO   r   r   r  r  r  r"  r+  rB  rG  rT  rb  r  r  unittest
skipUnlessr  r  r  r  r  r  r  r   skip_unless_bind_unix_socketr  r  r  r  skipIfr  r  r  r  skip_if_tcp_blackholer9  rA  rJ  rq  rx  r  r   r  r  r  r  r  r  ry  r  r  r  r  r  r  r  r  r  r	  r  r  r"  r(  r3  r7  IPV6_ENABLEDrA  rE  r_  rb  re  rq  r  r  r   r    r  r  r  r  r  r  r   requires_mac_verr   r  r  r0  r7  r<  rC  rR  rP   r   r   s   @r   r   r     s{   '
E$B>	3	86.6>!(08%( 3\B)I C)IV 3\B524$4 C$  3\B524$4 C$"	7 //G 0G ;?&*R?B 8<15
 CG#KJ __SD[/2E 3E //__SD[/2E 3 0E	 ((, ),* ((, ),(E46l __SD[/2J 3J/ 
ZZ,-5 .56MA"H. 8:KL M2 // 06 35FG0 H0	"? __SD[/2 3> //__SD[/2 3 0: __SD[/2 38 //__SD[/2 3 08 __SD[/2 3B //__SD[/21 3 012 __SD[/21 31:. 335TU& V&P (( )$.!`N 335TUI VI.4HT
' 0:<E<E@ 0:<%<%@ 0:<Y/1DEE F<EB 0:<#0<#0J 0:<0<0* 0:<Y/1DE b!$%0 % F<%0N 0:<Y/1DE b!$D6 % F<D6L@B2
0
)/" "r   r   c                      \ rS rSrS rS r\R                  " 5       S 5       r\R                  " 5       S 5       r	\R                  " 5       S 5       r
\R                  " 5       S 5       r\R                  " 5       S 5       r\R                  " 5       S	 5       r\R                  " 5       S
 5       r\R                   " \R$                  S:H  S5      \R                  " 5       S 5       5       r\R                  " 5       S 5       r\R                  " 5       S 5       r\R                  " 5       S 5       r\R                  " 5       S 5       r\R                  " 5       S 5       r\R                  " 5       S 5       rSrg)SubprocessTestsMixiniY  c                     [         R                  S:X  a  U R                  U[        5        g U R	                  [
        R                  * U5        g Nr   )r   r    r  r%   r   r  rM  r;   r   s     r   check_terminated%SubprocessTestsMixin.check_terminated[  6    <<7"!!*c2 fnn_j9r   c                     [         R                  S:X  a  U R                  U[        5        g U R	                  [
        R                  * U5        g r^  )r   r    r  r%   r   r  r  r_  s     r   check_killed!SubprocessTestsMixin.check_killedb  rb  r   c                    [         R                  R                  [         R                  R                  [        5      S5      nU R
                  R                  [        R                  " [        U R
                  5      [        R                  U5      nU R
                  R                  U5      u  p4U R                  U[        5        U R
                  R                  UR                  5        U R                  SUR                   5        UR#                  S5      nUR%                  S5        U R
                  R                  UR&                  S   R)                  5       5        [*        R,                  " 5          UR/                  5         S S S 5        U R
                  R                  UR0                  5        U R3                  UR4                  5        U R                  SUR6                  S   5        g ! , (       d  f       Nn= f)Necho.pyrj   r      Python The Winnerr   )r  r  r@  dirname__file__r5   subprocess_execr  r  r   r   
executabler4   r  r[   r   rX   get_pipe_transportr   r   r(  r   r  rG   r   rd  r   ru   r;   progrX  transprd  stdins         r   test_subprocess_exec)SubprocessTestsMixin.test_subprocess_execi  sO   ww||BGGOOH5yA))++!))*>		J. 		44W=e%9:		$$U__5ekk2))!,()		$$U^^A%6%;%;%=>&&(LLN )		$$U__5%**+-uzz!}=	 )(s   1G**
G8c                    [         R                  R                  [         R                  R                  [        5      S5      nU R
                  R                  [        R                  " [        U R
                  5      [        R                  U5      nU R
                  R                  U5      u  p4U R                  U[        5        U R
                  R                  UR                  5        U R                  SUR                   5        UR#                  S5      nUR%                  S5        U R
                  R                  UR&                  S   R)                  5       5        UR&                  S   R+                  5         U R                  SUR,                  S   5        UR%                  S5        U R
                  R                  UR&                  S   R)                  5       5        U R                  SUR,                  S   5        [.        R0                  " 5          UR3                  5         S S S 5        U R
                  R                  UR4                  5        U R7                  UR8                  5        g ! , (       d  f       NO= f)Nrg  rj   r   s   Python r   s
   The Winnerrh  )r  r  r@  ri  rj  r5   rk  r  r  r   r   rl  r4   r  r[   r   rX   rm  r   r   r(  clearru   r   r  rG   r   rd  r   rn  s         r   test_subprocess_interactive0SubprocessTestsMixin.test_subprocess_interactive  s   ww||BGGOOH5yA))++!))*>		J. 		44W=e%9:		$$U__5ekk2))!,J		$$U^^A%6%;%;%=>q!UZZ]3M"		$$U^^A%6%;%;%=>-uzz!}=&&(LLN )		$$U__5%**+ )(s   I--
I;c                    U R                   R                  [        R                  " [        U R                   5      S5      nU R                   R                  U5      u  p#U R                  U[        5        U R                   R                  UR                  5        UR                  S5      R                  5         U R                   R                  UR                  5        U R                  SUR                  5        U R                  [        S UR                  R!                  5        5       5      5        U R                  UR"                  S   R%                  S5      S5        U R                  UR"                  S   S5        UR                  5         g )	Nzecho Pythonr   c              3   @   #    U  H  oR                  5       v   M     g 7fr   )r\   ).0r  s     r   	<genexpr>=SubprocessTestsMixin.test_subprocess_shell.<locals>.<genexpr>  s     I.HFFHH.Hs   r   s   
s   Pythonr   r   )r5   subprocess_shellr  r  r   r4   r  r[   rm  rG   r   r   r   r   allr   valuesru   rstripr;   rX  rp  rd  s       r   test_subprocess_shell*SubprocessTestsMixin.test_subprocess_shell  s   )),,!))*>		J%' 		44W=e%9:		$$U__5!!!$**,		$$U__5E,,-Ie.?.?.F.F.HIIJA--g6	BA,r   c                    U R                   R                  [        R                  " [        U R                   5      SS S S S9nU R                   R                  U5      u  p#U R                  U[        5        U R                   R                  UR                  5        U R                  SUR                  5        UR                  5         g )Nexit 7rq  stdoutstderr   r5   r}  r  r  r   r4   r  r   r   r   rG   r  s       r   test_subprocess_exitcode-SubprocessTestsMixin.test_subprocess_exitcode  s    )),,!))*>		J T$ - H 		44W=e%9:		$$U__5E,,-r   c                 j   U R                   R                  [        R                  " [        U R                   5      SS S S S9nU R                   R                  U5      u  p#U R                  U[        5        U R                  UR                  S5      5        U R                  UR                  S5      5        U R                  UR                  S5      5        U R                   R                  UR                  5        U R                  SUR                  5        U R                  UR                  5       5        g )Nr  r  r   r   r   r  )r5   r}  r  r  r   r4   r  r  rm  r   r   r   rG   r  s       r   "test_subprocess_close_after_finish7SubprocessTestsMixin.test_subprocess_close_after_finish  s    )),,!))*>		J T$ - H 		44W=e%9:&33A67&33A67&33A67		$$U__5E,,-&,,.)r   c                    [         R                  R                  [         R                  R                  [        5      S5      nU R
                  R                  [        R                  " [        U R
                  5      [        R                  U5      nU R
                  R                  U5      u  p4U R                  U[        5        U R
                  R                  UR                  5        UR                  5         U R
                  R                  UR                   5        U R#                  UR$                  5        UR'                  5         g Nrg  )r  r  r@  ri  rj  r5   rk  r  r  r   r   rl  r4   r  r[   r  r   rd  r   rG   r;   ro  rX  rp  rd  s        r   test_subprocess_kill)SubprocessTestsMixin.test_subprocess_kill  s    ww||BGGOOH5yA))++!))*>		J. 		44W=e%9:		$$U__5		$$U__5%**+r   c                    [         R                  R                  [         R                  R                  [        5      S5      nU R
                  R                  [        R                  " [        U R
                  5      [        R                  U5      nU R
                  R                  U5      u  p4U R                  U[        5        U R
                  R                  UR                  5        UR                  5         U R
                  R                  UR                   5        U R#                  UR$                  5        UR'                  5         g r  )r  r  r@  ri  rj  r5   rk  r  r  r   r   rl  r4   r  r[   	terminater   r`  r   rG   r  s        r   test_subprocess_terminate.SubprocessTestsMixin.test_subprocess_terminate  s    ww||BGGOOH5yA))++!))*>		J. 		44W=e%9:		$$U__5		$$U__5e../r   r   zDon't have SIGHUPc                    [         R                   " [         R                  [         R                  5      n [        R                  R                  [        R                  R                  [        5      S5      nU R                  R                  [        R                  " [        U R                  5      [        R                  U5      nU R                  R                  U5      u  pEU R!                  U[        5        U R                  R                  UR"                  5        UR%                  [         R                  5        U R                  R                  UR&                  5        U R)                  [         R                  * UR*                  5        UR-                  5         [         R                   " [         R                  U5        g ! [         R                   " [         R                  U5        f = fr  )r  SIGHUPSIG_DFLr  r  r@  ri  rj  r5   rk  r  r  r   r   rl  r4   r  r[   send_signalr   r   r   rG   )r;   old_handlerro  rX  rp  rd  s         r   test_subprocess_send_signal0SubprocessTestsMixin.test_subprocess_send_signal  s%    mmFMM6>>B	677<< 99EDii//%--.BDIINNND2G
 !II88AMF!!%)=>II((9v}}-II((9fmm^U-=-=>LLNMM&--5FMM&--5s   E&G 'G(c                 l   [         R                  R                  [         R                  R                  [        5      S5      nU R
                  R                  [        R                  " [        U R
                  5      [        R                  U5      nU R
                  R                  U5      u  p4U R                  U[        5        U R
                  R                  UR                  5        UR                  S5      nUR!                  S5        U R
                  R                  UR"                  5        UR%                  5         U R'                  SUR(                  S   5        U R+                  UR(                  S   R-                  S5      UR(                  S   5        U R'                  SUR.                  5        g )Necho2.pyr      test   OUT:testr   r   s   ERR:test)r  r  r@  ri  rj  r5   rk  r  r  r   r   rl  r4   r  r[   rm  r   r   rG   r   ru   r   r!   r   rn  s         r   test_subprocess_stderr+SubprocessTestsMixin.test_subprocess_stderr  s&   ww||BGGOOH5zB))++!))*>		J. 		44W=e%9:		$$U__5))!,G		$$U__5ejjm4

100=uzz!}ME,,-r   c                    [         R                  R                  [         R                  R                  [        5      S5      nU R
                  R                  [        R                  " [        U R
                  5      [        R                  U[        R                  S9nU R
                  R                  U5      u  p4U R                  U[        5        U R
                  R                  UR                   5        UR#                  S5      nU R%                  UR#                  S5      5        U R'                  UR#                  S5      5        UR)                  S5        U R
                  R                  UR*                  5        U R-                  UR.                  S   R1                  S5      UR.                  S   5        U R3                  SUR.                  S   5        UR5                  5         U R3                  SUR6                  5        g )	Nr  )r  r   r   r   r  s   OUT:testERR:testr   )r  r  r@  ri  rj  r5   rk  r  r  r   r   rl  
subprocessSTDOUTr4   r  r[   rm  r  r  r   r   r   ru   r!   r   rG   r   rn  s         r   )test_subprocess_stderr_redirect_to_stdout>SubprocessTestsMixin.test_subprocess_stderr_redirect_to_stdout  sj   ww||BGGOOH5zB))++!))*>		JZ5F5F , H
 		44W=e%9:		$$U__5))!,V66q9:&33A67G		$$U__5

1001DE

1	'ejjm,E,,-r   c                    [         R                  R                  [         R                  R                  [        5      S5      nU R
                  R                  [        R                  " [        U R
                  5      [        R                  U5      nU R
                  R                  U5      u  p4U R                  U[        5        U R
                  R                  UR                  5        UR                  S5      nUR                  S5      nUR!                  S5        U R
                  R                  UR"                  S   R%                  5       5        U R'                  SUR(                  S   5        UR+                  5         U R
                  R                  UR,                  S   5        UR!                  S5        U R
                  R                  UR"                  S   R%                  5       5        [        R.                  S:w  a   U R'                  S	UR(                  S   5        OU R'                  S
UR(                  S   5        [0        R2                  " 5          UR+                  5         S S S 5        U R
                  R                  UR4                  5        U R7                  UR8                  5        g ! , (       d  f       NO= f)Nzecho3.pyr   r   r  r  r  r   r   s   ERR:BrokenPipeErrors   ERR:OSError)r  r  r@  ri  rj  r5   rk  r  r  r   r   rl  r4   r  r[   rm  r   r   r(  r   ru   rG   r   r    r   r  r   rd  r   )r;   ro  rX  rp  rd  rq  r  s          r   #test_subprocess_close_client_stream8SubprocessTestsMixin.test_subprocess_close_client_stream3  s   ww||BGGOOH5zB))++!))*>		J. 		44W=e%9:		$$U__5))!,**1-G		$$U^^A%6%;%;%=>ejjm4		$$U%6%6q%9:F		$$U^^A%6%;%;%=><<7"3UZZ]C ^UZZ];&&(LLN )		$$U__5%**+ )(s   J11
J?c           	         U R                   R                  [        R                  " [        U R                   5      SS S S SS9nU R                   R                  U5      u  p#U R                  U[        5        U R                   R                  UR                  5        U R                  SUR                  5        UR                  5         g )Nr  T)rq  r  r  start_new_sessionr  r  r  s       r   "test_subprocess_wait_no_same_group7SubprocessTestsMixin.test_subprocess_wait_no_same_groupV  s     )),,!))*>		J T$*. - 0 		44W=e%9:		$$U__5E,,-r   c                   ^  U 4S jnT R                  [        5         T R                  R                  U" SS95        S S S 5        T R                  [        5         T R                  R                  U" SS95        S S S 5        T R                  [        5         T R                  R                  U" SS95        S S S 5        g ! , (       d  f       N= f! , (       d  f       N]= f! , (       d  f       g = f)Nc                  z   >#    TR                   R                  " [        R                  S40 U D6I S h  vN   g  N7fNpwd)r5   rk  r   SubprocessProtocol)r  r;   s    r   rX  GSubprocessTestsMixin.test_subprocess_exec_invalid_args.<locals>.connecte  s6     ))++**  s   0;9;Tuniversal_newlines   bufsizeshellr   r  r5   r4   r;   rX  s   ` r   !test_subprocess_exec_invalid_args6SubprocessTestsMixin.test_subprocess_exec_invalid_argsc  s    	
 z*II((D)IJ +z*II(()>? +z*II((t)<= +*	 +*****s#    C  C C" 
C
C"
C0c                   ^  S
U 4S jjnT R                  [        5         T R                  R                  U" SS/5      5        S S S 5        T R                  [        5         T R                  R                  U" SS95        S S S 5        T R                  [        5         T R                  R                  U" SS95        S S S 5        T R                  [        5         T R                  R                  U" SS	95        S S S 5        g ! , (       d  f       N= f! , (       d  f       N= f! , (       d  f       Nn= f! , (       d  f       g = f)Nc                    >#    U (       d  Sn TR                   R                  " [        R                  U 40 UD6I S h  vN   g  N7fr  )r5   r}  r   r  )cmdr  r;   s     r   rX  HSubprocessTestsMixin.test_subprocess_shell_invalid_args.<locals>.connectt  s>     )),,**  s   9AAAlsz-lTr  r  r  Fr  r   r  r  s   ` r   "test_subprocess_shell_invalid_args7SubprocessTestsMixin.test_subprocess_shell_invalid_argsq  s    	 z*II(($)>? +z*II((D)IJ +z*II(()>? +z*II((u)=> +* +*******s/   $D  D D% D6
D
D"%
D36
Er   N)rL   rM   rN   rO   r`  rd  r   requires_subprocessrr  rv  r  r  r  r  r  rT  rW  r   r    r  r  r  r  r  r  r  rP   r   r   r   r\  r\  Y  s   ::   "> #>*   ", #,6   " #    "	 #	   "* #*   " #    " #  __S\\W,.AB  "6 # C60   ". #.*   ". #.2   " , # ,D   "
 #
   "> #>   "? #?r   r\  r   c                       \ rS rSrS rSrg)SelectEventLoopTestsi  c                 ,    [         R                  " 5       $ r   )r   SelectorEventLooprF   s    r   r   &SelectEventLoopTests.create_event_loop      ,,..r   r   NrL   rM   rN   rO   r   rP   r   r   r   r  r    s    	/r   r  c                   8    \ rS rSrS rS rS rS rS rS r	Sr
g	)
ProactorEventLoopTestsi  c                 ,    [         R                  " 5       $ r   )r   ProactorEventLooprF   s    r   r   (ProactorEventLoopTests.create_event_loop  r  r   c                 .    [         R                  " S5      eNz(IocpEventLoop does not have add_reader()rT  SkipTestrF   s    r   r  +ProactorEventLoopTests.test_reader_callback      ##$NOOr   c                 .    [         R                  " S5      er  r  rF   s    r   test_reader_callback_cancel2ProactorEventLoopTests.test_reader_callback_cancel  r  r   c                 .    [         R                  " S5      eNz(IocpEventLoop does not have add_writer()r  rF   s    r   r  +ProactorEventLoopTests.test_writer_callback  r  r   c                 .    [         R                  " S5      er  r  rF   s    r   test_writer_callback_cancel2ProactorEventLoopTests.test_writer_callback_cancel  r  r   c                 .    [         R                  " S5      er  r  rF   s    r   r7  4ProactorEventLoopTests.test_remove_fds_after_closing  r  r   r   N)rL   rM   rN   rO   r   r  r  r  r  r7  rP   r   r   r   r  r    s%    	/	P	P	P	P	Pr   r  c                   4   ^  \ rS rSrU 4S jrU 4S jrSrU =r$ )UnixEventLoopTestsMixini  c                 B  > [         TU ]  5         [        R                  " 5          [        R                  " S[
        5        [        R                  " 5       nUR                  U R                  5        [        R                  " U5        S S S 5        g ! , (       d  f       g = fNignore)r   r   warningscatch_warningssimplefilterDeprecationWarningr   SafeChildWatcherattach_loopr5   set_child_watcherr;   watcherr   s     r   r   UnixEventLoopTestsMixin.setUp  sc    GMO((*%%h0BC!224##DII.))'2	 +**s   A"B
Bc                    > [         R                  " 5          [         R                  " S[        5        [        R
                  " S 5        S S S 5        [        TU ]  5         g ! , (       d  f       N= fr  )r  r  r  r  r   r  r   r   r   s    r   r    UnixEventLoopTestsMixin.tearDown  sI    ((*%%h0BC))$/ + G +*s   2A  
A.r   )rL   rM   rN   rO   r   r   rP   r   r   s   @r   r  r    s    	3	 	r   r  KqueueSelectorc                      ^  \ rS rSrS r\R                  " SS5      \R                  " \	R                  R                  S5      S5      U 4S j5       5       r\R                  " SS5      U 4S j5       rS	rU =r$ )
KqueueEventLoopTestsi  c                 T    [         R                  " [        R                  " 5       5      $ r   )r   r  	selectorsr  rF   s    r   r   &KqueueEventLoopTests.create_event_loop  s!    00,,.0 0r   r   	   openbsdztest hangs on OpenBSDc                 "   > [         TU ]  5         g r   )r   r  r   s    r   r  )KqueueEventLoopTests.test_read_pty_output  s     ,.r   c                 "   > [         TU ]  5         g r   )r   r   r   s    r   r   #KqueueEventLoopTests.test_write_pty  s    &(r   r   )rL   rM   rN   rO   r   r   rZ  rT  rW  r   r    r!   r  r   rP   r   r   s   @r   r  r    sq    0 %%b!, __S\\44Y?46/6 -
/
 %%b!,) -)r   r  EpollSelectorc                       \ rS rSrS rSrg)EPollEventLoopTestsi  c                 T    [         R                  " [        R                  " 5       5      $ r   )r   r  r  r  rF   s    r   r   %EPollEventLoopTests.create_event_loop  s    001H1H1JKKr   r   Nr  r   r   r   r  r    s    Lr   r  PollSelectorc                       \ rS rSrS rSrg)PollEventLoopTestsi  c                 T    [         R                  " [        R                  " 5       5      $ r   )r   r  r  r
  rF   s    r   r   $PollEventLoopTests.create_event_loop  s    001G1G1IJJr   r   Nr  r   r   r   r  r    s    Kr   r  c                       \ rS rSrS rSrg)r  i  c                 T    [         R                  " [        R                  " 5       5      $ r   )r   r  r  SelectSelectorrF   s    r   r   r    s    ,,Y-E-E-GHHr   r   Nr  r   r   r   r  r    s    	Ir   c                      g r   r   )rY  r+  s     r   noopr    s    r   c                   R   ^  \ rS rSrU 4S jrS rS rS rS rS r	S r
S	 rS
rU =r$ )HandleTestsi  c                    > [         TU ]  5         [        R                  " 5       U l        SU R                  R
                  l        g rX  )r   r   r   r  r5   	get_debugreturn_valuer   s    r   r   HandleTests.setUp  s+    IIK	+/		(r   c                 \   S nSn[         R                  " XU R                  5      nU R                  UR                  U5        U R                  UR
                  U5        U R                  UR                  5       5        UR                  5         U R                  UR                  5       5        g )Nc                      U $ r   r   rY  s    r   r  )HandleTests.test_handle.<locals>.callback      Kr   r   )
r   Handler5   r  	_callback_argsra  r  r_  r   )r;   r  rY  hs       r   test_handleHandleTests.test_handle  su    	 NN84995akk8,aggt$'	
&r   c                    S n[         R                  " 5       U l        [         R                  " 5       U R                  l        [        R
                  " USU R                  5      nUR                  5         U R                  R                  R                  [        R                  " S5      [         R                  UUR                  S.5        g )Nc                      [        5       er   )r  r   r   r   r  :HandleTests.test_callback_with_exception.<locals>.callback 	  s
    ,r   r   zException in callback.*)r^  r   handlesource_traceback)r   r  r5   r   r   r  _runassert_called_withr   MockPatternANY_source_traceback)r;   r  r"  s      r   test_callback_with_exception(HandleTests.test_callback_with_exception  s    	 IIK	+/99;		(NN8R3			((;;!--.GH ! 3 3	=
 	r   c                 |    [         R                  " 5       n[        R                  " S SU R                  5      nX!S'   g )Nc                      g r   r   r   r   r   rt  1HandleTests.test_handle_weakref.<locals>.<lambda>	  s    4r   r   r"  )weakrefWeakValueDictionaryr   r  r5   )r;   wdr"  s      r   test_handle_weakrefHandleTests.test_handle_weakref	  s-    ((*NN<TYY73r   c                 <   SU R                   R                  l        [        R                  " [
        SU R                   5      n[        R                  " [
        5      u  p#U R                  [        U5      SU< SU< S35        UR                  5         U R                  [        U5      S5        [        R                  " [
        5      n[        R                  " USU R                   5      nU R                  [        U5      SU< SU< S35        [        R                  " [
        SS	5      n[        R                  " US
U R                   5      nS[        R                   " U5      < SU< S3nU R#                  [        U5      U5        [        R                  " [
        SS9n[        R                  " USU R                   5      nS[        R                   " U5      < SU< S3nU R#                  [        U5      U5        [$        R&                  n[        R(                  " U5      n[        R                  " U5      u  p#[        R                  " USU R                   5      nSnSU S3nSU S[        R                   " U5       SU S3nU R#                  [        U5      U5        g )NFr   z<Handle noop() at :>z<Handle cancelled>r   r   r   r   z^<Handle noop\(\)\(\) at >$xr   r   z*<function HandleTests.test_handle_repr .*>zfunctools.partialmethod\(z\)\(\)z	^<Handle z at )r5   r  r  r   r  r  r   get_function_sourcer   r  r_  types	coroutiner  r  r  escapeassertRegexr  test_handle_reprpartialmethod)r;   r"  filenamelinenor  r  methodcb_regexs           r   rF  HandleTests.test_handle_repr	  s   +0		( NN43%99$?a#V-	.
 	

a,	. __T"NN2r499-a#V-	.
 tQ*NN2tTYY/IIh'1a%( tq)NN2vtyy1IIh'1a%( --$$V,%99&ANN2r499-@/z@XJd299X+>*?qKa%(r   c                 (   SU R                   R                  l        [        n[        R
                  " 5       R                  S-   n[        R                  " [        SU R                   5      n[        R                  " [        5      u  pEU R                  [        U5      SU< SU< SU< SU< S3	5        UR                  5         U R                  [        U5      SU< SU< SU< SU< S3	5        UR                  5         U R                  [        U5      SU< SU< SU< SU< S3	5        [        R                   " [        SS	5      n[        R
                  " 5       R                  S-   n[        R                  " US
U R                   5      nS["        R$                  " U5      < SU< S["        R$                  " U5      < SU< S3	nU R'                  [        U5      U5        [        R                   " [        SS9n[        R
                  " 5       R                  S-   n[        R                  " USU R                   5      nS["        R$                  " U5      < SU< S["        R$                  " U5      < SU< S3	nU R'                  [        U5      U5        g )NTr   r   z<Handle noop(1, 2) at r:   created at r;  z <Handle cancelled noop(1, 2) at r   r<  z^<Handle noop\(1, 2\)\(3\) at r=  r>  r@  z ^<Handle noop\(x=1\)\(2, 3\) at )r5   r  r  rj  r   	_getframef_linenor   r  r  r   rA  r   r  r_  r  r  r  rD  rE  )r;   create_filenamecreate_linenor"  rH  rI  r  r  s           r   test_handle_repr_debug"HandleTests.test_handle_repr_debugD	  s   +/		( #0014NN43%99$?a#V_mM	N
 	

G-A	B 	

G-A	B tQ*0014NN2tTYY/IIh'IIo.? 	a%( tq)0014NN2vtyy1IIh'IIo.? 	a%(r   c                   ^  [         R                  " 5       R                  5       nUR                  S5        T R	                  U5        U 4S jnUR                  [        5      nU" U5        UR                  [        5      nU" U5        UR                  S[        5      nU" U5        UR                  S[        5      nU" U5        g )NTc                    > [         R                  " S5      R                  S-
  nTR                  U R                  [
        5        TR                  U R                  S   S S [        US45        g )Nr   r  r   test_handle_source_traceback)r   rO  rP  r  r.  listr   rj  )r"  rI  r;   s     r   check_source_tracebackHHandleTests.test_handle_source_traceback.<locals>.check_source_tracebacku	  sb    ]]1%..2F!!!"5"5t<Q004Ra8&$<>?r   r   )	r   get_event_loop_policyr2   	set_debugr3   r*  r  r4  r  )r;   r5   rY  r"  s   `   r   rW  (HandleTests.test_handle_source_tracebackp	  s    ,,.==?tD!	? NN4 q! %%d+q! OOAt$q! OOAt$q!r   c                    [        5       nSUl        U R                  [        R                  " U5      5        U R                  [        R                  " U5      S5        SUl        U R                  [        R                  " U5      S5        SUl	        U R                  [        R                  " U5      S5        S =Ul        Ul        U R                  [        R                  " U5      S5        [        5       nSUl        U R                  [        R                  " U5      S	5        [        5       nSUl        S Ul
        U R                  [        R                  " U5      S5        g )
NAAAzAAA()BBBzBBB()TzBBB() runningz%<CoroLike without __name__>() runningr8   z
CoroLike())r8   rL   r   r   iscoroutiner   r   _format_coroutinerN   
cr_runningcr_code)r;   r  s     r   +test_coroutine_like_object_debug_formatting7HandleTests.test_coroutine_like_object_debug_formatting	  s   
 z++D1255d;WE!55d;WE55d;_M,00)55d;@	B z& 	55d;\Jz!55d;WEr   r  )rL   rM   rN   rO   r   r#  r/  r7  rF  rS  rW  re  rP   r   r   s   @r   r  r    s4    0
'"
-)^*)X":F Fr   r  c                   L   ^  \ rS rSrU 4S jrS rS rS rS rS r	S r
S	rU =r$ )

TimerTestsi	  c                 V   > [         TU ]  5         [        R                  " 5       U l        g r   )r   r   r   r  r5   r   s    r   r   TimerTests.setUp	  s    IIK	r   c                     [         R                  " 5       n[        R                  " US S[        R
                  " 5       5      nU R                  [        U5      [        U5      5        g )Nc                      grJ  r   r   r   r   rt  &TimerTests.test_hash.<locals>.<lambda>	      er   r   )r  	monotonicr   TimerHandler   r  r   hashr;   whenr"  s      r   	test_hashTimerTests.test_hash	  sE    ~~mR $		-a$t*-r   c                     [         R                  " 5       n[        R                  " US S[        R
                  " 5       5      nU R                  XR                  5       5        g )Nc                      grJ  r   r   r   r   rt  &TimerTests.test_when.<locals>.<lambda>	  rn  r   r   )r  ro  r   rp  r   r  r   rs  rr  s      r   	test_whenTimerTests.test_when	  sA    ~~mR $		-vvx(r   c                    S nSn[         R                  " 5       n[        R                  " X1U[        R
                  " 5       5      nU R                  UR                  U5        U R                  UR                  U5        U R                  UR                  5       5        UR                  5         U R                  UR                  5       5        U R                  UR                  5        U R                  UR                  5        g )Nc                      U $ r   r   r  s    r   r  'TimerTests.test_timer.<locals>.callback	  r  r   )r   r   r   )r  ro  r   rp  r   r  r  r   r!  ra  r  r_  r   r  )r;   r  rY  rs  r"  s        r   
test_timerTimerTests.test_timer	  s    	 ~~diikBakk8,aggt$' 	

&!++&!''"r   c                 N   SU R                   R                  l        [        R                  " S[
        SU R                   5      n[        R                  " [
        5      nU R                  [        U5      SU-  5        UR                  5         U R                  [        U5      S5        g )NF{   r   z&<TimerHandle when=123 noop() at %s:%s>z <TimerHandle cancelled when=123>)r5   r  r  r   rp  r  r   rA  r   r  r_  )r;   r"  srcs      r   test_timer_reprTimerTests.test_timer_repr	  s    +0		( T2tyy9,,T2a@3F	H 	

a:	<r   c                    SU R                   R                  l        [        n[        R
                  " 5       R                  S-   n[        R                  " S[        SU R                   5      n[        R                  " [        5      u  pEU R                  [        U5      SU< SU< SU< SU< S3	5        UR                  5         U R                  [        U5      S	U< SU< SU< SU< S3	5        g )
NTr   r  r   z <TimerHandle when=123 noop() at r:  rN  r;  z*<TimerHandle cancelled when=123 noop() at )r5   r  r  rj  r   rO  rP  r   rp  r  r   rA  r   r  r_  )r;   rQ  rR  r"  rH  rI  s         r   test_timer_repr_debug TimerTests.test_timer_repr_debug	  s    +/		( #0014T2tyy9%99$?a $V_mM	N 	

a $V_mM	Nr   c                 :	   S n[         R                  " 5       n[        R                  " X!SU R                  5      n[        R                  " X!SU R                  5      nU R                  X4:  5        U R                  XC:  5        U R                  X4:*  5        U R                  XC:*  5        U R                  X4:  5        U R                  XC:  5        U R                  X4:  5        U R                  XC:  5        U R                  X4:H  5        U R                  X4:g  5        UR                  5         U R                  X4:H  5        [        R                  " X!SU R                  5      n[        R                  " US-   USU R                  5      nU R                  X4:  5        U R                  XC:  5        U R                  X4:*  5        U R                  XC:*  5        U R                  X4:  5        U R                  XC:  5        U R                  X4:  5        U R                  XC:  5        U R                  X4:H  5        U R                  X4:g  5        [        R                  " USU R                  5      nU R                  [        UR                  U5      5        U R                  [        UR                  U5      5        U R                  [        5         US:    S S S 5        U R                  [        5         US:    S S S 5        U R                  [        5         US:*    S S S 5        U R                  [        5         US:    S S S 5        U R                  US:H  5        U R                  US:g  5        U R                  U[        :H  5        U R                  U[        :g  5        U R                  U[         :  5        U R                  U[         :  5        U R                  U[         :*  5        U R                  U[         :  5        U R                  U["        :  5        U R                  U["        :  5        U R                  U["        :*  5        U R                  U["        :  5        g ! , (       d  f       GN= f! , (       d  f       GN= f! , (       d  f       GNo= f! , (       d  f       GN^= f)Nc                      U $ r   r   r  s    r   r  2TimerTests.test_timer_comparison.<locals>.callback	  r  r   r   g      $@)r  ro  r   rp  r5   ra  r   r_  r  r  NotImplemented__eq____ne__r   r  r   r   r   )r;   r  rs  h1h2h3s         r   test_timer_comparison TimerTests.test_timer_comparison	  sT   	 ~~  TYY?  TYY?!!!!!!!!!"
		"  TYY?  hDIIF !!"! "!"!^^Hb$))4nbiim4nbiim4y)G *y)G *y)"H *y)"H *r"b!i(y)W%g&g&w'h'X&x(h') *)))))))s0   Q(Q'Q9.R
Q$'
Q69
R
Rr  )rL   rM   rN   rO   r   rt  ry  r~  r  r  r  rP   r   r   s   @r   rh  rh  	  s,     .)#$<N*<( <(r   rh  c                        \ rS rSrS rS rSrg)AbstractEventLoopTestsi3
  c                    [         R                  " 5       n[        R                  " 5       nU R	                  [
        UR                  5        U R	                  [
        UR                  S 5        U R	                  [
        UR                  5        U R	                  [
        UR                  5        U R	                  [
        UR                  5        U R	                  [
        UR                  5        U R	                  [
        UR                  S 5        U R	                  [
        UR                  S S 5        U R	                  [
        UR                  X5        U R	                  [
        UR                  S 5        U R	                  [
        UR                   5        U R	                  [
        UR"                  S 5        U R	                  [
        UR$                  U5        U R	                  [
        UR&                  SU5        U R	                  [
        UR(                  S5        U R	                  [
        UR*                  SU5        U R	                  [
        UR,                  S5        U R	                  [
        UR.                  SU5        U R	                  [
        UR0                  S5        U R	                  [
        UR0                  S5        U R	                  [
        UR2                  U5        U R	                  [
        UR4                  U5        U R	                  [
        UR6                  U5        U R	                  [
        UR8                  5        U R	                  [
        UR:                  U5        g r  )r   r  r   AbstractEventLoopr   NotImplementedErrorr  r4   r  r   r   rG   r  r  rL  r*  r  r4  set_default_executorr}  rk  r  r  r  r  set_exception_handlerdefault_exception_handlerr   r  r\  )r;   r  r5   s      r   test_not_implemented+AbstractEventLoopTests.test_not_implemented5
  s   IIK((*!1!1	3!8!8$	@	,	2	1	-!1!14	9$	>q	5	7	,!:!:D	B!:!:A	?!Q	8!3!3Q	8!Q	8!3!3Q	8!8!8!Q	@!;!;Q	@!;!;Q	@!;!;Q	@!?!?	D!<!<a	A	1	4r   c                    ^  U 4S jn[         R                  " 5       nUR                  U" 5       5        UR                  5         g )Nc                    >#    [         R                  " 5       n [        R                  " 5       nTR	                  [
        5         UR                  X 5      I S h  vN   S S S 5        TR	                  [
        5         UR                  SS5      I S h  vN   S S S 5        TR	                  [
        5         UR                  S5      I S h  vN   S S S 5        TR	                  [
        5         UR                  U 5      I S h  vN   S S S 5        TR	                  [
        5         UR                  U 5      I S h  vN   S S S 5        TR	                  [
        5         UR                  U 5      I S h  vN   S S S 5        TR	                  [
        5         UR                  U S5      I S h  vN   S S S 5        TR	                  [
        5         UR                  U S5      I S h  vN   S S S 5        TR	                  [
        5         UR                  U S5      I S h  vN   S S S 5        TR	                  [
        5         UR                  X 5      I S h  vN   S S S 5        TR	                  [
        5         UR!                  U 5      I S h  vN   S S S 5        TR	                  [
        5         UR#                  X 5      I S h  vN   S S S 5        TR	                  [
        5         UR%                  X 5      I S h  vN   S S S 5        TR	                  [
        5         UR'                  U [         R(                  R*                  5      I S h  vN   S S S 5        TR	                  [
        5         UR-                  U [         R(                  R*                  5      I S h  vN   S S S 5        TR	                  [
        5         UR/                  U [         R(                  5      I S h  vN   S S S 5        TR	                  [
        5         UR1                  U 5      I S h  vN   S S S 5        g  GN! , (       d  f       GN= f GN! , (       d  f       GN= f GN~! , (       d  f       GN= f GN\! , (       d  f       GNa= f GN:! , (       d  f       GN?= f GN! , (       d  f       GN= f GN! , (       d  f       GN= f GN! , (       d  f       GN= f GN! , (       d  f       GN= f GN! , (       d  f       GN= f GNk! , (       d  f       GNp= f GNI! , (       d  f       GNN= f GN'! , (       d  f       GN,= f GN! , (       d  f       GN= f GN! , (       d  f       GN= f GN! , (       d  f       GN= f GN^! , (       d  f       g = f7f)Nr3    )r3  r  r   )r   r  r   r  r   r  rO  r.  r[  r  rf  rZ  r  sock_recv_intosock_sendallsock_connectsock_acceptsock_sendfilesendfiler  sentinelr  r  r}  rk  )r  r5   r;   s     r   inner@AbstractEventLoopTests.test_not_implemented_async.<locals>.innerm
  s    		A,,.D""#67**1000 8""#67&&{D999 8""#67&&':;;; 8""#67,,Q/// 8""#67((+++ 8""#6733A666 8""#67nnQ+++ 8""#67))!R000 8""#67''2... 8""#67''--- 8""#67&&q))) 8""#67((... 8""#67mmA))) 8""#67,,Q0B0BCCC 8""#67--a1C1CDDD 8""#67++At}}=== 8""#67**1--- 87? 1 87 : 87 < 87 0 87 , 87 7 87 , 87 1 87 / 87 . 87 * 87 / 87 * 87 D 87 E 87 > 87 . 87s  A U?PPPU?:P3P0P3U?2QQQU?)Q>Q?QU? Q25Q/6Q2:U?R,R-R1U?R$R%R)U?R1R.R1!U?>SSSU?6SSSU?-S0S-S0U?$T9T:T>U?T0T1T5U?.T/ T,T/U?".UUUU?2$UUUU?8U.U+U.	U?P
P-(U?0P33
Q=U?Q
QU?Q
Q,'U?/Q22
R<U?R
RU?R
R+&U?.R11
S ;U?S
SU?S
S*%U?-S00
S?:U?T
TU?T
T)$U?,T//
T>9U?U
UU?U
U(#U?+U..
U<8U?)r   r2   r4   rG   )r;   r  r5   s   `  r   test_not_implemented_async1AbstractEventLoopTests.test_not_implemented_asynck
  s2    %	.N %%'(

r   r   N)rL   rM   rN   rO   r  r  rP   r   r   r   r  r  3
  s    44l+r   r  c                   t    \ rS rSrS rS rS rS r\R                  " S5      S 5       r
S rS	 rS
 rS rSrg)PolicyTestsi
  c                    [         R                  " 5       nU R                  [        UR                  5        U R                  [        UR
                  [        5       5        U R                  [        UR                  5        U R                  [        UR                  5        U R                  [        UR                  [        5       5        g r   )
r   AbstractEventLoopPolicyr   r  get_event_loopr3   r  r2   get_child_watcherr  r;   policys     r   test_event_loop_policy"PolicyTests.test_event_loop_policy
  s    002-v/D/DE-v/D/DfhO-v/D/DE-v/G/GH-v/G/G (	$r   c                     [         R                  " 5       nU R                  UR                  R                  5        U R                  [        5       nUR                  5       nS S S 5        U R                  WR                  [        5        U R                  W[         R                  5        U R                  UR                  R                  U5        U R                  X1R                  5       5        UR                  5         g ! , (       d  f       N= fr   )r   DefaultEventLoopPolicyr  _local_loopassertWarnsr  r  r   rH  rj  r  r  r  rG   )r;   r  r  r5   s       r   test_get_event_loopPolicyTests.test_get_event_loop
  s    //1&----.01R((*D 2h/dG$=$=>fmm))40d1134

 21s   C??
Dc                    [         R                  " 5       n[        R                  R	                  USUR
                  S9 nU R                  [        5       nUR                  5       nS S S 5        U R                  WR                  5        U R                  WR                  [        5        UR                  U5        S S S 5        WR                  5         g ! , (       d  f       Ns= f! , (       d  f       N0= f)Nr3   )wraps)r   r  r   r  r  r3   r  r  r  r|  rG   r   rH  rj  r+  )r;   r  m_set_event_loopr  r5   s        r   (test_get_event_loop_calls_set_event_loop4PolicyTests.test_get_event_loop_calls_set_event_loop
  s    //1ZZ(++  -0@!!"45,,. 6OODJJ'R[[(3
 //5- 	

 65	- -s$   C$C&AC$
C!	C$$
C2c                     [         R                  " 5       nUR                  S 5        U R                  [        UR
                  5        g r   )r   r  r3   r   r   r  r  s     r   "test_get_event_loop_after_set_none.PolicyTests.test_get_event_loop_after_set_none
  s4    //1d#,(=(=>r   z'asyncio.events.threading.current_threadc                 z   ^  U 4S jn[         R                  " US9nUR                  5         UR                  5         g )Nc                  p   > [         R                  " 5       n TR                  [        U R                  5        g r   )r   r  r   r   r  )r  r;   s    r   r  1PolicyTests.test_get_event_loop_thread.<locals>.f
  s'    335FlF,A,ABr   r9  )r;  r>  r?  r@  )r;   m_current_threadr  ths   `   r   test_get_event_loop_thread&PolicyTests.test_get_event_loop_thread
  s-    	C Q'


	r   c                     [         R                  " 5       nUR                  5       nU R                  U[         R                  5        UR                  5         g r   )r   r  r2   r  r  rG   )r;   r  r5   s      r   test_new_event_loopPolicyTests.test_new_event_loop
  s=    //1$$&dG$=$=>

r   c                    [         R                  " 5       nUR                  5       nUR                  U5        U R	                  [
        UR                  [        5       5        UR                  5       nUR                  U5        U R                  X1R                  5       5        U R                  X!R                  5       5        UR                  5         UR                  5         g r   )r   r  r2   r3   r   r  r  r  r  assertIsNotrG   )r;   r  old_loopr5   s       r   test_set_event_loopPolicyTests.test_set_event_loop
  s    //1((*h')V%:%:FHE$$&d#d1134#8#8#:;

r   c                     [         R                  " 5       nU R                  U[         R                  5        U R	                  U[         R                  " 5       5        g r   )r   r[  r  r  r  r  s     r   test_get_event_loop_policy&PolicyTests.test_get_event_loop_policy
  s=    ..0fg&E&EFfg;;=>r   c                 J   U R                  [        [        R                  [	        5       5        [        R
                  " 5       n[        R                  " 5       n[        R                  " U5        U R                  U[        R
                  " 5       5        U R                  X!5        g r   )	r   r  r   r   r  r[  r  r  r  )r;   
old_policyr  s      r   test_set_event_loop_policy&PolicyTests.test_set_event_loop_policy
  sq    w44fh	@ 224
//1%%f-fg;;=>,r   r   N)rL   rM   rN   rO   r  r  r  r  r   r  r  r  r  r  r  rP   r   r   r   r  r  
  sH    $
&?
 
ZZ9: ;?
	-r   r  c                   |   ^  \ rS rSrSrSrSrSrU 4S jrU 4S jr	\
R                  S:w  a  S rS rS rS	 rS
rU =r$ )GetEventLoopTestsMixini
  Nc                 h  > [         R                  U l        [         R                  U l        [         R
                  U l        [         R                  U l        [        U 5      R                  [         l        [        U 5      R                  [         l        [        U 5      R                  [         l        [        U 5      R                  [         l        [        U 5      R                  [        l        [        U 5      R                  [        l        [        U 5      R                  [        l        [        U 5      R                  [        l        [        TU ]A  5         [        R"                  " 5       U l        [        R&                  " U R$                  5        [(        R*                  S:w  a  [,        R.                  " 5          [,        R0                  " S[2        5        [        R4                  " 5       nUR7                  U R$                  5        [        R8                  " U5        S S S 5        g g ! , (       d  f       g = fNr   r  )r   _get_running_loop_get_running_loop_saved_set_running_loop_set_running_loop_savedget_running_loopget_running_loop_savedr  get_event_loop_savedrh  _get_running_loop_impl_set_running_loop_implget_running_loop_implget_event_loop_implr   r   r   r2   r5   r3   r   r    r  r  r  r  r  r  r  r  s     r   r   GetEventLoopTestsMixin.setUp   sa   '-'?'?$'-'?'?$&,&=&=#$*$9$9!#':#D#D #':#D#D "&t*"B"B $T
 > >$(J$E$E!$(J$E$E!#':#C#C !%d!?!?**,	tyy)<<7"((*%%h0BC!224##DII.))'2	 +* #**s   7A"H##
H1c                 v  >  [         R                  S:w  aO  [        R                  " 5          [        R                  " S[
        5        [        R                  " S 5        S S S 5        [        TU ]%  5         U R                  R                  5         [        R                  " S 5        U R                  [        l        U R                   [        l        U R$                  [        l        U R(                  [        l        U R                  [        l        U R                   [        l        U R$                  [        l        U R(                  [        l        g ! , (       d  f       N= f! U R                  R                  5         [        R                  " S 5        U R                  [        l        U R                   [        l        U R$                  [        l        U R(                  [        l        U R                  [        l        U R                   [        l        U R$                  [        l        U R(                  [        l        f = fr  )r   r    r  r  r  r  r   r  r   r   r5   rG   r3   r  r   r  r  r  r  r  r  r  r   s    r   r   GetEventLoopTestsMixin.tearDown  su   	?||w&,,.))(4FG--d3 / GIIOO""4('+'C'CF$'+'C'CF$&*&A&AF#$($=$=F!(,(D(DG%(,(D(DG%'+'B'BG$%)%>%>G"# /. IIOO""4('+'C'CF$'+'C'CF$&*&A&AF#$($=$=F!(,(D(DG%(,(D(DG%'+'B'BG$%)%>%>G"s#   )E 2EE 
EE CH8r   c                    ^  [         R                  " 5         T R                  [        5        U 4S jnT R	                  T R
                  R                  U" 5       5      S5        g )Nc                  "  >#    [         R                  " 5       S:X  a  [         R                  " S5      n OS n [        R                  R                  U S9nTR                  R                  U[        5      I S h  vN nUR                  5         U$  N7f)Nfork
forkserver)
mp_context)
multiprocessingget_start_methodget_context
concurrentfuturesProcessPoolExecutorr5   rO  r6   shutdown)r  poolr{  r;   s      r   r  DGetEventLoopTestsMixin.test_get_event_loop_new_process.<locals>.main<  s     "335?!0!<!<\!JJ!%J!))==#- > /#yy88D F FFs   A3B6B7Br,   )r   *skip_if_broken_multiprocessing_synchronizer|  multiprocessing_cleanup_testsr   r5   r4   r;   r  s   ` r   test_get_event_loop_new_process6GetEventLoopTestsMixin.test_get_event_loop_new_process4  sJ     >>@OO9: 		,,TV4r   c                 R   ^  U 4S jnT R                   R                  U" 5       5        g )Nc                  l  >#    [         R                  " 5       n [        R                  " [         R                  " 5       5       n UR                  5         TR                  S5        S S S 5        TR                  [         R                  " 5       U 5        g ! [         a     N:f = f! , (       d  f       ND= f7f)NzRuntimeError not raised)	r   r  r0   r1   r2   r  rm  r   r  )running_loopr5   r;   s     r   r  JGetEventLoopTestsMixin.test_get_running_loop_already_running.<locals>.mainN  s     "335L##G$:$:$<=9$$& II78 > MM'224lC $  >=sA   ?B4B#BB#%.B4
B B#B  B##
B1-B4)r5   r4   r  s   ` r   %test_get_running_loop_already_running<GetEventLoopTestsMixin.test_get_running_loop_already_runningM  s    
	D 			$$TV,r   c                 
  ^ ^^  " S S[         5      m " U4S jS[        R                  5      n[        R                  " 5       n [        R                  " U" 5       5        [        R
                  " 5       mT R                  T5         [        R                  " 5         S S S 5        [        R                  " S 5        T R                  T5         [        R                  " 5         S S S 5        T R                  [        S5         [        R                  " 5         S S S 5        T R                  [        R                  " 5       S 5        UU 4S jnTR                  U" 5       5        [        R                  " T5        T R                  T5         [        R                  " 5         S S S 5        [        R                  " S 5        T R                  T5         [        R                  " 5         S S S 5        [        R                  " U5        Tb  TR                  5         T R                  [        S5         [        R                  " 5         S S S 5        T R                  [        R                  " 5       S 5        g ! , (       d  f       GN= f! , (       d  f       GN= f! , (       d  f       GN= f! , (       d  f       GN= f! , (       d  f       N= f! [        R                  " U5        Tb  TR                  5         f f = f! , (       d  f       N= f)Nc                       \ rS rSrSrg)RGetEventLoopTestsMixin.test_get_event_loop_returns_running_loop.<locals>.TestErrori^  r   N)rL   rM   rN   rO   rP   r   r   r   	TestErrorr  ^  s    r   r  c                   "   > \ rS rSrU 4S jrSrg)OGetEventLoopTestsMixin.test_get_event_loop_returns_running_loop.<locals>.Policyia  c                    > Ter   r   )r;   r  s    r   r  ^GetEventLoopTestsMixin.test_get_event_loop_returns_running_loop.<locals>.Policy.get_event_loopb  s    r   r   N)rL   rM   rN   rO   r  rP   )r  s   r   Policyr
  a  s       r   r  
no runningc                     >#    TR                  [        R                  " 5       T 5        TR                  [        R                  " 5       T 5        TR                  [        R                  " 5       T 5        g 7fr   r  r   r  r  r  r@  s   r   rO  MGetEventLoopTestsMixin.test_get_event_loop_returns_running_loop.<locals>.funct  K     g446=g668$?g7794@   A1A4)rZ  r   r  r[  r   r2   r   r  r3   r~  r   r  r  r  r4   rG   )r;   r  r  rO  r  r5   s   `   @@r   (test_get_event_loop_returns_running_loop?GetEventLoopTestsMixin.test_get_event_loop_returns_running_loop]  s   		 		 W33 	  224
	))&(3))+D""9-&&( .""4(""9-&&( . ''lC((* DMM'335t<A
 ##DF+""4(""9-&&( .""4(""9-&&( . ))*5

##L,?$$& @ 	g//148A .- .- DC .- .- ))*5

   @?s   AK I,/K I>!K ?JA1K J"/K J4!K (K4,
I;6K >
JK 
JK "
J1,K 4
K>K ,K14
Lc                 ^  ^ ^ [         R                  " 5       n [         R                  " [         R                  " 5       5        [         R                  " 5       mT R                  TR                  5        T R                  [        5       n[         R                  " 5       nS S S 5        T R                  WR                  5        T R                  WR                  [        5        [         R                  " S 5        T R                  [        S5         [         R                  " 5         S S S 5        T R                  [        S5         [         R                   " 5         S S S 5        T R#                  [         R$                  " 5       S 5        UU 4S jnTR'                  U" 5       5        [         R                  " T5        T R#                  [         R                  " 5       T5        [         R                  " S 5        T R                  [        S5         [         R                  " 5         S S S 5        [         R                  " U5        Tb  TR                  5         T R                  [        S5         [         R                   " 5         S S S 5        T R#                  [         R$                  " 5       S 5        g ! , (       d  f       GN= f! , (       d  f       GN= f! , (       d  f       GN}= f! , (       d  f       N= f! [         R                  " U5        Tb  TR                  5         f f = f! , (       d  f       N= f)Nz
no currentr  c                     >#    TR                  [        R                  " 5       T 5        TR                  [        R                  " 5       T 5        TR                  [        R                  " 5       T 5        g 7fr   r  r@  s   r   rO  NGetEventLoopTestsMixin.test_get_event_loop_returns_running_loop2.<locals>.func  r  r  )r   r[  r   r  r2   r|  rG   r  r  r  r   rH  rj  r3   r~  r   r  r  r  r4   )r;   r  r  loop2rO  r5   s   `    @r   )test_get_event_loop_returns_running_loop2@GetEventLoopTestsMixin.test_get_event_loop_returns_running_loop2  s   224
"	))'*H*H*JK))+DOODJJ'!!"45..0 6OOEKK(R[[(3""4(''lC&&( D ''lC((* DMM'335t<A
 ##DF+""4(MM'002D9""4(''lC&&( D ))*5

##L,?$$& @ 	g//148E 65
 DC DC DC ))*5

   @?sz   A.K/ J(A/K/ J:"K/  KB1K/ KK/ $L(
J72K/ :
K	K/ 
KK/ 
K,(K/ /,L
L,)r  r  r  r  r5   )rL   rM   rN   rO   r  r  r  r  r   r   r   r    r  r  r  r  rP   r   r   s   @r   r  r  
  sM    !! 38?, ||w	2- -9^)9 )9r   r  c                   t    \ rS rSr\R
                  r\R                  r\R                  r
\R                  rSrg)TestPyGetEventLoopi  r   N)rL   rM   rN   rO   r   _py__get_running_loopr  _py__set_running_loopr  _py_get_running_loopr  _py_get_event_loopr  rP   r   r   r   r  r    s2    #99#99"77 33r   r  c                   t    \ rS rSr\R
                  r\R                  r\R                  r
\R                  rSrg)TestCGetEventLoopi  r   N)rL   rM   rN   rO   r   _c__get_running_loopr  _c__set_running_loopr  _c_get_running_loopr  _c_get_event_loopr  rP   r   r   r   r#  r#    s2    !'!<!<!'!<!< & : :$66r   r#  c                       \ rS rSrS rSrg)
TestServeri  c                 f  ^ [         R                  " 5       nU R                  UR                  5        [	        U5      mUR                  UR                  U4S jSS5      5      nU R                  UR                  5       U5        UR                  5         UR                  UR                  5       5        g )Nc                     > T $ r   r   rc  s   r   rt  *TestServer.test_get_loop.<locals>.<lambda>  s    Er   r  r   )
r   r2   r|  rG   r   r4   rf  r   get_loopwait_closed)r;   r5   r  rd  s      @r   test_get_loopTestServer.test_get_loop  s    %%'

#((););M9VW)XY*D1 2 2 45r   r   N)rL   rM   rN   rO   r/  rP   r   r   r   r)  r)    s    6r   r)  c                   &    \ rS rSrS rS rS rSrg)TestAbstractServeri  c                     U R                  [        5         [        R                  " 5       R	                  5         S S S 5        g ! , (       d  f       g = fr   )r   r  r   AbstractServerrG   rF   s    r   rR  TestAbstractServer.test_close  s2    23!!#))+ 433   $A
Ac                 &   [         R                  " 5       nU R                  UR                  5        U R	                  [
        5         UR                  [        R                  " 5       R                  5       5        S S S 5        g ! , (       d  f       g = fr   )
r   r2   r|  rG   r   r  r4   r   r4  r.  r]   s     r   test_wait_closed#TestAbstractServer.test_wait_closed  s[    %%'

#23##F$9$9$;$G$G$IJ 433s   3B
Bc                     U R                  [        5         [        R                  " 5       R	                  5         S S S 5        g ! , (       d  f       g = fr   )r   r  r   r4  r-  rF   s    r   r/   TestAbstractServer.test_get_loop  s2    23!!#,,. 433r6  r   N)rL   rM   rN   rO   rR  r8  r/  rP   r   r   r   r2  r2    s    ,K/r   r2  __main__)Q__doc__concurrent.futuresr  r0   r  r  r  r  r    r  r  ry  r  ImportErrorr  r   r;  r  rB  rF  rT  r   r4  r  r  r   r   r   r   multiprocessing.utilr	   r  test.test_asyncior
   r   rG  r   test.supportr   r   r   r   r   r   r(   r6   r8   r  rR   r   r  r   r   BaseProtocolr   r  r   r   r\  TestCaser  r  r  r  r  r  r  r  r  r  rh  r  r  r  r  _asyncior#  r)  r2  rL   r  r   r   r   <module>rF     s
       	  	  	    
        <<++    # P 1  & ) 5 5(/ #''"" #'LHk H'g.. '@!'g&& !'H'w++ '2*:755 *:ZP Pf2i? i?X	 <<7/2)22/P!4!5!+!4!4P, "5   y*++	)#:#7#-#6#6	)0 y/**	L"9"6","5"5	L y.))	K!8!5!+!4!4	KI63)22I	F*%% FDC("" C(LcX.. cL]-(## ]-@|9 |9~4/1B1B 47
72H4E4E 7	6"" 	6/** /$ zMMO {^  
Cf]  		s#   K/ K> /K;:K;>LL