HEX
Server: LiteSpeed
System: Linux atali.colombiahosting.com.co 5.14.0-570.12.1.el9_6.x86_64 #1 SMP PREEMPT_DYNAMIC Tue May 13 06:11:55 EDT 2025 x86_64
User: coopserp (1713)
PHP: 8.2.29
Disabled: dl,exec,passthru,proc_open,proc_close,shell_exec,memory_limit,system,popen,curl_multi_exec,show_source,symlink,link,leak,listen,diskfreespace,tmpfile,ignore_user_abord,highlight_file,source,show_source,fpaththru,virtual,posix_ctermid,posix_getcwd,posix_getegid,posix_geteuid,posix_getgid,posix_getgrgid,posix_getgrnam,posix_getgroups,posix_getlogin,posix_getpgid,posix_getpgrp,posix_getpid,posix,posix_getppid,posix_getpwnam,posix_getpwuid,posix_getrlimit,posix_getsid,posix_getuid,posix_isatty,posix_kill,posix_mkfifo,posix_setegid,posix_seteuid,posix_setgid,posix_setpgid,posix_setsid,posix_setid,posix_times,posix_ttyname,posix_uname,proc_get_status,proc_nice,proc_terminate
Upload Files
File: //usr/local/lib64/python3.9/site-packages/psutil/tests/__pycache__/test_system.cpython-39.pyc
a

��?hO��@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~t��dd�t��D�vsJ�|��}|jdd�t��D�vsBJ�t�|j�}|��|��|jdd�t��D�vszJ�dS)NcSsg|]
}|j�qS���pid��.0�xr'r'�D/usr/local/lib64/python3.9/site-packages/psutil/tests/test_system.py�
<listcomp>C�z5TestProcessIter.test_pid_presence.<locals>.<listcomp>cSsg|]
}|j�qSr'r(r*r'r'r-r.Er/cSsg|]
}|j�qSr'r(r*r'r'r-r.Ir/)	�os�getpid�psutil�process_iter�spawn_testprocr)�Process�kill�wait��selfZsproc�pr'r'r-�test_pid_presenceBsz!TestProcessIter.test_pid_presencecCs>dd�t��D�}t|dd�d�tt|�dd�d�ks:J�dS)NcSsg|]}|�qSr'r'r*r'r'r-r.Lr/z6TestProcessIter.test_no_duplicates.<locals>.<listcomp>cSs|jS�Nr(�r,r'r'r-�<lambda>Mr/z4TestProcessIter.test_no_duplicates.<locals>.<lambda>)�keycSs|jSr<r(r=r'r'r-r>Nr/)r2r3�sorted�set)r9�lsr'r'r-�test_no_duplicatesKs�z"TestProcessIter.test_no_duplicatesc	Csztt���td�D]`}tjdt�t���d��*ttjdgd��gksLJ�Wd�n1s`0Ytj�	�qdS�N�zpsutil.Process.as_dict�Zside_effect�	cpu_times��attrs)
�listr2r3�ranger#�patchZ
NoSuchProcessr0r1�cache_clear�r9r,r'r'r-�test_emulate_nspQs�8z TestProcessIter.test_emulate_nspc
Cs�tt���td�D]�}tjdt�t���d��Nt	�
tj��"ttjdgd��Wd�n1sf0YWd�n1s�0Ytj��qdSrD)rJr2r3rKr#rL�AccessDeniedr0r1r$�raisesrMrNr'r'r-�test_emulate_access_denied[s�Nz*TestProcessIter.test_emulate_access_deniedcCs�tjdgd�D]}t|j���dgksJ�qtjdgd�D]}t|j���dgks:J�q:t�t��"ttjdgd��Wd�n1s�0Ytj	dt�
dd�d��T}tjddgd�D](}|jddus�J�|jddks�J�q�|js�J�Wd�n1�s0Ytj	dt�
dd�d��d}t�}tjddg|d	�D].}|jd|u�sXJ�|jddk�s@J��q@|j�s|J�Wd�n1�s�0YdS)
Nr)rHZfooz$psutil._psplatform.Process.cpu_timesr�rFrG)rIZad_value)
r2r3rJ�info�keysr$rQ�
ValueErrorr#rLrP�called�object)r9r:�m�flagr'r'r-�
test_attrsfs60
�*
��
zTestProcessIter.test_attrscCs.tt���tjsJ�tj��tjr*J�dSr<)rJr2r3Z_pmaprM�r9r'r'r-�test_cache_clear�s

