Your IP : 216.73.216.213


Current Path : /opt/alt/python34/lib64/python3.4/test/test_asyncio/__pycache__/
Upload File :
Current File : //opt/alt/python34/lib64/python3.4/test/test_asyncio/__pycache__/test_tasks.cpython-34.pyo

�
f f�/�@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&Gd!d"�d"ej �Z'e(d#kr�e	j)�ndS)$zTests for tasks.py.�N)�mock)�
coroutines)�
test_utils)�support)�test_support)�assert_python_ok���cCsdS)N�rrr�A/opt/alt/python34/lib64/python3.4/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rc@seZdZdd�Zdd�Zdd�Zdd�Zd	d
�Zdd�Ze	j
ed
�dd��Z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��ZPe	j
eQd��d�d���ZReSjTd��d�d���ZUd�d��ZVd�d��ZWd�d��ZXd�d��ZYd�S)��	TaskTestscCs|j�|_dS)N)�
new_test_loop�loop)rrrr�setUpMszTaskTests.setUpcCsxtj�}tjd|�}tjdd��}z3|jtd��|jj||��WdQXWd|j�XdS)Nr#css
|DdHdS)Nr)�futrrr�runTsz-TaskTests.test_other_loop_future.<locals>.runzTask .* got Future .* attached)	r�new_event_loop�Future�	coroutineZassertRaisesRegex�RuntimeErrorr#�run_until_complete�close)r�
other_loopr%r&rrr�test_other_loop_futurePs	
 z TaskTests.test_other_loop_futurecCs�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�notmuch`sz*TaskTests.test_task_class.<locals>.notmuchr#r/)rr)�Taskr#r+�
assertTrue�done�assertEqual�result�assertIs�_loopr'�set_event_loopr,)rr0�tr#rrr�test_task_class_s

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)Nr/rrrrrr0qsz7TaskTests.test_ensure_future_coroutine.<locals>.notmuchr#r/)rr)�
ensure_futurer#r+r2r3r4r5r6r7r'r8r,)rr0r9r#rrr�test_ensure_future_coroutineps

z&TaskTests.test_ensure_future_coroutinecCs�tjd|j�}|jd�tj|�}|jj|�|j|j��|j|j	�d�|j
||�tj�}|j|�|j
t��tj|d|�}WdQX|j�tj|d|j�}|j
||�dS)Nr#�ko)rr(r#�
set_resultr;r+r2r3r4r5r6r'r8�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|�}WdQX|j�tj|d|j�}|j
||�dS)NcSsdS)Nr/rrrrrr0�sz2TaskTests.test_ensure_future_task.<locals>.notmuchr#r/)rr)r1r#r;r+r2r3r4r5r6r'r8r?r@r,)rr0Zt_origr9r#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)rrDrrr�__init__�sz;TaskTests.test_ensure_future_awaitable.<locals>.Aw.__init__css|jDdHS)N)rD)rrrr�	__await__�sz<TaskTests.test_ensure_future_awaitable.<locals>.Aw.__await__N)rrr rErFrrrr�Aw�srGcSsdS)Nr/rrrrrrD�sz4TaskTests.test_ensure_future_awaitable.<locals>.coror#)rr)r'r8r;r+)rrGrDr#r%rrr�test_ensure_future_awaitable�s

z&TaskTests.test_ensure_future_awaitablec	Cs'|jt��tjd�WdQXdS)Nr/)r?�	TypeErrorrr;)rrrr�test_ensure_future_neither�sz$TaskTests.test_ensure_future_neithercCsKtjd|j�}|jtd��|j|tj|��WdQXdS)Nr#z#function is deprecated, use ensure_)rr(r#ZassertWarnsRegex�DeprecationWarningr6Zasync)rrArrr�test_async_warning�s	
zTaskTests.test_async_warningcswd�tj�fdd���tj��fdd���tj���fdd��}�jj|��dS)Nc3s��DdHdS)Nrr)�barrr�foo�sz%TaskTests.test_get_stack.<locals>.fooc
s��jdd�}z�j|djjd�Wdd}Xtj�}�jddd|�|jd�|j�}�j	|d�dS)N�limitrrrN�filezfoo\(\) running)
Z	get_stackr4�f_code�co_name�io�StringIO�print_stack�seek�read�assertRegex)rArP�tb)�TrrrrM�s
z%TaskTests.test_get_stack.<locals>.barc3s(tj��d�j���DdHdS)Nr#)rr;r#r)rZrNrrr�runner�sz(TaskTests.test_get_stack.<locals>.runner)rr)r#r+)rr[r)rZrMrNrr�test_get_stack�s
!zTaskTests.test_get_stackc	Cs|jjd�tjdd��}|j|jd�trT|j|jd�n|j|jt�t	j
|�\}}d||f}|�}tjs�tr�d}nd}|j|jd�tr�|j|j|�ntj
|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
gDdHdS)N�abcrrrrrr0�s	z)TaskTests.test_task_repr.<locals>.notmuchr0z%s:%sr#�runningrTz <Task pending %s cb=[<Dummy>()]>z#<Task cancelling %s cb=[<Dummy>()]>r3z<Task cancelled %s>z<Task finished %s result='abc'>)r#�	set_debugrr)r4r�PY35r rr�get_function_sourcerrr1�add_done_callbackrr�_source_traceback�repr�cancelr?�CancelledErrorr+)	rr0�filename�linenor�gen�
coro_qualnamer9rDrrr�test_task_repr�sL
		

zTaskTests.test_task_reprcCs|jjd�tjdd��}|j|jd�trT|j|jd�n|j|jt�|�}t	j
str�d}d}n
d}}|j|j|�tr�|j|j|�nt	j
r^t	j
rtj|�\}}|j
d}d||||d|df}n"|j}	d	||	j|	jf}|jt|�d
|�ntj|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r0%sz8TaskTests.test_task_repr_coro_decorator.<locals>.notmuchr0rDrz0%s() running, defined at %s:%s, created at %s:%srz%s() running at %s:%sz<CoroWrapper %s>r#z%s:%sr^rz <Task pending %s cb=[<Dummy>()]>r)r#r_rr)r4rr`r rrrrrarc�gi_code�co_filename�co_firstlinenordr1rbrrr+)rr0riZ	coro_namerjrgrhrrD�coder9rrrr�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	|DdHS)Nr)r%rrr�wait_forisz3TaskTests.test_task_repr_wait_for.<locals>.wait_forr#z<Task .* wait_for=%s>)r#r_rr)r(r1r�run_brieflyrXrd�re�escaper>r+)rrrr%�taskrrr�test_task_repr_wait_forfs
z!TaskTests.test_task_repr_wait_forcCs�td��y|jjd�tjdd��}tjtj|d��}|jj|d��}d|_|j	|j
j�WdQXt|j
�}d}|j
|j|�|�dS)NTcsstjd�DdHdS)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#r_rr)�	functools�partial�create_taskZ_log_destroy_pending�
addCleanupZ_coror,rdr2�
startswith)rr{Zpartial_funcrvZ	coro_repr�expectedrrr�"test_task_repr_partial_corowrappervs
	z,TaskTests.test_task_repr_partial_corowrappercsqtj��fdd��}tjdd���tjdd���|�}|j|jj|�d�dS)Nc3s$��DdH}��DdH}||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)r4r#r+)rr�r9r)r�r�r�test_task_basics�s
	zTaskTests.test_task_basicsc	s��fdd�}�j|��tj�fdd��}tj|�d��}�j|j��jtj���j|�WdQX�j	|j
