HOME


sh-3ll 1.0
DIR:/usr/local/lib64/python3.6/site-packages/psutil/tests/__pycache__/
Upload File :
Current File : //usr/local/lib64/python3.6/site-packages/psutil/tests/__pycache__/test_misc.cpython-36.pyc
3

�^g���@sfdZddlZddlZddlZddlZddlZddlZddlZddlZddl	Z	ddl
Z
ddlZ
ddl
mZddl
m
Z
ddlmZddlmZddlmZddlmZdd	lmZdd
lmZddlmZddlmZdd
lmZddlmZddlmZddlmZddlmZddlmZddlmZddlmZddlm Z ddlm!Z!ddlm"Z"ddlm#Z#ddlm$Z$ddlm%Z%ddlm&Z&ddlm'Z'ddlm(Z(ddlm)Z)ddlm*Z*dd lm+Z+dd!lm,Z,dd"lm-Z-Gd#d$�d$e'�Z.Gd%d&�d&e'�Z/Gd'd(�d(e'�Z0Gd)d*�d*e'�Z1ej2d+d,�Z3Gd-d.�d.e'�Z4e*j5j6ej7j8e&�d/d0�Gd1d2�d2e'��Z9dS)3zMiscellaneous tests.�N)�POSIX)�WINDOWS)�bcat)�cat)�debug)�
isfile_strict)�memoize)�memoize_when_activated)�parse_environ_block)�
supports_ipv6)�wrap_numbers)�PY3)�FileNotFoundError)�redirect_stderr)�
CI_TESTING)�HAS_BATTERY)�HAS_MEMORY_MAPS)�HAS_NET_IO_COUNTERS)�HAS_SENSORS_BATTERY)�HAS_SENSORS_FANS)�HAS_SENSORS_TEMPERATURES)�
PYTHON_EXE)�PYTHON_EXE_ENV)�	QEMU_USER)�SCRIPTS_DIR)�PsutilTestCase)�mock)�process_namespace)�pytest)�
reload_module)�sh)�system_namespacec@s�eZdZdd�Zefdd�Zdd�Zdd�Zd	d
�Zdd�Z	d
d�Z
dd�Zdd�Zdd�Z
dd�Zdd�Zdd�Zdd�Zdd�ZdS) �TestSpecialMethodscCsRtjt��tjjjdd�WdQRXtjtj��tjdd�WdQRXdS)N��)	r�raises�
OverflowError�psutilZ_psplatformZcextZcheck_pid_range�
NoSuchProcess�Process)�self�r+�B/usr/local/lib64/python3.6/site-packages/psutil/tests/test_misc.py�test_check_pid_range>sz'TestSpecialMethods.test_check_pid_rangecCs�tj|j�j�}||�}d|ks$t�d|j|ks6t�dt|j��|jdd�ksVt�d|ksbt�d|ksnt�|j�|j	�||�}d|ks�t�d|ks�t�t
jjtjd	tj
tj��d
��@tj�}||�}d|j|ks�t�d|ks�t�d|ks�t�WdQRXt
jjtjd	tjtj��d
��Ftj�}||�}d|j|k�sFt�d
|k�sTt�d|k�sbt�WdQRXt
jjtjd	tjtj��d
��8tj�}||�}d|j|k�s�t�d|k�s�t�WdQRXdS)Nzpsutil.Processzpid=%sz	name='%s'zname=u'zname='zstatus=z	exitcode=zstatus='terminated'�name)�side_effectzstatus='zombie'zname=Z
terminated)r'r)Zspawn_testproc�pid�AssertionError�strr.�replace�	terminate�waitr�patch�object�
ZombieProcess�os�getpidr(�AccessDenied)r*�func�p�rr+r+r,�test_process__repr__DsL z'TestSpecialMethods.test_process__repr__cCs|jtd�dS)N)r<)r?r2)r*r+r+r,�test_process__str__psz&TestSpecialMethods.test_process__str__cCsttj��dkst�dS)Nzpsutil.Error())�reprr'�Errorr1)r*r+r+r,�test_error__repr__ssz%TestSpecialMethods.test_error__repr__cCsttj��dkst�dS)N�)r2r'rBr1)r*r+r+r,�test_error__str__vsz$TestSpecialMethods.test_error__str__cCs6ttjd��dkst�ttjdddd��dks2t�dS)NiAz=psutil.NoSuchProcess(pid=321, msg='process no longer exists')r.�msg)r.rFz5psutil.NoSuchProcess(pid=321, name='name', msg='msg'))rAr'r(r1)r*r+r+r,�test_no_such_process__repr__ys
z/TestSpecialMethods.test_no_such_process__repr__cCs6ttjd��dkst�ttjdddd��dks2t�dS)NiAz"process no longer exists (pid=321)r.rF)r.rFzmsg (pid=321, name='name'))r2r'r(r1)r*r+r+r,�test_no_such_process__str__�s
z.TestSpecialMethods.test_no_such_process__str__cCs8ttjd��dkst�ttjddddd��dks4t�dS)NiAzGpsutil.ZombieProcess(pid=321, msg="PID still exists but it's a zombie")r.i@�foo)r.�ppidrFz?psutil.ZombieProcess(pid=321, ppid=320, name='name', msg='foo'))rAr'r8r1)r*r+r+r,�test_zombie_process__repr__�s
z.TestSpecialMethods.test_zombie_process__repr__cCs8ttjd��dkst�ttjddddd��dks4t�dS)NiAz,PID still exists but it's a zombie (pid=321)r.i@rI)r.rJrFz$foo (pid=321, ppid=320, name='name'))r2r'r8r1)r*r+r+r,�test_zombie_process__str__�s
z-TestSpecialMethods.test_zombie_process__str__cCs6ttjd��dkst�ttjdddd��dks2t�dS)NiAzpsutil.AccessDenied(pid=321)r.rF)r.rFz4psutil.AccessDenied(pid=321, name='name', msg='msg'))rAr'r;r1)r*r+r+r,�test_access_denied__repr__�sz-TestSpecialMethods.test_access_denied__repr__cCs6ttjd��dkst�ttjdddd��dks2t�dS)NiAz	(pid=321)r.rF)r.rFzmsg (pid=321, name='name'))r2r'r;r1)r*r+r+r,�test_access_denied__str__�sz,TestSpecialMethods.test_access_denied__str__cCs6ttjd��dkst�ttjdddd��dks2t�dS)N�z?psutil.TimeoutExpired(seconds=5, msg='timeout after 5 seconds')iAr.)r0r.zUpsutil.TimeoutExpired(pid=321, name='name', seconds=5, msg='timeout after 5 seconds'))rAr'�TimeoutExpiredr1)r*r+r+r,�test_timeout_expired__repr__�s
z/TestSpecialMethods.test_timeout_expired__repr__cCs6ttjd��dkst�ttjdddd��dks2t�dS)NrOztimeout after 5 secondsiAr.)r0r.z.timeout after 5 seconds (pid=321, name='name'))r2r'rPr1)r*r+r+r,�test_timeout_expired__str__�sz.TestSpecialMethods.test_timeout_expired__str__cCs>tj�}tj�}||kst�d|_||ks.t�|dks:t�dS)NrrI)rr)r'r)r1�_ident)r*�p1�p2r+r+r,�test_process__eq__�sz%TestSpecialMethods.test_process__eq__cCs(ttj�tj�g�}t|�dks$t�dS)N�)�setr'r)�lenr1)r*�sr+r+r,�test_process__hash__�sz'TestSpecialMethods.test_process__hash__N)�__name__�
__module__�__qualname__r-rAr?r@rCrErGrHrKrLrMrNrQrRrVr[r+r+r+r,r"=s,


r"c@s<eZdZdd�Zdd�Zdd�Zdd�Zd	d
�Zdd�Zd
S)�TestMisccCs�tt�}x�|D]~}|d
krq|jd�syt|�Wqtk
r�|tjkr�tt|�}|dkr`w|jdk	r�d|jj�kr�|j	d	|��YqXqWxtjD]}||ks�t
�q�WdS)Nr�long�tests�test�PermissionError�ProcessLookupError�_Z
deprecatedz%r not in psutil.__all__)rr`rarbrcrd)�dirr'�
startswith�
__import__�ImportError�__all__�getattr�__doc__�lower�failr1)r*Z
dir_psutilr.�funr+r+r,�test__all__�s.




