403Webshell
Server IP : 217.160.0.135  /  Your IP : 216.73.217.85
Web Server : Apache
System : Linux www 6.18.52-i1-ampere #1203 SMP Mon Sep 14 18:29:59 CEST 2026 aarch64
User : sws1074145052 ( 1074145052)
PHP Version : 8.3.32
Disable Function : NONE
MySQL : OFF  |  cURL : ON  |  WGET : ON  |  Perl : ON  |  Python : OFF  |  Sudo : OFF  |  Pkexec : OFF
Directory :  /lib/python3/dist-packages/psutil/tests/__pycache__/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Command :


[ Back ]     

Current File : /lib/python3/dist-packages/psutil/tests/__pycache__/test_linux.cpython-311.pyc
�

�bicq��0
�dZddlmZddlZddlZddlZddlZddlZddlZddl	Z	ddl
Z
ddlZddlZddl
Z
ddlZddlZddlZddlZddlmZddlmZddlmZddlmZddlmZdd	lmZdd
lmZddlmZddlmZdd
lmZddlmZddlmZddlm Z ddlm!Z!ddlm"Z"ddlm#Z#ddlm$Z$ddlm%Z%ddlm&Z&ddlm'Z'ddlm(Z(ddlm)Z)ddlm*Z*ddlm+Z+erddl,m-Z-ddl,m.Z.ddl,m/Z/ddl,m0Z0ej1�2ej1�3e4����Z5d Z6d!Z7d"Z8d#Z9d$Z:erd%Z;ejd&��Z<d'�Z=d(�Z>d)�Z?d*�Z@d+�ZAd,�ZBd-�ZCd.�ZDd/�ZEejFd0���ZGejFd1���ZHejIed2��Gd3�d4e"����ZJejIed2��Gd5�d6e"����ZKejIed2��Gd7�d8e"����ZLejIed2��Gd9�d:e"����ZMejIed2��Gd;�d<e"����ZNejIed2��Gd=�d>e"����ZOejIed2��Gd?�d@e"����ZPejIed2��GdA�dBe"����ZQejIed2��GdC�dDe"����ZRejIed2��GdE�dFe"����ZSejIed2��GdG�dHe"����ZTejIed2��GdI�dJe"����ZUejIed2��GdK�dLe"����ZVejIed2��GdM�dNe"����ZWejIed2��GdO�dPe"����ZXejIed2��GdQ�dRe"����ZYejIed2��ejIedS��GdT�dUe"������ZZejIed2��GdV�dWe"����Z[ejIed2��GdX�dYe"����Z\ejIed2��GdZ�d[e"����Z]ejIed2��Gd\�d]e"����Z^ejIed2��Gd^�d_e"����Z_ejIed2��Gd`�dae"����Z`eadbkrddclbmcZcece4��dSdS)dzLinux specific tests.�)�divisionN)�LINUX)�PY3)�FileNotFoundError)�
basestring)�u)�GITHUB_ACTIONS)�GLOBAL_TIMEOUT)�HAS_BATTERY)�HAS_CPU_FREQ)�HAS_GETLOADAVG)�
HAS_RLIMIT)�PYPY)�TOLERANCE_DISK_USAGE)�TOLERANCE_SYS_MEM)�PsutilTestCase)�
ThreadTask)�
call_until)�mock)�
reload_module)�retry_on_failure)�safe_rmpath)�sh)�skip_on_not_implemented)�which)�CLOCK_TICKS)�RootFsDeviceFinder)�calculate_avail_vmem)�open_binaryi�i�i'�i�i�iz/sys/class/hwmon/hwmon*c��ddl}|dd�}trt|d��}tjtjtj��}t
j|��5tj|�	|�
��ttj
d|����dd���cddd��S#1swxYwYdS�Nr��ascii�256s��)�fcntlr�bytes�socket�AF_INET�
SOCK_DGRAM�
contextlib�closing�	inet_ntoa�ioctl�fileno�SIOCGIFADDR�struct�pack��ifnamer'�ss   �9/usr/lib/python3/dist-packages/psutil/tests/test_linux.py�get_ipv4_addressr8Ls���L�L�L�
�C�R�C�[�F�
�(��v�w�'�'���
�f�n�f�&7�8�8�A�	�	�A�	�	�=�=����K�K����
�
�#���F�F�3�3�
5�
5�57��U�
<�=�=�=�=�=�=�=�=�=�=�=�=�=�=����=�=�=�=�=�=��#AC�C�Cc��ddl}|dd�}trt|d��}tjtjtj��}t
j|��5tj|�	|�
��ttj
d|����dd���cddd��S#1swxYwYdSr!)r'rr(r)r*r+r,r-r.r/r0�SIOCGIFNETMASKr2r3r4s   r7�get_ipv4_netmaskr<Y����L�L�L�
�C�R�C�[�F�
�(��v�w�'�'���
�f�n�f�&7�8�8�A�	�	�A�	�	�=�=����K�K����
�
�&���F�F�3�3�
5�
5�57��U�
<�=�=�=�=�=�=�=�=�=�=�=�=�=�=����=�=�=�=�=�=r9c��ddl}|dd�}trt|d��}tjtjtj��}t
j|��5tj|�	|�
��ttj
d|����dd���cddd��S#1swxYwYdSr!)r'rr(r)r*r+r,r-r.r/r0�SIOCGIFBRDADDRr2r3r4s   r7�get_ipv4_broadcastr@fr=r9c���tdd��5}g}|���D]7}|���}|d|kr|�|���8t	|��dkrtd|z���	ddd��n#1swxYwYt
dt	|����D]�}||d}g}t
dt	|��d��D]"}|�|||dz����#d�|��}	tj	tj
|	��}
tjtj
|
��||<��|S)Nz/proc/net/if_inet6�rt���rzcould not find interface %r��:)�open�	readlines�split�append�len�
ValueError�range�joinr)�	inet_pton�AF_INET6�	inet_ntop)r5�f�
all_fields�line�fields�i�unformatted�groups�j�	formatted�packeds           r7�get_ipv6_addressesr[ss���	
�"�D�	)�	)�E�Q��
��K�K�M�M�	*�	*�D��Z�Z�\�\�F��b�z�V�#�#��!�!�&�)�)�)���z�?�?�a����:�V�C�D�D�D� �E�E�E�E�E�E�E�E�E�E�E����E�E�E�E��1�c�*�o�o�
&�
&�B�B�� ��m�A�&�����q�#�k�*�*�A�.�.�	0�	0�A��M�M�+�a��A��g�.�/�/�/�/��H�H�V�$�$�	��!�&�/�9�=�=���(���&�A�A�
�1�
�
��s�A4B�B�Bc	���ddl}|dd�}trt|d��}tjtjtj��}t
j|��5|�|�	��ttjd|����}trd��nddl
}|j�d��fd�|dd	�D����dd
�cddd��S#1swxYwYdS)Nrr"r#r$c��|S�N���xs r7�ordzget_mac_address.<locals>.ord�s�����c�,��g|]}d�|��z��S)z%02x:r_)�.0�charrbs  �r7�
<listcomp>z#get_mac_address.<locals>.<listcomp>�s&���D�D�D���#�#�d�)�)�+�D�D�Drc�r&rC)r'rr(r)r*r+r,r-r/r0�
SIOCGIFHWADDRr2r3�__builtin__rbrM)r5r'r6�inforkrbs     @r7�get_mac_addressrm�se����L�L�L�
�C�R�C�[�F�
�(��v�w�'�'���
�f�n�f�&7�8�8�A�	�	�A�	�	�	K�	K��{�{�
�H�H�J�J�
�v�{�6�6�'B�'B�D�D���	"�
�
�
�
�
�����/�C��w�w�D�D�D�D��R��U��D�D�D�E�E�c�r�c�J�	K�	K�	K�	K�	K�	K�	K�	K�	K�	K�	K�	K����	K�	K�	K�	K�	K�	Ks�$BC9�9C=�C=c��tddgddi���}|�d��}|D]{}|�d��rd|���\}}}}tjdd��}|t|��t|��t|����cS�|t
d	d�|��z���)
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:
%s)rrH�
startswith�collections�
namedtuple�intrKrM)�out�linesrS�_�total�usedro�nts        r7�	free_swapr��s���
�f�d�^�&�)�!4�
5�
5�
5�C��I�I�d�O�O�E��8�8���?�?�6�"�"�	8�#'�:�:�<�<� �A�u�d�D��'��0A�B�B�B��2�c�%�j�j�#�d�)�)�S��Y�Y�7�7�7�7�7�	8��1�D�I�I�e�4D�4D�D�F�F�Frcc�v�tddgddi���}|�d��}|D]h}|�d��rQd�|���d	d
�D��\}}}}tjdd��}||||||��cS�itdd�|��z���)
zSParse 'free' cmd and return physical memory's total, used
    and free values.
    rorprqrrrsru�Memc�,�g|]}t|����Sr_)rz�rfras  r7rhz free_physmem.<locals>.<listcomp>�s��3�3�3�A��Q���3�3�3rc��ztotal used free shared outputz%can't find 'Mem' in 'free' output:
%s)rrHrwrxryrKrM)r{r|rSr~rro�sharedr�s        r7�free_physmemr��s���
�f�d�^�&�)�!4�
5�
5�
5�C��I�I�d�O�O�E��6�6���?�?�5�!�!�	6�3�3������a��c�!2�3�3�3�
&�E�4��v��'��7�9�9�B��2�e�T�4���5�5�5�5�5�	6��0�4�9�9�U�3C�3C�C�E�E�Ercc��tddgddi���}|�d��D]D}|���}||vr*t|�d��d��cS�Et	d	|z���)
N�vmstatz-srqrrrsru� rz can't find %r in 'vmstat' output)rrH�striprzrK)�statr{rSs   r7r�r��s���
�h��
�F�I�#6�
7�
7�
7�C��	�	�$���+�+���z�z�|�|���4�<�<��t�z�z�#���q�)�*�*�*�*�*��
�7�$�>�
?�
?�?rcc��tddg�����}d|vrtjd���t	tt|���d�d������S)Nroz-V�UNKNOWNzcan't determine free versionrC�.)rr��unittest�SkipTest�tuple�maprzrH)r{s r7�get_free_version_infor��sn��
�f�d�^�
�
�
"�
"�
$�
$�C��C����� >�?�?�?���S�#�)�)�+�+�b�/�/�/��4�4�5�5�6�6�6rcc#����K����fd�}t�trdnd}tj|d|���5}|V�ddd��dS#1swxYwYdS)zMock open() builtin and forces it to return a certain `content`
    on read() if the path being opened matches `for_path`.
    c����|�krXtr=t�t��rtj���Stj���Stj���S�|g|�Ri|��Sr^)r�
isinstancer�io�StringIO�BytesIO)�name�args�kwargs�content�for_path�	orig_opens   ���r7�	open_mockz$mock_open_content.<locals>.open_mock�sx����8����
+��g�z�2�2�/��;�w�/�/�/��:�g�.�.�.��z�'�*�*�*��9�T�3�D�3�3�3�F�3�3�3rc�
builtins.open�__builtin__.openT��create�side_effectN�rFrr�patch)r�r�r��patch_point�mr�s``   @r7�mock_open_contentr��s��������

4�
4�
4�
4�
4�
4�
4��I�%(�@�/�/�.@�K�	
��K��)�	D�	D�	D�����������������������������A�A�Ac#����K����fd�}t�trdnd}tj|d|���5}|V�ddd��dS#1swxYwYdS)zZMock open() builtin and raises `exc` if the path being opened
    matches `for_path`.
    c�,��|�kr���|g|�Ri|��Sr^r_)r�r�r��excr�r�s   ���r7r�z&mock_open_exception.<locals>.open_mock�s3����8����I��9�T�3�D�3�3�3�F�3�3�3rcr�r�Tr�Nr�)r�r�r�r�r�r�s``   @r7�mock_open_exceptionr��s��������
4�4�4�4�4�4�4��I�%(�@�/�/�.@�K�	
��K��)�	D�	D�	D���������������������������r�z
LINUX onlyc�b�eZdZd�Ze��d���Ze��d���Ze��d���Ze��d���Ze��d���Z	e��d���Z
e��d���Zd	�Ze��d
���Z
d�Zd�Zd
�Zd�ZdS)�TestSystemVirtualMemoryc��td��dz}tj��j}|�||t
���dS)Nztotal memory���delta)r��psutil�virtual_memoryr~�assertAlmostEqualr��self�vmstat_value�psutil_values   r7�
test_totalz"TestSystemVirtualMemory.test_total�s[���n�-�-��4���,�.�.�4������,�.?�	�	A�	A�	A�	A�	Arcc
��t��dkr|�d���t��}|j}t	j��j}|�||t|�d|�d|j�����dS)N)�r��zold free versionr�� 
�r��msg)	r��skipTestr�rr�r�r�r�output�r�ro�
free_valuer�s    r7�	test_usedz!TestSystemVirtualMemory.test_useds���!�"�"�Z�/�/��-�-� 2�3�3�3��~�~���Y�
��,�.�.�3�������,=� *�
�
�L�L�L�$�+�+�F�	�	H�	H�	H�	H�	Hrcc��td��dz}tj��j}|�||t
���dS)Nzfree memoryr�r�)r�r�r�ror�rr�s   r7�	test_freez!TestSystemVirtualMemory.test_freesY���m�,�,�t�3���,�.�.�3������,�.?�	�	A�	A�	A�	A�	Arcc��td��dz}tj��j}|�||t
���dS)Nz
buffer memoryr�r�)r�r�r��buffersr�rr�s   r7�test_buffersz$TestSystemVirtualMemory.test_bufferssY���o�.�.��5���,�.�.�6������,�.?�	�	A�	A�	A�	A�	Arcc��td��dz}tj��j}|�||t
���dS)Nz
active memoryr�r�)r�r�r��activer�rr�s   r7�test_activez#TestSystemVirtualMemory.test_active%sY���o�.�.��5���,�.�.�5������,�.?�	�	A�	A�	A�	A�	Arcc��td��dz}tj��j}|�||t
���dS)Nzinactive memoryr�r�)r�r�r��inactiver�rr�s   r7�
test_inactivez%TestSystemVirtualMemory.test_inactive,sZ���/�0�0�4�7���,�.�.�7������,�.?�	�	A�	A�	A�	A�	Arcc
���t��}|j}|dkrtjd���t	j��j}|�||t|�d|�d|j�����dS)Nrz%free does not support 'shared' columnr�r�r�)	r�r�r�r�r�r�r�rr�r�s    r7�test_sharedz#TestSystemVirtualMemory.test_shared3s����~�~���[�
���?�?��#�$K�L�L�L��,�.�.�5�������,=� *�
�
�L�L�L�$�+�+�F�	�	H�	H�	H�	H�	Hrcc
�d�tddg��}|�d��}d|dvrtjd���t	|d���d��}tj��j}|�||t|�d	|�d
|�����dS)Nrorpru�	availablerz(free does not support 'available' columnr�rCr�r�r�)
rrHr�r�rzr�r�r�r�r)r�r{r|r�r�s     r7�test_availablez&TestSystemVirtualMemory.test_available>s����&�$�� � ���	�	�$�����e�A�h�&�&��#�$N�O�O�O��U�1�X�^�^�-�-�b�1�2�2�J�!�0�2�2�<�L��"�"��L�0A�$.�J�J����c�c�B�
#�
D�
D�
D�
D�
Drcc��tdtjd�������5}t	jd���5}t	jd��tj��}|j	sJ�|�
t|��d��|d}|j�
d��sJ�|�d	t|j����|�d
t|j����|�dt|j����|�dt|j����|�d
t|j����|�dt|j����|�dt|j����|�
|jd��|�
|jd��|�
|jd��|�
|jd��|�
|jd��|�
|jd��|�
|jd��ddd��n#1swxYwYddd��dS#1swxYwYdS)N�
/proc/meminfoap                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
                T��record�alwaysr�r�psutil/_pslinux.pyz#memory stats couldn't be determined�cachedr�r�r�r�r�)r��textwrap�dedent�encode�warnings�catch_warnings�simplefilterr�r��called�assertEqualrJ�filename�endswith�assertIn�str�messager�r�r�r�r�r��slab�r�r��ws�ret�ws     r7�test_warnings_on_missesz/TestSystemVirtualMemory.test_warnings_on_missesMs������O�	�	
