U Ã|ýf†Dã@sädZddlZddlZddlZddlZddlZddlZddlZddlZddlm Z ddlm Z ddlm Z ddlm Z ddlm Z ddlmZdd lmZdd lmZdd lmZdd lmZdd lmZddlmZddlmZddlmZddlmZddlmZddlmZddlmZer>ddlZddlZddlmZd)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)ÚHAS_NET_IO_COUNTERS)Ú PYTHON_EXE)Ú QEMU_USER)ÚPsutilTestCase)Úmock)Úretry_on_failure)Úsh)Úskip_on_access_denied)Úspawn_testproc)Ú terminate)Úwhich)Ú getpagesizec Csêdg}tr| d¡|dk r0| dt|ƒg¡nts8trD| d¡n | d¡tr^| dd¡}| d |g¡t|ƒ}tr€| ¡n| ¡d d…}g}|D]8}|  ¡}z t |ƒ}Wnt k rÄYnX| |¡q˜|dkrÞ|S|d SdS) zwWrapper for calling the ps command with a little bit of cross-platform support for a narrow range of features. Úpsz --no-headersNz-pz-AZaxÚstartZstimez-oér) rÚappendÚextendÚstrrrÚreplacerÚ splitlinesÚstripÚintÚ ValueError)ÚfmtÚpidÚcmdÚoutputÚ all_outputÚline©r&úJ/opt/alt/python38/lib64/python3.8/site-packages/psutil/tests/test_posix.pyr.s0      rcCs>d}tr d}t||ƒ ¡}tr6d|dks.t‚|dS|dS)NÚcommandZcommz /bin/qemu-rr)rrÚsplitr ÚAssertionError)r!Úfieldr(r&r&r'Úps_namefsr,cCs0d}ts trd}t||ƒ}t dd|¡}| ¡S)Nr(Úargsz\(python.*?\)$Ú)rrrÚreÚsubr)r!r+Úoutr&r&r'Úps_argsqs  r2cCsd}tr d}t||ƒS)NZrssZrssize©rr©r!r+r&r&r'Úps_rss{sr5cCsd}tr d}t||ƒS)NZvszZvsizer3r4r&r&r'Úps_vsz‚sr6z 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 „Ze ƒd!d"„ƒZe ed#¡e ed$¡d%d&„ƒƒZd'S)(Ú TestProcesszBCompare psutil results against 'ps' command line utility (mainly).cCsttddgtjdj|_dS)Nz-Ez-O)Ústdin)rr Ú subprocessÚPIPEr!©Úclsr&r&r'Ú setUpClasssÿzTestProcess.setUpClasscCst|jƒdS©N)rr!r;r&r&r'Ú tearDownClass“szTestProcess.tearDownClasscCs,td|jƒ}t |j¡ ¡}| ||¡dS)NÚppid)rr!ÚpsutilÚProcessr@Ú assertEqual)ÚselfZppid_psZ ppid_psutilr&r&r'Ú test_ppid—s zTestProcess.test_ppidcCs.td|jƒ}t |j¡ ¡j}| ||¡dS)NÚuid)rr!rArBÚuidsÚrealrC)rDZuid_psZ uid_psutilr&r&r'Útest_uidœs zTestProcess.test_uidcCs.td|jƒ}t |j¡ ¡j}| ||¡dS)NZrgid)rr!rArBZgidsrHrC)rDZgid_psZ gid_psutilr&r&r'Útest_gid¡s zTestProcess.test_gidcCs,td|jƒ}t |j¡ ¡}| ||¡dS)NÚuser)rr!rArBÚusernamerC)rDZ username_psZusername_psutilr&r&r'Ú test_username¦s zTestProcess.test_usernamec CsJt ¡}tjdtd*}| | ¡t| ¡j ƒ¡|j s)r,r!rArBÚexerCr*Úlen)rDZ ps_pathnameZpsutil_pathnameZadjusted_ps_pathnamer&r&r'Útest_exe s zTestProcess.test_execCs0t|jƒ}d t |j¡ ¡¡}| ||¡dS)Nú )r2r!ÚjoinrArBrfrC)rDZ ps_cmdlineZpsutil_cmdliner&r&r'Ú test_cmdlines zTestProcess.test_cmdlineznot reliable on SUNOSznot reliable on AIXcCs(td|jƒ}t ¡ ¡}| ||¡dS)NÚnice)rr!rArBrxrC)rDZps_niceZ psutil_nicer&r&r'Ú test_nice*s  zTestProcess.test_niceN)Ú__name__Ú __module__Ú __qualname__Ú__doc__Ú classmethodr=r?rErIrJrMrSrrrYrZr`rgrjrlÚunittestÚskipIfrrrqrtrwrrryr&r&r&r'r7‰s8           r7c@s¨eZdZdZeƒdd„ƒZe ed¡e e dƒ d¡e e d¡dd „ƒƒƒZ eƒd d „ƒZ eƒd d „ƒZ dd„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'Ú Csz,TestSystemAPIs.test_pids..csg|]}|ˆkr|‘qSr&r&r‚)Ú pids_psutilr&r'r†Csz difference: ) ÚsortedrrAZpidsrrÚinsertrsÚfailr)rDÚ differencer&)r…r‡r'Ú test_pids6s  ÿzTestSystemAPIs.test_pidszunreliable on SUNOSÚifconfigzno ifconfig cmdz not supportedcCsLtdƒ}tjddD]2}| ¡D]}| |¡r qq | d||f¡‚qdS)Nz ifconfig -aT)Zpernicz/couldn't find %s nic in 'ifconfig -a' output %s)rrAZnet_io_countersr)Ú startswithrŠ)rDr#Znicr%r&r&r'Útest_nic_namesJs  ÿÿzTestSystemAPIs.test_nic_namesc CsÊtdƒ}| ¡st d¡‚| d¡}dd„|Dƒ}dd„|Dƒ}| t|ƒtt ¡ƒ¡|j t ¡|dVt t ¡ƒD]B\}}| |j ||¡| |j ||¡|j dk rxt |j ¡qxW5QRXdS)Núwho -uúno users on this systemÚ cSsg|]}| ¡d‘qS)r©r)r‚r&r&r'r†`sz-TestSystemAPIs.test_users..cSsg|]}| ¡d‘qS)rr“r‚r&r&r'r†as©rAZwho)rrrÚSkipTestr)rCrsrAÚusersÚsubTestÚ enumerater_Zterminalr!rB)rDr1Úlinesr–Z terminalsÚidxÚur&r&r'Ú test_usersZs   zTestSystemAPIs.test_usersc Csðtdƒ}| ¡st d¡‚d}t d|¡}|r4d}nNt d|¡}|rJd}n8t d|¡}|r`d}n"t d |¡}|r‚d}d d „|Dƒ}|s”t d |¡‚|jt ¡|d @t t ¡ƒD],\}}t j   |j ¡  |¡}| |||¡q´W5QRXdS)Nrr‘z\d\d\d\d-\d\d-\d\d \d\d:\d\dz%Y-%m-%d %H:%Mz[A-Z][a-z][a-z] \d\d \d\d:\d\dz %b %d %H:%Mz[A-Z][a-z][a-z] \d\dz%b %dz[a-z][a-z][a-z] \d\dcSsg|] }| ¡‘qSr&)Ú capitalizer‚r&r&r'r†ƒsz5TestSystemAPIs.test_users_started..z(cannot interpret tstamp in who output %sr”)rrrr•r/Úfindallr—rAr–r˜rmrnÚstartedrorC)rDr1ZtstamprŸršr›Z psutil_valuer&r&r'Útest_users_startedjs:     ÿÿþz!TestSystemAPIs.test_users_startedc CsFtjdttjdƒd&}| ttjjt   ¡¡|j s8t ‚W5QRXdS)Nzpsutil._psposix.os.killr.rN) r rOÚOSErrorÚerrnoÚEBADFrkrAÚ_psposixZ pid_existsr[ÚgetpidrQr*©rDÚmr&r&r'Útest_pid_exists_let_raise‘s ÿz(TestSystemAPIs.test_pid_exists_let_raisec CsFtjdttjdƒd&}| ttjjt   ¡¡|j s8t ‚W5QRXdS)Núpsutil._psposix.os.waitpidr.rN) r rOr¡r¢r£rkrAr¤Úwait_pidr[r¥rQr*r¦r&r&r'Útest_os_waitpid_let_raise›s ÿz(TestSystemAPIs.test_os_waitpid_let_raisec CsNtjdttjdƒd.}|jtjjtjj t   ¡dd|j s@t ‚W5QRXdS)Nr©r.rNg{®Gáz„?)Útimeout)r rOr¡r¢ZEINTRrkrAr¤ÚTimeoutExpiredrªr[r¥rQr*r¦r&r&r'Útest_os_waitpid_eintr¤s ÿüz$TestSystemAPIs.test_os_waitpid_eintrc Cs>tjddd&}| ttjjt ¡¡|j s0t ‚W5QRXdS)Nr©)réÿÿÿÿrd) r rOrkrrAr¤rªr[r¥rQr*r¦r&r&r'Útest_os_waitpid_bad_ret_status±sÿÿz-TestSystemAPIs.test_os_waitpid_bad_ret_statuszunreliable on AIXc CsÞdd„}d}tjddD]À}t |j¡}z||jƒ\}}}}WnPtk rŽ} z2t| ƒ ¡} d| kstd| kstd| kr|WY¢q‚W5d} ~ XYqX|j|j ||d |j|j ||d |j|j ||d |j|j |d d qdS) Nc Ssºztd|ƒ ¡}Wn>tk rR}z dt|ƒ ¡kr@t d¡‚‚W5d}~XYnX| d¡d}| ¡}t|dƒd}t|dƒd}t|dƒd}t |d   d d ¡ƒ}||||fS) Nzdf -k %sz device busyzdf returned EBUSYr’rrUéééú%r.) rrÚ RuntimeErrorrr^rr•r)rÚfloatr) Údevicer1Úerrr%ÚfieldsÚtotalÚusedÚfreeÚpercentr&r&r'Údf¿s z*TestSystemAPIs.test_disk_usage..dfi@F)Úallzno such file or directoryzraw devices not supportedzpermission denied)Údeltar) rAZdisk_partitionsÚ disk_usageZ mountpointr·rµrr^ZassertAlmostEqualrºr»r¼r½) rDr¾Z toleranceÚpartÚusagerºr»r¼r½r¸r&r&r'Útest_disk_usage¼s(  ÿþýzTestSystemAPIs.test_disk_usageN)rzr{r|r}rrŒrr€rrr rrœr r¨r«r®r°rrÄr&r&r&r'r2s$      &    rc@seZdZdd„ZdS)ÚTestMisccCs4tƒ}| |d¡| |t ¡¡| |tj¡dS)Nr)rZ assertGreaterrCÚresourceÚmmapÚPAGESIZE)rDZpagesizer&r&r'Útest_getpagesizeès zTestMisc.test_getpagesizeN)rzr{r|rÉr&r&r&r'rÅæsrÅÚ__main__)Ú run_from_name)N)-r}rmr¢r[r/r9rVrrArrrrrrrZ psutil.testsr r r r r rrrrrrrÇrÆZpsutil._psutil_posixrrr,r2r5r6r€r7rrÅrzZpsutil.tests.runnerrËÚ__file__r&r&r&r'Ús\                    8   ) 4