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

�[g[d�@sdZddlmZddlZddlZddlZddlZddlZddlZddl	Z	ddl
Z
ddlZddlZddl
Z
ddlZddlZddlZddlmZddlmZddlmZddlmZddlmZdd	lmZdd
lmZddlmZddlmZdd
lmZddlmZddlmZddlmZddlm Z ddlm!Z!ddlm"Z"ddlm#Z#ddlm$Z$ddlm%Z%ddlm&Z&ddlm'Z'ddlm(Z(ddlm)Z)ddlm*Z*ddlm+Z+ddlm,Z,ddlm-Z-e�r�ddl.m/Z/dd l.m0Z0dd!l.m1Z1dd"l.m2Z2ej3j4ej3j5e6��Z7d#Z8d$Z9d%Z:d&Z;d'Z<e�r,d(Z=ejd)�Z>d*d+�Z?d,d-�Z@d.d/�ZAd0d1�ZBd2d3�ZCd4d5�ZDd6d7�ZEd8d9�ZFd:d;�ZGejHd<d=��ZIejHd>d?��ZJe'jKjLed@dA�GdBdC�dCe#��ZMe'jKjLed@dA�GdDdE�dEe#��ZNe'jKjLed@dA�GdFdG�dGe#��ZOe'jKjLed@dA�GdHdI�dIe#��ZPe'jKjLed@dA�GdJdK�dKe#��ZQe'jKjLed@dA�GdLdM�dMe#��ZRe'jKjLed@dA�GdNdO�dOe#��ZSe'jKjLed@dA�GdPdQ�dQe#��ZTe'jKjLed@dA�GdRdS�dSe#��ZUe'jKjLed@dA�GdTdU�dUe#��ZVe'jKjLed@dA�GdVdW�dWe#��ZWe'jKjLed@dA�e'jKjLe dXdA�GdYdZ�dZe#���ZXe'jKjLed@dA�Gd[d\�d\e#��ZYe'jKjLed@dA�Gd]d^�d^e#��ZZe'jKjLed@dA�Gd_d`�d`e#��Z[e'jKjLed@dA�Gdadb�dbe#��Z\e'jKjLed@dA�Gdcdd�dde#��Z]e'jKjLed@dA�Gdedf�dfe#��Z^e'jKjLed@dA�e'jKjLedgdA�Gdhdi�die#���Z_e'jKjLed@dA�Gdjdk�dke#��Z`e'jKjLed@dA�Gdldm�dme#��Zae'jKjLed@dA�Gdndo�doe#��Zbe'jKjLed@dA�Gdpdq�dqe#��Zce'jKjLed@dA�Gdrds�dse#��Zde'jKjLed@dA�Gdtdu�due#��ZedS)vzLinux specific tests.�)�divisionN)�LINUX)�PY3)�FileNotFoundError)�
basestring)�AARCH64)�GITHUB_ACTIONS)�GLOBAL_TIMEOUT)�HAS_BATTERY)�HAS_CPU_FREQ)�HAS_GETLOADAVG)�
HAS_RLIMIT)�PYPY)�PYTEST_PARALLEL)�	QEMU_USER)�TOLERANCE_DISK_USAGE)�TOLERANCE_SYS_MEM)�PsutilTestCase)�
ThreadTask)�
call_until)�mock)�pytest)�
reload_module)�retry_on_failure)�safe_rmpath)�sh)�skip_on_not_implemented)�which)�CLOCK_TICKS)�RootFsDeviceFinder)�calculate_avail_vmem)�open_binaryi�i�i'�i�i�iz/sys/class/hwmon/hwmon*cCspddl}|dd�}tr"t|d�}tjtjtj�}tj|��*tj|j	|j
�ttj
d|��dd��SQRXdS)Nr��ascii�256s��)�fcntlr�bytes�socket�AF_INET�
SOCK_DGRAM�
contextlib�closing�	inet_ntoa�ioctl�fileno�SIOCGIFADDR�struct�pack)�ifnamer'�s�r6�C/usr/local/lib64/python3.6/site-packages/psutil/tests/test_linux.py�get_ipv4_addressNs
r8cCspddl}|dd�}tr"t|d�}tjtjtj�}tj|��*tj|j	|j
�ttj
d|��dd��SQRXdS)Nrr"r#r$r%r&)r'rr(r)r*r+r,r-r.r/r0�SIOCGIFNETMASKr2r3)r4r'r5r6r6r7�get_ipv4_netmask]s
r:cCspddl}|dd�}tr"t|d�}tjtjtj�}tj|��*tj|j	|j
�ttj
d|��dd��SQRXdS)Nrr"r#r$r%r&)r'rr(r)r*r+r,r-r.r/r0�SIOCGIFBRDADDRr2r3)r4r'r5r6r6r7�get_ipv4_broadcastls
r<cCs�td��N}g}x*|D]"}|j�}|d|kr|j|�qWt|�dkrRtd|��WdQRXx~tt|��D]n}||d}g}x.tdt|�d�D]}|j|||d��q�Wdj|�}	tjtj	|	�}
tj
tj	|
�||<qjW|S)Nz/proc/net/if_inet6�rzcould not find interface %r��:���)�open�split�append�len�
ValueError�range�joinr)�	inet_pton�AF_INET6�	inet_ntop)r4�fZ
all_fields�line�fields�iZunformatted�groups�j�	formatted�packedr6r6r7�get_ipv6_addresses{s"


rSc
s�ddl}|dd�}tr"t|d�}tjtjtj�}tj|��`|j|j	�t
tjd|��}trfdd��nddl
}|j�dj�fdd	�|d
d�D��dd
�SQRXdS)Nrr"r#r$cSs|S)Nr6)�xr6r6r7�ord�szget_mac_address.<locals>.ord�csg|]}d�|��qS)z%02x:r6)�.0�char)rUr6r7�
<listcomp>�sz#get_mac_address.<locals>.<listcomp>�r&r=r@)r'rr(r)r*r+r,r-r/r0�
SIOCGIFHWADDRr2r3�__builtin__rUrG)r4r'r5�infor\r6)rUr7�get_mac_address�s

r^cCs�tddgddid�}|jd�}xJ|D]B}|jd�r$|j�\}}}}tjdd�}|t|�t|�t|��Sq$Wtd	dj|���d
S)zQParse 'free' cmd and return swap memory's s total, used and free
    values.
    �freez-b�LANGzC.UTF-8)�env�
ZSwapztotal used freez&can't find 'Swap' in 'free' output:
%sN)rrB�
startswith�collections�
namedtuple�intrErG)�out�linesrL�_�total�usedr_�ntr6r6r7�	free_swap�s


rmcCs�tddgddid�}|jd�}xT|D]L}|jd�r$dd	�|j�d
d�D�\}}}}tjdd�}||||||�Sq$Wtd
dj|���dS)zSParse 'free' cmd and return physical memory's total, used
    and free values.
    r_z-br`zC.UTF-8)rarbZMemcss|]}t|�VqdS)N)rf)rWrTr6r6r7�	<genexpr>�szfree_physmem.<locals>.<genexpr>r=�ztotal used free shared outputz%can't find 'Mem' in 'free' output:
%sN)rrBrcrdrerErG)rgrhrLrjrkr_�sharedrlr6r6r7�free_physmem�s


"rqcCsZtddgddid�}x4|jd�D]&}|j�}||kr t|jd�d�Sq Wtd	|��dS)
N�vmstatz-sr`zC.UTF-8)rarb� rz can't find %r in 'vmstat' output)rrB�striprfrE)�statrgrLr6r6r7rr�srrcCs@tddg�j�}d|kr"tjd��ttttjd|j	�d���S)Nr_z-V�UNKNOWNzcan't determine free versionz\d+r=r@)
rrtr�skip�tuple�maprf�re�findallrB)rgr6r6r7�get_free_version_info�s
r|c	#sD��fdd�}t�trdnd}tj|d|d��}|VWdQRXdS)z�Mock open() builtin and forces it to return a certain content
    for a given path. `pairs` is a {"path": "content", ...} dict.
    csT|�kr@�|}tr4t|t�r(tj|�Stj|�SqPtj|�Sn�|f|�|�SdS)N)r�
isinstancer�io�StringIO�BytesIO)�name�args�kwargs�content)�	orig_open�pairsr6r7�	open_mock�s

z$mock_open_content.<locals>.open_mockz
builtins.openz__builtin__.openT)�create�side_effectN)rArr�patch)r�r��patch_point�mr6)r�r�r7�mock_open_content�s

r�c	#sF���fdd�}t�trdnd}tj|d|d��}|VWdQRXdS)zZMock open() builtin and raises `exc` if the path being opened
    matches `for_path`.
    cs"|�kr��n�|f|�|�SdS)Nr6)r�r�r�)�exc�for_pathr�r6r7r��sz&mock_open_exception.<locals>.open_mockz
builtins.openz__builtin__.openT)r�r�N)rArrr�)r�r�r�r�r�r6)r�r�r�r7�mock_open_exception�s
r�z
LINUX only)�reasonc@sLeZdZdd�Ze�dd��Ze�dd��Ze�dd��Ze�d	d
��ZdS)�"TestSystemVirtualMemoryAgainstFreecCs"t�j}tj�j}||kst�dS)N)rqrj�psutil�virtual_memory�AssertionError)�self�	cli_value�psutil_valuer6r6r7�
test_totals
z-TestSystemVirtualMemoryAgainstFree.test_totalcCsRt�dkrtjd��t�dkr(tjd��t�j}tj�j}t||�tksNt	�dS)	N��zfree version too oldr>rzfree version too recent)r�r�r�)r>rr)
r|rrwrqrkr�r��absrr�)r�r�r�r6r6r7�	test_useds





z,TestSystemVirtualMemoryAgainstFree.test_usedcCs*t�j}tj�j}t||�tks&t�dS)N)rqr_r�r�r�rr�)r�r�r�r6r6r7�	test_free's
z,TestSystemVirtualMemoryAgainstFree.test_freecCsPt�}|j}|dkrtjd��tj�j}t||�tksLtd|||j	f��dS)Nrz%free does not support 'shared' columnz	%s %s 
%s)
rqrprrwr�r�r�rr��output)r�r_�
free_valuer�r6r6r7�test_shared-s

