
­­­­­­­­­­­­­­­­­­
<!DOCTYPE html>
<html>
U
    =_o                     @   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	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  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
Z
ddlZ
e	j'dd dkZ(G dd de Z)e*d d!Z+G d"d# d#e Z,e&-ej./e$ d$G d%d& d&e Z0e1d'kr
dd(l2m3Z3 e3e4 dS ))z
Miscellaneous tests.
    N)LINUX)POSIX)WINDOWS)memoize)memoize_when_activated)supports_ipv6)wrap_numbers)PY3)APPVEYOR)
CI_TESTING)HAS_BATTERY)HAS_MEMORY_MAPS)HAS_NET_IO_COUNTERS)HAS_SENSORS_BATTERY)HAS_SENSORS_FANS)HAS_SENSORS_TEMPERATURES)import_module_by_path)mock)PsutilTestCase)
PYTHON_EXE)reload_module)ROOT_DIR)SCRIPTS_DIR)sh)unittest   )   	   c                   @   s   e Zd ZefddZdd ZefddZefddZefd	d
ZefddZ	dd Z
dd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd  Zd!d" Zd#d$ Zd%d& Zd'd( Zd)S )*TestMiscc              	   C   s  t |  j}||}| d| | d|j | | dt|  |dd | d| | d| |	  |
  ||}| d| | d| tjjt jd	t t d
@ t  }||}| d|j | | d| | d| W 5 Q R X tjjt jd	t t d
@ t  }||}| d|j | | d| | d| W 5 Q R X tjjt jd	t t d
4 t  }||}| d|j | | d| W 5 Q R X d S )Nzpsutil.Processzpid=%sz	name='%s'zname=u'zname='zstatus=z	exitcode=zstatus='terminated'nameside_effectzstatus='zombie'zname=Z
terminated)psutilProcessZspawn_testprocpidassertInstrr   replaceassertNotIn	terminatewaitr   patchobjectZombieProcessosgetpidNoSuchProcessAccessDenied)selffuncpr r6   I/opt/alt/python38/lib64/python3.8/site-packages/psutil/tests/test_misc.pytest_process__repr__=   sJ    
zTestMisc.test_process__repr__c                 C   s   | j td d S )N)r3   )r8   r&   r2   r6   r6   r7   test_process__str__a   s    zTestMisc.test_process__str__c                 C   sN   |  ttdd |  ttjdddd |  ttjdddd d S )NA  z7psutil.NoSuchProcess process no longer exists (pid=321)foor   zCpsutil.NoSuchProcess process no longer exists (pid=321, name='foo')msgzpsutil.NoSuchProcess foo)assertEqualreprr"   r0   r2   r3   r6   r6   r7   test_no_such_process__repr__d   s    z%TestMisc.test_no_such_process__repr__c                 C   sj   |  ttdd |  ttjdddd |  ttjddddd |  ttjddd	d
 d S )Nr;   zEpsutil.ZombieProcess process still exists but it's a zombie (pid=321)r<   r=   zQpsutil.ZombieProcess process still exists but it's a zombie (pid=321, name='foo')   )r   ppidzYpsutil.ZombieProcess process still exists but it's a zombie (pid=321, name='foo', ppid=1)r>   zpsutil.ZombieProcess foo)r@   rA   r"   r-   rB   r6   r6   r7   test_zombie_process__repr__p   s     z$TestMisc.test_zombie_process__repr__c                 C   sN   |  ttdd |  ttjdddd |  ttjdddd d S )Nr;   zpsutil.AccessDenied (pid=321)r<   r=   z)psutil.AccessDenied (pid=321, name='foo')r>   zpsutil.AccessDenied foo)r@   rA   r"   r1   rB   r6   r6   r7   test_access_denied__repr__   s    z#TestMisc.test_access_denied__repr__c                 C   sP   |  ttdd |  ttjdddd |  ttjddddd d S )	Nr;   z/psutil.TimeoutExpired timeout after 321 secondso   )r$   z9psutil.TimeoutExpired timeout after 321 seconds (pid=111)r<   )r$   r   zEpsutil.TimeoutExpired timeout after 321 seconds (pid=111, name='foo'))r@   rA   r"   TimeoutExpiredrB   r6   r6   r7   test_timeout_expired__repr__   s    z%TestMisc.test_timeout_expired__repr__c                 C   s>   t  }t  }| || d|_| || | |d d S )N)r   r   r<   )r"   r#   r@   _identZassertNotEqual)r2   p1p2r6   r6   r7   test_process__eq__   s    zTestMisc.test_process__eq__c                 C   s(   t t t g}| t|d d S )NrD   )setr"   r#   r@   len)r2   sr6   r6   r7   test_process__hash__   s    zTestMisc.test_process__hash__c              	   C   s   t t}|D ]}|dkrq|dszt| W q tk
