K ipddlmZmZddlmZmZmZmZmZm Z ddl m Z ddl m Z ddlmZddlmZmZmZmZddlmZddlmZdd lmZmZdd lmZdd lmZm Z m!Z!m"Z"m#Z#dd l$m%Z%dd l&m'Z'm(Z(m)Z)ddl*m+Z+m,Z,ddl-Z-ddl.Z.ddl/Z/ddl0Z0ddl1Z1ddl2Z2ddl3Z3ddl4Z4ddl5Z5ddl6Z6ddl7Z7ddl8Z9ddl:Z:ddl;md?eZZGd@dAeZeZ[GdBdCeZeZ\GdDdEeZ]GdFdGeZ^GdHdIeZ_GdJdKeZ`GdLdMeZaGdNdOeZby)P)gennetutil) json_decode json_encodeutf8_unicoderecursive_unicode native_str)HTTP1Connection) HTTPError) HTTPServer) HTTPHeadersHTTPMessageDelegateHTTPServerConnectionDelegateResponseStartLine)IOStream)Event)gen_logapp_logSimpleAsyncHTTPClient)AsyncHTTPTestCaseAsyncHTTPSTestCase AsyncTestCase ExpectLoggen_test)abstract_base_test) ApplicationRequestHandlerstream_request_body)closingcontextmanagerN)BytesIO)DictListcKgGfddt}t|d|}j|d{|j|jdj fS7,w)zaReads an HTTP response from `stream` and returns a tuple of its start_line, headers and body.c(eZdZdZfdZfdZy)"read_stream_body..Delegatec ||_||_yN)headers start_lineselfr,r+s b/mnt/ssd/data/python-lab/Trading/venv/lib/python3.12/site-packages/tornado/test/httpserver_test.pyheaders_receivedz3read_stream_body..Delegate.headers_received=s"DL(DOc(j|yr*)append)r.chunkchunkss r/ data_receivedz0read_stream_body..Delegate.data_receivedAs MM% r1c&jyr*)detachr.conns r/finishz)read_stream_body..Delegate.finishDs KKMr1N)__name__ __module__ __qualname__r0r6r;)r5r:sr/Delegater(<s ) ! r1r?TNr1)rr read_responser,r+join)streamr?delegater5r:s @@r/read_stream_bodyrD7skF &  64 (DzH   X &&&    0 0#((62B BB'srKrMrUr1r/rFrFMsG<*r1rFc eZdZddZdZdZy)HelloWorldRequestHandlerc||_yr*)expected_protocol)r.protocols r/ initializez#HelloWorldRequestHandler.initializeZs !)r1c|jj|jk7r td|j dy)Nzunexpected protocol Hello world)requestr[rZ Exceptionr;rLs r/getzHelloWorldRequestHandler.get]s2 << D$:$: :12 2 M"r1cf|jdt|jjzy)NzGot %d bytes in POST)r;lenr_rQrLs r/postzHelloWorldRequestHandler.postbs# *S1B1B-CCDr1N)http)r<r=r>r\rardrVr1r/rXrXYs*# Er1rXc0eZdZdZdZdZdZdZdZy)SSLTestc<tdttdfgS)NrIhttpsr[)rrXdictrLs r/rMzSSLTest.get_appgsS":D'rMrqrwr}rrrVr1r/rgrgfs"V 8C 2r1rgceZdZdZdZy)BadSSLOptionsTestcVt}|jtt|ddiy)Nkeyfilez/__missing__.crt ssl_options)rrKeyErrorr )r. applications r/test_missing_argumentsz(BadSSLOptionsTest.test_missing_argumentss.!m     "$67  r1ct}tjjt}tjj |d}tjj |d}|j ttft|ddi|j ttft||ddt|||dy) z6A missing SSL key should cause an immediate exception.ztest.crtztest.keycertfilez/__mising__.crtrz/__missing__.key)rrN) rospathdirname__file__rAr ValueErrorrr )r.r module_direxisting_certificate existing_keys r/test_missing_keyz"BadSSLOptionsTest.test_missing_keys"m WW__X. !ww||J Cww||J ;    !  #%67    !  0-    %9lS r1N)r<r=r>rrrVr1r/rrs   r1rceZdZdZy)MultipartTestHandlerc |j|jjd|jd|jjddj t |jjddddy)NzX-Header-Encoding-TestargumentfilesrrQ)headerrfilenamefilebody)r;r_r+ get_argumentrrrrLs r/rdzMultipartTestHandler.postsr ,,../GH --j9 LL..w7:CC$T\\%7%7%@%CF%KL   r1Nr<r=r>rdrVr1r/rrs r1rc<eZdZdZdZddZdZdZedZ y) HTTPConnectionTestc"dtfdtfgS)Nz /multipart/hello)rrXrLs r/ get_handlerszHTTPConnectionTest.get_handlerss / 0 / 0  r1c4t|jSr*)rrrLs r/rMzHTTPConnectionTest.get_apps4,,.//r1c tttj5jj fdj |j |tdt|zgz|z|z|zjj fd\}}}|cdddS#1swYyxYw)NcFjdjfSN 127.0.0.1)connect get_http_portr.rBsr/z.HTTPConnectionTest.raw_fetch..s T5G5G5I'JKr1zContent-Length: %dctSr*)rD)rBsr/rz.HTTPConnectionTest.raw_fetch..s (0r1) r!rsocketio_looprun_syncwriterArrc)r.r+rQnewliner,rBs` @r/ raw_fetchzHTTPConnectionTest.raw_fetchs Xfmmo. / 6 LL ! !K  LL W-ACI-M(N'OOP  )- (=(=0) %J   s BB88Ccn|jgddjdddjddjddjd dg }t|}|j d |d |j d|d |j d |d|j d|dy)N)sPOST /multipart HTTP/1.0s6Content-Type: multipart/form-data; boundary=1234567890sX-Header-encoding-test:  s-Content-Disposition: form-data; name=argumentr1ás --1234567890u;Content-Disposition: form-data; name="files"; filename="ó"ús--1234567890--érrórr)rrAencoderrur.rTdatas r/test_multipart_formz&HTTPConnectionTest.test_multipart_forms>>  LLDOO%#U\\^OO%%    (8$ 4>2 4 #34 4 #34 4 #34r1c`dD])}|jdgd|}|j|d+y)N)r sGET /hello HTTP/1.0r1)rrs)rru)r.rrTs r/ test_newlinesz HTTPConnectionTest.test_newliness9' 7G~~'=&>W~UH   X~ 6 7r1c#Kttj}|jd|jf|j dj gd|j d}|j|jd||j d|j d}|j|jd||j d}tjt|jd}|jt|d }|j|d |j!yw) Nrr)sPOST /hello HTTP/1.1sHost: 127.0.0.1sContent-Length: 1024sExpect: 100-continuesConnection: closer s HTTP/1.1 100 saaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa HTTP/1.1 200latin1Content-LengthsGot 1024 bytes in POST)rrrrrrA read_until assertTrue startswithrparser decode read_bytesintruclose)r.rBr first_line header_datar+rQs r/test_100_continuez$HTTPConnectionTest.test_100_continues' &--/*nnk4+=+=+?@AAll LL   &&{33 (894@ [!!,,W55   --o> K"--k:: ##J{/A/A(/K$LM&&s73C+D'EFF 89 sE E"N)r) r<r=r>rrMrrrrrrVr1r/rrs/ 0 5:7 r1rceZdZdZdZy) EchoHandlerc`|jt|jjyr*rr r_ argumentsrLs r/razEchoHandler.get# $T\\%;%;<=r1c`|jt|jjyr*rrLs r/rdzEchoHandler.post&rr1Nr<r=r>rardrVr1r/rr"s >>r1rc$eZdZdZdZdZdZy)TypeCheckHandlerc >i|_dtfdtfdtfdtfdtfdtfdtfdtfg}|D],\}}|j|t|j||.|jd t |jj jd t|jd t |jj jd t|jd t |jjjd t|jd t |jjjd jt|jdt |jjjd t|jdt |jjjd d ty)Nr|uriversion remote_ipr[hostrquery header_keyr header_value cookie_key cookie_valuearg_key arg_value) errorsstr check_typegetattrr_listr+keysvaluescookiesvaluerbytes)r.fieldsfield expected_types r/preparezTypeCheckHandler.prepare+s sO CL   #    SM SM cN  %+ P E= OOE74<<#? O P  d4<<+?+?+D+D+F&G&JCP T\\-A-A-H-H-J(KA(NPST  d4<<+?+?+D+D+F&G&JCP  D!5!5!?BHH#  4 (>(>(C(C(E#Fq#I3O  T$,,*@*@*G*G*I%J1%Ma%PRWXr1c|jd|jjt|j |j y)NrQ)rr_rQrrrrLs r/rdzTypeCheckHandler.postFs,  1 159 4;;r1c:|j|jyr*)rrrLs r/razTypeCheckHandler.getJs 4;;r1cPt|}||k7rd|d||j|<yy)Nz expected z, got )typer)r.nameobjr actual_types r/rzTypeCheckHandler.check_typeMs33i K '"+M?& NDKK  (r1N)r<r=r>rrdrarrVr1r/rr*sY6  Or1rceZdZdZy)PostEchoHandlercX|jt|jdy)Nr)echo)rrkr)r. path_argss r/rdzPostEchoHandler.postTs 4T..v678r1NrrVr1r/rrSs9r1rceZdZddZy)PostEchoGBKHandlerNc^ |jdS#t$rtdd|zwxYw)Ngbkzinvalid gbk bytes: %r)rr`r )r.rr s r/decode_argumentz"PostEchoGBKHandler.decode_argumentYs; B<<& & BC!85!@A A Bs,r*)r<r=r>rrVr1r/rrXsBr1rc6eZdZdZdZdZdZdZdZdZ y) HTTPServerTestc^tdtfdtfdtfdtfdtfgS)N/echo /typecheck //doubleslashz /post_utf8z /post_gbk)rrrrrrLs r/rMzHTTPServerTest.get_appas>+&/0 +./01    r1cz|jd}t|j}|j|ddgiy)Nz/echo?foo=%C3%A9foorrOrrQrurs r/test_query_string_encodingz)HTTPServerTest.test_query_string_encodingls6::018==) z23r1c||jd}t|j}|j|dddgiy)Nz/echo?foo=&foo=rr rs r/test_empty_query_stringz&HTTPServerTest.test_empty_query_stringqs8::/08==) Bx01r1c|jddd}t|j}|j|dgdgdy)Nrryz foo=&bar=r{r#)rbarr rs r/test_empty_post_parametersz)HTTPServerTest.test_empty_post_parametersvs=::gf;:G8==) tRD9:r1cddi}|jd|}t|j}|j|i|jddd|}t|j}|j|iy)NCookiefoo=barz/typecheck?foo=barr+rryr|rQr+r )r.r+rTrs r/ test_typeszHTTPServerTest.test_types{syY'::2G:D8==) r":: i 8==) r"r1c|jd}|jd|j|jt|jiy)Nr)rOrucoderrQrvs r/test_double_slashz HTTPServerTest.test_double_slashs?::o. hmm, X]]3R8r1c ddi}d}dD]}dD]}|j||5|j|}|r.tjj |jd}|j d|zd |d |z }|j t|jd |idddy#1swYxYw) Nz Content-Typez!application/x-www-form-urlencodeduchinese: 张三)rr)TF)encquoteasciiz/post_rysdata=)r|r+rQr) subTestrurllibrr4rOrurrQ)r.r+uni_textr3r4bin_textrTs r/test_post_encodingsz"HTTPServerTest.test_post_encodingss!#FG*" UC& U\\c\7 U's3H#)<<#5#5h#?#F#Fw#O#zz 3% '&1 * H $$[%?&(AST U U U U U Us BB55B> N) r<r=r>rMr!r$r'r-r1r:rVr1r/rr`s&  4 2 ; #9Ur1rceZdZdZfdZfdZdZdZdZdZ dZ d Z d Z d Z d Zd ZdZedZedZxZS)HTTPServerRawTestc&tdtfgS)NrrrrLs r/rMzHTTPServerRawTest.get_appsWk2344r1ctttj_j j fdy)NcZjjdjfSr)rBrrrLsr/rz)HTTPServerRawTest.setUp..s$DKK''d6H6H6J(KLr1)supersetUprrrBrrr.rJs`r/rBzHTTPServerRawTest.setUps3  v}}/   L r1cV|jjt| yr*)rBrrAtearDownrCs r/rEzHTTPServerRawTest.tearDowns  r1c|jj|jjt j d|j |jy)NMbP?seconds)rBrr add_timeoutdatetime timedeltastopwaitrLs r/test_empty_requestz$HTTPServerRawTest.test_empty_requests>    !3!3E!BDIIN r1cttdtj5jj dj jfd\}}}jd|jjd|jjd|jdddy#1swYyxYw)N.*Malformed HTTP request linelevelasdf c.tjSr*rDrBrLsr/rzFHTTPServerRawTest.test_malformed_first_line_response..(5r1HTTP/1.1r Bad Request rrloggingINFOrBrrrrurr0reasonr.r,r+rTs` r/"test_malformed_first_line_responsez4HTTPServerRawTest.test_malformed_first_line_responses w ?w|| T ? KK  o .,0LL,A,A5- )J   Z);); <   S*// 2   ]J,=,= > ? ? ? BB==Cc8ttdtj5|jj d|j jtjd|j|jdddy#1swYyxYw)NrQrRrT皙?rH rrr[r\rBrrrJrKrLrMrNrLs r/test_malformed_first_line_logz/HTTPServerRawTest.test_malformed_first_line_logsh w ?w|| T  KK  o . LL $ $X%7%7%Etyy Q IIK     A&BBc8ttdtj5|jj d|j jtjd|j|jdddy#1swYyxYw)Nz1.*Malformed HTTP message.*no colon in header linerRsGET / HTTP/1.0 asdf rbrHrcrLs r/test_malformed_headersz(HTTPServerRawTest.test_malformed_headerssm   ?,,   KK  ? @ LL $ $X%7%7%Etyy Q IIK   recttdtj5jj dj jfd\}}}jd|jjd|jjd|jdddy#1swYyxYw)Nz-.*Malformed HTTP message.*Invalid Host headerrRs!GET / HTTP/1.0 Host: foo bar c.tjSr*rVrLsr/rzLHTTPServerRawTest.test_invalid_host_header_with_whitespace..rWr1rXrrYrZr^s` r/(test_invalid_host_header_with_whitespacez:HTTPServerRawTest.test_invalid_host_header_with_whitespaces  DGLL ? KK  H I,0LL,A,A5- )J   Z);); <   S*// 2   ]J,=,= > ? ? ?r`cjjdjddjj fd\}}}j t |ddgiy)NsPOST /echo HTTP/1.1 Host: 127.0.0.1 Transfer-Encoding: chunked Content-Type: application/x-www-form-urlencoded 4 foo= 3 bar 0 rrc.tjSr*rVrLsr/rz=HTTPServerRawTest.test_chunked_request_body..$T[[1r1rr&rBrrrrrurr^s` r/test_chunked_request_bodyz+HTTPServerRawTest.test_chunked_request_bodyk   Gw ")- (=(= 1) % GX X.0@Ar1cjjdjddjj fd\}}}j t |ddgiy)NsPOST /echo HTTP/1.1 Host: 127.0.0.1 Transfer-Encoding: Chunked Content-Type: application/x-www-form-urlencoded 4 foo= 3 bar 0 rrc.tjSr*rVrLsr/rzBHTTPServerRawTest.test_chunked_request_uppercase.. rmr1rr&rnr^s` r/test_chunked_request_uppercasez0HTTPServerRawTest.test_chunked_request_uppercaserpr1cBjjdjddttdt j 5jjfd\}}}dddjdjy#1swY&xYw)NsbPOST /echo HTTP/1.1 Host: 127.0.0.1 Transfer-Encoding: chunked 1_a 1234567890abcdef1234567890 0 rrz.*invalid chunk sizerRc.tjSr*rVrLsr/rzJHTTPServerRawTest.test_chunked_request_body_invalid_size.."rWr1r) rBrrrrr[r\rrrur0r^s` r/&test_chunked_request_body_invalid_sizez8HTTPServerRawTest.test_chunked_request_body_invalid_sizes   Gw w 6gll K ,0LL,A,A5- )J  joo.   s #BBc"jjdttdtj 5j jfd\}}}dddjdjy#1swY&xYw)NscPOST /echo HTTP/1.1 Host: 127.0.0.1 Transfer-Encoding: chunked Transfer-encoding: chunked 2 ok 0 z/.*Unsupported Transfer-Encoding chunked,chunkedrRc.tjSr*rVrLsr/rzNHTTPServerRawTest.test_chunked_request_body_duplicate_header..<rWr1r rBrrrr[r\rrrur0r^s` r/*test_chunked_request_body_duplicate_headerz.RrWr1rryr^s` r/7test_chunked_request_body_unsupported_transfer_encodingzIHTTPServerRawTest.test_chunked_request_body_unsupported_transfer_encoding@s{    DGLL  -1LL,A,A5- )J  joo.   r{c"jjdttdtj 5j jfd\}}}dddjdjy#1swY&xYw)NsZPOST /echo HTTP/1.1 Host: 127.0.0.1 Transfer-Encoding: chunked Content-Length: 2 2 ok 0 z8.*Message with both Transfer-Encoding and Content-LengthrRc.tjSr*rVrLsr/rzbHTTPServerRawTest.test_chunked_request_body_transfer_encoding_and_content_length..krWr1rryr^s` r/>test_chunked_request_body_transfer_encoding_and_content_lengthzPHTTPServerRawTest.test_chunked_request_body_transfer_encoding_and_content_lengthVs|     F,,   -1LL,A,A5- )J   joo.  r{c #DKgd}|D]\}}|j|5tttj5}t t dt j5|jd|jf|jttjd|djdd |jdddddddddy#1swYxYw#1swY xYw#1swYxYww) N)) alphabeticr) leading plus+10)zinternal underscore1_0)r z(.*Only integer Content-Length is allowedrRrz POST /echo HTTP/1.1 Host: 127.0.0.1 Content-Length: zs Connection: close 1234567890  z )r6r!rrrrr[r\rrrrtextwrapdedentrread_until_close)r. test_casesr rrBs r/test_invalid_content_lengthz-HTTPServerRawTest.test_invalid_content_lengthos  & 4KD%4( 4'(6==?2K*L 4PV>!,,4 !..+t7I7I7K)LMMLL$OO%-.3G4!  &gdF3  !1133)4 4 4 4 444 4 4 4 4sMD 'D!D)A7C; D(D0 D ;D DD DD D c #Kddg}|D]\}}}|!tt|tj}ntd}|}|j |5t ttj5}|5|jd|jf|jt|d|jd}|j|jd |zd |d |dddddddddy#1swYxYw#1swY!xYw#1swY6xYww) N)FOOiN)zFOO,BARrrQrRc3Kdywr*rVrVr1r/ noop_contextz.noop_contexts s)r|rz# /echo HTTP/1.1 Host:127.0.0.1 rs HTTP/1.1 %dzexpected status code z in )rrr[r\r"r6r!rrrrrrrrr) r.rr|r0log_msgrrrBresps r/test_invalid_methodsz&HTTPServerRawTest.test_invalid_methodssD  = &0  !FD'"&ww||L   *^  F + 12 6<  nnk43E3E3G%HII TVH,U"VWX#..{;;OONT$9:+D6dX>           sOAE'D5D)A>D D) D5 ED& "D))D2 .D55D? :E)r<r=r>rMrBrErOr_rdrgrjrorsrvrzr~rrrr __classcell__rJs@r/r<r<st5  ? ?B2B2/./4/,/244Br1r<c:eZdZGddeZdZdZdZdZy) XHeaderTestceZdZdZy)XHeaderTest.Handlerc|jd|jj|jt |jj |jj y)Nrequest-version)rremote_protocol) set_headerr_rrrkrr[rLs r/razXHeaderTest.Handler.getsI OO-t||/C/C D JJ"ll44$(LL$9$9 r1Nr<r=r>rarVr1r/rKrs r1rKctddgS)NTz5.5.5.5)xheaderstrusted_downstreamrkrLs r/get_httpserver_optionsz"XHeaderTest.get_httpserver_optionssTykBBr1c|j|jdddddi}|j|jd|ddddi}|j|jd|dddd i}|j|jd|dd dd i}|j|jd|dd dd i}|j|jd|dddd i}|j|jd|dddd i}|j|jd|ddy)NrIrrz X-Real-IP4.4.4.4r+X-Forwarded-Forz127.0.0.1, 4.4.4.4z2620:0:1cfe:face:b00c::3z::1, 2620:0:1cfe:face:b00c::3z4.4.4.4