a 8êdg8 ã@s ddlZddlZddlZddlZddlZddlZddlZddlZddlZddl Z ddl Z ddl Z ddl Z ddl m Z ddlmZddlmZe jdkr e  d¡‚ddlZddlmZddlmZdd lmZe jZd d „Zd d „Ze  ed¡Gdd„dejƒƒZ e  e!edƒd¡Gdd„dejƒƒZ"e  e!edƒd¡Gdd„dejƒƒZ#Gdd„dejƒZ$Gdd„dejƒZ%Gdd„de jƒZ&Gdd „d e jƒZ'e (d!d"¡Z)Gd#d$„d$ƒZ*Gd%d&„d&e*ejƒZ+Gd'd(„d(e*ejƒZ,Gd)d*„d*e jƒZ-Gd+d,„d,e jƒZ.e/d-kre  0¡dS).éN)Úmock)Úsupport)Ú socket_helperÚwin32z UNIX only)Úlog)Ú unix_events)ÚutilscCst d¡dS©N)ÚasyncioZset_event_loop_policy©r r ú>/usr/local/lib/python3.9/test/test_asyncio/test_unix_events.pyÚtearDownModule!sr cCs"|jdurdS|j ¡d|_dSr )Z_pipeÚclose)Ú transportr r r Úclose_pipe_transport%s  rzSignals are not supportedcsFeZdZ‡fdd„Zdd„Zdd„Zdd„Ze d ¡d d „ƒZ e d ¡d d „ƒZ e d ¡dd„ƒZ e d ¡dd„ƒZ e d ¡e d¡dd„ƒƒZ e d ¡e d¡dd„ƒƒZe d ¡dd„ƒZe d ¡dd„ƒZe d ¡e d¡dd„ƒƒZe d ¡dd„ƒZe d ¡dd „ƒZe d ¡d!d"„ƒZe d#¡e d ¡d$d%„ƒƒZ‡ZS)&ÚSelectorEventLoopSignalTestscs$tƒ ¡t ¡|_| |j¡dSr ©ÚsuperÚsetUpr ZSelectorEventLoopÚloopÚset_event_loop©Úself©Ú __class__r r r1s  z"SelectorEventLoopSignalTests.setUpcCs.| t|jjd¡| t|jjtjd¡dS)NÚ1é)Ú assertRaisesÚ TypeErrorrZ _check_signalÚ ValueErrorÚsignalÚNSIGrr r r Útest_check_signal6s  ÿÿz.SelectorEventLoopSignalTests.test_check_signalcCs|j tjd¡dS)Nr)rÚ_handle_signalr r!rr r r Útest_handle_signal_no_handler<sz:SelectorEventLoopSignalTests.test_handle_signal_no_handlercCshtjt ¡dt ¡d}| ¡||jjtjd<t ¡|j_ |j  tjd¡|jj   tjd¡dS)Nr )rr) r ÚHandlerÚMockÚcancelrÚ_signal_handlersr r!Úremove_signal_handlerr#Úassert_called_with)rÚhr r r Ú$test_handle_signal_cancelled_handler?s ÿ zASelectorEventLoopSignalTests.test_handle_signal_cancelled_handlerzasyncio.unix_events.signalcCs6tj|_tj|_t|j_| t|jj tj dd„¡dS)NcSsdS©NTr r r r r ÚQózRSelectorEventLoopSignalTests.test_add_signal_handler_setup_error..) r r!Ú valid_signalsrÚ set_wakeup_fdÚ side_effectrÚ RuntimeErrorrÚadd_signal_handlerÚSIGINT©rÚm_signalr r r Ú#test_add_signal_handler_setup_errorHs ýz@SelectorEventLoopSignalTests.test_add_signal_handler_setup_errorcCsPtj|_dd„}|}|ƒ}| |j¡||fD]}| td|jjtj|¡q.dS)NcÓsdSr 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!Ú addCleanuprÚassertRaisesRegexrrr4r5)rr7r9Z coro_funcZcoro_objÚfuncr r r Ú'test_add_signal_handler_coroutine_errorSs  ýzDSelectorEventLoopSignalTests.test_add_signal_handler_coroutine_errorcCsXtj|_tj|_dd„}|j tj|¡|jj tj¡}| |t j ¡|  |j |¡dS)NcSsdSr-r r r r r r.ir/zFSelectorEventLoopSignalTests.test_add_signal_handler..) r r!r0rr4ÚSIGHUPr(ÚgetÚassertIsInstancer r%Ú assertEqualÚ _callback)rr7Úcbr+r r r Útest_add_signal_handlerdsz4SelectorEventLoopSignalTests.test_add_signal_handlercCsTtj|_tj|_dd„}||_Gdd„dtƒ}||j_| ||jjtj dd„¡dS)NcSs|dkrtƒ‚dS)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!r0r1ÚOSErrorr2rrr4r5)rr7r1rKr r r Ú%test_add_signal_handler_install_erroros ýzBSelectorEventLoopSignalTests.test_add_signal_handler_install_errorzasyncio.base_events.loggercCsvtj|_tj|_Gdd„dtƒ}||j_dd„|jjtj<| t |jj tj dd„¡|  |j j¡| d|jj¡dS)Nc@seZdZejZdS)zPSelectorEventLoopSignalTests.test_add_signal_handler_install_error2..ErrN©rGrHrIrJÚEINVALr r r r rKˆsrKcSsdSr-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Ú assertFalseÚinfoÚcalledrAr1Ú call_count©rÚ m_loggingr7rKr r r Ú&test_add_signal_handler_install_error2‚s ýzCSelectorEventLoopSignalTests.test_add_signal_handler_install_error2cCsdGdd„dtƒ}||j_tj|_tj|_| t|jjtj dd„¡|  |j j ¡|  d|jj¡dS)Nc@seZdZejZdS)zPSelectorEventLoopSignalTests.test_add_signal_handler_install_error3..ErrNrNr r r r rK—srKcSsdSr-r r r r r r. r/zUSelectorEventLoopSignalTests.test_add_signal_handler_install_error3..é)rLr r2r!r0rr3rr4r5rPrQrRrAr1rSrTr r r Ú&test_add_signal_handler_install_error3”s ýzCSelectorEventLoopSignalTests.test_add_signal_handler_install_error3cCsttj|_tj|_|j tjdd„¡| |j tj¡¡| |jj ¡| |jj ¡|  tj|j f|jj d¡dS)NcSsdSr-r r r r r r.©r/zISelectorEventLoopSignalTests.test_remove_signal_handler..r) r r!r0rr4r>Ú assertTruer)r1rRrAÚSIG_DFLÚ call_argsr6r r r Útest_remove_signal_handler¤s ÿÿz7SelectorEventLoopSignalTests.test_remove_signal_handlercCs–tj|_tj|_tj|_|j tjdd„¡tƒ|jjtj<|j   ¡|  |j  tj¡¡|  |j j¡|  |jj¡| tj|jf|jjd¡dS)NcSsdSr-r r r r r r.¸r/zKSelectorEventLoopSignalTests.test_remove_signal_handler_2..r)r r!r5r0rr4Úobjectr(r>r1Ú reset_mockrYr)rPrRrAÚdefault_int_handlerr[r6r r r Útest_remove_signal_handler_2²s  ÿ  þz9SelectorEventLoopSignalTests.test_remove_signal_handler_2cCsJtj|_tj|_|j tjdd„¡t|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_errorÄs zESelectorEventLoopSignalTests.test_remove_signal_handler_cleanup_errorcCsDtj|_tj|_|j tjdd„¡t|j_| t|jj tj¡dS)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_errorÐs ÿz=SelectorEventLoopSignalTests.test_remove_signal_handler_errorcCsTtj|_tj|_|j tjdd„¡Gdd„dtƒ}||j_| t |jj tj¡dS)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 rKásrK) r r!r0rr4r>rLr2rr3r))rr7rKr r r Ú!test_remove_signal_handler_error2Ûs ÿz>SelectorEventLoopSignalTests.test_remove_signal_handler_error2cCs„tj|_tj|_|j tjdd„¡|j tjdd„¡| t|jj ƒd¡|j   ¡|j  ¡| t|jj ƒd¡|j   d¡dS)NcSsdSr-r r r r r r.ír/z9SelectorEventLoopSignalTests.test_close..cSsdSr-r r r r r r.îr/rWrrE)r r!r0rr4r>ÚSIGCHLDrAÚlenr(r1r^rÚassert_called_once_withr6r r r Ú test_closeès  z'SelectorEventLoopSignalTests.test_closezasyncio.unix_events.syscCs¦tj|_tj|_|j tjdd„¡| t|jjƒd¡d|j _ |j  ¡|  t d¡|j ¡Wdƒn1sv0Y| t|jjƒd¡| |jj¡dS)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^ÚassertWarnsRegexÚResourceWarningrrPrR)rr7Zm_sysr r r Útest_close_on_finalizingùs ÿ(z5SelectorEventLoopSignalTests.test_close_on_finalizing)rGrHrIrr"r$r,rÚpatchr8r=rDrMrVrXr\r`rarbrcrgrlÚ __classcell__r r rr r.sD              rÚAF_UNIXzUNIX Sockets are not supportedcsÒeZdZ‡fdd„Zejdd„ƒZejdd„ƒZdd„Zd d „Z d d „Z d d„Z dd„Z dd„Z e eedƒd¡ejdd„ƒƒZdd„Zdd„Ze d¡dd„ƒZdd„Zd d!„Zd"d#„Zd$d%„Zd&d'„Z‡ZS)(Ú SelectorEventLoopUnixSocketTestscs$tƒ ¡t ¡|_| |j¡dSr rrrr r rs  z&SelectorEventLoopUnixSocketTests.setUpcCsŠt ¡n}t tj¡}| |¡| d¡| ¡|j dd„|¡}|j  |¡}| ¡|j  |  ¡¡Wdƒn1s|0YdS)NrcSsdSr r r r r r r.r/z]SelectorEventLoopUnixSocketTests.test_create_unix_server_existing_path_sock..) Ú test_utilsÚunix_socket_pathÚsocketroÚbindÚlistenrrÚcreate_unix_serverÚrun_until_completeÚ wait_closed)rÚpathÚsockÚcoroÚsrvr r r Ú*test_create_unix_server_existing_path_socks     zKSelectorEventLoopUnixSocketTests.test_create_unix_server_existing_path_sockcCslt ¡P}t |¡}|j dd„|¡}|j |¡}| ¡|j | ¡¡Wdƒn1s^0YdS)NcSsdSr r r r r r r.&r/zRSelectorEventLoopUnixSocketTests.test_create_unix_server_pathlib..) rqrrÚpathlibÚPathrrvrwrrx)rryZsrv_coror|r r r Útest_create_unix_server_pathlib"s    z@SelectorEventLoopUnixSocketTests.test_create_unix_server_pathlibc Cs~t ¡b}t |¡}|j dd„|¡}| t¡|j |¡Wdƒn1sR0YWdƒn1sp0YdS)NcSsdSr r r r r r r..r/zVSelectorEventLoopUnixSocketTests.test_create_unix_connection_pathlib..) rqrrr~rrÚcreate_unix_connectionrÚFileNotFoundErrorrw)rryr{r r r Ú#test_create_unix_connection_pathlib+s    zDSelectorEventLoopUnixSocketTests.test_create_unix_connection_pathlibc Csxt ¡\}|j dd„|j¡}| td¡|j |¡Wdƒn1sL0YWdƒn1sj0YdS)NcSsdSr r r r r r r.6r/z`SelectorEventLoopUnixSocketTests.test_create_unix_server_existing_path_nonsock..zAddress.*is already in use)ÚtempfileÚNamedTemporaryFilerrvÚnamer;rLrw)rÚfiler{r r r Ú-test_create_unix_server_existing_path_nonsock4s  ÿzNSelectorEventLoopUnixSocketTests.test_create_unix_server_existing_path_nonsockcCsR|jjdd„ddd}| td¡|j |¡Wdƒn1sD0YdS)NcSsdSr r r r r r r.<r/zSSelectorEventLoopUnixSocketTests.test_create_unix_server_ssl_bool..ÚspamT)ryÚsslz"ssl argument must be an SSLContext)rrvr;rrw©rr{r r r Ú test_create_unix_server_ssl_bool;sÿÿzASelectorEventLoopUnixSocketTests.test_create_unix_server_ssl_boolcCsP|jjdd„dd}| td¡|j |¡Wdƒn1sB0YdS)NcSsdSr r r r r r r.Cr/zXSelectorEventLoopUnixSocketTests.test_create_unix_server_nopath_nosock..©ryz#path was not specified, and no sock©rrvr;rrwr‹r r r Ú%test_create_unix_server_nopath_nosockBs ÿzFSelectorEventLoopUnixSocketTests.test_create_unix_server_nopath_nosockc Cs~t ¡}|^|jjdd„d|d}| td¡|j |¡Wdƒn1sR0YWdƒn1sp0YdS)NcSsdSr r r r r r r.Kr/zXSelectorEventLoopUnixSocketTests.test_create_unix_server_path_inetsock..©ryrzú"A UNIX Domain Stream.*was expected)rsrrvr;rrw©rrzr{r r r Ú%test_create_unix_server_path_inetsockHsÿÿzFSelectorEventLoopUnixSocketTests.test_create_unix_server_path_inetsockc Cs†t tjtj¡}|^|jjdd„d|d}| td¡|j |¡Wdƒn1sZ0YWdƒn1sx0YdS)NcSsdSr r r r r r r.Tr/zUSelectorEventLoopUnixSocketTests.test_create_unix_server_path_dgram..rr‘)rsroÚ SOCK_DGRAMrrvr;rrwr’r r r Ú"test_create_unix_server_path_dgramQsÿÿzCSelectorEventLoopUnixSocketTests.test_create_unix_server_path_dgramÚ SOCK_NONBLOCKz$no socket.SOCK_NONBLOCK (linux only)c CsÌt tjtjtjB¡}t ¡}|j}Wdƒn1s:0Yzv|T| |¡|jj dd„d|d}|j  |¡}|  ¡|j  |  ¡¡Wdƒn1s¤0YWt  |¡n t  |¡0dS)NcSsdSr r r r r r r.er/z^SelectorEventLoopUnixSocketTests.test_create_unix_server_path_stream_bittype..r)rsroÚ SOCK_STREAMr–r„r…r†rtrrvrwrrxÚosÚunlink)rrzr‡Úfnr{r|r r r Ú+test_create_unix_server_path_stream_bittypeZsÿ $ ÿ 0zLSelectorEventLoopUnixSocketTests.test_create_unix_server_path_stream_bittypecCsR|jjdd„ddd}| td¡|j |¡Wdƒn1sD0YdS)NcSsdSr r r r r r r.nr/zfSelectorEventLoopUnixSocketTests.test_create_unix_server_ssl_timeout_with_plain_sock..r‰r©ryZssl_handshake_timeoutú1ssl_handshake_timeout is only meaningful with sslrŽr‹r r r Ú3test_create_unix_server_ssl_timeout_with_plain_sockmsÿþzTSelectorEventLoopUnixSocketTests.test_create_unix_server_ssl_timeout_with_plain_sockc Cs|t ¡}|\|jjdd„|d}| td¡|j |¡Wdƒn1sP0YWdƒn1sn0YdS)NcSsdSr r r r r r r.xr/z\SelectorEventLoopUnixSocketTests.test_create_unix_connection_path_inetsock..©rzr‘)rsrrr;rrwr’r r r Ú)test_create_unix_connection_path_inetsockus ÿÿzJSelectorEventLoopUnixSocketTests.test_create_unix_connection_path_inetsockzasyncio.unix_events.socketcCsÔt ¡}||j_t|j_|jjdd„dd}|  t¡|j  |¡Wdƒn1sX0Y|  |j j ¡t|j_|jjdd„dd}|  t¡|j  |¡Wdƒn1s¸0Y|  |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|jjdd„tjtƒd}| td¡|j |¡Wdƒn1sH0YdS)NcSsdSr r r r r r r.’r/zXSelectorEventLoopUnixSocketTests.test_create_unix_connection_path_sock..rŸzpath and sock can not be)rrr˜Údevnullr]r;rrwr‹r r r Ú%test_create_unix_connection_path_socks ÿzFSelectorEventLoopUnixSocketTests.test_create_unix_connection_path_sockcCsN|j dd„d¡}| td¡|j |¡Wdƒn1s@0YdS)NcSsdSr r r r r r r.˜r/z\SelectorEventLoopUnixSocketTests.test_create_unix_connection_nopath_nosock..zno path and sock were specified©rrr;rrwr‹r r r Ú)test_create_unix_connection_nopath_nosock–sÿÿzJSelectorEventLoopUnixSocketTests.test_create_unix_connection_nopath_nosockcCsT|jjdd„tjdd}| td¡|j |¡Wdƒn1sF0YdS)NcSsdSr r r r r r r.Ÿr/z_SelectorEventLoopUnixSocketTests.test_create_unix_connection_nossl_serverhost..r‰)Zserver_hostnamez"server_hostname is only meaningful©rrr˜r£r;rrwr‹r r r Ú,test_create_unix_connection_nossl_serverhosts ÿÿzMSelectorEventLoopUnixSocketTests.test_create_unix_connection_nossl_serverhostcCsT|jjdd„tjdd}| td¡|j |¡Wdƒn1sF0YdS)NcSsdSr r r r r r r.¦r/z_SelectorEventLoopUnixSocketTests.test_create_unix_connection_ssl_noserverhost..T)rŠz/you have to pass server_hostname when using sslr§r‹r r r Ú,test_create_unix_connection_ssl_noserverhost¤s ÿÿzMSelectorEventLoopUnixSocketTests.test_create_unix_connection_ssl_noserverhostcCsR|jjdd„ddd}| td¡|j |¡Wdƒn1sD0YdS)NcSsdSr r r r r r r.®r/zjSelectorEventLoopUnixSocketTests.test_create_unix_connection_ssl_timeout_with_plain_sock..r‰rrœrr¥r‹r r r Ú7test_create_unix_connection_ssl_timeout_with_plain_sock­sÿþzXSelectorEventLoopUnixSocketTests.test_create_unix_connection_ssl_timeout_with_plain_sock)rGrHrIrrZskip_unless_bind_unix_socketr}r€rƒrˆrŒrr“r•ÚunittestÚ skipUnlessÚhasattrrsr›ržr rrmr¢r¤r¦r¨r©rªrnr r rr rp s2      ÿ    rpÚsendfilezsendfile is not supportedcsÀeZdZddZGdd„dejƒZe‡fdd„ƒZe‡fdd„ƒZ ‡fd d „Z d&d d „Z dd„Z dd„Z dd„Zdd„Zdd„Zdd„Zdd„Zdd„Zdd„Zd d!„Zd"d#„Zd$d%„Z‡ZS)'Ú&SelectorEventLoopUnixSockSendfileTestss 12345abcde12345abcde12345abcde12345abcde12345abcde12345abcde12345abcde12345abcde12345abcde12345abcde12345abcde12345abcde12345abcde12345abcde12345abcde12345abcdeéc@s4eZdZdd„Zdd„Zdd„Zdd„Zd d „Zd S) z.SelectorEventLoopUnixSockSendfileTests.MyProtocCs2d|_d|_tƒ|_| ¡|_d|_| ¡|_dS)NF)ÚstartedÚclosedÚ bytearrayÚdataÚ create_futureÚfutrÚ_ready)rrr r r Ú__init__½s  z7SelectorEventLoopUnixSockSendfileTests.MyProto.__init__cCsd|_||_|j d¡dSr-)r±rr·Ú set_result)rrr r r Úconnection_madeÅsz>SelectorEventLoopUnixSockSendfileTests.MyProto.connection_madecCs|j |¡dSr )r´Úextend)rr´r r r Ú data_receivedÊszSelectorEventLoopUnixSockSendfileTests.MyProto.connection_lostcÃs|jIdHdSr )r¶rr r r rxÑsz:SelectorEventLoopUnixSockSendfileTests.MyProto.wait_closedN)rGrHrIr¸rºr¼r¾rxr r r r ÚMyProto»s r¿csFttjdƒ}| |j¡Wdƒn1s.0Ytƒ ¡dS)NÚwb)ÚopenrÚTESTFNÚwriteÚDATArÚ setUpClass)ÚclsÚfprr r rÅÔs*z1SelectorEventLoopUnixSockSendfileTests.setUpClasscst tj¡tƒ ¡dSr )rr™rÂrÚ tearDownClass)rÆrr r rÈÚs z4SelectorEventLoopUnixSockSendfileTests.tearDownClasscs@t ¡|_| |j¡ttjdƒ|_| |jj ¡t ƒ  ¡dS)NÚrb) r Únew_event_looprrrÁrrÂr‡r:rrrrrr r rßs   z,SelectorEventLoopUnixSockSendfileTests.setUpTcCsRt tjtj¡}| d¡| tjtjd¡| tjtjd¡|rN| |j ¡|S)NFr°) rsÚAF_INETr—Ú setblockingÚ setsockoptÚ SOL_SOCKETÚ SO_SNDBUFÚ SO_RCVBUFr:r)rÚcleanuprzr r r Ú make_socketæs  z2SelectorEventLoopUnixSockSendfileTests.make_socketcCs |j |¡Sr )rrwr‹r r r Úrun_loopïsz/SelectorEventLoopUnixSockSendfileTests.run_loopcsžˆ ¡}ˆ ˆj¡‰t ¡}ˆjdd}| tj|f¡ˆ ˆjj‡fdd„|d¡‰ˆ ˆj  |tj|f¡¡ˆ ˆj ¡‡‡‡fdd„}ˆ  |¡|ˆfS)NF)rÑcsˆSr r r )Úprotor r r.ùr/z@SelectorEventLoopUnixSockSendfileTests.prepare..rŸcs2ˆj ¡ˆ ˆ ¡¡ˆ ¡ˆ ˆ ¡¡dSr )rrrÓrxr ©rÔrZserverr r rÑýs z?SelectorEventLoopUnixSockSendfileTests.prepare..cleanup) rÒr¿rrZfind_unused_portrtZHOSTrÓÚ create_serverZ sock_connectr·r:)rrzÚportZsrv_sockrÑr rÕr Úprepareòs    ÿ  z.SelectorEventLoopUnixSockSendfileTests.preparec Cs˜| ¡\}}tjdgdX| tjd¡*| |j ||j dd¡¡Wdƒn1sZ0YWdƒn1sx0Y|  |j   ¡d¡dS)Nzasyncio.unix_events.os)Úspecz$os[.]sendfile[(][)] is not availabler) rØrrmr;r ÚSendfileNotAvailableErrorrÓrÚ_sock_sendfile_nativer‡rAÚtell)rrzrÔr r r Ú test_sock_sendfile_not_availables ÿÿBzGSelectorEventLoopUnixSockSendfileTests.test_sock_sendfile_not_availablec Csn| ¡\}}tƒ}| tjd¡(| |j ||dd¡¡Wdƒn1sN0Y| |j   ¡d¡dS©Núnot a regular filer) rØr]r;r rÚrÓrrÛrAr‡rÜ©rrzrÔÚfr r r Útest_sock_sendfile_not_a_files ÿÿ$zDSelectorEventLoopUnixSockSendfileTests.test_sock_sendfile_not_a_filec Csp| ¡\}}t ¡}| tjd¡(| |j ||dd¡¡Wdƒn1sP0Y|  |j   ¡d¡dSrÞ) rØÚioÚBytesIOr;r rÚrÓrrÛrAr‡rÜràr r r Útest_sock_sendfile_iobuffers ÿÿ$zBSelectorEventLoopUnixSockSendfileTests.test_sock_sendfile_iobufferc Csx| ¡\}}t ¡}d|j_| tjd¡(| |j   ||dd¡¡Wdƒn1sX0Y|  |j   ¡d¡dS)NrErßr)rØrr&Úfilenorir;r rÚrÓrrÛrAr‡rÜràr r r Ú#test_sock_sendfile_not_regular_file#s ÿÿ$zJSelectorEventLoopUnixSockSendfileTests.test_sock_sendfile_not_regular_filec Csº| ¡\}}|j ¡}|j ¡}|j |d||ddt|jƒd¡| ¡t   t j ¡|  |¡Wdƒn1st0Y| t¡|jj |¡Wdƒn1s¬0YdS©Nr)rØrrµr‡ræÚ_sock_sendfile_native_implrerÄr'Ú contextlibÚsuppressr ÚCancelledErrorrÓrÚKeyErrorÚ _selectorÚget_key©rrzrÔr¶rær r r Útest_sock_sendfile_cancel1-s   ÿ( zASelectorEventLoopUnixSockSendfileTests.test_sock_sendfile_cancel1c Cs¨| ¡\}}|j ¡}|j ¡}|j |d||ddt|jƒd¡| ¡|j || ¡||ddt|jƒd¡|  t ¡|jj   |¡Wdƒn1sš0YdSrè) rØrrµr‡rærérerÄr'rrírîrïrðr r r Útest_sock_sendfile_cancel2:s   ÿÿ zASelectorEventLoopUnixSockSendfileTests.test_sock_sendfile_cancel2c Cs | ¡\}}|j ¡}t ¡}d|j_tjdtƒd0|j   |d||ddt |j ƒd¡Wdƒn1sl0Y|j j  |¡}| |¡|j tj¡dS)NFú os.sendfile©r2r)rØr‡rærr&Ú cancelledrirmÚBlockingIOErrorrrérerÄrîrïÚassertIsNotNoneÚadd_done_callbackrfÚANY)rrzrÔrær¶Úkeyr r r Ú!test_sock_sendfile_blocking_errorGs  ÿ" zHSelectorEventLoopUnixSockSendfileTests.test_sock_sendfile_blocking_errorc CsÔ| ¡\}}|j ¡}|j ¡}tjdtƒd0|j |d||ddt |j ƒd¡Wdƒn1sf0Y|  t ¡|jj  |¡Wdƒn1sž0Y| ¡}| |tj¡| d|j ¡¡dS)Nrórôr)rØr‡rærrµrrmrLrérerÄrrírîrïÚ exceptionr@r rÚrArÜ)rrzrÔrær¶r½r 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 ƒd¡Wdƒn1sn0Y|  t ¡|jj  |¡Wdƒn1s¦0Y| ¡}| ||¡| d|j ¡¡dS©Nrórôiè)rØr‡rærrµrLrrmrérerÄrrírîrïrüÚassertIsrArÜ©rrzrÔrær¶Úerrr½r 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 ƒd¡Wdƒn1sp0Y|  t ¡|jj |¡Wdƒn1s¨0Y| ¡}| ||¡| d|j ¡¡dSrþ)rØr‡rærrµr rÚrrmrérerÄrrírîrïrürÿrArÜrr r r Útest_sock_sendfile_exceptionss    ý" , zCSelectorEventLoopUnixSockSendfileTests.test_sock_sendfile_exception)T)rGrHrIrÄr ÚProtocolr¿Ú classmethodrÅrÈrrÒrÓrØrÝrârårçrñròrûrýrrrnr r rr r¯¶s(         r¯cs eZdZ‡fdd„Zd(dd„Zdd„Ze d¡d d „ƒZe d¡d d „ƒZ e d¡d d„ƒZ e d¡e d¡dd„ƒƒZ e d¡dd„ƒZ e d¡dd„ƒZ e d¡dd„ƒZe d¡dd„ƒZe d¡dd„ƒZdd„Zdd„Zd d!„Zd"d#„Zd$d%„Zd&d'„Z‡ZS))ÚUnixReadPipeTransportTestscs’tƒ ¡| ¡|_t tj¡|_t j t j d|_ d|j j_t  d¡}| ¡| |j¡t  d¡}| ¡}t   ¡}tj|_||_| |j¡dS©N)Zspec_setézos.set_blockingzos.fstat)rrÚ new_test_looprrqÚmake_test_protocolr rÚprotocolrr&rãÚ RawIOBaseÚpiperærirmÚstartr:ÚstopÚstatÚS_IFIFOÚst_mode©rZblocking_patcherZ fstat_patcherZm_fstatÚstrr r r‡s      z UnixReadPipeTransportTests.setUpNcCs(tj|j|j|j|d}| t|¡|S©N©Úwaiter)rZ_UnixReadPipeTransportrr r r:r©rrrr r r Úread_pipe_transport™s  þ z.UnixReadPipeTransportTests.read_pipe_transportcCsR|j ¡}|j|d}|j |¡|jj |¡|j d|j¡|  |  ¡¡dS©Nrr) rrµrrwr rºr*Ú assert_readerÚ _read_readyÚ assertIsNoneÚresult©rrÚtrr r r Ú test_ctor s    z$UnixReadPipeTransportTests.test_ctorzos.readcCs6| ¡}d|_| ¡| d|j¡|jj d¡dS©Nódatar)rrirr*Úmax_sizer r¼©rÚm_readr r r r Útest__read_ready©s z+UnixReadPipeTransportTests.test__read_readycCs\| ¡}d|_| ¡| d|j¡| |jj¡t  |j¡|j j  ¡|j j  d¡dS)Nr/r) rrirr*r$rPrÚreadersrqÚ run_brieflyr Z eof_receivedr¾r%r r r Útest__read_ready_eof²s  z/UnixReadPipeTransportTests.test__read_ready_eofcCsD| ¡}t|_| ¡| d|j¡t |j¡|  |j j j ¡dS©Nr) rrör2rr*r$rqr)rrPr r¼rRr%r r r Útest__read_ready_blocked¾s  z3UnixReadPipeTransportTests.test__read_ready_blockedúasyncio.log.logger.errorcCs^| ¡}tƒ}||_t ¡|_| ¡| d|j¡|j |¡|jt   d¡tt t fddS)Nrz;Fatal read error on pipe transport protocol:.* transport:.*)Úexc_info) rrLr2rr&Ú_closerr*r$rqZ MockPatternÚMOCK_ANY)rr&Úm_logexcr rr r r Útest__read_ready_errorÈs  ÿüz1UnixReadPipeTransportTests.test__read_ready_errorcCs8| ¡}t ¡}|j d|¡| ¡| |jj¡dSr+)rrr&rÚ add_readerÚ pause_readingrPr()rr&r Úmr r r Útest_pause_readingÙs z-UnixReadPipeTransportTests.test_pause_readingcCs,| ¡}| ¡| ¡|j d|j¡dSr+)rr4Úresume_readingrrrr%r r r Útest_resume_readingász.UnixReadPipeTransportTests.test_resume_readingcCs*| ¡}t ¡|_| ¡|j d¡dSr )rrr&r/rr*r%r r r rgès z%UnixReadPipeTransportTests.test_closecCs2| ¡}d|_t ¡|_| ¡| |jj¡dSr-)rÚ_closingrr&r/rrPrRr%r r r Útest_close_already_closingïs  z5UnixReadPipeTransportTests.test_close_already_closingcCsR| ¡}tƒ}| |¡| | ¡¡| |jj¡t  |j¡|j j   |¡dSr ) rr]r/rYÚ is_closingrPrr(rqr)r r¾r*)rr&r rr r r Ú test__close÷s  z&UnixReadPipeTransportTests.test__closecCsd| ¡}| |j¡| |j¡d}| |¡|jj |¡|jj  ¡|  |j¡|  |j¡dSr ) rr÷Ú _protocolÚ_loopÚ_call_connection_lostr r¾r*r rr©rr rr r r Útest__call_connection_losts     z5UnixReadPipeTransportTests.test__call_connection_lostcCsf| ¡}| |j¡| |j¡tƒ}| |¡|jj |¡|j j  ¡|  |j¡|  |j¡dSr ) rr÷r=r>rLr?r r¾r*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>r4©rr 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 r…s8              rcs~eZdZ‡fdd„Zd7dd„Zdd„Zdd „Ze d ¡d d „ƒZ e d ¡d d„ƒZ e d ¡dd„ƒZ e d ¡dd„ƒZ e d ¡dd„ƒZ e d¡e d ¡dd„ƒƒZe d ¡dd„ƒZdd„Ze d ¡dd„ƒZe d ¡dd„ƒZe d ¡d d!„ƒZe d ¡d"d#„ƒZe d$¡e d ¡d%d&„ƒƒZe d ¡d'd(„ƒZe d ¡d)d*„ƒZd+d,„Zd-d.„Zd/d0„Zd1d2„Zd3d4„Zd5d6„Z‡ZS)8ÚUnixWritePipeTransportTestscs’tƒ ¡| ¡|_t tj¡|_t j t j d|_ d|j j_t  d¡}| ¡| |j¡t  d¡}| ¡}t   ¡}tj|_||_| |j¡dSr)rrr rrqr r Z BaseProtocolr rr&rãr r rærirmrr:rrÚS_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 |¡|j d|j¡|  d|  ¡¡dSr) rrµrJrwr rºr*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)Nér#r) rJrirÃr*rPrÚwritersrAr³Ú_buffer©rÚm_writer r r r Ú test_write^s   z&UnixWritePipeTransportTests.test_writecCsB| ¡}| d¡| |j¡| |jj¡| tdƒ|j¡dS)Nr/) rJrÃrPrRrrMrAr³rNrOr r r Útest_write_no_datags   z.UnixWritePipeTransportTests.test_write_no_datacCs>| ¡}d|_| d¡|j d|j¡| tdƒ|j¡dS)NrWr#róta) rJrirÃrÚ assert_writerÚ _write_readyrAr³rNrOr r r Útest_write_partialos  z.UnixWritePipeTransportTests.test_write_partialcCs^| ¡}|j d|j¡tdƒ|_| d¡| |j¡|j  d|j¡|  tdƒ|j¡dS)Nrspreviousr#s previousdata) rJrÚ add_writerrUr³rNrÃrPrRrTrArOr r r Útest_write_bufferws   z-UnixWritePipeTransportTests.test_write_buffercCsP| ¡}tƒ|_| d¡| dtdƒ¡|j d|j¡|  tdƒ|j ¡dSr") rJrör2rÃr*r³rrTrUrArNrOr 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¡|j d¡| ¡dS)Nr#rz#Fatal write error on pipe transportrrWz=pipe closed by peer or os.write(pipe, data) raised exception.)rJrLr2rr&Z _fatal_errorrÃr*rPrrMrAr³rNÚ _conn_lostÚwarningr)rrPZm_logr rr r r Útest_write_errŠs.   þ     ÿz*UnixWritePipeTransportTests.test_write_errcCsD| ¡}| ¡| d¡| |jd¡| d¡| |jd¡dS)Nr#rrW)rJrrÃrArZrOr r r Útest_write_close¥s   z,UnixWritePipeTransportTests.test_write_closecCsX| ¡}| ¡| |jj¡| |jj¡| | ¡¡t  |j¡|j j   d¡dSr ) rJrrPrr(rMrYr;rqr)r r¾r*rCr r r r'¯s z,UnixWritePipeTransportTests.test__read_readycCsR| ¡}|j d|j¡tdƒ|_d|_| ¡| |jj¡|  tƒ|j¡dS)Nrr#rL) rJrrWrUr³rNrirPrMrArOr r r Útest__write_ready¸s z-UnixWritePipeTransportTests.test__write_readycCsV| ¡}|j d|j¡tdƒ|_d|_| ¡|j d|j¡| tdƒ|j¡dS)Nrr#éóa) rJrrWrUr³rNrirTrArOr r r Útest__write_ready_partialÂs z5UnixWritePipeTransportTests.test__write_ready_partialcCsh| ¡}|j d|j¡tdƒ|_tƒ|_| ¡| dtdƒ¡|j  d|j¡|  tdƒ|j¡dS)Nrr#) rJrrWrUr³rNrör2r*rTrArOr r r Útest__write_ready_againÌs z3UnixWritePipeTransportTests.test__write_ready_againcCsf| ¡}|j d|j¡tdƒ|_d|_| ¡| dtdƒ¡|j d|j¡|  tdƒ|j¡dS)Nrr#r) rJrrWrUr³rNrir*rTrArOr r r Útest__write_ready_empty×s z3UnixWritePipeTransportTests.test__write_ready_emptyr-cCs¤| ¡}|j d|j¡tdƒ|_tƒ|_}| ¡| |jj ¡| |jj ¡|  tƒ|j¡|  |  ¡¡| ¡|  d|j¡t |j¡|jj |¡dS)Nrr#r)rJrrWrUr³rNrLr2rPrMr(rArYr;Zassert_not_calledrZrqr)r r¾r*)rrPr1r rr r r Útest__write_ready_errâs   z1UnixWritePipeTransportTests.test__write_ready_errcCs€| ¡}|j d|j¡d|_tdƒ|_d|_| ¡| |jj ¡| |jj ¡|  tƒ|j¡|j j  d¡|jj ¡dS)NrTr#rL)rJrrWrUr9r³rNrirPrMr(rAr r¾r*r rrOr r r Útest__write_ready_closingós z5UnixWritePipeTransportTests.test__write_ready_closingcCsœ| ¡}|j d|j¡|j d|j¡ddg|_| ¡| |j ¡| |jj ¡| |jj ¡|  g|j¡|  | ¡¡t |j¡|jj d¡dS)NrsdarS)rJrrWrUr3rrNÚabortrPrRr(rMrArYr;rqr)r r¾r*rOr r r Ú test_aborts   z&UnixWritePipeTransportTests.test_abortcCsd| ¡}| |j¡| |j¡d}| |¡|jj |¡|jj  ¡|  |j¡|  |j¡dSr ) rJr÷r=r>r?r r¾r*r rrr@r r r rAs     z6UnixWritePipeTransportTests.test__call_connection_lostcCsf| ¡}| |j¡| |j¡tƒ}| |¡|jj |¡|j j  ¡|  |j¡|  |j¡dSr ) rJr÷r=r>rLr?r r¾r*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|_| ¡| |jj¡dSr-)rJrr&rhr9rrPrRrCr r r Útest_close_closing3s  z.UnixWritePipeTransportTests.test_close_closingcCsJ| ¡}| ¡| | ¡¡| |jj¡t |j¡|j j   d¡dSr ) rJrhrYr;rPrr(rqr)r r¾r*rCr r r Útest_write_eof:s  z*UnixWritePipeTransportTests.test_write_eofcCs:| ¡}dg|_| ¡| | ¡¡| |jjj¡dS)Nr#) rJrNrhrYr;rPr r¾rRrCr r r Útest_write_eof_pendingBs z2UnixWritePipeTransportTests.test_write_eof_pending)N)rGrHrIrrJr!rKrrmrQrRrVrXrYr\r]r'r^rarbrcrdrergrArBrgrirjrkrnr r rr rH6sR                     rHc@seZdZdd„ZdS)ÚAbstractChildWatcherTestscCs„t ¡}t ¡}| t|j||¡| t|j|¡| t|j|¡| t|j ¡| t|j ¡| t|j ¡| t|j |||¡dSr ) rr&r ZAbstractChildWatcherrÚNotImplementedErrorÚadd_child_handlerÚremove_child_handlerÚ attach_looprZ is_activeÚ __enter__Ú__exit__©rráÚwatcherr r r Útest_not_implementedLs. ÿÿÿÿÿÿ ÿz.AbstractChildWatcherTests.test_not_implementedN©rGrHrIrur r r r rlJsrlc@seZdZdd„ZdS)Ú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Ú WEXITSTATUSÚWTERMSIGcseZdZej ejd¡Z‡fdd„Z dd„Z dd„Z dd „Z d d „Z d d „Zdd„Zdd„Zdd„Zedd„ƒZedd„ƒZedd„ƒZedd„ƒZedd„ƒZedd„ƒZed d!„ƒZed"d#„ƒZed$d%„ƒZed&d'„ƒZed(d)„ƒZed*d+„ƒZed,d-„ƒZed.d/„ƒZ‡Z S)0ÚChildWatcherTestsMixinr[csntƒ ¡| ¡|_d|_i|_tj |jd¡*|_ |  ¡|_ |j   |j¡Wdƒn1s`0YdS)NFr4) rrr rÚrunningÚzombiesrrmr]Úm_add_signal_handlerÚcreate_watcherrtrprrr r rus  ÿ zChildWatcherTestsMixin.setUpcCstt|jtjƒs|dkr"| |d¡z*|dkr8|j ¡WS||j |¡fWSWnty^Yn0|j rjdSt ƒ‚dS)NrEr)rr) Ú isinstancertr ÚSafeChildWatcherZ assertGreaterr€ÚpopitemÚpoprírÚChildProcessError)rÚpidÚflagsr r r ry€s   zChildWatcherTestsMixin.waitpidcCs|d|j|<dS©Né€)r€)rrˆÚ returncoder r r Ú add_zombiesz!ChildWatcherTestsMixin.add_zombiecCs|dkSrŠr ©rÚstatusr r r rz’sz ChildWatcherTestsMixin.WIFEXITEDcCsd|kodkSS)Ni¼r‹r rŽr r r r{•sz"ChildWatcherTestsMixin.WIFSIGNALEDcCs| | |¡¡|dSrŠ)rYrzrŽr r r r|˜sz"ChildWatcherTestsMixin.WEXITSTATUScCs| | |¡¡d|SrŠ)rYr{rŽr r r r}œszChildWatcherTestsMixin.WTERMSIGcCs|j tj|jj¡dSr )rrfr rdrtÚ _sig_chldrr r r Útest_create_watcher s ÿz*ChildWatcherTestsMixin.test_create_watchercs‡fdd„}|S)Nc sþdd„}|d|jƒÖ}|d|jƒª}|d|jƒ~}|d|jƒR}|d|jƒ&}ˆ|t|||||ƒƒWdƒn1sx0YWdƒn1s–0YWdƒn1s´0YWdƒn1sÒ0YWdƒn1sð0YdS)NcSstj||tjdS)N)ÚwrapsZ new_callable)rrmr&)ÚtargetÚwrapperr r r rm¦sÿzIChildWatcherTestsMixin.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_waitpid©r<r r Ú wrapped_func¥s$ ÿ þ ý üþz:ChildWatcherTestsMixin.waitpid_mocks..wrapped_funcr )r<r–r r•r Ú waitpid_mocks¤s z$ChildWatcherTestsMixin.waitpid_mockscCs*t ¡}|j*d|_|j d|ddd¡Wdƒn1s>0Y| |j¡| |jj¡| |jj¡| |j j¡| |j j¡|j  ¡| |j¡| |jj¡| |jj¡| |j j¡| |j j¡d|_|  dd¡|j  ¡|  |jj¡|  |j j¡| |j j¡| ddddd¡|j ¡|j ¡|j  ¡| ¡|  dd¡|j|j  ¡Wdƒn1sŒ0Y| |j¡| |j j¡|j ¡|j ¡|j  ¡|j ¡|j  ¡| |j¡| |jj¡| |jj¡| |j j¡| |j j¡dS) NTé*é é éFé é )rr&rtrrnrPrRrzr{r|r}rrrYrfr^Úignore_warningsr€Úclear©rr5Úcallbackr r r Ú test_sigchldµsR2         *       z#ChildWatcherTestsMixin.test_sigchldcCsÚt ¡}t ¡}|j(d|_|j d|dd¡Wdƒn1sD0Y| |j¡| |j¡| |jj¡| |jj¡| |j j¡| |j j¡|j"|j d|dd¡Wdƒn1sÌ0Y| |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  ¡Wdƒn1s$0Y| |j¡| |j¡| |j j¡|j ¡|j ¡|j  ¡|j ¡|j  ¡| |j¡| |j¡| |jj¡| |jj¡| |j j¡| |j j¡dS) NTé+ééé,é“ééýÿÿÿélFr›é)rr&rtrrnrPrRrzr{r|r}rrrfrYr^ržr€rŸ©rr5Ú callback1Ú callback2r r r Útest_sigchld_two_childrenòs”0  0                      *         z0ChildWatcherTestsMixin.test_sigchld_two_childrencCs¬t ¡}t ¡}|j(d|_|j d|dd¡Wdƒn1sD0Y| |j¡| |j¡| |jj¡| |jj¡| |j j¡| |j j¡|j"|j d|dd¡Wdƒn1sÌ0Y| |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  ¡Wdƒn1sx0Y| |j¡| |j¡| |j j¡dS) NTé-ér¥é.i{r¨éNéûÿÿÿFr›r«)rr&rtrrnrPrRrzr{r|r}rrrfrYr^ržr¬r r r Ú.test_sigchld_two_children_terminating_togetherZsb0  0              *  zEChildWatcherTestsMixin.test_sigchld_two_children_terminating_togethercCsºt ¡}|j8| dd¡|j ¡|j d|dd¡Wdƒn1sL0Y| dddd¡| ¡| dd¡|j|j ¡Wdƒn1s 0Y|  |j ¡dS)Né2rLrrœrE) rr&rtrrrnrfr^ržrPrRr r r r Útest_sigchld_race_conditionŸs  0 (z2ChildWatcherTestsMixin.test_sigchld_race_conditioncCst ¡}t ¡}|j&d|_|j d|d¡Wdƒn1sB0Y| |j¡| |j¡| |jj¡| |jj¡| |j j¡| |j j¡|j |j d|d¡Wdƒn1sÈ0Y| |j¡| |j¡| |jj¡| |jj¡| |j j¡| |j j¡d|_|  dd¡|j  ¡|  ddd¡| |j¡| |jj¡| |j j¡| |j j¡|j ¡|j ¡|j  ¡| ¡|  dd¡|j|j  ¡Wdƒn1sÜ0Y| |j¡| |j¡| |j j¡dS)NTé3ééFiøÿÿÿr)rr&rtrrnrPrRrzr{r|r}rrrfrYr^ržr¬r r r Útest_sigchld_replace_handlerµsJ.  .         *  z3ChildWatcherTestsMixin.test_sigchld_replace_handlercCs,t ¡}|j&d|_|j d|d¡Wdƒn1s:0Y| |j¡| |jj¡| |jj¡| |j j¡| |j j¡|j  d¡| |j¡| |jj¡| |jj¡| |j j¡| |j j¡d|_|  dd¡|j |j ¡Wdƒn1s0Y| |j¡dS)NTé4iÀFéc)rr&rtrrnrPrRrzr{r|r}rorržrr r r r Útest_sigchld_remove_handlerês(.    *z2ChildWatcherTestsMixin.test_sigchld_remove_handlercCsRt ¡}|j&d|_|j d|d¡Wdƒn1s:0Y| |j¡| |jj¡| |jj¡| |j j¡| |j j¡d|j d<d|_|j  ¡|  ddd¡| |jj¡| |jj¡| |j j¡| |j j¡| ¡|j ¡|j ¡| dd¡|j|j  ¡Wdƒn1s80Y| |j¡dS)NTé5iíÿÿÿišFée)rr&rtrrnrPrRrzr{r|r}r€rrfrYr^rržr r r r Útest_sigchld_unknown_status s0.      *z2ChildWatcherTestsMixin.test_sigchld_unknown_statuscCsBt ¡}t ¡}t ¡}|jFd|_|j d|d¡|j d|d¡|j d|d¡Wdƒn1sj0Y| |j d¡¡| |j d¡¡| |j d¡¡| |j d¡¡| dd¡| dd¡| dd¡d |_|j |j  ¡Wdƒn1s0Y| |j ¡| |j ¡|  ddd¡dS) NTé6ré7rWé8r_rF) rr&rtrrnrYrorPrržrrRrf)rr5r­r®Ú callback3r r r Útest_remove_child_handler/s*.   *  z0ChildWatcherTestsMixin.test_remove_child_handlercCsœt ¡}|j$d|_|j d|¡Wdƒn1s80Yt|j_tj  t j d¡.}|  |j  ¡d¡| |j¡Wdƒn1sŽ0YdS)NTé9Úerror)rr&rtrrnrryr2rmr]rÚloggerrArrYrR)rr5r¡Zm_errorr r r Ú test_sigchld_unhandled_exceptionPs, ÿz7ChildWatcherTestsMixin.test_sigchld_unhandled_exceptioncCs t ¡}|j$d|_|j d|¡Wdƒn1s80Y| |j¡| |jj¡| |jj¡| |j j¡| |j j¡d|_|  dd¡t   dt j¡|j  ¡|j|j ¡Wdƒn1sÖ0Yt|jtjƒrü| |j¡n | dd¡dS)NTé:FrLéÿ)rr&rtrrnrPrRrzr{r|r}rr˜ryÚWNOHANGr^ržrrƒr ÚFastChildWatcherrfr r r r Ú#test_sigchld_child_reaped_elsewherebs$,   (z:ChildWatcherTestsMixin.test_sigchld_child_reaped_elsewherec Cs¼t ¡}t ¡}|jz|jTd|_| dd¡| dd¡|j ¡|j d|¡|j d|¡Wdƒn1sx0YWdƒn1s–0Y| dd¡|  |j ¡dS)NTiOr¤iQr±iP) rr&ržrtrrrrnrfrPrRr¬r r r Ú,test_sigchld_unknown_pid_during_registration…s   J zCChildWatcherTestsMixin.test_sigchld_unknown_pid_during_registrationc Cst ¡}|j$d|_|j d|¡Wdƒn1s80Y|j}| ¡|_tjj}||dƒh}||jdƒ<}|j  |j¡|  t j ¡|  t j |jj ¡Wdƒn1s´0YWdƒn1sÒ0Yd|_| dd¡|j  ¡|  dd¡dS)NTé<r)r4Fr™)rr&rtrrnrr rmr]rprfr rdrr)rr5r¡Úold_looprmZ m_old_removeZ m_new_addr r r Ú test_set_loopšs,,   ÿÿ ÿ@  z$ChildWatcherTestsMixin.test_set_loopc Csüt ¡}t ¡}t ¡}|j@d|_|j d|¡|j d|¡|j d|¡Wdƒn1sd0Y|j}d|_tj |d¡T}| t d¡|j  d¡Wdƒn1s¸0Y|  t j ¡Wdƒn1sâ0Y| dd¡| dd¡| |j¡| |j¡| |j¡| ¡|_tj |jd ¡T}|j  |j¡|  t j |jj¡|  dd¡|  dd¡| |j¡Wdƒn1sž0Y| ¡| ¡d |_| dd ¡|j ¡| |j¡| |j¡|  dd ¡dS) NTé=é>inr)zA loop is being detachedé r´r4Fr¹)rr&rtrrnrrmr]rjÚRuntimeWarningrprfr rdrrPrRr rr^)rr5r­r®rÅrÒÚm_remove_signal_handlerrr r r Útest_set_loop_race_condition¹s\,ÿÿ*ÿ"      ÿ ÿ  ,    z3ChildWatcherTestsMixin.test_set_loop_race_conditionc Cst ¡}|júd|_| dd¡| dd¡|j ¡|j d|¡|j d|¡| t|jj ƒd¡t |jt j ƒrŠ| t|jj ƒd¡tj |jd¡P}|j ¡| tj¡| |jj ¡t |jt j ƒrÜ| |jj ¡Wdƒn1sð0YWdƒn1s0YdS) NTé?r™éAr¨é@rr))rr&rtrrrrnrAreZ _callbacksrƒr rÎZ_zombiesrmr]rrrfr rdrP)rr5r­rØr r r rg÷s.   þ ÿz!ChildWatcherTestsMixin.test_close)!rGrHrIrrmr]rrÉržrryrrzr{r|r}r‘r—r¢r¯rµr·r»r¾rÁrÆrÊrÏrÐrÓrÙrgrnr r rr r~qsL  < g D  4  $   "   =r~c@seZdZdd„ZdS)ÚSafeChildWatcherTestscCst ¡Sr )r r„rr r r r‚sz$SafeChildWatcherTests.create_watcherN©rGrHrIr‚r r r r rÝsrÝc@seZdZdd„ZdS)ÚFastChildWatcherTestscCst ¡Sr )r rÎrr r r r‚sz$FastChildWatcherTests.create_watcherNrÞr r r r rßsrßc@s4eZdZdd„Zdd„Zdd„Zdd„Zd d „Zd S) Ú PolicyTestscCst ¡Sr )r ZDefaultEventLoopPolicyrr r r Ú create_policy$szPolicyTests.create_policycCsL| ¡}| |j¡| ¡}| |tj¡| |j|¡| || ¡¡dSr )rárÚ_watcherÚget_child_watcherr@r ZThreadedChildWatcherrÿ©rÚpolicyrtr r r Útest_get_default_child_watcher's  z*PolicyTests.test_get_default_child_watchercCs<| ¡}t ¡}| |¡| |j|¡| || ¡¡dSr )rár rÎÚset_child_watcherrÿrârãrär r r Ú test_get_child_watcher_after_set2s  z,PolicyTests.test_get_child_watcher_after_setcsD‡‡fdd„}ˆ ¡‰ˆ t ¡¡tj|d}| ¡| ¡dS)NcsRˆ ˆ ¡¡ˆ ˆ ¡tj¡ˆ ¡}ˆ |tj¡ˆ |j ¡ˆ ¡  ¡dSr ) rrÊr@Úget_event_loopr ZAbstractEventLooprãr„rr>r)rt©rårr r rá<s ÿ z4PolicyTests.test_get_child_watcher_thread..f)r“)rárçr r„Ú threadingÚThreadrÚjoin)rráÚthr rêr Útest_get_child_watcher_thread:s   z)PolicyTests.test_get_child_watcher_threadcCs†| ¡}| ¡}t ¡}| |¡| |¡| |j|¡| ¡}|  |¡| |j|¡|  d¡| |jd¡|  ¡|  ¡dSr ) rárér r„rçrprÿr>rÊrr)rrårrtZnew_loopr r r Ú,test_child_watcher_replace_mainloop_existingOs    z8PolicyTests.test_child_watcher_replace_mainloop_existingN)rGrHrIrárærèrïrðr r r r rà"s  ràc@s,eZdZdd„Zdd„Zdd„Zdd„Zd S) ÚTestFunctionalcCst ¡|_t |j¡dSr )r rÊrrrr r r rjs zTestFunctional.setUpcCs|j ¡t d¡dSr )rrr rrr r r ÚtearDownns zTestFunctional.tearDowncsì‡fdd„}dd„}|ƒ ˆj tƒ|¡Wdƒn1s@0Y|ƒ ˆj tƒ|¡Wdƒn1sv0Y|ƒˆj tƒ¡Wdƒn1sª0Y|ƒˆj tƒ¡Wdƒn1sÞ0YdS)Ncs ˆ td¡S)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)rrórCr rr Ú test_add_reader_invalid_argumentrs ..,z/TestFunctional.test_add_reader_invalid_argumentcsb‡fdd„‰‡‡‡fdd„}t ¡\‰}z"ˆj |ƒ¡Wˆ ¡| ¡nˆ ¡| ¡0dS)Ncs ˆ td¡S)Nz'File descriptor .* is used by transport)r;r3r rr r róƒsþzLTestFunctional.test_add_reader_or_writer_transport_fd..assert_raisesc“sôˆjjdd„ˆdIdH\}}zÄdd„}ˆƒˆj ˆ|¡Wdƒn1sT0Yˆƒ"ˆj ˆ ¡|¡Wdƒn1sŒ0Yˆƒˆj ˆ¡Wdƒn1s¾0Yˆƒ ˆj ˆ ¡¡Wdƒn1sô0Yˆƒˆj ˆ|¡Wdƒn1s*0Yˆƒ"ˆj ˆ ¡|¡Wdƒn1sd0Yˆƒˆj ˆ¡Wdƒn1s˜0Yˆƒ ˆj ˆ ¡¡Wdƒn1sÐ0YW| ¡n | ¡0dS)NcSst ¡Sr )r rr r r r r.Šr/zWTestFunctional.test_add_reader_or_writer_transport_fd..runner..rŸcSsdSr r r r r r r.r/)rÚcreate_connectionr3rærôrWrõr)r ZprrC©róZrsockrr r Úrunnerˆs,ÿ,0*..2,2zETestFunctional.test_add_reader_or_writer_transport_fd..runner)rsÚ socketpairrrwr)rrùZwsockr rør Ú&test_add_reader_or_writer_transport_fd‚s   ÿz5TestFunctional.test_add_reader_or_writer_transport_fdN)rGrHrIrròrörûr r r r rñhsrñÚ__main__)1Ú collectionsrêrJrãr˜r~r rsrÚsysr„rër«rÚtestrZ test.supportrÚplatformZSkipTestr rrZtest.test_asynciorrqrùr0r rr¬ZTestCaserr­rpr¯rrHrlrwÚ namedtuplerxr~rÝrßràrñrGÚmainr r r r Úsv         ^ ÿ) ÿN2 ÿ ,FF