
    ^h/{                        S SK r S SKJr  S SKrS SKrS SKrS SKrS SKrS SKrS SK	r	S SK
r
S SKJrJr  S SKJrJr  S SKJrJr  S SKJr  S SKJrJr  S SKJr  S S	KJr  S S
KJr  S SKJ r   S SK!J"r"J#r#  S SK$J%r%J&r&J'r'  S SK(J)r)J*r*J+r+J,r,J-r-  S SK.J/r/  S SK0J1r1J2r2J3r3J4r4J5r5  S SK6J7r7J8r8J9r9  S SK:J;r;J<r<J=r=J>r>   " S S\/R~                  5      r@ " S S\;5      rA " S S\;5      rB " S S\;5      rC " S S\;5      rD " S S\;5      rE " S S \;5      rF " S! S"\;5      rG " S# S$\;5      rH " S% S&\;5      rI " S' S(\;5      rJ\> " S) S*\;5      5       rK\7 " S+ S,\35      5       rL " S- S.\1\L5      rM " S/ S0\2\L5      rN " S1 S2\35      rO " S3 S4\15      rP " S5 S6\15      rQ " S7 S8\15      rR " S9 S:\15      rS " S; S<\15      rT " S= S>\15      rU " S? S@\15      rV " SA SB\15      rWg)C    N)closing)
to_unicodeutf8)genversion)AsyncHTTPClientHTTPResponse)
HTTPServer)HTTPHeadersResponseStartLine)IOLoop)UnsatisfiableReadError)Event)gen_log)Resolverbind_sockets)SimpleAsyncHTTPClientHTTPStreamClosedErrorHTTPTimeoutError)ChunkHandlerCountdownHandlerHelloWorldHandlerRedirectHandlerUserAgentHandler)httpclient_test)AsyncHTTPTestCaseAsyncHTTPSTestCaseAsyncTestCase	ExpectLoggen_test)abstract_base_testskipIfNoIPv6refusing_port)RequestHandlerApplicationurlstream_request_bodyc                       \ rS rSrS rSrg)SimpleHTTPClientCommonTestCase2   c                 V    [        SS9nU R                  [        U[         5      5        U$ )NTforce_instance)r   
assertTrue
isinstanceselfclients     ]/home/james-whalen/.local/lib/python3.13/site-packages/tornado/test/simple_httpclient_test.pyget_http_client.SimpleHTTPClientCommonTestCase.get_http_client3   s%    &d;
6+@AB     N)__name__
__module____qualname____firstlineno__r4   __static_attributes__r7   r6   r3   r)   r)   2   s    r6   r)   c                   >    \ rS rSrS r\R                  S 5       rSrg)TriggerHandler9   c                     Xl         X l        g Nqueuewake_callback)r1   rC   rD   s      r3   
initializeTriggerHandler.initialize:   s    
*r6   c              #     #    [         R                  " S5        [        5       nU R                  R	                  UR
                  5        U R                  SS5      S:X  a  U R                  5         UR                  5       v   g 7f)Nzqueuing triggerwaketrue)	loggingdebugr   rC   appendsetget_argumentrD   wait)r1   events     r3   getTriggerHandler.get>   s\     '(

%))$VV,6 jjls   A?BrB   N)	r8   r9   r:   r;   rE   r   	coroutinerQ   r<   r7   r6   r3   r>   r>   9   s    + 	]] r6   r>   c                   >    \ rS rSrS r\R                  S 5       rSrg)ContentLengthHandlerH   c                     U R                  5       U l        [        R                  " 5       R	                  U R
                  5        g rA   )detachstreamr   currentspawn_callbackwrite_responser1   s    r3   rQ   ContentLengthHandler.getI   s*    kkm''(;(;<r6   c              #      #    U R                   R                  [        SU R                  S5      -  5      5      v   U R                   R	                  5         g 7f)Nz)HTTP/1.0 200 OK
Content-Length: %s

okvalue)rY   writer   rN   closer]   s    r3   r\   #ContentLengthHandler.write_responseM   sL     kkA##G,-
 	
 	s   AA)rY   N)	r8   r9   r:   r;   rQ   r   rS   r\   r<   r7   r6   r3   rU   rU   H   s    = 	]] r6   rU   c                       \ rS rSrS rSrg)HeadHandlerX   c                 (    U R                  SS5        g )NContent-Length7)
set_headerr]   s    r3   headHeadHandler.headY   s    (#.r6   r7   N)r8   r9   r:   r;   rk   r<   r7   r6   r3   re   re   X   s    /r6   re   c                       \ rS rSrS rSrg)OptionsHandler]   c                 J    U R                  SS5        U R                  S5        g )NzAccess-Control-Allow-Origin*okrj   ra   r]   s    r3   optionsOptionsHandler.options^   s    5s;

4r6   r7   N)r8   r9   r:   r;   rt   r<   r7   r6   r3   rn   rn   ]   s    r6   rn   c                       \ rS rSrS rSrg)NoContentHandlerc   c                 F    U R                  S5        U R                  5         g )N   
set_statusfinishr]   s    r3   rQ   NoContentHandler.getd   s    r6   r7   Nr8   r9   r:   r;   rQ   r<   r7   r6   r3   rw   rw   c   s    r6   rw   c                       \ rS rSrS rSrg)SeeOtherPostHandleri   c                     [        U R                  R                  5      nUS;   d   SU R                  R                  -  5       eU R                  SS5        U R	                  U5        g )N.  i/  unexpected body %rLocation/see_other_get)intrequestbodyrj   r|   )r1   redirect_codes     r3   postSeeOtherPostHandler.postj   sT    DLL--.
*T,@4<<CTCT,TT*
$45&r6   r7   Nr8   r9   r:   r;   r   r<   r7   r6   r3   r   r   i   s    'r6   r   c                       \ rS rSrS rSrg)SeeOtherGetHandlerq   c                     U R                   R                  (       a"  [        SU R                   R                  -  5      eU R                  S5        g )Nr   rr   )r   r   	Exceptionra   r]   s    r3   rQ   SeeOtherGetHandler.getr   s6    <<04<<3D3DDEE

