HEX
Server: LiteSpeed
System: Linux php-prod-1.spaceapp.ru 5.15.0-157-generic #167-Ubuntu SMP Wed Sep 17 21:35:53 UTC 2025 x86_64
User: sport3497 (1034)
PHP: 8.1.33
Disabled: NONE
Upload Files
File: //usr/local/CyberCP/lib/python3.10/site-packages/tornado/test/__pycache__/gen_test.cpython-310.pyc
o

�h-��@s�ddlZddlmZddlZddlZddlZddlZddlZddlZddl	Z	ddl
mZddlm
Z
ddlmZmZmZmZddlmZmZddlmZmZmZddlmZzddlZWneygdZYnwddlZejrwdd	lm Z m!Z!Gd
d�de�Z"Gdd
�d
e�Z#Gdd�de�Z$Gdd�de�Z%Gdd�de�Z&Gdd�de�Z'Gdd�de�Z(Gdd�de�Z)Gdd�de�Z*Gdd�de�Z+Gdd�de�Z,edur�e�-d �Z.e	�/edud!�Gd"d#�d#e��Z0e1d$kr�e	�2�dSdS)%�N)�futures)�Future)�app_log)�AsyncHTTPTestCase�
AsyncTestCase�	ExpectLog�gen_test)�skipOnTravis�skipNotCPython)�Application�RequestHandler�	HTTPError)�gen)�List�Optionalc@s0eZdZejdd��Zejdd��Zejdd��Zejdd��Zd	d
�Z	dd�Z
d
d�Zdd�Zdd�Z
dd�Zdd�Zdd�Zdd�Zdd�Zdd�Zeedd ���Zed!d"��Zed#d$��Zed%d&��Zed'd(��Zed)d*��Zed+d,��Zed-d.��Zd/d0�Zd1d2�Zd3d4�Z d5d6�Z!d7d8�Z"d9d:�Z#d;S)<�GenBasicTestccs"�t|�D]}tjVqt�|��)z0Returns arg after a number of IOLoop iterations.)�ranger�moment�Return)�self�
iterations�arg�i�r�H/usr/local/CyberCP/lib/python3.10/site-packages/tornado/test/gen_test.py�delays�

