Your IP : 216.73.216.213


Current Path : /opt/alt/python38/lib64/python3.8/test/test_asyncio/__pycache__/
Upload File :
Current File : //opt/alt/python38/lib64/python3.8/test/test_asyncio/__pycache__/test_unix_events.cpython-38.pyc

U

i�f��@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)�supportZwin32z	UNIX only)�log)�unix_events)�utilscCst�d�dS�N)�asyncioZset_event_loop_policy�r	r	�G/opt/alt/python38/lib64/python3.8/test/test_asyncio/test_unix_events.py�tearDownModule srcCs"|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�setUprZSelectorEventLoop�loop�set_event_loop��self��	__class__r	r
r0s

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_signalrrrr	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�assertRaisesRegexrrr2r3)rr5r7Z	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	r
r,hr-zFSelectorEventLoopSignalTests.test_add_signal_handler.<locals>.<lambda>)
rrr.rr2�SIGHUPr&�get�assertIsInstancerr#�assertEqualZ	_callback)rr5�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	r
r/sszYSelectorEventLoopSignalTests.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
�ErrxsrHcSsdSr+r	r	r	r	r
r,r-zTSelectorEventLoopSignalTests.test_add_signal_handler_install_error.<locals>.<lambda>)
rrr.r/�OSErrorr0rrr2r3)rr5r/rHr	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�rDrErFrGZEINVALr	r	r	r
rH�srHcSsdSr+r	r	r	r	r
r,�r-zUSelectorEventLoopSignalTests.test_add_signal_handler_install_error2.<locals>.<lambda>cSsdSr+r	r	r	r	r
r,�r-r)rrr.rIr0rr&r<rr1r2r3�assertFalse�info�calledr?r/�
call_count�r�	m_loggingr5rHr	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>.ErrNrKr	r	r	r
rH�srHcSsdSr+r	r	r	r	r
r,�r-zUSelectorEventLoopSignalTests.test_add_signal_handler_install_error3.<locals>.<lambda>�)rIrr0rr.rr1rr2r3rLrMrNr?r/rOrPr	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	r
r,�r-zISelectorEventLoopSignalTests.test_remove_signal_handler.<locals>.<lambda>r)
rrr.rr2r<�
assertTruer'r/rNr?�SIG_DFL�	call_argsr4r	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	r
r,�r-zKSelectorEventLoopSignalTests.test_remove_signal_handler_2.<locals>.<lambda>r)rrr3r.rr2�objectr&r<r/�
reset_mockrUr'rLrNr?�default_int_handlerrWr4r	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	r
r,�r-zWSelectorEventLoopSignalTests.test_remove_signal_handler_cleanup_error.<locals>.<lambda>)rrr.rr2r<rr/r0r'rUrM)rrQr5r	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	r
r,�r-zOSelectorEventLoopSignalTests.test_remove_signal_handler_error.<locals>.<lambda>)
rrr.rr2r<rIr0rr'r4r	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	r
r,�r-zPSelectorEventLoopSignalTests.test_remove_signal_handler_error2.<locals>.<lambda>c@seZdZejZdS)zKSelectorEventLoopSignalTests.test_remove_signal_handler_error2.<locals>.ErrNrKr	r	r	r
rH�srH)rrr.rr2r<rIr0rr1r')rr5rHr	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	r
r,�r-z9SelectorEventLoopSignalTests.test_close.<locals>.<lambda>cSsdSr+r	r	r	r	r
r,�r-rSrrB)rrr.rr2r<�SIGCHLDr?�lenr&r/rZr�assert_called_once_withr4r	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	r
r,�r-zGSelectorEventLoopSignalTests.test_close_on_finalizing.<locals>.<lambda>rTz skipping signal handlers removalr)rrr.rr2r<r?rar&�
is_finalizing�return_valuerZ�assertWarnsRegex�ResourceWarningrrLrN)rr5Zm_sysr	r	r
�test_close_on_finalizing�s
�z5SelectorEventLoopSignalTests.test_close_on_finalizing)rDrErFrr r"r*r�patchr6r;rArJrRrTrXr\r]r^r_rcrh�
__classcell__r	r	rr
r-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	r
rs

