a 8êdg°#ã@sþddlZddlZddlZddlZddlZddlZddlZddlmZejdkrXe  d¡‚ddl Z ddl Z ddl Z ddl m Z ddlmZdd„ZGd d „d e jƒZGd d „d ejƒZGd d„dejƒZGdd„dejƒZGdd„dejƒZedkrúe ¡dS)éN)ÚmockÚwin32z Windows only)Úwindows_events)ÚutilscCst d¡dS©N)ÚasyncioÚset_event_loop_policy©r r úA/usr/local/lib/python3.9/test/test_asyncio/test_windows_events.pyÚtearDownModulesr c@s$eZdZdd„Zdd„Zdd„ZdS)Ú UpperProtocCs g|_dSr)Úbuf©Úselfr r r Ú__init__szUpperProto.__init__cCs ||_dSr)Útrans)rrr r r Úconnection_madeszUpperProto.connection_madecCs:|j |¡d|vr6|j d |j¡ ¡¡|j ¡dS)Nó ó)r ÚappendrÚwriteÚjoinÚupperÚclose)rÚdatar r r Ú data_received s zUpperProto.data_receivedN)Ú__name__Ú __module__Ú __qualname__rrrr r r r r sr c@seZdZdd„ZdS)ÚProactorLoopCtrlCc Cszdd„}tj|d}t ¡}zDz"| |j¡| ¡| d¡WntyRYn0W|  |¡n |  |¡0|  ¡dS)NcSst d¡t tj¡dS)Nçš™™™™™¹?)ÚtimeÚsleepÚsignalÚ raise_signalÚSIGINTr r r r ÚSIGINT_after_delay+s z9ProactorLoopCtrlC.test_ctrl_c..SIGINT_after_delay©Útargetz%should not fall through 'run_forever') Ú threadingÚThreadrZget_event_loopZ call_soonÚstartÚ run_foreverZfailÚKeyboardInterruptÚ close_loopr)rr&ÚthreadÚloopr r r Ú test_ctrl_c)s   zProactorLoopCtrlC.test_ctrl_cN)rrrr1r r r r r'src@seZdZdd„ZdS)ÚProactorMultithreadingcsDd‰dd„‰‡‡fdd„}tj|d}| ¡| ¡| ˆ¡dS)NFcÓst d¡IdHdS)Nr)rr"r r r r ÚcoroAszAProactorMultithreading.test_run_from_nonmain_thread..corocs$t ¡}| ˆƒ¡| ¡d‰dS)NT)rZnew_event_loopÚrun_until_completer©r0©r3Úfinishedr r ÚfuncDs zAProactorMultithreading.test_run_from_nonmain_thread..funcr')r)r*r+rÚ assertTrue)rr8r/r r6r Útest_run_from_nonmain_thread>s z3ProactorMultithreading.test_run_from_nonmain_threadN)rrrr:r r r r r2=sr2cs\eZdZ‡fdd„Zdd„Zdd„Zdd„Zd d „Zd d „Zd d„Z dd„Z dd„Z ‡Z S)Ú ProactorTestscs$tƒ ¡t ¡|_| |j¡dSr)ÚsuperÚsetUprÚProactorEventLoopr0Zset_event_loopr©Ú __class__r r r=Ts  zProactorTests.setUpcCsht ¡\}}|j |t ¡¡}tj|j |d¡|jd}| ¡|j  |¡|  |  ¡d¡| ¡dS)Nédr5r) ÚsocketÚ socketpairr0Z_make_socket_transportrÚProtocolZ ensure_futureZ sock_recvrr4Ú assertEqualÚresult)rÚaÚbrÚfr r r Ú test_closeYs  zProactorTests.test_closecCsVdt ¡}t |¡}| t¡t |¡Wdƒn1s@0Y| ¡dS)Nz\\.\pipe\test_double_bind-%s)ÚosÚgetpidrÚ PipeServerÚ assertRaisesÚPermissionErrorr)rÚADDRESSZserver1r r r Útest_double_bindbs    (zProactorTests.test_double_bindcCs |j | ¡¡}| |d¡dS)NÚdone)r0r4Ú _test_piperE)rÚresr r r Ú test_pipeiszProactorTests.test_pipec ƒs¤dt ¡}| t¡&|j tj|¡IdHWdƒn1sB0Y|j t |¡IdH\}|  |t j ¡g}t dƒD]j}tj|jd}tj||jd‰|j ‡fdd„|¡IdH\}}|  |tj¡| ˆ|¡| ||f¡q|t|ƒD] \}\}} |  d |¡ ¡¡qðt|ƒD]:\}\}} | ¡IdH} | | d |¡ ¡¡|  ¡q| ¡| t¡&|j tj|¡IdHWdƒn1s–0YdS) Nz\\.\pipe\_test_pipe-%sér5csˆSrr r ©Úprotocolr r Ú~rz*ProactorTests._test_pipe..z lower-{} z LOWER-{} rR)rKrLrNÚFileNotFoundErrorr0Zcreate_pipe_connectionrrDZstart_serving_piper ÚassertIsInstancerrMÚrangeÚ StreamReaderZStreamReaderProtocolZ TransportrErÚ enumeraterÚformatÚencodeÚreadliner) rrPZserverZclientsÚiZ stream_readerrÚprotoÚrÚwÚresponser rWr rSmsB  ÿ(ÿ  ÿ ÿ   ÿ*zProactorTests._test_pipec Csžtƒ}tj|_tjjtd|dj}|jj  d¡}|j  |¡}|  ¡|  t j¡|j |¡Wdƒn1sr0YWdƒn1s0YdS)NZ ConnectPipe)Z side_effectZ pipe_address)ÚOSErrorÚ _overlappedZERROR_PIPE_BUSYÚwinerrorrZpatchÚobjectr0Ú _proactorZ connect_pipeZ create_taskÚcancelrNrÚCancelledErrorr4)rÚexcÚconnectr3Ztaskr r r Útest_connect_pipe_cancel“s ÿ z&ProactorTests.test_connect_pipe_cancelcCst dddd¡}| tj|¡|jj |d¡}|j ¡}|j  |¡}|j ¡|}|  |d¡|  |  ¡¡|  d|ko‚dkn|¡t |¡|jj |d¡}|j ¡}|j  |¡}|j ¡|}|  |d¡|  |  ¡¡|  d|koúdkn|¡| ¡dS) NTFgà?gÍÌÌÌÌÌÜ?gÍÌÌÌÌÌì?é rg333333Ó?)rhÚ CreateEventÚ addCleanupÚ_winapiÚ CloseHandler0rkÚwait_for_handler!r4rEÚ assertFalserFr9ZSetEventrl)rÚeventÚfutr+rRÚelapsedr r r Útest_wait_for_handle s$         z"ProactorTests.test_wait_for_handlecCsÈt dddd¡}| tj|¡|jj |d¡}| ¡|j  ¡}|  t j ¡|j  |¡Wdƒn1sn0Y|j  ¡|}| d|koœdkn|¡|jj |¡}| ¡| ¡dS)NTFrqrr )rhrrrsrtrur0rkrvrlr!rNrrmr4r9)rrxryr+rzr r r Útest_wait_for_handle_cancelÂs * z)ProactorTests.test_wait_for_handle_cancelcCsrt ¡|j_|j ddd„¡}|j ¡|j ¡|j ¡|j ¡|j |¡| |j¡|  |jjj ¡dS)NcSsdSrr r r r r rYßrz;ProactorTests.test_read_self_pipe_restart..) rZMockr0Zcall_exception_handlerZrun_in_executorÚstopr,r4r.rwZcalled)rrIr r r Útest_read_self_pipe_restartÖs      z)ProactorTests.test_read_self_pipe_restart) rrrr=rJrQrUrSrpr{r|r~Ú __classcell__r r r?r r;Rs  & "r;c@seZdZdd„Zdd„ZdS)ÚWinPolicyTestsc sN‡fdd„}t ¡}z(t t ¡¡t |ƒ¡Wt |¡n t |¡0dS)Nc“sˆ t ¡tj¡dSr)r[rÚget_running_loopZSelectorEventLoopr rr r Úmainösþz5WinPolicyTests.test_selector_win_policy..main)rÚget_event_loop_policyrZWindowsSelectorEventLoopPolicyÚrun©rr‚Z old_policyr rr Útest_selector_win_policyõs ÿz'WinPolicyTests.test_selector_win_policyc sN‡fdd„}t ¡}z(t t ¡¡t |ƒ¡Wt |¡n t |¡0dS)Nc“sˆ t ¡tj¡dSr)r[rrr>r rr r r‚sþz5WinPolicyTests.test_proactor_win_policy..main)rrƒrZWindowsProactorEventLoopPolicyr„r…r rr Útest_proactor_win_policys ÿz'WinPolicyTests.test_proactor_win_policyN)rrrr†r‡r r r r r€ósr€Ú__main__)rKr#rBÚsysr!r)ZunittestrÚplatformZSkipTestrhrtrrZtest.test_asynciorZ test_utilsr rDr ZTestCaserr2r;r€rr‚r r r r Ús.     "