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_sendfile.cpython-310.pyc
o

�i�S�@s�dZddlZddlZddlZddlZddlZddlZddlZddlmZddlm	Z	ddlm
Z
ddlmZddl
mZddl
mZdd	lmZzddlZWneyYdZYnwd
d�ZGdd
�d
ej�ZGdd�dej�ZGdd�d�ZGdd�de�ZGdd�de�ZGdd�dee�Zejdkr�Gdd�deej�ZGdd�deej�Z n;ddl!Z!e"e!d�r�Gdd�deej�Z#e"e!d �r�Gd!d"�d"eej�Z$e"e!d#�r�Gd$d%�d%eej�Z%Gd&d�deej�Ze&d'kr�e�'�dSdS)(z!Tests for sendfile functionality.�N)�base_events)�	constants)�mock)�support)�	os_helper)�
socket_helper)�utilscCst�d�dS�N)�asyncioZset_event_loop_policy�rr�</usr/local/lib/python3.10/test/test_asyncio/test_sendfile.py�tearDownModule�r
csFeZdZddd�Zdd�Zdd�Zd	d
�Zdd�Z�fd
d�Z�Z	S)�MySendfileProtoNrcCs@d|_d|_d|_|dur|��|_|��|_t�|_||_dS)N�INITIALr)	�	transport�state�nbytes�
create_future�	connected�done�	bytearray�data�close_after)�self�looprrrr�__init__s


zMySendfileProto.__init__cGs$|j|vrtd|j�d|����dS)Nzstate: z, expected: )r�AssertionError)r�expectedrrr�
_assert_state(s
�zMySendfileProto._assert_statecCs0||_|�d�d|_|jr|j�d�dSdS)Nr�	CONNECTED)rrrr�
set_result�rrrrr�connection_made,s
�zMySendfileProto.connection_madecCs|�d�d|_dS)Nr �EOF)rr�rrrr�eof_received3s

zMySendfileProto.eof_receivedcCs,|�dd�d|_|jr|j�d�dSdS)Nr r$ZCLOSED)rrrr!�r�excrrr�connection_lost7s
�zMySendfileProto.connection_lostcs\|�d�|jt|�7_|j�|�t��|�|jr*|j|jkr,|j�	�dSdSdS)Nr )
rr�lenr�extend�super�
data_receivedrr�close�rr��	__class__rrr-=s
�zMySendfileProto.data_received�Nr)
�__name__�
__module__�__qualname__rrr#r&r)r-�
__classcell__rrr0rrs

rc@s4eZdZdd�Zdd�Zdd�Zdd�Zd	d
�ZdS)�MyProtocCs(d|_d|_t�|_|��|_d|_dS�NF)�started�closedrrr�futr)rrrrrrHs


zMyProto.__init__cCsd|_||_dS�NT)r9rr"rrrr#Os
zMyProto.connection_madecCs|j�|�dSr	)rr+r/rrrr-SszMyProto.data_receivedcCsd|_|j�d�dSr<)r:r;r!r'rrrr)VszMyProto.connection_lostc�s�|jIdHdSr	)r;r%rrr�wait_closedZs�zMyProto.wait_closedN)r3r4r5rr#r-r)r=rrrrr7Fsr7csdeZdZddZdZdd�Ze�fdd��Ze�fdd	��Z�fd
d�Z	�fdd
�Z
dd�Z�ZS)�SendfileBase�xi�cCst�r	)�NotImplementedErrorr%rrr�create_event_loopjszSendfileBase.create_event_loopcsFttjd��}|�|j�Wd�n1swYt���dS)N�wb)�openr�TESTFN�write�DATAr,�
setUpClass)�cls�fpr0rrrHms�zSendfileBase.setUpClasscst�tj�t���dSr	)r�unlinkrEr,�
tearDownClass�rIr0rrrLsszSendfileBase.tearDownClasscs@ttjd�|_|�|jj�|��|_|�|j�t	��
�dS)N�rb)rDrrE�file�
addCleanupr.rBrZset_event_loopr,�setUpr%r0rrrQxs

