Your IP : 216.73.216.213


Current Path : /opt/alt/python36/lib64/python3.6/test/test_asyncio/__pycache__/
Upload File :
Current File : //opt/alt/python36/lib64/python3.6/test/test_asyncio/__pycache__/test_tasks.cpython-36.opt-1.pyc

3

� fOO�@s�dZddlZddlZddlZddlZddlZddlZddlZddlZddl	Z	ddl
Z
ddlZddlZddlm
Z
ddlZddlmZddlmZddlmZddlmZyddlmZWn ek
r�dd	lmZYnXydd
lmZWnJek
�r4ydd
lmZWn"ek
�r.dd
lmZYnXYnXejd6kZejd7kZejdd��Zej dd��Z!d8dd�Z"Gdd�d�Z#Gdd�d�Z$dd�Z%ej&e'ed�d�Gdd�de$ej(��Z)ej&e'ed�d�e%Gdd �d e$ej(���Z*ej&e'ed�d�Gd!d"�d"e$ej(��Z+ej&e'ed�d�Gd#d$�d$e$ej(��Z,Gd%d&�d&e$ej(�Z-e%Gd'd(�d(e$ej(��Z.Gd)d*�d*ej(�Z/Gd+d,�d,�Z0Gd-d.�d.e0ej(�Z1Gd/d0�d0e0ej(�Z2Gd1d2�d2ej(�Z3Gd3d4�d4ej(�Z4e5d5k�r�ej6�dS)9zTests for tasks.py.�N)�mock)�
coroutines)�futures)�tasks)�
test_utils)�support)�test_support)�assert_python_ok���cCsdS)N�r
r
r
�A/opt/alt/python36/lib64/python3.6/test/test_asyncio/test_tasks.py�coroutine_function'srccs*tj}|j}z||_dVWd||_XdS)N)�asyncior�_DEBUG)ZenabledrZ	old_debugr
r
r�set_coroutine_debug,s
rFcCsR|rd|}nd|}|dk	r@|d}d||||d|dfSd|||fSdS)Nz%sz%s, defined�z%coro=<%s() %s at %s> created at %s:%srzcoro=<%s() %s at %s>���r
)�qualname�state�src�source_traceback�	generator�framer
r
r�format_coroutine9s
rc@seZdZdd�Zdd�ZdS)�DummycCsdS)Nz<Dummy>r
)�selfr
r
r�__repr__HszDummy.__repr__cGsdS)Nr
)r�argsr
r
r�__call__KszDummy.__call__N)�__name__�
__module__�__qualname__rr r
r
r
rrFsrcsBeZdZdZdZdd�Zdd�Z�fdd�Zdd	�Zd
d�Z	dd
�Z
dd�Zdd�Zdd�Z
dd�Zejed�dd��Zdd�Zdd�Zdd�Zdd �Zd!d"�Zd#d$�Zd%d&�Zd'd(�Zd)d*�Zd+d,�Zd-d.�Zd/d0�Zd1d2�Zd3d4�Z d5d6�Z!d7d8�Z"d9d:�Z#d;d<�Z$d=d>�Z%d?d@�Z&dAdB�Z'dCdD�Z(dEdF�Z)dGdH�Z*dIdJ�Z+dKdL�Z,dMdN�Z-dOdP�Z.dQdR�Z/dSdT�Z0dUdV�Z1dWdX�Z2dYdZ�Z3d[d\�Z4d]d^�Z5d_d`�Z6dadb�Z7dcdd�Z8dedf�Z9dgdh�Z:didj�Z;dkdl�Z<dmdn�Z=dodp�Z>dqdr�Z?dsdt�Z@dudv�ZAdwdx�ZBdydz�ZCd{d|�ZDd}d~�ZEdd��ZFd�d��ZGd�d��ZHd�d��ZId�d��ZJd�d��ZKd�d��ZLd�d��ZMd�d��ZNd�d��ZOd�d��ZPd�d��ZQd�d��ZRd�d��ZSd�d��ZTd�d��ZUd�d��ZVd�d��ZWd�d��ZXd�d��ZYejeZd��d�d���Z[e\j]d��d�d���Z^e\j]d��d�d���Z_d�d��Z`d�d��Zad�d��Zbd�d��Zcd�d��Zdd�d��Zed�d��Zfd�d��Zge\j]d��d�d���Zh�ZiS)��
BaseTaskTestsNcCs|jj||d�S)N)�loop)�	__class__�Task)rr%�coror
r
r�new_taskTszBaseTaskTests.new_taskcCs|jj|d�S)N)r%)r&�Future)rr%r
r
r�
new_futureWszBaseTaskTests.new_futurecs6t�j��j��_�jj�j��fdd��j_dS)Ncs�j�j�S)N)r+r%r
)rr
r�<lambda>^sz%BaseTaskTests.setUp.<locals>.<lambda>)�super�setUp�
new_test_loopr%�set_task_factoryr)Z
create_future)r)r&)rrr.Zs

