HEX
Server: Apache
System: Linux zacp120.webway.host 4.18.0-553.50.1.lve.el8.x86_64 #1 SMP Thu Apr 17 19:10:24 UTC 2025 x86_64
User: govancoz (1003)
PHP: 8.3.26
Disabled: exec,system,passthru,shell_exec,proc_close,proc_open,dl,popen,show_source,posix_kill,posix_mkfifo,posix_getpwuid,posix_setpgid,posix_setsid,posix_setuid,posix_setgid,posix_seteuid,posix_setegid,posix_uname
Upload Files
File: //opt/osm/venv/lib64/python3.10/site-packages/psutil/tests/__pycache__/test_system.cpython-310.pyc
o

=i͊�@sTdZddlZddlZddlZddlZddlZddlZddlZddlZddl	Z	ddl
Z
ddlmZddl
Z
ddl
mZddl
mZddl
mZddl
mZddl
mZdd	l
mZdd
l
mZddl
mZddl
mZdd
l
mZddlmZddlmZddlmZddlmZddlmZddlmZddlm 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-Gd"d#�d#e*�Z.Gd$d%�d%e*�Z/Gd&d'�d'e*�Z0Gd(d)�d)e*�Z1Gd*d+�d+e*�Z2Gd,d-�d-e*�Z3Gd.d/�d/e*�Z4Gd0d1�d1e*�Z5dS)2zTests for system APIS.�N)�mock)�AIX)�BSD)�FREEBSD)�LINUX)�MACOS)�NETBSD)�OPENBSD)�POSIX)�SUNOS)�WINDOWS)�broadcast_addr)�AARCH64)�ASCII_FS)�
CI_TESTING)�GITHUB_ACTIONS)�GLOBAL_TIMEOUT)�HAS_BATTERY)�HAS_CPU_FREQ)�HAS_GETLOADAVG)�HAS_NET_IO_COUNTERS)�HAS_SENSORS_BATTERY)�HAS_SENSORS_FANS)�HAS_SENSORS_TEMPERATURES)�MACOS_12PLUS)�PYPY)�UNICODE_SUFFIX)�PsutilTestCase)�check_net_address)�pytest)�retry_on_failurec@s<eZdZdd�Zdd�Zdd�Zdd�Zd	d
�Zdd�Zd
S)�TestProcessItercCs~t��dd�t��D�vsJ�|��}|jdd�t��D�vs!J�t�|j�}|��|��|jdd�t��D�vs=J�dS)NcS�g|]}|j�qS���pid��.0�xr#r#�F/opt/osm/venv/lib/python3.10/site-packages/psutil/tests/test_system.py�
<listcomp><�z5TestProcessIter.test_pid_presence.<locals>.<listcomp>cSr"r#r$r&r#r#r)r*>r+cSr"r#r$r&r#r#r)r*Br+)	�os�getpid�psutil�process_iter�
spawn_subprocr%�Process�kill�wait��selfZsproc�pr#r#r)�test_pid_presence;s z!TestProcessIter.test_pid_presencecCs8tt���}t|dd�d�tt|�dd�d�ksJ�dS)NcS�|jS�Nr$�r(r#r#r)�<lambda>F�z4TestProcessIter.test_no_duplicates.<locals>.<lambda>)�keycSr8r9r$r:r#r#r)r;Gr<)�listr.r/�sorted�set)r5�lsr#r#r)�test_no_duplicatesDs�z"TestProcessIter.test_no_duplicatesc	Csvtt���td�D].}tjdt�t���d��ttjdgd��r$J�Wd�n1s.wYtj�	�q
dS�N�zpsutil.Process.as_dict�Zside_effect�	cpu_times��attrs)
r>r.r/�ranger�patchZ
NoSuchProcessr,r-�cache_clear�r5r(r#r#r)�test_emulate_nspJs���z TestProcessIter.test_emulate_nspc
Cs�tt���td�D]B}tjdt�t���d��'t	�
tj��ttjdgd��Wd�n1s3wYWd�n1sBwYtj��q
dSrC)r>r.r/rIrrJ�AccessDeniedr,r-r�raisesrKrLr#r#r)�test_emulate_access_deniedTs�����z*TestProcessIter.test_emulate_access_deniedcCs�tjdgd�D]}t|j���dgksJ�qtjdgd�D]}t|j���dgks+J�qt�t��ttjdgd��Wd�n1sEwYtj	dt�
dd�d��*}tjddgd�D]}|jddusiJ�|jddksrJ�q^|jsxJ�Wd�n1s�wYtj	dt�
dd�d��/}t�}tjddg|d	�D]}|jd|us�J�|jddks�J�q�|js�J�Wd�dS1s�wYdS)
Nr%rGZfooz$psutil._psplatform.Process.cpu_timesr�rErF)rHZad_value)
r.r/r>�info�keysrrO�
ValueErrorrrJrN�called�object)r5r6�m�flagr#r#r)�
test_attrs_s<�
��
�
�"�zTestProcessIter.test_attrscCs.tt���tjsJ�tj��tjrJ�dSr9)r>r.r/Z_pmaprK�r5r#r#r)�test_cache_clear{s