z.TestSystemVirtualMemoryAgainstFree.test_sharedcCsrtddg�}|jd�}d|dkr.tjd��n@t|dj�d	�}tj�j}t||�t	ksnt
d|||f��dS)
Nr_z-brb�	availablerz(free does not support 'available' columnr=z	%s %s 
%sr@)rrBrrwrfr�r�r�r�rr�)r�rgrhr�r�r6r6r7�test_available8s

z1TestSystemVirtualMemoryAgainstFree.test_availableN)	�__name__�
__module__�__qualname__r�rr�r�r�r�r6r6r6r7r�s
r�c@sZeZdZdd�Ze�dd��Ze�dd��Ze�dd��Ze�d	d
��Ze�dd��Z	d
S)�$TestSystemVirtualMemoryAgainstVmstatcCs.td�d}tj�j}t||�tks*t�dS)Nztotal memoryi)rrr�r�rjr�rr�)r��vmstat_valuer�r6r6r7r�Js
z/TestSystemVirtualMemoryAgainstVmstat.test_totalcCsVt�d	krtjd��t�d
kr(tjd��td�d}tj�j}t||�tksRt	�dS)Nr�r�zfree version too oldr>rzfree version too recentzused memoryi)r�r�r�)r>rr)
r|rrwrrr�r�rkr�rr�)r�r�r�r6r6r7r�Os





z.TestSystemVirtualMemoryAgainstVmstat.test_usedcCs.td�d}tj�j}t||�tks*t�dS)Nzfree memoryi)rrr�r�r_r�rr�)r�r�r�r6r6r7r�as
z.TestSystemVirtualMemoryAgainstVmstat.test_freecCs.td�d}tj�j}t||�tks*t�dS)Nz
buffer memoryi)rrr�r��buffersr�rr�)r�r�r�r6r6r7�test_buffersgs
z1TestSystemVirtualMemoryAgainstVmstat.test_bufferscCs.td�d}tj�j}t||�tks*t�dS)Nz
active memoryi)rrr�r��activer�rr�)r�r�r�r6r6r7�test_activems
z0TestSystemVirtualMemoryAgainstVmstat.test_activecCs.td�d}tj�j}t||�tks*t�dS)Nzinactive memoryi)rrr�r��inactiver�rr�)r�r�r�r6r6r7�
test_inactivess
z2TestSystemVirtualMemoryAgainstVmstat.test_inactiveN)
r�r�r�r�rr�r�r�r�r�r6r6r6r7r�Hsr�c@sBeZdZdd�Ze�dd��Zdd�Zdd�Zd	d
�Zdd�Z	d
S)�TestSystemVirtualMemoryMockscCsdtjd�j�}td|i���>}tjdd���$}tjd�tj�}|j	sJt
�t|�dksZt
�|d}dt|j
�kstt
�d	t|j
�ks�t
�d
t|j
�ks�t
�dt|j
�ks�t
�dt|j
�ks�t
�d
t|j
�ks�t
�dt|j
�ks�t
�|jdks�t
�|jdks�t
�|jdk�st
�|jdk�st
�|jdk�s,t
�|jdk�s<t
�|jdk�sLt
�WdQRXWdQRXdS)NaL            Active(anon):    6145416 kB
            Active(file):    2950064 kB
            Inactive(anon):   574764 kB
            Inactive(file):  1567648 kB
            MemAvailable:         -1 kB
            MemFree:         2057400 kB
            MemTotal:       16325648 kB
            SReclaimable:     346648 kB
            z
/proc/meminfoT)�record�alwaysr=rz#memory stats couldn't be determined�cachedrpr�r�r�r�)�textwrap�dedent�encoder��warnings�catch_warnings�simplefilterr�r��calledr�rD�str�messager�r�r�rpr�r��slab)r�r�r��ws�ret�wr6r6r7�test_warnings_on_misses|s.	


z4TestSystemVirtualMemoryMocks.test_warnings_on_missescCs�i}td��4}x,|D]$}|j�}t|d�d||d<qWWdQRXt|�}d|kr~|d}t||�|d}|dks~t�dS)Nz
/proc/meminfor=irs
MemAvailable:�dr")r!rBrfr r�r�)r�ZmemsrKrLrM�a�bZdiff_percentr6r6r7�test_avail_old_percent�s

&z3TestSystemVirtualMemoryMocks.test_avail_old_percentcCs|tjd�j�}td|i��X}tjdd��}tj�}WdQRX|jsFt	�|j
d	ksTt	�|d}dt|j�ksnt	�WdQRXdS)
Na            Active:          9444728 kB
            Active(anon):    6145416 kB
            Active(file):    2950064 kB
            Buffers:          287952 kB
            Cached:          4818144 kB
            Inactive(file):  1578132 kB
            Inactive(anon):   574764 kB
            Inactive(file):  1567648 kB
            MemAvailable:    6574984 kB
            MemFree:         2057400 kB
            MemTotal:       16325648 kB
            Shmem:            577588 kB
            SReclaimable:     346648 kB
            z
/proc/meminfoT)r�i�Sdirz,inactive memory stats couldn't be determinedl �")
r�r�r�r�r�r�r�r�r�r�r�r�r�)r�r�r�r�r�r�r6r6r7� test_avail_old_comes_from_kernel�s

z=TestSystemVirtualMemoryMocks.test_avail_old_comes_from_kernelcCs|tjd�j�}td|i��X}tjdd��}tj�}WdQRX|jsFt	�|j
dksTt	�|d}d	t|j�ksnt	�WdQRXdS)
Nat            Active:          9444728 kB
            Active(anon):    6145416 kB
            Buffers:          287952 kB
            Cached:          4818144 kB
            Inactive(file):  1578132 kB
            Inactive(anon):   574764 kB
            MemFree:         2057400 kB
            MemTotal:       16325648 kB
            Shmem:            577588 kB
            z
/proc/meminfoT)r�i�dii�Irz,inactive memory stats couldn't be determinedi�}l'Ll`LG)
r�r�r�r�r�r�r�r�r�r�r�r�r�)r�r�r�r�r�r�r6r6r7�test_avail_old_missing_fields�s


z:TestSystemVirtualMemoryMocks.test_avail_old_missing_fieldscCs�tjd�j�}td|i��ltdttjd���Ntj	dd��6}t
j�}|jdksTt
�|d
}dt|j�ksnt
�WdQRXWdQRXWdQRXdS)Na�            Active:          9444728 kB
            Active(anon):    6145416 kB
            Active(file):    2950064 kB
            Buffers:          287952 kB
            Cached:          4818144 kB
            Inactive(file):  1578132 kB
            Inactive(anon):   574764 kB
            Inactive(file):  1567648 kB
            MemFree:         2057400 kB
            MemTotal:       16325648 kB
            Shmem:            577588 kB
            SReclaimable:     346648 kB
            z
/proc/meminfoz/proc/zoneinfozno such file or directoryT)r�i�dii�Irz,inactive memory stats couldn't be determinedi�}l'Ll`LG)r�r�r�r�r��IOError�errno�ENOENTr�r�r�r�r�r�r�r�)r�r�r�r�r�r6r6r7�test_avail_old_missing_zoneinfo�s
z<TestSystemVirtualMemoryMocks.test_avail_old_missing_zoneinfoc
Cs�tjd�j�}td|i���}tj�}|js.t�|jdks<t�|j	dksJt�|j
dksXt�|jdksft�|jdkstt�|j
dks�t�|jdks�t�|jdks�t�|jdks�t�WdQRXdS)Na�            MemTotal:              100 kB
            MemFree:               2 kB
            MemAvailable:          3 kB
            Buffers:               4 kB
            Cached:                5 kB
            SwapCached:            6 kB
            Active:                7 kB
            Inactive:              8 kB
            Active(anon):          9 kB
            Inactive(anon):        10 kB
            Active(file):          11 kB
            Inactive(file):        12 kB
            Unevictable:           13 kB
            Mlocked:               14 kB
            SwapTotal:             15 kB
            SwapFree:              16 kB
            Dirty:                 17 kB
            Writeback:             18 kB
            AnonPages:             19 kB
            Mapped:                20 kB
            Shmem:                 21 kB
            Slab:                  22 kB
            SReclaimable:          23 kB
            SUnreclaim:            24 kB
            KernelStack:           25 kB
            PageTables:            26 kB
            NFS_Unstable:          27 kB
            Bounce:                28 kB
            WritebackTmp:          29 kB
            CommitLimit:           30 kB
            Committed_AS:          31 kB
            VmallocTotal:          32 kB
            VmallocUsed:           33 kB
            VmallocChunk:          34 kB
            HardwareCorrupted:     35 kB
            AnonHugePages:         36 kB
            ShmemHugePages:        37 kB
            ShmemPmdMapped:        38 kB
            CmaTotal:              39 kB
            CmaFree:               40 kB
            HugePages_Total:       41 kB
            HugePages_Free:        42 kB
            HugePages_Rsvd:        43 kB
            HugePages_Surp:        44 kB
            Hugepagesize:          45 kB
            DirectMap46k:          46 kB
            DirectMap47M:          47 kB
            DirectMap48G:          48 kB
            z
/proc/meminfor�i�r>ro�����r�i�ii�ipiTii iXi)r�r�r�r�r�r�r�r�rjr_r�r�rpr�r�r�r�)r�r�r�Zmemr6r6r7�test_virtual_memory_mockeds1

