
    <eS                        	 d dl Z d dlZd dlZd dlZd dlZd dlZd dlZd dl mZ d dl mZ d dlm	Z	 d dl
mZ d dlmZ d dlmZ d dlmZ 	 d dlZn# e$ r dZY nw xY wd	 Z G d
 de j                  Z G d de j                  Z G d d          Z G d de          Z G d de          Z G d dee          Zej        dk    r) G d deej                  Z G d deej                  Znxd dl Z  e!e d          r G d deej                  Z" e!e d          r G d d eej                  Z# e!e d!          r G d" d#eej                  Z$ G d$ deej                  Ze%d%k    r ej&                     dS dS )&    N)base_events)	constants)mock)support)	os_helper)socket_helper)utilsc                  .    t          j        d            d S N)asyncioset_event_loop_policy     6/usr/lib/python3.11/test/test_asyncio/test_sendfile.pytearDownModuler      s    !$'''''r   c                   >     e Zd Zd	dZd Zd Zd Zd Z fdZ xZ	S )
MySendfileProtoNr   c                     d | _         d| _        d| _        |2|                                | _        |                                | _        t                      | _        || _        d S )NINITIALr   )		transportstatenbytescreate_future	connecteddone	bytearraydataclose_after)selfloopr   s      r   __init__zMySendfileProto.__init__   s\    
!//11DN**,,DIKK	&r   c                 L    | j         |vrt          d| j         d|          d S )Nzstate: z, expected: )r   AssertionError)r   expecteds     r   _assert_statezMySendfileProto._assert_state(   s8    :X%% !Q4:!Q!QX!Q!QRRR &%r   c                     || _         |                     d           d| _        | j        r| j                            d            d S d S )Nr   	CONNECTED)r   r%   r   r   
set_resultr   r   s     r   connection_madezMySendfileProto.connection_made,   sT    "9%%% 
> 	,N%%d+++++	, 	,r   c                 >    |                      d           d| _        d S )Nr'   EOF)r%   r   r   s    r   eof_receivedzMySendfileProto.eof_received3   s!    ;'''


