+
    BiS                     4   R t ^ RIt^ RIt^ RIt^ RIt^ RIt^ RIt^ RIt^ RIHt ^ RIH	t	 ^ RIH
t
 ^ RIHt ^ RIHt ^ RIHt ^ RIHt  ^ RItR	 t ! R
 R]P,                  4      t ! R R]P,                  4      t ! R R4      t ! R R]4      t ! R R]4      t ! R R]]4      t]P:                  R8X  d.    ! R R]]P<                  4      t ! R R]]P<                  4      t M^ RI!t!]"! ]!R4      '       d    ! R R]]P<                  4      t#]"! ]!R4      '       d    ! R R ]]P<                  4      t$]"! ]!R!4      '       d    ! R" R#]]P<                  4      t% ! R$ R]]P<                  4      t]&R%8X  d   ]PN                  ! 4        R# R#   ] d    Rt ELHi ; i)&z!Tests for sendfile functionality.N)base_events)	constants)mock)support)	os_helper)socket_helper)utilsc                  D    \         P                  P                  R 4       R # N)asyncioevents_set_event_loop_policy     6/usr/lib/python3.14/test/test_asyncio/test_sendfile.pytearDownModuler      s    NN))$/r   c                   T   a a ] tR t^t oRR ltR tR tR tR tV 3R lt	Rt
VtV ;t# )	MySendfileProtoc                    R V n         RV n        ^ V n        Ve+   VP                  4       V n        VP                  4       V n        \        4       V n        W n        R # )NINITIAL)		transportstatenbytescreate_future	connecteddone	bytearraydataclose_after)selfloopr   s   &&&r   __init__MySendfileProto.__init__   sL    
!//1DN**,DIK	&r   c                b    V P                   V9  d   \        R V P                   : RV: 24      hR# )zstate: z, expected: N)r   AssertionError)r   expecteds   &*r   _assert_stateMySendfileProto._assert_state(   s/    ::X% 74::.XL!QRR &r   c                    Wn         V P                  R 4       RV n        V P                  '       d   V P                  P	                  R4       R# R# )r   	CONNECTEDN)r   r&   r   r   
set_resultr   r   s   &&r   connection_madeMySendfileProto.connection_made,   s<    "9% 
>>>NN%%d+ r   c                6    V P                  R 4       RV n        R# )r)   EOFN)r&   r   r   s   &r   eof_receivedMySendfileProto.eof_received3   s    ;'
r   c                    V P                  R R4       RV n        V P                  '       d   V P                  P                  R4       R# R# )r)   r/   CLOSEDN)r&   r   r   r*   r   excs   &&r   connection_lostMySendfileProto.connection_lost7   s9    ;.
999II  & r   c                X  < V P                  R 4       V ;P                  \        V4      ,          un        V P                  P	                  V4       \
        SV `  V4       V P                  '       d:   V P                  V P                  8  d   V P                  P                  4        R# R# R# )r)   N)
r&   r   lenr   extendsuperdata_receivedr   r   close)r   r   	__class__s   &&r   r=   MySendfileProto.data_received=   sx    ;'s4y 		d#t/?/? ?NN  " !@r   )r   r   r   r   r   r   r   )N    )__name__
__module____qualname____firstlineno__r!   r&   r,   r1   r7   r=   __static_attributes____classdictcell____classcell__r?   __classdict__s   @@r   r   r      s)     'S,'# #r   r   c                   >   a  ] tR t^Ft o R tR tR tR tR tRt	V t
R# )MyProtoc                x    R V n         R V n        \        4       V n        VP	                  4       V n        RV n        R# )FN)startedclosedr   r   r   futr   )r   r    s   &&r   r!   MyProto.__init__H   s0    K	%%'r   c                     R V n         Wn        R# TN)rN   r   r+   s   &&r   r,   MyProto.connection_madeO   s    "r   c                <    V P                   P                  V4       R # r
   )r   r;   )r   r   s   &&r   r=   MyProto.data_receivedS   s    		r   c                J    R V n         V P                  P                  R4       R# rS   )rO   rP   r*   r5   s   &&r   r7   MyProto.connection_lostV   s    D!r   c                :   "   V P                   G R j  xL
  R #  L5ir
   )rP   r0   s   &r   wait_closedMyProto.wait_closedZ   s     hhs   )rO   r   rP   rN   r   N)rB   rC   rD   rE   r!   r,   r=   r7   rZ   rF   rG   rJ   s   @r   rL   rL   F   s#     #" r   rL   c                      a a ] tR t^^t oRR	,          tR
tR t]V 3R l4       t]V 3R l4       t	V 3R lt
V 3R ltR tRtVtV ;t# )SendfileBase   xc                    \         hr
   )NotImplementedErrorr0   s   &r   create_event_loopSendfileBase.create_event_loopg   s    !!r   c                   < \        \        P                  R 4      ;_uu_ 4       pVP                  V P                  4       RRR4       \
        SV `  4        R#   + '       g   i     L ; i)wbN)openr   TESTFNwriteDATAr<   
