B xe_T8@s~dZddlZddlZddlZddlZddlZddlZddlZddlm Z ddlm Z ddlm Z ddl m Z ddl mZddl mZdd lmZdd lmZdd lmZdd lmZdd lmZddlmZddlmZddlmZddlmZddlmZddlmZddlmZddlmZddlmZddlmZddlm Z ddlm!Z!ddlm"Z"ddlm#Z#ddlm$Z$ddlm%Z%ddlm&Z&ddlm'Z'dd lm(Z(dd!lm)Z)dd"lm*Z*dd#lm+Z+ddlZddlZGd$d%d%eZ,Gd&d'd'eZ-Gd(d)d)eZ.Gd*d+d+eZ/Gd,d-d-eZ0e#Gd.d/d/e'Z1Gd0d1d1eZ2Gd2d3d3eZ3e4d4krzdd5l5m6Z6e6e7dS)6z3 Tests for testing utils (psutil.tests namespace). N)FREEBSD)NETBSD)POSIX) open_binary) open_text) supports_ipv6) bind_socket)bind_unix_socket) call_until)chdir) CI_TESTING)create_sockets) get_free_port)HAS_CONNECTIONS_UNIX) is_namedtuple)mock)process_namespace)PsutilTestCase) PYTHON_EXE) reap_children)retry)retry_on_failure) safe_mkdir) safe_rmpath) serialrun)system_namespace)tcp_socketpair) terminate)TestMemoryLeak)unittest)unix_socketpair) wait_for_file) wait_for_pidc@sxeZdZedddZedddZedddZeddd Zedd d Z edd d Z dS)TestRetryDecoratorz time.sleepcsFtddddfdd}ttd||d||jddS)N)retriesintervallogfuncsxrddqWdS)Nr%r)pop)queuer*N/opt/alt/python37/lib64/python3.7/site-packages/psutil/tests/test_testutils.pyfooCs z2TestRetryDecorator.test_retry_success..foo)rlistrange assertEqual call_count)selfsleepr-r*)r+r,test_retry_success?s z%TestRetryDecorator.test_retry_successcsDtddddfdd}ttd|t|||jddS)Nr$r%)r&r'r(csxrddqWdS)Nr%r)r)r*)r+r*r,r-Qs z2TestRetryDecorator.test_retry_failure..foo)rr/r0 assertRaisesZeroDivisionErrorr1r2)r3r4r-r*)r+r,test_retry_failureNs  z%TestRetryDecorator.test_retry_failurecCs2ttdddd}|t|||jddS)Nr%) exceptionr'cSstdS)N) TypeErrorr*r*r*r,r-^sz2TestRetryDecorator.test_exception_arg..foor)r ValueErrorr7r;r1r2)r3r4r-r*r*r,test_exception_arg\s z%TestRetryDecorator.test_exception_argcCs4tdddddd}|t|||jddS)Nr$)r&r'r(cSs dddS)Nr%rr*r*r*r*r,r-isz4TestRetryDecorator.test_no_interval_arg..foor)rr7r8r1r2)r3r4r-r*r*r,test_no_interval_arges z'TestRetryDecorator.test_no_interval_argcCs4tdddddd}|t|||jddS)Nr$r%)r&r'r(cSs dddS)Nr%rr*r*r*r*r,r-ssz0TestRetryDecorator.test_retries_arg..foo)rr7r8r1r2)r3r4r-r*r*r,test_retries_argps z#TestRetryDecorator.test_retries_argcCs|jttddddS)Nr$r%)r&timeout)r7r<r)r3r4r*r*r,test_retries_and_timeout_argszsz0TestRetryDecorator.test_retries_and_timeout_argsN) __name__ __module__ __qualname__rpatchr5r9r=r>r?rAr*r*r*r,r#=s    r#c@s<eZdZddZddZddZddZd d Zd d Zd S)TestSyncTestUtilsc CsPttttd}tjdtdgd| tj t|WdQRXdS)Nizpsutil.tests.retry.__iter__r) return_value) r"osgetpidmaxpsutilZpidsrrEiterr7 NoSuchProcess)r3Znopidr*r*r,test_wait_for_pids z#TestSyncTestUtils.test_wait_for_pidc CsD|}t|d}|dWdQRXt|tj|r@tdS)Nwr-) get_testfnopenwriter!rHpathexistsAssertionError)r3testfnfr*r*r,test_wait_for_files  z$TestSyncTestUtils.test_wait_for_filec Cs>|}t|dWdQRXt|ddtj|r:tdS)NrOT)empty)rPrQr!rHrSrTrU)r3rVr*r*r,test_wait_for_file_emptys    z*TestSyncTestUtils.test_wait_for_file_emptyc Cs:|}tjdtdgd|tt|WdQRXdS)Nzpsutil.tests.retry.__iter__r)rG)rPrrErLr7IOErrorr!)r3rVr*r*r,test_wait_for_file_no_filesz,TestSyncTestUtils.test_wait_for_file_no_filec CsH|}t|d}|dWdQRXt|ddtj|sDtdS)NrOr-F)delete)rPrQrRr!rHrSrTrU)r3rVrWr*r*r,test_wait_for_file_no_deletes   z.TestSyncTestUtils.test_wait_for_file_no_deletecCstddd}||ddS)NcSsdS)Nr%r*r*r*r*r,z3TestSyncTestUtils.test_call_until..zret == 1r%)r r1)r3retr*r*r,test_call_untilsz!TestSyncTestUtils.test_call_untilN) rBrCrDrNrXrZr\r^rbr*r*r*r,rFs rFc@s4eZdZddZddZddZddZd d Zd S) TestFSTestUtilsc Cs&tt}||jdWdQRXdS)Nrt)r__file__r1mode)r3rWr*r*r,test_open_texts zTestFSTestUtils.test_open_textc Cs&tt}||jdWdQRXdS)Nrb)rrer1rf)r3rWr*r*r,test_open_binarys z TestFSTestUtils.test_open_binarycCs<|}t|tj|s tt|tj|s8tdS)N)rPrrHrSisdirrU)r3rVr*r*r,test_safe_mkdirs zTestFSTestUtils.test_safe_mkdirc Cs|}t|dt|tj|r.tt|t|t|tj|rXtt j dt t j dd.}|t t|WdQRX|jstWdQRXdS)NrOzpsutil.tests.os.stat) side_effect)rPrQcloserrHrSrTrUmkdirrrEOSErrorerrnoEINVALr7called)r3rVmr*r*r,test_safe_rmpaths  z TestFSTestUtils.test_safe_rmpathc Cs\|}t}t|t| |ttj||WdQRX|t|dS)N)rPrHgetcwdror r1rSjoin)r3rVbaser*r*r, test_chdirs   $zTestFSTestUtils.test_chdirN)rBrCrDrgrirkruryr*r*r*r,rcs rcc@s:eZdZddZddZee dddZdd Z d S) TestProcessUtilscCsN|}t|j}|s tt|r2ttjjr>ttjj rJtdS)N) spawn_testprocrKProcesspid is_runningrUrtestsZ _pids_startedZ_subprocesses_started)r3Zsubppr*r*r,test_reap_childrens    z#TestProcessUtils.test_reap_childrencCs|\}}||j|j|s(t|s4tt}|||gtjdd}|t |d| ||| |||| t || |jt||rt|stt||rtdS)NT) recursive)Zspawn_children_pairassertNotEqualr}r~rUrKr|childrenr1lenZassertInppidrHrIr)r3childZ grandchildrr*r*r,test_spawn_children_pairs"        z)TestProcessUtils.test_spawn_children_pairz POSIX onlycCs"|\}}||tjdS)N) spawn_zombier1statusrK STATUS_ZOMBIE)r3parentzombier*r*r,test_spawn_zombies z"TestProcessUtils.test_spawn_zombiecCs|}t|||t|t|j}t|||t|tddg}tj|tj tj d}t|||t||j}t|||t|t r| \}}t|t|||||dS)Nz-czimport time; time.sleep(60);)stdoutstderr) r{rZassertProcessGonerKr|r}rPopen subprocessPIPErr)r3rcmdr}rrr*r*r,test_terminates.        zTestProcessUtils.test_terminateN) rBrCrDrrrskipIfrrrr*r*r*r,rzs rzc@s`eZdZddZee dddZddZee dee pDe dd d Z d d Z d S) TestNetUtilsc Cs>t}ttd|fd}||d|WdQRXdS)Nrl)addrr%)r contextlibclosingrr1 getsockname)r3portsr*r*r,rszTestNetUtils.bind_socketz POSIX onlyc Cs|}t|}t|\||jtj||jtj || |t j |s\ttt |jsrtWdQRX|}t|tjd}t|||jtjWdQRXdS)N)type)rPr rrr1familysocketAF_UNIXr SOCK_STREAMrrHrSrTrUstatS_ISSOCKst_mode SOCK_DGRAM)r3namesockr*r*r,test_bind_unix_sockets   z"TestNetUtils.test_bind_unix_socketc Cs|dtf}ttj|d\}}t|Lt|6||||||| ||WdQRXWdQRXdS)Nz 127.0.0.1)r) rrrAF_INETrrr1r getpeernamer)r3rserverclientr*r*r,tcp_tcp_socketpair.s   zTestNetUtils.tcp_tcp_socketpairz*/var/run/log UNIX socket opened by defaultcCst}|}|jddr t|}t|\}}zvtj |sFtt t |j s\t| ||d| t|jddd| ||| ||Wd||XdS)Nunix)kindr)rKr|num_fdsZ connectionsrUrPr rHrSrTrrrr1rrrrn)r3rrrrrr*r*r,test_unix_socketpair9s z!TestNetUtils.test_unix_socketpairc Cst}tt}tt}x:|D]2}||jd7<||tjtjd7<q"W| |tj dt r| |tj dt rtr| |tjd| |tjd| |tjdWdQRXdS)Nr%r)r collections defaultdictintr getsockoptr SOL_SOCKETSO_TYPEZassertGreaterEqualrrAF_INET6rrrrr)r3ZsocksZfamstypesrr*r*r,test_create_socketsMs    z TestNetUtils.test_create_socketsN) rBrCrDrrrrrrrrrrr*r*r*r,rs  rc@sNeZdZddZddZeeedddZ dd Z d d Z d d Z dS)TestMemLeakClasscs8fdd}ddi|j|ddd|dddS) Ncsdd7<dS)Ncntr%r*r*)rr*r,funbsz(TestMemLeakClass.test_times..funrr )times warmup_times)executer1)r3rr*)rr, test_timesas zTestMemLeakClass.test_timescCs||jt|jdddd|jt|jdddd|jt|jdddd|jt|jd ddd |jt|jd ddd dS) NcSsdS)Nrr*r*r*r*r,r_ir`z1TestMemLeakClass.test_param_err..r)rcSsdS)Nrr*r*r*r*r,r_jr`cSsdS)Nrr*r*r*r*r,r_kr`)rcSsdS)Nrr*r*r*r*r,r_lr`) tolerancecSsdS)Nrr*r*r*r*r,r_mr`)r&)r7r<r)r3r*r*r,test_param_errhs zTestMemLeakClass.test_param_errz skipped on CIcCs4g}|fdd}z|jtd|j|ddWd~XdS)NcSs|dddS)Nxxxxxxxxxxxxxxxxxxxxxxxxi)append)lsr*r*r,rtsz+TestMemLeakClass.test_leak_mem..funz extra-mem2)r)assertRaisesRegexrUr)r3rrr*r*r, test_leak_memos  zTestMemLeakClass.test_leak_memcs8fdd}gtrdnd}td|j|dS)Ncs"tt}|j|dS)N)rQreZ addCleanuprnr)rW)boxr3r*r,rs z1TestMemLeakClass.test_unclosed_files..funfdhandlez unclosed )rrrUr)r3rrr*)rr3r,test_unclosed_files~s   z$TestMemLeakClass.test_unclosed_filescs>fdd}gd}|j||ddd|t|ddS)NcsdddS)Nri)rr*)rr*r,rsz,TestMemLeakClass.test_tolerance..fundri )rrrr%)rr1r)r3rrr*)rr,test_tolerances   zTestMemLeakClass.test_tolerancec Csddd}|t||t|t|WdQRXdd}|t|t|WdQRXdS)NcSs dddS)Nr%rr*r*r*r*r,rsz0TestMemLeakClass.test_execute_w_exc..funcSsdS)Nr*r*r*r*r,rs)Z execute_w_excr8r7rprU)r3rr*r*r,test_execute_w_excs   z#TestMemLeakClass.test_execute_w_excN) rBrCrDrrrrrr rrrrr*r*r*r,r^s  rc@seZdZddZddZdS)TestTestingUtilscCsLt}t|}|dd||jDdd}|||dS)NcSsg|]}|ddkr|qS)r%rr*).0xr*r*r, sz;TestTestingUtils.test_process_namespace..r)rKr|rtestrLgettersr1r)r3rnsrr*r*r,test_process_namespaces z'TestTestingUtils.test_process_namespacecCs:t}dd||jDdd}||tdS)NcSsg|]}|ddkr|qS)r% net_if_addrsr*)rrr*r*r,rsz:TestTestingUtils.test_system_namespace..r)rrLrr1rKr)r3rrr*r*r,test_system_namespacesz&TestTestingUtils.test_system_namespaceN)rBrCrDrrr*r*r*r,rsrc@seZdZddZdS)TestOtherUtilscCs.ttdddddstttr*tdS)Nr-za b cr%rr.)rr namedtuplerUtuple)r3r*r*r,test_is_namedtuplesz!TestOtherUtils.test_is_namedtupleN)rBrCrDrr*r*r*r,rsr__main__) run_from_name)8__doc__rrrqrHrrrrKrrrZpsutil._commonrrrZ psutil.testsrr r r r r rrrrrrrrrrrrrrrrrrr r!r"r#rFrcrzrrrrrBZpsutil.tests.runnerrrer*r*r*r, sl                                 B'-DG @