Your IP : 216.73.216.213


Current Path : /opt/alt/python34/lib64/python3.4/test/test_asyncio/__pycache__/
Upload File :
Current File : //opt/alt/python34/lib64/python3.4/test/test_asyncio/__pycache__/test_subprocess.cpython-34.pyc

�
f fNE�@s�ddlZddlZddlZddlZddlmZddlZddlmZddlmZddlmZyddl	m
Z
Wn"ek
r�ddlmZ
YnXej
dkr�dd	lmZnejd
dgZejd
djd
ddf�gZGdd�dej�ZGdd�dej�ZGdd�d�Zej
dkr�Gdd�de�ZGdd�deej�ZGdd�deej�ZnGdd�deej�Zedkr�ej�ndS)�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/python34/lib64/python3.4/test/test_asyncio/test_subprocess.py�_startszTestSubprocessTransport._startN)�__name__�
__module__�__qualname__rrrrrrsrc@s7eZdZdd�Zddd�Zdd�ZdS)�SubprocessTransportTestscCs#|j�|_|j|j�dS)N)Z
new_test_loop�loop�set_event_loop)rrrr�setUp%szSubprocessTransportTests.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)rrr#r"rrr�test_proc_exited3s$
	z)SubprocessTransportTests.test_proc_exited)rrrrr$r7rrrrr$s	rc@s�eZdZdd�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'S)(�SubprocessMixincs�t�tj��fdd��}|d�}tj|dd�j�}�jj|�\}}�j|d��j|d�dS)Nc3s�tjdtjdtjd�j��DdH}|jj|�|jj�DdH|jj�|j	j
�DdH}|j�DdH}||fS)Nrrr)r&�create_subprocess_execr�PIPErr�write�drainr6r�read�wait)�data�proc�exitcode)rrrr�runSs			
z.SubprocessMixin.test_stdin_stdout.<locals>.runs	some datagN@rr)�PROGRAM_CATr&�	coroutine�wait_forrr'r()rrB�taskrArr)rrr�test_stdin_stdoutPsz!SubprocessMixin.test_stdin_stdoutcs�t�tj��fdd��}|d�}tj|dd�j�}�jj|�\}}�j|d��j|d�dS)Nc3sVtjdtjdtjd�j��DdH}|j|�DdH\}}|j|fS)Nrrr)r&r9rr:r�communicate�
returncode)r?r@rr)rrrrrBns			z-SubprocessMixin.test_communicate.<locals>.runs	some datagN@rr)rCr&rDrErr'r()rrBrFrArr)rrr�test_communicateks
z SubprocessMixin.test_communicatecCsVtjdd|j�}|jj|�}|jj|j��}|j|d�dS)Nzexit 7r�)r&�create_subprocess_shellrr'r>r()r�creater@rArrr�
test_shell~s
zSubprocessMixin.test_shellcCs\tjdddd|j�}|jj|�}|jj|j��}|j|d�dS)Nzexit 8Zstart_new_sessionTr�)r&rLrr'r>r()rrMr@rArrr�test_start_new_session�sz&SubprocessMixin.test_start_new_sessioncCs�t}tjd|j|�}|jj|�}|j�|jj|j��}tjdkrt|j	|t
�n|jtj
|�dS)Nrr)�PROGRAM_BLOCKEDr&r9rr'r5r>�sys�platform�assertIsInstance�intr(r2�SIGKILL)rrrMr@rIrrr�	test_kill�s
zSubprocessMixin.test_killcCs�t}tjd|j|�}|jj|�}|j�|jj|j��}tjdkrt|j	|t
�n|jtj
|�dS)Nrr)rQr&r9rr'r4r>rRrSrTrUr(r2r3)rrrMr@rIrrr�test_terminate�s
zSubprocessMixin.test_terminateTz"Temporarily skipped (rhbz#1088233)cs�d}tjd|g}tjdtjd�j|�}�jj|�}tj�fdd��}�jj||��}�j	t
j|�dS)Nz<import time; print("sleeping", flush=True); time.sleep(3600)z-crrc3sI|jj�DdH}�j|d�|jtj�|j�DdH}|S)Ns	sleeping
)r�readliner(r1r2�SIGHUPr>)r@�linerI)rrrr1�s
z5SubprocessMixin.test_send_signal.<locals>.send_signal)rR�
executabler&r9rr:rr'rDr(r2rZ)r�coderrMr@r1rIr)rr�test_send_signal�s		
z SubprocessMixin.test_send_signalcCsSdtj}tjtjdddtjd|j�}|jj	|�}||fS)N�xz-c�passrr)
rZ
PIPE_MAX_SIZEr&r9rRr\rr:rr')r�
large_datarMr@rrr�prepare_broken_pipe_test�s
	z(SubprocessMixin.prepare_broken_pipe_testcCs�|j�\}}tjdd��}|||�}tj��$|jttf|jj	|�WdQX|jj	|j