setUpClass)clsfpr?   s   & r   rj   SendfileBase.setUpClassj   sA    )""D))RHHSXX * *)s   AA(	c                l   < \         P                  ! \         P                  4       \        SV `  4        R # r
   )r   unlinkrg   r<   tearDownClassrk   r?   s   &r   rp   SendfileBase.tearDownClassp   s"    ))*r   c                  < \        \        P                  R 4      V n        V P	                  V P                  P
                  4       V P                  4       V n        V P                  V P                  4       \        SV `)  4        R# )rbN)rf   r   rg   file
addCleanupr>   rb   r    set_event_loopr<   setUpr   r?   s   &r   rx   SendfileBase.setUpu   sV    ))40			(**,	DII&r   c                   < V P                   P                  4       '       g!   \        P                  ! V P                   4       V P	                  4        \
        P                  ! 4        \        SV `!  4        R # r
   )	r    	is_closed
test_utilsrun_briefly
doCleanupsr   
gc_collectr<   tearDownry   s   &r   r   SendfileBase.tearDown|   sI    yy""$$""499-r   c                8    V P                   P                  V4      # r
   )r    run_until_complete)r   coros   &&r   run_loopSendfileBase.run_loop   s    yy++D11r   )ru   r    i     )rB   rC   rD   rE   ri   BUF_SIZErb   classmethodrj   rp   rx   r   r   rF   rG   rH   rI   s   @@r   r^   r^   ^   sX     
 %&DH"  
    2 2r   r^   c                      a a ] tR t^t o]V 3R l4       t]V 3R l4       tRR ltR tRR lt	R t
R tR tR	 tR
 tRtVtV ;t# )SockSendfileMixinc                d   < \         P                  V n        R\         n        \        SV `  4        R# )   Ni @  )r   !SENDFILE_FALLBACK_READBUFFER_SIZE_SockSendfileMixin__old_bufsizer<   rj   rq   s   &r   rj   SockSendfileMixin.setUpClass   s$    %GG6?	3r   c                N   < V P                   \        n        \        SV `  4        R # r
   )r   r   r   r<   rp   rq   s   &r   rp   SockSendfileMixin.tearDownClass   s    696G6G	3r   c                    \         P                   ! \         P                  \         P                  4      pVP                  R 4       V'       d   V P	                  VP
                  4       V# F)socketAF_INETSOCK_STREAMsetblockingrv   r>   )r   cleanupsocks   && r   make_socketSockSendfileMixin.make_socket   sB    }}V^^V-?-?@OODJJ'r   c                x    VP                  \        P                  \        P                  V P                  4       R # r
   )
