σ
P'^c           @@  s»  d  d l  m Z d  d l Z d  d l 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 m Z 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 m Z e j  d  d k 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 e( f d     YZ) d e e( f d     YZ* d S(   i    (   t   absolute_importN(   t   contextmanager(   t   str_to_bytest   ensure_bytes(   t	   signature(   t   states(   t   group(   t   CacheBackendt   DummyClientt   backends(   t   ImproperlyConfigured(   t   itemst   stringt   text_t(   t   uuid(   t   AppCaset   Mockt   disable_stdoutst   mask_modulest   patcht   reset_modulesi   t	   SomeClassc           B@  s   e  Z d    Z RS(   c         C@  s   | |  _  d  S(   N(   t   data(   t   selfR   (    (    sB   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/backends/test_cache.pyt   __init__   s    (   t   __name__t
   __module__R   (    (    (    sB   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/backends/test_cache.pyR      s   t   test_CacheBackendc           B@  s³   e  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 d   Z d   Z d   Z d   Z d   Z e d    Z RS(   c         C@  sE   t  d d d |  j  |  _ t   |  _ t d |  _ d   t d <d  S(   Nt   backends	   memory://t   appt   memcachec           S@  s
   t  t f S(   N(   R   R   (    (    (    sB   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/backends/test_cache.pyt   <lambda>%   t    (   R   R   t   tbR   t   tidR	   t   old_get_best_memcached(   R   (    (    sB   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/backends/test_cache.pyt   setup!   s    c         C@  s   |  j  t d <d  S(   NR   (   R#   R	   (   R   (    (    sB   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/backends/test_cache.pyt   teardown'   s    c      	   C@  s?   d  |  j j _ |  j t   t d d  d |  j  Wd  QXd  S(   NR   R   (   t   NoneR   t   conft   CELERY_CACHE_BACKENDt   assertRaisesR
   R   (   R   (    (    sB   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/backends/test_cache.pyt   test_no_backend*   s    c         C@  s   |  j  |  j j |  j  t j  |  j |  j j |  j   |  j j |  j d  |  j  |  j j |  j  t j	  |  j  |  j j |  j  d  d  S(   Ni*   (
   t   assertEqualR!   t
   get_statusR"   R   t   PENDINGt   assertIsNonet
   get_resultt   mark_as_donet   SUCCESS(   R   (    (    sB   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/backends/test_cache.pyt   test_mark_as_done/   s
    ""c         C@  s~   i d d 6t  d  d 6} |  j j |  j |  |  j j |  j  } |  j | j d  d  |  j | j d  j d  d  S(   Nt   bazt   fooi90  t   bar(   R   R!   R0   R"   R/   R+   t   getR   (   R   t   resultt   rindb(    (    sB   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/backends/test_cache.pyt   test_is_pickled7   s
    c         C@  s   y t  d   Wnj t  k
 r| } |  j j |  j |  |  j |  j j |  j  t j  |  j |  j j	 |  j  t   n Xd  S(   NR4   (
   t   KeyErrorR!   t   mark_as_failureR"   R+   R,   R   t   FAILUREt   assertIsInstanceR/   (   R   t	   exception(    (    sB   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/backends/test_cache.pyt   test_mark_as_failure?   s    "c         C@  s|   t  d d d |  j  } t   g  t d  D] } |  j j t    ^ q+ } } | j t d |  j  d | i  d | d  S(   NR   s	   memory://R   i   R7   (    (   R   R   R   t   ranget   AsyncResultt   apply_chordR   (   R   R!   t   _t   gidt   res(    (    sB   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/backends/test_cache.pyt   test_apply_chordG   s    8s!   celery.result.GroupResult.restorec         C@  sX  t  d d d |  j  } t   } t   | _ d | j _ | | _ t   } d | _ | |  j j d <t |  | j _	 t
   g  t d  D] } |  j j t
    ^ q } } | | j _ | j t d |  j  d | i  d | |  j | j j  | j | d d	  |  j | j j  | j | d d	  | j j d
 t d d  | j j   d  S(   NR   s	   memory://R   i   t	   foobarbazi   R7   R1   i
   t	   propagatet   timeoutg      @(    (   R   R   R   t   __len__t   return_valuet   namet   tasksR   t   requestt   chordR   R@   RA   R   RB   t   assertFalset   join_nativet   calledt   on_chord_part_returnt   assert_called_witht   Truet   delete(   R   t   restoreR!   t   depst   taskRC   RD   RE   (    (    sB   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/backends/test_cache.pyt   test_on_chord_part_returnL   s$    				8(c         C@  sZ   |  j  j d d  |  j  j d d  |  j |  j  j d d g  i d d 6d d 6 d  S(   NR4   i   R5   i   (   R!   t   sett   assertDictEqualt   mget(   R   (    (    sB   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/backends/test_cache.pyt	   test_mgete   s    c         C@  sY   |  j  j |  j i d d 6 |  j j |  j d |  j  } | j   |  j | j  d  S(   NR5   R4   R   (   R!   R0   R"   R   RA   t   forgetR.   R7   (   R   t   x(    (    sB   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/backends/test_cache.pyt   test_forgetl   s    
c         C@  s   |  j  j   d  S(   N(   R!   t   process_cleanup(   R   (    (    sB   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/backends/test_cache.pyt   test_process_cleanupr   s    c         C@  s5   t  d d d d d |  j  } |  j | j d  d  S(   NR   s	   memory://t   expiresi
   R   (   R   R   R+   Rd   (   R   R!   (    (    sB   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/backends/test_cache.pyt   test_expires_as_intu   s    c      	   C@  s0   |  j  t   t d d d |  j  Wd  QXd  S(   NR   s
   unknown://R   (   R)   R
   R   R   (   R   (    (    sB   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/backends/test_cache.pyt0   test_unknown_backend_raises_ImproperlyConfiguredy   s    c         C@  s   |  j  |  j j   d  d  S(   Ns
   memory:///(   R+   R!   t   as_uri(   R   (    (    sB   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/backends/test_cache.pyt   test_as_uri_no_servers}   s    c         C@  s8   d } t  d | d |  j  } |  j | j   |  d  S(   Ns   memcache://127.0.0.1:11211/R   R   (   R   R   R+   Rg   (   R   R   t   b(    (    sB   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/backends/test_cache.pyt   test_as_uri_one_server   s    c         C@  s8   d } t  d | d |  j  } |  j | j   |  d  S(   Ns5   memcache://127.0.0.1:11211;127.0.0.2:11211;127.0.0.3/R   R   (   R   R   R+   Rg   (   R   R   Ri   (    (    sB   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/backends/test_cache.pyt   test_as_uri_multiple_servers   s    c         C@  s?   d |  j  j _ |  j  j   } | j   |  j | j    d  S(   Ns<   cache+memcached://127.0.0.1:11211;127.0.0.2:11211;127.0.0.3/(   R   R'   t   result_backendt   Workert   on_startt
   assertTruet   startup_info(   R   t   worker(    (    sB   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/backends/test_cache.pyt#   test_regression_worker_startup_info   s    
(   R   R   R$   R%   R*   R2   R9   R?   RF   R   RZ   R^   Ra   Rc   Re   Rf   Rh   Rj   Rk   R   Rr   (    (    (    sB   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/backends/test_cache.pyR      s"   															t   MyMemcachedStringEncodingErrorc           B@  s   e  Z RS(    (   R   R   (    (    (    sB   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/backends/test_cache.pyRs      s   t   MemcachedClientc           B@  s   e  Z d    Z RS(   c   	      O@  s   t  r' t d d d f \ } } } } n t d d d f \ } } } } t | |  rr t d j | | |    n  t t |   j | | | |  S(   NR   t   bytest   decodet   encodesM   Keys must be {0}, not {1}.  Convert your strings using mystring.{2}(charset)!(	   t   PY3Ru   R   t
   isinstanceRs   t   formatt   superRt   R[   (	   R   t   keyt   valuet   argst   kwargst   key_tt   must_bet   not_bet   cod(    (    sB   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/backends/test_cache.pyR[      s    !(   R   R   R[   (    (    (    sB   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/backends/test_cache.pyRt      s   t   MockCacheMixinc           B@  s&   e  Z e d     Z e d    Z RS(   c         c@  st   t  j d  } t | _ | j | j _ t j j d  | } t j d <z	 t	 VWd  | d  k	 ro | t j d <n  Xd  S(   NR   (   t   typest
   ModuleTypeRt   t   ClientR   R   t   syst   modulesR6   RU   R&   (   R   R   t   prev(    (    sB   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/backends/test_cache.pyt   mock_memcache©   s    	 	c         c@  ss   t  j d  } t | _ | j | j _ t j j d  } | t j d <z	 t	 VWd  | d  k	 rn | t j d <n  Xd  S(   Nt   pylibmc(   R   R   Rt   R   R   R   R   R   R6   RU   R&   (   R   R   R   (    (    sB   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/backends/test_cache.pyt   mock_pylibmc΅   s    		(   R   R   R   R   R   (    (    (    sB   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/backends/test_cache.pyR   §   s   t   test_get_best_memcachec           B@  s5   e  Z d    Z d   Z d   Z d   Z d   Z RS(   c         C@  sc   |  j    Q t d  > d d l m } d  g | _ |  j | j   d j d  Wd  QXWd  QXd  S(   Ns   celery.backends.cachei    (   t   cacheR   (	   R   R   t   celery.backendsR   R&   t   _impR+   t   get_best_memcacheR   (   R   R   (    (    sB   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/backends/test_cache.pyt   test_pylibmcΕ   s    c         C@  sy   |  j    g t d  T t d  A d d l m } d  g | _ |  j | j   d   j	 d  Wd  QXWd  QXWd  QXd  S(   Ns   celery.backends.cacheR   i    (   R   R   (
   R   R   R   R   R   R&   R   R+   R   R   (   R   R   (    (    sB   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/backends/test_cache.pyt   test_memcacheΝ   s    c         C@  si   t  d d  T t d  A d d l m } d  g | _ |  j t   | j   Wd  QXWd  QXWd  QXd  S(   NR   R   s   celery.backends.cachei    (   R   (	   R   R   R   R   R&   R   R)   R
   R   (   R   R   (    (    sB   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/backends/test_cache.pyt   test_no_implementationsΦ   s    c         C@  s   |  j    w t d  d d d l m } d  g | _ | j   d d i d d 6 |  j | j d  | j   d   Wd  QXWd  QXd  S(   Ns   celery.backends.cachei    (   R   t	   behaviorsR5   R4   (   R   R   R   R   R&   R   R   Ro   (   R   R   (    (    sB   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/backends/test_cache.pyt   test_cachedή   s    c         C@  sT   d d l  m } |  j   2 x* t |  D] \ } } |  j |    q* WWd  QXd  S(   Ni    (   R	   (   t   celery.backends.cacheR	   R   R   Ro   (   R   R	   RL   t   fun(    (    sB   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/backends/test_cache.pyt   test_backendsη   s    (   R   R   R   R   R   R   R   (    (    (    sB   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/backends/test_cache.pyR   Γ   s
   						t   test_memcache_keyc           B@  s,   e  Z d    Z d   Z d   Z d   Z RS(   c         C@  sΌ   |  j    ͺ t d   t d   d d l m } d  g | _ t t    d } } | j	 d d d |  j
  } | j | | d	 t j |  j | j |  |  Wd  QXWd  QXWd  QXd  S(
   Ns   celery.backends.cacheR   i    (   R   i*   R   R   R   t   status(   R   R   R   R   R   R&   R   R   R   R   R   t   store_resultR   R1   R+   R/   (   R   R   t   task_idR7   Ri   (    (    sB   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/backends/test_cache.pyt   test_memcache_unicode_keyπ   s    c         C@  sΌ   |  j    ͺ t d   t d   d d l m } d  g | _ t t    d } } | j	 d d d |  j
  } | j | | d	 t j |  j | j |  |  Wd  QXWd  QXWd  QXd  S(
   Ns   celery.backends.cacheR   i    (   R   i*   R   R   R   R   (   R   R   R   R   R   R&   R   R   R   R   R   R   R   R1   R+   R/   (   R   R   R   R7   Ri   (    (    sB   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/backends/test_cache.pyt   test_memcache_bytes_keyϋ   s    c         C@  s©   t  d   |  j    d d l m } d  g | _ t t    d } } | j d d d |  j	  } | j
 | | d t j |  j | j |  |  Wd  QXWd  QXd  S(	   Ns   celery.backends.cachei    (   R   i*   R   R   R   R   (   R   R   R   R   R&   R   R   R   R   R   R   R   R1   R+   R/   (   R   R   R   R7   Ri   (    (    sB   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/backends/test_cache.pyt   test_pylibmc_unicode_key  s    c         C@  s©   t  d   |  j    d d l m } d  g | _ t t    d } } | j d d d |  j	  } | j
 | | d t j |  j | j |  |  Wd  QXWd  QXd  S(	   Ns   celery.backends.cachei    (   R   i*   R   R   R   R   (   R   R   R   R   R&   R   R   R   R   R   R   R   R1   R+   R/   (   R   R   R   R7   Ri   (    (    sB   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/backends/test_cache.pyt   test_pylibmc_bytes_key  s    (   R   R   R   R    R‘   R’   (    (    (    sB   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/backends/test_cache.pyR   ξ   s   			
(+   t
   __future__R    R   R   t
   contextlibR   t   kombu.utils.encodingR   R   t   celeryR   R   R   R   R   R   R	   t   celery.exceptionsR
   t   celery.fiveR   R   R   t   celery.utilsR   t   celery.tests.caseR   R   R   R   R   R   t   version_infoRx   t   objectR   R   t	   ExceptionRs   Rt   R   R   R   (    (    (    sB   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/backends/test_cache.pyt   <module>   s(   .u+