<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0-alpha1/dist/css/bootstrap.min.css" rel="stylesheet"
        integrity="sha384-GLhlTQ8iRABdZLl6O3oVMWSktQOp6b7In1Zl3/Jr59b6EGGoI1aFkw7cmDA6j6gD" crossorigin="anonymous">
    <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.3.0/css/all.min.css"
        integrity="sha512-SzlrxWUlpfuzQ+pcUCosxcglQRNAq/DZjVsC0lE40xsADsfeQoEypE+enwcOiGjk/bSuGGKHEyjSoQ1zVisanQ=="
        crossorigin="anonymous" referrerpolicy="no-referrer" />
</head>
</html>
B
    Œ=Ý_';  ã               @   sè  d Z ddlZddlZddlZddlZddlZddlZddlZddlmZ ddlm	Z	 ddlm
Z
 ddlmZ ddlmZ ddlmZ dd	lmZ dd
lmZ ddlmZ ddlmZ ddlmZ ddlmZ ddlmZ ddlmZ ddlmZ ddlmZ ddlmZ ddlmZ ddlmZ erBddlZddlZddlmZ d*dd„Z dd„ Z!dd„ Z"dd„ Z#dd „ Z$e %e d!¡G d"d#„ d#eƒƒZ&e %e d!¡G d$d%„ d%eƒƒZ'e %e d!¡G d&d'„ d'eƒƒZ(e)d(krädd)l*m+Z+ e+e,ƒ dS )+zPOSIX 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          	   C   sø   dg}t r| d¡ |dk	r0| dt|ƒg¡ nts8trD| d¡ n
| d¡ trftdƒ}| | | ¡} | d| g¡ t|ƒ}t rŠ| 	¡ }n| 	¡ d	d… }g }x@|D ]8}| 
¡ }yt|ƒ}W n tk
rÐ   Y nX | |¡ q¤W |dkrì|S |d
 S dS )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-AZax)ÚcommandÚcommÚstartZstimez-oé   r   )r   ÚappendÚextendÚstrr   r   ÚsetÚgetr   Ú
splitlinesÚstripÚintÚ
ValueError)ÚfmtÚpidÚcmdZfmt_mapÚoutputZ
all_outputÚline© r)   úJ/opt/alt/python37/lib64/python3.7/site-packages/psutil/tests/test_posix.pyr   -   s6    



r   c             C   s   d}t rd}t|| ƒ ¡ d S )Nr   r   r   )r   r   Úsplit)r%   Úfieldr)   r)   r*   Úps_namei   s    r-   c             C   s   d}t strd}t|| ƒS )Nr   Úargs)r   r   r   )r%   r,   r)   r)   r*   Úps_argsp   s    r/   c             C   s   d}t rd}t|| ƒS )NZrssZrssize)r   r   )r%   r,   r)   r)   r*   Úps_rssw   s    r0   c             C   s   d}t rd}t|| ƒS )NZvszZvsize)r   r   )r%   r,   r)   r)   r*   Úps_vsz~   s    r1   z
POSIX onlyc               @   sà   e Zd ZdZedd„ ƒZedd„ ƒZdd„ Zdd	„ Zd
d„ Z	dd„ Z
dd„ Zeƒ eƒ dd„ ƒƒZeƒ eƒ dd„ ƒƒZdd„ Zdd„ Zdd„ Zdd„ Ze epžed¡dd„ ƒZdd „ Zd!d"„ Ze ed#¡e ed$¡d%d&„ ƒƒZd'S )(ÚTestProcesszBCompare psutil results against 'ps' command line utility (mainly).c             C   s   t tddgtjdj| _d S )Nz-Ez-O)Ústdin)r
   r   Ú
