[ Avaa Bypassed ]




Upload:

Command:

hmhc3928@18.188.162.87: ~ $


Cs[D�@sadZddlmZddlZddlZddlZddlZddlZddlZddl	Z	ddl
Z
ddlZddlZddl
Z
ddlZddlZddlZddlZddlmZddlmZddlmZddlmZddlmZdd	lmZdd
lmZddlmZddlmZdd
lmZddlmZddlmZddlm Z ddlm!Z!ddlm"Z"ddlm#Z#ddlm$Z$ddlm%Z%ddlm&Z&ddlm'Z'ddlm(Z(ddlm)Z)ddlm*Z*ddlm+Z+ej,j-ej,j.e/��Z0dZ1dZ2dZ3er�dZ4d d!�Z5d"d#�Z6d$d%�Z7d&d'�Z8d(d)�Z9d*d+�Z:ej;d,d-��Z<ej;d.d/��Z=e*j>ed0�Gd1d2�d2e*j?��Z@e*j>ed0�Gd3d4�d4e*j?��ZAe*j>ed0�Gd5d6�d6e*j?��ZBe*j>ed0�Gd7d8�d8e*j?��ZCe*j>ed0�Gd9d:�d:e*j?��ZDe*j>ed0�Gd;d<�d<e*j?��ZEe*j>ed0�Gd=d>�d>e*j?��ZFe*j>ed0�e*j>ed?�Gd@dA�dAe*j?���ZGe*j>ed0�GdBdC�dCe*j?��ZHe*j>ed0�GdDdE�dEe*j?��ZIe*j>ed0�GdFdG�dGe*j?��ZJe*j>ed0�GdHdI�dIe*j?��ZKe*j>ed0�GdJdK�dKe*j?��ZLeMdLkr]e#e/�dS)MzLinux specific tests.�)�divisionN)�LINUX)�
basestring)�PY3)�u)�
call_until)�HAS_BATTERY)�HAS_CPU_FREQ)�
HAS_RLIMIT)�MEMORY_TOLERANCE)�mock)�PYPY)�pyrun)�
reap_children)�
reload_module)�retry_before_failing)�run_test_module_by_name)�safe_rmpath)�sh)�skip_on_not_implemented)�TESTFN)�
ThreadTask)�TRAVIS)�unittest)�whichi�i�i'�icCs�ddl}|dd�}tr1t|d�}tjtjtj�}tj|��=tj|j	|j
�ttj
d|��dd��SWdQRXdS)Nr��ascii�256s��)�fcntlr�bytes�socket�AF_INET�
SOCK_DGRAM�
contextlib�closing�	inet_ntoa�ioctl�fileno�SIOCGIFADDR�struct�pack)�ifnamer �s�r/�/test_linux.py�get_ipv4_addressAsr1c
s�ddl}|dd�}tr1t|d�}tjtjtj�}tj|���|j|j	�t
tjd|��}tr�dd��nddl
}|j�dj�fdd	�|d
d�D��dd
�SWdQRXdS)NrrrrcSs|S)Nr/)�xr/r/r0�ordXszget_mac_address.<locals>.ord�cs g|]}d�|��qS)z%02x:r/)�.0�char)r3r/r0�
<listcomp>]s	z#get_mac_address.<locals>.<listcomp>�r����)r rr!r"r#r$r%r&r(r)�
SIOCGIFHWADDRr+r,�__builtin__r3�join)r-r r.�infor<r/)r3r0�get_mac_addressNs!	r?cCs�td�}|jd�}xi|D]a}|jd�r"|j�\}}}}tjdd�}|t|�t|�t|��Sq"Wtddj|���dS)zQParse 'free' cmd and return swap memory's s total, used and free
    values.
    zfree -b�
ZSwap�freeztotal used freez&can't find 'Swap' in 'free' output:
%sN)r�split�
startswith�collections�
namedtuple�int�
ValueErrorr=)�out�lines�line�_�total�usedrA�ntr/r/r0�	free_swap`s
&rOcCs�td�}|jd�}xt|D]l}|jd�r"dd�|j�dd�D�\}}}}tjdd	�}||||||�Sq"Wtd
dj|���dS)zSParse 'free' cmd and return physical memory's total, used
    and free values.
    zfree -br@ZMemcSsg|]}t|��qSr/)rF)r5r2r/r/r0r7|s	z free_physmem.<locals>.<listcomp>r9�rAztotal used free shared outputz%can't find 'Mem' in 'free' output:
%sN)rrBrCrDrErGr=)rHrIrJrLrMrA�sharedrNr/r/r0�free_physmemos
/rRcCsitd�}xF|jd�D]5}|j�}||krt|jd�d�SqWtd|��dS)Nz	vmstat -sr@� rz can't find %r in 'vmstat' output)rrB�striprFrG)�statrHrJr/r/r0�vmstat�srVcCs8td�j�}ttt|j�djd���S)Nzfree -Vr9�.r:)rrT�tuple�maprFrB)rHr/r/r0�get_free_version_info�srZc	#s^���fdd�}t�tr*dnd}tj|ddd|��}|VWdQRXdS)	zMock open() builtin and forces it to return a certain `content`
    on read() if the path being opened matches `for_path`.
    csb|�krNtr>t�t�r.tj��Stj��Sq^tj��Sn�|||�SdS)N)r�
isinstancer�io�StringIO�BytesIO)�name�args�kwargs)�content�for_path�	orig_openr/r0�	open_mock�s
z$mock_open_content.<locals>.open_mockz
builtins.openz__builtin__.open�createT�side_effectN)�openrr�patch)rcrbre�patch_point�mr/)rbrcrdr0�mock_open_content�s
rlc	#s^���fdd�}t�tr*dnd}tj|ddd|��}|VWdQRXdS)	zZMock open() builtin and raises `exc` if the path being opened
    matches `for_path`.
    cs)|�kr��n�|||�SdS)Nr/)r_r`ra)�excrcrdr/r0re�s	z&mock_open_exception.<locals>.open_mockz
builtins.openz__builtin__.openrfTrgN)rhrrri)rcrmrerjrkr/)rmrcrdr0�mock_open_exception�s
rnz
LINUX onlyc@sNeZdZdd�Zejeo0e�d"kd�e�dd���Z	eje
d�e�d	d
���Ze�dd��Zeje
d�e�d
d���Z
eje
d�e�dd���Ze�dd��Ze�dd��Zdd�Zdd�Zdd�Zdd�Zdd�Zdd �Zd!S)#�TestSystemVirtualMemorycCs3td�d}tj�j}|j||�dS)Nztotal memoryi)rV�psutil�virtual_memoryrL�assertAlmostEqual)�self�vmstat_value�psutil_valuer/r/r0�
test_total�sz"TestSystemVirtualMemory.test_total��zold free versionc
CsQt�}|j}tj�j}|j||dtdd|||jf�dS)N�delta�msgz	%s %s 
%s)rRrMrprqrrr�output)rsrA�
free_valuerur/r/r0�	test_used�s		z!TestSystemVirtualMemory.test_usedzunreliable on TRAVIScCs9td�d}tj�j}|j||dt�dS)Nzfree memoryiry)rVrprqrArrr)rsrtrur/r/r0�	test_free�sz!TestSystemVirtualMemory.test_freecCs9td�d}tj�j}|j||dt�dS)Nz
buffer memoryiry)rVrprq�buffersrrr)rsrtrur/r/r0�test_buffers�sz$TestSystemVirtualMemory.test_bufferscCs9td�d}tj�j}|j||dt�dS)Nz
active memoryiry)rVrprq�activerrr)rsrtrur/r/r0�test_active�sz#TestSystemVirtualMemory.test_activecCs9td�d}tj�j}|j||dt�dS)Nzinactive memoryiry)rVrprq�inactiverrr)rsrtrur/r/r0�
test_inactive�sz%TestSystemVirtualMemory.test_inactivec
Cslt�}|j}|dkr-tjd��tj�j}|j||dtdd|||jf�dS)Nrz%free does not support 'shared' columnryrzz	%s %s 
%s)	rRrQr�SkipTestrprqrrrr{)rsrAr|rur/r/r0�test_shared�s		z#TestSystemVirtualMemory.test_sharedc
Cs�td�}|jd�}d|dkr=tjd��nRt|dj�d
�}tj�j}|j||dt	dd	|||f�dS)Nzfree -br@�	availablerz(free does not support 'available' columnr9ryrzz	%s %s 
%sr:)
rrBrr�rFrprqr�rrr)rsrHrIr|rur/r/r0�test_available	sz&TestSystemVirtualMemory.test_availablecCs�tdtjd�j����}tjdd���}tjd�tj�}|j	s^t
�|jt|�d�|d}|j
jd�s�t
�|jd	t|j��|jd
t|j��|jdt|j��|jdt|j��|jd
t|j��|jdt|j��|jdt|j��|j|jd�|j|jd�|j|jd�|j|jd�|j|jd�|j|jd�|j|jd�WdQRXWdQRXdS)Nz
/proc/meminfoap                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
                �recordT�alwaysr9rzpsutil/_pslinux.pyz#memory stats couldn't be determined�cachedrQr�r�rr�)rl�textwrap�dedent�encode�warnings�catch_warnings�simplefilterrprq�called�AssertionError�assertEqual�len�filename�endswith�assertIn�str�messager�r�r�rQrr��slab)rsrk�ws�ret�wr/r/r0�test_warnings_on_missess4	