���j	|j���j|j��dS)Nc3s dV}�jd|�dVdS)Ng$@r)�assertAlmostEqual)�when)rrrri�sz"TaskTests.test_cancel.<locals>.genc3stjdd��DdHdS)Ng$@r#�)rrxr)r#rrrv�sz#TaskTests.test_cancel.<locals>.taskr#)
r"rr)r1�	call_soonrer?rfr+r2r3�	cancelled�assertFalse)rrirvr9r)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rv�sz)TaskTests.test_cancel_yield.<locals>.taskr#)rr)r1r#rrsrer?rfr+r2r3r�r�)rrvr9rrr�test_cancel_yield�s
zTaskTests.test_cancel_yieldc	s�tjd|j��tj�fdd��}tj|�d|j�}tj|j��j�|jtj	��|jj
|�WdQX|j�j��|j|j��dS)Nr#c3s
�DdHdS)Nr�rr)rArrrv�s	z0TaskTests.test_cancel_inner_future.<locals>.task)
rr(r#r)r1rrsrer?rfr+r2r�)rrvr9r)rAr�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
|�WdQX|j|j��|j�j
��|j|j
��dS)Nr#c3s
�DdHdS)Nr�rr)rArrrv�s	z>TaskTests.test_cancel_both_task_and_inner_future.<locals>.task)rr(r#r)r1rrsrer?rfr+r2r3r�)rrvr9r)rAr�&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�DdHy
�DdHWntjk
r1dSYnXdS)Nr�)rrfr)�fut1�fut2rrrv�s
	
z1TaskTests.test_cancel_task_catching.<locals>.taskr�)rr(r#r)r1rrsr6�_fut_waiterr>rer2r�r+r4r�)rrvr9�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=�DdHy
�DdHWntjk
r-YnX�DdH}|S)N)rrf)r�)r�r��fut3rrrvs	
z1TaskTests.test_cancel_task_ignoring.<locals>.taskr�)rr(r#r)r1rrsr6r�r>rer2r�r+r4r�)rrvr9r�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��DdHdS)N�dr#r�)rer2�_must_cancelrrxr)r#rr9rrrv%s
z0TaskTests.test_cancel_current_task.<locals>.taskr#)
rr'r8r)r1r?rfr+r2r3r�r�re)rrvr)r#rr9r�test_cancel_current_task!s
!z"TaskTests.test_cancel_current_taskc
s�fdd�}�j|��d�g�tj���fdd��}tj|�d��}�jt��}�j|�WdQX�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ri6sz6TaskTests.test_stop_while_run_in_complete.<locals>.genrc3scx\�dkr^�jtjdd����dDdH�d7��dkr�j�qqWdS)N�
g�������?r#rr|r)�appendrrx�stopr)r#�waitersryrrrvDs

z7TaskTests.test_stop_while_run_in_complete.<locals>.taskr#z+Event loop stopped before Future completed.r|g333333�?)r"rr)r1r?r*r+r4�str�	exceptionr�r3r��timer,rerf)rrirvr9�cm�wr)r#rr�ryr�test_stop_while_run_in_complete4s"	!


