B
    H/\U                 @   s   d dl Z d dl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rNd	Z
d
Zed Ze
ZG dd deZG dd deeZG dd deeZdS )    N   )sysinfo)	leakcheck)TestCasegMbP?g{Gz?g)\(?g      ?g?g       @c               @   s<   e Zd ZeZeZeZdd Z	d
ddZ
dddZdd	 ZdS )_DelayWaitMixinc             C   s   t dd S )Nzoverride me in subclass)NotImplementedError)selftimeout r
   4lib/python3.7/site-packages/gevent/testing/timing.pywait3   s    z_DelayWaitMixin.waitNc             C   s6   |s
| j n|}|s| jn|}| ||| ||  d S )N)_default_delay_min_adj_default_delay_max_adjZassertTimeWithinRange)r   r	   ZdelayZdelay_min_adjZdelay_max_adjr
   r
   r   _check_delay_bounds6   s
    z#_DelayWaitMixin._check_delay_boundsc             C   sb   |d kr| j }t|d|}t j  t }z| |}W d | |t | | j	| j
 X |S )Nseconds)_default_wait_timeoutgetattrgeventZget_hubZloopZ
update_nowtimer   r   r   r   )r   r	   r   startresultr
   r
   r   _wait_and_check?   s    
z_DelayWaitMixin._wait_and_checkc          	   C   sV   t jjtdd}z6| t j}| jdd W d Q R X | |j| W d |  X d S )NF)refr   )r	   )	r   Timeout	start_newSMALLEST_RELIABLE_DELAYassertRaisesr   assertIs	exceptionclose)r   r	   excr
   r
   r   test_outer_timeout_is_not_lostQ   s    z._DelayWaitMixin.test_outer_timeout_is_not_lost)NN)N)__name__
__module____qualname__
SMALL_TICKr   SMALL_TICK_MIN_ADJr   SMALL_TICK_MAX_ADJr   r   r   r   r!   r
   r
   r
   r   r   -   s    

r   c               @   s&   e Zd ZeZeZeZe	j
dd ZdS )AbstractGenericWaitTestCasec             C   s   |   }| | d S )N)r   ZassertIsNone)r   r   r
   r
   r   test_returns_none_after_timeoutb   s    z;AbstractGenericWaitTestCase.test_returns_none_after_timeoutN)r"   r#   r$   
LARGE_TICKr   LARGE_TICK_MIN_ADJr   LARGE_TICK_MAX_ADJr   r   Zignores_leakcheckr)   r
   r
   r
   r   r(   [   s   r(   c               @   s2   e Zd ZejZdd Zdd Zdd Zdd Zd	S )
AbstractGenericGetTestCasec             C   s   d S )Nr
   )r   r
   r
   r   cleanupn   s    z"AbstractGenericGetTestCase.cleanupc          	   C   s0   |  | j | jtd W d Q R X |   d S )N)r	   )r   r   r   r%   r.   )r   r
   r
   r   test_raises_timeout_numberq   s    z5AbstractGenericGetTestCase.test_raises_timeout_numberc          
   C   sj   t | j}zFy| j|d W n0 t jk
rN } z| || W d d }~X Y nX W d |  X |   d S )N)r	   )r   r   r   r   r   r   r.   )r   r	   exr
   r
   r   test_raises_timeout_Timeoutw   s    "
z6AbstractGenericGetTestCase.test_raises_timeout_Timeoutc          	   C   sd   t d}tj| j|d}z<| t (}| j|d | |j| |   W d Q R X W d |	  X d S )Nzexpected error)r   )r	   )
RuntimeErrorr   r   r   r   r   r   r   r.   r   )r   errorr	   r    r
   r
   r   *test_raises_timeout_Timeout_exc_customized   s    zEAbstractGenericGetTestCase.test_raises_timeout_Timeout_exc_customizedN)	r"   r#   r$   r   r   r.   r/   r1   r4   r
   r
   r
   r   r-   i   s
   
r-   )r   r    r   r   Ztestcaser   r   r%   r&   r'   ZRUNNING_ON_APPVEYORr*   r+   r,   objectr   r(   r-   r
   r
   r
   r   <module>   s    .