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

�i��@sdZddlZddlZddlZddlZddlmZddlZddlmZddlm	Z	ddlm
Z
ddlmZddlmZdd	l
mZdd
l
mZddlmZdd
�Zdd�ZGdd�dej�ZGdd�dej�ZGdd�dej�Ze�ejdkd�Gdd�dej��Zedkr�e��dSdS)zTests for proactor_events.py�N)�mock)�BaseProactorEventLoop)�_ProactorSocketTransport)�_ProactorWritePipeTransport)�_ProactorDuplexPipeTransport)�_ProactorDatagramTransport)�	os_helper)�
socket_helper)�utilscCst�d�dS�N)�asyncioZset_event_loop_policy�r
r
�C/usr/local/lib/python3.10/test/test_asyncio/test_proactor_events.py�tearDownModulesrcCs"|jdurdS|j��d|_dSr)�_sock�close)�	transportr
r
r�close_transports


rcszeZdZ�fdd�ZdXdd�Zdd�Zdd	�Zd
d�Zdd
�Zdd�Z	dd�Z
dd�Zdd�Zdd�Z
dd�Zdd�Zdd�Zdd�Ze�d �d!d"��Zd#d$�Zd%d&�Zd'd(�Zd)d*�Zd+d,�Zd-d.�Zd/d0�Ze�d1�d2d3��Zd4d5�Zd6d7�Zd8d9�Zd:d;�Z d<d=�Z!d>d?�Z"d@dA�Z#dBdC�Z$dDdE�Z%dFdG�Z&dHdI�Z'dJdK�Z(dLdM�Z)dNdO�Z*dPdQ�Z+dRdS�Z,dTdU�Z-dVdW�Z.�Z/S)Y�ProactorSocketTransportTestscs\t���|��|_|�|jj�t��|_|j|j_	t
�tj
�|_t�tj�|_d|_dS)Ni)�super�setUp�
new_test_loop�loop�
addCleanuprr�Mock�proactor�	_proactor�
test_utils�make_test_protocolr�Protocol�protocol�socket�sock�buffer_size��self��	__class__r
rr#s




z"ProactorSocketTransportTests.setUpNcCs&t|j|j|j|d�}|�t|�|S�N)�waiter)rrr"r rr)r%r)rr
r
r�socket_transport-s

�z-ProactorSocketTransportTests.socket_transportcCsX|j��}|j|d�}t�|j�|�|���|j�|�|j	j
�|jt
|j��dSr()r�
create_futurer*r�run_briefly�assertIsNone�resultr �connection_mader�	recv_into�assert_called_withr"�	bytearrayr#�r%�fut�trr
r
r�	test_ctor3s
z&ProactorSocketTransportTests.test_ctorcCsN|��}|��|jjj�|jt|j��|�	|j
jj�|�	|j
j
j�dSr)r*�
_loop_readingrrr0r1r"r2r#�assertFalser �
data_received�called�eof_received�r%r5r
r
r�test_loop_reading;s
z.ProactorSocketTransportTests.test_loop_readingcCs�d}|j��}|�t|��|��}||_||jdt|��<|�|�t|j	�}||dt|��<|jj
j�|j
|�|jj�t|��dS�N�data)rr+�
set_result�lenr*�	_read_fut�_datar7r2r#rr0r1r"r r9)r%�buf�resr5Z
called_bufr
r
r�test_loop_reading_dataBs


z3ProactorSocketTransportTests.test_loop_reading_datacCsz|j��}|�d�|��}|�t|j|�t��|_	||_
|�|�|�|jjj
j�|�|jjj�|�|j	j�dS�Nr)rr+r@r*�assertRaises�AssertionErrorr7rrrrBr8rr0r:�
assertTruer r;�r%rEr5r
r
r�test_loop_reading_no_dataPs



