Your IP : 216.73.216.213


Current Path : /opt/alt/python36/lib64/python3.6/test/test_asyncio/__pycache__/
Upload File :
Current File : //opt/alt/python36/lib64/python3.6/test/test_asyncio/__pycache__/test_unix_events.cpython-36.pyc

3

� f���@s�dZddlZddlZddlZddlZddlZddlZddlZddlZddl	Z	ddl
Z
ddlZddlZddl
Z
ddlmZe	jdkr�ejd��ddlZddlmZddlmZddlmZejZd	d
�Zejed�Gdd
�d
ej��Zejeed�d�Gdd�dej��ZGdd�dej�ZGdd�dej�ZGdd�dej�ZGdd�dej�Z ej!dd)�Z"Gd d!�d!�Z#Gd"d#�d#e#ej�Z$Gd$d%�d%e#ej�Z%Gd&d'�d'ej�Z&e'd(k�r�ej(�dS)*zTests for unix_events.py.�N)�mockZwin32z	UNIX only)�log)�
test_utils)�unix_eventscCs"|jdkrdS|jj�d|_dS)N)Z_pipe�close)�	transport�r�G/opt/alt/python36/lib64/python3.6/test/test_asyncio/test_unix_events.py�close_pipe_transports

r
zSignals are not supportedcsFeZdZ�fdd�Zdd�Zdd�Zdd�Zejd	�d
d��Z	ejd	�dd
��Z
ejd	�dd��Zejd	�dd��Zejd	�ejd�dd���Z
ejd	�ejd�dd���Zejd	�dd��Zejd	�dd��Zejd	�ejd�dd���Zejd	�dd��Zejd	�dd ��Zejd	�d!d"��Zejd#�ejd	�d$d%���Z�ZS)&�SelectorEventLoopSignalTestscs$t�j�tj�|_|j|j�dS)N)�super�setUp�asyncio�SelectorEventLoop�loop�set_event_loop)�self)�	__class__rr	r
+s

z"SelectorEventLoopSignalTests.setUpcCs.|jt|jjd�|jt|jjtjd�dS)N�1�)�assertRaises�	TypeErrorrZ
_check_signal�
ValueError�signal�NSIG)rrrr	�test_check_signal0sz.SelectorEventLoopSignalTests.test_check_signalcCs|jjtjd�dS)Nr)r�_handle_signalrr)rrrr	�test_handle_signal_no_handler6sz:SelectorEventLoopSignalTests.test_handle_signal_no_handlercCshtjtj�ftj�d�}|j�||jjtjd<tj�|j_	|jj
tjd�|jj	jtjd�dS)N)rr)r�Handler�MockZcancelr�_signal_handlersrr�remove_signal_handlerr�assert_called_with)r�hrrr	�$test_handle_signal_cancelled_handler9szASelectorEventLoopSignalTests.test_handle_signal_cancelled_handlerzasyncio.unix_events.signalcCs.tj|_t|j_|jt|jjtj	dd��dS)NcSsdS)NTrrrrr	�<lambda>JszRSelectorEventLoopSignalTests.test_add_signal_handler_setup_error.<locals>.<lambda>)
rrr�
set_wakeup_fd�side_effectr�RuntimeErrorr�add_signal_handler�SIGINT)r�m_signalrrr	�#test_add_signal_handler_setup_errorBsz@SelectorEventLoopSignalTests.test_add_signal_handler_setup_errorcCsZtj|_tjdd��}|}|�}|j|j�x(||fD]}|jtd|jj	tj
|�q6WdS)NcssgEdHdS)Nrrrrr	�simple_coroutinePsz^SelectorEventLoopSignalTests.test_add_signal_handler_coroutine_error.<locals>.simple_coroutinez1coroutines cannot be used with add_signal_handler)rrr�	coroutine�
addCleanupr�assertRaisesRegexrrr)r*)rr+r-Z	coro_funcZcoro_obj�funcrrr	�'test_add_signal_handler_coroutine_errorLszDSelectorEventLoopSignalTests.test_add_signal_handler_coroutine_errorcCsPtj|_dd�}|jjtj|�|jjjtj�}|j|tj	�|j
|j|�dS)NcSsdS)NTrrrrr	r%bszFSelectorEventLoopSignalTests.test_add_signal_handler.<locals>.<lambda>)rrrr)�SIGHUPr �get�assertIsInstancerr�assertEqualZ	_callback)rr+�cbr#rrr	�test_add_signal_handler^sz4SelectorEventLoopSignalTests.test_add_signal_handlercCsLtj|_dd�}||_Gdd�dt�}||j_|j||jjtjdd��dS)NcSs|dkrt��dS)Nr���)r)�fdrrr	r&lszYSelectorEventLoopSignalTests.test_add_signal_handler_install_error.<locals>.set_wakeup_fdc@seZdZejZdS)zOSelectorEventLoopSignalTests.test_add_signal_handler_install_error.<locals>.ErrN)�__name__�
__module__�__qualname__�errnoZEFAULTrrrr	�Errqsr?cSsdS)NTrrrrr	r%xszTSelectorEventLoopSignalTests.test_add_signal_handler_install_error.<locals>.<lambda>)	rrr&�OSErrorr'rrr)r*)rr+r&r?rrr	�%test_add_signal_handler_install_errorhszBSelectorEventLoopSignalTests.test_add_signal_handler_install_errorzasyncio.base_events.loggercCsntj|_Gdd�dt�}||j_dd�|jjtj<|jt|jj	tj
dd��|j|jj
�|jd|jj�dS)Nc@seZdZejZdS)zPSelectorEventLoopSignalTests.test_add_signal_handler_install_error2.<locals>.ErrN)r;r<r=r>�EINVALrrrr	r?sr?cSsdS)NTrrrrr	r%�szUSelectorEventLoopSignalTests.test_add_signal_handler_install_error2.<locals>.<lambda>cSsdS)NTrrrrr	r%�sr)rrr@r'rr r3rr(r)r*�assertFalse�info�calledr6r&�
call_count)r�	m_loggingr+r?rrr	�&test_add_signal_handler_install_error2zszCSelectorEventLoopSignalTests.test_add_signal_handler_install_error2cCs\Gdd�dt�}||j_tj|_|jt|jjtjdd��|j	|j
j�|jd|j
j�dS)Nc@seZdZejZdS)zPSelectorEventLoopSignalTests.test_add_signal_handler_install_error3.<locals>.ErrN)r;r<r=r>rBrrrr	r?�sr?cSsdS)NTrrrrr	r%�szUSelectorEventLoopSignalTests.test_add_signal_handler_install_error3.<locals>.<lambda>�)r@rr'rrr(rr)r*rCrDrEr6r&rF)rrGr+r?rrr	�&test_add_signal_handler_install_error3�szCSelectorEventLoopSignalTests.test_add_signal_handler_install_error3cCsltj|_|jjtjdd��|j|jjtj��|j|jj�|j|jj�|j	tj|j
f|jjd�dS)NcSsdS)NTrrrrr	r%�szISelectorEventLoopSignalTests.test_remove_signal_handler.<locals>.<lambda>r)rrrr)r3�
assertTruer!r&rEr6�SIG_DFL�	call_args)rr+rrr	�test_remove_signal_handler�sz7SelectorEventLoopSignalTests.test_remove_signal_handlercCs�tj|_tj|_|jjtjdd��t�|jjtj<|jj	�|j
|jjtj��|j|jj
�|j
|jj
�|jtj|jf|jjd�dS)NcSsdS)NTrrrrr	r%�szKSelectorEventLoopSignalTests.test_remove_signal_handler_2.<locals>.<lambda>r)rrr*rr)�objectr r3r&�
reset_mockrKr!rCrEr6�default_int_handlerrM)rr+rrr	�test_remove_signal_handler_2�s