setsockoptr   
SOL_SOCKET	SO_RCVBUFr   )r   r   s   &&r   reduce_receive_buffer_size,SockSendfileMixin.reduce_receive_buffer_size   s$     	))6+;+;T]]Kr   c                    VP                  \        P                  \        P                  V P                  4       Ve   VP                  V P                  R7       R # R # )N)high)r   r   r   	SO_SNDBUFr   set_write_buffer_limits)r   r   r   s   &&&r   reduce_send_buffer_size)SockSendfileMixin.reduce_send_buffer_size   sD    
 	))6+;+;T]]K --4==-A !r   c                  a aa \        S P                  4      o\        P                  ! 4       pS P	                  R R7      pVP                  \        P                  V34       S P                  S P                  P                  V3R lVR7      4      oS P                  V4       S P	                  4       pS P                  S P                  P                  VRV34      4       S P                  V4       VV V3R lpS P                  V4       VS3# )F)r   c                     < S # r
   r   )protos   r   <lambda>8SockSendfileMixin.prepare_socksendfile.<locals>.<lambda>   s    Er   )r   z	127.0.0.1c                     < S P                   e:   S P                   P                  4        SP                  S P                  4       4       SP                  4        SP                  SP                  4       4       R # r
   )r   r>   r   rZ   )r   r   servers   r   r   7SockSendfileMixin.prepare_socksendfile.<locals>.cleanup   sR    * %%'e//12LLNMM&,,./r   )rL   r    r   find_unused_portr   bindHOSTr   create_serverr   sock_connectr   rv   )r   portsrv_sockr   r   r   r   s   f    @@r   prepare_socksendfile&SockSendfileMixin.prepare_socksendfile   s    		"--/##E#2}))401tyy66  7  * +''1!dii,,TK3FGH$$T*	0 	 U{r   c                    V P                  4       w  rV P                  V P                  P                  WP                  4      4      pVP                  4        V P                  VP                  4       4       V P                  V\        V P                  4      4       V P                  VP                  V P                  4       V P                  V P                  P                  4       \        V P                  4      4       R # r
   )r   r   r    sock_sendfileru   r>   rZ   assertEqualr:   ri   r   tellr   r   r   rets   &   r   test_sock_sendfile_success,SockSendfileMixin.test_sock_sendfile_success   s    //1mmDII33D))DE

e'')*c$))n-TYY/)3tyy>:r   c                   V P                  4       w  rV P                  V P                  P                  WP                  R R4      4      pVP                  4        V P                  VP                  4       4       V P                  VP                  V P                  R,          4       V P                  V P                  P                  4       R4       V P                  VR4       R# )  i  :i  i  Ni  N)r   r   r    r   ru   r>   rZ   r   r   ri   r   r   s   &   r   (test_sock_sendfile_with_offset_and_count:SockSendfileMixin.test_sock_sendfile_with_offset_and_count   s    //1mmDII33D))48$@ A

e'')*TYYy%9:)40d#r   c           
        V P                  4       w  r\        P                  ! 4       ;_uu_ 4       pV P                  V P                  P                  W^ R4      4      pRRR4       VP                  4        V P                  VP                  4       4       V P                  X^ 4       V P                  V P                  P                  4       ^ 4       R#   + '       g   i     L}; i)rA   N)r   tempfileTemporaryFiler   r    r   r>   rZ   r   ru   r   )r   r   r   fr   s   &    r   test_sock_sendfile_zero_size.SockSendfileMixin.test_sock_sendfile_zero_size   s    //1##%%--		 7 7894!A BC & 	

e'')*a )1- &%s   -CC"	c                   R R,          pV P                  4       w  r#V P                  V P                  P                  W!4      4       V P                  V P                  P	                  W P
                  4      4      pV P                  V P                  P                  W!4      4       VP                  4        V P                  VP                  4       4       V P                  V\        V P                  4      4       WP                  ,           V,           pV P                  VP                  V4       V P                  V P
                  P                  4       \        V P                  4      4       R# )s   mix_regular_sendNr   )r   r   r    sock_sendallr   ru   r>   rZ   r   r:   ri   r   r   )r   bufr   r   r   r%   s   &     r   (test_sock_sendfile_mix_with_regular_send:SockSendfileMixin.test_sock_sendfile_mix_with_regular_send   s    !X.//1dii,,T78mmDII33D))DEdii,,T78