z)TaskTests.test_stop_while_run_in_completec
s��fdd�}�j|��d�tj��fdd��}tj|�d��}�jtj��$�jtj|dd���WdQX�j|j	���j|j
���jd�j���j
�d�dS)Nc3s9dV}�jd|�dV}�jd|�dV}dS)Ng�������?rg�������?)r�)r�)rrrri_s
z$TaskTests.test_wait_for.<locals>.genc
3s0d�ztjdd��DdHWdd�XdS)NTg�������?r#Fr3)rrxr)�foo_runningr#rrrNjs
z$TaskTests.test_wait_for.<locals>.foor#g�������?F)r"rr)r1r?�TimeoutErrorr+rrr2r3r�r�r�r4)rrirNr%r)r�r#rr�
test_wait_for]s
%zTaskTests.test_wait_forcCs\|j�}tjdd��}|jtj|�ddd|��}|j|d�dS)NcSsdS)Nr3rrrrrrD�sz.TaskTests.test_wait_for_blocking.<locals>.coro�timeoutr#r3)r"rr)r+rrr4)rr#rDr�rrr�test_wait_for_blocking~sz TaskTests.test_wait_for_blockingcs��fdd�}�j|��tj�fdd��}tj��zNtj|�d��}�jtj���jtj|d��WdQXWdtjd�X�j	d�j
���j|j���j|j
��dS)Nc3s7dV}�jd|�dV}�jd|�dVdS)Ng�������?rg{�G�z�?)r�)r�)rrrri�s
z5TaskTests.test_wait_for_with_global_loop.<locals>.genc3stjdd��DdHdS)Ng�������?r#r3)rrxr)r#rrrN�sz5TaskTests.test_wait_for_with_global_loop.<locals>.foor#g{�G�z�?)r"rr)r8r1r?r�r+rrr�r�r2r3r�)rrirNr%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ri�sz3TaskTests.test_wait_for_race_condition.<locals>.genr#r�g�������?g�������?r/)r"rr(rr�
call_laterr>r+r4)rrir#r%rvr�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ri�s
z TaskTests.test_wait.<locals>.geng�������?r#g333333�?c3sYtj��gd��DdH\}}�j|t��g���j|t��dS)Nr#r�)r�waitr4�set)r3�pending)r�r�r#rrrrN�s&z TaskTests.test_wait.<locals>.foor�)	r"rr1rxr)r+r4r�r�)rrirNr�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ri�s
z1TaskTests.test_wait_with_global_loop.<locals>.geng{�G�z�?r#g���Q��?c3sStj��g�DdH\}}�j|t��g���j|t��dS)Nr�)rr�r4r�)r3r�)r�r�rrrrN�s z1TaskTests.test_wait_with_global_loop.<locals>.foor�)r"rr1rxr)r8r+r4)rrir#rNr�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rD�sz6TaskTests.test_wait_duplicate_coroutines.<locals>.coro�test�spamr#css|]}|j�VqdS)N)r5)�.0rArrr�	<genexpr>�sz;TaskTests.test_wait_duplicate_coroutines.<locals>.<genexpr>)	rr)r1r�r#r+r�r4r�)rrD�crvr3r�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)	r?r@r#r+rr�r�rxr,)rZ
sleep_coroZ	wait_cororrr�test_wait_errors�s!	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ris
z0TaskTests.test_wait_first_completed.<locals>.geng$@r#g�������?r�r�)r"rr1rxr��FIRST_COMPLETEDr+r4r�r3r2�assertIsNoner5r�r��advance_time)rrir#r�r�rvr3r�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�coro1,sz.TaskTests.test_wait_really_done.<locals>.coro1cssdVdVdS)Nrrrrr�coro20sz.TaskTests.test_wait_really_done.<locals>.coro2r#r�)rr)r1r#r�r�r+r4r2r3r�r5)rr�r�r�r�rvr3r�rrr�test_wait_really_done(s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riEsz0TaskTests.test_wait_first_exception.<locals>.geng$@r#cSstd��dS)N�err)�ZeroDivisionErrorrrrr�excOsz0TaskTests.test_wait_first_exception.<locals>.excr�rr�)r"rr1rxr)r��FIRST_EXCEPTIONr+r4r�r�r�)	rrir#r�r�r�rvr3r�r)rr�test_wait_first_exceptionCs$		
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rids
z8TaskTests.test_wait_first_exception_in_wait.<locals>.geng$@r#c3s(tjdd��DdHtd��dS)Ng{�G�z�?r#r�)rrxr�r)r#rrr�psz8TaskTests.test_wait_first_exception_in_wait.<locals>.excr�g{�G�z�?r�)r"rr1rxr)r�r�r+r4r�r�r�)rrir�r�r�rvr3r�r)r#rr�!test_wait_first_exception_in_waitbs$	
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ri�s
z/TaskTests.test_wait_with_exception.<locals>.geng�������?r#c3s(tjdd��DdHtd��dS)Ng333333�?r#Zreally)rrxr�r)r#rr�sleeper�sz3TaskTests.test_wait_with_exception.<locals>.sleeperc3s�tj��gd��DdH\}}�jt|�d��j|t��tdd�|D��}�jt|�d�dS)Nr#r|css'|]}|j�dk	r|VqdS)N)r�)r�rArrrr��szBTaskTests.test_wait_with_exception.<locals>.foo.<locals>.<genexpr>r)rr�r4�lenr�)r3r��errors)r�r�r#rrrrN�s
&z/TaskTests.test_wait_with_exception.<locals>.foog333333�?)r"rr1rxr)r+r�r�)rrir�rNr)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ri�sz-TaskTests.test_wait_with_timeout.<locals>.geng�������?r#g333333�?c3sbtj��gddd��DdH\}}�j|t�g���j|t�g��dS)Nr�g)\��(�?r#)rr�r4r�)r3r�)r�r�r#rrrrN�sz-TaskTests.test_wait_with_timeout.<locals>.foog)\��(�?r�)
r"rr1rxr)r+r�r�r�r�)rrirNr)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ri�sz4TaskTests.test_wait_concurrent_complete.<locals>.geng�������?r#g333333�?r�r�)r"rr1rxr+r�r4r�r�r�r�)rrir#r�r�r3r�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ri�sz(TaskTests.test_as_completed.<locals>.geng�?Fc3s^tj|d��DdH�j|��rZd�krZd�krZd��jd�n|S)Nr#r�r�Tg�Q���?)rrx�addr�)�dtry)�	completedr#�time_shiftedrrr��s
z,TaskTests.test_as_completed.<locals>.sleeperg{�G�z�?r�r�g333333�?r�c3sEg}x8tj���gd��D]}|j|DdH�q%W|S)Nr#)r�as_completedr�)�valuesrA)r�r�r�r#rrrN�s%z(TaskTests.test_as_completed.<locals>.foor#r|)r"Zslow_callback_durationr�rr)r+r1r�r�r2r4)rrir�rNr�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risz5TaskTests.test_as_completed_with_timeout.<locals>.geng�������?r�r#g333333�?r�c3s�g}x�tj��gddd��D]|}|rD�jd�ny"|DdH}|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�rA�vr�)r�r�r#rrrNs(*z5TaskTests.test_as_completed_with_timeout.<locals>.foor|rrg���Q��?r�)rr�)r"rrxr)r+r1r4r��assertIsInstancer�r�r�r�r�)rrirNr�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ri1sz<TaskTests.test_as_completed_with_unused_timeout.<locals>.geng{�G�z�?r�r#c3sHxAtj�gddd��D]!}|DdH}�j|d�qWdS)Nr�rr#r�)rr�r4)rAr�)r�r#rrrrN:s%z<TaskTests.test_as_completed_with_unused_timeout.<locals>.foo)r"rrxr)r+r1)rrirNr)r�r#rr�%test_as_completed_with_unused_timeout/s
!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riDsz5TaskTests.test_as_completed_reverse_wait.<locals>.geng�������?r�r#g�������?r�r|rr)r"rrx�listr�r4r�r+r�r�r�)	rrir#r�r��fs�futsryrzrrr�test_as_completed_reverse_waitBs
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ri[s
z3TaskTests.test_as_completed_concurrent.<locals>.geng�������?r�r#r�r|css|]}|j�VqdS)N)r5)r�rArrrr�ksz9TaskTests.test_as_completed_concurrent.<locals>.<genexpr>)
r"rrxr�r�r4r�r�r+r�)
rrir#r�r�r�r��waiterr3r�r)rr�test_as_completed_concurrentYsz&TaskTests.test_as_completed_concurrentcs�tjdd���tj��fdd��}tj|�d�j�}�jj|�|j�}�jt|�ddh��jt|�d�dS)	NcSs|S)Nr)r�rrrrDosz>TaskTests.test_as_completed_duplicate_coroutines.<locals>.coroc3sZg}�d�}xAtj||�d�gd�j�D]}|j|DdH�q:W|S)N�hamr�r#)rr�r#r�)r5r�rA)rDrrrr[ssz@TaskTests.test_as_completed_duplicate_coroutines.<locals>.runnerr#r�r�r|)	rr)r1r#r+r5r4r�r�)rr[r%r5r)rDrr�&test_as_completed_duplicate_coroutinesms	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ri�s
z!TaskTests.test_sleep.<locals>.genc3sAtj|dd��DdHtj|d|d��DdH}|S)Nr|r#)rrx)r��argr�)r#rrr��s!z%TaskTests.test_sleep.<locals>.sleeperg�������?�yeahr#)r"rr)r1r+r2r3r4r5r�r�)rrir�r9r)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ri�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"rr1rxr�rrsr�Z
_cancelledrer2)rrir#r9r�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ri�s
z5TaskTests.test_task_cancel_sleeping_task.<locals>.genc3stj|d��DdHdS)Nr#)rrx)r�)r#rrrx�sz7TaskTests.test_task_cancel_sleeping_task.<locals>.sleepc3s_tj�d�d��}�jd|j�y
|DdHWntjk
rVdSYnXdSdS)Ni�r#g�������?r�zslept in)rr1r�rerf)r�)r#rxrr�doit�s
	z6TaskTests.test_task_cancel_sleeping_task.<locals>.doitr�g�������?)r"rr)r4r+r�r�)rrir�Zdoerr)r#rrxr�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