z7TestSystemVirtualMemoryMocks.test_virtual_memory_mockedN)
r�r�r�r�rr�r�r�r�r�r6r6r6r7r�zs$r�c@s\eZdZedd��Zdd�Ze�dd��Ze�dd��Zd	d
�Z	dd�Z
d
d�Zdd�ZdS)�TestSystemSwapMemoryc	Cs,td��}|j�}WdQRXd|ko*d|kS)z3Return True if /proc/meminfo provides swap metrics.z
/proc/meminfoNz
SwapTotal:z	SwapFree:)rA�read)rK�datar6r6r7�meminfo_has_swap_infoNs
z*TestSystemSwapMemory.meminfo_has_swap_infocCs*t�j}tj�j}t||�tks&t�dS)N)rmrjr��swap_memoryr�rr�)r�r�r�r6r6r7r�Us
zTestSystemSwapMemory.test_totalcCs*t�j}tj�j}t||�tks&t�dS)N)rmrkr�r�r�rr�)r�r�r�r6r6r7r�Zs
zTestSystemSwapMemory.test_usedcCs*t�j}tj�j}t||�tks&t�dS)N)rmr_r�r�r�rr�)r�r�r�r6r6r7r�`s
zTestSystemSwapMemory.test_freecCs�tjddd���}tjdd��h}tjd�tj�}|js:t�t	|�dksJt�|d}dt
|j�ksdt�|jdksrt�|j
dks�t�WdQRXWdQRXdS)	Nzpsutil._common.openT)r�)r�r�r=rz9'sin' and 'sout' swap memory stats couldn't be determined)rr�r�r�r�r�r�r�r�rDr�r��sin�sout)r�r�r�r�r�r6r6r7�test_missing_sin_soutfs

z*TestSystemSwapMemory.test_missing_sin_soutcCs�tdttjd����}tjdd��h}tjd�tj�}|j	s>t
�t|�dksNt
�|d}dt|j
�ksht
�|jdksvt
�|jdks�t
�WdQRXWdQRXdS)	Nz/proc/vmstatzno such file or directoryT)r�r�r=rzK'sin' and 'sout' swap memory stats couldn't be determined and were set to 0)r�r�r�r�r�r�r�r�r�r�r�rDr�r�r�r�)r�r�r�r�r�r6r6r7�test_no_vmstat_mockedus

z*TestSystemSwapMemory.test_no_vmstat_mockedcCs�|j�stjd��tjd��}tj�}WdQRX|js<t�ddl	j
}|j�\}}}}}}}||9}||9}|j|kszt�t
|j|�tks�t�dS)Nz!/proc/meminfo has no swap metricsz"psutil._pslinux.cext.linux_sysinfor)r�rrwrr�r�r�r�r�Zpsutil._psutil_linuxZ
_psutil_linuxZ
linux_sysinforjr�r_r)r�r��swapZcextrirjr_Zunit_multiplierr6r6r7�test_meminfo_against_sysinfo�s

z1TestSystemSwapMemory.test_meminfo_against_sysinfoc	Cs.tddi��}tj�|js t�WdQRXdS)Nz
/proc/meminfo�)r�r�r�r�r�)r�r�r6r6r7�#test_emulate_meminfo_has_no_metrics�sz8TestSystemSwapMemory.test_emulate_meminfo_has_no_metricsN)
r�r�r��staticmethodr�r�rr�r�r�r�r�r�r6r6r6r7r�Lsr�c@seZdZdd�ZdS)�TestSystemCPUTimescCs�tj�j}tjdtj�d�d}ttt	|j
d���}|dkrLd|ksXt�nd|ksXt�|d
krnd	|kszt�nd	|kszt�|dkr�d|ks�t�nd|ks�t�dS)Nz
\d+\.\d+\.\d+r�r�.���stealr&Zguestr�Z
guest_nice)r�r�r�)r�r�r&)r�r�r)r��	cpu_times�_fieldsrzr{�os�unamerxryrfrBr�)r�rMZ
kernel_verZkernel_ver_infor6r6r7�test_fields�s
zTestSystemCPUTimes.test_fieldsN)r�r�r�r�r6r6r6r7r��sr�c@s�eZdZejjejjd�dd�dd��Z	ejjejjd�dd�dd	��Z
ejjed
�dd�dd
��Zejjed�dd�dd��Z
dd�ZdS)�TestSystemCPUCountLogicalz/sys/devices/system/cpu/onlinez-/sys/devices/system/cpu/online does not exist)r�c
CsVtd��}|j�j�}WdQRXdt|�krRt|jd�d�d}tj�|ksRt�dS)Nz/sys/devices/system/cpu/online�-r=)	rAr�rtr�rfrBr��	cpu_countr�)r�rK�valuer6r6r7�test_against_sysdev_cpu_online�s

z8TestSystemCPUCountLogical.test_against_sysdev_cpu_onlinez/sys/devices/system/cpuz&/sys/devices/system/cpu does not existcCs0tjd�}tdd�|D��}tj�|ks,t�dS)Nz/sys/devices/system/cpucSs g|]}tjd|�dk	r|�qS)zcpu\d+$N)rz�search)rWrTr6r6r7rY�szITestSystemCPUCountLogical.test_against_sysdev_cpu_num.<locals>.<listcomp>)r��listdirrDr�r�r�)r�Zls�countr6r6r7�test_against_sysdev_cpu_num�s
z5TestSystemCPUCountLogical.test_against_sysdev_cpu_numZnprocznproc utility not availablecCs$ttd��}tjdd�|ks t�dS)Nznproc --allT)�logical)rfrr�r�r�)r��numr6r6r7�test_against_nproc�sz,TestSystemCPUCountLogical.test_against_nproc�lscpuzlscpu utility not availablecCs8td�}tdd�|jd�D��}tjdd�|ks4t�dS)Nzlscpu -pcSsg|]}|jd�s|�qS)�#)rc)rWrTr6r6r7rY�sz@TestSystemCPUCountLogical.test_against_lscpu.<locals>.<listcomp>rbT)r�)rrDrBr�r�r�)r�rgr�r6r6r7�test_against_lscpu�sz,TestSystemCPUCountLogical.test_against_lscpuc%Cs,ddl}|jj�}tjdtd���}|jj�|ks6t�|js@t�tjddd��<}|jj�dksbt�|jdkspt�|j	dddks�t�WdQRXt
d	d
��}|j�}WdQRXtj
|�}tjd|dd��}|jj�|ks�t�WdQRXtd	di��&}|jj�|k�st�|j�st�WdQRXWdQRXdS)
Nrzpsutil._pslinux.os.sysconf)r�zpsutil._common.openT)r�r�z
/proc/statz
/proc/cpuinfo�rb)�return_valuer�r�)�psutil._pslinux�_pslinuxZcpu_count_logicalrr�rEr�r�Z
call_count�	call_argsrAr�r~r�r�)r�r��originalr�rKZcpuinfo_data�	fake_filer6r6r7�test_emulate_fallbacks�s*

 
z0TestSystemCPUCountLogical.test_emulate_fallbacksN)r�r�r�r�mark�skipifr��path�existsr�r�rr�r�rr6r6r6r7r��s	r�c@s:eZdZejjed�dd�dd��Zdd�Zdd	�Z	d
S)�TestSystemCPUCountCoresr�zlscpu utility not available)r�cCs`td�}t�}x4|jd�D]&}|jd�s|jd�}|j|d�qWtjdd�t|�ks\t�dS)Nzlscpu -prbr��,r=F)r�)	r�setrBrc�addr�r�rDr�)r�rgZcore_idsrLrMr6r6r7r�s

z*TestSystemCPUCountCores.test_against_lscpuc	CsPtjj�}tjdgd��}tjj�}|js.t�WdQRX|dk	rL||ksLt�dS)Nz	glob.glob)r�)r�r��cpu_count_coresrr�r�r�)r�Zmeth_1r�Zmeth_2r6r6r7�
test_method_2s

