ó
ÐH/\c           @   s  d  d l  Z  d  d l j Z d  d l Z d  d l Z 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  d l m Z d e f d „  ƒ  YZ d	 e f d
 „  ƒ  YZ d e f d „  ƒ  YZ d e f d „  ƒ  YZ d e j f d „  ƒ  YZ e d k re j ƒ  n  d S(   iÿÿÿÿN(   t   sleep(   t   Timeout(   t   get_hub(   t
   SMALL_TICK(   t   flakyt   Errorc           B   s   e  Z RS(    (   t   __name__t
   __module__(    (    (    s=   lib/python2.7/site-packages/gevent/tests/test__api_timeout.pyR   %   s   t   _UpdateNowProxyc           B   s)   e  Z d  Z d „  Z d „  Z d „  Z RS(   i    c         C   s   | |  _  d  S(   N(   t   loop(   t   selfR	   (    (    s=   lib/python2.7/site-packages/gevent/tests/test__api_timeout.pyt   __init__-   s    c         C   s   t  |  j | ƒ S(   N(   t   getattrR	   (   R
   t   name(    (    s=   lib/python2.7/site-packages/gevent/tests/test__api_timeout.pyt   __getattr__0   s    c         C   s    |  j  d 7_  |  j j ƒ  d  S(   Ni   (   t   update_now_callsR	   t
   update_now(   R
   (    (    s=   lib/python2.7/site-packages/gevent/tests/test__api_timeout.pyR   3   s    (   R   R   R   R   R   R   (    (    (    s=   lib/python2.7/site-packages/gevent/tests/test__api_timeout.pyR   )   s   		t   _UpdateNowWithTimerProxyc           B   s   e  Z d  „  Z RS(   c         O   s
   t  |  ƒ S(   N(   t   _Timer(   R
   t   _argst   _kwargs(    (    s=   lib/python2.7/site-packages/gevent/tests/test__api_timeout.pyt   timer9   s    (   R   R   R   (    (    (    s=   lib/python2.7/site-packages/gevent/tests/test__api_timeout.pyR   7   s   R   c           B   s8   e  Z e Z e Z d  „  Z d „  Z d „  Z d „  Z RS(   c         C   s   | |  _  d  S(   N(   R	   (   R
   R	   (    (    s=   lib/python2.7/site-packages/gevent/tests/test__api_timeout.pyR   A   s    c         O   s3   | j  d ƒ r |  j j ƒ  n  t |  _ |  _ d  S(   Nt   update(   t   getR	   R   t   Truet   pendingt   active(   R
   R   t   kwargs(    (    s=   lib/python2.7/site-packages/gevent/tests/test__api_timeout.pyt   startD   s    c         C   s   t  |  _ |  _ d  S(   N(   t   FalseR   R   (   R
   (    (    s=   lib/python2.7/site-packages/gevent/tests/test__api_timeout.pyt   stopI   s    c         C   s   d S(   s   Does nothingN(    (   R
   (    (    s=   lib/python2.7/site-packages/gevent/tests/test__api_timeout.pyt   closeL   s    (	   R   R   R   R   R   R   R   R   R   (    (    (    s=   lib/python2.7/site-packages/gevent/tests/test__api_timeout.pyR   <   s   			t   Testc           B   sn   e  Z d  „  Z d „  Z e j d ƒ e j d ƒ e j e ƒ d „  ƒ ƒ ƒ Z	 d „  Z
 e j ƒ  d „  ƒ Z RS(   c         C   sx   t  ƒ  } | j } t | ƒ } | | _ z- t t d ƒ  } |  j | j ƒ Wd  QXWd  | | _ X|  j d | j ƒ d  S(   Ni   i   (	   R   R	   R   R   t   DELAYt
   assertTrueR   t   assertEqualR   (   R
   t   hubR	   t   proxyt   t(    (    s=   lib/python2.7/site-packages/gevent/tests/test__api_timeout.pyt   test_timeout_calls_update_nowR   s    			
c         C   sY   t  ƒ  } | j } t | ƒ } | | _ z t d ƒ Wd  | | _ X|  j d | j ƒ d  S(   Ng{®Gáz„?i   (   R   R	   R   R    R#   R   (   R
   R$   R	   R%   (    (    s=   lib/python2.7/site-packages/gevent/tests/test__api_timeout.pyt   test_sleep_calls_update_now`   s    			
s/   Timing is flaky, especially under Py 3.4/64-bitc         C   ss  t  t d ƒ } |  j | j | ƒ | " |  j | j | ƒ t t ƒ Wd  QX|  j | j | ƒ t t d ƒ |  j t  ƒ * } t  t ƒ  } t t d ƒ Wd  QXWd  QX|  j | j | ƒ |  j t	 ƒ / t  t t	 d ƒ ƒ  t t d ƒ Wd  QXWd  QX|  j t
 ƒ ) t  t t
 ƒ  t t d ƒ Wd  QXWd  QXy d d Wnm t k
 r±|  j t ƒ K t  t t j ƒ  d ƒ  t t d ƒ t d ƒ ‚ Wd  QXt d ƒ ‚ Wd  QXn Xt d ƒ ‚ t  t ƒ  } | j ƒ  t t d ƒ Wd  QXd } t j ƒ  } t  | t ƒ  t | d ƒ Wd  QXt j ƒ  | } |  j | d | d ƒ t  d  ƒ  t t ƒ Wd  QXt t ƒ d  S(   Ni   i
   s   Operation takes way too longi   i    s   should not get theregš™™™™™¹?(   R   R!   t   assertFalseR   R"   R    t   assertRaisest   assertIst	   exceptiont   IOErrort
   ValueErrort   ZeroDivisionErrort   syst   exc_infot   AssertionErrort   cancelt   timeR   t   assertTimeWithinRanget   None(   R
   R&   t   excR   t   XDELAYR   t   delta(    (    s=   lib/python2.7/site-packages/gevent/tests/test__api_timeout.pyt   test_apim   sL    
c         C   s`   t  ƒ  } t j | ƒ } t t d | ƒ  t t ƒ Wd  QX~ t j ƒ  |  j | ƒ  | ƒ d  S(   Ni   (	   R   t   weakreft   refR   R!   R    t   gct   collectR)   (   R
   t   errt   err_ref(    (    s=   lib/python2.7/site-packages/gevent/tests/test__api_timeout.pyt   test_refª   s    	
c         C   sŒ  t  t t ƒ = t  t d t ƒ  t t d d ƒ Wd  QXt d ƒ ‚ Wd  QXt  t ƒ  } t  t d ƒ f } |  j t  ƒ  } t t d ƒ Wd  QX|  j | j | ƒ |  j | j	 | ƒ |  j
 | j	 | ƒ Wd  QX|  j | j	 ƒ Wd  QXt  t d ƒ { } t  t ƒ f } |  j t  ƒ  } t t d ƒ Wd  QX|  j | j | ƒ |  j
 | j	 | ƒ |  j | j	 | ƒ Wd  QXWd  QX|  j | j	 ƒ d  S(   Ni
   i   i   s   should not get therei   (   R   R!   R   R    R2   R*   R+   R,   R)   R   R"   (   R
   t   t1t   t2R7   (    (    s=   lib/python2.7/site-packages/gevent/tests/test__api_timeout.pyt   test_nested_timeout³   s(    (   R   R   R'   R(   t	   greentestt   skipOnAppVeyort   skipOnPyPy3OnCIt   reraises_flaky_timeoutR   R:   RA   R   t   reraises_flaky_race_conditionRD   (    (    (    s=   lib/python2.7/site-packages/gevent/tests/test__api_timeout.pyR    P   s   		;		t   __main__(   R0   t   gevent.testingt   testingRE   R;   R4   R=   t   geventR    R   R   t   gevent.testing.timingR   R!   R   t	   ExceptionR   t   objectR   R   R   t   TestCaseR    R   t   main(    (    (    s=   lib/python2.7/site-packages/gevent/tests/test__api_timeout.pyt   <module>   s    