zSendfileBase.setUpcs4|j��st�|j�|��t��t���dSr	)	rZ	is_closed�
test_utilsZrun_brieflyZ
doCleanupsr�
gc_collectr,�tearDownr%r0rrrTs

zSendfileBase.tearDowncCs|j�|�Sr	)r�run_until_complete)r�cororrr�run_loop�szSendfileBase.run_loop)
r3r4r5rG�BUF_SIZErB�classmethodrHrLrQrTrWr6rrr0rr>^s	r>csteZdZe�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,rHrMr0rrrH�szSockSendfileMixin.setUpClasscs|jt_t���dSr	)r\rr[r,rLrMr0rrrL�szSockSendfileMixin.tearDownClassTcCs.t�tjtj�}|�d�|r|�|j�|Sr8)�socket�AF_INET�SOCK_STREAM�setblockingrPr.)r�cleanup�sockrrr�make_socket�s

zSockSendfileMixin.make_socketcCs|�tjtj|j�dSr	)�
setsockoptr]�
SOL_SOCKET�	SO_RCVBUFrX)rrbrrr�reduce_receive_buffer_size�sz,SockSendfileMixin.reduce_receive_buffer_sizeNcCs2|�tjtj|j�|dur|j|jd�dSdS)N)�high)rdr]re�	SO_SNDBUFrXZset_write_buffer_limits)rrbrrrr�reduce_send_buffer_size�s�z)SockSendfileMixin.reduce_send_buffer_sizecs�t�j��t��}�jdd�}|�tj|f����jj�fdd�|d�����	|����}���j�
|d|f����|����fdd�}��|�|�fS)	NF)rac��Sr	rr)�protorr�<lambda>��z8SockSendfileMixin.prepare_socksendfile.<locals>.<lambda>)rbz	127.0.0.1cs<�jdur�j�����������������dSr	)rr.rWr=r�rlr�serverrrra�s


z7SockSendfileMixin.prepare_socksendfile.<locals>.cleanup)
r7rr�find_unused_portrc�bind�HOSTrW�
create_serverrgZsock_connectrjrP)r�port�srv_sockrbrarror�prepare_socksendfile�s

�



z&SockSendfileMixin.prepare_socksendfilecCsv|��\}}|�|j�||j��}|��|�|���|�|t|j	��|�|j
|j	�|�|j��t|j	��dSr	)rwrWr�
sock_sendfilerOr.r=�assertEqualr*rGr�tell�rrbrl�retrrr�test_sock_sendfile_success�sz,SockSendfileMixin.test_sock_sendfile_successcCsv|��\}}|�|j�||jdd��}|��|�|���|�|j|j	dd��|�|j�
�d�|�|d�dS)N��i�i�)rwrWrrxrOr.r=ryrrGrzr{rrr�(test_sock_sendfile_with_offset_and_count�s�z:SockSendfileMixin.test_sock_sendfile_with_offset_and_countc	Cs�|��\}}t���}|�|j�||dd��}Wd�n1s!wY|��|�|���|�|d�|�|j	�
�d�dSr2)rw�tempfile�
TemporaryFilerWrrxr.r=ryrOrz)rrbrl�fr|rrr�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_sendr@)
rwrWrZsock_sendallrxrOr.r=ryr*rGrrz)r�bufrbrlr|rrrr�(test_sock_sendfile_mix_with_regular_send�sz:SockSendfileMixin.test_sock_sendfile_mix_with_regular_send)Tr	)r3r4r5rYrHrLrcrgrjrwr}rr�r�r6rrr0rrZ�s



rZc@s�eZdZddd�dd�Ze�ejdkd�dd	��Zd
d�Z	dd
�Z
dd�Zdd�Zdd�Z
dd�Zdd�Zdd�Zdd�Zdd�Zdd�Ze�ej�d �d!�d"d#��Zd$d%�Ze�eed&�d'�d(d)��Zd*d+�Zd,S)-�
SendfileMixinFr��is_sslrcs t��}t�j|d��|rts��d�t��}t��}nd}d}t	�	t	j
t	j�}|�tj
|f����jj�fdd�||d�����|�|rLtj
}nd}t	�	t	j
t	j�}|�tj
|f�t�jd�����jj�fdd�|||d��\}	}
�j||	d	�����fd
d�}��|���fS)N)rrz
No ssl modulecrkr	rr)�	srv_protorrrmrnz0SendfileMixin.prepare_sendfile.<locals>.<lambda>)rb�ssl)rcrkr	rr)�	cli_protorrrmrn)rbr��server_hostname)rcsF�j���j�����j����j����������dSr	)rr.rWrr=r�r�rrpr�rrras