z TestProcessIter.test_cache_clearN)	�__name__�
__module__�__qualname__r;rCrOrRr[r]r'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s4�fdd�}g�|��}|��}|��}dd�|||fD�}t�t��tj|dd�Wd�n1sj0Yt�t��tj|dd�Wd�n1s�0Yt��}tj|d	|d
�\}}t��|dks�J�|gks�J�t|�dks�J��gk�sJ�|D]}	t	|	d
��r
J��q
t
d�dd��}
|��|
||�\}}|jdd�|D�v�sbJ�t
�r�|��jtjk�s�J�n|��jdk�s�J��|jgk�s�J�|D]}	t	|	d
��r�J��q�t
d�dd��}|��|��|||�\}}t��t|j|j|jg�k�sJ�|D]}	t	|	d
��sJ��qdS)Ncs��|j�dSr<)�appendr))r:��pidsr'r-�callback�sz1TestProcessAPIs.test_wait_procs.<locals>.callbackcSsg|]}t�|j��qSr'�r2r5r)r*r'r'r-r.�r/z3TestProcessAPIs.test_wait_procs.<locals>.<listcomp>���)�timeout�)rgg{�G�z�?�rjrgg�?��
returncode�cSs<tj|d|d�\}}t|�dks$J�t|�dks4J�||fS)N���Q��?rlrkrE�r2�
wait_procs�len��procsrg�gone�aliver'r'r-�test_1�s�
z/TestProcessAPIs.test_wait_procs.<locals>.test_1cSsg|]
}|j�qSr'r(r*r'r'r-r.�r/cSs<tj|d|d�\}}t|�dks$J�t|�dks4J�||fS)Nrprlrmrrqrtr'r'r-�test_2�s�
z/TestProcessAPIs.test_wait_procs.<locals>.test_2)r4r$rQrVr2rr�	TypeError�timers�hasattrr%�	terminater)r	�poprn�signal�SIGTERMrA)r9rg�sproc1�sproc2�sproc3ru�trvrwr:rxryr'rer-�test_wait_procs�sJ,,

"zTestProcessAPIs.test_wait_procscCsL|��}|��}|��}dd�|||fD�}|D]}|��q0t�|�dS)NcSsg|]}t�|j��qSr'rhr*r'r'r-r.�r/z>TestProcessAPIs.test_wait_procs_no_timeout.<locals>.<listcomp>)r4r}r2rr)r9r�r�r�rur:r'r'r-�test_wait_procs_no_timeout�s
z*TestProcessAPIs.test_wait_procs_no_timeoutcCsp|��}t�|j�sJ�t�|j�}|��|��t�|j�rDJ�t�d�rRJ�t�d�dt��vkslJ�dS)Nrir)r4r2�
pid_existsr)r5r6r7rfr8r'r'r-�test_pid_exists�szTestProcessAPIs.test_pid_existsc	Cs�t��}|D]D}zt�|�s J�WqtyNt�d�|t��vsJJ�Yq0qtt|�dt|�d�}|D]}t�|�rpJ�qpdS)Ng�������?i�:i�>)r2rfr��AssertionErrorr{�sleeprK�max)r9rfr)r'r'r-�test_pid_exists_2�s
z!TestProcessAPIs.test_pid_exists_2N)r^r_r`r$�mark�skipifrrr�r�r�r�r'r'r'r-ra�s�
;�
	
rac@sFeZdZdd�Zejjeo"e�	�dd�dd��Z
dd�Zd	d
�ZdS)�TestMiscAPIscCs6t��}t|t�sJ�|dks"J�|t��ks2J�dS�Nr)r2Z	boot_time�
isinstance�floatr{)r9Zbtr'r'r-�test_boot_time�szTestMiscAPIs.test_boot_time�unreliable on CIrbc	Cs�t��}|gksJ�|D]�}|j|d���|js4J�t|jt�sDJ�t|jttd�f�s\J�|jdur~t|jttd�f�s~J�|j|j|j	dks�J�t
j
�|j	�ts�t
r�|jdus�J�nt�|j�Wd�q1s�0YqdS)N)�user�)r2�users�subTest�namer��strZterminal�type�host�started�datetime�
fromtimestamprrr)r5)r9r�r�r'r'r-�
test_users�s 

zTestMiscAPIs.test_userscCs,tj}tt_zt��W|t_n|t_0dSr<)�sys�stdoutrr2�test)r9r�r'r'r-�	test_tests

zTestMiscAPIs.test_testcCs|gd�}|D]}ttt|�t�sJ|��qtjdk�r6tjs@J�tjrJJ�|�d�dt	j
��vrxtjslJ�|�d�n�dt	j
��vr�tj
s�J�tjtjtjg�d�dks�J�|�d	�|�d
�|�d�|�d�n\d
t	j
��vs�dt	j
��v�rtj�sJ�|�d�n&dt	j
��v�rXtj�s*J�|�d�n"tj�sBJ�tj�rNJ�|�d�|D]}tt|��r\J|���q\dS)N)	r	rrrrrrrr
�posixr	�linuxrZbsdTrkrrrr�sunos�solarisr
�darwinrr)r��getattrr2�boolr0r�r	r�remover��platform�lowerrrrrr�countr
r)r9�namesr�r'r'r-�test_os_constantssF




��


��
zTestMiscAPIs.test_os_constantsN)
r^r_r`r�r$r�r�rr2r�r�r�r�r'r'r'r-r��s�
	r�c@seZdZdd�Zdd�ZdS)�TestMemoryAPIscCs�t��}|jdksJ|��|jdks,J|��d|jkrBdksLnJ|��|jdks^J|��|jdkspJ|��|jD]l}t||�}|dkr�t	|t
