ó
P'—^c           @@  sp  d  d l  m Z d  d l Z d  d l Z d  d l 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 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 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_importN(   t   time(   t
   autoreload(   t   WorkerComponentt	   file_hasht   BaseMonitort   StatMonitort   KQueueMonitort   InotifyMonitort   default_implementationt   Autoreloader(   t   AppCaset   Caset   Mockt   SkipTestt   patcht	   mock_opent   test_WorkerComponentc           B@  sJ   e  Z d  „  Z e d d e ƒe d d e ƒe d ƒ d „  ƒ ƒ ƒ Z RS(   c         C@  sf   t  ƒ  } t | _ t | ƒ } t  ƒ  | _ | j | ƒ } | j j | j | ƒ |  j | | j	 ƒ d  S(   N(
   R   t   Falset   use_eventloopR   t   instantiatet   createt   assert_called_witht   autoreloader_clst   assertIst   autoreloader(   t   selft   wt   xt   r(    (    sE   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/worker/test_autoreload.pyt   test_create_threaded   s    		s   select.keventR   s   select.kqueues   kombu.utils.eventio.kqueuec         C@  s   t  ƒ  } t | _ t | ƒ } t  ƒ  | _ | j | ƒ } | j j | j | ƒ | j | | j	 ƒ |  j
 | ƒ | j	 j j j | j j ƒ d  S(   N(   R   t   TrueR   R   R   R   R   R   t   register_with_event_loopt   hubt   assertIsNonet   on_closet   addR   t   on_event_loop_close(   R   t   kqt   kqueuet   keventR   R   R   (    (    sE   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/worker/test_autoreload.pyt   test_create_ev#   s    		(   t   __name__t
   __module__R   R   R   R)   (    (    (    sE   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/worker/test_autoreload.pyR      s   		t   test_file_hashc           B@  s   e  Z d  „  Z RS(   c         C@  s„   t  ƒ  - } | j d ƒ | j d ƒ t d ƒ } Wd  QXt  ƒ  - } | j d ƒ | j d ƒ t d ƒ } Wd  QX|  j | | ƒ d  S(   Ns   the quick brown fox
i    t   foos   the quick brown bar
t   bar(   R   t   writet   seekR   t   assertNotEqual(   R   t   at   At   bt   B(    (    sE   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/worker/test_autoreload.pyt	   test_hash6   s    (   R*   R+   R6   (    (    (    sE   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/worker/test_autoreload.pyR,   4   s   t   test_BaseMonitorc           B@  s   e  Z d  „  Z RS(   c         C@  sv   t  d d g ƒ } |  j t ƒ  | j ƒ  Wd  QX| j ƒ  | j g  ƒ t ƒ  | _ | j d ƒ | j j d ƒ d  S(   NR2   R4   R-   (	   R   t   assertRaisest   NotImplementedErrort   startt   stopt	   on_changeR   t
   _on_changeR   (   R   R   (    (    sE   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/worker/test_autoreload.pyt   test_start_stop_on_changeD   s    
(   R*   R+   R>   (    (    (    sE   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/worker/test_autoreload.pyR7   B   s   t   test_StatMonitorc           B@  s2   e  Z e d  ƒ d „  ƒ Z e d  ƒ d „  ƒ Z RS(   s   os.statc         @  sŽ   d t  f d „  ƒ  Y} | ƒ  | _ t d d g ƒ ‰  ‡  f d †  } t ƒ  ˆ  _ | ˆ  j j _ ˆ  j ƒ  t ƒ  ˆ  _ t ƒ  | _ ˆ  j ƒ  d  S(   Nt   stc           B@  s   e  Z e ƒ  Z RS(    (   R*   R+   R   t   st_mtime(    (    (    sE   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/worker/test_autoreload.pyR@   U   s   R2   R4   c           @  s   ˆ  j  j j d k r t St S(   Ni   (   t   shutdown_eventt   is_sett
   call_countR   R   (    (   R   (    sE   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/worker/test_autoreload.pyt	   on_is_setZ   s    (	   t   objectt   return_valueR   R   RB   RC   t   side_effectR:   t   OSError(   R   t   statR@   RE   (    (   R   sE   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/worker/test_autoreload.pyt
   test_startR   s    
c         C@  s/   t  ƒ  | _ t d d g ƒ } | j d ƒ d  S(   NR2   R4   (   t
   ValueErrorRH   R   t   _mtime(   R   RJ   R   (    (    sE   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/worker/test_autoreload.pyt   test_mtime_stat_raisesf   s    (   R*   R+   R   RK   RN   (    (    (    sE   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/worker/test_autoreload.pyR?   P   s   t   test_KQueueMonitorc           B@  s•   e  Z e d  d e ƒe d ƒ d „  ƒ ƒ Z d „  Z d „  Z d „  Z e d d e ƒe d d e ƒe d	 ƒ e d  d e ƒd
 „  ƒ ƒ ƒ ƒ Z RS(   s   select.kqueueR   s   os.closec         C@  s{   t  d d g ƒ } t ƒ  | _ d | j d <| j ƒ  | j j j ƒ  | j d ƒ t ƒ  | _ t	 j
 | j _	 | j ƒ  d  S(   NR2   R4   i
   (   R   R   t   pollert   filemapR;   t   closeR   RI   RH   t   errnot   EBADF(   R   RR   R'   R   (    (    sE   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/worker/test_autoreload.pyt	   test_stopo   s    
c         C@  sž   d d l  m } | j d  k r. t d ƒ ‚ n  t d d g ƒ } t d d ƒ } t d d ƒ | _ | j | ƒ | j j	 | j
 ƒ |  j | j
 j | j ƒ d  S(	   Ni    (   t   eventios(   version of kombu does not work with pypyR2   R4   t   nameR!   s   add_events()(   t   kombu.utilsRV   R'   t   NoneR   R   R   t
   add_eventsR    R   t   _kqt   assertEqualt   on_file_changet   handle_event(   R   RV   R   R!   (    (    sE   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/worker/test_autoreload.pyt   test_register_with_event_loop}   s    	c         C@  s]   t  d d g ƒ } t ƒ  | _ t d d ƒ | _ | j t d d ƒ ƒ | j j | j ƒ d  S(   NR2   R4   RW   R[   R!   (   R   R   RR   R[   R%   R   (   R   R   (    (    sE   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/worker/test_autoreload.pyt   test_on_event_loop_close‹   s
    c         C@  s†   t  d d g ƒ } t ƒ  | _ t ƒ  } d | _ t ƒ  } d | _ i d d 6d d 6| _ | j | | g ƒ | j j d d g ƒ d  S(   NR2   R4   R3   R5   (   R   R   R<   t   identt   fdmapR^   R   (   R   R   t   eAt   eB(    (    sE   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/worker/test_autoreload.pyt   test_handle_event’   s    				s   kombu.utils.eventio.kqueues   kombu.utils.eventio.kevents   os.openc      	   @  sx  d d l  m ‰ ˆ j | } ˆ _ i  } d d d d d d g } xM t | ƒ D]? \ } }	 t ˆ |	 d  ƒ | |	 <| |	 sN t ˆ |	 | ƒ qN qN Wz— t ƒ  }
 | _ d	 t	 f ‡ f d
 †  ƒ  Y} | ƒ  g |
 j
 _ t d g ƒ } d | _ d g ‰  ‡  f d †  } t ƒ  | _ | | j j _ | j ƒ  Wd  x< | D]4 }	 | |	 rYt ˆ |	 | |	 ƒ q2t ˆ |	 ƒ q2W| ˆ _ Xd  S(   Ni    (   RV   t   KQ_FILTER_VNODEt	   KQ_EV_ADDt   KQ_EV_ENABLEt   KQ_EV_CLEARt   KQ_NOTE_WRITEt   KQ_NOTE_EXTENDt   evc           @  s    e  Z d  Z ˆ  j Z ˆ  j Z RS(   i
   (   R*   R+   Ra   Rf   t   filterRj   t   fflags(    (   RV   (    sE   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/worker/test_autoreload.pyRl   ®   s   	R2   i
   c           @  s(   ˆ  d c d 7<ˆ  d d k r$ t  St S(   Ni    i   i   (   R   R   (    (   t   calls(    sE   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/worker/test_autoreload.pyRE   ·   s    (   RX   RV   t   pollt	   enumeratet   getattrRY   t   setattrR   RG   RF   t   controlR   RB   RC   RH   R:   t   delattr(   R   R[   t   osopenR(   R'   t	   prev_pollt   prevt   flagst   it   flagR&   Rl   R   RE   (    (   Ro   RV   sE   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/worker/test_autoreload.pyRK      s2    	
		
(	   R*   R+   R   R   RU   R_   R`   Re   RK   (    (    (    sE   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/worker/test_autoreload.pyRO   m   s   				t   test_InotifyMonitorc           B@  s   e  Z e d  ƒ d „  ƒ Z RS(   s"   celery.worker.autoreload.pyinotifyc         C@  s°   t  d g ƒ } d | _ d | _ | j ƒ  t ƒ  | j _ |  j t ƒ  | j ƒ  Wd  QX| j ƒ  d  | _
 | j t ƒ  ƒ t ƒ  | _
 | j t ƒ  ƒ |  j | j
 j ƒ d  S(   NR2   i   i   (   R   t	   IN_MODIFYt	   IN_ATTRIBR:   RL   t   WatchManagerRH   R8   R;   RY   R=   t   process_R   t
   assertTruet   called(   R   t   inotifyR   (    (    sE   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/worker/test_autoreload.pyRK   Ê   s    		

	(   R*   R+   R   RK   (    (    (    sE   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/worker/test_autoreload.pyR|   È   s   t   test_default_implementationc           B@  sJ   e  Z e d  d e ƒe d d e ƒd „  ƒ ƒ Z e d ƒ d „  ƒ Z RS(   s   select.kqueueR   s   kombu.utils.eventio.kqueuec         C@  s   |  j  t ƒ  d ƒ d  S(   NR'   (   R\   R	   (   R   R&   R'   (    (    sE   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/worker/test_autoreload.pyt   test_kqueueß   s    s"   celery.worker.autoreload.pyinotifyc         C@  s»   t  t d d  ƒ } y t t d ƒ Wn t k
 r6 n Xt j d } t _ zN |  j t ƒ  d ƒ t	 j
 d  } t	 _
 z |  j t ƒ  d ƒ Wd  | t	 _
 XWd  | r­ | t _ n  | t _ Xd  S(   NR'   t   linuxRƒ   RJ   (   Rr   t   selectRY   Ru   t   AttributeErrort   syst   platformR\   R	   R   t	   pyinotifyR'   (   R   R‹   R&   RŠ   t   ino(    (    sE   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/worker/test_autoreload.pyt   test_inotifyä   s    (   R*   R+   R   R   R…   R   (    (    (    sE   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/worker/test_autoreload.pyR„   Ý   s   t   test_Autoreloaderc           B@  sk   e  Z d  „  Z d „  Z e d ƒ d „  ƒ Z e d ƒ e d ƒ d „  ƒ ƒ Z d „  Z d „  Z d „  Z	 RS(	   c         @  s²   t  t ƒ  d t g ƒ‰  t ƒ  } d  ˆ  _ t ƒ  ˆ  _ ‡  f d †  } | ˆ  j _ ˆ  j | ƒ ˆ  j j ƒ  ˆ  j j j | ƒ ˆ  j j j	 ƒ  ˆ  j | ƒ ˆ  j j j | ƒ d  S(   Nt   modulesc          @  s   t  ƒ  ˆ  _ d  S(   N(   R   t   _monitor(   t   argst   kwargs(   R   (    sE   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/worker/test_autoreload.pyt   se  s    (
   R
   R   R*   RY   R   t   on_initRH   R    R   t
   reset_mock(   R   R!   R“   (    (   R   sE   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/worker/test_autoreload.pyR_   û   s    		c         C@  sg   t  t ƒ  d t g ƒ} t ƒ  } t ƒ  | _ | j | ƒ | j j j | ƒ d  | _ | j | ƒ d  S(   NR   (   R
   R   R*   R   R%   R   RY   (   R   R   R!   (    (    sE   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/worker/test_autoreload.pyR`     s    		s"   celery.worker.autoreload.file_hashc         C@  s®   t  t ƒ  d t g ƒ} t ƒ  | _ t ƒ  } | j _ t ƒ  | j _ t j	 | j j _ | j
 ƒ  t j | j j _ |  j t ƒ  | j
 ƒ  Wd  QXd  | j _ | j
 ƒ  d  S(   NR   (   R
   R   R*   t   MonitorRG   RI   R:   RH   RS   t   EINTRt   bodyt   ENOENTR8   RY   (   R   t   fhashR   t   mon(    (    sE   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/worker/test_autoreload.pyRK     s    
s   os.path.existsc         C@  sœ   t  | _ d | _ t t ƒ  d t g ƒ} i  | _ d | j t <|  j | j t ƒ ƒ d | j t <|  j | j t ƒ ƒ t	 | _ |  j | j t ƒ ƒ d  S(   Nt   abcdR   t   dcba(
   R   RG   R
   R   R*   t   _hashesR   t   _maybe_modifiedt   assertFalseR   (   R   t   existsRš   R   (    (    sE   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/worker/test_autoreload.pyt   test_maybe_modified$  s    				c         C@  s   t  t ƒ  d t g ƒ} t d ƒ } | _ t | _ t ƒ  | _ t | j t <| j t g ƒ |  j	 | j j
 ƒ t | _ | j t g ƒ d  S(   NR   i    (   R
   R   R*   RŸ   R   RG   t   _reloadt   file_to_moduleR<   R   R‚   R   (   R   R   t   mm(    (    sE   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/worker/test_autoreload.pyt   test_on_change2  s    		c         C@  sH   t  t ƒ  d t g ƒ} | j t g ƒ | j j j t g d t ƒd  S(   NR   t   reload(   R
   R   R*   R£   t
   controllerR§   R   R   (   R   R   (    (    sE   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/worker/test_autoreload.pyt   test_reload=  s    c         C@  sU   t  t ƒ  d t g ƒ} d  | _ | j ƒ  t ƒ  | _ | j ƒ  | j j j ƒ  d  S(   NR   (   R
   R   R*   RY   R   R;   R   (   R   R   (    (    sE   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/worker/test_autoreload.pyRU   B  s    	

(
   R*   R+   R_   R`   R   RK   R¢   R¦   R©   RU   (    (    (    sE   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/worker/test_autoreload.pyRŽ   ù   s   						(    t
   __future__R    RS   R‡   R‰   R   t   celery.workerR   t   celery.worker.autoreloadR   R   R   R   R   R   R	   R
   t   celery.tests.caseR   R   R   R   R   R   R   R,   R7   R?   RO   R|   R„   RŽ   (    (    (    sE   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/worker/test_autoreload.pyt   <module>   s   :.[