HEX
Server: Apache/2.4.65 (Debian)
System: Linux kubikelcreative 5.10.0-35-amd64 #1 SMP Debian 5.10.237-1 (2025-05-19) x86_64
User: www-data (33)
PHP: 8.4.13
Disabled: NONE
Upload Files
File: //proc/276314/root/usr/lib/python3.9/test/libregrtest/__pycache__/runtest_mp.cpython-39.pyc
a

kx�g=�@sfddlZddlZddlZddlZddlZddlZddlZddlZddlZddl	Z	ddl
Z
ddlZddlm
Z
ddlmZmZmZmZmZmZmZmZddlmZddlmZmZdZeeks�J�dZeeks�J�dZeed�o�eed	�Z d
d�Z!dd
�Z"dd�Z#dd�Z$Gdd�d�Z%e�&dd�Z'Gdd�de(�Z)Gdd�dej*�Z+dd�Z,Gdd�d�Z-dd�Z.dS) �N)�support)�runtest�INTERRUPTED�CHILD_ERROR�PROGRESS_MIN_TIME�format_test_result�
TestResult�	is_failed�TIMEOUT)�setup_tests)�format_duration�
print_warningg>@g�r@�setsid�killpgcCs&|jtkrdS|jr"t||�r"dSdS)NTF)�resultrZfailfastr	)r�ns�r�1/usr/lib/python3.9/test/libregrtest/runtest_mp.py�	must_stop&s

rcCs&t�|�\}}tjfi|��}||fS�N)�json�loads�types�SimpleNamespace)�worker_args�ns_dict�	test_namerrrr�parse_worker_args.srcCsxt|�}||f}t�|�}tjgt���d�d�d�d�|�}i}trNd|d<tj	|ftj
tj
dtjdktj
d�|��S)	Nz-uz-mz
test.regrtestz
--worker-argsTZstart_new_session�nt)�stdout�stderrZuniversal_newlinesZ	close_fds�cwd)�varsr�dumps�sys�
executablerZargs_from_interpreter_flags�USE_PROCESS_GROUP�
subprocess�Popen�PIPE�os�nameZSAVEDCWD)Ztestnamerrr�cmd�kwrrr�run_test_in_subprocess4s4
�������r.cCs<t|�t||�}t�tt�t|��dd�t�d�dS)NT��flushr)rr�printrr#�listr$�exit)rrrrrr�run_tests_workerMs

