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

�[gO��@s�dZddlZddlZddlZddlZddlZddlZddlZddlZddl	Z	ddl
Z
ddlZddlZddlm
Z
ddlmZddlmZddlmZddlmZddlmZdd	lmZdd
lmZddlmZddlmZdd
lmZddlmZddlmZddlmZddlmZddlmZddlmZddlm Z ddlm!Z!ddlm"Z"ddlm#Z#ddlm$Z$ddlm%Z%ddlm&Z&ddlm'Z'ddlm(Z(ddlm)Z)ddlm*Z*ddlm+Z+dd lm,Z,dd!lm-Z-dd"lm.Z.dd#lm/Z/dd$lm0Z0dd%lm1Z1dd&lm2Z2Gd'd(�d(e-�Z3Gd)d*�d*e-�Z4Gd+d,�d,e-�Z5Gd-d.�d.e-�Z6Gd/d0�d0e-�Z7Gd1d2�d2e-�Z8Gd3d4�d4e-�Z9Gd5d6�d6e-�Z:dS)7zTests for system APIS.�N)�AIX)�BSD)�FREEBSD)�LINUX)�MACOS)�NETBSD)�OPENBSD)�POSIX)�SUNOS)�WINDOWS)�PY3)�FileNotFoundError)�long)�ASCII_FS)�
CI_TESTING)�DEVNULL)�GITHUB_ACTIONS)�GLOBAL_TIMEOUT)�HAS_BATTERY)�HAS_CPU_FREQ)�HAS_GETLOADAVG)�HAS_NET_IO_COUNTERS)�HAS_SENSORS_BATTERY)�HAS_SENSORS_FANS)�HAS_SENSORS_TEMPERATURES)�IS_64BIT)�MACOS_12PLUS)�PYPY)�	QEMU_USER)�UNICODE_SUFFIX)�PsutilTestCase)�check_net_address)�enum)�mock)�pytest)�retry_on_failurec@s<eZdZdd�Zdd�Zdd�Zdd�Zd	d
�Zdd�Zd
S)�TestProcessItercCs~tj�dd�tj�D�kst�|j�}|jdd�tj�D�ksBt�tj|j�}|j�|j	�|jdd�tj�D�kszt�dS)NcSsg|]
}|j�qS�)�pid)�.0�xr'r'�D/usr/local/lib64/python3.6/site-packages/psutil/tests/test_system.py�
<listcomp>Csz5TestProcessIter.test_pid_presence.<locals>.<listcomp>cSsg|]
}|j�qSr')r()r)r*r'r'r+r,EscSsg|]
}|j�qSr')r()r)r*r'r'r+r,Is)
�os�getpid�psutil�process_iter�AssertionError�spawn_testprocr(�Process�kill�wait)�self�sproc�pr'r'r+�test_pid_presenceBsz!TestProcessIter.test_pid_presencecCs>dd�tj�D�}t|dd�d�tt|�dd�d�ks:t�dS)NcSsg|]}|�qSr'r')r)r*r'r'r+r,Lsz6TestProcessIter.test_no_duplicates.<locals>.<listcomp>cSs|jS)N)r()r*r'r'r+�<lambda>Msz4TestProcessIter.test_no_duplicates.<locals>.<lambda>)�keycSs|jS)N)r()r*r'r'r+r:Ns)r/r0�sorted�setr1)r6�lsr'r'r+�test_no_duplicatesKsz"TestProcessIter.test_no_duplicatescCsjttj��xXtd�D]L}tjdtjtj��d�� ttjdgd��gksNt	�WdQRXtjj
�qWdS)N�zpsutil.Process.as_dict)�side_effect�	cpu_times)�attrs)�listr/r0�ranger#�patch�
NoSuchProcessr-r.r1�cache_clear)r6r*r'r'r+�test_emulate_nspQs$z TestProcessIter.test_emulate_nspcCszttj��xhtd�D]\}tjdtjtj��d��0t	j
tj��ttjdgd��WdQRXWdQRXtjj�qWdS)Nr@zpsutil.Process.as_dict)rArB)rC)rDr/r0rEr#rF�AccessDeniedr-r.r$�raisesrH)r6r*r'r'r+�test_emulate_access_denied[s&z*TestProcessIter.test_emulate_access_deniedcCspx.tjdgd�D]}t|jj��dgkst�qWx.tjdgd�D]}t|jj��dgks@t�q@Wtjt��ttjdgd��WdQRXt	j
dtjdd�d��N}x<tjddgd�D](}|jddks�t�|jddks�t�q�W|js�t�WdQRXt	j
dtjdd�d��^}t
�}xDtjddg|d	�D].}|jd|k�s<t�|jddk�s$t��q$W|j�sbt�WdQRXdS)
Nr()rCZfooz$psutil._psplatform.Process.cpu_timesr�)rArB)rCZad_value)r/r0rD�info�keysr1r$rK�
ValueErrorr#rFrJ�called�object)r6r8�m�flagr'r'r+�
test_attrsfs0zTestProcessIter.test_attrscCs0ttj��tjst�tjj�tjs,t�dS)N)rDr/r0Z_pmapr1rH)r6r'r'r+�test_cache_clear�s

