Your IP : 216.73.216.213


Current Path : /opt/alt/python35/lib64/python3.5/test/test_asyncio/__pycache__/
Upload File :
Current File : //opt/alt/python35/lib64/python3.5/test/test_asyncio/__pycache__/test_subprocess.cpython-35.pyc



��YfN�@s�ddlZddlZddlZddlZddlmZddlZddlmZddlmZddlmZyddl	m
Z
Wn"ek
r�ddlmZ
YnXej
dkr�dd	lmZejd
dgZejd
djd
ddf�gZGdd�dej�ZGdd�dej�ZGdd�d�Zej
dkr�Gdd�de�ZGdd�deej�ZGdd�deej�ZnGdd�deej�Zedkr�ej�dS)�N)�mock)�base_subprocess)�
subprocess)�
test_utils)�support)�test_support�win32)�unix_eventsz-czimport time; time.sleep(3600)�;z
import syszdata = sys.stdin.buffer.read()zsys.stdout.buffer.write(data)c@seZdZdd�ZdS)�TestSubprocessTransportcOs7tj�|_d|j_d|j_d|j_dS)N)r�Mock�_proc�stdin�stdout�stderr)�self�args�kwargs�r�F/opt/alt/python35/lib64/python3.5/test/test_asyncio/test_subprocess.py�_startszTestSubprocessTransport._startN)�__name__�
__module__�__qualname__rrrrrrsrcs=eZdZ�fdd�Zddd�Zdd�Z�S)�SubprocessTransportTestscs0t�j�|j�|_|j|j�dS)N)�super�setUpZ
new_test_loop�loop�set_event_loop)r)�	__class__rrr%s
zSubprocessTransportTests.setUpNcCs[tj�}d|j_d|j_t|j|dgdddddd|�}||fS)NF�testr�waiter)rr�connection_madeZ
_is_coroutine�process_exitedrr)rr!�protocol�	transportrrr�create_transport+sz)SubprocessTransportTests.create_transportcCs@tjd|j�}|j|�\}}|jd�|jj|�|j|j�d�|j|j	j
�|j|jj
�|j|jj
�|j|jj
dd�|j|j��|j|j�|j|j�|j|j�|jt|jtj�|jt|j�|jt|j�|j�dS)Nr�r)N)�asyncioZFuturerr&Z_process_exited�run_until_complete�assertEqual�get_returncode�
assertTruer"�calledr#Zconnection_lost�	call_args�assertFalseZ
is_closing�assertIsNoneZ_loopr
Z	_protocol�assertRaises�ProcessLookupError�send_signal�signal�SIGTERM�	terminate�kill�close)rr!r%r$rrr�test_proc_exited4s$
	z)SubprocessTransportTests.test_proc_exited)rrrrr&r9rr)rrr$s	rc@seZdZdd�Zdd�Zdd�Zdd�Zd	d