z TestProcessIter.test_cache_clearN)	�__name__�
__module__�__qualname__r7rBrMrPrYr[r#r#r#r)r!:s	
r!c@sTeZdZejjeo
edd�dd��Zejjeoedd�dd��Z	dd�Z
d	d
�ZdS)�TestProcessAPIsz,spawn_subproc() unreliable on PYPY + WINDOWS��reasoncs�fdd�}g�|��}|��}|��}dd�|||fD�}t�t��tj|dd�Wd�n1s5wYt�t��tj|dd�Wd�n1sQwYt��}tj|d	|d
�\}}t��|dksnJ�|rrJ�t|�dkszJ��r~J�|D]	}	t	|	d
�r�J�q�t
d�dd��}
|��|
||�\}}|jdd�|D�vs�J�t
r�|��jtjks�J�n	|��jdks�J��|jgks�J�|D]	}	t	|	d
�r�J�q�t
d�dd��}|��|��|||�\}}t��|j|j|jhks�J�|D]
}	t	|	d
��sJ�q�dS)Ncs��|j�dSr9)�appendr%)r6��pidsr#r)�callback�sz1TestProcessAPIs.test_wait_procs.<locals>.callbackcS�g|]}t�|j��qSr#�r.r1r%r&r#r#r)r*��z3TestProcessAPIs.test_wait_procs.<locals>.<listcomp>���)�timeout�)reg{�G�z�?�rjreg�?��
returncode�cS�<tj|d|d�\}}t|�dksJ�t|�dksJ�||fS)N���Q��?rlrkrD�r.�
wait_procs�len��procsre�gone�aliver#r#r)�test_1��
�z/TestProcessAPIs.test_wait_procs.<locals>.test_1cSr"r#r$r&r#r#r)r*�r+cSrp)Nrqrlrmrrrrur#r#r)�test_2�rzz/TestProcessAPIs.test_wait_procs.<locals>.test_2)r0rrOrTr.rs�	TypeError�timert�hasattrr �	terminater%r
�poprn�signal�SIGTERMr@)r5re�sproc1�sproc2�sproc3rv�trwrxr6ryr{r#rcr)�test_wait_procs�sP��

�zTestProcessAPIs.test_wait_procscCsL|��}|��}|��}dd�|||fD�}|D]}|��qt�|�dS)NcSrfr#rgr&r#r#r)r*�rhz>TestProcessAPIs.test_wait_procs_no_timeout.<locals>.<listcomp>)r0rr.rs)r5r�r�r�rvr6r#r#r)�test_wait_procs_no_timeout�s
z*TestProcessAPIs.test_wait_procs_no_timeoutcCsp|��}t�|j�sJ�t�|j�}|��|��t�|j�r"J�t�d�r)J�t�d�dt��vks6J�dS)Nrir)r0r.�
pid_existsr%r1r2r3rdr4r#r#r)�test_pid_exists�szTestProcessAPIs.test_pid_existsc	Cs�t��}|D]!}z	t�|�sJ�Wqty't�d�|t��vs%J�Yqwtt|�dt|�d�}|D]	}t�|�r@J�q7dS)Ng�������?i�:i�>)r.rdr��AssertionErrorr}�sleeprI�max)r5rdr%r#r#r)�test_pid_exists_2�s
��z!TestProcessAPIs.test_pid_exists_2N)r\r]r^r�mark�skipifrrr�r�r�r�r#r#r#r)r_�s�
;�
	
