
    Ph/{                        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      ZWy)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y)SimpleHTTPClientCommonTestCasec                 \    t        d      }| j                  t        |t                      |S )NTforce_instance)r   
assertTrue
isinstanceselfclients     ]/var/www/html/saasai/venv/lib/python3.12/site-packages/tornado/test/simple_httpclient_test.pyget_http_clientz.SimpleHTTPClientCommonTestCase.get_http_client3   s%    &d;
6+@AB    N)__name__
__module____qualname__r3    r4   r2   r)   r)   2   s    r4   r)   c                   6    e Zd Zd Zej
                  d        Zy)TriggerHandlerc                      || _         || _        y Nqueuewake_callback)r0   r>   r?   s      r2   
initializezTriggerHandler.initialize:   s    
*r4   c              #     K   t        j                  d       t               }| j                  j	                  |j
                         | j                  dd      dk(  r| j                          |j                          y w)Nzqueuing triggerwaketrue)	loggingdebugr   r>   appendsetget_argumentr?   wait)r0   events     r2   getzTriggerHandler.get>   s]     '(

%))$VV,6 jjls   A=A?N)r5   r6   r7   r@   r   	coroutinerK   r8   r4   r2   r:   r:   9   s    + 	]] r4   r:   c                   6    e Zd Zd Zej
                  d        Zy)ContentLengthHandlerc                     | j                         | _        t        j                         j	                  | j
                         y r<   )detachstreamr   currentspawn_callbackwrite_responser0   s    r2   rK   zContentLengthHandler.getI   s*    kkm''(;(;<r4   c              #      K   | j                   j                  t        d| j                  d      z               | j                   j	                          y w)Nz)HTTP/1.0 200 OK
Content-Length: %s

okvalue)rQ   writer   rH   closerU   s    r2   rT   z#ContentLengthHandler.write_responseM   sM     kkA##G,-
 	
 	s   AAN)r5   r6   r7   rK   r   rL   rT   r8   r4   r2   rN   rN   H   s    = 	]] r4   rN   c                       e Zd Zd Zy)HeadHandlerc                 (    | j                  dd       y )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y)OptionsHandlerc                 J    | j                  dd       | j                  d       y )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y)NoContentHandlerc                 F    | j                  d       | j                          y )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y)SeeOtherPostHandlerc                     t        | j                  j                        }|dv sJ d| j                  j                  z         | j                  dd       | j	                  |       y )N.  i/  unexpected body %rLocation/see_other_get)intrequestbodyr_   rm   )r0   redirect_codes     r2   postzSeeOtherPostHandler.postj   sT    DLL--.
*T,@4<<CTCT,TT*
$45&r4   Nr5   r6   r7   r|   r8   r4   r2   rq   rq   i   s    'r4   rq   c                       e Zd Zd Zy)SeeOtherGetHandlerc                     | j                   j                  r"t        d| j                   j                  z        | j                  d       y )Nru   re   )ry   rz   	ExceptionrX   rU   s    r2   rK   zSeeOtherGetHandler.getr   s6    <<04<<3D3DDEE

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

4<<''/0r4   Nro   r8   r4   r2   r   r   x   s    1r4   r   c                       e Zd Zd Zy)NoContentLengthHandlerc                     | j                   j                  j                  d      r2| j                         }|j	                  d       |j                          y | j                  d       y )NzHTTP/1s   HTTP/1.0 200 OK

hellozHTTP/1 required)ry   r   
startswithrP   rX   rY   rn   )r0   rQ   s     r2   rK   zNoContentLengthHandler.get~   sJ    <<**84 [[]FLL<=LLNKK)*r4   Nro   r8   r4   r2   r   r   }   s    	+r4   r   c                       e Zd Zd Zy)EchoPostHandlerc                 N    | j                  | j                  j                         y 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y)RespondInPrepareHandlerc                 H    | j                  d       | j                  d       y )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            	       f   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&jN                  d        Z(d  Z)d! Z*d" Z+d# Z,d$ Z-d% Z.d& Z/d' Z0d( Z1y))+SimpleHTTPClientTestMixinreturnc                     t               r<   NotImplementedErrorrU   s    r2   get_http_portz'SimpleHTTPClientTestMixin.get_http_port       !##r4   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                 r   t        j                         | _        t        t	        dt
        t        | j                  | j                              t	        dt              t	        dt        d      t	        dt              t	        dt              t	        d	t              t	        d