�	
��V�X�X���!	.�#$��(��5�5�5�
.���%�h�/�/�/��+�-�-���x����� � ��R���!�,�,�,��q�E���z�*�*�+?�@�@�@�@�@��
�
�9�3�q�y�>�>�K�K�K��
�
�h��A�I���7�7�7��
�
�h��A�I���7�7�7��
�
�h��A�I���7�7�7��
�
�j�#�a�i�.�.�9�9�9��
�
�i��Q�Y���8�8�8��
�
�k�3�q�y�>�>�:�:�:�� � ���Q�/�/�/�� � ���Q�/�/�/�� � ���q�1�1�1�� � ���Q�/�/�/�� � ���a�0�0�0�� � ����2�2�2�� � ���1�-�-�-�+
.�
.�
.�
.�
.�
.�
.�
.�
.�
.�
.����
.�
.�
.�
.�!	.�!	.�!	.�!	.�!	.�!	.�!	.�!	.�!	.�!	.�!	.�!	.����!	.�!	.�!	.�!	.�!	.�!	.s6�J<�I
J$�J<�$J(	�(J<�+J(	�,J<�<K�Kc�d�i}td��5}|D]7}|���}t|d��dz||d<�8	ddd��n#1swxYwYt|��}d|vr8|d}t	||z
��|zdz}|�|d��dSdS)Nr�r�r�rs
MemAvailable:�dr")rrHrzr�abs�
assertLess)r��memsrQrSrT�a�b�diff_percents        r7�test_avail_old_percentz.TestSystemVirtualMemory.test_avail_old_percentts����
��
)�
)�	8�Q��
8�
8��������"%�f�Q�i�.�.�4�"7��V�A�Y���
8�	8�	8�	8�	8�	8�	8�	8�	8�	8�	8�	8����	8�	8�	8�	8�

!��&�&���t�#�#��%�&�A��q�1�u�:�:��>�C�/�L��O�O�L�"�-�-�-�-�-�$�#s�;A�A�!Ac���tdtjd�������5}t	jd���5}t
j��}ddd��n#1swxYwY|jsJ�|�	|j
d��|d}|�dt|j
����ddd��dS#1swxYwYdS)Nr�aL                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
                Tr�l �"r�,inactive memory stats couldn't be determined�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�s     r7� test_avail_old_comes_from_kernelz8TestSystemVirtualMemory.test_avail_old_comes_from_kernel�ss�����O��
�
��V�X�X�!��	P� #$��(��5�5�5�
.���+�-�-��
.�
.�
.�
.�
.�
.�
.�
.�
.�
.�
.����
.�
.�
.�
.��8�O�O�O����S�]�N�;�;�;��1��A��M�M�>��A�I���
P�
P�
P�-	P�	P�	P�	P�	P�	P�	P�	P�	P�	P�	P�	P����	P�	P�	P�	P�	P�	P�6�C�A+�C�+A/	�/C�2A/	�3AC�C�Cc���tdtjd�������5}t	jd���5}t
j��}ddd��n#1swxYwY|jsJ�|�	|j
d��|d}|�dt|j
����ddd��dS#1swxYwYdS)Nr�a�                    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
                    Tr��`LGrrrr�s     r7�test_avail_old_missing_fieldsz5TestSystemVirtualMemory.test_avail_old_missing_fields�st�����O�
�

�

� ����#�#�	P�'(��(��5�5�5�
.���+�-�-��
.�
.�
.�
.�
.�
.�
.�
.�
.�
.�
.����
.�
.�
.�
.��8�O�O�O����S�]�,K�L�L�L��1��A��M�M�>��A�I���
P�
P�
P�%	P�	P�	P�	P�	P�	P�	P�	P�	P�	P�	P�	P����	P�	P�	P�	P�	P�	Prc	�6�tdtjd�������5t	dttjd����5tj	d���5}tj��}|�|j
d��|d}|�d	t|j����ddd��n#1swxYwYddd��n#1swxYwYddd��dS#1swxYwYdS)
Nr�aT                    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
                    z/proc/zoneinfo�no such file or directoryTr�rrr)r�r�r�r�r��IOError�errno�ENOENTr�r�r�r�r�r�r�r�r�)r�r�r�r�s    r7�test_avail_old_missing_zoneinfoz7TestSystemVirtualMemory.test_avail_old_missing_zoneinfo�s�������
!�
�
� ����#�#�	(�	(� %�$��E�L�*E�F�F�H�H�

(�

(��,�D�9�9�9�(�R� �/�1�1�C��$�$��
�'F�H�H�H��1��A��M�M�F��A�I���(�(�(�(�(�(�(�(�(�(�(�(�(�(����(�(�(�(�

(�

(�

(�

(�

(�

(�

(�

(�

(�

(�

(����

(�

(�

(�

(�!	(�	(�	(�	(�	(�	(�	(�	(�	(�	(�	(�	(����	(�	(�	(�	(�	(�	(sZ�)D�C6�4AC�C6�C#�#C6�&C#�'C6�*D�6C:	�:D�=C:	�>D�D�Dc����fd�}t�trdnd}tj|d|���5}t	j��}|jsJ�|�|jd��|�|j	d��|�|j
d��|�|jd	��|�|jd
��|�|j
d��|�|jd��|�|jd
��|�|jd��ddd��dS#1swxYwYdS)Nc���|dkr8tjtjd�������S�|g|�Ri|��S)Nr�a=	                    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�r�r�r�r��r�r�r�r�s   �r7r�zETestSystemVirtualMemory.test_virtual_memory_mocked.<locals>.open_mock�se�����&�&��z�(�/�13�1#�1#�b ����c1#�1#�1#�f!�y��7��7�7�7��7�7�7rcr�r�Tr�i�i�ipiTii iX�)rFrrr�r�r�r�r�r~ror�r�r�r�r�r�r�)r�r�r�r��memr�s     @r7�test_virtual_memory_mockedz2TestSystemVirtualMemory.test_virtual_memory_mocked�s����5	8�5	8�5	8�5	8�5	8�n�	�),�D�o�o�2D��
�Z��D�i�
H�
H�
H�	6�A��'�)�)�C��8�O�O�O����S�Y�
�3�3�3����S�X�x�0�0�0����S�[�(�3�3�3����S�Z��9�9�9����S�Z��3�3�3����S�Z��2�2�2����S�\�8�4�4�4����S�X�y�1�1�1����S�]�H�5�5�5�	6�	6�	6�	6�	6�	6�	6�	6�	6�	6�	6�	6����	6�	6�	6�	6�	6�	6s�DE
�
E�EN)�__name__�
__module__�__qualname__r�rr�r�r�r�r�r�r�r�r�rrrrr_rcr7r�r��s�������A�A�A�����H�H���H�����A�A���A�����A�A���A�����A�A���A�����A�A���A�����H�H���H�����D�D���D�%.�%.�%.�N����
.�
.���
.�P�P�P�8P�P�P�2(�(�(�>G6�G6�G6�G6�G6rcr�c��eZdZed���Zd�Ze��d���Ze��d���Zd�Z	d�Z
d�Zd�Zd	S)
�TestSystemSwapMemoryc��td��5}|���}ddd��n#1swxYwYd|vod|vS)z3Return True if /proc/meminfo provides swap metrics.r�Nz
SwapTotal:z	SwapFree:)rF�read)rQ�datas  r7�meminfo_has_swap_infoz*TestSystemSwapMemory.meminfo_has_swap_info*s����/�
"�
"�	�a��6�6�8�8�D�	�	�	�	�	�	�	�	�	�	�	����	�	�	�	��t�#�;��t�(;�;s�1�5�5c��t��j}tj��j}|�||t
���S�Nr�)r�r~r��swap_memoryr�r�r�r�r�s   r7r�zTestSystemSwapMemory.test_total1sD���[�[�&�
��)�+�+�1���%�%���,=�&�?�?�	?rcc��t��j}tj��j}|�||t
���Sr)r�rr�rr�rr s   r7r�zTestSystemSwapMemory.test_used7�D���[�[�%�
��)�+�+�0���%�%���,=�&�?�?�	?rcc��t��j}tj��j}|�||t
���Sr)r�ror�rr�rr s   r7r�zTestSystemSwapMemory.test_free>r"rcc�h�tjdd���5}tjd���5}tjd��tj��}|jsJ�|�t|��d��|d}|j
�d��sJ�|�d	t|j����|�|jd��|�|jd��ddd��n#1swxYwYddd��dS#1swxYwYdS)
N�psutil._common.openT�r�r�r�r�rr�z9'sin' and 'sout' swap memory stats couldn't be determined)rr�r�r�r�r�rr�r�rJr�r�r�r�r��sin�soutr�s     r7�test_missing_sin_soutz*TestSystemSwapMemory.test_missing_sin_soutEs���
�Z�-�d�
;�
;�
;�	.�q��(��5�5�5�
.���%�h�/�/�/��(�*�*���x����� � ��R���!�,�,�,��q�E���z�*�*�+?�@�@�@�@�@��
�
�$�%(���^�^�5�5�5�� � ���!�,�,�,�� � ���1�-�-�-�
.�
.�
.�
.�
.�
.�
.�
.�
.�
.�
.����
.�
.�
.�
.�	.�	.�	.�	.�	.�	.�	.�	.�	.�	.�	.�	.����	.�	.�	.�	.�	.�	.s5�D'�CD�D'�D	�D'�D	�D'�'D+�.D+c��tdttjd����5}t	jd���5}t	jd��tj��}|j	sJ�|�
t|��d��|d}|j�
d��sJ�|�d	t|j����|�
|jd��|�
|jd��ddd��n#1swxYwYddd��dS#1swxYwYdS)
Nz/proc/vmstatrTr�r�r�rr�zK'sin' and 'sout' swap memory stats couldn't be determined and were set to 0)r�r	r
rr�r�r�r�rr�r�rJr�r�r�r�r�r'r(r�s     r7�test_no_vmstat_mockedz*TestSystemSwapMemory.test_no_vmstat_mockedTs���
 �����&A�B�B�D�D�	.�GH��(��5�5�5�
.���%�h�/�/�/��(�*�*���x����� � ��R���!�,�,�,��q�E���z�*�*�+?�@�@�@�@�@��
�
�6���	�N�N�$�$�$�� � ���!�,�,�,�� � ���1�-�-�-�
.�
.�
.�
.�
.�
.�
.�
.�
.�
.�
.����
.�
.�
.�
.�	.�	.�	.�	.�	.�	.�	.�	.�	.�	.�	.�	.����	.�	.�	.�	.�	.�	.s5�D9�CD!�D9�!D%	�%D9�(D%	�)D9�9D=�D=c��|���stjd��Stjd��5}tj��}ddd��n#1swxYwY|jrJ�ddlm	}|�
��\}}}}}}}||z}||z}|�|j|��|�
|j|t���dS)Nz!/proc/meminfo has no swap metricsz"psutil._pslinux.cext.linux_sysinforr�)rr��skiprr�r�rr��psutil._psutil_linux�
_psutil_linux�
linux_sysinfor�r~r�ror)r�r��swap�cextr}r~ro�unit_multipliers        r7�test_meminfo_against_sysinfoz1TestSystemSwapMemory.test_meminfo_against_sysinfogs+���)�)�+�+�	F��=�!D�E�E�E�
�Z�<�
=�
=�	(���%�'�'�D�	(�	(�	(�	(�	(�	(�	(�	(�	(�	(�	(����	(�	(�	(�	(��8����+�+�+�+�+�+�37�3E�3E�3G�3G�0��1�a��E�4��
�� �����������U�+�+�+����t�y�$�6G��H�H�H�H�Hs�A�A!�$A!c��tdd��5}tj��|jsJ�	ddd��dS#1swxYwYdS)Nr�rc)r�r�rr��r�r�s  r7�#test_emulate_meminfo_has_no_metricsz8TestSystemSwapMemory.test_emulate_meminfo_has_no_metricsws������
4�
4�	���� � � ��8�O�O�O�O�	�	�	�	�	�	�	�	�	�	�	�	����	�	�	�	�	�	s�<�A�AN)
rrr�staticmethodrr�rr�r�r)r+r4r7r_rcr7rr's��������<�<��\�<�?�?�?�����?�?���?�����?�?���?�
.�
.�
.�.�.�.�&I�I�I� ����rcrc��eZdZd�ZdS)�TestSystemCPUTimesc�8�tj��j}tjdtj��d��d}ttt|�
d������}|dkr|�d|��n|�d|��|dkr|�d|��n|�d|��|d	kr|�d
|��dS|�d
|��dS)Nz
\d+\.\d+\.\d+�rr�)r<���steal)r<r=r&�guest)r�r<r�
guest_nice)
r��	cpu_times�_fields�re�findall�os�unamer�r�rzrHr��assertNotIn)r�rT�
kernel_ver�kernel_ver_infos    r7�test_fieldszTestSystemCPUTimes.test_fields�s
���!�#�#�+���Z� 0�"�(�*�*�Q�-�@�@��C�
���C��)9�)9�#�)>�)>� ?� ?�@�@���j�(�(��M�M�'�6�*�*�*�*����W�f�-�-�-��j�(�(��M�M�'�6�*�*�*�*����W�f�-�-�-��i�'�'��M�M�,��/�/�/�/�/����\�6�2�2�2�2�2rcN)rrrrKr_rcr7r:r:�s#������3�3�3�3�3rcr:c�p�eZdZejej�d��d��d���Zejej�d��d��d���Z	eje
d��d��d	���Zeje
d
��d��d���Zd
�Z
dS)�TestSystemCPUCountLogical�/sys/devices/system/cpu/onlinez-/sys/devices/system/cpu/online does not existc�j�td��5}|������}ddd��n#1swxYwYdt|��vrTt	|�d��d��dz}|�tj��|��dSdS)NrN�-r�)	rFrr�r�rzrHr�r��	cpu_count)r�rQ�values   r7�test_against_sysdev_cpu_onlinez8TestSystemCPUCountLogical.test_against_sysdev_cpu_online�s����2�
3�
3�	%�q��F�F�H�H�N�N�$�$�E�	%�	%�	%�	%�	%�	%�	%�	%�	%�	%�	%����	%�	%�	%�	%��#�e�*�*�������C�(�(��+�,�,�q�0�E����V�-�/�/��7�7�7�7�7��s�'A�A�
A�/sys/devices/system/cpuz&/sys/devices/system/cpu does not existc��tjd��}td�|D����}|�t	j��|��dS)NrTc�<�g|]}tjd|���|��S)zcpu\d+$)rD�searchr�s  r7rhzITestSystemCPUCountLogical.test_against_sysdev_cpu_num.<locals>.<listcomp>�s)��K�K�K�1�b�i�
�A�&>�&>�&J�Q�&J�&J�&Jrc)rF�listdirrJr�r�rQ)r��ls�counts   r7�test_against_sysdev_cpu_numz5TestSystemCPUCountLogical.test_against_sysdev_cpu_num�sU���Z�1�
2�
2���K�K��K�K�K�L�L������)�+�+�U�3�3�3�3�3rc�nprocznproc utility not availablec��ttd����}|�tjd���|��dS)Nznproc --allT��logical)rzrr�r�rQ)r��nums  r7�test_against_nprocz,TestSystemCPUCountLogical.test_against_nproc�sA���"�]�#�#�$�$������)�$�7�7�7��=�=�=�=�=rc�lscpu�lscpu utility not availablec���td��}td�|�d��D����}|�t	jd���|��dS)N�lscpu -pc�<�g|]}|�d���|��S)�#�rwr�s  r7rhz@TestSystemCPUCountLogical.test_against_lscpu.<locals>.<listcomp>�s)��G�G�G��Q�\�\�#�5F�5F�G�1�G�G�GrcruTr^)rrJrHr�r�rQ)r�r{r`s   r7�test_against_lscpuz,TestSystemCPUCountLogical.test_against_lscpu�s]����n�n���G�G�c�i�i��o�o�G�G�G�H�H������)�$�7�7�7��=�=�=�=�=rcc�\�ddl}|j���}tjdt
���5}|�|j���|��|jsJ�tjdd���5}|�|j�����|�|j	d��|�|j
ddd��ddd��n#1swxYwYtd	d
��5}|���}ddd��n#1swxYwYtj|��}tjd|d���5}|�|j���|��ddd��n#1swxYwYtd	d��5}|�|j���|��|jddd��n#1swxYwYddd��dS#1swxYwYdS)
Nrzpsutil._pslinux.os.sysconf�r�r%Tr&r<�
/proc/stat�
/proc/cpuinfo�rb��return_valuer�rc)�psutil._pslinux�_pslinux�cpu_count_logicalrr�rKr�r��assertIsNone�
call_count�	call_argsrFrr�r�r�)r�r��originalr�rQ�cpuinfo_data�	fake_files       r7�test_emulate_fallbacksz0TestSystemCPUCountLogical.test_emulate_fallbacks�s`�������?�4�4�6�6���Z�,�*�F�F�F�	�IJ����V�_�>�>�@�@�(�K�K�K��8�O�O�O���1�$�?�?�?�
B�1��!�!�&�/�"C�"C�"E�"E�F�F�F�� � ���q�1�1�1�� � ���Q���!2�L�A�A�A�	
B�
B�
B�
B�
B�
B�
B�
B�
B�
B�
B����
B�
B�
B�
B��o�t�,�,�
(�� �v�v�x�x��
(�
(�
(�
(�
(�
(�
(�
(�
(�
(�
(����
(�
(�
(�
(��
�<�0�0�I���1�)2�4�A�A�A�
P�DE�� � ���!B�!B�!D�!D�h�O�O�O�
P�
P�
P�
P�
P�
P�
P�
P�
P�
P�
P����
P�
P�
P�
P�#�?�C�8�8�
�A�� � ���!B�!B�!D�!D�h�O�O�O����
�
�
�
�
�
�
�
�
�
�
����
�
�
�
�1	�	�	�	�	�	�	�	�	�	�	�	����	�	�	�	�	�	s��A
H!�A/D�5H!�D	�H!�D	�	H!�D=�1H!�=E	�H!�E	�.H!�3.F-�!H!�-F1	�1H!�4F1	�5H!�5H	�=H!�	H
	�
H!�H
	�H!�!H%�(H%N)rrrr��skipIfrF�path�existsrSr[rrarirzr_rcr7rMrM�s�������X�_�����(H�I�I�I�D�F�F�8�8�F�F�8��X�_�����(A�B�B�B�=�?�?�4�4�?�?�4�
�X�_���w���'�)F�G�G�>�>�H�G�>��X�_���w���'�)F�G�G�>�>�H�G�>�
����rcrMc�b�eZdZejed��d��d���Zd�Zd�ZdS)�TestSystemCPUCountCoresrbrcc�f�td��}t��}|�d��D]G}|�d��s0|�d��}|�|d���H|�t
jd���t|����dS)Nrerurg�,r�Fr^)	r�setrHrw�addr�r�rQrJ)r�r{�core_idsrSrTs     r7riz*TestSystemCPUCountCores.test_against_lscpu�s�����n�n���5�5���I�I�d�O�O�	(�	(�D��?�?�3�'�'�
(����C�������V�A�Y�'�'�'������)�%�8�8�8�#�h�-�-�H�H�H�H�Hrcc�"�tj���}tjdg���5}tj���}|jsJ�	ddd��n#1swxYwY|�|�||��dSdS)N�	glob.glob�rp)r�rr�cpu_count_coresrr�r�r�)r��meth_1r��meth_2s    r7�
test_method_2z%TestSystemCPUCountCores.test_method_2�s�����0�0�2�2��
�Z��"�
5�
5�
5�	���_�4�4�6�6�F��8�O�O�O�O�	�	�	�	�	�	�	�	�	�	�	����	�	�	�	������V�V�,�,�,�,�,��s�(A*�*A.�1A.c�D�tjdg���5}tjdd���5}|�tj�����ddd��n#1swxYwYddd��n#1swxYwY|jsJ�|jsJ�dS)Nr�r�r%Tr&)rr�rtr�rrr�r�)r��m1�m2s   r7�test_emulate_nonez)TestSystemCPUCountCores.test_emulate_none�s7��
�Z��"�
5�
5�
5�	E����1�$�?�?�?�
E�2��!�!�&�/�"A�"A�"C�"C�D�D�D�
E�
E�
E�
E�
E�
E�
E�
E�
E�
E�
E����
E�
E�
E�
E�	E�	E�	E�	E�	E�	E�	E�	E�	E�	E�	E����	E�	E�	E�	E��y�����y�����s4�B�2A,� B�,A0	�0B�3A0	�4B�B�
BN)	rrrr�r{rrir�r�r_rcr7rr�sl�������X�_���w���'�)F�G�G�I�I�H�G�I�-�-�-�����rcrc��eZdZejed��d���Zejed��d���Zejed��d���Zejed��d���Z	ejed��d���Z
dS)�TestSystemCPUFrequency�
not supportedc����fd�}tjj�tjd|d���5tj��sJ�	ddd��dS#1swxYwYdS)Nc�H��|�d��rdS�|��S)N�&/sys/devices/system/cpu/cpufreq/policyFrh)r|�orig_existss �r7�path_exists_mockzMTestSystemCPUFrequency.test_emulate_use_second_file.<locals>.path_exists_mock�s-������G�H�H�
)��u�"�{�4�(�(�(rc�os.path.existsT)r�r�)rFr|r}rr�r��cpu_freq)r�r�r�s  @r7�test_emulate_use_second_filez3TestSystemCPUFrequency.test_emulate_use_second_file�s����	)�	)�	)�	)�	)��g�n��
�Z�(�6F�#�%�%�%�	%�	%��?�$�$�$�$�$�$�	%�	%�	%�	%�	%�	%�	%�	%�	%�	%�	%�	%����	%�	%�	%�	%�	%�	%s�A�A�Ac����fd�}tjj�	tjd|���5ttj��t
j��}|sJ�|�	|j
d��|�	|jd��t
jd���D]8}|�	|j
d��|�	|jd���9	ddd��n#1swxYwYttj��tt��dS#ttj��tt��wxYw)Nc�H��|�d��rdS�|��S)Nz/sys/devices/system/cpu/Frh)r|�os_path_existss �r7r�zITestSystemCPUFrequency.test_emulate_use_cpuinfo.<locals>.path_exists_mocks-������9�:�:�
,��u�%�~�d�+�+�+rcr�rk�T��percpu)rFr|r}rr�rr�rrr�r��max�min)r�r�r��freqr�s    @r7�test_emulate_use_cpuinfoz/TestSystemCPUFrequency.test_emulate_use_cpuinfos����	,�	,�	,�	,�	,�����	"���,�:J�K�K�K�
3�
3��f�o�.�.�.��o�'�'���
�
�
�� � ���#�.�.�.�� � ���#�.�.�.�"�O�4�8�8�8�3�3�D��$�$�S�W�c�2�2�2��$�$�S�W�c�2�2�2�2�3�

3�
3�
3�
3�
3�
3�
3�
3�
3�
3�
3����
3�
3�
3�
3�
�&�/�*�*�*��&�!�!�!�!�!��
�&�/�*�*�*��&�!�!�!�!���s/�D+�B5C1�%D+�1C5�5D+�8C5�9D+�+/Ec�����fd�}t�trdnd}tj||���5tjdd���5t	j��}|�|jd��|jd	kr|�|jd
��|j	d	kr|�|j	d��ddd��n#1swxYwYddd��dS#1swxYwYdS)Nc����|�d��r)|�d��rtjd��S|�d��r)|�d��rtjd��S|�d��r)|�d��rtjd��S|dkrtjd	��S�|g|�Ri|��S)
N�/scaling_cur_freqr��500000�/scaling_min_freq�600000�/scaling_max_freqs700000rmscpu MHz		: 500�r�rwr�r�rs   �r7r�z;TestSystemCPUFrequency.test_emulate_data.<locals>.open_mock#s�����
�
�1�2�2�
8��O�O�$L�M�M�
8��z�)�,�,�,��-�-� 3�4�4�	
8��O�O�$L�M�M�	
8��z�)�,�,�,��-�-� 3�4�4�
8��O�O�$L�M�M�
8��z�)�,�,�,���(�(��z�"3�4�4�4� �y��7��7�7�7��7�7�7rcr�r�rkr�Tr��@@r����@g�@�
rFrrr�r�r�r��currentr�r��r�r�r�r�r�s    @r7�test_emulate_dataz(TestSystemCPUFrequency.test_emulate_data!s����
	8�
	8�
	8�
	8�
	8��	�),�D�o�o�2D��
�Z���
;�
;�
;�
	6�
	6���$�4�9�9�9�	
6�	
6���(�(��� � ���u�5�5�5��8�s�?�?��$�$�T�X�u�5�5�5��8�s�?�?��$�$�T�X�u�5�5�5�	
6�	
6�	
6�	
6�	
6�	
6�	
6�	
6�	
6�	
6�	
6����	
6�	
6�	
6�	
6�
	6�
	6�
	6�
	6�
	6�
	6�
	6�
	6�
	6�
	6�
	6�
	6����
	6�
	6�
	6�
	6�
	6�
	6s6�C%�A;C
�C%�
C	�C%�C	�C%�%C)�,C)c����fd�}t�trdnd}tj||���5tjdd���5tjdd	���5t	jd�
��}|�|djd��|djd
kr!|�|djd��|dj	d
kr!|�|dj	d��|�|djd��|djd
kr!|�|djd��|dj	d
kr!|�|dj	d��ddd��n#1swxYwYddd��n#1swxYwYddd��dS#1swxYwYdS)Nc�<��|}|�d��r)|�d��rtjd��S|�d��r)|�d��rtjd��S|�d��r)|�d��rtjd��S|�d��r)|�d��rtjd	��S|�d��r)|�d��rtjd
��S|�d��r)|�d��rtjd��S|dkrtjd
��S�|g|�Ri|��S)Nr�z'/sys/devices/system/cpu/cpufreq/policy0s100000r��200000r�s300000z'/sys/devices/system/cpu/cpufreq/policy1s400000r�r�rmscpu MHz		: 100
cpu MHz		: 400r�)r�r�r��nr�s    �r7r�z@TestSystemCPUFrequency.test_emulate_multi_cpu.<locals>.open_mockBs�����A��
�
�.�/�/�
8��L�L�!J�K�K�
8��z�)�,�,�,��*�*�0�1�1�
8��L�L�!J�K�K�
8��z�)�,�,�,��*�*�0�1�1�
8��L�L�!J�K�K�
8��z�)�,�,�,��*�*�0�1�1�

8��L�L�!J�K�K�

8��z�)�,�,�,��*�*�0�1�1�

8��L�L�!J�K�K�

8��z�)�,�,�,��*�*�0�1�1�
8��L�L�!J�K�K�
8��z�)�,�,�,���(�(��z�#4�5�5�5�!�y��7��7�7�7��7�7�7rcr�r�rkr�Tr��!psutil._pslinux.cpu_count_logicalr<r�r�Y@r�gi@g�r@r�gy@r�r�r�r�s    @r7�test_emulate_multi_cpuz-TestSystemCPUFrequency.test_emulate_multi_cpu@s����	8�	8�	8�	8�	8�4�	�),�D�o�o�2D��
�Z���
;�
;�
;�	=�	=���,�4�@�@�@�

=�

=��Z� C�-.�0�0�0�=�=�!�?�$�7�7�7�D��$�$�T�!�W�_�e�<�<�<��A�w�{�c�)�)��(�(��a���e�<�<�<��A�w�{�c�)�)��(�(��a���e�<�<�<��$�$�T�!�W�_�e�<�<�<��A�w�{�c�)�)��(�(��a���e�<�<�<��A�w�{�c�)�)��(�(��a���e�<�<�<�=�=�=�=�=�=�=�=�=�=�=����=�=�=�=�

=�

=�

=�

=�

=�

=�

=�

=�

=�

=�

=����

=�

=�

=�

=�	=�	=�	=�	=�	=�	=�	=�	=�	=�	=�	=�	=����	=�	=�	=�	=�	=�	=sZ�F8�F �D F	�=F �	F
�
F �F
�F �F8� F$	�$F8�'F$	�(F8�8F<�?F<c����fd�}t�trdnd}tj||���5tjdd���5tjdd	���5t	j��}|�|jd
��ddd��n#1swxYwYddd��n#1swxYwYddd��dS#1swxYwYdS)Nc���|�d��rttjd���|�d��rt	jd��S|dkrt	jd��S�|g|�Ri|��S)Nr�rdz/cpuinfo_cur_freqr�rmscpu MHz		: 200)r�r	r
rr�r�rs   �r7r�zOTestSystemCPUFrequency.test_emulate_no_scaling_cur_freq_file.<locals>.open_mockqs�����}�}�0�1�1�
8��e�l�B�/�/�/����2�3�3�
8��z�)�,�,�,���(�(��z�"3�4�4�4� �y��7��7�7�7��7�7�7rcr�r�rkr�Tr�r�r���)rFrrr�r�r�r�r�r�s    @r7�%test_emulate_no_scaling_cur_freq_filez<TestSystemCPUFrequency.test_emulate_no_scaling_cur_freq_filens����	8�	8�	8�	8�	8��	�),�D�o�o�2D��
�Z���
;�
;�
;�	8�	8���,�4�@�@�@�
8�
8��Z� C�-.�0�0�0�8�8�!�?�,�,�D��$�$�T�\�3�7�7�7�8�8�8�8�8�8�8�8�8�8�8����8�8�8�8�
8�
8�
8�
8�
8�
8�
8�
8�
8�
8�
8����
8�
8�
8�
8�	8�	8�	8�	8�	8�	8�	8�	8�	8�	8�	8�	8����	8�	8�	8�	8�	8�	8sY�C�B/�/B�B/�B�B/�B� B/�#C�/B3	�3C�6B3	�7C�C�CN)rrrr�r{rr�r�r�r�r�r_rcr7r�r��s��������X�_��%��7�7�%�%�8�7�%��X�_��%��7�7�"�"�8�7�"�0�X�_��%��7�7�6�6�8�7�6�<�X�_��%��7�7�+=�+=�8�7�+=�Z�X�_��%��7�7�8�8�8�7�8�8�8rcr�c��eZdZd�Zd�ZdS)�TestSystemCPUStatsc��td��}tj��j}|�||d���dS)Nzcontext switches��r�)r�r��	cpu_stats�ctx_switchesr�r�s   r7�test_ctx_switchesz$TestSystemCPUStats.test_ctx_switches�sB���0�1�1���'�)�)�6�����|�\���E�E�E�E�Ercc��td��}tj��j}|�||d���dS)N�
interruptsr�r�)r�r�r�r�r�r�s   r7�test_interruptsz"TestSystemCPUStats.test_interrupts�sA���l�+�+���'�)�)�4�����|�\���E�E�E�E�ErcN)rrrr�r�r_rcr7r�r��s:������F�F�F�
F�F�F�F�Frcr�c�D�eZdZejed��d���ZdS)�TestLoadAvgr�c���tj��}tdd��5}|������}ddd��n#1swxYwY|�t
|d��|dd���|�t
|d��|dd���|�t
|d��|dd���dS)Nz
/proc/loadavg�rrr�r�r<)r��
getloadavgrFrrHr��float)r�r�rQ�
proc_values    r7�test_getloadavgzTestLoadAvg.test_getloadavg�s���(�*�*��
�/�3�
'�
'�	*�1��������)�)�J�	*�	*�	*�	*�	*�	*�	*�	*�	*�	*�	*����	*�	*�	*�	*�	
���u�Z��]�3�3�\�!�_�A��N�N�N����u�Z��]�3�3�\�!�_�A��N�N�N����u�Z��]�3�3�\�!�_�A��N�N�N�N�Ns�'A�A�AN)rrrr�r{r
r�r_rcr7r�r��sF�������X�_��'��9�9�O�O�:�9�O�O�Orcr�c��eZdZd�ZdS)�TestSystemNetIfAddrsc��tj�����D�]\\}}|D�]R}|jtjkr)|�|jt|�����A|jtj	kr�|�|jt|����|�|jt|����|j
�)|�|j
t|������|�t|��d����|jtjkrC|j�d��d}|�|t%|������T��^dS)Nz0.0.0.0�%r)r��net_if_addrs�items�family�AF_LINKr��addressrmr)r*r8�netmaskr<�	broadcastr@rOrHr�r[)r�r��addrs�addrr�s     r7�test_ipszTestSystemNetIfAddrs.test_ips�sw��!�.�0�0�6�6�8�8�	E�	E�K�D�%��
E�
E���;�&�.�0�0��$�$�T�\�?�4�3H�3H�I�I�I�I��[�F�N�2�2��$�$�T�\�3C�D�3I�3I�J�J�J��$�$�T�\�3C�D�3I�3I�J�J�J��~�1��(�(���);�D�)A�)A�C�C�C�C��(�(�);�D�)A�)A�9�M�M�M�M��[�F�O�3�3�#�l�0�0��5�5�a�8�G��M�M�'�+=�d�+C�+C�D�D�D��'
E�	E�	ErcN)rrrr�r_rcr7r�r��s(������E�E�E�E�Ercr�c��eZdZejed��d��d���Zd�Zejed��d��d���ZdS)�TestSystemNetIfStats�ifconfig�ifconfig utility not availablec
�b�tj�����D]�\}}	td|z��}|�|jd|v|���|�|jttj	d|��d�����y#t$rY��wxYwdS)N�ifconfig %s�RUNNING)r�z(?i)MTU[: ](\d+)r)r��net_if_statsr�rr��isup�mturzrDrE�RuntimeError)r�r��statsr{s    r7�test_against_ifconfigz*TestSystemNetIfStats.test_against_ifconfig�s���!�.�0�0�6�6�8�8�	O�	O�K�D�%�
O����-�.�.��� � ���Y�#�-=�3� �G�G�G�� � ���!$�R�Z�0C�S�%I�%I�!�%L�!M�!M�O�O�O�O��	 �
�
�
���
����	O�	Os�B�
B,�+B,c	�J�tj�����D]|\}}td|zd��5}|�|jt
|����������ddd��n#1swxYwY�}dS)Nz/sys/class/net/%s/mturB)	r�r�r�rFr�r�rzrr�)r�r�r�rQs    r7�test_mtuzTestSystemNetIfStats.test_mtu�s���!�.�0�0�6�6�8�8�	C�	C�K�D�%��-��4�d�;�;�
C�q�� � ���C��������0@�0@�,A�,A�B�B�B�
C�
C�
C�
C�
C�
C�
C�
C�
C�
C�
C����
C�
C�
C�
C��	C�	Cs�A
B�B	�B	c���d}tj�����D�]�\}}	td|z��}t	jd|��}|r�t
|�����dkr�|dz
}t|�	d���
���d����}t|j�d����}|�
||����t	jd|��}|r�t
|�����dkr�|dz
}t|�	d���
�������}t|j�d����}|�
||�����#t$rY���wxYw|s|�d	���dS)
Nrr�zflags=(\d+)?<(.*?)>r<r�r�z(.*)  MTU:(\d+)  Metric:(\d+)r�zno matches were found)r�r�r�rrDrWrJrWr��group�lowerrH�flagsr�r��fail)r��
matches_foundr�r�r{�match�ifconfig_flags�psutil_flagss        r7�
test_flagszTestSystemNetIfStats.test_flags�s����
�!�.�0�0�6�6�8�8�	G�	G�K�D�%�
G����-�.�.���	�"8�#�>�>���
G�S������0�0�A�5�5�!�Q�&�M�%(����Q���)=�)=�)?�)?�)E�)E�c�)J�)J�%K�%K�N�#&�u�{�'8�'8��'=�'=�#>�#>�L��$�$�^�\�B�B�B�B��I�&F��L�L�E��G��U�\�\�^�^�!4�!4��!9�!9�%��*�
�),�U�[�[��^�^�-A�-A�-C�-C�-I�-I�-K�-K�)L�)L��'*�5�;�+<�+<�S�+A�+A�'B�'B���(�(���F�F�F���# �
�
�
���
����&�	5��)�)�3�4�4�4�	5�	5s�G
�
G�GN)	rrrr�r{rr�r�r�r_rcr7r�r��s��������X�_���z�*�*�*�,L�M�M�	O�	O�N�M�	O�C�C�C�
�X�_���z�*�*�*�,L�M�M�5�5�N�M�5�5�5rcr�c�v�eZdZejed��d��e��d�����ZdS)�TestSystemNetIOCountersr�r�c�����fd�}tjdd���}|���D�];\�}	|���}n#t$rY�wxYw|�|j|dd���|�|j|dd���|�|j|d	d
���|�|j|dd
���|�|j	|dd
���|�|j
|dd
���|�|j|dd
���|�|j|dd
�����=dS)Nc����i}td�z��}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+)�errinr��erroutzdropped[: ](\d+)�dropin�dropoutz#RX (?:packets \d+ +)?bytes[: ](\d+)�
bytes_recvz#TX (?:packets \d+ +)?bytes[: ](\d+)�
bytes_sent)rrzrDrE)�nicr�r{r�s   �r7r�z?TestSystemNetIOCounters.test_against_ifconfig.<locals>.ifconfig	sS����C��]�T�)�*�*�C�"%��
�1�3�7�7��:�#<�#<�C���"%��
�1�3�7�7��:�#<�#<�C����r�z�*<�c�B�B�1�E�F�F�C��L���
�+=�s� C� C�A� F�G�G�C��M���
�+>�� D� D�Q� G�H�H�C��M� ���,?��!E�!E�a�!H�I�I�C�	�N� #��
�A�3�G�G��J�!L�!L�C��� #��
�A�3�G�G��J�!L�!L�C����JrcTF)�pernic�nowraprir�rr�r�r�r��
r�r�r)
r��net_io_countersr�r�r�rrr�r�r�r�r�r)r�r��nior��ifconfig_retr�s     @r7r�z-TestSystemNetIOCounters.test_against_ifconfigs���	�	�	�	�	�"�$�D��?�?�?���9�9�;�;�	B�	B�K�D�%�
�'�x��~�~�����
�
�
���
�����"�"�� �,�|�"<�H�
#�
N�
N�
N��"�"�� �,�|�"<�H�
#�
N�
N�
N��"�"��"�L��$@��
#�
N�
N�
N��"�"��"�L��$@��
#�
N�
N�
N��"�"���\�'�2�"�
#�
>�
>�
>��"�"���l�8�4�B�
#�
@�
@�
@��"�"���l�8�4�B�
#�
@�
@�
@��"�"��
�|�I�6�b�
#�
B�
B�
B�
B�'	B�	Bs�A�
A�AN)rrrr�r{rrr�r_rcr7r�r�sf�������X�_���z�*�*�*�,L�M�M�����'B�'B���N�M�'B�'B�'Brcr�c�z�eZdZejde���ejdd���d�����Zd�ZdS)	�TestSystemNetConnectionsz psutil._pslinux.socket.inet_ntoprkzpsutil._pslinux.supports_ipv6Fr�c��	tjtjtj��}|�|j��|�d��n#tj$rYnwxYwtjd���dS)N)z::1r�inet6��kind)	r)rO�SOCK_STREAM�
addCleanup�close�bind�errorr��net_connections)r��
supports_ipv6rPr6s    r7�test_emulate_ipv6_unsupportedz6TestSystemNetConnections.test_emulate_ipv6_unsupported5s���	��
�f�o�v�/A�B�B�A��O�O�A�G�$�$�$�
�F�F�:�������|�	�	�	��D�	������G�,�,�,�,�,�,s�AA�A-�,A-c��tdtjd����5}tjd���|jsJ�	ddd��dS#1swxYwYdS)Nz/proc/net/unixa.                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
                �unixr)r�r�r�r�rr�r6s  r7�test_emulate_unixz*TestSystemNetConnections.test_emulate_unixAs���
���O��
�
���		���"��/�/�/�/��8�O�O�O�O�		�		�		�		�		�		�		�		�		�		�		�		����		�		�		�		�		�		s�A�A�AN)rrrrr�rKrrr_rcr7rr2sp�������T�Z�2�
�K�K�K��T�Z�/�e�D�D�D�-�-�E�D�L�K�-�
�
�
�
�
rcrc��eZdZejeed��d��e��d�����Zd�Z	d�Z
dS)�TestSystemDiskPartitions�statvfszos.statvfs() not availablec�V�d�}tjd���D]�}tj|j��}||j��\}}}}|�|j|��|�|j|t���|�|j	|t�����dS)Nc��td|z�����}|�d��}|�d��|�d��}|���dd�\}}}}|dkrd}t	|��t	|��t	|��}}}||||fS)Nzdf -P -B 1 "%s"rurrD�nonerd)rr�rH�poprz)r|r{r|rS�devr~rros        r7�dfz4TestSystemDiskPartitions.test_against_df.<locals>.df[s����&��-�.�.�4�4�6�6�C��I�I�d�O�O�E��I�I�a�L�L�L��9�9�Q�<�<�D�%)�Z�Z�\�\�"�1�"�%5�"�C���d��f�}�}��� #�E�
�
�C��I�I�s�4�y�y��4�E���t�T�)�)rcF)�allr�)
r��disk_partitions�
disk_usage�
mountpointr�r~r�rorr)r�r#�part�usager"r~rros        r7�test_against_dfz(TestSystemDiskPartitions.test_against_dfVs���
		*�		*�		*��*�u�5�5�5�	?�	?�D��%�d�o�6�6�E�%'�R���%8�%8�"�C���d����U�[�%�0�0�0��"�"�5�:�t�)=�
#�
?�
?�
?��"�"�5�:�t�)=�
#�
?�
?�
?�
?�
	?�	?rcc��tdd��5}|���}ddd��n#1swxYwYd|vr9tj��D]}|jdkrdS�|�d���t
jtd����}tj
d|d���5}tj
d	d
g���5}tj��}|jsJ�|jsJ�|sJ�|�|djd��ddd��n#1swxYwYddd��dS#1swxYwYdS)
Nz/proc/filesystemsr��zfszcouldn't find any ZFS partitionz
nodev	zfs
r%Tro�$psutil._pslinux.cext.disk_partitions)z	/dev/sdb3�/r,�rwr�r)
rFrr�r%�fstyper�r�r�rrr�r�r�)r�rQrr(ryr�r�r�s        r7�test_zfs_fsz$TestSystemDiskPartitions.test_zfs_fsos%��
�%�s�
+�
+�	�q��6�6�8�8�D�	�	�	�	�	�	�	�	�	�	�	����	�	�	�	��D�=�=��.�0�0�
C�
C���;�%�'�'��E�E�(��i�i� A�B�B�B���A�n�$5�$5�6�6�I���1�)2�4�A�A�A�	
;�DF��Z�>�&E�%F�H�H�H�;�KM� �0�2�2�C��9�$�$�$��9�$�$�$��J�J�J��$�$�S��V�]�E�:�:�:�;�;�;�;�;�;�;�;�;�;�;����;�;�;�;�	
;�	
;�	
;�	
;�	
;�	
;�	
;�	
;�	
;�	
;�	
;�	
;����	
;�	
;�	
;�	
;�	
;�	
;sC�2�6�6�2D9�
AD!�D9�!D%	�%D9�(D%	�)D9�9D=�D=c�<�	tjdd���5}|�t��5t	j��ddd��n#1swxYwY|jsJ�	ddd��n#1swxYwYdt_dS#dt_wxYw)Nzos.path.realpathz
/non/existentr��/proc)rr��assertRaisesrr�r%r��PROCFS_PATHr6s  r7�test_emulate_realpath_failz3TestSystemDiskPartitions.test_emulate_realpath_fail�s!��	)���.�)8�:�:�:�
 �=>��&�&�'8�9�9�-�-��*�,�,�,�-�-�-�-�-�-�-�-�-�-�-����-�-�-�-��x�����	
 �
 �
 �
 �
 �
 �
 �
 �
 �
 �
 ����
 �
 �
 �
 �")�F������F��(�(�(�(sQ�B
�A4�A�A4�A	�A4�A	�A4�(B
�4A8�8B
�;A8�<B
�
BN)rrrr�r{�hasattrrFrr*r1r6r_rcr7rrSs��������X�_����Y�/�/�/�1M�N�N�����?�?���O�N�?�.;�;�;�0	)�	)�	)�	)�	)rcrc�8�eZdZd�Zd�Zd�Zd�Zd�Zd�Zd�Z	dS)	�TestSystemDiskIoCountersc���tdd��5tjdd���5tjd���}|�|jd��|�|jd	��|�|jd
tz��|�|j
d��|�|jd��|�|jd
��|�|j
dtz��|�|jd��|�|jd��ddd��n#1swxYwYddd��dS#1swxYwYdS)N�/proc/diskstatsz+   3     0   1 hda 2 3 4 5 6 7 8 9 10 11 12�!psutil._pslinux.is_storage_deviceTr�F�rr�r<r�rDr�r=��r�r�rr�r��disk_io_countersr��
read_count�read_merged_count�
read_bytes�SECTOR_SIZE�	read_time�write_count�write_merged_count�write_bytes�
write_time�	busy_time�r�r�s  r7�test_emulate_kernel_2_4z0TestSystemDiskIoCounters.test_emulate_kernel_2_4�s����!�=�?�?�	4�	4���?�)-�/�/�/�
4�
4��-�U�;�;�;��� � ����3�3�3�� � ��!6��:�:�:�� � ����[��A�A�A�� � ����2�2�2�� � ���!�4�4�4�� � ��!7��;�;�;�� � ���!�k�/�B�B�B�� � ����3�3�3�� � ����3�3�3�
4�
4�
4�
4�
4�
4�
4�
4�
4�
4�
4����
4�
4�
4�
4�	4�	4�	4�	4�	4�	4�	4�	4�	4�	4�	4�	4����	4�	4�	4�	4�	4�	4�5�E%�DE
�E%�
E	�E%�E	�E%�%E)�,E)c���tdd��5tjdd���5tjd���}|�|jd��|�|jd	��|�|jd
tz��|�|j
d��|�|jd��|�|jd
��|�|j
dtz��|�|jd��|�|jd��ddd��n#1swxYwYddd��dS#1swxYwYdS)Nr;z'   3    0   hda 1 2 3 4 5 6 7 8 9 10 11r<Tr�Fr=r�r<r�rDr�r=r>r?rr@rLs  r7�test_emulate_kernel_2_6_fullz5TestSystemDiskIoCounters.test_emulate_kernel_2_6_full�s����!�9�;�;�	4�	4���?�)-�/�/�/�
4�
4��-�U�;�;�;��� � ����3�3�3�� � ��!6��:�:�:�� � ����[��A�A�A�� � ����2�2�2�� � ���!�4�4�4�� � ��!7��;�;�;�� � ���!�k�/�B�B�B�� � ����3�3�3�� � ����3�3�3�
4�
4�
4�
4�
4�
4�
4�
4�
4�
4�
4����
4�
4�
4�
4�	4�	4�	4�	4�	4�	4�	4�	4�	4�	4�	4�	4����	4�	4�	4�	4�	4�	4rNc���tdd��5tjdd���5tjd���}|�|jd��|�|jd	tz��|�|j	d
��|�|j
dtz��|�|jd��|�|jd��|�|j
d��|�|jd��|�|jd��ddd��n#1swxYwYddd��dS#1swxYwYdS)
Nr;z   3    1   hda 1 2 3 4r<Tr�Fr=r�r<r�rDr)r�rr�r�rAr�rBrDrErGrIrCrFrHrJrKrLs  r7�test_emulate_kernel_2_6_limitedz8TestSystemDiskIoCounters.test_emulate_kernel_2_6_limited�s����!�)�+�+�	3�	3���?�)-�/�/�/�
3�
3��-�U�;�;�;��� � ����3�3�3�� � ����[��A�A�A�� � ���!�4�4�4�� � ���!�k�/�B�B�B�� � ��!6��:�:�:�� � ����2�2�2�� � ��!7��;�;�;�� � ����3�3�3�� � ����2�2�2�
3�
3�
3�
3�
3�
3�
3�
3�
3�
3�
3����
3�
3�
3�
3�	3�	3�	3�	3�	3�	3�	3�	3�	3�	3�	3�	3����	3�	3�	3�	3�	3�	3rNc�R�tdtjd����5tjdd���5tjdd���}|�t|��d��|�|d	j	d
��|�|dj	d
��|�|d	j
d��|�|dj
d��ddd��n#1swxYwYddd��dS#1swxYwYdS)
Nr;��                    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<Fr�T��perdiskrr<�nvme0n1r��	nvme0n1p1r�)r�r�r�rr�r�rAr�rJrBrGrLs  r7�test_emulate_include_partitionsz8TestSystemDiskIoCounters.test_emulate_include_partitions�s����!���!�����
	B�
	B���?�).�0�0�0�
B�
B��-�d�5�I�I�I��� � ��S���1�-�-�-�� � ��Y��!:�A�>�>�>�� � ��[�!1�!<�a�@�@�@�� � ��Y��!;�Q�?�?�?�� � ��[�!1�!=�q�A�A�A�
B�
B�
B�
B�
B�
B�
B�
B�
B�
B�
B����
B�
B�
B�
B�

	B�
	B�
	B�
	B�
	B�
	B�
	B�
	B�
	B�
	B�
	B�
	B����
	B�
	B�
	B�
	B�
	B�
	Bs5�D�B>D�8D�D	�D�D	�D�D �#D c��tdtjd����5tjdd���5tjdd���}|�|��ddd��n#1swxYwYddd��n#1swxYwYd�}tdtjd����5tjdd|�	��5tjdd���}|�|j	d
��|�|j
d��ddd��n#1swxYwYddd��dS#1swxYwYdS)Nr;rTr<Fr�rUc��|dkS)NrWr_)r�s r7�is_storage_devicezSTestSystemDiskIoCounters.test_emulate_exclude_partitions.<locals>.is_storage_device�s
���9�$�$rcTr�r�r�)r�r�r�rr�r�rArtr�rBrG)r�r�r\s   r7�test_emulate_exclude_partitionsz8TestSystemDiskIoCounters.test_emulate_exclude_partitions�sx���!���!�����		'�		'���?�).�0�0�0�
'�
'��-�e�E�J�J�J���!�!�#�&�&�&�
'�
'�
'�
'�
'�
'�
'�
'�
'�
'�
'����
'�
'�
'�
'�
		'�		'�		'�		'�		'�		'�		'�		'�		'�		'�		'����		'�		'�		'�		'�	%�	%�	%��!���!�����
	5�
	5���?�#'�5F�H�H�H�
5�
5��-�e�E�J�J�J��� � ����3�3�3�� � ���!�4�4�4�	
5�
5�
5�
5�
5�
5�
5�
5�
5�
5�
5����
5�
5�
5�
5�
	5�
	5�
	5�
	5�
	5�
	5�
	5�
	5�
	5�
	5�
	5�
	5����
	5�
	5�
	5�
	5�
	5�
	5sk�B	�,A2�&B	�2A6	�6B	�9A6	�:B	�	B
�B
�9E�A
D*�E�*D.	�.E�1D.	�2E�E�	Ec��d�}tjd���}tjdd|���5tjd���}ddd��n#1swxYwY|�t|��t|����dS)Nc��|dkrdSdS)Nr;FTr_�r|s r7r}z?TestSystemDiskIoCounters.test_emulate_use_sysfs.<locals>.existss���(�(�(��u��4rcT)rV�psutil._pslinux.os.path.existsr�)r�rArr�r�rJ)r�r}�wprocfs�wsysfss    r7�test_emulate_use_sysfsz/TestSystemDiskIoCounters.test_emulate_use_sysfss���	�	�	�
�)�$�7�7�7��
�Z�8�#��9�9�9�	;�	;��,�T�:�:�:�F�	;�	;�	;�	;�	;�	;�	;�	;�	;�	;�	;����	;�	;�	;�	;�	
����W���s�6�{�{�3�3�3�3�3s�A�A�Ac��d�}tjdd|���5|�ttj��ddd��dS#1swxYwYdS)Nc��dS)NFr_r`s r7r}z>TestSystemDiskIoCounters.test_emulate_not_impl.<locals>.existss���5rcraTr�)rr�r4�NotImplementedErrorr�rA)r�r}s  r7�test_emulate_not_implz.TestSystemDiskIoCounters.test_emulate_not_impls���	�	�	��Z�8�#��9�9�9�	L�	L����1�6�3J�K�K�K�	L�	L�	L�	L�	L�	L�	L�	L�	L�	L�	L�	L����	L�	L�	L�	L�	L�	Ls�&A�A�AN)
rrrrMrPrRrYr]rdrhr_rcr7r9r9�s�������4�4�4�&4�4�4�(3�3�3�.B�B�B�&5�5�5�>
4�
4�
4�L�L�L�L�Lrcr9c���eZdZd�Zd�Zejed��d���Zeje	d��d��ejed��d�����Z
d�Zd	S)
�TestRootFsDeviceFinderc��tjd��j}tj|��|_tj|��|_dS)Nr.)rFr��st_dev�major�minor)r�r"s  r7�setUpzTestRootFsDeviceFinder.setUps4���g�c�l�l�!���X�c�]�]��
��X�c�]�]��
�
�
rcc��t��}tj�d��r|���n |�t|j��tj�d|j�d|j�d���r|�	��n |�t|j	��|�
��dS�Nz/proc/partitionsz/sys/dev/block/rEz/uevent)rrFr|r}�ask_proc_partitionsr4rrmrn�ask_sys_dev_block�ask_sys_class_block)r��finders  r7�test_call_methodsz(TestRootFsDeviceFinder.test_call_methods#s���#�%�%��
�7�>�>�,�-�-�	M��&�&�(�(�(�(����/��1K�L�L�L�
�7�>�>�>��
�
�
�D�J�J�J�(�)�)�	K��$�$�&�&�&�&����/��1I�J�J�J��"�"�$�$�$�$�$rczunsupported on GITHUB_ACTIONSc�B�t��}|�|�����dx}x}}tj�d��r|���}tj�d|j�d|j�d���r|�	��}|�
��}|p|p|}|r|r|�||��|r|r|�||��|r|r|�||��dSdSdSrq)r�assertIsNotNone�findrFr|r}rrrmrnrtrsr�)r�rur�r��c�bases      r7�test_comparisonsz'TestRootFsDeviceFinder.test_comparisons0sH��#�%�%�����V�[�[�]�]�+�+�+�����A��
�7�>�>�,�-�-�	-��*�*�,�,�A�
�7�>�>�>��
�
�
�D�J�J�J�(�)�)�	-��*�*�,�,�A��$�$�&�&���{�A�{����	&�A�	&����T�1�%�%�%��	&�A�	&����T�1�%�%�%��	&�A�	&����T�1�%�%�%�%�%�	&�	&�	&�	&rc�findmntzfindmnt utility not availablec��t�����}td��}|�||��dS)Nzfindmnt -o SOURCE -rn /)rryrr�)r�r��
findmnt_values   r7�test_against_findmntz+TestRootFsDeviceFinder.test_against_findmntEsE��*�+�+�0�0�2�2���4�5�5�
�����}�5�5�5�5�5rcc��tjddg���5}tj��d}|jsJ�t
sU|�|jd��|�|jt���
����n|�|jd��ddd��dS#1swxYwYdS)Nr-)�	/dev/rootr.�ext4r/r�rr�)rr�r�r%r�r	�assertNotEqual�devicer�rry)r�r�r(s   r7�test_disk_partitions_mockedz2TestRootFsDeviceFinder.test_disk_partitions_mockedLs��
�Z�6�>�?�A�A�A�		;�DE��)�+�+�A�.�D��8�O�O�O�!�
;��#�#�D�K��=�=�=�� � ���.@�.B�.B�.G�.G�.I�.I�J�J�J�J�� � ���k�:�:�:�		;�		;�		;�		;�		;�		;�		;�		;�		;�		;�		;�		;����		;�		;�		;�		;�		;�		;s�BB?�?C�CN)rrrrorvr�r{r	r|rr�r�r_rcr7rjrjs�������#�#�#�
%�%�%��X�_�^�%D�E�E�&�&�F�E�&�(�X�_���y�)�)�)�+J�K�K��X�_�^�%D�E�E�6�6�F�E�L�K�6�

;�
;�
;�
;�
;rcrjc�^�eZdZd�Zd�Zd�Zd�Zd�Zd�Ze	��d���Z
d�Zd	S)
�TestMiscc��td��}tj��}|�t	|��t	|����dS)Nz	boot time)r�r��	boot_timer�rzr�s   r7�test_boot_timezTestMisc.test_boot_timeasI���k�*�*���'�)�)������\�*�*�C��,=�,=�>�>�>�>�>rcc�\	��|���}tj|��ttj�|d��d��5}|�d��|�d��|�d��ddd��n#1swxYwY	t��fd�}trdnd}tj	||�	��5tt��|�ttj��|�ttjd
���|�ttj��|�ttjd
���|�ttj��|�ttjd
���|t_|�tj��d��|�t'tj����d��tjd
���}|�t'|��d��tjd
���}|�t't)t&|����d��ttj�|d��d��5}|�d
��|�d��|�d��ddd��n#1swxYwY|�tj��d��|�t'tjd
�����d��|�t'tj����d��|�t't)t&tjd
�������d��ddd��n#1swxYwYt-j|��tt��n-#t-j|��tt��wxYw|�tjd��dS)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�z��|�d��rttjd����|g|�Ri|��S)Nr3zrejecting access for test)rwr	r
rrs   �r7r�z4TestMisc.test_no_procfs_on_import.<locals>.open_mockrsK����?�?�7�+�+�M�!�%�,�0K�L�L�L� �y��7��7�7�7��7�7�7rcr�r�rkTr�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
r3)�
get_testfnrF�mkdirrFr|rM�writerrr�rr�r4r	rB�cpu_percent�cpu_times_percentr5r��sumr�r��shutil�rmtree)r��	my_procfsrQr�r��per_cpu_percent�per_cpu_times_percentr�s       @r7�test_no_procfs_on_importz!TestMisc.test_no_procfs_on_importfs�����O�O�%�%�	�
������
�"�'�,�,�y�&�1�1�3�
7�
7�	3�1�
�G�G�1�2�2�2�
�G�G�1�2�2�2�
�G�G�1�2�2�2�	3�	3�	3�	3�	3�	3�	3�	3�	3�	3�	3����	3�	3�	3�	3�
0	"��I�
8�
8�
8�
8�
8�
.1�H�/�/�6H�K���K�Y�?�?�?�$
M�$
M��f�%�%�%��!�!�'�6�+;�<�<�<��!�!�'�6�+;�D�!�I�I�I��!�!�'�6�+=�>�>�>��!�!�'�6�+=�d�!�K�K�K��!�!�'�6�+C�D�D�D��!�!��V�5�d�"�D�D�D�&/��"�� � ��!3�!5�!5�q�9�9�9�� � ��V�%=�%?�%?�!@�!@�!�D�D�D�#)�"4�D�"A�"A�"A��� � ��_�!5�!5�q�9�9�9�)/�(@��(M�(M�(M�%�� � ��S��.C�%D�%D�!E�!E�q�I�I�I��"�'�,�,�y�&�9�9�3�?�?�;�1��G�G�9�:�:�:��G�G�9�:�:�:��G�G�9�:�:�:�;�;�;�;�;�;�;�;�;�;�;����;�;�;�;�
�#�#�F�$6�$8�$8�!�<�<�<��#�#���*�$�7�7�7�8�8�!�=�=�=��#�#�C��(@�(B�(B�$C�$C�Q�G�G�G��#�#���C��!9��!F�!F�!F�G�G�H�H�!�M�M�M�G$
M�$
M�$
M�$
M�$
M�$
M�$
M�$
M�$
M�$
M�$
M����$
M�$
M�$
M�$
M�L
�M�)�$�$�$��&�!�!�!�!��
�M�)�$�$�$��&�!�!�!�!��������+�W�5�5�5�5�5sj�AB$�$B(�+B(�0-Q�HP+�.AL:�.P+�:L>	�>P+�L>	�CP+�Q�+P/�/Q�2P/�3Q�*R	c	���tdtjd�������5}t	j��|jsJ�t	jd���t	j��t	jd���ddd��n#1swxYwYtdtjd�������5}t	j��}|jsJ�t	jd���}t	j��}t	jd���}|�|d��|�t|��d��|�t|��d��|�t|��d��|�ttt|����d��|�ttt|����d��|�|jd��|�|j
d��ddd��dS#1swxYwYdS)Nrlz�                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
                Tr�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�r�r�r�r�r�r�r�r?�user)r�r�r��cpu_percent_percpur��cpu_times_percent_percpus      r7�test_cpu_steal_decreasez TestMisc.test_cpu_steal_decrease�s������O��
�
��V�X�X�
��	2�#$�
�� � � ��8�O�O�O���d�+�+�+�+��$�&�&�&��$�D�1�1�1�1�	2�	2�	2�	2�	2�	2�	2�	2�	2�	2�	2����	2�	2�	2�	2� ���O��
�
��V�X�X�
��	;�#$� �,�.�.�K��8�O�O�O�!'�!3�4�!@�!@�!@�� &� 8� :� :��'-�'?�t�'L�'L�'L�$�����Q�/�/�/�����$6� 7� 7��;�;�;�����$5� 6� 6��:�:�:�����$5� 6� 6��>�>�>�����C��-E�$F�$F� G� G��K�K�K�����C��-E�$F�$F� G� G��O�O�O����.�4�a�8�8�8���� 1� 6��:�:�:�)	;�	;�	;�	;�	;�	;�	;�	;�	;�	;�	;�	;����	;�	;�	;�	;�	;�	;s%�AB�B�"B�E;I"�"I&�)I&c���tjdd���5}|�ttjj��|jsJ�	ddd��dS#1swxYwYdS)Nr%Tr&)rr�r4r�r�rrr�r�r6s  r7�test_boot_time_mockedzTestMisc.test_boot_time_mocked�s���
�Z�-�d�
;�
;�
;�	�q�������)�
+�
+�
+��8�O�O�O�O�		�	�	�	�	�	�	�	�	�	�	�	����	�	�	�	�	�	s�4A�A� Ac��tjddg���5}|�tj��djd��|jsJ�	ddd��n#1swxYwYtjddg���5}|�tj��djd��|jsJ�	ddd��n#1swxYwYtjddg���5}|�tj��djd��|jsJ�	ddd��dS#1swxYwYdS)	Nzpsutil._pslinux.cext.users)�	giampaolo�pts/2z:0��h�ATr<r�r�	localhost)r�r�z:0.0r�Tr<)r�r��foor�Tr<r�)rr�r�r��users�hostr�r6s  r7�test_users_mockedzTestMisc.test_users_mocked�s���Z�4�'>�&?�@�@�@�	�CD����V�\�^�^�A�.�3�[�A�A�A��8�O�O�O�O�		�	�	�	�	�	�	�	�	�	�	����	�	�	�	�
�Z�4�'>�&?�@�@�@�	�CD����V�\�^�^�A�.�3�[�A�A�A��8�O�O�O�O�		�	�	�	�	�	�	�	�	�	�	����	�	�	�	��Z�4�'>�&?�@�@�@�	�CD����V�\�^�^�A�.�3�U�;�;�;��8�O�O�O�O�		�	�	�	�	�	�	�	�	�	�	�	����	�	�	�	�	�	s5�<A!�!A%�(A%�<C�C�C�.<D8�8D<�?D<c�R�|���}tj|��	|t_|�ttj��|�ttj��|�ttjd���|�ttj	��|�ttj
��|�ttj��|�ttj��|�ttj
��|�tjtj��dt_dS#dt_wxYw)NTr�r3)r�rFr�r�r5r4r	r�rBr�rrr�r%�
NoSuchProcess�Process)r��tdirs  r7�test_procfs_pathzTestMisc.test_procfs_path�s5����� � ��
������	)�!%�F�����g�v�'<�=�=�=����g�v�'7�8�8�8����g�v�'7���E�E�E����g�v�'7�8�8�8����g�v�'=�>�>�>����g�v�'=�>�>�>����g�v�':�;�;�;����g�v�'=�>�>�>����f�2�F�N�C�C�C�!(�F������F��(�(�(�(s�E F�F&c��t��5tj��}|���}|�t|��d��t
|d����dj}|�|j	|��tj|��}|�
��|�|tj����ddd��dS#1swxYwYdS)Nr<c��|jSr^)�idr`s r7�<lambda>z)TestMisc.test_issue_687.<locals>.<lambda>s����rc)�keyr�)
rr�r��threadsr�rJ�sortedr�r��pid�as_dictrH�pids)r��pr��tid�pts     r7�test_issue_687zTestMisc.test_issue_687�s���\�\�	1�	1��� � �A��i�i�k�k�G����S��\�\�1�-�-�-���n�n�5�5�5�a�8�;�C������s�+�+�+����$�$�B��J�J�L�L�L����S�&�+�-�-�0�0�0�	1�	1�	1�	1�	1�	1�	1�	1�	1�	1�	1�	1����	1�	1�	1�	1�	1�	1s�CC.�.C2�5C2c��tdd��5}tjtj����sJ�|jsJ�	ddd��dS#1swxYwYdS)N�/proc/%s/statusrd)r�r��
pid_existsrF�getpidr�r6s  r7�test_pid_exists_no_proc_statusz'TestMisc.test_pid_exists_no_proc_statuss����0�"�
5�
5�	���$�R�Y�[�[�1�1�1�1�1��8�O�O�O�O�	�	�	�	�	�	�	�	�	�	�	�	����	�	�	�	�	�	s�1A�A�AN)rrrr�r�r�r�r�r�rr�r�r_rcr7r�r�^s�������?�?�?�
;6�;6�;6�z';�';�';�R������()�)�)�&����1�1���1� ����rcr�z
no batteryc��eZdZejed��d��d���Zd�Zd�Zd�Z	d�Z
d�Zd	�Zd
�Z
d�ZdS)
�TestSensorsBattery�acpizacpi utility not availablec� �td��}t|�d��d����dd����}tj��j}|�||d���dS)Nzacpi -br�r�r�rdr�)	rrzrHr��replacer��sensors_battery�percentr�)r�r{�
acpi_valuer�s    r7�test_percentzTestSensorsBattery.test_percentsw����m�m������3����*�0�0�2�2�:�:�3��C�C�D�D�
��-�/�/�7�����z�<�q��A�A�A�A�Arcc�l���fd�}t�trdnd}tj||���5}|�tj��jd��|�tj��jt
j	��|j
sJ�	ddd��dS#1swxYwYdS)Nc���|�d��s|�d��rtjd��S�|g|�Ri|��S)N�
AC0/online�	AC/online�1�r�r�r�rs   �r7r�z@TestSensorsBattery.test_emulate_power_plugged.<locals>.open_mock&�Z����}�}�\�*�*�
8�d�m�m�K�.H�.H�
8��z�$�'�'�'� �y��7��7�7�7��7�7�7rcr�r�rkT)rFrrr�r�r�r��
power_plugged�secsleft�POWER_TIME_UNLIMITEDr��r�r�r�r�r�s    @r7�test_emulate_power_pluggedz-TestSensorsBattery.test_emulate_power_plugged$s���	8�	8�	8�	8�	8��	�),�D�o�o�2D��
�Z���
;�
;�
;�	�q����V�3�5�5�C�T�J�J�J�����&�(�(�1�6�3N�
P�
P�
P��8�O�O�O�O�		�	�	�	�	�	�	�	�	�	�	�	����	�	�	�	�	�	s�A,B)�)B-�0B-c����fd�}t�trdnd}tj||���5}|�tj��jd��|jsJ�	ddd��dS#1swxYwYdS)Nc���|�d��s|�d��rttjd���|�d��r!t	jt
d����S�|g|�Ri|��S)Nr�r�rd�/status�charging�r�r	r
rr�r�rrs   �r7r�zBTestSensorsBattery.test_emulate_power_plugged_2.<locals>.open_mock7s�����}�}�\�*�*�
8�d�m�m�K�.H�.H�
8��e�l�B�/�/�/����y�)�)�
8��{�1�Z�=�=�1�1�1� �y��7��7�7�7��7�7�7rcr�r�rkT�	rFrrr�r�r�r�r�r�r�s    @r7�test_emulate_power_plugged_2z/TestSensorsBattery.test_emulate_power_plugged_24s����	8�	8�	8�	8�	8��	�),�D�o�o�2D��
�Z���
;�
;�
;�	�q����V�3�5�5�C�T�J�J�J��8�O�O�O�O�	�	�	�	�	�	�	�	�	�	�	�	����	�	�	�	�	�	��6A3�3A7�:A7c����fd�}t�trdnd}tj||���5}|�tj��jd��|jsJ�	ddd��dS#1swxYwYdS)Nc���|�d��s|�d��rtjd��S�|g|�Ri|��S)Nr�r��0r�rs   �r7r�zDTestSensorsBattery.test_emulate_power_not_plugged.<locals>.open_mockGr�rcr�r�rkFr�r�s    @r7�test_emulate_power_not_pluggedz1TestSensorsBattery.test_emulate_power_not_pluggedEs����	8�	8�	8�	8�	8��	�),�D�o�o�2D��
�Z���
;�
;�
;�	�q����V�3�5�5�C�U�K�K�K��8�O�O�O�O�	�	�	�	�	�	�	�	�	�	�	�	����	�	�	�	�	�	r�c����fd�}t�trdnd}tj||���5}|�tj��jd��|jsJ�	ddd��dS#1swxYwYdS)Nc���|�d��s|�d��rttjd���|�d��r!t	jt
d����S�|g|�Ri|��S)Nr�r�rdr��dischargingr�rs   �r7r�zFTestSensorsBattery.test_emulate_power_not_plugged_2.<locals>.open_mockVs�����}�}�\�*�*�
8�d�m�m�K�.H�.H�
8��e�l�B�/�/�/����y�)�)�
8��{�1�]�#3�#3�4�4�4� �y��7��7�7�7��7�7�7rcr�r�rkFr�r�s    @r7� test_emulate_power_not_plugged_2z3TestSensorsBattery.test_emulate_power_not_plugged_2Ss����	8�	8�	8�	8�	8��	�),�D�o�o�2D��
�Z���
;�
;�
;�	�q����V�3�5�5�C�U�K�K�K��8�O�O�O�O�	�	�	�	�	�	�	�	�	�	�	�	����	�	�	�	�	�	r�c����fd�}t�trdnd}tj||���5}|�tj��j��|jsJ�	ddd��dS#1swxYwYdS)Nc���|�d��s|�d��rttjd���|�d��rt	jd��S�|g|�Ri|��S)N�"/sys/class/power_supply/AC0/online�!/sys/class/power_supply/AC/onlinerd�#/sys/class/power_supply/BAT0/statuss???)rwr	r
rr�r�rs   �r7r�zETestSensorsBattery.test_emulate_power_undetermined.<locals>.open_mockgs�������C�D�D�
8��O�O�$G�H�H�
8��e�l�B�/�/�/����!F�G�G�
8��z�&�)�)�)� �y��7��7�7�7��7�7�7rcr�r�rk)	rFrrr�rtr�r�r�r�r�s    @r7�test_emulate_power_undeterminedz2TestSensorsBattery.test_emulate_power_undeterminedds����	8�	8�	8�	8�	8��	�),�D�o�o�2D��
�Z���
;�
;�
;�	�q����f�4�6�6�D�E�E�E��8�O�O�O�O�	�	�	�	�	�	�	�	�	�	�	�	����	�	�	�	�	�	s�5A2�2A6�9A6c���tdd��5}|�tj��jd��|jsJ�	ddd��dS#1swxYwYdS)N�(/sys/class/power_supply/BAT0/energy_fullr�r)r�r�r�r�r�r�r6s  r7�test_emulate_energy_full_0z-TestSensorsBattery.test_emulate_energy_full_0vs���
�:�D�B�B�	�EF����V�3�5�5�=�q�A�A�A��8�O�O�O�O�	�	�	�	�	�	�	�	�	�	�	�	����	�	�	�	�	�	s�6A�A�Ac��tdttjd����5tdttjd����5t	dd��5|�t
j��jd��ddd��n#1swxYwYddd��n#1swxYwYddd��dS#1swxYwYdS)Nr�rdz(/sys/class/power_supply/BAT0/charge_fullz%/sys/class/power_supply/BAT0/capacitys88�X)	r�r	r
rr�r�r�r�r��r�s r7�"test_emulate_energy_full_not_availz5TestSensorsBattery.test_emulate_energy_full_not_avail}s���!�:����b�)�)�+�+�	K�	K�%�>��E�L�"�-�-�/�/�
K�
K�'�?��H�H�K�K��$�$�V�%;�%=�%=�%E�r�J�J�J�K�K�K�K�K�K�K�K�K�K�K����K�K�K�K�
K�
K�
K�
K�
K�
K�
K�
K�
K�
K�
K����
K�
K�
K�
K�	K�	K�	K�	K�	K�	K�	K�	K�	K�	K�	K�	K����	K�	K�	K�	K�	K�	KsY�)C�B3�#-B�B3�B � B3�#B �$B3�'C�3B7	�7C�:B7	�;C�C�Cc	���tdttjd����5tdttjd����5tdttjd����5|�tj��j��ddd��n#1swxYwYddd��n#1swxYwYddd��dS#1swxYwYdS)Nr�rdr�r�)r�r	r
rrtr�r�r�r�s r7�test_emulate_no_powerz(TestSensorsBattery.test_emulate_no_power�s���
 �3����b�)�)�+�+�		N�		N�%�8��E�L�"�-�-�/�/�
N�
N�)�=����b�1�1�3�3�N�N��%�%�f�&<�&>�&>�&L�M�M�M�N�N�N�N�N�N�N�N�N�N�N����N�N�N�N�
N�
N�
N�
N�
N�
N�
N�
N�
N�
N�
N����
N�
N�
N�
N�		N�		N�		N�		N�		N�		N�		N�		N�		N�		N�		N�		N����		N�		N�		N�		N�		N�		NsY�)C"�)C
�;,B3�'C
�3B7�7C
�:B7�;C
�>C"�
C	�C"�C	�C"�"C&�)C&N)rrrr�r{rr�r�r�r�r�r�r�r�r�r_rcr7r�r�s��������X�_���v���&�(D�E�E�B�B�F�E�B���� ���"������"���$���K�K�K�N�N�N�N�Nrcr�c��eZdZd�ZdS)�TestSensorsBatteryEmulatedc�`���fd�}t�trdnd}tjddg���5}tj||���5}|�tj����ddd��n#1swxYwYddd��n#1swxYwY|jsJ�|jsJ�dS)Nc�`��|�d��r!tjtd����S|�d��r!tjtd����S|�d��r!tjtd����S�|g|�Ri|��S)Nz/energy_now�60000000z
/power_now�0z/energy_full�60000001�r�r�r�rrs   �r7r�z5TestSensorsBatteryEmulated.test_it.<locals>.open_mock�s�����}�}�]�+�+�
8��{�1�Z�=�=�1�1�1����|�,�,�
8��{�1�S�6�6�*�*�*����~�.�.�
8��{�1�Z�=�=�1�1�1� �y��7��7�7�7��7�7�7rcr�r�z
os.listdir�BAT0r�rk)rFrrr�rxr�r�r�)r�r�r��mlistdir�mopenr�s     @r7�test_itz"TestSensorsBatteryEmulated.test_it�sC���	8�	8�	8�	8�	8��	�),�D�o�o�2D��
�Z��F�8�
<�
<�
<�	?����K�Y�?�?�?�
?�5��$�$�V�%;�%=�%=�>�>�>�
?�
?�
?�
?�
?�
?�
?�
?�
?�
?�
?����
?�
?�
?�
?�	?�	?�	?�	?�	?�	?�	?�	?�	?�	?�	?����	?�	?�	?�	?�������|�����s5�B�'A:�.B�:A>	�>B�A>	�B�B�BN)rrrrr_rcr7r�r��s#����������rcr�c��eZdZd�Zd�ZdS)�TestSensorsTemperaturesc����fd�}t�trdnd}tj||���5tjddg���5t	j��dd	}|�|jd
��|�|jd��|�|j	d��|�|j
d
��ddd��n#1swxYwYddd��dS#1swxYwYdS)Nc����|�d��r!tjtd����S|�d��r!tjtd����S|�d��rtjd��S|�d��rtjd��S|�d	��rtjd
��S�|g|�Ri|��S)N�/namer�z/temp1_label�labelz/temp1_input�30000z
/temp1_maxs40000z/temp1_crit�50000)r�r�r�rr�rs   �r7r�zCTestSensorsTemperatures.test_emulate_class_hwmon.<locals>.open_mock�s�����}�}�W�%�%�
8��{�1�V�9�9�-�-�-����~�.�.�	
8��{�1�W�:�:�.�.�.����~�.�.�
8��z�(�+�+�+����|�,�,�
8��z�(�+�+�+����}�-�-�
8��z�(�+�+�+� �y��7��7�7�7��7�7�7rcr�r�rkr�z/sys/class/hwmon/hwmon0/temp1r�r�rr�>@gD@�I@�rFrrr�r��sensors_temperaturesr�rr��high�critical)r�r�r��tempr�s    @r7�test_emulate_class_hwmonz0TestSensorsTemperatures.test_emulate_class_hwmon�s����	8�	8�	8�	8�	8��	�),�D�o�o�2D��
�Z���
;�
;�
;�	6�	6���K�*I�)J�L�L�L�
6�
6��2�4�4�V�<�Q�?��� � ���W�5�5�5�� � ���t�4�4�4�� � ���D�1�1�1�� � ����5�5�5�

6�
6�
6�
6�
6�
6�
6�
6�
6�
6�
6����
6�
6�
6�
6�	6�	6�	6�	6�	6�	6�	6�	6�	6�	6�	6�	6����	6�	6�	6�	6�	6�	6s6�C7�BC�C7�C#	�#C7�&C#	�'C7�7C;�>C;c����fd�}d�}t�trdnd}tj||���5tjdd|���5t	j��d	d
}|�|jd��|�|jd��|�|j	d
��|�|j
d
��ddd��n#1swxYwYddd��dS#1swxYwYdS)Nc���|�d��rtjd��S|�d��rtjd��S|�d��r!tjt	d����S|�d��r!tjt	d����S�|g|�Ri|��S)	N�0_tempr	rr�0_typer�typer�)r�r�r�r�rrs   �r7r�zETestSensorsTemperatures.test_emulate_class_thermal.<locals>.open_mock�s�����}�}�X�&�&�	
8��z�(�+�+�+����v�&�&�
8��z�(�+�+�+����x�(�(�
8��{�1�Z�=�=�1�1�1����v�&�&�
8��{�1�V�9�9�-�-�-� �y��7��7�7�7��7�7�7rcc�L�|dkrgS|dkrgS|dkrdgS|dkrddgSgS)Nz/sys/class/hwmon/hwmon*/temp*_*z&/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_r`s r7�	glob_mockzETestSensorsTemperatures.test_emulate_class_thermal.<locals>.glob_mock�s\���8�8�8��	��A�A�A��	��;�;�;�:�;�;��G�G�G�L�L�N�N��Ircr�r�rkr�Tr�r�rrdr
rr)r�r�rr�rr�s     @r7�test_emulate_class_thermalz2TestSensorsTemperatures.test_emulate_class_thermal�s����
	8�
	8�
	8�
	8�
	8�
	�
	�
	��	�),�D�o�o�2D��
�Z���
;�
;�
;�	6�	6���K��)�L�L�L�
6�
6��2�4�4�V�<�Q�?��� � ���R�0�0�0�� � ���t�4�4�4�� � ���D�1�1�1�� � ����5�5�5�
6�
6�
6�
6�
6�
6�
6�
6�
6�
6�
6����
6�
6�
6�
6�	6�	6�	6�	6�	6�	6�	6�	6�	6�	6�	6�	6����	6�	6�	6�	6�	6�	6s6�C:�
BC"�C:�"C&	�&C:�)C&	�*C:�:C>�C>N)rrrrrr_rcr7rr�s2������6�6�6�6!6�!6�!6�!6�!6rcrc��eZdZd�ZdS)�TestSensorsFansc����fd�}t�trdnd}tj||���5tjddg���5t	j��dd	}|�|jd
��|�|jd��ddd��n#1swxYwYddd��dS#1swxYwYdS)Nc�`��|�d��r!tjtd����S|�d��r!tjtd����S|�d��r!tjtd����S�|g|�Ri|��S)Nrr�z/fan1_labelrz/fan1_input�2000r�rs   �r7r�z4TestSensorsFans.test_emulate_data.<locals>.open_mock�s�����}�}�W�%�%�
8��{�1�V�9�9�-�-�-����}�-�-�
8��{�1�W�:�:�.�.�.����}�-�-�
8��{�1�V�9�9�-�-�-� �y��7��7�7�7��7�7�7rcr�r�rkr�z/sys/class/hwmon/hwmon2/fan1r�r�rri�)	rFrrr�r��sensors_fansr�rr�)r�r�r��fanr�s    @r7r�z!TestSensorsFans.test_emulate_data�sj���	8�	8�	8�	8�	8��	�),�D�o�o�2D��
�Z���
;�
;�
;�	4�	4���K�*H�)I�K�K�K�
4�
4��)�+�+�F�3�A�6��� � ���G�4�4�4�� � ���d�3�3�3�	
4�
4�
4�
4�
4�
4�
4�
4�
4�
4�
4����
4�
4�
4�
4�	4�	4�	4�	4�	4�	4�	4�	4�	4�	4�	4�	4����	4�	4�	4�	4�	4�	4s6�C�AB)�C�)B-	�-C�0B-	�1C�C�CN)rrrr�r_rcr7rr�s#������4�4�4�4�4rcrc��eZdZe��d���Zd�Zejed��d���Z	d�Z
d�Zd�Zd�Z
d	�Zd
�Zd�Zd�Zd
�Zd�Zd�Zejed��d���Zd�Zd�Zd�Zd�ZdS)�TestProcessc��|���}tj�|j�����\}}}tj|j���d���}|�|td�|D����d���|�|td�|D����d���|�|td�|D����d���dS)NF)�groupedc�,�g|]}|j|jz��Sr_)�
private_dirty�
private_cleanr�s  r7rhz?TestProcess.test_parse_smaps_vs_memory_maps.<locals>.<listcomp>s!��F�F�F�A�a�o���7�F�F�Frcrr�c��g|]	}|j��
Sr_)�pssr�s  r7rhz?TestProcess.test_parse_smaps_vs_memory_maps.<locals>.<listcomp>s��*�*�*��a�e�*�*�*rcc��g|]	}|j��
Sr_)r1r�s  r7rhz?TestProcess.test_parse_smaps_vs_memory_maps.<locals>.<listcomp>s��,�,�,�!�q�v�,�,�,rc)	�spawn_testprocr�rrr�r��_parse_smaps�memory_mapsr�r�)r��sproc�ussr)r1�mapss      r7�test_parse_smaps_vs_memory_mapsz+TestProcess.test_parse_smaps_vs_memory_mapss���#�#�%�%����0�0���;�;�H�H�J�J���S�$��~�e�i�(�(�4�4�U�4�C�C�������F�F��F�F�F�G�G��	�	�	�	�	
�����*�*�T�*�*�*�+�+�4�	�	9�	9�	9�����#�,�,�t�,�,�,�-�-�T�	�	;�	;�	;�	;�	;rcc���tdtj��ztjd�������5}tj�tj����}|�	��\}}}|j
sJ�|�|d��|�|d��|�|d��ddd��dS#1swxYwYdS)N�/proc/%s/smapsa�                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
                ilri<)r�rFr�r�r�r�r�rrr�r,r�r�)r�r�r�r/r)r1s      r7�test_parse_smaps_mockedz#TestProcess.test_parse_smaps_mockeds!��
��r�y�{�{�*��O��
�
�,�V�X�X�1��	.�0#$���'�'��	���4�4�A��^�^�-�-�N�C��d��8�O�O�O����S�"5�6�6�6����S�(�+�+�+����T�9�-�-�-�=	.�	.�	.�	.�	.�	.�	.�	.�	.�	.�	.�	.����	.�	.�	.�	.�	.�	.s�	BC*�*C.�1C.zunreliable on PYPYc�D�d�}|���}t|d��5|�||��jd��ddd��n#1swxYwYt|d��5|�||��jd��ddd��n#1swxYwYt|d��5|�||��jd��ddd��n#1swxYwYt|d��5|�||��jd��ddd��n#1swxYwYt|d��5|�||��jd��ddd��n#1swxYwYt|d��5|�||��jd��ddd��n#1swxYwYtr�t|��t|d��5|�||��jd��ddd��n#1swxYwYt|��t|d	��5|�||��jd��ddd��dS#1swxYwYdSdS)
Nc��tj��}tj��tz}	|���D]G}|jtj�|��kr|cStj��|krn�H�]r^)	r�r��timer
�
open_filesr|rF�abspathr�)�fnamer��	giveup_at�files    r7�
get_test_filez7TestProcess.test_open_files_mode.<locals>.get_test_fileCs���� � �A��	���n�4�I�
��L�L�N�N���D��y�B�G�O�O�E�$:�$:�:�:�#��������y�0�0���1�	
rcr�r�r�zr+zw+za+razx+)r�rFr��moderr)r�r=�testfns   r7�test_open_files_modez TestProcess.test_open_files_modeAs���		@�		@�		@����"�"��
�&�#�
�
�	>�	>����]�]�6�2�2�7��=�=�=�	>�	>�	>�	>�	>�	>�	>�	>�	>�	>�	>����	>�	>�	>�	>�
�&�#�
�
�	>�	>����]�]�6�2�2�7��=�=�=�	>�	>�	>�	>�	>�	>�	>�	>�	>�	>�	>����	>�	>�	>�	>�
�&�#�
�
�	>�	>����]�]�6�2�2�7��=�=�=�	>�	>�	>�	>�	>�	>�	>�	>�	>�	>�	>����	>�	>�	>�	>��&�$�
�
�	?�	?����]�]�6�2�2�7��>�>�>�	?�	?�	?�	?�	?�	?�	?�	?�	?�	?�	?����	?�	?�	?�	?�
�&�$�
�
�	?�	?����]�]�6�2�2�7��>�>�>�	?�	?�	?�	?�	?�	?�	?�	?�	?�	?�	?����	?�	?�	?�	?�
�&�$�
�
�	?�	?����]�]�6�2�2�7��>�>�>�	?�	?�	?�	?�	?�	?�	?�	?�	?�	?�	?����	?�	?�	?�	?��	C�������f�c�"�"�
B�
B�� � ���v�!6�!6�!;�S�A�A�A�
B�
B�
B�
B�
B�
B�
B�
B�
B�
B�
B����
B�
B�
B�
B�������f�d�#�#�
C�
C�� � ���v�!6�!6�!;�T�B�B�B�
C�
C�
C�
C�
C�
C�
C�
C�
C�
C�
C�
C����
C�
C�
C�
C�
C�
C�	C�	Cs��%A�A� A�4%B%�%B)�,B)�%C1�1C5�8C5�%D=�=E�E�%F	�	F
�F
�$%G�G�G�%H7�7H;�>H;�!%J�J�Jc���tj��}|���}t|���d��5t|jdt
|��z��tjdttjd�����5}|���}|rJ�|jsJ�	ddd��n#1swxYwYtjdttj
d�����5}|�|���g��|jsJ�	ddd��n#1swxYwYddd��dS#1swxYwYdS)Nr��len(ret) != %i�psutil._pslinux.os.readlinkrdrk)r�r�r8rFr�rrJrr��OSErrorr
rr��EINVALr�)r�r��filesr�s    r7�test_open_files_file_gonez%TestProcess.test_open_files_file_gonefs��
�N����������
�$�/�/�#�#�S�
)�
)�
	 �
	 ��q�|�%5��E�
�
�%B�C�C�C���9�(/���b�(A�(A�C�C�C�
 �FG������� � � � ��x�����	
 �
 �
 �
 �
 �
 �
 �
 �
 �
 �
 ����
 �
 �
 �
 ���9�(/���b�(A�(A�C�C�C�
 �FG�� � �������4�4�4��x�����
 �
 �
 �
 �
 �
 �
 �
 �
 �
 �
 ����
 �
 �
 �
 �
	 �
	 �
	 �
	 �
	 �
	 �
	 �
	 �
	 �
	 �
	 �
	 ����
	 �
	 �
	 �
	 �
	 �
	 s[�
AE�"C
�E�
C	�E�C	�1E�2E�9E�E		�	E�E		�
E�E!�$E!c��tj��}|���}t|���d��5t|jdt
|��z��trdnd}tj	|ttjd�����5}|���}|rJ�|j
sJ�	ddd��n#1swxYwYddd��dS#1swxYwYdS)Nr�rBr�r�rdrk)r�r�r8rFr�rrJrrr�r	r
rr��r�r�rFr�r�s     r7�test_open_files_fd_gonez#TestProcess.test_open_files_fd_gonezsm��
�N����������
�$�/�/�#�#�S�
)�
)�	 �	 ��q�|�%5��E�
�
�%B�C�C�C�-0�H�/�/�6H�K���K�(/���b�(A�(A�C�C�C�
 �FG������� � � � ��x�����	
 �
 �
 �
 �
 �
 �
 �
 �
 �
 �
 ����
 �
 �
 �
 �		 �	 �	 �	 �	 �	 �	 �	 �	 �	 �	 �	 ����	 �	 �	 �	 �	 �	 s7�
AC0�)"C�C0�C	�C0�C	� C0�0C4�7C4c�@�tj��}|���}t|���d��5t|jdt
|��z��d}tj|ttjd�����5}tjd��5|���}|rJ�|jsJ�	ddd��n#1swxYwYddd��n#1swxYwYddd��dS#1swxYwYdS)Nr�rBrCrdrk�psutil._pslinux.debug)
r�r�r8rFr�rrJrr�rDr
�ENAMETOOLONGr�rIs     r7�test_open_files_enametoolongz(TestProcess.test_open_files_enametoolong�s���
�N����������
�$�/�/�#�#�S�
)�
)�		$�		$��q�|�%5��E�
�
�%B�C�C�C�7�K���K�(/��0B�B�(G�(G�I�I�I�
$�LM��Z� 7�8�8�$�$��L�L�N�N�E�$�$�$�$��8�O�O�O�O�$�$�$�$�$�$�$�$�$�$�$����$�$�$�$�
$�
$�
$�
$�
$�
$�
$�
$�
$�
$�
$����
$�
$�
$�
$�			$�		$�		$�		$�		$�		$�		$�		$�		$�		$�		$�		$����		$�		$�		$�		$�		$�		$s[�
AD� C;�5"C$�C;�$C(�(C;�+C(�,C;�/D�;C?	�?D�C?	�D�D�Dc�"�tjdi���5}|�tj�t
j���������|j	sJ�	ddd��dS#1swxYwYdS)Nz)psutil._pslinux._psposix.get_terminal_mapr�)
rr�rtr�rrr�rFr��terminalr�r6s  r7�test_terminal_mockedz TestProcess.test_terminal_mocked�s���
�Z�C�%'�)�)�)�	�,-����f�o�5�5�b�i�k�k�B�B�K�K�M�M�N�N�N��8�O�O�O�O�	�	�	�	�	�	�	�	�	�	�	�	����	�	�	�	�	�	s�AB�B�Bc�>�tj��}tjt	d����}tjd|d���5}|�|���ddg��|j	sJ�	ddd��n#1swxYwYtjt	d����}tjd|d���5}|�|���gd���|j	sJ�	ddd��dS#1swxYwYdS)	Nzfoobarr%Tror��barz	foobar�r�rSrd�
r�r�r�r�rrr�r��cmdliner��r�r�ryr�s    r7�test_cmdline_mockedzTestProcess.test_cmdline_mocked�s����N�����K��"2� 3� 3�4�4�	�
�Z�-�%.�t�=�=�=�	�@A����Q�Y�Y�[�[�5�%�.�9�9�9��8�O�O�O�O�	�	�	�	�	�	�	�	�	�	�	����	�	�	�	��K��"6� 7� 7�8�8�	�
�Z�-�%.�t�=�=�=�	�@A����Q�Y�Y�[�[�*<�*<�*<�=�=�=��8�O�O�O�O�	�	�	�	�	�	�	�	�	�	�	�	����	�	�	�	�	�	�$�4B
�
B�B�4D�D�Dc�>�tj��}tjt	d����}tjd|d���5}|�|���ddg��|j	sJ�	ddd��n#1swxYwYtjt	d����}tjd|d���5}|�|���gd���|j	sJ�	ddd��dS#1swxYwYdS)	Nzfoo bar r%Tror�rSz	foo bar  rTrUrWs    r7�test_cmdline_spaces_mockedz&TestProcess.test_cmdline_spaces_mocked�s����N�����K��*�
�
�.�.�	�
�Z�-�%.�t�=�=�=�	�@A����Q�Y�Y�[�[�5�%�.�9�9�9��8�O�O�O�O�	�	�	�	�	�	�	�	�	�	�	����	�	�	�	��K��+���/�/�	�
�Z�-�%.�t�=�=�=�	�@A����Q�Y�Y�[�[�*<�*<�*<�=�=�=��8�O�O�O�O�	�	�	�	�	�	�	�	�	�	�	�	����	�	�	�	�	�	rYc�6�tj��}tjt	d����}tjd|d���5}|�|���ddg��|j	sJ�	ddd��dS#1swxYwYdS)Nzfoo barr%Tror�rSrUrWs    r7�test_cmdline_mixed_separatorsz)TestProcess.test_cmdline_mixed_separators�s���
�N�����K��"2� 3� 3�4�4�	�
�Z�-�%.�t�=�=�=�	�@A����Q�Y�Y�[�[�5�%�.�9�9�9��8�O�O�O�O�	�	�	�	�	�	�	�	�	�	�	�	����	�	�	�	�	�	s�4B�B�Bc�H�tjdd���5|�tj�����d��|�tj�����d��ddd��dS#1swxYwYdS)NrCz/home/foo (deleted)r�z	/home/foo)rr�r�r�r��exe�cwdr�s r7�!test_readlink_path_deleted_mockedz-TestProcess.test_readlink_path_deleted_mocked�s���
�Z�5�%:�<�<�<�	B�	B����V�^�-�-�1�1�3�3�[�A�A�A����V�^�-�-�1�1�3�3�[�A�A�A�	B�	B�	B�	B�	B�	B�	B�	B�	B�	B�	B�	B����	B�	B�	B�	B�	B�	Bs�A3B�B�Bc�����fd�}t�trdnd}tj||���5}t	j�����}|jsJ�|�|g��ddd��n#1swxYwY�fd�}tj||���5|�	tj
t	j��j��ddd��dS#1swxYwYdS)Nc���|�dtj��z��rttjd����|g|�Ri|��S�Nz
/proc/%s/taskrd)rwrFr�r	r
rrs   �r7r�z2TestProcess.test_threads_mocked.<locals>.open_mock�sT�����������<�=�=�
8��e�l�B�/�/�/� �y��7��7�7�7��7�7�7rcr�r�rkc���|�dtj��z��rttjd����|g|�Ri|��Srd)rwrFr�r	r
�EPERMrs   �r7r�z2TestProcess.test_threads_mocked.<locals>.open_mock�sT�����������<�=�=�
8��e�k�2�.�.�.� �y��7��7�7�7��7�7�7rc)rFrrr�r�r�r�r�r�r4�AccessDenied)r�r�r�r�r�r�s     @r7�test_threads_mockedzTestProcess.test_threads_mocked�s����
	8�	8�	8�	8�	8��	�),�D�o�o�2D��
�Z���
;�
;�
;�	&�q��.�"�"�*�*�,�,�C��8�O�O�O����S�"�%�%�%�	&�	&�	&�	&�	&�	&�	&�	&�	&�	&�	&����	&�	&�	&�	&�	8�	8�	8�	8�	8��Z���
;�
;�
;�	M�	M����f�1�6�>�3C�3C�3K�L�L�L�	M�	M�	M�	M�	M�	M�	M�	M�	M�	M�	M�	M����	M�	M�	M�	M�	M�	Ms$�AB�B�B�&7C*�*C.�1C.c�x�tjdttjd�����5}tjdtjdd�����5}tj�����}|j	sJ�|j	sJ�|�
|d��tjdd���5|�t
jtj��j��ddd��n#1swxYwYddd��n#1swxYwYddd��dS#1swxYwYdS)	Nzpsutil._pslinux.readlinkrdrkzpsutil.Process.cmdlinerzpsutil._pslinux.os.path.lexistsFr�)
rr�rDr
rr�rgr�r_r�r�r4�
ZombieProcess)r�r�r�r�s    r7�test_exe_mockedzTestProcess.test_exe_mocked�s0��
�Z�2�$+�E�L�"�$=�$=�?�?�?�	D�BD���4�(.�(;�A�r�(B�(B�D�D�D�
D�GI�
�n�&�&�*�*�,�,���y� � � ��y� � � �� � ��b�)�)�)��Z� A�-2�4�4�4�D�D��%�%��,�f�n�.>�.>�.B�D�D�D�D�D�D�D�D�D�D�D�D�D�D����D�D�D�D�
D�
D�
D�
D�
D�
D�
D�
D�
D�
D�
D����
D�
D�
D�
D�	D�	D�	D�	D�	D�	D�	D�	D�	D�	D�	D�	D����	D�	D�	D�	D�	D�	DsZ�*D/�A$D�=7D�4D�D�D�D�D�D/�D	�D/�D	�D/�/D3�6D3c�v�tdtj��zttjd����5}t
j��}|�t��5|�
��ddd��n#1swxYwY|jsJ�	ddd��dS#1swxYwYdS)Nr3rd)r�rFr�r	r
rr�r�r4rr-r��r�r�r�s   r7�test_issue_1014zTestProcess.test_issue_1014	s$��!� �2�9�;�;�.����b�)�)�+�+�	�./��� � �A��"�"�#4�5�5�
 �
 ��
�
����
 �
 �
 �
 �
 �
 �
 �
 �
 �
 �
 ����
 �
 �
 �
 ��8�O�O�O�O�
	�	�	�	�	�	�	�	�	�	�	�	����	�	�	�	�	�	s5�.B.�+B�B.�B	�B.�B	�B.�.B2�5B2r�c�N�tjdttjd�����5}tj��}|���|�t
j	��5}|�
t
j��ddd��n#1swxYwY|jsJ�	ddd��n#1swxYwY|�
|jj|j��|�
|jj|�����dS)Nzpsutil._pslinux.prlimitrdrk)rr�rDr
�ENOSYSr�r�r�r4rj�rlimit�
RLIMIT_NOFILEr�r��	exceptionr��r�r�r�r�s    r7�test_rlimit_zombiezTestProcess.test_rlimit_zombiesm��
�Z�1�$+�E�L�"�$=�$=�?�?�?�	�BC��� � �A�
�F�F�H�H�H��"�"�6�#7�8�8�
/�C�����-�.�.�.�
/�
/�
/�
/�
/�
/�
/�
/�
/�
/�
/����
/�
/�
/�
/��8�O�O�O�O�
	�	�	�	�	�	�	�	�	�	�	����	�	�	�	�	
�����*�A�E�2�2�2������+�Q�V�V�X�X�6�6�6�6�6s6�AC�6 B"�C�"B&	�&C�)B&	�*C�C�
Cc�8�tjdttjd�����5}tj��}|���|�t
j	��5}|�
��ddd��n#1swxYwY|jsJ�	ddd��n#1swxYwY|�|j
j|j��|�|j
j|�����dS)NrCrdrk)rr�rDr
rr�r�r�r4rjr`r�r�rsr�rts    r7�test_cwd_zombiezTestProcess.test_cwd_zombie#sc��
�Z�5�$+�E�L�"�$=�$=�?�?�?�	�BC��� � �A�
�F�F�H�H�H��"�"�6�#7�8�8�
�C�������
�
�
�
�
�
�
�
�
�
�
����
�
�
�
��8�O�O�O�O�
	�	�	�	�	�	�	�	�	�	�	����	�	�	�	�	
�����*�A�E�2�2�2������+�Q�V�V�X�X�6�6�6�6�6s6�AB8�6B�B8�B	�B8�B	�B8�8B<�?B<c�^�gd�}d�|�����}tdtj��z|��5tj��}|�|���d��|�|�	��t
j
��|�|���d��|�|���dtztj��z��|���}|�|jdtz��|�|jdtz��|�|jd	tz��|�|jd
tz��|�|jdtz��|�|���d��ddd��dS#1swxYwYdS)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�rr�r��7r�z
/proc/%s/stat�catr�r=r<r�rDr�r>)rMr�r�rFr�r�r�r�r��status�
STATUS_ZOMBIE�ppid�create_timerr�rBr��system�
children_user�children_system�iowait�cpu_num)r�r�r�r��cpus     r7�test_stat_file_parsingz"TestProcess.test_stat_file_parsing.s
��+
�+
�+
��X�(�(�4�.�.�'�'�)�)��
������<�g�
F�
F�
	-�
	-��� � �A����Q�V�V�X�X�u�-�-�-����Q�X�X�Z�Z��)=�>�>�>����Q�V�V�X�X�q�)�)�)�����
�
����[��6�3C�3E�3E�!E�
G�
G�
G��+�+�-�-�C����S�X�q�;��7�7�7����S�Z��[��9�9�9����S�.��K��@�@�@����S�0�!�k�/�B�B�B����S�Z��[��9�9�9����Q�Y�Y�[�[�!�,�,�,�
	-�
	-�
	-�
	-�
	-�
	-�
	-�
	-�
	-�
	-�
	-�
	-����
	-�
	-�
	-�
	-�
	-�
	-s�GH"�"H&�)H&c
��tdtj��ztjd�������5t
j��}|�|�	��j
d��|�|�	��jd��|�|���d��|�
��}|�|jd��|�|jd��|�|jd��|���}|�|jd	��|�|jd
��|�|jd��|�|j���t)t+dd
������ddd��dS#1swxYwYdS)Nr�a                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:	13r��
�Bi�i�i�i�i�i�rr?)r�rFr�r�r�r�r�r�r��num_ctx_switches�	voluntary�involuntary�num_threads�uids�real�	effective�saved�gids�_proc�_get_eligible_cpus�listrL)r�r�r�r�s    r7�test_status_file_parsingz$TestProcess.test_status_file_parsingks��
���	���+��O�3�
4�
4�5;�F�H�H�	>�	>�	N�	N��� � �A����Q�/�/�1�1�;�R�@�@�@����Q�/�/�1�1�=�r�B�B�B����Q�]�]�_�_�b�1�1�1��6�6�8�8�D����T�Y��-�-�-����T�^�T�2�2�2����T�Z��.�.�.��6�6�8�8�D����T�Y��-�-�-����T�^�T�2�2�2����T�Z��.�.�.����Q�W�7�7�9�9�4��a����;L�;L�M�M�M�-	N�	N�	N�	N�	N�	N�	N�	N�	N�	N�	N�	N����	N�	N�	N�	N�	N�	Ns�	F(G>�>H�Hc�R�tjdttjd�����5}tj��}tjd��5|���rJ�|jsJ�	ddd��n#1swxYwYddd��dS#1swxYwYdS)NrCrdrkrL)	rr�rDr
rMr�r��connectionsr�rms   r7�test_connections_enametoolongz)TestProcess.test_connections_enametoolong�s'���Z�5�$+�E�,>��$C�$C�E�E�E�	 �HI��� � �A���3�4�4�
 �
 ��=�=�?�?�*�*�*��x�����
 �
 �
 �
 �
 �
 �
 �
 �
 �
 �
 ����
 �
 �
 �
 �	 �	 �	 �	 �	 �	 �	 �	 �	 �	 �	 �	 ����	 �	 �	 �	 �	 �	 s5�(B� B�8B�B	�B�B	�B�B �#B N)rrrrr1r4r�r{rr@rGrJrNrQrXr[r]rarhrkrnrrurwr�r�r�r_rcr7r"r"s�����������
;�
;���
;� .� .� .�F�X�_�T�/�0�0�"C�"C�1�0�"C�H � � �( � � � $�$�$�&������������B�B�B�M�M�M�:D�D�D�*	�	�	��X�_��^�_�5�5�7�7�6�5�7�	7�	7�	7�;-�;-�;-�zN�N�N�2	 �	 �	 �	 �	 rcr"c��eZdZdZed���Zd�Zd�Zd�Zd�Z	d�Z
d�Zd	�Ze
��d
���Zd�Zd�Zd
S)�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��|_dSr^)r�r��proc)�clss r7�
setUpClassz#TestProcessAgainstStatus.setUpClass�s���>�#�#����rcc��tj�d|jjz��5}|D]�}|���}|�|��rY|�d��d}	t|��ccddd��S#t$r|cYccddd��SwxYw��td|z���#1swxYwYdS)Nr��	r<z
can't find %r)
r��_psplatform�	open_textr�r�r�rw�	partitionrzrK)r��	linestartrQrSrRs     r7�read_status_filez)TestProcessAgainstStatus.read_status_file�sM��
�
�
)�
)�!�D�I�M�1�3�3�
	:�67��
%�
%���z�z�|�|���?�?�9�-�-�%� �N�N�4�0�0��3�E�%�"�5�z�z�)�)�
	:�
	:�
	:�
	:�
	:�
	:�
	:�
	:��&�%�%�%�$�����
	:�
	:�
	:�
	:�
	:�
	:�
	:�
	:�%����	%��_�y�8�9�9�9�
	:�
	:�
	:�
	:����
	:�
	:�
	:�
	:�
	:�
	:s6�A	C�7B�C�B1� C�0B1�1C�C�Cc��|�d��}|�|j���|��dS)NzName:)r�r�r�r��r�rRs  r7�	test_namez"TestProcessAgainstStatus.test_name��=���%�%�g�.�.���������)�)�5�1�1�1�1�1rcc��|�d��}||�d��dz|�d���}|�dd��}|�|j���|��dS)NzState:�(r��)r�rP)r�ry�rfindr�r�r�r�r�s  r7�test_statusz$TestProcessAgainstStatus.test_status�s|���%�%�h�/�/���e�j�j��o�o��)�%�+�+�c�*:�*:�:�;���
�
�c�3�'�'�������)�)�+�+�U�3�3�3�3�3rcc��|�d��}|�|j���|��dS)NzPPid:)r�r�r�r�r�s  r7�	test_ppidz"TestProcessAgainstStatus.test_ppid�r�rcc��|�d��}|�|j���|��dS)NzThreads:)r�r�r�r�r�s  r7�test_num_threadsz)TestProcessAgainstStatus.test_num_threads�s?���%�%�j�1�1�������.�.�0�0�%�8�8�8�8�8rcc��|�d��}ttt|���dd�����}|�|j���|��dS)NzUid:r�rD)r�r�r�rzrHr�r�r�r�s  r7�	test_uidsz"TestProcessAgainstStatus.test_uids��e���%�%�f�-�-���c�#�u�{�{�}�}�Q�q�S�1�2�2�3�3���������)�)�5�1�1�1�1�1rcc��|�d��}ttt|���dd�����}|�|j���|��dS)NzGid:r�rD)r�r�r�rzrHr�r�r�r�s  r7�	test_gidsz"TestProcessAgainstStatus.test_gids�r�rcc�"�|�d��}|�|j���j|��|�d��}|�|j���j|��dS)Nzvoluntary_ctxt_switches:znonvoluntary_ctxt_switches:)r�r�r�r�r�r�r�s  r7�test_num_ctx_switchesz.TestProcessAgainstStatus.test_num_ctx_switches�s~���%�%�&@�A�A�������3�3�5�5�?��G�G�G��%�%�&C�D�D�������3�3�5�5�A�5�I�I�I�I�Ircc
�B�|�d��}dt|��vrxtt|�d����\}}|�|j���tt||dz������dSdS)N�Cpus_allowed_list:rPr�)
r�r�r�rzrHr�r��cpu_affinityr�rL)r�rR�min_�max_s    r7�test_cpu_affinityz*TestProcessAgainstStatus.test_cpu_affinity�s����%�%�&:�;�;���#�e�*�*����S�%�+�+�c�"2�"2�3�3�J�D�$�����	�&�&�(�(�$�u�T�4�!�8�/D�/D�*E�*E�
G�
G�
G�
G�
G��rcc��|�d��}tjd��5}|jj���ddd��n#1swxYwYdt
|��vr|jrJ�dS|jsJ�dS)Nr�zpsutil._pslinux.per_cpu_timesrP)r�rr�r�r�r�r�r�)r�rRr�s   r7�test_cpu_affinity_eligible_cpusz8TestProcessAgainstStatus.test_cpu_affinity_eligible_cpus�s����%�%�&:�;�;��
�Z�7�
8�
8�	1�A��I�O�.�.�0�0�0�	1�	1�	1�	1�	1�	1�	1�	1�	1�	1�	1����	1�	1�	1�	1��#�e�*�*����x�������8�O�O�O�O�Os�A�A�AN)rrr�__doc__�classmethodr�r�r�r�r�r�r�r�rr�r�r�r_rcr7r�r��s����������$�$��[�$�:�:�:�2�2�2�4�4�4�2�2�2�9�9�9�2�2�2�
2�2�2�
����J�J���J�G�G�G�����rcr�c��eZdZd�ZdS)�	TestUtilsc���tjdd���5}|�tj�d��d��|jsJ�	ddd��dS#1swxYwYdS)Nzos.readlinkz
foo (deleted)r�rSr�)rr�r�r�r��readlinkr�r6s  r7�
test_readlinkzTestUtils.test_readlink�s���
�Z�
�O�
D�
D�
D�	�����V�/�8�8��?�?��G�G�G��8�O�O�O�O�	�	�	�	�	�	�	�	�	�	�	�	����	�	�	�	�	�	s�=A"�"A&�)A&N)rrrr�r_rcr7r�r��s#����������rcr��__main__)�
run_from_name)dr��
__future__rrxr,r
�globr�rFrDr�r)r2r�r7r�r�r�r�psutil._compatrrrr�psutil.testsr	r
rrr
rrrrrrrrrrrrrrrqrrrrr|r9�dirname�__file__�HEREr1�SIOCGIFCONFrjr;r?rE�EMPTY_TEMPERATURESr8r<r@r[rmr�r�r�r��contextmanagerr�r�r{r�rr:rMrr�r�r�r�r�r�rrr9rjr�r�r�rrr"r�r�r�psutil.tests.runnerr�r_rcr7�<module>r�s��������������������������	�	�	�	�	�	�	�	�	�	�	�	�
�
�
�
�
�
�
�
�
�
�
�
�����������������
�
�
�
�������������,�,�,�,�,�,�%�%�%�%�%�%�������'�'�'�'�'�'�'�'�'�'�'�'�$�$�$�$�$�$�%�%�%�%�%�%�'�'�'�'�'�'�#�#�#�#�#�#�������-�-�-�-�-�-�*�*�*�*�*�*�'�'�'�'�'�'�#�#�#�#�#�#�#�#�#�#�#�#�������&�&�&�&�&�&�)�)�)�)�)�)�$�$�$�$�$�$�������0�0�0�0�0�0�������	�,�+�+�+�+�+�+�2�2�2�2�2�2�4�4�4�4�4�4�+�+�+�+�+�+�
�w���r�w���x�0�0�1�1�������
��������K�"���#<�=�=�=��
=�
=�
=�
=�
=�
=�
=�
=�
=����,K�K�K�$F�F�F�E�E�E�*@�@�@�7�7�7��������,��
�
���
�*���U��L�)�)�b6�b6�b6�b6�b6�n�b6�b6�*�)�b6�T	���U��L�)�)�U�U�U�U�U�>�U�U�*�)�U�z���U��L�)�)�3�3�3�3�3��3�3�*�)�3�(���U��L�)�)�<�<�<�<�<��<�<�*�)�<�~���U��L�)�)������n���*�)��8���U��L�)�)�J8�J8�J8�J8�J8�^�J8�J8�*�)�J8�Z���U��L�)�)�
F�
F�
F�
F�
F��
F�
F�*�)�
F����U��L�)�)�
O�
O�
O�
O�
O�.�
O�
O�*�)�
O�$���U��L�)�)�E�E�E�E�E�>�E�E�*�)�E�R���U��L�)�)�/5�/5�/5�/5�/5�>�/5�/5�*�)�/5�d���U��L�)�)�+B�+B�+B�+B�+B�n�+B�+B�*�)�+B�\���U��L�)�)������~���*�)��@���U��L�)�)�<)�<)�<)�<)�<)�~�<)�<)�*�)�<)�~���U��L�)�)�DL�DL�DL�DL�DL�~�DL�DL�*�)�DL�N���U��L�)�)�:;�:;�:;�:;�:;�^�:;�:;�*�)�:;�D���U��L�)�)�r�r�r�r�r�~�r�r�*�)�r�t���U��L�)�)����[��,�/�/�zN�zN�zN�zN�zN��zN�zN�0�/�*�)�zN�z���U��L�)�)���������*�)��,���U��L�)�)�>6�>6�>6�>6�>6�n�>6�>6�*�)�>6�B���U��L�)�)�4�4�4�4�4�n�4�4�*�)�4�8���U��L�)�)�~ �~ �~ �~ �~ �.�~ �~ �*�)�~ �B���U��L�)�)�J�J�J�J�J�~�J�J�*�)�J�d���U��L�)�)���������*�)���z���1�1�1�1�1�1��M�(�������rc

Youez - 2016 - github.com/yon3zu
LinuXploit