tf�s�J�|dkrv|dks�|�d||f��||jkrv|�d||j||f��qvdS)Nr�d�percent�totalz%r < 0 (%s)z%r > total (total=%s, %s=%s))
r2Zvirtual_memoryr��	availabler��used�free�_fieldsr�r��intr�fail)r9�memr��valuer'r'r-�test_virtual_memoryHs& 


��z"TestMemoryAPIs.test_virtual_memorycCs�t��}|jdksJ�|jdks(J|��|jdks:J|��|jdkrX|jdksjJ|��n|jdksjJ|��d|jkr�dks�nJ|��|jdks�J|��|jdks�J|��dS)N)r�r�r�r��sin�soutrr�)	r2Zswap_memoryr�r�r�r�r�r�r�)r9r�r'r'r-�test_swap_memory\s	
 zTestMemoryAPIs.test_swap_memoryN)r^r_r`r�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�e��d!kd"d�e
jjed#d�d$d%���Ze
jjed#d�d&d'��Zd(S))�TestCpuAPIscCs�t��}|dusJ�|ttjdd��ks,J�|dks8J�tj�d�r�td��}|��}Wd�n1sj0Yd|vr�t	�
d��dS)NT��percpurkz
/proc/cpuinfozphysical idz#cpuinfo doesn't include physical id)r2�	cpu_countrsrGr0�path�exists�open�readr$�skip)r9�logical�fdZcpuinfo_datar'r'r-�test_cpu_count_logicalts
&z"TestCpuAPIs.test_cpu_count_logicalcCsht��}tjdd�}|dur&t�d��trLt��dd�dkrL|dusdJ�n|dksXJ�||ksdJ�dS)NF�r�zcpu_count_cores() is NonerE)�rkrk)r2r�r$r�rr��getwindowsversion)r9r�Zcoresr'r'r-�test_cpu_count_cores�s
z TestCpuAPIs.test_cpu_count_coresc	Cs�dD]�}tjd|d��*}t��dus(J�|js2J�Wd�n1sF0Ytjd|d��.}tjdd�dustJ�|js~J�Wd�q1s�0YqdS)N)rirNz$psutil._psplatform.cpu_count_logical�Zreturn_valuez"psutil._psplatform.cpu_count_coresFr�)r#rLr2r�rW)r9�valrYr'r'r-�test_cpu_count_none�s�(�zTestCpuAPIs.test_cpu_count_nonecCsjd}t��}t|�|D]&}t|t�s*J�|dks6J�||7}qtt|t|��d�dks^J�t|�dS)Nrr�r�)r2rG�sumr�r��round�absr�)r9r��times�cp_timer'r'r-�test_cpu_times�s
zTestCpuAPIs.test_cpu_timescCsLtt���}t��t}t��|kr>tt���}||krdSq|�d��dS)Nztime remained the same)r�r2rGr{rr�)r9�t1Zstop_at�t2r'r'r-�test_cpu_times_time_increases�sz)TestCpuAPIs.test_cpu_times_time_increasescCs�tjdd�D]b}d}t|�|D]&}t|t�s2J�|dks>J�||7}q tt|t|��d�dksfJ�t|�qttjdd�d�ttjdd��ks�J�dS)NTr�rr�r�F)	r2rGr�r�r�r�r�r�rs)r9r�r�r�r'r'r-�test_per_cpu_times�s


�zTestCpuAPIs.test_per_cpu_timescCs�tjdd�}t��t}t��|kr.|�d�Stjdd�}t||�D]4\}}t�|�t�|�}}||}|dkrDdSqDqdS)NTr�rjg�������?)r2rGr{rr��zipZ_cpu_busy_time)r9Ztot1Z	giveup_atZtot2r�r��
differencer'r'r-�test_per_cpu_times_2�s
z TestCpuAPIs.test_per_cpu_times_2zunreliable on OPENBSD + CIrbc	Cs�t��}tjdd�}|�dd�t|�D��}|jD]T}|j|||d��0tt||�t||��dkshJ�Wd�q21s|0Yq2dS)NTr�cSsg|]}t|��qSr')r�)r+�numr'r'r-r.�r/z9TestCpuAPIs.test_cpu_times_comparison.<locals>.<listcomp>)�field�base�per_cpurk)r2rG�_maker�r�r�r�r�)r9r�r�Z
summed_valuesr�r'r'r-�test_cpu_times_comparison�s
��z%TestCpuAPIs.test_cpu_times_comparisonc
Cs�z>t|t�sJ�|dksJ�|dus(J�|dt��ks<J�WnBty�}z*td|t�|�t�|�f��WYd}~n
d}~00dS)Nr�g�gY@z
%s
last=%s
new=%s)r�r�r2r�r��pprint�pformat)r9r�Zlast_retZnew_ret�errr'r'r-�_test_cpu_percents��zTestCpuAPIs._test_cpu_percentcCsrtjdd�}td�D]"}tjdd�}|�|||�|}qt�t��tjdd�Wd�n1sd0YdS�N���MbP?)�intervalr�ri)r2�cpu_percentrKr�r$rQrV)r9�last�_�newr'r'r-�test_cpu_percentszTestCpuAPIs.test_cpu_percentcCs�tjddd�}t|�t��ks"J�td�D].}tjddd�}|D]}|�|||�q@|}q*t�t��tjddd�Wd�n1s�0YdS)Nr�T�r�r�r�ri)	r2r�rsr�rKr�r$rQrV�r9r�r�r�r�r'r'r-�test_per_cpu_percentsz TestCpuAPIs.test_per_cpu_percentcCs�tjdd�}td�D]>}tjdd�}|D]}|�|||�q(|�t|�||�|}qt�t��tjdd�Wd�n1s�0YdSr�)r2�cpu_times_percentrKr�r�r$rQrVr�r'r'r-�test_cpu_times_percent"sz"TestCpuAPIs.test_cpu_times_percentcCsztjddd�}t|�t��ks"J�td�D]J}tjddd�}|D].}|D]}|�|||�qH|�t|�||�q@|}q*dS)Nr�Tr�r�)r2r�rsr�rKr�r�)r9r�r�r��cpur�r'r'r-�test_per_cpu_times_percent-sz&TestCpuAPIs.test_per_cpu_times_percentcCs~tjdd�dd�tjdd�D�}tjd|d��:tjdd�D]}|D]}|�|dd�qFq>Wd�n1sp0YdS)NTr�cSs*g|]"}|�dd�tt|j��D���qS)cSsg|]}d�qS)rr'r*r'r'r-r.<r/zNTestCpuAPIs.test_per_cpu_times_percent_negative.<locals>.<listcomp>.<listcomp>)r�rKrsr�r*r'r'r-r.;s�zCTestCpuAPIs.test_per_cpu_times_percent_negative.<locals>.<listcomp>zpsutil.cpu_timesr�)r2r�rGr#rLr�)r9Z
zero_timesr�r�r'r'r-�#test_per_cpu_times_percent_negative8s
�z/TestCpuAPIs.test_per_cpu_times_percent_negativecCsTt��}|jdksJ�|jD]2}t||�}|dks6J�ts|dvr|dksJ�qdS)N)�ctx_switches�
interruptsZsoft_interruptsZsyscallsr)r�r�)r2Z	cpu_statsr�r�r)r9�infosr�r�r'r'r-�test_cpu_statsDs

zTestCpuAPIs.test_cpu_stats�arm64zskipped due to #1892�
not supportedcCs`dd�}tjdd�}tr&|s&t�d��|s2J|��|tjdd�g�tr\t|�t��ks\J�dS)NcSsl|D]b}|jdksJ�|jdkr0|j|jks0J�|jD].}t||�}t|tttf�sXJ�|dks6J�q6qdS)N)�current�minr�r�r)r�r�rr�r�r�rr�)rB�ntr�r�r'r'r-�check_lsZs


