Your IP : 216.73.216.213


Current Path : /opt/alt/python39/lib64/python3.9/test/test_asyncio/__pycache__/
Upload File :
Current File : //opt/alt/python39/lib64/python3.9/test/test_asyncio/__pycache__/test_unix_events.cpython-39.pyc

a

XC?h8	�@sdZddlZddlZddlZddlZddlZddlZddlZddlZddl	Z	ddl
Z
ddlZddlZddl
Z
ddl
mZddlmZddlmZe
jdkr�e
�d��ddlZddlmZdd	lmZdd
lmZdd�ZejZd
d�Ze
�ed�Gdd�dej ��Z!e
�e"ed�d�Gdd�dej ��Z#e
�e"ed�d�Gdd�dej ��Z$Gdd�dej �Z%Gdd�dej �Z&Gdd�de
j �Z'Gd d!�d!e
j �Z(e�)d"d#�Z*Gd$d%�d%�Z+Gd&d'�d'e+ej �Z,Gd(d)�d)e+ej �Z-Gd*d+�d+e
j �Z.Gd,d-�d-e
j �Z/e0d.k�re
�1�dS)/zTests for unix_events.py.�N)�mock)�support)�
socket_helperZwin32z	UNIX only)�log)�unix_events)�utilscCst�d�dS�N)�asyncioZset_event_loop_policy�r
r
�G/opt/alt/python39/lib64/python3.9/test/test_asyncio/test_unix_events.py�tearDownModulesrcCs"|jdurdS|j��d|_dSr)Z_pipe�close)�	transportr
r
r�close_pipe_transport%s

rzSignals are not supportedcsFeZdZ�fdd�Zdd�Zdd�Zdd�Ze�d	�d
d��Z	e�d	�dd
��Z
e�d	�dd��Ze�d	�dd��Ze�d	�e�d�dd���Z
e�d	�e�d�dd���Ze�d	�dd��Ze�d	�dd��Ze�d	�e�d�dd���Ze�d	�dd��Ze�d	�dd ��Ze�d	�d!d"��Ze�d#�e�d	�d$d%���Z�ZS)&�SelectorEventLoopSignalTestscs$t���t��|_|�|j�dSr��super�setUpr	ZSelectorEventLoop�loop�set_event_loop��self��	__class__r
rr1s

z"SelectorEventLoopSignalTests.setUpcCs.|�t|jjd�|�t|jjtjd�dS)N�1�)�assertRaises�	TypeErrorrZ
_check_signal�
ValueError�signal�NSIGrr
r
r�test_check_signal6s
��z.SelectorEventLoopSignalTests.test_check_signalcCs|j�tjd�dS)Nr)r�_handle_signalrr rr
r
r�test_handle_signal_no_handler<sz:SelectorEventLoopSignalTests.test_handle_signal_no_handlercCshtjt��dt��d�}|��||jjtjd<t��|j_	|j�
tjd�|jj	�tjd�dS)Nr
)rr)r	�Handler�Mock�cancelr�_signal_handlersrr �remove_signal_handlerr"�assert_called_with)r�hr
r
r�$test_handle_signal_cancelled_handler?s�zASelectorEventLoopSignalTests.test_handle_signal_cancelled_handlerzasyncio.unix_events.signalcCs6tj|_tj|_t|j_|�t|jj	tj
dd��dS)NcSsdS�NTr
r
r
r
r�<lambda>Q�zRSelectorEventLoopSignalTests.test_add_signal_handler_setup_error.<locals>.<lambda>)rr �
valid_signalsr�
set_wakeup_fd�side_effectr�RuntimeErrorr�add_signal_handler�SIGINT�r�m_signalr
r
r�#test_add_signal_handler_setup_errorHs
�z@SelectorEventLoopSignalTests.test_add_signal_handler_setup_errorcCsPtj|_dd�}|}|�}|�|j�||fD]}|�td|jjtj|�q.dS)Nc�sdSrr
r
r
r
r�simple_coroutineWsz^SelectorEventLoopSignalTests.test_add_signal_handler_coroutine_error.<locals>.simple_coroutinez1coroutines cannot be used with add_signal_handler)	rr �
addCleanupr
�assertRaisesRegexrrr3r4)rr6r8Z	coro_funcZcoro_obj�funcr
r
r�'test_add_signal_handler_coroutine_errorSs�zDSelectorEventLoopSignalTests.test_add_signal_handler_coroutine_errorcCsXtj|_tj|_dd�}|j�tj|�|jj�tj�}|�|t	j
�|�|j|�dS)NcSsdSr,r
r
r
r
rr-ir.zFSelectorEventLoopSignalTests.test_add_signal_handler.<locals>.<lambda>)
rr r/rr3�SIGHUPr'�get�assertIsInstancer	r$�assertEqualZ	_callback)rr6�cbr*r
r
r�test_add_signal_handlerdsz4SelectorEventLoopSignalTests.test_add_signal_handlercCsTtj|_tj|_dd�}||_Gdd�dt�}||j_|�||jjtj	dd��dS)NcSs|dkrt��dS)N���)r)�fdr
r
rr0tszYSelectorEventLoopSignalTests.test_add_signal_handler_install_error.<locals>.set_wakeup_fdc@seZdZejZdS)zOSelectorEventLoopSignalTests.test_add_signal_handler_install_error.<locals>.ErrN)�__name__�
__module__�__qualname__�errnoZEFAULTr
r
r
r�ErrysrIcSsdSr,r
r
r
r
rr-�r.zTSelectorEventLoopSignalTests.test_add_signal_handler_install_error.<locals>.<lambda>)
rr r/r0�OSErrorr1rrr3r4)rr6r0rIr
r
r�%test_add_signal_handler_install_erroros
�zBSelectorEventLoopSignalTests.test_add_signal_handler_install_errorzasyncio.base_events.loggercCsvtj|_tj|_Gdd�dt�}||j_dd�|jjtj<|�t	|jj
tjdd��|�|j
j�|�d|jj�dS)Nc@seZdZejZdS)zPSelectorEventLoopSignalTests.test_add_signal_handler_install_error2.<locals>.ErrN�rErFrGrHZEINVALr
r
r
rrI�srIcSsdSr,r
r
r
r
rr-�r.zUSelectorEventLoopSignalTests.test_add_signal_handler_install_error2.<locals>.<lambda>cSsdSr,r
r
r
r
rr-�r.r)rr r/rJr1rr'r=rr2r3r4�assertFalse�info�calledr@r0�
call_count�r�	m_loggingr6rIr
r
r�&test_add_signal_handler_install_error2�s
�zCSelectorEventLoopSignalTests.test_add_signal_handler_install_error2cCsdGdd�dt�}||j_tj|_tj|_|�t|jjtj	dd��|�
|jj�|�
d|jj�dS)Nc@seZdZejZdS)zPSelectorEventLoopSignalTests.test_add_signal_handler_install_error3.<locals>.ErrNrLr
r
r
rrI�srIcSsdSr,r
r
r
r
rr-�r.zUSelectorEventLoopSignalTests.test_add_signal_handler_install_error3.<locals>.<lambda>�)rJrr1r r/rr2rr3r4rMrNrOr@r0rPrQr
r
r�&test_add_signal_handler_install_error3�s
�zCSelectorEventLoopSignalTests.test_add_signal_handler_install_error3cCsttj|_tj|_|j�tjdd��|�|j�tj��|�|jj	�|�|jj	�|�
tj|jf|jjd�dS)NcSsdSr,r
r
r
r
rr-�r.zISelectorEventLoopSignalTests.test_remove_signal_handler.<locals>.<lambda>r)
rr r/rr3r=�
assertTruer(r0rOr@�SIG_DFL�	call_argsr5r
r
r�test_remove_signal_handler�s��z7SelectorEventLoopSignalTests.test_remove_signal_handlercCs�tj|_tj|_tj|_|j�tjdd��t�|jjtj<|j	�
�|�|j�tj��|�
|j	j�|�|jj�|�tj|jf|jjd�dS)NcSsdSr,r
r
r
r
rr-�r.zKSelectorEventLoopSignalTests.test_remove_signal_handler_2.<locals>.<lambda>r)rr r4r/rr3�objectr'r=r0�
reset_mockrVr(rMrOr@�default_int_handlerrXr5r
r
r�test_remove_signal_handler_2�s
�

�z9SelectorEventLoopSignalTests.test_remove_signal_handler_2cCsJtj|_tj|_|j�tjdd��t|j_|j�	tj�|�
|j�dS)NcSsdSr,r
r
r
r
rr-�r.zWSelectorEventLoopSignalTests.test_remove_signal_handler_cleanup_error.<locals>.<lambda>)rr r/rr3r=rr0r1r(rVrN)rrRr6r
r
r�(test_remove_signal_handler_cleanup_error�szESelectorEventLoopSignalTests.test_remove_signal_handler_cleanup_errorcCsDtj|_tj|_|j�tjdd��t|j_|�t|jj	tj�dS)NcSsdSr,r
r
r
r
rr-�r.zOSelectorEventLoopSignalTests.test_remove_signal_handler_error.<locals>.<lambda>)
rr r/rr3r=rJr1rr(r5r
r
r� test_remove_signal_handler_error�s�z=SelectorEventLoopSignalTests.test_remove_signal_handler_errorcCsTtj|_tj|_|j�tjdd��Gdd�dt�}||j_|�t	|jj
tj�dS)NcSsdSr,r
r
r
r
rr-�r.zPSelectorEventLoopSignalTests.test_remove_signal_handler_error2.<locals>.<lambda>c@seZdZejZdS)zKSelectorEventLoopSignalTests.test_remove_signal_handler_error2.<locals>.ErrNrLr
r
r
rrI�srI)rr r/rr3r=rJr1rr2r()rr6rIr
r
r�!test_remove_signal_handler_error2�s�z>SelectorEventLoopSignalTests.test_remove_signal_handler_error2cCs�tj|_tj|_|j�tjdd��|j�tjdd��|�t|jj	�d�|j
��|j��|�t|jj	�d�|j
�
d�dS)NcSsdSr,r
r
r
r
rr-�r.z9SelectorEventLoopSignalTests.test_close.<locals>.<lambda>cSsdSr,r
r
r
r
rr-�r.rTrrC)rr r/rr3r=�SIGCHLDr@�lenr'r0r[r
�assert_called_once_withr5r
r
r�
test_close�s