zBaseTaskTests.setUpcsRGdd�d��tj�fdd����jjtj��fdd�td�D�d�ji��dS)	Nc@seZdZdd�ZdS)z1BaseTaskTests.test_task_del_collect.<locals>.EvilcSstj�dS)N)�gcZcollect)rr
r
r�__del__bsz9BaseTaskTests.test_task_del_collect.<locals>.Evil.__del__N)r!r"r#r2r
r
r
r�Evilasr3cs��S)Nr
r
)r3r
r�runesz0BaseTaskTests.test_task_del_collect.<locals>.runcsg|]}�j�j����qSr
)r)r%)�.0�_)r4rr
r�
<listcomp>ksz7BaseTaskTests.test_task_del_collect.<locals>.<listcomp>�dr%)r�	coroutiner%�run_until_complete�gather�range)rr
)r3r4rr�test_task_del_collect`sz#BaseTaskTests.test_task_del_collectcCs\tj�}|j|�}tjdd��}z,|jtd��|jj||��WdQRXWd|j�XdS)Ncss|EdHdS)Nr
)�futr
r
rr4rsz1BaseTaskTests.test_other_loop_future.<locals>.runzTask .* got Future .* attached)	r�new_event_loopr+r9�assertRaisesRegex�RuntimeErrorr%r:�close)r�
other_loopr>r4r
r
r�test_other_loop_futurens
z$BaseTaskTests.test_other_loop_futurec	sLtj�fdd��}tj|�|jd��|jtd��|jj��WdQRXdS)Nc3s�EdHdS)Nr
r
)�taskr
r�test~sz6BaseTaskTests.test_task_awaits_on_itself.<locals>.test)r%zTask cannot await on itself)rr9�
ensure_futurer%r@rAr:)rrFr
)rEr�test_task_awaits_on_itself}s
z(BaseTaskTests.test_task_awaits_on_itselfcCs�tjdd��}|j|j|��}|jj|�|j|j��|j|j�d�|j	|j
|j�tj�}|j|�|j||��}|j	|j
|�|j|�|j
�dS)NcSsdS)N�okr
r
r
r
r�notmuch�sz.BaseTaskTests.test_task_class.<locals>.notmuchrI)rr9r)r%r:�
assertTrue�done�assertEqual�result�assertIs�_loopr?�set_event_looprB)rrJ�tr%r
r
r�test_task_class�s

zBaseTaskTests.test_task_classcCs�tjdd��}tj|�|jd�}|jj|�|j|j��|j|j�d�|j	|j
|j�tj�}|j|�tj|�|d�}|j	|j
|�|j|�|j
�dS)NcSsdS)NrIr
r
r
r
rrJ�sz;BaseTaskTests.test_ensure_future_coroutine.<locals>.notmuch)r%rI)rr9rGr%r:rKrLrMrNrOrPr?rQrB)rrJrRr%r
r
r�test_ensure_future_coroutine�s

z*BaseTaskTests.test_ensure_future_coroutinecCs�|j|j�}|jd�tj|�}|jj|�|j|j��|j|j	�d�|j
||�tj�}|j|�|j
t��tj||d�}WdQRX|j�tj||jd�}|j
||�dS)N�ko)r%)r+r%�
set_resultrrGr:rKrLrMrNrOr?rQ�assertRaises�
ValueErrorrB)rZf_orig�fr%r
r
r�test_ensure_future_future�s


z'BaseTaskTests.test_ensure_future_futurecCs�tjdd��}|j|j|��}tj|�}|jj|�|j|j��|j|j	�d�|j
||�tj�}|j|�|j
t��tj||d�}WdQRX|j�tj||jd�}|j
||�dS)NcSsdS)NrIr
r
r
r
rrJ�sz6BaseTaskTests.test_ensure_future_task.<locals>.notmuchrI)r%)rr9r)r%rGr:rKrLrMrNrOr?rQrWrXrB)rrJZt_origrRr%r
r
r�test_ensure_future_task�s

z%BaseTaskTests.test_ensure_future_taskzneed python 3.5 or latercCsPGdd�d�}tjdd��}tj�}|j|�tj||��|d�}|j|�dS)Nc@seZdZdd�Zdd�ZdS)z6BaseTaskTests.test_ensure_future_awaitable.<locals>.AwcSs
||_dS)N)r()rr(r
r
r�__init__�sz?BaseTaskTests.test_ensure_future_awaitable.<locals>.Aw.__init__css|jEdHS)N)r()rr
r
r�	__await__�sz@BaseTaskTests.test_ensure_future_awaitable.<locals>.Aw.__await__N)r!r"r#r\r]r
r
r
r�Aw�sr^cSsdS)NrIr
r
r
r
rr(�sz8BaseTaskTests.test_ensure_future_awaitable.<locals>.coro)r%)rr9r?rQrGr:)rr^r(r%r>r
r
r�test_ensure_future_awaitable�s

z*BaseTaskTests.test_ensure_future_awaitablec	Cs$|jt��tjd�WdQRXdS)NrI)rW�	TypeErrorrrG)rr
r
r�test_ensure_future_neither�sz(BaseTaskTests.test_ensure_future_neithercCs:|j|j�}|jtd��|j|tj|��WdQRXdS)Nz#function is deprecated, use ensure_)r+r%ZassertWarnsRegex�DeprecationWarningrOr�async)rrYr
r
r�test_async_warning�sz BaseTaskTests.test_async_warningcsRd�tj�fdd���tj��fdd���tj���fdd��}�jj|��dS)Nc3s��EdHdS)Nr
r
)�barr
r�foo�sz)BaseTaskTests.test_get_stack.<locals>.foocsd�jdd�}z�j|djjd�Wdd}Xtj�}�jd|d�|jd�|j�}�j	|d�dS)Nr)�limitrrf)rg�filezfoo\(\) running)
Z	get_stackrM�f_code�co_name�io�StringIO�print_stack�seek�read�assertRegex)rYrh�tb)�Trr
rre�s
z)BaseTaskTests.test_get_stack.<locals>.barc3s tj���jd���EdHdS)N)r%)rrGr%r
)rrrfrr
r�runnersz,BaseTaskTests.test_get_stack.<locals>.runner)rr9r%r:)rrsr
)rrrerfrr�test_get_stack�s
zBaseTaskTests.test_get_stackc	Csv|jjd�tjdd��}|j|jd�tr:|j|jd�|j|j	t�t
j|�\}}d||f}|�}tj
srtrxd}nd}|j|jd�tr�|j|j|�|j|j|�}|jt��t|d||jdd	�}|jt|�d
|�|j�|jt|�d|�|jtj|jj|�t|d||j�}|jt|�d
|�|j|j|��}|jj|�t|d||j�}|jt|�d|�dS)NFcssgEdHdS)N�abcr
r
r
r
rrJs
z-BaseTaskTests.test_task_repr.<locals>.notmuchrJz#\w+.test_task_repr.<locals>.notmuchz%s:%s�runningT)rz <Task pending %s cb=[<Dummy>()]>z#<Task cancelling %s cb=[<Dummy>()]>rLz<Task cancelled %s>z<Task finished %s result='abc'>)r%�	set_debugrr9rMr!�PY35rpr#r"r�get_function_sourcerrr)�add_done_callbackrr�_source_traceback�repr�cancelrW�CancelledErrorr:)	rrJ�filename�linenor�gen�
coro_qualnamerRr(r
r
r�test_task_reprsL







zBaseTaskTests.test_task_reprcCsz|jjd�tjdd��}|j|jd�tr:|j|jd�|j|j	t�|�}t
jsXtrbd}d}nd}}|j|j|�tr�|j|j|�t
jr�t
jr�tj
|�\}}|jd}d||||d	|df}n|j}	d
||	j|	jf}|jt|�d|�|j|j|�}
|
jt��t
j�r(dtj
|�}n|j}	d|	j|	jf}t|d
||
jt
jd�}|jt|
�d|�|jj|
�dS)NFcSsdS)N�{r
r
r
r
rrJNsz<BaseTaskTests.test_task_repr_coro_decorator.<locals>.notmuchrJz4\w+.test_task_repr_coro_decorator\.<locals>\.notmuchr(rz0%s() running, defined at %s:%s, created at %s:%srz%s() running at %s:%sz<CoroWrapper %s>z%s:%srv)rz <Task pending %s cb=[<Dummy>()]>r)r%rwrr9rMr!rxrpr#r"rrrryr{�gi_code�co_filename�co_firstlinenor|r)rzrrr:)rrJr�Z	coro_namer�rr�rr(�coderRrr
r
r�test_task_repr_coro_decoratorKsN




z+BaseTaskTests.test_task_repr_coro_decoratorcCs||jjd�tjdd��}|j|j�}|j|j||��}tj|j�|jt	|�dt
jt	|���|jd�|jj
|�dS)NFcss
|EdHS)Nr
)r>r
r
r�wait_for�sz7BaseTaskTests.test_task_repr_wait_for.<locals>.wait_forz<Task .* wait_for=%s>)r%rwrr9r+r)r�run_brieflyrpr|�re�escaperVr:)rr�r>rEr
r
r�test_task_repr_wait_for�s

z%BaseTaskTests.test_task_repr_wait_forcCs�td��V|jjd�tjdd��}tjtj|d��}|jj|d��}d|_|j	|j
j�WdQRXt|j
�}d}|j
||�dS)NTcsstjd�EdHdS)Nr)r�sleep)�x�yr
r
r�func�sz>BaseTaskTests.test_task_repr_partial_corowrapper.<locals>.funcr�FzV<CoroWrapper \w+.test_task_repr_partial_corowrapper\.<locals>\.func\(1\)\(\) running, )rr%rwrr9�	functools�partial�create_taskZ_log_destroy_pending�
addCleanupZ_cororBr|rp)rr�Zpartial_funcrEZ	coro_repr�expectedr
r
r�"test_task_repr_partial_corowrapper�s

z0BaseTaskTests.test_task_repr_partial_corowrappercsNtj��fdd��}tjdd���tjdd���|�}|j|jj|�d�dS)Nc3s ��EdH}��EdH}||S)Nr
)�a�b)�inner1�inner2r
r�outer�sz-BaseTaskTests.test_task_basics.<locals>.outercSsdS)N�*r
r
r
r
rr��sz.BaseTaskTests.test_task_basics.<locals>.inner1cSsdS)Ni�r
r
r
r
rr��sz.BaseTaskTests.test_task_basics.<locals>.inner2i)rr9rMr%r:)rr�rRr
)r�r�r�test_task_basics�s
zBaseTaskTests.test_task_basicsc	s��fdd�}�j|��tj�fdd��}�j�|��}�j|j��jtj���j|�WdQRX�j	|j
���j	|j���j|j��dS)Nc3sdV}�jd|�dVdS)Ng$@r)�assertAlmostEqual)�when)rr
rr��sz&BaseTaskTests.test_cancel.<locals>.genc3stjd�d�EdHdS)Ng$@)r%�)rr�r
)r%r
rrE�sz'BaseTaskTests.test_cancel.<locals>.task)
r/rr9r)�	call_soonr}rWr~r:rKrL�	cancelled�assertFalse)rr�rErRr
)r%rr�test_cancel�s
zBaseTaskTests.test_cancelcCsttjdd��}|j|j|��}tj|j�|j�|jtj|jj	|�|j
|j��|j
|j��|j
|j��dS)NcssdVdVdS)Nr�r
r
r
r
rrE�sz-BaseTaskTests.test_cancel_yield.<locals>.task)rr9r)r%rr�r}rWr~r:rKrLr�r�)rrErRr
r
r�test_cancel_yield�szBaseTaskTests.test_cancel_yieldc	s�|j|j��tj�fdd��}|j|j|��}tj|j��j�|jtj	��|jj
|�WdQRX|j�j��|j|j��dS)Nc3s�EdHdS)Nr�r
r
)rYr
rrE�s
z4BaseTaskTests.test_cancel_inner_future.<locals>.task)
r+r%rr9r)rr�r}rWr~r:rKr�)rrErRr
)rYr�test_cancel_inner_future�sz&BaseTaskTests.test_cancel_inner_futurec	s�|j|j��tj�fdd��}|j|j|��}tj|j��j�|j�|jtj	��|jj
|�WdQRX|j|j��|j�j
��|j|j
��dS)Nc3s�EdHdS)Nr�r
r
)rYr
rrEs
zBBaseTaskTests.test_cancel_both_task_and_inner_future.<locals>.task)r+r%rr9r)rr�r}rWr~r:rKrLr�)rrErRr
)rYr�&test_cancel_both_task_and_inner_future�sz4BaseTaskTests.test_cancel_both_task_and_inner_futurecs�|j|j��|j|j��tj��fdd��}|j|j|��}tj|j�|j|j���j	d�tj|j�|j|j��|j
�|j�j��|jj
|�}|j|d�|j|j��dS)Nc3s4�EdHy�EdHWntjk
r.dSXdS)Nr�)rr~r
)�fut1�fut2r
rrEs

z5BaseTaskTests.test_cancel_task_catching.<locals>.taskr�)r+r%rr9r)rr�rO�_fut_waiterrVr}rKr�r:rMr�)rrErR�resr
)r�r�r�test_cancel_task_catchings
z'BaseTaskTests.test_cancel_task_catchingcs�|j|j��|j|j��|j|j��tj���fdd��}|j|j|��}tj|j�|j|j���j	d�tj|j�|j|j��|j
�|j�j��tj|j�|j|j���j	d�|jj
|�}|j|d�|j�j��|j|j��dS)Nc3s>�EdHy�EdHWntjk
r.YnX�EdH}|S)N)rr~)r�)r�r��fut3r
rrE1s

z5BaseTaskTests.test_cancel_task_ignoring.<locals>.taskr�)r+r%rr9r)rr�rOr�rVr}rKr�r:rMr�)rrErRr�r
)r�r�r�r�test_cancel_task_ignoring,s&


z'BaseTaskTests.test_cancel_task_ignoringcsttj���j��tj���fdd��}�j�|����jtj�j���j�j	���j
�j��j
�j��dS)Nc3s,�j��j�j�tjd�d�EdHdS)Nr8)r%r�)r}rK�_must_cancelrr�r
)r%rrRr
rrEOsz4BaseTaskTests.test_cancel_current_task.<locals>.task)
rr?rQr9r)rWr~r:rKrLr�r�r})rrEr
)r%rrRr�test_cancel_current_taskKs
z&BaseTaskTests.test_cancel_current_taskcsrtj�}�j|�tj��fdd��}�j||����jtj|j���j�j	���j
�j��j
�j��dS)z+coroutine end right after task is cancelledcs�j��j�j�dS)Nr�)r}rKr�r
)rrRr
rrEcsz.BaseTaskTests.test_cancel_at_end.<locals>.taskN)
rr?rQr9r)rWr~r:rKrLr�r�r})rr%rEr
)rrRr�test_cancel_at_end^s
z BaseTaskTests.test_cancel_at_endc	s�tj���j�fdd��d���j����fdd�������fdd�}�j�|����jtj���j��WdQRX�j�j	���j�j	���j�j	��dS)Ncs�j�S)N)rBr
)r%r
rr,xsz8BaseTaskTests.test_cancel_awaited_task.<locals>.<lambda>c�s�IdHdS)Nr
r
)r>r
r�nested}sz6BaseTaskTests.test_cancel_awaited_task.<locals>.nestedc�s4�j�����tjd�IdH�j��IdHdS)Nr)r)rr�r}r
)r%r��nested_taskrrEr
rr(�sz4BaseTaskTests.test_cancel_awaited_task.<locals>.coro)
rr?r�r+r)rWr~r:rKr�)rr(r
)r>r%r�r�rrEr�test_cancel_awaited_taskps
z&BaseTaskTests.test_cancel_awaited_taskcs��fdd�}�j|��d�g�tj���fdd��}�j�|��}�jt��}�j|�WdQRX�jt|j	�d��j
|j���j�d��jd�j
��x�D]}|j�q�W|j��jtj�j|�dS)	Nc3s@dV}�jd|�dV}�jd|�dV}�jd|�dVdS)Ng�������?g�������?g333333�?)r�)r�)rr
rr��sz:BaseTaskTests.test_stop_while_run_in_complete.<locals>.genrc3sLxF�dkrF�jtjd�d���dEdH�d7��dkr�j�qWdS)N�
g�������?)r%rr�r)�appendrr��stopr
)r%�waitersr�r
rrE�s
z;BaseTaskTests.test_stop_while_run_in_complete.<locals>.taskz+Event loop stopped before Future completed.r�g333333�?)r/rr9r)rWrAr:rM�str�	exceptionr�rLr��timerBr}r~)rr�rErR�cm�wr
)r%rr�r�r�test_stop_while_run_in_complete�s"	


z-BaseTaskTests.test_stop_while_run_in_completec
s��fdd�}�j|��d�tj��fdd��}�j�|��}�jtj���jtj|d�d��WdQRX�j|j	���j|j
���jd�j���j
�d�dS)Nc3s.dV}�jd|�dV}�jd|�dV}dS)Ng�������?rg�������?)r�)r�)rr
rr��s
z(BaseTaskTests.test_wait_for.<locals>.genc
3s(d�ztjd�d�EdHWdd�XdS)NTg�������?)r%FrL)rr�r
)�foo_runningr%r
rrf�s
z(BaseTaskTests.test_wait_for.<locals>.foog�������?)r%F)r/rr9r)rW�TimeoutErrorr:r�rKrLr�r�r�rM)rr�rfr>r
)r�r%rr�
test_wait_for�s

 zBaseTaskTests.test_wait_forcCs>|j�}tjdd��}|jtj|�d|d��}|j|d�dS)NcSsdS)NrLr
r
r
r
rr(�sz2BaseTaskTests.test_wait_for_blocking.<locals>.coro)�timeoutr%rL)r/rr9r:r�rM)rr%r(r�r
r
r�test_wait_for_blocking�s
z$BaseTaskTests.test_wait_for_blockingcs��fdd�}�j|��tj�fdd��}tj��z<�j�|��}�jtj���jtj|d��WdQRXWdtjd�X�j	d�j
���j|j���j|j
��dS)Nc3s.dV}�jd|�dV}�jd|�dVdS)Ng�������?rg{�G�z�?)r�)r�)rr
rr��s
z9BaseTaskTests.test_wait_for_with_global_loop.<locals>.genc3stjd�d�EdHdS)Ng�������?)r%rL)rr�r
)r%r
rrf�sz9BaseTaskTests.test_wait_for_with_global_loop.<locals>.foog{�G�z�?)r/rr9rQr)rWr�r:r�r�r�rKrLr�)rr�rfr>r
)r%rr�test_wait_for_with_global_loop�s

 z,BaseTaskTests.test_wait_for_with_global_loopcCsVdd�}|j|�}|j|�}tj|d|d�}|jd|jd�|j|�}|j|d�dS)NcssdVdVdVdS)Ng�������?r
r
r
r
rr�sz7BaseTaskTests.test_wait_for_race_condition.<locals>.geng�������?)r�r%g�������?rI)r/r+rr��
call_laterrVr:rM)rr�r%r>rEr�r
r
r�test_wait_for_race_conditions


z*BaseTaskTests.test_wait_for_race_conditioncs��fdd�}�j|���j�tjd�d����j�tjd�d���tj����fdd��}�j�j�|���}�j|d��jd�j���j�j�|���}�jd�j���j|d�dS)	Nc3s.dV}�jd|�dV}�jd|�dVdS)Ng�������?rg333333�?)r�)r�)rr
rr�s
z$BaseTaskTests.test_wait.<locals>.geng�������?)r%g333333�?c3sBtj��g�d�EdH\}}�j|t��g���j|t��dS)N)r%r�)r�waitrM�set)rL�pending)r�r�r%rr
rrf#sz$BaseTaskTests.test_wait.<locals>.foor�)	r/r)rr�r9r:rMr�r�)rr�rfr�r
)r�r�r%rr�	test_waits
zBaseTaskTests.test_waitcs��fdd�}�j|�}�j|tjd|d����j|tjd|d���tj���fdd��}tj|�|j�j||���}�j|d�dS)	Nc3s.dV}�jd|�dV}�jd|�dVdS)Ng{�G�z�?rg���Q��?)r�)r�)rr
rr�5s
z5BaseTaskTests.test_wait_with_global_loop.<locals>.geng{�G�z�?)r%g���Q��?c3s>tj��g�EdH\}}�j|t��g���j|t��dS)Nr�)rr�rMr�)rLr�)r�r�rr
rrfAsz5BaseTaskTests.test_wait_with_global_loop.<locals>.foor�)r/r)rr�r9rQr:rM)rr�r%rfr�r
)r�r�rr�test_wait_with_global_loop3s

z(BaseTaskTests.test_wait_with_global_loopcCsvtjdd��}|d�}|j|jtj|||d�g|jd��}|jj|�\}}|j|�|jtdd�|D��ddh�dS)NcSs|S)Nr
)�sr
r
rr(Osz:BaseTaskTests.test_wait_duplicate_coroutines.<locals>.cororF�spam)r%css|]}|j�VqdS)N)rN)r5rYr
r
r�	<genexpr>[sz?BaseTaskTests.test_wait_duplicate_coroutines.<locals>.<genexpr>)	rr9r)r%r�r:r�rMr�)rr(�crErLr�r
r
r�test_wait_duplicate_coroutinesNs
z,BaseTaskTests.test_wait_duplicate_coroutinescCsb|jt|jjtjt�|jd��tjd|jd�}tj|gd|jd�}|jt|jj|�|j�dS)N)r%g$@r)�return_whenr%r)	rWrXr%r:rr�r�r�rB)rZ
sleep_coroZ	wait_coror
r
r�test_wait_errors]szBaseTaskTests.test_wait_errorscs��fdd�}�j|�}�j|tjd|d��}�j|tjd|d��}�j|tj||gtj|d��}|j|�\}}�j|h|��j|h|��j|j	���j
|j	���j|j���j
d|j��|jd�|jtj||g|d��dS)Nc3s.dV}�jd|�dV}�jd|�dVdS)Ng$@rg�������?)r�)r�)rr
rr�ls
z4BaseTaskTests.test_wait_first_completed.<locals>.geng$@)r%g�������?)r�r%r�)r/r)rr�r��FIRST_COMPLETEDr:rMr�rLrK�assertIsNonerNr�r��advance_time)rr�r%r�r�rErLr�r
)rr�test_wait_first_completedjs"


z'BaseTaskTests.test_wait_first_completedcCs�tjdd��}tjdd��}|j|j|��}|j|j|��}|j|jtj||gtj|jd��}|jj|�\}}|j||h|�|j|j	��|j
|j��|j|j	��|j
|j��dS)Ncss
dVdS)Nr
r
r
r
r�coro1�sz2BaseTaskTests.test_wait_really_done.<locals>.coro1cssdVdVdS)Nr
r
r
r
r�coro2�sz2BaseTaskTests.test_wait_really_done.<locals>.coro2)r�r%)rr9r)r%r�r�r:rMrKrLr�rN)rr�r�r�r�rErLr�r
r
r�test_wait_really_done�sz#BaseTaskTests.test_wait_really_donec	s��fdd�}�j|�}�j|tjd|d��}tjdd��}�j||��}�j|tj||gtj|d��}|j|�\}}�j|h|��j|h|��j	d|j
��|jd	�|jtj||g|d��dS)
Nc3sdV}�jd|�dVdS)Ng$@r)r�)r�)rr
rr��sz4BaseTaskTests.test_wait_first_exception.<locals>.geng$@)r%cSstd��dS)N�err)�ZeroDivisionErrorr
r
r
r�exc�sz4BaseTaskTests.test_wait_first_exception.<locals>.exc)r�r%rr�)r/r)rr�r9r��FIRST_EXCEPTIONr:rMr�r�r�)	rr�r%r�r�r�rErLr�r
)rr�test_wait_first_exception�s


z'BaseTaskTests.test_wait_first_exceptioncs��fdd�}�j|���j�tjd�d��}tj�fdd��}�j�|��}tj||gtj�d�}�j|�\}}�j|h|��j|h|��j	d�j
���jd	��jtj||g�d��dS)
Nc3s.dV}�jd|�dV}�jd|�dVdS)Ng$@rg{�G�z�?)r�)r�)rr
rr��s
z<BaseTaskTests.test_wait_first_exception_in_wait.<locals>.geng$@)r%c3s tjd�d�EdHtd��dS)Ng{�G�z�?)r%r�)rr�r�r
)r%r
rr��sz<BaseTaskTests.test_wait_first_exception_in_wait.<locals>.exc)r�r%g{�G�z�?r�)r/r)rr�r9r�r�r:rMr�r�r�)rr�r�r�r�rErLr�r
)r%rr�!test_wait_first_exception_in_wait�s

z/BaseTaskTests.test_wait_first_exception_in_waitcs��fdd�}�j|���j�tjd�d���tj�fdd��}�j�|���tj����fdd��}�j�j�|����jd	�j���j�j�|����jd	�j��dS)
Nc3s.dV}�jd|�dV}�jd|�dVdS)Ng�������?rg333333�?)r�)r�)rr
rr��s
z3BaseTaskTests.test_wait_with_exception.<locals>.geng�������?)r%c3s tjd�d�EdHtd��dS)Ng333333�?)r%Zreally)rr�r�r
)r%r
r�sleeper�sz7BaseTaskTests.test_wait_with_exception.<locals>.sleeperc3s`tj��g�d�EdH\}}�jt|�d��j|t��tdd�|D��}�jt|�d�dS)N)r%r�css|]}|j�dk	r|VqdS)N)r�)r5rYr
r
rr��szFBaseTaskTests.test_wait_with_exception.<locals>.foo.<locals>.<genexpr>r)rr�rM�lenr�)rLr��errors)r�r�r%rr
rrf�s
z3BaseTaskTests.test_wait_with_exception.<locals>.foog333333�?)r/r)rr�r9r:r�r�)rr�r�rfr
)r�r�r%rr�test_wait_with_exception�s
z&BaseTaskTests.test_wait_with_exceptioncs��fdd�}�j|���j�tjd�d����j�tjd�d���tj����fdd��}�j�j�|����jd�j���jd	��jtj	��g�d��dS)
Nc3s@dV}�jd|�dV}�jd|�dV}�jd|�dVdS)Ng�������?rg333333�?g)\��(�?)r�)r�)rr
rr�sz1BaseTaskTests.test_wait_with_timeout.<locals>.geng�������?)r%g333333�?c3sFtj��gd�d�EdH\}}�j|t�g���j|t�g��dS)Ng)\��(�?)r�r%)rr�rMr�)rLr�)r�r�r%rr
rrfsz1BaseTaskTests.test_wait_with_timeout.<locals>.foog)\��(�?r�)
r/r)rr�r9r:r�r�r�r�)rr�rfr
)r�r�r%rr�test_wait_with_timeouts	

