HEX
Server: LiteSpeed
System: Linux server.nevid-deploma.com 4.18.0-553.111.1.lve.el8.x86_64 #1 SMP Fri Mar 13 13:42:17 UTC 2026 x86_64
User: smilepac (1037)
PHP: 8.1.34
Disabled: NONE
Upload Files
File: //opt/cppython/lib/python3.8/test/test_asyncio/__pycache__/test_events.cpython-38.pyc
U

/D�g���@stdZddlZddlZddlZddlZddlZddlZddl	Z	ddl
Z
ddlZzddlZWne
k
rpdZYnXddlZddlZddlZddlZddlZddlZddlmZddlZejdkr�ddlZddlZddlmZddlmZddlmZddlmZdd	lmZdd
lm Z dd�Z!d
d�Z"dd�Z#Gdd�d�Z$Gdd�dej%�Z&Gdd�de&�Z'Gdd�dej(�Z)Gdd�dej%�Z*Gdd�dej+�Z,Gdd�dej-�Z.Gdd �d �Z/Gd!d"�d"�Z0ejdk�r�Gd#d$�d$e/ej1�Z2Gd%d&�d&e/e0ej1�Z3n�ddl4Z4Gd'd(�d(e/�Z5e6e4d)��r6Gd*d+�d+e5e0ej1�Z7e6e4d,��rXGd-d.�d.e5e0ej1�Z8e6e4d/��rzGd0d1�d1e5e0ej1�Z9Gd2d$�d$e5e0ej1�Z2d3d4�Z:Gd5d6�d6ej1�Z;Gd7d8�d8ej1�Z<Gd9d:�d:ej1�Z=Gd;d<�d<ej1�Z>Gd=d>�d>�Z?Gd?d@�d@e?ej1�Z@zddlAZAWne
k
�r$YnXGdAdB�dBe?ej1�ZBGdCdD�dDej1�ZCGdEdF�dFej1�ZDeEdGk�rpe�F�dS)HzTests for events.py.�N)�mock�win32)�
coroutines)�events)�proactor_events)�selector_events)�utils)�supportcCst�d�dS�N)�asyncio�set_event_loop_policy�r
r
�</opt/cppython/lib/python3.8/test/test_asyncio/test_events.py�tearDownModule%srcCsFtj�d�rdStjdkrdSt��d}ttt|�d���}|dkS)z4Return True if the platform is Mac OS 10.4 or older.ZaixT�darwinFr�.)�
�)�sys�platform�
startswithZmac_ver�tuple�map�int�split)�versionr
r
r�broken_unix_getsockname)s
rcCs&dd�}t��}t�|�|�|��S)Nc�sdS�N�hellor
r
r
r
r�doit5sz8_test_get_event_loop_new_process__sub_proc.<locals>.doit)r�new_event_loop�set_event_loop�run_until_complete)r�loopr
r
r�*_test_get_event_loop_new_process__sub_proc4s
r$c@s,eZdZdd�Zdd�Zdd�Zdd�Zd	S)
�CoroLikecCsdSr
r
)�self�vr
r
r�send>sz
CoroLike.sendcGsdSr
r
�r&�excr
r
r�throwAszCoroLike.throwcCsdSr
r
�r&r
r
r�closeDszCoroLike.closecCsdSr
r
r,r
r
r�	__await__GszCoroLike.__await__N)�__name__�
__module__�__qualname__r(r+r-r.r
r
r
rr%=sr%c@s>eZdZdZdZddd�Zdd�Zdd�Zdd	�Zd
d�Z	dS)
�MyBaseProtoNcCs2d|_d|_d|_|dk	r.|��|_|��|_dS�N�INITIALr)�	transport�state�nbytes�
create_future�	connected�done�r&r#r
r
r�__init__Os
zMyBaseProto.__init__cCs6||_|jdkst|j��d|_|jr2|j�d�dS�Nr4�	CONNECTED�r5r6�AssertionErrorr9�
set_result�r&r5r
r
r�connection_madeWs
zMyBaseProto.connection_madecCs*|jdkst|j��|jt|�7_dS�Nr>�r6r@r7�len�r&�datar
r
r�
data_received^szMyBaseProto.data_receivedcCs|jdkst|j��d|_dS)Nr>�EOF�r6r@r,r
r
r�eof_receivedbszMyBaseProto.eof_receivedcCs0|jdkst|j��d|_|jr,|j�d�dS)N)r>rJ�CLOSED�r6r@r:rAr)r
r
r�connection_lostfszMyBaseProto.connection_lost)N)
r/r0r1r9r:r<rCrIrLrOr
r
r
rr2Ks
r2cseZdZ�fdd�Z�ZS)�MyProtocst��|�|�d�dS)Ns%GET / HTTP/1.0
Host: example.com

)�superrC�writerB��	__class__r
rrCnszMyProto.connection_made�r/r0r1rC�
__classcell__r
r
rSrrPmsrPc@s:eZdZdZddd�Zdd�Zdd�Zdd	�Zd
d�ZdS)
�MyDatagramProtoNcCs"d|_d|_|dk	r|��|_dSr3)r6r7r8r:r;r
r
rr<vszMyDatagramProto.__init__cCs$||_|jdkst|j��d|_dS)Nr4�INITIALIZED�r5r6r@rBr
r
rrC|szMyDatagramProto.connection_madecCs*|jdkst|j��|jt|�7_dS�NrXrE�r&rH�addrr
r
r�datagram_received�sz!MyDatagramProto.datagram_receivedcCs|jdkst|j��dSrZrKr)r
r
r�error_received�szMyDatagramProto.error_receivedcCs0|jdkst|j��d|_|jr,|j�d�dS)NrXrMrNr)r
r
rrO�szMyDatagramProto.connection_lost)N)	r/r0r1r:r<rCr]r^rOr
r
r
rrWss
rWc@s:eZdZdZddd�Zdd�Zdd�Zdd	�Zd
d�ZdS)
�MyReadPipeProtoNcCs*dg|_d|_d|_|dk	r&|��|_dSr3)r6r7r5r8r:r;r
r
rr<�s
zMyReadPipeProto.__init__cCs,||_|jdgkst|j��|j�d�dSr=)r5r6r@�appendrBr
r
rrC�szMyReadPipeProto.connection_madecCs.|jddgkst|j��|jt|�7_dSr=rErGr
r
rrI�szMyReadPipeProto.data_receivedcCs(|jddgkst|j��|j�d�dS)Nr4r>rJ)r6r@r`r,r
r
rrL�szMyReadPipeProto.eof_receivedcCsRd|jkr|j�d�|jdddgks0t|j��|j�d�|jrN|j�d�dS)NrJr4r>rM)r6r`r@r:rAr)r
r
rrO�s
zMyReadPipeProto.connection_lost)N)	r/r0r1r:r<rCrIrLrOr
r
r
rr_�s
r_c@s*eZdZdZddd�Zdd�Zdd�ZdS)	�MyWritePipeProtoNcCs"d|_d|_|dk	r|��|_dS)Nr4)r6r5r8r:r;r
r
rr<�szMyWritePipeProto.__init__cCs$||_|jdkst|j��d|_dSr=rYrBr
r
rrC�sz MyWritePipeProto.connection_madecCs0|jdkst|j��d|_|jr,|j�d�dS�Nr>rMrNr)r
r
rrO�sz MyWritePipeProto.connection_lost)N)r/r0r1r:r<rCrOr
r
r
rra�s
rac@s<eZdZdd�Zdd�Zdd�Zdd�Zd	d
�Zdd�Zd
S)�MySubprocessProtocolcsjd|_d|_���|_���|_�fdd�td�D�|_ddd�|_d|_t	j
�d�t	j
�d�d�|_dS)Nr4csi|]}|����qSr
)r8)�.0�fd�r#r
r�
<dictcomp>�sz1MySubprocessProtocol.__init__.<locals>.<dictcomp>�����rf)r6r5r8r9�	completed�range�disconnectsrH�
returncoder�Event�got_datar;r
rfrr<�s



�zMySubprocessProtocol.__init__cCs0||_|jdkst|j��d|_|j�d�dSr=r?rBr
r
rrC�sz$MySubprocessProtocol.connection_madecCs*|jdkst|j��d|_|j�d�dSrb)r6r@rmrAr)r
r
rrO�sz$MySubprocessProtocol.connection_lostcCs8|jdkst|j��|j||7<|j|��dSrD)r6r@rHrr�set)r&rerHr
r
r�pipe_data_received�sz'MySubprocessProtocol.pipe_data_receivedcCs>|jdkst|j��|r*|j|�|�n|j|�|�dSrD)r6r@ro�
set_exceptionrA)r&rer*r
r
r�pipe_connection_lost�sz)MySubprocessProtocol.pipe_connection_lostcCs$|jdkst|j��|j��|_dSrD)r6r@r5Zget_returncoderpr,r
r
r�process_exited�sz#MySubprocessProtocol.process_exitedN)	r/r0r1r<rCrOrtrvrwr
r
r
rrc�srccs0eZdZ�fdd�Z�fdd�Zdd�Zdd�Zd	d
�Zdd�Zd
d�Z	dd�Z
dd�Zdd�Zdd�Z
dd�Zdd�Ze�eed�d�dd��Ze�eed�d �d!d"��Ze�eed�d �d#d$��Zd�d&d'�Zd(d)�Zejd*d+��Zd%d,ifd-d.�Zd�d/d0�Zd�d1d2�Ze�e d,kd3�d4d5��Z!eje�e d,kd3�d6d7���Z"d8d9�Z#d:d;�Z$d�d<d=�Z%e�e d,kd3�d>d?��Z&d@dA�Z'e(�)dB�dCdD��Z*dEdF�Z+dGdH�Z,dIdJ�Z-e�ee.dK�dL�dMdN��Z/dOdP�Z0ejdQdR��Z1e�ee.dS�dT�dUdV��Z2d�dWdX�Z3d�dYdZ�Z4d�d[d\�Z5e�e d,kd3�d]d^��Z6eje�e d,kd3�d_d`���Z7e�e d,kd3�dadb��Z8eje�e d,kd3�dcdd���Z9e�e d,kd3�dedf��Z:eje�e d,kd3�dgdh���Z;e�e d,kd3�didj��Z<dkdl�Z=dmdn�Z>e�ej?do�dpdq��Z@drds�ZAdtdu�ZBdvdw�ZCe�ej?do�dxdy��ZDdzd{�ZEd|d}�ZFe�eGjHd~kd�d�d���ZIe�eGjHd~kd�d�d���ZJe�eGjHd~kd�d�d���ZKe�eGjHd~kd�d�d���ZLe�eGjHd~kd�d�d���ZMe�eGjHd~kd�e�Nd�d��d�d����ZOe�eGjHd~kd�e�Nd�d��d�d����ZPd�d��ZQd�d��ZRd�d��ZSd�d��ZTd�d��ZUd�d��ZV�ZWS)��EventLoopTestsMixincs$t���|��|_|�|j�dSr
)rQ�setUp�create_event_loopr#r!r,rSr
rry�s

