K iSddlmZddlmZddlmZddlmZddlmZm Z m Z m Z m Z ddl mZmZddlmZddlmZmZdd lmZdd lmZmZdd lmZdd lmZdd lmZm Z m!Z!m"Z"m#Z#m$Z$ddl%m&Z&m'Z'm(Z(m)Z)ddl*m+Z+m,Z,ddl-Z-ddl.Z.ddl/Z/ddl0Z0ddl1Z1ddl2Z2ddl3Z3ddl4Z4ddl5Z5ddl6Z6ddl7m8Z8ddl7Z7dZ9Gdde+Z:e)Gdde!Z;e)Gdde!ZGdde e;Z?Gdd e=Z@Gd!d"e=ZAGd#d$e=ZBGd%d&e!ZCGd'd(e!ZDGd)d*e!ZEe&Gd+d,e|j|j|j|j s>|j|||g|j}|j|jd|jyw)Nr^%GET / HTTP/1.0 Connection: close r`)rCrarJr6 assertFalsedoner WaitIteratornextappendcurrent_futurerlrbrcrVrS)r8re connect_fut write_futitresolved_orderrfs r0test_write_while_connectingz0TestIOStreamWebMixin.test_write_while_connectings++-nnk43E3E3G%HI LL!OP  ))+,  k9 5'')'')O  ! !""3"3 4'') +y)AB,,..  h/0 s CD! AD!c#K|j}|jd|jf}|j|||j d|j d}|j |d|j d}tj|jd}t|d}|j|}|j |d|jy w) z3Basic test of IOStream's ability to return Futures.r^r_ sHTTP/1.1 200 OK  latin1zContent-Lengthr`N) rCrarJassertIsr6 read_untilrlrparsedecodeintrkrS)r8reconnect_result first_line header_datarTcontent_lengthbodys r0test_future_interfacez*TestIOStreamWebMixin.test_future_interfaces++-%~~{Dr><s$2$s$.3$$&*$>Djj$ $ &11&*  ! !r/r>ceZdZdZdZedZedZedZedZ edZ edZ ed Z ed Z ed Zed Zed ZedZedZedZedZedZedZedZedZedZedZedZedZedZy)TestReadWriteMixinc tr@rA)r8rLs r0make_iostream_pairz%TestReadWriteMixin.make_iostream_pairs!!r/c (Gdd}|||S)zLike make_iostream_pair, but called by ``async with``. In py37 this becomes simpler with contextlib.asynccontextmanager. ceZdZdZdZdZy)=TestReadWriteMixin.iostream_pair..IOStreamPairContextc ||_||_yr@)testrL)r8rrLs r0__init__zFTestReadWriteMixin.iostream_pair..IOStreamPairContext.__init__s  $ r/cK|jjdi|jd{|_|jS7w)Nr.)rrrLpairr7s r0 __aenter__zHTestReadWriteMixin.iostream_pair..IOStreamPairContext.__aenter__s8">$))">">"M"MM yy Ns*AAAcNK|jD]}|jywr@)rrS)r8typvaluetbss r0 __aexit__zGTestReadWriteMixin.iostream_pair..IOStreamPairContext.__aexit__s"AGGIs#%N)r:r;r<rrrr.r/r0IOStreamPairContextrs % ! r/rr.)r8rLrs r0 iostream_pairz TestReadWriteMixin.iostream_pairs  #400r/c#K|j\}}|jd|j|jyw)Nr/)rr6rS)r8rswss r0test_write_zero_bytesz(TestReadWriteMixin.test_write_zero_bytess=..00Bhhsm    sA A c#K|j\}} |jdg}|j|jd|j |j|jd|j |ddg|j |j y#|j |j wxYww)N12r12)rr6rtrkrSrl)r8rrchunkss r0"test_future_delayed_close_callbackz5TestReadWriteMixin.test_future_delayed_close_callbacks..00B  HHUOF MMq!11 3 HHJ MMq!11 3   VdD\ 2 HHJ HHJ HHJ HHJsCA;B5!C5"CCc#K|jd\}} |jd|jd}|jd||j t j d|jd}|jd||j |j y#|j |j wxYww)N)read_chunk_sizesAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAsAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAg{Gz?)rr6rkrlrSrsleepr8rrrfs r0test_close_buffered_dataz+TestReadWriteMixin.test_close_buffered_datas..s.CCB  HHZ s++D   Z . HHJ))D/ !s++D   Z . HHJ HHJ HHJ HHJsC#BB>!C#>"C  C#c#K|j\}} |jd|jd}|j|j |d|j }|j |d|j|jy#|j|jwxYww)Ns1234rrs234)rr6rkrSrlrbrs r0!test_read_until_close_after_closez4TestReadWriteMixin.test_read_until_close_after_closes..00B  HHW q))D HHJ   T4 (,,..D   T6 * HHJ HHJ HHJ HHJsC A*B$!C $"CC c# K|j\}} t|tr,tjdk(rt j dd}t|D]}|jd|jd|jd}|jt||dzdz|j|jy#|j|jwxYww)NPyPyz$pypy gc causes problems with opensslsAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAr|) r isinstancerrWpython_implementationunittestSkipTestranger6rrllenrS)r8rrNUM_KBirfs r0test_large_read_untilz(TestReadWriteMixin.test_large_read_until*s ..00B  2{+224>''(NOOF6] &% & HHW w//D   SY (9 : HHJ HHJ HHJ HHJsDB$C=!D"DDcK|j4d{\}}tj|jd}tjdd{|j dd{|j d|j |d{dddd{y77[7D77 #1d{7swYyxYww)Ndone皙?xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx)rasyncio ensure_futurerrr6rSr8rrrfs r0.test_read_until_with_close_after_second_packetzATestReadWriteMixin.test_read_until_with_close_after_second_packetCs%%'  8B&&r}}W'=>B--$ $ $((;' ' ' HHW  HHJHH    % '     s{CB5CAB?B7B?4B95*B?B; B?$ C/B=0C7B?9B?;B?=C?CC C CcK|j4d{\}}tj|jd}|j dd{|j d|j |j t5|d{ddddddd{y77`7!#1swY xYw7#1d{7swYyxYww)Nrrsfoo)rrrrr6rSrr rs r0'test_read_until_unsatisfied_after_closez:TestReadWriteMixin.test_read_until_unsatisfied_after_close[s %%'  8B&&r}}W'=>B((;' ' ' HHV  HHJ""#45       '       sCB6C.close_callbacksF1I KKMr/arr) rrrr6rkrlrprSrrc)r8rrrrrrs @@r0test_future_close_callbackz-TestReadWriteMixin.test_future_close_callbacks..00B{  n-  HHTN a((C   S$ '   VAY ' HHJ))+  OOF1I & HHJ HHJ HHJ HHJs:DBC ?!D "DDc#DK|j\}} |jd}|jtd|}|j |d|j |j y#|j |j wxYww)Nhelloshell)rrkr6 memoryviewrlrSr8rrfutrfs r0test_write_memoryviewz(TestReadWriteMixin.test_write_memoryviews}..00B --"C HHZ) *9D   T7 + HHJ HHJ HHJ HHJsB AA;!B ;"BB c#K|j\}} |jdd}|jd|}|j|d|jdd}|jd|}|j|d|jdd}|j|d |j |j y#|j |j wxYww) N2Tpartialrrjsworldworrr/)rrkr6rlrSrs r0test_read_bytes_partialz*TestReadWriteMixin.test_read_bytes_partials..00B --D-1C HHX 9D   T8 ,--4-0C HHX 9D   T6 *q$77D   T3 ' HHJ HHJ HHJ HHJsC:BC4!C:"C77C:c#K|j\}}t}|j|j |j dd}|j d|}|j |d|j dd}|j d|}|j |dttdtj5|j dd}|j d |jddd|j|jy#1swY*xYw#|j|jwxYww Ndefr max_bytesabcdefUnsatisfiable readlevel123456) rrrrrr6rlrrloggingINFOrrSr8rrrrrfs r0test_read_until_max_bytesz,TestReadWriteMixin.test_read_until_max_bytess..00B fjj) --"-5C HHY 9D   T9 ---!-4C HHY 9D   T9 -7$8 M $mmFam8#kkm# $ HHJ HHJ  $ $ HHJ HHJ5;E#BD>7D2 D>!E#2D;7D>>"E  E#c#:K|j\}}t}|j|j |j dt t dtj5|jt5|jdddddddd|j|j|jy#1swYDxYw#1swYHxYw#|j|jwxYwwNrrrrrr)rrrrr6rrrrrr rrrSr8rrrs r0 test_read_until_max_bytes_inlinez3TestReadWriteMixin.test_read_until_max_bytes_inlines..00B fjj)  HHY 7$8 M =&&'89=--!-<<= =++-  HHJ HHJ == = = HHJ HHJsL;D1C6/C*CC*#C6=!DC' #C**C3/C66"DDc#K|j\}}t}|j|j |j dt t dtj5|jdd|jddd|j|jy#1swY*xYw#|j|jwxYwwNrrrrrr) rrrrr6rrrrrrrSrs r0'test_read_until_max_bytes_ignores_extraz:TestReadWriteMixin.test_read_until_max_bytes_ignores_extras..00B fjj)  HHY 7$8 M $ f 2kkm# $ HHJ HHJ  $ $ HHJ HHJ4;C/1C /&B>C !C/>CC "C,,C/c#K|j\}}t}|j|j |j dd}|j d|}|j |d|j dd}|j d|}|j |dttdtj5|j dd|j d |jddd|j|jy#1swY*xYw#|j|jwxYwwr) rrrrread_until_regexr6rlrrrrrrSrs r0test_read_until_regex_max_bytesz2TestReadWriteMixin.test_read_until_regex_max_bytess&..00B fjj) %%f%;C HHY 9D   T9 -%%f%:C HHY 9D   T9 -7$8 M $##Fa#8#kkm# $ HHJ HHJ  $ $ HHJ HHJrc#K|j\}}t}|j|j |j dt t dtj5|jdd|jddd|j|jy#1swY*xYw#|j|jwxYwwr rrrrr6rrrrr rrSrs r0&test_read_until_regex_max_bytes_inlinez9TestReadWriteMixin.test_read_until_regex_max_bytes_inlines..00B fjj)  HHY 7$8 M $##Fa#8kkm# $ HHJ HHJ  $ $ HHJ HHJr c#K|j\}}t}|j|j |j dt t dtj5|jdd|jddd|j|jy#1swY*xYw#|j|jwxYwwr rrs r0-test_read_until_regex_max_bytes_ignores_extraz@TestReadWriteMixin.test_read_until_regex_max_bytes_ignores_extra-s..00B fjj)  HHY 7$8 M $##Fa#8kkm# $ HHJ HHJ  $ $ HHJ HHJr c#ZK|jd\}} |jddztdD]'}|jd}|j |d) |j |j y#|j |j wxYww)N(max_buffer_sizesaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadr)rr6rrkrlrSr8rrrrfs r0"test_small_reads_from_large_bufferz5TestReadWriteMixin.test_small_reads_from_large_buffer>s ..y.IIB  HH[3& '3Z 4]]400  {3 4 HHJ HHJ HHJ HHJsB+A B%!B+"B((B+c#^K|jd\}} |jddztdD])}|jdd}|j |d+ |j |j y#|j |j wxYww)Nrrsaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa r rr)rr6rrrlrSrs r0(test_small_read_untils_from_large_bufferz;TestReadWriteMixin.test_small_read_untils_from_large_bufferMs ..y.IIB  HH)S0 13Z <]]5D]AA  ':; < HHJ HHJ HHJ HHJsB-A B'!B-"B**B-c#Kd}|jd|z\}} |jd|z|j|tjdt dD]}|j| |j |j y#|j |j wxYww)Nrrrs aaaaaaaaaarri)rr6rkrrrrS)r8MBrrrs r0test_flow_controlz$TestReadWriteMixin.test_flow_control\s ..q2v.FFB  HHY^ $--# #))C. 1X (mmB'' ( HHJ HHJ HHJ HHJsCA!B#!C#"CCc#Kj\}}fd} td}|j|}|jdt j dj |j|jd|}j|jj|djt|d|j|}t j dj |j|jd|}j|jj|djt|dtd }|jd |j|}j|d jt|d |jd }j|d |j|jy#|j|jwxYww)Nc>jjdy)Nc,tjdS)N皙?)rrr.r/r0zGTestReadWriteMixin.test_read_into..sleep_some..ss#))D/r/)io_looprun_syncr7sr0 sleep_somez5TestReadWriteMixin.test_read_into..sleep_somers LL ! !"9 :r/ rr$sworld!!s helloworlds 1234567890s !!12345678rs abcdefghis90abscdefghi) r bytearray read_intor6rrrcreadingrprlbytesrkrS)r8rrr(bufrrfs` r0test_read_intoz!TestReadWriteMixin.test_read_intons..00B ;! B-C,,s#C HHX ))D/ ! OOBJJL ) HHZ 9D   RZZ\ *   T2 &   U3Z 7,,s#C))D/ ! OOBJJL ) HH] #9D   RZZ\ *   T2 &   U3Z 7A,C HH\ "c**D   T1 %   U3Z 1q))D   T: . HHJ HHJ HHJ HHJsIG-H- !I-"IIc#K|j\}} td}|j|d}|jd|}|j |j |j |d|j t|d|jd|j|d}|j |d|j t|d|j|d}|j |d |j t|d |j|jy#|j|jwxYww) Nr)Trrrs hellosworld!1234567890s world!1234rs 5678901234) rr+r,r6rpr-rlr.rS)r8rrr/rrfs r0test_read_into_partialz)TestReadWriteMixin.test_read_into_partials3..00B B-C,,sD,1C HHX 9D   RZZ\ *   T1 %   U3Z); < HH( )c488D   T2 &   U3Z 7c488D   T1 %   U3Z 7 HHJ HHJ HHJ HHJsE3DE-!E3"E00E3c#8K|j\}} t}|j|}|j|j d|j |j y#|j |j wxYwwNr)rr+r,rlresultrS)r8rrr/rs r0test_read_into_zero_bytesz,TestReadWriteMixin.test_read_into_zero_bytessr..00B +C,,s#C   SZZ\1 - HHJ HHJ HHJ HHJsB;A5!B5"BBc# Ktjdd|j\tjtjt j fd}t j fd} ||gjjk(sJ jjy#jjwxYww)N*i@Bc3K}|dkDr`jdtd|}tj|}j |j |||z}|dkDr`|dk(sJyw)Nrr)randintminr)urandomupdater6) remainingsizerfnbytes produce_hashrrs r0producez9TestReadWriteMixin.test_many_mixed_reads..producesuIa-yyCi$89zz$'##D)hhtn$T! a- > !>s A'A3+A3c3K}|dkDrjdkDrFjdtd|}j|}j |||z}nWjdtd|}t |}j |}||k(sJj |||z}|dkDr|dk(sJyw)Nrg?rr:)randomr;r<rkr>r+r,) r?r@rfr/n consume_hashrArCrs r0consumez9TestReadWriteMixin.test_many_mixed_reads..consumesIa-88:#99QD)(<=D!#t!44D ''-%I99QD)(<=D#D/C ll3//A9$9 '',%Ia-> !>s B=C C ) rFRandomrhashlibsha1r coroutine hexdigestrS) r8rDrIrHrArBrCrrs @@@@@@r0test_many_mixed_readsz(TestReadWriteMixin.test_many_mixed_readss MM" ..00B||~ ||~  "  "  "  "& 9gi( ())+|/E/E/GG GG HHJ HHJ HHJ HHJsB D3C)!D)"D  DN)r:r;r<rrrrrrrrrrrrrrrrr rrrrrr r0r2r6rOr.r/r0rrs "1*  2$0.  .0  06$ 6"     "''R8//r/rceZdZdZdZej dZedZ edZ edZ e edZ edZed Zy ) TestIOStreamMixinc tr@rAr8 connectionrLs r0_make_server_iostreamz'TestIOStreamMixin._make_server_iostreamrDr/c tr@rArSs r0rCz'TestIOStreamMixin._make_client_iostreamrDr/c+Kt\}}tfd}tj||jt j fi}|j d|f}|g\}}jj|j|jtj||fw)NcJjj|fiyr@) set_resultrU)rTaddressrLr8server_stream_futs r0accept_callbackz=TestIOStreamMixin.make_iostream_pair..accept_callbacks&  ( (***:@@ r/r^) rrradd_accept_handlerrCsocketrar&remove_handlerfilenorSrReturn) r8rLlistenerportr\ client_streamrv server_streamr[s `` @r0rz$TestIOStreamMixin.make_iostream_pairs)+$"H  ""8_=2226==?MfM #++[$,?@ .?-M'M$ } ##HOO$56jj-788sCC c#Kt\}}|j|ttj}|j |j t tdd5|jt5|jd|fdddddd|jt|jt|jy#1swYFxYw#1swYJxYww)Nz.*F)requiredr^)r addCleanuprr^rstoprrrr rarcrerrorConnectionRefusedError)r8 cleanup_funcrcres r0test_connection_refusedz)TestIOStreamMixin.test_connection_refused s +_ d  %&--/*!!$)), wu 5 :""#45 :nnk4%899 : :  6<<1GH&,,W : : : :s6A)C4+C(CC(=C4C% !C((C1-C4c#:Ktjtjtjd}t|}|j |j t jdtjtjd5|jt5|jdddd|jt|j tjdddy#1swYExYw#1swYyxYww)Nrzsocket.socket.connectboom side_effect) localhostP)r^AF_INET SOCK_STREAMrrrir"patchgaierrorerrnoEIOrr rarcrrj)r8rres r0 test_gaierrorzTestIOStreamMixin.test_gaierrors MM&..&*<*!DC($C++"D  Dc#K|j\}t}j|j j d|j dfd}|_ttd5|jdddj|jy#1swY*xYw#j|jwxYww)Nrrctjjjjj yr@)r)rSr^r` __class__ read_from_fd)r~sr0fake_read_from_fdzJTestIOStreamMixin.test_async_read_error_logging..fake_read_from_fdls0--/0  --f5r/z error on read) rrrrrkr6rrrrrS)r8rrrr~s @r0test_async_read_error_loggingz/TestIOStreamMixin.test_async_read_error_logging_s $6688!!&**-    a LL  6#4F 7O4 $kkm# $ LLN LLN  $ $ LLN LLNs4;C*>C=B9C!C*9C>C"C''C*c# Kd\d}z|z |j \tjfd}tj fd} t|Dcgc] }| c}|gzj j ycc}w#j j wxYww)z? Test that write() Futures are never orphaned. )ir:r)rc3^Kdz}tD]}j|yw)Nx)rr6)rfrmrGr~s r0rDz4TestIOStreamMixin.test_future_write..produces2!8D1X )ll4(( )s*-c3lKd}|kr(j}|t|z }|kr'yywr4)rkr)nreadrrr total_bytess r0rIz4TestIOStreamMixin.test_future_write..consumes?E+%"--a00S!+%s.44N)rrrMrrS) r8 nproducersrDrIrrrrGr~rs @@@@@r0test_future_writez#TestIOStreamMixin.test_future_writexs1 !ej( #66{6SS  )  )  "  "  &+J&78798GI;F F LLN LLN9 LLN LLNs0AC# B20B->B2 !C-B22"CCN)r:r;r<rUrCrrMrrrmrzrrrrrr.r/r0rQrQs$$ ]]99"XX GG    @0r/rQceZdZdZdZy)TestIOStreamWebHTTPc<ttjSr@)rr^r7s r0rCz)TestIOStreamWebHTTP._make_client_iostreams ((r/c"|jSr@rGr7s r0get_appzTestIOStreamWebHTTP.get_app!!##r/Nr:r;r<rCrr.r/r0rrs )$r/rceZdZdZdZy)TestIOStreamWebHTTPScpttjttjS)N cert_reqs ssl_options)rr^r(ssl CERT_NONEr7s r0rCz*TestIOStreamWebHTTPS._make_client_iostreams6==?s}}8UVVr/c"|jSr@rr7s r0rzTestIOStreamWebHTTPS.get_apprr/Nrr.r/r0rrs W$r/rceZdZdZdZy) TestIOStreamc t|fi|Sr@rrSs r0rUz"TestIOStream._make_server_iostream -f--r/c t|fi|Sr@rrSs r0rCz"TestIOStream._make_client_iostreamrr/Nr:r;r<rUrCr.r/r0rrs ..r/rceZdZdZdZy)TestIOStreamSSLc lttd}|j|dd}t|fi|S)NT) server_sideFrdo_handshake_on_connect)rr1 wrap_socketr)r8rTrLssl_ctxs r0rUz%TestIOStreamSSL._make_server_iostreamsB()<)>DQ(( $)) :000r/c Nt|fdttji|S)Nrr)rr(rrrSs r0rCz%TestIOStreamSSL._make_client_iostreams+  $(3==$A EK  r/Nrr.r/r0rrs 1 r/rceZdZdZdZy)TestIOStreamSSLContextc tjtjj}|j t j jt j jtdt j jt j jtdt||dd}t|fi|SNr$r%TFr) rcreate_default_contextPurpose CLIENT_AUTHload_cert_chainr)r*r+r,r-rrr8rTrLcontexts r0rUz,TestIOStreamSSLContext._make_server_iostreams,,S[[-D-DE GGLL2J ? GGLL2J ? % T5 :000r/c tjtjj}d|_tj |_t|fd|i|S)NFr)rrr SERVER_AUTHcheck_hostnamer verify_moderrs r0rCz,TestIOStreamSSLContext._make_client_iostreamsE,,S[[-D-DE!&!mm:E7EfEEr/Nrr.r/r0rrs  1Fr/rceZdZfdZfdZdZejdZejdZ d dZ d dZ e dZ e d Ze d Ze d ZxZS)TestIOStreamStartTLSc t|t\|_|_d|_t |_tj|j|jttj|_ |jj|jj!d|jf|j"|j%|jj|j|j"|j%y#t&$r}t)|d}~wwxYw)Nr^)supersetUprrbrcrerserver_acceptedrr]acceptrr^rdr& add_futurerarir Exceptionprint)r8ers r0rzTestIOStreamStartTLS.setUps  GMO'7'9 $DM49!%D #)8D  & &t}}dkk B!) "D  LL # #""**K+CDdii  IIK LL # #D$8$8$)) D IIK  !H  sD"D&& E/ D;;EcT|j|jj|j|jj|jj |j j |j jt|!yr@) rerSrdr&r_rbr`rtearDownr8rs r0rzTestIOStreamStartTLS.tearDownsy    )    $ $ &    )    $ $ & ##DMM$8$8$:;  r/c|j|jdt||_|jj dy)Nzshould only get one connection)refailrrrY)r8rTrZs r0rzTestIOStreamStartTLS.accepts<    ) II6 7%j1 ''-r/c#K|jJ|jj||jJ|jjd}|j ||ywNr|)rdr6rerrlr8line recv_lines r0client_send_linez%TestIOStreamStartTLS.client_send_lineg!!---   &!!---,,77@@  y)A(A*c#K|jJ|jj||jJ|jjd}|j ||ywr)rer6rdrrlrs r0server_send_linez%TestIOStreamStartTLS.server_send_linerrcj|jJ|j}d|_|jd||S)NF)rd start_tls)r8rserver_hostnamerds r0client_start_tlsz%TestIOStreamStartTLS.client_start_tls s<!!---** !&&uk?KKr/ch|jJ|j}d|_|jd|S)NT)rer)r8rres r0server_start_tlsz%TestIOStreamStartTLS.server_start_tlss:!!---** !&&t[99r/c#K|jd|jd|jd|jd|jd|jd|jttj }|j t}||_||_ |jt|jt|jt|jt|jd|jdyw) Ns220 mail.example.com ready sEHLO mail.example.com s250-mail.example.com welcome s250 STARTTLS s STARTTLS s220 Go ahead rs250 mail.example.com welcome ) rrrr(rrrr1rdrercrr)r8 client_future server_futures r0test_start_tls_smtpz(TestIOStreamStartTLS.test_start_tls_smtps  ##$EFF##$@AA##$GHH##$788##O44##$788--dS]].KL --.A.CD #00#00  4#5#5{CD  4#5#5{CD##$@AA##$GHHsEEc#K|jt}ttd5|j d}|j t j5|ddd|j t jtjf5|ddddddy#1swYNxYw#1swYxYw#1swYyxYww)N SSL Errorrrr) rr1rrrrrSSLErrorr^rjr8rrs r0test_handshake_failz(TestIOStreamStartTLS.test_handshake_fail+s--.A.CD w , $ 11+1NM""3<<0 $## $""CLL&,,#?@ $## $  $ $ $ $ $ $  $ $sL*C2CB0#7CB<C' C0B9 5C<C CC Cc#K|jt}ttd5|j t j d}|jt j5|ddd|jt5|ddddddy#1swY4xYw#1swYxYw#1swYyxYww)Nrr^r) rr1rrrrrrrrrs r0test_check_hostnamez(TestIOStreamStartTLS.test_check_hostname6s--.A.CD w , $ 11**,k2M""3<<0 $## $""9- $## $ $ $ $ $ $ $ $ $sM*C AC1B)6CB5C C )B2 .C5B> :CC C c#ZKttdjd}|jJ|jj ||j J|j j |j}|jt|t|yw)NrsL) rr.castrer6rdrkrArl)r8r/recvs r0test_typed_memoryviewz*TestIOStreamStartTLS.test_typed_memoryviewEsr#((-!!---  &&s++!!---''223::>> teCj1sB)B+)NNr@)r:r;r<rrrrrMrrrrrrrrr __classcell__rs@r0rrs(.  ]]** ]]**L : II($$ $ $22r/rc`eZdZejdZedZedZedZ y)WaitForHandshakeTestc#Kdx}} t\}}|t}|j|tjtj j }d|_tj|_ t5|xjttddzc_ ttj|}ddd|jd|f|j!|jj#||j%||j'yy#1swYmxYw#||j%||j'wwxYww)NrF OP_NO_TLSv1_3rr^)rr1 add_socketrrrrrrrroptionsgetattrrr^raassertIsNotNonecipherrirS)r8 server_clsr~rsockrcrs r0connect_to_serverz&WaitForHandshakeTest.connect_to_serverRs. )+JD$,?,ABF   d #001H1HIG%*G ""%--G $% K73#CC$V]]_'J K..+t!45 5  !5!5!7 8! ! " K K ! ! "s7E0BE AD:AE&E0:E?E'E--E0c#zK|tGfddt}|j|yw)Nc@eZdZfdZej fdZy)GWaitForHandshakeTest.test_wait_for_handshake_future..TestServercj|jjjj |j |yr@) assertIsNoner^rr&spawn_callbackhandle_connection)r8rerZrs r0 handle_streamzUWaitForHandshakeTest.test_wait_for_handshake_future..TestServer.handle_streamus8!!&--"6"6"89 ++D,B,BFKr/c3TK|jjdywr@wait_for_handshakerY)r8rehandshake_futures r0r zYWaitForHandshakeTest.test_wait_for_handshake_future..TestServer.handle_connectionys$//11 ++D1s%(N)r:r;r<r rrMr rrsr0 TestServerrts! L]] 2 2r/rrrrr8rrrs @@r0test_wait_for_handshake_futurez3WaitForHandshakeTest.test_wait_for_handshake_futureos9!8 2 2$$Z007;c#zK|tGfddt}|j|yw)Nc8eZdZejfdZy)VWaitForHandshakeTest.test_wait_for_handshake_already_waiting_error..TestServerc3K|j}jt|j|jdywr@)r r RuntimeErrorrY)r8rerZrrrs r0r zdWaitForHandshakeTest.test_wait_for_handshake_already_waiting_error..TestServer.handle_streams>//1!!,0I0IJ  ++D1sAA Nr:r;r<rrMr rsr0rrs ]] 2 2r/rrrs @@r0-test_wait_for_handshake_already_waiting_errorzBWaitForHandshakeTest.test_wait_for_handshake_already_waiting_errors9!8 2 2$$Z00rc#rKtGfddt}|j|yw)Nc6eZdZejfdZy)RWaitForHandshakeTest.test_wait_for_handshake_already_connected..TestServerc3xK|j|jjdywr@r )r8rerZrs r0r z`WaitForHandshakeTest.test_wait_for_handshake_already_connected..TestServer.handle_streams3//11//11 ++D1s7:Nr)rsr0rrs ]] 2 2r/rr)r8rrs @r0)test_wait_for_handshake_already_connectedz>WaitForHandshakeTest.test_wait_for_handshake_already_connecteds4!8 2 2$$Z00s47N) r:r;r<rrMrrrrr r.r/r0rrQsT]]8"   r/rcXeZdZfdZfdZedZedZedZxZ S)TestIOStreamCheckHostnamect|t\|_|_d}t j |j|tjtjj|_ |jjtjjtjj!t"dy)Nctjtjj}|j t j jt j jtdt j jt j jtd|j|dd}t|yr) rrrrrr)r*r+r,r-rr)rTrZrs r0r\z8TestIOStreamCheckHostname.setUp..accept_callbacks001H1HIG  # # RWW__X6 C RWW__X6 C !,, (--J  #r/r$)rrrrbrcrr]rrrrclient_ssl_ctxload_verify_locationsr)r*r+r,r-)r8r\rs r0rzTestIOStreamCheckHostname.setUps  #3#5  ty $ ""4==/B"889P9PQ 11 GGLL2J ? r/c|jj|jj|jj t |yr@)r&r_rbr`rSrrrs r0rz"TestIOStreamCheckHostname.tearDowns= ##DMM$8$8$:;  r/cKttj|j}|jd|jfdd{|j y7w)Nrr^zfoo.example.comr)rr^r%rarcrSrs r0 test_matchz$TestIOStreamCheckHostname.test_matchsXV]]_$:M:MNnn $)) $-       sA A&A$A&cKttj|j}ttdt j tjdk75|jtj5ttdt j 5|jd|jfd d{ddddddtjdk7rtjd d{dddy7Q#1swYPxYw#1swYTxYw7'#1swYyxYww) Nrz.*alert bad certificateWindows)rrgz0.*(certificate verify failed: Hostname mismatch)rr^bar.example.comrr)rr^r%rrrWARNINGrWrXrrSSLCertVerificationErrorrarcrrrs r0 test_no_matchz'TestIOStreamCheckHostname.test_no_matchs V]]_$:M:MN   %//__&)3   ) ""3#?#?@ F!// !..$dii0(9)   I-mmC((() ) )   )) ) )slA E" D4!D&##DD D D&7D4 D2 D4 EDD# D&&D/ +D44D=9EcKd|j_ttj|j}|j d|j fdd{y7w)NFrr^r,r)r%rrr^rarcrs r0test_check_disabledz-TestIOStreamCheckHostname.test_check_disabledsX.3*V]]_$:M:MNnn $)) $-   sAA'A% A') r:r;r<rrrr)r/r1rrs@r0r"r"sI  4 ))0  r/r"cPeZdZejdZedZedZy)TestPipeIOStreamc `tj\}}t|fi|t|fi|fSr@)r)piper )r8rLrCws r0rz#TestPipeIOStream.make_iostream_pairs0wwy1A((,q*CF*CCCr/c#K|j\}}|jd|jd|jd}|j|d|j d}|j|d|j |j }|j|d|j yw)Nshelslo world shello rjrsld)rr6rrlrkrSrbrs r0test_pipe_iostreamz#TestPipeIOStream.test_pipe_iostreams..00B  ]]4(( y)]]1%% v&  ((** u%  sCC c#K|j\}}d}|jd|z|j|}|j|d|z|j |j yw)Nrr)rr6rkrlrS)r8rr NUM_BYTESrfs r0test_pipe_iostream_big_writez-TestPipeIOStream.test_pipe_iostream_big_writesk..00B   !"]]9-- ti/0    sA5A7N) r:r;r<rrMrrr9r<r.r/r0r3r3sB]]DD &  r/r3c<eZdZdZdZdZd dZdZdZdZ dZ y ) TestStreamBufferz9 Unit tests for the private _StreamBuffer class. c8tjd|_y)Nr8)rFrJr7s r0rzTestStreamBuffer.setUp$smmB' r/ct|ttfr t|St|tr|j St |r@)rr.r+rtobytes TypeError)r8bs r0to_byteszTestStreamBuffer.to_bytes's: a%+ ,8O : &99; A, r/cDt}|jsJ||_|Sr@)r _large_buf_threshold)r8large_buf_thresholdr/s r0make_streambufferz"TestStreamBuffer.make_streambuffer/s%o''''#6  r/cDd}|dt|zkr|j|j|}|j||j t|||j|j |||f|dzdzdz}|dt|zkryy)Nrrrj)rrDpeekrcassertLessEqualrd)r8r/expectedr@gots r0 check_peekzTestStreamBuffer.check_peek5sQX&&--/C OOC  S4 0 OOH//4xo F1HqLQ&D QX&&r/c|jt|dd}|D]T}||z }|j|||jt|t||j||V|rw|jj dt|dz}||d}|j ||jt|t||j|||rw|jt|dy)Nrr/r)rlrrtrNrF randrangeadvance)r8r/objs input_typerLorGs r0check_append_all_then_skip_allz/TestStreamBuffer.check_append_all_then_skip_all>s S1% +A MH JJz!} %   SXs8} 5 OOC *  +  %%aX):;A|H KKN   SXs8} 5 OOC *  S1%r/c>gd}|j}|j||t|j}|j||t|j}|j||t|jd}t dD]}|j d|jt|jdt dD]}|j d|jt|jd|jd|jt|jd|jd|jt|jd|jt|dy) N)rs345s67s89abcdesfghsijklmnr)rirrrr rHrUr.r+rrrtrlr_buffersrQr8rRr/rs r0 test_smallzTestStreamBuffer.test_smallRsEI$$& ++Cu=$$& ++CyA$$& ++CzB$$R(q A JJt   S\\*A.q A JJt   S\\*A. B S\\*A. A S\\*A. S1%r/cgd}|j}|j||t|j}|j||t|j}|j||t|jd}t dD]}|j d|jt|jd|j d|jt|jd|j d|jt|jd|jd|jt|jd |jd |jt|jd |jt|d y) N)s 1212121212s345345s(6767676767676767676767676767676767676767s$89a89a89a89a89a89a89a89a89a89a89a89arWsfghfghfghfghfghfghfghs ijklmnijklmnr)rjs xxxxxxxxxxxyrz!rrrrYr[s r0 test_largezTestStreamBuffer.test_largels[ $$& ++Cu=$$& ++CyA$$& ++CzB$$R(q "A JJy ! " S\\*A. 4 S\\*A. 4 S\\*A. B S\\*A. A S\\*A. S1%r/N)r)) r:r;r<__doc__rrDrHrNrUr\rar.r/r0r>r>s*( '&(&4!&r/r>)Itornado.concurrentrtornadorrtornado.iolooprtornado.iostreamrrr r r tornado.httpclientr r tornado.httputilr tornado.locksrr tornado.logrtornado.netutilrrtornado.platform.asynciortornado.tcpserverrtornado.testingrrrrrrtornado.test.utilrrrr tornado.webr r!rrxrKrr)rWrFr^rrrr"r1r3r>rrQrrrrrrrr"r3TestCaser>r.r/r0rrs%!=(*C?' 4   > G!=G!G!ThhhVa*aaH$+-A$$-/C$.$.  '  &F.F&x2=x2vM=M`O O d()=((Vn&x((n&r/