z$BaseTaskTests.test_wait_with_timeoutcs��fdd�}�j|�}�j|tjd|d��}�j|tjd|d��}|jtj||gd|d��\}}�j|t|g���j|t|g���jd|j	��|j
d�|jtj||g|d��dS)Nc3s@dV}�jd|�dV}�jd|�dV}�jd|�dVdS)Ng�������?rg333333�?)r�)r�)rr
rr�$sz8BaseTaskTests.test_wait_concurrent_complete.<locals>.geng�������?)r%g333333�?)r�r%r�)r/r)rr�r:r�rMr�r�r�r�)rr�r%r�r�rLr�r
)rr�test_wait_concurrent_complete"s	

z+BaseTaskTests.test_wait_concurrent_completecs�dd�}|j|��d�_t��d�tj���fdd��}|dd��|dd	��|d
d��tj����fdd
��}�j|j�|���}|jd
�j��|j	d|dd�k�|j	d	|dd�k�|j
|dd��j|j�|���}|jd
�j��dS)NcssdVdVdVdVdS)Nrg{�G�z�?r
r
r
r
rr�?sz,BaseTaskTests.test_as_completed.<locals>.geng�?Fc3sFtj|�d�EdH�j|��rBd�krBd�krBd��jd�|S)N)r%r�r�Tg�Q���?)rr��addr�)�dtr�)�	completedr%�time_shiftedr
rr�Ks