z TestProcessIter.test_cache_clearN)	�__name__�
__module__�__qualname__r9r?rIrLrUrVr'r'r'r+r&As	
r&c@sTeZdZejjeoedd�dd��Zejjeo0edd�dd��Z	dd�Z
d	d
�ZdS)�TestProcessAPIsz-spawn_testproc() unreliable on PYPY + WINDOWS)�reasoncs�fdd�}g�|j�}|j�}|j�}dd�|||fD�}tjt��tj|dd�WdQRXtjt��tj|dd�WdQRXtj�}tj|d|d	�\}}tj�|d
ks�t�|gks�t�t	|�dks�t��gks�t�x|D]}	t
|	d�s�t�q�Wtd
�dd��}
|j�|
||�\}}|j
dd�|D�k�s:t�t�rZ|j�jtjk�snt�n|j�jdk�snt��|j
gk�s�t�x |D]}	t
|	d��s�t��q�Wtd
�dd��}|j�|j�|||�\}}t��t|j
|j
|j
g�k�s�t�x|D]}	t
|	d��s�t��q�WdS)Ncs�j|j�dS)N)�appendr()r8)�pidsr'r+�callback�sz1TestProcessAPIs.test_wait_procs.<locals>.callbackcSsg|]}tj|j��qSr')r/r3r()r)r*r'r'r+r,�sz3TestProcessAPIs.test_wait_procs.<locals>.<listcomp>�)�timeout)r^g{�G�z�?)r`r^g�?��
returncode�cSs<tj|d|d�\}}t|�dks$t�t|�dks4t�||fS)Ng���Q��?)r`r^r_r@)r/�
wait_procs�lenr1)�procsr^�gone�aliver'r'r+�test_1�s
z/TestProcessAPIs.test_wait_procs.<locals>.test_1cSsg|]
}|j�qSr')r()r)r*r'r'r+r,�scSs<tj|d|d�\}}t|�dks$t�t|�dks4t�||fS)Ng���Q��?)r`r^rar)r/rdrer1)rfr^rgrhr'r'r+�test_2�s
z/TestProcessAPIs.test_wait_procs.<locals>.test_2���)r2r$rKrPr/rd�	TypeError�timer1re�hasattrr%�	terminater(r	�poprb�signal�SIGTERMr=)r6r^�sproc1�sproc2�sproc3rf�trgrhr8rirjr')r]r+�test_wait_procs�sF
	
	"
