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 Cs@t ¡}tjdtd }| | ¡t| ¡j ƒ¡WdQRXdS)Nzpsutil.pwd.getpwuid)Ú side_effect) r9r:r ÚpatchÚKeyErrorr;rCrr>r?)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)rJrKr0r$r9r:rLr;)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;rT)r<rTÚcmdlinerHr(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)rXz"psutil._psplatform.Process.cmdlinerrO)rE)r rFr9Z AccessDeniedr:r;rT)r<rTrHr(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)rXz"psutil._psplatform.Process.cmdlinerrO)rE)r rFr9Z NoSuchProcessr:Ú assertRaisesrT)r<rTrHr(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;ÚAssertionErrorÚlen)r<Z ps_pathnameZpsutil_pathnameZadjusted_ps_pathnamer(r(r)Útest_exes zTestProcess.test_execCs0t|jƒ}d t |j¡ ¡¡}| ||¡dS)Nú )r.r$Újoinr9r:rYr;)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:rhr;)r<Zps_niceZ psutil_nicer(r(r)Ú test_nices  zTestProcess.test_niceN)Ú__name__Ú __module__Ú __qualname__Ú__doc__Ú classmethodr6r7r=r@rArDrIrrrMrNrWrZr[r]rÚskipIfrrrardrgrrrir(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()rqrr)Ú pids_psutilr(r)rt5sz difference: ) Úsortedrr9ZpidsrrÚinsertrcÚfailr)r<Ú differencer()rsrur)Ú 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*Ú startswithrx)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*)rqrrr(r(r)rtOsz-TestSystemAPIs.test_users..cSsg|]}| ¡d‘qS)r)r*)rqrrr(r(r)rtPs) rr!ZskipTestr*r;rcr9Úusersr`rTZterminal)r<ÚoutÚlinesrZ terminalsÚur(r(r)Ú test_usersHs  zTestSystemAPIs.test_usersc Cs<tjdttjdƒd}| ttjjt   ¡¡WdQRXdS)Nzpsutil._psposix.os.killrO)rE) r rFÚOSErrorÚerrnoÚEBADFr\r9Ú_psposixZ pid_existsrPÚgetpid)r<Úmr(r(r)Útest_pid_exists_let_raiseVsz(TestSystemAPIs.test_pid_exists_let_raisec Cs<tjdttjdƒd}| ttjjt   ¡¡WdQRXdS)Nzpsutil._psposix.os.waitpidrO)rE) r rFr„r…r†r\r9r‡Úwait_pidrPrˆ)r<r‰r(r(r)Útest_os_waitpid_let_raise_sz(TestSystemAPIs.test_os_waitpid_let_raisec CsDtjdttjdƒd$}|jtjjtjj t   ¡ddWdQRXdS)Nzpsutil._psposix.os.waitpidrO)rEg{®Gáz„?)Ztimeout) r rFr„r…ZEINTRr\r9r‡ZTimeoutExpiredr‹rPrˆ)r<r‰r(r(r)Útest_os_waitpid_eintrgs z$TestSystemAPIs.test_os_waitpid_eintrc Cs4tjddd}| ttjjt ¡¡WdQRXdS)Nzpsutil._psposix.os.waitpid)réÿÿÿÿ)rX) r rFr\r#r9r‡r‹rPrˆ)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 %sr~riéééú%rO)rr!r*r"ÚfloatÚreplace)Údevicer€r'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–Ú RuntimeErrorrrSZassertAlmostEqualr—r˜r™rš) r<r›Z toleranceÚpartZusager—r˜r™ršÚerrr(r(r)Útest_disk_usageys"   zTestSystemAPIs.test_disk_usageN)rjrkrlrmrrzrrorrr r}r r9rrƒrŠrŒrrrr r(r(r(r)rp#s      rpc@seZdZdd„ZdS)ÚTestMisccCs4tƒ}| |d¡| |t ¡¡| |tj¡dS)Nr)rZ assertGreaterr;ÚresourceÚmmapZPAGESIZE)r<Zpagesizer(r(r)Útest_getpagesize s zTestMisc.test_getpagesizeN)rjrkrlr¤r(r(r(r)r¡sr¡Ú__main__)Ú run_from_name)N)-rmr^r…rPrUr3rJr9rrrrrrrZ psutil.testsr r r r r rrrrrrrr£r¢Zpsutil._psutil_posixrrr,r.r/r0ror1rpr¡rjZpsutil.tests.runnerr¦Ú__file__r(r(r(r)ÚsZ                     <y