ó
P'—^c           @@  sÕ  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 m	 Z	 d  d l
 m Z d  d l m Z m Z m Z m Z m Z y$ d  d l m Z d  d l m Z Wn6 e k
 rî d	 e f d
 „  ƒ  YZ e ƒ  Z d Z n Xd e f d „  ƒ  YZ d e f d „  ƒ  YZ d e f d „  ƒ  YZ d e f d „  ƒ  YZ d e j f d „  ƒ  YZ d e j 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   cycle(   t   itemst   range(   t   noop(   t   AppCaset   Mockt   SkipTestt   callt   patch(   t   prefork(   t   asynpoolt   _mpc           B@  s$   e  Z d  Z d e f d „  ƒ  YZ RS(   i   t   TaskPoolc           B@  s5   e  Z e ƒ  Z d  „  Z d „  Z d „  Z d „  Z RS(   c         O@  s   d  S(   N(    (   t   selft   argst   kwargs(    (    sG   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/concurrency/test_prefork.pyt   __init__   s    c         C@  s   d  S(   N(    (   R   (    (    sG   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/concurrency/test_prefork.pyt   start   s    c         C@  s   d  S(   N(    (   R   (    (    sG   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/concurrency/test_prefork.pyt   stop   s    c         O@  s   d  S(   N(    (   R   R   R   (    (    sG   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/concurrency/test_prefork.pyt   apply_async    s    (   t   __name__t
   __module__R   t   _poolR   R   R   R   (    (    (    sG   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/concurrency/test_prefork.pyR      s
   				(   R   R   t   RUNt   objectR   (    (    (    sG   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/concurrency/test_prefork.pyR      s   t   Objectc           B@  s   e  Z d  „  Z RS(   c         K@  s3   g  t  | ƒ D] \ } } t |  | | ƒ ^ q d  S(   N(   R   t   setattr(   R   R   t   kt   v(    (    sG   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/concurrency/test_prefork.pyR   (   s    (   R   R   R   (    (    (    sG   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/concurrency/test_prefork.pyR   &   s   t
   MockResultc           B@  s#   e  Z d  „  Z d „  Z d „  Z RS(   c         C@  s   | |  _  | |  _ d  S(   N(   t   valuet   pid(   R   R   R    (    (    sG   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/concurrency/test_prefork.pyR   .   s    	c         C@  s
   |  j  g S(   N(   R    (   R   (    (    sG   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/concurrency/test_prefork.pyt   worker_pids2   s    c         C@  s   |  j  S(   N(   R   (   R   (    (    sG   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/concurrency/test_prefork.pyt   get5   s    (   R   R   R   R!   R"   (    (    (    sG   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/concurrency/test_prefork.pyR   ,   s   		t   MockPoolc           B@  s˜   e  Z e Z e Z e Z e Z d Z d  „  Z	 d „  Z
 d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d d	 „ Z d d
 „ Z d „  Z d „  Z RS(   c      	   O@  s¡   t  |  _ t ƒ  |  _ t ƒ  |  _ t ƒ  |  _ t j |  _ | j	 d ƒ |  _
 g  t |  j
 ƒ D]! } t d | d d d d ƒ ^ q[ |  _ t t |  j
 ƒ ƒ |  _ d  S(   Nt	   processesR    t   inqW_fdi   t   outqR_fdi   (   t   Truet   startedR   t   _timeout_handlert   _result_handlert   maintain_poolt   mpR   t   _stateR"   t
   _processesR   R   R   R   t   _current_proc(   R   R   R   t   i(    (    sG   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/concurrency/test_prefork.pyR   @   s    	7c         C@  s   t  |  _ d |  _ d  S(   Nt   CLOSE(   R'   t   closedR-   (   R   (    (    sG   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/concurrency/test_prefork.pyt   closeK   s    	c         C@  s   t  |  _ d  S(   N(   R'   t   joined(   R   (    (    sG   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/concurrency/test_prefork.pyt   joinO   s    c         C@  s   t  |  _ d  S(   N(   R'   t
   terminated(   R   (    (    sG   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/concurrency/test_prefork.pyt	   terminateR   s    c         O@  s   d  S(   N(    (   R   R   R   (    (    sG   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/concurrency/test_prefork.pyt   terminate_jobU   s    c         O@  s   d  S(   N(    (   R   R   R   (    (    sG   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/concurrency/test_prefork.pyt   restartX   s    c         O@  s   d  S(   N(    (   R   R   R   (    (    sG   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/concurrency/test_prefork.pyt   handle_result_event[   s    c         C@  s   d  S(   N(    (   R   (    (    sG   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/concurrency/test_prefork.pyt   flush^   s    i   c         C@  s   |  j  | 7_  d  S(   N(   R.   (   R   t   n(    (    sG   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/concurrency/test_prefork.pyt   growa   s    c         C@  s   |  j  | 8_  d  S(   N(   R.   (   R   R<   (    (    sG   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/concurrency/test_prefork.pyt   shrinkd   s    c         O@  s   d  S(   N(    (   R   R   R   (    (    sG   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/concurrency/test_prefork.pyR   g   s    c         C@  s   d  S(   N(    (   R   t   loop(    (    sG   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/concurrency/test_prefork.pyt   register_with_event_loopj   s    N(   R   R   t   FalseR(   R2   R4   R6   t   NoneR-   R   R3   R5   R7   R8   R9   R:   R;   R=   R>   R   R@   (    (    (    sG   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/concurrency/test_prefork.pyR#   9   s"   									t   ExeMockPoolc           B@  s   e  Z d i  e d  „ Z RS(   c         C@  sN   d d l  m } | | | Ž  } | d | | f ƒ j ƒ  t | t |  j ƒ ƒ S(   Ni    (   t   Timergš™™™™™¹?(   t	   threadingRD   R   R   t   nextR/   (   R   t   targetR   R   t   callbackRD   t   res(    (    sG   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/concurrency/test_prefork.pyR   p   s    (    (   R   R   R   R   (    (    (    sG   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/concurrency/test_prefork.pyRC   n   s   R   c           B@  s   e  Z e Z Z RS(    (   R   R   R#   t   Poolt   BlockingPool(    (    (    sG   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/concurrency/test_prefork.pyR   w   s   t   ExeMockTaskPoolc           B@  s   e  Z e Z Z RS(    (   R   R   RC   RJ   RK   (    (    (    sG   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/concurrency/test_prefork.pyRL   {   s   t   PoolCasec           B@  s   e  Z d  „  Z RS(   c         C@  s4   y d d  l  } Wn t k
 r/ t d ƒ ‚ n Xd  S(   Ni    s   multiprocessing not supported(   t   multiprocessingt   ImportErrorR   (   R   RN   (    (    sG   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/concurrency/test_prefork.pyt   setup   s    (   R   R   RP   (    (    (    sG   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/concurrency/test_prefork.pyRM      s   t   test_AsynPoolc           B@  s,   e  Z d  „  Z d „  Z d „  Z d „  Z RS(   c         C@  sl   d „  } | ƒ  } |  j  t j | ƒ ƒ t | ƒ |  j t j | ƒ ƒ t | ƒ |  j t j | ƒ ƒ d  S(   Nc           s@  s   d Vd Vd  S(   Ni   i   (    (    (    (    sG   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/concurrency/test_prefork.pyt   genŒ   s    (   t
   assertTrueR   t   gen_not_startedRF   t   assertFalset   list(   R   RR   t   g(    (    sG   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/concurrency/test_prefork.pyt   test_gen_not_startedŠ   s    		

c         @  s  t  j ƒ  ‰  t j ˆ  _ t d ƒ þ ‰ d g g  g  f ˆ _ |  j t j t	 d g ƒ ƒ d g g  d f ƒ g  g  d g f ˆ _ |  j t j t	 d g ƒ d  t	 d g ƒ ƒ d g g  d f ƒ t  j ƒ  } t j | _ | ˆ _ t	 d g ƒ } |  j t j | ƒ g  g  d f ƒ |  j d | ƒ Wd  QXt d ƒ s ‰ ˆ  ˆ _ t	 d g ƒ } |  j t j | ƒ g  g  d f ƒ ˆ j t d g g  g  d ƒ g ƒ |  j d | ƒ Wd  QXt d ƒ ? ‰ t ƒ  ˆ _ |  j t ƒ  t j t	 d g ƒ ƒ Wd  QXWd  QXt d ƒ N ‰ ‡  ‡ f d †  } | ˆ _ |  j t ƒ  t j t	 d g ƒ ƒ Wd  QXWd  QXt d ƒ Q ‰ ‡  ‡ f d †  } | ˆ _ |  j t  j ƒ  t j t	 d g ƒ ƒ Wd  QXWd  QXt d ƒ Q ‰ t  j ƒ  ˆ _ d ˆ j _ |  j t  j ƒ  t j t	 d g ƒ ƒ Wd  QXWd  QXd  S(   Ns   select.selecti   i    i   c          @  s   t  ƒ  ˆ _ ˆ  ‚ d  S(   N(   t   MemoryErrort   side_effect(   R   (   t   ebadft   select(    sG   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/concurrency/test_prefork.pyt   se¼   s    c          @  s%   t  j ƒ  ˆ _ d ˆ j _ ˆ  ‚ d  S(   Ni)  (   t   sockett   errorRZ   t   errno(   R   (   R[   R\   (    sG   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/concurrency/test_prefork.pyt   se2Å   s    iV…  (   R^   R_   R`   t   EBADFR	   t   return_valuet   assertEqualR   t   _selectt   setRB   t   EINTRRZ   t   assertInt   assert_has_callsR   t   assertNotInRY   t   assertRaises(   R   t   eintrt   readersR]   Ra   (    (   R[   R\   sG   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/concurrency/test_prefork.pyt   test_select–   sT    $	"	"""	"	"c         C@  sS   t  ƒ  } t j | d i d d 6ƒ } | ƒ  |  j | j ƒ | j d d d ƒd  S(   Ni   t   foo(   i   (   R   R   t   promiseRS   t   readyt   assert_called_with(   R   t   funt   x(    (    sG   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/concurrency/test_prefork.pyt   test_promiseÔ   s
    	c         C@  sE   t  j t ƒ  t ƒ  ƒ } | j d ƒ | j j j t  j d f ƒ d  S(   NiÒ  (   iÒ  (   R   t   WorkerR   t   on_loop_startt   outqt   putRr   t	   WORKER_UP(   R   t   w(    (    sG   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/concurrency/test_prefork.pyt   test_WorkerÛ   s    (   R   R   RX   Rn   Ru   R|   (    (    (    sG   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/concurrency/test_prefork.pyRQ   ˆ   s   		>	t   test_ResultHandlerc           B@  s   e  Z d  „  Z RS(   c         C@  s  t  j t ƒ  t ƒ  i  t ƒ  t ƒ  t ƒ  t ƒ  t ƒ  d i  d t ƒ  d t ƒ  ƒ} |  j | ƒ t d d ƒ } t d d ƒ } | _ t g  ƒ | _ t ƒ  | _ | j | ƒ t ƒ  } | j	 d <| j
 j } t | j _ | j d ƒ | j d ƒ | j j | j d | j ƒ d  S(	   Nt   fileno_to_outqt   on_process_alivet   on_job_readyt   namet   hubt   recv_messagei   i   (   R   t   ResultHandlerR   RS   t   _recv_messaget   iterRc   t   on_state_changeR@   R~   Rx   t   _readerRA   t   pollt   handle_eventRr   t
   add_reader(   R   Rt   R‚   t   recvt   proct   reader(    (    sG   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/concurrency/test_prefork.pyt   test_process_resultã   s&    		(   R   R   R   (    (    (    sG   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/concurrency/test_prefork.pyR}   á   s   t   test_TaskPoolc           B@  s>   e  Z d  „  Z d „  Z d „  Z d „  Z d „  Z d „  Z RS(   c         C@  s½   t  d ƒ } | j ƒ  |  j | j j ƒ |  j | j j t j k ƒ | j } | j ƒ  |  j | j	 ƒ |  j | j
 ƒ | j ƒ  | j ƒ  | j } | j ƒ  | j ƒ  |  j | j ƒ d  S(   Ni
   (   R   R   RS   R   R(   R-   R   R   R   R2   R4   R7   R6   (   R   t   poolR   (    (    sG   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/concurrency/test_prefork.pyt
   test_startý   s    
	


	

c         C@  s0   t  d ƒ } | j ƒ  | j d „  d i  ƒ d  S(   Ni
   c         S@  s   |  S(   N(    (   Rt   (    (    sG   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/concurrency/test_prefork.pyt   <lambda>  t    i   (   i   (   R   R   R   (   R   R‘   (    (    sG   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/concurrency/test_prefork.pyt   test_apply_async  s    
c         C@  ss   t  d ƒ } | j ƒ  |  j | j j d ƒ | j ƒ  |  j | j j d ƒ | j d ƒ |  j | j j d ƒ d  S(   Ni
   i   i   i	   (   R   R   Rd   R   R.   R=   R>   (   R   R‘   (    (    sG   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/concurrency/test_prefork.pyt   test_grow_shrink  s    

c         @  s«   t  d ƒ } g  t | j ƒ D] } t d | ƒ ^ q ‰  d t f ‡  f d †  ƒ  Y} | ƒ  | _ | j } |  j | d | j ƒ |  j | d d ƒ |  j | d d
 ƒ d  S(   Ni
   R    t   _Poolc           @  s)   e  Z ˆ  Z d Z d  Z d Z d „  Z RS(   i
   i   c         _@  s   i  S(   N(    (   R   R   R   (    (    sG   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/concurrency/test_prefork.pyt   human_write_stats'  s    N(   R   R   R   RB   t   _maxtasksperchildt   timeoutt   soft_timeoutR˜   (    (   t   procs(    sG   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/concurrency/test_prefork.pyR—   !  s
   s   max-concurrencys   max-tasks-per-childs   N/At   timeoutsi   (   i   i
   (   R   R   t   limitR   R   R   t   infoRd   (   R   R‘   R0   R—   RŸ   (    (   Rœ   sG   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/concurrency/test_prefork.pyt	   test_info  s    +	c         C@  s-   t  d ƒ } | j ƒ  |  j | j d ƒ d  S(   Ni   (   R   R   Rd   t   num_processes(   R   R‘   (    (    sG   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/concurrency/test_prefork.pyt   test_num_processes/  s    
c         C@  sx   t  d ƒ ‚ d „  } |  j d ƒ } t j d ƒ | j ƒ  | | ƒ } | j ƒ  t j d ƒ |  j | | | ƒ ƒ d  S(   Ns   functional testc         S@  s&   t  g  |  j j D] } | j ^ q ƒ S(   N(   Rf   R   R    (   R‘   t   p(    (    sG   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/concurrency/test_prefork.pyt   get_pids7  s    i   g      à?(   R   R   t   timet   sleepR   R9   Rd   (   R   R¤   t   tpt   pids(    (    sG   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/concurrency/test_prefork.pyt   test_restart4  s    	

(   R   R   R’   R•   R–   R    R¢   R©   (    (    (    sG   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/concurrency/test_prefork.pyR   û   s   						($   t
   __future__R    R`   R^   R¥   t	   itertoolsR   t   celery.fiveR   R   t   celery.utils.functionalR   t   celery.tests.caseR   R   R   R   R	   t   celery.concurrencyR
   R,   R   RO   R   R   RB   R   R   R#   RC   R   RL   RM   RQ   R}   R   (    (    (    sG   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/concurrency/test_prefork.pyt   <module>   s0   (	
5		Y