e'')*c$))n-?S(X.)3tyy>:r   r   )Tr
   )rB   rC   rD   rE   r   rj   rp   r   r   r   r   r   r   r   r   rF   rG   rH   rI   s   @@r   r   r      sZ      
    L
B6;	$	.; ;r   r   c                   z  a  ] tR t^t o RRR^ /R lt]P                  ! ]P                  R8H  R4      R 4       t	R t
R	 tR
 tR tR tR tR tR tR tR tR t]P                  ! ]P                  P+                  R4      R4      R 4       tR t]P                  ! ]! ]R4      '       * R4      R 4       tR tRtV tR# )SendfileMixinis_sslFr   c          	       a aaa \         P                  ! 4       p\        S P                  VR 7      oV'       dI   \        '       g   S P                  R4       \        P                  ! 4       p\        P                  ! 4       pMRpRp\        P                  ! \        P                  \        P                  4      pVP                  \         P                  V34       S P                  S P                  P                  V3R lWdR7      4      oS P!                  V4       V'       d   \         P                  pMRp\        P                  ! \        P                  \        P                  4      pVP#                  \         P                  V34       \        S P                  R7      oS P                  S P                  P%                  V3R lVWWR7      4      w  rS P'                  WR7       VV VV3R	 lpS P)                  V4       SS3# )
)r    r   zNo ssl moduleNc                     < S # r
   r   )	srv_protos   r   r   0SendfileMixin.prepare_sendfile.<locals>.<lambda>	      Ir   )r   ssl)r    c                     < S # r
   r   )	cli_protos   r   r   r     r   r   )r   r   server_hostname)r   c                  :  < SP                   P                  4        S P                   P                  4        SP                  SP                  4       SP                  S P                  4       SP                  4        SP                  SP	                  4       4       R # r
   )r   r>   r   r   rZ   )r   r   r   r   s   r   r   /SendfileMixin.prepare_sendfile.<locals>.cleanup  se    %%'%%'MM)..)MM)..)LLNMM&,,./r   )r   r   r   r    r   skipTestr}   simple_server_sslcontextsimple_client_sslcontextr   r   r   r   r   r   r   r   connectcreate_connectionr   rv   )r   r   r   r   srv_ctxcli_ctxr   r   cli_socktrprr   r   r   r   s   f$$         @@@r   prepare_sendfileSendfileMixin.prepare_sendfile   s~   --/#0;=	3o. 99;G 99;GGG==1C1CD}))401tyy66H  7  ; <''1+00O"O==1C1CD-,,d34#3	tyy::H  ;  : ; 	$$X$<	0 	0 	 )##r   win32zUDP sockets are not supportedc                   V P                  V P                  P                  \        P                  \
        P                  R 7      4      w  r V P                  \        R4      ;_uu_ 4        V P                  V P                  P                  WP                  4      4       RRR4       V P                  ^ V P                  P                  4       4       VP                  4        R#   + '       g   i     LL; i  TP                  4        i ; i))familynot supportedN)r   r    create_datagram_endpointr   DatagramProtocolr   r   assertRaisesRegexRuntimeErrorsendfileru   r   r   r>   )r   r   r   s   &  r   test_sendfile_not_supported)SendfileMixin.test_sendfile_not_supported%  s    II..((~~ / '(	''oFFII&&r9957 G Q		 01 HHJ GF HHJs$   C6 *5C#2C6 #C3	.C6 6Dc                   V P                  4       w  rV P                  V P                  P                  VP                  V P
                  4      4      pVP                  P                  4        V P                  VP                  4       V P                  V\        V P                  4      4       V P                  VP                  \        V P                  4      4       V P                  VP                  V P                  4       V P                  V P
                  P                  4       \        V P                  4      4       R # r
   r   r   r    r   r   ru   r>   r   r   r:   ri   r   r   r   r   r   r   r   s   &   r   test_sendfileSendfileMixin.test_sendfile4  s    #446	mmIIy22DII>@!!#inn%c$))n-))3tyy>:3)3tyy>:r   c                  a  S P                  4       w  rV 3R  lpVS P                  n        S P                  S P                  P	                  VP
                  S P                  4      4      pVP
                  P                  4        S P                  VP                  4       S P                  V\        S P                  4      4       S P                  VP                  \        S P                  4      4       S P                  VP                  S P                  4       S P                  S P                  P                  4       \        S P                  4      4       R# )c                 Z   < \         P                  P                  SP                  WW#4      # r
   r   BaseEventLoop_sendfile_nativer    transpru   offsetcountr   s   &&&&r   sendfile_nativeCSendfileMixin.test_sendfile_force_fallback.<locals>.sendfile_nativeB  '    ,,==		68 8r   N)r   r    r   r   r   r   ru   r>   r   r   r:   ri   r   r   r   )r   r   r   r  r   s   f    r   test_sendfile_force_fallback*SendfileMixin.test_sendfile_force_fallback?  s    #446		8
 &5		"mmIIy22DII>@!!#inn%c$))n-))3tyy>:3)3tyy>:r   c           
       a  \         P                  R 8X  d<   \        S P                  \        P
                  4      '       d   S P                  R4       S P                  4       w  rV 3R lpVS P                  n        S P                  \        P                  R4      ;_uu_ 4        S P                  S P                  P                  VP                  S P                  RR7      4       RRR4       VP                  P                  4        S P                  VP                   4       S P#                  VP$                  ^ 4       S P#                  S P                  P'                  4       ^ 4       R#   + '       g   i     L; i)r   zFails on proactor event loopc                 Z   < \         P                  P                  SP                  WW#4      # r
   r   r  s   &&&&r   r  MSendfileMixin.test_sendfile_force_unsupported_native.<locals>.sendfile_nativeX  r  r   r   FfallbackN)sysplatform
