<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0-alpha1/dist/css/bootstrap.min.css" rel="stylesheet"
        integrity="sha384-GLhlTQ8iRABdZLl6O3oVMWSktQOp6b7In1Zl3/Jr59b6EGGoI1aFkw7cmDA6j6gD" crossorigin="anonymous">
    <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.3.0/css/all.min.css"
        integrity="sha512-SzlrxWUlpfuzQ+pcUCosxcglQRNAq/DZjVsC0lE40xsADsfeQoEypE+enwcOiGjk/bSuGGKHEyjSoQ1zVisanQ=="
        crossorigin="anonymous" referrerpolicy="no-referrer" />
</head>
</html>
3
JZ                 @   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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m0Z0 dd&lm1Z1 dd'lm2Z2 dd(lm3Z3 dd)lm4Z4 dd*lm5Z5 dd+lm6Z6 dd,lm7Z7 dd-lm8Z8 dd.lm9Z9 dd/lm:Z: dd0lm;Z; dd1lm<Z< ddl
Z
ddlZ
G d2d3 d3e8j=Z>ej?d4d5Z@G d6d7 d7e8j=ZAe8jBe6d8e8jBe7oejCjDe2 d9G d:d; d;e8j=ZEG d<d= d=e8j=ZFG d>d? d?e8j=ZGG d@dA dAe8j=ZHG dBdC dCe8j=ZIG dDdE dEe8j=ZJG dFdG dGe8j=ZKeLdHkrxe0eM dS )Iz
Miscellaneous tests.
    N)LINUX)POSIX)WINDOWS)memoize)memoize_when_activated)supports_ipv6)wrap_numbers)PY3)APPVEYOR)bind_socket)bind_unix_socket)
call_until)chdir)create_proc_children_pair)create_sockets)create_zombie_proc)DEVNULL)get_free_port)get_test_subprocess)HAS_BATTERY)HAS_CONNECTIONS_UNIX)HAS_MEMORY_FULL_INFO)HAS_MEMORY_MAPS)HAS_SENSORS_BATTERY)HAS_SENSORS_FANS)HAS_SENSORS_TEMPERATURES)import_module_by_path)is_namedtuple)mock)
PYTHON_EXE)reap_children)reload_module)retry)ROOT_DIR)run_test_module_by_name)safe_rmpath)SCRIPTS_DIR)sh)tcp_socketpair)TESTFN)TOX)TRAVIS)unittest)unix_socket_path)unix_socketpair)wait_for_file)wait_for_pidc               @   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   sn  t j }||}| jd| | jd|j | | jd| | j|j | tjjt jdt jt	j
 d@ t j }||}| jd|j | | jd| | jd| W d Q R X tjjt jdt jt	j
 d@ t j }||}| jd|j | | jd| | jd| W d Q R X tjjt jdt jt	j
 d4 t j }||}| jd|j | | jd| W d Q R X d S )Nzpsutil.Processzpid=%szname=name)side_effectZzombieZ
