a
    áªlcïz  ã                   @   sd  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
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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, G d"d#„ d#e(ƒZ-G d$d%„ d%e(ƒZ.G d&d'„ d'e(ƒZ/e 0d(d)¡Z1G d*d+„ d+e(ƒZ2e	 3ej4 5e'¡ d,¡G d-d.„ d.e(ƒƒZ6e7d/kr`dd0l8m9Z9 e9e:ƒ dS )1z
Miscellaneous tests.
é    N)ÚLINUX)ÚPOSIX)ÚWINDOWS)Úbcat)Úcat)Údebug)Úisfile_strict)Úmemoize)Úmemoize_when_activated)Úparse_environ_block)Úsupports_ipv6)Úwrap_numbers)ÚPY3)ÚFileNotFoundError)Úredirect_stderr)ÚAPPVEYOR)Ú
CI_TESTING)ÚHAS_BATTERY)ÚHAS_MEMORY_MAPS)ÚHAS_NET_IO_COUNTERS)ÚHAS_SENSORS_BATTERY)ÚHAS_SENSORS_FANS)ÚHAS_SENSORS_TEMPERATURES)Ú
PYTHON_EXE)ÚROOT_DIR)ÚSCRIPTS_DIR)ÚPsutilTestCase)Úimport_module_by_path)Úmock)Úreload_module)Úshc                   @   s€   e Z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S )ÚTestSpecialMethodsc                 C   s  t  |  ¡ j¡}||ƒ}|  d|¡ |  d|j |¡ |  dt| ¡ ƒ | dd¡¡ |  d|¡ |  d|¡ | 	¡  | 
¡  ||ƒ}|  d|¡ |  d|¡ tjjt jd	t  t ¡ ¡d
J t  ¡ }||ƒ}|  d|j |¡ |  d|¡ |  d|¡ W d   ƒ n1 s0    Y  tjjt jd	t  t ¡ ¡d
J t  ¡ }||ƒ}|  d|j |¡ |  d|¡ |  d|¡ W d   ƒ n1 sˆ0    Y  tjjt jd	t  t ¡ ¡d
> t  ¡ }||ƒ}|  d|j |¡ |  d|¡ W d   ƒ n1 sö0    Y  d S )Nzpsutil.Processzpid=%sz	name='%s'zname=u'zname='zstatus=z	exitcode=zstatus='terminated'Úname©Z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© r8   úR/var/www/html/django/DPS/env/lib/python3.9/site-packages/psutil/tests/test_misc.pyÚtest_process__repr__@   sJ    
ÿÿ,ÿ,ÿz'TestSpecialMethods.test_process__repr__c                 C   s   | j td d S )N)r5   )r:   r(   ©r4   r8   r8   r9   Útest_process__str__d   s    z&TestSpecialMethods.test_process__str__c                 C   s   |   tt ¡ ƒd¡ d S )Nzpsutil.Error())ÚassertEqualÚreprr$   ÚErrorr;   r8   r8   r9   Útest_error__repr__g   s    z%TestSpecialMethods.test_error__repr__c                 C   s   |   tt ¡ ƒd¡ d S )NÚ )r=   r(   r$   r?   r;   r8   r8   r9   Útest_error__str__j   s    z$TestSpecialMethods.test_error__str__c                 C   s6   |   tt d¡ƒd¡ |   ttjddddƒd¡ d S )NéA  z=psutil.NoSuchProcess(pid=321, msg='process no longer exists')r"   Úmsg©r"   rD   z5psutil.NoSuchProcess(pid=321, name='name', msg='msg'))r=   r>   r$   r2   r;   r8   r8   r9   Útest_no_such_process__repr__m   s    þþz/TestSpecialMethods.test_no_such_process__repr__c                 C   s6   |   tt d¡ƒd¡ |   ttjddddƒd¡ d S )NrC   z"process no longer exists (pid=321)r"   rD   rE   úmsg (pid=321, name='name'))r=   r(   r$   r2   r;   r8   r8   r9   Útest_no_such_process__str__u   s    þþz.TestSpecialMethods.test_no_such_process__str__c              	   C   s8   |   tt d¡ƒd¡ |   ttjdddddƒd¡ d S )NrC   zGpsutil.ZombieProcess(pid=321, msg="PID still exists but it's a zombie")r"   é@  Úfoo©r"   ZppidrD   z?psutil.ZombieProcess(pid=321, ppid=320, name='name', msg='foo'))r=   r>   r$   r/   r;   r8   r8   r9   Útest_zombie_process__repr__}   s    þþz.TestSpecialMethods.test_zombie_process__repr__c              	   C   s8   |   tt d¡ƒd¡ |   ttjdddddƒd¡ d S )NrC   z,PID still exists but it's a zombie (pid=321)r"   rI   rJ   rK   z$foo (pid=321, ppid=320, name='name'))r=   r(   r$   r/   r;   r8   r8   r9   Útest_zombie_process__str__†   s    þþz-TestSpecialMethods.test_zombie_process__str__c                 C   s6   |   tt d¡ƒd¡ |   ttjddddƒd¡ d S )NrC   zpsutil.AccessDenied(pid=321)r"   rD   rE   z4psutil.AccessDenied(pid=321, name='name', msg='msg'))r=   r>   r$   r3   r;   r8   r8   r9   Útest_access_denied__repr__Ž   s    þþz-TestSpecialMethods.test_access_denied__repr__c                 C   s6   |   tt d¡ƒd¡ |   ttjddddƒd¡ d S )NrC   z	(pid=321)r"   rD   rE   rG   )r=   r(   r$   r3   r;   r8   r8   r9   Útest_access_denied__str__–   s    þþz,TestSpecialMethods.test_access_denied__str__c                 C   s6   |   tt d¡ƒd¡ |   ttjddddƒd¡ d S )Né   z?psutil.TimeoutExpired(seconds=5, msg='timeout after 5 seconds')rC   r"   ©r&   r"   zUpsutil.TimeoutExpired(pid=321, name='name', seconds=5, msg='timeout after 5 seconds'))r=   r>   r$   ÚTimeoutExpiredr;   r8   r8   r9   Útest_timeout_expired__repr__ž   s    þþz/TestSpecialMethods.test_timeout_expired__repr__c                 C   s6   |   tt d¡ƒd¡ |   ttjddddƒd¡ d S )NrP   ztimeout after 5 secondsrC   r"   rQ   z.timeout after 5 seconds (pid=321, name='name'))r=   r(   r$   rR   r;   r8   r8   r9   Útest_timeout_expired__str__§   s    þþz.TestSpecialMethods.test_timeout_expired__str__c                 C   s>   t  ¡ }t  ¡ }|  ||¡ d|_|  ||¡ |  |d¡ d S )N)r   r   rJ   )r$   r%   r=   Ú_identZassertNotEqual)r4   Úp1Úp2r8   r8   r9   Útest_process__eq__¯   s    z%TestSpecialMethods.test_process__eq__c                 C   s(   t t ¡ t ¡ gƒ}|  t|ƒd¡ d S )Né   )Úsetr$   r%   r=   Úlen)r4   Úsr8   r8   r9   Útest_process__hash__·   s    z'TestSpecialMethods.test_process__hash__N)Ú__name__Ú
__module__Ú__qualname__r>   r:   r<   r@   rB   rF   rH   rL   rM   rN   rO   rS   rT   rX   r]   r8   r8   r8   r9   r!   >   s   $		r!   c                   @   sP   e Z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S )ÚTestMiscc              	   C   s¨   t tƒ}|D ]~}|dv rq| d¡szt|ƒ W q tyˆ   |tjvr„tt|ƒ}|d u r^Y q|jd ur„d|j ¡ vr„|  	d| ¡‚Y q0 qtjD ]}|  
||¡ q’d S )N)ÚlongÚtestsÚtestÚPermissionErrorÚProcessLookupErrorÚ_Ú
deprecatedz%r not in psutil.__all__)Údirr$   Ú
startswithÚ
__import__ÚImportErrorÚ__all__ÚgetattrÚ__doc__ÚlowerÚfailr'   )r4   Z
dir_psutilr"   Zfunr8   r8   r9   Ú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 r8   )r(   )Ú.0Úxr8   r8   r9   Ú
<listcomp>Ý   ó    z)TestMisc.test_version.<locals>.<listcomp>)r=   Újoinr$   Úversion_infoÚ__version__r;   r8   r8   r9   Útest_versionÜ   s    ÿzTestMisc.test_versionc                 C   s"   t  ¡ }d|_|  d| ¡ ¡ d S )NÚ1rJ   )r$   r%   rJ   r*   Úas_dict)r4   r6   r8   r8   r9   Ú!test_process_as_dict_no_new_namesà   s    z*TestMisc.test_process_as_dict_no_new_namesc                    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 urt  t  | ¡¡ t | ¡}t |¡}ˆ  | |¡ d S ©N)ÚjsonÚloadsÚdumpsÚpickler=   )ÚretÚaÚbr;   r8   r9   Úcheckç   s
    

