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_unix_events.cpython-38.pyc
U

/D�g��@sdZddlZddlZddlZddlZddlZddlZddlZddlZddl	Z	ddl
Z
ddlZddlZddl
Z
ddl
mZddlmZe
jdkr�e
�d��ddlZddlmZddlmZdd	lmZejZd
d�Zdd
�Ze
�ed�Gdd�dej��Ze
�e ed�d�Gdd�dej��Z!e
�e ed�d�Gdd�dej��Z"Gdd�dej�Z#Gdd�dej�Z$Gdd�de
j�Z%Gdd �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-e.d-k�re
�/�dS).zTests for unix_events.py.�N)�mock)�support�win32z	UNIX only)�log)�unix_events)�utilscCst�d�dS�N)�asyncioZset_event_loop_policy�r
r
�A/opt/cppython/lib/python3.8/test/test_asyncio/test_unix_events.py�tearDownModule srcCs"|jdkrdS|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
rr0s

z"SelectorEventLoopSignalTests.setUpcCs.|�t|jjd�|�t|jjtjd�dS)N�1�)�assertRaises�	TypeErrorrZ
_check_signal�
ValueError�signal�NSIGrr
r
r�test_check_signal5s��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>P�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_errorGs�z@SelectorEventLoopSignalTests.test_add_signal_handler_setup_errorcCsPtj|_dd�}|}|�}|�|j�||fD]}|�td|jjtj|�q.dS)Nc�sdSrr
r
r
r
r�simple_coroutineVsz^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_errorRs�zDSelectorEventLoopSignalTests.test_add_signal_handler_coroutine_errorcCsXtj|_tj|_dd�}|j�tj|�|jj�tj�}|�|t	j
�|�|j|�dS)NcSsdSr,r
r
r
r
rr-hr.zFSelectorEventLoopSignalTests.test_add_signal_handler.<locals>.<lambda>)
rr r/rr3�SIGHUPr'�get�assertIsInstancer	r$�assertEqual�	_callback)rr6�cbr*r
r
r�test_add_signal_handlercsz4SelectorEventLoopSignalTests.test_add_signal_handlercCsTtj|_tj|_dd�}||_Gdd�dt�}||j_|�||jjtj	dd��dS)NcSs|dkrt��dS)N���)r)�fdr
r
rr0sszYSelectorEventLoopSignalTests.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�ErrxsrJcSsdSr,r
r
r
r
rr-r.zTSelectorEventLoopSignalTests.test_add_signal_handler_install_error.<locals>.<lambda>)
rr r/r0�OSErrorr1rrr3r4)rr6r0rJr
r
r�%test_add_signal_handler_install_errorns�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�rFrGrHrI�EINVALr
r
r
rrJ�srJcSsdSr,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/rKr1rr'r=rr2r3r4�assertFalse�info�calledr@r0�
call_count�r�	m_loggingr6rJr
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>.ErrNrMr
r
r
rrJ�srJcSsdSr,r
r
r
r
rr-�r.zUSelectorEventLoopSignalTests.test_add_signal_handler_install_error3.<locals>.<lambda>�)rKrr1r r/rr2rr3r4rOrPrQr@r0rRrSr
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(r0rQr@�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_mockrXr(rOrQr@�default_int_handlerrZr5r
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(rXrP)rrTr6r
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=rKr1rr(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>.ErrNrMr
r
r
rrJ�srJ)rr r/rr3r=rKr1rr2r()rr6rJr
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.rVrrD)rr r/rr3r=�SIGCHLDr@�lenr'r0r]r
�assert_called_once_withr5r
r
r�
test_close�s

z'SelectorEventLoopSignalTests.test_closezasyncio.unix_events.sysc	Cs�tj|_tj|_|j�tjdd��|�t|jj�d�d|j	_
|j��|�t
d��|j��W5QRX|�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@rdr'�
is_finalizing�return_valuer]�assertWarnsRegex�ResourceWarningr
rOrQ)rr6Zm_sysr
r
r�test_close_on_finalizing�s
�z5SelectorEventLoopSignalTests.test_close_on_finalizing)rFrGrHrr!r#r+r�patchr7r<rCrLrUrWr[r_r`rarbrfrk�
__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.setUpc	Csvt���d}t�tj�}|�|�|�d�|��|j�dd�|�}|j�	|�}|��|j�	|�
��W5QRXdS)NrcSsdSrr
r
r
r
rr-r.z]SelectorEventLoopUnixSocketTests.test_create_unix_server_existing_path_sock.<locals>.<lambda>)�
test_utils�unix_socket_path�socketrn�bind�listenr
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_sockc	CsXt���F}t�|�}|j�dd�|�}|j�|�}|��|j�|���W5QRXdS)NcSsdSrr
r
r
r
rr-%r.zRSelectorEventLoopUnixSocketTests.test_create_unix_server_pathlib.<locals>.<lambda>)	rprq�pathlib�Pathrrurvr
rw)rrxZsrv_coror{r
r
r�test_create_unix_server_pathlib!s

z@SelectorEventLoopUnixSocketTests.test_create_unix_server_pathlibc
CsVt���D}t�|�}|j�dd�|�}|�t��|j�|�W5QRXW5QRXdS)NcSsdSrr
r
r
r
rr--r.zVSelectorEventLoopUnixSocketTests.test_create_unix_connection_pathlib.<locals>.<lambda>)	rprqr}r~r�create_unix_connectionr�FileNotFoundErrorrv)rrxrzr
r
r�#test_create_unix_connection_pathlib*s