r   c                     |                      dd           d| _        | j        r| j                            d            d S d S )Nr'   r,   CLOSED)r%   r   r   r(   r   excs     r   connection_lostzMySendfileProto.connection_lost7   sO    ;...
9 	'I  &&&&&	' 	'r   c                 J   |                      d           | xj        t          |          z  c_        | j                            |           t                                          |           | j        r+| j        | j        k    r| j        	                                 d S d S d S )Nr'   )
r%   r   lenr   extendsuperdata_receivedr   r   close)r   r   	__class__s     r   r8   zMySendfileProto.data_received=   s    ;'''s4yy 	d### 	#t/? ? ?N  """""	# 	# ? ?r   Nr   )
__name__
__module____qualname__r!   r%   r*   r.   r3   r8   __classcell__r:   s   @r   r   r      s        ' ' ' 'S S S, , ,  ' ' '# # # # # # # # #r   r   c                   ,    e Zd Zd Zd Zd Zd Zd ZdS )MyProtoc                     d| _         d| _        t                      | _        |                                | _        d | _        d S NF)startedclosedr   r   r   futr   )r   r    s     r   r!   zMyProto.__init__H   s9    KK	%%''r   c                 "    d| _         || _        d S NT)rE   r   r)   s     r   r*   zMyProto.connection_madeO   s    "r   c                 :    | j                             |           d S r   )r   r6   )r   r   s     r   r8   zMyProto.data_receivedS   s    	r   c                 H    d| _         | j                            d            d S rI   )rF   rG   r(   r1   s     r   r3   zMyProto.connection_lostV   s%    D!!!!!r   c                 $   K   | j          d {V  d S r   )rG   r-   s    r   wait_closedzMyProto.wait_closedZ   s      hr   N)r<   r=   r>   r!   r*   r8   r3   rM   r   r   r   rB   rB   F   s_          # # #  " " "    r   rB   c                   v     e Zd Zddz  ZdZd Ze fd            Ze fd            Z fdZ	 fdZ
d	 Z xZS )
SendfileBase   xi     c                     t           r   )NotImplementedErrorr-   s    r   create_event_loopzSendfileBase.create_event_loopj   s    !!r   c                     t          t          j        d          5 }|                    | j                   d d d            n# 1 swxY w Y   t                                                       d S )Nwb)openr   TESTFNwriteDATAr7   
setUpClass)clsfpr:   s     r   r[   zSendfileBase.setUpClassm   s    )"D)) 	RHHSX	 	 	 	 	 	 	 	 	 	 	 	 	 	 	s   AA
Ac                     t          j        t           j                   t                                                       d S r   )r   unlinkrX   r7   tearDownClassr\   r:   s    r   r`   zSendfileBase.tearDownClasss   s3    )***r   c                 *   t          t          j        d          | _        |                     | j        j                   |                                 | _        |                     | j                   t                      
                                 d S )Nrb)rW   r   rX   file
addCleanupr9   rT   r    set_event_loopr7   setUpr   r:   s    r   rg   zSendfileBase.setUpx   sk    )400		(((**,,	DI&&&r   c                     | j                                         st          j        | j                    |                                  t          j                     t                                                       d S r   )	r    	is_closed
test_utilsrun_briefly
doCleanupsr   
gc_collectr7   tearDownrh   s    r   ro   zSendfileBase.tearDown   sg    y""$$ 	."49---r   c                 6    | j                             |          S r   )r    run_until_complete)r   coros     r   run_loopzSendfileBase.run_loop   s    y++D111r   )r<   r=   r>   rZ   BUF_SIZErT   classmethodr[   r`   rg   ro   rs   r?   r@   s   @r   rO   rO   ^   s         >"DH" " "     [
         [         2 2 2 2 2 2 2r   rO   c                   |     e Zd Ze fd            Ze fd            ZddZd ZddZd Z	d	 Z
d
 Zd Zd Z xZS )SockSendfileMixinc                     t           j        | _        dt           _        t                                                       d S )Ni @  )r   !SENDFILE_FALLBACK_READBUFFER_SIZE_SockSendfileMixin__old_bufsizer7   r[   ra   s    r   r[   zSockSendfileMixin.setUpClass   s2    %G6?	3r   c                 j    | j         t          _        t                                                       d S r   )rz   r   ry   r7   r`   ra   s    r   r`   zSockSendfileMixin.tearDownClass   s*    696G	3r   Tc                     t          j         t           j        t           j                  }|                    d           |r|                     |j                   |S rD   )socketAF_INETSOCK_STREAMsetblockingre   r9   )r   cleanupsocks      r   make_socketzSockSendfileMixin.make_socket   sM    }V^V-?@@ 	(OODJ'''r   c                 f    |                     t          j        t          j        | j                   d S r   )