��dS)Ncss&|jj|�|jj�DdHdS)N)rr;r<)r@r?rrr�write_stdin�sz;SubprocessMixin.test_stdin_broken_pipe.<locals>.write_stdin)rbr&rDr�disable_loggerr/�BrokenPipeError�ConnectionResetErrorrr'r>)rr@rarc�cororrr�test_stdin_broken_pipe�s
z&SubprocessMixin.test_stdin_broken_pipec
CsX|j�\}}tj��|jj|j|��WdQX|jj|j��dS)N)rbrrdrr'rHr>)rr@rarrr�#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�DdH}|j
jd�}|j�DdH\}}||fS)
N�
z
import syszsys.stdout.write("x" * %s)zsys.stdout.flush()c?sB�||�DdH\}}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�limitrrl)
�joinrrqr&rDr9rRr\rr:Z
_transportZget_pipe_transportrH)r]rrr@Zstdout_transportrr)rsr�size)rqr�test_pause_reading�s z>SubprocessMixin.test_pause_reading.<locals>.test_pause_readingr_)	r&rDrr'r(r*rnr+ro)rrvrr#r)rsrrurrv�s!$z"SubprocessMixin.test_pause_readingcsctj�fdd��}�jj|d��\}}�j|j�d��j|d�dS)Nc3s�d}tjtjd|dtjjdtjjdtjjddd�j�DdH}|j|�DdH\}}|j�DdH}||fS)	Nz5import sys; data = sys.stdin.read(); print(len(data))z-crrrZ	close_fdsFr)	r&r9rRr\rr:rrHr>)�messager]r@rrrA)rrr�len_messagesz?SubprocessMixin.test_stdin_not_inheritable.<locals>.len_messagesabc�3r)r&rDrr'r(�rstrip)rrx�outputrAr)rr�test_stdin_not_inheritable
sz*SubprocessMixin.test_stdin_not_inheritablecs2tj�fdd��}�jj|��dS)Nc3s�tjd�jt�DdH}�jj|j��}�jj|j�y
|DdHWntjk
rlYnX|j�|j	�|j�DdHdS)Nr)
r&r9rrQ�create_taskr>�	call_soon�cancel�CancelledErrorr5)r@rF)rrr�cancel_wait%s	