z/TestSystemVirtualMemory.test_warnings_on_missesc
Cs�ddlm}ddlm}i}|d��@}x6|D].}|j�}t|d�d||d<q<WWdQRX||�}d|kr�|d}t||�|d}	|j|	d	�dS)
Nr)�calculate_avail_vmem)�open_binaryz
/proc/meminfor9is
MemAvailable:�d�
)�psutil._pslinuxr�r�rBrF�absZ
assertLess)
rsr�r�Zmems�frJ�fields�a�bZdiff_percentr/r/r0�test_avail_old_percent?s
'
z.TestSystemVirtualMemory.test_avail_old_percentcCs�tdtjd�j���t}tjdd��}tj�}WdQRX|jsXt	�|j
|jd	�|d}|jdt
|j��WdQRXdS)
Nz
/proc/meminfoaL                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
                r�Ti�Sdirz,inactive memory stats couldn't be determinedl �")rlr�r�r�r�r�rprqr�r�r�r�r�r�r�)rsrkr�r�r�r/r/r0� test_avail_old_comes_from_kernelQs
z8TestSystemVirtualMemory.test_avail_old_comes_from_kernelcCs�tdtjd�j���t}tjdd��}tj�}WdQRX|jsXt	�|j
|jd�|d}|jd	t
|j��WdQRXdS)
Nz
/proc/meminfoa�                    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
                    r�Ti�dii�Irz,inactive memory stats couldn't be determinedi�}l'Ll`LG)rlr�r�r�r�r�rprqr�r�r�r�r�r�r�)rsrkr�r�r�r/r/r0�test_avail_old_missing_fieldsms

z5TestSystemVirtualMemory.test_avail_old_missing_fieldscCs�tdtjd�j����tdttjd���ctj	dd��I}t
j�}|j|j
d�|d
}|jdt|j��WdQRXWdQRXWdQRXdS)Nz
/proc/meminfoaT                    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/zoneinfozno such file or directoryr�Ti�dii�Irz,inactive memory stats couldn't be determinedi�}l'Ll`LG)rlr�r�r�rn�IOError�errno�ENOENTr�r�rprqr�r�r�r�r�)rsr�r�r�r/r/r0�test_avail_old_missing_zoneinfo�s


