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.10/test/libregrtest/__pycache__/runtest_mp.cpython-310.opt-1.pyc
o

�isD�@sJddlZddlZddlZddlZddlZddlZddlZddlZddlZddl	Z	ddl
Z
ddlmZm
Z
mZmZddlmZddlmZddlmZddlmZddlmZmZmZmZmZmZmZddl m!Z!dd	l"m#Z#m$Z$d
Z%dZ&d
Z'e(ed�oe(ed
�Z)dedede*fdd�Z+de,ee-ffdd�Z.de-dedej/fdd�Z0dede-de
fdd�Z1Gdd�d�Z2Gdd�de�Z3e-Z4e,ede3fe,ed e4fBZ5Gd!d"�d"e6�Z7Gd#d$�d$ej8�Z9d%e:e9de:e9fd&d'�Z;Gd(d)�d)�Z<d*eddfd+d,�Z=Gd-d.�d.ej>�Z?d/e@e-efdee@e-efBfd0d1�ZAdeBeCefd2d3�ZDdS)4�N)�
NamedTuple�NoReturn�Literal�Any)�support)�	os_helper)�	Namespace)�Regrtest)�runtest�	is_failed�
TestResult�Interrupted�Timeout�
ChildError�PROGRESS_MIN_TIME)�setup_tests)�format_duration�
print_warningg>@g�r@�setsid�killpg�result�ns�returncCs&t|t�rdS|jrt||�rdSdS)NTF)�
isinstancer
Zfailfastr)rr�r�8/usr/local/lib/python3.10/test/libregrtest/runtest_mp.py�	must_stop)s

rcCs$t�|�\}}tdi|��}||fS)Nr)�json�loadsr)�worker_args�ns_dict�	test_namerrrr�parse_worker_args1sr"�testnamecCsxt|�}||f}t�|�}tjgt���d�d�d�d�|�}i}tr'd|d<tj	|ftj
tj
dtjdkt
jd�|��S)	Nz-uz-mz
test.regrtestz
--worker-argsT�start_new_session�nt)�stdout�stderr�universal_newlines�	close_fds�cwd)�varsr�dumps�sys�
executablerZargs_from_interpreter_flags�USE_PROCESS_GROUP�
subprocess�Popen�PIPE�os�namerZSAVEDCWD)r#rr r�cmd�kwrrr�run_test_in_subprocess7s4
�������r7r!cCs<t|�t||�}t�ttj|td�dd�t�d�dS)N)�clsT��flushr)rr
�printrr,�EncodeTestResultr-�exit)rr!rrrr�run_tests_workerPs

r>c@s0eZdZdZdd�Zdd�Zdd�Zdd	�Zd
S)�MultiprocessIteratorz8A thread-safe iterator over tests for multiprocess mode.cCst��|_||_dS�N)�	threading�Lock�lock�
tests_iter)�selfrDrrr�__init__as

zMultiprocessIterator.__init__cCs|Sr@r�rErrr�__iter__eszMultiprocessIterator.__iter__cCsB|j�|jdurt�t|j�Wd�S1swYdSr@)rCrD�
StopIteration�nextrGrrr�__next__hs

$�zMultiprocessIterator.__next__cCs2|j�d|_Wd�dS1swYdSr@)rCrDrGrrr�stopns"�zMultiprocessIterator.stopN)�__name__�
__module__�__qualname__�__doc__rFrHrKrLrrrrr?]sr?c@s.eZdZUeed<eed<eed<eed<dS)�MultiprocessResultrr&r'�	error_msgN)rMrNrOr�__annotations__�strrrrrrQss

rQFTc@seZdZdS)�
ExitThreadN)rMrNrOrrrrrU~srUc	s�eZdZdeddddf�fdd�Zdefdd	�Zd d
d�Zd dd
�Z			d!de	dedede
fdd�Zdedeeeeffdd�Z
dede
fdd�Zd dd�Zd dd�Zdeddfdd�Z�ZS)"�TestWorkerProcess�	worker_id�runner�MultiprocessTestRunnerrNcsZt���||_|j|_|j|_|j|_|j|_|j|_d|_	d|_
d|_d|_d|_
dS)NF)�superrFrW�pending�outputr�worker_timeout�timeout�regrtest�current_test_name�
start_time�_popen�_killed�_stopped)rErWrX��	__class__rrrF�s