isinstancer    r   ProactorEventLoopr   r   r   r   SendfileNotAvailableErrorr   r   r   ru   r>   r   r   r   r   )r   r   r   r  s   f   r   &test_sendfile_force_unsupported_native4SendfileMixin.test_sendfile_force_unsupported_nativeR  s   <<7"$))W%>%>??<=#446		8
 &5		"##G$E$E$35 5MM		""9#6#6		,1 # 345 	!!#inn%))1-)1-5 5s   #AE**E:	c                   V P                  R R7      w  rV P                  V P                  P                  VP                  V P
                  4      4      pVP                  P                  4        V P                  VP                  4       V P                  V\        V P                  4      4       V P                  VP                  \        V P                  4      4       V P                  VP                  V P                  4       V P                  V P
                  P                  4       \        V P                  4      4       R# )Tr   Nr   r   s   &   r   test_sendfile_sslSendfileMixin.test_sendfile_sslj  s    #44D4A	mmIIy22DII>@!!#inn%c$))n-))3tyy>:3)3tyy>:r   c                   V P                  4       w  rVP                  P                  4        V P                  \        R 4      ;_uu_ 4        V P                  V P                  P                  VP                  V P                  4      4       RRR4       V P                  VP                  4       V P                  VP                  ^ 4       V P                  V P                  P                  4       ^ 4       R#   + '       g   i     Ls; i)z