z7TestSystemVirtualMemory.test_avail_old_missing_zoneinfocs�fdd�}t�tr$dnd}tj|ddd|���}tj�}|jsct�|j|j	d�|j|j
d�|j|jd�|j|jd�|j|j
d�|j|jd�|j|jd�|j|jd�|j|jd�WdQRXdS)Ncs<|dkr(tjtjd�j��S�|||�SdS)Nz
/proc/meminfoa=	                    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
                    )r\r^r�r�r�)r_r`ra)rdr/r0re�s1zETestSystemVirtualMemory.test_virtual_memory_mocked.<locals>.open_mockz
builtins.openz__builtin__.openrfTrgr�i��rP�����rwi�ii�ipiTii iXi)rhrrrirprqr�r�r�rLrArr�rQr�r�r�r�)rsrerjrk�memr/)rdr0�test_virtual_memory_mocked�s7z2TestSystemVirtualMemory.test_virtual_memory_mockedN)rwrwrx)�__name__�
__module__�__qualname__rvr�skipIfrrZrr}rr~r�r�r�r�r�r�r�r�r�r�r�r/r/r/r0ro�s&	'roc@s�eZdZedd��Zdd�Ze�dd��Ze�dd��Zd	d
�Z	dd�Z
d
d�Zdd�ZdS)�TestSystemSwapMemoryc	Cs8td��}|j�}WdQRXd|ko7d|kS)z3Return True if /proc/meminfo provides swap metrics.z
/proc/meminfoNz
SwapTotal:z	SwapFree:)rh�read)r��datar/r/r0�meminfo_has_swap_info�sz*TestSystemSwapMemory.meminfo_has_swap_infocCs1t�j}tj�j}|j||dt�S)Nry)rOrLrp�swap_memoryrrr)rsr|rur/r/r0rv�szTestSystemSwapMemory.test_totalcCs1t�j}tj�j}|j||dt�S)Nry)rOrMrpr�rrr)rsr|rur/r/r0r}szTestSystemSwapMemory.test_usedcCs1t�j}tj�j}|j||dt�S)Nry)rOrArpr�rrr)rsr|rur/r/r0r~szTestSystemSwapMemory.test_freecCs�tjddd���}tjdd���}tjd�tj�}|jsUt�|j	t
|�d�|d}|jjd�s�t�|j
d	t|j��|j	|jd�|j	|jd�WdQRXWdQRXdS)
Nzpsutil._pslinux.openrfTr�r�r9rzpsutil/_pslinux.pyz9'sin' and 'sout' swap memory stats couldn't be determined)rrir�r�r�rpr�r�r�r�r�r�r�r�r�r��sin�sout)rsrkr�r�r�r/r/r0�test_missing_sin_souts

z*TestSystemSwapMemory.test_missing_sin_soutcCs�tdttjd����}tjdd���}tjd�tj�}|j	s[t
�|jt|�d�|d}|j
jd�s�t
�|jd	t|j��|j|jd�|j|jd�WdQRXWdQRXdS)
Nz/proc/vmstatzno such file or directoryr�Tr�r9rzpsutil/_pslinux.pyzK'sin' and 'sout' swap memory stats couldn't be determined and were set to 0)rnr�r�r�r�r�r�rpr�r�r�r�r�r�r�r�r�r�r�r�)rsrkr�r�r�r/r/r0�test_no_vmstat_mocked!s

z*TestSystemSwapMemory.test_no_vmstat_mockedcCs�|j�stjd�Stjd��}tj�}WdQRX|jsNt�ddl	j
}|j�\}}}}}}}||9}||9}|j|j
|�|j|j|�dS)Nz!/proc/meminfo has no swap metricsz"psutil._pslinux.cext.linux_sysinfor)r�r�skiprrirpr�r�r�Zpsutil._psutil_linuxZ
_psutil_linuxZ
linux_sysinfor�rLrA)rsrk�swapZcextrKrLrAZunit_multiplierr/r/r0�test_meminfo_against_sysinfo4s
!

z1TestSystemSwapMemory.test_meminfo_against_sysinfoc	Cs6tdd�� }tj�|js+t�WdQRXdS)Nz
/proc/meminfo�)rlrpr�r�r�)rsrkr/r/r0�#test_emulate_meminfo_has_no_metricsDs
z8TestSystemSwapMemory.test_emulate_meminfo_has_no_metricsN)
r�r�r��staticmethodr�rvrr}r~r�r�r�r�r/r/r/r0r��sr�c@s�eZdZejed�dd��Zejejj	d�d�dd��Z
ejejj	d�d	�d
d��Zejed�d
�dd��Z
ejed�d�dd��Zdd�Zdd�Zejed�dd��Zejed�ejed�dd���Zejed�dd��Zejed�d d!��Zejed�ejed�d"d#���Zd$S)%�
TestSystemCPUzunknown failure on traviscCs�tj�j}tjdtj�d�d}ttt	|j
d���}|dkrl|jd|�n|jd|�|d
kr�|jd	|�n|jd	|�|dkr�|jd|�n|jd|�dS)Nz
\d+\.\d+\.\d+r�rrW���stealrZguestrwZ
guest_nice)r�r�r�)r�r�r)rwr�r)
rp�	cpu_times�_fields�re�findall�os�unamerXrYrFrBr��assertNotIn)rsr�Z
kernel_verZkernel_ver_infor/r/r0�test_cpu_timesUs zTestSystemCPU.test_cpu_timesz/sys/devices/system/cpu/onlinez-/sys/devices/system/cpu/online does not existc
Csqtd��}|j�j�}WdQRXdt|�krmt|jd�d�d}|jtj�|�dS)Nz/sys/devices/system/cpu/online�-r9)	rhr�rTr�rFrBr�rp�	cpu_count)rsr��valuer/r/r0�*test_cpu_count_logical_w_sysdev_cpu_onlinegs
z8TestSystemCPU.test_cpu_count_logical_w_sysdev_cpu_onlinez/sys/devices/system/cpuz&/sys/devices/system/cpu does not existcCsBtjd�}tdd�|D��}|jtj�|�dS)Nz/sys/devices/system/cpucSs.g|]$}tjd|�dk	r|�qS)zcpu\d+$N)r��search)r5r2r/r/r0r7ts	zITestSystemCPU.test_cpu_count_logical_w_sysdev_cpu_num.<locals>.<listcomp>)r��listdirr�r�rpr�)rsZls�countr/r/r0�'test_cpu_count_logical_w_sysdev_cpu_numpsz5TestSystemCPU.test_cpu_count_logical_w_sysdev_cpu_numZnprocznproc utility not availablecCs2ttd��}|jtjdd�|�dS)Nznproc --all�logicalT)rFrr�rpr�)rs�numr/r/r0�test_cpu_count_logical_w_nprocwsz,TestSystemCPU.test_cpu_count_logical_w_nprocZlscpuzlscpu utility not availablecCsNtd�}tdd�|jd�D��}|jtjdd�|�dS)Nzlscpu -pcSs%g|]}|jd�s|�qS)�#)rC)r5r2r/r/r0r7s	z@TestSystemCPU.test_cpu_count_logical_w_lscpu.<locals>.<listcomp>r@r�T)rr�rBr�rpr�)rsrHr�r/r/r0�test_cpu_count_logical_w_lscpu|s"z,TestSystemCPU.test_cpu_count_logical_w_lscpuc&Cstddl}|jj�}tjddt��=}|j|jj�|�|js[t�tjddd��K}|j	|jj��|j|j
d�|j|jddd�WdQRXtd	d
��}|j
�}WdQRXtj|�}tjdd|dd�� }|j|jj�|�WdQRXtd	d��'}|j|jj�|�|jWdQRXWdQRXdS)
Nrzpsutil._pslinux.os.sysconfrgzpsutil._pslinux.openrfTr�z
/proc/statz
/proc/cpuinfo�rb�return_valuer�)r��_pslinuxZcpu_count_logicalrrirGr�r�r��assertIsNoneZ
call_count�	call_argsrhr�r\r^rl)rsrpZoriginalrkr�Zcpuinfo_data�	fake_filer/r/r0�test_cpu_count_logical_mocked�s&" z+TestSystemCPU.test_cpu_count_logical_mockedc	CsHtjddd��,}|jtjj��|js=t�WdQRXdS)Nzpsutil._pslinux.openrfT)rrir�rpr�Zcpu_count_physicalr�r�)rsrkr/r/r0�test_cpu_count_physical_mocked�sz,TestSystemCPU.test_cpu_count_physical_mockedz
not supportedc	Cs4tjddg��|jtj��WdQRXdS)Nzpsutil._pslinux.glob.globr�)rrir�rp�cpu_freq)rsr/r/r0�test_cpu_freq_no_result�sz%TestSystemCPU.test_cpu_freq_no_resultzfails on Travisc
ss��fdd�}g�tj�tjdd|dd��-tj�sRt�|jt��d�WdQRXdS)Ncs;|jd�r �jd�gS�jd��|�SdS)Nz&/sys/devices/system/cpu/cpufreq/policy)rC�append)�pattern)�flags�	orig_globr/r0�	glob_mock�s


z>TestSystemCPU.test_cpu_freq_use_second_file.<locals>.glob_mockzpsutil._pslinux.glob.globrgrfTr�)�globrrirpr�r�r�r�)rsr�r/)r�r�r0�test_cpu_freq_use_second_file�s	
z+TestSystemCPU.test_cpu_freq_use_second_filecs��fdd�}t�tr$dnd}tj|d|��jtjdddg��Jtj�}|j|jd	�|j|jd
�|j|j	d�WdQRXWdQRXdS)Ncsh|jd�rtjd�S|jd�r8tjd�S|jd�rTtjd�S�|||�SdS)Nz/scaling_cur_freqs500000z/scaling_min_freqs600000z/scaling_max_freqs700000)r�r\r^)r_r`ra)rdr/r0re�s


z;TestSystemCPU.test_cpu_freq_emulate_data.<locals>.open_mockz
builtins.openz__builtin__.openrgz	glob.globr�z'/sys/devices/system/cpu/cpufreq/policy0g@@g��@g�@)
rhrrrirpr�r��current�min�max)rsrerj�freqr/)rdr0�test_cpu_freq_emulate_data�s

z(TestSystemCPU.test_cpu_freq_emulate_datacs��fdd�}t�tr$dnd}dddg}tj|d|��gtjd	d
|��Jtj�}|j|jd�|j|jd�|j|j	d
�WdQRXWdQRXdS)Ncsh|jd�rtjd�S|jd�r8tjd�S|jd�rTtjd�S�|||�SdS)Nz/scaling_cur_freqs100000z/scaling_min_freqs200000z/scaling_max_freqs300000)r�r\r^)r_r`ra)rdr/r0re�s


z@TestSystemCPU.test_cpu_freq_emulate_multi_cpu.<locals>.open_mockz
builtins.openz__builtin__.openz'/sys/devices/system/cpu/cpufreq/policy0z'/sys/devices/system/cpu/cpufreq/policy1z'/sys/devices/system/cpu/cpufreq/policy2rgz	glob.globr�gY@gi@g�r@)
rhrrrirpr�r�r�r�r�)rsrerj�policiesr�r/)rdr0�test_cpu_freq_emulate_multi_cpu�s
	z-TestSystemCPU.test_cpu_freq_emulate_multi_cpucs
�fdd�}t�tr$dnd}dddg}tj|d|��Atjd	d
|��$tj�}|j|jd�WdQRXWdQRX�fdd�}t�tr�dnd}tj|d|��5tjd	d
|��|jt	tj�WdQRXWdQRXdS)
NcsT|jd�r$ttjd��n,|jd�r@tjd�S�|||�SdS)Nz/scaling_cur_freqr4z/cpuinfo_cur_freqs200000)r�r�r�r�r\r^)r_r`ra)rdr/r0re�s

