HEX
Server: Apache
System: Linux zacp120.webway.host 4.18.0-553.50.1.lve.el8.x86_64 #1 SMP Thu Apr 17 19:10:24 UTC 2025 x86_64
User: govancoz (1003)
PHP: 8.3.26
Disabled: exec,system,passthru,shell_exec,proc_close,proc_open,dl,popen,show_source,posix_kill,posix_mkfifo,posix_getpwuid,posix_setpgid,posix_setsid,posix_setuid,posix_setgid,posix_seteuid,posix_setegid,posix_uname
Upload Files
File: //usr/local/lib/python3.7/test/test_asyncio/__pycache__/test_unix_events.cpython-37.pyc
B

��g�@sdZddlZddlZddlZddlZddlZddlZddlZddlZddl	Z	ddl
Z
ddlZddlZddl
Z
ddl
mZddlmZe
jdkr�e
�d��ddlZddlmZddlmZdd	lmZdd
lmZddlmZejZd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&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
�0�dS).zTests for unix_events.py.�N)�mock)�support�win32z	UNIX only)�log)�base_events)�events)�unix_events)�utilscCs"|jdkrdS|j��d|_dS)N)Z_pipe�close)�	transport�r�>/usr/local/lib/python3.7/test/test_asyncio/test_unix_events.py�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�dS)N)�super�setUp�asyncio�SelectorEventLoop�loop�set_event_loop)�self)�	__class__rr
r.s

z"SelectorEventLoopSignalTests.setUpcCs.|�t|jjd�|�t|jjtjd�dS)N�1�)�assertRaises�	TypeErrorrZ
_check_signal�
ValueError�signal�NSIG)rrrr
�test_check_signal3sz.SelectorEventLoopSignalTests.test_check_signalcCs|j�tjd�dS)Nr)r�_handle_signalrr)rrrr
�test_handle_signal_no_handler9sz: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.signalcCs.tj|_t|j_|�t|jjtj	dd��dS)NcSsdS)NTrrrrr
�<lambda>M�zRSelectorEventLoopSignalTests.test_add_signal_handler_setup_error.<locals>.<lambda>)
rrr�
set_wakeup_fd�side_effectr�RuntimeErrorr�add_signal_handler�SIGINT)r�m_signalrrr
�#test_add_signal_handler_setup_errorEsz@SelectorEventLoopSignalTests.test_add_signal_handler_setup_errorcCsTtj|_dd�}|}|�}|�|j�x(||fD]}|�td|jjtj|�q0WdS)Nc�sdS)Nrrrrr
�simple_coroutineSsz^SelectorEventLoopSignalTests.test_add_signal_handler_coroutine_error.<locals>.simple_coroutinez1coroutines cannot be used with add_signal_handler)	rr�
addCleanupr
�assertRaisesRegexrrr/r0)rr1r3Z	coro_funcZcoro_obj�funcrrr
�'test_add_signal_handler_coroutine_errorOszDSelectorEventLoopSignalTests.test_add_signal_handler_coroutine_errorcCsPtj|_dd�}|j�tj|�|jj�tj�}|�|tj	�|�
|j|�dS)NcSsdS)NTrrrrr
r*dr+zFSelectorEventLoopSignalTests.test_add_signal_handler.<locals>.<lambda>)rrrr/�SIGHUPr%�get�assertIsInstancerr"�assertEqualZ	_callback)rr1�cbr(rrr
�test_add_signal_handler`sz4SelectorEventLoopSignalTests.test_add_signal_handlercCsLtj|_dd�}||_Gdd�dt�}||j_|�||jjtjdd��dS)NcSs|dkrt��dS)N���)r)�fdrrr
r,nszYSelectorEventLoopSignalTests.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
�ErrssrDcSsdS)NTrrrrr
r*zr+zTSelectorEventLoopSignalTests.test_add_signal_handler_install_error.<locals>.<lambda>)	rrr,�OSErrorr-rrr/r0)rr1r,rDrrr
�%test_add_signal_handler_install_errorjszBSelectorEventLoopSignalTests.test_add_signal_handler_install_errorzasyncio.base_events.loggercCsntj|_Gdd�dt�}||j_dd�|jjtj<|�t|jj	tj
dd��|�|jj
�|�d|jj�dS)Nc@seZdZejZdS)zPSelectorEventLoopSignalTests.test_add_signal_handler_install_error2.<locals>.ErrN)r@rArBrC�EINVALrrrr
rD�srDcSsdS)NTrrrrr
r*�r+zUSelectorEventLoopSignalTests.test_add_signal_handler_install_error2.<locals>.<lambda>cSsdS)NTrrrrr
r*�r+r)rrrEr-rr%r8rr.r/r0�assertFalse�info�calledr;r,�
call_count)r�	m_loggingr1rDrrr
�&test_add_signal_handler_install_error2|szCSelectorEventLoopSignalTests.test_add_signal_handler_install_error2cCs\Gdd�dt�}||j_tj|_|�t|jjtjdd��|�	|j
j�|�d|j
j�dS)Nc@seZdZejZdS)zPSelectorEventLoopSignalTests.test_add_signal_handler_install_error3.<locals>.ErrN)r@rArBrCrGrrrr
rD�srDcSsdS)NTrrrrr
r*�r+zUSelectorEventLoopSignalTests.test_add_signal_handler_install_error3.<locals>.<lambda>�)rErr-rrr.rr/r0rHrIrJr;r,rK)rrLr1rDrrr
�&test_add_signal_handler_install_error3�szCSelectorEventLoopSignalTests.test_add_signal_handler_install_error3cCsltj|_|j�tjdd��|�|j�tj��|�|jj�|�|jj�|�	tj|j
f|jjd�dS)NcSsdS)NTrrrrr
r*�r+zISelectorEventLoopSignalTests.test_remove_signal_handler.<locals>.<lambda>r)rrrr/r8�
assertTruer&r,rJr;�SIG_DFL�	call_args)rr1rrr
�test_remove_signal_handler�sz7SelectorEventLoopSignalTests.test_remove_signal_handlercCs�tj|_tj|_|j�tjdd��t�|jjtj<|j�	�|�
|j�tj��|�|jj
�|�
|jj
�|�tj|jf|jjd�dS)NcSsdS)NTrrrrr
r*�r+zKSelectorEventLoopSignalTests.test_remove_signal_handler_2.<locals>.<lambda>r)rrr0rr/�objectr%r8r,�
reset_mockrPr&rHrJr;�default_int_handlerrR)rr1rrr
�test_remove_signal_handler_2�s

z9SelectorEventLoopSignalTests.test_remove_signal_handler_2cCsBtj|_|j�tjdd��t|j_|j�tj�|�	|j
�dS)NcSsdS)NTrrrrr
r*�r+zWSelectorEventLoopSignalTests.test_remove_signal_handler_cleanup_error.<locals>.<lambda>)rrrr/r8rr,r-r&rPrI)rrLr1rrr
�(test_remove_signal_handler_cleanup_error�s
zESelectorEventLoopSignalTests.test_remove_signal_handler_cleanup_errorcCs<tj|_|j�tjdd��t|j_|�t|jjtj�dS)NcSsdS)NTrrrrr
r*�r+zOSelectorEventLoopSignalTests.test_remove_signal_handler_error.<locals>.<lambda>)	rrrr/r8rEr-rr&)rr1rrr
� test_remove_signal_handler_error�s
z=SelectorEventLoopSignalTests.test_remove_signal_handler_errorcCsLtj|_|j�tjdd��Gdd�dt�}||j_|�t|jj	tj�dS)NcSsdS)NTrrrrr
r*�r+zPSelectorEventLoopSignalTests.test_remove_signal_handler_error2.<locals>.<lambda>c@seZdZejZdS)zKSelectorEventLoopSignalTests.test_remove_signal_handler_error2.<locals>.ErrN)r@rArBrCrGrrrr
rD�srD)
rrrr/r8rEr-rr.r&)rr1rDrrr
�!test_remove_signal_handler_error2�sz>SelectorEventLoopSignalTests.test_remove_signal_handler_error2cCs|tj|_|j�tjdd��|j�tjdd��|�t|jj�d�|j	�
�|j��|�t|jj�d�|j	�d�dS)NcSsdS)NTrrrrr
r*�r+z9SelectorEventLoopSignalTests.test_close.<locals>.<lambda>cSsdS)NTrrrrr
r*�r+rNrr>)
rrrr/r8�SIGCHLDr;�lenr%r,rUr
�assert_called_once_with)rr1rrr
�
test_close�s

z'SelectorEventLoopSignalTests.test_closezasyncio.unix_events.sysc	Cs�tj|_|j�tjdd��|�t|jj�d�d|j_	|j�
�|�td��|j�
�WdQRX|�t|jj�d�|�|jj�dS)NcSsdS)NTrrrrr
r*�r+zGSelectorEventLoopSignalTests.test_close_on_finalizing.<locals>.<lambda>rTz skipping signal handlers removalr)rrrr/r8r;r\r%�
is_finalizing�return_valuerU�assertWarnsRegex�ResourceWarningr
rHrJ)rr1Zm_sysrrr
�test_close_on_finalizing�s
z5SelectorEventLoopSignalTests.test_close_on_finalizing)r@rArBrrr!r)r�patchr2r7r=rFrMrOrSrWrXrYrZr^rc�
__classcell__rr)rr
r+s*	




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�dS)N)rrrrrr)r)rrr
rs

z&SelectorEventLoopUnixSocketTests.setUpc	Csvt���d}t�tj�}|�|�|�d�|��|j�dd�|�}|j�	|�}|��|j�	|�
��WdQRXdS)NrcSsdS)Nrrrrr
r*r+z]SelectorEventLoopUnixSocketTests.test_create_unix_server_existing_path_sock.<locals>.<lambda>)�
test_utils�unix_socket_path�socketrf�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_sockc	CsXt���F}t�|�}|j�dd�|�}|j�|�}|��|j�|���WdQRXdS)NcSsdS)Nrrrrr
r*r+zRSelectorEventLoopUnixSocketTests.test_create_unix_server_pathlib.<locals>.<lambda>)	rhri�pathlib�Pathrrlrmr
rn)rroZsrv_cororrrrr
�test_create_unix_server_pathlibs

z@SelectorEventLoopUnixSocketTests.test_create_unix_server_pathlibc
CsVt���D}t�|�}|j�dd�|�}|�t��|j�|�WdQRXWdQRXdS)NcSsdS)Nrrrrr
r*r+zVSelectorEventLoopUnixSocketTests.test_create_unix_connection_pathlib.<locals>.<lambda>)	rhrirtrur�create_unix_connectionr�FileNotFoundErrorrm)rrorqrrr
�#test_create_unix_connection_pathlibs


zDSelectorEventLoopUnixSocketTests.test_create_unix_connection_pathlibc
CsPt���>}|j�dd�|j�}|�td��|j�|�WdQRXWdQRXdS)NcSsdS)Nrrrrr
r*'r+z`SelectorEventLoopUnixSocketTests.test_create_unix_server_existing_path_nonsock.<locals>.<lambda>zAddress.*is already in use)�tempfile�NamedTemporaryFilerrl�namer5rErm)r�filerqrrr
�-test_create_unix_server_existing_path_nonsock%s

