ó
O'—^c           @@  s  d  Z  d d l m Z d d l 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 Z e j d d k r– d \ Z Z n4 y d d
 l m Z Wn e k
 rÉ d \ Z Z n Xd e f d „  ƒ  YZ d e f d „  ƒ  YZ d e	 f d „  ƒ  YZ d S(   sÓ   Testing module for the kombu.transport.SQS package.

NOTE: The SQSQueueMock and SQSConnectionMock classes originally come from
http://github.com/pcsforeducation/sqs-mock-python. They have been patched
slightly.
i    (   t   absolute_importN(   t
   Connection(   t	   messaging(   t   five(   t   Caset   SkipTesti   s   boto does not support Python 3(   t   SQSs   boto not installedt   SQSQueueMockc           B@  sn   e  Z d  „  Z d d d „ Z d d d „ Z e Z d „  Z d „  Z d d
 d
 d „ Z	 d
 d „ Z
 d	 „  Z RS(   c         C@  s   | |  _  g  |  _ d |  _ d  S(   Ni    (   t   namet   messagest   _get_message_calls(   t   selfR   (    (    s@   /tmp/pip-unpacked-wheel-UAnTfW/kombu/tests/transport/test_SQS.pyt   __init__!   s    		i
   c         C@  s   |  j  g  } |  j  (| S(   N(   R	   (   R   t	   page_sizet   vtimeoutt   empty(    (    s@   /tmp/pip-unpacked-wheel-UAnTfW/kombu/tests/transport/test_SQS.pyt   clear&   s    c         C@  s   t  |  j ƒ S(   N(   t   lenR	   (   R   R   R   (    (    s@   /tmp/pip-unpacked-wheel-UAnTfW/kombu/tests/transport/test_SQS.pyt   count*   s    c         C@  s   g  |  j  (t S(   N(   R	   t   True(   R   (    (    s@   /tmp/pip-unpacked-wheel-UAnTfW/kombu/tests/transport/test_SQS.pyt   delete.   s    
c         C@  s-   y |  j  j | ƒ Wn t k
 r( t SXt S(   N(   R	   t   removet
   ValueErrort   FalseR   (   R   t   message(    (    s@   /tmp/pip-unpacked-wheel-UAnTfW/kombu/tests/transport/test_SQS.pyt   delete_message2   s
    i   c         O@  s   |  j  d 7_  |  j |  S(   Ni   (   R
   R	   (   R   t   num_messagest   visibility_timeoutt
   attributest   argst   kwargs(    (    s@   /tmp/pip-unpacked-wheel-UAnTfW/kombu/tests/transport/test_SQS.pyt   get_messages9   s    c         C@  s   |  j  j d ƒ S(   Ni    (   R	   t   pop(   R   R   (    (    s@   /tmp/pip-unpacked-wheel-UAnTfW/kombu/tests/transport/test_SQS.pyt   read>   s    c         C@  s   |  j  j | ƒ t S(   N(   R	   t   appendR   (   R   R   (    (    s@   /tmp/pip-unpacked-wheel-UAnTfW/kombu/tests/transport/test_SQS.pyt   writeA   s    N(   t   __name__t
   __module__R   R   R   t
   count_slowR   R   t   NoneR   R!   R#   (    (    (    s@   /tmp/pip-unpacked-wheel-UAnTfW/kombu/tests/transport/test_SQS.pyR      s   			t   SQSConnectionMockc           B@  sD   e  Z d  „  Z d „  Z d d „ Z e d „ Z d „  Z d „  Z RS(   c         C@  s   i  |  _  d  S(   N(   t   queues(   R   (    (    s@   /tmp/pip-unpacked-wheel-UAnTfW/kombu/tests/transport/test_SQS.pyR   H   s    c         C@  s   |  j  j | ƒ S(   N(   R)   t   get(   R   t   queue(    (    s@   /tmp/pip-unpacked-wheel-UAnTfW/kombu/tests/transport/test_SQS.pyt	   get_queueK   s    t    c         C@  s   |  j  j ƒ  S(   N(   R)   t   values(   R   t   prefix(    (    s@   /tmp/pip-unpacked-wheel-UAnTfW/kombu/tests/transport/test_SQS.pyt   get_all_queuesN   s    c         C@  sI   |  j  | ƒ } | rE | j ƒ  r% t S| j ƒ  |  j j | d  ƒ n  d  S(   N(   R,   R   R   R   R)   R    R'   (   R   R+   t   force_deletiont   q(    (    s@   /tmp/pip-unpacked-wheel-UAnTfW/kombu/tests/transport/test_SQS.pyt   delete_queueQ   s    
c         C@  s   | j  | ƒ S(   N(   R   (   R   R+   R   (    (    s@   /tmp/pip-unpacked-wheel-UAnTfW/kombu/tests/transport/test_SQS.pyR   Y   s    c         O@  s   t  | ƒ } |  j | <| S(   N(   R   R)   (   R   R   R   R   R2   (    (    s@   /tmp/pip-unpacked-wheel-UAnTfW/kombu/tests/transport/test_SQS.pyt   create_queue\   s    (	   R$   R%   R   R,   R0   R   R3   R   R4   (    (    (    s@   /tmp/pip-unpacked-wheel-UAnTfW/kombu/tests/transport/test_SQS.pyR(   F   s   			t   test_Channelc           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 d „  Z d „  Z RS(   c         C@  s   | |  _  d  S(   N(   t   callback_message(   R   R   (    (    s@   /tmp/pip-unpacked-wheel-UAnTfW/kombu/tests/transport/test_SQS.pyt   handleMessageCallbackc   s    c         @  s6  t  d k r t t ƒ ‚ n  t  j j j ƒ  d ˆ  _ t ƒ  ˆ  _	 ‡  f d †  } | ƒ  t  j _
 t j d d d ƒˆ  _ t j ˆ  j ˆ  j ˆ  j ƒ ˆ  _ t ˆ  j ƒ ˆ  _ t d t  j ƒ ˆ  _ ˆ  j j ƒ  ˆ  _ ˆ  j ˆ  j ƒ j ƒ  t j ˆ  j ˆ  j d ˆ  j ƒˆ  _ ˆ  j j ˆ  j d t d	 ˆ  j d
 d ƒd S(   s   Mock the back-end SQS classest   unittestc           @  s   ˆ  j  S(   N(   t   sqs_conn_mock(    (   R   (    s@   /tmp/pip-unpacked-wheel-UAnTfW/kombu/tests/transport/test_SQS.pyt   mock_sqsv   s    t   test_SQSt   typet   directt	   transportt   routing_keyt   no_ackt   callbackt   consumer_tagN(   R   R'   R   t   skip_reasont   Channelt   _queue_cacheR   t
   queue_nameR(   R9   t   sqst   kombut   Exchanget   exchanget   QueueR+   R   t   sqs_queue_mockR   t	   Transportt
   connectiont   channelt   declareR   t   Producert   producert   basic_consumeR   R7   (   R   R:   (    (   R   s@   /tmp/pip-unpacked-wheel-UAnTfW/kombu/tests/transport/test_SQS.pyt   setUpf   s,    			c         C@  s   |  j  |  j |  j j ƒ d S(   s;   kombu.SQS.Channel instantiates correctly with mocked queuesN(   t   assertInRF   RO   RE   (   R   (    (    s@   /tmp/pip-unpacked-wheel-UAnTfW/kombu/tests/transport/test_SQS.pyt	   test_init”   s    c         C@  s@   d } |  j  j | ƒ |  j | |  j j ƒ |  j  j | ƒ d  S(   Nt   new_unittest_queue(   RO   t
   _new_queueRU   R9   R)   t   _delete(   R   RF   (    (    s@   /tmp/pip-unpacked-wheel-UAnTfW/kombu/tests/transport/test_SQS.pyt   test_new_queue˜   s    c         C@  s@   d } |  j  j | ƒ |  j  j | ƒ |  j | |  j  j ƒ d  S(   NRW   (   RO   RX   RY   t   assertNotInRE   (   R   RF   (    (    s@   /tmp/pip-unpacked-wheel-UAnTfW/kombu/tests/transport/test_SQS.pyt   test_deleteŸ   s    c         C@  s¬   d } |  j  j | ƒ |  j j |  j ƒ } |  j t | ƒ d ƒ x3 t d ƒ D]% } d j | ƒ } |  j  j | ƒ qN W|  j j |  j d d ƒ} |  j t | ƒ d ƒ d  S(   Ns   my test messagei   i   s   message: {0}R   (	   RR   t   publishRO   t   _get_from_sqsRF   t   assertEqualR   t   ranget   format(   R   R   t   resultst   i(    (    s@   /tmp/pip-unpacked-wheel-UAnTfW/kombu/tests/transport/test_SQS.pyt   test_get_from_sqs¥   s    c         C@  s0   |  j  t j ƒ  |  j j |  j ƒ Wd  QXd  S(   N(   t   assertRaisesR   t   EmptyRO   t   _getRF   (   R   (    (    s@   /tmp/pip-unpacked-wheel-UAnTfW/kombu/tests/transport/test_SQS.pyt   test_get_with_empty_list´   s    c         C@  s0   |  j  t j ƒ  |  j j |  j ƒ Wd  QXd  S(   N(   Re   R   Rf   RO   t	   _get_bulkRF   (   R   (    (    s@   /tmp/pip-unpacked-wheel-UAnTfW/kombu/tests/transport/test_SQS.pyt   test_get_bulk_raises_empty¸   s    c         C@  s¨   d } x. t  | ƒ D]  } d | } |  j j | ƒ q W|  j j |  j d | ƒ} |  j j | |  j ƒ } |  j t | ƒ | ƒ x! | D] } |  j	 d | k ƒ q‡ Wd  S(   Ni   s   message: %sR   t
   properties(
   R`   RR   R]   RO   R^   RF   t   _messages_to_pythonR_   R   t
   assertTrue(   R   t   message_countRc   R   R	   t   payloadst   p(    (    s@   /tmp/pip-unpacked-wheel-UAnTfW/kombu/tests/transport/test_SQS.pyt   test_messages_to_python¼   s    
		c         C@  sE   d } |  j  j | ƒ |  j |  j ƒ j ƒ  j } |  j | | ƒ d  S(   Ns   my test message(   RR   R]   R+   RO   R*   t   payloadR_   (   R   R   Rb   (    (    s@   /tmp/pip-unpacked-wheel-UAnTfW/kombu/tests/transport/test_SQS.pyt   test_put_and_getÔ   s    c         C@  su   x. t  d ƒ D]  } d | } |  j j | ƒ q Wx= t  d ƒ D]/ } |  j d | |  j |  j ƒ j ƒ  j ƒ q> Wd  S(   Ni   s   message: %s(   R`   RR   R]   R_   R+   RO   R*   Rr   (   R   Rc   R   (    (    s@   /tmp/pip-unpacked-wheel-UAnTfW/kombu/tests/transport/test_SQS.pyt   test_puts_and_getsÚ   s    
c         C@  sE   d } |  j  j | ƒ |  j j |  j ƒ } |  j d t | ƒ ƒ d  S(   Ns   my test messagei   (   RR   R]   RO   Ri   RF   R_   R   (   R   R   Rb   (    (    s@   /tmp/pip-unpacked-wheel-UAnTfW/kombu/tests/transport/test_SQS.pyt   test_put_and_get_bulkã   s    c         C@  s    d } d |  j  j _ x. t | ƒ D]  } d | } |  j j | ƒ q" W|  j  j |  j ƒ } |  j d t	 | ƒ ƒ |  j  j |  j ƒ } |  j d t	 | ƒ ƒ d  S(   Ni   i   s   message: %si   (
   RO   t   qost   prefetch_countR`   RR   R]   Ri   RF   R_   R   (   R   Rn   Rc   R   Rb   (    (    s@   /tmp/pip-unpacked-wheel-UAnTfW/kombu/tests/transport/test_SQS.pyt   test_puts_and_get_bulkê   s    
c         C@  sB   d „  } | |  j  j _ |  j t j ƒ  |  j  j ƒ  Wd  QXd  S(   Nc           S@  s   t  S(   N(   R   (    (    (    s@   /tmp/pip-unpacked-wheel-UAnTfW/kombu/tests/transport/test_SQS.pyt   mock_can_consume   s    (   RO   Rv   t   can_consumeRe   R   Rf   t   drain_events(   R   Ry   (    (    s@   /tmp/pip-unpacked-wheel-UAnTfW/kombu/tests/transport/test_SQS.pyt!   test_drain_events_with_empty_listÿ   s    	c         C@  sŽ   d } d } d |  j  j _ x( t | ƒ D] } |  j j d | ƒ q( Wx! t | ƒ D] } |  j  j ƒ  qS W|  j | |  j  j |  j	 j
 ƒ d  S(   Ni   i   i   s   message: %s(   RO   Rv   Rw   R`   RR   R]   R{   R_   RE   RF   R
   (   R   Rn   t   expected_get_message_countRc   (    (    s@   /tmp/pip-unpacked-wheel-UAnTfW/kombu/tests/transport/test_SQS.pyt!   test_drain_events_with_prefetch_5  s    c         C@  sŽ   d } d } d  |  j j _ x( t | ƒ D] } |  j j d | ƒ q( Wx! t | ƒ D] } |  j j ƒ  qS W|  j | |  j j	 |  j
 j ƒ d  S(   Ni   i   s   message: %s(   R'   RO   Rv   Rw   R`   RR   R]   R{   R_   RE   RF   R
   (   R   Rn   R}   Rc   (    (    s@   /tmp/pip-unpacked-wheel-UAnTfW/kombu/tests/transport/test_SQS.pyt$   test_drain_events_with_prefetch_none  s    (   R$   R%   R7   RT   RV   RZ   R\   Rd   Rh   Rj   Rq   Rs   Rt   Ru   Rx   R|   R~   R   (    (    (    s@   /tmp/pip-unpacked-wheel-UAnTfW/kombu/tests/transport/test_SQS.pyR5   a   s    		.														(   Ns   boto does not support Python 3(   Ns   boto not installed(   t   __doc__t
   __future__R    t   sysRH   R   R   R   t   kombu.tests.caseR   R   t   version_infoR'   R   RC   t   kombu.transportt   ImportErrort   objectR   R(   R5   (    (    (    s@   /tmp/pip-unpacked-wheel-UAnTfW/kombu/tests/transport/test_SQS.pyt   <module>   s    '