r   |tjkrtt|}|d kr`Y q|jd k	rd|j kr| 	d|  Y qX qtjD ]}| 
|| qd S )N)longteststestPermissionErrorProcessLookupError_Z
deprecatedz%r not in psutil.__all__)dirr"   
startswith
__import__ImportError__all__getattr__doc__lowerfailr%   )r2   Z
dir_psutilr   funr6   r6   r7   test__all__   s$    




zTestMisc.test__all__c                 C   s$   |  ddd tjD tj d S )N.c                 S   s   g | ]}t |qS r6   )r&   ).0xr6   r6   r7   
<listcomp>   s     z)TestMisc.test_version.<locals>.<listcomp>)r@   joinr"   version_info__version__r9   r6   r6   r7   test_version   s    zTestMisc.test_versionc                 C   s"   t  }d|_| d|  d S )N1r<   )r"   r#   r<   r(   as_dict)r2   r4   r6   r6   r7   !test_process_as_dict_no_new_names   s    z*TestMisc.test_process_as_dict_no_new_namesc                    s  t  fdd}g  tdD ].}| }di f}| || | t d qtdD ]0}|d}di f}| || | t d qTtdD ]8}|ddd}dddif}| || | t d	 q|  | }di f}| || | t d
 | |jd d S )Nc                     s     d | |fS )foo docstringNappend)argskwargsZcallsr6   r7   r<      s    
z"TestMisc.test_memoize.<locals>.foor   r6   rD   )rD   )barru   r      ro   )r   ranger@   rP   cache_clearr_   )r2   r<   rf   retZexpectedr6   rt   r7   test_memoize   s0    zTestMisc.test_memoizec                    s   G  fddd}| }g  |   |   | t d g  |j | |   |   | t d g  |j | |   |   | t d d S )Nc                       s   e Zd Ze fddZdS )z1TestMisc.test_memoize_when_activated.<locals>.Fooc                    s     d  d S Nrp   r9   rt   r6   r7   r<      s    z5TestMisc.test_memoize_when_activated.<locals>.Foo.fooN)__name__
__module____qualname__r   r<   r6   rt   r6   r7   Foo   s   r   r   rD   )r<   r@   rP   cache_activatecache_deactivate)r2   r   fr6   rt   r7   test_memoize_when_activated   s     z$TestMisc.test_memoize_when_activatedc                 C   s   ddl m} dd }| |d|ddi | |d|dd|d	d
i | |d|dd|d	di | |d|dd|d	d
i | |d|ddi | |d|ddi | |d|ddi d S )Nr   )parse_environ_blockc                 S   s   t r|  S | S r{   )r   upper)rQ   r6   r6   r7   k  s    z,TestMisc.test_parse_environ_block.<locals>.kza=1 arl   z	a=1 b=2  b2za=1 b=   za=1 b=2  c=3 zxxx a=1 z	a=1 =b=2 za=1 b=2)psutil._commonr   r@   )r2   r   r   r6   r6   r7   test_parse_environ_block  s"    




z!TestMisc.test_parse_environ_blockc              	   C   s>  |  tj t rtd}d|_t  t r6tW 5 Q R X t  tjdtjd}t rdt|j	sntW 5 Q R X t  tjdtj
d"}t rtt  |j	stW 5 Q R X t  tjdtj
d"}t rtt  |j	stW 5 Q R X n@| t0 ttjtj}z|d W 5 |  X W 5 Q R X d S )Nzpsutil._common.socketFzpsutil._common.socket.socketr    z!psutil._common.socket.socket.bind)z::1r   )Z
addCleanupr   rx   r   r+   has_ipv6AssertionErrorsocketerrorcalledgaierrorassertRaises	ExceptionAF_INET6SOCK_STREAMclosebind)r2   rQ   sockr6   r6   r7   test_supports_ipv6  sD    


zTestMisc.test_supports_ipv6c              	   C   s   ddl m} tjt}||s$t|tj|r8ttj	dt
tjdd | t
|| W 5 Q R X tj	dt
tjdd | t
|| W 5 Q R X tj	dt
tjdd ||rtW 5 Q R X tj	ddd ||rtW 5 Q R X d S )	Nr   )isfile_strictzpsutil._common.os.statr<   r    zpsutil._common.stat.S_ISREGFZreturn_value)r   r   r.   pathabspath__file__r   dirnamer   r+   OSErrorerrnoEPERMr   EACCESENOENT)r2   r   Z	this_filer6   r6   r7   test_isfile_strict=  s$    


zTestMisc.test_isfile_strictc                    s    fdd}|t    |t   |t   |t   |t jdd |t   trnt	j
dsnnts~|t   |t   |t t	  |t   d S )Nc                    s<   t d k	rt t |  t| }t|} | | d S r{   )jsonloadsdumpspickler@   )ry   r   r   r9   r6   r7   checkO  s
    

z*TestMisc.test_serialization.<locals>.checkr   )intervalz/proc/diskstats)r"   r#   rm   Zvirtual_memoryZswap_memoryZ	cpu_timesZcpu_times_percentnet_io_countersr   r.   r   existsr
   disk_io_countersZdisk_partitions
disk_usagegetcwdusers)r2   r   r6   r9   r7   test_serializationN  s    zTestMisc.test_serializationc                 C   sT   t jtd}tr(t j|s(| dS t|}| t	|j
 | | tj d S )Nzsetup.pyzcan't find setup.py)r.   r   rh   r   r   r   skipTestr   r   
SystemExitsetupr@   get_versionr"   rj   )r2   Zsetup_pymoduler6   r6   r7   test_setup_scripte  s    
zTestMisc.test_setup_scriptc              
   C   s   t jjtjdtjd}t  |js*tW 5 Q R X t jjtjdtdd}t  |jsbtW 5 Q R X t jjtjdt	d.}| 
t	 t  W 5 Q R X |jstW 5 Q R X d S )NZcreate_timer    rD   )r   r+   r,   r"   r#   r1   r   r   r-   
ValueErrorr   )r2   methr6   r6   r7   test_ad_on_process_creationm  s&    z$TestMisc.test_ad_on_process_creationc              
   C   sR   t jddd: | t}tt W 5 Q R X | dt|j	  W 5 Q R X d S )Nzpsutil._psplatform.cext.versionz0.0.0r   zversion conflict)
r   r+   r   r\   r   r"   r%   r&   	exceptionr`   )r2   cmr6   r6   r7   test_sanity_version_check~  s     z"TestMisc.test_sanity_version_checkN)r|   r}   r~   rA   r8   r:   rC   rF   rG   rJ   rN   rR   rc   rk   rn   rz   r   r   r   r   r   r   r   r   r6   r6   r6   r7   r   ;   s(   $##r   r<   za b cc                   @   s   e Zd Zdd ZeZdd Zdd Zdd Zd	d
 Zdd Z	dd Z
