Your IP : 216.73.216.213


Current Path : /opt/alt/python35/lib64/python3.5/test/test_asyncio/__pycache__/
Upload File :
Current File : //opt/alt/python35/lib64/python3.5/test/test_asyncio/__pycache__/test_tasks.cpython-35.opt-1.pyc



��Yf	-�@s{dZddlZddlZddlZddlZddlZddlZddlZddlZddl	Z	ddl
Z
ddl	mZddlZddlm
Z
ddlmZyddlmZWn"ek
r�ddlmZYnXyddlmZWnKek
rTyddlmZWn"ek
rOddlmZYnXYnXejd	d
fkZejd	dfkZejdd
��Zejdd��Zddd�ZGdd�d�ZGdd�dej �Z!Gdd�d�Z"Gdd�de"ej �Z#Gdd�de"ej �Z$Gdd�dej �Z%Gdd �d ej �Z&e'd!krwe	j(�dS)"zTests for tasks.py.�N)�mock)�
coroutines)�
test_utils)�support)�test_support)�assert_python_ok���cCsdS)N�rrr�A/opt/alt/python35/lib64/python3.5/test/test_asyncio/test_tasks.py�coroutine_function#sr
ccs5tj}|j}z||_dVWd||_XdS)N)�asyncior�_DEBUG)ZenabledrZ	old_debugrrr�set_coroutine_debug(s				rFcCsg|rd|}n
d|}|dk	rR|d}d||||d|dfSd|||fSdS)Nz%sz%s, defined�z%coro=<%s() %s at %s> created at %s:%srzcoro=<%s() %s at %s>���r)Zqualname�state�src�source_traceback�	generator�framerrr�format_coroutine5s


