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_sendfile.cpython-38.pyc
U

/D�g�N�@s�dZddlZddlZddlZddlZddlZddlZddlmZddlmZddlm	Z	ddl
mZddlm
ZzddlZWnek
r�dZYnXdd	�ZGd
d�dej�ZGdd
�d
ej�ZGdd�d�ZGdd�de�ZGdd�de�ZGdd�dee�Zejdk�r8Gdd�deej�ZGdd�deej�Zn|ddlZeed��r`Gdd�deej�Zeed��r�Gdd �d eej�Z eed!��r�Gd"d#�d#eej�Z!Gd$d�deej�ZdS)%z!Tests for sendfile functionality.�N)�base_events)�	constants)�mock)�support)�utilscCst�d�dS�N)�asyncioZset_event_loop_policy�r	r	�>/opt/cppython/lib/python3.8/test/test_asyncio/test_sendfile.py�tearDownModulesrcs>eZdZd
dd�Zdd�Zdd�Zd	d
�Z�fdd�Z�ZS)�MySendfileProtoNrcCs@d|_d|_d|_|dk	r.|��|_|��|_t�|_||_dS)N�INITIALr)	�	transport�state�nbytes�
create_future�	connected�done�	bytearray�data�close_after)�self�looprr	r	r
�__init__s

zMySendfileProto.__init__cCs6||_|jdkst|j��d|_|jr2|j�d�dS)Nr
�	CONNECTED)rr�AssertionErrorr�
set_result�rrr	r	r
�connection_made%s
zMySendfileProto.connection_madecCs|jdkst|j��d|_dS)Nr�EOF)rr�rr	r	r
�eof_received,szMySendfileProto.eof_receivedcCs0|jdkst|j��d|_|jr,|j�d�dS)N)rrZCLOSED)rrrr�r�excr	r	r
�connection_lost0szMySendfileProto.connection_lostcs^|jdkst|j��|jt|�7_|j�|�t��|�|jrZ|j|jkrZ|j	�
�dS)Nr)rrr�lenr�extend�super�
data_receivedrr�close�rr��	__class__r	r
r(6szMySendfileProto.data_received)Nr)	�__name__�
__module__�__qualname__rrr!r$r(�
__classcell__r	r	r+r
rs


rc@s4eZdZdd�Zdd�Zdd�Zdd�Zd	d
�ZdS)�MyProtocCs(d|_d|_t�|_|��|_d|_dS�NF)�started�closedrrr�futr)rrr	r	r
rAs

zMyProto.__init__cCsd|_||_dS�NT)r3rrr	r	r
rHszMyProto.connection_madecCs|j�|�dSr)rr&r*r	r	r
r(LszMyProto.data_receivedcCsd|_|j�d�dSr6)r4r5rr"r	r	r
r$OszMyProto.connection_lostc�s|jIdHdSr)r5r r	r	r
�wait_closedSszMyProto.wait_closedN)r-r.r/rrr(r$r7r	r	r	r
r1?s
r1csdeZdZddZdZdd�Ze�fdd��Ze�fdd	��Z�fd
d�Z	�fdd
�Z
dd�Z�ZS)�SendfileBasesSendfileBaseDatai �cCst�dSr)�NotImplementedErrorr r	r	r
�create_event_loop_szSendfileBase.create_event_loopc	s2ttjd��}|�|j�W5QRXt���dS)N�wb)�openr�TESTFN�write�DATAr'�
setUpClass)�cls�fpr+r	r
rAbszSendfileBase.setUpClasscst�tj�t���dSr)r�unlinkr>r'�
tearDownClass�rBr+r	r
rEhszSendfileBase.tearDownClasscs@ttjd�|_|�|jj�|��|_|�|j�t	��
�dS)N�rb)r=rr>�file�
addCleanupr)r;rZset_event_loopr'�setUpr r+r	r
rJms

zSendfileBase.setUpcs4|j��st�|j�|��t��t���dSr)	rZ	is_closed�
test_utilsZrun_brieflyZ
doCleanupsr�
gc_collectr'�tearDownr r+r	r
rMts

zSendfileBase.tearDowncCs|j�|�Sr)r�run_until_complete)r�coror	r	r
�run_loop}szSendfileBase.run_loop)
r-r.r/r@�BUF_SIZEr;�classmethodrArErJrMrPr0r	r	r+r
r8Ws	r8csteZdZe�fdd��Ze�fdd��Zddd�Zdd	�Zddd�Zd
d�Z	dd�Z
dd�Zdd�Zdd�Z
�ZS)�SockSendfileMixincstj|_dt_t���dS)Ni@)r�!SENDFILE_FALLBACK_READBUFFER_SIZE�_SockSendfileMixin__old_bufsizer'rArFr+r	r
rA�szSockSendfileMixin.setUpClasscs|jt_t���dSr)rUrrTr'rErFr+r	r
rE�szSockSendfileMixin.tearDownClassTcCs.t�tjtj�}|�d�|r*|�|j�|Sr2)�socket�AF_INET�SOCK_STREAM�setblockingrIr))r�cleanup�sockr	r	r
�make_socket�s

zSockSendfileMixin.make_socketcCs|�tjtj|j�dSr)�
setsockoptrV�
SOL_SOCKET�	SO_RCVBUFrQ)rr[r	r	r
�reduce_receive_buffer_size�sz,SockSendfileMixin.reduce_receive_buffer_sizeNcCs.|�tjtj|j�|dk	r*|j|jd�dS)N)�high)r]rVr^�	SO_SNDBUFrQZset_write_buffer_limits)rr[rr	r	r
�reduce_send_buffer_size�sz)SockSendfileMixin.reduce_send_buffer_sizecs�t�j��t��}�jdd�}|�tj|f����jj�fdd�|d�����	|����}���j�
|d|f����|����fdd�}��|�|�fS)	NF)rZcs�Srr	r	)�protor	r
�<lambda>��z8SockSendfileMixin.prepare_socksendfile.<locals>.<lambda>)r[z	127.0.0.1cs<�jdk	r"�j�����������������dSr)rr)rPr7r	�rdr�serverr	r
rZ�s


z7SockSendfileMixin.prepare_socksendfile.<locals>.cleanup)
r1rr�find_unused_portr\�bind�HOSTrP�
create_serverr`Zsock_connectrcrI)r�port�srv_sockr[rZr	rgr
�prepare_socksendfile�s


�



z&SockSendfileMixin.prepare_socksendfilecCsv|��\}}|�|j�||j��}|��|�|���|�|t|j	��|�|j
|j	�|�|j��t|j	��dSr)rorPr�
sock_sendfilerHr)r7�assertEqualr%r@r�tell�rr[rd�retr	r	r
�test_sock_sendfile_success�sz,SockSendfileMixin.test_sock_sendfile_successcCsv|��\}}|�|j�||jdd��}|��|�|���|�|j|j	dd��|�|j�
�d�|�|d�dS)N��i�i�)rorPrrprHr)r7rqrr@rrrsr	r	r
�(test_sock_sendfile_with_offset_and_count�s�z:SockSendfileMixin.test_sock_sendfile_with_offset_and_countc	Csp|��\}}t���}|�|j�||dd��}W5QRX|��|�|���|�|d�|�|j	�
�d�dS)Nr)ro�tempfile�
TemporaryFilerPrrpr)r7rqrHrr)rr[rd�frtr	r	r
�test_sock_sendfile_zero_size�s
�z.SockSendfileMixin.test_sock_sendfile_zero_sizecCs�dd}|��\}}|�|j�||��|�|j�||j��}|�|j�||��|��|�|���|�|t	|j
��||j
|}|�|j|�|�|j��t	|j
��dS)Nsmix_regular_sendr9)
rorPrZsock_sendallrprHr)r7rqr%r@rrr)r�bufr[rdrtZexpectedr	r	r
�(test_sock_sendfile_mix_with_regular_send�sz:SockSendfileMixin.test_sock_sendfile_mix_with_regular_send)T)N)r-r.r/rRrArEr\r`rcrorurwr{r}r0r	r	r+r
rS�s



rSc@s�eZdZddd�dd�Ze�ejdkd�dd	��Zd
d�Z	dd
�Z
dd�Zdd�Zdd�Z
dd�Zdd�Zdd�Zdd�Zdd�Zdd�Zd d!�Zd"d#�Ze�eed$�d%�d&d'��Zd(d)�Zd*S)+�
SendfileMixinFr��is_sslrcs t��}t�j|d��|r:ts(��d�t��}t��}nd}d}t	�	t	j
t	j�}|�tj
|f����jj�fdd�||d�����|�|r�tj
}nd}t	�	t	j
t	j�}|�tj
|f�t�jd�����jj�fdd�|||d��\}	}
�j||	d	�����fd
d�}��|���fS)N)rrz
No ssl modulecs�Srr	r	)�	srv_protor	r
rerfz0SendfileMixin.prepare_sendfile.<locals>.<lambda>)r[�ssl)rcs�Srr	r	)�	cli_protor	r
re
rf)r[r��server_hostname)rcsF�j���j�����j����j����������dSr)rr)rPrr7r	�r�rrhr�r	r
rZs

z/SendfileMixin.prepare_sendfile.<locals>.cleanup)rrirrr��skipTestrKZsimple_server_sslcontextZsimple_client_sslcontextrVrWrXrjrkrPrlr`�connect�create_connectionrcrI)rr�rrmZsrv_ctxZcli_ctxrnr�Zcli_sock�tr�prrZr	r�r
�prepare_sendfile�sF�



�


�	
zSendfileMixin.prepare_sendfile�win32zUDP sockets are not supportedc	Csr|�|jjtjtjd��\}}zD|�t	d��|�|j�
||j��W5QRX|�d|j�
��W5|��XdS)N)�family�
not supportedr)rPrZcreate_datagram_endpointrZDatagramProtocolrVrWr)�assertRaisesRegex�RuntimeError�sendfilerHrqrr)rr�r�r	r	r
�test_sendfile_not_supporteds���z)SendfileMixin.test_sendfile_not_supportedcCs�|��\}}|�|j�|j|j��}|j��|�|j�|�|t	|j
��|�|jt	|j
��|�|j|j
�|�|j�
�t	|j
��dSr�r�rPrr�rrHr)rrqr%r@rrrr�rr�r�rtr	r	r
�
test_sendfile,s�
zSendfileMixin.test_sendfilecs����\}}�fdd�}|�j_���j�|j�j��}|j����|j���	|t
�j����	|jt
�j����	|j
�j���	�j��t
�j��dS)Ncstj��j||||�Sr�rZ
BaseEventLoop�_sendfile_nativer�ZtransprH�offset�countr r	r
�sendfile_native:s�zCSendfileMixin.test_sendfile_force_fallback.<locals>.sendfile_native)r�rr�rPr�rrHr)rrqr%r@rrrr)rr�r�r�rtr	r r
�test_sendfile_force_fallback7s�
z*SendfileMixin.test_sendfile_force_fallbackc	s�tjdkr"t�jtj�r"��d����\}}�fdd�}|�j_��	tj
d��"���jj|j
�jdd��W5QRX|j
����|j���|jd����j��d�dS)	Nr�zFails on proactor event loopcstj��j||||�Srr�r�r r	r
r�Ps�zMSendfileMixin.test_sendfile_force_unsupported_native.<locals>.sendfile_nativer�F��fallbackr)�sys�platform�
isinstancerr�ProactorEventLoopr�r�r�r�ZSendfileNotAvailableErrorrPr�rrHr)rrqrrr)rr�r�r�r	r r
�&test_sendfile_force_unsupported_nativeJs$

