Viewing File: /opt/alt/python38/lib64/python3.8/site-packages/psutil/tests/__pycache__/test_linux.cpython-38.pyc

U

=_^@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*ej+,ej+-e.Z/dZ0dZ1dZ2dZ3d Z4erd!Z5ed"Z6d#d$Z7d%d&Z8d'd(Z9d)d*Z:d+d,Z;d-d.Z<d/d0Z=d1d2Z>d3d4Z?ej@d5d6ZAej@d7d8ZBe)Ced9Gd:d;d;eZDe)Ced9Gd<d=d=eZEe)Ced9Gd>d?d?eZFe)Ced9Gd@dAdAeZGe)Ced9GdBdCdCeZHe)Ced9GdDdEdEeZIe)Ced9GdFdGdGeZJe)Ced9GdHdIdIeZKe)Ced9GdJdKdKeZLe)Ced9GdLdMdMeZMe)Ced9GdNdOdOeZNe)Ced9GdPdQdQeZOe)Ced9GdRdSdSeZPe)Ced9GdTdUdUeZQe)Ced9GdVdWdWeZRe)Ced9e)CedXGdYdZdZeZSe)Ced9Gd[d\d\eZTe)Ced9Gd]d^d^eZUe)Ced9Gd_d`d`eZVe)Ced9GdadbdbeZWe)Ced9GdcddddeZXe)Ced9GdedfdfeZYeZdgkrddhl[m\Z\e\e.dS)izLinux specific tests.)divisionN)LINUX)
basestring)FileNotFoundError)PY3)u)
call_until)GLOBAL_TIMEOUT)HAS_BATTERY)HAS_CPU_FREQ)HAS_GETLOADAVG)
HAS_RLIMIT)mock)PsutilTestCase)PYPY)
reload_module)retry_on_failure)safe_rmpath)sh)skip_on_not_implemented)
ThreadTask)TOLERANCE_DISK_USAGE)TOLERANCE_SYS_MEM)unittest)whichiii'iiiz/sys/class/hwmon/hwmon*cCs|ddl}|dd}tr"t|d}ttjtj}t|6t|	|
tt
d|ddW5QRSQRXdSNrascii256s)fcntlrbytessocketAF_INET
SOCK_DGRAM
contextlibclosing	inet_ntoaioctlfilenoSIOCGIFADDRstructpackifnamer!sr1J/opt/alt/python38/lib64/python3.8/site-packages/psutil/tests/test_linux.pyget_ipv4_addressBs


r3cCs|ddl}|dd}tr"t|d}ttjtj}t|6t|	|
tt
d|ddW5QRSQRXdSr)r!rr"r#r$r%r&r'r(r)r*SIOCGIFNETMASKr,r-r.r1r1r2get_ipv4_netmaskOs


r5cCs|ddl}|dd}tr"t|d}ttjtj}t|6t|	|
tt
d|ddW5QRSQRXdSr)r!rr"r#r$r%r&r'r(r)r*SIOCGIFBRDADDRr,r-r.r1r1r2get_ipv4_broadcast\s


r7c		Cstdd8}|D]}|}|d|krq>qtd|W5QRX|d}g}tdt|dD]}||||dqdd|}t	tj
|}ttj
|S)Nz/proc/net/if_inet6rtzcould not find interface %rr:)open	readlinessplit
ValueErrorrangelenappendjoinr#Z	inet_ptonAF_INET6	inet_ntop)	r/flinefieldsZunformattedgroupsiZ	formattedZpackedr1r1r2get_ipv6_addressis
rKc
sddl}|dd}tr"t|d}ttjtj}t|l||	t
td|}trfddnddl
}|jdfdd	|d
dDddW5QRSQRXdS)
NrrrrcSs|SNr1xr1r1r2ordszget_mac_address.<locals>.ordcsg|]}d|qS)z%02x:r1).0charrOr1r2
<listcomp>sz#get_mac_address.<locals>.<listcomp>r r9)r!rr"r#r$r%r&r'r)r*
SIOCGIFHWADDRr,r-__builtin__rOrC)r/r!r0inforWr1rSr2get_mac_addresszs 


rYcCs|tdddid}|d}|D]F}|dr|\}}}}tdd}|t|t|t|Sqtd	d|d
S)zQParse 'free' cmd and return swap memory's s total, used and free
    values.
    free -bLANGC.UTF-8env
ZSwapfreeztotal used freez&can't find 'Swap' in 'free' output:
%sN)rr>
startswithcollections
namedtupleintr?rC)outlinesrG_totalusedr`ntr1r1r2	free_swaps

rkcCstdddid}|d}|D]P}|drdd|d	d
D\}}}}tdd}||||||Sqtd
d|dS)zSParse 'free' cmd and return physical memory's total, used
    and free values.
    rZr[r\r]r_ZMemcSsg|]}t|qSr1)rdrQrNr1r1r2rTsz free_physmem.<locals>.<listcomp>r`ztotal used free shared outputz%can't find 'Mem' in 'free' output:
%sN)rr>rarbrcr?rC)rerfrGrhrir`sharedrjr1r1r2free_physmems


rpcCsVtdddid}|dD]*}|}||krt|ddSqtd|dS)	Nz	vmstat -sr[r\r]r_ rz can't find %r in 'vmstat' output)rr>striprdr?)statrerGr1r1r2vmstatsrtcCs:td}d|krtdttt|ddS)Nzfree -VZUNKNOWNzcan't determine free versionr9.)rrrrSkipTesttuplemaprdr>)rer1r1r2get_free_version_infos
ryc	#sFfdd}ttrdnd}tj|d|d}|VW5QRXdS)zMock open() builtin and forces it to return a certain `content`
    on read() if the path being opened matches `for_path`.
    csL|kr8tr,ttr tStSqHtSn|f||SdSrL)r
isinstancerioStringIOBytesIOnameargskwargscontentfor_path	orig_openr1r2	open_mocks

z$mock_open_content.<locals>.open_mock
builtins.open__builtin__.openTcreateside_effectNr<rrpatch)rrrpatch_pointmr1rr2mock_open_contents
rc	#sFfdd}ttrdnd}tj|d|d}|VW5QRXdS)zZMock open() builtin and raises `exc` if the path being opened
    matches `for_path`.
    cs"|krn|f||SdSrLr1r~excrrr1r2rsz&mock_open_exception.<locals>.open_mockrrTrNr)rrrrrr1rr2mock_open_exceptions
rz
LINUX onlyc@seZdZddZeddZeddZeddZed	d
ZeddZ	ed
dZ
eddZddZeddZ
ddZddZddZddZdS)TestSystemVirtualMemorycCs&tdd}tj}|||dS)Nztotal memory)rtpsutilvirtual_memoryrhassertAlmostEqualselfZvmstat_valuepsutil_valuer1r1r2
test_totals
z"TestSystemVirtualMemory.test_totalcCsLtdkr|dt}|j}tj}|j||td|||jfddS)N)rzold free version	%s %s 
%sdeltamsg)	ryZskipTestrprirrrroutputrr`
free_valuerr1r1r2	test_useds