zGenBasicTest.delayccs�tjV|S�N�rr�r�resultrrr�async_future&��zGenBasicTest.async_futureccs�tjV|�rr)r�errr�async_exception+r!zGenBasicTest.async_exceptionccs�tjVt�|d���N��rrr�r�xrrr�
add_one_async0s�zGenBasicTest.add_one_asynccC�tjdd��}|j�|�dS)NcS�dSrrrrrr�f6�z%GenBasicTest.test_no_yield.<locals>.f�r�	coroutine�io_loop�run_sync�rr,rrr�
test_no_yield5�
zGenBasicTest.test_no_yieldcC�$tjdd��}|�t|jj|�dS)NcS�dddS�Nr%rrrrrrr,=�z-GenBasicTest.test_exception_phase1.<locals>.f�rr/�assertRaises�ZeroDivisionErrorr0r1r2rrr�test_exception_phase1<s
z"GenBasicTest.test_exception_phase1cCr5)Ncs��tjVdddSr7rrrrrr,D��z-GenBasicTest.test_exception_phase2.<locals>.fr9r2rrr�test_exception_phase2Cs
z"GenBasicTest.test_exception_phase2cC�&tjdd��}|�tj|jj|�dS)Ncs��dVdS�N�*rrrrrr,L��
z(GenBasicTest.test_bogus_yield.<locals>.f�rr/r:�
BadYieldErrorr0r1r2rrr�test_bogus_yieldK�
zGenBasicTest.test_bogus_yieldcCr@)NcsrA�N�r%�rrrrrr,SrDz.GenBasicTest.test_bogus_yield_tuple.<locals>.frEr2rrr�test_bogus_yield_tupleRrHz#GenBasicTest.test_bogus_yield_tuplecCs*tjdd��}|j�|�|j�|�dS)Ncs��tjVdSrrrrrrr,Z��z"GenBasicTest.test_reuse.<locals>.fr.r2rrr�
test_reuseYs
zGenBasicTest.test_reusecCr*)Ncss�dVdSrrrrrrr,brDz!GenBasicTest.test_none.<locals>.fr.r2rrr�	test_nonear4zGenBasicTest.test_nonec�"tj�fdd��}�j�|�dS)Nc3s,���d���d�gV}��|ddg�dS)Nr%rK�)r)�assertEqual��results�rrrr,i��z"GenBasicTest.test_multi.<locals>.fr.r2rrVr�
test_multih�zGenBasicTest.test_multicrQ)Nc3s4�t��d���d�d�V}��|tddd��dS)Nr%rK��foo�barrR)�dictr)rSrTrVrrr,q��z'GenBasicTest.test_multi_dict.<locals>.fr.r2rrVr�test_multi_dictprYzGenBasicTest.test_multi_dictcrQ)Nc3s6�t���dd���dd�g�V}��|ddg�dS)NrR�v1r%�v2)r�multi_futurerrS��	responsesrVrrr,ys
��z*GenBasicTest.test_multi_delayed.<locals>.fr.r2rrVr�test_multi_delayedx�zGenBasicTest.test_multi_delayedcrQ)Nc3s>�t�t��dd���dd�d��V}��|tddd��dS)NrRr`r%rarZ)rrbr]rrSrcrVrrr,�s
��z/GenBasicTest.test_multi_dict_delayed.<locals>.fr.r2rrVr�test_multi_dict_delayed�rfz$GenBasicTest.test_multi_dict_delayedccs:�t��}dd�td�D�Vt��}|�||d�dS)NcSsg|]}tj�qSrr)�.0rrrr�
<listcomp>�sz7GenBasicTest.test_multi_performance.<locals>.<listcomp>i�g�?)�timer�
assertLess)r�start�endrrr�test_multi_performance�s
�z#GenBasicTest.test_multi_performanceccs2�gV}|�t|t��iV}|�t|t��dSr)�
assertTrue�
isinstance�listr])rr(�yrrr�test_multi_empty�s
�zGenBasicTest.test_multi_emptyccs�|�d�V}|�|d�dSr$�r rSrrrr�test_future�s�zGenBasicTest.test_futureccs,�|�d�|�d�gV}|�|ddg�dS)Nr%rKrt�rrUrrr�test_multi_future�rWzGenBasicTest.test_multi_futureccs:�|�d�}|�d�||�d�|gV}|�|gd��dS)NrKr%rR)r%rKrRrKrt)rr,rUrrr�test_multi_future_duplicate�s�
z(GenBasicTest.test_multi_future_duplicateccs4�t|�d�|�d�d�V}|�|tddd��dS)Nr%rKrZ)r]r rSrvrrr�test_multi_dict_future�r^z#GenBasicTest.test_multi_dict_futurec	cs.�ttd��/|�t��}t�|�td��|�td��g�VWd�n1s)wYWd�n1s8wY|�t|j	�d�|�t��t�|�td��|�
d�g�VWd�n1sfwY|�t��tj|�td��|�td��gtd�VWd�dS1s�wYdS�Nz!Multiple exceptions in yield listzerror 1zerror 2rK)�quiet_exceptions)rrr:�RuntimeErrorr�Multir#rS�str�	exceptionr �r�cmrrr�test_multi_exceptions�s2���������
�"�z"GenBasicTest.test_multi_exceptionsc	cs"�ttd��,|�t��}|�td��|�td��gVWd�n1s&wYWd�n1s5wY|�t|j�d�|�t��|�td��|�d�gVWd�n1s`wY|�t��t	j
|�td��|�td��gtd�VWd�dS1s�wYdSrz)rrr:r|r#rSr~rr rrbr�rrr�test_multi_future_exceptions�s*�������
�"�z)GenBasicTest.test_multi_future_exceptionscCr*)NcSst���r�rrrrrrr,��z.GenBasicTest.test_sync_raise_return.<locals>.fr.r2rrr�test_sync_raise_return�r4z#GenBasicTest.test_sync_raise_returncCr*)Ncss�tjVt���rr&rrrrr,���z/GenBasicTest.test_async_raise_return.<locals>.fr.r2rrr�test_async_raise_return�s
z$GenBasicTest.test_async_raise_returncC�&tjdd��}|�d|j�|��dS)NcS�
t�d��rBr�rrrrr,��
z4GenBasicTest.test_sync_raise_return_value.<locals>.frC�rr/rSr0r1r2rrr�test_sync_raise_return_value�rHz)GenBasicTest.test_sync_raise_return_valuecCr�)NcSr�rIr�rrrrr,r�z:GenBasicTest.test_sync_raise_return_value_tuple.<locals>.frJr�r2rrr�"test_sync_raise_return_value_tuplerHz/GenBasicTest.test_sync_raise_return_value_tuplecCr�)Ncs��tjVt�d��rBr&rrrrr,
��
z5GenBasicTest.test_async_raise_return_value.<locals>.frCr�r2rrr�test_async_raise_return_value	�
z*GenBasicTest.test_async_raise_return_valuecCr�)Ncsr�rIr&rrrrr,r�z;GenBasicTest.test_async_raise_return_value_tuple.<locals>.frJr�r2rrr�#test_async_raise_return_value_tupler�z0GenBasicTest.test_async_raise_return_value_tupleN)$�__name__�
__module__�__qualname__rr/rr r#r)r3r<r?rGrLrOrPrXr_rergr	rrnrsrurwrxryr�r�r�r�r�r�r�r�rrrrrsV



	