���
z4SendfileMixin.test_sendfile_force_unsupported_nativecCs�|jdd�\}}|�|j�|j|j��}|j��|�|j�|�|t	|j
��|�|jt	|j
��|�|j|j
�|�|j�
�t	|j
��dS)NT�r�r�r�r	r	r
�test_sendfile_sslbs�
zSendfileMixin.test_sendfile_sslc	Csv|��\}}|j��|�td��|�|j�|j|j��W5QRX|�|j	�|�
|jd�|�
|j��d�dS)Nz
is closingr)
r�rr)r�r�rPrr�rHrrqrrr�rr�r�r	r	r
� test_sendfile_for_closing_transpms
"z.SendfileMixin.test_sendfile_for_closing_transpcCs�|��\}}dd}dd}|j�|�|�|j�|j|j��}|j�|�|j��|�|j�|�	|t
|j��|�	|j||j|�|�	|j�
�t
|j��dS)NsPREFIX__�s--SUFFIX�r�rr?rPrr�rHr)rrqr%r@rrr�rr�r�ZPREFIXZSUFFIXrtr	r	r
�test_sendfile_pre_and_post_datavs�
z-SendfileMixin.test_sendfile_pre_and_post_datacCs�|jdd�\}}dd}dd}|j�|�|�|j�|j|j��}|j�|�|j��|�|j�|�	|t
|j��|�	|j||j|�|�	|j�
�t
|j��dS)NTr�szxcvbnmr�s
0987654321r�r�r	r	r
�#test_sendfile_ssl_pre_and_post_data�s�
z1SendfileMixin.test_sendfile_ssl_pre_and_post_datacCs�|��\}}|�|j�|j|jdd��}|j��|�|j�|�|d�|�|j	d�|�|j
|jdd��|�|j��d�dS)Nrv�d�L�
r�rPrr�rrHr)rrqrrr@rrr�r	r	r
�test_sendfile_partial�s�
z#SendfileMixin.test_sendfile_partialcCs�|jdd�\}}|�|j�|j|jdd��}|j��|�|j�|�|d�|�|j	d�|�|j
|jdd��|�|j��d�dS)NTr�rvr�r�r�r�r	r	r
�test_sendfile_ssl_partial�s�
z'SendfileMixin.test_sendfile_ssl_partialcCs�|jt|j�d�\}}|�|j�|j|j��}|j��|�|j	�|�
|t|j��|�
|jt|j��|�
|j|j�|�
|j�
�t|j��dS)N�r)r�r%r@rPrr�rrHr)rrqrrrrr�r	r	r
�(test_sendfile_close_peer_after_receiving�s�
�
z6SendfileMixin.test_sendfile_close_peer_after_receivingcCs�|jdt|j�d�\}}|�|j�|j|j��}|�|j�|�	|t|j��|�	|j
t|j��|�	|j|j�|�	|j��t|j��dS)NTr)
r�r%r@rPrr�rrHrrqrrrrr�r	r	r
�,test_sendfile_ssl_close_peer_after_receiving�s�
�z:SendfileMixin.test_sendfile_ssl_close_peer_after_receivingc	Cs�|jdd�\}}|�t��|�|j�|j|j��W5QRX|�|j�|�	d|j
koht|j�kn|j
�|�	d|j�
�ko�t|j�kn|j�
��|�	|j���dS)Nr�r�)r��assertRaises�ConnectionErrorrPrr�rrHr�
assertTruerr%r@rr�
is_closingr�r	r	r
�3test_sendfile_close_peer_in_the_middle_of_receiving�s�"�&�zASendfileMixin.test_sendfile_close_peer_in_the_middle_of_receivingc	s��fdd�}|�j_�jdd�\}}��t�����j�|j�j��W5QRX��|j	���
d|jko|t�j
�kn|j���
d�j��ko�t�j
�kn�j���dS)Ncstj��j||||�Srr�r�r r	r
r��s�zcSendfileMixin.test_sendfile_fallback_close_peer_in_the_middle_of_receiving.<locals>.sendfile_nativer�r�)rr�r�r�r�rPr�rrHrr�rr%r@rr)rr�r�r�r	r r
�<test_sendfile_fallback_close_peer_in_the_middle_of_receiving�s�"�&�zJSendfileMixin.test_sendfile_fallback_close_peer_in_the_middle_of_receivingr�z"Don't have native sendfile supportc	s����\}��j������fdd�}�j�|��}������td���j�d�W5QRX��|�}��	|t
�j��dS)Nc�s"��d��j��j�j�IdHSr)rrr�rrHr	�r�r5rr	r
rO�s
z=SendfileMixin.test_sendfile_prevents_bare_write.<locals>.corozsendfile is in progresssdata)r�rrZcreate_taskrPr�r�rr?rqr%r@)rr�rO�trtr	r�r
�!test_sendfile_prevents_bare_write�s