terminated)psutilProcessassertInpidr2   r   patchobjectZombieProcessosgetpidassertNotInNoSuchProcessAccessDenied)selffuncpr rD   !/usr/lib64/python3.6/test_misc.pytest_process__repr__O   s4    zTestMisc.test_process__repr__c             C   s   | j td d S )N)rA   )rF   str)r@   rD   rD   rE   test_process__str__k   s    zTestMisc.test_process__str__c             C   sN   | j ttjdd | j ttjdddd | j ttjdddd d S )NiA  z7psutil.NoSuchProcess process no longer exists (pid=321)foo)r2   zCpsutil.NoSuchProcess process no longer exists (pid=321, name='foo'))msgzpsutil.NoSuchProcess foo)assertEqualreprr4   r>   )r@   rA   rD   rD   rE   test_no_such_process__repr__n   s    z%TestMisc.test_no_such_process__repr__c             C   sj   | j ttjdd | j ttjdddd | j ttjddddd | j ttjddd	d
 d S )NiA  zEpsutil.ZombieProcess process still exists but it's a zombie (pid=321)rI   )r2   zQpsutil.ZombieProcess process still exists but it's a zombie (pid=321, name='foo')   )r2   ppidzYpsutil.ZombieProcess process still exists but it's a zombie (pid=321, name='foo', ppid=1))rJ   zpsutil.ZombieProcess foo)rK   rL   r4   r:   )r@   rA   rD   rD   rE   test_zombie_process__repr__z   s    z$TestMisc.test_zombie_process__repr__c             C   sN   | j ttjdd | j ttjdddd | j ttjdddd d S )NiA  zpsutil.AccessDenied (pid=321)rI   )r2   z)psutil.AccessDenied (pid=321, name='foo'))rJ   zpsutil.AccessDenied foo)rK   rL   r4   r?   )r@   rA   rD   rD   rE   test_access_denied__repr__   s    z#TestMisc.test_access_denied__repr__c             C   sP   | j ttjdd | j ttjdddd | j ttjddddd d S )	NiA  z/psutil.TimeoutExpired timeout after 321 secondso   )r7   z9psutil.TimeoutExpired timeout after 321 seconds (pid=111)rI   )r7   r2   zEpsutil.TimeoutExpired timeout after 321 seconds (pid=111, name='foo'))rK   rL   r4   ZTimeoutExpired)r@   rA   rD   rD   rE   test_timeout_expired__repr__   s    z%TestMisc.test_timeout_expired__repr__c             C   s>   t j }t j }| j|| d|_| j|| | j|d d S )Nr   rI   )r   r   )r4   r5   rK   Z_identassertNotEqual)r@   p1p2rD   rD   rE   test_process__eq__   s    zTestMisc.test_process__eq__c             C   s(   t tj tj g}| jt|d d S )NrN   )setr4   r5   rK   len)r@   srD   rD   rE   test_process__hash__   s    zTestMisc.test_process__hash__c             C   s   t t}x|D ]~}|dkrq|jd
syt| W q tk
r   |tjkrtt|}|d kr`w|jd k	rd|jj kr| j	d|  Y qX qW xtjD ]}| j
|| qW d S )Ncallableerror
namedtupletestslongtestNUM_CPUS	BOOT_TIMETOTAL_PHYMEM_Z
deprecatedz%r not in psutil.__all__)	r\   r]   r^   r_   r`   ra   rb   rc   rd   )dirr4   
startswith
__import__ImportError__all__getattr__doc__lowerfailr6   )r@   Z
dir_psutilr2   ZfunrD   rD   rE   test__all__   s&    
 



zTestMisc.test__all__c             C   s$   | j djdd tjD tj d S )N.c             S   s   g | ]}t |qS rD   )rG   ).0xrD   rD   rE   
<listcomp>   s    z)TestMisc.test_version.<locals>.<listcomp>)rK   joinr4   version_info__version__)r@   rD   rD   rE   test_version   s    zTestMisc.test_versionc             C   s"   t j }d|_| jd|j  d S )N1rI   )r4   r5   rI   r=   as_dict)r@   rB   rD   rD   rE   !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 ].}| }f i f}| j|| | jt d qW x<tdD ]0}|d}d
i f}| j|| | jt d qZW xDtdD ]8}|ddd}dddif}| j|| | jt d qW |j  | }f i f}| j|| | jt d | j|jd	 d S )Nc                 s    j d | |fS )zfoo docstringN)append)argskwargs)callsrD   rE   rI      s    
z"TestMisc.test_memoize.<locals>.foo   rN   )barr         zfoo docstring)rN   )rN   )r   rangerK   rY   cache_clearrl   )r@   rI   rr   retZexpectedrD   )r~   rE   test_memoize   s.    zTestMisc.test_memoizec                s   G  fddd}| }g  |j   |j   | jt d g  |j j  |j   |j   | jt d g  |j j  |j   |j   | 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    j d  d S )N)r{   )r@   )r~   rD   rE   rI      s    z5TestMisc.test_memoize_when_activated.<locals>.Foo.fooN)__name__
__module____qualname__r   rI   rD   )r~   rD   rE   Foo   s   r   r   rN   )rI   rK   rY   Zcache_activateZcache_deactivate)r@   r   frD   )r~   rE   test_memoize_when_activated   s     

