σ
P'^c           @@  s   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  d l
 m Z d  d l m Z m Z m Z m Z d e f d	     YZ d
 S(   i    (   t   absolute_import(   t   defaultdict(   t   contextmanager(   t   TokenBucket(   t   state(   t   rate(   t   AppCaset   Mockt   patcht   body_from_sigt   test_default_strategyc           B@  s   e  Z d    Z d e f d     YZ e e e e d d   Z d   Z	 d   Z
 d   Z d   Z d   Z d	   Z d
   Z d   Z RS(   c         C@  s+   |  j  j d t  d    } | |  _ d  S(   Nt   sharedc         S@  s   |  | S(   N(    (   t   xt   y(    (    sC   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/worker/test_strategy.pyt   add   s    (   t   appt   taskt   FalseR   (   t   selfR   (    (    sC   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/worker/test_strategy.pyt   setup   s    t   Contextc           B@  sG   e  Z d    Z d   Z d   Z d   Z d   Z d   Z d   Z RS(   c         C@  s:   | |  _  | |  _ | |  _ | |  _ | |  _ | |  _ d  S(   N(   t   sigt   st   reservedt   consumert   messaget   body(   R   R   R   R   R   R   R   (    (    sC   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/worker/test_strategy.pyt   __init__   s    					c         K@  s.   |  j  |  j |  j |  j j |  j j g  |  S(   N(   R   R   R   t   ackt   reject(   R   t   kwargs(    (    sC   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/worker/test_strategy.pyt   __call__!   s    c         C@  s
   |  j  j S(   N(   R   t   called(   R   (    (    sC   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/worker/test_strategy.pyt   was_reserved'   s    c         C@  s    |  j    s t  |  j j j S(   N(   R!   t   AssertionErrorR   t   _limit_taskR    (   R   (    (    sC   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/worker/test_strategy.pyt   was_rate_limited*   s    c         C@  s6   |  j    s t  |  j   s& t  |  j j j j S(   N(   R!   R"   R$   R   t   timert   call_atR    (   R   (    (    sC   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/worker/test_strategy.pyt   was_scheduled.   s    c         C@  s   |  j  j j j S(   N(   R   t   event_dispatchert   sendt	   call_args(   R   (    (    sC   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/worker/test_strategy.pyt
   event_sent3   s    c         C@  ss   |  j    r |  j j d d S|  j   r? |  j j j d d S|  j   rc |  j j j j d d St	 d   d  S(   Ni    s   request not handled(
   R!   R   R*   R$   R   R#   R'   R%   R&   t
   ValueError(   R   (    (    sC   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/worker/test_strategy.pyt   get_request6   s    (	   t   __name__t
   __module__R   R   R!   R$   R'   R+   R-   (    (    (    sC   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/worker/test_strategy.pyR      s   						c         c@  sλ   |  j  | j j  t   } t   } t d    | _ | rh t t |  d d } | | j | j <n  | | _	 | | j
 _ | j j |  j | d | }	 |  j  |	  t   }
 t |  j | d | } |  j | |	 | | |
 |  Vd  S(   Nc           S@  s   d  S(   N(   t   None(    (    (    sC   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/worker/test_strategy.pyt   <lambda>F   t    t   capacityi   t   task_reservedt   utc(   t
   assertTruet   typet   StrategyR   R   t   task_bucketsR   R   R   t   disable_rate_limitsR(   t   enabledt   start_strategyR   R	   R   (   R   R   t   rate_limitst   eventsR5   t   limitR   R   t   bucketR   R   R   (    (    sC   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/worker/test_strategy.pyt   _context?   s    		
	c      
   C@  sf   t  d  T } t | j _ |  j |  j j d d   ! } |   |  j | j j	  Wd  QXWd  QXd  S(   Ns   celery.worker.strategy.loggeri   (
   R   R   t   isEnabledFort   return_valueRA   R   R   t   assertFalset   infoR    (   R   t   loggert   C(    (    sC   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/worker/test_strategy.pyt   test_when_logging_disabledT   s
    !c         C@  sw   |  j  |  j j d d   S } |   |  j | j    | j   } | j j j |  |  j | j	    Wd  QXd  S(   Ni   (
   RA   R   R   R6   R!   R-   R   t   on_task_requestt   assert_called_withR+   (   R   RG   t   req(    (    sC   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/worker/test_strategy.pyt   test_task_strategy[   s    !c         C@  s^   |  j  |  j j d d  d t 4 } |   |  j | j    |  j | j    Wd  QXd  S(   Ni   R>   (   RA   R   R   R   R6   R!   RD   R+   (   R   RG   (    (    sC   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/worker/test_strategy.pyt   test_when_events_disabledc   s    'c         C@  sd   |  j  |  j j d d  j d d   4 } |   |  j | j    | j j j j	   Wd  QXd  S(   Ni   t	   countdowni
   (
   RA   R   R   t   setR6   R'   R   t   qost   increment_eventuallyRJ   (   R   RG   (    (    sC   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/worker/test_strategy.pyt   test_eta_taski   s    -c         C@  sj   |  j  |  j j d d  j d d  d t 4 } |   |  j | j    | j j j	 j
   Wd  QXd  S(   Ni   RN   i
   R5   (   RA   R   R   RO   R   R6   R'   R   RP   RQ   RJ   (   R   RG   (    (    sC   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/worker/test_strategy.pyt   test_eta_task_utc_disabledo   s    3c         C@  sW   |  j  j d d  } |  j | d t d d ! } |   |  j | j    Wd  QXd  S(   Ni   R=   R?   s   1/m(   R   R   RA   t   TrueR6   R$   (   R   R   RG   (    (    sC   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/worker/test_strategy.pyt   test_when_rate_limitedu   s    c         C@  sW   |  j  j d d  } |  j | d t d d ! } |   |  j | j    Wd  QXd  S(   Ni   R=   R?   s   1/m(   R   R   RA   R   R6   R!   (   R   R   RG   (    (    sC   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/worker/test_strategy.pyt'   test_when_rate_limited__limits_disabled{   s    c      	   C@  s   |  j  j d d  } | j   t j j  | j  zC |  j |  . } |   |  j t   | j	   Wd  QXWd  QXWd  t j j
 | j  Xd  S(   Ni   (   R   R   t   freezeR   t   revokedt   idRA   t   assertRaisesR,   R-   t   discard(   R   R   RG   (    (    sC   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/worker/test_strategy.pyt   test_when_revoked   s    
N(   R.   R/   R   t   objectR   R   RT   R0   RA   RH   RL   RM   RR   RS   RU   RV   R\   (    (    (    sC   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/worker/test_strategy.pyR
      s   	(							N(   t
   __future__R    t   collectionsR   t
   contextlibR   t   kombu.utils.limitsR   t   celery.workerR   t   celery.utils.timeutilsR   t   celery.tests.caseR   R   R   R	   R
   (    (    (    sC   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/worker/test_strategy.pyt   <module>   s   "