setsockoptr}   
SOL_SOCKET	SO_RCVBUFrt   )r   r   s     r   reduce_receive_buffer_sizez,SockSendfileMixin.reduce_receive_buffer_size   s(     	)6+;T]KKKKKr   Nc                     |                     t          j        t          j        | j                   ||                    | j                   d S d S )N)high)r   r}   r   	SO_SNDBUFrt   set_write_buffer_limits)r   r   r   s      r   reduce_send_buffer_sizez)SockSendfileMixin.reduce_send_buffer_size   sO    
 	)6+;T]KKK --4=-AAAAA ! r   c                 D    t           j                  t          j                    }                     d          }|                    t          j        |f                                 j                            fd|                     	                    |                                            }                      j        
                    |d|f                                          |            fd}                     |           |fS )NF)r   c                       S r   r   )protos   r   <lambda>z8SockSendfileMixin.prepare_socksendfile.<locals>.<lambda>   s    E r   )r   z	127.0.0.1c                      j         @ j                                                                                                                                                                                                          d S r   )r   r9   rs   rM   )r   r   servers   r   r   z7SockSendfileMixin.prepare_socksendfile.<locals>.cleanup   sp    * %%'''e//11222LLNNNMM&,,../////r   )rB   r    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ty66MMM  7  *  * + +''111!!di,,TK3FGGHHH$$T***	0 	0 	0 	0 	0 	0 	0 	   U{r   c                    |                                  \  }}|                     | j                            || j                            }|                                 |                     |                                           |                     |t          | j	                             |                     |j
        | j	                   |                     | j                                        t          | j	                             d S r   )r   rs   r    sock_sendfilerd   r9   rM   assertEqualr5   rZ   r   tellr   r   r   rets       r   test_sock_sendfile_successz,SockSendfileMixin.test_sock_sendfile_success   s    //11emmDI33D$)DDEE

e''))***c$)nn---TY///))3ty>>:::::r   c                    |                                  \  }}|                     | j                            || j        dd                    }|                                 |                     |                                           |                     |j        | j	        dd                    |                     | j        
                                d           |                     |d           d S )N  i  i  )r   rs   r    r   rd   r9   rM   r   r   rZ   r   r   s       r   (test_sock_sendfile_with_offset_and_countz:SockSendfileMixin.test_sock_sendfile_with_offset_and_count   s    //11emmDI33D$)48$@ @ A A

e''))***TYtDy%9:::))4000d#####r   c           	         |                                  \  }}t          j                    5 }|                     | j                            ||dd                     }d d d            n# 1 swxY w Y   |                                 |                     |                                           |                     |d           |                     | j	        
                                d           d S r;   )r   tempfileTemporaryFilers   r    r   r9   rM   r   rd   r   )r   r   r   fr   s        r   test_sock_sendfile_zero_sizez.SockSendfileMixin.test_sock_sendfile_zero_size   s'   //11e#%% 	B--	 7 7a894!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                    ddz  }|                                  \  }}|                     | j                            ||                     |                     | j                            || j                            }|                     | j                            ||                     |                                 |                     |                                           |                     |t          | j
                             || j
        z   |z   }|                     |j        |           |                     | j                                        t          | j
                             d S )Ns   mix_regular_sendrQ   )r   rs   r    sock_sendallr   rd   r9   rM   r   r5   rZ   r   r   )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di,,T377888mmDI33D$)DDEEdi,,T377888

e''))***c$)nn---?S(X...))3ty>>:::::r   )Tr   )r<   r=   r>   ru   r[   r`   r   r   r   r   r   r   r   r   r?   r@   s   @r   rw   rw      s            [
         [    L L L
B B B B  6; ; ;	$ 	$ 	$	. 	. 	.; ; ; ; ; ; ;r   rw   c                   ^   e Zd ZddddZ ej        ej        dk    d          d             Zd Z	d	 Z
d
 Zd Zd Zd Zd Zd Zd Zd Zd Z ej        ej                            d          d          d             Zd Z ej         eed           d          d             Zd ZdS )SendfileMixinFr   is_sslr   c                    t          j                    }t           j        |          |rCt          s                     d           t          j                    }t          j                    }nd }d }t          j	        t          j
        t          j                  }|                    t           j        |f                                 j                            fd||                                         |           |rt           j        }nd }t          j	        t          j
        t          j                  }|                    t           j        |f           t           j                                        j                            fd|||                    \  }	}
                     ||	            fd	}                     |           fS )
N)r    r   zNo ssl modulec                       S r   r   )	srv_protos   r   r   z0SendfileMixin.prepare_sendfile.<locals>.<lambda>      I r   )r   ssl)r    c                       S r   r   )	cli_protos   r   r   z0SendfileMixin.prepare_sendfile.<locals>.<lambda>  r   r   )r   r   server_hostname)r   c                  J   j                                           j                                                              j                                        j                                                                                                                   d S r   )r   r9   rs   r   rM   )r   r   r   r   s   r   r   z/SendfileMixin.prepare_sendfile.<locals>.cleanup  s    %%'''%%'''MM).)))MM).)))LLNNNMM&,,../////r   )r   r   r   r    r   skipTestrk   simple_server_sslcontextsimple_client_sslcontextr}   r~   r   r   r   rs   r   r   connectcreate_connectionr   re   )r   r   r   r   srv_ctxcli_ctxr   r   cli_socktrprr   r   r   r   s   `           @@@r   prepare_sendfilezSendfileMixin.prepare_sendfile   s   -//#0;= = =	 	 /o... 9;;G 9;;GGGG=1CDD})40111ty66H'  7  ;  ; < <''111 	#+0OO"O=1CDD-,d3444#333	ty::H  ;  :  : ; ;B 	$$X$<<<	0 	0 	0 	0 	0 	0 	0 	0 	   )##r   win32zUDP sockets are not supportedc                    |                      | j                            t          j        t
          j                            \  }}	 |                     t          d          5  |                      | j        	                    || j
                             d d d            n# 1 swxY w Y   |                     d| j
                                                   |                                 d S # |                                 w xY w)N)familynot supportedr   )rs   r    create_datagram_endpointr   DatagramProtocolr}   r~   assertRaisesRegexRuntimeErrorsendfilerd   r   r   r9   )r   r   r   s      r   test_sendfile_not_supportedz)SendfileMixin.test_sendfile_not_supported(  s$   I..(~ / ' '( (B	''oFF 7 7I&&r49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 HHJJJJJBHHJJJJs0   C1 #4B#C1 #B''C1 *B'+0C1 1Dc                 r   |                                  \  }}|                     | j                            |j        | j                            }|j                                         |                     |j                   |                     |t          | j
                             |                     |j        t          | j
                             |                     |j        | j
                   |                     | j                                        t          | j
                             d S r   r   rs   r    r   r   rd   r9   r   r   r5   rZ   r   r   r   r   r   r   r   s       r   test_sendfilezSendfileMixin.test_sendfile7  s    #4466	9mmIy2DI>>@ @!!###in%%%c$)nn---)3ty>>:::333))3ty>>:::::r   c                                                       \  }} fd}| j        _                              j                            |j         j                            }|j                                                              |j                    	                    |t           j                              	                    |j        t           j                              	                    |j         j                    	                     j                                        t           j                             d S )Nc                 T    t           j                            j        | |||          S r   r   BaseEventLoop_sendfile_nativer    transprd   offsetcountr   s       r   sendfile_nativezCSendfileMixin.test_sendfile_force_fallback.<locals>.sendfile_nativeE  +    ,==	648 8 8r   )r   r    r   rs   r   r   rd   r9   r   r   r5   rZ   r   r   r   )r   r   r   r   r   s   `    r   test_sendfile_force_fallbackz*SendfileMixin.test_sendfile_force_fallbackB  s   #4466	9	8 	8 	8 	8 	8
 &5	"mmIy2DI>>@ @!!###in%%%c$)nn---)3ty>>:::333))3ty>>:::::r   c                     t           j        dk    r4t           j        t          j                  r                     d                                            \  }} fd}| j        _         	                    t          j
        d          5                        j                            |j         j        d                     d d d            n# 1 swxY w Y   |j                                                              |j                                        |j        d                                 j                                        d           d S )Nr   zFails on proactor event loopc                 T    t           j                            j        | |||          S r   r   r   s       r   r   zMSendfileMixin.test_sendfile_force_unsupported_native.<locals>.sendfile_native[  r   r   r   Ffallbackr   )sysplatform
isinstancer    r   ProactorEventLoopr   r   r   r   SendfileNotAvailableErrorrs   r   r   rd   r9   r   r   r   r   )r   r   r   r   s   `   r   &test_sendfile_force_unsupported_nativez4SendfileMixin.test_sendfile_force_unsupported_nativeU  s   <7""$)W%>?? ><===#4466	9	8 	8 	8 	8 	8
 &5	"##G$E$35 5 	4 	4MM	""9#6	,1 # 3 34 4 4	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	!!###in%%%)1---))1-----s   ;CCCc                 v   |                      d          \  }}|                     | j                            |j        | j                            }|j                                         |                     |j                   |                     |t          | j
                             |                     |j        t          | j
                             |                     |j        | j
                   |                     | j                                        t          | j
                             d S )NTr   r   r   s       r   test_sendfile_sslzSendfileMixin.test_sendfile_sslm  s    #44D4AA	9mmIy2DI>>@ @!!###in%%%c$)nn---)3ty>>:::333))3ty>>:::::r   c                     |                                  \  }}|j                                         |                     t          d          5  |                     | j                            |j        | j                             d d d            n# 1 swxY w Y   |                     |j	                   | 
                    |j        d           | 
                    | j                                        d           d S )Nz
is closingr   )r   r   r9   r   r   rs   r    r   rd   r   r   r   r   r   r   r   s      r    test_sendfile_for_closing_transpz.SendfileMixin.test_sendfile_for_closing_transpx  s'   #4466	9!!#####L,?? 	N 	NMM$),,Y-@$)LLMMM	N 	N 	N 	N 	N 	N 	N 	N 	N 	N 	N 	N 	N 	N 	Nin%%%)1---))1-----s   9BBBc                    |                                  \  }}ddz  }ddz  }|j                            |           |                     | j                            |j        | j                            }|j                            |           |j                                         |                     |j                   | 	                    |t          | j                             | 	                    |j        || j        z   |z              | 	                    | j                                        t          | j                             d S )Ns   PREFIX__   s   --SUFFIXr   r   rY   rs   r    r   rd   r9   r   r   r5   rZ   r   r   r   r   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#!!&)))mmIy2DI>>@ @!!&)))!!###in%%%c$)nn---$));f)DEEE))3ty>>:::::r   c                    |                      d          \  }}ddz  }ddz  }|j                            |           |                     | j                            |j        | j                            }|j                            |           |j                                         |                     |j                   | 	                    |t          | j                             | 	                    |j        || j        z   |z              | 	                    | j                                        t          | j                             d S )NTr   s   zxcvbnmr   s
   0987654321r   r   s         r   #test_sendfile_ssl_pre_and_post_dataz1SendfileMixin.test_sendfile_ssl_pre_and_post_data  s)   #44D4AA	9d"%!!&)))mmIy2DI>>@ @!!&)))!!###in%%%c$)nn---$));f)DEEE))3ty>>:::::r   c                    |                                  \  }}|                     | j                            |j        | j        dd                    }|j                                         |                     |j                   |                     |d           |                     |j	        d           |                     |j
        | j        dd                    |                     | j                                        d           d S )Nr   d   L  r   rs   r    r   r   rd   r9   r   r   r   r   rZ   r   r   s       r   test_sendfile_partialz#SendfileMixin.test_sendfile_partial  s    #4466	9mmIy2DItSIIK K!!###in%%%c""")3///49)=>>>))400000r   c                    |                      d          \  }}|                     | j                            |j        | j        dd                    }|j                                         |                     |j                   |                     |d           |                     |j	        d           |                     |j
        | j        dd                    |                     | j                                        d           d S )NTr   r   r   r   r   r   s       r   test_sendfile_ssl_partialz'SendfileMixin.test_sendfile_ssl_partial  s    #44D4AA	9mmIy2DItSIIK K!!###in%%%c""")3///49)=>>>))400000r   c                    |                      t          | j                            \  }}|                     | j                            |j        | j                            }|j                                         |                     |j	                   | 
                    |t          | j                             | 
                    |j        t          | j                             | 
                    |j        | j                   | 
                    | j                                        t          | j                             d S )Nr   )r   r5   rZ   rs   r    r   r   rd   r9   r   r   r   r   r   r   s       r   (test_sendfile_close_peer_after_receivingz6SendfileMixin.test_sendfile_close_peer_after_receiving  s   #44DI  5  (  (	9mmIy2DI>>@ @!!###in%%%c$)nn---)3ty>>:::333))3ty>>:::::r   c                 j   |                      dt          | j                            \  }}|                     | j                            |j        | j                            }|                     |j                   | 	                    |t          | j                             | 	                    |j
        t          | j                             | 	                    |j        | j                   | 	                    | j                                        t          | j                             d S )NTr   )r   r5   rZ   rs   r    r   r   rd   r   r   r   r   r   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mmIy2DI>>@ @in%%%c$)nn---)3ty>>:::333))3ty>>:::::r   sunoszDoesn't work on Solarisc                    |                      d          \  }}|                     t                    5  |                     | j                            |j        | j                             d d d            n# 1 swxY w Y   |                     |j                   | 	                    d|j
        cxk    ot          | j                  k     nc |j
                   | 	                    d| j                                        cxk    ot          | j                  k     nc | j                                                   | 	                    |j                                                   d S )Nr   r  )r   assertRaisesConnectionErrorrs   r    r   r   rd   r   
assertTruer   r5   rZ   r   
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MM	""9#6	BBD D D	D 	D 	D 	D 	D 	D 	D 	D 	D 	D 	D 	D 	D 	D 	D 	in%%%	 0AAAA3ty>>AAAA!(	* 	* 	*	 0 0AAAA3ty>>AAAA	((	* 	* 	*	+668899999s   9A99A= A=c                 0     fd}| j         _                             d          \  }}                     t                    5  	                       j                             |j         j                             n?# t          $ r2}|j
        t          j        k    rt          j        dk    rt           d }~ww xY w	 d d d            n# 1 swxY w Y                        |j                                        d|j        cxk    ot#           j                  k     nc |j                                        d j                                        cxk    ot#           j                  k     nc  j                                                   d S )Nc                 T    t           j                            j        | |||          S r   r   r   s       r   r   zcSendfileMixin.test_sendfile_fallback_close_peer_in_the_middle_of_receiving.<locals>.sendfile_native  r   r   r   r  darwin)r    r   r   r  r	  rs   r   r   rd   OSErrorerrno
EPROTOTYPEr   r   r   r
  r   r5   rZ   r   )r   r   r   r   es   `    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// 
	 
		I&&y':DIFFH H H H    7e...3<83K3K))H
	 
	 
	 
	 
	 
	 
	 
	 
	 
	 
	 
	 
	 
	 
	 	in%%%	 0AAAA3ty>>AAAA!(	* 	* 	*	 0 0AAAA3ty>>AAAA	((	* 	* 	* 	* 	*s6   C8B C
B=-B88B==CCCr   z"Don't have native sendfile supportc                                                       \  } j                                         fd} j                             |                      }                                                     t          d          5  j                            d           d d d            n# 1 swxY w Y                        |          } 	                    |t           j                             d S )Nc                     K                        d            j                             j        j                   d {V S r   )r(   r    r   r   rd   )r   rG   r   s   r   rr   z=SendfileMixin.test_sendfile_prevents_bare_write.<locals>.coro   sH      NN4   ++I,?KKKKKKKKKr   zsendfile is in progresss   data)r   r    r   create_taskrs   r   r   r   rY   r   r5   rZ   )r   r   rr   tr   r   rG   s   `    @@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...	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ mmAc$)nn-----s   B44B8;B8c                 D   t          j                    }d |j        _        t          j        j        |_        |                     t          d          5  | j
                            | j
                            |d d                     d d d            d S # 1 swxY w Y   d S )Nc                      dS rD   r   r   r   r   r   zPSendfileMixin.test_sendfile_no_fallback_for_fallback_transport.<locals>.<lambda>  s    5 r   zfallback is disabledFr   )r   Mockr  side_effectr   _SendfileModeFALLBACK_sendfile_compatibler   r   r    rq   r   r)   s     r   0test_sendfile_no_fallback_for_fallback_transportz>SendfileMixin.test_sendfile_no_fallback_for_fallback_transport  s    IKK	+8=	()2)@)I	&##L2HII 	E 	EI((	""9dU"CCE E E	E 	E 	E 	E 	E 	E 	E 	E 	E 	E 	E 	E 	E 	E 	E 	E 	E 	Es   6BBBN)r<   r=   r>   r   unittestskipIfr   r   r   r   r   r   r   r   r   r   r   r   r  r  
startswithr  r  hasattrosr  r!  r   r   r   r   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 Er   r   c                       e Zd ZdS )SendfileTestsBaseN)r<   r=   r>   r   r   r   r(  r(    s        Dr   r(  r   c                       e Zd Zd ZdS )SelectEventLoopTestsc                 (    t          j                    S r   )r   SelectorEventLoopr-   s    r   rT   z&SelectEventLoopTests.create_event_loop      ,...r   Nr<   r=   r>   rT   r   r   r   r*  r*    #        	/ 	/ 	/ 	/ 	/r   r*  c                       e Zd Zd ZdS )ProactorEventLoopTestsc                 (    t          j                    S r   )r   r   r-   s    r   rT   z(ProactorEventLoopTests.create_event_loop$  r-  r   Nr.  r   r   r   r1  r1  !  r/  r   r1  KqueueSelectorc                       e Zd Zd ZdS )KqueueEventLoopTestsc                 L    t          j        t          j                              S r   )r   r,  	selectorsr3  r-   s    r   rT   z&KqueueEventLoopTests.create_event_loop.  s#    0,..0 0 0r   Nr.  r   r   r   r5  r5  +  s#        0 0 0 0 0r   r5  EpollSelectorc                       e Zd Zd ZdS )EPollEventLoopTestsc                 L    t          j        t          j                              S r   )r   r,  r7  r8  r-   s    r   rT   z%EPollEventLoopTests.create_event_loop6  s    01H1J1JKKKr   Nr.  r   r   r   r:  r:  3  s(        L L L L Lr   r:  PollSelectorc                       e Zd Zd ZdS )PollEventLoopTestsc                 L    t          j        t          j                              S r   )r   r,  r7  r<  r-   s    r   rT   z$PollEventLoopTests.create_event_loop=  s    01G1I1IJJJr   Nr.  r   r   r   r>  r>  :  s(        K K K K Kr   r>  c                       e Zd Zd ZdS )r*  c                 L    t          j        t          j                              S r   )r   r,  r7  SelectSelectorr-   s    r   rT   z&SelectEventLoopTests.create_event_loopD  s    ,Y-E-G-GHHHr   Nr.  r   r   r   r*  r*  A  s(        	I 	I 	I 	I 	Ir   __main__)'r   r  r&  r}   r   r   r"  r   r   r   testr   test.supportr   r   test.test_asyncior	   rk   r   ImportErrorr   Protocolr   rB   rO   rw   r   r(  r   TestCaser*  r1  r7  r%  r5  r:  r>  r<   mainr   r   r   <module>rK     s   '   				  



                           " " " " " " & & & & & & 1 1 1 1 1 1JJJJ   
CCC( ( ('# '# '# '# '#g& '# '# '#T    g   0+2 +2 +2 +2 +2 +2 +2 +2\j; j; j; j; j; j; j; j;ZYE YE YE YE YEL YE YE YEx	 	 	 	 	'8 	 	 	 <7/ / / / /0)2/ / // / / / /!2!+!4/ / / / wy*++ 0	0 	0 	0 	0 	0#4#-#6	0 	0 	0 wy/** L	L 	L 	L 	L 	L"3","5	L 	L 	L wy.)) K	K 	K 	K 	K 	K!2!+!4	K 	K 	KI I I I I0)2I I I zHMOOOOO s   	A AA