zNSelectorEventLoopUnixSocketTests.test_create_unix_server_existing_path_nonsockc	Cs>|jjdd�ddd�}|�td��|j�|�WdQRXdS)NcSsdS)Nrrrrr
r*-r+zSSelectorEventLoopUnixSocketTests.test_create_unix_server_ssl_bool.<locals>.<lambda>�spamT)ro�sslz"ssl argument must be an SSLContext)rrlr5rrm)rrqrrr
� test_create_unix_server_ssl_bool,s
zASelectorEventLoopUnixSocketTests.test_create_unix_server_ssl_boolc	Cs<|jjdd�dd�}|�td��|j�|�WdQRXdS)NcSsdS)Nrrrrr
r*4r+zXSelectorEventLoopUnixSocketTests.test_create_unix_server_nopath_nosock.<locals>.<lambda>)roz#path was not specified, and no sock)rrlr5rrm)rrqrrr
�%test_create_unix_server_nopath_nosock3szFSelectorEventLoopUnixSocketTests.test_create_unix_server_nopath_nosockc
CsVt��}|�@|jjdd�d|d�}|�td��|j�|�WdQRXWdQRXdS)NcSsdS)Nrrrrr
r*<r+zXSelectorEventLoopUnixSocketTests.test_create_unix_server_path_inetsock.<locals>.<lambda>)rorpz"A UNIX Domain Stream.*was expected)rjrrlr5rrm)rrprqrrr
�%test_create_unix_server_path_inetsock9szFSelectorEventLoopUnixSocketTests.test_create_unix_server_path_inetsockc
Cs^t�tjtj�}|�@|jjdd�d|d�}|�td��|j�|�WdQRXWdQRXdS)NcSsdS)Nrrrrr
r*Er+zUSelectorEventLoopUnixSocketTests.test_create_unix_server_path_dgram.<locals>.<lambda>)rorpz"A UNIX Domain Stream.*was expected)rjrfZ
SOCK_DGRAMrrlr5rrm)rrprqrrr
�"test_create_unix_server_path_dgramBszCSelectorEventLoopUnixSocketTests.test_create_unix_server_path_dgram�
SOCK_NONBLOCKz$no socket.SOCK_NONBLOCK (linux only)c	Cs�t�tjtjtjB�}t���}|j}WdQRXzX|�J|�|�|jj	dd�d|d�}|j�
|�}|��|j�
|���WdQRXWdt
�|�XdS)NcSsdS)Nrrrrr
r*Vr+z^SelectorEventLoopUnixSocketTests.test_create_unix_server_path_stream_bittype.<locals>.<lambda>)rorp)rjrf�SOCK_STREAMr�rzr{r|rkrrlrmr
rn�os�unlink)rrpr}�fnrqrrrrr
�+test_create_unix_server_path_stream_bittypeKs

