σ
P'^c           @@  sH  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
 d  d l m Z d  d l m Z m Z m Z d  d	 l m Z m Z d
   Z d e f d     YZ d e f d     YZ d e f d     YZ e d    Z d e f d     YZ d e f d     YZ d e f d     YZ d S(   i    (   t   absolute_import(   t   contextmanager(   t   group(   t   canvas(   t   result(   t
   ChordErrort   Retry(   t   range(   t   AsyncResultt   GroupResultt   EagerResult(   t   AppCaset   Mockc         C@  s   |  S(   N(    (   t   x(    (    s?   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/tasks/test_chord.pyt   passthru   s    t	   ChordCasec           B@  s   e  Z d    Z RS(   c         C@  s+   |  j  j d t  d    } | |  _ d  S(   Nt   sharedc         S@  s   |  | S(   N(    (   R   t   y(    (    s?   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/tasks/test_chord.pyt   add   s    (   t   appt   taskt   FalseR   (   t   selfR   (    (    s?   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/tasks/test_chord.pyt   setup   s    (   t   __name__t
   __module__R   (    (    (    s?   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/tasks/test_chord.pyR      s   t   TSRc           B@  s8   e  Z e Z d Z d    Z e d  Z e Z d   Z	 RS(   c         C@  s   |  j  S(   N(   t   is_ready(   R   (    (    s?   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/tasks/test_chord.pyt   ready    s    c         K@  s<   | r5 x, |  j  D] } t | t  r |  q q Wn  |  j  S(   N(   t   valuet
   isinstancet	   Exception(   R   t	   propagatet   kwargsR   (    (    s?   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/tasks/test_chord.pyt   join#   s
    c         c@  s;   x4 |  j  D]) } t | t  r
 t d | d  Vq
 q
 Wd  S(   Nt   some_idt   FAILURE(   R   R   R   R
   (   R   R   (    (    s?   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/tasks/test_chord.pyt   _failed_join_report+   s    N(
   R   R   t   TrueR   t   NoneR   R   R"   t   join_nativeR%   (    (    (    s?   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/tasks/test_chord.pyR      s   	t   TSRNoReportc           B@  s   e  Z d    Z RS(   c         C@  s
   t  g   S(   N(   t   iter(   R   (    (    s?   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/tasks/test_chord.pyR%   3   s    (   R   R   R%   (    (    (    s?   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/tasks/test_chord.pyR)   1   s   c         c@  sU   |  j  d } t   } t   | _ | j | } | _ z | | f VWd  | | _ Xd  S(   Ns   celery.chord_unlock(   t   tasksR   R   t   return_valuet   retry(   R   t   unlockR-   t   prev(    (    s?   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/tasks/test_chord.pyt   patch_unlock_retry7   s    	t   test_unlock_chord_taskc           B@  sP   e  Z d    Z d   Z d   Z d   Z e d d   Z d   Z	 d   Z
 RS(   c      	   C@  sy   d t  f d     Y} |  j |  N \ } } } | j j j d d d d g f i  d | j |  j | j  Wd  QXd  S(   Nt   AlwaysReadyc           B@  s    e  Z e Z d  d d d g Z RS(   i   i   i   i   (   R   R   R&   R   R   (    (    (    s?   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/tasks/test_chord.pyR2   G   s   i   i   i   i   t   task_id(   R   t   _chord_contextt   typet   apply_asynct   assert_called_witht   idt   assertFalset
   call_count(   R   R2   t   cbR-   t   _(    (    s?   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/tasks/test_chord.pyt   test_unlock_readyE   s
    "c         C@  s   d t  f d     Y} d   } |  j | |  Y \ } } } |  j | j  |  j | j d d | j  |  j | j d d t  Wd  QXd  S(   NR2   c           B@  s    e  Z e Z d  d d d g Z RS(   i   i   i   i   (   R   R   R&   R   R   (    (    (    s?   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/tasks/test_chord.pyR2   T   s   c         S@  s   t    |  j _ d  S(   N(   t   IOErrorR6   t   side_effect(   t   callback(    (    s?   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/tasks/test_chord.pyR   X   s    i    i   t   exc(	   R   R4   t
   assertTruet   calledt   assertEqualt	   call_argsR8   t   assertIsInstanceR   (   R   R2   R   R;   R-   t   fail(    (    s?   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/tasks/test_chord.pyt   test_callback_failsR   s    	c      	   C@  sΛ   d t  f d     Y} |  j |    \ } } } |  j | j j j  |  j | j  |  j | j  |  j | j	 d d | j
  |  j | j	 d d t  |  j d t | j	 d d   Wd  QXd  S(   Nt   Failedc           B@  s&   e  Z e Z d  e d  d d g Z RS(   i   t   fooi   i   (   R   R   R&   R   t   KeyErrorR   (    (    (    s?   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/tasks/test_chord.pyRI   f   s   i    i   RA   R#   (   R   R4   R9   R5   R6   RC   R:   RB   RD   RE   R8   RF   R   t   assertInt   str(   R   RI   R;   R-   t   fail_current(    (    s?   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/tasks/test_chord.pyt   test_unlock_ready_failedd   s    c         C@  s   d t  f d     Y} |  j |  Y \ } } } |  j | j  |  j | j d d | j  |  j | j d d t  Wd  QXd  S(   NRI   c           B@  s&   e  Z e Z d  e d  d d g Z RS(   i   RJ   i   i   (   R   R   R&   R   RK   R   (    (    (    s?   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/tasks/test_chord.pyRI   x   s   i    i   RA   (	   R)   R4   RB   RC   RD   RE   R8   RF   R   (   R   RI   R;   R-   RN   (    (    s?   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/tasks/test_chord.pyt#   test_unlock_ready_failed_no_culpritw   s    c         k@  se  |  j  j d t  d    } |  j  j   t j | } t _ t   | _ | j   } d | _	 t   } |  j  j
 _ zί t |  j   Κ \ } }	 t j t }
 t _ | rΆ | |  n  z| |  j  j d | k sΥ t  yH | d | d g  d d d	 g D] } |  j  j |  ^ qτ d
 | | Wn t k
 r0n XWd  |
 t _ X| |	 | f VWd  QXWd  | t _ Xd  S(   NR   c          _@  s   d  S(   N(    (   t   argsR!   (    (    s?   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/tasks/test_chord.pyR@      s    t   callback_ids   celery.chord_unlockt   group_idR   t   1i   i   R	   (   R   R   R   t   finalizeR   R	   R   R6   t   sR8   t   backendt   fail_from_current_stackR0   R   t   maybe_signatureR   R+   t   AssertionErrorR   R   (   R   t	   ResultClsR   R!   R@   t   ptst
   callback_sRN   R.   R-   t   subtaskt   r(    (    s?   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/tasks/test_chord.pyR4      s0    		.
c      	   C@  ss   d t  f d     Y} |  j | d d d d < \ } } } |  j | j j j  | j d d d d  Wd  QXd  S(   Nt
   NeverReadyc           B@  s   e  Z e Z RS(    (   R   R   R   R   (    (    (    s?   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/tasks/test_chord.pyR`   «   s   t   intervali
   t   max_retriesi   t	   countdown(   R   R4   R9   R5   R6   RC   R7   (   R   R`   R;   R-   R<   (    (    s?   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/tasks/test_chord.pyt   test_when_not_readyͺ   s
    c         C@  s   |  j  d |  j j  d  S(   Ns   celery.chord_unlock(   RL   R   R+   (   R   (    (    s?   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/tasks/test_chord.pyt   test_is_in_registry΄   s    N(   R   R   R=   RH   RO   RP   R   R'   R4   Rd   Re   (    (    (    s?   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/tasks/test_chord.pyR1   C   s   				$	
t
   test_chordc           B@  s   e  Z d    Z d   Z RS(   c         @  sΕ   d d l  m } |  j j d t  d      |  j j d t  d    } t |  j j _ |   f d   t d  D  } | j	   } | |  } |  j
 | j   t d   t d  D   d  S(	   Ni    (   t   chordR   c         S@  s   |  | S(   N(    (   R   R   (    (    s?   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/tasks/test_chord.pyt   addX½   s    c         S@  s
   t  |   S(   N(   t   sum(   t   n(    (    s?   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/tasks/test_chord.pyt   sumXΑ   s    c         3@  s!   |  ] }   j  | |  Vq d  S(   N(   RV   (   t   .0t   i(   Rh   (    s?   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/tasks/test_chord.pys	   <genexpr>Ζ   s    i
   c         s@  s   |  ] } | | Vq d  S(   N(    (   Rl   Rm   (    (    s?   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/tasks/test_chord.pys	   <genexpr>Ι   s    (   t   celeryRg   R   R   R   R&   t   conft   CELERY_ALWAYS_EAGERR   RV   RD   t   getRi   (   R   Rg   Rk   R   t   bodyR   (    (   Rh   s?   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/tasks/test_chord.pyt
   test_eagerΊ   s    "c         @  sμ   t    j j _ d d l m } t   } t  | j j _ t | _ | j | } | _ z |   f d   t	 d  D  }   j
 j d  } | |  }   j | j    j t   | j d Wd  QX  j | j j  Wd  | | _ Xd  S(   Ni    (   Rg   c         3@  s$   |  ] }   j  j | |  Vq d  S(   N(   R   RV   (   Rl   Rm   (   R   (    s?   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/tasks/test_chord.pys	   <genexpr>Τ   s    i
   i   R3   (   R   R   Ro   Rp   Rn   Rg   R   R   t   _typeR   R   RV   RB   R8   t   assertRaisesRK   t   optionsRC   (   R   Rg   t   mR/   R   Rr   R   (    (   R   s?   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/tasks/test_chord.pyt
   test_applyΛ   s    		"(   R   R   Rs   Rx   (    (    (    s?   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/tasks/test_chord.pyRf   Έ   s   	t   test_Chord_taskc           B@  s   e  Z d    Z RS(   c         @  sΝ   t      j _ t      j j _ d   j j j _   j j d } t   } | t   f d   t d  D  |  | g  t d  D] }   j	 j
 | | f  ^ q |    j   j j j j d  d  S(   Nt   cleanups   celery.chordc         3@  s'   |  ] }   j  j | | f  Vq d  S(   N(   R   R^   (   Rl   Rm   (   R   (    s?   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/tasks/test_chord.pys	   <genexpr>ι   s    i   i   (   R   R   RW   Rz   R   R+   t   dictR   R   R   R^   RD   t   apply_chordR:   (   R   t   ChordRr   t   j(    (   R   s?   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/tasks/test_chord.pyt   test_runβ   s    	)8(   R   R   R   (    (    (    s?   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/tasks/test_chord.pyRy   ΰ   s   N(   t
   __future__R    t
   contextlibR   Rn   R   R   R   t   celery.exceptionsR   R   t   celery.fiveR   t   celery.resultR   R	   R
   t   celery.tests.caseR   R   R   R   R   R)   R0   R1   Rf   Ry   (    (    (    s?   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/tasks/test_chord.pyt   <module>   s    	
u(