zDSelectorEventLoopUnixSocketTests.test_create_unix_connection_pathlibc
CsPt���>}|j�dd�|j�}|�td��|j�|�W5QRXW5QRXdS)NcSsdSrr
r
r
r
rr-5r.z`SelectorEventLoopUnixSocketTests.test_create_unix_server_existing_path_nonsock.<locals>.<lambda>zAddress.*is already in use)�tempfile�NamedTemporaryFilerru�namer:rKrv)r�filerzr
r
r�-test_create_unix_server_existing_path_nonsock3s
�zNSelectorEventLoopUnixSocketTests.test_create_unix_server_existing_path_nonsockc	Cs>|jjdd�ddd�}|�td��|j�|�W5QRXdS)NcSsdSrr
r
r
r
rr-;r.zSSelectorEventLoopUnixSocketTests.test_create_unix_server_ssl_bool.<locals>.<lambda>�spamT)rx�sslz"ssl argument must be an SSLContext)rrur:rrv�rrzr
r
r� test_create_unix_server_ssl_bool:s��zASelectorEventLoopUnixSocketTests.test_create_unix_server_ssl_boolc	Cs<|jjdd�dd�}|�td��|j�|�W5QRXdS)NcSsdSrr
r
r
r
rr-Br.zXSelectorEventLoopUnixSocketTests.test_create_unix_server_nopath_nosock.<locals>.<lambda>�rxz#path was not specified, and no sock�rrur:rrvr�r
r
r�%test_create_unix_server_nopath_nosockAs
�zFSelectorEventLoopUnixSocketTests.test_create_unix_server_nopath_nosockc
CsVt��}|�@|jjdd�d|d�}|�td��|j�|�W5QRXW5QRXdS)NcSsdSrr
r
r
r
rr-Jr.zXSelectorEventLoopUnixSocketTests.test_create_unix_server_path_inetsock.<locals>.<lambda>�rxry�"A UNIX Domain Stream.*was expected)rrrrur:rrv�rryrzr
r
r�%test_create_unix_server_path_inetsockGs��zFSelectorEventLoopUnixSocketTests.test_create_unix_server_path_inetsockc
Cs^t�tjtj�}|�@|jjdd�d|d�}|�td��|j�|�W5QRXW5QRXdS)NcSsdSrr
r
r
r
rr-Sr.zUSelectorEventLoopUnixSocketTests.test_create_unix_server_path_dgram.<locals>.<lambda>r�r�)rrrn�
SOCK_DGRAMrrur:rrvr�r
r
r�"test_create_unix_server_path_dgramPs��zCSelectorEventLoopUnixSocketTests.test_create_unix_server_path_dgram�
SOCK_NONBLOCKz$no socket.SOCK_NONBLOCK (linux only)c	Cs�t�tjtjtjB�}t���}|j}W5QRXzX|�J|�	|�|j
jdd�d|d�}|j
�|�}|�
�|j
�|���W5QRXW5t�|�XdS)NcSsdSrr
r
r
r
rr-dr.z^SelectorEventLoopUnixSocketTests.test_create_unix_server_path_stream_bittype.<locals>.<lambda>r�)rrrn�SOCK_STREAMr�r�r�r��os�unlinkrsrrurvr
rw)rryr��fnrzr{r
r
r�+test_create_unix_server_path_stream_bittypeYs 
�

�zLSelectorEventLoopUnixSocketTests.test_create_unix_server_path_stream_bittypec	Cs>|jjdd�ddd�}|�td��|j�|�W5QRXdS)NcSsdSrr
r
r
r
rr-mr.zfSelectorEventLoopUnixSocketTests.test_create_unix_server_ssl_timeout_with_plain_sock.<locals>.<lambda>r�r�rxZssl_handshake_timeout�1ssl_handshake_timeout is only meaningful with sslr�r�r
r
r�3test_create_unix_server_ssl_timeout_with_plain_sockls��zTSelectorEventLoopUnixSocketTests.test_create_unix_server_ssl_timeout_with_plain_sockc
CsTt��}|�>|jjdd�|d�}|�td��|j�|�W5QRXW5QRXdS)NcSsdSrr
r
r
r
rr-wr.z\SelectorEventLoopUnixSocketTests.test_create_unix_connection_path_inetsock.<locals>.<lambda>�ryr�)rrrr�r:rrvr�r
r
r�)test_create_unix_connection_path_inetsockts��zJSelectorEventLoopUnixSocketTests.test_create_unix_connection_path_inetsockzasyncio.unix_events.socketc	Cs�t��}||j_t|j_|jjdd�dd�}|�	t��|j�
|�W5QRX|�|jj
�t|j_|jjdd�dd�}|�	t��|j�
|�W5QRX|�|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%rrrhrKrsr1rrurrvrXr
rQ�MemoryError)rZm_socketryrzr
r
r�"test_create_unix_server_bind_error}szCSelectorEventLoopUnixSocketTests.test_create_unix_server_bind_errorc	CsB|jjdd�tjt�d�}|�td��|j�|�W5QRXdS)NcSsdSrr
r
r
r
rr-�r.zXSelectorEventLoopUnixSocketTests.test_create_unix_connection_path_sock.<locals>.<lambda>r�zpath and sock can not be)rr�r��devnullr\r:rrvr�r
r
r�%test_create_unix_connection_path_sock�s�zFSelectorEventLoopUnixSocketTests.test_create_unix_connection_path_sockc	Cs:|j�dd�d�}|�td��|j�|�W5QRXdS)NcSsdSrr
r
r
r
rr-�r.z\SelectorEventLoopUnixSocketTests.test_create_unix_connection_nopath_nosock.<locals>.<lambda>zno path and sock were specified�rr�r:rrvr�r
r
r�)test_create_unix_connection_nopath_nosock�s��zJSelectorEventLoopUnixSocketTests.test_create_unix_connection_nopath_nosockc	Cs@|jjdd�tjdd�}|�td��|j�|�W5QRXdS)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:rrvr�r
r
r�,test_create_unix_connection_nossl_serverhost�s��zMSelectorEventLoopUnixSocketTests.test_create_unix_connection_nossl_serverhostc	Cs@|jjdd�tjdd�}|�td��|j�|�W5QRXdS)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_noserverhostc	Cs>|jjdd�ddd�}|�td��|j�|�W5QRXdS)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)rFrGrHrrZskip_unless_bind_unix_socketr|rr�r�r�r�r�r��unittest�
skipUnless�hasattrrrr�r�r�rrlr�r�r�r�r�r�rmr
r
rrros2

			�	
	ro�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
rrw�sz:SelectorEventLoopUnixSockSendfileTests.MyProto.wait_closedN)rFrGrHr�r�r�r�rwr
r
r
r�MyProto�s
r�c	s2ttjd��}|�|j�W5QRXt���dS)N�wb)�openr�TESTFN�write�DATAr�
setUpClass)�cls�fprr
rr��sz1SelectorEventLoopUnixSockSendfileTests.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�)
rr�AF_INETr��setblocking�
setsockopt�
SOL_SOCKET�	SO_SNDBUF�	SO_RCVBUFr9r
)r�cleanupryr
r
r�make_socket�s
z2SelectorEventLoopUnixSockSendfileTests.make_socketcCs|j�|�Sr)rrvr�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�rwr
�r�rZserverr
rr��s
z?SelectorEventLoopUnixSockSendfileTests.prepare.<locals>.cleanup)r�r�rrZfind_unused_portrsZHOSTr��
create_serverZsock_connectr�r9)rry�portZsrv_sockr�r
r�r�prepare�s

�
z.SelectorEventLoopUnixSockSendfileTests.preparec
Csp|��\}}tjdgd��:|�tjd�� |�|j�||j	dd��W5QRXW5QRX|�
|j	��d�dS)Nzasyncio.unix_events.os)�specz$os[.]sendfile[(][)] is not availabler)r�rrlr:r	�SendfileNotAvailableErrorr�r�_sock_sendfile_nativer�r@�tell)rryr�r
r
r� test_sock_sendfile_not_availables��zGSelectorEventLoopUnixSockSendfileTests.test_sock_sendfile_not_availablec	CsZ|��\}}t�}|�tjd��|�|j�||dd��W5QRX|�|j	�
�d�dS�N�not a regular filer)r�r\r:r	r�r�rr�r@r�r��rryr��fr
r
r�test_sock_sendfile_not_a_files��zDSelectorEventLoopUnixSockSendfileTests.test_sock_sendfile_not_a_filec	Cs\|��\}}t��}|�tjd��|�|j�||dd��W5QRX|�	|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	Csd|��\}}t��}d|j_|�tjd��|�|j	�
||dd��W5QRX|�|j�
�d�dS)NrDr�r)r�rr%�filenorhr: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��|�
|�W5QRX|�t��|jj�|�W5QRXdS�Nr)r�rr�r�r��_sock_sendfile_native_implrdr�r&�
contextlib�suppressr	�CancelledErrorr�r�KeyError�	_selector�get_key�rryr�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�|�W5QRXdSr�)
r�rr�r�r�r�rdr�r&rr�r�r�r�r
r
r�test_sock_sendfile_cancel29s$

��zASelectorEventLoopUnixSockSendfileTests.test_sock_sendfile_cancel2cCs�|��\}}|j��}t��}d|j_tjdt�d��&|j	�
|d||ddt|j�d�W5QRX|j	j
�|�}|�|�|j�tj�dS)NF�os.sendfile�r1r)r�r�r�rr%�	cancelledrhrl�BlockingIOErrorrr�rdr�r�r��assertIsNotNone�add_done_callbackre�ANY)rryr�r�r��keyr
r
r�!test_sock_sendfile_blocking_errorFs
�
zHSelectorEventLoopUnixSockSendfileTests.test_sock_sendfile_blocking_errorcCs�|��\}}|j��}|j��}tjdt�d��&|j�|d||ddt	|j
�d�W5QRX|�t��|jj
�|�W5QRX|��}|�|tj�|�d|j���dS)Nr�r�r)r�r�r�rr�rrlrKr�rdr�rr�r�r��	exceptionr?r	r�r@r�)rryr�r�r�r�r
r
r�&test_sock_sendfile_os_error_first_callSs

�zMSelectorEventLoopUnixSockSendfileTests.test_sock_sendfile_os_error_first_callcCs�|��\}}|j��}|j��}t�}tjd|d��*|j�||��||ddt	|j
�d�W5QRX|�t��|jj
�|�W5QRX|��}|�||�|�d|j���dS�Nr�r�i�)r�r�r�rr�rKrrlr�rdr�rr�r�r�r��assertIsr@r��rryr�r�r��errr�r
r
r�%test_sock_sendfile_os_error_next_callas$

�zLSelectorEventLoopUnixSockSendfileTests.test_sock_sendfile_os_error_next_callcCs�|��\}}|j��}|j��}t��}tjd|d��*|j�	||��||ddt
|j�d�W5QRX|�t
��|jj�|�W5QRX|��}|�||�|�d|j���dSr�)r�r�r�rr�r	r�rrlr�rdr�rr�r�r�r�r�r@r�r�r
r
r�test_sock_sendfile_exceptionrs$

�zCSelectorEventLoopUnixSockSendfileTests.test_sock_sendfile_exception)T)rFrGrHr�r	�Protocolr��classmethodr�r�rr�r�r�r�r�r�r�r�r�r�r�rrrmr
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_looprrp�make_test_protocolr	r�protocolrr%r��	RawIOBase�piper�rhrl�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�rrvr
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)rrhrr)�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)
rrhrr)r#rOr�readersrp�run_brieflyr
Zeof_receivedr�r$r
r
r�test__read_ready_eof�sz/UnixReadPipeTransportTests.test__read_ready_eofcCsD|��}t|_|��|�d|j�t�|j�|�	|j
jj�dS�Nr)
rr�r1rr)r#rpr(rrOr
r�rQr$r
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)Nrz;Fatal read error on pipe transport
protocol:.*
transport:.*)�exc_info)rrKr1rr%�_closerr)r#rpZMockPattern�MOCK_ANY)rr%�m_logexcrrr
r
r�test__read_ready_error�s
��z1UnixReadPipeTransportTests.test__read_ready_errorcCs8|��}t��}|j�d|�|��|�|jj�dSr*)rrr%r�
add_reader�
pause_readingrOr')rr%r�mr
r
r�test_pause_reading�s
z-UnixReadPipeTransportTests.test_pause_readingcCs,|��}|��|��|j�d|j�dSr*)rr3�resume_readingrrrr$r
r
r�test_resume_reading�sz.UnixReadPipeTransportTests.test_resume_readingcCs*|��}t��|_|��|j�d�dSr)rrr%r.r
r)r$r
r
rrf�s
z%UnixReadPipeTransportTests.test_closecCs2|��}d|_t��|_|��|�|jj�dSr,)r�_closingrr%r.r
rOrQr$r
r
r�test_close_already_closing�s

z5UnixReadPipeTransportTests.test_close_already_closingcCsR|��}t�}|�|�|�|���|�|jj�t�	|j�|j
j�|�dSr)
rr\r.rX�
is_closingrOrr'rpr(r
r�r))rr%rrr
r
r�test__close�s
z&UnixReadPipeTransportTests.test__closecCsd|��}|�|j�|�|j�d}|�|�|jj�|�|jj	��|�
|j�|�
|j�dSr)rr��	_protocol�_loop�_call_connection_lostr
r�r)rr
r�rrrr
r
r�test__call_connection_losts
z5UnixReadPipeTransportTests.test__call_connection_lostcCsf|��}|�|j�|�|j�t�}|�|�|jj�|�|j	j
��|�|j�|�|j�dSr)rr�r<r=rKr>r
r�r)rr
rr?r
r
r�#test__call_connection_lost_with_err
s
z>UnixReadPipeTransportTests.test__call_connection_lost_with_errcCs4|��}|��t�|j�|�|j�|��dSr)rr
rpr(rrr=r3�rrr
r
r�!test_pause_reading_on_closed_pipes
z<UnixReadPipeTransportTests.test_pause_reading_on_closed_pipecCs|��}|��|��dSr)rr3rBr
r
r�!test_pause_reading_on_paused_pipe!sz<UnixReadPipeTransportTests.test_pause_reading_on_paused_pipecCs4|��}|��t�|j�|�|j�|��dSr)rr
rpr(rrr=r6rBr
r
r�"test_resume_reading_on_closed_pipe's
z=UnixReadPipeTransportTests.test_resume_reading_on_closed_pipecCs|��}|��dSr)rr6rBr
r
r�"test_resume_reading_on_paused_pipe.sz=UnixReadPipeTransportTests.test_resume_reading_on_paused_pipe)N)rFrGrHrrr rrlr&r)r+r1r5r7rfr9r;r@rArCrDrErFrmr
r
rrr�s8
	


	




	

rcs~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)rrrrrpr	r	ZBaseProtocolr
rr%r�rrr�rhrlr
r9rr�S_IFSOCKrrrr
rr7s




z!UnixWritePipeTransportTests.setUpNcCs(tj|j|j|j|d�}|�t|�|Sr)rZ_UnixWritePipeTransportrrr
r9rrr
r
r�write_pipe_transportIs�z0UnixWritePipeTransportTests.write_pipe_transportcCsT|j��}|j|d�}|j�|�|jj�|�|j�d|j�|�	d|�
��dSr)rr�rIrvr
r�r)rrr@rrr
r
rr Ps
z%UnixWritePipeTransportTests.test_ctorcCs|��}|�|���dSr)rIrXZ
can_write_eofrBr
r
r�test_can_write_eofYsz.UnixWritePipeTransportTests.test_can_write_eofzos.writecCsF|��}d|_|�d�|�dd�|�|jj�|�t�|j	�dS)N�r"r)
rIrhr�r)rOr�writersr@r��_buffer�r�m_writerr
r
r�
test_write]s
z&UnixWritePipeTransportTests.test_writecCsB|��}|�d�|�|j�|�|jj�|�td�|j�dS)Nr.)	rIr�rOrQrrLr@r�rMrNr
r
r�test_write_no_datafs

z.UnixWritePipeTransportTests.test_write_no_datacCs>|��}d|_|�d�|j�d|j�|�td�|j�dS)NrVr"r�ta)	rIrhr�r�
assert_writer�_write_readyr@r�rMrNr
r
r�test_write_partialns

z.UnixWritePipeTransportTests.test_write_partialcCs^|��}|j�d|j�td�|_|�d�|�|j�|j�	d|j�|�
td�|j�dS)Nrspreviousr"spreviousdata)rIr�
add_writerrTr�rMr�rOrQrSr@rNr
r
r�test_write_buffervs

z-UnixWritePipeTransportTests.test_write_buffercCsP|��}t�|_|�d�|�dtd��|j�d|j�|�	td�|j
�dSr!)rIr�r1r�r)r�rrSrTr@rMrNr
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)Nr"rz#Fatal write error on pipe transportrrVz=pipe closed by peer or os.write(pipe, data) raised exception.)rIrKr1rr%Z_fatal_errorr�r)rOrrLr@r�rM�
_conn_lost�warningr
)rrOZm_logrrr
r
r�test_write_err�s.

�




�z*UnixWritePipeTransportTests.test_write_errcCsD|��}|��|�d�|�|jd�|�d�|�|jd�dS)Nr"rrV)rIrr�r@rYrNr
r
r�test_write_close�s

z,UnixWritePipeTransportTests.test_write_closecCsX|��}|��|�|jj�|�|jj�|�|���t�	|j�|j
j�d�dSr)
rIrrOrr'rLrXr:rpr(r
r�r)rBr
r
rr&�sz,UnixWritePipeTransportTests.test__read_readycCsR|��}|j�d|j�td�|_d|_|��|�|jj�|�	t�|j�dS)Nrr"rK)
rIrrVrTr�rMrhrOrLr@rNr
r
r�test__write_ready�s
z-UnixWritePipeTransportTests.test__write_readycCsV|��}|j�d|j�td�|_d|_|��|j�d|j�|�td�|j�dS)Nrr"��a)	rIrrVrTr�rMrhrSr@rNr
r
r�test__write_ready_partial�s
z5UnixWritePipeTransportTests.test__write_ready_partialcCsh|��}|j�d|j�td�|_t�|_|��|�dtd��|j�	d|j�|�
td�|j�dS)Nrr")rIrrVrTr�rMr�r1r)rSr@rNr
r
r�test__write_ready_again�s
z3UnixWritePipeTransportTests.test__write_ready_againcCsf|��}|j�d|j�td�|_d|_|��|�dtd��|j�d|j�|�	td�|j�dS)Nrr"r)
rIrrVrTr�rMrhr)rSr@rNr
r
r�test__write_ready_empty�s
z3UnixWritePipeTransportTests.test__write_ready_emptyr,cCs�|��}|j�d|j�td�|_t�|_}|��|�|jj	�|�|jj
�|�t�|j�|�|�
��|��|�d|j�t�|j�|jj�|�dS)Nrr"r)rIrrVrTr�rMrKr1rOrLr'r@rXr:Zassert_not_calledrYrpr(r
r�r))rrOr0rrr
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)NrTr"rK)rIrrVrTr8r�rMrhrOrLr'r@r
r�r)rr
rNr
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)NrsdarR)rIrrVrTr2rrM�abortrOrQr'rLr@rXr:rpr(r
r�r)rNr
r
r�
test_aborts
z&UnixWritePipeTransportTests.test_abortcCsd|��}|�|j�|�|j�d}|�|�|jj�|�|jj	��|�
|j�|�
|j�dSr)rIr�r<r=r>r
r�r)rr
rr?r
r
rr@s
z6UnixWritePipeTransportTests.test__call_connection_lostcCsf|��}|�|j�|�|j�t�}|�|�|jj�|�|j	j
��|�|j�|�|j�dSr)rIr�r<r=rKr>r
r�r)rr
rr?r
r
rrAs
z?UnixWritePipeTransportTests.test__call_connection_lost_with_errcCs0|��}t��|_|��|j��|��dSr)rIrr%�	write_eofr
r)rBr
r
rrf)s


z&UnixWritePipeTransportTests.test_closecCs2|��}t��|_d|_|��|�|jj�dSr,)rIrr%rgr8r
rOrQrBr
r
r�test_close_closing2s

z.UnixWritePipeTransportTests.test_close_closingcCsJ|��}|��|�|���|�|jj�t�|j�|j	j
�d�dSr)rIrgrXr:rOrr'rpr(r
r�r)rBr
r
r�test_write_eof9sz*UnixWritePipeTransportTests.test_write_eofcCs:|��}dg|_|��|�|���|�|jjj�dS)Nr")	rIrMrgrXr:rOr
r�rQrBr
r
r�test_write_eof_pendingAs
z2UnixWritePipeTransportTests.test_write_eof_pending)N)rFrGrHrrIr rJrrlrPrQrUrWrXr[r\r&r]r`rarbrcrdrfr@rArfrhrirjrmr
r
rrrG5sR
	



	

		
	
	








	rGc@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_implementedKsJ�������z.AbstractChildWatcherTests.test_not_implementedN�rFrGrHrtr