z=SubprocessMixin.test_cancel_process_wait.<locals>.cancel_wait)r&rDrr')rr�r)rr�test_cancel_process_wait"sz(SubprocessMixin.test_cancel_process_waitc	sEtj�fdd��}tj���jj|��WdQXdS)Nc3sftjd�jt�}�jj|�}�jj|j�y
|DdHWntjk
raYnXdS)Nr)r&r9rrQr}r~rr�)rgrF)rrr�cancel_make_transport=s	
zYSubprocessMixin.test_cancel_make_subprocess_transport_exec.<locals>.cancel_make_transport)r&rDrrdrr')rr�r)rr�*test_cancel_make_subprocess_transport_exec<s
z:SubprocessMixin.test_cancel_make_subprocess_transport_execc	sUtj�fdd��}tj��(�jj|��tj�j�WdQXdS)Nc3sf�jjtjt�}�jj|�}�jj|j�y
|DdHWntjk
raYnXdS)N)	r�subprocess_execr&�SubprocessProtocolrQr}r~rr�)rgrF)rrrr�Os	
zDSubprocessMixin.test_cancel_post_init.<locals>.cancel_make_transport)r&rDrrdrr'�run_briefly)rr�r)rr�test_cancel_post_initNs
z%SubprocessMixin.test_cancel_post_initc	swtj�fdd��}tj�� �jj|��\}}WdQX�j|��j|�tj�j�dS)Nc3s��jjtjt�}|DdH\}}d���fdd�}|jd�}|j�||_|j�}|j�|j	�DdH|�fS)NFcsd���dS)NTrr)�kill_called�	orig_killrrr5iszKSubprocessMixin.test_close_kill_running.<locals>.kill_running.<locals>.killr)
rr�r&r�rQ�get_extra_infor5r)r6Z_wait)rMr#r"r5r@rI)r)r�r�r�kill_runningbs			
z=SubprocessMixin.test_close_kill_running.<locals>.kill_running)	r&rDrrdrr'r.r*r�)rr�rI�killedr)rr�test_close_kill_runningas
!

z'SubprocessMixin.test_close_kill_runningc	s�tj�fdd��}tj��*�jj|��}tj�j�WdQX|\}}}�j|��j|��j	|�dS)Nc3s��jjtjt�}|DdH\}}|jd�}|j�|j�tj	�|_|j
�}|j�}|j�|||jj
fS)Nr)rr�r&r�rQr�r5r>rrZpollr)r6r+)rMr#r"r@�proc_returncodeZtransport_returncode)rrrr��s	


zCSubprocessMixin.test_close_dont_kill_finished.<locals>.kill_running)
r&rDrrdrr'r�ZassertIsNotNoner.r-)rr��resultr�Ztransport_return_coder�r)rr�test_close_dont_kill_finisheds


z-SubprocessMixin.test_close_dont_kill_finishedcCs�tjdkrd}nd}tj|���}t}||_tjtjddd|j	�}t
jdd��=}|j|��|j	j
|�WdQX|j|g�WdQXWdQXdS)	Nrzasyncio.windows_utils.Popenzsubprocess.Popenz-cr`r�recordT)rRrSrZpatch�ZeroDivisionErrorZside_effectr&r9r\r�warnings�catch_warningsr/r'r()r�target�popen�excrMZwarnsrrr�test_popen_error�s		z SubprocessMixin.test_popen_errorN)rrrrGrJrNrPrWrX�unittestZskipIfr^rbrhrirvr|r�r�r�r�r�r�rrrrr8Ns$	."r8c@s"eZdZdZdd�ZdS)�SubprocessWatcherMixinNcCsktj�}|j�|_|j|j�|j�}|j|j�|j|�|j|jd�dS)N)	r&Zget_event_loop_policyZnew_event_looprr�WatcherZattach_loopZset_child_watcherZ
addCleanup)rZpolicyZwatcherrrrr�s
zSubprocessWatcherMixin.setUp)rrrr�rrrrrr��sr�c@seZdZejZdS)�SubprocessSafeWatcherTestsN)rrrr	ZSafeChildWatcherr�rrrrr��sr�c@seZdZejZdS)�SubprocessFastWatcherTestsN)rrrr	ZFastChildWatcherr�rrrrr��sr�c@seZdZdd�ZdS)�SubprocessProactorTestscCs#tj�|_|j|j�dS)N)r&ZProactorEventLooprr)rrrrr�szSubprocessProactorTests.setUpN)rrrrrrrrr��sr��__main__)r2rRr�r�rr&rrrrr�ImportErrorrrSr	r\rQrtrCZBaseSubprocessTransportrZTestCaserr8r�r�r�r�r�mainrrrr�<module>s@
		*�g