
    [4%ey                        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,j<                  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.          ZUdS )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dS )SimpleHTTPClientCommonTestCasec                 v    t          d          }|                     t          |t                                |S )NTforce_instance)r   
assertTrue
isinstanceselfclients     Clib/python3.11/site-packages/tornado/test/simple_httpclient_test.pyget_http_clientz.SimpleHTTPClientCommonTestCase.get_http_client.   s4    &d;;;
6+@AABBB    N)__name__
__module____qualname__r1    r2   r0   r'   r'   -   s#            r2   r'   c                   4    e Zd Zd Zej        d             ZdS )TriggerHandlerc                 "    || _         || _        d S Nqueuewake_callback)r.   r<   r=   s      r0   
initializezTriggerHandler.initialize5   s    
*r2   c              #     K   t          j        d           t                      }| j                            |j                   |                     dd          dk    r|                                  |                                V  d S )Nzqueuing triggerwaketrue)	loggingdebugr   r<   appendsetget_argumentr=   wait)r.   events     r0   getzTriggerHandler.get9   s      '(((
%)$$$VV,,66   jjllr2   N)r3   r4   r5   r>   r   	coroutinerI   r6   r2   r0   r8   r8   4   s@        + + + 	]  ]  r2   r8   c                   4    e Zd Zd Zej        d             ZdS )ContentLengthHandlerc                     |                                  | _        t          j                                        | j                   d S r:   )detachstreamr   currentspawn_callbackwrite_responser.   s    r0   rI   zContentLengthHandler.getD   s6    kkmm''(;<<<<<r2   c              #      K   | j                             t          d|                     d          z                      V  | j                                          d S )Nz)HTTP/1.0 200 OK
Content-Length: %s

okvalue)rO   writer   rF   closerS   s    r0   rR   z#ContentLengthHandler.write_responseH   sl      kA##G,,- 
 
 	
 	
 	
 	r2   N)r3   r4   r5   rI   r   rJ   rR   r6   r2   r0   rL   rL   C   s@        = = = 	]  ]  r2   rL   c                       e Zd Zd ZdS )HeadHandlerc                 2    |                      dd           d S )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dS )OptionsHandlerc                 \    |                      dd           |                     d           d S )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dS )NoContentHandlerc                 X    |                      d           |                                  d S )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dS )SeeOtherPostHandlerc                     t          | j        j                  }|dv sJ d| j        j        z              |                     dd           |                     |           d S )N.  i/  unexpected body %rLocation/see_other_get)intrequestbodyr]   rk   )r.   redirect_codes     r0   postzSeeOtherPostHandler.poste   se    DL-..
***,@4<CT,T***
$4555&&&&&r2   Nr3   r4   r5   rz   r6   r2   r0   ro   ro   d   s#        ' ' ' ' 'r2   ro   c                       e Zd Zd ZdS )SeeOtherGetHandlerc                     | j         j        rt          d| j         j        z            |                     d           d S )Nrs   rc   )rw   rx   	ExceptionrV   rS   s    r0   rI   zSeeOtherGetHandler.getm   sA    < 	F04<3DDEEE

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

4<'/00000r2   Nrm   r6   r2   r0   r   r   s   s#        1 1 1 1 1r2   r   c                       e Zd Zd ZdS )NoContentLengthHandlerc                     | j         j                            d          r?|                                 }|                    d           |                                 d S |                     d           d S )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   si    <**844 	+ [[]]FLL<===LLNNNNNKK)*****r2   Nrm   r6   r2   r0   r   r   x   s#        	+ 	+ 	+ 	+ 	+r2   r   c                       e Zd Zd ZdS )EchoPostHandlerc                 D    |                      | j        j                   d S 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dS )RespondInPrepareHandlerc                 Z    |                      d           |                     d           d S )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(d!S )"SimpleHTTPClientTestMixinc                     t                      r:   )NotImplementedErrorr.   kwargss     r0   create_clientz'SimpleHTTPClientTestMixin.create_client   s    !###r2   r.   c                    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}DIFFF 
 Hl++)+;+NNNH/00%';<<G[))J//M#344%':;;$&899L/22(*@AAL/22)+BCCK11M#344), /
 
 
 	