zEventLoopTestsMixin.setUpcs4|j��st�|j�|��t��t���dSr
)	r#�	is_closed�
test_utils�run_brieflyZ
doCleanupsr	�
gc_collectrQ�tearDownr,rSr
rr�s

zEventLoopTestsMixin.tearDownc	sFdd����fdd�}��td����t�jj|��W5QRXdS)Nc�st�d�IdHdS�Nr)r�sleepr
r
r
r�coro1�szBEventLoopTestsMixin.test_run_until_complete_nesting.<locals>.coro1c�s"���j����j����dSr
)�
assertTruer#�
is_runningr"r
�r�r&r
r�coro2szBEventLoopTestsMixin.test_run_until_complete_nesting.<locals>.coro2zcoroutine \S+ was never awaited)ZassertWarnsRegex�RuntimeWarning�assertRaises�RuntimeErrorr#r")r&r�r
r�r�test_run_until_complete_nesting�s��z3EventLoopTestsMixin.test_run_until_complete_nestingcCsR|j��}|j�t�d��|j��}|�d||ko@dkn||�dS)N皙�����?g{�G�z�?g�������?)r#�timer"rr�r�)r&�t0�t1r
r
r�test_run_until_completes

z+EventLoopTestsMixin.test_run_until_completecs(�fdd�}|�}��t�jj|�dS)Nc�s�j��t�d�IdHdS)Nr�)r#�stoprr�r
r,r
r�cbs
z?EventLoopTestsMixin.test_run_until_complete_stopped.<locals>.cb)r�r�r#r")r&r�Ztaskr
r,r�test_run_until_complete_stoppeds�z3EventLoopTestsMixin.test_run_until_complete_stoppedcs>g���fdd�}�j�d|d��j�����dg�dS)Ncs��|��j��dSr
�r`r#r���arg��resultsr&r
r�callback!s
z5EventLoopTestsMixin.test_call_later.<locals>.callbackr�zhello world)r#�
call_later�run_forever�assertEqual�r&r�r
r�r�test_call_laters

z#EventLoopTestsMixin.test_call_latercs>g���fdd�}�j�|dd��j�����dg�dS)Ncs��||f��j��dSr
r�)Zarg1Zarg2r�r
rr�,sz4EventLoopTestsMixin.test_call_soon.<locals>.callbackr�world)rr�)r#�	call_soonr�r�r�r
r�r�test_call_soon)s

z"EventLoopTestsMixin.test_call_soonc	s�g�t�����fdd�����fdd�}���tj|d�}|�����j��d��j��W5QRX|����	�ddg�dS)Ncs$��|�t��dkr �j��dS�Nrl�r`rFr#r�r�r�r
rr�8s
z?EventLoopTestsMixin.test_call_soon_threadsafe.<locals>.callbackcs�j��d����dSr)r#�call_soon_threadsafe�releaser
)r��lockr&r
r�
run_in_thread=szDEventLoopTestsMixin.test_call_soon_threadsafe.<locals>.run_in_thread��targetr�r)
�	threading�Lock�acquire�Thread�startr#r�r��joinr�)r&r��tr
)r�r�r�r&r�test_call_soon_threadsafe4sz-EventLoopTestsMixin.test_call_soon_threadsafecsLg���fdd�}�j�|d��j�|d��j�����ddg�dS)Ncs$��|�t��dkr �j��dSr�r�r�r�r
rr�Ns
zKEventLoopTestsMixin.test_call_soon_threadsafe_same_thread.<locals>.callbackrr�)r#r�r�r�r�r�r
r�r�%test_call_soon_threadsafe_same_threadKs
z9EventLoopTestsMixin.test_call_soon_threadsafe_same_threadcCsHdd�}|j�d|d�}|j�|�\}}|�|d�|�|t���dS)NcSs|t��fSr
)r��	get_identr�r
r
r�runYsz5EventLoopTestsMixin.test_run_in_executor.<locals>.runZyo)r#�run_in_executorr"r�ZassertNotEqualr�r�)r&r��f2�resZ	thread_idr
r
r�test_run_in_executorXs
z(EventLoopTestsMixin.test_run_in_executorcs`d��fdd�}dd�}|j�d|�}|��|j��||j_||j_t�d�|���dS)NFcsd�dS�NTr
��args�Zcalledr
r�patched_call_sooncszJEventLoopTestsMixin.test_run_in_executor_cancel.<locals>.patched_call_sooncSst�d�dS)Ng�������?)r�r�r
r
r
rr�gsz<EventLoopTestsMixin.test_run_in_executor_cancel.<locals>.rung�������?)	r#r��cancelr-r�r�r�r��assertFalse)r&r�r�r�r
r�r�test_run_in_executor_cancel`s

z/EventLoopTestsMixin.test_run_in_executor_cancelcs�t��\�}��d�t�����fdd�}�j����|��j�|jd�t	�
�j�fdd���j�|jd�t	�
�j�fdd���j�|j��j��jj��j�
����d	�dS)
NFcsXz��d�}Wntk
r$YdSX|r6��|�n���j���������dS�N�)�recv�BlockingIOError�extendr�r#�
remove_reader�filenor-�rH��
bytes_read�rr&r
r�readerwsz8EventLoopTestsMixin.test_reader_callback.<locals>.readersabccst��dkS)Nrh�rFr
�r�r
r�<lambda>�riz:EventLoopTestsMixin.test_reader_callback.<locals>.<lambda>sdefcst��dkS)N�r�r
r�r
rr��risabcdef)�socket�
socketpair�setblocking�	bytearrayr#�
add_readerr�r�r(r|�	run_untilr-r�r�r�)r&�wr�r
r�r�test_reader_callbackrs


z(EventLoopTestsMixin.test_reader_callbackcs�t��\}���d���fdd�}d}�j����||��j�����j��������	�j��������
�|�t|�d�}|�
���
||�dS)NFcs��|��j��dSr
)r(r#r�r��r&r�r
r�writer�s
z8EventLoopTestsMixin.test_writer_callback.<locals>.writersxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxrl)r�r�r�r#�
add_writerr�r�r��
remove_writerr�r-r�rFr�)r&r�r�rH�readr
r�r�test_writer_callback�s

z(EventLoopTestsMixin.test_writer_callback�SIGKILLz
No SIGKILLcsXd��fdd�}|�t|jjd|�|�t|jjd�|�t|jjtjd|�|�t|jjtjd�|�t|jjd|�|�t|jjd�|�t|jjd|�|�t|jjd�|�t|jjtj	|�|�
|j�tj	��|j�tj|�t�
t��tj�t�|j�fdd��|�|j�tj��|�t�tj�tj�|�
|j�tj��dS)	Nrcs�d7�dS�Nrkr
r
��caughtr
r�
my_handler�sz?EventLoopTestsMixin.test_add_signal_handler.<locals>.my_handlerZboomrk���cs�Sr
r
r
r�r
rr��riz=EventLoopTestsMixin.test_add_signal_handler.<locals>.<lambda>)r��	TypeErrorr#�add_signal_handler�remove_signal_handler�
ValueError�signal�NSIGr�r�r��SIGINT�os�kill�getpidr|r�r�r��	getsignal�default_int_handler�r&r�r
r�r�test_add_signal_handler�sz����������z+EventLoopTestsMixin.test_add_signal_handler�SIGALRMz
No SIGALRMcs^d���fdd�}�j�tj|�t�tjdd��j�d�jj��j����	�d�dS)Nrcs�d7��j��dSr�)r#r�r
�r�r&r
rr��szLEventLoopTestsMixin.test_signal_handling_while_selecting.<locals>.my_handler�{�G�z�?�<rk�
r#r�r�r��	setitimer�ITIMER_REALr�r�r�r�r�r
r�r�$test_signal_handling_while_selecting�s
z8EventLoopTestsMixin.test_signal_handling_while_selectingcsjd�d����fdd�}�jjtj|f���t�tjdd��j�d�jj��j����	�d�dS)N)�*rcs"�d7���|���j��dSr�)r�r#r�r��r�r&Z	some_argsr
rr��szAEventLoopTestsMixin.test_signal_handling_args.<locals>.my_handlerr�r�rkr�r�r
r�r�test_signal_handling_args�s
z-EventLoopTestsMixin.test_signal_handling_argsTcCsv|j�|�\}}|�|tj�|�|tj�|�|j|�|rN|�|�	d��|j�|j
�|�|jd�|�
�dS)N�socknamer)r#r"�assertIsInstancer�	Transport�Protocol�assertIsr5�assertIsNotNone�get_extra_infor:�
assertGreaterr7r-)r&�connection_fut�check_sockname�tr�prr
r
r�_basetest_create_connection�sz/EventLoopTestsMixin._basetest_create_connectionc	s>t���,}�jj�fdd�f|j��}��|�W5QRXdS)Ncst�jd�S�Nrf�rPr#r
r,r
rr��riz<EventLoopTestsMixin.test_create_connection.<locals>.<lambda>)r|�run_test_serverr#�create_connection�addressr	)r&�httpd�conn_futr
r,r�test_create_connection�s

��z*EventLoopTestsMixin.test_create_connectionc	sDt�}t���*}�j��fdd�|j�}��||�W5QRXdS)Ncst�jd�Sr
rr
r,r
rr�
rizAEventLoopTestsMixin.test_create_unix_connection.<locals>.<lambda>)rr|�run_test_unix_serverr#�create_unix_connectionrr	)r&rrrr
r,r�test_create_unix_connections

�z/EventLoopTestsMixin.test_create_unix_connectionNcCs|r|�|�d��|r,|�||�d��n|�|�d��|�||�d��|�d�}|�|t�|�t|�d|�|�|dt�|�|dt�|�|dt�|�d	�}|�|�|�|��|�d
��|�|�	�|�d��|�|�
�|�d��|�|��|�d
��dS)Nr��peername�peercert�cipherrhrrkrlZ
ssl_object�compression)rrr�r�rrF�strrrrZgetpeercert)r&�clientrrrrZsslobjr
r
r�check_ssl_extra_info
s<��



�
�
�
�z(EventLoopTestsMixin.check_ssl_extra_infocCsx|j�|�\}}|�|tj�|�|tj�|�d|jj�	�k�|�
|||�|j�|j�|�|j
d�|��dS)N�sslr)r#r"r�rr�rr�rTr/�lowerrr:rr7r-)r&rrrrrr
r
r�_basetest_create_ssl_connection-sz3EventLoopTestsMixin._basetest_create_ssl_connectionc	
s�|t��d�}��|||�ttd�r�tjjfdddd��fdd�}tjd|d��,}|dd�}��|||���	|j
d	�W5QRX��tj��2}|dd�}t�
����|||�W5QRXW5QRX��	|jjd
�dS)N�r�Purpose)�cafile�capath�cadatacs��|tjj�t��S)z�
                A ssl.create_default_context() replacement that doesn't enable
                cert validation.
                )r�rr �SERVER_AUTHr|�dummy_ssl_context)Zpurposer!r"r#r,r