z%TestSystemCPUCountCores.test_method_2cCs^tjdgd��2}tjddd��}tjj�dks2t�WdQRXWdQRX|jsPt�|jsZt�dS)Nz	glob.glob)r�zpsutil._common.openT)r�)rr�r�r�r
r�r�)r��m1�m2r6r6r7�test_emulate_nones
&
z)TestSystemCPUCountCores.test_emulate_noneN)
r�r�r�rrrrr�rrr6r6r6r7rsrc@s�eZdZejjedd�dd��Zejjedd�ejjedd�dd���Z	ejjedd�dd	��Z
ejjedd�d
d��Zejjedd�dd
��ZdS)�TestSystemCPUFrequencyz
not supported)r�c	s@�fdd�}tjj�tjd|dd��tj�s2t�WdQRXdS)Ncs|jd�rdS�|�SdS)Nz&/sys/devices/system/cpu/cpufreq/policyF)rc)r)�orig_existsr6r7�path_exists_mock(s
zMTestSystemCPUFrequency.test_emulate_use_second_file.<locals>.path_exists_mockzos.path.existsT)r�r�)r�rrrr�r��cpu_freqr�)r�rr6)rr7�test_emulate_use_second_file%s
z3TestSystemCPUFrequency.test_emulate_use_second_filez,aarch64 does not report mhz in /proc/cpuinfocs��fdd�}tjj�z�tjd|d��rttj�tj�}|sDt	|��|j
dksRt	�|jdks`t	�x0tjdd�D] }|j
dks�t	�|jdksnt	�qnWWdQRXWdttj�tt�XdS)Ncs|jd�rdS�|�SdS)Nz/sys/devices/system/cpu/F)rc)r)�os_path_existsr6r7r;s
zITestSystemCPUFrequency.test_emulate_use_cpuinfo.<locals>.path_exists_mockzos.path.exists)r�gT)�percpu)r�rrrr�rr�r�rr��max�min)r�rr��freqr6)rr7�test_emulate_use_cpuinfo4s
 
z/TestSystemCPUFrequency.test_emulate_use_cpuinfocs��fdd�}t�trdnd}tj||d��ftjddd��Ltj�}|jd	ksRt�|jd
krj|jdksjt�|j	d
kr�|j	dks�t�WdQRXWdQRXdS)
Ncs�|jd�r|jd�rtjd�S|jd�r<|jd�r<tjd�S|jd�rZ|jd�rZtjd�S|dkrltjd	�S�|f|�|�SdS)
Nz/scaling_cur_freqz&/sys/devices/system/cpu/cpufreq/policys500000z/scaling_min_freqs600000z/scaling_max_freqs700000z
/proc/cpuinfoscpu MHz     : 500)�endswithrcr~r�)r�r�r�)r�r6r7r�Rs



z;TestSystemCPUFrequency.test_emulate_data.<locals>.open_mockz
builtins.openz__builtin__.open)r�zos.path.existsT)r�g@@gg��@g�@)
rArrr�r�r�currentr�rr)r�r�r�rr6)r�r7�test_emulate_dataPs

z(TestSystemCPUFrequency.test_emulate_datacs�fdd�}t�trdnd}tj||d���tjddd���tjd	d
d���tjdd�}|djd
ksjt�|djdkr�|djdks�t�|dj	dkr�|dj	dks�t�|djdks�t�|djdkr�|djdks�t�|dj	dkr�|dj	dks�t�WdQRXWdQRXWdQRXdS)Ncs�|}|jd�r"|jd�r"tjd�S|jd�r@|jd�r@tjd�S|jd�r^|jd�r^tjd�S|jd�r||jd�r|tjd	�S|jd�r�|jd�r�tjd
�S|jd�r�|jd�r�tjd�S|dkr�tjd
�S�|f|�|�SdS)Nz/scaling_cur_freqz'/sys/devices/system/cpu/cpufreq/policy0s100000z/scaling_min_freqs200000z/scaling_max_freqs300000z'/sys/devices/system/cpu/cpufreq/policy1s400000s500000s600000z
/proc/cpuinfos#cpu MHz     : 100
cpu MHz     : 400)rrcr~r�)r�r�r��n)r�r6r7r�ss,






z@TestSystemCPUFrequency.test_emulate_multi_cpu.<locals>.open_mockz
builtins.openz__builtin__.open)r�zos.path.existsT)r�z!psutil._pslinux.cpu_count_logicalr�)rrgY@ggi@g�r@r=gy@g@@g��@)
rArrr�r�rrr�rr)r�r�r�rr6)r�r7�test_emulate_multi_cpuqs$z-TestSystemCPUFrequency.test_emulate_multi_cpucs��fdd�}t�trdnd}tj||d��Ptjddd��6tjd	d
d��tj�}|jdksbt�WdQRXWdQRXWdQRXdS)NcsR|jd�rttjd��n6|jd�r,tjd�S|dkr>tjd�S�|f|�|�SdS)Nz/scaling_cur_freqrVz/cpuinfo_cur_freqs200000z
/proc/cpuinfoscpu MHz     : 200)rr�r�r�r~r�)r�r�r�)r�r6r7r��s



zOTestSystemCPUFrequency.test_emulate_no_scaling_cur_freq_file.<locals>.open_mockz
builtins.openz__builtin__.open)r�zos.path.existsT)r�z!psutil._pslinux.cpu_count_logicalr=��)rArrr�r�rrr�)r�r�r�rr6)r�r7�%test_emulate_no_scaling_cur_freq_file�s
z<TestSystemCPUFrequency.test_emulate_no_scaling_cur_freq_fileN)
r�r�r�rrrrrrrrrr r6r6r6r7r#s!4rc@seZdZdd�ZdS)�TestSystemCPUStatscCs*td�}tj�j}t||�dks&t�dS)N�
interruptsi�)rrr�Z	cpu_statsr"r�r�)r�r�r�r6r6r7�test_interrupts�s
z"TestSystemCPUStats.test_interruptsN)r�r�r�r#r6r6r6r7r!�s	r!c@s&eZdZejjedd�dd��ZdS)�TestLoadAvgz
not supported)r�cCs�tj�}td��}|j�j�}WdQRXtt|d�|d�dksHt�tt|d�|d�dksht�tt|d�|d�dks�t�dS)Nz
/proc/loadavgrr=r�)r��
getloadavgrAr�rBr��floatr�)r�r�rKZ
proc_valuer6r6r7�test_getloadavg�s
  zTestLoadAvg.test_getloadavgN)r�r�r�rrrrr'r6r6r6r7r$�sr$c@seZdZdd�ZdS)�TestSystemNetIfAddrscCs�x�tj�j�D]�\}}x�|D]�}|jtjkr@|jt|�ks�t�q|jtj	kr�|jt
|�ks^t�|jt|�kspt�|j
dk	r�|j
t|�ks�t�q�t|�dks�t�q|jtjkr|jjd�d}|t|�kst�qWqWdS)Nz0.0.0.0�%r)r�Znet_if_addrs�items�familyZAF_LINK�addressr^r�r)r*r8�netmaskr:�	broadcastr<rIrBrS)r�r��addrs�addrr,r6r6r7�test_ips�s

zTestSystemNetIfAddrs.test_ipsN)r�r�r�r1r6r6r6r7r(�sr(zQEMU user not supportedc@sPeZdZejjed�dd�dd��Zdd�Zejjed�dd�dd	��Z	d
S)�TestSystemNetIfStats�ifconfigzifconfig utility not available)r�cCsxxrtj�j�D]b\}}ytd|�}Wntk
r:YqX|jd|kksRt|��|jtt	j
d|�d�kst�qWdS)Nzifconfig %sZRUNNINGz(?i)MTU[: ](\d+)r)r��net_if_statsr*r�RuntimeError�isupr��mturfrzr{)r�r��statsrgr6r6r7�test_against_ifconfig	sz*TestSystemNetIfStats.test_against_ifconfigcCsPxJtj�j�D]:\}}td|�� }|jt|j�j��ks>t�WdQRXqWdS)Nz/sys/class/net/%s/mtu)	r�r4r*rAr7rfr�rtr�)r�r�r8rKr6r6r7�test_mtuszTestSystemNetIfStats.test_mtucCsd}x�tj�j�D]�\}}ytd|�}Wntk
r>YqXtjd|�}|r�t|j��dkr�|d7}t	|j
d�j�jd��}t	|j
jd��}||ks�t�qtjd|�}|rt|j��dkr|d7}t	|j
d�j�j��}t	|j
jd��}||kst�qW|�s|jd	��dS)
Nrzifconfig %szflags=(\d+)?<(.*?)>r�r=rz(.*)  MTU:(\d+)  Metric:(\d+)r�zno matches were found)r�r4r*rr5rzr�rDrOr�group�lowerrB�flagsr��fail)r�Z
matches_foundr�r8rg�matchZifconfig_flagsZpsutil_flagsr6r6r7�
test_flagss(zTestSystemNetIfStats.test_flagsN)
r�r�r�rrrrr9r:r@r6r6r6r7r2s
r2c@s0eZdZejjed�dd�e�dd���ZdS)�TestSystemNetIOCountersr3zifconfig utility not available)r�c
Cs*dd�}tjddd�}�x|j�D�]�\}}y||�}Wntk
rNw"YnXt|j|d�dksjt�t|j|d	�dks�t�t|j|d
�dks�t�t|j	|d�dks�t�t|j
|d�dks�t�t|j|d
�dks�t�t|j|d�dk�st�t|j
|d�dks"t�q"WdS)NcSs�i}td|�}ttjd|�d�|d<ttjd|�d�|d<ttjd|�d�|d<ttjd|�d	�|d
<ttjd|�d�|d<ttjd|�d	�|d
<ttjd|�d�|d<ttjd|�d�|d<|S)Nzifconfig %szRX packets[: ](\d+)r�packets_recvzTX packets[: ](\d+)�packets_sentzerrors[: ](\d+)�errinr=�erroutzdropped[: ](\d+)�dropin�dropoutz#RX (?:packets \d+ +)?bytes[: ](\d+)�
bytes_recvz#TX (?:packets \d+ +)?bytes[: ](\d+)�
bytes_sent)rrfrzr{)Znicr�rgr6r6r7r3Esz?TestSystemNetIOCounters.test_against_ifconfig.<locals>.ifconfigTF)Zpernic�nowraprHi�
rIrBrCrDrErFrGi(i()r��net_io_countersr*r5r�rHr�rIrBrCrDrErFrG)r�r3Znior�r8Zifconfig_retr6r6r7r9@sz-TestSystemNetIOCounters.test_against_ifconfigN)	r�r�r�rrrrrr9r6r6r6r7rA>srAc@s8eZdZejded�ejddd�dd���Zdd	�Zd
S)�TestSystemNetConnectionsz psutil._pslinux.socket.inet_ntop)r�zpsutil._pslinux.supports_ipv6F)r�cCsRy*tjtjtj�}|j|j�|jd�Wntjk
r@YnXtjdd�dS)N�::1r�inet6)�kind)rNr)	r)rI�SOCK_STREAMZ
addCleanup�close�bind�errorr��net_connections)r��
supports_ipv6rJr5r6r6r7�test_emulate_ipv6_unsupportedtsz6TestSystemNetConnections.test_emulate_ipv6_unsupportedc
Cs<tjd�}td|i��}tjdd�|js.t�WdQRXdS)Na            0: 00000003 000 000 0001 03 462170 @/tmp/dbus-Qw2hMPIU3n
            0: 00000003 000 000 0001 03 35010 @/tmp/dbus-tB2X8h69BQ
            0: 00000003 000 000 0001 03 34424 @/tmp/dbus-cHy80Y8O
            000000000000000000000000000000000000000000000000000000
            z/proc/net/unix�unix)rP)r�r�r�r�rUr�r�)r�r�r�r6r6r7�test_emulate_unix�s
z*TestSystemNetConnections.test_emulate_unixN)r�r�r�rr�rErWrYr6r6r6r7rMrsrMc@sBeZdZejjeed�dd�e�dd���Z	dd�Z
dd	�Zd
S)�TestSystemDiskPartitions�statvfszos.statvfs() not available)r�cCszdd�}xltjdd�D]\}tj|j�}||j�\}}}}|j|ksFt�t|j|�tks\t�t|j	|�tkst�qWdS)NcSsztd|�j�}|jd�}|jd�|jd�}|j�dd�\}}}}|dkrRd}t|�t|�t|�}}}||||fS)Nzdf -P -B 1 "%s"rbrr>ZnonerV)rrtrB�poprf)rrgrhrL�devrjrkr_r6r6r7�df�s


z4TestSystemDiskPartitions.test_against_df.<locals>.dfF)�all)
r��disk_partitions�
disk_usage�
mountpointrjr�r�r_rrk)r�r^�part�usagerirjrkr_r6r6r7�test_against_df�sz(TestSystemDiskPartitions.test_against_dfcCs�td��}|j�}WdQRXd|krNx�tj�D]}|jdkr.Pq.W|jd��nxtjd�}tj	d|dd��X}tj	ddgd��<}tj�}|j
s�t�|j
s�t�|s�t�|d
jdks�t�WdQRXWdQRXdS)Nz/proc/filesystems�zfszcouldn't find any ZFS partitionz
nodev	zfs
zpsutil._common.openT)r�r�z$psutil._pslinux.cext.disk_partitions�	/dev/sdb3�/�rw)r�r)rgrhrfri)rAr�r�r`�fstyper>r~rrr�r�r�)r�rKr�rcrrr
r�r6r6r7�test_zfs_fs�s(





z$TestSystemDiskPartitions.test_zfs_fscCsTzFtjddd��.}tjt��tj�WdQRX|js:t�WdQRXWddt_	XdS)Nzos.path.realpathz
/non/existent)r�z/proc)
rr�r�raisesrr�r`r�r��PROCFS_PATH)r�r�r6r6r7�test_emulate_realpath_fail�s
z3TestSystemDiskPartitions.test_emulate_realpath_failN)r�r�r�rrr�hasattrr�rrerkrnr6r6r6r7rZ�s
rZc@sDeZdZdd�Zdd�Zdd�Zdd�Zd	d
�Zdd�Zd
d�Z	dS)�TestSystemDiskIoCounterscCs�d}td|i���tjddd���tjdd�}|jdks<t�|jd	ksJt�|jd
t	ks\t�|j
dksjt�|jdksxt�|jd
ks�t�|j
dt	ks�t�|jdks�t�|jdks�t�WdQRXWdQRXdS)Nz+   3     0   1 hda 2 3 4 5 6 7 8 9 10 11 12z/proc/diskstatsz!psutil._pslinux.is_storage_deviceT)r�F)rJr=r�r�r>ror�r�r�rK)r�rr�r��disk_io_counters�
read_countr��read_merged_count�
read_bytes�SECTOR_SIZE�	read_time�write_count�write_merged_count�write_bytes�
write_time�	busy_time)r�r�r�r6r6r7�test_emulate_kernel_2_4�sz0TestSystemDiskIoCounters.test_emulate_kernel_2_4cCs�d}td|i���tjddd���tjdd�}|jdks<t�|jd	ksJt�|jd
t	ks\t�|j
dksjt�|jdksxt�|jd
ks�t�|j
dt	ks�t�|jdks�t�|jdks�t�WdQRXWdQRXdS)Nz'   3    0   hda 1 2 3 4 5 6 7 8 9 10 11z/proc/diskstatsz!psutil._pslinux.is_storage_deviceT)r�F)rJr=r�r�r>ror�r�r�rK)r�rr�r�rqrrr�rsrtrurvrwrxryrzr{)r�r�r�r6r6r7�test_emulate_kernel_2_6_full�sz5TestSystemDiskIoCounters.test_emulate_kernel_2_6_fullcCs�tddi���tjddd���tjdd�}|jdks8t�|jd	tksJt�|j	d
ksXt�|j
dtksjt�|jdksxt�|jdks�t�|j
dks�t�|jdks�t�|jdks�t�WdQRXWdQRXdS)
Nz/proc/diskstatsz   3    1   hda 1 2 3 4z!psutil._pslinux.is_storage_deviceT)r�F)rJr=r�r�r>r)r�rr�r�rqrrr�rtrurwryrsrvrxrzr{)r�r�r6r6r7�test_emulate_kernel_2_6_limited�sz8TestSystemDiskIoCounters.test_emulate_kernel_2_6_limitedcCs�tjd�}td|i���tjddd��ltjddd�}t|�dksFt�|d	j	d
ksXt�|dj	d
ksjt�|d	j
dks|t�|dj
dks�t�WdQRXWdQRXdS)
Nzx            3    0   nvme0n1 1 2 3 4 5 6 7 8 9 10 11
            3    0   nvme0n1p1 1 2 3 4 5 6 7 8 9 10 11
            z/proc/diskstatsz!psutil._pslinux.is_storage_deviceF)r�T)�perdiskrJr��nvme0n1r=Z	nvme0n1p1ro)r�r�r�rr�r�rqrDr�rrrw)r�r�r�r6r6r7�test_emulate_include_partitionssz8TestSystemDiskIoCounters.test_emulate_include_partitionsc Cs�tjd�}td|i��:tjddd�� tjddd�}|dksBt�WdQRXWdQRXdd�}tjd�}td|i��Ltjdd	|d
��0tjddd�}|jdks�t�|j	dks�t�WdQRXWdQRXdS)
Nzx            3    0   nvme0n1 1 2 3 4 5 6 7 8 9 10 11
            3    0   nvme0n1p1 1 2 3 4 5 6 7 8 9 10 11
            z/proc/diskstatsz!psutil._pslinux.is_storage_deviceF)r�)rrJcSs|dkS)Nr�r6)r�r6r6r7�is_storage_device4szSTestSystemDiskIoCounters.test_emulate_exclude_partitions.<locals>.is_storage_deviceT)r�r�r=ro)
r�r�r�rr�r�rqr�rrrw)r�r�r�r�r6r6r7�test_emulate_exclude_partitions%s$ 
z8TestSystemDiskIoCounters.test_emulate_exclude_partitionsc
CsTdd�}tjdd�}tjdd|d��tjdd�}WdQRXt|�t|�ksPt�dS)NcSs|dkS)Nz/proc/diskstatsr6)rr6r6r7rFsz?TestSystemDiskIoCounters.test_emulate_use_sysfs.<locals>.existsT)rzpsutil._pslinux.os.path.exists)r�r�)r�rqrr�rDr�)r�rZwprocfsZwsysfsr6r6r7�test_emulate_use_sysfsEsz/TestSystemDiskIoCounters.test_emulate_use_sysfscCsFdd�}tjdd|d��$tjt��tj�WdQRXWdQRXdS)NcSsdS)NFr6)rr6r6r7rQsz>TestSystemDiskIoCounters.test_emulate_not_impl.<locals>.existszpsutil._pslinux.os.path.existsT)r�r�)rr�rrl�NotImplementedErrorr�rq)r�rr6r6r7�test_emulate_not_implPs
z.TestSystemDiskIoCounters.test_emulate_not_implN)
r�r�r�r|r}r~r�r�r�r�r6r6r6r7rp�s rpc@sjeZdZdd�Zdd�Zejjedd�dd��Z	ejje
d	�d
d�ejjedd�dd���Zd
d�ZdS)�TestRootFsDeviceFindercCs(tjd�j}tj|�|_tj|�|_dS)Nrh)r�ru�st_dev�major�minor)r�r]r6r6r7�setUp]szTestRootFsDeviceFinder.setUpcCs�t�}tjjd�r|j�ntjt��|j�WdQRXtjjd|j|j	f�r\|j
�ntjt��|j
�WdQRX|j�dS)Nz/proc/partitionsz/sys/dev/block/%s:%s/uevent)rr�rr�ask_proc_partitionsrrlrr�r��ask_sys_dev_block�ask_sys_class_block)r��finderr6r6r7�test_call_methodsbs

z(TestRootFsDeviceFinder.test_call_methodszunsupported on GITHUB_ACTIONS)r�cCs�t�}|j�dk	st�d}}}tjjd�r6|j�}tjjd|j|jf�rV|j	�}|j
�}|ph|ph|}|r~|r~||ks~t�|r�|r�||ks�t�|r�|r�||ks�t�dS)Nz/proc/partitionsz/sys/dev/block/%s:%s/uevent)r�findr�r�rrr�r�r�r�r�)r�r�r�r��c�baser6r6r7�test_comparisonsrs z'TestRootFsDeviceFinder.test_comparisonsZfindmntzfindmnt utility not availablecCs"t�j�}td�}||kst�dS)Nzfindmnt -o SOURCE -rn /)rr�rr�)r�r�Z
findmnt_valuer6r6r7�test_against_findmnt�s
z+TestRootFsDeviceFinder.test_against_findmntc	Csltjddgd��R}tj�d}|js(t�tsP|jdks:t�|jt�j	�ks^t�n|jdks^t�WdQRXdS)	Nz$psutil._pslinux.cext.disk_partitions�	/dev/rootrh�ext4ri)r�r)r�rhr�ri)
rr�r�r`r�r�r�devicerr�)r�r�rcr6r6r7�test_disk_partitions_mocked�s