z$TestMisc.test_memoize_when_activatedc             C   s   ddl m} dd }| j|d|ddi | j|d|dd|d	d
i | j|d|dd|d	di | j|d|dd|d	d
i | j|d|ddi | j|d|ddi | j|d|ddi d S )Nr   )parse_environ_blockc             S   s   t r| j S | S )N)r   upper)rZ   rD   rD   rE   k  s    z,TestMisc.test_parse_environ_block.<locals>.kza=1 arx   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   rK   )r@   r   r   rD   rD   rE   test_parse_environ_block  s    



z!TestMisc.test_parse_environ_blockc             C   s   | j tj t rtjd}d|_tj  W d Q R X tj  tjdtjd}W d Q R X tj  tjdtjd}tj  W d Q R X tj  tjdtjd}tj  W d Q R X n0| j	t
  tjtjtj}|jd W d Q R X d S )	Nzpsutil._common.socketFzpsutil._common.socket.socket)r3   z!psutil._common.socket.socket.bind::1r   )r   r   )
addCleanupr   r   r   r8   Zhas_ipv6socketr]   ZgaierrorassertRaises	ExceptionAF_INET6SOCK_STREAMZbind)r@   rZ   sockrD   rD   rE   test_supports_ipv6%  s.    


zTestMisc.test_supports_ipv6c             C   s   ddl m} tjjt}tjdtt	j
dd | jt|| W d Q R X tjdtt	jdd | jt|| W d Q R X tjdtt	jdd W d Q R X tjddd W d Q R X d S )	Nr   )isfile_strictzpsutil._common.os.statrI   )r3   zpsutil._common.stat.S_ISREGF)return_value)r   r   r;   pathabspath__file__r   r8   OSErrorerrnoZEPERMr   ZEACCESEINVAL)r@   r   Z	this_filerD   rD   rE   test_isfile_strictE  s    
zTestMisc.test_isfile_strictc                s    fdd}|t j j  |t j  |t j  |t j  |t jdd |t j  trpt	j
jd rpnts|t j  |t j  |t jt	j  |t j  d S )Nc                s<   t d k	rt jt j|  tj| }tj|} j| | d S )N)jsonloadsdumpspicklerK   )r   r   r   )r@   rD   rE   checkW  s
    

z*TestMisc.test_serialization.<locals>.checkr   )intervalz/proc/diskstats)r4   r5   ry   Zvirtual_memoryZswap_memoryZ	cpu_timesZcpu_times_percentnet_io_countersr   r;   r   existsr
   disk_io_countersZdisk_partitionsZ
disk_usagegetcwdusers)r@   r   rD   )r@   rE   test_serializationV  s    zTestMisc.test_serializationc             C   sV   t jjtd}tr*t jj| r*| jdS t|}| jt	|j
 | j|j tj d S )Nzsetup.pyzcan't find setup.py)r;   r   rt   r#   r+   r   ZskipTestr   r   
SystemExitZsetuprK   Zget_versionr4   rv   )r@   Zsetup_pymodulerD   rD   rE   test_setup_scriptm  s    
zTestMisc.test_setup_scriptc             C   s   t jjtjdtjd}tj  W d Q R X t jjtjdtjdd}tj  W d Q R X t jjtjdtd$}| jt tj  W d Q R X W d Q R X d S )NZcreate_time)r3   rN   )	r   r8   r9   r4   r5   r?   r:   
ValueErrorr   )r@   methrD   rD   rE   test_ad_on_process_creationu  s    


z$TestMisc.test_ad_on_process_creationc             C   sR   t jddd: | jt}tt W d Q R X | jdt|jj	  W d Q R X d S )Nzpsutil._psplatform.cext.versionz0.0.0)r   zversion conflict)
r   r8   r   ri   r!   r4   r6   rG   	exceptionrm   )r@   cmrD   rD   rE   test_sanity_version_check  s
    z"TestMisc.test_sanity_version_checkN)r   r   r   rL   rF   rH   rM   rP   rQ   rS   rW   r[   ro   rw   rz   r   r   r   r   r   r   r   r   r   rD   rD   rD   rE   r1   M   s(   # r1   rI   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jej  pej  ddd ZdS )TestWrapNumbersc             C   s   t j  d S )N)r   r   )r@   rD   rD   rE   setUp  s    zTestWrapNumbers.setUpc             C   s&   dt dddi}| jt|d| d S )Ndisk1   disk_io)ntrK   r   )r@   inputrD   rD   rE   test_first_call  s    zTestWrapNumbers.test_first_callc             C   s8   dt dddi}| jt|d| | jt|d| d S )Nr   r   r   )r   rK   r   )r@   r   rD   rD   rE   test_input_hasnt_changed  s    z(TestWrapNumbers.test_input_hasnt_changedc             C   s   dt dddi}| jt|d| dt dddi}| jt|d| dt dddi}| jt|d| dt dddi}| jt|d| d S )	Nr   r   r   
               )r   rK   r   )r@   r   rD   rD   rE   test_increase_but_no_wrap  s    z)TestWrapNumbers.test_increase_but_no_wrapc             C   s  dt dddi}| jt|d| dt dddi}| jt|ddt dddi dt dddi}| jt|ddt dddi dt dddi}| jt|ddt dddi dt dddi}| jt|ddt ddd	i dt dddi}| jt|ddt ddd	i dt d
