a  zehm@sdZddlZddlZddlZddlZddlZddlZddlmZddl Z ddl m Z ddl m Z ddlmZddZd d Zd d Zd dZGdddZGddde jZGdddZeee ddGdddee jZeee ddGdddee jZGdddee jZGdddZeee ddGdd d ee jZeee ddGd!d"d"ee jZGd#d$d$ee jZ Gd%d&d&Z!Gd'd(d(e!e jZ"eee ddGd)d*d*e!e jZ#e$d+kre%dS),zTests for futures.py.N)mock)futures)utils)supportcCstddSN)asyncioZset_event_loop_policyrrR/opt/bitninja-python-dojo/embedded/lib/python3.9/test/test_asyncio/test_futures.pytearDownModulesr cCs|Srrfrrr _fakefuncsr cCsdSrrrrrr first_cbsrcCsdSrrrrrr last_cbsrc@s\eZdZdZdZdZdZddZddZddZ d d Z d d Z d dZ ddZ ddZdS) DuckFutureFNcCs|r dSd|_dS)NFT)done_DuckFuture__cancelledselfrrr cancel*szDuckFuture.cancelcCs|jSr)rrrrr cancelled0szDuckFuture.cancelledcCs|jp|jdup|jduSr)r_DuckFuture__result_DuckFuture__exceptionrrrr r3s zDuckFuture.donecCs"|r J|jdur|j|jSr)rrrrrrr result8s  zDuckFuture.resultcCs|r J|jSr)rrrrrr exception>s zDuckFuture.exceptioncCs"|r J|dusJ||_dSr)rr)rrrrr set_resultBs  zDuckFuture.set_resultcCs"|r J|dusJ||_dSr)rr)rrrrr set_exceptionGs  zDuckFuture.set_exceptionccs(|sd|_|V|s J|SNT)r_asyncio_future_blockingrrrrr __iter__Ls  zDuckFuture.__iter__)__name__ __module__ __qualname__rrrrrrrrrrrrrrrr r!srcs,eZdZfddZddZddZZS) DuckTestscs&t||_||jjdSrsupersetUp new_test_looploopZ addCleanupcloser __class__rr r&Vs  zDuckTests.setUpcCs t}t|}||usJdSr)rr wrap_futurerr grrr test_wrap_future[s zDuckTests.test_wrap_futurecCs t}t|}||usJdSr)rrZ ensure_futurer-rrr test_ensure_future`s zDuckTests.test_ensure_future)r r!r"r&r/r0 __classcell__rrr*r r#Ts r#cseZdZddZfddZddZddZd d Zd d Zd dZ ddZ ddZ ddZ ddZ ddZddZddZddZdd Zd!d"Zd#d$Zed%d&d'Zed%d(d)Zed%d*d+Zed%d,d-Zed%d.d/Zed%d0d1Zed%d2d3Zd4d5Zd6d7Zd8d9Z d:d;Z!dd?Z#ed%d@dAZ$dBdCZ%dDdEZ&dFdGZ'dHdIZ(dJdKZ)dLdMZ*Z+S)NBaseFutureTestscOs|j|i|Sr)clsrargskwargsrrr _new_futurehszBaseFutureTests._new_futurecs&t||_||jjdSrr$rr*rr r&ks  zBaseFutureTests.setUpcCsGddd}|t||t||td|tt|j|jd}|t||tt||ttt|| dS)Nc@seZdZdZddZdS)z/BaseFutureTests.test_isfuture..MyFutureNcSs d|_dSNF)rrrrr __init__tsz8BaseFutureTests.test_isfuture..MyFuture.__init__)r r!r"rr9rrrr MyFutureqsr:r() assertFalserisfuture assertTruerZMockr7r(typer)rr:r rrr test_isfuturepszBaseFutureTests.test_isfuturecCsD|j|jd}|||||||dSNr<)r7r(r=rrrr?rr rrr test_initial_states z"BaseFutureTests.test_initial_statecCs:t|j|}||j|j|||jdSr)rZset_event_loopr(r7assertIs_loopget_looprCrrr "test_init_constructor_default_loops z2BaseFutureTests.test_init_constructor_default_loopcCs|t|jddS)N*) assertRaises TypeErrorr7rrrr test_constructor_positionalsz+BaseFutureTests.test_constructor_positionalc Cs|jj|j|jd}|tj|j|jj|j|jd}|tj|j|jj|j|jd}|tt f| dWdn1s0Y|jj|j|jd}|tt f| t Wdn1s0Y|jj|j|jd}|tt f| Wdn1s"0Y|jj|j|jd}|tt f|ddWdn1st0Y|jj|j|jd}|tt f|ddWdn1s0Y|jj|j|jd}z t|Wntt fyYn0|jj|j|jd}z |Wnty>Yn0|jj|j|jd}z t|WntytYn0|jj|j|jd}||||dS)Nr<cSsdSrrr rrr z4BaseFutureTests.test_uninitialized..cSsdSrrr rrr rMrN)r3__new__r(rJrInvalidStateErrorrr RuntimeErrorAttributeErrorrr Exceptionradd_done_callbackremove_done_callbackrepr __await__iterr=rrrfutrrr test_uninitializedsJ(((..   z"BaseFutureTests.test_uninitializedcCs|j|jd}|t|d||jd|d|tj |j |Wdn1sd0Y||jddS)Nr<_cancel_message my message) r7r(r?hasattr assertEqualr\rrJrCancelledErrorrun_until_completerCrrr !test_future_cancel_message_getters *z1BaseFutureTests.test_future_cancel_message_gettercCsv|j|jd}|dd|_||jd|tj|j|Wdn1sZ0Y||jddS)Nr<r]zmy new message) r7r(rr\r_rJrr`rarCrrr !test_future_cancel_message_setters *z1BaseFutureTests.test_future_cancel_message_settercCs|j|jd}|||||||tj|j |tj|j |tj |j d|tj |j d||dSrB)r7r(r?rrrrJrr`rrrPrrr=rCrrr test_cancelszBaseFutureTests.test_cancelcCs|j|jd}|tj|j|d||| | | |d| | d|tj|jd|tj|j d||dSNr<rI)r7r(rJrrPrrr=rr?rr_rrrrCrrr test_results zBaseFutureTests.test_resultcCst}|j|jd}|tj|j|td|j t | || | | ||t|j||||tj|jd|tj|j d| |dS)Nr<z!StopIteration .* cannot be raised)rQr7r(rJrrPrassertRaisesRegexrKr StopIterationr=rr?rrr_rr)rexcr rrr test_exceptions zBaseFutureTests.test_exceptioncCs,|j|jd}|t||tdSrB)r7r(rrQassertIsInstancerrCrrr test_exception_class s z$BaseFutureTests.test_exception_classcsn|j|jdfdd}|}|t|d|t|d|t|d|t|ddS)Nr<c3s2dVEdH}d|fVEdH}d|fVdS)NABCr)xyr rr fixtures    z6BaseFutureTests.test_yield_from_twice..fixturermrI)rnrI)rorI)r7r(r_nextr)rrrr.rr r test_yield_from_twices  z%BaseFutureTests.test_yield_from_twicec Cs|jd|j|jd}|jd}|t|d|jjd|dd|dd ||jd |j|jd}|t|d|jjd ||j|jd}||t|d|jjd |j|jd}| d |t|d|jjd|| d t }|j|jd}| ||t|d|jjd| ||dd}|j|jd} | t|t} |t| d|jjd| | |t| d|jjd |j|jd} | t| t|t} |t} |t| d|jjd| | f|j|jd}|ttdD]}|tq<|td| | f}|t|d|jjd|||t|d|jjd dS)NTr<Fz pending>z cancelled>z finished result=4>z# finished exception=RuntimeError()>cSs(t|\}}d|j||f}t|S)Nz %s() at %s:%s) test_utilsZget_function_sourcer"reescape)funcfilenamelinenotextrrr func_reprBsz3BaseFutureTests.test_future_repr..func_reprz pending cb=\[%s\]>z pending cb=\[%s, %s\]>z%s, <8 more>, %s)r( set_debugr7_source_tracebackr_rVr3r rrrrQrrErrTr assertRegexrrrange)rZf_pending_debugframeZ f_pending f_cancelledZf_resultri f_exceptionrZf_one_callbacksZ fake_reprZf_two_callbacksZ first_reprZ last_reprZf_many_callbacksiZcb_regexrrr test_future_repr"s  "              z BaseFutureTests.test_future_reprcCsddlm}|j|jd}|d|j|jd}|||||||d|j|jd}| t |j|jd}|||||| t |j|j|jd}| |j|jd}||||| dS)Nr)_copy_future_stater< )Zasyncio.futuresrr7r(rr?rr_rrrQrJrr)rrr ZnewfrZnewf_exceptionrZnewf_cancelledrrr test_copy_stategs$      zBaseFutureTests.test_copy_statecsd|j|jdfddfdd}|td|Wdn1sN0YdS)Nr<c3sEdHdSrrrrZrr corosz'BaseFutureTests.test_iter..corocs\}}dSrr)Zarg1Zarg2)rrr testsz'BaseFutureTests.test_iter..testzawait wasn't used)r7r(rgrQr)rrr)rrZr test_iters   $zBaseFutureTests.test_itercCsD|j|jd}|tdd|_Wdn1s60YdS)Nr<zcan only be set to FalseT)r7r(rg ValueError_log_tracebackrYrrr test_log_tracebacksz"BaseFutureTests.test_log_tracebackzasyncio.base_events.loggercCs"|j|jd}~||jjdSrB)r7r(r=errorcalledrm_logrZrrr test_tb_logger_abandonedsz(BaseFutureTests.test_tb_logger_abandonedcCs6|j|jd}|t|~||jjdSrB)r7r(rrSrr=rrrrrr &test_tb_logger_not_called_after_cancels  z6BaseFutureTests.test_tb_logger_not_called_after_cancelcCs,|j|jd}|d~||jjdSre)r7r(rr=rrrrrr !test_tb_logger_result_unretrieveds z1BaseFutureTests.test_tb_logger_result_unretrievedcCs4|j|jd}|d|~||jjdSre)r7r(rrr=rrrrrr test_tb_logger_result_retrieveds  z/BaseFutureTests.test_tb_logger_result_retrievedcCsD|j|jd}|td~t|jt||j j dSNr<Zboom) r7r(rrQrz run_brieflyr gc_collectr?rrrrrr $test_tb_logger_exception_unretrieveds  z4BaseFutureTests.test_tb_logger_exception_unretrievedcCs8|j|jd}|td|~||jjdSr)r7r(rrQrr=rrrrrr "test_tb_logger_exception_retrieveds z2BaseFutureTests.test_tb_logger_exception_retrievedcCs>|j|jd}|td|t|j~||jjdSr) r7r(rrQrJrr=rrrrrr )test_tb_logger_exception_result_retrieveds z9BaseFutureTests.test_tb_logger_exception_result_retrievedcCs|dd}tjd}||d}tj||jd}|j|\}}|t || |d| |t |jdddS)NcSs |tfSr threading get_identargrrr runsz-BaseFutureTests.test_wrap_future..runr;oir<Twait) concurrentrThreadPoolExecutorsubmitrr,r(rar?r>r_ZassertNotEqualrrshutdown)rrexf1f2residentrrr r/s   z BaseFutureTests.test_wrap_futurecCs(|j|jd}t|}|||dSrB)r7r(rr,rErrrrrr test_wrap_future_futures z'BaseFutureTests.test_wrap_future_futurecstdd}fdd|_dd}tjd}||d}t|} j |j |j dd Wdn1st0YdS) Nzasyncio.futures.eventscsjSrr<rrrr rMrNzBBaseFutureTests.test_wrap_future_use_global_loop..cSs |tfSrrrrrr rsz=BaseFutureTests.test_wrap_future_use_global_loop..runr;rTr) rpatchZget_event_looprrrrrr,rEr(rFr)reventsrrrrrrr test_wrap_future_use_global_loops    z0BaseFutureTests.test_wrap_future_use_global_loopcCsNtj}tj||jd}|t|j| | | | dSrB) rrFuturerr,r(rrzrr?rrrrr test_wrap_future_cancels   z'BaseFutureTests.test_wrap_future_cancelcCshtj}tj||jd}|d|t |j| | | | d|| dSre)rrrrr,r(rrrzrr=rr_rr?rrrr test_wrap_future_cancel2s   z(BaseFutureTests.test_wrap_future_cancel2cCsZ|jd|j|jd}tjd}||jt| |jdddt |dfdS)NTr<r;test_future_source_traceback) r(rr7sys _getframef_linenorkrlistr___file__)rfuturerrrr rs z,BaseFutureTests.test_future_source_tracebackc Cs|j|dd}|}|j|jd}||d}t|jttj dkrd|j j d}t |||j f}|jjtj|dnd}|jjtjd d|jjd d }||t|tjdS) Nc Ss8z tWn(ty2}z|WYd}~Sd}~00dSr) MemoryError BaseException)rirrr memory_errors zLBaseFutureTests.check_future_exception_never_retrieved..memory_errorr<)rry^z exception was never retrieved )exc_infoz,^Future/Task exception was never retrieved\nFr)r(rr7rrzrrrr version_infor3r r@ __traceback__rZassert_called_once_withrANYZ call_argsrr{compileDOTALL) rdebugrrrirZregexrmessagerrr &check_future_exception_never_retrieveds     z6BaseFutureTests.check_future_exception_never_retrievedcCs|ddSr8rrrrr %test_future_exception_never_retrievedsz5BaseFutureTests.test_future_exception_never_retrievedcCs|ddSrrrrrr +test_future_exception_never_retrieved_debug!sz;BaseFutureTests.test_future_exception_never_retrieved_debugcCs4|j|jd}|t|d||dS)Nr<)r7r(rrZ_set_result_unless_cancelledr?rrYrrr test_set_result_unless_cancelled$s z0BaseFutureTests.test_set_result_unless_cancelledc Cs||j|jd}|d|}d}z|dWn.ty`}z|jd}WYd}~nd}~00|d||ddS)Nr<)r;rrzStopIteration was expected) r7r(rrsendrhr5Zfailr_)rrZfirrrrr test_future_stop_iteration_args*s   z/BaseFutureTests.test_future_stop_iteration_argscCs\|j|jd}t|}|t|jttdd|t|jtdtd|t|jtdS)Nr<Zelephant )r7r(rXrJrKthrowrSr)rrZrrrr test_future_iter_throw7s    z&BaseFutureTests.test_future_iter_throwcCs:Gddd}tdD]}|j|jd}||qdS)Nc@seZdZddZdS)z5BaseFutureTests.test_future_del_collect..EvilcSs tdSr)gcZcollectrrrr __del__Bsz=BaseFutureTests.test_future_del_collect..Evil.__del__N)r r!r"rrrrr EvilAsrdr<)rr7r(r)rrrrZrrr test_future_del_collect@s z'BaseFutureTests.test_future_del_collect),r r!r"r7r&rArDrHrLr[rbrcrdrfrjrlrtrrrrrrrrrrrrrr/rrrrrrrrrrrrr1rrr*r r2fs\ 4    E               r2_CFuturezrequires the C _asyncio modulec@s6eZdZz ejZWney(dZYn0ddZdS) CFutureTestsNcCsn|j|jd}|t|`Wdn1s20Y|t|`Wdn1s`0YdSrB)r7r(rJrRrrrYrrr test_future_del_segfaultRs  " z%CFutureTests.test_future_del_segfault)r r!r"rrr3rRrrrrr rJs    rc@s>eZdZzGdddejZeZWney8dZYn0dS)CSubFutureTestsc@s eZdZdS)zCSubFutureTests.CSubFutureNr r!r"rrrr CSubFuture^srN)r r!r"rrrr3rRrrrr rZs  rc@seZdZejZdS) PyFutureTestsN)r r!r"r _PyFuturer3rrrr rfsrcs|eZdZfddZddZddZddZd d Zd d Zd dZ ddZ ddZ ddZ ddZ ddZddZZS)BaseFutureDoneCallbackTestscst||_dSr)r%r&r'r(rr*rr r&ls z!BaseFutureDoneCallbackTests.setUpcCst|jdSr)rzrr(rrrr rpsz'BaseFutureDoneCallbackTests.run_brieflycsfdd}|S)NcsdSr)append)rbagthingrr bag_appenderusz@BaseFutureDoneCallbackTests._make_callback..bag_appenderr)rrrrrrr _make_callbackssz*BaseFutureDoneCallbackTests._make_callbackcCstdSrNotImplementedErrorrrrr r7ysz'BaseFutureDoneCallbackTests._new_futurecCsg}|}||d}||d}||d}||||||||||||g|d|||ddg||ddSNrIrfoor7rrTrUr_rrrrrr cb1cb2cb3rrr $test_callbacks_remove_first_callback|s          z@BaseFutureDoneCallbackTests.test_callbacks_remove_first_callbackcCsg}|}||d}||d}||d}||||||||||||||g|d|||dg||ddSrrrrrr /test_callbacks_remove_first_and_second_callbacks            zKBaseFutureDoneCallbackTests.test_callbacks_remove_first_and_second_callbackcCsg}|}||d}||d}||d}||||||||||||g|d|||ddg||ddSrrrrrr $test_callbacks_remove_third_callbacks          z@BaseFutureDoneCallbackTests.test_callbacks_remove_third_callbackcCsrg}|}|||d|||d||g|d|||ddg||ddS)NrIrr)r7rTrr_rrr)rrr rrr $test_callbacks_invoked_on_set_results  z@BaseFutureDoneCallbackTests.test_callbacks_invoked_on_set_resultcCsdg}|}|||d||gt}|||||dg|||dS)Nr)r7rTrr_rQrrr)rrr rirrr 'test_callbacks_invoked_on_set_exceptions  zCBaseFutureDoneCallbackTests.test_callbacks_invoked_on_set_exceptioncCsg}|}||d}||d}||d}|||||||d|||d||tdD]}||qz|||d||g|d|||dg||ddS)Nr;rrrr) r7rrTr_rUrrrr)rrr rrrrrrr test_remove_done_callbacks$          z5BaseFutureDoneCallbackTests.test_remove_done_callbackcsL|ttdD]}tqGfddd}|dS)N?cseZdZfddZdS)zRBaseFutureDoneCallbackTests.test_remove_done_callbacks_list_mutation..evilcstdSr8)rUidrotherrrr __eq__ s zYBaseFutureDoneCallbackTests.test_remove_done_callbacks_list_mutation..evil.__eq__Nr r!r"r rrrr evilsr r7rTstrrrrUr_r rrr (test_remove_done_callbacks_list_mutations    zDBaseFutureDoneCallbackTests.test_remove_done_callbacks_list_mutationcCsHdd}|}|||t|t|dt|jdS)NcSs|tdSr)rUr r rrr mutszPBaseFutureDoneCallbackTests.test_schedule_callbacks_list_mutation_1..mutr;)r7rTr rrzrr()rrrZrrr 'test_schedule_callbacks_list_mutation_1s    zCBaseFutureDoneCallbackTests.test_schedule_callbacks_list_mutation_1csX|ttdD]}tqddGfddd}|dS)NrrrcseZdZfddZdS)zQBaseFutureDoneCallbackTests.test_schedule_callbacks_list_mutation_2..evilcsd7krtdS)Nr;F)rTrrZ extra_cbsrZZ max_extra_cbsrr r )s zXBaseFutureDoneCallbackTests.test_schedule_callbacks_list_mutation_2..evil.__eq__Nr rrrr r (sr r rrrr 'test_schedule_callbacks_list_mutation_2s   zCBaseFutureDoneCallbackTests.test_schedule_callbacks_list_mutation_2)r r!r"r&rrr7rrrrrrrrrr1rrr*r rjs ! rc@seZdZddZdS)CFutureDoneCallbackTestscCstj|jdSrBrrr(rrrr r78sz$CFutureDoneCallbackTests._new_futureNr r!r"r7rrrr r3src@seZdZddZdS)CSubFutureDoneCallbackTestscCsGdddtj}||jdS)Nc@s eZdZdS)z;CSubFutureDoneCallbackTests._new_future..CSubFutureNrrrrr rBsrr<r)rrrrr r7Asz'CSubFutureDoneCallbackTests._new_futureNrrrrr r<src@seZdZddZdS)PyFutureDoneCallbackTestscCstj|jdSrB)rrr(rrrr r7Jsz%PyFutureDoneCallbackTests._new_futureNrrrrr rGsrcs,eZdZddZfddZddZZS)BaseFutureInheritanceTestscCstdSrrrrrr _get_future_clsPsz*BaseFutureInheritanceTests._get_future_clscs&t||_||jjdSrr$rr*rr r&Ss  z BaseFutureInheritanceTests.setUpcCs\|}Gddd|}||jd}|td|Wdn1sN0YdS)Nc@seZdZddZdS)zQBaseFutureInheritanceTests.test_inherit_without_calling_super_init..MyFutc_sdSrrr4rrr r9]szZBaseFutureInheritanceTests.test_inherit_without_calling_super_init..MyFut.__init__N)r r!r"r9rrrr MyFut\srr<z!Future object is not initialized.)rr(rgrQrG)rr3rrZrrr 'test_inherit_without_calling_super_initXs zBBaseFutureInheritanceTests.test_inherit_without_calling_super_init)r r!r"rr&rr1rrr*r rNs rc@seZdZddZdS)PyFutureInheritanceTestscCstjSr)rrrrrr rksz(PyFutureInheritanceTests._get_future_clsNr r!r"rrrrr risrc@seZdZddZdS)CFutureInheritanceTestscCstjSr)rrrrrr rssz'CFutureInheritanceTests._get_future_clsNrrrrr r osr __main__)&__doc__concurrent.futuresrrr{rrZunittestrrrZtest.test_asynciorrzrrr r rrrZTestCaser#r2Z skipUnlessr^rrrrrrrrrr r mainrrrr sv    3g   J