rc@s(eZdZdd�Zdd�ZdS)�DummycCsdS)Nz<Dummy>r)�selfrrr�__repr__DszDummy.__repr__cGsdS)Nr)r�argsrrr�__call__GszDummy.__call__N)�__name__�
__module__�__qualname__rrrrrrrBsrcsleZdZ�fdd�Zdd�Zdd�Zdd�Zd	d
�Zdd�Zd
d�Z	e
jed�dd��Z
dd�Zdd�Zdd�Zdd�Zdd�Zdd�Zdd�Zd d!�Zd"d#�Zd$d%�Zd&d'�Zd(d)�Zd*d+�Zd,d-�Zd.d/�Zd0d1�Zd2d3�Zd4d5�Zd6d7�Z d8d9�Z!d:d;�Z"d<d=�Z#d>d?�Z$d@dA�Z%dBdC�Z&dDdE�Z'dFdG�Z(dHdI�Z)dJdK�Z*dLdM�Z+dNdO�Z,dPdQ�Z-dRdS�Z.dTdU�Z/dVdW�Z0dXdY�Z1dZd[�Z2d\d]�Z3d^d_�Z4d`da�Z5dbdc�Z6ddde�Z7dfdg�Z8dhdi�Z9djdk�Z:dldm�Z;dndo�Z<dpdq�Z=drds�Z>dtdu�Z?dvdw�Z@dxdy�ZAdzd{�ZBd|d}�ZCd~d�ZDd�d��ZEd�d��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��ZSe
jeTd��d�d���ZUeVjWd��d�d���ZXeVjWd��d�d���ZYd�d��ZZd�d��Z[d�d��Z\d�d��Z]d�d��Z^d�d��Z_�S)��	TaskTestscs t�j�|j�|_dS)N)�super�setUp�
new_test_loop�loop)r)�	__class__rrr#Ms
zTaskTests.setUpcCsytj�}tjd|�}tjdd��}z4|jtd��|jj||��WdQRXWd|j�XdS)Nr%css
|EdHdS)Nr)�futrrr�runUsz-TaskTests.test_other_loop_future.<locals>.runzTask .* got Future .* attached)	r�new_event_loop�Future�	coroutine�assertRaisesRegex�RuntimeErrorr%�run_until_complete�close)r�
other_loopr'r(rrr�test_other_loop_futureQs	
!z TaskTests.test_other_loop_futurec	sdtj�fdd��}tj|�d|j��|jtd��|jj��WdQRXdS)Nc3s
�EdHdS)Nrr)�taskrr�testasz2TaskTests.test_task_awaits_on_itself.<locals>.testr%zTask cannot await on itself)rr+�
ensure_futurer%r,r-r.)rr3r)r2r�test_task_awaits_on_itself`s
	
z$TaskTests.test_task_awaits_on_itselfcCs�tjdd��}tj|�d|j�}|jj|�|j|j��|j|j�d�|j	|j
|j�tj�}|j|�tj|�d|�}|j	|j
|�|j|�|j
�dS)NcSsdS)N�okrrrrr�notmuchlsz*TaskTests.test_task_class.<locals>.notmuchr%r6)rr+�Taskr%r.�
assertTrue�done�assertEqual�result�assertIs�_loopr)�set_event_loopr/)rr7�tr%rrr�test_task_classks

zTaskTests.test_task_classcCs�tjdd��}tj|�d|j�}|jj|�|j|j��|j|j�d�|j	|j
|j�tj�}|j|�tj|�d|�}|j	|j
|�|j|�|j
�dS)NcSsdS)Nr6rrrrrr7}sz7TaskTests.test_ensure_future_coroutine.<locals>.notmuchr%r6)rr+r4r%r.r9r:r;r<r=r>r)r?r/)rr7r@r%rrr�test_ensure_future_coroutine|s

z&TaskTests.test_ensure_future_coroutinecCs�tjd|j�}|jd�tj|�}|jj|�|j|j��|j|j	�d�|j
||�tj�}|j|�|j
t��tj|d|�}WdQRX|j�tj|d|j�}|j
||�dS)Nr%�ko)rr*r%�
set_resultr4r.r9r:r;r<r=r)r?�assertRaises�
ValueErrorr/)rZf_orig�fr%rrr�test_ensure_future_future�s


z#TaskTests.test_ensure_future_futurecCstjdd��}tj|�d|j�}tj|�}|jj|�|j|j��|j|j	�d�|j
||�tj�}|j|�|j
t��tj|d|�}WdQRX|j�tj|d|j�}|j
||�dS)NcSsdS)Nr6rrrrrr7�sz2TaskTests.test_ensure_future_task.<locals>.notmuchr%r6)rr+r8r%r4r.r9r:r;r<r=r)r?rErFr/)rr7Zt_origr@r%rrr�test_ensure_future_task�s

z!TaskTests.test_ensure_future_taskzneed python 3.5 or latercCspGdd�d�}tjdd��}tj�}|j|�tj||��d|�}|j|�dS)Nc@s(eZdZdd�Zdd�ZdS)z2TaskTests.test_ensure_future_awaitable.<locals>.AwcSs
||_dS)N)�coro)rrJrrr�__init__�sz;TaskTests.test_ensure_future_awaitable.<locals>.Aw.__init__css|jEdHS)N)rJ)rrrr�	__await__�sz<TaskTests.test_ensure_future_awaitable.<locals>.Aw.__await__N)rrr rKrLrrrr�Aw�srMcSsdS)Nr6rrrrrrJ�sz4TaskTests.test_ensure_future_awaitable.<locals>.coror%)rr+r)r?r4r.)rrMrJr%r'rrr�test_ensure_future_awaitable�s

z&TaskTests.test_ensure_future_awaitablec	Cs(|jt��tjd�WdQRXdS)Nr6)rE�	TypeErrorrr4)rrrr�test_ensure_future_neither�sz$TaskTests.test_ensure_future_neithercCsLtjd|j�}|jtd��|j|tj|��WdQRXdS)Nr%z#function is deprecated, use ensure_)rr*r%ZassertWarnsRegex�DeprecationWarningr=�async)rrGrrr�test_async_warning�s	
zTaskTests.test_async_warningcswd�tj�fdd���tj��fdd���tj���fdd��}�jj|��dS)Nc3s��EdHdS)Nrr)�barrr�foo�sz%TaskTests.test_get_stack.<locals>.fooc
s��jdd�}z�j|djjd�Wdd}Xtj�}�jddd|�|jd�|j�}�j	|d�dS)N�limitrrrU�filezfoo\(\) running)
Z	get_stackr;�f_code�co_name�io�StringIO�print_stack�seek�read�assertRegex)rGrW�tb)�TrrrrT�s
z%TaskTests.test_get_stack.<locals>.barc3s(tj��d�j���EdHdS)Nr%)rr4r%r)rarUrrr�runner�sz(TaskTests.test_get_stack.<locals>.runner)rr+r%r.)rrbr)rarTrUrr�test_get_stack�s
!zTaskTests.test_get_stackc	Cs|jjd�tjdd��}|j|jd�trQ|j|jd�|j|jt�t	j
|�\}}d||f}|�}tjs�tr�d}nd}|j|jd�tr�|j|j|�tj
|d|j�}|jt��t|d||jdd	�}|jt|�d
|�|j�|jt|�d|�|jtj|jj|�t|d||j�}|jt|�d
|�tj
|�d|j�}|jj|�t|d||j�}|jt|�d|�dS)NFcss
gEdHdS)N�abcrrrrrr7�s	z)TaskTests.test_task_repr.<locals>.notmuchr7z%s:%sr%�runningrTz <Task pending %s cb=[<Dummy>()]>z#<Task cancelling %s cb=[<Dummy>()]>r:z<Task cancelled %s>z<Task finished %s result='abc'>)r%�	set_debugrr+r;r�PY35r rr�get_function_sourcerrr8�add_done_callbackrr�_source_traceback�repr�cancelrE�CancelledErrorr.)	rr7�filename�linenor�gen�
coro_qualnamer@rJrrr�test_task_repr�sL		
zTaskTests.test_task_reprcCs|jjd�tjdd��}|j|jd�trQ|j|jd�|j|jt�|�}t	j
s|tr�d}d}n
d}}|j|j|�tr�|j|j|�t	j
rUt	j
rtj|�\}}|j
d}d||||d|df}n"|j}	d	||	j|	jf}|jt|�d
|�tj|d|j�}
|
jt��t	j
r�dtj|�}n|j}	d|	j|	jf}t|d
||
j
dt	j
�}|jt|
�d|�|jj|
�dS)NFcSsdS)N�{rrrrrr71sz8TaskTests.test_task_repr_coro_decorator.<locals>.notmuchr7rJrz0%s() running, defined at %s:%s, created at %s:%srz%s() running at %s:%sz<CoroWrapper %s>r%z%s:%srerz <Task pending %s cb=[<Dummy>()]>r)r%rfrr+r;rrgr rrrrrhrj�gi_code�co_filename�co_firstlinenorkr8rirrr.)rr7rpZ	coro_namerqrnrorrJ�coder@rrrr�test_task_repr_coro_decorator.sN		
		
			
			
z'TaskTests.test_task_repr_coro_decoratorcCs�|jjd�tjdd��}tjd|j�}tj||�d|j�}tj|j�|jt	|�dt
jt	|���|jd�|jj
|�dS)NFcss	|EdHS)Nr)r'rrr�wait_forusz3TaskTests.test_task_repr_wait_for.<locals>.wait_forr%z<Task .* wait_for=%s>)r%rfrr+r*r8r�run_brieflyr_rk�re�escaperDr.)rryr'r2rrr�test_task_repr_wait_forrs
z!TaskTests.test_task_repr_wait_forcCs�td��y|jjd�tjdd��}tjtj|d��}|jj|d��}d|_|j	|j
j�WdQRXt|j
�}d}|j
|j|�|�dS)NTcsstjd�EdHdS)Nr)r�sleep)�x�yrrr�func�sz:TaskTests.test_task_repr_partial_corowrapper.<locals>.funcr�FzV<CoroWrapper TaskTests.test_task_repr_partial_corowrapper.<locals>.func(1)() running, )rr%rfrr+�	functools�partial�create_taskZ_log_destroy_pending�
addCleanupZ_coror/rkr9�
startswith)rr�Zpartial_funcr2Z	coro_repr�expectedrrr�"test_task_repr_partial_corowrapper�s
	z,TaskTests.test_task_repr_partial_corowrappercsqtj��fdd��}tjdd���tjdd���|�}|j|jj|�d�dS)Nc3s$��EdH}��EdH}||S)Nr)�a�b)�inner1�inner2rr�outer�sz)TaskTests.test_task_basics.<locals>.outercSsdS)N�*rrrrrr��sz*TaskTests.test_task_basics.<locals>.inner1cSsdS)Ni�rrrrrr��sz*TaskTests.test_task_basics.<locals>.inner2i)rr+r;r%r.)rr�r@r)r�r�r�test_task_basics�s
	zTaskTests.test_task_basicsc	s��fdd�}�j|��tj�fdd��}tj|�d��}�j|j��jtj���j|�WdQRX�j	|j
���j	|j���j|j��dS)Nc3s dV}�jd|�dVdS)Ng$@r)�assertAlmostEqual)�when)rrrrp�sz"TaskTests.test_cancel.<locals>.genc3stjdd��EdHdS)Ng$@r%�)rr~r)r%rrr2�sz#TaskTests.test_cancel.<locals>.taskr%)
r$rr+r8�	call_soonrlrErmr.r9r:�	cancelled�assertFalse)rrpr2r@r)r%rr�test_cancel�szTaskTests.test_cancelcCs�tjdd��}tj|�d|j�}tj|j�|j�|jtj|jj	|�|j
|j��|j
|j��|j
|j��dS)NcssdVdVdS)Nr�rrrrrr2�sz)TaskTests.test_cancel_yield.<locals>.taskr%)rr+r8r%rrzrlrErmr.r9r:r�r�)rr2r@rrr�test_cancel_yield�s
zTaskTests.test_cancel_yieldc	s�tjd|j��tj�fdd��}tj|�d|j�}tj|j��j�|jtj	��|jj
|�WdQRX|j�j��|j|j��dS)Nr%c3s
�EdHdS)Nr�rr)rGrrr2�s	z0TaskTests.test_cancel_inner_future.<locals>.task)
rr*r%r+r8rrzrlrErmr.r9r�)rr2r@r)rGr�test_cancel_inner_future�s
z"TaskTests.test_cancel_inner_futurec	s�tjd|j��tj�fdd��}tj|�d|j�}tj|j��j�|j�|jtj	��|jj
|�WdQRX|j|j��|j�j
��|j|j
��dS)Nr%c3s
�EdHdS)Nr�rr)rGrrr2�s	z>TaskTests.test_cancel_both_task_and_inner_future.<locals>.task)rr*r%r+r8rrzrlrErmr.r9r:r�)rr2r@r)rGr�&test_cancel_both_task_and_inner_future�s

z0TaskTests.test_cancel_both_task_and_inner_futurecstjd|j��tjd|j��tj��fdd��}tj|�d|j�}tj|j�|j|j���j	d�tj|j�|j|j��|j
�|j�j��|jj
|�}|j|d�|j|j��dS)Nr%c3s6�EdHy
�EdHWntjk
r1dSYnXdS)Nr�)rrmr)�fut1�fut2rrr2�s
	
z1TaskTests.test_cancel_task_catching.<locals>.taskr�)rr*r%r+r8rrzr=�_fut_waiterrDrlr9r�r.r;r�)rr2r@�resr)r�r�r�test_cancel_task_catching�s

z#TaskTests.test_cancel_task_catchingcsgtjd|j��tjd|j��tjd|j��tj���fdd��}tj|�d|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)Nr%c3s=�EdHy
�EdHWntjk
r-YnX�EdH}|S)N)rrm)r�)r�r��fut3rrr2s	
z1TaskTests.test_cancel_task_ignoring.<locals>.taskr�)rr*r%r+r8rrzr=r�rDrlr9r�r.r;r�)rr2r@r�r)r�r�r�r�test_cancel_task_ignorings&!



z#TaskTests.test_cancel_task_ignoringcs�tj���j��tj���fdd��}tj|�d����jtj�j���j�j	���j
�j��j
�j��dS)Nc3s6�j��j�j�tjdd��EdHdS)N�dr%r�)rlr9�_must_cancelrr~r)r%rr@rrr21s
z0TaskTests.test_cancel_current_task.<locals>.taskr%)
rr)r?r+r8rErmr.r9r:r�r�rl)rr2r)r%rr@r�test_cancel_current_task-s
!z"TaskTests.test_cancel_current_taskcs�tj�}�j|�tj��fdd��}tj|�d|���jtj|j���j�j	���j
�j��j
�j��dS)z+coroutine end right after task is cancelledcs�j��j�j�dS)Nr�)rlr9r�r)rr@rrr2Es
z*TaskTests.test_cancel_at_end.<locals>.taskr%N)
rr)r?r+r8rErmr.r9r:r�r�rl)rr%r2r)rr@r�test_cancel_at_end@s
zTaskTests.test_cancel_at_endcs �fdd�}�j|��d�g�tj���fdd��}tj|�d��}�jt��}�j|�WdQRX�jt|j	�d��j
|j���j�d��jd	�j
��x�D]}|j�q�W|j��jtj�j|�dS)
Nc3sNdV}�jd|�dV}�jd|�dV}�jd|�dVdS)Ng�������?g�������?g333333�?)r�)r�)rrrrpTsz6TaskTests.test_stop_while_run_in_complete.<locals>.genrc3s`xY�dkr[�jtjdd����dEdH�d7��dkr�j�qWdS)N�
g�������?r%rr�r)�appendrr~�stopr)r%�waitersrrrr2bs

