HEX
Server: LiteSpeed
System: Linux server.nevid-deploma.com 4.18.0-553.111.1.lve.el8.x86_64 #1 SMP Fri Mar 13 13:42:17 UTC 2026 x86_64
User: smilepac (1037)
PHP: 8.1.34
Disabled: NONE
Upload Files
File: //opt/cppython/lib/python3.8/test/test_asyncio/__pycache__/test_proactor_events.cpython-38.pyc
U

/D�g'��@sdZddlZddlZddlZddlZddlmZddlZddlmZddlm	Z	ddlm
Z
ddlmZddlmZdd	l
mZdd
lmZdd�Zd
d�ZGdd�dej�ZGdd�dej�ZGdd�dej�Ze�ejdkd�Gdd�dej��Zedk�re��dS)zTests for proactor_events.py�N)�mock)�BaseProactorEventLoop)�_ProactorSocketTransport)�_ProactorWritePipeTransport)�_ProactorDuplexPipeTransport)�_ProactorDatagramTransport)�support)�utilscCst�d�dS�N)�asyncioZset_event_loop_policy�rr�E/opt/cppython/lib/python3.8/test/test_asyncio/test_proactor_events.py�tearDownModulesrcCs"|jdkrdS|j��d|_dSr
)�_sock�close)�	transportrrr
�close_transports

rcsbeZdZ�fdd�ZdRdd�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.�Ze�d/�d0d1��Zd2d3�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+�Z,S)S�ProactorSocketTransportTestscsVt���|��|_|�|jj�t��|_|j|j_	t
�tj
�|_t�tj�|_dSr
)�super�setUp�
new_test_loop�loop�
addCleanuprr�Mock�proactor�	_proactor�
test_utils�make_test_protocolr�Protocol�protocol�socket�sock��self��	__class__rr
r"s