z/SendfileMixin.prepare_sendfile.<locals>.cleanup)rrqrrr��skipTestrRZsimple_server_sslcontextZsimple_client_sslcontextr]r^r_rrrsrWrtrg�connect�create_connectionrjrP)rr�rruZsrv_ctxZcli_ctxrvr�Zcli_sock�tr�prrarr�r�prepare_sendfile�s>�


�

�
	zSendfileMixin.prepare_sendfile�win32zUDP sockets are not supportedcCs�|�|jjtjtjd��\}}z1|�td��|�|j�	||j
��Wd�n1s,wY|�d|j
���W|�
�dS|�
�w)N)�family�
not supportedr)rWrZcreate_datagram_endpointr
ZDatagramProtocolr]r^�assertRaisesRegex�RuntimeError�sendfilerOryrzr.)rr�r�rrr�test_sendfile_not_supported(s����z)SendfileMixin.test_sendfile_not_supportedcCs�|��\}}|�|j�|j|j��}|j��|�|j�|�|t	|j
��|�|jt	|j
��|�|j|j
�|�|j�
�t	|j
��dSr	�r�rWrr�rrOr.rryr*rGrrrz�rr�r�r|rrr�
test_sendfile7s�
zSendfileMixin.test_sendfilecs����\}}�fdd�}|�j_���j�|j�j��}|j����|j���	|t
�j����	|jt
�j����	|j
�j���	�j��t
�j��dS)Nc�tj��j||||�Sr	�rZ
BaseEventLoop�_sendfile_nativer�ZtransprO�offset�countr%rr�sendfile_nativeE��zCSendfileMixin.test_sendfile_force_fallback.<locals>.sendfile_native)r�rr�rWr�rrOr.rryr*rGrrrz)rr�r�r�r|rr%r�test_sendfile_force_fallbackBs�
z*SendfileMixin.test_sendfile_force_fallbackcs�tjdkrt�jtj�r��d����\}}�fdd�}|�j_��	tj
d�����jj|j
�jdd��Wd�n1sAwY|j
����|j���|jd����j��d�dS)	Nr�zFails on proactor event loopcr�r	r�r�r%rrr�[r�zMSendfileMixin.test_sendfile_force_unsupported_native.<locals>.sendfile_nativer�F��fallbackr)�sys�platform�
isinstancerr
�ProactorEventLoopr�r�r�r�ZSendfileNotAvailableErrorrWr�rrOr.rryrrz)rr�r�r�rr%r�&test_sendfile_force_unsupported_nativeUs&

