
    gy                        d dl Z d dlmZ d dlZd dlZd dlZd dlZd dlZd dlZd dl	Z	d dl
Z
d dlmZmZ d dlmZmZ d dlmZ d dlmZmZ d dlmZ d dlmZ d d	lmZ d d
lmZ d dlmZm Z  d dl!m"Z"m#Z#m$Z$ d dl%m&Z&m'Z'm(Z(m)Z)m*Z* d dl+m,Z, d dl-m.Z.m/Z/m0Z0m1Z1m2Z2 d dl3m4Z4m5Z5m6Z6 d dl7m8Z8m9Z9m:Z:m;Z;  G d de,jx                        Z= G d de8      Z> G d de8      Z? G d de8      Z@ G d de8      ZA G d de8      ZB G d de8      ZC G d  d!e8      ZD G d" d#e8      ZE G d$ d%e8      ZF G d& d'e8      ZGe; G d( d)e8             ZH G d* d+eI      ZJ G d, d-eJe.      ZK G d. d/eJe/      ZL G d0 d1e0      ZM G d2 d3e.      ZN G d4 d5e.      ZO G d6 d7e.      ZP G d8 d9e.      ZQ G d: d;e.      ZR G d< d=e.      ZS G d> d?e.      ZT G d@ dAe.      ZUy)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                       e Zd Zd Zy)SimpleHTTPClientCommonTestCasec                 \    t        d      }| j                  t        |t                      |S )NTforce_instance)r   
assertTrue
isinstanceselfclients     X/var/www/openai/venv/lib/python3.12/site-packages/tornado/test/simple_httpclient_test.pyget_http_clientz.SimpleHTTPClientCommonTestCase.get_http_client.   s%    &d;
6+@AB    N)__name__
__module____qualname__r1    r2   r0   r'   r'   -   s    r2   r'   c                   6    e Zd Zd Zej
                  d        Zy)TriggerHandlerc                      || _         || _        y Nqueuewake_callback)r.   r<   r=   s      r0   
initializezTriggerHandler.initialize5   s    
*r2   c              #     K   t        j                  d       t               }| j                  j	                  |j
                         | j                  dd      dk(  r| j                          |j                          y w)Nzqueuing triggerwaketrue)	loggingdebugr   r<   appendsetget_argumentr=   wait)r.   events     r0   getzTriggerHandler.get9   s]     '(

%))$VV,6 jjls   A=A?N)r3   r4   r5   r>   r   	coroutinerI   r6   r2   r0   r8   r8   4   s    + 	]] r2   r8   c                   6    e Zd Zd Zej
                  d        Zy)ContentLengthHandlerc                     | j                         | _        t        j                         j	                  | j
                         y r:   )detachstreamr   currentspawn_callbackwrite_responser.   s    r0   rI   zContentLengthHandler.getD   s*    kkm''(;(;<r2   c              #      K   | j                   j                  t        d| j                  d      z               | j                   j	                          y w)Nz)HTTP/1.0 200 OK
Content-Length: %s

okvalue)rO   writer   rF   closerS   s    r0   rR   z#ContentLengthHandler.write_responseH   sM     kkA##G,-
 	
 	s   AAN)r3   r4   r5   rI   r   rJ   rR   r6   r2   r0   rL   rL   C   s    = 	]] r2   rL   c                       e Zd Zd Zy)HeadHandlerc                 (    | j                  dd       y )NContent-Length7)