z"ProactorSocketTransportTests.setUpNcCs&t|j|j|j|d�}|�t|�|S)N��waiter)rrr!rrr)r#r'rrrr
�socket_transport+s
�z-ProactorSocketTransportTests.socket_transportcCsR|j��}|j|d�}t�|j�|�|���|j�|�|j	j
�|jd�dS)Nr&��)
r�
create_futurer(r�run_briefly�assertIsNone�resultr�connection_mader�recv�assert_called_withr!�r#�fut�trrrr
�	test_ctor1s
z&ProactorSocketTransportTests.test_ctorcCsH|��}|��|jjj�|jd�|�|jj	j
�|�|jjj
�dS)Nr))r(�
_loop_readingrrr/r0r!�assertFalser�
data_received�called�eof_received�r#r3rrr
�test_loop_reading9s
z.ProactorSocketTransportTests.test_loop_readingcCsR|j��}|�d�|��}||_|�|�|jjj�|j	d�|j
j�d�dS)N�datar))rr*�
set_resultr(�	_read_futr5rr/r0r!rr7�r#�resr3rrr
�test_loop_reading_data@s


z3ProactorSocketTransportTests.test_loop_reading_datacCsz|j��}|�d�|��}|�t|j|�t��|_	||_
|�|�|�|jjj
j�|�|jjj�|�|j	j�dS�N�)rr*r=r(�assertRaises�AssertionErrorr5rrrr>r6rr/r8�
assertTruerr9r?rrr
�test_loop_reading_no_dataJs



z6ProactorSocketTransportTests.test_loop_reading_no_datacCs>t�}|jjj_|��}t��|_|�	�|j�
|d�dS�Nz"Fatal read error on pipe transport)�ConnectionAbortedErrorrrr/�side_effectr(rr�_fatal_errorr5r0�r#�errr3rrr
�test_loop_reading_abortedXs
�z6ProactorSocketTransportTests.test_loop_reading_abortedcCs@t�|jjj_|��}d|_t��|_	|�
�|�|j	j�dS�NT)
rIrrr/rJr(�_closingrrrKr5r6r8r:rrr
�!test_loop_reading_aborted_closingbs
z>ProactorSocketTransportTests.test_loop_reading_aborted_closingcCs@t�|jjj_|��}d|_t��|_	|�
�|�|j	j�dS�NF)
rIrrr/rJr(rPrrrKr5rFr8r:rrr
�"test_loop_reading_aborted_is_fatalks
z?ProactorSocketTransportTests.test_loop_reading_aborted_is_fatalcCsZt�}|jjj_|��}d|_t��|_	t��|_
|��|�|j	j
�|j
�|�dSrR)�ConnectionResetErrorrrr/rJr(rPrrrK�_force_closer5r6r8r0rLrrr
�!test_loop_reading_conn_reset_lostss

z>ProactorSocketTransportTests.test_loop_reading_conn_reset_lostcCs>t�}|jjj_|��}t��|_|�	�|j�
|d�dSrH)�OSErrorrrr/rJr(rrrKr5r0rLrrr
�test_loop_reading_exception~s
�z8ProactorSocketTransportTests.test_loop_reading_exceptioncCs<|��}t��|_|�d�|�|jd�|jjdd�dS)Nr<)�data)r(rr�
_loop_writing�write�assertEqual�_bufferr0r:rrr
�
test_write�s


z'ProactorSocketTransportTests.test_writecCs"|��}|�d�|�|j�dSrB)r(r[r6r]r:rrr
�test_write_no_data�s
z/ProactorSocketTransportTests.test_write_no_datacCsF|��}t��|_t��|_|�d�|�|jd�|�|jj	�dS�Nr<)
r(rr�
_write_futrZr[r\r]r6r8r:rrr
�test_write_more�s


z,ProactorSocketTransportTests.test_write_morecCsH|��}td�|_|��|jjj�|jd�|jjjj	j
�|j�dSr`)r(�	bytearrayr]rZrr�sendr0r!�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.)rWrrrdrJr(rrrKr]rZr0�
_conn_lostr[r\�warning)r#�m_logrMr3rrr
�test_loop_writing_err�s"

�




z2ProactorSocketTransportTests.test_loop_writing_errcCs<|j��}|�d�|��}||_|�|�|�|j�dSr`)rr*r=r(rarZr,r1rrr
�test_loop_writing_stop�s


z3ProactorSocketTransportTests.test_loop_writing_stopcCs^|j��}|�d�|��}||_|��|�|�|�|j�t�	|j�|j
j�d�dS�Nri)
rr*r=r(rarrZr,rr+r�connection_lostr0r1rrr
�test_loop_writing_closing�s


z6ProactorSocketTransportTests.test_loop_writing_closingcCs*|��}t��|_|��|j�d�dSr
)r(rrrU�abortr0r:rrr
�
test_abort�s
z'ProactorSocketTransportTests.test_abortcCsz|��}|��t�|j�|jj�d�|�|�	��|�
|jd�|jj��|��t�|j�|�
|jjj�dSro)r(rrr+rrrpr0rF�
is_closingr\rj�
reset_mockr6r8r:rrr
�
test_close�sz'ProactorSocketTransportTests.test_closecCs:|��}t��|_|��t�|j�|�|j	j
j�dSr
)r(rrrarrr+rr6rrpr8r:rrr
�test_close_write_fut�s

z1ProactorSocketTransportTests.test_close_write_futcCs8|��}dg|_|��t�|j�|�|jjj	�dSr`)
r(r]rrr+rr6rrpr8r:rrr
�test_close_buffer�s
z.ProactorSocketTransportTests.test_close_buffer�asyncio.base_events.loggercCs<|��}t��|_|�d�|�|jj�|�|jj�dSr
)r(rrrUrKrFr8�error)r#Z	m_loggingr3r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<ri)r(r]rrr>rarU�cancelr0rr+rrrpr\rj)r#r3Zread_futZ	write_futrrr
�test_force_close�s


z-ProactorSocketTransportTests.test_force_closecCsft��}|j�|�|j��}|�d�||jj_|�	�}|�
d�|�d�t�
|j�|��dS)Nrir<)rrrZset_exception_handlerr*r=rrdrer(r[rUrr+�assert_not_called)r#Zexc_handlerr2r3rrr
�test_loop_writing_force_closes




z:ProactorSocketTransportTests.test_loop_writing_force_closecCs8|��}d|_|�d�t�|j�|�|jjj	�dSrO)
r(rPrUrr+rr6rrpr8r:rrr
�test_force_close_idempotents

z8ProactorSocketTransportTests.test_force_close_idempotentcCsF|��}dg|_|�d�t�|j�|jj�d�|�	d|j�dSr`)
r(r]rUrr+rrrpr0r\r:rrr
�test_fatal_error_2s
z/ProactorSocketTransportTests.test_fatal_error_2cCs6|��}|�d�|�|jjj�|�|jjj�dSr
)r(Z_call_connection_lostrFrrpr8r!rr:rrr
�test_call_connection_lost!s
z6ProactorSocketTransportTests.test_call_connection_lostcCsT|��}|�|���|��|jj�tj�|��|�	|jjj
d�|��dSro)r(rF�
can_write_eof�	write_eofr!�shutdownr0r �SHUT_WRr\Z
call_countrr:rrr
�test_write_eof'sz+ProactorSocketTransportTests.test_write_eofcCs�|��}|j��}||jjj_|�d�|��|�	|j
�|�|jj
j�|jjj�|jd�|�d�|j��|jj
�tj�|��dS�Nr<�)r(rr*�_looprrdrer[r�rFZ_eof_writtenr6r!r�r8r0r=�	_run_oncer r�r�r#r3�frrr
�test_write_eof_buffer0s



z2ProactorSocketTransportTests.test_write_eof_buffercCs\t|j|j|j�}|�|���|��|�|���|j��|�|jj	j
�|�	�dSr
)rrr!rrFr�r�rtr�rr8r:rrr
�test_write_eof_write_pipe>s�
z6ProactorSocketTransportTests.test_write_eof_write_pipecCs�t|j|j|j�}|j��}||jjj_|�	d�|�
�|�|���|�
|jjj�|jjj�|jd�|�d�|j��|j��|�|jjj�|��dSr�)rrr!rr*r�rrdrer[r�rFrtr6r�r8r0r=r�rr�rrr
� test_write_eof_buffer_write_pipeHs




z=ProactorSocketTransportTests.test_write_eof_buffer_write_pipec	CsJt|j|j|j�}|�|���|�t��|��W5QRXt	|�dSr
)
rrr!rr6r�rD�NotImplementedErrorr�rr:rrr
�test_write_eof_duplex_pipeWs�z7ProactorSocketTransportTests.test_write_eof_duplex_pipecCs�|��}g}dD]"}|j��}|�|�|�|�q||jjj_|j��|�	|j
�|�|���|j��|j
j�d�|j��|j
j�d�|��|��|�|j
�|�	|���td�D]}|j��q�|j
j�d�|��|��|�	|j
�|�|���|j��|j
j�d�|j��|j
j�d�|��|��t��|j_|j��|jj��|j
j�d�|��|�	|���dS)N)�data1�data2�data3�data4�data5rCr�r��
r�r�r�)r(rr*r=�appendrr/rJr�r6Z_pausedrFZ
is_readingrr7r0Z
pause_reading�rangeZresume_readingrr�call_exception_handlerr~r)r#r3�futures�msgr��irrr
�test_pause_resume_reading_sJ