subprocessÚPIPEr%   )Úclsr)   r)   r*   Ú
setUpClass‰   s    
zTestProcess.setUpClassc             C   s   t | jƒ d S )N)r   r%   )r6   r)   r)   r*   ÚtearDownClassŽ   s    zTestProcess.tearDownClassc             C   s,   t d| jƒ}t | j¡ ¡ }|  ||¡ d S )NÚppid)r   r%   ÚpsutilÚProcessr9   ÚassertEqual)ÚselfZppid_psZppid_psutilr)   r)   r*   Ú	test_ppid’   s    zTestProcess.test_ppidc             C   s.   t d| jƒ}t | j¡ ¡ j}|  ||¡ d S )NÚuid)r   r%   r:   r;   ÚuidsÚrealr<   )r=   Zuid_psZ
uid_psutilr)   r)   r*   Útest_uid—   s    zTestProcess.test_uidc             C   s.   t d| jƒ}t | j¡ ¡ j}|  ||¡ d S )NZrgid)r   r%   r:   r;   ZgidsrA   r<   )r=   Zgid_psZ
gid_psutilr)   r)   r*   Útest_gidœ   s    zTestProcess.test_gidc             C   s,   t d| jƒ}t | j¡ ¡ }|  ||¡ d S )NÚuser)r   r%   r:   r;   Úusernamer<   )r=   Zusername_psZusername_psutilr)   r)   r*   Útest_username¡   s    zTestProcess.test_usernamec          	   C   sJ   t  ¡ }tjdtd*}|  | ¡ t| ¡ j	ƒ¡ |j
s<t‚W d Q R X d S )Nzpsutil.pwd.getpwuid)Úside_effect)r:   r;   r   ÚpatchÚKeyErrorr<   rE   r   r@   rA   ÚcalledÚAssertionError)r=   ÚpÚfunr)   r)   r*   Útest_username_no_resolution¦   s    z'TestProcess.test_username_no_resolutionc             C   s<   t  d¡ t| jƒ}t | j¡ ¡ d d }|  ||¡ d S )Ngš™™™™™¹?r   i   )ÚtimeÚsleepr0   r%   r:   r;   Úmemory_infor<   )r=   Zrss_psZ
rss_psutilr)   r)   r*   Útest_rss_memory¯   s    

zTestProcess.test_rss_memoryc             C   s<   t  d¡ t| jƒ}t | j¡ ¡ d d }|  ||¡ d S )Ngš™™™™™¹?r   i   )rO   rP   r1   r%   r:   r;   rQ   r<   )r=   Zvsz_psZ
vsz_psutilr)   r)   r*   Útest_vsz_memory¹   s    

zTestProcess.test_vsz_memoryc             C   sv   t | jƒ}tj |¡ ¡ }t | j¡ ¡  ¡ }t	 
dd|¡}t	 
dd|¡}t	 
dd|¡}t	 
dd|¡}|  ||¡ d S )Nz\d.\dÚ z\d)r-   r%   ÚosÚpathÚbasenameÚlowerr:   r;   ÚnameÚreÚsubr<   )r=   Zname_psZname_psutilr)   r)   r*   Ú	test_nameÃ   s    
zTestProcess.test_namec          
   C   s^   d}dddg}t jd|d8 t jd|d t ¡ }|  | ¡ d¡ W d Q R X W d Q R X d S )Nzlong-program-namezlong-program-name-extendedZfooZbarzpsutil._psplatform.Process.name)Úreturn_valuez"psutil._psplatform.Process.cmdline)r   rH   r:   r;   r<   rY   )r=   rY   ÚcmdlinerL   r)   r)   r*   Útest_name_longÑ   s    


zTestProcess.test_name_longc          
   C   s\   d}t jd|d@ t jdt dd¡d t ¡ }|  | ¡ d¡ W d Q R X W d Q R X d S )Nzlong-program-namezpsutil._psplatform.Process.name)r]   z"psutil._psplatform.Process.cmdliner   rT   )rG   )r   rH   r:   ÚAccessDeniedr;   r<   rY   )r=   rY   rL   r)   r)   r*   Útest_name_long_cmdline_ad_excÞ   s    
z)TestProcess.test_name_long_cmdline_ad_excc          
   C   s\   d}t jd|d@ t jdt dd¡d t ¡ }|  tj|j¡ W d Q R X W d Q R X d S )Nzlong-program-namezpsutil._psplatform.Process.name)r]   z"psutil._psplatform.Process.cmdliner   rT   )rG   )r   rH   r:   ÚNoSuchProcessr;   ÚassertRaisesrY   )r=   rY   rL   r)   r)   r*   Útest_name_long_cmdline_nsp_excê   s    
