
    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 d dlmZ d dl	m
Z
 d dlmZmZmZmZ d dlmZmZ  G d de      Z G d	 d
ej(                        Z G d dej(                        Z G d dej(                        Zy)    N)ThreadPoolExecutor)gen)IOLoop)AsyncIOLoopto_asyncio_futureAnyThreadEventLoopPolicyAddThreadSelectorEventLoop)AsyncTestCasegen_testc                   N    e Zd Zed        Zd Zed        Zed        Zd Z	d Z
y)AsyncIOLoopTestc                 .    | j                   j                  S N)io_loopasyncio_loopselfs    T/var/www/cvtools/html/venv/lib/python3.12/site-packages/tornado/test/asyncio_test.pyr   zAsyncIOLoopTest.asyncio_loop    s    ||(((    c                 p      fd} j                   j                   |               j                          y )Nc                  h   K   t        j                         j                   j                         y wr   )asyncioget_event_loop	call_soonstopr   s   r   add_callbackz;AsyncIOLoopTest.test_asyncio_callback.<locals>.add_callback&   s"     ""$..tyy9s   /2)r   run_until_completewait)r   r   s   ` r   test_asyncio_callbackz%AsyncIOLoopTest.test_asyncio_callback$   s)    	: 	,,\^<		r   c              #      K   t        j                  t        j                         j                  d d             }| j	                  |d       y w)Nc                       yN*    r$   r   r   <lambda>z5AsyncIOLoopTest.test_asyncio_future.<locals>.<lambda>1       r   r#   )r   ensure_futurer   run_in_executorassertEqual)r   xs     r   test_asyncio_futurez#AsyncIOLoopTest.test_asyncio_future,   sH      ''""$44T:F
 
 	Bs   AAc              #   n   K   t         j                  d        } |       }| j                  |d       y w)Nc               3   p   K   t        j                         } | j                  d d       E d {   }|S 7 w)Nc                       yr"   r$   r$   r   r   r%   zDAsyncIOLoopTest.test_asyncio_yield_from.<locals>.f.<locals>.<lambda>:   r&   r   )r   r   r(   )
event_loopr*   s     r   fz2AsyncIOLoopTest.test_asyncio_yield_from.<locals>.f7   s4      //1J%55dJGGAH Hs   +646r#   )r   	coroutiner)   )r   r0   results      r   test_asyncio_yield_fromz'AsyncIOLoopTest.test_asyncio_yield_from5   s7     		 
	
 s$s   35c                 t   t         j                  d        fdfd}fd}| j                  | j                  j	                        d       | j                  | j                  j	                  |      d       | j                  | j                  j	                  |      d       | j                  | j
                  j                                d       | j                  | j
                  j                   |             d       | j                  | j
                  j                   |             d       y )Nc               3   X   K   t         j                   t        j                  d      wr"   )r   momentReturnr$   r   r   tornado_coroutinez?AsyncIOLoopTest.test_asyncio_adapter.<locals>.tornado_coroutineE   s     ****R. s   (*c                  .   K             d {   S 7 wr   r$   r8   s   r    native_coroutine_without_adapterzNAsyncIOLoopTest.test_asyncio_adapter.<locals>.native_coroutine_without_adapterJ   s     *,,,,s   c                  @   K   t                        d {   S 7 wr   r   r:   s   r   native_coroutine_with_adapterzKAsyncIOLoopTest.test_asyncio_adapter.<locals>.native_coroutine_with_adapterM   s     *+<+>????   c                  @   K   t                        d {   S 7 wr   r=   )r;   s   r   native_coroutine_with_adapter2zLAsyncIOLoopTest.test_asyncio_adapter.<locals>.native_coroutine_with_adapter2Q   s     *+K+MNNNNr?   r#   )r   r1   r)   r   run_syncr   r   )r   r>   rA   r;   r8   s      @@r   test_asyncio_adapterz$AsyncIOLoopTest.test_asyncio_adapter@   s   
 
	! 
	!	-	@	O 	../OPRTU../LMrR../MNPRS 	001Q1ST	
 	001N1PQ	
 	001O1QR	