dd Zdd Zdd Zdd Zdd Zdd Zee ddd ZdS )TestWrapNumbersc                 C   s   t   d S r{   )r   rx   r9   r6   r6   r7   setUp  s    zTestWrapNumbers.setUpc                 C   s&   dt dddi}| t|d| d S Ndisk1   disk_iontr@   r   r2   inputr6   r6   r7   test_first_call  s    zTestWrapNumbers.test_first_callc                 C   s8   dt dddi}| t|d| | t|d| d S r   r   r   r6   r6   r7   test_input_hasnt_changed  s    z(TestWrapNumbers.test_input_hasnt_changedc                 C   s   dt dddi}| t|d| dt dddi}| t|d| dt dddi}| t|d| dt dddi}| t|d| d S )	Nr   r   r   
               r   r   r6   r6   r7   test_increase_but_no_wrap  s    z)TestWrapNumbers.test_increase_but_no_wrapc                 C   s  dt dddi}| t|d| dt dddi}| t|ddt dddi dt dddi}| t|ddt dddi dt dddi}| t|ddt dddi dt dddi}| t|ddt ddd	i dt dddi}| t|ddt ddd	i dt d
ddi}| t|ddt ddd	i dt dddi}| t|ddt ddd	i dt dddi}| t|ddt ddd	i d S )Nr   d   r   r   n   Z      r      2      (   r   r   r6   r6   r7   	test_wrap  sD    zTestWrapNumbers.test_wrapc                 C   st   dt dddi}| t|d| t dddt dddd}| t|d| dt dddi}| t|d| d S )Nr   r   r      r   Zdisk2   r   r   r6   r6   r7   test_changing_keys  s    

