Your IP : 216.73.216.60


Current Path : /opt/alt/python38/lib64/python3.8/test/libregrtest/__pycache__/
Upload File :
Current File : //opt/alt/python38/lib64/python3.8/test/libregrtest/__pycache__/runtest_mp.cpython-38.opt-2.pyc

U

i�f=�@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�@/opt/alt/python38/lib64/python3.8/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

r4c@s,eZdZdd�Zdd�Zdd�Zdd�Zd	S)
�MultiprocessIteratorcCst��|_||_dSr)�	threadingZLock�lock�
tests_iter)�selfr8rrr�__init__^s
zMultiprocessIterator.__init__cCs|Srr�r9rrr�__iter__bszMultiprocessIterator.__iter__c
Cs6|j�&|jdkrt�t|j�W5QR�SQRXdSr)r7r8�
StopIteration�nextr;rrr�__next__es
zMultiprocessIterator.__next__c	Cs|j�d|_W5QRXdSr)r7r8r;rrr�stopkszMultiprocessIterator.stopN)�__name__�
__module__�__qualname__r:r<r?r@rrrrr5Zsr5�MultiprocessResultzresult stdout stderr error_msgc@seZdZdS)�
ExitThreadN)rArBrCrrrrrEssrEcsfeZdZ�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)r9rHZrunner��	__class__rrr:xs
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>� )rH�is_alive�appendrNrP�time�	monotonicrO�extend�pidr�join)r9�info�test�popen�dtrrr�__repr__�s
�zTestWorkerProcess.__repr__c
Cs�|j}|dkrdS|jrdSd|_tr2|�d�}n|�}td|��tjdd�z"trft�|jt	j
�n|��WnHtk
r�Yn6t
k
r�}ztd|�d|���W5d}~XYnXdS)NTz process groupzKill ��filer0zFailed to kill z: )rPrQr&r1r$r r*rr\�signal�SIGKILL�kill�ProcessLookupError�OSErrorr
)r9r`Zwhat�excrrr�_kill�s$zTestWorkerProcess._killcCsd|_|��dS)NT)rRrkr;rrrr@�szTestWorkerProcess.stop�NcCs*t��|j}t|||d�}t||||�Sr)rYrZrOrrD)r9rZ
error_typerr �err_msg�	test_timerrrr�mp_result_error�sz!TestWorkerProcess.mp_result_errorcCst��|_||_zt||j�}d|_||_Wnd|_�YnXz�z�|j	rX|�
�t�z|j|j
d�\}}|j}WnRtjk
r�|j	r�t�|�
�d}d}}Yn0tk
r�|j	r�t��YnX|��}|��}|||fWW�S|�
��YnXW5|��d|_d|_XdS)NF�rLrl)rYrZrOrNr.rrQrP�_wait_completedrRrkrEZcommunicaterL�
returncoder'�TimeoutExpiredri�strip�rstrip)r9rr`rr �retcoderrr�_run_process�sH

zTestWorkerProcess._run_processc	
Cs�|�|�\}}}|dkr(|�|t||�Sd}|dkr>d|}nd|�d�\}}}|��}|s`d}nBzt�|�}t|�}Wn*tk
r�}zd|}W5d}~XYnX|dk	r�|�|t	|||�St
||||�S)NrzExit code %s�
zFailed to parse worker stdoutzFailed to parse worker JSON: %s)rwror
�
rpartitionrurrr�	ExceptionrrD)	r9rrvrr rm�_rrjrrr�_runtest�s,

�zTestWorkerProcess._runtestcCs�|js�zZzt|j�}Wntk
r0YWq�YnX|�|�}|j�d|f�t|j|j	�r^Wq�Wqt
k
rxYq�Yqtk
r�|j�dt�
�f�Yq�YqXqdS)NFT)rRr>rIr=r|rJZputrrrrE�
BaseException�	traceback�
format_exc)r9r�	mp_resultrrr�runs
zTestWorkerProcess.runc
Cst|j}|j��|j��z|�t�WnFtjtfk
rn}z"t	d|�dt
t��d|���W5d}~XYnXdS)NzFailed to wait for z completion (timeout=z): )rPr�closer �wait�JOIN_TIMEOUTr'rsrir
r)r9r`rjrrrrq'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]rWrYrZrM�logrr�r
)r9rOrarrr�wait_stopped6s
zTestWorkerProcess.wait_stopped)rlrlN)rArBrCr:rbrkr@rorwr|r�rqr��
__classcell__rrrSrrFws�
;rFcCsNg}|D]@}|j}|sqt��|j}|tkrd|t|�f}|�|�q|S)Nz%s (%s))rNrYrZrOrrrX)�workersrU�workerrNra�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,)
rMr�r�queueZQueuerJr5ZtestsrIrL�minrKr�)r9rMrrrr:\s


�zMultiprocessTestRunner.__init__cs|�fdd�td�jjd�D��_dt�j��d�}�jjrZ|dt�jj�t�j�f7}��|��jD]}|�	�qjdS)Ncsg|]}t|���qSr)rF)�.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��lenrLrrKr��start)r9�msgr�rr;r�
start_workersls
�
��

z$MultiprocessTestRunner.start_workerscCs6t��}|jD]}|��q|jD]}|�|�q"dSr)rYrZr�r@r�)r9rOr�rrr�stop_workersxs



z#MultiprocessTestRunner.stop_workerscCs�tdd�|jD��s>z|jjdd�WStjk
r<YdSX|jjdk	}t}|r`t	j
tdd�z|jj|d�WStjk
r�YnXt|j�}|rN|jj
sN|�dd�|��qNdS)	Ncss|]}|��VqdSr)rW)r�r�rrr�	<genexpr>�sz5MultiprocessTestRunner._get_result.<locals>.<genexpr>rrpT)r3zrunning: %s�, )�anyr�rJ�getr�ZEmptyrrL�PROGRESS_UPDATE�faulthandlerZdump_traceback_later�MAIN_PROCESS_TIMEOUTr��pgor�r])r9Zuse_faulthandlerrLrUrrr�_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: %sr�)rrZ	error_msgrnrrr�rr�r�r]rMZdisplay_progress�
test_index)r9r�rr�rUrrr�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/rcF)
r
r�rMZaccumulate_resultrr�rr1r rr�r$r)r9�itemrr�rrr�_process_result�s
z&MultiprocessTestRunner._process_resultcCs�|��d|_zPz(|�	�}|dkr$q6|�
|�}|rq6qWn"tk
rZt�d|j
_YnXW5|jjdk	rtt��|j��|��XdS)NrT)r�r�rrLr�Zcancel_dump_traceback_laterrIr@r�r�r��KeyboardInterruptr1rMZinterrupted)r9r�r@rrr�	run_tests�s 

z MultiprocessTestRunner.run_testsN)
rArBrCr:r�r�r�r�r�r�rrrrr�[sr�cCst|���dSr)r�r�)rMrrr�run_tests_multiprocess�sr�)/�collectionsr�rr*r�rer'r$r6rYr~rr_rZtest.libregrtest.runtestrrrrrrr	r
Ztest.libregrtest.setuprZtest.libregrtest.utilsrr
r�r�r��hasattrr&rrr.r4r5�
namedtuplerDrzrEZThreadrFr�r�r�rrrr�<module>sB(
�X
|