�DdHdS)Nrr)r%rrrD�sz6TaskTests.test_task_cancel_waiter_future.<locals>.coro)rr(r#r)r1rrsr6r�rer?rfr+r�r2r�)rrDrvr)r%r�test_task_cancel_waiter_future�s
z(TaskTests.test_task_cancel_waiter_futurecCsdtjdd��}|�}tj|d|j�}|jd�|jt|j�|j�dS)NcSsdS)Nr=rrrrrr0�sz6TaskTests.test_step_in_completed_task.<locals>.notmuchr#r/)	rr)r1r#r>r?�AssertionError�_stepr,)rr0rirvrrr�test_step_in_completed_task�s	
z%TaskTests.test_step_in_completed_taskcCs5tjdd��}|jt|jj|��dS)NcssdVdVdS)Nrr=rrrrrr0�sz+TaskTests.test_step_result.<locals>.notmuch)rr)r?r*r#r+)rr0rrr�test_step_result�szTaskTests.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_added�superrE)rr�kwds)�	__class__rrrEs	z7TaskTests.test_step_result_future.<locals>.Fut.__init__csd|_t�j|�dS)NT)r�r�rb)r�fn)r�rrrbs	z@TaskTests.test_step_result_future.<locals>.Fut.add_done_callback)rrr rErbrr)r�r�Fut�sr�r#c3s�DdH�dS)Nrr)r%r5rr�wait_for_futuresz:TaskTests.test_step_result_future.<locals>.wait_for_future)rr(r#r)r1rrsr2r��objectr>r6r3r�r5)rr�r�r9r�r)r%r5r�test_step_result_future�s		
z!TaskTests.test_step_result_futurecCsptjdd��}tj|�d|j�}|jt|j�|j|j��|j	|j
�t�dS)NcSs
t��dS)N)�
BaseExceptionrrrr�notmutchsz8TaskTests.test_step_with_baseexception.<locals>.notmutchr#)rr)r1r#r?r�r�r2r3r�r�)rr�rvrrr�test_step_with_baseexceptions
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ri(sz7TaskTests.test_baseexception_during_cancel.<locals>.genc3stjdd��DdHdS)Nr�r#)rrxr)r#rrr�/sz;TaskTests.test_baseexception_during_cancel.<locals>.sleeperc3s2y��DdHWntjk
r-��YnXdS)N)rrfr)�base_excr�rrr�5sz<TaskTests.test_baseexception_during_cancel.<locals>.notmutchr#)r"rr)r�r1rrsrer�r3r?r2r�r6r�)rrir�rvr)r�r#rr�r� test_baseexception_during_cancel&s	

z*TaskTests.test_baseexception_during_cancelcCssdd�}|jtj|��dd�}|jtj|��tjdd��}|jtj|��dS)NcSsdS)Nrrrrrr�Isz.TaskTests.test_iscoroutinefunction.<locals>.fncss	dVdS)Nrrrrr�fn1Nsz/TaskTests.test_iscoroutinefunction.<locals>.fn1css	dVdS)Nrrrrr�fn2Rsz/TaskTests.test_iscoroutinefunction.<locals>.fn2)r�r�iscoroutinefunctionr)r2)rr�rrrrr�test_iscoroutinefunctionHsz"TaskTests.test_iscoroutinefunctionc	svtjd|j��tj�fdd��}|�}|jt��|jj|�WdQX|j�j��dS)Nr#c3s	�VdS)Nrr)r%rrr�Zsz;TaskTests.test_yield_vs_yield_from.<locals>.wait_for_future)	rr(r#r)r?r*r+r�r3)rr�rvr)r%r�test_yield_vs_yield_fromWs	z"TaskTests.test_yield_vs_yield_fromcsVtjdd���tj�fdd��}|�}|jt|jj|�dS)Ncss	dVdS)NrrrrrrDesz:TaskTests.test_yield_vs_yield_from_generator.<locals>.coroc
3s$��}z	|VWd|j�XdS)N)r,)ri)rDrrr�is		zETaskTests.test_yield_vs_yield_from_generator.<locals>.wait_for_future)rr)r?r*r#r+)rr�rvr)rDr�"test_yield_vs_yield_from_generatords	z,TaskTests.test_yield_vs_yield_from_generatorcCsptjdd��}|jtj|��|�}|jtj|��|jj|�}|j|d�dS)NcSsdS)Nr�rrrrrr{wsz7TaskTests.test_coroutine_non_gen_function.<locals>.funcr�)rr)r2r�iscoroutiner#r+r4)rr{rDr�rrr�test_coroutine_non_gen_functionvs	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)Nr�)r>r)r%rrrD�szETaskTests.test_coroutine_non_gen_function_return_future.<locals>.coror�)	rr(r#r)r1r+r4r�r5)rr{rD�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#)r2rr1�current_task)r#)rrvrrrD�sz)TaskTests.test_current_task.<locals>.coro)r�rr1rr#r)r+)rrDr)rrvr�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��DdH�jtjjd|��k��jd�dS)Nr#T)r2rr1rr>)r#)r�r�r�task1rrr��s"	"zBTaskTests.test_current_task_with_interleaving_tasks.<locals>.coro1c3s^�jtjjd|��k��jd��DdH�jtjjd|��k�dS)Nr#T)r2rr1rr>)r#)r�r�r�task2rrr��s"
	zBTaskTests.test_current_task_with_interleaving_tasks.<locals>.coro2)	r�rr1rr#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