z6ProactorSocketTransportTests.test_loop_reading_no_datacC�>t�}|jjj_|��}t��|_|�	�|j�
|d�dS�Nz"Fatal read error on pipe transport)�ConnectionAbortedErrorrrr0�side_effectr*rr�_fatal_errorr7r1�r%�errr5r
r
r�test_loop_reading_aborted^�
�z6ProactorSocketTransportTests.test_loop_reading_abortedcC�@t�|jjj_|��}d|_t��|_	|�
�|�|j	j�dS�NT)
rOrrr0rPr*�_closingrrrQr7r8r:r<r
r
r�!test_loop_reading_aborted_closinghs
z>ProactorSocketTransportTests.test_loop_reading_aborted_closingcCrV�NF)
rOrrr0rPr*rXrrrQr7rJr:r<r
r
r�"test_loop_reading_aborted_is_fatalqs
z?ProactorSocketTransportTests.test_loop_reading_aborted_is_fatalcCsZt�}|jjj_|��}d|_t��|_	t��|_
|��|�|j	j
�|j
�|�dSrZ)�ConnectionResetErrorrrr0rPr*rXrrrQ�_force_closer7r8r:r1rRr
r
r�!test_loop_reading_conn_reset_lostys

z>ProactorSocketTransportTests.test_loop_reading_conn_reset_lostcCrMrN)�OSErrorrrr0rPr*rrrQr7r1rRr
r
r�test_loop_reading_exception�rUz8ProactorSocketTransportTests.test_loop_reading_exceptioncCs<|��}t��|_|�d�|�|jd�|jjdd�dS)Nr?)�data)r*rr�
_loop_writing�write�assertEqual�_bufferr1r<r
r
r�
test_write�s


z'ProactorSocketTransportTests.test_writecCs"|��}|�d�|�|j�dS)N�)r*rcr8rer<r
r
r�test_write_no_data�s
z/ProactorSocketTransportTests.test_write_no_datacCsF|��}t��|_t��|_|�d�|�|jd�|�|jj	�dSr>)
r*rr�
_write_futrbrcrdrer8r:r<r
r
r�test_write_more�s


z,ProactorSocketTransportTests.test_write_morecCsH|��}td�|_|��|jjj�|jd�|jjjj	j
�|j�dSr>)r*r2rerbrr�sendr1r"�return_value�add_done_callbackr<r
r
r�test_loop_writing�s
z.ProactorSocketTransportTests.test_loop_writing�asyncio.proactor_events.loggercCs�t�}|jjj_|��}t��|_ddg|_	|�
�|j�|d�d|_|�
d�|�
d�|�
d�|�
d�|�
d�|�|j	d�|j�d�dS)Nsdastaz#Fatal write error on pipe transport�r?zsocket.send() raised exception.)r_rrrkrPr*rrrQrerbr1�
_conn_lostrcrd�warning)r%�m_logrSr5r
r
r�test_loop_writing_err�s"

�




z2ProactorSocketTransportTests.test_loop_writing_errcCs<|j��}|�d�|��}||_|�|�|�|j�dSr>)rr+r@r*rirbr-r3r
r
r�test_loop_writing_stop�s


z3ProactorSocketTransportTests.test_loop_writing_stopcCs^|j��}|�d�|��}||_|��|�|�|�|j�t�	|j�|j
j�d�dS�Nrp)
rr+r@r*rirrbr-rr,r �connection_lostr1r3r
r
r�test_loop_writing_closing�s


z6ProactorSocketTransportTests.test_loop_writing_closingcCs*|��}t��|_|��|j�d�dSr)r*rrr]�abortr1r<r
r
r�
test_abort�s
z'ProactorSocketTransportTests.test_abortcCsz|��}|��t�|j�|jj�d�|�|�	��|�
|jd�|jj��|��t�|j�|�
|jjj�dSrv)r*rrr,rr rwr1rJ�
is_closingrdrq�
reset_mockr8r:r<r
r
r�
test_close�sz'ProactorSocketTransportTests.test_closecCs:|��}t��|_|��t�|j�|�|j	j
j�dSr)r*rrrirrr,rr8r rwr:r<r
r
r�test_close_write_fut�s

z1ProactorSocketTransportTests.test_close_write_futcCs8|��}dg|_|��t�|j�|�|jjj	�dSr>)
r*rerrr,rr8r rwr:r<r
r
r�test_close_buffer�s
z.ProactorSocketTransportTests.test_close_buffercCsH|��}d|jj_|��t�|j�|jj	�
d�|�|jjj
�dS)N���)r*r"�filenorlrrr,rr rwr1r8�shutdownr:r<r
r
r�test_close_invalid_sockobj�s
z7ProactorSocketTransportTests.test_close_invalid_sockobj�asyncio.base_events.loggercCs<|��}t��|_|�d�|�|jj�|�|jj�dSr)r*rrr]rQrJr:�error)r%Z	m_loggingr5r
r
r�test_fatal_error�s


