Your IP : 216.73.216.60


Current Path : /opt/alt/python36/lib64/python3.6/test/libregrtest/__pycache__/
Upload File :
Current File : //opt/alt/python36/lib64/python3.6/test/libregrtest/__pycache__/runtest_mp.cpython-36.opt-2.pyc

3

��2ag�@s�ddlZddlZddlZddlZddlZddlZddlZddlZddlm	Z	yddl
Z
Wn&ek
r~ed�ej
d�YnXddlmZmZmZmZmZddlmZddlmZdZd	Zd
d�Zdd
�ZGdd�d�ZGdd�de
j�Zdd�ZdS)�N)�supportz+Multiprocess option requires thread support�)�runtest�INTERRUPTED�CHILD_ERROR�PROGRESS_MIN_TIME�format_test_result)�setup_tests)�format_durationg>@g@c
Cs�ddlm}m}t|�}||f}tj|�}tjftj	�dddd|f�}|j
rV|dg7}||||dtjd	ktj
d
�}|�|j�\}}	|j�}
WdQRX|
||	fS)Nr)�Popen�PIPEz-uz-mz
test.regrtestz
--worker-argsz--pgoT�nt)�stdout�stderrZuniversal_newlinesZ	close_fds�cwd)�
subprocessrr�vars�json�dumps�sys�
executablerZargs_from_interpreter_flags�pgo�os�nameZSAVEDCWDZcommunicate�wait)�testname�nsrr�ns_dict�worker_args�cmd�popenrr�retcode�r"�//opt/alt/python36/lib64/python3.6/runtest_mp.py�run_test_in_subprocesss&



r$cCs�tj|�\}}tjf|�}t|�yt||�}WnRtk
rNtddf}Yn6tk
r�}zt	j
�tt|�f}WYdd}~XnXt
�t
tj|�dd�tjd�dS)N�T)�flushr)r�loads�types�SimpleNamespacer	r�KeyboardInterruptr�
BaseException�	traceback�	print_excr�str�printrr�exit)rrrr�result�er"r"r#�run_tests_workerAsr3c@s$eZdZdd�Zdd�Zdd�ZdS)�MultiprocessIteratorcCsd|_tj�|_||_dS)NF)�interrupted�	threadingZLock�lock�tests)�selfr8r"r"r#�__init__Ys
zMultiprocessIterator.__init__cCs|S)Nr")r9r"r"r#�__iter__^szMultiprocessIterator.__iter__c	Cs*|j�|jrtd��t|j�SQRXdS)Nztests interrupted)r7r5�
StopIteration�nextr8)r9r"r"r#�__next__aszMultiprocessIterator.__next__N)�__name__�
__module__�__qualname__r:r;r>r"r"r"r#r4Usr4cs,eZdZ�fdd�Zdd�Zdd�Z�ZS)�MultiprocessThreadcs,t�j�||_||_||_d|_d|_dS)N)�superr:�pending�outputr�current_test�
start_time)r9rDrEr)�	__class__r"r#r:is
zMultiprocessThread.__init__cCs�yt|j�}Wn tk
r.|jjd�dSXz&tj�|_||_t	||j
�\}}}Wdd|_X|dkr�td|df}|jj||j�|j�|f�dS|j
�jd�\}}}|s�|jjd�dStj|�}|jj||j�|j�|f�dS)NTrzExit code %sF�
)NNNN)NNNN)r=rDr<rE�put�time�	monotonicrGrFr$rr�rstrip�strip�
rpartitionrr')r9�testr!rrr1�_r"r"r#�_runtestqs.

zMultiprocessThread._runtestcCsByd}x|s|j�}qWWn"tk
r<|jjd��YnXdS)NF)NNNN)rRr+rErJ)r9�stopr"r"r#�run�szMultiprocessThread.run)r?r@rAr:rRrT�
__classcell__r"r")rHr#rBhs rBcs�tj��t�j���jj}|dk	}���fdd�t�jj�D�}tdt	|��x|D]}|j
�qVWdd�}d}d}ttt
�}�zƐy��x�|�jjk�r|r�tj|dd	�y�j|d
�}	WnFtjk
�r||�}
|
r��jjr�tddj|
�dd
�w�YnX|	\}}}
}|dk�r$|d7}q��j||�|\}}}t||�}|ttfk�rz|t
k�rz�jj�rz|dt|�7}n|tk�r�d||f}||�}
|
�r��jj�r�|ddj|
�7}�j||�|�r�t|dd
�|
�r��jj�r�t|
tjdd�|dtk�rt�|d7}q�WWn(tk
�rDd�_d�_t�YnXWd|�rXtj�Xtj �}x�dd�|D�}
t!t"t#|
��}
|
�s�Ptj �|}ddj|
�t	|
�f}|t$k�r�d||f}t|dd
�x|D]}|jt$��q�W�qdWdS)Ncsg|]}t���j��qSr")rBr)�.0�i)rErD�regrtestr"r#�
<listcomp>�sz*run_tests_multiprocess.<locals>.<listcomp>z.Run tests in parallel using %s child processescSsRg}xH|D]@}|j}|sq
tj�|j}|tkr
d|t|�f}|j|�q
W|S)Nz%s (%s))rFrKrLrGrr
�append)�workers�running�workerrF�dt�textr"r"r#�get_running�s
z+run_tests_multiprocess.<locals>.get_runningr�T)r0)�timeoutzrunning: %sz, )r&z (%s)z%s (%s)z -- running: %s)�filer&cSsg|]
}|j�qSr")rF)rVr]r"r"r#rY�szWaiting for %s (%s tests)z%s since %.0f sec)%�queueZQueuer4r8rrb�rangeZuse_mpr/�len�start�max�PROGRESS_UPDATEr�faulthandlerZdump_traceback_later�getZEmptyr�joinZaccumulate_resultrrrr
Zdisplay_progressrrr*r5Zcancel_dump_traceback_laterrKrL�list�filter�bool�
WAIT_PROGRESS)rXZtest_timeoutZuse_timeoutr[r]r`ZfinishedZ
test_indexZget_timeout�itemr\rPrrr1�okZ	test_timeZxml_datar_Z
wait_startr^�liner")rErDrXr#�run_tests_multiprocess�s�










rt) rjrrrdrrKr,r(rPrr6�ImportErrorr/r0Ztest.libregrtest.runtestrrrrrZtest.libregrtest.setupr	Ztest.libregrtest.utilsr
rirpr$r3r4ZThreadrBrtr"r"r"r#�<module>s.#3