r   c                 ~    t        t        j                               }|j                          |j                          y r   )r	   r   r   closer   loops     r    test_add_thread_close_idempotentz0AsyncIOLoopTest.test_add_thread_close_idempotenth   s'    )'*@*@*BC



r   N)__name__
__module____qualname__propertyr   r   r   r+   r3   rC   rH   r$   r   r   r   r      sL    ) )     % %&
Pr   r   c                   $    e Zd Zd Zd Zd Zd Zy)LeakTestc                     t        d      j                          t        j                         | _        t        j
                  t        j                                y )NFmake_current)r   rE   r   get_event_loop_policyorig_policyset_event_loop_policyDefaultEventLoopPolicyr   s    r   setUpzLeakTest.setUpo   s=    '--/ #88:%%g&D&D&FGr   c                     	 t        j                         j                         }|j                          t        j
                  | j                         y # t        $ r Y +w xY wr   )r   rR   r   rE   	ExceptionrT   rS   rF   s     r   tearDownzLeakTest.tearDownw   sQ    	002AACD
 JJL%%d&6&67  		s   "A 	A A c                 l   t        t        j                        }t        d      D ]S  }t	        j
                         5  t	        j                  dt               t               }|j                          d d d        U t        t        j                        |z
  }| j                  |d       y # 1 sw Y   xY w)N
   ignorer   )lenr   _ioloop_for_asynciorangewarningscatch_warningssimplefilterDeprecationWarningr   rE   r)   r   
orig_countirG   	new_counts        r   test_ioloop_close_leakzLeakTest.test_ioloop_close_leak   s    334
r 	A((* %%h0BC"}

 	 223j@	A& s   5B**B3	c                    t        t        j                        }t        d      D ]p  }t	        j
                         }|j                  t        j                         |j                  |j                         |j                          |j                          r t        t        j                        |z
  }| j                  |d       y )Nr[      )r]   r   r^   r_   r   new_event_loopr   currentr   run_foreverrE   r)   rd   s        r   test_asyncio_close_leakz LeakTest.test_asyncio_close_leak   s    334
