ó
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 m Z d  d l	 m
 Z
 m Z m Z m Z m Z d  d l m Z m Z m Z d i  e d „ 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   uuid(   t   signals(   t   states(   t   Ignoret   Retry(   t	   TraceInfot   eager_trace_taskt
   trace_taskt   setup_worker_optimizationst   reset_worker_optimizations(   t   AppCaset   Mockt   patchc      
   K@  s"   t  | d | | d | d |  | S(   Ns   id-1t	   propagatet   app(   R   (   R   t   taskt   argst   kwargsR   t   opts(    (    s?   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/tasks/test_trace.pyt   trace   s    t	   TraceCasec           B@  s   e  Z d  „  Z d „  Z RS(   c         C@  s   |  j  j d t ƒ d „  ƒ } | |  _ |  j  j d t d t ƒ d „  ƒ } | |  _ |  j  j d t ƒ d „  ƒ } | |  _ d  S(   Nt   sharedc         S@  s   |  | S(   N(    (   t   xt   y(    (    s?   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/tasks/test_trace.pyt   add   s    t   ignore_resultc         S@  s   |  | S(   N(    (   R   R   (    (    s?   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/tasks/test_trace.pyt   add_cast   s    c         S@  s
   |  ‚ d  S(   N(    (   t   exc(    (    s?   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/tasks/test_trace.pyt   raises#   s    (   R   R   t   FalseR   t   TrueR   R   (   t   selfR   R   R   (    (    s?   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/tasks/test_trace.pyt   setup   s    	$	c         O@  s   t  |  j | | Ž S(   N(   R   R   (   R    R   R   (    (    s?   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/tasks/test_trace.pyR   (   s    (   t   __name__t
   __module__R!   R   (    (    (    s?   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/tasks/test_trace.pyR      s   	t
   test_tracec           B@  s§   e  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 RS(   c         C@  s?   |  j  |  j d i  ƒ \ } } |  j | ƒ |  j | d ƒ d  S(   Ni   i   (   i   i   (   R   R   t   assertIsNonet   assertEqual(   R    t   retvalt   info(    (    s?   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/tasks/test_trace.pyt   test_trace_successful.   s    c         C@  sQ   |  j  j d t d t ƒ  ƒ d „  ƒ } |  j | d i  ƒ |  j | j j ƒ d  S(   NR   t
   on_successc         S@  s   |  | S(   N(    (   R   R   (    (    s?   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/tasks/test_trace.pyt   add_with_success5   s    i   (   i   i   (   R   R   R   R   R   t
   assertTrueR*   t   called(   R    R+   (    (    s?   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/tasks/test_trace.pyt   test_trace_on_success3   s    'c         C@  sQ   |  j  j d t d t ƒ  ƒ d „  ƒ } |  j | d i  ƒ |  j | j j ƒ d  S(   NR   t   after_returnc         S@  s   |  | S(   N(    (   R   R   (    (    s?   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/tasks/test_trace.pyt   add_with_after_return>   s    i   (   i   i   (   R   R   R   R   R   R,   R/   R-   (   R    R0   (    (    s?   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/tasks/test_trace.pyt   test_trace_after_return<   s    'c         C@  sX   t  ƒ  } t j j | ƒ z* |  j |  j d i  ƒ |  j | j ƒ Wd  g  t j j (Xd  S(   Ni   (   i   i   (	   R   R   t   task_prerunt   connectR   R   R,   R-   t	   receivers(   R    t	   on_prerun(    (    s?   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/tasks/test_trace.pyt   test_with_prerun_receiversE   s    	c         C@  sX   t  ƒ  } t j j | ƒ z* |  j |  j d i  ƒ |  j | j ƒ Wd  g  t j j (Xd  S(   Ni   (   i   i   (	   R   R   t   task_postrunR3   R   R   R,   R-   R4   (   R    t
   on_postrun(    (    s?   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/tasks/test_trace.pyt   test_with_postrun_receiversN   s    	c         C@  sX   t  ƒ  } t j j | ƒ z* |  j |  j d i  ƒ |  j | j ƒ Wd  g  t j j (Xd  S(   Ni   (   i   i   (	   R   R   t   task_successR3   R   R   R,   R-   R4   (   R    R*   (    (    s?   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/tasks/test_trace.pyt   test_with_success_receiversW   s    	c         C@  sÛ   |  j  j d t ƒ d „  ƒ } t ƒ  | _ i d d 6d d 6d d 6i  d 6d d 6i  d	 6t d
 6} i d d 6d d 6d d 6i  d 6d d 6i | ƒ  | ƒ  f d 6d	 6t d
 6} | | g } |  j | g  i  d i | d 6ƒd S(   s  
        Regression test on trace with multiple callbacks

        Uses the signature of the following canvas:
            chain(
                empty.subtask(link=empty.subtask()),
                group(empty.subtask(), empty.subtask())
            )
        R   c          _@  s   d  S(   N(    (   R   R   (    (    s?   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/tasks/test_trace.pyt   emptyk   s    t
   chord_sizeR<   R   R   t   optionst   subtask_typeR   t	   immutables   celery.groupt   groupt   taskst   requestt	   callbacksN(    (    (   R   R   R   R   t   backendt   NoneR   (   R    R<   t   sigt	   group_sigRD   (    (    s?   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/tasks/test_trace.pyt   test_multiple_callbacks`   s    $c         C@  sj   |  j  j d t ƒ d „  ƒ } t ƒ  | _ |  j | d i  d i t ƒ  d 6ƒ| j j j | d d ƒ d  S(	   NR   c         S@  s   |  | S(   N(    (   R   R   (    (    s?   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/tasks/test_trace.pyR   €   s    i   RC   t   chordt   SUCCESSi   (   i   i   (	   R   R   R   R   RE   R   R   t   on_chord_part_returnt   assert_called_with(   R    R   (    (    s?   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/tasks/test_trace.pyt   test_when_chord_part~   s    #c      
   C@  s°   |  j  j d t ƒ d „  ƒ } t d d ƒ | _ t ƒ  | j j _ |  j | d i  d t ƒ| j j j	 ƒ  t
 ƒ  | j j _ |  j t
 ƒ  |  j | d i  d t ƒWd  QXd  S(	   NR   c         S@  s   |  | S(   N(    (   R   R   (    (    s?   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/tasks/test_trace.pyR   Š   s    t   nameRE   i   t   eager(   i   i   (   i   i   (   R   R   R   R   RE   t   KeyErrort   process_cleanupt   side_effectR   RM   t   MemoryErrort   assertRaises(   R    R   (    (    s?   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/tasks/test_trace.pyt    test_when_backend_cleanup_raisesˆ   s    c         C@  sS   |  j  j d t ƒ d „  ƒ } |  j | d i  ƒ \ } } |  j | j t j ƒ d  S(   NR   c           S@  s   t  ƒ  ‚ d  S(   N(   R   (    (    (    s?   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/tasks/test_trace.pyt   ignored—   s    (    (   R   R   R   R   R&   t   stateR   t   IGNORED(   R    RW   R'   R(   (    (    s?   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/tasks/test_trace.pyt   test_when_Ignore•   s    c         C@  s6   |  j  t ƒ ! |  j |  j t ƒ  f i  ƒ Wd  QXd  S(   N(   RU   t
   SystemExitR   R   (   R    (    (    s?   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/tasks/test_trace.pyt   test_trace_SystemExitž   s    c         C@  s]   t  d d ƒ } |  j |  j | f i  ƒ \ } } |  j | j t j ƒ |  j | j | ƒ d  S(   Nt   foot   bar(	   R   R   R   R&   RX   R   t   RETRYt   assertIsR'   (   R    R   t   _R(   (    (    s?   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/tasks/test_trace.pyt   test_trace_Retry¢   s    !c         C@  sZ   t  d ƒ } |  j |  j | f i  ƒ \ } } |  j | j t j ƒ |  j | j | ƒ d  S(   NR]   (	   RQ   R   R   R&   RX   R   t   FAILURER`   R'   (   R    R   Ra   R(   (    (    s?   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/tasks/test_trace.pyt   test_trace_exception¨   s    !c      
   C@  s?   |  j  t ƒ * |  j |  j t d ƒ f i  d t ƒWd  QXd  S(   NR]   R   (   RU   RQ   R   R   R   (   R    (    (    s?   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/tasks/test_trace.pyt   test_trace_exception_propagate®   s    s   celery.app.trace.build_tracers&   celery.app.trace.report_internal_errorc         C@  sy   t  ƒ  } t d ƒ | _ | | _ |  j j d t ƒ d „  ƒ } t | d d i  ƒ |  j | j	 ƒ |  j
 | j | ƒ d  S(   NR]   R   c           S@  s   d  S(   N(    (    (    (    s?   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/tasks/test_trace.pyt   xtask¹   s    R   (    (   R   RQ   RS   t   return_valueR   R   R   R   R,   t
   call_countR`   t	   __trace__(   R    t   report_internal_errort   build_tracert   tracerRf   (    (    s?   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/tasks/test_trace.pyt   test_outside_body_error²   s    		(   R"   R#   R)   R.   R1   R6   R9   R;   RI   RN   RV   RZ   R\   Rb   Rd   Re   R   Rm   (    (    (    s?   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/tasks/test_trace.pyR$   ,   s    													
								t   test_TraceInfoc           B@  s'   e  Z d  e f d „  ƒ  YZ d „  Z RS(   t   TIc           B@  s   e  Z e j d Z RS(   t   __dict__(   Rp   (   R"   R#   R   t	   __slots__(    (    (    s?   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/tasks/test_trace.pyRo   Ä   s   c         C@  sQ   |  j  t j ƒ } t ƒ  | _ | j |  j ƒ | j j |  j d |  j j ƒd  S(   Nt   store_errors(	   Ro   R   Rc   R   t   handle_failuret   handle_error_stateR   RM   t   store_errors_even_if_ignored(   R    R   (    (    s?   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/tasks/test_trace.pyt   test_handle_error_stateÇ   s    		(   R"   R#   R   Ro   Rv   (    (    (    s?   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/tasks/test_trace.pyRn   Â   s   t   test_stackprotectionc           B@  s   e  Z d  „  Z RS(   c         @  s`   t  |  j ƒ zD |  j j d t d t ƒ ‡  f d †  ƒ ‰  |  j ˆ  d ƒ j ƒ Wd  t ƒ  Xd  S(   NR   t   bindc         @  s   | r ˆ  d ƒ S|  j  S(   Ni    (   RC   (   R    t   i(   R]   (    s?   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/tasks/test_trace.pyR]   Ö   s    
i   (   R	   R   R   R   R   R,   t   called_directlyR
   (   R    (    (   R]   s?   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/tasks/test_trace.pyRw   Ó   s
    *(   R"   R#   Rw   (    (    (    s?   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/tasks/test_trace.pyRw   Ñ   s   N(    (   t
   __future__R    t   celeryR   R   R   t   celery.exceptionsR   R   t   celery.app.traceR   R   R   R	   R
   t   celery.tests.caseR   R   R   R   R   R   R$   Rn   Rw   (    (    (    s?   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/tasks/test_trace.pyt   <module>   s   (–