z6ProactorSocketTransportTests.test_pause_resume_readingcCsH|��}|j|d�|�|��d�|�|jjj�|�|jjj�|S)N��highr)	r(Zset_write_buffer_limitsr\�get_write_buffer_sizer6r�
pause_writingr8�resume_writing)r#r�r3r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*rrdrer[r�rFrr�r8r=r\r�r��r#r3r2r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*rrdrer[r�r\r�r6rr�r8rF)r#r3Zfut1r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��1ris23r�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=rrdrer[r�r\r�r6rr�r8r�rrr
�test_dont_pause_writing�s



z4ProactorSocketTransportTests.test_dont_pause_writing)N)-�__name__�
__module__�__qualname__rr(r4r;rArGrNrQrSrVrXr^r_rbrgr�patchrmrnrqrsrvrwrxr{r}rr�r�r�r�r�r�r�r�r�r�r�r�r�r��
__classcell__rrr$r
r sR	


	

	


		
-	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�DatagramProtocolrr r!�filenorer"r$rr
r�s



z$ProactorDatagramTransportTests.setUpNcCs8|rdnt|jj_t|j|j|j|d�}|�t|�|S)N��address)	rWr!�getpeernamerJrrrrr)r#r�rrrr
�datagram_transport�s
�z1ProactorDatagramTransportTests.datagram_transportcCsBd}|��}|�|d�|�|jjj�|jjj|j|dd�dS�Nr<)�0.0.0.0i���addr)r��sendtorFrr8r0r!�r#rYrrrr
�test_sendto�s�z*ProactorDatagramTransportTests.test_sendtocCsFtd�}|��}|�|d�|�|jjj�|jjj|jddd�dSr�)rcr�r�rFrr8r0r!r�rrr
�test_sendto_bytearray�s�z4ProactorDatagramTransportTests.test_sendto_bytearraycCsFtd�}|��}|�|d�|�|jjj�|jjj|jddd�dSr�)�
memoryviewr�r�rFrr8r0r!r�rrr
�test_sendto_memoryview�s�z5ProactorDatagramTransportTests.test_sendto_memoryviewcCsH|��}|j�d�|�dd�|�|jjj�|�dgt|j��dS)N)r<�r�i90rCr)	r�r]r�r�r6r!r8r\�list�r#rrrr
�test_sendto_no_datas�z2ProactorDatagramTransportTests.test_sendto_no_datacCsR|��}|j�d�t�|_|�dd�|�|jjj�|�	ddgt
|j��dS)N�r�r�r�r��r�r�)r�r]r��objectrar�r6rr8r\r�r�rrr
�test_sendto_buffers��z1ProactorDatagramTransportTests.test_sendto_buffercCsptd�}|��}|j�d�t�|_|�|d�|�|jjj	�|�
ddgt|j��|�|jddt
�dS�Nr�r�r�r�rir)rcr�r]r�r�rar�r6rr8r\r��assertIsInstance�bytes�r#Zdata2rrrr
�test_sendto_buffer_bytearrays��z;ProactorDatagramTransportTests.test_sendto_buffer_bytearraycCsptd�}|��}|j�d�t�|_|�|d�|�|jjj	�|�
ddgt|j��|�|jddt
�dSr�)r�r�r]r�r�rar�r6rr8r\r�r�r�r�rrr
�test_sendto_buffer_memoryview&s��z<ProactorDatagramTransportTests.test_sendto_buffer_memoryviewrhcCs�d}t�}|jj_|��}t��|_|�|d�|�|jj	�|j�
|d�d|_d|_|�|�|�|�|�|�|�|�|�|�|j
�
d�dS)Nr<r�'Fatal write error on datagram transportri)Z123z!socket.sendto() raised exception.)�RuntimeErrorrr�rJr�rrrKrFr8r0rj�_addressrk)r#rlrYrMrrrr
�test_sendto_exception3s$
�




z4ProactorDatagramTransportTests.test_sendto_exceptioncCsLd}t|jj_|��}t��|_|�|d�|�|j	d�|�
|jj�dS)Nr<rr)�ConnectionRefusedErrorr!r�rJr�rrrKr\rjr6r8r�rrr
�test_sendto_error_receivedJs

z9ProactorDatagramTransportTests.test_sendto_error_receivedcCsPd}t|jj_|jdd�}t��|_|�|�|�	|jj
�|�|jj
j
�dS)Nr<�r�rir�)r�rrdrJr�rrrKr�r6r8rFr�error_receivedr�rrr
�$test_sendto_error_received_connectedVs


zCProactorDatagramTransportTests.test_sendto_error_received_connectedcCs|��}|�t|jdd�dS)N�strr)r�rD�	TypeErrorr�r�rrr
�test_sendto_strbsz.ProactorDatagramTransportTests.test_sendto_strcCs"|jdd�}|�t|jdd�dS)Nr�r�sstr)r��)r�rD�
ValueErrorr�r�rrr
�test_sendto_connected_addrfs�z9ProactorDatagramTransportTests.test_sendto_connected_addrcCs@|jdd�}|��|�|jd�|�dd�|�|jd�dS)N)rir�rir<r�)r�rr\rjr�r�rrr
�test_sendto_closingks
z2ProactorDatagramTransportTests.test_sendto_closingcCsL|��}d|_|��|�|j�t�|j�|jj	�
�|jj�
d�dSrO)
r�rPrZr,rarr+rr!rr0rrpr�rrr
�test__loop_writing_closingrsz9ProactorDatagramTransportTests.test__loop_writing_closingcCsHt�}|jj_|��}t��|_|j�	d�|�
�|j�|d�dS)N�r<rr�)r�rr�rJr�rrrKr]r�rZr0)r#rMrrrr
�test__loop_writing_exception{s
�z;ProactorDatagramTransportTests.test__loop_writing_exceptioncCsBt|jj_|��}t��|_|j�	d�|�
�|�|jj�dS)Nr�)
r�rr�rJr�rrrKr]r�rZr6r8r�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�rrdrJr�rrrKr]r�rZr6r8rFrr�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�rKr6rr�r8r~)r#Zm_excrrMrrr
�test_fatal_error_connected�s