z9SelectorEventLoopSignalTests.test_remove_signal_handler_2cCsBtj|_|jjtjdd��t|j_|jjtj�|j	|j
�dS)NcSsdS)NTrrrrr	r%�szWSelectorEventLoopSignalTests.test_remove_signal_handler_cleanup_error.<locals>.<lambda>)rrrr)r3rr&r'r!rKrD)rrGr+rrr	�(test_remove_signal_handler_cleanup_error�s
zESelectorEventLoopSignalTests.test_remove_signal_handler_cleanup_errorcCs<tj|_|jjtjdd��t|j_|jt|jjtj�dS)NcSsdS)NTrrrrr	r%�szOSelectorEventLoopSignalTests.test_remove_signal_handler_error.<locals>.<lambda>)	rrrr)r3r@r'rr!)rr+rrr	� test_remove_signal_handler_error�s
z=SelectorEventLoopSignalTests.test_remove_signal_handler_errorcCsLtj|_|jjtjdd��Gdd�dt�}||j_|jt|jj	tj�dS)NcSsdS)NTrrrrr	r%�szPSelectorEventLoopSignalTests.test_remove_signal_handler_error2.<locals>.<lambda>c@seZdZejZdS)zKSelectorEventLoopSignalTests.test_remove_signal_handler_error2.<locals>.ErrN)r;r<r=r>rBrrrr	r?�sr?)
rrrr)r3r@r'rr(r!)rr+r?rrr	�!test_remove_signal_handler_error2�sz>SelectorEventLoopSignalTests.test_remove_signal_handler_error2cCs|tj|_|jjtjdd��|jjtjdd��|jt|jj�d�|j	j
�|jj�|jt|jj�d�|j	jd�dS)NcSsdS)NTrrrrr	r%�sz9SelectorEventLoopSignalTests.test_close.<locals>.<lambda>cSsdS)NTrrrrr	r%�srIrrr9)
rrrr)r3�SIGCHLDr6�lenr r&rPr�assert_called_once_with)rr+rrr	�
test_close�s

z'SelectorEventLoopSignalTests.test_closezasyncio.unix_events.sysc
Cs�tj|_|jjtjdd��|jt|jj�d�d|j_	|jj
�|jtd��|jj
�WdQRX|jt|jj�d�|j|jj�dS)NcSsdS)NTrrrrr	r%�szGSelectorEventLoopSignalTests.test_close_on_finalizing.<locals>.<lambda>rTz skipping signal handlers removalr)rrrr)r3r6rWr �
is_finalizing�return_valuerP�assertWarnsRegex�ResourceWarningrrCrE)rr+Zm_sysrrr	�test_close_on_finalizing�s
z5SelectorEventLoopSignalTests.test_close_on_finalizing)r;r<r=r
rrr$r�patchr,r2r8rArHrJrNrRrSrTrUrYr^�
__classcell__rr)rr	r(s*	




r�AF_UNIXzUNIX Sockets are not supportedcs�eZdZ�fdd�Zdd�Zejeed�d�dd��Z	d	d
�Z
dd�Zd
d�Zdd�Z
dd�Zejeed�d�dd��Zdd�Zejd�dd��Zdd�Zdd�Zd d!�Zd"d#�Z�ZS)$� SelectorEventLoopUnixSocketTestscs$t�j�tj�|_|j|j�dS)N)rr
rrrr)r)rrr	r
�s

z&SelectorEventLoopUnixSocketTests.setUpc
Csvtj��d}tjtj�}|j|�|jd�|j�|jjdd�|�}|jj	|�}|j�|jj	|j
��WdQRXdS)NrcSsdS)Nrrrrr	r%sz]SelectorEventLoopUnixSocketTests.test_create_unix_server_existing_path_sock.<locals>.<lambda>)r�unix_socket_path�socketra�bindZlistenrr�create_unix_server�run_until_complete�wait_closed)r�path�sock�coro�srvrrr	�*test_create_unix_server_existing_path_socks


zKSelectorEventLoopUnixSocketTests.test_create_unix_server_existing_path_sock�fspathzno os.fspathc
CsXtj��F}tj|�}|jjdd�|�}|jj|�}|j�|jj|j��WdQRXdS)NcSsdS)Nrrrrr	r%szRSelectorEventLoopUnixSocketTests.test_create_unix_server_pathlib.<locals>.<lambda>)	rrc�pathlibZPathrrfrgrrh)rriZsrv_cororlrrr	�test_create_unix_server_pathlibs