z0BaseTaskTests.test_as_completed.<locals>.sleeperg{�G�z�?r�r�g333333�?r�c3s6g}x,tj���g�d�D]}|j|EdH�qW|S)N)r%)r�as_completedr�)�valuesrY)r�r�r�r%r
rrfYsz,BaseTaskTests.test_as_completed.<locals>.foor�)r/Zslow_callback_durationr�rr9r:r)r�r�rKrM)rr�r�rfr�r
)r�r�r�r�r%r�r�test_as_completed=s"




zBaseTaskTests.test_as_completedcs�dd�}|j|��tjdd�d��tjdd�d��tj���fdd	��}�j|j�|���}|jt|�d
|�|j|dd�|j|ddd
�|j|ddtj	�|j
d
�j���jd��jtj
��g�d��dS)NcssdVdVdVdVdS)Nrg�������?r
r
r
r
rr�lsz9BaseTaskTests.test_as_completed_with_timeout.<locals>.geng�������?r�)r%g333333�?r�c3s�g}xztj��gd�d�D]b}|r,�jd�y|EdH}|jd|f�Wqtjk
rz}z|jd|f�WYdd}~XqXqW|S)Ng���Q��?)r�r%g{�G�z�?rr�)rr�r�r�r�)r�rY�vr�)r�r�r%r
rrfws

$z9BaseTaskTests.test_as_completed_with_timeout.<locals>.foor�rrg���Q��?r�)rr�)r/rr�r9r:r)rMr��assertIsInstancer�r�r�r�r�)rr�rfr�r
)r�r�r%r�test_as_completed_with_timeoutjs


z,BaseTaskTests.test_as_completed_with_timeoutcsPdd�}�j|��tjdd�d��tj���fdd��}�j�j�|���dS)NcssdVdVdVdS)Nrg{�G�z�?r
r
r
r
rr��sz@BaseTaskTests.test_as_completed_with_unused_timeout.<locals>.geng{�G�z�?r�)r%c3s6x0tj�gd�d�D]}|EdH}�j|d�qWdS)Nr)r�r%r�)rr�rM)rYr�)r�r%rr
rrf�s
z@BaseTaskTests.test_as_completed_with_unused_timeout.<locals>.foo)r/rr�r9r:r))rr�rfr
)r�r%rr�%test_as_completed_with_unused_timeout�s

z3BaseTaskTests.test_as_completed_with_unused_timeoutc	Cs�dd�}|j|�}tjdd|d�}tjdd|d�}||h}ttj||d��}|jt|�d�|j|d	�}|j|d�|jd|j	��|j
d�|j|d
�}|j|d�|jd|j	��dS)NcssdVdVdVdS)Nrg�������?r
r
r
r
rr��sz9BaseTaskTests.test_as_completed_reverse_wait.<locals>.geng�������?r�)r%g�������?r�r�rr)r/rr��listr�rMr�r:r�r�r�)	rr�r%r�r��fs�futsr�r�r
r
r�test_as_completed_reverse_wait�s

z,BaseTaskTests.test_as_completed_reverse_waitc
s��fdd�}�j|�}tjdd|d�}tjdd|d�}||h}ttj||d��}�jt|�d�tj||d�}|j|�\}}	�jt	dd	�|D��ddh�dS)
Nc3s.dV}�jd|�dV}�jd|�dVdS)Ng�������?r)r�)r�)rr
rr��s
z7BaseTaskTests.test_as_completed_concurrent.<locals>.geng�������?r�)r%r�r�css|]}|j�VqdS)N)rN)r5rYr
r
rr��sz=BaseTaskTests.test_as_completed_concurrent.<locals>.<genexpr>)
r/rr�r�r�rMr�r�r:r�)
rr�r%r�r�r�r��waiterrLr�r
)rr�test_as_completed_concurrent�s
z*BaseTaskTests.test_as_completed_concurrentcsntjdd���tj��fdd��}�j�j|��}�jj|�|j�}�jt|�ddh��jt|�d�dS)NcSs|S)Nr
)r�r
r
rr(�szBBaseTaskTests.test_as_completed_duplicate_coroutines.<locals>.coroc3sDg}�d�}x2tj||�d�g�jd�D]}|j|EdH�q(W|S)N�hamr�)r%)rr�r%r�)rNr�rY)r(rr
rrs�szDBaseTaskTests.test_as_completed_duplicate_coroutines.<locals>.runnerr�r�r�)	rr9r)r%r:rNrMr�r�)rrsr>rNr
)r(rr�&test_as_completed_duplicate_coroutines�s	z4BaseTaskTests.test_as_completed_duplicate_coroutinescsv�fdd�}�j|��tj�fdd��}�j�|dd��}�j|��j|j���j|j�d��j	d�j
��dS)Nc3s.dV}�jd|�dV}�jd|�dVdS)Ng�������?g�������?)r�)r�)rr
rr��s
z%BaseTaskTests.test_sleep.<locals>.genc3s6tj|d�d�EdHtj|d|�d�EdH}|S)Nr�)r%)rr�)r��argr�)r%r
rr��sz)BaseTaskTests.test_sleep.<locals>.sleeperg�������?�yeah)r/rr9r)r:rKrLrMrNr�r�)rr�r�rRr
)r%rr�
test_sleep�s

zBaseTaskTests.test_sleepcs��fdd�}�j|�}�j|tjdd|d��}d�|j���fdd�}||_tj|��j�j�|j	�tj|��j
�j�dS)Nc3sdV}�jd|�dVdS)Ng$@r)r�)r�)rr
rr��sz,BaseTaskTests.test_sleep_cancel.<locals>.geng$@r�)r%cs�||f|����S)Nr
)Zdelay�callbackr)�handle�orig_call_laterr
rr�sz3BaseTaskTests.test_sleep_cancel.<locals>.call_later)r/r)rr�r�rr�r�Z
_cancelledr}rK)rr�r%rRr�r
)rrrr�test_sleep_cancel�s


zBaseTaskTests.test_sleep_cancelcsj�fdd�}�j|��tj�fdd���tj���fdd��}|�}�j�j|�d��jd�j��dS)	Nc3s.dV}�jd|�dV}�jd|�dVdS)Ng�������?ri�)r�)r�)rr
rr�s
z9BaseTaskTests.test_task_cancel_sleeping_task.<locals>.genc3stj|�d�EdHdS)N)r%)rr�)r�)r%r
rr� sz;BaseTaskTests.test_task_cancel_sleeping_task.<locals>.sleepc3sL�j��d��}�jd|j�y|EdHWntjk
rBdSXdSdS)Ni�g�������?r�zslept in)r)r�r}rr~)r�)r%rr�r
r�doit$sz:BaseTaskTests.test_task_cancel_sleeping_task.<locals>.doitr�g�������?)r/rr9rMr:r�r�)rr�rZdoerr
)r%rr�r�test_task_cancel_sleeping_tasks
z,BaseTaskTests.test_task_cancel_sleeping_taskcs�|j|j��tj�fdd��}|j|j|��}tj|j�|j|j��|j	�tj|j�|j
tj|jj|�|j
|j�|j�j��dS)Nc3s�EdHdS)Nr
r
)r>r
rr(6sz:BaseTaskTests.test_task_cancel_waiter_future.<locals>.coro)r+r%rr9r)rr�rOr�r}rWr~r:r�rKr�)rr(rEr
)r>r�test_task_cancel_waiter_future3sz,BaseTaskTests.test_task_cancel_waiter_futurecCsFtjdd��}|�}|j|j|�}|jd�|jt|j�|j�dS)NcSsdS)NrUr
r
r
r
rrJFsz:BaseTaskTests.test_step_in_completed_task.<locals>.notmuchrI)	rr9r)r%rVrW�AssertionError�_steprB)rrJr�rEr
r
r�test_step_in_completed_taskEs
z)BaseTaskTests.test_step_in_completed_taskcCs&tjdd��}|jt|jj|��dS)NcssdVdVdS)NrrUr
r
r
r
rrJRsz/BaseTaskTests.test_step_result.<locals>.notmuch)rr9rWrAr%r:)rrJr
r
r�test_step_resultQszBaseTaskTests.test_step_resultcs�Gdd�dtj�}||jd��d�tj��fdd��}|j|j|��}tj|j�|j�j�t	�}�j
|�tj|j�|j|��|j|j��|j
|j��dS)Ncs(eZdZ�fdd�Z�fdd�Z�ZS)z2BaseTaskTests.test_step_result_future.<locals>.Futcsd|_t�j||�dS)NF)�cb_addedr-r\)rr�kwds)r&r
rr\_sz;BaseTaskTests.test_step_result_future.<locals>.Fut.__init__csd|_t�j|�dS)NT)r
r-rz)r�fn)r&r
rrzcszDBaseTaskTests.test_step_result_future.<locals>.Fut.add_done_callback)r!r"r#r\rz�
__classcell__r
r
)r&r�Fut^sr)r%c3s�EdH�dS)Nr
r
)r>rNr
r�wait_for_futurejsz>BaseTaskTests.test_step_result_future.<locals>.wait_for_future)rr*r%r9r)rr�rKr
�objectrVrOrLr�rN)rrrrRr�r
)r>rNr�test_step_result_future[s	
z%BaseTaskTests.test_step_result_futurecCsNtjdd��}|j|j|��}|jt|j�|j|j��|j	|j
�t�dS)NcSs
t��dS)N)�
BaseExceptionr
r
r
r�notmutch{sz<BaseTaskTests.test_step_with_baseexception.<locals>.notmutch)rr9r)r%rWrrrKrLr�r�)rrrEr
r
r�test_step_with_baseexceptionzs
z*BaseTaskTests.test_step_with_baseexceptioncs��fdd�}�j|��tj�fdd���t��tj��fdd��}�j�|��}tj��|j��j|j	���j
ttj���j|j	���j|j���j
|j���dS)Nc3sdV}�jd|�dVdS)Ng$@r)r�)r�)rr
rr��sz;BaseTaskTests.test_baseexception_during_cancel.<locals>.genc3stjd�d�EdHdS)Nr�)r%)rr�r
)r%r
rr��sz?BaseTaskTests.test_baseexception_during_cancel.<locals>.sleeperc3s0y��EdHWntjk
r*��YnXdS)N)rr~r
)�base_excr�r
rr�sz@BaseTaskTests.test_baseexception_during_cancel.<locals>.notmutch)r/rr9rr)rr�r}r�rLrWrKr�rOr�)rr�rrEr
)rr%rr�r� test_baseexception_during_cancel�s

