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.opt-2.pyc
U

/D�g���@spddlZddlZddlZddlZddlZddlZddlZddl	Z	ddl
Z
zddlZWnek
rldZYnXddl
Z
ddlZddlZddlZddlZddlZddlmZddlZejdkr�ddlZddlZddlmZddlmZddlmZddlmZddlmZdd	lmZd
d�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!�Z/ejdk�r�Gd"d#�d#e.ej0�Z1Gd$d%�d%e.e/ej0�Z2n�ddl3Z3Gd&d'�d'e.�Z4e5e3d(��r2Gd)d*�d*e4e/ej0�Z6e5e3d+��rTGd,d-�d-e4e/ej0�Z7e5e3d.��rvGd/d0�d0e4e/ej0�Z8Gd1d#�d#e4e/ej0�Z1d2d3�Z9Gd4d5�d5ej0�Z:Gd6d7�d7ej0�Z;Gd8d9�d9ej0�Z<Gd:d;�d;ej0�Z=Gd<d=�d=�Z>Gd>d?�d?e>ej0�Z?zddl@Z@Wnek
�r YnXGd@dA�dAe>ej0�ZAGdBdC�dCej0�ZBGdDdE�dEej0�ZCeDdFk�rle�E�dS)G�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)NZaixT�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__cCs"||_d|_|jr|j�d�dS�N�	CONNECTED�r5r6r9�
set_result�r&r5r
r
r�connection_madeWszMyBaseProto.connection_madecCs|jt|�7_dSr
�r7�len�r&�datar
r
r�
data_received^szMyBaseProto.data_receivedcCs
d|_dS�N�EOF)r6r,r
r
r�eof_receivedbszMyBaseProto.eof_receivedcCsd|_|jr|j�d�dS�N�CLOSED�r6r:r@r)r
r
r�connection_lostfszMyBaseProto.connection_lost)N)
r/r0r1r9r:r<rBrGrJrNr
r
r
rr2Ks
r2cseZdZ�fdd�Z�ZS)�MyProtocst��|�|�d�dS)Ns%GET / HTTP/1.0
Host: example.com

)�superrB�writerA��	__class__r
rrBnszMyProto.connection_made�r/r0r1rB�
__classcell__r
r
rRrrOmsrOc@s:eZdZdZddd�Zdd�Zdd�Zdd	�Zd
d�ZdS)
�MyDatagramProtoNcCs"d|_d|_|dk	r|��|_dSr3)r6r7r8r:r;r
r
rr<vszMyDatagramProto.__init__cCs||_d|_dS)N�INITIALIZED�r5r6rAr
r
rrB|szMyDatagramProto.connection_madecCs|jt|�7_dSr
rC�r&rF�addrr
r
r�datagram_received�sz!MyDatagramProto.datagram_receivedcCsdSr
r
r)r
r
r�error_received�szMyDatagramProto.error_receivedcCsd|_|jr|j�d�dSrKrMr)r
r
rrN�szMyDatagramProto.connection_lost)N)	r/r0r1r:r<rBr[r\rNr
r
r
rrVss
rVc@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||_|j�d�dSr=)r5r6�appendrAr
r
rrB�szMyReadPipeProto.connection_madecCs|jt|�7_dSr
rCrEr
r
rrG�szMyReadPipeProto.data_receivedcCs|j�d�dSrH)r6r^r,r
r
rrJ�szMyReadPipeProto.eof_receivedcCs8d|jkr|j�d�|j�d�|jr4|j�d�dS)NrIrL)r6r^r:r@r)r
r
rrN�s

zMyReadPipeProto.connection_lost)N)	r/r0r1r:r<rBrGrJrNr
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||_d|_dSr=rXrAr
r
rrB�sz MyWritePipeProto.connection_madecCsd|_|jr|j�d�dSrKrMr)r
r
rrN�sz MyWritePipeProto.connection_lost)N)r/r0r1r:r<rBrNr
r
r
rr_�s
r_c@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>�����rc)r6r5r8r9�	completed�range�disconnectsrF�
returncoder�Event�got_datar;r
rcrr<�s



�zMySubprocessProtocol.__init__cCs||_d|_|j�d�dSr=r?rAr
r
rrB�sz$MySubprocessProtocol.connection_madecCsd|_|j�d�dSrK)r6rjr@r)r
r
rrN�sz$MySubprocessProtocol.connection_lostcCs$|j||7<|j|��dSr
)rFro�set)r&rbrFr
r
r�pipe_data_received�sz'MySubprocessProtocol.pipe_data_receivedcCs*|r|j|�|�n|j|�|�dSr
)rl�
set_exceptionr@)r&rbr*r
r
r�pipe_connection_lost�sz)MySubprocessProtocol.pipe_connection_lostcCs|j��|_dSr
)r5Zget_returncodermr,r
r
r�process_exited�sz#MySubprocessProtocol.process_exitedN)	r/r0r1r<rBrNrqrsrtr
r
r
rr`�sr`cs0eZdZ�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
)rP�setUp�create_event_loopr#r!r,rRr
rrv�s

