a  ze@sdZddlZddlZddlZddlZddlZddlZddlZddlZddlm Z ddl m Z z ddl Z Wne y~dZ Yn0ddlZddlmZddZGdd d ejZed kredS) zTests for streams.py.N)mock) socket_helper)utilscCstddSN)asyncioZset_event_loop_policyrrR/opt/bitninja-python-dojo/embedded/lib/python3.9/test/test_asyncio/test_streams.pytearDownModulesr cspeZdZdZfddZfddZedddZd d Z d d Z e j d dZ ddZeedudddZe j eedudddZddZddZe j ddZddZdd Zd!d"Zd#d$Zd%d&Zd'd(Zd)d*Zd+d,Zd-d.Zd/d0Z d1d2Z!d3d4Z"d5d6Z#d7d8Z$d9d:Z%d;d<Z&d=d>Z'd?d@Z(dAdBZ)dCdDZ*dEdFZ+dGdHZ,dIdJZ-dKdLZ.dMdNZ/dOdPZ0dQdRZ1dSdTZ2dUdVZ3dWdXZ4dYdZZ5d[d\Z6d]d^Z7e j d_d`Z8ee9j:dakdbdcddZ;dedfZdkdlZ?dmdnZ@dodpZAdqdrZBdsdtZCdudvZDdwdxZEdydzZFd{d|ZGd}d~ZHddZIddZJddZKddZLZMS) StreamTestssline1 line2 line3 cs$tt|_||jdSr)supersetUprZnew_event_looploopset_event_loopself __class__rrr s  zStreamTests.setUpcs,t|j|jttdSr) test_utils run_brieflyr closegcZcollectr tearDownrrrrr#s  zStreamTests.tearDownzasyncio.streams.eventscCst}||j|jjdSr)r StreamReaderassertIs_loopZget_event_loop return_value)rZm_eventsstreamrrrtest_ctor_global_loop+sz!StreamTests.test_ctor_global_loopcsg|jfdd|t |j|\}}Wdn1sH0Y|d|}|j|}||d|}|j|}| | d| |gdS)Ncs |Srappendr ctxmessagesrr2z7StreamTests._basetest_open_connection..GET / HTTP/1.0 HTTP/1.0 200 OK  Test message) r set_exception_handler assertWarnsDeprecationWarningrun_until_completewritereadline assertEqualread assertTrueendswithrropen_connection_futreaderwriterfdatarr"r_basetest_open_connection0s .    z%StreamTests._basetest_open_connectioncCsJt.}tj|jd|ji}||Wdn1s<0YdSNr )rrun_test_serverropen_connectionaddressr r9rhttpdZconn_futrrrtest_open_connection?s   z StreamTests.test_open_connectioncCsHt,}tj|j|jd}||Wdn1s:0YdSNr )rrun_test_unix_serverropen_unix_connectionr=r r9r>rrrtest_open_unix_connectionEs  z%StreamTests.test_open_unix_connectionc sg|jfddzH|t |j|\}}Wdn1sJ0YWtdn td0|d|}|j|}| | d| | gdS)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}||Wdn1sF0YdS)NTZuse_ssl)sslr )rr;rr<r=dummy_ssl_contextr rFr>rrr test_open_connection_no_loop_ssl\sz,StreamTests.test_open_connection_no_loop_sslcCsTtjdd4}tj|jtd|jd}||Wdn1sF0YdS)NTrG)rHZserver_hostnamer )rrCrrDr=rIr rFr>rrr%test_open_unix_connection_no_loop_sslfsz1StreamTests.test_open_unix_connection_no_loop_sslcsg|jfdd|t |j|\}}Wdn1sH0Y|jt|}| t|j|Wdn1s0Y| t |j| gdS)Ncs |Srrr r"rrr$tr%z=StreamTests._basetest_open_connection_error..)r r)r*r+r,Z _protocolZconnection_lostZeroDivisionErrorr0 assertRaisesrrrr/)rr4r5r6r7rr"r_basetest_open_connection_errorrs . * z+StreamTests._basetest_open_connection_errorcCsJt.}tj|jd|ji}||Wdn1s<0YdSr:)rr;rr<r=r rOr>rrrtest_open_connection_errors   z&StreamTests.test_open_connection_errorcCsHt,}tj|j|jd}||Wdn1s:0YdSrA)rrCrrDr=r rOr>rrrtest_open_unix_connection_errors  z+StreamTests.test_open_unix_connection_errorcCs*tj|jd}|d|d|jdSNrBr%)rrr feed_datar/_bufferrrrrrtest_feed_empty_datas z StreamTests.test_feed_empty_datacCs.tj|jd}||j||j|jdSrA)rrr rSDATAr/rTrUrrrtest_feed_nonempty_datas z#StreamTests.test_feed_nonempty_datacCsLtj|jd}||j|j|d}|d|||j|jdS)NrBrr%) rrr rSrWr,r0r/rTrrr8rrrtest_read_zeros   zStreamTests.test_read_zerocsftjjdjd}fdd}j|j|}j|dj dS)NrBcsjdSrrSrWrrUrrcbsz!StreamTests.test_read..cbr%) rrr create_taskr0 call_soonr,r/rWrTr read_taskr]r8rrUr test_reads  zStreamTests.test_readcCsRtj|jd}|d|d|j|d}|d||d|jdS)NrBsline1sline2rrr rSr,r0r/rTrYrrrtest_read_line_breakss    z!StreamTests.test_read_line_breakscsbtj|jd|jd}fdd}|j||j|}|d||djdS)NrBics dSr)feed_eofrrrrr]sz%StreamTests.test_read_eof..cbr% rrr r^r0r_r,r/rTr`rrgr test_read_eofs    zStreamTests.test_read_eofcsbtj|jd|jd}fdd}|j||j|}|d||djdS)NrBcs dddS)Nschunk1 chunk2rSrfrrgrrr]s  z+StreamTests.test_read_until_eof..cbs chunk1 chunk2r%rhr`rrgrtest_read_until_eofs    zStreamTests.test_read_until_eofcCs^tj|jd}|d|j|d}|d||t| t|jj|ddSNrBline li) rrr rSr,r0r/ set_exception ValueErrorrNrYrrrtest_read_exceptions   zStreamTests.test_read_exceptioncCs||td tjd|jdWdn1s20Y|td tjd|jdWdn1sn0YdS)NZimitrlimitr rj)assertRaisesRegexrsrrr rrrrtest_invalid_limits.zStreamTests.test_invalid_limitcCsJtjd|jd}|d|j|d}|d||d|jdSNruschunkrcr%rdrYrrrtest_read_limits   zStreamTests.test_read_limitcsjtj|jdd|j}fdd}|j||j|}|d||dj dS)NrBschunk1 cs"ddddS)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_readlines     zStreamTests.test_readlinecCstjd|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_datacCstj|jd}|||d|||j||||d||j|| |dS)NrBs some data ) rrr assertFalseat_eofrSr,r.rfr1rUrrr test_at_eofs  zStreamTests.test_at_eofcstjd|jdfdd}|j||t|jj|dj tjd|jdfdd}|j||t|jj|dj tjd|jd d|j}|d||dj  d |t }|jWdn1s0Y|dj  d |t }|jWdn1sl0Y|dj dS) Nrucs*ddddS)Nchunk1rkchunk3 rlrrgrrr]/s   z+StreamTests.test_readline_limit..cbr%cs*ddddS)Nrschunk2 rrlrrgrrr]=s   rs1234567 s 12345678 s12345678) rrr r_rNrsr,r.r/rTrS)rr]r|cmrrgrtest_readline_limit*s6        0  0zStreamTests.test_readline_limitcCsdtj|jd}||jdd||jdd|j|}|d||d|jdS)NrBsline1 s line2 line3 ) rrr rSrWr,r.r/rTrrr|rrrtest_readline_nolimit_nowaitYs  z(StreamTests.test_readline_nolimit_nowaitcCs@tj|jd}|d||j|}|d|dS)NrBs some data)rrr rSrfr,r.r/rrrrtest_readline_eofes  zStreamTests.test_readline_eofcCs6tj|jd}||j|}|d|dSrR)rrr rfr,r.r/rrrrtest_readline_empty_eofmsz#StreamTests.test_readline_empty_eofcCsZtj|jd}||j|j||j|d}|d||d|j dS)NrBrsline2 lsine3 ) rrr rSrWr,r.r0r/rTrYrrrtest_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/rrrsrNrTrYrrrtest_readline_exceptions   z#StreamTests.test_readline_exceptioncCsRtj|jd}|td$|j|jddWdn1sD0YdS)NrBzSeparator should ber% separator)rrr rwrsr, readuntilrUrrrtest_readuntil_separatorsz$StreamTests.test_readuntil_separatorcCstj|jd}|d|j|jdd}|d||d|j|d|j|d}|d||d|j|d|j|d}|d||d|jdS)NrBslineAAAAAArr%s lineAAAxxxsxxxrrr rSr,rr/rTrYrrrtest_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|jdS) NrBsQWEaasXYaaasaaas QWEaaXYaaar%sXYasaasXaaasXXXsXXXaaarrYrrrtest_readuntil_multi_chunks_1s8                 z)StreamTests.test_readuntil_multi_chunks_1cCstj|jd}d}||||tjd"}|j|dWdn1sZ0Y| |j j || |j j | d|jdS)NrB some dataAAzundefined expected bytesrr%)rrr rSrfrwIncompleteReadErrorr,rr/ exceptionpartial assertIsNoneexpectedrT)rrr8rrrrtest_readuntil_eofs 0zStreamTests.test_readuntil_eofcCstj|jdd}|d|tjd"}|j|dWdn1sP0Y|d|j |d|tjd"}|j|dWdn1s0Y|d|j dS) Nrzr rvrz not foundrAzis founds some dataAAA) rrr rSrwLimitOverrunErrorr,rr/rT)rrrrrrtest_readuntil_limit_found_seps 0 0z*StreamTests.test_readuntil_limit_found_sepcCstj|jd}||j|j|d}|d|||j|j| t d"|j|dWdn1s|0Y||j|jdS)NrBrr%zless than zerorj) rrr rSrWr, readexactlyr/rTrwrsrYrrrtest_readexactly_zero_or_lesss  0z)StreamTests.test_readexactly_zero_or_lesscs|tjjddtj}j|}fdd}j|j|} jj| jj dS)NrBrpcs(jjjdSrr\rrUrrr]s  z(StreamTests.test_readexactly..cb) rrr lenrWr^rr_r,r/rT)rnrar]r8rrUrtest_readexactlys  zStreamTests.test_readexactlycCsJtjd|jd}|d|j|d}|d||d|jdSry)rrr rSr,rr/rTrYrrrtest_readexactly_limits   z"StreamTests.test_readexactly_limitcstjjddtj}j|}fdd}j|tj }j |Wdn1sv0Y |j j j |j j| t|j d djdS)NrBrpcsjdSr)rSrWrfrrUrrr] s z,StreamTests.test_readexactly_eof..cbz-18 bytes read on a total of 36 expected bytesr%)rrr rrWr^rr_rNrr,r/rrrstrrT)rrrar]rrrUrtest_readexactly_eofs * z StreamTests.test_readexactly_eofcCs^tj|jd}|d|j|d}|d||t| t|jj|ddSrn) rrr rSr,rr/rrrsrNrYrrrtest_readexactly_exceptions   z&StreamTests.test_readexactly_exceptioncCs@tj|jd}||t}|||||dSrA)rrr rrrsrrrrrexcrrrtest_exception%s  zStreamTests.test_exceptioncs`tj|jdfdd}|j}|j|}|jt||g|t|j dS)NrBcstdSr)rrrsrrgrrset_err0sz2StreamTests.test_exception_waiter..set_err) rrr r^r.r,waitrNrsresult)rrt1t2rrgrtest_exception_waiter-s  z!StreamTests.test_exception_waitercCsjtj|jd}|j|}t|j|t|j|t dt|j| |j ddS)NrBmessage) rrr r^r.rrcancelrr RuntimeErrorr_waiter)rrtrrrtest_exception_cancel:s   z!StreamTests.test_exception_cancelcsGddd}fdd}gjfdd|j}t|}Wdn1sd0Yjj||}||d|j}t| }Wdn1s0Yjj||}||dgdS)Nc@s<eZdZddZddZddZddZd d Zd d Zd S)z/StreamTests.test_start_server..MyServercSsd|_||_dSr)serverr )rr rrr__init__Jsz8StreamTests.test_start_server..MyServer.__init__cs@|IdH}|||IdH||IdHdSrr.r-drainr wait_closedr client_reader client_writerr8rrr handle_clientNs  z=StreamTests.test_start_server..MyServer.handle_clientcSs0td}|jtj|j||jd|_|S)Nz 127.0.0.1r)sockr ) socket create_serverr r,r start_serverrr getsockname)rrrrrstartUs z5StreamTests.test_start_server..MyServer.startcSs|j|||dSrr r^rrrrrrrhandle_client_callback]s zFStreamTests.test_start_server..MyServer.handle_client_callbackcSsFtd}|}||jtj|j|d|d|jd|_ |S)Nrr)hostportr ) rrrrr r,rrrr)rraddrrrrstart_callbackas  z>StreamTests.test_start_server..MyServer.start_callbackcSs0|jdur,|j|j|jd|_dSrrrr r,rrrrrstopks  z4StreamTests.test_start_server..MyServer.stopN __name__ __module__ __qualname__rrrrrrrrrrMyServerHs  rcsxt,tj|djiIdH\}}Wdn1s<0Y|d|IdH}||IdH|S)Nr hello world! ) r*r+rr<r r-r.rr)rr5r6msgbackrrrclientqs . z-StreamTests.test_start_server..clientcs |Srrr r"rrr$~r%z/StreamTests.test_start_server..r) r r)r*r+rr,r^rr/r)rrrrrmsgrr#rrtest_start_serverFs")   &   & zStreamTests.test_start_serverc sjGddd}fdd}gjfddtz}|j|}t|Wdn1sp0Yjj||}|  |dWdn1s0Yt|}|j|}t| Wdn1s0Yjj||}|  |dWdn1sP0Y gdS)Nc@s<eZdZddZddZddZddZd d Zd d Zd S)z4StreamTests.test_start_unix_server..MyServercSsd|_||_||_dSr)rr path)rr rrrrrsz=StreamTests.test_start_unix_server..MyServer.__init__cs@|IdH}|||IdH||IdHdSrrrrrrrs  zBStreamTests.test_start_unix_server..MyServer.handle_clientcSs$|jtj|j|j|jd|_dSN)rr )r r,rstart_unix_serverrrrrrrrrs z:StreamTests.test_start_unix_server..MyServer.startcSs|j|||dSrrrrrrrs zKStreamTests.test_start_unix_server..MyServer.handle_client_callbackcSs(tj|j|j|jd}|j||_dSr)rrrrr r,r)rrrrrrs zCStreamTests.test_start_unix_server..MyServer.start_callbackcSs0|jdur,|j|j|jd|_dSrrrrrrrs  z9StreamTests.test_start_unix_server..MyServer.stopNrrrrrrs rcsvt*tj|jdIdH\}}Wdn1s:0Y|d|IdH}||IdH|S)NrBr) r*r+rrDr r-r.rr)rr5r6rrrrrs . z2StreamTests.test_start_unix_server..clientcs |Srrr r"rrr$r%z4StreamTests.test_start_unix_server..r) r r)rZunix_socket_pathr*r+rr,r^rr/r)rrrrrrrrrtest_start_unix_servers.$    &*   (,z"StreamTests.test_start_unix_serverwin32zDon't have pipesc sd}t\}}tjd|t|g}t|dd}tj|jdd}tj ||jd|j |j fdd |\}}t } | |jzFt| tj|d |hi} |j | } |j | Wtdn td0t||j |d } || d dS) NzHimport os, sys fd = int(sys.argv[1]) os.write(fd, b'data') os.close(fd) z-crbrrrrBcsSrrrprotocolrrr$r%z.pass_fdsrjdata)ospipesys executableropenrrr StreamReaderProtocolr,Zconnect_read_pipeZSafeChildWatcherZ attach_loopZset_child_watcherZcreate_subprocess_execrrr0r/) rcodeZrfdZwfdargsrr5Z transport_ZwatcherZcreateprocr8rrrtest_read_all_from_pipe_readers0      z*StreamTests.test_read_all_from_pipe_readercCs6|tjdt|jt}||j|jdSr) addCleanuprrr rrr)rr5rrrtest_streamreader_constructors z)StreamTests.test_streamreader_constructorcCs@|tjdt|jt}t|}||j|jdSr) rrrr rMockrrr)rr5rrrr%test_streamreaderprotocol_constructors   z1StreamTests.test_streamreaderprotocol_constructorcsgjfddtfdd}fdd}tj|d}|d|} t t t f j ||Wdn1s0Y|gdS) Ncs |Srrr r"rrr$"r%z/StreamTests.test_drain_raises..csTtd6}|}||\}}|Wdn1sF0YdS)N) localhostr)rrrputacceptr)rrZcltr)qrrr%s    z-StreamTests.test_drain_raises..servercsdt,tj||jdIdH\}}Wdn1s<0Y|d|IdHqFdS)NrBsfoo )r*r+rr<r r-r)rrr5r6rrrr-s  . z-StreamTests.test_drain_raises..client)targetT)r r)queueQueue threadingThread setDaemonrgetrNConnectionResetErrorConnectionAbortedErrorBrokenPipeErrorr,joinr/)rrrthreadrr)r#rrrtest_drain_raisess   .zStreamTests.test_drain_raisescCs"tj|jd}|dt|dS)NrBrrr r/reprrUrrr test___repr__FszStreamTests.test___repr__cCs$tj|jdd}|dt|dS)N{rzr rUrrrtest___repr__nondefault_limitJsz)StreamTests.test___repr__nondefault_limitcCs*tj|jd}||dt|dS)NrBz)rrr rfr/r rUrrrtest___repr__eofNszStreamTests.test___repr__eofcCs,tj|jd}|d|dt|dS)NrBrz)rrr rSr/r rUrrrtest___repr__dataSs zStreamTests.test___repr__datacCs2tj|jd}t}|||dt|dS)NrBz')rrr rrrr/r rrrrtest___repr__exceptionXs  z"StreamTests.test___repr__exceptioncCsbtj|jd}tj|jd|_|t|d|jd|j|jd|_| dt|dS)NrBz,>r ) rrr FuturerZ assertRegexr  set_resultr,r/rUrrrtest___repr__waiter_s zStreamTests.test___repr__waitercCsBtj|jd}t|_t|j_d|jj_|dt |dS)NrBz z$>) rrr rrZ _transport__repr__rr/r rUrrrtest___repr__transportjs    z"StreamTests.test___repr__transportc Cstdd}ttjdD]x}|j|dXttj||d}|t |t |||j |j ||j |j Wdq1s0YqdS)Nsabc rZpickle_protocolr) rrrangepickleHIGHEST_PROTOCOLsubTestloadsdumpsr/rrrreprotoe2rrr#test_IncompleteReadError_pickleableqs z/StreamTests.test_IncompleteReadError_pickleablec Cstdd}ttjdD]h}|j|dHttj||d}|t |t |||j |j Wdq1sx0YqdS)Nrrrrr) rrrrrrrrr/rconsumedrrrr!test_LimitOverrunError_pickleablezs  z-StreamTests.test_LimitOverrunError_pickleablec Cst}|t0|jtj|jd|ji\}}Wdn1sJ0Y| d| }|j|}| |d| }|j|}| |d|||| ||j|Wdn1s0YdS)Nr r&r'r()rr;r*r+r r,rr<r=r-r.r/r0r1r2rZ is_closingrrrr?rdwrr7r8rrrtest_wait_closed_on_closes   &    z%StreamTests.test_wait_closed_on_closec Cst}|t0|jtj|jd|ji\}}Wdn1sJ0Y| d| }|j|}| |d| |j| Wdn1s0YdS)Nr r&r')rr;r*r+r r,rr<r=r-r.r/rrr&rrr*test_wait_closed_on_close_with_unread_datas  &   z6StreamTests.test_wait_closed_on_close_with_unread_datacslfdd}gjfddt }j||Wdn1sR0YgdS)Ncsrtj|jIdH\}}|d|IdH}|d|IdH}|d| | IdHdS)Nr&r'r() rr<r=r-r.r/r0r1r2rrr?r'r(r8rrrinners  z0StreamTests.test_async_writer_api..innercs |Srrr r"rrr$r%z3StreamTests.test_async_writer_api..r r)rr;r,r/rr,r?rrrtest_async_writer_apis   .z!StreamTests.test_async_writer_apicslfdd}gjfddt }j||Wdn1sR0YgdS)Ncstj|jIdH\}}|d|IdH}|d|IdH}|d|  t (|d| IdHWdn1s0YdS)Nr&r'r(r) rr<r=r-r.r/r0r1r2rrNrrr+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.rrr+test_async_writer_api_exception_after_closes   .z7StreamTests.test_async_writer_api_exception_after_closec sg|jfddt}|t0|jtj|j d|ji\}}Wdn1sb0Y| | }|j|| sJ| }|j|}|dksJWdn1s0Y|gdS)Ncs |Srrr r"rrr$r%z?StreamTests.test_eof_feed_when_closing_writer..r r%)r r)rr;r*r+r,rr<r=rrrr0r/r&rr"r!test_eof_feed_when_closing_writers"   &   *z-StreamTests.test_eof_feed_when_closing_writer)NrrrrWr rrZpatchrr9r@rZskip_unless_bind_unix_socketrErFunittestZskipIfrHrJrLrOrPrQrVrXrZrbrerirmrtrxr{r}r~rrrrrrrrrrrrrrrrrrrrrrrplatformrrrrr rrrrrrr#r%r)r*r/r0r1 __classcell__rrrrr s             /   #     L K '  -   r __main__)__doc__rrrrrrrr2rZ test.supportrrH ImportErrorrZtest.test_asynciorrr ZTestCaser rmainrrrrs6      N