zTestMisc.test__all__cCs$djdd�tjD��tjks t�dS)N�.cSsg|]}t|��qSr+)r2)�.0�xr+r+r,�
<listcomp>�sz)TestMisc.test_version.<locals>.<listcomp>)�joinr'�version_info�__version__r1)r*r+r+r,�test_version�szTestMisc.test_versioncCs"tj�}d|_d|j�kst�dS)N�1rI)r'r)rI�as_dictr1)r*r=r+r+r,�!test_process_as_dict_no_new_names�sz*TestMisc.test_process_as_dict_no_new_namescCs�dd�}tj�}|tj�j��t|�}x`|j|jdd�D]L\}}|j||d��0y
|�}Wntjk
rrYn
X||�WdQRXq:Wt�}xr|j|j�D]b\}}|dkr�q�t	r�|dkr�q�|j|d	��0y
|�}Wntj
k
r�Yn
X||�WdQRXq�Wtjtj
tjd
ddd
���}t|tj��s2t�|jd
k�sBt�|jdk�sRt�|jdk�sbt�tjtj
tjd
dddd���}t|tj��s�t�|jd
k�s�t�|jdk�s�t�|jdk�s�t�|jdk�s�t�tjtj
tj
dddd
���}t|tj
��st�|jdk�st�|jdk�s t�|jdk�s0t�tjtj
tjdd
dd���}t|tj��s^t�|jdk�snt�|jd
k�s~t�|jdk�s�t�dS)NcSs4tjtj|��tj|�}tj|�}||ks0t�dS)N)�json�loads�dumps�pickler1)�ret�a�br+r+r,�checks

z*TestMisc.test_serialization.<locals>.checkT)�clear_cache)�procr.�win_service_iter�win_service_getZnet_if_stats)r.i�r.rF)r0r.rF�*)r0r.rJrF�{�!)�secondsr0r.>r�r�)r'r)rzr�iterZgettersZsubTestrBr!rr;rr}r~r(�
isinstancer1r0r.rFr8rJrPr�)r*r�r��nsror.r�r�r+r+r,�test_serializationsf	

zTestMisc.test_serializationc,Cstjjtjdtjd��}tj�|js*t�WdQRXtjjtjdtjd�d��}tj�|jsbt�WdQRXtjjtjdt	d��.}t
jt	��tj�WdQRX|js�t�WdQRXtjjtjdtjd�d��0}|j
tj��tj�WdQRX|js�t�WdQRXdS)NZ
_get_ident)r/rW)rr6r7r'r)r;�calledr1r8�
ValueErrorrr%r(ZassertRaises)r*�methr+r+r,�test_ad_on_process_creationas,z$TestMisc.test_ad_on_process_creationcCsRtjddd��:tjt��}tt�WdQRXdt|j�j	�ksDt
�WdQRXdS)Nzpsutil._psplatform.cext.versionz0.0.0)�return_valuezversion conflict)rr6rr%rirr'r2�valuermr1)r*�cmr+r+r,�test_sanity_version_check~s
z"TestMisc.test_sanity_version_checkN)	r\r]r^rprxr{r�r�r�r+r+r+r,r_�s!]r_c@sReZdZdd�ZeZddd�Zdd�Zdd	�Zd
d�Zdd
�Z	dd�Z
dd�ZdS)�TestMemoizeDecoratorcCs
g|_dS)N)�calls)r*r+r+r,�setUp�szTestMemoizeDecorator.setUpNcCs>x>td�D]2}|�}|jfifgks(t�|dk	r
||ks
t�q
WxFtd�D]:}|d�}|jfifdifgkspt�|dk	rJ||ksJt�qJWxTtd�D]H}|ddd�}|jfifd	ifd
ddifgks�t�|dk	r�||ks�t�q�Wt|j�dks�t�|j�|�}|dk	�r||k�st�t|j�dk�s*t�|jdk�s:t�dS)Nr#rW)�barr���z
My docstring.)rW)rW)rW)�ranger�r1rY�cache_clearrl)r*�obj�expected_retvalrer�r+r+r,�run_against�s,$
z TestMemoizeDecorator.run_againstcs&t�fdd��}|�|j|dd�dS)Ncs�jj||f�dS)z
My docstring.�)r��append)�args�kwargs)�	baseclassr+r,rI�sz/TestMemoizeDecorator.test_function.<locals>.foor�)r�)rr�)r*rIr+)r�r,�
test_function�sz"TestMemoizeDecorator.test_functioncs>tG�fdd�d��}|�|j|dd�|�j�dks:t�dS)Ncs$eZdZdZ�fdd�Zdd�ZdS)z,TestMemoizeDecorator.test_class.<locals>.Fooz
My docstring.cs�jj||f�dS)N)r�r�)r*r�r�)r�r+r,�__init__�sz5TestMemoizeDecorator.test_class.<locals>.Foo.__init__cSsdS)Nr�r+)r*r+r+r,r��sz0TestMemoizeDecorator.test_class.<locals>.Foo.barN)r\r]r^rlr�r�r+)r�r+r,�Foo�sr�)r�r�)rr�r�r1)r*r�r+)r�r,�
test_class�s
zTestMemoizeDecorator.test_classcCs�tGdd�d��}|�|�ks"t�t|��t|��ks:t�t|d��t|d��ksVt�t|ddd��t|ddd��kszt�t|d��t|d��ks�t�dS)Nc@seZdZdd�ZdS)z6TestMemoizeDecorator.test_class_singleton.<locals>.Barc_sdS)Nr+)r*r�r�r+r+r,r��sz?TestMemoizeDecorator.test_class_singleton.<locals>.Bar.__init__N)r\r]r^r�r+r+r+r,�Bar�sr�rWr�)rIr#)rr1�id)r*r�r+r+r,�test_class_singleton�s$z)TestMemoizeDecorator.test_class_singletoncs,G�fdd�d�}|�|j|�jdd�dS)Ncs eZdZee�fdd���ZdS)z3TestMemoizeDecorator.test_staticmethod.<locals>.Foocs�jj||f�dS)z
My docstring.r�)r�r�)r�r�)r�r+r,r��sz7TestMemoizeDecorator.test_staticmethod.<locals>.Foo.barN)r\r]r^�staticmethodrr�r+)r�r+r,r��sr�r�)r�)r�r�)r*r�r+)r�r,�test_staticmethod�sz&TestMemoizeDecorator.test_staticmethodcs,G�fdd�d�}|�|j|�jdd�dS)Ncs eZdZee�fdd���ZdS)z2TestMemoizeDecorator.test_classmethod.<locals>.Foocs�jj||f�dS)z
My docstring.r�)r�r�)�clsr�r�)r�r+r,r��sz6TestMemoizeDecorator.test_classmethod.<locals>.Foo.barN)r\r]r^�classmethodrr�r+)r�r+r,r��sr�r�)r�)r�r�)r*r�r+)r�r,�test_classmethod�sz%TestMemoizeDecorator.test_classmethodcst�fdd��}g�x:td�D].}|�}fif}||ks<t�t��dkst�qWx<td�D]0}|d�}d
if}||kszt�t��dksZt�qZWxDtd�D]8}|ddd�}dddif}||ks�t�t��dks�t�q�W|j�|�}fif}||ks�t�t��dk�st�|jd	k�st�dS)Ncs�jd�||fS)zFoo docstring.N)r�)r�r�)r�r+r,rI�s
z/TestMemoizeDecorator.test_original.<locals>.foor#rW)r�r�r�r�zFoo docstring.)rW)rW)rr�r1rYr�rl)r*rIrer�Zexpectedr+)r�r,�
test_original�s.z"TestMemoizeDecorator.test_original)N)r\r]r^r��tearDownr�r�r�r�r�r�r�r+r+r+r,r��s


r�c@s<eZdZdd�Zdd�Zdd�Zdd�Zd	d
�Zdd�Zd
S)�TestCommonModulecs�G�fdd�d�}|�}g�|j�|j�t��dks<t�g�|jj|�|j�|j�t��dkslt�g�|jj|�|j�|j�t��dks�t�dS)NcseZdZe�fdd��ZdS)z9TestCommonModule.test_memoize_when_activated.<locals>.Foocs�jd�dS)N)r�)r*)r�r+r,rIsz=TestCommonModule.test_memoize_when_activated.<locals>.Foo.fooN)r\r]r^r	rIr+)r�r+r,r�sr�r#rW)rIrYr1�cache_activate�cache_deactivate)r*r��fr+)r�r,�test_memoize_when_activateds z,TestCommonModule.test_memoize_when_activatedcCs�dd�}td�|d�diks t�td�|d�d|d�diks@t�td	�|d�d|d�d
iks`t�td�|d�d|d�diks�t�td�|d�diks�t�td
�|d�diks�t�td�|d�diks�t�dS)NcSstr|j�S|S)N)r�upper)rZr+r+r,�k0sz4TestCommonModule.test_parse_environ_block.<locals>.kza=1r�ryz	a=1b=2r��2za=1b=rDz
a=1b=2c=3zxxxa=1z	a=1=b=2za=1b=2)r
r1)r*r�r+r+r,�test_parse_environ_block/s z)TestCommonModule.test_parse_environ_blockcCsJ|jtj�t��rtjd�� }d|_tj�t�s:t�WdQRXtj�tjdtjd��}t�sjt�|j	stt�WdQRXtj�tjdtj
d��$}t�s�t�tj�|j	s�t�WdQRXtj�tjdtj
d��$}t�s�t�tj�|j	s�t�WdQRXnBtjtj��0tjtj
tj�}z|jd�Wd|j�XWdQRXdS)	Nzpsutil._common.socketFzpsutil._common.socket.socket)r/z!psutil._common.socket.socket.bind�::1r)r�r)Z
addCleanuprr�rr6�has_ipv6r1�socket�errorr��gaierrorrr%�AF_INET6�SOCK_STREAM�bind�close)r*rZ�sockr+r+r,�test_supports_ipv6Ds@
z#TestCommonModule.test_supports_ipv6c,Cs
tjjt�}t|�st�ttjj|��s.t�tjdt	t
jd�d��$tj
t	��t|�WdQRXWdQRXtjdt	t
jd�d��$tj
t	��t|�WdQRXWdQRXtjdt	t
jd�d��t|�s�t�WdQRXtjddd��t|�s�t�WdQRXdS)Nzpsutil._common.os.statrI)r/zpsutil._common.stat.S_ISREGF)r�)r9�path�abspath�__file__rr1�dirnamerr6�OSError�errno�EPERMrr%�EACCES�ENOENT)r*Z	this_filer+r+r,�test_isfile_strictks z#TestCommonModule.test_isfile_strictc-Csrtrddlm}nddlm}tjjtjdd��.t|���}t	d�t
jj�WdQRXWdQRX|j
�}|jd�s~t|��d|ks�t�tjdd�|ks�t�tjjtjdd��(t|���}t	td	��WdQRXWdQRX|j
�}d
|ks�t�d|ks�t�tjjtjdd��4t|���}tdd
�}d|_t	|�WdQRXWdQRX|j
�}d
|k�s`t�d|k�snt�dS)Nr)�StringIO�PSUTIL_DEBUGTZhellozpsutil-debugz.pycz.pyzthis is an errorzignoring ValueErrorz'this is an error'r#zno such filez/foo)r
�ior�rr6r7r'�_commonrr�sys�stderr�flush�getvaluergr1r�r3r�r��filename)r*r�r�rF�excr+r+r,�
test_debug�s2 
zTestCommonModule.test_debugcCs�|j�}t|d��}|jd�WdQRXt|�dks8t�t|�dksHt�tjt��t|d�WdQRXtjt��t|d�WdQRXt|ddd�dks�t�t|ddd�dks�t�dS)N�wrIsfooz-invalidr�)�fallback)	Z
get_testfn�open�writerr1rrr%r)r*Ztestfnr�r+r+r,�
test_cat_bcat�szTestCommonModule.test_cat_bcatN)	r\r]r^r�r�r�r�r�r�r+r+r+r,r�s'!r�rIza b cc@s�eZdZdd�ZeZdd�Zdd�Zdd�Zd	d
�Zdd�Z	d
d�Z
dd�Zdd�Zdd�Z
dd�Zdd�Zdd�Zejjedd�dd��ZdS) �TestWrapNumberscCstj�dS)N)rr�)r*r+r+r,r��szTestWrapNumbers.setUpcCs&dtddd�i}t|d�|ks"t�dS)N�disk1rO�disk_io)�ntrr1)r*�inputr+r+r,�test_first_call�szTestWrapNumbers.test_first_callcCs8dtddd�i}t|d�|ks"t�t|d�|ks4t�dS)Nr�rOr�)r�rr1)r*r�r+r+r,�test_input_hasnt_changed�sz(TestWrapNumbers.test_input_hasnt_changedcCs�dtddd�i}t|d�|ks"t�dtddd�i}t|d�|ksDt�dtddd�i}t|d�|ksft�dtddd�i}t|d�|ks�t�dS)	Nr�rOr��
����)r�rr1)r*r�r+r+r,�test_increase_but_no_wrap�sz)TestWrapNumbers.test_increase_but_no_wrapcCs�dtddd�i}t|d�|ks"t�dtddd�i}t|d�dtddd�iksPt�dtddd�i}t|d�dtddd�iks~t�dtddd�i}t|d�dtddd�iks�t�dtddd�i}t|d�dtddd	�iks�t�dtddd�i}t|d�dtddd	�ik�s
t�dtd
dd�i}t|d�dtddd	�ik�s:t�dtddd�i}t|d�dtddd	�ik�sjt�dtddd�i}t|d�dtddd	�ik�s�t�dS)
Nr��dr�r��n�Z�r����2��()r�rr1)r*r�r+r+r,�	test_wrap�s$   zTestWrapNumbers.test_wrapcCstdtddd�i}t|d�|ks"t�tddd�tddd�d�}t|d�|ksNt�dtddd�i}t|d�|kspt�dS)Nr�rOr��)r��disk2�)r�rr1)r*r�r+r+r,�test_changing_keys�sz"TestWrapNumbers.test_changing_keyscCs0tddd�tddd�d�}t|d�|ks,t�tddd�tddd�d�}t|d�tddd�tddd�d�ksnt�dtddd�i}t|d�|ks�t�tddd�tddd�d�}t|d�|ks�t�tddd�tddd�d�}t|d�|ks�t�tddd�tddd�d�}t|d�tddd�tddd�d�k�s,t�dS)Nr�r�)r�r�r�r�r�r�)r�rr1)r*r�r+r+r,�test_changing_keys_w_wrap�s 

z)TestWrapNumbers.test_changing_keys_w_wrapcCsbd'd(d)d*d"�}t|d#�|ks t�t|d#�|ks2t�d+d,d-d.d"�}t|d#�}|d%dd&ks^t�dS)/N�,���#�R������ȷ�r#�tU��rr��6��$��Nr��r����U	��"r����4����\)�nvme0n1Z	nvme0n1p1Z	nvme0n1p2Z	nvme0n1p3r�r�ri�)	r�rrrrrrrr)	rr#r	r
rrrrr�)	rrr
rr�rr�rr)	rrrr�rrrrr)	r�rrrrrrrr)	rr#r	r
rrrrr�)	rrr
rr�rr�rr)	rrrr�rrrrr)rr1)r*�d�outr+r+r,�test_real_datas
zTestWrapNumbers.test_real_datacCsbdtddd�i}t|d�tj�}|dd|iks6t�|ddiiksJt�|ddiiks^t�dS)Nr�rOr�rrWr#)r�r�
cache_infor1)r*r��cacher+r+r,�test_cache_first_call(s
z%TestWrapNumbers.test_cache_first_callcCs�dtddd�i}t|d�dtddd�i}t|d�tj�}|dd|iksPt�|ddddd	dd
diikspt�|ddiiks�t�dS)Nr�rOr�r�rrWr#)r�r)r�rW)r�r#)r�rrr1)r*r�rr+r+r,�test_cache_call_twice0s

z%TestWrapNumbers.test_cache_call_twicecCs�dtddd�i}t|d�dtddd�i}t|d�tj�}|dd|iksPt�|ddd
dddddiikspt�|dddtdg�iiks�t�dd	�}dtddd�i}t|d�tj�}|dd|iks�t�|�dtddd
�i}t|d�tj�}|dd|ik�s
t�|�dtddd�i}t|d�tj�}|dd|ik�sHt�|ddddddddiik�sjt�|dddtdg�iik�s�t�dS)Nr�r�r�r�rrWr#cSsJtj�}|ddddddd	diiks(t�|dddtd
g�iiksFt�dS)NrWr�r�rr#r�)r�r)r�rW)r�r#)r�r#)rrr1rX)rr+r+r,�check_cache_infoKsz9TestWrapNumbers.test_cache_wrap.<locals>.check_cache_infor�r�r�)r�r)r�rW)r�r#)r�r#)r�r)r�rW)r�r#)r�r#)r�rrr1rX)r*r�rr"r+r+r,�test_cache_wrap<s6




zTestWrapNumbers.test_cache_wrapcCs�dtddd�i}t|d�tddd�tddd�d�}t|d�tj�}|dd|iksZt�|ddd	dd
dddiikszt�|ddiiks�t�dS)Nr�rOr�r�)r�r�rrWr#)r�r)r�rW)r�r#)r�rrr1)r*r�rr+r+r,�test_cache_changing_keysns

z(TestWrapNumbers.test_cache_changing_keyscCs\dtddd�i}t|d�t|d�tjd�tj�iiifksDt�tjd�tjd�dS)Nr�rOr�z?!?)r�rr�rr1)r*r�r+r+r,�test_cache_clearzs



z TestWrapNumbers.test_cache_clearz
not supported)�reasoncCs�tj�stj�rtjd��tj�tj�tj�}x$|D]}d|ksLt�d|ks<t�q<Wtjj�tj�}x$|D]}d|ks�t�d|kstt�qtWtjj�tj�}|iiifks�t�dS)Nzno disks or NICs availablezpsutil.disk_io_counterszpsutil.net_io_counters)	r'Zdisk_io_countersZnet_io_countersr�skiprrr1r�)r*Zcachesrr+r+r,�test_cache_clear_public_apis�s 




z,TestWrapNumbers.test_cache_clear_public_apisN)r\r]r^r�r�r�r�r�r�r�r�rr r!r#r$r%r�mark�skipifrr(r+r+r+r,r��s
2	r�zcan't locate scripts directory)r&c@s�eZdZdZedd��Zedd��Zdd�Zej	j
edd	�d
d��Zdd
�Z
dd�Zdd�Zdd�Zej	j
eoxej�dd	�dd��Zdd�Zdd�Zdd�Zej	j
edd	�dd��Zej	j
ed d	�d!d"��Zd#d$�Zd%d&�Zd'd(�Zd)d*�Zd+d,�Z d-d.�Z!ej	j
e"d/d	�d0d1��Z#d2d3�Z$ej	j
e%d d	�d4d5��Z&ej	j
e'd d	�d6d7��Z(ej	j
e)d d	�ej	j
e*d8d	�d9d:���Z+ej	j
e)d d	�ej	j
e*d8d	�d;d<���Z,d=S)>�TestScriptsz-Tests for scripts in the "scripts" directory.cOs�|jdt�dtjjt|�}t|g}x|D]}|j|�q,Wyt|f|�j	�}Wn8t
k
r�}zdt|�krxt|�S�WYdd}~XnX|s�t|��|S)N�envz%sr;)
�
setdefaultrr9r�rurrr�r �strip�RuntimeErrorr2r1)�exer�r��cmd�argr�errr+r+r,�
assert_stdout�s
zTestScripts.assert_stdoutc	CsHtjjt|�}trt|dd�nt|��}|j�}WdQRXtj|�dS)N�utf8)�encoding)	r9r�rurr
r��read�ast�parse)r0r��srcr+r+r,�
assert_syntax�szTestScripts.assert_syntaxcCsZt|�}xLtjt�D]>}|jd�rdtjj|�d|kr|jdtjjt|���qWdS)Nz.pyZtest_rzno test defined for %r script)	rfr9�listdirr�endswithr��splitextrnru)r*Zmethsr.r+r+r,�
test_coverage�s
zTestScripts.test_coveragez
POSIX only)r&cCshxbtjt�D]T\}}}xH|D]@}|jd�rtjj||�}tjtj|�tj@s|j	d|��qWqWdS)Nz.pyz%r is not executable)
r9�walkrr=r�ru�stat�S_IXUSR�ST_MODErn)r*�root�dirs�files�filer�r+r+r,�test_executable�s

zTestScripts.test_executablecCs|jd�dS)Nz
disk_usage.py)r4)r*r+r+r,�test_disk_usage�szTestScripts.test_disk_usagecCs|jd�dS)Nzfree.py)r4)r*r+r+r,�	test_free�szTestScripts.test_freecCs|jd�dS)Nz
meminfo.py)r4)r*r+r+r,�test_meminfo�szTestScripts.test_meminfocCs|jdttj���dS)Nzprocinfo.py)r4r2r9r:)r*r+r+r,�
test_procinfo�szTestScripts.test_procinfozno userscCs|jd�dS)Nzwho.py)r4)r*r+r+r,�test_who�szTestScripts.test_whocCs|jd�dS)Nzps.py)r4)r*r+r+r,�test_ps�szTestScripts.test_pscCs|jd�dS)Nz	pstree.py)r4)r*r+r+r,�test_pstree�szTestScripts.test_pstreecCs|jd�dS)Nz
netstat.py)r4)r*r+r+r,�test_netstat�szTestScripts.test_netstatzQEMU user not supportedcCs|jd�dS)Nzifconfig.py)r4)r*r+r+r,�
test_ifconfig�szTestScripts.test_ifconfigz
not supportedcCs|jdttj���dS)Nzpmap.py)r4r2r9r:)r*r+r+r,�	test_pmap�szTestScripts.test_pmapcCs*dtj�j�jkrtjd��|jd�dS)NZussz
not supportedzprocsmem.py)r'r)Zmemory_full_info�_fieldsrr'r4)r*r+r+r,�
test_procsmem�s
zTestScripts.test_procsmemcCs|jd�dS)Nz
killall.py)r;)r*r+r+r,�test_killall�szTestScripts.test_killallcCs|jd�dS)Nz	nettop.py)r;)r*r+r+r,�test_nettop�szTestScripts.test_nettopcCs|jd�dS)Nztop.py)r;)r*r+r+r,�test_top�szTestScripts.test_topcCs|jd�dS)Nziotop.py)r;)r*r+r+r,�
test_iotopszTestScripts.test_iotopcCs,|jdtj�j��}ttj��|ks(t�dS)Nzpidof.py)r4r'r)r.r2r9r:r1)r*�outputr+r+r,�
test_pidofszTestScripts.test_pidofzWINDOWS onlycCs|jd�dS)Nzwinservices.py)r4)r*r+r+r,�test_winservicesszTestScripts.test_winservicescCs|jd�dS)Nzcpu_distribution.py)r;)r*r+r+r,�test_cpu_distributionsz!TestScripts.test_cpu_distributioncCs tj�stjd��|jd�dS)Nzno temperaturesztemperatures.py)r'Zsensors_temperaturesrr'r4)r*r+r+r,�test_temperaturess
zTestScripts.test_temperaturescCs tj�stjd��|jd�dS)Nzno fanszfans.py)r'Zsensors_fansrr'r4)r*r+r+r,�	test_fanss
zTestScripts.test_fansz
no batterycCs|jd�dS)Nz
battery.py)r4)r*r+r+r,�test_batteryszTestScripts.test_batterycCs|jd�dS)Nz
sensors.py)r4)r*r+r+r,�test_sensorsszTestScripts.test_sensorsN)-r\r]r^rlr�r4r;r?rr)r*rrHrIrJrKrLrr'ZusersrMrNrOrPrrQrrRrTrUrVrWrXrZrr[r\rr]rr^rrr_r`r+r+r+r,r+�s:	"r+):rlr8�collectionsr�r|r9rr�rAr�r'Zpsutil.testsrrZpsutil._commonrrrrrr	r
rrZpsutil._compatr
rrrrrrrrrrrrrrrrrrr r!r"r_r�r��
namedtupler�r�r)r*r��existsr+r+r+r+r,�<module>sr8!h