z7TaskTests.test_stop_while_run_in_complete.<locals>.taskr%z+Event loop stopped before Future completed.r�g333333�?)r$rr+r8rEr-r.r;�str�	exceptionr�r:r��timer/rlrm)rrpr2r@�cm�wr)r%rr�rr�test_stop_while_run_in_completeRs"	!


z)TaskTests.test_stop_while_run_in_completec
s��fdd�}�j|��d�tj��fdd��}tj|�d��}�jtj��$�jtj|dd���WdQRX�j|j	���j|j
���jd�j���j
�d�dS)Nc3s9dV}�jd|�dV}�jd|�dV}dS)Ng�������?rg�������?)r�)r�)rrrrp}s
z$TaskTests.test_wait_for.<locals>.genc
3s0d�ztjdd��EdHWdd�XdS)NTg�������?r%Fr:)rr~r)�foo_runningr%rrrU�s
z$TaskTests.test_wait_for.<locals>.foor%g�������?F)r$rr+r8rE�TimeoutErrorr.ryr9r:r�r�r�r;)rrprUr'r)r�r%rr�
test_wait_for{s
&zTaskTests.test_wait_forcCs\|j�}tjdd��}|jtj|�ddd|��}|j|d�dS)NcSsdS)Nr:rrrrrrJ�sz.TaskTests.test_wait_for_blocking.<locals>.coro�timeoutr%r:)r$rr+r.ryr;)rr%rJr�rrr�test_wait_for_blocking�sz TaskTests.test_wait_for_blockingcs��fdd�}�j|��tj�fdd��}tj��zOtj|�d��}�jtj���jtj|d��WdQRXWdtjd�X�j	d�j
���j|j���j|j
��dS)Nc3s7dV}�jd|�dV}�jd|�dVdS)Ng�������?rg{�G�z�?)r�)r�)rrrrp�s
z5TaskTests.test_wait_for_with_global_loop.<locals>.genc3stjdd��EdHdS)Ng�������?r%r:)rr~r)r%rrrU�sz5TaskTests.test_wait_for_with_global_loop.<locals>.foor%g{�G�z�?)r$rr+r?r8rEr�r.ryr�r�r9r:r�)rrprUr'r)r%rr�test_wait_for_with_global_loop�s
$z(TaskTests.test_wait_for_with_global_loopcCs�dd�}|j|�}tjd|�}tj|ddd|�}|jd|jd�|j|�}|j|d�dS)NcssdVdVdVdS)Ng�������?rrrrrrp�sz3TaskTests.test_wait_for_race_condition.<locals>.genr%r�g�������?g�������?r6)r$rr*ry�
call_laterrDr.r;)rrpr%r'r2r�rrr�test_wait_for_race_condition�sz&TaskTests.test_wait_for_race_conditioncs�fdd�}�j|��tjtjdd��d���tjtjdd��d���tj����fdd��}�jtj|�d���}�j|d��jd�j���jtj|�d���}�jd�j���j|d�dS)	Nc3s7dV}�jd|�dV}�jd|�dVdS)Ng�������?rg333333�?)r�)r�)rrrrp�s
z TaskTests.test_wait.<locals>.geng�������?r%g333333�?c3sYtj��gd��EdH\}}�j|t��g���j|t��dS)Nr%r�)r�waitr;�set)r:�pending)r�r�r%rrrrU�s&z TaskTests.test_wait.<locals>.foor�)	r$rr8r~r+r.r;r�r�)rrprUr�r)r�r�r%rr�	test_wait�s$$$!!zTaskTests.test_waitcs��fdd�}�j|�}tjtjdd|�d|��tjtjdd|�d|��tj���fdd��}tj|�|jtj|�d|��}�j|d�dS)	Nc3s7dV}�jd|�dV}�jd|�dVdS)Ng{�G�z�?rg���Q��?)r�)r�)rrrrp�s
z1TaskTests.test_wait_with_global_loop.<locals>.geng{�G�z�?r%g���Q��?c3sStj��g�EdH\}}�j|t��g���j|t��dS)Nr�)rr�r;r�)r:r�)r�r�rrrrU�s z1TaskTests.test_wait_with_global_loop.<locals>.foor�)r$rr8r~r+r?r.r;)rrpr%rUr�r)r�r�rr�test_wait_with_global_loop�s$$!
z$TaskTests.test_wait_with_global_loopcCs�tjdd��}|d�}tjtj|||d�gd|j�d|j�}|jj|�\}}|j|�|jtdd�|D��ddh�dS)NcSs|S)Nr)�srrrrJ
sz6TaskTests.test_wait_duplicate_coroutines.<locals>.coror3�spamr%css|]}|j�VqdS)N)r<)�.0rGrrr�	<genexpr>sz;TaskTests.test_wait_duplicate_coroutines.<locals>.<genexpr>)	rr+r8r�r%r.r�r;r�)rrJ�cr2r:r�rrr�test_wait_duplicate_coroutiness'
z(TaskTests.test_wait_duplicate_coroutinescCs�|jt|jjtjt�d|j��tjdd|j�}tj|gddd|j�}|jt|jj|�|j�dS)Nr%g$@�return_whenrr)	rErFr%r.rr�r�r~r/)rZ
sleep_coroZ	wait_cororrr�test_wait_errorss!	zTaskTests.test_wait_errorscsY�fdd�}�j|�}tjtjdd|�d|�}tjtjdd|�d|�}tjtj||gdtjd|�d|�}|j|�\}}�j|h|��j|h|��j|j	���j
|j	���j|j���j
d|j��|jd�|jtj||gd|��dS)Nc3s7dV}�jd|�dV}�jd|�dVdS)Ng$@rg�������?)r�)r�)rrrrp*s
z0TaskTests.test_wait_first_completed.<locals>.geng$@r%g�������?r�r�)r$rr8r~r��FIRST_COMPLETEDr.r;r�r:r9�assertIsNoner<r�r��advance_time)rrpr%r�r�r2r:r�r)rr�test_wait_first_completed(s"$$		
z#TaskTests.test_wait_first_completedcCstjdd��}tjdd��}tj|�d|j�}tj|�d|j�}tjtj||gdtjd|j�d|j�}|jj|�\}}|j||h|�|j|j	��|j
|j��|j|j	��|j
|j��dS)Ncss	dVdS)Nrrrrr�coro1Jsz.TaskTests.test_wait_really_done.<locals>.coro1cssdVdVdS)Nrrrrr�coro2Nsz.TaskTests.test_wait_really_done.<locals>.coro2r%r�)rr+r8r%r�r�r.r;r9r:r�r<)rr�r�r�r�r2r:r�rrr�test_wait_really_doneFszTaskTests.test_wait_really_donec	s)�fdd�}�j|�}tjtjdd|�d|�}tjdd��}tj|�d|�}tjtj||gdtjd|�d|�}|j|�\}}�j|h|��j|h|��j	d|j
��|jd	�|jtj||gd|��dS)
Nc3s dV}�jd|�dVdS)Ng$@r)r�)r�)rrrrpcsz0TaskTests.test_wait_first_exception.<locals>.geng$@r%cSstd��dS)N�err)�ZeroDivisionErrorrrrr�excmsz0TaskTests.test_wait_first_exception.<locals>.excr�rr�)r$rr8r~r+r��FIRST_EXCEPTIONr.r;r�r�r�)	rrpr%r�r�r�r2r:r�r)rr�test_wait_first_exceptionas$		
z#TaskTests.test_wait_first_exceptioncs �fdd�}�j|��tjtjdd��d��}tj�fdd��}tj|�d��}tj||gdtjd��}�j|�\}}�j|h|��j|h|��j	d�j
���jd	��jtj||gd���dS)
Nc3s7dV}�jd|�dV}�jd|�dVdS)Ng$@rg{�G�z�?)r�)r�)rrrrp�s
z8TaskTests.test_wait_first_exception_in_wait.<locals>.geng$@r%c3s(tjdd��EdHtd��dS)Ng{�G�z�?r%r�)rr~r�r)r%rrr��sz8TaskTests.test_wait_first_exception_in_wait.<locals>.excr�g{�G�z�?r�)r$rr8r~r+r�r�r.r;r�r�r�)rrpr�r�r�r2r:r�r)r%rr�!test_wait_first_exception_in_wait�s$	
z+TaskTests.test_wait_first_exception_in_waitcs
�fdd�}�j|��tjtjdd��d���tj�fdd��}tj|�d���tj����fdd��}�jtj|�d����jd	�j���jtj|�d����jd	�j��dS)
Nc3s7dV}�jd|�dV}�jd|�dVdS)Ng�������?rg333333�?)r�)r�)rrrrp�s
z/TaskTests.test_wait_with_exception.<locals>.geng�������?r%c3s(tjdd��EdHtd��dS)Ng333333�?r%Zreally)rr~r�r)r%rr�sleeper�sz3TaskTests.test_wait_with_exception.<locals>.sleeperc3s�tj��gd��EdH\}}�jt|�d��j|t��tdd�|D��}�jt|�d�dS)Nr%r�css'|]}|j�dk	r|VqdS)N)r�)r�rGrrrr��szBTaskTests.test_wait_with_exception.<locals>.foo.<locals>.<genexpr>r)rr�r;�lenr�)r:r��errors)r�r�r%rrrrU�s
&z/TaskTests.test_wait_with_exception.<locals>.foog333333�?)r$rr8r~r+r.r�r�)rrpr�rUr)r�r�r%rr�test_wait_with_exception�s$$z"TaskTests.test_wait_with_exceptioncs��fdd�}�j|��tjtjdd��d���tjtjdd��d���tj����fdd��}�jtj|�d����jd�j���jd	��jtj	��gd���dS)
Nc3sNdV}�jd|�dV}�jd|�dV}�jd|�dVdS)Ng�������?rg333333�?g)\��(�?)r�)r�)rrrrp�sz-TaskTests.test_wait_with_timeout.<locals>.geng�������?r%g333333�?c3sbtj��gddd��EdH\}}�j|t�g���j|t�g��dS)Nr�g)\��(�?r%)rr�r;r�)r:r�)r�r�r%rrrrU�sz-TaskTests.test_wait_with_timeout.<locals>.foog)\��(�?r�)
r$rr8r~r+r.r�r�r�r�)rrprUr)r�r�r%rr�test_wait_with_timeout�s	$$$
z TaskTests.test_wait_with_timeoutcs�fdd�}�j|�}tjtjdd|�d|�}tjtjdd|�d|�}|jtj||gddd|��\}}�j|t|g���j|t|g���jd|j	��|j
d�|jtj||gd|��dS)Nc3sNdV}�jd|�dV}�jd|�dV}�jd|�dVdS)Ng�������?rg333333�?)r�)r�)rrrrp�sz4TaskTests.test_wait_concurrent_complete.<locals>.geng�������?r%g333333�?r�r�)r$rr8r~r.r�r;r�r�r�r�)rrpr%r�r�r:r�r)rr�test_wait_concurrent_complete�s	$$*
z'TaskTests.test_wait_concurrent_completecsedd�}|j|��d�_t��d�tj���fdd��}|dd��|dd	��|d
d��tj����fdd
��}�jtj|�d���}|jd
�j��|j	d|dd�k�|j	d	|dd�k�|j
|dd��jtj|�d���}|jd
�j��dS)NcssdVdVdVdVdS)Nrg{�G�z�?rrrrrrp�sz(TaskTests.test_as_completed.<locals>.geng�?Fc3s[tj|d��EdH�j|��rWd�krWd�krWd��jd�|S)Nr%r�r�Tg�Q���?)rr~�addr�)�dtr)�	completedr%�time_shiftedrrr�	s