r
r
rrkIsrkc@seZdZdd�ZdS)�BaseChildWatcherTestscCs$t��}t��}|�t|j|�dSr)rr%rZBaseChildWatcherrrlZ_do_waitpidrrr
r
rrt`s�z*BaseChildWatcherTests.test_not_implementedNrur
r
r
rrv^srv�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�ChildWatcherTestsMixinrZc	sZt���|��|_d|_i|_tj�|jd�� |_	|�
�|_|j�|j�W5QRXdS)NFr3)
rrrr�running�zombiesrrlr\�m_add_signal_handler�create_watcherrsrorrr
rrts

�
zChildWatcherTestsMixin.setUpcCsvt|jtj�s|dkr"|�|d�z*|dkr8|j��WS||j�|�fWSWntk
r`YnX|j	rldSt
��dS)NrDr)rr)�
isinstancersr	�SafeChildWatcherZ
assertGreaterr�popitem�popr�r~�ChildProcessError)r�pid�flagsr
r
rrxszChildWatcherTestsMixin.waitpidcCs|d|j|<dS�N��)r)rr��
returncoder
r
r�
add_zombie�sz!ChildWatcherTestsMixin.add_zombiecCs|dkSr�r
�r�statusr
r
rry�sz ChildWatcherTestsMixin.WIFEXITEDcCsd|kodkSS)Ni�r�r
r�r
r
rrz�sz"ChildWatcherTestsMixin.WIFSIGNALEDcCs|�|�|��|dSr�)rXryr�r
r
rr{�sz"ChildWatcherTestsMixin.WEXITSTATUScCs|�|�|��d|Sr�)rXrzr�r
r
rr|�szChildWatcherTestsMixin.WTERMSIGcCs|j�tj|jj�dSr)r�rerrcrs�	_sig_chldrr
r
r�test_create_watcher�s�z*ChildWatcherTestsMixin.test_create_watchercs�fdd�}|S)Nc
s�dd�}|d|j��|}|d|j��d}|d|j��L}|d|j��4}|d|j��}�|t|||||��W5QRXW5QRXW5QRXW5QRXW5QRXdS)NcSstj||tjd�S)N)�wrapsZnew_callable)rrlr%)�target�wrapperr
r
rrl�s�zIChildWatcherTestsMixin.waitpid_mocks.<locals>.wrapped_func.<locals>.patchzos.WTERMSIGzos.WEXITSTATUSzos.WIFSIGNALEDzos.WIFEXITEDz
os.waitpid)r|r{rzryrxrw)rrlZ
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_mocksc	Cst��}|j� d|_|j�d|ddd�W5QRX|�|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��W5QRX|�|j�|�|j
j�|j��|j��|j	��|j��|j��|�|j�|�|jj�|�|jj�|�|j	j�|�|j
j�dS)	NT�*�	�
�F��
)rr%rsr~rmrOrQryrzr{r|r�r�rXrer]�ignore_warningsr�clear�rr4�callbackr
r
r�test_sigchld�sR