set_headerrS   s    r0   headzHeadHandler.headT   s    (#.r2   N)r3   r4   r5   r^   r6   r2   r0   rY   rY   S   s    /r2   rY   c                       e Zd Zd Zy)OptionsHandlerc                 J    | j                  dd       | j                  d       y )NzAccess-Control-Allow-Origin*okr]   rV   rS   s    r0   optionszOptionsHandler.optionsY   s    5s;

4r2   N)r3   r4   r5   re   r6   r2   r0   r`   r`   X   s    r2   r`   c                       e Zd Zd Zy)NoContentHandlerc                 F    | j                  d       | j                          y )N   
set_statusfinishrS   s    r0   rI   zNoContentHandler.get_   s    r2   Nr3   r4   r5   rI   r6   r2   r0   rg   rg   ^   s    r2   rg   c                       e Zd Zd Zy)SeeOtherPostHandlerc                     t        | j                  j                        }|dv sJ d| j                  j                  z         | j                  dd       | j	                  |       y )N.  i/  unexpected body %rLocation/see_other_get)intrequestbodyr]   rk   )r.   redirect_codes     r0   postzSeeOtherPostHandler.poste   sT    DLL--.
*T,@4<<CTCT,TT*
$45&r2   Nr3   r4   r5   rz   r6   r2   r0   ro   ro   d   s    'r2   ro   c                       e Zd Zd Zy)SeeOtherGetHandlerc                     | j                   j                  r"t        d| j                   j                  z        | j                  d       y )Nrs   rc   )rw   rx   	ExceptionrV   rS   s    r0   rI   zSeeOtherGetHandler.getm   s6    <<04<<3D3DDEE

4r2   Nrm   r6   r2   r0   r}   r}   l   s    r2   r}   c                       e Zd Zd Zy)HostEchoHandlerc                 T    | j                  | j                  j                  d          y )NHost)rV   rw   headersrS   s    r0   rI   zHostEchoHandler.gett   s    

4<<''/0r2   Nrm   r6   r2   r0   r   r   s   s    1r2   r   c                       e Zd Zd Zy)NoContentLengthHandlerc                     | j                   j                  j                  d      r2| j                         }|j	                  d       |j                          y | j                  d       y )NzHTTP/1s   HTTP/1.0 200 OK

hellozHTTP/1 required)rw   r   
startswithrN   rV   rW   rl   )r.   rO   s     r0   rI   zNoContentLengthHandler.gety   sJ    <<**84 [[]FLL<=LLNKK)*r2   Nrm   r6   r2   r0   r   r   x   s    	+r2   r   c                       e Zd Zd Zy)EchoPostHandlerc                 N    | j                  | j                  j                         y r:   )rV   rw   rx   rS   s    r0   rz   zEchoPostHandler.post   s    

4<<$$%r2   Nr{   r6   r2   r0   r   r      s    &r2   r   c                       e Zd Zd Zy)RespondInPrepareHandlerc                 H    | j                  d       | j                  d       y )N  	forbiddenrj   rS   s    r0   preparezRespondInPrepareHandler.prepare   s    K r2   N)r3   r4   r5   r   r6   r2   r0   r   r      s    !r2   r   c                      e Zd Zd Zdej
                  fdZdej
                  fdZdej
                  fdZe	dej
                  fd       Z
dej
                  fdZdej
                  fdZdej
                  fd	Zdej
                  fd
Zee	dej
                  fd              Zedej
                  fd       Zedej
                  fd       Zdej
                  fdZdej
                  fdZdej
                  fdZdej
                  fdZdej
                  fdZdej
                  fdZdej
                  fdZdej
                  fdZd Zej<                  d        Zdej
                  fdZ dej
                  fdZ!dej
                  fdZ"dej
                  fdZ#dej
                  fdZ$dej
                  fdZ%dej
                  fdZ&dej
                  fdZ'dej
                  fd Z(y!)"SimpleHTTPClientTestMixinc                     t               r:   )NotImplementedErrorr.   kwargss     r0   create_clientz'SimpleHTTPClientTestMixin.create_client   s    !##r2   r.   c                 r   t        j                         | _        t        t	        dt
        t        | j                  | j                              t	        dt              t	        dt        d      t	        dt              t	        dt              t	        d	t              t	        d
t              t	        dt              t	        dt              t	        dt               t	        dt"              t	        dt$              t	        dt&              t	        dt(              t	        dt*              t	        dt,              gd      S )N/triggerr;   z/chunkz/countdown/([0-9]+)	countdown)name/helloz/content_length/head/options/no_content/see_other_postru   
/host_echo/no_content_length
/echo_post/respond_in_preparez	/redirect/user_agentT)gzip)collectionsdequetriggersr#   r$   r8   dictstopr   r   r   rL   rY   r`   rg   ro   r}   r   r   r   r   r   r   rS   s    r0   get_appz!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), /
 	
r2   c                 h   | j                  t               t               u        | j                  t               t        d      u       t        t                     5 }d }| j                  j                  |      }|j                  |      }| j                  ||u       d d d        y # 1 sw Y   y xY w)NTr)   c                  \   K   t        j                  d       d {    t               S 7 wNr   )r   sleepr   r6   r2   r0   make_clientz=SimpleHTTPClientTestMixin.test_singleton.<locals>.make_client   s%     iil"",.. #s   ,*,)r+   r   r   r   io_looprun_sync)r.   io_loop2r   client1client2s        r0   test_singletonz(SimpleHTTPClientTestMixin.test_singleton   s    -/3H3JJK!#+@PT+UU	
 VX(/ ll++K8G''4GOOG723 s   AB((B1c                      t         j                  d            5 } j                  |j                  d       g t	        d      D ]9  }|f fd	}|j                   j                  d            j                  |       ;  j                   fd        j                  t        |j                        d         j                  j                                   j                  j                                  j                   fd        j                  t              t        d	d
g              j                  t        |j                        d	         j                  j                                   j                  j                                  j                  fd        j                  t              t        g d              j                  t         j                        d	       d d d        y # 1 sw Y   y xY w)N   max_clients   c                 H    j                  |       j                          y r:   )rD   r   )futiseenr.   s     r0   cbz;SimpleHTTPClientTestMixin.test_connection_limit.<locals>.cb   s    KKNIIKr2   r   c                  4    t         j                        dk(  S Nr   lenr   rS   s   r0   <lambda>zASimpleHTTPClientTestMixin.test_connection_limit.<locals>.<lambda>   s    DMM(:a(?r2   )	conditionc                  T    t        j                        dk(  xr t               dk(  S r   r   )r   r.   s   r0   r   zASimpleHTTPClientTestMixin.test_connection_limit.<locals>.<lambda>   s$    T]]);q)@)SSYRS^)Sr2   r      c                       t               dk(  S )Nr   )r   )r   s   r0   r   zASimpleHTTPClientTestMixin.test_connection_limit.<locals>.<lambda>   s    D	Qr2   )r   r   r      )r   r   assertEqualr   rangefetchget_urladd_done_callbackrG   r   r<   r   popleftrE   )r.   r/   r   r   r   s   `   @r0   test_connection_limitz/SimpleHTTPClientTestMixin.test_connection_limit   s   T''A'676V//3D 1X   T\\*56HHL  II ?I@S.2 $DMM!!#%#DMM!!#%II TIUSYQF4S.2 $DMM!!#%#DMM!!#%II 6I7SYL(9:S/37 877s   GHHc              #      K   t        | j                  d            5 }|j                  | j                  d      d      }|j	                          d d d        y # 1 sw Y   y xY ww)Nr   r   z/countdown/3r   max_redirects)r   r   r   r   rethrow)r.   r/   responses      r0   test_redirect_connection_limitz8SimpleHTTPClientTestMixin.test_redirect_connection_limit   sV      T''A'676#\\$,,~*FVW\XXH 877s   A(5A	A(A%!A(c                 x   | j                  dd      }| j                  d|j                         | j                  |j                  j
                  j                  d             | j                  |j                  j                  d             | j                  |j                  d   j                  d             y )Nz/countdown/5r   r   rr   z/countdown/2rt   z/countdown/1)	r   r   coder+   rw   r$   endswitheffective_urlr   r.   r   s     r0   test_max_redirectsz,SimpleHTTPClientTestMixin.test_max_redirects   s    ::nA:>hmm, 	((,,55nEF..77GH((4==nMNr2   c                     t        ddi      }| j                  d|       | j                  t        |j	                               dg       y )N
User-AgentFoor   )r   )r   r   )r	   r   r   listget_all)r.   r   s     r0   test_header_reusez+SimpleHTTPClientTestMixin.test_header_reuse   sC     |U34

