£Á°è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
    =_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 d Q R X tjjt jd	t t d
@ t  }||}| d|j | | d| | d| W d Q R X tjjt jd	t t d
4 t  }||}| d|j | | d| W d 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 r5   I/opt/alt/python37/lib64/python3.7/site-packages/psutil/tests/test_misc.pytest_process__repr__=   sB    zTestMisc.test_process__repr__c             C   s   | j td d S )N)r2   )r7   r%   )r1   r5   r5   r6   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 )NiA  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!   r/   )r1   r2   r5   r5   r6   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 )NiA  zEpsutil.ZombieProcess process still exists but it's a zombie (pid=321)r9   )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;   r<   r!   r,   )r1   r2   r5   r5   r6   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 )NiA  zpsutil.AccessDenied (pid=321)r9   )r   z)psutil.AccessDenied (pid=321, name='foo'))r:   zpsutil.AccessDenied foo)r;   r<   r!   r0   )r1   r2   r5   r5   r6   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 )	NiA  z/psutil.TimeoutExpired timeout after 321 secondso   )r#   z9psutil.TimeoutExpired timeout after 321 seconds (pid=111)r9   )r#   r   zEpsutil.TimeoutExpired timeout after 321 seconds (pid=111, name='foo'))r;   r<   r!   TimeoutExpired)r1   r2   r5   r5   r6   test_timeout_expired__repr__   s    z%TestMisc.test_timeout_expired__repr__c             C   s>   t  }t  }| || d|_| || | |d d S )N)r   r   r9   )r!   r"   r;   _identZassertNotEqual)r1   p1p2r5   r5   r6   test_process__eq__   s    zTestMisc.test_process__eq__c             C   s(   t t t g}| t|d d S )Nr>   )setr!   r"   r;   len)r1   sr5   r5   r6   test_process__hash__   s    zTestMisc.test_process__hash__c          	   C   s   t t}x|D ]~}|dkrq|dsyt| W q tk
r   |tjkrtt|}|d kr`w|jd k	rd|j kr| 	d|  Y qX qW xtjD ]}| 
|| qW d S )N)longteststestPermissionErrorProcessLookupError_Z
deprecatedz%r not in psutil.__all__)dirr!   
startswith
__import__ImportError__all__getattr__doc__lowerfailr$   )r1   Z
dir_psutilr   funr5   r5   r6   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 r5   )r%   ).0xr5   r5   r6   
<listcomp>   s    z)TestMisc.test_version.<locals>.<listcomp>)r;   joinr!   version_info__version__)r1   r5   r5   r6   test_version   s    zTestMisc.test_versionc             C   s"   t  }d|_| d|  d S )N1r9   )r!   r"   r9   r'   as_dict)r1   r3   r5   r5   r6   !test_process_as_dict_no_new_names   s    z*TestMisc.test_process_as_dict_no_new_namesc                s  t  fdd}g  x:tdD ].}| }di f}| || | t d qW x<tdD ]0}|d}di f}| || | t d qZW xDtdD ]8}|ddd}dddif}| || | t d	 qW |  | }di f}| || | t d
 | |jd d S )Nc                 s     d | |fS )zfoo docstringN)append)argskwargs)callsr5   r6   r9      s    
z"TestMisc.test_memoize.<locals>.foor   r5   r>   )r>   )barrm   r      zfoo docstring)r   ranger;   rJ   cache_clearrY   )r1   r9   r`   retZexpectedr5   )rl   r6   test_memoize   s.    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 )N)ri   )r1   )rl   r5   r6   r9      s    z5TestMisc.test_memoize_when_activated.<locals>.Foo.fooN)__name__
__module____qualname__r   r9   r5   )rl   r5   r6   Foo   s   rv   r   r>   )r9   r;   rJ   cache_activatecache_deactivate)r1   rv   fr5   )rl   r6   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 )N)r   upper)rK   r5   r5   r6   k  s    z,TestMisc.test_parse_environ_block.<locals>.kza=1 arf   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;   )r1   r{   r}   r5   r5   r6   test_parse_environ_block  s    



