U
    +È-e“C  ã                   @   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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r2d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)ÚHAS_NET_IO_COUNTERS)Ú
PYTHON_EXE)ÚPsutilTestCase)Úmock)Úretry_on_failure)Úsh)Úskip_on_access_denied)Úspawn_testproc)Ú	terminate)Úwhich)Úgetpagesizec              	   C   sê   dg}t r| d¡ |dk	r0| dt|ƒg¡ nts8trD| d¡ n
| d¡ tr^|  d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 )zwWrapper 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ÚstartZstimez-oé   r   )r   ÚappendÚextendÚstrr   r   Úreplacer   Ú
splitlinesÚstripÚintÚ
ValueError)ÚfmtÚpidÚcmdÚoutputÚ
all_outputÚline© r%   úX/var/www/html/Darija-Ai-Train/env/lib/python3.8/site-packages/psutil/tests/test_posix.pyr   -   s0    

r   c                 C   s   d}t rd}t|| ƒ ¡ d S )NÚcommandZcommr   )r   r   Úsplit©r    Úfieldr%   r%   r&   Úps_named   s    r+   c                 C   s0   d}t strd}t|| ƒ}t dd|¡}| ¡ S )Nr'   Úargsz\(python.*?\)$Ú )r   r   r   ÚreÚsubr   )r    r*   Úoutr%   r%   r&   Úps_argsk   s    
r1   c                 C   s   d}t rd}t|| ƒS )NZrssZrssize©r   r   r)   r%   r%   r&   Úps_rssu   s    r3   c                 C   s   d}t rd}t|| ƒS )NZvszZvsizer2   r)   r%   r%   r&   Úps_vsz|   s    r4   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eƒ 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    r9   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ÚrealrA   )rB   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gidsrF   rA   )rB   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@   ÚusernamerA   )rB   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©Zside_effect)r?   r@   r   ÚpatchÚKeyErrorrA   rJ   r   rE   rF   ÚcalledÚAssertionError)rB   ÚpZ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Úsleepr3   r    r?   r@   Úmemory_inforA   )rB   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 )NrS   r   rT   )rU   rV   r4   r    r?   r@   rW   rA   )rB   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.\dr-   z\d)r+   r    ÚosÚpathÚbasenameÚlowerr?   r@   Únamer.   r/   rA   )rB   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fooÚbarúpsutil._psplatform.Process.name©Zreturn_valueú"psutil._psplatform.Process.cmdline)r   rM   r?   r@   rA   r^   )rB   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 ©Nr`   rb   rc   rd   r   r-   rL   )r   rM   r?   ZAccessDeniedr@   rA   r^   ©rB   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 rg   )r   rM   r?   ZNoSuchProcessr@   ÚassertRaisesr^   rh   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ÚroundZassertIn)rB   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@   ÚexerA   rP   Úlen)rB   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ú )r1   r    Újoinr?   r@   re   rA   )rB   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@   rw   rA   )rB   Zps_niceZpsutil_nicer%   r%   r&   Ú	test_nice  s    zTestProcess.test_niceN)Ú__name__Ú
__module__Ú__qualname__Ú__doc__Úclassmethodr;   r=   rC   rG   rH   rK   rR   r   r   rX   rY   r_   rf   ri   rk   ÚunittestÚskipIfr   r   rp   rs   rv   r   r   rx   r%   r%   r%   r&   r5   ƒ   s8   

	




r5   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ƒ d
d„ ƒZ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>8  s      z,TestSystemAPIs.test_pids.<locals>.<listcomp>c                    s   g | ]}|ˆ kr|‘qS r%   r%   r   )Úpids_psutilr%   r&   r…   9  s      zdifference: )
Úsortedr   r?   Zpidsr   r   Úinsertrr   Úfailr   )rB   Ú
differencer%   )r„   r†   r&   Ú	test_pids+  s    ÿzTestSystemAPIs.test_pidszunreliable on SUNOSÚifconfigzno ifconfig cmdznot supportedc                 C   sL   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_countersr(   Ú
startswithr‰   )rB   r"   Znicr$   r%   r%   r&   Útest_nic_names>  s    
 ÿÿzTestSystemAPIs.test_nic_namesc              	   C   sÊ   t dƒ}| ¡ s|  d¡‚| d¡}dd„ |D ƒ}dd„ |D ƒ}|  t|ƒtt ¡ ƒ¡ | jt ¡ |dV t	t ¡ ƒD ]B\}}|  |j