ddi}| jt|ddt ddd	i dt dddi}| jt|ddt ddd	i dt dddi}| jt|ddt ddd	i d S )Nr   d   r   r   n   Z      r      2      (   )r   rK   r   )r@   r   rD   rD   rE   	test_wrap  s4    zTestWrapNumbers.test_wrapc             C   st   dt dddi}| jt|d| t dddt dddd}| jt|d| dt dddi}| jt|d| d S )Nr   r   r      )r   disk2   )r   rK   r   )r@   r   rD   rD   rE   test_changing_keys  s    
z"TestWrapNumbers.test_changing_keysc             C   s.  t dddt dddd}| jt|d| t dddt dddd}| jt|dt dddt dddd dt dddi}| jt|d| t dddt dddd}| jt|d| t dddt dddd}| jt|d| t dddt dddd}| jt|dt dddt dddd d S )Nr   r   )r   r   r   r   r   r   )r   rK   r   )r@   r   rD   rD   rE   test_changing_keys_w_wrap  s*    






z)TestWrapNumbers.test_changing_keys_w_wrapc             C   sb   d'd(d)d*d"}| j t|d#| | j t|d#| d+d,d-d.d"}t|d#}| j |d% d d& d S )/N,      #  R       ȷ    r    tU      r   r   6    $  N r      r        U	    "  r     4      \  )nvme0n1Z	nvme0n1p1Z	nvme0n1p2Z	nvme0n1p3r   r   r   i  )	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   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   )rK   r   )r@   doutrD   rD   rE   test_real_data   s    
zTestWrapNumbers.test_real_datac             C   sb   dt dddi}t|d tj }| j|d d|i | j|d di i | j|d di i d S )Nr   r   r   r   rN   r   )r   r   
cache_inforK   )r@   r   cacherD   rD   rE   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j }| j|d d|i | j|d dddd	dd
dii | j|d di i d S )Nr   r   r   r   r   rN   r   )r   r   )r   rN   )r   r   )r   r   r   rK   )r@   r   r   rD   rD   rE   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j } j|d d|i  j|d dddddddii  j|d ddtdgii  fdd	}dt dddi}t|d tj } j|d d|i |  dt ddd
i}t|d tj } j|d d|i |  dt dddi}t|d tj } j|d d|i  j|d dddddddii  j|d ddtdgii d S )Nr   r   r   r   r   rN   r   c           	      sJ   t j }  j| d dddddd	dii  j| d ddtd
gii d S )NrN   r   r   r   r   r   )r   r   )r   rN   )r   r   )r   r   )r   r   rK   rX   )r   )r@   rD   rE   assert_4  s    

z0TestWrapNumbers.test_cache_wrap.<locals>.assert_r   r   r   )r   r   )r   rN   )r   r   )r   r   )r   r   )r   rN   )r   r   )r   r   )r   r   r   rK   rX   )r@   r   r   r   rD   )r@   rE   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j }| j|d d|i | j|d dd	dd
dddii | j|d di i d S )Nr   r   r   r   )r   r   r   rN   r   )r   r   )r   rN   )r   r   )r   r   r   rK   )r@   r   r   rD   rD   rE   test_cache_changing_keysU  s    


