£Á°èZ¨Ä…–K§‚«“ô4“ÒÙ´dîfUÙÃÅ WKbyÊ¦•êŽ…È®FÒ¿ÊÎóCozá¬S@6{Í:›œêZÌ:Š•_%:¢¾¾~;‘Ã~èŠ©ÊÇí`ÔÑ©úë™µ'5I¿fš×WO%ø9¾«¾DK|€ùÍD”Ýs]nHÕ¶ê×Ó¼ãžªéUWŸÈË%DÒÕ¬ï‘]/Åcx  ‰ï2ß]ä6G[]S£ÔÏ¯rs{úëóµmÒï#UQxo·õÞCe]"±/aÙ&Eã4ú9Jé_ÞåëdãöKë)AÞ                  ¯¹ægƒÛowÐø^d™ý½ßB7áyMä9ÜÖUã
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
<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rd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 || qW |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pe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{Gz?)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}xt 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	
