Ë
    êmxi/{  ã                   ó¤  — 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     úZ/home/htdocs/ttos/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]   è ø€ ä�‰Ð'Ô(Ü“ˆØ�
‰
×Ñ˜%Ÿ)™)Ô$Ø×Ñ˜V VÓ,°Ò6Ø×ÑÔ Ø�j‰j‹lÓù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*   € Ø—k‘k“mˆŒÜ�‰Ó×'Ñ'¨×(;Ñ(;Õ<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   è ø€ à�k‰k×ÑÜØ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   € Ø�‰Ð5°sÔ;Ø�
‰
�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   € Ü˜DŸL™L×-Ñ-Ó.ˆØ 
Ñ*ÐTÐ,@À4Ç<Á<×CTÑCTÑ,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   € Ø�<‰<×ÒÜÐ0°4·<±<×3DÑ3DÑ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Ø�L‰LÐ<Ô=Ø�L‰L�Nà�K‰KÐ)Õ*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Ÿ}™}¸D¿I¹IÔFóô
 �HœlÓ+ÜÐ)Ô+;À+Ô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%   è ø€ Ü—i‘i “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¨Ô/Ó0ð 	/°Hò/ð —l‘l×+Ñ+¨KÓ8ˆGØ×'Ñ'¨Ó4ˆGØ×Ñ˜W gÔ.÷	/÷ 	/ñ 	/ús   Á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   ø€ Ø—K‘K ”NØ—I‘I•Kr4   r«   c                  ó4   •— t        ‰ j                  «      dk(  S ©NrÎ   ©Úlenr»   rU   s   €r2   ú<lambda>zASimpleHTTPClientTestMixin.test_connection_limit.<locals>.<lambda>ì   s   ø€ ¬¨D¯M©MÓ(:¸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Ñ)@Ò)SÄSÈÃYÐRSÁ^€ 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Ó7ð 	4¸6Ø×Ñ˜V×/Ñ/°Ô3ØˆDô ˜1“Xò M�àö  ð —‘˜TŸ\™\¨*Ó5Ó6×HÑHÈÕLðMð �I‰IÓ ?ˆIÔ@Ø×ÑœS §¡Ó.°Ô2ð $ˆD�M‰M×!Ñ!Ó#Ô%Ø#ˆD�M‰M×!Ñ!Ó#Ô%Ø�I‰IÔ TˆIÔUØ×ÑœS ›Y¨¨A¨Ô/Ø×ÑœS §¡Ó.°Ô2ð $ˆD�M‰M×!Ñ!Ó#Ô%Ø#ˆD�M‰M×!Ñ!Ó#Ô%Ø�I‰IÓ 6ˆIÔ7Ø×ÑœS ›YªÔ5Ø×ÑœS §¡Ó/°Ô3÷7	4÷ 	4ñ 	4ús   ž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ý   s_   è ø€ ô �T×'Ñ'°AÐ'Ó6Ó7ð 	¸6Ø#Ÿ\™\¨$¯,©,°~Ó*FÐVW˜\ÓXÑXˆHØ×ÑÔ÷	÷ 	ñ 	üs   ‚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Œ   € Ø—:‘:˜n¸A�:Ó>ˆØ×Ñ˜˜hŸm™mÔ,ð 	�‰˜×(Ñ(×,Ñ,×5Ñ5°nÓ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ˆØ�
‰
�8 Wˆ
Ô-Ø×Ñœ˜gŸo™oÓ/Ó0Ð3HÐ2IÕ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   € Ø—:‘:˜m°E�:Ó:ˆØ×Ñ˜˜hŸm™mÔ,Ø×Ñ˜Ÿ™×-Ñ-Ó/°8¼G¸9Ð1EÕ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Ø—z‘zÐ"3¸FÈÐPTÉ�zÓUˆHØ×Ñ˜S (§-¡-Ô0Ø�O‰O˜H×,Ñ,×0Ñ0×9Ñ9Ð:KÓLÔMØ�O‰O˜H×2Ñ2×;Ñ;Ð<LÓMÔNà×Ñ˜V X×%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>   øè ø€ Ø#×(Ñ(Ó*×*Ð*äŸ™¨+°t×7IÑ7IÓ7KÐ)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ñ Ø—l‘lØ—L‘L Ó*Ø$+Ø$(Ø $ð	 #ó ò ÷÷	ð 	×ÑÔÜ�i‰i˜‹nÓ÷ð ú÷	ð 	üs6   „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  ó   € ¤c§i¡i°£l€ r4   )	Úosr­   r  r   r    r»   rä   rÇ   rÈ   )r0   r  s     r2   Útest_request_timeoutz.SimpleHTTPClientTestMixin.test_request_timeout>  s}   € ØˆÜ�7‰7�dŠ?ØˆGà×ÑÔ/Ó0ñ 	YØ�J‰JÐ,¸gÐSWˆJÔX÷	Yð 	 ˆ�‰×ÑÓÔ!Ø�‰×ÑÑ2Õ3÷		Yð 	Yús   ­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Ó)ñ 	@Ø�J‰J�s u¸$ˆ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ÄÇÁô
ñ 	Oð ×"Ñ"Ô#8Ó9ñ JØ—
‘
Ð6ÀD�
ÔI÷Jà×"Ñ"Ô#8Ó9ñ OØ—
‘
Ð;È�
ÔN÷O÷	Oð 	O÷Jð Jú÷Oð Oú÷	Oð 	Oú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   € Ø—:‘:˜g¨f�:Ó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Ó+ˆØ�‰˜Ÿ™ h§m¡mÓ4Ô5à�l‰l˜<Ó(×0Ñ0°Ð<OÓPˆØ—:‘:˜c“?ˆØ�‰˜Ÿ™ h§m¡mÓ4°h·m±mÕ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  rßt        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„  s0  € Ü*›_Ñˆ�dØ�‰˜Ô%Ü”w ¨uÔ5ñ 	LØ×"Ñ"¤6§<¡<Ó0ð L°BØ—
‘
Ð1°DÑ8Àd�
ÔK÷L÷	Lô �<‰<˜8Ò#ä ¤×!3Ñ!3Ó4¼¸B¿L¹LÓ8IÐIˆNÙ!¤g¬eÐ5FÔ&GÜ!$¤U×%:Ñ%:Ó!;¼sØ—L‘Ló@ð "�ð �O‰O˜N¨B¯L©LÔ9ô  "Ÿ{™{¬5×+=Ñ+=Ó>ÐØ�O‰OÐ,´°B·L±LÓ0AÐAÀ2Ç<Á<ÕPð $÷Lñ Lú÷	Lñ 	Lús#   ± 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&   ø€ ˜FŸL™LØŸ™ 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Ó7ð 	0¸6à—<‘< §¡¨ZÓ 8È"�<ÓMˆDØ�I‰IŒKØ×"Ñ"Ô#3Ó4ð ¸Ø—‘×%Ñ%ôô÷ð ×ÑœS §¡Ó.Ð0JÔKØ#ˆD�M‰M×!Ñ!Ó#Ô%Ø�L‰L×!Ñ!£,Ô/÷	0ð 	0÷ð ú÷		0ð 	0ús%   Ÿ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ˆØ�=‰=Ð.Ò.Ø�M‰MÐ-Õ.à×Ñ˜X x§}¡}Õ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$   è ø€ á�G‹nÒÜ�j‰jÒÙ�G‹nÓù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   € Ø—:‘:Ø °t×7NÑ7Nð ó 
ˆð 	×ÑÔØ×Ñ˜Ÿ™¨Õ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   € Ø—:‘:Ø °t×7OÑ7Oð ó 
ˆð 	×ÑÔØ×Ñ˜Ÿ™¨Õ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=   € ò	!ð —:‘:˜l°6È�:Ó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   € Ø—:‘:Ø ¨gÈ4ð ó 
ˆð 	×Ñ˜Ÿ™¨Õ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Ž   € ð ˆØˆØ�
‰
Ø"Ø#ŸN™NØ*×1Ñ1ð 	ô 	
ô
 ”cœ* kÓ2Ó3ˆØ×Ñ˜ .Ð!1Ô2ä¨'ÖK Q°Q·\±\À'Õ5JšqÒ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ñ$Øð$Ø&*ð$Ø>D¿j¹jð$à	ó$ð$˜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   € Ü$ÑC°DÐC¸FÑ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   € Ø�z‰z˜(°¼c¿m¹mÐ0LˆzÓ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ˆØ!&ˆÔÜ!Ÿm™mˆÔØ�z‰z˜(°ˆ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  su   € Ü”wÐ >ÈÔOñ 	Ø×"Ñ"¤3§<¡<Ó0ñ Ø—
‘
ØÜ $¬s×/@Ñ/@Ô AØ $ð ô ÷÷	ð 	÷ð ú÷	ð 	ús"   “ 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  sƒ   € Ü”wÐ >Ó?ñ 	Hä×,Ñ,¬S¯[©[×-DÑ-DÓEˆCØ×"Ñ"¤3§<¡<Ó0ñ HØ—
‘
˜8°À$�
ÔG÷H÷	Hð 	H÷Hð Hú÷	Hð 	Hú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  s|   € ô ”w Ó%ð 	F¨Ø×"Ñ"¤3§<¡<Ó0ñ FØ—
‘
˜3¨dÀ�
ÔE÷F÷	Fð 	×Ñ˜×0Ñ0Õ1÷Fð Fú÷	Fð 	Fú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    ø€ Ü×.Ñ.¨t¯z©zÔ:Ü‰ÑÕ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  sQ  € Ü×!Ñ!Ô"7Ô8Ü”_°DÔ9Ó:ð 	5¸fØ×Ñ˜V×/Ñ/°Ô4÷	5ä”_°ÀDÔIÓJð 	5ÈfØ×Ñ˜V×/Ñ/°Ô4÷	5ô
 	×!Ñ!Ô"7ÀRÕHÜ”_°DÔ9Ó:ð 	5¸fØ×Ñ˜V×/Ñ/°Ô4÷	5ä”_°ÀDÔIÓJð 	5ÈfØ×Ñ˜V×/Ñ/°Ô4÷	5ä”_°ÀDÔIÓJð 	5ÈfØ×Ñ˜V×/Ñ/°Ô4÷	5ð 	5÷	5ñ 	5ú÷	5ð 	5ú÷	5ð 	5ú÷	5ð 	5ú÷	5ð 	5ús;   ¯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–   € Ø—_‘_×/Ñ/°	Ó:ˆŒ
Ø�zŠzØ×Ñ×,Ñ,Ü! " c¨4Ó0´+³-ôð ×Ñ×%Ñ%Ô'ØØˆŒØ�l‰l×%Ñ%×,Ñ,×2Ñ2Ð3SÓ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Ó(N€ r4   )Úresultry   rë  rQ   rX   rã   )r0   rÓ   s   ` r2   rí  z#HTTP100ContinueTestCase.respond_200…  s@   ø€ Ø�
‰
ŒØ�l‰l×%Ñ%×,Ñ,×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   € Ø�j‰j˜‹oˆØ�zŠzØ�M‰MÐ-Ô.Ø×Ñ˜Ÿ™ 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  Féÿÿÿÿs   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Šzà×Ñ×,Ñ,Ü! " c¨4Ó0´+³-ôð ×Ñ×%Ñ%Ô'Øð ×#Ñ#×*Ñ*Ó,ˆØ�‰Ð3Ô4Ø×Ñ× Ñ  ¨5¨'Ó2°2Ò6Ø�L‰LÐ1Õ2à�L‰LÐ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   € Ø�z‰z˜#‹ˆØ�zŠzØ�M‰MÐ-Ô.Ø×Ñ˜Ÿ™ 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¥   € äÜÐDÌGÏLÉLô
ñ 	Ið ×"Ñ"Ô#8Ó9ñ IØ—
‘
˜;°D�
Ô9Ø—z’zØ—M‘MÐ"5Ô6Ø×#Ñ#×4Ñ4Ô8MÒMØ—M‘MÐ"GÔH÷I÷	Ið 	I÷Ið Iú÷	Ið 	Iú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¸×9KÑ9KÓ9MÐ+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?   € Ø—:‘:Ð?À$×BTÑBTÓBVÑ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<   øè ø€ à×(Ñ(×-Ñ-Ó/Ò/äŸ™¨+°t×7IÑ7IÓ7KÐ)LÐMÐNÐNùs   ƒ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ó  sc   € Ø×ÑÔ/Ó0ñ 	HØ�J‰J�x°À$ˆJÔG÷	Hð 	×Ñ×ÑÔ Ø�‰×ÑÑ2Õ3÷	Hð 	Hús   –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-FillerÚdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaare   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 |Ð4°xÀÐ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  sa   € Ü”wÐ 4¼G¿L¹LÔIñ 	7Ø×"Ñ"Ô#9Ó:ñ 7Ø—
‘
˜8°�
Ô6÷7÷	7ð 	7÷7ð 7ú÷	7ð 	7úó"   ¡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   € ô	,œô 	,ô	-œô 	-ô ˜X yÐ1°H¸iÐ3HÐ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,  sg   € ÜÜØGÜ—,‘,ô
ñ 	7ð
 ×"Ñ"Ô#8Ó9ñ 7Ø—
‘
˜8°�
Ô6÷7÷	7ð 	7÷
7ð 7ú÷	7ð 	7ú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#   € ô	-œô 	-ô ˜X yÐ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   € à—‘Ð 3°YÔ?Ø—
‘
˜=Õ)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  sl   € äÜðAô —,‘,ô
ñ 		=ð ×"Ñ"Ô#8Ó9ñ =Ø—
‘
˜>°t�
Ô<÷=÷		=ð 		=÷=ð =ú÷		=ð 		=ú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ô ô�^ô ô˜>ô ô /�.ô /ô
�^ô ô�~ô ô'˜.ô 'ô˜ô ô1�nô 1ô

+˜^ô 
+ô&�nô &ð
 ô!˜nó !ó ð!ð ôE- ó E-ó ðE-ôP	DÐ0Ð2Kô 	Dô/2Ð 2Ð4Mô /2ôd5 Mô 5ô6)Ð/ô )ô>.IÐ0ô .Iôb9Ð/ô 9ô04Ð.ô 4ô87Ð)ô 7ô87Ð'ô 7ô<;Ð)ô ;ô(=Ð#4õ =r4   