z(TestWrapNumbers.test_cache_changing_keysc             C   s\   dt dddi}t|d t|d tjd | jtj i i i f tjd tjd d S )Nr   r   r   z?!?)r   r   r   rK   r   )r@   r   rD   rD   rE   test_cache_clearb  s    



z TestWrapNumbers.test_cache_clearzno disks or NICs availablec             C   s   t j  t j  tj }x$|D ]}| jd| | jd| qW t jj  tj }x$|D ]}| jd| | jd| qVW t jj  tj }| j|i i i f d S )Nzpsutil.disk_io_counterszpsutil.net_io_counters)	r4   r   r   r   r   r6   r   r=   rK   )r@   Zcachesr   rD   rD   rE   test_cache_clear_public_apisk  s    



z,TestWrapNumbers.test_cache_clear_public_apisN)r   r   r   r   tearDownr   r   r   r   r   r   r   r   r   r   r   r   r,   skipIfr4   r   r   r  rD   rD   rD   rE   r     s"   
%0	r   zcan't test on TOXz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j	e
 d	d
d Zdd Zdd Zdd Zdd Zej	epxeoxej  ddd Zdd Zdd Zdd Zej	eddd Zej	e d d!d" Zej	e d d#d$ Zd%d& Zd'd( Zd)d* Zd+d, Z d-d. Z!ej	e" d/d0d1 Z#d2d3 Z$ej	e% d ej	edd4d5 Z&ej	e' d ej	edd6d7 Z(ej	e) d ej	e* d8d9d: Z+d;d< Z,dS )>TestScriptsz-Tests for scripts in the "scripts" directory.c             O   s   dt jjt|  } t| g}x|D ]}|j| q W yt|f|j }W n8 tk
r~ } zdt	|krlt	|S  W Y d d }~X nX |S )Nz%sr?   )
r;   r   rt   r&   r   r{   r'   stripRuntimeErrorrG   )exer|   r}   cmdargr   errrD   rD   rE   assert_stdout  s    
zTestScripts.assert_stdoutNc          	   C   sR   t jjt| } tr"t| ddd}n
t| d}| |j }W d Q R X tj| d S )NZrtutf8)encoding)	r;   r   rt   r&   r	   openreadastparse)r  r|   r   srcrD   rD   rE   assert_syntax  s    
zTestScripts.assert_syntaxc             C   sZ   t | }xLtjtD ]>}|jdrdtjj|d  |kr| jdtjjt|  qW d S )Nz.pyZtest_r   zno test defined for %r script)	rf   r;   listdirr&   endswithr   splitextrn   rt   )r@   Zmethsr2   rD   rD   rE   test_coverage  s    
zTestScripts.test_coveragez
POSIX onlyc             C   sT   xNt jtD ]@}|jdrt jjt|}tjt j|tj @ s| j	d|  qW d S )Nz.pyz%r is not executable)
r;   r  r&   r  r   rt   statS_IXUSRST_MODErn   )r@   r2   r   rD   rD   rE   test_executable  s
    
