HEX
Server: Microsoft-IIS/10.0
System: Windows NT ITPWINWEBSVR22 10.0 build 20348 (Windows Server 2022) AMD64
User: www.conferencesearch.co.uk (0)
PHP: 8.3.30
Disabled: NONE
Upload Files
File: D:/Python311/Lib/test/test_asyncio/__pycache__/test_sendfile.cpython-311.opt-1.pyc
�

��Vc�T���dZddlZddlZddlZddlZddlZddlZddlmZddlmZddlm	Z	ddl
mZddlm
Z
ddlmZdd	lmZ	ddlZn
#e$rdZYnwxYwd
�ZGd�dej��ZGd
�dej��ZGd�d��ZGd�de��ZGd�de��ZGd�dee��Zejdkr)Gd�deej��ZGd�deej��Znxddl Z e!e d��rGd�deej��Z"e!e d��rGd �d!eej��Z#e!e d"��rGd#�d$eej��Z$Gd%�deej��Ze%d&krej&��dSdS)'z!Tests for sendfile functionality.�N)�base_events)�	constants)�mock)�support)�	os_helper)�
socket_helper)�utilsc�.�tjd��dS�N)�asyncio�set_event_loop_policy���3D:\Python311\Lib\test\test_asyncio\test_sendfile.py�tearDownModulers���!�$�'�'�'�'�'rc�>��eZdZd	d�Zd�Zd�Zd�Zd�Z�fd�Z�xZ	S)
�MySendfileProtoNrc���d|_d|_d|_|�2|���|_|���|_t
��|_||_dS)N�INITIALr)	�	transport�state�nbytes�
create_future�	connected�done�	bytearray�data�close_after)�self�looprs   r�__init__zMySendfileProto.__init__s^�������
�����	-�!�/�/�1�1�D�N��*�*�,�,�D�I��K�K��	�&����rc�L�|j|vrtd|j�d|�����dS)Nzstate: z, expected: )r�AssertionError)r�expecteds  r�
_assert_statezMySendfileProto._assert_state's?���:�X�%�	S� �!Q�4�:�!Q�!Q�X�!Q�!Q�R�R�R�	S�	Src��||_|�d��d|_|jr|j�d��dSdS)Nr�	CONNECTED)rr%rr�
set_result�rrs  r�connection_madezMySendfileProto.connection_made+sT��"������9�%�%�%� ��
��>�	,��N�%�%�d�+�+�+�+�+�	,�	,rc�>�|�d��d|_dS)Nr'�EOF)r%r�rs r�eof_receivedzMySendfileProto.eof_received2s!�����;�'�'�'���
�
�
rc��|�dd��d|_|jr|j�d��dSdS)Nr'r,�CLOSED)r%rrr(�r�excs  r�connection_lostzMySendfileProto.connection_lost6sO�����;��.�.�.���
��9�	'��I� � ��&�&�&�&�&�	'�	'rc�J��|�d��|xjt|��z
c_|j�|��t���|��|jr+|j|jkr|j�	��dSdSdS)Nr')
r%r�lenr�extend�super�
data_receivedrr�close)rr�	__class__s  �rr8zMySendfileProto.data_received<s�������;�'�'�'����s�4�y�y� ����	�������
�����d�#�#�#���	#���t�/?� ?�	#��N� � �"�"�"�"�"�	#�	#�	#�	#r�Nr)
�__name__�
__module__�__qualname__r!r%r*r.r3r8�
__classcell__�r:s@rrrs��������'�'�'�'�S�S�S�,�,�,����'�'�'�#�#�#�#�#�#�#�#�#rrc�,�eZdZd�Zd�Zd�Zd�Zd�ZdS)�MyProtoc��d|_d|_t��|_|���|_d|_dS�NF)�started�closedrrr�futr)rr s  rr!zMyProto.__init__Gs9���������K�K��	��%�%�'�'�������rc�"�d|_||_dS�NT)rErr)s  rr*zMyProto.connection_madeNs�����"����rc�:�|j�|��dSr)rr6)rrs  rr8zMyProto.data_receivedRs���	��������rc�H�d|_|j�d��dSrI)rFrGr(r1s  rr3zMyProto.connection_lostUs%���������D�!�!�!�!�!rc��$K�|j�d{V��dSr)rGr-s r�wait_closedzMyProto.wait_closedYs�����h���������rN)r<r=r>r!r*r8r3rMrrrrBrBEs_���������#�#�#����"�"�"�����rrBc�v��eZdZddzZdZd�Ze�fd���Ze�fd���Z�fd�Z	�fd�Z
d	�Z�xZS)
�SendfileBase�xi�c��t�r)�NotImplementedErrorr-s r�create_event_loopzSendfileBase.create_event_loopis��!�!rc����ttjd��5}|�|j��ddd��n#1swxYwYt�����dS)N�wb)�openr�TESTFN�write�DATAr7�
setUpClass)�cls�fpr:s  �rr[zSendfileBase.setUpClassls����
�)�"�D�
)�
)�	�R��H�H�S�X����	�	�	�	�	�	�	�	�	�	�	����	�	�	�	�
���������s�A�A�
Ac���tjtj��t�����dSr)r�unlinkrXr7�
tearDownClass�r\r:s �rr`zSendfileBase.tearDownClassrs3������)�*�*�*�
���������rc�*��ttjd��|_|�|jj��|���|_|�|j��t���
��dS)N�rb)rWrrX�file�
addCleanupr9rTr �set_event_loopr7�setUp�rr:s �rrgzSendfileBase.setUpwsk�����)�4�0�0��	�����	��(�(�(��*�*�,�,��	����D�I�&�&�&�
���
�
�����rc���|j���stj|j��|���tj��t�����dSr)	r �	is_closed�
test_utils�run_briefly�
doCleanupsr�
gc_collectr7�tearDownrhs �rrozSendfileBase.tearDown~sg����y�"�"�$�$�	.��"�4�9�-�-�-������������
���������rc�6�|j�|��Sr)r �run_until_complete)r�coros  r�run_loopzSendfileBase.run_loop�s���y�+�+�D�1�1�1r)
r<r=r>rZ�BUF_SIZErT�classmethodr[r`rgrorsr?r@s@rrOrO]s���������>�"�D��H�"�"�"�������[��
� � � � ��[� �����������2�2�2�2�2�2�2rrOc�|��eZdZe�fd���Ze�fd���Zd
d�Zd�Zdd�Zd�Z	d	�Z
d
�Zd�Zd�Z
�xZS)�SockSendfileMixinc���tj|_dt_t�����dS)Ni@)r�!SENDFILE_FALLBACK_READBUFFER_SIZE�_SockSendfileMixin__old_bufsizer7r[ras �rr[zSockSendfileMixin.setUpClass�s2���%�G���6?�	�3�
���������rc�j��|jt_t�����dSr)rzrryr7r`ras �rr`zSockSendfileMixin.tearDownClass�s*���69�6G�	�3�
���������rTc��tjtjtj��}|�d��|r|�|j��|SrD)�socket�AF_INET�SOCK_STREAM�setblockingrer9)r�cleanup�socks   r�make_socketzSockSendfileMixin.make_socket�sM���}�V�^�V�-?�@�@����������	(��O�O�D�J�'�'�'��rc�f�|�tjtj|j��dSr)�
setsockoptr}�
SOL_SOCKET�	SO_RCVBUFrt)rr�s  r�reduce_receive_buffer_sizez,SockSendfileMixin.reduce_receive_buffer_size�s(��	
����)�6�+;�T�]�K�K�K�K�KrNc��|�tjtj|j��|�|�|j���dSdS)N)�high)r�r}r��	SO_SNDBUFrt�set_write_buffer_limits)rr�rs   r�reduce_send_buffer_sizez)SockSendfileMixin.reduce_send_buffer_size�sV��
	
