
    Mh/{                     8   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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l0m1Z1m2Z2m3Z3m4Z4m5Z5 d dl6m7Z7m8Z8m9Z9 d dl:m;Z;m<Z<m=Z=m>Z>  G d de/j?                  Z@ G d de;          ZA G d de;          ZB G d de;          ZC G d de;          ZD G d de;          ZE G d d e;          ZF G d! d"e;          ZG G d# d$e;          ZH G d% d&e;          ZI G d' d(e;          ZJe> G d) d*e;                      ZKe7 G d+ d,e3                      ZL G d- d.e1eL          ZM G d/ d0e2eL          ZN G d1 d2e3          ZO G d3 d4e1          ZP G d5 d6e1          ZQ G d7 d8e1          ZR G d9 d:e1          ZS G d; d<e1          ZT G d= d>e1          ZU G d? d@e1          ZV G dA dBe1          ZWdS )C    N)closing)
to_unicodeutf8)genversion)AsyncHTTPClientHTTPResponse)
HTTPServer)HTTPHeadersResponseStartLine)IOLoop)UnsatisfiableReadError)Event)gen_log)Resolverbind_sockets)SimpleAsyncHTTPClientHTTPStreamClosedErrorHTTPTimeoutError)ChunkHandlerCountdownHandlerHelloWorldHandlerRedirectHandlerUserAgentHandler)httpclient_test)AsyncHTTPTestCaseAsyncHTTPSTestCaseAsyncTestCase	ExpectLoggen_test)abstract_base_testskipIfNoIPv6refusing_port)RequestHandlerApplicationurlstream_request_bodyc                       e Zd Zd ZdS )SimpleHTTPClientCommonTestCasec                 v    t          d          }|                     t          |t                                |S )NTforce_instance)r   
assertTrue
isinstanceselfclients     c/var/www/html/test/jupyter/venv/lib/python3.11/site-packages/tornado/test/simple_httpclient_test.pyget_http_clientz.SimpleHTTPClientCommonTestCase.get_http_client3   s4    &d;;;
6+@AABBB    N)__name__
__module____qualname__r3    r4   r2   r)   r)   2   s#            r4   r)   c                   4    e Zd Zd Zej        d             ZdS )TriggerHandlerc                 "    || _         || _        d S Nqueuewake_callback)r0   r>   r?   s      r2   
initializezTriggerHandler.initialize:   s    
*r4   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)r0   events     r2   getzTriggerHandler.get>   s      '(((
%)$$$VV,,66   jjllr4   N)r5   r6   r7   r@   r   	coroutinerK   r8   r4   r2   r:   r:   9   s@        + + + 	]  ]  r4   r:   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r0   s    r2   rK   zContentLengthHandler.getI   s6    kkmm''(;<<<<<r4   c              #      K   | j                             t          d|                     d          z                      V  | j                                          d S )Nz)HTTP/1.0 200 OK
Content-Length: %s

okvalue)rQ   writer   rH   closerU   s    r2   rT   z#ContentLengthHandler.write_responseM   sl      kA##G,,- 
 
 	
 	
 	
 	r4   N)r5   r6   r7   rK   r   rL   rT   r8   r4   r2   rN   rN   H   s@        = = = 	]  ]  r4   rN   c                       e Zd Zd ZdS )HeadHandlerc                 2    |                      dd           d S )NContent-Length7)
set_headerrU   s    r2   headzHeadHandler.headY   s    (#.....r4   N)r5   r6   r7   r`   r8   r4   r2   r[   r[   X   s#        / / / / /r4   r[   c                       e Zd Zd ZdS )OptionsHandlerc                 \    |                      dd           |                     d           d S )NzAccess-Control-Allow-Origin*okr_   rX   rU   s    r2   optionszOptionsHandler.options^   s/    5s;;;

4r4   N)r5   r6   r7   rg   r8   r4   r2   rb   rb   ]   s#            r4   rb   c                       e Zd Zd ZdS )NoContentHandlerc                 X    |                      d           |                                  d S )N   
set_statusfinishrU   s    r2   rK   zNoContentHandler.getd   s%    r4   Nr5   r6   r7   rK   r8   r4   r2   ri   ri   c   s#            r4   ri   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_   rm   )r0   redirect_codes     r2   postzSeeOtherPostHandler.postj   se    DL-..
***,@4<CT,T***
$4555&&&&&r4   Nr5   r6   r7   r|   r8   r4   r2   rq   rq   i   s#        ' ' ' ' 'r4   rq   c                       e Zd Zd ZdS )SeeOtherGetHandlerc                     | j         j        rt          d| j         j        z            |                     d           d S )Nru   re   )ry   rz   	ExceptionrX   rU   s    r2   rK   zSeeOtherGetHandler.getr   sA    < 	F04<3DDEEE