z&SelectorEventLoopUnixSocketTests.setUpc	Csvt���d}t�tj�}|�|�|�d�|��|j�dd�|�}|j�	|�}|��|j�	|�
��W5QRXdS)NrcSsdSrr	r	r	r	r
r,r-z]SelectorEventLoopUnixSocketTests.test_create_unix_server_existing_path_sock.<locals>.<lambda>)�
test_utils�unix_socket_path�socketrk�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�|���W5QRXdS)NcSsdSrr	r	r	r	r
r,%r-zRSelectorEventLoopUnixSocketTests.test_create_unix_server_pathlib.<locals>.<lambda>)	rmrn�pathlib�Pathrrqrrrrs)rrtZsrv_cororwr	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	r
r,-r-zVSelectorEventLoopUnixSocketTests.test_create_unix_connection_pathlib.<locals>.<lambda>)	rmrnryrzr�create_unix_connectionr�FileNotFoundErrorrr)rrtrvr	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	r
r,5r-z`SelectorEventLoopUnixSocketTests.test_create_unix_server_existing_path_nonsock.<locals>.<lambda>zAddress.*is already in use)�tempfile�NamedTemporaryFilerrq�namer9rIrr)r�filervr	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	r
r,;r-zSSelectorEventLoopUnixSocketTests.test_create_unix_server_ssl_bool.<locals>.<lambda>�spamT)rt�sslz"ssl argument must be an SSLContext)rrqr9rrr�rrvr	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	r
r,Br-zXSelectorEventLoopUnixSocketTests.test_create_unix_server_nopath_nosock.<locals>.<lambda>�rtz#path was not specified, and no sock�rrqr9rrrr�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	r
r,Jr-zXSelectorEventLoopUnixSocketTests.test_create_unix_server_path_inetsock.<locals>.<lambda>�rtru�"A UNIX Domain Stream.*was expected)rorrqr9rrr�rrurvr	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	r
r,Sr-zUSelectorEventLoopUnixSocketTests.test_create_unix_server_path_dgram.<locals>.<lambda>r�r�)rorkZ
SOCK_DGRAMrrqr9rrrr�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	r
r,dr-z^SelectorEventLoopUnixSocketTests.test_create_unix_server_path_stream_bittype.<locals>.<lambda>r�)rork�SOCK_STREAMr�rr�r��os�unlinkrprrqrrrrs)rrur��fnrvrwr	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	r
r,mr-zfSelectorEventLoopUnixSocketTests.test_create_unix_server_ssl_timeout_with_plain_sock.<locals>.<lambda>r�r�rtZssl_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	r
r,wr-z\SelectorEventLoopUnixSocketTests.test_create_unix_connection_path_inetsock.<locals>.<lambda>�rur�)rorr|r9rrrr�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	r
r,�r-zUSelectorEventLoopUnixSocketTests.test_create_unix_server_bind_error.<locals>.<lambda>z/testr�cSsdSrr	r	r	r	r
r,�r-)rr$rorerIrpr0rrqrrrrUrrN�MemoryError)rZm_socketrurvr	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	r
r,�r-zXSelectorEventLoopUnixSocketTests.test_create_unix_connection_path_sock.<locals>.<lambda>r�zpath and sock can not be)rr|r��devnullrYr9rrrr�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	r
r,�r-z\SelectorEventLoopUnixSocketTests.test_create_unix_connection_nopath_nosock.<locals>.<lambda>zno path and sock were specified�rr|r9rrrr�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	r
r,�r-z_SelectorEventLoopUnixSocketTests.test_create_unix_connection_nossl_serverhost.<locals>.<lambda>r�)Zserver_hostnamez"server_hostname is only meaningful�rr|r�r�r9rrrr�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	r
r,�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	r
r,�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)rDrErFrrZskip_unless_bind_unix_socketrxr{r~r�r�r�r�r��unittest�
skipUnless�hasattrror�r�r�rrir�r�r�r�r�r�rjr	r	rr
rls2

			�	
	rl�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�r
r��
set_result)rr
r	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	r
rs�sz:SelectorEventLoopUnixSockSendfileTests.MyProto.wait_closedN)rDrErFr�r�r�r�rsr	r	r	r
�MyProto�s
r�c	s2ttjd��}|�|j�W5QRXt���dS)N�wb)�openr�TESTFN�write�DATAr�
setUpClass)�cls�fprr	r
r��sz1SelectorEventLoopUnixSockSendfileTests.setUpClasscst�tj�t���dSr)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�r8rrrrrr	r
r�s

z,SelectorEventLoopUnixSockSendfileTests.setUpTcCsRt�tjtj�}|�d�|�tjtjd�|�tjtjd�|rN|�|j	�|S)NFr�)
roZAF_INETr�ZsetblockingZ
setsockoptZ
SOL_SOCKETZ	SO_SNDBUFZ	SO_RCVBUFr8r)r�cleanuprur	r	r
�make_socket�s
z2SelectorEventLoopUnixSockSendfileTests.make_socketcCs|j�|�Sr)rrrr�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	r
r,�r-z@SelectorEventLoopUnixSockSendfileTests.prepare.<locals>.<lambda>r�cs2�j�����������������dSr)r
rr�rsr	�r�rZserverr	r
r��s
z?SelectorEventLoopUnixSockSendfileTests.prepare.<locals>.cleanup)r�r�rrZfind_unused_portrpZHOSTr�Z
create_serverZsock_connectr�r8)rruZportZsrv_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�rrir9r�SendfileNotAvailableErrorr�r�_sock_sendfile_nativer�r?�tell)rrur�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�rYr9rr�r�rr�r?r�r��rrur��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�BytesIOr9rr�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)NrBr�r)r�rr$�filenorer9rr�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_implrar�r%�
contextlib�suppressrZCancelledErrorr�r�KeyError�	_selector�get_key�rrur�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�rar�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�r0r)r�r�r�rr$Z	cancelledreri�BlockingIOErrorrr�rar�r�r��assertIsNotNoneZadd_done_callbackrb�ANY)rrur�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�rrirIr�rar�rr�r�r��	exceptionr>rr�r?r�)rrur�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�rIrrir�rar�rr�r�r�r��assertIsr?r��rrur�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�rr�rrir�rar�rr�r�r�r�r�r?r�r�r	r	r
�test_sock_sendfile_exceptionrs$

�zCSelectorEventLoopUnixSockSendfileTests.test_sock_sendfile_exception)T)rDrErFr�r�Protocolr��classmethodr�r�rr�r�r�r�r�r�r�r�r�r�r�r�r�rjr	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)Zspec_set�zos.set_blockingzos.fstat)rr�
new_test_looprrm�make_test_protocolrr��protocolrr$r��	RawIOBase�piper�reri�startr8�stop�stat�S_IFIFO�st_mode�rZblocking_patcherZ
fstat_patcherZm_fstat�strr	r
r�s




z UnixReadPipeTransportTests.setUpNcCs(tj|j|j|j|d�}|�t|�|S�N��waiter)rZ_UnixReadPipeTransportrr�r�r8r�rrr
r	r	r
�read_pipe_transport�s�z.UnixReadPipeTransportTests.read_pipe_transportcCsR|j��}|j|d�}|j�|�|jj�|�|j�d|j�|�	|�
��dS�Nrr�)rr�rrrr�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�)rrerr(�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�)
rrerr(rrLr�readersrm�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�)
rr�r0rr(rrmrrrLr�r�rNrr	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)rrIr0rr$�_closerr(rrmZMockPattern�MOCK_ANY)rr�m_logexcrr�r	r	r
�test__read_ready_error�s
��z1UnixReadPipeTransportTests.test__read_ready_errorcCs8|��}t��}|j�d|�|��|�|jj�dSr)rrr$r�
add_reader�
pause_readingrLr)rrr�mr	r	r
�test_pause_reading�s
z-UnixReadPipeTransportTests.test_pause_readingcCs,|��}|��|��|j�d|j�dSr)rr#�resume_readingrr
rrr	r	r
�test_resume_reading�sz.UnixReadPipeTransportTests.test_resume_readingcCs*|��}t��|_|��|j�d�dSr)rrr$rrr(rr	r	r
rc�s
z%UnixReadPipeTransportTests.test_closecCs2|��}d|_t��|_|��|�|jj�dSr+)r�_closingrr$rrrLrNrr	r	r
�test_close_already_closing�s

z5UnixReadPipeTransportTests.test_close_already_closingcCsR|��}t�}|�|�|�|���|�|jj�t�	|j�|j
j�|�dSr)
rrYrrU�
is_closingrLrrrmrr�r�r()rrrr�r	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�rrr�r	r	r
�test__call_connection_losts
z5UnixReadPipeTransportTests.test__call_connection_lostcCsf|��}|�|j�|�|j�t�}|�|�|jj�|�|j	j
��|�|j�|�|j�dSr)rr�r,r-rIr.r�r�r(r�rrr/r	r	r
�#test__call_connection_lost_with_err
s
z>UnixReadPipeTransportTests.test__call_connection_lost_with_errcCs4|��}|��t�|j�|�|j�|��dSr)rrrmrrrr-r#�rrr	r	r
�!test_pause_reading_on_closed_pipes
z<UnixReadPipeTransportTests.test_pause_reading_on_closed_pipecCs|��}|��|��dSr)rr#r2r	r	r
�!test_pause_reading_on_paused_pipe!sz<UnixReadPipeTransportTests.test_pause_reading_on_paused_pipecCs4|��}|��t�|j�|�|j�|��dSr)rrrmrrrr-r&r2r	r	r
�"test_resume_reading_on_closed_pipe's
z=UnixReadPipeTransportTests.test_resume_reading_on_closed_pipecCs|��}|��dSr)rr&r2r	r	r
�"test_resume_reading_on_paused_pipe.sz=UnixReadPipeTransportTests.test_resume_reading_on_paused_pipe)N)rDrErFrrrrrirrrr!r%r'rcr)r+r0r1r3r4r5r6rjr	r	rr
r��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�rrmr�rZBaseProtocolr�rr$r�r�r�r�rerir�r8r�r��S_IFSOCKrrrr	r
r7s




z!UnixWritePipeTransportTests.setUpNcCs(tj|j|j|j|d�}|�t|�|Sr)rZ_UnixWritePipeTransportrr�r�r8rrr	r	r
�write_pipe_transportIs�z0UnixWritePipeTransportTests.write_pipe_transportcCsT|j��}|j|d�}|j�|�|jj�|�|j�d|j�|�	d|�
��dSr	)rr�r9rrr�r�r(r
rr?r
rr	r	r
rPs
z%UnixWritePipeTransportTests.test_ctorcCs|��}|�|���dSr)r9rUZ
can_write_eofr2r	r	r
�test_can_write_eofYsz.UnixWritePipeTransportTests.test_can_write_eofzos.writecCsF|��}d|_|�d�|�dd�|�|jj�|�t�|j	�dS)N�rr�)
r9rer�r(rLr�writersr?r��_buffer�r�m_writerr	r	r
�
test_write]s
z&UnixWritePipeTransportTests.test_writecCsB|��}|�d�|�|j�|�|jj�|�td�|j�dS)Nr-)	r9r�rLrNrr<r?r�r=r>r	r	r
�test_write_no_datafs

z.UnixWritePipeTransportTests.test_write_no_datacCs>|��}d|_|�d�|j�d|j�|�td�|j�dS)NrSrr��ta)	r9rer�r�
assert_writer�_write_readyr?r�r=r>r	r	r
�test_write_partialns

z.UnixWritePipeTransportTests.test_write_partialcCs^|��}|j�d|j�td�|_|�d�|�|j�|j�	d|j�|�
td�|j�dS)Nr�spreviousrspreviousdata)r9r�
add_writerrDr�r=r�rLrNrCr?r>r	r	r
�test_write_buffervs

z-UnixWritePipeTransportTests.test_write_buffercCsP|��}t�|_|�d�|�dtd��|j�d|j�|�	td�|j
�dSr)r9r�r0r�r(r�rrCrDr?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 transportrrSz=pipe closed by peer or os.write(pipe, data) raised exception.)r9rIr0rr$Z_fatal_errorr�r(rLrr<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)NrrrS)r9rr�r?rIr>r	r	r
�test_write_close�s

z,UnixWritePipeTransportTests.test_write_closecCsX|��}|��|�|jj�|�|jj�|�|���t�	|j�|j
j�d�dSr)
r9rrLrrr<rUr*rmrr�r�r(r2r	r	r
r�sz,UnixWritePipeTransportTests.test__read_readycCsR|��}|j�d|j�td�|_d|_|��|�|jj�|�	t�|j�dS)Nr�rr;)
r9rrFrDr�r=rerLr<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)	r9rrFrDr�r=rerCr?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)r9rrFrDr�r=r�r0r(rCr?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)
r9rrFrDr�r=rer(rCr?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)r9rrFrDr�r=rIr0rLr<rr?rUr*Zassert_not_calledrIrmrr�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;)r9rrFrDr(r�r=rerLr<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�sdarB)r9rrFrDr"rr=�abortrLrNrr<r?rUr*rmrr�r�r(r>r	r	r
�
test_aborts
z&UnixWritePipeTransportTests.test_abortcCsd|��}|�|j�|�|j�d}|�|�|jj�|�|jj	��|�
|j�|�
|j�dSr)r9r�r,r-r.r�r�r(r�rrr/r	r	r
r0s
z6UnixWritePipeTransportTests.test__call_connection_lostcCsf|��}|�|j�|�|j�t�}|�|�|jj�|�|j	j
��|�|j�|�|j�dSr)r9r�r,r-rIr.r�r�r(r�rrr/r	r	r
r1s
z?UnixWritePipeTransportTests.test__call_connection_lost_with_errcCs0|��}t��|_|��|j��|��dSr)r9rr$�	write_eofrr(r2r	r	r
rc)s


z&UnixWritePipeTransportTests.test_closecCs2|��}t��|_d|_|��|�|jj�dSr+)r9rr$rWr(rrLrNr2r	r	r
�test_close_closing2s

z.UnixWritePipeTransportTests.test_close_closingcCsJ|��}|��|�|���|�|jj�t�|j�|j	j
�d�dSr)r9rWrUr*rLrrrmrr�r�r(r2r	r	r
�test_write_eof9sz*UnixWritePipeTransportTests.test_write_eofcCs:|��}dg|_|��|�|���|�|jjj�dS)Nr)	r9r=rWrUr*rLr�r�rNr2r	r	r
�test_write_eof_pendingAs
z2UnixWritePipeTransportTests.test_write_eof_pending)N)rDrErFrr9rr:rrir@rArErGrHrKrLrrMrPrQrRrSrTrVr0r1rcrXrYrZrjr	r	rr
r75sR
	



	

		
	
	








	r7c@seZdZdd�ZdS)�AbstractChildWatcherTestscCs�t��}t��}|�t|j||�|�t|j|�|�t|j|�|�t|j	�|�t|j
�|�t|j�|�t|j|||�dSr)
rr$rZAbstractChildWatcherr�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�rDrErFrdr	r	r	r
r[Isr[c@seZdZdd�ZdS)�BaseChildWatcherTestscCs$t��}t��}|�t|j|�dSr)rr$rZBaseChildWatcherrr\Z_do_waitpidrbr	r	r
rd`s�z*BaseChildWatcherTests.test_not_implementedNrer	r	r	r
rf^srf�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�ChildWatcherTestsMixinrJc	sZt���|��|_d|_i|_tj�|jd�� |_	|�
�|_|j�|j�W5QRXdS)NFr2)
rrr�r�running�zombiesrrirY�m_add_signal_handler�create_watcherrcr_rrr	r
rts