r�_dummy_ssl_create_contextAszREventLoopTestsMixin._test_create_ssl_connection.<locals>._dummy_ssl_create_contextzssl.create_default_context)�side_effectTrkZCERTIFICATE_VERIFY_FAILED)r|r%r�hasattrrr r$r�patchr�Z
call_countr��SSLError�disable_logger�	exception�reason)	r&rr
rrrr&�m�cmr
r,r�_test_create_ssl_connection9s4�
��
�

�z/EventLoopTestsMixin._test_create_ssl_connectionz
No ssl modulec	sNtjdd��8}tj�jj�fdd�f|j��}�j|||jd�W5QRXdS)NT�Zuse_sslcst�jd�Sr
rr
r,r
rr�criz@EventLoopTestsMixin.test_create_ssl_connection.<locals>.<lambda>�r)r|r�	functools�partialr#r
rr0)r&rr
r
r,r�test_create_ssl_connection^s
���z.EventLoopTestsMixin.test_create_ssl_connectionc	sXt�}tjdd��:}tj�jj�fdd�|jdd�}�j||||jd�W5QRXdS)NTr1cst�jd�Sr
rr
r,r
rr�rrizEEventLoopTestsMixin.test_create_ssl_unix_connection.<locals>.<lambda>�	127.0.0.1)�server_hostnamer2)	rr|rr3r4r#rrr0)r&rrr
r
r,r�test_create_ssl_unix_connectionhs
��z3EventLoopTestsMixin.test_create_ssl_unix_connectionc	s�t���n}t��}�jj�fdd�f|j�d|jd|fi�}�j�|�\}}|j�	d�d}��
||�|��W5QRXdS)Ncst�jd�Sr
rr
r,r
rr�}rizGEventLoopTestsMixin.test_create_connection_local_addr.<locals>.<lambda>�
local_addrrr�rk)r|rr	�find_unused_portr#r
rr"r5rr�r-)r&r�port�frrZexpectedr
r,r�!test_create_connection_local_addrys

���z5EventLoopTestsMixin.test_create_connection_local_addrc
s�t���t}�jj�fdd�f|j�d|ji�}��t��}�j�|�W5QRX��|j	j
t
j���t
|j�|j	j�W5QRXdS)Ncst�jd�Sr
rr
r,r
rr��rizNEventLoopTestsMixin.test_create_connection_local_addr_in_use.<locals>.<lambda>r9)r|rr#r
rr��OSErrorr"r�r,�errno�
EADDRINUSE�assertInr�strerror)r&rr<r/r
r,r�(test_create_connection_local_addr_in_use�s

���z<EventLoopTestsMixin.test_create_connection_local_addr_in_usec	s|j�G��fdd�dt�}tjddd�}|���d�d�d�����fdd	�}tj|d
d�}|��|��\}}|�d����_��	�j
�fd
d�||d������j�
�|�
�tj|dd�|�|���|��jd�|��jt���|����dS)Ncs,eZdZ��fdd�Z��fdd�Z�ZS)zAEventLoopTestsMixin.test_connect_accepted_socket.<locals>.MyProtocst��|����j�dSr
)rQrOr�r�r))rTr#r
rrO�szQEventLoopTestsMixin.test_connect_accepted_socket.<locals>.MyProto.connection_lostcst��|�|j���dSr
)rQrIr5rRrG)rT�expected_responser
rrI�szOEventLoopTestsMixin.test_connect_accepted_socket.<locals>.MyProto.data_received)r/r0r1rOrIrVr
)rDr#rSrrP�srP�r6rrk)�backlogs	test datasrogerc
svzDt��}�dk	r��|�}|���|���|�d��|��Wn,tk
rp}ztd|�W5d}~XYnXdS)N�cz8Failure in client thread in test_connect_accepted_socket)r�Zwrap_socket�connect�sendallr�r-�	Exception�print)Zcsockr*)r\�
client_ssl�message�responser
rr�s



�z@EventLoopTestsMixin.test_connect_accepted_socket.<locals>.clientT)r��daemonrfcs�Sr
r
r
��protor
rr��rizBEventLoopTestsMixin.test_connect_accepted_socket.<locals>.<lambda>r��timeoutrM)r#r2r��
create_server�getsocknamer�r�r��acceptr"�connect_accepted_socketr�r5r-r	�join_threadr��is_aliver�r6r7rF)	r&Z
server_sslrLrPZlsockr�thread�conn�_r
)r\rLrDr#rMrQrNr�test_connect_accepted_socket�s8


��
z0EventLoopTestsMixin.test_connect_accepted_socketcCsLtjdkr,tjdkr,t|jtj�r,t�d��t	�
�}t	��}|�||�dS)Nr)rhrz=SSL not supported with proactor event loops before Python 3.5)
rr�version_info�
isinstancer#rZBaseProactorEventLoop�unittest�SkipTestr|Zsimple_server_sslcontextZsimple_client_sslcontextr])r&Zserver_contextZclient_contextr
r
r� test_ssl_connect_accepted_socket�s
���z4EventLoopTestsMixin.test_ssl_connect_accepted_socketc	CsNt��}|�|j�|jjt|dd�}|�td��|j�|�W5QRXdS)Nrk)Zssl_handshake_timeoutz1ssl_handshake_timeout is only meaningful with ssl)	r��
addCleanupr-r#rWrP�assertRaisesRegexr�r")r&�sock�coror
r
r�9test_connect_accepted_socket_ssl_timeout_for_plain_socket�s��zMEventLoopTestsMixin.test_connect_accepted_socket_ssl_timeout_for_plain_socketzasyncio.base_events.socketc	s��fdd����fdd�}t|�}�tjkrDdd�|D�|��j_ndd�|D�|��j_|�j_t���j_	t���j_
�j��fdd	�|d
�}�j�|�}��
|j�dd�|jD�}��||�dS)
Nc�s>�tjkr �tjdd||ffgS�tjdd||ddffgSdS)Nr��r)r��AF_INET�SOCK_STREAM)�hostr;r��kw)�familyr
r�getaddrinfo�s
zEEventLoopTestsMixin.create_server_multiple_hosts.<locals>.getaddrinfocs�j��||��Sr
)r#�create_task)r��kwds)rnr&r
r�getaddrinfo_task�szJEventLoopTestsMixin.create_server_multiple_hosts.<locals>.getaddrinfo_taskcSsg|]}|df�qS)�Pr
�rdrkr
r
r�
<listcomp>�szDEventLoopTestsMixin.create_server_multiple_hosts.<locals>.<listcomp>cSsg|]}|dddf�qS)rrrr
rsr
r
rrt�scs
t�j�Sr
rr
r,r
rr��rizBEventLoopTestsMixin.create_server_multiple_hosts.<locals>.<lambda>rrcSsh|]}|��d�qS)r)�
getsockbyname)rdrer
r
r�	<setcomp>�szCEventLoopTestsMixin.create_server_multiple_hosts.<locals>.<setcomp>)rsr�rirur'r#rnr�MockZ_start_serving�
_stop_servingrTr"rcr-�socketsr�)	r&rmZhostsZ	mock_sockrqZunique_hostsr<�serverZserver_hostsr
)rmrnr&r�create_server_multiple_hosts�s$
��z0EventLoopTestsMixin.create_server_multiple_hostscCs|�tjdddg�dS)Nz1.2.3.4z5.6.7.8)r{r�rir,r
r
r�&test_create_server_multiple_hosts_ipv4�s�z:EventLoopTestsMixin.test_create_server_multiple_hosts_ipv4cCs|�tjdddg�dS)N�::1z::2)r{r��AF_INET6r,r
r
r�&test_create_server_multiple_hosts_ipv6�s�z:EventLoopTestsMixin.test_create_server_multiple_hosts_ipv6cs&t|j��|j��fdd�dd�}|j�|�}|�t|j�d�|jd}|��\}}|�|d�t��}|�	d|f�|�
d�|j��j�|�d�j�t
�|j�fd	d��|�d
�j�|��j�d��|�d�j�d�d��j��|j��j�|�d
�j�|��|��dS)Ncs�Sr
r
r
rPr
rr�riz8EventLoopTestsMixin.test_create_server.<locals>.<lambda>�0.0.0.0rrkr6�xxxr>cs
�jdkSr��r7r
rPr
rr�rirhr�rrM)rPr#rTr"r�rFryrUr�rHrIr9r6r|r�r7rr5rr-r:�r&r<rzrerkr;rr
rPr�test_create_servers.


�
z&EventLoopTestsMixin.test_create_server�SO_REUSEPORTzNo SO_REUSEPORTcs�t|j��|j��fdd�dd�}|j�|�}|�t|j�d�|jd}|�|�t	j
t	j��|��t
�|j�t|j��|jj�fdd�dddd�}|j�|�}|�t|j�d�|jd}|�|�t	j
t	j��|��dS)	Ncs�Sr
r
r
rPr
rr�)rizCEventLoopTestsMixin.test_create_server_reuse_port.<locals>.<lambda>r�rrkcs�Sr
r
r
rPr
rr�6riT)�
reuse_port)rPr#rTr"r�rFryr��
getsockoptr��
SOL_SOCKETr�r-r|r}r�)r&r<rzrer
rPr�test_create_server_reuse_port%sD

�
��

�
��z1EventLoopTestsMixin.test_create_server_reuse_portcs@t���|��fdd��|jj|�f|�}|j�|�}|�fS)Ncstj���ot���Sr
)r��path�exists�unlinkr
�r�r
rr�Ariz7EventLoopTestsMixin._make_unix_server.<locals>.<lambda>)r|Zgen_unix_socket_pathrcr#�create_unix_serverr")r&�factory�kwargsr<rzr
r�r�_make_unix_server?s
z%EventLoopTestsMixin._make_unix_servercs�t|jd��|��fdd��\}}|�t|j�d�t�tj�}|�|�|�	d�|j�
�j�|�d�j�t
�|j�fdd��|�d�j��j��|j�
�j�|�d	�j�|��|��dS)
Nrfcs�Sr
r
r
rPr
rr�Kriz=EventLoopTestsMixin.test_create_unix_server.<locals>.<lambda>rkr�r>cs
�jdkSr�r�r
rPr
rr�TrirhrM)rPr#r�r�rFryr��AF_UNIXrHrIr"r9r6r|r�r7r5r-r:)r&rzr�rr
rPr�test_create_unix_serverHs


