ó
P'—^c           @@ sÃ  d  d l  m Z m Z d  d l m Z d  d l m Z d  d l 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 m Z m Z m Z m Z m Z m Z m Z m Z m Z d  d l m Z m  Z  d  d l! m" Z" m# Z# m$ Z$ m% Z% e& e _' d	 d
 d d d d „ Z) d e" f d „  ƒ  YZ* d e" f d „  ƒ  YZ+ d e" f d „  ƒ  YZ, d e" f d „  ƒ  YZ- d e" f d „  ƒ  YZ. d e" f d „  ƒ  YZ/ d e" f d „  ƒ  YZ0 d S(   i    (   t   absolute_importt   unicode_literals(   t   contextmanager(   t   ChannelError(   t
   Connectiont   Producert   Queuet   Exchange(   t   QoS(   t   StopFilteringt   Statet   migrate_taskt   migrate_taskst   filter_callbackt   _maybe_queuet   filter_statust   move_by_taskmapt   move_by_idmapt   move_task_by_idt   start_filtert
   task_id_int
   task_id_eqt   expand_destt   move(   t   bytes_tt   ensure_bytes(   t   AppCaset   Mockt   override_stdoutst   patchu   exchangeu   rkeyu   application/jsonu   utf-8c         C@ sL   t  d i |  d 6i | d 6| d 6d 6i | d 6d 6| d 6| d	 6i  d
 6ƒ S(   Nt   attrsu   bodyu   exchangeu   routing_keyu   delivery_infou   compressionu   headersu   content_typeu   content_encodingu
   properties(   R   (   t   bodyt   exchanget   routing_keyt   compressiont   content_typet   content_encoding(    (    sC   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/contrib/test_migrate.pyt   Message#   s    t
   test_Statec           B@ s   e  Z d  „  Z d „  Z RS(   c         C@ s<   t  ƒ  } |  j | j d ƒ d | _ |  j | j d ƒ d  S(   Nu   ?id   u   100(   R
   t   assertEqualt   strtotalt	   total_apx(   t   selft   x(    (    sC   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/contrib/test_migrate.pyt   test_strtotal9   s    		c         C@ s<   t  ƒ  } |  j t | ƒ ƒ d | _ |  j t | ƒ ƒ d  S(   Nu   foo(   R
   t
   assertTruet   reprt   filtered(   R*   R+   (    (    sC   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/contrib/test_migrate.pyt	   test_repr?   s    		(   t   __name__t
   __module__R,   R0   (    (    (    sC   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/contrib/test_migrate.pyR&   7   s   	t	   test_movec           B@ sD   e  Z e d  „  ƒ Z d „  Z d „  Z d „  Z d „  Z d „  Z RS(   c         k@ s‘   t  d ƒ  } t  d ƒ j } t d d ƒ } t | d |  j d |  j j ƒ  | |  j | j ƒ | j d d } | | | f VWd  QXWd  QXd  S(	   Nu#   celery.contrib.migrate.start_filteru    celery.contrib.migrate.republisht   nameu	   predicatet   appt
   connectioni    i   (   R   R   R   R5   R6   R-   t   calledt	   call_args(   R*   t   kwargst   startt	   republisht   predt   callback(    (    sC   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/contrib/test_migrate.pyt   move_contextH   s    c         K@ s-   t  i d d 6d d 6|  } | t | ƒ f S(   Nu   addu   tasku   id(   t   dictR%   (   R*   R9   R   (    (    sC   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/contrib/test_migrate.pyt   msgpairS   s    c         C@ s    |  j  ƒ  Ž \ } } } d  | _ |  j ƒ  \ } } | | | ƒ |  j | j j ƒ |  j | j ƒ d | _ | | | ƒ | j j ƒ  |  j | j ƒ Wd  QXd  S(   Nu   foo(	   R>   t   Nonet   return_valueR@   t   assertFalset   ackR7   t   assert_called_withR-   (   R*   R=   R<   R;   R   t   message(    (    sC   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/contrib/test_migrate.pyR3   W   s    		c         C@ s°   t  d d ƒ } t d ƒ | _ |  j d | ƒ z \ } } } d | _ |  j ƒ  \ } } t d ƒ A } | | | ƒ | j d ƒ |  j | j ƒ |  j | j ƒ Wd  QXWd  QXd  S(   NR4   u	   transformu   bart	   transformu   foou$   celery.contrib.migrate.maybe_declare(	   R   R   RB   R>   R@   R   RE   R-   R7   (   R*   t   transR=   R<   R;   R   RF   t   maybed(    (    sC   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/contrib/test_migrate.pyt   test_move_transformd   s    	c         C@ sv   |  j  d d ƒ ^ \ } } } d | _ |  j ƒ  \ } } |  j t ƒ  | | | ƒ Wd  QX|  j | j ƒ Wd  QXd  S(   Nt   limiti   u   foo(   R>   RB   R@   t   assertRaisesR	   R-   R7   (   R*   R=   R<   R;   R   RF   (    (    sC   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/contrib/test_migrate.pyt
   test_limitp   s    	c         C@ sy   t  ƒ  } |  j d | ƒ X \ } } } d | _ |  j ƒ  \ } } | | | ƒ |  j | j ƒ |  j | j ƒ Wd  QXd  S(   NR=   u   foo(   R   R>   RB   R@   R-   R7   (   R*   t   cbR=   R<   R;   R   RF   (    (    sC   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/contrib/test_migrate.pyt   test_callbackx   s    		(	   R1   R2   R   R>   R@   R3   RJ   RM   RO   (    (    (    sC   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/contrib/test_migrate.pyR3   F   s   				t   test_start_filterc           B@ s   e  Z d  „  Z RS(   c         @ s´  t  d ƒ ¢} t ƒ  } t d d ƒ } t d ƒ } t ƒ  | _ i t d ƒ d 6t d ƒ d 6| j _ t d d ƒ ‰  | j j _	 t
 | j j j ƒ  ƒ ˆ  _ | j ˆ  _ t d d ƒ ˆ  _ t d d	 ƒ ˆ  _ g  ˆ  _ ‡  f d
 †  } | ˆ  _ t | | | d d d t ƒi d d 6d d 6} x$ ˆ  j D] } | | t | ƒ ƒ q'Wg  ˆ  j (t d d ƒ } t | | | d d d | ƒx$ ˆ  j D] } | | t | ƒ ƒ qƒW|  j | j ƒ t ƒ  }	 t | | | d d d d d |	 ƒ|  j |	 j ƒ t | | | d d d g ƒg  ˆ  j (t ƒ  }
 t | | | d d d | d |
 d d ƒt } xB ˆ  j D]7 } y | | t | ƒ ƒ WqRt k
 rˆt } qRXqRW|  j |
 j ƒ |  j | ƒ Wd  QXd  S(   Nu    celery.contrib.migrate.eventloopR4   u   filteru	   memory://u   foou   baru   consumu   consumer.__enter__u   consumer.__exit__c         @ s   ˆ  j  j |  ƒ d  S(   N(   t	   callbackst   append(   R+   (   t   consumer(    sC   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/contrib/test_migrate.pyt   register_callback’   s    t   queuesu   foo,bart   ack_messagesu   addu   tasku   idu	   callback=t   tasksu   add,mulR=   t   on_declare_queuet   stateRK   i   (   R   R   R   R	   t   side_effectR   t   amqpRU   t   TaskConsumerRB   t   listt   valuest   default_channelt   channelt	   __enter__t   __exit__RQ   RT   R   t   TrueR%   R-   R7   R
   t   Falset   count(   R*   t   evloopR5   t   filtt   connRT   R   R=   RN   RX   RY   t   stop_filtering_raised(    (   RS   sC   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/contrib/test_migrate.pyt
   test_start„   sT    	&		
	
	(   R1   R2   Rj   (    (    (    sC   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/contrib/test_migrate.pyRP   ‚   s   t   test_filter_callbackc           B@ s   e  Z d  „  Z RS(   c         C@ s   t  ƒ  } t | d d g ƒ } i d d 6} i d d 6} t  ƒ  } | | | ƒ |  j | j ƒ | | | ƒ | j | | ƒ d  S(   Nu   addu   mulu   tasku   div(   R   R   RC   R7   RE   (   R*   R=   Rg   t   t1t   t2RF   (    (    sC   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/contrib/test_migrate.pyt   test_filter·   s    		(   R1   R2   Rn   (    (    (    sC   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/contrib/test_migrate.pyRk   µ   s   t
   test_utilsc           B@ sP   e  Z d  „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z	 RS(   c         C@ sP   |  j  t d g i d d 6t ƒ  ƒ ƒ |  j t d g i d d 6t ƒ  ƒ ƒ d  S(   Nu   Au   idu   B(   R-   R   R   RC   (   R*   (    (    sC   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/contrib/test_migrate.pyt   test_task_id_inÆ   s    &c         C@ sJ   |  j  t d i d d 6t ƒ  ƒ ƒ |  j t d i d d 6t ƒ  ƒ ƒ d  S(   Nu   Au   idu   B(   R-   R   R   RC   (   R*   (    (    sC   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/contrib/test_migrate.pyt   test_task_id_eqÊ   s    #c         C@ s<   |  j  t d  d d ƒ d ƒ |  j  t d d d ƒ d ƒ d  S(   Nu   foou   baru   bu   x(   u   foou   bar(   u   bu   x(   u   bu   x(   R'   R   RA   (   R*   (    (    sC   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/contrib/test_migrate.pyt   test_expand_destÎ   s    c         C@ s^   t  ƒ  } i d d 6| j _ |  j t | d ƒ d ƒ |  j t | t d ƒ ƒ t d ƒ ƒ d  S(   Ni9  u   foo(   R   R[   RU   R'   R   R   (   R*   R5   (    (    sC   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/contrib/test_migrate.pyt   test_maybe_queueÒ   s    	c      	   C@ sS   t  ƒ  D \ } } t t ƒ  i d d 6d d 6t ƒ  ƒ |  j | j ƒ  ƒ Wd  QXd  S(   Nu   1u   idu   addu   task(   R   R   R
   R   R-   t   getvalue(   R*   t   stdoutt   stderr(    (    sC   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/contrib/test_migrate.pyt   test_filter_statusØ   s    $c      	   C@ sq   t  d ƒ _ } t i t d ƒ d 6ƒ |  j | j ƒ | j d d } |  j | i d d 6t ƒ  ƒ ƒ Wd  QXd  S(   Nu   celery.contrib.migrate.moveu   foou   addi    u   task(   R   R   R   R-   R7   R8   R   (   R*   R   RN   (    (    sC   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/contrib/test_migrate.pyt   test_move_by_taskmapÝ   s
    c      	   C@ sq   t  d ƒ _ } t i t d ƒ d 6ƒ |  j | j ƒ | j d d } |  j | i d d 6t ƒ  ƒ ƒ Wd  QXd  S(   Nu   celery.contrib.migrate.moveu   foou   123fi    u   id(   R   R   R   R-   R7   R8   R   (   R*   R   RN   (    (    sC   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/contrib/test_migrate.pyt   test_move_by_idmapä   s
    c      	   C@ sv   t  d ƒ d } t d t d ƒ ƒ |  j | j ƒ | j d d } |  j | i d d 6t ƒ  ƒ t d ƒ ƒ Wd  QXd  S(   Nu   celery.contrib.migrate.moveu   123fu   fooi    u   id(   R   R   R   R-   R7   R8   R'   R   (   R*   R   RN   (    (    sC   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/contrib/test_migrate.pyt   test_move_task_by_idë   s    (
   R1   R2   Rp   Rq   Rr   Rs   Rw   Rx   Ry   Rz   (    (    (    sC   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/contrib/test_migrate.pyRo   Ä   s   							t   test_migrate_taskc           B@ s   e  Z d  „  Z RS(   c         C@ sã   t  d d d ƒ} t ƒ  } t | | j | ƒ |  j | j j ƒ | j j \ } } |  j | d t	 ƒ |  j
 d | d ƒ |  j | d d ƒ |  j | d d ƒ |  j | d	 d
 ƒ |  j | d d ƒ |  j | d d ƒ d  S(   Nu   fooR"   u   zlibi    u   compressionu   headersu   content_typeu   application/jsonu   content_encodingu   utf-8u   exchangeu   routing_keyu   rkey(   R%   R   R   R   R-   t   publishR7   R8   t   assertIsInstanceR   t   assertNotInR'   (   R*   R+   t   producert   argsR9   (    (    sC   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/contrib/test_migrate.pyt   test_removes_compression_headerø   s    	(   R1   R2   R   (    (    (    sC   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/contrib/test_migrate.pyR{   ö   s   t   test_migrate_tasksc           B@ s   e  Z d  d „ Z RS(   u
   testceleryc         C@ sÛ  t  d ƒ } t  d ƒ } i  | j _ i  | j _ t | d ƒ } t | d | d | ƒ} | | j ƒ j ƒ  t | ƒ j d d | d | ƒt | ƒ j d d | d | ƒt | ƒ j d d | d | ƒ|  j | j j ƒ |  j	 | j j ƒ t
 | | d d	 g d
 |  j ƒ| | j ƒ } |  j | j ƒ  j t d ƒ ƒ |  j | j ƒ  j t d ƒ ƒ |  j | j ƒ  j t d ƒ ƒ t | ƒ j d d | d | ƒt ƒ  } t
 | | d | d d	 g d
 |  j ƒ|  j | j ƒ t ƒ  } t | ƒ j d d | d | ƒt
 | | d | d | d d	 g d
 |  j ƒ|  j | j ƒ t d ƒ / }	 d „  }
 |
 |	 _ t
 | | d
 |  j ƒWd  QXt  d ƒ } i  | j _ i  | j _ t ƒ  } t
 | | d | d d	 g d
 |  j ƒ|  j	 | j ƒ d  S(   Nu   memory://foou   directR    R!   u   foou   baru   bazt   acceptu
   text/plainR5   R=   t   migrateu-   kombu.transport.virtual.Channel.queue_declarec          _@ s"   | j  d ƒ r t d ƒ ‚ n  d S(   Nu   passiveu   some channel errori    i   (   i    i   i    (   t   getR   (   R€   R9   (    (    sC   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/contrib/test_migrate.pyt   effect-  s    u	   memory://(   R   R_   RU   R   R   t   declareR   R|   R-   RC   R   R5   R'   R…   R   R   R   R7   R   RZ   (   R*   R4   R+   t   yt   ext   qt   yqR=   R„   t   qdR†   (    (    sC   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/contrib/test_migrate.pyt   test_migrate	  sL    					(   R1   R2   R   (    (    (    sC   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/contrib/test_migrate.pyR‚     s   N(1   t
   __future__R    R   t
   contextlibR   R[   R   t   kombuR   R   R   R   t   kombu.transport.virtualR   t   celery.contrib.migrateR	   R
   R   R   R   R   R   R   R   R   R   R   R   R   R   t   celery.utils.encodingR   R   t   celery.tests.caseR   R   R   R   Rd   t   restore_at_shutdownRA   R%   R&   R3   RP   Rk   Ro   R{   R‚   (    (    (    sC   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/contrib/test_migrate.pyt   <module>   s$   "d"	<32