8W
-goo/03H2IJr2   c                     | j                  dd      }| j                  d|j                         | j                  |j                  j	                         dj                  t                     y )Nr   GETmethod   z
Tornado/{})r   r   r   rx   decodeformatr   r   s     r0   test_default_user_agentz1SimpleHTTPClientTestMixin.test_default_user_agent   sP    ::mE::hmm,--/1D1DW1MNr2   c                    dD ]  }| j                  ddd|z        }| j                  d|j                         | j                  |j                  j
                  j                  d             | j                  |j                  j                  d             | j                  d|j                  j                          y )Nrq   r   POSTz%d)r   rx   r   ru   )	r   r   r   r+   rw   r$   r   r   r   )r.   r   r   s      r0   test_see_other_redirectz1SimpleHTTPClientTestMixin.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%<%<= r2   c              #     K   d}t               |  G fddt              }t        | j                   |                   5 }| j	                  t
              5  |j                  | j                  d      |dd       d d d        d d d        j                          t        j                  d	       y # 1 sw Y   9xY w# 1 sw Y   =xY ww)
N皙?c                       e Zd Z fdZy)GSimpleHTTPClientTestMixin.test_connect_timeout.<locals>.TimeoutResolverc                    K   j                          d {    t        j                  dj                         ffgS 7 'wN	127.0.0.1)rG   socketAF_INETget_http_port)r.   argsr   cleanup_eventtests      r0   resolvezOSimpleHTTPClientTestMixin.test_connect_timeout.<locals>.TimeoutResolver.resolve  s>     #((***+t7I7I7K)LMNN +s   A?(AN)r3   r4   r5   r   )r   r   s   r0   TimeoutResolverr     s	    Or2   r   resolverr   i  T)connect_timeoutrequest_timeoutraise_errorg?)r   r   r   r   assertRaisesr   r   r   rE   r   r   )r.   timeoutr   r/   r   r   s       @@r0   test_connect_timeoutz.SimpleHTTPClientTestMixin.test_connect_timeout	  s      	Oh 	O T''1B'CD""#34llLL*$+$( $	 #   5 E 	iin 54 EDs6   ACC'B:C
0C:C	?CCCc                 $   d}t         j                  dk(  rd}| j                  t              5  | j	                  d|d       d d d         | j
                  j                                 | j                  j                  d        y # 1 sw Y   ExY w)Nr   ntg      ?z/trigger?wake=falseT)r  r  c                  ,    t        j                  d      S r   r   r   r6   r2   r0   r   z@SimpleHTTPClientTestMixin.test_request_timeout.<locals>.<lambda>0      ciilr2   )	osr   r  r   r   r   r   r   r   )r.   r  s     r0   test_request_timeoutz.SimpleHTTPClientTestMixin.test_request_timeout&  sr    77d?G/0JJ,gSWJX 1 	 !23	 10s   BBc                    t        ddt        j                        \  }|j                         d   }| j                  j                  |       d| j                         |fz  }| j                  t              5  | j                  |dd       d d d        | j                  |      }| j                  |j                  d	       y # 1 sw Y   7xY w)
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   rx   )r.   sockportr$   r   s        r0   	test_ipv6z#SimpleHTTPClientTestMixin.test_ipv62  s    av?!!$##D)#t'8'8':D&AA y)JJsu$J? * ::c?8	 *)s   7CCc                    | j                  d      }| j                  |j                  d       | j                  d      }| j                  |j                  d       t        t        dt
        j                        5  | j                  t              5  | j                  dd       d d d        | j                  t              5  | j                  d	d       d d d        d d d        y # 1 sw Y   CxY w# 1 sw Y   xY w# 1 sw Y   y xY w)
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   rx   r   r   rB   INFOr  r   r   s     r0   %test_multiple_content_length_acceptedz?SimpleHTTPClientTestMixin.test_multiple_content_length_accepted@  s    ::9:.::>?.9
 ""#89

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

;
N :
 
 :999
 