zLSelectorEventLoopUnixSocketTests.test_create_unix_server_path_stream_bittypec	Cs>|jjdd�ddd�}|�td��|j�|�WdQRXdS)NcSsdS)Nrrrrr
r*_r+zfSelectorEventLoopUnixSocketTests.test_create_unix_server_ssl_timeout_with_plain_sock.<locals>.<lambda>rr)ro�ssl_handshake_timeoutz1ssl_handshake_timeout is only meaningful with ssl)rrlr5rrm)rrqrrr
�3test_create_unix_server_ssl_timeout_with_plain_sock^szTSelectorEventLoopUnixSocketTests.test_create_unix_server_ssl_timeout_with_plain_sockc
CsTt��}|�>|jjdd�|d�}|�td��|j�|�WdQRXWdQRXdS)NcSsdS)Nrrrrr
r*ir+z\SelectorEventLoopUnixSocketTests.test_create_unix_connection_path_inetsock.<locals>.<lambda>)rpz"A UNIX Domain Stream.*was expected)rjrrwr5rrm)rrprqrrr
�)test_create_unix_connection_path_inetsockfszJSelectorEventLoopUnixSocketTests.test_create_unix_connection_path_inetsockzasyncio.unix_events.socketc	Cs�t��}||j_t|j_|jjdd�dd�}|�	t��|j�
|�WdQRX|�|jj
�t|j_|jjdd�dd�}|�	t��|j�
|�WdQRX|�|jj
�dS)NcSsdS)Nrrrrr
r*vr+zUSelectorEventLoopUnixSocketTests.test_create_unix_server_bind_error.<locals>.<lambda>z/test)rocSsdS)Nrrrrr
r*|r+)rr#rjr`rErkr-rrlrrmrPr
rJ�MemoryError)rZm_socketrprqrrr
�"test_create_unix_server_bind_erroroszCSelectorEventLoopUnixSocketTests.test_create_unix_server_bind_errorc	CsB|jjdd�tjt�d�}|�td��|j�|�WdQRXdS)NcSsdS)Nrrrrr
r*�r+zXSelectorEventLoopUnixSocketTests.test_create_unix_connection_path_sock.<locals>.<lambda>)rpzpath and sock can not be)rrwr��devnullrTr5rrm)rrqrrr
�%test_create_unix_connection_path_sock�szFSelectorEventLoopUnixSocketTests.test_create_unix_connection_path_sockc	Cs:|j�dd�d�}|�td��|j�|�WdQRXdS)NcSsdS)Nrrrrr
r*�r+z\SelectorEventLoopUnixSocketTests.test_create_unix_connection_nopath_nosock.<locals>.<lambda>zno path and sock were specified)rrwr5rrm)rrqrrr
�)test_create_unix_connection_nopath_nosock�s
zJSelectorEventLoopUnixSocketTests.test_create_unix_connection_nopath_nosockc	Cs@|jjdd�tjdd�}|�td��|j�|�WdQRXdS)NcSsdS)Nrrrrr
r*�r+z_SelectorEventLoopUnixSocketTests.test_create_unix_connection_nossl_serverhost.<locals>.<lambda>r)Zserver_hostnamez"server_hostname is only meaningful)rrwr�r�r5rrm)rrqrrr
�,test_create_unix_connection_nossl_serverhost�s
zMSelectorEventLoopUnixSocketTests.test_create_unix_connection_nossl_serverhostc	Cs@|jjdd�tjdd�}|�td��|j�|�WdQRXdS)NcSsdS)Nrrrrr
r*�r+z_SelectorEventLoopUnixSocketTests.test_create_unix_connection_ssl_noserverhost.<locals>.<lambda>T)r�z/you have to pass server_hostname when using ssl)rrwr�r�r5rrm)rrqrrr
�,test_create_unix_connection_ssl_noserverhost�s

zMSelectorEventLoopUnixSocketTests.test_create_unix_connection_ssl_noserverhostc	Cs>|jjdd�ddd�}|�td��|j�|�WdQRXdS)NcSsdS)Nrrrrr
r*�r+zjSelectorEventLoopUnixSocketTests.test_create_unix_connection_ssl_timeout_with_plain_sock.<locals>.<lambda>rr)ror�z1ssl_handshake_timeout is only meaningful with ssl)rrwr5rrm)rrqrrr
�7test_create_unix_connection_ssl_timeout_with_plain_sock�szXSelectorEventLoopUnixSocketTests.test_create_unix_connection_ssl_timeout_with_plain_sock)r@rArBrrZskip_unless_bind_unix_socketrsrvryr~r�r�r�r��unittest�
skipUnless�hasattrrjr�r�r�rrdr�r�r�r�r�r�rerr)rr
rg�s(
						rg�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�12345abcde12345abcde12345abcde12345abcde12345abcde12345abcde12345abcde12345abcde12345abcde12345abcde12345abcde12345abcde12345abcde12345abcde12345abcde12345abcdeic@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�dS)NT)r�rr��
set_result)rrrrr
�connection_made�sz>SelectorEventLoopUnixSockSendfileTests.MyProto.connection_madecCs|j�|�dS)N)r��extend)rr�rrr
�
data_received�sz<SelectorEventLoopUnixSockSendfileTests.MyProto.data_receivedcCsd|_|j�d�dS)NT)r�r�r�)r�excrrr
�connection_lost�sz>SelectorEventLoopUnixSockSendfileTests.MyProto.connection_lostc�s|jIdHdS)N)r�)rrrr
rn�sz:SelectorEventLoopUnixSockSendfileTests.MyProto.wait_closedN)r@rArBr�r�r�r�rnrrrr
�MyProto�s
r�c	s2ttjd��}|�|j�WdQRXt���dS)N�wb)�openr�TESTFN�write�DATAr�
setUpClass)�cls�fp)rrr
r��sz1SelectorEventLoopUnixSockSendfileTests.setUpClasscst�tj�t���dS)N)rr�r�r�
tearDownClass)r�)rrr
r��sz4SelectorEventLoopUnixSockSendfileTests.tearDownClasscs@t��|_|�|j�ttjd�|_|�|jj	�t
���dS)N�rb)r�new_event_looprrr�rr�r}r4r
rr)r)rrr
r�s