z#ChildWatcherTestsMixin.test_sigchldc	Cs�t��}t��}|j�d|_|j�d|dd�W5QRX|�|j�|�|j�|�|jj�|�|jj�|�|j	j�|�|j
j�|j�|j�d|dd�W5QRX|�|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��W5QRX|�|j�|�|j�|�|j
j�|j��|j��|j	��|j��|j��|�|j�|�|j�|�|jj�|�|jj�|�|j	j�|�|j
j�dS)
NT�+���,������lFr��)rr%rsr~rmrOrQryrzr{r|r�r�rerXr]r�rr��rr4�	callback1�	callback2r
r
r�test_sigchld_two_children�s�














z0ChildWatcherTestsMixin.test_sigchld_two_childrenc	Csnt��}t��}|j�d|_|j�d|dd�W5QRX|�|j�|�|j�|�|jj�|�|jj�|�|j	j�|�|j
j�|j�|j�d|dd�W5QRX|�|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��W5QRX|�|j�|�|j�|�|j
j�dS)
NT�-�r��.i{r��N���Fr�r�)rr%rsr~rmrOrQryrzr{r|r�r�rerXr]r�r�r
r
r�.test_sigchld_two_children_terminating_togetherYsb





zEChildWatcherTestsMixin.test_sigchld_two_children_terminating_togetherc	Cs�t��}|j�.|�dd�|j��|j�d|dd�W5QRX|�dddd�|��|�dd�|j�|j��W5QRX|�	|j
�dS)N�2rKrr�rD)rr%rsr�r�rmrer]r�rOrQr�r
r
r�test_sigchld_race_condition�s
z2ChildWatcherTestsMixin.test_sigchld_race_conditionc	Cs�t��}t��}|j�d|_|j�d|d�W5QRX|�|j�|�|j�|�|jj�|�|jj�|�|j	j�|�|j
j�|j�|j�d|d�W5QRX|�|j�|�|j�|�|jj�|�|jj�|�|j	j�|�|j
j�d|_|�dd�|j��|�
ddd�|�|j�|�|jj�|�|j	j�|�|j
j�|j��|j��|j
��|��|�dd�|j�|j��W5QRX|�|j�|�|j�|�|j
j�dS)NT�3��Fi����r�)rr%rsr~rmrOrQryrzr{r|r�r�rerXr]r�r�r
r
r�test_sigchld_replace_handler�sJ