z!TestMisc.test_parse_environ_blockc          	   C   s>  |  tj t rtd}d|_t  t r6tW d Q R X t  tjdtjd}t rdt|j	sntW d Q R X t  tjdtj
d"}t rtt  |j	stW d Q R X t  tjdtj
d"}t rtt  |j	stW d Q R X n@| t0 ttjtj}z|d W d |  X W d Q R X d S )Nzpsutil._common.socketFzpsutil._common.socket.socket)r    z!psutil._common.socket.socket.bind)z::1r   )Z
addCleanupr   rp   r   r*   has_ipv6AssertionErrorsocketerrorcalledgaierrorassertRaises	ExceptionAF_INET6SOCK_STREAMbindclose)r1   rK   sockr5   r5   r6   test_supports_ipv6  s8    


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 d Q R X tj	dt
tjdd | t
|| W d Q R X tj	dt
tjdd ||rtW d Q R X tj	ddd ||rtW d Q R X d S )	Nr   )isfile_strictzpsutil._common.os.statr9   )r    zpsutil._common.stat.S_ISREGF)return_value)r   r   r-   pathabspath__file__r   dirnamer   r*   OSErrorerrnoEPERMr   EACCESENOENT)r1   r   Z	this_filer5   r5   r6   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 )N)jsonloadsdumpspickler;   )rq   r~   r   )r1   r5   r6   checkO  s
    

z*TestMisc.test_serialization.<locals>.checkr   )intervalz/proc/diskstats)r!   r"   rg   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)r1   r   r5   )r1   r6   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   rb   r   r   r   skipTestr   r   
SystemExitsetupr;   get_versionr!   rd   )r1   Zsetup_pymoduler5   r5   r6   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 d Q R X t jjtjdtdd}t  |jsbtW d Q R X t jjtjdt	d.}| 
t	 t  W d Q R X |jstW d Q R X d S )NZcreate_time)r    r>   )r   r*   r+   r!   r"   r0   r   r   r,   
ValueErrorr   )r1   methr5   r5   r6   test_ad_on_process_creationm  s    
z$TestMisc.test_ad_on_process_creationc          
   C   sR   t jddd: | t}tt W d Q R X | dt|j	  W d Q R X d S )Nzpsutil._psplatform.cext.versionz0.0.0)r   zversion conflict)
r   r*   r   rV   r   r!   r$   r%   	exceptionrZ   )r1   cmr5   r5   r6   test_sanity_version_check~  s
    z"TestMisc.test_sanity_version_checkN)rs   rt   ru   r<   r7   r8   r=   r@   rA   rD   rH   rL   r]   re   rh   rr   rz   r   r   r   r   r   r   r   r5   r5   r5   r6   r   ;   s(   $##r   r9   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 )N)r   rp   )r1   r5   r5   r6   setUp  s    zTestWrapNumbers.setUpc             C   s&   dt dddi}| t|d| d S )Ndisk1   disk_io)ntr;   r   )r1   inputr5   r5   r6   test_first_call  s    zTestWrapNumbers.test_first_callc             C   s8   dt dddi}| t|d| | t|d| d S )Nr   r   r   )r   r;   r   )r1   r   r5   r5   r6   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;   r   )r1   r   r5   r5   r6   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;   r   )r1   r   r5   r5   r6   	test_wrap  s4    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   disk2   )r   r;   r   )r1   r   r5   r5   r6   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   r;   r   )r1   r   r5   r5   r6   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,  i  i  i#  iR  i  i  i iȷ  )	i  r   i tU i   i  r   r   r   r   )	6   r   i $ i N rn      r   i     )	iU	  i  i"  r   i  i4  i  i  i\  )nvme0n1Z	nvme0n1p1Z	nvme0n1p2Z	nvme0n1p3r   )	r   i  i  i#  iR  i  i  i iȷ  r   r   i  )r;   r   )r1   doutr5   r5   r6   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   r>   r   )r   r   
cache_infor;   )r1   r   cacher5   r5   r6   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   r>   ))r   r   )r   r>   )r   r   r   )r   r   r   r;   )r1   r   r   r5   r5   r6   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   r>   ))r   r   )r   r>   )r   r   r   )r   r   c                 sF   t  }  | d dddddi  | d ddtdgii d S )	Nr>   r   r   r   ))r   r   )r   r>   )r   r   r   r   )r   r   )r   r   r;   rI   )r   )r1   r5   r6   assert_,  s    
z0TestWrapNumbers.test_cache_wrap.<locals>.assert_r   r   r   )r   r   r   r;   rI   )r1   r   r   r   r5   )r1   r6   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   r   r>   ))r   r   )r   r>   )r   r   r   )r   r   r   r;   )r1   r   r   r5   r5   r6   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   rp   r;   r   )r1   r   r5   r5   r6   test_cache_clearZ  s    



z TestWrapNumbers.test_cache_clearznot supportedc             C   s   t  rt  s| dS t   t   t }x$|D ]}| d| | d| q8W t j  t }x$|D ]}| d| | d| qpW t 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$   rp   r'   r;   )r1   Zcachesr   r5   r5   r6   test_cache_clear_public_apisc  s     