z,SelectorEventLoopUnixSockSendfileTests.setUpTcCsRt�tjtj�}|�d�|�tjtjd�|�tjtjd�|rN|�|j	�|S)NFi)
rjZAF_INETr�ZsetblockingZ
setsockoptZ
SOL_SOCKETZ	SO_SNDBUFZ	SO_RCVBUFr4r
)r�cleanuprprrr
�make_socket�s
z2SelectorEventLoopUnixSockSendfileTests.make_socketcCs|j�|�S)N)rrm)rrqr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�S)Nrr)�protorr
r*�r+z@SelectorEventLoopUnixSockSendfileTests.prepare.<locals>.<lambda>)rpcs2�j�����������������dS)N)rr
r�rnr)r�r�serverrr
r��s
z?SelectorEventLoopUnixSockSendfileTests.prepare.<locals>.cleanup)r�r�rrZfind_unused_portrkZHOSTr�Z
create_serverZsock_connectr�r4)rrpZportZsrv_sockr�r)r�rr�r
�prepare�s

z.SelectorEventLoopUnixSockSendfileTests.preparec
Csp|��\}}tjdgd��:|�tjd�� |�|j�||j	dd��WdQRXWdQRX|�
|j	��d�dS)Nzasyncio.unix_events.os)�specz$os[.]sendfile[(][)] is not availabler)r�rrdr5r�SendfileNotAvailableErrorr�r�_sock_sendfile_nativer}r;�tell)rrpr�rrr
� test_sock_sendfile_not_available�szGSelectorEventLoopUnixSockSendfileTests.test_sock_sendfile_not_availablec	CsZ|��\}}t�}|�tjd��|�|j�||dd��WdQRX|�|j	�
�d�dS)Nznot a regular filer)r�rTr5rr�r�rr�r;r}r�)rrpr��frrr
�test_sock_sendfile_not_a_fileszDSelectorEventLoopUnixSockSendfileTests.test_sock_sendfile_not_a_filec	Cs\|��\}}t��}|�tjd��|�|j�||dd��WdQRX|�	|j
��d�dS)Nznot a regular filer)r��io�BytesIOr5rr�r�rr�r;r}r�)rrpr�r�rrr
�test_sock_sendfile_iobufferszBSelectorEventLoopUnixSockSendfileTests.test_sock_sendfile_iobufferc	Csd|��\}}t��}d|j_|�tjd��|�|j	�
||dd��WdQRX|�|j�
�d�dS)Nr>znot a regular filer)r�rr#�filenor`r5rr�r�rr�r;r}r�)rrpr�r�rrr
�#test_sock_sendfile_not_regular_fileszJSelectorEventLoopUnixSockSendfileTests.test_sock_sendfile_not_regular_filec
Cs�|��\}}|j��}|j��}|j�|d||ddt|j�d�|��t	�
tj��|�
|�WdQRX|�t��|jj�|�WdQRXdS)Nr)r�rr�r}r��_sock_sendfile_native_implr\r�r$�
contextlib�suppressrZCancelledErrorr�r�KeyError�	_selector�get_key)rrpr�r�r�rrr
�test_sock_sendfile_cancel1s

zASelectorEventLoopUnixSockSendfileTests.test_sock_sendfile_cancel1c
Cs�|��\}}|j��}|j��}|j�|d||ddt|j�d�|��|j�||��||ddt|j�d�|�	t
��|jj�|�WdQRXdS)Nr)
r�rr�r}r�r�r\r�r$rr�r�r�)rrpr�r�r�rrr
�test_sock_sendfile_cancel2+s

zASelectorEventLoopUnixSockSendfileTests.test_sock_sendfile_cancel2cCs�|��\}}|j��}t��}d|j_tjdt�d��&|j	�
|d||ddt|j�d�WdQRX|j	j
�|�}|�|�|j�tj�dS)NFzos.sendfile)r-r)r�r}r�rr#Z	cancelledr`rd�BlockingIOErrorrr�r\r�r�r��assertIsNotNoneZadd_done_callbackr]�ANY)rrpr�r�r��keyrrr
�!test_sock_sendfile_blocking_error8s

zHSelectorEventLoopUnixSockSendfileTests.test_sock_sendfile_blocking_errorcCs�|��\}}|j��}|j��}tjdt�d��&|j�|d||ddt	|j
�d�WdQRX|�t��|jj
�|�WdQRX|��}|�|tj�|�d|j���dS)Nzos.sendfile)r-r)r�r}r�rr�rrdrEr�r\r�rr�r�r��	exceptionr:rr�r;r�)rrpr�r�r�r�rrr
�&test_sock_sendfile_os_error_first_callEs

zMSelectorEventLoopUnixSockSendfileTests.test_sock_sendfile_os_error_first_callcCs�|��\}}|j��}|j��}t�}tjd|d��*|j�||��||ddt	|j
�d�WdQRX|�t��|jj
�|�WdQRX|��}|�||�|�d|j���dS)Nzos.sendfile)r-i�)r�r}r�rr�rErrdr�r\r�rr�r�r�r��assertIsr;r�)rrpr�r�r��errr�rrr
�%test_sock_sendfile_os_error_next_callSs

zLSelectorEventLoopUnixSockSendfileTests.test_sock_sendfile_os_error_next_callcCs�|��\}}|j��}|j��}t��}tjd|d��*|j�	||��||ddt
|j�d�WdQRX|�t
��|jj�|�WdQRX|��}|�||�|�d|j���dS)Nzos.sendfile)r-i�)r�r}r�rr�rr�rrdr�r\r�rr�r�r�r�r�r;r�)rrpr�r�r�r�r�rrr
�test_sock_sendfile_exceptionds

zCSelectorEventLoopUnixSockSendfileTests.test_sock_sendfile_exception)T)r@rArBr�r�Protocolr��classmethodr�r�rr�r�r�r�r�r�r�r�r�r�r�r�r�rerr)rr
r��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)�spec_set�zos.set_blockingzos.fstat)rr�
new_test_looprrh�make_test_protocolrr��protocolrr#r��	RawIOBase�piper�r`rd�startr4�stop�stat�S_IFIFO�st_mode)r�blocking_patcher�
fstat_patcher�m_fstat�st)rrr
rxs