z,TaskTests.test_as_completed.<locals>.sleeperg{�G�z�?r�r�g333333�?r�c3sEg}x8tj���gd��D]}|j|EdH�q%W|S)Nr%)r�as_completedr�)�valuesrG)r�r�r�r%rrrUs%z(TaskTests.test_as_completed.<locals>.foor%r�)r$Zslow_callback_durationr�rr+r.r8r�r�r9r;)rrpr�rUr�r)r�r�r�r�r%r�r�test_as_completed�s"		!
$!!zTaskTests.test_as_completedcs6dd�}|j|��tjddd���tjddd���tj���fdd	��}�jtj|�d���}|jt|�d
|�|j|dd�|j|ddd
�|j|ddtj	�|j
d
�j���jd��jtj
��gd���dS)NcssdVdVdVdVdS)Nrg�������?rrrrrrp*sz5TaskTests.test_as_completed_with_timeout.<locals>.geng�������?r�r%g333333�?r�c3s�g}x�tj��gddd��D]y}|rA�jd�y"|EdH}|jd|f�Wq(tjk
r�}z|jd|f�WYdd}~Xq(Xq(W|S)Nr�g���Q��?r%g{�G�z�?rr�)rr�r�r�r�)r�rG�vr�)r�r�r%rrrU5s(
*z5TaskTests.test_as_completed_with_timeout.<locals>.foor�rrg���Q��?r�)rr�)r$rr~r+r.r8r;r��assertIsInstancer�r�r�r�r�)rrprUr�r)r�r�r%r�test_as_completed_with_timeout(s!
!
z(TaskTests.test_as_completed_with_timeoutcswdd�}�j|��tjddd���tj���fdd��}�jtj|�d���dS)NcssdVdVdVdS)Nrg{�G�z�?rrrrrrpOsz<TaskTests.test_as_completed_with_unused_timeout.<locals>.geng{�G�z�?r�r%c3sHxAtj�gddd��D]!}|EdH}�j|d�qWdS)Nr�rr%r�)rr�r;)rGr�)r�r%rrrrUXs%z<TaskTests.test_as_completed_with_unused_timeout.<locals>.foo)r$rr~r+r.r8)rrprUr)r�r%rr�%test_as_completed_with_unused_timeoutMs
!z/TaskTests.test_as_completed_with_unused_timeoutc	Csdd�}|j|�}tjddd|�}tjddd|�}||h}ttj|d|��}|jt|�d�|j|d	�}|j|d�|jd|j	��|j
d�|j|d
�}|j|d�|jd|j	��dS)NcssdVdVdVdS)Nrg�������?rrrrrrpbsz5TaskTests.test_as_completed_reverse_wait.<locals>.geng�������?r�r%g�������?r�r�rr)r$rr~�listr�r;r�r.r�r�r�)	rrpr%r�r��fs�futsrr�rrr�test_as_completed_reverse_wait`s
z(TaskTests.test_as_completed_reverse_waitc
s��fdd�}�j|�}tjddd|�}tjddd|�}||h}ttj|d|��}�jt|�d�tj|d|�}|j|�\}}	�jt	dd	�|D��ddh�dS)
Nc3s7dV}�jd|�dV}�jd|�dVdS)Ng�������?r)r�)r�)rrrrpys
z3TaskTests.test_as_completed_concurrent.<locals>.geng�������?r�r%r�r�css|]}|j�VqdS)N)r<)r�rGrrrr��sz9TaskTests.test_as_completed_concurrent.<locals>.<genexpr>)
r$rr~r�r�r;r�r�r.r�)
rrpr%r�r�r�r��waiterr:r�r)rr�test_as_completed_concurrentwsz&TaskTests.test_as_completed_concurrentcs�tjdd���tj��fdd��}tj|�d�j�}�jj|�|j�}�jt|�ddh��jt|�d�dS)	NcSs|S)Nr)r�rrrrJ�sz>TaskTests.test_as_completed_duplicate_coroutines.<locals>.coroc3sZg}�d�}xAtj||�d�gd�j�D]}|j|EdH�q:W|S)N�hamr�r%)rr�r%r�)r<r�rG)rJrrrrb�sz@TaskTests.test_as_completed_duplicate_coroutines.<locals>.runnerr%r�r�r�)	rr+r8r%r.r<r;r�r�)rrbr'r<r)rJrr�&test_as_completed_duplicate_coroutines�s	z0TaskTests.test_as_completed_duplicate_coroutinescs��fdd�}�j|��tj�fdd��}tj|dd�d��}�j|��j|j���j|j�d��j	d�j
��dS)Nc3s7dV}�jd|�dV}�jd|�dVdS)Ng�������?g�������?)r�)r�)rrrrp�s
z!TaskTests.test_sleep.<locals>.genc3sAtj|dd��EdHtj|d|d��EdH}|S)Nr�r%)rr~)r��argr�)r%rrr��s!z%TaskTests.test_sleep.<locals>.sleeperg�������?�yeahr%)r$rr+r8r.r9r:r;r<r�r�)rrpr�r@r)r%rr�
test_sleep�s
zTaskTests.test_sleepcs��fdd�}�j|�}tjtjddd|�d|�}d�|j���fdd�}||_tj|��j�j�|j	�tj|��j
�j�dS)Nc3s dV}�jd|�dVdS)Ng$@r)r�)r�)rrrrp�sz(TaskTests.test_sleep_cancel.<locals>.geng$@r�r%cs�|||���S)Nr)Zdelay�callbackr)�handle�orig_call_laterrrr��sz/TaskTests.test_sleep_cancel.<locals>.call_later)r$rr8r~r�rrzr�Z
_cancelledrlr9)rrpr%r@r�r)r�r�rr�test_sleep_cancel�s			


zTaskTests.test_sleep_cancelcs��fdd�}�j|��tj�fdd���tj��fdd��}|�}�j�j|�d��jd�j��dS)	Nc3s7dV}�jd|�dV}�jd|�dVdS)Ng�������?ri�)r�)r�)rrrrp�s
z5TaskTests.test_task_cancel_sleeping_task.<locals>.genc3stj|d��EdHdS)Nr%)rr~)r�)r%rrr~�sz7TaskTests.test_task_cancel_sleeping_task.<locals>.sleepc3s_tj�d�d��}�jd|j�y
|EdHWntjk
rVdSYnXdSdS)Ni�r%g�������?r�zslept in)rr8r�rlrm)r�)r%r~rr�doit�s
	z6TaskTests.test_task_cancel_sleeping_task.<locals>.doitr�g�������?)r$rr+r;r.r�r�)rrpr�Zdoerr)r%rr~r�test_task_cancel_sleeping_task�s	z(TaskTests.test_task_cancel_sleeping_taskcs�tjd|j��tj�fdd��}tj|�d|j�}tj|j�|j|j��|j	�tj|j�|j
tj|jj|�|j
|j�|j�j��dS)Nr%c3s
�EdHdS)Nrr)r'rrrJ�sz6TaskTests.test_task_cancel_waiter_future.<locals>.coro)rr*r%r+r8rrzr=r�rlrErmr.r�r9r�)rrJr2r)r'r�test_task_cancel_waiter_future�s
z(TaskTests.test_task_cancel_waiter_futurecCsdtjdd��}|�}tj|d|j�}|jd�|jt|j�|j�dS)NcSsdS)NrCrrrrrr7sz6TaskTests.test_step_in_completed_task.<locals>.notmuchr%r6)	rr+r8r%rDrE�AssertionError�_stepr/)rr7rpr2rrr�test_step_in_completed_tasks	
z%TaskTests.test_step_in_completed_taskcCs5tjdd��}|jt|jj|��dS)NcssdVdVdS)NrrCrrrrrr7sz+TaskTests.test_step_result.<locals>.notmuch)rr+rEr-r%r.)rr7rrr�test_step_resultszTaskTests.test_step_resultcs�Gdd�dtj�}|d|j��d�tj��fdd��}tj|�d|j�}tj|j�|j�j�t	�}�j
|�tj|j�|j|��|j|j��|j
|j��dS)Ncs4eZdZ�fdd�Z�fdd�Z�S)z.TaskTests.test_step_result_future.<locals>.Futcs d|_t�j||�dS)NF)�cb_addedr"rK)rr�kwds)r&rrrKs	z7TaskTests.test_step_result_future.<locals>.Fut.__init__csd|_t�j|�dS)NT)r�r"ri)r�fn)r&rrri"s	z@TaskTests.test_step_result_future.<locals>.Fut.add_done_callback)rrr rKrirr)r&r�Futsr�r%c3s�EdH�dS)Nrr)r'r<rr�wait_for_future)sz:TaskTests.test_step_result_future.<locals>.wait_for_future)rr*r%r+r8rrzr9r��objectrDr=r:r�r<)rr�r�r@r�r)r'r<r�test_step_result_futures		
z!TaskTests.test_step_result_futurecCsptjdd��}tj|�d|j�}|jt|j�|j|j��|j	|j
�t�dS)NcSs
t��dS)N)�
BaseExceptionrrrr�notmutch:sz8TaskTests.test_step_with_baseexception.<locals>.notmutchr%)rr+r8r%rErr�r9r:r�r�)rrr2rrr�test_step_with_baseexception9s
z&TaskTests.test_step_with_baseexceptioncs��fdd�}�j|��tj�fdd���t��tj��fdd��}tj|�d��}tj��|j��j|j	���j
ttj���j|j	���j|j���j
|j���dS)Nc3s dV}�jd|�dVdS)Ng$@r)r�)r�)rrrrpFsz7TaskTests.test_baseexception_during_cancel.<locals>.genc3stjdd��EdHdS)Nr�r%)rr~r)r%rrr�Msz;TaskTests.test_baseexception_during_cancel.<locals>.sleeperc3s2y��EdHWntjk
r-��YnXdS)N)rrmr)�base_excr�rrrSsz<TaskTests.test_baseexception_during_cancel.<locals>.notmutchr%)r$rr+rr8rrzrlr�r:rEr9r�r=r�)rrprr2r)rr%rr�r� test_baseexception_during_cancelDs	

z*TaskTests.test_baseexception_during_cancelcCs�dd�}|jtj|��dd�}|jtj|��tjdd��}|jtj|��|jtjtj���dS)NcSsdS)Nrrrrrr�gsz.TaskTests.test_iscoroutinefunction.<locals>.fncss	dVdS)Nrrrrr�fn1lsz/TaskTests.test_iscoroutinefunction.<locals>.fn1css	dVdS)Nrrrrr�fn2psz/TaskTests.test_iscoroutinefunction.<locals>.fn2)r�r�iscoroutinefunctionr+r9r�Mock)rr�rrrrr�test_iscoroutinefunctionfsz"TaskTests.test_iscoroutinefunctionc	swtjd|j��tj�fdd��}|�}|jt��|jj|�WdQRX|j�j��dS)Nr%c3s	�VdS)Nrr)r'rrr�zsz;TaskTests.test_yield_vs_yield_from.<locals>.wait_for_future)	rr*r%r+rEr-r.r�r:)rr�r2r)r'r�test_yield_vs_yield_fromws	z"TaskTests.test_yield_vs_yield_fromcsVtjdd���tj�fdd��}|�}|jt|jj|�dS)Ncss	dVdS)NrrrrrrJ�sz:TaskTests.test_yield_vs_yield_from_generator.<locals>.coroc
3s$��}z	|VWd|j�XdS)N)r/)rp)rJrrr��s		zETaskTests.test_yield_vs_yield_from_generator.<locals>.wait_for_future)rr+rEr-r%r.)rr�r2r)rJr�"test_yield_vs_yield_from_generator�s	z,TaskTests.test_yield_vs_yield_from_generatorcCsptjdd��}|jtj|��|�}|jtj|��|jj|�}|j|d�dS)NcSsdS)Nr3rrrrrr��sz7TaskTests.test_coroutine_non_gen_function.<locals>.funcr3)rr+r9r�iscoroutiner%r.r;)rr�rJr�rrr�test_coroutine_non_gen_function�s	z)TaskTests.test_coroutine_non_gen_functioncs�tjd|j��tj�fdd��}tj�fdd��}tj|�d|j�}tj|�d|j�}|jj|�}|j|d�|j|j��dS)Nr%cs�S)Nrr)r'rrr��szETaskTests.test_coroutine_non_gen_function_return_future.<locals>.funccs�jd�dS)Nr3)rDr)r'rrrJ�szETaskTests.test_coroutine_non_gen_function_return_future.<locals>.coror3)	rr*r%r+r8r.r;r�r<)rr�rJ�t1�t2r�r)r'r�-test_coroutine_non_gen_function_return_future�sz7TaskTests.test_coroutine_non_gen_function_return_futurecs��jtjjd�j��tj��fdd��}tj|�j�d�j���jj���jtjjd�j��dS)Nr%cs&�jtjjd|��k�dS)Nr%)r9rr8�current_task)r%)rr2rrrJ�sz)TaskTests.test_current_task.<locals>.coro)r�rr8rr%r+r.)rrJr)rr2r�test_current_task�s
!zTaskTests.test_current_taskcs�jtjjd�j��tjd�j��tjd�j��tj����fdd��}tj����fdd��}tj|�j�d�j��tj|�j�d�j���jjtj��fd�j���jtjjd�j��dS)Nr%c3s^�jtjjd|��k��EdH�jtjjd|��k��jd�dS)Nr%T)r9rr8rrD)r%)r�r�r�task1rrr��s"	"zBTaskTests.test_current_task_with_interleaving_tasks.<locals>.coro1c3s^�jtjjd|��k��jd��EdH�jtjjd|��k�dS)Nr%T)r9rr8rrD)r%)r�r�r�task2rrr��s"
	zBTaskTests.test_current_task_with_interleaving_tasks.<locals>.coro2)	r�rr8rr%r*r+r.r�)rr�r�r)r�r�rrrr�)test_current_task_with_interleaving_tasks�s$$!!
z3TaskTests.test_current_task_with_interleaving_taskscs�d�tjd�j��tj���fdd���tj��fdd��}tj|�d�j�}tj�j�|j��jj|��j	�d��j
�j��dS)Nrr%c3sCy
�EdHWn"tjk
r1�d7��YnX�jd�dS)Nrzgot past sleep() in inner())rrm�failr)�proofrr�rr�inner�s

z8TaskTests.test_yield_future_passes_cancel.<locals>.innerc3s@y��EdHWntjk
r1�d7�YnX�d7�dS)Nr�r�)rrmr)rrrrr��s
z8TaskTests.test_yield_future_passes_cancel.<locals>.outer�e)rr*r%r+r4rrzrlr.r;r9r�)rr�rGr)rrrr�r�test_yield_future_passes_cancel�s!

z)TaskTests.test_yield_future_passes_cancelcs�d�tjd�j��tj��fdd���tj���fdd��}tj|�d�j�}tj�j�|j��jtj	�jj
|��jd�tj�j��j�d�dS)Nrr%c3s�EdH�d7�dS)Nrrr)rr�rrrs	z?TaskTests.test_yield_wait_does_not_shield_cancel.<locals>.innerc3s7tj��gd�j�EdH\}}�d7�dS)Nr%r�)rr�r%)�d�p)rrrrrr�
s)z?TaskTests.test_yield_wait_does_not_shield_cancel.<locals>.outerr)
rr*r%r+r4rrzrlrErmr.rDr;)rr�rGr)rrrr�r�&test_yield_wait_does_not_shield_cancel�s!

z0TaskTests.test_yield_wait_does_not_shield_cancelcCsWtjd|j�}tj|�}|jd�|jj|�}|j|d�dS)Nr%r�)rr*r%�shieldrDr.r;)rrr�r�rrr�test_shield_results

zTaskTests.test_shield_resultcCswtjd|j�}tj|�}tj|j�td�}|j|�tj|j�|j|j	�|�dS)Nr%r�)
rr*r%rrrzr-�
set_exceptionr=r�)rrr�r�rrr�test_shield_exception s
zTaskTests.test_shield_exceptioncCsetjd|j�}tj|�}tj|j�|j�tj|j�|j|j��dS)Nr%)	rr*r%rrrzrlr9r�)rrr�rrr�test_shield_cancel)s
zTaskTests.test_shield_cancelcCsQtjd|j�}|jd�|jjtj|��}|j|d�dS)Nr%r�)rr*r%rDr.rr;)rr'r�rrr�test_shield_shortcut1s
zTaskTests.test_shield_shortcutc
s�d�tjd�j��tj��fdd���tj���fdd��}tj|�d�j�}tj�j�|j��jtj	���jj
|�WdQRX�jd�tj�j��j�d�dS)Nrr%c3s�EdH�d7�dS)Nrrr)rr�rrr<s	z+TaskTests.test_shield_effect.<locals>.innerc3s,tj��d�j�EdH�d7�dS)Nr%r�)rrr%r)rrrrrr�Bsz+TaskTests.test_shield_effect.<locals>.outerr)
rr*r%r+r4rrzrlrErmr.rDr;)rr�rGr)rrrr�r�test_shield_effect7s!

zTaskTests.test_shield_effectcCs�tjd|j�}tjd|j�}tj||d|j�}tj|d|j�}tj|j�|j�tj|j�|j|j	��|j
d�|j
d�tj|j�|j|j�ddg�dS)Nr%rr�)
rr*r%�gatherrrrzrlr9r�rDr;r<)r�child1�child2�parentr�rrr�test_shield_gatherQs


zTaskTests.test_shield_gathercCstjd|j�}tjd|j�}tj|d|j�}tj|d|j�}tj||d|j�}tj|j�|j�tj|j�|j|j	�tj
�|j|j��|j|j��|j
d�|j
d�tj|j�dS)Nr%rr�)rr*r%rr%rrzrlr�r�rmr9r�rD)rr&r'r�r�r(rrr�test_gather_shield_s


zTaskTests.test_gather_shieldcCs�tjd|j�}|jt|jjtj|d|j��t�}|jt|jjtj|d|j��|j�dS)Nr%)	rr*r%rErOr.r�r
r/)rr'rJrrr�test_as_completed_invalid_argsps	z(TaskTests.test_as_completed_invalid_argscCs�tjd|j�}|jt|jjtj|d|j��t�}|jt|jjtj|d|j��|j�|jt	|jjtjgd|j��dS)Nr%)
rr*r%rErOr.r�r
r/rF)rr'rJrrr�test_wait_invalid_args{s	
z TaskTests.test_wait_invalid_argscsL�fdd�}td��|�WdQRXtd��|�WdQRXdS)Ncs�tj���fdd��}tjd�j���jd�|���jtj����j�jt	j
��j�j��j�j
t	j��jj���j�j�dS)Nc3s�j�j��EdHdS)N)r9�
gi_runningr)r'rprrrrJ�szGTaskTests.test_corowrapper_mocks_generator.<locals>.check.<locals>.coror%)rr+r*r%rDr9rr��gi_frame�types�	FrameTyper�r-rt�CodeTyper.r�)rJ)r)r'rpr�check�s!
	z9TaskTests.test_corowrapper_mocks_generator.<locals>.checkFT)r)rr2r)rr� test_corowrapper_mocks_generator�s


z*TaskTests.test_corowrapper_mocks_generatorcs�td���tj�fdd��}tj��fdd���tjdd���tj|�d�j�}�jj|�}�j|d�WdQRXdS)
NTc3s��EdHS)Nrr)rrrr�sz1TaskTests.test_yield_from_corowrapper.<locals>.t1c3s:tjd�j�}tj�|�d�j�|EdHS)Nr%)rr*r%r8)rG)r�t3rrr�sz1TaskTests.test_yield_from_corowrapper.<locals>.t2cSs|jd�dS)Nrr�r)rr�r)rD)rGrrrr4�sz1TaskTests.test_yield_from_corowrapper.<locals>.t3r%rr�r)rr�r)rrr+r8r%r.r;)rrr2�valr)rrr4r�test_yield_from_corowrapper�s
z%TaskTests.test_yield_from_corowrappercsNdd���fdd�}|j|d�d	�|j|d�d�dS)
NcssdV}|S)Nr)r�rrrrU�sz7TaskTests.test_yield_from_corowrapper_send.<locals>.foocsvtjj���}|jd�y|j|�Wn0tk
re}z|jdSWYdd}~Xn
Xtd��dS)NrzStopIteration was expected)rr�CoroWrapper�send�
StopIterationrr�)r��cwZex)rUrr�call�s
z8TaskTests.test_yield_from_corowrapper_send.<locals>.callrr�r�)rr�)rr�)r;)rr;r)rUr� test_yield_from_corowrapper_send�s
z*TaskTests.test_yield_from_corowrapper_sendcCsDtj�}dd�}tjj|��}||d<d|_dS)Ncss
gEdHdS)NrrrrrrU�sz/TaskTests.test_corowrapper_weakref.<locals>.foor:)�weakref�WeakValueDictionaryrrr7rp)rZwdrUr:rrr�test_corowrapper_weakref�s

z"TaskTests.test_corowrapper_weakrefcCsFdd�}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)NcssJd}x=y|V}Wq	tk
rA}z|}WYdd}~Xq	Xq	WdS)N)�	Exception)�value�errrrU�sz-TaskTests.test_corowrapper_throw.<locals>.foorU)rU)rU)
r@rrr7r8r=�throwr�r;r)rrUr�r:rrr�test_corowrapper_throw�s$



z TaskTests.test_corowrapper_throwzneed python 3.4 or latercCs=tjdd��}tj�}|jjd�|jj|�||j�}tj|d|j�}|jtj	j
d|j�|h�|jj�|jt|jj
�d�|jjd=d}|j}d}tj�|jtj	j
d|j�t��|j|jddd	tjd
|i�|j�dS)Ncss+tjd|�}|EdHtd��dS)Nr%zcode never reached)rr*r@)r%�futurerrr�kill_mes	z:TaskTests.test_log_destroyed_pending_task.<locals>.kill_meTr%rrE�messagez%Task was destroyed but it is pending!r2r)rr+rrr%rf�set_exception_handlerr4r;r8�	all_tasksZ	_run_oncer��_readyr.�f_localsrjr�
gc_collectr�Zassert_called_with�ANYZ
reset_mock)rrFZmock_handlerrJr2rrrr�test_log_destroyed_pending_task�s(%

	
%	
z)TaskTests.test_log_destroyed_pending_taskzasyncio.base_events.loggercsstj��|j��tjdd���tj��fdd��}�j|��|j|jj�dS)NcSs
t�dS)N)rOrrrrrJ,sz>TaskTests.test_tb_logger_not_called_after_cancel.<locals>.coroc3s>�j���}tjdd��EdH|j�d}dS)Ng�������?r%)r�rr~rl)r2)rJr%rrrb0s
z@TaskTests.test_tb_logger_not_called_after_cancel.<locals>.runner)rr)r?r+r.r��error�called)r�m_logrbr)rJr%r�&test_tb_logger_not_called_after_cancel's
z0TaskTests.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)Nrrrrr�	coro_noop=sz9TaskTests.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\):\n.*\n  File "%s", line %s, in test_coroutine_never_yielded\n    coro_noop\(\)$)rrr+�__file__�sys�	_getframe�f_linenorrLr9rOrP�	call_argsrrhr{r|r r_�compile�DOTALL)	rrQrSZtb_filename�	tb_linenorGZ
func_filenameZfunc_linenoZregexrrr�test_coroutine_never_yielded:s

z&TaskTests.test_coroutine_never_yieldedcsL�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)Nrrrrrr�
inner_coro^szeTaskTests.test_return_coroutine_from_coroutine.<locals>.check.<locals>.outer_coro.<locals>.inner_coro)rr+)r]rrr�
outer_coro\szQTaskTests.test_return_coroutine_from_coroutine.<locals>.check.<locals>.outer_coror)rr+r%r.r;)r^r<)rrrr2[sz=TaskTests.test_return_coroutine_from_coroutine.<locals>.checkFNT)r)rr2r)rr�$test_return_coroutine_from_coroutineWs



z.TaskTests.test_return_coroutine_from_coroutinecCs�|jjd�tjt�d|j�}tj�jd}|j|j	t
�|j|j	ddd�t|df�|jj
|�dS)NTr%rr�test_task_source_tracebackr)r%rfrr8r
rUrVrWr�rjr�r;rTr.)rr2rorrrr`os
z$TaskTests.test_task_source_tracebackcs�tj��|j�j�tj�fdd��}�j|��}�jtj||d���}�j|j�|j	tj
�j|�|j|j
��dS)Nc3stjd��}|EdHdS)Nr%)rr*)r')r%rr�blocking_coroutinesz;TaskTests._test_cancel_wait_for.<locals>.blocking_coroutiner%)rr)r�r/r+r�ryr�rlrErmr.r9r�)rr�rar2r�r)r%r�_test_cancel_wait_for{s!
zTaskTests._test_cancel_wait_forcCs|jd�dS)N)rb)rrrr�test_cancel_blocking_wait_for�sz'TaskTests.test_cancel_blocking_wait_forcCs|jd�dS)NgN@)rb)rrrr�test_cancel_wait_for�szTaskTests.test_cancel_wait_forcs�tj�}|j|j�tjd|���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 doner%c3s	�EdHS)Nrr)r'rr�
child_coro�sz0TaskTests.test_cancel_gather.<locals>.child_coroNcs�j��dS)N)rl)�_)�
cancel_result�gather_taskrr�cancelling_callback�sz9TaskTests.test_cancel_gather.<locals>.cancelling_callbackr�F)rr)r�r/r*r%r4rirDr.r;r�r�r<)rr%reZ
gather_futurerir)rgr'rhr�test_cancel_gather�s