z+TestCpuAPIs.test_cpu_freq.<locals>.check_lsTr�zreturns empty list on FreeBSDF)r2Zcpu_freqrr$r�rrsr�)r9rrBr'r'r-�
test_cpu_freqUs

zTestCpuAPIs.test_cpu_freqcCs@t��}t|�dksJ�|D]}t|t�s.J�|dksJ�qdS)Nrmr�)r2�
getloadavgrsr�r�)r9Zloadavg�loadr'r'r-�test_getloadavgns
zTestCpuAPIs.test_getloadavgN)r^r_r`r�r�r�r�r�r�r�r$r�r�rrr�r�r�r�r�r�r�r�rr��machinerrrr	r'r'r'r-r�ss2
"�
	�r�c@s�eZdZejjeoedd�dd��Zejje	dd�dd��Z
dd	�Zd
d�Zejje
ofej�d�d
d�ejjeo~e��dd�dd���Zdd�ZdS)�TestDiskAPIszunreliable on PYPY32 + 32BITrbcCs>t�t���}|jdksJ�|jdks.J|��|jdks@J|��|jdksRJ|��|j|jksfJ|��|j|jkszJ|��d|jkr�dks�nJ|j��t	t
d�r�t
�t���}d}|j|jks�J�t|j|j�|ks�J�ts�t|j|j�|ks�J�|�
�}t�t��t�|�Wd�n1�s00YdS)N)r�r�r�r�rr��
disk_usageiP)r2rr0�getcwdr�r�r�r�r�r|�shutilr�rZ
get_testfnr$rQr
)r9�usageZshutil_usageZ	tolerance�fnamer'r'r-�test_disk_usagexs$"
zTestDiskAPIs.test_disk_usageznot an ASCII fscCs8t�t��t�t�Wd�n1s*0YdSr<)r$rQ�UnicodeEncodeErrorr2rrr\r'r'r-�test_disk_usage_unicode�sz$TestDiskAPIs.test_disk_usage_unicodecCst�d�dS)N�.)r2rr\r'r'r-�test_disk_usage_bytes�sz"TestDiskAPIs.test_disk_usage_bytescCs~dd�}tjdd�}|sJ�|D]b}||�tr<d|jvr<q tsXtj�|j�s^J|��n|jtj�|j	�stJ|��|j
s J|��q tjdd�}|s�J�tjdd�D]�}||�ts�|j	r�zt�|j	�Wnbt�y,}zHt
�rt�r|jtjk�rWYd}~q�|jtjtjfv�r�WYd}~q�d}~00tj�|j	�s�J|��q�dd�}|t�}d	d
�tjdd�D�}||v�szJ�dS)NcSsDt|jt�sJ�t|jt�s J�t|jt�s0J�t|jt�s@J�dSr<)r��devicer��
mountpoint�fstype�opts�rr'r'r-�check_ntuple�sz7TestDiskAPIs.test_disk_partitions.<locals>.check_ntupleF)�allZcdromTcSs.tj�|�}tj�|�s&tj�|�}q|��Sr<)r0r��abspath�ismount�dirnamer�)r�r'r'r-�find_mount_point�sz;TestDiskAPIs.test_disk_partitions.<locals>.find_mount_pointcSsg|]}|jr|j���qSr')rr�r*r'r'r-r.�s�z5TestDiskAPIs.test_disk_partitions.<locals>.<listcomp>)r2Zdisk_partitionsrrr	r0r�r�rrr�stat�OSErrorrr�errno�EIO�EPERM�EACCES�__file__)r9rrBZdiskr�r �mountZmountsr'r'r-�test_disk_partitions�s>

�z!TestDiskAPIs.test_disk_partitionsz/proc/diskstatsz3/proc/diskstats not available on this linux versionr�cCsvdd�}tjdd�}|dus$Jd��||�tjdd�}t|�tt|��ksPJ�|D]}|sdJ|��|||�qTdS)NcSs�|d|jksJ�|d|jks$J�|d|jks6J�|d|jksHJ�ts�ts�|d|jksbJ�|d|jkstJ�tr�|d|j	ks�J�|d|j
ks�J�|d	|jks�J�ntr�|d|jks�J�|j
D]}t||�dks�J|��q�dS)
NrrkrErm��r���)Z
read_countZwrite_count�
read_bytes�write_bytesrrZ	read_timeZ
write_timerZread_merged_countZwrite_merged_countZ	busy_timerr�r�)rr�r'r'r-r�s
z8TestDiskAPIs.test_disk_io_counters.<locals>.check_ntupleF�Zperdiskzno disks on this system?T)r2�disk_io_countersrsrA�r9r�retr?r'r'r-�test_disk_io_counters�sz"TestDiskAPIs.test_disk_io_counterscCsdtjdid��B}tjdd�dus$J�tjdd�iks8J�|jsBJ�Wd�n1sV0YdS)Nz#psutil._psplatform.disk_io_countersr�Fr0T)r#rLr2r1rW�r9rYr'r'r-�test_disk_io_counters_no_disks�s�z+TestDiskAPIs.test_disk_io_counters_no_disksN)r^r_r`r$r�r�rrrrrrr)rr0r�r�rr2r1r4r6r'r'r'r-rws"
�

:��rc@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)�TestNetAPIsrrbcCsddd�}tjdd�}||�tjdd�}|gks4J�|D]&}|sDJ�t|t�sRJ�|||�q8dS)NcSs(|d|jksJ�|d|jks$J�|d|jks6J�|d|jksHJ�|d|jksZJ�|d|jkslJ�|d|jks~J�|d|jks�J�|jdks�J|��|jdks�J|��|jdks�J|��|jdks�J|��|jdks�J|��|jdks�J|��|jdk�sJ|��|jdk�s$J|��dS)	NrrkrErmr*r+r�r,)Z
bytes_sentZ
bytes_recvZpackets_sentZpackets_recvZerrinZerroutZdropinZdropoutrr'r'r-r	s z6TestNetAPIs.test_net_io_counters.<locals>.check_ntupleF�ZpernicT)r2�net_io_countersr�r�r2r'r'r-�test_net_io_counterssz TestNetAPIs.test_net_io_counterscCsdtjdid��B}tjdd�dus$J�tjdd�iks8J�|jsBJ�Wd�n1sV0YdS)Nz"psutil._psplatform.net_io_countersr�Fr8T)r#rLr2r9rWr5r'r'r-�test_net_io_counters_no_nics$s�z(TestNetAPIs.test_net_io_counters_no_nicszQEMU user not supportedc
Cs�t��}|sJ|��t��}ttjtjtjg�}|��D�]\}}t	|t
�sPJ�tt|��t|�kshJ�|D�]�}t	|jt
�s�J�t	|jt
�s�J�t	|jt
td�f�s�J�t	|jt
td�f�s�J�|j|vs�J�tr�ts�t	|jtj�s�J�||j�r�|jtjk�rNt�|j�}t�|�� |�|jdf�Wd�n1�sB0Yn�|jtjk�r�t�|jdtjtjdtj�d}|\}	}
}}}
t�|	|
|�}t�|��|�|
�Wd�n1�s�0Y|j|j|j|jfD]*}|du�r�|jtjk�r�t||j��q�|j�r(|jdu�s<J�ql|jrl|jduslJ�qlq8t�sRt �sRt!�rrt"td��r�tjtjk�s�J�n0t#�r�tjtj$k�s�J�nt%�r�tjdk�s�J�dS)Nr�AF_LINKri)&r2�net_if_addrs�net_if_statsrA�socket�AF_INET�AF_INET6r<�itemsr�r�rs�familyr��address�netmaskr��	broadcastrrr"�IntEnum�isup�
contextlib�closing�bind�getaddrinfo�SOCK_STREAM�
AI_PASSIVEZptpr!rrr
r|r�	AF_PACKETr)r9�nicsZ	nic_statsZfamiliesZnic�addrs�addr�srT�af�socktype�protoZ
_canonname�sa�ipr'r'r-�test_net_if_addrs/sl
2��*�
zTestNetAPIs.test_net_if_addrscCs�trdtjddddfg}ndg}tjd|d��L}t��dd}|jsJJ�tr^|jdkslJ�n|jdkslJ�Wd�n1s�0YdS)	N�em1z06:3d:29)rZriz06-3d-29NNNzpsutil._psplatform.net_if_addrsr�rz06:3d:29:00:00:00z06-3d-29-00-00-00)r	r2r<r#rLr=rWrD)r9r3rYrRr'r'r-� test_net_if_addrs_mac_null_bytesus�
z,TestNetAPIs.test_net_if_addrs_mac_null_bytesc
Cs�t��}|sJ|��tjtjtjf}|��D]p\}}t|t�sBJ�|\}}}}}	t|t�s^J�||vsjJ�||vsvJ�|dks�J�|dks�J�t|	t�s,J�q,dSr�)	r2r>ZNIC_DUPLEX_FULLZNIC_DUPLEX_HALFZNIC_DUPLEX_UNKNOWNrBr�r�r�)
r9rPZall_duplexesr��statsrHZduplex�speedZmtu�flagsr'r'r-�test_net_if_stats�s�zTestNetAPIs.test_net_if_statszLINUX or BSD or MACOS specificcCsXtjdttjd�d��.}t��}|iks,J�|js6J�Wd�n1sJ0YdS)Nzpsutil._psutil_posix.net_if_mturSrF)r#rLr"r#ZENODEVr2r>rW)r9rYr3r'r'r-�test_net_if_stats_enodev�s
�z$TestNetAPIs.test_net_if_stats_enodevN)r^r_r`r$r�r�rr:r;rrYr[r_rrrr`r'r'r'r-r7s