z UnixReadPipeTransportTests.setUpNcCs(tj|j|j|j|d�}|�t|�|S)N)�waiter)rZ_UnixReadPipeTransportrr�r�r4r)rr�rrrr
�read_pipe_transport�s
z.UnixReadPipeTransportTests.read_pipe_transportcCsVtj|jd�}|j|d�}|j�|�|jj�|�|j�d|j	�|�
|���dS)N)r)r�r�)r�Futurerr�rmr�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)Nsdatar�)r�r`r�r'�max_sizer�r�)r�m_readr�r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�r`r�r'r�rHr�readersrh�run_brieflyr�Zeof_receivedr�)rr�r�rrr
�test__read_ready_eof�sz/UnixReadPipeTransportTests.test__read_ready_eofcCsD|��}t|_|��|�d|j�t�|j�|�	|j
jj�dS)Nr�)
r�r�r-r�r'r�rhr�rrHr�r�rJ)rr�r�rrr
�test__read_ready_blocked�sz3UnixReadPipeTransportTests.test__read_ready_blockedzasyncio.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�rEr-rr#�_closer�r'r�rhZMockPattern�MOCK_ANY)rr��m_logexcr�r�rrr
�test__read_ready_error�s
z1UnixReadPipeTransportTests.test__read_ready_errorcCs8|��}t��}|j�d|�|��|�|jj�dS)Nr�)r�rr#r�
add_reader�
pause_readingrHr�)rr�r��mrrr
�test_pause_reading�s
z-UnixReadPipeTransportTests.test_pause_readingcCs,|��}|��|��|j�d|j�dS)Nr�)r�r�resume_readingrr�r�)rr�r�rrr
�test_resume_reading�sz.UnixReadPipeTransportTests.test_resume_readingcCs*|��}t��|_|��|j�d�dS)N)r�rr#r�r
r')rr�r�rrr
r^�s
z%UnixReadPipeTransportTests.test_closecCs2|��}d|_t��|_|��|�|jj�dS)NT)r��_closingrr#r�r
rHrJ)rr�r�rrr
�test_close_already_closing�s

z5UnixReadPipeTransportTests.test_close_already_closingcCsR|��}t�}|�|�|�|���|�|jj�t�	|j�|j
j�|�dS)N)
r�rTr�rP�
is_closingrHrr�rhr�r�r�r')rr�r�r�rrr
�test__close�s
z&UnixReadPipeTransportTests.test__closecCsd|��}|�|j�|�|j�d}|�|�|jj�|�|jj	��|�
|j�|�
|j�dS)N)r�r��	_protocol�_loop�_call_connection_lostr�r�r'r�r
r�)rr�r�rrr
�test__call_connection_lost�s
z5UnixReadPipeTransportTests.test__call_connection_lostcCsf|��}|�|j�|�|j�t�}|�|�|jj�|�|j	j
��|�|j�|�|j�dS)N)r�r�rr
rErr�r�r'r�r
r�)rr�r�rrr
�#test__call_connection_lost_with_err�s
z>UnixReadPipeTransportTests.test__call_connection_lost_with_errcCs4|��}|��t�|j�|�|j�|��dS)N)r�r
rhr�rr�r
r)rr�rrr
�!test_pause_reading_on_closed_pipes
z<UnixReadPipeTransportTests.test_pause_reading_on_closed_pipecCs|��}|��|��dS)N)r�r)rr�rrr
�!test_pause_reading_on_paused_pipesz<UnixReadPipeTransportTests.test_pause_reading_on_paused_pipecCs4|��}|��t�|j�|�|j�|��dS)N)r�r
rhr�rr�r
r)rr�rrr
�"test_resume_reading_on_closed_pipes
z=UnixReadPipeTransportTests.test_resume_reading_on_closed_pipecCs|��}|��dS)N)r�r)rr�rrr
�"test_resume_reading_on_paused_pipe sz=UnixReadPipeTransportTests.test_resume_reading_on_paused_pipe)N)r@rArBrr�r�rrdr�r�r�rrrr^r	rrrrrrrrerr)rr
r�vs&
		



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�dS)N)r�r�zos.set_blockingzos.fstat)rrr�rrhr�rZBaseProtocolr�rr#r�r�r�r�r`rdr�r4r�r��S_IFSOCKr�)rr�r�r�r�)rrr
r)s