rcsReZdZ�fdd�Z�fdd�Zdd�Zdd�Zed	d
��Zedd��Z	ed
d��Z
edd��Zedd��Zedd��Z
edd��Zedd��Zedd��Zedd��Zedd��Zedd ��Zed!d"��Zed#d$��Zed%d&��Zed'd(��Zed)d*��Zed+d,��Zee�d-ejko�d.knd/�d0d1���Zd2d3�Z ed4d5��Z!�Z"S)6�GenCoroutineTestcsd|_t���dS)NF)�finished�super�setUprV��	__class__rrr�szGenCoroutineTest.setUpcst���|js
J�dSr)r��tearDownr�rVr�rrr�"s
zGenCoroutineTest.tearDowncCsJd|_dd�}t�|�}|�|j|j�|�|j|j�|�|j|�dS)NTcsrMrrrrrrr,)��z+GenCoroutineTest.test_attributes.<locals>.f)r�rr/rSr�r��assertIs�__wrapped__�rr,�cororrr�test_attributes&s
z GenCoroutineTest.test_attributescCsNd|_dd�}t�|�}|�t�|��|�t�|��|�t�|���dS)NTcsrMrrrrrrr,4r�z6GenCoroutineTest.test_is_coroutine_function.<locals>.f)r�rr/�assertFalse�is_coroutine_functionror�rrr�test_is_coroutine_function1s
z+GenCoroutineTest.test_is_coroutine_functioncc�.�tjdd��}|�V}|�|d�d|_dS)NcSr�rBr�rrrrr,>r�z0GenCoroutineTest.test_sync_gen_return.<locals>.frCT�rr/rSr��rr,rrrr�test_sync_gen_return<��

z%GenCoroutineTest.test_sync_gen_returnccr�)Ncsr�rBr&rrrrr,Hr�z1GenCoroutineTest.test_async_gen_return.<locals>.frCTr�r�rrr�test_async_gen_returnF��

z&GenCoroutineTest.test_async_gen_returnccr�)NcSsdSrBrrrrrr,Sr-z,GenCoroutineTest.test_sync_return.<locals>.frCTr�r�rrr�test_sync_returnQr�z!GenCoroutineTest.test_sync_returnccr�)Ncss�tjVdSrBrrrrrr,]r!z-GenCoroutineTest.test_async_return.<locals>.frCTr�r�rrr�test_async_return[r�z"GenCoroutineTest.test_async_returnc#s2�tj�fdd��}|�V}��|d�d�_dS)Nc3s�	dS)NTrC)r�Taskr0�add_callbackrrVrrr,ks�z3GenCoroutineTest.test_async_early_return.<locals>.frCTr�r�rrVr�test_async_early_returnfs�
z(GenCoroutineTest.test_async_early_returnc#s:�tjdd����fdd�}|�V}|�|d�d|_dS)Ncsr�rBr&rrrr�f1wr�z-GenCoroutineTest.test_async_await.<locals>.f1c�s���IdH}|Srr�r�r�rr�f2��z-GenCoroutineTest.test_async_await.<locals>.f2rCTr��rr�rrr�r�test_async_awaitus�

z!GenCoroutineTest.test_async_awaitccs(�dd�}|�V}|�|d�d|_dS)Nc�s�ddl}|�d�IdHdS)NrrC)�asyncio�sleep)r�rrrr,�s�z3GenCoroutineTest.test_asyncio_sleep_zero.<locals>.frCT)rSr�r�rrr�test_asyncio_sleep_zero�s
�
z(GenCoroutineTest.test_asyncio_sleep_zeroc#sR�tjdd����fdd�}tjdd��}|�|�gV}|�|ddg�d	|_dS)
NcsrMrrrrrrr��rNzGGenCoroutineTest.test_async_await_mixed_multi_native_future.<locals>.f1c�s���IdHdSrBrrr�rrr��r�zGGenCoroutineTest.test_async_await_mixed_multi_native_future.<locals>.f2csr�)N�+r&rrrr�f3�r�zGGenCoroutineTest.test_async_await_mixed_multi_native_future.<locals>.f3rCr�Tr�)rr�r�rUrr�r�*test_async_await_mixed_multi_native_future�s�


z;GenCoroutineTest.test_async_await_mixed_multi_native_futureccs8�dd�}t�tjdd�|��V}|�|d�d|_dS)Nc�s�dSrBrrrrrr��s�z4GenCoroutineTest.test_async_with_timeout.<locals>.f1r%)�hoursrCT)r�with_timeout�datetime�	timedeltarSr�)rr�rrrr�test_async_with_timeout�s
�
z(GenCoroutineTest.test_async_with_timeoutcc�.�tjdd��}|�V}|�|d�d|_dS)NcSr+rrrrrrr,�r-z5GenCoroutineTest.test_sync_return_no_value.<locals>.fTr�r�rrr�test_sync_return_no_value�r�z*GenCoroutineTest.test_sync_return_no_valueccr�)NcsrMrrrrrrr,�r!z6GenCoroutineTest.test_async_return_no_value.<locals>.fTr�r�rrr�test_async_return_no_value�s�

z+GenCoroutineTest.test_async_return_no_valuecc�P�tjdd��}|�}|�t��|VWd�n1swYd|_dS)NcSr6r7rrrrrr,�r8z+GenCoroutineTest.test_sync_raise.<locals>.fT�rr/r:r;r��rr,�futurerrr�test_sync_raise�s�
�
z GenCoroutineTest.test_sync_raiseccr�)Ncsr=r7rrrrrr,�r>z,GenCoroutineTest.test_async_raise.<locals>.fTr�r�rrr�test_async_raise�s�
�
z!GenCoroutineTest.test_async_raisec#sb�tjdd���tj�fdd��}|�}|�t��|VWd�n1s'wYd|_dS)NcSr6r7rrrrrr��r8z>GenCoroutineTest.test_replace_yieldpoint_exception.<locals>.f1c3s&�z��VWdStyt��wr)r;�KeyErrorrr�rrr�����z>GenCoroutineTest.test_replace_yieldpoint_exception.<locals>.f2T)rr/r:r�r�)rr�r�rr�r�!test_replace_yieldpoint_exception�s�
�
z2GenCoroutineTest.test_replace_yieldpoint_exceptionc#s@�tjdd���tj�fdd��}|�V}|�|d�d|_dS)NcSr6r7rrrrrr��r8z>GenCoroutineTest.test_swallow_yieldpoint_exception.<locals>.f1c3s*�z��VWdStyt�d��wrB)r;rrrr�rrr��s�
�z>GenCoroutineTest.test_swallow_yieldpoint_exception.<locals>.f2rCTr�r�rr�r�!test_swallow_yieldpoint_exception�s�

z2GenCoroutineTest.test_swallow_yieldpoint_exceptionc#s��g�tj�fdd��}t�}|�d�|d|�|d|�gV|�d���d�g�|dtj�|dtj�gV|�d���d�d|_g�|dtj�|d|�gV|�d���d	�dS)
Nc3s$�td�D]
}��|�|VqdS)N�)r�append)�name�	yieldabler��callsrrr,s
�
�z'GenCoroutineTest.test_moment.<locals>.f�a�b��
aaaaabbbbb�
abababababT�
abbbbbaaaa)rr/r�
set_resultrS�joinrr�)rr,�	immediaterr�r�test_moments�
zGenCoroutineTest.test_momentccs�t�d�Vd|_dS)N�{�G�z�?T)rr�r�rVrrr�
test_sleep#s�
zGenCoroutineTest.test_sleepc
#s��Gdd�dt��tj�fdd��}z|d�VWn �y9}z|�t|�d�|�|j�WYd}~nd}~wwz|d�VWn �ya}z|�t|�d�|�|j�WYd}~nd}~wwd	|_dS)
Nc@�eZdZdS)zIGenCoroutineTest.test_py3_leak_exception_context.<locals>.LeakedExceptionN�r�r�r�rrrr�LeakedException*�r�cs�|��rr)�	iteration�r�rr�inner-r�z?GenCoroutineTest.test_py3_leak_exception_context.<locals>.innerr%�1rK�2T)�	Exceptionrr/rSr~�assertIsNone�__context__r�)rr�r"rr�r�test_py3_leak_exception_context(s&�����
z0GenCoroutineTest.test_py3_leak_exception_context�rR)rR�z#asyncio.Future has reference cyclescsNtj�fdd���tj�fdd��}�jj|dd������d�d�_dS)Nc3sB�Gdd�dt�}|�}t�|��_dd�}t�|��Vtd��)Nc@r�)zGGenCoroutineTest.test_coroutine_refcounting.<locals>.inner.<locals>.FooNr�rrrr�FooHr�r�cSr+rrrrrr�dummyN�zIGenCoroutineTest.test_coroutine_refcounting.<locals>.inner.<locals>.dummyz
Some error)�object�weakref�ref�	local_refrr/�
ValueError)r��	local_varr�rVrrr�Fs�z:GenCoroutineTest.test_coroutine_refcounting.<locals>.innerc3s&�z��VWdStyYdSwr)r�r)r�rr�inner2Tr�z;GenCoroutineTest.test_coroutine_refcounting.<locals>.inner2rR)�timeoutT)rr/r0r1r�r�r�)rr�r)r�rr�test_coroutine_refcounting?s

