__  __    __   __  _____      _            _          _____ _          _ _ 
 |  \/  |   \ \ / / |  __ \    (_)          | |        / ____| |        | | |
 | \  / |_ __\ V /  | |__) | __ ___   ____ _| |_ ___  | (___ | |__   ___| | |
 | |\/| | '__|> <   |  ___/ '__| \ \ / / _` | __/ _ \  \___ \| '_ \ / _ \ | |
 | |  | | |_ / . \  | |   | |  | |\ V / (_| | ||  __/  ____) | | | |  __/ | |
 |_|  |_|_(_)_/ \_\ |_|   |_|  |_| \_/ \__,_|\__\___| |_____/|_| |_|\___V 2.1
 if you need WebShell for Seo everyday contact me on Telegram
 Telegram Address : @jackleet
        
        
For_More_Tools: Telegram: @jackleet | Bulk Smtp support mail sender | Business Mail Collector | Mail Bouncer All Mail | Bulk Office Mail Validator | Html Letter private



Upload:

Command:

[email protected]: ~ $
�

"j4gri���
�SrSSKJr SSKrSSKrSSKrSSKrSSKrSSKrSSK	r	SSK
r
SSKrSSKrSSK
r
SSKrSSKrSSKrSSKrSSKJr SSKJr SSKJr SSKJr SSKJr SS	KJr SS
KJr SSKJr SSKJr SS
KJr SSKJr SSKJr SSKJ r  SSKJ!r! SSKJ"r" SSKJ#r# SSKJ$r$ SSKJ%r% SSKJ&r& SSKJ'r' SSKJ(r( SSKJ)r) SSKJ*r* SSKJ+r+ \(aSSK,J-r- SSK,J.r. SSK,J/r/ SSK,J0r0 \RbRe\RbRg\455r5S r6S!r7S"r8S#r9S$r:\(aS%r;\R"S&5(+r<S'r=S(r>S)r?S*r@S+rAS,rBS-rCS.rDS/rE\R�S05rG\R�S15rH\R�"\(+S25"S3S4\"55rJ\R�"\(+S25"S5S6\"55rK\R�"\(+S25"S7S8\"55rL\R�"\(+S25"S9S:\"55rM\R�"\(+S25"S;S<\"55rN\R�"\(+S25"S=S>\"55rO\R�"\(+S25"S?S@\"55rP\R�"\(+S25"SASB\"55rQ\R�"\(+S25"SCSD\"55rR\R�"\(+S25"SESF\"55rS\R�"\(+S25"SGSH\"55rT\R�"\(+S25"SISJ\"55rU\R�"\(+S25"SKSL\"55rV\R�"\(+S25"SMSN\"55rW\R�"\(+S25"SOSP\"55rX\R�"\(+S25"SQSR\"55rY\R�"\(+S25"SSST\"55rZ\R�"\(+S25"SUSV\"55r[\R�"\(+S25\R�"\(+SW5"SXSY\"555r\\R�"\(+S25"SZS[\"55r]\R�"\(+S25"S\S]\"55r^\R�"\(+S25"S^S_\"55r_\R�"\(+S25"S`Sa\"55r`\R�"\(+S25"SbSc\"55ra\R�"\(+S25"SdSe\"55rb\cSf:XaSSgKdJere \e"\45 gg)hzLinux 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��SSKnUSSn[(a[US5n[R"[R[R
5n[R"U5 [R"URUR5[[R"SU55SS5sSSS5 $!,(df   g=f�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����
�C�R�[�F�
�s��v�w�'���
�
�f�n�n�f�&7�&7�8�A�	�	�	�A�	�����K�K����
�K����V�V�1L�M��2�
�
�
�	�	��
�*AC�
Cc��SSKnUSSn[(a[US5n[R"[R[R
5n[R"U5 [R"URUR5[[R"SU55SS5sSSS5 $!,(df   g=fr!)r'rr(r)r*r+r,r-r.r/r0�SIOCGIFNETMASKr2r3r4s   r7�get_ipv4_netmaskr<[����
�C�R�[�F�
�s��v�w�'���
�
�f�n�n�f�&7�&7�8�A�	�	�	�A�	�����K�K����
�N�F�K�K���,G�
���
�
�
�	�	�r9c��SSKnUSSn[(a[US5n[R"[R[R
5n[R"U5 [R"URUR5[[R"SU55SS5sSSS5 $!,(df   g=fr!)r'rr(r)r*r+r,r-r.r/r0�SIOCGIFBRDADDRr2r3r4s   r7�get_ipv4_broadcastr@jr=r9c�~�[S5n/nUR5H/nUR5nUSU:XdMURU5 M1 [	U5S:Xa[SU-5eSSS5 [
[	W55H�nX%Sn/n[
S[	U5S5HnURXhUS-5 M SRU5n	[R"[RU	5n
[R"[RU
5X%'M� U$!,(df   N�=f)Nz/proc/net/if_inet6���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_addressesrZys��	
�"�	#�q��
��K�K�M�D��Z�Z�\�F��b�z�V�#��!�!�&�)�"�
�z�?�a���:�V�C�D�D� �
$��3�z�?�
#�� �m�A�&�����q�#�k�*�A�.�A��M�M�+�!�a�%�0�1�/��H�H�V�$�	��!�!�&�/�/�9�=���(�(����&�A�
�
�$���%
$�	#�s�-D.�2D.�.
D<c
�(�SSKnUSSn[(a[US5n[R"[R[R
5n[R"U5 URUR5[[R"SU55n[(aSnOSSK
nURnSRUSSVs/sHnS	U"U5-PM sn5SS
sSSS5 $s snf!,(df   g=f)Nrr"r#r$c��U$�N���xs r7�ord�get_mac_address.<locals>.ord�s������r&z%02x:rB)r'rr(r)r*r+r,r-r/r0�
SIOCGIFHWADDRr2r3�__builtin__rarL)r5r'r6�inforarg�chars       r7�get_mac_addressrj�s����
�C�R�[�F�
�s��v�w�'���
�
�f�n�n�f�&7�&7�8�A�	�	�	�A�	��{�{�
�H�H�J�
�v�{�{�6�6�'B�
���3�
�
��/�/�C��w�w��R���D����#�d�)�+��D�E�c�r�J�
�	��E�
�	�s�*A,D�C>
�+	D�>D�
Dc�Z�[SS/SS0S9nURS5nUHjnURS5(dMUR5up4pV[R"SS5nU"[U5[U5[U55s $ [
S	SRU5-5e)
zIParse '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)rrG�
startswith�collections�
namedtuple�intrJrL)�out�linesrR�_�total�usedrl�nts        r7�	free_swapr~�s���
�f�d�^�&�)�!4�
5�C��I�I�d�O�E����?�?�6�"�"�#'�:�:�<� �A�d��'�'��0A�B�B��c�%�j�#�d�)�S��Y�7�7�	�
�1�D�I�I�e�4D�D��rcc�8�[SS/SS0S9nURS5nUHYnURS5(dMSUR5S	S
5up4pV[R"SS5nU"X4XVU5s $ [SSR
U5-5e)
zKParse 'free' cmd and return physical memory's total, used
and free values.
rlrmrnrorprr�Memc3�8# �UHn[U5v� M g7fr])rw)�.0r`s  r7�	<genexpr>�free_physmem.<locals>.<genexpr>�s���(K�9J�A��Q���9J�s���ztotal used free shared outputz%can't find 'Mem' in 'free' output:
%s)rrGrtrurvrJrL)rxryrRr{r|rl�sharedr}s        r7�free_physmemr��s���
�f�d�^�&�)�!4�
5�C��I�I�d�O�E����?�?�5�!�!�(K�����a��9J�(K�%�E���'�'��7��B��e�4��5�5�
��0�4�9�9�U�3C�C��rcc���[SS/SS0S9nURS5H7nUR5nX;dM[URS5S5s $ [	S	U-5e)
N�vmstatz-srnrorprr� rz can't find %r in 'vmstat' output)rrG�striprwrJ)�statrxrRs   r7r�r��se��
�h��
�F�I�#6�
7�C��	�	�$����z�z�|���<��t�z�z�#��q�)�*�*� ��7�$�>�
?�?rcc
���[SS/5R5nSU;a[R"S5e[	[[[R"SUR5S555$)Nrlz-V�UNKNOWNzcan't determine free versionz\d+rB)
rr��unittest�SkipTest�tuple�maprw�re�findallrG)rxs r7�get_free_version_infor��sZ��
�f�d�^�
�
"�
"�
$�C��C����� >�?�?���S�"�*�*�V�S�Y�Y�[��_�=�>�?�?rcc#�^^# �UU4Sjn[m[(aSOSn[R"USUS9nUv� SSS5 g!,(df   g=f7f)z|Mock open() builtin and forces it to return a certain content
for a given path. `pairs` is a {"path": "content", ...} dict.
c�>�UT;agTUn[(aA[U[5(a[R"U5$[R
"U5$[R
"U5$T"U/UQ70UD6$r])r�
isinstancer�io�StringIO�BytesIO)�name�args�kwargs�content�	orig_open�pairss    ��r7�	open_mock�$mock_open_content.<locals>.open_mock�sg����5�=��D�k�G��s��g�z�2�2��;�;�w�/�/��:�:�g�.�.��z�z�'�*�*��T�3�D�3�F�3�3rc�
builtins.open�__builtin__.openT��create�side_effectN�rErr�patch)r�r��patch_point�mr�s`   @r7�mock_open_contentr��sA����4��I�%(�S�/�.@�K�	
���K��)�	D����
E�	D�	D�s�3A�A�	A�
A�Ac#�^^^# �UUU4Sjn[m[(aSOSn[R"USUS9nUv� SSS5 g!,(df   g=f7f)zRMock open() builtin and raises `exc` if the path being opened
matches `for_path`.
c�,>�UT:XaTeT"U/UQ70UD6$r]r^)r�r�r��exc�for_pathr�s   ���r7r��&mock_open_exception.<locals>.open_mock�s%����8���I��T�3�D�3�F�3�3rcr�r�Tr�Nr�)r�r�r�r�r�r�s``   @r7�mock_open_exceptionr��sA����4��I�%(�S�/�.@�K�	
���K��)�	D����
E�	D�	D�s�4A�A�	A�
A�Az
LINUX onlyc��\rSrSrSr\"5S5r\"5S5r\"5S5r\"5S5r	Sr
g)	�"TestSystemVirtualMemoryAgainstFreeic��[5Rn[R"5RnUR	X5 gr])r�r{�psutil�virtual_memory�assertEqual��self�	cli_value�psutil_values   r7�
test_total�-TestSystemVirtualMemoryAgainstFree.test_totals1�� �N�(�(�	��,�,�.�4�4������1rcc���[5S:aURS5e[5Rn[R
"5RnUR
X[S9 g)N��r���old free version��delta)r��skipTestr�r|r�r��assertAlmostEqualrr�s   r7�	test_used�,TestSystemVirtualMemoryAgainstFree.test_usedsY��!�"�Z�/��-�-� 2�3�3� �N�'�'�	��,�,�.�3�3������+<�	�	
rcc��[5Rn[R"5RnUR	X[
S9 g�Nr�)r�rlr�r�r�rr�s   r7�	test_free�,TestSystemVirtualMemoryAgainstFree.test_free!s<�� �N�'�'�	��,�,�.�3�3������+<�	�	
rcc
��[5nURnUS:Xa[R"S5e[R
"5RnUR
UU[U<SU<SUR<3S9 g)Nrz%free does not support 'shared' columnr�� 
�r��msg)	r�r�r�r�r�r�r�r�output)r�rl�
free_valuer�s    r7�test_shared�.TestSystemVirtualMemoryAgainstFree.test_shared)si���~���[�[�
���?��#�#�$K�L�L��,�,�.�5�5�������#� *�L�$�+�+�F�		�	
rcc
�<�[SS/5nURS5nSUS;a[R"S5e[	USR5S5n[
R"5RnURUU[U<S	U<S
U<3S9 g)Nrlrmrr�	availablerz(free does not support 'available' columnr�rBr�r�r�)
rrGr�r�rwr�r�r�r�r)r�rxryr�r�s     r7�test_available�1TestSystemVirtualMemoryAgainstFree.test_available7s����&�$�� ���	�	�$����e�A�h�&��#�#�$N�O�O��U�1�X�^�^�-�b�1�2�J�!�0�0�2�<�<�L��"�"���'�$.��c�B�	
#�
rcr^N)�__name__�
__module__�__qualname__�__firstlineno__r�rr�r�r�r��__static_attributes__r^rcr7r�r�sc��2�
��
��
���
��
���
��
�����rcr�c��\rSrSrSr\"5S5r\"5S5r\"5S5r\"5S5r	\"5S5r
Srg	)
�$TestSystemVirtualMemoryAgainstVmstatiJc��[S5S-n[R"5RnUR	X[
S9 g)Nztotal memory�r�)r�r�r�r{r�r�r��vmstat_valuer�s   r7r��/TestSystemVirtualMemoryAgainstVmstat.test_totalLs>���n�-��4���,�,�.�4�4������.?�	�	
rcc���[5S:aURS5e[S5S-n[R"5R
nUR
X[S9 g)Nr�r�zused memoryr�r�)r�r�r�r�r�r|r�rr�s   r7r��.TestSystemVirtualMemoryAgainstVmstat.test_usedSs[��!�"�Z�/��-�-� 2�3�3��m�,�t�3���,�,�.�3�3������.?�	�	
rcc��[S5S-n[R"5RnUR	X[
S9 g)Nzfree memoryr�r�)r�r�r�rlr�rr�s   r7r��.TestSystemVirtualMemoryAgainstVmstat.test_freeas>���m�,�t�3���,�,�.�3�3������.?�	�	
rcc��[S5S-n[R"5RnUR	X[
S9 g)Nz
buffer memoryr�r�)r�r�r��buffersr�rr�s   r7�test_buffers�1TestSystemVirtualMemoryAgainstVmstat.test_buffersis>���o�.��5���,�,�.�6�6������.?�	�	
rcc��[S5S-n[R"5RnUR	X[
S9 g)Nz
active memoryr�r�)r�r�r��activer�rr�s   r7�test_active�0TestSystemVirtualMemoryAgainstVmstat.test_activeqs>���o�.��5���,�,�.�5�5������.?�	�	
rcc��[S5S-n[R"5RnUR	X[
S9 g)Nzinactive memoryr�r�)r�r�r��inactiver�rr�s   r7�
test_inactive�2TestSystemVirtualMemoryAgainstVmstat.test_inactiveys?���/�0�4�7���,�,�.�7�7������.?�	�	
rcr^N)r�r�r�r�r�rr�r�r�r�r�r�r^rcr7r�r�Jsz��
���
��
���
��
���
��
���
��
���
��
rcr�c�L�\rSrSrSr\"5S5rSrSrSr	Sr
Srg	)
�TestSystemVirtualMemoryMocksi�c�@�[R"S5R5n[SU05n[R
"SS9n[R"S5 [R"5nUR(deUR[U5S5 USnURS[UR55 URS	[UR55 URS
[UR55 URS[UR55 URS[UR55 URS
[UR55 URS[UR55 URURS5 URUR S5 URUR"S5 URUR$S5 URUR&S5 URUR(S5 URUR*S5 SSS5 SSS5 g!,(df   N=f!,(df   g=f)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�alwaysr�rz#memory stats couldn't be determined�cachedr�r�r�r�r�)�textwrap�dedent�encoder��warnings�catch_warnings�simplefilterr�r��calledr�rI�assertIn�str�messager�r�r�r�r�r��slab�r�r�r��ws�ret�ws      r7�test_warnings_on_misses�4TestSystemVirtualMemoryMocks.test_warnings_on_misses�s����/�/�	#�	����	����9�
:�a��(�(��5���%�%�h�/��+�+�-���x�x��x�� � ��R��!�,��q�E���
�
�9�3�q�y�y�>���
�
�h��A�I�I��7��
�
�h��A�I�I��7��
�
�h��A�I�I��7��
�
�j�#�a�i�i�.�9��
�
�i��Q�Y�Y��8��
�
�k�3�q�y�y�>�:�� � ����Q�/�� � ����Q�/�� � ����q�1�� � ����Q�/�� � ����a�0�� � �����2�� � ����1�-�+6�;�
:�5�5��;�
:�s$�J�H&I>�-J�>
J	�J�
Jc�(�0n[S5nUH)nUR5n[US5S-XS'M+ SSS5 [U5nSU;a+USn[	XV-
5U-S-nURUS5 gg!,(df   NK=f)Nr�r�r�rs
MemAvailable:�dr")rrGrwr�abs�
assertLess)r��memsrPrRrS�a�b�diff_percents        r7�test_avail_old_percent�3TestSystemVirtualMemoryMocks.test_avail_old_percent�s�����
��
)�Q��������"%�f�Q�i�.�4�"7��A�Y���*�

!��&���t�#��%�&�A��q�u�:��>�C�/�L��O�O�L�"�-�$�
*�
)�s�0B�
Bc���[R"S5R5n[SU05n[R
"SS9n[R"5nSSS5 UR(deURWRS5 WSnURS[UR55 SSS5 g!,(df   Np=f!,(df   g=f)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�rrrr�rrr�r�rr�r�rrr	rs      r7� test_avail_old_comes_from_kernel�=TestSystemVirtualMemoryMocks.test_avail_old_comes_from_kernel�s����/�/�#�����	����9�
:�a��(�(��5���+�+�-��6��8�8�O�8����S�]�]�N�;��1��A��M�M�>��A�I�I��
�
;�
:�5�5��;�
:��$�C�C�A!C�
C	�C�
C&c���[R"S5R5n[SU05n[R
"SS9n[R"5nSSS5 UR(deURWRS5 WSnURS[UR55 SSS5 g!,(df   Np=f!,(df   g=f)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��`LGrrrrs      r7�test_avail_old_missing_fields�:TestSystemVirtualMemoryMocks.test_avail_old_missing_fields�s����/�/�
#�
����	����9�
:�a��(�(��5���+�+�-��6��8�8�O�8����S�]�]�,K�L��1��A��M�M�>��A�I�I��
�
;�
:�5�5��;�
:�r c	�(�[R"S5R5n[SU05 [	S[[RS55 [R"SS9n[R"5nURURS5 USnURS	[UR 55 SSS5 SSS5 SSS5 g!,(df   N=f!,(df   N(=f!,(df   g=f)
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/zoneinfo�no such file or directoryTr�r"rr)rrrr�r��IOError�errno�ENOENTrrr�r�r�r�rrr	)r�r�rr
rs     r7�test_avail_old_missing_zoneinfo�<TestSystemVirtualMemoryMocks.test_avail_old_missing_zoneinfo�s����/�/�
#�
����	����9�
:�$� �����&A�B���,�,�D�9�R� �/�/�1�C��$�$��
�
�'F���1��A��M�M�F��A�I�I���
:�	�;�
:�
:�9��	���;�
:�s<�%D�C2�,AC!�C2�D�!
C/�+C2�2
D	�<D�
Dc���[R"S5R5n[SU05n[R
"5nUR(deURURS5 URURS5 URURS5 URURS5 URURS5 URURS5 URURS	5 URURS
5 URUR S5 SSS5 g!,(df   g=f)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�)rrrr�r�r�rr�r{rlr�r�r�r�r�r
r�)r�r�r��mems    r7�test_virtual_memory_mocked�7TestSystemVirtualMemoryMocks.test_virtual_memory_mockeds���/�/�1#�1�b���c	�d���9�
:�a��'�'�)�C��8�8�O�8����S�Y�Y�
�3����S�X�X�x�0����S�[�[�(�3����S�Z�Z��9����S�Z�Z��3����S�Z�Z��2����S�\�\�8�4����S�X�X�y�1����S�]�]�H�5�;�
:�
:�s�D%E � 
E.r^N)r�r�r�r�rrrrr#r*r0r�r^rcr7r�r��s5��$.�L��
.��
.��8�2�B@6rcr�c�v�\rSrSr\S5rSr\"5S5r\"5S5r	Sr
SrSrS	r
S
rg)�TestSystemSwapMemoryiXc��[S5nUR5nSSS5 SW;=(a SU;$!,(df   N=f)z3Return True if /proc/meminfo provides swap metrics.r�Nz
SwapTotal:z	SwapFree:)rE�read)rP�datas  r7�meminfo_has_swap_info�*TestSystemSwapMemory.meminfo_has_swap_infoZs<���/�
"�a��6�6�8�D�#��t�#�;��t�(;�;�#�
"�s	�6�
Ac��[5Rn[R"5RnUR	X[
S9$r�)r~r{r��swap_memoryr�r�r�r�r�s   r7r��TestSystemSwapMemory.test_totalasA���[�&�&�
��)�)�+�1�1���%�%��,=�&�
�	
rcc��[5Rn[R"5RnUR	X[
S9$r�)r~r|r�r:r�rr;s   r7r��TestSystemSwapMemory.test_usedh�A���[�%�%�
��)�)�+�0�0���%�%��,=�&�
�	
rcc��[5Rn[R"5RnUR	X[
S9$r�)r~rlr�r:r�rr;s   r7r��TestSystemSwapMemory.test_freepr?rcc�4�[R"SSS9n[R"SS9n[R"S5 [
R"5nUR(deUR[U5S5 USnURS[UR55 URURS5 URURS5 SSS5 SSS5 g!,(df   N=f!,(df   g=f)	N�psutil._common.openT�r�r�r�r�rz9'sin' and 'sout' swap memory stats couldn't be determined)rr�rrrr�r:rr�rIrrr	�sin�sout�r�r�rr
rs     r7�test_missing_sin_sout�*TestSystemSwapMemory.test_missing_sin_soutxs���
�Z�Z�-�d�
;�q��(�(��5���%�%�h�/��(�(�*���x�x��x�� � ��R��!�,��q�E���
�
�$���	�	�N��
� � ����!�,�� � ����1�-�6�<�
;�5�5��<�
;�s#�D	�B<C8�'D	�8
D	�D	�	
Dc�R�[S[[RS55n[R
"SS9n[R"S5 [R"5nUR(deUR[U5S5 USnURS[UR55 URURS5 URUR S5 SSS5 SSS5 g!,(df   N=f!,(df   g=f)	Nz/proc/vmstatr&Tr�r�r�rzK'sin' and 'sout' swap memory stats couldn't be determined and were set to 0)r�r'r(r)rrrr�r:rr�rIrrr	rErFrGs     r7�test_no_vmstat_mocked�*TestSystemSwapMemory.test_no_vmstat_mocked�s���
 ��G�E�L�L�2M�N�
�
��(�(��5���%�%�h�/��(�(�*���x�x��x�� � ��R��!�,��q�E���
�
�6���	�	�N��
� � ����!�,�� � ����1�-�6�
�
�6�5��
�
�s#�D�B<D�6D�
D	�D�
D&c���UR5(d[R"S5$[R"S5n[
R"5nSSS5 WR(aeSSKJ	n UR5u   pEpgXW-nXg-nURWRU5 URURU[S9 g!,(df   N�=f)Nz!/proc/meminfo has no swap metricsz"psutil._pslinux.cext.linux_sysinforr�)r7r��skiprr�r�r:r�psutil._psutil_linux�
_psutil_linux�
linux_sysinfor�r{r�rlr)r�r��swap�cextrzr{rl�unit_multipliers        r7�test_meminfo_against_sysinfo�1TestSystemSwapMemory.test_meminfo_against_sysinfo�s����)�)�+�+��=�=�!D�E�E�
�Z�Z�<�
=���%�%�'�D�>��8�8��|�+�37�3E�3E�3G�0��1�a��4�
� �����������U�+����t�y�y�$�6G��H�>�
=�s�C�
C!c��[SS05n[R"5 UR(deSSS5 g!,(df   g=f)Nr�rc)r�r�r:r�r�r�s  r7�#test_emulate_meminfo_has_no_metrics�8TestSystemSwapMemory.test_emulate_meminfo_has_no_metrics�s6�����5�
6�!���� ��8�8�O�8�7�
6�
6�s�)A�
Ar^N)r�r�r�r��staticmethodr7r�rr�r�rHrKrUrYr�r^rcr7r3r3Xs\���<��<�
���
��
���
��
�.� .�&I�"rcr3c��\rSrSrSrSrg)�TestSystemCPUTimesi�c���[R"5Rn[R"S[
R"5S5Sn[[[URS555nUS:�aURSU5 OURSU5 US:�aURSU5 OURSU5 US	:�aURS
U5 gURS
U5 g)Nz
\d+\.\d+\.\d+�r�.)r_���steal)r_rar&�guest)r�r_r�
guest_nice)
r��	cpu_times�_fieldsr�r��os�unamer�r�rwrGr�assertNotIn)r�rS�
kernel_ver�kernel_ver_infos    r7�test_fields�TestSystemCPUTimes.test_fields�s����!�!�#�+�+���Z�Z� 0�"�(�(�*�Q�-�@��C�
���C��)9�)9�#�)>� ?�@���j�(��M�M�'�6�*����W�f�-��j�(��M�M�'�6�*����W�f�-��i�'��M�M�,��/����\�6�2rcr^N)r�r�r�r�rmr�r^rcr7r]r]�s��3rcr]c��\rSrSr\R
"\RRS5(+S5S5r	\R
"\RRS5(+S5S5r
\R
"\"S5(+S	5S
5r\R
"\"S5(+S5S
5r
SrSrg)�TestSystemCPUCountLogicali��/sys/devices/system/cpu/onlinez-/sys/devices/system/cpu/online does not existc�4�[S5nUR5R5nSSS5 S[W5;aF[	URS5S5S-nUR
[R"5U5 gg!,(df   Nd=f)Nrq�-r�)	rEr5r�rrwrGr�r��	cpu_count)r�rP�values   r7�test_against_sysdev_cpu_online�8TestSystemCPUCountLogical.test_against_sysdev_cpu_online�sv��
�2�
3�q��F�F�H�N�N�$�E�4��#�e�*������C�(��+�,�q�0�E����V�-�-�/��7��4�
3�s�B	�	
B�/sys/devices/system/cpuz&/sys/devices/system/cpu does not existc	���[R"S5n[UVs/sHn[R"SU5cMUPM! sn5nUR[R"5U5 gs snf)Nrxzcpu\d+$)rh�listdirrIr��searchr�r�rt)r��lsr`�counts    r7�test_against_sysdev_cpu_num�5TestSystemCPUCountLogical.test_against_sysdev_cpu_num�sX��
�Z�Z�1�
2����K��1�b�i�i�
�A�&>�Q��K�L������)�)�+�U�3��Ls�A3�A3�nprocznproc utility not availablec�t�[[S55nUR[R"SS9U5 g)Nznproc --allT��logical)rwrr�r�rt)r��nums  r7�test_against_nproc�,TestSystemCPUCountLogical.test_against_nproc�s,���"�]�#�$������)�)�$�7��=rc�lscpu�lscpu utility not availablec���[S5n[URS5Vs/sHo"RS5(aMUPM sn5nUR	[
R"SS9U5 gs snf)N�lscpu -prr�#Tr�)rrIrGrtr�r�rt)r�rxr`r�s    r7�test_against_lscpu�,TestSystemCPUCountLogical.test_against_lscpu�sV����n���c�i�i��o�G�o��\�\�#�5F�1�o�G�H������)�)�$�7��=��Hs�A3�A3c�b�SSKnURR5n[R"S[
S9nUR
URR5U5 UR(de[R"SSS9nURURR55 UR
URS5 UR
URSSS5 SSS5 [S	S
5nUR5nSSS5 [R"W5n[R"SUSS9nUR
URR5U5 SSS5 [S	S05nUR
URR5U5 UR(deSSS5 SSS5 g!,(df   N�=f!,(df   N�=f!,(df   N�=f!,(df   NJ=f!,(df   g=f)
Nrzpsutil._pslinux.os.sysconf�r�rCTrDr_�
/proc/stat�
/proc/cpuinfo�rb��return_valuer�rc)�psutil._pslinux�_pslinux�cpu_count_logicalrr�rJr�r�assertIsNone�
call_count�	call_argsrEr5r�r�r�)r�r��originalr�rP�cpuinfo_data�	fake_files       r7�test_emulate_fallbacks�0TestSystemCPUCountLogical.test_emulate_fallbacks�s�����?�?�4�4�6���Z�Z�(�j�
�
����V�_�_�>�>�@�(�K��8�8�O�8����1�$�?�1��!�!�&�/�/�"C�"C�"E�F�� � ����q�1�� � ����Q���!2�L�A�	@��o�t�,�� �v�v�x��-��
�
�<�0�I����%�I�d���� � ����!B�!B�!D�h�O��#�O�S�#9�:�a�� � ����!B�!B�!D�h�O��x�x��x�;�5
�
�@�?��-�,�����;�:��5
�
�sm�AH �A(G�3H �G-�4H �+G>�7H �>H�H �
G*	�&H �-
G;	�7H �>
H	�H �
H	�H � 
H.r^N)r�r�r�r�r��skipIfrh�path�existsrvr~rr�r�r�r�r^rcr7rprp�s���
�_�_��G�G�N�N�;�<�<�7��8�	�8��_�_��G�G�N�N�4�5�5�0��4�	�4�
�_�_��w��'�)F�G�>�H�>��_�_��w��'�)F�G�>�H�>�
" rcrpc�h�\rSrSr\R
"\"S5(+S5S5rSrSr	Sr
g)	�TestSystemCPUCountCoresir�r�c�2�[S5n[5nURS5H@nURS5(aMURS5nUR	US5 MB UR[R"SS9[U55 g)Nr�rrr��,r�Fr�)	r�setrGrt�addr�r�rtrI)r�rx�core_idsrRrSs     r7r��*TestSystemCPUCountCores.test_against_lscpusq����n���5���I�I�d�O�D��?�?�3�'�'����C������V�A�Y�'�$�	
����)�)�%�8�#�h�-�Hrcc�.�[RR5n[R"S/S9n[RR5nUR
(deSSS5 UbUR
UW5 gg!,(df   N%=f)N�	glob.glob�r�)r�r��cpu_count_coresrr�rr�)r��meth_1r��meth_2s    r7�
test_method_2�%TestSystemCPUCountCores.test_method_2 sl�����0�0�2��
�Z�Z��"�
5���_�_�4�4�6�F��8�8�O�8�6������V�V�,��6�
5�s�2B�
Bc�f�[R"S/S9n[R"SSS9nUR[RR55 SSS5 SSS5 WR(deWR(deg!,(df   N==f!,(df   NF=f)Nr�r�rCTrD)rr�r�r�r�r�r)r��m1�m2s   r7�test_emulate_none�)TestSystemCPUCountCores.test_emulate_none(sv��
�Z�Z��"�
5�����1�$�?�2��!�!�&�/�/�"A�"A�"C�D�@�6��y�y��y��y�y��y�@�?��6�
5�s"�B"�.B�B"�
B	�B"�"
B0r^N)r�r�r�r�r�r�rr�r�r�r�r^rcr7r�r�s4��
�_�_��w��'�)F�G�I�H�I�-�rcr�c�@�\rSrSr\R
"\(+S5S5r\R
"\(+S5S5r\R
"\(+S5S5r	\R
"\(+S5S5r
\R
"\(+S5S5rSrg	)
�TestSystemCPUFrequencyi0�
not supportedc��^�U4Sjn[RRm[R"SUSS9 [
R"5(deSSS5 g!,(df   g=f)Nc�B>�URS5(agT"U5$)N�&/sys/devices/system/cpu/cpufreq/policyF�rt)r��orig_existss �r7�path_exists_mock�MTestSystemCPUFrequency.test_emulate_use_second_file.<locals>.path_exists_mock5s!������G�H�H��"�4�(�(rc�os.path.existsT)r�r�)rhr�r�rr�r��cpu_freq)r�r�r�s  @r7�test_emulate_use_second_file�3TestSystemCPUFrequency.test_emulate_use_second_file2sP���	)��g�g�n�n��
�Z�Z��*:�4�
��?�?�$�$�$�$�
�
�
�s�A�
A-c��^�U4Sjn[RRm[R"SUS9 [[R5 [R"5nU(dU5eURURS5 URURS5 [R"SS9H;nURURS5 URURS5 M= SSS5 [[R5 [[5 g!,(df   N7=f![[R5 [[5 f=f)Nc�B>�URS5(agT"U5$)Nz/sys/devices/system/cpu/Fr�)r��os_path_existss �r7r��ITestSystemCPUFrequency.test_emulate_use_cpuinfo.<locals>.path_exists_mockEs!������9�:�:��%�d�+�+rcr�r��T��percpu)rhr�r�rr�rr�r�r�r��max�min)r�r�r
�freqr�s    @r7�test_emulate_use_cpuinfo�/TestSystemCPUFrequency.test_emulate_use_cpuinfoAs����	,�������	"����,�:J�K��f�o�o�.��o�o�'����C��s�� � ����#�.�� � ����#�.�"�O�O�4�8�D��$�$�T�X�X�s�3��$�$�T�X�X�s�3�9�
L�
�&�/�/�*��&�!�L�K��
�&�/�/�*��&�!�s#�E�CD1�E�1
D?�;E�*E,c�^�U4Sjn[m[(aSOSn[R"X!S9 [R"SSS9 [R
"5nUR
URS5 URS	:waUR
URS
5 URS	:waUR
URS5 SSS5 SSS5 g!,(df   N=f!,(df   g=f)Nc��>�URS5(a,URS5(a[R"S5$URS5(a,URS5(a[R"S5$URS5(a,URS5(a[R"S5$US:Xa[R"S	5$T"U/UQ70UD6$)
N�/scaling_cur_freqr��500000�/scaling_min_freq�600000�/scaling_max_freqs700000r�scpu MHz     : 500��endswithrtr�r��r�r�r�r�s   �r7r��;TestSystemCPUFrequency.test_emulate_data.<locals>.open_mock\s�����}�}�0�1�1�d�o�o�8�7�7��z�z�)�,�,����2�3�3����8�9�9��z�z�)�,�,����2�3�3����8�9�9��z�z�)�,�,���(��z�z�"6�7�7� ��7��7��7�7rcr�r�r�r�Tr��@@r����@g�@�
rErrr�r�r�r��currentr�r��r�r�r�r�r�s    @r7�test_emulate_data�(TestSystemCPUFrequency.test_emulate_dataZs����	8�$�	�),��o�2D��
�Z�Z��
;����,�4�@����(��� � ����u�5��8�8�s�?��$�$�T�X�X�u�5��8�8�s�?��$�$�T�X�X�u�5�A�<�
;�@�@��<�
;�s$�C3�B
C"�C3�"
C0	�,C3�3
Dc�^�U4Sjn[m[(aSOSn[R"X!S9 [R"SSS9 [R"SS	S9 [R
"SS
9nUR
USRS5 USRS
:waUR
USRS5 USRS
:waUR
USRS5 UR
USRS5 USRS
:waUR
USRS5 USRS
:waUR
USRS5 SSS5 SSS5 SSS5 g!,(df   N=f!,(df   N(=f!,(df   g=f)Nc�p>�UnURS5(a,URS5(a[R"S5$URS5(a,URS5(a[R"S5$URS5(a,URS5(a[R"S5$URS5(a,URS5(a[R"S	5$URS5(a,URS5(a[R"S
5$URS5(a,URS5(a[R"S5$US:Xa[R"S
5$T"U/UQ70UD6$)Nr�z'/sys/devices/system/cpu/cpufreq/policy0s100000r��200000r�s300000z'/sys/devices/system/cpu/cpufreq/policy1s400000r�r�r�s#cpu MHz     : 100
cpu MHz     : 400r�)r�r�r��nr�s    �r7r��@TestSystemCPUFrequency.test_emulate_multi_cpu.<locals>.open_mock}sm����A��z�z�-�.�.�1�<�<�9�4�4��z�z�)�,�,����/�0�0�Q�\�\�9�6�6��z�z�)�,�,����/�0�0�Q�\�\�9�6�6��z�z�)�,�,����/�0�0�Q�\�\�9�6�6��z�z�)�,�,����/�0�0�Q�\�\�9�6�6��z�z�)�,�,����/�0�0�Q�\�\�9�6�6��z�z�)�,�,���(��z�z�"I�J�J� ��7��7��7�7rcr�r�r�r�Tr��!psutil._pslinux.cpu_count_logicalr_r�r�Y@r�gi@g�r@r�gy@r�r�r�r�s    @r7�test_emulate_multi_cpu�-TestSystemCPUFrequency.test_emulate_multi_cpu{sX���	8�>�	�),��o�2D��
�Z�Z��
;����,�4�@��Z�Z�7�a��"�?�?�$�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�<��A�<�
;����A�@��<�
;�s<�F3�F"�DF�8F"�F3�
F�F"�"
F0	�,F3�3
Gc�^�U4Sjn[m[(aSOSn[R"X!S9 [R"SSS9 [R"SS	S9 [R
"5nUR
URS
5 SSS5 SSS5 SSS5 g!,(df   N=f!,(df   N(=f!,(df   g=f)Nc�>�URS5(a[[RS5eURS5(a[R
"S5$US:Xa[R
"S5$T"U/UQ70UD6$)Nr�rdz/cpuinfo_cur_freqr�r�scpu MHz     : 200)r�r'r(r)r�r�r�s   �r7r��OTestSystemCPUFrequency.test_emulate_no_scaling_cur_freq_file.<locals>.open_mock�sp����}�}�0�1�1��e�l�l�B�/�/����2�3�3��z�z�)�,�,���(��z�z�"6�7�7� ��7��7��7�7rcr�r�r�r�Tr�r�r���)rErrr�r�r�r�r�r�s    @r7�%test_emulate_no_scaling_cur_freq_file�<TestSystemCPUFrequency.test_emulate_no_scaling_cur_freq_file�s����	8��	�),��o�2D��
�Z�Z��
;����,�4�@��Z�Z�7�a��"�?�?�,�D��$�$�T�\�\�3�7�	�A�<�
;����A�@��<�
;�s;�C
�B9�2B(�B9�C
�(
B6�2B9�9
C	�C
�

Cr^N)
r�r�r�r�r�r�rr�r�r�r�r�r�r^rcr7r�r�0s���
�_�_��%��7�%�8�%��_�_��%��7�"�8�"�0�_�_��%��7�6�8�6�@�_�_��%��7�1=�8�1=�f�_�_��%��7�8�8�8rcr�c� �\rSrSrSrSrSrg)�TestSystemCPUStatsi�c�x�[S5n[R"5RnUR	XSS9 g)Nzcontext switches��r�)r�r��	cpu_stats�ctx_switchesr�r�s   r7�test_ctx_switches�$TestSystemCPUStats.test_ctx_switches�s4���0�1���'�'�)�6�6�����|���Ercc�x�[S5n[R"5RnUR	XSS9 g)N�
interruptsr�r�)r�r�r�r�r�r�s   r7�test_interrupts�"TestSystemCPUStats.test_interrupts�s3���l�+���'�'�)�4�4�����|���Ercr^N)r�r�r�r�r�r�r�r^rcr7r�r��s��F�
Frcr�c�P�\rSrSr\R
"\(+S5S5rSrg)�TestLoadAvgi�r�c�t�[R"5n[S5nUR5R	5nSSS5 UR[
WS5USSS9 UR[
US5USSS9 UR[
US5USSS9 g!,(df   No=f)Nz
/proc/loadavgrr�r�r_)r��
getloadavgrEr5rGr��float)r�r�rP�
proc_values    r7�test_getloadavg�TestLoadAvg.test_getloadavg�s����(�(�*��
�/�
"�a�������)�J�#�	
���u�Z��]�3�\�!�_�A��N����u�Z��]�3�\�!�_�A��N����u�Z��]�3�\�!�_�A��N�#�
"�s�B)�)
B7r^N)	r�r�r�r�r�r�r
rr�r^rcr7rr�s$��
�_�_��'��9�O�:�Orcrc��\rSrSrSrSrg)�TestSystemNetIfAddrsi�c�(�[R"5R5GHjupUGH]nUR[R:Xa'URUR[U55 MIUR[R:Xa�URUR[U55 URUR[U55 URb'URUR[U55 M�UR[U5S5 GMUR[R:XdGM$URR!S5SnUR#U[%U55 GM` GMm g)Nz0.0.0.0�%r)r��net_if_addrs�items�family�AF_LINKr��addressrjr)r*r8�netmaskr<�	broadcastr@rNrGrrZ)r�r��addrs�addrrs     r7�test_ips�TestSystemNetIfAddrs.test_ips�s��!�.�.�0�6�6�8�K�D����;�;�&�.�.�0��$�$�T�\�\�?�4�3H�I��[�[�F�N�N�2��$�$�T�\�\�3C�D�3I�J��$�$�T�\�\�3C�D�3I�J��~�~�1��(�(� �N�N�,>�t�,D���(�(�);�D�)A�9�M��[�[�F�O�O�3�#�l�l�0�0��5�a�8�G��M�M�'�+=�d�+C�D�)�9rcr^N)r�r�r�r�rr�r^rcr7rr�s��Ercrc��\rSrSr\R
"\"S5(+S5S5rSr\R
"\"S5(+S5S5r	Sr
g)	�TestSystemNetIfStatsi�ifconfig�ifconfig utility not availablec
�R�[R"5R5Houp[SU-5nUR	UR
SU;US9 UR	UR[[R"SU5S55 Mq g![a M�f=f)N�ifconfig %s�RUNNING)r�z(?i)MTU[: ](\d+)r)r��net_if_statsrrr��isup�mturwr�r��RuntimeError)r�r��statsrxs    r7�test_against_ifconfig�*TestSystemNetIfStats.test_against_ifconfigs���!�.�.�0�6�6�8�K�D�
����-�.��� � ����Y�#�-=�3� �G�� � ��I�I�s�2�:�:�.A�3�#G��#J�K��9�� �
��
�s�B�
B&�%B&c	�0�[R"5R5H]up[SU-5nUR	UR
[
UR5R555 SSS5 M_ g!,(df   Mq=f)Nz/sys/class/net/%s/mtu)	r�rrrEr�rrwr5r�)r�r�r!rPs    r7�test_mtu�TestSystemNetIfStats.test_mtuse��!�.�.�0�6�6�8�K�D��-��4�5��� � ����C�������0@�,A�B�6�5�9�5�5�s�AB�
B	c��Sn[R"5R5GHtup#[SU-5n[R
"SU5nU(a�[
UR55S:�asUS-
n[URS5R5RS55n[URRS55nURXg5 M�[R
"SU5nU(a�[
UR55S:�asUS-
n[URS5R5R55n[URRS55nURXg5 GMqGMtGMw U(dURS	5eg![a GM�f=f)
Nrrzflags=(\d+)?<(.*?)>r_r�r�z(.*)  MTU:(\d+)  Metric:(\d+)r�zno matches were found)r�rrrr�r{rIrVr��group�lowerrG�flagsr�r �fail)r��
matches_foundr�r!rx�match�ifconfig_flags�psutil_flagss        r7�
test_flags�TestSystemNetIfStats.test_flags$sm���
�!�.�.�0�6�6�8�K�D�
G����-�.���	�	�"8�#�>���S�����0�A�5�!�Q�&�M�%(����Q��)=�)=�)?�)E�)E�c�)J�%K�N�#&�u�{�{�'8�'8��'=�#>�L��$�$�^�B��I�I�&F��L�E���U�\�\�^�!4��!9�%��*�
�),�U�[�[��^�-A�-A�-C�-I�-I�-K�)L��'*�5�;�;�+<�+<�S�+A�'B���(�(��F�	":�u�!9�,��)�)�3�4�4���' �
��
�s�F8�8
G�Gr^N)r�r�r�r�r�r�rr"r%r0r�r^rcr7rrsX��
�_�_��z�*�*�,L�M�
�N�
�C�
�_�_��z�*�*�,L�M�5�N�5rcrc�p�\rSrSr\R
"\"S5(+S5\"5S55rSr	g)�TestSystemNetIOCountersiCrrc�~�Sn[R"SSS9nUR5H�up4U"U5nUR	UR
USSS9 UR	URUSSS9 UR	URUS	S
S9 UR	URUSS
S9 UR	URUSS
S9 UR	URUSS
S9 UR	URUSS
S9 UR	URUSS
S9 GM g![a GMf=f)Nc��0n[SU-5n[[R"SU5S5US'[[R"SU5S5US'[[R"SU5S5US'[[R"SU5S	5US
'[[R"SU5S5US'[[R"SU5S	5US
'[[R"SU5S5US'[[R"SU5S5US'U$)NrzRX 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)rrwr�r�)�nicr
rxs   r7r�?TestSystemNetIOCounters.test_against_ifconfig.<locals>.ifconfigHs+���C��]�S�(�)�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����JrcTF)�pernic�nowrapr<ir�r=r6r�r7r8�
r9r:r;)
r��net_io_countersrr r�r<r=r6r7r8r9r:r;)r�r�nior�r!�ifconfig_rets      r7r"�-TestSystemNetIOCounters.test_against_ifconfigEs��	�*�$�$�D��?���9�9�;�K�D�
�'��~��
�"�"�� � �,�|�"<�H�
#�
�
�"�"�� � �,�|�"<�H�
#�
�
�"�"��"�"�L��$@��
#�
�
�"�"��"�"�L��$@��
#�
�
�"�"����\�'�2�"�
#�
�
�"�"����l�8�4�B�
#�
�
�"�"����l�8�4�B�
#�
�
�"�"��
�
�|�I�6�b�
#�
�5'�� �
��
�s�D-�-
D<�;D<r^N)
r�r�r�r�r�r�rrr"r�r^rcr7r3r3Cs4��
�_�_��z�*�*�,L�M���3��N�3rcr3c�p�\rSrSr\R
"S\S9\R
"SSS9S55rSrS	r	g
)�TestSystemNetConnectionsi}z psutil._pslinux.socket.inet_ntopr�zpsutil._pslinux.supports_ipv6Fr�c� �[R"[R[R5nURUR5 URS5 [R"SS9 g![Ra N+f=f)N)z::1r�inet6��kind)	r)rN�SOCK_STREAM�
addCleanup�close�bind�errorr��net_connections)r��
supports_ipv6rOr6s    r7�test_emulate_ipv6_unsupported�6TestSystemNetConnections.test_emulate_ipv6_unsupportedse��	��
�
�f�o�o�v�/A�/A�B�A��O�O�A�G�G�$�
�F�F�:��	���G�,���|�|�	��	�s�AA6�6B
�B
c���[R"S5n[SU05n[R"SS9 UR
(deSSS5 g!,(df   g=f)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�unixrK)rrr�r�rRr)r�r�r�s   r7�test_emulate_unix�*TestSystemNetConnections.test_emulate_unix�sL���/�/�#���� 0�'�:�
;�q��"�"��/��8�8�O�8�<�
;�
;�s�(A�
A$r^N)
r�r�r�r�rr�rJrTrXr�r^rcr7rHrH}s;��	�Z�Z�2�
�K�	�Z�Z�/�e�D�-�E�L�-�	rcrHc�~�\rSrSr\R
"\"\S5(+S5\"5S55r	Sr
SrSrg)	�TestSystemDiskPartitionsi��statvfszos.statvfs() not availablec�^�Sn[R"SS9H�n[R"UR5nU"UR5upEpgUR	UR
U5 UR
URU[S9 UR
URU[S9 M� g)Nc�$�[SU-5R5nURS5nURS5 URS5nUR5SSupEpgUS:XaSn[	U5[	U5[	U5pvnXEXg4$)Nzdf -P -B 1 "%s"rrrrC�nonerd)rr�rG�poprw)r�rxryrR�devr{r|rls        r7�df�4TestSystemDiskPartitions.test_against_df.<locals>.df�s����&��-�.�4�4�6�C��I�I�d�O�E��I�I�a�L��9�9�Q�<�D�%)�Z�Z�\�"�1�%5�"�C���f�}��� #�E�
�C��I�s�4�y��E��t�)�)rcF)�allr�)
r��disk_partitions�
disk_usage�
mountpointr�r{r�rlrr|)r�rb�part�usagerzr{r|rls        r7�test_against_df�(TestSystemDiskPartitions.test_against_df�s���
		*��*�*�u�5�D��%�%�d�o�o�6�E�#%�d�o�o�#6� �A�d����U�[�[�%�0��"�"��
�
�D�(<�
#�
�
�"�"��
�
�D�(<�
#�
�6rcc��[S5nUR5nSSS5 SW;a?[R"5HnURS:XdM g URS5e[R"[S55n[R"SUSS9n[R"SS	/S
9n[R"5nUR(deUR(deU(deURUSRS5 SSS5 SSS5 g!,(df   GN=f!,(df   N)=f!,(df   g=f)Nz/proc/filesystems�zfszcouldn't find any ZFS partitionz
nodev	zfs
rCTr��$psutil._pslinux.cext.disk_partitions)z	/dev/sdb3�/rm�rwr�r)
rEr5r�re�fstyper+r�r�rrr�rr�)r�rPr6rhr�r�r�r
s        r7�test_zfs_fs�$TestSystemDiskPartitions.test_zfs_fs�s��
�%�
&�!��6�6�8�D�'��D�=��.�.�0���;�;�%�'��1��i�i� A�B�B����A�n�$5�6�I����%�I�d����Z�Z�:�"A�!B��� �0�0�2�C��9�9�$�9��9�9�$�9��J�3��$�$�S��V�]�]�E�:����'�
&�������s0�D+�E�6A$D=�E�+
D:�=
E	�E�
Ec�J�[R"SSS9nUR[5 [R
"5 SSS5 UR(deSSS5 S[lg!,(df   N6=f!,(df   N+=f!S[lf=f)Nzos.path.realpathz
/non/existentr��/proc)rr��assertRaisesrr�rer�PROCFS_PATHrXs  r7�test_emulate_realpath_fail�3TestSystemDiskPartitions.test_emulate_realpath_fail�st��	)����"�����&�&�'8�9��*�*�,�:��x�x��x��")�F��	:�9�����")�F��s9�B�B�A3�B�B�3
B	�=B�
B�B�
B"r^N)
r�r�r�r�r�r��hasattrrhrrjrrrxr�r^rcr7r[r[�s@��
�_�_���Y�/�/�1M�N�����O��2;�4
)rcr[c�>�\rSrSrSrSrSrSrSrSr	Sr
S	rg
)�TestSystemDiskIoCountersi�c���Sn[SU05 [R"SSS9 [R"SS9nURURS5 URURS	5 URURS
[-5 URURS5 URURS5 URURS
5 URURS[-5 URURS5 URURS5 SSS5 SSS5 g!,(df   N=f!,(df   g=f)Nz+   3     0   1 hda 2 3 4 5 6 7 8 9 10 11 12�/proc/diskstats�!psutil._pslinux.is_storage_deviceTr�F�rAr�r_r�rCr�ra��rB�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�r
s   r7�test_emulate_kernel_2_4�0TestSystemDiskIoCounters.test_emulate_kernel_2_4�s��@��
� 1�7�;�
<����3�$���-�-�U�;��� � �����3�� � ��!6�!6��:�� � �����[��A�� � �����2�� � ����!�4�� � ��!7�!7��;�� � ����!�k�/�B�� � �����3�� � �����3��=�
<����=�
<��#�E'�DE�E'�
E$	� E'�'
E5c���Sn[SU05 [R"SSS9 [R"SS9nURURS5 URURS	5 URURS
[-5 URURS5 URURS5 URURS
5 URURS[-5 URURS5 URURS5 SSS5 SSS5 g!,(df   N=f!,(df   g=f)Nz'   3    0   hda 1 2 3 4 5 6 7 8 9 10 11r~rTr�Fr�r�r_r�rCr�rar�r�rBr�r�s   r7�test_emulate_kernel_2_6_full�5TestSystemDiskIoCounters.test_emulate_kernel_2_6_full�s��<��
� 1�7�;�
<����3�$���-�-�U�;��� � �����3�� � ��!6�!6��:�� � �����[��A�� � �����2�� � ����!�4�� � ��!7�!7��;�� � ����!�k�/�B�� � �����3�� � �����3��=�
<����=�
<�r�c���[SS05 [R"SSS9 [R"SS9nURURS5 URURS	[-5 URURS
5 URURS[-5 URURS5 URURS5 URURS5 URURS5 URURS5 SSS5 SSS5 g!,(df   N=f!,(df   g=f)
Nr~z   3    1   hda 1 2 3 4rTr�Fr�r�r_r�rCr)r�rr�r�r�r�r�r�r�r�r�r�r�r�r�r�)r�r
s  r7�test_emulate_kernel_2_6_limited�8TestSystemDiskIoCounters.test_emulate_kernel_2_6_limited	s��� 1�3L�M�
N����3�$���-�-�U�;��� � �����3�� � �����[��A�� � ����!�4�� � ����!�k�/�B�� � ��!6�!6��:�� � �����2�� � ��!7�!7��;�� � �����3�� � �����2��O�
N����O�
N�s#�E%�DE�E%�
E"	�E%�%
E3c�4�[R"S5n[SU05 [R"SSS9 [
R"SSS9nUR[U5S5 URUS	RS
5 URUSRS
5 URUS	RS5 URUSRS5 SSS5 SSS5 g!,(df   N=f!,(df   g=f)
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~rFr�T��perdiskrAr_�nvme0n1r��	nvme0n1p1r�)rrr�rr�r�r�r�rIr�r�r�s   r7�test_emulate_include_partitions�8TestSystemDiskIoCounters.test_emulate_include_partitionss����/�/�#���� 1�7�;�
<����3�%���-�-�d�5�I��� � ��S��1�-�� � ��Y��!:�!:�A�>�� � ��[�!1�!<�!<�a�@�� � ��Y��!;�!;�Q�?�� � ��[�!1�!=�!=�q�A��=�
<����=�
<�s#�D	�B-C8�'D	�8
D	�D	�	
Dc��[R"S5n[SU05 [R"SSS9 [
R"SSS9nURU5 SSS5 SSS5 Sn[R"S5n[SU05 [R"SSUS	9 [
R"SSS9nURURS
5 URURS5 SSS5 SSS5 g!,(df   N�=f!,(df   N�=f!,(df   N9=f!,(df   g=f)Nr�r~rFr�r�c��US:H$)Nr�r^)r�s r7�is_storage_device�STestSystemDiskIoCounters.test_emulate_exclude_partitions.<locals>.is_storage_deviceBs
���9�$�$rcTr�r�r�)rrr�rr�r�r�r�r�r�r�)r�r�r
r�s    r7�test_emulate_exclude_partitions�8TestSystemDiskIoCounters.test_emulate_exclude_partitions2s���/�/�#���� 1�7�;�
<����3�%���-�-�e�E�J���!�!�#�&�	�=�	%��/�/�#���� 1�7�;�
<����3��-��
�-�-�e�E�J��� � �����3�� � ����!�4��=�
<����=�
<�� ���=�
<�sG�D�'D
�!D�E�.AD/�<E�
D	�D�
D,�/
D=	�9E�
Ec��Sn[R"SS9n[R"SSUS9 [R"SS9nSSS5 UR	[U5[W55 g!,(df   N3=f)Nc��US:Xagg)Nr~FTr^�r�s r7r��?TestSystemDiskIoCounters.test_emulate_use_sysfs.<locals>.existsTs���(�(��rcT)r��psutil._pslinux.os.path.existsr�)r�r�rr�r�rI)r�r��wprocfs�wsysfss    r7�test_emulate_use_sysfs�/TestSystemDiskIoCounters.test_emulate_use_sysfsSsh��	�
�)�)�$�7��
�Z�Z�,�T�v�
��,�,�T�:�F�
�	
����W��s�6�{�3�	
�
�s�A0�0
A>c��Sn[R"SSUS9 UR[[R
5 SSS5 g!,(df   g=f)Nc��g)NFr^r�s r7r��>TestSystemDiskIoCounters.test_emulate_not_impl.<locals>.existsas��rcr�Tr�)rr�rv�NotImplementedErrorr�r�)r�r�s  r7�test_emulate_not_impl�.TestSystemDiskIoCounters.test_emulate_not_impl`sE��	��Z�Z�,�T�v�
�
���1�6�3J�3J�K�
�
�
�s�%A�
Ar^N)r�r�r�r�r�r�r�r�r�r�r�r�r^rcr7r|r|�s(��4�&4�(3�,B�&5�B4�Lrcr|c���\rSrSrSrSr\R"\S5S5r	\R"\
"S5(+S5\R"\S5S55rS	rS
r
g)�TestRootFsDeviceFinderijc��[R"S5Rn[R"U5Ul[R"U5Ulg)Nro)rhr��st_dev�major�minor)r�ras  r7�setUp�TestRootFsDeviceFinder.setUpls3���g�g�c�l�!�!���X�X�c�]��
��X�X�c�]��
rcc���[5n[RRS5(aUR	5 O UR[UR5 [RRSUR<SUR<S35(aUR5 O UR[UR5 UR5 g�Nz/proc/partitionsz/sys/dev/block/rDz/uevent)rrhr�r��ask_proc_partitionsrvrr�r��ask_sys_dev_block�ask_sys_class_block)r��finders  r7�test_call_methods�(TestRootFsDeviceFinder.test_call_methodsqs���#�%��
�7�7�>�>�,�-�-��&�&�(����/��1K�1K�L�
�7�7�>�>�-1�Z�Z����D�
�
�
�$�$�&����/��1I�1I�J��"�"�$rczunsupported on GITHUB_ACTIONSc�p�[5nURUR55 S=n=p4[RRS5(aUR
5n[RRSUR<SUR<S35(aUR5nUR5nU=(d U=(d UnU(aU(aURXR5 U(aU(aURXS5 U(aU(aURXT5 gggr�)r�assertIsNotNone�findrhr�r�r�r�r�r�r�r�)r�r�rr�c�bases      r7�test_comparisons�'TestRootFsDeviceFinder.test_comparisonss���#�%�����V�[�[�]�+�����A�
�7�7�>�>�,�-�-��*�*�,�A�
�7�7�>�>�-1�Z�Z����D�
�
��*�*�,�A��$�$�&���{�A�{����A����T�%��A����T�%��A����T�%��4rc�findmntzfindmnt utility not availablec�l�[5R5n[S5nURX5 g)Nzfindmnt -o SOURCE -rn /)rr�rr�)r�r��
findmnt_values   r7�test_against_findmnt�+TestRootFsDeviceFinder.test_against_findmnt�s.��*�+�0�0�2���4�5�
�����5rcc��[R"SS/S9n[R"5SnUR(de[
(dOUR
URS5 URUR[5R55 OURURS5 SSS5 g!,(df   g=f)Nrn)�	/dev/rootro�ext4rpr�rr�)rr�r�rerr	�assertNotEqual�devicer�rr�)r�r�rhs   r7�test_disk_partitions_mocked�2TestRootFsDeviceFinder.test_disk_partitions_mocked�s���
�Z�Z�2�:�;�
���)�)�+�A�.�D��8�8�O�8�!�>��#�#�D�K�K��=�� � ����.@�.B�.G�.G�.I�J�� � ����k�:�
�
�
�s�B"C�
C)r�r�N)r�r�r�r�r�r�r�r�r	r�rr�r�r�r^rcr7r�r�jsp��#�
%��_�_�^�%D�E�&�F�&�*�_�_��y�)�)�+J�K�
�_�_�^�%D�E�6�F�L�6�
;rcr�c�X�\rSrSrSrSrSrSrSrSr	\
"5S5rS	rS
r
g)�TestMisci�c��[S5n[R"5nUR[	U5[	U55 g)Nz	boot time)r�r��	boot_timer�rwr�s   r7�test_boot_time�TestMisc.test_boot_time�s4���k�*���'�'�)������\�*�C��,=�>rcc�v^�UR5n[R"U5 [[RRUS5S5nUR
S5 UR
S5 UR
S5 SSS5 [mU4Sjn[(aSOSn[R"XCS	9 [[5 UR[[R5 UR[[RS
S9 UR[[R5 UR[[RS
S9 UR[[R 5 UR[[R S
S9 U[lUR%[R"5S5 UR%['[R "55S5 [R"S
S9nUR%['U5S5 [R "S
S9nUR%['[)[&U55S5 [[RRUS5S5nUR
S
5 UR
S5 UR
S5 SSS5 UR+[R"5S5 UR+['[R"S
S95S5 UR+['[R "55S5 UR+['[)[&[R "S
S955S5 SSS5 [,R."U5 [[5 UR%[R"S5 g!,(df   GN]=f!,(df   GN*=f!,(df   Nx=f![,R."U5 [[5 f=f)Nr�rzcpu   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�|>�URS5(a[[RS5eT"U/UQ70UD6$)Nruzrejecting access for test)rtr'r(r)r�s   �r7r��4TestMisc.test_no_procfs_on_import.<locals>.open_mock�s9����?�?�7�+�+�!�%�,�,�0K�L�L� ��7��7��7�7rcr�r�r�Tr�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
ru)�
get_testfnrh�mkdirrEr�rL�writerrr�rr�rvr'rf�cpu_percent�cpu_times_percentrwr��sumr�r��shutil�rmtree)r��	my_procfsrPr�r��per_cpu_percent�per_cpu_times_percentr�s       @r7�test_no_procfs_on_import�!TestMisc.test_no_procfs_on_import�s�����O�O�%�	�
�����
�"�'�'�,�,�y�&�1�3�
7�1�
�G�G�1�2�
�G�G�1�2�
�G�G�1�2�8�
1	"��I�
8�
.1�S�/�6H�K����K�?��f�%��!�!�'�6�+;�+;�<��!�!�'�6�+;�+;�D�!�I��!�!�'�6�+=�+=�>��!�!�'�6�+=�+=�d�!�K��!�!�'�6�+C�+C�D��!�!��V�5�5�d�"��&/��"�� � ��!3�!3�!5�q�9�� � ��V�%=�%=�%?�!@�!�D�#)�"4�"4�D�"A��� � ��_�!5�q�9�)/�(@�(@��(M�%�� � ��S��.C�%D�!E�q�I��"�'�'�,�,�y�&�9�3�?�1��G�G�9�:��G�G�9�:��G�G�9�:�@�
�#�#�F�$6�$6�$8�!�<��#�#�C��(:�(:�$�(G�$H�!�L��#�#�C��(@�(@�(B�$C�Q�G��#�#���C��!9�!9��!F�G�H�!��G@�N
�M�M�)�$��&�!�����+�+�W�5�q8�
7��R@�?��7@�?��N
�M�M�)�$��&�!�sJ�4O�/P�>GP�4O.�CP�P�
O+�.
O=	�8P�
P�
P�'P8c	��[R"S5R5n[SU05n[R
"5 UR(de[R
"SS9 [R"5 [R"SS9 SSS5 [R"S5R5n[SU05 [R
"5nWR(de[R
"SS9n[R"5n[R"SS9nURUS5 UR[U5S5 UR[U5S5 UR[U5S5 UR[[[U55S5 UR[[[U55S5 URURS5 URURS5 SSS5 g!,(df   GN�=f!,(df   g=f)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
            r�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�)rrrr�r�r�rr�r�r�r�r�rc�user)r�r�r�r��cpu_percent_percpur��cpu_times_percent_percpus       r7�test_cpu_steal_decrease� 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�$�����Q�/�����$6� 7��;�����$5� 6��:�����$5� 6��>�����C��-E�$F� G��K�����C��-E�$F� G��O����.�4�4�a�8���� 1� 6� 6��:�8�
7�8�
7��8�
7�s�A&H-�EH?�-
H<�?
I
c���[R"SSS9nUR[[R
R5 UR(deSSS5 g!,(df   g=f)NrCTrD)rr�rvr r�r�r�rrXs  r7�test_boot_time_mocked�TestMisc.test_boot_time_mockedsD��
�Z�Z�-�d�
;�q����l�F�O�O�,E�,E�F��8�8�O�8�<�
;�
;�s�AA"�"
A0c�t�[R"5HnURURS5 M! g)N)z:0z:0.0)r��usersrj�host)r�r�s  r7�
test_users�TestMisc.test_users s(���L�L�N�D����T�Y�Y��7�#rcc�8�UR5n[R"U5 U[lUR[[R5 UR[[R5 UR[[RSS9 UR[[R5 UR[[R5 UR[[R5 UR[[R5 UR[[R5 UR[R[R5 S[lg!S[lf=f)NTr�ru)r�rhr�r�rwrvr'r�rfr�rRrCrre�
NoSuchProcess�Process)r��tdirs  r7�test_procfs_path�TestMisc.test_procfs_path&s����� ��
�����	)�!%�F�����g�v�'<�'<�=����g�v�'7�'7�8����g�v�'7�'7���E����g�v�'7�'7�8����g�v�'=�'=�>����g�v�'=�'=�>����g�v�':�':�;����g�v�'=�'=�>����f�2�2�F�N�N�C�!(�F����F��s�EF�
Fc���[5 [R"5nUR5nUR	[U5S5 [
USS9SRnURURU5 [R"U5nUR5 URU[R"55 SSS5 g!,(df   g=f)Nr_c��UR$r])�idr_s r7�<lambda>�)TestMisc.test_issue_687.<locals>.<lambda>Ds����rc)�keyr�)
rr�r��threadsr�rI�sortedrr��pid�as_dictrj�pids)r��pr	�tid�pts     r7�test_issue_687�TestMisc.test_issue_6879s����\���� �A��i�i�k�G����S��\�1�-���n�5�a�8�;�;�C�������s�+�����$�B��J�J�L����S�&�+�+�-�0��\�\�s�CC�
C"c���[SS05n[R"[R"55(deUR
(deSSS5 g!,(df   g=f)N�/proc/%s/statusrd)r�r��
pid_existsrh�getpidrrXs  r7�test_pid_exists_no_proc_status�'TestMisc.test_pid_exists_no_proc_statusJsH��� 1�2�6�
7�1��$�$�R�Y�Y�[�1�1�1�1��8�8�O�8�8�
7�
7�s�AA�
A*r^N)r�r�r�r�r�r�r�r�r�rrrrr�r^rcr7r�r��s>��?�
<6�|%;�N�
8�)�&��1��1� rcr�z
no batteryc��\rSrSr\R
"\"S5(+S5S5rSrSr	Sr
SrS	rS
r
SrSrS
rg)�TestSensorsBatteryiX�acpizacpi utility not availablec���[S5n[URS5SR5R	SS55n[
R"5RnURX#SS9 g)Nzacpi -br�r�r
rdr�)	rrwrGr��replacer��sensors_battery�percentr�)r�rx�
acpi_valuer�s    r7�test_percent�TestSensorsBattery.test_percent[s_����m������3���*�0�0�2�:�:�3��C�D�
��-�-�/�7�7�����z�q��Arcc�^�U4Sjn[m[(aSOSn[R"X!S9nUR	[
R"5RS5 UR	[
R"5R[
R5 UR(deSSS5 g!,(df   g=f)Nc�t>�URS5(a[R"S5$T"U/UQ70UD6$)N�z
AC0/onlinez	AC/online�1�r�r�r�r�s   �r7r��@TestSensorsBattery.test_emulate_power_plugged.<locals>.open_mockd�7����}�}�8�9�9��z�z�$�'�'� ��7��7��7�7rcr�r�r�T)rErrr�r�r�r�
power_plugged�secsleft�POWER_TIME_UNLIMITEDr�r�r�r�r�r�s    @r7�test_emulate_power_plugged�-TestSensorsBattery.test_emulate_power_pluggedbs����	8��	�),��o�2D��
�Z�Z��
;�q����V�3�3�5�C�C�T�J�����&�&�(�1�1�6�3N�3N�
��8�8�O�8�<�
;�
;�s�BB;�;
C	c�^�U4Sjn[m[(aSOSn[R"X!S9nUR	[
R"5RS5 UR(deSSS5 g!,(df   g=f)Nc��>�URS5(a[[RS5eURS5(a[R
"[
S55$T"U/UQ70UD6$)Nr%rd�/status�charging�r�r'r(r)r�r�rr�s   �r7r��BTestSensorsBattery.test_emulate_power_plugged_2.<locals>.open_mockvs[����}�}�8�9�9��e�l�l�B�/�/����y�)�)��{�{�1�Z�=�1�1� ��7��7��7�7rcr�r�r�T�	rErrr�r�r�rr*rr-s    @r7�test_emulate_power_plugged_2�/TestSensorsBattery.test_emulate_power_plugged_2ss_���	8��	�),��o�2D��
�Z�Z��
;�q����V�3�3�5�C�C�T�J��8�8�O�8�<�
;�
;���AA>�>
Bc�^�U4Sjn[m[(aSOSn[R"X!S9nUR	[
R"5RS5 UR(deSSS5 g!,(df   g=f)Nc�t>�URS5(a[R"S5$T"U/UQ70UD6$)Nr%�0r'r�s   �r7r��DTestSensorsBattery.test_emulate_power_not_plugged.<locals>.open_mock�r)rcr�r�r�Fr6r-s    @r7�test_emulate_power_not_plugged�1TestSensorsBattery.test_emulate_power_not_plugged�s_���	8��	�),��o�2D��
�Z�Z��
;�q����V�3�3�5�C�C�U�K��8�8�O�8�<�
;�
;�r9c�^�U4Sjn[m[(aSOSn[R"X!S9nUR	[
R"5RS5 UR(deSSS5 g!,(df   g=f)Nc��>�URS5(a[[RS5eURS5(a[R
"[
S55$T"U/UQ70UD6$)Nr%rdr2�dischargingr4r�s   �r7r��FTestSensorsBattery.test_emulate_power_not_plugged_2.<locals>.open_mock�s\����}�}�8�9�9��e�l�l�B�/�/����y�)�)��{�{�1�]�#3�4�4� ��7��7��7�7rcr�r�r�Fr6r-s    @r7� test_emulate_power_not_plugged_2�3TestSensorsBattery.test_emulate_power_not_plugged_2�s_���	8��	�),��o�2D��
�Z�Z��
;�q����V�3�3�5�C�C�U�K��8�8�O�8�<�
;�
;�r9c�^�U4Sjn[m[(aSOSn[R"X!S9nUR	[
R"5R5 UR(deSSS5 g!,(df   g=f)Nc��>�URS5(a[[RS5eURS5(a[R
"S5$T"U/UQ70UD6$)N)�"/sys/class/power_supply/AC0/online�!/sys/class/power_supply/AC/onlinerd�#/sys/class/power_supply/BAT0/statuss???)rtr'r(r)r�r�r�s   �r7r��ETestSensorsBattery.test_emulate_power_undetermined.<locals>.open_mock�s`������ ����e�l�l�B�/�/����!F�G�G��z�z�&�)�)� ��7��7��7�7rcr�r�r�)	rErrr�r�r�rr*rr-s    @r7�test_emulate_power_undetermined�2TestSensorsBattery.test_emulate_power_undetermined�s]���		8��	�),��o�2D��
�Z�Z��
;�q����f�4�4�6�D�D�E��8�8�O�8�<�
;�
;�s�AA=�=
Bc���[SS05nUR[R"5RS5 UR
(deSSS5 g!,(df   g=f)N�(/sys/class/power_supply/BAT0/energy_fullr<r)r�r�r�rrrrXs  r7�test_emulate_energy_full_0�-TestSensorsBattery.test_emulate_energy_full_0�sO��
�
7��>�
�
����V�3�3�5�=�=�q�A��8�8�O�8�	
�
�
�s�AA�
A)c��[S[[RS55 [S[[RS55 [	SS05 UR[R"5RS5 SSS5 SSS5 SSS5 g!,(df   N=f!,(df   N(=f!,(df   g=f)NrOrdz(/sys/class/power_supply/BAT0/charge_fullz%/sys/class/power_supply/BAT0/capacitys88�X)	r�r'r(r)r�r�r�rr�r�s r7�"test_emulate_energy_full_not_avail�5TestSensorsBattery.test_emulate_energy_full_not_avail�s���!�6��E�L�L�"�%�
�%�:�����b�)��'�<�e�D���$�$�V�%;�%;�%=�%E�%E�r�J��	�	
�
����	���	
�
�s;�%C�
B2�0B!�B2�C�!
B/�+B2�2
C	�<C�
Cc	���[S[[RS55 [S[[RS55 [S[[RS55 UR	[
R"5R5 SSS5 SSS5 SSS5 g!,(df   N=f!,(df   N(=f!,(df   g=f)NrIrdrHrJ)r�r'r(r)r�r�rr*rTs r7�test_emulate_no_power�(TestSensorsBattery.test_emulate_no_power�s���
 �/�����r�1J�
�%�4�g�e�l�l�B�6O��)�9��E�L�L�"�-���%�%�f�&<�&<�&>�&L�&L�M�	��
�
�������
�
�s;�%C�
%C�//B7�C�&C�7
C�C�
C	�C�
C'r^N)r�r�r�r�r�r�rr!r.r7r>rDrLrPrUrXr�r^rcr7rrXsV���_�_��v��&�(D�E�B�F�B��"�"��"�(�K� Nrcrc��\rSrSrSrSrg)�TestSensorsBatteryEmulatedi�c�^�U4Sjn[m[(aSOSn[R"SS/S9n[R"X!S9nUR	[
R"55 SSS5 SSS5 WR(deWR(deg!,(df   N==f!,(df   NF=f)Nc�Z>�URS5(a[R"[S55$URS5(a[R"[S55$URS5(a[R"[S55$T"U/UQ70UD6$)Nz/energy_now�60000000z
/power_now�0z/energy_full�60000001�r�r�r�rr�s   �r7r��5TestSensorsBatteryEmulated.test_it.<locals>.open_mock�s~����}�}�]�+�+��{�{�1�Z�=�1�1����|�,�,��{�{�1�S�6�*�*����~�.�.��{�{�1�Z�=�1�1� ��7��7��7�7rcr�r�z
os.listdir�BAT0r�r�)rErrr�r�r�rr)r�r�r��mlistdir�mopenr�s     @r7�test_it�"TestSensorsBatteryEmulated.test_it�s����	8��	�),��o�2D��
�Z�Z��F�8�
<�����K�?�5��$�$�V�%;�%;�%=�>�@�=�������|�|��|�@�?��=�
<�s#�B5�%B$�-B5�$
B2	�.B5�5
Cr^N)r�r�r�r�rfr�r^rcr7r[r[�s��rcr[c� �\rSrSrSrSrSrg)�TestSensorsTemperaturesi�c�^�U4Sjn[m[(aSOSn[R"X!S9 [R"SS/S9 [R
"5SS	nUR
URS
5 UR
URS5 UR
URS5 UR
URS
5 SSS5 SSS5 g!,(df   N=f!,(df   g=f)Nc�>�URS5(a[R"[S55$URS5(a[R"[S55$URS5(a[R"S5$URS5(a[R"S5$URS	5(a[R"S
5$T"U/UQ70UD6$)N�/namer�z/temp1_label�labelz/temp1_input�30000z
/temp1_maxs40000z/temp1_crit�50000)r�r�r�rr�r�s   �r7r��CTestSensorsTemperatures.test_emulate_class_hwmon.<locals>.open_mock�s�����}�}�W�%�%��{�{�1�V�9�-�-����~�.�.��{�{�1�W�:�.�.����~�.�.��z�z�(�+�+����|�,�,��z�z�(�+�+����}�-�-��z�z�(�+�+� ��7��7��7�7rcr�r�r�r�z/sys/class/hwmon/hwmon0/temp1r�r�rrm�>@gD@�I@�rErrr�r��sensors_temperaturesr�rmr��high�critical)r�r�r��tempr�s    @r7�test_emulate_class_hwmon�0TestSensorsTemperatures.test_emulate_class_hwmon�s����	8��	�),��o�2D��
�Z�Z��
;�����+J�*K���2�2�4�V�<�Q�?��� � ����W�5�� � ����t�4�� � ����D�1�� � �����5��<�
;����<�
;�s$�C6�BC%�C6�%
C3	�/C6�6
Dc�^�U4SjnSn[m[(aSOSn[R"X1S9 [R"SSUS9 [R
"5S	S
nUR
URS5 UR
URS5 UR
URS
5 UR
URS
5 SSS5 SSS5 g!,(df   N=f!,(df   g=f)Nc�>�URS5(a[R"S5$URS5(a[R"S5$URS5(a[R"[	S55$URS5(a[R"[	S55$T"U/UQ70UD6$)	N�0_temprorwrn�0_typerv�typer�)r�r�r�r�rr�s   �r7r��ETestSensorsTemperatures.test_emulate_class_thermal.<locals>.open_mocks�����}�}�X�&�&��z�z�(�+�+����v�&�&��z�z�(�+�+����x�(�(��{�{�1�Z�=�1�1����v�&�&��{�{�1�V�9�-�-� ��7��7��7�7rcc�L�US:Xa/$US:Xa/$US:XaS/$US:XaSS/$/$)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_mock�ETestSensorsTemperatures.test_emulate_class_thermal.<locals>.glob_mocksP���8�8��	��A�A��	��;�;�:�;�;��G�G�H�H����Ircr�r�r�r�Tr�r�rrdrqrrrs)r�r�r�r�rwr�s     @r7�test_emulate_class_thermal�2TestSensorsTemperatures.test_emulate_class_thermals����
	8�	��	�),��o�2D��
�Z�Z��
;����K��)�L��2�2�4�V�<�Q�?��� � ����R�0�� � ����t�4�� � ����D�1�� � �����5�M�<�
;�L�L��<�
;�s$�C9�BC(�C9�(
C6	�2C9�9
Dr^N)r�r�r�r�rxr�r�r^rcr7riri�s��6�8#6rcric��\rSrSrSrSrg)�TestSensorsFansi8c�^�U4Sjn[m[(aSOSn[R"X!S9 [R"SS/S9 [R
"5SS	nUR
URS
5 UR
URS5 SSS5 SSS5 g!,(df   N=f!,(df   g=f)Nc�Z>�URS5(a[R"[S55$URS5(a[R"[S55$URS5(a[R"[S55$T"U/UQ70UD6$)Nrlr�z/fan1_labelrmz/fan1_input�2000rar�s   �r7r��4TestSensorsFans.test_emulate_data.<locals>.open_mock;s~����}�}�W�%�%��{�{�1�V�9�-�-����}�-�-��{�{�1�W�:�.�.����}�-�-��{�{�1�V�9�-�-� ��7��7��7�7rcr�r�r�r�z/sys/class/hwmon/hwmon2/fan1r�r�rrmi�)	rErrr�r��sensors_fansr�rmr�)r�r�r��fanr�s    @r7r��!TestSensorsFans.test_emulate_data:s����	8��	�),��o�2D��
�Z�Z��
;�����+I�*J���)�)�+�F�3�A�6��� � ����G�4�� � ����d�3��<�
;����<�
;�s$�B>�AB-�B>�-
B;	�7B>�>
Cr^N)r�r�r�r�r�r�r^rcr7r�r�8s��4rcr�c��\rSrSr\"5S5rSr\R"\	S5S5r
SrSrSr
S	rS
rSrSrS
rSrSrSr\R"\(+S5S5rSrSrSrSrg)�TestProcessiUc
�b�UR5n[RRUR5R5up#n[R"UR5R
SS9nURU[UVs/sHofRUR-PM sn5SS9 URU[UVs/sHofRPM sn5SS9 URU[UVs/sHofRPM sn5SS9 gs snfs snfs snf)NF)�groupedr-r�)
�spawn_testprocr�r�r�r�_parse_smaps�memory_mapsr�r��
private_dirty�
private_clean�pssrR)r��sproc�ussr�rR�mapsr`s       r7�test_parse_smaps_vs_memory_maps�+TestProcess.test_parse_smaps_vs_memory_mapsWs����#�#�%�����0�0����;�H�H�J���$��~�~�e�i�i�(�4�4�U�4�C�������D�A�D�q���1�?�?�2�D�A�B��	�	
�
	
���s�C��(=��1����(=�$>�d��K����t�S�$�)?�$�Q�&�&�$�)?�%@���M��	B��)>��)?s�
"D"�D'�D,c���[R"S5R5n[S[R
"5-U05n[RR[R
"55nUR5upEnUR(deURUS5 URUS5 URUS5 SSS5 g!,(df   g=f)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/%s/smapsilr.i<)rrrr�rhrr�r�r�r�rr�)r�r�r�rr�r�rRs       r7�test_parse_smaps_mocked�#TestProcess.test_parse_smaps_mockedds����/�/�#��,���-	�.� 0�2�9�9�;� >��H�
I�Q����'�'��	�	��4�A��^�^�-�N�C�d��8�8�O�8����S�"5�6����S�(�+����T�9�-�
J�
I�
I�s
�BC � 
C.zunreliable on PYPYc��SnUR5n[US5 URU"U5RS5 SSS5 [U5 URU"U5RS5 SSS5 [US5 URU"U5RS5 SSS5 [US5 URU"U5RS5 SSS5 [US5 URU"U5RS5 SSS5 [US5 URU"U5RS5 SSS5 [(a�[U5 [US5 URU"U5RS5 SSS5 [U5 [US	5 URU"U5RS5 SSS5 gg!,(df   GN�=f!,(df   GN�=f!,(df   GNi=f!,(df   GND=f!,(df   GN=f!,(df   N�=f!,(df   N�=f!,(df   g=f)
Nc�0�[R"5n[R"5[-nUR	5HOnUR
[R
RU5:XaUs $[R"5U:�dMO O Mer])	r�r��timer
�
open_filesr�rh�abspathr )�fnamer�	giveup_at�files    r7�
get_test_file�7TestProcess.test_open_files_mode.<locals>.get_test_file�se����� �A��	�	��n�4�I���L�L�N�D��y�y�B�G�G�O�O�E�$:�:�#������y�0��	+�rcr�rrzr+zw+za+r`zx+)r�rEr��moderr)r�r��testfns   r7�test_open_files_mode� TestProcess.test_open_files_mode�s���		@����"��
�&�#�
����]�6�2�7�7��=��
�&�\����]�6�2�7�7��=��
�&�#�
����]�6�2�7�7��=���&�$�
����]�6�2�7�7��>� �
�&�$�
����]�6�2�7�7��>� �
�&�$�
����]�6�2�7�7��>� ��3�����f�c�"�� � ��v�!6�!;�!;�S�A�#�����f�d�#�� � ��v�!6�!;�!;�T�B�$�#���
��
�\��
�
�� �
��
�
��
�
��
#�"��$�#�s_�#G.�#H�
#H�#H$�;#H6�2#I�?#I�#I*�.
G=�
H�
H!�$
H3�6
I�
I�
I'�*
I8c���[R"5nUR5n[UR	5S5 [URS[
U5-5 [R"S[[RS5S9nURUR5/5 UR(deSSS5 [R"S[[RS5S9nURUR5/5 UR(deSSS5 SSS5 g!,(df   N�=f!,(df   N(=f!,(df   g=f)Nr�len(ret) != %i�psutil._pslinux.os.readlinkrdr�)r�r�r�rEr�rrIrr��OSErrorr(r)r�r�EINVAL)r�r�filesr�s    r7�test_open_files_file_gone�%TestProcess.test_open_files_file_gone�s���
�N�N��������
�$�/�/�#�S�
)��q�|�|�%5��E�
�%B�C����-�#�E�L�L�"�5���� � ������4��x�x��x�����-�#�E�L�L�"�5���� � ������4��x�x��x��*�
)�������*�
)�s=�AE"�4E�5E"�:4E�/E"�
E	�
E"�
E	�E"�"
E0c��[R"5nUR5n[UR	5S5 [URS[
U5-5 [(aSOSn[R"U[[RS5S9nURUR5/5 UR(deSSS5 SSS5 g!,(df   N=f!,(df   g=f)Nrr�r�r�rdr�)r�r�r�rEr�rrIrrr�r'r(r)r�r�r�rr�r�r�s     r7�test_open_files_fd_gone�#TestProcess.test_open_files_fd_gone�s���
�N�N��������
�$�/�/�#�S�
)��q�|�|�%5��E�
�%B�C�-0�S�/�6H�K���������r�)B���� � ������4��x�x��x�	�	*�
)����	*�
)�s%�AC6�4C%�C6�%
C3	�/C6�6
Dc�T�[R"5nUR5n[UR	5S5 [URS[
U5-5 Sn[R"U[[RS5S9n[R"S5 URUR5/5 UR(deSSS5 SSS5 SSS5 g!,(df   N=f!,(df   N(=f!,(df   g=f)Nrr�r�rdr��psutil._pslinux.debug)r�r�r�rEr�rrIrr�r�r(�ENAMETOOLONGr�rr�s     r7�test_open_files_enametoolong�(TestProcess.test_open_files_enametoolong�s���
�N�N��������
�$�/�/�#�S�
)��q�|�|�%5��E�
�%B�C�7�K�������1C�1C�R�)H����Z�Z� 7�8��$�$�Q�\�\�^�R�8��8�8�O�8�9��	*�
)�9�8�����	*�
)�s=�AD�D�)4C7�D�&D�7
D�D�
D	�D�
D'c�(�[R"S0S9nUR[RR[R"55R55 UR(deSSS5 g!,(df   g=f)Nz)psutil._pslinux._psposix.get_terminal_mapr�)
rr�r�r�r�r�rhr�terminalrrXs  r7�test_terminal_mocked� TestProcess.test_terminal_mocked�s]��
�Z�Z�7�b�
�
����f�o�o�5�5�b�i�i�k�B�K�K�M�N��8�8�O�8�	
�
�
�s�A#B�
Bc�B�[R"5n[R"[	S55n[
R"SUSS9nURUR5SS/5 UR(deSSS5 [R"[	S55n[
R"SUSS9nURUR5/SQ5 UR(deSSS5 g!,(df   N�=f!,(df   g=f)	NzfoobarrCTr��foo�barz	foobar�r�r�rd�
r�r�r�r�rrr�r��cmdliner�r�rr�r�s    r7�test_cmdline_mocked�TestProcess.test_cmdline_mocked�s����N�N����K�K��"2� 3�4�	�
�Z�Z�!�	�$�
�
����Q�Y�Y�[�5�%�.�9��8�8�O�8�	
�
�K�K��"6� 7�8�	�
�Z�Z�!�	�$�
�
����Q�Y�Y�[�*<�=��8�8�O�8�	
�
�

�
��
�
���6C?�?6D�?
D
�
Dc�B�[R"5n[R"[	S55n[
R"SUSS9nURUR5SS/5 UR(deSSS5 [R"[	S55n[
R"SUSS9nURUR5/SQ5 UR(deSSS5 g!,(df   N�=f!,(df   g=f)	Nzfoo bar rCTr�r�r�z	foo bar  r�r�r�s    r7�test_cmdline_spaces_mocked�&TestProcess.test_cmdline_spaces_mockeds����N�N����K�K��*�
�.�	�
�Z�Z�!�	�$�
�
����Q�Y�Y�[�5�%�.�9��8�8�O�8�	
�
�K�K��+��/�	�
�Z�Z�!�	�$�
�
����Q�Y�Y�[�*<�=��8�8�O�8�	
�
�

�
��
�
�r�c�8�[R"5n[R"[	S55n[
R"SUSS9nURUR5SS/5 UR(deSSS5 g!,(df   g=f)Nzfoo barrCTr�r�r�r�r�s    r7�test_cmdline_mixed_separators�)TestProcess.test_cmdline_mixed_separatorsso��
�N�N����K�K��"2� 3�4�	�
�Z�Z�!�	�$�
�
����Q�Y�Y�[�5�%�.�9��8�8�O�8�	
�
�
�s�6B�
Bc�.�[R"SSS9 UR[R"5R5S5 UR[R"5R
5S5 SSS5 g!,(df   g=f)Nr�z/home/foo (deleted)r�z	/home/foo)rr�r�r�r��exe�cwdrTs r7�!test_readlink_path_deleted_mocked�-TestProcess.test_readlink_path_deleted_mockedsf��
�Z�Z�)�8M�
�
���V�^�^�-�1�1�3�[�A����V�^�^�-�1�1�3�[�A�	
�
�
�s�A'B�
Bc�
^�U4Sjn[m[(aSOSn[R"X!S9n[R
"5R
5nUR(deURU/5 SSS5 U4Sjn[R"X%S9 UR[R[R
"5R5 SSS5 g!,(df   No=f!,(df   g=f)Nc�>�URS[R"5-5(a[[R
S5eT"U/UQ70UD6$�Nz
/proc/%s/taskrd)rtrhrr'r(r)r�s   �r7�open_mock_1�4TestProcess.test_threads_mocked.<locals>.open_mock_1+sC�����������<�=�=��e�l�l�B�/�/� ��7��7��7�7rcr�r�r�c�>�URS[R"5-5(a[[R
S5eT"U/UQ70UD6$r�)rtrhrr'r(�EPERMr�s   �r7�open_mock_2�4TestProcess.test_threads_mocked.<locals>.open_mock_2:sC�����������<�=�=��e�k�k�2�.�.� ��7��7��7�7rc)rErrr�r�r�r	rr�rv�AccessDenied)r�r�r�r�r
r�r�s      @r7�test_threads_mocked�TestProcess.test_threads_mocked&s����
	8��	�),��o�2D��
�Z�Z��
=���.�.�"�*�*�,�C��8�8�O�8����S�"�%�>�	8��Z�Z��
=����f�1�1�6�>�>�3C�3K�3K�L�>�
=�>�
=��>�
=�s�A	C#�>C4�#
C1�4
Dc�"�[R"S[[RS5S9n[
R"5R5nUR(deURUS5 SSS5 g!,(df   g=f)Nzpsutil._pslinux.readlinkrdr�)
rr�r�r(r)r�r�r�rr�)r�r�r
s   r7�test_exe_mocked�TestProcess.test_exe_mockedCsa��
�Z�Z�&�G�E�L�L�"�4M�
�
��.�.�"�&�&�(�C��8�8�O�8����S�"�%�
�
�
�s�A	B�
Bc�|�[S[R"5-[[R
S55n[R"5nUR[5 UR5 SSS5 UR(deSSS5 g!,(df   N+=f!,(df   g=f)Nr�rd)r�rhrr'r(r)r�r�rvrr�r�r�r�rs   r7�test_issue_1014�TestProcess.test_issue_1014Ks|��!��r�y�y�{�*�G�E�L�L�"�,E�
�
���� �A��"�"�#4�5��
�
��6��8�8�O�8�

�
�6�5��	
�
�s#�+B-�&B�7B-�
B*	�&B-�-
B;r�c��[R"S[[RS5S9n[R"SSS9n[
R"5nUR5 UR[
R5nUR[
R5 SSS5 SSS5 SSS5 WR(deWR(deURWRRWR5 URURRUR55 g!,(df   N�=f!,(df   N�=f!,(df   N�=f)Nzpsutil._pslinux.prlimitrdr�z"psutil._pslinux.Process._is_zombieTr�)rr�r�r(�ENOSYSr�r�r�rv�
ZombieProcess�rlimit�
RLIMIT_NOFILErr��	exceptionr)r�r�r�rr�s     r7�test_rlimit_zombie�TestProcess.test_rlimit_zombieVs���
�Z�Z�%�7�5�<�<��3L�
�
����4�4����N�N�$�������&�&�v�';�';�<���H�H�V�1�1�2�=��
��y�y��y��y�y��y�������*�*�A�E�E�2�������+�+�Q�V�V�X�6�=�<�����
�
�s<�E.�AE�	 E�)E�1E.�
E�E�
E+	�'E.�.
E<c��/SQnSRU5R5n[S[R"5-U05 [
R"5nURUR5S5 URUR5[
R5 URUR5S5 URUR5S[-[
R"5-5 UR5nURUR S[-5 URUR"S[-5 URUR$S	[-5 URUR&S
[-5 URUR(S[-5 URUR+5S5 SSS5 g!,(df   g=f)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_r�r_r_�7r�z
/proc/%s/stat�catr�rar_r�rCr�r�)rLrr�rhrr�r�r�r��status�
STATUS_ZOMBIE�ppid�create_timerr�rfr��system�
children_user�children_system�iowait�cpu_num)r�r�r�r�cpus     r7�test_stat_file_parsing�"TestProcess.test_stat_file_parsingjse��+
��X�(�(�4�.�'�'�)��
��"�)�)�+� =�w�G�
H���� �A����Q�V�V�X�u�-����Q�X�X�Z��)=�)=�>����Q�V�V�X�q�)�����
�
���[��6�3C�3C�3E�!E�
��+�+�-�C����S�X�X�q�;��7����S�Z�Z��[��9����S�.�.��K��@����S�0�0�!�k�/�B����S�Z�Z��[��9����Q�Y�Y�[�!�,�I�
H�
H�s
�F G0�0
G>c	���[R"S5R5n[S[R
"5-U05 [R"5nURUR5RS5 URUR5RS5 URUR5S5 UR5nURURS5 URURS5 URUR S5 UR#5nURURS	5 URURS
5 URUR S5 URUR$R'5[)[+S555 SSS5 g!,(df   g=f)
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�)rrrr�rhrr�r�r��num_ctx_switches�	voluntary�involuntary�num_threads�uids�real�	effective�saved�gids�_proc�_get_eligible_cpus�listrK)r�r�rrrs     r7�test_status_file_parsing�$TestProcess.test_status_file_parsing�s\���/�/�#/�0�17���	�� 1�B�I�I�K� ?��I�
J���� �A����Q�/�/�1�;�;�R�@����Q�/�/�1�=�=�r�B����Q�]�]�_�b�1��6�6�8�D����T�Y�Y��-����T�^�^�T�2����T�Z�Z��.��6�6�8�D����T�Y�Y��-����T�^�^�T�2����T�Z�Z��.����Q�W�W�7�7�9�4��a��>�J�K�
J�
J�s
�FG�
G-c��[R"S[[RS5S9n[
R"5n[R"S5 URUR5/5 UR(deSSS5 SSS5 g!,(df   N=f!,(df   g=f)Nr�rdr�r�)
rr�r�r(r�r�r�r��connectionsrr�s   r7�test_connections_enametoolong�)TestProcess.test_connections_enametoolong�s����Z�Z�)��� 2� 2�B�7�
����� �A����3�4�� � �����"�5��x�x��x�5�
�
�
5�4��
�
�s#�,B1�4B �B1� 
B.	�*B1�1
B?r^N)r�r�r�r�rr�r�r�r�rr�r�r�r�r�r�r�r�r�r�r�r�rr�r	rrr�r^rcr7r�r�Us�����
N��
N�.�D�_�_�T�/�0�"C�1�"C�H �. � $�&�� � 	�B�M�:&�	��_�_��^�_�5�7�6�7�&<-�|K�0 rcr�c�x�\rSrSrSr\S5rSrSrSr	Sr
SrS	rS
r
\"5S5rSrS
rSrg)�TestProcessAgainstStatusi�z�/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�8�[R"5Ulgr])r�r��proc)�clss r7�
setUpClass�#TestProcessAgainstStatus.setUpClass�s���>�>�#��rcc��[RRSURR-5nUHTnUR5nUR
U5(dM+URS5Sn[U5s sSSS5 $ [SU-5e![a Uss sSSS5 $f=f!,(df   g=f)Nr�	r_z
can't find %r)
r��_psplatform�	open_textr#rr�rt�	partitionrwrJ)r��	linestartrPrRrus     r7�read_status_file�)TestProcessAgainstStatus.read_status_file�s���
�
�
�
)�
)���	�	�
�
�-�
�
����z�z�|���?�?�9�-�-� �N�N�4�0��3�E�%�"�5�z�)�
�
���_�y�8�9�9��&�%�$��
�
�%��
�
�s;�*B=�%B=�:
B �B=�B=� B:�,B=�9B:�:B=�=
Cc�z�URS5nURURR5U5 g)NzName:)r-r�r#r��r�rus  r7�	test_name�"TestProcessAgainstStatus.test_name��-���%�%�g�.����������)�5�1rcc���URS5nXRS5S-URS5nURSS5nUR	UR
R
5U5 g)NzState:�(r��)r�rs)r-r��rfindrr�r#r�r0s  r7�test_status�$TestProcessAgainstStatus.test_status�s_���%�%�h�/���j�j��o��)�E�K�K��,<�=���
�
�c�3�'��������)�)�+�U�3rcc�z�URS5nURURR5U5 g)NzPPid:)r-r�r#rr0s  r7�	test_ppid�"TestProcessAgainstStatus.test_ppid�r3rcc�z�URS5nURURR5U5 g)NzThreads:)r-r�r#rr0s  r7�test_num_threads�)TestProcessAgainstStatus.test_num_threads�s/���%�%�j�1��������.�.�0�%�8rcc���URS5n[[[UR	5SS55nURURR5U5 g)NzUid:r�rC)r-r�r�rwrGr�r#rr0s  r7�	test_uids�"TestProcessAgainstStatus.test_uids��K���%�%�f�-���c�#�u�{�{�}�Q�q�1�2�3����������)�5�1rcc���URS5n[[[UR	5SS55nURURR5U5 g)NzGid:r�rC)r-r�r�rwrGr�r#rr0s  r7�	test_gids�"TestProcessAgainstStatus.test_gids	rCrcc��URS5nURURR5RU5 URS5nURURR5R
U5 g)Nzvoluntary_ctxt_switches:znonvoluntary_ctxt_switches:)r-r�r#rrrr0s  r7�test_num_ctx_switches�.TestProcessAgainstStatus.test_num_ctx_switches	sj���%�%�&@�A��������3�3�5�?�?��G��%�%�&C�D��������3�3�5�A�A�5�Ircc
��URS5nS[U5;aa[[UR	S55up#URURR5[[X#S-555 gg)N�Cpus_allowed_list:rsr�)
r-rr�rwrGr�r#�cpu_affinityrrK)r�ru�min_�max_s    r7�test_cpu_affinity�*TestProcessAgainstStatus.test_cpu_affinity	si���%�%�&:�;���#�e�*���S�%�+�+�c�"2�3�J�D�����	�	�&�&�(�$�u�T�!�8�/D�*E�
�rcc�:�URS5n[R"S5nURRR5 SSS5 S[
U5;aWR(aegWR(deg!,(df   NE=f)NrKzpsutil._pslinux.per_cpu_timesrs)r-rr�r#rrrr)r�rur�s   r7�test_cpu_affinity_eligible_cpus�8TestProcessAgainstStatus.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�%B�
Br^N)r�r�r�r��__doc__�classmethodr%r-r1r8r;r>rArErrHrOrRr�r^rcr7r!r!�sa����$��$�:�2�4�2�9�2�
2�
��J��J��rcr!c��\rSrSrSrSrg)�	TestUtilsi#	c���[R"SSS9nUR[RRS5S5 UR(deSSS5 g!,(df   g=f)Nzos.readlinkz
foo (deleted)r�r�r�)rr�r�r�r)�readlinkrrXs  r7�
test_readlink�TestUtils.test_readlink%	sK��
�Z�Z�
�O�
D�����V�/�/�8�8��?��G��8�8�O�8�E�
D�
D�s�AA#�#
A1r^N)r�r�r�r�rZr�r^rcr7rWrW#	s��rcrW�__main__)�
run_from_name)frT�
__future__rrur,r(�globr�rhr�r�r)r2rr�r�rr�r�psutil._compatrrrr�psutil.testsr	r
rrr
rrrrrrrrrrrrrrr�rrrrr�r��dirname�__file__�HEREr1�SIOCGIFCONFrfr;r?r��EMPTY_TEMPERATURESr8r<r@rZrjr~r�r�r��contextmanagerr�r�r�r�r�r�r3r]rpr�r�r�rrrr3rHr[r|r�r�rr[rir�r�r!rWr��psutil.tests.runnerr]r^rcr7�<module>ris���������	�	�	�
�
�
�����
���,�%��'�'�$�%�'�#��-�*�'�#�#��&�)�$��0��	�+�2�4�+�
�w�w���r�w�w���x�0�1�������
�������K����#<�=�=��
�
�
��,K�.
� �,@�@�������0������,
���U��L�)�:��:�*�:�z
���U��L�)�4
�>�4
�*�4
�n
���U��L�)�M6�>�M6�*�M6�j
���U��L�)�Y�>�Y�*�Y�B
���U��L�)�3��3�*�3�&
���U��L�)�B ��B �*�B �J
���U��L�)��n��*��6
���U��L�)�S8�^�S8�*�S8�l
���U��L�)�	F��	F�*�	F�
���U��L�)�	O�.�	O�*�	O�"
���U��L�)�E�>�E�*�E�R
���U��L�)�/5�>�/5�*�/5�d
���U��L�)�6�n�6�*�6�r
���U��L�)��~��*��<
���U��L�)�@)�~�@)�*�@)�F
���U��L�)�FL�~�FL�*�FL�R
���U��L�)�<;�^�<;�*�<;�H
���U��L�)�`�~�`�*�`�P
���U��L�)�	���[��,�/�AN��AN�0�*�AN�H
���U��L�)����*��*
���U��L�)�@6�n�@6�*�@6�F
���U��L�)�4�n�4�*�4�8
���U��L�)�u �.�u �*�u �p
���U��L�)�L�~�L�*�L�h
���U��L�)����*���z��1��(��rc

Filemanager

Name Type Size Permission Actions
__init__.cpython-313.pyc File 91.2 KB 0644
__main__.cpython-313.pyc File 295 B 0644
runner.cpython-313.pyc File 17.87 KB 0644
test_aix.cpython-313.pyc File 5.58 KB 0644
test_bsd.cpython-313.pyc File 35.72 KB 0644
test_connections.cpython-313.pyc File 28.36 KB 0644
test_contracts.cpython-313.pyc File 23.74 KB 0644
test_linux.cpython-313.pyc File 138.04 KB 0644
test_memleaks.cpython-313.pyc File 34.66 KB 0644
test_misc.cpython-313.pyc File 54.59 KB 0644
test_osx.cpython-313.pyc File 11.29 KB 0644
test_posix.cpython-313.pyc File 24.29 KB 0644
test_process.cpython-313.pyc File 98.9 KB 0644
test_process_all.cpython-313.pyc File 25.5 KB 0644
test_sunos.cpython-313.pyc File 2.33 KB 0644
test_system.cpython-313.pyc File 56.49 KB 0644
test_testutils.cpython-313.pyc File 29.34 KB 0644
test_unicode.cpython-313.pyc File 17.55 KB 0644
test_windows.cpython-313.pyc File 57.12 KB 0644
Filemanager