
    ihv                         d dl Z d dlmZ ddlmZ ddlmZ ddlmZ dZdZ	eZ
d	Zej                  rd
ZdZedz  ZeZ G d de      Z G d dee      Z G d dee      Zy)    N)perf_counter   )sysinfo)	leakcheck)TestCasegMbP?g{Gz?g)\(?g      ?g?g       @c                   8    e Zd ZeZeZeZd Z		 	 ddZ
ddZd Zy)_DelayWaitMixinc                     t        d      )Nzoverride me in subclass)NotImplementedError)selftimeouts     S/var/www/html/dev/engine/venv/lib/python3.12/site-packages/gevent/testing/timing.pywaitz_DelayWaitMixin.wait2   s    !";<<    Nc                 v    |s| j                   n|}|s| j                  n|}| j                  |||z
  ||z          y N)_default_delay_min_adj_default_delay_max_adjassertTimeWithinRange)r   r   delaydelay_min_adjdelay_max_adjs        r   _check_delay_boundsz#_DelayWaitMixin._check_delay_bounds5   sC     <I33m;H33m""5#*]#:#*]#:	<r   c                    || j                   }t        |d|      }t        j                         j                  j                          t               }	 | j                  |      }| j                  |t               |z
  | j                  | j                         |S # | j                  |t               |z
  | j                  | j                         w xY w)Nseconds)_default_wait_timeoutgetattrgeventget_hubloop
update_nowr   r   r   r   r   )r   r   r   startresults        r   _wait_and_checkz_DelayWaitMixin._wait_and_check>   s    ?00G '9g6((*	BYYw'F$$Wlnu.D%)%@%@%)%@%@B  $$Wlnu.D%)%@%@%)%@%@Bs   B 5Cc                 ^   t         j                  j                  t        d      }	 | j	                  t         j                        5 }| j                  d       d d d        | j                  j                  |       |j                          y # 1 sw Y   6xY w# |j                          w xY w)NF)refr   r   )	r   Timeout	start_newSMALLEST_RELIABLE_DELAYassertRaisesr   assertIs	exceptionclose)r   r   excs      r   test_outer_timeout_is_not_lostz._DelayWaitMixin.test_outer_timeout_is_not_lostP   s    ..**+B*N	""6>>2 %c		!	$%MM#--1MMO	% % MMOs#   B B$B BB B,)NNr   )__name__
__module____qualname__
SMALL_TICKr   SMALL_TICK_MIN_ADJr   SMALL_TICK_MAX_ADJr   r   r   r$   r0    r   r   r	   r	   ,   s0    &//= +/*.<$r   r	   c                   <    e Zd ZeZeZeZe	j                  d        Zy)AbstractGenericWaitTestCasec                 F    | j                         }| j                  |       y r   )r$   assertIsNone)r   r#   s     r   test_returns_none_after_timeoutz;AbstractGenericWaitTestCase.test_returns_none_after_timeouta   s    %%'&!r   N)r1   r2   r3   
LARGE_TICKr   LARGE_TICK_MIN_ADJr   LARGE_TICK_MAX_ADJr   r   ignores_leakcheckr<   r7   r   r   r9   r9   Z   s.     '//  " !"r   r9   c                   <    e Zd Zej                  Zd Zd Zd Zd Zy)AbstractGenericGetTestCasec                      y r   r7   r   s    r   cleanupz"AbstractGenericGetTestCase.cleanupm   s    r   c                     | j                  | j                        5  | j                  t               d d d        | j	                          y # 1 sw Y   xY wNr'   )r+   r(   r$   r4   rE   rD   s    r   test_raises_timeout_numberz5AbstractGenericGetTestCase.test_raises_timeout_numberp   sE    t||, 	5   4	5 		5 	5s   AAc                 6   t        j                  | j                        }	 | j                  |       |j                          | j                          y # t         j                  $ r}| j	                  ||       Y d }~Kd }~ww xY w# |j                          w xY wrG   )r   r(   r   r$   r,   r.   rE   )r   r   exs      r   test_raises_timeout_Timeoutz6AbstractGenericGetTestCase.test_raises_timeout_Timeoutv   ss    ..!;!;<	   1 MMO	 ~~ 	'MM"g&&	' MMOs)   A B'A>9B >BB Bc                 x   t        d      }t        j                  | j                  |      }	 | j	                  t               5 }| j                  |       | j                  |j                  |       | j                          d d d        |j                          y # 1 sw Y   xY w# |j                          w xY w)Nzexpected error)r-   r'   )
RuntimeErrorr   r(   r   r+   r$   r,   r-   rE   r.   )r   errorr   r/   s       r   *test_raises_timeout_Timeout_exc_customizedzEAbstractGenericGetTestCase.test_raises_timeout_Timeout_exc_customized   s    -...!;!;uM	""<0 C$$W$5cmmU3	 MMO  MMOs#   B' ?BB' B$ B' 'B9N)	r1   r2   r3   r   r(   rE   rH   rK   rO   r7   r   r   rB   rB   h   s!     nnG
r   rB   )r   gevent._compatr    r   r   testcaser   r*   r4   r5   r6   RUNNING_ON_APPVEYORr=   r>   r?   objectr	   r9   rB   r7   r   r   <module>rU      s   *  '    
,  
  
#% ' +f +\"/8 ""( "r   