z+GenCoroutineTest.test_coroutine_refcountingcCsxd|_t��}|�|j|���|�d�dd�}t�|��}|�|tj	�dt
|jjdf}t
|�}|�||�dS)NTcsrMrrrrrrr,gr�z:GenCoroutineTest.test_asyncio_future_debug_info.<locals>.fzcreated at %s:%drR)r�r��get_event_loop�
addCleanup�	set_debug�	get_debugrr/�assertIsInstancer�__file__�__code__�co_firstlineno�repr�assertIn)r�asyncio_loopr,r��expected�actualrrr�test_asyncio_future_debug_info`s
z/GenCoroutineTest.test_asyncio_future_debug_infoccs<�tjdd��}t�|�|��V}|�|ddg�d|_dS)Ncsr�r$r&rrrrr,vr�z/GenCoroutineTest.test_asyncio_gather.<locals>.fr%T)rr/r��gatherrSr�)rr,�retrrr�test_asyncio_gatherrs�

z$GenCoroutineTest.test_asyncio_gather)#r�r�r�r�r�r�r�rr�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r
�unittest�skipIf�sys�version_infor�rr�
__classcell__rrr�rr�sb
	


	







	







�r�c@�eZdZejdd��ZdS)�GenCoroutineSequenceHandlerccs<�tjV|�d�tjV|�d�tjV|�d�dS�Nr�r��3)rr�write�finishrVrrr�get�s�

zGenCoroutineSequenceHandler.getN�r�r�r�rr/rrrrrr��rc@r)�%GenCoroutineUnfinishedSequenceHandlerccs<�tjV|�d�tjV|�d�tjV|�d�dSr)rrrrVrrrr�s�

z)GenCoroutineUnfinishedSequenceHandler.getNrrrrrr�rrc@s(eZdZejdd��Zejdd��ZdS)�UndecoratedCoroutinesHandlerccs �g|_tjV|j�d�dS)Nr�)�chunksrrr�rVrrr�prepare�s�z$UndecoratedCoroutinesHandler.prepareccs@�|j�d�tjV|j�d�tjV|�d�|j��dS)Nr�rr�)r r�rrrr�rVrrrr�s�z UndecoratedCoroutinesHandler.getN�r�r�r�rr/r!rrrrrr�s

rc@s"eZdZejdd��Zdd�ZdS)�AsyncPrepareErrorHandlerccs�tjVtd��)N�)rrr
rVrrrr!�r�z AsyncPrepareErrorHandler.preparecCs|�d�dS)N�ok)rrVrrrr�szAsyncPrepareErrorHandler.getNr"rrrrr#�s
r#c@seZdZdd�ZdS)�NativeCoroutineHandlerc�s �t�d�IdH|�d�dS)Nrr%)r�r�rrVrrrr�s�zNativeCoroutineHandler.getN)r�r�r�rrrrrr&�sr&c@s<eZdZdd�Zdd�Zdd�Zdd�Zd	d
�Zdd�Zd
S)�
GenWebTestcCs&tdtfdtfdtfdtfdtfg�S)N�/coroutine_sequence�/coroutine_unfinished_sequence�/undecorated_coroutine�/async_prepare_error�/native_coroutine)rrrrr#r&rVrrr�get_app�s���zGenWebTest.get_appcC�|�d�}|�|jd�dS)Nr(�123��fetchrS�body�r�responserrr�test_coroutine_sequence_handler��
z*GenWebTest.test_coroutine_sequence_handlercCr.)Nr)r/r0r3rrr�*test_coroutine_unfinished_sequence_handler�r6z5GenWebTest.test_coroutine_unfinished_sequence_handlercCr.)Nr*r/r0r3rrr�test_undecorated_coroutines�r6z&GenWebTest.test_undecorated_coroutinescCr.)Nr+r$)r1rS�coder3rrr� test_async_prepare_error_handler�r6z+GenWebTest.test_async_prepare_error_handlercCs*|�d�}|�|jd�|�|jd�dS)Nr,��sok)r1rSr9r2r3rrr�test_native_coroutine_handler�s
z(GenWebTest.test_native_coroutine_handlerN)	r�r�r�r-r5r7r8r:r<rrrrr'�sr'c@s`eZdZedd��Zedd��Zedd��Zedd��Zed	d
��Zedd��Z	ed
d��Z
dS)�WithTimeoutTestccsL�|�tj��t�tjdd�t��VWd�dS1swYdS)N皙�����?��seconds)r:r�TimeoutErrorr�r�r�rrVrrr�test_timeout�s�"�zWithTimeoutTest.test_timeoutc#sL�t��|j�tjdd��fdd��t�tjdd���V}|�|d�dS)Nr>r?cs
��d�S)N�asdf)r�r�r�rr�<lambda>��
z?WithTimeoutTest.test_completes_before_timeout.<locals>.<lambda>�rC)rr0�add_timeoutr�r�rr�rSrrrDr�test_completes_before_timeout�s��z-WithTimeoutTest.test_completes_before_timeoutc#sl�t��|j�tjdd��fdd��|�t��t�tjdd���VWd�dS1s/wYdS)Nr>r?cs��t��Sr)�
set_exceptionr;rrDrrrE�sz;WithTimeoutTest.test_fails_before_timeout.<locals>.<lambda>rG)	rr0rHr�r�r:r;rr�rVrrDr�test_fails_before_timeout�s�

�"�z)WithTimeoutTest.test_fails_before_timeoutccs8�t�}|�d�t�tjdd�|�V}|�|d�dS)NrCrGr?)rr�rr�r�r�rS)rr�rrrr�test_already_resolved�s
�
z%WithTimeoutTest.test_already_resolvedc	cs��t�d��6}|�tj��t�|j��|�tj	d��VWd�n1s'wYWd�dSWd�dS1s?wYdS)Nr%r>)
r�ThreadPoolExecutorr:rrAr�r0rj�submitr��r�executorrrr�test_timeout_concurrent_future�s����"�z.WithTimeoutTest.test_timeout_concurrent_futureccsb�t�d��!}dd�}|�|�}|��t�tjdd�|�VWd�dS1s*wYdS)Nr%cSr+rrrrrrr�r�z?WithTimeoutTest.test_completed_concurrent_future.<locals>.dummyrGr?)rrMrNrrr�r�r�)rrPr�r,rrr� test_completed_concurrent_futures�
"�z0WithTimeoutTest.test_completed_concurrent_futureccsR�t�d��}t�tjdd�|�dd���VWd�dS1s"wYdS)Nr%rGr?cSs
t�d�S)Nr�)rjr�rrrrrErFz?WithTimeoutTest.test_normal_concurrent_future.<locals>.<lambda>)rrMrr�r�r�rNrOrrr�test_normal_concurrent_futures�
�"�z-WithTimeoutTest.test_normal_concurrent_futureN)r�r�r�rrBrIrKrLrQrRrSrrrrr=�s


	