t              t	        dt              t	        dt              t	        dt               t	        dt"              t	        dt$              t	        dt&              t	        dt(              t	        dt*              t	        dt,              gd      S )N/triggerr=   z/chunkz/countdown/([0-9]+)	countdown)name/helloz/content_length/head/options/no_content/see_other_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}}DIIF
 Hl+)+;+NH/0%';<G[)J/M#34%':;$&89L/2(*@AL/2)+BCK1M#34), /
 	
r4   c                 f   | j                  t               t                      | j                  t               t        d             t        t	        d            5 }d }| j
                  j                  |      }|j                  |      }| j                  ||       d d d        y # 1 sw Y   y xY w)NTr+   F)make_currentc                  \   K   t        j                  d       d {    t               S 7 wNr   )r   sleepr   r8   r4   r2   make_clientz=SimpleHTTPClientTestMixin.test_singleton.<locals>.make_client   s%     iil"",.. #s   ,*,)assertIsr   assertIsNotr   r   io_looprun_sync)r0   io_loop2r   client1client2s        r2   test_singletonz(SimpleHTTPClientTestMixin.test_singleton   s    +-/D/FG!#%:$%O	
 V/0H/ ll++K8G''4GWg. 100s   AB''B0c                     t         j                  d            5 } j                  |j                  d       g t	        d      D ]9  }|f fd	}|j                   j                  d            j                  |       ;  j                   fd        j                  t        |j                        d         j                  j                                   j                  j                                  j                   fd        j                  t              d	d
h        j                  t        |j                        d	         j                  j                                   j                  j                                  j                  fd        j                  t              h d        j                  t         j                        d	       d d d        y # 1 sw Y   y xY w)N   max_clients   c                 H    j                  |       j                          y r<   )rF   r   )futiseenr0   s     r2   cbz;SimpleHTTPClientTestMixin.test_connection_limit.<locals>.cb   s    KKNIIKr4   r   c                  4    t         j                        dk(  S Nr   lenr   rU   s   r2   <lambda>zASimpleHTTPClientTestMixin.test_connection_limit.<locals>.<lambda>   s    DMM(:a(?r4   )	conditionc                  T    t        j                        dk(  xr t               dk(  S r   r   )r   r0   s   r2   r   zASimpleHTTPClientTestMixin.test_connection_limit.<locals>.<lambda>   s$    T]]);q)@)SSYRS^)Sr4   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   sz   T''A'676V//3D 1X   T\\*56HHL  II ?I@S.2 $DMM!!#%#DMM!!#%II TIUSYA/S.2 $DMM!!#%#DMM!!#%II 6I7SY5S/37 877s   GG22G;c              #      K   t        | j                  d            5 }|j                  | j                  d      d      }|j	                          d d d        y # 1 sw Y   y xY ww)Nr   r   z/countdown/3r   max_redirects)r   r   r   r   rethrow)r0   r1   responses      r2   test_redirect_connection_limitz8SimpleHTTPClientTestMixin.test_redirect_connection_limit   sV      T''A'676#\\$,,~*FVW\XXH 877s   A(5A	A(A%!A(c                 x   | j                  dd      }| j                  d|j                         | j                  |j                  j
                  j                  d             | j                  |j                  j                  d             | j                  |j                  d   j                  d             y )Nz/countdown/5r   r   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:>hmm, 	((,,55nEF..77GH((4==nMNr4   c                     t        ddi      }| j                  d|       | j                  t        |j	                               dg       y )N
User-AgentFoor   )r   )r   r   )r   r   r   listget_all)r0   r   s     r2   test_header_reusez+SimpleHTTPClientTestMixin.test_header_reuse  sC     |U34