�DdHWn"tjk
r1�d7��YnX�jd�dS)Nrzgot past sleep() in inner())rrf�failr)�proofrr�rr�inner�s

z8TaskTests.test_yield_future_passes_cancel.<locals>.innerc3s@y��DdHWntjk
r1�d7�YnX�d7�dS)Nr�r�)rrfr)rrrrr��s
z8TaskTests.test_yield_future_passes_cancel.<locals>.outer�e)rr(r#r)r;rrsrer+r4r2r�)rr�rAr)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�DdH�d7�dS)Nrrr)rr�rrr�s	z?TaskTests.test_yield_wait_does_not_shield_cancel.<locals>.innerc3s7tj��gd�j�DdH\}}�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)r;rrsrer?rfr+r>r4)rr�rAr)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#�shieldr>r+r4)rrr�r�rrr�test_shield_result�s

zTaskTests.test_shield_resultcCswtjd|j�}tj|�}tj|j�td�}|j|�tj|j�|j|j	�|�dS)Nr#r�)
rr(r#rrrsr*�
set_exceptionr6r�)rrr�r�rrr�test_shield_exceptions
zTaskTests.test_shield_exceptioncCsetjd|j�}tj|�}tj|j�|j�tj|j�|j|j��dS)Nr#)	rr(r#rrrsrer2r�)rrr�rrr�test_shield_cancel	s
zTaskTests.test_shield_cancelcCsQtjd|j�}|jd�|jjtj|��}|j|d�dS)Nr#r�)rr(r#r>r+rr4)rr%r�rrr�test_shield_shortcuts
zTaskTests.test_shield_shortcutc	s�d�tjd�j��tj��fdd���tj���fdd��}tj|�d�j�}tj�j�|j��jtj	���jj
|�WdQX�jd�tj�j��j�d�dS)Nrr#c3s�DdH�d7�dS)Nrrr)rr�rrrs	z+TaskTests.test_shield_effect.<locals>.innerc3s,tj��d�j�DdH�d7�dS)Nr#r�)rrr#r)rrrrrr�"sz+TaskTests.test_shield_effect.<locals>.outerr)
rr(r#r)r;rrsrer?rfr+r>r4)rr�rAr)rrrr�r�test_shield_effects!

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#�gatherrrrsrer2r�r>r4r5)r�child1�child2�parentr�rrr�test_shield_gather1s


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 rrsrer�r�rfr2r�r>)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#r?rIr+r�r
r,)rr%rDrrr�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#r?rIr+r�r
r,r@)rr%rDrrr�test_wait_invalid_args[s	
z TaskTests.test_wait_invalid_argscsJ�fdd�}td��|�WdQXtd��|�WdQXdS)Ncs�tj���fdd��}tjd�j���jd�|���jtj����j�jt	j
��j�j��j�j
t	j��jj���j�j�dS)Nc3s�j�j��DdHdS)N)r2�
gi_runningr)r%rirrrrDpszGTaskTests.test_corowrapper_mocks_generator.<locals>.check.<locals>.coror#)rr)r(r#r>r2rr��gi_frame�types�	FrameTyper�r(rm�CodeTyper+r�)rD)r)r%rir�checkls!
	z9TaskTests.test_corowrapper_mocks_generator.<locals>.checkFT)r)rr-r)rr� test_corowrapper_mocks_generatorjs



z*TaskTests.test_corowrapper_mocks_generatorcs�td���tj�fdd��}tj��fdd���tjdd���tj|�d�j�}�jj|�}�j|d�WdQXdS)
NTc3s��DdHS)Nrr)r
rrr	�sz1TaskTests.test_yield_from_corowrapper.<locals>.t1c3s:tjd�j�}tj�|�d�j�|DdHS)Nr#)rr(r#r1)rA)r�t3rrr
�sz1TaskTests.test_yield_from_corowrapper.<locals>.t2cSs|jd�dS)Nrr|r)rr|r)r>)rArrrr/�sz1TaskTests.test_yield_from_corowrapper.<locals>.t3r#rr|r)rr|r)rrr)r1r#r+r4)rr	rv�valr)rr
r/r�test_yield_from_corowrapper�s
z%TaskTests.test_yield_from_corowrappercsNdd���fdd�}|j|d�d	�|j|d�d�dS)
NcssdV}|S)Nr)r�rrrrN�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)rNrr�call�s
z8TaskTests.test_yield_from_corowrapper_send.<locals>.callrr|r�)rr|)rr|)r4)rr6r)rNr� test_yield_from_corowrapper_send�s
z*TaskTests.test_yield_from_corowrapper_sendcCsDtj�}dd�}tjj|��}||d<d|_dS)Ncss
gDdHdS)NrrrrrrN�sz/TaskTests.test_corowrapper_weakref.<locals>.foor5)�weakref�WeakValueDictionaryrrr2ri)rZwdrNr5rrr�test_corowrapper_weakref�s

z"TaskTests.test_corowrapper_weakrefzneed 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|jidd6tjd	6|d
6�|j�dS)Ncss+tjd|�}|DdHtd��dS)Nr#zcode never reached)rr(�	Exception)r#�futurerrr�kill_me�s	z:TaskTests.test_log_destroyed_pending_task.<locals>.kill_meTr#rr<z%Task was destroyed but it is pending!�messagervr)rr)rZMockr#r_�set_exception_handlerr;r4r1�	all_tasksZ	_run_oncer��_readyr)�f_localsrcr�
gc_collectr�Zassert_called_with�ANYZ
reset_mock)rr=Zmock_handlerrDrvrrrr�test_log_destroyed_pending_task�s(%

	
%
z)TaskTests.test_log_destroyed_pending_taskzasyncio.coroutines.loggerc	Cs�td��tjdd��}WdQXt}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_linenorrCr2�error�called�	call_argsrrartrur rX�compile�DOTALL)	rZm_logrFZtb_filename�	tb_linenor>Z
func_filenameZfunc_linenoZregexrrr�test_coroutine_never_yielded�s