z-ProactorSocketTransportTests.test_fatal_errorcCs�|��}dg|_t��}|_t��}|_|�d�|j��|j��t	�
|j�|jj
�d�|�d|j�|�|jd�dS)Nr?rp)r*rerrrBrir]�cancelr1rr,rr rwrdrq)r%r5Zread_futZ	write_futr
r
r�test_force_closes


z-ProactorSocketTransportTests.test_force_closecCsft��}|j�|�|j��}|�d�||jj_|�	�}|�
d�|�d�t�
|j�|��dS)Nrpr?)rrrZset_exception_handlerr+r@rrkrlr*rcr]rr,�assert_not_called)r%Zexc_handlerr4r5r
r
r�test_loop_writing_force_closes




z:ProactorSocketTransportTests.test_loop_writing_force_closecCs8|��}d|_|�d�t�|j�|�|jjj	�dSrW)
r*rXr]rr,rrJr rwr:r<r
r
r�test_force_close_idempotents

z8ProactorSocketTransportTests.test_force_close_idempotentcCsT|��}|�|jjj�d|_|�d�|�d�t�|j	�|�
d|jjj�dS)NTrp)r*r8r rwr:rXr]rr,rrd�
call_countr<r
r
r�.test_force_close_protocol_connection_lost_once+s

zKProactorSocketTransportTests.test_force_close_protocol_connection_lost_oncecCsJ|��}|�|jjj�|��|��t�|j�|�	d|jjj
�dSrv)r*r8r rwr:rrr,rrdr�r<r
r
r�(test_close_protocol_connection_lost_once6szEProactorSocketTransportTests.test_close_protocol_connection_lost_oncecCsF|��}dg|_|�d�t�|j�|jj�d�|�	d|j�dSr>)
r*rer]rr,rr rwr1rdr<r
r
r�test_fatal_error_2@s
z/ProactorSocketTransportTests.test_fatal_error_2cCs6|��}|�d�|�|jjj�|�|jjj�dSr)r*Z_call_connection_lostrJr rwr:r"rr<r
r
r�test_call_connection_lostIs
z6ProactorSocketTransportTests.test_call_connection_lostcCsT|��}|�|���|��|jj�tj�|��|�	|jjj
d�|��dSrv)r*rJ�
can_write_eof�	write_eofr"r�r1r!�SHUT_WRrdr�rr<r
r
r�test_write_eofOsz+ProactorSocketTransportTests.test_write_eofcCs�|��}|j��}||jjj_|�d�|��|�	|j
�|�|jj
j�|jjj�|jd�|�d�|j��|jj
�tj�|��dS�Nr?�)r*rr+�_looprrkrlrcr�rJZ_eof_writtenr8r"r�r:r1r@�	_run_oncer!r�r�r%r5�fr
r
r�test_write_eof_bufferXs



z2ProactorSocketTransportTests.test_write_eof_buffercCs\t|j|j|j�}|�|���|��|�|���|j��|�|jj	j
�|�	�dSr)rrr"r rJr�r�r{r�rr:r<r
r
r�test_write_eof_write_pipefs�
z6ProactorSocketTransportTests.test_write_eof_write_pipecCs�t|j|j|j�}|j��}||jjj_|�	d�|�
�|�|���|�
|jjj�|jjj�|jd�|�d�|j��|j��|�|jjj�|��dSr�)rrr"r r+r�rrkrlrcr�rJr{r8r�r:r1r@r�rr�r
r
r� test_write_eof_buffer_write_pipeps