z!TestSystemVirtualMemory.test_usedcCs*tdd}tj}|j||tddS)Nzfree memoryrr)rtrrr`rrrr1r1r2	test_frees
z!TestSystemVirtualMemory.test_freecCs*tdd}tj}|j||tddS)Nz
buffer memoryrr)rtrrbuffersrrrr1r1r2test_bufferss
z$TestSystemVirtualMemory.test_bufferscCs*tdd}tj}|j||tddS)Nz
active memoryrr)rtrractiverrrr1r1r2test_actives
z#TestSystemVirtualMemory.test_activecCs*tdd}tj}|j||tddS)Nzinactive memoryrr)rtrrinactiverrrr1r1r2
test_inactives
z%TestSystemVirtualMemory.test_inactivecCsJt}|j}|dkrtdtj}|j||td|||jfddS)Nrz%free does not support 'shared' columnrr)	rprorrvrrrrrrr1r1r2test_shared#s

z#TestSystemVirtualMemory.test_sharedcCshtd}|d}d|dkr*tdn:t|dd}tj}|j||t	d|||fd	dS)
NrZr_	availablerz(free does not support 'available' columnrmr9rr)
rr>rrvrdrrrrr)rrerfrrr1r1r2test_available.s

z&TestSystemVirtualMemory.test_availablec
CsdtdtdD}tjdd*}tdt}|j	sDt
|t|d|d}|j
dslt
|d	t|j|d
t|j|dt|j|dt|j|d
t|j|dt|j|dt|j||jd||jd||jd||jd||jd||jd||jdW5QRXW5QRXdS)N
/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
                Trecordalwaysrmrpsutil/_pslinux.pyz#memory stats couldn't be determinedcachedrorrrr)rtextwrapdedentencodewarningscatch_warningssimplefilterrrcalledAssertionErrorassertEqualrAfilenameendswithassertInstrmessagerrrrorrslabrrwsretwr1r1r2test_warnings_on_misses=s:

z/TestSystemVirtualMemory.test_warnings_on_missesc
	Csddlm}ddlm}i}|d0}|D]$}|}t|dd||d<q*W5QRX||}d|kr|d}t|||d}	||	d	dS)
Nr)calculate_avail_vmem)open_binaryrrmrs
MemAvailable:dr)psutil._pslinuxrrr>rdabsZ
assertLess)
rrrZmemsrFrGrHabZdiff_percentr1r1r2test_avail_old_percentds
$z.TestSystemVirtualMemory.test_avail_old_percentc
CsvtdtdX}tjdd}t}W5QRX|js@t	|
|jd|d}|dt
|jW5QRXdS)NraL                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
                Trl "r,inactive memory stats couldn't be determinedrrrrrrrrrrrrrrrrr1r1r2 test_avail_old_comes_from_kernelws
z8TestSystemVirtualMemory.test_avail_old_comes_from_kernelc
CsvtdtdX}tjdd}t}W5QRX|js@t	|
|jd|d}|dt
|jW5QRXdS)Nra                    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
                    Tr`LGrrrrr1r1r2test_avail_old_missing_fieldss
z5TestSystemVirtualMemory.test_avail_old_missing_fieldscCstdtdltdttjdNtj	dd6}t
}||j
d|d}|d	t|jW5QRXW5QRXW5QRXdS)
NraT                    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/zoneinfono such file or directoryTrrrr)rrrrrIOErrorerrnoENOENTrrrrrrrrr)rrrrr1r1r2test_avail_old_missing_zoneinfos&
z7TestSystemVirtualMemory.test_avail_old_missing_zoneinfoc	sfdd}ttrdnd}tj|d|d}t}|js@t||j	d||j
d||jd	||jd
||j
d||jd||jd
||jd||jdW5QRXdS)Ncs0|dkrttdS|f||SdS)Nra=	                    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}rrrr~rr1r2rs3zETestSystemVirtualMemory.test_virtual_memory_mocked.<locals>.open_mockrrTriiipiTii iX)r<rrrrrrrrrhr`rrrorrrr)rrrrmemr1rr2test_virtual_memory_mockeds7
z2TestSystemVirtualMemory.test_virtual_memory_mockedN)__name__
__module____qualname__rrrrrrrrrrrrrrrr1r1r1r2rs,







'
rc@s\eZdZeddZddZeddZeddZd	d
Z	ddZ
d
dZddZdS)TestSystemSwapMemoryc	Cs,td}|}W5QRXd|ko*d|kS)z3Return True if /proc/meminfo provides swap metrics.rz
SwapTotal:z	SwapFree:)r<read)rFdatar1r1r2meminfo_has_swap_infos
z*TestSystemSwapMemory.meminfo_has_swap_infocCs"tj}tj}|j||tdSNr)rkrhrswap_memoryrrrrrr1r1r2r$s
zTestSystemSwapMemory.test_totalcCs"tj}tj}|j||tdSr)rkrirrrrrr1r1r2r*s
zTestSystemSwapMemory.test_usedcCs"tj}tj}|j||tdSr)rkr`rrrrrr1r1r2r1s
zTestSystemSwapMemory.test_freec
Cstjddd}tjddx}tdt}|js:t|	t
|d|d}|jdsbt|
d	t|j|	|jd|	|jdW5QRXW5QRXdS)
Npsutil._common.openTrrrrmrrz9'sin' and 'sout' swap memory stats couldn't be determined)rrrrrrrrrrrArrrrrsinsoutrr1r1r2test_missing_sin_sout8s

z*TestSystemSwapMemory.test_missing_sin_soutc
Cstdttjd}tjddx}tdt}|j	s>t
|t|d|d}|j
dsft
|d	t|j||jd||jdW5QRXW5QRXdS)
Nz/proc/vmstatrTrrrmrrzK'sin' and 'sout' swap memory stats couldn't be determined and were set to 0)rrrrrrrrrrrrrArrrrrrrrr1r1r2test_no_vmstat_mockedGs$


z*TestSystemSwapMemory.test_no_vmstat_mockedc	Cs|stdStd}t}W5QRX|jr:tddl	m
}|\}}}}}}}||9}||9}||j
||j|j|tddS)Nz!/proc/meminfo has no swap metricsz"psutil._pslinux.cext.linux_sysinforr)rrskiprrrrrrZpsutil._psutil_linuxZ
_psutil_linuxZ
linux_sysinforrhrr`r)rrswapZcextrgrhr`Zunit_multiplierr1r1r2test_meminfo_against_sysinfoZs

