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

�

h0i�Y���dZddlZddlZddlZddlZddlZddlZddlZddlZddl	Z	ddl
Z
ddlZddlZddl
Z
ddlmZddlZddlmZddlmZddlmZddlmZddlmZdd	lmZdd
lmZddlmZddlmZdd
lmZddlmZddlmZddlmZddlmZddlm Z ddlm!Z!ddlm"Z"ddlm#Z#ddlm$Z$ddlm%Z%erddl&m'Z'ddl&m(Z(ddl&m)Z)ddl&m*Z*ejVjYejVj[e.��Z/dZ0dZ1dZ2dZ3erd Z4d!�Z5d"�Z6d#�Z7d$�Z8d%�Z9d&�Z:d'�Z;d(�Z<d)�Z=ej|d*��Z?ej|d+��Z@e j�j�ed,�-�Gd.�d/e��ZCe j�j�ed,�-�Gd0�d1e��ZDe j�j�ed,�-�Gd2�d3e��ZEe j�j�ed,�-�Gd4�d5e��ZFe j�j�ed,�-�Gd6�d7e��ZGe j�j�ed,�-�Gd8�d9e��ZHe j�j�ed,�-�Gd:�d;e��ZIe j�j�ed,�-�Gd<�d=e��ZJe j�j�ed,�-�Gd>�d?e��ZKe j�j�ed,�-�Gd@�dAe��ZLe j�j�ed,�-�GdB�dCe��ZMe j�j�ed,�-�GdD�dEe��ZNe j�j�ed,�-�GdF�dGe��ZOe j�j�ed,�-�GdH�dIe��ZPe j�j�ed,�-�GdJ�dKe��ZQe j�j�ed,�-�GdL�dMe��ZRe j�j�ed,�-�GdN�dOe��ZSe j�j�ed,�-�GdP�dQe��ZTe j�j�ed,�-�e j�j�edR�-�GdS�dTe���ZUe j�j�ed,�-�GdU�dVe��ZVe j�j�ed,�-�GdW�dXe��ZWe j�j�ed,�-�GdY�dZe��ZXe j�j�ed,�-�Gd[�d\e��ZYe j�j�ed,�-�Gd]�d^e��ZZe j�j�ed,�-�Gd_�d`e��Z[y)azLinux specific tests.�N)�mock)�LINUX)�AARCH64)�GITHUB_ACTIONS)�GLOBAL_TIMEOUT)�HAS_BATTERY)�HAS_CPU_FREQ)�HAS_GETLOADAVG)�
HAS_RLIMIT)�RISCV64)�TOLERANCE_DISK_USAGE)�TOLERANCE_SYS_MEM)�PsutilTestCase)�
ThreadTask)�
call_until)�pytest)�
reload_module)�retry_on_failure)�safe_rmpath)�sh)�skip_on_not_implemented)�CLOCK_TICKS)�RootFsDeviceFinder)�calculate_avail_vmem)�open_binaryi�i'�i�i�ic�V�ddl}t|ddd�}tjtjtj�5}tj
|j
|j�ttjd|��dd�cddd�S#1swYyxYw�Nr��ascii�256s��)�fcntl�bytes�socket�AF_INET�
SOCK_DGRAM�	inet_ntoa�ioctl�fileno�SIOCGIFADDR�struct�pack��ifnamer#�ss   �H/opt/hc_python/lib64/python3.12/site-packages/psutil/tests/test_linux.py�get_ipv4_addressr2Bsv���
�6�#�2�;��
(�F�	���v�~�~�v�'8�'8�	9�Q�����K�K����
�K����V�V�1L�M��2�
�
�
:�	9�	9��
�AB�B(c�V�ddl}t|ddd�}tjtjtj�5}tj
|j
|j�ttjd|��dd�cddd�S#1swYyxYwr)r#r$r%r&r'r(r)r*�SIOCGIFNETMASKr,r-r.s   r1�get_ipv4_netmaskr6N�y���
�6�#�2�;��
(�F�	���v�~�~�v�'8�'8�	9�Q�����K�K����
�N�F�K�K���,G�
���
�
�
:�	9�	9�r3c�V�ddl}t|ddd�}tjtjtj�5}tj
|j
|j�ttjd|��dd�cddd�S#1swYyxYwr)r#r$r%r&r'r(r)r*�SIOCGIFBRDADDRr,r-r.s   r1�get_ipv4_broadcastr:Zr7r3c�<�td�5}g}|D],}|j�}|d|k(s�|j|��.t|�dk(rt	d|����	ddd�tt��D]�}||d}tdt|�d�D�cgc]
}|||dz��}}dj
|�}	tjtj|	�}
tjtj|
�||<��|S#1swY��xYwcc}w)Nz/proc/net/if_inet6���rzcould not find interface ��:)�open�split�append�len�
ValueError�range�joinr%�	inet_pton�AF_INET6�	inet_ntop)r/�f�
all_fields�line�fields�i�unformatted�j�groups�	formatted�packeds           r1�get_ipv6_addressesrSfs��	
�"�	#�q��
��D��Z�Z�\�F��b�z�V�#��!�!�&�)��
�z�?�a���8��
�C�D�D� �
$��3�z�?�
#�� ��m�A�&��,1�!�S��5E�q�,I�
�,I�q�K��A��E�"�,I�	�
��H�H�V�$�	��!�!�&�/�/�9�=���(�(����&�A�
�1�
�$���%
$�	#��
s� D
�/D
�D�
Dc	��ddl}t|ddd�}tjtjtj�5}|j|j
�ttjd|��}dj|ddD�cgc]}|d�d	���
c}�dd
cddd�Scc}w#1swYyxYw)Nrrrr ��r"�02xr>r<)r#r$r%r&r'r)r*�
SIOCGIFHWADDRr,r-rE)r/r#r0�info�chars     r1�get_mac_addressr[|s����
�6�#�2�;��
(�F�	���v�~�~�v�'8�'8�	9�Q��{�{�
�H�H�J�
�v�{�{�6�6�'B�
���w�w�4��2�;�?�;�4�4��*�A��;�?�@��"�E�	
:�	9��@�	
:�	9�s�AB7�
B2
�	B7�2B7�7Cc�6�tddgddi��}|jd�}|D]e}|jd�s�|j�\}}}}tjdd�}|t|�t|�t|��cSt
d	|����)
zQParse 'free' cmd and return swap memory's s total, used and free
    values.
    �free�-b�LANG�C.UTF-8��env�
�Swapztotal used freez$can't find 'Swap' in 'free' output:
)rr@�
startswith�collections�
namedtuple�intrC)�out�linesrK�_�total�usedr]�nts        r1�	free_swapro�s���
�f�d�^�&�)�!4�
5�C��I�I�d�O�E����?�?�6�"�#'�:�:�<� �A�u�d�D��'�'��0A�B�B��c�%�j�#�d�)�S��Y�7�7�	�
�<�S�E�B�
C�C�c��tddgddi��}|jd�}|D]V}|jd�s�d�|j�d	d
D�\}}}}tjdd�}||||||�cStd|����)
zSParse 'free' cmd and return physical memory's total, used
    and free values.
    r]r^r_r`rarc�Memc3�2K�|]}t|����y�w�N)rh��.0�xs  r1�	<genexpr>zfree_physmem.<locals>.<genexpr>�s����(K�9J�A��Q��9J�s���ztotal used free shared outputz#can't find 'Mem' in 'free' output:
)rr@rerfrgrC)rirjrKrlrmr]�sharedrns        r1�free_physmemr|�s���
�f�d�^�&�)�!4�
5�C��I�I�d�O�E����?�?�5�!�(K�����a��9J�(K�%�E�4��v��'�'��7��B��e�T�4���5�5�
��;�C�5�A�
B�Brpc���tddgddi��}|jd�D]5}|j�}||vs�t|jd�d�cSt	d	|�d
���)N�vmstatz-sr_r`rarc� r�can't find z in 'vmstat' output)rr@�striprhrC)�statrirKs   r1r~r~�sk��
�h��
�F�I�#6�
7�C��	�	�$����z�z�|���4�<��t�z�z�#��q�)�*�*� ��{�4�(�*=�>�
?�?rpc
���tddg�j�}d|vrtjd�St	tttjd|j�d���S)Nr]z-V�UNKNOWNzcan't determine free versionz\d+r<)
rr�r�skip�tuple�maprh�re�findallr@)ris r1�get_free_version_infor��sX��
�f�d�^�
�
"�
"�
$�C��C���{�{�9�:�:���S�"�*�*�V�S�Y�Y�[��_�=�>�?�?rpc#���K���fd�}t�tjdd|��5}|��ddd�y#1swYyxYw�w)z�Mock open() builtin and forces it to return a certain content
    for a given path. `pairs` is a {"path": "content", ...} dict.
    c���|�vr?�|}t|t�rtj|�Stj|�S�|g|��i|��Srt)�
isinstance�str�io�StringIO�BytesIO)�name�args�kwargs�content�	orig_open�pairss    ��r1�	open_mockz$mock_open_content.<locals>.open_mock�sP����5�=��D�k�G��'�3�'��{�{�7�+�+��z�z�'�*�*��T�3�D�3�F�3�3rp�
builtins.openT��create�side_effectN�r?r�patch)r�r��mr�s`  @r1�mock_open_contentr��s6�����4��I�	
���O�D�i�	H�A���
I�	H�	H�s�%A�7�	A�A�Ac#����K����fd�}t�tjdd|��5}|��ddd�y#1swYyxYw�w)zZMock open() builtin and raises `exc` if the path being opened
    matches `for_path`.
    c�*��|�k(r���|g|��i|��Srt�)r�r�r��exc�for_pathr�s   ���r1r�z&mock_open_exception.<locals>.open_mock�s%����8���I���/��/��/�/rpr�Tr�Nr�)r�r�r�r�r�s``  @r1�mock_open_exceptionr��s6�����0�
�I�	
���O�D�i�	H�A���
I�	H�	H�s�&A�9�	A�A�Az
LINUX only��reasonc�z�eZdZd�Ze�d��Ze�d��Ze�d��Ze�d��Zy)�"TestSystemVirtualMemoryAgainstFreec�v�t�j}tj�j}||k(sJ�yrt)r|rl�psutil�virtual_memory��self�	cli_value�psutil_values   r1�
test_totalz-TestSystemVirtualMemoryAgainstFree.test_total�s1�� �N�(�(�	��,�,�.�4�4���L�(�(�(rpc���t�dkrtjd�St�j}tj�j}t||z
�tksJ�y)N�r=rry�free version too old)	r�rr�r|rmr�r��absrr�s   r1�	test_usedz,TestSystemVirtualMemoryAgainstFree.test_used�sY��!�"�Y�.��;�;�5�6�6� �N�'�'�	��,�,�.�3�3���9�|�+�,�/@�@�@�@rpc��t�j}tj�j}t	||z
�t
ksJ�yrt)r|r]r�r�r�rr�s   r1�	test_freez,TestSystemVirtualMemoryAgainstFree.test_free�s<�� �N�'�'�	��,�,�.�3�3���9�|�+�,�/@�@�@�@rpc��t�}|j}|dk(rtjd�St	j
�j}t
||z
�tksJ|�d|�d|j����y)Nrz%free does not support 'shared' columnrz 
)	r|r{rr�r�r�r�r�output)r�r]�
free_valuer�s    r1�test_sharedz.TestSystemVirtualMemoryAgainstFree.test_sharedsu���~���[�[�
���?��;�;�F�G�G��,�,�.�5�5���
�\�)�*�->�>�	:��\��<�.��D�K�K�=�9�	:�>rpc� �tddg�}|jd�}d|dvrtjd�St	|dj�d�}tj�j}t||z
�tksJ�y)	Nr]r^rc�	availablerz(free does not support 'available' columnryr<)
rr@rr�rhr�r�r�r�r)r�rirjr�r�s     r1�test_availablez1TestSystemVirtualMemoryAgainstFree.test_availables����&�$�� ���	�	�$����e�A�h�&��;�;�I�J�J���q����)�"�-�.�
��,�,�.�8�8���:��,�-�0A�A�A�ArpN)	�__name__�
__module__�__qualname__r�rr�r�r�r�r�rpr1r�r��si��)�
��
A��
A���A��A�
��:��:���	B��	Brpr�c��eZdZd�Ze�d��Ze�d��Ze�d��Ze�d��Ze�d��Z	y)�$TestSystemVirtualMemoryAgainstVmstatc��td�dz}tj�j}t	||z
�t
ksJ�y)Nztotal memory�)r~r�r�rlr�r�r��vmstat_valuer�s   r1r�z/TestSystemVirtualMemoryAgainstVmstat.test_totals>���n�-��4���,�,�.�4�4���<�,�.�/�2C�C�C�Crpc���t�dkrtjd�Std�dz}t	j
�j}t||z
�tksJ�y)Nr�r�zused memoryr�)	r�rr�r~r�r�rmr�rr�s   r1r�z.TestSystemVirtualMemoryAgainstVmstat.test_useds[��!�"�Y�.��;�;�5�6�6��m�,�t�3���,�,�.�3�3���<�,�.�/�2C�C�C�Crpc��td�dz}tj�j}t	||z
�t
ksJ�y)Nzfree memoryr�)r~r�r�r]r�rr�s   r1r�z.TestSystemVirtualMemoryAgainstVmstat.test_free/s>���m�,�t�3���,�,�.�3�3���<�,�.�/�2C�C�C�Crpc��td�dz}tj�j}t	||z
�t
ksJ�y)Nz
buffer memoryr�)r~r�r��buffersr�rr�s   r1�test_buffersz1TestSystemVirtualMemoryAgainstVmstat.test_buffers5s>���o�.��5���,�,�.�6�6���<�,�.�/�2C�C�C�Crpc��td�dz}tj�j}t	||z
�t
ksJ�y)Nz
active memoryr�)r~r�r��activer�rr�s   r1�test_activez0TestSystemVirtualMemoryAgainstVmstat.test_active;s>���o�.��5���,�,�.�5�5���<�,�.�/�2C�C�C�Crpc��td�dz}tj�j}t	||z
�t
ksJ�y)Nzinactive memoryr�)r~r�r��inactiver�rr�s   r1�
test_inactivez2TestSystemVirtualMemoryAgainstVmstat.test_inactiveAs?���/�0�4�7���,�,�.�7�7���<�,�.�/�2C�C�C�CrpN)
r�r�r�r�rr�r�r�r�r�r�rpr1r�r�s���D�
��
D��
D���D��D�
��D��D�
��D��D�
��D��Drpr�c�D�eZdZd�Ze�d��Zd�Zd�Zd�Zd�Z	y)�TestSystemVirtualMemoryMocksc���tjd�j�}td|i�5}t	j
d��5}t	jd�tj�}|jsJ�t|�dk(sJ�|d}dt|j�vsJ�d	t|j�vsJ�d
t|j�vsJ�dt|j�vsJ�dt|j�vsJ�d
t|j�vsJ�dt|j�vsJ�|jdk(sJ�|jdk(sJ�|jdk(sJ�|j dk(sJ�|j"dk(sJ�|j$dk(sJ�|j&dk(sJ�	ddd�ddd�y#1swY�xYw#1swYyxYw)NaL            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
            �
/proc/meminfoT��record�alwaysryrz#memory stats couldn't be determined�cachedr{r�r�r�r�)�textwrap�dedent�encoder��warnings�catch_warnings�simplefilterr�r��calledrBr��messager�r�r�r{r�r��slab�r�r�r��ws�ret�ws      r1�test_warnings_on_missesz4TestSystemVirtualMemoryMocks.test_warnings_on_missesJs����/�/�	#�	����	����9�
:�a��(�(��5���%�%�h�/��+�+�-���x�x��x��2�w�!�|�#�|��q�E��<��A�I�I��N�N�N��3�q�y�y�>�1�1�1��3�q�y�y�>�1�1�1��3�q�y�y�>�1�1�1�!�S����^�3�3�3� �C��	�	�N�2�2�2�"�c�!�)�)�n�4�4�4��z�z�Q��&���z�z�Q��&���|�|�q�(�(�(��z�z�Q��&���{�{�a�'�'�'��}�}��)�)�)��x�x�1�}�$�}�'6�;�
:�5�5��;�
:�s$�G�E3G
�<G�
G	�G�G"c��i}td�5}|D])}|j�}t|d�dz||d<�+	ddd�t|�}d|vr!|d}t	||z
�|zdz}|dksJ�yy#1swY�:xYw)Nr�ryr�rs
MemAvailable:�dr)rr@rhrr�)r��memsrIrKrL�a�b�diff_percents        r1�test_avail_old_percentz3TestSystemVirtualMemoryMocks.test_avail_old_percentns�����
��
)�Q��������"%�f�Q�i�.�4�"7��V�A�Y���*�

!��&���t�#��%�&�A��q�1�u�:��>�C�/�L��"�$�$�$�$�
*�
)�s�/A7�7Bc��tjd�j�}td|i�5}t	j
d��5}t
j�}ddd�|jsJ�jdk(sJ�d}dt|j�vsJ�	ddd�y#1swY�PxYw#1swYyxYw)Na            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
            r�Tr�l �"r�,inactive memory stats couldn't be determined�r�r�r�r�r�r�r�r�r�r�r�r�r�s      r1� test_avail_old_comes_from_kernelz=TestSystemVirtualMemoryMocks.test_avail_old_comes_from_kernel~s����/�/�#�����	����9�
:�a��(�(��5���+�+�-��6��8�8�O�8��=�=�N�2�2�2��1��A�A�S��	�	�F��
��
;�
:�5�5��;�
:��$�B8�B,�AB8�,B5	�1B8�8Cc��tjd�j�}td|i�5}t	j
d��5}t
j�}ddd�|jsJ�jdk(sJ�d}dt|j�vsJ�	ddd�y#1swY�PxYw#1swYyxYw)Nat            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
            r�Tr��`LGrr�r�r�s      r1�test_avail_old_missing_fieldsz:TestSystemVirtualMemoryMocks.test_avail_old_missing_fields�s����/�/�
#�
����	����9�
:�a��(�(��5���+�+�-��6��8�8�O�8��=�=�$C�C�C�C��1��A�A�S��	�	�F��
��
;�
:�5�5��;�
:�r�c��tjd�j�}td|i�5t	dt
�5t
jd��5}tj�}|jdk(sJ�|d}dt|j�vsJ�	ddd�ddd�ddd�y#1swY�xYw#1swY�xYw#1swYyxYw)	Na�            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
            r�z/proc/zoneinfoTr�r�rr�)