z=ProactorSocketTransportTests.test_write_eof_buffer_write_pipecCs^t|j|j|j�}|�|���|�t��|��Wd�n1s$wYt	|�dSr)
rrr"r r8r�rH�NotImplementedErrorr�rr<r
r
r�test_write_eof_duplex_pipes�
�z7ProactorSocketTransportTests.test_write_eof_duplex_pipecs����}d}gd�}tt|�����fdd�}|�jjj_�j����|j	���
|���|dd�D]}�j���jj
�t|��q5|��|����
|j	���|���td�D]}�j��q_�jj
�t|d��|��|����|j	���
|���|dd�D]}�j���jj
�t|��q�|��|��t���j_�j���jj���jj
�t|d��|����|���dS)	Nr)�data1�data2sdata3sdata4sdata5rgcs@�j��}����|j����fdd�}||_|�t���|S)Ncs��dt���<��Sr)rAr
�ra�msgr.r
r�monkey�szYProactorSocketTransportTests.test_pause_resume_reading.<locals>.recv_into.<locals>.monkey)rr+�popr.r@rA)r"rar�r��Z
reversed_msgsr%r�rr0�s
zIProactorSocketTransportTests.test_pause_resume_reading.<locals>.recv_into��
rpr�)r*�list�reversedrrr0rPr�r8Z_pausedrJZ
is_readingr r9r1r2Z
pause_reading�rangeZresume_readingrr�call_exception_handlerr�r)r%r5�indexZmsgsr0r��ir
r�r�test_pause_resume_reading�sD



z6ProactorSocketTransportTests.test_pause_resume_readingcCsH|��}|j|d�|�|��d�|�|jjj�|�|jjj�|S)N��highr)	r*Zset_write_buffer_limitsrd�get_write_buffer_sizer8r �
pause_writingr:�resume_writing)r%r�r5r
r
r�pause_writing_transport�sz4ProactorSocketTransportTests.pause_writing_transportcCs~|jdd�}|j��}||jjj_|�d�|j��|�|j	j
j�|�d�|j��|�
|��d�|�|j	jj�dS)Nr�r�s
large datar)r�rr+rrkrlrcr�rJr r�r:r@rdr�r��r%r5r4r
r
r�test_pause_resume_writing�s




z6ProactorSocketTransportTests.test_pause_resume_writingcCs�|jdd�}|j��}||jjj_|�d�|j��|�|�	�d�|�
|jjj
�|�d�|j��|�|�	�d�|�|jjj
�dS)Nr�r�s123��abc��r�rr+rrkrlrcr�rdr�r8r r�r:rJ)r%r5Zfut1r
r
r�test_pause_writing_2write�s




z6ProactorSocketTransportTests.test_pause_writing_2writecCs�|jdd�}|j��}||jjj_|�d�|j��|�|�	�d�|�
|jjj
�|�d�|j��|�|�	�d�|�
|jjj
�|�d�|j��|�|�	�d�|�|jjj
�dS)	Nr�r��1rps23r�r�r�r�r�r
r
r�test_pause_writing_3write�s






z6ProactorSocketTransportTests.test_pause_writing_3writecCsd|jdd�}|j��}|�d�||jjj_|�d�|j��|�	|�
�d�|�|jj
j�dS)Nr�r�svery large datar)r�rr+r@rrkrlrcr�rdr�r8r r�r:r�r
r
r�test_dont_pause_writings