z@SelectorEventLoopUnixSocketTests.test_create_unix_server_pathlibcCsPtj��>}|jjdd�|j�}|jtd��|jj|�WdQRXWdQRXdS)NcSsdS)Nrrrrr	r%sz`SelectorEventLoopUnixSocketTests.test_create_unix_server_existing_path_nonsock.<locals>.<lambda>zAddress.*is already in use)�tempfile�NamedTemporaryFilerrf�namer0r@rg)r�filerkrrr	�-test_create_unix_server_existing_path_nonsocks

zNSelectorEventLoopUnixSocketTests.test_create_unix_server_existing_path_nonsockc	Cs>|jjdd�ddd�}|jtd��|jj|�WdQRXdS)NcSsdS)Nrrrrr	r%!szSSelectorEventLoopUnixSocketTests.test_create_unix_server_ssl_bool.<locals>.<lambda>�spamT)ri�sslz"ssl argument must be an SSLContext)rrfr0rrg)rrkrrr	� test_create_unix_server_ssl_bool s
zASelectorEventLoopUnixSocketTests.test_create_unix_server_ssl_boolc	Cs<|jjdd�dd�}|jtd��|jj|�WdQRXdS)NcSsdS)Nrrrrr	r%(szXSelectorEventLoopUnixSocketTests.test_create_unix_server_nopath_nosock.<locals>.<lambda>)riz#path was not specified, and no sock)rrfr0rrg)rrkrrr	�%test_create_unix_server_nopath_nosock'szFSelectorEventLoopUnixSocketTests.test_create_unix_server_nopath_nosockcCsVtj�}|�@|jjdd�d|d�}|jtd��|jj|�WdQRXWdQRXdS)NcSsdS)Nrrrrr	r%0szXSelectorEventLoopUnixSocketTests.test_create_unix_server_path_inetsock.<locals>.<lambda>)rirjz"A UNIX Domain Stream.*was expected)rdrrfr0rrg)rrjrkrrr	�%test_create_unix_server_path_inetsock-szFSelectorEventLoopUnixSocketTests.test_create_unix_server_path_inetsockcCs^tjtjtj�}|�@|jjdd�d|d�}|jtd��|jj|�WdQRXWdQRXdS)NcSsdS)Nrrrrr	r%9szUSelectorEventLoopUnixSocketTests.test_create_unix_server_path_dgram.<locals>.<lambda>)rirjz"A UNIX Domain Stream.*was expected)rdraZ
SOCK_DGRAMrrfr0rrg)rrjrkrrr	�"test_create_unix_server_path_dgram6szCSelectorEventLoopUnixSocketTests.test_create_unix_server_path_dgram�
SOCK_NONBLOCKz$no socket.SOCK_NONBLOCK (linux only)cCs�tjtjtjtjB�}tj��}|j}WdQRXzX|�J|j|�|jj	dd�d|d�}|jj
|�}|j�|jj
|j��WdQRXWdt
j|�XdS)NcSsdS)Nrrrrr	r%Isz^SelectorEventLoopUnixSocketTests.test_create_unix_server_path_stream_bittype.<locals>.<lambda>)rirj)rdraZSOCK_STREAMr|rqrrrsrerrfrgrrh�os�unlink)rrjrt�fnrkrlrrr	�+test_create_unix_server_path_stream_bittype?s

zLSelectorEventLoopUnixSocketTests.test_create_unix_server_path_stream_bittypecCsVtj�}|�@|jjdd�d|d�}|jtd��|jj|�WdQRXWdQRXdS)NcSsdS)Nrrrrr	r%Tsz\SelectorEventLoopUnixSocketTests.test_create_unix_connection_path_inetsock.<locals>.<lambda>)rirjz"A UNIX Domain Stream.*was expected)rdr�create_unix_connectionr0rrg)rrjrkrrr	�)test_create_unix_connection_path_inetsockQszJSelectorEventLoopUnixSocketTests.test_create_unix_connection_path_inetsockzasyncio.unix_events.socketcCs�tj�}||j_t|j_|jjdd�dd�}|j	t��|jj
|�WdQRX|j|jj
�t|j_|jjdd�dd�}|j	t��|jj
|�WdQRX|j|jj
�dS)NcSsdS)Nrrrrr	r%aszUSelectorEventLoopUnixSocketTests.test_create_unix_server_bind_error.<locals>.<lambda>z/test)ricSsdS)Nrrrrr	r%gs)rrrdr[r@rer'rrfrrgrKrrE�MemoryError)rZm_socketrjrkrrr	�"test_create_unix_server_bind_errorZszCSelectorEventLoopUnixSocketTests.test_create_unix_server_bind_errorc	CsB|jjdd�tjt�d�}|jtd��|jj|�WdQRXdS)NcSsdS)Nrrrrr	r%nszXSelectorEventLoopUnixSocketTests.test_create_unix_connection_path_sock.<locals>.<lambda>)rjzpath and sock can not be)rr�r}�devnullrOr0rrg)rrkrrr	�%test_create_unix_connection_path_socklszFSelectorEventLoopUnixSocketTests.test_create_unix_connection_path_sockc	Cs:|jjdd�d�}|jtd��|jj|�WdQRXdS)NcSsdS)Nrrrrr	r%tsz\SelectorEventLoopUnixSocketTests.test_create_unix_connection_nopath_nosock.<locals>.<lambda>zno path and sock were specified)rr�r0rrg)rrkrrr	�)test_create_unix_connection_nopath_nosockrs
zJSelectorEventLoopUnixSocketTests.test_create_unix_connection_nopath_nosockc	Cs@|jjdd�tjdd�}|jtd��|jj|�WdQRXdS)NcSsdS)Nrrrrr	r%{sz_SelectorEventLoopUnixSocketTests.test_create_unix_connection_nossl_serverhost.<locals>.<lambda>rv)Zserver_hostnamez"server_hostname is only meaningful)rr�r}r�r0rrg)rrkrrr	�,test_create_unix_connection_nossl_serverhostys
zMSelectorEventLoopUnixSocketTests.test_create_unix_connection_nossl_serverhostc	Cs@|jjdd�tjdd�}|jtd��|jj|�WdQRXdS)NcSsdS)Nrrrrr	r%�sz_SelectorEventLoopUnixSocketTests.test_create_unix_connection_ssl_noserverhost.<locals>.<lambda>T)rwz/you have to pass server_hostname when using ssl)rr�r}r�r0rrg)rrkrrr	�,test_create_unix_connection_ssl_noserverhost�s

zMSelectorEventLoopUnixSocketTests.test_create_unix_connection_ssl_noserverhost)r;r<r=r
rm�unittest�
skipUnless�hasattrr}rprurxryrzr{rdr�r�rr_r�r�r�r�r�r`rr)rr	rb�s 				rbcs�eZdZ�fdd�Zd dd�Zdd�Zejd�d	d
��Zejd�dd��Z	ejd�d
d��Z
ejd�ejd�dd���Zejd�dd��Zejd�dd��Z
ejd�dd��Zejd�dd��Zejd�dd��Zdd�Zdd�Z�ZS)!�UnixReadPipeTransportTestscs�t�j�|j�|_tjtj�|_t	j
tjd�|_
d|j
j_t	jd�}|j�|j|j�t	jd�}|j�}t	j
�}tj|_||_|j|j�dS)N)�spec_set�z$asyncio.unix_events._set_nonblockingzos.fstat)rr
�
new_test_looprr�make_test_protocolrZProtocol�protocolrr�io�	RawIOBase�pipe�filenor[r_�startr/�stop�stat�S_IFIFO�st_mode)r�blocking_patcher�
fstat_patcher�m_fstat�st)rrr	r
�s