r_c@s>eZdZdd�Zejjeoe�	�dd�dd��Z
dd�Zd	S)
�TestMiscAPIscCs6t��}t|t�sJ�|dksJ�|t��ksJ�dS�Nr)r.Z	boot_time�
isinstance�floatr})r5Zbtr#r#r)�test_boot_time�szTestMiscAPIs.test_boot_time�unreliable on CIr`c	Cs�t��}|sJ�|D]h}|j|d��X|jsJ�t|jt�s J�t|jttd�f�s,J�|jdur=t|jttd�f�s=J�|j|j|j	dksJJ�t
j
�|j	�tsUt
r]|jdus\J�nt�|j�Wd�n1smwYq
dS)N)�user�)r.�users�subTest�namer��strZterminal�type�host�started�datetime�
fromtimestamprr	r%r1)r5r�r�r#r#r)�
test_users�s(

����zTestMiscAPIs.test_userscCsjgd�}|D]}ttt|�t�sJ|��qtjdkr�tjsJ�tjr$J�|�d�dt	j
��vr;tjs5J�|�d�njdt	j
��vrktj
sGJ�tjtjtjg�d�dksVJ�|�d	�|�d
�|�d�|�d�n:d
t	j
��vsydt	j
��vr�tjs~J�|�d�n!dt	j
��vr�tjs�J�|�d�ntjs�J�tjr�J�|�d�|D]}tt|�r�J|��q�dS)N)	r
rrrrr	rrr�posixr
�linuxrZbsdTrkrrr	r�sunos�solarisr�darwinrr)r��getattrr.�boolr,r�r
r�remove�sys�platform�lowerrrrr	r�countrr)r5�namesr�r#r#r)�test_os_constantssF





��





�


�zTestMiscAPIs.test_os_constantsN)r\r]r^r�rr�r�rr.r�r�r�r#r#r#r)r��s�
r�c@seZdZdd�Zdd�ZdS)�TestMemoryAPIscCst��}|jdks
J|��|jdksJ|��d|jkr$dks)J|��J|��|jdks2J|��|jdks;J|��|jD]@}t||�}|dkrPt	|t
�sPJ�|dkr~|dkset�|�d|�d��S||jkr~t�|�d|j�d|�d	|�d��Sq>dS)
Nr�d�percent�totalz < 0 (�)z > total (total=z, �=)
r.Zvirtual_memoryr��	availabler��used�free�_fieldsr�r��intr�fail)r5�memr��valuer#r#r)�test_virtual_memory8s&&


���z"TestMemoryAPIs.test_virtual_memorycCs�t��}|jdksJ�|jdksJ|��|jdksJ|��|jdkr,|jdks+J|��n	|jdks5J|��d|jkrCdksHJ|��J|��|jdksQJ|��|jdksZJ|��dS)N)r�r�r�r��sin�soutrr�)	r.Zswap_memoryr�r�r�r�r�r�r�)r5r�r#r#r)�test_swap_memoryKs	
&zTestMemoryAPIs.test_swap_memoryN)r\r]r^r�r�r#r#r#r)r�7sr�c@s�eZdZdd�Zdd�Zdd�Zdd�Zd	d
�Zdd�Zd
d�Z	e
jje
r'ep(edd�ed�dd���Zdd�Zdd�Zdd�Zdd�Zdd�Zdd�Zd d!�Ze
jjeoVed"d�e
jjed#d�d$d%���Ze
jjed#d�d&d'��Zd(S))�TestCpuAPIscCs�t��}|dus
J�|ttjdd��ksJ�|dksJ�tj�d�rCtd��}|��}Wd�n1s5wYd|vrEt	�
d�SdSdS)NT��percpurkz
/proc/cpuinfozphysical idz#cpuinfo doesn't include physical id)r.�	cpu_countrtrFr,�path�exists�open�readr�skip)r5�logical�fdZcpuinfo_datar#r#r)�test_cpu_count_logicalcs

