a  ze8 @s ddlZddlZddlZddlZddlZddlZddlZddlZddlZddl Z ddl Z ddl Z ddl Z ddl m Z ddlmZddlmZe jdkre dddlZddlmZddlmZdd lmZe jZd d Zd d Ze edGdddejZ e e!eddGdddejZ"e e!eddGdddejZ#GdddejZ$GdddejZ%Gddde jZ&Gdd d e jZ'e(d!d"Z)Gd#d$d$Z*Gd%d&d&e*ejZ+Gd'd(d(e*ejZ,Gd)d*d*e jZ-Gd+d,d,e jZ.e/d-kre 0dS).N)mock)support) socket_helperwin32z UNIX only)log) unix_events)utilscCstddSN)asyncioZset_event_loop_policyr r V/opt/bitninja-python-dojo/embedded/lib/python3.9/test/test_asyncio/test_unix_events.pytearDownModule!sr cCs"|jdurdS|jd|_dSr )Z_pipeclose) transportr r r close_pipe_transport%s  rzSignals are not supportedcsFeZdZfddZddZddZddZed d d Z ed d d Z ed ddZ ed ddZ ed edddZ ed edddZed ddZed ddZed edddZed ddZed dd Zed d!d"Zed#ed d$d%ZZS)&SelectorEventLoopSignalTestscs$tt|_||jdSr supersetUpr ZSelectorEventLooploopset_event_loopself __class__r r r1s  z"SelectorEventLoopSignalTests.setUpcCs.|t|jjd|t|jjtjddS)N1) assertRaises TypeErrorrZ _check_signal ValueErrorsignalNSIGrr r r test_check_signal6s  z.SelectorEventLoopSignalTests.test_check_signalcCs|jtjddS)Nr)r_handle_signalr r!rr r r test_handle_signal_no_handler<sz:SelectorEventLoopSignalTests.test_handle_signal_no_handlercCshtjtdtd}|||jjtjd<t|j_ |j tjd|jj tjddS)Nr )rr) r HandlerMockcancelr_signal_handlersr r!remove_signal_handlerr#assert_called_with)rhr r r $test_handle_signal_cancelled_handler?s  zASelectorEventLoopSignalTests.test_handle_signal_cancelled_handlerzasyncio.unix_events.signalcCs6tj|_tj|_t|j_|t|jj tj dddS)NcSsdSNTr r r r r QzRSelectorEventLoopSignalTests.test_add_signal_handler_setup_error..) r r! valid_signalsr set_wakeup_fd side_effectr RuntimeErrorradd_signal_handlerSIGINTrm_signalr r r #test_add_signal_handler_setup_errorHs z@SelectorEventLoopSignalTests.test_add_signal_handler_setup_errorcCsPtj|_dd}|}|}||j||fD]}|td|jjtj|q.dS)NcsdSr r r r r r simple_coroutineWsz^SelectorEventLoopSignalTests.test_add_signal_handler_coroutine_error..simple_coroutinez1coroutines cannot be used with add_signal_handler) r r! addCleanuprassertRaisesRegexrrr4r5)rr7r9Z coro_funcZcoro_objfuncr r r 'test_add_signal_handler_coroutine_errorSs  zDSelectorEventLoopSignalTests.test_add_signal_handler_coroutine_errorcCsXtj|_tj|_dd}|jtj||jjtj}||t j | |j |dS)NcSsdSr-r r r r r r.ir/zFSelectorEventLoopSignalTests.test_add_signal_handler..) r r!r0rr4SIGHUPr(getassertIsInstancer r% assertEqual _callback)rr7cbr+r r r test_add_signal_handlerdsz4SelectorEventLoopSignalTests.test_add_signal_handlercCsTtj|_tj|_dd}||_Gdddt}||j_|||jjtj dddS)NcSs|dkrtdS)N)r)fdr r r r1tszYSelectorEventLoopSignalTests.test_add_signal_handler_install_error..set_wakeup_fdc@seZdZejZdS)zOSelectorEventLoopSignalTests.test_add_signal_handler_install_error..ErrN)__name__ __module__ __qualname__errnoZEFAULTr r r r ErrysrKcSsdSr-r r r r r r.r/zTSelectorEventLoopSignalTests.test_add_signal_handler_install_error..) r r!r0r1OSErrorr2rrr4r5)rr7r1rKr r r %test_add_signal_handler_install_erroros zBSelectorEventLoopSignalTests.test_add_signal_handler_install_errorzasyncio.base_events.loggercCsvtj|_tj|_Gdddt}||j_dd|jjtj<|t |jj tj dd| |j j|d|jjdS)Nc@seZdZejZdS)zPSelectorEventLoopSignalTests.test_add_signal_handler_install_error2..ErrNrGrHrIrJEINVALr r r r rKsrKcSsdSr-r r r r r r.r/zUSelectorEventLoopSignalTests.test_add_signal_handler_install_error2..cSsdSr-r r r r r r.r/r)r r!r0rLr2rr(r>rr3r4r5 assertFalseinfocalledrAr1 call_countr m_loggingr7rKr r r &test_add_signal_handler_install_error2s zCSelectorEventLoopSignalTests.test_add_signal_handler_install_error2cCsdGdddt}||j_tj|_tj|_|t|jjtj dd| |j j | d|jjdS)Nc@seZdZejZdS)zPSelectorEventLoopSignalTests.test_add_signal_handler_install_error3..ErrNrNr r r r rKsrKcSsdSr-r r r r r r.r/zUSelectorEventLoopSignalTests.test_add_signal_handler_install_error3..)rLr r2r!r0rr3rr4r5rPrQrRrAr1rSrTr r r &test_add_signal_handler_install_error3s zCSelectorEventLoopSignalTests.test_add_signal_handler_install_error3cCsttj|_tj|_|jtjdd||jtj||jj ||jj | tj|j f|jj ddS)NcSsdSr-r r r r r r.r/zISelectorEventLoopSignalTests.test_remove_signal_handler..r) r r!r0rr4r> assertTruer)r1rRrASIG_DFL call_argsr6r r r test_remove_signal_handlers z7SelectorEventLoopSignalTests.test_remove_signal_handlercCstj|_tj|_tj|_|jtjddt|jjtj<|j | |j tj| |j j| |jj|tj|jf|jjddS)NcSsdSr-r r r r r r.r/zKSelectorEventLoopSignalTests.test_remove_signal_handler_2..r)r r!r5r0rr4objectr(r>r1 reset_mockrYr)rPrRrAdefault_int_handlerr[r6r r r test_remove_signal_handler_2s    z9SelectorEventLoopSignalTests.test_remove_signal_handler_2cCsJtj|_tj|_|jtjddt|j_|j tj| |j dS)NcSsdSr-r r r r r r.r/zWSelectorEventLoopSignalTests.test_remove_signal_handler_cleanup_error..) r r!r0rr4r>rr1r2r)rYrQ)rrUr7r r r (test_remove_signal_handler_cleanup_errors zESelectorEventLoopSignalTests.test_remove_signal_handler_cleanup_errorcCsDtj|_tj|_|jtjddt|j_|t|jj tjdS)NcSsdSr-r r r r r r.r/zOSelectorEventLoopSignalTests.test_remove_signal_handler_error..) r r!r0rr4r>rLr2rr)r6r r r test_remove_signal_handler_errors z=SelectorEventLoopSignalTests.test_remove_signal_handler_errorcCsTtj|_tj|_|jtjddGdddt}||j_|t |jj tjdS)NcSsdSr-r r r r r r.r/zPSelectorEventLoopSignalTests.test_remove_signal_handler_error2..c@seZdZejZdS)zKSelectorEventLoopSignalTests.test_remove_signal_handler_error2..ErrNrNr r r r rKsrK) r r!r0rr4r>rLr2rr3r))rr7rKr r r !test_remove_signal_handler_error2s z>SelectorEventLoopSignalTests.test_remove_signal_handler_error2cCstj|_tj|_|jtjdd|jtjdd|t|jj d|j |j |t|jj d|j ddS)NcSsdSr-r r r r r r.r/z9SelectorEventLoopSignalTests.test_close..cSsdSr-r r r r r r.r/rWrrE)r r!r0rr4r>SIGCHLDrAlenr(r1r^rassert_called_once_withr6r r r test_closes  z'SelectorEventLoopSignalTests.test_closezasyncio.unix_events.syscCstj|_tj|_|jtjdd|t|jjdd|j _ |j | t d|jWdn1sv0Y|t|jjd||jjdS)NcSsdSr-r r r r r r.r/zGSelectorEventLoopSignalTests.test_close_on_finalizing..rTz skipping signal handlers removalr)r r!r0rr4r>rArer( is_finalizing return_valuer^assertWarnsRegexResourceWarningrrPrR)rr7Zm_sysr r r test_close_on_finalizings (z5SelectorEventLoopSignalTests.test_close_on_finalizing)rGrHrIrr"r$r,rpatchr8r=rDrMrVrXr\r`rarbrcrgrl __classcell__r r rr r.sD              rAF_UNIXzUNIX Sockets are not supportedcseZdZfddZejddZejddZddZd d Z d d Z d dZ ddZ ddZ eeeddejddZddZddZedddZddZd d!Zd"d#Zd$d%Zd&d'ZZS)( SelectorEventLoopUnixSocketTestscs$tt|_||jdSr rrrr r rs  z&SelectorEventLoopUnixSocketTests.setUpcCstn}ttj}|||d||jdd|}|j |}||j | Wdn1s|0YdS)NrcSsdSr r r r r r r.r/z]SelectorEventLoopUnixSocketTests.test_create_unix_server_existing_path_sock..) test_utilsunix_socket_pathsocketrobindlistenrrcreate_unix_serverrun_until_complete wait_closed)rpathsockcorosrvr r r *test_create_unix_server_existing_path_socks     zKSelectorEventLoopUnixSocketTests.test_create_unix_server_existing_path_sockcCsltP}t|}|jdd|}|j|}||j|Wdn1s^0YdS)NcSsdSr r r r r r r.&r/zRSelectorEventLoopUnixSocketTests.test_create_unix_server_pathlib..) rqrrpathlibPathrrvrwrrx)rryZsrv_coror|r r r test_create_unix_server_pathlib"s    z@SelectorEventLoopUnixSocketTests.test_create_unix_server_pathlibc Cs~tb}t|}|jdd|}|t|j|Wdn1sR0YWdn1sp0YdS)NcSsdSr r r r r r r..r/zVSelectorEventLoopUnixSocketTests.test_create_unix_connection_pathlib..) rqrrr~rrcreate_unix_connectionrFileNotFoundErrorrw)rryr{r r r #test_create_unix_connection_pathlib+s    zDSelectorEventLoopUnixSocketTests.test_create_unix_connection_pathlibc Csxt\}|jdd|j}|td|j|Wdn1sL0YWdn1sj0YdS)NcSsdSr r r r r r r.6r/z`SelectorEventLoopUnixSocketTests.test_create_unix_server_existing_path_nonsock..zAddress.*is already in use)tempfileNamedTemporaryFilerrvnamer;rLrw)rfiler{r r r -test_create_unix_server_existing_path_nonsock4s  zNSelectorEventLoopUnixSocketTests.test_create_unix_server_existing_path_nonsockcCsR|jjddddd}|td|j|Wdn1sD0YdS)NcSsdSr r r r r r r.<r/zSSelectorEventLoopUnixSocketTests.test_create_unix_server_ssl_bool..spamT)rysslz"ssl argument must be an SSLContext)rrvr;rrwrr{r r r test_create_unix_server_ssl_bool;szASelectorEventLoopUnixSocketTests.test_create_unix_server_ssl_boolcCsP|jjdddd}|td|j|Wdn1sB0YdS)NcSsdSr r r r r r r.Cr/zXSelectorEventLoopUnixSocketTests.test_create_unix_server_nopath_nosock..ryz#path was not specified, and no sockrrvr;rrwrr r r %test_create_unix_server_nopath_nosockBs zFSelectorEventLoopUnixSocketTests.test_create_unix_server_nopath_nosockc Cs~t}|^|jjddd|d}|td|j|Wdn1sR0YWdn1sp0YdS)NcSsdSr r r r r r r.Kr/zXSelectorEventLoopUnixSocketTests.test_create_unix_server_path_inetsock..ryrz"A UNIX Domain Stream.*was expected)rsrrvr;rrwrrzr{r r r %test_create_unix_server_path_inetsockHszFSelectorEventLoopUnixSocketTests.test_create_unix_server_path_inetsockc Csttjtj}|^|jjddd|d}|td|j|Wdn1sZ0YWdn1sx0YdS)NcSsdSr r r r r r r.Tr/zUSelectorEventLoopUnixSocketTests.test_create_unix_server_path_dgram..rr)rsro SOCK_DGRAMrrvr;rrwrr r r "test_create_unix_server_path_dgramQszCSelectorEventLoopUnixSocketTests.test_create_unix_server_path_dgram SOCK_NONBLOCKz$no socket.SOCK_NONBLOCK (linux only)c CsttjtjtjB}t}|j}Wdn1s:0Yzv|T|||jj ddd|d}|j |}| |j | Wdn1s0YWt |n t |0dS)NcSsdSr r r r r r r.er/z^SelectorEventLoopUnixSocketTests.test_create_unix_server_path_stream_bittype..r)rsro SOCK_STREAMrrrrrtrrvrwrrxosunlink)rrzrfnr{r|r r r +test_create_unix_server_path_stream_bittypeZs $  0zLSelectorEventLoopUnixSocketTests.test_create_unix_server_path_stream_bittypecCsR|jjddddd}|td|j|Wdn1sD0YdS)NcSsdSr r r r r r r.nr/zfSelectorEventLoopUnixSocketTests.test_create_unix_server_ssl_timeout_with_plain_sock..rrryZssl_handshake_timeout1ssl_handshake_timeout is only meaningful with sslrrr r r 3test_create_unix_server_ssl_timeout_with_plain_sockmszTSelectorEventLoopUnixSocketTests.test_create_unix_server_ssl_timeout_with_plain_sockc Cs|t}|\|jjdd|d}|td|j|Wdn1sP0YWdn1sn0YdS)NcSsdSr r r r r r r.xr/z\SelectorEventLoopUnixSocketTests.test_create_unix_connection_path_inetsock..rzr)rsrrr;rrwrr r r )test_create_unix_connection_path_inetsockus zJSelectorEventLoopUnixSocketTests.test_create_unix_connection_path_inetsockzasyncio.unix_events.socketcCst}||j_t|j_|jjdddd}| t|j |Wdn1sX0Y| |j j t|j_|jjdddd}| t|j |Wdn1s0Y| |j j dS)NcSsdSr r r r r r r.r/zUSelectorEventLoopUnixSocketTests.test_create_unix_server_bind_error..z/testrcSsdSr r r r r r r.r/)rr&rsrirLrtr2rrvrrwrYrrR MemoryError)rZm_socketrzr{r r r "test_create_unix_server_bind_error~s * *zCSelectorEventLoopUnixSocketTests.test_create_unix_server_bind_errorcCsV|jjddtjtd}|td|j|Wdn1sH0YdS)NcSsdSr r r r r r r.r/zXSelectorEventLoopUnixSocketTests.test_create_unix_connection_path_sock..rzpath and sock can not be)rrrdevnullr]r;rrwrr r r %test_create_unix_connection_path_socks zFSelectorEventLoopUnixSocketTests.test_create_unix_connection_path_sockcCsN|jddd}|td|j|Wdn1s@0YdS)NcSsdSr r r r r r r.r/z\SelectorEventLoopUnixSocketTests.test_create_unix_connection_nopath_nosock..zno path and sock were specifiedrrr;rrwrr r r )test_create_unix_connection_nopath_nosockszJSelectorEventLoopUnixSocketTests.test_create_unix_connection_nopath_nosockcCsT|jjddtjdd}|td|j|Wdn1sF0YdS)NcSsdSr r r r r r r.r/z_SelectorEventLoopUnixSocketTests.test_create_unix_connection_nossl_serverhost..r)Zserver_hostnamez"server_hostname is only meaningfulrrrrr;rrwrr r r ,test_create_unix_connection_nossl_serverhosts zMSelectorEventLoopUnixSocketTests.test_create_unix_connection_nossl_serverhostcCsT|jjddtjdd}|td|j|Wdn1sF0YdS)NcSsdSr r r r r r r.r/z_SelectorEventLoopUnixSocketTests.test_create_unix_connection_ssl_noserverhost..T)rz/you have to pass server_hostname when using sslrrr r r ,test_create_unix_connection_ssl_noserverhosts zMSelectorEventLoopUnixSocketTests.test_create_unix_connection_ssl_noserverhostcCsR|jjddddd}|td|j|Wdn1sD0YdS)NcSsdSr r r r r r r.r/zjSelectorEventLoopUnixSocketTests.test_create_unix_connection_ssl_timeout_with_plain_sock..rrrrrrr r r 7test_create_unix_connection_ssl_timeout_with_plain_sockszXSelectorEventLoopUnixSocketTests.test_create_unix_connection_ssl_timeout_with_plain_sock)rGrHrIrrZskip_unless_bind_unix_socketr}rrrrrrrunittest skipUnlesshasattrrsrrrrrmrrrrrrrnr r rr rp s2          rpsendfilezsendfile is not supportedcseZdZddZGdddejZefddZefddZ fd d Z d&d d Z ddZ ddZ ddZddZddZddZddZddZddZd d!Zd"d#Zd$d%ZZS)'&SelectorEventLoopUnixSockSendfileTestss12345abcde12345abcde12345abcde12345abcde12345abcde12345abcde12345abcde12345abcde12345abcde12345abcde12345abcde12345abcde12345abcde12345abcde12345abcde12345abcdec@s4eZdZddZddZddZddZd d Zd S) z.SelectorEventLoopUnixSockSendfileTests.MyProtocCs2d|_d|_t|_||_d|_||_dS)NF)startedclosed bytearraydata create_futurefutr_ready)rrr r r __init__s  z7SelectorEventLoopUnixSockSendfileTests.MyProto.__init__cCsd|_||_|jddSr-)rrr set_result)rrr r r connection_madesz>SelectorEventLoopUnixSockSendfileTests.MyProto.connection_madecCs|j|dSr )rextend)rrr r r data_receivedszSelectorEventLoopUnixSockSendfileTests.MyProto.connection_lostcs|jIdHdSr )rrr r r rxsz:SelectorEventLoopUnixSockSendfileTests.MyProto.wait_closedN)rGrHrIrrrrrxr r r r MyProtos rcsFttjd}||jWdn1s.0YtdS)Nwb)openrTESTFNwriteDATAr setUpClass)clsfprr r rs*z1SelectorEventLoopUnixSockSendfileTests.setUpClasscsttjtdSr )rrrr tearDownClass)rrr r rs z4SelectorEventLoopUnixSockSendfileTests.tearDownClasscs@t|_||jttjd|_||jj t dS)Nrb) r new_event_looprrrrrrr:rrrrrr r rs   z,SelectorEventLoopUnixSockSendfileTests.setUpTcCsRttjtj}|d|tjtjd|tjtjd|rN||j |S)NFr) rsAF_INETr setblocking setsockopt SOL_SOCKET SO_SNDBUF SO_RCVBUFr:r)rcleanuprzr r r make_sockets  z2SelectorEventLoopUnixSockSendfileTests.make_socketcCs |j|Sr )rrwrr r r run_loopsz/SelectorEventLoopUnixSockSendfileTests.run_loopcs}jt}jdd}|tj|fjjfdd|dj |tj|fj fdd} ||fS)NF)rcsSr r r )protor r r.r/z@SelectorEventLoopUnixSockSendfileTests.prepare..rcs2jdSr )rrrrxr rrZserverr r rs z?SelectorEventLoopUnixSockSendfileTests.prepare..cleanup) rrrrZfind_unused_portrtZHOSTr create_serverZ sock_connectrr:)rrzportZsrv_sockrr rr prepares      z.SelectorEventLoopUnixSockSendfileTests.preparec Cs|\}}tjdgdX|tjd*||j||j ddWdn1sZ0YWdn1sx0Y| |j ddS)Nzasyncio.unix_events.os)specz$os[.]sendfile[(][)] is not availabler) rrrmr;r SendfileNotAvailableErrorrr_sock_sendfile_nativerrAtell)rrzrr r r test_sock_sendfile_not_availables BzGSelectorEventLoopUnixSockSendfileTests.test_sock_sendfile_not_availablec Csn|\}}t}|tjd(||j||ddWdn1sN0Y||j ddSNnot a regular filer) rr]r;r rrrrrArrrrzrfr r r test_sock_sendfile_not_a_files $zDSelectorEventLoopUnixSockSendfileTests.test_sock_sendfile_not_a_filec Csp|\}}t}|tjd(||j||ddWdn1sP0Y| |j ddSr) rioBytesIOr;r rrrrrArrrr r r test_sock_sendfile_iobuffers $zBSelectorEventLoopUnixSockSendfileTests.test_sock_sendfile_iobufferc Csx|\}}t}d|j_|tjd(||j ||ddWdn1sX0Y| |j ddS)NrErr)rrr&filenorir;r rrrrrArrrr r r #test_sock_sendfile_not_regular_file#s $zJSelectorEventLoopUnixSockSendfileTests.test_sock_sendfile_not_regular_filec Cs|\}}|j}|j}|j|d||ddt|jd|t t j | |Wdn1st0Y|t|jj|Wdn1s0YdSNr)rrrrr_sock_sendfile_native_implrerr' contextlibsuppressr CancelledErrorrrKeyError _selectorget_keyrrzrrrr r r test_sock_sendfile_cancel1-s   ( zASelectorEventLoopUnixSockSendfileTests.test_sock_sendfile_cancel1c Cs|\}}|j}|j}|j|d||ddt|jd||j||||ddt|jd| t |jj |Wdn1s0YdSr) rrrrrrrerr'rrrrrr r r test_sock_sendfile_cancel2:s    zASelectorEventLoopUnixSockSendfileTests.test_sock_sendfile_cancel2c Cs|\}}|j}t}d|j_tjdtd0|j |d||ddt |j dWdn1sl0Y|j j |}|||jtjdS)NF os.sendfiler2r)rrrrr& cancelledrirmBlockingIOErrorrrrerrrassertIsNotNoneadd_done_callbackrfANY)rrzrrrkeyr r r !test_sock_sendfile_blocking_errorGs  " zHSelectorEventLoopUnixSockSendfileTests.test_sock_sendfile_blocking_errorc Cs|\}}|j}|j}tjdtd0|j|d||ddt |j dWdn1sf0Y| t |jj |Wdn1s0Y|}||tj|d|jdS)Nrrr)rrrrrrrmrLrrerrrrr exceptionr@r rrAr)rrzrrrrr r r &test_sock_sendfile_os_error_first_callTs   " ,zMSelectorEventLoopUnixSockSendfileTests.test_sock_sendfile_os_error_first_callc Cs|\}}|j}|j}t}tjd|d4|j||||ddt |j dWdn1sn0Y| t |jj |Wdn1s0Y|}||||d|jdSNrri)rrrrrrLrrmrrerrrrrrassertIsrArrrzrrrerrrr r r %test_sock_sendfile_os_error_next_callbs    " , zLSelectorEventLoopUnixSockSendfileTests.test_sock_sendfile_os_error_next_callc Cs|\}}|j}|j}t}tjd|d4|j ||||ddt |j dWdn1sp0Y| t |jj|Wdn1s0Y|}||||d|jdSr)rrrrrr rrrmrrerrrrrrrrArrr r r test_sock_sendfile_exceptionss    " , zCSelectorEventLoopUnixSockSendfileTests.test_sock_sendfile_exception)T)rGrHrIrr Protocolr classmethodrrrrrrrrrrrrrrrrrnr r rr rs(         rcs eZdZfddZd(ddZddZedd d Zedd d Z edd dZ ededddZ edddZ edddZ edddZedddZedddZddZddZd d!Zd"d#Zd$d%Zd&d'ZZS))UnixReadPipeTransportTestscst||_ttj|_t j t j d|_ d|j j_t d}|||jt d}|}t }tj|_||_||jdSN)Zspec_setzos.set_blockingzos.fstat)rr new_test_looprrqmake_test_protocolr rprotocolrr&r RawIOBasepiperrirmstartr:stopstatS_IFIFOst_moderZblocking_patcherZ fstat_patcherZm_fstatstrr r rs      z UnixReadPipeTransportTests.setUpNcCs(tj|j|j|j|d}|t||SNwaiter)rZ_UnixReadPipeTransportrr r r:rrrrr r r read_pipe_transports   z.UnixReadPipeTransportTests.read_pipe_transportcCsR|j}|j|d}|j||jj||jd|j| | dSNrr) rrrrwr rr* assert_reader _read_ready assertIsNoneresultrrtrr r r test_ctors    z$UnixReadPipeTransportTests.test_ctorzos.readcCs6|}d|_||d|j|jjddSNdatar)rrirr*max_sizer rrm_readr r r r test__read_readys z+UnixReadPipeTransportTests.test__read_readycCs\|}d|_||d|j||jjt |j|j j |j j ddS)Nr/r) rrirr*r$rPrreadersrq run_brieflyr Z eof_receivedrr%r r r test__read_ready_eofs  z/UnixReadPipeTransportTests.test__read_ready_eofcCsD|}t|_||d|jt|j| |j j j dSNr) rrr2rr*r$rqr)rrPr rrRr%r r r test__read_ready_blockeds  z3UnixReadPipeTransportTests.test__read_ready_blockedasyncio.log.logger.errorcCs^|}t}||_t|_||d|j|j||jt dtt t fddS)Nrz;Fatal read error on pipe transport protocol:.* transport:.*)exc_info) rrLr2rr&_closerr*r$rqZ MockPatternMOCK_ANY)rr&m_logexcr rr r r test__read_ready_errors  z1UnixReadPipeTransportTests.test__read_ready_errorcCs8|}t}|jd||||jjdSr+)rrr&r add_reader pause_readingrPr()rr&r mr r r test_pause_readings z-UnixReadPipeTransportTests.test_pause_readingcCs,|}|||jd|jdSr+)rr4resume_readingrrrr%r r r test_resume_readingsz.UnixReadPipeTransportTests.test_resume_readingcCs*|}t|_||jddSr )rrr&r/rr*r%r r r rgs z%UnixReadPipeTransportTests.test_closecCs2|}d|_t|_|||jjdSr-)r_closingrr&r/rrPrRr%r r r test_close_already_closings  z5UnixReadPipeTransportTests.test_close_already_closingcCsR|}t}||||||jjt |j|j j |dSr ) rr]r/rY is_closingrPrr(rqr)r rr*)rr&r rr r r test__closes  z&UnixReadPipeTransportTests.test__closecCsd|}||j||jd}|||jj||jj | |j| |jdSr ) rr _protocol_loop_call_connection_lostr rr*r rrrr rr r r test__call_connection_losts     z5UnixReadPipeTransportTests.test__call_connection_lostcCsf|}||j||jt}|||jj||j j | |j| |jdSr ) rrr=r>rLr?r rr*r rrr@r r r #test__call_connection_lost_with_errs     z>UnixReadPipeTransportTests.test__call_connection_lost_with_errcCs4|}|t|j||j|dSr )rrrqr)rrr>r4rr r r r !test_pause_reading_on_closed_pipes   zr7rCr r r "test_resume_reading_on_closed_pipe(s   z=UnixReadPipeTransportTests.test_resume_reading_on_closed_pipecCs|}|dSr )rr7rCr r r "test_resume_reading_on_paused_pipe/sz=UnixReadPipeTransportTests.test_resume_reading_on_paused_pipe)N)rGrHrIrrr!rrmr'r*r,r2r6r8rgr:r<rArBrDrErFrGrnr r rr rs8              rcs~eZdZfddZd7ddZddZdd Zed d d Z ed d dZ ed ddZ ed ddZ ed ddZ eded ddZed ddZddZed ddZed ddZed d d!Zed d"d#Zed$ed d%d&Zed d'd(Zed d)d*Zd+d,Zd-d.Zd/d0Zd1d2Zd3d4Zd5d6ZZS)8UnixWritePipeTransportTestscst||_ttj|_t j t j d|_ d|j j_t d}|||jt d}|}t }tj|_||_||jdSr)rrr rrqr r Z BaseProtocolr rr&rr r rrirmrr:rrS_IFSOCKrrrr r r8s      z!UnixWritePipeTransportTests.setUpNcCs(tj|j|j|j|d}|t||Sr)rZ_UnixWritePipeTransportrr r r:rrr r r write_pipe_transportJs   z0UnixWritePipeTransportTests.write_pipe_transportcCsT|j}|j|d}|j||jj||jd|j| d| dSr) rrrJrwr rr*rrrArrr r r r!Qs    z%UnixWritePipeTransportTests.test_ctorcCs|}||dSr )rJrYZ can_write_eofrCr r r test_can_write_eofZsz.UnixWritePipeTransportTests.test_can_write_eofzos.writecCsF|}d|_|d|dd||jj|t|j dS)Nr#r) rJrirr*rPrwritersrAr_bufferrm_writer r r r test_write^s   z&UnixWritePipeTransportTests.test_writecCsB|}|d||j||jj|td|jdS)Nr/) rJrrPrRrrMrArrNrOr r r test_write_no_datags   z.UnixWritePipeTransportTests.test_write_no_datacCs>|}d|_|d|jd|j|td|jdS)NrWr#rta) rJrirr assert_writer _write_readyrArrNrOr r r test_write_partialos  z.UnixWritePipeTransportTests.test_write_partialcCs^|}|jd|jtd|_|d||j|j d|j| td|jdS)Nrspreviousr#s previousdata) rJr add_writerrUrrNrrPrRrTrArOr r r test_write_bufferws   z-UnixWritePipeTransportTests.test_write_buffercCsP|}t|_|d|dtd|jd|j| td|j dSr") rJrr2rr*rrrTrUrArNrOr r r test_write_agains  z,UnixWritePipeTransportTests.test_write_againzasyncio.unix_events.loggercCs|}t}||_t|_|d|dd||j j | t |j |j|d| d|j|d| d|j|d|d|d|d|jd|dS)Nr#rz#Fatal write error on pipe transportrrWz=pipe closed by peer or os.write(pipe, data) raised exception.)rJrLr2rr&Z _fatal_errorrr*rPrrMrArrN _conn_lostwarningr)rrPZm_logr rr r r test_write_errs.        z*UnixWritePipeTransportTests.test_write_errcCsD|}||d||jd|d||jddS)Nr#rrW)rJrrrArZrOr r r test_write_closes   z,UnixWritePipeTransportTests.test_write_closecCsX|}|||jj||jj||t |j|j j ddSr ) rJrrPrr(rMrYr;rqr)r rr*rCr r r r's z,UnixWritePipeTransportTests.test__read_readycCsR|}|jd|jtd|_d|_|||jj| t|jdS)Nrr#rL) rJrrWrUrrNrirPrMrArOr r r test__write_readys z-UnixWritePipeTransportTests.test__write_readycCsV|}|jd|jtd|_d|_||jd|j|td|jdS)Nrr#a) rJrrWrUrrNrirTrArOr r r test__write_ready_partials z5UnixWritePipeTransportTests.test__write_ready_partialcCsh|}|jd|jtd|_t|_||dtd|j d|j| td|jdS)Nrr#) rJrrWrUrrNrr2r*rTrArOr r r test__write_ready_agains z3UnixWritePipeTransportTests.test__write_ready_againcCsf|}|jd|jtd|_d|_||dtd|jd|j| td|jdS)Nrr#r) rJrrWrUrrNrir*rTrArOr r r test__write_ready_emptys z3UnixWritePipeTransportTests.test__write_ready_emptyr-cCs|}|jd|jtd|_t|_}|||jj ||jj | t|j| | || d|jt|j|jj|dS)Nrr#r)rJrrWrUrrNrLr2rPrMr(rArYr;Zassert_not_calledrZrqr)r rr*)rrPr1r rr r r test__write_ready_errs   z1UnixWritePipeTransportTests.test__write_ready_errcCs|}|jd|jd|_td|_d|_|||jj ||jj | t|j|j j d|jjdS)NrTr#rL)rJrrWrUr9rrNrirPrMr(rAr rr*r rrOr r r test__write_ready_closings z5UnixWritePipeTransportTests.test__write_ready_closingcCs|}|jd|j|jd|jddg|_|||j ||jj ||jj | g|j| |t|j|jjddS)NrsdarS)rJrrWrUr3rrNabortrPrRr(rMrArYr;rqr)r rr*rOr r r test_aborts   z&UnixWritePipeTransportTests.test_abortcCsd|}||j||jd}|||jj||jj | |j| |jdSr ) rJrr=r>r?r rr*r rrr@r r r rAs     z6UnixWritePipeTransportTests.test__call_connection_lostcCsf|}||j||jt}|||jj||j j | |j| |jdSr ) rJrr=r>rLr?r rr*r rrr@r r r rBs     z?UnixWritePipeTransportTests.test__call_connection_lost_with_errcCs0|}t|_||j|dSr )rJrr& write_eofrr*rCr r r rg*s   z&UnixWritePipeTransportTests.test_closecCs2|}t|_d|_|||jjdSr-)rJrr&rhr9rrPrRrCr r r test_close_closing3s  z.UnixWritePipeTransportTests.test_close_closingcCsJ|}|||||jjt|j|j j ddSr ) rJrhrYr;rPrr(rqr)r rr*rCr r r test_write_eof:s  z*UnixWritePipeTransportTests.test_write_eofcCs:|}dg|_|||||jjjdS)Nr#) rJrNrhrYr;rPr rrRrCr r r test_write_eof_pendingBs z2UnixWritePipeTransportTests.test_write_eof_pending)N)rGrHrIrrJr!rKrrmrQrRrVrXrYr\r]r'r^rarbrcrdrergrArBrgrirjrkrnr r rr rH6sR                     rHc@seZdZddZdS)AbstractChildWatcherTestscCst}t}|t|j|||t|j||t|j||t|j |t|j |t|j |t|j |||dSr ) rr&r ZAbstractChildWatcherrNotImplementedErroradd_child_handlerremove_child_handler attach_looprZ is_active __enter____exit__rrwatcherr r r test_not_implementedLs.  z.AbstractChildWatcherTests.test_not_implementedNrGrHrIrur r r r rlJsrlc@seZdZddZdS)BaseChildWatcherTestscCs$t}t}|t|j|dSr )rr&rZBaseChildWatcherrrmZ _do_waitpidrsr r r ruas z*BaseChildWatcherTests.test_not_implementedNrvr r r r rw_srw WaitPidMocks)waitpid WIFEXITED WIFSIGNALED WEXITSTATUSWTERMSIGcseZdZejejdZfddZ ddZ ddZ dd Z d d Z d d ZddZddZddZeddZeddZeddZeddZeddZeddZed d!Zed"d#Zed$d%Zed&d'Zed(d)Zed*d+Zed,d-Zed.d/ZZ S)0ChildWatcherTestsMixinr[csnt||_d|_i|_tj|jd*|_ | |_ |j |jWdn1s`0YdS)NFr4) rrr rrunningzombiesrrmr]m_add_signal_handlercreate_watcherrtrprrr r rus   zChildWatcherTestsMixin.setUpcCstt|jtjs|dkr"||dz*|dkr8|jWS||j|fWSWnty^Yn0|j rjdSt dS)NrEr)rr) isinstancertr SafeChildWatcherZ assertGreaterrpopitempoprrChildProcessError)rpidflagsr r r rys   zChildWatcherTestsMixin.waitpidcCs|d|j|<dSN)r)rr returncoder r r add_zombiesz!ChildWatcherTestsMixin.add_zombiecCs|dkSrr rstatusr r r rzsz ChildWatcherTestsMixin.WIFEXITEDcCsd|kodkSS)Nirr rr r r r{sz"ChildWatcherTestsMixin.WIFSIGNALEDcCs||||dSr)rYrzrr r r r|sz"ChildWatcherTestsMixin.WEXITSTATUScCs|||d|Sr)rYr{rr r r r}szChildWatcherTestsMixin.WTERMSIGcCs|jtj|jjdSr )rrfr rdrt _sig_chldrr r r test_create_watchers z*ChildWatcherTestsMixin.test_create_watchercsfdd}|S)Nc sdd}|d|j}|d|j}|d|j~}|d|jR}|d|j&}|t|||||Wdn1sx0YWdn1s0YWdn1s0YWdn1s0YWdn1s0YdS)NcSstj||tjdS)N)wrapsZ new_callable)rrmr&)targetwrapperr r r rmszIChildWatcherTestsMixin.waitpid_mocks..wrapped_func..patchz os.WTERMSIGzos.WEXITSTATUSzos.WIFSIGNALEDz os.WIFEXITEDz os.waitpid)r}r|r{rzryrx)rrmZ m_WTERMSIGZ m_WEXITSTATUSZ m_WIFSIGNALEDZ m_WIFEXITEDZ m_waitpidr<r r wrapped_funcs$    z:ChildWatcherTestsMixin.waitpid_mocks..wrapped_funcr )r<rr rr waitpid_mockss z$ChildWatcherTestsMixin.waitpid_mockscCs*t}|j*d|_|jd|dddWdn1s>0Y||j||jj||jj||j j||j j|j ||j||jj||jj||j j||j jd|_| dd|j | |jj| |j j||j j|ddddd|j|j|j || dd|j|j Wdn1s0Y||j||j j|j|j|j |j|j ||j||jj||jj||j j||j jdS) NT* F )rr&rtrrnrPrRrzr{r|r}rrrYrfr^ignore_warningsrclearrr5callbackr r r test_sigchldsR2         *       z#ChildWatcherTestsMixin.test_sigchldcCst}t}|j(d|_|jd|ddWdn1sD0Y||j||j||jj||jj||j j||j j|j"|jd|ddWdn1s0Y||j||j||jj||jj||j j||j j|j ||j||j||jj||jj||j j||j j| dd|j | dddd||j||jj||j j||j j|j|j|j ||j ||j||j||jj||jj||j j||j j| dd d |_|j | dd dd||j||jj||j j||j j|j|j|j || dd | dd |j|j Wdn1s$0Y||j||j||j j|j|j|j |j|j ||j||j||jj||jj||j j||j jdS) NT+,lFr)rr&rtrrnrPrRrzr{r|r}rrrfrYr^rrrrr5 callback1 callback2r r r test_sigchld_two_childrens0  0                      *         z0ChildWatcherTestsMixin.test_sigchld_two_childrencCst}t}|j(d|_|jd|ddWdn1sD0Y||j||j||jj||jj||j j||j j|j"|jd|ddWdn1s0Y||j||j||jj||jj||j j||j j|j ||j||j||jj||jj||j j||j j| dd| dd d |_|j | dddd| dd dd||jj||jj||j j||j j|j|j|j |j ||| dd | dd |j|j Wdn1sx0Y||j||j||j jdS) NT-r.i{rNFrr)rr&rtrrnrPrRrzr{r|r}rrrfrYr^rrr r r .test_sigchld_two_children_terminating_togetherZsb0  0              *  zEChildWatcherTestsMixin.test_sigchld_two_children_terminating_togethercCst}|j8|dd|j|jd|ddWdn1sL0Y|dddd||dd|j|jWdn1s0Y| |j dS)N2rLrrrE) rr&rtrrrnrfr^rrPrRrr r r test_sigchld_race_conditions  0 (z2ChildWatcherTestsMixin.test_sigchld_race_conditioncCst}t}|j&d|_|jd|dWdn1sB0Y||j||j||jj||jj||j j||j j|j |jd|dWdn1s0Y||j||j||jj||jj||j j||j jd|_| dd|j | ddd||j||jj||j j||j j|j|j|j || dd|j|j Wdn1s0Y||j||j||j jdS)NT3Fir)rr&rtrrnrPrRrzr{r|r}rrrfrYr^rrr r r test_sigchld_replace_handlersJ.  .         *  z3ChildWatcherTestsMixin.test_sigchld_replace_handlercCs,t}|j&d|_|jd|dWdn1s:0Y||j||jj||jj||j j||j j|j d||j||jj||jj||j j||j jd|_| dd|j |jWdn1s0Y||jdS)NT4iFc)rr&rtrrnrPrRrzr{r|r}rorrrrr r r test_sigchld_remove_handlers(.    *z2ChildWatcherTestsMixin.test_sigchld_remove_handlercCsRt}|j&d|_|jd|dWdn1s:0Y||j||jj||jj||j j||j jd|j d<d|_|j | ddd||jj||jj||j j||j j||j|j|dd|j|j Wdn1s80Y||jdS)NT5iiFe)rr&rtrrnrPrRrzr{r|r}rrrfrYr^rrrr r r test_sigchld_unknown_status s0.      *z2ChildWatcherTestsMixin.test_sigchld_unknown_statuscCsBt}t}t}|jFd|_|jd|d|jd|d|jd|dWdn1sj0Y||jd||jd||jd||jd|dd|dd|ddd |_|j |j Wdn1s0Y||j ||j | ddddS) NT6r7rW8r_rF) rr&rtrrnrYrorPrrrrRrf)rr5rr callback3r r r test_remove_child_handler/s*.   *  z0ChildWatcherTestsMixin.test_remove_child_handlercCst}|j$d|_|jd|Wdn1s80Yt|j_tj t j d.}| |j d||jWdn1s0YdS)NT9error)rr&rtrrnrryr2rmr]rloggerrArrYrR)rr5rZm_errorr r r test_sigchld_unhandled_exceptionPs, z7ChildWatcherTestsMixin.test_sigchld_unhandled_exceptioncCs t}|j$d|_|jd|Wdn1s80Y||j||jj||jj||j j||j jd|_| ddt dt j|j |j|jWdn1s0Yt|jtjr||jn |dddS)NT:FrL)rr&rtrrnrPrRrzr{r|r}rrryWNOHANGr^rrrr FastChildWatcherrfrr r r #test_sigchld_child_reaped_elsewherebs$,   (z:ChildWatcherTestsMixin.test_sigchld_child_reaped_elsewherec Cst}t}|jz|jTd|_|dd|dd|j|jd||jd|Wdn1sx0YWdn1s0Y|dd| |j dS)NTiOriQriP) rr&rrtrrrrnrfrPrRrr r r ,test_sigchld_unknown_pid_during_registrations   J zCChildWatcherTestsMixin.test_sigchld_unknown_pid_during_registrationc Cst}|j$d|_|jd|Wdn1s80Y|j}||_tjj}||dh}||jd<}|j |j| t j | t j |jj Wdn1s0YWdn1s0Yd|_|dd|j | dddS)NT<r)r4Fr)rr&rtrrnrr rmr]rprfr rdrr)rr5rold_looprmZ m_old_removeZ m_new_addr r r test_set_loops,,    @  z$ChildWatcherTestsMixin.test_set_loopc Cst}t}t}|j@d|_|jd||jd||jd|Wdn1sd0Y|j}d|_tj|dT}|t d|j dWdn1s0Y| t j Wdn1s0Y|dd|dd||j||j||j||_tj|jd T}|j |j| t j |jj| dd| dd||jWdn1s0Y||d |_|dd |j||j||j| dd dS) NT=>inr)zA loop is being detached rr4Fr)rr&rtrrnrrmr]rjRuntimeWarningrprfr rdrrPrRr rr^)rr5rrrrm_remove_signal_handlerrr r r test_set_loop_race_conditions\,*"         ,    z3ChildWatcherTestsMixin.test_set_loop_race_conditionc Cst}|jd|_|dd|dd|j|jd||jd||t|jj dt |jt j r|t|jj dtj|jdP}|j|tj||jj t |jt j r||jj Wdn1s0YWdn1s0YdS) NT?rAr@rr))rr&rtrrrrnrAreZ _callbacksrr rZ_zombiesrmr]rrrfr rdrP)rr5rrr r r rgs.    z!ChildWatcherTestsMixin.test_close)!rGrHrIrrmr]rrrrryrrzr{r|r}rrrrrrrrrrrrrrrrgrnr r rr r~qsL  < g D  4  $   "   =r~c@seZdZddZdS)SafeChildWatcherTestscCstSr )r rrr r r rsz$SafeChildWatcherTests.create_watcherNrGrHrIrr r r r rsrc@seZdZddZdS)FastChildWatcherTestscCstSr )r rrr r r rsz$FastChildWatcherTests.create_watcherNrr r r r rsrc@s4eZdZddZddZddZddZd d Zd S) PolicyTestscCstSr )r ZDefaultEventLoopPolicyrr r r create_policy$szPolicyTests.create_policycCsL|}||j|}||tj||j||||dSr )rr_watcherget_child_watcherr@r ZThreadedChildWatcherrrpolicyrtr r r test_get_default_child_watcher's  z*PolicyTests.test_get_default_child_watchercCs<|}t}||||j||||dSr )rr rset_child_watcherrrrrr r r test_get_child_watcher_after_set2s  z,PolicyTests.test_get_child_watcher_after_setcsDfdd}ttj|d}||dS)NcsRtj}|tj|j  dSr ) rrr@get_event_loopr ZAbstractEventLooprrrr>r)rtrrr r r<s  z4PolicyTests.test_get_child_watcher_thread..f)r)rrr r threadingThreadrjoin)rrthr rr test_get_child_watcher_thread:s   z)PolicyTests.test_get_child_watcher_threadcCs|}|}t}||||||j||}| |||j|| d||jd| | dSr ) rrr rrrprr>rrr)rrrrtZnew_loopr r r ,test_child_watcher_replace_mainloop_existingOs    z8PolicyTests.test_child_watcher_replace_mainloop_existingN)rGrHrIrrrrrr r r r r"s  rc@s,eZdZddZddZddZddZd S) TestFunctionalcCst|_t|jdSr )r rrrrr r r rjs zTestFunctional.setUpcCs|jtddSr )rrr rrr r r tearDownns zTestFunctional.tearDowncsfdd}dd}| jt|Wdn1s@0Y| jt|Wdn1sv0Y|jtWdn1s0Y|jtWdn1s0YdS)Ncs tdS)NzInvalid file object)r;rr rr r assert_raisessszFTestFunctional.test_add_reader_invalid_argument..assert_raisescSsdSr r r r r r r.vr/zATestFunctional.test_add_reader_invalid_argument..)rr3r]rW remove_reader remove_writer)rrrCr rr test_add_reader_invalid_argumentrs ..,z/TestFunctional.test_add_reader_invalid_argumentcsbfddfdd}t\}z"j|W|n|0dS)Ncs tdS)Nz'File descriptor .* is used by transport)r;r3r rr r rszLTestFunctional.test_add_reader_or_writer_transport_fd..assert_raisescsjjdddIdH\}}zdd}j|Wdn1sT0Y"j|Wdn1s0YjWdn1s0Y jWdn1s0Yj|Wdn1s*0Y"j|Wdn1sd0YjWdn1s0Y jWdn1s0YW|n |0dS)NcSstSr )r rr r r r r.r/zWTestFunctional.test_add_reader_or_writer_transport_fd..runner..rcSsdSr r r r r r r.r/)rcreate_connectionr3rrrWrr)r ZprrCrZrsockrr r runners,,0*..2,2zETestFunctional.test_add_reader_or_writer_transport_fd..runner)rs socketpairrrwr)rrZwsockr rr &test_add_reader_or_writer_transport_fds   z5TestFunctional.test_add_reader_or_writer_transport_fdN)rGrHrIrrrrr r r r rhsr__main__)1 collectionsrrJrrr~r rsrsysrrrrtestrZ test.supportrplatformZSkipTestr rrZtest.test_asynciorrqrr0r rrZTestCaserrrprrrHrlrw namedtuplerxr~rrrrrGmainr r r r sv         ^ ) N2  ,FF