8W
-goo/03H2IJr4   c                     | j                  dd      }| j                  d|j                         | j                  |j                  j	                         dt
                y )Nr   GETmethod   zTornado/)r   r   r   rz   decoder   r   s     r2   test_default_user_agentz1SimpleHTTPClientTestMixin.test_default_user_agent  sL    ::mE::hmm,--/8G91EFr4   c                    dD ]  }| j                  ddd|z        }| j                  d|j                         | j                  |j                  j
                  j                  d             | j                  |j                  j                  d             | j                  d|j                  j                          y )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UHS(--0OOH,,0099:KLMOOH22;;<LMNVX%5%5%<%<= r4   c              #     K   d}t               |  G fddt              }t        | j                   |                   5 }| j	                  t
              5  |j                  | j                  d      |dd       d d d        d d d        j                          t        j                  d	       y # 1 sw Y   9xY w# 1 sw Y   =xY ww)
N皙?c                       e Zd Z fdZy)GSimpleHTTPClientTestMixin.test_connect_timeout.<locals>.TimeoutResolverc                    K   j                          d {    t        j                  dj                         ffgS 7 'wN	127.0.0.1)rI   socketAF_INETr   )r0   argsr   cleanup_eventtests      r2   resolvezOSimpleHTTPClientTestMixin.test_connect_timeout.<locals>.TimeoutResolver.resolve*  s>     #((***+t7I7I7K)LMNN +s   A?(AN)r5   r6   r7   r  )r  r  s   r2   TimeoutResolverr  )  s	    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h 	O T''1B'CD""#34llLL*$+$( $	 #   5 E 	iin 54 EDs6   ACC'B:C
0C:C	?CCCc                 $   d}t         j                  dk(  rd}| j                  t              5  | j	                  d|d       d d d         | j
                  j                                 | j                  j                  d        y # 1 sw Y   ExY w)Nr  ntg      ?z/trigger?wake=falseT)r  r   c                  ,    t        j                  d      S r   r   r   r8   r4   r2   r   z@SimpleHTTPClientTestMixin.test_request_timeout.<locals>.<lambda>G      ciilr4   )	osr   r  r   r   r   r   r   r   )r0   r  s     r2   test_request_timeoutz.SimpleHTTPClientTestMixin.test_request_timeout>  sr    77d?G/0JJ,gSWJX 1 	 !23	 10s   BBc                    t        ddt        j                        \  }|j                         d   }| j	                         j                  |       d| j                         |fz  }| j                  t              5  | j                  |dd       d d d        | j                  |      }| j                  |j                  d	       y # 1 sw Y   7xY w)
Nr   z::1)familyr   z%s://[::1]:%d/helloFT)
allow_ipv6r      Hello world!)r   r	  AF_INET6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	 *)s   ;CCc                    | j                  d      }| j                  |j                  d       | j                  d      }| j                  |j                  d       t        t        dt
        j                        5  | j                  t              5  | j                  dd       d d d        | j                  t              5  | j                  d	d       d d d        d d d        y # 1 sw Y   CxY w# 1 sw Y   xY w# 1 sw Y   y xY w)
Nz/content_length?value=2,2   okz/content_length?value=2,%202,2z".*Multiple unequal Content-Lengthslevelz/content_length?value=2,4Tr   z/content_length?value=2,%202,3)	r   r   rz   r   r   rD   INFOr  r   r   s     r2   %test_multiple_content_length_acceptedz?SimpleHTTPClientTestMixin.test_multiple_content_length_acceptedW  s    ::9:.::>?.9
 ""#89

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

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