is closingN)r   r   r>   r   r   r   r    r   ru   r   r   r   r   r   r   r   s   &  r    test_sendfile_for_closing_transp.SendfileMixin.test_sendfile_for_closing_transpu  s    #446	!!###L,??MM$)),,Y-@-@$))LM @inn%))1-)1-	 @?s   A C66D	c                   V P                  4       w  rR R,          pRR,          pVP                  P                  V4       V P                  V P                  P                  VP                  V P                  4      4      pVP                  P                  V4       VP                  P                  4        V P                  VP                  4       V P                  V\        V P                  4      4       V P                  VP                  W0P                  ,           V,           4       V P                  V P                  P                  4       \        V P                  4      4       R# )s   PREFIX__r   s   --SUFFIXNr   r   rh   r   r    r   ru   r>   r   r   r:   ri   r   r   r   r   r   PREFIXSUFFIXr   s   &     r   test_sendfile_pre_and_post_data-SendfileMixin.test_sendfile_pre_and_post_data~  s    #446	t#t#!!&)mmIIy22DII>@!!&)!!#inn%c$))n-)));f)DE)3tyy>:r   c                   V P                  R R7      w  rRR,          pRR,          pVP                  P                  V4       V P                  V P                  P                  VP                  V P                  4      4      pVP                  P                  V4       VP                  P                  4        V P                  VP                  4       V P                  V\        V P                  4      4       V P                  VP                  W0P                  ,           V,           4       V P                  V P                  P                  4       \        V P                  4      4       R# )Tr  s   zxcvbnmr   s
   0987654321Nr  r   s   &     r   #test_sendfile_ssl_pre_and_post_data1SendfileMixin.test_sendfile_ssl_pre_and_post_data  s    #44D4A	d"%!!&)mmIIy22DII>@!!&)!!#inn%c$))n-)));f)DE)3tyy>:r   c                    V P                  4       w  rV P                  V P                  P                  VP                  V P
                  R ^d4      4      pVP                  P                  4        V P                  VP                  4       V P                  V^d4       V P                  VP                  ^d4       V P                  VP                  V P                  R,          4       V P                  V P
                  P                  4       R4       R# )r   i  iL  NL  Nr   r   r    r   r   ru   r>   r   r   r   r   ri   r   r   s   &   r   test_sendfile_partial#SendfileMixin.test_sendfile_partial  s    #446	mmIIy22DIItSIK!!#inn%c"))3/9)=>)40r   c                $   V P                  R R7      w  rV P                  V P                  P                  VP                  V P
                  R^d4      4      pVP                  P                  4        V P                  VP                  4       V P                  V^d4       V P                  VP                  ^d4       V P                  VP                  V P                  R,          4       V P                  V P
                  P                  4       R4       R# )Tr  r   r)  r*  Nr+  r   s   &   r   test_sendfile_ssl_partial'SendfileMixin.test_sendfile_ssl_partial  s    #44D4A	mmIIy22DIItSIK!!#inn%c"))3/9)=>)40r   c                   V P                  \        V P                  4      R 7      w  rV P                  V P                  P                  VP                  V P                  4      4      pVP                  P                  4        V P                  VP                  4       V P                  V\        V P                  4      4       V P                  VP                  \        V P                  4      4       V P                  VP                  V P                  4       V P                  V P                  P                  4       \        V P                  4      4       R# )r   N)r   r:   ri   r   r    r   r   ru   r>   r   r   r   r   r   r   s   &   r   (test_sendfile_close_peer_after_receiving6SendfileMixin.test_sendfile_close_peer_after_receiving  s    #44DII  5  (	mmIIy22DII>@!!#inn%c$))n-))3tyy>:3)3tyy>:r   c                x   V P                  R \        V P                  4      R7      w  rV P                  V P                  P                  VP                  V P                  4      4      pV P                  VP                  4       V P                  V\        V P                  4      4       V P                  VP                  \        V P                  4      4       V P                  VP                  V P                  4       V P                  V P                  P                  4       \        V P                  4      4       R# )T)r   r   N)r   r:   ri   r   r    r   r   ru   r   r   r   r   r   r   s   &   r   ,test_sendfile_ssl_close_peer_after_receiving:SendfileMixin.test_sendfile_ssl_close_peer_after_receiving  s    #44S^  5  5	mmIIy22DII>@inn%c$))n-))3tyy>:3)3tyy>:r   sunoszDoesn't work on Solarisc                   V P                  R R7      w  rV P                  \        4      ;_uu_ 4        V P                  V P                  P                  VP                  V P                  4      4       RRR4       V P                  VP                  4       T P                  R VP                  u;8*  ;'       d    \        V P                  4      8  Mu VP                  4       \        P                  R8X  d+   \        V P                  \         P"                  4      '       gj   T P                  R V P                  P%                  4       u;8*  ;'       d    \        V P                  4      8  Mu V P                  P%                  4       4       V P                  VP                  P'                  4       4       R#   + '       g   i     ELL; i)r   r2  Nr   )r   assertRaisesConnectionErrorr   r    r   r   ru   r   
