
    9bh%+                         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     I/opt/python-3.12.12/usr/lib/python3.12/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   sz     |,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3rmmB''' 43 - 	

%2779- 4' 4333 -,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    s    '')	|,yy{T)H))(33s&11(;;s%mmB///  <; 43 - 		"&& 4  </  <;;;--  $I 4333 -,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   st     ??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   sv     %%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   s_     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   sd     	
 01t,,g -, 21, -,,, 21ss   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''' +* 7 	& +' +*** 76st    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   sf     ""<0"??511!--+++ 21 101+ 2111 10ss   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3

4(%mmA...  43 5 .- -,-3 /  4333 54 .--- -,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   s"     '')&(#YY[|,s++&&|4&t44

3%mmA...  54 5 mmB''' ,+ - YY[b*BF*+*+ ,4 /  5444 54 ( ,+++ -,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   sW     )))44r"mmB''' 544' 5444sV   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 7&   76s=   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   sE     ??2&&"T"X'LM '&&&&&&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   sa     ??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   sE     ??4((BT"X'FG )((((((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    |,t,,4!--*****<8#*??4#8#8")--"333 $9#8 9	 -, -,,* $93 $9#8#8#8 98**<8#*??4#8#8")--"333 $9#8#8#8#8 988	 -,,, -,s\  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/ 10	 #%% 		 0* 0/// 10""<0"??3//!--*** 0//// 100s  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   s4    		+  "))+--""" ""7#9#9:"??3//((*113!--*** 0/ ;:	 #%% 		 0* 0/// ;:""7#9#9:"??3//((*113!--*** 0//// ;::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                 l  K   | j                  t        j                        5 }t        j                  d      4 d {    t        j                  d       d {    d d d       d {    d d d        j
                  j                  }y 7 P7 57 '# 1 d {  7  sw Y   7xY w# 1 sw Y   ;xY ww)Nr   rH   )r   r   r   r   r   	exception	__cause__)r   exccauses      r	   test_timeout_exception_causez)TimeoutTests.test_timeout_exception_cause   s}     w334q))mmA&&& *) 5 '' *& *))) 54st    B4B(BB( BBBB()B*B(.B4B(BB(B%	BB%	!B((B1-B4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  sp     ??4((B''6PQ2 2 R )((2222 R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  sx     ??4((B )(##L2LMr r NM )(((( rrrr NMs   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# B )((& ;:AA )(((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&  s=     __T"##L2HIMM$ JIIs   ,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+  sx     __T"##L&9$R]]_555 :##L2HIMM$ JI 6 :9IIsF   ,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   