zEventLoopTestsMixin.setUpcs4|j��st�|j�|��t��t���dSr
)	r#�	is_closed�
test_utils�run_brieflyZ
doCleanupsr	�
gc_collectrP�tearDownr,rRr
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
�rr&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�Nri�r^rDr#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-�rF��
bytes_read�rr&r
r�readerwsz8EventLoopTestsMixin.test_reader_callback.<locals>.readersabccst��dkS)Nre�rDr
�r�r
r�<lambda>�rfz:EventLoopTestsMixin.test_reader_callback.<locals>.<lambda>sdefcst��dkS)N�r�r
r�r
rr��rfsabcdef)�socket�
socketpair�setblocking�	bytearrayr#�
add_readerr�r�r(ry�	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>.writersxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxri)r�r�r�r#�
add_writerr�r�r��
remove_writerr�r-r�rDr�)r&r�r�rF�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�Nrhr
r
��caughtr
r�
my_handler�sz?EventLoopTestsMixin.test_add_signal_handler.<locals>.my_handlerZboomrh���cs�Sr
r
r
r�r
rr��rfz=EventLoopTestsMixin.test_add_signal_handler.<locals>.<lambda>)r��	TypeErrorr#�add_signal_handler�remove_signal_handler�
ValueError�signal�NSIGr�r�r��SIGINT�os�kill�getpidryr�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�?�<rh�
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�rhr�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�Nrc�rOr#r
r,r
rr��rfz<EventLoopTestsMixin.test_create_connection.<locals>.<lambda>)ry�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�Srrr
r,r
rr�
rfzAEventLoopTestsMixin.test_create_unix_connection.<locals>.<lambda>)rry�run_test_unix_serverr#�create_unix_connectionrr)r&rrr
r
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�cipherrerrhriZ
ssl_object�compression)r�rr�r�rrD�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�r�r�rSr/�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��Sr
)r�rr�SERVER_AUTHry�dummy_ssl_context)Zpurposerrr r,r
r�_dummy_ssl_create_contextAszREventLoopTestsMixin._test_create_ssl_connection.<locals>._dummy_ssl_create_contextzssl.create_default_context)�side_effectTrhZCERTIFICATE_VERIFY_FAILED)ryr"r�hasattrrrr!r�patchr�Z
call_countr��SSLError�disable_logger�	exception�reason)	r&rr
rrr
r#�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�Srrr
r,r
rr�crfz@EventLoopTestsMixin.test_create_ssl_connection.<locals>.<lambda>�r)ryr	�	functools�partialr#r
rr-)r&rr
r
r,r�test_create_ssl_connection^s
���z.EventLoopTestsMixin.test_create_ssl_connectionc	sXt�}tjdd��:}tj�jj�fdd�|jdd�}�j||||jd�W5QRXdS)NTr.cst�jd�Srrr
r,r
rr�rrfzEEventLoopTestsMixin.test_create_ssl_unix_connection.<locals>.<lambda>�	127.0.0.1)�server_hostnamer/)	rryrr0r1r#rrr-)r&rrr
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�Srrr
r,r
rr�}rfzGEventLoopTestsMixin.test_create_connection_local_addr.<locals>.<lambda>�
local_addrrr�rh)ryr	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�Srrr
r,r
rr��rfzNEventLoopTestsMixin.test_create_connection_local_addr_in_use.<locals>.<lambda>r6)ryr	r#r
rr��OSErrorr"r�r)�errno�
EADDRINUSE�assertInr�strerror)r&rr9r,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
)rPrNr�r�r))rSr#r
rrN�szQEventLoopTestsMixin.test_connect_accepted_socket.<locals>.MyProto.connection_lostcst��|�|j���dSr
)rPrGr5rQrE)rS�expected_responser
rrG�szOEventLoopTestsMixin.test_connect_accepted_socket.<locals>.MyProto.data_received)r/r0r1rNrGrUr
)rAr#rRrrO�srO�r3rrh)�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*)rZ�
client_ssl�message�responser
rr�s



�z@EventLoopTestsMixin.test_connect_accepted_socket.<locals>.clientT)r��daemonrccs�Sr
r
r
��protor
rr��rfzBEventLoopTestsMixin.test_connect_accepted_socket.<locals>.<lambda>r��timeoutrL)r#r2r��
create_server�getsocknamer�r�r��acceptr"�connect_accepted_socketr�r5r-r	�join_threadr��is_aliver�r6r7rD)	r&Z
server_sslrIrOZlsockr�thread�conn�_r
)rZrIrAr#rJrNrKr�test_connect_accepted_socket�s8


