Your IP : 216.73.216.213


Current Path : /opt/alt/python35/lib64/python3.5/test/test_asyncio/__pycache__/
Upload File :
Current File : //opt/alt/python35/lib64/python3.5/test/test_asyncio/__pycache__/test_unix_events.cpython-35.pyc



��Yfg��@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!ddddddf�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(krej(�dS))zTests for unix_events.py.�N)�mock�win32z	UNIX only)�log)�
test_utils)�unix_eventscCs-|jdkrdS|jj�d|_dS)N)Z_pipe�close)�	transport�r	�G/opt/alt/python35/lib64/python3.5/test/test_asyncio/test_unix_events.py�close_pipe_transports
rzSignals are not supportedcs�eZdZ�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"��Z�S)#�SelectorEventLoopSignalTestscs0t�j�tj�|_|j|j�dS)N)�super�setUp�asyncio�SelectorEventLoop�loop�set_event_loop)�self)�	__class__r	r
r+s
z"SelectorEventLoopSignalTests.setUpcCs=|jt|jjd�|jt|jjtjd�dS)N�1�)�assertRaises�	TypeErrorrZ
_check_signal�
ValueError�signal�NSIG)rr	r	r
�test_check_signal0sz.SelectorEventLoopSignalTests.test_check_signalcCs|jjtjd�dS)Nr)r�_handle_signalrr)rr	r	r
�test_handle_signal_no_handler6sz:SelectorEventLoopSignalTests.test_handle_signal_no_handlercCs�tjtj�fdtj��}|j�||jjtjd<tj�|j_	|jj
tjd�|jj	jtjd�dS)Nrr)r�Handler�MockZcancelr�_signal_handlersrr�remove_signal_handlerr�assert_called_with)r�hr	r	r
�$test_handle_signal_cancelled_handler9s
zASelectorEventLoopSignalTests.test_handle_signal_cancelled_handlerzasyncio.unix_events.signalcCsAtj|_t|j_|jt|jjtj	dd��dS)NcSsdS)NTr	r	r	r	r
�<lambda>JszRSelectorEventLoopSignalTests.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_errorBs	z@SelectorEventLoopSignalTests.test_add_signal_handler_setup_errorcCs}tj|_tjdd��}|}|�}|j|j�x6||fD](}|jtd|jj	tj
|�qMWdS)Ncss
gEdHdS)Nr	r	r	r	r
�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�funcr	r	r
�'test_add_signal_handler_coroutine_errorLs		zDSelectorEventLoopSignalTests.test_add_signal_handler_coroutine_errorcCsptj|_dd�}|jjtj|�|jjjtj�}|j|tj	�|j
|j|�dS)NcSsdS)NTr	r	r	r	r
r&bszFSelectorEventLoopSignalTests.test_add_signal_handler.<locals>.<lambda>)rrrr*�SIGHUPr!�get�assertIsInstancerr�assertEqualZ	_callback)rr,�cbr$r	r	r
�test_add_signal_handler^sz4SelectorEventLoopSignalTests.test_add_signal_handlercCsltj|_dd�}||_Gdd�dt�}||j_|j||jjtjdd��dS)NcSs|dkrt��dS)Nr���)r)�fdr	r	r
r'lszYSelectorEventLoopSignalTests.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
�Errqsr@cSsdS)NTr	r	r	r	r
r&xszTSelectorEventLoopSignalTests.test_add_signal_handler_install_error.<locals>.<lambda>)	rrr'�OSErrorr(rrr*r+)rr,r'r@r	r	r
�%test_add_signal_handler_install_errorhs		zBSelectorEventLoopSignalTests.test_add_signal_handler_install_errorzasyncio.base_events.loggercCs�tj|_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?�EINVALr	r	r	r
r@sr@cSsdS)NTr	r	r	r	r
r&�szUSelectorEventLoopSignalTests.test_add_signal_handler_install_error2.<locals>.<lambda>cSsdS)NTr	r	r	r	r
r&�sr)rrrAr(rr!r4rr)r*r+�assertFalse�info�calledr7r'�
call_count)r�	m_loggingr,r@r	r	r
�&test_add_signal_handler_install_error2zs	zCSelectorEventLoopSignalTests.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?rCr	r	r	r
r@�sr@cSsdS)NTr	r	r	r	r
r&�szUSelectorEventLoopSignalTests.test_add_signal_handler_install_error3.<locals>.<lambda>�)rArr(rrr)rr*r+rDrErFr7r'rG)rrHr,r@r	r	r
�&test_add_signal_handler_install_error3�s	zCSelectorEventLoopSignalTests.test_add_signal_handler_install_error3cCs�tj|_|jjtjdd��|j|jjtj��|j|jj�|j|jj�|j	tj|j
f|jjd�dS)NcSsdS)NTr	r	r	r	r
r&�szISelectorEventLoopSignalTests.test_remove_signal_handler.<locals>.<lambda>r)rrrr*r4�
assertTruer"r'rFr7�SIG_DFL�	call_args)rr,r	r	r
�test_remove_signal_handler�sz7SelectorEventLoopSignalTests.test_remove_signal_handlercCs�tj|_tj|_|jjtjdd��t�|jjtj<|jj	�|j
|jjtj��|j|jj
�|j
|jj
�|jtj|jf|jjd�dS)NcSsdS)NTr	r	r	r	r
r&�szKSelectorEventLoopSignalTests.test_remove_signal_handler_2.<locals>.<lambda>r)rrr+rr*�objectr!r4r'�
reset_mockrLr"rDrFr7�default_int_handlerrN)rr,r	r	r
�test_remove_signal_handler_2�s
z9SelectorEventLoopSignalTests.test_remove_signal_handler_2cCs[tj|_|jjtjdd��t|j_|jjtj�|j	|j
�dS)NcSsdS)NTr	r	r	r	r
r&�szWSelectorEventLoopSignalTests.test_remove_signal_handler_cleanup_error.<locals>.<lambda>)rrrr*r4rr'r(r"rLrE)rrHr,r	r	r
�(test_remove_signal_handler_cleanup_error�s
zESelectorEventLoopSignalTests.test_remove_signal_handler_cleanup_errorcCsTtj|_|jjtjdd��t|j_|jt|jjtj�dS)NcSsdS)NTr	r	r	r	r
r&�szOSelectorEventLoopSignalTests.test_remove_signal_handler_error.<locals>.<lambda>)	rrrr*r4rAr(rr")rr,r	r	r
� test_remove_signal_handler_error�s
z=SelectorEventLoopSignalTests.test_remove_signal_handler_errorcCsjtj|_|jjtjdd��Gdd�dt�}||j_|jt|jj	tj�dS)NcSsdS)NTr	r	r	r	r
r&�szPSelectorEventLoopSignalTests.test_remove_signal_handler_error2.<locals>.<lambda>c@seZdZejZdS)zKSelectorEventLoopSignalTests.test_remove_signal_handler_error2.<locals>.ErrN)r<r=r>r?rCr	r	r	r
r@�sr@)
rrrr*r4rAr(rr)r")rr,r@r	r	r
�!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)NTr	r	r	r	r
r&�sz9SelectorEventLoopSignalTests.test_close.<locals>.<lambda>cSsdS)NTr	r	r	r	r
r&�srJrrr:)
rrrr*r4�SIGCHLDr7�lenr!r'rQr�assert_called_once_with)rr,r	r	r
�
test_close�s