z!UnixWritePipeTransportTests.setUpNcCs(tj|j|j|j|d�}|�t|�|S)N)r�)rZ_UnixWritePipeTransportrr�r�r4r)rr�rrrr
�write_pipe_transport;s
z0UnixWritePipeTransportTests.write_pipe_transportcCsXtj|jd�}|j|d�}|j�|�|jj�|�|j�d|j	�|�
d|���dS)N)r)r�r�)rr�rrrmr�r�r'r�r�r;r�)rr�r�rrr
r�Bsz%UnixWritePipeTransportTests.test_ctorcCs|��}|�|���dS)N)rrPZ
can_write_eof)rr�rrr
�test_can_write_eofKsz.UnixWritePipeTransportTests.test_can_write_eofzos.writecCsF|��}d|_|�d�|�dd�|�|jj�|�t�|j	�dS)N�sdatar�)
rr`r�r'rHr�writersr;r��_buffer)r�m_writer�rrr
�
test_writeOs
z&UnixWritePipeTransportTests.test_writecCsB|��}|�d�|�|j�|�|jj�|�td�|j�dS)Nr+)	rr�rHrJrrr;r�r)rrr�rrr
�test_write_no_dataXs

z.UnixWritePipeTransportTests.test_write_no_datacCs>|��}d|_|�d�|j�d|j�|�td�|j�dS)NrNsdatar�sta)	rr`r�r�
assert_writer�_write_readyr;r�r)rrr�rrr
�test_write_partial`s

z.UnixWritePipeTransportTests.test_write_partialcCs^|��}|j�d|j�td�|_|�d�|�|j�|j�	d|j�|�
td�|j�dS)Nr�sprevioussdataspreviousdata)rr�
add_writerr r�rr�rHrJrr;)rrr�rrr
�test_write_bufferhs

z-UnixWritePipeTransportTests.test_write_buffercCsP|��}t�|_|�d�|�dtd��|j�d|j�|�	td�|j
�dS)Nsdatar�)rr�r-r�r'r�rrr r;r)rrr�rrr
�test_write_againrs
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)Nsdatar�z#Fatal write error on pipe transportrrNz=pipe closed by peer or os.write(pipe, data) raised exception.)rrEr-rr#Z_fatal_errorr�r'rHrrr;r�r�
_conn_lost�warningr
)rrZm_logr�r�rrr
�test_write_err{s*






z*UnixWritePipeTransportTests.test_write_errcCsD|��}|��|�d�|�|jd�|�d�|�|jd�dS)NsdatarrN)rr�r�r;r%)rrr�rrr
�test_write_close�s

z,UnixWritePipeTransportTests.test_write_closecCsX|��}|��|�|jj�|�|jj�|�|���t�	|j�|j
j�d�dS)N)
rr�rHrr�rrPr
rhr�r�r�r')rr�rrr
r��sz,UnixWritePipeTransportTests.test__read_readycCsR|��}|j�d|j�td�|_d|_|��|�|jj�|�	t�|j�dS)Nr�sdatar)
rrr"r r�rr`rHrr;)rrr�rrr
�test__write_ready�s
z-UnixWritePipeTransportTests.test__write_readycCsV|��}|j�d|j�td�|_d|_|��|j�d|j�|�td�|j�dS)Nr�sdata��a)	rrr"r r�rr`rr;)rrr�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�sdata)rrr"r r�rr�r-r'rr;)rrr�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�sdatar)
rrr"r r�rr`r'rr;)rrr�rrr
�test__write_ready_empty�s
z3UnixWritePipeTransportTests.test__write_ready_emptyzasyncio.log.logger.errorcCs�|��}|j�d|j�td�|_t�|_}|��|�|jj	�|�|jj
�|�t�|j�|�|�
��|��|�d|j�t�|j�|jj�|�dS)Nr�sdatar)rrr"r r�rrEr-rHrr�r;rPr
Zassert_not_calledr%rhr�r�r�r')rrrr�r�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�Tsdatar)rrr"r rr�rr`rHrr�r;r�r�r'r�r
)rrr�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�sdasta)rrr"r rr�r�abortrHrJr�rr;rPr
rhr�r�r�r')rrr�rrr
�
test_abort�s
z&UnixWritePipeTransportTests.test_abortcCsd|��}|�|j�|�|j�d}|�|�|jj�|�|jj	��|�
|j�|�
|j�dS)N)rr�rr
rr�r�r'r�r
r�)rr�r�rrr
rs
z6UnixWritePipeTransportTests.test__call_connection_lostcCsf|��}|�|j�|�|j�t�}|�|�|jj�|�|j	j
��|�|j�|�|j�dS)N)rr�rr
rErr�r�r'r�r
r�)rr�r�rrr
rs
z?UnixWritePipeTransportTests.test__call_connection_lost_with_errcCs0|��}t��|_|��|j��|��dS)N)rrr#�	write_eofr
r')rr�rrr
r^s


z&UnixWritePipeTransportTests.test_closecCs2|��}t��|_d|_|��|�|jj�dS)NT)rrr#r3rr
rHrJ)rr�rrr
�test_close_closing$s

z.UnixWritePipeTransportTests.test_close_closingcCsJ|��}|��|�|���|�|jj�t�|j�|j	j
�d�dS)N)rr3rPr
rHrr�rhr�r�r�r')rr�rrr
�test_write_eof+sz*UnixWritePipeTransportTests.test_write_eofcCs:|��}dg|_|��|�|���|�|jjj�dS)Nsdata)	rrr3rPr
rHr�r�rJ)rr�rrr
�test_write_eof_pending3s
z2UnixWritePipeTransportTests.test_write_eof_pending)N)r@rArBrrr�rrrdrrr!r#r$r'r(r�r)r,r-r.r/r0r2rrr^r4r5r6rerr)rr
r's6
		
	
	



	rc@seZdZdd�ZdS)�AbstractChildWatcherTestscCsvt��}t��}|�t|j||�|�t|j|�|�t|j|�|�t|j	�|�t|j
�|�t|j|||�dS)N)rr#rZAbstractChildWatcherr�NotImplementedError�add_child_handler�remove_child_handler�attach_loopr
�	__enter__�__exit__)rr��watcherrrr
�test_not_implemented=s

z.AbstractChildWatcherTests.test_not_implementedN)r@rArBr?rrrr
r7;sr7c@seZdZdd�ZdS)�BaseChildWatcherTestscCs$t��}t��}|�t|j|�dS)N)rr#rZBaseChildWatcherrr8Z_do_waitpid)rr�r>rrr
r?Psz*BaseChildWatcherTests.test_not_implementedN)r@rArBr?rrrr
r@Nsr@�WaitPidMocks)�waitpid�	WIFEXITED�WIFSIGNALED�WEXITSTATUS�WTERMSIGcs eZdZej�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/��Zed0d1��Z �Z!S)2�ChildWatcherTestsMixinr&c	sZt���|��|_d|_i|_tj�|jd�� |_	|�
�|_|j�|j�WdQRXdS)NFr/)
rrr�r�running�zombiesrrdrT�m_add_signal_handler�create_watcherr>r;)r)rrr
rds


zChildWatcherTestsMixin.setUpcCsrt|jtj�s|dkr"|�|d�y&|dkr6|j��S||j�|�fSWntk
r\YnX|j	rhdSt
��dS)Nr>r)rr)�
isinstancer>r�SafeChildWatcherZ
assertGreaterrI�popitem�popr�rH�ChildProcessError)r�pid�flagsrrr
rBos
zChildWatcherTestsMixin.waitpidcCs|d|j|<dS)Ni�)rI)rrQ�
returncoderrr
�
add_zombie~sz!ChildWatcherTestsMixin.add_zombiecCs|dkS)Ni�r)r�statusrrr
rC�sz ChildWatcherTestsMixin.WIFEXITEDcCsd|kodkSS)Ni�i�r)rrUrrr
rD�sz"ChildWatcherTestsMixin.WIFSIGNALEDcCs|�|�|��|dS)Ni�)rPrC)rrUrrr
rE�sz"ChildWatcherTestsMixin.WEXITSTATUScCs|�|�|��d|S)Ni�)rPrD)rrUrrr
rF�szChildWatcherTestsMixin.WTERMSIGcCs|j�tj|jj�dS)N)rJr]rr[r>�	_sig_chld)rrrr
�test_create_watcher�sz*ChildWatcherTestsMixin.test_create_watchercs�fdd�}|S)Nc
s�dd�}|d|j��|}|d|j��d}|d|j��L}|d|j��4}|d|j��}�|t|||||��WdQRXWdQRXWdQRXWdQRXWdQRXdS)NcSstj||tjd�S)N)�wrapsZnew_callable)rrdr#)�target�wrapperrrr
rd�szIChildWatcherTestsMixin.waitpid_mocks.<locals>.wrapped_func.<locals>.patchzos.WTERMSIGzos.WEXITSTATUSzos.WIFSIGNALEDzos.WIFEXITEDz
os.waitpid)rFrErDrCrBrA)rrdZ
m_WTERMSIGZ
m_WEXITSTATUSZ
m_WIFSIGNALEDZm_WIFEXITEDZ	m_waitpid)r6rr
�wrapped_func�sz:ChildWatcherTestsMixin.waitpid_mocks.<locals>.wrapped_funcr)r6r[r)r6r
�
waitpid_mocks�sz$ChildWatcherTestsMixin.waitpid_mocksc	Cst��}|j� d|_|j�d|ddd�WdQRX|�|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��WdQRX|�|j�|�|j
j�|j��|j��|j	��|j��|j��|�|j�|�|jj�|�|jj�|�|j	j�|�|j
j�dS)	NT�*�	�
�F��
)rr#r>rHr9rHrJrCrDrErFrVrTrPr]rU�ignore_warningsrI�clear)rr�callbackrrr
�test_sigchld�sR