��
z0EventLoopTestsMixin.test_connect_accepted_socketcCsLtjdkr,tjdkr,t|jtj�r,t�d��t	�
�}t	��}|�||�dS)Nr)rerz=SSL not supported with proactor event loops before Python 3.5)
rr�version_info�
isinstancer#rZBaseProactorEventLoop�unittest�SkipTestryZsimple_server_sslcontextZsimple_client_sslcontextrZ)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)Nrh)Zssl_handshake_timeoutz1ssl_handshake_timeout is only meaningful with ssl)	r��
addCleanupr-r#rTrO�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)�hostr8r��kw)�familyr
r�getaddrinfo�s
zEEventLoopTestsMixin.create_server_multiple_hosts.<locals>.getaddrinfocs�j��||��Sr
)r#�create_task)r��kwds)rkr&r
r�getaddrinfo_task�szJEventLoopTestsMixin.create_server_multiple_hosts.<locals>.getaddrinfo_taskcSsg|]}|df�qS)�Pr
�rarhr
r
r�
<listcomp>�szDEventLoopTestsMixin.create_server_multiple_hosts.<locals>.<listcomp>cSsg|]}|dddf�qS)rorr
rpr
r
rrq�scs
t�j�Sr
rr
r,r
rr��rfzBEventLoopTestsMixin.create_server_multiple_hosts.<locals>.<lambda>rocSsh|]}|��d�qS)r)�
getsockbyname)rarbr
r
r�	<setcomp>�szCEventLoopTestsMixin.create_server_multiple_hosts.<locals>.<setcomp>)rpr�rfrrr$r#rkr�MockZ_start_serving�
_stop_servingrQr"r`r-�socketsr�)	r&rjZhostsZ	mock_sockrnZunique_hostsr9�serverZserver_hostsr
)rjrkr&r�create_server_multiple_hosts�s$
��z0EventLoopTestsMixin.create_server_multiple_hostscCs|�tjdddg�dS)Nz1.2.3.4z5.6.7.8)rxr�rfr,r
r
r�&test_create_server_multiple_hosts_ipv4�s�z:EventLoopTestsMixin.test_create_server_multiple_hosts_ipv4cCs|�tjdddg�dS)N�::1z::2)rxr��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
rMr
rr�rfz8EventLoopTestsMixin.test_create_server.<locals>.<lambda>�0.0.0.0rrhr3�xxxr>cs
�jdkSr}�r7r
rMr
rr�rfrer�rrL)rOr#rQr"r�rDrvrRr�rErFr9r6ryr�r7r�r5rr-r:�r&r9rwrbrhr8rr
rMr�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
rMr
rr�)rfzCEventLoopTestsMixin.test_create_server_reuse_port.<locals>.<lambda>r}rrhcs�Sr
r
r
rMr
rr�6rfT)�
reuse_port)rOr#rQr"r�rDrvr��
getsockoptr��
SOL_SOCKETr�r-ryrzr�)r&r9rwrbr
rMr�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�Arfz7EventLoopTestsMixin._make_unix_server.<locals>.<lambda>)ryZgen_unix_socket_pathr`r#�create_unix_serverr")r&�factory�kwargsr9rwr
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)
Nrccs�Sr
r
r
rMr
rr�Krfz=EventLoopTestsMixin.test_create_unix_server.<locals>.<lambda>rhr~r>cs
�jdkSr}rr
rMr
rr�TrfrerL)rOr#r�r�rDrvr��AF_UNIXrErFr"r9r6ryr�r7r5r-r:)r&rwr�rr
rMr�test_create_unix_serverHs


z+EventLoopTestsMixin.test_create_unix_serverr�zNo UNIX Socketsc
sft|jd��t��}|�D|jj�fdd�d|d�}|�td��|j�|�W5QRXW5QRXdS)Nrccs�Sr
r
r
rMr
rr�irfzOEventLoopTestsMixin.test_create_unix_server_path_socket_error.<locals>.<lambda>z/test�rbz3path and sock can not be specified at the same time)rOr#r�r�rar�r")r&rbr9r
rMr�)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)Nr3rr)r�r#rQr"rvrRr�)
r&r�r�r�r�r9rwrbrhr8r
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)Nrccs�Sr
r
r
rMr
rr��rfz<EventLoopTestsMixin.test_create_server_ssl.<locals>.<lambda>rr~r>cs
�jdkSr}rr
rMr
rr��rfrer/rL)rOr#r�ry�ONLYCERT�ONLYKEYr
r2r"r"rQr9r�r6r�r7rr5r-r:)r&rwrhr8�f_crrr
rMr�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)Nrccs�Sr
r
r
rMr
rr��rfzAEventLoopTestsMixin.test_create_unix_server_ssl.<locals>.<lambda>re�rr4r~r>cs
�jdkSr}rr
rMr
rr��rfrerL)rOr#r�ryr�r�rr2r"r"rQr9r�r6r�r7r5r-r:)r&rwr�r�rrr
rMr�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)	Nrccs�Sr
r
r
rMr
rr��rfzJEventLoopTestsMixin.test_create_server_ssl_verify_failed.<locals>.<lambda>�check_hostnameTr�call_exception_handler�(?i)certificate.verify.failed)rOr#r�ry�SIGNED_CERTFILErr��PROTOCOL_TLS_CLIENTr�r��
CERT_REQUIRED�verify_moder%r�r
rr&�objectr(rar'r"rz�assertIsNoner5r-�r&rwrhr8�sslcontext_clientr�r
rMr�$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)
Nrccs�Sr
r
r
rMr
rr��rfzOEventLoopTestsMixin.test_create_unix_server_ssl_verify_failed.<locals>.<lambda>r�T�invalidr�r�r�)rOr#r�ryr�rr�r�r�r�r�r�r%r�rrr&r�r(rar'r"rzr�r5r-)r&rwr�r�r�r
rMr�)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)
Nrccs�Sr
r
r
rMr
rr�rfzIEventLoopTestsMixin.test_create_server_ssl_match_failed.<locals>.<lambda>�rr�Trr�z=IP address mismatch, certificate is not valid for '127.0.0.1')rOr#r�ryr�rr�r�r�r�r�r��load_verify_locations�
SIGNING_CAr%r�r
rr&r�r(raZCertificateErrorr"r�r5r-r�r
rMr�#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)	Nrccs�Sr
r
r
rMr
rr�!rfzJEventLoopTestsMixin.test_create_unix_server_ssl_verified.<locals>.<lambda>r�r�T�	localhostr�)rOr#r�ryr�rr�r�r�r�r�r�r�r�r%r�rr"r9r5r-r:)r&rwr�r�r�rrr
rMr�$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)
Nrccs�Sr
r
r
rMr
rr�;rfzEEventLoopTestsMixin.test_create_server_ssl_verified.<locals>.<lambda>r�r�Tr�r�)rr)rOr#r�ryr�rr�r�r�r�r�r�r�r�r%r�r
r"r9rZPEERCERTr5r-r:)r&rwrhr8r�r�rrr
rMr�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
�rPrBr@rA)rSrNr
rrBYszPEventLoopTestsMixin.test_create_server_sock.<locals>.TestMyProto.connection_maderTr
rMrRr�TestMyProtoXsr��r}rr�rr}r3r~)
r#r8rOr�rQr"rvr�r�rRrEr(r-)	r&r��sock_obr9rwrbrhr8rr
rMr�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�rhr8)r�rQr#rOr"rvrRr�r;r�r)r<r=r-)r&r�r9rwrbrhr8r,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�rA)rS�f_protor
rrB�szVEventLoopTestsMixin.test_create_server_dual_stack.<locals>.TestMyProto.connection_maderTr
�r�rRrr�sr�rr�rhrr3r~rz)r#r8rOr	r7rQr"r;r<r=ZassertGreaterEqualr�rEr(r5r-r{)	r&r�Z	try_countr8r9rw�exrrNr
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}rr3r~)r#rQrOr"rvrRr�rEr(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)rPr<r#)Z
inner_self)rSr&r
rr<�szXEventLoopTestsMixin._test_create_datagram_endpoint.<locals>.TestMyDatagramProto.__init__cs$t��||�|j�d||�dS)Nsresp:)rPr[r5�sendtorYrRr
rr[�szaEventLoopTestsMixin._test_create_datagram_endpoint.<locals>.TestMyDatagramProto.datagram_received)r/r0r1r<r[rUr
r,rRr�TestMyDatagramProto�sr�)r6rjr�rWcst�jd�Sr�rVr#r
r,r
rr��rfzDEventLoopTestsMixin._test_create_datagram_endpoint.<locals>.<lambda>)Zremote_addrr~cs�jSr
rr
)rwr
rr��rfrecs�jSr
rr
)rr
rr��rf�rL)rVr#�create_datagram_endpointr"rr��getnameinfo�NI_NUMERICHOST�NI_NUMERICSERVr�rr�r�r6r�r5r�ryr�r7r�r-r:)
r&r6rjr�rcZs_transportr�rhr8r5r
)rr&rwr�_test_create_datagram_endpoint�sF�

�
�
z2EventLoopTestsMixin._test_create_datagram_endpointcCs|�dtj�dS)NrB)r�r�rfr,r
r
r�test_create_datagram_endpoint�sz1EventLoopTestsMixin.test_create_datagram_endpointcCs|�dtj�dS)N)rzr)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(Xqrq(�jj�fdd�|d�}	�j�|	�\}
}��|
t	j
���|t�|
���j�|j
�dS)NrB�type)rjr�rNFcst�jd�Srr�r
r,r
rr�rfzHEventLoopTestsMixin.test_create_datagram_endpoint_sock.<locals>.<lambda>r�)r#r"rkr��
SOCK_DGRAMr��bindr�r�rr�rVr-r:)r&rbZ
local_addressZinfosrjr�rNZcnamerr9rrr
r,r�"test_create_datagram_endpoint_sock�s4���

�z6EventLoopTestsMixin.test_create_datagram_endpoint_sockcCsf|��}t|tj�s&|��|�d�|�d|j�|��|�d|j�|�|j	�|�|j
�dS)Nz#loop is not a BaseSelectorEventLooprhr)rwr\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)Nrc�rbr�c�s^�j��fdd���IdH\}}��|����|�j���ddg�j���d�j�dS)Ncs�Sr
r
r
rMr
rr�rfzEEventLoopTestsMixin.test_read_pipe.<locals>.connect.<locals>.<lambda>r4r>r�r#�connect_read_piper�r5r�r6r7�r��p��pipeobjrNr&r
rrEs
�z3EventLoopTestsMixin.test_read_pipe.<locals>.connect�1cs
�jdkSr�rr
rMr
rr�&rfz4EventLoopTestsMixin.test_read_pipe.<locals>.<lambda>rh�2345cs
�jdkS�Nrrr
rMr
rr�*rfr4r>rrIrL�pipe)r]r#r�r��io�openr"rQryr�r�r7r6r-r:r�r5r)r&�rpipe�wpiperEr
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)Nrcr�r�r�c�sD���fdd���IdH\}}���fdd���IdH\}}||fS)Ncs�Sr
r
r
��
read_protor
rr�CrfzSEventLoopTestsMixin.test_unclosed_pipe_transport.<locals>.connect.<locals>.<lambda>cs�Sr
r
r
��write_protor
rr�Erf)r��connect_write_pipe)�read_transportrY�write_transport�r#r�ZrpipeobjZwpipeobjr�r
rrEAs
�
�zAEventLoopTestsMixin.test_unclosed_pipe_transport.<locals>.connectr�)rwr]r_r�r�r�r�r"r-r>�reprZ_pipe)r&r�r�rEr�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)Nrcr�rc�s^�j��fdd���IdH\}}��|����|�j���ddg�j���d�j�dS)Ncs�Sr
r
r
rMr
rr�`rfzKEventLoopTestsMixin.test_read_pty_output.<locals>.connect.<locals>.<lambda>r4r>rr�r��Zmaster_read_objrNr&r
rrE_s�z9EventLoopTestsMixin.test_read_pty_output.<locals>.connectr�cs�jSr
rr
rMr
rr�jrfz:EventLoopTestsMixin.test_read_pty_output.<locals>.<lambda>rhr�cs
�jdkSr�rr
rMr
rr�nrfr4r>rrIrLr�)r]r#r��openptyr�r�r"rQryr�r�r7r6r-r5r:r�r)r&�master�slaverEr
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�rccs�Sr
r
r
rMr
rr��rfz5EventLoopTestsMixin.test_write_pipe.<locals>.<lambda>r>r�cst��d�}||7}t|�Sr��r�r�rD�rF�chunk)r�r
rr��sz3EventLoopTestsMixin.test_write_pipe.<locals>.readercs���dkSr�r
r
�rFr�r
rr��rfr�cs���dkSr�r
r
r�r
rr��rf�12345r�rL)r�r�r�r�r_r#r�r"r�r5r�r6rQr�ryr�r-r�rr:)r&r�r�rEr5r�r
)rFrNr�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�rccs�Sr
r
r
rMr
rr��rfzIEventLoopTestsMixin.test_write_pipe_disconnect_on_close.<locals>.<lambda>r>r�rL)r�r�r�r�r��detachr_r#r�r"r�r5r�r6rQ�	sock_recvr-r:)r&ZrsockZwsockr�rEr5r�rFr
rMr�#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�rrccs�Sr
r
r
rMr
rr��rfz4EventLoopTestsMixin.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��rfrrOr�cs���dkSr�r
r
r�r
rr��rfr�r�rL)r�r�r�r�r_r#r�r"r�r5r�r6rQr�ryr�r-r�rr:)r&r��slave_write_objrEr5r�r
)rFr�rNr�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�rrccs�Sr
r
r
r�r
rr��rfz<EventLoopTestsMixin.test_bidirectional_pty.<locals>.<lambda>r4r>r�cs�Sr
r
r
r�r
rr��rfcst��d�}||7}t|�Sr�r�r�r�r
rr�sz:EventLoopTestsMixin.test_bidirectional_pty.<locals>.readerr�cs���dkSr�r
r
r�r
rr�	rfrrO�acs
�jdkSr�rr
r�r
rr�rfrhr�cs���dkSr�r
r
r�r
rr�rfr�sbcdecs
�jdkSr�rr
r�r
rr�rfrrIrL)r�r��dup�ttyZsetrawr�r�r]r#r�r"r�r5r�r6r7r_r�r�rQryr�r-r:)
r&Z
read_slaveZwrite_slaveZslave_read_objZread_connectr�r�r�Z
write_connectr�r
)rFr�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)NFrh�ovc�sRz@z�j��j��IdHWntjk
r8d}YnXd}W5�j��X|S)N�	cancelled)r#r�r�r�r�CancelledError)r��r9r&r
r�main5s
z:EventLoopTestsMixin.test_prompt_cancellation.<locals>.mainr�r)r�r�r�r#rlr��getattrr��pendingr��	monotonicr�Z
assertLessr��resultr�rrr�rur-)r&r�r�rrr�r��elapsedr
rr�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~rcr,r
r�waitYsz7EventLoopTestsMixin.test_timeout_rounding.<locals>.wait�)Zclock_resolution�selector)	r#rrr"ZassertLessEqualZ_clock_resolution�	_selectorrSr/)r&rrr
rr�test_timeout_roundingPs
��z)EventLoopTestsMixin.test_timeout_roundingcCsx|��}dd�}t��\}}|�|j�|�|j�|�||�|�||�|��|�|�|��|�|�	|��dS)NcSsdSr
r
r
r
r
rr�lrfzCEventLoopTestsMixin.test_remove_fds_after_closing.<locals>.<lambda>)
rwr�r�r`r-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�xrfz@EventLoopTestsMixin.test_add_fds_after_closing.<locals>.<lambda>)	rwr�r�r`r-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-rcr,r
r�
close_loop�szEEventLoopTestsMixin.test_close_running_event_loop.<locals>.close_loop)r#r�r�r")r&rrcr
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��rfz0EventLoopTestsMixin.test_close.<locals>.<lambda>g�?g)r#r-r`r�r�r�r8r"r�r�r��call_atr�rlr�r��SIGTERMr�r.�next)r&r�funcrcZfut�itr
r
r�
test_close�s2