z*TestMisc.test_serialization.<locals>.checkr   )Úintervalz/proc/diskstats)r$   r%   r}   Zvirtual_memoryZswap_memoryZ	cpu_timesZcpu_times_percentÚnet_io_countersr   r0   ÚpathÚexistsr   Údisk_io_countersZdisk_partitionsÚ
disk_usageÚgetcwdÚusers)r4   r‡   r8   r;   r9   Útest_serializationæ   s    zTestMisc.test_serializationz*temporarily disabled due to setuptools bugc                 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)r0   rŠ   rx   r   r   r‹   ÚskipTestr   ÚassertRaisesÚ
SystemExitÚsetupr=   Úget_versionr$   rz   )r4   Úsetup_pyÚmoduler8   r8   r9   Útest_setup_scriptþ   s    
zTestMisc.test_setup_scriptc              	   C   s  t jjtjdtjd"}t ¡  |js*J ‚W d   ƒ n1 s>0    Y  t jjtjdt d¡d"}t ¡  |jsvJ ‚W d   ƒ n1 sŠ0    Y  t jjtjdtdL}|  	t¡ t ¡  W d   ƒ n1 sÒ0    Y  |jsæJ ‚W d   ƒ n1 sú0    Y  d S )NZcreate_timer#   rY   )
r   r-   r.   r$   r%   r3   Úcalledr/   Ú
ValueErrorr’   )r4   Úmethr8   r8   r9   Útest_ad_on_process_creation  s&    ÿ(ÿ(ÿ&z$TestMisc.test_ad_on_process_creationc              	   C   sz   t jdddX |  t¡}ttƒ W d   ƒ n1 s80    Y  |  dt|jƒ 	¡ ¡ W d   ƒ n1 sl0    Y  d S )Nzpsutil._psplatform.cext.versionz0.0.0©Zreturn_valuezversion conflict)
r   r-   r’   rl   r   r$   r'   r(   Ú	exceptionrp   )r4   Úcmr8   r8   r9   Útest_sanity_version_check  s    ÿ&z"TestMisc.test_sanity_version_checkN)r^   r_   r`   rr   r{   r~   r   ÚunittestÚskipIfr   r˜   rœ   r    r8   r8   r8   r9   ra   Á   s   