|| ¡ |  |j|| ¡ |jd k	rxt |j¡ qxW 5 Q R X d S )Núwho -uúno users on this systemÚ
c                 S   s   g | ]}|  ¡ d  ‘qS )r   ©r(   r   r%   r%   r&   r…   S  s     z-TestSystemAPIs.test_users.<locals>.<listcomp>c                 S   s   g | ]}|  ¡ d  ‘qS )r   r’   r   r%   r%   r&   r…   T  s     ©r?   Zwho)r   r   ÚskipTestr(   rA   rr   r?   ÚusersÚsubTestÚ	enumerater^   Zterminalr    r@   )rB   r0   Úlinesr•   Z	terminalsÚidxÚur%   r%   r&   Ú
test_usersM  s    


zTestSystemAPIs.test_usersc              	   C   sð   t dƒ}| ¡ s|  d¡‚d }t d|¡}|r4d}nNt d|¡}|rJd}n8t d|¡}|r`d}n"t d	|¡}|r‚d}d
d„ |D ƒ}|s”t d| ¡‚| jt 	¡ |d@ t
t 	¡ ƒD ],\}}tj |j¡ |¡}|  ||| ¡ q´W 5 Q R X d S )Nr   r   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\dc                 S   s   g | ]}|  ¡ ‘qS r%   )Ú
capitalizer   r%   r%   r&   r…   v  s     z5TestSystemAPIs.test_users_started.<locals>.<listcomp>z(cannot interpret tstamp in who output
%sr“   )r   r   r”   r.   Úfindallr~   ZSkipTestr–   r?   r•   r—   rl   rm   Ústartedrn   rA   )rB   r0   Ztstamprž   r™   rš   Zpsutil_valuer%   r%   r&   Útest_users_started]  s:    
ÿÿÿz!TestSystemAPIs.test_users_startedc              	   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-   rL   )r   rM   ÚOSErrorÚerrnoÚEBADFrj   r?   Ú_psposixZ
pid_existsrZ   ÚgetpidrO   rP   ©rB   Úmr%   r%   r&   Útest_pid_exists_let_raise‚  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-   rL   )r   rM   r    r¡   r¢   rj   r?   r£   Úwait_pidrZ   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-   rL   g{®Gáz„?)Útimeout)r   rM   r    r¡   ZEINTRrj   r?   r£   ÚTimeoutExpiredr©   rZ   r¤   rO   rP   r¥   r%   r%   r&   Útest_os_waitpid_eintr“  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   éÿÿÿÿrc   )r   rM   rj   r   r?   r£   r©   rZ   r¤   rO   rP   r¥   r%   r%   r&   Útest_os_waitpid_bad_ret_statusœ  s    ÿ ÿz-TestSystemAPIs.test_os_waitpid_bad_ret_statuszunreliable on AIXc           
         sâ   ‡ fdd„}d}t jddD ]À}t  |j¡}z||jƒ\}}}}W nP tk
r’ }	 z2t|	ƒ ¡ }	d|	ksxd|	ksxd|	kr€W Y ¢q‚ 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º   zt d|  ƒ ¡ }W n> tk
rR } z dt|ƒ ¡ kr@ˆ  d¡‚‚ W 5 d }~X Y nX | d¡d }| ¡ }t|d ƒd }t|d ƒd }t|d ƒd }t|d	  	d
d¡ƒ}||||fS )Nzdf -k %szdevice busyzdf returned EBUSYr‘   r   rT   é   é   é   ú%r-   )
r   r   ÚRuntimeErrorr   r]   r”   r(   r   Úfloatr   )	Údevicer0   Úerrr$   ÚfieldsÚtotalÚusedÚfreeÚpercent©rB   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_usageZ
mountpointr¶   r´   r   r]   ZassertAlmostEqualr¹   rº   r»   r¼   )
rB   r¾   Z	toleranceÚpartÚusager¹   rº   r»   r¼   r·   r%   r½   r&   Útest_disk_usage¥  s&    ÿþzTestSystemAPIs.test_disk_usageN)ry   rz   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assertGreaterrA   ÚresourceÚmmapÚPAGESIZE)rB   Zpagesizer%   r%   r&   Útest_getpagesizeÐ  s    zTestMisc.test_getpagesizeN)ry   rz   r{   rÉ   r%   r%   r%   r&   rÅ   Í  s   rÅ   Ú__main__)Úrun_from_name)N),r|   rl   r¡   rZ   r.   r7   rU   r~   r?   r   r   r   r   r   r   r   Zpsutil.testsr	   r
   r   r   r   r   r   r   r   r   rÇ   rÆ   Zpsutil._psutil_posixr   r   r+   r1   r3   r4   r   r5   r€   rÅ   ry   Zpsutil.tests.runnerrË   Ú__file__r%   r%   r%   r&   Ú<module>   sZ   
7
 $ &	