z9ProactorDatagramTransportTests.test_fatal_error_connected)N)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$r
r��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�|_W5QRXW5QRX|�
|j�dS)N�)asyncio.proactor_events.socket.socketpair)re�signal.set_wakeup_fd)rrrZmock_nonblocking_socketr!rrr�ssock�csockr�rr�set_event_loopr"r$rr
r�s



� z BaseProactorEventLoopTests.setUpr�c	Cspt��t��f\}}|_t�d��t|j�}W5QRX|�|j|�|�|j|�|�	|j
d�|��dS)Nr�ri)rrrer�rrZassertIs�_ssock�_csockr\�
_internal_fdsr)r#�
socketpairr�r�rrrr
r4�s�z$BaseProactorEventLoopTests.test_ctorcCsb|j��|�|jjd�|�|jjj�|�|jjj�|�	|jj
�|�	|jj�d|j_dS)NrT)
r�_close_self_piper\r�rFr�rr8r�r,r�r��_closedr"rrr
�test_close_self_pipe�s
z/BaseProactorEventLoopTests.test_close_self_pipecCsnt��|j_|j��|�|jjj�|�|jjj�|�|jj	�|jj�
�|j��|�|jjj�dSr
)rrrr�rrFr8rr,rrur6r"rrr
rv�s

z%BaseProactorEventLoopTests.test_closecCs,|j�|jt���}|�|t�t|�dSr
)r�_make_socket_transportr!rrr�rrr:rrr
�test_make_socket_transport�sz5BaseProactorEventLoopTests.test_make_socket_transportcCs6|j��|jj�|jd�|jjjj�|jj�dS�Ni)r�_loop_self_readingrr/r0r�rerfr"rrr
�test_loop_self_reading�s