zTestProcessAPIs.test_wait_procscCsP|j�}|j�}|j�}dd�|||fD�}x|D]}|j�q2Wtj|�dS)NcSsg|]}tj|j��qSr')r/r3r()r)r*r'r'r+r,�sz>TestProcessAPIs.test_wait_procs_no_timeout.<locals>.<listcomp>)r2ror/rd)r6rsrtrurfr8r'r'r+�test_wait_procs_no_timeout�s
z*TestProcessAPIs.test_wait_procs_no_timeoutcCst|j�}tj|j�st�tj|j�}|j�|j�tj|j�sFt�tjd�sVt�tjd�dtj�kkspt�dS)Nr_rrk)	r2r/�
pid_existsr(r1r3r4r5r])r6r7r8r'r'r+�test_pid_exists�szTestProcessAPIs.test_pid_existscCs�tj�}xN|D]F}ytj|�s"t�Wqtk
rRtjd�|tj�ksNt�YqXqWtt|�dt|�d�}x|D]}tj|�sxt�qxWdS)Ng�������?i�:i�>)r/r]ryr1rm�sleeprE�max)r6r]r(r'r'r+�test_pid_exists_2�s


z!TestProcessAPIs.test_pid_exists_2N)rWrXrYr$�mark�skipifrrrwrxrzr}r'r'r'r+rZ�s=
rZc@sFeZdZdd�Zejjeo"ej	�dd�dd��Z
dd�Zd	d
�ZdS)�TestMiscAPIscCs6tj�}t|t�st�|dks"t�|tj�ks2t�dS)Nr)r/Z	boot_time�
isinstance�floatr1rm)r6Zbtr'r'r+�test_boot_time�szTestMiscAPIs.test_boot_timezunreliable on CI)r[c
Cs�tj�}|gkst�x�|D]�}|j|d���|js6t�t|jt�sFt�t|jttd�f�s^t�|j	dk	r�t|j	ttd�f�s�t�|j|j	|j
dks�t�tjj|j
�t
s�tr�|jdks�t�ntj|j�WdQRXqWdS)N)�userg)r/�usersr1�subTest�namer��str�terminal�type�host�started�datetime�
fromtimestamprrr(r3)r6r�r�r'r'r+�
test_users�s 


zTestMiscAPIs.test_userscCs&tj}tt_ztj�Wd|t_XdS)N)�sys�stdoutrr/�test)r6r�r'r'r+�	test_tests
zTestMiscAPIs.test_testc	Cs�ddddddddd	g	}x$|D]}ttt|�t�st|��qWtjd
k�rLtjsRt�tjs^t�|j	d�dt
jj�kr�tj
s�t�|j	d�n�dt
jj�kr�tjs�t�tjtjtjgjd
�dks�t�|j	d�|j	d�|j	d�|j	d�n^dt
jj�k�sdt
jj�k�r$tj�st�|j	d	�n&dt
jj�k�rptj�s@t�|j	d�n$tj�sXt�tj�sft�|j	d�x$|D]}tt|��svt|���qvWdS)Nr	rrrrrrrr
�posix�linuxZbsdTr_�sunos�solaris�darwin)r��getattrr/�boolr1r-r�r	r�remover��platform�lowerrrrrr�countr
r)r6�namesr�r'r'r+�test_os_constantssN