z'SelectorEventLoopSignalTests.test_close)r<r=r>rrrr%r�patchr-r3r9rBrIrKrOrSrTrUrVrZr	r	)rr
r(s&	




r�AF_UNIXzUNIX Sockets are not supportedcseZdZ�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�S)$� SelectorEventLoopUnixSocketTestscs0t�j�tj�|_|j|j�dS)N)r
rrrrr)r)rr	r
r�s
z&SelectorEventLoopUnixSocketTests.setUpc
Cs�tj���}tjtj�}|j|�|jd�|j�|jjdd�|�}|jj	|�}|j�|jj	|j
��WdQRXdS)NrcSsdS)Nr	r	r	r	r
r&�sz]SelectorEventLoopUnixSocketTests.test_create_unix_server_existing_path_sock.<locals>.<lambda>)r�unix_socket_path�socketr\�bindZlistenrr�create_unix_server�run_until_complete�wait_closed)r�path�sock�coro�srvr	r	r
�*test_create_unix_server_existing_path_sock�s



zKSelectorEventLoopUnixSocketTests.test_create_unix_server_existing_path_sockZfspathzno os.fspathc
Csvtj��c}tj|�}|jjdd�|�}|jj|�}|j�|jj|j��WdQRXdS)NcSsdS)Nr	r	r	r	r
r&szRSelectorEventLoopUnixSocketTests.test_create_unix_server_pathlib.<locals>.<lambda>)	rr^�pathlibZPathrrarbrrc)rrdZsrv_cororgr	r	r
�test_create_unix_server_pathlib�s
z@SelectorEventLoopUnixSocketTests.test_create_unix_server_pathlibcCsbtj��O}|jjdd�|j�}|jtd��|jj|�WdQRXWdQRXdS)NcSsdS)Nr	r	r	r	r
r&
sz`SelectorEventLoopUnixSocketTests.test_create_unix_server_existing_path_nonsock.<locals>.<lambda>zAddress.*is already in use)�tempfile�NamedTemporaryFilerra�namer1rArb)r�filerfr	r	r
�-test_create_unix_server_existing_path_nonsocks
	
zNSelectorEventLoopUnixSocketTests.test_create_unix_server_existing_path_nonsockc	CsR|jjdd�dddd�}|jtd��|jj|�WdQRXdS)NcSsdS)Nr	r	r	r	r
r&szSSelectorEventLoopUnixSocketTests.test_create_unix_server_ssl_bool.<locals>.<lambda>rd�spam�sslTz"ssl argument must be an SSLContext)rrar1rrb)rrfr	r	r
� test_create_unix_server_ssl_bools
		
zASelectorEventLoopUnixSocketTests.test_create_unix_server_ssl_boolc	CsL|jjdd�dd�}|jtd��|jj|�WdQRXdS)NcSsdS)Nr	r	r	r	r
r&szXSelectorEventLoopUnixSocketTests.test_create_unix_server_nopath_nosock.<locals>.<lambda>rdz#path was not specified, and no sock)rrar1rrb)rrfr	r	r
�%test_create_unix_server_nopath_nosocks	
zFSelectorEventLoopUnixSocketTests.test_create_unix_server_nopath_nosockcCsltj�}|�S|jjdd�ddd|�}|jtd��|jj|�WdQRXWdQRXdS)NcSsdS)Nr	r	r	r	r
r&szXSelectorEventLoopUnixSocketTests.test_create_unix_server_path_inetsock.<locals>.<lambda>rdrez"A UNIX Domain Stream.*was expected)r_rrar1rrb)rrerfr	r	r
�%test_create_unix_server_path_inetsocks		
zFSelectorEventLoopUnixSocketTests.test_create_unix_server_path_inetsockcCsxtjtjtj�}|�S|jjdd�ddd|�}|jtd��|jj|�WdQRXWdQRXdS)NcSsdS)Nr	r	r	r	r
r&(szUSelectorEventLoopUnixSocketTests.test_create_unix_server_path_dgram.<locals>.<lambda>rdrez"A UNIX Domain Stream.*was expected)r_r\Z
SOCK_DGRAMrrar1rrb)rrerfr	r	r
�"test_create_unix_server_path_dgram%s		
zCSelectorEventLoopUnixSocketTests.test_create_unix_server_path_dgram�
SOCK_NONBLOCKz$no socket.SOCK_NONBLOCK (linux only)cCs�tjtjtjtjB�}tj��}|j}WdQRXzu|�h|j|�|jj	dd�ddd|�}|jj
|�}|j�|jj
|j��WdQRXWdt
j|�XdS)NcSsdS)Nr	r	r	r	r
r&8sz^SelectorEventLoopUnixSocketTests.test_create_unix_server_path_stream_bittype.<locals>.<lambda>rdre)r_r\ZSOCK_STREAMrvrkrlrmr`rrarbrrc�os�unlink)rrern�fnrfrgr	r	r
�+test_create_unix_server_path_stream_bittype.s
	