z,TestWrapNumbers.test_cache_clear_public_apisN)rs   rt   ru   r   ZtearDownr   r   r   r   r   r   r   r   r   r   r   r   r   skipIfr   r   r5   r5   r5   r6   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}x|D ]}|| q W yt|f| }W n8 tk
r~ } zdt	|krlt	|S  W d d }~X Y nX |st
||S )Nz%sr0   )r-   r   rb   r   r   ri   r   stripRuntimeErrorr%   r   )exerj   rk   cmdargr   errr5   r5   r6   assert_stdout  s    
zTestScripts.assert_stdoutNc          	   C   sR   t jt| } tr"t| ddd}n
t| d}| | }W d Q R X t| d S )Nrtutf8)encoding)	r-   r   rb   r   r	   openreadastparse)r   rj   ry   srcr5   r5   r6   assert_syntax  s    
zTestScripts.assert_syntaxc             C   sZ   t | }xLttD ]>}|drdtj|d  |kr| dtjt|  qW d S )Nz.pyZtest_r   zno test defined for %r script)	rS   r-   listdirr   endswithr   splitextr[   rb   )r1   Zmethsr   r5   r5   r6   test_coverage  s    
zTestScripts.test_coveragez
POSIX onlyc             C   sT   xNt tD ]@}|drt jt|}tjt |tj @ s| 	d|  qW d S )Nz.pyz%r is not executable)
r-   r   r   r   r   rb   statS_IXUSRST_MODEr[   )r1   r   r   r5   r5   r6   test_executable  s
    
zTestScripts.test_executablec             C   s   |  d d S )Nzdisk_usage.py)r   )r1   r5   r5   r6   test_disk_usage  s    zTestScripts.test_disk_usagec             C   s   |  d d S )Nzfree.py)r   )r1   r5   r5   r6   	test_free  s    zTestScripts.test_freec             C   s   |  d d S )Nz
meminfo.py)r   )r1   r5   r5   r6   test_meminfo  s    zTestScripts.test_meminfoc             C   s   |  dtt  d S )Nzprocinfo.py)r   r%   r-   r.   )r1   r5   r5   r6   test_procinfo  s    zTestScripts.test_procinfozno usersc             C   s   |  d d S )Nzwho.py)r   )r1   r5   r5   r6   test_who  s    zTestScripts.test_whoc             C   s   |  d d S )Nzps.py)r   )r1   r5   r5   r6   test_ps  s    zTestScripts.test_psc             C   s   |  d d S )Nz	pstree.py)r   )r1   r5   r5   r6   test_pstree  s    zTestScripts.test_pstreec             C   s   |  d d S )Nz
netstat.py)r   )r1   r5   r5   r6   test_netstat  s    zTestScripts.test_netstatc             C   s   |  d d S )Nzifconfig.py)r   )r1   r5   r5   r6   test_ifconfig  s    zTestScripts.test_ifconfigznot supportedc             C   s   |  dtt  d S )Nzpmap.py)r   r%   r-   r.   )r1   r5   r5   r6   	test_pmap  s    zTestScripts.test_pmapc             C   s*   dt   jkr| d| d d S )NZussznot supportedzprocsmem.py)r!   r"   Zmemory_full_info_fieldsr   r   )r1   r5   r5   r6   test_procsmem  s    
zTestScripts.test_procsmemc             C   s   |  d d S )Nz
killall.py)r   )r1   r5   r5   r6   test_killall  s    zTestScripts.test_killallc             C   s   |  d d S )Nz	nettop.py)r   )r1   r5   r5   r6   test_nettop  s    zTestScripts.test_nettopc             C   s   |  d d S )Nztop.py)r   )r1   r5   r5   r6   test_top  s    zTestScripts.test_topc             C   s   |  d d S )Nziotop.py)r   )r1   r5   r5   r6   
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.   )r1   outputr5   r5   r6   
test_pidof  s    zTestScripts.test_pidofzWINDOWS onlyc             C   s   |  d d S )Nzwinservices.py)r   )r1   r5   r5   r6   test_winservices  s    zTestScripts.test_winservicesc             C   s   |  d d S )Nzcpu_distribution.py)r   )r1   r5   r5   r6   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   )r1   r5   r5   r6   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   )r1   r5   r5   r6   	test_fans  s    
zTestScripts.test_fansz
no batteryc             C   s   |  d d S )Nz
battery.py)r   )r1   r5   r5   r6   test_battery  s    zTestScripts.test_batteryc             C   s   |  d d S )Nz
sensors.py)r   )r1   r5   r5   r6   test_sensors  s    zTestScripts.test_sensors)N)+rs   rt   ru   rY   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   r  r   r   r  r  r5   r5   r5   r6   r   ~  s<   

r   __main__)run_from_name)5rY   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   rc   Z	PYTHON_39r   
namedtupler   r   r   r   r   r   rs   Zpsutil.tests.runnerr  r   r5   r5   r5   r6   <module>
   sd     S p 