z'SelectorEventLoopSignalTests.test_closezasyncio.unix_events.syscCs�tj|_tj|_|j�tjdd��|�t|jj�d�d|j	_
|j��|�t
d��|j��Wd�n1sv0Y|�t|jj�d�|�|jj�dS)NcSsdSr,r
r
r
r
rr-�r.zGSelectorEventLoopSignalTests.test_close_on_finalizing.<locals>.<lambda>rTz skipping signal handlers removalr)rr r/rr3r=r@rbr'�
is_finalizing�return_valuer[�assertWarnsRegex�ResourceWarningr
rMrO)rr6Zm_sysr
r
r�test_close_on_finalizing�s
�(z5SelectorEventLoopSignalTests.test_close_on_finalizing)rErFrGrr!r#r+r�patchr7r<rBrKrSrUrYr]r^r_r`rdri�
__classcell__r
r
rrr.sD	













r�AF_UNIXzUNIX Sockets are not supportedcs�eZdZ�fdd�Zejdd��Zejdd��Zdd�Zd	d
�Z	dd�Z
d
d�Zdd�Zdd�Z
e�eed�d�ejdd���Zdd�Zdd�Ze�d�dd��Zdd�Zd d!�Zd"d#�Zd$d%�Zd&d'�Z�ZS)(� SelectorEventLoopUnixSocketTestscs$t���t��|_|�|j�dSrrrrr
rrs

z&SelectorEventLoopUnixSocketTests.setUpcCs�t���n}t�tj�}|�|�|�d�|��|j�dd�|�}|j�	|�}|��|j�	|�
��Wd�n1s|0YdS)NrcSsdSrr
r
r
r
rr-r.z]SelectorEventLoopUnixSocketTests.test_create_unix_server_existing_path_sock.<locals>.<lambda>)�
test_utils�unix_socket_path�socketrl�bindZlistenr
r�create_unix_server�run_until_complete�wait_closed)r�path�sock�coro�srvr
r
r�*test_create_unix_server_existing_path_socks


zKSelectorEventLoopUnixSocketTests.test_create_unix_server_existing_path_sockcCslt���P}t�|�}|j�dd�|�}|j�|�}|��|j�|���Wd�n1s^0YdS)NcSsdSrr
r
r
r
rr-&r.zRSelectorEventLoopUnixSocketTests.test_create_unix_server_pathlib.<locals>.<lambda>)	rnro�pathlib�Pathrrrrsr
rt)rruZsrv_cororxr
r
r�test_create_unix_server_pathlib"s

z@SelectorEventLoopUnixSocketTests.test_create_unix_server_pathlibc	Cs~t���b}t�|�}|j�dd�|�}|�t��|j�|�Wd�n1sR0YWd�n1sp0YdS)NcSsdSrr
r
r
r
rr-.r.zVSelectorEventLoopUnixSocketTests.test_create_unix_connection_pathlib.<locals>.<lambda>)	rnrorzr{r�create_unix_connectionr�FileNotFoundErrorrs)rrurwr
r
r�#test_create_unix_connection_pathlib+s