z UnixReadPipeTransportTests.setUpNcCs(tj|j|j|j|d�}|jt|�|S)N)�waiter)rZ_UnixReadPipeTransportrr�r�r/r
)rr�rrrr	�read_pipe_transport�s
z.UnixReadPipeTransportTests.read_pipe_transportcCsVtj|jd�}|j|d�}|jj|�|jjj|�|jjd|j	�|j
|j��dS)N)r)r�r�)r�Futurerr�rgr��connection_mader"�
assert_reader�_read_ready�assertIsNone�result)rr��trrrr	�	test_ctor�sz$UnixReadPipeTransportTests.test_ctorzos.readcCs6|j�}d|_|j�|jd|j�|jjjd�dS)Nsdatar�)r�r[r�r"�max_sizer��
data_received)r�m_readr�rrr	�test__read_ready�s
z+UnixReadPipeTransportTests.test__read_readycCs\|j�}d|_|j�|jd|j�|j|jj�tj	|j�|j
jj�|j
jjd�dS)N�r�)
r�r[r�r"r�rCr�readersr�run_brieflyr�Zeof_received�connection_lost)rr�r�rrr	�test__read_ready_eof�sz/UnixReadPipeTransportTests.test__read_ready_eofcCsD|j�}t|_|j�|jd|j�tj|j�|j	|j
jj�dS)Nr�)
r��BlockingIOErrorr'r�r"r�rr�rrCr�r�rE)rr�r�rrr	�test__read_ready_blocked�sz3UnixReadPipeTransportTests.test__read_ready_blockedzasyncio.log.logger.errorcCs^|j�}t�}||_tj�|_|j�|jd|j�|jj|�|jt	j
d�tttfd�dS)Nr�z;Fatal read error on pipe transport
protocol:.*
transport:.*)�exc_info)r�r@r'rr�_closer�r"r�r�MockPattern�MOCK_ANY)rr��m_logexcr��errrrr	�test__read_ready_error�s
z1UnixReadPipeTransportTests.test__read_ready_errorcCs8|j�}tj�}|jjd|�|j�|j|jj�dS)Nr�)r�rrr�
add_readerZ
pause_readingrCr�)rr�r��mrrr	�test_pause_reading�s
z-UnixReadPipeTransportTests.test_pause_readingcCs$|j�}|j�|jjd|j�dS)Nr�)r�Zresume_readingrr�r�)rr�r�rrr	�test_resume_reading�sz.UnixReadPipeTransportTests.test_resume_readingcCs*|j�}tj�|_|j�|jjd�dS)N)r�rrr�rr")rr�r�rrr	rY�s
z%UnixReadPipeTransportTests.test_closecCs2|j�}d|_tj�|_|j�|j|jj�dS)NT)r��_closingrrr�rrCrE)rr�r�rrr	�test_close_already_closing�s