z.BaseTaskTests.test_baseexception_during_cancelcCsfdd�}|jtj|��dd�}|jtj|��tjdd��}|jtj|��|jtjtj���dS)NcSsdS)Nr
r
r
r
rr�sz2BaseTaskTests.test_iscoroutinefunction.<locals>.fncss
dVdS)Nr
r
r
r
r�fn1�sz3BaseTaskTests.test_iscoroutinefunction.<locals>.fn1css
dVdS)Nr
r
r
r
r�fn2�sz3BaseTaskTests.test_iscoroutinefunction.<locals>.fn2)r�r�iscoroutinefunctionr9rKr�Mock)rrrrr
r
r�test_iscoroutinefunction�sz&BaseTaskTests.test_iscoroutinefunctionc	sX|j|j��tj�fdd��}|�}|jt��|jj|�WdQRX|j�j��dS)Nc3s
�VdS)Nr
r
)r>r
rr�sz?BaseTaskTests.test_yield_vs_yield_from.<locals>.wait_for_future)	r+r%rr9rWrAr:r�rL)rrrEr
)r>r�test_yield_vs_yield_from�sz&BaseTaskTests.test_yield_vs_yield_fromcs<tjdd���tj�fdd��}|�}|jt|jj|�dS)Ncss
dVdS)Nr
r
r
r
rr(�sz>BaseTaskTests.test_yield_vs_yield_from_generator.<locals>.coroc
3s ��}z
|VWd|j�XdS)N)rB)r�)r(r
rr�s
zIBaseTaskTests.test_yield_vs_yield_from_generator.<locals>.wait_for_future)rr9rWrAr%r:)rrrEr
)r(r�"test_yield_vs_yield_from_generator�sz0BaseTaskTests.test_yield_vs_yield_from_generatorcCsPtjdd��}|jtj|��|�}|jtj|��|jj|�}|j|d�dS)NcSsdS)NrFr
r
r
r
rr��sz;BaseTaskTests.test_coroutine_non_gen_function.<locals>.funcrF)rr9rKr�iscoroutiner%r:rM)rr�r(r�r
r
r�test_coroutine_non_gen_function�sz-BaseTaskTests.test_coroutine_non_gen_functioncsz|j|j��tj�fdd��}tj�fdd��}|j|j|��}|j|j|��}|jj|�}|j|d�|j|j��dS)Ncs�S)Nr
r
)r>r
rr��szIBaseTaskTests.test_coroutine_non_gen_function_return_future.<locals>.funccs�jd�dS)NrF)rVr
)r>r
rr(�szIBaseTaskTests.test_coroutine_non_gen_function_return_future.<locals>.cororF)	r+r%rr9r)r:rMr�rN)rr�r(�t1�t2r�r
)r>r�-test_coroutine_non_gen_function_return_future�sz;BaseTaskTests.test_coroutine_non_gen_function_return_futurecsj�jj��j�j�jd��tj���fdd��}�j�j|�j����jj���j�j�jd��dS)N)r%csX�j�j|d��k�tj|�z&�j�jd����j�j���Wdtjd�XdS)N)r%)rK�current_taskrrQrO)r%)r'rrEr
rr(�s
z-BaseTaskTests.test_current_task.<locals>.coro)	r&r'r�r#r%rr9r)r:)rr(r
)r'rrEr�test_current_task�szBaseTaskTests.test_current_taskcs��jj��j�j�jd���j�j���j�j��tj�����fdd��}tj�����fdd��}�j�j|�j����j�j|�j����jj	tj
��f�jd���j�j�jd��dS)N)r%c3sD�j�j|d��k��EdH�j�j|d��k��jd�dS)N)r%T)rKr#rV)r%)r'r�r�r�task1r
rr�s
zFBaseTaskTests.test_current_task_with_interleaving_tasks.<locals>.coro1c3sD�j�j|d��k��jd��EdH�j�j|d��k�dS)N)r%T)rKr#rV)r%)r'r�r�r�task2r
rr�s

zFBaseTaskTests.test_current_task_with_interleaving_tasks.<locals>.coro2)r&r'r�r#r%r+rr9r)r:r�)rr�r�r
)r'r�r�rr%r&r�)test_current_task_with_interleaving_tasks
sz7BaseTaskTests.test_current_task_with_interleaving_taskscs�d��j�j��tj���fdd���tj��fdd��}tj|��jd�}tj�j�|j��jj|��j	�d��j
�j��dS)Nrc3s>y�EdHWn tjk
r.�d7��YnX�jd�dS)Nrzgot past sleep() in inner())rr~�failr
)�proofrr�r
r�inner/sz<BaseTaskTests.test_yield_future_passes_cancel.<locals>.innerc3s<y��EdHWntjk
r.�d7�Yn
X�d7�dS)Nr8r�)rr~r
)r*r)r
rr�:s
z<BaseTaskTests.test_yield_future_passes_cancel.<locals>.outer)r%�e)r+r%rr9rGrr�r}r:rMrKr�)rr�rYr
)r*r)rr�r�test_yield_future_passes_cancel*s
z-BaseTaskTests.test_yield_future_passes_cancelcs�d��j�j��tj��fdd���tj���fdd��}tj|��jd�}tj�j�|j��jtj	�jj
|��jd�tj�j��j�d�dS)Nrc3s�EdH�d7�dS)Nrr
r
)r)r�r
rr*Qs
zCBaseTaskTests.test_yield_wait_does_not_shield_cancel.<locals>.innerc3s*tj��g�jd�EdH\}}�d7�dS)N)r%r8)rr�r%)�d�p)r*r)rr
rr�WszCBaseTaskTests.test_yield_wait_does_not_shield_cancel.<locals>.outer)r%r)
r+r%rr9rGrr�r}rWr~r:rVrM)rr�rYr
)r*r)rr�r�&test_yield_wait_does_not_shield_cancelKs
z4BaseTaskTests.test_yield_wait_does_not_shield_cancelcCs<|j|j�}tj|�}|jd�|jj|�}|j|d�dS)Nr�)r+r%r�shieldrVr:rM)rr*r�r�r
r
r�test_shield_resultfs


z BaseTaskTests.test_shield_resultcCsT|j|j�}tj|�}tj|j�td�}|j|�tj|j�|j|j	�|�dS)Nr�)
r+r%rr0rr�rA�
set_exceptionrOr�)rr*r�r�r
r
r�test_shield_exceptionms

z#BaseTaskTests.test_shield_exceptioncCsH|j|j�}tj|�}tj|j�|j�tj|j�|j|j��dS)N)	r+r%rr0rr�r}rKr�)rr*r�r
r
r�test_shield_cancelvs
z BaseTaskTests.test_shield_cancelcCs8|j|j�}|jd�|jjtj|��}|j|d�dS)Nr�)r+r%rVr:rr0rM)rr>r�r
r
r�test_shield_shortcut~s
z"BaseTaskTests.test_shield_shortcutc
s�d��j�j��tj��fdd���tj���fdd��}tj|��jd�}tj�j�|j��jtj	���jj
|�WdQRX�jd�tj�j��j�d�dS)Nrc3s�EdH�d7�dS)Nrr
r
)r)r�r
rr*�s
z/BaseTaskTests.test_shield_effect.<locals>.innerc3s$tj���jd�EdH�d7�dS)N)r%r8)rr0r%r
)r*r)rr
rr��sz/BaseTaskTests.test_shield_effect.<locals>.outer)r%r)
r+r%rr9rGrr�r}rWr~r:rVrM)rr�rYr
)r*r)rr�r�test_shield_effect�s
z BaseTaskTests.test_shield_effectcCs�|j|j�}|j|j�}tj|||jd�}tj||jd�}tj|j�|j�tj|j�|j|j	��|j
d�|j
d�tj|j�|j|j�ddg�dS)N)r%rr�)
r+r%rr;r0rr�r}rKr�rVrMrN)r�child1�child2�parentr�r
r
r�test_shield_gather�s

z BaseTaskTests.test_shield_gathercCs�|j|j�}|j|j�}tj||jd�}tj||jd�}tj|||jd�}tj|j�|j�tj|j�|j|j	�tj
�|j|j��|j|j��|j
d�|j
d�tj|j�dS)N)r%rr�)r+r%rr0r;rr�r}r�r�r~rKr�rV)rr7r8r�r�r9r
r
r�test_gather_shield�s