zTestMiscAPIs.test_os_constantsN)
rWrXrYr�r$r~rrr/r�r�r�r�r'r'r'r+r��s
	r�c@seZdZdd�Zdd�ZdS)�TestMemoryAPIscCs�tj�}|jdkst|��|jdks,t|��d|jko@dknsNt|��|jdks`t|��|jdksrt|��xv|jD]l}t	||�}|dkr�t
|ttf�s�t�|dkrz|dks�|j
d||f��||jkrz|j
d||j||f��qzWdS)Nr�d�percent�totalz%r < 0 (%s)z%r > total (total=%s, %s=%s))r/Zvirtual_memoryr�r1�	availabler��used�free�_fieldsr�r��intr�fail)r6�memr��valuer'r'r+�test_virtual_memoryHs""

z"TestMemoryAPIs.test_virtual_memorycCs�tj�}|jd	kst�|jdks(t|��|jdks:t|��|jdkrX|jdksjt|��n|jdksjt|��d|jko~dkns�t|��|jdks�t|��|j	dks�t|��dS)
Nr�r�r�r��sin�soutrr�)r�r�r�r�r�r�)
r/Zswap_memoryr�r1r�r�r�r�r�r�)r6r�r'r'r+�test_swap_memory\s 

"zTestMemoryAPIs.test_swap_memoryN)rWrXrYr�r�r'r'r'r+r�Gsr�c@s�eZdZdd�Zdd�Zdd�Zdd�Zd	d
�Zdd�Zd
d�Z	e
jje
oLedd�dd��Zdd�Zdd�Zdd�Zdd�Zdd�Zdd�Zdd �Ze
jjeo�ej�d!kd"d�e
jjed#d�d$d%���Ze
jjed#d�d&d'��Zd(S))�TestCpuAPIsc	Csvtj�}|dk	st�|ttjdd��ks,t�|dks8t�tjjd�rrtd��}|j	�}WdQRXd|krrt
jd��dS)NT)�percpur_z
/proc/cpuinfozphysical idz#cpuinfo doesn't include physical id)r/�	cpu_countr1rerBr-�path�exists�open�readr$�skip)r6�logical�fdZcpuinfo_datar'r'r+�test_cpu_count_logicalts
z"TestCpuAPIs.test_cpu_count_logicalcCshtj�}tjdd�}|dkr&tjd��trLtj�dd�dkrL|dksdt�n|dksXt�||ksdt�dS)NF)r�zcpu_count_cores() is Noner@�r_)r�r_)r/r�r$r�rr��getwindowsversionr1)r6r�Zcoresr'r'r+�test_cpu_count_cores�s
z TestCpuAPIs.test_cpu_count_corescCs~xxd	D]p}tjd|d�� }tj�dks*t�|js4t�WdQRXtjd|d��$}tjdd�dksbt�|jslt�WdQRXqWdS)
Nr_rz$psutil._psplatform.cpu_count_logical)�return_valuez"psutil._psplatform.cpu_count_coresF)r�rk)rkrN)r#rFr/r�r1rQ)r6�valrSr'r'r+�test_cpu_count_none�s


zTestCpuAPIs.test_cpu_count_nonecCsnd}tj�}t|�x.|D]&}t|t�s,t�|dks8t�||7}qWtt|t|��d�dksbt�t|�dS)Nrgr�)	r/rB�sumr�r�r1�round�absr�)r6r��times�cp_timer'r'r+�test_cpu_times�s
zTestCpuAPIs.test_cpu_timescCsPttj��}tj�t}x(tj�|kr@ttj��}||krdSqW|jd��dS)Nztime remained the same)r�r/rBrmrr�)r6�t1Zstop_at�t2r'r'r+�test_cpu_times_time_increases�sz)TestCpuAPIs.test_cpu_times_time_increasescCs�xvtjdd�D]f}d}t|�x.|D]&}t|t�s6t�|dksBt�||7}q$Wtt|t|��d�dkslt�t|�qWt	tjdd�d�t	tjdd��ks�t�dS)NT)r�rgr�F)
r/rBr�r�r�r1r�r�r�re)r6r�r�r�r'r'r+�test_per_cpu_times�s
zTestCpuAPIs.test_per_cpu_timescCs�tjdd�}tj�t}xhtj�|kr0|jd�Stjdd�}x@t||�D]2\}}tj|�tj|�}}||}|dkrHdSqHWqWdS)NT)r�r`g�������?)r/rBrmrr��zipZ_cpu_busy_time)r6Ztot1Z	giveup_atZtot2r�r��
differencer'r'r+�test_per_cpu_times_2�s
z TestCpuAPIs.test_per_cpu_times_2zunreliable on OPENBSD + CI)r[c
Cs|tj�}tjdd�}|jdd�t|�D��}xJ|jD]@}|j|||d��&tt||�t||��dksjt�WdQRXq4WdS)NT)r�cSsg|]}t|��qSr')r�)r)�numr'r'r+r,�sz9TestCpuAPIs.test_cpu_times_comparison.<locals>.<listcomp>)�field�base�per_cpur_)	r/rB�_maker�r�r�r�r�r1)r6r�r�Z
summed_valuesr�r'r'r+�test_cpu_times_comparison�sz%TestCpuAPIs.test_cpu_times_comparisoncCs�y>t|t�st�|dkst�|dk	s(t�|dtj�ks<t�Wn@tk
r~}z$td|tj|�tj|�f��WYdd}~XnXdS)NggY@z
%s
last=%s
new=%sg�)r�r�r1r/r��pprint�pformat)r6r�Zlast_retZnew_ret�errr'r'r+�_test_cpu_percentszTestCpuAPIs._test_cpu_percentc
Csbtjdd�}x.td�D]"}tjdd�}|j|||�|}qWtjt��tjdd�WdQRXdS)Ng����MbP?)�intervalr�r_rk)r/�cpu_percentrEr�r$rKrP)r6�last�_�newr'r'r+�test_cpu_percentszTestCpuAPIs.test_cpu_percentcCs�tjddd�}t|�tj�ks"t�x>td�D]2}tjddd�}x|D]}|j|||�qDW|}q,Wtjt	��tjddd�WdQRXdS)Ng����MbP?T)r�r�r�r_rk)
r/r�rer�r1rEr�r$rKrP)r6r�r�r�r�r'r'r+�test_per_cpu_percents
z TestCpuAPIs.test_per_cpu_percentc
Cs�tjdd�}xNtd�D]B}tjdd�}x|D]}|j|||�q,W|jt|�||�|}qWtjt��tjdd�WdQRXdS)Ng����MbP?)r�r�r_rk)r/�cpu_times_percentrEr�r�r$rKrP)r6r�r�r�r�r'r'r+�test_cpu_times_percent"s
z"TestCpuAPIs.test_cpu_times_percentcCs�tjddd�}t|�tj�ks"t�x^td�D]R}tjddd�}x:|D]2}x|D]}|j|||�qNW|jt|�||�qDW|}q,WdS)Ng����MbP?T)r�r�r�)r/r�rer�r1rEr�r�)r6r�r�r��cpur�r'r'r+�test_per_cpu_times_percent-s