s<   ;C?C'%C?C3C?'C0	,C?3C<	8C??Dc                     | j                  dd      }| j                  |j                  d       | j                  |j                  d   d       | j	                  |j
                         y )Nr   HEADr   r   content-lengthr\   )r   r   r   r   assertFalserx   r   s     r0   test_head_requestz+SimpleHTTPClientTestMixin.test_head_requestN  sV    ::gf:5,))*:;SA'r2   c                    | j                  dd      }| j                  |j                  d       | j                  |j                  d   d       | j                  |j                  d   d       | j                  |j                  d	       y )
Nr   OPTIONSr   r   r$  2zaccess-control-allow-originrb   r  )r   r   r   r   rx   r   s     r0   test_options_requestz.SimpleHTTPClientTestMixin.test_options_requestT  st    ::j:;,))*:;SA))*GH#N.r2   c                     | j                  d      }| j                  |j                  d       | j                  d|j                         y )Nr   ri   r[   )r   r   r   assertNotInr   r   s     r0   test_no_contentz)SimpleHTTPClientTestMixin.test_no_content[  s=    ::m,,
 	)8+;+;<r2   c                 r   t        j                  d      }| j                  d      }| j                  |j	                  |j
                               | j                  d      j                  dd      }| j                  |      }| j                  |j	                  |j
                        |j
                         y )Ns   ^127.0.0.1:[0-9]+$r   zhttp://zhttp://me:secret@)recompiler   r+   matchrx   r   replace)r.   host_rer   r$   s       r0   test_host_headerz*SimpleHTTPClientTestMixin.test_host_headerd  s    **23::l+hmm45ll<(00<OP::c?hmm4hmmDr2   c                 
   t               \  }}| j                  |       t        t        dd      5  | j	                  t
        j                        5 }| j                  d|z  d       d d d        d d d        t        j                  dk7  rt        t        j                        t        j                        v }|s>t        t        d      r.t        t        j                        t        |j                        v }| j!                  ||j                         t#        j$                  t        j                        }| j!                  |t        |j                        v |j                         y y # 1 sw Y   xY w# 1 sw Y   
xY w)	N.*Frequiredzhttp://127.0.0.1:%d/Tr  cygwinWSAECONNREFUSED)r!   
addCleanupr   r   r  r   errorr   sysplatformstrerrnoECONNREFUSED	exceptionhasattrr:  r+   r  strerror)r.   cleanup_funcr  cmcontains_errnoexpected_messages         r0   test_connection_refusedz1SimpleHTTPClientTestMixin.test_connection_refusedm  s   *_d%wu5""6<<0B

1D8d
K 1 6 <<8# !3!34BLL8IIN!ge5F&G!$U%:%:!;sLL@ " OONBLL9  "{{5+=+=>OO,BLL0AA2<<P $ 10 65s#    E8E+(E8+E5	0E88Fc                 $    t         j                  d            5 j                   j                  d      d       j	                           j                  t              5 } j                  j                   fd       d d d         j                  t        j                        d         j                  j                                  j                  j                  fd       d d d        y # 1 sw Y   txY w# 1 sw Y   y xY w)	Nr   r   r   
   )r  c                  J     j                  j                  d      dd      S )Nr   r   Tr  r  )r   r   )r/   r.   s   r0   r   z>SimpleHTTPClientTestMixin.test_queue_timeout.<locals>.<lambda>  s$    FLLX.QU ) r2   zTimeout in request queuec                       S r:   r6   )fut1s   r0   r   z>SimpleHTTPClientTestMixin.test_queue_timeout.<locals>.<lambda>  s    $r2   )r   r   r   r   rG   r  r   r   r   r   r?  rB  r   r   )r.   rF  r/   rO  s   ` @@r0   test_queue_timeoutz,SimpleHTTPClientTestMixin.test_queue_timeout  s    T''A'676<<Z 8"<MDIIK""#34%% 5 S.0JK#DMM!!#%LL!!,/ 87 54	 87s%   AD' C:A*D:D	?DDc                     | j                  d      }|j                  dk(  r| j                  d       y | j                  d|j                         y )Nr   s   HTTP/1 requiredrequires HTTP/1.xs   hello)r   rx   skipTestr   r   s     r0   test_no_content_lengthz0SimpleHTTPClientTestMixin.test_no_content_length  s?    ::23==..MM-.Xx}}5r2   c                 $     |d        |d       y N   1234   5678r6   r.   rV   s     r0   sync_body_producerz,SimpleHTTPClientTestMixin.sync_body_producer  s    ggr2   c              #   X   K    |d       t         j                    |d       y wrV  )r   momentrY  s     r0   async_body_producerz-SimpleHTTPClientTestMixin.async_body_producer  s$     GnjjGns   (*c                     | j                  dd| j                        }|j                          | j                  |j                  d       y Nr   r   r   body_producer   12345678r   rZ  r   r   rx   r   s     r0   test_sync_body_producer_chunkedz9SimpleHTTPClientTestMixin.test_sync_body_producer_chunked  sD    ::t7N7N  
 	4r2   c                     | j                  dd| j                  ddi      }|j                          | j                  |j                  d       y Nr   r   r[   8r   ra  r   rb  rc  r   s     r0   &test_sync_body_producer_content_lengthz@SimpleHTTPClientTestMixin.test_sync_body_producer_content_length  sN    ::11%s+	  
 	4r2   c                     | j                  dd| j                        }|j                          | j                  |j                  d       y r_  r   r]  r   r   rx   r   s     r0    test_async_body_producer_chunkedz:SimpleHTTPClientTestMixin.test_async_body_producer_chunked  sD    ::t7O7O  
 	4r2   c                     | j                  dd| j                  ddi      }|j                          | j                  |j                  d       y rf  rk  r   s     r0   'test_async_body_producer_content_lengthzASimpleHTTPClientTestMixin.test_async_body_producer_content_length  sN    ::22%s+	  
 	4r2   c                     d }| j                  dd|      }|j                          | j                  |j                  d       y )Nc                    K    | d       d {    dd l }|j                  d       d {     | d       d {    y 7 27 7 	wNrW  r   rX  asyncior   rV   rs  s     r0   ra  zRSimpleHTTPClientTestMixin.test_native_body_producer_chunked.<locals>.body_producer  D     .  --""".  	 ! # /   AAAAAAAAAr   r   r`  rb  r   r   r   rx   r.   ra  r   s      r0   !test_native_body_producer_chunkedz;SimpleHTTPClientTestMixin.test_native_body_producer_chunked  s=    	! ::l6:W4r2   c                     d }| j                  dd|ddi      }|j                          | j                  |j                  d       y )Nc                    K    | d       d {    dd l }|j                  d       d {     | d       d {    y 7 27 7 	wrq  rr  rt  s     r0   ra  zYSimpleHTTPClientTestMixin.test_native_body_producer_content_length.<locals>.body_producer  ru  rv  r   r   r[   rg  rh  rb  rw  rx  s      r0   (test_native_body_producer_content_lengthzBSimpleHTTPClientTestMixin.test_native_body_producer_content_length  sO    	! ::'%s+	  
 	4r2   c                 f    | j                  dddd      }| j                  |j                  d       y )Nr   r   rW  T)r   rx   expect_100_continue)r   r   rx   r   s     r0   test_100_continuez+SimpleHTTPClientTestMixin.test_100_continue  s4    ::g4  
 	0r2   c                 l    d }| j                  dd|d      }| j                  |j                  d       y )Nc                     t        d      )Nzshould not be called)r   rV   s    r0   ra  zQSimpleHTTPClientTestMixin.test_100_continue_early_response.<locals>.body_producer  s    233r2   r   r   T)r   ra  r~  r   )r   r   r   rx  s      r0    test_100_continue_early_responsez:SimpleHTTPClientTestMixin.test_100_continue_early_response  s>    	4 ::!' $	  
 	,r2   c                 8   g }g }| j                  d|j                  |j                         t        t        t        |            }| j                  |dg       t        |D cg c]  }|j                  d      s| c}      }| j                  |d       y c c}w )Nz/redirect?url=/hello)header_callbackstreaming_callbackzHello world!zHTTP/r   )r   rD   r   mapr   r   r   r   )r.   r   chunk_byteschunkshnum_start_liness         r0   test_streaming_follow_redirectsz9SimpleHTTPClientTestMixin.test_streaming_follow_redirects  s     

