σ
P'^c           @@ s,  d  d l  m Z 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 m Z m Z m Z m Z m Z y d  d l Z Wn# e k
 rΟ d Z Z Z Z n- Xd  d	 l m Z m Z d  d
 l m Z m Z d e f d     YZ d e f d     YZ d S(   i    (   t   absolute_importt   unicode_literals(   t   datetime(   t   loadst   dumps(   t   states(   t   ImproperlyConfigured(   t   uuid(   t   AppCaset   SkipTestt   depends_on_current_appt   mask_modulest   skip_if_pypyt   skip_if_jythonN(   t   DatabaseBackendt   retry(   t   Taskt   TaskSett	   SomeClassc           B@ s   e  Z d    Z RS(   c         C@ s   | |  _  d  S(   N(   t   data(   t   selfR   (    (    sE   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/backends/test_database.pyt   __init__   s    (   t   __name__t
   __module__R   (    (    (    sE   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/backends/test_database.pyR      s   t   test_DatabaseBackendc           B@ sΕ   e  Z e 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 e d    Z d   Z d   Z d   Z d   Z RS(   c         C@ s(   t  d  k r t d   n  d |  _ d  S(   Nu   sqlalchemy not installedu   sqlite:///test.db(   R   t   NoneR	   t   uri(   R   (    (    sE   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/backends/test_database.pyt   setup%   s    c         @ sl   d d l  m   d g  t    f d    } |  j     | d d  Wd  QX|  j  d d  d  S(   Ni    (   t   DatabaseErrorc           @ s&    d c d 7<  d d d   d  S(   Ni    i   i   i   (    (    (   R   t   calls(    sE   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/backends/test_database.pyt   raises1   s    t   max_retriesi   (   t   celery.backends.databaseR   R   t   assertRaisest   assertEqual(   R   R   (    (   R   R   sE   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/backends/test_database.pyt   test_retry_helper,   s    	c      	   C@ sD   t  d  2 d d l m } |  j t   |   Wd  QXWd  QXd  S(   Nu
   sqlalchemyi    (   t   _sqlalchemy_installed(   R   R    R$   R!   R   (   R   R$   (    (    sE   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/backends/test_database.pyt3   test_missing_SQLAlchemy_raises_ImproperlyConfigured:   s    c         C@ s9   d  |  j j _ |  j t   t d |  j  Wd  QXd  S(   Nt   app(   R   R&   t   conft   CELERY_RESULT_DBURIR!   R   R   (   R   (    (    sE   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/backends/test_database.pyt.   test_missing_dburi_raises_ImproperlyConfigured@   s    c         C@ s8   t  |  j d |  j } |  j | j d  t j  d  S(   NR&   u   xxx-does-not-exist(   R   R   R&   R"   t
   get_statusR   t   PENDING(   R   t   tb(    (    sE   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/backends/test_database.pyt   test_missing_task_id_is_PENDINGE   s    c         C@ sT   t  |  j d |  j } |  j i t j d 6d d 6d  d 6d  d 6| j d   d  S(   NR&   u   statusu   xxx-does-not-exist-at-allu   task_idu   resultu	   traceback(   R   R   R&   t   assertDictContainsSubsetR   R+   R   t   get_task_meta(   R   R,   (    (    sE   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/backends/test_database.pyt+   test_missing_task_meta_is_dict_with_pendingI   s    	
c         C@ s   t  |  j d |  j } t   } |  j | j |  t j  |  j | j	 |   | j
 | d  |  j | j |  t j  |  j | j	 |  d  d  S(   NR&   i*   (   R   R   R&   R   R"   R*   R   R+   t   assertIsNonet
   get_resultt   mark_as_donet   SUCCESS(   R   R,   t   tid(    (    sE   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/backends/test_database.pyt   test_mark_as_doneR   s    	c         C@ s   t  |  j d |  j } t   } i d d 6t d  d 6} | j | |  | j |  } |  j | j d  d  |  j | j d  j	 d  d  S(   NR&   u   bazu   fooi90  u   bar(
   R   R   R&   R   R   R3   R2   R"   t   getR   (   R   R,   t   tid2t   resultt   rindb(    (    sE   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/backends/test_database.pyt   test_is_pickled^   s    	c         C@ sN   t  |  j d |  j } t   } | j |  |  j | j |  t j  d  S(   NR&   (	   R   R   R&   R   t   mark_as_startedR"   R*   R   t   STARTED(   R   R,   R5   (    (    sE   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/backends/test_database.pyt   test_mark_as_startedi   s    	c         C@ sN   t  |  j d |  j } t   } | j |  |  j | j |  t j  d  S(   NR&   (	   R   R   R&   R   t   mark_as_revokedR"   R*   R   t   REVOKED(   R   R,   R5   (    (    sE   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/backends/test_database.pyt   test_mark_as_revokedo   s    	c         C@ sΠ   t  |  j d |  j } t   } y t d   Wn t k
 rΛ } d d  l } d j | j    } | j | | d | |  j	 | j
 |  t j  |  j | j |  t  |  j	 | j |  |  n Xd  S(   NR&   u   fooi    u   
t	   traceback(   R   R   R&   R   t   KeyErrorRB   t   joint   format_stackt   mark_as_retryR"   R*   R   t   RETRYt   assertIsInstanceR2   t   get_traceback(   R   R,   R5   t	   exceptionRB   t   trace(    (    sE   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/backends/test_database.pyt   test_mark_as_retryu   s    	c         C@ sΠ   t  |  j d |  j } t   } y t d   Wn t k
 rΛ } d d  l } d j | j    } | j | | d | |  j	 | j
 |  t j  |  j | j |  t  |  j	 | j |  |  n Xd  S(   NR&   u   fooi    u   
RB   (   R   R   R&   R   RC   RB   RD   RE   t   mark_as_failureR"   R*   R   t   FAILURERH   R2   RI   (   R   R,   t   tid3RJ   RB   RK   (    (    sE   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/backends/test_database.pyt   test_mark_as_failure   s    	c         C@ s   t  |  j d d d |  j } t   } | j | i d d 6 | j | i d d 6 |  j j | d | } | j   |  j | j  d  S(   Nt   backendu	   memory://R&   u   baru   foo(	   R   R   R&   R   R3   t   AsyncResultt   forgetR1   R9   (   R   R,   R5   t   x(    (    sE   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/backends/test_database.pyt   test_forget   s    	
c         C@ s&   t  |  j d |  j } | j   d  S(   NR&   (   R   R   R&   t   process_cleanup(   R   R,   (    (    sE   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/backends/test_database.pyt   test_process_cleanup   s    c         C@ s5   t  |  j d |  j } |  j t t |    d  S(   NR&   (   R   R   R&   t
   assertTrueR   R   (   R   R,   (    (    sE   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/backends/test_database.pyt   test_reduce   s    c         C@ s¦   t  |  j d |  j } t   } i d d 6} |  j | j | |  |  | j |  } |  j | |  | j |  |  j | j |   |  j | j d   d  S(   NR&   u   specialu	   somethingu   xxx-nonexisting-id(	   R   R   R&   R   R"   t
   save_groupt   restore_groupt   delete_groupR1   (   R   R,   R5   t   rest   res2(    (    sE   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/backends/test_database.pyt    test_save__restore__delete_group’   s    	c         C@ sώ   t  |  j d |  j } xA t d  D]3 } | j t   d  | j t   i d d 6 q% W| j   } x7 | j t	  j
   D]  } t j   | j d | _ q~ Wx7 | j t  j
   D]  } t j   | j d | _ qΈ W| j   | j   | j   d  S(   NR&   i
   i*   u   baru   fooi   (   R   R   R&   t   rangeR3   R   RZ   t   ResultSessiont   queryR   t   allR   t   nowt   expirest	   date_doneR   t   committ   closet   cleanup(   R   R,   t   it   st   t(    (    sE   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/backends/test_database.pyt   test_cleanup±   s    

c         C@ s    |  j  d t t d    d  S(   Nu   foo(   t   assertInt   reprR   (   R   (    (    sE   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/backends/test_database.pyt   test_Task__repr__ΐ   s    c         C@ s#   |  j  d t t d d     d  S(   Nu   foo(   Rn   Ro   R   R   (   R   (    (    sE   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/backends/test_database.pyt   test_TaskSet__repr__Γ   s    (   R   R   R   R   R   R#   R%   R)   R-   R0   R6   R;   R>   RA   RL   RP   RU   RW   R
   RY   R_   Rm   Rp   Rq   (    (    (    sE   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/backends/test_database.pyR   #   s(   																		(    t
   __future__R    R   R   t   pickleR   R   t   celeryR   t   celery.exceptionsR   t   celery.utilsR   t   celery.tests.caseR   R	   R
   R   R   R   t
   sqlalchemyt   ImportErrorR   R   R   R   R   R    t   celery.backends.database.modelst   objectR   R   (    (    (    sE   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/backends/test_database.pyt   <module>   s   .	