File: //usr/local/lib64/python3.9/site-packages/psutil/tests/__pycache__/test_process.cpython-39.pyc
a
��?hn� � @ s d Z ddlZddlZddlZddlZddlZddlZddlZddlZddl Z ddl
Z
ddlZddlZddl
Z
ddlZddlZddlmZ ddlmZ ddlmZ ddlmZ ddlmZ ddlmZ dd lmZ dd
lmZ ddlmZ ddlmZ dd
lmZ ddlmZ ddlmZ ddlmZ ddlm Z ddlm!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"m0Z0 dd!l"m1Z1 dd"l"m2Z2 dd#l"m3Z3 dd$l"m4Z4 dd%l"m5Z5 dd&l"m6Z6 dd'l"m7Z7 dd(l"m8Z8 dd)l"m9Z9 dd*l"m:Z: dd+l"m;Z; dd,l"m<Z< dd-l"m=Z= dd.l"m>Z> dd/l"m?Z? dd0l"m@Z@ dd1l"mAZA dd2l"mBZB G d3d4� d4e4�ZCe�r�e�D� dk�r�G d5d6� d6eC�ZEG d7d8� d8e4�ZFdS )9�Tests for psutil.Process class.� N)�AIX)�BSD)�LINUX)�MACOS)�NETBSD)�OPENBSD)�OSX)�POSIX)�SUNOS)�WINDOWS)� open_text)�PY3)�FileNotFoundError)�long)�redirect_stderr)�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)�PYTHON_EXE_ENV)� QEMU_USER)�PsutilTestCase)�
ThreadTask)�
call_until)�copyload_shared_lib)�create_c_exe)�
create_py_exe)�mock)�process_namespace)�pytest��
reap_children)�retry_on_failure)�sh)�skip_on_access_denied)�skip_on_not_implemented)�wait_for_pidc @ s e Zd ZdZdd� Zdd� Zdd� Zdd � Zd
d� Ze j
je dd
�dd� �Z
dd� Ze j
jedd
�dd� �Zdd� Zdd� Zdd� Zdd� Zdd� Ze j
jedd
�d d!� �Ze j
jedd
�d"d#� �Ze j
je d$d
�d%d&� �Zd'd(� Ze j
je d)d
�d*d+� �Ze j
je d$d
�eed,�d-d.� ��Z e j
je! d$d
�e j
je d/d
�d0d1� ��Z"e j
je! d$d
�e j
je# d2d
�d3d4� ��Z$e j
je% d$d
�d5d6� �Z&e j
je% d$d
�d7d8� �Z'e j
je% d$d
�d9d:� �Z(e j
je% d$d
�d;d<� �Z)e j
je% d$d
�d=d>� �Z*d?d@� Z+e j
je# dAd
�dBdC� �Z,e j
je- d$d
�dDdE� �Z.e/� e0e1d,�e j
je- d$d
�dFdG� ���Z2e/� dHdI� �Z3dJdK� Z4e j
je5 d$d
�dLdM� �Z6e j
je5 d$d
�dNdO� �Z7dPdQ� Z8dRdS� Z9e j
jedd
�dTdU� �Z:dVdW� Z;e j
je<dXd
�dYdZ� �Z=d[d\� Z>e j
je<�ped]d
�e j
jed^d
�d_d`� ��Z?e j
je@dad
�e j
jeAdbd
�e j
je<dXd
�e j
jedcd
�ddde� ����ZBe j
je d)d
�dfdg� �ZCe j
je d)d
�dhdi� �ZDdjdk� ZEe j
jedd
�dldm� �ZFdndo� ZGdpdq� ZHdrds� ZIe j
jeJ d$d
�dtdu� �ZKe j
jeJ d$d
�dvdw� �ZLe j
jeJ d$d
�dxdy� �ZMe j
jeNdzd
�e j
jeOd{d
�d|d}� ��ZPe j
jeNdzd
�e j
jeOd{d
�d~d� ��ZQe j
je d)d
�d�d�� �ZReed,�e j
jeS�p�ed�d
�d�d�� ��ZTd�d�� ZUd�d�� ZVd�d�� ZWe j
jedd
�e/� d�d�� ��ZXd�d�� ZYd�d�� ZZd�d�� Z[d�d�� Z\d�d�� Z]d�d�� Z^d�d�� Z_d�d�� Z`d�d�� Zad�d�� Zbd�d�� Zce j
je d)d
�d�d�� �Zde j
je d)d
�d�d�� �Zee j
je d)d
�d�d�� �Zfd�d�� Zgd�d�� Zhe j
jei d$d
�d�d�� �Zje j
jei d$d
�e j
je d)d
�e j
jekd�d
�e j
jed�d
�d�d�� ����Zld�S )��TestProcessr c O sF | j |i |��}zt�|j�W S tjy@ | �|j� � Y n0 d S �N)�spawn_testproc�psutil�Process�pid�
NoSuchProcessZ
assertPidGone)�self�args�kwargs�sproc� r? �E/usr/local/lib64/python3.9/site-packages/psutil/tests/test_process.py�spawn_psprocS s zTestProcess.spawn_psprocc C sN t �� }|jt�� ksJ �t�t�� d|_W d � n1 s@0 Y d S )N�! )r7 r8 r9 �os�getpidr, �raises�AttributeError�r; �pr? r? r@ �test_pid] s zTestProcess.test_pidc C sJ | � � }|�� |�� }tr,|tjks<J �n|tj ks<J �| �|� d S r5 )rA �kill�waitr �signal�SIGTERM�SIGKILL�assertProcessGone�r; rH �coder? r? r@ � test_killc s zTestProcess.test_killc C sJ | � � }|�� |�� }tr,|tjks<J �n|tj ks<J �| �|� d S r5 )rA � terminaterK r rL rM rO rP r? r? r@ �test_terminatem s zTestProcess.test_terminatec C sX t r
tjntj}| �� }|�|� |�� }tr<||ksJJ �n|| ksJJ �| �|� d S r5 ) r
rL rN rM rA �send_signalrK r rO )r; �sigrH rQ r? r? r@ �test_send_signalw s
zTestProcess.test_send_signalz not POSIX��reasonc C s� t j}| �� }tjdttjd�d��F t� t
j�� |�|� W d � n1 sR0 Y W d � n1 sp0 Y | �� }tjdttj
d�d��F t� t
j�� |�|� W d � n1 s�0 Y W d � n1 s�0 Y d S )Nzpsutil.os.kill� ��side_effect)rL rM rA r* �patch�OSError�errnoZESRCHr, rE r7 r: rU �EPERM�AccessDenied)r; rV rH r? r? r@ �test_send_signal_mocked� s �F�z#TestProcess.test_send_signal_mockedc C s� t ddg}| �|�}|�� }|dks(J �| �|� t ddg}| j|tjd�}|�� }|dks`J �| �|� t ddg}| �|�}|�� }|dks�J �| �|� t dd g}| �|�}|�� }|dks�J �| �|� d S )
N�-c�passr z1 / 0)�stderr� zimport sys; sys.exit(5);� zimport os; os._exit(5);)r! rA rK rO �
subprocess�PIPE)r; �cmdrH rQ r? r? r@ �test_wait_exited� s(
zTestProcess.test_wait_exitedzfails on NETBSDc C s� | � � }tr�|�tj� t�tj�� |j dd� W d � n1 sF0 Y |�tj
� t�tj�� |j dd� W d � n1 s�0 Y |�tj� |� � tj ks�J �|� � tj ks�J �n�|�� t�tj�� |j dd� W d � n1 �s0 Y |�
� t�tj�� |j dd� W d � n1 �sD0 Y |�� |� � tjk�sjJ �|� � tjk�s~J �d S )N���MbP?)�timeout)rA r
rU rL �SIGSTOPr, rE r7 �TimeoutExpiredrK �SIGCONTrM �suspend�resumerS rG r? r? r@ �test_wait_stopped� s( **,,zTestProcess.test_wait_stoppedc C s� | � � \}}t�tj�� |�d� W d � n1 s80 Y t�tj�� |�d� W d � n1 sn0 Y |�� |�� |�� }|�� }tr�|tj ks�J �|d u s�J �n|tj ks�J �|tj ks�J �d S )N�{�G�z�?)
�spawn_children_pairr, rE r7 ro rK rS r
rL rM )r; �child�
grandchildZ child_retZgrandchild_retr? r? r@ �test_wait_non_children� s ((z"TestProcess.test_wait_non_childrenc C s� | � � }|�� t�tj�� |�d� W d � n1 s<0 Y t�tj�� |�d� W d � n1 sr0 Y t�t�� |�d� W d � n1 s�0 Y d S )Nrt r ���)rA �namer, rE r7 ro rK �
ValueErrorrG r? r? r@ �test_wait_timeout� s ((zTestProcess.test_wait_timeoutc C s� | � � }t�tj�� |�d� W d � n1 s40 Y |�� t�� t }t�� |k r�z|�d�}W q�W qR tjy� Y qR0 qR| � d��t
r�|tj ks�J �n|tj
ks�J �| �|� d S )Nr rm )rA r, rE r7 ro rK rJ �timer �failr
rL rN rM rO )r; rH Zstop_atrQ r? r? r@ �test_wait_timeout_nonblocking� s (
z)TestProcess.test_wait_timeout_nonblockingc C s� t �� }|jdd� |jdd� td�D ]*}|jd d�}t|t�sFJ �|dks(J �q(t�t�� |jdd� W d � n1 s�0 Y d S )Nrl )�interval�d � ry ) r7 r8 �cpu_percent�range�
isinstance�floatr, rE r{ )r; rH �_�percentr? r? r@ �test_cpu_percent� s zTestProcess.test_cpu_percentc C sH t jdd d��&}t�� �� |js&J �W d � n1 s:0 Y d S )Nzpsutil.cpu_count)Zreturn_value)r* r] r7 r8 r� �called)r; �mr? r? r@ �test_cpu_percent_numcpus_none s z)TestProcess.test_cpu_percent_numcpus_nonezQEMU user not supportedc C s� t �� �� }|jdksJ |��|jdks0J |��|jdksBJ |��|jdksTJ |��trj|jdksjJ |��|j D ]}t
�dt
�t
||��� qpd S )Nr� z%H:%M:%S)r7 r8 � cpu_times�user�system�
children_user�children_systemr Ziowait�_fieldsr} �strftime� localtime�getattr)r; �timesrz r? r? r@ �test_cpu_times s
zTestProcess.test_cpu_timesc C s� t �� �� d d� \}}t�� d d� \}}t||g�t||g� dkrZ| �d||f ��t||g�t||g� dkr�| �d||f ��d S )N� 皙�����?zexpected: %s, found: %s)r7 r8 r� rC r� �max�minr~ )r; � user_timeZkernel_time�utimeZktimer? r? r@ �test_cpu_times_2 s zTestProcess.test_cpu_times_2z
not supportedc C sP t �� }|�� }|dksJ �t �� dkr4|dks4J �|�� tt �� �v sLJ �d S �Nr rf )r7 r8 Zcpu_num� cpu_countr� )r; rH �numr? r? r@ �test_cpu_num) s zTestProcess.test_cpu_numc C sZ | � � }t�� }|�� }t|| �}|dkr@| �d|||f ��t�dt�|�� �� d S )Nr� z'expected: %s, found: %s, difference: %sz%Y %m %d %H:%M:%S)rA r} �create_time�absr~ r� r� )r; rH �nowr� �
differencer? r? r@ �test_create_time2 s ��zTestProcess.test_create_timez
POSIX onlyc C sV t �� �� }|d urRztj�td��}W n tyD t� d��Y n0 ||ksRJ �d S )N�ttyzcan't rely on `tty` CLI)
r7 r8 �terminalrC �path�realpathr0 �RuntimeErrorr, �skip)r; r� r� r? r? r@ �
test_terminalD s zTestProcess.test_terminal)Zonly_ifc C s� t �� }|�� }ttd��}|�� W d � n1 s80 Y |�� }ts�ts�|j|jksbJ �|j |j ksrJ �t
r�|j|jks�J �|j|jks�J �n |j
|j
ks�J �|j|jks�J �|�� }t| �� d��8}tr�|�tdd d�� n|�dd � W d � n1 �s0 Y |�� }|j |j k�s2J �|j|jk�sDJ �|j|jk�sVJ �|j
|j
k�shJ �t
�r�|j|jk�s�J �|j|jk�s�J �tt|��D ]>}t�r�|dk�r��q�|| dk�s�J �|| dk�s�J ��q�d S )N�rb�wb�xi@B �asciir� r )r7 r8 Zio_counters�openr! �readr r Z
read_countZwrite_countr Z
read_charsZwrite_chars�
read_bytes�write_bytes�
get_testfnr �write�bytesr� �len)r; rH Zio1�fZio2�ir? r? r@ �test_io_countersP s>