z1TestSystemSwapMemory.test_meminfo_against_sysinfoc	Cs,tdd}t|jstW5QRXdS)Nr)rrrrrrrr1r1r2#test_emulate_meminfo_has_no_metricsjsz8TestSystemSwapMemory.test_emulate_meminfo_has_no_metricsN)
rrrstaticmethodrrrrrrrrrr1r1r1r2rs


rc@seZdZddZdS)TestSystemCPUTimescCstj}tdtdd}ttt	|
d}|dkrL|d|n|d||dkrn|d|n|d||d	kr|d
|n|d
|dS)Nz
\d+\.\d+\.\d+rru)rsteal)rrr Zguest)rrrZ
guest_nice)
r	cpu_times_fieldsrefindallosunamerwrxrdr>rassertNotIn)rrHZ
kernel_verZkernel_ver_infor1r1r2test_fields{s
zTestSystemCPUTimes.test_fieldsN)rrrrr1r1r1r2rxsrc@seZdZeejddddZeejddddZ	ee
d	d
ddZee
d
dddZddZ
dS)TestSystemCPUCountLogical/sys/devices/system/cpu/onlinez-/sys/devices/system/cpu/online does not existc	CsVtd}|}W5QRXdt|krRt|ddd}|t|dS)Nr-rm)	r<rrrrrdr>rr	cpu_count)rrFvaluer1r1r2test_against_sysdev_cpu_onlines

z8TestSystemCPUCountLogical.test_against_sysdev_cpu_online/sys/devices/system/cpuz&/sys/devices/system/cpu does not existcCs0td}tdd|D}|t|dS)Nr
cSs g|]}td|dk	r|qS)zcpu\d+$N)rsearchrlr1r1r2rTszITestSystemCPUCountLogical.test_against_sysdev_cpu_num.<locals>.<listcomp>)rlistdirrArrr
)rZlscountr1r1r2test_against_sysdev_cpu_nums
z5TestSystemCPUCountLogical.test_against_sysdev_cpu_numZnprocznproc utility not availablecCs$ttd}|tjdd|dS)Nznproc --allTZlogical)rdrrrr
)rnumr1r1r2test_against_nprocsz,TestSystemCPUCountLogical.test_against_nproclscpulscpu utility not availablecCs8td}tdd|dD}|tjdd|dS)Nlscpu -pcSsg|]}|ds|qS)#rarlr1r1r2rTs
z@TestSystemCPUCountLogical.test_against_lscpu.<locals>.<listcomp>r_Tr)rrAr>rrr
)rrerr1r1r2test_against_lscpusz,TestSystemCPUCountLogical.test_against_lscpuc
Csddl}|j}tjdtd}||j||js>ttjddd:}|	|j||j
d||jdddW5QRXtd	d
}|
}W5QRXt|}tjd|dd}||j|W5QRXtd	d}||j||jW5QRXW5QRXdS)
Nrzpsutil._pslinux.os.sysconfrrTrr
/proc/stat
/proc/cpuinforbreturn_valuerr)r_pslinuxZcpu_count_logicalrrr?rrrassertIsNoneZ
call_countZ	call_argsr<rr{r}r)rrZoriginalrrFZcpuinfo_data	fake_filer1r1r2test_emulate_fallbackss2

 
z0TestSystemCPUCountLogical.test_emulate_fallbacksN)rrrrskipIfrpathexistsrrrrrr$r1r1r1r2rs



rc@s6eZdZeeddddZddZddZd	S)
TestSystemCPUCountPhysicalrrcCs\td}t}|dD]&}|ds|d}||dq|tjddt|dS)Nrr_r,rmFr)	rsetr>raaddrrr
rA)rreZcore_idsrGrHr1r1r2rs

z-TestSystemCPUCountPhysical.test_against_lscpuc	CsPtj}tjdgd}tj}|js.tW5QRX|dk	rL|||dS)N	glob.globr )rr!cpu_count_physicalrrrrr)rZmeth_1rZmeth_2r1r1r2
test_method_2s

z(TestSystemCPUCountPhysical.test_method_2c
Cs\tjdgd0}tjddd}|tjW5QRXW5QRX|jsNt|jsXtdS)Nr,r-rTr)rrr"rr!r.rr)rm1m2r1r1r2test_emulate_nones
$
z,TestSystemCPUCountPhysical.test_emulate_noneN)	rrrrr%rrr/r2r1r1r1r2r(s
	r(c@szeZdZeedddZeedddZeedddZeeddd	Z	eedd
dZ
dS)
TestSystemCPUFrequency
not supportedc	s@fdd}tjjtjd|ddts2tW5QRXdS)Ncs|drdS|SdS)N&/sys/devices/system/cpu/cpufreq/policyFrr&Zorig_existsr1r2path_exists_mocks
zMTestSystemCPUFrequency.test_emulate_use_second_file.<locals>.path_exists_mockos.path.existsT)rr)rr&r'rrrcpu_freqr)rr8r1r7r2test_emulate_use_second_filesz3TestSystemCPUFrequency.test_emulate_use_second_filec	sfdd}gtjjztjd|drttjt}|sFt	sNt	|
|jd|
|jdtjddD] }|
|jd|
|jdqvW5QRXW5ttjttXdS)Ncs,|drdS|dkr d|SdS)Nz/sys/devices/system/cpu/Fr)rarBr6flagsZos_path_existsr1r2r8s


zITestSystemCPUFrequency.test_emulate_use_cpuinfo.<locals>.path_exists_mockr9rTZpercpu)
rr&r'rrr!rrr:rrmaxmin)rr8rfreqr1r<r2test_emulate_use_cpuinfos 

z/TestSystemCPUFrequency.test_emulate_use_cpuinfoc
sfdd}ttrdnd}tj||dftjdddLt}||jd	|jd
krj||jd|j	d
kr||j	dW5QRXW5QRXdS)
Ncs|dr|drtdS|dr<|dr<tdS|drZ|drZtdS|dkrltd	S|f||SdS)
N/scaling_cur_freqr5500000/scaling_min_freq600000/scaling_max_freqs700000rscpu MHz		: 500rrar{r}r~rr1r2rs






z;TestSystemCPUFrequency.test_emulate_data.<locals>.open_mockrrrr9Tr-@@r>@g@
r<rrrrr:rcurrentrAr@rrrrBr1rr2test_emulate_datas