�z1BaseProactorEventLoopTests.test_loop_self_readingcCsVt��}||j_|j�|�|�|jj�|jj	�
|jd�|jj	jj
�
|jj�dSr�)rrrZ_self_reading_futurer�rFr-r8rr/r0r�rerf)r#r2rrr
�test_loop_self_reading_fut�s�z5BaseProactorEventLoopTests.test_loop_self_reading_futcCs6t��|j_t�|jj_|j��|�	|jjj
�dSr
)rrrr�rWrr/rJr�rFr8r"rrr
� test_loop_self_reading_exception�s
z;BaseProactorEventLoopTests.test_loop_self_reading_exceptioncCs|j��|jj�d�dS)N�)rZ_write_to_selfr�rdr0r"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�sz.BaseProactorEventLoopTests.test_process_eventsrycCs�t��}t��}|j_|j�||j�|�|j�|jdd}|�|j	j
�|j�t��}t��t��f|j_
t��}|j_||�|�|jj�|�|j�t�|j_||�|�|jjj�|�|jj�dS�Nr)rrr�	call_soon�_start_servingr!rFr8�	call_argsr�acceptr0r-rer�rWrJrrz)r#rl�pfrrr2Zmake_trrrr
�test_create_server�s"
z-BaseProactorEventLoopTests.test_create_servercCsdt��}t��}|j_|j�||j�|jdd}|j��}|��||�|�	|jj
j�dSr)rrrrrr!rr*r|rFrr8)r#rrrr2rrr
�test_create_server_cancels
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_servingrFrr8r|rr0r6)r#Zsock1Zfuture1Zsock2Zfuture2rrr
�test_stop_serving s�z,BaseProactorEventLoopTests.test_stop_servingcCs t�tj�|_|j�|j|j�Sr
)rrrr�rrZ_make_datagram_transportr!r"rrr
r�1sz-BaseProactorEventLoopTests.datagram_transportcCs |��}|�|t�t|�dSr
)r�r�rrr:rrr
�test_make_datagram_transport5sz7BaseProactorEventLoopTests.test_make_datagram_transportcCsV|��}|j�d�|��|jjjj|jddd�|jjjj	j
�|j�t|�dS)N�r<��	127.0.0.1i$/r<r
r�)r�r]�
appendleftrZrrr�r0r!rerfrr:rrr
�test_datagram_loop_writing:s�z5BaseProactorEventLoopTests.test_datagram_loop_writingcCsP|��}|��|jjj�|jd�|�|jj	j
�|�|jjj
�t|�dS)N�)
r�r5rr�recvfromr0r!r6r�datagram_receivedr8r�rr:rrr
�test_datagram_loop_readingDsz5BaseProactorEventLoopTests.test_datagram_loop_readingcCs\|j��}|�d�|��}||_|�|�|jjj�|j	d�|j
j�dd�t|�dS)Nrrr<r
)
rr*r=r�r>r5rrr0r!rrrr?rrr
�test_datagram_loop_reading_dataLs


z:BaseProactorEventLoopTests.test_datagram_loop_reading_datacCs�|j��}|�d�|��}|�t|j|�t��|_	||_
|�|�|�|jjj
j�|�|jjj�|�|j	j�t|�dS)N)rCr
)rr*r=r�rDrEr5rrrr>rFrrr8r6rr�rr?rrr
�"test_datagram_loop_reading_no_dataWs



z=BaseProactorEventLoopTests.test_datagram_loop_reading_no_datacCsRt�}|jjj_|��}t��|_t��|j	_
|��|j	j
�|�t
|�dSr
)rIrrrrJr�rrrK�	_protocolr�r5r0rrLrrr
�"test_datagram_loop_reading_abortedfs
z=BaseProactorEventLoopTests.test_datagram_loop_reading_abortedcCs^t�}|jjj_|��}t��|_t��|j	_
|j�d�|�
�|j	j
�|�t|�dS)N)sHellor
)rIrrr�rJr�rrrKrr�r]rrZr0rrLrrr
�"test_datagram_loop_writing_abortedps
z=BaseProactorEventLoopTests.test_datagram_loop_writing_aborted)r�r�r�rrr�r4r�rvr�r�r�r�rrrr	r
r�rrrrrrrr�rrr$r
r��s.

	



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|_dSrR)�started�closedrcrYr*r2r)r#rrrr
�__init__�s