����
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�rrr�test_sendfile_sslms�
zSendfileMixin.test_sendfile_sslcCs�|��\}}|j��|�td��|�|j�|j|j��Wd�n1s(wY|�|j	�|�
|jd�|�
|j��d�dS)Nz
is closingr)
r�rr.r�r�rWrr�rOrryrrz�rr�r�rrr� test_sendfile_for_closing_transpxs
�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�rrFrWrr�rOr.rryr*rGrrz�rr�r�ZPREFIXZSUFFIXr|rrr�test_sendfile_pre_and_post_data�s�
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�rrr�#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)Nr~�d�L�
r�rWrr�rrOr.rryrrrGrzr�rrr�test_sendfile_partial�s�
z#SendfileMixin.test_sendfile_partialcCs�|jdd�\}}|�|j�|j|jdd��}|j��|�|j�|�|d�|�|j	d�|�|j
|jdd��|�|j��d�dS)NTr�r~r�r�r�r�rrr�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*rGrWrr�rrOr.rryrrrzr�rrr�(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*rGrWrr�rrOrryrrrzr�rrr�,test_sendfile_ssl_close_peer_after_receiving�s

��z:SendfileMixin.test_sendfile_ssl_close_peer_after_receivingZsunoszDoesn't work on SolariscCs�|jdd�\}}|�t��|�|j�|j|j��Wd�n1s$wY|�|j�|�	d|j
ko>t|j�kn|j
�|�	d|j�
�koUt|j�kn|j�
��|�	|j���dS)Nr�r�)r��assertRaises�ConnectionErrorrWrr�rrOr�
assertTruerr*rGrz�
is_closingr�rrr�3test_sendfile_close_peer_in_the_middle_of_receiving�s��"�&�zASendfileMixin.test_sendfile_close_peer_in_the_middle_of_receivingcs�fdd�}|�j_�jdd�\}}��t��1z���j�|j�j��Wnt	y@}z|j
t
jkr;tj
dkr;t��d}~wwWd�n1sKwY��|j���d|jkoet�j�kn|j���d�j��ko|t�j�kn�j���dS)Ncr�r	r�r�r%rrr��r�zcSendfileMixin.test_sendfile_fallback_close_peer_in_the_middle_of_receiving.<locals>.sendfile_nativer�r��darwin)rr�r�r�r�rWr�rrO�OSError�errnoZ
EPROTOTYPEr�r�rr�rr*rGrz)rr�r�r��err%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 supportcs����\}��j������fdd�}�j�|��}������td���j�d�Wd�n1s6wY��|�}��	|t
�j��dS)Nc�s$���d��j��j�j�IdHSr	)r!rr�rrOr�r�r;rrrrVs�
z=SendfileMixin.test_sendfile_prevents_bare_write.<locals>.corozsendfile is in progresssdata)r�rrZcreate_taskrWr�r�rrFryr*rG)rr�rV�tr|rr�r�!test_sendfile_prevents_bare_write�s

��
z/SendfileMixin.test_sendfile_prevents_bare_writecCsjt��}dd�|j_tjj|_|�t	d��|j
�|j
j|ddd��Wd�dS1s.wYdS)NcSsdSr8rrrrrrmrnzPSendfileMixin.test_sendfile_no_fallback_for_fallback_transport.<locals>.<lambda>zfallback is disabledFr�)
rZMockr�Zside_effectrZ
_SendfileModeZFALLBACKZ_sendfile_compatibler�r�rrUr�r"rrr�0test_sendfile_no_fallback_for_fallback_transports
�"�z>SendfileMixin.test_sendfile_no_fallback_for_fallback_transportN)r3r4r5r��unittestZskipIfr�r�r�r�r�r�r�r�r�r�r�r�r�r��
startswithr�r��hasattr�osr�r�rrrrr��s2+
	�

�
r�c@seZdZdS)�SendfileTestsBaseN)r3r4r5rrrrr�sr�r�c@�eZdZdd�ZdS)�SelectEventLoopTestscC�t��Sr	)r
�SelectorEventLoopr%rrrrB��&SelectEventLoopTests.create_event_loopN�r3r4r5rBrrrrr��r�c@r�)�ProactorEventLoopTestscCr�r	)r
r�r%rrrrB$r�z(ProactorEventLoopTests.create_event_loopNr�rrrrr�!r�r��KqueueSelectorc@r�)�KqueueEventLoopTestscC�t�t���Sr	)r
r��	selectorsr�r%rrrrB.s�z&KqueueEventLoopTests.create_event_loopNr�rrrrr�+r�r��
EpollSelectorc@r�)�EPollEventLoopTestscCr�r	)r
r�r�r�r%rrrrB6rz%EPollEventLoopTests.create_event_loopNr�rrrrr�3r�r��PollSelectorc@r�)�PollEventLoopTestscCr�r	)r
r�r�r�r%rrrrB=rz$PollEventLoopTests.create_event_loopNr�rrrrr�:r�r�c@r�)r�cCr�r	)r
r�r��SelectSelectorr%rrrrBDrr�Nr�rrrrr�Ar��__main__)(�__doc__r
r�r�r]r�r�r�rrr�testrZtest.supportrrZtest.test_asynciorrRr��ImportErrorr
ZProtocolrr7r>rZr�r�r�ZTestCaser�r�r�r�r�r�r�r3�mainrrrr�<module>sn�*.m
��
�
�
���