"#NN*11 	 	

 c*k23.!12'K'QQ\\'5Jq'KL!, Ls   "B9BN))r3   r4   r5   r   typingAnyr   r   r   r   r   r   r   r   r   r   r  r  r    r  r!  r&  r*  r-  r4  rI  rP  rT  rZ  r   rJ   r]  rd  ri  rl  rn  ry  r|  r  r  r  r6   r2   r0   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 -r2   r   c                   $     e Zd Z fdZd Z xZS )SimpleHTTPClientTestCasec                 L    t         |           | j                         | _        y r:   supersetUpr   http_clientr.   	__class__s    r0   r  zSimpleHTTPClientTestCase.setUp	      --/r2   c                     t        dddi|S )Nr*   Tr6   r   r   s     r0   r   z&SimpleHTTPClientTestCase.create_client  s    $CDCFCCr2   )r3   r4   r5   r  r   __classcell__r  s   @r0   r  r    s    0Dr2   r  c                   B     e Zd Z fdZd Zd Zd Zd Zd Zd Z	 xZ
S )SimpleHTTPSClientTestCasec                 L    t         |           | j                         | _        y r:   r  r  s    r0   r  zSimpleHTTPSClientTestCase.setUp  r  r2   c                 2    t        ddt        d      d|S )NTF)validate_cert)r*   defaultsr6   )r   r   r   s     r0   r   z'SimpleHTTPSClientTestCase.create_client  s&    $ 
$U*C
GM
 	
r2   c                     | j                  ddt        j                  i      }| j                  |j                  d       y )Nr   	cert_reqsssl_optionsr  )r   ssl	CERT_NONEr   rx   r.   resps     r0   test_ssl_optionsz*SimpleHTTPSClientTestCase.test_ssl_options  s1    zz(cmm0LzMO4r2   c                     t        j                  t         j                  j                        }d|_        t         j
                  |_        | j                  d|      }| j                  |j                  d       y )NFr   r  r  )
