
    R?gy                        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  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K-J.r.J/r/J0r0J1r1J2r2  S SK3J4r4J5r5J6r6  S SK7J8r8J9r9J:r:J;r;   " S S\,Rx                  5      r= " S S\85      r> " S S\85      r? " S S\85      r@ " S S\85      rA " S S\85      rB " S S\85      rC " S  S!\85      rD " S" S#\85      rE " S$ S%\85      rF " S& S'\85      rG\; " S( S)\85      5       rH " S* S+\I5      rJ " S, S-\J\.5      rK " S. S/\J\/5      rL " S0 S1\05      rM " S2 S3\.5      rN " S4 S5\.5      rO " S6 S7\.5      rP " S8 S9\.5      rQ " S: S;\.5      rR " S< S=\.5      rS " S> S?\.5      rT " S@ SA\.5      rUg)B    N)closing)
to_unicodeutf8)genversion)AsyncHTTPClient)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)skipOnTravisskipIfNoIPv6refusing_port)RequestHandlerApplicationurlstream_request_bodyc                       \ rS rSrS rSrg)SimpleHTTPClientCommonTestCase-   c                 V    [        SS9nU R                  [        U[         5      5        U$ )NTforce_instance)r   
assertTrue
isinstanceselfclients     E/usr/lib/python3/dist-packages/tornado/test/simple_httpclient_test.pyget_http_client.SimpleHTTPClientCommonTestCase.get_http_client.   s%    &d;
6+@AB     N)__name__
__module____qualname____firstlineno__r2   __static_attributes__r5   r4   r1   r'   r'   -   s    r4   r'   c                   >    \ rS rSrS r\R                  S 5       rSrg)TriggerHandler4   c                     Xl         X l        g Nqueuewake_callback)r/   rA   rB   s      r1   
initializeTriggerHandler.initialize5   s    
*r4   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   rA   appendsetget_argumentrB   wait)r/   events     r1   getTriggerHandler.get9   s\     '(

%))$VV,6 jjls   A?Br@   N)	r6   r7   r8   r9   rC   r   	coroutinerO   r:   r5   r4   r1   r<   r<   4   s    + 	]] r4   r<   c                   >    \ rS rSrS r\R                  S 5       rSrg)ContentLengthHandlerC   c                     U R                  5       U l        [        R                  " 5       R	                  U R
                  5        g r?   )detachstreamr   currentspawn_callbackwrite_responser/   s    r1   rO   ContentLengthHandler.getD   s*    kkm''(;(;<r4   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)rW   writer   rL   closer[   s    r1   rZ   #ContentLengthHandler.write_responseH   sL     kkA##G,-
 	
 	s   AA)rW   N)	r6   r7   r8   r9   rO   r   rQ   rZ   r:   r5   r4   r1   rS   rS   C   s    = 	]] r4   rS   c                       \ rS rSrS rSrg)HeadHandlerS   c                 (    U R                  SS5        g )NContent-Length7)
set_headerr[   s    r1   headHeadHandler.headT   s    (#.r4   r5   N)r6   r7   r8   r9   ri   r:   r5   r4   r1   rc   rc   S   s    /r4   rc   c                       \ rS rSrS rSrg)OptionsHandlerX   c                 J    U R                  SS5        U R                  S5        g )NzAccess-Control-Allow-Origin*okrh   r_   r[   s    r1   optionsOptionsHandler.optionsY   s    5s;

4r4   r5   N)r6   r7   r8   r9   rr   r:   r5   r4   r1   rl   rl   X   s    r4   rl   c                       \ rS rSrS rSrg)NoContentHandler^   c                 F    U R                  S5        U R                  5         g )N   
set_statusfinishr[   s    r1   rO   NoContentHandler.get_   s    r4   r5   Nr6   r7   r8   r9   rO   r:   r5   r4   r1   ru   ru   ^   s    r4   ru   c                       \ rS rSrS rSrg)SeeOtherPostHandlerd   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bodyrh   rz   )r/   redirect_codes     r1   postSeeOtherPostHandler.poste   sT    DLL--.
*T,@4<<CTCT,TT*
$45&r4   r5   Nr6   r7   r8   r9   r   r:   r5   r4   r1   r   r   d   s    'r4   r   c                       \ rS rSrS rSrg)SeeOtherGetHandlerl   c                     U R                   R                  (       a"  [        SU R                   R                  -  5      eU R                  S5        g )Nr   rp   )r   r   	Exceptionr_   r[   s    r1   rO   SeeOtherGetHandler.getm   s6    <<04<<3D3DDEE

