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

�

h0i�����dZddlZddlZddlZddlZddlZddlZddlZddlZddl	Z	ddl
Z
ddlZddlZddl
Z
ddlZddlZddlmZddlZddlmZddlmZddlmZddlmZddlmZdd	lmZdd
lmZddlmZddlmZdd
lmZddlmZddlm Z ddlm!Z!ddlm"Z"ddlm#Z#ddlm$Z$ddlm%Z%ddlm&Z&ddlm'Z'ddlm(Z(ddlm)Z)ddlm*Z*ddlm+Z+ddlm,Z,ddlm-Z-ddlm.Z.ddlm/Z/ddlm0Z0dd lm1Z1dd!lm2Z2dd"lm3Z3dd#lm4Z4dd$lm5Z5dd%lm6Z6dd&lm7Z7dd'lm8Z8dd(lm9Z9dd)lm:Z:dd*lm;Z;Gd+�d,e.�Z<Gd-�d.e.�Z=y)/�Tests for psutil.Process class.�N)�mock)�AIX)�BSD)�LINUX)�MACOS)�NETBSD)�OPENBSD)�OSX)�POSIX)�WINDOWS)�	open_text)�
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)�PYTHON_EXE_ENV)�PsutilTestCase)�
ThreadTask)�
call_until)�copyload_shared_lib)�create_c_exe)�
create_py_exe)�process_namespace)�pytest��
reap_children)�retry_on_failure)�sh)�skip_on_access_denied)�skip_on_not_implemented)�wait_for_pidc�6�eZdZdZd�Zd�Zd�Zd�Zejjed��d��Zd	�Z
ejjed
��d��Zd�Zd
�Zd�Zd�Zd�Zd�Zejjed��d��Zd�Zejjed��d��Zejjed��ee��d���Zejjed��ejjed��d���Zejjed��ejje d��d���Z!ejje"d��d��Z#ejje"d��d��Z$ejje"d��d��Z%ejje"d��d ��Z&ejje"d��d!��Z'ejjQd"�#�d$��Z)ejje d%��d&��Z*ejje+d��d'��Z,e-�e.e/��ejje+d��d(����Z0e-�d)��Z1d*�Z2ejje3d��d+��Z4ejje3d��d,��Z5d-�Z6d.�Z7d/�Z8d0�Z9d1�Z:d2�Z;e-�d3��Z<ejjed��d4��Z=ejjed��d5��Z>d6�Z?d7�Z@d8�ZAd9�ZBd:�ZCejjeDd��d;��ZEejjeDd��d<��ZFejjeDd��d=��ZGejjeHd>��d?��ZIejjeHd>��d@��ZJejjed��ejjQd"�#�dA���ZKee��ejjeLxsedB��dC���ZMdD�ZNdE�ZOdF�ZPdG�ZQe-�dH��ZRdI�ZSdJ�ZTdK�ZUdL�ZVdM�ZWdN�ZXdO�ZYdP�ZZdQ�Z[dR�Z\dS�Z]dT�Z^ejjed��dU��Z_ejjed��dV��Z`ejjed��dW��ZadX�ZbdY�Zcejjedd��dZ��Zeejjedd��ejjed��ejjefd[��ejjed\��d]�����Zgy^)_�TestProcessrc���tj�}|jtj�k(sJ�tjt�5d|_ddd�y#1swYyxYw)N�!)�psutil�Process�pid�os�getpidr%�raises�AttributeError��self�ps  �J/opt/hc_python/lib64/python3.12/site-packages/psutil/tests/test_process.py�test_pidzTestProcess.test_pidKsE���N�N����u�u��	�	��#�#�#�
�]�]�>�
*��A�E�+�
*�
*�s�A"�"A+c���|j�}|j�|j�}tr|tj
k(sJ�|tjk(sJ�|j|�y�N)�spawn_psproc�kill�waitr
�signal�SIGTERM�SIGKILL�assert_proc_gone�r9r:�codes   r;�	test_killzTestProcess.test_killQs[�������	�����v�v�x����6�>�>�)�)�)��F�N�N�?�*�*�*����a� �c���|j�}|j�|j�}tr|tj
k(sJ�|tj
k(sJ�|j
|�yr>)r?�	terminaterAr
rBrCrErFs   r;�test_terminatezTestProcess.test_terminate[s[�������	���
��v�v�x����6�>�>�)�)�)��F�N�N�?�*�*�*����a� rIc��trtjntj}|j	�}|j|�|j
�}tr||k(s
J�||k(sJ�|j|�yr>)	rrBrDrCr?�send_signalrAr
rE)r9�sigr:rGs    r;�test_send_signalzTestProcess.test_send_signalesc�� %�f�n�n�6�>�>�������	�
�
�c���v�v�x����3�;��;��C�4�<��<����a� rIz	not POSIX��reasonc�H�tj}|j�}tjdt
��5t
jtj�5|j|�ddd�ddd�|j�}tjdt��5t
jtj�5|j|�ddd�ddd�y#1swY��xYw#1swY��xYw#1swY�*xYw#1swYyxYw)Nzpsutil.os.kill��side_effect)
rBrCr?r�patch�ProcessLookupErrorr%r6r1�
NoSuchProcessrN�PermissionError�AccessDenied)r9rOr:s   r;�test_send_signal_mockedz#TestProcess.test_send_signal_mockedps����n�n�������
�Z�Z�(�6H�
I����v�3�3�4��
�
�c�"�5�J�
�����
�Z�Z�(�o�
F����v�2�2�3��
�
�c�"�4�G�
F�	5�4��J�
I��4�3��G�
F�sG�$D� C4�2D�-$D�D�#D�4C=	�9D�D	�D	�D�D!c�4�tddg}|j|�}|j�}|dk(sJ�|j|�tddg}|j|tj
��}|j�}|dk(sJ�|j|�tddg}|j|�}|j�}|dk(sJ�|j|�tdd	g}|j|�}|j�}|dk(sJ�|j|�y)
N�-c�passrz1 / 0)�stderr�zimport sys; sys.exit(5);�zimport os; os._exit(5);)rr?rArE�
subprocess�PIPE)r9�cmdr:rGs    r;�test_wait_exitedzTestProcess.test_wait_exited}s���4��(�����c�"���v�v�x���q�y��y����a� ��4��)�����c�*�/�/��:���v�v�x���q�y��y����a� ��4�!;�<�����c�"���v�v�x���q�y��y����a� ��4�!:�;�����c�"���v�v�x���q�y��y����a� rIzfails on NETBSDc��|j�}t�r"|jtj�tjtj�5|jd��ddd�|jtj�tjtj�5|jd��ddd�|jtj�|j�tjk(sJ�|j�tjk(sJ�y|j�tjtj�5|jd��ddd�|j�tjtj�5|jd��ddd�|j�|j�tjk(sJ�|j�tjk(sJ�y#1swY���xYw#1swY��rxYw#1swY��xYw#1swY��xYw)N���MbP?)�timeout)r?rrNrB�SIGSTOPr%r6r1�TimeoutExpiredrA�SIGCONTrC�suspend�resumerKr8s  r;�test_wait_stoppedzTestProcess.test_wait_stopped�s|��������
�M�M�&�.�.�)����v�4�4�5����u��%�6�
�M�M�&�.�.�)����v�4�4�5����u��%�6�
�M�M�&�.�.�)��6�6�8�����.�.�.��6�6�8�����.�.�.�
�I�I�K����v�4�4�5����u��%�6�
�H�H�J����v�4�4�5����u��%�6�
�K�K�M��6�6�8�v�~�~�-�-�-��6�6�8�v�~�~�-�-�-�#6�5��6�5��6�5��6�5�s0�H-�7H:�-I�;I�-H7�:I�I�Ic�d�|j�\}}tjtj�5|jd�ddd�tjtj�5|jd�ddd�|j
�|j
�|j�}|j�}tr|tjk(sJ�|�J�y|tjk(sJ�|tjk(sJ�y#1swY��xYw#1swY��xYw)N�{�G�z�?)
�spawn_children_pairr%r6r1rjrArKrrBrC)r9�child�
grandchild�	child_ret�grandchild_rets     r;�test_wait_non_childrenz"TestProcess.test_wait_non_children�s���!�4�4�6���z�
�]�]�6�0�0�
1��J�J�t��2�
�]�]�6�0�0�
1��O�O�D�!�2�	���������J�J�L�	�#���*��������/�/�/�"�)�)�)�����.�.�.�����.�.�.�#2�
1��
1�
1�s�D�4D&�D#�&D/c���|j�}|j�tjtj
�5|j
d�ddd�tjtj
�5|j
d�ddd�tjt�5|j
d�ddd�y#1swY�zxYw#1swY�IxYw#1swYyxYw)Nrpr���)r?�namer%r6r1rjrA�
ValueErrorr8s  r;�test_wait_timeoutzTestProcess.test_wait_timeout�s��������	����
�]�]�6�0�0�
1�
�F�F�4�L�2�
�]�]�6�0�0�
1�
�F�F�1�I�2�
�]�]�:�
&�
�F�F�2�J�'�
&�	2�
1��
1�
1��
&�
&�s$�C�C�4C'�C�C$�'C0c�r�|j�}tjtj�5|jd�ddd�|j
�tj�tz}tj�|kr	|jd�}ntjd�Str|tjk(sJ�|tjk(sJ�|j|�y#1swY��xYw#tj$rYnwxYwtj�|kr����)Nrrh)r?r%r6r1rjrAr@�timer�failrrBrDrCrE)r9r:�stop_atrGs    r;�test_wait_timeout_nonblockingz)TestProcess.test_wait_timeout_nonblocking�s��������
�]�]�6�0�0�
1�
�F�F�1�I�2�	�����)�)�+��.���i�i�k�G�#�
��v�v�a�y����;�;�y�)�)���F�N�N�?�*�*�*��6�>�>�)�)�)����a� �!2�
1���(�(�
��
��	�i�i�k�G�#�s�C;�D�;D�D�Dc�j�tj�}|jd��|jd��td�D]-}|jd��}t	|t
�sJ�|dk\r�-J�t
jt�5|jd��ddd�y#1swYyxYw)Nrg)�interval�d�rx)	r1r2�cpu_percent�range�
isinstance�floatr%r6rz)r9r:�_�percents    r;�test_cpu_percentzTestProcess.test_cpu_percent�s����N�N���	�
�
�u�
�%�	�
�
�u�
�%��s��A��m�m�T�m�2�G��g�u�-�-�-��c�>�!�>���]�]�:�
&�
�M�M�2�M�&�'�
&�
&�s�
B)�)B2c��tjdd��5}tj�j	�|j
sJ�	ddd�y#1swYyxYw)Nzpsutil.cpu_count)�return_value)rrVr1r2r��called)r9�ms  r;�test_cpu_percent_numcpus_nonez)TestProcess.test_cpu_percent_numcpus_none�s=��
�Z�Z�*��
>�!��N�N��(�(�*��8�8�O�8�?�
>�
>�s�1A�Ac
��tj�j�}|jdk\sJ|��|jdk\sJ|��|j
dk\sJ|��|jdk\sJ|��tr|jdk\sJ|��|jD]5}tjdtjt||����7y)Nr�z%H:%M:%S)r1r2�	cpu_times�user�system�
children_user�children_systemr�iowait�_fieldsr}�strftime�	localtime�getattr)r9�timesrys   r;�test_cpu_timeszTestProcess.test_cpu_times�s������ �*�*�,���z�z�S� �'�%�'� ��|�|�s�"�)�E�)�"��"�"�c�)�0�5�0�)��$�$��+�2�U�2�+���<�<�3�&�-��-�&��M�M�D��M�M�*�d�n�n�W�U�D�5I�&J�K�"rIz
not supportedc���tj�}|j�}|dk\sJ�tj�dk(r|dk(sJ�|j�t	tj��vsJ�y�Nrr`)r1r2�cpu_num�	cpu_countr�)r9r:�nums   r;�test_cpu_numzTestProcess.test_cpu_numsb���N�N����i�i�k���a�x��x������"��!�8�O�8��y�y�{�e�F�$4�$4�$6�7�7�7�7rIc��|j�}tj�}t|j�|z
�dksJ�tjdtj
|j���y)N�z%Y %m %d %H:%M:%S)r?r}�abs�create_timer�r�)r9r:�nows   r;�test_create_timezTestProcess.test_create_time
sW��������i�i�k���1�=�=�?�S�(�)�A�-�-�-��
�
�)�4�>�>�!�-�-�/�+J�KrIz
POSIX onlyc��tj�j�}|�1	tjjt
d��}||k(sJ�yy#t$rtjd�cYSwxYw)N�ttyzcan't rely on `tty` CLI)
r1r2�terminalr4�path�realpathr)�RuntimeErrorr%�skip)r9r�r�s   r;�
test_terminalzTestProcess.test_terminalsn���>�>�#�,�,�.����
'��g�g�&�&�r�%�y�1��
 �3��&�� �� �
>��{�{�#<�=�=�
>�s�(A�A8�7A8)�only_ifc���tj�}|j�}ttd�5}|j�ddd�|j�}tsxtsr|j|jkDsJ�|j|jk(sJ�trl|j|jkDsJ�|j|jk(s8J�|j|jk\sJ�|j|jk\sJ�|j�}t|j�d�5}|j!t#ddzd��ddd�|j�}|j|jk\sJ�|j|jk\sJ�|j|jk\sJ�|j|jk\sJ�tr6|j|jkDsJ�|j|jk\sJ�t%t'|��D]"}tr|dk\r�||dk\sJ�||dk\r�"J�y#1swY��xYw#1swY��	xYw)N�rb�wb�xi@B�asciir�r)r1r2�io_counters�openr�readrr�
read_count�write_countr�
read_chars�write_chars�
read_bytes�write_bytes�
get_testfn�write�bytesr��len)r9r:�io1�f�io2�is      r;�test_io_counterszTestProcess.test_io_counters!s���
�N�N����m�m�o��
�*�d�
#�q�
�F�F�H�$��m�m�o���3��>�>�C�N�N�2�2�2��?�?�c�o�o�5�5�5���~�~����6�6�6����#�/�/�9�9�9��>�>�S�^�^�3�3�3��?�?�c�o�o�5�5�5��m�m�o��
�$�/�/�#�T�
*�a�
�G�G�E�#��-��1�2�+��m�m�o�����#�/�/�1�1�1����#�/�/�1�1�1��~�~����/�/�/��~�~����/�/�/���?�?�S�_�_�4�4�4��>�>�S�^�^�3�3�3��s�3�x��A��q�A�v���q�6�Q�;��;��q�6�Q�;��;�!�7$�
#��+�
*�s�I�<I"�I�"I,z
linux onlyc�����fd�}tj��ts&�j�dtjk(sJ�tjdk(sJ�tj
dk(sJ�tjdk(sJ�tjdk(sJ��j�}|j||��jtj�t�j��tjdfk(sJ�tjt�5�jtjd��ddd��jtj�t�j��tjdfk(sJ��jtjd��t�j��tjdfk(sJ�tjt�5�jtjd��ddd�	�jtj
d��tjtd	�
�5�jtjd�ddd�tjtd	�
�5�jtjd�ddd�tjtd�
�5�jd��ddd�y#1swY���xYw#1swY��xYw#tj$rY��wxYw#1swY��xYw#1swY�~xYw#1swYyxYw)Nc�^��|\}}|tjk(rd}�j||�y�Nr)r1�IOPRIO_CLASS_NONE�ionice)�init�ioclass�valuer:s   �r;�cleanupz.TestProcess.test_ionice_linux.<locals>.cleanupLs-���!�N�G�U��&�2�2�2���
�H�H�W�e�$rIrr`r����r��zioclass accepts no value��matchz$'ioclass' argument must be specified)r1r2rr�r��IOPRIO_CLASS_RT�IOPRIO_CLASS_BE�IOPRIO_CLASS_IDLE�
addCleanup�tupler%r6rzrZ)r9r�r�r:s   @r;�test_ionice_linuxzTestProcess.test_ionice_linuxIsz���	%�
�N�N�����8�8�:�a�=�F�$<�$<�<�<�<��'�'�1�,�,�,��%�%��*�*�*��%�%��*�*�*��'�'�1�,�,�,��x�x�z�������&�	
����)�)�*��Q�X�X�Z� �V�%=�%=�q�$A�A�A�A�
�]�]�:�
&�
�H�H�V�-�-�Q�H�7�'�	
����'�'�(��Q�X�X�Z� �V�%;�%;�Q�$?�?�?�?�	����'�'�q��1��Q�X�X�Z� �V�%;�%;�Q�$?�?�?�?�
�]�]�:�
&�
�H�H�V�+�+�1�H�5�'�	�
�H�H�V�+�+�1�H�5��]�]�:�-G�
H�
�H�H�V�-�-�q�1�I�
�]�]�:�-G�
H�
�H�H�V�-�-�q�1�I�
�]�]��D�
�
�H�H�1�H��
�
�%'�
&��'�
&���"�"�	��	��I�
H��
H�
H��
�
�sN�#"L
�"L�-!L&�)!L?�-!M�1M�
L�L#�&L<�;L<�?M�M�M z!not supported on this win versionc���tj�}ts#|j�tjk(sJ�|j�}|j|j|�|jtj�|j�tjk(sJ�|jtj�|j�tjk(sJ�	|jtj�|j�tjk(sJ�tjtd��5|jtjd��ddd�tjtd��5|jtjdz�ddd�y#tj$rY��wxYw#1swY�ixYw#1swYyxYw)Nz&value argument not accepted on Windowsr�r`r�zis not a valid priority)r1r2rr��
IOPRIO_NORMALr��IOPRIO_VERYLOW�
IOPRIO_LOW�IOPRIO_HIGHrZr%r6�	TypeErrorrz)r9r:r�s   r;�test_ionice_winzTestProcess.test_ionice_winvsf��

�N�N�����8�8�:��!5�!5�5�5�5��x�x�z��������$�'�	
����&�&�'��x�x�z�V�2�2�2�2�2�	����"�"�#��x�x�z�V�.�.�.�.�.�	4�
�H�H�V�'�'�(��8�8�:��!3�!3�3�3�3�
�]�]��E�
�
�H�H�V�)�)��H�3�
��]�]�:�-F�
G�
�H�H�V�'�'�!�+�,�H�
G���"�"�	��	��

�
��H�
G�s*�/F=�"G�#G"�=G�G�G�"G+c��ddl}tjtj��}tt�D�cgc]}|j
d�s�|��}}|sJ|��|D]�}tt|�}|dk\sJ�|t|�vr>|t||�k(sJ�tr�?|j|�|j|�k(r�cJ�|j|�}t|�dk(sJ�|ddk\sJ�|ddk\r��J�ycc}w)Nr�RLIMITr�rxr`)�resourcer1r2r4r5�dir�
startswithr�r�rlimit�	getrlimitr�)r9r�r:r��namesryr��rets        r;�test_rlimit_getzTestProcess.test_rlimit_get�s�����N�N�2�9�9�;�'����K�B�K�q�1�<�<��+A��K��B���e��u��D��F�D�)�E��A�:��:��s�8�}�$����$� 7�7�7�7����x�x���(�*<�*<�U�*C�C�C�C��h�h�u�o���3�x�1�}�$�}��1�v��|�#�|��1�v��|�#�|���Cs�D�Dc��|j�}|jtjd�|jtj�dk(sJ�trRtjtd��5tjjd�jd�ddd�tjt�5|jtjd�ddd�y#1swY�LxYw#1swYyxYw)N)rarazcan't use prlimitr�r)rarara)
r?r�r1�
RLIMIT_NOFILErr%r6rz�_psplatformr2r8s  r;�test_rlimit_setzTestProcess.test_rlimit_set�s��������	����%�%�v�.��x�x��,�,�-��7�7�7�����z�1D�E��"�"�*�*�1�-�4�4�Q�7�F�
�]�]�:�
&�
�H�H�V�)�)�9�5�'�
&�F�E��
&�
&�s�6/C0�!C<�0C9�<Dc�x�tj�}|j�}|jtj�\}}	|jtjd|f�t|d�5}|j
d�ddd�tjt�5}t|d�5}|j
d�ddd�ddd�jjtjk(sJ�	|jtj||f�|jtj�||fk(sJ�y#1swY��xYw#1swY��xYw#1swY��xYw#|jtj||f�|jtj�||fk(sJ�wxYw)N�r�sXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXsXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX)
r1r2r�r��RLIMIT_FSIZEr�r�r%r6�OSErrorr��errno�EFBIG)r9r:�testfn�soft�hardr��excs       r;�test_rlimitzTestProcess.test_rlimit�sK���N�N������"���X�X�f�1�1�2�
��d�	A�
�H�H�V�(�(�4��,�7��f�d�#�q�����$�$����w�'�3��&�$�'�1��G�G�K�(�(�(��9�9�?�?�e�k�k�1�1�1�
�H�H�V�(�(�4��,�7��8�8�F�/�/�0�T�4�L�@�@�@�$�#��
(�'��(�'��

�H�H�V�(�(�4��,�7��8�8�F�/�/�0�T�4�L�@�@�@�sU�.E/�6E�!E/�)
E#�6E�E#�1E/�E�E/�E 	�E#�#E,�(E/�/A
F9c��tj�}|jtj�\}}	|jtjd|f�|jtjtj|f�t|j
�d�5}|jd�ddd�|jtj||f�|jtj�||fk(sJ�y#1swY�RxYw#|jtj||f�|jtj�||fk(sJ�wxYw)Nr�r�sXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX)r1r2r�r��
RLIM_INFINITYr�r�r�)r9r:r�r�r�s     r;�test_rlimit_infinityz TestProcess.test_rlimit_infinity�s	��
�N�N����X�X�f�1�1�2�
��d�	A�
�H�H�V�(�(�4��,�7�
�H�H�V�(�(�6�+?�+?��*F�G��d�o�o�'��.�!�����$�/�
�H�H�V�(�(�4��,�7��8�8�F�/�/�0�T�4�L�@�@�@�	/�.��
�H�H�V�(�(�4��,�7��8�8�F�/�/�0�T�4�L�@�@�@�s%�A,D�$D�6D�D�D�A
Ec���tj�}|jtj�\}}|tjk(sJ�|jtj||f�yr>)r1r2r�r�r)r9r:r�r�s    r;�test_rlimit_infinity_valuez&TestProcess.test_rlimit_infinity_value�sT��
�N�N����X�X�f�1�1�2�
��d��v�+�+�+�+�+�	����$�$�t�T�l�3rI�serial�ryc�L�tj�}tr	|j�}n|j�}t�5|j�}||dzk(sJ�	ddd�y#tj$rtjd�cYSwxYw#1swYyxYw)N�$on OpenBSD this requires root accessr`)r1r2r
�num_threadsrZr%r�r)r9r:�step1�step2s    r;�test_num_threadszTestProcess.test_num_threads�s���

�N�N����
K��
�
����M�M�O�E�
�\��M�M�O�E��E�A�I�%�%�%��\���&�&�
K��{�{�#I�J�J�
K��
�\�s�A,�B�,(B�B�B#zWINDOWS onlyc�V�tj�}|j�dkDsJ�yr�)r1r2�num_handlesr8s  r;�test_num_handleszTestProcess.test_num_handles�s$��
�N�N����}�}���"�"�"rIc���tj�}tr	|j�}n|j�}t�5|j�}t|�t|�dzk(sJ�|d}|j|dk(sJ�|j|dk(sJ�|j|dk(sJ�	ddd�y#tj$rtjd�cYSwxYw#1swYyxYw)Nrr`rr�)r1r2r
�threadsrZr%r�rr��id�	user_time�system_time)r9r:r	r
�athreads     r;�test_threadszTestProcess.test_threads�s����N�N����
K��	�	����I�I�K�E�
�\��I�I�K�E��u�:��U��a��/�/�/��A�h�G��:�:����+�+�+��$�$���
�2�2�2��&�&�'�!�*�4�4�4��\���&�&�
K��{�{�#I�J�J�
K��
�\�s�B?�A.C-�?(C*�)C*�-C6c���|j�}tr	|j�t|j�jtd�|j�D��z
�dksJ�t|j�jtd�|j�D��z
�dksJ�y#tj$rtjd�cYSwxYw)Nrc3�4K�|]}|j���y�wr>)r��.0r�s  r;�	<genexpr>z-TestProcess.test_threads_2.<locals>.<genexpr>s����(J�k�����k���g�������?c3�4K�|]}|j���y�wr>)rrs  r;rz-TestProcess.test_threads_2.<locals>.<genexpr>"s����*N�+�Q�1�=�=�+�r)r?r
rr1rZr%r�r�r�r��sumr�r8s  r;�test_threads_2zTestProcess.test_threads_2s���
������
K��	�	��
����
�"�"�S�(J�a�i�i�k�(J�%J�J�K��
�	
�
�
����
�$�$�s�*N�!�)�)�+�*N�'N�N�O��
�	
�
���&�&�
K��{�{�#I�J�J�
K�s�B;�;(C&�%C&c��tj�}|j�dd\}}|j�}|dkDsJ�|dkDsJ�dgdz}|j�dd\}}|j�}||kDsJ�||k\sJ�||kDsJ�~trF|j�}	|	j
|	jk(sJ�|	j|	jk(sJ�|j�}	|	jD]}
t|	|
�dk\r�J�y)Nr�ri`�)r1r2�memory_info�memory_percentr
�rss�wset�vms�pagefiler�r�)r9r:�rss1�vms1�percent1�memarr�rss2�vms2�percent2�memrys           r;�test_memory_infozTestProcess.test_memory_info&s���N�N����]�]�_�R�a�(�
��d��#�#�%���a�x��x��a�x��x���'�!���]�]�_�R�a�(�
��d��#�#�%���d�{��{��t�|��|��(�"�"�"����-�-�/�C��7�7�c�h�h�&�&�&��7�7�c�l�l�*�*�*��m�m�o���K�K�D��3��%��*�*�*� rIc��tj�}tj�j}|j	�}|j
D].}t
||�}|dk\sJ�|dk(rtstr�(||kr�.J�tststr|jdk\sJ�tr#|jdk\sJ�|jdk\sJ�yy)Nrr$)r1r2�virtual_memory�total�memory_full_infor�r�rrr
r�uss�pss�swap)r9r:r1r-ryr�s      r;�test_memory_full_infoz!TestProcess.test_memory_full_infoEs����N�N����%�%�'�-�-��� � �"���K�K�D��C��&�E��A�:��:���
�#�%���E�>�!�>� ��G�u��7�7�a�<��<���7�7�a�<��<��8�8�q�=� �=�rIc���tj�}|j�}t|�tt	|��k(sJ�|jd��}|D�]W}|j
j
d�r� tr|j
dk(r�6tj
j|j
�sJ|j
��tre	tj
j|j
�s:tj
j|j
�sJ|j
����dtj
j#|j
�vs��	tj$|j
�}t%j&|j(�r��IJ|j
��|D]Q}|j,D]@}t/||�}	|dk(r�|d	vr
|	r�J|	��t1|	t2�sJ�|	d
k\r�;J|	���Sy#t$rNts�td�5}|j!�}ddd�n#1swYnxYw|j
�d�vr�Y��wxYw#t*$rY��wxYw)NF)�grouped�[�pvclockz/proc/self/smapsz
 (deleted)�64r�>�addr�permsr)r1r2�memory_mapsr��setr�r�rr4�isabsr�exists�islink�AssertionErrorrrr��basename�stat�S_ISREG�st_mode�FileNotFoundErrorr�r�r��int)
r9r:�maps�ext_maps�ntr��data�st�fnamer�s
          r;�test_memory_mapszTestProcess.test_memory_mapsUs���N�N����}�}����4�y�C��D�	�N�*�*�*��=�=��=�/���B��w�w�!�!�#�&���r�w�w�)�+���7�7�=�=����)�2�2�7�7�2�)����7�7�>�>�"�'�'�2�b�g�g�n�n����7���w�w�����R�W�W�-�-�b�g�g�6�6�=�������)�B� �<�<��
�
�3�<�R�W�W�<�3�;�>�B�������E�*���F�?���-�-� �'�%�'�5�%�e�S�1�1�1� �A�:�,�u�,�:�$���'&�� ��"�#5�6�!� �v�v�x��7�6�6���'�'��*�-�T�9��:�
��)����s=�A#H
�$I'�
I$�(I�9	I$�I�I$�#I$�'	I4�3I4c���tj�}t�5}d�}|j�D�cgc]}||j���}}||�|vsJ�	ddd�ycc}w#1swYyxYw)Nc�z�tjjtjj|��Sr>)r4r�r��normcase�r:s r;�normpathz8TestProcess.test_memory_maps_lists_lib.<locals>.normpath�s&���w�w�'�'����(8�(8��(;�<�<rI)r1r2r!r>r�)r9r:r�rUr��libpathss      r;�test_memory_maps_lists_libz&TestProcess.test_memory_maps_lists_lib�sk��
�N�N���
 �
"�d�
=�34�-�-�/�B�/�Q�����(�/�H�B��D�>�X�-�-�-�
#�
"��
C�#�
"�s�A+�A&�A+�&A+�+A4c��tj�}|j�tjt
�5|jd��ddd�tststr|jd��yy#1swY�/xYw)Nz?!?)�memtyper3)	r1r2r!r%r6rzrrr
r8s  r;�test_memory_percentzTestProcess.test_memory_percent�sb���N�N���	����
�]�]�:�
&�
���U��+�'��E�W�
���U��+�%�'�
&�s�A?�?Bc���|j�}|j�sJ�|j�sJ�|j�|j�|j�rJ�|j�rJ�yr>)r?�
is_runningr@rAr8s  r;�test_is_runningzTestProcess.test_is_running�s^��������|�|�~��~��|�|�~��~�	����	�����<�<�>�!�!��<�<�>�!�!�>rIc��|j�}|j�}	|tk(sJ�	t|ddg�}|dk(sJ�y#t$r�trLt|�tt�k(r1tjj}||�|t�k(sgJ�tjd�dtjd��}	|j|d�tj|d�k(sJ�n#t$rYnwxYwY��wxYw)Nr�.r`�r]zimport os; print('hey')�hey)
r?�exerrCr
r�r4r�rS�sys�version_info�replacer))r9r:rbrS�ver�outs      r;�test_exezTestProcess.test_exe�s���������e�e�g��	��*�$�$�$�(�#�t�6�7�8���e�|��|��)�	��3�s�8�s�:��6��7�7�+�+����}���(<�<�<�<��)�)�!�,�-�Q�s�/?�/?��/B�.C�D����;�;�s�B�/�:�3E�3E�c�2�3N�N�N�N��%�����	�s6�A�BD�	+C5�4D�5	D�>D�D�D�Dc��tddg}|j|�}tr(|j�gk(rt	j
d�Stststr|j�dtk(sJ�ytr\trV|j�d}|tk7r:dj|j�dd�dj|dd�k(sJ�ydj|j��dj|�k(sJ�y)Nr]�2import time; [time.sleep(0.1) for x in range(100)]�OPENBSD: returned EBUSYr� r`)rr?r	�cmdliner%r�r
rrr�join)r9rmr:�pyexes    r;�test_cmdlinezTestProcess.test_cmdline�s�����@�
��

���g�&���a�i�i�k�R�'��;�;�8�9�9��W���9�9�;�q�>�Z�/�/�/����	�	��A����J�&��8�8�A�I�I�K���O�4��������8M�M�M�M���8�8�A�I�I�K�(�C�H�H�W�,=�=�=�=rIc��tg}|jdgdz�|jddg�|j|�}|dd}tr	|j	�dd|k(sJ�y|j	�dd}tr|gk(rtjd�S||k(sJ�y#t
j$rtjd�cYSwxYw)Nz-v�2r]rjr`z#OPENBSD: process turned into zombierk)
r�extendr?r
rmr1�
ZombieProcessr%r�r	)r9rmr:r�s    r;�test_long_cmdlinezTestProcess.test_long_cmdline�s����,������v��{�#����
�G�H�	
�
���g�&���!�"�+���
J��y�y�{�1�2��'�1�1�1��)�)�+�a�b�/�C��#��)��{�{�#<�=�=��'�>�!�>���'�'�
J��{�{�#H�I�I�
J�s�
B!�!(C�Cc�p�|j�}|j�j�}|jd�r|dd}tj
j
tj
jtj��j�}|j|�s	J||f��y)N�trx)r?ry�lower�endswithr4r�rDr�rc�
executabler�)r9r:ryros    r;�	test_namezTestProcess.test_name�s���������v�v�x�~�~����=�=������9�D���� � ����!1�!1�#�.�.�!A�B�H�H�J������%�4��t�}�4�%rIc�>�t|jtjdz���}|ddg}|j	|�}t
r4	|j
�tjj|�k(sJ�y|j
�tjj|�k(sJ�y#t$rc|j�tjk(r>tjj|�j|j
��sJ��YywxYw)Nr�)�suffixr]rj)r#r��string�digitsr?r
ryr4r�rDrC�statusr1�
STATUS_ZOMBIEr�)r9rormr:s    r;�test_long_namezTestProcess.test_long_name�s����d�o�o�V�]�]�Q�5F�o�G�H����@�
��

���g�&���
��v�v�x�2�7�7�#3�#3�E�#:�:�:�:��6�6�8�r�w�w�/�/��6�6�6�6��
"�
��8�8�:��!5�!5�5��7�7�+�+�E�2�=�=�a�f�f�h�G�G�G��H�
�s�
2B0�0A)D�Dc�(�tj�}|j�\}}}|tj�k(sJ�|tj
�k(sJ�t
td�r(tj�|j�k(sJ�yy�N�	getresuid)r1r2�uidsr4�getuid�geteuid�hasattrr��r9r:�real�	effective�_saveds     r;�	test_uidszTestProcess.test_uids�s���N�N���"#�&�&�(���i���r�y�y�{�"�"�"��B�J�J�L�(�(�(��2�{�#��<�<�>�Q�V�V�X�-�-�-�$rIc�(�tj�}|j�\}}}|tj�k(sJ�|tj
�k(sJ�t
td�r(tj�|j�k(sJ�yyr�)r1r2�gidsr4�getgid�getegidr��	getresgidr�s     r;�	test_gidszTestProcess.test_gids#r�rIc�f���fd�}tj��tjt�5�jd�ddd��j�}|j
||�tr�d}tjtjtjtjtjtjfD]�}|j|��5	�j|��j�}|tjtjtjhvr||k(s|�|}||k(s	J�||k(sJ�ddd���y	t!t"d�rIt#j$t"j&t#j(���j�k(sJ��jd��j�dk(sJ�t!t"d�rIt#j$t"j&t#j(���j�k(sJ�t*s'�jd��j�dk(sJ�yy#1swY��"xYw#tj$rY��5wxYw#1swY���xYw#tj$rYywxYw)Nc�\��	�j|�y#tj$rYywxYwr>)�nicer1rZ)r�r:s �r;r�z&TestProcess.test_nice.<locals>.cleanup1s+���
����t����&�&�
��
�s��+�+�str)�prio�getpriorityr`r)r1r2r%r6r�r�r�r
�IDLE_PRIORITY_CLASS�BELOW_NORMAL_PRIORITY_CLASS�NORMAL_PRIORITY_CLASS�ABOVE_NORMAL_PRIORITY_CLASS�HIGH_PRIORITY_CLASS�REALTIME_PRIORITY_CLASS�subTestrZr�r4r��PRIO_PROCESSr5r)r9r�r��highest_prior��new_prior:s      @r;�	test_nicezTestProcess.test_nice0s)���	�
�N�N���
�]�]�9�
%�
�F�F�5�M�&��v�v�x�������&���L��*�*��2�2��,�,��2�2��*�*��.�.�
���\�\�t�\�,�4����t��$%�6�6�8��
 �"�>�>�"�6�6�"�:�:�$��
 (�4�/�<�3G�/3��'/�<�'?� ?�'?�#+�t�#3�3�#3�)-�,��<
��2�}�-����r����	�	��D��6�6�8�$��$����q�	��v�v�x�1�}�$�}��2�}�-����r����	�	��D��6�6�8�$��$�
��F�F�1�I��6�6�8�q�=�(�=��i&�
%��$"�.�.�����-�,��P�&�&�
��
�sO�I&�)J
�+I3�<AJ
� DJ�&I0�3J
�J
�	J
�
J
�
J	�J0�/J0c�r�tj�}|j�tjk(sJ�yr>)r1r2r��STATUS_RUNNINGr8s  r;�test_statuszTestProcess.test_statusrs(���N�N����x�x�z�V�2�2�2�2�2rIc��|j�}|j�}tr�|jd�\}}t	j
�}|j
d�rtjd�S||k(sJ�dtjvr|tjdk(sJ�yy|t	j
�k(sJ�y)N�\�$zrunning as service account�
USERDOMAIN)r?�usernamer
�split�getpass�getuserryr%r�r4�environ)r9r:r��domain�getpass_users     r;�
test_usernamezTestProcess.test_usernamevs���������:�:�<���'�~�~�d�3��F�H�"�?�?�,�L��$�$�S�)��{�{�#?�@�@��|�+�+�+��r�z�z�)�����L�!9�9�9�9�*��w���0�0�0�0rIc�r�|j�}|j�tj�k(sJ�yr>)r?�cwdr4�getcwdr8s  r;�test_cwdzTestProcess.test_cwd�s*��������u�u�w�"�)�)�+�%�%�%rIc�V��tddg}|j|��t�fd��y)Nr]zFimport os, time; os.chdir('..'); [time.sleep(0.1) for x in range(100)]c����j�tjjtj��k(Sr>)r�r4r��dirnamer�rTs�r;�<lambda>z(TestProcess.test_cwd_2.<locals>.<lambda>�s#���1�5�5�7�b�g�g�o�o�b�i�i�k�&B�BrI)rr?r )r9rdr:s  @r;�
test_cwd_2zTestProcess.test_cwd_2�s0������	
��
���c�"���B�CrIc	�`�tj�}|j�}|sJ|��|j|j|�t	t
d�r-|t
tj|j��k(sJ�t|�tt|��k(sJ�t
tttjd�����}|D]�}|j|g�|j�|gk(sJ�t	t
d�r;|j�t
tj|j��k(sJ�t	|d�s��|j�d|j�k(r��J�|jg�tr-|j�|jj!�k(sJ�|j�|k(sJ�t	t
d�r;|j�t
tj|j��k(sJ�t#j$t&�5|jd�ddd�|j|�|jt|��|jt)|��y#1swY�OxYw)N�sched_getaffinityT��percpu�num_cpurr`)r1r2�cpu_affinityr�r�r4�listr�r3r�r?r�r�r�r�_proc�_get_eligible_cpusr%r6r�r�)r9r:�initial�all_cpus�ns     r;�test_cpu_affinityzTestProcess.test_cpu_affinity�s����N�N����.�.�"������w��������0��2�*�+��d�2�#7�#7����#>�?�?�?�?��7�|�s�3�w�<�0�0�0�0���c�&�"4�"4�D�"A�B�C�D���A�
�N�N�A�3���>�>�#��s�*�*�*��r�.�/��~�~�'�4��0D�0D�Q�U�U�0K�+L�L�L�L��q�)�$��~�~�'��*�a�i�i�k�9�9�9��	
���r����>�>�#�q�w�w�'A�'A�'C�C�C�C��>�>�#�x�/�/�/��2�*�+��>�>�#�t�B�,@�,@����,G�'H�H�H�H�
�]�]�9�
%�
�N�N�1��&�	���w��	���s�8�}�%�	���u�X��'�&�
%�s�J$�$J-c��|j�}ttjd���dzg}t	j
t�5|j|�ddd�t	j
t�5|jtdd��ddd�t	j
ttf�5|jddg�ddd�t	j
t�5|jddg�ddd�y#1swY��xYw#1swY��xYw#1swY�WxYw#1swYyxYw)	NTr��
i'i�*r�1rx)
r?r�r1r�r%r6rzr�r�r�)r9r:�invalid_cpus   r;�test_cpu_affinity_errsz"TestProcess.test_cpu_affinity_errs�s���������6�+�+�4�8�9�B�>�?��
�]�]�:�
&�
�N�N�;�'�'�
�]�]�:�
&�
�N�N�5���.�/�'�
�]�]�I�z�2�
3�
�N�N�A�s�8�$�4�
�]�]�:�
&�
�N�N�A�r�7�#�'�
&�
'�
&��
&�
&��
3�
3��
&�
&�s0�
D�D!�D-�8D9�D�!D*�-D6�9Ec���tj�}|j�}|sJ|��|j|j|�t	|�dkDr|dd}g}tt	|�dz�D].}|j
d�tj||�D���0|D]:}|j|�t|j��t|�k(r�:J�y)N�r`c3�6K�|]}|r
t|����y�wr>)r�)r�subsets  r;rzATestProcess.test_cpu_affinity_all_combinations.<locals>.<genexpr>�s�����@�F���V��@�s�)
r1r2r�r�r�r�rs�	itertools�combinations�sorted)r9r:r��combosr��combos      r;�"test_cpu_affinity_all_combinationsz.TestProcess.test_cpu_affinity_all_combinations�s����N�N����.�.�"������w��������0��w�<�"���c�r�l�G����s�7�|�a�'�(�A��M�M��'�4�4�W�a�@��
�)��E�
�N�N�5�!��!�.�.�*�+�v�e�}�<�<�<�rIz
broken on BSDc����tj��|j�}�j��|�vsJ�t	|d�5}|jd�|j
�t��fd���j���D�cgc]+}tjj|j���-}}tjj|�|vsJ�tr(�D]#}|j|k(s�|jdk(r�#J�ddd��D]2}tjj|j�r�-J|��d|�d�}|jtd|g��t!d�D]a}�j�D�cgc]+}tjj|j���-}}||vrn:t#j$d	��ctjj|�vsJ�|D](}tjj|�r�#J|��ycc}w#1swY��$xYwcc}w)
Nr�sxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxc�N��t�j��t��k7Sr>)r��
open_files)�filesr:s��r;r�z-TestProcess.test_open_files.<locals>.<lambda>�s���s�1�<�<�>�2�c�%�j�@rIr�zimport time; f = open(r'z/', 'r'); [time.sleep(0.1) for x in range(100)];r]r�rp)r1r2r�r�r�r��flushr r4r�rSr�position�isfiler?rr�r}�sleep)	r9r�r�r��	filenames�filermr�r:s	       @@r;�test_open_fileszTestProcess.test_open_files�s�����N�N������"��������U�"�"�"�
�&�$�
�1�
�G�G�K� �
�G�G�I��@�A��L�L�N�E�;@�A�5�a����)�)�!�&�&�1�5�I�A��7�7�#�#�F�+�y�8�8�8��!�D��y�y�F�*�#�}�}��4�4�4�"� ��D��7�7�>�>�$�)�)�,�2�d�2�,��
'�v�h�/�
�	�
���z�4��9�:���s��A�;<�<�<�>�J�>�a����)�)�!�&�&�1�>�I�J���"���J�J�t��	��7�7�#�#�F�+�y�8�8�8��D��7�7�>�>�$�'�-��-�'���/B�
 �
��.Ks1�	AH3�0H.�>?H3�>H3�H3�0I�.H3�3H=c�@�tj�}tjj}|j�}t
|d�5}|j�D]F}||j�||j�k(s|j|j�k(s�Fn0tjd|j����cddd�S||j�||j�k(sJ�tr|jdk(s!J�|j|j�k(sJ�|j�d}|d|jk(sJ�|d|jk(sJ�|j|j�vsJ�	ddd�y#1swYyxYw)N�wzno file found; files=rxrr`)r1r2r4r�rSr�r�r�ry�fd�filenor%r~r
)r9r:rSr��fileobjr��ntuples       r;�test_open_files_2zTestProcess.test_open_files_2	sJ��
�N�N����7�7�#�#�����"��
�&�#�
�'�������T�Y�Y�'�8�G�L�L�+A�A��w�w�'�.�.�"2�2��'��{�{�%:�1�<�<�>�:L�#M�N��
��D�I�I�&�(�7�<�<�*@�@�@�@���w�w�"�}�$�}��w�w�'�.�.�"2�2�2�2��\�\�^�A�&�F��!�9����+�+�+��!�9��	�	�)�)�)��<�<�q�|�|�~�5�5�5�'�
�
�s�AF�"(F�B6F�Fc��tj�}|j�}|j�}t	|d�5|j�|dzk(sJ�tj
�5|j�|dzk(sJ�	ddd�ddd�|j�|k(sJ�y#1swY�'xYw#1swY�+xYw)Nr�r`r�)r1r2r��num_fdsr��socket)r9r:r��starts    r;�test_num_fdszTestProcess.test_num_fds$s���
�N�N������"���	�	���
�&�#�
��9�9�;�%�!�)�+�+�+������y�y�{�e�a�i�/�/�/�!���y�y�{�e�#�#�#�!����
�s$�-B:�.B.�B:�.B7	�3B:�:Cz not reliable on OPENBSD & NETBSDc��tj�}t|j��}t	d�D]7}tjd�t|j��}||kDs�7ytjd�S)Nr�g�������?z2num ctx switches still the same after 2 iterations)	r1r2r�num_ctx_switchesr�r}r�r%r~)r9r:�beforer��afters     r;�test_num_ctx_switchesz!TestProcess.test_num_ctx_switches0sp��

�N�N����Q�'�'�)�*���q��A��J�J�t����*�*�,�-�E��v�~��	�
�{�{�@�
�	
rIc��tj�}ttd�r'|j	�tj
�k(sJ�|j
�}|j	�tj�k(sJ�y)N�getppid)r1r2r�r4�ppidr�r?r5r8s  r;�	test_ppidzTestProcess.test_ppid@sZ���N�N����2�y�!��6�6�8�r�z�z�|�+�+�+�������v�v�x�2�9�9�;�&�&�&rIc��|j�}|j�jtj�k(sJ�tj�d}tj|�j��J�yr�)r?�parentr3r4r5r1�pidsr2)r9r:�
lowest_pids   r;�test_parentzTestProcess.test_parentGs\��������x�x�z�~�~�����,�,�,��[�[�]�1�%�
��~�~�j�)�0�0�2�:�:�:rIc���|j�}|j�|jsJ�d|_|j�jtj�k(sJ�y�Nr`)r?r��_create_timer�r3r4r5r8s  r;�test_parent_mocked_ctimez$TestProcess.test_parent_mocked_ctimeNsL��
�����	�
�
���~�~��~�����x�x�z�~�~�����,�,�,rIc��tj�}|j�\}}|j�|k(sJ�|j�|k(sJ�yr>)r1r2rqr��r9r�rrrss    r;�test_parent_multizTestProcess.test_parent_multiZsL�����!�� �4�4�6���z�� � �"�e�+�+�+��|�|�~��'�'�'rIc��tj�}|j�sJ�|j�\}}|j�d|k(sJ�|j�d|k(sJ�|j�d|k(sJ�yr�)r1r2�parentsrqrs    r;�test_parentszTestProcess.test_parents`s������!���~�~���� �4�4�6���z��}�}��q�!�V�+�+�+��!�!�#�A�&�%�/�/�/��!�!�#�A�&�&�0�0�0rIc��tj�}|j�rJ�|jd��rJ�|jd��}|j�}|jd��}||fD]R}t	|�dk(sJ�|dj
|j
k(sJ�|dj
�|j
k(r�RJ�y)NT��	recursiver��
creationflagsr`)r1r2�childrenr?r�r3r��r9r�rr�	children1�	children2rs      r;�
test_childrenzTestProcess.test_childrenis������!���?�?�$�$�$��?�?�T�?�2�2�2��!�!��!�2���O�O�%�	��O�O�d�O�3�	�"�I�.�H��x�=�A�%�%�%��A�;�?�?�e�i�i�/�/�/��A�;�#�#�%����3�3�3�/rIc��tj�}|j�|jsJ�|xjdz
c_|j	�rJ�|j	d��rJ�|jd��}|j	�}|j	d��}||fD]R}t
|�dk(sJ�|dj|jk(sJ�|dj�|jk(r�RJ�y)Ni��Trrr
r`)	r1r2r�rrr?r�r3r�rs      r;�test_children_mocked_ctimez&TestProcess.test_children_mocked_ctimexs������!�������"�"�"�"����v�%���?�?�$�$�$��?�?�T�?�2�2�2��!�!��!�2���O�O�%�	��O�O�d�O�3�	�"�I�.�H��x�=�A�%�%�%��A�;�?�?�e�i�i�/�/�/��A�;�#�#�%����3�3�3�/rIc��tj�}|j�\}}|j�|gk(sJ�|jd��||gk(sJ�|j	�|j�|jd��rJ�y)NTr)r1r2rqrrKrArs    r;�test_children_recursivez#TestProcess.test_children_recursive�s������!�� �4�4�6���z���� �U�G�+�+�+������.�5�*�2E�E�E�E�	����
�
�
���?�?�T�?�2�2�2�2rIc��tjt�}tj�D]}	||j�xxdz
cc<� t|j�d���d}tr|dk(rtjd�Stj|�}	|jd��}t|�tt|��k(sJ�y#tj$rY��wxYw#tj $rYywxYw)Nr`c��|dSr�)r�s r;r�z6TestProcess.test_children_duplicates.<locals>.<lambda>�s��q��trI)�keyrzPID 0Tr)�collections�defaultdictrIr1�process_iterr��Error�max�itemsrr%r�r2rr�r?rZ)r9�tabler:r3�cs     r;�test_children_duplicatesz$TestProcess.test_children_duplicates�s����'�'��,���$�$�&�A�
��a�f�f�h��1�$��'��%�+�+�-�^�4�Q�7���S�A�X��;�;�w�'�'��N�N�3���	)��
�
�T�
�*�A��q�6�S��Q��[�(�(�(���<�<�
��
���"�"�	��	�s#�C�$C2�C/�.C/�2D�Dc��tj�}|j�\}}|jd��}t	|�dk(sJ�|d|k(sJ�|d|k(sJ�|j�}|d|k(sJ�|d|k(sJ�y)NTrr�rr`)r1r2rqrr�r)r9r�rrrsrrs      r;�test_parents_and_childrenz%TestProcess.test_parents_and_children�s������!�� �4�4�6���z��?�?�T�?�2���8�}��!�!�!���{�e�#�#�#���{�j�(�(�(��$�$�&���q�z�U�"�"�"��q�z�V�#�#�#rIc�:�|j�}|j�td�D]:}|j�tj
k(rnt
jd��<|j�|j�tj
k7sJ�y)Nr�rp)	r?rlr�r�r1�STATUS_STOPPEDr}r�rm)r9r:r�s   r;�test_suspend_resumezTestProcess.test_suspend_resume�so�������	�	�	���s��A��x�x�z�V�2�2�2���J�J�t���	
���
��x�x�z�V�2�2�2�2�2rIc��tjt�5tjd�ddd�tjt
�5tjd�ddd�y#1swY�AxYw#1swYyxYw)Nr�rx)r%r6r�r1r2rz)r9s r;�test_invalid_pidzTestProcess.test_invalid_pid�sO��
�]�]�9�
%��N�N�3��&�
�]�]�:�
&��N�N�2��'�
&�&�
%��
&�
&�s�A0�A<�0A9�<Bc���tj�}|jddg��}t|j	��ddgk(sJ�tjttj���}|jdgd��}t|dt�s
|ddk(sJ�tjddtj�	�5|jd
gd��d
dik(sJ�	ddd�tjddtj|jd��	�5tjtj�5|jd
g��ddd�ddd�tjddtj |jd��	�5|jd
gd��d
dik(sJ�	ddd�tjddt"�	�5|j�}d
t|j	��vsJ�tjt"�5|jd
g��ddd�ddd�tjt$�5|jd�ddd�tjt&�5|jdg�ddd�tjt&�5|jddg�ddd�y#1swY��xYw#1swY���xYw#1swY���xYw#1swY��UxYw#1swY��xYw#1swY��xYw#1swY��xYw#1swY��xYw#1swYyxYw)
Nrbry)�attrs�net_connections�foo)r-�ad_valuezpsutil.Process.niceT)�createrUr�r`�bar)r1r2�as_dictr��keys�minr�r�r�rrVrZrXr3r%r6rt�NotImplementedErrorr�rz)r9r:�ds   r;�test_as_dictzTestProcess.test_as_dict�s����N�N���
�I�I�U�F�O�I�,���a�f�f�h��E�6�?�2�2�2��N�N�3�v�{�{�}�-�.��
�I�I�.�/�%�I�@���!�-�.��5��&�'�5�0�0�0��Z�Z�!�$�F�<O�<O�
��9�9�F�8�a�9�8�V�Q�K�G�G�G�
��Z�Z�!���,�,�Q�U�U�F�;�
�
���v�3�3�4��	�	���	�)�5�
��Z�Z�!���,�,�Q�U�U�F�;�
�
�9�9�F�8�e�9�<����O�O�O�
��Z�Z�!�$�<O�
��	�	��A���a�f�f�h��/�/�/����2�3��	�	���	�)�4�

��]�]�9�
%�
�I�I�f��&�
�]�]�:�
&�
�I�I�u�g��'�
�]�]�:�
&�
�I�I�u�e�n�%�'�
&�M
�
��5�4��
�
��
�
��4�3��

�
��&�
%��
&�
&��
&�
&�s��K2�+$L�K?�#L�)L�*AL2�1L&�L2�.L>�!M
�M�2K<�?L		�L�L�L#�&L/	�+L2�2L;�>M�
M�Mc���tj�}tjd�5}|j	�5|j�|j�ddd�|jdk(sJ�	ddd�tjd�5}|j�|j�ddd�jdk(sJ�y#1swY�sxYw#1swY�exYw#1swY�3xYw)N�$psutil._psplatform.Process.cpu_timesr`r��r1r2rrV�oneshotr��
call_count�r9r:r�s   r;�test_oneshotzTestProcess.test_oneshots����N�N���
�Z�Z�>�
?�1��������
����
���<�<�1�$�$�$�	@��Z�Z�>�
?�1�
�K�K�M�
�K�K�M�@��|�|�q� � � ����@�
?��@�
?�s.�C�!C�C�!C&�C	�C�C#�&C/c	���tj�}tjd�5}tjd�5}|j	�5|j�|j�|j	�5|j�|j�ddd�ddd�|jdk(sJ�|jdk(sJ�	ddd�ddd�tjd�5}|j�|j�ddd�jdk(sJ�y#1swY��xYw#1swY��xYw#1swY�yxYw#1swY�}xYw#1swY�KxYw)Nr:z(psutil._psplatform.Process.oneshot_enterr`r�r;)r9r:�m1�m2r�s     r;�test_oneshot_twicezTestProcess.test_oneshot_twices��
�N�N���
�Z�Z�>�
?�2����F�G�2��Y�Y�[��K�K�M��K�K�M��������
����
�%�!��}�}��)�)�)��}�}��)�)�)�H�@��Z�Z�>�
?�1�
�K�K�M�
�K�K�M�@��|�|�q� � � �%���!�[��H�G��@�
?��@�
?�s_�E�E�1E�!D6	�#E�+*E�E�;!E&�6D?
�;E�E�E�E	�E�E#�&E/c��|j�\}}|j�}|j�}||k7sJ�|j�5|j�|k(sJ�|j�|k(sJ�	ddd�|j�5|j�|k(sJ�|j�|k(sJ�	ddd�y#1swY�NxYw#1swYyxYwr>)rqr�r<)r9�p1�p2�p1_ppid�p2_ppids     r;�test_oneshot_cachezTestProcess.test_oneshot_cache#s����)�)�+���B��'�'�)���'�'�)���'�!�!�!�
�Z�Z�\��7�7�9��'�'�'��7�7�9��'�'�'���Z�Z�\��7�7�9��'�'�'��7�7�9��'�'�'��\��\���\�s�+C�+C�C
�Cc�$��d�}|j���j��j�trt	�fd��|j��t
��}|j|j�D]\}}|||��y)Nc���	|�}tr|dvrytj|�d|�d��S#tj$r�tj
$rYytj$rtr|dvrYy�wxYw)N>rbryz didn't raise NSP and returned z instead>rr)r
r%r~r1rtrXrZr
)�fun�fun_namer�s   r;�assert_raises_nspzFTestProcess.test_halfway_terminated_process.<locals>.assert_raises_nsp:s���
��e���x�?�:���{�{��g�<�S�G�8�L�����'�'�
���'�'�
���&�&�
��x�+E�E���
�s�/�&A7�A7�5A7c�D���jtj�vSr>)r3r1r�rTs�r;r�z=TestProcess.test_halfway_terminated_process.<locals>.<lambda>Qs���q�u�u�F�K�K�M�9rI)	r?rKrAr
r rEr$�iter�all)r9rN�nsrLryr:s     @r;�test_halfway_terminated_processz+TestProcess.test_halfway_terminated_process2sr���	�&
�����	���
�	������9�:����a� �
�q�
!���������I�C���c�4�(�)rIc�z�|j�\}}|j|�ttjj
d�rstjj
j
tj��rJ�tjj
j
|j�sJ�yy)N�proc_is_zombie)
�spawn_zombie�assert_proc_zombier�r1r��cextrUr4r5r3)r9�_parent�zombies   r;�test_zombie_processzTestProcess.test_zombie_processXs����+�+�-��������'��6�%�%�*�*�,<�=��)�)�.�.�=�=�b�i�i�k�J�J�J��%�%�*�*�9�9�&�*�*�E�E�E�>rIc���tj�}tjdtjd���5}|j�sJ�|jsJ�	ddd�y#1swYyxYw)Nzpsutil.ProcessrrT)r1r2rrVrtr\r�r>s   r;�$test_zombie_process_is_running_w_excz0TestProcess.test_zombie_process_is_running_w_exc`sX��
�N�N���
�Z�Z��&�*>�*>�q�*A�
�
��<�<�>�!�>��8�8�O�8�	
�
�
�s�!A*�*A3c��tj�}tjdtjd���5}|j�tjk(sJ�|jsJ�	ddd�y#1swYyxYw)Nz!psutil._psplatform.Process.statusrrT)r1r2rrVrtr�r�r�r>s   r;� test_zombie_process_status_w_excz,TestProcess.test_zombie_process_status_w_excksg��
�N�N���
�Z�Z�/��,�,�Q�/�
���8�8�:��!5�!5�5�5�5��8�8�O�8�
�
�
�s�2A;�;Bc�&�|j�}tj|j�}|j|j	�dzf|_t
tj��|jtjvsJ�|j�rJ�tjjtjdd�5tjt!j"��5}t
tj��ddd�ddd�d|j��j%�vsJ�|jtjvsJ�|tj|j�k7sJ�d}t'|�}|j)|j*|j,zd��D]U\}}|j/|��5t1j2tj4|�	�5|�ddd�ddd��Wd
t7|�vsJ�d
t9|�vsJ�t1j2tj4|�	�5|j;�ddd�t1j2tj4|�	�5|j=�ddd�t1j2tj4|�	�5|j?�ddd�t1j2tj4|�	�5|jA�ddd�y#1swY��xYw#1swY�� xYw#1swY��ExYw#1swY���xYw#1swY��xYw#1swY��xYw#1swY��xYw#1swYyxYw)Nr��PSUTIL_DEBUGTz+refreshing Process instance for reused PID z4process no longer exists and its PID has been reusedF)�clear_cacherr�zterminated + PID reused)!�
spawn_subprocr1r2r3r��_identr�r�_pmapr\rrV�object�_common�
contextlib�redirect_stderr�io�StringIO�getvaluer$rP�setters�killersr�r%r6rXr��reprr�r�rr)r9�subpr:r��msgrRrLrys        r;�test_reused_pidzTestProcess.test_reused_pidws~���!�!�#���N�N�4�8�8�$���E�E�1�=�=�?�S�0�1����V�
 �
 �
"�#��u�u����$�$�$��<�<�>�!�!��Z�Z�
�
�v�~�~�~�t�
D��+�+�B�K�K�M�:�a��V�(�(�*�+�;�E�:�!�%�%��A��z�z�|�
�	
�
��u�u�F�L�L�(�(�(��F�N�N�4�8�8�,�,�,�,�D��
�q�
!��������b�j�j�!8�e��L�I�C�����4��(��]�]�6�#7�#7�s�C��E�D�)�(�M�
)�C��F�2�2�2�(�D��G�3�3�3�
�]�]�6�/�/�s�
;�
�F�F�H�<�
�]�]�6�/�/�s�
;�
�H�H�J�<�
�]�]�6�/�/�s�
;�
�I�I�K�<�
�]�]�6�/�/�s�
;�
�J�J�L�<�
;�3;�:��E�
D��D�C��)�(��<�
;��
;�
;��
;�
;��
;�
;�sx�(L<�8L/�L<�&M�>M	�M�M#�M/�M;�N�/L9	�4L<�<M�	M�M�M 	�#M,�/M8�;N�Nc�J�dtj�vr�tjtj�5tj
d�ddd�tjd�rJ�tj
d�j�dk(sJ�ytj
d�}trtjnt}tj|�5|j�ddd�tj|�5|j�ddd�tj|�5|j�ddd�tj|�5|j�ddd�tj|�5|j�ddd�tj|�5|j!t"j$�ddd�t'|�}|j)|j*|j,z�D]W\}}	|�}|dvr|j.dk(r�"J�|dk(r trdnd}|j1�|k(r�GJ�|dk(s�O|r�RJ|��t2s0dtj�vsJ�tjd�sJ�yy#1swY��bxYw#1swY���xYw#1swY���xYw#1swY���xYw#1swY��mxYw#1swY��LxYw#1swY��xYw#tj$rY��wxYw)Nrr`>r�r�r�zNT AUTHORITY\SYSTEM�rootry)r1r�r%r6rXr2�
pid_existsr�r
rZrzrArKrlrmr@rNrBrCr$rP�gettersrmr�r�r
)r9r:r�rRrLryr�r�s        r;�
test_pid_0zTestProcess.test_pid_0�s>���F�K�K�M�!����v�3�3�4����q�!�5��(�(��+�+�+��>�>�!�$�)�)�+�q�0�0�0���N�N�1���%,�f�!�!�*��
�]�]�3�
�
�F�F�H� �
�]�]�3�
�
�K�K�M� �
�]�]�3�
�
�I�I�K� �
�]�]�3�
�
�H�H�J� �
�]�]�3�
�
�F�F�H� �
�]�]�3�
�
�M�M�&�.�.�)� ��q�
!��������b�j�j�!8�9�I�C��
&��e���+�+��8�8�q�=�(�=��Z�'�5<�1�&�D��:�:�<�4�/�/�/��V�^��%��%�4�:������
�%�%�%��$�$�Q�'�'�'��O5�4�� �
��
�
��
�
��
�
��
�
��
�
���&�&�
��
�se�J0�J=�K
�:K�(K$�K1� K>�&L�0J:�=K�
K�K!�$K.�1K;�>L�L"�!L"c���d�}d|_tj�}||j��}|tjj��}tstr||k(sJ�yyy)Nc	��ddh}tr|jgd��t|j��D])}||vs|j	d�s�|j|��+|j
�D��cic]H\}}|jdd�jdd�|jdd�jdd���Jc}}Scc}}w)N�PLAT�HOME)�__CF_USER_TEXT_ENCODING�VERSIONER_PYTHON_PREFER_32_BIT�VERSIONER_PYTHON_VERSION�PYTEST_�
r`�
)r�updater�r4r��popr!re)r7�excludery�k�vs     r;�
clean_dictz,TestProcess.test_environ.<locals>.clean_dict�s����v�&�G����� ��
�Q�V�V�X����7�?�d�o�o�i�&@��E�E�$�K�'��G�G�I�	�&�D�A�q��	�	�$��#�+�+�D�"�5��I�I�d�B�'�/�/��b�9�:�&�	�
��s�6A
C)�maxDiffr1r2r�r4�copyrr)r9r�r:�d1�d2s     r;�test_environzTestProcess.test_environ�sX��	�$����N�N���
��	�	��
$��
��
�
���)�
*���~���8�O�8�&�srIz<macOS 11+ can't get another process environment, issue #2084z(sometimes fails on `assert is_running()`c�t�tjd�}t|j�|��}|j	|gt
jt
j��}tj|j�}t|j�|j�sJ�|jj�dk(sJ�trtr	|j!�}n|j!�}|ddd�k(sJ�|j%�|j&dk(sJ�y#tj"$rYywxYw)	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)�stdinr_rIr��3)�A�Cr)�textwrap�dedentr"r�rcrbrcr1r2r3r,r\r_r�rrr�rZ�communicate�
returncode)r9rG�cexe�sprocr:�envs      r;�test_weird_environzTestProcess.test_weird_environ�s����� ����D�O�O�-�d�;���"�"�
�F�*�/�/�*�/�/�#�
��
�N�N�5�9�9�%���Q�U�U���|�|�~��~��|�|� � �"�c�)�)�)��Z�
��i�i�k���)�)�+�C��C�c�*�*�*�*�
�������1�$�$�$���&�&�
��
�s�D!�!D7�6D7N)h�__name__�
__module__�__qualname__�__doc__r<rHrLrPr%�mark�skipifrr[rer	rnrvr{r�r�r�r�rr�r�r�rr+rr�rr�r
r�rr�r�r�rr�xdist_grouprrrrr(r*rrr.r6rrPrWrZr]rhrprur{r�r�r�r�r�r�r�r�rr�r�r�rr�r�r�r
r�r�r�rrr	rrrr$r&r)r+r8r?rCrIrSr[r]r_rrrwrr�rr�rrIr;r.r.Hs���)��!�!�	!��[�[���E�	�+��6�
#�7�
#�!�6�[�[����'8��9�.�:�.�2/�.�!�(	'��
L��[�[���,�,�_��E�8�F�8�L��[�[���E�	�,��7�	'�8�	'��[�[���0�0���I��U�+�$�,�J�$�L�[�[���J����?��[�[���E�	�,��7�)�8�@�)�V�[�[���J����?��[�[�����?���-��@�-�4�[�[���J����?�$�@�$�.�[�[���J����?�
6�@�
6��[�[���J����?�A�@�A�$�[�[���J����?�A�@�A��[�[���J����?�	4�@�	4��[�[���(��+�&�,�&�"�[�[���G��N��;�#�<�#�
�[�[���K����@�5�A�5�&���5�)��[�[���K����@�
�A�*��
� ��+��+�<!� �[�[���O�+�O��D�.-�E�.-�`�[�[���O�+�O��D�	.�E�	.�,�"��6>�6"�45���7��7�4�[�[���E�	�,��7�
.�8�
.��[�[���E�	�,��7�
.�8�
.�@�D3�1�"&�
D��[�[���,�,�_��E�$(�F�$(�L�[�[���,�,�_��E�
$�F�
$��[�[���,�,�_��E�=�F�=�,�[�[����O��4�#.�5�#.�L�[�[����O��4�6�5�6�4�[�[���E�	�,��7��[�[���(��+�$�,�8�$��U�+��[�[�����6�"D���

��,�

�'�;�
-�(���1��1�
4�4�03�)�($�3��2&�h!�!�(
(�$)�L�[�[���E�	�,��7�F�8�F��[�[���E�	�,��7��8���[�[���E�	�,��7�	�8�	�'�R,(�\�[�[���K����@��A��4�[�[���K����@��[�[���E�	�,��7��[�[����M����[�[����A���%%��	�8�A�%%rIr.c��eZdZdZed��Zejje	xre
d��d��Zd�Zd�Z
d�Zy	)
�	TestPopenzTests for psutil.Popen class.c��t�yr>r&)�clss r;�
tearDownClasszTestPopen.tearDownClass"s���rIzhangs on OSX + CIrQc�X�tddg}tj|tjtjt
��5}|j
�|j�|jt|�sJ�tjt�5|jddd�|j�ddd�tr&j!d�t"j$k(sJ�yj!d�t"j$k(sJ�y#1swY�rxYw#1swY�fxYw)Nr]�3import time; [time.sleep(0.1) for x in range(100)];��stdoutr_r�ra)rr1�Popenrbrcrryr�r�r�r%r6r7r/rKrrArBrC�r9rd�procs   r;�	test_misczTestPopen.test_misc&s���
��A�
��
�\�\���?�?��?�?��	
�
��I�I�K��N�N���J�J��t�9��9����~�.����/��N�N��
���9�9�Q�<�F�N�N�?�2�2�2��9�9�Q�<�6�>�>�1�1�1�
/�.��
�
�s%�AD �
D�#D �D	�D � D)c��tjtdgtjtjtjt
��5}|j
�ddd�jjsJ�|jjsJ�|jjsJ�|jdk(sJ�y#1swY�cxYw)Nz-V)r�r_r�r�r)r1r�rrbrcrr�r��closedr_r�r�)r9r�s  r;�test_ctx_managerzTestPopen.test_ctx_managerBs���
�\�\�
����?�?��?�?��/�/��
������
��{�{�!�!�!�!��{�{�!�!�!�!��z�z� � � � ����!�#�#�#�
�
�s�C�Cc�,�tddg}tj|tjtjt
��5}|j
�|j�tjtj�5|j
�ddd�tjtj�5|j�ddd�tjtj�5|jtj�ddd�tr�tjtj�5|jtj �ddd�tjtj�5|jtj"�ddd�ddd�y#1swY��6xYw#1swY��xYw#1swY��xYw#1swY��xYw#1swY�DxYw#1swYyxYw�Nr]r�r�)rr1r�rbrcrrKrAr%r6rXr@rNrBrCr
�CTRL_C_EVENT�CTRL_BREAK_EVENTr�s   r;�test_kill_terminatezTestPopen.test_kill_terminatePsM��

��A�
��
�\�\���?�?��?�?��	
�
��N�N���I�I�K����v�3�3�4���� �5����v�3�3�4��	�	��5����v�3�3�4�� � ����0�5���]�]�6�#7�#7�8��$�$�V�%8�%8�9�9��]�]�6�#7�#7�8��$�$�V�%<�%<�=�9�#
�
�5�4��4�4��4�4��9�8��8�8��#
�
�s��AH
�G�+H
�G�+H
�? G&�1H
� G2�0+H
� G>�;H
�G	�H
�G#	�H
�&G/	�+H
�2G;	�7H
�>H	�H
�
Hc�f�tddg}tj|tjtjt
��5}|j
�|j�tjt�5|jddd�ddd�y#1swY�xYw#1swYyxYwr�)rr1r�rbrcrrKrAr%r6r7r/r�s   r;�test__getattribute__zTestPopen.test__getattribute__ms�����A�
��
�\�\���?�?��?�?��	
�
��N�N���I�I�K����~�.����/�
�
�/�.��
�
�s$�:B'�=
B�
B'�B$	� B'�'B0N)r�r�r�r��classmethodr�r%r�r�rrr�r�r�r�rrIr;r�r�sU��'������[�[����0�.�9L��M�2�N�2�6$�>�:rIr�)>r�rrhr�r�rjr�r4rBr�rEr~rbrcr�r}�unittestrr1rrrrr	r
rrr
�psutil._commonr�psutil.testsrrrrrrrrrrrrrrrrrr r!r"r#r$r%r'r(r)r*r+r,r.r�rrIr;�<module>r�s���&�����	��	�
�
��
��
����
����������$�#�'�'�)�$�#�(�)�-�#�$�%��#�'�'�#�#�,�%�&�*��&�)��.�0�%�O%�.�O%�n.]��]rI
Back to Directory File Manager