zTaskTests.test_cancel_gather)`rrr r#r1r5rArBrHrI�unittestZ
skipUnlessrgrNrPrSrcrrrxr}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�r�r�r�rrr	r
rr
rrrrrrr!r"r#r$r)r*r+r,r3r6r<r?rD�PY34rNrZpatchrRr\r_r`rbrcrdrjrr)r&rr!Ks�;D)!
 "-%
"

!	'	)r!csveZdZ�fdd�Zdd�Zdd�Zdd�Zd	d
�Zdd�Zd
d�Z	dd�Z
�S)�GatherTestsBasecsEt�j�|j�|_|j�|_|j|jdd�dS)N�cleanupF)r"r#r$�one_loopr0r?)r)r&rrr#�s
zGatherTestsBase.setUpcCs!x|jrtj|�qWdS)N)rJrrz)rr%rrr�	_run_loop�szGatherTestsBase._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)Ncs%g|]}tjd�j��qS)r%)rr*ro)r��i)rrr�
<listcomp>�s	z2GatherTestsBase._check_success.<locals>.<listcomp>rrr�F)�rangerr%�wrap_futuresr�MockCallbackrirDrpror;rPr�r:�assert_called_once_withr<)r�kwargsr�r�r�r'�cbr)rr�_check_success�s(!