4r4   r5   Nr}   r5   r4   r1   r   r   l   s    r4   r   c                       \ rS rSrS rSrg)HostEchoHandlers   c                 T    U R                  U R                  R                  S   5        g )NHost)r_   r   headersr[   s    r1   rO   HostEchoHandler.gett   s    

4<<''/0r4   r5   Nr}   r5   r4   r1   r   r   s   s    1r4   r   c                       \ rS rSrS rSrg)NoContentLengthHandlerx   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   
startswithrV   r_   r`   r{   )r/   rW   s     r1   rO   NoContentLengthHandler.gety   sM    <<**844 [[]FLL<=LLNKK)*r4   r5   Nr}   r5   r4   r1   r   r   x   s    	+r4   r   c                       \ rS rSrS rSrg)EchoPostHandler   c                 N    U R                  U R                  R                  5        g r?   )r_   r   r   r[   s    r1   r   EchoPostHandler.post   s    

4<<$$%r4   r5   Nr   r5   r4   r1   r   r      s    &r4   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  	forbiddenry   r[   s    r1   prepareRespondInPrepareHandler.prepare   s    K r4   r5   N)r6   r7   r8   r9   r   r:   r5   r4   r1   r   r      s    !r4   r   c                   .   \ rS rSrS rS\R                  4S jrS\R                  4S jrS\R                  4S jr	\
S\R                  4S j5       rS\R                  4S jrS\R                  4S	 jrS\R                  4S
 jrS\R                  4S jr\\
S\R                  4S j5       5       r\S\R                  4S j5       r\S\R                  4S j5       rS\R                  4S jrS\R                  4S jrS\R                  4S jrS\R                  4S jrS\R                  4S jrS\R                  4S jrS\R                  4S jrS\R                  4S jrS r\R>                  S 5       r S\R                  4S jr!S\R                  4S jr"S\R                  4S jr#S\R                  4S jr$S\R                  4S jr%S\R                  4S jr&S\R                  4S jr'S\R                  4S  jr(S\R                  4S! jr)S"r*g#)$SimpleHTTPClientTestMixin   c                     [        5       er?   )NotImplementedErrorr/   kwargss     r1   create_client'SimpleHTTPClientTestMixin.create_client   s    !##r4   r/   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/triggerr@   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   rS   rc   rl   ru   r   r   r   r   r   r   r   r   r[   s    r1   get_app!SimpleHTTPClientTestMixin.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), /
 	
r4   c                 j   U R                  [        5       [        5       L 5        U R                  [        5       [        SS9L5        [        [        5       5       nS nU R                  R                  U5      nUR                  U5      nU R                  X4L5        S S S 5        g ! , (       d  f       g = f)NTr*   c                  ^   #    [         R                  " S5      I S h  vN   [        5       $  N7fNr   )r   sleepr   r5   r4   r1   make_client=SimpleHTTPClientTestMixin.test_singleton.<locals>.make_client   s$     iil"",.. #s   -+-)r,   r   r   r   io_looprun_sync)r/   io_loop2r   client1client2s        r1   test_singleton(SimpleHTTPClientTestMixin.test_singleton   s    -/3H3JJK!#+@PT+UU	
 VX(/ ll++K8G''4GOOG23 s   AB$$
B2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
/5      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      [        / SQ5      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 r?   )rJ   r   )futiseenr/   s     r1   cb;SimpleHTTPClientTestMixin.test_connection_limit.<locals>.cb   s    KKNIIKr4   r   c                  4   > [        T R                  5      S:H  $ Nr   lenr   r[   s   r1   <lambda>ASimpleHTTPClientTestMixin.test_connection_limit.<locals>.<lambda>   s    DMM(:a(?r4   )	conditionc                  ^   > [        TR                  5      S:H  =(       a    [        T 5      S:H  $ r   r   )r   r/   s   r1   r   r      s$    T]]);q)@)SSYRS^)Sr4   r      c                      > [        T 5      S:H  $ )Nr   )r   )r   s   r1   r   r      s    D	Qr4   )r   r   r      )r   r   assertEqualr   rangefetchget_urladd_done_callbackrM   r   rA   r   popleftrK   )r/   r0   r   r   r   s   `   @r1   test_connection_limit/SimpleHTTPClientTestMixin.test_connection_limit   s   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QF4S.2 MM!!#%MM!!#%II 6I7SYL(9:S/37 877s   GG??
H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)r/   r0   responses      r1   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   r/   r   s     r1   test_max_redirects,SimpleHTTPClientTestMixin.test_max_redirects   s    ::nA:>hmm, 	((,,55nEF..77GH((4==nMNr4   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)r/   r   s     r1   test_header_reuse+SimpleHTTPClientTestMixin.test_header_reuse   sC     |U34

8W
-goo/03H2IJr4   c                     U R                  SSS9nU R                  SUR                  5        U R                  UR                  R	                  5       SR                  [        5      5        g )Nr   GETmethod   z
Tornado/{})r   r   r   r   decodeformatr   r  s     r1   test_default_user_agent1SimpleHTTPClientTestMixin.test_default_user_agent   sP    ::mE::hmm,--/1D1DW1MNr4   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  )r/   r   r   s      r1   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%<%<= r4   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)rM   socketAF_INETget_http_port)r/   argsr   cleanup_eventtests      r1   resolveOSimpleHTTPClientTestMixin.test_connect_timeout.<locals>.TimeoutResolver.resolve  s=     #((***+t7I7I7K)LMNN +s   A?(Ar5   N)r6   r7   r8   r9   r'  r:   )r%  r&  s   r1   TimeoutResolverr    s    O Or4   r)  resolverr   i  T)connect_timeoutrequest_timeoutraise_errorg?)r   r   r   r   assertRaisesr   r   r   rK   r   r   )r/   timeoutr)  r0   r%  r&  s       @@r1   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)Nr  ntg      ?z/trigger?wake=falseT)r-  r.  c                  .    [         R                  " S5      $ r   r   r   r5   r4   r1   r   @SimpleHTTPClientTestMixin.test_request_timeout.<locals>.<lambda>0      ciilr4   )	osr   r/  r   r   r   r   r   r   )r/   r0  s     r1   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                  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   r!  AF_INET6getsocknamehttp_server
add_socketget_protocolr/  r   r   r   r   )r/   sockportr$   r   s        r1   	test_ipv6#SimpleHTTPClientTestMixin.test_ipv62  s    av?!!$##D)#t'8'8':D&AA y)JJsu$J? * ::c?8	 *)s   4B<<
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   rH   INFOr/  r   r  s     r1   %test_multiple_content_length_accepted?SimpleHTTPClientTestMixin.test_multiple_content_length_accepted@  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-lengthrg   )r   r   r   r   assertFalser   r  s     r1   test_head_request+SimpleHTTPClientTestMixin.test_head_requestN  sV    ::gf:5,))*:;SA'r4   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  rS  2zaccess-control-allow-originro   rJ  )r   r   r   r   r   r  s     r1   test_options_request.SimpleHTTPClientTestMixin.test_options_requestT  st    ::j:;,))*:;SA))*GH#N.r4   c                     U R                  S5      nU R                  UR                  S5        U R                  SUR                  5        g )Nr   rx   rf   )r   r   r   assertNotInr   r  s     r1   test_no_content)SimpleHTTPClientTestMixin.test_no_content[  s=    ::m,,
 	)8+;+;<r4   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)r/   host_rer   r$   s       r1   test_host_header*SimpleHTTPClientTestMixin.test_host_headerd  s    **23::l+hmm45ll<(00<OP::c?hmm4hmmDr4   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/TrM  cygwinWSAECONNREFUSED)r!   