z2TestRootFsDeviceFinder.test_disk_partitions_mockedN)
r�r�r�r�r�rrrrr�rr�r�r6r6r6r7r�[sr�c@sbeZdZdd�Zdd�Zdd�Zdd�Zd	d
�Zdd�Ze	�e
jje
d
d�dd���Zdd�ZdS)�TestMisccCs(td�}tj�}t|�t|�ks$t�dS)Nz	boot time)rrr��	boot_timerfr�)r�r�r�r6r6r7�test_boot_time�szTestMisc.test_boot_timecKs�|j�}tj|�ttjj|d�d��$}|jd�|jd�|jd�WdQRX�zt��fdd�}trldnd	}tj	||d
����t
t�tj
t��tj�WdQRXtj
t��tjdd�WdQRXtj
t��tj�WdQRXtj
t��tjdd�WdQRXtj
t��tj�WdQRXtj
t��tjdd�WdQRX|t_tj�d
k�sbt�ttj��d
k�sxt�tjdd�}t|�d
k�s�t�tjdd�}ttt|��d
k�s�t�ttjj|d�d��$}|jd�|jd�|jd�WdQRXtj�d
k�s
t�ttjdd��d
k�s$t�ttj��d
k�s:t�ttttjdd���d
k�sZt�WdQRXWdtj|�t
t�Xtjdk�s�t�dS)Nrur�zcpu   0 0 0 0 0 0 0 0 0 0
zcpu0  0 0 0 0 0 0 0 0 0 0
zcpu1  0 0 0 0 0 0 0 0 0 0
cs&|jd�rttjd���|f|�|�S)Nz/proczrejecting access for test)rcr�r�r�)r�r�r�)r�r6r7r��s
z4TestMisc.test_no_procfs_on_import.<locals>.open_mockz
builtins.openz__builtin__.open)r�T)rrzcpu   1 0 0 0 0 0 0 0 0 0
zcpu0  1 0 0 0 0 0 0 0 0 0
zcpu1  1 0 0 0 0 0 0 0 0 0
z/proc)�
get_testfnr��mkdirrArrG�writerrr�rr�rrlr�r��cpu_percent�cpu_times_percentrmr��sumry�shutil�rmtree)r�Z	my_procfsrKr�r�Zper_cpu_percentZper_cpu_times_percentr6)r�r7�test_no_procfs_on_import�sT