4r6   r7   Nr   r7   r6   r3   r   r   q   s    r6   r   c                       \ rS rSrS rSrg)HostEchoHandlerx   c                 T    U R                  U R                  R                  S   5        g )NHost)ra   r   headersr]   s    r3   rQ   HostEchoHandler.gety   s    

4<<''/0r6   r7   Nr   r7   r6   r3   r   r   x   s    1r6   r   c                       \ rS rSrS rSrg)NoContentLengthHandler}   c                     U R                   R                  R                  S5      (       a2  U R                  5       nUR	                  S5        UR                  5         g U R                  S5        g )NzHTTP/1s   HTTP/1.0 200 OK

hellozHTTP/1 required)r   r   
startswithrX   ra   rb   r}   )r1   rY   s     r3   rQ   NoContentLengthHandler.get~   sM    <<**844 [[]FLL<=LLNKK)*r6   r7   Nr   r7   r6   r3   r   r   }   s    	+r6   r   c                       \ rS rSrS rSrg)EchoPostHandler   c                 N    U R                  U R                  R                  5        g rA   )ra   r   r   r]   s    r3   r   EchoPostHandler.post   s    

4<<$$%r6   r7   Nr   r7   r6   r3   r   r      s    &r6   r   c                       \ rS rSrS rSrg)RespondInPrepareHandler   c                 H    U R                  S5        U R                  S5        g )N  	forbiddenr{   r]   s    r3   prepareRespondInPrepareHandler.prepare   s    K r6   r7   N)r8   r9   r:   r;   r   r<   r7   r6   r3   r   r      s    !r6   r   c            	       z   \ rS rSrS\4S jr S,S\S\S\R                  S\
4S jjrS\S\4S jrS\4S	 jrS\4S
 jrS rS rS rS r\S 5       rS rS rS rS r\S 5       rS r\S 5       rS rS rS r S r!S r"S r#S r$S r%S r&\'RP                  S  5       r)S! r*S" r+S# r,S$ r-S% r.S& r/S' r0S( r1S) r2S*r3g+)-SimpleHTTPClientTestMixin   returnc                     [        5       erA   NotImplementedErrorr]   s    r3   get_http_port'SimpleHTTPClientTestMixin.get_http_port       !##r6   pathraise_errorkwargsc                     [        5       erA   r   )r1   r   r   r   s       r3   fetchSimpleHTTPClientTestMixin.fetch   s     "##r6   c                     [        5       erA   r   )r1   r   s     r3   get_url!SimpleHTTPClientTestMixin.get_url   r   r6   c                     [        5       erA   r   r]   s    r3   get_protocol&SimpleHTTPClientTestMixin.get_protocol   r   r6   c                     [        5       erA   r   r]   s    r3   get_http_server)SimpleHTTPClientTestMixin.get_http_server   r   r6   c                     [        5       erA   r   r1   r   s     r3   create_client'SimpleHTTPClientTestMixin.create_client   r   r6   c                 b   [         R                  " 5       U l        [        [	        S[
        [        U R                  U R                  S95      [	        S[        5      [	        S[        SS9[	        S[        5      [	        S[        5      [	        S	[        5      [	        S
[        5      [	        S[        5      [	        S[        5      [	        S[         5      [	        S["        5      [	        S[$        5      [	        S[&        5      [	        S[(        5      [	        S[*        5      [	        S[,        5      /SS9$ )N/triggerrB   z/chunkz/countdown/([0-9]+)	countdown)name/helloz/content_length/head/options/no_content/see_other_postr   
/host_echo/no_content_length
/echo_post/respond_in_preparez	/redirect/user_agentT)gzip)collectionsdequetriggersr%   r&   r>   dictstopr   r   r   rU   re   rn   rw   r   r   r   r   r   r   r   r   r]   s    r3   mixin_get_app'SimpleHTTPClientTestMixin.mixin_get_app   s      	 "t}}DIIF
 Hl+)+;+NH/0%';<G[)J/M#34%':;$&89L/2(*@AL/2)+BCK1M#34), /
 	
r6   c                 b   U R                  [        5       [        5       5        U R                  [        5       [        SS95        [        [	        SS95       nS nU R
                  R                  U5      nUR                  U5      nU R                  X45        S S S 5        g ! , (       d  f       g = f)NTr,   F)make_currentc                  ^   #    [         R                  " S5      I S h  vN   [        5       $  N7fNr   )r   sleepr   r7   r6   r3   make_client=SimpleHTTPClientTestMixin.test_singleton.<locals>.make_client   s$     iil"",.. #s   -+-)assertIsr   assertIsNotr   r   io_looprun_sync)r1   io_loop2r   client1client2s        r3   test_singleton(SimpleHTTPClientTestMixin.test_singleton   s    +-/D/FG!#%:$%O	
 V/0H/ ll++K8G''4GW. 100s   AB  
B.c                   ^ ^ [        T R                  SS95       nT R                  UR                  S5        / m[	        S5       H<  nU4UU 4S jjnUR                  T R                  S5      5      R                  U5        M>     T R                  U 4S jS9  T R                  [        UR                  5      S5        T R                  R                  5       " 5         T R                  R                  5       " 5         T R                  UU 4S jS9  T R                  [        T5      S	S
15        T R                  [        UR                  5      S	5        T R                  R                  5       " 5         T R                  R                  5       " 5         T R                  U4S jS9  T R                  [        T5      1 Sk5        T R                  [        T R                  5      S	5        S S S 5        g ! , (       d  f       g = f)N   max_clients   c                 H   > TR                  U5        TR                  5         g rA   )rL   r   )futiseenr1   s     r3   cb;SimpleHTTPClientTestMixin.test_connection_limit.<locals>.cb   s    KKNIIKr6   r   c                  4   > [        T R                  5      S:H  $ Nr   lenr   r]   s   r3   <lambda>ASimpleHTTPClientTestMixin.test_connection_limit.<locals>.<lambda>   s    DMM(:a(?r6   )	conditionc                  ^   > [        TR                  5      S:H  =(       a    [        T 5      S:H  $ r   r   )r   r1   s   r3   r  r     s$    T]]);q)@)SSYRS^)Sr6   r      c                      > [        T 5      S:H  $ )Nr   )r  )r   s   r3   r  r     s    D	Qr6   >   r   r  r      )r   r   assertEqualr   ranger   r   add_done_callbackrO   r  rC   r   popleftrM   )r1   r2   r   r   r   s   `   @r3   test_connection_limit/SimpleHTTPClientTestMixin.test_connection_limit   sw   T''A'676V//3D 1X     T\\*56HHL  II ?I@S.2 MM!!#%MM!!#%II TIUSYA/S.2 MM!!#%MM!!#%II 6I7SY5S/37 877s   G	G--
G;c              #      #    [        U R                  SS95       nUR                  U R                  S5      SS9v nUR	                  5         S S S 5        g ! , (       d  f       g = f7f)Nr  r   z/countdown/3r  max_redirects)r   r   r   r   rethrow)r1   r2   responses      r3   test_redirect_connection_limit8SimpleHTTPClientTestMixin.test_redirect_connection_limit   sU      T''A'676#\\$,,~*FVW\XXH 877s   A'2A	A'
A$ A'c                 r   U R                  SSS9nU R                  SUR                  5        U R                  UR                  R
                  R                  S5      5        U R                  UR                  R                  S5      5        U R                  UR                  S   R                  S5      5        g )Nz/countdown/5r  r  r   z/countdown/2r   z/countdown/1)	r   r	  coder.   r   r&   endswitheffective_urlr   r1   r  s     r3   test_max_redirects,SimpleHTTPClientTestMixin.test_max_redirects  s    ::nA:>hmm, 	((,,55nEF..77GH((4==nMNr6   c                     [        SS05      nU R                  SUS9  U R                  [        UR	                  5       5      S/5        g )N
User-AgentFoor   )r   )r  r  )r   r   r	  listget_all)r1   r   s     r3   test_header_reuse+SimpleHTTPClientTestMixin.test_header_reuse  sC     |U34

8W
-goo/03H2IJr6   c                     U R                  SSS9nU R                  SUR                  5        U R                  UR                  R	                  5       S[
         35        g )Nr   GETmethod   zTornado/)r   r	  r  r   decoder   r  s     r3   test_default_user_agent1SimpleHTTPClientTestMixin.test_default_user_agent  sL    ::mE::hmm,--/8G91EFr6   c                 ~   S H  nU R                  SSSU-  S9nU R                  SUR                  5        U R                  UR                  R
                  R                  S5      5        U R                  UR                  R                  S5      5        U R                  SUR                  R                  5        M     g )Nr   r   POSTz%d)r'  r   r(  r   )	r   r	  r  r.   r   r&   r  r  r'  )r1   r  r  s      r3   test_see_other_redirect1SimpleHTTPClientTestMixin.test_see_other_redirect  s    Dzz"3FPTzUHS(--0OOH,,0099:KLMOOH22;;<LMNVX%5%5%<%<= r6   c           	   #     ^^#    Sn[        5       mU m " UU4S jS[        5      n[        U R                  U" 5       S95       nU R	                  [
        5         UR                  U R                  S5      USSS9v   S S S 5        S S S 5        TR                  5         [        R                  " S	5      v   g ! , (       d  f       N?= f! , (       d  f       NH= f7f)
N皙?c                   $   > \ rS rSrU U4S jrSrg)GSimpleHTTPClientTestMixin.test_connect_timeout.<locals>.TimeoutResolveri)  c                    >#    TR                  5       I S h  vN   [        R                  STR                  5       44/$  N'7fN	127.0.0.1)rO   socketAF_INETr   )r1   argsr   cleanup_eventtests      r3   resolveOSimpleHTTPClientTestMixin.test_connect_timeout.<locals>.TimeoutResolver.resolve*  s=     #((***+t7I7I7K)LMNN +s   A?(Ar7   N)r8   r9   r:   r;   r<  r<   )r:  r;  s   r3   TimeoutResolverr3  )  s    O Or6   r>  resolverr   i  T)connect_timeoutrequest_timeoutr   g?)r   r   r   r   assertRaisesr   r   r   rM   r   r   )r1   timeoutr>  r2   r:  r;  s       @@r3   test_connect_timeout.SimpleHTTPClientTestMixin.test_connect_timeout"  s     	O 	Oh 	O T''1B'CD""#34llLL*$+$( $	 #   5 E 	iin 54 EDs5   ?CC$B6=C1C6
C	 C
CCc                 *   Sn[         R                  S:X  a  SnU R                  [        5         U R	                  SUSS9  S S S 5        U R
                  R                  5       " 5         U R                  R                  S 5        g ! , (       d  f       NJ= f)Nr1  ntg      ?z/trigger?wake=falseT)rB  r   c                  .    [         R                  " S5      $ r   r   r   r7   r6   r3   r  @SimpleHTTPClientTestMixin.test_request_timeout.<locals>.<lambda>G      ciilr6   )	osr   rC  r   r   r   r  r   r   )r1   rD  s     r3   test_request_timeout.SimpleHTTPClientTestMixin.test_request_timeout>  sp    77d?G/0JJ,gSWJX 1 	!23	 10s   B
Bc                    [        SS[        R                  S9u  nUR                  5       S   nU R	                  5       R                  U5        SU R                  5       U4-  nU R                  [        5         U R                  USSS9  S S S 5        U R                  U5      nU R                  UR                  S	5        g ! , (       d  f       N<= f)
Nr   z::1)familyr  z%s://[::1]:%d/helloFT)
allow_ipv6r      Hello world!)r   r7  AF_INET6getsocknamer   
add_socketr   rC  r   r   r	  r   )r1   sockportr&   r  s        r3   	test_ipv6#SimpleHTTPClientTestMixin.test_ipv6I  s    av?!!$))$/#t'8'8':D&AA y)JJsu$J? * ::c?8	 *)s   8C  
Cc                 "   U R                  S5      nU R                  UR                  S5        U R                  S5      nU R                  UR                  S5        [        [        S[
        R                  S9   U R                  [        5         U R                  SSS9  S S S 5        U R                  [        5         U R                  S	SS9  S S S 5        S S S 5        g ! , (       d  f       NE= f! , (       d  f       N(= f! , (       d  f       g = f)
Nz/content_length?value=2,2   okz/content_length?value=2,%202,2z".*Multiple unequal Content-Lengthslevelz/content_length?value=2,4Tr   z/content_length?value=2,%202,3)	r   r	  r   r   r   rJ   INFOrC  r   r  s     r3   %test_multiple_content_length_accepted?SimpleHTTPClientTestMixin.test_multiple_content_length_acceptedW  s    ::9:.::>?.9
 ""#89

6D
I :""#89

;
N :
 
 :999
 
s<   8D CD <C/D 
C,	(D /
C=	9D  
Dc                     U R                  SSS9nU R                  UR                  S5        U R                  UR                  S   S5        U R	                  UR
                  5        g )Nr   HEADr&  r(  content-lengthri   )r   r	  r  r   assertFalser   r  s     r3   test_head_request+SimpleHTTPClientTestMixin.test_head_requeste  sV    ::gf:5,))*:;SA'r6   c                    U R                  SSS9nU R                  UR                  S5        U R                  UR                  S   S5        U R                  UR                  S   S5        U R                  UR                  S	5        g )
Nr   OPTIONSr&  r(  re  2zaccess-control-allow-originrq   r\  )r   r	  r  r   r   r  s     r3   test_options_request.SimpleHTTPClientTestMixin.test_options_requestk  st    ::j:;,))*:;SA))*GH#N.r6   c                     U R                  S5      nU R                  UR                  S5        U R                  SUR                  5        g )Nr   rz   rh   )r   r	  r  assertNotInr   r  s     r3   test_no_content)SimpleHTTPClientTestMixin.test_no_contentr  s=    ::m,,
 	)8+;+;<r6   c                 t   [         R                  " S5      nU R                  S5      nU R                  UR	                  UR
                  5      5        U R                  S5      R                  SS5      nU R                  U5      nU R                  UR	                  UR
                  5      UR
                  5        g )Ns   ^127.0.0.1:[0-9]+$r   zhttp://zhttp://me:secret@)recompiler   r.   matchr   r   replace)r1   host_rer  r&   s       r3   test_host_header*SimpleHTTPClientTestMixin.test_host_header{  s    **23::l+hmm45ll<(00<OP::c?hmm4hmmDr6   c                 ,   [        5       u  pU R                  U5        [        [        SSS9   U R	                  [
        R                  5       nU R                  SU-  SS9  S S S 5        S S S 5        [        R                  S:w  a  [        [        R                  5      [        WR                  5      ;   nU(       dD  [        [        S5      (       a/  [        [        R                  5      [        UR                  5      ;   nU R!                  XCR                  5        ["        R$                  " [        R                  5      nU R!                  U[        UR                  5      ;   UR                  5        g g ! , (       d  f       GN= f! , (       d  f       GN"= f)	N.*Frequiredzhttp://127.0.0.1:%d/Tr_  cygwinWSAECONNREFUSED)r#   
addCleanupr   r   rC  r7  errorr   sysplatformstrerrnoECONNREFUSED	exceptionhasattrr  r.   rM  strerror)r1   cleanup_funcrX  cmcontains_errnoexpected_messages         r3   test_connection_refused1SimpleHTTPClientTestMixin.test_connection_refused  s   *_%wu5""6<<0B

1D8d
K 1 6 <<8# !3!34BLL8IIN!ge5F&G&G!$U%:%:!;sLL@ " OONLL9  "{{5+=+=>OO,BLL0AA2<<P $ 10 65s#    FE2!F2
F	<F
Fc                 0  ^ ^^ [        T R                  SS95       mTR                  T R                  S5      SS9mT R	                  5         T R                  [        5       nT R                  R                  UU 4S j5        S S S 5        T R                  [        WR                  5      S5        T R                  R                  5       " 5         T R                  R                  U4S j5        S S S 5        g ! , (       d  f       Nz= f! , (       d  f       g = f)	Nr  r   r   
   )rB  c                  D   > T R                  TR                  S5      SSS9$ )Nr   r1  TrA  r   )r   r   )r2   r1   s   r3   r  >SimpleHTTPClientTestMixin.test_queue_timeout.<locals>.<lambda>  s$    FLLX.QU ) r6   zTimeout in request queuec                     > T $ rA   r7   )fut1s   r3   r  r    s    $r6   )r   r   r   r   rO   rC  r   r   r   r	  r  r  r   r  )r1   r  r2   r  s   ` @@r3   test_queue_timeout,SimpleHTTPClientTestMixin.test_queue_timeout  s    T''A'676<<Z 8"<MDIIK""#34%% 5 S.0JKMM!!#%LL!!,/ 87 54	 87s%   AD!!C6A+D6
D	 D
Dc                     U R                  S5      nUR                  S:X  a  U R                  S5        g U R                  SUR                  5        g )Nr   s   HTTP/1 requiredrequires HTTP/1.xs   hello)r   r   skipTestr	  r  s     r3   test_no_content_length0SimpleHTTPClientTestMixin.test_no_content_length  s?    ::23==..MM-.Xx}}5r6   c                 $    U" S5        U" S5        g N   1234   5678r7   r1   ra   s     r3   sync_body_producer,SimpleHTTPClientTestMixin.sync_body_producer  s    ggr6   c              #   X   #    U" S5      v   [         R                  v   U" S5      v   g 7fr  )r   momentr  s     r3   async_body_producer-SimpleHTTPClientTestMixin.async_body_producer  s#     GnjjGns   (*c                     U R                  SSU R                  S9nUR                  5         U R                  UR                  S5        g Nr   r-  r'  body_producer   12345678r   r  r  r	  r   r  s     r3   test_sync_body_producer_chunked9SimpleHTTPClientTestMixin.test_sync_body_producer_chunked  sD    ::t7N7N  
 	4r6   c                     U R                  SSU R                  SS0S9nUR                  5         U R                  UR                  S5        g Nr   r-  rh   8r'  r  r   r  r  r  s     r3   &test_sync_body_producer_content_length@SimpleHTTPClientTestMixin.test_sync_body_producer_content_length  sN    ::11%s+	  
 	4r6   c                     U R                  SSU R                  S9nUR                  5         U R                  UR                  S5        g r  r   r  r  r	  r   r  s     r3    test_async_body_producer_chunked:SimpleHTTPClientTestMixin.test_async_body_producer_chunked  sD    ::t7O7O  
 	4r6   c                     U R                  SSU R                  SS0S9nUR                  5         U R                  UR                  S5        g r  r  r  s     r3   'test_async_body_producer_content_lengthASimpleHTTPClientTestMixin.test_async_body_producer_content_length  sN    ::22%s+	  
 	4r6   c                     S nU R                  SSUS9nUR                  5         U R                  UR                  S5        g )Nc                    #    U " S5      I S h  vN   SS K nUR                  S5      I S h  vN   U " S5      I S h  vN   g  N2 N N	7fNr  r   r  asyncior   ra   r  s     r3   r  RSimpleHTTPClientTestMixin.test_native_body_producer_chunked.<locals>.body_producer  A     .  --""".  	 ! # /   AAAAAAAAAr   r-  r  r  r   r  r	  r   r1   r  r  s      r3   !test_native_body_producer_chunked;SimpleHTTPClientTestMixin.test_native_body_producer_chunked  s=    	! ::l6:W4r6   c                     S nU R                  SSUSS0S9nUR                  5         U R                  UR                  S5        g )Nc                    #    U " S5      I S h  vN   SS K nUR                  S5      I S h  vN   U " S5      I S h  vN   g  N2 N N	7fr  r  r  s     r3   r  YSimpleHTTPClientTestMixin.test_native_body_producer_content_length.<locals>.body_producer  r  r  r   r-  rh   r  r  r  r  r  s      r3   (test_native_body_producer_content_lengthBSimpleHTTPClientTestMixin.test_native_body_producer_content_length  sO    	! ::'%s+	  
 	4r6   c                 `    U R                  SSSSS9nU R                  UR                  S5        g )Nr   r-  r  T)r'  r   expect_100_continue)r   r	  r   r  s     r3   test_100_continue+SimpleHTTPClientTestMixin.test_100_continue  s4    ::g4  
 	0r6   c                 f    S nU R                  SSUSS9nU R                  UR                  S5        g )Nc                     [        S5      e)Nzshould not be called)r   ra   s    r3   r  QSimpleHTTPClientTestMixin.test_100_continue_early_response.<locals>.body_producer  s    233r6   r   r-  T)r'  r  r  r   )r   r	  r  r  s      r3    test_100_continue_early_response:SimpleHTTPClientTestMixin.test_100_continue_early_response  s>    	4 ::!' $	  
 	,r6   c                 B   / n/ nU R                  SUR                  UR                  S9  [        [        [        U5      5      nU R                  US/5        [        U Vs/ s H  oDR                  S5      (       d  M  UPM     sn5      nU R                  US5        g s  snf )Nz/redirect?url=/hello)header_callbackstreaming_callbackzHello world!zHTTP/r  )r   rL   r   mapr   r	  r  r   )r1   r   chunk_byteschunkshnum_start_liness         r3   test_streaming_follow_redirects9SimpleHTTPClientTestMixin.test_streaming_follow_redirects
  s     

"#NN*11 	 	

 c*k23.!12'K'Q\\'5Jq'KL!, Ls   B<B)r   N)F)4r8   r9   r:   r;   r   r   r  booltypingAnyr	   r   r   r   r
   r   r   r   r   r  r    r  r  r"  r*  r.  rE  rN  r"   rY  ra  rg  rl  rp  rx  r  r  r  r  r   rS   r  r  r  r  r  r  r  r  r  r  r<   r7   r6   r3   r   r      sH   $s $ .3$$&*$>Djj$	$$C $C $$c $$ $$
>/$4<  OKG
>  6	4 9 9O(/=EQ(0 6 	]] 
5555
55"1
--r6   r   c                   4   ^  \ rS rSrU 4S jrS rS rSrU =r$ )SimpleHTTPClientTestCasei  c                 L   > [         TU ]  5         U R                  5       U l        g rA   supersetUpr   http_clientr1   	__class__s    r3   r  SimpleHTTPClientTestCase.setUp       --/r6   c                 "    U R                  5       $ rA   r   r]   s    r3   get_app SimpleHTTPClientTestCase.get_app$      !!##r6   c                     [        SSS0UD6$ )Nr-   Tr7   r   r   s     r3   r   &SimpleHTTPClientTestCase.create_client'  s    $CDCFCCr6   r  )	r8   r9   r:   r;   r  r  r   r<   __classcell__r  s   @r3   r  r    s    0$D Dr6   r  c                   R   ^  \ rS rSrU 4S jrS rS rS rS rS r	S r
S	 rS
rU =r$ )SimpleHTTPSClientTestCasei+  c                 L   > [         TU ]  5         U R                  5       U l        g rA   r  r  s    r3   r  SimpleHTTPSClientTestCase.setUp,  r  r6   c                 "    U R                  5       $ rA   r  r]   s    r3   r  !SimpleHTTPSClientTestCase.get_app0  r  r6   c                 ,    [        SS[        SS9S.UD6$ )NTF)validate_cert)r-   defaultsr7   )r   r   r   s     r3   r   'SimpleHTTPSClientTestCase.create_client3  s&    $ 
$U*C
GM
 	
r6   c                 |    U R                  SS[        R                  0S9nU R                  UR                  S5        g )Nr   	cert_reqsssl_optionsrS  )r   ssl	CERT_NONEr	  r   r1   resps     r3   test_ssl_options*SimpleHTTPSClientTestCase.test_ssl_options8  s1    zz(cmm0LzMO4r6   c                     [         R                  " [         R                  R                  5      nSUl        [         R
                  Ul        U R                  SUS9nU R                  UR                  S5        g )NFr   r	  rS  )
r  create_default_contextPurposeSERVER_AUTHcheck_hostnamer  verify_moder   r	  r   )r1   ssl_ctxr  s      r3   test_ssl_context*SimpleHTTPSClientTestCase.test_ssl_context<  sV    ,,S[[-D-DE!&!mmzz(z8O4r6   c           	         [        [        SSS9   U R                  [        R                  5         U R                  S[        [        R                  S9SS9  S S S 5        S S S 5        g ! , (       d  f       N= f! , (       d  f       g = f)NSSL Error|Uncaught exceptionFr|  r   )r  Tr
  r   )r   r   rC  r  SSLErrorr   r   CERT_REQUIREDr]   s    r3   test_ssl_options_handshake_fail9SimpleHTTPSClientTestCase.test_ssl_options_handshake_failC  se    w >O""3<<0

 $s/@/@ A $   1 PO00 POs"    A9'A(A9(
A6	2A99
Bc                 H   [        [        S5         [        R                  " [        R                  R
                  5      nU R                  [        R                  5         U R                  SUSS9  S S S 5        S S S 5        g ! , (       d  f       N= f! , (       d  f       g = f)Nr  r   Tr  )	r   r   r  r  r  r  rC  r  r   )r1   ctxs     r3   test_ssl_context_handshake_fail9SimpleHTTPSClientTestCase.test_ssl_context_handshake_failL  sl    w >?,,S[[-D-DEC""3<<0

8$
G 1 @? 10 @?s$   ABB1B
B	B
B!c                 "   [        [        S5       nU R                  [        R                  5         U R                  SSSS9  S S S 5        S S S 5        U R                  WR                  5        g ! , (       d  f       N2= f! , (       d  f       N;= f)Nr{  /T)r  r   )r   r   rC  r  r  r   rf  logged_stack)r1   
expect_logs     r3   test_error_logging,SimpleHTTPSClientTestCase.test_error_loggingS  sf     w%""3<<0

3d
E 1 & 	001 10 &%s"    B A/B /
A=	9B  
Br  )r8   r9   r:   r;   r  r  r   r  r  r  r#  r)  r<   r  r  s   @r3   r  r  +  s1    0$

55H2 2r6   r  c                   :   ^  \ rS rSrU 4S jrU 4S jrS rSrU =r$ )CreateAsyncHTTPClientTestCasei]  c                 V   > [         TU ]  5         [        R                  " 5       U l        g rA   )r  r  r   _save_configurationsavedr  s    r3   r  #CreateAsyncHTTPClientTestCase.setUp^  s    $88:
r6   c                 b   > [         R                  " U R                  5        [        TU ]  5         g rA   )r   _restore_configurationr/  r  tearDownr  s    r3   r3  &CreateAsyncHTTPClientTestCase.tearDownb  s     ..tzz:r6   c                 B   [         R                  " [        5        [        [        SS95       nU R	                  UR
                  S5        S S S 5        [        [        SSS95       nU R	                  UR
                  S5        S S S 5        [         R                  " [        SS9  [        [        SS95       nU R	                  UR
                  S5        S S S 5        [        [        SSS95       nU R	                  UR
                  S5        S S S 5        [        [        S	SS95       nU R	                  UR
                  S	5        S S S 5        g ! , (       d  f       GN= f! , (       d  f       N= f! , (       d  f       N= f! , (       d  f       N{= f! , (       d  f       g = f)
NTr,   r     )r   r-      r         )r   	configurer   r   r	  r   r0   s     r3   test_max_clients.CreateAsyncHTTPClientTestCase.test_max_clientsf  s)   !!"78_D9:fV//4 ;_DIJfV//4 K
 	!!"7RH_D9:fV//4 ;_DIJfV//4 K_DIJfV//4 KJ ;:JJ ;:JJJJs;   E%E5E.-E?%F
E
E+.
E<?
F
F)r/  )	r8   r9   r:   r;   r  r3  r;  r<   r  r  s   @r3   r,  r,  ]  s    ;5 5r6   r,  c                   ,    \ rS rSrS rS rS rS rSrg)HTTP100ContinueTestCaseix  c                    UR                   R                  S5      U l        U R                  (       dJ  UR                  R	                  [        SSS5      [        5       5        UR                  R                  5         g Xl        U R                  R                  R                  R                  S5      nUR                  U R                  5        g )NHTTP/1. r(  OKs   HTTP/1.1 100 CONTINUE

)r   r   http1
connectionwrite_headersr   r   r}   r   rY   ra   r  respond_200)r1   r   r   s      r3   respond_100#HTTP100ContinueTestCase.respond_100y  s    __//	:
zz,,!"c40+- %%'ll%%,,223STd../r6   c                    ^  UR                  5         T R                  R                  R                  R	                  S5      nUR                  U 4S j5        g )Ns'   HTTP/1.1 200 OK
Content-Length: 1

Ac                 `   > TR                   R                  R                  R                  5       $ rA   )r   rD  rY   rb   )fr1   s    r3   r  5HTTP100ContinueTestCase.respond_200.<locals>.<lambda>  s    (?(?(F(F(L(L(Nr6   )resultr   rD  rY   ra   r  )r1   r   s   ` r3   rF  #HTTP100ContinueTestCase.respond_200  s@    

ll%%,,22<
 	NOr6   c                     U R                   $ rA   )rG  r]   s    r3   r  HTTP100ContinueTestCase.get_app  s    r6   c                     U R                  S5      nU R                  (       d  U R                  S5        U R                  UR                  S5        g )Nr&  r     A)r   rC  r  r	  r   )r1   ress     r3   r  )HTTP100ContinueTestCase.test_100_continue  s7    jjozzMM-.4(r6   )rC  r   N)	r8   r9   r:   r;   rG  rF  r  r  r<   r7   r6   r3   r>  r>  x  s    
0P )r6   r>  c                   ,    \ rS rSrS rS rS rS rSrg)HTTP204NoContentTestCasei  c                 "   UR                   R                  S5      U l        U R                  (       dJ  UR                  R	                  [        SSS5      [        5       5        UR                  R                  5         g UR                  R                  5       nUR                  S5        UR                  R                  SS/5      S   (       a  UR                  S	5        OUR                  S
5        UR                  S5        UR                  5         g )Nr@  rA  r(  rB  s   HTTP/1.1 204 No content
r  Fs   Content-Length: 5
s   Content-Length: 0
s   
)r   r   rC  rD  rE  r   r   r}   rX   ra   	argumentsrQ   rb   )r1   r   rY   s      r3   respond_204$HTTP204NoContentTestCase.respond_204  s    __//	:
zz,,!"c40+- %%' ##**,34  5'226LL12LL12Wr6   c                     U R                   $ rA   )rZ  r]   s    r3   r   HTTP204NoContentTestCase.get_app  s    r6   c                     U R                  S5      nU R                  (       d  U R                  S5        U R                  UR                  S5        U R                  UR
                  S5        g )Nr&  r  rz   r6   )r   rC  r  r	  r  r   r  s     r3   test_204_no_content,HTTP204NoContentTestCase.test_204_no_content  sK    zz#zzMM-.C(C(r6   c                    [        [        S[        R                  S9   U R	                  [
        5         U R                  SSS9  U R                  (       d  U R                  S5        U R                  R                  [        :w  a  U R                  S5        S S S 5        S S S 5        g ! , (       d  f       N= f! , (       d  f       g = f)Nz-.*Response with code 204 should not have bodyr]  z	/?error=1Tr_  r  z#curl client accepts invalid headers)r   r   rJ   r`  rC  r   r   rC  r  r  configured_classr   r]   s    r3   test_204_invalid_content_length8HTTP204NoContentTestCase.test_204_invalid_content_length  s    DGLL
 ""#89

;D
9zzMM"56##448MMMM"GH :
 
 :9
 
s#   B8A"B'B8'
B5	1B88
C)rC  N)	r8   r9   r:   r;   rZ  r  r_  rc  r<   r7   r6   r3   rV  rV    s    2 )
Ir6   rV  c                   :   ^  \ rS rSrU 4S jrS rS rS rSrU =r	$ )HostnameMappingTestCasei  c                 d   > [         TU ]  5         [        SSU R                  5       4S.S9U l        g )Nr6  )zwww.example.com)zfoo.example.comi@  )hostname_mapping)r  r  r   r   r  r  s    r3   r  HostnameMappingTestCase.setUp  s2    0#.,79K9K9M+N
r6   c                 6    [        [        S[        5      /5      $ Nr   r%   r&   r   r]   s    r3   r  HostnameMappingTestCase.get_app      C*;<=>>r6   c                     U R                  SU R                  5       -  5      nUR                  5         U R                  UR                  S5        g )Nzhttp://www.example.com:%d/hellorS  )r   r   r  r	  r   r  s     r3   test_hostname_mapping-HostnameMappingTestCase.test_hostname_mapping  s?    ::?$BTBTBVVW8r6   c                 ~    U R                  S5      nUR                  5         U R                  UR                  S5        g )Nz!http://foo.example.com:8000/hellorS  r  r  s     r3   test_port_mapping)HostnameMappingTestCase.test_port_mapping  s1    ::AB8r6   r  )
r8   r9   r:   r;   r  r  rp  rs  r<   r  r  s   @r3   rf  rf    s    
?9
9 9r6   rf  c                   4   ^  \ rS rSrU 4S jrS rS rSrU =r$ )ResolveTimeoutTestCasei  c                    >^ [        5       U l        U m " U4S jS[        5      n[        TU ]  5         [        U" 5       S9U l        g )Nc                   @   > \ rS rSr\R
                  U 4S j5       rSrg)1ResolveTimeoutTestCase.setUp.<locals>.BadResolveri  c              ?      >#    TR                   R                  5       v   [        R                  STR	                  5       44/$ 7fr5  )r:  rO   r7  r8  r   )r1   r9  r   r;  s      r3   r<  9ResolveTimeoutTestCase.setUp.<locals>.BadResolver.resolve  s;     ((--//+t7I7I7K)LMNNs   A Ar7   N)r8   r9   r:   r;   r   rS   r<  r<   )r;  s   r3   BadResolverry    s    ]]O Or6   r|  r?  )r   r:  r   r  r  r   r  )r1   r|  r;  r  s     @r3   r  ResolveTimeoutTestCase.setUp  s:    "W	O( 	O 	0+-Hr6   c                 6    [        [        S[        5      /5      $ rk  rl  r]   s    r3   r  ResolveTimeoutTestCase.get_app  rn  r6   c                     U R                  [        5         U R                  SSSS9  S S S 5        U R                  R	                  5         U R
                  R                  S 5        g ! , (       d  f       NE= f)Nr   r1  Tr  c                  .    [         R                  " S5      $ r   rJ  r7   r6   r3   r  =ResolveTimeoutTestCase.test_resolve_timeout.<locals>.<lambda>  rL  r6   )rC  r   r   r:  rM   r   r   r]   s    r3   test_resolve_timeout+ResolveTimeoutTestCase.test_resolve_timeout  sX    /0JJx$JG 1 	 23 10s   A''
A5)r:  r  )	r8   r9   r:   r;   r  r  r  r<   r  r  s   @r3   rv  rv    s    I?4 4r6   rv  c                   ,    \ rS rSrS rS rS rS rSrg)MaxHeaderSizeTesti  c                 `     " S S[         5      n " S S[         5      n[        SU4SU4/5      $ )Nc                       \ rS rSrS rSrg)/MaxHeaderSizeTest.get_app.<locals>.SmallHeadersi  c                 J    U R                  SS5        U R                  S5        g )NX-Fillerdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaarr   rs   r]   s    r3   rQ   3MaxHeaderSizeTest.get_app.<locals>.SmallHeaders.get  s    
I6

4 r6   r7   Nr   r7   r6   r3   SmallHeadersr        !r6   r  c                       \ rS rSrS rSrg)/MaxHeaderSizeTest.get_app.<locals>.LargeHeadersi  c                 J    U R                  SS5        U R                  S5        g )Nr    aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaarr   rs   r]   s    r3   rQ   3MaxHeaderSizeTest.get_app.<locals>.LargeHeaders.get  s    
J7

4 r6   r7   Nr   r7   r6   r3   LargeHeadersr    r  r6   r  /small/larger$   r%   )r1   r  r  s      r3   r  MaxHeaderSizeTest.get_app  s6    	!> 	!
	!> 	!
 X|4x6NOPPr6   c                     [        SS9$ )Ni   )max_header_sizer  r]   s    r3   r4   !MaxHeaderSizeTest.get_http_client
  s    $T::r6   c                 ~    U R                  S5      nUR                  5         U R                  UR                  S5        g )Nr  r\  r  r  s     r3   test_small_headers$MaxHeaderSizeTest.test_small_headers  s0    ::h'.r6   c                     [        [        S[        R                  S9   U R	                  [
        5         U R                  SSS9  S S S 5        S S S 5        g ! , (       d  f       N= f! , (       d  f       g = f)NzUnsatisfiable readr]  r  Tr_  )r   r   rJ   r`  rC  r   r   r]   s    r3   test_large_headers$MaxHeaderSizeTest.test_large_headers  sQ    w 4GLLI""#9:

8
6 ; JI:: JI"   A'AA'
A$	 A''
A5r7   N)	r8   r9   r:   r;   r  r4   r  r  r<   r7   r6   r3   r  r    s    Q;/
7r6   r  c                   ,    \ rS rSrS rS rS rS rSrg)MaxBodySizeTesti  c                 `     " S S[         5      n " S S[         5      n[        SU4SU4/5      $ )Nc                       \ rS rSrS rSrg)*MaxBodySizeTest.get_app.<locals>.SmallBodyi  c                 ,    U R                  SS-  5        g )N   aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa@   r  r]   s    r3   rQ   .MaxBodySizeTest.get_app.<locals>.SmallBody.get  s    

:?+r6   r7   Nr   r7   r6   r3   	SmallBodyr    s    ,r6   r  c                       \ rS rSrS rSrg)*MaxBodySizeTest.get_app.<locals>.LargeBodyi  c                 ,    U R                  SS-  5        g Nr  d   r  r]   s    r3   rQ   .MaxBodySizeTest.get_app.<locals>.LargeBody.get      

:+,r6   r7   Nr   r7   r6   r3   	LargeBodyr        -r6   r  r  r  r  )r1   r  r  s      r3   r  MaxBodySizeTest.get_app  s6    	, 	,	- 	- Xy1Hi3HIJJr6   c                     [        SS9$ )N   )max_body_sizer  r]   s    r3   r4   MaxBodySizeTest.get_http_client$  s    $9==r6   c                     U R                  S5      nUR                  5         U R                  UR                  SS-  5        g )Nr     aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaar  r  r  s     r3   test_small_bodyMaxBodySizeTest.test_small_body'  s5    ::h'b(89r6   c                     [        [        S[        R                  S9   U R	                  [
        5         U R                  SSS9  S S S 5        S S S 5        g ! , (       d  f       N= f! , (       d  f       g = f)Nz9Malformed HTTP message from None: Content-Length too longr]  r  Tr_  r   r   rJ   r`  rC  r   r   r]   s    r3   test_large_bodyMaxBodySizeTest.test_large_body,  s[    G,,

 ""#89

8
6 :
 

 :9
 
r  r7   N)	r8   r9   r:   r;   r  r4   r  r  r<   r7   r6   r3   r  r    s    	K>:
7r6   r  c                   &    \ rS rSrS rS rS rSrg)MaxBufferSizeTesti6  c                 <     " S S[         5      n[        SU4/5      $ )Nc                       \ rS rSrS rSrg),MaxBufferSizeTest.get_app.<locals>.LargeBodyi8  c                 ,    U R                  SS-  5        g r  r  r]   s    r3   rQ   0MaxBufferSizeTest.get_app.<locals>.LargeBody.get9  r  r6   r7   Nr   r7   r6   r3   r  r  8  r  r6   r  r  r  )r1   r  s     r3   r  MaxBufferSizeTest.get_app7  s#    	- 	- Xy1233r6   c                     [        SSS9$ )Ni  r  )r  max_buffer_sizer  r]   s    r3   r4   !MaxBufferSizeTest.get_http_client>  s    $$i
 	
r6   c                     U R                  S5      nUR                  5         U R                  UR                  SS-  5        g )Nr  r  r  r  r  s     r3   r  !MaxBufferSizeTest.test_large_bodyD  s5    ::h'c(9:r6   r7   N)r8   r9   r:   r;   r  r4   r  r<   r7   r6   r3   r  r  6  s    4
;r6   r  c                   &    \ rS rSrS rS rS rSrg)ChunkedWithContentLengthTestiJ  c                 <     " S S[         5      n[        SU4/5      $ )Nc                       \ rS rSrS rSrg)FChunkedWithContentLengthTest.get_app.<locals>.ChunkedWithContentLengthiL  c                 J    U R                  SS5        U R                  S5        g )NzTransfer-EncodingchunkedzHello worldrs   r]   s    r3   rQ   JChunkedWithContentLengthTest.get_app.<locals>.ChunkedWithContentLength.getM  s     3Y?