�Zdd�Ze	j
d
d�dd��Zdd�Zdd�Z
dd�Zdd�Zdd�Zdd�Zdd�Zdd �Zd!d"�Zd#d$�Zd%d&�Zd'd(�Zd)d*�Zd+S),�SubprocessMixincs�t�tj��fdd��}|d�}tj|dd�j�}�jj|�\}}�j|d��j|d�dS)Nc3s�tj�dtjdtjd�j�EdH}|jj|�|jj�EdH|jj�|j	j
�EdH}|j�EdH}||fS)Nrrr)r(�create_subprocess_execr�PIPErr�write�drainr8r�read�wait)�data�proc�exitcode)rrrr�runTs		
z.SubprocessMixin.test_stdin_stdout.<locals>.runs	some datagN@rr)�PROGRAM_CATr(�	coroutine�wait_forrr)r*)rrD�taskrCrr)rrr�test_stdin_stdoutQsz!SubprocessMixin.test_stdin_stdoutcs�t�tj��fdd��}|d�}tj|dd�j�}�jj|�\}}�j|d��j|d�dS)Nc3sVtj�dtjdtjd�j�EdH}|j|�EdH\}}|j|fS)Nrrr)r(r;rr<r�communicate�
returncode)rArBrr)rrrrrDos		z-SubprocessMixin.test_communicate.<locals>.runs	some datagN@rr)rEr(rFrGrr)r*)rrDrHrCrr)rrr�test_communicatels
z SubprocessMixin.test_communicatecCsVtjdd|j�}|jj|�}|jj|j��}|j|d�dS)Nzexit 7r�)r(�create_subprocess_shellrr)r@r*)r�createrBrCrrr�
test_shells
zSubprocessMixin.test_shellcCs\tjdddd|j�}|jj|�}|jj|j��}|j|d�dS)Nzexit 8Zstart_new_sessionTr�)r(rNrr)r@r*)rrOrBrCrrr�test_start_new_session�sz&SubprocessMixin.test_start_new_sessioncCs�t}tj|d|j�}|jj|�}|j�|jj|j��}tjdkrt|j	|t
�n|jtj
|�dS)Nrr)�PROGRAM_BLOCKEDr(r;rr)r7r@�sys�platform�assertIsInstance�intr*r4�SIGKILL)rrrOrBrKrrr�	test_kill�s
zSubprocessMixin.test_killcCs�t}tj|d|j�}|jj|�}|j�|jj|j��}tjdkrt|j	|t
�n|jtj
|�dS)Nrr)rSr(r;rr)r6r@rTrUrVrWr*r4r5)rrrOrBrKrrr�test_terminate�s
zSubprocessMixin.test_terminateTz"Temporarily skipped (rhbz#1088233)cs�d}tjd|g}tj|dtjd�j�}�jj|�}tj�fdd��}�jj||��}�j	t
j|�dS)Nz<import time; print("sleeping", flush=True); time.sleep(3600)z-crrc3sI|jj�EdH}�j|d�|jtj�|j�EdH}|S)Ns	sleeping
)r�readliner*r3r4�SIGHUPr@)rB�linerK)rrrr3�s
z5SubprocessMixin.test_send_signal.<locals>.send_signal)rT�
executabler(r;rr<rr)rFr*r4r\)r�coderrOrBr3rKr)rr�test_send_signal�s	
z SubprocessMixin.test_send_signalcCsSdtj}tjtjdddtjd|j�}|jj	|�}||fS)N�xz-c�passrr)
rZ
PIPE_MAX_SIZEr(r;rTr^rr<rr))r�
large_datarOrBrrr�prepare_broken_pipe_test�s
	z(SubprocessMixin.prepare_broken_pipe_testcCs�|j�\}}tjdd��}|||�}tj��$|jttf|jj	|�WdQRX|jj	|j
��dS)Ncss&|jj|�|jj�EdHdS)N)rr=r>)rBrArrr�write_stdin�sz;SubprocessMixin.test_stdin_broken_pipe.<locals>.write_stdin)rdr(rFr�disable_loggerr1�BrokenPipeError�ConnectionResetErrorrr)r@)rrBrcre�cororrr�test_stdin_broken_pipe�s
z&SubprocessMixin.test_stdin_broken_pipec
CsY|j�\}}tj��|jj|j|��WdQRX|jj|j��dS)N)rdrrfrr)rJr@)rrBrcrrr�#test_communicate_ignore_broken_pipe�s
 z3SubprocessMixin.test_communicate_ignore_broken_pipecs�d��dd�tj���fdd��}�jj|��\}}�j|d���j|jj��j|jj�dS)N�
��c3s�djdd�df�}�jj�tj�fdd��}|�j_tjtjd|dtjj	d	tjj	d
�d�j�EdH}|j
jd�}|j�EdH\}}||fS)
N�
z
import syszsys.stdout.write("x" * %s)zsys.stdout.flush()c?sB�||�EdH\}}tj�|_tj�|_||fS)N)rr�
pause_reading�resume_reading)r�kwr%r$)�connect_read_piperr�connect_read_pipe_mock�sz^SubprocessMixin.test_pause_reading.<locals>.test_pause_reading.<locals>.connect_read_pipe_mockz-crr�limitrrn)
�joinrrsr(rFr;rTr^rr<Z
_transportZget_pipe_transportrJ)r_rtrBZstdout_transportrr)rur�size)rsr�test_pause_reading�s z>SubprocessMixin.test_pause_reading.<locals>.test_pause_readingra)	r(rFrr)r*r,rpr-rq)rrxrr%r)rurrwrrx�s!$z"SubprocessMixin.test_pause_readingcsctj�fdd��}�jj|d��\}}�j|j�d��j|d�dS)Nc3s�d}tjtjd|dtjjdtjjdtjjddd�j�EdH}|j|�EdH\}}|j�EdH}||fS)	Nz5import sys; data = sys.stdin.read(); print(len(data))z-crrr�	close_fdsFr)	r(r;rTr^rr<rrJr@)�messager_rBrrrC)rrr�len_messagesz?SubprocessMixin.test_stdin_not_inheritable.<locals>.len_messagesabc�3r)r(rFrr)r*�rstrip)rr{�outputrCr)rr�test_stdin_not_inheritablesz*SubprocessMixin.test_stdin_not_inheritablecs`tj�fdd��}�jj|��\}}�j|j�d��j|d�dS)Nc3s�d}tjtjd|dtjjdtjjdtjjddd�j�EdH}|jd	�EdH\}}|j�EdH}||fS)
Nz5import sys; data = sys.stdin.read(); print(len(data))z-crrrryFr�)	r(r;rTr^rr<rrJr@)r_rBrrrC)rrr�empty_input$sz5SubprocessMixin.test_empty_input.<locals>.empty_input�0r)r(rFrr)r*r})rr�r~rCr)rr�test_empty_input#sz SubprocessMixin.test_empty_inputcs2tj�fdd��}�jj|��dS)Nc3s�tjtd�j�EdH}�jj|j��}�jj|j�y
|EdHWntjk
rlYnX|j�|j	�|j�EdHdS)Nr)
r(r;rSr�create_taskr@�	call_soon�cancel�CancelledErrorr7)rBrH)rrr�cancel_wait9s


z=SubprocessMixin.test_cancel_process_wait.<locals>.cancel_wait)r(rFrr))rr�r)rr�test_cancel_process_wait6sz(SubprocessMixin.test_cancel_process_waitc	sFtj�fdd��}tj���jj|��WdQRXdS)Nc3sftjtd�j�}�jj|�}�jj|j�y
|EdHWntjk
raYnXdS)Nr)r(r;rSrr�r�r�r�)rirH)rrr�cancel_make_transportQs
zYSubprocessMixin.test_cancel_make_subprocess_transport_exec.<locals>.cancel_make_transport)r(rFrrfrr))rr�r)rr�*test_cancel_make_subprocess_transport_execPs
z:SubprocessMixin.test_cancel_make_subprocess_transport_execc	sVtj�fdd��}tj��(�jj|��tj�j�WdQRXdS)Nc3sf�jjtjt�}�jj|�}�jj|j�y
|EdHWntjk
raYnXdS)N)	r�subprocess_execr(�SubprocessProtocolrSr�r�r�r�)rirH)rrrr�cs	
zDSubprocessMixin.test_cancel_post_init.<locals>.cancel_make_transport)r(rFrrfrr)�run_briefly)rr�r)rr�test_cancel_post_initbs
z%SubprocessMixin.test_cancel_post_initc	sxtj�fdd��}tj�� �jj|��\}}WdQRX�j|��j|�tj�j�dS)Nc3s��jjtjt�}|EdH\}}d���fdd�}|jd�}|j�||_|j�}|j�|j	�EdH|�fS)NFcsd���dS)NTrr)�kill_called�	orig_killrrr7}szKSubprocessMixin.test_close_kill_running.<locals>.kill_running.<locals>.killr)
rr�r(r�rS�get_extra_infor7r+r8Z_wait)rOr%r$r7rBrK)r)r�r�r�kill_runningvs			
z=SubprocessMixin.test_close_kill_running.<locals>.kill_running)	r(rFrrfrr)r0r,r�)rr�rK�killedr)rr�test_close_kill_runningus
"

