
Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­
<!DOCTYPE html>
<html>
U
    Œ=Ý_';  ã                   @   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 }|D ]8}| 
¡ }zt|ƒ}W n tk
rÎ   Y nX | |¡ q¢|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/python38/lib64/python3.8/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*   Úps_argsp   s    r0   c                 C   s   d}t rd}t|| ƒS )NZrssZrssize©r   r   r,   r)   r)   r*   Úps_rssw   s    r2   c                 C   s   d}t rd}t|| ƒS )NZvszZvsizer1   r,   r)   r)   r*   Úps_vsz~   s    r3   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%   r8   r)   r)   r*   ÚtearDownClassŽ   s    zTestProcess.tearDownClassc                 C   s,   t d| jƒ}t | j¡ ¡ }|  ||¡ d S )NÚppid)r   r%   ÚpsutilÚProcessr=   Ú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@   )rA   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gidsrE   r@   )rA   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@   )rA   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 5 Q R X d S )Nzpsutil.pwd.getpwuid©Úside_effect)r>   r?   r   ÚpatchÚKeyErrorr@   rI   r   rD   rE   ÚcalledÚAssertionError)rA   Ú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 )Nçš™™™™™¹?r   é   )ÚtimeÚsleepr2   r%   r>   r?   Úmemory_infor@   )rA   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 )NrT   r   rU   )rV   rW   r3   r%   r>   r?   rX   r@   )rA   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@   )rA   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 5 Q R X W 5 Q R X d S )Núlong-program-namezlong-program-name-extendedZfooZbarúpsutil._psplatform.Process.name©Zreturn_valueú"psutil._psplatform.Process.cmdline)r   rM   r>   r?   r@   r`   )rA   r`   ÚcmdlinerQ   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 5 Q R X W 5 Q R X d S ©Nrd   re   rf   rg   r   r[   rK   )r   rM   r>   ÚAccessDeniedr?   r@   r`   ©rA   r`   rQ   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 5 Q R X W 5 Q R X d S rj   )r   rM   r>   ÚNoSuchProcessr?   ÚassertRaisesr`   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)rA   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¡ ¡ }z|  ||¡ W n0 tk
rZ   |d t|ƒ… }|  ||¡ Y nX d S r;   )r.   r%   r>   r?   Zexer@   rP   Úlen)rA   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ú )r0   r%   Újoinr>   r?   rh   r@   )rA   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?   r|   r@   )rA   Zps_niceZpsutil_nicer)   r)   r*   Ú	test_nice  s    zTestProcess.test_niceN)Ú__name__Ú
__module__Ú__qualname__Ú__doc__Úclassmethodr:   r<   rB   rF   rG   rJ   rS   r   r   rY   rZ   rc   ri   rm   rp   r   ÚskipIfr   r   rv   rx   r{   r   r   r}   r)   r)   r)   r*   r4   …   s6   

	



r4   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)   r…   )Úpids_psutilr)   r*   r‰   5  s      zdifference: )
Úsortedr   r>   Zpidsr   r   Úinsertrw   Úfailr   )rA   Ú
differencer)   )rˆ   rŠ   r*   Ú	test_pids'  s    ÿzTestSystemAPIs.test_pidszunreliable on SUNOSÚifconfigzno ifconfig cmdznot supportedc                 C   sP   t dƒ}tjdd� ¡ D ]2}| ¡ D ]}| |¡r$ qq$|  d||f ¡ q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�   )rA   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 ¡ ƒ¡ t ¡ D ] }|  |j	|¡ |  |j
|¡ q`d S )NÚwhozno users on this systemÚ
c                 S   s   g | ]}|  ¡ d  ‘qS )r   ©r+   r…   r)   r)   r*   r‰   O  s     z-TestSystemAPIs.test_users.<locals>.<listcomp>c                 S   s   g | ]}|  ¡ d  ‘qS )r   r–   r…   r)   r)   r*   r‰   P  s     )r   r!   ZskipTestr+   r@   rw   r>   Úusersru   r`   Úterminal)rA   Ú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 5 Q R X d S )Nzpsutil._psposix.os.killr[   rK   )r   rM   ÚOSErrorÚerrnoÚEBADFro   r>   Ú_psposixZ
pid_existsr\   ÚgetpidrO   rP   ©rA   Ú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 5 Q R X d S )Núpsutil._psposix.os.waitpidr[   rK   )r   rM   r�   rž   rŸ   ro   r>   r    Úwait_pidr\   r¡   rO   rP   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 5 Q R X d S )Nr¥   r[   rK   g{®Gáz„?)Útimeout)r   rM   r�   rž   ZEINTRro   r>   r    ÚTimeoutExpiredr¦   r\   r¡   rO   rP   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 5 Q R X d S )Nr¥   )r   éÿÿÿÿrf   )r   rM   ro   r#   r>   r    r¦   r\   r¡   rO   rP   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}t jdd�D ]Â}t  |j¡}z||jƒ\}}}}W nR tk
r� }	 z4t|	ƒ ¡ }	d|	kstd|	kstd|	kr~W Y ¢
qn‚ W 5 d }	~	X Y qX | j|j	||d	� | j|j
||d	� | j|j||d	� | j|j|d
d	� q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   rU   é   é   é   ú%r[   )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   r_   ZassertAlmostEqualrµ   r¶   r·   r¸   )
rA   r¹   Z	toleranceÚpartÚusagerµ   r¶   r·   r¸   Úerrr)   r)   r*   Útest_disk_usagey  s&    
ÿþ
zTestSystemAPIs.test_disk_usageN)r~   r   r€   r�   r   r�   r   rƒ   r   r   r   r“   r	   r>   r—   rœ   r¤   r§   rª   r¬   r   rÂ   r)   r)   r)   r*   r„   #  s"   

			
r„   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)rA   Zpagesizer)   r)   r*   Útest_getpagesize   s    zTestMisc.test_getpagesizeN)r~   r   r€   rÆ   r)   r)   r)   r*   rÃ   �  s   rÃ   Ú__main__)Úrun_from_name)N)-r�   rq   rž   r\   ra   r6   rV   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.   r0   r2   r3   rƒ   r4   r„   rÃ   r~   Zpsutil.tests.runnerrÈ   Ú__file__r)   r)   r)   r*   Ú<module>   sZ   
< y	