E
�r7c@s�eZdZejjedd�dd��Zejjedd�dd��Zejje	dd�ejje
dd�dd	���Zejjedd�d
d��Z
dS)
�TestSensorsAPIsrrbcCs�t��}|��D]x\}}t|t�s&J�|D]\}t|jt�s>J�|jdurV|jdksVJ�|jdurn|jdksnJ�|jdur*|jdks*J�q*qdSr�)	r2�sensors_temperaturesrBr�r��labelr�high�critical)r9�tempsr��entries�entryr'r'r-�test_sensors_temperatures�s


z)TestSensorsAPIs.test_sensors_temperaturescCs�ddgi}tjd|d��X}tjdd�dd}|js8J�|jdksFJ�|jd	ksTJ�|jd
ksbJ�Wd�n1sv0YdS)NZcoretemp)rcgI@gN@g�Q@z'psutil._psplatform.sensors_temperaturesr�T)Z
fahrenheitrg�^@g�a@g�c@)r#rLr2rbrWrrdre)r9�drYrfr'r'r-�#test_sensors_temperatures_fahreneit�s
�
z3TestSensorsAPIs.test_sensors_temperatures_fahreneitz
no batterycCspt��}|jdksJ�|jdks$J�|jtjtjfvrF|jdks\J�n|jtjkr\|js\J�t|jt�slJ�dS)Nrr�)	r2Zsensors_batteryr�ZsecsleftZPOWER_TIME_UNKNOWNZPOWER_TIME_UNLIMITEDZ
power_pluggedr�r�)r9r3r'r'r-�test_sensors_battery�s�
z$TestSensorsAPIs.test_sensors_batterycCsht��}|��D]R\}}t|t�s&J�|D]6}t|jt�s>J�t|jttf�sRJ�|jdks*J�q*qdSr�)	r2Zsensors_fansrBr�r�rcrr�r)r9Zfansr�rgrhr'r'r-�test_sensors_fans�sz!TestSensorsAPIs.test_sensors_fansN)r^r_r`r$r�r�rrirkrrrlrrmr'r'r'r-ra�s


ra);�__doc__rIr�r#r0r�r�rrr?r�r{r2rrrrrrrr	r
rZpsutil._compatrr
rZpsutil.testsrrrrrrrrrrrrrrrrrr r!r"r#r$r%r&rar�r�r�rr7rar'r'r'r-�<module>sxHfX,#