zGatherTestsBase._check_successcCs|j�|jdd�dS)N�return_exceptionsF)ry)rrrr�test_success�s
zGatherTestsBase.test_successcCs|jdd�dS)NrzT)ry)rrrr�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)Ncs%g|]}tjd�j��qS)r%)rr*ro)r�rq)rrrrr�s	z6GatherTestsBase.test_one_exception.<locals>.<listcomp>r
rr)rsrr%rtrrurir�rDr rpror9r:rvr=r�rlr-)	rr�r�r�rrBr'rxr�r)rr�test_one_exception�s.$
	




z"GatherTestsBase.test_one_exceptionc	s*�fdd�td�D�\}}}}tj�j||||�dd�}tj�}|j|�t�}t�}|j	d�|j
|�|j	d��j�j��j
|j��|j
|��j�j��j|j��|j|��j|j�dd||g�dS)Ncs%g|]}tjd�j��qS)r%)rr*ro)r�rq)rrrrr�s	z:GatherTestsBase.test_return_exceptions.<locals>.<listcomp>r	rzTrr)rsrr%rtrrurir�r-rDr rpror�r:r9rvr;r<)	rr�r�r�rr'rxr�Zexc2r)rr�test_return_exceptions�s"+	
		




z&GatherTestsBase.test_return_exceptionscCstjjtjjtj��}djd�}tdd|d|�\}}}|j|j�d�td|dd	d|�\}}}|j|j�d�td|dd
d|�\}}}|j|j�d�tdd|dd
d|�\}}}|j|j�d�dS)
N�
�import asyncio.coroutines� print(asyncio.coroutines._DEBUG)z-Ez-c�
PYTHONPATHsFalseZPYTHONASYNCIODEBUG��1sTrue)r�r�)	�os�path�dirnamerrT�joinrr;�rstrip)rZaio_pathrw�sts�stdout�stderrrrr�test_env_var_debug�s&!	z"GatherTestsBase.test_env_var_debug)rrr r#rpryr{r|r}r~r�rr)r&rrm�srmc@sdeZdZdd�Zdd�Zdd�Zdd�Zd	d
�Zdd�Zd
d�Z	dS)�FutureGatherTestscGs|S)Nr)r�futuresrrrrtszFutureGatherTests.wrap_futurescCs�tj|j�|jtjd�tj|�}|j|tj�|j|j|j�|j	|j�|j
|j��|j|j
�g�tj|d|j�}|j|j|j�dS)Nr%)rr?ror�r%r�r*r=r>rpr9r:r;r<r0)rZseq_or_iterr'rrr�_check_empty_sequencesz'FutureGatherTests._check_empty_sequencecCsA|jg�|jf�|jt��|jtd��dS)Nr�)r�r��iter)rrrr�test_constructor_empty_sequence*s