r2   c                    |                      t                      t                      u            |                      t                      t          d          u           t          t                                5 }d }| j                            |          }|                    |          }|                      ||u           d d d            d S # 1 swxY w Y   d S )NTr)   c                  V   K   t          j        d           d {V  t                      S Nr   )r   sleepr   r6   r2   r0   make_clientz=SimpleHTTPClientTestMixin.test_singleton.<locals>.make_client   s2      ill""""""",...r2   )r+   r   r   r   io_looprun_sync)r.   io_loop2r   client1client2s        r0   test_singletonz(SimpleHTTPClientTestMixin.test_singleton   s   -//3H3J3JJKKK!##+@PT+U+U+UU	
 	
 	
 VXX 	4(/ / / l++K88G''44GOOG72333	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4s   <A
CCCc                     t                               d                    5 }                     |j        d           g t	          d          D ]E}|f fd	}|                                         d                                        |           F                      fd                                t          |j
                  d             j                                                       j                                                                           fd                                t                    t          d	d
g                                          t          |j
                  d	             j                                                       j                                                                          fd                                t                    t          g d                                          t           j                  d	           d d d            d S # 1 swxY w Y   d S )N   max_clients   c                 Z                         |                                            d S r:   )rD   r   )futiseenr.   s     r0   cbz;SimpleHTTPClientTestMixin.test_connection_limit.<locals>.cb   s#    KKNNNIIKKKKKr2   r   c                  4    t           j                  dk    S Nr   lenr   rS   s   r0   <lambda>zASimpleHTTPClientTestMixin.test_connection_limit.<locals>.<lambda>   s    DM(:(:a(? r2   )	conditionc                  Z    t          j                  dk    ot                     dk    S r   r   )r   r.   s   r0   r   zASimpleHTTPClientTestMixin.test_connection_limit.<locals>.<lambda>   s&    T]););q)@)SSYYRS^ r2   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677 	46V/333D 1XX M M               T\\*5566HHLLLLII ? ? ? ?I@@@S..222 $DM!!##%%%#DM!!##%%%II T T T T TIUUUSYYQF444S..222 $DM!!##%%%#DM!!##%%%II 6 6 6 6I777SYYLLL(9(9:::S//3337	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4s   HIIIc              #     K   t          |                     d                    5 }|                    |                     d          d          V }|                                 d d d            d S # 1 swxY w Y   d S )Nr   r   z/countdown/3r   max_redirects)r   r   r   r   rethrow)r.   r/   responses      r0   test_redirect_connection_limitz8SimpleHTTPClientTestMixin.test_redirect_connection_limit   s       T''A'6677 	6#\\$,,~*F*FVW\XXXXH	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	s   AA44A8;A8c                    |                      dd          }|                     d|j                   |                     |j        j                            d                     |                     |j                            d                     |                     |j        d                             d                     d S )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:>>hm,,, 	(,55nEEFFF.77GGHHH(4==nMMNNNNNr2   c                     t          ddi          }|                     d|           |                     t          |                                          dg           d S )N
User-AgentFoor   )r   )r   r   )r	   r   r   listget_all)r.   r   s     r0   test_header_reusez+SimpleHTTPClientTestMixin.test_header_reuse   s^     |U344

8W
---goo//003H2IJJJJJr2   c                     |                      dd          }|                     d|j                   |                     |j                                        d                    t                               d S )Nr   GETmethod   z
Tornado/{})r   r   r   rx   decodeformatr   r   s     r0   test_default_user_agentz1SimpleHTTPClientTestMixin.test_default_user_agent   sg    ::mE:::hm,,,--//1D1DW1M1MNNNNNr2   c                 z   dD ]}|                      ddd|z            }|                     d|j                   |                     |j        j                            d                     |                     |j                            d                     |                     d|j        j                   d S )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UUHS(-000OOH,099:KLLMMMOOH2;;<LMMNNNVX%5%<====	> 	>r2   c              #     K   d}t                      |  G fddt                    }t          |                      |                                5 }|                     t
                    5  |                    |                     d          |dd          V  d d d            n# 1 swxY w Y   d d d            n# 1 swxY w Y                                    t          j
        d	          V  d S )
