Your IP : 216.73.216.196


Current Path : /opt/alt/python39/lib64/python3.9/test/libregrtest/__pycache__/
Upload File :
Current File : //opt/alt/python39/lib64/python3.9/test/libregrtest/__pycache__/runtest_mp.cpython-39.opt-2.pyc

a

XC?h�D�@sddlmZddlZddlZddlZddlZddlZddlZddlZddl	Z	ddl
Z
ddlZddlm
Z
mZmZmZmZddlmZddlmZddlmZddlmZmZmZmZmZmZmZddl m!Z!dd	l"m#Z#m$Z$d
Z%dZ&d
Z'e(ed�o�e(ed
�Z)dddd�dd�Z*dd�dd�Z+dddd�dd�Z,dddd�dd �Z-Gd!d"�d"�Z.Gd#d$�d$e
�Z/e�r�e0Z1e2ed%e/fe2ed&e1fBZ3Gd'd(�d(e4�Z5Gd)d*�d*e	j6�Z7d+d+d,�d-d.�Z8Gd/d0�d0�Z9d1d2d3�d4d5�Z:Gd6d7�d7ej;�Z<d8d9d:�d;d<�Z=d=d�d>d?�Z>dS)@�)�annotationsN)�
NamedTuple�NoReturn�Literal�Any�
TYPE_CHECKING)�support)�	Namespace)�Regrtest)�runtest�	is_failed�
TestResult�Interrupted�Timeout�
ChildError�PROGRESS_MIN_TIME)�setup_tests)�format_duration�
print_warningg>@g�r@�setsid�killpgr
r	�bool)�result�ns�returncCs&t|t�rdS|jr"t||�r"dSdS)NTF)�
isinstancerZfailfastr)rr�r�@/opt/alt/python39/lib64/python3.9/test/libregrtest/runtest_mp.py�	must_stop)s

rztuple[Namespace, str]�rcCs$t�|�\}}tfi|��}||fS�N)�json�loadsr	)�worker_args�ns_dict�	test_namerrrr�parse_worker_args1sr&�strzsubprocess.Popen)�testnamerrcCsxt|�}||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)r(rr$r#�cmd�kwrrr�run_test_in_subprocess7s4
�������r9r)rr%rcCs<t|�t||�}t�ttj|td�dd�t�d�dS)N)�clsT��flushr)rr�printr!r.�EncodeTestResultr/�exit)rr%rrrr�run_tests_workerPs

r@c@s,eZdZdd�Zdd�Zdd�Zdd�Zd	S)
�MultiprocessIteratorcCst��|_||_dSr )�	threadingZLock�lock�
tests_iter)�selfrDrrr�__init__as
zMultiprocessIterator.__init__cCs|Sr r�rErrr�__iter__eszMultiprocessIterator.__iter__cCsB|j�(|jdurt�t|j�Wd�S1s40YdSr )rCrD�
StopIteration�nextrGrrr�__next__hs
zMultiprocessIterator.__next__cCs0|j�d|_Wd�n1s"0YdSr )rCrDrGrrr�stopnszMultiprocessIterator.stopN)�__name__�
__module__�__qualname__rFrHrKrLrrrrrA]srAc@s.eZdZUded<ded<ded<ded<dS)�MultiprocessResultr
rr'r*r+�	error_msgN)rMrNrO�__annotations__rrrrrPss
rPFTc@seZdZdS)�
ExitThreadN)rMrNrOrrrrrSsrScs�eZdZdddd��fdd�Zdd�d	d
�Zdd�dd�Zdd�d
d�Zd$ddddd�dd�Zddd�dd�Zddd�dd�Z	dd�dd�Z
dd�dd�Zd dd!�d"d#�Z�Z
S)%�TestWorkerProcess�intz'MultiprocessTestRunner'�None)�	worker_id�runnerrcsZt���||_|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__r'rcCs�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>� )rW�is_alive�appendr_ra�time�	monotonicr`�extend�pidr�join)rE�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 ��filer<zFailed to kill z: )rarbr1r=r/r+r5rrm�signal�SIGKILL�kill�ProcessLookupError�OSErrorr)rErqZwhat�excrrr�_kill�s$zTestWorkerProcess._killcCsd|_|��dS)NT)rcr|rGrrrrL�szTestWorkerProcess.stop�Nr
rP)�test_resultr*r+rcCst��|j|_t||||�Sr )rjrkr`�duration_secrP)rEr~r*r+�err_msgrrr�mp_result_error�sz!TestWorkerProcess.mp_result_errorztuple[int, str, str])r%rcCs>t��|_||_zt||j�}d|_||_Wnd|_�Yn0z�z�|jrX|�	�t
�z|j|jd�\}}|j
}WnNtjy�|jr�t
�|�	�d}d}}Yn.ty�|jr�t
��Yn0|��}|��}|||fWW|��d|_d|_S|�	��Yn0W|��d|_d|_n|��d|_d|_0dS)NF�r]r})rjrkr`r_r9rrbrarcr|rSZcommunicater]�
returncoder2�TimeoutExpiredrz�strip�rstrip�_wait_completed)rEr%rqr*r+�retcoderrr�_run_process�sV