z+EventLoopTestsMixin.test_create_unix_serverr�zNo UNIX Socketsc
sft|jd��t��}|�D|jj�fdd�d|d�}|�td��|j�|�W5QRXW5QRXdS)Nrfcs�Sr
r
r
rPr
rr�irizOEventLoopTestsMixin.test_create_unix_server_path_socket_error.<locals>.<lambda>z/test�rez3path and sock can not be specified at the same time)rPr#r�r�rdr�r")r&rer<r
rPr�)test_create_unix_server_path_socket_errords�z=EventLoopTestsMixin.test_create_unix_server_path_socket_errorcCs,t�tj�}|jtjO_|�||�|Sr
)r�
SSLContextZPROTOCOL_TLS_SERVER�options�OP_NO_SSLv2Zload_cert_chain)r&�certfile�keyfile�
sslcontextr
r
r�_create_ssl_contextosz'EventLoopTestsMixin._create_ssl_contextc
CsX|�||�}|jj|dd|d�}|j�|�}|jd}|��\}}	|�|d�|||	fS)Nr6rr)r�r#rTr"ryrUr�)
r&r�r�r�r�r<rzrerkr;r
r
r�_make_ssl_serverus
z$EventLoopTestsMixin._make_ssl_servercCs|�||�}|j||d�S)Nr)r�r�)r&r�r�r�r�r
r
r�_make_ssl_unix_server�sz)EventLoopTestsMixin._make_ssl_unix_servercs�t|jd��|��fdd�tjtj�\}}}|jjt||t��d�}|j�	|�\}}|�
d�|j�	�j�|�d�j
�t�|j�fdd��|�d�j�|j|||fd	��j��|j�	�j�|�d
�j
�|��|��dS)Nrfcs�Sr
r
r
rPr
rr��riz<EventLoopTestsMixin.test_create_server_ssl.<locals>.<lambda>rr�r>cs
�jdkSr�r�r
rPr
rr��rirhr2rM)rPr#r�r|�ONLYCERT�ONLYKEYr
r2r%r"rRr9r�r6r�r7rr5r-r:)r&rzrkr;�f_crrr
rPr�test_create_server_ssl�s*
�
�

z*EventLoopTestsMixin.test_create_server_sslcs�t|jd��|��fdd�tjtj�\}}|jjt|t��dd�}|j�	|�\}}|�
d�|j�	�j�|�d�j
�t�|j�fdd��|�d	�j��j��|j�	�j�|�d
�j
�|��|��dS)Nrfcs�Sr
r
r
rPr
rr��rizAEventLoopTestsMixin.test_create_unix_server_ssl.<locals>.<lambda>rh�rr7r�r>cs
�jdkSr�r�r
rPr
rr��rirhrM)rPr#r�r|r�r�rr2r%r"rRr9r�r6r�r7r5r-r:)r&rzr�r�rrr
rPr�test_create_unix_server_ssl�s.
��

z/EventLoopTestsMixin.test_create_unix_server_sslcs�t|jd��|��fdd�tj�\}}}t�tj�}|jtj	O_tj
|_t|d�r\d|_
|jjt|||d�}tj�|jd��Lt���,|�tjd��|j�|�W5QRXW5QRXt�|j�W5QRX|��j�|��dS)	Nrfcs�Sr
r
r
rPr
rr��rizJEventLoopTestsMixin.test_create_server_ssl_verify_failed.<locals>.<lambda>�check_hostnameTr�call_exception_handler�(?i)certificate.verify.failed)rPr#r�r|�SIGNED_CERTFILErr��PROTOCOL_TLS_CLIENTr�r��
CERT_REQUIRED�verify_moder(r�r
rr)�objectr+rdr*r"r}�assertIsNoner5r-�r&rzrkr;�sslcontext_clientr�r
rPr�$test_create_server_ssl_verify_failed�s,
�

�
� z8EventLoopTestsMixin.test_create_server_ssl_verify_failedcs�t|jd��|��fdd�tj�\}}t�tj�}|jtj	O_tj
|_t|d�rZd|_
|jjt||dd�}tj�|jd��Lt���,|�tjd	��|j�|�W5QRXW5QRXt�|j�W5QRX|��j�|��dS)
Nrfcs�Sr
r
r
rPr
rr��rizOEventLoopTestsMixin.test_create_unix_server_ssl_verify_failed.<locals>.<lambda>r�T�invalidr�r�r�)rPr#r�r|r�rr�r�r�r�r�r�r(r�rrr)r�r+rdr*r"r}r�r5r-)r&rzr�r�r�r
rPr�)test_create_unix_server_ssl_verify_failed�s.
�

�
� z=EventLoopTestsMixin.test_create_unix_server_ssl_verify_failedcs�t|jd��|��fdd�tj�\}}}t�tj�}|jtj	O_tj
|_|jtj
d�t|d�rjd|_|jjt|||d�}tj�|jd��@t���,|�tjd	��|j�|�W5QRXW5QRXW5QRX|��j�|��dS)
Nrfcs�Sr
r
r
rPr
rr�rizIEventLoopTestsMixin.test_create_server_ssl_match_failed.<locals>.<lambda>�r!r�Trr�z=IP address mismatch, certificate is not valid for '127.0.0.1')rPr#r�r|r�rr�r�r�r�r�r��load_verify_locations�
SIGNING_CAr(r�r
rr)r�r+rdZCertificateErrorr"r�r5r-r�r
rPr�#test_create_server_ssl_match_failed�s2
�
�
�
�*z7EventLoopTestsMixin.test_create_server_ssl_match_failedcs�t|jd��|��fdd�tj�\}}t�tj�}|jtj	O_tj
|_|jtj
d�t|d�rhd|_|jjt||dd�}|j�|�\}}|j��j��j��|��|��|j��j�dS)	Nrfcs�Sr
r
r
rPr
rr�!rizJEventLoopTestsMixin.test_create_unix_server_ssl_verified.<locals>.<lambda>r�r�T�	localhostr�)rPr#r�r|r�rr�r�r�r�r�r�r�r�r(r�rr"r9r5r-r:)r&rzr�r�r�rrr
rPr�$test_create_unix_server_ssl_verifieds*
�

�
z8EventLoopTestsMixin.test_create_unix_server_ssl_verifiedcs�t|jd��|��fdd�tj�\}}}t�tj�}|jtj	O_tj
|_|jtj
d�t|d�rjd|_|jjt|||dd�}|j�|�\}}|j��j�|j|||ftjd	��j��|��|��|j��j�dS)
Nrfcs�Sr
r
r
rPr
rr�;rizEEventLoopTestsMixin.test_create_server_ssl_verified.<locals>.<lambda>r�r�Tr�r�)rr)rPr#r�r|r�rr�r�r�r�r�r�r�r�r(r�r
r"r9rZPEERCERTr5r-r:)r&rzrkr;r�r�rrr
rPr�test_create_server_ssl_verified7s0
�

��
z3EventLoopTestsMixin.test_create_server_ssl_verifiedc	s�|j���G�fdd�dt�}t�d�}|jj||d�}|j�|�}|jd}|�|��|���|�	�\}}|�|d�t��}|�
d|f�|�d�|��|��dS)	NcseZdZ��fdd�Z�ZS)z@EventLoopTestsMixin.test_create_server_sock.<locals>.TestMyProtocst��|���|�dSr
�rQrCrArB)rTrQr
rrCYszPEventLoopTestsMixin.test_create_server_sock.<locals>.TestMyProto.connection_maderUr
rPrSr�TestMyProtoXsr��r�rr�rr�r6r�)
r#r8rPr�rTr"ryr�r�rUrHr(r-)	r&r��sock_obr<rzrerkr;rr
rPr�test_create_server_sockUs



z+EventLoopTestsMixin.test_create_server_sockc	Cs�t�d�}|jjt|d�}|j�|�}|jd}|��\}}|jjt||d�}|�t��}|j�|�W5QRX|�	|j
jtj�|�
�dS)Nr�r�r�rkr;)r�rTr#rPr"ryrUr�r>r�r,r?r@r-)r&r�r<rzrerkr;r/r
r
r�test_create_server_addr_in_usels

z2EventLoopTestsMixin.test_create_server_addr_in_usezIPv6 not supported or enabledc	
s6|j���G�fdd�dt�}d}z*t��}|jj|d|d�}|j�|�}Wq�tk
r�}z0|jtj	kr�|d7}|�
d|�WY�
q"n�W5d}~XYq"Xq�q"t��}|�d|f�|�
d�|j���}|j��|��|j���t�tj�}|�d	|f�|�
d�|j���}|j��|��|��dS)
NcseZdZ��fdd�Z�ZS)zFEventLoopTestsMixin.test_create_server_dual_stack.<locals>.TestMyProtocst��|���|�dSr
r�rB)rT�f_protor
rrC�szVEventLoopTestsMixin.test_create_server_dual_stack.<locals>.TestMyProto.connection_maderUr
�r�rSrr�sr�rr�rkrr6r�r})r#r8rPr	r:rTr"r>r?r@ZassertGreaterEqualr�rHr(r5r-r~)	r&r�Z	try_countr;r<rz�exrrQr
r�r�test_create_server_dual_stack{s8






z1EventLoopTestsMixin.test_create_server_dual_stackcCs�|j�tdd�}|j�|�}|jd}|��\}}t��}|�d|f�|�d�|�	�|�	�t��}|�
t|jd|f�|�	�dS)Nr�rr6r�)r#rTrPr"ryrUr�rHr(r-r��ConnectionRefusedErrorr�r
r
r�test_server_close�s 

�z%EventLoopTestsMixin.test_server_closec
s�G�fdd�dt�}�jj|||d�}�j�|�\}�|�d�}t�|tjtjB�\}}��	|t
j���	�|���d�j
����j|��jj�fdd�||fd�}�j�|�\}	���	|	t
j���	�t���d�j
����j|	�|	�d	�t��j�fd
d����d�j�t��j�fdd����d
�j���|	�d��|	���j��j���d�j
��j��dS)Ncs*eZdZ��fdd�Z�fdd�Z�ZS)zOEventLoopTestsMixin._test_create_datagram_endpoint.<locals>.TestMyDatagramProtocst�j�jd�dSr
)rQr<r#)Z
inner_self)rTr&r
rr<�szXEventLoopTestsMixin._test_create_datagram_endpoint.<locals>.TestMyDatagramProto.__init__cs$t��||�|j�d||�dS)Nsresp:)rQr]r5�sendtor[rSr
rr]�szaEventLoopTestsMixin._test_create_datagram_endpoint.<locals>.TestMyDatagramProto.datagram_received)r/r0r1r<r]rVr
r,rSr�TestMyDatagramProto�sr�)r9rmr�rXcst�jd�Sr
�rWr#r
r,r
rr��rizDEventLoopTestsMixin._test_create_datagram_endpoint.<locals>.<lambda>)Zremote_addrr�cs�jSr
r�r
)rzr
rr��rirhcs�jSr
r�r
)rr
rr��ri�rM)rWr#�create_datagram_endpointr"rr��getnameinfo�NI_NUMERICHOST�NI_NUMERICSERVr�rr�r�r6rr5r�r|r�r7rr-r:)
r&r9rmr�rfZs_transportr�rkr;r5r
)rr&rzr�_test_create_datagram_endpoint�sF�

�
�
z2EventLoopTestsMixin._test_create_datagram_endpointcCs|�dtj�dS)NrE)r�r�rir,r
r
r�test_create_datagram_endpoint�sz1EventLoopTestsMixin.test_create_datagram_endpointcCs|�dtj�dS)N)r}r)r�r�r~r,r
r
r�"test_create_datagram_endpoint_ipv6�sz6EventLoopTestsMixin.test_create_datagram_endpoint_ipv6cs�d}d}�j��jj|dtji��}|D]H\}}}}}z(tj|||d�}|�d�|�|�WnYq(Xq~q(ds~td���jj�fdd�|d�}	�j�|	�\}
}��	|
t
j���	|t�|
�
��j�|j�dS)	NrE�type)rmr�rQFzCan not create socket.cst�jd�Sr
r�r
r,r
rr�rizHEventLoopTestsMixin.test_create_datagram_endpoint_sock.<locals>.<lambda>r�)r#r"rnr��
SOCK_DGRAMr��bindr@r�r�rr�rWr-r:)r&reZ
local_addressZinfosrmr�rQZcnamerr<rrr
r,r�"test_create_datagram_endpoint_sock�s6���

�z6EventLoopTestsMixin.test_create_datagram_endpoint_sockcCsf|��}t|tj�s&|��|�d�|�d|j�|��|�d|j�|�|j	�|�|j
�dS)Nz#loop is not a BaseSelectorEventLooprkr)rzr_rZBaseSelectorEventLoopr-ZskipTestr�Z
_internal_fdsr�Z_csockZ_ssockr;r
r
r�test_internal_fdss
z%EventLoopTestsMixin.test_internal_fdsrzDon't support pipes for Windowscs�t�jd��t��\}}t�|dd�����fdd�}�j�|��t�|d�t�	�j�fdd����
d	�j�t�|d
�t�	�j�fdd����
dd
g�j���
d�j�t�
|��j��j���
dd
ddg�j����j�d��dS)Nrf�rbr�c�s^�j��fdd���IdH\}}��|����|�j���ddg�j���d�j�dS)Ncs�Sr
r
r
rPr
rr�rizEEventLoopTestsMixin.test_read_pipe.<locals>.connect.<locals>.<lambda>r4r>r�r#�connect_read_piperr5r�r6r7�r��p��pipeobjrQr&r
rrHs
�z3EventLoopTestsMixin.test_read_pipe.<locals>.connect�1cs
�jdkSr�r�r
rPr
rr�&riz4EventLoopTestsMixin.test_read_pipe.<locals>.<lambda>rk�2345cs
�jdkS�Nrr�r
rPr
rr�*rir4r>rrJrM�pipe)r_r#r�r��io�openr"rRr|r�r�r7r6r-r:rr5r)r&�rpipe�wpiperHr
r�r�test_read_pipes&

�z"EventLoopTestsMixin.test_read_pipecs�|���t�d��t�d��t��\}}t�|dd��t�|dd�������fdd�}��|��\}}���|�	dt
|��|�	dt
|��������d|_d|_dS)Nrfr�r�r�c�sD���fdd���IdH\}}���fdd���IdH\}}||fS)Ncs�Sr
r
r
��
read_protor
rr�CrizSEventLoopTestsMixin.test_unclosed_pipe_transport.<locals>.connect.<locals>.<lambda>cs�Sr
r
r
��write_protor
rr�Eri)r��connect_write_pipe)�read_transportr\�write_transport�r#r�ZrpipeobjZwpipeobjr�r
rrHAs
�
�zAEventLoopTestsMixin.test_unclosed_pipe_transport.<locals>.connectr�)rzr_rar�r�r�r�r"r-rA�reprZ_pipe)r&r�r�rHr�r�r
r�r�test_unclosed_pipe_transport5s

z0EventLoopTestsMixin.test_unclosed_pipe_transportcst�jd��t��\}}t�|dd�����fdd�}�j�|��t�|d�t�	�j�fdd����
d	�j�t�|d
�t�	�j�fdd����
dd
g�j���
d�j�t�
|��j�
��j��j���
dd
ddg�j����j�d��dS)Nrfr�rc�s^�j��fdd���IdH\}}��|����|�j���ddg�j���d�j�dS)Ncs�Sr
r
r
rPr
rr�`rizKEventLoopTestsMixin.test_read_pty_output.<locals>.connect.<locals>.<lambda>r4r>rr�r��Zmaster_read_objrQr&r
rrH_s�z9EventLoopTestsMixin.test_read_pty_output.<locals>.connectr�cs�jSr
r�r
rPr
rr�jriz:EventLoopTestsMixin.test_read_pty_output.<locals>.<lambda>rkr�cs
�jdkSr�r�r
rPr
rr�nrir4r>rrJrMr�)r_r#r��openptyr�r�r"rRr|r�r�r7r6r-r5r:rr)r&�master�slaverHr
r�r�test_read_pty_outputWs(


�z(EventLoopTestsMixin.test_read_pty_outputcs6t��\�}t�|dd�}t|jd��|j��fdd�|�}|j�|�\}}|�|��|�|�j	�|�
d�j�|�d�t
���fdd	��t�|j��fd
d��|�
d��|�d�t�|j��fdd��|�
d
��|�
d�j�t���|��j	�d���j	��|j��j�|�
d�j�dS)N�wbr�rfcs�Sr
r
r
rPr
rr��riz5EventLoopTestsMixin.test_write_pipe.<locals>.<lambda>r>r�cst��d�}||7}t|�Sr��r�r�rF�rH�chunk)r�r
rr��sz3EventLoopTestsMixin.test_write_pipe.<locals>.readercs���dkSr�r
r
�rHr�r
rr��rir�cs���dkSr�r
r
r�r
rr��ri�12345r�rM)r�r�r�r�rar#r�r"rr5r�r6rRr�r|r�r-rrr:)r&r�r�rHr5r�r
)rHrQr�r�r�test_write_pipezs,



z#EventLoopTestsMixin.test_write_pipecs�t��\}}|�d�t�|��dd�}t|jd��|j��fdd�|�}|j�	|�\}}|�
|��|�
|�j�|�d�j
�|�d�|j�	|j�|d��}|�d|�|��|j�	�j�|�d	�j
�dS)
NFr�r�rfcs�Sr
r
r
rPr
rr��rizIEventLoopTestsMixin.test_write_pipe_disconnect_on_close.<locals>.<lambda>r>r�rM)r�r�r�r�r��detachrar#r�r"rr5r�r6rR�	sock_recvr-r:)r&ZrsockZwsockr�rHr5r�rHr
rPr�#test_write_pipe_disconnect_on_close�s

z7EventLoopTestsMixin.test_write_pipe_disconnect_on_closerr�cs>t��\�}t�|dd�}t|jd��|j��fdd�|�}|j�|�\}}|�|��|�|�j	�|�
d�j�|�d�t
���fdd	��tj|j��fd
d�dd�|�
d��|�d
�tj|j��fdd�dd�|�
d��|�
d�j�t���|��j	�d���j	��|j��j�|�
d�j�dS)Nr�rrfcs�Sr
r
r
rPr
rr��riz4EventLoopTestsMixin.test_write_pty.<locals>.<lambda>r>r�cst��d�}||7}t|�Sr�r�r��r�r
rr��sz2EventLoopTestsMixin.test_write_pty.<locals>.readercs���dkSr�r
r
r�r
rr��rirrRr�cs���dkSr�r
r
r�r
rr��rir�r�rM)r�r�r�r�rar#r�r"rr5r�r6rRr�r|r�r-rrr:)r&r��slave_write_objrHr5r�r
)rHr�rQr�r�test_write_pty�s4
�
�

z"EventLoopTestsMixin.test_write_ptyc
s�t��\�}t�|�}t�|�t�|dd�}t|jd��|j�	�fdd�|�}|j�
|�\}}|�|��|�|�j�|�
ddg�j�|�
d�j�t�|dd�}t|jd��|j��fd	d�|�}|j�
|�\}	}|�|��|�|	�j�|�
d�j�t���fd
d��|	�d�tj|j��fd
d�dd�|�
d��|�
ddg�j�|�
d�j�t��d�tj|j�fdd�dd�|�
ddg�j�|�
d�j�|�
d�j�|	�d�tj|j��fdd�dd�|�
d��|�
ddg�j�|�
d�j�t��d�tj|j�fdd�dd�|�
ddg�j�|�
d�j�|�
d�j�t���|��|j�
�j�|�
ddddg�j�|	��|j�
�j�|�
d�j�dS)Nr�rrfcs�Sr
r
r
r�r
rr��riz<EventLoopTestsMixin.test_bidirectional_pty.<locals>.<lambda>r4r>r�cs�Sr
r
r
r�r
rr��ricst��d�}||7}t|�Sr�r�r�rr
rr�sz:EventLoopTestsMixin.test_bidirectional_pty.<locals>.readerr�cs���dkSr�r
r
r�r
rr�	rirrR�acs
�jdkSr�r�r
r�r
rr�rirkr�cs���dkSr�r
r
r�r
rr�rir�sbcdecs
�jdkSr�r�r
r�r
rr�rirrJrM)r�r��dup�ttyZsetrawr�r�r_r#r�r"rr5r�r6r7rar�r�rRr|r�r-r:)
r&Z
read_slaveZwrite_slaveZslave_read_objZread_connectr�r�rZ
write_connectr�r
)rHr�r�r�r�r�test_bidirectional_pty�st

��
�
�

�z*EventLoopTestsMixin.test_bidirectional_ptycs�t��\}}|�d��j��j�|d���t�dd�}|dk	rL��|j���fdd�}t	�
�}�j�|��}�j��t	�
�|}��|d���
|��d���tj�j�|dk	rƈ�|j��j�|�|��|��dS)NFrk�ovc�sRz@z�j��j��IdHWntjk
r8d}YnXd}W5�j��X|S)N�	cancelled)r#r�r�r�r�CancelledError)r��r<r&r
r�main5s
z:EventLoopTestsMixin.test_prompt_cancellation.<locals>.mainr�r)r�r�r�r#ror��getattrr��pendingr��	monotonicr�Z
assertLessr��resultr�rr	r�rxr-)r&r�r�rrr�r��elapsedr
r
r�test_prompt_cancellation-s&

z,EventLoopTestsMixin.test_prompt_cancellationcsh��fdd�}�jj�d�j_|�j_�fdd�}�j�|�����jjd�jj�jjjjd��dS)Ncs�jjd7_��dSr�)r#�_run_once_counterr
�Z
orig_run_oncer&r
r�	_run_onceQsz<EventLoopTestsMixin.test_timeout_rounding.<locals>._run_oncerc�sZ�j}t�d�IdHt�d�IdHt�d�IdHt�d�IdHt�d�IdHdS)Nr�g-C��6?g���ư>g:�0�yE>g�����|�=)r#rr�rfr,r
r�waitYsz7EventLoopTestsMixin.test_timeout_rounding.<locals>.wait�)Zclock_resolution�selector)	r#rrr"ZassertLessEqualZ_clock_resolution�	_selectorrTr/)r&rrr
rr�test_timeout_roundingPs
��z)EventLoopTestsMixin.test_timeout_roundingcCsx|��}dd�}t��\}}|�|j�|�|j�|�||�|�||�|��|�|�|��|�|�	|��dS)NcSsdSr
r
r
r
r
rr�lrizCEventLoopTestsMixin.test_remove_fds_after_closing.<locals>.<lambda>)
rzr�r�rcr-r�r�r�r�r��r&r#r�r�r�r
r
r�test_remove_fds_after_closingjsz1EventLoopTestsMixin.test_remove_fds_after_closingc	Cs�|��}dd�}t��\}}|�|j�|�|j�|��|�t��|�||�W5QRX|�t��|�||�W5QRXdS)NcSsdSr
r
r
r
r
rr�xriz@EventLoopTestsMixin.test_add_fds_after_closing.<locals>.<lambda>)	rzr�r�rcr-r�r�r�r�rr
r
r�test_add_fds_after_closingvsz.EventLoopTestsMixin.test_add_fds_after_closingc	s<�fdd�}|�j�}��t���j�|�W5QRXdS)Nc�s�j��dSr
)r#r-rfr,r
r�
close_loop�szEEventLoopTestsMixin.test_close_running_event_loop.<locals>.close_loop)r#r�r�r")r&rrfr
r,r�test_close_running_event_loop�s
z1EventLoopTestsMixin.test_close_running_event_loopc	Cs�|j��dd�}dd�}|�}|�|j�|�t��|j��W5QRX|�t��|j��}|j�|�W5QRX|�t��|j�|�W5QRX|�t��|j�	|�W5QRX|�t��|j�
d|�W5QRX|�t��|j�|j��d|�W5QRX|�t��|j�
|�W5QRX|�t��|j�tj|�W5QRX|�t�� |j�d|���}t|�W5QRXdS)Nc�sdSr
r
r
r
r
r�test�sz,EventLoopTestsMixin.test_close.<locals>.testcSsdS�NFr
r
r
r
rr��riz0EventLoopTestsMixin.test_close.<locals>.<lambda>g�?g)r#r-rcr�r�r�r8r"r�r�r��call_atr�ror�r��SIGTERMr�r.�next)r&r�funcrfZfut�itr
r
r�
test_close�s2

"zEventLoopTestsMixin.test_close)T)TN)TN)NN)N)N)N)Xr/r0r1ryrr�r�r�r�r�r�r�r�r�r�r�r`�
skipUnlessr(r�r�r�r�r	rr	Zskip_unless_bind_unix_socketrrrr0�skipIfrr5r8r=rCr]rbrgrr)r{r|rr�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�ZIPV6_ENABLEDr�r�r�r�r�r�r�rrr�r�r�r�r��requires_mac_verrrrrrrrr&rVr
r
rSrrx�s�		

+




�
!�

�
%
	

6


$
	










(0
�
 �
 �
!�
%�
�
'�
D#rxc@s�eZdZdd�Zdd�Zdd�Zdd�Zd	d
�Zdd�Zd
d�Z	dd�Z
dd�Ze�
ejdkd�dd��Zdd�Zdd�Zdd�Zdd�Zdd �Zd!d"�Zd#S)$�SubprocessTestsMixincCs,tjdkr|�|t�n|�tj|�dS�Nr)rrr�rr�r�r"�r&rpr
r
r�check_terminated�s
z%SubprocessTestsMixin.check_terminatedcCs,tjdkr|�|t�n|�tj|�dSr+)rrr�rr�r�r�r,r
r
r�check_killed�s
z!SubprocessTestsMixin.check_killedc
Cs�tj�tj�t�d�}|j�t�t	|j�t
j|�}|�t
���|j�|�\}}|�|t	�|j�|j�|�d|j�|�d�}|�d�|j�|jd���t���|��W5QRX|j�|j�|�|j�|�d|jd�W5QRXdS)N�echo.pyr>r�Python The Winnerrk)r�r�r��dirname�__file__r#�subprocess_execr3r4rcr�
executable�assertWarns�DeprecationWarningr"r�r9r�r6�get_pipe_transportrRrrrr|r+r-rmr.rprH�r&�progrH�transprQ�stdinr
r
r�test_subprocess_exec�s&�


z)SubprocessTestsMixin.test_subprocess_execc
Cs6tj�tj�t�d�}|j�t�t	|j�t
j|�}|�t
���|j�|�\}}|�|t	�|j�|j�|�d|j�|�d�}|�d�|j�|jd���|jd��|�d|jd�|�d�|j�|jd���|�d|jd�t���|��W5QRX|j�|j�|�|j�W5QRXdS)Nr/r>rsPython rks
The Winnerr0)r�r�r�r1r2r#r3r3r4rcrr4r5r6r"r�r9r�r6r7rRrrr�clearrHr|r+r-rmr.rpr8r
r
r�test_subprocess_interactive�s.�



z0SubprocessTestsMixin.test_subprocess_interactivec	Cs�|�t���|j�t�t|j�d�}|j�|�\}}|�|t�|j�|j	�|�
d���|j�|j�|�
d|j�|�tdd�|j��D���|�
|jd�d�d�|�
|jdd	�|��W5QRXdS)
Nzecho Pythonrcss|]}|��VqdSr
)r:)rdr<r
r
r�	<genexpr>�sz=SubprocessTestsMixin.test_subprocess_shell.<locals>.<genexpr>rks
sPythonrlri)r5r6r#�subprocess_shellr3r4rcr"r�r9r7r-rmr�rpr��allro�valuesrH�rstrip�r&rHr:rQr
r
r�test_subprocess_shell�s�z*SubprocessTestsMixin.test_subprocess_shellc	Csz|jjt�t|j�ddddd�}|�t��|j�|�\}}W5QRX|�|t�|j�|j	�|�
d|j�|��dS)N�exit 7�r;�stdout�stderr�)
r#r@r3r4rcr5r6r"r�rmr�rpr-rDr
r
r�test_subprocess_exitcodes�z-SubprocessTestsMixin.test_subprocess_exitcodec	Cs�|jjt�t|j�ddddd�}|�t��|j�|�\}}W5QRX|�|t�|�	|�
d��|�	|�
d��|�	|�
d��|j�|j�|�d|j
�|�	|���dS)NrFrGrrkrlrJ)r#r@r3r4rcr5r6r"r�r�r7rmr�rpr-rDr
r
r�"test_subprocess_close_after_finish
s �z7SubprocessTestsMixin.test_subprocess_close_after_finishc	Cs�tj�tj�t�d�}|j�t�t	|j�t
j|�}|�t
��Z|j�|�\}}|�|t	�|j�|j�|��|j�|j�|�|j�|��W5QRXdS�Nr/)r�r�r�r1r2r#r3r3r4rcrr4r5r6r"r�r9r�rmr.rpr-�r&r9rHr:rQr
r
r�test_subprocess_kills�z)SubprocessTestsMixin.test_subprocess_killc	Cs�tj�tj�t�d�}|j�t�t	|j�t
j|�}|�t
��Z|j�|�\}}|�|t	�|j�|j�|��|j�|j�|�|j�|��W5QRXdSrM)r�r�r�r1r2r#r3r3r4rcrr4r5r6r"r�r9�	terminatermr-rpr-rNr
r
r�test_subprocess_terminate,s�z.SubprocessTestsMixin.test_subprocess_terminaterzDon't have SIGHUPc
Cs�t�tjtj�}z�tj�tj�t�d�}|j�	t
�t|j�t
j|�}|�t��d|j�|�\}}|�|t�|j�|j�|�tj�|j�|j�|�tj|j�|��W5QRXW5t�tj|�XdSrM)r��SIGHUP�SIG_DFLr�r�r�r1r2r#r3r3r4rcrr4r5r6r"r�r9�send_signalrmr�rpr-)r&Zold_handlerr9rHr:rQr
r
r�test_subprocess_send_signal=s"�z0SubprocessTestsMixin.test_subprocess_send_signalc	Cs�tj�tj�t�d�}|j�t�t	|j�t
j|�}|�t
���|j�|�\}}|�|t	�|j�|j�|�d�}|�d�|j�|j�|��|�d|jd�|�|jd�d�|jd�|�d|j�W5QRXdS)N�echo2.pyr�test�OUT:testrkrlsERR:test)r�r�r�r1r2r#r3r3r4rcrr4r5r6r"r�r9r7rRrmr-r�rHr�rrpr8r
r
r�test_subprocess_stderrVs"�

z+SubprocessTestsMixin.test_subprocess_stderrc	Cstj�tj�t�d�}|jjt�t	|j�t
j|tj
d�}|�t���|j�|�\}}|�|t	�|j�|j�|�d�}|�|�d��|�|�d��|�d�|j�|j�|�|jd�d�|jd�|�d|jd�|��|�d|j�W5QRXdS)	NrV)rIrrkrlrWsOUT:testERR:testri)r�r�r�r1r2r#r3r3r4rcrr4�
subprocess�STDOUTr5r6r"r�r9r7rr�rRrmr�rHrr�r-rpr8r
r
r�)test_subprocess_stderr_redirect_to_stdoutls,�

�z>SubprocessTestsMixin.test_subprocess_stderr_redirect_to_stdoutc
Cs`tj�tj�t�d�}|j�t�t	|j�t
j|�}|�t
���|j�|�\}}|�|t	�|j�|j�|�d�}|�d�}|�d�|j�|jd���|�d|jd�|��|j�|jd�|�d�|j�|jd���t
jdk�r
|�d	|jd�n|�d
|jd�t���|��W5QRX|j�|j�|�|j�W5QRXdS)Nzecho3.pyrrkrWrXr�rlrsERR:BrokenPipeErrorsERR:OSError)r�r�r�r1r2r#r3r3r4rcrr4r5r6r"r�r9r7rRrrrr�rHr-rorr|r+rmr.rp)r&r9rHr:rQr;rHr
r
r�#test_subprocess_close_client_stream�s4�




z8SubprocessTestsMixin.test_subprocess_close_client_streamccs`|jjt�t|j�dddddd�}|j�|�V\}}|�|t�|j�|j�|�d|j	�dS)NrFT)r;rHrI�start_new_sessionrJ)
r#r@r3r4rcr"r�rmr�rp)r&rHr\rQr
r
r�"test_subprocess_wait_no_same_group�s�z7SubprocessTestsMixin.test_subprocess_wait_no_same_groupc	s��fdd�}��t���j�|dd��W5QRX��t���j�|dd��W5QRX��t���j�|dd��W5QRXdS)Nc�s�jjtjdf|�IdHdS�N�pwd)r#r3r�SubprocessProtocol)rpr,r
rrH�s��zGSubprocessTestsMixin.test_subprocess_exec_invalid_args.<locals>.connectT��universal_newlines���bufsize��shell�r�r�r#r"�r&rHr
r,r�!test_subprocess_exec_invalid_args�sz6SubprocessTestsMixin.test_subprocess_exec_invalid_argsc	s�d�fdd�	}��t���j�|ddg��W5QRX��t���j�|dd��W5QRX��t���j�|dd��W5QRX��t���j�|d	d
��W5QRXdS)Nc�s&|sd}�jjtj|f|�IdHdSr`)r#r@rrb)�cmdrpr,r
rrH�s��zHSubprocessTestsMixin.test_subprocess_shell_invalid_args.<locals>.connectZlsz-lTrcrerfFrh)Nrjrkr
r,r�"test_subprocess_shell_invalid_args�sz7SubprocessTestsMixin.test_subprocess_shell_invalid_argsN)r/r0r1r-r.r<r>rErKrLrOrQr`r(rrrUrYr\r]r_rlrnr
r
r
rr*�s"
"
r*c@seZdZdd�ZdS)�SelectEventLoopTestscCst��Sr
)r�SelectorEventLoopr,r
r
rrz�s�&SelectEventLoopTests.create_event_loopN�r/r0r1rzr
r
r
rro�sroc@s<eZdZdd�Zdd�Zdd�Zdd�Zd	d
�Zdd�Zd
S)�ProactorEventLoopTestscCst��Sr
)rZProactorEventLoopr,r
r
rrz�sz(ProactorEventLoopTests.create_event_loopcCst�d��dS�Nz(IocpEventLoop does not have add_reader()�r`rar,r
r
rr��sz+ProactorEventLoopTests.test_reader_callbackcCst�d��dSrtrur,r
r
r�test_reader_callback_cancel�sz2ProactorEventLoopTests.test_reader_callback_cancelcCst�d��dS�Nz(IocpEventLoop does not have add_writer()rur,r
r
rr��sz+ProactorEventLoopTests.test_writer_callbackcCst�d��dSrwrur,r
r
r�test_writer_callback_cancel�sz2ProactorEventLoopTests.test_writer_callback_cancelcCst�d��dSrtrur,r
r
rr�sz4ProactorEventLoopTests.test_remove_fds_after_closingN)	r/r0r1rzr�rvr�rxrr
r
r
rrs�srscs(eZdZ�fdd�Z�fdd�Z�ZS)�UnixEventLoopTestsMixincs,t���t��}|�|j�t�|�dSr
)rQryr�SafeChildWatcher�attach_loopr#�set_child_watcher�r&ZwatcherrSr
rry�s
zUnixEventLoopTestsMixin.setUpcst�d�t���dSr
)rr|rQrr,rSr
rr�s
z UnixEventLoopTestsMixin.tearDown)r/r0r1ryrrVr
r
rSrry�sry�KqueueSelectorcs\eZdZdd�Ze�dd�e�ej	�
d�d��fdd���Ze�dd��fd	d
��Z�Z
S)�KqueueEventLoopTestscCst�t���Sr
)rrp�	selectorsr~r,r
r
rrzs�z&KqueueEventLoopTests.create_event_loopr�	Zopenbsdztest hangs on OpenBSDcst���dSr
)rQr�r,rSr
rr�	sz)KqueueEventLoopTests.test_read_pty_outputcst���dSr
)rQrr,rSr
rrsz#KqueueEventLoopTests.test_write_pty)r/r0r1rzr	r)r`r(rrrr�rrVr
r
rSrr�s
�
r�
EpollSelectorc@seZdZdd�ZdS)�EPollEventLoopTestscCst�t���Sr
)rrpr�r�r,r
r
rrzsz%EPollEventLoopTests.create_event_loopNrrr
r
r
rr�sr��PollSelectorc@seZdZdd�ZdS)�PollEventLoopTestscCst�t���Sr
)rrpr�r�r,r
r
rrz$sz$PollEventLoopTests.create_event_loopNrrr
r
r
rr� sr�c@seZdZdd�ZdS)rocCst�t���Sr
)rrpr��SelectSelectorr,r
r
rrz,srqNrrr
r
r
rro(scOsdSr
r
)r�r�r
r
r�noop0sr�csheZdZ�fdd�Zdd�Zdd�Zdd�Zd	d
�Zdd�Zd
d�Z	e
�ee
jd�d�dd��Z�ZS)�HandleTestscs"t���t��|_d|jj_dSr�)rQryrrwr#�	get_debug�return_valuer,rSr
rry6s

zHandleTests.setUpcCs`dd�}d}t�|||j�}|�|j|�|�|j|�|�|���|��|�	|���dS)NcWs|Sr
r
r�r
r
rr�<sz)HandleTests.test_handle.<locals>.callbackr
)
r�Handler#r�	_callback�_argsr�rr�r�)r&r�r��hr
r
r�test_handle;szHandleTests.test_handlecCs\dd�}t��|_t��|j_t�|d|j�}|��|jj�t�	d�tj
||jd��dS)NcSs
t��dSr
)r�r
r
r
rr�Isz:HandleTests.test_callback_with_exception.<locals>.callbackr
zException in callback.*)rMr,�handleZsource_traceback)rrwr#r�rr�Z_run�assert_called_withr|ZMockPattern�ANY�_source_traceback)r&r�r�r
r
r�test_callback_with_exceptionHs
�z(HandleTests.test_callback_with_exceptioncCs(t��}t�dd�d|j�}||d<dS)NcSsdSr
r
r
r
r
rr�[riz1HandleTests.test_handle_weakref.<locals>.<lambda>r
r�)�weakref�WeakValueDictionaryrr�r#)r&Zwdr�r
r
r�test_handle_weakrefYszHandleTests.test_handle_weakrefc	Cs�d|jj_t�td|j�}t�t�\}}|�t	|�d||f�|�
�|�t	|�d�|�t��t�
t�}W5QRXt�|d|j�}|�t	|�d||f�t�tdd�}t�|d	|j�}d
t�|�|f}|�t	|�|�tjtdd�}t�|d|j�}d
t�|�|f}|�t	|�|�tjdk�r�tj}t�|�}t�|�\}}t�|d|j�}d}d|}d|t�|�|f}|�t	|�|�dS)NFrjz<Handle noop(1, 2) at %s:%s>z<Handle cancelled>r
z<Handle noop() at %s:%s>rkrl)rhz%^<Handle noop\(1, 2\)\(3\) at %s:%s>$)�x)rlrhz'^<Handle noop\(x=1\)\(2, 3\) at %s:%s>$)rh�z*<function HandleTests.test_handle_repr .*>z%functools.partialmethod\(%s, , \)\(\)z^<Handle %s at %s:%s>$)r#r�r�rr�r�r|�get_function_sourcer�r�r�r5r6�	coroutiner3r4�re�escapeZassertRegexrr^r��test_handle_repr�
partialmethod)r&r��filename�linenor�Zregex�methodZcb_regexr
r
rr�^sV

��
�
����
�zHandleTests.test_handle_reprcCs�d|jj_t}t��jd}t�t	d|j�}t
�t	�\}}|�t
|�d||||f�|��|�t
|�d||||f�|��|�t
|�d||||f�dS)NTrkrjz-<Handle noop(1, 2) at %s:%s created at %s:%s>z7<Handle cancelled noop(1, 2) at %s:%s created at %s:%s>)r#r�r�r2r�	_getframe�f_linenorr�r�r|r�r�r�r��r&Zcreate_filenameZ
create_linenor�r�r�r
r
r�test_handle_repr_debug�s0


��
��
��z"HandleTests.test_handle_repr_debugcs|t����}|�d���|��fdd�}|�t�}||�|�t�}||�|�dt�}||�|�dt�}||�dS)NTcsBt�d�jd}��|jt���|jddd�t|df�dS)Nrkr�rh�test_handle_source_traceback)rr�r�r�r��listr�r2)r�r�r,r
r�check_source_traceback�s��zHHandleTests.test_handle_source_traceback.<locals>.check_source_tracebackr)	r�get_event_loop_policyr �	set_debugr!r�r�r�r�)r&r#r�r�r
r,rr��s

	

z(HandleTests.test_handle_source_traceback�	CoroutinezNo collections.abc.CoroutinecCs�t�}d|_|�t�|��|�t�|�d�d|_|�t�|�d�d|_	|�t�|�d�d|_|_|�t�|�d�t�}d|_|�t�|�d	�t�}d|_d|_
|�t�|�d�dS)
NZAAAzAAA()ZBBBzBBB()Tz
BBB() runningz%<CoroLike without __name__>() runningr%z
CoroLike())r%r/r�rZiscoroutiner�rZ_format_coroutiner1�
cr_running�cr_code)r&rfr
r
r�+test_coroutine_like_object_debug_formatting�s&�z7HandleTests.test_coroutine_like_object_debug_formatting)r/r0r1ryr�r�r�r�r�r�r`r'r(�collections�abcr�rVr
r
rSrr�4s
2�r�csLeZdZ�fdd�Zdd�Zdd�Zdd�Zd	d
�Zdd�Zd
d�Z	�Z
S)�
TimerTestscst���t��|_dSr
)rQryrrwr#r,rSr
rry�s
zTimerTests.setUpcCs8t��}t�|dd�dt���}|�t|�t|��dS)NcSsdSr r
r
r
r
rr��riz&TimerTests.test_hash.<locals>.<lambda>r
)r�rr�TimerHandlerrwr��hash�r&�whenr�r
r
r�	test_hash�s
�zTimerTests.test_hashcCs4t��}t�|dd�dt���}|�||���dS)NcSsdSr r
r
r
r
rr��riz&TimerTests.test_when.<locals>.<lambda>r
)r�rrr�rrwr�r�r�r
r
r�	test_when�s
�zTimerTests.test_whencCs�dd�}d}t��}t�|||t���}|�|j|�|�|j|�|�	|�
��|��|�|�
��|�
|j�|�
|j�|�ttjd|||j�dS)NcWs|Sr
r
r�r
r
rr��sz'TimerTests.test_timer.<locals>.callback)rkrlrh)r�rrr�rrwrr�r�r�rr�r�r�r�r@r#)r&r�r�r�r�r
r
r�
test_timer�s$�zTimerTests.test_timercCsVd|jj_t�dtd|j�}t�t�}|�t	|�d|�|�
�|�t	|�d�dS)NF�{r
z&<TimerHandle when=123 noop() at %s:%s>z <TimerHandle cancelled when=123>)r#r�r�rr�r�r|r�r�r�r�)r&r��srcr
r
r�test_timer_repr	s


�
�zTimerTests.test_timer_reprcCs�d|jj_t}t��jd}t�dt	d|j�}t
�t	�\}}|�t
|�d||||f�|��|�t
|�d||||f�dS)NTrkr�r
z7<TimerHandle when=123 noop() at %s:%s created at %s:%s>zA<TimerHandle cancelled when=123 noop() at %s:%s created at %s:%s>)r#r�r�r2rr�r�rr�r�r|r�r�r�r�r�r
r
r�test_timer_repr_debug	s 


��

��z TimerTests.test_timer_repr_debugcCs�dd�}t��}t�||d|j�}t�||d|j�}|�||k�|�||k�|�||k�|�||k�|�||k�|�||k�|�||k�|�||k�|�||k�|�||k�|��|�||k�t�||d|j�}t�|d|d|j�}|�||k�|�||k�|�||k�|�||k�|�||k�|�||k�|�||k�|�||k�|�||k�|�||k�t�|d|j�}|�	t
|�|��|�	t
|�|��dS)NcWs|Sr
r
r�r
r
rr�5	sz2TimerTests.test_timer_comparison.<locals>.callbackr
g$@)
r�rrr�r#r�r�r�r�r�NotImplemented�__eq__�__ne__)r&r�r�Zh1Zh2Zh3r
r
r�test_timer_comparison4	s>z TimerTests.test_timer_comparison)r/r0r1ryr�r�r�r�r�r�rVr
r
rSrr��sr�c@seZdZdd�Zdd�ZdS)�AbstractEventLoopTestscCs�t��}t��}|�t|j�|�t|jd�|�t|j�|�t|j	�|�t|j
�|�t|j�|�t|jd�|�t|j
dd�|�t|j||�|�t|jd�|�t|j�|�t|jd�|�t|j|�|�t|jd|�|�t|jd�|�t|jd|�|�t|jd�|�t|jd|�|�t|jd�|�t|jd�|�t|j|�|�t|j|�|�t|j|�|�t|j�|�t|j|�dSr�)rrwr�AbstractEventLoopr��NotImplementedErrorr�r"r�r�r{r-ror�r!r�r�r�Zset_default_executorr�r�r�r�r�r�Zset_exception_handlerZdefault_exception_handlerr�r�r�)r&r<r#r
r
r�test_not_implemented_	s��������������������������z+AbstractEventLoopTests.test_not_implementedcs,�fdd�}t��}|�|��|��dS)Nc	�s�t��}t��}��t��|�||�IdHW5QRX��t��|�dd�IdHW5QRX��t��|�d�IdHW5QRX��t��|�	|�IdHW5QRX��t��|�
|�IdHW5QRX��t��|�|�IdHW5QRX��t��|�|d�IdHW5QRX��t��|�
|d�IdHW5QRX��t��|�|d�IdHW5QRX��t��|�||�IdHW5QRX��t��|�|�IdHW5QRX��t��|�||�IdHW5QRX��t��|�||�IdHW5QRX��t��|�|tjj�IdHW5QRX��t��|�|tjj�IdHW5QRX��t��|�|tj�IdHW5QRX��t��|�|�IdHW5QRXdS)Nr��)r�r�r)rrwrr�r�r�r�rnr�r
rTr�r�Zsock_recv_intoZsock_sendallZsock_connectZsock_acceptZ
sock_sendfile�sendfiler��sentinelr�r�r@r3)r<r#r,r
r�inner�	sH  z@AbstractEventLoopTests.test_not_implemented_async.<locals>.inner)rr r"r-)r&r�r#r
r,r�test_not_implemented_async�	s'z1AbstractEventLoopTests.test_not_implemented_asyncN)r/r0r1r�r�r
r
r
rr�]	s6r�c@s^eZdZdd�Zdd�Zdd�Zdd�Ze�d	�d
d��Z	dd
�Z
dd�Zdd�Zdd�Z
dS)�PolicyTestscCsZt��}|�t|j�|�t|jt��|�t|j�|�t|j�|�t|j	t��dSr
)
r�AbstractEventLoopPolicyr�r��get_event_loopr!r�r Zget_child_watcherr|�r&�policyr
r
r�test_event_loop_policy�	s
�z"PolicyTests.test_event_loop_policycCsXt��}|�|jj�|��}|�|tj�|�|jj|�|�||���|�	�dSr
)
r�DefaultEventLoopPolicyr��_localZ_loopr�r�r�rr-�r&r�r#r
r
r�test_get_event_loop�	szPolicyTests.test_get_event_loopc	CsFt��}tjj|d|jd��}|��}|�|�W5QRX|��dS)Nr!)�wraps)	rr�rr)r�r!r�r�r-)r&r�Zm_set_event_loopr#r
r
r�(test_get_event_loop_calls_set_event_loop�	s�z4PolicyTests.test_get_event_loop_calls_set_event_loopcCs$t��}|�d�|�t|j�dSr
)rr�r!r�r�r�r�r
r
r�"test_get_event_loop_after_set_none�	s
z.PolicyTests.test_get_event_loop_after_set_nonez'asyncio.events.threading.current_threadcs,�fdd�}tj|d�}|��|��dS)Ncst��}��t|j�dSr
)rr�r�r�r�)r�r,r
rr<�	sz1PolicyTests.test_get_event_loop_thread.<locals>.fr�)r�r�r�r�)r&Zm_current_threadr<�thr
r,r�test_get_event_loop_thread�	sz&PolicyTests.test_get_event_loop_threadcCs*t��}|��}|�|tj�|��dSr
)rr�r r�r�r-r�r
r
r�test_new_event_loop�	szPolicyTests.test_new_event_loopcCsht��}|��}|�t|jt��|��}|�|�|�||���|�	||���|�
�|�
�dSr
)rr�r�r�r@r!r�r r�assertIsNotr-)r&r�Zold_loopr#r
r
r�test_set_event_loop
s
zPolicyTests.test_set_event_loopcCs*t��}|�|tj�|�|t���dSr
)rr�r�r�rr�r
r
r�test_get_event_loop_policy
sz&PolicyTests.test_get_event_loop_policycCsL|�ttjt��t��}t��}t�|�|�|t���|�||�dSr
)	r�r@rrr�r�r�rr�)r&�
old_policyr�r
r
r�test_set_event_loop_policy
s�
z&PolicyTests.test_set_event_loop_policyN)r/r0r1r�r�r�r�rr)r�r�r�r�r�r
r
r
rr��	s	


r�csReZdZdZdZdZdZ�fdd�Z�fdd�Ze	j
dkrBdd�Zd	d
�Z�Z
S)�GetEventLoopTestsMixinNcs�tj|_tj|_tj|_tj|_t	|�j
t_t	|�jt_t	|�jt_t	|�j
t_t	|�j
t_t	|�jt_t	|�jt_t	|�j
t_t���t��|_t�|j�tjdkr�t��}|�|j�t�|�dSr+)r�_get_running_loop�_get_running_loop_saved�_set_running_loop�_set_running_loop_saved�get_running_loop�get_running_loop_savedr��get_event_loop_savedr��_get_running_loop_impl�_set_running_loop_impl�get_running_loop_impl�get_event_loop_implrrQryr r#r!rrrzr{r|r}rSr
rry%
s&


zGetEventLoopTestsMixin.setUpc	s~z"t
jdkrt�d�t���W5|j��t�d�|jt_|jt_|j	t_
|jt_|jt_|jt_|j	t_
|jt_XdSr+)r#r-rr!r�rr�r�r�r�r�r�r�rrr|rQrr,rSr
rr?
s



zGetEventLoopTestsMixin.tearDownrcs.t���fdd�}���j�|��d�dS)Nc�s*tj��}�j�|t�IdH}|��|Sr
)�
concurrent�futures�ProcessPoolExecutorr#r�r$�shutdown)�poolrr,r
rr[
s
�
zDGetEventLoopTestsMixin.test_get_event_loop_new_process.<locals>.mainr)r	Z*skip_if_broken_multiprocessing_synchronizer�r#r")r&rr
r,r�test_get_event_loop_new_processU
s�z6GetEventLoopTestsMixin.test_get_event_loop_new_processc	s�Gdd�dt��G�fdd�dtj�}t��}�zt�|��t��������t��W5QRXt�	d������t��W5QRX��
td����t�
�d�W5QRX��t��d���fdd�}��|��t�	�������t��W5QRXt�	d������t��W5QRXW5t�|��dk	�rN���X��
td����t�
�d�W5QRX��t��d�dS)Nc@seZdZdS)zRGetEventLoopTestsMixin.test_get_event_loop_returns_running_loop.<locals>.TestErrorN)r/r0r1r
r
r
r�	TestErrorg
sr�cseZdZ�fdd�ZdS)zOGetEventLoopTestsMixin.test_get_event_loop_returns_running_loop.<locals>.Policycs��dSr
r
r,�r�r
rr�k
sz^GetEventLoopTestsMixin.test_get_event_loop_returns_running_loop.<locals>.Policy.get_event_loopN)r/r0r1r�r
r�r
r�Policyj
sr�z
no runningc�s4��t������t������t����dSr
)rrr�r�r�r
)r#r&r
rr$}
szMGetEventLoopTestsMixin.test_get_event_loop_returns_running_loop.<locals>.func)rJrr�r�rr-r r�r�r!rdr�rr�r�r")r&r�r�r$r
)r�r#r&r�(test_get_event_loop_returns_running_loopf
s8





z?GetEventLoopTestsMixin.test_get_event_loop_returns_running_loop)r/r0r1r�r�r�r�ryrrrr�r�rVr
r
rSrr�
s
r�c@s$eZdZejZejZejZ	ej
ZdS)�TestPyGetEventLoopN)r/r0r1rZ_py__get_running_loopr�Z_py__set_running_loopr�Z_py_get_running_loopr�Z_py_get_event_loopr�r
r
r
rr��
sr�c@s$eZdZejZejZejZ	ej
ZdS)�TestCGetEventLoopN)r/r0r1rZ_c__get_running_loopr�Z_c__set_running_loopr�Z_c_get_running_loopr�Z_c_get_event_loopr�r
r
r
rr��
sr�c@seZdZdd�ZdS)�
TestServercsbt��}|�|j�t|��|�|��fdd�dd��}|�|��|�|��|�|�	��dS)Ncs�Sr
r
r
rPr
rr��
riz*TestServer.test_get_loop.<locals>.<lambda>r�r)
rr rcr-rPr"rTr��get_loop�wait_closed)r&r#rzr
rPr�
test_get_loop�
szTestServer.test_get_loopN)r/r0r1r�r
r
r
rr��
sr�c@s$eZdZdd�Zdd�Zdd�ZdS)�TestAbstractServerc	Cs&|�t��t����W5QRXdSr
)r�r�r�AbstractServerr-r,r
r
rr&�
szTestAbstractServer.test_closec	Cs@t��}|�|j�|�t��|�t���	��W5QRXdSr
)
rr rcr-r�r�r"rr�r�r;r
r
r�test_wait_closed�
sz#TestAbstractServer.test_wait_closedc	Cs&|�t��t����W5QRXdSr
)r�r�rr�r�r,r
r
rr��
sz TestAbstractServer.test_get_loopN)r/r0r1r&r�r�r
r
r
rr��
sr��__main__)G�__doc__�collections.abcr��concurrent.futuresr�r3r�r�rr�r�r�r�ImportErrorrZrr�r�r?r`rr�rrrrrrZtest.test_asynciorr|rr	rrr$r%rr2rPZDatagramProtocolrWr_ZBaseProtocolrarbrcrxr*ZTestCaserorsr�ryr(rr�r�r�r�r�r�r�r�r�Z_asyncior�r�r�r/rr
r
r
r�<module>s�

	" )M%������6tf[y