z1FutureGatherTests.test_constructor_empty_sequencecCs�tjd|j�}tjd|j�}|jt��tj||�WdQRX|jt��tj|d|j�WdQRXdS)Nr%)rr*ror0rErFr%)rr�r�rrr�%test_constructor_heterogenous_futures0sz7FutureGatherTests.test_constructor_heterogenous_futurescs��fdd�td�D�}tj|�}�j|j�j��j�j��j|j��tj|d�j�}�j|j�j��j�j��j|j��dS)Ncs%g|]}tjd�j��qS)r%)rr*r0)r�rq)rrrrr9s	zIFutureGatherTests.test_constructor_homogenous_futures.<locals>.<listcomp>rr%)	rsrr%r=r>r0rpr�r:)rZchildrenr'r)rr�#test_constructor_homogenous_futures8sz5FutureGatherTests.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)Ncs%g|]}tjd�j��qS)r%)rr*ro)r�rq)rrrrrDs	z;FutureGatherTests.test_one_cancellation.<locals>.<listcomp>r
rr)rsrr%rrurirDrlrpror9r:rvr�r�r�r�rmr r-)rr�r�r�rrBr'rxr)rr�test_one_cancellationCs.





z'FutureGatherTests.test_one_cancellationc	sp�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)
Ncs%g|]}tjd�j��qS)r%)rr*ro)r�rq)rrrrrVs	zLFutureGatherTests.test_result_exception_one_cancellation.<locals>.<listcomp>�rzTrrr�r	)rsrr%rrurirDr�r rlrpror�r:r-r.r�rmr;rv)rr�r�r�rrBrGr'rxZzdeZrter�r)rr�&test_result_exception_one_cancellationUs*"$

	



	
"z8FutureGatherTests.test_result_exception_one_cancellationN)
rrr rtr�r�r�r�r�r�rrrrr�sr�cs^eZdZ�fdd�Zdd�Zdd�Zdd�Zd	d
�Zdd�Z�S)
�CoroutineGatherTestscs!t�j�tj|j�dS)N)r"r#rr?ro)r)r&rrr#os
zCoroutineGatherTests.setUpcGsCg}x6|D].}tj|dd��}|j|��q
W|S)Ncss	|EdHS)Nr)r'rrrrJvsz/CoroutineGatherTests.wrap_futures.<locals>.coro)rr+r�)rr�Zcorosr'rJrrrrtss
z!CoroutineGatherTests.wrap_futurescCs�tjdd��}|�}|�}tj||�}|j|j|j�|jj|�|j|jdd�|�}|�}tj||d|j�}|j|j|j�|jj|�dS)NcSsdS)NrdrrrrrrJ}szBCoroutineGatherTests.test_constructor_loop_selection.<locals>.corornFr%)	rr+r%r=r>ror.r?r0)rrJZgen1Zgen2r'Zgen3Zgen4r�rrr�test_constructor_loop_selection|s				z4CoroutineGatherTests.test_constructor_loop_selectioncCs~tjdd��}|d�}tj|||d�|d|j�}|j|j�|j|j�ddddg�dS)NcSs|S)Nr)r�rrrrJ�sz<CoroutineGatherTests.test_duplicate_coroutines.<locals>.corord�defr%)rr+r%rorpr;r<)rrJr�r'rrr�test_duplicate_coroutines�s
'z.CoroutineGatherTests.test_duplicate_coroutinesc
std�tjd�j��tj��fdd��}tj|�d�j��tj|�d�j��d�tj�����fdd��}tj|�d�j�}tj�j��j|j���j	tj
���jj|�WdQRX�j�j���j�j
���j�j
���j�j
��tj�j��j�d�dS)Nrr%c3s�EdH�d7�dS)Nrrr)rr�rrr�s	z?CoroutineGatherTests.test_cancellation_broadcast.<locals>.innerc3s2tj��d�j���EdH�d7�dS)Nr%r�)rr%ror)r&r'�gathererrrrrr��s	z?CoroutineGatherTests.test_cancellation_broadcast.<locals>.outer)rr*ror+r4rrzr9rlrErmr.r�r�r;)rrr�rGr)r&r'r�rrr�r�test_cancellation_broadcast�s$'z0CoroutineGatherTests.test_cancellation_broadcastcs�tjdd���tjd�j��tjd�j��tj����fdd��}tj|�d�j�}tj�j��jd�tj�j��jd�tj�j��j|j	�t
�dS)Ncss|EdHtd��dS)Nzshould not be ignored)r-)rGrrrr�s	z:CoroutineGatherTests.test_exception_marking.<locals>.innerr%c3s.tj������d�j�EdHdS)Nr%)rr%ror)r�r�rrrrr��sz:CoroutineGatherTests.test_exception_marking.<locals>.outer)rr+r*ror4rrzrDr�r�r-)rr�rGr)r�r�rrr�test_exception_marking�s$

