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.opt-1.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)NZINITIALr)	�	transport�state�nbytes�
create_future�	connected�done�	bytearray�data�close_after)�self�looprr	r	r
�__init__s

zMySendfileProto.__init__cCs"||_d|_|jr|j�d�dS)NZ	CONNECTED)r
rr�
set_result�rr
r	r	r
�connection_made%szMySendfileProto.connection_madecCs
d|_dS)NZEOF)r�rr	r	r
�eof_received,szMySendfileProto.eof_receivedcCsd|_|jr|j�d�dS)NZCLOSED)rrr�r�excr	r	r
�connection_lost0szMySendfileProto.connection_lostcsJ|jt|�7_|j�|�t��|�|jrF|j|jkrF|j��dSr)	r�lenr�extend�super�
data_receivedrr
�close�rr��	__class__r	r
r$6s
zMySendfileProto.data_received)Nr)	�__name__�
__module__�__qualname__rrrr 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)r/r
rr	r	r
rHszMyProto.connection_madecCs|j�|�dSr)rr"r&r	r	r
r$LszMyProto.data_receivedcCsd|_|j�d�dSr2)r0r1rrr	r	r
r OszMyProto.connection_lostc�s|jIdHdSr)r1rr	r	r
�wait_closedSszMyProto.wait_closedN)r)r*r+rrr$r r3r	r	r	r
r-?s
r-csdeZdZddZdZdd�Ze�fdd��Ze�fdd	��Z�fd
d�Z	�fdd
�Z
dd�Z�ZS)�SendfileBasesSendfileBaseDatai �cCst�dSr)�NotImplementedErrorrr	r	r
�create_event_loop_szSendfileBase.create_event_loopc	s2ttjd��}|�|j�W5QRXt���dS)N�wb)�openr�TESTFN�write�DATAr#�
setUpClass)�cls�fpr'r	r
r=bszSendfileBase.setUpClasscst�tj�t���dSr)r�unlinkr:r#�
tearDownClass�r>r'r	r
rAhszSendfileBase.tearDownClasscs@ttjd�|_|�|jj�|��|_|�|j�t	��
�dS)N�rb)r9rr:�file�
addCleanupr%r7rZset_event_loopr#�setUprr'r	r
rFms

zSendfileBase.setUpcs4|j��st�|j�|��t��t���dSr)	rZ	is_closed�
test_utilsZrun_brieflyZ
doCleanupsr�
gc_collectr#�tearDownrr'r	r
rIts

zSendfileBase.tearDowncCs|j�|�Sr)r�run_until_complete)r�coror	r	r
�run_loop}szSendfileBase.run_loop)
r)r*r+r<�BUF_SIZEr7�classmethodr=rArFrIrLr,r	r	r'r
r4Ws	r4csteZdZe�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#r=rBr'r	r
r=�szSockSendfileMixin.setUpClasscs|jt_t���dSr)rQrrPr#rArBr'r	r
rA�szSockSendfileMixin.tearDownClassTcCs.t�tjtj�}|�d�|r*|�|j�|Sr.)�socket�AF_INET�SOCK_STREAM�setblockingrEr%)r�cleanup�sockr	r	r
�make_socket�s

zSockSendfileMixin.make_socketcCs|�tjtj|j�dSr)�
setsockoptrR�
SOL_SOCKET�	SO_RCVBUFrM)rrWr	r	r
�reduce_receive_buffer_size�sz,SockSendfileMixin.reduce_receive_buffer_sizeNcCs.|�tjtj|j�|dk	r*|j|jd�dS)N)�high)rYrRrZ�	SO_SNDBUFrMZset_write_buffer_limits)rrWr
r	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)rVcs�Srr	r	)�protor	r
�<lambda>��z8SockSendfileMixin.prepare_socksendfile.<locals>.<lambda>)rWz	127.0.0.1cs<�jdk	r"�j�����������������dSr)r
r%rLr3r	�r`r�serverr	r
rV�s


z7SockSendfileMixin.prepare_socksendfile.<locals>.cleanup)
r-rr�find_unused_portrX�bind�HOSTrL�
create_serverr\Zsock_connectr_rE)r�port�srv_sockrWrVr	rcr
�prepare_socksendfile�s


�



z&SockSendfileMixin.prepare_socksendfilecCsv|��\}}|�|j�||j��}|��|�|���|�|t|j	��|�|j
|j	�|�|j��t|j	��dSr)rkrLr�
sock_sendfilerDr%r3�assertEqualr!r<r�tell�rrWr`�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�)rkrLrrlrDr%r3rmrr<rnror	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)rk�tempfile�
TemporaryFilerLrrlr%r3rmrDrn)rrWr`�frpr	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_sendr5)
rkrLrZsock_sendallrlrDr%r3rmr!r<rrn)r�bufrWr`rpZexpectedr	r	r
�(test_sock_sendfile_mix_with_regular_send�sz:SockSendfileMixin.test_sock_sendfile_mix_with_regular_send)T)N)r)r*r+rNr=rArXr\r_rkrqrsrwryr,r	r	r'r
rO�s