zGTestSystemCPU.test_cpu_freq_no_scaling_cur_freq_file.<locals>.open_mockz
builtins.openz__builtin__.openz'/sys/devices/system/cpu/cpufreq/policy0z'/sys/devices/system/cpu/cpufreq/policy1z'/sys/devices/system/cpu/cpufreq/policy2rgz	glob.globr���cs\|jd�r$ttjd��n4|jd�rHttjd��n�|||�SdS)Nz/scaling_cur_freqr4z/cpuinfo_cur_freq)r�r�r�r�)r_r`ra)rdr/r0res
)
rhrrrirpr�r�r��assertRaises�NotImplementedError)rsrerjr�r�r/)rdr0�&test_cpu_freq_no_scaling_cur_freq_file�s 	!z4TestSystemCPU.test_cpu_freq_no_scaling_cur_freq_fileN)r�r�r�rr�rr�r��path�existsr�r�rr�r�r�r�r	r�r�r�r�rr/r/r/r0r�Rs %%!"r�c@sLeZdZejed�dd��Zejed�dd��ZdS)�TestSystemCPUStatszfails on TraviscCs5td�}tj�j}|j||dd�dS)Nzcontext switchesryi�)rVrp�	cpu_statsZctx_switchesrr)rsrtrur/r/r0�test_ctx_switches"sz$TestSystemCPUStats.test_ctx_switchescCs5td�}tj�j}|j||dd�dS)N�
interruptsryi�)rVrprrrr)rsrtrur/r/r0�test_interrupts(sz"TestSystemCPUStats.test_interruptsN)r�r�r�rr�rrr	r/r/r/r0rsrc@seZdZdd�Zdd�Ze�dd��Zejdde	�ejd	d
d�dd
���Z
dd�ZdS)�TestSystemNetworkcCs�x�tj�j�D]v\}}xg|D]_}|jtjkrZ|j|jt|��q&|jtj	kr&|j|jt
|��q&WqWdS)N)rpZnet_if_addrs�items�familyZAF_LINKr��addressr?r"r#r1)rsr_Zaddrs�addrr/r/r0�test_net_if_addrs_ips7s
z'TestSystemNetwork.test_net_if_addrs_ipscCsyxrtj�j�D]^\}}ytd|�}Wntk
rGYqX|j|jttj	d|�d��qWdS)Nzifconfig %sz(?i)MTU[: ](\d+)r)
rp�net_if_statsrr�RuntimeErrorr�ZmturFr�r�)rsr_�statsrHr/r/r0�test_net_if_stats@s
z#TestSystemNetwork.test_net_if_statscs[�fdd�}tjdddd�}x*|j�D]\�}y|��}Wntk
rjw7YnX|j|j|ddd�|j|j|ddd�|j|j|ddd	�|j|j|d
dd	�|j|j	|ddd�|j|j
|ddd�|j|j|ddd�|j|j|ddd�q7WdS)Ncsi}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+)�errinr9�erroutzdropped[: ](\d+)�dropin�dropoutz#RX (?:packets \d+ +)?bytes[: ](\d+)�
bytes_recvz#TX (?:packets \d+ +)?bytes[: ](\d+)�
bytes_sent)rrFr�r�)Znicr�rH)r_r/r0�ifconfigNs    z8TestSystemNetwork.test_net_io_counters.<locals>.ifconfigZpernicT�nowrapFrryirPrrrrr�rrrii)
rp�net_io_countersrrrrrrrrrrrr)rsrZniorZifconfig_retr/)r_r0�test_net_io_countersLs.
z&TestSystemNetwork.test_net_io_countersz psutil._pslinux.socket.inet_ntoprgzpsutil._pslinux.supports_ipv6r�FcCsey9tjtjtj�}|j|j�|jd�Wntjk
rPYnXtjdd�dS)N�::1r�kindZinet6)r r)	r"�AF_INET6�SOCK_STREAM�
addCleanup�close�bind�errorrp�net_connections)rsZ
supports_ipv6�	inet_ntopr.r/r/r0�%test_net_connections_ipv6_unsupported�sz7TestSystemNetwork.test_net_connections_ipv6_unsupportedc
CsEtdtjd���&}tjdd�|js:t�WdQRXdS)Nz/proc/net/unixa.                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
                r!Zunix)rlr�r�rpr(r�r�)rsrkr/r/r0�test_net_connections_mocked�sz-TestSystemNetwork.test_net_connections_mockedN)r�r�r�rrrrrrirGr*r+r/r/r/r0r
4s	:$r
c@s�eZdZejeed�d�e�dd���Zdd�Z	dd�Z
d	d
�Zdd�Zd
d�Z
dd�Zdd�Zdd�ZdS)�TestSystemDisks�statvfszos.statvfs() not availablecCs�dd�}x�tjdd�D]�}tj|j�}||j�\}}}}|j|j|�t|j|�d	kr�|jd|j|f�t|j	|�dkr|jd|j	|f�qWdS)NcSs�td|�j�}|jd�}|jd�|jd�}|j�dd�\}}}}|dkrud}t|�t|�t|�}}}||||fS)Nzdf -P -B 1 "%s"r@rr�Znoner4)rrTrB�poprF)rrHrIrJ�devrLrMrAr/r/r0�df�s
"&z:TestSystemDisks.test_disk_partitions_and_usage.<locals>.df�allFr�izpsutil=%s, df=%si(i�i(i�)
rp�disk_partitions�
disk_usageZ
mountpointr�rLr�rA�failrM)rsr0�part�usager/rLrMrAr/r/r0�test_disk_partitions_and_usage�sz.TestSystemDisks.test_disk_partitions_and_usagecCstdd��}|j�}WdQRXd|krhx�tj�D]}|jdkr>Pq>W|jd�n�tjtd��}t	j
dd|dd	��v}t	j
d
ddg��T}tj�}|js�t�|js�t�|s�t�|j
|djd�WdQRXWdQRXdS)Nz/proc/filesystems�r�zfszcouldn't find any ZFS partitionz
nodev	zfs
zpsutil._pslinux.openr�rfTz$psutil._pslinux.cext.disk_partitions�	/dev/sdb3�/�rwr)r:r;r9r<)rhr�rpr2Zfstyper4r\r]rrrir�r�r�)rsr�r�r5r��m1�m2r�r/r/r0�test_disk_partitions_mocked�s$z+TestSystemDisks.test_disk_partitions_mockedcCs�tdd���tjddd���tjdd�}|j|jd�|j|jd	�|j|jd
t	�|j|j
d�|j|jd�|j|jd
�|j|j
dt	�|j|jd�|j|jd�WdQRXWdQRXdS)Nz/proc/diskstatsz+   3     0   1 hda 2 3 4 5 6 7 8 9 10 11 12z!psutil._pslinux.is_storage_devicer�TrFr9r�rwr�rPr�r�r�r�)rlrrirp�disk_io_countersr��
read_count�read_merged_count�
read_bytes�SECTOR_SIZE�	read_time�write_count�write_merged_count�write_bytes�
write_time�	busy_time)rsr�r/r/r0�'test_disk_io_counters_kernel_2_4_mocked�s

z7TestSystemDisks.test_disk_io_counters_kernel_2_4_mockedcCs�tdd���tjddd���tjdd�}|j|jd�|j|jd	�|j|jd
t	�|j|j
d�|j|jd�|j|jd
�|j|j
dt	�|j|jd�|j|jd�WdQRXWdQRXdS)Nz/proc/diskstatsz'   3    0   hda 1 2 3 4 5 6 7 8 9 10 11z!psutil._pslinux.is_storage_devicer�TrFr9r�rwr�rPr�r�r�r�)rlrrirpr@r�rArBrCrDrErFrGrHrIrJ)rsr�r/r/r0�,test_disk_io_counters_kernel_2_6_full_mocked�s

z<TestSystemDisks.test_disk_io_counters_kernel_2_6_full_mockedcCs�tdd���tjddd���tjdd�}|j|jd�|j|jd	t�|j|j	d
�|j|j
dt�|j|jd�|j|jd�|j|j
d�|j|jd�|j|jd�WdQRXWdQRXdS)
Nz/proc/diskstatsz   3    1   hda 1 2 3 4z!psutil._pslinux.is_storage_devicer�TrFr9r�rwr�r)rlrrirpr@r�rArCrDrFrHrBrErGrIrJ)rsr�r/r/r0�/test_disk_io_counters_kernel_2_6_limited_mockeds