z"TestWrapNumbers.test_changing_keysc                 C   s.  t dddt dddd}| t|d| t dddt dddd}| t|dt dddt dddd dt dddi}| t|d| t dddt dddd}| t|d| t dddt dddd}| t|d| t dddt dddd}| t|dt dddt dddd d S )Nr   r   r   r   r   r   r   r   r   r6   r6   r7   test_changing_keys_w_wrap  s<    













z)TestWrapNumbers.test_changing_keys_w_wrapc                 C   sb   ddddd}|  t|d| |  t|d| ddddd}t|d}|  |d d	 d
 d S )N)	i,      #  R       ȷ  )	i  r   i tU i   i  r   r   r   r   )	6   r   i $ i N rv      r   i     )	iU	  i  i"  r   i  i4  i  i  i\  )nvme0n1Z	nvme0n1p1Z	nvme0n1p2Z	nvme0n1p3r   )	r   r   r   r   r   r   r   r   r   r   r   i  )r@   r   )r2   doutr6   r6   r7   test_real_data  s    
zTestWrapNumbers.test_real_datac                 C   sb   dt dddi}t|d t }| |d d|i | |d di i | |d di i d S )Nr   r   r   r   rD   r   r   r   
cache_infor@   r2   r   cacher6   r6   r7   test_cache_first_call	  s    
z%TestWrapNumbers.test_cache_first_callc                 C   s   dt dddi}t|d dt dddi}t|d t }| |d d|i | |d dddddi | |d di i d S )	Nr   r   r   r   r   rD   )r   r   )r   rD   r   r   r   r   r   r6   r6   r7   test_cache_call_twice  s    

z%TestWrapNumbers.test_cache_call_twicec                    s  dt dddi}t|d dt dddi}t|d t } |d d|i  |d dddddi  |d ddtd	gii  fd
d}dt dddi}t|d t } |d d|i |  dt dddi}t|d t } |d d|i |  dt dddi}t|d t } |d d|i  |d dddddi  |d ddtd	gii d S )Nr   r   r   r   r   rD   r   r   r   c                     sF   t  }  | d dddddi  | d ddtdgii d S )	NrD   r   r   r   r   r   r   r   )r   r   r@   rO   )r   r9   r6   r7   assert_,  s    
z0TestWrapNumbers.test_cache_wrap.<locals>.assert_r   r   r   )r   r   r   r@   rO   )r2   r   r   r   r6   r9   r7   test_cache_wrap  s>    





