
P'^c           @@ sQ  d  d l  m Z m Z d  d l Z d  d l Z d  d l Z d  d l Z d  d l Z d  d l m Z m	 Z	 d  d l
 m Z d  d l 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 m Z m Z m Z d  d	 l m Z d  d
 l m Z m Z m  Z  m! Z! m" Z" m# Z# d  d l$ m% Z% m& Z& d  d l' m( Z( d  d l) m* Z* d  d l+ m, Z- d  d l. m/ Z/ m0 Z1 d  d l2 m3 Z3 d  d l4 m5 Z5 m6 Z6 m7 Z7 m8 Z8 m9 Z9 m: Z: m; Z; d e6 f d     YZ< d   Z= d e5 f d     YZ> d e5 f d     YZ? d e5 f d     YZ@ d eA f d     YZB d e5 f d     YZC d S(   i    (   t   absolute_importt   unicode_literalsN(   t   datetimet	   timedelta(   t   ExceptionInfo(   t   Message(   t	   from_utf8t   default_encode(   t   states(   t
   trace_taskt   _trace_task_rett	   TraceInfot
   mro_lookupt   build_tracert   setup_worker_optimizationst   reset_worker_optimizations(   t   BasePool(   t   Ignoret   InvalidTaskErrort   Retryt   TaskRevokedErrort
   Terminatedt   WorkerLostError(   t   keyst	   monotonic(   t   task_revoked(   t   uuid(   t   job(   t   Requestt   logger(   t   revoked(   t   AppCaset   Caset   Mockt   SkipTestt   assert_signal_calledt   body_from_sigt   patcht   test_mro_lookupc           B@ s   e  Z d    Z RS(   c         C@ s   d t  f d     Y} d | f d     Y} d | f d     Y} d | f d     Y} d	 | _ |  j t | d
  |  |  j t | d
 d | f  d	 | _ |  j t | d
  |  d	 | _ |  j t | d
  |  |  j t | d
   d  S(   Nt   Ac           B@ s   e  Z RS(    (   t   __name__t
   __module__(    (    (    sB   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/worker/test_request.pyR'   9   s   t   Bc           B@ s   e  Z RS(    (   R(   R)   (    (    (    sB   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/worker/test_request.pyR*   <   s   t   Cc           B@ s   e  Z RS(    (   R(   R)   (    (    (    sB   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/worker/test_request.pyR+   ?   s   t   Dc           B@ s   e  Z e d     Z RS(   c         S@ s   d S(   N(    (    (   t   cls(    (    sB   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/worker/test_request.pyt   mroD   s    (   R(   R)   t   classmethodR.   (    (    (    sB   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/worker/test_request.pyR,   B   s   i
   u   xt   stop(   t   objectt   xt   assertEqualR   t   assertIsNone(   t   selfR'   R*   R+   R,   (    (    sB   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/worker/test_request.pyt
   test_order7   s    			(   R(   R)   R6   (    (    (    sB   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/worker/test_request.pyR&   5   s   c         C@ sH   i | d 6} |  j  | } d  | _ t | | | | d | d t d |  S(   Nu   idt   requestt   eagert   app(   t   taskst   Nonet	   __trace__R	   t   False(   R9   t   task_idt   namet   argst   kwargsR7   t   task(    (    sB   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/worker/test_request.pyt   jailR   s
    	t   test_default_encodec           B@ s#   e  Z d    Z d   Z d   Z RS(   c         C@ s"   t  j d k r t d   n  d  S(   Ni   i    u   py3k: not relevant(   i   i    (   t   syst   version_infoR"   (   R5   (    (    sB   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/worker/test_request.pyt   setup]   s    c         C@ sD   t  j d } t  _ z  |  j t t d   d  Wd  | t  _ Xd  S(   Nu
   java 1.6.1u   foo(   RE   t   platformR3   R   t   bytes(   R5   t   prev(    (    sB   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/worker/test_request.pyt   test_jythona   s     c         C@ sc   t  j d } t  _ t  j d   } t  _ z  |  j t t d   d  Wd  | t  _ | t  _ Xd  S(   Nu   darwinc           S@ s   d S(   Nu   utf-8(    (    (    (    sB   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/worker/test_request.pyt   <lambda>l   t    u   foo(   RE   RH   t   getfilesystemencodingR3   R   RI   (   R5   RJ   t   gfe(    (    sB   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/worker/test_request.pyt   test_cpythonh   s     	(   R(   R)   RG   RK   RP   (    (    (    sB   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/worker/test_request.pyRD   [   s   		t
   test_Retryc           B@ s   e  Z d    Z RS(   c         C@ sL   y t  d   Wn5 t  k
 rG } t d |  } |  j | j |  n Xd  S(   Nu   foou   Retrying task(   t	   ExceptionR   R3   t   exc(   R5   RS   t   ret(    (    sB   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/worker/test_request.pyt   test_retry_semipredicatew   s
    (   R(   R)   RU   (    (    (    sB   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/worker/test_request.pyRQ   u   s   t   test_trace_taskc           B@ sS   e  Z d    Z e d  d    Z d   Z d   Z d   Z d   Z d   Z	 RS(   c         C@ sR   |  j  j d t  d    } | |  _ |  j  j d t  d    } | |  _ d  S(   Nt   sharedc         [@ s   |  |  S(   N(    (   t   iRA   (    (    sB   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/worker/test_request.pyt   mytask   s    c         S@ s   t  |    d  S(   N(   t   KeyError(   RX   (    (    sB   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/worker/test_request.pyt   mytask_raising   s    (   R9   RB   R=   RY   R[   (   R5   RY   R[   (    (    sB   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/worker/test_request.pyRG      s    	u   celery.app.trace._loggerc         C@ s   t    |  j _ t  d t    |  j j _ t   } t |  j | |  j j d g i   } |  j	 | d  |  j
 |  j j j j  |  j d | j j d d  d  S(   Nt   side_effecti   i   u   Process cleanup failedi    (   R!   RY   t   backendRZ   t   process_cleanupR   RC   R9   R?   R3   t
   assertTruet   store_resultt   calledt   assertInt   errort	   call_args(   R5   t   _loggert   tidRT   (    (    sB   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/worker/test_request.pyt   test_process_cleanup_fails   s    	$c      
   C@ si   t    |  j _ t  d t    |  j j _ |  j t  * t |  j t   |  j j	 d g i   Wd  QXd  S(   NR\   i   (
   R!   RY   R]   t
   SystemExitR^   t   assertRaisesRC   R9   R   R?   (   R5   (    (    sB   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/worker/test_request.pyt"   test_process_cleanup_BaseException   s    c         C@ s;   t  |  j t   |  j j d g i   } |  j | d  d  S(   Ni   i   (   RC   R9   R   RY   R?   R3   (   R5   RT   (    (    sB   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/worker/test_request.pyt   test_execute_jail_success   s    'c         @ s   g      f d   } t  d d  |  j j _ | |  j j j _ t |  j _ t   } t |  j	 | |  j j
 d g i   |  j |    t |  j _ t   } t |  j	 | |  j j
 d g i   |  j |    d  S(   Nc         @ s#   | t  j k r   j |   n  d  S(   N(   R   t   STARTEDt   append(   Rf   t   metat   statet   kwars(   t   _started(    sB   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/worker/test_request.pyR`      s    R?   u   store_resulti   (   R!   RY   R]   R`   R\   t   Truet   track_startedR   RC   R9   R?   Rb   t   ignore_resultt   assertNotIn(   R5   R`   Rf   (    (   Rq   sB   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/worker/test_request.pyt   test_marked_as_started   s    	"	"c         C@ sQ   t  |  j t   |  j j d g i   } |  j | t  |  j | j j	 d  d  S(   Ni   (   i   (
   RC   R9   R   R[   R?   t   assertIsInstanceR   t   assertTupleEqualt	   exceptionR@   (   R5   RT   (    (    sB   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/worker/test_request.pyt   test_execute_jail_failure   s    $c         C@ s   |  j  j d t d t  d    } t   } t |  j  | | j d g i   } |  j | d  |  j |  j  j	 |  j
    d  S(   NRW   Rt   c         S@ s   |  |  S(   N(    (   RX   (    (    sB   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/worker/test_request.pyt   ignores_result   s    i   i   (   R9   RB   R=   Rr   R   RC   R?   R3   t   assertFalset   AsyncResultt   ready(   R5   R{   R>   RT   (    (    sB   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/worker/test_request.pyt   test_execute_ignore_result   s
    $	!(
   R(   R)   RG   R%   Rg   Rj   Rk   Rv   Rz   R   (    (    (    sB   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/worker/test_request.pyRV      s   	
				t   MockEventDispatcherc           B@ s   e  Z d    Z d   Z RS(   c         C@ s   g  |  _  t |  _ d  S(   N(   t   sentRr   t   enabled(   R5   (    (    sB   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/worker/test_request.pyt   __init__   s    	c         K@ s   |  j  j |  d  S(   N(   R   Rm   (   R5   t   eventt   fields(    (    sB   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/worker/test_request.pyt   send   s    (   R(   R)   R   R   (    (    (    sB   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/worker/test_request.pyR      s   	t   test_Requestc           B@ s  e  Z d    Z e d  Z d   Z d   Z d   Z d   Z d   Z	 d   Z
 d   Z d	   Z d
   Z d   Z dE 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 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, d)   Z- d*   Z. e d+  e d,  d-     Z/ d.   Z0 d/   Z1 d0   Z2 d1   Z3 d2   Z4 d3   Z5 d4   Z6 d5   Z7 d6   Z8 d7   Z9 d8   Z: d9   Z; d:   Z< d;   Z= d<   Z> d=   Z? d>   Z@ d?   ZA e d@  dA    ZB dB   ZC dC   ZD dD   ZE RS(F   c         C@ sy   |  j  j d t  d    } | |  _ |  j  j d t  d    } | |  _ |  j  j d t  d    } | |  _ d  S(   NRW   c         [@ s   |  | S(   N(    (   R2   t   yt   kw_(    (    sB   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/worker/test_request.pyt   add   s    c         [@ s   |  |  S(   N(    (   RX   RA   (    (    sB   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/worker/test_request.pyRY      s    c         S@ s   t  |    d  S(   N(   RZ   (   RX   (    (    sB   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/worker/test_request.pyR[      s    (   R9   RB   R=   R   RY   R[   (   R5   R   RY   R[   (    (    sB   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/worker/test_request.pyRG      s    		c         K@ sI   | t  |  j |  d t   d t   d |  j d t j f d | j | S(   Nt   on_ackt   eventerR9   t   connection_errorsRB   (   R$   R9   R!   t   socketRc   t   type(   R5   t   sigR   RA   (    (    sB   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/worker/test_request.pyt   get_request   s    			c         C@ sB   |  j  t  - |  j |  j j d d  j d d   Wd  QXd  S(   Ni   t   etau   12345(   Ri   R   R   R   t   st   set(   R5   (    (    sB   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/worker/test_request.pyt(   test_invalid_eta_raises_InvalidTaskError   s    c         C@ sB   |  j  t  - |  j |  j j d d  j d d   Wd  QXd  S(   Ni   t   expiresu   12345(   Ri   R   R   R   R   R   (   R5   (    (    sB   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/worker/test_request.pyt,   test_invalid_expires_raises_InvalidTaskError   s    c         C@ sQ   t  d  ? } |  j |  j j d d  j d d   |  j | j  Wd  QXd  S(   Nu"   celery.worker.job.maybe_make_awarei   R   i
   (   R%   R   R   R   R   R_   Ra   (   R5   t   mma(    (    sB   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/worker/test_request.pyt'   test_valid_expires_with_utc_makes_aware   s    (c         C@ s5   |  j  |  j j d d   } |  j | j    d  S(   Ni   (   R   R   R   R|   t   maybe_expire(   R5   t   req(    (    sB   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/worker/test_request.pyt&   test_maybe_expire_when_expires_is_None   s    c         C@ sT   t  |  j _ |  j |  j j d d   } | j t    | j j t	 | j
  d  S(   Ni   (   Rr   R   t	   acks_lateR   R   t   on_retryR!   R   t   assert_called_witht
   req_loggerR   (   R5   R   (    (    sB   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/worker/test_request.pyt   test_on_retry_acks_if_late   s    c      
   C@ s   d  } y t d   Wn t k
 r2 t   } n X|  j |  |  j |  j j d d   } | j |  | j j	 j
 d d | j d t d d d t d  S(   Nu   9i   u   task-revokedR   t
   terminatedt   signumt   expired(   R;   R   R   t   assertIsNotNoneR   R   R   t
   on_failureR   R   R   t   idRr   R=   (   R5   t   einfoR   (    (    sB   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/worker/test_request.pyt   test_on_failure_Termianted  s    c         C@ s   d  } y t    Wn  t k
 r5 t d t  } n X|  j |  |  j |  j j d d   } |  j t   | j	 |  Wd  QXd  S(   Nt   internali   (
   R;   t   MemoryErrorR   Rr   R   R   R   R   Ri   t
   _log_error(   R5   R   R   (    (    sB   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/worker/test_request.pyt%   test_log_error_propagates_MemoryError  s    c         C@ s   d  } y t    Wn  t k
 r5 t d t  } n X|  j |  |  j |  j j d d   } | j |  | j	 j
 t | j  d  S(   NR   i   (   R;   R   R   Rr   R   R   R   R   R   R   R   R   R   (   R5   R   R   (    (    sB   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/worker/test_request.pyt   test_log_error_when_Ignore  s    c         C@ s>   |  j  |  j j d d   } d | _ |  j | j d  d  S(   Ni   u   foo(   R   R   R   t   _tzlocalR3   t   tzlocal(   R5   R   (    (    sB   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/worker/test_request.pyt   test_tzlocal_is_cached*  s    	c         C@ s   |  j  j d d  } | j   |  j |  } t |  j  _ t   } | j |  |  j | j	 j
  | j	 j d d } |  j | d | j  |  j | d | j  |  j | d | j  | d } |  j | j d  | j  d  S(   Ni   i   u   argsi    i   u	   task_name(   R   R   t   freezeR   Rr   t   accept_magic_kwargsR!   t   execute_using_poolR_   t   apply_asyncRa   Rd   R3   RB   R   R@   t   get(   R5   RB   R   t   poolR@   RA   (    (    sB   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/worker/test_request.pyt   test_execute_magic_kwargs/  s    
	
c         K@ sZ   t  i |  j j d 6t   d 6d g d 6i d d 6d 6| p> i   } t | d |  j | S(	   Nu   tasku   idi   u   argsu   xu   fu   kwargsR9   (   t   dictRY   R?   R   R   R9   (   R5   t   bodyRA   (    (    sB   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/worker/test_request.pyt   xRequest>  s
    

c         C@ s   |  j  t |  j     d  S(   N(   R_   t   reprR   (   R5   (    (    sB   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/worker/test_request.pyt   test_task_wrapper_reprE  s    u   celery.worker.job.kwdictc         C@ sB   t  j t } t  _ z |  j   |  j | j  Wd  | t  _ Xd  S(   N(   t   modulet   NEEDS_KWDICTRr   R   R_   Ra   (   R5   t   kwdictRJ   (    (    sB   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/worker/test_request.pyt   test_kwdictH  s
    
c         C@ sT   t  |  j _ |  j   } |  j | j  t  |  j _ |  j   } |  j | j  d  S(   N(   Rr   RY   Rt   R   R|   t   store_errorst   store_errors_even_if_ignoredR_   (   R5   R   (    (    sB   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/worker/test_request.pyt   test_sets_store_errorsQ  s    c         C@ s?   |  j    } t   | _ | j d  |  j d | j j  d  S(   Nu   task-frobulated(   R   R   R   t
   send_eventRb   R   (   R5   R   (    (    sB   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/worker/test_request.pyt   test_send_eventZ  s    c         C@ sK   |  j    } t | j _ t d d  | _ | j d  | j j j   d  S(   NR?   u   .eventeru   task-frobulated(	   R   R=   RB   t   send_eventsR!   R   R   R   t   assert_not_called(   R5   R   (    (    sB   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/worker/test_request.pyt(   test_send_events__disabled_at_task_level`  s
    c         C@ s   t  i |  j j d 6t   d 6d g d 6i d d 6d 6d |  j } t   | _ y t d	 t d
    Wnz t	   } | j
 |  |  j d | j j  t j t } t _ z | j
 |  Wd  | t _ Xt | _ | j
 |  n Xd  S(   Nu   tasku   idi   u   argsu   xu   fu   kwargsR9   u   foou	   moofoobaru   task-retried(   R   RY   R?   R   R9   R   R   R   RZ   R   R   Rb   R   R   t
   _does_infoR=   Rr   R   (   R5   R   R   RJ   (    (    sB   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/worker/test_request.pyt   test_on_retryg  s&    

	
	c         C@ s   t  i |  j j d 6t   d 6d g d 6i d d 6d 6d |  j } |  j | j | j  |  j | j | j  d	 | _ |  j | j d	  d
 | _ |  j | j d
  d  S(   Nu   tasku   idi   u   argsu   xu   fu   kwargsR9   u   IDu   NAME(	   R   RY   R?   R   R9   R3   R>   R   t	   task_name(   R5   R   (    (    sB   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/worker/test_request.pyt   test_compat_properties}  s    

		c         C@ s   t    } t j } t i |  j j d 6t   d 6d g d 6i d d 6d 6d |  j } t t	 d	 | j
 d
 | d t d t d | C t   | _ d | _ | j | d d | j j | j |  Wd  QXd  S(   Nu   tasku   idi   u   argsu   xu   fu   kwrgsR9   t   senderR7   R   R   R   i9  t   signalu   TERM(   R!   R   t   SIGTERMR   RY   R?   R   R9   R#   R   RB   Rr   R=   R   t
   time_startt
   worker_pidt	   terminatet   terminate_jobR   (   R5   R   R   R   (    (    sB   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/worker/test_request.pyt   test_terminate__task_started  s    		

	c         C@ s   t    } t i |  j j d 6t   d 6d g d 6i d d 6d 6d |  j } d  | _ | j | d	 d
 |  j	 | j
 j  |  j | j | d f  | j | d	 d
 d  S(   Nu   tasku   idi   u   argsu   xu   fu   kwargsR9   R   u   TERMi   (   R!   R   RY   R?   R   R9   R;   R   R   R|   R   Ra   Rx   t   _terminate_on_ack(   R5   R   R   (    (    sB   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/worker/test_request.pyt   test_terminate__task_reserved  s    	

	c         C@ s   t  i |  j j d 6t   d 6d g d 6i d d 6d 6t j   t d d  d	 6d
 |  j } t t	 d | j
 d | d t d t d d  G | j   |  j | j t  |  j |  j j j | j  t j  Wd  QXd  S(   Nu   tasku   idi   u   argsu   xu   fu   kwargst   daysu   expiresR9   R   R7   R   R   R   (   R   RY   R?   R   R   t   utcnowR   R9   R#   R   RB   R=   Rr   R;   R   Rb   R   R3   R]   t
   get_statusR   t   REVOKED(   R5   R   (    (    sB   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/worker/test_request.pyt   test_revoked_expires_expired  s    


c         C@ so   |  j  i t j   t d d  d 6 } | j   |  j | j t  |  j |  j j	 j
 | j  t j  d  S(   NR   i   u   expires(   R   R   R   R   R   Ru   R   t   assertNotEqualRY   R]   R   R   R   (   R5   R   (    (    sB   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/worker/test_request.pyt    test_revoked_expires_not_expired  s    	 
c         C@ s{   t  |  j _ |  j i t j   t d d  d 6 } | j   |  j | j	 t  |  j
 |  j j j | j	  t j  d  S(   NR   i   u   expires(   Rr   RY   Rt   R   R   R   R   R   Rb   R   R   R]   R   R   R   (   R5   R   (    (    sB   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/worker/test_request.pyt"   test_revoked_expires_ignore_result  s    	 
c         @ s   |  j  } t g     f d   } d   } | | _ t |  j _ |  j   } |   } | j |  |  j   d  |   } t   d <t |  j _ | j |  |  j	   d  |   } t   d <t |  j _ | j |  |  j   d  d  S(   Nc          @ s   t    d <d  S(   Ni    (   Rr   (   R@   RA   (   t	   mail_sent(    sB   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/worker/test_request.pyt   mock_mail_admins  s    c           S@ s"   y t  d   Wn t   SXd  S(   Nu	   moofoobar(   RZ   R   (    (    (    sB   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/worker/test_request.pyt   get_ei  s    i    (
   R9   R=   t   mail_adminsRr   RY   t   send_error_emailsR   R   R_   R|   (   R5   R9   R   R   R   R   (    (   R   sB   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/worker/test_request.pyt   test_send_email  s(    						
	
c         C@ s,   |  j    } t | _ |  j | j    d  S(   N(   R   Rr   t   _already_revokedR_   R   (   R5   R   (    (    sB   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/worker/test_request.pyt   test_already_revoked  s    	c         C@ s   |  j    } t t d | j d | d t d t d d  H t j | j  |  j	 | j    |  j	 | j
  |  j	 | j  Wd  QXd  S(   NR   R7   R   R   R   (   R   R#   R   RB   R=   R;   R   R   R   R_   R   t   acknowledged(   R5   R   (    (    sB   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/worker/test_request.pyt   test_revoked  s    c         C@ s*   |  j    } t j | j  | j   d  S(   N(   R   R   R   R   t   execute(   R5   R   (    (    sB   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/worker/test_request.pyt%   test_execute_does_not_execute_revoked  s    c         C@ sW   t  |  j _ |  j i |  j j d 6i  d 6 } | j   |  j | j  | j   d  S(   Nu   tasku   kwargs(   Rr   R[   R   R   R?   R   R_   R   (   R5   R   (    (    sB   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/worker/test_request.pyt   test_execute_acks_late  s    	
c         C@ sC   |  j    } t j | j  |  j t   | j d   Wd  QXd  S(   N(   R   R   R   R   Ri   R   R   R;   (   R5   R   (    (    sB   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/worker/test_request.pyt0   test_execute_using_pool_does_not_execute_revoked  s    c         C@ s   |  j    } | j d t j   d t    |  j | j  t j t	 } t _ z# | j d t j   d t    Wd  | t _ Xd  S(   Nt   pidt   time_accepted(
   R   t   on_acceptedt   ost   getpidR   R_   R   R   t   _does_debugR=   (   R5   R   RJ   (    (    sB   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/worker/test_request.pyt   test_on_accepted_acks_early  s    #c         C@ sK   |  j    } t |  j _ | j d t j   d t    |  j | j	  d  S(   NR   R   (
   R   Rr   RY   R   R   R   R   R   R|   R   (   R5   R   (    (    sB   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/worker/test_request.pyt   test_on_accepted_acks_late   s    c         C@ s   t  j } t   } |  j   } t t d | j d | d t d t d | W | j	 | d d |  j
 | j j  | j d d	 d
 t    | j j d	 |  Wd  QXd  S(   NR   R7   R   R   R   R   u   TERMR   i:  R   (   R   R   R!   R   R#   R   RB   Rr   R=   R   R|   R   t
   call_countR   R   R   (   R5   R   R   R   (    (    sB   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/worker/test_request.pyt   test_on_accepted_terminates&  s    		c         C@ sg   |  j    } d | _ | j d  t j t } t _ z! | j d  |  j | j  Wd  | t _ Xd  S(   Ni   i*   (   R   R   t
   on_successR   R   R=   R|   R   (   R5   R   RJ   (    (    sB   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/worker/test_request.pyt   test_on_success_acks_early2  s    	c      	   C@ sl   |  j    } d | _ |  j t  B y t    Wn! t k
 rU | j t    n Xt sb t  Wd  QXd  S(   Ni   (   R   R   Ri   Rh   R   R   R=   t   AssertionError(   R5   R   (    (    sB   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/worker/test_request.pyt   test_on_success_BaseException=  s    	c         C@ sW   |  j    } d | _ t   | _ t   | j _ | j d  |  j | j j j  d  S(   Ni   i*   (   R   R   R!   R   R   R   R_   Ra   (   R5   R   (    (    sB   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/worker/test_request.pyt   test_on_success_eventerH  s    	c         C@ sl   |  j    } d | _ t   | _ y t d   Wn4 t k
 rg | j t    |  j | j j	  n Xd  S(   Ni   u   foo(
   R   R   R!   R   RZ   RR   R   R   R_   Ra   (   R5   R   (    (    sB   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/worker/test_request.pyt   test_on_success_when_failureP  s    	c         C@ sB   |  j    } d | _ t |  j _ | j d  |  j | j  d  S(   Ni   i*   (   R   R   Rr   RY   R   R   R_   R   (   R5   R   (    (    sB   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/worker/test_request.pyt   test_on_success_acks_lateZ  s
    	c         C@ s   d   } |  j    } |   } | j |  |  j |  j j j | j  t j  t	 |  j _
 |   } |  j    } | j |  |  j |  j j j | j  t j  d  S(   Nc           S@ s,   y t  d   Wn t  k
 r' t   SXd  S(   Nu   do re mi(   R   R   (    (    (    sB   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/worker/test_request.pyR   c  s    (   R   R   R3   RY   R]   R   R   R   t   FAILURERr   Rt   t   PENDING(   R5   R   R   t   exc_info(    (    sB   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/worker/test_request.pyt   test_on_failure_WorkerLostErrora  s    			c         C@ so   |  j    } d | _ t |  j _ y t d   Wn7 t k
 rj t   } | j |  |  j | j	  n Xd  S(   Ni   u   foo(
   R   R   Rr   RY   R   RZ   R   R   R_   R   (   R5   R   R  (    (    sB   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/worker/test_request.pyt   test_on_failure_acks_latex  s    		c      
   C@ sZ   t  d |  j j d d d d	 d d  } |  j t   t | d d  d |  j Wd  QXd  S(
   NRB   R   i   R@   RA   u   foot   messageR9   (    (   R   RY   R?   Ri   R   R   R;   R9   (   R5   R   (    (    sB   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/worker/test_request.pyt    test_from_message_invalid_kwargs  s    'u   celery.worker.job.erroru   celery.worker.job.warnc         C@ s   |  j    } | j d t d d  |  j d | j d d  | j d t d d  |  j d | j d d  |  j |  j j j	 | j
  t j  t |  j _ |  j    } | j d t d d  |  j |  j j j	 | j
  t j  d  S(   Nt   softt   timeouti9  u   Soft time limiti    u   Hard time limiti8  (   R   t
   on_timeoutRr   Rb   Rd   R=   R3   RY   R]   R   R   R   R   Rt   R   (   R5   t   warnRc   R   (    (    sB   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/worker/test_request.pyt   test_on_timeout  s    c         C@ s  d d l  m } t |  j  |  j | j | j  zk t |  j j	 |  j |  j j
 d d |  j |  j _ | j |  j j	 t   d g i   } |  j | d  Wd  t   |  j | j | j  Xt |  j d  | j |  j j	 t   d g i  d |  j } |  j | d  d  S(	   Ni    (   t   traceu   testR9   i   u	   __trace__i   i   (   t
   celery.appR  R   R9   t   assertIst   trace_task_rett   _fast_trace_taskR   RY   R?   t   loaderR<   R   R3   R   R
   t   delattr(   R5   R  t   res(    (    sB   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/worker/test_request.pyt   test_fast_trace_task  s    $'c         C@ sq   t  |  j j |  j |  j j d d |  j |  j _ t |  j j t   d g i  d |  j } |  j | d  d  S(   Nu   testR9   i   i   (	   R   RY   R?   R9   R  R<   R
   R   R3   (   R5   R  (    (    sB   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/worker/test_request.pyt   test_trace_task_ret  s
    *c         C@ sf   y t  |  j d  Wn t k
 r' n Xt |  j j t   d g i  d |  j } |  j | d  d  S(   Nu	   __trace__i   R9   i   (   R  RY   t   AttributeErrorR
   R?   R   R9   R3   (   R5   R  (    (    sB   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/worker/test_request.pyt   test_trace_task_ret__no_trace  s    *c         C@ s{   d   } |  j  j d d  d t  d    } |  j t d  6 t | t   g  i  d |  j  } |  j | t	  Wd  QXd  S(   Nc         _@ s   t  d   d  S(   Nu   baz(   RZ   (   R5   R@   RA   (    (    sB   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/worker/test_request.pyt   _error_exec  s    R7   RW   c           S@ s   t  d   d  S(   Nu   baz(   RZ   (    (    (    sB   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/worker/test_request.pyt   raising  s    u   Exception raised outsideR9   (
   R9   RB   R;   R=   t   assertWarnsRegext   RuntimeWarningR	   R   Rw   R   (   R5   R  R  R  (    (    sB   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/worker/test_request.pyt   test_trace_catches_exception  s    	$	
!c         C@ s  t    } |  j j d |  z y t d   Wn t k
 r } y t t |  d |  Wq t k
 r } t t j	 |  } | j
 |  j d t |  j |  j j j |  t j  | j
 |  j d t |  j |  j j j |  t j	  q Xn XWd  |  j j   Xd  S(   NR   u   fooRS   R   (   R   RY   t   push_requestt
   ValueErrorRR   R   t   strR   R   t   RETRYt   handle_retryR=   R3   R]   R   R   Rr   t   pop_request(   R5   Rf   RS   t   w(    (    sB   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/worker/test_request.pyt#   test_worker_task_trace_handle_retry  s"    	 (c         C@ s   t    } |  j j   z | |  j j _ y t d   Wn t k
 r } t t j	 |  } | j
 |  j d t |  j |  j j j |  t j  | j
 |  j d t |  j |  j j j |  t j	  n XWd  |  j j   Xd  S(   Nu   fooR   (   R   RY   R  R7   R   R  RR   R   R   R   t   handle_failureR=   R3   R]   R   R   Rr   R!  (   R5   Rf   RS   R"  (    (    sB   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/worker/test_request.pyt%   test_worker_task_trace_handle_failure  s    	$c         C@ s   |  j  i g  d 6i  d 6 } | j i | j d 6| j d 6d d 6d d 6} |  j |  | j i | j d 6| j d 6d	 d
 6d d 6d d 6} |  j |  d  S(   Nu   argsu   kwargsu   nameu   idi
   u   return_valuegvOjM?u   runtimeu	   FOOBARBAZu   excu   raised unexpectedu   descriptionu	   foobarbazu	   traceback(   R   t   success_msgR?   R   R_   t	   error_msg(   R5   R   R2   (    (    sB   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/worker/test_request.pyt   test_task_wrapper_mail_attrs  s    	

	

c      
   C@ s>  d } i |  j  j d 6t   d 6d g d 6i d | 6d 6} t d  d t j |  d	 d
 d d d d } t | j   d | d |  j	 } |  j
 | t  |  j | j | d  |  j | j | d  |  j | j | d  t |  } t j d k  r:|  j t t | j   |  |  j
 t t | j   t  n  d  S(   Nu   æØåveéðƒeæu   tasku   idi   u   argsu   baru   kwargsR   R]   u   foot   content_typeu   application/jsont   content_encodingu   utf-8R  R9   i   (   i   i   (   RY   R?   R   R   R;   t   anyjsont   dumpsR   t   decodeR9   Rw   R3   R   R@   R   RE   RF   t   nextR   RA   R  (   R5   t   usR   t   mR   (    (    sB   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/worker/test_request.pyt   test_from_message	  s    	!c      
   C@ s   i |  j  j d 6t   d 6} t d  d t j |  d d d d d d	 } t | j   d
 | d |  j	 } |  j
 | t  |  j | j g   |  j | j i   d  S(   Nu   tasku   idR   R]   u   fooR)  u   application/jsonR*  u   utf-8R  R9   (   RY   R?   R   R   R;   R+  R,  R   R-  R9   Rw   R3   R@   RA   (   R5   R   R0  R   (    (    sB   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/worker/test_request.pyt   test_from_message_empty_args  s    	!c      
   C@ sl   i  } t  d  d t j |  d d d d d d } |  j t  $ t | j   d | d	 |  j Wd  QXd  S(
   NR   R]   u   fooR)  u   application/jsonR*  u   utf-8R  R9   (	   R   R;   R+  R,  Ri   RZ   R   R-  R9   (   R5   R   R0  (    (    sB   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/worker/test_request.pyt)   test_from_message_missing_required_fields$  s    	c      
   C@ s   i d d 6t    d 6d g d 6i d d 6d 6} t d  d	 t j |  d
 d d d d d } |  j t  $ t | j   d | d |  j	 Wd  QXd  S(   Nu   cu.mytask.doesnotexistu   tasku   idi   u   argsu   baru   æØåveéðƒeæu   kwargsR   R]   u   fooR)  u   application/jsonR*  u   utf-8R  R9   (
   R   R   R;   R+  R,  Ri   RZ   R   R-  R9   (   R5   R   R0  (    (    sB   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/worker/test_request.pyt"   test_from_message_nonexistant_task,  s    	c         C@ s   t    } |  j i | d 6d g d 6i  d 6 } |  j | j   d  |  j j j |  } |  j | d t j  |  j | d d  d  S(   Nu   idi   u   argsu   kwargsi   u   statusu   result(	   R   R   R3   R   RY   R]   t   get_task_metaR   t   SUCCESS(   R5   Rf   R   Rn   (    (    sB   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/worker/test_request.pyt   test_execute5  s    	'c         C@ s   |  j  j d    } t   } |  j i | j d 6| d 6d g d 6i  d 6 } |  j | j   d  | j j |  } |  j | d d  |  j | d	 t	 j
  d  S(
   Nc         S@ s   |  |  S(   N(    (   RX   (    (    sB   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/worker/test_request.pyt   mytask_no_kwargs?  s    u   tasku   idi   u   argsu   kwargsi   u   resultu   status(   R9   RB   R   R   R?   R3   R   R]   R5  R   R6  (   R5   R8  Rf   R   Rn   (    (    sB   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/worker/test_request.pyt   test_execute_success_no_kwargs=  s    		

c         @ s   i d  d 6  |  j j d t d t    f d    } t   } |  j i | j d 6| d 6d g d 6i  d	 6 } |  j | j	   d
  | j
 j |  } |  j   j d  |  |  j | d d
  |  j | d t j  d  S(   Nu   task_idRW   R   c         @ s   |   d <|  |  S(   Nu   task_id(    (   RX   R>   (   t   scratch(    sB   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/worker/test_request.pyt   mytask_some_kwargsR  s    
u   tasku   idi   u   argsu   kwargsi   u   resultu   status(   R;   R9   RB   R=   Rr   R   R   R?   R3   R   R]   R5  R   R   R6  (   R5   R;  Rf   R   Rn   (    (   R:  sB   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/worker/test_request.pyt    test_execute_success_some_kwargsO  s    *		

c         @ s   i t  d 6    f d   } t   } |  j i | d 6d g d 6d | } |  j | j   d  |  j j j |  } |  j   d  |  j | d d  |  j | d	 t	 j
  d  S(
   Nu   ACKc          @ s   t    d <d  S(   Nu   ACK(   Rr   (   R@   RA   (   R:  (    sB   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/worker/test_request.pyR   g  s    u   idi   u   argsR   i   u   resultu   status(   R=   R   R   R3   R   RY   R]   R5  R_   R   R6  (   R5   R   Rf   R   Rn   (    (   R:  sB   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/worker/test_request.pyt   test_execute_ackd  s    	&c         C@ s   t    } |  j i |  j j d 6| d 6d g d 6i  d 6 } |  j | j   t  |  j j j |  } |  j	 | d t
 j  |  j | d t  d  S(   Nu   tasku   idi   u   argsu   kwargsu   statusu   result(   R   R   R[   R?   Rw   R   R   R]   R5  R3   R   R   RZ   (   R5   Rf   R   Rn   (    (    sB   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/worker/test_request.pyt   test_execute_failr  s    		
c         C@ s   t    } |  j i | d 6d g d 6 } d t f d     Y} |   } | j |  |  j | j  |  j | j d |  j j	  |  j | j d |  |  j | j d d g  |  j
 d	 | j d
  |  j
 d g | j  t | j _ | j |  d  S(   Nu   idi   u   argst   MockPoolc           B@ s2   e  Z d Z d Z d Z d    Z d d d  Z RS(   c         _@ s   d  S(   N(    (   R5   R@   RA   (    (    sB   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/worker/test_request.pyR     s    c         _@ s   | |  _  | |  _ | |  _ d  S(   N(   t   targetR@   RA   (   R5   R@  R@   RA   t   margst   mkwargs(    (    sB   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/worker/test_request.pyR     s    		N(   R(   R)   R;   R@  R@   RA   R   R   (    (    (    sB   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/worker/test_request.pyR?    s
   	i    i   i   u   fi   (   R   R   R   R   R_   R@  R3   R@   RY   R?   Rb   R=   RB   R   (   R5   Rf   R   R?  t   p(    (    sB   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/worker/test_request.pyt   test_execute_using_pool  s    	 	c         C@ s   d |  _  t   } |  j i | d 6d g d 6 } |  j | j   i d d 6d  d 6d  d 6| j d	 6d
 d 6t d 6i d  d 6d  d 6d
 d 6t d 6d 6| j d 6 d  S(   Ni  u   idi   u   argsu   xu   fu   logfileu   loglevelu   task_idi    u   task_retriesu   task_is_eageru   exchangeu   routing_keyu   priorityu   redeliveredu   delivery_infou	   task_name(	   t   maxDiffR   R   t   assertDictEqualt   extend_with_default_kwargsR;   R   R=   R?   (   R5   Rf   R   (    (    sB   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/worker/test_request.pyt   test_default_kwargs  s"    		 
u   celery.worker.job.loggerc         C@ s   |  j  } t   } |  j i | d 6d g d 6 } y
 |  Wn t k
 r t   } t | j _ | j |  |  j	 | j
 j  | j
 j d d } |  j |  j j | d  |  j | | d  n Xd  S(   Nu   idi   u   argsi    i   u   name(   R9   R   R   RR   R   Rr   t   conft   CELERY_SEND_TASK_ERROR_EMAILSR   R_   t   logRa   Rd   R3   RY   R?   Rb   (   R5   Ry   R   R9   Rf   R   R  t   context(    (    sB   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/worker/test_request.pyt   _test_on_failure  s    		 
	c         C@ s   |  j  t d   d  S(   Nu   Inside unit tests(   RM  RR   (   R5   (    (    sB   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/worker/test_request.pyt   test_on_failure  s    c         C@ s   |  j  t d   d  S(   Nu   Бобры атакуют(   RM  RR   (   R5   (    (    sB   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/worker/test_request.pyt!   test_on_failure_unicode_exception  s    c         C@ s   |  j  t t d    d  S(   Nu   Бобры атакуют(   RM  RR   R   (   R5   (    (    sB   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/worker/test_request.pyt   test_on_failure_utf8_exception  s    	N(F   R(   R)   RG   R   R   R   R   R   R   R   R   R   R   R   R   R;   R   R   R%   R   R   R   R   R   R   R   R   R   R   R   R   R   R   R   R   R   R   R   R   R   R   R   R   R   R  R  R  R
  R  R  R  R  R#  R%  R(  R1  R2  R3  R4  R7  R9  R<  R=  R>  RD  RH  RM  RN  RO  RP  (    (    (    sB   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/worker/test_request.pyR      s   																									 		
		
		
						
														
												(D   t
   __future__R    R   R+  R   R   R   RE   R   R   t   billiard.einfoR   t   kombu.transport.baseR   t   kombu.utils.encodingR   R   t   celeryR   t   celery.app.traceR	   R
   R   R   R   R   R   t   celery.concurrency.baseR   t   celery.exceptionsR   R   R   R   R   R   t   celery.fiveR   R   t   celery.signalsR   t   celery.utilsR   t   celery.workerR   R   t   celery.worker.jobR   R   R   t   celery.worker.stateR   t   celery.tests.caseR   R    R!   R"   R#   R$   R%   R&   RC   RD   RQ   RV   R1   R   R   (    (    (    sB   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/worker/test_request.pyt   <module>   s6   4	.4		
H