zTestWorkerProcess.__init__cCs�d|j��g}|��r|�d�n|�d�|j}|r#|�d|���|j}|durBt��|j}|�d|jj	��dt
|���f�dd�|�S)	NzTestWorkerProcess #�running�stoppedztest=zpid=ztime=z<%s>� )rW�is_alive�appendr`rb�time�	monotonicra�extend�pidr�join)rE�info�test�popen�dtrrr�__repr__�s
�zTestWorkerProcess.__repr__c
Cs�|j}|dur	dS|jrdSd|_tr|�d�}n|�}td|��tjdd�ztr5t�|jt	j
�WdS|��WdStyEYdSt
ya}ztd|�d|���WYd}~dSd}~ww)NTz process groupzKill ��filer:zFailed to kill z: )rbrcr/r;r-r'r3rro�signal�SIGKILL�kill�ProcessLookupError�OSErrorr)rErsZwhat�excrrr�_kill�s("��zTestWorkerProcess._killcCsd|_|��dS)NT)rdr~rGrrrrL�szTestWorkerProcess.stop��test_resultr&r'cCst��|j|_t||||�Sr@)rlrmra�duration_secrQ)rEr�r&r'�err_msgrrr�mp_result_error�sz!TestWorkerProcess.mp_result_errorr!cCst��|_||_zt||j�}d|_||_Wnd|_�z_zV|jr)|�	�t
�z|j|jd�\}}|j
}Wn%tjyP|jrDt
�|�	�d}d}}Ynty\|jr[t
��w|��}|��}|||fWW|��d|_d|_S|�	��|��d|_d|_w)NF�r^r)rlrmrar`r7rrcrbrdr~rU�communicater^�
returncoder0�TimeoutExpiredr|�strip�rstrip�_wait_completed)rEr!rsr&r'�retcoderrr�_run_process�sN


��zTestWorkerProcess._run_processc	
Cs�|�|�\}}}|dur|�t|�||�Sd}|dkr d|}n1|�d�\}}}|��}|s1d}n z	tj|td�}WntyP}z
d|}WYd}~nd}~ww|dur_|�t	|�|||�St
||||�S)NrzExit code %s�
zFailed to parse worker stdout)Zobject_hookzFailed to parse worker JSON: %s)r�r�r�
rpartitionr�rr�decode_test_result�	ExceptionrrQ)	rEr!r�r&r'r��_rr}rrr�_runtests*
��
�zTestWorkerProcess._runtestcCs�|jsRz,zt|j�}WntyYWdSw|�|�}|j�d|f�t|j|j	�r.WdSWnt
y9YdStyL|j�dt�
�f�YdSw|jrdSdS)NFT)rdrJr[rIr�r\�putrrrrU�
BaseException�	traceback�
format_exc)rEr!�	mp_resultrrr�run"s&�
���zTestWorkerProcess.runc
Csv|j}|j��|j��z|�t�WdStjtfy:}zt	d|�dt
t��d|���WYd}~dSd}~ww)NzFailed to wait for z completion (timeout=z): )rbr&�closer'�wait�JOIN_TIMEOUTr0r�r|rr)rErsr}rrrr�5s


����z!TestWorkerProcess._wait_completedracCsf	|�d�|��sdSt��|}|j�d|�dt|����|tkr2td|�dt|����dSq)NTg�?zWaiting for z thread for zFailed to join z in )	rprjrlrmr_�logrr�r)rErartrrr�wait_stoppedDs
��zTestWorkerProcess.wait_stopped�rN)rrN)rMrNrO�intrFrTrur~rLrrQr��tupler�r�r�r��floatr��
__classcell__rrrerrV�s,

����
�
;

rV�workerscCsNg}|D] }|j}|sqt��|j}|tkr$d|t|�f}|�|�q|S)Nz%s (%s))r`rlrmrarrrk)r�rg�workerr`rt�textrrr�get_running\s
�r�c@sreZdZdeddfdd�Zddd�Zddd	�ZdedBfd
d�Zde	ddfd
d�Z
dedefdd�Zddd�Z
dS)rYr_rNcCsj||_|jj|_|j|_t��|_t|jj�|_|jj	dur-t
|jj	d|jj	d�|_nd|_d|_dS)Ng�?i,)
r_r�r�queue�Queuer\r?Ztestsr[r^�minr]r�)rEr_rrrrFjs


�
zMultiprocessTestRunner.__init__cs|�fdd�td�jjd�D��_dt�j��d�}�jjr-|dt�jj�t�j�f7}��|��jD]}|�	�q5dS)Ncsg|]}t|���qSr)rV)�.0�indexrGrr�
<listcomp>{s�z8MultiprocessTestRunner.start_workers.<locals>.<listcomp>�zRun tests in parallel using z child processesz" (timeout: %s, worker timeout: %s))
�rangerZuse_mpr��lenr^rr]r��start)rE�msgr�rrGr�
start_workerszs
�
��


�z$MultiprocessTestRunner.start_workerscCs6t��}|jD]}|��q|jD]}|�|�qdSr@)rlrmr�rLr�)rErar�rrr�stop_workers�s


�z#MultiprocessTestRunner.stop_workerscCs�|jjdu}t}tdd�|jD��rM|rtjtdd�z|jj	|d�WSt
jy-Ynwt|j�}|rC|jj
sC|�dd�|��tdd�|jD��sz|jj	dd�WSt
jy`YdSw)	Ncss�|]}|��VqdSr@)rj)r�r�rrr�	<genexpr>�s�z5MultiprocessTestRunner._get_result.<locals>.<genexpr>T)r=r�zrunning: %s�, r)rr^�PROGRESS_UPDATE�anyr��faulthandlerZdump_traceback_later�MAIN_PROCESS_TIMEOUTr\�getr��Emptyr��pgor�rp)rEZuse_faulthandlerr^rgrrr�_get_result�s*��
��z"MultiprocessTestRunner._get_resultr�cCs�|j}t|�}|jdur|d|j7}n|jtkr&|jjs&|dt|j�7}t|j	�}|r:|jjs:|dd�
|�7}|j�|j
|�dS)Nz (%s)z -- running: %sr�)rrTrRr�rrr�rr�r�rpr_Zdisplay_progress�
test_index)rEr�rr�rgrrr�display_result�s