zTestScripts.test_executablec             C   s   | j d d S )Nzdisk_usage.py)r  )r@   rD   rD   rE   test_disk_usage  s    zTestScripts.test_disk_usagec             C   s   | j d d S )Nzfree.py)r  )r@   rD   rD   rE   	test_free  s    zTestScripts.test_freec             C   s   | j d d S )Nz
meminfo.py)r  )r@   rD   rD   rE   test_meminfo  s    zTestScripts.test_meminfoc             C   s   | j dttj  d S )Nzprocinfo.py)r  rG   r;   r<   )r@   rD   rD   rE   test_procinfo  s    zTestScripts.test_procinfoz unreliable on APPVEYOR or TRAVISc             C   s   | j d d S )Nzwho.py)r  )r@   rD   rD   rE   test_who  s    zTestScripts.test_whoc             C   s   | j d d S )Nzps.py)r  )r@   rD   rD   rE   test_ps  s    zTestScripts.test_psc             C   s   | j d d S )Nz	pstree.py)r  )r@   rD   rD   rE   test_pstree  s    zTestScripts.test_pstreec             C   s   | j d d S )Nz
netstat.py)r  )r@   rD   rD   rE   test_netstat  s    zTestScripts.test_netstatzunreliable on TRAVISc             C   s   | j d d S )Nzifconfig.py)r  )r@   rD   rD   rE   test_ifconfig  s    zTestScripts.test_ifconfigznot supportedc             C   s   | j dttj  d S )Nzpmap.py)r  rG   r;   r<   )r@   rD   rD   rE   	test_pmap  s    zTestScripts.test_pmapc             C   s   | j dtd d S )Nzprocsmem.py)stderr)r  r   )r@   rD   rD   rE   test_procsmem  s    zTestScripts.test_procsmemc             C   s   | j d d S )Nz
killall.py)r  )r@   rD   rD   rE   test_killall  s    zTestScripts.test_killallc             C   s   | j d d S )Nz	nettop.py)r  )r@   rD   rD   rE   test_nettop  s    zTestScripts.test_nettopc             C   s   | j d d S )Nztop.py)r  )r@   rD   rD   rE   test_top  s    zTestScripts.test_topc             C   s   | j d d S )Nziotop.py)r  )r@   rD   rD   rE   
test_iotop  s    zTestScripts.test_iotopc             C   s,   | j dtj j }| jttj | d S )Nzpidof.py)r  r4   r5   r2   r6   rG   r;   r<   )r@   outputrD   rD   rE   
test_pidof  s    zTestScripts.test_pidofzWINDOWS onlyc             C   s   | j d d S )Nzwinservices.py)r  )r@   rD   rD   rE   test_winservices  s    zTestScripts.test_winservicesc             C   s   | j d d S )Nzcpu_distribution.py)r  )r@   rD   rD   rE   test_cpu_distribution  s    z!TestScripts.test_cpu_distributionc             C   s   | j d d S )Nztemperatures.py)r  )r@   rD   rD   rE   test_temperatures  s    zTestScripts.test_temperaturesc             C   s   | j d d S )Nzfans.py)r  )r@   rD   rD   rE   	test_fans  s    zTestScripts.test_fansz
no batteryc             C   s   | j d d S )Nz
battery.py)r  )r@   rD   rD   rE   test_battery  s    zTestScripts.test_batteryc             C   s   | j d d S )Nz
sensors.py)r  )r@   rD   rD   rE   test_sensors  s    zTestScripts.test_sensors)N)-r   r   r   rl   staticmethodr  r  r  r,   r  r   r  r  r  r  r  r
   r+   r4   r   r   r!  r"  r#  r$  r   r%  r   r'  r(  r)  r*  r+  r-  r   r.  r/  r   r0  r   r1  r   r   r2  r3  rD   rD   rD   rE   r    s@   