r  create_default_contextPurposeSERVER_AUTHcheck_hostnamer  verify_moder   r   rx   )r.   ssl_ctxr  s      r0   test_ssl_contextz*SimpleHTTPSClientTestCase.test_ssl_context  sV    ,,S[[-D-DE!&!mmzz(z8O4r2   c                    t        t        dd      5  | j                  t        j                        5  | j                  dt        t        j                        d       d d d        d d d        y # 1 sw Y   xY w# 1 sw Y   y xY w)NSSL Error|Uncaught exceptionFr7  r   )r  Tr  r  )r   r   r  r  SSLErrorr   r   CERT_REQUIREDrS   s    r0   test_ssl_options_handshake_failz9SimpleHTTPSClientTestCase.test_ssl_options_handshake_fail&  se    w >O""3<<0

 $s/@/@ A $   1 PO00 POs"    A=-A1 A=1A:	6A==Bc                 8   t        t        d      5  t        j                  t        j                  j
                        }| j                  t        j                        5  | j                  d|d       d d d        d d d        y # 1 sw Y   xY w# 1 sw Y   y xY w)Nr  r   Tr  )	r   r   r  r  r  r  r  r  r   )r.   ctxs     r0   test_ssl_context_handshake_failz9SimpleHTTPSClientTestCase.test_ssl_context_handshake_fail/  sl    w >?,,S[[-D-DEC""3<<0

8$
G 1 @? 10 @?s$   ABB3BB		BBc                    t        t        d      5 }| j                  t        j                        5  | j                  ddd       d d d        d d d        | j                  j                         y # 1 sw Y   -xY w# 1 sw Y   1xY w)Nr6  /T)r  r  )r   r   r  r  r  r   r%  logged_stack)r.   
expect_logs     r0   test_error_loggingz,SimpleHTTPSClientTestCase.test_error_logging6  sf     w%""3<<0

3d
E 1 & 	001 10 &%s"    A>A2A>2A;	7A>>B)r3   r4   r5   r  r   r  r  r  r  r  r  r  s   @r0   r  r    s'    0

55H2r2   r  c                   .     e Zd Z fdZ fdZd Z xZS )CreateAsyncHTTPClientTestCasec                 T    t         |           t        j                         | _        y r:   )r  r  r   _save_configurationsavedr  s    r0   r  z#CreateAsyncHTTPClientTestCase.setUpA  s    $88:
r2   c                 `    t        j                  | j                         t        |           y r:   )r   _restore_configurationr  r  tearDownr  s    r0   r  z&CreateAsyncHTTPClientTestCase.tearDownE  s     ..tzz:r2   c                 0   t        j                  t               t        t        d            5 }| j	                  |j
                  d       d d d        t        t        dd            5 }| j	                  |j
                  d       d d d        t        j                  t        d       t        t        d            5 }| j	                  |j
                  d       d d d        t        t        dd            5 }| j	                  |j
                  d       d d d        t        t        d	d            5 }| j	                  |j
                  d	       d d d        y # 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   jxY w# 1 sw Y   y xY w)
NTr)   rK     )r   r*      r         )r   	configurer   r   r   r   r-   s     r0   test_max_clientsz.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(?E4:F 5FE%(E14E= F	F)r3   r4   r5   r  r  r  r  r  s   @r0   r  r  @  s    ;5r2   r  c                   $    e Zd Zd Zd Zd Zd Zy)HTTP100ContinueTestCasec                    |j                   j                  d      | _        | j                  sJ|j                  j	                  t        ddd      t                      |j                  j                          y || _        | j                  j                  j                  j                  d      }|j                  | j                         y )NHTTP/1. r   OKs   HTTP/1.1 100 CONTINUE

)r   r   http1
connectionwrite_headersr
   r	   rl   rw   rO   rV   r   respond_200)r.   rw   r   s      r0   respond_100z#HTTP100ContinueTestCase.respond_100\  s    __//	:
zz,,!"c40+- %%'ll%%,,223STd../r2   c                      |j                           j                  j                  j                  j	                  d      }|j                   fd       y )Ns'   HTTP/1.1 200 OK
Content-Length: 1

Ac                 `    j                   j                  j                  j                         S r:   )rw   r  rO   rW   )fr.   s    r0   r   z5HTTP100ContinueTestCase.respond_200.<locals>.<lambda>m  s    (?(?(F(F(L(L(Nr2   )resultrw   r  rO   rV   r   )r.   r   s   ` r0   r  z#HTTP100ContinueTestCase.respond_200h  s@    

ll%%,,22<
 	NOr2   c                     | j                   S r:   )r  rS   s    r0   r   zHTTP100ContinueTestCase.get_appo  s    r2   c                     | j                  d      }| j                  s| j                  d       | j                  |j                  d       y )Nr  rR     A)r   r  rS  r   rx   )r.   ress     r0   r  z)HTTP100ContinueTestCase.test_100_continues  s7    jjozzMM-.4(r2   N)r3   r4   r5   r  r  r   r  r6   r2   r0   r  r  [  s    
0P )r2   r  c                   $    e Zd Zd Zd Zd Zd Zy)HTTP204NoContentTestCasec                    |j                   j                  d      | _        | j                  sJ|j                  j	                  t        ddd      t                      |j                  j                          y |j                  j                         }|j                  d       |j                  j                  ddg      d   r|j                  d	       n|j                  d
       |j                  d       |j                          y )Nr  r  r   r  s   HTTP/1.1 204 No content
r<  Fs   Content-Length: 5
s   Content-Length: 0
s   
)r   r   r  r  r  r
   r	   rl   rN   rV   	argumentsrI   rW   )r.   rw   rO   s      r0   respond_204z$HTTP204NoContentTestCase.respond_204{  s    __//	:
zz,,!"c40+- %%' ##**,34  5'226LL12LL12Wr2   c                     | j                   S r:   )r  rS   s    r0   r   z HTTP204NoContentTestCase.get_app  s    r2   c                     | j                  d      }| j                  s| j                  d       | j                  |j                  d       | j                  |j
                  d       y )Nr  rR  ri   r2   )r   r  rS  r   r   rx   r  s     r0   test_204_no_contentz,HTTP204NoContentTestCase.test_204_no_content  sK    zz#zzMM-.C(C(r2   c                 ~   t        t        dt        j                        5  | j	                  t
              5  | j                  dd       | j                  s| j                  d       | j                  j                  t        k7  r| j                  d       d d d        d d d        y # 1 sw Y   xY w# 1 sw Y   y xY w)Nz-.*Response with code 204 should not have bodyr  z	/?error=1Tr  rR  z#curl client accepts invalid headers)r   r   rB   r   r  r   r   r  rS  r  configured_classr   rS   s    r0   test_204_invalid_content_lengthz8HTTP204NoContentTestCase.test_204_invalid_content_length  s    DGLL
 ""#89

;D
9zzMM"56##448MMMM"GH :
 
 :9
 
s#   B3AB'B3'B0	,B33B<N)r3   r4   r5   r  r   r  r  r6   r2   r0   r  r  z  s    2 )
Ir2   r  c                   0     e Zd Z fdZd Zd Zd Z xZS )HostnameMappingTestCasec                 j    t         |           t        dd| j                         fd      | _        y )Nr   )zwww.example.com)zfoo.example.comi@  )hostname_mapping)r  r  r   r   r  r  s    r0   r  zHostnameMappingTestCase.setUp  s2    0#.,79K9K9M+N
r2   c                 6    t        t        dt              g      S Nr   r#   r$   r   rS   s    r0   r   zHostnameMappingTestCase.get_app      C*;<=>>r2   c                     | j                  d| j                         z        }|j                          | j                  |j                  d       y )Nzhttp://www.example.com:%d/hellor  )r   r   r   r   rx   r   s     r0   test_hostname_mappingz-HostnameMappingTestCase.test_hostname_mapping  s?    ::?$BTBTBVVW8r2   c                 ~    | j                  d      }|j                          | j                  |j                  d       y )Nz!http://foo.example.com:8000/hellor  rw  r   s     r0   test_port_mappingz)HostnameMappingTestCase.test_port_mapping  s1    ::AB8r2   )r3   r4   r5   r  r   r  r  r  r  s   @r0   r  r    s    
?9
9r2   r  c                   *     e Zd Z fdZd Zd Z xZS )ResolveTimeoutTestCasec                     t               | _        |  G fddt              }t        |           t         |             | _        y )Nc                   6    e Zd Zej                   fd       Zy)1ResolveTimeoutTestCase.setUp.<locals>.BadResolverc              ?      K   j                   j                          t        j                  dj	                         ffgS wr   )r   rG   r   r   r   )r.   r   r   r   s      r0   r   z9ResolveTimeoutTestCase.setUp.<locals>.BadResolver.resolve  s<     ((--//+t7I7I7K)LMNNs   A AN)r3   r4   r5   r   rJ   r   )r   s   r0   BadResolverr     s    ]]O Or2   r  r   )r   r   r   r  r  r   r  )r.   r  r   r  s     @r0   r  zResolveTimeoutTestCase.setUp  s:    "W	O( 	O 	0+-Hr2   c                 6    t        t        dt              g      S r  r  rS   s    r0   r   zResolveTimeoutTestCase.get_app  r  r2   c                     | j                  t              5  | j                  ddd       d d d        | j                  j	                          | j
                  j                  d        y # 1 sw Y   @xY w)Nr   r   TrM  c                  ,    t        j                  d      S r   r  r6   r2   r0   r   z=ResolveTimeoutTestCase.test_resolve_timeout.<locals>.<lambda>  r  r2   )r  r   r   r   rE   r   r   rS   s    r0   test_resolve_timeoutz+ResolveTimeoutTestCase.test_resolve_timeout  sX    /0JJx$JG 1 	 23 10s   A**A3)r3   r4   r5   r  r   r  r  r  s   @r0   r  r    s    I?4r2   r  c                   $    e Zd Zd Zd Zd Zd Zy)MaxHeaderSizeTestc                 `     G d dt               } G d dt               }t        d|fd|fg      S )Nc                       e Zd Zd Zy)/MaxHeaderSizeTest.get_app.<locals>.SmallHeadersc                 J    | j                  dd       | j                  d       y )NX-Fillerdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaarc   rd   rS   s    r0   rI   z3MaxHeaderSizeTest.get_app.<locals>.SmallHeaders.get  s    