z4ProactorSocketTransportTests.test_dont_pause_writingr)0�__name__�
__module__�__qualname__rr*r6r=rFrLrTrYr[r^r`rfrhrjrnr�patchrtrurxrzr}r~rr�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r��
__classcell__r
r
r&rr!sZ


	

	



		
8	rcs�eZdZ�fdd�Zd,dd�Zdd�Zdd	�Zd
d�Zdd
�Zdd�Z	dd�Z
dd�Ze�
d�dd��Zdd�Zdd�Zdd�Zdd�Zdd �Zd!d"�Zd#d$�Zd%d&�Zd'd(�Ze�
d)�d*d+��Z�ZS)-�ProactorDatagramTransportTestscsTt���|��|_t��|_|j|j_t�	t
j�|_tjt
j
d�|_d|jj_dS)N)Zspec_set�)rrrrrrrrrrr�DatagramProtocolr r!r"r�rlr$r&r
rrs



z$ProactorDatagramTransportTests.setUpNcCs8|rdnt|jj_t|j|j|j|d�}|�t|�|S)N��address)	r_r"�getpeernamerPrrr rr)r%r�rr
r
r�datagram_transports
�z1ProactorDatagramTransportTests.datagram_transportcCsBd}|��}|�|d�|�|jjj�|jjj|j|dd�dS�Nr?)�0.0.0.0i���addr)r��sendtorJrr:r1r"�r%rarr
r
r�test_sendto!s
�z*ProactorDatagramTransportTests.test_sendtocC�Ftd�}|��}|�|d�|�|jjj�|jjj|jddd�dSr�)r2r�r�rJrr:r1r"r�r
r
r�test_sendto_bytearray)�
�z4ProactorDatagramTransportTests.test_sendto_bytearraycCr�r�)�
memoryviewr�r�rJrr:r1r"r�r
r
r�test_sendto_memoryview1r�z5ProactorDatagramTransportTests.test_sendto_memoryviewcCsH|��}|j�d�|�dd�|�|jjj�|�dgt|j��dS)N)r?�r�i90rgr
)	r�re�appendr�r8r"r:rdr��r%rr
r
r�test_sendto_no_data9s�z2ProactorDatagramTransportTests.test_sendto_no_datacCsR|��}|j�d�t�|_|�dd�|�|jjj�|�	ddgt
|j��dS)N�r�r�r�r��r�r�)r�rer��objectrir�r8rr:rdr�r�r
r
r�test_sendto_bufferAs��z1ProactorDatagramTransportTests.test_sendto_buffercC�ptd�}|��}|j�d�t�|_|�|d�|�|jjj	�|�
ddgt|j��|�|jddt
�dS�Nr�r�r�r�rpr)r2r�rer�r�rir�r8rr:rdr��assertIsInstance�bytes�r%Zdata2rr
r
r�test_sendto_buffer_bytearrayL���z;ProactorDatagramTransportTests.test_sendto_buffer_bytearraycCr�r�)r�r�rer�r�rir�r8rr:rdr�r�r�r�r
r
r�test_sendto_buffer_memoryviewYr�z<ProactorDatagramTransportTests.test_sendto_buffer_memoryviewrocCs�d}t�}|jj_|��}t��|_|�|d�|�|jj	�|j�
|d�d|_d|_|�|�|�|�|�|�|�|�|�|�|j
�
d�dS)Nr?r
�'Fatal write error on datagram transportrp)Z123z!socket.sendto() raised exception.)�RuntimeErrorrr�rPr�rrrQrJr:r1rq�_addressrr)r%rsrarSrr
r
r�test_sendto_exceptionfs$
�




z4ProactorDatagramTransportTests.test_sendto_exceptioncCsLd}t|jj_|��}t��|_|�|d�|�|j	d�|�
|jj�dS)Nr?r
r)�ConnectionRefusedErrorr"r�rPr�rrrQrdrqr8r:r�r
r
r�test_sendto_error_received}s

z9ProactorDatagramTransportTests.test_sendto_error_receivedcCsPd}t|jj_|jdd�}t��|_|�|�|�	|jj
�|�|jj
j
�dS)Nr?�r�rpr�)r�rrkrPr�rrrQr�r8r:rJr �error_receivedr�r
r
r�$test_sendto_error_received_connected�s


zCProactorDatagramTransportTests.test_sendto_error_received_connectedcCs|��}|�t|jdd�dS)N�strr
)r�rH�	TypeErrorr�r�r
r
r�test_sendto_str�sz.ProactorDatagramTransportTests.test_sendto_strcCs"|jdd�}|�t|jdd�dS)Nr�r�sstr)r�r�)r�rH�
ValueErrorr�r�r
r
r�test_sendto_connected_addr�s
�z9ProactorDatagramTransportTests.test_sendto_connected_addrcCs@|jdd�}|��|�|jd�|�dd�|�|jd�dS)N)rpr�rpr?r�)r�rrdrqr�r�r
r
r�test_sendto_closing�s
z2ProactorDatagramTransportTests.test_sendto_closingcCsL|��}d|_|��|�|j�t�|j�|jj	�
�|jj�
d�dSrW)
r�rXrbr-rirr,rr"rr1r rwr�r
r
r�test__loop_writing_closing�sz9ProactorDatagramTransportTests.test__loop_writing_closingcCsHt�}|jj_|��}t��|_|j�	d�|�
�|j�|d�dS)N�r?r
r�)r�rr�rPr�rrrQrer�rbr1)r%rSrr
r
r�test__loop_writing_exception�s
�z;ProactorDatagramTransportTests.test__loop_writing_exceptioncCsBt|jj_|��}t��|_|j�	d�|�
�|�|jj�dS)Nr�)
r�rr�rPr�rrrQrer�rbr8r:r�r
r
r�!test__loop_writing_error_received�s

z@ProactorDatagramTransportTests.test__loop_writing_error_receivedcCsVt|jj_|jdd�}t��|_|j�	d�|�
�|�|jj�|�
|jjj�dS)Nr�r�r�)r�rrkrPr�rrrQrer�rbr8r:rJr r�r�r
r
r�,test__loop_writing_error_received_connection�s

zKProactorDatagramTransportTests.test__loop_writing_error_received_connectionz asyncio.base_events.logger.errorcCs8|jdd�}t�}|�|�|�|jjj�|��dS)Nr�r�)r�r�rQr8r r�r:r�)r%Zm_excrrSr
r
r�test_fatal_error_connected�s

z9ProactorDatagramTransportTests.test_fatal_error_connectedr)r�r�r�rr�r�r�r�r�r�r�r�rr�r�r�r�r�r�r�r�r�r�r�r�r�r
r
r&rr�s.
	

	
r�cs�eZdZ�fdd�Ze�d�dd��Zdd�Zdd	�Zd
d�Z	dd
�Z
dd�Zdd�Zdd�Z
dd�Ze�d�dd��Zdd�Zdd�Zdd�Zdd �Zd!d"�Zd#d$�Zd%d&�Zd'd(�Zd)d*�Zd+d,�Z�ZS)-�BaseProactorEventLoopTestsc	s�t���t��|_t��|_t��t��|_|_	tj
d|j|j	fd��#t�
d��t|j�|_Wd�n1s<wYWd�n1sKwY|�
|j�dS)N�)asyncio.proactor_events.socket.socketpair)rl�signal.set_wakeup_fd)rrrZmock_nonblocking_socketr"rrr�ssock�csockr�rr�set_event_loopr$r&r
rr�s



����z BaseProactorEventLoopTests.setUpr�cCs�t��t��f\}}|_t�d��
t|j�}Wd�n1s"wY|�|j|�|�|j|�|�	|j
d�|��dS)Nr�rp)rrrlr�rrZassertIs�_ssock�_csockrd�
_internal_fdsr)r%�
socketpairrrrr
r
rr6�s��z$BaseProactorEventLoopTests.test_ctorcCsb|j��|�|jjd�|�|jjj�|�|jjj�|�	|jj
�|�	|jj�d|j_dS)NrT)
r�_close_self_piperdrrJrrr:rr-rr�_closedr$r
r
r�test_close_self_pipe�s
z/BaseProactorEventLoopTests.test_close_self_pipecCsnt��|j_|j��|�|jjj�|�|jjj�|�|jj	�|jj�
�|j��|�|jjj�dSr)rrrrrrJr:rr-rr|r8r$r
r
rr}�s

z%BaseProactorEventLoopTests.test_closecCs,|j�|jt���}|�|t�t|�dSr)r�_make_socket_transportr"rrr�rrr<r
r
r�test_make_socket_transport	sz5BaseProactorEventLoopTests.test_make_socket_transportcCs6|j��|jj�|jd�|jjjj�|jj�dS�Ni)r�_loop_self_readingr�recvr1rrlrmr$r
r
r�test_loop_self_readings

�z1BaseProactorEventLoopTests.test_loop_self_readingcCsVt��}||j_|j�|�|�|jj�|jj	�
|jd�|jj	jj
�
|jj�dSr)rrrZ_self_reading_futurer
rJr.r:rrr1rrlrm)r%r4r
r
r�test_loop_self_reading_futs�z5BaseProactorEventLoopTests.test_loop_self_reading_futcCs6t��|j_t�|jj_|j��|�	|jjj
�dSr)rrrr�r_rrrPr
rJr:r$r
r
r� test_loop_self_reading_exceptions
z;BaseProactorEventLoopTests.test_loop_self_reading_exceptioncCs|j��|jj�d�dS)N�)rZ_write_to_selfrrkr1r$r
r
r�test_write_to_self#s
z-BaseProactorEventLoopTests.test_write_to_selfcCs|j�g�dSr)rZ_process_eventsr$r
r
r�test_process_events'�z.BaseProactorEventLoopTests.test_process_eventsr�cCs�t��}t��}|j_|j�||j�|�|j�|jdd}|�|j	j
�|j�t��}t��t��f|j_
t��}|j_||�|�|jj�|�|j�t�|j_||�|�|jjj�|�|jj�dSrG)rrr�	call_soon�_start_servingr"rJr:�	call_argsr�acceptr1r.rlr
r_rPrr�)r%rs�pfrrr4Zmake_trr
r
r�test_create_server*s"
z-BaseProactorEventLoopTests.test_create_servercCsdt��}t��}|j_|j�||j�|jdd}|j��}|��||�|�	|jj
j�dSrG)rrrrrr"rr+r�rJrr:)r%rrrr4r
r
r�test_create_server_cancelFs
z4BaseProactorEventLoopTests.test_create_server_cancelcCs�t��}t��}t��}t��}|��||��|i|j_|j�|�|�|jj�|�|j	j�|j
j�|�|�|jj�|�|j	j�dSr)
rrr�rZ_accept_futuresZ
_stop_servingrJrr:r�rr1r8)r%Zsock1Zfuture1Zsock2Zfuture2r
r
r�test_stop_servingSs�z,BaseProactorEventLoopTests.test_stop_servingcCs t�tj�|_|j�|j|j�Sr)rrrr�r rZ_make_datagram_transportr"r$r
r
rr�dsz-BaseProactorEventLoopTests.datagram_transportcCs.|��}|�|t�|�|tj�t|�dSr)r�r�rrZDatagramTransportrr<r
r
r�test_make_datagram_transporthsz7BaseProactorEventLoopTests.test_make_datagram_transportcCsV|��}|j�d�|��|jjjj|jddd�|jjjj	j
�|j�t|�dS)N�r?��	127.0.0.1i$/r?r r�)r�re�
appendleftrbrrr�r1r"rlrmrr<r
r
r�test_datagram_loop_writingns
z5BaseProactorEventLoopTests.test_datagram_loop_writingcCsP|��}|��|jjj�|jd�|�|jj	j
�|�|jjj
�t|�dS)N�)
r�r7rr�recvfromr1r"r8r �datagram_receivedr:r�rr<r
r
r�test_datagram_loop_readingxsz5BaseProactorEventLoopTests.test_datagram_loop_readingcCs\|j��}|�d�|��}||_|�|�|jjj�|j	d�|j
j�dd�t|�dS)Nrr$r?r )
rr+r@r�rBr7rr%r1r"r r&rrKr
r
r�test_datagram_loop_reading_data�s


z:BaseProactorEventLoopTests.test_datagram_loop_reading_datacCs�|j��}|�d�|��}|�t|j|�t��|_	||_
|�|�|�|jjj
j�|�|jjj�|�|j	j�t|�dS)N)rgr )rr+r@r�rHrIr7rrrrBrJrr%r:r8r r�rrKr
r
r�"test_datagram_loop_reading_no_data�s



z=BaseProactorEventLoopTests.test_datagram_loop_reading_no_datacCsRt�}|jjj_|��}t��|_t��|j	_
|��|j	j
�|�t
|�dSr)rOrrr%rPr�rrrQ�	_protocolr�r7r1rrRr
r
r�"test_datagram_loop_reading_aborted�s
z=BaseProactorEventLoopTests.test_datagram_loop_reading_abortedcCs^t�}|jjj_|��}t��|_t��|j	_
|j�d�|�
�|j	j
�|�t|�dS)N)sHellor )rOrrr�rPr�rrrQr*r�rer"rbr1rrRr
r
r�"test_datagram_loop_writing_aborted�s
z=BaseProactorEventLoopTests.test_datagram_loop_writing_aborted)r�r�r�rrr�r6r	r}rrrrrrrrrr�rr#r'r(r)r+r,r�r
r
r&rr��s0

	



r��win32z%Proactor is supported on Windows onlycs�eZdZddZGdd�dej�Ze�fdd��Ze�fdd��Z	�fd	d
�Z
ddd
�Zdd�Zdd�Z
dd�Zdd�Zdd�Z�ZS)�&ProactorEventLoopUnixSockSendfileTestss�12345abcde12345abcde12345abcde12345abcde12345abcde12345abcde12345abcde12345abcde12345abcde12345abcde12345abcde12345abcde12345abcde12345abcde12345abcde12345abcde�c@s4eZdZdd�Zdd�Zdd�Zdd�Zd	d
�ZdS)z.ProactorEventLoopUnixSockSendfileTests.MyProtocCs(d|_d|_t�|_|��|_d|_dSrZ)�started�closedr2rar+r4r)r%rr
r
r�__init__�s


z7ProactorEventLoopUnixSockSendfileTests.MyProto.__init__cCsd|_||_dSrW)r0rr�r
r
rr/�s
z>ProactorEventLoopUnixSockSendfileTests.MyProto.connection_madecCs|j�|�dSr)ra�extend)r%rar
r
rr9�rz<ProactorEventLoopUnixSockSendfileTests.MyProto.data_receivedcCsd|_|j�d�dSrW)r1r4r@)r%�excr
r
rrw�sz>ProactorEventLoopUnixSockSendfileTests.MyProto.connection_lostc�s�|jIdHdSr)r4r$r
r
r�wait_closed�s�z:ProactorEventLoopUnixSockSendfileTests.MyProto.wait_closedN)r�r�r�r2r/r9rwr5r
r
r
r�MyProto�sr6csFttjd��}|�|j�Wd�n1swYt���dS)N�wb)�openr�TESTFNrc�DATAr�
setUpClass)�cls�fpr&r
rr;�s�z1ProactorEventLoopUnixSockSendfileTests.setUpClasscst�tj�t���dSr)r�unlinkr9r�
tearDownClass)r<r&r
rr?�sz4ProactorEventLoopUnixSockSendfileTests.tearDownClasscsNt��|_|�|j�|�|jj�ttjd�|_	|�|j	j�t
���dS)N�rb)rZProactorEventLooprrrrr8rr9�filerrr$r&r
rr�s
z,ProactorEventLoopUnixSockSendfileTests.setUpTcCsRt�tjtj�}|�d�|�tjtjd�|�tjtjd�|r'|�|j	�|S)NFr/)
r!�AF_INET�SOCK_STREAM�setblocking�
setsockopt�
SOL_SOCKET�	SO_SNDBUF�	SO_RCVBUFrr)r%�cleanupr"r
r
r�make_socket�s
z2ProactorEventLoopUnixSockSendfileTests.make_socketcCs|j�|�Sr)rZrun_until_complete)r%�coror
r
r�run_loop�sz/ProactorEventLoopUnixSockSendfileTests.run_loopcs����}���j��t��}�jdd�}|�d|f����jj�fdd�|d������j�||�	������fdd�}��
|�|�fS)	NF)rIr!cs�Srr
r
)�protor
r�<lambda>�sz@ProactorEventLoopUnixSockSendfileTests.prepare.<locals>.<lambda>)r"cs<�jdur�j�����������������dSr)rrrLr5r
�rMr%Zserverr
rrI�s


z?ProactorEventLoopUnixSockSendfileTests.prepare.<locals>.cleanup)rJr6rr	Zfind_unused_port�bindrL�
create_serverZsock_connect�getsocknamer)r%r"�portZsrv_sockrIr
rOr�prepare�s
�

z.ProactorEventLoopUnixSockSendfileTests.preparec	Csn|��\}}t�}|�tjd��|�|j�||dd��Wd�n1s'wY|�|j	�
�d�dS�N�not a regular filer)rTr��assertRaisesRegexr�SendfileNotAvailableErrorrLr�_sock_sendfile_nativerdrA�tell�r%r"rMr�r
r
r�test_sock_sendfile_not_a_files���zDProactorEventLoopUnixSockSendfileTests.test_sock_sendfile_not_a_filec	Csp|��\}}t��}|�tjd��|�|j�||dd��Wd�n1s(wY|�	|j
��d�dSrU)rT�io�BytesIOrWrrXrLrrYrdrArZr[r
r
r�test_sock_sendfile_iobuffers���zBProactorEventLoopUnixSockSendfileTests.test_sock_sendfile_iobufferc	Csx|��\}}t��}d|j_|�tjd��|�|j	�
||dd��Wd�n1s,wY|�|j�
�d�dS)Nr�rVr)rTrrr�rlrWrrXrLrrYrdrArZr[r
r
r�#test_sock_sendfile_not_regular_files���zJProactorEventLoopUnixSockSendfileTests.test_sock_sendfile_not_regular_file)T)r�r�r�r:rrr6�classmethodr;r?rrJrLrTr\r_r`r�r
r
r&rr.�s
			r.�__main__)�__doc__r]r!Zunittest�sysrrZasyncio.proactor_eventsrrrrrZtest.supportrr	Ztest.test_asyncior
rrrZTestCaserr�r�ZskipIf�platformr.r��mainr
r
r
r�<module>s@	pKY�n