z(TestSystemCPUFrequency.test_emulate_datacsfdd}ttrdnd}tj||dtjdddtjd	d
dtjdd}||djd
|djdkr||djd|dj	dkr||dj	d||djd|djdkr||djd|dj	dkr||dj	dW5QRXW5QRXW5QRXdS)Ncs|}|dr"|dr"tdS|dr@|dr@tdS|dr^|dr^tdS|dr||dr|td	S|dr|drtd
S|dr|drtdS|dkrtd
S|f||SdS)NrDz'/sys/devices/system/cpu/cpufreq/policy0s100000rF200000rHs300000z'/sys/devices/system/cpu/cpufreq/policy1s400000rErGrscpu MHz		: 100
cpu MHz		: 400rI)rrrnrr1r2r9s8












z@TestSystemCPUFrequency.test_emulate_multi_cpu.<locals>.open_mockrrrr9Tr-!psutil._pslinux.cpu_count_logicalrr?rY@r>gi@gr@rmgy@rJrKrLrNr1rr2test_emulate_multi_cpu7s&z-TestSystemCPUFrequency.test_emulate_multi_cpucsfdd}ttrdnd}tj||dPtjddd6tjd	d
dt}||jdW5QRXW5QRXW5QRXdS)NcsR|drttjdn6|dr,tdS|dkr>tdS|f||SdS)NrDrPz/cpuinfo_cur_freqrPrscpu MHz		: 200)rrrrr{r}r~rr1r2rhs



zOTestSystemCPUFrequency.test_emulate_no_scaling_cur_freq_file.<locals>.open_mockrrrr9Tr-rRrm)r<rrrrr:rrMrNr1rr2%test_emulate_no_scaling_cur_freq_filees
z<TestSystemCPUFrequency.test_emulate_no_scaling_cur_freq_fileN)rrrrr%rr;rCrOrTrVr1r1r1r2r3s




-r3c@seZdZddZddZdS)TestSystemCPUStatscCs&td}tj}|j||dddS)Nzcontext switchesr)rtr	cpu_statsZctx_switchesrrr1r1r2test_ctx_switchess
z$TestSystemCPUStats.test_ctx_switchescCs&td}tj}|j||dddS)N
interruptsrXr)rtrrYr[rrr1r1r2test_interruptss
z"TestSystemCPUStats.test_interruptsN)rrrrZr\r1r1r1r2rW|srWc@s"eZdZeedddZdS)TestLoadAvgr4c	Cst}tdd}|}W5QRX|jt|d|ddd|jt|d|ddd|jt|d|ddddS)Nz
/proc/loadavgrrrmrr)r
getloadavgr<rr>rfloat)rrrFZ
proc_valuer1r1r2test_getloadavgszTestLoadAvg.test_getloadavgN)rrrrr%rrar1r1r1r2r]sr]c@seZdZddZdS)TestSystemNetIfAddrscCstD]\}}|D]}|jtjkr<||jt|q|jtj	kr||jt
|||jt||j
dk	r||j
t|q|t|dq|jtjkr|jdd}||t|qqdS)Nz0.0.0.0%r)rZnet_if_addrsitemsZfamilyZAF_LINKraddressrYr#r$r3Znetmaskr5Z	broadcastr7rDr>rK)rrZaddrsZaddrrer1r1r2test_ipss
zTestSystemNetIfAddrs.test_ipsN)rrrrfr1r1r1r2rbsrbc@seZdZddZddZdS)TestSystemNetIfStatsc	CsttD]b\}}ztd|}Wntk
r8YqX|j|jd|k|d||jtt	
d|dqdS)Nifconfig %sZRUNNING)rz(?i)MTU[: ](\d+)r)rnet_if_statsrdrRuntimeErrorrZisupmturdrr)rrstatsrer1r1r2test_against_ifconfigsz*TestSystemNetIfStats.test_against_ifconfigc
CsNtD]<\}}td|d }||jt|W5QRXqdS)Nz/sys/class/net/%s/mtur8)	rrirdr<rrkrdrrr)rrrlrFr1r1r2test_mtuszTestSystemNetIfStats.test_mtuN)rrrrmrnr1r1r1r2rgsrgc@seZdZeddZdS)TestSystemNetIOCountersc	sfdd}tjddd}|D]\}z|}Wntk
rNYq"YnX|j|j|ddd|j|j|d	dd|j|j|d
dd|j|j|ddd|j|j	|d
dd|j|j
|ddd|j|j|ddd|j|j|dddq"dS)Ncsi}td}ttd|d|d<ttd|d|d<ttd|d|d<ttd|d	|d
<ttd|d|d<ttd|d	|d
<ttd|d|d<ttd|d|d<|S)NrhzRX packets[: ](\d+)rpackets_recvzTX packets[: ](\d+)packets_sentzerrors[: ](\d+)errinrmerroutzdropped[: ](\d+)dropindropoutz#RX (?:packets \d+ +)?bytes[: ](\d+)
bytes_recvz#TX (?:packets \d+ +)?bytes[: ](\d+)
bytes_sent)rrdrr)Znicrrerr1r2ifconfigs&z?TestSystemNetIOCounters.test_against_ifconfig.<locals>.ifconfigTF)Zpernicnowraprvirrwrprrqrr
rsrtru)
rnet_io_countersrdrjrrvrwrprqrrrsrtru)rryZniorlZifconfig_retr1rxr2rms^
z-TestSystemNetIOCounters.test_against_ifconfigN)rrrrrmr1r1r1r2rosroc@s8eZdZejdedejdddddZdd	Zd
S)TestSystemNetConnectionsz psutil._pslinux.socket.inet_ntoprzpsutil._pslinux.supports_ipv6Fr-cCsRz*ttjtj}||j|dWntjk
r@YnXtjdddS)N)z::1rZinet6Zkind)	r#rDZSOCK_STREAMZ
addCleanupcloseZbinderrorrnet_connections)rZ
supports_ipv6rEr0r1r1r2test_emulate_ipv6_unsupportedsz6TestSystemNetConnections.test_emulate_ipv6_unsupportedc	Cs6tdtd}tjdd|js(tW5QRXdS)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
                Zunixr~)rrrrrrrrr1r1r2test_emulate_unixsz*TestSystemNetConnections.test_emulate_unixN)rrrrrr?rrr1r1r1r2r}	s