.

z!TestMisc.test_no_procfs_on_importcCs>tjd�j�}td|i��8}tj�|js.t�tjdd�tj�tjdd�WdQRXtjd�j�}td|i���tj�}|js�t�tjdd�}tj�}tjdd�}|dks�t�t	|�dks�t�t	|�dks�t�t	|�dks�t�t	t
t	|��dks�t�t	t
t	|��dk�st�|jdk�s t�|jdk�s0t�WdQRXdS)Nz~            cpu   0 0 0 0 0 0 0 1 0 0
            cpu0  0 0 0 0 0 0 0 1 0 0
            cpu1  0 0 0 0 0 0 0 1 0 0
            z
/proc/statT)rz~            cpu   1 0 0 0 0 0 0 0 0 0
            cpu0  1 0 0 0 0 0 0 0 0 0
            cpu1  1 0 0 0 0 0 0 0 0 0
            rgY@)
r�r�r�r�r�r�r�r�r�r�ryr��user)r�r�r�r�Zcpu_percent_percpur�Zcpu_times_percent_percpur6r6r7�test_cpu_steal_decrease�s0



z TestMisc.test_cpu_steal_decreasecCsHtjddd��0}tjt��tjj�WdQRX|js:t	�WdQRXdS)Nzpsutil._common.openT)r�)
rr�rrlr5r�r�r�r�r�)r�r�r6r6r7�test_boot_time_mockedszTestMisc.test_boot_time_mockedcCs$xtj�D]}|jdks
t�q
WdS)N�:0�:0.0)r�r�)r�Zusers�hostr�)r�r�r6r6r7�
test_usersszTestMisc.test_userscHCs@|j�}tj|��z|t_tjt��tj�WdQRXtjt��tj	�WdQRXtjt��tj	dd�WdQRXtjt��tj
�WdQRXtjt��tj�WdQRXtjt��tj�WdQRXtjt��tj
�WdQRXtjt��tj�WdQRXtjtj��tj�WdQRXWddt_XdS)NT)rz/proc)r�r�r�r�rmrrlr�r�r�r�rUrLr4r`�
NoSuchProcess�Process)r�Ztdirr6r6r7�test_procfs_path s.
zTestMisc.test_procfs_pathzskip if pytest-parallel)r�cCs�t��ttj�}|j�}t|�tr&dndks0t�t|dd�d�dj}|j	|ksTt�tj|�}|j
�|tj�ksvt�WdQRXdS)Nr�r�cSs|jS)N)�id)rTr6r6r7�<lambda>Hsz)TestMisc.test_issue_687.<locals>.<lambda>)�keyr=)rr�r��threadsrDrr��sortedr��pidZas_dictZpids)r��pr��tid�ptr6r6r7�test_issue_687<s
zTestMisc.test_issue_687c	Cs8tddi��"}tjtj��s t�|js*t�WdQRXdS)Nz/proc/%s/statusrV)r�r�Z
pid_existsr��getpidr�r�)r�r�r6r6r7�test_pid_exists_no_proc_statusNsz'TestMisc.test_pid_exists_no_proc_statusN)r�r�r�r�r�r�r�r�r�rrrrrr�r�r6r6r6r7r��sB'r�z
no batteryc@sjeZdZejjed�dd�dd��Zdd�Zdd	�Z	d
d�Z
dd
�Zdd�Zdd�Z
dd�Zdd�ZdS)�TestSensorsBatteryZacpizacpi utility not available)r�cCsHtd�}t|jd�dj�jdd��}tj�j}t||�dksDt	�dS)Nzacpi -brr=r)rV)
rrfrBrt�replacer��sensors_battery�percentr�r�)r�rgZ
acpi_valuer�r6r6r7�test_percent_s
zTestSensorsBattery.test_percentc	sj�fdd�}t�trdnd}tj||d��6}tj�jdks>t�tj�jtj	ksRt�|j
s\t�WdQRXdS)Ncs(|jd�rtjd�S�|f|�|�SdS)N�
AC0/online�	AC/online�1)r�r�)rr~r�)r�r�r�)r�r6r7r�hs

z@TestSensorsBattery.test_emulate_power_plugged.<locals>.open_mockz
builtins.openz__builtin__.open)r�T)rArrr�r�r��
power_pluggedr��secsleft�POWER_TIME_UNLIMITEDr�)r�r�r�r�r6)r�r7�test_emulate_power_pluggedfsz-TestSensorsBattery.test_emulate_power_pluggedc	sV�fdd�}t�trdnd}tj||d��"}tj�jdks>t�|jsHt�WdQRXdS)Ncs@|jd�rttjd��n$|jd�r,tjd�S�|f|�|�SdS)N�
AC0/online�	AC/onlinerVz/statusZcharging)r�r�)rr�r�r�r~r)r�r�r�)r�r6r7r�{s



zBTestSensorsBattery.test_emulate_power_plugged_2.<locals>.open_mockz
builtins.openz__builtin__.open)r�T)	rArrr�r�r�r�r�r�)r�r�r�r�r6)r�r7�test_emulate_power_plugged_2xsz/TestSensorsBattery.test_emulate_power_plugged_2c	sV�fdd�}t�trdnd}tj||d��"}tj�jdks>t�|jsHt�WdQRXdS)Ncs(|jd�rtjd�S�|f|�|�SdS)N�
AC0/online�	AC/online�0)r�r�)rr~r�)r�r�r�)r�r6r7r��s

zDTestSensorsBattery.test_emulate_power_not_plugged.<locals>.open_mockz
builtins.openz__builtin__.open)r�F)	rArrr�r�r�r�r�r�)r�r�r�r�r6)r�r7�test_emulate_power_not_plugged�sz1TestSensorsBattery.test_emulate_power_not_pluggedc	sV�fdd�}t�trdnd}tj||d��"}tj�jdks>t�|jsHt�WdQRXdS)Ncs@|jd�rttjd��n$|jd�r,tjd�S�|f|�|�SdS)N�
AC0/online�	AC/onlinerVz/statusZdischarging)r�r�)rr�r�r�r~r)r�r�r�)r�r6r7r��s



zFTestSensorsBattery.test_emulate_power_not_plugged_2.<locals>.open_mockz
builtins.openz__builtin__.open)r�F)	rArrr�r�r�r�r�r�)r�r�r�r�r6)r�r7� test_emulate_power_not_plugged_2�sz3TestSensorsBattery.test_emulate_power_not_plugged_2c	sV�fdd�}t�trdnd}tj||d��"}tj�jdks>t�|jsHt�WdQRXdS)Ncs@|jd�rttjd��n$|jd�r,tjd�S�|f|�|�SdS)N�"/sys/class/power_supply/AC0/online�!/sys/class/power_supply/AC/onlinerVz#/sys/class/power_supply/BAT0/statuss???)r�r�)rcr�r�r�r~r�)r�r�r�)r�r6r7r��s

zETestSensorsBattery.test_emulate_power_undetermined.<locals>.open_mockz
builtins.openz__builtin__.open)r�)	rArrr�r�r�r�r�r�)r�r�r�r�r6)r�r7�test_emulate_power_undetermined�sz2TestSensorsBattery.test_emulate_power_undeterminedc	Cs8tddi��"}tj�jdks t�|js*t�WdQRXdS)Nz(/sys/class/power_supply/BAT0/energy_fullr�r)r�r�r�r�r�r�)r�r�r6r6r7�test_emulate_energy_full_0�s

z-TestSensorsBattery.test_emulate_energy_full_0cCsjtdttjd���Ntdttjd���0tddi��tj�jdksHt�WdQRXWdQRXWdQRXdS)Nz(/sys/class/power_supply/BAT0/energy_fullrVz(/sys/class/power_supply/BAT0/charge_fullz%/sys/class/power_supply/BAT0/capacitys88�X)	r�r�r�r�r�r�r�r�r�)r�r6r6r7�"test_emulate_energy_full_not_avail�sz5TestSensorsBattery.test_emulate_energy_full_not_availcCsptdttjd���Ttdttjd���6tdttjd���tj�jdksNt�WdQRXWdQRXWdQRXdS)Nz!/sys/class/power_supply/AC/onlinerVz"/sys/class/power_supply/AC0/onlinez#/sys/class/power_supply/BAT0/status)r�r�r�r�r�r�r�r�)r�r6r6r7�test_emulate_no_power�sz(TestSensorsBattery.test_emulate_no_powerN)r�r�r�rrrrr�r�r�r�r�r�r�r�r�r6r6r6r7r�\sr�c@seZdZdd�ZdS)�TestSensorsBatteryEmulatedcsz�fdd�}t�trdnd}tjddgd��0}tj||d��}tj�dk	sNt�WdQRXWdQRX|jslt�|jsvt�dS)	NcsP|jd�rtjd�S|jd�r(tjd�S|jd�r<tjd�S�|f|�|�SdS)Nz/energy_nowZ60000000z
/power_now�0z/energy_fullZ60000001)rr~r)r�r�r�)r�r6r7r��s





z5TestSensorsBatteryEmulated.test_it.<locals>.open_mockz
builtins.openz__builtin__.openz
os.listdirZBAT0)r�)r�)rArrr�r�r�r�r�)r�r�r�ZmlistdirZmopenr6)r�r7�test_it�s
$
z"TestSensorsBatteryEmulated.test_itN)r�r�r�r�r6r6r6r7r��sr�c@seZdZdd�Zdd�ZdS)�TestSensorsTemperaturescs��fdd�}t�trdnd}tj||d��jtjddgd��Ntj�d	d
}|jdks\t�|jdksjt�|j	d
ksxt�|j
dks�t�WdQRXWdQRXdS)Ncsx|jd�rtjd�S|jd�r(tjd�S|jd�r<tjd�S|jd�rPtjd�S|jd	�rdtjd
�S�|f|�|�SdS)Nz/namer�z/temp1_label�labelz/temp1_inputs30000z
/temp1_maxs40000z/temp1_crits50000)rr~rr�)r�r�r�)r�r6r7r��s









zCTestSensorsTemperatures.test_emulate_class_hwmon.<locals>.open_mockz
builtins.openz__builtin__.open)r�z	glob.globz/sys/class/hwmon/hwmon0/temp1)r�r�rr�g>@gD@gI@)rArrr�r��sensors_temperaturesr�r�r�high�critical)r�r�r��tempr6)r�r7�test_emulate_class_hwmon�sz0TestSensorsTemperatures.test_emulate_class_hwmoncs��fdd�}dd�}t�tr dnd}tj||d��jtjdd	|d
��Ntj�dd}|jd
ksdt�|jdksrt�|j	dks�t�|j
dks�t�WdQRXWdQRXdS)Ncsd|jd�rtjd�S|jd�r(tjd�S|jd�r<tjd�S|jd�rPtjd�S�|f|�|�SdS)	NZ0_temps50000r�s30000Z0_typer��typer�)rr~r�r)r�r�r�)r�r6r7r�s







zETestSensorsTemperatures.test_emulate_class_thermal.<locals>.open_mockcSs:|dkrgS|dkrgS|dkr&dgS|dkr6ddgSgS)Nz/sys/class/hwmon/hwmon*/temp*_*z&/sys/class/hwmon/hwmon*/device/temp*_*z /sys/class/thermal/thermal_zone*z /sys/class/thermal/thermal_zone0z,/sys/class/thermal/thermal_zone0/trip_point*z2/sys/class/thermal/thermal_zone1/trip_point_0_typez2/sys/class/thermal/thermal_zone1/trip_point_0_tempr6)rr6r6r7�	glob_mock$szETestSensorsTemperatures.test_emulate_class_thermal.<locals>.glob_mockz
builtins.openz__builtin__.open)r�z	glob.globT)r�r�r�rrVg>@gI@)rArrr�r�r�r�r�rr�r�)r�r�r�r�r�r6)r�r7�test_emulate_class_thermalsz2TestSensorsTemperatures.test_emulate_class_thermalN)r�r�r�r�r�r6r6r6r7r��sr�c@seZdZdd�ZdS)�TestSensorsFanscs��fdd�}t�trdnd}tj||d��Ntjddgd��2tj�d	d
}|jdks\t�|jdksjt�WdQRXWdQRXdS)
NcsP|jd�rtjd�S|jd�r(tjd�S|jd�r<tjd�S�|f|�|�SdS)Nz/namer�z/fan1_labelr�z/fan1_input�2000)rr~r)r�r�r�)r�r6r7r�@s





z4TestSensorsFans.test_emulate_data.<locals>.open_mockz
builtins.openz__builtin__.open)r�z	glob.globz/sys/class/hwmon/hwmon2/fan1)r�r�rr�i�)	rArrr�r�Zsensors_fansr�r�r)r�r�r�Zfanr6)r�r7r?s
z!TestSensorsFans.test_emulate_dataN)r�r�r�rr6r6r6r7r�=sr�c@s�eZdZe�dd��Zdd�Zejje	dd�dd��Z
d	d
�Zdd�Zd
d�Z
dd�Zdd�Zdd�Zdd�Zdd�Zdd�Zdd�Zdd�Zejjedd�d d!��Zd"d#�Zd$d%�Zd&d'�Zd(S))�TestProcesscCs�|j�}tjj|j�j�\}}}tj|j�jdd�}t|tdd�|D���dksVt	�t|tdd�|D���dksxt	�t|tdd�|D���dks�t	�dS)NF)ZgroupedcSsg|]}|j|j�qSr6)Z
private_dirtyZ
private_clean)rWrTr6r6r7rYbsz?TestProcess.test_parse_smaps_vs_memory_maps.<locals>.<listcomp>icSsg|]
}|j�qSr6)�pss)rWrTr6r6r7rYescSsg|]
}|j�qSr6)r�)rWrTr6r6r7rYfs)
Zspawn_testprocr�r�r�r��_parse_smaps�memory_mapsr�r�r�)r�Zsproc�ussr�r��mapsr6r6r7�test_parse_smaps_vs_memory_maps\s
"z+TestProcess.test_parse_smaps_vs_memory_mapsc
Cs~tjd�j�}tdtj�|i��R}tjjtj��}|j	�\}}}|j
sLt�|dksXt�|dksdt�|d
kspt�WdQRXdS)Nan            fffff0 r-xp 00000000 00:00 0                  [vsyscall]
            Size:                  1 kB
            Rss:                   2 kB
            Pss:                   3 kB
            Shared_Clean:          4 kB
            Shared_Dirty:          5 kB
            Private_Clean:         6 kB
            Private_Dirty:         7 kB
            Referenced:            8 kB
            Anonymous:             9 kB
            LazyFree:              10 kB
            AnonHugePages:         11 kB
            ShmemPmdMapped:        12 kB
            Shared_Hugetlb:        13 kB
            Private_Hugetlb:       14 kB
            Swap:                  15 kB
            SwapPss:               16 kB
            KernelPageSize:        17 kB
            MMUPageSize:           18 kB
            Locked:                19 kB
            VmFlags: rd ex
            z/proc/%s/smapsr�r��ir�r"�
�ilii<)r�r�r�r�r�r�r�r�r�r�r�r�)r�r�r�r�r�r�r�r6r6r7�test_parse_smaps_mockedhs

z#TestProcess.test_parse_smaps_mockedzunreliable on PYPY)r�c:Csldd�}|j�}t|d��||�jdks.t�WdQRXt|��||�jdksTt�WdQRXt|d��||�jdks|t�WdQRXt|d��||�jdks�t�WdQRXt|d��||�jdks�t�WdQRXt|d��||�jdks�t�WdQRXt�rht|�t|d	��||�jdk�s,t�WdQRXt|�t|d
��||�jdk�s^t�WdQRXdS)NcSs\tj�}tj�t}x:x4|j�D](}|jtjj|�kr:|Stj�|kr Pq WqWtd��dS)Nztimeout looking for test file)	r�r��timer	�
open_filesrr��abspathr5)�fnamer�Z	giveup_at�filer6r6r7�
get_test_file�s
z7TestProcess.test_open_files_mode.<locals>.get_test_filer��rr�zr+zw+za+rTzx+)r�rA�moder�rr)r�r�Ztestfnr6r6r7�test_open_files_mode�s*
z TestProcess.test_open_files_modecs�tj���j��t|j�d���t��fdd��tjdtt	j
d�d�� }�j�gksZt�|jsdt�WdQRXtjdtt	j
d�d�� }�j�gks�t�|js�t�WdQRXWdQRXdS)Nr�cst�j��t��kS)N)rDr�r6)�filesr�r6r7r��sz7TestProcess.test_open_files_file_gone.<locals>.<lambda>zpsutil._pslinux.os.readlinkrV)r�)r�r�r�rAr�rrr��OSErrorr�r�r�r��EINVAL)r�r�r6)r�r�r7�test_open_files_file_gone�s z%TestProcess.test_open_files_file_gonecs�tj���j��t|j�d��`t��fdd��tr:dnd}tj|t	t
jd�d�� }�j�gksft�|j
spt�WdQRXWdQRXdS)Nr�cst�j��t��kS)N)rDr�r6)r�r�r6r7r��sz5TestProcess.test_open_files_fd_gone.<locals>.<lambda>z
builtins.openz__builtin__.openrV)r�)r�r�r�rAr�rrrr�r�r�r�r�r�)r�r�r�r6)r�r�r7�test_open_files_fd_gone�sz#TestProcess.test_open_files_fd_gonecs�tj���j��t|j�d��nt��fdd��d}tj|tt	j
d�d��6}tjd�� �j�gksjt�|jstt�WdQRXWdQRXWdQRXdS)Nr�cst�j��t��kS)N)rDr�r6)r�r�r6r7r��sz:TestProcess.test_open_files_enametoolong.<locals>.<lambda>zpsutil._pslinux.os.readlinkrV)r�zpsutil._pslinux.debug)
r�r�r�rAr�rrr�r�r��ENAMETOOLONGr�r�)r�r�r�r6)r�r�r7�test_open_files_enametoolong�sz(TestProcess.test_open_files_enametoolongc	CsDtjdid��,}tjjtj��j�dks,t�|j	s6t�WdQRXdS)Nz)psutil._pslinux._psposix.get_terminal_map)r�)
rr�r�r�r�r�r��terminalr�r�)r�r�r6r6r7�test_terminal_mocked�s