!zLSelectorEventLoopUnixSocketTests.test_create_unix_server_path_stream_bittypecCsltj�}|�S|jjdd�ddd|�}|jtd��|jj|�WdQRXWdQRXdS)NcSsdS)Nr	r	r	r	r
r&Csz\SelectorEventLoopUnixSocketTests.test_create_unix_connection_path_inetsock.<locals>.<lambda>rdrez"A UNIX Domain Stream.*was expected)r_r�create_unix_connectionr1rrb)rrerfr	r	r
�)test_create_unix_connection_path_inetsock@s		
zJSelectorEventLoopUnixSocketTests.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)Nr	r	r	r	r
r&PszUSelectorEventLoopUnixSocketTests.test_create_unix_server_bind_error.<locals>.<lambda>rdz/testcSsdS)Nr	r	r	r	r
r&Vs)rr r_�return_valuerAr`r(rrarrbrLrrF�MemoryError)rZm_socketrerfr	r	r
�"test_create_unix_server_bind_errorIszCSelectorEventLoopUnixSocketTests.test_create_unix_server_bind_errorc	CsU|jjdd�tjdt��}|jtd��|jj|�WdQRXdS)NcSsdS)Nr	r	r	r	r
r&]szXSelectorEventLoopUnixSocketTests.test_create_unix_connection_path_sock.<locals>.<lambda>rezpath and sock can not be)rr{rw�devnullrPr1rrb)rrfr	r	r
�%test_create_unix_connection_path_sock[s	zFSelectorEventLoopUnixSocketTests.test_create_unix_connection_path_sockc	CsI|jjdd�d�}|jtd��|jj|�WdQRXdS)NcSsdS)Nr	r	r	r	r
r&csz\SelectorEventLoopUnixSocketTests.test_create_unix_connection_nopath_nosock.<locals>.<lambda>zno path and sock were specified)rr{r1rrb)rrfr	r	r
�)test_create_unix_connection_nopath_nosockas
		
zJSelectorEventLoopUnixSocketTests.test_create_unix_connection_nopath_nosockc	CsR|jjdd�tjdd�}|jtd��|jj|�WdQRXdS)NcSsdS)Nr	r	r	r	r
r&jsz_SelectorEventLoopUnixSocketTests.test_create_unix_connection_nossl_serverhost.<locals>.<lambda>Zserver_hostnamerpz"server_hostname is only meaningful)rr{rwr�r1rrb)rrfr	r	r
�,test_create_unix_connection_nossl_serverhosths
		
zMSelectorEventLoopUnixSocketTests.test_create_unix_connection_nossl_serverhostc	CsR|jjdd�tjdd�}|jtd��|jj|�WdQRXdS)NcSsdS)Nr	r	r	r	r
r&qsz_SelectorEventLoopUnixSocketTests.test_create_unix_connection_ssl_noserverhost.<locals>.<lambda>rqTz/you have to pass server_hostname when using ssl)rr{rwr�r1rrb)rrfr	r	r
�,test_create_unix_connection_ssl_noserverhostos
	
zMSelectorEventLoopUnixSocketTests.test_create_unix_connection_ssl_noserverhost)r<r=r>rrh�unittest�
skipUnless�hasattrrwrjrorrrsrtrur_rzr|rr[rr�r�r�r�r	r	)rr
r]�s '				r]csWeZdZ�fdd�Zddd�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�S) �UnixReadPipeTransportTestscs�t�j�|j�|_tjtj�|_t	j
dtj�|_
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[�startr0�stop�stat�S_IFIFO�st_mode)r�blocking_patcher�
fstat_patcher�m_fstat�st)rr	r
r{s

	z UnixReadPipeTransportTests.setUpNcCs8tj|j|j|jd|�}|jt|�|S)N�waiter)rZ_UnixReadPipeTransportrr�r�r0r)rr�rr	r	r
�read_pipe_transport�s
		z.UnixReadPipeTransportTests.read_pipe_transportcCswtjd|j�}|jd|�}|jj|�|jjj|�|jjd|j	�|j
|j��dS)Nrr�r�)r�Futurerr�rbr��connection_mader#�
assert_reader�_read_ready�assertIsNone�result)rr��trr	r	r
�	test_ctor�sz$UnixReadPipeTransportTests.test_ctorzos.readcCsI|j�}d|_|j�|jd|j�|jjjd�dS)Nsdatar�)r�r}r�r#�max_sizer��
data_received)r�m_readr�r	r	r
�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�rDr�readersr�run_brieflyr�Zeof_received�connection_lost)rr�r�r	r	r
�test__read_ready_eof�s	
z/UnixReadPipeTransportTests.test__read_ready_eofcCs\|j�}t|_|j�|jd|j�tj|j�|j	|j
jj�dS)Nr�)
r��BlockingIOErrorr(r�r#r�rr�rrDr�r�rF)rr�r�r	r	r
�test__read_ready_blocked�s	
z3UnixReadPipeTransportTests.test__read_ready_blockedzasyncio.log.logger.errorcCs�|j�}t�}||_tj�|_|j�|jd|j�|jj|�|jt	j
d�dtttf�dS)Nr�z;Fatal read error on pipe transport
protocol:.*
transport:.*�exc_info)r�rAr(rr �_closer�r#r�r�MockPattern�MOCK_ANY)rr��m_logexcr��errr	r	r
�test__read_ready_error�s		
	z1UnixReadPipeTransportTests.test__read_ready_errorcCsL|j�}tj�}|jjd|�|j�|j|jj�dS)Nr�)r�rr r�
add_readerZ
pause_readingrDr�)rr�r��mr	r	r
�test_pause_reading�s

z-UnixReadPipeTransportTests.test_pause_readingcCs0|j�}|j�|jjd|j�dS)Nr�)r�Zresume_readingrr�r�)rr�r�r	r	r
�test_resume_reading�s
z.UnixReadPipeTransportTests.test_resume_readingcCs9|j�}tj�|_|j�|jjd�dS)N)r�rr r�rr#)rr�r�r	r	r
rZ�s
z%UnixReadPipeTransportTests.test_closecCsE|j�}d|_tj�|_|j�|j|jj�dS)NT)r��_closingrr r�rrDrF)rr�r�r	r	r
�test_close_already_closing�s
	
z5UnixReadPipeTransportTests.test_close_already_closingcCso|j�}t�}|j|�|j|j��|j|jj�tj	|j�|j
jj|�dS)N)
r�rPr�rL�
is_closingrDrr�rr�r�r�r#)rr�r�r�r	r	r
�test__close�s	
z&UnixReadPipeTransportTests.test__closecCs�|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�r	r	r
�test__call_connection_lost�s
z5UnixReadPipeTransportTests.test__call_connection_lostcCs�|j�}|j|j�|j|j�t�}|j|�|jjj|�|j	j
j�|j|j�|j|j�dS)N)r�r�r�r�rAr�r�r�r#r�rr�)rr�r�r	r	r
�#test__call_connection_lost_with_errs	
z>UnixReadPipeTransportTests.test__call_connection_lost_with_err)r<r=r>rr�r�rr[r�r�r�r�r�r�rZr�r�r�r�r	r	)rr
r�ys		


r�cs5eZdZ�fdd�Zddd�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�S)7�UnixWritePipeTransportTestscs�t�j�|j�|_tjtj�|_t	j
dtj�|_
d|j
j_t	jd�}|j�|j|j�t	jd�}|j�}t	j
�}tj|_||_|j|j�dS)Nr�r�z$asyncio.unix_events._set_nonblockingzos.fstat)r
rr�rrr�rZBaseProtocolr�rr r�r�r�r�r}r[r�r0r�r��S_IFSOCKr�)rr�r�r�r�)rr	r
rs

	z!UnixWritePipeTransportTests.setUpNcCs8tj|j|j|jd|�}|jt|�|S)Nr�)rZ_UnixWritePipeTransportrr�r�r0r)rr�rr	r	r
�write_pipe_transport#s
		z0UnixWritePipeTransportTests.write_pipe_transportcCsztjd|j�}|jd|�}|jj|�|jjj|�|jjd|j	�|j
d|j��dS)Nrr�r�)rr�rr�rbr�r�r#r�r�r7r�)rr�r�r	r	r
r�*sz%UnixWritePipeTransportTests.test_ctorcCs#|j�}|j|j��dS)N)r�rLZ
can_write_eof)rr�r	r	r
�test_can_write_eof3sz.UnixWritePipeTransportTests.test_can_write_eofzos.writecCs_|j�}d|_|jd�|jdd�|j|jj�|jt�|j	�dS)N�sdatar�)
r�r}�writer#rDr�writersr7�	bytearray�_buffer)r�m_writer�r	r	r
�
test_write7s	
z&UnixWritePipeTransportTests.test_writecCsY|j�}|jd�|j|j�|j|jj�|jtd�|j�dS)Nr�)	r�r�rDrFrr�r7r�r�)rr�r�r	r	r
�test_write_no_data@s

z.UnixWritePipeTransportTests.test_write_no_datacCsU|j�}d|_|jd�|jjd|j�|jtd�|j�dS)NrJsdatar�sta)	r�r}r�r�
assert_writer�_write_readyr7r�r�)rr�r�r	r	r
�test_write_partialHs
	
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�rDrFr�r7)rr�r�r	r	r
�test_write_bufferPs
z-UnixWritePipeTransportTests.test_write_buffercCsn|j�}t�|_|jd�|jdtd��|jjd|j�|j	td�|j
�dS)Nsdatar�)r�r�r(r�r#r�rr�r�r7r�)rr�r�r	r	r
�test_write_againZs
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 transportrrJz=pipe closed by peer or os.write(pipe, data) raised exception.)r�rAr(rr Z_fatal_errorr�r#rDrr�r7r�r��
_conn_lost�warningr)rr�Zm_logr�r�r	r	r
�test_write_errcs*		
	




	z*UnixWritePipeTransportTests.test_write_errcCsZ|j�}|j�|jd�|j|jd�|jd�|j|jd�dS)NsdatarrJ)r�r�r�r7r�)rr�r�r	r	r
�test_write_close~s


z,UnixWritePipeTransportTests.test_write_closecCsv|j�}|j�|j|jj�|j|jj�|j|j��tj	|j�|j
jjd�dS)N)
r�r�rDrr�r�rLr�rr�r�r�r#)rr�r	r	r
r��s
z,UnixWritePipeTransportTests.test__read_readycCsq|j�}|jjd|j�td�|_d|_|j�|j|jj�|j	t�|j�dS)Nr�sdatar�)
r�rr�r�r�r�r}rDr�r7)rr�r�r	r	r
�test__write_ready�s	
z-UnixWritePipeTransportTests.test__write_readycCsw|j�}|jjd|j�td�|_d|_|j�|jjd|j�|jtd�|j�dS)Nr�sdata��a)	r�rr�r�r�r�r}r�r7)rr�r�r	r	r
�test__write_ready_partial�s	
z5UnixWritePipeTransportTests.test__write_ready_partialcCs�|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�r7)rr�r�r	r	r
�test__write_ready_again�s
z3UnixWritePipeTransportTests.test__write_ready_againcCs�|j�}|jjd|j�td�|_d|_|j�|jdtd��|jjd|j�|j	td�|j�dS)Nr�sdatar)
r�rr�r�r�r�r}r#r�r7)rr�r�r	r	r
�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�dtttf�|jd|j�tj|j�|jjj|�dS)Nr�sdataz<Fatal write error on pipe transport
protocol:.*
transport:.*r�r)r�rr�r�r�r�rAr(rDr�r�r7rLr�r#rr�r�r�r�r�r�)rr�r�r�r�r	r	r
�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}rDr�r�r7r�r�r#r�r)rr�r�r	r	r
�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��abortrDrFr�r�r7rLr�rr�r�r�r#)rr�r�r	r	r
�
test_abort�s
z&UnixWritePipeTransportTests.test_abortcCs�|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�r	r	r
r��s
z6UnixWritePipeTransportTests.test__call_connection_lostcCs�|j�}|j|j�|j|j�t�}|j|�|jjj|�|j	j
j�|j|j�|j|j�dS)N)r�r�r�r�rAr�r�r�r#r�rr�)rr�r�r	r	r
r��s	
z?UnixWritePipeTransportTests.test__call_connection_lost_with_errcCs@|j�}tj�|_|j�|jj�|j�dS)N)r�rr �	write_eofrr#)rr�r	r	r
rZs


z&UnixWritePipeTransportTests.test_closecCsE|j�}tj�|_d|_|j�|j|jj�dS)NT)r�rr r�r�rrDrF)rr�r	r	r
�test_close_closings
	
z.UnixWritePipeTransportTests.test_close_closingcCsc|j�}|j�|j|j��|j|jj�tj|j�|j	j
jd�dS)N)r�r�rLr�rDrr�rr�r�r�r#)rr�r	r	r
�test_write_eofs
z*UnixWritePipeTransportTests.test_write_eofcCsO|j�}dg|_|j�|j|j��|j|jjj�dS)Nsdata)	r�r�r�rLr�rDr�r�rF)rr�r	r	r
�test_write_eof_pendings

z2UnixWritePipeTransportTests.test_write_eof_pending)r<r=r>rr�r�r�rr[r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�rZr�r�r�r	r	)rr
r�s6		
	
	



	r�c@seZdZdd�ZdS)�AbstractChildWatcherTestscCs�tj�}tj�}|jt|j||�|jt|j|�|jt|j|�|jt|j	�|jt|j
�|jt|j|||�dS)N)rr rZAbstractChildWatcherr�NotImplementedError�add_child_handler�remove_child_handler�attach_loopr�	__enter__�__exit__)r�f�watcherr	r	r
�test_not_implemented)s

z.AbstractChildWatcherTests.test_not_implementedN)r<r=r>r�r	r	r	r
r�'sr�c@seZdZdd�ZdS)�BaseChildWatcherTestscCs2tj�}tj�}|jt|j|�dS)N)rr rZBaseChildWatcherrr�Z_do_waitpid)rr�r�r	r	r
r�<sz*BaseChildWatcherTests.test_not_implementedN)r<r=r>r�r	r	r	r
r�:sr��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 �S)2�ChildWatcherTestsMixinr�c	syt�j�|j�|_d|_i|_tjj|jd��,|_	|j
�|_|jj|j�WdQRXdS)NFr*)
r
rr�r�running�zombiesrr[rP�m_add_signal_handler�create_watcherr�r�)r)rr	r
rPs
			zChildWatcherTestsMixin.setUpcCs�t|jtj�s!|dkr1|j|d�y3|dkrM|jj�S||jj|�fSWntk
rxYnX|j	r�dSt
��dS)Nrrr:)rr)�
isinstancer�r�SafeChildWatcherZ
assertGreaterr��popitem�pop�KeyErrorr��ChildProcessError)r�pid�flagsr	r	r
r�[s!

	zChildWatcherTestsMixin.waitpidcCs|d|j|<dS)Ni�)r�)rr�
returncoder	r	r
�
add_zombiejsz!ChildWatcherTestsMixin.add_zombiecCs
|dkS)Ni�r	)r�statusr	r	r
r�msz ChildWatcherTestsMixin.WIFEXITEDcCsd|kodkSS)Ni�i�r	)rr	r	r	r
r�psz"ChildWatcherTestsMixin.WIFSIGNALEDcCs|j|j|��|dS)Ni�)rLr�)rr	r	r	r
r�ssz"ChildWatcherTestsMixin.WEXITSTATUScCs|j|j|��d|S)Ni�)rLr�)rr	r	r	r
r�wszChildWatcherTestsMixin.WTERMSIGcCs |jjtj|jj�dS)N)r�rYrrWr��	_sig_chld)rr	r	r
�test_create_watcher{s	z*ChildWatcherTestsMixin.test_create_watchercs�fdd�}|S)Nc+s�dd�}|d|j���}|d|j��z}|d|j��^}|d|j��B}|d|j��&}�|t|||||��WdQRXWdQRXWdQRXWdQRXWdQRXdS)NcSstj|d|dtj�S)N�wrapsZnew_callable)rr[r )�target�wrapperr	r	r
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)r2r	r
�wrapped_func�sz:ChildWatcherTestsMixin.waitpid_mocks.<locals>.wrapped_funcr	)r2rr	)r2r
�
waitpid_mockssz$ChildWatcherTestsMixin.waitpid_mockscCs�tj�}|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��
)rr r�r�r�rDrFr�r�r�r�r
rrLrYrQ�ignore_warningsr��clear)rr��callbackr	r	r
�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#)rr r�r�r�rDrFr�r�r�r�r
rrYrLrQrr�r)rr��	callback1�	callback2r	r	r
�test_sigchld_two_children�s�
	 
 






	










z0ChildWatcherTestsMixin.test_sigchld_two_childrencCs1tj�}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"���r+)rr r�r�r�rDrFr�r�r�r�r
rrYrLrQr)rr�r$r%r	r	r
�.test_sigchld_two_children_terminating_together5sb
	 
 
	







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�rrr:)rr r�rr
r�rYrQrrDrF)rr�rr	r	r
�test_sigchld_race_conditionzs

 

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��Frri����i����)rr r�r�r�rDrFr�r�r�r�rr
rYrLrQr)rr�r$r%r	r	r
�test_sigchld_replace_handler�sJ
	
	





z3ChildWatcherTestsMixin.test_sigchld_replace_handlercCsOtj�}|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)rr r�r�r�rDrFr�r�r�r�r�rrr
)rr�rr	r	r
�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�5r0i�F�ei��i��)rr r�r�r�rDrFr�r�r�r�r�r
rYrLrQrr)rr�rr	r	r
�test_sigchld_unknown_status�s0
	
	




z2ChildWatcherTestsMixin.test_sigchld_unknown_statuscCsrtj�}tj�}tj�}|j�Pd|_|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�7rJ�8r�rF)
rr r�r�r�rLr�rDrrr
rFrY)rr�r$r%�	callback3r	r	r
�test_remove_child_handler
s*
		
z0ChildWatcherTestsMixin.test_remove_child_handlercCs�tj�}|j�!d|_|jjd|�WdQRXt|j_tjj	t
jd��0}|j|jj
�d�|j|j�WdQRXdS)NT�9�error)rr r�r�r�rr�r(r[rPr�loggerr7r
rLrF)rr�rZm_errorr	r	r
� 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��)rr r�r�r�rDrFr�r�r�r�rrwr��WNOHANGrQrr
r�r�FastChildWatcherrY)rr�rr	r	r
�#test_sigchld_child_reaped_elsewhere=s$
		

z:ChildWatcherTestsMixin.test_sigchld_child_reaped_elsewherecCs�tj�}tj�}|j�r|j�ad|_|jdd�|jdd�|jj�|jjd|�|jjd|�WdQRXWdQRX|jdd�|j	|j
�dS)NTiOriQr(iP)rr rr�r�rr
r�rYrDrF)rr�r$r%r	r	r
�,test_sigchld_unknown_pid_during_registration`s	
!zCChildWatcherTestsMixin.test_sigchld_unknown_pid_during_registrationcCstj�}|j�!d|_|jjd|�WdQRX|j}|j�|_tjj}||d��_}||jd��C}|jj	|j�|j
tj�|j
tj|jj
�WdQRXWdQRXd|_|jdd�|jj
�|j
dd�dS)NT�<r"r*Fr)rr r�r�r�rr�r[rPr�rYrrWr
r)rr�r�old_loopr[Zm_old_removeZ	m_new_addr	r	r
�
test_set_loopus$
		
!	
z$ChildWatcherTestsMixin.test_set_loopcCs-tj�}tj�}tj�}|j�Gd|_|jjd|�|jjd|�|jjd|�WdQRX|j}d|_tjj|d��A}|jt	d��|jj
d�WdQRX|jtj
�WdQRX|jdd�|jdd�|j|j�|j|j�|j|j�|j�|_tjj|jd	��c}|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*Fr0r+r+)rr r�r�r�rr[rPZassertWarnsRegex�RuntimeWarningr�rYrrWrrDrFr�r
rQ)rr�r$r%r<rI�m_remove_signal_handlerr�r	r	r
�test_set_loop_race_condition�sN
				
	

	
z3ChildWatcherTestsMixin.test_set_loop_race_conditioncCsDtj�}|j�(d|_|jdd�|jdd�|jj�|jjd|�|jjd|�|jt|jj	�d�t
|jtj�r�|jt|jj
�d�tjj|jd��_}|jj�|jtj�|j|jj	�t
|jtj�r2|j|jj
�WdQRXWdQRXdS)	NT�?r�Ar �@rr")rr r�r�rr
r�r7rXZ
_callbacksr�rrEZ_zombiesr[rPrrrYrrWrD)rr�r$rOr	r	r
rZ�s(
	
	

z!ChildWatcherTestsMixin.test_closecCsPtj�}|j��1}|jtd��|jd|�WdQRXWdQRXdS)Nz/the child watcher does not have a loop attached�d)rr r�r1r)r�)rr�rr�r	r	r
�,test_add_child_handler_with_no_loop_attached�s
zCChildWatcherTestsMixin.test_add_child_handler_with_no_loop_attached)!r<r=r>rr[rPrr@rrr�rr�r�r�r�rrrr&r,r.r2r5r8r=rArFrGrJrPrZrUr	r	)rr
r�Ls2=hE5 %!#> r�c@seZdZdd�ZdS)�SafeChildWatcherTestscCs
tj�S)N)rr)rr	r	r
r��sz$SafeChildWatcherTests.create_watcherN)r<r=r>r�r	r	r	r
rV�srVc@seZdZdd�ZdS)�FastChildWatcherTestscCs
tj�S)N)rrE)rr	r	r
r�sz$FastChildWatcherTests.create_watcherN)r<r=r>r�r	r	r	r
rWsrWc@sXeZdZdd�Zdd�Zdd�Zdd�Zd	d
�Zdd�Zd
S)�PolicyTestscCs
tj�S)N)rZDefaultEventLoopPolicy)rr	r	r
�
create_policyszPolicyTests.create_policycCsx|j�}|j|j�|j�}|j|tj�|j|j|�|j||j��|j|j�dS)N)	rYr��_watcher�get_child_watcherr6rr�assertIsr�)r�policyr�r	r	r
�test_get_child_watchersz"PolicyTests.test_get_child_watchercCsR|j�}tj�}|j|�|j|j|�|j||j��dS)N)rYrrEZset_child_watcherr\rZr[)rr]r�r	r	r
� test_get_child_watcher_after_sets