4r4   Nro   r8   r4   r2   r   r   q   s#            r4   r   c                       e Zd Zd ZdS )HostEchoHandlerc                 P    |                      | j        j        d                    d S )NHost)rX   ry   headersrU   s    r2   rK   zHostEchoHandler.gety   s$    

4<'/00000r4   Nro   r8   r4   r2   r   r   x   s#        1 1 1 1 1r4   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)ry   r   
startswithrP   rX   rY   rn   )r0   rQ   s     r2   rK   zNoContentLengthHandler.get~   si    <**844 	+ [[]]FLL<===LLNNNNNKK)*****r4   Nro   r8   r4   r2   r   r   }   s#        	+ 	+ 	+ 	+ 	+r4   r   c                       e Zd Zd ZdS )EchoPostHandlerc                 D    |                      | j        j                   d S r<   )rX   ry   rz   rU   s    r2   r|   zEchoPostHandler.post   s    

4<$%%%%%r4   Nr}   r8   r4   r2   r   r      s#        & & & & &r4   r   c                       e Zd Zd ZdS )RespondInPrepareHandlerc                 Z    |                      d           |                     d           d S )N  	forbiddenrl   rU   s    r2   preparezRespondInPrepareHandler.prepare   s,    K     r4   N)r5   r6   r7   r   r8   r4   r2   r   r      s#        ! ! ! ! !r4   r   c            	       l   e Zd ZdefdZ	 d+dededej        de	fdZ
dedefdZdefd	Zdefd
Zd Zd Zd Zd Zed             Zd Zd Zd Zd Zed             Zd Zed             Zd Zd Zd Zd Z d Z!d Z"d Z#d Z$d Z%e&j'        d              Z(d! Z)d" Z*d# Z+d$ Z,d% Z-d& Z.d' Z/d( Z0d) Z1d*S ),SimpleHTTPClientTestMixinreturnc                     t                      r<   NotImplementedErrorrU   s    r2   get_http_portz'SimpleHTTPClientTestMixin.get_http_port       !###r4   Fpathraise_errorkwargsc                     t                      r<   r   )r0   r   r   r   s       r2   fetchzSimpleHTTPClientTestMixin.fetch   s     "###r4   c                     t                      r<   r   )r0   r   s     r2   get_urlz!SimpleHTTPClientTestMixin.get_url   r   r4   c                     t                      r<   r   rU   s    r2   get_protocolz&SimpleHTTPClientTestMixin.get_protocol   r   r4   c                     t                      r<   r   rU   s    r2   get_http_serverz)SimpleHTTPClientTestMixin.get_http_server   r   r4   c                     t                      r<   r   r0   r   s     r2   create_clientz'SimpleHTTPClientTestMixin.create_client   r   r4   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_postrw   
/host_echo/no_content_length
/echo_post/respond_in_preparez	/redirect/user_agentT)gzip)collectionsdequetriggersr%   r&   r:   dictstopr   r   r   rN   r[   rb   ri   rq   r   r   r   r   r   r   r   rU   s    r2   mixin_get_appz'SimpleHTTPClientTestMixin.mixin_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), /
 
 
 	
r4   c                    |                      t                      t                                 |                     t                      t          d                     t          t	          d                    5 }d }| j                            |          }|                    |          }|                     ||           d d d            d S # 1 swxY w Y   d S )NTr+   F)make_currentc                  V   K   t          j        d           d {V  t                      S Nr   )r   sleepr   r8   r4   r2   make_clientz=SimpleHTTPClientTestMixin.test_singleton.<locals>.make_client   s2      ill""""""",...r4   )assertIsr   assertIsNotr   r   io_looprun_sync)r0   io_loop2r   client1client2s        r2   test_singletonz(SimpleHTTPClientTestMixin.test_singleton   s   +--/D/F/FGGG!##%:$%O%O%O	
 	
 	
 V///00 	/H/ / / l++K88G''44GWg...	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/s   <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                    d	d