addCleanupr   r   r/  r!  errorr   sysplatformstrerrnoECONNREFUSED	exceptionhasattrrm  r,   r9  strerror)r/   cleanup_funcrF  cmcontains_errnoexpected_messages         r1   test_connection_refused1SimpleHTTPClientTestMixin.test_connection_refusedm  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   
   )r-  c                  D   > T R                  TR                  S5      SSS9$ )Nr   r  Tr,  r.  )r   r   )r0   r/   s   r1   r   >SimpleHTTPClientTestMixin.test_queue_timeout.<locals>.<lambda>  s$    FLLX.QU ) r4   zTimeout in request queuec                     > T $ r?   r5   )fut1s   r1   r   r    s    $r4   )r   r   r   r   rM   r/  r   r   r   r   rr  ru  r   r   )r/   ry  r0   r  s   ` @@r1   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     r1   test_no_content_length0SimpleHTTPClientTestMixin.test_no_content_length  s?    ::23==..MM-.Xx}}5r4   c                 $    U" S5        U" S5        g N   1234   5678r5   r/   r_   s     r1   sync_body_producer,SimpleHTTPClientTestMixin.sync_body_producer  s    ggr4   c              #   X   #    U" S5      v   [         R                  v   U" S5      v   g 7fr  )r   momentr  s     r1   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     r1   test_sync_body_producer_chunked9SimpleHTTPClientTestMixin.test_sync_body_producer_chunked  sD    ::t7N7N  
 	4r4   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  rf   8r  r  r   r  r  r  s     r1   &test_sync_body_producer_content_length@SimpleHTTPClientTestMixin.test_sync_body_producer_content_length  sN    ::11%s+	  
 	4r4   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     r1    test_async_body_producer_chunked:SimpleHTTPClientTestMixin.test_async_body_producer_chunked  sD    ::t7O7O  
 	4r4   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     r1   'test_async_body_producer_content_lengthASimpleHTTPClientTestMixin.test_async_body_producer_content_length  sN    ::22%s+	  
 	4r4   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   r_   r  s     r1   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   r/   r  r   s      r1   !test_native_body_producer_chunked;SimpleHTTPClientTestMixin.test_native_body_producer_chunked  s=    	! ::l6:W4r4   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     r1   r  YSimpleHTTPClientTestMixin.test_native_body_producer_content_length.<locals>.body_producer  r  r  r   r  rf   r  r  r  r  r  s      r1   (test_native_body_producer_content_lengthBSimpleHTTPClientTestMixin.test_native_body_producer_content_length  sO    	! ::'%s+	  
 	4r4   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     r1   test_100_continue+SimpleHTTPClientTestMixin.test_100_continue  s4    ::g4  
 	0r4   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   r_   s    r1   r  QSimpleHTTPClientTestMixin.test_100_continue_early_response.<locals>.body_producer  s    233r4   r   r  T)r  r  r  r   )r   r   r   r  s      r1    test_100_continue_early_response:SimpleHTTPClientTestMixin.test_100_continue_early_response  s>    	4 ::!' $	  
 	,r4   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   rJ   r	  mapr   r   r   r   )r/   r   chunk_byteschunkshnum_start_liness         r1   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)+r6   r7   r8   r9   r   typingAnyr   r   r   r   r   r  r  r  r  r   r1  r:  r    rG  rO  rU  rZ  r^  rf  r|  r  r  r  r   rQ   r  r  r  r  r  r  r  r  r  r  r:   r5   r4   r1   r   r      s4   $
fjj 
>4VZZ 4$4FJJ 4< VZZ  O OK

 KOfjj O
>fjj > 6::   6 	46:: 	4 	4 9

 9 9OFJJ O(

 (/6:: /=fjj =Evzz EQfjj Q(0 0 6VZZ 6 	]] 
5fjj 55VZZ 55vzz 55fjj 5
5

 
55vzz 5"1

 1
-vzz 
--fjj -r4   r   c                   .   ^  \ rS rSrU 4S jrS rSrU =r$ )SimpleHTTPClientTestCasei  c                 L   > [         TU ]  5         U R                  5       U l        g r?   supersetUpr   http_clientr/   	__class__s    r1   r  SimpleHTTPClientTestCase.setUp	      --/r4   c                     [        SSS0UD6$ )Nr+   Tr5   r   r   s     r1   r   &SimpleHTTPClientTestCase.create_client  s    $CDCFCCr4   r  )r6   r7   r8   r9   r  r   r:   __classcell__r  s   @r1   r  r    s    0D Dr4   r  c                   L   ^  \ rS rSrU 4S j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 r?   r  r  s    r1   r  SimpleHTTPSClientTestCase.setUp  r  r4   c                 ,    [        SS[        SS9S.UD6$ )NTF)validate_cert)r+   defaultsr5   )r   r   r   s     r1   r   'SimpleHTTPSClientTestCase.create_client  s&    $ 
$U*C
GM
 	
r4   c                 |    U R                  SS[        R                  0S9nU R                  UR                  S5        g )Nr   	cert_reqsssl_optionsr?  )r   ssl	CERT_NONEr   r   r/   resps     r1   test_ssl_options*SimpleHTTPSClientTestCase.test_ssl_options  s1    zz(cmm0LzMO4r4   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  r?  )
r  create_default_contextPurposeSERVER_AUTHcheck_hostnamer  verify_moder   r   r   )r/   ssl_ctxr  s      r1   test_ssl_context*SimpleHTTPSClientTestCase.test_ssl_context  sV    ,,S[[-D-DE!&!mmzz(z8O4r4   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 exceptionFrj  r   )r  Tr  r.  )r   r   r/  r  SSLErrorr   r   CERT_REQUIREDr[   s    r1   test_ssl_options_handshake_fail9SimpleHTTPSClientTestCase.test_ssl_options_handshake_fail&  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  r/  r  r   )r/   ctxs     r1   test_ssl_context_handshake_fail9SimpleHTTPSClientTestCase.test_ssl_context_handshake_fail/  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)Nri  /T)r  r.  )r   r   r/  r  r  r   rT  logged_stack)r/   
expect_logs     r1   test_error_logging,SimpleHTTPSClientTestCase.test_error_logging6  sf     w%""3<<0

3d
E 1 & 	001 10 &%s"    B A/B /
A=	9B  
Br  )r6   r7   r8   r9   r  r   r  r  r  r	  r  r:   r  r  s   @r1   r  r    s,    0

55H2 2r4   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 r?   )r  r  r   _save_configurationsavedr  s    r1   r  #CreateAsyncHTTPClientTestCase.setUpA  s    $88:
r4   c                 b   > [         R                  " U R                  5        [        TU ]  5         g r?   )r   _restore_configurationr  r  tearDownr  s    r1   r  &CreateAsyncHTTPClientTestCase.tearDownE  s     ..tzz:r4   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   r.   s     r1   test_max_clients.CreateAsyncHTTPClientTestCase.test_max_clientsI  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  )	r6   r7   r8   r9   r  r  r!  r:   r  r  s   @r1   r  r  @  s    ;5 5r4   r  c                   ,    \ rS rSrS rS rS rS rSrg)HTTP100ContinueTestCasei[  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   rW   r_   r   respond_200)r/   r   r   s      r1   respond_100#HTTP100ContinueTestCase.respond_100\  s    __//	:
zz,,!"c40+- %%'ll%%,,223STd../r4   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       $ r?   )r   r*  rW   r`   )fr/   s    r1   r   5HTTP100ContinueTestCase.respond_200.<locals>.<lambda>m  s    (?(?(F(F(L(L(Nr4   )resultr   r*  rW   r_   r   )r/   r   s   ` r1   r,  #HTTP100ContinueTestCase.respond_200h  s@    

ll%%,,22<
 	NOr4   c                     U R                   $ r?   )r-  r[   s    r1   r   HTTP100ContinueTestCase.get_appo  s    r4   c                     U R                  S5      nU R                  (       d  U R                  S5        U R                  UR                  S5        g )Nr  r     A)r   r)  r  r   r   )r/   ress     r1   r  )HTTP100ContinueTestCase.test_100_continues  s7    jjozzMM-.4(r4   )r)  r   N)	r6   r7   r8   r9   r-  r,  r   r  r:   r5   r4   r1   r$  r$  [  s    
0P )r4   r$  c                   ,    \ rS rSrS rS rS rS rSrg)HTTP204NoContentTestCaseiz  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&  r'  r  r(  s   HTTP/1.1 204 No content
ro  Fs   Content-Length: 5
s   Content-Length: 0
s   
)r   r   r)  r*  r+  r
   r	   r{   rV   r_   	argumentsrO   r`   )r/   r   rW   s      r1   respond_204$HTTP204NoContentTestCase.respond_204{  s    __//	:
zz,,!"c40+- %%' ##**,34  5'226LL12LL12Wr4   c                     U R                   $ r?   )r@  r[   s    r1   r    HTTP204NoContentTestCase.get_app  s    r4   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  rx   r4   )r   r)  r  r   r   r   r  s     r1   test_204_no_content,HTTP204NoContentTestCase.test_204_no_content  sK    zz#zzMM-.C(C(r4   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 bodyrK  z	/?error=1TrM  r  z#curl client accepts invalid headers)r   r   rH   rN  r/  r   r   r)  r  r  configured_classr   r[   s    r1   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)r)  N)	r6   r7   r8   r9   r@  r   rE  rI  r:   r5   r4   r1   r<  r<  z  s    2 )
Ir4   r<  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 )Nr   )zwww.example.com)zfoo.example.comi@  )hostname_mapping)r  r  r   r#  r  r  s    r1   r  HostnameMappingTestCase.setUp  s2    0#.,79K9K9M+N
r4   c                 6    [        [        S[        5      /5      $ Nr   r#   r$   r   r[   s    r1   r   HostnameMappingTestCase.get_app      C*;<=>>r4   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/hellor?  )r   r#  r   r   r   r  s     r1   test_hostname_mapping-HostnameMappingTestCase.test_hostname_mapping  s?    ::?$BTBTBVVW8r4   c                 ~    U R                  S5      nUR                  5         U R                  UR                  S5        g )Nz!http://foo.example.com:8000/hellor?  r  r  s     r1   test_port_mapping)HostnameMappingTestCase.test_port_mapping  s1    ::AB8r4   r  )
r6   r7   r8   r9   r  r   rV  rY  r:   r  r  s   @r1   rL  rL    s    
?9
9 9r4   rL  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r  )r%  rM   r!  r"  r#  )r/   r$  r   r&  s      r1   r'  9ResolveTimeoutTestCase.setUp.<locals>.BadResolver.resolve  s;     ((--//+t7I7I7K)LMNNs   A Ar5   N)r6   r7   r8   r9   r   rQ   r'  r:   )r&  s   r1   BadResolverr_    s    ]]O Or4   rb  r*  )r   r%  r   r  r  r   r  )r/   rb  r&  r  s     @r1   r  ResolveTimeoutTestCase.setUp  s:    "W	O( 	O 	0+-Hr4   c                 6    [        [        S[        5      /5      $ rQ  rR  r[   s    r1   r   ResolveTimeoutTestCase.get_app  rT  r4   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   r  Tr  c                  .    [         R                  " S5      $ r   r6  r5   r4   r1   r   =ResolveTimeoutTestCase.test_resolve_timeout.<locals>.<lambda>  r8  r4   )r/  r   r   r%  rK   r   r   r[   s    r1   test_resolve_timeout+ResolveTimeoutTestCase.test_resolve_timeout  sX    /0JJx$JG 1 	 23 10s   A''
A5)r%  r  )	r6   r7   r8   r9   r  r   ri  r:   r  r  s   @r1   r\  r\    s    I?4 4r4   r\  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-Fillerdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaarp   rq   r[   s    r1   rO   3MaxHeaderSizeTest.get_app.<locals>.SmallHeaders.get  s    
I6

4 r4   r5   Nr}   r5   r4   r1   SmallHeadersro        !r4   rt  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 )Nrq    aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaarp   rq   r[   s    r1   rO   3MaxHeaderSizeTest.get_app.<locals>.LargeHeaders.get  s    
J7

4 r4   r5   Nr}   r5   r4   r1   LargeHeadersrw    ru  r4   r{  /small/larger"   r#   )r/   rt  r{  s      r1   r   MaxHeaderSizeTest.get_app  s6    	!> 	!
	!> 	!
 X|4x6NOPPr4   c                     [        SS9$ )Ni   )max_header_sizer  r[   s    r1   r2   !MaxHeaderSizeTest.get_http_client  s    $T::r4   c                 ~    U R                  S5      nUR                  5         U R                  UR                  S5        g )Nr|  rJ  r  r  s     r1   test_small_headers$MaxHeaderSizeTest.test_small_headers  s0    ::h'.r4   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 readrK  r}  TrM  )r   r   rH   rN  r/  r   r   r[   s    r1   test_large_headers$MaxHeaderSizeTest.test_large_headers  sQ    w 4GLLI""#9:

8
6 ; JI:: JI"   A'AA'
A$	 A''
A5r5   N)	r6   r7   r8   r9   r   r2   r  r  r:   r5   r4   r1   rl  rl    s    Q;/
7r4   rl  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    r1   rO   .MaxBodySizeTest.get_app.<locals>.SmallBody.get  s    

:?+r4   r5   Nr}   r5   r4   r1   	SmallBodyr    s    ,r4   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  r   r  r[   s    r1   rO   .MaxBodySizeTest.get_app.<locals>.LargeBody.get      

:+,r4   r5   Nr}   r5   r4   r1   	LargeBodyr        -r4   r  r|  r}  r~  )r/   r  r  s      r1   r   MaxBodySizeTest.get_app  s6    	, 	,	- 	- Xy1Hi3HIJJr4   c                     [        SS9$ )N   )max_body_sizer  r[   s    r1   r2   MaxBodySizeTest.get_http_client  s    $9==r4   c                     U R                  S5      nUR                  5         U R                  UR                  SS-  5        g )Nr|     aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaar  r  r  s     r1   test_small_bodyMaxBodySizeTest.test_small_body
  s5    ::h'b(89r4   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 longrK  r}  TrM  r   r   rH   rN  r/  r   r   r[   s    r1   test_large_bodyMaxBodySizeTest.test_large_body  s[    G,,

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

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

 :9
 
