ó
úR‹_c           @   sn  d  d l  Z  d  d l Z d  d l Z d  d l j Z d  d l Z d  d l Z d  d l m Z d  d l	 m
 Z
 m Z d  d l m Z d Z d e j f d „  ƒ  YZ d e j f d	 „  ƒ  YZ d
 e j j j f d „  ƒ  YZ d e j j j f d „  ƒ  YZ d e j f d „  ƒ  YZ e j d ƒ d e j f d „  ƒ  Yƒ Z d e j f d „  ƒ  YZ e d k rje j ƒ  n  d S(   iÿÿÿÿN(   t   socket(   t   Waitert   get_hub(   t   NativeStrIOgš™™™™™¹?t   TestCloseSocketWhilePollingc           B   s   e  Z d  „  Z RS(   c         C   s‡   t  j  ƒ  } |  j | ƒ t ƒ  j j d ƒ } | j | j ƒ |  j t  j ƒ $ z | j	 d ƒ Wd  | j ƒ  XWd  QXt
 j d ƒ d  S(   Ni    s
   python.orgiQ   (   s
   python.orgiQ   (   R    t   _close_on_teardownR   t   loopt   timert   startt   closet   assertRaisest   errort   connectt   geventt   sleep(   t   selft   sockt   t(    (    sO   /var/www/syncserver/local/lib/python2.7/site-packages/gevent/tests/test__hub.pyt   test'   s    (   t   __name__t
   __module__R   (    (    (    sO   /var/www/syncserver/local/lib/python2.7/site-packages/gevent/tests/test__hub.pyR   %   s   t   TestExceptionInMainloopc           B   s   e  Z d  „  Z RS(   c      	      sù   t  j  ƒ  } t j t ƒ t  j  ƒ  | } t d } |  j | t | t | ƒ t j d ƒ ‰  ‡  f d †  } t ƒ  j j	 d ƒ r } | j
 | ƒ |  j ƒ  t  j  ƒ  } t j t ƒ t  j  ƒ  | } |  j d ˆ  ƒ |  j | t | t | ƒ Wd  QXd  S(   NgÍÌÌÌÌÌì?s'   TestExceptionInMainloop.test_sleep/failc              s
   ˆ  ‚ d  S(   N(    (    (   R   (    sO   /var/www/syncserver/local/lib/python2.7/site-packages/gevent/tests/test__hub.pyt   failB   s    gü©ñÒMbP?t   value(   t   timeR   R   t   DELAYt   assertTimeWithinRanget	   greentestt   ExpectedExceptionR   R   R   R   t   expect_one_errort   assert_error(   R   R   t   delayt   delay_rangeR   R   (    (   R   sO   /var/www/syncserver/local/lib/python2.7/site-packages/gevent/tests/test__hub.pyt
   test_sleep7   s    

(   R   R   R!   (    (    (    sO   /var/www/syncserver/local/lib/python2.7/site-packages/gevent/tests/test__hub.pyR   5   s   t	   TestSleepc           B   s   e  Z d  „  Z d „  Z RS(   c         C   s   t  j | ƒ d  S(   N(   R   R   (   R   t   timeout(    (    sO   /var/www/syncserver/local/lib/python2.7/site-packages/gevent/tests/test__hub.pyt   waitU   s    c         C   s   t  j d ƒ d  S(   Ni    (   R   R   (   R   (    (    sO   /var/www/syncserver/local/lib/python2.7/site-packages/gevent/tests/test__hub.pyt   test_simpleX   s    (   R   R   R$   R%   (    (    (    sO   /var/www/syncserver/local/lib/python2.7/site-packages/gevent/tests/test__hub.pyR"   S   s   	t   TestWaiterGetc           B   s   e  Z d  „  Z d „  Z RS(   c         C   s#   t  t |  ƒ j ƒ  t ƒ  |  _ d  S(   N(   t   superR&   t   setUpR   t   waiter(   R   (    (    sO   /var/www/syncserver/local/lib/python2.7/site-packages/gevent/tests/test__hub.pyR(   ^   s    c         C   sE   t  ƒ  j j | ƒ * } | j |  j j d  ƒ |  j j ƒ  SWd  QXd  S(   N(   R   R   R   R   R)   t   switcht   Nonet   get(   R   R#   t   evt(    (    sO   /var/www/syncserver/local/lib/python2.7/site-packages/gevent/tests/test__hub.pyR$   b   s    (   R   R   R(   R$   (    (    (    sO   /var/www/syncserver/local/lib/python2.7/site-packages/gevent/tests/test__hub.pyR&   \   s   	t
   TestWaiterc           B   s   e  Z d  „  Z RS(   c         C   s  t  ƒ  } |  j t | ƒ d ƒ | j d ƒ |  j t | ƒ d ƒ |  j | j ƒ  d ƒ t  ƒ  } | j t ƒ t j d t | ƒ ƒ s˜ t	 t | ƒ ƒ ‚ |  j
 t | j ƒ t  ƒ  } t j | j ƒ } d | _ t j d ƒ t | ƒ } |  j | j d ƒ | ƒ | j ƒ  d  S(   Ns   <Waiter greenlet=None>i   s   <Waiter greenlet=None value=25>s6   ^<Waiter greenlet=None exc_info=.*ZeroDivisionError.*$t   ANamei    s!   <Waiter greenlet=<Greenlet "AName(   R   t   assertEqualt   strR*   R,   t   throwt   ZeroDivisionErrort   ret   matcht   AssertionErrorR
   R   t   spawnt   nameR   t
   assertTruet
   startswitht   kill(   R   R)   t   gt
   str_waiter(    (    sO   /var/www/syncserver/local/lib/python2.7/site-packages/gevent/tests/test__hub.pyR   j   s"    		*		(   R   R   R   (    (    (    sO   /var/www/syncserver/local/lib/python2.7/site-packages/gevent/tests/test__hub.pyR.   h   s   s
   Racy on CIt   TestPeriodicMonitoringThreadc           B   s¤   e  Z d  „  Z d „  Z d „  Z d „  Z d „  Z e d „ Z e	 j
 d „  ƒ Z e	 j
 d „  ƒ Z d „  Z e	 j
 d	 „  ƒ Z e	 j
 d
 „  ƒ Z e	 j
 d „  ƒ Z RS(   c         C   s]   t  ƒ  } y
 | ` Wn t k
 r& n X| j d  k	 rY | j j ƒ  | j j ƒ  | ` n  d  S(   N(   R   t   exception_streamt   AttributeErrort   _threadpoolR+   t
   threadpoolt   joinR;   (   R   t   hub(    (    sO   /var/www/syncserver/local/lib/python2.7/site-packages/gevent/tests/test__hub.pyt
   _reset_hub„   s    	
c         C   sQ   t  t |  ƒ j ƒ  t j j |  _ t t j _ d |  _ t ƒ  |  _	 |  j
 ƒ  d  S(   Ni    (   R'   R>   R(   R   t   configt   monitor_threadt   Truet   monitor_firedt   sett   monitored_hubsRE   (   R   (    (    sO   /var/www/syncserver/local/lib/python2.7/site-packages/gevent/tests/test__hub.pyR(      s    	c         C   s[   t  ƒ  } |  j r5 | j r5 | j j ƒ  d  | _ n  |  j t j _ d  |  _ |  j ƒ  d  S(   N(	   R   RG   t   periodic_monitoring_threadR;   R+   R   RF   RK   RE   (   R   RD   (    (    sO   /var/www/syncserver/local/lib/python2.7/site-packages/gevent/tests/test__hub.pyt   tearDown˜   s    		c         C   s5   |  j  d 7_  |  j d  k	 r1 |  j j | ƒ n  d  S(   Ni   (   RI   RK   R+   t   add(   R   RD   (    (    sO   /var/www/syncserver/local/lib/python2.7/site-packages/gevent/tests/test__hub.pyt   _monitor¢   s    c         C   s   |  j  d t j j ƒ d  S(   Ngš™™™™™¹?(   R0   R   RF   t   max_blocking_time(   R   (    (    sO   /var/www/syncserver/local/lib/python2.7/site-packages/gevent/tests/test__hub.pyt   test_config§   s    c            s€   |  j  ˆ j ƒ d d l m } | ƒ  ‰  ˆ  j ƒ  ‡  ‡ ‡ f d †  } ˆ j | d ƒ ˆ  j ƒ  ˆ  j ƒ  ˆ j | d  ƒ d  S(   Niÿÿÿÿ(   t	   Conditionc            s5   ˆ  j  ƒ  ˆ  j ƒ  ˆ  j ƒ  ˆ r1 ˆ j ƒ  n  d  S(   N(   t   acquiret	   notifyAllt   releaseR;   (   t   _hub(   t   condR;   t   monitor(    sO   /var/www/syncserver/local/lib/python2.7/site-packages/gevent/tests/test__hub.pyt   monitor_cond°   s
    


g{®Gáz„?(	   R9   t
   should_runt	   threadingRR   RS   t   add_monitoring_functionR$   RU   R+   (   R   RX   R;   RR   RY   (    (   RW   R;   RX   sO   /var/www/syncserver/local/lib/python2.7/site-packages/gevent/tests/test__hub.pyt   _run_monitoring_threadsª   s    	
	

c         C   sT   d d l  m } t ƒ  } | j ƒ  |  j | ƒ  ƒ | j j ƒ  |  j | ƒ  ƒ d  S(   Niÿÿÿÿ(   t   gettrace(   t   greenletR^   R   t    start_periodic_monitoring_threadt   assertIsNotNoneRL   R;   t   assertIsNone(   R   R^   RD   (    (    sO   /var/www/syncserver/local/lib/python2.7/site-packages/gevent/tests/test__hub.pyt   test_kill_removes_trace¿   s    	
c         C   s˜  t  ƒ  } t ƒ  } | _ | j ƒ  } |  j | ƒ |  j d t | j ƒ  ƒ ƒ | j |  j	 d ƒ |  j d t | j ƒ  ƒ ƒ |  j |  j	 | j ƒ  d j
 ƒ |  j d | j ƒ  d j ƒ t j | j j ƒ | j | k sâ t ‚ z t j d ƒ |  j | ƒ Wd  | j |  j	 d  ƒ |  j d t | j ƒ ƒ | j | k sDt ‚ | j ƒ  | ` X|  j |  j d ƒ | j ƒ  } |  j d | ƒ |  j d | ƒ d  S(	   Ni   gš™™™™™¹?i   iÿÿÿÿg333333Ó?i   s   appears to be blockedt   PeriodicMonitoringThread(   R   R   R?   R`   Ra   R0   t   lent   monitoring_functionsR\   RO   t   functiont   periodR   R   R   t   approx_timer_resolutionR6   R   R]   R+   t   _monitoring_functionsR;   t   assertGreaterEqualRI   t   getvaluet   assertIn(   R   RD   t   streamRX   t   data(    (    sO   /var/www/syncserver/local/lib/python2.7/site-packages/gevent/tests/test__hub.pyt   test_blocking_this_threadÈ   s.    	 
c         C   s   t  ƒ  } | j } | j t  ƒ } t ƒ  } | _ |  j | j ƒ | j t j d ƒ |  j	 | j ƒ | j } | j
 |  j d ƒ | | | f S(   Ng{®Gáz„?gš™™™™™¹?(   g{®Gáz„?(   R   RB   t   applyR   R?   Rb   RL   R   R   Ra   R\   RO   (   R   RD   RB   t
   worker_hubRn   t   worker_monitor(    (    sO   /var/www/syncserver/local/lib/python2.7/site-packages/gevent/tests/test__hub.pyt   _prep_worker_threadé   s    			c         C   sY   |  j  ƒ  \ } } } |  j | ƒ | j ƒ  |  j | |  j ƒ |  j | j ƒ  d ƒ d  S(   Nt    (   Rt   R]   R;   Rm   RK   R0   Rl   (   R   Rr   Rn   Rs   (    (    sO   /var/www/syncserver/local/lib/python2.7/site-packages/gevent/tests/test__hub.pyt*   test_blocking_threadpool_thread_task_queueú   s
    
c         C   sŠ   t  ƒ  } | j } |  j ƒ  \ } } } | j t j d ƒ } |  j | ƒ | j ƒ  | j ƒ  |  j	 | |  j
 ƒ |  j | j ƒ  d ƒ d  S(   Ng333333Ó?Ru   (   R   RB   Rt   R7   R   R   R]   R,   R;   Rm   RK   R0   Rl   (   R   RD   RB   Rr   Rn   Rs   t   task(    (    sO   /var/www/syncserver/local/lib/python2.7/site-packages/gevent/tests/test__hub.pyt,   test_blocking_threadpool_thread_one_greenlet  s    		

c         C   s©   t  ƒ  } | j } |  j ƒ  \ } } } d „  } | j | ƒ } |  j | d t ƒ| j ƒ  | j ƒ  |  j | |  j	 ƒ | j
 ƒ  } |  j d | ƒ |  j d | ƒ d  S(   Nc          S   s#   t  j t j d ƒ }  |  j ƒ  d  S(   Ngffffffæ?(   R   R7   R   R   RC   (   R<   (    (    sO   /var/www/syncserver/local/lib/python2.7/site-packages/gevent/tests/test__hub.pyRw   -  s    R;   s   appears to be blockedRd   (   R   RB   Rt   R7   R]   t   FalseR,   R;   Rm   RK   Rl   (   R   RD   RB   Rr   Rn   Rs   Rw   Ro   (    (    sO   /var/www/syncserver/local/lib/python2.7/site-packages/gevent/tests/test__hub.pyt.   test_blocking_threadpool_thread_multi_greenlet$  s    			

(   R   R   RE   R(   RM   RO   RQ   RH   R]   R   t   ignores_leakcheckRc   Rp   Rt   Rv   Rx   Rz   (    (    (    sO   /var/www/syncserver/local/lib/python2.7/site-packages/gevent/tests/test__hub.pyR>      s   			
			!	t   TestLoopInterfacec           B   s   e  Z d  „  Z RS(   c         C   s@   d d l  m } d d l m } t ƒ  j } | j | | ƒ d  S(   Niÿÿÿÿ(   t   verify(   t   ILoop(   t   zope.interfaceR}   t   gevent._interfacesR~   R   R   t   verifyObject(   R   R}   R~   R   (    (    sO   /var/www/syncserver/local/lib/python2.7/site-packages/gevent/tests/test__hub.pyt   test_implemensts_ILoopB  s    (   R   R   R‚   (    (    (    sO   /var/www/syncserver/local/lib/python2.7/site-packages/gevent/tests/test__hub.pyR|   @  s   t   __main__(   R4   R   t   unittestt   gevent.testingt   testingR   t   gevent.testing.timingR   R    t
   gevent.hubR   R   t   gevent._compatR   R   t   TestCaseR   R   t   timingt   AbstractGenericWaitTestCaseR"   R&   R.   t   skipOnCIR>   R|   R   t   main(    (    (    sO   /var/www/syncserver/local/lib/python2.7/site-packages/gevent/tests/test__hub.pyt   <module>   s&   	¾