z#ChildWatcherTestsMixin.test_sigchldc	Cs�t��}t��}|j�d|_|j�d|dd�WdQRX|�|j�|�|j�|�|jj�|�|jj�|�|j	j�|�|j
j�|j�|j�d|dd�WdQRX|�|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��WdQRX|�|j�|�|j�|�|j
j�|j��|j��|j	��|j��|j��|�|j�|�|j�|�|jj�|�|jj�|�|j	j�|�|j
j�dS)
NT�+���,������lFr`�)rr#r>rHr9rHrJrCrDrErFrVrTr]rPrUrcrIrd)rr�	callback1�	callback2rrr
�test_sigchld_two_children�s�














z0ChildWatcherTestsMixin.test_sigchld_two_childrenc	Csnt��}t��}|j�d|_|j�d|dd�WdQRX|�|j�|�|j�|�|jj�|�|jj�|�|j	j�|�|j
j�|j�|j�d|dd�WdQRX|�|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��WdQRX|�|j�|�|j�|�|j
j�dS)
NT�-�ri�.i{rl�N���Fr`ro)rr#r>rHr9rHrJrCrDrErFrVrTr]rPrUrc)rrrprqrrr
�.test_sigchld_two_children_terminating_togetherIsb





zEChildWatcherTestsMixin.test_sigchld_two_children_terminating_togetherc	Cs�t��}|j�.|�dd�|j��|j�d|dd�WdQRX|�dddd�|��|�dd�|j�|j��WdQRX|�	|j
�dS)N�2rrrar>)rr#r>rTrVr9r]rUrcrHrJ)rrrerrr
�test_sigchld_race_condition�s
z2ChildWatcherTestsMixin.test_sigchld_race_conditionc	Cs�t��}t��}|j�d|_|j�d|d�WdQRX|�|j�|�|j�|�|jj�|�|jj�|�|j	j�|�|j
j�|j�|j�d|d�WdQRX|�|j�|�|j�|�|jj�|�|jj�|�|j	j�|�|j
j�d|_|�dd�|j��|�
ddd�|�|j�|�|jj�|�|j	j�|�|j
j�|j��|j��|j
��|��|�dd�|j�|j��WdQRX|�|j�|�|j�|�|j
j�dS)NT�3��Fi����rb)rr#r>rHr9rHrJrCrDrErFrTrVr]rPrUrc)rrrprqrrr
�test_sigchld_replace_handler�sJ



