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_process_all.cpython-36.pyc
3

�[g�H�@s�dZddlZddlZddlZddlZddlZddlZddlZddlZddlm	Z	ddlm
Z
ddlmZddlmZddlm
Z
ddlmZdd	lmZdd
lmZddlmZddlmZdd
lmZddlmZddlmZddlmZddlmZddlmZddlmZddlmZddlmZddlmZddlmZddlm Z ddlm!Z!ddlm"Z"ddlm#Z#e�o�e�o�eZ$dd�Z%Gdd�de�Z&Gd d!�d!e�Z'dS)"zeIterate over all process PIDs and for each one of them invoke and
test all psutil.Process() methods.
�N)�AIX)�BSD)�FREEBSD)�LINUX)�MACOS)�NETBSD)�OPENBSD)�OSX)�POSIX)�WINDOWS)�PY3)�FileNotFoundError)�long)�unicode)�
CI_TESTING)�PYTEST_PARALLEL)�	QEMU_USER)�VALID_PROC_STATUSES)�PsutilTestCase)�check_connection_ntuple)�create_sockets)�
is_namedtuple)�is_win_secure_system_proc)�process_namespace)�pytestc"s"t����fdd�������fdd�}ytj���Wn tjk
rV�j��iSXy�jddg�}Wn tjk
r��j��Yn�X|d|d��d�ji}t��}xb|j	|j
dd	�D]N\}}y|�||<Wq�tjk
�r}z�|����w�WYdd}~Xq�Xq�W|�|SdS)
Ncs��j|j��|jdk	r&�j|j|�t|tj�rd�j|�|jdk	rz�j|jd��j|j|�nt|tj	�rz�j
|�t|�t|�dS)Nr)
ZassertEqual�pid�name�
isinstance�psutil�
ZombieProcessZassertProcessZombie�ppidZassertGreaterEqual�
NoSuchProcess�assertProcessGone�str�repr)�exc�procrr )r�tcase��I/usr/local/lib64/python3.6/site-packages/psutil/tests/test_process_all.py�check_exception7s



z"proc_info.<locals>.check_exceptioncsN�dkrJy�jd�Wn2tjk
rH}z�|����WYdd}~XnXdS)Nr)�waitr�Error)r%)r*rrr r&r(r)�do_waitEs
zproc_info.<locals>.do_waitr rrF)�clear_cache)rr�Processr!Z
assertPidGoneZas_dictr"rr�iterZgettersr,)rr-�d�info�ns�funZfun_namer%r()r*rrr r&r'r)�	proc_info4s.

r5c@s8eZdZdZdd�Zdd�Zdd�Zdd	�Zd
d�Zdd
�Z	dd�Z
dd�Zdd�Zdd�Z
dd�Zdd�Zdd�Zdd�Zdd�Zd d!�Zd"d#�Zd$d%�Zd&d'�Zd(d)�Zd*d+�Zd,d-�Zd.d/�Zd0d1�Zd2d3�Zd4d5�Zd6d7�Zd8d9�Zd:d;�Z d<d=�Z!d>d?�Z"d@dA�Z#dBdC�Z$dDdE�Z%dFdG�Z&dHdI�Z'dJdK�Z(dLS)M�TestFetchAllProcessesz�Test which iterates over all running processes and performs
    some sanity checks against Process API's returned values.
    Uses a process pool to get info about all processes.
    cCstjd�trtj�|_dS)NF)r�
_set_debug�
USE_PROC_POOL�multiprocessingZPool�pool)�selfr(r(r)�setUpks
zTestFetchAllProcesses.setUpcCs&tjd�tr"|jj�|jj�dS)NT)rr7r8r:�	terminate�join)r;r(r(r)�tearDownrs

zTestFetchAllProcesses.tearDowncCsNddlm}tr"|jj|tj��Sg}xtj�D]}|j||��q0W|SdS)Nr)r5)Zpsutil.tests.test_process_allr5r8r:Zimap_unorderedr�pids�append)r;r5Zlsrr(r(r)�iter_proc_infoxsz$TestFetchAllProcesses.iter_proc_infocCsg}x�|j�D]�}x�|j�D]�\}}t||�}y|||�Wn�tk
r�dddd}|d||dt|�|f7}|dd7}|dtj�7}djdd	�|j�D��d}|j	|�YqX|d
dgddifkr|st
|��qWqW|r�|jdj|���dS)
N�
�=�Fz+FAIL: name=test_%s, pid=%s, ret=%s
info=%s
r�-z
%scss|]}d|VqdS)� �Nz    r()�.0�ir(r(r)�	<genexpr>�sz1TestFetchAllProcesses.test_all.<locals>.<genexpr>rg�)rB�items�getattr�	Exceptionr$�	traceback�
format_excr>�
splitlinesrA�AssertionErrorZfail)r;Zfailuresr2r�value�meth�sr(r(r)�test_all�s*

zTestFetchAllProcesses.test_allcCs.t|t�st�x|D]}t|t�st�qWdS)N)r�listrSr#)r;�retr2�partr(r(r)�cmdline�s
zTestFetchAllProcesses.cmdlinecCs�t|ttf�st�|j�|ks"t�|r�tr:|jd�r:dStjj	|�sNt|��t
r�tjj|�r�ttd�r�ttd�r�ytj
|tj�s�t�Wn(tk
r�tjj|�r�tr��YnXdS)Nz.exe�access�X_OK)rr#rrS�stripr�endswith�os�path�isabsr
�isfile�hasattrr\r]�existsr)r;rYr2r(r(r)�exe�szTestFetchAllProcesses.execCst|t�st�|dkst�dS)Nr)r�intrS)r;rYr2r(r(r)r�szTestFetchAllProcesses.pidcCs*t|ttf�st�|dkst�t|�dS)Nr)rrgrrSr5)r;rYr2r(r(r)r �szTestFetchAllProcesses.ppidcCsDt|ttf�st�tr,|r,t|d�r,dSts@|s@tt|���dS)Nr)rr#rrSrrrr$)r;rYr2r(r(r)r�s
zTestFetchAllProcesses.namecCs`t|t�st�y|dkst�Wn*tk
rHtrB|dtjkrBn�YnXtjdtj|��dS)Nr�statusz%Y %m %d %H:%M:%S)	r�floatrSrr�
STATUS_ZOMBIE�time�strftime�	localtime)r;rYr2r(r(r)�create_time�sz!TestFetchAllProcesses.create_timecCs8t|�st�x&|D]}t|t�s$t�|dkst�qWdS)Nr)rrSrrg)r;rYr2�uidr(r(r)�uids�s
zTestFetchAllProcesses.uidscCsDt|�st�x2|D]*}t|t�s$t�trtr|dkst�qWdS)Nr)rrSrrgrr)r;rYr2�gidr(r(r)�gids�s

zTestFetchAllProcesses.gidscCs.t|t�st�|j�|kst�|j�s*t�dS)N)rr#rSr^)r;rYr2r(r(r)�username�szTestFetchAllProcesses.usernamecCs>t|t�st�|st|��tr"dS|dks.t�|tks:t�dS)N�?)rr#rSrr)r;rYr2r(r(r)rh�szTestFetchAllProcesses.statuscCsDt|�st�x2|D]*}t|ttf�s(t�|dkr|dkst�qWdS)N�r���)rrSrrgr)r;rYr2�fieldr(r(r)�io_counters�s

z!TestFetchAllProcesses.io_counterscCs�trBt|jt�st�t|jt�s$t�|jdks2t�|jdks|t�n:tjtjtj	tj
g}t|t�sdt�|dkspt�||ks|t�dS)Nr)rr�ioclassrgrSrTrZIOPRIO_VERYLOWZ
IOPRIO_LOWZ
IOPRIO_NORMALZIOPRIO_HIGH)r;rYr2�choicesr(r(r)�ionice�szTestFetchAllProcesses.ionicecCs:t|t�st�tr*|dkr*t|d�r*dS|dks6t�dS)Nrrru)rrgrSrr)r;rYr2r(r(r)�num_threads
sz!TestFetchAllProcesses.num_threadscCsvt|t�st�xb|D]Z}t|�s$t�|jdks2t�|jdks@t�|jdksNt�x|D]}t|ttf�sTt�qTWqWdS)Nr)	rrXrSr�id�	user_time�system_timergri)r;rYr2�trwr(r(r)�threadss

zTestFetchAllProcesses.threadscCs8t|�st�x&|D]}t|t�s$t�|dkst�qWdS)Nr)rrSrri)r;rYr2�nr(r(r)�	cpu_timess
zTestFetchAllProcesses.cpu_timescCs2t|t�st�d|ko dkns.t|��dS)NggY@)rrirS)r;rYr2r(r(r)�cpu_percent%sz!TestFetchAllProcesses.cpu_percentcCs^t|t�st�tr|dkrdS|dks*t�tj�dkrB|dksBt�|tttj���ksZt�dS)Nrurrv)rrgrSrr�	cpu_countrX�range)r;rYr2r(r(r)�cpu_num)szTestFetchAllProcesses.cpu_numcCs�t|�st�x*|D]"}t|ttf�s(t�|dkst�qWtr||j|jksLt�|j|j	ks\t�|j
|jkslt�|j|j
ks|t�dS)Nr)rrSrrgrrZ	peak_wsetZwsetZpeak_paged_poolZ
paged_poolZpeak_nonpaged_poolZ
nonpaged_poolZ
peak_pagefileZpagefile)r;rYr2rTr(r(r)�memory_info2s
z!TestFetchAllProcesses.memory_infocCs�t|�st�tj�j}xX|jD]N}t||�}t|tt	f�s>t�|dksJt�t
str\|dkr\q||kst|��qWt
r�|j|j
ks�t�dS)Nr�vms�data)r�r�)rrSrZvirtual_memory�total�_fieldsrNrrgrrr	ZpssZuss)r;rYr2r�rrTr(r(r)�memory_full_info=s

z&TestFetchAllProcesses.memory_full_infocCs,t|t�st��x|D�]}t|jt�s,t�t|jt�s<t�|jj�|jksPt�trd|jdks�t�nnt	r�t|j
t�sxt�t|jt�s�t�t|jt�s�t�|j
dks�t�|jd	ks�t�|jdks�t�nt
r�|jr�qtjj|j�s�t|��ytj|j�}Wntk
�rYqXtj|j�st|��qWdS)
Nrur�r�w�a�r+�a+rv)r�r�r�r�r�)rrXrS�fdrgrar#r^rr�position�mode�flagsrr`rb�statr
�S_ISREG�st_mode)r;rYr2�f�str(r(r)�
open_filesMs,z TestFetchAllProcesses.open_filescCst|t�st�|dkst�dS)Nr)rrgrS)r;rYr2r(r(r)�num_fdsgszTestFetchAllProcesses.num_fdscCsPt��@t|�tt|��ks t�x |D]}t|�s6t�t|�q&WWdQRXdS)N)r�len�setrSrr)r;rYr2Zconnr(r(r)�net_connectionsks

z%TestFetchAllProcesses.net_connectionscCs�t|ttf�st�|j�|ks"t�|r�tjj|�s:t|��ytj|�}WnBt	k
r�}z&t
rltjj
|�rln|jtjkrz�WYdd}~XnXtj|j�s�t�dS)N)rr#rrSr^r`rarbr��OSErrorrrZ_psplatformZis_permission_err�errno�ENOENT�S_ISDIRr�)r;rYr2r��errr(r(r)�cwdrszTestFetchAllProcesses.cwdcCs2t|t�st�d|ko dkns.t|��dS)Nr�d)rrirS)r;rYr2r(r(r)�memory_percent�sz$TestFetchAllProcesses.memory_percentcCst|t�st�dS)N)r�boolrS)r;rYr2r(r(r)�
is_running�sz TestFetchAllProcesses.is_runningcCsVt|t�st�|gkst�tttj���}x&|D]}t|t�sBt�||ks0t�q0WdS)N)rrXrSr�rr�rg)r;rYr2Zcpusr�r(r(r)�cpu_affinity�s
z"TestFetchAllProcesses.cpu_affinitycCsJt|ttd�f�st�|dk	rFtjj|�s2t|��tjj|�sFt|��dS)N)rr#�typerSr`rarbre)r;rYr2r(r(r)�terminal�szTestFetchAllProcesses.terminalcCs�x�|D]�}t|jt�st�t|jt�s*t�t|jt�s:t�x�|jD]�}t||�}|dkr||jd�s�t	jj
|j�s�t|j��qB|dkr�|s�tt|���qB|dkr�ts�|s�tt|���qBt|t
tf�s�t�|dksBt�qBWqWdS)Nra�[�anon_inode:�addr�permsr)r�r�)rr�r#rSr�rar�rN�
startswithr`rbr$rrgr)r;rYr2�nt�fnamerTr(r(r)�memory_maps�s 


z!TestFetchAllProcesses.memory_mapscCst|t�st�|dkst�dS)Nr)rrgrS)r;rYr2r(r(r)�num_handles�sz!TestFetchAllProcesses.num_handlescCszt|t�st�tr4d|ko$dknsvt|��nBdd�tt�D�}||ksRt�trht|tj�svt�nt|t�svt�dS)N�cSs g|]}|jd�rtt|��qS)Z_PRIORITY_CLASS)r_rNr)rI�xr(r(r)�
<listcomp>�sz.TestFetchAllProcesses.nice.<locals>.<listcomp>i��)	rrgrSr
�dirrr�enum�IntEnum)r;rYr2Z
prioritiesr(r(r)�nice�s"zTestFetchAllProcesses.nicecCs<t|�st�x*|D]"}t|ttf�s(t�|dkst�qWdS)Nr)rrSrrgr)r;rYr2rTr(r(r)�num_ctx_switches�s
z&TestFetchAllProcesses.num_ctx_switchescCsBt|t�st�t|�dkst�|ddks.t�|ddks>t�dS)N�rrurvrv)r�tuplerSr�)r;rYr2r(r(r)�rlimit�szTestFetchAllProcesses.rlimitcCsDt|t�st�x0|j�D]$\}}t|t�s.t�t|t�st�qWdS)N)r�dictrSrMr#)r;rYr2�k�vr(r(r)�environ�szTestFetchAllProcesses.environN))�__name__�
__module__�__qualname__�__doc__r<r?rBrWr[rfrr rrnrprrrsrhrxr{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)r6esL
			
	r6c@s(eZdZdZdd�Zdd�Zdd�ZdS)	�
TestPidsRangea@Given pid_exists() return value for a range of PIDs which may or
    may not exist, make sure that psutil.Process() and psutil.pids()
    agree with pid_exists(). This guarantees that the 3 APIs are all
    consistent with each other. See:
    https://github.com/giampaolo/psutil/issues/2359

    XXX - Note about Windows: it turns out there are some "hidden" PIDs
    which are not returned by psutil.pids() and are also not revealed
    by taskmgr.exe and ProcessHacker, still they can be instantiated by
    psutil.Process() and queried. One of such PIDs is "conhost.exe".
    Running as_dict() for it reveals that some Process() APIs
    erroneously raise NoSuchProcess, so we know we have problem there.
    Let's ignore this for now, since it's quite a corner case (who even
    imagined hidden PIDs existed on Windows?).
    cCstjd�dS)NF)rr7)r;r(r(r)r<�szTestPidsRange.setUpcCstjd�dS)NT)rr7)r;r(r(r)r?�szTestPidsRange.tearDownc
CsVdd�}dd�}x@tdd�D]2}tr.||�r.q|j|d��||�WdQRXqWdS)NcSstytd|d�}Wntk
r&dSX|�>x.|D]&}|jd�r4t|j�d�}||kSq4Wtd��WdQRXdS)Nz/proc/%s/status�rbFsTgid:ruz'Tgid' line not found)�openr
r�rg�split�
ValueError)rr��lineZtgidr(r(r)�is_linux_tid�s

z+TestPidsRange.test_it.<locals>.is_linux_tidcSs�d}x�tj|�}yb|r6tj|�tsp|tj�kspt�n:ts\tjtj	��tj|�WdQRXtsp|tj�kspt�Wn,tj
tfk
r�|d8}|dkr��YqXdSqWdS)N�rur)rZ
pid_existsr/rr@rSrrZraisesr!r,)rr�rer(r(r)�check�s$

z$TestPidsRange.test_it.<locals>.checkrui�)r)r�rZsubTest)r;r�r�rr(r(r)�test_it�szTestPidsRange.test_itN)r�r�r�r�r<r?r�r(r(r(r)r��sr�)(r�r�r�r9r`r�rkrPrrrrrrrrr	r
rZpsutil._compatrr
rrZpsutil.testsrrrrrrrrrrrr8r5r6r�r(r(r(r)�<module>	sN1q