r  r5   N)	r6   r7   r8   r9   r   r2   r  r  r:   r5   r4   r1   r  r    s    	K>:
7r4   r  c                   &    \ rS rSrS rS rS rSrg)MaxBufferSizeTesti  c                 <     " S S[         5      n[        SU4/5      $ )Nc                       \ rS rSrS rSrg),MaxBufferSizeTest.get_app.<locals>.LargeBodyi  c                 ,    U R                  SS-  5        g r  r  r[   s    r1   rO   0MaxBufferSizeTest.get_app.<locals>.LargeBody.get  r  r4   r5   Nr}   r5   r4   r1   r  r    r  r4   r  r}  r~  )r/   r  s     r1   r   MaxBufferSizeTest.get_app  s#    	- 	- Xy1233r4   c                     [        SSS9$ )Ni  r  )r  max_buffer_sizer  r[   s    r1   r2   !MaxBufferSizeTest.get_http_client!  s    $$i
 	
r4   c                     U R                  S5      nUR                  5         U R                  UR                  SS-  5        g )Nr}  r  r   r  r  s     r1   r  !MaxBufferSizeTest.test_large_body'  s5    ::h'c(9:r4   r5   N)r6   r7   r8   r9   r   r2   r  r:   r5   r4   r1   r  r    s    4
;r4   r  c                   &    \ rS rSrS rS rS rSrg)ChunkedWithContentLengthTesti-  c                 <     " S S[         5      n[        SU4/5      $ )Nc                       \ rS rSrS rSrg)FChunkedWithContentLengthTest.get_app.<locals>.ChunkedWithContentLengthi/  c                 J    U R                  SS5        U R                  S5        g )NzTransfer-EncodingchunkedzHello worldrq   r[   s    r1   rO   JChunkedWithContentLengthTest.get_app.<locals>.ChunkedWithContentLength.get0  s     3Y?

