
    Ef                     $   d dl Z d dlZd dlZd dlZd dlZd dlmZmZ 	 d dlm	Z
 d dlmZ dZdZerd dlZej"                  dk\  re rdZ G d d	ej$                        Z G d
 de      Zererd dlmc mc mZ  G d de      Zyyy# e$ r dZY bw xY w)    N)BaseZMQTestCasehave_gevent)IOLoop)ioloopTF)   c                   ,     e Zd Zd fd	Zd Zd Z xZS )Delayc                 ~    || _         || _        d| _        t        j                         | _        t        |           y )NF)fdelayaborted	threading	Conditioncondsuper__init__)selfr   r   	__class__s      7/usr/lib/python3/dist-packages/zmq/tests/test_ioloop.pyr   zDelay.__init__!   s3    
'')	    c                     | j                   j                          | j                   j                  | j                         | j                   j	                          | j
                  s| j                          y y N)r   acquirewaitr   releaser   r   r   s    r   runz	Delay.run(   sK    				tzz"		||FFH r   c                     d| _         | j                  j                          | j                  j                          | j                  j	                          y )NT)r   r   r   notifyr   r   s    r   abortzDelay.abort/   s9    						r   )   )__name__
__module____qualname__r   r   r    __classcell__r   s   @r   r	   r	       s    r   r	   c                   H     e Zd ZereZ fdZ fdZd Zd Z	d Z
d Z xZS )
TestIOLoopc                 X    t         st        j                  d       t        |           y )Nztornado required)_tornadopytestskipr   setUpr   r   s    r   r-   zTestIOLoop.setUp:   s    KK*+r   c                 "    t         |           y r   )r   tearDownr.   s    r   r0   zTestIOLoop.tearDown?   s    r   c                 &   | j                  d      fd}j                  |       t        j                  d      }|j	                          j	                          |j                         r|j                          y| j                  d       y)zsimple IOLoop creation testFmake_currentc                     K   t        j                  j                  d      } t        j                  d d      }|j                          | j                          y w)N   c                       y r    r7   r   r   <lambda>zATestIOLoop.test_simple.<locals>.start_callbacks.<locals>.<lambda>H   s    r   
   )r   PeriodicCallbackstopstart)dcpcloops     r   start_callbacksz/TestIOLoop.test_simple.<locals>.start_callbacksF   sA     ((C8B((r:BHHJHHJs   AAr!   zIOLoop failed to exitN)r   run_syncr	   r;   r<   is_aliver    fail)r   r@   tr?   s      @r   test_simplezTestIOLoop.test_simpleB   sg    {{{.	 	o&$))Q		

::<GGIII-.r   c                     t        j                         5 }| j                  j                         }t        st        || j                        sJ t        j                         }||u sJ 	 ddd       y# 1 sw Y   yxY w)z(IOLoop.instance returns the right objectN)warningscatch_warningsr   instance	t5asyncio
isinstance
BaseIOLoopr   recordr?   	base_loops       r   test_instancezTestIOLoop.test_instanceV   sj    $$& 	%&;;'')D!$444"++-I$$$	% 	% 	%s   AA22A;c                    t        j                         5 }t        j                  j	                         }t
        st        || j                        sJ t        j                         }||u sJ 	 ddd       y# 1 sw Y   yxY w)z'IOLoop.current returns the right objectN)rG   rH   r   r   currentrJ   rK   rL   rM   s       r   test_currentzTestIOLoop.test_current_   sj    $$& 	%&==((*D!$444"**,I$$$	% 	% 	%s   AA66A?c                    | j                  d      }| j                  t        j                  t        j                        \  }}|j                  |d t        j                   j                         |j                  |d t        j                   j                         |j                  dk(  sJ |j                  dk(  sJ |j                  d       |j                  dk(  sJ |j                  dk(  sJ y)zTest close(all_fds=True)Fr2   c                     | S r   r7   msgs    r   r8   z+TestIOLoop.test_close_all.<locals>.<lambda>l       # r   c                     | S r   r7   rV   s    r   r8   z+TestIOLoop.test_close_all.<locals>.<lambda>m   rX   r   T)all_fdsN)
r   create_bound_pairzmqREQREPadd_handlerr   READclosedclose)r   r?   reqreps       r   test_close_allzTestIOLoop.test_close_allh   s    {{{.))#''377;Sov}}/A/ABov}}/A/ABzzU"""zzU"""

4
 zzT!!!zzT!!!r   )r"   r#   r$   r*   rL   r   r-   r0   rE   rP   rS   re   r%   r&   s   @r   r(   r(   6   s)    
/(%%
"r   r(   c                   0    e Zd Zej                  Zd Zd Zy)TestIOLoopGreenc                     | j                   j                         }t        st        || j                         sJ t	        j                         }||u sJ y)z.Green IOLoop.instance returns the right objectN)r   rI   rJ   rK   rL   r   r?   rO   s      r   xtest_instancezTestIOLoopGreen.xtest_instance{   sG    ;;'')D!$444"++-I$$$r   c                     | j                   j                         }t        st        || j                         sJ t	        j                         }||u sJ y)z-Green IOLoop.current returns the right objectN)r   rR   rJ   rK   rL   ri   s      r   xtest_currentzTestIOLoopGreen.xtest_current   sG    ;;&&(D!$444"**,I$$$r   N)r"   r#   r$   green_ioloopr   rj   rl   r7   r   r   rg   rg   x   s    $$	%	%r   rg   )asyncior   rG   r+   r\   	zmq.testsr   r   tornado.ioloopr   rL   zmq.eventloopr   r*   ImportErrorrJ   tornadoversion_infoThreadr	   r(   zmq.green.eventloop.ioloopgreen	eventlooprm   rg   r7   r   r   <module>ry      s   
     
 23$ H 	t#	I ,<" <"~ 855%* % ;G  Hs   B BB