r4c@s0eZdZdZdd�Zdd�Zdd�Zdd	�Zd
S)�MultiprocessIteratorz8A thread-safe iterator over tests for multiprocess mode.cCst��|_||_dSr)�	threadingZLock�lock�
tests_iter)�selfr8rrr�__init__^s
zMultiprocessIterator.__init__cCs|Srr�r9rrr�__iter__bszMultiprocessIterator.__iter__cCsB|j�(|jdurt�t|j�Wd�S1s40YdSr)r7r8�
StopIteration�nextr;rrr�__next__es
zMultiprocessIterator.__next__cCs0|j�d|_Wd�n1s"0YdSr)r7r8r;rrr�stopkszMultiprocessIterator.stopN)�__name__�
__module__�__qualname__�__doc__r:r<r?r@rrrrr5Zs
r5�MultiprocessResultzresult stdout stderr error_msgc@seZdZdS)�
ExitThreadN)rArBrCrrrrrFssrFcsfeZdZ�fdd�Zdd�Zdd�Zdd�Zddd�Zd
d�Zdd�Z	dd�Z
dd�Zdd�Z�Z
S)�TestWorkerProcesscsZt���||_|j|_|j|_|j|_|j|_|j|_d|_	d|_
d|_d|_d|_
dS)NF)�superr:�	worker_id�pending�outputr�worker_timeout�timeout�regrtest�current_test_name�
start_time�_popen�_killed�_stopped)r9rIZrunner��	__class__rrr:xs
zTestWorkerProcess.__init__cCs�d|j��g}|��r"|�d�n
|�d�|j}|rF|�d|���|j}|dur�t��|j}|�d|jj	��dt
|���f�dd�|�S)	NzTestWorkerProcess #�runningZstoppedztest=zpid=ztime=z<%s>� )rI�is_alive�appendrOrQ�time�	monotonicrP�extend�pidr�join)r9�info�test�popen�dtrrr�__repr__�s
�zTestWorkerProcess.__repr__c
Cs�|j}|durdS|jrdSd|_tr2|�d�}n|�}td|��tjdd�z"trft�|jt	j
�n|��WnHty�Yn8t
y�}z td|�d|���WYd}~n
d}~00dS)NTz process groupzKill ��filer0zFailed to kill z: )rQrRr&r1r$r r*rr]�signal�SIGKILL�kill�ProcessLookupError�OSErrorr
)r9raZwhat�excrrr�_kill�s$zTestWorkerProcess._killcCsd|_|��dS)NT)rSrlr;rrrr@�szTestWorkerProcess.stop�NcCs*t��|j}t|||d�}t||||�Sr)rZr[rPrrE)r9rZ
error_typerr �err_msg�	test_timerrrr�mp_result_error�sz!TestWorkerProcess.mp_result_errorcCsJt��|_||_zt||j�}d|_||_Wnd|_�Yn0z�z�|jrX|�	�t
�z(|j|jd�\}}|j
}|dus~J�WnNtjy�|jr�t
�|�	�d}d}}Yn.ty�|jr�t
��Yn0|��}|��}|||fWW|��d|_d|_S|�	��Yn0W|��d|_d|_n|��d|_d|_0dS)NF�rMrm)rZr[rPrOr.rrRrQrSrlrFZcommunicaterM�
returncoder'�TimeoutExpiredrj�strip�rstrip�_wait_completed)r9rrarr �retcoderrr�_run_process�sV

�
�zTestWorkerProcess._run_processc	
Cs�|�|�\}}}|dur(|�|t||�Sd}|dkr>d|}nf|�d�\}}}|��}|s`d}nDzt�|�}t|�}Wn,ty�}zd|}WYd}~n
d}~00|dur�|�|t	|||�St
||||�S)NrzExit code %s�
zFailed to parse worker stdoutzFailed to parse worker JSON: %s)rxrpr
�
rpartitionrurrr�	ExceptionrrE)	r9rrwrr rn�_rrkrrr�_runtest�s(

�zTestWorkerProcess._runtestcCs�|js�zXzt|j�}Wnty.YWq�Yn0|�|�}|j�d|f�t|j|j	�r\Wq�Wqt
ytYq�Yqty�|j�dt�
�f�Yq�Yq0qdS)NFT)rSr>rJr=r}rKZputrrrrF�
BaseException�	traceback�
format_exc)r9r�	mp_resultrrr�runs
zTestWorkerProcess.runc
Csv|j}|j��|j��z|�t�WnHtjtfyp}z*t	d|�dt
t��d|���WYd}~n
d}~00dS)NzFailed to wait for z completion (timeout=z): )rQr�closer �wait�JOIN_TIMEOUTr'rsrjr
r)r9rarkrrrrv's


��z!TestWorkerProcess._wait_completedcCsd|�d�|��sq`t��|}|j�d|�dt|����|tkrtd|�dt|����q`qdS)Ng�?zWaiting for z thread for zFailed to join z in )	r^rXrZr[rN�logrr�r
)r9rPrbrrr�wait_stopped6s
�zTestWorkerProcess.wait_stopped)rmrmN)rArBrCr:rcrlr@rprxr}r�rvr��
__classcell__rrrTrrGws�
;rGcCsNg}|D]@}|j}|sqt��|j}|tkrd|t|�f}|�|�q|S)Nz%s (%s))rOrZr[rPrrrY)�workersrV�workerrOrb�textrrr�get_runningNsr�c@sDeZdZdd�Zdd�Zdd�Zdd�Zd	d
�Zdd�Zd
d�Z	dS)�MultiprocessTestRunnercCsj||_|jj|_|j|_t��|_t|jj�|_|jj	durZt
|jj	d|jj	d�|_nd|_d|_dS)Ng�?i,)
rNr�r�queueZQueuerKr5ZtestsrJrM�minrLr�)r9rNrrrr:\s


�zMultiprocessTestRunner.__init__cs|�fdd�td�jjd�D��_dt�j��d�}�jjrZ|dt�jj�t�j�f7}��|��jD]}|�	�qjdS)Ncsg|]}t|���qSr)rG)�.0�indexr;rr�
<listcomp>ms�z8MultiprocessTestRunner.start_workers.<locals>.<listcomp>�zRun tests in parallel using z child processesz" (timeout: %s, worker timeout: %s))
�rangerZuse_mpr��lenrMrrLr��start)r9�msgr�rr;r�
start_workersls
�
��

z$MultiprocessTestRunner.start_workerscCs6t��}|jD]}|��q|jD]}|�|�q"dSr)rZr[r�r@r�)r9rPr�rrr�stop_workersxs



z#MultiprocessTestRunner.stop_workerscCs�tdd�|jD��s<z|jjdd�WStjy:YdS0|jjdu}t}|r^t	j
tdd�z|jj|d�WStjy�Yn0t|j�}|rL|jj
sL|�dd�|��qLdS)	Ncss|]}|��VqdSr)rX)r�r�rrr�	<genexpr>��z5MultiprocessTestRunner._get_result.<locals>.<genexpr>rrqT)r3zrunning: %s�, )�anyr�rK�getr�ZEmptyrrM�PROGRESS_UPDATE�faulthandlerZdump_traceback_later�MAIN_PROCESS_TIMEOUTr��pgor�r^)r9Zuse_faulthandlerrMrVrrr�_get_results$�
z"MultiprocessTestRunner._get_resultcCs�|j}t|�}|jdur(|d|j7}n$|jtkrL|jjsL|dt|j�7}t|j	�}|rt|jjst|dd�
|�7}|j�|j
|�dS)Nz (%s)z -- running: %sr�)rrZ	error_msgrorrr�rr�r�r^rNZdisplay_progress�
test_index)r9r�rr�rVrrr�display_result�s

z%MultiprocessTestRunner.display_resultcCs�|dr"|d}td|���dS|jd7_|d}|j�|j�|�|�|jrdt|jdd�|jr�|j	j
s�t|jtjdd�t|j|j	�r�dSdS)Nrr�zregrtest worker thread failed: Tr/rdF)
r
r�rNZaccumulate_resultrr�rr1r rr�r$r)r9�itemr�r�rrr�_process_result�s
z&MultiprocessTestRunner._process_resultcCs�|��d|_ztz(|��}|dur$q6|�|�}|rq6qWn tyXt�d|j_Yn0W|jj	durpt
��|j�
�|��n(|jj	dur�t
��|j�
�|��0dS)NrT)r�r�r�r��KeyboardInterruptr1rNZinterruptedrrMr�Zcancel_dump_traceback_laterrJr@r�)r9r�r@rrr�	run_tests�s(


�
z MultiprocessTestRunner.run_testsN)
rArBrCr:r�r�r�r�r�r�rrrrr�[sr�cCst|���dSr)r�r�)rNrrr�run_tests_multiprocess�sr�)/�collectionsr�rr*r�rfr'r$r6rZrrr`rZtest.libregrtest.runtestrrrrrrr	r
Ztest.libregrtest.setuprZtest.libregrtest.utilsrr
r�r�r��hasattrr&rrr.r4r5�
namedtuplerEr{rFZThreadrGr�r�r�rrrr�<module>sF(
�X
|