r�r�r�r�r��FileNotFoundErrorr�r�r�r�r�r�r�)r�r�r�r�r�s     r1�test_avail_old_missing_zoneinfoz<TestSystemVirtualMemoryMocks.test_avail_old_missing_zoneinfo�s����/�/�
#�
����	����9�
:�$�%5�7H�I��,�,�D�9�R� �/�/�1�C��=�=�,K�K�K�K��1��A�F��q�y�y�>�*��*�:�J�;�
:�9�9��J�I��;�
:�s<�C�C�AB7�C�&C�7C�<C�C	�C�Cc��tjd�j�}td|i�5}t	j
�}|jsJ�|jdk(sJ�|jdk(sJ�|jdk(sJ�|jdk(sJ�|jdk(sJ�|jdk(sJ�|jd	k(sJ�|jd
k(sJ�|jdk(sJ�	ddd�y#1swYyxYw)Na�            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�i�i�ipiTii iX�)r�r�r�r�r�r�r�rlr]r�r�r{r�r�r�r�)r�r�r��mems    r1�test_virtual_memory_mockedz7TestSystemVirtualMemoryMocks.test_virtual_memory_mocked�s����/�/�1#�1�b���c	�d���9�
:�a��'�'�)�C��8�8�O�8��9�9�
�*�*�*��8�8�x�'�'�'��;�;�(�*�*�*��:�:��0�0�0��:�:��*�*�*��:�:��)�)�)��<�<�8�+�+�+��8�8�y�(�(�(��=�=�H�,�,�,�;�
:�
:�s�B<C7�7DN)
r�r�r�r�rr�r�r�r�rr�rpr1r�r�Hs4��"%�H��
%��
%��8�2�8@-rpr�c�n�eZdZed��Zd�Ze�d��Ze�d��Zd�Z	d�Z
d�Zd�Zy	)
�TestSystemSwapMemoryc�v�td�5}|j�}ddd�dvxrd|vS#1swY�xYw)z3Return True if /proc/meminfo provides swap metrics.r�Nz
SwapTotal:z	SwapFree:)r?�read)rI�datas  r1�meminfo_has_swap_infoz*TestSystemSwapMemory.meminfo_has_swap_infos<���/�
"�a��6�6�8�D�#��t�#�;��t�(;�;�#�
"�s�/�8c��t�j}tj�j}t	||z
�t
ksJ�yrt)rorlr��swap_memoryr�r�r�r�r�s   r1r�zTestSystemSwapMemory.test_total s<���[�&�&�
��)�)�+�1�1���:��,�-�0A�A�A�Arpc��t�j}tj�j}t	||z
�t
ksJ�yrt)rormr�r	r�rr
s   r1r�zTestSystemSwapMemory.test_used%�<���[�%�%�
��)�)�+�0�0���:��,�-�0A�A�A�Arpc��t�j}tj�j}t	||z
�t
ksJ�yrt)ror]r�r	r�rr
s   r1r�zTestSystemSwapMemory.test_free+rrpc���tjdd��5}tjd��5}tjd�tj�}|jsJ�t|�dk(sJ�|d}dt|j�vsJ�|jdk(sJ�|jdk(sJ�	ddd�ddd�y#1swY�xYw#1swYyxYw)	N�psutil._common.openT�r�r�r�ryrz9'sin' and 'sout' swap memory stats couldn't be determined)
rr�r�r�r�r�r	r�rBr�r��sin�sout�r�r�r�r�r�s     r1�test_missing_sin_soutz*TestSystemSwapMemory.test_missing_sin_sout1s���
�Z�Z�-�d�
;�q��(�(��5���%�%�h�/��(�(�*���x�x��x��2�w�!�|�#�|��q�E��O��1�9�9�~�&��&��w�w�!�|�#�|��x�x�1�}�$�}�6�<�
;�5�5��<�
;�s#�C�BC	�8C�	C	�C�Cc��tdt�5}tjd��5}tjd�tj�}|jsJ�t|�dk(sJ�|d}dt|j�vsJ�|jdk(sJ�|jdk(sJ�	ddd�ddd�y#1swY�xYw#1swYyxYw)Nz/proc/vmstatTr�r�ryrzK'sin' and 'sout' swap memory stats couldn't be determined and were set to 0)
r�r�r�r�r�r�r	r�rBr�r�rrrs     r1�test_no_vmstat_mockedz*TestSystemSwapMemory.test_no_vmstat_mocked@s���
 ��1B�
C�q��(�(��5���%�%�h�/��(�(�*���x�x��x��2�w�!�|�#�|��q�E��6��1�9�9�~�&��&��w�w�!�|�#�|��x�x�1�}�$�}�6�D�
C�5�5��D�
C�s#�C�BC�1C�C	�C�Cc��|j�stjd�Stjd�5}tj�}ddd�jrJ�ddlm	}|j�\}}}}}}}||z}||z}j|k(sJ�t|j|z
�tksJ�y#1swY�rxYw)Nz!/proc/meminfo has no swap metricsz"psutil._pslinux.cext.linux_sysinfor)rrr�rr�r�r	r��psutil._psutil_linux�
_psutil_linux�
linux_sysinforlr�r]r)r�r��swap�cextrkrlr]�unit_multipliers        r1�test_meminfo_against_sysinfoz1TestSystemSwapMemory.test_meminfo_against_sysinfoQs����)�)�+��;�;�B�C�C�
�Z�Z�<�
=���%�%�'�D�>��8�8��|�+�37�3E�3E�3G�0��1�a��E�4��
�� �������z�z�U�"�"�"��4�9�9�t�#�$�'8�8�8�8�>�
=�s�C�C
c��tddi�5}tj�|jsJ�	ddd�y#1swYyxYw)Nr�rp)r�r�r	r��r�r�s  r1�#test_emulate_meminfo_has_no_metricsz8TestSystemSwapMemory.test_emulate_meminfo_has_no_metricsbs6�����5�
6�!���� ��8�8�O�8�7�
6�
6�s	�#;�AN)
r�r�r��staticmethodrr�rr�r�rrrr!r�rpr1rrs`���<��<�B�
��B��B�
��B��B�

%�%�"9�"rprc��eZdZd�Zy)�TestSystemCPUTimesc�T�tj�j}tjdtj�d�d}ttt|jd���}|dk\rd|vsJ�d|vsJ�|dk\rd|vsJ�d|vsJ�|d	k\rd
|vsJ�yd
|vsJ�y)Nz
\d+\.\d+\.\d+�r�.)r&���steal)r&r(r"�guest)�r&r�
guest_nice)r��	cpu_times�_fieldsr�r��os�unamer�r�rhr@)r�rL�
kernel_ver�kernel_ver_infos    r1�test_fieldszTestSystemCPUTimes.test_fieldsrs����!�!�#�+�+���Z�Z� 0�"�(�(�*�Q�-�@��C�
���C��)9�)9�#�)>� ?�@���j�(��f�$�$�$��&�(�(�(��j�(��f�$�$�$��&�(�(�(��i�'��6�)�)�)��v�-�-�-rpN)r�r�r�r4r�rpr1r$r$ps��.rpr$c���eZdZejjejjd�d��d��Z	ejjejjd�d��d��Z
ejjejd�d	��d
��Z
ejjejd�d��d
��Zd�Zy)�TestSystemCPUCountLogical�/sys/devices/system/cpu/onlinez-/sys/devices/system/cpu/online does not existr�c��td�5}|j�j�}ddd�dt�vr:t	|jd�d�dz}t
j�|k(sJ�yy#1swY�QxYw)Nr7�-ry)r?rr�r�rhr@r��	cpu_count)r�rI�values   r1�test_against_sysdev_cpu_onlinez8TestSystemCPUCountLogical.test_against_sysdev_cpu_online�st��
�2�
3�q��F�F�H�N�N�$�E�4��#�e�*������C�(��+�,�q�0�E��#�#�%��.�.�.��4�
3�s�A;�;B�/sys/devices/system/cpuz&/sys/devices/system/cpu does not existc	���tjd�}t|D�cgc]}tjd|���|��c}�}tj�|k(sJ�ycc}w)Nr=zcpu\d+$)r0�listdirrBr��searchr�r:)r��lsrw�counts    r1�test_against_sysdev_cpu_numz5TestSystemCPUCountLogical.test_against_sysdev_cpu_num�sY��
�Z�Z�1�
2����K��1�b�i�i�
�A�&>�&J�Q��K�L�����!�U�*�*�*��Ls
�A �A �nprocznproc utility not availablec�b�ttd��}tjd��|k(sJ�y)Nznproc --allT��logical)rhrr�r:)r��nums  r1�test_against_nprocz,TestSystemCPUCountLogical.test_against_nproc�s,���"�]�#�$������-��4�4�4rp�lscpu�lscpu utility not availablec���td�}t|jd�D�cgc]}|jd�r�|��c}�}t	j
d��|k(sJ�ycc}w)N�lscpu -prc�#TrF)rrBr@rer�r:)r�rirwrHs    r1�test_against_lscpuz,TestSystemCPUCountLogical.test_against_lscpu�sX����n���c�i�i��o�G�o��Q�\�\�#�5F�1�o�G�H������-��4�4�4��Hs
�A"�A"c��ddl}|jj�}tjdt
��5}|jj�|k(sJ�|jsJ�tjdd��5}|jj��J�|jdk(sJ�|jdddk(sJ�	ddd�td	d
�5}|j�}ddd�tj�}tjd|d��5}|jj�|k(sJ�	ddd�td	di�5}|jj�|k(sJ�|jsJ�	ddd�ddd�y#1swY��xYw#1swY��xYw#1swY�nxYw#1swY�6xYw#1swYyxYw)
Nrzpsutil._pslinux.os.sysconf�r�rTrr&�
/proc/stat�
/proc/cpuinfo�rb��return_valuer�rp)�psutil._pslinux�_pslinux�cpu_count_logicalrr�rCr��
call_count�	call_argsr?rr�r�r�)r�r��originalr�rI�cpuinfo_data�	fake_files       r1�test_emulate_fallbacksz0TestSystemCPUCountLogical.test_emulate_fallbacks�s�����?�?�4�4�6���Z�Z�(�j�
�
��?�?�4�4�6�(�B�B�B��8�8�O�8����1�$�?�1����8�8�:�B�B�B��|�|�q�(�(�(��{�{�1�~�a�(�L�8�8�8�	@��o�t�,�� �v�v�x��-��
�
�<�0�I����%�I�d������8�8�:�h�F�F�F��#�O�S�#9�:�a����8�8�:�h�F�F�F��x�x��x�;�5
�
�@�?��-�,�����;�:��5
�
�sm�AG�?AF�G�F!�*5G� F-�G�.F9�G�F	�G�!F*	�&G�-F6	�2G�9G	�>G�GN)r�r�r�r�mark�skipifr0�path�existsr<rC�shutil�whichrIrOr_r�rpr1r6r6�s����[�[����G�G�N�N�;�<�<�>���/�	�/��[�[����G�G�N�N�4�5�5�7���+�	�+�
�[�[����F�L�L��!�!�*G���5��5��[�[����F�L�L��!�!�*G���5��5�
" rpr6c���eZdZejjejd�d��d��Zejje	j�dvd��d��Zd�Zy	)
�TestSystemCPUCountCoresrJrKr�c��td�}t�}|jd�D]9}|jd�r�|jd�}|j	|d��;tjd��t|�k(sJ�y)NrMrcrN�,ryFrF)r�setr@re�addr�r:rB)r�ri�core_idsrKrLs     r1rOz*TestSystemCPUCountCores.test_against_lscpu�sn����n���5���I�I�d�O�D��?�?�3�'����C������V�A�Y�'�$�����.�#�h�-�?�?�?rp>�i686�x86_64zx86_64/i686 onlyc��tjj�}tjdg��5}tjj�}|j
sJ�	ddd�|�|k(sJ�yy#1swY�xYw)N�	glob.glob�rV)r�rX�cpu_count_coresrr�r�)r��meth_1r��meth_2s    r1�
test_method_2z%TestSystemCPUCountCores.test_method_2�sl�����0�0�2��
�Z�Z��"�
5���_�_�4�4�6�F��8�8�O�8�6����V�#�#�#��6�
5�s�-A7�7Bc�.�tjdg��5}tjdd��5}tjj	��J�	ddd�ddd�j
sJ�j
sJ�y#1swY�.xYw#1swY�2xYw)NrprqrTr)rr�r�rXrrr�)r��m1�m2s   r1�test_emulate_nonez)TestSystemCPUCountCores.test_emulate_none�st��
�Z�Z��"�
5�����1�$�?�2����6�6�8�@�@�@�@�6��y�y��y��y�y��y�@�?��6�
5�s"�B�!A?�B�?B	�B�BN)
r�r�r�rr`rardrerO�platform�machineruryr�rpr1rgrg�s����[�[����F�L�L��!�!�*G���@��@��[�[��������"4�4�=O���$��$�rprgc� �eZdZejjed��ejjed��d���Zejjed��ejjexse	e
j��d���d���Zejjed��d��Z
ejjed��d��Zejjed��d	��Zy
)�TestSystemCPUFrequency�
not supportedr�z(aarch64 does not always expose frequencyc�����fd�}tjj�tjd|d��5tj�sJ�	ddd�y#1swYyxYw)Nc�8��|jd�ry�|�S)N�&/sys/devices/system/cpu/cpufreq/policyF�re)rb�orig_existss �r1�path_exists_mockzMTestSystemCPUFrequency.test_emulate_use_second_file.<locals>.path_exists_mock�s������G�H��"�4�(�(rp�os.path.existsT)r�r�)r0rbrcrr�r��cpu_freq)r�r�r�s  @r1�test_emulate_use_second_filez3TestSystemCPUFrequency.test_emulate_use_second_file�sM���	)��g�g�n�n��
�Z�Z��*:�4�
��?�?�$�$�$�
�
�
�s�A�A#z% does not report mhz in /proc/cpuinfoc�t���fd�}tjj�	tjd|��5ttj�t
j�}|sJ|��|jdk(sJ�|jdk(sJ�t
jd��D]$}|jdk(sJ�|jdk(r�$J�	ddd�ttj�tt�y#1swY�2xYw#ttj�tt�wxYw)Nc�8��|jd�ry�|�S)Nz/sys/devices/system/cpu/Fr�)rb�os_path_existss �r1r�zITestSystemCPUFrequency.test_emulate_use_cpuinfo.<locals>.path_exists_mocks������9�:��%�d�+�+rpr�rQ�T��percpu)r0rbrcrr�rr�rXr��max�min)r�r�r��freqr�s    @r1�test_emulate_use_cpuinfoz/TestSystemCPUFrequency.test_emulate_use_cpuinfos����	,�������	"����,�:J�K��f�o�o�.��o�o�'����C��s��w�w�#�~�%�~��w�w�#�~�%�~�"�O�O�4�8�D��8�8�s�?�*�?��8�8�s�?�*�?�9�
L�
�&�/�/�*��&�!�L�K��
�&�/�/�*��&�!�s)�D
�BD�D�D
�D
�D
�
*D7c����fd�}t�tjd|��5tjdd��5tj�}|j
dk(sJ�|jdk7r|jd	k(sJ�|jdk7r|jd
k(sJ�ddd�ddd�y#1swY�xYw#1swYyxYw)Nc���|jd�r&|jd�rtjd�S|jd�r&|jd�rtjd�S|jd�r&|jd�rtjd�S|dk(rtjd	�S�|g|��i|��S)
N�/scaling_cur_freqr��500000�/scaling_min_freq�600000�/scaling_max_freqs700000rSscpu MHz     : 500��endswithrer�r��r�r�r�r�s   �r1r�z;TestSystemCPUFrequency.test_emulate_data.<locals>.open_mock"s�����}�}�0�1�d�o�o�8�7��z�z�)�,�,����2�3����8�9��z�z�)�,�,����2�3����8�9��z�z�)�,�,���(��z�z�"6�7�7� ��7��7��7�7rpr�rQr�Trq�@@r����@g�@�r?rr�r�r��currentr�r��r�r�r�r�s   @r1�test_emulate_dataz(TestSystemCPUFrequency.test_emulate_data s����	8�$�	�
�Z�Z��Y�
?����,�4�@����(���|�|�u�,�,�,��8�8�s�?��8�8�u�,�,�,��8�8�s�?��8�8�u�,�,�,�A�@�
?�@�@��@�
?�s#�B?�A&B3�"B?�3B<	�8B?�?Cc�����fd�}t�tjd|��5tjdd��5tjdd��5tjd�	�}|d
j
dk(sJ�|d
jdk7r|d
jd
k(sJ�|d
jdk7r|d
jdk(sJ�|dj
dk(sJ�|djdk7r|djdk(sJ�|djdk7r|djdk(sJ�ddd�ddd�ddd�y#1swY�xYw#1swY�xYw#1swYyxYw)Nc����|}|jd�r&|jd�rtjd�S|jd�r&|jd�rtjd�S|jd�r&|jd�rtjd�S|jd�r&|jd�rtjd	�S|jd�r&|jd�rtjd
�S|jd�r&|jd�rtjd�S|dk(rtjd
�S�|g|��i|��S)Nr�z'/sys/devices/system/cpu/cpufreq/policy0s100000r��200000r�s300000z'/sys/devices/system/cpu/cpufreq/policy1s400000r�r�rSs#cpu MHz     : 100
cpu MHz     : 400r�)r�r�r��nr�s    �r1r�z@TestSystemCPUFrequency.test_emulate_multi_cpu.<locals>.open_mockBs=����A��z�z�-�.�1�<�<�9�4��z�z�)�,�,����/�0�Q�\�\�9�6��z�z�)�,�,����/�0�Q�\�\�9�6��z�z�)�,�,����/�0�Q�\�\�9�6��z�z�)�,�,����/�0�Q�\�\�9�6��z�z�)�,�,����/�0�Q�\�\�9�6��z�z�)�,�,���(��z�z�"I�J�J� ��7��7��7�7rpr�rQr�Trq�!psutil._pslinux.cpu_count_logicalr&r�r�Y@r�gi@g�r@rygy@r�r�r�r�s   @r1�test_emulate_multi_cpuz-TestSystemCPUFrequency.test_emulate_multi_cpu@sD���	8�>�	�
�Z�Z��Y�
?����,�4�@��Z�Z�7�a��"�?�?�$�7�D���7�?�?�e�3�3�3��A�w�{�{�c�)�#�A�w�{�{�e�3�3�3��A�w�{�{�c�)�#�A�w�{�{�e�3�3�3���7�?�?�e�3�3�3��A�w�{�{�c�)�#�A�w�{�{�e�3�3�3��A�w�{�{�c�)�#�A�w�{�{�e�3�3�3��A�@�
?����A�@��@�
?�s;�E�E�CE�+E�3E�E
�	E�E	�E�E%c�p���fd�}t�tjd|��5tjdd��5tjdd��5tj�}|j
d	k(sJ�	ddd�ddd�ddd�y#1swY�xYw#1swY�xYw#1swYyxYw)
Nc����|jd�rt�|jd�rtjd�S|dk(rtjd�S�|g|��i|��S)Nr�z/cpuinfo_cur_freqr�rSscpu MHz     : 200)r�r�r�r�r�s   �r1r�zOTestSystemCPUFrequency.test_emulate_no_scaling_cur_freq_file.<locals>.open_mockvs_����}�}�0�1�'�'��}�}�0�1��z�z�)�,�,���(��z�z�"6�7�7� ��7��7��7�7rpr�rQr�Trqr�ry��)r?rr�r�r�r�r�s   @r1�%test_emulate_no_scaling_cur_freq_filez<TestSystemCPUFrequency.test_emulate_no_scaling_cur_freq_filess����	8��	�
�Z�Z��Y�
?����,�4�@��Z�Z�7�a��"�?�?�,�D��<�<�3�.�.�.�	�A�@�
?����A�@��@�
?�s:�B,�B �&B�;B �B,�B�B � B)	�%B,�,B5N)r�r�r�rr`rar	rr�rrzr{r�r�r�r�r�rpr1r}r}�s:���[�[���L�(���A��[�[����B���%��B�%��[�[���L�(���A��[�[�����7�"�(�"�"�$�%�%J�K���"�	�B�
"�0�[�[���L�(���A�-�B�-�>�[�[���L�(���A�04�B�04�d�[�[���L�(���A�/�B�/rpr}c��eZdZd�Zy)�TestSystemCPUStatsc�|�td�}tj�j}t	||z
�dksJ�y)N�
interruptsi�)r~r��	cpu_statsr�r�r�s   r1�test_interruptsz"TestSystemCPUStats.test_interrupts�s8���l�+���'�'�)�4�4���<�,�.�/�#�5�5�5rpN)r�r�r�r�r�rpr1r�r��s��6rpr�c�T�eZdZejjed��d��Zy)�TestLoadAvgr~r�c�t�tj�}td�5}|j�j	�}ddd�tt
d�|dz
�dksJ�tt
|d�|dz
�dksJ�tt
|d�|dz
�dksJ�y#1swY�pxYw)Nz
/proc/loadavgrryr&)r��
getloadavgr?rr@r��float)r�r�rI�
proc_values    r1�test_getloadavgzTestLoadAvg.test_getloadavg�s����(�(�*��
�/�
"�a�������)�J�#��5��A��'�,�q�/�9�:�Q�>�>�>��5��A��'�,�q�/�9�:�Q�>�>�>��5��A��'�,�q�/�9�:�Q�>�>�>�#�
"�s�B.�.B7N)r�r�r�rr`rar
r�r�rpr1r�r��s,���[�[���N�*�?��C�?�D�?rpr�c��eZdZd�Zy)�TestSystemNetIfAddrsc��tj�j�D�]\}}|D�]}|jtjk(r|j
t
|�k(r�:J�|jtjk(rl|j
t|�k(sJ�|jt|�k(sJ�|j�|jt|�k(r��J�t|�dk(r��J�|jtjk(s��|j
jd�d}|t!|�vr��J���y)Nz0.0.0.0�%r)r��net_if_addrs�items�family�AF_LINK�addressr[r%r&r2�netmaskr6�	broadcastr:rGr@rS)r�r��addrs�addrr�s     r1�test_ipszTestSystemNetIfAddrs.test_ips�s��!�.�.�0�6�6�8�K�D�%����;�;�&�.�.�0��<�<�?�4�+@�@�@�@��[�[�F�N�N�2��<�<�+;�D�+A�A�A�A��<�<�+;�D�+A�A�A�A��~�~�1�#�~�~�1C�D�1I�I�I�I�1�$�7�9�D�D�D��[�[�F�O�O�3�#�l�l�0�0��5�a�8�G�"�&8��&>�>�>�>�%�9rpN)r�r�r�r�r�rpr1r�r��s��?rpr�c���eZdZejjejd�d��d��Zd�Z	ejjejd�d��d��Z
y)�TestSystemNetIfStats�ifconfig�ifconfig utility not availabler�c�&�tj�j�D]]\}}	td|���}|jd|vk(sJ|��|j
t
tjd|�d�k(r�]J�y#t$rY�lwxYw)N�	ifconfig �RUNNINGz(?i)MTU[: ](\d+)r)
r��net_if_statsr�r�isup�mturhr�r��RuntimeError)r�r��statsris    r1�test_against_ifconfigz*TestSystemNetIfStats.test_against_ifconfig�s���"�.�.�0�6�6�8�K�D�%�
��9�T�F�+�,���z�z�i�3�&6�7�<��<�7��y�y�C��J�J�2�C�8��;�%����9�� �
��
�s�B�	B�Bc��tj�j�D]T\}}td|�d��5}|jt|j
�j��k(sJ�	ddd��Vy#1swY�axYw)Nz/sys/class/net/z/mtu)r�r�r�r?r�rhrr�)r�r�r�rIs    r1�test_mtuzTestSystemNetIfStats.test_mtu�sh��!�.�.�0�6�6�8�K�D�%����v�T�2�3�q��y�y�C�������(8�$9�9�9�9�4�3�9�3�3�s�7A;�;B	c�<�d}tj�j�D�]M\}}	td|���}t	j
d|�}|r�t
|j��dk\rh|dz
}t|jd�j�jd��}t|jjd��}||k(r��J�t	j
d|�}|s��t
|j��dk\s��|dz
}t|jd�j�j��}t|jjd��}||k(r��NJ�|stjd	�Sy#t$rY��uwxYw)
Nrr�zflags=(\d+)?<(.*?)>r&ryriz(.*)  MTU:(\d+)  Metric:(\d+)r,zno matches were found)r�r�r�rr�r@rBrPrj�group�lowerr@�flagsr�r�fail)r��
matches_foundr�r�ri�match�ifconfig_flags�psutil_flagss        r1�
test_flagszTestSystemNetIfStats.test_flags�si���
�!�.�.�0�6�6�8�K�D�%�
>��9�T�F�+�,���	�	�"8�#�>���S�����0�A�5�!�Q�&�M�%(����Q��)=�)=�)?�)E�)E�c�)J�%K�N�#&�u�{�{�'8�'8��'=�#>�L�)�\�9�9�9��I�I�&F��L�E���U�\�\�^�!4��!9�%��*�
�),�U�[�[��^�-A�-A�-C�-I�-I�-K�)L��'*�5�;�;�+<�+<�S�+A�'B��-��=�=�=�)9�,��;�;�6�7�7���' �
��
�s�F�	F�FN)r�r�r�rr`rardrer�r�r�r�rpr1r�r��s}���[�[����F�L�L��$�$�-M���
��
�:�
�[�[����F�L�L��$�$�-M���8��8rpr�c��eZdZejjejd�d��e�d���Z	y)�TestSystemNetIOCountersr�r�r�c��d�}tjdd��}|j�D�]\}}	||�}t	|j
|dz
�dksJ�t	|j|dz
�dksJ�t	|j|dz
�d	ksJ�t	|j|d
z
�d	ksJ�t	|j|dz
�dksJ�t	|j|d
z
�dksJ�t	|j|dz
�dksJ�t	|j|dz
�dkr��J�y#t$rY�� wxYw)Nc�v�i}td|���}ttjd|�d�|d<ttjd|�d�|d<ttjd|�d�|d<ttjd|�d	�|d
<ttjd|�d�|d<ttjd|�d	�|d
<ttjd|�d�|d<ttjd|�d�|d<|S)Nr�zRX packets[: ](\d+)r�packets_recvzTX packets[: ](\d+)�packets_sentzerrors[: ](\d+)�errinry�erroutzdropped[: ](\d+)�dropin�dropoutz#RX (?:packets \d+ +)?bytes[: ](\d+)�
bytes_recvz#TX (?:packets \d+ +)?bytes[: ](\d+)�
bytes_sent)rrhr�r�)�nicr�ris   r1r�z?TestSystemNetIOCounters.test_against_ifconfig.<locals>.ifconfigs-���C��y���&�'�C�"%��
�
�1�3�7��:�#�C���#&��
�
�1�3�7��:�#�C����r�z�z�*<�c�B�1�E�F�C��L���
�
�+=�s� C�A� F�G�C��M���
�
�+>�� D�Q� G�H�C��M� ����,?��!E�a�!H�I�C�	�N� #��
�
�A�3�G��J�!�C���!$��
�
�A�3�G��J�!�C����JrpTF)�pernic�nowrapr�i(r�r�r�r�r��
r�r�r�)
r��net_io_countersr�r�r�r�r�r�r�r�r�r�r�)r�r��nior�r��ifconfig_rets      r1r�z-TestSystemNetIOCounters.test_against_ifconfigsq��
	�*�$�$�D��?���9�9�;�K�D�%�
�'��~���E�$�$�|�L�'A�A�B�Y�N�
�N��E�$�$�|�L�'A�A�B�Y�N�
�N��E�&�&��n�)E�E�F��M�
�M��E�&�&��n�)E�E�F��M�
�M��u�{�{�\�'�%:�:�;�b�@�@�@��u�|�|�l�8�&<�<�=��B�B�B��u�|�|�l�8�&<�<�=��B�B�B��u�}�}�|�I�'>�>�?�"�D�D�D�)'�� �
��
�s�D?�?	E�EN)
r�r�r�rr`rardrerr�r�rpr1r�r�
sK���[�[����F�L�L��$�$�-M�����+E���+Erpr�c�t�eZdZejde��ejdd��d���Zd�Zy)	�TestSystemNetConnectionsz psutil._pslinux.socket.inet_ntoprQzpsutil._pslinux.supports_ipv6Frqc��tjtjtj�5}	|jd�tjd��ddd�y#t$rY�*wxYw#1swYyxYw)N)z::1r�inet6��kind)r%rG�SOCK_STREAM�bind�OSErrorr��net_connections)r��
supports_ipv6rHr0s    r1�test_emulate_ipv6_unsupportedz6TestSystemNetConnections.test_emulate_ipv6_unsupported@sf���]�]�6�?�?�F�,>�,>�
?�1�
����z�"�
�"�"��0�@�
?���
��
��@�
?�s.�A4�A%�A4�%	A1�.A4�0A1�1A4�4A=c��tjd�}td|i�5}tjd��|j
sJ�	ddd�y#1swYyxYw)Na            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
            z/proc/net/unix�unixr�)r�r�r�r�r�r�)r�r�r�s   r1�test_emulate_unixz*TestSystemNetConnections.test_emulate_unixKsL���/�/�#���� 0�'�:�
;�q��"�"��/��8�8�O�8�<�
;�
;�s�%A�AN)r�r�r�rr�rCr�rr�rpr1r�r�>s?���T�Z�Z�2�
�K��T�Z�Z�/�e�D�1�E�L�1�	rpr�c��eZdZejjeed�d��e�d���Z	d�Z
d�Zy)�TestSystemDiskPartitions�statvfszos.statvfs() not availabler�c�R�d�}tjd��D]�}tj|j�}||j�\}}}}|j|k(sJ�t|j|z
�tksJ�t|j|z
�tkr��J�y)Nc�.�td|�d��j�}|jd�}|jd�|jd�}|j�dd\}}}}|dk(rd}t	|�t	|�t	|�}}}||||fS)Nzdf -P -B 1 "�"rcrr=�nonerU)rr�r@�poprh)rbrirjrK�devrlrmr]s        r1�dfz4TestSystemDiskPartitions.test_against_df.<locals>.dfes����|�D�6��+�,�2�2�4�C��I�I�d�O�E��I�I�a�L��9�9�Q�<�D�%)�Z�Z�\�"�1�%5�"�C���d��f�}��� #�E�
�C��I�s�4�y��4�E���t�T�)�)rpF)�all)	r��disk_partitions�
disk_usage�
mountpointrlr�r]r
rm)r�r�part�usagerkrlrmr]s        r1�test_against_dfz(TestSystemDiskPartitions.test_against_df^s���		*��*�*�u�5�D��%�%�d�o�o�6�E�#%�d�o�o�#6� �A�u�d�D��;�;�%�'�'�'��u�z�z�D�(�)�,@�@�@�@��u�z�z�D�(�)�,@�@�@�@�6rpc�0�td�5}|j�}ddd�dvr*tj�D]}|jdk(s�ytjd�}tjd|d��5}tjddg�	�5}tj�}|jsJ�|jsJ�|sJ�|d
jdk(sJ�	ddd�ddd�y#1swY��xYw#1swY�xYw#1swYyxYw)Nz/proc/filesystems�zfsz
nodev	zfs
rTrU�$psutil._pslinux.cext.disk_partitions)z	/dev/sdb3�/r�rwrqr)
r?rr�r�fstyper�r�rr�r�)r�rIrrr^rwrxr�s        r1�test_zfs_fsz$TestSystemDiskPartitions.test_zfs_fsws���
�%�
&�!��6�6�8�D�'��D�=��.�.�0���;�;�%�'��1�
�K�K��/�	�
�Z�Z�!�	�$�
�
����6�=�>����,�,�.���y�y� �y��y�y� �y��
�s��1�v�}�}��-�-�-��
�
�'�
&�����
�
�s0�C4�D�A	D�#D�4C=�D		�D�Dc�6�	tjdd��5}tjt�5tj�ddd�|jsJ�	ddd�dt
_y#1swY�,xYw#1swY�!xYw#dt
_wxYw)Nzos.path.realpathz
/non/existentrq�/proc)	rr�r�raisesr�r�rr��PROCFS_PATHr s  r1�test_emulate_realpath_failz3TestSystemDiskPartitions.test_emulate_realpath_fail�sr��	)����"�����]�]�#4�5��*�*�,�6��x�x��x��")�F��	6�5�����")�F��s9�B�A?�A3�A?�B�3A<	�8A?�?B�B�
BN)r�r�r�rr`ra�hasattrr0rrrrr�rpr1rr\sQ���[�[����B�	�"�"�+G�����A���A�*.�0
)rprc�6�eZdZd�Zd�Zd�Zd�Zd�Zd�Zd�Z	y)	�TestSystemDiskIoCountersc� �d}td|i�5tjdd��5tjd��}|j
dk(sJ�|jd	k(sJ�|jd
tzk(sJ�|jdk(sJ�|jdk(sJ�|jd
k(sJ�|jdtzk(sJ�|jdk(sJ�|jdk(sJ�	ddd�ddd�y#1swY�xYw#1swYyxYw)Nz+   3     0   1 hda 2 3 4 5 6 7 8 9 10 11 12�/proc/diskstats�!psutil._pslinux.is_storage_deviceTrqF�r�ryr&r,r=rzr(��r��r�rr�r��disk_io_counters�
read_count�read_merged_count�
read_bytes�SECTOR_SIZE�	read_time�write_count�write_merged_count�write_bytes�
write_time�	busy_time�r�r�r�s   r1�test_emulate_kernel_2_4z0TestSystemDiskIoCounters.test_emulate_kernel_2_4�s
��@��
� 1�7�;�
<����3�$���-�-�U�;���~�~��*�*�*��,�,��1�1�1��~�~��[��8�8�8��}�}��)�)�)����!�+�+�+��-�-��2�2�2����!�k�/�9�9�9��~�~��*�*�*��}�}��*�*�*��=�
<����=�
<��#�D�B>C8�'D�8D	�=D�D
c� �d}td|i�5tjdd��5tjd��}|j
dk(sJ�|jd	k(sJ�|jd
tzk(sJ�|jdk(sJ�|jdk(sJ�|jd
k(sJ�|jdtzk(sJ�|jdk(sJ�|jdk(sJ�	ddd�ddd�y#1swY�xYw#1swYyxYw)Nz'   3    0   hda 1 2 3 4 5 6 7 8 9 10 11r$r%TrqFr&ryr&r,r=rzr(r'r(r�r)r5s   r1�test_emulate_kernel_2_6_fullz5TestSystemDiskIoCounters.test_emulate_kernel_2_6_full�s	��<��
� 1�7�;�
<����3�$���-�-�U�;���~�~��*�*�*��,�,��1�1�1��~�~��[��8�8�8��}�}��)�)�)����!�+�+�+��-�-��2�2�2����!�k�/�9�9�9��~�~��*�*�*��}�}��*�*�*��=�
<����=�
<�r7c��tddi�5tjdd��5tjd��}|j
dk(sJ�|jd	tzk(sJ�|jd
k(sJ�|jdtzk(sJ�|jdk(sJ�|jdk(sJ�|jdk(sJ�|jdk(sJ�|jdk(sJ�	ddd�ddd�y#1swY�xYw#1swYyxYw)
Nr$z   3    1   hda 1 2 3 4r%TrqFr&ryr&r,r=r)r�rr�r�r*r+r-r.r0r2r,r/r1r3r4)r�r�s  r1�test_emulate_kernel_2_6_limitedz8TestSystemDiskIoCounters.test_emulate_kernel_2_6_limited�s��� 1�3L�M�
N����3�$���-�-�U�;���~�~��*�*�*��~�~��[��8�8�8����!�+�+�+����!�k�/�9�9�9��,�,��1�1�1��}�}��)�)�)��-�-��2�2�2��~�~��*�*�*��}�}��)�)�)��O�
N����O�
N�s#�D�B>C6�%D�6C?	�;D�Dc��tjd�}td|i�5tjdd��5tjdd��}t|�dk(sJ�|d	jd
k(sJ�|djd
k(sJ�|d	jdk(sJ�|djdk(sJ�	ddd�ddd�y#1swY�xYw#1swYyxYw)
N�x            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
            r$r%FrqT��perdiskr�r&�nvme0n1ry�	nvme0n1p1rz)
r�r�r�rr�r�r*rBr+r0r5s   r1�test_emulate_include_partitionsz8TestSystemDiskIoCounters.test_emulate_include_partitions�s����/�/�#���� 1�7�;�
<����3�%���-�-�d�5�I���3�x�1�}�$�}��9�~�0�0�A�5�5�5��;�'�2�2�a�7�7�7��9�~�1�1�Q�6�6�6��;�'�3�3�q�8�8�8��=�
<����=�
<�s#�C�A8C�4C�C	�
C�Cc�D�tjd�}td|i�5tjdd��5tjdd��}|�J�	ddd�ddd�d�}tjd�}td|i�5tjdd|�	�5tjdd��}|jd
k(sJ�|jdk(sJ�	ddd�ddd�y#1swY��xYw#1swY��xYw#1swY�*xYw#1swYyxYw)Nr=r$r%Frqr>c��|dk(S)Nr@r��r�s r1�is_storage_devicezSTestSystemDiskIoCounters.test_emulate_exclude_partitions.<locals>.is_storage_device�s
���9�$�$rpTr�ryrz)	r�r�r�rr�r�r*r+r0)r�r�r�rFs    r1�test_emulate_exclude_partitionsz8TestSystemDiskIoCounters.test_emulate_exclude_partitions�s���/�/�#���� 1�7�;�
<����3�%���-�-�e�E�J���{�"�{�	�=�	%��/�/�#���� 1�7�;�
<����3��-��
�-�-�e�E�J���~�~��*�*�*����!�+�+�+��=�
<����=�
<�����=�
<�sF�C>�C2�C>�
D�&:D
�!D�2C;	�7C>�>D�
D	�D�Dc���d�}tjd��}tjdd|��5tjd��}ddd�t	|�t	�k(sJ�y#1swY�#xYw)Nc��|dk(S)Nr$r��rbs r1rcz?TestSystemDiskIoCounters.test_emulate_use_sysfs.<locals>.existss���,�,�,rpT)r?�psutil._pslinux.os.path.existsr�)r�r*rr�rB)r�rc�wprocfs�wsysfss    r1�test_emulate_use_sysfsz/TestSystemDiskIoCounters.test_emulate_use_sysfssf��	-��)�)�$�7��
�Z�Z�,�T�v�
��,�,�T�:�F�
��7�|�s�6�{�*�*�*�	
�
�s�A+�+A4c���d�}tjdd|��5tjt�5tj�ddd�ddd�y#1swY�xYw#1swYyxYw)Nc��y)NFr�rJs r1rcz>TestSystemDiskIoCounters.test_emulate_not_impl.<locals>.existss��rprKTr�)rr�rr�NotImplementedErrorr�r*)r�rcs  r1�test_emulate_not_implz.TestSystemDiskIoCounters.test_emulate_not_implsZ��	��Z�Z�,�T�v�
����2�3��'�'�)�4�
�
�4�3��
�
�s"�A(�A�A(�A%	�!A(�(A1N)
r�r�r�r6r9r;rBrGrNrRr�rpr1r"r"�s&��+�&+�(*�,9�&,�@	+�*rpr"c��eZdZd�Zd�Zejjed��d��Z	ejje
jd�d��ejjed��d���Zd	�Z
y
)�TestRootFsDeviceFinderc��tjd�j}tj|�|_tj|�|_y)Nr)r0r��st_dev�major�minor)r�rs  r1�setUpzTestRootFsDeviceFinder.setUp&s3���g�g�c�l�!�!���X�X�c�]��
��X�X�c�]��
rpc�&�t�}tjjd�r|j	�n2tjt�5|j	�ddd�tjjd|j�d|j�d��r|j�n2tjt�5|j�ddd�|j�y#1swY��xYw#1swY�&xYw�Nz/proc/partitionsz/sys/dev/block/r>z/uevent)rr0rbrc�ask_proc_partitionsrrr�rWrX�ask_sys_dev_block�ask_sys_class_block)r��finders  r1�test_call_methodsz(TestRootFsDeviceFinder.test_call_methods+s���#�%��
�7�7�>�>�,�-��&�&�(����0�1��*�*�,�2�
�7�7�>�>�O�D�J�J�<�q�����G�L�M��$�$�&����0�1��(�(�*�2��"�"�$�2�1��
2�1�s�C;�D�;D�Dzunsupported on GITHUB_ACTIONSr�c��t�}|j��J�dx}x}}tjj	d�r|j�}tjj	d|j�d|j�d��r|j�}|j�}|xs|xs|}|r	|r||k(sJ�|r	|r||k(sJ�|r|r||k(sJ�yyyr[)
r�findr0rbrcr\rWrXr^r])r�r_r�r��c�bases      r1�test_comparisonsz'TestRootFsDeviceFinder.test_comparisons9s���#�%���{�{�}�(�(�(�����A��
�7�7�>�>�,�-��*�*�,�A�
�7�7�>�>�O�D�J�J�<�q�����G�L�M��*�*�,�A��$�$�&���{�A�{����A��1�9��9��A��1�9��9��A��1�9��9��4rp�findmntzfindmnt utility not availablec�X�t�j�}td�}||k(sJ�y)Nzfindmnt -o SOURCE -rn /)rrbr)r�r��
findmnt_values   r1�test_against_findmntz+TestRootFsDeviceFinder.test_against_findmntMs.��
*�+�0�0�2���4�5�
��}�,�,�,rpc�F�tjddg��5}tj�d}|jsJ�t
s8|jdk7sJ�|jt�j�k(sJ�|jdk(sJ�ddd�y#1swYyxYw)Nr)�	/dev/rootr�ext4rrqrrk)	rr�r�rr�r�devicerrb)r�r�rs   r1�test_disk_partitions_mockedz2TestRootFsDeviceFinder.test_disk_partitions_mockedVs���
�Z�Z�2�:�;�
���)�)�+�A�.�D��8�8�O�8�!��{�{�k�1�1�1��{�{�&8�&:�&?�&?�&A�A�A�A��{�{�k�1�1�1�
�
�
�s�A5B�B N)r�r�r�rYr`rr`rarrerdrerirnr�rpr1rTrT$s���#�
%��[�[����/N��O��P��&�[�[����F�L�L��#�#�,K����[�[����/N��O�-�P��-�
2rprTc��eZdZd�Zd�Zd�Zd�Zd�Zd�Ze	�e
jjd��d	���Z
d
�Zy)�TestMiscc�t�td�}tj�}t|�t|�k(sJ�y)Nz	boot time)r~r��	boot_timerhr�s   r1�test_boot_timezTestMisc.test_boot_timeks2���k�*���'�'�)���<� �C��$5�5�5�5rpc	�	��|j�}tj|�ttjj|d�d�5}|j
d�|j
d�|j
d�ddd�	t��fd�}tjd|��5tt�tjt�5tj�ddd�tjt�5tjd	�
�ddd�tjt�5tj�ddd�tjt�5tjd	�
�ddd�tjt�5tj �ddd�tjt�5tj d	�
�ddd�|t_tj�dk(sJ�t%tj ��dk(sJ�tjd	�
�}t%|�dk(sJ�tj d	�
�}t%t't$|��dk(sJ�ttjj|d�d�5}|j
d�|j
d
�|j
d�ddd�tj�dk7sJ�t%tjd	�
��dk7sJ�t%tj ��dk7sJ�t%t't$tj d	�
���dk7sJ�	ddd�t)j*|�tt�tj"dk(sJ�y#1swY��axYw#1swY��xYw#1swY���xYw#1swY���xYw#1swY���xYw#1swY��]xYw#1swY��2xYw#1swY��9xYw#1swY��xYw#t)j*|�tt�wxYw)Nr�r�zcpu   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
c�J��|jd�rt��|g|��i|��S)Nr)rer�r�s   �r1r�z4TestMisc.test_no_procfs_on_import.<locals>.open_mock|s*����?�?�7�+�+�+� ��7��7��7�7rpr�rQTr�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_testfnr0�mkdirr?rbrE�writerr�rr�rrr�r.�cpu_percent�cpu_times_percentr�sumr�rd�rmtree)r��	my_procfsrIr��per_cpu_percent�per_cpu_times_percentr�s      @r1�test_no_procfs_on_importz!TestMisc.test_no_procfs_on_importps%����O�O�%�	�
�����
�"�'�'�,�,�y�&�1�3�
7�1�
�G�G�1�2�
�G�G�1�2�
�G�G�1�2�8�
4	"��I�
8�
���O��C��f�%��]�]�7�+��$�$�&�,��]�]�7�+��$�$�D�1�,��]�]�7�+��&�&�(�,��]�]�7�+��&�&�d�3�,��]�]�7�+��,�,�.�,��]�]�7�+��,�,�D�9�,�&/��"��)�)�+�q�0�0�0��6�3�3�5�6�!�;�;�;�#)�"4�"4�D�"A���?�+�q�0�0�0�)/�(@�(@��(M�%��3�s�$9�:�;�q�@�@�@��"�'�'�,�,�y�&�9�3�?�1��G�G�9�:��G�G�9�:��G�G�9�:�@�
�)�)�+�q�0�0�0��6�-�-�T�:�;�q�@�@�@��6�3�3�5�6�!�;�;�;���C��!9�!9��!F�G�H�A�M��M�QD�V
�M�M�)�$��&�!��!�!�W�,�,�,�w8�
7�� ,�+��+�+��+�+��+�+��+�+��+�+��$@�?��?D�C��V
�M�M�)�$��&�!�s��4O$�"Q�0)Q�O1�.!Q�O>�&!Q�P�!Q�=P�!Q�5P%�
!Q�+P2�CQ�4P?�BQ�"Q�$O.�1O;	�6Q�>P	�Q�P	�Q�P"	�Q�%P/	�*Q�2P<	�7Q�?Q		�Q�Q�Q�&Q>c���tjd�j�}td|i�5}t	j
�|jsJ�t	j
d��t	j�t	jd��ddd�tjd�j�}td|i�5t	j
�}jsJ�t	j
d��}t	j�}t	jd��}|dk7sJ�t|�dk7sJ�t|�dk7sJ�t|�dk7sJ�ttt|��dk7sJ�ttt|��dk7sJ�|jdk(sJ�|jdk7sJ�	ddd�y#1swY��<xYw#1swYyxYw)Nz~            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
            rRTr�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
            rr�)r�r�r�r�r�ryr�rzr{r�r*�user)r�r�r�ry�cpu_percent_percpurz�cpu_times_percent_percpus       r1�test_cpu_steal_decreasez TestMisc.test_cpu_steal_decrease�s����/�/�#�����		�
��g�6�
7�1�
��� ��8�8�O�8����d�+��$�$�&��$�$�D�1�8��/�/�#�����		�
��g�6�
7� �,�,�.�K��8�8�O�8�!'�!3�!3�4�!@�� &� 8� 8� :��'-�'?�'?�t�'L�$��!�#�#�#��)�*�a�/�/�/��(�)�Q�.�.�.��(�)�U�2�2�2��s�3� 8�9�:�a�?�?�?��s�3� 8�9�:�e�C�C�C�$�*�*�a�/�/�/�$�)�)�Q�.�.�.�8�
7�8�
7��8�
7�s�A#G�C8G�G�G$c��tjdd��5}tjt�5t
jj�ddd�|jsJ�	ddd�y#1swY�!xYw#1swYyxYw)NrTr)	rr�rrr�r�rXrrr�r s  r1�test_boot_time_mockedzTestMisc.test_boot_time_mocked�sW��
�Z�Z�-�d�
;�q����|�,����)�)�+�-��8�8�O�8�<�
;�,�,��<�
;�s"�A=�A1�A=�1A:	�6A=�=Bc�V�tj�D]}|jdvr�J�y)N>�:0�:0.0)r��users�host)r�r�s  r1�
test_userszTestMisc.test_users�s&���L�L�N�D��9�9�N�2�2�2�#rpc�d�|j�}tj|�	|t_tjt�5tj�ddd�tjt�5tj�ddd�tjt�5tjd��ddd�tjt�5tj�ddd�tjt�5tj�ddd�tjt�5tj�ddd�tjt�5tj�ddd�tjt�5tj�ddd�tjtj�5tj �ddd�dt_y#1swY���xYw#1swY���xYw#1swY��~xYw#1swY��UxYw#1swY��,xYw#1swY��xYw#1swY��xYw#1swY��xYw#1swY�{xYw#dt_wxYw)NTr�r)rvr0rwr�rrrr�r�r.rrr�r�r�r�
NoSuchProcess�Process)r��tdirs  r1�test_procfs_pathzTestMisc.test_procfs_path�s������ ��
�����	)�!%�F�����w�'��%�%�'�(����w�'�� � �"�(����w�'�� � ��-�(����w�'�� � �"�(����w�'��&�&�(�(����w�'��&�&�(�(����w�'��#�#�%�(����w�'��&�&�(�(����v�3�3�4���� �5�")�F��'(�'��'�'��'�'��'�'��'�'��'�'��'�'��'�'��4�4��")�F��s��$J"�H0� !J"�H=�!J"�7I
�!J"�/I�!J"�%I$�:!J"�I1�0!J"�I>�&!J"�J
�+J"�J�J"�0H:�5J"�=I�J"�
I�J"�I!�J"�$I.�)J"�1I;�6J"�>J�J"�
J�J"�J�J"�"
J/�serialrEc��tj�}t|j��}t	�5|j�}t|�|dzk(sJ�t|d���dj}|j|k7sJ�tj|�}|j�|tj�vsJ�	ddd�y#1swYyxYw)Nryc��|jSrt)�id)rws r1�<lambda>z)TestMisc.test_issue_687.<locals>.<lambda>s����rp)�key)
r�r�rB�threadsr�sortedr��pid�as_dict�pids)r��p�nthreadsr��tid�pts      r1�test_issue_687zTestMisc.test_issue_687�s���
�N�N����q�y�y�{�#��
�\��i�i�k�G��w�<�8�a�<�/�/�/���n�5�a�8�;�;�C��5�5�C�<��<�����$�B��J�J�L��f�k�k�m�+�+�+��\�\�s�B
C�Cc��tddi�5}tjtj��sJ�|j
sJ�	ddd�y#1swYyxYw)Nz/proc/%s/statusrU)r�r��
pid_existsr0�getpidr�r s  r1�test_pid_exists_no_proc_statusz'TestMisc.test_pid_exists_no_proc_statussE��� 1�2�6�
7�1��$�$�R�Y�Y�[�1�1�1��8�8�O�8�8�
7�
7�s�8A�AN)r�r�r�rsr�r�r�r�r�rrr`�xdist_groupr�r�r�rpr1rprpisX��6�
?-�B%/�N�3�)�4���[�[���(��+�,�,��,�$rprpz
no batteryc��eZdZejjejd�d��d��Zd�Z	d�Z
d�Zd�Zd	�Z
d
�Zd�Zd�Zy
)�TestSensorsBattery�acpizacpi utility not availabler�c���td�}t|jd�dj�j	dd��}tj�j}t||z
�dksJ�y)Nzacpi -briryr�rU)	rrhr@r��replacer��sensors_battery�percentr�)r�ri�
acpi_valuer�s    r1�test_percentzTestSensorsBattery.test_percent#sf����m������3���*�0�0�2�:�:�3��C�D�
��-�-�/�7�7���:��,�-��1�1�1rpc�8���fd�}t�tjd|��5}tj�j
dusJ�tj�jtjk(sJ�|jsJ�	ddd�y#1swYyxYw)Nc�h��|jd�rtjd�S�|g|��i|��S)N�z
AC0/onlinez	AC/online�1�r�r�r�r�s   �r1r�z@TestSensorsBattery.test_emulate_power_plugged.<locals>.open_mock.�4����}�}�8�9��z�z�$�'�'� ��7��7��7�7rpr�rQT)	r?rr�r�r��
power_plugged�secsleft�POWER_TIME_UNLIMITEDr��r�r�r�r�s   @r1�test_emulate_power_pluggedz-TestSensorsBattery.test_emulate_power_plugged,s����	8��	�
�Z�Z��Y�
?�1��)�)�+�9�9�T�A�A�A��&�&�(�1�1��.�.�/�
�/��8�8�O�8�
@�
?�
?�s�A"B�Bc�����fd�}t�tjd|��5}tj�j
dusJ�|jsJ�	ddd�y#1swYyxYw)Nc���|jd�rt�|jd�rtjd�S�|g|��i|��S)Nr��/status�charging�r�r�r�r�r�s   �r1r�zBTestSensorsBattery.test_emulate_power_plugged_2.<locals>.open_mock@sF����}�}�8�9�'�'��}�}�Y�'��{�{�:�.�.� ��7��7��7�7rpr�rQT�r?rr�r�r�r�r�r�s   @r1�test_emulate_power_plugged_2z/TestSensorsBattery.test_emulate_power_plugged_2=sT���	8��	�
�Z�Z��Y�
?�1��)�)�+�9�9�T�A�A�A��8�8�O�8�@�
?�
?���1A�A(c�����fd�}t�tjd|��5}tj�j
dusJ�|jsJ�	ddd�y#1swYyxYw)Nc�h��|jd�rtjd�S�|g|��i|��S)Nr��0r�r�s   �r1r�zDTestSensorsBattery.test_emulate_power_not_plugged.<locals>.open_mockOr�rpr�rQFr�r�s   @r1�test_emulate_power_not_pluggedz1TestSensorsBattery.test_emulate_power_not_pluggedMsT���	8��	�
�Z�Z��Y�
?�1��)�)�+�9�9�U�B�B�B��8�8�O�8�@�
?�
?�r�c�����fd�}t�tjd|��5}tj�j
dusJ�|jsJ�	ddd�y#1swYyxYw)Nc���|jd�rt�|jd�rtjd�S�|g|��i|��S)Nr�r��dischargingr�r�s   �r1r�zFTestSensorsBattery.test_emulate_power_not_plugged_2.<locals>.open_mock]sF����}�}�8�9�'�'��}�}�Y�'��{�{�=�1�1� ��7��7��7�7rpr�rQFr�r�s   @r1� test_emulate_power_not_plugged_2z3TestSensorsBattery.test_emulate_power_not_plugged_2ZsT���	8��	�
�Z�Z��Y�
?�1��)�)�+�9�9�U�B�B�B��8�8�O�8�@�
?�
?�r�c�����fd�}t�tjd|��5}tj�j
�J�|jsJ�	ddd�y#1swYyxYw)Nc���|jd�rt�|jd�rtjd�S�|g|��i|��S)N)�"/sys/class/power_supply/AC0/online�!/sys/class/power_supply/AC/online�#/sys/class/power_supply/BAT0/statuss???)rer�r�r�r�s   �r1r�zETestSensorsBattery.test_emulate_power_undetermined.<locals>.open_mockmsM������ ��(�'����D�E��z�z�&�)�)� ��7��7��7�7rpr�rQr�r�s   @r1�test_emulate_power_undeterminedz2TestSensorsBattery.test_emulate_power_undeterminedjsR���		8��	�
�Z�Z��Y�
?�1��)�)�+�9�9�A�A�A��8�8�O�8�@�
?�
?�s�/A�A&c��tddi�5}tj�jdk(sJ�|jsJ�	ddd�y#1swYyxYw)N�(/sys/class/power_supply/BAT0/energy_fullr�r)r�r�r�r�r�r s  r1�test_emulate_energy_full_0z-TestSensorsBattery.test_emulate_energy_full_0}sM��
�
7��>�
�
��)�)�+�3�3�q�8�8�8��8�8�O�8�	
�
�
�s�2A
�
Ac�$�tdt�5tdt�5tddi�5tj�j
dk(sJ�	ddd�ddd�ddd�y#1swY�xYw#1swY�xYw#1swYyxYw)Nr�z(/sys/class/power_supply/BAT0/charge_fullz%/sys/class/power_supply/BAT0/capacitys88�X)r�r�r�r�r�r��r�s r1�"test_emulate_energy_full_not_availz5TestSensorsBattery.test_emulate_energy_full_not_avail�s���!�6��
�%�:�!��'�<�e�D��"�1�1�3�;�;�r�A�A�A��	�	
�
����	���	
�
�s9�B�A:�$A.�A:�B�.A7�3A:�:B	�?B�Bc�$�tdt�5tdt�5tdt�5tj�j�J�	ddd�ddd�ddd�y#1swY�xYw#1swY�xYw#1swYyxYw)Nr�r�r�)r�r�r�r�r�r�s r1�test_emulate_no_powerz(TestSensorsBattery.test_emulate_no_power�s���
 �/�1B�
�%�4�6G��)�9�%��"�1�1�3�A�A�I�I�I�	��
�
�������
�
�s9�B�A:�!A.�A:�B�.A7�3A:�:B	�?B�BN)r�r�r�rr`rardrer�r�r�r�r�r�r�r�r�r�rpr1r�r� sh���[�[����F�L�L�� � �)E���2��2��"� �� �&�B� Jrpr�c��eZdZd�Zy)�TestSensorsBatteryEmulatedc�4���fd�}t�tjddg��5}tjd|��5}tj��J�	ddd�ddd�j
sJ�j
sJ�y#1swY�.xYw#1swY�2xYw)Nc���|jd�rtjd�S|jd�rtjd�S|jd�rtjd�S�|g|��i|��S)Nz/energy_now�60000000z
/power_now�0z/energy_full�60000001�r�r�r�r�s   �r1r�z5TestSensorsBatteryEmulated.test_it.<locals>.open_mock�si����}�}�]�+��{�{�:�.�.����|�,��{�{�3�'�'����~�.��{�{�:�.�.� ��7��7��7�7rpz
os.listdir�BAT0rqr�rQ)r?rr�r�r�r�)r�r��mlistdir�mopenr�s    @r1�test_itz"TestSensorsBatteryEmulated.test_it�s~���	8��	�
�Z�Z��F�8�
<�����O��C�u��-�-�/�;�;�;�D�=�������|�|��|�D�C��=�
<�s"�B�B�B�B	�B�BN)r�r�r�r�r�rpr1r�r��s��rpr�c��eZdZd�Zd�Zy)�TestSensorsTemperaturesc����fd�}t�tjd|��5tjddg��5tj�dd}|j
d	k(sJ�|jd
k(sJ�|jdk(sJ�|jdk(sJ�	ddd�ddd�y#1swY�xYw#1swYyxYw)
Nc���|jd�rtjd�S|jd�rtjd�S|jd�rtjd�S|jd�rtjd�S|jd	�rtjd
�S�|g|��i|��S)N�/namer�z/temp1_label�labelz/temp1_input�30000z
/temp1_maxs40000z/temp1_crit�50000)r�r�r�r�r�s   �r1r�zCTestSensorsTemperatures.test_emulate_class_hwmon.<locals>.open_mock�s�����}�}�W�%��{�{�6�*�*����~�.��{�{�7�+�+����~�.��z�z�(�+�+����|�,��z�z�(�+�+����}�-��z�z�(�+�+� ��7��7��7�7rpr�rQrpz/sys/class/hwmon/hwmon0/temp1rqr�rr��>@gD@�I@�	r?rr�r��sensors_temperaturesr�r��high�critical)r�r��tempr�s   @r1�test_emulate_class_hwmonz0TestSensorsTemperatures.test_emulate_class_hwmon�s����	8��	�
�Z�Z��Y�
?�����+J�*K���2�2�4�V�<�Q�?���z�z�W�,�,�,��|�|�t�+�+�+��y�y�D�(�(�(��}�}��,�,�,��@�
?����@�
?�s#�B:�AB.�B:�.B7	�3B:�:Cc����fd�}d�}t�tjd|��5tjdd|��5tj�dd	}|j
d
k(sJ�|jdk(sJ�|jdk(sJ�|jdk(sJ�	ddd�ddd�y#1swY�xYw#1swYyxYw)
Nc�L��|jd�rtjd�S|jd�rtjd�S|jd�rtjd�S|jd�rtjd�S�|g|��i|��S)	N�0_tempr�r�r��0_typer��typer�)r�r�r�r�r�s   �r1r�zETestSensorsTemperatures.test_emulate_class_thermal.<locals>.open_mock�s�����}�}�X�&��z�z�(�+�+����v�&��z�z�(�+�+����x�(��{�{�:�.�.����v�&��{�{�6�*�*� ��7��7��7�7rpc�4�|dvrgS|dk(rdgS|dk(rddgSgS)N>�/sys/class/hwmon/hwmon*/temp*_*�&/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_tempr�rJs r1�	glob_mockzETestSensorsTemperatures.test_emulate_class_thermal.<locals>.glob_mock�sH������	��;�;�:�;�;��G�G�H�H����Irpr�rQrpTr�r�rrUr�r�r�)r�r�r�r�r�s    @r1�test_emulate_class_thermalz2TestSensorsTemperatures.test_emulate_class_thermal�s����
	8�
	��	�
�Z�Z��Y�
?����K��)�L��2�2�4�V�<�Q�?���z�z�R�'�'�'��|�|�t�+�+�+��y�y�D�(�(�(��}�}��,�,�,�M�@�
?�L�L��@�
?�s$�B=�AB1� B=�1B:	�6B=�=CN)r�r�r�r�rr�rpr1r�r��s��-�6#-rpr�c��eZdZd�Zy)�TestSensorsFansc�H���fd�}t�tjd|��5tjddg��5tj�dd}|j
d	k(sJ�|jd
k(sJ�	ddd�ddd�y#1swY�xYw#1swYyxYw)Nc���|jd�rtjd�S|jd�rtjd�S|jd�rtjd�S�|g|��i|��S)Nr�r�z/fan1_labelr�z/fan1_input�2000r�r�s   �r1r�z4TestSensorsFans.test_emulate_data.<locals>.open_mock�si����}�}�W�%��{�{�6�*�*����}�-��{�{�7�+�+����}�-��{�{�6�*�*� ��7��7��7�7rpr�rQrpz/sys/class/hwmon/hwmon2/fan1rqr�rr�i�)r?rr�r��sensors_fansr�r�)r�r��fanr�s   @r1r�z!TestSensorsFans.test_emulate_data�s����	8��	�
�Z�Z��Y�
?�����+I�*J���)�)�+�F�3�A�6���y�y�G�+�+�+��{�{�d�*�*�*��@�
?����@�
?�s"�B�=B�;B�B	�B�B!N)r�r�r�r�r�rpr1rr�s��+rprc���eZdZe�d��Zd�Zd�Zd�Zd�Zd�Z	d�Z
d�Zd	�Zd
�Z
d�Zd�Zd
�Zd�Zd�Zd�Zej*j-ed��d��Zd�Zd�Zd�Zd�Zy)�TestProcessc���|j�}tjj|j�j�\}}}tj|j�j
d��}t|td�|D��z
�dksJ�t|td�|D��z
�dksJ�t|td�|D��z
�dksJ�y)NF)�groupedc3�NK�|]}|j|jz���y�wrt)�
private_dirty�
private_cleanrus  r1rxz>TestProcess.test_parse_smaps_vs_memory_maps.<locals>.<genexpr> s����J�T��!�/�/�A�O�O�;�T�s�#%r�c3�4K�|]}|j���y�wrt)�pssrus  r1rxz>TestProcess.test_parse_smaps_vs_memory_maps.<locals>.<genexpr>#s����1�D�q�Q�U�U�D���c3�4K�|]}|j���y�wrt)rrus  r1rxz>TestProcess.test_parse_smaps_vs_memory_maps.<locals>.<genexpr>$s����3�d��a�f�f�d�r)	�
spawn_subprocr�rXr�r��_parse_smaps�memory_mapsr�r{)r��sproc�ussrr�mapss      r1�test_parse_smaps_vs_memory_mapsz+TestProcess.test_parse_smaps_vs_memory_mapss����"�"�$�����0�0����;�H�H�J���S�$��~�~�e�i�i�(�4�4�U�4�C����c�J�T�J�J�J�K��
�	
�
��3��1�D�1�1�1�2�T�9�9�9��4�#�3�d�3�3�3�4�t�;�;�;rpc��tjd�j�}tdt	j
��d�|i�5}tjjt	j
��}|j�\}}}|jsJ�|dk(sJ�|dk(sJ�|dk(sJ�	ddd�y#1swYyxYw)Nan            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
            �/proc/�/smapsilr�i<)r�r�r�r�r0r�r�rXr�rr�)r�r�r�r�rrrs       r1�test_parse_smaps_mockedz#TestProcess.test_parse_smaps_mocked&s����/�/�#��,���-	�.�&�����
�V� <�g�F�
G�1����'�'��	�	��4�A��^�^�-�N�C��d��8�8�O�8��-�-�-�-��(�?�"�?��9�$�$�$�
H�
G�
G�s
�A)B:�:Cc���d�}|j�}t|d�5||�jdk(sJ�	ddd�t|�5||�jdk(sJ�	ddd�t|d�5||�jdk(sJ�	ddd�t|d�5||�jdk(sJ�	ddd�t|d�5||�jdk(sJ�	ddd�t|d�5||�jdk(sJ�	ddd�t|�t|d�5||�jdk(sJ�	ddd�t|�t|d	�5||�jdk(sJ�	ddd�y#1swY��[xYw#1swY��<xYw#1swY��xYw#1swY��xYw#1swY��xYw#1swY��xYw#1swY��xYw#1swYyxYw)
Nc� �tj�}tj�tz}	|j	�D]K}|j
tj
j|�k(r|cStj�|kDs�Kn�_rt)	r�r��timer�
open_filesrbr0�abspathr�)�fnamer��	giveup_at�files    r1�
get_test_filez7TestProcess.test_open_files_mode.<locals>.get_test_fileHse����� �A��	�	��n�4�I���L�L�N�D��y�y�B�G�G�O�O�E�$:�:�#������y�0��	+�rpr��rr�zr+zw+za+rwzx+)rvr?�moder)r�r&�testfns   r1�test_open_files_modez TestProcess.test_open_files_modeGs���		@����"��
�&�#�
� ��(�-�-��4�4�4��
�&�\� ��(�-�-��4�4�4��
�&�#�
� ��(�-�-��4�4�4��
�&�$�
� ��(�-�-��5�5�5� �
�&�$�
� ��(�-�-��5�5�5� �
�&�$�
� ��(�-�-��5�5�5� �	�F��
�&�#�
� ��(�-�-��4�4�4���F��
�&�$�
� ��(�-�-��5�5�5� �
�#�
��
�\��
�
��
�
��
�
��
�
���
�� �
�s_�F�F�9F,�&F9�G�G�8G�0G)�F�F)�,F6�9G�G�G�G&�)G2c�D���tj���j��t|j	�d�5t��fd��t
jdt��5}�j�gk(sJ�|jsJ�	ddd�t
jdttjd���5}�j�gk(sJ�|jsJ�	ddd�ddd�y#1swY�nxYw#1swY�xYw#1swYyxYw)Nr�c�N��t�j��t��k7Srt�rBr!��filesr�s��r1r�z7TestProcess.test_open_files_file_gone.<locals>.<lambda>o����s�1�<�<�>�2�c�%�j�@rp�psutil._pslinux.os.readlinkrQrU)
r�r�r!r?rvrrr�r�r�r��errno�EINVAL�r�r�r/r�s  @@r1�test_open_files_file_gonez%TestProcess.test_open_files_file_gonehs����
�N�N��������
�$�/�/�#�S�
)��@�A����-�-����|�|�~��+�+�+��x�x��x�����-�#�E�L�L�"�5����|�|�~��+�+�+��x�x��x��*�
)�������*�
)�s<�+D�,$C>�7D�$D
�-D�>D	�D�
D	�D�Dc�t���tj���j��t|j	�d�5t��fd��t
jdt��5}�j�gk(sJ�|jsJ�	ddd�ddd�y#1swY�xYw#1swYyxYw)Nr�c�N��t�j��t��k7Srtr-r.s��r1r�z5TestProcess.test_open_files_fd_gone.<locals>.<lambda>�r0rpr�rQ)
r�r�r!r?rvrrr�r�r�r4s  @@r1�test_open_files_fd_gonez#TestProcess.test_open_files_fd_gones����
�N�N��������
�$�/�/�#�S�
)��@�A�����->����|�|�~��+�+�+��x�x��x�	�*�
)����*�
)�s$�+B.�,$B"�B.�"B+	�'B.�.B7c�����tj���j��t|j	�d�5t��fd��d}t
j|ttjd���5}t
jd�5�j�gk(sJ�|jsJ�	ddd�ddd�ddd�y#1swY�xYw#1swY�xYw#1swYyxYw)Nr�c�N��t�j��t��k7Srtr-r.s��r1r�z:TestProcess.test_open_files_enametoolong.<locals>.<lambda>�r0rpr1rUrQ�psutil._pslinux.debug)r�r�r!r?rvrrr�r�r2�ENAMETOOLONGr�)r��patch_pointr�r/r�s   @@r1�test_open_files_enametoolongz(TestProcess.test_open_files_enametoolong�s����
�N�N��������
�$�/�/�#�S�
)��@�A�7�K�������1C�1C�R�)H����Z�Z� 7�8��<�<�>�R�/�/�/��8�8�O�8�9��	*�
)�9�8�����	*�
)�s=�AC.�C"�$C�=C"�C.�C�C"�"C+	�'C.�.C7c��tjdi��5}tjj	tj��j��J�|jsJ�	ddd�y#1swYyxYw)Nz)psutil._pslinux._psposix.get_terminal_maprq)	rr�r�rXr�r0r��terminalr�r s  r1�test_terminal_mockedz TestProcess.test_terminal_mocked�s[��
�Z�Z�7�b�
�
��?�?�*�*�2�9�9�;�7�@�@�B�J�J�J��8�8�O�8�	
�
�
�s�AA2�2A;c���tj�}tjd�}t	j
d|d��5}|j
�ddgk(sJ�|jsJ�	ddd�tjd�}t	j
d|d��5}|j
�gd�k(sJ�|jsJ�	ddd�y#1swY�fxYw#1swYyxYw)	NzfoobarrTrU�foo�barz	foobar�rCrDrU�r�r�r�r�rr��cmdliner��r�r�r^r�s    r1�test_cmdline_mockedzTestProcess.test_cmdline_mocked�s����N�N����K�K� 0�1�	�
�Z�Z�!�	�$�
�
��9�9�;�5�%�.�0�0�0��8�8�O�8�	
�
�K�K� 4�5�	�
�Z�Z�!�	�$�
�
��9�9�;�"4�4�4�4��8�8�O�8�	
�
�

�
��
�
���&C�&C�C�C#c���tj�}tjd�}t	j
d|d��5}|j
�ddgk(sJ�|jsJ�	ddd�tjd�}t	j
d|d��5}|j
�gd�k(sJ�|jsJ�	ddd�y#1swY�fxYw#1swYyxYw)	Nzfoo bar rTrUrCrDz	foo bar  rErFrHs    r1�test_cmdline_spaces_mockedz&TestProcess.test_cmdline_spaces_mocked�s����N�N����K�K�
�+�	�
�Z�Z�!�	�$�
�
��9�9�;�5�%�.�0�0�0��8�8�O�8�	
�
�K�K��,�	�
�Z�Z�!�	�$�
�
��9�9�;�"4�4�4�4��8�8�O�8�	
�
�

�
��
�
�rJc��tj�}tjd�}t	j
d|d��5}|j
�ddgk(sJ�|jsJ�	ddd�y#1swYyxYw)Nzfoo barrTrUrCrDrFrHs    r1�test_cmdline_mixed_separatorsz)TestProcess.test_cmdline_mixed_separators�sh��
�N�N����K�K� 0�1�	�
�Z�Z�!�	�$�
�
��9�9�;�5�%�.�0�0�0��8�8�O�8�	
�
�
�s�&A2�2A;c��tjdd��5tj�j	�dk(sJ�tj�j�dk(sJ�	ddd�y#1swYyxYw)Nr1z/home/foo (deleted)rqz	/home/foo)rr�r�r��exe�cwdr�s r1�!test_readlink_path_deleted_mockedz-TestProcess.test_readlink_path_deleted_mocked�sb��
�Z�Z�)�8M�
��>�>�#�'�'�)�[�8�8�8��>�>�#�'�'�)�[�8�8�8�	
�
�
�s�AA1�1A:c����fd�}t�tjd|��5}tj�j�}|jsJ�|gk(sJ�	ddd��fd�}tjd|��5tjtj�5tj�j�ddd�ddd�y#1swY�}xYw#1swY�xYw#1swYyxYw)Nc�v��|jdtj��d��rt��|g|��i|��S�Nrz/task)rer0r�r�r�s   �r1�open_mock_1z4TestProcess.test_threads_mocked.<locals>.open_mock_1�s9��������	�	��}�E�:�;�'�'��T�3�D�3�F�3�3rpr�rQc�v��|jdtj��d��rt��|g|��i|��SrU)rer0r��PermissionErrorr�s   �r1�open_mock_2z4TestProcess.test_threads_mocked.<locals>.open_mock_2�s9��������	�	��}�E�:�;�%�%��T�3�D�3�F�3�3rp)
r?rr�r�r�r�r�rr�AccessDenied)r�rVr�r�rYr�s     @r1�test_threads_mockedzTestProcess.test_threads_mocked�s����
	4�
�	�
�Z�Z��[�
A�Q��.�.�"�*�*�,�C��8�8�O�8��"�9��9�B�	4�
�Z�Z��[�
A����v�2�2�3���� �(�(�*�4�B�
A�B�
A��4�3��B�
A�s/�8C�$C1�%#C%�C1�C"�%C.	�*C1�1C:c�,�tjdt��5}tjdg��5tj�j�}|jsJ�|dk(sJ�	ddd�ddd�y#1swY�xYw#1swYyxYw)N�psutil._pslinux.readlinkrQzpsutil._pslinux.Process.cmdlinerqrU)rr�r�r�r�rPr��r�r�r�s   r1�test_exe_mockedzTestProcess.test_exe_mocked�s{��
�Z�Z�&�4E�
�
����1����n�n�&�*�*�,���x�x��x��b�y� �y��	
�
����	
�
�s"�B
�8A>�-B
�>B	�B
�
Bc���tjdt��5}tj�j�}|jsJ�|dk(sJ�	ddd�y#1swYyxYw)Nr]rQrU)rr�r�r�r�rQr�r^s   r1�test_cwd_mockedzTestProcess.test_cwd_mockedsS��
�Z�Z�&�4E�
�
��.�.�"�&�&�(�C��8�8�O�8��"�9��9�
�
�
�s�8A�A'c�<�tdtj��d�t�5}t	j
�}t
jt�5|j�ddd�|jsJ�	ddd�y#1swY�!xYw#1swYyxYw)Nrr)
r�r0r�r�r�r�rrrr��r�r�r�s   r1�test_issue_1014zTestProcess.test_issue_1014
st��!��R�Y�Y�[�M��(�*;�
�
���� �A����0�1��
�
��2��8�8�O�8�

�
�2�1��	
�
�s#�.B�B�&B�B	�B�Bc��tj�}tdtj��d�t
�5t
jdd��5tjtj�5|j�ddd�ddd�ddd�y#1swY�xYw#1swY�xYw#1swYyxYw)Nrz/statmr�Frq)r�r�r�r0r�r�rr�rrr��memory_info�r�r�s  r1�test_issue_2418zTestProcess.test_issue_2418s����N�N���
 ��R�Y�Y�[�M��(�*;�
����,�5�A��]�]�6�#7�#7�8��M�M�O�9�B�
�
�9�8��B�A��
�
�s;�B9�$B-�7B!�B-�B9�!B*�&B-�-B6	�2B9�9Cr~r�c��tjdttjd���5}tjdd��5}tj�}|j�tjt
j�5}|jt
j�ddd�ddd�ddd�jsJ�jsJ�jjjk(sJ�|jj|j�k(sJ�y#1swY��xYw#1swY��xYw#1swY��xYw)Nzresource.prlimitrUrQz"psutil._pslinux.Process._is_zombieTrq)rr�r�r2�ENOSYSr�r�r�rr�
ZombieProcess�rlimit�
RLIMIT_NOFILEr�r;r�)r�rwrxr��cms     r1�test_rlimit_zombiezTestProcess.test_rlimit_zombies���
�Z�Z��G�E�L�L�"�,E�
�
����4�4����N�N�$�������]�]�6�#7�#7�8�B��H�H�V�1�1�2�9��
��y�y��y��y�y��y��x�x�|�|�q�u�u�$�$�$��x�x�}�}�����(�(�(�9�8�����
�
�s<�E�AD?� D3�0D?�8E�3D<�8D?�?E	�E�Ec��gd�}dj|�j�}tdtj��d�|i�5tj�}|j�dk(sJ�|j�t
jk(sJ�|j�dk(sJ�|j�dtztj�zk(sJ�|j�}|jdtzk(sJ�|j d	tzk(sJ�|j"d
tzk(sJ�|j$dtzk(sJ�|j&dtzk(sJ�|j)�dk(sJ�	ddd�y#1swYyxYw)
N)*r�z(cat)�Z�1r�r�r�r�r�r�r�r�r��2�3�4�5r�r�r�r��6r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�rwr�r��7rrz/stat�catryr(r&r,r=rzr')rEr�r�r0r�r�r�r��status�
STATUS_ZOMBIE�ppid�create_timerrrr.r��system�
children_user�children_system�iowait�cpu_num)r�r�r�r��cpus     r1�test_stat_file_parsingz"TestProcess.test_stat_file_parsing2sN��+
��X�(�(�4�.�'�'�)��
�&�����
�U� ;�W�E�
F���� �A��6�6�8�u�$�$�$��8�8�:��!5�!5�5�5�5��6�6�8�q�=� �=��=�=�?�a�+�o��8H�8H�8J�&J�J�J�J��+�+�-�C��8�8�q�;��.�.�.��:�:��[��0�0�0��$�$��K��7�7�7��&�&�!�k�/�9�9�9��:�:��[��0�0�0��9�9�;�!�#�#�#�G�
F�
F�s
�D0F�F
c��tjd�j�}tdt	j
��d�|i�5t
j�}|j�jdk(sJ�|j�jdk(sJ�|j�dk(sJ�|j�}|jdk(sJ�|jdk(sJ�|jd	k(sJ�|j!�}|jd
k(sJ�|jdk(sJ�|jdk(sJ�|j"j%�t't)d
��k(sJ�	ddd�y#1swYyxYw)Nz�            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:	13rr���
�Bi�i�i�i�i�i�r()r�r�r�r�r0r�r�r��num_ctx_switches�	voluntary�involuntary�num_threads�uids�real�	effective�saved�gids�_proc�_get_eligible_cpus�listrD)r�r�r�r�r�s     r1�test_status_file_parsingz$TestProcess.test_status_file_parsingnsK���/�/�#/�0�17���	��&�����
�W� =�w�G�
H���� �A��%�%�'�1�1�R�7�7�7��%�%�'�3�3�r�9�9�9��=�=�?�b�(�(�(��6�6�8�D��9�9��$�$�$��>�>�T�)�)�)��:�:��%�%�%��6�6�8�D��9�9��$�$�$��>�>�T�)�)�)��:�:��%�%�%��7�7�-�-�/�4��a��>�A�A�A�I�
H�
H�s
�DE0�0E9c�P�tjdttjd���5}tj�}tjd�5|j�gk(sJ�|jsJ�	ddd�ddd�y#1swY�xYw#1swYyxYw)Nr1rUrQr;)	rr�r�r2r<r�r�r�r�rcs   r1�!test_net_connections_enametoolongz-TestProcess.test_net_connections_enametoolong�s����Z�Z�)��� 2� 2�B�7�
����� �A����3�4��(�(�*�b�0�0�0��x�x��x�5�
�
�
5�4��
�
�s#�*B�$B�?B�B	�B�B%c��tj�}|jj�|jjd��k7sJ�|j	�d|jjd��k(sJ�y)NT)�	monotonicry)r�r�r�r}�
_get_identrgs  r1�test_create_time_monotonicz&TestProcess.test_create_time_monotonic�sf���N�N����w�w�"�"�$����(;�(;�d�(;�(K�K�K�K��|�|�~�a� �A�G�G�$7�$7�$�$7�$G�G�G�GrpN)r�r�r�rrrr*r5r8r>rArIrLrNrRr[r_rardrhrr`rarror�r�r�r�r�rpr1r	r	s�����	<��	<�%�B6�B �.
 �$�&�� � 	�9�+�6