r=c@sPeZdZedd��Zedd��Zdd�Zedd��Zed	d
��Zedd��Z	d
S)�WaitIteratorTestcCsxt��}|�|��d�|�t��tjt�t�d�}Wd�n1s%wY|�|jdd�|�|j	dd�dS)Nzempty generator iterated)r\�bad nil current index�bad nil current future)
r�WaitIteratorro�doner:r�rrS�
current_index�current_future)r�grrr�test_empty_iterators�z$WaitIteratorTest.test_empty_iteratorc	cs��t�}t�}t�}|�d�|�d�|�d�t�|||�}d}|��s}|��V}|dkrD|�|jd�|�|j	|�|�|d�n1|dkr]|�|jd�|�|j	|�|�|d�n|dkru|�|jd�|�|j	|�|�|d�|d7}|��r&|�|jdd�|�|j	dd�tj||d	�}|��s�|��V}|jd
kr�|�
|j	|ko�|dkd�n|jdkr�|�
|j	|ko�|dkd�n	|�d
�|j��|d7}|��r�|�|jdd�|�|j	dd�dS)N�rC�Trr%rKrUrV)r�r�r�z"WaitIterator dict status incorrectr�zgot bad WaitIterator index {})
rr�rrWrX�nextrSrYr�rZro�fail�format)	rr�r�r�r[r�r�dg�drrrr�test_already_done)sZ�



�

�
��z"WaitIteratorTest.test_already_donecCs||dkr|d�d�n|dkr|d�t��n|dkr+|d�d�|d�d	�|dkr<|j�|j|d|�dSdS)
NrRrKr]r�r�r%rCr^)r�rJr;r0r��finish_coroutines)rr�rrrrrg_s�z"WaitIteratorTest.finish_coroutinesccs��t�t�t�t�g}|�d|�tj|�}d}|��s|z|��V}Wnty6|�|j|dd�Yn<w|dkrK|�	|dd�|�	|j
dd�n'|dkr_|�	|dd�|�	|j
dd�n|d	krr|�	|d
d�|�	|j
d	d�|d7}|��rdSdS)Nrzexception future invalidr]�iterator value incorrectrK�wrong indexrCr%rRr^)rrgrrWrXr_r;r�rZrSrY)rrr[rrbrrr�
test_iteratorks,�
��zWaitIteratorTest.test_iteratorc#sN�t�t�t�t�g���d��d�_��fdd�}|�V���j�dS)NrFc�s��d}tj��}z(|2z"3dHW}|dkr%��|dd���|jdd�ntd��|d7}q6Wn
ty=|d7}Ynw|2z83dHW}|dkrZ��|dd���|jdd�n|d	krn��|d
d���|jd	d�ntd|��|d7}q@6d�_dS)
Nrr]rhrKriz!expected exception on iteration 1r%rCrRr^zdidn't expect iteration %dT)rrWrSrYr�r;r�)rr[rb�rrrrr,�s2�

��
�

z5WaitIteratorTest.test_iterator_async_await.<locals>.f)rrgr�ror2rrkr�test_iterator_async_await�s�z*WaitIteratorTest.test_iterator_async_awaitccs,�t�tjdd�t�t�d�����VdS)Nr>r?r)rr�r�r�rWr�r_rVrrr�test_no_ref�s�
�zWaitIteratorTest.test_no_refN)
r�r�r�rr\rergrjrlrmrrrrrTs


5

$rTc@s8eZdZdd�Zedd��Zdd�Zdd�Zd	d
�ZdS)�RunnerGCTestcCst��dko
tjdkS)N�PyPyr�)�platform�python_implementationrrrVrrr�is_pypy3�szRunnerGCTest.is_pypy3c#sF�dg��fdd��tj���fdd��}t�tjdd�|��VdS)Ncst�d��d��d�dS)NrKr�{)�gc�collectr�r)�
weakref_scoperr�callback�s
z&RunnerGCTest.test_gc.<locals>.callbackc3s,�t�}t�|��d<�j���|VdS)Nr)rr�r�r0r���fut�rwrrvrr�tester�s
�
z$RunnerGCTest.test_gc.<locals>.tester皙�����?r?)rr/r�r�r�)rr{rrzr�test_gc�s�zRunnerGCTest.test_gccs�|��}g�g�tj�fdd���tj��fdd��}|�|�|��t��|��d�d�|�t	��d�|�
�sG|��dd�dSdS)Nc	3s*�z
	t�d�V��d�q��d�w�NTg����MbP?�rr�r�rr�rr�
infinite_coro�s�
�z9RunnerGCTest.test_gc_infinite_coro.<locals>.infinite_coroc3s.���}||_��t�|��t�d�VdS�Nr|)�	_refcycler�r�r�rr�rx)r��wfutrr�do_something�s
�z8RunnerGCTest.test_gc_infinite_coro.<locals>.do_somethingrrK���)�get_new_iolooprr/r1�closertrur��assertGreaterEqual�lenrr�r�loopr�r)r�rr�r�test_gc_infinite_coro�s	
�z"RunnerGCTest.test_gc_infinite_corocs�ddl�dd��|��}g�g�tj����fdd��}|�|�tdd��|��t��Wd�n1s9wY|�	�d�d�|�
t��d�|��s]|�	�d	d�dSdS)
Nrc	�s.�z	t�d�IdH|�d�q|�d�wr~rr�rrrr��s�
�z@RunnerGCTest.test_gc_infinite_async_await.<locals>.infinite_coroc3s:���������}||_��t�|��t�d�VdSr�)r��create_taskr�r�r�r�rr�rx�r�r�rr�rrr�s
�z?RunnerGCTest.test_gc_infinite_async_await.<locals>.do_somethingr�z$Task was destroyed but it is pendingrKr�)
r�r�rr/r1rr�rtrur�r�r�rrr�rr�r�test_gc_infinite_async_await�s"	

��z)RunnerGCTest.test_gc_infinite_async_awaitcCs4tjdd��}|��}|�|�}|�|ddg�dS)Ncss �t�tjtjg�V}t�|��r)r�multirrr�rrr�
wait_a_moments�
z5RunnerGCTest.test_multi_moment.<locals>.wait_a_moment)rr/r�r1rS)rr�r�rrrr�test_multi_moments


zRunnerGCTest.test_multi_momentN)	r�r�r�rrrr}r�r�r�rrrrrn�s
$$rn�ctx_varzcontextvars module not presentc@sdeZdZdd�Zejdd��Zdd�Zejdd��Zd	d
�Z	e
dd��Ze
d
d��Ze
dd��Z
dS)�ContextVarsTestc�s �t�|�|�|�IdHdSr�r��setr�r'rrr�native_root's�
zContextVarsTest.native_rootccs"�t�|�dV|�|�VdSrr�r'rrr�gen_root+s�
zContextVarsTest.gen_rootc�s����t��������IdH��t����t����j�d���fdd��IdH��t����t�	��d���fdd��IdH��t����dS)Nc����j��Sr��run�thread_innerr��ctxrr(rrrE8�z'ContextVarsTest.inner.<locals>.<lambda>cr�rr�rr�rrrE=r�)
rSr�r�	gen_inner�contextvars�copy_contextr0�run_in_executorr�r�r'rr�rr�1s� 
�zContextVarsTest.innerccs,�|�t��|�dV|�t��|�dSr�rSr�rr'rrrr�As�zContextVarsTest.gen_innercCs|�t��|�dSrr�r'rrrr�GszContextVarsTest.thread_innerccs,�|�d�|�d�|�d�|�d�gVdS)Nr%rKrR�)r�r�rVrrr�test_propagateJs�
�zContextVarsTest.test_propagateccs �t�d�}dVt�|�dSr$)r�r��reset)r�tokenrrr�
test_resetUs�
zContextVarsTest.test_resetc#s*�d���fdd�}t���|�VdS)N�
c�s���t����dSrr�rr'rr�native_async_functionas�zgContextVarsTest.test_propagate_to_first_yield_with_native_async_function.<locals>.native_async_function)r�r�)rr�rr'r�8test_propagate_to_first_yield_with_native_async_function]s
�
zHContextVarsTest.test_propagate_to_first_yield_with_native_async_functionN)r�r�r�r�rr/r�r�r�r�rr�r�r�rrrrr�%s




r��__main__)3r��
concurrentrrtr�rprrjr�r�tornado.concurrentr�tornado.logr�tornado.testingrrrr�tornado.test.utilr	r
�tornado.webrrr
�tornadorr��ImportError�typing�
TYPE_CHECKINGrrrr�rrrr#r&r'r=rTrn�
ContextVarr�rr�r��mainrrrr�<module>sZ�}h

%@l
B