�
�z"TestCpuAPIs.test_cpu_count_logicalcCsjt��}tjdd�}|durt�d�Str't��dd�dkr'|dus%J�dS|dks-J�||ks3J�dS)NF�r�zcpu_count_cores() is NonerD)�rkrk)r.r�rr�rr��getwindowsversion)r5r�Zcoresr#r#r)�test_cpu_count_coresos
z TestCpuAPIs.test_cpu_count_coresc	Cs�dD]L}tjd|d��}t��dusJ�|jsJ�Wd�n1s#wYtjd|d��}tjdd�dus:J�|js?J�Wd�n1sIwYqdS)N)rirNz$psutil._psplatform.cpu_count_logical��return_valuez"psutil._psplatform.cpu_count_coresFr�)rrJr.r�rU)r5�valrWr#r#r)�test_cpu_count_nonezs"������zTestCpuAPIs.test_cpu_count_nonecCsjd}t��}t|�|D]}t|t�sJ�|dksJ�||7}qtt|t|��d�dks/J�t|�dS)Nrr�r�)r.rF�sumr�r��round�absr�)r5r��times�cp_timer#r#r)�test_cpu_times�s
zTestCpuAPIs.test_cpu_timescCsRtt���}t��t}t��|kr$tt���}||krdSt��|kst�d�S)Nztime remained the same)r�r.rFr}rrr�)r5�t1Zstop_at�t2r#r#r)�test_cpu_times_time_increases�s�
z)TestCpuAPIs.test_cpu_times_time_increasescCs�tjdd�D]1}d}t|�|D]}t|t�sJ�|dksJ�||7}qtt|t|��d�dks3J�t|�qttjdd�d�ttjdd��ksLJ�dS)NTr�rr�r�F)	r.rFr�r�r�r�r�r�rt)r5r�r�r�r#r#r)�test_per_cpu_times�s


