B =_';@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}x@|D]8}| }y t |}Wnt k rYnX||qW|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)fmtpidcmdZfmt_mapoutputZ all_outputliner)J/opt/alt/python37/lib64/python3.7/site-packages/psutil/tests/test_posix.pyr-s6       rcCsd}tr d}t||dS)Nrrr)rrsplit)r%fieldr)r)r*ps_nameisr-cCsd}ts trd}t||S)Nrargs)rrr)r%r,r)r)r*ps_argspsr/cCsd}tr d}t||S)NZrssZrssize)rr)r%r,r)r)r*ps_rsswsr0cCsd}tr d}t||S)NZvszZvsize)rr)r%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|jdS)N)rr%)r6r)r)r* tearDownClassszTestProcess.tearDownClasscCs,td|j}t|j}|||dS)Nppid)rr%psutilProcessr9 assertEqual)selfZppid_psZ ppid_psutilr)r)r* test_ppids zTestProcess.test_ppidcCs.td|j}t|jj}|||dS)Nuid)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;ZgidsrAr<)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 srBrCrFrNrrrRrSr\r_rardrskipIfrrrjrlrorrrqr)r)r)r*r2s*          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))ryrz) pids_psutilr)r*r|5sz difference: ) sortedrr:Zpidsrrinsertrkfailr)r= differencer))r{r}r* test_pids's  zTestSystemAPIs.test_pidszunreliable on SUNOSifconfigzno ifconfig cmdz not supportedcCsVtd}xHtjddD]4}x.|D]}||r(Pq(W|d||fqWdS)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|ttx,tD] }||j |||j |qbWdS)Nwhozno users on this system cSsg|]}|dqS)r)r+)ryrzr)r)r*r|Osz-TestSystemAPIs.test_users..cSsg|]}|dqS)r)r+)ryrzr)r)r*r|Ps) rr!ZskipTestr+r<rkr:usersrirYterminal)r=outlinesrZ terminalsur)r)r* test_usersHs  zTestSystemAPIs.test_usersc CsFtjdttjdd&}|ttjjt |j s8t WdQRXdS)Nzpsutil._psposix.os.killrT)rG) r rHOSErrorerrnoEBADFrcr:_psposixZ pid_existsrUgetpidrJrK)r=mr)r)r*test_pid_exists_let_raiseVsz(TestSystemAPIs.test_pid_exists_let_raisec CsFtjdttjdd&}|ttjjt |j s8t WdQRXdS)Nzpsutil._psposix.os.waitpidrT)rG) r rHrrrrcr:rwait_pidrUrrJrK)r=rr)r)r*test_os_waitpid_let_raise_sz(TestSystemAPIs.test_os_waitpid_let_raisec CsNtjdttjdd.}|jtjjtjj t dd|j s@t WdQRXdS)Nzpsutil._psposix.os.waitpidrT)rGg{Gz?)timeout)r rHrrZEINTRrcr:rTimeoutExpiredrrUrrJrK)r=rr)r)r*test_os_waitpid_eintrgs z$TestSystemAPIs.test_os_waitpid_eintrc Cs>tjddd&}|ttjjt|j s0t WdQRXdS)Nzpsutil._psposix.os.waitpid)r)r]) r rHrcr#r:rrrUrrJrK)r=rr)r)r*test_os_waitpid_bad_ret_statusps  z-TestSystemAPIs.test_os_waitpid_bad_ret_statuszunreliable on AIXc Csdd}d}xtjddD]}t|j}y||j\}}}}WnLtk r} z.t| } d| ksvd| ksvd| krzwnWdd} ~ XYqX|j|j ||d |j|j ||d |j|j ||d |j|j |d d qWdS) NcSsvtd|}|dd}|}t|dd}t|dd}t|dd}t|ddd }||||fS) Nzdf -k %srri%rT)rr!r+r"floatreplace)devicerr(fieldstotalusedfreepercentr)r)r*df|sz*TestSystemAPIs.test_disk_usage..dfi@F)allzno such file or directoryzraw devices not supportedzpermission denied)deltar) r:Zdisk_partitions disk_usage mountpointr RuntimeErrorrrXZassertAlmostEqualrrrr) r=rZ tolerancepartusagerrrrerrr)r)r*test_disk_usageys"   zTestSystemAPIs.test_disk_usageN)rrrsrtrurrrrwrrr rr r:rrrrrrrrr)r)r)r*rx#s      rxc@seZdZddZdS)TestMisccCs4t}||d||t||tjdS)Nr)rZ assertGreaterr<resourcemmapZPAGESIZE)r=Zpagesizer)r)r*test_getpagesizes zTestMisc.test_getpagesizeN)rrrsrtrr)r)r)r*rsr__main__) run_from_name)N)-rurerrUrZr4rOr:rrrrrrrZ psutil.testsr r r r r rrrrrrrrrZpsutil._psutil_posixrrr-r/r0r1rwr2rxrrrZpsutil.tests.runnerr__file__r)r)r)r*sZ                     <y