
    g(                        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    N/var/www/openai/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   s    2r   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>:   s    Br   )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   r/   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$   r7   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   r9   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   r0   r(   r   run_syncr   r   )r   r=   r@   r:   r7   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*   r2   rB   rG   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   rD   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   rQ   r   rD   	ExceptionrS   rR   rE   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   rD   r(   r   
orig_countirF   	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 )NrZ      )r\   r   r]   r^   r   new_event_loopr   currentr   run_foreverrD   r(   rc   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)rH   rI   rJ   rU   rX   rg   rm   r$   r   r   rM   rM   n   s    H8	''r   rM   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   rU   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 )Nri   g?)timelistrs   	enumerater\   ru   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   rk   r   s    r   rr   z.SelectorThreadLeakTest.dummy_tornado_coroutine   s     s   c                     t        d      D ]%  }t        j                  | j                                ' | j	                          y NrZ   )r^   r   rq   rr   r~   )r   re   s     r   test_asyncio_runz'SelectorThreadLeakTest.test_asyncio_run   s3    rAKK4467  	""$r   c                    t        d      D ]d  }t        j                         }|j                  | j	                                |j                  |j                                |j                          f | j                          y r   )r^   r   rj   r   rr   shutdown_asyncgensrD   r~   r   re   rF   s      r   test_asyncio_manualz*SelectorThreadLeakTest.test_asyncio_manual   sc    rA))+D##D$@$@$BC##D$;$;$=>JJL  	""$r   c                     t        d      D ]9  }t        d      }|j                  | j                         |j	                          ; | j                          y )NrZ   FrO   )r^   r   rA   rr   rD   r~   r   s      r   test_tornadoz#SelectorThreadLeakTest.test_tornado   sE    rA u-DMM$667JJL  	""$r   N)	rH   rI   rJ   rU   r~   rr   r   r   r   r$   r   r   ro   ro      s!    :L%%%r   ro   c                   *    e Zd Zd Zd Zd Zd Zd Zy)AnyThreadEventLoopPolicyTestc                 V    t        j                         | _        t        d      | _        y )Nri   )r   rQ   rR   r   executorr   s    r   rU   z"AnyThreadEventLoopPolicyTest.setUp   s    "88:*1-r   c                 v    t        j                  | j                         | j                  j	                          y r   )r   rS   rR   r   shutdownr   s    r   rX   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   rD   )rF   s    r   get_and_close_event_loopzWAnyThreadEventLoopPolicyTest.get_event_loop_on_thread.<locals>.get_and_close_event_loop   s      ))+DJJLKr   )r   submitr1   )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)Ir   )r_   r`   ra   rb   assertRaisesRuntimeErrorr   r   r   r   r1   rS   r   assertIsInstanceAbstractEventLoopr   s    r   test_asyncio_accessorz2AnyThreadEventLoopPolicyTest.test_asyncio_accessor   s    $$&!!(,>? dmm2273I3IJQQ ))*B*DE!!$$W%;%;<CCE)) MM  !IJQQS '&&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_   r`   ra   rb   r   r   r   r   rk   r1   r   rS   r   r   s    r   test_tornado_accessorz2AnyThreadEventLoopPolicyTest.test_tornado_accessor   s     $$&!!(,>?!!$--"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 '&&s   D"E  E	N)rH   rI   rJ   rU   rX   r   r   r   r$   r   r   r   r      s    .! T$Tr   r   )r   rs   rw   unittestr_   concurrent.futuresr   tornador   tornado.ioloopr   tornado.platform.asyncior   r   r   r	   tornado.testingr
   r   r   TestCaserM   ro   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   