assertTruer   r:   ri   r  r  r  r   r  r   
is_closingr  s   &  r   3test_sendfile_close_peer_in_the_middle_of_receivingASendfileMixin.test_sendfile_close_peer_in_the_middle_of_receiving  s%     $444F	//MM		""9#6#6		BD 0 	inn%	 0 0AA3tyy>A!((	*'tyy'*C*CDDOODDIINN$4EEs499~E IINN,.	++6689 0//s   A F55G	c                  a  V 3R  lpVS P                   n        S P                  RR7      w  r#S P                  \        4      ;_uu_ 4         S P                  S P                   P                  VP                  S P                  4      4        RRR4       S P                  TP                  4       S P                  RTP                   u;8*  ;'       d    \#        S P$                  4      8  Mu TP                   4       S P                  RS P                  P'                  4       u;8*  ;'       d    \#        S P$                  4      8  Mu S P                  P'                  4       4       R#   \         dA   pTP                  \        P                  8X  d   \        P                  R8X  d   \        hh Rp?ii ; i  + '       g   i     EL2; i)c                 Z   < \         P                  P                  SP                  WW#4      # r
   r   r  s   &&&&r   r  cSendfileMixin.test_sendfile_fallback_close_peer_in_the_middle_of_receiving.<locals>.sendfile_native  r  r   r   r2  darwinN)r    r   r   r:  r;  r   r   r   ru   OSErrorerrno
EPROTOTYPEr  r  r   r<  r   r:   ri   r   )r   r  r   r   es   f    r   <test_sendfile_fallback_close_peer_in_the_middle_of_receivingJSendfileMixin.test_sendfile_fallback_close_peer_in_the_middle_of_receiving  s8   	8
 &5		"#444F	//	II&&y':':DIIFH 0 	inn%	 0 0AA3tyy>A!((	*		 0AA3tyy>A		(	*   77e...3<<83K))	 0//s*   
F5?E''F22;F--F22F55G	r   z"Don't have native sendfile supportc                  a aa S P                  4       w  poS P                  P                  4       oVVV 3R  lpS P                  P                  V! 4       4      pS P	                  S4       S P                  \        R4      ;_uu_ 4        SP                  P                  R4       RRR4       S P	                  V4      pS P                  V\        S P                  4      4       R#   + '       g   i     LH; i)c                     <"   SP                  R 4       SP                  P                  S P                  SP                  4      G R j  xL
 #  L5ir
   )r*   r    r   r   ru   )r   rP   r   s   r   r   =SendfileMixin.test_sendfile_prevents_bare_write.<locals>.coro   s9     NN4 ++I,?,?KKKKs   AAA	Azsendfile is in progresss   dataN)r   r    r   create_taskr   r   r   r   rh   r   r:   ri   )r   r   r   tr   r   rP   s   f    @@r   !test_sendfile_prevents_bare_write/SendfileMixin.test_sendfile_prevents_bare_write  s      $446	9ii%%'	L II!!$&)c##L$=? ?%%g.? mmAc$))n-	? ?s   C$$C4	c           
     v   \         P                  ! 4       pR  VP                  n        \        P
                  P                  Vn        V P                  \        R4      ;_uu_ 4        V P                  P                  V P                  P                  VRRR7      4       RRR4       R#   + '       g   i     R# ; i)c                      R # r   r   r   r   r   r   PSendfileMixin.test_sendfile_no_fallback_for_fallback_transport.<locals>.<lambda>  s    5r   zfallback is disabledNFr  )r   Mockr=  side_effectr   _SendfileModeFALLBACK_sendfile_compatibler   r   r    r   r   r+   s   & r   0test_sendfile_no_fallback_for_fallback_transport>SendfileMixin.test_sendfile_no_fallback_for_fallback_transport  s    IIK	+8	()2)@)@)I)I	&##L2HIIII((		""9dU"CE JIIIs   %8B''B8	r   N)rB   rC   rD   rE   r   unittestskipIfr  r  r   r   r  r  r  r  r#  r&  r,  r/  r3  r6  