z&TaskTests.test_coroutine_never_yieldedcCs�|jjd�tjt�d|j�}tj�jd}|j|j	t
�|j|j	ddd�t|df�|jj
|�dS)NTr#rr�test_task_source_tracebackr)r#r_rr1r
rHrIrJr�rcr�r4rGr+)rrvrhrrrrRs
z$TaskTests.test_task_source_tracebackcs�tj��|j�j�tj�fdd��}�j|��}�jtj||d���}�j|j�|j	tj
�j|�|j|j
��dS)Nc3stjd��}|DdHdS)Nr#)rr()r%)r#rr�blocking_coroutinesz;TaskTests._test_cancel_wait_for.<locals>.blocking_coroutiner#)rr'r�r,r)rrrr�rer?rfr+r2r�)rr�rSrvr�r)r#r�_test_cancel_wait_fors!
zTaskTests._test_cancel_wait_forcCs|jd�dS)N)rT)rrrr�test_cancel_blocking_wait_for&sz'TaskTests.test_cancel_blocking_wait_forcCs|jd�dS)NgN@)rT)rrrr�test_cancel_wait_for)szTaskTests.test_cancel_wait_forN)Zrrr r$r.r:r<rBrC�unittestZ
skipUnlessr`rHrJrLr\rkrqrwr�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�rrrrrrr
rrrrrrrrr$r%r&r'r.r1r7r:�PY34rErZpatchrQrRrTrUrVrrrrr!Ks�;D)!
 "-%
"

!	'	)r!c@speZdZdd�Zdd�Zdd�Zdd�Zd	d
�Zdd�Zd
d�Z	dd�Z
dS)�GatherTestsBasecCs8|j�|_|j�|_|j|jdd�dS)N�cleanupF)r"�one_loopr-r8)rrrrr$/szGatherTestsBase.setUpcCs!x|jrtj|�qWdS)N)rArrs)rr#rrr�	_run_loop4s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(r[)r��i)rrr�
<listcomp>9s	z2GatherTestsBase._check_success.<locals>.<listcomp>rrr|F)�rangerr �wrap_futuresr�MockCallbackrbr>r\r[r4rLr�r3�assert_called_once_withr5)r�kwargsr�r�r�r%�cbr)rr�_check_success8s(!




zGatherTestsBase._check_successcCs|j�|jdd�dS)N�return_exceptionsF)re)rrrr�test_successGs
zGatherTestsBase.test_successcCs|jdd�dS)NrfT)re)rrrr�test_result_exception_successKsz-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(r[)r�r])rrrr^Os	z6GatherTestsBase.test_one_exception.<locals>.<listcomp>r
rr)r_rr r`rrarbr�r>rr\r[r2r3rbr6r�rer*)	rr�r�r�r�er%rdr�r)rr�test_one_exceptionNs.$
	