z7ProactorEventLoopUnixSockSendfileTests.MyProto.__init__cCsd|_||_dSrO)rrr�rrr
r.�sz>ProactorEventLoopUnixSockSendfileTests.MyProto.connection_madecCs|j�|�dSr
)rY�extend)r#rYrrr
r7�sz<ProactorEventLoopUnixSockSendfileTests.MyProto.data_receivedcCsd|_|j�d�dSrO)rr2r=)r#�excrrr
rp�sz>ProactorEventLoopUnixSockSendfileTests.MyProto.connection_lostc�s|jIdHdSr
)r2r"rrr
�wait_closed�sz:ProactorEventLoopUnixSockSendfileTests.MyProto.wait_closedN)r�r�r�rr.r7rpr"rrrr
�MyProto�s
r#c	s2ttjd��}|�|j�W5QRXt���dS)N�wb)�openr�TESTFNr[�DATAr�
setUpClass)�cls�fpr$rr
r(�sz1ProactorEventLoopUnixSockSendfileTests.setUpClasscst�tj�t���dSr
)r�unlinkr&r�
tearDownClass)r)r$rr
r,�sz4ProactorEventLoopUnixSockSendfileTests.tearDownClasscsNt��|_|�|j�|�|jj�ttjd�|_	|�|j	j�t
���dS)N�rb)rZProactorEventLooprr�rrr%rr&�filerrr"r$rr
r�s
z,ProactorEventLoopUnixSockSendfileTests.setUpTcCsRt�tjtj�}|�d�|�tjtjd�|�tjtjd�|rN|�|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�sz/ProactorEventLoopUnixSockSendfileTests.run_loopcs����}���j��t��}�jdd�}|�d|f����jj�fdd�|d������j�||�	������fdd�}��
|�|�fS)	NF)r6rcs�Sr
rr)�protorr
�<lambda>�rCz@ProactorEventLoopUnixSockSendfileTests.prepare.<locals>.<lambda>)r!cs<�jdk	r"�j�����������������dSr
)rrr9r"r�r:r#Zserverrr
r6�s


z?ProactorEventLoopUnixSockSendfileTests.prepare.<locals>.cleanup)r7r#rrZfind_unused_port�bindr9�
create_serverZsock_connect�getsocknamer)r#r!�portZsrv_sockr6rr<r
�prepare�s

�

z.ProactorEventLoopUnixSockSendfileTests.preparec	CsZ|��\}}t�}|�tjd��|�|j�||dd��W5QRX|�|j	�
�d�dS�N�not a regular filer)rAr��assertRaisesRegexr�SendfileNotAvailableErrorr9r�_sock_sendfile_nativer\r.�tell�r#r!r:r�rrr
�test_sock_sendfile_not_a_file�s��zDProactorEventLoopUnixSockSendfileTests.test_sock_sendfile_not_a_filec	Cs\|��\}}t��}|�tjd��|�|j�||dd��W5QRX|�	|j
��d�dSrB)rA�io�BytesIOrDrrEr9rrFr\r.rGrHrrr
�test_sock_sendfile_iobuffer�s��zBProactorEventLoopUnixSockSendfileTests.test_sock_sendfile_iobufferc	Csd|��\}}t��}d|j_|�tjd��|�|j	�
||dd��W5QRX|�|j�
�d�dS)N���rCr)rArrr�rerDrrEr9rrFr\r.rGrHrrr
�#test_sock_sendfile_not_regular_file�s��zJProactorEventLoopUnixSockSendfileTests.test_sock_sendfile_not_regular_file)T)r�r�r�r'rrr#�classmethodr(r,rr7r9rArIrLrNr�rrr$r
r|s
			r�__main__)�__doc__rJr Zunittest�sysrrZasyncio.proactor_eventsrrrrr�testrZtest.test_asyncior	rrrZTestCaserr�r�ZskipIf�platformrr��mainrrrr
�<module>s:	>KX�n