startswithr>  rH  hasattrosrO  rY  rF   rG   r\   s   @r   r   r      s     )$ )$A )$V __S\\W,.MN O	;;&.0	;.;;	1	1
;	; __S\\,,W5.0:0: *: __Z009;.;. E Er   r   c                       ] tR tRtRtR# )SendfileTestsBasei  r   N)rB   rC   rD   rE   rF   r   r   r   ra  ra    s    r   ra  r   c                   &   a  ] tR tRt o R tRtV tR# )SelectEventLoopTestsi  c                ,    \         P                  ! 4       # r
   )r   SelectorEventLoopr0   s   &r   rb   &SelectEventLoopTests.create_event_loop      ,,..r   r   NrB   rC   rD   rE   rb   rF   rG   r\   s   @r   rc  rc         	/ 	/r   rc  c                   &   a  ] tR tRt o R tRtV tR# )ProactorEventLoopTestsi!  c                ,    \         P                  ! 4       # r
   )r   r  r0   s   &r   rb   (ProactorEventLoopTests.create_event_loop$  rg  r   r   Nrh  r\   s   @r   rk  rk  !  ri  r   rk  KqueueSelectorc                   &   a  ] tR tRt o R tRtV tR# )KqueueEventLoopTestsi+  c                T    \         P                  ! \        P                  ! 4       4      # r
   )r   re  	selectorsrn  r0   s   &r   rb   &KqueueEventLoopTests.create_event_loop.  s!    00,,.0 0r   r   Nrh  r\   s   @r   rp  rp  +  s     0 0r   rp  EpollSelectorc                   &   a  ] tR tRt o R tRtV tR# )EPollEventLoopTestsi3  c                T    \         P                  ! \        P                  ! 4       4      # r
   )r   re  rr  rt  r0   s   &r   rb   %EPollEventLoopTests.create_event_loop6  s    001H1H1JKKr   r   Nrh  r\   s   @r   rv  rv  3  s     L Lr   rv  PollSelectorc                   &   a  ] tR tRt o R tRtV tR# )PollEventLoopTestsi:  c                T    \         P                  ! \        P                  ! 4       4      # r
   )r   re  rr  ry  r0   s   &r   rb   $PollEventLoopTests.create_event_loop=  s    001G1G1IJJr   r   Nrh  r\   s   @r   r{  r{  :  s     K Kr   r{  c                   &   a  ] tR tRt o R tRtV tR# )rc  iA  c                T    \         P                  ! \        P                  ! 4       4      # r
   )r   re  rr  SelectSelectorr0   s   &r   rb   rf  D  s    ,,Y-E-E-GHHr   r   Nrh  r\   s   @r   rc  rc  A  s     	I 	Ir   __main__)(__doc__r   rE  r_  r   r  r   r[  r   r   r   testr   test.supportr   r   test.test_asyncior   r}   r   ImportErrorr   Protocolr   rL   r^   r   r   ra  r  TestCaserc  rk  rr  r^  rp  rv  r{  rB   mainr   r   r   <module>r     s   '   	  
       " & 1
0'#g&& '#Tg 0(2 (2Vj; j;Z\EL \E~	'8 	 <<7/0)22//!2!+!4!4/ y*++	0#4#-#6#6	0 y/**	L"3","5"5	L y.))	K!2!+!4!4	KI0)22I zMMO i  
Cs   
F
 
	FF