+
    BiS                     0   ^ 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]P8                  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   ]PL                  ! 4        R# R#   ] d    Rt ELHi ; i)&    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*   r0   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   )Nr   )__name__
__module____qualname____firstlineno__r"   r'   r-   r2   r8   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+   r6   s   &&r   r8   MyProto.connection_lostV   s    D!r   c                :   "   V P                   G R j  xL
  R #  L5ir   )rP   r1   s   &r   wait_closedMyProto.wait_closedZ   s     hhs   )rO   r   rP   rN   r   N)rB   rC   rD   rE   r"   r-   r>   r8   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   )NotImplementedErrorr1   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)r   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   SelectorEventLoopr1   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  r1   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  r1   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  r1   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  r1   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  SelectSelectorr1   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__)'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