r}c@s>eZdZeeeddeddZddZ	ddZ
d	S)
TestSystemDiskPartitionsstatvfszos.statvfs() not availablecCsndd}tjddD]T}t|j}||j\}}}}||j||j|j|td|j|j	|tdqdS)NcSsztd|}|d}|d|d}|dd\}}}}|dkrRd}t|t|t|}}}||||fS)Nzdf -P -B 1 "%s"r_rr:ZnonerP)rrrr>poprd)r&rerfrGdevrhrir`r1r1r2df2s


z4TestSystemDiskPartitions.test_against_df.<locals>.dfF)allr)
rdisk_partitionsZ
disk_usageZ
mountpointrrhrr`rri)rrpartZusagerrhrir`r1r1r2test_against_df-s

z(TestSystemDiskPartitions.test_against_dfc
Cstdd}|}W5QRXd|krNtD]}|jdkr.qq.|dn|ttd}t	j
d|ddX}t	j
d	d
gd<}t}|jst|jst|st|
|djdW5QRXW5QRXdS)
Nz/proc/filesystemsr^zfszcouldn't find any ZFS partitionz
nodev	zfs
rTrz$psutil._pslinux.cext.disk_partitions)z	/dev/sdb3/rZrwr-r)r<rrrZfstypeZfailr{r|rrrrrr)rrFrrr#r0r1rr1r1r2test_zfs_fsFs.


z$TestSystemDiskPartitions.test_zfs_fsc
CsTzFtjddd.}|ttW5QRX|js:tW5QRXW5dt_XdS)N/proczos.path.realpathz
/non/existentr-)	rPROCFS_PATHrrassertRaisesrrrrrr1r1r2test_emulate_realpath_fail^sz3TestSystemDiskPartitions.test_emulate_realpath_failN)rrrrr%hasattrrrrrrr1r1r1r2r*s
rc@sDeZdZddZddZddZddZd	d
ZddZd
dZ	dS)TestSystemDiskIoCountersc
Cstddtjdddtjdd}||jd||jd	||jd
t	||j
d||jd||jd
||j
dt	||jd||jdW5QRXW5QRXdS)N/proc/diskstatsz+   3     0   1 hda 2 3 4 5 6 7 8 9 10 11 12!psutil._pslinux.is_storage_deviceTr-Frzrmrrr:rnrr{rrrrdisk_io_countersr
read_countread_merged_count
read_bytesSECTOR_SIZE	read_timewrite_countwrite_merged_countwrite_bytes
write_time	busy_timerrr1r1r2test_emulate_kernel_2_4ms"z0TestSystemDiskIoCounters.test_emulate_kernel_2_4c
Cstddtjdddtjdd}||jd||jd	||jd
t	||j
d||jd||jd
||j
dt	||jd||jdW5QRXW5QRXdS)Nrz'   3    0   hda 1 2 3 4 5 6 7 8 9 10 11rTr-Frrmrrr:rnrrrr{rrr1r1r2test_emulate_kernel_2_6_fulls"z5TestSystemDiskIoCounters.test_emulate_kernel_2_6_fullc
Cstddtjdddtjdd}||jd||jd	t||j	d
||j
dt||jd||jd||j
d||jd||jdW5QRXW5QRXdS)
Nrz   3    1   hda 1 2 3 4rTr-Frrmrrr:r)rrrrrrrrrrrrrrrrrr1r1r2test_emulate_kernel_2_6_limiteds"z8TestSystemDiskIoCounters.test_emulate_kernel_2_6_limitedc
Cstdtdtjdddltjddd}|t|d||d	j	d
||dj	d
||d	j
d||dj
dW5QRXW5QRXdS)
Nr                    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
                    rFr-Tperdiskrzrnvme0n1rmZ	nvme0n1p1rn)rrrrrrrrrArrrr1r1r2test_emulate_include_partitionssz8TestSystemDiskIoCounters.test_emulate_include_partitionsc
Cstdtd8tjdddtjddd}||W5QRXW5QRXdd}tdtdLtjdd	|d
0tjddd}||j	d||j
dW5QRXW5QRXdS)
NrrrFr-rcSs|dkS)Nrr1rxr1r1r2is_storage_deviceszSTestSystemDiskIoCounters.test_emulate_exclude_partitions.<locals>.is_storage_deviceTrrmrn)rrrrrrrr"rrr)rrrr1r1r2test_emulate_exclude_partitionss*z8TestSystemDiskIoCounters.test_emulate_exclude_partitionsc	CsTdd}tjdd}tjdd|dtjdd}W5QRX|t|t|dS)NcSs|dkrdSdS)NrFTr1r6r1r1r2r'sz?TestSystemDiskIoCounters.test_emulate_use_sysfs.<locals>.existsT)rpsutil._pslinux.os.path.existsr)rrrrrrA)rr'ZwprocfsZwsysfsr1r1r2test_emulate_use_sysfssz/TestSystemDiskIoCounters.test_emulate_use_sysfsc	Cs6dd}tjdd|d|ttjW5QRXdS)NcSsdS)NFr1r6r1r1r2r'sz>TestSystemDiskIoCounters.test_emulate_not_impl.<locals>.existsrTr)rrrNotImplementedErrorrr)rr'r1r1r2test_emulate_not_implsz.TestSystemDiskIoCounters.test_emulate_not_implN)
rrrrrrrrrrr1r1r1r2rjsrc@sReZdZddZddZddZddZd	d
ZddZe	d
dZ
ddZdS)TestMisccCs(td}t}|t|t|dS)Nz	boot time)rtr	boot_timerrdrr1r1r2test_boot_timeszTestMisc.test_boot_timec
s|}t|ttj|dd$}|d|d|dW5QRXztfdd}trldnd	}tj
||d
nt	t
|tt
j|jtt
jdd|tt
j|jtt
jdd|tt
j|jtt
jdd|t
_|t
d
|tt
d
t
jdd}|t|d
t
jdd}|ttt|d
ttj|dd$}|d|d|dW5QRX|t
d
|tt
jddd
|tt
d
|tttt
jddd
W5QRXW5t|t	t
X|t
jddS)Nrsrzcpu   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&|drttjd|f||S)Nrzrejecting access for test)rarrrr~rr1r2rs
z4TestMisc.test_no_procfs_on_import.<locals>.open_mockrrrTr?rzcpu   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
r)
get_testfnrmkdirr<r&rCwriteshutilZrmtreerrrrrrrrcpu_percentcpu_times_percentrrsumrxassertNotEqual)rZ	my_procfsrFrrZper_cpu_percentZper_cpu_times_percentr1rr2test_no_procfs_on_imports\






z!TestMisc.test_no_procfs_on_importc	Cs,tdtd8}t|js(ttjddttjddW5QRXtdtd}t}|jszttjdd}t}tjdd}|	|d|	t
|d|	t
|d|	t
|d|	t
tt
|d|	t
tt
|d||j
d|	|jdW5QRXdS)Nrz                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
                Tr?z                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
                rrS)rrrrrrrrrrrrxrruser)rrrZcpu_percent_percpurZcpu_times_percent_percpur1r1r2test_cpu_steal_decrease<s8

z TestMisc.test_cpu_steal_decreasec	Cs8tjddd }|ttjj|js*tW5QRXdS)NrTr)	rrrrjrr!rrrrr1r1r2test_boot_time_mockedeszTestMisc.test_boot_time_mockedc	Cstjddgd&}|tdjd|js2tW5QRXtjddgd&}|tdjd|jsntW5QRXtjddgd&}|tdjd|jstW5QRXdS)	Nzpsutil._pslinux.cext.users)	giampaolopts/2z:0hATrr-rZ	localhost)rrz:0.0rTr)rrfoorTrr)rrrrZusersZhostrrrr1r1r2test_users_mockedls$zTestMisc.test_users_mockedcCs|}t|z|t_|ttj|ttj|jttjdd|ttj	|ttj
|ttj|ttj|ttj
|tjtjW5dt_XdS)NrTr?)rrrrrrrrrrrr|rirZ
NoSuchProcessProcess)rZtdirr1r1r2test_procfs_paths
zTestMisc.test_procfs_pathcCst}|zjt}|}|t|dt|ddddj	}|
|j|t|}||
|tW5|XdS)NrcSs|jSrL)idrMr1r1r2<lambda>rz)TestMisc.test_issue_687.<locals>.<lambda>)keyrm)rstartstoprrthreadsrrAsortedrrpidZas_dictrZpids)rtprtidZptr1r1r2test_issue_687s
zTestMisc.test_issue_687c	Cs6tdd"}ttst|js(tW5QRXdS)N/proc/%s/statusrP)rrZ
pid_existsrgetpidrrrr1r1r2test_pid_exists_no_proc_statussz'TestMisc.test_pid_exists_no_proc_statusN)rrrrrrrrrrrrr1r1r1r2rs=)
rz
no batteryc@sfeZdZeeddddZddZddZd	d
Z	ddZ
d
dZddZddZ
ddZdS)TestSensorsBatteryZacpizacpi utility not availablecCsDtd}t|dddd}tj}|j||dddS)Nzacpi -br)rmrcrPr)	rrdr>rrreplacersensors_batterypercentr)rreZ
acpi_valuerr1r1r2test_percents
zTestSensorsBattery.test_percentc	sjfdd}ttrdnd}tj||d6}|tjd|tjtj	|j
s\tW5QRXdS)Ncs2|ds|drtdS|f||SdS)N
AC0/online	AC/online1rr{r}r~rr1r2rs
z@TestSensorsBattery.test_emulate_power_plugged.<locals>.open_mockrrrT)r<rrrrrr
power_pluggedZsecsleftZPOWER_TIME_UNLIMITEDrrrrrrr1rr2test_emulate_power_pluggedsz-TestSensorsBattery.test_emulate_power_pluggedc	sVfdd}ttrdnd}tj||d"}|tjd|jsHt	W5QRXdS)NcsN|ds|dr"ttjdn(|dr:ttdS|f||SdS)NrrrP/statusZchargingrrrrr{r|rr~rr1r2rs

zBTestSensorsBattery.test_emulate_power_plugged_2.<locals>.open_mockrrrT
r<rrrrrrrrrrr1rr2test_emulate_power_plugged_2sz/TestSensorsBattery.test_emulate_power_plugged_2c	sVfdd}ttrdnd}tj||d"}|tjd|jsHt	W5QRXdS)Ncs2|ds|drtdS|f||SdS)Nrr0rr~rr1r2rs
zDTestSensorsBattery.test_emulate_power_not_plugged.<locals>.open_mockrrrFrrr1rr2test_emulate_power_not_pluggedsz1TestSensorsBattery.test_emulate_power_not_pluggedc	sVfdd}ttrdnd}tj||d"}|tjd|jsHt	W5QRXdS)NcsN|ds|dr"ttjdn(|dr:ttdS|f||SdS)NrrrPrZdischargingrr~rr1r2rs

zFTestSensorsBattery.test_emulate_power_not_plugged_2.<locals>.open_mockrrrFrrr1rr2 test_emulate_power_not_plugged_2sz3TestSensorsBattery.test_emulate_power_not_plugged_2c	sTfdd}ttrdnd}tj||d }|tj|jsFt	W5QRXdS)NcsJ|ds|dr"ttjdn$|dr6tdS|f||SdS)N"/sys/class/power_supply/AC0/online!/sys/class/power_supply/AC/onlinerP#/sys/class/power_supply/BAT0/statuss???)rarrrr{r}r~rr1r2rs


zETestSensorsBattery.test_emulate_power_undetermined.<locals>.open_mockrrr)
r<rrrr"rrrrrrr1rr2test_emulate_power_undetermineds	z2TestSensorsBattery.test_emulate_power_undeterminedc	Cs6tdd"}|tjd|js(tW5QRXdS)N(/sys/class/power_supply/BAT0/energy_fullrr)rrrrrrrrr1r1r2test_emulate_energy_full_0sz-TestSensorsBattery.test_emulate_energy_full_0cCshtdttjdLtdttjd.tdd|tjdW5QRXW5QRXW5QRXdS)NrrPz(/sys/class/power_supply/BAT0/charge_fullz%/sys/class/power_supply/BAT0/capacitys88X)	rrrrrrrrrrr1r1r2"test_emulate_energy_full_not_avails

z5TestSensorsBattery.test_emulate_energy_full_not_availcCsntdttjdRtdttjd4tdttjd|tjW5QRXW5QRXW5QRXdS)NrrPrr)rrrrr"rrrrr1r1r2test_emulate_no_power's


z(TestSensorsBattery.test_emulate_no_powerN)rrrrr%rrrrrrrrrrr1r1r1r2rs

rc@seZdZddZdS)TestSensorsBatteryEmulatedc
sxfdd}ttrdnd}tjddgd.}tj||d}|tW5QRXW5QRX|jsjt|jsttdS)	Ncs\|drttdS|dr0ttdS|drHttdS|f||SdS)Nz/energy_nowZ60000000z
/power_now0z/energy_fullZ60000001rr{r|rr~rr1r2r9s


z5TestSensorsBatteryEmulated.test_it.<locals>.open_mockrrz
os.listdirZBAT0r-r)	r<rrrZassertIsNotNonerrrr)rrrZmlistdirZmopenr1rr2test_it8s
"
z"TestSensorsBatteryEmulated.test_itN)rrrrr1r1r1r2r5src@seZdZddZddZdS)TestSensorsTemperaturesc
sfdd}ttrdnd}tj||djtjddgdNtd	d
}||jd||jd||j	d
||j
dW5QRXW5QRXdS)Ncs|drttdS|dr0ttdS|drDtdS|drXtdS|d	rltd
S|f||SdS)N/namerz/temp1_labellabelz/temp1_input30000z
/temp1_maxs40000z/temp1_crit50000)rr{r|rr}r~rr1r2rPs







zCTestSensorsTemperatures.test_emulate_class_hwmon.<locals>.open_mockrrrr,z/sys/class/hwmon/hwmon0/temp1r-rrr>@gD@I@r<rrrrZsensors_temperaturesrrrMZhighcritical)rrrtempr1rr2test_emulate_class_hwmonOsz0TestSensorsTemperatures.test_emulate_class_hwmonc
sfdd}dd}ttr dnd}tj||djtjdd	|d
Ntdd}||jd
||jd||j	d||j
dW5QRXW5QRXdS)Ncsl|drtdS|dr(tdS|dr@ttdS|drXttdS|f||SdS)	NZ0_temprrrZ0_typertyper)rr{r}r|rr~rr1r2rks





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_tempr1r6r1r1r2	glob_mockwszETestSensorsTemperatures.test_emulate_class_thermal.<locals>.glob_mockrrrr,TrrrrPrrr)rrrrrr1rr2test_emulate_class_thermaljsz2TestSensorsTemperatures.test_emulate_class_thermalN)rrrrr	r1r1r1r2rLsrc@seZdZddZdS)TestSensorsFansc
sfdd}ttrdnd}tj||dNtjddgd2td	d
}||jd||jdW5QRXW5QRXdS)
Ncs\|drttdS|dr0ttdS|drHttdS|f||SdS)Nrrz/fan1_labelrz/fan1_inputZ2000rr~rr1r2rs


z4TestSensorsFans.test_emulate_data.<locals>.open_mockrrrr,z/sys/class/hwmon/hwmon2/fan1r-rrri)	r<rrrrZsensors_fansrrrM)rrrZfanr1rr2rOs
z!TestSensorsFans.test_emulate_dataN)rrrrOr1r1r1r2r
sr
c@seZdZeddZddZeedddZ	dd	Z
d
dZdd
ZddZ
ddZddZddZddZddZddZeedddZdd Zd!d"Zd#d$Zd%S)&TestProcesscCs|}td|}||}tddd|t|j}t	d|
}|jdd}|j|j
tdd	|Dd
d|j|jtdd	|Dd
d|j|jtd
d	|Dd
ddS)Nzk
            import time
            with open("%s", "w") as f:
                time.sleep(10)
            cSs
tdS)Nru)rrr1r1r1r2rrz3TestProcess.test_memory_full_info.<locals>.<lambda>z'%s' not in retg?F)ZgroupedcSsg|]}|j|jqSr1)Z
private_dirtyZ
private_cleanrlr1r1r2rTsz5TestProcess.test_memory_full_info.<locals>.<listcomp>rrcSsg|]
}|jqSr1)pssrlr1r1r2rTscSsg|]
}|jqSr1)rrlr1r1r2rTs)rrrZpyrunrrrrtimesleepmemory_full_infomemory_mapsrussrrr)rtestfnsrcZsprocrrmapsr1r1r2test_memory_full_infos2

z!TestProcess.test_memory_full_infoc	CsptdttdJ}t}|}|j	s8t
||jd||j
d||jdW5QRXdS)N/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
                ilri<)rrrrrrrrrrrrrrr)rrrrr1r1r2test_memory_full_info_mockeds

z(TestProcess.test_memory_full_info_mockedzunreliable on PYPYc	Csjdd}|}t|d|||jdW5QRXt|d|||jdW5QRXt|d|||jdW5QRXt|d|||jdW5QRXt|d|||jdW5QRXt|d|||jdW5QRXtrft|t|d	|||jdW5QRXt|t|d
|||jdW5QRXdS)NcSsZt}tt}|D].}|jtj|kr:|St|krqqqtddS)Nztimeout looking for test file)	rrr
r	
open_filesr&rabspathrj)ZfnamerZ	giveup_atfiler1r1r2
get_test_filesz7TestProcess.test_open_files_mode.<locals>.get_test_filerr^rzr+zw+za+rNzx+)rr<rmoderr)rrrr1r1r2test_open_files_modes*z TestProcess.test_open_files_modec
Cst}|}t|dt|jdt|tjdt	t
jdd }|}|r\t|j
sftW5QRXtjdt	t
jdd }||g|j
stW5QRXW5QRXdS)Nrlen(ret) != %ipsutil._pslinux.os.readlinkrPr)rrrr<rrrArrOSErrorrrrrZEINVALr)rrfilesrr1r1r2test_open_files_file_gones"

z%TestProcess.test_open_files_file_gonec
Cst}|}t|dbt|jdt|tr<dnd}tj	|t
tjdd }|}|rht
|jsrt
W5QRXW5QRXdS)NrrrrrPr)rrrr<rrrArrrrrrrr)rrr!rrr1r1r2test_open_files_fd_gone s
z#TestProcess.test_open_files_fd_gonec	CsBtjdid*}|tjt|j	s4t
W5QRXdS)Nz)psutil._pslinux._psposix.get_terminal_mapr-)rrr"rr!rrrZterminalrrrr1r1r2test_terminal_mocked2sz TestProcess.test_terminal_mockedc	Cst}ttd}tjd|dd$}||ddg|j	sFt
W5QRXttd}tjd|dd&}||dddg|j	st
W5QRXdS)	NzfoobarrTrrbarz	foobarrPrrr{r|rrrrZcmdlinerrrrr#rr1r1r2test_cmdline_mocked@s"zTestProcess.test_cmdline_mockedc	Cst}ttd}tjd|dd$}||ddg|j	sFt
W5QRXttd}tjd|dd&}||dddg|j	st
W5QRXdS)	Nzfoo bar rTrrr%z	foo bar  rPr&r'r1r1r2test_cmdline_spaces_mockedNs"z&TestProcess.test_cmdline_spaces_mockedc	CsTt}ttd}tjd|dd$}||ddg|j	sFt
W5QRXdS)Nzfoo barrTrrr%r&r'r1r1r2test_cmdline_mixed_separators\sz)TestProcess.test_cmdline_mixed_separatorsc	CsFtjddd.|td|tdW5QRXdS)Nrz/home/foo (deleted)r-z	/home/foo)rrrrrexecwdrr1r1r2!test_readlink_path_deleted_mockedfs
z-TestProcess.test_readlink_path_deleted_mockedc	sfdd}ttrdnd}tj||d(}t}|jsBt|	|gW5QRXfdd}tj||d|
tjtjW5QRXdS)Ncs4|dtr ttjdn|f||SdSNz
/proc/%s/taskrP)rarrrrrr~rr1r2rqsz2TestProcess.test_threads_mocked.<locals>.open_mockrrrcs4|dtr ttjdn|f||SdSr.)rarrrrZEPERMr~rr1r2rs)r<rrrrrrrrrrAccessDenied)rrrrrr1rr2test_threads_mockedls
zTestProcess.test_threads_mockedcCstjdttjdd}tjdtddd`}t}|j	sFt
|j	sPt
||dtjddd|tj
tjW5QRXW5QRXW5QRXdS)	Nzpsutil._pslinux.readlinkrPrzpsutil.Process.cmdlinerzpsutil._pslinux.os.path.lexistsFr-)rrr rrrr/rr+rrrr
ZombieProcess)rr0r1rr1r1r2test_exe_mockeds&