z?TestSystemDisks.test_disk_io_counters_kernel_2_6_limited_mockedcCs�tdtjd����tjddd���tjdddd�}|jt|�d	�|j|d
j	d�|j|dj	d�|j|d
j
d
�|j|dj
d
�WdQRXWdQRXdS)Nz/proc/diskstatsz�                    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!psutil._pslinux.is_storage_devicer�F�perdiskTrr��nvme0n1r9Z	nvme0n1p1rP)rlr�r�rrirpr@r�r�rArF)rsr�r/r/r0�(test_disk_io_counters_include_partitionss

z8TestSystemDisks.test_disk_io_counters_include_partitionsc!Cs�tdtjd���Gtjddd��*tjdddd�}|j|�WdQRXWdQRXdd	�}tdtjd���ftjdd
dd|��Ctjdddd�}|j|j	d
�|j|j
d�WdQRXWdQRXdS)Nz/proc/diskstatsz�                    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!psutil._pslinux.is_storage_devicer�FrNrcSs
|dkS)NrOr/)r_r/r/r0�is_storage_device:szSTestSystemDisks.test_disk_io_counters_exclude_partitions.<locals>.is_storage_devicerfTrgr9rP)rlr�r�rrirpr@r�r�rArF)rsr�rQr/r/r0�(test_disk_io_counters_exclude_partitions*s$


z8TestSystemDisks.test_disk_io_counters_exclude_partitionscCssdd�}tjdd�}tjdddd|��tjdd�}WdQRX|jt|�t|��dS)NcSs|dkrdSdS)Nz/proc/diskstatsFTr/)rr/r/r0rJsz;TestSystemDisks.test_disk_io_counters_sysfs.<locals>.existsrNTzpsutil._pslinux.os.path.existsrfrg)rpr@rrir�r�)rsrZwprocfsZwsysfsr/r/r0�test_disk_io_counters_sysfsIsz+TestSystemDisks.test_disk_io_counters_sysfsc
CsFdd�}tjdddd|��|jttj�WdQRXdS)NcSsdS)NFr/)rr/r/r0rVsz>TestSystemDisks.test_disk_io_counters_not_impl.<locals>.existszpsutil._pslinux.os.path.existsrfTrg)rrirrrpr@)rsrr/r/r0�test_disk_io_counters_not_implUsz.TestSystemDisks.test_disk_io_counters_not_implN)r�r�r�rr��hasattrr�rr7r?rKrLrMrPrRrSrTr/r/r/r0r,�sr,c@seZdZdd�Zejd�dd��Zdd�Zdd	�Zd
d�Z	dd
�Z
dd�Zdd�ZdS)�TestMisccCs8td�}tj�}|jt|�t|��dS)Nz	boot time)rVrp�	boot_timer�rF)rsrtrur/r/r0�test_boot_timefszTestMisc.test_boot_timezpsutil.traceback.print_excc"s�tj�}ttjj|d�d��.}|jd�|jd�|jd�WdQRXzJt��fdd�}tr�dnd	}tj	|d
|��t
t�|js�t
�|jttj�|jttjdd�|jttj�|jttjdd�|jttj�|jttjdd�|t_|jtj�d
�|jttj��d
�tjdd�}|jt|�d
�tjdd�}|jttt|��d
�ttjj|d�d��.}|jd�|jd�|jd�WdQRX|jtj�d
�|jttjdd��d
�|jttj��d
�|jttttjdd���d
�WdQRXWdtj|�t
t�X|jtjd�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
cs1|jd�r!ttjd���|||�S)Nz/proczrejecting access for test)rCr�r�r�)r_r`ra)rdr/r0rewsz4TestMisc.test_no_procfs_on_import.<locals>.open_mockz
builtins.openz__builtin__.openrg�percpuTrzcpu   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)�tempfile�mkdtemprhr�rr=�writerrrirrpr�r�rr�r��cpu_percent�cpu_times_percent�PROCFS_PATHr��sumrY�assertNotEqual�shutil�rmtree)rs�tbZ	my_procfsr�rerjZper_cpu_percentZper_cpu_times_percentr/)rdr0�test_no_procfs_on_importksN!


	!

0
z!TestMisc.test_no_procfs_on_importcCs�tdtjd�j���J}tj�|js:t�tjdd�tj�tjdd�WdQRXtdtjd�j���}tj�}|js�t�tjdd�}tj�}tjdd�}|j	|d�|j	t
|�d�|j	t
|�d�|j	t
|�d�|j	t
tt
|��d�|j	t
tt
|��d�|j|j
d�|j	|jd�WdQRXdS)Nz
/proc/statz�                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
                rYTz�                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@)rlr�r�r�rpr]r�r�r^rar`rYr�r��user)rsrkr]Zcpu_percent_percpur^Zcpu_times_percent_percpur/r/r0�test_cpu_steal_decrease�s4

z TestMisc.test_cpu_steal_decreasec
CsHtjddd��,}|jttjj�|js=t�WdQRXdS)Nzpsutil._pslinux.openrfT)	rrirrrpr�rWr�r�)rsrkr/r/r0�test_boot_time_mocked�s

zTestMisc.test_boot_time_mockedcCs�tjddd
g��3}|jtj�d	jd
�|jsGt�WdQRXtjdddg��3}|jtj�d	jd
�|js�t�WdQRXtjdddg��3}|jtj�d	jd�|js�t�WdQRXdS)Nzpsutil._pslinux.cext.usersr��	giampaolo�pts/2�:0��h�ATr�r�	localhost�:0.0�foo)rirjrkrlTr�)rirjrnrlTr�)rirjrorlTr�)rrir�rpZusers�hostr�r�)rsrkr/r/r0�test_users_mocked�szTestMisc.test_users_mockedcCs�tj�}z�|t_|jttj�|jttj�|jttjdd�|jttj�|jttj	�|jttj
�|jttj�|jttj�|jtj
tj�Wddt_tj|�XdS)NrYTz/proc)rZr[rpr_rr�rqr�rWr(rrr2Z
NoSuchProcess�Processr��rmdir)rsZtdirr/r/r0�test_procfs_path�s		zTestMisc.test_procfs_pathc
Cs�t�}|j�zntj�}|j�dj}tj|�sQt|��tj|�}|j�|j	|tj
��Wd|j�XdS)Nr9)r�startrprr�threads�id�
pid_existsr�Zas_dictr�Zpids�stop)rs�t�p�tidZptr/r/r0�test_issue_687s	