z,PolicyTests.test_get_child_watcher_after_setcCsh|j�}|j�}|j|j�|j�}|j|tj�|j|j	|�|j
�dS)N)rY�get_event_loopr�rZr[r6rrr\r�r)rr]rr�r	r	r
�-test_get_child_watcher_with_mainloop_existingsz9PolicyTests.test_get_child_watcher_with_mainloop_existingcsK��fdd�}�j��tjd|�}|j�|j�dS)Ncso�j�j���j�j�tj��j�}�j|tj��j|j	��j�j
�dS)N)r�new_event_loopr6r`rZAbstractEventLoopr[rr�r�r)r�)r]rr	r
r�-s
z4PolicyTests.test_get_child_watcher_thread.<locals>.fr
)rY�	threadingZThreadr��join)rr�Zthr	)r]rr
�test_get_child_watcher_thread+s

z)PolicyTests.test_get_child_watcher_threadcCs�|j�}|j�}|j�}|j|j|�|j�}|j|�|j|j|�|jd�|j|jd�|j�|j�dS)N)rYr`r[r\r�rbrr)rr]rr�Znew_loopr	r	r
�,test_child_watcher_replace_mainloop_existing?s


z8PolicyTests.test_child_watcher_replace_mainloop_existingN)	r<r=r>rYr^r_rarerfr	r	r	r
rXsrX�__main__))�__doc__�collectionsr?r�rwrirr_r��sysrkrcr��warningsr�platformZSkipTestrrrr�ANYr�rr�ZTestCaserr�r]r�r�r�r��
namedtupler�r�rVrWrXr<�mainr	r	r	r
�<module>s\		����		���N