1D8d
K 1 6 <<8# !3!34BLL8IIN!ge5F&G!$U%:%:!;sLL@ " OONBLL9  "{{5+=+=>OO,BLL0AA2<<P $ 10 65s#    E8E+(E8+E5	0E88Fc                 $    t         j                  d            5 j                   j                  d      d       j	                           j                  t              5 } j                  j                   fd       d d d         j                  t        j                        d         j                  j                                  j                  j                  fd       d d d        y # 1 sw Y   txY w# 1 sw Y   y xY w)	Nr   r   r   
   )r  c                  J     j                  j                  d      dd      S )Nr   r  Tr  r   )r   r   )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76<<Z 8"<MDIIK""#34%% 5 S.0JK#DMM!!#%LL!!,/ 87 54	 87s%   AD' C:A*D:D	?DDc                     | j                  d      }|j                  dk(  r| j                  d       y | j                  d|j                         y )Nr   s   HTTP/1 requiredrequires HTTP/1.xs   hello)r   rz   skipTestr   r   s     r2   test_no_content_lengthz0SimpleHTTPClientTestMixin.test_no_content_length  s?    ::23==..MM-.Xx}}5r4   c                 $     |d        |d       y N   1234   5678r8   r0   rX   s     r2   sync_body_producerz,SimpleHTTPClientTestMixin.sync_body_producer  s    ggr4   c              #   X   K    |d       t         j                    |d       y wrc  )r   momentrf  s     r2   async_body_producerz-SimpleHTTPClientTestMixin.async_body_producer  s$     GnjjGns   (*c                     | j                  dd| j                        }|j                          | j                  |j                  d       y Nr   r   r   body_producer   12345678r   rg  r   r   rz   r   s     r2   test_sync_body_producer_chunkedz9SimpleHTTPClientTestMixin.test_sync_body_producer_chunked  sD    ::t7N7N  
 	4r4   c                     | j                  dd| j                  ddi      }|j                          | j                  |j                  d       y 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  sN    ::11%s+	  
 	4r4   c                     | j                  dd| j                        }|j                          | j                  |j                  d       y rl  r   rj  r   r   rz   r   s     r2    test_async_body_producer_chunkedz:SimpleHTTPClientTestMixin.test_async_body_producer_chunked  sD    ::t7O7O  
 	4r4   c                     | j                  dd| j                  ddi      }|j                          | j                  |j                  d       y rs  rx  r   s     r2   'test_async_body_producer_content_lengthzASimpleHTTPClientTestMixin.test_async_body_producer_content_length  sN    ::22%s+	  
 	4r4   c                     d }| j                  dd|      }|j                          | j                  |j                  d       y )Nc                    K    | d       d {    dd l }|j                  d       d {     | d       d {    y 7 27 7 	wNrd  r   re  asyncior   rX   r  s     r2   rn  zRSimpleHTTPClientTestMixin.test_native_body_producer_chunked.<locals>.body_producer  D     .  --""".  	 ! # /   AAAAAAAAAr   r   rm  ro  r   r   r   rz   r0   rn  r   s      r2   !test_native_body_producer_chunkedz;SimpleHTTPClientTestMixin.test_native_body_producer_chunked  s=    	! ::l6:W4r4   c                     d }| j                  dd|ddi      }|j                          | j                  |j                  d       y )Nc                    K    | d       d {    dd l }|j                  d       d {     | d       d {    y 7 27 7 	wr~  r  r  s     r2   rn  zYSimpleHTTPClientTestMixin.test_native_body_producer_content_length.<locals>.body_producer  r  r  r   r   r]   rt  ru  ro  r  r  s      r2   (test_native_body_producer_content_lengthzBSimpleHTTPClientTestMixin.test_native_body_producer_content_length  sO    	! ::'%s+	  
 	4r4   c                 f    | j                  dddd      }| j                  |j                  d       y )Nr   r   rd  T)r   rz   expect_100_continue)r   r   rz   r   s     r2   test_100_continuez+SimpleHTTPClientTestMixin.test_100_continue  s4    ::g4  
 	0r4   c                 l    d }| j                  dd|d      }| j                  |j                  d       y )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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  s>    	4 ::!' $	  
 	,r4   c                 8   g }g }| j                  d|j                  |j                         t        t        t        |            }| j                  |dg       t        |D cg c]  }|j                  d      s| c}      }| j                  |d       y c c}w )Nz/redirect?url=/hello)header_callbackstreaming_callbackzHello world!zHTTP/r   )r   rF   r   mapr   r   r   r   )r0   r   chunk_byteschunkshnum_start_liness         r2   test_streaming_follow_redirectsz9SimpleHTTPClientTestMixin.test_streaming_follow_redirects
  s     

"#NN*11 	 	

 c*k23.!12'K'QQ\\'5Jq'KL!, Ls   "B9BN)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      sH   $s $ .3$$&*$>Djj$	$$C $C $$c $$ $$
>/$4<  OKG
>  6	4 9 9O(/=EQ(0 6 	]] 
5555
55"1
--r4   r   c                   *     e Zd Z fdZd Zd Z xZS )SimpleHTTPClientTestCasec                 L    t         |           | j                         | _        y r<   supersetUpr   http_clientr0   	__class__s    r2   r  zSimpleHTTPClientTestCase.setUp       --/r4   c                 "    | j                         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    $CDCFCCr4   )r5   r6   r7   r  r  r   __classcell__r  s   @r2   r  r    s    0$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                 L    t         |           | j                         | _        y r<   r  r  s    r2   r  zSimpleHTTPSClientTestCase.setUp,  r  r4   c                 "    | j                         S r<   r  rU   s    r2   r  z!SimpleHTTPSClientTestCase.get_app0  r  r4   c                 2    t        ddt        d      d|S )NTF)validate_cert)r,   defaultsr8   )r   r   r   s     r2   r   z'SimpleHTTPSClientTestCase.create_client3  s&    $ 
$U*C
GM
 	
r4   c                     | j                  ddt        j                  i      }| j                  |j                  d       y )Nr   	cert_reqsssl_optionsr!  )r   ssl	CERT_NONEr   rz   r0   resps     r2   test_ssl_optionsz*SimpleHTTPSClientTestCase.test_ssl_options8  s1    zz(cmm0LzMO4r4   c                     t        j                  t         j                  j                        }d|_        t         j
                  |_        | j                  d|      }| j                  |j                  d       y )NFr   r  r!  )
r  create_default_contextPurposeSERVER_AUTHcheck_hostnamer  verify_moder   r   rz   )r0   ssl_ctxr  s      r2   test_ssl_contextz*SimpleHTTPSClientTestCase.test_ssl_context<  sV    ,,S[[-D-DE!&!mmzz(z8O4r4   c                    t        t        dd      5  | j                  t        j                        5  | j                  dt        t        j                        d       d d d        d d d        y # 1 sw Y   xY w# 1 sw Y   y xY w)NSSL Error|Uncaught 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  se    w >O""3<<0

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

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

3d
E 1 & 	001 10 &%s"    A>A2A>2A;	7A>>B)r5   r6   r7   r  r  r   r  r  r  r  r  r  r  s   @r2   r  r  +  s,    0$

55H2r4   r  c                   .     e Zd Z fdZ fdZd Z xZS )CreateAsyncHTTPClientTestCasec                 T    t         |           t        j                         | _        y r<   )r  r  r   _save_configurationsavedr  s    r2   r  z#CreateAsyncHTTPClientTestCase.setUp^  s    $88:
r4   c                 `    t        j                  | j                         t        |           y r<   )r   _restore_configurationr  r  tearDownr  s    r2   r  z&CreateAsyncHTTPClientTestCase.tearDownb  s     ..tzz:r4   c                 0   t        j                  t               t        t        d            5 }| j	                  |j
                  d       d d d        t        t        dd            5 }| j	                  |j
                  d       d d d        t        j                  t        d       t        t        d            5 }| j	                  |j
                  d       d d d        t        t        dd            5 }| j	                  |j
                  d       d d d        t        t        d	d            5 }| j	                  |j
                  d	       d d d        y # 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   jxY w# 1 sw Y   y xY w)
NTr+   rX     )r   r,      r         )r   	configurer   r   r   r   r/   s     r2   test_max_clientsz.CreateAsyncHTTPClientTestCase.test_max_clientsf  s)   !!"78_D9:fV//4 ;_DIJfV//4 K
 	!!"7RH_D9:fV//4 ;_DIJfV//4 K_DIJfV//4 KJ ;:JJ ;:JJJJs;   E*E(?E4:F 5FE%(E14E= F	F)r5   r6   r7   r  r  r  r  r  s   @r2   r  r  ]  s    ;5r4   r  c                   $    e Zd Zd Zd Zd Zd Zy)HTTP100ContinueTestCasec                    |j                   j                  d      | _        | j                  sJ|j                  j	                  t        ddd      t                      |j                  j                          y || _        | j                  j                  j                  j                  d      }|j                  | j                         y )NHTTP/1. r   OKs   HTTP/1.1 100 CONTINUE

)r   r   http1
connectionwrite_headersr   r   rn   ry   rQ   rX   r   respond_200)r0   ry   r   s      r2   respond_100z#HTTP100ContinueTestCase.respond_100y  s    __//	:
zz,,!"c40+- %%'ll%%,,223STd../r4   c                      |j                           j                  j                  j                  j	                  d      }|j                   fd       y )Ns'   HTTP/1.1 200 OK
Content-Length: 1

Ac                 `    j                   j                  j                  j                         S r<   )ry   r  rQ   rY   )fr0   s    r2   r   z5HTTP100ContinueTestCase.respond_200.<locals>.<lambda>  s    (?(?(F(F(L(L(Nr4   )resultry   r  rQ   rX   r   )r0   r   s   ` r2   r  z#HTTP100ContinueTestCase.respond_200  s@    

ll%%,,22<
 	NOr4   c                     | j                   S r<   )r  rU   s    r2   r  zHTTP100ContinueTestCase.get_app  s    r4   c                     | j                  d      }| j                  s| j                  d       | j                  |j                  d       y )Nr  r_     A)r   r  r`  r   rz   )r0   ress     r2   r  z)HTTP100ContinueTestCase.test_100_continue  s7    jjozzMM-.4(r4   N)r5   r6   r7   r  r  r  r  r8   r4   r2   r  r  x  s    
0P )r4   r  c                   $    e Zd Zd Zd Zd Zd Zy)HTTP204NoContentTestCasec                    |j                   j                  d      | _        | j                  sJ|j                  j	                  t        ddd      t                      |j                  j                          y |j                  j                         }|j                  d       |j                  j                  ddg      d   r|j                  d	       n|j                  d
       |j                  d       |j                          y )Nr  r  r   r  s   HTTP/1.1 204 No content
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    __//	:
zz,,!"c40+- %%' ##**,34  5'226LL12LL12Wr4   c                     | j                   S r<   )r  rU   s    r2   r  z HTTP204NoContentTestCase.get_app  s    r4   c                     | j                  d      }| j                  s| j                  d       | j                  |j                  d       | j                  |j
                  d       y )Nr  r_  rk   r4   )r   r  r`  r   r   rz   r  s     r2   test_204_no_contentz,HTTP204NoContentTestCase.test_204_no_content  sK    zz#zzMM-.C(C(r4   c                 ~   t        t        dt        j                        5  | j	                  t
              5  | j                  dd       | j                  s| j                  d       | j                  j                  t        k7  r| j                  d       d d d        d d d        y # 1 sw Y   xY w# 1 sw Y   y xY w)Nz-.*Response with code 204 should not have bodyr*  z	/?error=1Tr,  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  s    DGLL
 ""#89

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

4 r4   Nro   r8   r4   r2   SmallHeadersr        !r4   r"  c                       e Zd Zd Zy)/MaxHeaderSizeTest.get_app.<locals>.LargeHeadersc                 J    | j                  dd       | j                  d       y )Nr     aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaare   rf   rU   s    r2   rK   z3MaxHeaderSizeTest.get_app.<locals>.LargeHeaders.get  s    
J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  s6    	!> 	!
	!> 	!
 X|4x6NOPPr4   c                     t        d      S )Ni   )max_header_sizer  rU   s    r2   r3   z!MaxHeaderSizeTest.get_http_client
  s    $T::r4   c                 ~    | j                  d      }|j                          | j                  |j                  d       y )Nr)  r)  r  r   s     r2   test_small_headersz$MaxHeaderSizeTest.test_small_headers  s0    ::h'.r4   c                     t        t        dt        j                        5  | j	                  t
              5  | j                  dd       d d d        d d d        y # 1 sw Y   xY w# 1 sw Y   y xY w)NzUnsatisfiable readr*  r*  Tr,  )r   r   rD   r-  r  r   r   rU   s    r2   test_large_headersz$MaxHeaderSizeTest.test_large_headers  sQ    w 4GLLI""#9:

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

:?+r4   Nro   r8   r4   r2   	SmallBodyr7    s    ,r4   r;  c                       e Zd Zd Zy)*MaxBodySizeTest.get_app.<locals>.LargeBodyc                 ,    | j                  ddz         y Nr9  d   r  rU   s    r2   rK   z.MaxBodySizeTest.get_app.<locals>.LargeBody.get      

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

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

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

 :9
 
r2  N)r5   r6   r7   r  r3   rI  rL  r8   r4   r2   r4  r4    s    	K>:
7r4   r4  c                       e Zd Zd Zd Zd Zy)MaxBufferSizeTestc                 <     G d dt               }t        d|fg      S )Nc                       e Zd Zd Zy),MaxBufferSizeTest.get_app.<locals>.LargeBodyc                 ,    | j                  ddz         y r?  r  rU   s    r2   rK   z0MaxBufferSizeTest.get_app.<locals>.LargeBody.get9  rA  r4   Nro   r8   r4   r2   rB  rQ  8  rC  r4   rB  r*  r+  )r0   rB  s     r2   r  zMaxBufferSizeTest.get_app7  s#    	- 	- Xy1233r4   c                     t        dd      S )Ni  rE  )rF  max_buffer_sizer  rU   s    r2   r3   z!MaxBufferSizeTest.get_http_client>  s    $$i
 	
r4   c                     | j                  d      }|j                          | j                  |j                  ddz         y )Nr*  rH  r@  r  r   s     r2   rL  z!MaxBufferSizeTest.test_large_bodyD  s5    ::h'c(9:r4   N)r5   r6   r7   r  r3   rL  r8   r4   r2   rN  rN  6  s    4
;r4   rN  c                       e Zd Zd Zd Zd Zy)ChunkedWithContentLengthTestc                 <     G d dt               }t        d|fg      S )Nc                       e Zd Zd Zy)FChunkedWithContentLengthTest.get_app.<locals>.ChunkedWithContentLengthc                 J    | j                  dd       | j                  d       y )NzTransfer-EncodingchunkedzHello worldrf   rU   s    r2   rK   zJChunkedWithContentLengthTest.get_app.<locals>.ChunkedWithContentLength.getM  s     3Y?

=)r4   Nro   r8   r4   r2   ChunkedWithContentLengthrZ  L  s    *r4   r]  /chunkwithclr+  )r0   r]  s     r2   r  z$ChunkedWithContentLengthTest.get_appK  s$    	*~ 	* ^-EFG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  | j	                  t
              5  | j                  dd       d d d        d d d        y # 1 sw Y   xY w# 1 sw Y   y xY w)NzXMalformed HTTP message from None: Message with both Transfer-Encoding and Content-Lengthr*  r^  Tr,  rK  rU   s    r2    test_chunked_with_content_lengthz=ChunkedWithContentLengthTest.test_chunked_with_content_lengthW  s`    A ,,
 ""#89

>t
< :
 
 :9
 
r2  N)r5   r6   r7   r  r3   ra  r8   r4   r2   rW  rW  J  s    I'=r4   rW  )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  r4  rN  rW  r8   r4   r2   <module>rt     s       	 	  
 
  +   < ) ; ! 3   2 
  )  
 N M_%M%M ^ >  /. /
^ ~ '. ' 1n 1

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