zTestMisc.test_issue_687c	CsGtdd��1}tjtj��s-t�|js<t�WdQRXdS)Nz/proc/%s/statusr4)rlrprxr��getpidr�r�)rsrkr/r/r0�test_pid_exists_no_proc_statussz'TestMisc.test_pid_exists_no_proc_statusN)
r�r�r�rXrrirergrhrqrtr}rr/r/r/r0rVcs>)rVz
no batteryc@s�eZdZejed�d�dd��Zejed�d�dd��Zdd�Zd	d
�Z	dd�Z
d
d�Zdd�Zdd�Z
dd�Zdd�Zdd�ZdS)�TestSensorsBatteryZacpizacpi utility not availablecCs`td�}t|jd�dj�jdd��}tj�j}|j||dd�dS)Nzacpi -b�,r9�%r4ry)	rrFrBrT�replacerp�sensors_battery�percentrr)rsrHZ
acpi_valuerur/r/r0�test_percent$s+zTestSensorsBattery.test_percentcCsvtd�}d|j�kr+tjd�Sd|kr@d}nd|jd�dk}|jtj�j|�dS)	Nzacpi -b�unknownzacpi output not reliablezdischarging at zero rateTZChargingr@r)	r�lowerrr�rBr�rpr��
power_plugged)rsrHZpluggedr/r/r0�test_power_plugged+s
	z%TestSensorsBattery.test_power_pluggedc
s��fdd�}t�tr$dnd}tj|d|��K}|jtj�jd�|jtj�jtj	�|j
s�t�WdQRXdS)Ncs?|jd�s|jd�r+tjd�S�|||�SdS)Nz
AC0/onlinez	AC/online�1)r�r\r^)r_r`ra)rdr/r0re8s
z@TestSensorsBattery.test_emulate_power_plugged.<locals>.open_mockz
builtins.openz__builtin__.openrgT)rhrrrir�rpr�r�ZsecsleftZPOWER_TIME_UNLIMITEDr�r�)rsrerjrkr/)rdr0�test_emulate_power_plugged6sz-TestSensorsBattery.test_emulate_power_pluggedc
su�fdd�}t�tr$dnd}tj|d|��/}|jtj�jd�|jsjt	�WdQRXdS)Ncsi|jd�s|jd�r3ttjd��n2|jd�rUtjtd��S�|||�SdS)Nz
AC0/onlinez	AC/onliner4z/statusZcharging)r�r�r�r�r\r]r)r_r`ra)rdr/r0reIs
zBTestSensorsBattery.test_emulate_power_plugged_2.<locals>.open_mockz
builtins.openz__builtin__.openrgT)
rhrrrir�rpr�r�r�r�)rsrerjrkr/)rdr0�test_emulate_power_plugged_2Fsz/TestSensorsBattery.test_emulate_power_plugged_2c
su�fdd�}t�tr$dnd}tj|d|��/}|jtj�jd�|jsjt	�WdQRXdS)Ncs?|jd�s|jd�r+tjd�S�|||�SdS)Nz
AC0/onlinez	AC/online�0)r�r\r^)r_r`ra)rdr/r0reYs
zDTestSensorsBattery.test_emulate_power_not_plugged.<locals>.open_mockz
builtins.openz__builtin__.openrgF)
rhrrrir�rpr�r�r�r�)rsrerjrkr/)rdr0�test_emulate_power_not_pluggedWsz1TestSensorsBattery.test_emulate_power_not_pluggedc
su�fdd�}t�tr$dnd}tj|d|��/}|jtj�jd�|jsjt	�WdQRXdS)Ncsi|jd�s|jd�r3ttjd��n2|jd�rUtjtd��S�|||�SdS)Nz
AC0/onlinez	AC/onliner4z/statusZdischarging)r�r�r�r�r\r]r)r_r`ra)rdr/r0rehs
zFTestSensorsBattery.test_emulate_power_not_plugged_2.<locals>.open_mockz
builtins.openz__builtin__.openrgF)
rhrrrir�rpr�r�r�r�)rsrerjrkr/)rdr0� test_emulate_power_not_plugged_2esz3TestSensorsBattery.test_emulate_power_not_plugged_2c	sr�fdd�}t�tr$dnd}tj|d|��,}|jtj�j�|jsgt	�WdQRXdS)Ncsc|jd�s|jd�r3ttjd��n,|jd�rOtjd�S�|||�SdS)Nz"/sys/class/power_supply/AC0/onlinez!/sys/class/power_supply/AC/onliner4z#/sys/class/power_supply/BAT0/statuss???)rCr�r�r�r\r^)r_r`ra)rdr/r0reys
zETestSensorsBattery.test_emulate_power_undetermined.<locals>.open_mockz
builtins.openz__builtin__.openrg)
rhrrrir�rpr�r�r�r�)rsrerjrkr/)rdr0�test_emulate_power_undeterminedvs	z2TestSensorsBattery.test_emulate_power_undeterminedcCs]tdttjd���;tdttjd���|jtj��WdQRXWdQRXdS)Nz'/sys/class/power_supply/BAT0/energy_nowr4z'/sys/class/power_supply/BAT0/charge_now)rnr�r�r�r�rpr�)rsr/r/r0�test_emulate_no_base_files�sz-TestSensorsBattery.test_emulate_no_base_filesc
CsEtdd��/}|jtj�jd�|js:t�WdQRXdS)Nz(/sys/class/power_supply/BAT0/energy_fullr�r)rlr�rpr�r�r�r�)rsrkr/r/r0�test_emulate_energy_full_0�sz-TestSensorsBattery.test_emulate_energy_full_0cCsztdttjd���Xtdttjd���5tdd��|jtj�jd�WdQRXWdQRXWdQRXdS)Nz(/sys/class/power_supply/BAT0/energy_fullr4z(/sys/class/power_supply/BAT0/charge_fullz%/sys/class/power_supply/BAT0/capacitys88�X)	rnr�r�r�rlr�rpr�r�)rsr/r/r0�"test_emulate_energy_full_not_avail�s
z5TestSensorsBattery.test_emulate_energy_full_not_availcCs�tdttjd���atdttjd���>tdttjd���|jtj�j�WdQRXWdQRXWdQRXdS)Nz!/sys/class/power_supply/AC/onliner4z"/sys/class/power_supply/AC0/onlinez#/sys/class/power_supply/BAT0/status)rnr�r�r�r�rpr�r�)rsr/r/r0�test_emulate_no_power�sz(TestSensorsBattery.test_emulate_no_powerN)r�r�r�rr�rr�r�r�r�r�r�r�r�r�r�r�r/r/r/r0r� s%%
r�c@s:eZdZejed�dd��Zdd�ZdS)�TestSensorsTemperatureszunreliable on TRAVIScs��fdd�}t�tr$dnd}tj|d|��e}tjdd��I}|jtj�i�|j	s|t
�|jdt|d	j
��WdQRXWdQRXdS)
Ncs8|jd�r$ttjd��n�|||�SdS)N�_inputr4)r��OSErrorr�ZEIO)r_r`ra)rdr/r0re�szATestSensorsTemperatures.test_emulate_eio_error.<locals>.open_mockz
builtins.openz__builtin__.openrgr�TZignoringr)rhrrrir�r�r�rp�sensors_temperaturesr�r�r�r�r�)rsrerjrkr�r/)rdr0�test_emulate_eio_error�sz.TestSensorsTemperatures.test_emulate_eio_errorcs��fdd�}t�tr$dnd}tj|d|���tjdddg��etj�d	d
}|j|jd�|j|jd�|j|j	d
�|j|j
d�WdQRXWdQRXdS)Ncs�|jd�r"tjtd��S|jd�rDtjtd��S|jd�r`tjd�S|jd�r|tjd�S|jd	�r�tjd
�S�|||�SdS)Nz/namer_z/temp1_label�labelz/temp1_inputs30000z
/temp1_maxs40000z/temp1_crits50000)r�r\r]rr^)r_r`ra)rdr/r0re�s


z<TestSensorsTemperatures.test_emulate_data.<locals>.open_mockz
builtins.openz__builtin__.openrgz	glob.globr�z/sys/class/hwmon/hwmon0/temp1r_rr�g>@gD@gI@)rhrrrirpr�r�r�r��high�critical)rsrerjZtempr/)rdr0�test_emulate_data�s
z)TestSensorsTemperatures.test_emulate_dataN)r�r�r�rr�rr�r�r/r/r/r0r��sr�c@seZdZdd�ZdS)�TestSensorsFanscs��fdd�}t�tr$dnd}tj|d|��_tjdddg��?tj�d	d
}|j|jd�|j|jd�WdQRXWdQRXdS)
Ncsz|jd�r"tjtd��S|jd�rDtjtd��S|jd�rftjtd��S�|||�SdS)Nz/namer_z/fan1_labelr�z/fan1_inputZ2000)r�r\r]r)r_r`ra)rdr/r0re�sz4TestSensorsFans.test_emulate_data.<locals>.open_mockz
builtins.openz__builtin__.openrgz	glob.globr�z/sys/class/hwmon/hwmon2/fan1r_rr�i�)	rhrrrirpZsensors_fansr�r�r�)rsrerjZfanr/)rdr0r��s

z!TestSensorsFans.test_emulate_dataN)r�r�r�r�r/r/r/r0r��sr�c@seZdZdd�ZeZdd�Zdd�Zeje	d�dd	��Z
d
d�Zdd
�Zdd�Z
dd�Zdd�Zdd�Zdd�Zdd�Zdd�Zejed�dd��Zdd �Zd!d"�Zd#d$�Zd%S)&�TestProcesscCstt�dS)N)rr)rsr/r/r0�setUpszTestProcess.setUpcCstjdt�}t|�}|jt�tdd�dt�tj|j	�}t
jd�|j�}|j
dd�}|j|jtdd	�|D��d
d�|j|jtdd	�|D��d
d�|j|jtd
d	�|D��d
d�dS)Nzk
            import time
            with open("%s", "w") as f:
                time.sleep(10)
            cSs