I6

4 r2   Nrm   r6   r2   r0   SmallHeadersr        !r2   r  c                       e Zd Zd Zy)/MaxHeaderSizeTest.get_app.<locals>.LargeHeadersc                 J    | j                  dd       | j                  d       y )Nr    aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaarc   rd   rS   s    r0   rI   z3MaxHeaderSizeTest.get_app.<locals>.LargeHeaders.get  s    
J7

4 r2   Nrm   r6   r2   r0   LargeHeadersr    r  r2   r  /small/larger"   r#   )r.   r  r  s      r0   r   zMaxHeaderSizeTest.get_app  s6    	!> 	!
	!> 	!
 X|4x6NOPPr2   c                     t        d      S )Ni   )max_header_sizer  rS   s    r0   r1   z!MaxHeaderSizeTest.get_http_client  s    $T::r2   c                 ~    | j                  d      }|j                          | j                  |j                  d       y )Nr  r  rw  r   s     r0   test_small_headersz$MaxHeaderSizeTest.test_small_headers  s0    ::h'.r2   c                     t        t        dt        j                        5  | j	                  t
              5  | j                  dd       d d d        d d d        y # 1 sw Y   xY w# 1 sw Y   y xY w)NzUnsatisfiable readr  r  Tr  )r   r   rB   r   r  r   r   rS   s    r0   test_large_headersz$MaxHeaderSizeTest.test_large_headers  sQ    w 4GLLI""#9:

8
6 ; JI:: JI"   A(AA(A%	!A((A1N)r3   r4   r5   r   r1   r  r  r6   r2   r0   r  r    s    Q;/
7r2   r  c                   $    e Zd Zd Zd Zd Zd Zy)MaxBodySizeTestc                 `     G d dt               } G d dt               }t        d|fd|fg      S )Nc                       e Zd Zd Zy)*MaxBodySizeTest.get_app.<locals>.SmallBodyc                 ,    | j                  ddz         y )N   aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa@   r  rS   s    r0   rI   z.MaxBodySizeTest.get_app.<locals>.SmallBody.get  s    

:?+r2   Nrm   r6   r2   r0   	SmallBodyr$    s    ,r2   r(  c                       e Zd Zd Zy)*MaxBodySizeTest.get_app.<locals>.LargeBodyc                 ,    | j                  ddz         y Nr&  d   r  rS   s    r0   rI   z.MaxBodySizeTest.get_app.<locals>.LargeBody.get      

:+,r2   Nrm   r6   r2   r0   	LargeBodyr*        -r2   r/  r  r  r  )r.   r(  r/  s      r0   r   zMaxBodySizeTest.get_app  s6    	, 	,	- 	- Xy1Hi3HIJJr2   c                     t        d      S )N   )max_body_sizer  rS   s    r0   r1   zMaxBodySizeTest.get_http_client  s    $9==r2   c                     | j                  d      }|j                          | j                  |j                  ddz         y )Nr     aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaar'  rw  r   s     r0   test_small_bodyzMaxBodySizeTest.test_small_body
  s5    ::h'b(89r2   c                     t        t        dt        j                        5  | j	                  t
              5  | j                  dd       d d d        d d d        y # 1 sw Y   xY w# 1 sw Y   y xY w)Nz9Malformed HTTP message from None: Content-Length too longr  r  Tr  r   r   rB   r   r  r   r   rS   s    r0   test_large_bodyzMaxBodySizeTest.test_large_body  s[    G,,

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

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

 :9
 
r  N)r3   r4   r5   r   r1   r6  r9  r6   r2   r0   r!  r!    s    	K>:
7r2   r!  c                       e Zd Zd Zd Zd Zy)MaxBufferSizeTestc                 <     G d dt               }t        d|fg      S )Nc                       e Zd Zd Zy),MaxBufferSizeTest.get_app.<locals>.LargeBodyc                 ,    | j                  ddz         y r,  r  rS   s    r0   rI   z0MaxBufferSizeTest.get_app.<locals>.LargeBody.get  r.  r2   Nrm   r6   r2   r0   r/  r>    r0  r2   r/  r  r  )r.   r/  s     r0   r   zMaxBufferSizeTest.get_app  s#    	- 	- Xy1233r2   c                     t        dd      S )Ni  r2  )r3  max_buffer_sizer  rS   s    r0   r1   z!MaxBufferSizeTest.get_http_client!  s    $$i
 	
r2   c                     | j                  d      }|j                          | j                  |j                  ddz         y )Nr  r5  r-  rw  r   s     r0   r9  z!MaxBufferSizeTest.test_large_body'  s5    ::h'c(9:r2   N)r3   r4   r5   r   r1   r9  r6   r2   r0   r;  r;    s    4
;r2   r;  c                       e Zd Zd Zd Zd Zy)ChunkedWithContentLengthTestc                 <     G d dt               }t        d|fg      S )Nc                       e Zd Zd Zy)FChunkedWithContentLengthTest.get_app.<locals>.ChunkedWithContentLengthc                 J    | j                  dd       | j                  d       y )NzTransfer-EncodingchunkedzHello worldrd   rS   s    r0   rI   zJChunkedWithContentLengthTest.get_app.<locals>.ChunkedWithContentLength.get0  s     3Y?

=)r2   Nrm   r6   r2   r0   ChunkedWithContentLengthrG  /  s    *r2   rJ  /chunkwithclr  )r.   rJ  s     r0   r   z$ChunkedWithContentLengthTest.get_app.  s$    	*~ 	* ^-EFGHHr2   c                     t               S r:   r  rS   s    r0   r1   z,ChunkedWithContentLengthTest.get_http_client7  s    $&&r2   c                     t        t        dt        j                        5  | j	                  t
              5  | j                  dd       d d d        d d d        y # 1 sw Y   xY w# 1 sw Y   y xY w)NzXMalformed HTTP message from None: Message with both Transfer-Encoding and Content-Lengthr  rK  Tr  r8  rS   s    r0    test_chunked_with_content_lengthz=ChunkedWithContentLengthTest.test_chunked_with_content_length:  s`    A ,,
 ""#89

>t
< :
 
 :9
 
r  N)r3   r4   r5   r   r1   rN  r6   r2   r0   rD  rD  -  s    I'=r2   rD  )Vr   
contextlibr   r@  rB   r  r/  r   r  r=  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'   r8   rL   rY   r`   rg   ro   r}   r   r   r   r   objectr   r  r  r  r  r  r  r  r  r!  r;  rD  r6   r2   r0   <module>ra     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 =r2   