z3ChildWatcherTestsMixin.test_sigchld_replace_handlerc	Cst��}|j�d|_|j�d|d�W5QRX|�|j�|�|jj�|�|jj�|�|j	j�|�|j
j�|j�d�|�|j�|�|jj�|�|jj�|�|j	j�|�|j
j�d|_|�dd�|j
�|j��W5QRX|�|j�dS)NT�4i�F�c)rr%rsr~rmrOrQryrzr{r|rnr�r�r�r�r
r
r�test_sigchld_remove_handler�s(z2ChildWatcherTestsMixin.test_sigchld_remove_handlerc	Cs(t��}|j�d|_|j�d|d�W5QRX|�|j�|�|jj�|�|jj�|�|j	j�|�|j
j�d|jd<d|_|j��|�
ddd�|�|jj�|�|jj�|�|j	j�|�|j
j�|��|j��|j��|�dd�|j�|j��W5QRX|�|j�dS)NT�5i��i�F�e)rr%rsr~rmrOrQryrzr{r|rr�rerXr]r�r�r�r
r
r�test_sigchld_unknown_status	s0



z2ChildWatcherTestsMixin.test_sigchld_unknown_statusc	Cst��}t��}t��}|j�<d|_|j�d|d�|j�d|d�|j�d|d�W5QRX|�|j�d��|�|j�d��|�|j�d��|�|j�d��|�dd�|�dd�|�dd�d	|_|j	�|j�
�W5QRX|�|j�|�|j�|�ddd�dS)
NT�6r�7rV�8r^rF)
rr%rsr~rmrXrnrOr�r�r�rQre)rr4r�r��	callback3r
r
r�test_remove_child_handler.s*z0ChildWatcherTestsMixin.test_remove_child_handlerc	Cstt��}|j�d|_|j�d|�W5QRXt|j_tj�	t
jd��$}|�|j�
�d�|�|j�W5QRXdS)NT�9�error)rr%rsr~rmrrxr1rlr\r�loggerr@r�rXrQ)rr4r�Zm_errorr
r
r� test_sigchld_unhandled_exceptionOs
�z7ChildWatcherTestsMixin.test_sigchld_unhandled_exceptionc	Cs�t��}|j�d|_|j�d|�W5QRX|�|j�|�|jj�|�|jj�|�|j	j�|�|j
j�d|_|�dd�t�
dtj�|j
��|j�|j��W5QRXt|jtj�r�|�|j�n|�dd�dS)NT�:FrK�)rr%rsr~rmrOrQryrzr{r|r�r�rx�WNOHANGr]r�r�r�r	�FastChildWatcherrer�r
r
r�#test_sigchld_child_reaped_elsewhereas$
z:ChildWatcherTestsMixin.test_sigchld_child_reaped_elsewherec
Cs�t��}t��}|j�\|j�Jd|_|�dd�|�dd�|j��|j�d|�|j�d|�W5QRXW5QRX|�dd�|�	|j
�dS)NTiOr�iQr�iP)rr%r�rsr~r�r�rmrerOrQr�r
r
r�,test_sigchld_unknown_pid_during_registration�s
"zCChildWatcherTestsMixin.test_sigchld_unknown_pid_during_registrationc
Cs�t��}|j�d|_|j�d|�W5QRX|j}|��|_tjj}||d��J}||jd��2}|j�	|j�|�
tj�|�
tj|jj
�W5QRXW5QRXd|_|�dd�|j�
�|�
dd�dS)NT�<r(r3Fr�)rr%rsr~rmrrrlr\rorerrcr�r�)rr4r��old_looprlZm_old_removeZ	m_new_addr
r
r�
test_set_loop�s.