ra   c                   @   sD   e Z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 )ÚTestCommonModulec                    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callsr8   r9   rJ   )  s    
z*TestCommonModule.test_memoize.<locals>.fooé   r8   rY   )rY   )Úbarr«   é   é   r¤   )r	   Úranger=   r[   Úcache_clearro   )r4   rJ   ru   r„   Úexpectedr8   r©   r9   Útest_memoize(  s0    zTestCommonModule.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 )z9TestCommonModule.test_memoize_when_activated.<locals>.Fooc                    s   ˆ   d ¡ d S r   r¥   r;   r©   r8   r9   rJ   N  s    z=TestCommonModule.test_memoize_when_activated.<locals>.Foo.fooN)r^   r_   r`   r
   rJ   r8   r©   r8   r9   ÚFooL  s   r²   rª   rY   )rJ   r=   r[   Zcache_activateZcache_deactivate)r4   r²   Úfr8   r©   r9   Útest_memoize_when_activatedK  s     z,TestCommonModule.test_memoize_when_activatedc                 C   sÌ   dd„ }|   tdƒ|dƒdi¡ |   tdƒ|dƒd|dƒdi¡ |   td	ƒ|dƒd|dƒd
i¡ |   tdƒ|dƒd|dƒdi¡ |   tdƒ|dƒdi¡ |   tdƒ|dƒdi¡ |   tdƒ|dƒdi¡ d S )Nc                 S   s   t r|  ¡ S | S r   )r   Úupper)r\   r8   r8   r9   Úkg  s    z4TestCommonModule.test_parse_environ_block.<locals>.kza=1 r…   r|   z	a=1 b=2  r†   Ú2za=1 b=  rA   za=1 b=2  c=3 zxxx a=1 z	a=1 =b=2 za=1 b=2)r=   r   )r4   r¶   r8   r8   r9   Útest_parse_environ_blockf  s     

ÿ
ÿ
ÿ
ÿz)TestCommonModule.test_parse_environ_blockc              	   C   s¶  |   tj¡ tƒ rRt d¡(}d|_t ¡  tƒ r8J ‚W d   ƒ n1 sL0    Y  t ¡  tjdtjd$}tƒ rzJ ‚|js„J ‚W d   ƒ n1 s˜0    Y  t ¡  tjdtj	d,}tƒ rÆJ ‚t ¡  |jsØJ ‚W d   ƒ n1 sì0    Y  t ¡  tjdtj	d0}tƒ rJ ‚t ¡  |js0J ‚W d   ƒ n1 sF0    Y  n`|  
tj¡B t tjtj¡}z| d¡ W | ¡  n
| ¡  0 W d   ƒ n1 s¨0    Y  d S )Nzpsutil._common.socketFzpsutil._common.socket.socketr#   z!psutil._common.socket.socket.bind)z::1r   )Z
addCleanupr   r¯   r   r-   Úhas_ipv6ÚsocketÚerrorr™   Úgaierrorr’   ÚAF_INET6ÚSOCK_STREAMÚbindÚclose)r4   r\   Úsockr8   r8   r9   Útest_supports_ipv6y  sD    (ÿ
(ÿ
(ÿ.z#TestCommonModule.test_supports_ipv6c                 C   s8  t j t¡}t|ƒsJ ‚tt j |¡ƒr,J ‚tjdtt	j
dƒd |  tt|¡ W d   ƒ n1 sf0    Y  tjdtt	jdƒd |  tt|¡ W d   ƒ n1 sª0    Y  tjdtt	jdƒd t|ƒrØJ ‚W d   ƒ n1 sì0    Y  tjddd t|ƒrJ ‚W d   ƒ n1 s*0    Y  d S )Nzpsutil._common.os.statrJ   r#   zpsutil._common.stat.S_ISREGFr   )r0   rŠ   ÚabspathÚ__file__r   Údirnamer   r-   ÚOSErrorÚerrnoÚEPERMr’   ÚEACCESÚENOENT)r4   Z	this_filer8   r8   r9   Útest_isfile_strictœ  s"    
ÿ,
ÿ,
ÿ*z#TestCommonModule.test_isfile_strictc                 C   sH  t rddlm} nddlm} t|ƒ ƒ}tdƒ W d   ƒ n1 sF0    Y  | ¡ }| d¡sjJ |ƒ‚|  d|¡ |  t 	dd¡|¡ t|ƒ ƒ}tt
dƒƒ W d   ƒ n1 s¶0    Y  | ¡ }|  d|¡ |  d	|¡ t|ƒ ƒ(}td
dƒ}d|_t|ƒ W d   ƒ n1 s0    Y  | ¡ }|  d|¡ |  d|¡ d S )Nr   )ÚStringIOZhellozpsutil-debugz.pycú.pyzthis is an errorzignoring ValueErrorz'this is an error'rª   zno such filez/foo)r   ÚiorÌ   r   r   Úgetvaluerj   r'   rÄ   r)   rš   rÆ   Úfilename)r4   rÌ   r³   rD   Úexcr8   r8   r9   Ú
test_debug¬  s*    &*
(zTestCommonModule.test_debugc                 C   s´   |   ¡ }t|dƒ}| d¡ W d   ƒ n1 s20    Y  |  t|ƒd¡ |  t|ƒd¡ |  tt|d ¡ |  tt|d ¡ |  t|d ddd¡ |  t|d ddd¡ d S )NÚwtrJ   s   fooz-invalidr«   )Úfallback)Z
get_testfnÚopenÚwriter=   r   r   r’   r   )r4   Ztestfnr³   r8   r8   r9   Útest_cat_bcatÉ  s    (zTestCommonModule.test_cat_bcatN)
r^   r_   r`   r±   r´   r¸   rÂ   rË   rÒ   r×   r8   r8   r8   r9   r£   &  s   ##r£   rJ   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   r¯   r;   r8   r8   r9   ÚsetUpß  s    zTestWrapNumbers.setUpc                 C   s&   dt dddƒi}|  t|dƒ|¡ d S ©NÚdisk1rP   Údisk_io©Úntr=   r   ©r4   Úinputr8   r8   r9   Ú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ß   r8   r8   r9   Ú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Û   rP   rÜ   é
   é   é   é   é   rÝ   rß   r8   r8   r9   Ú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ß   r8   r8   r9   Ú	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Û   rP   rÜ   é   ©rÛ   Zdisk2é   rÝ   rß   r8   r8   r9   Ú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ß   r8   r8   r9   Ú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 r­   é   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   )r4   ÚdÚoutr8   r8   r9   Útest_real_dataF  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Û   rP   rÜ   r   rY   rª   ©rÞ   r   Ú
cache_infor=   ©r4   rà   Úcacher8   r8   r9   Útest_cache_first_callW  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Û   rP   rÜ   rã   r   rY   ©)rÛ   r   )rÛ   rY   ©rÛ   rª   rª   r  r  r8   r8   r9   Ú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   rY   r  rª   r  c                     sF   t  ¡ } ˆ  | d dddddœi¡ ˆ  | d ddtdgƒii¡ d S )	NrY   rÜ   r   ré   r  rª   rÛ   r  )r   r  r=   rZ   )r	  r;   r8   r9   Úassert_z  s    ÿþ
ÿz0TestWrapNumbers.test_cache_wrap.<locals>.assert_rë   rå   rì   )rÞ   r   r  r=   rZ   )r4   rà   r	  r  r8   r;   r9   Útest_cache_wrapk  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Û   rP   rÜ   rò   ró   r   rY   r  rª   r  r  r8   r8   r9   Útest_cache_changing_keys›  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Û   rP   rÜ   z?!?)rÞ   r   r¯   r=   r  rß   r8   r8   r9   Útest_cache_clear¨  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'   r¯   r*   r=   )r4   Úcachesr	  r8   r8   r9   Útest_cache_clear_public_apis±  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¡   r¢   r   r  r8   r8   r8   r9   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i |¤Ž ¡ }W nF tyŒ } z.dt	|ƒv rvt	|ƒW  Y d }~S ‚ W Y d }~n
d }~0 0 |sšJ |ƒ‚|S )Nz%sr3   )
r0   rŠ   rx   r   r   r¦   r    ÚstripÚRuntimeErrorr(   )Úexer§   r¨   ÚcmdÚargr  Úerrr8   r8   r9   Úassert_stdoutÑ  s    zTestScripts.assert_stdoutNc                 C   sf   t j t| ¡} tr"t| ddd}n
t| dƒ}| | ¡ }W d   ƒ n1 sN0    Y  t |¡ d S )NÚrtÚutf8)Úencoding)	r0   rŠ   rx   r   r   rÕ   ÚreadÚastÚparse)r  r§   r³   Úsrcr8   r8   r9   Úassert_syntaxá  s    
&zTestScripts.assert_syntaxc                 C   sV   t | ƒ}t t¡D ]>}| d¡rdtj |¡d  |vr|  dtj t|¡ ¡‚qd S )NrÍ   Ztest_r   zno test defined for %r script)	ri   r0   Úlistdirr   ÚendswithrŠ   Úsplitextrq   rx   )r4   Zmethsr"   r8   r8   r9   Útest_coverageì  s    
ÿzTestScripts.test_coveragez
POSIX onlyc                 C   s`   t  t¡D ]P\}}}|D ]@}| d¡rt j ||¡}tjt  |¡tj @ s|  	d| ¡‚qq
d S )NrÍ   z%r is not executable)
r0   Úwalkr   r&  rŠ   rx   ÚstatÚS_IXUSRÚST_MODErq   )r4   ÚrootÚdirsÚfilesÚfilerŠ   r8   r8   r9   Útest_executableö  s    
zTestScripts.test_executablec                 C   s   |   d¡ d S )Nzdisk_usage.py©r  r;   r8   r8   r9   Útest_disk_usageÿ  s    zTestScripts.test_disk_usagec                 C   s   |   d¡ d S )Nzfree.pyr2  r;   r8   r8   r9   Ú	test_free  s    zTestScripts.test_freec                 C   s   |   d¡ d S )Nz
meminfo.pyr2  r;   r8   r8   r9   Útest_meminfo  s    zTestScripts.test_meminfoc                 C   s   |   dtt ¡ ƒ¡ d S )Nzprocinfo.py©r  r(   r0   r1   r;   r8   r8   r9   Útest_procinfo  s    zTestScripts.test_procinfozno usersc                 C   s   |   d¡ d S )Nzwho.pyr2  r;   r8   r8   r9   Útest_who  s    zTestScripts.test_whoc                 C   s   |   d¡ d S )Nzps.pyr2  r;   r8   r8   r9   Útest_ps  s    zTestScripts.test_psc                 C   s   |   d¡ d S )Nz	pstree.pyr2  r;   r8   r8   r9   Útest_pstree  s    zTestScripts.test_pstreec                 C   s   |   d¡ d S )Nz
netstat.pyr2  r;   r8   r8   r9   Útest_netstat  s    zTestScripts.test_netstatc                 C   s   |   d¡ d S )Nzifconfig.pyr2  r;   r8   r8   r9   Útest_ifconfig  s    zTestScripts.test_ifconfigr  c                 C   s   |   dtt ¡ ƒ¡ d S )Nzpmap.pyr6  r;   r8   r8   r9   Ú	test_pmap  s    zTestScripts.test_pmapc                 C   s*   dt  ¡  ¡ jvr|  d¡‚|  d¡ d S )NZussr  zprocsmem.py)r$   r%   Zmemory_full_infoÚ_fieldsr‘   r  r;   r8   r8   r9   Útest_procsmem  s    
zTestScripts.test_procsmemc                 C   s   |   d¡ d S )Nz
killall.py©r$  r;   r8   r8   r9   Útest_killall$  s    zTestScripts.test_killallc                 C   s   |   d¡ d S )Nz	nettop.pyr@  r;   r8   r8   r9   Útest_nettop'  s    zTestScripts.test_nettopc                 C   s   |   d¡ d S )Nztop.pyr@  r;   r8   r8   r9   Útest_top*  s    zTestScripts.test_topc                 C   s   |   d¡ d S )Nziotop.pyr@  r;   r8   r8   r9   Ú
test_iotop-  s    zTestScripts.test_iotopc                 C   s,   |   dt ¡  ¡ ¡}|  tt ¡ ƒ|¡ d S )Nzpidof.py)r  r$   r%   r"   r'   r(   r0   r1   )r4   Úoutputr8   r8   r9   Ú
test_pidof0  s    zTestScripts.test_pidofzWINDOWS onlyc                 C   s   |   d¡ d S )Nzwinservices.pyr2  r;   r8   r8   r9   Útest_winservices4  s    zTestScripts.test_winservicesc                 C   s   |   d¡ d S )Nzcpu_distribution.pyr@  r;   r8   r8   r9   Útest_cpu_distribution8  s    z!TestScripts.test_cpu_distributionc                 C   s    t  ¡ s|  d¡ |  d¡ d S )Nzno temperaturesztemperatures.py)r$   Zsensors_temperaturesr‘   r  r;   r8   r8   r9   Ú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  r;   r8   r8   r9   Ú	test_fansA  s    
zTestScripts.test_fansz
no batteryc                 C   s   |   d¡ d S )Nz
battery.pyr2  r;   r8   r8   r9   Útest_batteryG  s    zTestScripts.test_batteryc                 C   s   |   d¡ d S )Nz
sensors.pyr2  r;   r8   r8   r9   Útest_sensorsL  s    zTestScripts.test_sensors)N)+r^   r_   r`   ro   Ústaticmethodr  r$  r(  r¡   r¢   r   r1  r3  r4  r5  r7  r   r$   r   r8  r9  r:  r;  r<  r   r=  r?  rA  rB  rC  rD  rF  r   rG  rH  r   rI  r   rJ  r   r   rK  rL  r8   r8   r8   r9   r  Ì  sN   








r  Ú__main__)Úrun_from_name);ro   r!  ÚcollectionsrÇ   r€   r0   rƒ   rº   r*  r¡   r$   Zpsutil.testsr   r   r   Zpsutil._commonr   r   r   r   r	   r
   r   r   r   Zpsutil._compatr   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r    r!   ra   r£   Ú
namedtuplerÞ   rØ   r¢   rŠ   r‹   r  r^   Zpsutil.tests.runnerrO  rÄ   r8   r8   r8   r9   Ú<module>   st    e 5 pÿ 