zDSelectorEventLoopUnixSocketTests.test_create_unix_connection_pathlibc	Csxt���\}|j�dd�|j�}|�td��|j�|�Wd�n1sL0YWd�n1sj0YdS)NcSsdSrr
r
r
r
rr-6r.z`SelectorEventLoopUnixSocketTests.test_create_unix_server_existing_path_nonsock.<locals>.<lambda>zAddress.*is already in use)�tempfile�NamedTemporaryFilerrr�namer:rJrs)r�filerwr
r
r�-test_create_unix_server_existing_path_nonsock4s
�zNSelectorEventLoopUnixSocketTests.test_create_unix_server_existing_path_nonsockcCsR|jjdd�ddd�}|�td��|j�|�Wd�n1sD0YdS)NcSsdSrr
r
r
r
rr-<r.zSSelectorEventLoopUnixSocketTests.test_create_unix_server_ssl_bool.<locals>.<lambda>�spamT)ru�sslz"ssl argument must be an SSLContext)rrrr:rrs�rrwr
r
r� test_create_unix_server_ssl_bool;s��zASelectorEventLoopUnixSocketTests.test_create_unix_server_ssl_boolcCsP|jjdd�dd�}|�td��|j�|�Wd�n1sB0YdS)NcSsdSrr
r
r
r
rr-Cr.zXSelectorEventLoopUnixSocketTests.test_create_unix_server_nopath_nosock.<locals>.<lambda>�ruz#path was not specified, and no sock�rrrr:rrsr�r
r
r�%test_create_unix_server_nopath_nosockBs
�zFSelectorEventLoopUnixSocketTests.test_create_unix_server_nopath_nosockc	Cs~t��}|�^|jjdd�d|d�}|�td��|j�|�Wd�n1sR0YWd�n1sp0YdS)NcSsdSrr
r
r
r
rr-Kr.zXSelectorEventLoopUnixSocketTests.test_create_unix_server_path_inetsock.<locals>.<lambda>�rurv�"A UNIX Domain Stream.*was expected)rprrrr:rrs�rrvrwr
r
r�%test_create_unix_server_path_inetsockHs��zFSelectorEventLoopUnixSocketTests.test_create_unix_server_path_inetsockc	Cs�t�tjtj�}|�^|jjdd�d|d�}|�td��|j�|�Wd�n1sZ0YWd�n1sx0YdS)NcSsdSrr
r
r
r
rr-Tr.zUSelectorEventLoopUnixSocketTests.test_create_unix_server_path_dgram.<locals>.<lambda>r�r�)rprlZ
SOCK_DGRAMrrrr:rrsr�r
r
r�"test_create_unix_server_path_dgramQs��zCSelectorEventLoopUnixSocketTests.test_create_unix_server_path_dgram�
SOCK_NONBLOCKz$no socket.SOCK_NONBLOCK (linux only)c	Cs�t�tjtjtjB�}t���}|j}Wd�n1s:0Yzv|�T|�|�|jj	dd�d|d�}|j�
|�}|��|j�
|���Wd�n1s�0YWt
�|�nt
�|�0dS)NcSsdSrr
r
r
r
rr-er.z^SelectorEventLoopUnixSocketTests.test_create_unix_server_path_stream_bittype.<locals>.<lambda>r�)rprl�SOCK_STREAMr�r�r�r�rqrrrrsr
rt�os�unlink)rrvr��fnrwrxr
r
r�+test_create_unix_server_path_stream_bittypeZs�
$
�0zLSelectorEventLoopUnixSocketTests.test_create_unix_server_path_stream_bittypecCsR|jjdd�ddd�}|�td��|j�|�Wd�n1sD0YdS)NcSsdSrr
r
r
r
rr-nr.zfSelectorEventLoopUnixSocketTests.test_create_unix_server_ssl_timeout_with_plain_sock.<locals>.<lambda>r�r�ruZssl_handshake_timeout�1ssl_handshake_timeout is only meaningful with sslr�r�r
r
r�3test_create_unix_server_ssl_timeout_with_plain_sockms��zTSelectorEventLoopUnixSocketTests.test_create_unix_server_ssl_timeout_with_plain_sockc	Cs|t��}|�\|jjdd�|d�}|�td��|j�|�Wd�n1sP0YWd�n1sn0YdS)NcSsdSrr
r
r
r
rr-xr.z\SelectorEventLoopUnixSocketTests.test_create_unix_connection_path_inetsock.<locals>.<lambda>�rvr�)rprr}r:rrsr�r
r
r�)test_create_unix_connection_path_inetsockus��zJSelectorEventLoopUnixSocketTests.test_create_unix_connection_path_inetsockzasyncio.unix_events.socketcCs�t��}||j_t|j_|jjdd�dd�}|�	t��|j�
|�Wd�n1sX0Y|�|jj
�t|j_|jjdd�dd�}|�	t��|j�
|�Wd�n1s�0Y|�|jj
�dS)NcSsdSrr
r
r
r
rr-�r.zUSelectorEventLoopUnixSocketTests.test_create_unix_server_bind_error.<locals>.<lambda>z/testr�cSsdSrr
r
r
r
rr-�r.)rr%rprfrJrqr1rrrrrsrVr
rO�MemoryError)rZm_socketrvrwr
r
r�"test_create_unix_server_bind_error~s**zCSelectorEventLoopUnixSocketTests.test_create_unix_server_bind_errorcCsV|jjdd�tjt�d�}|�td��|j�|�Wd�n1sH0YdS)NcSsdSrr
r
r
r
rr-�r.zXSelectorEventLoopUnixSocketTests.test_create_unix_connection_path_sock.<locals>.<lambda>r�zpath and sock can not be)rr}r��devnullrZr:rrsr�r
r
r�%test_create_unix_connection_path_sock�s
�zFSelectorEventLoopUnixSocketTests.test_create_unix_connection_path_sockcCsN|j�dd�d�}|�td��|j�|�Wd�n1s@0YdS)NcSsdSrr
r
r
r
rr-�r.z\SelectorEventLoopUnixSocketTests.test_create_unix_connection_nopath_nosock.<locals>.<lambda>zno path and sock were specified�rr}r:rrsr�r
r
r�)test_create_unix_connection_nopath_nosock�s��zJSelectorEventLoopUnixSocketTests.test_create_unix_connection_nopath_nosockcCsT|jjdd�tjdd�}|�td��|j�|�Wd�n1sF0YdS)NcSsdSrr
r
r
r
rr-�r.z_SelectorEventLoopUnixSocketTests.test_create_unix_connection_nossl_serverhost.<locals>.<lambda>r�)Zserver_hostnamez"server_hostname is only meaningful�rr}r�r�r:rrsr�r
r
r�,test_create_unix_connection_nossl_serverhost�s��zMSelectorEventLoopUnixSocketTests.test_create_unix_connection_nossl_serverhostcCsT|jjdd�tjdd�}|�td��|j�|�Wd�n1sF0YdS)NcSsdSrr
r
r
r
rr-�r.z_SelectorEventLoopUnixSocketTests.test_create_unix_connection_ssl_noserverhost.<locals>.<lambda>T)r�z/you have to pass server_hostname when using sslr�r�r
r
r�,test_create_unix_connection_ssl_noserverhost�s��zMSelectorEventLoopUnixSocketTests.test_create_unix_connection_ssl_noserverhostcCsR|jjdd�ddd�}|�td��|j�|�Wd�n1sD0YdS)NcSsdSrr
r
r
r
rr-�r.zjSelectorEventLoopUnixSocketTests.test_create_unix_connection_ssl_timeout_with_plain_sock.<locals>.<lambda>r�rr�r�r�r�r
r
r�7test_create_unix_connection_ssl_timeout_with_plain_sock�s��zXSelectorEventLoopUnixSocketTests.test_create_unix_connection_ssl_timeout_with_plain_sock)rErFrGrrZskip_unless_bind_unix_socketryr|rr�r�r�r�r��unittest�
skipUnless�hasattrrpr�r�r�rrjr�r�r�r�r�r�rkr
r
rrrms2

			�	
	rm�sendfilezsendfile is not supportedcs�eZdZddZGdd�dej�Ze�fdd��Ze�fdd��Z	�fd	d
�Z
d&dd
�Zdd�Zdd�Z
dd�Zdd�Zdd�Zdd�Zdd�Zdd�Zdd�Zd d!�Zd"d#�Zd$d%�Z�ZS)'�&SelectorEventLoopUnixSockSendfileTestss�12345abcde12345abcde12345abcde12345abcde12345abcde12345abcde12345abcde12345abcde12345abcde12345abcde12345abcde12345abcde12345abcde12345abcde12345abcde12345abcde�c@s4eZdZdd�Zdd�Zdd�Zdd�Zd	d
�ZdS)z.SelectorEventLoopUnixSockSendfileTests.MyProtocCs2d|_d|_t�|_|��|_d|_|��|_dS)NF)�started�closed�	bytearray�data�
create_future�futr�_ready)rrr
r
r�__init__�s
z7SelectorEventLoopUnixSockSendfileTests.MyProto.__init__cCsd|_||_|j�d�dSr,)r�rr��
set_result)rrr
r
r�connection_made�sz>SelectorEventLoopUnixSockSendfileTests.MyProto.connection_madecCs|j�|�dSr)r��extend)rr�r
r
r�
data_received�sz<SelectorEventLoopUnixSockSendfileTests.MyProto.data_receivedcCsd|_|j�d�dSr,)r�r�r�)r�excr
r
r�connection_lost�sz>SelectorEventLoopUnixSockSendfileTests.MyProto.connection_lostc�s|jIdHdSr)r�rr
r
rrt�sz:SelectorEventLoopUnixSockSendfileTests.MyProto.wait_closedN)rErFrGr�r�r�r�rtr
r
r
r�MyProto�s
r�csFttjd��}|�|j�Wd�n1s.0Yt���dS)N�wb)�openr�TESTFN�write�DATAr�
setUpClass)�cls�fprr
rr��s*z1SelectorEventLoopUnixSockSendfileTests.setUpClasscst�tj�t���dSr)rr�r�r�
tearDownClass)r�rr
rr��sz4SelectorEventLoopUnixSockSendfileTests.tearDownClasscs@t��|_|�|j�ttjd�|_|�|jj	�t
���dS)N�rb)r	�new_event_looprrr�rr�r�r9r
rrrrr
rr�s

z,SelectorEventLoopUnixSockSendfileTests.setUpTcCsRt�tjtj�}|�d�|�tjtjd�|�tjtjd�|rN|�|j	�|S)NFr�)
rpZAF_INETr�ZsetblockingZ
setsockoptZ
SOL_SOCKETZ	SO_SNDBUFZ	SO_RCVBUFr9r
)r�cleanuprvr
r
r�make_socket�s
z2SelectorEventLoopUnixSockSendfileTests.make_socketcCs|j�|�Sr)rrsr�r
r
r�run_loop�sz/SelectorEventLoopUnixSockSendfileTests.run_loopcs����}���j��t��}�jdd�}|�tj|f����jj�fdd�|d������j�	|tj|f�����j
����fdd�}��|�|�fS)NF)r�cs�Srr
r
)�protor
rr-�r.z@SelectorEventLoopUnixSockSendfileTests.prepare.<locals>.<lambda>r�cs2�j�����������������dSr)rr
r�rtr
�r�rZserverr
rr��s
z?SelectorEventLoopUnixSockSendfileTests.prepare.<locals>.cleanup)r�r�rrZfind_unused_portrqZHOSTr�Z
create_serverZsock_connectr�r9)rrvZportZsrv_sockr�r
r�r�prepare�s
�
z.SelectorEventLoopUnixSockSendfileTests.preparec
Cs�|��\}}tjdgd��X|�tjd��*|�|j�||j	dd��Wd�n1sZ0YWd�n1sx0Y|�
|j	��d�dS)Nzasyncio.unix_events.os)�specz$os[.]sendfile[(][)] is not availabler)r�rrjr:r	�SendfileNotAvailableErrorr�r�_sock_sendfile_nativer�r@�tell)rrvr�r
r
r� test_sock_sendfile_not_availables��BzGSelectorEventLoopUnixSockSendfileTests.test_sock_sendfile_not_availablec	Csn|��\}}t�}|�tjd��(|�|j�||dd��Wd�n1sN0Y|�|j	�
�d�dS�N�not a regular filer)r�rZr:r	r�r�rr�r@r�r��rrvr��fr
r
r�test_sock_sendfile_not_a_files��$zDSelectorEventLoopUnixSockSendfileTests.test_sock_sendfile_not_a_filec	Csp|��\}}t��}|�tjd��(|�|j�||dd��Wd�n1sP0Y|�	|j
��d�dSr�)r��io�BytesIOr:r	r�r�rr�r@r�r�r�r
r
r�test_sock_sendfile_iobuffers��$zBSelectorEventLoopUnixSockSendfileTests.test_sock_sendfile_iobufferc	Csx|��\}}t��}d|j_|�tjd��(|�|j	�
||dd��Wd�n1sX0Y|�|j�
�d�dS)NrCr�r)r�rr%�filenorfr:r	r�r�rr�r@r�r�r�r
r
r�#test_sock_sendfile_not_regular_file#s��$zJSelectorEventLoopUnixSockSendfileTests.test_sock_sendfile_not_regular_filec
Cs�|��\}}|j��}|j��}|j�|d||ddt|j�d�|��t	�
tj��|�
|�Wd�n1st0Y|�t��|jj�|�Wd�n1s�0YdS�Nr)r�rr�r�r��_sock_sendfile_native_implrbr�r&�
contextlib�suppressr	ZCancelledErrorr�r�KeyError�	_selector�get_key�rrvr�r�r�r
r
r�test_sock_sendfile_cancel1-s

�(zASelectorEventLoopUnixSockSendfileTests.test_sock_sendfile_cancel1c
Cs�|��\}}|j��}|j��}|j�|d||ddt|j�d�|��|j�||��||ddt|j�d�|�	t
��|jj�|�Wd�n1s�0YdSr�)
r�rr�r�r�r�rbr�r&rr�r�r�r�r
r
r�test_sock_sendfile_cancel2:s

��zASelectorEventLoopUnixSockSendfileTests.test_sock_sendfile_cancel2cCs�|��\}}|j��}t��}d|j_tjdt�d��0|j	�
|d||ddt|j�d�Wd�n1sl0Y|j	j
�|�}|�|�|j�tj�dS)NF�os.sendfile�r1r)r�r�r�rr%Z	cancelledrfrj�BlockingIOErrorrr�rbr�r�r��assertIsNotNoneZadd_done_callbackrc�ANY)rrvr�r�r��keyr
r
r�!test_sock_sendfile_blocking_errorGs
�"
zHSelectorEventLoopUnixSockSendfileTests.test_sock_sendfile_blocking_errorcCs�|��\}}|j��}|j��}tjdt�d��0|j�|d||ddt	|j
�d�Wd�n1sf0Y|�t��|jj
�|�Wd�n1s�0Y|��}|�|tj�|�d|j���dS)Nr�r�r)r�r�r�rr�rrjrJr�rbr�rr�r�r��	exceptionr?r	r�r@r�)rrvr�r�r�r�r
r
r�&test_sock_sendfile_os_error_first_callTs

�",zMSelectorEventLoopUnixSockSendfileTests.test_sock_sendfile_os_error_first_callcCs�|��\}}|j��}|j��}t�}tjd|d��4|j�||��||ddt	|j
�d�Wd�n1sn0Y|�t��|jj
�|�Wd�n1s�0Y|��}|�||�|�d|j���dS�Nr�r�i�)r�r�r�rr�rJrrjr�rbr�rr�r�r�r��assertIsr@r��rrvr�r�r��errr�r
r
r�%test_sock_sendfile_os_error_next_callbs

�",zLSelectorEventLoopUnixSockSendfileTests.test_sock_sendfile_os_error_next_callcCs�|��\}}|j��}|j��}t��}tjd|d��4|j�	||��||ddt
|j�d�Wd�n1sp0Y|�t
��|jj�|�Wd�n1s�0Y|��}|�||�|�d|j���dSr�)r�r�r�rr�r	r�rrjr�rbr�rr�r�r�r�r�r@r�r�r
r
r�test_sock_sendfile_exceptionss

�",zCSelectorEventLoopUnixSockSendfileTests.test_sock_sendfile_exception)T)rErFrGr�r	�Protocolr��classmethodr�r�rr�r�r�r�r�r�r�r�r�r�r�r�r�rkr
r
rrr��s(
				



r�cs
eZdZ�fdd�Zd(dd�Zdd�Ze�d�d	d
��Ze�d�dd��Z	e�d�d
d��Z
e�d�e�d�dd���Ze�d�dd��Ze�d�dd��Z
e�d�dd��Ze�d�dd��Ze�d�dd��Zdd�Zdd�Zd d!�Zd"d#�Zd$d%�Zd&d'�Z�ZS))�UnixReadPipeTransportTestscs�t���|��|_t�tj�|_t	j
tjd�|_
d|j
j_t	�d�}|��|�|j�t	�d�}|��}t	�
�}tj|_||_|�|j�dS�N)Zspec_set�zos.set_blockingzos.fstat)rr�
new_test_looprrn�make_test_protocolr	r��protocolrr%r��	RawIOBase�piper�rfrj�startr9�stop�stat�S_IFIFO�st_mode�rZblocking_patcherZ
fstat_patcherZm_fstat�strr
rr�s




z UnixReadPipeTransportTests.setUpNcCs(tj|j|j|j|d�}|�t|�|S�N��waiter)rZ_UnixReadPipeTransportrr�r�r9r�rrrr
r
r�read_pipe_transport�s�z.UnixReadPipeTransportTests.read_pipe_transportcCsR|j��}|j|d�}|j�|�|jj�|�|j�d|j�|�	|�
��dS�Nrr�)rr�r	rsr�r�r)�
assert_reader�_read_ready�assertIsNone�result�rr�trr
r
r�	test_ctor�s
z$UnixReadPipeTransportTests.test_ctorzos.readcCs6|��}d|_|��|�d|j�|jj�d�dS�N�datar�)r	rfrr)�max_sizer�r��r�m_readrr
r
r�test__read_ready�s
z+UnixReadPipeTransportTests.test__read_readycCs\|��}d|_|��|�d|j�|�|jj�t�	|j�|j
j��|j
j�d�dS)Nr.r�)
r	rfrr)rrMr�readersrn�run_brieflyr�Zeof_receivedr�rr
r
r�test__read_ready_eof�sz/UnixReadPipeTransportTests.test__read_ready_eofcCsD|��}t|_|��|�d|j�t�|j�|�	|j
jj�dS�Nr�)
r	r�r1rr)rrnrrrMr�r�rOrr
r
r�test__read_ready_blocked�sz3UnixReadPipeTransportTests.test__read_ready_blocked�asyncio.log.logger.errorcCs^|��}t�}||_t��|_|��|�d|j�|j�|�|jt	�
d�tttfd�dS)Nr�z;Fatal read error on pipe transport
protocol:.*
transport:.*)�exc_info)r	rJr1rr%�_closerr)rrnZMockPattern�MOCK_ANY)rr�m_logexcrr�r
r
r�test__read_ready_error�s
��z1UnixReadPipeTransportTests.test__read_ready_errorcCs8|��}t��}|j�d|�|��|�|jj�dSr)r	rr%r�
add_reader�
pause_readingrMr)rrr�mr
r
r�test_pause_reading�s
z-UnixReadPipeTransportTests.test_pause_readingcCs,|��}|��|��|j�d|j�dSr)r	r$�resume_readingrrrrr
r
r�test_resume_reading�sz.UnixReadPipeTransportTests.test_resume_readingcCs*|��}t��|_|��|j�d�dSr)r	rr%rr
r)rr
r
rrd�s
z%UnixReadPipeTransportTests.test_closecCs2|��}d|_t��|_|��|�|jj�dSr,)r	�_closingrr%rr
rMrOrr
r
r�test_close_already_closing�s

z5UnixReadPipeTransportTests.test_close_already_closingcCsR|��}t�}|�|�|�|���|�|jj�t�	|j�|j
j�|�dSr)
r	rZrrV�
is_closingrMrrrnrr�r�r))rrrr�r
r
r�test__close�s
z&UnixReadPipeTransportTests.test__closecCsd|��}|�|j�|�|j�d}|�|�|jj�|�|jj	��|�
|j�|�
|j�dSr)r	r��	_protocol�_loop�_call_connection_lostr�r�r)r�r
r
�rrr�r
r
r�test__call_connection_losts
z5UnixReadPipeTransportTests.test__call_connection_lostcCsf|��}|�|j�|�|j�t�}|�|�|jj�|�|j	j
��|�|j�|�|j�dSr)r	r�r-r.rJr/r�r�r)r�r
r
r0r
r
r�#test__call_connection_lost_with_errs
z>UnixReadPipeTransportTests.test__call_connection_lost_with_errcCs4|��}|��t�|j�|�|j�|��dSr)r	r
rnrrr
r.r$�rrr
r
r�!test_pause_reading_on_closed_pipes
z<UnixReadPipeTransportTests.test_pause_reading_on_closed_pipecCs|��}|��|��dSr)r	r$r3r
r
r�!test_pause_reading_on_paused_pipe"sz<UnixReadPipeTransportTests.test_pause_reading_on_paused_pipecCs4|��}|��t�|j�|�|j�|��dSr)r	r
rnrrr
r.r'r3r
r
r�"test_resume_reading_on_closed_pipe(s
z=UnixReadPipeTransportTests.test_resume_reading_on_closed_pipecCs|��}|��dSr)r	r'r3r
r
r�"test_resume_reading_on_paused_pipe/sz=UnixReadPipeTransportTests.test_resume_reading_on_paused_pipe)N)rErFrGrr	rrrjrrrr"r&r(rdr*r,r1r2r4r5r6r7rkr
r
rrr��s8
	


	




	

r�cs~eZdZ�fdd�Zd7dd�Zdd�Zdd	�Ze�d
�dd��Z	e�d
�d
d��Z
e�d
�dd��Ze�d
�dd��Ze�d
�dd��Z
e�d�e�d
�dd���Ze�d
�dd��Zdd�Ze�d
�dd��Ze�d
�dd��Ze�d
�d d!��Ze�d
�d"d#��Ze�d$�e�d
�d%d&���Ze�d
�d'd(��Ze�d
�d)d*��Zd+d,�Zd-d.�Zd/d0�Zd1d2�Zd3d4�Zd5d6�Z�ZS)8�UnixWritePipeTransportTestscs�t���|��|_t�tj�|_t	j
tjd�|_
d|j
j_t	�d�}|��|�|j�t	�d�}|��}t	�
�}tj|_||_|�|j�dSr�)rrr�rrnr�r	ZBaseProtocolr�rr%r�r�r�r�rfrjr�r9r�r�S_IFSOCKrrrr
rr8s




z!UnixWritePipeTransportTests.setUpNcCs(tj|j|j|j|d�}|�t|�|Sr)rZ_UnixWritePipeTransportrr�r�r9rrr
r
r�write_pipe_transportJs�z0UnixWritePipeTransportTests.write_pipe_transportcCsT|j��}|j|d�}|j�|�|jj�|�|j�d|j�|�	d|�
��dSr
)rr�r:rsr�r�r)rrr@rrr
r
rrQs
z%UnixWritePipeTransportTests.test_ctorcCs|��}|�|���dSr)r:rVZ
can_write_eofr3r
r
r�test_can_write_eofZsz.UnixWritePipeTransportTests.test_can_write_eofzos.writecCsF|��}d|_|�d�|�dd�|�|jj�|�t�|j	�dS)N�rr�)
r:rfr�r)rMr�writersr@r��_buffer�r�m_writerr
r
r�
test_write^s
z&UnixWritePipeTransportTests.test_writecCsB|��}|�d�|�|j�|�|jj�|�td�|j�dS)Nr.)	r:r�rMrOrr=r@r�r>r?r
r
r�test_write_no_datags

z.UnixWritePipeTransportTests.test_write_no_datacCs>|��}d|_|�d�|j�d|j�|�td�|j�dS)NrTrr��ta)	r:rfr�r�
assert_writer�_write_readyr@r�r>r?r
r
r�test_write_partialos

z.UnixWritePipeTransportTests.test_write_partialcCs^|��}|j�d|j�td�|_|�d�|�|j�|j�	d|j�|�
td�|j�dS)Nr�spreviousrspreviousdata)r:r�
add_writerrEr�r>r�rMrOrDr@r?r
r
r�test_write_bufferws

z-UnixWritePipeTransportTests.test_write_buffercCsP|��}t�|_|�d�|�dtd��|j�d|j�|�	td�|j
�dSr)r:r�r1r�r)r�rrDrEr@r>r?r
r
r�test_write_again�s
z,UnixWritePipeTransportTests.test_write_againzasyncio.unix_events.loggercCs�|��}t�}||_t��|_|�d�|�dd�|�|j	j
�|�t�|j
�|j�|d�|�d|j�|�d�|�d|j�|�d�|�d�|�d�|�d�|j�d�|��dS)Nrr�z#Fatal write error on pipe transportrrTz=pipe closed by peer or os.write(pipe, data) raised exception.)r:rJr1rr%Z_fatal_errorr�r)rMrr=r@r�r>�
_conn_lost�warningr
)rr@Zm_logrr�r
r
r�test_write_err�s.

�




�z*UnixWritePipeTransportTests.test_write_errcCsD|��}|��|�d�|�|jd�|�d�|�|jd�dS)NrrrT)r:rr�r@rJr?r
r
r�test_write_close�s

z,UnixWritePipeTransportTests.test_write_closecCsX|��}|��|�|jj�|�|jj�|�|���t�	|j�|j
j�d�dSr)
r:rrMrrr=rVr+rnrr�r�r)r3r
r
rr�sz,UnixWritePipeTransportTests.test__read_readycCsR|��}|j�d|j�td�|_d|_|��|�|jj�|�	t�|j�dS)Nr�rr<)
r:rrGrEr�r>rfrMr=r@r?r
r
r�test__write_ready�s
z-UnixWritePipeTransportTests.test__write_readycCsV|��}|j�d|j�td�|_d|_|��|j�d|j�|�td�|j�dS)Nr�r��a)	r:rrGrEr�r>rfrDr@r?r
r
r�test__write_ready_partial�s
z5UnixWritePipeTransportTests.test__write_ready_partialcCsh|��}|j�d|j�td�|_t�|_|��|�dtd��|j�	d|j�|�
td�|j�dS)Nr�r)r:rrGrEr�r>r�r1r)rDr@r?r
r
r�test__write_ready_again�s
z3UnixWritePipeTransportTests.test__write_ready_againcCsf|��}|j�d|j�td�|_d|_|��|�dtd��|j�d|j�|�	td�|j�dS)Nr�rr)
r:rrGrEr�r>rfr)rDr@r?r
r
r�test__write_ready_empty�s
z3UnixWritePipeTransportTests.test__write_ready_emptyrcCs�|��}|j�d|j�td�|_t�|_}|��|�|jj	�|�|jj
�|�t�|j�|�|�
��|��|�d|j�t�|j�|jj�|�dS)Nr�rr)r:rrGrEr�r>rJr1rMr=rr@rVr+Zassert_not_calledrJrnrr�r�r))rr@r!rr�r
r
r�test__write_ready_err�s
z1UnixWritePipeTransportTests.test__write_ready_errcCs�|��}|j�d|j�d|_td�|_d|_|��|�|jj	�|�|jj
�|�t�|j�|jj
�d�|jj��dS)Nr�Trr<)r:rrGrEr)r�r>rfrMr=rr@r�r�r)r�r
r?r
r
r�test__write_ready_closing�s
z5UnixWritePipeTransportTests.test__write_ready_closingcCs�|��}|j�d|j�|j�d|j�ddg|_|��|�|j	�|�|jj
�|�|jj�|�g|j�|�
|���t�|j�|jj�d�dS)Nr�sdarC)r:rrGrEr#rr>�abortrMrOrr=r@rVr+rnrr�r�r)r?r
r
r�
test_aborts
z&UnixWritePipeTransportTests.test_abortcCsd|��}|�|j�|�|j�d}|�|�|jj�|�|jj	��|�
|j�|�
|j�dSr)r:r�r-r.r/r�r�r)r�r
r
r0r
r
rr1s
z6UnixWritePipeTransportTests.test__call_connection_lostcCsf|��}|�|j�|�|j�t�}|�|�|jj�|�|j	j
��|�|j�|�|j�dSr)r:r�r-r.rJr/r�r�r)r�r
r
r0r
r
rr2s
z?UnixWritePipeTransportTests.test__call_connection_lost_with_errcCs0|��}t��|_|��|j��|��dSr)r:rr%�	write_eofr
r)r3r
r
rrd*s


z&UnixWritePipeTransportTests.test_closecCs2|��}t��|_d|_|��|�|jj�dSr,)r:rr%rXr)r
rMrOr3r
r
r�test_close_closing3s

z.UnixWritePipeTransportTests.test_close_closingcCsJ|��}|��|�|���|�|jj�t�|j�|j	j
�d�dSr)r:rXrVr+rMrrrnrr�r�r)r3r
r
r�test_write_eof:sz*UnixWritePipeTransportTests.test_write_eofcCs:|��}dg|_|��|�|���|�|jjj�dS)Nr)	r:r>rXrVr+rMr�r�rOr3r
r
r�test_write_eof_pendingBs
z2UnixWritePipeTransportTests.test_write_eof_pending)N)rErFrGrr:rr;rrjrArBrFrHrIrLrMrrNrQrRrSrTrUrWr1r2rdrYrZr[rkr
r
rrr86sR
	



	

		
	
	








	r8c@seZdZdd�ZdS)�AbstractChildWatcherTestscCs�t��}t��}|�t|j||�|�t|j|�|�t|j|�|�t|j	�|�t|j
�|�t|j�|�t|j|||�dSr)
rr%r	ZAbstractChildWatcherr�NotImplementedError�add_child_handler�remove_child_handler�attach_loopr
Z	is_active�	__enter__�__exit__�rr��watcherr
r
r�test_not_implementedLs.
�������z.AbstractChildWatcherTests.test_not_implementedN�rErFrGrer
r
r
rr\Jsr\c@seZdZdd�ZdS)�BaseChildWatcherTestscCs$t��}t��}|�t|j|�dSr)rr%rZBaseChildWatcherrr]Z_do_waitpidrcr
r
rreas
�z*BaseChildWatcherTests.test_not_implementedNrfr
r
r
rrg_srg�WaitPidMocks)�waitpid�	WIFEXITED�WIFSIGNALED�WEXITSTATUS�WTERMSIGcseZdZej�ejd�Z�fdd�Z	dd�Z
dd�Zdd	�Zd
d�Z
dd
�Zdd�Zdd�Zdd�Zedd��Zedd��Zedd��Zedd��Zedd��Zedd��Zed d!��Zed"d#��Zed$d%��Zed&d'��Zed(d)��Zed*d+��Zed,d-��Zed.d/��Z�Z S)0�ChildWatcherTestsMixinrKcsnt���|��|_d|_i|_tj�|jd��*|_	|�
�|_|j�|j�Wd�n1s`0YdS)NFr3)
rrr�r�running�zombiesrrjrZ�m_add_signal_handler�create_watcherrdr`rrr
rrus

�
zChildWatcherTestsMixin.setUpcCstt|jtj�s|dkr"|�|d�z*|dkr8|j��WS||j�|�fWSWnty^Yn0|j	rjdSt
��dS)NrCr)rr)�
isinstancerdr	�SafeChildWatcherZ
assertGreaterrp�popitem�popr�ro�ChildProcessError)r�pid�flagsr
r
rri�szChildWatcherTestsMixin.waitpidcCs|d|j|<dS�N��)rp)rrx�
returncoder
r
r�
add_zombie�sz!ChildWatcherTestsMixin.add_zombiecCs|dkSrzr
�rZstatusr
r
rrj�sz ChildWatcherTestsMixin.WIFEXITEDcCsd|kodkSS)Ni�r{r
r~r
r
rrk�sz"ChildWatcherTestsMixin.WIFSIGNALEDcCs|�|�|��|dSrz)rVrjr~r
r
rrl�sz"ChildWatcherTestsMixin.WEXITSTATUScCs|�|�|��d|Srz)rVrkr~r
r
rrm�szChildWatcherTestsMixin.WTERMSIGcCs|j�tj|jj�dSr)rqrcrrard�	_sig_chldrr
r
r�test_create_watcher�s
�z*ChildWatcherTestsMixin.test_create_watchercs�fdd�}|S)Nc
s�dd�}|d|j���}|d|j���}|d|j��~}|d|j��R}|d|j��&}�|t|||||��Wd�n1sx0YWd�n1s�0YWd�n1s�0YWd�n1s�0YWd�n1s�0YdS)NcSstj||tjd�S)N)�wrapsZnew_callable)rrjr%)�target�wrapperr
r
rrj�s�zIChildWatcherTestsMixin.waitpid_mocks.<locals>.wrapped_func.<locals>.patchzos.WTERMSIGzos.WEXITSTATUSzos.WIFSIGNALEDzos.WIFEXITEDz
os.waitpid)rmrlrkrjrirh)rrjZ
m_WTERMSIGZ
m_WEXITSTATUSZ
m_WIFSIGNALEDZm_WIFEXITEDZ	m_waitpid�r;r
r�wrapped_func�s$
�
�
�
��z:ChildWatcherTestsMixin.waitpid_mocks.<locals>.wrapped_funcr
)r;r�r
r�r�
waitpid_mocks�sz$ChildWatcherTestsMixin.waitpid_mockscCs*t��}|j�*d|_|j�d|ddd�Wd�n1s>0Y|�|j�|�|jj�|�|jj�|�|j	j�|�|j
j�|j��|�|j�|�|jj�|�|jj�|�|j	j�|�|j
j�d|_|�dd�|j��|�
|jj�|�
|j	j�|�|j
j�|�ddddd�|j��|j��|j	��|��|�dd�|j�|j��Wd�n1�s�0Y|�|j�|�|j
j�|j��|j��|j	��|j��|j��|�|j�|�|jj�|�|jj�|�|j	j�|�|j
j�dS)	NT�*�	�
�F��
)rr%rdror^rMrOrjrkrlrmrr}rVrcr[�ignore_warningsrp�clear�rr%�callbackr
r
r�test_sigchld�sR2




*




z#ChildWatcherTestsMixin.test_sigchldcCs�t��}t��}|j�(d|_|j�d|dd�Wd�n1sD0Y|�|j�|�|j�|�|jj�|�|jj�|�|j	j�|�|j
j�|j�"|j�d|dd�Wd�n1s�0Y|�|j�|�|j�|�|jj�|�|jj�|�|j	j�|�|j
j�|j��|�|j�|�|j�|�|jj�|�|jj�|�|j	j�|�|j
j�|�dd�|j��|�
dddd�|�|j�|�|jj�|�|j	j�|�|j
j�|j��|j��|j
��|��|j��|�|j�|�|j�|�|jj�|�|jj�|�|j	j�|�|j
j�|�dd	�d
|_|j��|�
dd	dd�|�|j�|�|jj�|�|j	j�|�|j
j�|j��|j��|j	��|��|�dd�|�dd�|j�|j��Wd�n1�s$0Y|�|j�|�|j�|�|j
j�|j��|j��|j	��|j��|j��|�|j�|�|j�|�|jj�|�|jj�|�|j	j�|�|j
j�dS)
NT�+���,������lFr��)rr%rdror^rMrOrjrkrlrmrr}rcrVr[r�rpr��rr%�	callback1�	callback2r
r
r�test_sigchld_two_children�s�00









*




z0ChildWatcherTestsMixin.test_sigchld_two_childrencCs�t��}t��}|j�(d|_|j�d|dd�Wd�n1sD0Y|�|j�|�|j�|�|jj�|�|jj�|�|j	j�|�|j
j�|j�"|j�d|dd�Wd�n1s�0Y|�|j�|�|j�|�|jj�|�|jj�|�|j	j�|�|j
j�|j��|�|j�|�|j�|�|jj�|�|jj�|�|j	j�|�|j
j�|�dd�|�dd	�d
|_|j��|�
dddd�|�
dd	dd�|�|jj�|�|jj�|�|j	j�|�|j
j�|j��|j��|j
��|j	��|��|��|�dd�|�dd�|j�|j��Wd�n1�sx0Y|�|j�|�|j�|�|j
j�dS)
NT�-�r��.i{r��N���Fr�r�)rr%rdror^rMrOrjrkrlrmrr}rcrVr[r�r�r
r
r�.test_sigchld_two_children_terminating_togetherZsb00





*zEChildWatcherTestsMixin.test_sigchld_two_children_terminating_togethercCs�t��}|j�8|�dd�|j��|j�d|dd�Wd�n1sL0Y|�dddd�|��|�dd�|j�|j��Wd�n1s�0Y|�	|j
�dS)N�2r<rr�rC)rr%rdr}rr^rcr[r�rMrOr�r
r
r�test_sigchld_race_condition�s
0(z2ChildWatcherTestsMixin.test_sigchld_race_conditioncCst��}t��}|j�&d|_|j�d|d�Wd�n1sB0Y|�|j�|�|j�|�|jj�|�|jj�|�|j	j�|�|j
j�|j� |j�d|d�Wd�n1s�0Y|�|j�|�|j�|�|jj�|�|jj�|�|j	j�|�|j
j�d|_|�dd�|j��|�
ddd�|�|j�|�|jj�|�|j	j�|�|j
j�|j��|j��|j
��|��|�dd�|j�|j��Wd�n1�s�0Y|�|j�|�|j�|�|j
j�dS)NT�3��Fi����r�)rr%rdror^rMrOrjrkrlrmr}rrcrVr[r�r�r
r
r�test_sigchld_replace_handler�sJ..



*z3ChildWatcherTestsMixin.test_sigchld_replace_handlercCs,t��}|j�&d|_|j�d|d�Wd�n1s:0Y|�|j�|�|jj�|�|jj�|�|j	j�|�|j
j�|j�d�|�|j�|�|jj�|�|jj�|�|j	j�|�|j
j�d|_|�dd�|j
�|j��Wd�n1�s0Y|�|j�dS)NT�4i�F�c)rr%rdror^rMrOrjrkrlrmr_r}r�rr�r
r
r�test_sigchld_remove_handler�s(.*z2ChildWatcherTestsMixin.test_sigchld_remove_handlercCsRt��}|j�&d|_|j�d|d�Wd�n1s:0Y|�|j�|�|jj�|�|jj�|�|j	j�|�|j
j�d|jd<d|_|j��|�
ddd�|�|jj�|�|jj�|�|j	j�|�|j
j�|��|j��|j��|�dd�|j�|j��Wd�n1�s80Y|�|j�dS)NT�5i��i�F�e)rr%rdror^rMrOrjrkrlrmrprrcrVr[r}r�r�r
r
r�test_sigchld_unknown_status
s0.



*z2ChildWatcherTestsMixin.test_sigchld_unknown_statuscCsBt��}t��}t��}|j�Fd|_|j�d|d�|j�d|d�|j�d|d�Wd�n1sj0Y|�|j�d��|�|j�d��|�|j�d��|�|j�d��|�dd�|�dd�|�dd�d	|_|j	�|j�
�Wd�n1�s0Y|�|j�|�|j�|�ddd�dS)
NT�6r�7rT�8rOrF)
rr%rdror^rVr_rMr}r�rrOrc)rr%r�r��	callback3r
r
r�test_remove_child_handler/s*.*z0ChildWatcherTestsMixin.test_remove_child_handlercCs�t��}|j�$d|_|j�d|�Wd�n1s80Yt|j_tj�	t
jd��.}|�|j�
�d�|�|j�Wd�n1s�0YdS)NT�9�error)rr%rdror^rrir1rjrZr�loggerr@rrVrO)rr%r�Zm_errorr
r
r� test_sigchld_unhandled_exceptionPs,
�z7ChildWatcherTestsMixin.test_sigchld_unhandled_exceptioncCst��}|j�$d|_|j�d|�Wd�n1s80Y|�|j�|�|jj�|�|jj�|�|j	j�|�|j
j�d|_|�dd�t�
dtj�|j
��|j�|j��Wd�n1s�0Yt|jtj�r�|�|j�n|�dd�dS)NT�:Fr<�)rr%rdror^rMrOrjrkrlrmr}r�ri�WNOHANGr[r�rrsr	�FastChildWatcherrcr�r
r
r�#test_sigchld_child_reaped_elsewherebs$,
(z:ChildWatcherTestsMixin.test_sigchld_child_reaped_elsewherec	Cs�t��}t��}|j�z|j�Td|_|�dd�|�dd�|j��|j�d|�|j�d|�Wd�n1sx0YWd�n1s�0Y|�dd�|�	|j
�dS)NTiOr�iQr�iP)rr%r�rdror}rr^rcrMrOr�r
r
r�,test_sigchld_unknown_pid_during_registration�s
JzCChildWatcherTestsMixin.test_sigchld_unknown_pid_during_registrationc	Cst��}|j�$d|_|j�d|�Wd�n1s80Y|j}|��|_tjj}||d��h}||jd��<}|j�	|j�|�
tj�|�
tj|jj
�Wd�n1s�0YWd�n1s�0Yd|_|�dd�|j�
�|�
dd�dS)NT�<r(r3Fr�)rr%rdror^rr�rjrZr`rcrrarr})rr%r��old_looprjZm_old_removeZ	m_new_addr
r
r�
test_set_loop�s,,