z BaseTaskTests.test_gather_shieldcCsZ|j|j�}|jt|jjtj||jd��t�}|jt|jjtj||jd��|j�dS)N)r%)	r+r%rWr`r:rr�rrB)rr>r(r
r
r�test_as_completed_invalid_args�sz,BaseTaskTests.test_as_completed_invalid_argscCsx|j|j�}|jt|jjtj||jd��t�}|jt|jjtj||jd��|j�|jt	|jjtjg|jd��dS)N)r%)
r+r%rWr`r:rr�rrBrX)rr>r(r
r
r�test_wait_invalid_args�sz$BaseTaskTests.test_wait_invalid_argscsD�fdd�}td��|�WdQRXtd��|�WdQRXdS)Ncs�tj���fdd��}�j�j���jd�|���jtj����j�jt	j
��j�j��j�j
t	j��jj���j�j�dS)Nc3s�j�j��EdHdS)N)rK�
gi_runningr
)r>r�rr
rr(�szKBaseTaskTests.test_corowrapper_mocks_generator.<locals>.check.<locals>.coro)rr9r+r%rVrKrr��gi_frame�types�	FrameTyper�r>r��CodeTyper:r�)r()r)r>r�r�check�s
z=BaseTaskTests.test_corowrapper_mocks_generator.<locals>.checkFT)r)rrCr
)rr� test_corowrapper_mocks_generator�s


z.BaseTaskTests.test_corowrapper_mocks_generatorcsttd��btj�fdd��}tj��fdd���tjdd����j�j|��}�jj|�}�j|d�WdQRXdS)NTc3s��EdHS)Nr
r
)r!r
rr sz5BaseTaskTests.test_yield_from_corowrapper.<locals>.t1c3s(�j�j�}�j�j�|��|EdHS)N)r+r%r))rY)r�t3r
rr!sz5BaseTaskTests.test_yield_from_corowrapper.<locals>.t2cSs|jd�dS)Nrr�r
)rr�r
)rV)rYr
r
rrE
sz5BaseTaskTests.test_yield_from_corowrapper.<locals>.t3rr�r
)rr�r
)rrr9r)r%r:rM)rr rE�valr
)rr!rEr�test_yield_from_corowrapper�s
z)BaseTaskTests.test_yield_from_corowrappercs8dd���fdd�}|j|d�d	�|j|d�d�dS)
Ncss
dV}|S)Nr
)r�r
r
rrfsz;BaseTaskTests.test_yield_from_corowrapper_send.<locals>.foocsZtjj���}|jd�y|j|�Wn&tk
rL}z
|jdSd}~Xn
Xtd��dS)NrzStopIteration was expected)rr�CoroWrapper�send�
StopIterationrr)r��cwZex)rfr
r�calls
z<BaseTaskTests.test_yield_from_corowrapper_send.<locals>.callrr�r�)rr�)rr�)rM)rrLr
)rfr� test_yield_from_corowrapper_sends
z.BaseTaskTests.test_yield_from_corowrapper_sendcCs0tj�}dd�}tjj|��}||d<d|_dS)NcssgEdHdS)Nr
r
r
r
rrf&sz3BaseTaskTests.test_corowrapper_weakref.<locals>.foorK)�weakref�WeakValueDictionaryrrrHr�)rZwdrfrKr
r
r�test_corowrapper_weakref$s
z&BaseTaskTests.test_corowrapper_weakrefcCs�dd�}td�}tjj|��}|jd�|j||j|��tjj|��}|jd�|j||jt|��tjj|��}|jd�|jtd�}|j|t�|j|j	d�tjj|��}|jd�|jtdd�}|j|t�|j|j	d�dS)Ncss@d}x6y
|V}Wqtk
r6}z
|}WYdd}~XqXqWdS)N)�	Exception)�value�er
r
rrf-s
z1BaseTaskTests.test_corowrapper_throw.<locals>.foorf)rf)rf)
rQrrrHrIrO�throwr�rMr)rrfr�rKr
r
r�test_corowrapper_throw+s$



z$BaseTaskTests.test_corowrapper_throwzneed python 3.4 or latercs*�jj}tj�fdd��}tj�}�jjd��jj|�|�j�}tj	|�jd�}�j
|j�jd�|h�tj�j�z*�j
|j�|h��j
|jd�|h�Wdtjd�X�jj
��j
t�jj�d�|jjd=d}|j}d}tj��j
|j�jd�t��|j�jdtj|d��|j�dS)	Nc3s �j|�}|EdHtd��dS)Nzcode never reached)r+rQ)r%�future)rr
r�kill_meOs

z>BaseTaskTests.test_log_destroyed_pending_task.<locals>.kill_meT)r%rrVz%Task was destroyed but it is pending!)�messagerEr)r&r'rr9rrr%rw�set_exception_handlerrGrM�	all_tasksrQZ	_run_oncer��_readyr?�f_localsr{r�
gc_collectr�Zassert_called_with�ANYZ
reset_mock)rr'rWZmock_handlerr(rErr
)rr�test_log_destroyed_pending_taskJs4



z-BaseTaskTests.test_log_destroyed_pending_taskzasyncio.base_events.loggercsTtj���j��tjdd���tj���fdd��}�j|���j|jj�dS)NcSst�dS)N)r`r
r
r
rr(�szBBaseTaskTests.test_tb_logger_not_called_after_cancel.<locals>.coroc3s2�j����}tjd�d�EdH|j�d}dS)Ng�������?)r%)r)rr�r})rE)r(r%rr
rrs�szDBaseTaskTests.test_tb_logger_not_called_after_cancel.<locals>.runner)rr?rQr9r:r��error�called)r�m_logrsr
)r(r%rr�&test_tb_logger_not_called_after_cancels
z4BaseTaskTests.test_tb_logger_not_called_after_cancelzasyncio.coroutines.loggerc	
Cs�td��tjdd��}WdQRXt}tj�jd}|�tj�|j	|j
j�|j
jdd}t
j|�\}}dtj|j�tj|�|tj|�|f}|j|tj|tj��dS)NTcSsdS)Nr
r
r
r
r�	coro_noop�sz=BaseTaskTests.test_coroutine_never_yielded.<locals>.coro_noopr�rz�^<CoroWrapper %s\(?\)? .* at %s:%s, .*> was never yielded from\nCoroutine object created at \(most recent call last, truncated to \d+ last lines\):\n.*\n  File "%s", line %s, in test_coroutine_never_yielded\n    coro_noop\(\)$)rrr9�__file__�sys�	_getframe�f_linenorr]rKr`ra�	call_argsrryr�r�r#rp�compile�DOTALL)	rrbrdZtb_filename�	tb_linenorXZ
func_filenameZfunc_linenoZregexr
r
r�test_coroutine_never_yielded�s


z*BaseTaskTests.test_coroutine_never_yieldedcsD�fdd�}td��|�WdQRXtd��|�WdQRXdS)z�Return of @asyncio.coroutine()-wrapped function generator object
        from @asyncio.coroutine()-wrapped function should have same effect as
        returning generator object or Future.cs,tjdd��}�jj|��}�j|d�dS)NcSstjdd��}|�S)NcSsdS)Nrr
r
r
r
r�
inner_coro�sziBaseTaskTests.test_return_coroutine_from_coroutine.<locals>.check.<locals>.outer_coro.<locals>.inner_coro)rr9)rnr
r
r�
outer_coro�szUBaseTaskTests.test_return_coroutine_from_coroutine.<locals>.check.<locals>.outer_coror)rr9r%r:rM)rorN)rr
rrC�szABaseTaskTests.test_return_coroutine_from_coroutine.<locals>.checkFNT)r)rrCr
)rr�$test_return_coroutine_from_coroutine�s


z2BaseTaskTests.test_return_coroutine_from_coroutinecCsh|jjd�|j|jt��}tj�jd}|j|jt	�|j
|jddd�t|df�|jj|�dS)NTrr�r
�test_task_source_traceback���)
r%rwr)rrfrgrhr�r{r�rMrer:)rrEr�r
r
rrq�sz(BaseTaskTests.test_task_source_tracebackcsztj���j�j�tj��fdd��}�j|��}�jtj||�d��}�j|j��j	tj
�j|��j|j
��dS)Nc3s�j��}|EdHdS)N)r+)r>)r%rr
r�blocking_coroutine�s
z?BaseTaskTests._test_cancel_wait_for.<locals>.blocking_coroutine)r%)rr?r�rBr9r�r�r�r}rWr~r:rKr�)rr�rsrEr�r
)r%rr�_test_cancel_wait_for�s
z#BaseTaskTests._test_cancel_wait_forcCs|jd�dS)N)rt)rr
r
r�test_cancel_blocking_wait_for�sz+BaseTaskTests.test_cancel_blocking_wait_forcCs|jd�dS)NgN@)rt)rr
r
r�test_cancel_wait_for�sz"BaseTaskTests.test_cancel_wait_forcs�tj�}|j|j�|j|���fdd�}tj|�|d�}tj||d��d���fdd�}�j|��jd�|j	��|j
�d�|j�j��|j
�j
�dg�dS)	zYEnsure that a gathering future refuses to be cancelled once all
        children are donec3s
�EdHS)Nr
r
)r>r
r�
child_coro�sz6BaseTaskTests.test_cancel_gather_1.<locals>.child_coro)r%Ncs�j��dS)N)r})r6)�
cancel_result�gather_taskr
r�cancelling_callback�sz?BaseTaskTests.test_cancel_gather_1.<locals>.cancelling_callbackr�F)rr?r�rBr+r;rGrzrVr:rMr�r�rN)rr%rwZ
gather_futurerzr
)rxr>ryr�test_cancel_gather_1�s



z"BaseTaskTests.test_cancel_gather_1cs@tj���j�j��fdd�����fdd�}�j|��dS)Nc�sBd}x8|d7}tjtjd�d�d�d�IdH|dkrdSqWdS)Nrg�������?)r%T)�return_exceptionsr%r)rr;r�)r�)r%r
rrFsz0BaseTaskTests.test_cancel_gather_2.<locals>.testc�s^�j����}tjd�d�IdH|j�y|IdHWntjk
rNYnX�jd�dS)Ng�������?)r%z1gather did not propagate the cancellation request)r)rr�r}r~r()Zqwe)r%rrFr
r�mainsz0BaseTaskTests.test_cancel_gather_2.<locals>.main)rr?r�rBr:)rr}r
)r%rrFr�test_cancel_gather_2s