rOc@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
rarbz0SendfileMixin.prepare_sendfile.<locals>.<lambda>)rW�ssl)rcs�Srr	r	)�	cli_protor	r
ra
rb)rWr~�server_hostname)r
csF�j���j�����j����j����������dSr)r
r%rLrr3r	�rrrdr}r	r
rVs

z/SendfileMixin.prepare_sendfile.<locals>.cleanup)rrerrr~�skipTestrGZsimple_server_sslcontextZsimple_client_sslcontextrRrSrTrfrgrLrhr\�connect�create_connectionr_rE)rr|rriZsrv_ctxZcli_ctxrjr�Zcli_sock�tr�prrVr	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)rLrZcreate_datagram_endpointrZDatagramProtocolrRrSr%�assertRaisesRegex�RuntimeError�sendfilerDrmrn)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�rLrr�r
rDr%rrmr!r<rrrn�rr}rrpr	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�ZtransprD�offset�countrr	r
�sendfile_native:s�zCSendfileMixin.test_sendfile_force_fallback.<locals>.sendfile_native)r�rr�rLr�r
rDr%rrmr!r<rrrn)rr}rr�rpr	rr
�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�rr	r
r�Ps�zMSendfileMixin.test_sendfile_force_unsupported_native.<locals>.sendfile_nativer�F��fallbackr)�sys�platform�
isinstancerr�ProactorEventLoopr�r�r�r�ZSendfileNotAvailableErrorrLr�r
rDr%rrmrrn)rr}rr�r	rr
�&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�r
r%r�r�rLrr�rDrrmrrn�rr}rr	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�r
r;rLrr�rDr%rrmr!r<rrn�rr}rZPREFIXZSUFFIXrpr	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)Nrr�d�L�
r�rLrr�r
rDr%rrmrrr<rnr�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�rrr�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<rLrr�r
rDr%rrmrrrnr�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<rLrr�r
rDrrmrrrnr�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�ConnectionErrorrLrr�r
rDr�
assertTruerr!r<rn�
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�rr	r
r��s�zcSendfileMixin.test_sendfile_fallback_close_peer_in_the_middle_of_receiving.<locals>.sendfile_nativer�r�)rr�r�r�r�rLr�r
rDrr�rr!r<rn)rr�r}rr	rr
�<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�r
rDr	�rr1rr	r
rK�s
z=SendfileMixin.test_sendfile_prevents_bare_write.<locals>.corozsendfile is in progresssdata)r�rrZcreate_taskrLr�r�r
r;rmr!r<)rr}rK�trpr	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)NcSsdSr.r	r	r	r	r
ra�rbzPSendfileMixin.test_sendfile_no_fallback_for_fallback_transport.<locals>.<lambda>zfallback is disabledFr�)
rZMockr�Zside_effectrZ
_SendfileModeZFALLBACKZ_sendfile_compatibler�r�rrJr�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
rz�s*+
	
�
rzc@seZdZdS)�SendfileTestsBaseN)r)r*r+r	r	r	r
r��sr�r�c@seZdZdd�ZdS)�SelectEventLoopTestscCst��Sr)r�SelectorEventLooprr	r	r
r7s�&SelectEventLoopTests.create_event_loopN�r)r*r+r7r	r	r	r
r�sr�c@seZdZdd�ZdS)�ProactorEventLoopTestscCst��Sr)rr�rr	r	r
r7
sz(ProactorEventLoopTests.create_event_loopNr�r	r	r	r
r�sr��KqueueSelectorc@seZdZdd�ZdS)�KqueueEventLoopTestscCst�t���Sr)rr��	selectorsr�rr	r	r
r7s�z&KqueueEventLoopTests.create_event_loopNr�r	r	r	r
r�sr��
EpollSelectorc@seZdZdd�ZdS)�EPollEventLoopTestscCst�t���Sr)rr�r�r�rr	r	r
r7sz%EPollEventLoopTests.create_event_loopNr�r	r	r	r
r�sr��PollSelectorc@seZdZdd�ZdS)�PollEventLoopTestscCst�t���Sr)rr�r�r�rr	r	r
r7#sz$PollEventLoopTests.create_event_loopNr�r	r	r	r
r� sr�c@seZdZdd�ZdS)r�cCst�t���Sr)rr�r��SelectSelectorrr	r	r
r7*sr�Nr�r	r	r	r
r�'s)"�__doc__rr�rRr�rtr�rrr�testrZtest.test_asynciorrGr~�ImportErrorrZProtocolrr-r4rOrzr�r�ZTestCaser�r�r�r�r�r�r�r	r	r	r
�<module>s^
&*m������