zTestProcess.test_exe_mockedc
CsZtdtttjd6}t}|t	|
W5QRX|jsLtW5QRXdS)NrrP)
rrrrrrrrrrrrr)rrrr1r1r2test_issue_1014s

zTestProcess.test_issue_1014r4c
CstjdttjddD}t}||tj	}|
tjW5QRX|jsVt
W5QRX||jj|j||jj|dS)Nzpsutil._pslinux.prlimitrPr)rrr rZENOSYSrrrrr1ZrlimitZ
RLIMIT_NOFILErrr	exceptionrrrrrr1r1r2test_rlimit_zombies
zTestProcess.test_rlimit_zombiec
Cstjdttjdd@}t}||tj	}|
W5QRX|jsRtW5QRX|
|jj|j|
|jj|dS)NrrPr)rrr rrrrrrr1r,rrrr4rr5r1r1r2test_cwd_zombies
zTestProcess.test_cwd_zombiec*Cs\ddlm}dddddddddddddddd	d
dddddddddddddddddddddddddg*}d
|}tdt|t}|	|
d|	|tj|	|
d|	|d|t|}|	|jd||	|jd||	|jd||	|jd||	|jd||	|dW5QRXdS)Nr)CLOCK_TICKSrz(cat)Z1234567rqz
/proc/%s/statcatrmrrrr:rnr)rr8rCrrrrrrrrstatusZ
STATUS_ZOMBIEppidZcreate_timerrrsystem
children_userchildren_systemZiowaitZcpu_num)rr8rrrZcpur1r1r2test_stat_file_parsingsz,z"TestProcess.test_stat_file_parsingc	Cstdttdt}||	j
d||	jd||d|
}||jd||jd||jd|}||jd	||jd
||jd||jttdd
W5QRXdS)Nra                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:	13r
Biiiiiirr)rrrrrrrrrnum_ctx_switches	voluntaryinvoluntarynum_threadsuidsrealZ	effectiveZsavedgids_proc_get_eligible_cpuslistr@)rrrNrPr1r1r2test_status_file_parsings"