����)�6�+;�T�]�K�K�K��	B��-�-�4�=�-�A�A�A�A�A�	B�	Brc�D����t�j���tj��}��d���}|�tj|f�����j��fd�|��������	|������}���j�
|d|f������|�����fd�}��|��|�fS)NF)r�c����Srr)�protos�r�<lambda>z8SockSendfileMixin.prepare_socksendfile.<locals>.<lambda>�s���E�r)r�z	127.0.0.1c����j�@�j�����������������������dSr)rr9rsrM)r�r�servers���rr�z7SockSendfileMixin.prepare_socksendfile.<locals>.cleanup�sr�����
3���%�%�'�'�'��
�
�e�/�/�1�1�2�2�2��L�L�N�N�N��M�M�&�,�,�.�.�/�/�/�/�/r)
rBr r�find_unused_portr��bind�HOSTrs�
create_serverr��sock_connectr�re)r�port�srv_sockr�r�r�r�s`    @@r�prepare_socksendfilez&SockSendfileMixin.prepare_socksendfile�s,�������	�"�"���-�/�/���#�#�E�#�2�2���
�
�}�)�4�0�1�1�1����t�y�6�6��M�M�M�� 7� *� *�+�+���'�'��1�1�1����!�!���
�
�d�i�,�,�T�K��3F�G�G�H�H�H��$�$�T�*�*�*�	0�	0�	0�	0�	0�	0�	0�	
���� � � ��U�{�rc��|���\}}|�|j�||j����}|���|�|�����|�|t|j	����|�|j
|j	��|�|j���t|j	����dSr)r�rsr �
sock_sendfilerdr9rM�assertEqualr5rZr�tell�rr�r��rets    r�test_sock_sendfile_successz,SockSendfileMixin.test_sock_sendfile_success�s����/�/�1�1���e��m�m�D�I�3�3�D�$�)�D�D�E�E���
�
�����
�
�e�'�'�)�)�*�*�*�����c�$�)�n�n�-�-�-������T�Y�/�/�/��������)�)�3�t�y�>�>�:�:�:�:�:rc���|���\}}|�|j�||jdd����}|���|�|�����|�|j|j	dd���|�|j�
��d��|�|d��dS)N��i�i�)r�rsr r�rdr9rMr�rrZr�r�s    r�(test_sock_sendfile_with_offset_and_countz:SockSendfileMixin.test_sock_sendfile_with_offset_and_count�s����/�/�1�1���e��m�m�D�I�3�3�D�$�)�48�$�@�@�A�A���
�
�����
�
�e�'�'�)�)�*�*�*������T�Y�t�D�y�%9�:�:�:��������)�)�4�0�0�0�����d�#�#�#�#�#rc	���|���\}}tj��5}|�|j�||dd����}ddd��n#1swxYwY|���|�|�����|�|d��|�|j	�
��d��dSr;)r��tempfile�
TemporaryFilersr r�r9rMr�rdr�)rr�r��fr�s     r�test_sock_sendfile_zero_sizez.SockSendfileMixin.test_sock_sendfile_zero_size�s'���/�/�1�1���e�
�
#�
%�
%�	B���-�-��	� 7� 7��a�89�4�!A�!A�B�B�C�	B�	B�	B�	B�	B�	B�	B�	B�	B�	B�	B����	B�	B�	B�	B�	
�
�
�����
�
�e�'�'�)�)�*�*�*�����a� � � ��������)�)�1�-�-�-�-�-s�1A(�(A,�/A,c���ddz}|���\}}|�|j�||����|�|j�||j����}|�|j�||����|���|�|�����|�|t|j
����||j
z|z}|�|j|��|�|j���t|j
����dS)Nsmix_regular_sendrQ)
r�rsr �sock_sendallr�rdr9rMr�r5rZrr�)r�bufr�r�r�r$s      r�(test_sock_sendfile_mix_with_regular_sendz:SockSendfileMixin.test_sock_sendfile_mix_with_regular_send�s/��!�X�.���/�/�1�1���e��
�
�d�i�,�,�T�3�7�7�8�8�8��m�m�D�I�3�3�D�$�)�D�D�E�E���
�
�d�i�,�,�T�3�7�7�8�8�8��
�
�����
�
�e�'�'�)�)�*�*�*�����c�$�)�n�n�-�-�-����?�S�(�������X�.�.�.��������)�)�3�t�y�>�>�:�:�:�:�:r)Tr)r<r=r>rur[r`r�r�r�r�r�r�r�r�r?r@s@rrwrw�s��������������[��
� � � � ��[� �����L�L�L�
B�B�B�B����6;�;�;�	$�	$�	$�	.�	.�	.�;�;�;�;�;�;�;rrwc�^�eZdZddd�d�Zejejdkd��d���Zd�Z	d	�Z
d
�Zd�Zd�Z
d
�Zd�Zd�Zd�Zd�Zd�Zejej�d��d��d���Zd�Zejeed��d��d���Zd�ZdS)�
SendfileMixinFr��is_sslrc�����
��tj��}t�j|����|rCts��d��t
j��}t
j��}nd}d}tj	tj
tj��}|�tj
|f�����j��fd�||������
��|��|r
tj
}nd}tj	tj
tj��}|�tj
|f��t�j�������j��fd�|||�����\}	}
��||	������
�fd	�}��|����fS)
N)r rz
No ssl modulec����Srr)�	srv_protos�rr�z0SendfileMixin.prepare_sendfile.<locals>.<lambda>����I�r)r��ssl)r c����Srr)�	cli_protos�rr�z0SendfileMixin.prepare_sendfile.<locals>.<lambda>r�r)r�r��server_hostname)rc�J���j����j������j�����j��������������dSr)rr9rsrrM)r�rr�r�s����rr�z/SendfileMixin.prepare_sendfile.<locals>.cleanups������%�%�'�'�'���%�%�'�'�'��M�M�)�.�)�)�)��M�M�)�.�)�)�)��L�L�N�N�N��M�M�&�,�,�.�.�/�/�/�/�/r)rr�rr r��skipTestrk�simple_server_sslcontext�simple_client_sslcontextr}r~rr�r�rsr�r��connect�create_connectionr�re)rr�rr��srv_ctx�cli_ctxr�r��cli_sock�tr�prr�r�r�r�s`           @@@r�prepare_sendfilezSendfileMixin.prepare_sendfile�s��������-�/�/��#���0;�=�=�=�	��	��
/��
�
�o�.�.�.� �9�;�;�G� �9�;�;�G�G��G��G��=����1C�D�D���
�
�}�)�4�0�1�1�1����t�y�6�6�����H�'� 7� ;� ;�<�<���'�'��1�1�1��	#�+�0�O�O�"�O��=����1C�D�D�����-�,�d�3�4�4�4�#���3�3�3�	����t�y�:�:�����H��� ;� :� :�;�;���B�	
�$�$�X��$�<�<�<�	0�	0�	0�	0�	0�	0�	0�	0�	
���� � � ��)�#�#r�win32zUDP sockets are not supportedc��|�|j�tjt
j�����\}}	|�td��5|�|j�	||j
����ddd��n#1swxYwY|�d|j
�����|�
��dS#|�
��wxYw)N)�family�
not supportedr)rsr �create_datagram_endpointr�DatagramProtocolr}r~�assertRaisesRegex�RuntimeError�sendfilerdr�r�r9)rr�r�s   r�test_sendfile_not_supportedz)SendfileMixin.test_sendfile_not_supported's$������I�.�.��(��~�
/�
'�
'�(�(���B�	��'�'��o�F�F�
7�
7��
�
��I�&�&�r�4�9�5�5�7�7�7�
7�
7�
7�
7�
7�
7�
7�
7�
7�
7�
7����
7�
7�
7�
7�
���Q��	��� 0� 0�1�1�1�
�H�H�J�J�J�J�J��B�H�H�J�J�J�J���s0�C1�#4B#�C1�#B'�'C1�*B'�+0C1�1Dc�r�|���\}}|�|j�|j|j����}|j���|�|j��|�|t|j
����|�|jt|j
����|�|j|j
��|�|j�
��t|j
����dSr�r�rsr r�rrdr9rr�r5rZrrr��rr�r�r�s    r�
test_sendfilezSendfileMixin.test_sendfile6s���#�4�4�6�6��	�9��m�m��I���y�2�D�I�>�>�@�@����!�!�#�#�#��
�
�i�n�%�%�%�����c�$�)�n�n�-�-�-�����)�3�t�y�>�>�:�:�:��������3�3�3��������)�)�3�t�y�>�>�:�:�:�:�:rc�������\}}�fd�}|�j_���j�|j�j����}|j�����|j����	|t�j������	|jt�j������	|j
�j����	�j���t�j����dS)Nc�T��tj��j||||��Sr�r�
BaseEventLoop�_sendfile_nativer ��transprd�offset�countrs    �r�sendfile_nativezCSendfileMixin.test_sendfile_force_fallback.<locals>.sendfile_nativeD�+����,�=�=��	�6�4���8�8�
8r)r�r r�rsr�rrdr9rr�r5rZrrr�)rr�r�r�r�s`    r�test_sendfile_force_fallbackz*SendfileMixin.test_sendfile_force_fallbackAs���#�4�4�6�6��	�9�	8�	8�	8�	8�	8�
&5��	�"��m�m��I���y�2�D�I�>�>�@�@����!�!�#�#�#��
�
�i�n�%�%�%�����c�$�)�n�n�-�-�-�����)�3�t�y�>�>�:�:�:��������3�3�3��������)�)�3�t�y�>�>�:�:�:�:�:rc���tjdkr4t�jtj��r��d������\}}�fd�}|�j_��	tj
d��5���j�|j
�jd�����ddd��n#1swxYwY|j
�����|j����|jd�����j���d��dS)Nr�zFails on proactor event loopc�T��tj��j||||��Srr�r�s    �rr�zMSendfileMixin.test_sendfile_force_unsupported_native.<locals>.sendfile_nativeZr�rr�F��fallbackr)�sys�platform�
isinstancer r�ProactorEventLoopr�r�r�r��SendfileNotAvailableErrorrsr�rrdr9rr�rr�)rr�r�r�s`   r�&test_sendfile_force_unsupported_nativez4SendfileMixin.test_sendfile_force_unsupported_nativeTs�����<�7�"�	>��$�)�W�%>�?�?�
>��
�
�<�=�=�=�#�4�4�6�6��	�9�	8�	8�	8�	8�	8�
&5��	�"�
�
#�
#�G�$E�$3�5�5�	4�	4��M�M��	�"�"�9�#6��	�,1�#�3�3�
4�
4�
4�	4�	4�	4�	4�	4�	4�	4�	4�	4�	4�	4����	4�	4�	4�	4�	��!�!�#�#�#��
�
�i�n�%�%�%�����)�1�-�-�-��������)�)�1�-�-�-�-�-s�;C�C�Cc�v�|�d���\}}|�|j�|j|j����}|j���|�|j��|�|t|j
����|�|jt|j
����|�|j|j
��|�|j�
��t|j
����dS)NT�r�r�r�s    r�test_sendfile_sslzSendfileMixin.test_sendfile_sslls���#�4�4�D�4�A�A��	�9��m�m��I���y�2�D�I�>�>�@�@����!�!�#�#�#��
�
�i�n�%�%�%�����c�$�)�n�n�-�-�-�����)�3�t�y�>�>�:�:�:��������3�3�3��������)�)�3�t�y�>�>�:�:�:�:�:rc��|���\}}|j���|�td��5|�|j�|j|j����ddd��n#1swxYwY|�|j	��|�
|jd��|�
|j���d��dS)Nz
is closingr)
r�rr9r�r�rsr r�rdrr�rr��rr�r�s   r� test_sendfile_for_closing_transpz.SendfileMixin.test_sendfile_for_closing_transpws'��#�4�4�6�6��	�9���!�!�#�#�#�
�
#�
#�L�,�
?�
?�	N�	N��M�M�$�)�,�,�Y�-@�$�)�L�L�M�M�M�	N�	N�	N�	N�	N�	N�	N�	N�	N�	N�	N����	N�	N�	N�	N��
�
�i�n�%�%�%�����)�1�-�-�-��������)�)�1�-�-�-�-�-s�9B�B�Bc��|���\}}ddz}ddz}|j�|��|�|j�|j|j����}|j�|��|j���|�|j��|�	|t|j����|�	|j||jz|z��|�	|j�
��t|j����dS)NsPREFIX__�s--SUFFIX�r�rrYrsr r�rdr9rr�r5rZrr��rr�r��PREFIX�SUFFIXr�s      r�test_sendfile_pre_and_post_dataz-SendfileMixin.test_sendfile_pre_and_post_data�s$��#�4�4�6�6��	�9��t�#���t�#����!�!�&�)�)�)��m�m��I���y�2�D�I�>�>�@�@����!�!�&�)�)�)���!�!�#�#�#��
�
�i�n�%�%�%�����c�$�)�n�n�-�-�-�������$�)�);�f�)D�E�E�E��������)�)�3�t�y�>�>�:�:�:�:�:rc��|�d���\}}ddz}ddz}|j�|��|�|j�|j|j����}|j�|��|j���|�|j��|�	|t|j����|�	|j||jz|z��|�	|j�
��t|j����dS)NTr�szxcvbnmr�s
0987654321r�r�s      r�#test_sendfile_ssl_pre_and_post_dataz1SendfileMixin.test_sendfile_ssl_pre_and_post_data�s)��#�4�4�D�4�A�A��	�9��d�"����%����!�!�&�)�)�)��m�m��I���y�2�D�I�>�>�@�@����!�!�&�)�)�)���!�!�#�#�#��
�
�i�n�%�%�%�����c�$�)�n�n�-�-�-�������$�)�);�f�)D�E�E�E��������)�)�3�t�y�>�>�:�:�:�:�:rc��|���\}}|�|j�|j|jdd����}|j���|�|j��|�|d��|�|j	d��|�|j
|jdd���|�|j���d��dS)Nr��d�L�
r�rsr r�rrdr9rr�rrrZr�r�s    r�test_sendfile_partialz#SendfileMixin.test_sendfile_partial�s���#�4�4�6�6��	�9��m�m��I���y�2�D�I�t�S�I�I�K�K����!�!�#�#�#��
�
�i�n�%�%�%�����c�"�"�"�����)�3�/�/�/��������4��9�)=�>�>�>��������)�)�4�0�0�0�0�0rc��|�d���\}}|�|j�|j|jdd����}|j���|�|j��|�|d��|�|j	d��|�|j
|jdd���|�|j���d��dS)NTr�r�r�r�r�r�s    r�test_sendfile_ssl_partialz'SendfileMixin.test_sendfile_ssl_partial�s���#�4�4�D�4�A�A��	�9��m�m��I���y�2�D�I�t�S�I�I�K�K����!�!�#�#�#��
�
�i�n�%�%�%�����c�"�"�"�����)�3�/�/�/��������4��9�)=�>�>�>��������)�)�4�0�0�0�0�0rc��|�t|j�����\}}|�|j�|j|j����}|j���|�|j	��|�
|t|j����|�
|jt|j����|�
|j|j��|�
|j�
��t|j����dS)N�r)r�r5rZrsr r�rrdr9rr�rrr�r�s    r�(test_sendfile_close_peer_after_receivingz6SendfileMixin.test_sendfile_close_peer_after_receiving�s
��#�4�4��D�I��� 5� (� (��	�9��m�m��I���y�2�D�I�>�>�@�@����!�!�#�#�#��
�
�i�n�%�%�%�����c�$�)�n�n�-�-�-�����)�3�t�y�>�>�:�:�:��������3�3�3��������)�)�3�t�y�>�>�:�:�:�:�:rc�j�|�dt|j�����\}}|�|j�|j|j����}|�|j��|�	|t|j����|�	|j
t|j����|�	|j|j��|�	|j���t|j����dS)NTr�)
r�r5rZrsr r�rrdrr�rrr�r�s    r�,test_sendfile_ssl_close_peer_after_receivingz:SendfileMixin.test_sendfile_ssl_close_peer_after_receiving�s���#�4�4��S���^�^� 5� 5� 5��	�9��m�m��I���y�2�D�I�>�>�@�@���
�
�i�n�%�%�%�����c�$�)�n�n�-�-�-�����)�3�t�y�>�>�:�:�:��������3�3�3��������)�)�3�t�y�>�>�:�:�:�:�:r�sunoszDoesn't work on Solarisc���|�d���\}}|�t��5|�|j�|j|j����ddd��n#1swxYwY|�|j��|�	d|j
cxkot|j��knc|j
��|�	d|j�
��cxkot|j��knc|j�
����|�	|j�����dS)Nr�r)r��assertRaises�ConnectionErrorrsr r�rrdr�
assertTruerr5rZr��
is_closingr�s   r�3test_sendfile_close_peer_in_the_middle_of_receivingzASendfileMixin.test_sendfile_close_peer_in_the_middle_of_receiving�s��� $�4�4��4�F�F��	�9�
�
�
��
/�
/�	D�	D��M�M��	�"�"�9�#6��	�B�B�
D�
D�
D�	D�	D�	D�	D�	D�	D�	D�	D�	D�	D�	D����	D�	D�	D�	D�	
�
�
�i�n�%�%�%�����	� 0�A�A�A�A�3�t�y�>�>�A�A�A�A�!�(�	*�	*�	*������	��� 0� 0�A�A�A�A�3�t�y�>�>�A�A�A�A��	���(�(�	*�	*�	*����	�+�6�6�8�8�9�9�9�9�9s�9A9�9A=�A=c����fd�}|�j_��d���\}}��t��5���j�|j�j����ddd��n#1swxYwY��|j	����
d|jcxkot�j
��knc|j����
d�j���cxkot�j
��knc�j�����dS)Nc�T��tj��j||||��Srr�r�s    �rr�zcSendfileMixin.test_sendfile_fallback_close_peer_in_the_middle_of_receiving.<locals>.sendfile_native�r�rr�r)r r�r�rr	rsr�rrdrr
rr5rZr�)rr�r�r�s`   r�<test_sendfile_fallback_close_peer_in_the_middle_of_receivingzJSendfileMixin.test_sendfile_fallback_close_peer_in_the_middle_of_receiving�s����	8�	8�	8�	8�	8�
&5��	�"�#�4�4��4�F�F��	�9�
�
�
��
/�
/�	D�	D��M�M��	�"�"�9�#6��	�B�B�
D�
D�
D�	D�	D�	D�	D�	D�	D�	D�	D�	D�	D�	D����	D�	D�	D�	D�	
�
�
�i�n�%�%�%�����	� 0�A�A�A�A�3�t�y�>�>�A�A�A�A�!�(�	*�	*�	*������	��� 0� 0�A�A�A�A�3�t�y�>�>�A�A�A�A��	���(�(�	*�	*�	*�	*�	*s�9B�B�Br�z"Don't have native sendfile supportc���������\}��j�������fd�}�j�|����}�������td��5�j�d��ddd��n#1swxYwY��|��}��	|t�j����dS)Nc���K���d���j��j�j���d{V��Sr)r(r r�rrd)r�rGrs���rrrz=SendfileMixin.test_sendfile_prevents_bare_write.<locals>.coro�sH������N�N�4� � � ���+�+�I�,?���K�K�K�K�K�K�K�K�Krzsendfile is in progresssdata)r�r r�create_taskrsr�r�rrYr�r5rZ)rr�rr�tr�r�rGs`    @@r�!test_sendfile_prevents_bare_writez/SendfileMixin.test_sendfile_prevents_bare_write�sG����� $�4�4�6�6��	�9��i�%�%�'�'��	L�	L�	L�	L�	L�	L�	L�
�I�!�!�$�$�&�&�)�)���
�
�c����
�
#�
#�L�$=�?�?�	/�	/���%�%�g�.�.�.�	/�	/�	/�	/�	/�	/�	/�	/�	/�	/�	/����	/�	/�	/�	/��m�m�A��������c�$�)�n�n�-�-�-�-�-s�
B4�4B8�;B8c�D�tj��}d�|j_tjj|_|�td��5|j
�|j
�|dd�����ddd��dS#1swxYwYdS)Nc��dSrDrrrrr�zPSendfileMixin.test_sendfile_no_fallback_for_fallback_transport.<locals>.<lambda>s��5�rzfallback is disabledFr�)
r�Mockr�side_effectr�
_SendfileMode�FALLBACK�_sendfile_compatibler�r�r rqr�r)s  r�0test_sendfile_no_fallback_for_fallback_transportz>SendfileMixin.test_sendfile_no_fallback_for_fallback_transports����I�K�K�	�+8�=�	��(�)2�)@�)I�	�&�
�
#�
#�L�2H�
I�
I�	E�	E��I�(�(��	�"�"�9�d�U�"�C�C�
E�
E�
E�	E�	E�	E�	E�	E�	E�	E�	E�	E�	E�	E�	E����	E�	E�	E�	E�	E�	Es�6B�B�BN)r<r=r>r��unittest�skipIfr�r�r�r�r�r�r�r�r�r�r�rrr�
startswithrr�hasattr�osrrrrrr�r��s�������*/�A�)$�)$�)$�)$�)$�V�X�_�S�\�W�,�.M�N�N���O�N��	;�	;�	;�;�;�;�&.�.�.�0	;�	;�	;�.�.�.�;�;�;�;�;�;�	1�	1�	1�	1�	1�	1�
;�
;�
;�	;�	;�	;��X�_�S�\�,�,�W�5�5�.�0�0�:�:�0�0�:�*�*�*�(�X�_����Z�0�0�0�9�;�;�.�.�;�;�.� E�E�E�E�Err�c��eZdZdS)�SendfileTestsBaseN)r<r=r>rrrr#r#s�������Drr#r�c��eZdZd�ZdS)�SelectEventLoopTestsc�(�tj��Sr)r�SelectorEventLoopr-s rrTz&SelectEventLoopTests.create_event_loop����,�.�.�.rN�r<r=r>rTrrrr%r%�#������	/�	/�	/�	/�	/rr%c��eZdZd�ZdS)�ProactorEventLoopTestsc�(�tj��Sr)rr�r-s rrTz(ProactorEventLoopTests.create_event_loopr(rNr)rrrr,r,r*rr,�KqueueSelectorc��eZdZd�ZdS)�KqueueEventLoopTestsc�L�tjtj����Sr)rr'�	selectorsr.r-s rrTz&KqueueEventLoopTests.create_event_loop$s#���0��,�.�.�0�0�0rNr)rrrr0r0!s#������
0�
0�
0�
0�
0rr0�
EpollSelectorc��eZdZd�ZdS)�EPollEventLoopTestsc�L�tjtj����Sr)rr'r2r3r-s rrTz%EPollEventLoopTests.create_event_loop,s���0��1H�1J�1J�K�K�KrNr)rrrr5r5)s(������
L�
L�
L�
L�
Lrr5�PollSelectorc��eZdZd�ZdS)�PollEventLoopTestsc�L�tjtj����Sr)rr'r2r7r-s rrTz$PollEventLoopTests.create_event_loop3s���0��1G�1I�1I�J�J�JrNr)rrrr9r90s(������
K�
K�
K�
K�
Krr9c��eZdZd�ZdS)r%c�L�tjtj����Sr)rr'r2�SelectSelectorr-s rrTz&SelectEventLoopTests.create_event_loop:s���,�Y�-E�-G�-G�H�H�HrNr)rrrr%r%7s(������	I�	I�	I�	I�	Ir�__main__)'�__doc__rr!r}r�r�rrrr�testr�test.supportrr�test.test_asyncior	rkr��ImportErrorr�ProtocolrrBrOrwr�r#r��TestCaser%r,r2r r0r5r9r<�mainrrr�<module>rGs���'�'�����	�	�	�	�
�
�
�
�
�
�
�
���������������������������������"�"�"�"�"�"�&�&�&�&�&�&�1�1�1�1�1�1���J�J�J�J������
�C�C�C�����(�(�(�'#�'#�'#�'#�'#�g�&�'#�'#�'#�T�����g�����0+2�+2�+2�+2�+2�+2�+2�+2�\j;�j;�j;�j;�j;��j;�j;�j;�ZPE�PE�PE�PE�PE�L�PE�PE�PE�f	�	�	�	�	�
�'8�	�	�	��<�7��,I�/�/�/�/�/�0�)�2�/�/�/�/�/�/�/�/�!2�!+�!4�/�/�/�/������w�y�*�+�+�0�	0�	0�	0�	0�	0�#4�#-�#6�	0�	0�	0��w�y�/�*�*�L�	L�	L�	L�	L�	L�"3�",�"5�	L�	L�	L��w�y�.�)�)�K�	K�	K�	K�	K�	K�!2�!+�!4�	K�	K�	K�I�I�I�I�I�0�)�2�I�I�I��z����H�M�O�O�O�O�O��s�A�A�A