=)r6   r7   Nr   r7   r6   r3   ChunkedWithContentLengthr  L  s    *r6   r  /chunkwithclr  )r1   r  s     r3   r  $ChunkedWithContentLengthTest.get_appK  s$    	*~ 	* ^-EFGHHr6   c                     [        5       $ rA   r  r]   s    r3   r4   ,ChunkedWithContentLengthTest.get_http_clientT  s    $&&r6   c                     [        [        S[        R                  S9   U R	                  [
        5         U R                  SSS9  S S S 5        S S S 5        g ! , (       d  f       N= f! , (       d  f       g = f)NzXMalformed HTTP message from None: Message with both Transfer-Encoding and Content-Lengthr]  r  Tr_  r  r]   s    r3    test_chunked_with_content_length=ChunkedWithContentLengthTest.test_chunked_with_content_lengthW  s`    A ,,
 ""#89

>t
< :
 
 :9
 
r  r7   N)r8   r9   r:   r;   r  r4   r  r<   r7   r6   r3   r  r  J  s    I'=r6   r  )Xr   
contextlibr   r  rJ   rM  rs  r7  r  r  r  tornado.escaper   r   tornador   r   tornado.httpclientr   r	   tornado.httpserverr
   tornado.httputilr   r   tornado.ioloopr   tornado.iostreamr   tornado.locksr   tornado.logr   tornado.netutilr   r   tornado.simple_httpclientr   r   r   tornado.test.httpclient_testr   r   r   r   r   tornado.testr   tornado.testingr   r   r   r   r    tornado.test.utilr!   r"   r#   tornado.webr$   r%   r&   r'   HTTPClientCommonTestCaser)   r>   rU   re   rn   rw   r   r   r   r   r   r   r   r  r  r,  r>  rV  rf  rv  r  r  r  r  r7   r6   r3   <module>r     s       	 	  
 
  +   < ) ; ! 3   2 
  )  
 N M_%M%M ^ >  /. /
^ ~ '. ' 1n 1

+^ 
+&n &
 !n ! ! E- E- E-P	D02K 	D/2 24M /2d5M 56)/ )>.I0 .Ib9/ 904. 487) 787' 7<;) ;(=#4 =r6   