N皙?c                       e Zd Z fdZdS )GSimpleHTTPClientTestMixin.test_connect_timeout.<locals>.TimeoutResolverc                    K                                     d {V  t          j        d                                ffgS 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  sL      #((*********+t7I7I7K7K)LMNNr2   N)r3   r4   r5   r   )r   r   s   r0   TimeoutResolverr     s;        O O O O O O O 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 	O 	O 	O 	O 	O 	O 	Oh 	O 	O 	O T''1B1B'CCDD 	""#344  llLL**$+$( $	 #                   	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	inns6   C3/B."C.B2	2C5B2	6CC	C	c                 :   d}t           j        dk    rd}|                     t                    5  |                     d|d           d d d            n# 1 swxY w Y    | j                                                     | j                            d            d S )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      cill r2   )	osr   r  r   r   r   r   r   r   )r.   r  s     r0   test_request_timeoutz.SimpleHTTPClientTestMixin.test_request_timeout&  s    7d??G/00 	Y 	YJJ,gSWJXXX	Y 	Y 	Y 	Y 	Y 	Y 	Y 	Y 	Y 	Y 	Y 	Y 	Y 	Y 	Y 	 !!!2233333s   AAAc                    t          ddt          j                  \  }|                                d         }| j                            |           d|                                 |fz  }|                     t                    5  | 	                    |dd           d d d            n# 1 swxY w Y   | 	                    |          }| 
                    |j        d	           d S )
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8888s   B++B/2B/c                 ^   |                      d          }|                     |j        d           |                      d          }|                     |j        d           t          t          dt
          j                  5  |                     t                    5  |                      dd           d d d            n# 1 swxY w Y   |                     t                    5  |                      d	d           d d d            n# 1 swxY w Y   d d d            d S # 1 swxY w Y   d S )
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
 
 
 	O 	O ""#899 J J

6D
IIIJ J J J J J J J J J J J J J J""#899 O O

;
NNNO O O O O O O O O O O O O O O	O 	O 	O 	O 	O 	O 	O 	O 	O 	O 	O 	O 	O 	O 	O 	O 	O 	OsZ   D"C5D"C	D"C		D"&D
>D"
D	D"D	D""D&)D&c                     |                      dd          }|                     |j        d           |                     |j        d         d           |                     |j                   d S )Nr   HEADr   r   content-lengthr\   )r   r   r   r   assertFalserx   r   s     r0   test_head_requestz+SimpleHTTPClientTestMixin.test_head_requestN  sj    ::gf:55,,,)*:;SAAA'''''r2   c                 $   |                      dd          }|                     |j        d           |                     |j        d         d           |                     |j        d         d           |                     |j        d	           d S )
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  s    ::j:;;,,,)*:;SAAA)*GH#NNN.....r2   c                     |                      d          }|                     |j        d           |                     d|j                   d S )Nr   ri   r[   )r   r   r   assertNotInr   r   s     r0   test_no_contentz)SimpleHTTPClientTestMixin.test_no_content[  sM    ::m,,,,,
 	)8+;<<<<<r2   c                    t          j        d          }|                     d          }|                     |                    |j                             |                     d                              dd          }|                     |          }|                     |                    |j                  |j                   d S )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3::l++hm44555ll<((00<OPP::c??hm44hmDDDDDr2   c                 (   t                      \  }}|                     |           t          t          dd          5  |                     t
          j                  5 }|                     d|z  d           d d d            n# 1 swxY w Y   d d d            n# 1 swxY w Y   t          j	        dk    rt          t          j                  t          |j                  v }|sBt          t          d          r-t          t          j                  t          |j                  v }|                     ||j                   t#          j        t          j                  }|                     |t          |j                  v |j                   d S d S )	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55 	L 	L""6<00 LB