!��	�$��[�[���J����?�)�@�)�&:$�xB�0 �Hrpr	c�p�eZdZdZed��Zd�Zd�Zd�Zd�Z	d�Z
d�Zd	�Ze
�d
��Zd�Zd�Zy
)�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.
    c�6�tj�|_yrt)r�r��proc)�clss r1�
setUpClassz#TestProcessAgainstStatus.setUpClass�s���>�>�#��rpc��tjjd|jj�d��5}|D]N}|j�}|j
|�s�%|jd�d}	t|�ccddd�Std|����#t$r|cYccddd�SwxYw#1swYyxYw)Nrr��	r&r�)
r��_psplatform�	open_textr�r�r�re�	partitionrhrC)r��	linestartrIrKr;s     r1�read_status_filez)TestProcessAgainstStatus.read_status_file�s���
�
�
�
)�
)��T�Y�Y�]�]�O�7�+�
�
����z�z�|���?�?�9�-� �N�N�4�0��3�E�%�"�5�z�)�
�
���{�9�-�8�9�9��&�%�$��
�
�%��
�
�s;�'B6� B6�5
B�?B6�B6�B3�%B6�2B3�3B6�6B?c�d�|jd�}|jj�|k(sJ�y)NzName:)r�r�r��r�r;s  r1�	test_namez"TestProcessAgainstStatus.test_name��+���%�%�g�.���y�y�~�~��5�(�(�(rpc���|jd�}||jd�dz|jd�}|jdd�}|jj�|k(sJ�y)NzState:�(ry�)rr9)r�rb�rfindr�r�rzr�s  r1�test_statusz$TestProcessAgainstStatus.test_status�s_���%�%�h�/���e�j�j��o��)�E�K�K��,<�=���
�
�c�3�'���y�y���!�U�*�*�*rpc�d�|jd�}|jj�|k(sJ�y)NzPPid:)r�r�r|r�s  r1�	test_ppidz"TestProcessAgainstStatus.test_ppid�r�rpc�d�|jd�}|jj�|k(sJ�y)NzThreads:)r�r�r�r�s  r1�test_num_threadsz)TestProcessAgainstStatus.test_num_threads�s-���%�%�j�1���y�y�$�$�&�%�/�/�/rpc��|jd�}ttt|j	�dd��}|j
j
�|k(sJ�y)NzUid:ryr=)r�r�r�rhr@r�r�r�s  r1�	test_uidsz"TestProcessAgainstStatus.test_uids��I���%�%�f�-���c�#�u�{�{�}�Q�q�1�2�3���y�y�~�~��5�(�(�(rpc��|jd�}ttt|j	�dd��}|j
j
�|k(sJ�y)NzGid:ryr=)r�r�r�rhr@r�r�r�s  r1�	test_gidsz"TestProcessAgainstStatus.test_gids�r�rpc���|jd�}|jj�j|k(sJ�|jd�}|jj�j|k(sJ�y)Nzvoluntary_ctxt_switches:znonvoluntary_ctxt_switches:)r�r�r�r�r�r�s  r1�test_num_ctx_switchesz.TestProcessAgainstStatus.test_num_ctx_switches�sf���%�%�&@�A���y�y�)�)�+�5�5��>�>�>��%�%�&C�D���y�y�)�)�+�7�7�5�@�@�@rpc���|jd�}dt|�vrXtt|j	d��\}}|j
j
�tt||dz��k(sJ�yy)N�Cpus_allowed_list:r9ry)	r�r�r�rhr@r��cpu_affinityr�rD)r�r;�min_�max_s    r1�test_cpu_affinityz*TestProcessAgainstStatus.test_cpu_affinity�sh���%�%�&:�;���#�e�*���S�%�+�+�c�"2�3�J�D�$��9�9�)�)�+�t�E�$��q��4I�/J�J�J�J�rpc��|jd�}tjd�5}|jjj�ddd�dt
|�vrjrJ�yjsJ�y#1swY�4xYw)Nr�zpsutil._pslinux.per_cpu_timesr9)r�rr�r�r�r�r�r�)r�r;r�s   r1�test_cpu_affinity_eligible_cpusz8TestProcessAgainstStatus.test_cpu_affinity_eligible_cpus�si���%�%�&:�;��
�Z�Z�7�
8�A��I�I�O�O�.�.�0�9��#�e�*���x�x��<�x��8�8�O�8�9�
8�s�%A?�?BN)r�r�r��__doc__�classmethodr�r�r�r�r�r�r�r�rr�r�r�r�rpr1r�r��sb����$��$�:�)�+�)�0�)�
)�
��A��A�K�rpr�c��eZdZd�Zy)�	TestUtilsc���tjdd��5}tjj	d�dk(sJ�|j
sJ�	ddd�y#1swYyxYw)Nzos.readlinkz
foo (deleted)rqrDrC)rr�r�r��readlinkr�r s  r1�
test_readlinkzTestUtils.test_readlink�sI��
�Z�Z�
�O�
D���%�%�.�.�u�5��>�>�>��8�8�O�8�E�
D�
D�s�3A�AN)r�r�r�r�r�rpr1r�r��s��rpr�)\r�rf�
contextlibr2r�r0rzr�rdr%r,r�r r��unittestrr�r�psutil.testsrrrrr	r
rrr
rrrrrrrrrrrWrrrrrbr"�dirname�__file__�HEREr+rXr5r9r.r2r6r:rSr[ror|r~r��contextmanagerr�r�r`rar�r�r�rr$r6rgr}r�r�r�r�r�r�rr"rTrpr�r�r�rr	r�r�r�rpr1�<module>r�sJ������	�	��	�
�
�
�����
�� �'�'�$�%�'�#� �-�*�'�#�#��&�)�$��0��+�2�4�+�
�w�w���r�w�w���x�0�1�����
�������K�	
�	
�	
��,F�D�C�(@�@�������(������(������I�l��3�1B��1B�4�1B�h������I�l��3�,D�>�,D�4�,D�^������I�l��3�F-�>�F-�4�F-�\������I�l��3�P�>�P�4�P�p������I�l��3�.��.�4�.�&������I�l��3�F ��F �4�F �R������I�l��3��n��4��@������I�l��3�W/�^�W/�4�W/�t������I�l��3�6��6�4�6�������I�l��3�	?�.�	?�4�	?�"������I�l��3�?�>�?�4�?�N������I�l��3�38�>�38�4�38�l������I�l��3�0E�n�0E�4�0E�f������I�l��3��~��4��:������I�l��3�<)�~�<)�4�<)�~������I�l��3�D*�~�D*�4�D*�N������I�l��3�<2�^�<2�4�<2�H������I�l��3�n�~�n�4�n�l������I�l��3�������O�L��9�J��J�:�4�J�D������I�l��3����4��(������I�l��3�?-�n�?-�4�?-�D������I�l��3�+�n�+�4�+�6������I�l��3�}H�.�}H�4�}H�@������I�l��3�J�~�J�4�J�d������I�l��3����4�rp
Back to Directory File Manager