z"BaseTaskTests.test_cancel_gather_2cs4tjdd���tj��fdd��}�jj|��dS)NcSsdddS)Nrrr
r
r
r
rrf*sz3BaseTaskTests.test_exception_traceback.<locals>.fooc3s*�j�j���}dV�j|j�j�dS)N)r)r%ZassertIsNotNoner��
__traceback__)rE)rfrr
rr}.sz4BaseTaskTests.test_exception_traceback.<locals>.main)rr9r%r:)rr}r
)rfrr�test_exception_traceback'sz&BaseTaskTests.test_exception_tracebackcCs�dd�}||j_tjdd��}|j|jj�|jt��*|�}z|j	|j|�Wd|j
�XWdQRX|j|jj�|jjdd}|j
d|�|j|jj|j�t��dS)NcWst�dS)N)rX)r�rr
r
rr�8sz8BaseTaskTests.test_error_in_call_soon.<locals>.call_sooncSsdS)Nr
r
r
r
rr(<sz3BaseTaskTests.test_error_in_call_soon.<locals>.cororz$Task was destroyed but it is pending)r%r�rr9r�r`rarWrXr)rBrKri�assertInrMr'rZr�)rrbr�r(r�rXr
r
r�test_error_in_call_soon6sz%BaseTaskTests.test_error_in_call_soon)jr!r"r#r'r*r)r+r.r=rDrHrSrTrZr[�unittest�
skipUnlessrxr_rardrtr�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�rrrrr	rrrrrrrr"r$r'r,r/r1r3r4r5r6r:r;r<r=rDrGrMrPrU�PY34r_rZpatchrcrmrprqrtrurvr{r~r�r�r
r
r
)r&rr$Os�;D$)!
 "-%
"

 !	'4r$cCsv|j}|j}|dks|dkr |SGdd�d�}Gdd�d||�}Gdd�d||�}dd�}||_||_||_d|_|S)	Ncs4eZdZ�fdd�Z�fdd�Z�fdd�Z�ZS)z(add_subclass_tests.<locals>.CommonFuturecs"tjdd��|_t�j||�dS)NcSsdS)Nrr
r
r
r
rr,YszCadd_subclass_tests.<locals>.CommonFuture.__init__.<locals>.<lambda>)�collections�defaultdict�callsr-r\)rr�kwargs)r&r
rr\Xsz1add_subclass_tests.<locals>.CommonFuture.__init__cs|jdd7<t�j�S)N�_schedule_callbacksr)r�r-r�)r)r&r
rr�\sz<add_subclass_tests.<locals>.CommonFuture._schedule_callbackscs|jdd7<t�j|�S)Nrzr)r�r-rz)rr)r&r
rrz`sz:add_subclass_tests.<locals>.CommonFuture.add_done_callback)r!r"r#r\r�rzr
r
r
)r&r�CommonFutureWsr�cs(eZdZ�fdd�Z�fdd�Z�ZS)z add_subclass_tests.<locals>.Taskcs|jdd7<t�j|�S)Nrr)r�r-r)rr)r&r
rresz&add_subclass_tests.<locals>.Task._stepcs|jdd7<t�j|�S)N�_wakeupr)r�r-r�)rr)r&r
rr�isz(add_subclass_tests.<locals>.Task._wakeup)r!r"r#rr�r
r
r
)r&rr'dsr'c@seZdZdS)z"add_subclass_tests.<locals>.FutureN)r!r"r#r
r
r
rr*msr*cs~�j�jd����fdd�}�j|��jd�}�jj|�}�j|d��jt|j�ddddd���jt�j�ddd��dS)	N)r%c�s�jj�fdd���IdHS)Ncs
�jd�S)Nr�)rVr
)r>r
rr,tszYadd_subclass_tests.<locals>.test_subclasses_ctask_cfuture.<locals>.func.<locals>.<lambda>)r%r�r
)r>rr
rr�sszGadd_subclass_tests.<locals>.test_subclasses_ctask_cfuture.<locals>.funcr�r�r)rr�rzr�)rzr�)r*r%r'r:rM�dictr�)rr�rErNr
)r>rr�test_subclasses_ctask_cfutureps
z9add_subclass_tests.<locals>.test_subclasses_ctask_cfuture)r'r*r�rq)�clsZBaseTaskZ
BaseFuturer�r'r*r�r
r
r�add_subclass_testsPs
	r��_CFuturezrequires the C _asyncio modulec@s2eZdZeedd�Zeedd�Zej	dd��Z
dS)�CTask_CFuture_Tests�_CTaskNr�cCs�tjtd�}tjdd��}|j|j|��}|jj|�|�}x.td�D]"}|j	|�|jd�|jj|�qFW|j
|�|ddd�dS)	N�gettotalrefcountcSsdS)Nr
r
r
r
rr(�sz@CTask_CFuture_Tests.test_refleaks_in_task___init__.<locals>.coror8)r%rr�)Zdelta)rZ
get_attributerfrr9r)r%r:r<r\r�)rr�r(rEZrefs_before�ir
r
r�test_refleaks_in_task___init__�sz2CTask_CFuture_Tests.test_refleaks_in_task___init__)r!r"r#�getattrrr'rr*rZ
refcount_testr�r
r
r
rr��sr�c@s$eZdZeedd�Zeedd�ZdS)�CTask_CFuture_SubclassTestsr�Nr�)r!r"r#r�rr'rr*r
r
r
rr��sr�c@seZdZeedd�ZejZdS)�CTask_PyFuture_Testsr�N)	r!r"r#r�rr'r�	_PyFuturer*r
r
r
rr��sr�c@seZdZejZeedd�ZdS)�PyTask_CFuture_Testsr�N)	r!r"r#r�_PyTaskr'r�rr*r
r
r
rr��sr�c@seZdZejZejZdS)�PyTask_PyFuture_TestsN)	r!r"r#rr�r'rr�r*r
r
r
rr��sr�c@seZdZejZejZdS)�PyTask_PyFuture_SubclassTestsN)	r!r"r#rr�r'rr�r*r
r
r
rr��sr�c@seZdZdd�Zdd�ZdS)�GenericTaskTestscCs|jttjtj��dS)N)rK�
issubclassrr'r*)rr
r
r�test_future_subclass�sz%GenericTaskTests.test_future_subclasscCsRyddl}Wntk
r Yn.Xyddl}Wntk
rL|jd�YnXdS)Nrz_asyncio module is missing)�
_functools�ImportError�_asyncior()rr�r�r
r
r�test_asyncio_module_compiled�sz-GenericTaskTests.test_asyncio_module_compiledN)r!r"r#r�r�r
r
r
rr��sr�csTeZdZ�fdd�Zdd�Zdd�Zdd�Zd	d
�Zdd�Zd
d�Z	dd�Z
�ZS)�GatherTestsBasecs2t�j�|j�|_|j�|_|j|jdd�dS)NF)�cleanup)r-r.r/�one_looprCrQ)r)r&r
rr.�s


zGatherTestsBase.setUpcCsx|jrtj|�qWdS)N)r[rr�)rr%r
r
r�	_run_loop�szGatherTestsBase._run_loopcs��fdd�td�D�\}}}tj�j|||�|�}tj�}|j|�|jd�|jd��j�j	��j
|jd��j|j
��|jd��j�j	�|j|��j
|j�dddg�dS)Ncsg|]}tj�jd��qS))r%)rr*r�)r5r�)rr
rr7�sz2GatherTestsBase._check_success.<locals>.<listcomp>r
rr�F)r<rr;�wrap_futuresr�MockCallbackrzrVr�r�rMrar�rL�assert_called_once_withrN)rr�r�r�r�r>�cbr
)rr�_check_success�s




zGatherTestsBase._check_successcCs|j�|jdd�dS)NF)r|)r�)rr
r
r�test_success�szGatherTestsBase.test_successcCs|jdd�dS)NT)r|)r�)rr
r
r�test_result_exception_success�sz-GatherTestsBase.test_result_exception_successc	s��fdd�td�D�\}}}}}tj�j|||||��}tj�}|j|�t�}|jd�|j	|��j
�j��j|j
��|j|��j|j�|�|jd�|j�|j	t��|j�dS)Ncsg|]}tj�jd��qS))r%)rr*r�)r5r�)rr
rr7	sz6GatherTestsBase.test_one_exception.<locals>.<listcomp>rrr
)r<rr;r�rr�rzr�rVr2r�r�rKrLr�rOr�r}rA)	rr�r�r�r-rSr>r�r�r
)rr�test_one_exception	s 




z"GatherTestsBase.test_one_exceptionc	s��fdd�td�D�\}}}}tj�j||||�ddi�}tj�}|j|�t�}t�}|j	d�|j
|�|j	d��j�j��j
|j��|j
|��j�j��j|j��|j|��j|j�dd||g�dS)Ncsg|]}tj�jd��qS))r%)rr*r�)r5r�)rr
rr7	sz:GatherTestsBase.test_return_exceptions.<locals>.<listcomp>rr|Trr
)r<rr;r�rr�rzr�rArVr2r�r�r�rLrKr�rMrN)	rr�r�r�r-r>r�r�Zexc2r
)rr�test_return_exceptions	s"





z&GatherTestsBase.test_return_exceptionscCs�tjjtjjtj��}djd�}tdd||d�\}}}|j|j�d�td|d|d	�\}}}|j|j�d�td|d
|d	�\}}}|j|j�d�tdd|d
|d	�\}}}|j|j�d�dS)
N�
�import asyncio.coroutines� print(asyncio.coroutines._DEBUG)z-Ez-c)�
PYTHONPATHsFalse�)ZPYTHONASYNCIODEBUGr��1sTrue)r�r�)	�os�path�dirnamerre�joinr	rM�rstrip)rZaio_pathr��sts�stdout�stderrr
r
r�test_env_var_debug'	s&z"GatherTestsBase.test_env_var_debug)r!r"r#r.r�r�r�r�r�r�r�r
r
r
)r&rr��sr�c@sDeZdZdd�Zdd�Zdd�Zdd�Zd	d
�Zdd�Zd
d�Z	dS)�FutureGatherTestscGs|S)Nr
)rrr
r
rr�F	szFutureGatherTests.wrap_futurescCs�tj|j�|jtjd�tj|�}|j|tj�|j|j|j�|j	|j�|j
|j��|j|j
�g�tj|d|ji�}|j|j|j�dS)Nr%)rrQr�r�r;r�r*rOrPr�rKrLrMrNrC)rZseq_or_iterr>r
r
r�_check_empty_sequenceI	s
z'FutureGatherTests._check_empty_sequencecCs2|jg�|jf�|jt��|jtd��dS)Nr�)r�r��iter)rr
r
r�test_constructor_empty_sequenceU	s