�
z/SendfileMixin.test_sendfile_prevents_bare_writec	CsTt��}dd�|j_tjj|_|�t	d�� |j
�|j
j|ddd��W5QRXdS)NcSsdSr2r	r	r	r	r
re�rfzPSendfileMixin.test_sendfile_no_fallback_for_fallback_transport.<locals>.<lambda>zfallback is disabledFr�)
rZMockr�Zside_effectrZ
_SendfileModeZFALLBACKZ_sendfile_compatibler�r�rrNr�rr	r	r
�0test_sendfile_no_fallback_for_fallback_transport�s
�z>SendfileMixin.test_sendfile_no_fallback_for_fallback_transportN)r-r.r/r��unittestZskipIfr�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r��hasattr�osr�r�r	r	r	r
r~�s*+
	
�
r~c@seZdZdS)�SendfileTestsBaseN)r-r.r/r	r	r	r
r��sr�r�c@seZdZdd�ZdS)�SelectEventLoopTestscCst��Sr)r�SelectorEventLoopr r	r	r
r;s�&SelectEventLoopTests.create_event_loopN�r-r.r/r;r	r	r	r
r�sr�c@seZdZdd�ZdS)�ProactorEventLoopTestscCst��Sr)rr�r r	r	r
r;
sz(ProactorEventLoopTests.create_event_loopNr�r	r	r	r
r�sr��KqueueSelectorc@seZdZdd�ZdS)�KqueueEventLoopTestscCst�t���Sr)rr��	selectorsr�r r	r	r
r;s�z&KqueueEventLoopTests.create_event_loopNr�r	r	r	r
r�sr��
EpollSelectorc@seZdZdd�ZdS)�EPollEventLoopTestscCst�t���Sr)rr�r�r�r r	r	r
r;sz%EPollEventLoopTests.create_event_loopNr�r	r	r	r
r�sr��PollSelectorc@seZdZdd�ZdS)�PollEventLoopTestscCst�t���Sr)rr�r�r�r r	r	r
r;#sz$PollEventLoopTests.create_event_loopNr�r	r	r	r
r� sr�c@seZdZdd�ZdS)r�cCst�t���Sr)rr�r��SelectSelectorr r	r	r
r;*sr�Nr�r	r	r	r
r�'s)"�__doc__rr�rVr�rxr�rrr�testrZtest.test_asynciorrKr��ImportErrorrZProtocolrr1r8rSr~r�r�ZTestCaser�r�r�r�r�r�r�r	r	r	r
�<module>s^
&*m������