�zTestCpuAPIs.test_per_cpu_timescCs~tjdd�}t��t}	t��|krt�d�Stjdd�}t||�D]\}}t�|�t�|�}}||}|dkr=dSq#q
)NTr�rjg�������?)r.rFr}rrr��zipZ_cpu_busy_time)r5Ztot1Z	giveup_atZtot2r�r��
differencer#r#r)�test_per_cpu_times_2�s
��z TestCpuAPIs.test_per_cpu_times_2zunreliable on OPENBSD + CIr`roc	Cs�t��}tjdd�}|�dd�t|�D��}|jD]*}|j|||d��tt||�t||��dks4J�Wd�n1s>wYqdS)NTr�cSsg|]}t|��qSr#)r�)r'�numr#r#r)r*�sz9TestCpuAPIs.test_cpu_times_comparison.<locals>.<listcomp>)�field�base�per_cpurD)r.rF�_maker�r�r�r�r�)r5r�r�Z
summed_valuesr�r#r#r)�test_cpu_times_comparison�s

����z%TestCpuAPIs.test_cpu_times_comparisoncCslzt|t�sJ�|dksJ�|dt��ksJ�WdSty5}ztd�|t�|�t�|����d}~ww)Nr�gY@z
{}
last={}
new={})r�r�r.r�r��format�pprintZpformat)r5r�Zlast_retZnew_ret�errr#r#r)�_test_cpu_percent�s����zTestCpuAPIs._test_cpu_percentcCsttjdd�}td�D]}tjdd�}|�|||�|}q
t�t��tjdd�Wd�dS1s3wYdS�N���MbP?)�intervalr�ri)r.�cpu_percentrIr�rrOrT)r5�last�_�newr#r#r)�test_cpu_percent�s"�zTestCpuAPIs.test_cpu_percentcCs�tjddd�}t|�t��ksJ�td�D]}tjddd�}|D]	}|�|||�q |}qt�t��tjddd�Wd�dS1sEwYdS)Nr�T�r�r�r�ri)	r.r�rtr�rIr�rrOrT�r5r�r�r�r�r#r#r)�test_per_cpu_percents"�z TestCpuAPIs.test_per_cpu_percentcCs�tjdd�}td�D]}tjdd�}|D]	}|�|||�q|�t|�||�|}q
t�t��tjdd�Wd�dS1sAwYdSr�)r.�cpu_times_percentrIr�r�rrOrTr�r#r#r)�test_cpu_times_percents"�z"TestCpuAPIs.test_cpu_times_percentcCsztjddd�}t|�t��ksJ�td�D]%}tjddd�}|D]}|D]	}|�|||�q$|�t|�||�q |}qdS)Nr�Tr�r�)r.r�rtr�rIr�r�)r5r�r�r��cpur�r#r#r)�test_per_cpu_times_percents�z&TestCpuAPIs.test_per_cpu_times_percentcCs�tjdd�dd�tjdd�D�}tjd|d��tjdd�D]}|D]	}|�|dd�q#qWd�dS1s9wYdS)NTr�cSs*g|]}|�dd�tt|j��D���qS)cSsg|]}d�qS)rr#r&r#r#r)r**szNTestCpuAPIs.test_per_cpu_times_percent_negative.<locals>.<listcomp>.<listcomp>)r�rIrtr�r&r#r#r)r*)s��zCTestCpuAPIs.test_per_cpu_times_percent_negative.<locals>.<listcomp>zpsutil.cpu_timesr�)r.r�rFrrJr�)r5Z
zero_timesr�r�r#r#r)�#test_per_cpu_times_percent_negative&s
���"�z/TestCpuAPIs.test_per_cpu_times_percent_negativecCsTt��}|jdksJ�|jD]}t||�}|dksJ�ts'|dvr'|dks'J�qdS)N)�ctx_switches�
interruptsZsoft_interruptsZsyscallsr>r�r�)r.Z	cpu_statsr�r�r)r5�infosr�r�r#r#r)�test_cpu_stats2s

��zTestCpuAPIs.test_cpu_statszskipped due to #1892�
not supportedcCshdd�}tjdd�}tstr|st�d�S|sJ|��|tjdd�g�tr0t|�t��ks2J�dSdS)NcSsP|D]#}|jdksJ�|jD]}t||�}t|ttf�sJ�|dks$J�qqdS)N)�current�minr�r)r�r�r�r�r�)rA�ntr�r�r#r#r)�check_lsFs

��z+TestCpuAPIs.test_cpu_freq.<locals>.check_lsTr�z/returns empty list on FreeBSD and Linux aarch64F)	r.Zcpu_freqrrrr�rrtr�)r5rrAr#r#r)�
test_cpu_freqCs��zTestCpuAPIs.test_cpu_freqcCs@t��}t|�dksJ�|D]}t|t�sJ�|dksJ�qdS)Nrmr�)r.�
getloadavgrtr�r�)r5Zloadavg�loadr#r#r)�test_getloadavgZs�zTestCpuAPIs.test_getloadavgN)r\r]r^r�r�r�r�r�r�r�rr�r�rr	rr r�r�r�r�r�r�r�rrrrrr
r#r#r#r)r�bs2
!�	r�c@s�eZdZdd�Zejjedd�dd��Zdd�Z	d	d
�Z
ejjeo(ej
�d�dd�ejjeo4e��d
d�dd���Zdd�ZdS)�TestDiskAPIscCs4t�t���}|jdksJ�|jdksJ|��|jdks J|��|jdks)J|��|j|jks3J|��|j|jks=J|��d|jkrHdksNnJ|j��t	�t���}d}|j|jks_J�t
|j|j�|kskJ�tsyt
|j|j�|ksyJ�|��}t
�t��t�|�Wd�dS1s�wYdS)N)r�r�r�r�rr�iP)r.�
disk_usager,�getcwdr�r�r�r�r��shutilr�rZ
get_testfnrrO�FileNotFoundError)r5�usageZshutil_usageZ	tolerance�fnamer#r#r)�test_disk_usageds$""�zTestDiskAPIs.test_disk_usageznot an ASCII fsr`cCs:t�t��t�t�Wd�dS1swYdSr9)rrO�UnicodeEncodeErrorr.rrrZr#r#r)�test_disk_usage_unicode|s"�z$TestDiskAPIs.test_disk_usage_unicodecCst�d�dS)N�.)r.rrZr#r#r)�test_disk_usage_bytes�sz"TestDiskAPIs.test_disk_usage_bytescCsrdd�}tjdd�}|sJ�|D]1}||�trd|jvrqts,tj�|j�s+J|��n|jtj�|j	�s:J|��|j
sAJ|��qtjdd�}|sLJ�tjdd�D]K}||�ts�|j	r�zt�|j	�Wn,ty�}z t
r}tr}|jtjkr}WYd}~qR|jtjtjhvr��WYd}~qRd}~wwtj�|j	�s�J|��qRdd�}|t�}d	d
�tjdd�D�}||vs�J�dS)NcSsDt|jt�sJ�t|jt�sJ�t|jt�sJ�t|jt�s J�dSr9)r��devicer��
mountpoint�fstype�opts�rr#r#r)�check_ntuple�sz7TestDiskAPIs.test_disk_partitions.<locals>.check_ntupleF)�allZcdromTcSs8tj�|�}tj�|�stj�|�}tj�|�r|��Sr9)r,r��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>)r.Zdisk_partitionsrrr
r,r�r�rrr�stat�OSErrorrr�errnoZEIO�EPERM�EACCES�__file__)r5rrAZdiskr�r!�mountZmountsr#r#r)�test_disk_partitions�sF
����
�z!TestDiskAPIs.test_disk_partitionsz/proc/diskstatsz3/proc/diskstats not available on this linux versionr�cCsvdd�}tjdd�}|dusJd��||�tjdd�}t|�tt|��ks(J�|D]}|s2J|��|||�q*dS)NcSs�|d|jks	J�|d|jksJ�|d|jksJ�|d|jks$J�tsctsc|d|jks1J�|d|jks:J�trX|d|j	ksEJ�|d|j
ksNJ�|d	|jksWJ�ntrc|d|jkscJ�|j
D]
}t||�dkssJ|��qfdS)
NrrkrDrm��r���)Z
read_countZwrite_count�
read_bytes�write_bytesr	rZ	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)r.�disk_io_countersrtr@�r5r�retr=r#r#r)�test_disk_io_counters�s�z"TestDiskAPIs.test_disk_io_counterscC�ftjdid��"}tjdd�dusJ�tjdd�iksJ�|js!J�Wd�dS1s,wYdS)Nz#psutil._psplatform.disk_io_countersr�Fr0T)rrJr.r1rU�r5rWr#r#r)�test_disk_io_counters_no_disks�s�"�z+TestDiskAPIs.test_disk_io_counters_no_disksN)r\r]r^rrr�r�rrrr)rr,r�r�rr.r1r4r7r#r#r#r)rcs
:��rc@szeZdZejjedd�dd��Zejjedd�dd��Zdd�Z	d	d
�Z
dd�Zejjep2e
p2ed
d�dd��ZdS)�TestNetAPIsrr`cCsddd�}tjdd�}||�tjdd�}|gksJ�|D]}|s"J�t|t�s)J�|||�qdS)NcSs$|d|jks	J�|d|jksJ�|d|jksJ�|d|jks$J�|d|jks-J�|d|jks6J�|d|jks?J�|d|jksHJ�|jdksQJ|��|jdksZJ|��|jdkscJ|��|jdkslJ|��|jdksuJ|��|jdks~J|��|jdks�J|��|jdks�J|��dS)	NrrkrDrmr*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)r.�net_io_countersr�r�r2r#r#r)�test_net_io_counters�s�z TestNetAPIs.test_net_io_counterscCr5)Nz"psutil._psplatform.net_io_countersr�Fr9T)rrJr.r:rUr6r#r#r)�test_net_io_counters_no_nicss�"�z(TestNetAPIs.test_net_io_counters_no_nicsc
Cs�t��}|s
J|��t��}tjtjtjh}|��D�]\}}t|t	�s&J�t
t|��t
|�ks2J�|D]�}t|jt
�s>J�t|jt	�sFJ�t|jt	td�f�sRJ�t|jt	td�f�s^J�|j|vseJ�t|jtj�snJ�||jr�|jtjkr�t�|j��}|�|jdf�Wd�n1s�wYn9|jtjkr�t�|jdtjtjdtj�d}|\}	}
}}}
t�|	|
|��
}|�|
�Wd�n1s�wY|j|j|j|jfD]}|dur�|jtjkr�t||j�q�|jr�|jdus�J�n|j�r|jdu�sJ�|j�r!|j�r!|jtjtjhv�r!|jt|�k�s!J�q4qt�s,t�s,t�r?ttd��r;tjtjk�s=J�dSdSt �rMtjtj!k�sKJ�dSt"�rXtjdk�sZJ�dSdS)Nr�AF_LINKri)#r.�net_if_addrs�net_if_stats�socket�AF_INET�AF_INET6r=�itemsr�r�rtr@�familyr��address�netmaskr��	broadcast�enum�IntEnum�isup�bind�getaddrinfo�SOCK_STREAM�
AI_PASSIVEZptprr
rrrr~r�	AF_PACKETr)r5�nicsZ	nic_statsZfamiliesZnic�addrs�addr�srR�af�socktype�protoZ
_canonname�sa�ipr#r#r)�test_net_if_addrss�
�����������3��zTestNetAPIs.test_net_if_addrscCs�tr
dtjddddfg}ndg}tjd|d��/}t��dd}|js%J�tr/|jdks.J�n|jdks6J�Wd�dSWd�dS1sIwYdS)	N�em1z06:3d:29)rZriz06-3d-29NNNzpsutil._psplatform.net_if_addrsr�rz06:3d:29:00:00:00z06-3d-29-00-00-00)r
r.r=rrJr>rUrE)r5r3rWrRr#r#r)� test_net_if_addrs_mac_null_bytesas�
�"�z,TestNetAPIs.test_net_if_addrs_mac_null_bytesc
Cs�t��}|s
J|��tjtjtjf}|��D]8\}}t|t�s!J�|\}}}}}	t|t�s/J�||vs5J�||vs;J�|dksAJ�|dksGJ�t|	t�sNJ�qdSr�)	r.r?ZNIC_DUPLEX_FULLZNIC_DUPLEX_HALFZNIC_DUPLEX_UNKNOWNrCr�r�r�)
r5rPZall_duplexesr��statsrJZduplex�speedZmtu�flagsr#r#r)�test_net_if_statsss ��zTestNetAPIs.test_net_if_statszLINUX or BSD or MACOS specificcCsZtjdttjd�d��}t��}|iksJ�|jsJ�Wd�dS1s&wYdS)Nz"psutil._psplatform.cext.net_if_mturQrE)rrJr#r$ZENODEVr.r?rU)r5rWr3r#r#r)�test_net_if_stats_enodev�s
�"�z$TestNetAPIs.test_net_if_stats_enodevN)r\r]r^rr�r�rr;r<rYr[r_rrrr`r#r#r#r)r8�s