=)r4   r5   Nr}   r5   r4   r1   ChunkedWithContentLengthr  /  s    *r4   r  /chunkwithclr~  )r/   r  s     r1   r   $ChunkedWithContentLengthTest.get_app.  s$    	*~ 	* ^-EFGHHr4   c                     [        5       $ r?   r  r[   s    r1   r2   ,ChunkedWithContentLengthTest.get_http_client7  s    $&&r4   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-LengthrK  r  TrM  r  r[   s    r1    test_chunked_with_content_length=ChunkedWithContentLengthTest.test_chunked_with_content_length:  s`    A ,,
 ""#89

>t
< :
 
 :9
 
r  r5   N)r6   r7   r8   r9   r   r2   r  r:   r5   r4   r1   r  r  -  s    I'=r4   r  )Vr   
contextlibr   rs  rH   r9  ra  r!  r  rp  r  tornado.escaper   r   tornador   r   tornado.httpclientr   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<   rS   rc   rl   ru   r   r   r   r   r   r   objectr   r  r  r  r$  r<  rL  r\  rl  r  r  r  r5   r4   r1   <module>r     s       	 	  
 
  +   . ; ! 3   2 
  )  H G M M_%M%M ^ >  /. /
^ ~ '. ' 1n 1

+^ 
+&n &
 !n ! !t- t-nD8:K D,2 9;M ,2^5M 56)/ )>.I0 .Ib9/ 904. 487) 787' 7<;) ;(=#4 =r4   