HEX
Server: Apache
System: Linux zacp120.webway.host 4.18.0-553.50.1.lve.el8.x86_64 #1 SMP Thu Apr 17 19:10:24 UTC 2025 x86_64
User: govancoz (1003)
PHP: 8.3.26
Disabled: exec,system,passthru,shell_exec,proc_close,proc_open,dl,popen,show_source,posix_kill,posix_mkfifo,posix_getpwuid,posix_setpgid,posix_setsid,posix_setuid,posix_setgid,posix_seteuid,posix_setegid,posix_uname
Upload Files
File: //usr/local/lib/python3.7/test/libregrtest/__pycache__/runtest_mp.cpython-37.opt-2.pyc
B

��g=�@sNddlZddlZddlZddlZddlZddlZddlZddlZddlZddl	Z	ddl
Z
ddlZddlm
Z
ddlmZmZmZmZmZmZmZmZddlmZddlmZmZdZdZdZeed�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�7/usr/local/lib/python3.7/test/libregrtest/runtest_mp.py�	must_stop&s

rcCs"t�|�\}}tjf|�}||fS)N)�json�loads�types�SimpleNamespace)�worker_args�ns_dict�	test_namerrrr�parse_worker_args.srcCspt|�}||f}t�|�}tjft��dddd|f�}i}trFd|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_subprocess4s"

r-cCs<t|�t||�}t�tt�t|��dd�t�d�dS)NT)�flushr)rr�printrr"�listr#�exit)rrrrrr�run_tests_workerMs

r2c@s,eZdZdd�Zdd�Zdd�Zdd�Zd	S)
�MultiprocessIteratorcCst��|_||_dS)N)�	threadingZLock�lock�
tests_iter)�selfr6rrr�__init__^s
zMultiprocessIterator.__init__cCs|S)Nr)r7rrr�__iter__bszMultiprocessIterator.__iter__c	Cs*|j�|jdkrt�t|j�SQRXdS)N)r5r6�
StopIteration�next)r7rrr�__next__es
zMultiprocessIterator.__next__c	Cs|j�d|_WdQRXdS)N)r5r6)r7rrr�stopkszMultiprocessIterator.stopN)�__name__�
__module__�__qualname__r8r9r<r=rrrrr3Zsr3�MultiprocessResultzresult stdout stderr error_msgc@seZdZdS)�
ExitThreadN)r>r?r@rrrrrBssrBcsfeZdZ�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)�superr8�	worker_id�pending�outputr�worker_timeout�timeout�regrtest�current_test_name�
start_time�_popen�_killed�_stopped)r7rEZrunner)�	__class__rrr8xs
zTestWorkerProcess.__init__cCs�d|j��g}|��r"|�d�n
|�d�|j}|rF|�d|���|j}|dk	r�t��|j}|�d|jj	��dt
|���f�dd�|�S)	NzTestWorkerProcess #�runningZstoppedztest=zpid=ztime=z<%s>� )rE�is_alive�appendrKrM�time�	monotonicrL�extend�pidr�join)r7�info�test�popen�dtrrr�__repr__�s
zTestWorkerProcess.__repr__c
Cs�|j}|dkrdS|jrdSd|_tr2|�d�}n|�}td|��tjdd�y"trft�|jt	j
�n|��WnHtk
r�Yn6t
k
r�}ztd|�d|���Wdd}~XYnXdS)NTz process groupzKill )�filer.zFailed to kill z: )rMrNr%r/r#rr)rrX�signal�SIGKILL�kill�ProcessLookupError�OSErrorr
)r7r\Zwhat�excrrr�_kill�s$zTestWorkerProcess._killcCsd|_|��dS)NT)rOrf)r7rrrr=�szTestWorkerProcess.stop�NcCs*t��|j}t|||d�}t||||�S)N)rUrVrLrrA)r7rZ
error_typerr�err_msg�	test_timerrrr�mp_result_error�sz!TestWorkerProcess.mp_result_errorcCst��|_||_yt||j�}d|_||_Wnd|_�YnXz�y�|jrX|�	�t
�y|j|jd�\}}|j
}WnRtjk
r�|jr�t
�|�	�d}d}}Yn0tk
r�|jr�t
��YnX|��}|��}|||fS|�	��YnXWd|��d|_d|_XdS)NF)rIrg)rUrVrLrKr-rrNrMrOrfrBZcommunicaterI�
returncoder&�TimeoutExpiredrd�strip�rstrip�_wait_completed)r7rr\rr�retcoderrr�_run_process�sH


