K iddlZddlZddlZddlZddlZddlZddlZddlZddlm Z ddl m Z ddl m Z mZddlmZddlmZmZddlmZddlmZdd lmZdd lmZmZdd lmZmZm Z m!Z!dd l"m#Z#m$Z$ ddl%Z dd l&m'Z'ddl%m*Z*m+Z+m,Z,m-Z- ddl m.Z.Gdde*Z/Gdde/Z0Gdde/Z1Gdde/Z2Gdde/Z3Gdde$Z4Gdde$Z5Gdde/Z6Gd d!e/Z7Gd"d#e/Z8Gd$d%e/Z9Gd&d'e/Z:Gd(d)e/Z;Gd*d+e/Z<Gd,d-e/Z=Gd.d/e/Z>Gd0d1e/Z?Gd2d3eZ@Gd4d5e@ZAGd6d7e/ZBGd8d9e@ZCeGd:d;e@ZDeGd<d=eDZEGd>d?eEZFGd@dAeEZGGdBdCeEZHGdDdEeDZIeGdFdGejZKGdHdIeKZLeje.dudJGdKdLeKZNGdMdNe@ZOGdOdPe@ZPGdQdRe@ZQGdSdTejZRGdUdVe@ZSGdWdXe@ZTy#e($rejRwxYw#e($rdZ.YwxYw)YN)Future)gen) HTTPError HTTPRequest)Event)gen_logapp_log)ResolverSimpleAsyncHTTPClient) DictLoader)abstract_base_testignore_deprecation)AsyncHTTPTestCasegen_testbind_unused_port ExpectLog) ApplicationRequestHandler_websocket_mask_python)WebSocketHandlerwebsocket_connectWebSocketErrorWebSocketClosedError)speedupsc$eZdZdZddZdZdZy)TestWebSocketHandlerzBase class for testing handlers that exposes the on_close event. This allows for tests to see the close code and reason on the server side. Nc ||_||_yN close_futurecompression_options)selfr"r#s a/mnt/ssd/data/python-lab/Trading/venv/lib/python3.12/site-packages/tornado/test/websocket_test.py initializezTestWebSocketHandler.initialize6s(#6 c|jSr r#r$s r%get_compression_optionsz,TestWebSocketHandler.get_compression_options:s'''r'c|j2|jj|j|jfyyr )r" set_result close_code close_reasonr*s r%on_closezTestWebSocketHandler.on_close=s6    (    ( ($//4;L;L)M N )r'NN)__name__ __module__ __qualname____doc__r&r+r0r'r%rr.s7(Or'rc0eZdZejdZy) EchoHandlerc#K |j|t|ty#tj$rYyt $rYywxYwwr ) write_message isinstancebytesasyncioCancelledErrorrr$messages r% on_messagezEchoHandler.on_messageCsG $$Wj%.HI I%%  #   s/A "'A AA AA AA N)r2r3r4r coroutinerAr6r'r%r8r8Bs]]r'r8ceZdZdZy)ErrorInOnMessageHandlercddz y)Nrr6r?s r%rAz"ErrorInOnMessageHandler.on_messageNs  Ar'Nr2r3r4rAr6r'r%rDrDMsr'rDceZdZdZy) HeaderHandlerc(tj|jdtj|jdtj|jddtj|j ddtj|j d|j|jg}|D]} |td|j|jjjddy#t$rYXwxYw) NzThis should not workzhttp://localhost/elsewhereX-Test ChocolateChipizdid not get expected exception) functoolspartialwriteredirect set_header set_cookie set_statusflushfinish Exception RuntimeErrorr:requestheadersget)r$methods_to_testmethods r%openzHeaderHandler.openSs   djj*@ A   dmm-I J   doox <   doo{F C   doos 3 JJ KK & F  @AA   4<<//33HbAB   s<D DDNr2r3r4r_r6r'r%rIrIRsCr'rIceZdZdZdZy)HeaderEchoHandlerc(|jddy)NX-Extra-Response-HeaderExtra-Response-Value)rSr*s r%set_default_headersz%HeaderEchoHandler.set_default_headersis 13IJr'c|jjjD]7\}}|jj ds&|j ||9y)Nzx-test)rZr[get_alllower startswithrS)r$kvs r%preparezHeaderEchoHandler.preparelsJLL((002 &DAqwwy##H-1% &r'N)r2r3r4rfrmr6r'r%rbrbhs K&r'rbceZdZdZy)NonWebSocketHandlerc&|jdy)Nok)rQr*s r%r\zNonWebSocketHandler.getss 4r'Nr2r3r4r\r6r'r%rororsr'roceZdZdZy)RedirectHandlerc&|jdy)N/echo)rRr*s r%r\zRedirectHandler.getxs gr'Nrrr6r'r%rtrtwsr'rtceZdZdZy)CloseReasonHandlerc6d|_|jddy)NFgoodbye)on_close_calledcloser*s r%r_zCloseReasonHandler.open}s$ 4#r'Nr`r6r'r%rxrx|$r'rxc6eZdZejdZdZy)AsyncPrepareHandlerc#0Ktjywr )rmomentr*s r%rmzAsyncPrepareHandler.preparesjjsc&|j|yr r:r?s r%rAzAsyncPrepareHandler.on_messages 7#r'N)r2r3r4rrBrmrAr6r'r%rrs]]$r'rceZdZdZy)PathArgsHandlerc&|j|yr r)r$args r%r_zPathArgsHandler.opens 3r'Nr`r6r'r%rr r'rcBeZdZfdZej dZxZS)CoroutineOnMessageHandlerc 2t|di|d|_yNrr6superr&sleepingr$kwargs __class__s r%r&z$CoroutineOnMessageHandler.initialize $V$ r'c#K|jdkDr|jd|xjdz c_tjd|xjdzc_|j|ywNrz%another coroutine is already sleepingrF{Gz?rr:rsleepr?s r%rAz$CoroutineOnMessageHandler.on_messagesY ==1    F G  iio   7#sA4A6)r2r3r4r&rrBrA __classcell__rs@r%rrs  ]]$$r'rceZdZdZy)RenderMessageHandlercH|j|jd|y)N message.html)r@)r: render_stringr?s r%rAzRenderMessageHandler.on_messages  4--ng-NOr'NrGr6r'r%rrsPr'rc*eZdZfdZdZdZxZS)SubprotocolHandlerc 2t|di|d|_yNFr6)rr&select_subprotocol_calledrs r%r&zSubprotocolHandler.initializes $V$).&r'cJ|jr tdd|_d|vryy)Nzselect_subprotocol called twiceT goodproto)rrX)r$ subprotocolss r%select_subprotocolz%SubprotocolHandler.select_subprotocols-  ) )=> >)-& , &r'cn|js td|jd|jzy)Nzselect_subprotocol not calledzsubprotocol=%s)rrXr:selected_subprotocolr*s r%r_zSubprotocolHandler.opens1--;< < +d.G.GGHr')r2r3r4r&rr_rrs@r%rrs/Ir'rcHeZdZfdZej dZdZxZS)OpenCoroutineHandlerc @t|di|||_d|_yr)rr&test open_finished)r$rrrs r%r&zOpenCoroutineHandler.initializes" $V$ "r'c#K|jjjtjdd|_yw)NrT)r message_sentwaitrrrr*s r%r_zOpenCoroutineHandler.opens6ii$$))++ii!sAAcT|js td|jdy)Nz&on_message called before open finishedrq)rrXr:r?s r%rAzOpenCoroutineHandler.on_messages%!!DE E 4 r') r2r3r4r&rrBr_rArrs@r%rrs%#  ]]"" !r'rceZdZdZy)ErrorInOpenHandlerctd)Nboom)rXr*s r%r_zErrorInOpenHandler.opens r'Nr`r6r'r%rrrr'rceZdZdZy)ErrorInAsyncOpenHandlerc^Ktjdd{td7w)Nrr)r=rrXr*s r%r_zErrorInAsyncOpenHandler.opens(mmA s -+-Nr`r6r'r%rrs r'rceZdZdZy)NoDelayHandlercH|jd|jdy)NThello) set_nodelayr:r*s r%r_zNoDelayHandler.opens  7#r'Nr`r6r'r%rrr~r'rcLeZdZfdZfdZej dZxZS)WebSocketBaseTestCasec0t|g|_yr )rsetUpconns_to_closer$rs r%rzWebSocketBaseTestCase.setUps   r'cd|jD]}|jt| yr )rr}rtearDown)r$connrs r%rzWebSocketBaseTestCase.tearDowns,'' D JJL  r'c+Ktd|j|fzfi|}|jj|t j |w)Nzws://127.0.0.1:%d%s)r get_http_portrappendrReturn)r$pathrwss r% ws_connectz WebSocketBaseTestCase.ws_connectsW$ !T%7%7%94$@ @ DJ   ""2&jjnsAA) r2r3r4rrrrBrrrs@r%rrs%!  ]]r'rc"eZdZdZdZfdZdZdZdZe dZ dZ e d Z e d Z e d Ze d Ze d Ze dZe dZe dZe dZe dZe dZe dZe dZe dZe dZe dZe dZe dZe dZe dZe dZ e dZ!e dZ"e d Z#e d!Z$e d"Z%e d#Z&e d$Z'e d%Z(xZ)S)& WebSocketTestct|_tdtt |jfdt fdt fdtt |jfdtt |jfdtt |jfdtt |jfd tt |jfd tt |jfd tt |jfd tt |jfd tt |jfdt t |j|fdt"fdt$fdt&fgt)ddiS)Nrv)r"/non_ws /redirectz/headerz /header_echo /close_reason/error_in_on_message/async_preparez/path_args/(.*) /coroutine/render /subprotocol/open_coroutine)r"r/error_in_open/error_in_async_open/nodelayrz{{ message }})template_loader)rr"rr8dictrortrIrbrxrDrrrrrrrrrr r*s r%get_appzWebSocketTest.get_appsv"H+t9J9J'KL/0o.M4T=N=N+OP"%d&7&78 $&d&7&78 ++d&7&78 %'d&7&78 &#d&7&78 !-d&7&78 0$DDUDU2VW"&d&7&78 &(d&7&7dC "#56')@A^,a1 d'8N'OPg4 4 r'ctSr r r*s r%get_http_clientzWebSocketTest.get_http_client&s $&&r'c^t|tjj yr )rrr_template_loadersclearrs r%rzWebSocketTest.tearDown*s  ((..0r'c^|jd}|j|jdy)Nrvfetch assertEqualcoder$responses r%test_http_requestzWebSocketTest.test_http_request.s$::g& ,r'cj|jddddd}|j|jdy)NrvUpgrade WebSocket13 ConnectionrzSec-WebSocket-Versionr[rrrs r%test_missing_websocket_keyz(WebSocketTest.test_missing_websocket_key3<:: '&)-  ,r'cj|jddddd}|j|jdy)Nrvrr12rrirrs r%test_bad_websocket_versionz(WebSocketTest.test_bad_websocket_version>rr'c#K|jd}|jd|j}|j|dyw)Nrvrrr: read_messagerr$rrs r%test_websocket_genz WebSocketTest.test_websocket_genIsG??7+ +w''** 7+A Act5tdjzjdddj j }|j d|jjj j }j|djjfd|jj y#1swYxYw)Nws://127.0.0.1:%d/echo)callbackrc$jSr )stop)fr$s r%z8WebSocketTest.test_websocket_callbacks..Zs diikr') rrrrrresultr:rrr"add_done_callbackr}rs` r%test_websocket_callbacksz&WebSocketTest.test_websocket_callbacksPs  !  (4+=+=+??$))  YY[   ! !  "99;%%' 7+ ++,AB     s )C66C?c#K|jd}|jdd|j}|j|dyw)Nrvshello Tbinaryrrs r%test_binary_messagez!WebSocketTest.test_binary_message^sI??7+ + t4** =1rc#K|jd}|jd|j}|j|dywNrvuhello érrs r%test_unicode_messagez"WebSocketTest.test_unicode_messageesD??7+ + (** >2A A c#K|jd}|j|jt5|j ddddy#1swYyxYwwr)rr} assertRaisesrr:r$rs r%)test_error_in_closed_client_write_messagez7WebSocketTest.test_error_in_closed_client_write_messagelsQ??7+ +    3 4 -   ^ , - - -s9A"A A"AA"c#K|jd}|jd|j}|j|dyw)Nrrz hellorrs r%test_render_messagez!WebSocketTest.test_render_messagessD??9- - !** >2rc#K|jd}|jdttd5|j }ddd|j y#1swYxYww)NrrUncaught exception)rr:rr r assertIsNoners r%test_error_in_on_messagez&WebSocketTest.test_error_in_on_messagezsb??#9: : ! w 4 5 /__..H / (# / /s5A0A$ A0$A-)A0c#K|jt5}|jdddd|jjj dy#1swY0xYww)Nz /notfoundi)rrrr exceptionr)r$cms r%test_websocket_http_failz&WebSocketTest.test_websocket_http_failsS   y ) /R//+. . / **C0 / /sA'A/A'A$ A'c#K|jt5|jddddy#1swYyxYww)Nr)rrrr*s r%test_websocket_http_successz)WebSocketTest.test_websocket_http_successs7   ~ . -//), , - - -A5 A>Ac#K|jt5|jddddy#1swYyxYww)Nr)rrrr*s r%test_websocket_http_redirectz*WebSocketTest.test_websocket_http_redirects7   y ) ///+. . / / /r%c# Kt\}}|j|jt5t t dd5t d|zdddddddy#1swYxYw#1swYyxYww)Nz.*F)requiredzws://127.0.0.1:%d/i)connect_timeout)rr}rIOErrorrrr)r$sockports r%test_websocket_network_failz)WebSocketTest.test_websocket_network_failsz%' d   w ' 7D59 '(4/       s43BA8A,A8# B,A5 1A88B=Bc#Ktjtd|jz5}|j d|j d|j j dddy#1swYyxYww)Nrrworld) contextlibclosingrrr:streamr}rs r%"test_websocket_close_buffered_dataz0WebSocketTest.test_websocket_close_buffered_dataso   $%=@R@R@T%TU U      W %   W % IIOO     s2B=A:1 B:B?Bc #Ktjttd|j zddi5}|j }|j |ddddy#1swYyxYww)Nzws://127.0.0.1:%d/headerrKrr)r1r2rrrrrrs r%test_websocket_headersz$WebSocketTest.test_websocket_headerss|  '2T5G5G5II!)7 3  0__..H   Xw / 0 0 0s?A;%A/& A;/A84A;c #^Ktjttd|j zddi5}|j |j jdd|j |j jdddddy#1swYyxYww)Nzws://127.0.0.1:%d/header_echoz X-Test-Hellorrrdre)r1r2rrrrr[r\rs r%test_websocket_header_echoz(WebSocketTest.test_websocket_header_echos   '7$:L:L:NN!/ 9     RZZ^^N;W E    89;Q    s?B-AB! B-!B*&B-c#0K|jd}|j}|j|d|j|jd|j|j d|j \}}|j|dyw)Nrrzr{)rrassertIsrr.r/r")r$rmsgrreasons r%test_server_close_reasonz&WebSocketTest.test_server_close_reasons???3 3OO%% c4  - )4!... f t$sBBc#K|jd}|jdd|j\}}|j|d|j|dyw)Nrvrzr{)rr}r"r)r$rrr<s r%test_client_close_reasonz&WebSocketTest.test_client_close_reasonsW??7+ + y!!... f t$ +AAc#K|jd}|j}|j|d|jt5|j ddddy#1swYyxYww)Nrr)rrr:rrr:)r$rr;s r%test_write_after_closez$WebSocketTest.test_write_after_closese???3 3OO%% c4   3 4 &   W % & & &sA A6A*! A6*A3/A6c#K|jd}|jd|j}|j|dyw)Nrrrr$rress r%test_async_preparez WebSocketTest.test_async_preparesG??#34 4 !OO%% g&rc#zK|jd}|j}|j|dyw)Nz/path_args/hellorrrrrDs r%test_path_argszWebSocketTest.test_path_argss7??#56 6OO%% g&9;c#K|jd}|jd|jd|j}|j|d|j}|j|dyw)Nrhello1hello2rrDs r%test_coroutinezWebSocketTest.test_coroutinesw??<0 0x((x((OO%% h'OO%% h'BBc#.K|j}d|z}dd|zi}tjtt ||5}|j d|j }|j|ddddy#1swYyxYww)NrOriginzhttp://127.0.0.1:%drrrr1r2rrr:rrr$r-urlr[rrs r%test_check_origin_valid_no_pathz-WebSocketTest.test_check_origin_valid_no_paths!!#&-2T9:   $[g%FG G  0    W %__..H   Xw /  0 0 0AB 6B  B BBc#.K|j}d|z}dd|zi}tjtt ||5}|j d|j }|j|ddddy#1swYyxYww)NrrQzhttp://127.0.0.1:%d/somethingrrrRrSs r%!test_check_origin_valid_with_pathz/WebSocketTest.test_check_origin_valid_with_paths!!#&-Bc#K|j}tjd|}|Dchc]}|d }}tj|vr|j dyd|z}ddi}|j t5}tt||ddd|jjjdycc}w#1swY5xYww) N localhostrz"localhost does not resolve to ipv4zws://localhost:%d/echorQzhttp://subtenant.localhostrrZ) rr resolvesocketAF_INETskipTestrrrrrr r)r$r-addrinfoaddrfamiliesrTr[r!s r%$test_check_origin_invalid_subdomainsz2WebSocketTest.test_check_origin_invalid_subdomains8s!!# "++K>>(01DG11 >> ) MM> ? &-9:   y ) GR#KW$EF F G **C02 G Gs(1C C ACC4CCCc#K|jdddg}|j|jd|j}|j|dyw)Nrbadprotor)rzsubprotocol=goodproto)rrrrrDs r%test_subprotocolszWebSocketTest.test_subprotocolsOs`?? *k)B#   00+>OO%% 56sAAc#K|jd}|j|jd|j}|j |dyw)Nrzsubprotocol=None)rr:rrrrDs r%test_subprotocols_not_offeredz+WebSocketTest.test_subprotocols_not_offeredXsK??>2 2 b--t4OO%% 01sAAc#Kt|_|jd}|jd|jj |j }|j |dyw)Nrrrq)rrrr:setrrrDs r%test_open_coroutinez!WebSocketTest.test_open_coroutine_sd!G??#45 5w'' OO%% d#sA5A7c#Kttd5|jd}|j}ddd|j y#1swYxYww)Nrrrr rrrrDs r%test_error_in_openz WebSocketTest.test_error_in_openhsV w 4 5 *'788B))C * # * *A&AAAAc#Kttd5|jd}|j}ddd|j y#1swYxYww)NrrrsrDs r%test_error_in_async_openz&WebSocketTest.test_error_in_async_openosV w 4 5 *'=>>B))C * # * *ruc#zK|jd}|j}|j|dyw)NrrrHrDs r% test_nodelayzWebSocketTest.test_nodelayvs6??:. .OO%% g&rJ)*r2r3r4rrrrrrrrr rrrrrr"r$r'r.r4r6r8r=r?rBrFrIrNrUrXr]r_rirlrnrqrtrwryrrs@r%rrs6 p'1- - -,, 22 33 -- 33 $$11 --// 0 0& % %,,&&'''' (( 0 0 0 011 1 111,7722 $$  ''r'rc$eZdZfdZdZxZS)NativeCoroutineOnMessageHandlerc 2t|di|d|_yrrrs r%r&z*NativeCoroutineOnMessageHandler.initialize~rr'cK|jdkDr|jd|xjdz c_tjdd{|xjdzc_|j|y7+wrrr?s r%rAz*NativeCoroutineOnMessageHandler.on_messagesa ==1    F G  iio   7# sAA>A<,A>)r2r3r4r&rArrs@r%r{r{}s $r'r{c"eZdZdZedZy)WebSocketNativeCoroutineTestc&tdtfgS)N/native)rr{r*s r%rz$WebSocketNativeCoroutineTest.get_appsY(GHIJJr'c#K|jd}|jd|jd|j}|j|d|j}|j|dyw)NrrLrMrrDs r%test_native_coroutinez2WebSocketNativeCoroutineTest.test_native_coroutinesw??9- -x((x((OO%% h'OO%% h'rON)r2r3r4rrrr6r'r%rrsK((r'rcVeZdZdZdZdZdZdededdfd Ze d Z e d Z y) CompressionTestMixinzHello world. Testing 123 123c Gddt}tdtt|j fd|t|j fgS)Nc"eZdZedZdZy)4CompressionTestMixin.get_app..LimitedHandlercy)Nr6r*s r%max_message_sizezECompressionTestMixin.get_app..LimitedHandler.max_message_sizesr'cJ|jtt|yr )r:strlenr?s r%rAz?CompressionTestMixin.get_app..LimitedHandler.on_messages""3s7|#45r'N)r2r3r4propertyrrAr6r'r%LimitedHandlerrs    6r'rrvr)/limited)rrr8rget_server_compression_options)r$rs r%rzCompressionTestMixin.get_apps_ 61 6T-P-P-RS "T-P-P-RS   r'cyr r6r*s r%rz3CompressionTestMixin.get_server_compression_optionsr'cyr r6r*s r%get_client_compression_optionsz3CompressionTestMixin.get_client_compression_optionsrr'bytes_in bytes_outreturnNctr NotImplementedErrorr$rrs r%verify_wire_bytesz&CompressionTestMixin.verify_wire_bytes !##r'c#hK|jd|j}tdD]K}|j|j|j }|j ||jM|j |jjt|jdz|j |jjt|jdz|j|jj|jjyw)Nrvr))rrranger:MESSAGErrprotocol_message_bytes_outr_message_bytes_inr_wire_bytes_in_wire_bytes_outr$rirs r%test_message_sizesz'CompressionTestMixin.test_message_sizess?? )L)L)N#   q 5A   T\\ *__..H   Xt|| 4 5 77T\\9JQ9NO 66DLL8IA8MN r{{992;;;V;VWsD0D2c#$K|jd|j}|jd|j}|j |d|jd|j}|j |yw)Nrr)ڀaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa128aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa)rrr:rrrrs r%test_size_limitz$CompressionTestMixin.test_size_limits?? D,O,O,Q#   #** 5) $** (#sBB) r2r3r4rrrrintrrrrr6r'r%rrsZ,G 0$#$#$$$ X X $ $r'rceZdZdZdZy)UncompressedTestMixinzESpecialization of CompressionTestMixin when we expect no compression.c|j|dt|jdzz|j|dt|jdzzy)Nr)rrrrs r%rz'UncompressedTestMixin.verify_wire_bytessH AT\\):Q)>$?@ 1DLL(9A(=#>?r'N)r2r3r4r5rr6r'r%rrs O@r'rc eZdZy)NoCompressionTestN)r2r3r4r6r'r%rrsr'rceZdZdZy)ServerOnlyCompressionTestciSr r6r*s r%rz8ServerOnlyCompressionTest.get_server_compression_options r'N)r2r3r4rr6r'r%rrr'rceZdZdZy)ClientOnlyCompressionTestciSr r6r*s r%rz8ClientOnlyCompressionTest.get_client_compression_optionsrr'N)r2r3r4rr6r'r%rrrr'rceZdZdZdZdZy)DefaultCompressionTestciSr r6r*s r%rz5DefaultCompressionTest.get_server_compression_optionsrr'ciSr r6r*s r%rz5DefaultCompressionTest.get_client_compression_optionsrr'c|j|dt|jdzz|j|dt|jdzz|j||dzy)Nrrr ) assertLessrrrrs r%rz(DefaultCompressionTest.verify_wire_bytessX  1DLL(9A(=#>? !s4<<'81'<"=> HrM2r'N)r2r3r4rrrr6r'r%rrs3r'rc@eZdZdededefdZdej fdZy)MaskFunctionMixinmaskdatarctr rr$rrs r%rzMaskFunctionMixin.mask rr'r$c|j|jddd|j|jddd|j|jddd|j|jddd |j|jd d d |j|jd ddy)Nsabcdr'bs54321sTVPVPsZXCVs98765432sc`t`olpdssssss)rrr*s r% test_maskzMaskFunctionMixin.test_mask s 7C0#6 7D17; 7H5x@ 7K8+F  II)+F G '   II)+F G ' r'N)r2r3r4r<rtypingAnyrr6r'r%rrs,$$e$$   r'rceZdZdZy)PythonMaskFunctionTestct||Sr rrs r%rzPythonMaskFunctionTest.masks%dD11r'Nr2r3r4rr6r'r%rrs2r'rz#tornado.speedups module not presentceZdZdZy)CythonMaskFunctionTestc.tj||Sr )rwebsocket_maskrs r%rzCythonMaskFunctionTest.mask%s&&tT22r'Nrr6r'r%rr#s3r'rc"eZdZdZedZy)ServerPeriodicPingTestcBGddt}td|fgddS)NceZdZdZy)3ServerPeriodicPingTest.get_app..PingHandlerc&|jdy)Ngot pongrr$rs r%on_pongz;ServerPeriodicPingTest.get_app..PingHandler.on_pong,"":.r'N)r2r3r4rr6r'r% PingHandlerr+ /r'r/rr)websocket_ping_intervalwebsocket_ping_timeoutrrr$rs r%rzServerPeriodicPingTest.get_app*s/ /. /;  $(#$  r'c#K|jd}tdD]&}|j}|j|d(yw)Nrrr)rrrrrs r%test_server_pingz'ServerPeriodicPingTest.test_server_ping5sI??3' 'q 3A__..H   Xz 2 3sA A N)r2r3r4rrrr6r'r%rr)s  33r'rc"eZdZdZedZy)ClientPeriodicPingTestc<Gddt}td|fgS)NceZdZdZy)3ClientPeriodicPingTest.get_app..PingHandlerc&|jdy)Ngot pingrrs r%on_pingz;ClientPeriodicPingTest.get_app..PingHandler.on_pingArr'Nr2r3r4rr6r'r%rr@rr'rrrrs r%rzClientPeriodicPingTest.get_app?s$ /. /S+./00r'c#K|jddd}tdD]&}|j}|j|d(|j yw)Nrrr ping_interval ping_timeoutrr)rrrrr}rs r%test_client_pingz'ClientPeriodicPingTest.test_client_pingFsZ??3d?K Kq 3A__..H   Xz 2 3  r@N)r2r3r4rrrr6r'r%rr>s1r'rc2eZdZdZedZedZy)ServerPingTimeoutTestcXg|_|Gfddt}td|fg}|S)Nc$eZdZdfd ZxZS)2ServerPingTimeoutTest.get_app..PingHandlerc~j|_|jj|t| ||S)Nr!)handlersrrr&)r$r"r#rrs r%r&z=ServerPingTimeoutTest.get_app..PingHandler.initializeUs= $   $$T*w)!-CV*r'r1)r2r3r4r&r)rrs@r%rrTs   r'rr)rrr)r$rapprs @r%rzServerPingTimeoutTest.get_appPs502  . C-./ r'cd_d_fd}|jjj_y)z1Optionally suppress the client's "pong" response.Frc0dtdtffd }|S)Nopcodercd|dk(r"xjdz c_jry||S)N rF)pongs_received drop_pongs)rrfcnrs r%_innerzCServerPingTimeoutTest.install_hook..wrapper.._innerhs2S=%%*%}}64((r')rr<)r r rs` r%wrapperz3ServerPingTimeoutTest.install_hook..wrappergs )s )% )Mr'N)r r r_handle_message)rrs` r% install_hookz"ServerPingTimeoutTest.install_hook`s6  '.bkk.I.I&J #r'c#Kd}|jd||dz }|j||jd}tdD]g}t j ||j |j|j |j|jjgJ|j|jdd|_ t j |dz|j|jd |j|jd |j|jjd yw) Ng?rrrTg?izping timed out)rrrrrrrr.r/rassertGreaterEqualr r r)r$intervalrhandler_s r%test_client_ping_timeoutz.ServerPingTimeoutTest.test_client_ping_timeoutus5?? xhl#   "--"q 2A))H% %   g00 1   g22 3;;))1 11 2  1 115 ii3'' ++T2 --/?@ //6s B-E0BEN)r2r3r4r staticmethodrrrr6r'r%rrOs1 KK(%7%7r'rceZdZdZy)PingCalculationTestc hddlm}tjddddddtjj}d}tjddddd d tjj}|j |j ||j }|j|d y) Nr)WebSocketProtocol13irFr)tzinfor  ;6)last_ping_timernowr)tornado.websocketrdatetimetimezoneutcping_sleep_time timestampr)r$rr#rr" sleep_times r%test_ping_sleep_timez(PingCalculationTest.test_ping_sleep_times9aB1X=N=N=R=RS!** !QB8+<+<+@+@ )88)335 9 Q'r'N)r2r3r4r+r6r'r%rrs (r'rc"eZdZdZedZy)ManualPingTestc<Gddt}td|fgS)NceZdZdZy)+ManualPingTest.get_app..PingHandlercF|j|t|ty)Nr)r:r;r<rs r%rz3ManualPingTest.get_app..PingHandler.on_pings""4 40G"Hr'Nrr6r'r%rr0s Ir'rrrrs r%rzManualPingTest.get_apps& I. IS+./00r'c#HK|jd}|jt|jd|jd|j }|j |d|jd|j }|j |dyw)Nr~aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaarshellos binary hello)rr ValueErrorpingrr)r$rresps r%test_manual_pingzManualPingTest.test_manual_pings??3' ' *bggy9 __&& x(  __&& /sB B"N)r2r3r4rrr7r6r'r%r-r-s1 0 0r'r-c"eZdZdZedZy)MaxMessageSizeTestc*tdtfgdS)Nrr)websocket_max_message_size)rr8r*s r%rzMaxMessageSizeTest.get_appsS+./DQQr'c#K|jd}d}|j||j}|j|||j|dz|j}|j |d|j|j d|j|j dyw)Nraaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabizmessage too big)rr:rrr:r.r/)r$rr;r6s r%test_large_messagez%MaxMessageSizeTest.test_large_messages??3' ' __&& s# s#__&& dD! - *;N)r2r3r4rrr?r6r'r%r9r9sR==r'r9)Ur=r1r%rOrc tracebackrunittesttornado.concurrentrtornadortornado.httpclientrr tornado.locksr tornado.logrr tornado.netutilr tornado.simple_httpclientr tornado.templater tornado.test.utilrrtornado.testingrrrr tornado.webrrr$ tornado.utilr ImportError print_excrrrrrrr8rDrIrbrortrxrrrrrrrrrrrr{rrrrrrrTestCaserrskipIfrrrrrr-r9r6r'r%rRs  %5($;'DTT3  3 O+O(&2 C(C,&,&. n $-$ $.$ * $ 4 $P/P I-I&!/!$ -  2 $)$ -&M')M'` $&: $ (#8 ( @$0@$@$F@0@@ -  5  5 31 3 ))  .2.2 T!#HI3.3J3 323*2"L71L7^((++("0*00=.=] I  "Hs2 I I2I/2I=<I=