
    daf%+                         d Z ddlZddlZddlZddlmZ d Z G d dej                        Ze	dk(  r ej                          yy)zTests for asyncio/timeouts.py    N)await_without_taskc                  .    t        j                  d        y )N)asyncioset_event_loop_policy     :/root/Python-3.12.4/Lib/test/test_asyncio/test_timeouts.pytearDownModuler
      s    !!$'r   c                       e Zd Zd Zd Zd Zd Zd Zd Zd Z	d Z
d	 Zd
 Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Z d Z!d  Z"y!)"TimeoutTestsc                 j  K   | j                  t              5  t        j                  d      4 d {   }t        j                  d       d {    d d d       d {    d d d        | j                  j                                y 7 Y7 >7 0# 1 d {  7  sw Y   @xY w# 1 sw Y   DxY wwN{Gz?
   )assertRaisesTimeoutErrorr   timeoutsleep
assertTrueexpiredselfcms     r	   test_timeout_basiczTimeoutTests.test_timeout_basic   s     |, 	(t, ( (mmB'''( (	( 	

%('( ( ( (	( 	(ss   B3B'BB'BBBB'B B'$(B3B'BB'B$	BB$	 B''B0,B3c                   K   t        j                         }| j                  t              5  |j	                         dz   }t        j
                  |      4 d {   }t        j                  d       d {    d d d       d {    d d d        | j                  j                                | j                  |j                                y 7 y7 ^7 P# 1 d {  7  sw Y   `xY w# 1 sw Y   dxY wwr   )r   get_running_loopr   r   time
timeout_atr   r   r   assertEqualwhen)r   loopdeadliner   s       r	   test_timeout_at_basicz"TimeoutTests.test_timeout_at_basic   s     '')|, 	(yy{T)H))(3 ( (rmmB'''( (	( 	

%2779-('( ( ( (	( 	(sw   *C:-C.CC.C6C7C;C.CC.AC:C.CC.C+	C" C+	'C..C73C:c           	        K   t        j                         }d}| j                  t              5  |j	                         dz   }t        j
                  |      4 d {   }	 t        j
                  |      4 d {   }t        j                  d       d {    d d d       d {    d d d       d {    d d d        | j                  |       | j                  j                                | j                  j                                y 7 7 7 7 r# 1 d {  7  sw Y   xY w# t         j                  $ r d} w xY w7 # 1 d {  7  sw Y   xY w# 1 sw Y   xY wwNFr   r   T)
r   r   r   r   r   r   r   CancelledErrorr   r   )r   r!   	cancelledr"   cm1cm2s         r	   test_nested_timeoutsz!TimeoutTests.test_nested_timeouts    s4    '')	|, 		yy{T)H))(3  s&11(; 0 0s%mmB///0 0 		 		"&&0/0 0 0 0--  $I   		 		s   ,E.-E"DE"E!D1:D
;D1>DD
DD1'D(D1,E"7E8E"<AE.E"D1DD1D."D%#D.*D11EEE"E	EE	E""E+'E.c                   K   d}| j                  t              5  t        j                  d      4 d {    	 t        j                  d       d {    d d d       d {    d d d        | j                  |       y 7 L7 0# t        j
                  $ r d} w xY w7 <# 1 d {  7  sw Y   LxY w# 1 sw Y   PxY wwr%   )r   r   r   r   r   r&   r   )r   r'   s     r	   test_waiter_cancelledz"TimeoutTests.test_waiter_cancelled1   s     	|, 	t,  !--+++ 	 		"+--  $I   	 	s   CB6BB6B!BBBB6"B#B6'CB6BBB!B6!B3	'B*(B3	/B66B?;Cc                   K   t        j                         }t        j                  d      4 d {   }t        j                  d       d {    d d d       d {    |j	                         }| j                  j                                | j                  |j                         |       y 7 7 f7 X# 1 d {  7  sw Y   hxY ww)Nr   r   )	r   r   r   r   r   assertFalser   assertGreaterr    )r   r!   r   t1s       r	   test_timeout_not_calledz$TimeoutTests.test_timeout_not_called<   s     '')??2& 	& 	&"--%%%	& 	&YY[&2779b)	&%	& 	& 	& 	&sW   .CB2CB8B4B8CB6AC4B86C8C
>C?C
Cc                 T  K   t        j                  d       4 d {   }t        j                  d       d {    d d d       d {    | j                  j	                                | j                  |j                                y 7 p7 U7 G# 1 d {  7  sw Y   WxY wwNr   )r   r   r   r.   r   assertIsNoner    r   s     r	   test_timeout_disabledz"TimeoutTests.test_timeout_disabledE   s     ??4( 	& 	&B--%%%	& 	& 	&"'')$		&%	& 	& 	& 	&T   B(BB(BBBB(	B
AB(BB(B%BB%!B(c                 T  K   t        j                  d       4 d {   }t        j                  d       d {    d d d       d {    | j                  j	                                | j                  |j                                y 7 p7 U7 G# 1 d {  7  sw Y   WxY wwr3   )r   r   r   r.   r   r4   r    r   s     r	   test_timeout_at_disabledz%TimeoutTests.test_timeout_at_disabledL   s     %%d+ 	& 	&r--%%%	& 	& 	&"'')$		&%	& 	& 	& 	&r6   c                 6  K   t        j                         }|j                         }| j                  t              5  t        j
                  d      4 d {   }t        j                  d       d {    d d d       d {    d d d        |j                         }| j                  j                                | j                  ||j                         cxk  xr
 |k         y c        y 7 7 7 r# 1 d {  7  sw Y   xY w# 1 sw Y   xY ww)Nr   r   
r   r   r   r   r   r   r   r   r   r    r   r!   t0r   r0   s        r	   test_timeout_zerozTimeoutTests.test_timeout_zeroS   s     '')YY[|, 	(q) ( (RmmB'''( (	( YY[

%bggi-2-.-.	('( ( ( (	( 	(w   :DDC2DC83C44C88DC6DA*D2D4C86D8D
	>D?D
	DDDc                 6  K   t        j                         }|j                         }| j                  t              5  t        j
                  d      4 d {   }t        j                  d       d {    d d d       d {    d d d        |j                         }| j                  j                                | j                  ||j                         cxk  xr
 |k         y c        y 7 7 7 r# 1 d {  7  sw Y   xY w# 1 sw Y   xY ww)Nr   r:   r;   s        r	   test_timeout_zero_sleep_zeroz)TimeoutTests.test_timeout_zero_sleep_zero]   s     '')YY[|, 	'q) ' 'RmmA&&&' '	' YY[

%bggi-2-.-.	'&' ' ' '	' 	'r>   c                 6  K   t        j                         }|j                         }| j                  t              5  t        j
                  d      4 d {   }t        j                  d       d {    d d d       d {    d d d        |j                         }| j                  j                                | j                  ||j                         cxk\  xr
 |k         y c        y 7 7 7 r# 1 d {  7  sw Y   xY w# 1 sw Y   xY ww)Nir   r:   r;   s        r	   #test_timeout_in_the_past_sleep_zeroz0TimeoutTests.test_timeout_in_the_past_sleep_zerog   s     '')YY[|, 	's+ ' 'rmmA&&&' '	' YY[

%bggi-2-.-.	'&' ' ' '	' 	'r>   c                   K   | j                  t              5  t        j                  d      4 d {   }t        7 
# 1 d {  7  sw Y   nxY w	 d d d        n# 1 sw Y   nxY w| j	                  j                                y wr3   )r   KeyErrorr   r   r.   r   r   s     r	   test_foreign_exception_passedz*TimeoutTests.test_foreign_exception_passedq   sw     x( 	t,      	 	 	 	&sE   B
A=A?AA	AA	A	B
A'#'B
c                   K   d }| j                  t              5  t        j                  d      4 d {     |        d {    d d d       d {    d d d        y 7 ,7 7 # 1 d {  7  sw Y   !xY w# 1 sw Y   y xY ww)Nc                  j   K   	 t        j                  d       d {    ddz   y 7 
# ddz   w xY ww)N   r   )r   r   r   r   r	   crashz=TimeoutTests.test_foreign_exception_on_timeout.<locals>.crashx   s1     mmA&&&! '!s    3) ') 3) 03r   )r   ZeroDivisionErrorr   r   )r   rI   s     r	   !test_foreign_exception_on_timeoutz.TimeoutTests.test_foreign_exception_on_timeoutw   s~     	
 01 	t,  g 	 	   	 	ss   B	A=A"A=A(A$A(	A=A&A=	B	"A=$A(&A=(A:	.A1/A:	6A==BB	c                   K   | j                  t        j                        5  t        j                  d      4 d {   }t        j                         j                          t        j                  d       d {    d d d       d {    d d d        | j                  j                                y 7 {7 >7 0# 1 d {  7  sw Y   @xY w# 1 sw Y   DxY ww)Nr   )	r   r   r&   r   current_taskcancelr   r.   r   r   s     r	   1test_foreign_cancel_doesnt_timeout_if_not_expiredz>TimeoutTests.test_foreign_cancel_doesnt_timeout_if_not_expired   s     w556 	(r* ( (b$$&--/mmB'''( (	( 	&('( ( ( (	( 	(st    CCB8C ;B>;B:<B> CB<C(C8C:B><C>C	CC	CCCc                     K   d fd}t        j                   |             }| d {     j                  |j                                 j	                  |j                                y 7 Cw)Nc                  .  K    j                  t              5  t        j                  d      4 d {    t        j                  d       d {    d d d       d {    d d d        y 7 :7 7 # 1 d {  7  sw Y   !xY w# 1 sw Y   y xY ww)NgMbP?r   r   r   r   r   r   r   s   r	   outerz<TimeoutTests.test_outer_task_is_not_cancelled.<locals>.outer   s     ""<0 ,"??51 , ,!--+++, ,, ,,+, , , ,, ,ss   BB	A.B	A4A0A4B	 A2!B	%	B.B	0A42B	4B	:A=;B	B		BB)returnN)r   create_taskr.   r'   r   done)r   rT   tasks   `  r	    test_outer_task_is_not_cancelledz-TimeoutTests.test_outer_task_is_not_cancelled   sS     	,
 ""57+

)*		$ 	s   &A/A-AA/c           
      8  K   | j                  t              5  t        j                  d      4 d {    | j                  t              5  t        j                  d      4 d {    t	        j
                  d       t        j
                  d       d {    d d d       d {    d d d        d d d       d {    d d d        y 7 7 i7 97 +# 1 d {  7  sw Y   ;xY w# 1 sw Y   ?xY w7 6# 1 d {  7  sw Y   FxY w# 1 sw Y   y xY ww)NgMb`?皙?r   rH   )r   r   r   r   r   r   rS   s    r	   test_nested_timeouts_concurrentz,TimeoutTests.test_nested_timeouts_concurrent   s     |, 	/u- / /&&|4 /&s3 / /

4(%mmA.../ /// /	/ 	/// // / / // // / / /	/ 	/s   DDCDC9C+&C'C+*.C	CC	C+(C
)C+-C95D C7D	DDC+C	C+C(CC($C++C40C97D9D	?D D	DDDc           
      :  K   t        j                         }d|_        |j                         }| j	                  t
              5  t        j                  d      4 d {    | j	                  t
              5  t        j                  d      4 d {    t        j                  d       t        j                  d       d {    d d d       d {    d d d        t        j                  d       d {    d d d       d {    d d d        |j                         }| j                  ||cxk  xr |dz   k         y c        y 7 7 7 7 # 1 d {  7  sw Y   xY w# 1 sw Y   xY w7 }7 o# 1 d {  7  sw Y   xY w# 1 sw Y   xY ww)Nr   r[   r   rH   )	r   r   slow_callback_durationr   r   r   r   r   r   )r   r!   r<   r0   s       r	   test_nested_timeouts_loop_busyz+TimeoutTests.test_nested_timeouts_loop_busy   sP     '')&(#YY[|, 	(s+ ( (&&|4 /&t4 / /

3%mmA.../ // mmB'''( (	( YY[b*BF*+*+(/ // / / // / (( ( ( (	( 	(s   AFFEF!E:7E*EE*.E	EE	E*E
E* E:8E69E:=FE8	FA FFE*E	E*E'EE'#E**E3/E:8F:F	 FF	FFFc                   K   t        j                         }|j                         |j                         dz   dz   }fd}t        j                   |             } d {   }| j                  |j                                |j                  |       | j                  |j                         |       |j                  d        | j                  |j                                |j                          | j                  t         j                        5  | d {    d d d        | j                  |j                                y 7 7 .# 1 sw Y   -xY ww)Nr      c                     K   t        j                        4 d {   } j                  |        t        j                  d       d {    d d d       d {    y 7 C7 7 	# 1 d {  7  sw Y   y xY ww)N2   )r   r   
set_resultr   )r   	deadline1futs    r	   fz'TimeoutTests.test_reschedule.<locals>.f   sh     )))4 ( (r"mmB'''( ( ('( ( ( (sV   A<A!A<*A'A#A'A<A%A<#A'%A<'A9-A0.A95A<)r   r   create_futurer   rV   r   r    
rescheduler4   rN   r   r&   r.   r   )r   r!   	deadline2rg   rX   r   re   rf   s         @@r	   test_reschedulezTimeoutTests.test_reschedule   s    '')  "IIK"$	N		(
 ""13'YI.
i I.
d"'')$w556 	JJ	&  	 	s=   A"E&E'B4EE!E"E&)EEEEc                    K   t        j                  d      4 d {   }| j                  t        |      d       d d d       d {    y 7 07 # 1 d {  7  sw Y   y xY ww)Nr   z"<Timeout \[active\] when=\d+\.\d*>)r   r   assertRegexreprr   s     r	   test_repr_activezTimeoutTests.test_repr_active   sa     ??2& 	N 	N"T"X'LM	N 	N 	N 	N 	N 	N 	NC   A&AA&AA&AA&A&A#AA#A&c                 b  K   | j                  t              5  t        j                  d      4 d {   }t        j                  d       d {    d d d       d {    d d d        | j                  t              d       y 7 U7 :7 ,# 1 d {  7  sw Y   <xY w# 1 sw Y   @xY ww)Nr   r   z<Timeout [expired]>)r   r   r   r   r   r   rn   r   s     r	   test_repr_expiredzTimeoutTests.test_repr_expired   s     |, 	(t, ( (mmB'''( (	( 	b#89('( ( ( (	( 	(ss   B/B#BB#BB
BB#B B#$$B/B#
BB#B 	BB 	B##B,(B/c                   K   t        j                  d      4 d {   }t        j                  d       d {    d d d       d {    | j                  t	              d       y 7 M7 27 $# 1 d {  7  sw Y   4xY ww)Nr   r   z<Timeout [finished]>)r   r   r   r   rn   r   s     r	   test_repr_finishedzTimeoutTests.test_repr_finished   sp     ??2& 	# 	#"--"""	# 	# 	b#9:	#"	# 	# 	# 	#sS   BA*BA0A,A0B	A.
!B,A0.B0B6A97B>Bc                    K   t        j                  d       4 d {   }| j                  t        |      d       d d d       d {    y 7 07 # 1 d {  7  sw Y   y xY ww)Nz<Timeout [active] when=None>)r   r   r   rn   r   s     r	   test_repr_disabledzTimeoutTests.test_repr_disabled   sa     ??4( 	H 	HBT"X'FG	H 	H 	H 	H 	H 	H 	Hrp   c                 t  K   | j                  t              5  t        j                  d      4 d {    	 t        j                  d       d {    | j                  t              5  t        j                  d      4 d {    t        j                  d       d {    d d d       d {    d d d        d d d       d {    d d d        y 7 7 7 V7 ;7 -# 1 d {  7  sw Y   =xY w# 1 sw Y   AxY w# | j                  t              5  t        j                  d      4 d {  7   t        j                  d       d {  7   d d d       d {  7   n# 1 d {  7  sw Y   nxY wd d d        w # 1 sw Y   w xY wxY w7 # 1 d {  7  sw Y   xY w# 1 sw Y   y xY ww)Nr   rH   r   rR   rS   s    r	   test_nested_timeout_in_finallyz+TimeoutTests.test_nested_timeout_in_finally   s]    |, 	4t, 4 44!--*****<8 4#*??4#8 4 4")--"3334 44	4 4	4 	44*434 4 4 44 4**<8 4#*??4#8 4 4")--"3334 4 4 4 44 4 4	4 4 4 4	4 	4s\  F8F,CF,FDCDF*C6CC6C!	!C"C!	&C61C
2C66F>F,	F
F,	F8F,DC6C!	C6!C3'C*(C3/C66C?;FFF2D53F7E(EE(F!E$"F(E:.E1/E:6F=	FFFFF,F)	F F)	%F,,F51F8c           
        K   	 t        j                         j                          t        j                  d       d {    | j                  t              5  t        j                  d      4 d {    t        j                  d       d {    d d d       d {    d d d        y 7 n# t         j                  $ r Y w xY w7 U7 :7 ,# 1 d {  7  sw Y   <xY w# 1 sw Y   y xY w# | j                  t              5  t        j                  d      4 d {  7   t        j                  d       d {  7   d d d       d {  7   n# 1 d {  7  sw Y   nxY wd d d        w # 1 sw Y   w xY wxY ww)NrH   g        )r   rM   rN   r   r&   r   r   r   rS   s    r	   test_timeout_after_cancellationz,TimeoutTests.test_timeout_after_cancellation   s.    	+  "))+--""" ""<0 +"??3/ + +!--***+ ++ +	 #%% 		+*+ + + ++ +""<0 +"??3/ + +!--***+ + + + ++ + +s  F:B/ B-B/ FC#2C3C#6CC
CC#C C#$	F-B/ /CC/ CC/ C#
CC#C 	CC 	C##C,(F/E?E3D" E3$E	=E >E	E3E
E3E'EE'#E3*	E?3E<8E??Fc           
        K   	 t        j                         j                          t        j                  d       d {    | j                  t         j                        5  t        j                  d      4 d {    t        j                         j                          t        j                  d       d {    d d d       d {    d d d        y 7 # t         j                  $ r Y w xY w7 w7 :7 ,# 1 d {  7  sw Y   <xY w# 1 sw Y   y xY w# | j                  t         j                        5  t        j                  d      4 d {  7   t        j                         j                          t        j                  d       d {  7   d d d       d {  7   n# 1 d {  7  sw Y   nxY wd d d        w # 1 sw Y   w xY wxY ww)NrH   g      ?   )r   rM   rN   r   r&   r   r   rS   s    r	   )test_cancel_in_timeout_after_cancellationz6TimeoutTests.test_cancel_in_timeout_after_cancellation   sd    		+  "))+--""" ""7#9#9: +"??3/ + +((*113!--***+ ++ +	 #%% 		+*+ + + ++ +""7#9#9: +"??3/ + +((*113!--***+ + + + ++ + +s  G:C CC G"D<C4=D ;C:;C6<C: DC8D	GC C1.D 0C11D 4D6C:8D:D	 DD	DDG G;GEG;F-	FF-	G&F)
'G-F?3F64F?;G	GGGGc                   K   | j                  t        j                        5 }t        j                  d      4 d {    t        j                  d       d {    d d d       d {    d d d        j
                  j                  }t        |t        j                        sJ y 7 l7 Q7 C# 1 d {  7  sw Y   SxY w# 1 sw Y   WxY ww)Nr   rH   )	r   r   r   r   r   	exception	__cause__
isinstancer&   )r   exccauses      r	   test_timeout_exception_causez)TimeoutTests.test_timeout_exception_cause   s     w334 	'q) ' 'mmA&&&' '	' ''%!7!7888'&' ' ' '	' 	'st    CCB)C B/B+B/C)B-*C.;C)C+B/-C/C	5B86C	=CC	Cc           	      Z  K   t        j                  d      4 d {   }| j                  t        d      5  |4 d {    	 d d d       d {    d d d        d d d       d {    y 7 P7 07 !# 1 d {  7  sw Y   1xY w# 1 sw Y   5xY w7 ,# 1 d {  7  sw Y   y xY wwNr   zhas already been enteredr   r   assertRaisesRegexRuntimeErrorr   s     r	   test_timeout_already_enteredz)TimeoutTests.test_timeout_already_entered  s     ??4( 	 	B''6PQ    	 	 	     	 	 	 	s   B+A-B+BBA/
BA3BA1BBB+'B(B+/B1B3B9A<:BBB	BB+B(BB($B+c                 \  K   t        j                  d      4 d {   }	 d d d       d {    | j                  t        d      5  4 d {    	 d d d       d {    d d d        y 7 Q7 B# 1 d {  7  sw Y   RxY w7 77 (# 1 d {  7  sw Y   8xY w# 1 sw Y   y xY wwr   r   r   s     r	   test_timeout_double_enterz&TimeoutTests.test_timeout_double_enter  s     ??4( 	 	B	 	##L2LM 	   	 		 	 	 	 	    	 	s   B,A.B,A2B,A0B,B BB BB  B	!B %
B,0B,2B8A;9B B,B 	B B	BB	B  B)%B,c                   K   t        j                  d      4 d {   }	 d d d       d {    | j                  t        d      5  j	                  d       d d d        y 7 F7 7# 1 d {  7  sw Y   GxY w# 1 sw Y   y xY ww)Nr   finished{Gz?r   r   r   r   ri   r   s     r	   test_timeout_finishedz"TimeoutTests.test_timeout_finished  s|     ??4( 	 	B	 	##L*= 	 MM$	  	 	 	 	 	 		  	 sY   BA#BA'BA%BA<
B%B'A9-A0.A95B<BBc                   K   | j                  t              5  t        j                  d      4 d {   }t        j                  d       d {    d d d       d {    d d d        | j                  t        d      5  j                  d       d d d        y 7 j7 O7 A# 1 d {  7  sw Y   QxY w# 1 sw Y   UxY w# 1 sw Y   y xY ww)Nr   rH   r   r   )r   r   r   r   r   r   r   ri   r   s     r	   test_timeout_expiredz!TimeoutTests.test_timeout_expired  s     |, 	't, ' 'mmA&&&' '	' ##L)< 	 MM$	  	 '&' ' ' '	' 	'	  	 s   CB8BB8B#BB#B8B! B8$CC	CB8B#!B8#B5	)B,*B5	1B88C=CC	Cc                   K   t        j                  d      4 d {   }| j                  t         j                        5  t        j                  d       d {    d d d        | j                  t        d      5  |j                  d       d d d        d d d       d {    y 7 7 O# 1 sw Y   NxY w# 1 sw Y   *xY w7 !# 1 d {  7  sw Y   y xY ww)Nr   rH   expiringr   )r   r   r   r&   r   r   r   ri   r   s     r	   test_timeout_expiringz"TimeoutTests.test_timeout_expiring  s     ??4( 	$ 	$B""7#9#9: 'mmA&&&'''jA $d#$	$ 	$ 	$&' '$ $	$ 	$ 	$ 	$s   CB'C C B+B)B+C<B7CC!C"C)B++B4	0C7C 	<CCCCCCc                    K   t        j                  d      }| j                  t        d      5  |j	                  d       d d d        y # 1 sw Y   y xY ww)Nr   has not been enteredr   r   r   s     r	   test_timeout_not_enteredz%TimeoutTests.test_timeout_not_entered&  sE     __T"##L2HI 	 MM$	  	  	 s   ,AA	 	A	AAc                 J  K   t        j                  d      }| j                  t        d      5  t	        |j                                d {    d d d        | j                  t        d      5  |j                  d       d d d        y 7 =# 1 sw Y   <xY w# 1 sw Y   y xY ww)Nr   rX   r   r   )r   r   r   r   r   
__aenter__ri   r   s     r	   test_timeout_without_taskz&TimeoutTests.test_timeout_without_task+  s     __T"##L&9 	6$R]]_555	6##L2HI 	 MM$	  	  6	6 	6	  	 sF   ,B#BB	BB#.B 	B#	BBB#B B#N)#__name__
__module____qualname__r   r#   r*   r,   r1   r5   r8   r=   r@   rB   rE   rK   rO   rY   r\   r_   rk   ro   rr   rt   rv   rx   rz   r}   r   r   r   r   r   r   r   r   r   r   r	   r   r      s    &.'"	#*%%///''	%/,&'4N:;H4	+
+9  $ 
 r   r   __main__)__doc__unittestr   r   test.test_asyncio.utilsr   r
   IsolatedAsyncioTestCaser   r   mainr   r   r	   <module>r      sH    #    6(b 833 b J	 zHMMO r   