ó
P'—^c           @@  s.  d  d l  m Z d  d l Z d  d l Z d  d l 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 d  d l m Z d  d	 l m Z d  d
 l m Z m Z m Z d  d l m Z d  d l m Z m Z m Z m Z m Z d e f d „  ƒ  YZ  d e f d „  ƒ  YZ! d S(   i    (   t   absolute_importN(   t   contextmanager(   t	   timedelta(   t   dumpst   loads(   t   ExceptionInfo(   t   states(   t   AMQPBackend(   t   TimeoutError(   t   Emptyt   Queuet   range(   t   uuid(   t   AppCaset   Mockt   depends_on_current_appt   patcht   sleepdeprivedt	   SomeClassc           B@  s   e  Z d  „  Z RS(   c         C@  s   | |  _  d  S(   N(   t   data(   t   selfR   (    (    sA   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/backends/test_amqp.pyt   __init__   s    (   t   __name__t
   __module__R   (    (    (    sA   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/backends/test_amqp.pyR      s   t   test_AMQPBackendc           B@  s.  e  Z d  „  Z d „  Z e d „  ƒ Z d „  Z d „  Z d „  Z d „  Z	 d „  Z
 d „  Z d	 „  Z e ƒ  d
 „  ƒ 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 d „  Z d „  Z  d „  Z! d „  Z" RS(   c         K@  s.   t  t  d d d t ƒ |  } t |  j |  S(   Nt
   serializert   picklet
   persistent(   t   dictt   TrueR   t   app(   R   t   opts(    (    sA   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/backends/test_amqp.pyt   create_backend    s    c         C@  s¨   |  j  d d ƒ } |  j  d d ƒ } t ƒ  } | j | d ƒ |  j | j | ƒ t j ƒ |  j | j | ƒ d ƒ |  j | j	 j
 | ƒ ƒ |  j | j | ƒ d ƒ d  S(   Nt   max_cached_resultsi   i*   (   R    R   t   mark_as_donet   assertEqualt
   get_statusR   t   SUCCESSt
   get_resultt
   assertTruet   _cachet   get(   R   t   tb1t   tb2t   tid(    (    sA   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/backends/test_amqp.pyt   test_mark_as_done$   s    	c         C@  s#   |  j  t t |  j ƒ  ƒ ƒ ƒ d  S(   N(   R'   R   R   R    (   R   (    (    sA   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/backends/test_amqp.pyt   test_pickleable0   s    c         C@  s   |  j  ƒ  } | j d  ƒ d  S(   N(   R    t   revivet   None(   R   t   tb(    (    sA   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/backends/test_amqp.pyt   test_revive4   s    c         C@  s“   |  j  ƒ  } |  j  ƒ  } t ƒ  } i d d 6t d ƒ d 6} | j | | ƒ | j | ƒ } |  j | j d ƒ d ƒ |  j | j d ƒ j d ƒ d  S(   Nt   bazt   fooi90  t   bar(   R    R   R   R"   R&   R#   R)   R   (   R   R*   R+   t   tid2t   resultt   rindb(    (    sA   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/backends/test_amqp.pyt   test_is_pickled8   s    	c         C@  s¾   |  j  ƒ  } |  j  ƒ  } t ƒ  } y t d ƒ ‚ Wn† t k
 r¹ } t ƒ  } | j | | d | j ƒ|  j | j | ƒ t j	 ƒ |  j
 | j | ƒ t ƒ |  j | j | ƒ | j ƒ n Xd  S(   NR4   t	   traceback(   R    R   t   KeyErrorR   t   mark_as_failureR:   R#   R$   R   t   FAILUREt   assertIsInstanceR&   t   get_traceback(   R   R*   R+   t   tid3t	   exceptiont   einfo(    (    sA   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/backends/test_amqp.pyt   test_mark_as_failureD   s    		c         C@  sV   d d l  m } x? t d ƒ D]1 } t ƒ  } |  j | | j d d ƒ ƒ | ƒ q Wd  S(   Ni    (   t   repair_uuidi
   t   -t    (   t   celery.backends.amqpRD   R   R   R#   t   replace(   R   RD   t   iR,   (    (    sA   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/backends/test_amqp.pyt   test_repair_uuidR   s    	c         C@  s2   |  j  d d ƒ } |  j | j j d ƒ d ƒ d  S(   Nt   expiresi0   s	   x-expiresg     @@g     pç@(   R    R#   t   queue_argumentsR)   (   R   t   b(    (    sA   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/backends/test_amqp.pyt   test_expires_is_intX   s    c         C@  s2   |  j  d d ƒ } |  j | j j d ƒ d ƒ d  S(   NRK   gfffff&H@s	   x-expiresg     @@g    €•ç@(   R    R#   RL   R)   (   R   RM   (    (    sA   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/backends/test_amqp.pyt   test_expires_is_float\   s    c         C@  s;   |  j  d t d d ƒ ƒ } |  j | j j d ƒ d ƒ d  S(   NRK   t   minutesi   s	   x-expiresi<   g     @@g     Lí@(   R    R   R#   RL   R)   (   R   RM   (    (    sA   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/backends/test_amqp.pyt   test_expires_is_timedelta`   s    c      	   @  s×   d g ‰  d g ‰ ‡  ‡ f d †  } t  |  j ƒ } d d l m } | j | } | _ zp |  j t ƒ % d  | j d <| j	 d d d ƒ Wd  QX|  j t ƒ % d	 | j d <| j	 d d d ƒ Wd  QXWd  | | _ Xd  S(
   Ni    i   c          @  s8   ˆ  d ˆ d k r d  Sˆ  d c d 7<t  d ƒ ‚ d  S(   Ni    i   R4   (   R;   (   t   argst   kwargs(   t
   iterationst   stop_raising_at(    sA   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/backends/test_amqp.pyt   publishi   s    (   t   TaskProducert   max_retriesR4   R5   t   STARTEDi
   (
   R   R   t   celery.app.amqpRW   RV   t   assertRaisesR;   R0   t   retry_policyt   store_result(   R   RV   t   backendRW   t   prod(    (   RT   RU   sA   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/backends/test_amqp.pyt   test_store_result_retriesd   s    		c         C@  s   |  j  | d | ƒ d  S(   Nt   status(   R#   (   R   t   retvalt   state(    (    sA   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/backends/test_amqp.pyt   assertState}   s    c         C@  s/   |  j  ƒ  } |  j | j t ƒ  ƒ t j ƒ d  S(   N(   R    Rd   t   get_task_metaR   R   t   PENDING(   R   RM   (    (    sA   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/backends/test_amqp.pyt   test_poll_no_messages€   s    R   c         #@  s™   t  ƒ  ‰ d t f ‡ f d †  ƒ  Y} d t f ‡ f d †  ƒ  Y‰  d t f ‡  f d †  ƒ  Y} | |  j d d ƒ} ˆ | _ t ƒ  | _ ˆ | | f Vd  S(	   Nt   Messagec           @  s5   e  Z d  Z d  Z ‡  f d †  Z d „  Z d „  Z RS(   i    c         @  s{   t  i t j d 6d  d 6|  |  _ ˆ  d k rP t j |  j ƒ |  _ d |  _ n' t	 j |  j ƒ |  _ d |  _ d |  _
 d  S(   NRa   R7   t   jsons   application/jsons   application/x-python-serializet   binary(   R   R   RY   R0   t   payloadRi   R   t   bodyt   content_typeR   t   content_encoding(   R   t   merge(   R   (    sA   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/backends/test_amqp.pyR   Œ   s    	c         _@  s   |  j  d 7_  d  S(   Ni   (   t   acked(   R   RR   RS   (    (    sA   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/backends/test_amqp.pyt   ack—   s    c         _@  s   |  j  d 7_  d  S(   Ni   (   t   requeued(   R   RR   RS   (    (    sA   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/backends/test_amqp.pyt   requeueš   s    (   R   R   Rp   Rr   R   Rq   Rs   (    (   R   (    sA   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/backends/test_amqp.pyRh   ˆ   s
   	t   MockBindingc           @  sA   e  Z d  „  Z d „  Z d „  Z e d ‡  f d † Z d „  Z RS(   c         _@  s   t  ƒ  |  _ d  S(   N(   R   t   channel(   R   RR   RS   (    (    sA   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/backends/test_amqp.pyR   Ÿ   s    c         _@  s   |  S(   N(    (   R   RR   RS   (    (    sA   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/backends/test_amqp.pyt   __call__¢   s    c         S@  s   d  S(   N(    (   R   (    (    sA   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/backends/test_amqp.pyt   declare¥   s    c         @  sD   y, ˆ  j  d t ƒ } | r' | | _ n  | SWn t k
 r? n Xd  S(   Nt   block(   R)   t   Falset   acceptR	   (   R   t   no_ackRz   t   m(   t   results(    sA   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/backends/test_amqp.pyR)   ¨   s    c         S@  s   t  S(   N(   R   (   R   (    (    sA   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/backends/test_amqp.pyt   is_bound±   s    N(	   R   R   R   Rv   Rw   Ry   R0   R)   R~   (    (   R}   (    sA   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/backends/test_amqp.pyRt      s
   				t   MockBackendc           @  s   e  Z ˆ  Z RS(    (   R   R   R
   (    (   Rt   (    sA   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/backends/test_amqp.pyR   ´   s   R!   id   (   R
   t   objectR   R   R   R   t
   _republish(   R   R   Rh   R   R^   (    (   Rt   R}   R   sA   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/backends/test_amqp.pyt   _result_context„   s    		c         C@  s~   |  j  ƒ  l \ } } } x3 t d ƒ D]% } | j | d d d t j ƒ ƒ q% W|  j | j ƒ  | j d ƒ Wd  QXWd  QXd  S(   Nié  t   task_idt   idRa   (   R‚   R   t   putR   t   RECEIVEDR[   t   BacklogLimitExceededRe   (   R   R}   R^   Rh   RI   (    (    sA   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/backends/test_amqp.pyt   test_backlog_limit_exceeded½   s
    #c         C@  sr  |  j  ƒ  `\ } } } t ƒ  } | d | d t j d d ƒ | d | d t j d d ƒ | d | d t j d d ƒ g } x | D] } | j | ƒ q W| j | ƒ } |  j i t j d 6d d 6| d ƒ t ƒ  } | j | d | ƒ ƒ | j | ƒ |  j	 | | j
 d ƒ |  j | d	 j ƒ | j j ƒ  | j ƒ  s?t ‚ d
 | j
 | <|  j | j | ƒ d
 d ƒ Wd  QXd  S(   NRƒ   Ra   t   seqi   i   i   s   FFWDs to the last states   Caches last known stateiÿÿÿÿt   hellos   Returns cache if no new states(   R‚   R   R   R†   RY   R=   R…   Re   t   assertDictContainsSubsett   assertInR(   R'   Rr   t   queuet   cleart   qsizet   AssertionErrorR#   (   R   R}   R^   Rh   R,   t   state_messagest   state_messaget   r1(    (    sA   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/backends/test_amqp.pyt   test_poll_resultÄ   s0    	!

	c         C@  sÃ  |  j  d d ƒ «\ } } } t ƒ  } | d | d t j d d ƒ | d | d t j d d ƒ | d | d t j d d d	 i d
 d 6d d 6ƒ g } x | D] } | j | ƒ q™ W| j | ƒ } |  j i t j d 6d d 6| d ƒ |  j	 t
 | d	 ƒ j d
 ƒ |  j t | d	 ƒ d ƒ t ƒ  } | j | d | ƒ ƒ | j | ƒ |  j | | j d ƒ |  j | d j ƒ | j j ƒ  | j ƒ  st ‚ d | j | <|  j | j | ƒ d d ƒ Wd  QXd  S(   NR   Ri   Rƒ   Ra   R‰   i   i   i   R7   t   RuntimeErrort   exc_typeR   t   exc_messages   FFWDs to the last states   Caches last known stateiÿÿÿÿRŠ   s   Returns cache if no new states(   R‚   R   R   R†   RY   R=   R…   Re   R‹   t   assertEqualst   typeR   R#   t   strRŒ   R(   R'   Rr   R   RŽ   R   R   (   R   R}   R^   Rh   R,   R‘   R’   R“   (    (    sA   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/backends/test_amqp.pyt$   test_poll_result_for_json_serializerè   s:    		

	c         C@  s÷  |  j  ƒ  } t ƒ  } |  j t ƒ  | j | d d ƒWd  QX| j | d  t j ƒ |  j t ƒ  | j | d d ƒWd  QX| j | d  t j	 ƒ |  j t ƒ  | j | d d ƒWd  QX| j | d t j
 ƒ |  j | j | d d ƒd d ƒ | j | d t j
 ƒ |  j | j | d d ƒd d d ƒ |  j | j | d d d t ƒd d ƒ | j | t d	 ƒ t j ƒ | j | d d d t ƒ} |  j | d
 t j ƒ | j | t d	 ƒ t j ƒ |  j t ƒ  | j | d d d t ƒWd  QXd  S(   Nt   timeoutgš™™™™™¹?i*   i   R7   i8   s   result is cachedt   cacheR4   Ra   g{®Gáz„?(   R    R   R[   R   t   wait_forR]   R0   R   RY   t   RETRYR%   R#   Ry   R;   R=   Rf   (   R   RM   R,   t   res(    (    sA   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/backends/test_amqp.pyt   test_wait_for  s,    	#)c         C@  s©   d t  f d „  ƒ  Y} |  j ƒ  } |  j j j d t ƒ i \ } } | j t ƒ  ƒ } | j | | d t	 ƒ} |  j
 t j ƒ  | j | ƒ  | d d ƒWd  QXWd  QXd  S(   Nt
   Connectionc           B@  s   e  Z d d  „ Z RS(   c         S@  s   d  S(   N(    (   R   Rœ   (    (    sA   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/backends/test_amqp.pyt   drain_events.  s    N(   R   R   R0   R£   (    (    (    sA   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/backends/test_amqp.pyR¢   ,  s   Rx   R{   Rœ   gš™™™™™¹?(   R€   R    R   t   poolt   acquire_channelRy   t   _create_bindingR   t   ConsumerR   R[   t   socketRœ   R£   (   R   R¢   RM   t   _Ru   t   bindingt   consumer(    (    sA   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/backends/test_amqp.pyt$   test_drain_events_remaining_timeouts*  s    !c   	   
   C@  së  |  j  d d ƒ } g  } x@ t d ƒ D]2 } t ƒ  } | j | | t j ƒ | j | ƒ q% Wt | j | d d ƒƒ } g  t	 | ƒ D]> \ } } | i t j d 6| d 6d  d 6| d 6d  d	 6f ^ qƒ } |  j t | ƒ t | ƒ ƒ |  j | j | d
 d
 | d
 d ƒ t | j | d d ƒƒ } |  j t | ƒ t | ƒ ƒ t j | j | d
 d
 d <|  j t j ƒ  t | j | d d ƒƒ Wd  QX|  j t j ƒ D t ƒ  g } | j | d
 | t j ƒ t | j | d d ƒƒ Wd  QXd  S(   NR!   i
   Rœ   i   Ra   R7   R:   Rƒ   t   childreni    g{®Gáz„?(   R    R   R   R]   R   R%   t   appendt   listt   get_manyt	   enumerateR0   R#   t   sortedt   assertDictEqualR(   RŸ   R[   R¨   Rœ   Rf   (	   R   RM   t   tidsRI   R,   R    Rƒ   t   expected_resultst
   cached_res(    (    sA   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/backends/test_amqp.pyt   test_get_many8  s(    	N'c         C@  sU   d t  f d „  ƒ  Y} | |  j ƒ } |  j t ƒ  t | j d g ƒ ƒ Wd  QXd  S(   Nt   Backendc           B@  s   e  Z d  „  Z RS(   c          _@  s   t  d ƒ ‚ d  S(   NR4   (   R;   (   RR   RS   (    (    sA   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/backends/test_amqp.pyR§   `  s    (   R   R   R§   (    (    (    sA   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/backends/test_amqp.pyR¸   ^  s   t   id1(   R   R   R[   R;   t   nextR°   (   R   R¸   RM   (    (    sA   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/backends/test_amqp.pyt    test_get_many_raises_outer_block\  s    c         C@  sc   t  d ƒ Q } t d ƒ | _ t |  j ƒ } |  j t ƒ  t | j d g ƒ ƒ Wd  QXWd  QXd  S(   Ns(   kombu.connection.Connection.drain_eventsR4   R¹   (   R   R;   t   side_effectR   R   R[   Rº   R°   (   R   t   drainRM   (    (    sA   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/backends/test_amqp.pyt    test_get_many_raises_inner_blockg  s
    c         @  si   t  d ƒ W ‰  ‡  f d †  } | ˆ  _ t |  j ƒ } |  j t ƒ  t | j d ƒ ƒ Wd  QXWd  QXd  S(   Ns(   kombu.connection.Connection.drain_eventsc          @  s   t  ƒ  ˆ  _ t d ƒ ‚ d  S(   NR4   (   t
   ValueErrorR¼   R;   (   RR   RS   (   R½   (    sA   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/backends/test_amqp.pyt   seq  s    R¹   (   R   R¼   R   R   R[   R¿   Rº   t   consume(   R   RÀ   RM   (    (   R½   sA   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/backends/test_amqp.pyt   test_consume_raises_inner_blockn  s    	c         C@  s^   |  j  d d  ƒ } |  j } d  | j _ |  j  d d  ƒ } |  j t ƒ  | j d Wd  QXd  S(   NRK   s	   x-expires(   R    R0   R   t   conft   CELERY_TASK_RESULT_EXPIRESR[   R;   RL   (   R   RM   R   (    (    sA   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/backends/test_amqp.pyt   test_no_expiresy  s    	c         C@  s   |  j  ƒ  j ƒ  d  S(   N(   R    t   process_cleanup(   R   (    (    sA   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/backends/test_amqp.pyt   test_process_cleanup  s    c         C@  s-   |  j  t ƒ  |  j ƒ  j d ƒ Wd  QXd  S(   Nt   x(   R[   t   NotImplementedErrorR    t   reload_task_result(   R   (    (    sA   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/backends/test_amqp.pyt   test_reload_task_result„  s    c         C@  s-   |  j  t ƒ  |  j ƒ  j d ƒ Wd  QXd  S(   NRÈ   (   R[   RÉ   R    t   reload_group_result(   R   (    (    sA   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/backends/test_amqp.pyt   test_reload_group_resultˆ  s    c         C@  s0   |  j  t ƒ  |  j ƒ  j d d ƒ Wd  QXd  S(   NRÈ   (   R[   RÉ   R    t
   save_group(   R   (    (    sA   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/backends/test_amqp.pyt   test_save_groupŒ  s    c         C@  s-   |  j  t ƒ  |  j ƒ  j d ƒ Wd  QXd  S(   NRÈ   (   R[   RÉ   R    t   restore_group(   R   (    (    sA   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/backends/test_amqp.pyt   test_restore_group  s    c         C@  s-   |  j  t ƒ  |  j ƒ  j d ƒ Wd  QXd  S(   NRÈ   (   R[   RÉ   R    t   delete_group(   R   (    (    sA   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/backends/test_amqp.pyt   test_delete_group”  s    (#   R   R   R    R-   R   R.   R2   R9   RC   RJ   RN   RO   RQ   R   R`   Rd   Rg   R   R‚   Rˆ   R”   R›   R¡   R¬   R·   R»   R¾   RÂ   RÅ   RÇ   RË   RÍ   RÏ   RÑ   RÓ   (    (    (    sA   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/backends/test_amqp.pyR      s>   											8		$	)			$									("   t
   __future__R    Ri   R   R¨   t
   contextlibR   t   datetimeR   R   R   t   billiard.einfoR   t   celeryR   RG   R   t   celery.exceptionsR   t   celery.fiveR	   R
   R   t   celery.utilsR   t   celery.tests.caseR   R   R   R   R   R€   R   R   (    (    (    sA   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/backends/test_amqp.pyt   <module>   s   (