zTestWorkerProcess._run_processc	
Cs�|�|�\}}}|dkr(|�|t||�Sd}|dkr>d|}nd|�d�\}}}|��}|s`d}nByt�|�}t|�}Wn*tk
r�}zd|}Wdd}~XYnX|dk	r�|�|t	|||�St
||||�S)NrzExit code %s�
zFailed to parse worker stdoutzFailed to parse worker JSON: %s)rqrjr
�
rpartitionrnrrr�	ExceptionrrA)	r7rrprrrh�_rrerrr�_runtest�s&


zTestWorkerProcess._runtestcCs�x�|js�yTyt|j�}Wntk
r.PYnX|�|�}|j�d|f�t|j|j	�rZPWqt
k
rrPYqtk
r�|j�dt�
�f�PYqXqWdS)NFT)rOr;rFr:rvrGZputrrrrB�
BaseException�	traceback�
format_exc)r7r�	mp_resultrrr�runs
zTestWorkerProcess.runc
Cst|j}|j��|j��y|�t�WnFtjtfk
rn}z"t	d|�dt
t��d|���Wdd}~XYnXdS)NzFailed to wait for z completion (timeout=z): )rMr�closer�wait�JOIN_TIMEOUTr&rlrdr
r)r7r\rerrrro's

z!TestWorkerProcess._wait_completedcCshxb|�d�|��sPt��|}|j�d|�dt|����|tkrtd|�dt|����PqWdS)Ng�?zWaiting for z thread for zFailed to join z in )	rYrSrUrVrJ�logrr~r
)r7rLr]rrr�wait_stopped6s
zTestWorkerProcess.wait_stopped)rgrgN)r>r?r@r8r^rfr=rjrqrvr{ror��
__classcell__rr)rPrrCws
;rCcCsRg}xH|D]@}|j}|sq
t��|j}|tkr
d|t|�f}|�|�q
W|S)Nz%s (%s))rKrUrVrLrrrT)�workersrQ�workerrKr]�textrrr�get_runningNs
r�c@sDeZdZdd�Zdd�Zdd�Zdd�Zd	d
�Zdd�Zd
d�Z	dS)�MultiprocessTestRunnercCsj||_|jj|_|j|_t��|_t|jj�|_|jj	dk	rZt
|jj	d|jj	d�|_nd|_d|_dS)Ng�?i,)
rJrr�queueZQueuerGr3ZtestsrFrI�minrHr�)r7rJrrrr8\s

zMultiprocessTestRunner.__init__cs��fdd�td�jjd�D��_dt�j��d�}�jjrZ|dt�jj�t�j�f7}��|�x�jD]}|�	�qlWdS)Ncsg|]}t|���qSr)rC)�.0�index)r7rr�
<listcomp>msz8MultiprocessTestRunner.start_workers.<locals>.<listcomp>�zRun tests in parallel using z child processesz" (timeout: %s, worker timeout: %s))
�rangerZuse_mpr��lenrIrrHr�start)r7�msgr�r)r7r�
start_workersls


z$MultiprocessTestRunner.start_workerscCs>t��}x|jD]}|��qWx|jD]}|�|�q(WdS)N)rUrVr�r=r�)r7rLr�rrr�stop_workersxs
z#MultiprocessTestRunner.stop_workerscCs�tdd�|jD��s:y|jjdd�Stjk
r8dSX|jjdk	}t}xf|r^t	j
tdd�y|jj|d�Stjk
r�YnXt|j�}|rL|jj
sL|�dd�|��qLWdS)	Ncss|]}|��VqdS)N)rS)r�r�rrr�	<genexpr>�sz5MultiprocessTestRunner._get_result.<locals>.<genexpr>r)rIT)r1zrunning: %sz, )�anyr�rG�getr�ZEmptyrrI�PROGRESS_UPDATE�faulthandlerZdump_traceback_later�MAIN_PROCESS_TIMEOUTr��pgorrY)r7Zuse_faulthandlerrIrQrrr�_get_results$
z"MultiprocessTestRunner._get_resultcCs�|j}t|�}|jdk	r(|d|j7}n$|jtkrL|jjsL|dt|j�7}t|j	�}|rt|jjst|dd�
|�7}|j�|j
|�dS)Nz (%s)z -- running: %sz, )rrZ	error_msgrirrr�rr�r�rYrJZdisplay_progress�
test_index)r7rzrr�rQrrr�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: T)r.)r_r.F)
r
r�rJZaccumulate_resultrr�rr/rrr�r#r)r7�itemryrzrrr�_process_result�s
z&MultiprocessTestRunner._process_resultcCs�|��d|_zTy,x&|��}|dkr&P|�|�}|rPqWWn"tk
r^t�d|j_YnXWd|jj	dk	rxt
��|j�
�|��XdS)NrT)r�r�r�r��KeyboardInterruptr/rJZinterruptedrrIr�Zcancel_dump_traceback_laterrFr=r�)r7r�r=rrr�	run_tests�s"


z MultiprocessTestRunner.run_testsN)
r>r?r@r8r�r�r�r�r�r�rrrrr�[sr�cCst|���dS)N)r�r�)rJrrr�run_tests_multiprocess�sr�)/�collectionsr�rr)r�r`r&r#r4rUrxrr[rZtest.libregrtest.runtestrrrrrrr	r
Ztest.libregrtest.setuprZtest.libregrtest.utilsrr
r�r�r~�hasattrr%rrr-r2r3�
namedtuplerArtrBZThreadrCr�r�r�rrrr�<module>s@(
X
|