���
z$ChildWatcherTestsMixin.test_set_loopc
Cs�t��}t��}t��}|j�6d|_|j�d|�|j�d|�|j�d|�W5QRX|j}d|_tj�|d��6}|�t	d��|j�
d�W5QRX|�tj
�W5QRX|�dd�|�dd�|�|j�|�|j�|�|j�|��|_tj�|jd	��J}|j�
|j�|�tj
|jj�|�dd�|�dd�|�|j�W5QRX|��|��d
|_|�dd�|j��|�|j�|�|j�|�dd�dS)NT�=�>inr(zA loop is being detached�r�r3Fr�)rr%rsr~rmrrlr\ri�RuntimeWarningrorerrcr�rOrQrr�r])rr4r�r�r�r��m_remove_signal_handlerr�r
r
r�test_set_loop_race_condition�sd���
��
z3ChildWatcherTestsMixin.test_set_loop_race_conditionc
Cs�t��}|j��d|_|�dd�|�dd�|j��|j�d|�|j�d|�|�t|jj	�d�t
|jtj�r�|�t|jj
�d�tj�|jd��F}|j��|�tj�|�|jj	�t
|jtj�r�|�|jj
�W5QRXW5QRXdS)	NT�?r��Ar��@rr()rr%rsr~r�r�rmr@rdZ
_callbacksr�r	r�Z_zombiesrlr\rr
rerrcrO)rr4r�r�r
r
rrf�s.
�
�z!ChildWatcherTestsMixin.test_close)!rFrGrHrrlr\rr�r�rrxr�ryrzr{r|r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�rfrmr
r
rrr}psL
<
g
D

