Your IP : 216.73.216.213


Current Path : /opt/alt/python39/lib64/python3.9/test/test_asyncio/__pycache__/
Upload File :
Current File : //opt/alt/python39/lib64/python3.9/test/test_asyncio/__pycache__/test_sendfile.cpython-39.pyc

a

XC?h�Q�@s�dZddlZddlZddlZddlZddlZddlZddlmZddlmZddlm	Z	ddl
mZddlm
Z
ddlmZzddlZWney�dZYn0d	d
�ZGdd�dej�ZGd
d�dej�ZGdd�d�ZGdd�de�ZGdd�de�ZGdd�dee�Zejdk�rBGdd�deej�ZGdd�deej�Zn|ddlZe ed��rjGdd�deej�Z!e ed��r�Gd d!�d!eej�Z"e ed"��r�Gd#d$�d$eej�Z#Gd%d�deej�Ze$d&k�r�e�%�dS)'z!Tests for sendfile functionality.�N)�base_events)�	constants)�mock)�support)�
socket_helper)�utilscCst�d�dS�N)�asyncioZset_event_loop_policy�r
r
�D/opt/alt/python39/lib64/python3.9/test/test_asyncio/test_sendfile.py�tearDownModulesrcs>eZdZd
dd�Zdd�Zdd�Zd	d
�Z�fdd�Z�ZS)�MySendfileProtoNrcCs@d|_d|_d|_|dur.|��|_|��|_t�|_||_dS)N�INITIALr)	�	transport�state�nbytes�
create_future�	connected�done�	bytearray�data�close_after)�self�looprr
r
r�__init__s

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


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

zMyProto.__init__cCsd|_||_dS�NT)r3rrr
r
rrIszMyProto.connection_madecCs|j�|�dSr)rr&r*r
r
rr(MszMyProto.data_receivedcCsd|_|j�d�dSr6)r4r5rr"r
r
rr$PszMyProto.connection_lostc�s|jIdHdSr)r5r r
r
r�wait_closedTszMyProto.wait_closedN)r-r.r/rrr(r$r7r
r
r
rr1@s
r1csdeZdZddZdZdd�Ze�fdd��Ze�fdd	��Z�fd
d�Z	�fdd
�Z
dd�Z�ZS)�SendfileBase�xi�cCst�dSr)�NotImplementedErrorr r
r
r�create_event_loopdszSendfileBase.create_event_loopcsFttjd��}|�|j�Wd�n1s.0Yt���dS)N�wb)�openr�TESTFN�write�DATAr'�
setUpClass)�cls�fpr+r
rrBgs*zSendfileBase.setUpClasscst�tj�t���dSr)r�unlinkr?r'�
tearDownClass�rCr+r
rrFmszSendfileBase.tearDownClasscs@ttjd�|_|�|jj�|��|_|�|j�t	��
�dS)N�rb)r>rr?�file�
addCleanupr)r<rZset_event_loopr'�setUpr r+r
rrKrs

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

zSendfileBase.tearDowncCs|j�|�Sr)r�run_until_complete)r�coror
r
r�run_loop�szSendfileBase.run_loop)
r-r.r/rA�BUF_SIZEr<�classmethodrBrFrKrMrPr0r
r
r+rr8Xs	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'rBrGr+r
rrB�szSockSendfileMixin.setUpClasscs|jt_t���dSr)rUrrTr'rFrGr+r
rrF�szSockSendfileMixin.tearDownClassTcCs.t�tjtj�}|�d�|r*|�|j�|Sr2)�socket�AF_INET�SOCK_STREAMZsetblockingrJr))r�cleanup�sockr
r
r�make_socket�s