z+CoroutineGatherTests.test_exception_marking)	rrr r#rtr�r�r�r�rr)r&rr�ms		"r�cs�eZdZdZ�fdd�Zejdddd��Zdddddd	�Zd
d�Z	dd
�Z
dd�Zdd�Zdd�Z
�S)�RunCoroutineThreadsafeTestsz/Test case for asyncio.run_coroutine_threadsafe.cs0t�j�tj�|_|j|j�dS)N)r"r#rr)r%r?)r)r&rrr#�s
z!RunCoroutineThreadsafeTests.setUpFccs\tjdd|j�EdH|r-td��|rTtjjj|j�j�dV||S)z"Wait 0.05 second and return a + b.g�������?r%NzFail!)rr~r%r-Ztasksr8rrl)rr�r�rrlrrrr��szRunCoroutineThreadsafeTests.addNc
Cs~|jddd|d|�}tj||j�}|rO|jj|jd�z|j|�SWd|j�px|j�XdS)z$Run add coroutine in the event loop.rr�rrlN)	r�rZrun_coroutine_threadsafer%Zcall_soon_threadsafer8r<r:rl)rrrlr��advance_cororJrErrr�target�sz"RunCoroutineThreadsafeTests.targetcCs>|jjd|j�}|jj|�}|j|d�dS)z9Test coroutine submission from a thread to an event loop.Nr)r%�run_in_executorr�r.r;)rrEr<rrr�test_run_coroutine_threadsafe�sz9RunCoroutineThreadsafeTests.test_run_coroutine_threadsafec
Cs^|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�rEr-r.�assertInr�r)rrE�exc_contextrrr�,test_run_coroutine_threadsafe_with_exception�szHRunCoroutineThreadsafeTests.test_run_coroutine_threadsafe_with_exceptionc
s��fdd�}�jjd|�}�jtj���jj|�WdQRXtj�j�x0tjj	�j�D]}�j
|j��qwWdS)zZTest coroutine submission from a thread to an event loop
        when a timeout is raised.cs�jdd�S)Nr�r)r�r)rrr�<lambda>	szXRunCoroutineThreadsafeTests.test_run_coroutine_threadsafe_with_timeout.<locals>.<lambda>N)r%r�rErr�r.rrzr8rIr9r:)rr�rEr2r)rr�*test_run_coroutine_threadsafe_with_timeout	szFRunCoroutineThreadsafeTests.test_run_coroutine_threadsafe_with_timeoutc	sU�fdd�}�jjd|�}�jtj���jj|�WdQRXdS)z[Test coroutine submission from a tread to an event loop
        when the task is cancelled.cs�jdd�S)NrlT)r�r)rrrr�	szZRunCoroutineThreadsafeTests.test_run_coroutine_threadsafe_task_cancelled.<locals>.<lambda>N)r%r�rErrmr.)rr�rEr)rr�,test_run_coroutine_threadsafe_task_cancelled	szHRunCoroutineThreadsafeTests.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)Nr�T)r�r)rrrr�	szbRunCoroutineThreadsafeTests.test_run_coroutine_threadsafe_task_factory_exception.<locals>.<lambda>cSstS)N)�
wrong_name)r%rJrrrr�	sr�rrr�)r%r�Zset_task_factoryrrurHrE�	NameErrorr.r�r�rr;r�Zcall_args_listrX)rrEr�r�r%�contextrwr)rr�4test_run_coroutine_threadsafe_task_factory_exception	s	zPRunCoroutineThreadsafeTests.test_run_coroutine_threadsafe_task_factory_exception)rrr �__doc__r#rr+r�r�r�r�r�r�r�rr)r&rr��s
	r�cs@eZdZ�fdd�Z�fdd�Zdd�Z�S)�
SleepTestscs-t�j�tj�|_tjd�dS)N)r"r#rr)r%r?)r)r&rrr#.	s
zSleepTests.setUpcs'|jj�d|_t�j�dS)N)r%r/r"�tearDown)r)r&rrr�3	s
	zSleepTests.tearDowncs`d��fdd��tj���fdd��}�jj|���j�d�dS)Nrcs�|7�dS)Nr)�num)r<rr�
inc_result;	sz.SleepTests.test_sleep_zero.<locals>.inc_resultc3sd�jj�d��j�d�tjdd�jdd�EdH}�j�d��|�dS)Nrrr%r<r�)r%r�r;rr~)r�)r�r<rrrrJ?	s
#z(SleepTests.test_sleep_zero.<locals>.coro�)rr+r%r.r;)rrJr)r�r<rr�test_sleep_zero8	s
!zSleepTests.test_sleep_zero)rrr r#r�r�rr)r&rr�-	sr��__main__))r��
contextlibr�rZr�r{rUr�r/rkr=rrrrr3r�ImportErrorrZtest.support.script_helperrZtest.script_helperZasyncio.test_support�version_inforlrgr+r
�contextmanagerrrrZTestCaser!rmr�r�r�r�r�mainrrrr�<module>s\




	�������qdTc]