f=jdZddlZddlZddlZddlZddlZddlZddlZddlZddl Z ddl Z ddl Z ddl Z ddl Z ddlZddlZddlZddlZddlZGddeZGddej*ZGddeZGd d ej2e Zd Zej8d Zde j<fdZGddZ GddeZ!GddeZ"dZ#dZ$e#Z#e$Z$GddZ%GddejLZ'Gdde'Z(Gdde'Z)d Z*d#d!Z+ej8d"Z,y)$z8Test utilities. Don't use outside of the uvloop project.NceZdZdZy) MockPatterncpttjt||tjSN)boolresearchstrS)selfothers 2/usr/lib/python3/dist-packages/uvloop/_testbase.py__eq__zMockPattern.__eq__s"BIIc$i566N)__name__ __module__ __qualname__rrrrrs7rrc(eZdZfdZfdZxZS) TestCaseDictc0t|||_yr)super__init__name)r r __class__s rrzTestCaseDict.__init__s  rc||jvr%tdj|j|t|||y)Nzduplicate test {}.{})data RuntimeErrorformatrr __setitem__)r keyvaluers rr zTestCaseDict.__setitem__#sB $)) 5<< 3 ! ! C'r)rrrrr __classcell__rs@rrrs((rrc.eZdZedZfdZxZS)BaseTestCaseMetact|Sr)r)mclsrbasess r __prepare__zBaseTestCaseMeta.__prepare__,s D!!rc |D]M}|jds|D]4}t||stdj|||jOt ||||t|S)Ntest_z6duplicate test {}.{} (also defined in {} parent class)) startswithhasattrrrrr__new__dict)r(rr)dct test_namebasers rr/zBaseTestCaseMeta.__new__0s~ =I''0 =4+&((. )T]])<== = =wtT5$s)<set_event_loop"_check_unclosed_resources_in_debugset_exception_handlerrWrSr:s rsetUpzBaseTestCase.setUp[s^MMO %%doo&78tyy)26/ ''(C(CD&(#rc |jj|jr \\";.4"6>$$q-44V<>>> >"&!?!?!E!E!G A \\"8.4"6A$$tyy>>vF077?AAA A t$%%d+ >>AAs-#K :K K K# cd|_yNF)r[r:s rskip_unclosed_handles_checkz(BaseTestCase.skip_unclosed_handles_checks 27/rN )familyaddrtimeoutbacklog max_clientsc|?|tjk(r*tj5}|j}dddnd}tj|tj }| t d|dkr t d|j| |j||j|t|||||S#1swYxYw#t$r} |j| d} ~ wwxYw)Nz 127.0.0.1rtimeout is requiredr#only blocking sockets are supported) socketAF_UNIXtempfileNamedTemporaryFiler SOCK_STREAMr settimeoutbindlistenOSErrorraTestThreadedServer) r server_progr|r}r~rrtmpsockexs r tcp_serverzBaseTestCase.tcp_servers <'002$c88D$$(}}VV%7%78 ?45 5 a<DE E    IIdO KK " $ Wk; ;)$$   JJLH s# C"CC C2C--C2ctj|tj}| td|dkr td|j|t ||||S)Nrrr)rrrrTestThreadedClient)r client_progr|r~rs r tcp_clientzBaseTestCase.tcp_clients`}}VV%7%78 ?45 5 a<DE E  ! $ W. .rcF|j|dtji|SNr|)rrrr argskwargss r unix_serverzBaseTestCase.unix_server!tFV^^FvFFrcF|j|dtji|Sr)rrrrs r unix_clientzBaseTestCase.unix_clientrrc#FKtj5}tjj |d} | tj |dddy#t $rYwxYw# tj |w#t $rYwwxYwxYw#1swYyxYww)Nr)rTemporaryDirectoryospathjoinunlinkr)r tdfns runix_sock_namezBaseTestCase.unix_sock_names  ( ( * bb&)B IIbM   IIbM  snB!!BA+A B! A(%B'A((B+B-BB B BB BBBB!c |jj|j|y#|j|wxYwr)rKstoprdr rs r_abort_socket_testzBaseTestCase._abort_socket_tests,  IINN  IIbMDIIbMs .A)rrrr;r>r@rErLrQrWr]rurxrAF_INETrrrr contextlibcontextmanagerrrrrrr6r6>s"" A)-;5)7r8!..! ;B!.. .GG  rr6) metaclassctjjtjjtjj |d|}tjj |sJ|S)Ncerts)rrabspathrdirnameisfile)test_file_namecert_file_namefullnames r_cert_fullnamersTwwrww|| '. BCH 77>>( ## # Orc#KGddtj}tjd}|}|j| d|j |y#|j |wxYww)NceZdZdZy))silence_long_exec_warning..Filterct|jjdxr|jjd S)N Executingseconds)msgr-endswith)r records rfilterz0silence_long_exec_warning..Filter.filters5 --k:7 ++I68 8rN)rrrrrrrFilterrs 8rrrC)loggingr getLogger addFilter removeFilter)rloggerrs rsilence_long_exec_warningrsa88   y )F XF V$ F#F#sAA6 A A6 A33A6iPc t||dzD]:}tj|}|5 |jd|f|cdddcSt d#tj$r YdddewxYw#1swYrxYw)Nizcould not find a free port)rangerrerrorr) start_fromr|portrs rfind_free_portrsj*s"23}}V$    2t*%    3 44 <<       s-A9AA9A6+A95A66A99B cDeZdZddZdddZej dZy) SSLTestCaseNcttdr$tjtj}nWttdr$tjtj}n#tjtj }|xj tjzc_|j|||S)NPROTOCOL_TLS_SERVER PROTOCOL_TLS) r.ssl SSLContextrrPROTOCOL_SSLv23options OP_NO_SSLv2load_cert_chain)r certfilekeyfile sslcontexts r_create_server_ssl_contextz&SSLTestCase._create_server_ssl_contexts~ 3- .(?(?@J S. )(8(89J(;(;?  (     'F   'szUVTestCase.new_policy4s%%''rN)rrrimplementationr;r>rrrrr-sN'(rrc8eZdZdZfdZfdZdZdZxZS) AIOTestCaserCct|tjdkrEt j }|j |jt j|yyN) ) rr]sys version_inforCSafeChildWatcher attach_looprKset_child_watcher)r watcherrs rr]zAIOTestCase.setUp<sM     g %..0G    *  % %g . &rcrtjdkrtjdt|yr)rrrCrrrur rs rruzAIOTestCase.tearDownDs*   g %  % %d + rc*tjSr)rCrr:s rr;zAIOTestCase.new_loopIs%%''rc*tjSr)rCDefaultEventLoopPolicyr:s rr>zAIOTestCase.new_policyLs--//r) rrrrr]rur;r>r#r$s@rrr8sN/ (0rrctjtj}|5 |jd dddy#t$r YdddywxYw#1swYyxYw)N)z::1rTF)rAF_INET6rr server_socks rhas_IPv6rPsg--0K     Z (    s-AAA A AAAA#ctj}|5 |jd dddy#t$r YdddywxYw#1swYyxYw)NrTF)rrrrs rhas_IPv4r [sa--/K     - .    s*A 4A  AA AA  Ac4eZdZdZdZdddddZdZd Zy) TestSocketWrapperc||_yr)_TestSocketWrapper__sockr rs rrzTestSocketWrapper.__init__ps  rcd}t||kr<|j|t|z }|dk(rt||z }t||kr<|S)Nr)lenrecvConnectionAbortedError)r nbufrs rrecv_allzTestSocketWrapper.recv_allssR#hl99QS\*Ds{,, 4KC #hl  rFNT server_sideserver_hostnamedo_handshake_on_connectct|tjsJ|j|j|||}|r|j |jj ||_y)Nr)rBrr wrap_socketr do_handshakera)r ssl_contextrrrssl_socks rstarttlszTestSocketWrapper.starttls|sd +s~~666** KK[+$;+=   ! ! #  rc.t|j|Sr)rgr)r rs r __getattr__zTestSocketWrapper.__getattr__st{{D))rc`djt|j|jS)Nz <{} {!r}>)rrJrrr:s r__repr__zTestSocketWrapper.__repr__s#!!$t*"5"5t{{CCr)rrrrrr r"r$rrrr r ns'#!%)-$*Drr ceZdZdZdZdZy) SocketThreadc2d|_|jyrw)_activerr:s rrzSocketThread.stops  rc&|j|Sr)startr:s r __enter__zSocketThread.__enter__s  rc$|jyr)r)r excs r__exit__zSocketThread.__exit__s  rN)rrrrr+r.rrrr&r&srr&ceZdZdZdZy)rctjj|dddd|_||_||_d|_||_||_y)Nz test-clientT) threadingThreadrdaemon_timeout_sockr(_prog_test)r testrprogr~s rrzTestThreadedClient.__init__sF!!$dMB      rc |jt|jy#ttf$rt $r%}|j j|Yd}~yd}~wwxYwr)r6r r5KeyboardInterrupt SystemExit BaseExceptionr7rrs rrunzTestThreadedClient.runsR . JJ(4 5!:.   . JJ ) )" - - .s$'A$AA$N)rrrrr>rrrrrs .rrcFeZdZdZfdZdZdZdZedZ xZ S)rc>tjj|dddd|_d|_d|_||_||_||_d|_ ||_ tj\|_ |_|jjd||_y)Nz test-serverTrF)r1r2rr3_clients_finished_clients _max_clientsr4r5r(r6r socketpair_s1_s2 setblockingr7)r r8rr9r~rs rrzTestThreadedServer.__init__s!!$dMB  !"'    #..0$( U# rc |jr9|jjdk7r |jjdt|y#t$rYwxYw#t|wxYw)Nsstop)rFfilenosendrrrrs rrzTestThreadedServer.stopsa xxDHHOO-3HHMM'* GLN GLNs()A&A A# A&"A##A&&A6cx |j5|jjd|jddd|jj |j j y#1swY>xYw#|jj |j j wxYw)Nr)r5rG_runrErarFr:s rr>zTestThreadedServer.runs{   &&q)   HHNN  HHNN     HHNN  HHNN s! B,A7B7B<B6B9c|jr|j|jk\rytj|j|j ggg|j \}}}|j |vry|j|vrk |jj\}}|xjdz c_|j|j  |5|j|ddd|jryy#1swYxYw#ttf$rt$r.}d|_ #|jj|wxYwd}~wwxYw#t$rYZt j"$r|jsYywxYw)NrzF)r(rArCselectr5rEr4acceptr_handle_clientr;r<r=r7rBlockingIOErrorrr~)r rwxconnr}rs rrMzTestThreadedServer._runsCll}} 1 11mmTXX&B ?GAq!xx1}zzQ>!%!2!2!4JD$MMQ&MOODMM2 >!6 //561ll066-z:(>', >! JJ99"= >'~~<< sZEDC:#D:D?DE E&D''EEE  E=E=;E=c8|jt|yr)r6r rs rrQz!TestThreadedServer._handle_clients $T*+rc6|jjSr)r5 getsocknamer:s rr}zTestThreadedServer.addrszz%%''r) rrrrrr>rMrQpropertyr}r#r$s@rrrs1$">H,((rrcd}|}|j|}d|_ |j||jy#|jwxYw)Nc Kywrrrrroncezrun_briefly..onces  sF) create_task_log_destroy_pendingrOra)rKr]gents r run_brieflyrbsN &C A#A "  s AAc&tj|z}|ss|:|tjz }|dkrtjj|j tj j d|sryy)NrgMbP?)timerCfutures TimeoutErrorrOtasksrP)rKpredr~deadlines r run_untilrjskyy{W$Hf  ,G!|oo2244  3 3E :; frc#Ktjjj} tjjj t j dzdtjjj |y#tjjj |wxYww)zrContext manager to disable asyncio logger. For example, it can be used to ignore warnings in debug mode. rzN)rClogrlevelsetLevelrCRITICAL) old_levels rdisable_loggerrq(sx  ""((I/ ##G$4$4q$89  ##I. ##I.s%B>>B&*B>+B;;B>))-__doc__rCasyncio.events collectionsrrerrrcrrOrrrrr1rdunittestrr rUserDictrrJr&TestCaser6rrrrrrrrrr r r2r&rrrbrjrqrrrrysL>    7#7 (;'' (=t=(g8$$0@gT  $ $ $FNN 5((@((0,00 : :$D$DN 9## ..*P(P(p <  / /r