ó
P'—^c           @@  sF  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 d  d	 l m Z d  d
 l m Z d  d l m Z m Z m Z m Z m Z m 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 S(   i    (   t   absolute_import(   t	   timedelta(   t   loadst   dumps(   t	   signature(   t   states(   t   group(   t   uuid(   t   AttributeDict(   t   ImproperlyConfigured(   t   timedelta_seconds(   t   AppCaset   Mockt   MockCallbackst   SkipTestt   depends_on_current_appt   patcht
   Connectionc           B@  s   e  Z e Z d  „  Z RS(   c         C@  s   t  |  _ d  S(   N(   t   Falset	   connected(   t   self(    (    sB   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/backends/test_redis.pyt
   disconnect   s    (   t   __name__t
   __module__t   TrueR   R   (    (    (    sB   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/backends/test_redis.pyR      s   t   Pipelinec           B@  s5   e  Z d  „  Z d „  Z d „  Z d „  Z d „  Z RS(   c         C@  s   | |  _  g  |  _ d  S(   N(   t   clientt   steps(   R   R   (    (    sB   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/backends/test_redis.pyt   __init__   s    	c         @  s   ‡  ‡ f d †  } | S(   Nc          @  s)   ˆ j  j t ˆ j ˆ  ƒ |  | f ƒ ˆ S(   N(   R   t   appendt   getattrR   (   t   argst   kwargs(   t   attrR   (    sB   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/backends/test_redis.pyt   add_step#   s    %(    (   R   R!   R"   (    (   R!   R   sB   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/backends/test_redis.pyt   __getattr__!   s    c         C@  s   |  S(   N(    (   R   (    (    sB   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/backends/test_redis.pyt	   __enter__(   s    c         C@  s   d  S(   N(    (   R   t   typet   valuet	   traceback(    (    sB   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/backends/test_redis.pyt   __exit__+   s    c         C@  s,   g  |  j  D] \ } } } | | | Ž  ^ q
 S(   N(   R   (   R   t   stept   at   kw(    (    sB   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/backends/test_redis.pyt   execute.   s    (   R   R   R   R#   R$   R(   R,   (    (    (    sB   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/backends/test_redis.pyR      s
   				t   Redisc           B@  sƒ   e  Z e Z e Z d d d d 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@  sI   | |  _  | |  _ | |  _ | |  _ i  |  _ i  |  _ |  j ƒ  |  _ d  S(   N(   t   hostt   portt   dbt   passwordt   keyspacet   expiryR   t
   connection(   R   R.   R/   R0   R1   R+   (    (    sB   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/backends/test_redis.pyR   6   s    						c         C@  s   |  j  j | ƒ S(   N(   R2   t   get(   R   t   key(    (    sB   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/backends/test_redis.pyR5   ?   s    c         C@  s$   |  j  | | ƒ |  j | | ƒ d  S(   N(   t   sett   expire(   R   R6   R&   t   expires(    (    sB   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/backends/test_redis.pyt   setexB   s    c         C@  s   | |  j  | <d  S(   N(   R2   (   R   R6   R&   (    (    sB   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/backends/test_redis.pyR7   F   s    c         C@  s   | |  j  | <| S(   N(   R3   (   R   R6   R9   (    (    sB   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/backends/test_redis.pyR8   I   s    c         C@  s   t  |  j j | d  ƒ ƒ S(   N(   t   boolR2   t   popt   None(   R   R6   (    (    sB   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/backends/test_redis.pyt   deleteM   s    c         C@  s   |  j  |  ƒ S(   N(   R   (   R   (    (    sB   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/backends/test_redis.pyt   pipelineP   s    c         C@  s9   y |  j  | SWn# t k
 r4 g  } |  j  | <| SXd  S(   N(   R2   t   KeyError(   R   R6   t   l(    (    sB   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/backends/test_redis.pyt	   _get_listS   s
    c         C@  s   |  j  | ƒ j | ƒ d  S(   N(   RB   R   (   R   R6   R&   (    (    sB   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/backends/test_redis.pyt   rpushZ   s    c         C@  s   |  j  | ƒ | | !S(   N(   RB   (   R   R6   t   startt   stop(    (    sB   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/backends/test_redis.pyt   lrange]   s    c         C@  s   t  |  j j | ƒ p g  ƒ S(   N(   t   lenR2   R5   (   R   R6   (    (    sB   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/backends/test_redis.pyt   llen`   s    N(   R   R   R   R   R=   R   R5   R:   R7   R8   R>   R?   RB   RC   RF   RH   (    (    (    sB   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/backends/test_redis.pyR-   2   s   										t   redisc           B@  s@   e  Z d Z e Z d e f d „  ƒ  YZ d e f d „  ƒ  YZ RS(   i   i   i
   t   ConnectionPoolc           B@  s   e  Z d  „  Z RS(   c         K@  s   d  S(   N(    (   R   R    (    (    sB   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/backends/test_redis.pyR   j   s    (   R   R   R   (    (    (    sB   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/backends/test_redis.pyRJ   h   s   t   UnixDomainSocketConnectionc           B@  s   e  Z d  „  Z RS(   c         K@  s   d  S(   N(    (   R   R    (    (    sB   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/backends/test_redis.pyR   o   s    (   R   R   R   (    (    (    sB   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/backends/test_redis.pyRK   m   s   (   i   i   i
   (   R   R   t   VERSIONR-   t   objectRJ   RK   (    (    (    sB   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/backends/test_redis.pyRI   d   s   t   test_RedisBackendc           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 d
 „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z e d ƒ d „  ƒ Z d „  Z d „  Z d „  Z RS(   c         C@  s*   d d l  m } d | f d „  ƒ  Y} | S(   Ni    (   t   RedisBackendt   _RedisBackendc           B@  s   e  Z e Z RS(    (   R   R   RI   (    (    (    sB   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/backends/test_redis.pyRP   x   s   (   t   celery.backends.redisRO   (   R   RO   RP   (    (    sB   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/backends/test_redis.pyt   get_backendu   s    c         C@  s   |  j  ƒ  |  _ d  S(   N(   RR   t   Backend(   R   (    (    sB   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/backends/test_redis.pyt   setup}   s    c         C@  si   yE d d l  m } | d |  j d t ƒ } |  j t t | ƒ ƒ ƒ Wn t k
 rd t d ƒ ‚ n Xd  S(   Ni    (   RO   t   appt   new_joins   redis not installed(	   RQ   RO   RU   R   t
   assertTrueR   R   t   ImportErrorR   (   R   RO   t   x(    (    sB   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/backends/test_redis.pyt   test_reduce€   s    c      	   C@  s?   d  |  j _ |  j t ƒ  |  j d |  j d t ƒ Wd  QXd  S(   NRU   RV   (   R=   RS   RI   t   assertRaisesR	   RU   R   (   R   (    (    sB   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/backends/test_redis.pyt   test_no_redis‰   s    c         C@  sŽ   |  j  d d |  j d t ƒ} |  j | j ƒ |  j | j d d ƒ |  j | j d d ƒ |  j | j d d	 ƒ |  j | j d
 d ƒ d  S(   Ns"   redis://:bosco@vandelay.com:123//1RU   RV   R.   s   vandelay.comR0   i   R/   i{   R1   t   bosco(   RS   RU   R   RW   t
   connparamst   assertEqual(   R   RY   (    (    sB   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/backends/test_redis.pyt   test_urlŽ   s    	c         C@  s    |  j  d d |  j d t ƒ} |  j | j ƒ |  j | j d d ƒ |  j | j d t j ƒ |  j	 d | j ƒ |  j	 d | j ƒ |  j | j d	 d
 ƒ d  S(   Ns(   socket:///tmp/redis.sock?virtual_host=/3RU   RV   t   paths   /tmp/redis.sockt   connection_classR.   R/   R0   i   (
   RS   RU   R   RW   R^   R_   t   assertIsRI   RK   t   assertNotIn(   R   RY   (    (    sB   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/backends/test_redis.pyt   test_socket_url™   s    	

c      
   C@  sº   |  j  d d |  j d t ƒ} |  j ƒ   |  j | j d ƒ Wd  QX|  j ƒ   |  j | j d ƒ Wd  QX|  j ƒ   |  j | j d ƒ Wd  QX|  j ƒ   |  j | j d ƒ Wd  QXd  S(   Ns"   redis://:bosco@vandelay.com:123//1RU   RV   s   vandelay.comi   i{   R]   (	   RS   RU   R   t   assertPendingDeprecationR_   R.   R0   R/   R1   (   R   RY   (    (    sB   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/backends/test_redis.pyt   test_compat_propertie¨   s    	c         C@  sN   t  i d d 6d d 6d g d 6d  d 6ƒ |  j _ |  j d |  j d t ƒ d  S(	   Nt   jsont   CELERY_RESULT_SERIALIZERi   t   CELERY_MAX_CACHED_RESULTSt   CELERY_ACCEPT_CONTENTt   CELERY_TASK_RESULT_EXPIRESRU   RV   (   R   R=   RU   t   confRS   R   (   R   (    (    sB   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/backends/test_redis.pyt   test_conf_raises_KeyError¶   s    
c         C@  sG   d |  j  j _ |  j d d  d |  j  d t ƒ } |  j | j d ƒ d  S(   Ni
   R9   RU   RV   (   RU   Rm   Rl   RS   R=   R   R_   R9   (   R   t   b(    (    sB   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/backends/test_redis.pyt   test_expires_defaults_to_config¿   s    !c         C@  s8   |  j  d d d |  j d t ƒ } |  j | j d ƒ d  S(   NR9   i0   RU   RV   (   RS   RU   R   R_   R9   (   R   Ro   (    (    sB   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/backends/test_redis.pyt   test_expires_is_intÄ   s    !c         C@  sH   |  j  d d |  j ƒ} |  j | j | j ƒ |  j | j | j ƒ d  S(   Ns   redis://?new_join=True;foobar=1RU   (   RS   RU   R_   t   on_chord_part_returnt   _new_chord_returnt   apply_chordt   _new_chord_apply(   R   Ro   (    (    sB   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/backends/test_redis.pyt    test_set_new_join_from_url_queryÈ   s    c         C@  sE   |  j  d |  j ƒ } |  j | j | j ƒ |  j | j | j ƒ d  S(   NRU   (   RS   RU   t   assertNotEqualRr   Rs   Rt   Ru   (   R   Ro   (    (    sB   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/backends/test_redis.pyt   test_default_is_old_joinÍ   s    c         C@  sG   |  j  d d  d |  j d t ƒ } |  j | j t |  j j j ƒ ƒ d  S(   NR9   RU   RV   (	   RS   R=   RU   R   R_   R9   R
   Rm   Rl   (   R   Ro   (    (    sB   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/backends/test_redis.pyt   test_expires_is_NoneÒ   s    !c         C@  sA   |  j  d t d d ƒ d |  j d d ƒ } |  j | j d ƒ d  S(   NR9   t   minutesi   RU   RV   i<   (   RS   R   RU   R_   R9   (   R   Ro   (    (    sB   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/backends/test_redis.pyt   test_expires_is_timedelta×   s    	!c      
   C@  si   |  j  d |  j d t ƒ j t d |  j ƒ d d i  d g  d d d g D] } |  j j | ƒ ^ qF ƒd  S(	   NRU   RV   t   group_idt   resulti   i   i   (    (   RS   RU   R   Rt   R   t   AsyncResult(   R   RY   (    (    sB   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/backends/test_redis.pyt   test_apply_chordÝ   s    c         C@  sZ   |  j  d |  j d t ƒ } |  j | j d d d g ƒ ƒ | j j j d d d g ƒ d  S(   NRU   RV   R*   Ro   t   c(   RS   RU   R   RW   t   mgetR   t   assert_called_with(   R   Ro   (    (    sB   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/backends/test_redis.pyt	   test_mgetã   s    c         C@  s8   |  j  d |  j d t ƒ } d  | _ | j d d ƒ d  S(   NRU   RV   t   foot   bar(   RS   RU   R   R=   R9   R7   (   R   Ro   (    (    sB   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/backends/test_redis.pyt   test_set_no_expireè   s    	s!   celery.result.GroupResult.restorec         @  sø   ˆ  j  d ˆ  j d t ƒ } ‡  f d †  } g  t d ƒ D] } | ƒ  ^ q7 } xT t d ƒ D]F } | j | | t j | ƒ ˆ  j | j j	 j
 ƒ | j j	 j ƒ  qY Wˆ  j | j j j
 ƒ | j d d ƒ } | j j j | ƒ | j j j | d ƒ d  S(   NRU   RV   c          @  sx   t  ƒ  }  t d d j |  ƒ ƒ } d | _ | ˆ  j j d <t | ƒ | j _ |  | j _	 d | j j d <d | j _
 | S(   Nt   names   task-{0}t	   foobarbazi
   t
   chord_sizeR|   (   R   R   t   formatR‡   RU   t   tasksR   t   requestt   chordt   idR   (   t   tidt   task(   R   (    sB   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/backends/test_redis.pyt   create_taskñ   s    		i
   R|   s   .ji€Q (   RS   RU   R   t   rangeRr   R   t   SUCCESSRW   R   RC   t
   call_countt
   reset_mockRF   t   get_key_for_groupR>   R‚   R8   (   R   t   restoreRo   R‘   t   iR‹   t   gkey(    (   R   sB   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/backends/test_redis.pyt   test_on_chord_part_returní   s    "c         C@  s#   |  j  d |  j d t ƒ j ƒ  d  S(   NRU   RV   (   RS   RU   R   t   process_cleanup(   R   (    (    sB   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/backends/test_redis.pyt   test_process_cleanup  s    c         C@  sœ   |  j  d |  j d t ƒ } t ƒ  } | j | d t j ƒ |  j | j | ƒ t j ƒ |  j | j	 | ƒ d ƒ | j
 | ƒ |  j | j | ƒ t j ƒ d  S(   NRU   RV   i*   (   RS   RU   R   R   t   store_resultR   R“   R_   t
   get_statust
   get_resultt   forgett   PENDING(   R   Ro   R   (    (    sB   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/backends/test_redis.pyt   test_get_set_forget
  s    	c         C@  si   |  j  d d d |  j d t ƒ } t ƒ  } | j | ƒ } | j | d t j ƒ | j j	 j
 | d ƒ d  S(   NR9   i   RU   RV   i*   (   RS   RU   R   R   t   get_key_for_taskR   R   R“   R   R8   R‚   (   R   Ro   R   R6   (    (    sB   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/backends/test_redis.pyt   test_set_expires  s    !	(   R   R   RR   RT   R   RZ   R\   R`   Re   Rg   Rn   Rp   Rq   Rv   Rx   Ry   R{   R   Rƒ   R†   R   Rš   Rœ   R¢   R¤   (    (    (    sB   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/backends/test_redis.pyRN   s   s*   																					N(   t
   __future__R    t   datetimeR   t   pickleR   R   t   celeryR   R   R   R   t   celery.datastructuresR   t   celery.exceptionsR	   t   celery.utils.timeutilsR
   t   celery.tests.caseR   R   R   R   R   R   RM   R   R   R-   RI   RN   (    (    (    sB   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/backends/test_redis.pyt   <module>   s   .2