z5UnixReadPipeTransportTests.test_close_already_closingcCsR|j�}t�}|j|�|j|j��|j|jj�tj	|j�|j
jj|�dS)N)
r�rOr�rK�
is_closingrCrr�rr�r�r�r")rr�r�r�rrr	�test__close�s
z&UnixReadPipeTransportTests.test__closecCsd|j�}|j|j�|j|j�d}|j|�|jjj|�|jj	j�|j
|j�|j
|j�dS)N)r��assertIsNotNone�	_protocol�_loop�_call_connection_lostr�r�r"r�rr�)rr�r�rrr	�test__call_connection_losts
z5UnixReadPipeTransportTests.test__call_connection_lostcCsf|j�}|j|j�|j|j�t�}|j|�|jjj|�|j	j
j�|j|j�|j|j�dS)N)r�r�r�r�r@r�r�r�r"r�rr�)rr�r�rrr	�#test__call_connection_lost_with_errs
z>UnixReadPipeTransportTests.test__call_connection_lost_with_err)N)r;r<r=r
r�r�rr_r�r�r�r�r�r�rYr�r�r�r�r`rr)rr	r��s
		


r�cs~eZdZ�fdd�Zd7dd�Zdd�Zdd	�Zejd
�dd��Z	ejd
�d
d��Z
ejd
�dd��Zejd
�dd��Zejd
�dd��Z
ejd�ejd
�dd���Zejd
�dd��Zdd�Zejd
�dd��Zejd
�dd��Zejd
�d d!��Zejd
�d"d#��Zejd$�ejd
�d%d&���Zejd
�d'd(��Zejd
�d)d*��Zd+d,�Zd-d.�Zd/d0�Zd1d2�Zd3d4�Zd5d6�Z�ZS)8�UnixWritePipeTransportTestscs�t�j�|j�|_tjtj�|_t	j
tjd�|_
d|j
j_t	jd�}|j�|j|j�t	jd�}|j�}t	j
�}tj|_||_|j|j�dS)N)r�r�z$asyncio.unix_events._set_nonblockingzos.fstat)rr
r�rrr�rZBaseProtocolr�rrr�r�r�r�r[r_r�r/r�r��S_IFSOCKr�)rr�r�r�r�)rrr	r
"s




z!UnixWritePipeTransportTests.setUpNcCs(tj|j|j|j|d�}|jt|�|S)N)r�)rZ_UnixWritePipeTransportrr�r�r/r
)rr�rrrr	�write_pipe_transport4s
z0UnixWritePipeTransportTests.write_pipe_transportcCsXtj|jd�}|j|d�}|jj|�|jjj|�|jjd|j	�|j
d|j��dS)N)r)r�r�)rr�rr�rgr�r�r"r�r�r6r�)rr�r�rrr	r�;sz%UnixWritePipeTransportTests.test_ctorcCs|j�}|j|j��dS)N)r�rKZ
can_write_eof)rr�rrr	�test_can_write_eofDsz.UnixWritePipeTransportTests.test_can_write_eofzos.writecCsF|j�}d|_|jd�|jdd�|j|jj�|jt�|j	�dS)N�sdatar�)
r�r[�writer"rCr�writersr6�	bytearray�_buffer)r�m_writer�rrr	�
test_writeHs
z&UnixWritePipeTransportTests.test_writecCsB|j�}|jd�|j|j�|j|jj�|jtd�|j�dS)Nr�)	r�r�rCrErr�r6r�r�)rr�r�rrr	�test_write_no_dataQs

z.UnixWritePipeTransportTests.test_write_no_datacCs>|j�}d|_|jd�|jjd|j�|jtd�|j�dS)NrIsdatar�sta)	r�r[r�r�
assert_writer�_write_readyr6r�r�)rr�r�rrr	�test_write_partialYs

z.UnixWritePipeTransportTests.test_write_partialcCs^|j�}|jjd|j�td�|_|jd�|j|j�|jj	d|j�|j
td�|j�dS)Nr�sprevioussdataspreviousdata)r�r�
add_writerr�r�r�r�rCrEr�r6)rr�r�rrr	�test_write_bufferas

z-UnixWritePipeTransportTests.test_write_buffercCsP|j�}t�|_|jd�|jdtd��|jjd|j�|j	td�|j
�dS)Nsdatar�)r�r�r'r�r"r�rr�r�r6r�)rr�r�rrr	�test_write_againks
z,UnixWritePipeTransportTests.test_write_againzasyncio.unix_events.loggercCs�|j�}t�}||_tj�|_|jd�|jdd�|j|j	j
�|jt�|j
�|jj|d�|jd|j�|jd�|jd|j�|jd�|jd�|jd�|jd�|jjd�|j�dS)Nsdatar�z#Fatal write error on pipe transportrrIz=pipe closed by peer or os.write(pipe, data) raised exception.)r�r@r'rrZ_fatal_errorr�r"rCrr�r6r�r��
_conn_lost�warningr)rr�Zm_logr�r�rrr	�test_write_errts*






z*UnixWritePipeTransportTests.test_write_errcCsD|j�}|j�|jd�|j|jd�|jd�|j|jd�dS)NsdatarrI)r�r�r�r6r�)rr�r�rrr	�test_write_close�s

z,UnixWritePipeTransportTests.test_write_closecCsX|j�}|j�|j|jj�|j|jj�|j|j��tj	|j�|j
jjd�dS)N)
r�r�rCrr�r�rKr�rr�r�r�r")rr�rrr	r��sz,UnixWritePipeTransportTests.test__read_readycCsR|j�}|jjd|j�td�|_d|_|j�|j|jj�|j	t�|j�dS)Nr�sdatar�)
r�rr�r�r�r�r[rCr�r6)rr�r�rrr	�test__write_ready�s
z-UnixWritePipeTransportTests.test__write_readycCsV|j�}|jjd|j�td�|_d|_|j�|jjd|j�|jtd�|j�dS)Nr�sdata��a)	r�rr�r�r�r�r[r�r6)rr�r�rrr	�test__write_ready_partial�s
z5UnixWritePipeTransportTests.test__write_ready_partialcCsh|j�}|jjd|j�td�|_t�|_|j�|jdtd��|jj	d|j�|j
td�|j�dS)Nr�sdata)r�rr�r�r�r�r�r'r"r�r6)rr�r�rrr	�test__write_ready_again�s
z3UnixWritePipeTransportTests.test__write_ready_againcCsf|j�}|jjd|j�td�|_d|_|j�|jdtd��|jjd|j�|j	td�|j�dS)Nr�sdatar)
r�rr�r�r�r�r[r"r�r6)rr�r�rrr	�test__write_ready_empty�s
z3UnixWritePipeTransportTests.test__write_ready_emptyzasyncio.log.logger.errorcCs�|j�}|jjd|j�td�|_t�|_}|j�|j|jj	�|j|jj
�|jt�|j�|j|j
��|jtjd�tttfd�|jd|j�tj|j�|jjj|�dS)Nr�sdataz<Fatal write error on pipe transport
protocol:.*
transport:.*)r�r)r�rr�r�r�r�r@r'rCr�r�r6rKr�r"rr�r�r�r�r�r�)rr�r�r�r�rrr	�test__write_ready_err�s 
z1UnixWritePipeTransportTests.test__write_ready_errcCs�|j�}|jjd|j�d|_td�|_d|_|j�|j|jj	�|j|jj
�|jt�|j�|jj
jd�|jjj�dS)Nr�Tsdatar�)r�rr�r�r�r�r�r[rCr�r�r6r�r�r"r�r)rr�r�rrr	�test__write_ready_closing�s
z5UnixWritePipeTransportTests.test__write_ready_closingcCs�|j�}|jjd|j�|jjd|j�ddg|_|j�|j|j	�|j|jj
�|j|jj�|jg|j�|j
|j��tj|j�|jjjd�dS)Nr�sdasta)r�rr�r�r�r�r��abortrCrEr�r�r6rKr�rr�r�r�r")rr�r�rrr	�
test_abort�s
z&UnixWritePipeTransportTests.test_abortcCsd|j�}|j|j�|j|j�d}|j|�|jjj|�|jj	j�|j
|j�|j
|j�dS)N)r�r�r�r�r�r�r�r"r�rr�)rr�r�rrr	r��s
z6UnixWritePipeTransportTests.test__call_connection_lostcCsf|j�}|j|j�|j|j�t�}|j|�|jjj|�|j	j
j�|j|j�|j|j�dS)N)r�r�r�r�r@r�r�r�r"r�rr�)rr�r�rrr	r�s
z?UnixWritePipeTransportTests.test__call_connection_lost_with_errcCs0|j�}tj�|_|j�|jj�|j�dS)N)r�rr�	write_eofrr")rr�rrr	rYs


z&UnixWritePipeTransportTests.test_closecCs2|j�}tj�|_d|_|j�|j|jj�dS)NT)r�rrr�r�rrCrE)rr�rrr	�test_close_closing!s

z.UnixWritePipeTransportTests.test_close_closingcCsJ|j�}|j�|j|j��|j|jj�tj|j�|j	j
jd�dS)N)r�r�rKr�rCrr�rr�r�r�r")rr�rrr	�test_write_eof(sz*UnixWritePipeTransportTests.test_write_eofcCs:|j�}dg|_|j�|j|j��|j|jjj�dS)Nsdata)	r�r�r�rKr�rCr�r�rE)rr�rrr	�test_write_eof_pending0s
z2UnixWritePipeTransportTests.test_write_eof_pending)N)r;r<r=r
r�r�r�rr_r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�rYr�r�r�r`rr)rr	r� s6
		
	
	



	r�c@seZdZdd�ZdS)�AbstractChildWatcherTestscCsvtj�}tj�}|jt|j||�|jt|j|�|jt|j|�|jt|j	�|jt|j
