σ
P'^c           @@  sΒ   d  d l  m Z d  d l Z d  d l m Z d  d l m Z m Z m Z 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 S(   i    (   t   absolute_importN(   t   contextmanager(   t   _maybe_close_fdt   fixupt   DjangoFixupt   DjangoWorkerFixup(   t   AppCaset   Mockt   patcht
   patch_manyt   patch_modulest   mask_modulest	   FixupCasec           B@  s   e  Z d Z e d     Z RS(   c         c@  s^   t  d  L t  d  9 } t  d  $ } |  j |  } | | | f VWd  QXWd  QXWd  QXd  S(   Ns6   celery.fixups.django.DjangoWorkerFixup.validate_modelss#   celery.fixups.django.symbol_by_names"   celery.fixups.django.import_module(   R   t   Fixup(   t   selft   appt	   symbynamet   impmodt   f(    (    sA   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/fixups/test_django.pyt   fixup_context   s
    N(   t   __name__t
   __module__t   NoneR   R   R   (    (    (    sA   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/fixups/test_django.pyR      s   t   test_DjangoFixupc           B@  sM   e  Z e Z d    Z d   Z d   Z d   Z d   Z d   Z	 d   Z
 RS(   c         C@  sν   t  d  Ϋ } t  j t j d d " t |  j  |  j | j  Wd  QXt  j t j d d ~ t d  ; |  j	 t
 d  " t |  j  |  j | j  Wd  QXWd  QXt d  " t |  j  |  j | j  Wd  QXWd  QXWd  QXd  S(   Ns    celery.fixups.django.DjangoFixupt   DJANGO_SETTINGS_MODULEt    t   settingst   djangos   but Django is(   R   t   dictt   ost   environR   R   t   assertFalset   calledR   t   assertWarnsRegext   UserWarningR
   t
   assertTrue(   R   R   (    (    sA   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/fixups/test_django.pyt
   test_fixup"   s    c         C@  s1   t  d   t t    t t    Wd  QXd  S(   Ns   os.close(   R   R   R   t   object(   R   (    (    sA   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/fixups/test_django.pyt   test_maybe_close_fd0   s    c         C@  sc   |  j  |  j  K \ } } } |  j |  d   } | | _ |  j |  j |  j  j  Wd  QXd  S(   Nc         S@  s   |  d k r t     n  t   S(   Ns   django.utils.timezone:now(   t   ImportErrorR   (   t   name(    (    sA   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/fixups/test_django.pyt   se9   s    (   R   R   R#   t   side_effectR   t   _now(   R   R   t	   importmodt   symR)   (    (    sA   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/fixups/test_django.pyt	   test_init5   s
    		c         C@  sΜ   t    |  j _ |  j |  j  ₯ \ } } } t d d d   \ } } } d | _ | j   | j j j	 | j
  |  j |  j j j | j  |  j |  j j j | j  | j j	 d  Wd  QXWd  QXd  S(   Ns	   os.getcwds   sys.paths   celery.fixups.django.signalss   /opt/vandelay(   R   R   t   loaderR   R	   t   return_valuet   installt   worker_initt   connectt   assert_called_witht   on_worker_initt   assertEqualt   nowt   mail_adminst   append(   R   R   t   _t   cwt   pt   sigs(    (    sA   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/fixups/test_django.pyt   test_install@   s    		
c         C@  s   |  j  |  j  h \ } } } |  j | j d t   |  j | j j  |  j | j d t   |  j | j j  Wd  QXd  S(   Nt   utc(	   R   R   R#   R7   t   TrueR   R+   R    t   False(   R   R   R:   (    (    sA   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/fixups/test_django.pyt   test_nowL   s
    c      	   C@  sT   |  j  |  j  < \ } } } | j d d t  | j j d d d t Wd  QXd  S(   Nt   subt   bodyt   fail_silently(   R   R   R8   R@   t   _mail_adminsR4   (   R   R   R:   (    (    sA   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/fixups/test_django.pyt   test_mail_adminsS   s    	c         C@  s}   |  j  |  j  e \ } } } t d  G } | j   | j | j  | j j j   |  j | j | j  Wd  QXWd  QXd  S(   Ns&   celery.fixups.django.DjangoWorkerFixup(	   R   R   R   R5   R4   R0   R1   t   assertIst   _worker_fixup(   R   R   R:   t   DWF(    (    sA   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/fixups/test_django.pyt   test_on_worker_initZ   s    
(   R   R   R   R   R$   R&   R.   R>   RB   RG   RK   (    (    (    sA   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/fixups/test_django.pyR      s   						t   test_DjangoWorkerFixupc           B@  s   e  Z 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 RS(   c         C@  sc   |  j  |  j  K \ } } } |  j |  d   } | | _ |  j |  j |  j  j  Wd  QXd  S(   Nc         S@  s   |  d k r t     n  t   S(   Ns   django.db:close_old_connections(   R'   R   (   R(   (    (    sA   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/fixups/test_django.pyR)   j   s    (   R   R   R#   R*   t   assertIsNoneR   t   _close_old_connections(   R   R   R,   R-   R)   (    (    sA   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/fixups/test_django.pyR.   f   s
    		c      
   C@  sΪ   i d  d 6|  j _ t   |  j _ |  j |  j    \ } } } t d   \ } | j   | j j	 j
 | j  | j j	 j
 | j  | j j	 j
 | j  | j j	 j
 | j  | j j	 j
 | j  Wd  QXWd  QXd  S(   Nt   CELERY_DB_REUSE_MAXs   celery.fixups.django.signals(   R   R   t   confR   R/   R   R	   R1   t   beat_embedded_initR3   R4   t   close_databaset   worker_readyt   on_worker_readyt   task_prerunt   on_task_prerunt   task_postrunt   on_task_postrunt   worker_process_initt   on_worker_process_init(   R   R   R:   R=   (    (    sA   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/fixups/test_django.pyR>   q   s    

c         C@  s/  |  j  |  j  \ } } } t d  ω } t   } | j j _ t   t   g } | _ d  | d _	 t j
 | d  ’ t j
 | d   | j   | j | d j	  | j j   | j j   | j   t   | _ | j   | j | j j	 j	  d  | j _	 | j   Wd  QXWd  QXWd  QXWd  QXd  S(   Ns$   celery.fixups.django._maybe_close_fdi    t   close_cachet   _close_databasei   (   R   R   R   R   t   _dbt   connectionst   allR0   R   t
   connectionR%   RZ   R4   R[   R\   t
   reset_mockt   AttributeErrorR*   (   R   R   R:   t   mcft   _allt   conns(    (    sA   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/fixups/test_django.pyt   test_on_worker_process_init   s"    


c         C@  s΅   t    } |  j |  j   \ } } } t | j _ t j | d   | j |  | j	 j
   Wd  QXt | j _ t j | d  % | j |  |  j | j	 j  Wd  QXWd  QXd  S(   NRR   (   R   R   R   RA   t   requestt   is_eagerR   R%   RV   RR   R4   R@   R   R    (   R   t   taskR   R:   (    (    sA   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/fixups/test_django.pyt   test_on_task_prerun   s    	c         C@  s  t    } |  j |  j  ς \ } } } t j | d  ] t | j _ t j | d  8 | j |  |  j	 | j
 j  |  j	 | j j  Wd  QXWd  QXt j | d  ] t | j _ t j | d  8 | j |  |  j | j
 j  |  j | j j  Wd  QXWd  QXWd  QXd  S(   NR[   RR   (   R   R   R   R   R%   RA   Rg   Rh   RX   R#   RR   R    R[   R@   R   (   R   Ri   R   R:   (    (    sA   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/fixups/test_django.pyt   test_on_task_postrun€   s    	c         C@  s  |  j  |  j  χ \ } } } t   | _ | j   | j j   d  | _ t j | d  § } d  | _	 | j   | j   | j
   d | _	 d | _ | j   |  j | j  |  j | j d  | j
   d | _ | j   | j   |  j | j d  Wd  QXWd  QXd  S(   NR\   i
   i   i   i   i   (   R   R   R   RN   RR   R4   R   R   R%   t   db_reuse_maxRa   t   _db_recyclesR   R    R6   (   R   R   R:   t   _close(    (    sA   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/fixups/test_django.pyt   test_close_databaseΆ   s(    
		


		

	

c      	   @  sJ  |  j  |  j  2\ } } } t   t   t   g   t d    d j _ t f | _ t   | j _   f d   | j j j	 _ | j
     d j j     d j j     d j j   t d    d j _ |  j t   | j
   Wd  QXd t f d     Y} |   } t   | _ | | _ | j
   | j j   Wd  QXd  S(	   Ns   already closedi   c           @  s     S(   N(    (    (   Re   (    sA   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/fixups/test_django.pyt   <lambda>Υ   R   i    i   t   omgt   Objectc           B@  s   e  Z RS(    (   R   R   (    (    (    sA   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/fixups/test_django.pyRr   ΰ   s   (   R   R   R   t   KeyErrort   closeR*   t   database_errorsR]   R^   R_   R\   R4   t   assertRaisesR%   t   close_connection(   R   R   R:   Rr   t   o(    (   Re   sA   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/fixups/test_django.pyt   test__close_databaseΞ   s&    
		
c         C@  sd   |  j  |  j  L \ } } } | j   | j j j j   t   | j j j _ | j   Wd  QXd  S(   N(	   R   R   R[   t   _cachet   cacheRt   R4   t	   TypeErrorR*   (   R   R   R:   (    (    sA   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/fixups/test_django.pyt   test_close_cacheθ   s
    
c      
   C@  sm   |  j  |  j  U \ } } } t | j _ | j   |  j t d   t | j _ | j   Wd  QXWd  QXd  S(   Ns   leads to a memory leak(	   R   R   RA   t	   _settingst   DEBUGRT   R!   R"   R@   (   R   R   R:   (    (    sA   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/fixups/test_django.pyt   test_on_worker_readyο   s    
c         C@  sΩ   t  d   d d  l } t   | _ t   | _ t   | _ |  j |  j  R \ } } } |  j | j | j	  |  j | j | j	  |  j | j | j	  Wd  QXWd  QXt
 d   |  j |  j   Wd  QXWd  QXd  S(   Nt   MySQLdbi    (   R
   R   R   t   DatabaseErrort   InterfaceErrort   OperationalErrorR   R   t   assertInRu   R   (   R   t   modR   R:   (    (    sA   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/fixups/test_django.pyt   test_mysql_errorsχ   s    "c         C@  sΩ   t  d   d d  l } t   | _ t   | _ t   | _ |  j |  j  R \ } } } |  j | j | j	  |  j | j | j	  |  j | j | j	  Wd  QXWd  QXt
 d   |  j |  j   Wd  QXWd  QXd  S(   Nt   psycopg2i    (   R
   R   R   R   R   R   R   R   R   Ru   R   (   R   R   R   R:   (    (    sA   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/fixups/test_django.pyt   test_pg_errors  s    "c         C@  sΩ   t  d   d d  l } t   | _ t   | _ t   | _ |  j |  j  R \ } } } |  j | j | j	  |  j | j | j	  |  j | j | j	  Wd  QXWd  QXt
 d   |  j |  j   Wd  QXWd  QXd  S(   Nt   sqlite3i    (   R
   R   R   R   R   R   R   R   R   Ru   R   (   R   R   R   R:   (    (    sA   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/fixups/test_django.pyt   test_sqlite_errors  s    "c         C@  sΩ   t  d   d d  l } t   | _ t   | _ t   | _ |  j |  j  R \ } } } |  j | j | j	  |  j | j | j	  |  j | j | j	  Wd  QXWd  QXt
 d   |  j |  j   Wd  QXWd  QXd  S(   Nt	   cx_Oraclei    (   R
   R   R   R   R   R   R   R   R   Ru   R   (   R   R   R   R:   (    (    sA   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/fixups/test_django.pyt   test_oracle_errors!  s    "(   R   R   R   R   R.   R>   Rf   Rj   Rk   Ro   Ry   R}   R   R   R   R   R   (    (    (    sA   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/fixups/test_django.pyRL   c   s   												(   t
   __future__R    R   t
   contextlibR   t   celery.fixups.djangoR   R   R   R   t   celery.tests.caseR   R   R   R	   R
   R   R   R   RL   (    (    (    sA   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/fixups/test_django.pyt   <module>   s   ".D