z3ChildWatcherTestsMixin.test_sigchld_replace_handlerc	Cst��}|j�d|_|j�d|d�WdQRX|�|j�|�|jj�|�|jj�|�|j	j�|�|j
j�|j�d�|�|j�|�|jj�|�|jj�|�|j	j�|�|j
j�d|_|�dd�|j
�|j��WdQRX|�|j�dS)NT�4i�F�c)rr#r>rHr9rHrJrCrDrErFr:rTrcrV)rrrerrr
�test_sigchld_remove_handler�s(z2ChildWatcherTestsMixin.test_sigchld_remove_handlerc	Cs(t��}|j�d|_|j�d|d�WdQRX|�|j�|�|jj�|�|jj�|�|j	j�|�|j
j�d|jd<d|_|j��|�
ddd�|�|jj�|�|jj�|�|j	j�|�|j
j�|��|j��|j��|�dd�|j�|j��WdQRX|�|j�dS)NT�5i��i�F�e)rr#r>rHr9rHrJrCrDrErFrIrVr]rPrUrTrc)rrrer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�WdQRX|�|j�d��|�|j�d��|�|j�d��|�|j�d��|�dd�|�dd�|�dd�d	|_|j	�|j�
�WdQRX|�|j�|�|j�|�ddd�dS)
NT�6r�7rN�8r*rF)
rr#r>rHr9rPr:rHrTrcrVrJr])rrrprq�	callback3rrr
�test_remove_child_handlers*z0ChildWatcherTestsMixin.test_remove_child_handlerc	Cstt��}|j�d|_|j�d|�WdQRXt|j_tj�	t
jd��$}|�|j�
�d�|�|j�WdQRXdS)NT�9�error)rr#r>rHr9rrBr-rdrTr�loggerr;rVrPrJ)rrreZm_errorrrr
� test_sigchld_unhandled_exception?s
z7ChildWatcherTestsMixin.test_sigchld_unhandled_exceptionc	Cs�t��}|j�d|_|j�d|�WdQRX|�|j�|�|jj�|�|jj�|�|j	j�|�|j
j�d|_|�dd�t�
dtj�|j
��|j�|j��WdQRXt|jtj�r�|�|j�n|�dd�dS)NT�:Fr�)rr#r>rHr9rHrJrCrDrErFrTr�rB�WNOHANGrUrcrVrLr�FastChildWatcherr])rrrerrr
�#test_sigchld_child_reaped_elsewhereQs$
z:ChildWatcherTestsMixin.test_sigchld_child_reaped_elsewherec
Cs�t��}t��}|j�\|j�Jd|_|�dd�|�dd�|j��|j�d|�|j�d|�WdQRXWdQRX|�dd�|�	|j
�dS)NTiOrhiQrtiP)rr#rcr>rHrTrVr9r]rHrJ)rrrprqrrr
�,test_sigchld_unknown_pid_during_registrationts
"zCChildWatcherTestsMixin.test_sigchld_unknown_pid_during_registrationc
Cs�t��}|j�d|_|j�d|�WdQRX|j}|��|_tjj}||d��J}||jd��2}|j�	|j�|�
tj�|�
tj|jj
�WdQRXWdQRXd|_|�dd�|j�
�|�
dd�dS)NT�<r&r/Fr^)rr#r>rHr9rr�rdrTr;r]rr[rVrT)rrre�old_looprdZ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|�WdQRX|j}d|_tj�|d��6}|�t	d��|j�
d�WdQRX|�tj
�WdQRX|�dd�|�dd�|�|j�|�|j�|�|j�|��|_tj�|jd	��J}|j�
|j�|�tj
|jj�|�dd�|�dd�|�|j�WdQRX|��|��d
|_|�dd�|j��|�|j�|�|j�|�dd�dS)NT�=�>inr&zA loop is being detached�rwr/Fr|)rr#r>rHr9rrdrTra�RuntimeWarningr;r]rr[rTrHrJr�rVrU)rrrprqr�r��m_remove_signal_handlerrJrrr
�test_set_loop_race_condition�sN



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
�WdQRXWdQRXdS)	NT�?r^�Arl�@rr&)rr#r>rHrTrVr9r;r\Z
_callbacksrLrr�Z_zombiesrdrTrr
r]rr[rH)rrrpr�rrr
r^�s(

z!ChildWatcherTestsMixin.test_closec
CsDt��}|���*}|�td��|�d|�WdQRXWdQRXdS)Nz/the child watcher does not have a loop attached�d)rr#rKr5r.r9)rrrer>rrr
�,test_add_child_handler_with_no_loop_attacheds
zCChildWatcherTestsMixin.test_add_child_handler_with_no_loop_attached)"r@rArBrrdrTrr�rcrrBrTrCrDrErFrWr\rfrrrxrzr~r�r�r�r�r�r�r�r�r^r�rerr)rr
rG`s2=hE5 %!#> rGc@seZdZdd�ZdS)�SafeChildWatcherTestscCst��S)N)rrM)rrrr
rKsz$SafeChildWatcherTests.create_watcherN)r@rArBrKrrrr
r�sr�c@seZdZdd�ZdS)�FastChildWatcherTestscCst��S)N)rr�)rrrr
rKsz$FastChildWatcherTests.create_watcherN)r@rArBrKrrrr
r�sr�c@s<eZdZdd�Zdd�Zdd�Zdd�Zd	d
�Zdd�Zd
S)�PolicyTestscCst��S)N)rZDefaultEventLoopPolicy)rrrr
�
create_policyszPolicyTests.create_policycCsX|��}|�|j�|��}|�|tj�|�|j|�|�||���|�|j�dS)N)	r�r��_watcher�get_child_watcherr:rrMr�r
)r�policyr>rrr
�test_get_child_watchersz"PolicyTests.test_get_child_watchercCs<|��}t��}|�|�|�|j|�|�||���dS)N)r�rr�Zset_child_watcherr�r�r�)rr�r>rrr
� test_get_child_watcher_after_set+s

z,PolicyTests.test_get_child_watcher_after_setcCsL|��}|��}|�|j�|��}|�|tj�|�|j	|�|�
�dS)N)r��get_event_loopr�r�r�r:rrMr�r
r
)rr�rr>rrr
�-test_get_child_watcher_with_mainloop_existing3sz9PolicyTests.test_get_child_watcher_with_mainloop_existingcs6��fdd�}����tj|d�}|��|��dS)NcsR�����������tj����}��|tj���|j	�����
�dS)N)rr�r:r�rZAbstractEventLoopr�rMr�r
r
)r>)r�rrr
r�As
z4PolicyTests.test_get_child_watcher_thread.<locals>.f)rY)r��	threadingZThreadr��join)rr��thr)r�rr
�test_get_child_watcher_thread?s
z)PolicyTests.test_get_child_watcher_threadcCsr|��}|��}|��}|�|j|�|��}|�|�|�|j|�|�d�|�|jd�|��|��dS)N)r�r�r�r�r
r�rr
)rr�rr>Znew_looprrr
�,test_child_watcher_replace_mainloop_existingSs

z8PolicyTests.test_child_watcher_replace_mainloop_existingN)	r@rArBr�r�r�r�r�r�rrrr
r�sr�c@s,eZdZdd�Zdd�Zdd�Zdd�Zd	S)
�TestFunctionalcCst��|_t�|j�dS)N)rr�rr)rrrr
rjs
zTestFunctional.setUpcCs|j��t�d�dS)N)rr
rr)rrrr
�tearDownns
zTestFunctional.tearDownc	s��fdd�}dd�}|���j�t�|�WdQRX|���j�t�|�WdQRX|���j�t��WdQRX|���j�t��WdQRXdS)Ncs��td�S)NzInvalid file object)r5rr)rrr
�
assert_raisessszFTestFunctional.test_add_reader_invalid_argument.<locals>.assert_raisescSsdS)Nrrrrr
r*vr+zATestFunctional.test_add_reader_invalid_argument.<locals>.<lambda>)rrrTr"�
remove_reader�
remove_writer)rr�r<r)rr
� test_add_reader_invalid_argumentrsz/TestFunctional.test_add_reader_invalid_argumentcsR�fdd�����fdd�}t��\�}z�j�|��Wd���|��XdS)Ncs��td�S)Nz'File descriptor .* is used by transport)r5r.r)rrr
r��szLTestFunctional.test_add_reader_or_writer_transport_fd.<locals>.assert_raisesc	�sD�jjdd��d�IdH\}}�zdd�}����j��|�WdQRX����j����|�WdQRX����j���WdQRX����j�����WdQRX����j��|�WdQRX����j����|�WdQRX����j���WdQRX����j�����WdQRXWd|��XdS)NcSst��S)N)rr�rrrr
r*�r+zWTestFunctional.test_add_reader_or_writer_transport_fd.<locals>.runner.<locals>.<lambda>)rpcSsdS)Nrrrrr
r*�r+)rZcreate_connectionrr�r�r"r�r
)r�Zprr<)r��rsockrrr
�runner�s*zETestFunctional.test_add_reader_or_writer_transport_fd.<locals>.runner)rjZ
socketpairrrmr
)rr�Zwsockr)r�r�rr
�&test_add_reader_or_writer_transport_fd�sz5TestFunctional.test_add_reader_or_writer_transport_fdN)r@rArBrr�r�r�rrrr
r�hsr��__main__)1�__doc__�collectionsr�rCr�r�rtrrjr��sysrzr�r�rZtestr�platformZSkipTestrrrrrZtest.test_asyncior	rhr�r�rr�ZTestCaserr�rgr�r�rr7r@�
namedtuplerArGr�r�r�r�r@�mainrrrr
�<module>sr

	
R
)
N2	5NF