
    Phs.                     R   d dl Z 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Z	d dl	m
Z
 d dlmZ d dlmZmZmZ d dlmZmZmZmZ d dlmZ d dlmZmZ  G d	 d
e      Z G d dej6                        Z G d dej6                        Z G d dej6                        Z G d de      Zy)    N)ThreadPoolExecutor)gen)IOLoop)AsyncIOLoopto_asyncio_futureAddThreadSelectorEventLoop)AsyncTestCasegen_testsetup_with_context_managerAsyncHTTPTestCase)ignore_deprecation)ApplicationRequestHandlerc                   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    S/var/www/html/saasai/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>9   s    2r   r'   )r   ensure_futurer   run_in_executorassertEqual)r   xs     r   test_asyncio_futurez#AsyncIOLoopTest.test_asyncio_future4   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>B   s    Br   )r   r   r+   )
event_loopr-   s     r   fz2AsyncIOLoopTest.test_asyncio_yield_from.<locals>.f?   s4      //1J%55dJGGAH Hs   +646r'   )r   	coroutiner,   )r   r3   results      r   test_asyncio_yield_fromz'AsyncIOLoopTest.test_asyncio_yield_from=   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_coroutineM   s     ****R. s   (*c                  .   K             d {   S 7 wr   r(   r;   s   r    native_coroutine_without_adapterzNAsyncIOLoopTest.test_asyncio_adapter.<locals>.native_coroutine_without_adapterR   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_adapterU   s     *+<+>????   c                  @   K   t                        d {   S 7 wr   r@   )r>   s   r   native_coroutine_with_adapter2zLAsyncIOLoopTest.test_asyncio_adapter.<locals>.native_coroutine_with_adapter2Y   s     *+K+MNNNNrB   r'   )r   r4   r,   r   run_syncr   r!   )r   rA   rD   r>   r;   s      @@r   test_asyncio_adapterz$AsyncIOLoopTest.test_asyncio_adapterH   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_idempotentp   s'    )'*@*@*BC



r   N)__name__
__module____qualname__propertyr   r#   r
   r.   r6   rF   rK   r(   r   r   r   r   '   sL    ) )     % %&
Pr   r   c                   $    e Zd Zd Zd Zd Zd Zy)LeakTestc                 8    t        d      j                          y )NFmake_current)r   rH   r   s    r   setUpzLeakTest.setUpw   s    '--/r   c                     	 t        j                         j                         }|j                          y # t        $ r Y y w xY wr   )r   get_event_loop_policyr   rH   	ExceptionrI   s     r   tearDownzLeakTest.tearDown{   s=    	002AACD
 JJL	  		s   "5 	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   rH   r,   r   
orig_countirJ   	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_foreverrH   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)rL   rM   rN   rU   rY   rh   rn   r(   r   r   rQ   rQ   v   s    0	''r   rQ   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 )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   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   rk   r!   rs   shutdown_asyncgensrH   r   r   rf   rJ   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 )Nr[   FrS   )r_   r   rE   rs   rH   r   r   s      r   test_tornadoz#SelectorThreadLeakTest.test_tornado   sE    rA u-DMM$667JJL  	""$r   N)	rL   rM   rN   rU   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                     t        | t                      t        j                  j                  j
                  | _        t	        j                         | _        t        d      | _	        y )Nrj   )
r   r   tornadoplatformr   AnyThreadEventLoopPolicyrW   orig_policyr   executorr   s    r   rU   z"AnyThreadEventLoopPolicyTest.setUp   sN    "4);)=> $$== 	% #88:*1-r   c                 v    t        j                  | j                         | j                  j	                          y r   )r   set_event_loop_policyr   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   rH   )rJ   s    r   get_and_close_event_loopzWAnyThreadEventLoopPolicyTest.get_event_loop_on_thread.<locals>.get_and_close_event_loop   s      ))+DJJLKr   )r   submitr5   )r   r   futures      r   get_event_loop_on_threadz5AnyThreadEventLoopPolicyTest.get_event_loop_on_thread   s*    
	 %%&>?}}r   c                 \   t        j                         5  t        j                  dt               | j	                  t
        | j                  j                  t        j                        j                         t        j                  | j                                | 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`   ra   rb   rc   assertRaisesRuntimeErrorr   r   r   r   r5   r   r   assertIsInstanceAbstractEventLoopr   s    r   test_asyncio_accessorz2AnyThreadEventLoopPolicyTest.test_asyncio_accessor   s    $$&!!(,>? dmm2273I3IJQQ ))$*G*G*IJ!!$$W%;%;<CCE)) MM  !IJQQS '&&s   DD""D+c                    t        j                         5  t        j                  dt               | j	                  | j
                  j                  t        j                        j                         t               | j
                  j                  d       j                          t        j                  | j                                | 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   r5   r   r   r   r   s    r   test_tornado_accessorz2AnyThreadEventLoopPolicyTest.test_tornado_accessor  s     $$&!!(,>?!!$--"6"6v~~"F"M"M"OQWX MM  !IJQQS))$*G*G*IJ!!$--"6"6v~~"F"M"M"OQWXMM  !IJQQS '&&s   D(EEN)rL   rM   rN   rU   rY   r   r   r   r(   r   r   r   r      s    .! T$Tr   r   c                   p    e Zd ZdZdZ ej                  dd      Zej                  e       de	fdZ
d Zy	)
SelectorThreadContextvarsTestfoo/tornado_test_ctxdefault)r   returnc                 n    | j                    G fddt              }t        | j                  |fg      S )Nc                       e Zd Z fdZy)6SelectorThreadContextvarsTest.get_app.<locals>.Handlerc                 L   K   | j                  j                                y wr   )writeget)r   r   s    r   r   z:SelectorThreadContextvarsTest.get_app.<locals>.Handler.get  s      

+//12s   !$N)rL   rM   rN   r   )r   s   r   Handlerr     s    
3r   r   )r   r   r   test_endpoint)r   r   r   s     @r   get_appz%SelectorThreadContextvarsTest.get_app  s6    00	3n 	3 T//9:;;r   c                     | j                  | j                  | j                  | j                        j                  j                                y r   )r,   	ctx_valuefetchr   bodydecoder   s    r   test_context_varsz/SelectorThreadContextvarsTest.test_context_vars)  s4    D4F4F)G)L)L)S)S)UVr   N)rL   rM   rN   r   r   contextvars
ContextVarr   setr   r   r   r(   r   r   r   r     sB    IM-{--.@)T#< <$Wr   r   ) r   r   rt   rx   unittestr`   concurrent.futuresr   tornado.platform.asyncior   r   tornado.ioloopr   r   r   r   tornado.testingr	   r
   r   r   tornado.test.utilr   tornado.webr   r   r   TestCaserQ   rp   r   r   r(   r   r   <module>r      s          1   ! 
  1 3Lm L^%'x   %'P0%X.. 0%f=T8#4#4 =T@W$5 Wr   