ó
ÐH/\c           @   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 rr d	 Z
 n  d
 Z e d Z e
 Z d e f d „  ƒ  YZ d e e f d „  ƒ  YZ d e e f d „  ƒ  YZ d S(   iÿÿÿÿNi   (   t   sysinfo(   t	   leakcheck(   t   TestCasegü©ñÒMbP?g{®Gáz„?g)\Âõ(¼?g      ø?gš™™™™™É?g       @t   _DelayWaitMixinc           B   sG   e  Z e Z e Z e Z d  „  Z d d d „ Z
 d d „ Z d „  Z RS(   c         C   s   t  d ƒ ‚ d  S(   Ns   override me in subclass(   t   NotImplementedError(   t   selft   timeout(    (    s4   lib/python2.7/site-packages/gevent/testing/timing.pyt   wait3   s    c         C   sI   | s |  j  n | } | s$ |  j n | } |  j | | | | | ƒ d  S(   N(   t   _default_delay_min_adjt   _default_delay_max_adjt   assertTimeWithinRange(   R   R   t   delayt   delay_min_adjt   delay_max_adj(    (    s4   lib/python2.7/site-packages/gevent/testing/timing.pyt   _check_delay_bounds6   s
    	c         C   sŠ   | d  k r |  j } n  t | d | ƒ } t j ƒ  j j ƒ  t j ƒ  } z |  j | ƒ } Wd  |  j	 | t j ƒ  | |  j
 |  j ƒ X| S(   Nt   seconds(   t   Nonet   _default_wait_timeoutt   getattrt   geventt   get_hubt   loopt
   update_nowt   timeR   R   R   R	   (   R   R   R   t   startt   result(    (    s4   lib/python2.7/site-packages/gevent/testing/timing.pyt   _wait_and_check?   s    c         C   sl   t  j j t d t ƒ} zB |  j t  j ƒ  } |  j d d ƒ Wd  QX|  j | j | ƒ Wd  | j	 ƒ  Xd  S(   Nt   refR   i   (
   R   t   Timeoutt	   start_newt   SMALLEST_RELIABLE_DELAYt   Falset   assertRaisesR   t   assertIst	   exceptiont   close(   R   R   t   exc(    (    s4   lib/python2.7/site-packages/gevent/testing/timing.pyt   test_outer_timeout_is_not_lostQ   s    N(   t   __name__t
   __module__t
   SMALL_TICKR   t   SMALL_TICK_MIN_ADJR   t   SMALL_TICK_MAX_ADJR	   R   R   R   R   R%   (    (    (    s4   lib/python2.7/site-packages/gevent/testing/timing.pyR   -   s   	t   AbstractGenericWaitTestCasec           B   s,   e  Z e Z e Z e Z e j	 d  „  ƒ Z
 RS(   c         C   s   |  j  ƒ  } |  j | ƒ d  S(   N(   R   t   assertIsNone(   R   R   (    (    s4   lib/python2.7/site-packages/gevent/testing/timing.pyt   test_returns_none_after_timeoutb   s    (   R&   R'   t
   LARGE_TICKR   t   LARGE_TICK_MIN_ADJR   t   LARGE_TICK_MAX_ADJR	   R   t   ignores_leakcheckR-   (    (    (    s4   lib/python2.7/site-packages/gevent/testing/timing.pyR+   [   s   t   AbstractGenericGetTestCasec           B   s5   e  Z e j Z d  „  Z d „  Z d „  Z d „  Z RS(   c         C   s   d  S(   N(    (   R   (    (    s4   lib/python2.7/site-packages/gevent/testing/timing.pyt   cleanupn   s    c         C   s7   |  j  |  j ƒ  |  j d t ƒ Wd  QX|  j ƒ  d  S(   NR   (   R    R   R   R(   R3   (   R   (    (    s4   lib/python2.7/site-packages/gevent/testing/timing.pyt   test_raises_timeout_numberq   s    c         C   so   t  j |  j ƒ } zA y |  j d | ƒ Wn& t  j k
 rQ } |  j | | ƒ n XWd  | j ƒ  X|  j ƒ  d  S(   NR   (   R   R   R   R   R!   R#   R3   (   R   R   t   ex(    (    s4   lib/python2.7/site-packages/gevent/testing/timing.pyt   test_raises_timeout_Timeoutw   s     c         C   s   t  d ƒ } t j |  j d | ƒ} zI |  j t  ƒ 4 } |  j d | ƒ |  j | j | ƒ |  j ƒ  Wd  QXWd  | j	 ƒ  Xd  S(   Ns   expected errorR"   R   (
   t   RuntimeErrorR   R   R   R    R   R!   R"   R3   R#   (   R   t   errorR   R$   (    (    s4   lib/python2.7/site-packages/gevent/testing/timing.pyt*   test_raises_timeout_Timeout_exc_customized   s    (   R&   R'   R   R   R3   R4   R6   R9   (    (    (    s4   lib/python2.7/site-packages/gevent/testing/timing.pyR2   i   s
   				
(   R   R   t    R    R   t   testcaseR   R   R(   R)   R*   t   RUNNING_ON_APPVEYORR.   R/   R0   t   objectR   R+   R2   (    (    (    s4   lib/python2.7/site-packages/gevent/testing/timing.pyt   <module>   s    		
.