r  c               @   sx   e Zd Zejddd Zejddd Zejddd Zejddd	 Zejdd
d Z	ejddd Z
dS )TestRetryDecoratorz
time.sleepc                sF   t ddd d fdd}ttd | j| d | j|jd d S )Nr   rN   )retriesr   logfunc                  s   x r j   dd  qW dS )NrN   r   )poprD   )queuerD   rE   rI     s    z2TestRetryDecorator.test_retry_success.<locals>.foor   )r"   listr   rK   
call_count)r@   sleeprI   rD   )r9  rE   test_retry_success  s    z%TestRetryDecorator.test_retry_successc                sD   t ddd d fdd}ttd | jt| | j|jd d S )Nr   rN   )r6  r   r7  c                  s   x r j   dd  qW dS )NrN   r   )r8  rD   )r9  rD   rE   rI   &  s    z2TestRetryDecorator.test_retry_failure.<locals>.foo   )r"   r:  r   r   ZeroDivisionErrorrK   r;  )r@   r<  rI   rD   )r9  rE   test_retry_failure"  s    z%TestRetryDecorator.test_retry_failurec             C   s2   t tdddd }| jt| | j|jd d S )NrN   )r   r   c               S   s   t d S )N)	TypeErrorrD   rD   rD   rE   rI   3  s    z2TestRetryDecorator.test_exception_arg.<locals>.foor   )r"   r   r   rA  rK   r;  )r@   r<  rI   rD   rD   rE   test_exception_arg1  s    z%TestRetryDecorator.test_exception_argc             C   s4   t dd d ddd }| jt| | j|jd d S )Nr   )r6  r   r7  c               S   s   dd  d S )NrN   r   rD   rD   rD   rD   rE   rI   >  s    z4TestRetryDecorator.test_no_interval_arg.<locals>.foor   )r"   r   r?  rK   r;  )r@   r<  rI   rD   rD   rE   test_no_interval_arg:  s    z'TestRetryDecorator.test_no_interval_argc             C   s4   t ddd ddd }| jt| | j|jd d S )Nr   rN   )r6  r   r7  c               S   s   dd  d S )NrN   r   rD   rD   rD   rD   rE   rI   H  s    z0TestRetryDecorator.test_retries_arg.<locals>.foo)r"   r   r?  rK   r;  )r@   r<  rI   rD   rD   rE   test_retries_argE  s    z#TestRetryDecorator.test_retries_argc             C   s   | j ttddd d S )Nr   rN   )r6  Ztimeout)r   r   r"   )r@   r<  rD   rD   rE   test_retries_and_timeout_argsO  s    z0TestRetryDecorator.test_retries_and_timeout_argsN)r   r   r   r   r8   r=  r@  rB  rC  rD  rE  rD   rD   rD   rE   r5    s   	
r5  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 )TestSyncTestUtilsc             C   s   t t d S )N)r%   r)   )r@   rD   rD   rE   r  V  s    zTestSyncTestUtils.tearDownc             C   sP   t tj  ttj d }tjdtdgd | j	tj
t | W d Q R X d S )Ni zpsutil.tests.retry.__iter__r   )r   )r0   r;   r<   maxr4   Zpidsr   r8   iterr   r>   )r@   ZnopidrD   rD   rE   test_wait_for_pidY  s    z#TestSyncTestUtils.test_wait_for_pidc          	   C   s,   t td}|jd W d Q R X tt d S )NwrI   )r  r)   writer/   )r@   r   rD   rD   rE   test_wait_for_file_  s    z$TestSyncTestUtils.test_wait_for_filec             C   s&   t td W d Q R X ttdd d S )NrJ  T)empty)r  r)   r/   )r@   rD   rD   rE   test_wait_for_file_emptye  s    
z*TestSyncTestUtils.test_wait_for_file_emptyc             C   s2   t jdtdgd | jttt W d Q R X d S )Nzpsutil.tests.retry.__iter__r   )r   )r   r8   rH  r   IOErrorr/   r)   )r@   rD   rD   rE   test_wait_for_file_no_filek  s    z,TestSyncTestUtils.test_wait_for_file_no_filec             C   s0   t td}|jd W d Q R X ttdd d S )NrJ  rI   F)delete)r  r)   rK  r/   )r@   r   rD   rD   rE   test_wait_for_file_no_deleteo  s    z.TestSyncTestUtils.test_wait_for_file_no_deletec             C   s   t dd d}| j|d d S )Nc               S   s   dS )NrN   rD   rD   rD   rD   rE   <lambda>v  s    z3TestSyncTestUtils.test_call_until.<locals>.<lambda>zret == 1rN   )r   rK   )r@   r   rD   rD   rE   test_call_untilu  s    z!TestSyncTestUtils.test_call_untilN)
r   r   r   r  rI  rL  rN  rP  rR  rT  rD   rD   rD   rE   rF  T  s   rF  c               @   s(   e Zd Zdd ZeZdd Zdd ZdS )TestFSTestUtilsc             C   s   t t d S )N)r%   r)   )r@   rD   rD   rE   r   |  s    zTestFSTestUtils.setUpc             C   st   t tdj  tt tt tjt tt tjdtt	j
dd$}| jt tt W d Q R X W d Q R X d S )NrJ  zpsutil.tests.os.statr   )r3   )r  r)   closer%   r;   mkdirr   r8   r   r   r   r   )r@   mrD   rD   rE   test_safe_rmpath  s    
z TestFSTestUtils.test_safe_rmpathc             C   sT   t j }t jt tt  | jt j t jj|t W d Q R X | jt j | d S )N)r;   r   rW  r)   r   rK   r   rt   )r@   baserD   rD   rE   
test_chdir  s
    