z&TestCpuAPIs.test_per_cpu_times_percentc
Csrtjdd�dd�tjdd�D�}tjd|d��8x0tjdd�D] }x|D]}|j|dd�qJWq@WWdQRXdS)NT)r�cSs*g|]"}|jdd�tt|j��D���qS)cSsg|]}d�qS)rr')r)r*r'r'r+r,<szNTestCpuAPIs.test_per_cpu_times_percent_negative.<locals>.<listcomp>.<listcomp>)r�rErer�)r)r*r'r'r+r,<szCTestCpuAPIs.test_per_cpu_times_percent_negative.<locals>.<listcomp>zpsutil.cpu_times)r�)r/r�rBr#rFr�)r6Z
zero_timesr�r�r'r'r+�#test_per_cpu_times_percent_negative8s
z/TestCpuAPIs.test_per_cpu_times_percent_negativecCsZtj�}|jdkst�x>|jD]4}t||�}|dks8t�tr|dkr|dkst�qWdS)N�ctx_switches�
interrupts�soft_interrupts�syscallsr)r�r�r�r�)r�r�)r/Z	cpu_statsr�r1r�r)r6Zinfosr�r�r'r'r+�test_cpu_statsDs

zTestCpuAPIs.test_cpu_statsZarm64zskipped due to #1892z
not supportedcCsbdd�}tjdd�}tr(|r(tjd��|s4t|��|tjdd�g�tr^t|�tj�ks^t�dS)NcSstxn|D]f}|jdkst�|jdkr2|j|jks2t�x8|jD].}t||�}t|tttf�s\t�|dks:t�q:WqWdS)N�current�minr|gr)r�r�r|)	r�r1r|r�r�r�r�rr�)r>�ntr�r�r'r'r+�check_lsZs


z+TestCpuAPIs.test_cpu_freq.<locals>.check_lsT)r�zreturns empty list on FreeBSDF)	r/Zcpu_freqrr$r�r1rrer�)r6r�r>r'r'r+�
test_cpu_freqUs


zTestCpuAPIs.test_cpu_freqcCsDtj�}t|�dkst�x&|D]}t|t�s0t�|dkst�qWdS)Nrag)r/�
getloadavgrer1r�r�)r6Zloadavg�loadr'r'r+�test_getloadavgns