tjd�S)NrW)r�r�r/r/r/r0�<lambda>sz3TestProcess.test_memory_full_info.<locals>.<lambda>z'%s' not in retg�������?ZgroupedFcSs g|]}|j|j�qSr/)Z
private_dirtyZ
private_clean)r5r2r/r/r0r7s	z5TestProcess.test_memory_full_info.<locals>.<listcomp>ryicSsg|]}|j�qSr/)�pss)r5r2r/r/r0r7s	cSsg|]}|j�qSr/)r�)r5r2r/r/r0r7s	)r�r�rrr$rrrprr�pid�time�sleep�memory_full_info�memory_mapsrr�ussr`r�r�)rs�srcZsprocr{r��mapsr/r/r0�test_memory_full_infos 


&z!TestProcess.test_memory_full_infocCs�tdtj�tjd�j���g}tj�}|j�}|j	sRt
�|j|jd�|j|j
d�|j|jd
�WdQRXdS)Nz/proc/%s/smapsa�                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
                r�r��irwr�
�ilii<)rlr�r~r�r�r�rprrr�r�r�r�r�r�r�)rsrkr{r�r/r/r0�test_memory_full_info_mockeds
z(TestProcess.test_memory_full_info_mockedzunreliable on PYPYc;Cs�dd�}ttd��|j|�jd�WdQRXttd��|j|�jd�WdQRXttd��|j|�jd�WdQRXttd��|j|�jd�WdQRXttd��|j|�jd�WdQRXttd��|j|�jd�WdQRXtr�tt�ttd	��|j|�jd�WdQRXtt�ttd
��|j|�jd�WdQRXdS)NcSs|tj�}tj�d}xMxF|j�D]8}|jtjjt�krQ|Stj�|kr,Pq,WqWtd��dS)Nr�ztimeout looking for test file)	rprrr��
open_filesrr��abspathrr)r{Z	giveup_at�filer/r/r0�
get_test_fileBs	z7TestProcess.test_open_files_mode.<locals>.get_test_filer�r8r�zr+zw+za+r2zx+)rhrr��moderr)rsr�r/r/r0�test_open_files_mode@s(

z TestProcess.test_open_files_modecCs�tj�}|j�}tj���t|jdt|��tjddt	t
jd���/}|j�}|s|t�|j
s�t�WdQRXtjddt	t
jd���,}|j|j�g�|j
s�t�WdQRXWdQRXdS)Nzlen(ret) != %izpsutil._pslinux.os.readlinkrgr4)rprrr�rZ�NamedTemporaryFilerr�rrir�r�r�r�r��EINVALr�)rsr{�filesrkr/r/r0�test_open_files_file_goneds

z%TestProcess.test_open_files_file_gonecCs�tj�}|j�}tj���t|jdt|��trKdnd}tj	|dt
tjd���/}|j�}|s�t
�|js�t
�WdQRXWdQRXdS)Nzlen(ret) != %iz
builtins.openz__builtin__.openrgr4)rprrr�rZr�rr�rrrir�r�r�r�r�)rsr{r�rjrkr/r/r0�test_open_files_fd_gonexs

z#TestProcess.test_open_files_fd_gonec
CsWtjddi��;}|jtjjtj��j��|j	sLt
�WdQRXdS)Nz)psutil._pslinux._psposix.get_terminal_mapr�)rrir�rpr�rrr�r~Zterminalr�r�)rsrkr/r/r0�test_terminal_mocked�s%z TestProcess.test_terminal_mockedcCs�tj�}tjtd��}tjdd|dd��2}|j|j�ddg�|j	sjt
�WdQRXtjtd��}tjdd|dd��5}|j|j�ddd	g�|j	s�t
�WdQRXdS)
Nzfoobarzpsutil._pslinux.openr�rfTro�barz	foobarr4)rprrr\r]rrrir��cmdliner�r�)rsr{r�rkr/r/r0�test_cmdline_mocked�szTestProcess.test_cmdline_mockedcCs�tj�}tjtd��}tjdd|dd��2}|j|j�ddg�|j	sjt
�WdQRXtjtd��}tjdd|dd��5}|j|j�ddd	g�|j	s�t
�WdQRXdS)
Nzfoo bar zpsutil._pslinux.openr�rfTror�z	foo bar  r4)rprrr\r]rrrir�r�r�r�)rsr{r�rkr/r/r0�test_cmdline_spaces_mocked�sz&TestProcess.test_cmdline_spaces_mockedc
CsYtjddd��=|jtj�j�d�|jtj�j�d�WdQRXdS)Nzpsutil._pslinux.os.readlinkr�z/home/foo (deleted)z	/home/foo)rrir�rprr�exe�cwd)rsr/r/r0�!test_readlink_path_deleted_mocked�s
z-TestProcess.test_readlink_path_deleted_mockedcs��fdd�}t�tr$dnd}tj|d|��8}tj�j�}|jsct�|j	|g�WdQRX�fdd�}tj|d|��!|j
tjtj�j�WdQRXdS)NcsB|jdtj��r.ttjd��n�|||�SdS)Nz
/proc/%s/taskr4)rCr�r~r�r�r�)r_r`ra)rdr/r0re�sz2TestProcess.test_threads_mocked.<locals>.open_mockz
builtins.openz__builtin__.openrgcsB|jdtj��r.ttjd��n�|||�SdS)Nz
/proc/%s/taskr4)rCr�r~r�r��EPERM)r_r`ra)rdr/r0re�s)rhrrrirprrrvr�r�r�r�AccessDenied)rsrerjrkr�r/)rdr0�test_threads_mocked�szTestProcess.test_threads_mockedcCs�tjddttjd����}tjddtjdd����}tj�j�}|j	sit
�|j	sxt
�|j|d�tjddd��!|jtj
tj�j�WdQRXWdQRXWdQRXdS)	Nzpsutil._pslinux.readlinkrgr4zpsutil.Process.cmdlinerzpsutil._pslinux.os.path.lexistsr�F)rrir�r�r�rpr�rrr�r�r�r�r�
ZombieProcess)rsr=r>r�r/r/r0�test_exe_mocked�s
zTestProcess.test_exe_mockedcCs�tdtj�ttjd���^}tj�}|jt��}|j	�WdQRX|j
|jjtj�|jst
�WdQRXdS)Nz/proc/%s/smapsr4)rnr�r~r�r�r�rprrrr�r��	exceptionr�r�)rsrkr{�errr/r/r0�test_issue_1014�s
zTestProcess.test_issue_1014z
not supportedcCs�tjddttjd���X}tj�}|j�|jtj	��}|j
tj�WdQRX|jsut
�WdQRX|j|jj|j�|j|jj|j��dS)Nz"psutil._pslinux.cext.linux_prlimitrgr4)rrir�r�ZENOSYSrprrr_rr�ZrlimitZ
RLIMIT_NOFILEr�r�r�r�r�)rsrkr{rmr/r/r0�test_rlimit_zombie�s
zTestProcess.test_rlimit_zombiecCs�tjddttjd���R}tj�}|j�|jtj	��}|j
�WdQRX|jsot�WdQRX|j
|jj|j�|j
|jj|j��dS)Nzpsutil._pslinux.os.readlinkrgr4)rrir�r�r�rprrr_rr�r�r�r�r�r�r�)rsrkr{rmr/r/r0�test_cwd_zombies
zTestProcess.test_cwd_zombiec'Cs�ddlm}dddddddddddddddd	d
ddddddddddddddddddddddg'}dj|�j�}td
tj�|���tj�}|j	|j
�d�|j	|j�tj�|j	|j
�d�|j	|j�d|tj��|j�}|j	|jd|�|j	|jd|�|j	|jd|�|j	|jd|�|j	|j�d�WdQRXdS)Nr)�CLOCK_TICKS�0z(cat)�Z�1�2�3�4�5�6rSz
/proc/%s/stat�catr9r�r�rwr�rP)r�r�r=r�rlr�r~rprrr�r_�statusZ
STATUS_ZOMBIE�ppidZcreate_timerWr�rf�system�
children_user�children_systemZcpu_num)rsr�r`rbr{Zcpur/r/r0�test_stat_file_parsingsl	z"TestProcess.test_stat_file_parsingc
Cs:tdtj�tjd�j���tj�}|j|j	�j
d�|j|j	�jd�|j|j�d�|j
�}|j|jd�|j|jd�|j|jd�|j�}|j|jd	�|j|jd
�|j|jd�|j|jj�ttdd
���WdQRXdS)Nz/proc/%s/statusa                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:	13rxr��Bi�i�i�i�i�i�rr�)rlr�r~r�r�r�rprrr��num_ctx_switches�	voluntary�involuntary�num_threads�uids�realZ	effectiveZsaved�gids�_proc�_get_eligible_cpus�list�range)rsr{r�r�r/r/r0�test_status_file_parsingMs"
z$TestProcess.test_status_file_parsingN)r�r�r�r�ZtearDownr�r�rr�r
r�r�r�r�r�r�r�r�r�r�r
r�r�r�r�r/r/r/r0r�s$#$;r�c@s�eZdZdZedd��Zdd�Zdd�Zdd	�Zd
d�Z	dd
�Z
dd�Zdd�Ze
�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)rprr�proc)�clsr/r/r0�
setUpClasspsz#TestProcessAgainstStatus.setUpClasscCs�tjjd|jj��}}xc|D][}|j�}|j|�r&|jd�d}yt|�SWq&t	k
r�|SYq&Xq&Wt	d|��WdQRXdS)Nz/proc/%s/status�	r�z
can't find %r)
rp�_psplatform�	open_textr�r�rTrC�	partitionrFrG)rsZ	linestartr�rJr�r/r/r0�read_status_filets	