h                                t          |j
                  d	             j                                                       j                                                                          fd                                t                    h 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<   )rF   r   )futiseenr0   s     r2   cbz;SimpleHTTPClientTestMixin.test_connection_limit.<locals>.cb   s#    KKNNNIIKKKKKr4   r   c                  4    t           j                  dk    S Nr   lenr   rU   s   r2   <lambda>zASimpleHTTPClientTestMixin.test_connection_limit.<locals>.<lambda>   s    DM(:(:a(? r4   )	conditionc                  Z    t          j                  dk    ot                     dk    S r   r   )r   r0   s   r2   r   zASimpleHTTPClientTestMixin.test_connection_limit.<locals>.<lambda>   s&    T]););q)@)SSYYRS^ r4   r      c                  *    t                     dk    S )Nr   )r   )r   s   r2   r   zASimpleHTTPClientTestMixin.test_connection_limit.<locals>.<lambda>   s    D		Q r4   >   r   r   r      )r   r   assertEqualr   ranger   r   add_done_callbackrI   r   r>   r   popleftrG   )r0   r1   r   r   r   s   `   @r2   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A///S..222 $DM!!##%%%#DM!!##%%%II 6 6 6 6I777SYY555S//3337	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4s   HH88H<?H<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)r0   r1   responses      r2   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   rt   z/countdown/2rv   z/countdown/1)	r   r   coder-   ry   r&   endswitheffective_urlr   r0   r   s     r2   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Nr4   c                     t          ddi          }|                     d|           |                     t          |                                          dg           d S )N
User-AgentFoor   )r   )r   r   )r   r   r   listget_all)r0   r   s     r2   test_header_reusez+SimpleHTTPClientTestMixin.test_header_reuse  s^     |U344

8W
---goo//003H2IJJJJJr4   c                     |                      dd          }|                     d|j                   |                     |j                                        dt
                      d S )Nr   GETmethod   zTornado/)r   r   r   rz   decoder   r   s     r2   test_default_user_agentz1SimpleHTTPClientTestMixin.test_default_user_agent  sb    ::mE:::hm,,,--//1EG1E1EFFFFFr4   c                 z   dD ]}|                      ddd|z            }|                     d|j                   |                     |j        j                            d                     |                     |j                            d                     |                     d|j        j                   d S )Nrs   r   POSTz%d)r   rz   r   rw   )	r   r   r   r-   ry   r&   r   r   r   )r0   r   r   s      r2   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%<====	> 	>r4   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)rI   socketAF_INETr   )r0   argsr   cleanup_eventtests      r2   resolvezOSimpleHTTPClientTestMixin.test_connect_timeout.<locals>.TimeoutResolver.resolve*  sL      #((*********+t7I7I7K7K)LMNNr4   N)r5   r6   r7   r  )r  r  s   r2   TimeoutResolverr  )  s;        O O O O O O O Or4   r  resolverr   i  T)connect_timeoutrequest_timeoutr   g?)r   r   r   r   assertRaisesr   r   r   rG   r   r   )r0   timeoutr  r1   r  r  s       @@r2   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   r8   r4   r2   r   z@SimpleHTTPClientTestMixin.test_request_timeout.<locals>.<lambda>G      cill r4   )	osr   r  r   r   r   r   r   r   )r0   r  s     r2   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         }|                                                     |           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getsocknamer   
