a 8êdg‘ã@s¾ddlZddlZddlZddlZddlZddlZddlZddlZddlmZddl m Z z ddl Z Wne yzdZ Yn0ddl Z ddlmZdd„ZGdd„dejƒZed krºe ¡dS) éN)Úmock)Ú socket_helper)ÚutilscCst d¡dS©N)ÚasyncioZset_event_loop_policy©rrú:/usr/local/lib/python3.9/test/test_asyncio/test_streams.pyÚtearDownModulesr cspeZdZdZ‡fdd„Z‡fdd„Ze d¡dd„ƒZd d „Z d d „Z e j d d„ƒZ dd„Ze edud¡dd„ƒZe j e edud¡dd„ƒƒZdd„Zdd„Ze j dd„ƒZdd„Zdd „Zd!d"„Zd#d$„Zd%d&„Zd'd(„Zd)d*„Zd+d,„Zd-d.„Zd/d0„Z d1d2„Z!d3d4„Z"d5d6„Z#d7d8„Z$d9d:„Z%d;d<„Z&d=d>„Z'd?d@„Z(dAdB„Z)dCdD„Z*dEdF„Z+dGdH„Z,dIdJ„Z-dKdL„Z.dMdN„Z/dOdP„Z0dQdR„Z1dSdT„Z2dUdV„Z3dWdX„Z4dYdZ„Z5d[d\„Z6d]d^„Z7e j d_d`„ƒZ8e e9j:dakdb¡dcdd„ƒZ;dedf„Zdkdl„Z?dmdn„Z@dodp„ZAdqdr„ZBdsdt„ZCdudv„ZDdwdx„ZEdydz„ZFd{d|„ZGd}d~„ZHdd€„ZIdd‚„ZJdƒd„„ZKd…d†„ZL‡ZMS)‡Ú StreamTestssline1 line2 line3 cs$tƒ ¡t ¡|_| |j¡dSr)ÚsuperÚsetUprZnew_event_loopÚloopÚset_event_loop©Úself©Ú __class__rrr s  zStreamTests.setUpcs,t |j¡|j ¡t ¡tƒ ¡dSr)Ú test_utilsÚ run_brieflyr ÚcloseÚgcZcollectr ÚtearDownrrrrr#s  zStreamTests.tearDownzasyncio.streams.eventscCst ¡}| |j|jj¡dSr)rÚ StreamReaderÚassertIsÚ_loopZget_event_loopÚ return_value)rZm_eventsÚstreamrrrÚtest_ctor_global_loop+sz!StreamTests.test_ctor_global_loopcs¸g‰|j ‡fdd„¡| t¡ |j |¡\}}Wdƒn1sH0Y| d¡| ¡}|j |¡}| |d¡| ¡}|j |¡}|  |  d¡¡|  ¡| ˆg¡dS)Ncs ˆ |¡Sr©Úappend©r Úctx©ÚmessagesrrÚ2óz7StreamTests._basetest_open_connection..óGET / HTTP/1.0 óHTTP/1.0 200 OK ó Test message) r Úset_exception_handlerÚ assertWarnsÚDeprecationWarningÚrun_until_completeÚwriteÚreadlineÚ assertEqualÚreadÚ assertTrueÚendswithr©rÚopen_connection_futÚreaderÚwriterÚfÚdatarr"rÚ_basetest_open_connection0s .    z%StreamTests._basetest_open_connectioncCsJt ¡.}tj|jd|jiŽ}| |¡Wdƒn1s<0YdS©Nr )rÚrun_test_serverrÚopen_connectionÚaddressr r9©rÚhttpdZconn_futrrrÚtest_open_connection?s   ÿz StreamTests.test_open_connectioncCsHt ¡,}tj|j|jd}| |¡Wdƒn1s:0YdS©N©r )rÚrun_test_unix_serverrÚopen_unix_connectionr=r r9r>rrrÚtest_open_unix_connectionEs  ÿz%StreamTests.test_open_unix_connectionc s´g‰|j ‡fdd„¡zH| t¡ |j |¡\}}Wdƒn1sJ0YWt d¡n t d¡0| d¡| ¡}|j |¡}|  |  d¡¡|  ¡|  ˆg¡dS)Ncs ˆ |¡Srrr r"rrr$Nr%zCStreamTests._basetest_open_connection_no_loop_ssl..r&r() r r)r*r+r,rrr-r0r1r2rr/r3rr"rÚ%_basetest_open_connection_no_loop_sslLs 0  z1StreamTests._basetest_open_connection_no_loop_sslNz No ssl modulecCsTtjdd4}tj|jt ¡|jdœŽ}| |¡Wdƒn1sF0YdS)NT©Zuse_ssl)Ússlr )rr;rr<r=Údummy_ssl_contextr rFr>rrrÚ test_open_connection_no_loop_ssl\sýz,StreamTests.test_open_connection_no_loop_sslcCsTtjdd4}tj|jt ¡d|jd}| |¡Wdƒn1sF0YdS)NTrGÚ)rHZserver_hostnamer )rrCrrDr=rIr rFr>rrrÚ%test_open_unix_connection_no_loop_sslfsüz1StreamTests.test_open_unix_connection_no_loop_sslcsÂg‰|j ‡fdd„¡| t¡ |j |¡\}}Wdƒn1sH0Y|j tƒ¡| ¡}|  t¡|j |¡Wdƒn1s”0Y|  ¡t   |j¡|  ˆg¡dS)Ncs ˆ |¡Srrr r"rrr$tr%z=StreamTests._basetest_open_connection_error..)r r)r*r+r,Z _protocolZconnection_lostÚZeroDivisionErrorr0Ú assertRaisesrrrr/)rr4r5r6r7rr"rÚ_basetest_open_connection_errorrs . * z+StreamTests._basetest_open_connection_errorcCsJt ¡.}tj|jd|jiŽ}| |¡Wdƒn1s<0YdSr:)rr;rr<r=r rOr>rrrÚtest_open_connection_errors   ÿz&StreamTests.test_open_connection_errorcCsHt ¡,}tj|j|jd}| |¡Wdƒn1s:0YdSrA)rrCrrDr=r rOr>rrrÚtest_open_unix_connection_error…s  ÿz+StreamTests.test_open_unix_connection_errorcCs*tj|jd}| d¡| d|j¡dS©NrBr%)rrr Ú feed_datar/Ú_buffer©rrrrrÚtest_feed_empty_dataŒs z StreamTests.test_feed_empty_datacCs.tj|jd}| |j¡| |j|j¡dSrA)rrr rSÚDATAr/rTrUrrrÚtest_feed_nonempty_data’s z#StreamTests.test_feed_nonempty_datacCsLtj|jd}| |j¡|j | d¡¡}| d|¡| |j|j¡dS)NrBrr%) rrr rSrWr,r0r/rT©rrr8rrrÚtest_read_zero˜s   zStreamTests.test_read_zerocsftjˆjd‰ˆj ˆ d¡¡}‡‡fdd„}ˆj |¡ˆj |¡}ˆ ˆj|¡ˆ dˆj ¡dS)NrBécsˆ ˆj¡dSr©rSrWrrUrrÚcb¦sz!StreamTests.test_read..cbr%) rrr Ú create_taskr0Ú call_soonr,r/rWrT©rÚ read_taskr]r8rrUrÚ test_read¡s  zStreamTests.test_readcCsRtj|jd}| d¡| d¡|j | d¡¡}| d|¡| d|j¡dS)NrBsline1sline2é©rrr rSr,r0r/rTrYrrrÚtest_read_line_breaks®s    z!StreamTests.test_read_line_breakscsbtj|jd‰|j ˆ d¡¡}‡fdd„}|j |¡|j |¡}| d|¡| dˆj¡dS)NrBics ˆ ¡dSr)Úfeed_eofr©rrrr]¾sz%StreamTests.test_read_eof..cbr%© rrr r^r0r_r,r/rTr`rrgrÚ test_read_eof¹s    zStreamTests.test_read_eofcsbtj|jd‰|j ˆ d¡¡}‡fdd„}|j |¡|j |¡}| d|¡| dˆj¡dS)NrBéÿÿÿÿcs ˆ d¡ˆ d¡ˆ ¡dS)Nschunk1 óchunk2©rSrfrrgrrr]Ës  z+StreamTests.test_read_until_eof..cbs chunk1 chunk2r%rhr`rrgrÚtest_read_until_eofÆs    zStreamTests.test_read_until_eofcCs^tj|jd}| d¡|j | d¡¡}| d|¡| tƒ¡|  t|jj| d¡¡dS©NrBóline éóli) rrr rSr,r0r/Ú set_exceptionÚ ValueErrorrNrYrrrÚtest_read_exceptionÖs   ÿzStreamTests.test_read_exceptioncCs|| td¡ tjd|jdWdƒn1s20Y| td¡ tjd|jdWdƒn1sn0YdS)NZimitr©Úlimitr rj)ÚassertRaisesRegexrsrrr rrrrÚtest_invalid_limitás.zStreamTests.test_invalid_limitcCsJtjd|jd}| d¡|j | d¡¡}| d|¡| d|j¡dS©Néruschunkrcr%rdrYrrrÚtest_read_limitès   zStreamTests.test_read_limitcsjtj|jd‰ˆ d¡|j ˆ ¡¡}‡fdd„}|j |¡|j |¡}| d|¡| dˆj ¡dS)NrBschunk1 cs"ˆ d¡ˆ d¡ˆ d¡dS)Nschunk2 schunk3 s chunk4)rSrrgrrr]ös  z%StreamTests.test_readline..cbschunk1 chunk2 chunk3 s chunk4) rrr rSr^r.r_r,r/rT)rrar]ÚlinerrgrÚ test_readlineïs     zStreamTests.test_readlinecCsžtjd|jd}| d¡| d¡| t|jj| ¡¡| d|j ¡tjd|jd}| d¡| d¡| d¡| t|jj| ¡¡| d|j ¡dS)Nrzrurqs ne1 line2 sline2 sne1r%) rrr rSrNrsr,r.r/rTrUrrrÚ&test_readline_limit_with_existing_datas  ÿ   ÿz2StreamTests.test_readline_limit_with_existing_datacCs†tj|jd}| | ¡¡| d¡| | ¡¡|j | ¡¡| | ¡¡| d¡| ¡|j | ¡¡|  | ¡¡dS)NrBs some data ) rrr Ú assertFalseZat_eofrSr,r.rfr1rUrrrÚ test_at_eofs  zStreamTests.test_at_eofcsˆtjd|jd‰‡fdd„}|j |¡| t|jjˆ ¡¡| dˆj ¡tjd|jd‰‡fdd„}|j |¡| t|jjˆ ¡¡| dˆj ¡tjd|jd‰ˆ  d¡|j ˆ ¡¡}| d|¡| dˆj ¡ˆ  d ¡| t¡ }|j ˆ ¡¡Wdƒn1s0Y| dˆj ¡ˆ  d ¡| t¡ }|j ˆ ¡¡Wdƒn1sl0Y| dˆj ¡dS) Nérucs*ˆ d¡ˆ d¡ˆ d¡ˆ ¡dS)Nóchunk1rkóchunk3 rlrrgrrr]/s   z+StreamTests.test_readline_limit..cbr%cs*ˆ d¡ˆ d¡ˆ d¡ˆ ¡dS)Nr‚schunk2 rƒrlrrgrrr]=s   rƒs1234567 s 12345678 s12345678) rrr r_rNrsr,r.r/rTrS)rr]r|ÚcmrrgrÚtest_readline_limit*s6  ÿ  ÿ    0  0zStreamTests.test_readline_limitcCsdtj|jd}| |jdd…¡| |jdd…¡|j | ¡¡}| d|¡| d|j¡dS)NrBésline1 s line2 line3 ) rrr rSrWr,r.r/rT©rrr|rrrÚtest_readline_nolimit_nowaitYs  z(StreamTests.test_readline_nolimit_nowaitcCs@tj|jd}| d¡| ¡|j | ¡¡}| d|¡dS)NrBs some data)rrr rSrfr,r.r/r‡rrrÚtest_readline_eofes  zStreamTests.test_readline_eofcCs6tj|jd}| ¡|j | ¡¡}| d|¡dSrR)rrr rfr,r.r/r‡rrrÚtest_readline_empty_eofmsz#StreamTests.test_readline_empty_eofcCsZtj|jd}| |j¡|j | ¡¡|j | d¡¡}| d|¡| d|j ¡dS)NrBrsline2 lsine3 ) rrr rSrWr,r.r0r/rTrYrrrÚtest_readline_read_byte_countts   z)StreamTests.test_readline_read_byte_countcCshtj|jd}| d¡|j | ¡¡}| d|¡| tƒ¡|  t|jj| ¡¡| d|j ¡dS)NrBror%) rrr rSr,r.r/rrrsrNrTrYrrrÚtest_readline_exceptions   ÿz#StreamTests.test_readline_exceptioncCsRtj|jd}| td¡$|j |jdd¡Wdƒn1sD0YdS)NrBzSeparator should ber%©Ú separator)rrr rwrsr,Ú readuntilrUrrrÚtest_readuntil_separator‹sz$StreamTests.test_readuntil_separatorcCs¶tj|jd}| d¡|j |jdd¡}| d|¡| d|j¡| d¡|j | d¡¡}| d|¡| d|j¡| d¡|j | d¡¡}| d|¡| d|j¡dS)NrBslineAAAóAAArr%s lineAAAxxxsxxx©rrr rSr,rr/rTrYrrrÚtest_readuntil_multi_chunkss      z'StreamTests.test_readuntil_multi_chunkscCsftj|jd}| d¡| d¡| d¡|j | d¡¡}| d|¡| d|j¡| d¡| d¡| d ¡|j | d¡¡}| d|¡| d|j¡| d¡|j | d¡¡}| d|¡| d|j¡| d ¡|j | d¡¡}| d |¡| d|j¡| d ¡| d¡| d¡| d¡|j | d¡¡}| d |¡| d|j¡dS) NrBsQWEaasXYaaóasaaas QWEaaXYaaar%sXYasaasXaaasXXXsXXXaaar’rYrrrÚtest_readuntil_multi_chunks_1¢s8                 z)StreamTests.test_readuntil_multi_chunks_1cCs”tj|jd}d}| |¡| ¡| tjd¡"}|j | d¡¡Wdƒn1sZ0Y|  |j j |¡|  |j j ¡|  d|j¡dS)NrBó some dataAAzundefined expected bytesr‘r%)rrr rSrfrwÚIncompleteReadErrorr,rr/Ú exceptionÚpartialÚ assertIsNoneÚexpectedrT)rrr8r„rrrÚtest_readuntil_eofÅs ÿ0zStreamTests.test_readuntil_eofcCsÄtj|jdd}| d¡| tjd¡"}|j | d¡¡Wdƒn1sP0Y| d|j ¡| d¡| tjd¡"}|j | d¡¡Wdƒn1s¨0Y| d|j ¡dS) Nrz©r rvr–z not foundr‘óAzis founds some dataAAA) rrr rSrwÚLimitOverrunErrorr,rr/rT)rrr„rrrÚtest_readuntil_limit_found_sepÒs ÿ0 ÿ0z*StreamTests.test_readuntil_limit_found_sepcCsštj|jd}| |j¡|j | d¡¡}| d|¡| |j|j¡|  t d¡"|j | d¡¡Wdƒn1s|0Y| |j|j¡dS)NrBrr%zless than zerorj) rrr rSrWr,Ú readexactlyr/rTrwrsrYrrrÚtest_readexactly_zero_or_lessâs  0z)StreamTests.test_readexactly_zero_or_lesscs|tjˆjd‰dtˆjƒ}ˆj ˆ |¡¡}‡‡fdd„}ˆj |¡ˆj |¡}ˆ  ˆjˆj|¡ˆ  ˆjˆj ¡dS)NrBrpcs(ˆ ˆj¡ˆ ˆj¡ˆ ˆj¡dSrr\rrUrrr]ös  z(StreamTests.test_readexactly..cb) rrr ÚlenrWr^r¡r_r,r/rT)rÚnrar]r8rrUrÚtest_readexactlyïs  zStreamTests.test_readexactlycCsJtjd|jd}| d¡|j | d¡¡}| d|¡| d|j¡dSry)rrr rSr,r¡r/rTrYrrrÚtest_readexactly_limits   z"StreamTests.test_readexactly_limitcsÆtjˆjd‰dtˆjƒ}ˆj ˆ |¡¡}‡‡fdd„}ˆj |¡ˆ tj ¡}ˆj  |¡Wdƒn1sv0Yˆ  |j j ˆj¡ˆ  |j j|¡ˆ  t|j ƒd¡ˆ  dˆj¡dS)NrBrpcsˆ ˆj¡ˆ ¡dSr)rSrWrfrrUrrr] s z,StreamTests.test_readexactly_eof..cbz-18 bytes read on a total of 36 expected bytesr%)rrr r£rWr^r¡r_rNr—r,r/r˜r™r›ÚstrrT)rr¤rar]r„rrUrÚtest_readexactly_eofs * ÿz StreamTests.test_readexactly_eofcCs^tj|jd}| d¡|j | d¡¡}| d|¡| tƒ¡|  t|jj| d¡¡dSrn) rrr rSr,r¡r/rrrsrNrYrrrÚtest_readexactly_exceptions   ÿz&StreamTests.test_readexactly_exceptioncCs@tj|jd}| | ¡¡tƒ}| |¡| | ¡|¡dSrA)rrr ršr˜rsrrr©rrÚexcrrrÚtest_exception%s  zStreamTests.test_exceptioncs`tj|jd‰‡fdd„}|j ˆ ¡¡}|j |ƒ¡}|j t ||g¡¡| t|j ¡dS)NrBc“sˆ tƒ¡dSr)rrrsrrgrrÚset_err0sz2StreamTests.test_exception_waiter..set_err) rrr r^r.r,ÚwaitrNrsÚresult)rr­Út1Út2rrgrÚtest_exception_waiter-s  z!StreamTests.test_exception_waitercCsjtj|jd}|j | ¡¡}t |j¡| ¡t |j¡| t dƒ¡t |j¡|  |j d¡dS)NrBÚmessage) rrr r^r.rrÚcancelrrÚ RuntimeErrorrÚ_waiter)rrÚtrrrÚtest_exception_cancel:s   z!StreamTests.test_exception_cancelcsGdd„dƒ}‡fdd„}g‰ˆj ‡fdd„¡|ˆjƒ}ˆ t¡| ¡}Wdƒn1sd0Yˆj ˆj ||ƒ¡¡}| ¡ˆ |d¡|ˆjƒ}ˆ t¡|  ¡}Wdƒn1sÌ0Yˆj ˆj ||ƒ¡¡}| ¡ˆ |d¡ˆ ˆg¡dS)Nc@s<eZdZdd„Zdd„Zdd„Zdd„Zd d „Zd d „Zd S)z/StreamTests.test_start_server..MyServercSsd|_||_dSr)Úserverr )rr rrrÚ__init__Jsz8StreamTests.test_start_server..MyServer.__init__cÓs@| ¡IdH}| |¡| ¡IdH| ¡| ¡IdHdSr©r.r-ÚdrainrÚ wait_closed©rÚ client_readerÚ client_writerr8rrrÚ handle_clientNs  z=StreamTests.test_start_server..MyServer.handle_clientcSs0t d¡}|j tj|j||jd¡|_| ¡S)N©z 127.0.0.1r)Úsockr ) ÚsocketÚ create_serverr r,rÚ start_serverrÁr¹Ú getsockname)rrÃrrrÚstartUs þÿz5StreamTests.test_start_server..MyServer.startcSs|j | ||¡¡dSr©r r^rÁ©rr¿rÀrrrÚhandle_client_callback]s ÿzFStreamTests.test_start_server..MyServer.handle_client_callbackcSsFt d¡}| ¡}| ¡|j tj|j|d|d|jd¡|_ |S)NrÂré)ÚhostÚportr ) rÄrÅrÇrr r,rrÆrËr¹)rrÃÚaddrrrrÚstart_callbackas  þÿz>StreamTests.test_start_server..MyServer.start_callbackcSs0|jdur,|j ¡|j |j ¡¡d|_dSr©r¹rr r,r½rrrrÚstopks  z4StreamTests.test_start_server..MyServer.stopN© Ú__name__Ú __module__Ú __qualname__rºrÁrÈrËrÐrÒrrrrÚMyServerHs  r×c“sxˆ t¡,tj|dˆjiŽIdH\}}Wdƒn1s<0Y| d¡| ¡IdH}| ¡| ¡IdH|S)Nr ó hello world! ) r*r+rr<r r-r.rr½)rÏr5r6ÚmsgbackrrrÚclientqs ÿÿ. z-StreamTests.test_start_server..clientcs ˆ |¡Srrr r"rrr$~r%z/StreamTests.test_start_server..rØ) r r)r*r+rÈr,r^rÒr/rÐ)rr×rÚr¹rÏÚmsgr©r#rrÚtest_start_serverFs")   &   & zStreamTests.test_start_serverc sjGdd„dƒ}‡fdd„}g‰ˆj ‡fdd„¡t ¡z}|ˆj|ƒ}ˆ t¡| ¡Wdƒn1sp0Yˆj ˆj ||ƒ¡¡}|  ¡ˆ  |d¡Wdƒn1sº0Yt ¡|}|ˆj|ƒ}ˆ t¡|  ¡Wdƒn1s0Yˆj ˆj ||ƒ¡¡}|  ¡ˆ  |d¡Wdƒn1sP0Yˆ  ˆg¡dS)Nc@s<eZdZdd„Zdd„Zdd„Zdd„Zd d „Zd d „Zd S)z4StreamTests.test_start_unix_server..MyServercSsd|_||_||_dSr)r¹r Úpath)rr rÞrrrrº—sz=StreamTests.test_start_unix_server..MyServer.__init__cÓs@| ¡IdH}| |¡| ¡IdH| ¡| ¡IdHdSrr»r¾rrrrÁœs  zBStreamTests.test_start_unix_server..MyServer.handle_clientcSs$|j tj|j|j|jd¡|_dS©N)rÞr )r r,rÚstart_unix_serverrÁrÞr¹rrrrrÈ£s þÿz:StreamTests.test_start_unix_server..MyServer.startcSs|j | ||¡¡dSrrÉrÊrrrrË©s ÿzKStreamTests.test_start_unix_server..MyServer.handle_client_callbackcSs(tj|j|j|jd}|j |¡|_dSrß)rràrËrÞr r,r¹)rrÈrrrrЭs þzCStreamTests.test_start_unix_server..MyServer.start_callbackcSs0|jdur,|j ¡|j |j ¡¡d|_dSrrÑrrrrrÒ³s  z9StreamTests.test_start_unix_server..MyServer.stopNrÓrrrrrוs r×c“svˆ t¡*tj|ˆjdIdH\}}Wdƒn1s:0Y| d¡| ¡IdH}| ¡| ¡IdH|S)NrBrØ) r*r+rrDr r-r.rr½)rÞr5r6rÙrrrrÚ¹s ÿ. z2StreamTests.test_start_unix_server..clientcs ˆ |¡Srrr r"rrr$Ær%z4StreamTests.test_start_unix_server..rØ) r r)rZunix_socket_pathr*r+rÈr,r^rÒr/rÐ)rr×rÚrÞr¹rÛrrÜrÚtest_start_unix_server’s.$    &ÿ*   (ÿ,z"StreamTests.test_start_unix_serverÚwin32zDon't have pipesc sd}t ¡\}}tjd|t|ƒg}t|ddƒ}tj|jdd}tj ||jd‰|j  |j  ‡fdd „|¡¡\}}t  ¡} |   |j¡zFt | ¡tj|d |hiŽ} |j  | ¡} |j  |  ¡¡Wt d¡n t d¡0t |¡|j  | d ¡¡} | | d ¡dS) NzHimport os, sys fd = int(sys.argv[1]) os.write(fd, b'data') os.close(fd) z-cÚrbrrÌrrBcsˆSrrr©Úprotocolrrr$ór%z.Úpass_fdsrjódata)ÚosÚpipeÚsysÚ executabler§Úopenrrr ÚStreamReaderProtocolr,Zconnect_read_pipeZSafeChildWatcherZ attach_loopZset_child_watcherZcreate_subprocess_execr®rr0r/) rÚcodeZrfdZwfdÚargsrér5Z transportÚ_ZwatcherZcreateÚprocr8rrärÚtest_read_all_from_pipe_readerÞs0  ÿ  ÿþ  z*StreamTests.test_read_all_from_pipe_readercCs6| tjd¡t |j¡t ¡}| |j|j¡dSr)Ú addCleanuprrr rrr)rr5rrrÚtest_streamreader_constructors z)StreamTests.test_streamreader_constructorcCs@| tjd¡t |j¡t ¡}t |¡}| |j|j¡dSr) rórrr rÚMockrírr)rr5rårrrÚ%test_streamreaderprotocol_constructors   z1StreamTests.test_streamreaderprotocol_constructorcs¶g‰ˆj ‡fdd„¡t ¡‰‡fdd„}‡fdd„}tj|d}| d¡| ¡ˆ ¡}ˆ  t t t f¡ ˆj  ||Ž¡Wdƒn1s”0Y| ¡ˆ gˆ¡dS) Ncs ˆ |¡Srrr r"rrr$"r%z/StreamTests.test_drain_raises..csTt d¡6}| ¡}ˆ |¡| ¡\}}| ¡Wdƒn1sF0YdS)N)Ú localhostr)rÄrÅrÇÚputÚacceptr)rÃrÏZcltrð)Úqrrr¹%s    z-StreamTests.test_drain_raises..serverc“sdˆ t¡,tj||ˆjdIdH\}}Wdƒn1s<0Y| d¡| ¡IdHqFdS)NrBsfoo )r*r+rr<r r-r¼)rÍrÎr5r6rrrrÚ-s  ÿ. z-StreamTests.test_drain_raises..client)ÚtargetT)r r)ÚqueueÚQueueÚ threadingÚThreadÚ setDaemonrÈÚgetrNÚConnectionResetErrorÚConnectionAbortedErrorÚBrokenPipeErrorr,Újoinr/)rr¹rÚÚthreadrÏr)r#rúrrÚtest_drain_raisess   ÿ.zStreamTests.test_drain_raisescCs"tj|jd}| dt|ƒ¡dS)NrBú©rrr r/ÚreprrUrrrÚ test___repr__FszStreamTests.test___repr__cCs$tj|jdd}| dt|ƒ¡dS)Né{rzr rUrrrÚtest___repr__nondefault_limitJsz)StreamTests.test___repr__nondefault_limitcCs*tj|jd}| ¡| dt|ƒ¡dS)NrBz)rrr rfr/r rUrrrÚtest___repr__eofNszStreamTests.test___repr__eofcCs,tj|jd}| d¡| dt|ƒ¡dS)NrBrçz)rrr rSr/r rUrrrÚtest___repr__dataSs zStreamTests.test___repr__datacCs2tj|jd}tƒ}| |¡| dt|ƒ¡dS)NrBz')rrr rµrrr/r rªrrrÚtest___repr__exceptionXs  ÿz"StreamTests.test___repr__exceptioncCsbtj|jd}tj|jd|_| t|ƒd¡|j d¡|j |j¡d|_|  dt|ƒ¡dS)NrBz,>r) rrr ÚFuturer¶Z assertRegexr Ú set_resultr,r/rUrrrÚtest___repr__waiter_sþ zStreamTests.test___repr__waitercCsBtj|jd}t ¡|_t ¡|j_d|jj_| dt |ƒ¡dS)NrBz z$>) rrr rrõZ _transportÚ__repr__rr/r rUrrrÚtest___repr__transportjs    z"StreamTests.test___repr__transportc Cs˜t dd¡}ttjdƒD]x}|j|dXt tj||d¡}| t |ƒt |ƒ¡| |j |j ¡| |j |j ¡Wdƒq1sˆ0YqdS)Nsabcé rÌ©Zpickle_protocolrä) rr—ÚrangeÚpickleÚHIGHEST_PROTOCOLÚsubTestÚloadsÚdumpsr/r§r™r›©rÚeÚprotoÚe2rrrÚ#test_IncompleteReadError_pickleableqs z/StreamTests.test_IncompleteReadError_pickleablec Csˆt dd¡}ttjdƒD]h}|j|dHt tj||d¡}| t |ƒt |ƒ¡| |j |j ¡Wdƒq1sx0YqdS)Nr³rrÌrrä) rrŸrrrrrrr/r§ÚconsumedrrrrÚ!test_LimitOverrunError_pickleablezs  z-StreamTests.test_LimitOverrunError_pickleablec Csøt ¡Ü}| t¡0|j tj|jd|jiŽ¡\}}Wdƒn1sJ0Y|  d¡|  ¡}|j |¡}|  |d¡|  ¡}|j |¡}|  | d¡¡| | ¡¡| ¡|  | ¡¡|j | ¡¡Wdƒn1sê0YdS)Nr r&r'r()rr;r*r+r r,rr<r=r-r.r/r0r1r2rZ is_closingrr½©rr?ÚrdÚwrr7r8rrrÚtest_wait_closed_on_close‚s   ÿ&    z%StreamTests.test_wait_closed_on_closec Cs¸t ¡œ}| t¡0|j tj|jd|jiŽ¡\}}Wdƒn1sJ0Y|  d¡|  ¡}|j |¡}|  |d¡|  ¡|j |  ¡¡Wdƒn1sª0YdS)Nr r&r')rr;r*r+r r,rr<r=r-r.r/rr½r%rrrÚ*test_wait_closed_on_close_with_unread_data”s  ÿ&   z6StreamTests.test_wait_closed_on_close_with_unread_datacsl‡fdd„}g‰ˆj ‡fdd„¡t ¡ }ˆj ||ƒ¡Wdƒn1sR0Yˆ ˆg¡dS)Nc“srtj|jŽIdH\}}| d¡| ¡IdH}ˆ |d¡| ¡IdH}ˆ | d¡¡|  ¡|  ¡IdHdS)Nr&r'r() rr<r=r-r.r/r0r1r2rr½©r?r&r'r8rrrÚinner¢s  z0StreamTests.test_async_writer_api..innercs ˆ |¡Srrr r"rrr$®r%z3StreamTests.test_async_writer_api..©r r)rr;r,r/©rr+r?rrÜrÚtest_async_writer_api¡s   .z!StreamTests.test_async_writer_apicsl‡fdd„}g‰ˆj ‡fdd„¡t ¡ }ˆj ||ƒ¡Wdƒn1sR0Yˆ ˆg¡dS)Nc“s¦tj|jŽIdH\}}| d¡| ¡IdH}ˆ |d¡| ¡IdH}ˆ | d¡¡|  ¡ˆ  t ¡(| d¡|  ¡IdHWdƒn1s˜0YdS)Nr&r'r(rç) rr<r=r-r.r/r0r1r2rrNrr¼r*rrrr+¶s    zFStreamTests.test_async_writer_api_exception_after_close..innercs ˆ |¡Srrr r"rrr$Är%zIStreamTests.test_async_writer_api_exception_after_close..r,r-rrÜrÚ+test_async_writer_api_exception_after_closeµs   .z7StreamTests.test_async_writer_api_exception_after_closec sÊg‰|j ‡fdd„¡t ¡Š}| t¡0|j tj|j d|jiŽ¡\}}Wdƒn1sb0Y|  ¡|  ¡}|j |¡|  ¡}|j |¡}Wdƒn1s°0Y|  ˆg¡dS)Ncs ˆ |¡Srrr r"rrr$Îr%z?StreamTests.test_eof_feed_when_closing_writer..r )r r)rr;r*r+r,rr<r=rr½r0r/r%rr"rÚ!test_eof_feed_when_closing_writerËs    ÿÿ&  z-StreamTests.test_eof_feed_when_closing_writer)NrÔrÕrÖrWr rrZpatchrr9r@rZskip_unless_bind_unix_socketrErFÚunittestZskipIfrHrJrLrOrPrQrVrXrZrbrerirmrtrxr{r}r~r€r…rˆr‰rŠr‹rŒrr“r•rœr r¢r¥r¦r¨r©r¬r²r¸rÝrárêÚplatformròrôrörr r rrrrrr"r$r(r)r.r/r0Ú __classcell__rrrrr s’             /   #     L K '  -   r Ú__main__)rrèrürrÄrêrþr1rZ test.supportrrHÚ ImportErrorrZtest.test_asynciorrr ZTestCaser rÔÚmainrrrrÚs4      N