z)TestProcessAgainstStatus.read_status_filecCs,|jd�}|j|jj�|�dS)NzName:)r�r�r�r_)rsr�r/r/r0�	test_name�sz"TestProcessAgainstStatus.test_namecCsd|jd�}||jd�d|jd��}|jdd�}|j|jj�|�dS)NzState:�(r9�)rSr�)r��find�rfindr�r�r�r�)rsr�r/r/r0�test_status�s&z$TestProcessAgainstStatus.test_statuscCs,|jd�}|j|jj�|�dS)NzPPid:)r�r�r�r�)rsr�r/r/r0�	test_ppid�sz"TestProcessAgainstStatus.test_ppidcCs,|jd�}|j|jj�|�dS)NzThreads:)r�r�r�r�)rsr�r/r/r0�test_num_threads�sz)TestProcessAgainstStatus.test_num_threadscCsQ|jd�}ttt|j�dd���}|j|jj�|�dS)NzUid:r9r�)r�rXrYrFrBr�r�r�)rsr�r/r/r0�	test_uids�s%z"TestProcessAgainstStatus.test_uidscCsQ|jd�}ttt|j�dd���}|j|jj�|�dS)NzGid:r9r�)r�rXrYrFrBr�r�r�)rsr�r/r/r0�	test_gids�s%z"TestProcessAgainstStatus.test_gidscCsZ|jd�}|j|jj�j|�|jd�}|j|jj�j|�dS)Nzvoluntary_ctxt_switches:znonvoluntary_ctxt_switches:)r�r�r�r�r�r�)rsr�r/r/r0�test_num_ctx_switches�sz.TestProcessAgainstStatus.test_num_ctx_switchescCso|jd�}dt|�krktt|jd��\}}|j|jj�tt	||d���dS)NzCpus_allowed_list:r�r9)
r�r�rYrFrBr�r�Zcpu_affinityr�r�)rsr�Zmin_Zmax_r/r/r0�test_cpu_affinity�s
z*TestProcessAgainstStatus.test_cpu_affinityc
Csp|jd�}tjd��}|jjj�WdQRXdt|�kr]|jslt�n|jslt�dS)NzCpus_allowed_list:zpsutil._pslinux.per_cpu_timesr�)	r�rrir�r�r�r�r�r�)rsr�rkr/r/r0�test_cpu_affinity_eligible_cpus�sz8TestProcessAgainstStatus.test_cpu_affinity_eligible_cpusN)r�r�r��__doc__�classmethodr�r�r�r�r�r�r�r�rr�rrr/r/r/r0r�gs
r�c@s@eZdZdd�Zdd�Zdd�Zdd�Zd	S)
�	TestUtilsc
Cs3tjjt��}|j|jd�WdQRXdS)NZrt)rpr�r��__file__r�r�)rsr�r/r/r0�test_open_text�szTestUtils.test_open_textc
Cs3tjjt��}|j|jd�WdQRXdS)Nr�)rpr�r�rr�r�)rsr�r/r/r0�test_open_binary�szTestUtils.test_open_binaryc
CsNtjddd��2}|jtjjd�d�|jsCt�WdQRXdS)Nzos.readlinkr�z
foo (deleted)r�ro)rrir�rpr��readlinkr�r�)rsrkr/r/r0�
test_readlink�szTestUtils.test_readlinkcCs�tjjt�}t|d��}|jd�WdQRX|jtjj	tdd�d�|jtjj	tdd�d�|jtjj	tdd	d
�d
�dS)NZwtzfoo �binaryFroTsfooz??�fallbackr�)
r�rr�rrhr\r�rpr�r�)rsZfnamer�r/r/r0�test_cat�s""zTestUtils.test_catN)r�r�r�rrr	rr/r/r/r0r�sr�__main__)NrZ
__future__rrDr%r�r�r\r�r�rbr"r+rZr�r�r�rprZpsutil._compatrrrZpsutil.testsrrr	r
rrr
rrrrrrrrrrrrrrr��dirnamerZHEREr*ZSIOCGIFCONFr;rDr1r?rOrRrVrZ�contextmanagerrlrnr�ZTestCaseror�r�rr
r,rVr�r�r�r�r�rr�r/r/r/r0�<module>s�
	�5]�o���-�gR

Filemanager

Name Type Size Permission Actions
__init__.cpython-35.opt-1.pyc File 31.72 KB 0644
__init__.cpython-35.pyc File 33.22 KB 0644
__main__.cpython-35.opt-1.pyc File 2.66 KB 0644
__main__.cpython-35.pyc File 2.66 KB 0644
test_aix.cpython-35.opt-1.pyc File 3.48 KB 0644
test_aix.cpython-35.pyc File 3.48 KB 0644
test_bsd.cpython-35.opt-1.pyc File 20.06 KB 0644
test_bsd.cpython-35.pyc File 20.06 KB 0644
test_connections.cpython-35.opt-1.pyc File 15.7 KB 0644
test_connections.cpython-35.pyc File 16.1 KB 0644
test_contracts.cpython-35.opt-1.pyc File 23.32 KB 0644
test_contracts.cpython-35.pyc File 24.36 KB 0644
test_linux.cpython-35.opt-1.pyc File 69.39 KB 0644
test_linux.cpython-35.pyc File 70.81 KB 0644
test_memory_leaks.cpython-35.opt-1.pyc File 22.99 KB 0644
test_memory_leaks.cpython-35.pyc File 22.99 KB 0644
test_misc.cpython-35.opt-1.pyc File 35.69 KB 0644
test_misc.cpython-35.pyc File 36.91 KB 0644
test_osx.cpython-35.opt-1.pyc File 11.44 KB 0644
test_osx.cpython-35.pyc File 11.44 KB 0644
test_posix.cpython-35.opt-1.pyc File 14.02 KB 0644
test_posix.cpython-35.pyc File 14.18 KB 0644
test_process.cpython-35.opt-1.pyc File 43.88 KB 0644
test_process.cpython-35.pyc File 44.94 KB 0644
test_sunos.cpython-35.opt-1.pyc File 1.53 KB 0644
test_sunos.cpython-35.pyc File 1.53 KB 0644
test_system.cpython-35.opt-1.pyc File 27.54 KB 0644
test_system.cpython-35.pyc File 29.27 KB 0644
test_unicode.cpython-35.opt-1.pyc File 11.7 KB 0644
test_unicode.cpython-35.pyc File 11.76 KB 0644
test_windows.cpython-35.opt-1.pyc File 31.05 KB 0644
test_windows.cpython-35.pyc File 31.31 KB 0644