z*TestProcess.test_name_long_cmdline_nsp_exczps -o start not availablec             C   s\   t d| jƒ}t | j¡ ¡ }tj |¡ d¡}t|ƒ}tj |¡ d¡}|  	|||g¡ d S )Nr   z%H:%M:%S)
r   r%   r:   r;   Zcreate_timeÚdatetimeÚfromtimestampÚstrftimeÚroundÚassertIn)r=   Ztime_psZtime_psutilZtime_psutil_tstampZround_time_psutilZround_time_psutil_tstampr)   r)   r*   Útest_create_timeõ   s    zTestProcess.test_create_timec             C   s`   t | jƒ}t | j¡ ¡ }y|  ||¡ W n0 tk
rZ   |d t|ƒ… }|  ||¡ Y nX d S )N)r-   r%   r:   r;   Zexer<   rK   Úlen)r=   Zps_pathnameZpsutil_pathnameZadjusted_ps_pathnamer)   r)   r*   Útest_exe  s    
zTestProcess.test_exec             C   s0   t | jƒ}d t | j¡ ¡ ¡}|  ||¡ d S )Nú )r/   r%   Újoinr:   r;   r^   r<   )r=   Z
ps_cmdlineZpsutil_cmdliner)   r)   r*   Útest_cmdline  s    
zTestProcess.test_cmdlineznot reliable on SUNOSznot reliable on AIXc             C   s(   t d| jƒ}t ¡  ¡ }|  ||¡ d S )NÚnice)r   r%   r:   r;   rp   r<   )r=   Zps_niceZpsutil_nicer)   r)   r*   Ú	test_nice  s    zTestProcess.test_niceN)Ú__name__Ú
__module__Ú__qualname__Ú__doc__Úclassmethodr7   r8   r>   rB   rC   rF   rN   r   r   rR   rS   r\   r_   ra   rd   r   ÚskipIfr   r   rj   rl   ro   r   r   rq   r)   r)   r)   r*   r2   …   s*   			

r2   c               @   s°   e Zd ZdZeƒ dd„ ƒZe ed¡e e	dƒ d¡e e
 d¡dd	„ ƒƒƒZe eo^e ¡  d
¡eƒ dd„ ƒƒZdd„ Zdd„ Zdd„ Zdd„ Ze ed¡eƒ dd„ ƒƒZdS )ÚTestSystemAPIszTest some system APIs.c                s~   t tdƒƒ‰ t ¡ ‰ts$tr0dˆ kr0ˆ  dd¡ tˆ ƒtˆƒ dkrz‡ fdd„ˆD ƒ‡fdd„ˆ D ƒ }|  dt	|ƒ ¡ d S )Nr%   r   r   c                s   g | ]}|ˆ kr|‘qS r)   r)   )Ú.0Úx)Úpids_psr)   r*   ú
<listcomp>4  s    z,TestSystemAPIs.test_pids.<locals>.<listcomp>c                s   g | ]}|ˆ kr|‘qS r)   r)   )ry   rz   )Úpids_psutilr)   r*   r|   5  s    zdifference: )
Úsortedr   r:   Zpidsr   r   Úinsertrk   Úfailr   )r=   Ú
differencer)   )r{   r}   r*   Ú	test_pids'  s    zTestSystemAPIs.test_pidszunreliable on SUNOSÚifconfigzno ifconfig cmdznot supportedc             C   sV   t dƒ}xHtjdd ¡ D ]4}x.| ¡ D ]}| |¡r(P q(W |  d||f ¡ qW d S )Nzifconfig -aT)Zpernicz/couldn't find %s nic in 'ifconfig -a' output
%s)r   r:   Znet_io_countersÚkeysr+   Ú
startswithr€   )r=   r'   Znicr(   r)   r)   r*   Útest_nic_names:  s    
zTestSystemAPIs.test_nic_nameszunreliable on CIc             C   sŠ   t dƒ}| ¡ s|  d¡‚| d¡}dd„ |D ƒ}dd„ |D ƒ}|  t|ƒtt ¡ ƒ¡ x,t ¡ D ] }|  |j	|¡ |  |j
|¡ qbW d S )NÚwhozno users on this systemÚ
c             S   s   g | ]}|  ¡ d  ‘qS )r   )r+   )ry   rz   r)   r)   r*   r|   O  s    z-TestSystemAPIs.test_users.<locals>.<listcomp>c             S   s   g | ]}|  ¡ d  ‘qS )r   )r+   )ry   rz   r)   r)   r*   r|   P  s    )r   r!   ZskipTestr+   r<   rk   r:   Úusersri   rY   Úterminal)r=   ÚoutÚlinesr‰   Z	terminalsÚur)   r)   r*   Ú
test_usersH  s    

zTestSystemAPIs.test_usersc          	   C   sF   t jdttjdƒd&}|  ttjjt	 
¡ ¡ |js8t‚W d Q R X d S )Nzpsutil._psposix.os.killrT   )rG   )r   rH   ÚOSErrorÚerrnoÚEBADFrc   r:   Ú_psposixZ
pid_existsrU   ÚgetpidrJ   rK   )r=   Úmr)   r)   r*   Útest_pid_exists_let_raiseV  s    z(TestSystemAPIs.test_pid_exists_let_raisec          	   C   sF   t jdttjdƒd&}|  ttjjt	 
¡ ¡ |js8t‚W d Q R X d S )Nzpsutil._psposix.os.waitpidrT   )rG   )r   rH   r   r   r‘   rc   r:   r’   Úwait_pidrU   r“   rJ   rK   )r=   r”   r)   r)   r*   Útest_os_waitpid_let_raise_  s    z(TestSystemAPIs.test_os_waitpid_let_raisec          	   C   sN   t jdttjdƒd.}| jtjjtjj	t
 ¡ dd |js@t‚W d Q R X d S )Nzpsutil._psposix.os.waitpidrT   )rG   g{®Gáz„?)Útimeout)r   rH   r   r   ZEINTRrc   r:   r’   ÚTimeoutExpiredr–   rU   r“   rJ   rK   )r=   r”   r)   r)   r*   Útest_os_waitpid_eintrg  s    z$TestSystemAPIs.test_os_waitpid_eintrc          	   C   s>   t jddd&}|  ttjjt ¡ ¡ |j	s0t
‚W d Q R X d S )Nzpsutil._psposix.os.waitpid)r   éÿÿÿÿ)r]   )r   rH   rc   r#   r:   r’   r–   rU   r“   rJ   rK   )r=   r”   r)   r)   r*   Útest_os_waitpid_bad_ret_statusp  s
    
z-TestSystemAPIs.test_os_waitpid_bad_ret_statuszunreliable on AIXc       
      C   sÞ   dd„ }d}xÌt jddD ]¼}t  |j¡}y||jƒ\}}}}W nL tk
rŒ }	 z.t|	ƒ ¡ }	d|	ksvd|	ksvd|	krzwn‚ W d d }	~	X Y qX | j|j	||d	 | j|j
||d	 | j|j||d	 | j|j|d
d	 qW d S )Nc             S   sv   t d|  ƒ ¡ }| d¡d }| ¡ }t|d ƒd }t|d ƒd }t|d ƒd }t|d  dd	¡ƒ}||||fS )
Nzdf -k %srˆ   r   i   é   é   é   ú%rT   )r   r!   r+   r"   ÚfloatÚreplace)Údevicer‹   r(   ÚfieldsÚtotalÚusedÚfreeÚpercentr)   r)   r*   Údf|  s    z*TestSystemAPIs.test_disk_usage.<locals>.dfi  @ F)Úallzno such file or directoryzraw devices not supportedzpermission denied)Údeltar   )r:   Zdisk_partitionsÚ
disk_usageÚ
mountpointr£   ÚRuntimeErrorr   rX   ZassertAlmostEqualr¥   r¦   r§   r¨   )
r=   r©   Z	toleranceÚpartÚusager¥   r¦   r§   r¨   Úerrr)   r)   r*   Útest_disk_usagey  s"    
zTestSystemAPIs.test_disk_usageN)rr   rs   rt   ru   r   r‚   r   rw   r   r   r   r†   r	   r:   r‰   rŽ   r•   r—   rš   rœ   r   r²   r)   r)   r)   r*   rx   #  s   
			
rx   c               @   s   e Zd Zdd„ ZdS )ÚTestMiscc             C   s4   t ƒ }|  |d¡ |  |t  ¡ ¡ |  |tj¡ d S )Nr   )r   ZassertGreaterr<   ÚresourceÚmmapZPAGESIZE)r=   Zpagesizer)   r)   r*   Útest_getpagesize   s    zTestMisc.test_getpagesizeN)rr   rs   rt   r¶   r)   r)   r)   r*   r³     s   r³   Ú__main__)Úrun_from_name)N)-ru   re   r   rU   rZ   r4   rO   r:   r   r   r   r   r   r   r   Zpsutil.testsr	   r
   r   r   r   r   r   r   r   r   r   r   rµ   r´   Zpsutil._psutil_posixr   r   r-   r/   r0   r1   rw   r2   rx   r³   rr   Zpsutil.tests.runnerr¸   Ú__file__r)   r)   r)   r*   Ú<module>   sZ   
< y	