r 	A))+DNN6>>*NN499%JJL	 223j@	 	A&r   N)rI   rJ   rK   rV   rY   rh   rn   r$   r   r   rN   rN   n   s    H8	''r   rN   c                   0    e Zd Zd Zd Zd Zd Zd Zd Zy)SelectorThreadLeakTestc                 |    t        j                  | j                                t        j                         | _        y r   )r   rundummy_tornado_coroutine	threadingactive_countorig_thread_countr   s    r   rV   zSelectorThreadLeakTest.setUp   s*     	D0023!*!7!7!9r   c                 r   t        j                          dz   }t        j                          |k  rct        t        j                               }t	        |      | j
                  k  rn-t        j                  d       t        j                          |k  rc| j                  t	              | j
                  |       y )Nrj   g?)timelistrt   	enumerater]   rv   sleepassertLessEqual)r   deadlinethreadss      r   assert_no_thread_leakz,SelectorThreadLeakTest.assert_no_thread_leak   s     99;?iikH$9..01G7|t555JJsO	 iikH$
 	S\4+A+A7Kr   c                 4   K   t        j                          y wr   )r   rl   r   s    r   rs   z.SelectorThreadLeakTest.dummy_tornado_coroutine   s     s   c                     t        d      D ]%  }t        j                  | j                                ' | j	                          y Nr[   )r_   r   rr   rs   r   )r   rf   s     r   test_asyncio_runz'SelectorThreadLeakTest.test_asyncio_run   s8    r 	8AKK4467	8 	""$r   c                    t        d      D ]d  }t        j                         }|j                  | j	                                |j                  |j                                |j                          f | j                          y r   )r_   r   rk   r   rs   shutdown_asyncgensrE   r   r   rf   rG   s      r   test_asyncio_manualz*SelectorThreadLeakTest.test_asyncio_manual   sh    r 	A))+D##D$@$@$BC##D$;$;$=>JJL	 	""$r   c                     t        d      D ]9  }t        d      }|j                  | j                         |j	                          ; | j                          y )Nr[   FrP   )r_   r   rB   rs   rE   r   r   s      r   test_tornadoz#SelectorThreadLeakTest.test_tornado   sJ    r 	A u-DMM$667JJL	 	""$r   N)	rI   rJ   rK   rV   r   rs   r   r   r   r$   r   r   rp   rp      s!    :L%%%r   rp   c                   *    e Zd Zd Zd Zd Zd Zd Zy)AnyThreadEventLoopPolicyTestc                 V    t        j                         | _        t        d      | _        y )Nrj   )r   rR   rS   r   executorr   s    r   rV   z"AnyThreadEventLoopPolicyTest.setUp   s    "88:*1-r   c                 v    t        j                  | j                         | j                  j	                          y r   )r   rT   rS   r   shutdownr   s    r   rY   z%AnyThreadEventLoopPolicyTest.tearDown   s&    %%d&6&67 r   c                 ^    d }| j                   j                  |      }|j                         S )Nc                  N    t        j                         } | j                          | S )a#  Get the event loop. Close it if one is returned.

            Returns the (closed) event loop. This is a silly thing
            to do and leaves the thread in a broken state, but it's
            enough for this test. Closing the loop avoids resource
            leak warnings.
            r   r   rE   )rG   s    r   get_and_close_event_loopzWAnyThreadEventLoopPolicyTest.get_event_loop_on_thread.<locals>.get_and_close_event_loop   s      ))+DJJLKr   )r   submitr2   )r   r   futures      r   get_event_loop_on_threadz5AnyThreadEventLoopPolicyTest.get_event_loop_on_thread   s*    
	 %%&>?}}r   c                 P   t        j                         5  t        j                  dt               | j	                  t
        | j                  j                  t        j                        j                         t        j                  t                      | j                  | j                  j                  t        j                        j                         t        j                         | j                  j                  d       j                          d d d        y # 1 sw Y   y xY w)Nr\   c                  F    t        j                         j                         S r   r   r$   r   r   r%   zDAnyThreadEventLoopPolicyTest.test_asyncio_accessor.<locals>.<lambda>       )?)?)A)G)G)I r   )r`   ra   rb   rc   assertRaisesRuntimeErrorr   r   r   r   r2   rT   r   assertIsInstanceAbstractEventLoopr   s    r   test_asyncio_accessorz2AnyThreadEventLoopPolicyTest.test_asyncio_accessor   s    $$& 	T!!(,>? dmm2273I3IJQQ ))*B*DE!!$$W%;%;<CCE)) MM  !IJQQS	T 	T 	Ts   C>DD%c                    t        j                         5  t        j                  dt               | j	                  | j
                  j                  t        j                        j                         t               | j
                  j                  d       j                          t        j                  t                      | j	                  | j
                  j                  t        j                        j                         t               | j
                  j                  d       j                          d d d        y # 1 sw Y   y xY w)Nr\   c                  F    t        j                         j                         S r   r   r$   r   r   r%   zDAnyThreadEventLoopPolicyTest.test_tornado_accessor.<locals>.<lambda>  r   r   c                  F    t        j                         j                         S r   r   r$   r   r   r%   zDAnyThreadEventLoopPolicyTest.test_tornado_accessor.<locals>.<lambda>  r   r   )r`   ra   rb   rc   r   r   r   r   rl   r2   r   rT   r   r   s    r   test_tornado_accessorz2AnyThreadEventLoopPolicyTest.test_tornado_accessor   s     $$& 		T!!(,>?!!$--"6"6v~~"F"M"M"OQWX MM  !IJQQS))*B*DE!!$--"6"6v~~"F"M"M"OQWXMM  !IJQQS		T 		T 		Ts   D"E  E	N)rI   rJ   rK   rV   rY   r   r   r   r$   r   r   r   r      s    .! T$Tr   r   )r   rt   rx   unittestr`   concurrent.futuresr   tornador   tornado.ioloopr   tornado.platform.asyncior   r   r   r	   tornado.testingr
   r   r   TestCaserN   rp   r   r$   r   r   <module>r      sw         1  !  4Lm L^*'x   *'Z0%X.. 0%f7T8#4#4 7Tr   