ó
P'—^c           @@  sò   d  d l  m Z d  d l m Z m Z m Z m Z d  d l m Z m	 Z	 m
 Z
 d  d l m Z m Z d  d l m Z d  d l m Z m Z m Z m Z d e f d „  ƒ  YZ d	 e f d
 „  ƒ  YZ d e f d „  ƒ  YZ d e f d „  ƒ  YZ d S(   i    (   t   absolute_import(   t   Hubt   READt   WRITEt   ERR(   t   callback_fort	   repr_flagt   _rcb(   t	   DummyLockt   LaxBoundedSemaphore(   t   range(   t   Caset   Mockt   callt   patcht   Filec           B@  s,   e  Z d  „  Z d „  Z d „  Z d „  Z RS(   c         C@  s   | |  _  d  S(   N(   t   fd(   t   selfR   (    (    s>   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/worker/test_hub.pyt   __init__   s    c         C@  s   |  j  S(   N(   R   (   R   (    (    s>   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/worker/test_hub.pyt   fileno   s    c         C@  s#   t  | t ƒ r |  j | j k St S(   N(   t
   isinstanceR   R   t   NotImplemented(   R   t   other(    (    s>   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/worker/test_hub.pyt   __eq__   s    c         C@  s   t  |  j ƒ S(   N(   t   hashR   (   R   (    (    s>   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/worker/test_hub.pyt   __hash__   s    (   t   __name__t
   __module__R   R   R   R   (    (    (    s>   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/worker/test_hub.pyR      s   			t   test_DummyLockc           B@  s   e  Z d  „  Z RS(   c         C@  s   t  ƒ  } |  Wd  QXd  S(   N(   R   (   R   t   mutex(    (    s>   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/worker/test_hub.pyt   test_context   s    	(   R   R   R   (    (    (    s>   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/worker/test_hub.pyR      s   t   test_LaxBoundedSemaphorec           B@  s,   e  Z d  „  Z d „  Z d „  Z d „  Z RS(   c         C@  s"  t  d ƒ } t ƒ  } | j | d ƒ |  j | j d ƒ | j d ƒ t ƒ  } | j | d ƒ |  j | j d ƒ | j d ƒ t ƒ  } | j | d ƒ |  j | j d ƒ |  j | j ƒ | j ƒ  |  j | j d ƒ | j ƒ  |  j | j d ƒ | j ƒ  |  j | j d ƒ | j d ƒ d  S(   Ni   i   i    i   (	   R	   R   t   acquiret   assertEqualt   valuet   assert_called_witht   assertFalset   calledt   release(   R   t   xt   c1t   c2t   c3(    (    s>   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/worker/test_hub.pyt   test_acquire_release&   s(    			


c         C@  sD   t  d ƒ } x t d ƒ D] } | j ƒ  q W|  j | j d ƒ d  S(   Ni   id   (   R	   R
   R&   R!   R"   (   R   R'   t   i(    (    s>   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/worker/test_hub.pyt   test_bounded@   s    c         C@  s$  t  d ƒ } |  j | j d ƒ t ƒ  } | j | d ƒ | j d ƒ |  j | j d ƒ t ƒ  } | j | d ƒ |  j | j ƒ |  j | j d ƒ t ƒ  } | j | d ƒ |  j | j ƒ | j	 d ƒ | j d ƒ | j d ƒ |  j | j d ƒ |  j | j d ƒ |  j | j
 ƒ | j	 d ƒ x0 t | j ƒ D] } |  j | j t ƒ  ƒ ƒ q7W|  j | j t ƒ  ƒ ƒ | j ƒ  | j d ƒ x0 t | j ƒ D] } |  j | j t ƒ  ƒ ƒ qšW|  j | j t ƒ  ƒ ƒ |  j | j d ƒ x t d ƒ D] } | j ƒ  qöW|  j | j | j ƒ d  S(   Ni   i    i   i   id   (   R	   R!   t   initial_valueR   R    R#   R"   R$   R%   t   growt   _waitingR
   t
   assertTruet   cleart   shrinkR&   (   R   R'   t   cb1t   cb2t   cb3R,   (    (    s>   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/worker/test_hub.pyt   test_grow_shrinkF   s@    			
c         C@  sŠ   t  d ƒ } x$ t d ƒ D] } | j t ƒ  ƒ q W|  j | j ƒ |  j | j d ƒ | j ƒ  |  j	 | j ƒ |  j | j | j
 ƒ d  S(   Ni
   i   i    (   R	   R
   R    R   R1   R0   R!   R"   R2   R$   R.   (   R   R'   R,   (    (    s>   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/worker/test_hub.pyt
   test_clearn   s    
(   R   R   R+   R-   R7   R8   (    (    (    s>   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/worker/test_hub.pyR   $   s   			(t   test_Hubc           B@  s›   e  Z d  „  Z d „  Z e d ƒ d „  ƒ Z d „  Z d „  Z d „  Z d „  Z	 d „  Z
 d	 „  Z d
 „  Z d „  Z d „  Z d „  Z d „  Z d „  Z RS(   c         C@  s²   |  j  t t ƒ d ƒ |  j  t t ƒ d ƒ |  j  t t ƒ d ƒ |  j  t t t Bƒ d ƒ |  j  t t t Bƒ d ƒ |  j  t t t Bƒ d ƒ |  j  t t t Bt Bƒ d ƒ d  S(   Nt   Rt   Wt   !t   RWs   R!s   W!s   RW!(   R!   R   R   R   R   (   R   (    (    s>   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/worker/test_hub.pyt   test_repr_flag|   s    c         C@  s<   d „  } |  j  t | ƒ | j ƒ |  j  t d ƒ d ƒ d  S(   Nc           S@  s   d  S(   N(    (    (    (    s>   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/worker/test_hub.pyt   f‡   s    t   foo(   R!   R   R   (   R   R?   (    (    s>   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/worker/test_hub.pyt   test_repr_callback_rcb…   s    	s   kombu.async.hub.pollc         C@  sA   t  ƒ  } | j ƒ  | j } | j ƒ  | j ƒ  | j j ƒ  d  S(   N(   R   R#   t   pollert   stopt   close(   R   t   pollt   hubRB   (    (    s>   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/worker/test_hub.pyt   test_start_stop   s    	
	

c         @  sÈ  t  ƒ  } t ƒ  | _ g  | j _ |  j | j d d d d ƒ d ƒ d g | j _ t d g ƒ | _ |  j | j ƒ  d ƒ t ƒ  t ƒ  t ƒ  ‰  ‰ ‰ ˆ  ˆ ˆ g ‰ ‡  ‡ ‡ f d †  } ‡ f d †  } | ƒ  | _ |  j | j d	 d
 ƒ d ƒ x! ˆ ˆ ˆ  g D] } | j	 ƒ  qW| ƒ  g  t
 d ƒ D] } t ƒ  ^ q*ˆ (t ˆ ƒ } |  j | j d	 d
 d d ƒ d ƒ x" t | d ƒ D] } | j	 ƒ  qW| ƒ  |  j | j d	 d
 ƒ d ƒ | d j	 ƒ  d  S(   Nt	   min_delayg¶óýÔx)E@t	   max_delayg+‡)@@i   g‹lçû©ñ@c          @  s&   g  ˆ  ˆ ˆ g D] }  |  j  ƒ  ^ q S(   N(   t   reset(   t   m(   t   e1t   e2t   e3(    s>   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/worker/test_hub.pyRJ   ¥   s    c           3@  s.   x' x ˆ  r  d  ˆ  j ƒ  f Vq Wd Vq Wd  S(   NgB`åÐ"Û@(   gB`åÐ"Û@N(   t   Nonet   pop(    (   t   entries(    s>   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/worker/test_hub.pyt   se¨   s    	t
   max_timersi
   gB`åÐ"Û@i   g®Gázò?i    (   g‹lçû©ñ@N(   R   R   t   timert   _queueR!   t   fire_timerst   iterRO   t	   schedulerR#   R
   t   listt   reversed(   R   RF   RJ   RR   t   Et   _t   keep(    (   RL   RM   RN   RQ   s>   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/worker/test_hub.pyt   test_fire_timers—   s2    	#"c      
   C@  sá   t  ƒ  } t ƒ  } t d ƒ | _ t ƒ  | _ t d | f g ƒ | _ |  j t ƒ  | j d t f ƒ Wd  QXt	 d ƒ | _ t d | f g ƒ | _ t
 d ƒ : } |  j t ƒ  | j ƒ  Wd  QX|  j | j j ƒ Wd  QXd  S(   NR@   i    t	   propagates   kombu.async.hub.logger(   R   R   t   KeyErrort   side_effectRT   RW   RX   t   assertRaisesRV   t
   ValueErrorR   t   StopIterationR1   t   errorR%   (   R   RF   t   ebackt   logger(    (    s>   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/worker/test_hub.pyt   test_fire_timers_raises½   s    		c         C@  s   t  ƒ  } t d d ƒ | _ t ƒ  | j j _ t d d ƒ | _ |  j t ƒ  | j d t ƒ  t	 ƒ Wd  QX| j j
 d ƒ d  S(   Nt   names
   hub.pollers   hub.discardi   (   R   R   RB   Rc   t   registerRa   t   _discardRb   t   addR   R#   (   R   RF   (    (    s>   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/worker/test_hub.pyt   test_add_raises_ValueErrorÍ   s    	c         C@  s–   t  ƒ  } i t ƒ  d 6t ƒ  d 6| _ i t ƒ  d 6t ƒ  d 6| _ x9 t | j j ƒ  ƒ t | j j ƒ  ƒ D] } d | _ ql W|  j | j ƒ  ƒ d  S(   Ni   i   i   i   t   mock(	   R   R   t   readerst   writersRY   t   valuesR   R1   t   repr_active(   R   RF   R"   (    (    s>   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/worker/test_hub.pyt   test_repr_activeÖ   s    	/c         C@  sÄ   t  ƒ  } i t ƒ  d 6t ƒ  d 6t ƒ  d 6| _ i t ƒ  d 6| _ x9 t | j j ƒ  ƒ t | j j ƒ  ƒ D] } d | _ ql W|  j | j d t	 f d t
 f d t	 t
 Bf d t f d g ƒ ƒ d  S(	   Ni   i   i   i	   Rn   i
   i3  (   i
   i3  (   R   R   Ro   Rp   RY   Rq   R   R1   t   repr_eventsR   R   R   (   R   RF   R"   (    (    s>   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/worker/test_hub.pyt   test_repr_eventsÞ   s    	'/			c         C@  s½   t  ƒ  } t ƒ  t ƒ  } } i | d 6| _ i | d 6| _ |  j t | d t ƒ | ƒ |  j t | d t ƒ | ƒ |  j t	 ƒ  t | d t ƒ Wd  QX|  j t | d t d ƒ d ƒ d  S(   Ni   i   R@   (
   R   R   Ro   Rp   R!   R   R   R   Rb   R`   (   R   RF   t   readert   writer(    (    s>   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/worker/test_hub.pyt   test_callback_forì   s    	c         C@  s?  t  ƒ  } t ƒ  } | _ t ƒ  } t ƒ  } | j d | d ƒ | j t d ƒ | d ƒ | j j t d | j | j	 Bƒ t d | j | j	 Bƒ g d t
 ƒ|  j | j d | d f ƒ |  j | j d | d f ƒ | j d ƒ |  j d | j ƒ | j t d ƒ ƒ |  j d | j ƒ | j j t d ƒ t d ƒ g ƒ d  S(   Ni
   i   t	   any_order(   i
   (   i   (   R   R   RB   t
   add_readerR   Rj   t   assert_has_callsR   R   R   t   TrueR!   Ro   t   removet   assertNotInt
   unregister(   R   RF   t   Pt   read_At   read_B(    (    s>   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/worker/test_hub.pyt   test_add_remove_readersø   s$    					c         C@  s9   t  ƒ  } t ƒ  | _ | j d ƒ | j t d ƒ ƒ d  S(   Ni   i-  (   R   R   RB   R}   R   (   R   RF   (    (    s>   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/worker/test_hub.pyt   test_can_remove_unknown_fds  s    	c         C@  s8   t  ƒ  } t ƒ  | _ t ƒ  | j j _ | j d ƒ d  S(   Ni9  (   R   R   RB   t   OSErrorR   Ra   R}   (   R   RF   (    (    s>   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/worker/test_hub.pyt   test_remove__unregister_raises  s    	c         C@  s+  t  ƒ  } t ƒ  } | _ t ƒ  } t ƒ  } | j d | ƒ | j t d ƒ | ƒ | j j t d | j ƒ t d | j ƒ g d t	 ƒ|  j
 | j d | d f ƒ |  j
 | j d | d f ƒ | j d ƒ |  j d | j ƒ | j t d ƒ ƒ |  j d | j ƒ | j j t d ƒ t d ƒ g ƒ d  S(   Ni   i   Ry   (    (    (   R   R   RB   t
   add_writerR   Rj   R{   R   R   R|   R!   Rp   R}   R~   R   (   R   RF   R€   t   write_At   write_B(    (    s>   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/worker/test_hub.pyt   test_add_writers  s$    					c         C@  sN  t  ƒ  } t ƒ  } | _ t ƒ  } | j j | ƒ z” t ƒ  } t ƒ  } | j d | ƒ | j t d ƒ | ƒ t ƒ  } t ƒ  } | j d | ƒ | j t d ƒ | ƒ |  j | j	 ƒ |  j | j
 ƒ Wd  | j sØ t ‚ | j ƒ  X|  j | j	 ƒ |  j | j
 ƒ | j j t d ƒ t d ƒ t d ƒ t d ƒ g d t ƒ| j | ƒ d  S(   Ni
   i   i   i   Ry   (   R   R   RB   t   on_closeRl   Rz   R   R‡   R1   Ro   Rp   t   AssertionErrorRD   R$   R   R{   R   R|   R#   (   R   RF   R€   R‹   R   R‚   Rˆ   R‰   (    (    s>   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/worker/test_hub.pyt   test_enter__exit7  s.    							*c         C@  s>   t  d d d d g ƒ } |  j t | j ƒ d d d g ƒ d  S(   NRT   i   i   i   (   R   R!   RY   RX   (   R   RF   (    (    s>   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/worker/test_hub.pyt   test_scheduler_propertyT  s    (   R   R   R>   RA   R   RG   R^   Rh   Rm   Rs   Ru   Rx   Rƒ   R„   R†   RŠ   R   RŽ   (    (    (    s>   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/worker/test_hub.pyR9   z   s   			
	&											N(   t
   __future__R    t   kombu.asyncR   R   R   R   t   kombu.async.debugR   R   R   t   kombu.async.semaphoreR   R	   t   celery.fiveR
   t   celery.tests.caseR   R   R   R   t   objectR   R   R   R9   (    (    (    s>   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/worker/test_hub.pyt   <module>   s   ""V