z%MultiprocessTestRunner.display_result�itemcCs�|dr|d}td|���dS|jd7_|d}|j�|j�|�|�|jr2t|jdd�|jrB|j	j
sBt|jtjdd�t|j|j	�rKdSdS)z&Returns True if test runner must stop.rr�zregrtest worker thread failed: Tr9rvF)
rr�r_Zaccumulate_resultrr�r&r;r'rr�r-r)rEr�r�r�rrr�_process_result�s
z&MultiprocessTestRunner._process_resultcCs�|��d|_z<z	|��}|durn	|�|�}|rnq
Wnty-t�d|j_YnwW|jj	dur9t
��|j�
�|��dS|jj	durNt
��|j�
�|��w)NrT)r�r�r�r��KeyboardInterruptr;r_Zinterruptedrr^r�Zcancel_dump_traceback_laterr[rLr�)rEr�rLrrr�	run_tests�s2
����
�

z MultiprocessTestRunner.run_testsr�)rMrNrOr	rFr�r��QueueOutputr�rQr��boolr�r�rrrrrYis

rYr_cCst|���dSr@)rYr�)r_rrr�run_tests_multiprocess�sr�cs2eZdZdZdedeeeff�fdd�Z�ZS)r<z7Encode a TestResult (sub)class object into a JSON dict.�orcs.t|t�rt|�}|jj|d<|St��|�S)N�__test_result__)rrr+rfrMrZ�default)rEr�rrerrr��s

zEncodeTestResult.default)	rMrNrOrPr�dictrTr�r�rrrerr<�s&r<�dcCsBd|vr|S|�d�}t�D]}|j|kr|di|��SqdS)z7Decode a TestResult (sub)class object from a JSON dict.r�Nr)�pop�get_all_test_result_classesrM)r��cls_namer8rrrr��s


��r�cCsTd}th}t|�|kr(t|�}g}|D]	}|�|���q|�|�t|�|ks|S)Nr)rr�rn�__subclasses__�update)Z
prev_countZclassesZto_addr8rrrr�s
�r�)E�collectionsr�rr3r�rxr0r-rArlr��typingrrrrrrrZtest.supportrZtest.libregrtest.cmdlinerZtest.libregrtest.mainr	Ztest.libregrtest.runtestr
rrr
rrrZtest.libregrtest.setuprZtest.libregrtest.utilsrrr�r�r��hasattrr/r�rr�rTr"r1r7r>r?rQZExcStrr�r�rU�ThreadrV�listr�rYr�ZJSONEncoderr<r�r��set�typer�rrrr�<module>sP$
 [
&