�
�zTestWorkerProcess._run_processc	
Cs�|�|�\}}}|dur*|�t|�||�Sd}|dkr@d|}nb|�d�\}}}|��}|sbd}n@ztj|td�}Wn,ty�}zd|}WYd}~n
d}~00|dur�|�t	|�|||�St
||||�S)NrzExit code %s�
zFailed to parse worker stdout)Zobject_hookzFailed to parse worker JSON: %s)r�r�r�
rpartitionr�r!r"�decode_test_result�	ExceptionrrP)	rEr%r�r*r+r��_rr{rrr�_runtests&

�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)rcrJrZrIr�r[ZputrrrrS�
BaseException�	traceback�
format_exc)rEr%�	mp_resultrrr�run#s
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): )rar*�closer+�wait�JOIN_TIMEOUTr2r�rzrr)rErqr{rrrr�6s


��z!TestWorkerProcess._wait_completed�float)r`rcCsd|�d�|��sq`t��|}|j�d|�dt|����|tkrtd|�dt|����q`qdS)Ng�?zWaiting for z thread for zFailed to join z in )	rnrhrjrkr^�logrr�r)rEr`rrrrr�wait_stoppedEs
�zTestWorkerProcess.wait_stopped)r}r}N)rMrNrOrFrsr|rLr�r�r�r�r�r��
__classcell__rrrdrrT�s�
;rTzlist[TestWorkerProcess])�workersrcCsNg}|D]@}|j}|sqt��|j}|tkrd|t|�f}|�|�q|S)Nz%s (%s))r_rjrkr`rrri)r�rf�workerr_rr�textrrr�get_running]sr�c@steZdZddd�dd�Zdd�dd�Zdd�d	d
�Zdd�dd
�Zddd�dd�Zddd�dd�Zdd�dd�Z	dS)�MultiprocessTestRunnerr
rV�r^rcCsj||_|jj|_|j|_t��|_t|jj�|_|jj	durZt
|jj	d|jj	d�|_nd|_d|_dS)Ng�?i,)
r^r�r�queueZQueuer[rAZtestsrZr]�minr\r�)rEr^rrrrFks


�zMultiprocessTestRunner.__init__rcs|�fdd�td�jjd�D��_dt�j��d�}�jjrZ|dt�jj�t�j�f7}��|��jD]}|�	�qjdS)Ncsg|]}t|���qSr)rT)�.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_workers{s
�
��

z$MultiprocessTestRunner.start_workerscCs6t��}|jD]}|��q|jD]}|�|�q"dSr )rjrkr�rLr�)rEr`r�rrr�stop_workers�s



z#MultiprocessTestRunner.stop_workerszQueueOutput | NonecCs�|jjdu}t}tdd�|jD��r�|r6tjtdd�z|jj	|d�WSt
jyZYn0t|j�}|r|jj
s|�dd�|��qz|jj	dd�WSt
jy�YdS0dS)	Ncss|]}|��VqdSr )rh)r�r�rrr�	<genexpr>��z5MultiprocessTestRunner._get_result.<locals>.<genexpr>T)r?r�zrunning: %s�, r)rr]�PROGRESS_UPDATE�anyr��faulthandlerZdump_traceback_later�MAIN_PROCESS_TIMEOUTr[�getr�ZEmptyr��pgor�rn)rEZuse_faulthandlerr]rfrrr�_get_result�s$�
z"MultiprocessTestRunner._get_resultrP)r�rcCs�|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�)rr'rQrrrr�rr�r�rnr^Zdisplay_progress�
test_index)rEr�rr�rfrrr�display_result�s

z%MultiprocessTestRunner.display_result�QueueOutputr)�itemrcCs�|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;rtF)
rr�r^Zaccumulate_resultrr�r*r=r+rr�r/r)rEr�r�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��KeyboardInterruptr=r^Zinterruptedrr]r�Zcancel_dump_traceback_laterrZrLr�)rEr�rLrrr�	run_tests�s(


�
z MultiprocessTestRunner.run_testsN)
rMrNrOrFr�r�r�r�r�r�rrrrr�jsr�r
rVr�cCst|���dSr )r�r�)r^rrr�run_tests_multiprocess�sr�cs$eZdZddd��fdd�Z�ZS)r>r�dict[str, Any])�orcs.t|t�r"t|�}|jj|d<|St��|�S�NZ__test_result__)rr
r-rerMrY�default)rEr�rrdrrr��s

zEncodeTestResult.default)rMrNrOr�r�rrrdrr>�sr>r�zTestResult | dict[str, Any])�drcCsBd|vr|S|�d�}t�D] }|j|kr|fi|��SqdSr�)�pop�get_all_test_result_classesrM)r��cls_namer:rrrr��s


r�zset[type[TestResult]]cCsJd}th}t|�|krFt|�}g}|D]}|�|���q&|�|�q
|S)Nr)r
r�rl�__subclasses__�update)Z
prev_count�classesZto_addr:rrrr�sr�)?Z
__future__rr�r!r5r�rvr2r/rBrjr��typingrrrrrrprZtest.libregrtest.cmdliner	Ztest.libregrtest.mainr
Ztest.libregrtest.runtestrrr
rrrrZtest.libregrtest.setuprZtest.libregrtest.utilsrrr�r�r��hasattrr1rr&r9r@rArPr'ZExcStr�tupler�r�rSZThreadrTr�r�r�ZJSONEncoderr>r�r�rrrr�<module>sN$
 [