z1FutureGatherTests.test_constructor_empty_sequencecCshtj|jd�}tj|jd�}|jt��tj||�WdQRX|jt��tj||jd�WdQRXdS)N)r%)rr*r�rCrWrXr;)rr�r�r
r
r�%test_constructor_heterogenous_futures[	sz7FutureGatherTests.test_constructor_heterogenous_futurescs��fdd�td�D�}tj|�}�j|j�j��j�j��j|j��tj|d�ji�}�j|j�j��j�j��j|j��dS)Ncsg|]}tj�jd��qS))r%)rr*rC)r5r�)rr
rr7d	szIFutureGatherTests.test_constructor_homogenous_futures.<locals>.<listcomp>r
r%)	r<rr;rOrPrCr�r�rL)rZchildrenr>r
)rr�#test_constructor_homogenous_futuresc	s
z5FutureGatherTests.test_constructor_homogenous_futurescs��fdd�td�D�\}}}}}tj|||||�}tj�}|j|�|jd�|j��j�j	��j
|j��|j|��j
|j���j|j�tj�|jd�|j�|jt��|j�dS)Ncsg|]}tj�jd��qS))r%)rr*r�)r5r�)rr
rr7o	sz;FutureGatherTests.test_one_cancellation.<locals>.<listcomp>rrr
)r<rr;rr�rzrVr}r�r�rKrLr�r�r�r�r�r~r2rA)rr�r�r�r-rSr>r�r
)rr�test_one_cancellationn	s 



z'FutureGatherTests.test_one_cancellationc	s�fdd�td�D�\}}}}}}tj||||||dd�}tj�}|j|�|jd�t�}	|j|	�|j	��j
�j��j|j
��|jd�|j	�t�}
|j|
��jj|�}�j|dtj��j|d	tj�d|d<|d	<�j|d|	ddd|
g�|j|�dS)
Ncsg|]}tj�jd��qS))r%)rr*r�)r5r�)rr
rr7�	szLFutureGatherTests.test_result_exception_one_cancellation.<locals>.<listcomp>�T)r|rr
r�r)r<rr;rr�rzrVr�r2r}r�r�r�rLrAr:r�r~rMr�)rr�r�r�r-rSrYr>r�ZzdeZrter�r
)rr�&test_result_exception_one_cancellation�	s*





z8FutureGatherTests.test_result_exception_one_cancellationN)
r!r"r#r�r�r�r�r�r�r�r
r
r
rr�D	sr�csDeZdZ�fdd�Zdd�Zdd�Zdd�Zd	d
�Zdd�Z�Z	S)
�CoroutineGatherTestscst�j�tj|j�dS)N)r-r.rrQr�)r)r&r
rr.�	s
zCoroutineGatherTests.setUpcGs4g}x*|D]"}tj|fdd��}|j|��q
W|S)Ncss
|EdHS)Nr
)r>r
r
rr(�	sz/CoroutineGatherTests.wrap_futures.<locals>.coro)rr9r�)rrZcorosr>r(r
r
rr��	s
z!CoroutineGatherTests.wrap_futurescCs�tjdd��}|�}|�}tj||�}|j|j|j�|jj|�|j|jdd�|�}|�}tj|||jd�}|j|j|j�|jj|�dS)NcSsdS)Nrur
r
r
r
rr(�	szBCoroutineGatherTests.test_constructor_loop_selection.<locals>.coroF)r�)r%)	rr9r;rOrPr�r:rQrC)rr(Zgen1Zgen2r>Zgen3Zgen4r�r
r
r�test_constructor_loop_selection�	sz4CoroutineGatherTests.test_constructor_loop_selectioncCsXtjdd��}|d�}tj|||d�||jd�}|j|j�|j|j�ddddg�dS)NcSs|S)Nr
)r�r
r
rr(�	sz<CoroutineGatherTests.test_duplicate_coroutines.<locals>.cororu�def)r%)rr9r;r�r�rMrN)rr(r�r>r
r
r�test_duplicate_coroutines�	s
z.CoroutineGatherTests.test_duplicate_coroutinesc
sd�tj�jd��tj��fdd��}tj|��jd��tj|��jd��d�tj�����fdd��}tj|��jd�}tj�j��j|j���j	tj
���jj|�WdQRX�j�j���j�j
���j�j
���j�j
��tj�j��j�d�dS)Nr)r%c3s�EdH�d7�dS)Nrr
r
)r)r�r
rr*�	s
z?CoroutineGatherTests.test_cancellation_broadcast.<locals>.innerc3s(tj���jd���EdH�d7�dS)N)r%r8)rr;r�r
)r7r8�gathererr)rr
rr��	s
z?CoroutineGatherTests.test_cancellation_broadcast.<locals>.outer)rr*r�r9rGrr�rKr}rWr~r:r�r�rM)rr*r�rYr
)r7r8r�r)rr�r�test_cancellation_broadcast�	s$z0CoroutineGatherTests.test_cancellation_broadcastcs�tjdd���tj�jd��tj�jd��tj����fdd��}tj|��jd�}tj�j��jd�tj�j��jd�tj�j��j|j	�t
�dS)Ncss|EdHtd��dS)Nzshould not be ignored)rA)rYr
r
rr*�	s
z:CoroutineGatherTests.test_exception_marking.<locals>.inner)r%c3s$tj�������jd�EdHdS)N)r%)rr;r�r
)r�r�r*rr
rr��	sz:CoroutineGatherTests.test_exception_marking.<locals>.outer)rr9r*r�rGrr�rVr�r�rA)rr�rYr
)r�r�r*rr�test_exception_marking�	s

z+CoroutineGatherTests.test_exception_marking)
r!r"r#r.r�r�r�r�r�r
r
r
)r&rr��	s		"r�csbeZdZdZ�fdd�Zejddd��Zddd	�Zd
d�Z	dd
�Z
dd�Zdd�Zdd�Z
�ZS)�RunCoroutineThreadsafeTestsz/Test case for asyncio.run_coroutine_threadsafe.cs$t�j�tj�|_|j|j�dS)N)r-r.rr?r%rQ)r)r&r
rr.�	s

z!RunCoroutineThreadsafeTests.setUpFccsHtjd|jd�EdH|r"td��|r@tjjj|j�j�dV||S)z"Wait 0.05 second and return a + b.g�������?)r%NzFail!)rr�r%rArr'r#r})rr�r�r(r}r
r
rr�
szRunCoroutineThreadsafeTests.addNc
CsV|jdd||d�}tj||j�}|r4|jj|jd�z
|j|�S|j�pN|j�XdS)z$Run add coroutine in the event loop.rr�)r(r}N)	r�rZrun_coroutine_threadsafer%Zcall_soon_threadsaferIrNrLr})rr(r}r��advance_coror(rVr
r
r�target
s
z"RunCoroutineThreadsafeTests.targetcCs,|jjd|j�}|jj|�}|j|d�dS)z9Test coroutine submission from a thread to an event loop.Nr
)r%�run_in_executorr�r:rM)rrVrNr
r
r�test_run_coroutine_threadsafe!
sz9RunCoroutineThreadsafeTests.test_run_coroutine_threadsafec
CsH|jjd|jd�}|jt��}|jj|�WdQRX|jd|jj�dS)z]Test coroutine submission from a thread to an event loop
        when an exception is raised.NTzFail!)	r%r�r�rWrAr:r�r�r)rrV�exc_contextr
r
r�,test_run_coroutine_threadsafe_with_exception'
szHRunCoroutineThreadsafeTests.test_run_coroutine_threadsafe_with_exceptionc
st�fdd�}�jjd|�}�jtj���jj|�WdQRXtj�j�x$tjj	�j�D]}�j
|j��qZWdS)zZTest coroutine submission from a thread to an event loop
        when a timeout is raised.cs�jdd�S)Nr)r�)r�r
)rr
rr,2
szXRunCoroutineThreadsafeTests.test_run_coroutine_threadsafe_with_timeout.<locals>.<lambda>N)r%r�rWrr�r:rr�r'rZrKrL)rr�rVrEr
)rr�*test_run_coroutine_threadsafe_with_timeout/
szFRunCoroutineThreadsafeTests.test_run_coroutine_threadsafe_with_timeoutc	sB�fdd�}�jjd|�}�jtj���jj|�WdQRXdS)z[Test coroutine submission from a tread to an event loop
        when the task is cancelled.cs�jdd�S)NT)r})r�r
)rr
rr,>
szZRunCoroutineThreadsafeTests.test_run_coroutine_threadsafe_task_cancelled.<locals>.<lambda>N)r%r�rWrr~r:)rr�rVr
)rr�,test_run_coroutine_threadsafe_task_cancelled;
szHRunCoroutineThreadsafeTests.test_run_coroutine_threadsafe_task_cancelledcs��jjd�fdd��}�jjdd��tj�}�jj|��jt��}�jj|�WdQRX�j	d|j
jd��jt
|j�d�|j\\}}}�j|d|j
�dS)	ziTest coroutine submission from a tread to an event loop
        when the task factory raise an exception.Ncs�jdd�S)NT)r�)r�r
)rr
rr,H
szbRunCoroutineThreadsafeTests.test_run_coroutine_threadsafe_task_factory_exception.<locals>.<lambda>cSstS)N)�
wrong_name)r%r(r
r
rr,J
sr�rrr�)r%r�r0rr�rYrW�	NameErrorr:r�r�rrMr�Zcall_args_listri)rrVr�r�r%�contextr�r
)rr�4test_run_coroutine_threadsafe_task_factory_exceptionC
szPRunCoroutineThreadsafeTests.test_run_coroutine_threadsafe_task_factory_exception)FF)FFNF)r!r"r#�__doc__r.rr9r�r�r�r�r�r�r�r
r
r
)r&rr��	s

r�cs0eZdZ�fdd�Z�fdd�Zdd�Z�ZS)�
SleepTestscs"t�j�tj�|_tjd�dS)N)r-r.rr?r%rQ)r)r&r
rr.Y
s

zSleepTests.setUpcs|jj�d|_t�j�dS)N)r%rBr-�tearDown)r)r&r
rr�^
s
zSleepTests.tearDowncsDd��fdd��tj���fdd��}�jj|���j�d�dS)Nrcs�|7�dS)Nr
)�num)rNr
r�
inc_resultf
sz.SleepTests.test_sleep_zero.<locals>.inc_resultc3sJ�jj�d��j�d�tjd�jdd�EdH}�j�d��|�dS)Nrrr�)r%rN)r%r�rMrr�)r�)r�rNrr
rr(j
s
z(SleepTests.test_sleep_zero.<locals>.coro�)rr9r%r:rM)rr(r
)r�rNrr�test_sleep_zeroc
s
zSleepTests.test_sleep_zero)r!r"r#r.r�r�r
r
r
)r&rr�X
sr��__main__)r
r)r
r)F)7r�r��
contextlibr�r1rkr�r�rfr�r@r�rNrrrrrrrFrr�rZtest.support.script_helperr	Ztest.script_helperZasyncio.test_support�version_infor�rxr9r�contextmanagerrrrr$r�r��hasattrZTestCaser�r�r�r�r�r�r�r�r�r�r�r�r!r}r
r
r
r�<module>s�



	EdTc]