z TestProcess.test_terminal_mockedcCs�tj�}tjd�}tjd|dd��$}|j�ddgks8t�|jsBt�WdQRXtjd�}tjd|dd��&}|j�dddgks~t�|js�t�WdQRXdS)	Nzfoobarzpsutil._common.openT)r�r��foo�barz	foobarrV)	r�r�r~rrr��cmdliner�r�)r�r�rr�r6r6r7�test_cmdline_mocked�s

zTestProcess.test_cmdline_mockedcCs�tj�}tjd�}tjd|dd��$}|j�ddgks8t�|jsBt�WdQRXtjd�}tjd|dd��&}|j�dddgks~t�|js�t�WdQRXdS)	Nzfoo bar zpsutil._common.openT)r�r�rrz	foo bar  rV)	r�r�r~rrr�rr�r�)r�r�rr�r6r6r7�test_cmdline_spaces_mockeds

z&TestProcess.test_cmdline_spaces_mockedc
CsPtj�}tjd�}tjd|dd��$}|j�ddgks8t�|jsBt�WdQRXdS)Nzfoo barzpsutil._common.openT)r�r�rr)	r�r�r~rrr�rr�r�)r�r�rr�r6r6r7�test_cmdline_mixed_separatorss
z)TestProcess.test_cmdline_mixed_separatorsc	CsFtjddd��.tj�j�dks$t�tj�j�dks8t�WdQRXdS)Nzpsutil._pslinux.os.readlinkz/home/foo (deleted))r�z	/home/foo)rr�r�r��exer��cwd)r�r6r6r7�!test_readlink_path_deleted_mocked!sz-TestProcess.test_readlink_path_deleted_mockedcs��fdd�}t�trdnd}tj||d��(}tj�j�}|jsBt�|gksNt�WdQRX�fdd�}tj||d��*t	j
tj��tj�j�WdQRXWdQRXdS)Ncs4|jdtj��r ttjd��n�|f|�|�SdS)Nz
/proc/%s/taskrV)rcr�r�r�r�r�)r�r�r�)r�r6r7�open_mock_1-sz4TestProcess.test_threads_mocked.<locals>.open_mock_1z
builtins.openz__builtin__.open)r�cs4|jdtj��r ttjd��n�|f|�|�SdS)Nz
/proc/%s/taskrV)rcr�r�r�r��EPERM)r�r�r�)r�r6r7�open_mock_2<sz4TestProcess.test_threads_mocked.<locals>.open_mock_2)rArrr�r�r�r�r�r�rrl�AccessDenied)r�rr�r�r�rr6)r�r7�test_threads_mocked(s
zTestProcess.test_threads_mockedcCsbtjdttjd�d��B}tjdgd��(tj�j�}|js>t	�|dksJt	�WdQRXWdQRXdS)Nzpsutil._pslinux.readlinkrV)r�zpsutil._pslinux.Process.cmdline)r�)
rr�r�r�r�r�r�rr�r�)r�r�r�r6r6r7�test_exe_mockedFs
zTestProcess.test_exe_mockedcCsZtdtj�ttjd���6}tj�}tj	t
��|j�WdQRX|jsLt
�WdQRXdS)Nz/proc/%s/smapsrV)r�r�r�r�r�r�r�r�rrlrr�r�r�)r�r�r�r6r6r7�test_issue_1014RszTestProcess.test_issue_1014z
not supportedcCs�tjdttjd�d��T}tjddd��:}tj�}|j�tj	tj
��}|jtj�WdQRXWdQRXWdQRX|j
szt�|j
s�t�|jj|jks�t�|jj|j�ks�t�dS)Nzpsutil._pslinux.prlimitrV)r�z"psutil._pslinux.Process._is_zombieT)r�)rr�r�r�ZENOSYSr�r�r�rrl�
ZombieProcessZrlimitZ
RLIMIT_NOFILEr�r�r�r�)r�rr
r��cmr6r6r7�test_rlimit_zombie]s
*