4

$
 

"


=r}c@seZdZdd�ZdS)�SafeChildWatcherTestscCst��Sr)r	r�rr
r
rr�sz$SafeChildWatcherTests.create_watcherN�rFrGrHr�r
r
r
rr�sr�c@seZdZdd�ZdS)�FastChildWatcherTestscCst��Sr)r	r�rr
r
rr�sz$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�policyrsr
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_set1s

z,PolicyTests.test_get_child_watcher_after_setcsD��fdd�}������t���tj|d�}|��|��dS)NcsR�����������tj����}��|tj���|j	�����
�dSr)rr�r?�get_event_loopr	ZAbstractEventLoopr�r�rr=r
)rs�r�rr
rr�;s
�z4PolicyTests.test_get_child_watcher_thread.<locals>.f)r�)r�r�r	r��	threading�Threadr
�join)rr��thr
r�r�test_get_child_watcher_thread9sz)PolicyTests.test_get_child_watcher_threadcCs�|��}|��}t��}|�|�|�|�|�|j|�|��}|�	|�|�|j|�|�	d�|�|jd�|�
�|�
�dSr)r�r�r	r�r�ror�r=r�rr
)rr�rrsZnew_loopr
r
r�,test_child_watcher_replace_mainloop_existingNs



z8PolicyTests.test_child_watcher_replace_mainloop_existingN)rFrGrHr�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
rris
zTestFunctional.setUpcCs|j��t�d�dSr)rr
r	rrr
r
r�tearDownms
zTestFunctional.tearDownc	s��fdd�}dd�}|���j�t�|�W5QRX|���j�t�|�W5QRX|���j�t��W5QRX|���j�t��W5QRXdS)Ncs��td�S)NzInvalid file object)r:rr
rr
r�
assert_raisesrszFTestFunctional.test_add_reader_invalid_argument.<locals>.assert_raisescSsdSrr
r
r
r
rr-ur.zATestFunctional.test_add_reader_invalid_argument.<locals>.<lambda>)rr2r\rV�
remove_reader�
remove_writer)rr�rBr
rr� test_add_reader_invalid_argumentqsz/TestFunctional.test_add_reader_invalid_argumentcsR�fdd�����fdd�}t��\�}z�j�|��W5���|��XdS)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	�sD�jjdd��d�IdH\}}�zdd�}����j��|�W5QRX����j����|�W5QRX����j���W5QRX����j�����W5QRX����j��|�W5QRX����j����|�W5QRX����j���W5QRX����j�����W5QRXW5|��XdS)NcSst��Sr)r	rr
r
r
rr-�r.zWTestFunctional.test_add_reader_or_writer_transport_fd.<locals>.runner.<locals>.<lambda>r�cSsdSrr
r
r
r
rr-�r.)r�create_connectionr
r2r�r�rVr�)rZprrB�r�Zrsockrr
r�runner�s.�zETestFunctional.test_add_reader_or_writer_transport_fd.<locals>.runner)rr�
socketpairr
rrv)rr�Zwsockr
r�r�&test_add_reader_or_writer_transport_fd�sz5TestFunctional.test_add_reader_or_writer_transport_fdN)rFrGrHrr�r�r�r
r
r
rr�gsr��__main__)0�__doc__�collectionsr�rIr�r�r}rrrr�sysr�r�r�r�testr�platformZSkipTestr	rrZtest.test_asynciorrpr�r/rrr�ZTestCaserr�ror�rrGrkrv�
namedtuplerwr}r�r�r�r�rF�mainr
r
r
r�<module>sv

	
^�)�N2	�	,FF