Your IP : 216.73.216.213


Current Path : /opt/alt/python310/lib64/python3.10/test/libregrtest/__pycache__/
Upload File :
Current File : //opt/alt/python310/lib64/python3.10/test/libregrtest/__pycache__/runtest_mp.cpython-310.opt-2.pyc

o

0�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�B/opt/alt/python310/lib64/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-argsTZstart_new_session�nt)�stdout�stderrZuniversal_newlinesZ	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
�������r4r!cCs<t|�t||�}t�ttj|td�dd�t�d�dS)N)�clsT��flushr)rr
�printrr)�EncodeTestResultr*�exit)rr!rrrr�run_tests_workerPs

r;c@s.eZdZ	dd�Zdd�Zdd�Zdd�Zd	S)
�MultiprocessIteratorcCst��|_||_dS�N)�	threadingZLock�lock�
tests_iter)�selfr@rrr�__init__as

zMultiprocessIterator.__init__cCs|Sr=r�rArrr�__iter__eszMultiprocessIterator.__iter__cCsB|j�|jdurt�t|j�Wd�S1swYdSr=)r?r@�
StopIteration�nextrCrrr�__next__hs

$�zMultiprocessIterator.__next__cCs2|j�d|_Wd�dS1swYdSr=)r?r@rCrrr�stopns"�zMultiprocessIterator.stopN)�__name__�
__module__�__qualname__rBrDrGrHrrrrr<]sr<c@s.eZdZUeed<eed<eed<eed<dS)�MultiprocessResultrr%r&�	error_msgN)rIrJrKr�__annotations__�strrrrrrLss

rLFTc@seZdZdS)�
ExitThreadN)rIrJrKrrrrrP~srPc	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)�superrBrR�pending�outputr�worker_timeout�timeout�regrtest�current_test_name�
start_time�_popen�_killed�_stopped)rArRrS��	__class__rrrB�s

zTestWorkerProcess.__init__cCs�d|j��g}|��r|�d�n|�d�|j}|r#|�d|���|j}|durBt��|j}|�d|jj	��dt
|���f�dd�|�S)	NzTestWorkerProcess #�runningZstoppedztest=zpid=ztime=z<%s>� )rR�is_alive�appendr[r]�time�	monotonicr\�extend�pidr�join)rA�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 ��filer7zFailed to kill z: )r]r^r,r8r*r&r0rri�signal�SIGKILL�kill�ProcessLookupError�OSErrorr)rArmZwhat�excrrr�_kill�s("��zTestWorkerProcess._killcCsd|_|��dS)NT)r_rxrCrrrrH�szTestWorkerProcess.stop��test_resultr%r&cCst��|j|_t||||�Sr=)rfrgr\�duration_secrL)rArzr%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�rYry)rfrgr\r[r4rr^r]r_rxrPZcommunicaterY�
returncoder-�TimeoutExpiredrv�strip�rstrip�_wait_completed)rAr!rmr%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�	ExceptionrrL)	rAr!r�r%r&r|�_rrwrrr�_runtests*
��
�zTestWorkerProcess._runtestcCs�|jsRz,zt|j�}WntyYWdSw|�|�}|j�d|f�t|j|j	�r.WdSWnt
y9YdStyL|j�dt�
�f�YdSw|jrdSdS)NFT)r_rFrVrEr�rWZputrrrrP�
BaseException�	traceback�
format_exc)rAr!�	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): )r]r%�closer&�wait�JOIN_TIMEOUTr-r�rvrr)rArmrwrrrr�5s


����z!TestWorkerProcess._wait_completedr\cCsf	|�d�|��sdSt��|}|j�d|�dt|����|tkr2td|�dt|����dSq)NTg�?zWaiting for z thread for zFailed to join z in )	rjrdrfrgrZ�logrr�r)rAr\rnrrr�wait_stoppedDs
��zTestWorkerProcess.wait_stopped�rN)ryryN)rIrJrK�intrBrOrorxrHrrLr}�tupler�r�r�r��floatr��
__classcell__rrr`rrQ�s,

����
�
;

rQ�workerscCsNg}|D] }|j}|sqt��|j}|tkr$d|t|�f}|�|�q|S)Nz%s (%s))r[rfrgr\rrre)r�rb�workerr[rn�textrrr�get_running\s
�r�c@sreZdZdeddfdd�Zddd�Zddd	�ZdedBfd
d�Zde	ddfd
d�Z
dedefdd�Zddd�Z
dS)rTrZrNcCsj||_|jj|_|j|_t��|_t|jj�|_|jj	dur-t
|jj	d|jj	d�|_nd|_d|_dS)Ng�?i,)
rZr�r�queueZQueuerWr<ZtestsrVrY�minrXr�)rArZrrrrBjs

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


�z$MultiprocessTestRunner.start_workerscCs6t��}|jD]}|��q|jD]}|�|�qdSr=)rfrgr�rHr�)rAr\r�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=)rd)r�r�rrr�	<genexpr>�s�z5MultiprocessTestRunner._get_result.<locals>.<genexpr>T)r:r~zrunning: %s�, r)rrY�PROGRESS_UPDATE�anyr��faulthandlerZdump_traceback_later�MAIN_PROCESS_TIMEOUTrW�getr�ZEmptyr��pgor�rj)rAZuse_faulthandlerrYrbrrr�_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�)rrOrMr{rrr�rr�r�rjrZZdisplay_progress�
test_index)rAr�rr�rbrrr�display_result�s

z%MultiprocessTestRunner.display_result�itemcCs�	|dr|d}td|���dS|jd7_|d}|j�|j�|�|�|jr3t|jdd�|jrC|j	j
sCt|jtjdd�t|j|j	�rLdSdS)Nrr�zregrtest worker thread failed: Tr6rpF)
rr�rZZaccumulate_resultrr�r%r8r&rr�r*r)rAr�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��KeyboardInterruptr8rZZinterruptedrrYr�Zcancel_dump_traceback_laterrVrHr�)rAr�rHrrr�	run_tests�s2
����
�

z MultiprocessTestRunner.run_testsr�)rIrJrKr	rBr�r��QueueOutputr�rLr��boolr�r�rrrrrTis

rTrZcCst|���dSr=)rTr�)rZrrr�run_tests_multiprocess�sr�cs0eZdZ	dedeeeff�fdd�Z�ZS)r9�orcs.t|t�rt|�}|jj|d<|St��|�S)N�__test_result__)rrr(rarIrU�default)rAr�rr`rrr��s

zEncodeTestResult.default)rIrJrKr�dictrOr�r�rrr`rr9�s&r9�dcCsD	d|vr|S|�d�}t�D]}|j|kr|di|��SqdS)Nr�r)�pop�get_all_test_result_classesrI)r��cls_namer5rrrr��s


��r�cCsTd}th}t|�|kr(t|�}g}|D]	}|�|���q|�|�t|�|ks|S)Nr)rr�rh�__subclasses__�update)Z
prev_countZclassesZto_addr5rrrr�s
�r�)E�collectionsr�rr0r�rrr-r*r>rfr��typingrrrrrlrZtest.supportrZtest.libregrtest.cmdlinerZtest.libregrtest.mainr	Ztest.libregrtest.runtestr
rrr
rrrZtest.libregrtest.setuprZtest.libregrtest.utilsrrr�r�r��hasattrr,r�rr�rOr"r.r4r;r<rLZExcStrr�r�rPZThreadrQ�listr�rTr�ZJSONEncoderr9r�r��set�typer�rrrr�<module>sP$
 [
&