z$TestProcess.test_status_file_parsingN)rrrrrrrr%rrr"r#r$r(r)r*r-r0r2r3r
r6r7rGrTr1r1r1r2rs(
#

$

?rc@sreZdZdZeddZddZddZdd	Zd
dZ	dd
Z
ddZddZe
ddZddZddZdS)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.
    cCst|_dSrL)rrproc)clsr1r1r2
setUpClass%sz#TestProcessAgainstStatus.setUpClassc
Cstjd|jj}|D]h}|}||r|dd}zt|WW5QRSt	k
r|YW5QRSXqt	d|W5QRXdS)Nr	rz
can't find %r)
r_psplatformZ	open_textrVrrrra	partitionrdr?)rZ	linestartrFrGrr1r1r2read_status_file)s

z)TestProcessAgainstStatus.read_status_filecCs |d}||j|dS)NzName:)r\rrVrrrr1r1r2	test_name6s
z"TestProcessAgainstStatus.test_namecCsH|d}||dd|d}|dd}||j|dS)NzState:(rm)rqr	)r\findrfindrrrVrBr]r1r1r2test_status:s
z$TestProcessAgainstStatus.test_statuscCs |d}||j|dS)NzPPid:)r\rrVrCr]r1r1r2	test_ppid@s
z"TestProcessAgainstStatus.test_ppidcCs |d}||j|dS)NzThreads:)r\rrVrMr]r1r1r2test_num_threadsDs
z)TestProcessAgainstStatus.test_num_threadscCs:|d}ttt|dd}||j|dS)NzUid:rmr:)r\rwrxrdr>rrVrNr]r1r1r2	test_uidsHs
z"TestProcessAgainstStatus.test_uidscCs:|d}ttt|dd}||j|dS)NzGid:rmr:)r\rwrxrdr>rrVrPr]r1r1r2	test_gidsMs
z"TestProcessAgainstStatus.test_gidscCs@|d}||jj||d}||jj|dS)Nzvoluntary_ctxt_switches:znonvoluntary_ctxt_switches:)r\rrVrJrKrLr]r1r1r2test_num_ctx_switchesRs