z'SubprocessMixin.test_close_kill_runningc
s�tj�fdd��}tj��*�jj|��}tj�j�WdQRX|\}}}�j|��j|��j	|�t
jdkr�t�t
�r�tj�jj�dS)Nc3s��jjtjt�}|EdH\}}|jd�}|j�|j�tj	�|_|j
�}|j�}|j�|||jj
fS)Nr)rr�r(r�rSr�r7r@rrZpollr+r8r-)rOr%r$rB�proc_returncodeZtransport_returncode)rrrr��s	


zCSubprocessMixin.test_close_dont_kill_finished.<locals>.kill_runningr)r(rFrrfrr)r�ZassertIsNotNoner0r/rTrU�
isinstance�SubprocessFastWatcherTestsZget_child_watcherZ
_callbacks�clear)rr��resultr�Ztransport_return_coder�r)rr�test_close_dont_kill_finished�s



z-SubprocessMixin.test_close_dont_kill_finishedcCs�tjdkrd}nd}tj|���}t}||_tjtjddd|j	�}t
jdd��>}|j|��|j	j
|�WdQRX|j|g�WdQRXWdQRXdS)	Nrzasyncio.windows_utils.Popenzsubprocess.Popenz-crbr�recordT)rTrUrZpatch�ZeroDivisionErrorZside_effectr(r;r^r�warnings�catch_warningsr1r)r*)r�target�popen�excrOZwarnsrrr�test_popen_error�s		z SubprocessMixin.test_popen_errorcs2tj�fdd��}�jj|��dS)Nc3s�djdddddg�}tjtjd|dtjjd	�j�}|EdH}x@|jj	d
�EdH}|r�tj
dd	�j�EdHqYPqYWdS)Nroz
import syszfor _ in range(64):z     sys.stdout.write("x" * 4096)zsys.stdout.flush()zsys.exit(1)z-crrig333333�?)rvr(r;rTr^rr<rrr?Zsleep)r_ZfutZprocessrA)rrr�execute�s	zDSubprocessMixin.test_read_stdout_after_process_exit.<locals>.execute)r(rFrr))rr�r)rr�#test_read_stdout_after_process_exit�sz3SubprocessMixin.test_read_stdout_after_process_exitN)rrrrIrLrPrRrYrZ�unittestZskipIfr`rdrjrkrxrr�r�r�r�r�r�r�r�rrrrr:Os(	.)r:cs(eZdZdZ�fdd�Z�S)�SubprocessWatcherMixinNcsxt�j�tj�}|j�|_|j|j�|j�}|j|j�|j	|�|j
|j	d�dS)N)rrr(Zget_event_loop_policyZnew_event_looprr�WatcherZattach_loopZset_child_watcherZ
addCleanup)rZpolicyZwatcher)rrrr�s

zSubprocessWatcherMixin.setUp)rrrr�rrr)rrr��sr�c@seZdZejZdS)�SubprocessSafeWatcherTestsN)rrrr	ZSafeChildWatcherr�rrrrr��sr�c@seZdZejZdS)r�N)rrrr	ZFastChildWatcherr�rrrrr��sr�cs"eZdZ�fdd�Z�S)�SubprocessProactorTestscs0t�j�tj�|_|j|j�dS)N)rrr(ZProactorEventLooprr)r)rrrrs
zSubprocessProactorTests.setUp)rrrrrr)rrr�sr��__main__)r4rTr�r�rr(rrrr r�ImportErrorrrUr	r^rSrvrEZBaseSubprocessTransportrZTestCaserr:r�r�r�r�r�mainrrrr�<module>s@
		+��