zTestCpuAPIs.test_getloadavgN)rWrXrYr�r�r�r�r�r�r�r$r~rrrr�r�r�r�r�r�r�r�rr��machinerr�rr�r'r'r'r+r�ss(
"	r�c@s�eZdZejjeoedd�dd��Zejje	dd�dd��Z
dd	�Zd
d�Zejje
ofejjd�d
d�ejjeo~ej�dd�dd���Zdd�ZdS)�TestDiskAPIszunreliable on PYPY32 + 32BIT)r[c	Cs0tjtj��}|jd
kst�|jdks.t|��|jdks@t|��|jdksRt|��|j|jksft|��|j|jkszt|��d|j	ko�dkns�t|j	��t
td��rtjtj��}d}|j|jks�t�t|j|j�|ks�t�t
�st|j|j�|k�st�|j�}tjt��tj|�WdQRXdS)
Nr�r�r�r�rr��
disk_usage�i)r�r�r�r�iiP)r/r�r-�getcwdr�r1r�r�r�r�rn�shutilr�rZ
get_testfnr$rKr
)r6�usageZshutil_usageZ	tolerance�fnamer'r'r+�test_disk_usagexs$$zTestDiskAPIs.test_disk_usageznot an ASCII fsc	Cs$tjt��tjt�WdQRXdS)N)r$rK�UnicodeEncodeErrorr/r�r)r6r'r'r+�test_disk_usage_unicode�sz$TestDiskAPIs.test_disk_usage_unicodecCstjd�dS)N�.)r/r�)r6r'r'r+�test_disk_usage_bytes�sz"TestDiskAPIs.test_disk_usage_bytescCsxdd�}tjdd�}|st�xj|D]b}||�tr>d|jkr>q"tsZtjj|j	�s`t|��n|j	tjj|j
�svt|��|js"t|��q"Wtjdd�}|s�t�x�tjdd�D]�}||�to�|j
r�ytj|j
�WnRt
k
�r$}z4to�to�|jtjk�r�w�|jtjtjfk�r�WYdd}~Xq�Xtjj|j
�s�t|��q�Wdd�}|t�}d	d
�tjdd�D�}||k�stt�dS)NcSsDt|jt�st�t|jt�s t�t|jt�s0t�t|jt�s@t�dS)N)r��devicer�r1�
mountpoint�fstype�opts)r�r'r'r+�check_ntuple�sz7TestDiskAPIs.test_disk_partitions.<locals>.check_ntupleF)�allZcdromTcSs2tjj|�}xtjj|�s(tjj|�}qW|j�S)N)r-r��abspath�ismount�dirnamer�)r�r'r'r+�find_mount_point�sz;TestDiskAPIs.test_disk_partitions.<locals>.find_mount_pointcSsg|]}|jr|jj��qSr')rr�)r)r*r'r'r+r,�sz5TestDiskAPIs.test_disk_partitions.<locals>.<listcomp>)r/Zdisk_partitionsr1rrr	r-r�r�r�rr�stat�OSErrorrr�errnoZEIO�EPERM�EACCES�__file__)r6rr>Zdiskr�rZmountZmountsr'r'r+�test_disk_partitions�s<
z!TestDiskAPIs.test_disk_partitionsz/proc/diskstatsz3/proc/diskstats not available on this linux versionzunreliable on CIcCszdd�}tjdd�}|dk	s$td��||�tjdd�}t|�tt|��ksPt�x$|D]}|sft|��|||�qVWdS)NcSs�|d|jkst�|d|jks$t�|d|jks6t�|d|jksHt�tpNts�|d|jksbt�|d|jkstt�t	r�|d|j
ks�t�|d|jks�t�|d	|jks�t�nt
r�|d|jks�t�x$|jD]}t||�dks�t|��q�WdS)
Nrr_r@ra�r�r���)�
read_countr1�write_count�
read_bytes�write_bytesrr�	read_time�
write_timerZread_merged_countZwrite_merged_countZ	busy_timerr�r�)r�r�r'r'r+r�sz8TestDiskAPIs.test_disk_io_counters.<locals>.check_ntupleF)�perdiskzno disks on this system?T)r/�disk_io_countersr1rer=)r6r�retr;r'r'r+�test_disk_io_counters�s
z"TestDiskAPIs.test_disk_io_countersc
CsPtjdid��8}tjdd�dks$t�tjdd�iks8t�|jsBt�WdQRXdS)Nz#psutil._psplatform.disk_io_counters)r�F)rT)r#rFr/rr1rQ)r6rSr'r'r+�test_disk_io_counters_no_disks�s
z+TestDiskAPIs.test_disk_io_counters_no_disksN)rWrXrYr$r~rrrr�rr�r�rrr-r�r�rr/rrrr'r'r'r+r�ws:r�c@s�eZdZejjedd�dd��Zejjedd�dd��Zejje	dd�dd	��Z
d
d�Zejje	dd�dd
��Zejje
p�ep�edd�dd��ZdS)�TestNetAPIsz
not supported)r[cCshdd�}tjdd�}||�tjdd�}|gks4t�x.|D]&}|sFt�t|t�sTt�|||�q:WdS)NcSs(|d|jkst�|d|jks$t�|d|jks6t�|d|jksHt�|d|jksZt�|d|jkslt�|d|jks~t�|d|jks�t�|jdks�t|��|jdks�t|��|jdks�t|��|jdks�t|��|jdks�t|��|jdks�t|��|jdk�st|��|jdk�s$t|��dS)	Nrr_r@rarr�r�r)	�
bytes_sentr1�
bytes_recv�packets_sent�packets_recv�errin�errout�dropin�dropout)r�r'r'r+r	s z6TestNetAPIs.test_net_io_counters.<locals>.check_ntupleF)�pernicT)r/�net_io_countersr1r�r�)r6rrr;r'r'r+�test_net_io_counterss
z TestNetAPIs.test_net_io_countersc
CsPtjdid��8}tjdd�dks$t�tjdd�iks8t�|jsBt�WdQRXdS)Nz"psutil._psplatform.net_io_counters)r�F)r'T)r#rFr/r(r1rQ)r6rSr'r'r+�test_net_io_counters_no_nics$s
z(TestNetAPIs.test_net_io_counters_no_nicszQEMU user not supportedc
Cs�tj�}|st|��tj�}ttjtjtjg�}�x�|j	�D�]�\}}t
|t�sTt�tt|��t|�kslt��x�|D�]�}t
|j
t�s�t�t
|jt�s�t�t
|jttd�f�s�t�t
|jttd�f�s�t�|j
|ks�t�tr�tr�t
|j
tj�s�t�||j�r�|j
tjk�rBtj|j
�}tj|��|j|jdf�WdQRXnj|j
tjk�r�tj|jdtjtjdtj�d}|\}	}
}}}
tj|	|
|�}tj|��|j|
�WdQRXxB|j|j|j|jfD]*}|dk	�r�|j
tjk�r�t||j
��q�W|j�r
|jdk�st�qt|jrt|jdkstt�qtWq<Wt �s8t!�s8t"�rXt#td��r�tjtjk�s�t�n0t$�rrtjtj%k�s�t�nt&�r�tjdk�s�t�dS)Nr�AF_LINKr_rk)'r/�net_if_addrsr1�net_if_statsr=�socket�AF_INET�AF_INET6r+�itemsr�r�re�familyr��address�netmaskr��	broadcastrrr"�IntEnum�isup�
contextlib�closing�bind�getaddrinfo�SOCK_STREAM�
AI_PASSIVE�ptpr!rrr
rnr�	AF_PACKETr)r6�nicsZ	nic_statsZfamiliesZnic�addrs�addr�srN�af�socktype�protoZ
_canonname�sa�ipr'r'r+�test_net_if_addrs/sh

zTestNetAPIs.test_net_if_addrsc	Csztrdtjddddfg}ndg}tjd|d��B}tj�dd}|jsJt�tr^|jdkslt�n|jd	kslt�WdQRXdS)N�em1z06:3d:29r_�06-3d-29zpsutil._psplatform.net_if_addrs)r�rz06:3d:29:00:00:00z06-3d-29-00-00-00rk)rJrkrKNNN)	r	r/r+r#rFr,rQr1r3)r6rrSrBr'r'r+� test_net_if_addrs_mac_null_bytesus

z,TestNetAPIs.test_net_if_addrs_mac_null_bytesc
Cs�tj�}|st|��tjtjtjf}x||j�D]p\}}t|t�sDt�|\}}}}}	t|t	�s`t�||kslt�||ksxt�|dks�t�|dks�t�t|	t�s.t�q.WdS)Nr)
r/r-r1�NIC_DUPLEX_FULL�NIC_DUPLEX_HALF�NIC_DUPLEX_UNKNOWNr1r�r�r�)
r6r@Zall_duplexesr�Zstatsr7�duplex�speed�mtu�flagsr'r'r+�test_net_if_stats�szTestNetAPIs.test_net_if_statszLINUX or BSD or MACOS specificc	CsDtjdttjd�d��$}tj�}|iks,t�|js6t�WdQRXdS)Nzpsutil._psutil_posix.net_if_mturM)rA)	r#rFr
rZENODEVr/r-r1rQ)r6rSrr'r'r+�test_net_if_stats_enodev�sz$TestNetAPIs.test_net_if_stats_enodevN)rWrXrYr$r~rrr)r*rrIrLrTrrrrUr'r'r'r+rsFrc@s�eZdZejjedd�dd��Zejjedd�dd��Zejje	dd�ejje
dd�dd	���Zejjedd�d
d��Z
dS)
�TestSensorsAPIsz
not supported)r[cCs�tj�}x�|j�D]|\}}t|t�s(t�xd|D]\}t|jt�sBt�|jdk	rZ|jdksZt�|jdk	rr|jdksrt�|j	dk	r.|j	dks.t�q.WqWdS)Nr)
r/�sensors_temperaturesr1r�r�r1�labelr��high�critical)r6�tempsr��entries�entryr'r'r+�test_sensors_temperatures�s



