U 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)NretriesintervalZlogfuncsrddqdSNr%rpopZqueuer,N/opt/alt/python38/lib64/python3.8/site-packages/psutil/tests/test_testutils.pyfooCs z2TestRetryDecorator.test_retry_success..foo)rlistrange assertEqual call_countselfsleepr/r,r-r.test_retry_success?s   z%TestRetryDecorator.test_retry_successcsDtddddfdd}ttd|t|||jddS)Nr$r%r&csrddqdSr)r*r,r-r,r.r/Qs z2TestRetryDecorator.test_retry_failure..foo)rr1r2 assertRaisesZeroDivisionErrorr3r4r5r,r-r.test_retry_failureNs    z%TestRetryDecorator.test_retry_failurecCs2ttdddd}|t|||jddS)Nr%)Z exceptionr(cSstdSN) TypeErrorr,r,r,r.r/^sz2TestRetryDecorator.test_exception_arg..foor)r ValueErrorr:r>r3r4r5r,r,r.test_exception_arg\s   z%TestRetryDecorator.test_exception_argcCs4tdddddd}|t|||jddS)Nr$r&cSs dddSr)r,r,r,r,r.r/isz4TestRetryDecorator.test_no_interval_arg..foorrr:r;r3r4r5r,r,r.test_no_interval_arges   z'TestRetryDecorator.test_no_interval_argcCs4tdddddd}|t|||jddS)Nr$r%r&cSs dddSr)r,r,r,r,r.r/ssz0TestRetryDecorator.test_retries_arg..foorAr5r,r,r.test_retries_argps   z#TestRetryDecorator.test_retries_argcCs|jttddddS)Nr$r%)r'Ztimeout)r:r?r)r6r7r,r,r.test_retries_and_timeout_argszsz0TestRetryDecorator.test_retries_and_timeout_argsN) __name__ __module__ __qualname__rpatchr8r<r@rBrCrDr,r,r,r.r#=s     r#c@s<eZdZddZddZddZddZd d Zd d Zd S)TestSyncTestUtilsc CsPttttd}tjdtdgd| tj t|W5QRXdS)Nipsutil.tests.retry.__iter__rZ return_value) r"osgetpidmaxpsutilZpidsrrHiterr:Z NoSuchProcess)r6Znopidr,r,r.test_wait_for_pids z#TestSyncTestUtils.test_wait_for_pidc Cs4|}t|d}|dW5QRXt|dS)Nwr/ get_testfnopenwriter!r6testfnfr,r,r.test_wait_for_files  z$TestSyncTestUtils.test_wait_for_filec Cs.|}t|dW5QRXt|dddS)NrRT)empty)rTrUr!r6rXr,r,r.test_wait_for_file_emptys    z*TestSyncTestUtils.test_wait_for_file_emptyc Cs:|}tjdtdgd|tt|W5QRXdS)NrJrrK)rTrrHrPr:IOErrorr!r\r,r,r.test_wait_for_file_no_filesz,TestSyncTestUtils.test_wait_for_file_no_filec Cs8|}t|d}|dW5QRXt|dddS)NrRr/F)deleterSrWr,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 r3)r6Zretr,r,r.test_call_untilsz!TestSyncTestUtils.test_call_untilN) rErFrGrQrZr]r_rardr,r,r,r.rIs rIc@s4eZdZddZddZddZddZd d Zd S) TestFSTestUtilsc Cs&tt}||jdW5QRXdS)NZrt)r__file__r3moder6rYr,r,r.test_open_texts zTestFSTestUtils.test_open_textc Cs&tt}||jdW5QRXdS)Nrb)rrfr3rgrhr,r,r.test_open_binarys z TestFSTestUtils.test_open_binarycCs|}t|t|dSr=)rTrr\r,r,r.test_safe_mkdirszTestFSTestUtils.test_safe_mkdirc Cs||}t|dt|t|t|t|tjdtt j dd$}| tt|W5QRXW5QRXdS)NrRzpsutil.tests.os.stat)Z side_effect) rTrUcloserrLmkdirrrHOSErrorerrnoZEINVALr:)r6rXmr,r,r.test_safe_rmpaths   z TestFSTestUtils.test_safe_rmpathc Cs\|}t}t|t| |ttj||W5QRX|t|dSr=)rTrLgetcwdror r3pathjoin)r6rXbaser,r,r. test_chdirs   $zTestFSTestUtils.test_chdirN)rErFrGrirkrlrsrxr,r,r,r.res rec@s:eZdZddZddZee dddZdd Z d S) TestProcessUtilscCs|}t|j}tdSr=)spawn_testprocrOProcesspidr)r6Zsubppr,r,r.test_reap_childrens z#TestProcessUtils.test_reap_childrencCs|\}}||j|jt}|||gtjdd}|t|d|||||||| t || |jt |t |dS)NT) recursive) Zspawn_children_pairassertNotEqualr|rOr{childrenr3lenZassertInppidrLrMr)r6ZchildZ grandchildrr,r,r.test_spawn_children_pairs    z)TestProcessUtils.test_spawn_children_pair POSIX onlycCs"|\}}||tjdSr=) spawn_zombier3ZstatusrOZ STATUS_ZOMBIE)r6parentzombier,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) rzrZassertProcessGonerOr{r|rPopen subprocessPIPErr)r6r}cmdr|rrr,r,r.test_terminates.        zTestProcessUtils.test_terminateN) rErFrGr~rrskipIfrrrr,r,r,r.rys    ryc@s`eZdZddZee dddZddZee dee pDe dd d Z d d Z d S) TestNetUtilsc Cs>t}ttd|fd}||d|W5QRXdS)Nrmaddrr%)r contextlibclosingrr3 getsockname)r6Zportsr,r,r.rszTestNetUtils.bind_socketrc Cs|}t|}t|6||jtj||jtj || |W5QRX|}t|tj d}t|||jtj W5QRXdS)N)type) rTr rrr3familysocketAF_UNIXr SOCK_STREAMr SOCK_DGRAM)r6nameZsockr,r,r.test_bind_unix_sockets   z"TestNetUtils.test_bind_unix_socketc Cs|dtf}ttj|d\}}t|Lt|6||||||| ||W5QRXW5QRXdS)Nz 127.0.0.1r) rrrAF_INETrrr3r getpeernamer)r6rserverclientr,r,r.tcp_tcp_socketpair.s   zTestNetUtils.tcp_tcp_socketpairz*/var/run/log UNIX socket opened by defaultcCst}|}|}t|\}}zP|||d|t|jddd|| ||| |W5||XdS)NrZunix)kind) rOr{num_fdsrTr rnr3rZ connectionsrr)r6r}rrrrr,r,r.test_unix_socketpair9s z!TestNetUtils.test_unix_socketpairc Cst}tt}tt}|D]2}||jd7<||tjtjd7<q | |tj dt r~| |tj dt rtr| |tjd| |tjd| |tjdW5QRXdS)Nr%r)r collections defaultdictintrZ getsockoptrZ SOL_SOCKETZSO_TYPEZassertGreaterEqualrrZAF_INET6rrrrr)r6ZsocksZfamstypesrr,r,r.test_create_socketsMs  z TestNetUtils.test_create_socketsN) rErFrGrrrrrrrrrrr,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)executer3r6rr,rr. test_timesas zTestMemLeakClass.test_timescCs||jt|jdddd|jt|jdddd|jt|jdddd|jt|jd ddd |jt|jd ddd dS) NcSsdSNrr,r,r,r,r.rbircz1TestMemLeakClass.test_param_err..rrcSsdSrr,r,r,r,r.rbjrccSsdSrr,r,r,r,r.rbkrc)rcSsdSrr,r,r,r,r.rblrc) tolerancecSsdSrr,r,r,r,r.rbmrc)r')r:r?rr6r,r,r.test_param_errhs zTestMemLeakClass.test_param_errz skipped on CIcCs4g}|fdd}z|jtd|j|ddW5~XdS)NcSs|dddSNZxxxxxxxxxxxxxxxxxxxxxxxxiappendlsr,r,r.rtsz+TestMemLeakClass.test_leak_mem..funz extra-mem2r)assertRaisesRegexAssertionErrorr)r6rrr,r,r. test_leak_memos  zTestMemLeakClass.test_leak_memcs8fdd}gtrdnd}td|j|dS)Ncs"tt}|j|dSr=)rUrfZ addCleanuprnr)rYZboxr6r,r.rs z1TestMemLeakClass.test_unclosed_files..funfdZhandlez unclosed )rrrr)r6rrr,rr.test_unclosed_files~s  z$TestMemLeakClass.test_unclosed_filescs>fdd}gd}|j||ddd|t|ddS)NcsdddSrrr,rr,r.rsz,TestMemLeakClass.test_tolerance..fundri )rrrr%)rr3r)r6rrr,rr.test_tolerances  zTestMemLeakClass.test_tolerancec Csddd}|t||t|t|W5QRXdd}|t|t|W5QRXdS)NcSs dddSr)r,r,r,r,r.rsz0TestMemLeakClass.test_execute_w_exc..funcSsdSr=r,r,r,r,r.rs)Z execute_w_excr;r:rprrr,r,r.test_execute_w_excs   z#TestMemLeakClass.test_execute_w_excN) rErFrGrrrrrr rrrrr,r,r,r.r^s    rc@seZdZddZddZdS)TestTestingUtilscCsLt}t|}|dd||jDdd}|||dS)NcSsg|]}|ddkr|qS)r%rr,.0xr,r,r. s z;TestTestingUtils.test_process_namespace..r)rOr{rZtestrPgettersr3r)r6r}nsrr,r,r.test_process_namespaces z'TestTestingUtils.test_process_namespacecCs:t}dd||jDdd}||tdS)NcSsg|]}|ddkr|qS)r% net_if_addrsr,rr,r,r.rs z:TestTestingUtils.test_system_namespace..r)rrPrr3rOr)r6rrr,r,r.test_system_namespacesz&TestTestingUtils.test_system_namespaceN)rErFrGrrr,r,r,r.rsrc@seZdZddZdS)TestOtherUtilscCsdSr=r,rr,r,r.test_is_namedtuplesz!TestOtherUtils.test_is_namedtupleN)rErFrGrr,r,r,r.rsr__main__) run_from_name)8__doc__rrrqrLrstatrrOrrrZpsutil._commonrrrZ psutil.testsrr r r r r rrrrrrrrrrrrrrrrrrr r!r"r#rIreryrrrrrEZpsutil.tests.runnerrrfr,r,r,r.sl                                 B'-DG@