zTestProcess.test_rlimit_zombiec*CsZdddddddddddddddddddddd	ddddddddddddddddd	ddd
g*}dj|�j�}tdtj�|i���tj�}|j�d
ks�t�|j	�tj
ks�t�|j�dks�t�|j�dt
tj�ks�t�|j�}|jdt
ks�t�|jdt
ks�t�|jdt
k�st�|jdt
k�s&t�|jdt
k�s:t�|j�dk�sLt�WdQRXdS)Nr�z(cat)�Z�1�2�3�4�5�6�7rsz
/proc/%s/stat�catr=r�r�r�r>ror�)rGr�r�r�r�r�r�r�r��status�
STATUS_ZOMBIE�ppidZcreate_timerr�r�r��system�
children_user�children_systemZiowaitZcpu_num)r�r�r�r�Zcpur6r6r7�test_stat_file_parsingqspz"TestProcess.test_stat_file_parsingcCs�tjd�j�}tdtj�|i���tj�}|j�j	dks>t
�|j�jdksPt
�|j�dks`t
�|j
�}|jdksvt
�|jdks�t
�|jdks�t
�|j�}|jd	ks�t
�|jd
ks�t
�|jdks�t
�|jj�ttd��ks�t
�WdQRXdS)
Nz�            Uid:	1000	1001	1002	1003
            Gid:	1004	1005	1006	1007
            Threads:	66
            Cpus_allowed:	f
            Cpus_allowed_list:	0-7
            voluntary_ctxt_switches:	12
            nonvoluntary_ctxt_switches:	13z/proc/%s/statusr�r��Bi�i�i�i�i�i�r�)r�r�r�r�r�r�r�r��num_ctx_switches�	voluntaryr��involuntary�num_threads�uids�real�	effective�saved�gids�_proc�_get_eligible_cpus�listrF)r�r�r�r-r1r6r6r7�test_status_file_parsing�s 
z$TestProcess.test_status_file_parsingcCs^tjdttjd�d��>}tj�}tjd�� |j�gks<t�|j	sFt�WdQRXWdQRXdS)Nzpsutil._pslinux.os.readlinkrV)r�zpsutil._pslinux.debug)
rr�r�r�rr�r�rUr�r�)r�r�r�r6r6r7�!test_net_connections_enametoolong�sz-TestProcess.test_net_connections_enametoolongN)r�r�r�rr�r�rrrrr�r�rrrrr	r
r
rrrr
rr'r5r6r6r6r6r7r�Zs$"#<r�c@s�eZdZdZedd��Zdd�Zdd�Zej	j
edd	�d
d��Zdd
�Z
dd�Zdd�Zdd�Ze�dd��Zdd�Zdd�ZdS)�TestProcessAgainstStatusa/proc/pid/stat and /proc/pid/status have many values in common.
    Whenever possible, psutil uses /proc/pid/stat (it's faster).
    For all those cases we check that the value found in
    /proc/pid/stat (by psutil) matches the one found in
    /proc/pid/status.
    cCstj�|_dS)N)r�r��proc)�clsr6r6r7�
setUpClass�sz#TestProcessAgainstStatus.setUpClasscCs|tjjd|jj��^}xJ|D]B}|j�}|j|�r|jd�d}yt|�St	k
r\|SXqWt	d|��WdQRXdS)Nz/proc/%s/status�	r�z
can't find %r)
r��_psplatform�	open_textr8r�rtrc�	partitionrfrE)r�Z	linestartrKrLr�r6r6r7�read_status_file�s


z)TestProcessAgainstStatus.read_status_filecCs |jd�}|jj�|kst�dS)NzName:)r?r8r�r�)r�r�r6r6r7�	test_name�s
z"TestProcessAgainstStatus.test_namezQEMU user not supported)r�cCsH|jd�}||jd�d|jd��}|jdd�}|jj�|ksDt�dS)NzState:�(r=�)rsr�)r?r��rfindr�r8r!r�)r�r�r6r6r7�test_status�s
z$TestProcessAgainstStatus.test_statuscCs |jd�}|jj�|kst�dS)NzPPid:)r?r8r#r�)r�r�r6r6r7�	test_ppid�s
z"TestProcessAgainstStatus.test_ppidcCs |jd�}|jj�|kst�dS)NzThreads:)r?r8r,r�)r�r�r6r6r7�test_num_threads�s
z)TestProcessAgainstStatus.test_num_threadscCs:|jd�}ttt|j�dd���}|jj�|ks6t�dS)NzUid:r=r>)r?rxryrfrBr8r-r�)r�r�r6r6r7�	test_uids	s
z"TestProcessAgainstStatus.test_uidscCs:|jd�}ttt|j�dd���}|jj�|ks6t�dS)NzGid:r=r>)r?rxryrfrBr8r1r�)r�r�r6r6r7�	test_gids	s
z"TestProcessAgainstStatus.test_gidscCs@|jd�}|jj�j|kst�|jd�}|jj�j|ks<t�dS)Nzvoluntary_ctxt_switches:znonvoluntary_ctxt_switches:)r?r8r)r*r�r+)r�r�r6r6r7�test_num_ctx_switches	s

z.TestProcessAgainstStatus.test_num_ctx_switchescCsN|jd�}dt|�krJtt|jd��\}}|jj�tt||d��ksJt	�dS)NzCpus_allowed_list:r�r=)
r?r�ryrfrBr8Zcpu_affinityr4rFr�)r�r�Zmin_Zmax_r6r6r7�test_cpu_affinity	s
z*TestProcessAgainstStatus.test_cpu_affinityc
CsT|jd�}tjd��}|jjj�WdQRXdt|�krF|jsPt�n
|jsPt�dS)NzCpus_allowed_list:zpsutil._pslinux.per_cpu_timesr�)	r?rr�r8r2r3r�r�r�)r�r�r�r6r6r7�test_cpu_affinity_eligible_cpus	s
z8TestProcessAgainstStatus.test_cpu_affinity_eligible_cpusN)r�r�r��__doc__�classmethodr:r?r@rrrrrDrErFrGrHrrIrJrKr6r6r6r7r7�sr7c@seZdZdd�ZdS)�	TestUtilsc	Cs<tjddd��$}tjjd�dks$t�|js.t�WdQRXdS)Nzos.readlinkz
foo (deleted))r�rr)rr�r�r<�readlinkr�r�)r�r�r6r6r7�
test_readlink)	szTestUtils.test_readlinkN)r�r�r�rPr6r6r6r7rN'	srN)frL�
__future__rrdr,r��globr~r�rzr�r)r2r�r�r�r�rZpsutil._compatrrrZpsutil.testsrrr	r
rrr
rrrrrrrrrrrrrrrrr�rrr r!rr��dirname�__file__�HEREr1ZSIOCGIFCONFr[r9r;ruZEMPTY_TEMPERATURESr8r:r<rSr^rmrqrrr|�contextmanagerr�r�rrr�r�r�r�r�r�rrr!r$r(r2rArMrZrpr�r�r�r�r�r�r�r7rNr6r6r6r7�<module>s�	91RZI'
63AH8
CzS