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

a

XC?h�Q�@s�ddlZddlZddlZddlZddlZddlZddlmZddlmZddlmZddl	m
Z
ddlmZddl
mZzddlZWney�dZYn0dd	�ZGd
d�dej�ZGdd
�d
ej�ZGdd�d�ZGdd�de�ZGdd�de�ZGdd�dee�Zejdk�r>Gdd�deej�ZGdd�deej�Zn|ddlZeed��rfGdd�deej�Z eed��r�Gdd �d eej�Z!eed!��r�Gd"d#�d#eej�Z"Gd$d�deej�Ze#d%k�r�e�$�dS)&�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)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)rrr�
set_result�rrr
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_lost1szMySendfileProto.connection_lostcsJ|jt|�7_|j�|�t��|�|jrF|j|jkrF|j��dSr)	r�lenr�extend�super�
data_receivedrr�close�rr��	__class__r
rr%7s
zMySendfileProto.data_received)Nr)	�__name__�
__module__�__qualname__rrrr!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)r0rrr
r
rrIszMyProto.connection_madecCs|j�|�dSr)rr#r'r
r
rr%MszMyProto.data_receivedcCsd|_|j�d�dSr3)r1r2rrr
r
rr!PszMyProto.connection_lostc�s|jIdHdSr)r2rr
r
r�wait_closedTszMyProto.wait_closedN)r*r+r,rrr%r!r4r
r
r
rr.@s
r.csdeZdZddZdZdd�Ze�fdd��Ze�fdd	��Z�fd
d�Z	�fdd
�Z
dd�Z�ZS)�SendfileBase�xi�cCst�dSr)�NotImplementedErrorrr
r
r�create_event_loopdszSendfileBase.create_event_loopcsFttjd��}|�|j�Wd�n1s.0Yt���dS)N�wb)�openr�TESTFN�write�DATAr$�
setUpClass)�cls�fpr(r
rr?gs*zSendfileBase.setUpClasscst�tj�t���dSr)r�unlinkr<r$�
tearDownClass�r@r(r
rrCmszSendfileBase.tearDownClasscs@ttjd�|_|�|jj�|��|_|�|j�t	��
�dS)N�rb)r;rr<�file�
addCleanupr&r9rZset_event_loopr$�setUprr(r
rrHrs

zSendfileBase.setUpcs4|j��st�|j�|��t��t���dSr)	rZ	is_closed�
test_utilsZrun_brieflyZ
doCleanupsrZ
gc_collectr$�tearDownrr(r
rrJys

zSendfileBase.tearDowncCs|j�|�Sr)r�run_until_complete)r�coror
r
r�run_loop�szSendfileBase.run_loop)
r*r+r,r>�BUF_SIZEr9�classmethodr?rCrHrJrMr-r
r
r(rr5Xs	r5csteZdZe�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?rDr(r
rr?�szSockSendfileMixin.setUpClasscs|jt_t���dSr)rRrrQr$rCrDr(r
rrC�szSockSendfileMixin.tearDownClassTcCs.t�tjtj�}|�d�|r*|�|j�|Sr/)�socket�AF_INET�SOCK_STREAMZsetblockingrGr&)r�cleanup�sockr
r
r�make_socket�s

zSockSendfileMixin.make_socketcCs|�tjtj|j�dSr)�
setsockoptrS�
SOL_SOCKETZ	SO_RCVBUFrN)rrWr
r
r�reduce_receive_buffer_size�sz,SockSendfileMixin.reduce_receive_buffer_sizeNcCs.|�tjtj|j�|dur*|j|jd�dS)N)Zhigh)rYrSrZZ	SO_SNDBUFrNZset_write_buffer_limits)rrWrr
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<�jdur"�j�����������������dSr)rr&rMr4r
�r]r�serverr
rrV�s