z.TestProcessAgainstStatus.test_num_ctx_switchescCsN|d}dt|krJtt|d\}}||jtt	||ddS)NCpus_allowed_list:r	rm)
r\rrxrdr>rrVZcpu_affinityrSr@)rrZmin_Zmax_r1r1r2test_cpu_affinityYs
z*TestProcessAgainstStatus.test_cpu_affinityc	CsR|d}td}|jjW5QRXdt|krD|jrNtn
|jsNtdS)Nrizpsutil._pslinux.per_cpu_timesr	)	r\rrrVrQrRrrr)rrrr1r1r2test_cpu_affinity_eligible_cpus`s
z8TestProcessAgainstStatus.test_cpu_affinity_eligible_cpusN)rrr__doc__classmethodrXr\r^rcrdrerfrgrrhrjrkr1r1r1r2rUs


rUc@seZdZddZddZdS)	TestUtilsc	Cs<tjddd$}|tjdd|js.tW5QRXdS)Nzos.readlinkz
foo (deleted)r-r%r)rrrrrZreadlinkrrrr1r1r2
test_readlinkrszTestUtils.test_readlinkc	Csx|}t|d}|dW5QRX|tjj|ddd|tjj|ddd|tjj|dd	d
d	dS)NZwtzfoo F)ZbinaryrTsfooz??r%)Zfallback)rr<rrrrZrA)rrrFr1r1r2test_catwszTestUtils.test_catN)rrrrprqr1r1r1r2rnosrn__main__)
run_from_name)]rlZ
__future__rrbr&rZglobr{rrrr#r,rr
rrrZpsutil._compatrrrrZpsutil.testsrr	r
rrr
rrrrrrrrrrrrrr&rdirname__file__ZHEREr+ZSIOCGIFCONFrVr4r6rZEMPTY_TEMPERATURESr3r5r7rKrYrkrprtrycontextmanagerrrr%rrrrr(r3rWr]rbrgror}rrrrrrr
rrUrnrZpsutil.tests.runnerrsr1r1r1r2<module>s


	

.]?
)- ?
?}ArR

Back to Directory File Manager