�|jt|j|||�dS)N)rrrZAbstractChildWatcherr�NotImplementedError�add_child_handler�remove_child_handler�attach_loopr�	__enter__�__exit__)r�f�watcherrrr	�test_not_implemented:s

z.AbstractChildWatcherTests.test_not_implementedN)r;r<r=r�rrrr	r�8sr�c@seZdZdd�ZdS)�BaseChildWatcherTestscCs$tj�}tj�}|jt|j|�dS)N)rrrZBaseChildWatcherrr�Z_do_waitpid)rr�r�rrr	r�Msz*BaseChildWatcherTests.test_not_implementedN)r;r<r=r�rrrr	r�Ksr��WaitPidMocks�waitpid�	WIFEXITED�WIFSIGNALED�WEXITSTATUS�WTERMSIGcs eZdZejjejd�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�j�|j�|_d|_i|_tjj|jd�� |_	|j
�|_|jj|j�WdQRXdS)NFr))
rr
r�r�running�zombiesrr_rO�m_add_signal_handler�create_watcherr�r�)r)rrr	r
as


zChildWatcherTestsMixin.setUpcCsrt|jtj�s|dkr"|j|d�y&|dkr6|jj�S||jj|�fSWntk
r\YnX|j	rhdSt
��dS)Nrrr9)rr)�
isinstancer�r�SafeChildWatcherZ
assertGreaterr�popitem�pop�KeyErrorr�ChildProcessError)r�pid�flagsrrr	r�ls
zChildWatcherTestsMixin.waitpidcCs|d|j|<dS)Ni�)r)rr
�
returncoderrr	�
add_zombie{sz!ChildWatcherTestsMixin.add_zombiecCs|dkS)Ni�r)r�statusrrr	r�~sz ChildWatcherTestsMixin.WIFEXITEDcCsd|kodkSS)Ni�i�r)rrrrr	r��sz"ChildWatcherTestsMixin.WIFSIGNALEDcCs|j|j|��|dS)Ni�)rKr�)rrrrr	r��sz"ChildWatcherTestsMixin.WEXITSTATUScCs|j|j|��d|S)Ni�)rKr�)rrrrr	r��szChildWatcherTestsMixin.WTERMSIGcCs|jjtj|jj�dS)N)rrXrrVr��	_sig_chld)rrrr	�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)rr_r)�target�wrapperrrr	r_�szIChildWatcherTestsMixin.waitpid_mocks.<locals>.wrapped_func.<locals>.patchzos.WTERMSIGzos.WEXITSTATUSzos.WIFSIGNALEDzos.WIFEXITEDz
os.waitpid)r�r�r�r�r�r�)rr_Z
m_WTERMSIGZ
m_WEXITSTATUSZ
m_WIFSIGNALEDZm_WIFEXITEDZ	m_waitpid)r1rr	�wrapped_func�sz:ChildWatcherTestsMixin.waitpid_mocks.<locals>.wrapped_funcr)r1rr)r1r	�
waitpid_mocks�sz$ChildWatcherTestsMixin.waitpid_mockscCstj�}|j� d|_|jjd|ddd�WdQRX|j|j�|j|jj�|j|jj�|j|j	j�|j|j
j�|jj�|j|j�|j|jj�|j|jj�|j|j	j�|j|j
j�d|_|jdd�|jj�|j
|jj�|j
|j	j�|j|j
j�|jddddd�|jj�|jj�|j	j�|j�|jdd�|j�|jj�WdQRX|j|j�|j|j
j�|jj�|jj�|j	j�|jj�|jj�|j|j�|j|jj�|j|jj�|j|j	j�|j|j
j�dS)	NT�*�	�
�F��
)rrr�rr�rCrEr�r�r�r�rr
rKrXrP�ignore_warningsr�clear)rr��callbackrrr	�test_sigchld�sR