z"GatherTestsBase.test_one_exceptionc	s*�fdd�td�D�\}}}}tjdd�j||||��}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(r[)r�r])rrrr^as	z:GatherTestsBase.test_return_exceptions.<locals>.<listcomp>r	rfTrr)r_rr r`rrarbr�r*r>rr\r[r�r3r2rbr4r5)	rr�r�r�rr%rdr�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)rmrn)	�os�path�dirnamerrG�joinrr4�rstrip)rZaio_pathrp�sts�stdout�stderrrrr�test_env_var_debugss&!	z"GatherTestsBase.test_env_var_debugN)rrr r$r\rergrhrjrkrzrrrrrY-srYc@sdeZdZdd�Zdd�Zdd�Zdd�Zd	d
�Zdd�Zd
d�Z	dS)�FutureGatherTestscGs|S)Nr)r�futuresrrrr`�szFutureGatherTests.wrap_futurescCs�tj|j�|jtjd�tj|�}|j|tj�|j|j|j�|j	|j�|j
|j��|j|j
�g�tjd|j|�}|j|j|j�dS)Nr#)rr8r[r�r r�r(r6r7r\r2r3r4r5r-)rZseq_or_iterr%rrr�_check_empty_sequence�sz'FutureGatherTests._check_empty_sequencecCsA|jg�|jf�|jt��|jtd��dS)Nrp)r}r��iter)rrrr�test_constructor_empty_sequence�s

z1FutureGatherTests.test_constructor_empty_sequencecCs�tjd|j�}tjd|j�}|jt��tj||�WdQX|jt��tj|d|j�WdQXdS)Nr#)rr(r[r-r?r@r )rr�r�rrr�%test_constructor_heterogenous_futures�sz7FutureGatherTests.test_constructor_heterogenous_futurescs��fdd�td�D�}tj|�}�j|j�j��j�j��j|j��tjd�j|�}�j|j�j��j�j��j|j��dS)Ncs%g|]}tjd�j��qS)r#)rr(r-)r�r])rrrr^�s	zIFutureGatherTests.test_constructor_homogenous_futures.<locals>.<listcomp>rr#)	r_rr r6r7r-r\r�r3)rZchildrenr%r)rr�#test_constructor_homogenous_futures�sz5FutureGatherTests.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(r[)r�r])rrrr^�s	z;FutureGatherTests.test_one_cancellation.<locals>.<listcomp>r
rr)r_rr rrarbr>rer\r[r2r3rbr�r�r�r�rfrr*)rr�r�r�rrir%rdr)rr�test_one_cancellation�s.





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(r[)r�r])rrrr^�s	zLFutureGatherTests.test_result_exception_one_cancellation.<locals>.<listcomp>�rfTrrr|r	)r_rr rrarbr>r�rrer\r[r�r3r*r+r�rfr4rb)rr�r�r�rrirAr%rdZzdeZrter�r)rr�&test_result_exception_one_cancellation�s*"$

	



	
"z8FutureGatherTests.test_result_exception_one_cancellationN)
rrr r`r}rr�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$rr8r[)r)r�rrr$�s
zCoroutineGatherTests.setUpcGsCg}x6|D].}tj|dd��}|j|��q
W|S)Ncss	|DdHS)Nr)r%rrrrD�sz/CoroutineGatherTests.wrap_futures.<locals>.coro)rr)r�)rr|Zcorosr%rDrrrr`�s
z!CoroutineGatherTests.wrap_futurescCs�tjdd��}|�}|�}tj||�}|j|j|j�|jj|�|j|jdd�|�}|�}tj||d|j�}|j|j|j�|jj|�dS)NcSsdS)Nr]rrrrrrD�szBCoroutineGatherTests.test_constructor_loop_selection.<locals>.cororZFr#)	rr)r r6r7r[r+r8r-)rrDZgen1Zgen2r%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rDsz<CoroutineGatherTests.test_duplicate_coroutines.<locals>.coror]�defr#)rr)r r[r\r4r5)rrDr�r%rrr�test_duplicate_coroutiness
'z.CoroutineGatherTests.test_duplicate_coroutinesc	ssd�tjd�j��tj��fdd��}tj|�d�j��tj|�d�j��d�tj�����fdd��}tj|�d�j�}tj�j��j|j���j	tj
���jj|�WdQX�j�j���j�j
���j�j
���j�j
��tj�j��j�d�dS)Nrr#c3s�DdH�d7�dS)Nrrr)rr�rrrs	z?CoroutineGatherTests.test_cancellation_broadcast.<locals>.innerc3s2tj��d�j���DdH�d7�dS)Nr#r�)rr r[r)r!r"�gathererrrrrr�s	z?CoroutineGatherTests.test_cancellation_broadcast.<locals>.outer)rr(r[r)r;rrsr2rer?rfr+r�r�r4)rrr�rAr)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|DdHtd��dS)Nzshould not be ignored)r*)rArrrr2s	z:CoroutineGatherTests.test_exception_marking.<locals>.innerr#c3s.tj������d�j�DdHdS)Nr#)rr r[r)r�r�rrrrr�:sz:CoroutineGatherTests.test_exception_marking.<locals>.outer)rr)r(r[r;rrsr>r�r�r*)rr�rAr)r�r�rrr�test_exception_marking/s$

z+CoroutineGatherTests.test_exception_marking)	rrr r$r`r�r�r�r�rr)r�rr��s		"r�c@s�eZdZdZdd�Zejdddd��Zdddddd	�Zd
d�Z	dd
�Z
dd�Zdd�Zdd�Z
dS)�RunCoroutineThreadsafeTestsz/Test case for asyncio.run_coroutine_threadsafe.cCs#tj�|_|j|j�dS)N)rr'r#r8)rrrrr$Jsz!RunCoroutineThreadsafeTests.setUpFccsbtjdd|j�DdH|r0td��n|rZtjjj|j�j�dVn||S)z"Wait 0.05 second and return a + b.g�������?r#NzFail!)rrxr#r*Ztasksr1rre)rr�r�rrerrrr�NszRunCoroutineThreadsafeTests.addNc
Cs�|jddd|d|�}tj||j�}|rR|jj|jd�nz|j|�SWd|j�p{|j�XdS)z$Run add coroutine in the event loop.rr|rreN)	r�rZrun_coroutine_threadsafer#Zcall_soon_threadsafer3r5r3re)rrrer��advance_cororDr<rrr�targetYsz"RunCoroutineThreadsafeTests.targetcCs>|jjd|j�}|jj|�}|j|d�dS)z9Test coroutine submission from a thread to an event loop.Nr)r#�run_in_executorr�r+r4)rr<r5rrr�test_run_coroutine_threadsafelsz9RunCoroutineThreadsafeTests.test_run_coroutine_threadsafec	Cs]|jjd|jd�}|jt��}|jj|�WdQX|jd|jj�dS)z]Test coroutine submission from a thread to an event loop
        when an exception is raised.NTzFail!)	r#r�r�r?r*r+�assertInr�r)rr<�exc_contextrrr�,test_run_coroutine_threadsafe_with_exceptionrszHRunCoroutineThreadsafeTests.test_run_coroutine_threadsafe_with_exceptionc	s��fdd�}�jjd|�}�jtj���jj|�WdQXtj�j�x0tjj	�j�D]}�j
|j��qvWdS)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�r?rr�r+rrsr1r@r2r3)rr�r<rvr)rr�*test_run_coroutine_threadsafe_with_timeoutzszFRunCoroutineThreadsafeTests.test_run_coroutine_threadsafe_with_timeoutc	sT�fdd�}�jjd|�}�jtj���jj|�WdQXdS)z[Test coroutine submission from a tread to an event loop
        when the task is cancelled.cs�jdd�S)NreT)r�r)rrrr��szZRunCoroutineThreadsafeTests.test_run_coroutine_threadsafe_task_cancelled.<locals>.<lambda>N)r#r�r?rrfr+)rr�r<r)rr�,test_run_coroutine_threadsafe_task_cancelled�szHRunCoroutineThreadsafeTests.test_run_coroutine_threadsafe_task_cancelledc
s��jjd�fdd��}�jjdd��tj�}�jj|��jt��}�jj|�WdQX�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#rDrrrr��sr�rrr�)r#r�Zset_task_factoryrrar?r?�	NameErrorr+r�r�rr4r�Zcall_args_listrM)rr<r�r�r#�contextrcr)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�rrrrr�Gs
	r�c@s4eZdZdd�Zdd�Zdd�ZdS)�
SleepTestscCs tj�|_tjd�dS)N)rr'r#r8)rrrrr$�szSleepTests.setUpcCs|jj�d|_dS)N)r#r,)rrrr�tearDown�s
zSleepTests.tearDowncs`d��fdd��tj���fdd��}�jj|���j�d�dS)Nrcs�|7�dS)Nr)�num)r5rr�
inc_result�sz.SleepTests.test_sleep_zero.<locals>.inc_resultc3sd�jj�d��j�d�tjdd�jdd�DdH}�j�d��|�dS)Nrrr#r5r�)r#r�r4rrx)r�)r�r5rrrrD�s
#z(SleepTests.test_sleep_zero.<locals>.coro�)rr)r#r+r4)rrDr)r�r5rr�test_sleep_zero�s
!zSleepTests.test_sleep_zeroN)rrr r$r�r�rrrrr��sr�c@s�eZdZdd�Zdd�Zdd�Zdd�Zd	d
�Zdd�Zd
d�Z	dd�Z
dd�Zdd�Zdd�Z
dd�Zdd�ZdS)�TimeoutTestscCs tj�|_tjd�dS)N)rr'r#r8)rrrrr$�szTimeoutTests.setUpcCs|jj�d|_dS)N)r#r,)rrrrr��s
zTimeoutTests.tearDowncspdg�tj��fdd���tj��fdd��}�jj|���j�dd�dS)NFc3sHytjdd�j�DdHWn"tjk
rCd�d<�YnXdS)Nr�r#Tr)rrxr#rfr)�canceled_raisedrrr�long_running_task�s

z4TimeoutTests.test_timeout.<locals>.long_running_taskc3s`�jtj��Htjdd�j��)}��DdH�j|j�j�WdQXWdQXdS)Ng{�G�z�?r#)r?rr�r�r#r6r7)r9)r�rrr�go�sz%TimeoutTests.test_timeout.<locals>.gorzCancelledError was not raised)rr)r#r+r2)rr�r)r�r�rr�test_timeout�s
	zTimeoutTests.test_timeoutcsPtj�fdd���tj��fdd��}�jj|��dS)Nc3stjdd�j�DdHdS)Ng{�G�z�?r#r3)rrxr#r)rrrr��szCTimeoutTests.test_timeout_finish_in_time.<locals>.long_running_taskc	3sAtjdd�j����DdH}WdQX�j|d�dS)Ng�������?r#r3)rr�r#r4)�resp)r�rrrr��sz4TimeoutTests.test_timeout_finish_in_time.<locals>.go)rr)r#r+)rr�r)r�rr�test_timeout_finish_in_time�sz(TimeoutTests.test_timeout_finish_in_timecsBtj�j�tj�fdd��}�jj|��dS)Nc
3sDtjd��/}tjd�DdH�j|j�j�WdQXdS)Ng�������?g{�G�z�?)rr�rxr6r7r#)r9)rrrr&�sz3TimeoutTests.test_timeout_gloabal_loop.<locals>.run)rr8r#r)r+)rr&r)rr�test_timeout_gloabal_loop�sz&TimeoutTests.test_timeout_gloabal_loopcs2tj�fdd��}�jj|��dS)Nc3sZtjdd�j�DdH�jt��*tjdd�j��t�WdQXWdQXdS)Nrr#g�������?)rrxr#r?�KeyErrorr�r)rrrr��sz<TimeoutTests.test_timeout_not_relevant_exception.<locals>.go)rr)r#r+)rr�r)rr�#test_timeout_not_relevant_exception�sz0TimeoutTests.test_timeout_not_relevant_exceptioncs2tj�fdd��}�jj|��dS)Nc3s`tjdd�j�DdH�jtj��-tjdd�j��tj�WdQXWdQXdS)Nrr#g����MbP?)rrxr#r?rfr�r)rrrr�	szLTimeoutTests.test_timeout_canceled_error_is_converted_to_timeout.<locals>.go)rr)r#r+)rr�r)rr�3test_timeout_canceled_error_is_converted_to_timeout	sz@TimeoutTests.test_timeout_canceled_error_is_converted_to_timeoutcsJtjdd���tj��fdd��}�jj|��dS)NcSstjd�dS)Ng�������?r3)r�rxrrrrr�	s
zBTimeoutTests.test_timeout_blocking_loop.<locals>.long_running_taskc	3sAtjdd�j����DdH}WdQX�j|d�dS)Ng{�G�z�?r#r3)rr�r#r4)r5)r�rrrr�	sz3TimeoutTests.test_timeout_blocking_loop.<locals>.go)rr)r#r+)rr�r)r�rr�test_timeout_blocking_loop
	sz'TimeoutTests.test_timeout_blocking_loopcsftjd�j���jjd�jd��tj��fdd��}�jj|��dS)Nr#g�������?r3c	3s>tjdd�j���DdH}WdQX�j|d�dS)Ng�������?r#r3)rr�r#r4)r�)r%rrrr�	sz1TimeoutTests.test_for_race_conditions.<locals>.go)rr(r#r�r>r)r+)rr�r)r%rr�test_for_race_conditions	sz%TimeoutTests.test_for_race_conditionscs2tj�fdd��}�jj|��dS)Nc3s�d}�jj�}�jtj��Stjdd�j��4d}ztjdd�j�DdHWdd}XWdQXWdQX�jj�|}�jd|ko�dkn|��j|�dS)Ng�������?r#Tg�������?Fg
ףp=
�?g���Q��?)	r#r�r?rr�r�rxr2r�)r��startr�)rrrr�%	s&z*TimeoutTests.test_timeout_time.<locals>.go)rr)r#r+)rr�r)rr�test_timeout_time$	szTimeoutTests.test_timeout_timecCs9|jt��$tjdd|j��WdQXWdQXdS)Ng�������?r#)r?r*rr�r#)rrrr�"test_raise_runtimeerror_if_no_task9	sz/TimeoutTests.test_raise_runtimeerror_if_no_taskcs_dg�tj��fdd���tj���fdd��}�jj|��dS)NFc3sdy>tjdd�j�� tjdd�j�DdHWdQXWntjk
r_d�d<YnXdS)Ng����MbP?r#rTr)rr�r#rxr�r)�has_timeoutrrrr�B	s
%z<TimeoutTests.test_outer_coro_is_not_cancelled.<locals>.outerc3s_tj��d�j�}|DdH�j�d��j|j���j|j��dS)Nr#r)rr;r#r2r�r�r3)rv)r�r�rrrr�J	s
	z9TimeoutTests.test_outer_coro_is_not_cancelled.<locals>.go)rr)r#r+)rr�r)r�r�rr� test_outer_coro_is_not_cancelled>	s	!z-TimeoutTests.test_outer_coro_is_not_cancelledcsktjd�j��tj��fdd���tj���fdd��}�jj|��dS)Nr#c3s,�jd�tjdd�j�DdHdS)Nrr#)r>rrxr#r)r%rrrr�W	s
z2TimeoutTests.test_cancel_outer_coro.<locals>.outerc	3sztj��d�j�}�DdH|j��jtj��|DdHWdQX�j|j���j|j��dS)Nr#)	rr;r#rer?rfr2r�r3)rv)r%r�rrrr�\	s	
z/TimeoutTests.test_cancel_outer_coro.<locals>.go)rr(r#r)r+)rr�r)r%r�rr�test_cancel_outer_coroT	s!
z#TimeoutTests.test_cancel_outer_coroN)rrr r$r�r�r�r�r�r�r�r�r�r�r�r�rrrrr��s

r��__main__)*r��
contextlibr}rSrrrtrHr�r*rWr8rrrrr�r�ImportErrorrZtest.support.script_helperrZtest.script_helperZasyncio.test_support�version_inforXr`r)r
�contextmanagerrrrZTestCaser!rYr{r�r�r�r�r�mainrrrr�<module>s\




	�������cTc\