K�r8c@s�eZdZejjedd�dd��Zejjedd�dd��Zejje	dd�ejje
dd�dd	���Zejjedd�d
d��Z
dS)
�TestSensorsAPIsrr`cCs�t��}|��D]<\}}t|t�sJ�|D].}t|jt�sJ�|jdur+|jdks+J�|jdur7|jdks7J�|jdurC|jdksCJ�qqdSr�)	r.�sensors_temperaturesrCr�r��labelr�high�critical)r5�tempsr��entries�entryr#r#r)�test_sensors_temperatures�s


���z)TestSensorsAPIs.test_sensors_temperaturescCs�ddgi}tjd|d��-}tjdd�dd}|jsJ�|jdks#J�|jd	ks*J�|jd
ks1J�Wd�dS1s<wYdS)NZcoretemp)rcgI@gN@g�Q@z'psutil._psplatform.sensors_temperaturesr�T)Z
fahrenheitrg�^@g�a@g�c@)rrJr.rbrUrrdre)r5�drWrfr#r#r)�#test_sensors_temperatures_fahreneit�s
�
"�z3TestSensorsAPIs.test_sensors_temperatures_fahreneitz
no batterycCspt��}|jdksJ�|jdksJ�|jtjtjhvr#|jdks"J�n|jtjkr.|js.J�t|jt�s6J�dS)Nrr�)	r.Zsensors_batteryr�ZsecsleftZPOWER_TIME_UNKNOWNZPOWER_TIME_UNLIMITEDZ
power_pluggedr�r�)r5r3r#r#r)�test_sensors_battery�s�
z$TestSensorsAPIs.test_sensors_batterycCsdt��}|��D]'\}}t|t�sJ�|D]}t|jt�sJ�t|jt�s'J�|jdks.J�qqdSr�)r.Zsensors_fansrCr�r�rcrr�)r5Zfansr�rgrhr#r#r)�test_sensors_fans�s��z!TestSensorsAPIs.test_sensors_fansN)r\r]r^rr�r�rrirkrrrlrrmr#r#r#r)ra�s


ra)6�__doc__r�rHr$r,r�rr�r@r�r}Zunittestrr.rrrrrrr	r
rrZpsutil._commonr
Zpsutil.testsrrrrrrrrrrrrrrrrrrr r!r_r�r�r�rr8rar#r#r#r)�<module>snHfO+'