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_process.cpython-311.pyc
�

�bic}���6�dZddlZddlZddlZddlZddlZddlZddlZddlZddl	Z	ddl
Z
ddlZddlZddl
Z
ddlZddlZddlmZddlmZddlmZddlmZddlmZddlmZdd	lmZdd
lmZddlmZddlmZdd
lmZddlmZddlmZddlmZddlm Z ddl!m"Z"ddl!m#Z#ddl!m$Z$ddl!m%Z%ddl!m&Z&ddl!m'Z'ddl!m(Z(ddl!m)Z)ddl!m*Z*ddl!m+Z+ddl!m,Z,ddl!m-Z-ddl!m.Z.ddl!m/Z/dd l!m0Z0dd!l!m1Z1dd"l!m2Z2dd#l!m3Z3dd$l!m4Z4dd%l!m5Z5dd&l!m6Z6dd'l!m7Z7dd(l!m8Z8dd)l!m9Z9dd*l!m:Z:dd+l!m;Z;dd,l!m<Z<dd-l!m=Z=Gd.�d/e1��Z>er!ej?��dkrGd0�d1e>��Z@Gd2�d3e1��ZAeBd4krdd5lCmDZDeDeE��dSdS)6�Tests for psutil.Process class.�N)�AIX)�BSD)�LINUX)�MACOS)�NETBSD)�OPENBSD)�OSX)�POSIX)�SUNOS)�WINDOWS)�	open_text)�PY3)�FileNotFoundError)�long)�super)�APPVEYOR)�
CI_TESTING)�GITHUB_ACTIONS)�GLOBAL_TIMEOUT)�HAS_CPU_AFFINITY)�HAS_ENVIRON)�
HAS_IONICE)�HAS_MEMORY_MAPS)�HAS_PROC_CPU_NUM)�HAS_PROC_IO_COUNTERS)�
HAS_RLIMIT)�HAS_THREADS)�MACOS_11PLUS)�PYPY)�
PYTHON_EXE)�PsutilTestCase)�
ThreadTask)�
call_until)�copyload_shared_lib)�
create_exe)�mock)�process_namespace��
reap_children)�retry_on_failure)�sh)�skip_on_access_denied)�skip_on_not_implemented)�wait_for_pidc�V
�eZdZdZd�Zd�Zd�Zd�Zd�Ze	j
ed��d���Zd	�Z
d
�Zd�Zd�Zd
�Zd�Zd�Zd�Zd�Ze	j
ed��d���Zd�Ze	j
ed��d���Ze	j
ed��ee���d�����Ze	j
ed��e	j
ed��d�����Ze	j
ed��e	j
e d��d�����Z!e	j
e"d��d���Z#e	j
e"d��d���Z$e	j
e"d��d���Z%e	j
e"d��d ���Z&e	j
e"d��d!���Z'd"�Z(e	j
e d#��d$���Z)e	j
e*d��d%���Z+e,��e-e.���e	j
e*d��d&�������Z/e,��d'���Z0d(�Z1e	j
e2d��d)���Z3e	j
e2d��d*���Z4d+�Z5d,�Z6d-�Z7d.�Z8e	j
e9d/��d0���Z:d1�Z;e	j
e9d2��d3���Z<e	j
e=d4��e	j
e>d5��e	j
e9d/��d6�������Z?e	j
ed��d7���Z@e	j
ed��d8���ZAd9�ZBd:�ZCd;�ZDd<�ZEd=�ZFe	j
eGd��d>���ZHe	j
eGd��d?���ZIe	j
eGd��d@���ZJe	j
eKdA��e	j
eLdB��dC�����ZMe	j
eKdA��e	j
eLdB��dD�����ZNe	j
ed��dE���ZOee���e	j
ePpeQdF��dG�����ZRdH�ZSdI�ZTdJ�ZUdK�ZVe,��dL���ZWdM�ZXdN�ZYdO�ZZdP�Z[dQ�Z\dR�Z]dS�Z^dT�Z_dU�Z`dV�ZadW�Zbe	j
ed��dX���Zce	j
ed��dY���Zde	j
ed��dZ���Zed[�Zfd\�Zge	j
ehd��d]���Zie	j
ehd��e	j
ed��e	j
ejd^��d_�������Zkd`S)a�TestProcessrc�N�|j|i|��}tj|j��S�N)�spawn_testproc�psutil�Process�pid)�self�args�kwargs�sprocs    �;/usr/lib/python3/dist-packages/psutil/tests/test_process.py�spawn_psproczTestProcess.spawn_psprocNs+��#��#�T�4�V�4�4���~�e�i�(�(�(�c��tj��}|�|jt	j����|�t��5d|_ddd��dS#1swxYwYdS)N�!)r5r6�assertEqualr7�os�getpid�assertRaises�AttributeError�r8�ps  r<�test_pidzTestProcess.test_pidTs����N����������	���,�,�,�
�
�
�~�
.�
.�	�	��A�E�	�	�	�	�	�	�	�	�	�	�	�	����	�	�	�	�	�	s�A/�/A3�6A3c�:�|���}|���|���}tr!|�|t
j��n!|�|t
j��|�|��dSr3)	r=�kill�waitr
rA�signal�SIGTERM�SIGKILL�assertProcessGone�r8rG�codes   r<�	test_killzTestProcess.test_killZs���������	�������v�v�x�x���	4����T�6�>�2�2�2�2����T�F�N�?�3�3�3����q�!�!�!�!�!r>c�:�|���}|���|���}tr!|�|t
j��n!|�|t
j��|�|��dSr3)r=�	terminaterKr
rArLrMrOrPs   r<�test_terminatezTestProcess.test_terminateds���������	���
�
�
��v�v�x�x���	4����T�6�>�2�2�2�2����T�F�N�?�3�3�3����q�!�!�!�!�!r>c�R�trtjntj}|���}|�|��|���}tr|�||��n|�||��|�	|��dSr3)
rrLrNrMr=�send_signalrKr
rArO)r8�sigrGrQs    r<�test_send_signalzTestProcess.test_send_signalns��� %�9�f�n�n�6�>��������	�
�
�c�����v�v�x�x���	)����T�3�'�'�'�'����T�C�4�(�(�(����q�!�!�!�!�!r>z	not POSIXc� �tj}|���}tjdttjd�����5|�tj
|j|��ddd��n#1swxYwY|���}tjdttjd�����5|�tj
|j|��ddd��dS#1swxYwYdS)Nzpsutil.os.kill���side_effect)rLrMr=r'�patch�OSError�errno�ESRCHrDr5�
NoSuchProcessrW�EPERM�AccessDenied)r8rXrGs   r<�test_send_signal_mockedz#TestProcess.test_send_signal_mockedys����n��������
�Z�(�$+�E�K��$<�$<�>�>�>�	H�	H����f�2�A�M�3�G�G�G�	H�	H�	H�	H�	H�	H�	H�	H�	H�	H�	H����	H�	H�	H�	H�
������
�Z�(�$+�E�K��$<�$<�>�>�>�	G�	G����f�1�1�=�#�F�F�F�	G�	G�	G�	G�	G�	G�	G�	G�	G�	G�	G�	G����	G�	G�	G�	G�	G�	Gs$�'B�B�	B�'D�D�
Dc��tddg}|�|��}|���}|�|d��|�|��tddg}|�|t
j���}|���}|�|d��|�|��tddg}|�|��}|���}|�|d��|�|��tdd	g}|�|��}|���}|�|d��|�|��dS)
N�-c�passrz1 / 0)�stderr�zimport sys; sys.exit(5);�zimport os; os._exit(5);)r!r=rKrArO�
subprocess�PIPE)r8�cmdrGrQs    r<�test_wait_exitedzTestProcess.test_wait_exited�sk���4��(�����c�"�"���v�v�x�x������q�!�!�!����q�!�!�!��4��)�����c�*�/��:�:���v�v�x�x������q�!�!�!����q�!�!�!��4�!;�<�����c�"�"���v�v�x�x������q�!�!�!����q�!�!�!��4�!:�;�����c�"�"���v�v�x�x������q�!�!�!����q�!�!�!�!�!r>c�@�|���}t�r|�tj��|�tj|jd���|�tj	��|�tj|jd���|�tj
��|�|���tj
��|�|���tj
��dS|���|�tj|jd���|�
��|�tj|jd���|���|�|���tj
��|�|���tj
��dS)N���MbP?)�timeout)r=rrWrL�SIGSTOPrDr5�TimeoutExpiredrK�SIGCONTrMrA�suspend�resumerTrFs  r<�test_wait_stoppedzTestProcess.test_wait_stopped�s����������	7�
�M�M�&�.�)�)�)����f�3�Q�V�U��K�K�K�
�M�M�&�.�)�)�)����f�3�Q�V�U��K�K�K�
�M�M�&�.�)�)�)����Q�V�V�X�X����7�7�7����Q�V�V�X�X����7�7�7�7�7�
�I�I�K�K�K����f�3�Q�V�U��K�K�K�
�H�H�J�J�J����f�3�Q�V�U��K�K�K�
�K�K�M�M�M����Q�V�V�X�X�v�~�6�6�6����Q�V�V�X�X�v�~�6�6�6�6�6r>c�l�|���\}}|�tj|jd��|�tj|jd��|���|���|���}|���}tr9|�|tj	��|�|d��dS|�|tj	��|�|tj	��dS)N�{�G�z�?)
�spawn_children_pairrDr5rtrKrTrrArLrM)r8�child�
grandchild�	child_ret�grandchild_rets     r<�test_wait_non_childrenz"TestProcess.test_wait_non_children�s
��!�4�4�6�6���z����&�/���T�B�B�B����&�/���$�G�G�G�	�������������J�J�L�L�	�#���*�*���	8����Y����8�8�8�
���^�T�2�2�2�2�2����Y���7�7�7����Y���7�7�7�7�7r>c�0�|���}|���|�tj|jd��|�tj|jd��|�t|jd��dS)Nrzr���)r=�namerDr5rtrK�
ValueErrorrFs  r<�test_wait_timeoutzTestProcess.test_wait_timeout�sz��������	���������&�/����>�>�>����&�/����;�;�;����*�a�f�b�1�1�1�1�1r>c�r�|���}|�tj|jd��|���t
j��tz}t
j��|krC	|�d��}nA#tj$rYnwxYwt
j��|k�C|�d���tr"|�
|tj��n |�
|tj
��|�|��dS)Nrrr)r=rDr5rtrKrJ�timer�failrrArLrNrMrO)r8rG�stop_atrQs    r<�test_wait_timeout_nonblockingz)TestProcess.test_wait_timeout_nonblocking�s�����������&�/����;�;�;�	�������)�+�+��.���i�k�k�G�#�#�
��v�v�a�y�y�����(�
�
�
���
����	�i�k�k�G�#�#��)�)�I�&�&�&��	3����T�F�N�?�3�3�3�3����T�6�>�2�2�2����q�!�!�!�!�!s�B�B*�)B*c���tj��}|�d���|�d���td��D]I}|�d���}|�|t
��|�|d���J|�t��5|�d���ddd��dS#1swxYwYdS)Nrq)�interval�d�r�)	r5r6�cpu_percent�range�assertIsInstance�float�assertGreaterEqualrDr�)r8rG�x�percents    r<�test_cpu_percentzTestProcess.test_cpu_percent�s���N����	�
�
�u�
�%�%�%�	�
�
�u�
�%�%�%��s���	2�	2�A��m�m�T�m�2�2�G��!�!�'�5�1�1�1��#�#�G�S�1�1�1�1�
�
�
�z�
*�
*�	'�	'�
�M�M�2�M�&�&�&�	'�	'�	'�	'�	'�	'�	'�	'�	'�	'�	'�	'����	'�	'�	'�	'�	'�	's�3C�C�Cc���tjdd���5}tj�����|jsJ�	ddd��dS#1swxYwYdS)Nzpsutil.cpu_count)�return_value)r'r^r5r6r��called)r8�ms  r<�test_cpu_percent_numcpus_nonez)TestProcess.test_cpu_percent_numcpus_none�s���
�Z�*��
>�
>�
>�	�!��N���(�(�*�*�*��8�O�O�O�O�	�	�	�	�	�	�	�	�	�	�	�	����	�	�	�	�	�	s�/A�A�Ac
��tj�����}|jdks|jdks
J|���|jdks
J|���|jdks
J|���tr|jdks
J|���|j	D]7}tjdtjt||�������8dS)Nr�z%H:%M:%S)r5r6�	cpu_times�user�system�
children_user�children_systemr�iowait�_fieldsr��strftime�	localtime�getattr)r8�timesr�s   r<�test_cpu_timeszTestProcess.test_cpu_times�s����� � �*�*�,�,���
�S� � �e�l�S�&8�&8�&8�5�&8�&8�&8��#�s�*�*�*�U�*�*�*��%��,�,�,�u�,�,�,��	.��<�3�&�&�&��&�&�&��M�	L�	L�D��M�*�d�n�W�U�D�5I�5I�&J�&J�K�K�K�K�	L�	Lr>c��tj�����dd�\}}tj��dd�\}}t||g��t
||g��z
dkr|�d|�d|�����t||g��t
||g��z
dkr|�d|�d|�����dS)N�皙�����?�
expected: �	, found: )r5r6r�rBr��max�minr�)r8�	user_time�kernel_time�utime�ktimes     r<�test_cpu_times_2zTestProcess.test_cpu_times_2s���!'��!1�!1�!;�!;�!=�!=�b�q�b�!A��	�;��x�z�z�"�1�"�~���u�

��E�"�#�#�c�9�e�*<�&=�&=�=��D�D��)�)�)����	�	�J�K�K�K���e�$�%�%��[�%�,@�(A�(A�A�S�H�H��)�)�)������L�M�M�M�I�Hr>z
not supportedc�f�tj��}|���}|�|d��tj��dkr|�|d��|�|���ttj������dS�Nrrj)r5r6�cpu_numr��	cpu_countrA�assertInr�)r8rG�nums   r<�test_cpu_numzTestProcess.test_cpu_nums����N�����i�i�k�k������Q�'�'�'������"�"����S�!�$�$�$��
�
�a�i�i�k�k�5��)9�);�);�#<�#<�=�=�=�=�=r>c�Z�|���}tj��}|���}t||z
��}|dkr|�d|�d|�d|�����tjdtj|�������dS)Nr�r�r�z, difference: z%Y %m %d %H:%M:%S)r=r��create_time�absr�r�r�)r8rG�nowr��
differences     r<�test_create_timezTestProcess.test_create_times����������i�k�k���m�m�o�o��
��s�*�+�+�
���>�>��)�)�)�"�s�s�K�K�K���=�>�>�
>�	
�
�)�4�>�!�-�-�/�/�+J�+J�K�K�K�K�Kr>z
POSIX onlyc���tj�����}|�Dtj�t
d����}|�||��dSdS)N�tty)r5r6�terminalrB�path�realpathr,rA)r8r�r�s   r<�
test_terminalzTestProcess.test_terminal's`���>�#�#�,�,�.�.�����'�"�"�2�e�9�9�-�-�C����X�s�+�+�+�+�+� �r>)�only_ifc�R�tj��}|���}ttd��5}|���ddd��n#1swxYwY|���}ts�ts�|�|j	|j	��|�
|j|j��tr@|�|j
|j
��|�
|j|j��n@|�|j|j��|�|j|j��|���}t|���d��5}t&r'|�t+ddzd����n|�ddz��ddd��n#1swxYwY|���}|�|j|j��|�|j|j��|�|j	|j	��|�|j|j��tr@|�|j|j��|�|j
|j
��t-t/|����D]H}tr|dkr�|�||d��|�||d���IdS)N�rb�wbr�i@B�asciir�r)r5r6�io_counters�openr!�readrr�
assertGreater�
read_countrA�write_countr�
read_chars�write_charsr��
read_bytes�write_bytes�
get_testfnr�write�bytesr��len)r8rG�io1�f�io2�is      r<�test_io_counterszTestProcess.test_io_counters.s2��
�N�����m�m�o�o��
�*�d�
#�
#�	�q�
�F�F�H�H�H�	�	�	�	�	�	�	�	�	�	�	����	�	�	�	��m�m�o�o���	F�3�	F����s�~�s�~�>�>�>����S�_�c�o�>�>�>��
C��"�"�3�>�3�>�B�B�B�� � ���#�/�B�B�B���#�#�C�N�C�N�C�C�C��#�#�C�O�S�_�E�E�E��m�m�o�o��
�$�/�/�#�#�T�
*�
*�	'�a��
'�����c�G�m�W�5�5�6�6�6�6�����g�
�&�&�&�		'�	'�	'�	'�	'�	'�	'�	'�	'�	'�	'����	'�	'�	'�	'�
�m�m�o�o���������A�A�A��������A�A�A��������?�?�?��������?�?�?��	D����s����@�@�@��#�#�C�N�C�N�C�C�C��s�3�x�x���	/�	/�A��
�q�A�v�v���#�#�C��F�A�.�.�.��#�#�C��F�A�.�.�.�.�	/�	/s$�A�A"�%A"�	AG�G �#G z
linux onlyc��tj��}ts8|�|���dtj��|�tjd��|�tjd��|�tjd��|�tjd��|���}	|�tj��|�t|�����tjdf��|�
t��5|�tjd���ddd��n#1swxYwY|�tj��|�t|�����tjdf��|�tjd���|�t|�����tjdf��|�
t��5|�tjd���ddd��n#1swxYwY	|�tjd���n#tj$rYnwxYw|�
td|jtjd��|�
td|jtjd��|�
td	|jd���|\}}|tjkrd}|�||��dS#|\}}|tjkrd}|�||��wxYw)
Nrrjr�����value�zioclass accepts no valuez$'ioclass' argument must be specified)r5r6rrA�ionice�IOPRIO_CLASS_NONE�IOPRIO_CLASS_RT�IOPRIO_CLASS_BE�IOPRIO_CLASS_IDLE�tuplerDr�rd�assertRaisesRegex)r8rG�init�ioclassr�s     r<�test_ionice_linuxzTestProcess.test_ionice_linuxYs���
�N�����	F����Q�X�X�Z�Z��]�F�,D�E�E�E�����1�1�5�5�5�����/��3�3�3�����/��3�3�3�����1�1�5�5�5��x�x�z�z��	%�
�H�H�V�-�.�.�.����U�1�8�8�:�:�.�.��1I�1�0M�N�N�N��"�"�:�.�.�
<�
<�����1���;�;�;�
<�
<�
<�
<�
<�
<�
<�
<�
<�
<�
<����
<�
<�
<�
<�
�H�H�V�+�,�,�,����U�1�8�8�:�:�.�.��1G��0K�L�L�L�
�H�H�V�+�1�H�5�5�5����U�1�8�8�:�:�.�.��1G��0K�L�L�L��"�"�:�.�.�
:�
:�����/�q��9�9�9�
:�
:�
:�
:�
:�
:�
:�
:�
:�
:�
:����
:�
:�
:�
:�
�����/�q��9�9�9�9���&�
�
�
���
����
�"�"��6���&�2�A�
7�
7�
7�
�"�"��6���&�2�A�
7�
7�
7�
�"�"��B����
#�
#�
#�
#�"�N�G�U��&�2�2�2���
�H�H�W�e�$�$�$�$�$��"�N�G�U��&�2�2�2���
�H�H�W�e�$�$�$�$���s{�(A:N�""F�N�F�N�F�CN�7"J%�N�%J)�)N�,J)�-N�1!K�N�K%�"N�$K%�%BN�/Oz!not supported on this win versionc���tj��}ts2|�|���tj��|���}	|�tj��|�|���tj��|�tj��|�|���tj��	|�tj��|�|���tj��n#tj	$rYnwxYw|�
td|jtjd���|�
td|jtjdz��|�|��dS#|�|��wxYw)Nz&value argument not accepted on Windowsrjr�zis not a valid priority)
r5r6rrAr��
IOPRIO_NORMAL�IOPRIO_VERYLOW�
IOPRIO_LOW�IOPRIO_HIGHrdr��	TypeErrorr�)r8rGr�s   r<�test_ionice_winzTestProcess.test_ionice_win�s���
�N�����	?����Q�X�X�Z�Z��)=�>�>�>��x�x�z�z��	�
�H�H�V�*�+�+�+����Q�X�X�Z�Z��)>�?�?�?�
�H�H�V�&�'�'�'����Q�X�X�Z�Z��):�;�;�;�
A�����+�,�,�,�� � ������V�-?�@�@�@�@���&�
�
�
���
����

�"�"��C���&�.�a�
#�
9�
9�
9�
�"�"��5���&�,�q�0�
2�
2�
2�
�H�H�T�N�N�N�N�N��A�H�H�T�N�N�N�N���s2�"B"G �E�$3G �E)�&G �(E)�)A G � G7c���ddl}tjtj����}d�tt��D��}|s
J|���|D�]}t
t|��}|�|d��|t|��vri|�|t
||����tr�k|�|�
|��|�|������|�
|��}|�t|��d��|�|dd��|�|dd����dS)Nrc�<�g|]}|�d���|��S)�RLIMIT��
startswith��.0r�s  r<�
<listcomp>z/TestProcess.test_rlimit_get.<locals>.<listcomp>�s)��B�B�B�q�1�<�<��+A�+A�B��B�B�Br>r�r�rj)
�resourcer5r6rBrC�dirr�r�rAr �rlimit�	getrlimitr�)r8r�rG�namesr�r��rets       r<�test_rlimit_getzTestProcess.test_rlimit_get�s\�������N�2�9�;�;�'�'��B�B�C��K�K�B�B�B�����e�����	4�	4�D��F�D�)�)�E��#�#�E�1�-�-�-��s�8�}�}�$�$�� � ����$�(?�(?�@�@�@����� � ����%���(�2D�2D�U�2K�2K�L�L�L�L��h�h�u�o�o��� � ��S���1�-�-�-��'�'��A���3�3�3��'�'��A���3�3�3�3�	4�	4r>c�R�|���}|�tjd��|�|�tj��d��t
re|�td��5tj�	d���d��ddd��n#1swxYwY|�
t��5|�tjd��ddd��dS#1swxYwYdS)N)rkrkzcan't use prlimitr)rkrkrk)r=rr5�
RLIMIT_NOFILErArr�r��_psplatformr6rDrFs  r<�test_rlimit_setzTestProcess.test_rlimit_set�sy��������	����%�v�.�.�.�������&�"6�7�7��@�@�@��	8��'�'�
�4G�H�H�
8�
8��"�*�*�1�-�-�4�4�Q�7�7�7�
8�
8�
8�
8�
8�
8�
8�
8�
8�
8�
8����
8�
8�
8�
8�
�
�
�z�
*�
*�	6�	6�
�H�H�V�)�9�5�5�5�	6�	6�	6�	6�	6�	6�	6�	6�	6�	6�	6�	6����	6�	6�	6�	6�	6�	6s$�
3C	�	C
�C
�.!D�D �#D c��tj��}|���}|�tj��\}}	|�tjd|f��t|d��5}|�d��ddd��n#1swxYwY|�t��5}t|d��5}|�d��ddd��n#1swxYwYddd��n#1swxYwY|�	tr|jjn|jdtj
��|�tj||f��|�	|�tj��||f��dS#|�tj||f��|�	|�tj��||f��wxYw)N�r�sXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXsXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXr)r5r6r�r�RLIMIT_FSIZEr�r�rD�IOErrorrAr�	exceptionr`�EFBIG)r8rG�testfn�soft�hardr��excs       r<�test_rlimitzTestProcess.test_rlimit�sw���N�������"�"���X�X�f�1�2�2�
��d�
	J�
�H�H�V�(�4��,�7�7�7��f�d�#�#�
%�q�����$�$�$�
%�
%�
%�
%�
%�
%�
%�
%�
%�
%�
%����
%�
%�
%�
%��"�"�7�+�+�
)�s��&�$�'�'�)�1��G�G�K�(�(�(�)�)�)�)�)�)�)�)�)�)�)����)�)�)�)�
)�
)�
)�
)�
)�
)�
)�
)�
)�
)�
)����
)�
)�
)�
)�
���C�M�S�]�0�0�S�]�1�=M�"�[�
*�
*�
*�
�H�H�V�(�4��,�7�7�7����Q�X�X�f�&9�:�:�T�4�L�I�I�I�I�I��
�H�H�V�(�4��,�7�7�7����Q�X�X�f�&9�:�:�T�4�L�I�I�I�I���sz�2F0�=B�F0�B#�#F0�&B#�'F0�D�C7�+D�7C;	�;D�>C;	�?D�F0�D�F0�D�AF0�0AH	c��tj��}|�tj��\}}	|�tjd|f��|�tjtj|f��t|���d��5}|�d��ddd��n#1swxYwY|�tj||f��|�|�tj��||f��dS#|�tj||f��|�|�tj��||f��wxYw)Nrr�sXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX)	r5r6rr�
RLIM_INFINITYr�r�r�rA)r8rGrrr�s     r<�test_rlimit_infinityz TestProcess.test_rlimit_infinity�s���
�N�����X�X�f�1�2�2�
��d�	J�
�H�H�V�(�4��,�7�7�7�
�H�H�V�(�6�+?��*F�G�G�G��d�o�o�'�'��.�.�
%�!�����$�$�$�
%�
%�
%�
%�
%�
%�
%�
%�
%�
%�
%����
%�
%�
%�
%�
�H�H�V�(�4��,�7�7�7����Q�X�X�f�&9�:�:�T�4�L�I�I�I�I�I��
�H�H�V�(�4��,�7�7�7����Q�X�X�f�&9�:�:�T�4�L�I�I�I�I���s1�A0D-�'C	�=D-�	C
�
D-�C
�D-�-AFc���tj��}|�tj��\}}|�tj|��|�tj||f��dSr3)r5r6rrrAr)r8rGrrs    r<�test_rlimit_infinity_valuez&TestProcess.test_rlimit_infinity_value�sc��
�N�����X�X�f�1�2�2�
��d�����-�t�4�4�4�	����$�t�T�l�3�3�3�3�3r>c��tj��}tr=	|���}n;#tj$rtjd���wxYw|���}t��5|���}|�||dz��ddd��dS#1swxYwYdS)N�$on OpenBSD this requires root accessrj)	r5r6r	�num_threadsrd�unittest�SkipTestr#rA)r8rG�step1�step2s    r<�test_num_threadszTestProcess.test_num_threads�s��
�N�����	$�
P��
�
�������&�
P�
P�
P��'�(N�O�O�O�
P�����M�M�O�O�E�
�\�\�	/�	/��M�M�O�O�E����U�E�A�I�.�.�.�	/�	/�	/�	/�	/�	/�	/�	/�	/�	/�	/�	/����	/�	/�	/�	/�	/�	/s�1�$A�:.B5�5B9�<B9zWINDOWS onlyc�|�tj��}|�|���d��dS�Nr)r5r6r��num_handlesrFs  r<�test_num_handleszTestProcess.test_num_handless5��
�N�������1�=�=�?�?�A�.�.�.�.�.r>c��tj��}tr=	|���}n;#tj$rtjd���wxYw|���}t��5|���}|�t|��t|��dz��|d}|�|j
|d��|�|j|d��|�|j|d��ddd��dS#1swxYwYdS)Nrrjrr�)
r5r6r	�threadsrdrrr#rAr��idr��system_time)r8rGrr �athreads     r<�test_threadszTestProcess.test_threadsso���N�����	 �
P��	�	�������&�
P�
P�
P��'�(N�O�O�O�
P�����I�I�K�K�E�
�\�\�	>�	>��I�I�K�K�E����S��Z�Z��U���a��8�8�8��A�h�G����W�Z����4�4�4����W�.���
�;�;�;����W�0�'�!�*�=�=�=�	>�	>�	>�	>�	>�	>�	>�	>�	>�	>�	>�	>����	>�	>�	>�	>�	>�	>s�1�$A�:B3D:�:D>�D>c��|���}tr=	|���n'#tj$rtjd���wxYw|�|���j	td�|���D����d���|�|���jtd�|���D����d���dS)Nrc��g|]	}|j��
S�)r�r�s  r<r�z.TestProcess.test_threads_2.<locals>.<listcomp>-s��2�2�2����2�2�2r>r�)�deltac��g|]	}|j��
Sr.)r)r�s  r<r�z.TestProcess.test_threads_2.<locals>.<listcomp>0s��4�4�4�1���4�4�4r>)r=r	r'r5rdrr�assertAlmostEqualr�r��sumr�rFs  r<�test_threads_2zTestProcess.test_threads_2 s��
�������	<�
<��	�	�������&�
<�
<�
<��'�:�<�<�<�
<����	
���
�K�K�M�M���2�2�a�i�i�k�k�2�2�2�3�3�3�	�	@�	@�	@�	
���
�K�K�M�M� ��4�4��	�	���4�4�4�5�5�S�	�	B�	B�	B�	B�	Bs	�2�$Ac��tj��}|���dd�\}}|���}|�|d��|�|d��dgdz}|���dd�\}}|���}|�||��|�||��|�||��~trT|���}	|�|	j|	j	��|�|	j
|	j��|���}	|	jD]&}
|�t|	|
��d���'dS)Nr�ri`�)r5r6�memory_info�memory_percentr�r�r
rA�rss�wset�vms�pagefiler�r�)r8rG�rss1�vms1�percent1�memarr�rss2�vms2�percent2�memr�s           r<�test_memory_infozTestProcess.test_memory_info2s|���N�����]�]�_�_�R�a�R�(�
��d��#�#�%�%�����4��#�#�#����4��#�#�#���'�!���]�]�_�_�R�a�R�(�
��d��#�#�%�%��	
���4��&�&�&�����d�+�+�+����8�X�.�.�.���	4��-�-�/�/�C����S�W�c�h�/�/�/����S�W�c�l�3�3�3��m�m�o�o���K�	;�	;�D��#�#�G�C��$6�$6��:�:�:�:�	;�	;r>c�*�tj��}tj��j}|���}|jD]\}t
||��}|�|d||f���|dkrtstr�A|�
|||||f����]tststr|�|j
d��tr8|�|jd��|�|jd��dSdS)Nr)�msgr9)r5r6�virtual_memory�total�memory_full_infor�r�r�r
r�assertLessEqualr
r�uss�pss�swap)r8rGrGrBr�r�s      r<�test_memory_full_infoz!TestProcess.test_memory_full_infoQs!���N�����%�'�'�-��� � �"�"���K�	I�	I�D��C��&�&�E��#�#�E�1�4��-�#�@�@�@��u�}�}��}��}��� � ���D�%��3G� �H�H�H�H��	0�G�	0�u�	0��#�#�C�G�Q�/�/�/��	1��#�#�C�G�Q�/�/�/��#�#�C�H�a�0�0�0�0�0�	1�	1r>c��tj��}|���}d�|D��}|�t	|��t	t|������|�d���}|D�]�}|j�d���sotj�	|j��sJ|j���tr�	tj�|j��s3tj�|j��sJ|j�����#t$rTts�td��5}|���}ddd��n#1swxYwYd|jz|vr�Y��wxYwdtj�|j��vrU	tj|j��}t%j|j��sJ|j�����|#t*$rY���wxYw���|D]f}|jD]\}	t/||	��}
|	dkr�|	d	vr
|
s
J|
����*|�|
t2t4f��|
d
ks
J|
����]�gdS)Nc��g|]}|��Sr.r.r�s  r<r�z0TestProcess.test_memory_maps.<locals>.<listcomp>es��!�!�!�q��!�!�!r>F)�grouped�[z/proc/self/smapsz%s (deleted)�64r�)�addr�permsr)r5r6�memory_mapsrAr��setr�r�rB�isabsr�exists�islink�AssertionErrorrrr��basename�stat�S_ISREG�st_moderr�r�r��intr)r8rG�maps�paths�ext_maps�ntr��data�st�fnamer�s           r<�test_memory_mapszTestProcess.test_memory_mapsas����N�����}�}����!�!�D�!�!�!������U���S��U���_�_�5�5�5��=�=��=�/�/���	E�	E�B��7�%�%�c�*�*�
E��w�}�}�R�W�-�-�6�6�r�w�6�6�6��E�&�!�w�~�~�b�g�6�6�=��G�N�N�2�7�3�3�=�=�57�W�=�=�=���)�&�&�&�$�&�!�"+�+=�!>�!>�0�!�'(�v�v�x�x��0�0�0�0�0�0�0�0�0�0�0����0�0�0�0�-���7�t�C�C� %� D�C�&�����2�7�#3�#3�B�G�#<�#<�<�<�E�!#����!1�!1�B�$(�<��
�#;�#;�D�D�R�W�D�D�D�D�� 1�!�!�!� �D�!������		-�		-�B���
-�
-����E�*�*���F�?�?���/�/�/� �'�'�%�'�'�'�'��)�)�%�#�t��=�=�=� �A�:�:�:�u�:�:�:�:�
-�		-�		-sI�"AD:�:!F�E<�0F�<F�F�F�F�F�H�
H�Hc���tj��}t��5}d���fd�|���D��}|��|��|��ddd��dS#1swxYwYdS)Nc�z�tj�tj�|����Sr3)rBr�r��normcase)rGs r<�normpathz8TestProcess.test_memory_maps_lists_lib.<locals>.normpath�s(���w�'�'���(8�(8��(;�(;�<�<�<r>c�0��g|]}�|j����Sr.)r�)r�r�rks  �r<r�z:TestProcess.test_memory_maps_lists_lib.<locals>.<listcomp>�s5���2�2�2��!����(�(�2�2�2r>)r5r6r%rUr�)r8rGr��libpathsrks    @r<�test_memory_maps_lists_libz&TestProcess.test_memory_maps_lists_lib�s����
�N����
 �
"�
"�	4�d�
=�
=�
=�2�2�2�2�!"�����2�2�2�H��M�M�(�(�4�.�.�(�3�3�3�	4�	4�	4�	4�	4�	4�	4�	4�	4�	4�	4�	4����	4�	4�	4�	4�	4�	4s�AA3�3A7�:A7c���tj��}|���|�t|jd���t
ststr|�d���dSdS)Nz?!?)�memtyperJ)r5r6r6rDr�rrr
rFs  r<�test_memory_percentzTestProcess.test_memory_percent�s|���N����	���������*�a�&6���F�F�F��	,�E�	,�W�	,�
���U��+�+�+�+�+�	,�	,r>c�.�|���}|���sJ�|���sJ�|���|���|���rJ�|���rJ�dSr3)r=�
is_runningrJrKrFs  r<�test_is_runningzTestProcess.test_is_running�s����������|�|�~�~�����|�|�~�~����	������	�������<�<�>�>�!�!�!��<�<�>�>�!�!�!�!�!r>c���|���}|���}	|�|t��n�#t$r�t
rdt
|��t
t��kr?tjj	}|�||��|t����nvtjd�dtjd��}	|�|�|d��tj|d����n#t$rYnwxYwYnwxYwt|ddg��}|�|d��dS)Nr�.rjr[rgzimport os; print('hey')�hey)r=�exerAr!rZr
r�rBr�rj�sys�version_info�replacer,)r8rGrxrj�ver�outs      r<�test_exezTestProcess.test_exe�sl���������e�e�g�g��	����S�*�-�-�-�-���	�	�	��
�3�s�8�8�s�:���6�6��7�+��� � ���#������0D�0D�E�E�E�E�"%�!1�!�!4�!4�!4�c�6F�q�6I�6I�J����$�$�S�[�[��b�%9�%9�%/�%7��R�%@�%@�B�B�B�B��%�����D�������!	����(�#�t�6�7�8�8������e�$�$�$�$�$s6�A�BD4�#=D!� D4�!
D.�+D4�-D.�.D4�3D4c��tddg}|�|��}tststr5|�|���dt��dStr�tr�|���d}|tkr`|�d�	|���dd���d�	|dd�����dS|�d�	|�����d�	|����dS)Nrgzimport time; time.sleep(60)r� rj)
r!r=rr	rrA�cmdlinerr�join)r8r�rG�pyexes    r<�test_cmdlinezTestProcess.test_cmdline�s���t�%B�C�����g�&�&���		G�W�		G��		G����Q�Y�Y�[�[��^�Z�8�8�8�8�8��
��
��	�	���A����J�&�&��$�$�S�X�X�a�i�i�k�k�!�"�"�o�%>�%>�%(�X�X�g�a�b�b�k�%:�%:�<�<�<��F����S�X�X�a�i�i�k�k�2�2�C�H�H�W�4E�4E�F�F�F�F�Fr>zbroken on PYPYc���|���}t|��|gdgdzz}|�|��}|�|���|��dS)N�
0123456789�)r�r&r=rAr�)r8rr�rGs    r<�test_long_cmdlinezTestProcess.test_long_cmdline�si�����"�"���6�����(�|�n�r�1�2�����g�&�&����������g�.�.�.�.�.r>c�x�|�t��}|������}tj�tj�tj	�������}|�
|��sJ||f���dSr3)r=r!r��lowerrBr�r[r�ry�
executabler�)r8rGr�r�s    r<�	test_namezTestProcess.test_name�s������j�)�)���v�v�x�x�~�~������ � ���!1�!1�#�.�!A�!A�B�B�H�H�J�J������%�%�4�4��t�}�4�4�4�4�4r>zunreliable on PYPYc��|�d���}t|��|�|��}|�|���t
j�|����dS)N�01234567890123456789��suffix)r�r&r=rAr�rBr�r[)r8rrGs   r<�test_long_namezTestProcess.test_long_name�sk�����(8��9�9���6�������f�%�%����������2�7�#3�#3�F�#;�#;�<�<�<�<�<r>zbroken on SUNOSz
broken on AIXc�*�|�d���}t|��|ddddddg}|�|��}|�|���|��|�|���tj�|����|�tj�	|�
����tj�	|����dS)Nz	foo bar )r�rgz9import time; [time.sleep(0.01) for x in range(3000)];arg1�arg2r[�arg3)r�r&r=rAr�r�rBr�r[rjrx)r8�
funky_pathr�rGs    r<�test_prog_w_funky_namez"TestProcess.test_prog_w_funky_name�s����_�_�K�_�8�8�
��:�����t��!�2�v�r�3��
���g�&�&����������g�.�.�.���������2�7�#3�#3�J�#?�#?�@�@�@������)�)�!�%�%�'�'�2�2���)�)�*�5�5�	7�	7�	7�	7�	7r>c��tj��}|���\}}}|�|t	j����|�|t	j����ttd��r;|�t	j��|�����dSdS�N�	getresuid)	r5r6�uidsrArB�getuid�geteuid�hasattrr��r8rG�real�	effective�saveds     r<�	test_uidszTestProcess.test_uids����N����!"�������i������r�y�{�{�+�+�+�����B�J�L�L�1�1�1��2�{�#�#�	7����R�\�^�^�Q�V�V�X�X�6�6�6�6�6�	7�	7r>c��tj��}|���\}}}|�|t	j����|�|t	j����ttd��r;|�t	j��|�����dSdSr�)	r5r6�gidsrArB�getgid�getegidr��	getresgidr�s     r<�	test_gidszTestProcess.test_gidsr�r>c�(�tj��}|�t|jd��|���}	t
r�d}tjtjtjtj	tj
tjfD]�}|�|���5	|�|��|���}tr!||ks|�|}|�||��n,|�||��n#tj$rYnwxYwddd��n#1swxYwY���nn	t!t"d��rV|�t#jt"jt#j����|�����|�d��|�|���d��t!t"d��rV|�t#jt"jt#j����|�����t*s=|�d��|�|���d��n#tj$rYnwxYw	|�|��dS#tj$rYdSwxYw#	|�|��w#tj$rYwwxYwxYw)N�str)�prio�getpriorityrjr)r5r6rDr��nicer
�IDLE_PRIORITY_CLASS�BELOW_NORMAL_PRIORITY_CLASS�NORMAL_PRIORITY_CLASS�ABOVE_NORMAL_PRIORITY_CLASS�HIGH_PRIORITY_CLASS�REALTIME_PRIORITY_CLASS�subTestrrArdr�rBr��PRIO_PROCESSrCr)r8rGr��highest_prior��new_prios      r<�	test_nicezTestProcess.test_nices>���N�������)�Q�V�U�3�3�3��v�v�x�x��0	��*
� $��#�7�#�?�#�9�#�?�#�7�#�;�=�A�A�D����4��0�0�A�A�A��F�F�4�L�L�L�()�v�v�x�x�H�)�A�#+�t�#3�#3�|�7K�37�L� $� 0� 0��<� H� H� H� H� $� 0� 0��4� @� @� @� @�� &�2�!�!�!� �D�!����A�A�A�A�A�A�A�A�A�A�A����A�A�A�A��
A�(��r�=�1�1�&��(�(��N�2�?�B�I�K�K�H�H��F�F�H�H�&�&�&��F�F�1�I�I�I��$�$�Q�V�V�X�X�q�1�1�1��r�=�1�1�&��(�(��N�2�?�B�I�K�K�H�H��F�F�H�H�&�&�&�
!�6����q�	�	�	��(�(������1�5�5�5����*�����D�����
����t��������&�
�
�
����
�����
����t�������&�
�
�
���
������s��
A%K$�/D:�1D�AD:�D+�(D:�*D+�+D:�.K$�:D>	�>K$�D>	�K$�	EJ!� K$�!J3�0K$�2J3�3K$�7K�K!� K!�$L�&K<�;L�<L�L�
L�Lc��tj��}|�|���tj��dSr3)r5r6rA�status�STATUS_RUNNINGrFs  r<�test_statuszTestProcess.test_statusSs6���N������������V�%:�;�;�;�;�;r>c��|���}|���}tr�|�d��\}}t	j��}|�d��rtjd���|�	||��dtjvr(|�	|tjd��dSdS|�	|t	j����dS)N�\�$zrunning as service account�
USERDOMAIN)r=�usernamer
�split�getpass�getuser�endswithrrrArB�environ)r8rGr��domain�getpass_users     r<�
test_usernamezTestProcess.test_usernameWs����������:�:�<�<���	:�'�~�~�d�3�3��F�H�"�?�,�,�L��$�$�S�)�)�
F��'�(D�E�E�E����X�|�4�4�4��r�z�)�)�� � ����L�)A�B�B�B�B�B�*�)�
���X�w��'8�'8�9�9�9�9�9r>c��|���}|�|���tj����dSr3)r=rA�cwdrB�getcwdrFs  r<�test_cwdzTestProcess.test_cwdhs=����������������"�)�+�+�.�.�.�.�.r>c�n�tddg}|�|��}t|jd��dS)Nrgz/import os, time; os.chdir('..'); time.sleep(60)z#ret == os.path.dirname(os.getcwd()))r!r=r$r�)r8rnrGs   r<�
test_cwd_2zTestProcess.test_cwd_2ls>���4�@�B�����c�"�"���1�5�?�@�@�@�@�@r>c	���tj��}|���}|s
J|���|�|j|��t	t
d��r:|�|ttj|j	������|�t|��tt|������ttttj
d���������}|D]�}|�|g��|�|���|g��t	t
d��rL|�|���ttj|j	������t	|d��r@|�|���d|�������|�g��tr@|�|���|j�����n(|�|���|��t	t
d��rL|�|���ttj|j	������|�t&|jd��|�|��|�t|����|�t)|����dS)N�sched_getaffinityT��percpu�num_cpurrj)r5r6�cpu_affinity�
addCleanupr�rBrA�listr�r7r�rVr�r�r�r�_proc�_get_eligible_cpusrDr�r�)r8rG�initial�all_cpus�ns     r<�test_cpu_affinityzTestProcess.test_cpu_affinityrs����N�����.�.�"�"���������������0�0�0��2�*�+�+�	I����W�d�2�+?���+F�+F�&G�&G�H�H�H�����W���s�3�w�<�<�'8�'8�9�9�9���c�&�"4�D�"A�"A�"A�B�B�C�C�D�D���	C�	C�A�
�N�N�A�3�������Q�^�^�-�-��s�3�3�3��r�.�/�/�
D�� � ����!1�!1�!%�b�&:�1�5�&A�&A�!B�!B�D�D�D��q�)�$�$�
C�� � ����!1�!1�!�!4�a�i�i�k�k�B�B�B��
	
���r�����	9����Q�^�^�-�-�q�w�/I�/I�/K�/K�L�L�L�L����Q�^�^�-�-�x�8�8�8��2�*�+�+�	@����Q�^�^�-�-�!�"�"6�q�u�"=�"=�>�>�
@�
@�
@�	
���)�Q�^�Q�7�7�7�	���w����	���s�8�}�}�%�%�%�	���u�X���'�'�'�'�'r>c��|���}ttjd�����dzg}|�t
|j|��|�t
|jtdd����|�t|jddg��|�t
|jddg��dS)	NTr��
i'i�*r�1r�)	r=r�r5r�rDr�r�r�r�)r8rG�invalid_cpus   r<�test_cpu_affinity_errsz"TestProcess.test_cpu_affinity_errs�s����������6�+�4�8�8�8�9�9�B�>�?�����*�a�n�k�B�B�B����*�a�n�e�E�5�6I�6I�J�J�J����)�Q�^�a��X�>�>�>����*�a�n�q�"�g�>�>�>�>�>r>c�V�tj��}|���}|s
J|���|�|j|��t	|��dkr
|dd�}g}tdt	|��dz��D]>}t
j||��D]&}|r"|�t|�����'�?|D]Y}|�|��|�
t|�����t|�����ZdS)N�rrj)r5r6r�r�r�r��	itertools�combinations�appendr�rA�sorted)r8rGr��combosr��subset�combos       r<�"test_cpu_affinity_all_combinationsz.TestProcess.test_cpu_affinity_all_combinations�s5���N�����.�.�"�"���������������0�0�0��w�<�<�"����c�r�c�l�G����q�#�g�,�,��*�+�+�	0�	0�A�#�0��!�<�<�
0�
0���0��M�M�$�v�,�,�/�/�/��
0��	F�	F�E�
�N�N�5�!�!�!����V�A�N�N�$4�$4�5�5�v�e�}�}�E�E�E�E�	F�	Fr>z
broken on BSDzunreliable on APPVEYORc�v�tj��}|���}|���}|�||��t|d��5}|�d��|���t|jdt|��z��}d�|D��}|�
tj�
|��|��tr+|D](}|j|kr|�|jd���)ddd��n#1swxYwY|D]0}tj�|j��s
J|����1d|z}|�t&d|g��}t)d��D]:}d	�|���D��}||vrnHt+jd
���;|�
tj�
|��|��|D]+}tj�|��s
J|����,dS)Nr�sxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxzlen(ret) != %ic�V�g|]&}tj�|j����'Sr.�rBr�rjr�s  r<r�z/TestProcess.test_open_files.<locals>.<listcomp>�s*��A�A�A�a���)�)�!�&�1�1�A�A�Ar>rz2import time; f = open(r'%s', 'r'); time.sleep(60);rgr�c�V�g|]&}tj�|j����'Sr.r�r�s  r<r�z/TestProcess.test_open_files.<locals>.<listcomp>�s*��J�J�J�a���)�)�!�&�1�1�J�J�Jr>rz)r5r6r��
open_files�assertNotInr�r��flushr$r�r�rBr�rjrrA�position�isfiler=r!r�r��sleep)	r8rGr�filesr��	filenames�filer�r�s	         r<�test_open_fileszTestProcess.test_open_files�se��
�N�������"�"�������������'�'�'�
�&�$�
�
�
	>�1�
�G�G�K� � � �
�G�G�I�I�I��q�|�-=��E�
�
�-J�K�K�E�A�A�5�A�A�A�I��M�M�"�'�*�*�6�2�2�I�>�>�>��
>�!�>�>�D��y�F�*�*��(�(����=�=�=��
	>�
	>�
	>�
	>�
	>�
	>�
	>�
	>�
	>�
	>�
	>����
	>�
	>�
	>�
	>��	3�	3�D��7�>�>�$�)�,�,�2�2�d�2�2�2�2�G��O�����z�4��9�:�:���s���	?�	?�A�J�J�1�<�<�>�>�J�J�J�I���"�"����J�s�O�O�O�O��M�M�"�'�*�*�6�2�2�I�>�>�>��	.�	.�D��7�>�>�$�'�'�-�-��-�-�-�-�	.�	.s�"CD.�.D2�5D2c��tj��}tjj}|���}t
|d��5}|���D]C}||j��||j��ks|j	|�
��krn8�D|�dt|�����z���|�
||j��||j����tr|�
|j	d��n-|�
|j	|�
����|���d}|�
|d|j��|�
|d|j	��|�|j|�����ddd��dS#1swxYwYdS)N�wzno file found; files=%sr�rrj)r5r6rBr�rjr�r�r�r��fd�filenor��reprrAr
r�)r8rGrjr�fileobjr��ntuples       r<�test_open_files_2zTestProcess.test_open_files_2�s��

�N�����7�#�����"�"��
�&�#�
�
�	;�'������
7�
7���8�D�I�&�&�(�(�7�<�*@�*@�@�@���7�>�>�#3�#3�3�3��E�4��i�i� 9� $�Q�\�\�^�^� 4� 4�!6�7�7�7����X�X�d�i�0�0�(�(�7�<�2H�2H�I�I�I��
<�� � ���"�-�-�-�-�� � ���'�.�.�*:�*:�;�;�;��\�\�^�^�A�&�F����V�A�Y���4�4�4����V�A�Y��	�2�2�2����W�\�1�<�<�>�>�:�:�:�%	;�	;�	;�	;�	;�	;�	;�	;�	;�	;�	;�	;����	;�	;�	;�	;�	;�	;s�	FG1�1G5�8G5c�v�tj��}|���}|���}t	|d��}|�|j��|�|���|dz��tj��}|�|j��|�|���|dz��|���|���|�|���|��dS)Nr�rjr�)	r5r6r��num_fdsr�r��closerA�socket)r8rGr�startr��socks      r<�test_num_fdszTestProcess.test_num_fds�s����N�������"�"���	�	�����F�C� � ������
�#�#�#���������e�a�i�0�0�0��}��������
�#�#�#���������e�a�i�0�0�0��
�
�����
�
������������e�,�,�,�,�,r>z not reliable on OPENBSD & NETBSDc��tj��}t|�����}t	d��D],}t|�����}||krdS�-|�d���)Ni �z7num ctx switches still the same after 50.000 iterations)r5r6r2�num_ctx_switchesr�r�)r8rG�beforer��afters     r<�test_num_ctx_switchesz!TestProcess.test_num_ctx_switchess���
�N�����Q�'�'�)�)�*�*���v���	�	�A���*�*�,�,�-�-�E��v�~�~������i�i�E�G�G�	Gr>c�t�tj��}ttd��r9|�|���tj����|���}|�|���tj����trdSdS)N�getppid)
r5r6r�rBrA�ppidrr=rCrrFs  r<�	test_ppidzTestProcess.test_ppids����N�����2�y�!�!�	5����Q�V�V�X�X�r�z�|�|�4�4�4���������������2�9�;�;�/�/�/��	�
�F�		�	r>c�N�|���}|�|���jt	j����t
j��d}|�t
j	|�������dSr#)
r=rA�parentr7rBrCr5�pids�assertIsNoner6)r8rG�
lowest_pids   r<�test_parentzTestProcess.test_parent sy���������������������5�5�5��[�]�]�1�%�
����&�.��4�4�;�;�=�=�>�>�>�>�>r>c��tj��}|���\}}|�|���|��|�|���|��dSr3)r5r6r{rAr�r8rr|r}s    r<�test_parent_multizTestProcess.test_parent_multi'sk����!�!�� �4�4�6�6���z�����*�*�,�,�e�4�4�4����������0�0�0�0�0r>c��|���}tjdtjdd�����5|�|�����ddd��dS#1swxYwYdS)N�psutil.Processr�foor\)r=r'r^r5rbrrrFs  r<�test_parent_disappearedz#TestProcess.test_parent_disappeared-s���������
�Z�(�$*�$8��E�$B�$B�D�D�D�	*�	*����a�h�h�j�j�)�)�)�	*�	*�	*�	*�	*�	*�	*�	*�	*�	*�	*�	*����	*�	*�	*�	*�	*�	*s�(A3�3A7�:A7c��tj��}|���sJ�|���\}}|�|���d|��|�|���d|��|�|���d|��dSr�)r5r6�parentsr{rArs    r<�test_parentszTestProcess.test_parents4s�����!�!���~�~������ �4�4�6�6���z����������+�V�4�4�4�����+�+�-�-�a�0�%�8�8�8�����+�+�-�-�a�0�&�9�9�9�9�9r>c�V�tj��}|�|���g��|�|�d���g��|�d���}|���}|�d���}||fD]~}|�t|��d��|�|dj|j��|�|d���|j���dS)NT��	recursiver)�
creationflagsrj)r5r6rA�childrenr=r�r7r)r8rr|�	children1�	children2r(s      r<�
test_childrenzTestProcess.test_children=s����!�!��������*�*�B�/�/�/�������4��8�8�"�=�=�=��!�!��!�2�2���O�O�%�%�	��O�O�d�O�3�3�	�"�I�.�	=�	=�H����S��]�]�A�.�.�.����X�a�[�_�e�i�8�8�8����X�a�[�-�-�/�/���<�<�<�<�	=�	=r>c��tj��}|���\}}|�|���|g��|�|�d���||g��|���|���|�|�d���g��dS)NTr%)r5r6r{rAr(rTrKrs    r<�test_children_recursivez#TestProcess.test_children_recursiveLs�����!�!�� �4�4�6�6���z�������*�*�U�G�4�4�4�������4��8�8�5�*�:M�N�N�N�	������
�
�
����������4��8�8�"�=�=�=�=�=r>c�t�tjt��}tj��D]:}	||���xxdz
cc<�&#tj$rY�7wxYwt|���d����dd}tr|dkr|�
d���tj|��}	|�d���}|�
t|��tt|������dS#tj$rYdSwxYw)	Nrjc��|dS)Nrjr.)r�s r<�<lambda>z6TestProcess.test_children_duplicates.<locals>.<lambda>bs
��!�A�$�r>)�keyr�rzPID 0Tr%)�collections�defaultdictr_r5�process_iterr�Errorr��itemsr�skipTestr6r(rAr�rVrd)r8�tablerGr7�cs     r<�test_children_duplicatesz$TestProcess.test_children_duplicatesYs9���'��,�,���$�&�&�	�	�A�
��a�f�f�h�h����1�$�������<�
�
�
���
�����U�[�[�]�]���7�7�7��;�A�>���	)�S�A�X�X��-�-��(�(�(��N�3����	2��
�
�T�
�*�*�A�
���S��V�V�S��Q���[�[�1�1�1�1�1���"�	�	�	��D�D�	���s#�"A�A%�$A%�D$�$D7�6D7c���tj��}|���\}}|�d���}|�t|��d��|�|d|��|�|d|��|���}|�|d|��|�|d|��dS)NTr%r�rrj)r5r6r{r(rAr�r")r8rr|r}r(r"s      r<�test_parents_and_childrenz%TestProcess.test_parents_and_childrenms�����!�!�� �4�4�6�6���z��?�?�T�?�2�2������X����*�*�*�����!��e�,�,�,�����!��j�1�1�1��$�$�&�&��������U�+�+�+�������V�,�,�,�,�,r>c�v�|���}|���td��D]:}|���tjkrnt
jd���;|���|�	|���tj��dS)Nr�rz)
r=rvr�r�r5�STATUS_STOPPEDr�r�rw�assertNotEqual)r8rGr�s   r<�test_suspend_resumezTestProcess.test_suspend_resumezs���������	�	�	�����s���	�	�A��x�x�z�z�V�2�2�2����J�t�����	���
�
�
����A�H�H�J�J��(=�>�>�>�>�>r>c��|�ttjd��|�ttjd��dS)Nr�r�)rDr�r5r6r��r8s r<�test_invalid_pidzTestProcess.test_invalid_pid�s<�����)�V�^�S�9�9�9����*�f�n�b�9�9�9�9�9r>c��tj��}|�ddg���}|�t	|�����ddg��tjt
tj������}|�dgd���}t|dt��s|�|dd��tjddtj�	��5|�|�d
gd���d
di��ddd��n#1swxYwYtjddtj
|jd���	��5|�tj
|jd
g���ddd��n#1swxYwYtjddtj|jd���	��5|�|�d
gd���d
di��ddd��n#1swxYwYtjddt"�	��5|���}|�d
t|�������|�t"��5|�d
g���ddd��n#1swxYwYddd��n#1swxYwY|�t&��5|�d��ddd��n#1swxYwY|�t(��5|�dg��ddd��n#1swxYwY|�t(��5|�ddg��ddd��dS#1swxYwYdS)
Nrxr�)�attrs�connectionsr)rE�ad_valuezpsutil.Process.niceT)�creater]r�rj�bar)r5r6�as_dictrAr��keysr�r�
isinstancer�r'r^rdrbr7rD�
ZombieProcess�NotImplementedErrorr�r�r�)r8rG�ds   r<�test_as_dictzTestProcess.test_as_dict�s����N����
�I�I�U�F�O�I�,�,�����������)�)�E�6�?�;�;�;��N�3�v�{�}�}�-�-�.�.��
�I�I�]�O�e�I�<�<���!�M�*�D�1�1�	6����Q�}�-�u�5�5�5��Z�-�d�$*�$7�9�9�9�	D�	D�����	�	���1�	�5�5���{�
D�
D�
D�	D�	D�	D�	D�	D�	D�	D�	D�	D�	D�	D����	D�	D�	D�	D��Z�-�d�$*�$8����$G�$G�I�I�I�	A�	A�����$�a�i��x�
�
A�
A�
A�	A�	A�	A�	A�	A�	A�	A�	A�	A�	A�	A����	A�	A�	A�	A��Z�-�d�$*�$8����$G�$G�I�I�I�	L�	L�����	�	���5�	�9�9�F�E�?�
L�
L�
L�	L�	L�	L�	L�	L�	L�	L�	L�	L�	L�	L����	L�	L�	L�	L��Z�-�d�$7�9�9�9�	*�	*��	�	���A����V�T�!�&�&�(�(�^�^�4�4�4��"�"�#6�7�7�
*�
*��	�	���	�)�)�)�
*�
*�
*�
*�
*�
*�
*�
*�
*�
*�
*����
*�
*�
*�
*�	*�	*�	*�	*�	*�	*�	*�	*�	*�	*�	*����	*�	*�	*�	*��
�
�y�
)�
)�	�	�
�I�I�f����	�	�	�	�	�	�	�	�	�	�	����	�	�	�	�
�
�
�z�
*�
*�	�	�
�I�I�u�g����	�	�	�	�	�	�	�	�	�	�	����	�	�	�	�
�
�
�z�
*�
*�	&�	&�
�I�I�u�e�n�%�%�%�	&�	&�	&�	&�	&�	&�	&�	&�	&�	&�	&�	&����	&�	&�	&�	&�	&�	&s��/E�E�E�:)F/�/F3�6F3�)/H$�$H(�+H(�A$K*�/K�K*�K	�K*�K	�K*�*K.�1K.�L1�1L5�8L5�M9�9M=�M=�O�O�
Oc�@�tj��}tjd��5}|���5|���|���ddd��n#1swxYwY|�|jd��ddd��n#1swxYwYtjd��5}|���|���ddd��n#1swxYwY|�|jd��dS)N�$psutil._psplatform.Process.cpu_timesrjr��r5r6r'r^�oneshotr�rA�
call_count�r8rGr�s   r<�test_oneshotzTestProcess.test_oneshot�s����N����
�Z�>�
?�
?�	.�1������
�
����
�
�
����
�
�
�
�
�
�
�
�
�
�
�
�
�
����
�
�
�
�
���Q�\�1�-�-�-�		.�	.�	.�	.�	.�	.�	.�	.�	.�	.�	.����	.�	.�	.�	.��Z�>�
?�
?�	�1�
�K�K�M�M�M�
�K�K�M�M�M�	�	�	�	�	�	�	�	�	�	�	����	�	�	�	�	
�����q�)�)�)�)�)sF�B$�)A2�&B$�2A6	�6B$�9A6	�:B$�$B(�+B(�)C8�8C<�?C<c	�v�tj��}tjd��5}tjd��5}|���5|���|���|���5|���|���ddd��n#1swxYwYddd��n#1swxYwY|�|jd��|�|jd��ddd��n#1swxYwYddd��n#1swxYwYtjd��5}|���|���ddd��n#1swxYwY|�|jd��dS)NrRz(psutil._psplatform.Process.oneshot_enterrjr�rS)r8rG�m1�m2r�s     r<�test_oneshot_twicezTestProcess.test_oneshot_twice�s���
�N����
�Z�>�
?�
?�		3�2���F�G�G�
3�2��Y�Y�[�[�&�&��K�K�M�M�M��K�K�M�M�M������&�&����
�
�
����
�
�
�&�&�&�&�&�&�&�&�&�&�&����&�&�&�&�&�&�&�&�&�&�&�&�&�&�&����&�&�&�&�� � ����2�2�2�� � ����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��Z�>�
?�
?�	�1�
�K�K�M�M�M�
�K�K�M�M�M�	�	�	�	�	�	�	�	�	�	�	����	�	�	�	�	
�����q�)�)�)�)�)s��D?�D(�=C�)C	�8C�C
�C�C
�C�D(�C�D(�"C�#9D(�D?�(D,	�,D?�/D,	�0D?�?E�E�)F�F�Fc��|���\}}|���}|���}|�||��|���5|�|���|��|�|���|��ddd��n#1swxYwY|���5|�|���|��|�|���|��ddd��dS#1swxYwYdSr3)r{rr?rTrA)r8�p1�p2�p1_ppid�p2_ppids     r<�test_oneshot_cachezTestProcess.test_oneshot_cache�s����)�)�+�+���B��'�'�)�)���'�'�)�)�����G�W�-�-�-�
�Z�Z�\�\�	1�	1����R�W�W�Y�Y��0�0�0����R�W�W�Y�Y��0�0�0�	1�	1�	1�	1�	1�	1�	1�	1�	1�	1�	1����	1�	1�	1�	1��Z�Z�\�\�	1�	1����R�W�W�Y�Y��0�0�0����R�W�W�Y�Y��0�0�0�	1�	1�	1�	1�	1�	1�	1�	1�	1�	1�	1�	1����	1�	1�	1�	1�	1�	1s&�*AC�C�C�&AE�E�Ec�@���fd�}����}|���|���tr"t	t
jd|jz����|��t|��}|�
|j��D]\}}|||���trYtsTtjj}��||�����|t$����dSdSdS)Nc����	|��}tr|dvrdS��|�d|�d����#tj$r�tj$rYdStj$rtr|dvrYdS�wxYw)N)rxr�z didn't raise NSP and returned z instead)r'r)r
r�r5rMrbrdr	)�fun�fun_namerr8s   �r<�assert_raises_nspzFTestProcess.test_halfway_terminated_process.<locals>.assert_raises_nsp�s����
8��c�e�e����x�?�:�:��F��i�i�-0�S�S�#�#�#�!7�8�8�8���'�
�
�
���'�
�
�
�����&�
�
�
���x�+E�E�E��F�F��
���s�
5�A4�A4�2A4z
%s not in ret)r=rTrKr
r$r5rr7rOr(�iter�allrrBr�rjrArxr!)r8rfrG�nsrdr�rjs`      r<�test_halfway_terminated_processz+TestProcess.test_halfway_terminated_process�s-���	8�	8�	8�	8�	8�$
������	���
�
�
�	�������	=��v�{�O�a�e�$;�<�<�<����q�!�!�!�
�q�
!�
!���������	)�	)�I�C����c�4�(�(�(�(��	F�>�	F��w�'�H����X�X�a�e�e�g�g�.�.����0D�0D�E�E�E�E�E�	F�	F�	F�	Fr>c��d�}|���\}}tj|j��}|�|���tj��|���sJ�|���t|��}|�
|j��D]\}}||���tj|j��sJ�|�
|jtj����|�
|jd�tj��D����it_|�
|jd�tj��D����dS)Nc�\�	|��S#tjtjf$rYdSwxYwr3)r5rMrd)rds r<�succeed_or_zombie_p_excz@TestProcess.test_zombie_process.<locals>.succeed_or_zombie_p_excs?��
��s�u�u����(�&�*=�>�
�
�
����
���s�	�+�+c��g|]	}|j��
Sr.�r7r�s  r<r�z3TestProcess.test_zombie_process.<locals>.<listcomp>1���!G�!G�!G�A�!�%�!G�!G�!Gr>c��g|]	}|j��
Sr.ror�s  r<r�z3TestProcess.test_zombie_process.<locals>.<listcomp>3rpr>)�spawn_zombier5r6r7rAr��
STATUS_ZOMBIErsrJr(rgrh�
pid_existsr�rr4�_pmap)r8rmr�zombie�zprocrirdr�s        r<�test_zombie_processzTestProcess.test_zombie_processs_��	�	�	��*�*�,�,������v�z�*�*�����������)=�>�>�>����!�!�!�!�!�
�
�
�����u�
%�
%���������	)�	)�I�C��#�#�C�(�(�(�(�� ���+�+�+�+�+��
�
�e�i�����/�/�/��
�
�e�i�!G�!G��1D�1F�1F�!G�!G�!G�H�H�H�����
�
�e�i�!G�!G��1D�1F�1F�!G�!G�!G�H�H�H�H�Hr>c���tj��}tjdtjd�����5}|���sJ�|jsJ�	ddd��dS#1swxYwYdS)Nrrr\)r5r6r'r^rMrsr�rVs   r<�$test_zombie_process_is_running_w_excz0TestProcess.test_zombie_process_is_running_w_exc5s���
�N����
�Z�(�$*�$8��$;�$;�=�=�=�	�@A��<�<�>�>�!�!�!��8�O�O�O�O�	�	�	�	�	�	�	�	�	�	�	�	����	�	�	�	�	�	s� A*�*A.�1A.c�&�tj��}tjdtjd�����5}|�|���tj��|jsJ�	ddd��dS#1swxYwYdS)Nz!psutil._psplatform.Process.statusrr\)	r5r6r'r^rMrAr�rsr�rVs   r<� test_zombie_process_status_w_excz,TestProcess.test_zombie_process_status_w_exc?s���
�N����
�Z�;�$*�$8��$;�$;�=�=�=�	�@A����Q�X�X�Z�Z��)=�>�>�>��8�O�O�O�O�	�	�	�	�	�	�	�	�	�	�	�	����	�	�	�	�	�	s�<B�B
�
B
c��|���}tj|j��}|j|���dzf|_|���rJ�|tj|j��ksJ�d}|�tj||j	��|�tj||j
��|�tj||j��|�tj||j��|�tj||j
��dS)Nr�z4process no longer exists and its PID has been reused)r4r5r6r7r��_identrsr�rbrvrwrTrJr()r8�subprGrEs    r<�test_reused_pidzTestProcess.test_reused_pidIs���"�"�$�$���N�4�8�$�$���E�1�=�=�?�?�S�0�1����<�<�>�>�!�!�!��F�N�4�8�,�,�,�,�,�,�D�����v�3�S�!�)�D�D�D����v�3�S�!�(�C�C�C����v�3�S�!�+�F�F�F����v�3�S�!�&�A�A�A����v�3�S�!�*�E�E�E�E�Er>c���dtj��vr}|�tjtjd��tjd��rJ�|�tjd�����d��dStjd��}trtj	nt}|�||j��|�||j��|�||j
��|�||j��|�||j��|�||jt"j��t'|��}|�|j|jz��D]�\}}	|��}|dvr|�|jd���0|dkr4trdnd}|�|���|���j|dkr|s
J|����}#tj	$rY��wxYwt2s=|�dtj����tjd��sJ�dSdS)Nrrj)r�r�r�zNT AUTHORITY\SYSTEM�rootr�)r5rrDrbr6rtrArr
rdr�rKrTrvrwrJrWrLrMr(rg�getters�settersr�r�r	r�)r8rGrrirdr�rr�s        r<�
test_pid_0zTestProcess.test_pid_0Wsi���F�K�M�M�!�!����f�2�F�N�A�F�F�F��(��+�+�+�+�+����V�^�A�.�.�3�3�5�5�q�9�9�9��F��N�1����%,�<�f�!�!�*�����#�q�v�&�&�&����#�q�{�+�+�+����#�q�y�)�)�)����#�q�x�(�(�(����#�q�v�&�&�&����#�q�}�f�n�=�=�=��q�
!�
!�������b�j�!8�9�9�	&�	&�I�C��
&��c�e�e���+�+�+��$�$�S�X�q�1�1�1�1��Z�'�'�5<�H�1�1�&�D��$�$�Q�Z�Z�\�\�4�8�8�8�8��V�^�^��%�%��%�%�%����&�
�
�
���
�����	(��M�M�!�V�[�]�]�+�+�+��$�Q�'�'�'�'�'�	(�	(�'�'s�%
H�H.�-H.c��d�}d|_tj��}||�����}|tj�����}tstr|�||��dSdSdS)Nc�B�|�dd��|�dd��trB|�dd��|�dd��|�dd��td�|���D����S)N�PLAT�HOME�__CF_USER_TEXT_ENCODING�VERSIONER_PYTHON_PREFER_32_BIT�VERSIONER_PYTHON_VERSIONc��g|]Y\}}|�dd���dd��|�dd���dd��f��ZS)�
r[�
)r{)r��k�vs   r<r�z@TestProcess.test_environ.<locals>.clean_dict.<locals>.<listcomp>�sp��(�(�(��Q���)�)�D�"�%�%�-�-�d�B�7�7��)�)�D�"�%�%�-�-�d�B�7�7�9�(�(�(r>)�popr�dictr6)rOs r<�
clean_dictz,TestProcess.test_environ.<locals>.clean_dict�s���
�E�E�&�$����
�E�E�&�$�����
8����/��6�6�6����6��=�=�=����0�$�7�7�7��(�(��W�W�Y�Y�(�(�(�)�)�
)r>)	�maxDiffr5r6r�rB�copyr
rrA)r8r�rG�d1�d2s     r<�test_environzTestProcess.test_environ~s���	)�	)�	)�����N����
�Z��	�	���
$�
$��
�Z��
���)�)�
*�
*���	%�~�	%����R��$�$�$�$�$�	%�	%�	%�	%r>z<macOS 11+ can't get another process environment, issue #2084c���tjd��}|���}t||���|�|gt
jt
j���}tj|j	��}t|j	��|���sJ�|�|j
���d��tr3t r,	|���}n*#tj$rYdSwxYw|���}|�|ddd���|���|�|jd��dS)	Na�
            #include <unistd.h>
            #include <fcntl.h>

            char * const argv[] = {"cat", 0};
            char * const envp[] = {"A=1", "X", "C=3", 0};

            int main(void) {
                // Close stderr on exec so parent can wait for the
                // execve to finish.
                if (fcntl(2, F_SETFD, FD_CLOEXEC) != 0)
                    return 0;
                return execve("/bin/cat", argv, envp);
            }
            )�c_code)�stdinrir>r��3)�A�Cr)�textwrap�dedentr�r&r4rlrmr5r6r7r/rsrArir�rrr�rd�communicate�
returncode)r8rQr�r;rG�envs      r<�test_weird_environzTestProcess.test_weird_environ�sh���� ������� � ���4��%�%�%�%��#�#�
�F�*�/�*�/�$�C�C���N�5�9�%�%���Q�U�����|�|�~�~���������*�*�,�,�c�2�2�2��	�Z�	�
��i�i�k�k�����&�
�
�
����
����
�)�)�+�+�C�����C�c�2�2�3�3�3�
����������)�1�-�-�-�-�-s�&C;�;D�
DN)l�__name__�
__module__�__qualname__�__doc__r=rHrRrUrYr�skipIfrrerorxr�r�r�r�r�r�r�rr�r�r�rr.rr�rr�r
r�rrr	rrrr!r%rr+r+r-rr3rCrMrrgrnrqrtr~r�r r�r�r�rrr�r�r�r�r�r�r�r�rr�r�r�rrr�rr
r	rrrrrr r#r+r-r:r<r@rCrPrWr[rarjrxrzr|r�r�rr�rr�r.r>r<r1r1Ks
������)�)�)�)�)����"�"�"�"�"�"�	"�	"�	"��X�_��Y��,�,�
G�
G�-�,�
G�"�"�"�67�7�7�*8�8�8�*2�2�2�"�"�"�&	'�	'�	'����	L�	L�	L�N�N�N��X�_�)�)�?�;�;�>�>�<�;�>�L�L�L� �X�_��Y��-�-�,�,�.�-�,��X�_�-�-��?�?���U�+�+�+�'/�'/�,�+�@�?�'/�R�X�_��^�_�5�5��X�_��Y��-�-�(%�(%�.�-�6�5�(%�T�X�_��^�_�5�5��X�_��[�"E�F�F���G�F�6�5��6�X�_��^�_�5�5�4�4�6�5�4�,�X�_��^�_�5�5�
6�
6�6�5�
6��X�_��^�_�5�5�J�J�6�5�J�&�X�_��^�_�5�5�J�J�6�5�J��X�_��^�_�5�5�	4�	4�6�5�	4�/�/�/�"�X�_��[�.�1�1�/�/�2�1�/�
�X�_��_�o�6�6�>�>�7�6�>�&������5�)�)�)��X�_��_�o�6�6�
B�
B�7�6�*�)���
B�����;�;���;�<1�1�1� �X�_��(�/�:�:�+-�+-�;�:�+-�Z�X�_��(�/�:�:�4�4�;�:�4�,�,�,�"�"�"�%�%�%�8G�G�G�&�X�_�T�+�,�,�/�/�-�,�/�5�5�5��X�_�T�/�0�0�=�=�1�0�=��X�_�U�-�.�.��X�_�S�/�*�*��X�_�T�+�,�,�
7�
7�-�,�+�*�/�.�
7��X�_��Y��-�-�7�7�.�-�7��X�_��Y��-�-�7�7�.�-�7�4�4�4�l<�<�<�:�:�:�"/�/�/�A�A�A��X�_�)�)�?�;�;�%(�%(�<�;�%(�N�X�_�)�)�?�;�;�?�?�<�;�?��X�_�)�)�?�;�;�F�F�<�;�F�(�X�_�S�/�*�*��X�_�X�7�8�8�.�.�9�8�+�*�.�D�X�_�S�/�*�*��X�_�X�7�8�8�;�;�9�8�+�*�;�2�X�_��Y��-�-�-�-�.�-�-���U�+�+�+��X�_�W�&��(J�K�K�G�G�L�K�,�+�G�
�
�
�?�?�?�1�1�1�*�*�*�����:�:���:�
=�
=�
=�>�>�>�2�2�2�(-�-�-�?�?�?�:�:�:�,&�,&�,&�\*�*�*�*�*�*�(
1�
1�
1�(F�(F�(F�T�X�_��Y��-�-�"I�"I�.�-�"I�H�X�_��Y��-�-���.�-���X�_��Y��-�-���.�-��F�F�F�%(�%(�%(�N�X�_��_�o�6�6�%�%�7�6�%�*�X�_��_�o�6�6��X�_��Y��-�-��X�_��F���%.�%.�	��.�-�7�6�%.�%.�%.r>r1c����eZdZdZeed��rej��Zej��Z	�fd�Z
�fd�Z�fd�Zd�Z
ejdd��d	���Z�xZS)
�LimitedUserTestCasez�Repeat the previous tests by using a limited user.
        Executed only on UNIX and only if the user who run the test script
        is root.
        r�c	�����t��j|i|��d�t|��D��D];}t||����fd�}t	||tj||�����<dS)Nc�<�g|]}|�d���|��S)�testr�r�s  r<r�z0LimitedUserTestCase.__init__.<locals>.<listcomp>�s)��F�F�F�q����f�1E�1E�F��F�F�Fr>c�J��	���dS#tj$rYdSwxYwr3)r5rd)r8�meths �r<�test_z+LimitedUserTestCase.__init__.<locals>.test_�s<������������!�.����������s�
�"�")r�__init__rr��setattr�types�
MethodType)r8r9r:�attrr�r��	__class__s     @�r<r�zLimitedUserTestCase.__init__�s������E�G�G��d�-�f�-�-�-�G�F�C��I�I�F�F�F�
C�
C���t�T�*�*�������
��d�E�$4�U�D�$A�$A�B�B�B�B�
C�
Cr>c���t�����tjd��tjd��dS)Ni�)r�setUprB�setegid�seteuid�r8r�s �r<r�zLimitedUserTestCase.setUp�s:����G�G�M�M�O�O�O��J�t�����J�t�����r>c���tj|j��tj|j��t�����dSr3)rBr��PROCESS_UIDr��PROCESS_GIDr�tearDownr�s �r<r�zLimitedUserTestCase.tearDown�sE����J�t�'�(�(�(��J�t�'�(�(�(��G�G�������r>c��	tj���d��|�d���#tj$rYdSwxYw)Nr�zexception not raised)r5r6r�r�rdrBs r<r�zLimitedUserTestCase.test_nice�s_��
8��� � �%�%�b�)�)�)��i�i� 6�7�7�7���&�
�
�
����
���s�&=�A�Arjzcauses problem as rootc��dSr3r.rBs r<rxz'LimitedUserTestCase.test_zombie_process�s���Dr>)r�r�r�r�r�rBr�r�r�r�r�r�r�r�rr�rx�
__classcell__)r�s@r<r�r��s��������	�	�
�7�2�x� � �	&�#�"�)�+�+�K�#�"�)�+�+�K�	C�	C�	C�	C�	C�	�	�	�	�	�
	�	�	�	�	�
	8�	8�	8�
����4�	5�	5�	�	�
6�	5�	�	�	�	�	r>r�c�:�eZdZdZed���Zd�Zd�Zd�ZdS)�	TestPopenzTests for psutil.Popen class.c�"�t��dSr3r))�clss r<�
tearDownClasszTestPopen.tearDownClasss�������r>c��tddg}tj|tjtj���5}|���|���|j|�t|����|�
tt|d��|�
��ddd��n#1swxYwYtr6|�|�d��t"j��dS|�|�d��t"j��dS)Nrg�import time; time.sleep(60);��stdoutrirrk)r!r5�Popenrlrmr�r�r��
assertTruerrDrEr�rTrrArKrLrM�r8rn�procs   r<�	test_misczTestPopen.test_miscsH���4�!?�@��
�\�#�j�o�!+��2�2�2�	�59��I�I�K�K�K��N�N�����J�J��O�O�C��I�I�&�&�&����n�g�t�U�C�C�C��N�N����	�	�	�	�	�	�	�	�	�	�	����	�	�	�	��	;����T�Y�Y�q�\�\�F�N�?�;�;�;�;�;����T�Y�Y�q�\�\�6�>�:�:�:�:�:s�BC
�
C�Cc�b�tjtdgtjtjtj���5}|���ddd��n#1swxYwY|jjsJ�|jjsJ�|j	jsJ�|�
|jd��dS)Nz-V)r�rir�r)r5r�r!rlrmr�r��closedrir�rAr�)r8r�s  r<�test_ctx_managerzTestPopen.test_ctx_managers���
�\�:�t�,�!+��!+�� *��1�1�1�	�59�������		�	�	�	�	�	�	�	�	�	�	����	�	�	�	�
�{�!�!�!�!��{�!�!�!�!��z� � � � ������!�,�,�,�,�,s�A�A#�&A#c��tddg}tj|tjtj���5}|���|���|�tj|j��|�tj|j	��|�tj|j
tj��tr`|�tj|j
tj��|�tj|j
tj��ddd��dS#1swxYwYdS)Nrgr�r�)r!r5r�rlrmrTrKrDrbrJrWrLrMr
�CTRL_C_EVENT�CTRL_BREAK_EVENTr�s   r<�test_kill_terminatezTestPopen.test_kill_terminate!sg���4�!?�@��
�\�#�j�o�!+��2�2�2�	;�59��N�N�����I�I�K�K�K����f�2�D�N�C�C�C����f�2�D�I�>�>�>����f�2�D�4D�$�n�
.�
.�
.��
;��!�!�&�"6��8H�"(�"5�7�7�7��!�!�&�"6��8H�"(�"9�;�;�;�	;�	;�	;�	;�	;�	;�	;�	;�	;�	;�	;�	;����	;�	;�	;�	;�	;�	;s�D
E
�
E�EN)	r�r�r�r��classmethodr�r�r�r�r.r>r<r�r��s`������'�'�����[��;�;�;�$	-�	-�	-�;�;�;�;�;r>r��__main__)�
run_from_name)Fr�r2r`r�r�rBrLrr\rlryr�r�r�rr5rrrrrr	r
rrr
�psutil._commonr�psutil._compatrrrr�psutil.testsrrrrrrrrrrrrrr r!r"r#r$r%r&r'r(r*r+r,r-r.r/r1r�r�r�r��psutil.tests.runnerr��__file__r.r>r<�<module>r�s���&�%�����������������	�	�	�	�
�
�
�
�
�
�
�
���������
�
�
�
�����������������
�
�
�
�������������������������������������������������������������$�$�$�$�$�$�������,�,�,�,�,�,������� � � � � � �!�!�!�!�!�!�#�#�#�#�#�#�'�'�'�'�'�'�'�'�'�'�'�'�)�)�)�)�)�)�$�$�$�$�$�$�#�#�#�#�#�#�(�(�(�(�(�(�)�)�)�)�)�)�-�-�-�-�-�-�#�#�#�#�#�#�$�$�$�$�$�$�%�%�%�%�%�%�������#�#�#�#�#�#�'�'�'�'�'�'�#�#�#�#�#�#�#�#�#�#�#�#�,�,�,�,�,�,�#�#�#�#�#�#�������*�*�*�*�*�*�&�&�&�&�&�&�)�)�)�)�)�)�������.�.�.�.�.�.�0�0�0�0�0�0�%�%�%�%�%�%�t.�t.�t.�t.�t.�.�t.�t.�t.�x+	�.�Y�R�Y�[�[�A�
�
�,�,�,�,�,�k�,�,�,�h5;�5;�5;�5;�5;��5;�5;�5;�p�z���1�1�1�1�1�1��M�(�������r>

Youez - 2016 - github.com/yon3zu
LinuXploit