a  zeT@sdZddlZddlZddlZddlZddlmZddlZddlmZddlm Z ddlm Z ddlm Z ddlm Z dd l mZdd lmZdd lmZd d ZddZGdddejZGdddejZGdddejZeejdkdGdddejZedkredS)zTests for proactor_events.pyN)mock)BaseProactorEventLoop)_ProactorSocketTransport)_ProactorWritePipeTransport)_ProactorDuplexPipeTransport)_ProactorDatagramTransport)support) socket_helper)utilscCstddSN)asyncioZset_event_loop_policyr r Z/opt/bitninja-python-dojo/embedded/lib/python3.9/test/test_asyncio/test_proactor_events.pytearDownModulesrcCs"|jdurdS|jd|_dSr )_sockclose) transportr r rclose_transports  rcsbeZdZfddZdRddZddZdd Zd d Zd d ZddZ ddZ ddZ ddZ ddZ ddZddZddZddZed d!d"Zd#d$Zd%d&Zd'd(Zd)d*Zd+d,Zd-d.Zed/d0d1Zd2d3Zd4d5Zd6d7Zd8d9Zd:d;Z dd?Z"d@dAZ#dBdCZ$dDdEZ%dFdGZ&dHdIZ'dJdKZ(dLdMZ)dNdOZ*dPdQZ+Z,S)SProactorSocketTransportTestscsVt||_||jjt|_|j|j_ t t j |_ttj|_dSr )supersetUp new_test_looploop addCleanuprrMockproactor _proactor test_utilsmake_test_protocolr Protocolprotocolsocketsockself __class__r rr#s    z"ProactorSocketTransportTests.setUpNcCs&t|j|j|j|d}|t||S)Nwaiter)rrr"r rr)r$r(rr r rsocket_transport,s   z-ProactorSocketTransportTests.socket_transportcCsR|j}|j|d}t|j|||j||j j |j ddS)Nr') r create_futurer)r run_briefly assertIsNoneresultr connection_maderrecvassert_called_withr"r$futtrr r r test_ctor2s     z&ProactorSocketTransportTests.test_ctorcCsH|}||jjj|jd||jj j ||jj j dS)Nr*) r) _loop_readingrrr0r1r" assertFalser data_receivedcalled eof_receivedr$r4r r rtest_loop_reading:s z.ProactorSocketTransportTests.test_loop_readingcCsR|j}|d|}||_|||jjj|j d|j j ddS)Ndatar*) rr+ set_resultr) _read_futr6rr0r1r"r r8r$resr4r r rtest_loop_reading_dataAs   z3ProactorSocketTransportTests.test_loop_reading_datacCsz|j}|d|}|t|j|t|_ ||_ ||| |jj j j||jjj||j jdSN)rr+r>r) assertRaisesAssertionErrorr6rrrr?r7rr0r9 assertTruer r:r@r r rtest_loop_reading_no_dataKs    z6ProactorSocketTransportTests.test_loop_reading_no_datacCs>t}|jjj_|}t|_| |j |ddSNz"Fatal read error on pipe transport) ConnectionAbortedErrorrrr0 side_effectr)rr _fatal_errorr6r1r$errr4r r rtest_loop_reading_abortedYs z6ProactorSocketTransportTests.test_loop_reading_abortedcCs@t|jjj_|}d|_t|_ | | |j j dSNT) rJrrr0rKr)_closingrrrLr6r7r9r;r r r!test_loop_reading_aborted_closingcs  z>ProactorSocketTransportTests.test_loop_reading_aborted_closingcCs@t|jjj_|}d|_t|_ | | |j j dSNF) rJrrr0rKr)rQrrrLr6rGr9r;r r r"test_loop_reading_aborted_is_fatalls  z?ProactorSocketTransportTests.test_loop_reading_aborted_is_fatalcCsZt}|jjj_|}d|_t|_ t|_ | | |j j |j |dSrS)ConnectionResetErrorrrr0rKr)rQrrrL _force_closer6r7r9r1rMr r r!test_loop_reading_conn_reset_lostts  z>ProactorSocketTransportTests.test_loop_reading_conn_reset_lostcCs>t}|jjj_|}t|_| |j |ddSrI) OSErrorrrr0rKr)rrrLr6r1rMr r rtest_loop_reading_exceptions z8ProactorSocketTransportTests.test_loop_reading_exceptioncCs<|}t|_|d||jd|jjdddS)Nr=)data)r)rr _loop_writingwrite assertEqual_bufferr1r;r r r test_writes   z'ProactorSocketTransportTests.test_writecCs"|}|d||jdSrC)r)r\r7r^r;r r rtest_write_no_datas z/ProactorSocketTransportTests.test_write_no_datacCsF|}t|_t|_|d||jd||jj dSNr=) r)rr _write_futr[r\r]r^r7r9r;r r rtest_write_mores    z,ProactorSocketTransportTests.test_write_morecCsH|}td|_||jjj|jd|jjjj j |jdSra) r) bytearrayr^r[rrsendr1r" return_valueadd_done_callbackr;r r rtest_loop_writings z.ProactorSocketTransportTests.test_loop_writingasyncio.proactor_events.loggercCst}|jjj_|}t|_ddg|_ | |j |dd|_ | d| d| d| d| d||j d|j ddS)Nsdastaz#Fatal write error on pipe transportr=zsocket.send() raised exception.)rXrrrerKr)rrrLr^r[r1 _conn_lostr\r]warning)r$m_logrNr4r r rtest_loop_writing_errs"       z2ProactorSocketTransportTests.test_loop_writing_errcCs<|j}|d|}||_||||jdSra)rr+r>r)rbr[r-r2r r rtest_loop_writing_stops    z3ProactorSocketTransportTests.test_loop_writing_stopcCs^|j}|d|}||_|||||jt |j|j j ddSNrj) rr+r>r)rbrr[r-rr,r connection_lostr1r2r r rtest_loop_writing_closings     z6ProactorSocketTransportTests.test_loop_writing_closingcCs*|}t|_||jddSr )r)rrrVabortr1r;r r r test_aborts z'ProactorSocketTransportTests.test_abortcCsz|}|t|j|jjd|| | |j d|jj |t|j| |jjjdSrp)r)rrr,rr rqr1rG is_closingr]rk reset_mockr7r9r;r r r test_closes   z'ProactorSocketTransportTests.test_closecCs:|}t|_|t|j||j j j dSr ) r)rrrbrrr,rr7r rqr9r;r r rtest_close_write_futs   z1ProactorSocketTransportTests.test_close_write_futcCs8|}dg|_|t|j||jjj dSra) r)r^rrr,rr7r rqr9r;r r rtest_close_buffers  z.ProactorSocketTransportTests.test_close_bufferasyncio.base_events.loggercCs<|}t|_|d||jj||jjdSr )r)rrrVrLrGr9error)r$Z m_loggingr4r r rtest_fatal_errors   z-ProactorSocketTransportTests.test_fatal_errorcCs|}dg|_t}|_t}|_|d|j|jt |j |j j d|d|j||jddS)Nr=rj)r)r^rrr?rbrVcancelr1rr,rr rqr]rk)r$r4Zread_futZ write_futr r rtest_force_closes    z-ProactorSocketTransportTests.test_force_closecCsft}|j||j}|d||jj_| }| d| dt |j|dS)Nrjr=)rrrZset_exception_handlerr+r>rrerfr)r\rVrr,assert_not_called)r$Z exc_handlerr3r4r r rtest_loop_writing_force_closes       z:ProactorSocketTransportTests.test_loop_writing_force_closecCs8|}d|_|dt|j||jjj dSrP) r)rQrVrr,rr7r rqr9r;r r rtest_force_close_idempotents   z8ProactorSocketTransportTests.test_force_close_idempotentcCsF|}dg|_|dt|j|jjd| d|jdSra) r)r^rVrr,rr rqr1r]r;r r rtest_fatal_error_2s   z/ProactorSocketTransportTests.test_fatal_error_2cCs6|}|d||jjj||jjjdSr )r)Z_call_connection_lostrGr rqr9r"rr;r r rtest_call_connection_lost"s z6ProactorSocketTransportTests.test_call_connection_lostcCsT|}||||jjtj|| |jjj d| dSrp) r)rG can_write_eof write_eofr"shutdownr1r!SHUT_WRr]Z call_countrr;r r rtest_write_eof(sz+ProactorSocketTransportTests.test_write_eofcCs|}|j}||jjj_|d|| |j | |j j j|jjj|j d|d|j|j j tj|dSNr=)r)rr+_looprrerfr\rrGZ _eof_writtenr7r"rr9r1r> _run_oncer!rrr$r4fr r rtest_write_eof_buffer1s      z2ProactorSocketTransportTests.test_write_eof_buffercCs\t|j|j|j}||||||j||jj j | dSr ) rrr"r rGrrrurrr9r;r r rtest_write_eof_write_pipe?s  z6ProactorSocketTransportTests.test_write_eof_write_pipecCst|j|j|j}|j}||jjj_| d| | | | |jjj|jjj|jd|d|j|j| |jjj|dSr)rrr"r r+rrrerfr\rrGrur7rr9r1r>rrrr r r test_write_eof_buffer_write_pipeIs      z=ProactorSocketTransportTests.test_write_eof_buffer_write_pipecCs^t|j|j|j}|||t|Wdn1sH0Yt |dSr ) rrr"r r7rrENotImplementedErrorrrr;r r rtest_write_eof_duplex_pipeXs  &z7ProactorSocketTransportTests.test_write_eof_duplex_pipecCs|}g}dD]"}|j}||||q||jjj_|j| |j | | |j|j jd|j|j jd||| |j | | tdD]}|jq|j jd||| |j | | |j|j jd|j|j jd||t|j_|j|jj|j jd|| | dS)N)data1data2data3data4data5rDrr rrr)r)rr+r>appendrr0rKrr7Z_pausedrGZ is_readingr r8r1Z pause_readingrangeZresume_readingrrcall_exception_handlerrr)r$r4futuresmsgrir r rtest_pause_resume_reading`sJ                 z6ProactorSocketTransportTests.test_pause_resume_readingcCsH|}|j|d||d||jjj||jjj|S)Nhighr) r)Zset_write_buffer_limitsr]get_write_buffer_sizer7r pause_writingr9resume_writing)r$rr4r r rpause_writing_transports  z4ProactorSocketTransportTests.pause_writing_transportcCs~|jdd}|j}||jjj_|d|j||j j j | d|j| |d||j jj dS)Nrrs large datar)rrr+rrerfr\rrGr rr9r>r]rrr$r4r3r r rtest_pause_resume_writings       z6ProactorSocketTransportTests.test_pause_resume_writingcCs|jdd}|j}||jjj_|d|j|| d| |j j j |d|j|| d||j j j dS)Nrrs123abcrrr+rrerfr\rr]rr7r rr9rG)r$r4Zfut1r r rtest_pause_writing_2writes       z6ProactorSocketTransportTests.test_pause_writing_2writecCs|jdd}|j}||jjj_|d|j|| d| |j j j |d|j|| d| |j j j |d|j|| d||j j j dS) Nrr1rjs23rrrrrr r rtest_pause_writing_3writes         z6ProactorSocketTransportTests.test_pause_writing_3writecCsd|jdd}|j}|d||jjj_|d|j| | d| |j j jdS)Nrrsvery large datar)rrr+r>rrerfr\rr]rr7r rr9rr r rtest_dont_pause_writings      z4ProactorSocketTransportTests.test_dont_pause_writing)N)-__name__ __module__ __qualname__rr)r5r<rBrHrOrRrTrWrYr_r`rcrhrpatchrnrorrrtrwrxryr|r~rrrrrrrrrrrrrrr __classcell__r r r%rr!sR               - rcseZdZfddZd,ddZddZdd Zd d Zd d ZddZ ddZ ddZ e dddZddZddZddZddZdd Zd!d"Zd#d$Zd%d&Zd'd(Ze d)d*d+ZZS)-ProactorDatagramTransportTestscsTt||_t|_|j|j_t t j |_ tjt j d|_d|jj_dS)N)Zspec_set)rrrrrrrrrrr DatagramProtocolr r!r"filenorfr#r%r rrs    z$ProactorDatagramTransportTests.setUpNcCs8|rdnt|jj_t|j|j|j|d}|t||S)Naddress) rXr" getpeernamerKrrr rr)r$rrr r rdatagram_transports  z1ProactorDatagramTransportTests.datagram_transportcCsBd}|}||d||jjj|jjj|j|dddSNr=)0.0.0.0iaddr)rsendtorGrr9r1r"r$rZrr r r test_sendtos z*ProactorDatagramTransportTests.test_sendtocCsFtd}|}||d||jjj|jjj|jddddSr)rdrrrGrr9r1r"rr r rtest_sendto_bytearrays z4ProactorDatagramTransportTests.test_sendto_bytearraycCsFtd}|}||d||jjj|jjj|jddddSr) memoryviewrrrGrr9r1r"rr r rtest_sendto_memoryviews z5ProactorDatagramTransportTests.test_sendto_memoryviewcCsH|}|jd|dd||jjj|dgt|jdS)N)r=ri90rDr ) rr^rrr7r"r9r]listr$rr r rtest_sendto_no_datas   z2ProactorDatagramTransportTests.test_sendto_no_datacCsR|}|jdt|_|dd||jjj| ddgt |jdS)Nrrrrrr) rr^robjectrbrr7rr9r]rrr r rtest_sendto_buffers  z1ProactorDatagramTransportTests.test_sendto_buffercCsptd}|}|jdt|_||d||jjj | ddgt |j| |jddt dSNrrrrrjr)rdrr^rrrbrr7rr9r]rassertIsInstancebytesr$Zdata2rr r rtest_sendto_buffer_bytearrays  z;ProactorDatagramTransportTests.test_sendto_buffer_bytearraycCsptd}|}|jdt|_||d||jjj | ddgt |j| |jddt dSr)rrr^rrrbrr7rr9r]rrrrr r rtest_sendto_buffer_memoryview's  zrr?r6rrr1r"r rrr@r r rtest_datagram_loop_reading_dataMs   z:BaseProactorEventLoopTests.test_datagram_loop_reading_datacCs|j}|d|}|t|j|t|_ ||_ ||| |jj j j||jjj||j jt|dS)N)rDr)rr+r>rrErFr6rrrr?rGrrr9r7r rrr@r r r"test_datagram_loop_reading_no_dataXs    z=BaseProactorEventLoopTests.test_datagram_loop_reading_no_datacCsRt}|jjj_|}t|_t|j _ | |j j |t |dSr )rJrrrrKrrrrL _protocolrr6r1rrMr r r"test_datagram_loop_reading_abortedgs  z=BaseProactorEventLoopTests.test_datagram_loop_reading_abortedcCs^t}|jjj_|}t|_t|j _ |j d| |j j |t|dS)N)sHellor)rJrrrrKrrrrLrrr^rr[r1rrMr r r"test_datagram_loop_writing_abortedqs   z=BaseProactorEventLoopTests.test_datagram_loop_writing_aborted)rrrrrrr5rrwrrrrrrr r r rr rrrrrrrr r r%rrs.          rwin32z%Proactor is supported on Windows onlycseZdZddZGdddejZefddZefddZ fd d Z dd d Z ddZ ddZ ddZddZddZZS)&ProactorEventLoopUnixSockSendfileTestss12345abcde12345abcde12345abcde12345abcde12345abcde12345abcde12345abcde12345abcde12345abcde12345abcde12345abcde12345abcde12345abcde12345abcde12345abcde12345abcdec@s4eZdZddZddZddZddZd d Zd S) z.ProactorEventLoopUnixSockSendfileTests.MyProtocCs(d|_d|_t|_||_d|_dSrS)startedclosedrdrZr+r3r)r$rr r r__init__s  z7ProactorEventLoopUnixSockSendfileTests.MyProto.__init__cCsd|_||_dSrP)rrrr r rr/sz>ProactorEventLoopUnixSockSendfileTests.MyProto.connection_madecCs|j|dSr )rZextend)r$rZr r rr8sz)r$excr r rrqsz>ProactorEventLoopUnixSockSendfileTests.MyProto.connection_lostcs|jIdHdSr )r3r#r r r wait_closedsz:ProactorEventLoopUnixSockSendfileTests.MyProto.wait_closedN)rrrr r/r8rqr#r r r rMyProtos r$csFttjd}||jWdn1s.0YtdS)Nwb)openrTESTFNr\DATAr setUpClass)clsfpr%r rr)s*z1ProactorEventLoopUnixSockSendfileTests.setUpClasscsttjtdSr )runlinkr'r tearDownClass)r*r%r rr-s z4ProactorEventLoopUnixSockSendfileTests.tearDownClasscsNt|_||j||jjttjd|_ ||j jt dS)Nrb) r ZProactorEventLooprrrrr&rr'filerrr#r%r rrs   z,ProactorEventLoopUnixSockSendfileTests.setUpTcCsRttjtj}|d|tjtjd|tjtjd|rN||j |S)NFr) r!AF_INET SOCK_STREAM setblocking setsockopt SOL_SOCKET SO_SNDBUF SO_RCVBUFrr)r$cleanupr"r r r make_sockets  z2ProactorEventLoopUnixSockSendfileTests.make_socketcCs |j|Sr )rZrun_until_complete)r$coror r rrun_loopsz/ProactorEventLoopUnixSockSendfileTests.run_loopcs}jt}jdd}|d|fjjfdd|dj|| fdd} ||fS) NF)r7rcsSr r r )protor rrDz@ProactorEventLoopUnixSockSendfileTests.prepare..)r"cs<jdur"jdSr )rrr:r#r r;r$Zserverr rr7s   z?ProactorEventLoopUnixSockSendfileTests.prepare..cleanup) r8r$rr Zfind_unused_portbindr: create_serverZ sock_connect getsocknamer)r$r"portZsrv_sockr7r r=rprepares     z.ProactorEventLoopUnixSockSendfileTests.preparec Csn|\}}t}|tjd(||j||ddWdn1sN0Y||j ddSNnot a regular filer) rBrassertRaisesRegexr SendfileNotAvailableErrorr:r_sock_sendfile_nativer]r/tellr$r"r;rr r rtest_sock_sendfile_not_a_files $zDProactorEventLoopUnixSockSendfileTests.test_sock_sendfile_not_a_filec Csp|\}}t}|tjd(||j||ddWdn1sP0Y| |j ddSrC) rBioBytesIOrEr rFr:rrGr]r/rHrIr r rtest_sock_sendfile_iobuffers $zBProactorEventLoopUnixSockSendfileTests.test_sock_sendfile_iobufferc Csx|\}}t}d|j_|tjd(||j ||ddWdn1sX0Y| |j ddS)NrDr)rBrrrrfrEr rFr:rrGr]r/rHrIr r r#test_sock_sendfile_not_regular_files $zJProactorEventLoopUnixSockSendfileTests.test_sock_sendfile_not_regular_file)T)rrrr(r rr$ classmethodr)r-rr8r:rBrJrMrOrr r r%rr}s    r__main__)__doc__rKr!Zunittestsysrr Zasyncio.proactor_eventsrrrrrtestrZ test.supportr Ztest.test_asyncior rrrZTestCaserrrZskipIfplatformrrmainr r r rs<          >KX n