z)TestSensorsAPIs.test_sensors_temperaturesc
Cspddgi}tjd|d��N}tjdd	�dd
}|js8t�|jdksFt�|jdksTt�|jd
ksbt�WdQRXdS)NZcoretemprX�I@�N@��Q@z'psutil._psplatform.sensors_temperatures)r�T)Z
fahrenheitrg�^@g�a@g�c@)rXr_r`ra)	r#rFr/rWrQr1r�rYrZ)r6�drSr[r'r'r+�#test_sensors_temperatures_fahreneit�s


z3TestSensorsAPIs.test_sensors_temperatures_fahreneitz
no batterycCsptj�}|jdkst�|jdks$t�|jtjtjfkrF|jdks\t�n|jtjkr\|js\t�t|jt	�slt�dS)Nrr�)
r/Zsensors_batteryr�r1�secsleft�POWER_TIME_UNKNOWN�POWER_TIME_UNLIMITED�
power_pluggedr�r�)r6rr'r'r+�test_sensors_battery�s

z$TestSensorsAPIs.test_sensors_batterycCsptj�}xb|j�D]V\}}t|t�s(t�x>|D]6}t|jt�sBt�t|jtt	f�sVt�|jdks.t�q.WqWdS)Nr)
r/Zsensors_fansr1r�r�r1rXr�r�r)r6Zfansr�r\r]r'r'r+�test_sensors_fans�s
z!TestSensorsAPIs.test_sensors_fansN)rWrXrYr$r~rrr^rcrrrhrrir'r'r'r+rV�s
rV);�__doc__r8r�rr-r�r�r�rqr.r�rmr/rrrrrrrr	r
rZpsutil._compatrr
rZpsutil.testsrrrrrrrrrrrrrrrrrr r!r"r#r$r%r&rZr�r�r�r�rrVr'r'r'r+�<module>sxHfX,#