�
zChildWatcherTestsMixin.setUpcCsvt|jtj�s|dkr"|�|d�z*|dkr8|j��WS||j�|�fWSWntk
r`YnX|j	rldSt
��dS)NrBr)rr)�
isinstancercr�SafeChildWatcherZ
assertGreaterro�popitem�popr�rn�ChildProcessError)r�pid�flagsr	r	r
rhszChildWatcherTestsMixin.waitpidcCs|d|j|<dS�N��)ro)rrw�
returncoder	r	r
�
add_zombie�sz!ChildWatcherTestsMixin.add_zombiecCs|dkSryr	�rZstatusr	r	r
ri�sz ChildWatcherTestsMixin.WIFEXITEDcCsd|kodkSS)Ni�rzr	r}r	r	r
rj�sz"ChildWatcherTestsMixin.WIFSIGNALEDcCs|�|�|��|dSry)rUrir}r	r	r
rk�sz"ChildWatcherTestsMixin.WEXITSTATUScCs|�|�|��d|Sry)rUrjr}r	r	r
rl�szChildWatcherTestsMixin.WTERMSIGcCs|j�tj|jj�dSr)rprbrr`rc�	_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)rrir$)�target�wrapperr	r	r
ri�s�zIChildWatcherTestsMixin.waitpid_mocks.<locals>.wrapped_func.<locals>.patchzos.WTERMSIGzos.WEXITSTATUSzos.WIFSIGNALEDzos.WIFEXITEDz
os.waitpid)rlrkrjrirhrg)rriZ
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$rcrnr]rLrNrirjrkrlr~r|rUrbrZ�ignore_warningsro�clear�rr$�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$rcrnr]rLrNrirjrkrlr~r|rbrUrZr�ror��rr$�	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$rcrnr]rLrNrirjrkrlr~r|rbrUrZr�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�2r;rr�rB)rr$rcr|r~r]rbrZr�rLrNr�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$rcrnr]rLrNrirjrkrlr|r~rbrUrZr�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$rcrnr]rLrNrirjrkrlr^r|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$rcrnr]rLrNrirjrkrlror~rbrUrZr|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�7rS�8rNrF)
rr$rcrnr]rUr^rLr|r�r~rNrb)rr$r�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$rcrnr]rrhr0rirYr�loggerr?r~rUrN)rr$r�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�:Fr;�)rr$rcrnr]rLrNrirjrkrlr|r�rh�WNOHANGrZr�r~rrr�FastChildWatcherrbr�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�rcrnr|r~r]rbrLrNr�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'r2Fr�)rr$rcrnr]rr�rirYr_rbrr`r~r|)rr$r��old_loopriZ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�r2Fr�)rr$rcrnr]rrirYrf�RuntimeWarningr_rbrr`r|rLrNr�r~rZ)rr$r�r�r�r��m_remove_signal_handlerrpr	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$rcrnr|r~r]r?raZ
_callbacksrrrr�Z_zombiesrirYrrrbrr`rL)rr$r�r�r	r	r
rc�s.
�
�z!ChildWatcherTestsMixin.test_close)!rDrErFrrirYrr�r�rrhr|rirjrkrlrr�r�r�r�r�r�r�r�r�r�r�r�r�r�rcrjr	r	rr
rmpsL
<
g
D

4

$
 

"


=rmc@seZdZdd�ZdS)�SafeChildWatcherTestscCst��Sr)rrsrr	r	r
rqsz$SafeChildWatcherTests.create_watcherN�rDrErFrqr	r	r	r
r�sr�c@seZdZdd�ZdS)�FastChildWatcherTestscCst��Sr)rr�rr	r	r
rqsz$FastChildWatcherTests.create_watcherNr�r	r	r	r
r�sr�c@s4eZdZdd�Zdd�Zdd�Zdd�Zd	d
�ZdS)�PolicyTestscCst��Sr)rZDefaultEventLoopPolicyrr	r	r
�
create_policy#szPolicyTests.create_policycCsL|��}|�|j�|��}|�|tj�|�|j|�|�||���dSr)r�r�_watcher�get_child_watcherr>rZThreadedChildWatcherr��r�policyrcr	r	r
�test_get_default_child_watcher&sz*PolicyTests.test_get_default_child_watchercCs<|��}t��}|�|�|�|j|�|�||���dSr)r�rr��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_looprZAbstractEventLoopr�rsrr-r)rc�r�rr	r
r�;s
�z4PolicyTests.test_get_child_watcher_thread.<locals>.f)r�)r�r�rrs�	threadingZThreadr��join)rr�Zthr	r�r
�test_get_child_watcher_thread9sz)PolicyTests.test_get_child_watcher_threadcCs�|��}|��}t��}|�|�|�|�|�|j|�|��}|�	|�|�|j|�|�	d�|�|jd�|�
�|�
�dSr)r�r�rrsr�r_r�r-r�rr)rr�rrcZnew_loopr	r	r
�,test_child_watcher_replace_mainloop_existingNs



z8PolicyTests.test_child_watcher_replace_mainloop_existingN)rDrErFr�r�r�r�r�r	r	r	r
r�!s
r�c@s,eZdZdd�Zdd�Zdd�Zdd�Zd	S)
�TestFunctionalcCst��|_t�|j�dSr)rr�rrrr	r	r
ris
zTestFunctional.setUpcCs|j��t�d�dSr)rrrrrr	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)r9rr	rr	r
�
assert_raisesrszFTestFunctional.test_add_reader_invalid_argument.<locals>.assert_raisescSsdSrr	r	r	r	r
r,ur-zATestFunctional.test_add_reader_invalid_argument.<locals>.<lambda>)rr"rYrF�
remove_reader�
remove_writer)rr�r@r	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)r9r1r	rr	r
r��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)rr�r	r	r	r
r,�r-zWTestFunctional.test_add_reader_or_writer_transport_fd.<locals>.runner.<locals>.<lambda>r�cSsdSrr	r	r	r	r
r,�r-)rZcreate_connectionrr"r�r�rFr�)rZprr@�r�Zrsockrr	r
�runner�s.�zETestFunctional.test_add_reader_or_writer_transport_fd.<locals>.runner)roZ
socketpairrrrr)rr�Zwsockr	r�r
�&test_add_reader_or_writer_transport_fd�sz5TestFunctional.test_add_reader_or_writer_transport_fdN)rDrErFrr�r�r�r	r	r	r
r�gsr��__main__)0�__doc__�collectionsr�rGr�r�ryrror��sysrr�r�rZtestr�platformZSkipTestrrrZtest.test_asynciorrmr�rrrr�ZTestCaserr�rlr�r�r7r[rf�
namedtuplergrmr�r�r�r�rD�mainr	r	r	r
�<module>sv

	
^�)�N2	�	,FF