B Œ=Ý_';ã@sèdZddlZddlZddlZddlZddlZddlZddlZddlmZddlm Z ddlm Z ddlm Z ddlm Z ddlm Z dd lmZdd lmZdd lmZdd lmZdd lmZddlmZddlmZddlmZddlmZddlmZddlmZddlmZddlmZe rBddlZddlZddlmZd*dd„Z dd„Z!dd„Z"dd„Z#dd „Z$e %e d!¡Gd"d#„d#eƒƒZ&e %e d!¡Gd$d%„d%eƒƒZ'e %e d!¡Gd&d'„d'eƒƒZ(e)d(krädd)l*m+Z+e+e,ƒdS)+zPOSIX specific tests.éN)ÚAIX)ÚBSD)ÚLINUX)ÚMACOS)ÚOPENBSD)ÚPOSIX)ÚSUNOS)Ú CI_TESTING)Úspawn_testproc)ÚHAS_NET_IO_COUNTERS)Úmock)ÚPsutilTestCase)Ú PYTHON_EXE)Úretry_on_failure)Úsh)Úskip_on_access_denied)Ú terminate)Úunittest)Úwhich)Ú getpagesizec Csødg}tr| d¡|dk r0| dt|ƒg¡nts8trD| d¡n | d¡trftdƒ}| ||¡}| d|g¡t|ƒ}trŠ|  ¡}n|  ¡d d…}g}x@|D]8}|  ¡}y t |ƒ}Wnt k rÐYnX| |¡q¤W|dkrì|S|d SdS) z| Wrapper for calling the ps command with a little bit of cross-platform support for a narrow range of features. Úpsz --no-headersNz-pz-AZax)ÚcommandÚcommÚstartZstimez-oér) rÚappendÚextendÚstrrrÚsetÚgetrÚ splitlinesÚstripÚintÚ ValueError)ZfmtÚpidÚcmdZfmt_mapÚoutputZ all_outputÚline©r(úJ/opt/alt/python37/lib64/python3.7/site-packages/psutil/tests/test_posix.pyr-s6       rcCsd}tr d}t||ƒ ¡dS)Nrrr)rrÚsplit)r$Úfieldr(r(r)Úps_nameisr,cCsd}ts trd}t||ƒS)NrÚargs)rrr)r$r+r(r(r)Úps_argspsr.cCsd}tr d}t||ƒS)NZrssZrssize)rr)r$r+r(r(r)Úps_rsswsr/cCsd}tr d}t||ƒS)NZvszZvsize)rr)r$r+r(r(r)Úps_vsz~sr0z POSIX onlyc@sàeZdZdZedd„ƒZedd„ƒZdd„Zdd „Zd d „Z d d „Z dd„Z e ƒe ƒdd„ƒƒZe ƒe ƒdd„ƒƒZdd„Zdd„Zdd„Zdd„Ze epžed¡dd„ƒZdd „Zd!d"„Ze ed#¡e ed$¡d%d&„ƒƒZd'S)(Ú TestProcesszBCompare psutil results against 'ps' command line utility (mainly).cCsttddgtjdj|_dS)Nz-Ez-O)Ústdin)r rÚ subprocessÚPIPEr$)Úclsr(r(r)Ú setUpClass‰s zTestProcess.setUpClasscCst|jƒdS)N)rr$)r5r(r(r)Ú tearDownClassŽszTestProcess.tearDownClasscCs,td|jƒ}t |j¡ ¡}| ||¡dS)NÚppid)rr$ÚpsutilÚProcessr8Ú assertEqual)ÚselfZppid_psZ ppid_psutilr(r(r)Ú test_ppid’s zTestProcess.test_ppidcCs.td|jƒ}t |j¡ ¡j}| ||¡dS)NZuid)rr$r9r:ÚuidsÚrealr;)r<Zuid_psZ uid_psutilr(r(r)Útest_uid—s zTestProcess.test_uidcCs.td|jƒ}t |j¡ ¡j}| ||¡dS)NZrgid)rr$r9r:Zgidsr?r;)r<Zgid_psZ gid_psutilr(r(r)Útest_gidœs zTestProcess.test_gidcCs,td|jƒ}t |j¡ ¡}| ||¡dS)NÚuser)rr$r9r:Úusernamer;)r<Z username_psZusername_psutilr(r(r)Ú test_username¡s zTestProcess.test_usernamec CsJt ¡}tjdtd*}| | ¡t| ¡j ƒ¡|j sr?ÚcalledÚAssertionError)r<ÚpZfunr(r(r)Útest_username_no_resolution¦sz'TestProcess.test_username_no_resolutioncCs<t d¡t|jƒ}t |j¡ ¡dd}| ||¡dS)Ngš™™™™™¹?ri)ÚtimeÚsleepr/r$r9r:Ú memory_infor;)r<Zrss_psZ rss_psutilr(r(r)Útest_rss_memory¯s  zTestProcess.test_rss_memorycCs<t d¡t|jƒ}t |j¡ ¡dd}| ||¡dS)Ngš™™™™™¹?ri)rLrMr0r$r9r:rNr;)r<Zvsz_psZ vsz_psutilr(r(r)Útest_vsz_memory¹s  zTestProcess.test_vsz_memorycCsvt|jƒ}tj |¡ ¡}t |j¡ ¡ ¡}t   dd|¡}t   dd|¡}t   dd|¡}t   dd|¡}|  ||¡dS)Nz\d.\dÚz\d) r,r$ÚosÚpathÚbasenameÚlowerr9r:ÚnameÚreÚsubr;)r<Zname_psZ name_psutilr(r(r)Ú test_nameÃs zTestProcess.test_namec Cs^d}dddg}tjd|d8tjd|dt ¡}| | ¡d¡WdQRXWdQRXdS)Nzlong-program-namezlong-program-name-extendedZfooZbarzpsutil._psplatform.Process.name)Ú return_valuez"psutil._psplatform.Process.cmdline)r rFr9r:r;rV)r<rVÚcmdlinerJr(r(r)Útest_name_longÑs   zTestProcess.test_name_longc Cs\d}tjd|d@tjdt dd¡dt ¡}| | ¡d¡WdQRXWdQRXdS)Nzlong-program-namezpsutil._psplatform.Process.name)rZz"psutil._psplatform.Process.cmdlinerrQ)rE)r rFr9Z AccessDeniedr:r;rV)r<rVrJr(r(r)Útest_name_long_cmdline_ad_excÞs z)TestProcess.test_name_long_cmdline_ad_excc Cs\d}tjd|d@tjdt dd¡dt ¡}| tj|j¡WdQRXWdQRXdS)Nzlong-program-namezpsutil._psplatform.Process.name)rZz"psutil._psplatform.Process.cmdlinerrQ)rE)r rFr9Z NoSuchProcessr:Ú assertRaisesrV)r<rVrJr(r(r)Útest_name_long_cmdline_nsp_excês z*TestProcess.test_name_long_cmdline_nsp_exczps -o start not availablecCs\td|jƒ}t |j¡ ¡}tj |¡ d¡}t|ƒ}tj |¡ d¡}|  |||g¡dS)Nrz%H:%M:%S) rr$r9r:Z create_timeÚdatetimeZ fromtimestampZstrftimeÚroundÚassertIn)r<Ztime_psZ time_psutilZtime_psutil_tstampZround_time_psutilZround_time_psutil_tstampr(r(r)Útest_create_timeõs   zTestProcess.test_create_timecCs`t|jƒ}t |j¡ ¡}y| ||¡Wn0tk rZ|dt|ƒ…}| ||¡YnXdS)N)r,r$r9r:Zexer;rIÚlen)r<Z ps_pathnameZpsutil_pathnameZadjusted_ps_pathnamer(r(r)Útest_exes zTestProcess.test_execCs0t|jƒ}d t |j¡ ¡¡}| ||¡dS)Nú )r.r$Újoinr9r:r[r;)r<Z ps_cmdlineZpsutil_cmdliner(r(r)Ú test_cmdlines zTestProcess.test_cmdlineznot reliable on SUNOSznot reliable on AIXcCs(td|jƒ}t ¡ ¡}| ||¡dS)NÚnice)rr$r9r:rir;)r<Zps_niceZ psutil_nicer(r(r)Ú test_nices  zTestProcess.test_niceN)Ú__name__Ú __module__Ú __qualname__Ú__doc__Ú classmethodr6r7r=r@rArDrKrrrOrPrYr\r]r_rÚskipIfrrrcrerhrrrjr(r(r(r)r1…s*          r1c@s°eZdZdZeƒdd„ƒZe ed¡e e dƒ d¡e e d¡dd „ƒƒƒZ e e o^e  ¡ d ¡eƒd d „ƒƒZd d„Zdd„Zdd„Zdd„Ze ed¡eƒdd„ƒƒZdS)ÚTestSystemAPIszTest some system APIs.cs~ttdƒƒ‰t ¡‰ts$tr0dˆkr0ˆ dd¡tˆƒtˆƒdkrz‡fdd„ˆDƒ‡fdd„ˆDƒ}| dt |ƒ¡dS)Nr$rrcsg|]}|ˆkr|‘qSr(r()Ú.0Úx)Úpids_psr(r)ú 4sz,TestSystemAPIs.test_pids..csg|]}|ˆkr|‘qSr(r()rrrs)Ú pids_psutilr(r)ru5sz difference: ) Úsortedrr9ZpidsrrÚinsertrdÚfailr)r<Ú differencer()rtrvr)Ú test_pids's  zTestSystemAPIs.test_pidszunreliable on SUNOSZifconfigzno ifconfig cmdz not supportedcCsVtdƒ}xHtjdd ¡D]4}x.| ¡D]}| |¡r(Pq(W| d||f¡qWdS)Nz ifconfig -aT)Zpernicz/couldn't find %s nic in 'ifconfig -a' output %s)rr9Znet_io_countersÚkeysr*Ú startswithry)r<r&Znicr'r(r(r)Útest_nic_names:s zTestSystemAPIs.test_nic_nameszunreliable on CIcCsŠtdƒ}| ¡s| d¡‚| d¡}dd„|Dƒ}dd„|Dƒ}| t|ƒtt ¡ƒ¡x,t ¡D] }| |j |¡| |j |¡qbWdS)NZwhozno users on this systemÚ cSsg|]}| ¡d‘qS)r)r*)rrrsr(r(r)ruOsz-TestSystemAPIs.test_users..cSsg|]}| ¡d‘qS)r)r*)rrrsr(r(r)ruPs) rr!ZskipTestr*r;rdr9ÚusersrbrVZterminal)r<ÚoutÚlinesr€Z terminalsÚur(r(r)Ú test_usersHs  zTestSystemAPIs.test_usersc CsFtjdttjdƒd&}| ttjjt   ¡¡|j s8t ‚WdQRXdS)Nzpsutil._psposix.os.killrQ)rE) r rFÚOSErrorÚerrnoÚEBADFr^r9Ú_psposixZ pid_existsrRÚgetpidrHrI)r<Úmr(r(r)Útest_pid_exists_let_raiseVsz(TestSystemAPIs.test_pid_exists_let_raisec CsFtjdttjdƒd&}| ttjjt   ¡¡|j s8t ‚WdQRXdS)Nzpsutil._psposix.os.waitpidrQ)rE) r rFr…r†r‡r^r9rˆÚwait_pidrRr‰rHrI)r<rŠr(r(r)Útest_os_waitpid_let_raise_sz(TestSystemAPIs.test_os_waitpid_let_raisec CsNtjdttjdƒd.}|jtjjtjj t   ¡dd|j s@t ‚WdQRXdS)Nzpsutil._psposix.os.waitpidrQ)rEg{®Gáz„?)Ztimeout)r rFr…r†ZEINTRr^r9rˆZTimeoutExpiredrŒrRr‰rHrI)r<rŠr(r(r)Útest_os_waitpid_eintrgs z$TestSystemAPIs.test_os_waitpid_eintrc Cs>tjddd&}| ttjjt ¡¡|j s0t ‚WdQRXdS)Nzpsutil._psposix.os.waitpid)réÿÿÿÿ)rZ) r rFr^r#r9rˆrŒrRr‰rHrI)r<rŠr(r(r)Útest_os_waitpid_bad_ret_statusps  z-TestSystemAPIs.test_os_waitpid_bad_ret_statuszunreliable on AIXc CsÞdd„}d}xÌtjddD]¼}t |j¡}y||jƒ\}}}}WnLtk rŒ} z.t| ƒ ¡} d| ksvd| ksvd| krzwn‚Wdd} ~ XYqX|j|j ||d |j|j ||d |j|j ||d |j|j |d d qWdS) NcSsvtd|ƒ ¡}| d¡d}| ¡}t|dƒd}t|dƒd}t|dƒd}t|d dd ¡ƒ}||||fS) Nzdf -k %srriéééú%rQ)rr!r*r"ÚfloatÚreplace)Údevicerr'ZfieldsÚtotalÚusedÚfreeÚpercentr(r(r)Údf|sz*TestSystemAPIs.test_disk_usage..dfi@F)Úallzno such file or directoryzraw devices not supportedzpermission denied)Zdeltar) r9Zdisk_partitionsZ disk_usageZ mountpointr—Ú RuntimeErrorrrUZassertAlmostEqualr˜r™ršr›) r<rœZ toleranceÚpartZusager˜r™ršr›Úerrr(r(r)Útest_disk_usageys"   zTestSystemAPIs.test_disk_usageN)rkrlrmrnrr{rrprrr r~r r9r€r„r‹rrŽrrr¡r(r(r(r)rq#s      rqc@seZdZdd„ZdS)ÚTestMisccCs4tƒ}| |d¡| |t ¡¡| |tj¡dS)Nr)rZ assertGreaterr;ÚresourceÚmmapZPAGESIZE)r<Zpagesizer(r(r)Útest_getpagesize s zTestMisc.test_getpagesizeN)rkrlrmr¥r(r(r(r)r¢sr¢Ú__main__)Ú run_from_name)N)-rnr`r†rRrWr3rLr9rrrrrrrZ psutil.testsr r r r r rrrrrrrr¤r£Zpsutil._psutil_posixrrr,r.r/r0rpr1rqr¢rkZpsutil.tests.runnerr§Ú__file__r(r(r(r)ÚsZ                     <y