1D8d
KKKL L L L L L L L L L L L L L L	L 	L 	L 	L 	L 	L 	L 	L 	L 	L 	L 	L 	L 	L 	L <8## !344BL8I8IIN! ge5F&G&G !$U%:!;!;sL@ @ " OONBL999  "{5+=>>OO,BL0A0AA2<PPPPP $#s5    BB9BB			BB		BB #B c                 l    t                               d                    5                                          d          d                                                                 t                    5 } j                             fd           d d d            n# 1 swxY w Y    	                    t          |j                  d             j                                                      j                            fd           d d d            d S # 1 swxY w Y   d S )	Nr   r   r   
   )r  c                  Z                                              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677 	06<<Z 8 8"<MMDIIKKK""#344 %%                     S..0JKKK#DM!!##%%%L!!,,,,///	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0s7   AD) B+D)+B/	/D)2B/	3A)D))D-0D-c                     |                      d          }|j        dk    r|                     d           d S |                     d|j                   d S )Nr   s   HTTP/1 requiredrequires HTTP/1.xs   hello)r   rx   skipTestr   r   s     r0   test_no_content_lengthz0SimpleHTTPClientTestMixin.test_no_content_length  sY    ::233=...MM-.....Xx}55555r2   c                 2     |d            |d           d S N   1234   5678r6   r.   rV   s     r0   sync_body_producerz,SimpleHTTPClientTestMixin.sync_body_producer  s     ggr2   c              #   Z   K    |d          V  t           j        V   |d          V  d S rV  )r   momentrY  s     r0   async_body_producerz-SimpleHTTPClientTestMixin.async_body_producer  sB      eGnnjeGnnr2   c                     |                      dd| j                  }|                                 |                     |j        d           d S Nr   r   r   body_producer   12345678r   rZ  r   r   rx   r   s     r0   test_sync_body_producer_chunkedz9SimpleHTTPClientTestMixin.test_sync_body_producer_chunked  sV    ::t7N  
 
 	44444r2   c                     |                      dd| j        ddi          }|                                 |                     |j        d           d S 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  s`    ::1%s+	  
 
 	44444r2   c                     |                      dd| j                  }|                                 |                     |j        d           d S r_  r   r]  r   r   rx   r   s     r0    test_async_body_producer_chunkedz:SimpleHTTPClientTestMixin.test_async_body_producer_chunked  sV    ::t7O  
 
 	44444r2   c                     |                      dd| j        ddi          }|                                 |                     |j        d           d S rf  rk  r   s     r0   'test_async_body_producer_content_lengthzASimpleHTTPClientTestMixin.test_async_body_producer_content_length  s`    ::2%s+	  
 
 	44444r2   c                     d }|                      dd|          }|                                 |                     |j        d           d S )Nc                    K    | d           d {V  dd l }|                    d           d {V   | d           d {V  d S NrW  r   rX  asyncior   rV   rs  s     r0   ra  zRSimpleHTTPClientTestMixin.test_native_body_producer_chunked.<locals>.body_producer  y      %..       NNN--"""""""""%..         r2   r   r   r`  rb  r   r   r   rx   r.   ra  r   s      r0   !test_native_body_producer_chunkedz;SimpleHTTPClientTestMixin.test_native_body_producer_chunked  sZ    	! 	! 	! ::l6:WW44444r2   c                     d }|                      dd|ddi          }|                                 |                     |j        d           d S )Nc                    K    | d           d {V  dd l }|                    d           d {V   | d           d {V  d S rq  rr  rt  s     r0   ra  zYSimpleHTTPClientTestMixin.test_native_body_producer_content_length.<locals>.body_producer  ru  r2   r   r   r[   rg  rh  rb  rv  rw  s      r0   (test_native_body_producer_content_lengthzBSimpleHTTPClientTestMixin.test_native_body_producer_content_length  sn    	! 	! 	! ::'%s+	  
 
 	44444r2   c                 n    |                      dddd          }|                     |j        d           d S )Nr   r   rW  T)r   rx   expect_100_continue)r   r   rx   r   s     r0   test_100_continuez+SimpleHTTPClientTestMixin.test_100_continue  sC    ::g4  
 
 	00000r2   c                 t    d }|                      dd|d          }|                     |j        d           d S )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33r2   r   r   T)r   ra  r}  r   )r   r   r   rw  s      r0    test_100_continue_early_responsez:SimpleHTTPClientTestMixin.test_100_continue_early_response  sW    	4 	4 	4 ::!' $	  
 
 	,,,,,r2   c                 "   g }g }|                      d|j        |j                   t          t          t          |                    }|                     |dg           t          d |D                       }|                     |d           d S )Nz/redirect?url=/hello)header_callbackstreaming_callbackzHello world!c                 <    g | ]}|                     d           |S )zHTTP/)r   ).0hs     r0   
<listcomp>zMSimpleHTTPClientTestMixin.test_streaming_follow_redirects.<locals>.<listcomp>  s)    KKKQQ\\'5J5JKqKKKr2   r   )r   rD   r   mapr   r   r   )r.   r   chunk_byteschunksnum_start_liness        r0   test_streaming_follow_redirectsz9SimpleHTTPClientTestMixin.test_streaming_follow_redirects  s     

"#N*1 	 	
 	
 	

 c*k2233.!1222KK'KKKLL!,,,,,r2   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  rx  r{  r~  r  r  r6   r2   r0   r   r      s       $ $ $
fj 
 
 
 
>4VZ 4 4 4 4$4FJ 4 4 4 4< VZ    XO O O O OK
 K K K KOfj O O O O
>fj > > > > 6:    X \6 	46: 	4 	4 	4 \	4 9
 9 9 9 \9OFJ O O O O(
 ( ( ( (/6: / / / /=fj = = = =Evz E E E EQfj Q Q Q Q(0 0 0 0 0 6VZ 6 6 6 6   	]  ]
5fj 5 5 5 55VZ 5 5 5 55vz 5 5 5 55fj 5 5 5 5
5
 
5 
5 
5 
55vz 5 5 5 5"1
 1 1 1 1
-vz 
- 
- 
- 
--fj - - - - - -r2   r   c                   $     e Zd Z fdZd Z xZS )SimpleHTTPClientTestCasec                 z    t                                                       |                                 | _        d S 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    $CCDCFCCCr2   )r3   r4   r5   r  r   __classcell__r  s   @r0   r  r    sN        0 0 0 0 0D D D D D D 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                 z    t                                                       |                                 | _        d S r:   r  r  s    r0   r  zSimpleHTTPSClientTestCase.setUp  r  r2   c                 <    t          ddt          d          d|S )NTF)validate_cert)r*   defaultsr6   )r   r   r   s     r0   r   z'SimpleHTTPSClientTestCase.create_client  s6    $ 
$U*C*C*C
 
GM
 
 	
r2   c                     |                      ddt          j        i          }|                     |j        d           d S )Nr   	cert_reqsssl_optionsr  )r   ssl	CERT_NONEr   rx   r.   resps     r0   test_ssl_optionsz*SimpleHTTPSClientTestCase.test_ssl_options  s<    zz(cm0LzMMO44444r2   c                     t          j        t           j        j                  }d|_        t           j        |_        |                     d|          }|                     |j	        d           d S )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  s\    ,S[-DEE!&!mzz(z88O44444r2   c                 4   t          t          dd          5  |                     t          j                  5  |                     dt          t          j                  d           d d d            n# 1 swxY w Y   d d d            d S # 1 swxY w Y   d S )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&  s   w >OOO 	 	""3<00  

 $s/@ A A A $                  	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	s4    B1A5)B5A9	9B<A9	=BBBc                 F   t          t          d          5  t          j        t          j        j                  }|                     t          j                  5  |                     d|d           d d d            n# 1 swxY w Y   d d d            d S # 1 swxY w Y   d S )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/  s4   w >?? 	H 	H,S[-DEEC""3<00 H H

8$
GGGH H H H H H H H H H H H H H H	H 	H 	H 	H 	H 	H 	H 	H 	H 	H 	H 	H 	H 	H 	H 	H 	H 	Hs6   ABA>2B>B	BB	BBBc                 2   t          t          d          5 }|                     t          j                  5  |                     ddd           d d d            n# 1 swxY w Y   d d d            n# 1 swxY w Y   |                     |j                   d S )Nr6  /T)r  r  )r   r   r  r  r  r   r%  logged_stack)r.   
expect_logs     r0   test_error_loggingz,SimpleHTTPSClientTestCase.test_error_logging6  s)    w%% 	F""3<00 F F

3d
EEEF F F F F F F F F F F F F F F	F 	F 	F 	F 	F 	F 	F 	F 	F 	F 	F 	F 	F 	F 	F 	011111s4    A2AA2A	A2"A	#A22A69A6)r3   r4   r5   r  r   r  r  r  r  r  r  r  s   @r0   r  r    s        0 0 0 0 0
 
 

5 5 55 5 5  H H H2 2 2 2 2 2 2r2   r  c                   .     e Zd Z fdZ fdZd Z xZS )CreateAsyncHTTPClientTestCasec                 x    t                                                       t          j                    | _        d S r:   )r  r  r   _save_configurationsavedr  s    r0   r  z#CreateAsyncHTTPClientTestCase.setUpA  s(    $8::


r2   c                 z    t          j        | j                   t                                                       d S r:   )r   _restore_configurationr  r  tearDownr  s    r0   r  z&CreateAsyncHTTPClientTestCase.tearDownE  s2    .tz:::r2   c                    t          j        t                     t          t          d                    5 }|                     |j        d           d d d            n# 1 swxY w Y   t          t          dd                    5 }|                     |j        d           d d d            n# 1 swxY w Y   t          j        t          d           t          t          d                    5 }|                     |j        d           d d d            n# 1 swxY w Y   t          t          dd                    5 }|                     |j        d           d d d            n# 1 swxY w Y   t          t          d	d                    5 }|                     |j        d	           d d d            d S # 1 swxY w Y   d S )
NTr)   rK     )r   r*      r         )r   	configurer   r   r   r   r-   s     r0   test_max_clientsz.CreateAsyncHTTPClientTestCase.test_max_clientsI  s   !"7888_D999:: 	5fV/444	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5_DIIIJJ 	5fV/444	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5
 	!"7RHHHH_D999:: 	5fV/444	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5_DIIIJJ 	5fV/444	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5_DIIIJJ 	5fV/444	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5sY   AA#&A#B00B47B43DD"DE,,E03E0F>>GG)r3   r4   r5   r  r  r  r  r  s   @r0   r  r  @  s`        ; ; ; ; ;    5 5 5 5 5 5 5r2   r  c                   &    e Zd Zd Zd Zd Zd ZdS )HTTP100ContinueTestCasec                 ~   |j                             d          | _        | j        sQ|j                            t          ddd          t                                 |j                                         d S || _        | j        j        j	        
                    d          }|                    | j                   d S )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    _//	::
z 	,,!"c400+--   %%'''Fl%,223STTd./////r2   c                      |                                   j        j        j                            d          }|                     fd           d S )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(L(L(N(N r2   )resultrw   r  rO   rV   r   )r.   r   s   ` r0   r  z#HTTP100ContinueTestCase.respond_200h  sV    

l%,22<
 
 	NNNNOOOOOr2   c                     | j         S r:   )r  rS   s    r0   r   zHTTP100ContinueTestCase.get_appo  s    r2   c                     |                      d          }| j        s|                     d           |                     |j        d           d S )Nr  rR     A)r   r  rS  r   rx   )r.   ress     r0   r~  z)HTTP100ContinueTestCase.test_100_continues  sL    jjooz 	/MM-...4(((((r2   N)r3   r4   r5   r  r  r   r~  r6   r2   r0   r  r  [  sS        
0 
0 
0P P P     ) ) ) ) )r2   r  c                   &    e Zd Zd Zd Zd Zd ZdS )HTTP204NoContentTestCasec                 <   |j                             d          | _        | j        sQ|j                            t          ddd          t                                 |j                                         d S |j                                        }|	                    d           |j
                            ddg          d         r|	                    d	           n|	                    d
           |	                    d           |                                 d S )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   _//	::
z 	,,!"c400+--   %%'''F #**,,3444  5'2226 	3LL12222LL1222Wr2   c                     | j         S r:   )r  rS   s    r0   r   z HTTP204NoContentTestCase.get_app  s    r2   c                     |                      d          }| j        s|                     d           |                     |j        d           |                     |j        d           d S )Nr  rR  ri   r2   )r   r  rS  r   r   rx   r  s     r0   test_204_no_contentz,HTTP204NoContentTestCase.test_204_no_content  sd    zz#z 	/MM-...C(((C(((((r2   c                    t          t          dt          j                  5  |                     t
                    5  |                     dd           | j        s|                     d           | j	        j
        t          k    r|                     d           d d d            n# 1 swxY w Y   d d d            d S # 1 swxY w Y   d S )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  sn   DGL
 
 
 	I 	I ""#899 I I

;D
999z 7MM"5666#48MMMMM"GHHHI I I I I I I I I I I I I I I	I 	I 	I 	I 	I 	I 	I 	I 	I 	I 	I 	I 	I 	I 	I 	I 	I 	Is5   B?AB'B?'B+	+B?.B+	/B??CCN)r3   r4   r5   r  r   r  r  r6   r2   r0   r  r  z  sU          2     ) ) )
I 
I 
I 
I 
Ir2   r  c                   0     e Zd Z fdZd Zd Zd Z xZS )HostnameMappingTestCasec                     t                                                       t          dd|                                 fd          | _        d S )Nr   )zwww.example.com)zfoo.example.comi@  )hostname_mapping)r  r  r   r   r  r  s    r0   r  zHostnameMappingTestCase.setUp  sR    0#.,79K9K9M9M+N 
 
 
r2   c                 H    t          t          dt                    g          S Nr   r#   r$   r   rS   s    r0   r   zHostnameMappingTestCase.get_app      C*;<<=>>>r2   c                     |                      d|                                 z            }|                                 |                     |j        d           d S )Nzhttp://www.example.com:%d/hellor  )r   r   r   r   rx   r   s     r0   test_hostname_mappingz-HostnameMappingTestCase.test_hostname_mapping  sU    ::?$BTBTBVBVVWW88888r2   c                     |                      d          }|                                 |                     |j        d           d S )Nz!http://foo.example.com:8000/hellor  rv  r   s     r0   test_port_mappingz)HostnameMappingTestCase.test_port_mapping  sD    ::ABB88888r2   )r3   r4   r5   r  r   r  r  r  r  s   @r0   r  r    se        
 
 
 
 
? ? ?9 9 9
9 9 9 9 9 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           |                      | _        d S )Nc                   4    e Zd Zej         fd            ZdS )1ResolveTimeoutTestCase.setUp.<locals>.BadResolverc              ?      K   j                                         V  t          j        d                                ffgS r   )r   rG   r   r   r   )r.   r   r   r   s      r0   r   z9ResolveTimeoutTestCase.setUp.<locals>.BadResolver.resolve  sC      (--/////+t7I7I7K7K)LMNNr2   N)r3   r4   r5   r   rJ   r   )r   s   r0   BadResolverr    sA        ]O O O O ]O O Or2   r  r   )r   r   r   r  r  r   r  )r.   r  r   r  s     @r0   r  zResolveTimeoutTestCase.setUp  s    "WW	O 	O 	O 	O 	O 	O 	O( 	O 	O 	O 	0++--HHHr2   c                 H    t          t          dt                    g          S r  r  rS   s    r0   r   zResolveTimeoutTestCase.get_app  r  r2   c                    |                      t                    5  |                     ddd           d d d            n# 1 swxY w Y   | j                                         | j                            d            d S )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  s    /00 	H 	HJJx$JGGG	H 	H 	H 	H 	H 	H 	H 	H 	H 	H 	H 	H 	H 	H 	H 	   2233333s   A  AA)r3   r4   r5   r  r   r  r  r  s   @r0   r  r    s[        I I I I I? ? ?4 4 4 4 4 4 4r2   r  c                   &    e Zd Zd Zd Zd Zd ZdS )MaxHeaderSizeTestc                 x     G d dt                     } G d dt                     }t          d|fd|fg          S )Nc                       e Zd Zd ZdS )/MaxHeaderSizeTest.get_app.<locals>.SmallHeadersc                 \    |                      dd           |                     d           d S )NX-Fillerdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaarc   rd   rS   s    r0   rI   z3MaxHeaderSizeTest.get_app.<locals>.SmallHeaders.get  s.    
I666

4     r2   Nrm   r6   r2   r0   SmallHeadersr    #        ! ! ! ! !r2   r  c                       e Zd Zd ZdS )/MaxHeaderSizeTest.get_app.<locals>.LargeHeadersc                 \    |                      dd           |                     d           d S )Nr    aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaarc   rd   rS   s    r0   rI   z3MaxHeaderSizeTest.get_app.<locals>.LargeHeaders.get  s.    
J77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  su    	! 	! 	! 	! 	!> 	! 	! 	!
	! 	! 	! 	! 	!> 	! 	! 	!
 X|4x6NOPPPr2   c                 "    t          d          S )Ni   )max_header_sizer  rS   s    r0   r1   z!MaxHeaderSizeTest.get_http_client  s    $T::::r2   c                     |                      d          }|                                 |                     |j        d           d S )Nr  r  rv  r   s     r0   test_small_headersz$MaxHeaderSizeTest.test_small_headers  sC    ::h''.....r2   c                    t          t          dt          j                  5  |                     t
                    5  |                     dd           d d d            n# 1 swxY w Y   d d d            d S # 1 swxY w Y   d S )NzUnsatisfiable readr  r  Tr  )r   r   rB   r   r  r   r   rS   s    r0   test_large_headersz$MaxHeaderSizeTest.test_large_headers  s    w 4GLIII 	7 	7""#9:: 7 7

8
6667 7 7 7 7 7 7 7 7 7 7 7 7 7 7	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	74   A9A!A9!A%	%A9(A%	)A99A= A=N)r3   r4   r5   r   r1   r  r   r6   r2   r0   r
  r
    sS        Q Q Q; ; ;/ / /
7 7 7 7 7r2   r
  c                   &    e Zd Zd Zd Zd Zd ZdS )MaxBodySizeTestc                 x     G d dt                     } G d dt                     }t          d|fd|fg          S )Nc                       e Zd Zd ZdS )*MaxBodySizeTest.get_app.<locals>.SmallBodyc                 6    |                      ddz             d S )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dS )*MaxBodySizeTest.get_app.<locals>.LargeBodyc                 6    |                      ddz             d S Nr(  d   r  rS   s    r0   rI   z.MaxBodySizeTest.get_app.<locals>.LargeBody.get      

:+,,,,,r2   Nrm   r6   r2   r0   	LargeBodyr,    #        - - - - -r2   r1  r  r  r  )r.   r*  r1  s      r0   r   zMaxBodySizeTest.get_app  su    	, 	, 	, 	, 	, 	, 	, 	,	- 	- 	- 	- 	- 	- 	- 	- Xy1Hi3HIJJJr2   c                 "    t          d          S )N   )max_body_sizer  rS   s    r0   r1   zMaxBodySizeTest.get_http_client  s    $9====r2   c                     |                      d          }|                                 |                     |j        ddz             d S )Nr     aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaar)  rv  r   s     r0   test_small_bodyzMaxBodySizeTest.test_small_body
  sH    ::h''b(899999r2   c                    t          t          dt          j                  5  |                     t
                    5  |                     dd           d d d            n# 1 swxY w Y   d d d            d S # 1 swxY w Y   d S )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,
 
 
 	7 	7
 ""#899 7 7

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

=)))))r2   Nrm   r6   r2   r0   ChunkedWithContentLengthrI  /  s#        * * * * *r2   rL  /chunkwithclr  )r.   rL  s     r0   r   z$ChunkedWithContentLengthTest.get_app.  sE    	* 	* 	* 	* 	*~ 	* 	* 	* ^-EFGH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  |                     t
                    5  |                     dd           d d d            n# 1 swxY w Y   d d d            d S # 1 swxY w Y   d S )NzYMalformed HTTP message from None: Response with both Transfer-Encoding and Content-Lengthr  rM  Tr  r:  rS   s    r0    test_chunked_with_content_lengthz=ChunkedWithContentLengthTest.test_chunked_with_content_length:  s   A ,
 
 
 		= 		= ""#899 = =

>t
<<<= = = = = = = = = = = = = = =		= 		= 		= 		= 		= 		= 		= 		= 		= 		= 		= 		= 		= 		= 		= 		= 		= 		=r!  N)r3   r4   r5   r   r1   rP  r6   r2   r0   rF  rF  -  sD        I I I' ' '= = = = =r2   rF  )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=  rF  r6   r2   r0   <module>rc     sq               				 				  



 



  + + + + + + + +                 . . . . . . ; ; ; ; ; ; ; ; ! ! ! ! ! ! 3 3 3 3 3 3             2 2 2 2 2 2 2 2         
              ) ( ( ( ( (              H G G G G G G G G G M M M M M M M M M M M M    _%M       ^       >    / / / / /. / / /
    ^       ~   ' ' ' ' '. ' ' '       1 1 1 1 1n 1 1 1

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