z#ChildWatcherTestsMixin.test_sigchldcCs�tj�}tj�}|j�d|_|jjd|dd�WdQRX|j|j�|j|j�|j|jj�|j|jj�|j|j	j�|j|j
j�|j�|jjd|dd�WdQRX|j|j�|j|j�|j|jj�|j|jj�|j|j	j�|j|j
j�|jj�|j|j�|j|j�|j|jj�|j|jj�|j|j	j�|j|j
j�|jdd
�|jj�|j
dddd�|j|j�|j|jj�|j|j	j�|j|j
j�|jj�|jj�|j
j�|j�|jj�|j|j�|j|j�|j|jj�|j|jj�|j|j	j�|j|j
j�|jdd	�d
|_|jj�|j
dd	dd�|j|j�|j|jj�|j|j	j�|j|j
j�|jj�|jj�|j	j�|j�|jdd�|jdd�|j�|jj�WdQRX|j|j�|j|j�|j|j
j�|jj�|jj�|j	j�|jj�|jj�|j|j�|j|j�|j|jj�|j|jj�|j|j	j�|j|j
j�dS)NT�+���,��r��lFr����r()rrr�rr�rCrEr�r�r�r�rr
rXrKrPrrr)rr��	callback1�	callback2rrr	�test_sigchld_two_children�s�














z0ChildWatcherTestsMixin.test_sigchld_two_childrencCsntj�}tj�}|j�d|_|jjd|dd�WdQRX|j|j�|j|j�|j|jj�|j|jj�|j|j	j�|j|j
j�|j�|jjd|dd�WdQRX|j|j�|j|j�|j|jj�|j|jj�|j|j	j�|j|j
j�|jj�|j|j�|j|j�|j|jj�|j|jj�|j|j	j�|j|j
j�|jdd�|jdd
�d
|_|jj�|j
dddd�|j
dddd�|j|jj�|j|jj�|j|j	j�|j|j
j�|jj�|jj�|j
j�|j	j�|j�|j�|jdd�|jdd�|j�|jj�WdQRX|j|j�|j|j�|j|j
j�dS)NT�-�r"�.i{r%�Nr�Frr'���r0)rrr�rr�rCrEr�r�r�r�rr
rXrKrPr)rr�r)r*rrr	�.test_sigchld_two_children_terminating_togetherFsb





zEChildWatcherTestsMixin.test_sigchld_two_children_terminating_togethercCs�tj�}|j�.|jdd�|jj�|jjd|dd�WdQRX|jdddd�|j�|jdd�|j�|jj�WdQRX|j	|j
�dS)N�2r�rrr9)rrr�r
rr�rXrPrrCrE)rr�rrrr	�test_sigchld_race_condition�s
z2ChildWatcherTestsMixin.test_sigchld_race_conditioncCs�tj�}tj�}|j�d|_|jjd|d�WdQRX|j|j�|j|j�|j|jj�|j|jj�|j|j	j�|j|j
j�|j�|jjd|d�WdQRX|j|j�|j|j�|j|jj�|j|jj�|j|j	j�|j|j
j�d|_|jdd�|jj�|j
dd	d�|j|j�|j|jj�|j|j	j�|j|j
j�|jj�|jj�|j
j�|j�|jdd�|j�|jj�WdQRX|j|j�|j|j�|j|j
j�dS)
NT�3��Fr"ri����i����)rrr�rr�rCrEr�r�r�r�r
rrXrKrPr)rr�r)r*rrr	�test_sigchld_replace_handler�sJ



z3ChildWatcherTestsMixin.test_sigchld_replace_handlercCstj�}|j�d|_|jjd|d�WdQRX|j|j�|j|jj�|j|jj�|j|j	j�|j|j
j�|jjd�|j|j�|j|jj�|j|jj�|j|j	j�|j|j
j�d|_|jdd�|j
�|jj�WdQRX|j|j�dS)NT�4i�F�c)rrr�rr�rCrEr�r�r�r�r�r
rr)rr�rrrr	�test_sigchld_remove_handler�s(z2ChildWatcherTestsMixin.test_sigchld_remove_handlercCs(tj�}|j�d|_|jjd|d�WdQRX|j|j�|j|jj�|j|jj�|j|j	j�|j|j
j�d|jd<d|_|jj�|j
ddd�|j|jj�|j|jj�|j|j	j�|j|j
j�|j�|jj�|jj�|jdd�|j�|jj�WdQRX|j|j�dS)	NT�5r5i�F�ei��i��)rrr�rr�rCrEr�r�r�r�rrrXrKrPr
r)rr�rrrr	�test_sigchld_unknown_status�s0



