ó
P'^c           @@  sô   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 m Z d 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 S(   i    (   t   absolute_import(   t   Schedulet   Timert   TaskPoolt   apply_timeout(   t   AppCaset   Mockt   SkipTestt   mock_modulet   patcht
   patch_manyt   skip_if_pypyt   gevents   gevent.monkeys   gevent.greenlets   gevent.poolt   greenlett
   GeventCasec           B@  s   e  Z e d     Z RS(   c         C@  s7   y t  d  |  _ Wn t k
 r2 t d   n Xd  S(   NR   s-   gevent not installed, skipping related tests.(   t
   __import__R   t   ImportErrorR   (   t   self(    (    sF   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/concurrency/test_gevent.pyt   setup   s
    (   t   __name__t
   __module__R   R   (    (    (    sF   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/concurrency/test_gevent.pyR      s   t   test_gevent_patchc           B@  s   e  Z d    Z RS(   c         C@  sz   t  t   h t d d t O } d d  l } d	 | _ d d l m } | d d d g  |  j | j	  Wd  QXWd  QXd  S(
   Ns   gevent.monkey.patch_allt   createi    i   (   t   maybe_patch_concurrencyt   xs   -PR   (   i   i    i    (
   R   t   gevent_modulesR	   t   TrueR   t   version_infot   celeryR   t
   assertTruet   called(   R   t	   patch_allR   R   (    (    sF   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/concurrency/test_gevent.pyt   test_is_patched$   s    	(   R   R   R    (    (    (    sF   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/concurrency/test_gevent.pyR   "   s   t   test_Schedulec           B@  s   e  Z d    Z RS(   c         C@  s  t  t   
t d d  ô \ } } t | _ t   } t   | _ t   | j _ t	 | _
 t   } | j d d |  } |  j | j  | j |  | j j   |  j | j  | j j |  | j   | j j |  t	   | j _ | j   | j   } | j   Wd  QXWd  QXd  S(   Ns   gevent.greenlets   gevent.greenlet.GreenletExiti   i    (   R   R   R
   t   objectt   GreenletR   R   t	   _Greenlett   spawn_latert   KeyErrort   _GreenletExitt   _enterR   t   queuet   _entry_exitt   killt   assert_called_witht   assertFalset   _queuet   addt   cleart   side_effectt   cancel(   R   R   t   GreenletExitR   t   entryt   g(    (    sF   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/concurrency/test_gevent.pyt
   test_sched0   s,    				

(   R   R   R6   (    (    (    sF   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/concurrency/test_gevent.pyR!   .   s   t   test_TaskPoolc           B@  s   e  Z d    Z RS(   c         C@  s3  t  t   !t d d  \ } } t   } | j   | j   | j t    d  | _	 | j   t   | _	 d | j	 j
 _ d | j	 _ | j   |  j | j	 j d  |  j | j	 j
 j d  | j   |  j | j	 j d  |  j | j	 j
 j d  d d d g | _	 |  j | j d  Wd  QXWd  QXd  S(	   Ns   gevent.spawn_raws   gevent.pool.Pooli   i   i   i   i   i   (   R   R   R
   R   t   on_startt   on_stopt   on_applyR   t   Nonet   _poolt
   _semaphoret   countert   sizet   growt   assertEqualt   shrinkt   num_processes(   R   t	   spawn_rawt   PoolR   (    (    sF   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/concurrency/test_gevent.pyt	   test_poolN   s(    		

	


(   R   R   RF   (    (    (    sF   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/concurrency/test_gevent.pyR7   L   s   t
   test_Timerc           B@  s   e  Z d    Z RS(   c         C@  sZ   t  t   H t   } | j   t   | _ | j   | j   | j j j	   Wd  QXd  S(   N(
   R   R   R   t   ensure_startedR   t   schedulet   startt   stopR0   R,   (   R   R   (    (    sF   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/concurrency/test_gevent.pyt
   test_timeri   s    	


(   R   R   RL   (    (    (    sF   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/concurrency/test_gevent.pyRG   g   s   t   test_apply_timeoutc           B@  s   e  Z d    Z RS(   c         C@  sÜ   d t  f d     Y} t d d  } t d d  } t t   d d d t d d  d | d | d | |  j | j d  |  j | j  | d  | _ t t   d d d t   d | d | d | | j t	 d  d  S(	   Nt   Timeoutc           B@  s)   e  Z d Z d    Z d   Z d   Z RS(   c         S@  s   | |  j  _ d  S(   N(   t	   __class__t   value(   R   RP   (    (    sF   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/concurrency/test_gevent.pyt   __init__z   s    c         S@  s   |  S(   N(    (   R   (    (    sF   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/concurrency/test_gevent.pyt	   __enter__}   s    c         W@  s   d  S(   N(    (   R   t   exc_info(    (    sF   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/concurrency/test_gevent.pyt   __exit__   s    N(   R   R   R;   RP   RQ   RR   RT   (    (    (    sF   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/concurrency/test_gevent.pyRN   w   s   		t   namet   timeout_callbackt   apply_targett   timeouti
   t   callback(
   t	   ExceptionR   R   RA   RP   R   R   R1   R,   t   False(   R   RN   RV   RW   (    (    sF   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/concurrency/test_gevent.pyRM   u   s    (   R   R   RM   (    (    (    sF   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/concurrency/test_gevent.pyRM   s   s   N(   R   s   gevent.monkeys   gevent.greenlets   gevent.poolR   (   t
   __future__R    t   celery.concurrency.geventR   R   R   R   t   celery.tests.caseR   R   R   R   R	   R
   R   R   R   R   R!   R7   RG   RM   (    (    (    sF   /tmp/pip-unpacked-wheel-gV1wwp/celery/tests/concurrency/test_gevent.pyt   <module>   s   "4    