��
�@
z$ChildWatcherTestsMixin.test_set_loopc	Cs�t��}t��}t��}|j�@d|_|j�d|�|j�d|�|j�d|�Wd�n1sd0Y|j}d|_tj�|d��T}|�t	d��|j�
d�Wd�n1s�0Y|�tj
�Wd�n1s�0Y|�dd�|�dd�|�|j�|�|j�|�|j�|��|_tj�|jd	��T}|j�
|j�|�tj
|jj�|�dd�|�dd�|�|j�Wd�n1�s�0Y|��|��d
|_|�dd�|j��|�|j�|�|j�|�dd�dS)NT�=�>inr(zA loop is being detached�r�r3Fr�)rr%rdror^rrjrZrg�RuntimeWarningr`rcrrar}rMrOr�rr[)rr%r�r�r�r��m_remove_signal_handlerrqr
r
r�test_set_loop_race_condition�s\,��*�"
�
�,
z3ChildWatcherTestsMixin.test_set_loop_race_conditionc	Cst��}|j��d|_|�dd�|�dd�|j��|j�d|�|j�d|�|�t|jj	�d�t
|jtj�r�|�t|jj
�d�tj�|jd��P}|j��|�tj�|�|jj	�t
|jtj�r�|�|jj
�Wd�n1s�0YWd�n1�s0YdS)	NT�?r��Ar��@rr()rr%rdror}rr^r@rbZ
_callbacksrsr	r�Z_zombiesrjrZrr
rcrrarM)rr%r�r�r
r
rrd�s.
�
�z!ChildWatcherTestsMixin.test_close)!rErFrGrrjrZrr�r�rrir}rjrkrlrmr�r�r�r�r�r�r�r�r�r�r�r�r�r�r�rdrkr
r
rrrnqsL
<
g
D

4

$
 

"


=rnc@seZdZdd�ZdS)�SafeChildWatcherTestscCst��Sr)r	rtrr
r
rrrsz$SafeChildWatcherTests.create_watcherN�rErFrGrrr
r
r
rr�sr�c@seZdZdd�ZdS)�FastChildWatcherTestscCst��Sr)r	r�rr
r
rrrsz$FastChildWatcherTests.create_watcherNr�r
r
r
rr�sr�c@s4eZdZdd�Zdd�Zdd�Zdd�Zd	d
�ZdS)�PolicyTestscCst��Sr)r	ZDefaultEventLoopPolicyrr
r
r�
create_policy$szPolicyTests.create_policycCsL|��}|�|j�|��}|�|tj�|�|j|�|�||���dSr)r�r
�_watcher�get_child_watcherr?r	ZThreadedChildWatcherr��r�policyrdr
r
r�test_get_default_child_watcher'sz*PolicyTests.test_get_default_child_watchercCs<|��}t��}|�|�|�|j|�|�||���dSr)r�r	r��set_child_watcherr�r�r�r�r
r
r� test_get_child_watcher_after_set2s

z,PolicyTests.test_get_child_watcher_after_setcsD��fdd�}������t���tj|d�}|��|��dS)NcsR�����������tj����}��|tj���|j	�����
�dSr)rr�r?�get_event_loopr	ZAbstractEventLoopr�rtr
r.r
)rd�r�rr
rr�<s
�z4PolicyTests.test_get_child_watcher_thread.<locals>.f)r�)r�r�r	rt�	threadingZThreadr��join)rr�Zthr
r�r�test_get_child_watcher_thread:sz)PolicyTests.test_get_child_watcher_threadcCs�|��}|��}t��}|�|�|�|�|�|j|�|��}|�	|�|�|j|�|�	d�|�|jd�|�
�|�
�dSr)r�r�r	rtr�r`r�r.r�rr
)rr�rrdZnew_loopr
r
r�,test_child_watcher_replace_mainloop_existingOs