zTestWrapNumbers.test_cache_wrapc                 C   s   dt dddi}t|d t dddt dddd}t|d t }| |d d|i | |d dddddi | |d	 di i d S )
Nr   r   r   r   r   r   rD   r   r   r   r   r6   r6   r7   test_cache_changing_keysM  s    



z(TestWrapNumbers.test_cache_changing_keysc                 C   s\   dt dddi}t|d t|d td | t i i i f td td d S )Nr   r   r   z?!?)r   r   rx   r@   r   r   r6   r6   r7   test_cache_clearZ  s    



z TestWrapNumbers.test_cache_clearnot supportedc                 C   s   t  rt  s| dS t   t   t }|D ]}| d| | d| q6t j  t }|D ]}| d| | d| qjt j  t }| 	|i i i f d S )Nzno disks or NICs availablezpsutil.disk_io_counterszpsutil.net_io_counters)
r"   r   r   r   r   r   r%   rx   r(   r@   )r2   Zcachesr   r6   r6   r7   test_cache_clear_public_apisc  s     


z,TestWrapNumbers.test_cache_clear_public_apisN)r|   r}   r~   r   ZtearDownr   r   r   r   r   r   r   r   r   r   r   r   r   skipIfr   r   r6   r6   r6   r7   r     s    
%0	r   zcan't locate scripts directoryc                   @   s~  e Zd ZdZedd Zed<ddZdd Ze	e
 d	d
d Zdd Zdd Zdd Zdd Ze	eote  ddd Zdd Zdd Zdd Zdd Ze	e dd d! Zd"d# Zd$d% Zd&d' Zd(d) Zd*d+ Zd,d- Ze	e  d.d/d0 Z!d1d2 Z"e	e# dd3d4 Z$e	e% dd5d6 Z&e	e' de	e( d7d8d9 Z)e	e' de	e( d7d:d; Z*dS )=TestScriptsz-Tests for scripts in the "scripts" directory.c              
   O   s   dt jt|  } t| g}|D ]}|| qzt|f| }W n@ tk
r } z"dt	|krpt	| W Y S  W 5 d }~X Y nX |st
||S )Nz%sr1   )r.   r   rh   r   r   rq   r   stripRuntimeErrorr&   r   )exerr   rs   cmdargr   errr6   r6   r7   assert_stdout  s    zTestScripts.assert_stdoutNc              	   C   sR   t jt| } tr"t| ddd}n
t| d}| | }W 5 Q R X t| d S )Nrtutf8)encoding)	r.   r   rh   r   r	   openreadastparse)r  rr   r   srcr6   r6   r7   assert_syntax  s    
zTestScripts.assert_syntaxc                 C   sV   t | }ttD ]>}|drdtj|d  |kr| dtjt|  qd S )N.pyZtest_r   zno test defined for %r script)	rY   r.   listdirr   endswithr   splitextra   rh   )r2   Zmethsr   r6   r6   r7   test_coverage  s    
zTestScripts.test_coveragez
POSIX onlyc                 C   sP   t tD ]@}|dr
t jt|}tjt |tj @ s
| 	d|  q
d S )Nr  z%r is not executable)
r.   r  r   r  r   rh   statS_IXUSRST_MODEra   )r2   r   r   r6   r6   r7   test_executable  s
    