z2ChildWatcherTestsMixin.test_sigchld_unknown_statuscCstj�}tj�}tj�}|j�<d|_|jjd|d�|jjd|d�|jjd|d�WdQRX|j|jjd��|j|jjd��|j|jjd��|j|jjd��|jdd�|jdd�|jdd�d	|_|j	�|jj
�WdQRX|j|j�|j|j�|jddd�dS)
NT�6r�7rI�8r�rF)
rrr�rr�rKr�rCr
rrrErX)rr�r)r*�	callback3rrr	�test_remove_child_handlers*z0ChildWatcherTestsMixin.test_remove_child_handlercCsttj�}|j�d|_|jjd|�WdQRXt|j_tjj	t
jd��$}|j|jj
�d�|j|j�WdQRXdS)NT�9�error)rrr�rr�rr�r'r_rOr�loggerr6rrKrE)rr�rZm_errorrrr	� test_sigchld_unhandled_exception<s
z7ChildWatcherTestsMixin.test_sigchld_unhandled_exceptioncCs�tj�}|j�d|_|jjd|�WdQRX|j|j�|j|jj�|j|jj�|j|j	j�|j|j
j�d|_|jdd�tj
dtj�|j
j�|j�|jj�WdQRXt|jtj�r�|j|j�n|jdd�dS)NT�:Fr��)rrr�rr�rCrEr�r�r�r�r
r}r��WNOHANGrPrrrr�FastChildWatcherrX)rr�rrrr	�#test_sigchld_child_reaped_elsewhereNs$
z:ChildWatcherTestsMixin.test_sigchld_child_reaped_elsewherecCs�tj�}tj�}|j�\|j�Jd|_|jdd�|jdd�|jj�|jjd|�|jjd|�WdQRXWdQRX|jdd�|j	|j
�dS)NTiOr!iQr-iP)rrrr�rr
rr�rXrCrE)rr�r)r*rrr	�,test_sigchld_unknown_pid_during_registrationqs
"zCChildWatcherTestsMixin.test_sigchld_unknown_pid_during_registrationcCs�tj�}|j�d|_|jjd|�WdQRX|j}|j�|_tjj}||d��J}||jd��2}|jj	|j�|j
tj�|j
tj|jj
�WdQRXWdQRXd|_|jdd�|jj
�|j
dd�dS)NT�<r!r)Fr)rrr�rr�rr�r_rOr�rXrrVrr
)rr�r�old_loopr_Zm_old_removeZ	m_new_addrrr	�
test_set_loop�s$
"
z$ChildWatcherTestsMixin.test_set_loopcCs�tj�}tj�}tj�}|j�6d|_|jjd|�|jjd|�|jjd|�WdQRX|j}d|_tjj|d��6}|jt	d��|jj
d�WdQRX|jtj
�WdQRX|jdd�|jdd�|j|j�|j|j�|j|j�|j�|_tjj|jd	��J}|jj
|j�|jtj
|jj�|jdd�|jdd
�|j|j�WdQRX|j�|j�d
|_|jdd�|jj�|j|j�|j|j�|jdd�dS)NT�=�>inr!zA loop is being detached�r�r)Fr5r0r0)rrr�rr�rr_rOr\�RuntimeWarningr�rXrrVr
rCrEr�rrP)rr�r)r*rArN�m_remove_signal_handlerrrrr	�test_set_loop_race_condition�sN



z3ChildWatcherTestsMixin.test_set_loop_race_conditioncCs�tj�}|j��d|_|jdd�|jdd�|jj�|jjd|�|jjd|�|jt|jj	�d�t
|jtj�r�|jt|jj
�d�tjj|jd��F}|jj�|jtj�|j|jj	�t
|jtj�r�|j|jj
�WdQRXWdQRXdS)	NT�?r�Ar%�@rr!)rrr�rr
rr�r6rWZ
_callbacksrrrJZ_zombiesr_rOrrrXrrVrC)rr�r)rTrrr	rY�s(

z!ChildWatcherTestsMixin.test_closecCsDtj�}|j��*}|jtd��|jd|�WdQRXWdQRXdS)Nz/the child watcher does not have a loop attached�d)rrrr0r(r�)rr�rr�rrr	�,test_add_child_handler_with_no_loop_attacheds
zCChildWatcherTestsMixin.test_add_child_handler_with_no_loop_attached)"r;r<r=rr_rOrrErr
r�r
r�r�r�r�rrrr+r1r3r7r:r=rBrFrKrLrOrUrYrZr`rr)rr	r�]s2=hE5 %!#> r�c@seZdZdd�ZdS)�SafeChildWatcherTestscCstj�S)N)rr)rrrr	rsz$SafeChildWatcherTests.create_watcherN)r;r<r=rrrrr	r[
sr[c@seZdZdd�ZdS)�FastChildWatcherTestscCstj�S)N)rrJ)rrrr	rsz$FastChildWatcherTests.create_watcherN)r;r<r=rrrrr	r\sr\c@s<eZdZdd�Zdd�Zdd�Zdd�Zd	d
�Zdd�Zd
S)�PolicyTestscCstj�S)N)rZDefaultEventLoopPolicy)rrrr	�
create_policyszPolicyTests.create_policycCsX|j�}|j|j�|j�}|j|tj�|j|j|�|j||j��|j|j�dS)N)	r^r��_watcher�get_child_watcherr5rr�assertIsr�)r�policyr�rrr	�test_get_child_watchersz"PolicyTests.test_get_child_watchercCs<|j�}tj�}|j|�|j|j|�|j||j��dS)N)r^rrJZset_child_watcherrar_r`)rrbr�rrr	� test_get_child_watcher_after_set(s

z,PolicyTests.test_get_child_watcher_after_setcCsL|j�}|j�}|j|j�|j�}|j|tj�|j|j	|�|j
�dS)N)r^�get_event_loopr�r_r`r5rrrar�r)rrbrr�rrr	�-test_get_child_watcher_with_mainloop_existing0sz9PolicyTests.test_get_child_watcher_with_mainloop_existingcs6��fdd�}�j��tj|d�}|j�|j�dS)NcsR�j�j���j�j�tj��j�}�j|tj��j|j	��j�j
�dS)N)r�new_event_loopr5rerZAbstractEventLoopr`rr�r�r)r�)rbrrr	r�>s
z4PolicyTests.test_get_child_watcher_thread.<locals>.f)r)r^�	threadingZThreadr��join)rr�Zthr)rbrr	�test_get_child_watcher_thread<s
z)PolicyTests.test_get_child_watcher_threadcCsr|j�}|j�}|j�}|j|j|�|j�}|j|�|j|j|�|jd�|j|jd�|j�|j�dS)N)r^rer`rar�rgrr)rrbrr�Znew_looprrr	�,test_child_watcher_replace_mainloop_existingPs

z8PolicyTests.test_child_watcher_replace_mainloop_existingN)	r;r<r=r^rcrdrfrjrkrrrr	r]sr]�__main__)r�r�r�r�r�))�__doc__�collectionsr>r�r}rorrdr��sysrqrhr��warningsr�platformZSkipTestrrrr�ANYr�r
r�ZTestCaserr�rbr�r�r�r��
namedtupler�r�r[r\r]r;�mainrrrr	�<module>sj

	
S
	5N