Your IP : 216.73.216.213


Current Path : /opt/alt/python38/lib64/python3.8/test/test_asyncio/__pycache__/
Upload File :
Current File : //opt/alt/python38/lib64/python3.8/test/test_asyncio/__pycache__/test_sendfile.cpython-38.pyc

U

i�f�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	�D/opt/alt/python38/lib64/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
doCleanupsrZ
gc_collectr'�tearDownr r+r	r
rLts

zSendfileBase.tearDowncCs|j�|�Sr)r�run_until_complete)r�coror	r	r
�run_loop}szSendfileBase.run_loop)
r-r.r/r@�BUF_SIZEr;�classmethodrArErJrLrOr0r	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)rTrrSr'rErFr+r	r
rE�szSockSendfileMixin.tearDownClassTcCs.t�tjtj�}|�d�|r*|�|j�|Sr2)�socket�AF_INET�SOCK_STREAMZsetblockingrIr))r�cleanup�sockr	r	r
�make_socket�s

zSockSendfileMixin.make_socketcCs|�tjtj|j�dSr)�
setsockoptrU�
SOL_SOCKETZ	SO_RCVBUFrP)rrYr	r	r
�reduce_receive_buffer_size�sz,SockSendfileMixin.reduce_receive_buffer_sizeNcCs.|�tjtj|j�|dk	r*|j|jd�dS)N)Zhigh)r[rUr\Z	SO_SNDBUFrPZset_write_buffer_limits)rrYrr	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)rXcs�Srr	r	)�protor	r
�<lambda>��z8SockSendfileMixin.prepare_socksendfile.<locals>.<lambda>)rYz	127.0.0.1cs<�jdk	r"�j�����������������dSr)rr)rOr7r	�r_r�serverr	r
rX�s


z7SockSendfileMixin.prepare_socksendfile.<locals>.cleanup)
r1rr�find_unused_portrZ�bind�HOSTrO�
create_serverr]Zsock_connectr^rI)r�port�srv_sockrYrXr	rbr
�prepare_socksendfile�s


�



z&SockSendfileMixin.prepare_socksendfilecCsv|��\}}|�|j�||j��}|��|�|���|�|t|j	��|�|j
|j	�|�|j��t|j	��dSr)rjrOr�
sock_sendfilerHr)r7�assertEqualr%r@r�tell�rrYr_�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�)rjrOrrkrHr)r7rlrr@rmrnr	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)rj�tempfileZ
TemporaryFilerOrrkr)r7rlrHrm)rrYr_�fror	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)
rjrOrZsock_sendallrkrHr)r7rlr%r@rrm)rZbufrYr_roZexpectedr	r	r
�(test_sock_sendfile_mix_with_regular_send�sz:SockSendfileMixin.test_sock_sendfile_mix_with_regular_send)T)N)r-r.r/rQrArErZr]r^rjrprrrurvr0r	r	r+r
rR�s



rRc@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
r`raz0SendfileMixin.prepare_sendfile.<locals>.<lambda>)rY�ssl)rcs�Srr	r	)�	cli_protor	r
r`
ra)rYr{�server_hostname)rcsF�j���j�����j����j����������dSr)rr)rOrr7r	�r|rrcrzr	r
rXs

z/SendfileMixin.prepare_sendfile.<locals>.cleanup)rrdrrr{�skipTestrKZsimple_server_sslcontextZsimple_client_sslcontextrUrVrWrerfrOrgr]ZconnectZcreate_connectionr^rI)rryrrhZsrv_ctxZcli_ctxrir}Zcli_sock�tr�prrXr	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)Zfamily�
not supportedr)rOrZcreate_datagram_endpointrZDatagramProtocolrUrVr)�assertRaisesRegex�RuntimeError�sendfilerHrlrm)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�rOrr�rrHr)rrlr%r@rrrm�rrzr|ror	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�rOr�rrHr)rrlr%r@rrrm)rrzr|r�ror	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�Zfallbackr)�sys�platform�
isinstancerr�ProactorEventLooprr�r�r�ZSendfileNotAvailableErrorrOr�rrHr)rrlrrm)rrzr|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�ryr�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�rOrr�rHrrlrrm�rrzr|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?rOrr�rHr)rrlr%r@rrm�rrzr|ZPREFIXZSUFFIXror	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)Nrq�d�L�
r�rOrr�rrHr)rrlrrr@rmr�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�rqr�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@rOrr�rrHr)rrlrrrmr�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)NTrx)
r�r%r@rOrr�rrHrrlrrrmr�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�ConnectionErrorrOrr�rrHr�
assertTruerr%r@rm�
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�rOr�rrHrr�rr%r@rm)rr�rzr|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
rN�s
z=SendfileMixin.test_sendfile_prevents_bare_write.<locals>.corozsendfile is in progresssdata)r�rrZcreate_taskrOr�r�rr?rlr%r@)rrzrN�tror	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
r`�razPSendfileMixin.test_sendfile_no_fallback_for_fallback_transport.<locals>.<lambda>zfallback is disabledFr�)
rZMockr�Zside_effectrZ
_SendfileModeZFALLBACKZ_sendfile_compatibler�r�rrMr�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
rw�s*+
	
�
rwc@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�ZSelectSelectorr r	r	r
r;*sr�Nr�r	r	r	r
r�'s)"�__doc__rr�rUr�rsr�rrrZtestrZtest.test_asynciorrKr{�ImportErrorrZProtocolrr1r8rRrwr�r�ZTestCaser�r�r�r�r�r�r�r	r	r	r
�<module>s^
&*m������