"zEventLoopTestsMixin.test_close)T)TN)TN)NN)N)N)N)Xr/r0r1rvr|r�r�r�r�r�r�r�r�r�r�r�r]�
skipUnlessr%r�r�r�r�rrr	Zskip_unless_bind_unix_socketrrrr-�skipIfrr2r5r:r@rZr_rdrr&rxryr|r�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_verr�rrrrrrr#rUr
r
rRrru�s�		

+




�
!�

�
%
	

6


$
	










(0
�
 �
 �
!�
%�
�
'�
D#ruc@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&rmr
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 Winnerrh)r�r�r��dirname�__file__r#�subprocess_execr0r1r`r�
executable�assertWarns�DeprecationWarningr"r�r9r�r6�get_pipe_transportrQrorryr(r-rjr+rmrF�r&�progrE�transprN�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 rhs
The Winnerr-)r�r�r�r.r/r#r0r0r1r`rr1r2r3r"r�r9r�r6r4rQror�clearrFryr(r-rjr+rmr5r
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:)rar9r
r
r�	<genexpr>�sz=SubprocessTestsMixin.test_subprocess_shell.<locals>.<genexpr>rhs
sPythonrirf)r2r3r#�subprocess_shellr0r1r`r"r�r9r4r-rjr�rmr��allrl�valuesrF�rstrip�r&rEr7rNr
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�r8�stdout�stderr�)
r#r=r0r1r`r2r3r"r�rjr�rmr-rAr
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)NrCrDrrhrirG)r#r=r0r1r`r2r3r"r�r�r4rjr�rmr-rAr
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�r.r/r#r0r0r1r`rr1r2r3r"r�r9r�rjr+rmr-�r&r6rEr7rNr
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�|��W5QRXdSrJ)r�r�r�r.r/r#r0r0r1r`rr1r2r3r"r�r9�	terminaterjr*rmr-rKr
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|�XdSrJ)r��SIGHUP�SIG_DFLr�r�r�r.r/r#r0r0r1r`rr1r2r3r"r�r9�send_signalrjr�rmr-)r&Zold_handlerr6rEr7rNr
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:testrhrisERR:test)r�r�r�r.r/r#r0r0r1r`rr1r2r3r"r�r9r4rQrjr-r�rFr�rrmr5r
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)	NrS)rFrrhrirTsOUT:testERR:testrf)r�r�r�r.r/r#r0r0r1r`rr1�
subprocess�STDOUTr2r3r"r�r9r4r�r�rQrjr�rFrr�r-rmr5r
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.pyrrhrTrUr~rirsERR:BrokenPipeErrorsERR:OSError)r�r�r�r.r/r#r0r0r1r`rr1r2r3r"r�r9r4rQrorr�rFr-rlrryr(rjr+rm)r&r6rEr7rNr8rEr
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)NrCT)r8rErF�start_new_sessionrG)
r#r=r0r1r`r"r�rjr�rm)r&rErYrNr
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#r0r�SubprocessProtocol)rmr,r
rrE�s��zGSubprocessTestsMixin.test_subprocess_exec_invalid_args.<locals>.connectT��universal_newlines���bufsize��shell�r�r�r#r"�r&rEr
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=rr_)�cmdrmr,r
rrE�s��zHSubprocessTestsMixin.test_subprocess_shell_invalid_args.<locals>.connectZlsz-lTr`rbrcFre)Nrgrhr
r,r�"test_subprocess_shell_invalid_args�sz7SubprocessTestsMixin.test_subprocess_shell_invalid_argsN)r/r0r1r*r+r9r;rBrHrIrLrNr]r%rrrRrVrYrZr\rirkr
r
r
rr'�s"
"
r'c@seZdZdd�ZdS)�SelectEventLoopTestscCst��Sr
)r�SelectorEventLoopr,r
r
rrw�s�&SelectEventLoopTests.create_event_loopN�r/r0r1rwr
r
r
rrl�srlc@s<eZdZdd�Zdd�Zdd�Zdd�Zd	d
�Zdd�Zd
S)�ProactorEventLoopTestscCst��Sr
)rZProactorEventLoopr,r
r
rrw�sz(ProactorEventLoopTests.create_event_loopcCst�d��dS�Nz(IocpEventLoop does not have add_reader()�r]r^r,r
r
rr��sz+ProactorEventLoopTests.test_reader_callbackcCst�d��dSrqrrr,r
r
r�test_reader_callback_cancel�sz2ProactorEventLoopTests.test_reader_callback_cancelcCst�d��dS�Nz(IocpEventLoop does not have add_writer()rrr,r
r
rr��sz+ProactorEventLoopTests.test_writer_callbackcCst�d��dSrtrrr,r
r
r�test_writer_callback_cancel�sz2ProactorEventLoopTests.test_writer_callback_cancelcCst�d��dSrqrrr,r
r
rr�sz4ProactorEventLoopTests.test_remove_fds_after_closingN)	r/r0r1rwr�rsr�rurr
r
r
rrp�srpcs(eZdZ�fdd�Z�fdd�Z�ZS)�UnixEventLoopTestsMixincs,t���t��}|�|j�t�|�dSr
)rPrvr�SafeChildWatcher�attach_loopr#�set_child_watcher�r&ZwatcherrRr
rrv�s
zUnixEventLoopTestsMixin.setUpcst�d�t���dSr
)rryrPr|r,rRr
rr|�s
z UnixEventLoopTestsMixin.tearDown)r/r0r1rvr|rUr
r
rRrrv�srv�KqueueSelectorcs\eZdZdd�Ze�dd�e�ej	�
d�d��fdd���Ze�dd��fd	d
��Z�Z
S)�KqueueEventLoopTestscCst�t���Sr
)rrm�	selectorsr{r,r
r
rrws�z&KqueueEventLoopTests.create_event_loopr�	Zopenbsdztest hangs on OpenBSDcst���dSr
)rPr�r,rRr
rr�	sz)KqueueEventLoopTests.test_read_pty_outputcst���dSr
)rPr�r,rRr
rr�sz#KqueueEventLoopTests.test_write_pty)r/r0r1rwr	r&r]r%rrrr�r�rUr
r
rRrr|�s
�
r|�
EpollSelectorc@seZdZdd�ZdS)�EPollEventLoopTestscCst�t���Sr
)rrmr}rr,r
r
rrwsz%EPollEventLoopTests.create_event_loopNror
r
r
rr�sr��PollSelectorc@seZdZdd�ZdS)�PollEventLoopTestscCst�t���Sr
)rrmr}r�r,r
r
rrw$sz$PollEventLoopTests.create_event_loopNror
r
r
rr� sr�c@seZdZdd�ZdS)rlcCst�t���Sr
)rrmr}�SelectSelectorr,r
r
rrw,srnNror
r
r
rrl(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�)rPrvrrtr#�	get_debug�return_valuer,rRr
rrv6s

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.*)rJr)�handleZsource_traceback)rrtr#r�rr�Z_run�assert_called_withryZMockPattern�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�[rfz1HandleTests.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)NFrgz<Handle noop(1, 2) at %s:%s>z<Handle cancelled>r
z<Handle noop() at %s:%s>rhri)rez%^<Handle noop\(1, 2\)\(3\) at %s:%s>$)�x)rirez'^<Handle noop\(x=1\)\(2, 3\) at %s:%s>$)re�z*<function HandleTests.test_handle_repr .*>z%functools.partialmethod\(%s, , \)\(\)z^<Handle %s at %s:%s>$)r#r�r�rr�r�ry�get_function_sourcer�r�r�r2r3�	coroutiner0r1�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)NTrhrgz-<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�r/r�	_getframe�f_linenorr�r�ryr�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)Nrhr�re�test_handle_source_traceback)rr�r�r�r��listr�r/)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&rcr
r
r�+test_coroutine_like_object_debug_formatting�s&�z7HandleTests.test_coroutine_like_object_debug_formatting)r/r0r1rvr�r�r�r�r�r�r]r$r%�collections�abcr�rUr
r
rRrr�4s
2�r�csLeZdZ�fdd�Zdd�Zdd�Zdd�Zd	d
�Zdd�Zd
d�Z	�Z
S)�
TimerTestscst���t��|_dSr
)rPrvrrtr#r,rRr
rrv�s
zTimerTests.setUpcCs8t��}t�|dd�dt���}|�t|�t|��dS)NcSsdSrr
r
r
r
rr��rfz&TimerTests.test_hash.<locals>.<lambda>r
)r�rr�TimerHandlerrtr��hash�r&�whenr�r
r
r�	test_hash�s
�zTimerTests.test_hashcCs4t��}t�|dd�dt���}|�||���dS)NcSsdSrr
r
r
r
rr��rfz&TimerTests.test_when.<locals>.<lambda>r
)r�rrr�rrtr�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)rhrire)r�rrr�rrtr�r�r�r�rr�r�r�r��AssertionErrorr#)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�ryr�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)NTrhr�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�r/rr�r�rr�r�ryr�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/r0r1rvr�r�r�r�r�r�rUr
r
rRrr��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�)rrtr�AbstractEventLoopr��NotImplementedErrorr�r"r�r�rxr-rlr�rr�r�r�Zset_default_executorr�r�r�r�r�r�Zset_exception_handlerZdefault_exception_handlerr�r�r�)r&r9r#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)rrtrr�r�r�r�rkr�r
rQr�r�Zsock_recv_intoZsock_sendallZsock_connectZsock_acceptZ
sock_sendfile�sendfiler��sentinelr�r�r=r0)r9r#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_watcherry�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�r�r-�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
rr9�	sz1PolicyTests.test_get_event_loop_thread.<locals>.fr�)r�r�r�r�)r&Zm_current_threadr9�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�r�r�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�r�r�)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_implrrPrvr r#r!rrrwrxryrzrRr
rrv%
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�rrryrPr|r,rRr
rr|?
s



zGetEventLoopTestsMixin.tearDownrcs.t���fdd�}���j�|��d�dS)Nc�s*tj��}�j�|t�IdH}|��|Sr
)�
concurrent�futures�ProcessPoolExecutorr#r�r$�shutdown)�poolrr,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
)r�rr�r�r�r
)r#r&r
rr!}
szMGetEventLoopTestsMixin.test_get_event_loop_returns_running_loop.<locals>.func)rGrr�r�rr-r r�r�r!rar�r�r�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�rvr|rrr�r�rUr
r
rRrr�
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
rMr
rr��
rfz*TestServer.test_get_loop.<locals>.<lambda>r}r)
rr r`r-rOr"rQr��get_loop�wait_closed)r&r#rwr
rMr�
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 r`r-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__)F�collections.abcr��concurrent.futuresr�r0r�r�rr�r�r�r�ImportErrorrWrr�r�r<r]rr�rrrrrrZtest.test_asynciorryrr	rrr$r%r�r2rOZDatagramProtocolrVr]ZBaseProtocolr_r_r`rur'ZTestCaserlrpr}rvr%r|r�r�r�r�r�r�r�r�r�Z_asyncior�r�r�r/rr
r
r
r�<module>s�

	" )M%������6tf[y