$zTestFSTestUtils.test_chdirN)r   r   r   r   r  rY  r[  rD   rD   rD   rE   rU  z  s   rU  c               @   s2   e Zd Zdd Zdd Zeje ddd ZdS )	TestProcessUtilsc             C   s   t  }tj|j}t  d S )N)r   r4   r5   r7   r    )r@   ZsubprB   rD   rD   rE   test_reap_children  s    z#TestProcessUtils.test_reap_childrenc             C   s   t  \}}| j|j|j tj jdd}| jt|d | j|| | j|| | j|j	 t
j  | j|j	 |j t  d S )NT)	recursiver   )r   rT   r7   r4   r5   childrenrK   rY   r6   rO   r;   r<   r    )r@   rU   rV   r_  rD   rD   rE   test_create_proc_children_pair  s    
z/TestProcessUtils.test_create_proc_children_pairz
POSIX onlyc             C   s4   t  }| jtdd tj|}| j|j tj d S )NT)r^  )r   r   r    r4   r5   rK   ZstatusZSTATUS_ZOMBIE)r@   ZzpidrB   rD   rD   rE   test_create_zombie_proc  s    
z(TestProcessUtils.test_create_zombie_procN)	r   r   r   r]  r`  r,   r  r   ra  rD   rD   rD   rE   r\    s   	r\  c               @   sP   e Zd Zdd Zeje ddd Zdd Zeje ddd	 Z	d
d Z
dS )TestNetUtilsc          
   C   s>   t  }tjtd|fd}| j|j d | W d Q R X d S )Nr   )addrrN   )r   
contextlibclosingr   rK   getsockname)r@   ZportrZ   rD   rD   rE   r     s    zTestNetUtils.bind_socketz
POSIX onlyc             C   s   t  T}t|}tj|6 | j|jtj | j|jtj	 | j|j
 | W d Q R X W d Q R X t  :}t|tjd}tj| | j|jtj W d Q R X W d Q R X d S )N)type)r-   r   rd  re  rK   familyr   AF_UNIXrg  r   rf  
SOCK_DGRAM)r@   r2   r   rD   rD   rE   test_bind_unix_socket  s    z"TestNetUtils.test_bind_unix_socketc             C   s|   dt  f}ttj|d\}}tj|L tj|6 | j|j | | j|j | | j	|j | W d Q R X W d Q R X d S )Nz	127.0.0.1)rc  )
r   r(   r   AF_INETrd  re  rK   rf  getpeernamerT   )r@   rc  serverclientrD   rD   rE   tcp_tcp_socketpair  s    
zTestNetUtils.tcp_tcp_socketpairc             C   s   t j }|j }t v}t|\}}zP| j|j | d | jt|jddd | j|j | | j|j	 | W d |j
  |j
  X W d Q R X d S )Nr   Zunix)Zkind)r4   r5   num_fdsr-   r.   rK   rY   Zconnectionsrf  rm  rV  )r@   rB   rq  r2   rn  ro  rD   rD   rE   test_unix_socketpair  s    z!TestNetUtils.test_unix_socketpairc             C   s   t  }tjt}tjt}x:|D ]2}||j  d7  < ||jtjtj  d7  < q"W | j	|tj
 d t r| j	|tj d trtr| j	|tj d | j	|tj d | j	|tj d W d Q R X d S )NrN   r   )r   collectionsdefaultdictintrh  Z
getsockoptr   Z
SOL_SOCKETZSO_TYPEZassertGreaterEqualrl  r   r   r   r   ri  r   rj  )r@   ZsocksZfamstypesrZ   rD   rD   rE   test_create_sockets  s    


 z TestNetUtils.test_create_socketsN)r   r   r   r   r,   r  r   rk  rp  rr  rw  rD   rD   rD   rE   rb    s
   rb  c               @   s   e Zd Zdd ZdS )TestOtherUtilsc             C   s   d S )NrD   )r@   rD   rD   rE   test_is_namedtuple  s    z!TestOtherUtils.test_is_namedtupleN)r   r   r   ry  rD   rD   rD   rE   rx    s   rx  __main__)Nrl   r  rs  rd  r   r   r;   r   r   r  r4   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   r   r   r   r   r   r    r!   r"   r#   r$   r%   r&   r'   r(   r)   r*   r+   r,   r-   r.   r/   r0   ZTestCaser1   r^   r   r   r  r   r   r  r5  rF  rU  r\  rb  rx  r   r   rD   rD   rD   rE   <module>	   s     I p
 C&!&E
