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.opt-2.pyc

U

i�f�N�@s�ddlZddlZddlZddlZddlZddlZddlmZddlmZddlmZddl	m
Z
ddlmZ
zddlZWnek
r�dZYnXdd�ZGd	d
�d
ej�ZGdd�dej�ZGd
d�d�ZGdd�de�ZGdd�de�ZGdd�dee�Zejdk�r4Gdd�dee
j�ZGdd�dee
j�Zn|ddlZeed��r\Gdd�dee
j�Zeed��r|Gdd�dee
j�Zeed ��r�Gd!d"�d"ee
j�Z Gd#d�dee
j�ZdS)$�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)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
doCleanupsrZ
gc_collectr#�tearDownrr'r	r
rHts

zSendfileBase.tearDowncCs|j�|�Sr)r�run_until_complete)r�coror	r	r
�run_loop}szSendfileBase.run_loop)
r)r*r+r<�BUF_SIZEr7�classmethodr=rArFrHrKr,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)rPrrOr#rArBr'r	r
rA�szSockSendfileMixin.tearDownClassTcCs.t�tjtj�}|�d�|r*|�|j�|Sr.)�socket�AF_INET�SOCK_STREAMZsetblockingrEr%)r�cleanup�sockr	r	r
�make_socket�s

zSockSendfileMixin.make_socketcCs|�tjtj|j�dSr)�
setsockoptrQ�
SOL_SOCKETZ	SO_RCVBUFrL)rrUr	r	r
�reduce_receive_buffer_size�sz,SockSendfileMixin.reduce_receive_buffer_sizeNcCs.|�tjtj|j�|dk	r*|j|jd�dS)N)Zhigh)rWrQrXZ	SO_SNDBUFrLZset_write_buffer_limits)rrUr
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)rTcs�Srr	r	)�protor	r
�<lambda>��z8SockSendfileMixin.prepare_socksendfile.<locals>.<lambda>)rUz	127.0.0.1cs<�jdk	r"�j�����������������dSr)r
r%rKr3r	�r[r�serverr	r
rT�s


z7SockSendfileMixin.prepare_socksendfile.<locals>.cleanup)
r-rr�find_unused_portrV�bind�HOSTrK�
create_serverrYZsock_connectrZrE)r�port�srv_sockrUrTr	r^r
�prepare_socksendfile�s


�



z&SockSendfileMixin.prepare_socksendfilecCsv|��\}}|�|j�||j��}|��|�|���|�|t|j	��|�|j
|j	�|�|j��t|j	��dSr)rfrKr�
sock_sendfilerDr%r3�assertEqualr!r<r�tell�rrUr[�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�)rfrKrrgrDr%r3rhrr<rirjr	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)rf�tempfileZ
TemporaryFilerKrrgr%r3rhrDri)rrUr[�frkr	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)
rfrKrZsock_sendallrgrDr%r3rhr!r<rri)rZbufrUr[rkZexpectedr	r	r
�(test_sock_sendfile_mix_with_regular_send�sz:SockSendfileMixin.test_sock_sendfile_mix_with_regular_send)T)N)r)r*r+rMr=rArVrYrZrfrlrnrqrrr,r	r	r'r
rN�s



rNc@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\r]z0SendfileMixin.prepare_sendfile.<locals>.<lambda>)rU�ssl)rcs�Srr	r	)�	cli_protor	r
r\
r])rUrw�server_hostname)r
csF�j���j�����j����j����������dSr)r
r%rKrr3r	�rxrr_rvr	r
rTs

z/SendfileMixin.prepare_sendfile.<locals>.cleanup)rr`rrrw�skipTestrGZsimple_server_sslcontextZsimple_client_sslcontextrQrRrSrarbrKrcrYZconnectZcreate_connectionrZrE)rrurrdZsrv_ctxZcli_ctxreryZcli_sock�tr�prrTr	rzr
�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)rKrZcreate_datagram_endpointrZDatagramProtocolrQrRr%�assertRaisesRegex�RuntimeError�sendfilerDrhri)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~rKrr�r
rDr%rrhr!r<rrri�rrvrxrkr	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�rKr�r
rDr%rrhr!r<rrri)rrvrxr�rkr	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)	NrzFails on proactor event loopcstj��j||||�Srr�r�rr	r
r�Ps�zMSendfileMixin.test_sendfile_force_unsupported_native.<locals>.sendfile_nativer�F�Zfallbackr)�sys�platform�
isinstancerr�ProactorEventLoopr{r~r�r�ZSendfileNotAvailableErrorrKr�r
rDr%rrhrri)rrvrxr�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�rur�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�rKrr�rDrrhrri�rrvrxr	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;rKrr�rDr%rrhr!r<rri�rrvrxZPREFIXZSUFFIXrkr	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)Nrm�d�L�
r~rKrr�r
rDr%rrhrrr<rir�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�rmr�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<rKrr�r
rDr%rrhrrrir�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)NTrt)
r~r!r<rKrr�r
rDrrhrrrir�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�ConnectionErrorrKrr�r
rDr�
assertTruerr!r<ri�
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�rKr�r
rDrr�rr!r<ri)rr�rvrxr	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	�rxr1rr	r
rJ�s
z=SendfileMixin.test_sendfile_prevents_bare_write.<locals>.corozsendfile is in progresssdata)r~rrZcreate_taskrKr�r�r
r;rhr!r<)rrvrJ�trkr	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
r\�r]zPSendfileMixin.test_sendfile_no_fallback_for_fallback_transport.<locals>.<lambda>zfallback is disabledFr�)
rZMockr�Zside_effectrZ
_SendfileModeZFALLBACKZ_sendfile_compatibler�r�rrIr�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
rs�s*+
	
�
rsc@seZdZdS)�SendfileTestsBaseN)r)r*r+r	r	r	r
r��sr�rc@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�ZSelectSelectorrr	r	r
r7*sr�Nr�r	r	r	r
r�'s)!rr�rQr�ror�rrrZtestrZtest.test_asynciorrGrw�ImportErrorrZProtocolrr-r4rNrsr�r�ZTestCaser�r�r�r�r�r�r�r	r	r	r
�<module>s\
&*m������