Viewing File: /opt/hc_python/lib/python3.12/site-packages/psutil/tests/__pycache__/test_system.cpython-312.pyc

�

h0i͊���dZddlZddlZddlZddlZddlZddlZddlZddlZddl	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#e*�Z.Gd$�d%e*�Z/Gd&�d'e*�Z0Gd(�d)e*�Z1Gd*�d+e*�Z2Gd,�d-e*�Z3Gd.�d/e*�Z4Gd0�d1e*�Z5y)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�0�eZdZd�Zd�Zd�Zd�Zd�Zd�Zy)�TestProcessIterc�,�tj�tj�D�cgc]}|j��c}vsJ�|j�}|jtj�D�cgc]}|j��c}vsJ�tj|j�}|j�|j�|jtj�D�cgc]}|j��c}vsJ�ycc}wcc}wcc}w�N)	�os�getpid�psutil�process_iter�pid�
spawn_subproc�Process�kill�wait)�self�x�sproc�ps    �I/opt/hc_python/lib64/python3.12/site-packages/psutil/tests/test_system.py�test_pid_presencez!TestProcessIter.test_pid_presence;s����y�y�{�f�.A�.A�.C�D�.C��q�u�u�.C�D�D�D�D��"�"�$���y�y�F�,?�,?�,A�B�,A�q�Q�U�U�,A�B�B�B�B��N�N�5�9�9�%��	����	�����y�y��0C�0C�0E� F�0E�1����0E� F�F�F�F��
E��B��!Gs�D�4D�-Dc��ttj��}t|d���tt	|�d���k(sJ�y)Nc��|jSr%�r*�r0s r3�<lambda>z4TestProcessIter.test_no_duplicates.<locals>.<lambda>Fs�����)�keyc��|jSr%r7r8s r3r9z4TestProcessIter.test_no_duplicates.<locals>.<lambda>Gs��1�5�5r:)�listr(r)�sorted�set)r/�lss  r3�test_no_duplicatesz"TestProcessIter.test_no_duplicatesDs>��
�&�%�%�'�
(���b�o�.�&���G��3
�
�	
�
r:c��ttj��td�D]�}t	j
dtjtj����5ttjdg���rJ�	ddd�tjj���y#1swY�*xYw�N�zpsutil.Process.as_dict��side_effect�	cpu_times��attrs)
r=r(r)�ranger�patch�
NoSuchProcessr&r'�cache_clear�r/r0s  r3�test_emulate_nspz TestProcessIter.test_emulate_nspJs����V�
 �
 �
"�#��q��A����(�"�0�0�����=�� �� 3� 3�;�-� H�I�I�I�I�	�

���+�+�-�
���s�(#B5�5B>	c���ttj��td�D]�}t	j
dtjtj����5tjtj�5ttjdg���ddd�ddd�tjj���y#1swY�2xYw#1swY�6xYwrC)r=r(r)rJrrK�AccessDeniedr&r'r �raisesrMrNs  r3�test_emulate_access_deniedz*TestProcessIter.test_emulate_access_deniedTs����V�
 �
 �
"�#��q��A����(�"�/�/��	�	��<���]�]�6�#6�#6�7���,�,�K�=�A�B�8�	�
���+�+�-��
8�7��	��s$�($C*�!C�-C*�C'�#C*�*C3	c��tjdg��D]+}t|jj	��dgk(r�+J�tjdg��D]+}t|jj	��dgk(r�+J�tjt�5ttjdg���ddd�tjdtjdd���5}tjddg��D]'}|jd�J�|jddk\r�'J�|jsJ�	ddd�tjdtjdd���5}t�}tjddg|�	�D])}|jd|usJ�|jddk\r�)J�|jsJ�	ddd�y#1swY��"xYw#1swY��xYw#1swYyxYw)
Nr*rH�fooz$psutil._psplatform.Process.cpu_timesr�rErG)rI�ad_value)
r(r)r=�info�keysr rR�
ValueErrorrrKrQ�called�object)r/r2�m�flags    r3�
test_attrszTestProcessIter.test_attrs_s����$�$�E�7�3�A�������
�&�5�'�1�1�1�4��$�$�E�7�3�A�������
�&�5�'�1�1�1�4�
�]�]�:�
&���$�$�E�7�3�4�'�
�Z�Z�2��+�+�A�r�2�
���(�(��{�/C�D���v�v�k�*�2�2�2��v�v�e�}��)�)�)�E��8�8�O�8�
��Z�Z�2��+�+�A�r�2�
���8�D��(�(��k�*�T����v�v�k�*�d�2�2�2��v�v�e�}��)�)�)�	�
�8�8�O�8�
�
�'�
&��
�
��
�
�s1�$!G%�8?G2�8G2�=AG>�
G>�%G/�2G;�>Hc���ttj��tjsJ�tjj	�tjrJ�yr%)r=r(r)�_pmaprM�r/s r3�test_cache_clearz TestProcessIter.test_cache_clear{s@���V�
 �
 �
"�#��|�|��|����'�'�)��<�<���<r:N)	�__name__�
__module__�__qualname__r4rArOrSr_rc�r:r3r#r#:s!��G�
�.�	.��8 r:r#c��eZdZejjexred��d��Zejjexred��d��Z	d�Z
d�Zy)�TestProcessAPIsz,spawn_subproc() unreliable on PYPY + WINDOWS��reasonc��
��
fd�}g�
|j�}|j�}|j�}|||fD�cgc]!}tj|j���#}}t	j
t�5tj|d��ddd�t	j
t�5tj|d��ddd�tj�}tj|d|��\}}	tj�|z
dksJ�|rJ�t|	�d	k(sJ��
rJ�|	D]}
t|
d
�s�J�td�d��}|j�|||�\}}	|j|D�cgc]}|j��c}vsJ�tr.|j�j t"j$k(s!J�|j�j dk(sJ��
|jgk(sJ�|	D]}
t|
d
�s�J�td�d
��}|j�|j�|||�\}}	t'�
�|j|j|jhk(sJ�|D]}
t|
d
�r�J�ycc}w#1swY��xYw#1swY���xYwcc}w)Nc�<���j|j�yr%)�appendr*)r2�pidss �r3�callbackz1TestProcessAPIs.test_wait_procs.<locals>.callback�s����K�K����r:���)�timeout�)rpg{�G�z�?�rrrpg�?��
returncode�c��tj|d|��\}}t|�dk(sJ�t|�dk(sJ�||fS)N���Q��?rtrsrD�r(�
wait_procs�len��procsrp�gone�alives    r3�test_1z/TestProcessAPIs.test_wait_procs.<locals>.test_1��I�� �+�+��t�h��K�D�%��t�9��>�!�>��u�:��?�"�?���;�r:c��tj|d|��\}}t|�dk(sJ�t|�dk(sJ�||fS)Nryrtrurrzr}s    r3�test_2z/TestProcessAPIs.test_wait_procs.<locals>.test_2�r�r:)r+r(r,r*r rRrZr{�	TypeError�timer|�hasattrr!�	terminater�poprv�signal�SIGTERMr?)r/rp�sproc1�sproc2�sproc3r0r~�trr�r2r�r�ros             @r3�test_wait_procszTestProcessAPIs.test_wait_procs�sz���
	����#�#�%���#�#�%���#�#�%��17���0H�I�0H�1�������&�0H��I�
�]�]�:�
&����e�R�0�'�
�]�]�9�
%����e�a�0�&��I�I�K���'�'��t�h�O���e��y�y�{�Q���$�$�$���x��5�z�Q������x��A��q�,�/�/�/��
�"�	�	�
�	�	�����U�H�-���e��z�z�T�2�T��a�e�e�T�2�2�2�2���8�8�:�(�(�V�^�^�O�;�;�;��8�8�:�(�(�A�-�-�-���
�
�|�#�#�#��A��q�,�/�/�/��
�"�	�	�
�	�	���������U�H�-���e��4�y�V�Z�Z����V�Z�Z�@�@�@�@��A��1�l�+�+�+���aJ�
&�
&��
%�
%��.3s$�&J%�J*�:J7�K�*J4�7Kc�$�|j�}|j�}|j�}|||fD�cgc]!}tj|j���#}}|D]}|j	��tj
|�ycc}wr%)r+r(r,r*r�r{)r/r�r�r�r0r~r2s       r3�test_wait_procs_no_timeoutz*TestProcessAPIs.test_wait_procs_no_timeout�s��
�#�#�%���#�#�%���#�#�%��17���0H�I�0H�1�������&�0H��I��A�
�K�K�M�����%� ��Js�&B
c��|j�}tj|j�sJ�tj|j�}|j�|j
�tj|j�rJ�tjd�rJ�tjd�dtj�vk(sJ�y)Nrqr)r+r(�
pid_existsr*r,r-r.ro)r/r1r2s   r3�test_pid_existszTestProcessAPIs.test_pid_exists�s����"�"�$��� � ����+�+�+��N�N�5�9�9�%��	����	�����$�$�U�Y�Y�/�/�/��$�$�R�(�(�(�� � ��#��V�[�[�]�(:�;�;�;r:c�f�tj�}|D]}	tj|�sJ��t
t|�dzt|�dz�}|D]}tj|�s�J�y#t$r0t	j
d�|tj�vsJ�Y��wxYw)Ng�������?i�:i�>)r(ror��AssertionErrorr��sleeprJ�max)r/ror*s   r3�test_pid_exists_2z!TestProcessAPIs.test_pid_exists_2�s����{�{�}���C�
0��(�(��-�-�-���S��Y��&��D�	�E�(9�:���C��(�(��-�-�-���
"�
0��
�
�3���&�+�+�-�/�/�/�	
0�s�A7�76B0�/B0N)rdrerfr �mark�skipifrr
r�r�r�r�rgr:r3riri�sq���[�[������=���9,�	�9,�v�[�[������=���!�	�!�<�.r:ric��eZdZd�Zej
j
exrej�d��d��Z
d�Zy)�TestMiscAPIsc��tj�}t|t�sJ�|dkDsJ�|t	j�ksJ�y�Nr)r(�	boot_time�
isinstance�floatr�)r/�bts  r3�test_boot_timezTestMiscAPIs.test_boot_time�s?��
�
�
�
���"�e�$�$�$��A�v�
�v��D�I�I�K���r:�unreliable on CIrjc	��tj�}|sJ�|D�]-}|j|��5|jsJ�t	|jt
�sJ�t	|jt
td�f�sJ�|j�'t	|jt
td�f�sJ�|j|j|jdkDsJ�tjj|j�tstr|j�!J�tj|j�ddd���0y#1swY��<xYw)N)�user�)r(�users�subTest�namer��str�terminal�type�host�started�datetime�
fromtimestampr
r
r*r,)r/r�r�s   r3�
test_userszTestMiscAPIs.test_users�s����������u��D����4��(��y�y� �y�!�$�)�)�S�1�1�1�!�$�-�-�#�t�D�z�1B�C�C�C��9�9�(�%�d�i�i�#�t�D�z�1B�C�C�C��
�
��	�	��|�|�c�)�)�)��!�!�/�/����=��g��8�8�+�+�+��N�N�4�8�8�,�)�(��(�(�s�DE
�
E	c���gd�}|D]'}ttt|�t�r�"J|��tj
dk(�r�tjsJ�tjrJ�|jd�dtjj�vr%tjsJ�|jd��n�dtjj�vr�tjsJ�tjtjtj gj#d�dk(sJ�|jd	�|jd
�|jd�|jd�n�d
tjj�vs dtjj�vr$tj$sJ�|jd�nydtjj�vrYtj&sJ�|jd�n5tjsJ�tjrJ�|jd�|D]}tt|�s�J|��y)N)	rr
rrrr
r	rr�posixr�linuxr�bsdTrsrrr
r	�sunos�solarisr�darwinrr
)r��getattrr(�boolr&r�rr
�remove�sys�platform�lowerrrrr
r	�countrr)r/�namesr�s   r3�test_os_constantszTestMiscAPIs.test_os_constantss���

���D��g�f�d�3�T�:�@�D�@�:���7�7�g���<�<��<��~�~�%�%��L�L��!��#�,�,�,�,�.�.��|�|�#�|����W�%��#�,�,�,�,�.�.��z�z�!�z��������
�
�F�L�L����������U�#����Y�'����Y�'����X�&��3�<�<�-�-�/�/����� 2� 2� 4�4��|�|�#�|����W�%��S�\�\�/�/�1�1��|�|�#�|����W�%��>�>�!�>��|�|�#�#��L�L��#��D��v�t�,�2�d�2�,�r:N)rdrerfr�r r�r�rr(r�r�r�rgr:r3r�r��sJ�� ��[�[����)�<�6�<�<�>�)�2D���-��-�&/3r:r�c��eZdZd�Zd�Zy)�TestMemoryAPIsc�T�tj�}|jdkDsJ|��|jdkDsJ|��d|jcxkrdksJ|��J|��|j
dkDsJ|��|jdk\sJ|��|jD]�}t||�}|dk7rt|t�sJ�|dk7s�,|dk\stj|�d|�d��cS||jkDs�^tj|�d|j�d|�d	|�d��cSy)
Nr�d�percent�totalz < 0 (�)z > total (total=z, �=)
r(�virtual_memoryr��	availabler��used�free�_fieldsr�r��intr �fail)r/�memr��values    r3�test_virtual_memoryz"TestMemoryAPIs.test_virtual_memory8s'���#�#�%���y�y�1�}�!�c�!�}��}�}�q� �%�#�%� ��C�K�K�&�3�&�+��+�&�+��+�&��x�x�!�|� �S� �|��x�x�1�}�!�c�!�}��K�K�D��C��&�E��y� �!�%��-�-�-��w����z�!�;�;�$����w�a�'@�A�A��3�9�9�$�!�;�;��(�"2�3�9�9�+�R��v�Q�u�g�Q�O��� r:c��tj�}|jdk(sJ�|jdk\sJ|��|jdk\sJ|��|jdkDr|j
dkDsJ|��|j
dk(sJ|��d|jcxkrdksJ|��J|��|jdk\sJ|��|jdk\sJ|��y)N)r�r�r�r��sin�soutrr�)	r(�swap_memoryr�r�r�r�r�r�r�)r/r�s  r3�test_swap_memoryzTestMemoryAPIs.test_swap_memoryKs���� � �"���{�{�
�
�	
�
��y�y�A�~�"�s�"�~��x�x�1�}�!�c�!�}��9�9�q�=��8�8�a�<�$��$�<��8�8�q�=�%�#�%�=��C�K�K�&�3�&�+��+�&�+��+�&��w�w�!�|� �S� �|��x�x�1�}�!�c�!�}r:N)rdrerfr�r�rgr:r3r�r�7s���&"r:r�c��eZdZd�Zd�Zd�Zd�Zd�Zd�Zd�Z	e
jje
xrexsed�	�ed
�d���Zd�Zd
�Zd�Zd�Zd�Zd�Zd�Ze
jjexred�	�e
jjed�	�d���Ze
jjed�	�d��Zy)�TestCpuAPIsc�\�tj�}|�J�|ttjd���k(sJ�|dk\sJ�tj
j
d�r>td�5}|j�}ddd�dvrtjd�Syy#1swY�$xYw)NT��percpursz
/proc/cpuinfozphysical idz#cpuinfo doesn't include physical id)r(�	cpu_countr|rGr&�path�exists�open�readr �skip)r/�logical�fd�cpuinfo_datas    r3�test_cpu_count_logicalz"TestCpuAPIs.test_cpu_count_logicalcs����"�"�$���"�"�"��#�f�.�.�d�;�<�<�<�<��!�|��|�
�7�7�>�>�/�*��o�&�"�!�w�w�y��'��L�0��{�{�#H�I�I�1�+�&�&�s�.B"�"B+c���tj�}tjd��}|�tjd�Strtj�dddkr|�J�y|dk\sJ�||k\sJ�y)NF�r�zcpu_count_cores() is NonerD)�rsrs)r(r�r r�r
r��getwindowsversion)r/r��coress   r3�test_cpu_count_coresz TestCpuAPIs.test_cpu_count_coresoss���"�"�$��� � ��/���=��;�;�:�;�;��s�,�,�.�r��2�f�<��=� �=��A�:��:��e�#�#�#r:c�Z�dD]�}tjd|��5}tj��J�|jsJ�	ddd�tjd|��5}tjd���J�|jsJ�	ddd���y#1swY�SxYw#1swY��xYw)N)rqrNz$psutil._psplatform.cpu_count_logical��return_valuez"psutil._psplatform.cpu_count_coresFr�)rrKr(r�r[)r/�valr]s   r3�test_cpu_count_nonezTestCpuAPIs.test_cpu_count_nonezs��� �C����6�S����'�'�)�1�1�1��x�x��x�	�
���4�3����'�'��6�>�>�>��x�x��x�	��
!����
��s�%B�"'B!�B	�!B*	c���d}tj�}t|�|D] }t|t�sJ�|dk\sJ�||z
}�"tt
|t|�z
�d�dk(sJ�t|�y)Nrr�r�)r(rG�sumr�r��round�absr�)r/r��times�cp_times    r3�test_cpu_timeszTestCpuAPIs.test_cpu_times�sx����� � �"���E�
��G��g�u�-�-�-��c�>�!�>��W��E���S���U��+�,�a�0�A�5�5�5��E�
r:c�@�ttj��}tj�tz}tj�|kr;ttj��}||kDrytj�|kr�;tjd�S)Nztime remained the same)r�r(rGr�rr r�)r/�t1�stop_at�t2s    r3�test_cpu_times_time_increasesz)TestCpuAPIs.test_cpu_times_time_increases�sr��
��!�!�#�
$���)�)�+��.���i�i�k�G�#��V�%�%�'�(�B��B�w���i�i�k�G�#��{�{�3�4�4r:c	��tjd��D]e}d}t|�|D] }t|t�sJ�|dk\sJ�||z
}�"tt
|t|�z
�d�dk(sJ�t|��gttjd��d�ttjd���k(sJ�y)NTr�rr�r�F)	r(rGr�r�r�r�r�r�r|)r/r�r�r�s    r3�test_per_cpu_timeszTestCpuAPIs.test_per_cpu_times�s����%�%�T�2�E��E���J� ��!�'�5�1�1�1��#�~�%�~��� ��!���U�S��Z�/�0�!�4��9�9�9���J�3��6�#�#�4�0��3�4�����E�*�9
�
�	
�
r:c��tjd��}tj�tz}	tj�|k\rt	j
d�Stjd��}t
||�D];\}}tj|�tj|�}}||z
}|dk\s�;y��)NTr�rrg�������?)r(rGr�rr r��zip�_cpu_busy_time)r/�tot1�	giveup_at�tot2r�r�
differences       r3�test_per_cpu_times_2z TestCpuAPIs.test_per_cpu_times_2�s������t�,���I�I�K�.�0�	���y�y�{�i�'��{�{�9�-�-��#�#�4�0�D��d�D�/���B��.�.�r�2�F�4I�4I�"�4M�B���"�W�
���%��	*�	r:zunreliable on OPENBSD + CIrjrwc	��tj�}tjd��}|jt|�D�cgc]
}t	|���c}�}|j
D]G}|j
|||��5tt||�t||�z
�dksJ�	ddd��Iycc}w#1swY�YxYw)NTr�)�field�base�per_cpurD)	r(rG�_makerr�r�r�r�r�)r/rr�num�
summed_valuesr
s      r3�test_cpu_times_comparisonz%TestCpuAPIs.test_cpu_times_comparison�s������!���"�"�$�/���
�
��W�
�#F�
��C��H�
�#F�G�
��\�\�E����E��g��F����e�,�w�}�e�/L�L�M�����G�F�"��$G�F�F�s�B0�<(B5�5B>	c
��	t|t�sJ�|dk\sJ�|dtj�zksJ�y#t$rG}t	dj|t
j|�t
j|����d}~wwxYw)Nr�gY@z
{}
last={}
new={})r�r�r(r�r��format�pprint�pformat)r/r��last_ret�new_ret�errs     r3�_test_cpu_percentzTestCpuAPIs._test_cpu_percent�s���		��g�u�-�-�-��c�>�!�>��e�f�&6�&6�&8�8�8�8�8���	� �'�.�.������1�6�>�>�'�3J���
��	�s�58�	B�AB�Bc�.�tjd��}td�D]-}tjd��}|j|||�|}�/t	j
t�5tjd��ddd�y#1swYyxYw�N���MbP?)�intervalr�rq)r(�cpu_percentrJrr rRrZ)r/�last�_�news    r3�test_cpu_percentzTestCpuAPIs.test_cpu_percent�so���!�!�5�1���s��A��$�$�d�3�C��"�"�3��c�2��D���]�]�:�
&�����+�'�
&�
&�s�+B�Bc��tjdd��}t|�tj�k(sJ�t	d�D]5}tjdd��}|D]}|j|||��|}�7t
jt�5tjdd��ddd�y#1swYyxYw)NrT�rr�r�rq)	r(r r|r�rJrr rRrZ�r/r!r"r#r�s     r3�test_per_cpu_percentz TestCpuAPIs.test_per_cpu_percents����!�!�5��>���4�y�F�,�,�.�.�.�.��s��A��$�$�d�4�@�C����&�&�w��c�:���D�	�
�]�]�:�
&�����4�8�'�
&�
&�s�B7�7Cc�t�tjd��}td�D]P}tjd��}|D]}|j|||��|jt	|�||�|}�Rtjt�5tjd��ddd�y#1swYyxYwr)r(�cpu_times_percentrJrr�r rRrZr's     r3�test_cpu_times_percentz"TestCpuAPIs.test_cpu_times_percents����'�'��7���s��A��*�*�D�9�C����&�&�w��c�:���"�"�3�s�8�T�3�7��D���]�]�:�
&��$�$�b�1�'�
&�
&�s�B.�.B7c�B�tjdd��}t|�tj�k(sJ�t	d�D]X}tjdd��}|D]8}|D]}|j|||��|jt
|�||��:|}�Zy)NrTr&r�)r(r*r|r�rJrr�)r/r!r"r#�cpur�s      r3�test_per_cpu_times_percentz&TestCpuAPIs.test_per_cpu_times_percents����'�'��t�D���4�y�F�,�,�.�.�.�.��s��A��*�*�D��F�C���"�G��*�*�7�D�#�>� #��&�&�s�3�x��s�;���D�
r:c
��tjd��tjd��D�cgc]=}|jt	t|j��D�cgc]}d��c}���?}}tjd|��5tjd��D]}|D]}|j|dd���	ddd�ycc}wcc}w#1swYyxYw)NTr�rzpsutil.cpu_timesr�)
r(r*rGrrJr|r�rrKr)r/r0�
zero_timesr-r�s     r3�#test_per_cpu_times_percent_negativez/TestCpuAPIs.test_per_cpu_times_percent_negative&s���� � ��-��%�%�T�2�
�2��
�G�G��c�!�)�)�n� 5�6� 5�1�Q� 5�6�7�2�	�
��Z�Z�*��
D��/�/�t�<��"�G��*�*�7�D�$�?� #�=�E�
D��7��
�E�
D�s#�0C�	C
�(	C�
6C�
C�Cc��tj�}|jdk(sJ�|jD](}t||�}|dk\sJ�tr�|dvs�"|dkDr�(J�y)N)�ctx_switches�
interrupts�soft_interrupts�syscallsr>r4r3)r(�	cpu_statsr�r�r)r/�infosr�r�s    r3�test_cpu_statszTestCpuAPIs.test_cpu_stats2sj��� � �"���}�}�!
�
�	
�
��M�M�D��E�4�(�E��A�:��:��4�#A�A��q�y� �y�"r:zskipped due to #1892�
not supportedc��d�}tjd��}tstr|st	j
d�S|sJ|��|tjd��g�tr#t|�tj�k(sJ�yy)Nc��|D]O}|jdk(sJ�|jD]-}t||�}t|ttf�sJ�|dk\r�-J��Qy)N)�current�minr�r)r�r�r�r�r�)r@�ntr�r�s    r3�check_lsz+TestCpuAPIs.test_cpu_freq.<locals>.check_lsFsY�����z�z�%>�>�>�>��J�J�D�#�B��-�E�%�e�c�5�\�:�:�:� �A�:�%�:�'�r:Tr�z/returns empty list on FreeBSD and Linux aarch64F)	r(�cpu_freqrrr r�rr|r�)r/r@r@s   r3�
test_cpu_freqzTestCpuAPIs.test_cpu_freqCsv��	&��_�_�D�
)���w���;�;�A��
��
�2�
�r��&�/�/��/�0�1���r�7�f�.�.�0�0�0�0�r:c��tj�}t|�dk(sJ�|D]}t|t�sJ�|dk\r�J�y)Nrur�)r(�
getloadavgr|r�r�)r/�loadavg�loads   r3�test_getloadavgzTestCpuAPIs.test_getloadavgZsH���#�#�%���7�|�q� � � ��D��d�E�*�*�*��3�;��;�r:N)rdrerfr�r�r�r�rrrr r�r�rr
rr!rrr$r(r+r.r1r9rrrBrrGrgr:r3r�r�bs
��
J�	$� �
�85�

�B
 ��[�[���	�	��)�E�2N����b������
�,�	9�	2�	�
@�!�"�[�[����)�'�2H��I��[�[���L�(���A�1�B�J�1�*�[�[���N�*�?��C��D�r:r�c�V�eZdZd�Zej
j
ed��d��Zd�Z	d�Z
ej
j
exrejjd�d��ej
j
exrej"�d	��d
���Zd�Zy)
�TestDiskAPIsc��tjtj��}|jdk(sJ�|j
dkDsJ|��|jdkDsJ|��|jdkDsJ|��|j
|jkDsJ|��|j
|jkDsJ|��d|jcxkrdksnJ|j��tjtj��}d}|j
|j
k(sJ�t|j|jz
�|ksJ�ts't|j|jz
�|ksJ�|j�}tjt�5tj|�ddd�y#1swYyxYw)N)r�r�r�r�rr�iP)r(�
disk_usager&�getcwdr�r�r�r�r��shutilr�r�
get_testfnr rR�FileNotFoundError)r/�usage�shutil_usage�	tolerance�fnames     r3�test_disk_usagezTestDiskAPIs.test_disk_usagedso���!�!�"�)�)�+�.���}�}� D�D�D�D��{�{�Q��%��%���z�z�A�~�$�u�$�~��z�z�A�~�$�u�$�~��{�{�U�Z�Z�'�.��.�'��{�{�U�Z�Z�'�.��.�'��E�M�M�(�S�(�7�%�-�-�7�(��(�(�����5��#�	��{�{�l�0�0�0�0�0��5�:�:�� 1� 1�1�2�Y�>�>�>���u�z�z�L�$5�$5�5�6��B�B�B����!��
�]�]�,�
-����e�$�.�
-�
-�s�$G�Gznot an ASCII fsrjc��tjt�5tjt
�ddd�y#1swYyxYwr%)r rR�UnicodeEncodeErrorr(rKrrbs r3�test_disk_usage_unicodez$TestDiskAPIs.test_disk_usage_unicode|s+���]�]�-�
.����n�-�/�
.�
.�s	�=�Ac�.�tjd�y)N�.)r(rKrbs r3�test_disk_usage_bytesz"TestDiskAPIs.test_disk_usage_bytes�s�����$�r:c�z�d�}tjd��}|sJ�|D]�}||�trd|jvr� ts0t
jj|j�sJ|��|jt
jj|j�sJ|��|jr��J|��tjd��}|sJ�tjd��D]n}||�tr�|js�	tj|j�t
jj|j�r�iJ|��d�}|t&�}tjd��D�cgc](}|jr|jj)���*}}||vsJ�y#t$rg}tr)tr#|jtj k(rYd}~��|jtj"tj$hvr�Yd}~��9d}~wwxYwcc}w)Nc���t|jt�sJ�t|jt�sJ�t|jt�sJ�t|j
t�sJ�yr%)r��devicer��
mountpoint�fstype�opts�r?s r3�check_ntuplez7TestDiskAPIs.test_disk_partitions.<locals>.check_ntuple�sR���b�i�i��-�-�-��b�m�m�S�1�1�1��b�i�i��-�-�-��b�g�g�s�+�+�+r:F)�all�cdromTc��tjj|�}tjj|�s?tjj	|�}tjj|�s�?|j�Sr%)r&r��abspath�ismount�dirnamer�)r�s r3�find_mount_pointz;TestDiskAPIs.test_disk_partitions.<locals>.find_mount_point�sT���7�7�?�?�4�(�D��g�g�o�o�d�+��w�w���t�,���g�g�o�o�d�+��:�:�<�r:)r(�disk_partitionsr
r`rr&r�r�r]r^r_�stat�OSErrorrr�errno�EIO�EPERM�EACCES�__file__r�)	r/rbr@�diskrri�mountr0�mountss	         r3�test_disk_partitionsz!TestDiskAPIs.test_disk_partitions�s���	,��
#�
#��
.���	�r��D�����7�d�i�i�/����w�w�~�~�d�k�k�2�8�D�8�2�����7�7�>�>�$�/�/�2�8�D�8�2��;�;�$��$�;���
#�
#��
-���	�r��*�*�t�4�D�����t���
A��G�G�D�O�O�,��7�7�>�>�$�/�/�:�@�D�@�:�5�"	 �!��*���+�+��5�
�5���|�|�
�L�L��� �5�	�
�
������1��%�%�C�I�I����4J� ��y�y����e�l�l�(C�C��D����&
s$�G�-H8�	H5�)H0�=-H0�0H5z/proc/diskstatsz3/proc/diskstats not available on this linux versionr�c��d�}tjd��}|�Jd��||�tjd��}t|�tt|��k(sJ�|D]}|sJ|��|||��y)Nc��|d|jk(sJ�|d|jk(sJ�|d|jk(sJ�|d|jk(sJ�ts�t
s�|d|jk(sJ�|d|jk(sJ�tr<|d|jk(sJ�|d|jk(sJ�|d	|jk(sJ�tr|d|jk(sJ�|jD]}t||�dk\r�J|��y)
NrrsrDru��r���)�
read_count�write_count�
read_bytes�write_bytesr
r	�	read_time�
write_timer�read_merged_count�write_merged_count�	busy_timerr�r�)r?r�s  r3rbz8TestDiskAPIs.test_disk_io_counters.<locals>.check_ntuple�s���a�5�B�M�M�)�)�)��a�5�B�N�N�*�*�*��a�5�B�M�M�)�)�)��a�5�B�N�N�*�*�*��v��!�u����,�,�,��!�u��
�
�-�-�-���a�5�B�$8�$8�8�8�8��a�5�B�$9�$9�9�9�9��a�5�B�L�L�0�0�0���a�5�B�L�L�0�0�0��
�
���r�4�(�A�-�1�r�1�-�#r:F��perdiskzno disks on this system?T)r(�disk_io_countersr|r?�r/rb�retr;s    r3�test_disk_io_countersz"TestDiskAPIs.test_disk_io_counters�s|��	2�"�%�%�e�4����:� :�:���S���%�%�d�3���3�x�3�s�3�x�=�(�(�(��C��O��O�3���S��"�r:c���tjdi��5}tjd���J�tjd��ik(sJ�|jsJ�	ddd�y#1swYyxYw)Nz#psutil._psplatform.disk_io_countersr�Fr�T)rrKr(r�r[�r/r]s  r3�test_disk_io_counters_no_disksz+TestDiskAPIs.test_disk_io_counters_no_disks�sc���Z�Z�1��
�
��*�*�5�9�A�A�A��*�*�4�8�B�>�>�>��8�8�O�8�
�
�
���AA$�$A-N)rdrerfrTr r�r�rrWrZrurr&r�r�rr(r�r�r�rgr:r3rIrIcs���%�0�[�[���H��->��?�.�@�.�
 �8�t�[�[���
�7�b�g�g�n�n�%6�7�7�D����[�[����4�2�6�2�2�4�4�=O���#��	�#�8r:rIc��eZdZejjed��d��Zejjed��d��Zd�Z	d�Z
d�Zejjexse
xsed��d	��Zy
)�TestNetAPIsr:rjc���d�}tjd��}||�tjd��}|gk7sJ�|D]#}|sJ�t|t�sJ�|||��%y)Nc��|d|jk(sJ�|d|jk(sJ�|d|jk(sJ�|d|jk(sJ�|d|jk(sJ�|d|j
k(sJ�|d|jk(sJ�|d|jk(sJ�|jdk\sJ|��|jdk\sJ|��|jdk\sJ|��|jdk\sJ|��|jdk\sJ|��|j
dk\sJ|��|jdk\sJ|��|jdk\sJ|��y)	NrrsrDrurxryr�rz)�
bytes_sent�
bytes_recv�packets_sent�packets_recv�errin�errout�dropin�dropoutras r3rbz6TestNetAPIs.test_net_io_counters.<locals>.check_ntuple�sb���a�5�B�M�M�)�)�)��a�5�B�M�M�)�)�)��a�5�B�O�O�+�+�+��a�5�B�O�O�+�+�+��a�5�B�H�H�$�$�$��a�5�B�I�I�%�%�%��a�5�B�I�I�%�%�%��a�5�B�J�J�&�&�&��=�=�A�%�)�r�)�%��=�=�A�%�)�r�)�%��?�?�a�'�+��+�'��?�?�a�'�+��+�'��8�8�q�=�$�"�$�=��9�9��>�%�2�%�>��9�9��>�%�2�%�>��:�:��?�&�B�&�?r:F��pernicT)r(�net_io_countersr�r�r�s    r3�test_net_io_countersz TestNetAPIs.test_net_io_counters�sj��	'�$�$�$�E�2���S���$�$�D�1���b�y��y��C��J�3��c�3�'�'�'���S��"�r:c���tjdi��5}tjd���J�tjd��ik(sJ�|jsJ�	ddd�y#1swYyxYw)Nz"psutil._psplatform.net_io_countersr�Fr�T)rrKr(r�r[r�s  r3�test_net_io_counters_no_nicsz(TestNetAPIs.test_net_io_counters_no_nicssc���Z�Z�0�r�
�
��)�)��7�?�?�?��)�)��6�"�<�<�<��8�8�O�8�
�
�
�r�c
�p�tj�}|sJ|��tj�}tjtj
tjh}|j�D�]\}}t|t�sJ�tt|��t|�k(sJ�|D�]�}t|jt�sJ�t|jt�sJ�t|jtt!d�f�sJ�t|j"tt!d�f�sJ�|j|vsJ�t|jt$j&�sJ�||j(�r
|jtjk(rFtj|j�5}|j+|jdf�ddd�n�|jtj
k(r�tj,|jdtj
tj.dtj0�d}|\}	}
}}}
tj|	|
|�5}|j+|
�ddd�|j|j|j"|j2fD]9}|��|jtj
k7s�$t5||j��;|j"r|j2�J�|j2r|j"�J�|j"s���|js���|jtjtj
hvs���|j"t7|�k(r���J���t8st:st<r5t?td�r$tjtjk(sJ�yyt@r$tjtjBk(sJ�ytDrtjdk(sJ�yy#1swY���xYw#1swY���xYw)Nr�AF_LINKrq)#r(�net_if_addrs�net_if_stats�socket�AF_INET�AF_INET6r��itemsr�r�r|r?�familyr��address�netmaskr��	broadcast�enum�IntEnum�isup�bind�getaddrinfo�SOCK_STREAM�
AI_PASSIVE�ptprrrrrr�r�	AF_PACKETr
)r/�nics�	nic_stats�families�nic�addrs�addr�srX�af�socktype�proto�
_canonname�sa�ips               r3�test_net_if_addrszTestNetAPIs.test_net_if_addrss'���"�"�$����T��t��'�'�)�	��N�N�F�O�O�V�^�^�D���*�*�,�J�C���c�3�'�'�'��s�5�z�?�c�%�j�0�0�0���!�$�+�+�s�3�3�3�!�$�,�,��4�4�4�!�$�,�,��d�4�j�0A�B�B�B�!�$�.�.�3��T�
�2C�D�D�D��{�{�h�.�.�.�!�$�+�+�t�|�|�<�<�<��S�>�&�&��{�{�f�n�n�4�#�]�]�4�;�;�7�1��F�F�D�L�L�!�#4�5�8�7�������7�%�1�1� �L�L��"�O�O�"�.�.��"�-�-�
 �� ��?C�;��H�e�Z��#�]�]�2�x��?�1��F�F�2�J�@��L�L��L�L��N�N��H�H�	�B��~� �;�;�&�/�/�9�-�b�$�+�+�>���>�>��8�8�+�+�+��X�X��>�>�1�1�1��N�N�������������'H�H��>�>�^�D�-A�A�A�A�c�'�l�%�5��v�y�)��~�~����7�7�7�*�
��>�>�V�%5�%5�5�5�5�
��>�>�R�'�'�'��[8�7��@�?�s�:P�.P+�P(�+P5c�>�trdtjddddfg}ndg}tjd|��5}tj
�dd}|jsJ�tr|jdk(sJ�|jdk(sJ�ddd�y#1swYyxYw)	N�em1z06:3d:29)r�rqz06-3d-29NNNzpsutil._psplatform.net_if_addrsr�rz06:3d:29:00:00:00z06-3d-29-00-00-00)rr(r�rrKr�r[r�)r/r�r]r�s    r3� test_net_if_addrs_mac_null_bytesz,TestNetAPIs.test_net_if_addrs_mac_null_bytesas�����6�>�>�:�t�T�4�H�I�C�<�=�C�
�Z�Z�-�C�
�
��&�&�(��/��2�D��8�8�O�8���|�|�':�:�:�:��|�|�':�:�:�:�
�
�
�s�AB�Bc�|�tj�}|sJ|��tjtjtjf}|j�D]]\}}t
|t�sJ�|\}}}}}	t
|t�sJ�||vsJ�||vsJ�|dk\sJ�|dk\sJ�t
|	t�r�]J�yr�)	r(r��NIC_DUPLEX_FULL�NIC_DUPLEX_HALF�NIC_DUPLEX_UNKNOWNr�r�r�r�)
r/r��all_duplexesr��statsr��duplex�speed�mtu�flagss
          r3�test_net_if_statszTestNetAPIs.test_net_if_statsss����"�"�$����T��t��"�"��"�"��%�%�
��
 �:�:�<�K�D�%��d�C�(�(�(�.3�+�D�&�%��e��d�D�)�)�)��\�)�)�)��\�)�)�)��A�:��:��!�8�O�8��e�S�)�)�)�(r:zLINUX or BSD or MACOS specificc���tjdttjd���5}tj�}|ik(sJ�|jsJ�	ddd�y#1swYyxYw)Nz"psutil._psplatform.cext.net_if_mturVrE)rrKrlrm�ENODEVr(r�r[)r/r]r�s   r3�test_net_if_stats_enodevz$TestNetAPIs.test_net_if_stats_enodev�s[��
�Z�Z�0�����b�1�
���%�%�'�C��"�9��9��8�8�O�8�

�
�
�s�*A$�$A-N)rdrerfr r�r�rr�r�r�r�r�rrrr�rgr:r3r�r��s����[�[���/�/���H�#�I�#�8�[�[���/�/���H��I��I(�V;�$*�$�[�[���
�
"�c�
"�U�#�,L�����r:r�c�n�eZdZejjed��d��Zejjed��d��Zejje	d��ejje
d��d���Zejjed��d��Z
y)	�TestSensorsAPIsr:rjc�v�tj�}|j�D]�\}}t|t�sJ�|D]v}t|j
t�sJ�|j�|jdk\sJ�|j�|jdk\sJ�|j��f|jdk\r�vJ���yr�)	r(�sensors_temperaturesr�r�r��labelr=�high�critical)r/�tempsr��entries�entrys     r3�test_sensors_temperaturesz)TestSensorsAPIs.test_sensors_temperatures�s����+�+�-��"�[�[�]�M�D�'��d�C�(�(�(� ��!�%�+�+�s�3�3�3��=�=�,� �=�=�A�-�-�-��:�:�)� �:�:��?�*�?��>�>�-� �>�>�Q�.�.�.�!�+r:c�"�ddgi}tjd|��5}tjd��dd}|jsJ�|j
dk(sJ�|jd	k(sJ�|jd
k(sJ�	ddd�y#1swYyxYw)N�coretemp)r�gI@gN@g�Q@z'psutil._psplatform.sensors_temperaturesr�T)�
fahrenheitrg�^@g�a@g�c@)rrKr(r�r[r=r�r�)r/�dr]r�s    r3�#test_sensors_temperatures_fahreneitz3TestSensorsAPIs.test_sensors_temperatures_fahreneit�s���
�5�6�7��
�Z�Z�5�A�
�
��/�/�4�@��L�Q�O�E��8�8�O�8��=�=�E�)�)�)��:�:��&�&�&��>�>�U�*�*�*�
�
�
�s�AB�Bz
no batteryc�x�tj�}|jdk\sJ�|jdksJ�|jtjtj
hvr|jdk\s-J�|jtj
k(r|jsJ�t|jt�sJ�y)Nrr�)	r(�sensors_batteryr��secsleft�POWER_TIME_UNKNOWN�POWER_TIME_UNLIMITED�
power_pluggedr�r�)r/r�s  r3�test_sensors_batteryz$TestSensorsAPIs.test_sensors_battery�s����$�$�&���{�{�a�����{�{�c�!�!�!��<�<��%�%��'�'� 
�
��<�<�1�$�$�$�
�\�\�V�8�8�
8��$�$�$�$��#�+�+�T�2�2�2r:c� �tj�}|j�D]g\}}t|t�sJ�|D]K}t|j
t�sJ�t|jt�sJ�|jdk\r�KJ��iyr�)r(�sensors_fansr�r�r�r�r=r�)r/�fansr�r�r�s     r3�test_sensors_fansz!TestSensorsAPIs.test_sensors_fans�sx���"�"�$��!�Z�Z�\�M�D�'��d�C�(�(�(� ��!�%�+�+�s�3�3�3�!�%�-�-��5�5�5��}�}��)�)�)�!�*r:N)rdrerfr r�r�rr�r�rrr�rr�rgr:r3r�r��s����[�[���4�4�_��M�/�N�/��[�[���4�4�_��M�	+�N�	+��[�[���/�/���H��[�[���K����=�3�>�I�3��[�[���,�,�_��E�*�F�*r:r�)6�__doc__r�r�rmr&rrMr�r�r�r��unittestrr(rrrrrr	r
rrr
�psutil._commonr�psutil.testsrrrrrrrrrrrrrrrrrr r!r#rir�r�r�rIr�r�rgr:r3�<module>r�s�������	�
�
�
�
�
���
�����������)� �!�#�'�'�$�%�'�,�,�)�1�%��'�'�*��)�E �n�E �Pc.�n�c.�LL3�>�L3�^("�^�("�V~�.�~�BG�>�G�Tc�.�c�L2*�n�2*r:
Back to Directory File Manager