id9dZddlZddlZddlZddlZddlZddlZddlZddlZddl Z ddl Z ddl m Z ddl m Z ddl m Z ddlmZddlmZddlmZdd l mZdd l mZdd l mZdd l mZdd l mZddl mZddl mZddl mZddl mZddl mZddl mZddl mZddl mZddl mZddl m Z ddl m!Z!ddl m"Z"ddl m#Z#ddl m$Z$ddl m%Z%ddl m&Z&ddl m'Z'ddl m(Z(dd l m)Z)dd!l m*Z*dd"l m+Z+dd#l m,Z,dd$l m-Z-Gd%d&eZ.Gd'd(eZ/Gd)d*eZ0Gd+d,eZ1Gd-d.eZ2e'Gd/d0eZ3Gd1d2eZ4Gd3d4eZ5e6d5krdd6l7m8Z8e8e9dSdS)7z3 Tests for testing utils (psutil.tests namespace). N)FREEBSD)NETBSD)POSIX) open_binary) open_text) supports_ipv6) CI_TESTING)COVERAGE)HAS_CONNECTIONS_UNIX) PYTHON_EXE)PYTHON_EXE_ENV)PsutilTestCase)TestMemoryLeak) bind_socket)bind_unix_socket) call_until)chdir)create_sockets) get_free_port) is_namedtuple)mock)process_namespace) reap_children)retry)retry_on_failure) safe_mkdir) safe_rmpath) serialrun)system_namespace)tcp_socketpair) terminate)unix_socketpair) wait_for_file) wait_for_pidc:eZdZejddZejddZejddZejddZejddZ ejddZ dS) TestRetryDecoratorz time.sleepctdddfd}ttd||d||jddS)NretriesintervallogfuncBrddz dSNr)rpopqueuesP/opt/cloudlinux/venv/lib/python3.11/site-packages/psutil/tests/test_testutils.pyfooz2TestRetryDecorator.test_retry_success..fooF2  A 1)rlistrange assertEqual call_countselfsleepr5r3s @r4test_retry_successz%TestRetryDecorator.test_retry_successBs q1T 2 2 2     3 2  U1XX """ )1-----r7ctdddfd}ttd|t|||jddS)Nr(r)r*cBrddz dSr/r0r2sr4r5z2TestRetryDecorator.test_retry_failure..fooTr6r7)rr9r: assertRaisesZeroDivisionErrorr;r<r=s @r4test_retry_failurez%TestRetryDecorator.test_retry_failureQs q1T 2 2 2     3 2  U1XX +S111 )1-----r7cttdd}|t|||jddS)Nr)) exceptionr,ctN) TypeErrorr7r4r5z2TestRetryDecorator.test_exception_arg..fooasOr7r)r ValueErrorrDrKr;r<r>r?r5s r4test_exception_argz%TestRetryDecorator.test_exception_arg_s` a 0 0 0   1 0  )S))) )1-----r7ctdddd}|t|||jddS)Nr(r*cddz dSr/rLrLr7r4r5z4TestRetryDecorator.test_no_interval_arg..fool EEEEr7rrrDrEr;r<rNs r4test_no_interval_argz'TestRetryDecorator.test_no_interval_arghse q4 5 5 5   6 5  +S111 )1-----r7ctdddd}|t|||jddS)Nr(r)r*cddz dSr/rLrLr7r4r5z0TestRetryDecorator.test_retries_arg..foovrRr7rSrNs r4test_retries_argz#TestRetryDecorator.test_retries_argsse q1T 2 2 2   3 2  +S111 )1-----r7cL|ttdddS)Nr(r))r+timeout)rDrMr)r>r?s r4test_retries_and_timeout_argsz0TestRetryDecorator.test_retries_and_timeout_args}s% *eQBBBBBr7N) __name__ __module__ __qualname__rpatchr@rFrOrTrWrZrLr7r4r&r&@sTZ  . . .TZ  . . .TZ ...TZ ...TZ ...TZ CCCCCr7r&c2eZdZdZdZdZdZdZdZdS)TestSyncTestUtilscRttjtt jdz}t jdtdg5| tj t|ddddS#1swxYwYdS)Nipsutil.tests.retry.__iter__r return_value) r$osgetpidmaxpsutilpidsrr^iterrD NoSuchProcess)r>nopids r4test_wait_for_pidz#TestSyncTestUtils.test_wait_for_pidsRY[[!!!FKMM""U* Z5D!II N N N I I   f2L% H H H I I I I I I I I I I I I I I I I I Is('BB #B c|}t|d5}|ddddn #1swxYwYt|dS)Nwr5 get_testfnopenwriter#r>testfnfs r4test_wait_for_filez$TestSyncTestUtils.test_wait_for_files"" &#   ! GGENNN               fAA A c|}t|d5 dddn #1swxYwYt|ddS)NroT)empty)rqrrr#r>rus r4test_wait_for_file_emptyz*TestSyncTestUtils.test_wait_for_file_emptys"" &#                    fD))))))s 377c|}tjdtdg5|t t |ddddS#1swxYwYdS)Nrbrrc)rqrr^rjrDIOErrorr#r{s r4test_wait_for_file_no_filez,TestSyncTestUtils.test_wait_for_file_no_files"" Z5D!II N N N > >   g}f = = = > > > > > > > > > > > > > > > > > >s"A((A,/A,c|}t|d5}|ddddn #1swxYwYt|ddS)Nror5F)deleterprts r4test_wait_for_file_no_deletez.TestSyncTestUtils.test_wait_for_file_no_deletes"" &#   ! GGENNN               fU++++++rxcTtdd}||ddS)NcdS)Nr)rLrLr7r4z3TestSyncTestUtils.test_call_until..sr7zret == 1r))rr;)r>rets r4test_call_untilz!TestSyncTestUtils.test_call_untils/J// a     r7N) r[r\r]rmrwr|rrrrLr7r4r`r`sqIII ******>>> &&&!!!!!r7r`c,eZdZdZdZdZdZdZdS)TestFSTestUtilsctt5}||jdddddS#1swxYwYdS)Nrt)r__file__r;moder>rvs r4test_open_textzTestFSTestUtils.test_open_texts x  +A   QVT * * * + + + + + + + + + + + + + + + + + +>AActt5}||jdddddS#1swxYwYdS)Nrb)rrr;rrs r4test_open_binaryz TestFSTestUtils.test_open_binarys  " " +a   QVT * * * + + + + + + + + + + + + + + + + + +rcj|}t|t|dSrJ)rqrr{s r4test_safe_mkdirzTestFSTestUtils.test_safe_mkdirs3""66r7c|}t|dt|t|t j|t|t jdttj d5}| t5t|dddn #1swxYwYddddS#1swxYwYdS)Nrozpsutil.tests.os.stat) side_effect) rqrrcloserremkdirrr^OSErrorerrnoEINVALrD)r>rums r4test_safe_rmpathz TestFSTestUtils.test_safe_rmpathsm"" VS!!!F F FZ.$+EL"$=$=??? BC""7++ $ $F### $ $ $ $ $ $ $ $ $ $ $ $ $ $ $                  s6&C5C C5C! !C5$C! %C55C9<C9c|}tj}tj|t |5|tjtj||dddn #1swxYwY|tj|dSrJ)rqregetcwdrrr;pathjoin)r>rubases r4 test_chdirzTestFSTestUtils.test_chdirs""y{{  6]] F F   RY[["',,tV*D*D E E E F F F F F F F F F F F F F F F d+++++s ABB!$B!N)r[r\r]rrrrrrLr7r4rrs_++++++%%%&,,,,,r7rcVeZdZdZdZeje ddZdZ dS)TestProcessUtilsc||}tj|j}t dSrJ)spawn_testprocrhProcesspidr)r>subpps r4test_reap_childrenz#TestProcessUtils.test_reap_childrens1""$$ N48 $ $r7c|\}}||j|jtj}|||gtjd}|t|d|||||||| tj || |jt|t|dS)NT) recursive) spawn_children_pairassertNotEqualrrhrchildrenr;lenassertInppidrerfr!)r>child grandchildrs r4test_spawn_children_pairz)TestProcessUtils.test_spawn_children_pairs1 4466z EIz~666>##,,.. E7+++>##,,t,<< X*** eX&&& j(+++ ry{{333 **EI666% *r7 POSIX onlyc|\}}||tjdSrJ) spawn_zombier;statusrh STATUS_ZOMBIE)r>parentzombies r4test_spawn_zombiez"TestProcessUtils.test_spawn_zombies>**,, &*>?????r7c|}t|||t|tj|j}t|||t|t ddg}tj|tj tj t}t|||t||j}t|||t|tra| \}}t|t|||||dSdS)Nz-czimport time; time.sleep(60);)stdoutstderrenv) rr!assertProcessGonerhrrr Popen subprocessPIPEr rr)r>rcmdrrrs r4test_terminatezTestProcessUtils.test_terminates    ! !!  q!!!! N4..004 5 5!  q!!!! 4!?@ LZ_Z_+ - - -!  q!!!! !!##'# q!!!#  +!..00NFF f    f     " "6 * * *  " "6 * * * * *  + +r7N) r[r\r]rrunittestskipIfrrrrLr7r4rrsp666+++*X_Y --@@.-@+++++r7rceZdZdZeje ddZdZeje deje pe ddZ dZ dS) TestNetUtilsct}tjtd|f5}||d|ddddS#1swxYwYdS)Nraddrr))r contextlibclosingrr; getsockname)r>portss r4rzTestNetUtils.bind_sockets   "d < < < = = 7   Q]]__Q/ 6 6 6 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7s/A//A36A3rc|}t|}tj|5||jt j||jt j || |dddn #1swxYwY|}t|t j }tj|5||jt j ddddS#1swxYwYdS)N)type) rqrrrr;familysocketAF_UNIXr SOCK_STREAMr SOCK_DGRAM)r>namesocks r4test_bind_unix_socketz"TestNetUtils.test_bind_unix_socket"s  %%   % % 8 8   T[&. 9 9 9   TY(: ; ; ;   T--// 6 6 6 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8  6+<===   % % ; ;   TY(9 : : : ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ;s$A3B77B;>B;&D88D<?D<cdtf}ttj|\}}t j|5t j|5||||||| ||dddn #1swxYwYddddS#1swxYwYdS)Nz 127.0.0.1r) rr rAF_INETrrr;r getpeernamer)r>rserverclients r4tcp_tcp_socketpairzTestNetUtils.tcp_tcp_socketpair2s]__-'TBBB   ' ' @ @#F++ @ @  !3!3!5!5t<<<  !3!3!5!5t<<<##F$6$6$8$8$???  @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @s7C5A9C C5C! !C5$C! %C55C9<C9z*/var/run/log UNIX socket opened by defaultctj}|}|}t |\}} |||z d|t |dd||||| || | dS#| | wxYw)Nrunix)kind) rhrnum_fdsrqr"r;r connectionsrrr)r>rrrrrs r4test_unix_socketpairz!TestNetUtils.test_unix_socketpair=s N  ))++  (..    QYY[[72A 6 6 6   SF!;!;<socksfamstypesrs r4test_create_socketsz TestNetUtils.test_create_socketsQs    A*3//D+C00E L LQX!#all6#4fnEEFFF!KFFFF  # #D$8! < < < B''V_(=qAAA A- A''V^(.fungs JJJ!OJJJJJr7rr )times warmup_times)executer;)r>rrs @r4 test_timeszTestMemLeakClass.test_timeses]     aj S 444 UR(((((r7cn|t|jdd|t|jdd|t|jdd|t|jdd |t|jd d dS) NcdSNrrLrLr7r4rz1TestMemLeakClass.test_param_err..nAr7rrcdSr rLrLr7r4rz1TestMemLeakClass.test_param_err..or r7cdSr rLrLr7r4rz1TestMemLeakClass.test_param_err..pr r7)rcdSr rLrLr7r4rz1TestMemLeakClass.test_param_err..qr r7) tolerancecdSr rLrLr7r4rz1TestMemLeakClass.test_param_err..rr r7)r+)rDrMrr>s r4test_param_errzTestMemLeakClass.test_param_errms *dlIIQGGG *dlIIRHHH *dlIIBOOO *dlIILLL *dlIIrJJJJJr7z skipped on CIzskipped during test coverageclg}|fd} |td|j|d~dS#~wxYw)Nc6|ddzdSNxxxxxxxxxxxxxxxxxxxxxxxxiappendlss r4rz+TestMemLeakClass.test_leak_mem..funzs IIho & & & & &r7z extra-mem2r )assertRaisesRegexAssertionErrorr)r>rrs r4 test_leak_memzTestMemLeakClass.test_leak_memtsf ' ' ' '   " ">;#'<B # @ @ @FFFFs$03czfd}gtrdnd}td|zj|dS)Nctt}|j|dSrJ)rrr addCleanuprr)rvboxr>s r4rz1TestMemLeakClass.test_unclosed_files..funs5XA OOAG $ $ $ JJqMMMMMr7fdhandlez unclosed )rrr r)r>rrr%s` @r4test_unclosed_filesz$TestMemLeakClass.test_unclosed_filessi       *tt( ~{T/A#|S 2 2 2 2 2r7cfd}gd}|||dd|t|dzdS)Nc8ddzdSrrrsr4rz,TestMemLeakClass.test_tolerance..funs IIho & & & & &r7dri )rrrr))rr;r)r>rrrs @r4test_tolerancezTestMemLeakClass.test_tolerancesp ' ' ' ' '  SA0  2 2 2 R%!),,,,,r7c~d}|t||t5|t|dddn #1swxYwYd}|t5|t|ddddS#1swxYwYdS)Ncddz dSr/rLrLr7r4fun_1z2TestMemLeakClass.test_execute_w_exc..fun_1s EEEEr7cdSrJrLrLr7r4fun_2z2TestMemLeakClass.test_execute_w_exc..fun_2s Dr7) execute_w_excrErDrr )r>r/r1s r4test_execute_w_excz#TestMemLeakClass.test_execute_w_excsF    ,e444   0 1 1 / /   w . . . / / / / / / / / / / / / / / /      ~ . . 9 9   0% 8 8 8 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9s#A!!A%(A% B22B69B6N)r[r\r]rrrrrr r r!r(r,r3rLr7r4rrbs)))KKKX_Z11X_X=>>  ?>21  2 2 2--- 9 9 9 9 9r7rceZdZdZdZdS)TestTestingUtilsc2tj}t|}|d||jDdd}|||dS)Nc*g|]}|ddk|S)r)rrL.0xs r4 z;TestTestingUtils.test_process_namespace..s!@@@Q1qr7r)rhrrtestrjgettersr;r)r>rnsrs r4test_process_namespacez'TestTestingUtils.test_process_namespaces~ N   q ! !  @@"''"*--@@@CAF )))))r7ct}d||jDdd}||t jdS)Nc*g|]}|ddk|S)r) net_if_addrsrLr8s r4r;z:TestTestingUtils.test_system_namespace..s&HHHQ11G1Gq1G1G1Gr7r)rrjr=r;rhrB)r>r>rs r4test_system_namespacez&TestTestingUtils.test_system_namespacesc   HH"''"*--HHHKAN  3 5 566666r7N)r[r\r]r?rCrLr7r4r5r5s2***77777r7r5ceZdZdZdS)TestOtherUtilscdSrJrLrs r4test_is_namedtuplez!TestOtherUtils.test_is_namedtuplesr7N)r[r\r]rGrLr7r4rErEs#*****r7rE__main__) run_from_name):__doc__rrrrerstatrrrh psutil.testsrrrpsutil._commonrrrr r r r r rrrrrrrrrrrrrrrrrrr r!r"r#r$r&r`rrrrr5rEr[psutil.tests.runnerrIrrLr7r4rOs  &&&&&&$$$$$$((((((######!!!!!!------######''''''''''''''''''$$$$$$))))))######''''''&&&&&&&&&&&&******&&&&&&))))))######$$$$$$""""""))))))''''''""""""((((((&&&&&&%%%%%%?C?C?C?C?C?C?C?CD$!$!$!$!$!$!$!$!N*,*,*,*,*,n*,*,*,ZB+B+B+B+B+~B+B+B+JDADADADADA>DADADAN ?9?9?9?9?9~?9?9 ?9D 7 7 7 7 7~ 7 7 7*****^*** z111111M(r7