zSockSendfileMixin.make_socketcCs|�tjtj|j�dSr)�
setsockoptrV�
SOL_SOCKETZ	SO_RCVBUFrQ)rrZr
r
r�reduce_receive_buffer_size�sz,SockSendfileMixin.reduce_receive_buffer_sizeNcCs.|�tjtj|j�|dur*|j|jd�dS)N)Zhigh)r\rVr]Z	SO_SNDBUFrQZset_write_buffer_limits)rrZrr
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)rYcs�Srr
r
)�protor
r�<lambda>��z8SockSendfileMixin.prepare_socksendfile.<locals>.<lambda>)rZz	127.0.0.1cs<�jdur"�j�����������������dSr)rr)rPr7r
�r`r�serverr
rrY�s


z7SockSendfileMixin.prepare_socksendfile.<locals>.cleanup)
r1rr�find_unused_portr[�bind�HOSTrP�
create_serverr^Zsock_connectr_rJ)r�port�srv_sockrZrYr
rcr�prepare_socksendfile�s

�



z&SockSendfileMixin.prepare_socksendfilecCsv|��\}}|�|j�||j��}|��|�|���|�|t|j	��|�|j
|j	�|�|j��t|j	��dSr)rkrPr�
sock_sendfilerIr)r7�assertEqualr%rAr�tell�rrZr`�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�)rkrPrrlrIr)r7rmrrArnror
r
r�(test_sock_sendfile_with_offset_and_count�s�z:SockSendfileMixin.test_sock_sendfile_with_offset_and_countc	Cs�|��\}}t���(}|�|j�||dd��}Wd�n1sB0Y|��|�|���|�|d�|�|j	�
�d�dS)Nr)rk�tempfileZ
TemporaryFilerPrrlr)r7rmrIrn)rrZr`�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_sendr:)
rkrPrZsock_sendallrlrIr)r7rmr%rArrn)rZbufrZr`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/rRrBrFr[r^r_rkrqrsrvrwr0r
r
r+rrS�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�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��|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
rrarbz0SendfileMixin.prepare_sendfile.<locals>.<lambda>)rZ�ssl)rcs�Srr
r
)�	cli_protor
rrarb)rZr|�server_hostname)rcsF�j���j�����j����j����������dSr)rr)rPrr7r
�r}rrdr{r
rrYs

z/SendfileMixin.prepare_sendfile.<locals>.cleanup)rrer
rr|�skipTestrLZsimple_server_sslcontextZsimple_client_sslcontextrVrWrXrfrgrPrhr^ZconnectZcreate_connectionr_rJ)rrzrriZsrv_ctxZcli_ctxrjr~Zcli_sock�tr�prrYr
rr�prepare_sendfile�s>�


�

�	
zSendfileMixin.prepare_sendfile�win32zUDP sockets are not supportedcCs�|�|jjtjtjd��\}}z`|�td��&|�|j�	||j
��Wd�n1sX0Y|�d|j
���W|�
�n
|�
�0dS)N)Zfamily�
not supportedr)rPrZcreate_datagram_endpointr	ZDatagramProtocolrVrW�assertRaisesRegex�RuntimeError�sendfilerIrmrnr))rr�r�r
r
r�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�rPrr�rrIr)rrmr%rArrrn�rr{r}rpr
r
r�
test_sendfile1s�
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�ZtransprI�offset�countr r
r�sendfile_native?s�zCSendfileMixin.test_sendfile_force_fallback.<locals>.sendfile_native)r�rr�rPr�rrIr)rrmr%rArrrn)rr{r}r�rpr
r r�test_sendfile_force_fallback<s�
z*SendfileMixin.test_sendfile_force_fallbackcs�tjdkr"t�jtj�r"��d����\}}�fdd�}|�j_��	tj
d��,���jj|j
�jdd��Wd�n1s�0Y|j
����|j���|jd����j��d�dS)	Nr�zFails on proactor event loopcstj��j||||�Srr�r�r r
rr�Us�zMSendfileMixin.test_sendfile_force_unsupported_native.<locals>.sendfile_nativer�F�Zfallbackr)�sys�platform�
isinstancerr	�ProactorEventLoopr�r�r�r�ZSendfileNotAvailableErrorrPr�rrIr)rrmrrn)rr{r}r�r
r r�&test_sendfile_force_unsupported_nativeOs$

���"
z4SendfileMixin.test_sendfile_force_unsupported_nativecCs�|jdd�\}}|�|j�|j|j��}|j��|�|j�|�|t	|j
��|�|jt	|j
��|�|j|j
�|�|j�
�t	|j
��dS)NT�rzr�r�r
r
r�test_sendfile_sslgs�
zSendfileMixin.test_sendfile_sslcCs�|��\}}|j��|�td��(|�|j�|j|j��Wd�n1sP0Y|�|j	�|�
|jd�|�
|j��d�dS)Nz
is closingr)
r�rr)r�r�rPrr�rIrrmrrn�rr{r}r
r
r� test_sendfile_for_closing_transprs
6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�rIr)rrmr%rArrn�rr{r}ZPREFIXZSUFFIXrpr
r
r�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�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�rPrr�rrIr)rrmrrrArnr�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%rArPrr�rrIr)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)NTry)
r�r%rArPrr�rrIrrmrrrnr�r
r
r�,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�n1sH0Y|�|j�|�	d|j
ko|t|j�kn|j
�|�	d|j�
�ko�t|j�kn|j�
��|�	|j���dS)Nr�r�)r��assertRaises�ConnectionErrorrPrr�rrIr�
assertTruerr%rArn�
is_closingr�r
r
r�3test_sendfile_close_peer_in_the_middle_of_receiving�s�""�&�zASendfileMixin.test_sendfile_close_peer_in_the_middle_of_receivingcs��fdd�}|�j_�jdd�\}}��t��(���j�|j�j��Wd�n1s\0Y��|j	���
d|jko�t�j
�kn|j���
d�j��ko�t�j
�kn�j���dS)Ncstj��j||||�Srr�r�r r
rr��s�zcSendfileMixin.test_sendfile_fallback_close_peer_in_the_middle_of_receiving.<locals>.sendfile_nativer�r�)rr�r�r�r�rPr�rrIrr�rr%rArn)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 supportcs����\}��j������fdd�}�j�|��}������td���j�d�Wd�n1sl0Y��|�}��	|t
�j��dS)Nc�s"��d��j��j�j�IdHSr)rrr�rrIr
�r}r5rr
rrO�s
z=SendfileMixin.test_sendfile_prevents_bare_write.<locals>.corozsendfile is in progresssdata)r�rrZcreate_taskrPr�r�rr@rmr%rA)rr{rO�trpr
r�r�!test_sendfile_prevents_bare_write�s

�*
z/SendfileMixin.test_sendfile_prevents_bare_writecCsht��}dd�|j_tjj|_|�t	d��*|j
�|j
j|ddd��Wd�n1sZ0YdS)NcSsdSr2r
r
r
r
rra�rbzPSendfileMixin.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��
startswithr�r��hasattr�osr�r�r
r
r
rrx�s0+
	�

�
rxc@seZdZdS)�SendfileTestsBaseN)r-r.r/r
r
r
rr�sr�r�c@seZdZdd�ZdS)�SelectEventLoopTestscCst��Sr)r	�SelectorEventLoopr r
r
rr<s�&SelectEventLoopTests.create_event_loopN�r-r.r/r<r
r
r
rr�sr�c@seZdZdd�ZdS)�ProactorEventLoopTestscCst��Sr)r	r�r r
r
rr<sz(ProactorEventLoopTests.create_event_loopNr�r
r
r
rr�sr��KqueueSelectorc@seZdZdd�ZdS)�KqueueEventLoopTestscCst�t���Sr)r	r��	selectorsr�r r
r
rr<s�z&KqueueEventLoopTests.create_event_loopNr�r
r
r
rr�sr��
EpollSelectorc@seZdZdd�ZdS)�EPollEventLoopTestscCst�t���Sr)r	r�r�r�r r
r
rr<'sz%EPollEventLoopTests.create_event_loopNr�r
r
r
rr�$sr��PollSelectorc@seZdZdd�ZdS)�PollEventLoopTestscCst�t���Sr)r	r�r�r�r r
r
rr<.sz$PollEventLoopTests.create_event_loopNr�r
r
r
rr�+sr�c@seZdZdd�ZdS)r�cCst�t���Sr)r	r�r�ZSelectSelectorr r
r
rr<5sr�Nr�r
r
r
rr�2s�__main__)&�__doc__r	r�rVr�rtr�rrr�testrZtest.supportrZtest.test_asynciorrLr|�ImportErrorr�Protocolr
r1r8rSrxr�r�ZTestCaser�r�r�r�r�r�r�r-�mainr
r
r
r�<module>sd
&.m������