zTestScripts.test_executablec                 C   s   |  d d S )Nzdisk_usage.pyr  r9   r6   r6   r7   test_disk_usage  s    zTestScripts.test_disk_usagec                 C   s   |  d d S )Nzfree.pyr  r9   r6   r6   r7   	test_free  s    zTestScripts.test_freec                 C   s   |  d d S )Nz
meminfo.pyr  r9   r6   r6   r7   test_meminfo  s    zTestScripts.test_meminfoc                 C   s   |  dtt  d S )Nzprocinfo.pyr  r&   r.   r/   r9   r6   r6   r7   test_procinfo  s    zTestScripts.test_procinfozno usersc                 C   s   |  d d S )Nzwho.pyr  r9   r6   r6   r7   test_who  s    zTestScripts.test_whoc                 C   s   |  d d S )Nzps.pyr  r9   r6   r6   r7   test_ps  s    zTestScripts.test_psc                 C   s   |  d d S )Nz	pstree.pyr  r9   r6   r6   r7   test_pstree  s    zTestScripts.test_pstreec                 C   s   |  d d S )Nz
netstat.pyr  r9   r6   r6   r7   test_netstat  s    zTestScripts.test_netstatc                 C   s   |  d d S )Nzifconfig.pyr  r9   r6   r6   r7   test_ifconfig  s    zTestScripts.test_ifconfigr   c                 C   s   |  dtt  d S )Nzpmap.pyr  r9   r6   r6   r7   	test_pmap  s    zTestScripts.test_pmapc                 C   s*   dt   jkr| d| d d S )NZussr   zprocsmem.py)r"   r#   Zmemory_full_info_fieldsr   r  r9   r6   r6   r7   test_procsmem  s    
zTestScripts.test_procsmemc                 C   s   |  d d S )Nz
killall.pyr  r9   r6   r6   r7   test_killall  s    zTestScripts.test_killallc                 C   s   |  d d S )Nz	nettop.pyr&  r9   r6   r6   r7   test_nettop  s    zTestScripts.test_nettopc                 C   s   |  d d S )Nztop.pyr&  r9   r6   r6   r7   test_top  s    zTestScripts.test_topc                 C   s   |  d d S )Nziotop.pyr&  r9   r6   r6   r7   
test_iotop  s    zTestScripts.test_iotopc                 C   s,   |  dt  }| tt | d S )Nzpidof.py)r  r"   r#   r   r%   r&   r.   r/   )r2   outputr6   r6   r7   
test_pidof  s    zTestScripts.test_pidofzWINDOWS onlyc                 C   s   |  d d S )Nzwinservices.pyr  r9   r6   r6   r7   test_winservices  s    zTestScripts.test_winservicesc                 C   s   |  d d S )Nzcpu_distribution.pyr&  r9   r6   r6   r7   test_cpu_distribution  s    z!TestScripts.test_cpu_distributionc                 C   s    t  s| d | d d S )Nzno temperaturesztemperatures.py)r"   Zsensors_temperaturesr   r  r9   r6   r6   r7   test_temperatures  s    
zTestScripts.test_temperaturesc                 C   s    t  s| d | d d S )Nzno fanszfans.py)r"   Zsensors_fansr   r  r9   r6   r6   r7   	test_fans  s    
zTestScripts.test_fansz
no batteryc                 C   s   |  d d S )Nz
battery.pyr  r9   r6   r6   r7   test_battery  s    zTestScripts.test_batteryc                 C   s   |  d d S )Nz
sensors.pyr  r9   r6   r6   r7   test_sensors  s    zTestScripts.test_sensors)N)+r|   r}   r~   r_   staticmethodr  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   r-  r.  r   r/  r   r0  r   r   r1  r2  r6   r6   r6   r7   r   ~  sN   








r   __main__)run_from_name)5r_   r  collectionsr   r   r.   r   r   r  sysr"   r   r   r   r   r   r   r   r   Zpsutil._compatr	   Zpsutil.testsr
   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   ri   Z	PYTHON_39r   
namedtupler   r   r   r   r   r   r|   Zpsutil.tests.runnerr5  r   r6   r6   r6   r7   <module>   sf     S p 
