U =_';@sdZddlZddlZddlZddlZddlZddlZddlZddlmZddlm Z ddlm Z ddlm Z ddlm Z ddlm Z dd lmZdd lmZdd lmZdd lmZdd lmZddlmZddlmZddlmZddlmZddlmZddlmZddlmZddlmZe rBddlZddlZddlmZd*ddZ ddZ!ddZ"ddZ#dd Z$e%e d!Gd"d#d#eZ&e%e d!Gd$d%d%eZ'e%e d!Gd&d'd'eZ(e)d(krdd)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 Csdg}tr|d|dk r0|dt|gnts8trD|dn |dtrftd}|||}|d|gt|}tr| }n| d d}g}|D]8}| }z t |}Wnt k rYnX||q|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)commandcommstartZstimez-or) rappendextendstrrrsetgetr splitlinesstripint ValueError)ZfmtpidcmdZfmt_mapoutputZ all_outputliner(J/opt/alt/python38/lib64/python3.8/site-packages/psutil/tests/test_posix.pyr-s6       rcCsd}tr d}t||dS)Nrrr)rrsplitr$Zfieldr(r(r)ps_nameisr,cCsd}ts trd}t||S)Nrargs)rrrr+r(r(r)ps_argspsr.cCsd}tr d}t||S)NZrssZrssizerrr+r(r(r)ps_rsswsr0cCsd}tr d}t||S)NZvszZvsizer/r+r(r(r)ps_vsz~sr1z POSIX onlyc@seZdZdZeddZeddZddZdd Zd d Z d d Z ddZ e e ddZe e ddZddZddZddZddZeepedddZdd Zd!d"Zeed#eed$d%d&Zd'S)( TestProcesszBCompare psutil results against 'ps' command line utility (mainly).cCsttddgtjdj|_dS)Nz-Ez-O)stdin)r r subprocessPIPEr$clsr(r(r) setUpClasss zTestProcess.setUpClasscCst|jdSN)rr$r6r(r(r) tearDownClassszTestProcess.tearDownClasscCs,td|j}t|j}|||dS)Nppid)rr$psutilProcessr; assertEqual)selfZppid_psZ ppid_psutilr(r(r) test_ppids zTestProcess.test_ppidcCs.td|j}t|jj}|||dS)NZuid)rr$r<r=uidsrealr>)r?Zuid_psZ uid_psutilr(r(r)test_uids zTestProcess.test_uidcCs.td|j}t|jj}|||dS)NZrgid)rr$r<r=ZgidsrBr>)r?Zgid_psZ gid_psutilr(r(r)test_gids zTestProcess.test_gidcCs,td|j}t|j}|||dS)Nuser)rr$r<r=usernamer>)r?Z username_psZusername_psutilr(r(r) test_usernames zTestProcess.test_usernamec CsJt}tjdtd*}||t|j |j srFrrArBcalledAssertionError)r?pZfunr(r(r)test_username_no_resolutionsz'TestProcess.test_username_no_resolutioncCs<tdt|j}t|jdd}|||dS)N皙?r)timesleepr0r$r<r= memory_infor>)r?Zrss_psZ rss_psutilr(r(r)test_rss_memorys  zTestProcess.test_rss_memorycCs<tdt|j}t|jdd}|||dS)NrOrrP)rQrRr1r$r<r=rSr>)r?Zvsz_psZ vsz_psutilr(r(r)test_vsz_memorys  zTestProcess.test_vsz_memorycCsvt|j}tj|}t|j}t dd|}t dd|}t dd|}t dd|}| ||dS)Nz\d.\dz\d) r,r$ospathbasenamelowerr<r=nameresubr>)r?Zname_psZ name_psutilr(r(r) test_names zTestProcess.test_namec Cs^d}dddg}tjd|d8tjd|dt}||dW5QRXW5QRXdS)Nlong-program-namezlong-program-name-extendedZfooZbarpsutil._psplatform.Process.nameZ return_value"psutil._psplatform.Process.cmdline)r rIr<r=r>r[)r?r[cmdlinerMr(r(r)test_name_longs zTestProcess.test_name_longc Cs\d}tjd|d@tjdtdddt}||dW5QRXW5QRXdSNr_r`rarbrrVrH)r rIr<Z AccessDeniedr=r>r[r?r[rMr(r(r)test_name_long_cmdline_ad_excs z)TestProcess.test_name_long_cmdline_ad_excc Cs\d}tjd|d@tjdtdddt}|tj|jW5QRXW5QRXdSre)r rIr<Z NoSuchProcessr= assertRaisesr[rfr(r(r)test_name_long_cmdline_nsp_excs z*TestProcess.test_name_long_cmdline_nsp_exczps -o start not availablecCs\td|j}t|j}tj|d}t|}tj|d}| |||gdS)Nrz%H:%M:%S) rr$r<r=Z create_timedatetimeZ fromtimestampstrftimeroundassertIn)r?Ztime_psZ time_psutilZtime_psutil_tstampZround_time_psutilZround_time_psutil_tstampr(r(r)test_create_times zTestProcess.test_create_timecCs`t|j}t|j}z|||Wn0tk rZ|dt|}|||YnXdSr9)r,r$r<r=Zexer>rLlen)r?Z ps_pathnameZpsutil_pathnameZadjusted_ps_pathnamer(r(r)test_exes zTestProcess.test_execCs0t|j}dt|j}|||dS)N )r.r$joinr<r=rcr>)r?Z ps_cmdlineZpsutil_cmdliner(r(r) test_cmdlines zTestProcess.test_cmdlineznot reliable on SUNOSznot reliable on AIXcCs(td|j}t}|||dS)Nnice)rr$r<r=rtr>)r?Zps_niceZ psutil_nicer(r(r) test_nices  zTestProcess.test_niceN)__name__ __module__ __qualname____doc__ classmethodr8r:r@rCrDrGrNrrrTrUr^rdrgrirskipIfrrrnrprsrrrur(r(r(r)r2s6           r2c@seZdZdZeddZeedee d dee ddd Z ee o^e  d ed d Zd dZddZddZddZeededdZdS)TestSystemAPIszTest some system APIs.cs~ttdtts$tr0dkr0ddttdkrzfddDfddD}|dt |dS)Nr$rrcsg|]}|kr|qSr(r(.0x)pids_psr(r) 4sz,TestSystemAPIs.test_pids..csg|]}|kr|qSr(r(r}) pids_psutilr(r)r5sz difference: ) sortedrr<Zpidsrrinsertrofailr)r? differencer()rrr) test_pids's  zTestSystemAPIs.test_pidszunreliable on SUNOSZifconfigzno ifconfig cmdz not supportedcCsPtd}tjddD]2}|D]}||r$qq$|d||fqdS)Nz ifconfig -aT)Zpernicz/couldn't find %s nic in 'ifconfig -a' output %s)rr<Znet_io_counterskeysr* startswithr)r?r&Znicr'r(r(r)test_nic_names:s  zTestSystemAPIs.test_nic_nameszunreliable on CIcCstd}|s|d|d}dd|D}dd|D}|t|tttD] }||j |||j |q`dS)NZwhozno users on this system cSsg|]}|dqS)rr*r}r(r(r)rOsz-TestSystemAPIs.test_users..cSsg|]}|dqS)rrr}r(r(r)rPs) rr!ZskipTestr*r>ror<usersrmr[Zterminal)r?outlinesrZ terminalsur(r(r) test_usersHs   zTestSystemAPIs.test_usersc CsFtjdttjdd&}|ttjjt |j s8t W5QRXdS)Nzpsutil._psposix.os.killrVrH) r rIOSErrorerrnoEBADFrhr<_psposixZ pid_existsrWgetpidrKrLr?mr(r(r)test_pid_exists_let_raiseVs  z(TestSystemAPIs.test_pid_exists_let_raisec CsFtjdttjdd&}|ttjjt |j s8t W5QRXdS)Npsutil._psposix.os.waitpidrVrH) r rIrrrrhr<rwait_pidrWrrKrLrr(r(r)test_os_waitpid_let_raise_s  z(TestSystemAPIs.test_os_waitpid_let_raisec CsNtjdttjdd.}|jtjjtjj t dd|j s@t W5QRXdS)NrrVrHg{Gz?)Ztimeout)r rIrrZEINTRrhr<rZTimeoutExpiredrrWrrKrLrr(r(r)test_os_waitpid_eintrgs z$TestSystemAPIs.test_os_waitpid_eintrc Cs>tjddd&}|ttjjt|j s0t W5QRXdS)Nr)rra) r rIrhr#r<rrrWrrKrLrr(r(r)test_os_waitpid_bad_ret_statuspsz-TestSystemAPIs.test_os_waitpid_bad_ret_statuszunreliable on AIXc Csdd}d}tjddD]}t|j}z||j\}}}}WnRtk r} z4t| } d| kstd| kstd| kr~WY qnW5d} ~ XYqX|j|j ||d |j|j ||d |j|j ||d |j|j |d d qdS) NcSsvtd|}|dd}|}t|dd}t|dd}t|dd}t|ddd }||||fS) Nzdf -k %srrrP%rV)rr!r*r"floatreplace)devicerr'Zfieldstotalusedfreepercentr(r(r)df|sz*TestSystemAPIs.test_disk_usage..dfi@F)allzno such file or directoryzraw devices not supportedzpermission denied)Zdeltar) r<Zdisk_partitionsZ disk_usageZ mountpointr RuntimeErrorrrZZassertAlmostEqualrrrr) r?rZ tolerancepartZusagerrrrerrr(r(r)test_disk_usageys&    zTestSystemAPIs.test_disk_usageN)rvrwrxryrrrr{rrr rr r<rrrrrrrrr(r(r(r)r|#s"        r|c@seZdZddZdS)TestMisccCs4t}||d||t||tjdS)Nr)rZ assertGreaterr>resourcemmapZPAGESIZE)r?Zpagesizer(r(r)test_getpagesizes zTestMisc.test_getpagesizeN)rvrwrxrr(r(r(r)rsr__main__) run_from_name)N)-ryrjrrWr\r4rQr<rrrrrrrZ psutil.testsr r r r r rrrrrrrrrZpsutil._psutil_posixrrr,r.r0r1r{r2r|rrvZpsutil.tests.runnerr__file__r(r(r(r)sZ                     <  y