z7SockSendfileMixin.prepare_socksendfile.<locals>.cleanup)
r.rr�find_unused_portrX�bind�HOSTrM�
create_serverr[Zsock_connectr\rG)r�port�srv_sockrWrVr
r`r�prepare_socksendfile�s

�



z&SockSendfileMixin.prepare_socksendfilecCsv|��\}}|�|j�||j��}|��|�|���|�|t|j	��|�|j
|j	�|�|j��t|j	��dSr)rhrMr�
sock_sendfilerFr&r4�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�)rhrMrrirFr&r4rjrr>rkrlr
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)rh�tempfileZ
TemporaryFilerMrrir&r4rjrFrk)rrWr]�frmr
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_sendr7)
rhrMrZsock_sendallrirFr&r4rjr"r>rrk)rZbufrWr]rmZexpectedr
r
r�(test_sock_sendfile_mix_with_regular_send�sz:SockSendfileMixin.test_sock_sendfile_mix_with_regular_send)T)N)r*r+r,rOr?rCrXr[r\rhrnrprsrtr-r
r
r(rrP�s



rPc@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
rr^r_z0SendfileMixin.prepare_sendfile.<locals>.<lambda>)rW�ssl)rcs�Srr
r
)�	cli_protor
rr^r_)rWry�server_hostname)rcsF�j���j�����j����j����������dSr)rr&rMrr4r
�rzrrarxr
rrVs

z/SendfileMixin.prepare_sendfile.<locals>.cleanup)rrbr
rry�skipTestrIZsimple_server_sslcontextZsimple_client_sslcontextrSrTrUrcrdrMrer[ZconnectZcreate_connectionr\rG)rrwrrfZsrv_ctxZcli_ctxrgr{Zcli_sock�tr�prrVr
r|r�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)rMrZcreate_datagram_endpointr	ZDatagramProtocolrSrT�assertRaisesRegex�RuntimeError�sendfilerFrjrkr&)rr~rr
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�rMrr�rrFr&rrjr"r>rrrk�rrxrzrmr
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�ZtransprF�offset�countrr
r�sendfile_native?s�zCSendfileMixin.test_sendfile_force_fallback.<locals>.sendfile_native)r�rr�rMr�rrFr&rrjr"r>rrrk)rrxrzr�rmr
rr�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�rr
rr�Us�zMSendfileMixin.test_sendfile_force_unsupported_native.<locals>.sendfile_nativer�F�Zfallbackr)�sys�platform�
isinstancerr	�ProactorEventLoopr}r�r�r�ZSendfileNotAvailableErrorrMr�rrFr&rrjrrk)rrxrzr�r
rr�&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�rwr�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�rMrr�rFrrjrrk�rrxrzr
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=rMrr�rFr&rrjr"r>rrk�rrxrzZPREFIXZSUFFIXrmr
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)Nro�d�L�
r�rMrr�rrFr&rrjrrr>rkr�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�ror�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>rMrr�rrFr&rrjrrrkr�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)NTrv)
r�r"r>rMrr�rrFrrjrrrkr�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�ConnectionErrorrMrr�rrFr�
assertTruerr"r>rk�
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�rr
rr��s�zcSendfileMixin.test_sendfile_fallback_close_peer_in_the_middle_of_receiving.<locals>.sendfile_nativer�r�)rr�r�r�r�rMr�rrFrr�rr"r>rk)rr�rxrzr
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 supportcs����\}��j������fdd�}�j�|��}������td���j�d�Wd�n1sl0Y��|�}��	|t
�j��dS)Nc�s"��d��j��j�j�IdHSr)rrr�rrFr
�rzr2rr
rrL�s
z=SendfileMixin.test_sendfile_prevents_bare_write.<locals>.corozsendfile is in progresssdata)r�rrZcreate_taskrMr�r�rr=rjr"r>)rrxrL�trmr
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)NcSsdSr/r
r
r
r
rr^�r_zPSendfileMixin.test_sendfile_no_fallback_for_fallback_transport.<locals>.<lambda>zfallback is disabledFr�)
rZMockr�Zside_effectrZ
_SendfileModeZFALLBACKZ_sendfile_compatibler�r�rrKr�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
rru�s0+
	�

�
ruc@seZdZdS)�SendfileTestsBaseN)r*r+r,r
r
r
rr�sr�r�c@seZdZdd�ZdS)�SelectEventLoopTestscCst��Sr)r	�SelectorEventLooprr
r
rr9s�&SelectEventLoopTests.create_event_loopN�r*r+r,r9r
r
r
rr�sr�c@seZdZdd�ZdS)�ProactorEventLoopTestscCst��Sr)r	r�rr
r
rr9sz(ProactorEventLoopTests.create_event_loopNr�r
r
r
rr�sr��KqueueSelectorc@seZdZdd�ZdS)�KqueueEventLoopTestscCst�t���Sr)r	r��	selectorsr�rr
r
rr9s�z&KqueueEventLoopTests.create_event_loopNr�r
r
r
rr�sr��
EpollSelectorc@seZdZdd�ZdS)�EPollEventLoopTestscCst�t���Sr)r	r�r�r�rr
r
rr9'sz%EPollEventLoopTests.create_event_loopNr�r
r
r
rr�$sr��PollSelectorc@seZdZdd�ZdS)�PollEventLoopTestscCst�t���Sr)r	r�r�r�rr
r
rr9.sz$PollEventLoopTests.create_event_loopNr�r
r
r
rr�+sr�c@seZdZdd�ZdS)r�cCst�t���Sr)r	r�r�ZSelectSelectorrr
r
rr95sr�Nr�r
r
r
rr�2s�__main__)%r	r�rSr�rqr�rrr�testrZtest.supportrZtest.test_asynciorrIry�ImportErrorr�Protocolr
r.r5rPrur�r�ZTestCaser�r�r�r�r�r�r�r*�mainr
r
r
r�<module>sb
&.m������