z8PolicyTests.test_child_watcher_replace_mainloop_existingN)rErFrGr�r�r�r�r�r
r
r
rr�"s
r�c@s,eZdZdd�Zdd�Zdd�Zdd�Zd	S)
�TestFunctionalcCst��|_t�|j�dSr)r	r�rrrr
r
rrjs
zTestFunctional.setUpcCs|j��t�d�dSr)rr
r	rrr
r
r�tearDownns
zTestFunctional.tearDowncs��fdd�}dd�}|�� �j�t�|�Wd�n1s@0Y|�� �j�t�|�Wd�n1sv0Y|���j�t��Wd�n1s�0Y|���j�t��Wd�n1s�0YdS)Ncs��td�S)NzInvalid file object)r:rr
rr
r�
assert_raisessszFTestFunctional.test_add_reader_invalid_argument.<locals>.assert_raisescSsdSrr
r
r
r
rr-vr.zATestFunctional.test_add_reader_invalid_argument.<locals>.<lambda>)rr#rZrG�
remove_reader�
remove_writer)rr�rAr
rr� test_add_reader_invalid_argumentrs..,z/TestFunctional.test_add_reader_invalid_argumentcsb�fdd�����fdd�}t��\�}z"�j�|��W���|��n���|��0dS)Ncs��td�S)Nz'File descriptor .* is used by transport)r:r2r
rr
rr��s�zLTestFunctional.test_add_reader_or_writer_transport_fd.<locals>.assert_raisesc�s��jjdd��d�IdH\}}�z�dd�}����j��|�Wd�n1sT0Y���"�j����|�Wd�n1s�0Y����j���Wd�n1s�0Y��� �j�����Wd�n1s�0Y����j��|�Wd�n1�s*0Y���"�j����|�Wd�n1�sd0Y����j���Wd�n1�s�0Y��� �j�����Wd�n1�s�0YW|��n
|��0dS)NcSst��Sr)r	r�r
r
r
rr-�r.zWTestFunctional.test_add_reader_or_writer_transport_fd.<locals>.runner.<locals>.<lambda>r�cSsdSrr
r
r
r
rr-�r.)rZcreate_connectionr#r�r�rGr�r
)rZprrA�r�Zrsockrr
r�runner�s,�,0*..2,2zETestFunctional.test_add_reader_or_writer_transport_fd.<locals>.runner)rpZ
socketpairrrsr
)rr�Zwsockr
r�r�&test_add_reader_or_writer_transport_fd�s
�z5TestFunctional.test_add_reader_or_writer_transport_fdN)rErFrGrr�r�r�r
r
r
rr�hsr��__main__)2�__doc__�collectionsr�rHr�r�rzrrpr�sysr�r�r�r�testrZtest.supportr�platformZSkipTestr	rrZtest.test_asynciorrnrr�r rr�ZTestCaserr�rmr�r�r8r\rg�
namedtuplerhrnr�r�r�r�rE�mainr
r
r
r�<module>sx

	
^�)�N2	�	,FF