add_socketr   r  r   r   r   rz   )r0   sockportr&   r   s        r2   	test_ipv6z#SimpleHTTPClientTestMixin.test_ipv6I  s.   av???!!!$))$///#t'8'8':':D&AA y)) 	@ 	@JJsu$J???	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ ::c??88888s   B88B<?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   rz   r   r   rD   INFOr  r   r   s     r2   %test_multiple_content_length_acceptedz?SimpleHTTPClientTestMixin.test_multiple_content_length_acceptedW  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   assertFalserz   r   s     r2   test_head_requestz+SimpleHTTPClientTestMixin.test_head_requeste  sj    ::gf:55,,,)*:;SAAA'''''r4   c                 $   |                      dd          }|                     |j        d           |                     |j        d         d           |                     |j        d         d           |                     |j        d	           d S )
Nr   OPTIONSr   r   r1  2zaccess-control-allow-originrd   r)  )r   r   r   r   rz   r   s     r2   test_options_requestz.SimpleHTTPClientTestMixin.test_options_requestk  s    ::j:;;,,,)*:;SAAA)*GH#NNN.....r4   c                     |                      d          }|                     |j        d           |                     d|j                   d S )Nr   rk   r]   )r   r   r   assertNotInr   r   s     r2   test_no_contentz)SimpleHTTPClientTestMixin.test_no_contentr  sM    ::m,,,,,
 	)8+;<<<<<r4   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-   matchrz   r   replace)r0   host_rer   r&   s       r2   test_host_headerz*SimpleHTTPClientTestMixin.test_host_header{  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Dr4   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hasattrrG  r-   r  strerror)r0   cleanup_funcr&  cmcontains_errnoexpected_messages         r2   test_connection_refusedz1SimpleHTTPClientTestMixin.test_connection_refused  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   )r1   r0   s   r2   r   z>SimpleHTTPClientTestMixin.test_queue_timeout.<locals>.<lambda>  s.    FLLX..QU )   r4   zTimeout in request queuec                       S r<   r8   )fut1s   r2   r   z>SimpleHTTPClientTestMixin.test_queue_timeout.<locals>.<lambda>  s    $ r4   )r   r   r   r   rI   r  r   r   r   r   rL  rO  r   r   )r0   rS  r1   r\  s   ` @@r2   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   rz   skipTestr   r   s     r2   test_no_content_lengthz0SimpleHTTPClientTestMixin.test_no_content_length  sY    ::233=...MM-.....Xx}55555r4   c                 2     |d            |d           d S N   1234   5678r8   r0   rX   s     r2   sync_body_producerz,SimpleHTTPClientTestMixin.sync_body_producer  s     ggr4   c              #   Z   K    |d          V  t           j        V   |d          V  d S rc  )r   momentrf  s     r2   async_body_producerz-SimpleHTTPClientTestMixin.async_body_producer  sB      eGnnjeGnnr4   c                     |                      dd| j                  }|                                 |                     |j        d           d S Nr   r   r   body_producer   12345678r   rg  r   r   rz   r   s     r2   test_sync_body_producer_chunkedz9SimpleHTTPClientTestMixin.test_sync_body_producer_chunked  sV    ::t7N  
 
 	44444r4   c                     |                      dd| j        ddi          }|                                 |                     |j        d           d S Nr   r   r]   8r   rn  r   ro  rp  r   s     r2   &test_sync_body_producer_content_lengthz@SimpleHTTPClientTestMixin.test_sync_body_producer_content_length  s`    ::1%s+	  
 
 	44444r4   c                     |                      dd| j                  }|                                 |                     |j        d           d S rl  r   rj  r   r   rz   r   s     r2    test_async_body_producer_chunkedz:SimpleHTTPClientTestMixin.test_async_body_producer_chunked  sV    ::t7O  
 
 	44444r4   c                     |                      dd| j        ddi          }|                                 |                     |j        d           d S rs  rx  r   s     r2   'test_async_body_producer_content_lengthzASimpleHTTPClientTestMixin.test_async_body_producer_content_length  s`    ::2%s+	  
 
 	44444r4   c                     d }|                      dd|          }|                                 |                     |j        d           d S )Nc                    K    | d           d {V  dd l }|                    d           d {V   | d           d {V  d S Nrd  r   re  asyncior   rX   r  s     r2   rn  zRSimpleHTTPClientTestMixin.test_native_body_producer_chunked.<locals>.body_producer  y      %..       NNN--"""""""""%..         r4   r   r   rm  ro  r   r   r   rz   r0   rn  r   s      r2   !test_native_body_producer_chunkedz;SimpleHTTPClientTestMixin.test_native_body_producer_chunked  sZ    	! 	! 	! ::l6:WW44444r4   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 r~  r  r  s     r2   rn  zYSimpleHTTPClientTestMixin.test_native_body_producer_content_length.<locals>.body_producer  r  r4   r   r   r]   rt  ru  ro  r  r  s      r2   (test_native_body_producer_content_lengthzBSimpleHTTPClientTestMixin.test_native_body_producer_content_length  sn    	! 	! 	! ::'%s+	  
 
 	44444r4   c                 n    |                      dddd          }|                     |j        d           d S )Nr   r   rd  T)r   rz   expect_100_continue)r   r   rz   r   s     r2   test_100_continuez+SimpleHTTPClientTestMixin.test_100_continue  sC    ::g4  
 
 	00000r4   c                 t    d }|                      dd|d          }|                     |j        d           d S )Nc                      t          d          )Nzshould not be called)r   rX   s    r2   rn  zQSimpleHTTPClientTestMixin.test_100_continue_early_response.<locals>.body_producer  s    2333r4   r   r   T)r   rn  r  r   )r   r   r   r  s      r2    test_100_continue_early_responsez:SimpleHTTPClientTestMixin.test_100_continue_early_response  sW    	4 	4 	4 ::!' $	  
 
 	,,,,,r4   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     r2   
<listcomp>zMSimpleHTTPClientTestMixin.test_streaming_follow_redirects.<locals>.<listcomp>  s)    KKKQQ\\'5J5JKqKKKr4   r   )r   rF   r   mapr   r   r   )r0   r   chunk_byteschunksnum_start_liness        r2   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!,,,,,r4   N)F)2r5   r6   r7   rx   r   rL  booltypingAnyr	   r   r   r   r
   r   r   r   r   r   r    r   r   r   r   r  r  r  r"   r'  r.  r3  r7  r:  rA  rV  r]  ra  rg  r   rL   rj  rq  rv  ry  r{  r  r  r  r  r  r8   r4   r2   r   r      s       $s $ $ $ $ .3$ $$&*$>Dj$	$ $ $ $$C $C $ $ $ $$c $ $ $ $$ $ $ $ $$ $ $
 
 
>/ / /$4 4 4<   XO O OK K KG G G
> > >   X6	4 	4 	4 9 9 \9O O O( ( (/ / /= = =E E EQ Q Q(0 0 0 6 6 6   	]  ]
5 5 55 5 55 5 55 5 5
5 
5 
55 5 5"1 1 1
- 
- 
-- - - - -r4   r   c                   *     e Zd Z fdZd Zd Z xZS )SimpleHTTPClientTestCasec                 z    t                                                       |                                 | _        d S r<   supersetUpr   http_clientr0   	__class__s    r2   r  zSimpleHTTPClientTestCase.setUp   .    --//r4   c                 *    |                                  S r<   r   rU   s    r2   get_appz SimpleHTTPClientTestCase.get_app$      !!###r4   c                     t          dddi|S )Nr,   Tr8   r   r   s     r2   r   z&SimpleHTTPClientTestCase.create_client'  s    $CCDCFCCCr4   )r5   r6   r7   r  r  r   __classcell__r  s   @r2   r  r    s]        0 0 0 0 0$ $ $D D D D D D Dr4   r  c                   H     e Zd Z fdZ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    r2   r  zSimpleHTTPSClientTestCase.setUp,  r  r4   c                 *    |                                  S r<   r  rU   s    r2   r  z!SimpleHTTPSClientTestCase.get_app0  r  r4   c                 <    t          ddt          d          d|S )NTF)validate_cert)r,   defaultsr8   )r   r   r   s     r2   r   z'SimpleHTTPSClientTestCase.create_client3  s6    $ 
$U*C*C*C
 
GM
 
 	
r4   c                     |                      ddt          j        i          }|                     |j        d           d S )Nr   	cert_reqsssl_optionsr!  )r   ssl	CERT_NONEr   rz   r0   resps     r2   test_ssl_optionsz*SimpleHTTPSClientTestCase.test_ssl_options8  s<    zz(cm0LzMMO44444r4   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   rz   )r0   ssl_ctxr  s      r2   test_ssl_contextz*SimpleHTTPSClientTestCase.test_ssl_context<  s\    ,S[-DEE!&!mzz(z88O44444r4   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 exceptionFrD  r   )r  Tr  r   )r   r   r  r  SSLErrorr   r   CERT_REQUIREDrU   s    r2   test_ssl_options_handshake_failz9SimpleHTTPSClientTestCase.test_ssl_options_handshake_failC  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   )r0   ctxs     r2   test_ssl_context_handshake_failz9SimpleHTTPSClientTestCase.test_ssl_context_handshake_failL  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 )NrC  /T)r  r   )r   r   r  r  r  r   r2  logged_stack)r0   
expect_logs     r2   test_error_loggingz,SimpleHTTPSClientTestCase.test_error_loggingS  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)r5   r6   r7   r  r  r   r  r  r  r  r  r  r  s   @r2   r  r  +  s        0 0 0 0 0$ $ $
 
 

5 5 55 5 5  H H H2 2 2 2 2 2 2r4   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    r2   r  z#CreateAsyncHTTPClientTestCase.setUp^  s(    $8::


r4   c                 z    t          j        | j                   t                                                       d S r<   )r   _restore_configurationr  r  tearDownr  s    r2   r  z&CreateAsyncHTTPClientTestCase.tearDownb  s2    .tz:::r4   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+   rX     )r   r,      r         )r   	configurer   r   r   r   r/   s     r2   test_max_clientsz.CreateAsyncHTTPClientTestCase.test_max_clientsf  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)r5   r6   r7   r  r  r  r  r  s   @r2   r  r  ]  s`        ; ; ; ; ;    5 5 5 5 5 5 5r4   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   rn   ry   rQ   rX   r   respond_200)r0   ry   r   s      r2   respond_100z#HTTP100ContinueTestCase.respond_100y  s    _//	::
z 	,,!"c400+--   %%'''Fl%,223STTd./////r4   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<   )ry   r  rQ   rY   )fr0   s    r2   r   z5HTTP100ContinueTestCase.respond_200.<locals>.<lambda>  s    (?(F(L(L(N(N r4   )resultry   r  rQ   rX   r   )r0   r   s   ` r2   r  z#HTTP100ContinueTestCase.respond_200  sV    

l%,22<
 
 	NNNNOOOOOr4   c                     | j         S r<   )r  rU   s    r2   r  zHTTP100ContinueTestCase.get_app  s    r4   c                     |                      d          }| j        s|                     d           |                     |j        d           d S )Nr  r_     A)r   r  r`  r   rz   )r0   ress     r2   r  z)HTTP100ContinueTestCase.test_100_continue  sL    jjooz 	/MM-...4(((((r4   N)r5   r6   r7   r  r  r  r  r8   r4   r2   r  r  x  sS        
0 
0 
0P P P     ) ) ) ) )r4   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
rI  Fs   Content-Length: 5
s   Content-Length: 0
s   
)r   r   r  r  r  r   r   rn   rP   rX   	argumentsrK   rY   )r0   ry   rQ   s      r2   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r4   c                     | j         S r<   )r  rU   s    r2   r  z HTTP204NoContentTestCase.get_app  s    r4   c                     |                      d          }| j        s|                     d           |                     |j        d           |                     |j        d           d S )Nr  r_  rk   r4   )r   r  r`  r   r   rz   r  s     r2   test_204_no_contentz,HTTP204NoContentTestCase.test_204_no_content  sd    zz#z 	/MM-...C(((C(((((r4   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,  r_  z#curl client accepts invalid headers)r   r   rD   r-  r  r   r   r  r`  r  configured_classr   rU   s    r2   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)r5   r6   r7   r  r  r  r  r8   r4   r2   r  r    sU          2     ) ) )
I 
I 
I 
I 
Ir4   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    r2   r  zHostnameMappingTestCase.setUp  sR    0#.,79K9K9M9M+N 
 
 
r4   c                 H    t          t          dt                    g          S Nr   r%   r&   r   rU   s    r2   r  zHostnameMappingTestCase.get_app      C*;<<=>>>r4   c                     |                      d|                                 z            }|                                 |                     |j        d           d S )Nzhttp://www.example.com:%d/hellor!  )r   r   r   r   rz   r   s     r2   test_hostname_mappingz-HostnameMappingTestCase.test_hostname_mapping  sU    ::?$BTBTBVBVVWW88888r4   c                     |                      d          }|                                 |                     |j        d           d S )Nz!http://foo.example.com:8000/hellor!  r  r   s     r2   test_port_mappingz)HostnameMappingTestCase.test_port_mapping  sD    ::ABB88888r4   )r5   r6   r7   r  r  r  r  r  r  s   @r2   r  r    se        
 
 
 
 
? ? ?9 9 9
9 9 9 9 9 9 9r4   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  rI   r	  r
  r   )r0   r  r   r  s      r2   r  z9ResolveTimeoutTestCase.setUp.<locals>.BadResolver.resolve  sC      (--/////+t7I7I7K7K)LMNNr4   N)r5   r6   r7   r   rL   r  )r  s   r2   BadResolverr    sA        ]O O O O ]O O Or4   r  r  )r   r  r   r  r  r   r  )r0   r  r  r  s     @r2   r  zResolveTimeoutTestCase.setUp  s    "WW	O 	O 	O 	O 	O 	O 	O( 	O 	O 	O 	0++--HHHr4   c                 H    t          t          dt                    g          S r
  r  rU   s    r2   r  zResolveTimeoutTestCase.get_app  r  r4   c                    |                      t                    5  |                     ddd           d d d            n# 1 swxY w Y   | j                                         | j                            d            d S )Nr   r  TrZ  c                  *    t          j        d          S r   r  r8   r4   r2   r   z=ResolveTimeoutTestCase.test_resolve_timeout.<locals>.<lambda>  r  r4   )r  r   r   r  rG   r   r   rU   s    r2   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)r5   r6   r7   r  r  r  r  r  s   @r2   r  r    s[        I I I I I? ? ?4 4 4 4 4 4 4r4   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-Fillerdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaare   rf   rU   s    r2   rK   z3MaxHeaderSizeTest.get_app.<locals>.SmallHeaders.get  s.    
I666

4     r4   Nro   r8   r4   r2   SmallHeadersr     #        ! ! ! ! !r4   r$  c                       e Zd Zd ZdS )/MaxHeaderSizeTest.get_app.<locals>.LargeHeadersc                 \    |                      dd           |                     d           d S )Nr"    aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaare   rf   rU   s    r2   rK   z3MaxHeaderSizeTest.get_app.<locals>.LargeHeaders.get  s.    
J777

4     r4   Nro   r8   r4   r2   LargeHeadersr'    r%  r4   r*  /small/larger$   r%   )r0   r$  r*  s      r2   r  zMaxHeaderSizeTest.get_app  su    	! 	! 	! 	! 	!> 	! 	! 	!
	! 	! 	! 	! 	!> 	! 	! 	!
 X|4x6NOPPPr4   c                 "    t          d          S )Ni   )max_header_sizer  rU   s    r2   r3   z!MaxHeaderSizeTest.get_http_client
  s    $T::::r4   c                     |                      d          }|                                 |                     |j        d           d S )Nr+  r)  r  r   s     r2   test_small_headersz$MaxHeaderSizeTest.test_small_headers  sC    ::h''.....r4   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   rD   r-  r  r   r   rU   s    r2   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)r5   r6   r7   r  r3   r1  r3  r8   r4   r2   r  r    sS        Q Q Q; ; ;/ / /
7 7 7 7 7r4   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  rU   s    r2   rK   z.MaxBodySizeTest.get_app.<locals>.SmallBody.get  s    

:?+++++r4   Nro   r8   r4   r2   	SmallBodyr9    s#        , , , , ,r4   r=  c                       e Zd Zd ZdS )*MaxBodySizeTest.get_app.<locals>.LargeBodyc                 6    |                      ddz             d S Nr;  d   r  rU   s    r2   rK   z.MaxBodySizeTest.get_app.<locals>.LargeBody.get      

:+,,,,,r4   Nro   r8   r4   r2   	LargeBodyr?    #        - - - - -r4   rD  r+  r,  r-  )r0   r=  rD  s      r2   r  zMaxBodySizeTest.get_app  su    	, 	, 	, 	, 	, 	, 	, 	,	- 	- 	- 	- 	- 	- 	- 	- Xy1Hi3HIJJJr4   c                 "    t          d          S )N   )max_body_sizer  rU   s    r2   r3   zMaxBodySizeTest.get_http_client$  s    $9====r4   c                     |                      d          }|                                 |                     |j        ddz             d S )Nr+     aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaar<  r  r   s     r2   test_small_bodyzMaxBodySizeTest.test_small_body'  sH    ::h''b(899999r4   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   rD   r-  r  r   r   rU   s    r2   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 	7r4  N)r5   r6   r7   r  r3   rK  rN  r8   r4   r2   r6  r6    sS        	K 	K 	K> > >: : :
7 7 7 7 7r4   r6  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 rA  r  rU   s    r2   rK   z0MaxBufferSizeTest.get_app.<locals>.LargeBody.get9  rC  r4   Nro   r8   r4   r2   rD  rS  8  rE  r4   rD  r,  r-  )r0   rD  s     r2   r  zMaxBufferSizeTest.get_app7  sD    	- 	- 	- 	- 	- 	- 	- 	- Xy12333r4   c                 $    t          dd          S )Ni  rG  )rH  max_buffer_sizer  rU   s    r2   r3   z!MaxBufferSizeTest.get_http_client>  s    $$i
 
 
 	
r4   c                     |                      d          }|                                 |                     |j        ddz             d S )Nr,  rJ  rB  r  r   s     r2   rN  z!MaxBufferSizeTest.test_large_bodyD  sH    ::h''c(9:::::r4   N)r5   r6   r7   r  r3   rN  r8   r4   r2   rP  rP  6  sA        4 4 4
 
 
; ; ; ; ;r4   rP  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 worldrf   rU   s    r2   rK   zJChunkedWithContentLengthTest.get_app.<locals>.ChunkedWithContentLength.getM  s/     3Y???

=)))))r4   Nro   r8   r4   r2   ChunkedWithContentLengthr\  L  s#        * * * * *r4   r_  /chunkwithclr-  )r0   r_  s     r2   r  z$ChunkedWithContentLengthTest.get_appK  sE    	* 	* 	* 	* 	*~ 	* 	* 	* ^-EFGHHHr4   c                     t                      S r<   r  rU   s    r2   r3   z,ChunkedWithContentLengthTest.get_http_clientT  s    $&&&r4   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 )NzXMalformed HTTP message from None: Message with both Transfer-Encoding and Content-Lengthr*  r`  Tr,  rM  rU   s    r2    test_chunked_with_content_lengthz=ChunkedWithContentLengthTest.test_chunked_with_content_lengthW  s   A ,
 
 
 		= 		= ""#899 = =

>t
<<<= = = = = = = = = = = = = = =		= 		= 		= 		= 		= 		= 		= 		= 		= 		= 		= 		= 		= 		= 		= 		= 		= 		=r4  N)r5   r6   r7   r  r3   rc  r8   r4   r2   rY  rY  J  sD        I I I' ' '= = = = =r4   rY  )Xr   
contextlibr   rM  rD   r  r<  r	  r  rJ  r  tornado.escaper   r   tornador   r   tornado.httpclientr   r	   tornado.httpserverr
   tornado.httputilr   r   tornado.ioloopr   tornado.iostreamr   tornado.locksr   tornado.logr   tornado.netutilr   r   tornado.simple_httpclientr   r   r   tornado.test.httpclient_testr   r   r   r   r   tornado.testr   tornado.testingr   r   r   r   r    tornado.test.utilr!   r"   r#   tornado.webr$   r%   r&   r'   HTTPClientCommonTestCaser)   r:   rN   r[   rb   ri   rq   r   r   r   r   r   r   r  r  r  r  r  r  r  r  r6  rP  rY  r8   r4   r2   <module>rv     s               				 				  



 



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

+ 
+ 
+ 
+ 
+^ 
+ 
+ 
+& & & & &n & & &
 ! ! ! ! !n ! ! ! E- E- E- E- E- E- E- E-P	D 	D 	D 	D 	D02K 	D 	D 	D/2 /2 /2 /2 /2 24M /2 /2 /2d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 = = = = =r4   