Your IP : 216.73.216.213


Current Path : /opt/alt/python35/lib64/python3.5/test/eintrdata/__pycache__/
Upload File :
Current File : //opt/alt/python35/lib64/python3.5/test/eintrdata/__pycache__/eintr_tester.cpython-35.opt-2.pyc



���]I?�@sddlZddlZddlZddlZddlZddlZddlZddlZddlZddl	Z	ddl
mZejdd��Z
e	jeed�d�Gdd�de	j��Ze	jeed�d�Gd	d
�d
e��Ze	jeed�d�Gdd�de��Ze	jeed�d�Gd
d�de��Ze	jeed�d�e	jeed�d�Gdd�de���Ze	jeed�d�Gdd�de��Zdd�Zedkre�dS)�N)�supportccs3|�&y	|VWn|j��YnXWdQRXdS)N)�kill)�proc�r�1/opt/alt/python35/lib64/python3.5/eintr_tester.py�
kill_on_errors	
r�	setitimerzrequires setitimer()c@sdeZdZdZdZdZedd��Zedd��Zedd��Z	d	d
�Z
dS)�
EINTRBaseTestg�������?g�������?cCs`tjtjdd��|_tjtj|j|j�ttd�r\tj	ddd�dS)	NcWsdS)Nr)�argsrrr�<lambda>1sz*EINTRBaseTest.setUpClass.<locals>.<lambda>�dump_traceback_later�
�<�exitTiX)
�signal�SIGALRM�orig_handlerr�ITIMER_REAL�signal_delay�
signal_period�hasattr�faulthandlerr)�clsrrr�
setUpClass/s

zEINTRBaseTest.setUpClasscCstjtjdd�dS)Nr)rrr)rrrr�
stop_alarm9szEINTRBaseTest.stop_alarmcCs=|j�tjtj|j�ttd�r9tj�dS)N�cancel_dump_traceback_later)rrrrrrr)rrrr�
tearDownClass=s
zEINTRBaseTest.tearDownClasscOs#tjdf|}tj||�S)Nz-c)�sys�
executable�
subprocess�Popen)�selfr
�kwZcmd_argsrrrrDszEINTRBaseTest.subprocessN)�__name__�
__module__�__qualname__rr�
sleep_time�classmethodrrrrrrrrr	#s
r	c@s�eZdZdd�Zdd�Zdd�Zejee	d�d�d	d
��Z
dd�Zd
d�Zejee	d�d�dd��Z
dd�Zdd�ZdS)�OSEINTRTestcCsd|j}|j|�S)Nzimport time; time.sleep(%r))r&r)r!�coderrr�new_sleep_processMs
zOSEINTRTest.new_sleep_processcsbd}�fdd�t|�D�}xt|�D]
}|�q2Wx|D]}|j�qJWdS)N�csg|]}�j��qSr)r*)�.0�_)r!rr�
<listcomp>Ss	z3OSEINTRTest._test_wait_multiple.<locals>.<listcomp>)�range�wait)r!�	wait_func�num�	processesr-rr)r!r�_test_wait_multipleQs
zOSEINTRTest._test_wait_multiplecCs|jtj�dS)N)r4�osr0)r!rrr�	test_waitZszOSEINTRTest.test_wait�wait3zrequires wait3()cCs|jdd��dS)NcSs
tjd�S)Nr)r5r7rrrrr_sz(OSEINTRTest.test_wait3.<locals>.<lambda>)r4)r!rrr�
test_wait3]szOSEINTRTest.test_wait3cCs'|j�}||j�|j�dS)N)r*�pidr0)r!r1rrrr�_test_wait_singleas
zOSEINTRTest._test_wait_singlecCs|jdd��dS)NcSstj|d�S)Nr)r5�waitpid)r9rrrrhsz*OSEINTRTest.test_waitpid.<locals>.<lambda>)r:)r!rrr�test_waitpidgszOSEINTRTest.test_waitpid�wait4zrequires wait4()cCs|jdd��dS)NcSstj|d�S)Nr)r5r=)r9rrrrlsz(OSEINTRTest.test_wait4.<locals>.<lambda>)r:)r!rrr�
test_wait4jszOSEINTRTest.test_wait4cCs�tj�\}}|jtj|�dddg}djdddd|d	|jdd
ddd
f
�}|j|t|�d|g�}t|��[tj|�x0|D](}|j	|tj
|t|���q�W|j	|j�d�WdQRXdS)Nshellosworldsspam�
zimport os, sys, time�zwr = int(sys.argv[1])z
datas = %rzsleep_time = %rzfor data in datas:z$    # let the parent block on read()z    time.sleep(sleep_time)z    os.write(wr, data)�pass_fdsr)
r5�pipe�
addCleanup�close�joinr&r�strr�assertEqual�read�lenr0)r!�rd�wr�datasr)r�datarrr�	test_readns(
!


&zOSEINTRTest.test_readcCs)tj�\}}|jtj|�dtj}djdddd|jdtjddd	d
dddd
ddddddf�}|j|t	|�d|g�}t
|��mtj|�d}x<|t|�kr|tj|t
|�|d��7}q�W|j|j�d�WdQRXdS)N�xr?zimport io, os, sys, timer@zrd = int(sys.argv[1])zsleep_time = %rzdata = b"x" * %szdata_len = len(data)z!# let the parent block on write()ztime.sleep(sleep_time)zread_data = io.BytesIO()z+while len(read_data.getvalue()) < data_len:z%    chunk = os.read(rd, 2 * data_len)z    read_data.write(chunk)zvalue = read_data.getvalue()zif value != data:z0    raise Exception("read error: %s vs %s bytes"z-                    % (len(value), data_len))rAr)r5rBrCrDrZ
PIPE_MAX_SIZErEr&rrFrrI�write�
memoryviewrGr0)r!rJrKrMr)r�writtenrrr�
test_write�s<


!

*zOSEINTRTest.test_writeN)r#r$r%r*r4r6�unittest�
skipUnlessrr5r8r:r<r>rNrSrrrrr(Is	''r(c@sfeZdZejeed�d�dd��Zdd�Zejeejd�d�d	d
��Z	dd�Z
d
d�Zdd�Zejeejd�d�dd��Z
dd�Zejdd�ejeed�d�dd���Zdd�Zdd �Zejejd!kd"�d#d$��Zejejd!kd"�d%d&��Zd'S)(�SocketEINTRTest�
socketpairzneeds socketpair()c	Cs*tj�\}}|j|j�dddg}djddddt|j�d	t|j�d
|d|jddd
ddddddf�}|j	�}|j
|t|�d|g�}t|��U|j�x-|D]%}|j
|||t|���q�W|j
|j�d�WdQRXdS)NrO�y�zr?zimport os, socket, sys, timer@zfd = int(sys.argv[1])zfamily = %szsock_type = %sz
datas = %rzsleep_time = %rz)wr = socket.fromfd(fd, family, sock_type)zos.close(fd)zwith wr:z    for data in datas:z(        # let the parent block on recv()z        time.sleep(sleep_time)z        wr.sendall(data)rAr)�socketrWrCrDrE�int�family�typer&�filenorrFrrGrIr0)	r!Z	recv_funcrJrKrLr)�fdrrMrrr�
_test_recv�s6
!


#zSocketEINTRTest._test_recvcCs|jtjj�dS)N)r`rZ�recv)r!rrr�	test_recv�szSocketEINTRTest.test_recv�recvmsgzneeds recvmsg()cCs|jdd��dS)NcSs|j|�dS)Nr)rc)�sockrMrrrr�sz.SocketEINTRTest.test_recvmsg.<locals>.<lambda>)r`)r!rrr�test_recvmsg�szSocketEINTRTest.test_recvmsgc
Cs{tj�\}}|j|j�dtjd}djddddt|j�dt|j	�d	|j
d
tjddddd
dddddddddddddf�}|j�}|j|t
|�d|g�}t|���|j�d}xW|t|�krY||t|�|d��}	||	dkrOt|�n|	7}qW|j|j�d�WdQRXdS)Nsxyzr+r?zimport os, socket, sys, timer@zfd = int(sys.argv[1])zfamily = %szsock_type = %szsleep_time = %rzdata = b"xyz" * %szdata_len = len(data)z)rd = socket.fromfd(fd, family, sock_type)zos.close(fd)zwith rd:z$    # let the parent block on send()z    time.sleep(sleep_time)z'    received_data = bytearray(data_len)z	    n = 0z    while n < data_len:z8        n += rd.recv_into(memoryview(received_data)[n:])zif received_data != data:z0    raise Exception("recv error: %s vs %s bytes"z5                    % (len(received_data), data_len))rAr)rZrWrCrDrZ
SOCK_MAX_SIZErEr[r\r]r&r^rrFrrIrQrGr0)
r!Z	send_funcrJrKrMr)r_rrR�sentrrr�
_test_send�sJ
!

&zSocketEINTRTest._test_sendcCs|jtjj�dS)N)rgrZ�send)r!rrr�	test_sendszSocketEINTRTest.test_sendcCs|jtjj�dS)N)rgrZ�sendall)r!rrr�test_sendallszSocketEINTRTest.test_sendall�sendmsgzneeds sendmsg()cCs|jdd��dS)NcSs|j|g�S)N)rl)rdrMrrrrsz.SocketEINTRTest.test_sendmsg.<locals>.<lambda>)rg)r!rrr�test_sendmsgszSocketEINTRTest.test_sendmsgcCs�tjtjtj�}|j|j�|jtjdf�|j�d}|j	�dj
dddtjd|d|jdd	d
ddf
�}|j|�}t
|��7|j�\}}|j�|j|j�d�WdQRXdS)
Nr�r?zimport socket, timer@z	host = %rz	port = %szsleep_time = %rz# let parent block on accept()ztime.sleep(sleep_time)z,with socket.create_connection((host, port)):z    time.sleep(sleep_time))rZ�AF_INET�SOCK_STREAMrCrD�bindrZHOST�getsockname�listenrEr&rr�acceptrGr0)r!rd�portr)rZclient_sockr-rrr�test_accepts*




zSocketEINTRTest.test_acceptr
r+�mkfifozneeds mkfifo()c
Cs�tj}tj|�tj|�|jtj|�djddd|d|jdddd|f	�}|j|�}t	|��%||�|j
|j�d�WdQRXdS)	Nr?zimport os, timer@z	path = %azsleep_time = %rz# let the parent blockztime.sleep(sleep_time)r)rZTESTFN�unlinkr5rwrCrEr&rrrGr0)r!Zdo_open_close_readerZdo_open_close_writer�filenamer)rrrr�
_test_open8s$	




zSocketEINTRTest._test_opencCst|d�}|j�dS)N�w)�openrD)r!�path�fprrr�python_openTszSocketEINTRTest.python_opencCs|jd|j�dS)Nzfp = open(path, 'r')
fp.close())rzr)r!rrr�	test_openXs	zSocketEINTRTest.test_open�darwinz"hangs under OS X; see issue #25234cCs&tj|tj�}tj|�dS)N)r5r|�O_WRONLYrD)r!r}r_rrr�os_open\szSocketEINTRTest.os_opencCs|jd|j�dS)Nz,fd = os.open(path, os.O_RDONLY)
os.close(fd))rzr�)r!rrr�test_os_openas	zSocketEINTRTest.test_os_openN)r#r$r%rTrUrrZr`rbrergrirkrmrvrZrequires_freebsd_versionr5rzrr��skipIfr�platformr�r�rrrrrV�s'$*.**'rVc@seZdZdd�ZdS)�
TimeEINTRTestcCsMtj�}tj|j�|j�tj�|}|j||j�dS)N)�time�	monotonic�sleepr&r�assertGreaterEqual)r!�t0�dtrrr�
test_sleepks

zTimeEINTRTest.test_sleepN)r#r$r%r�rrrrr�gsr��pthread_sigmaskzneed signal.pthread_sigmask()c@sjeZdZdd�Zejeed�d�dd��Zejeed�d�dd	��Z	d
S)�SignalEINTRTestc

Cstj}tj�}tj|dd��}|jtj||�djddtj�dt|�d|jdd	f�}tjtj	|g�}|jtjtj
|g�tj�}|j
|�}t|��||�tj�|}	WdQRX|j|j�d
�dS)NcWsdS)Nr)r
rrrrsz/SignalEINTRTest.check_sigwait.<locals>.<lambda>r?zimport os, timezpid = %szsignum = %szsleep_time = %rztime.sleep(sleep_time)zos.kill(pid, signum)r)r�SIGUSR1r5�getpidrCrEr[r&r��	SIG_BLOCK�SIG_UNBLOCKr�r�rrrGr0)
r!r1�signumr9Zold_handlerr)Zold_maskr�rr�rrr�
check_sigwait{s&	




zSignalEINTRTest.check_sigwait�sigwaitinfozneed signal.sigwaitinfo()cCsdd�}|j|�dS)NcSstj|g�dS)N)rr�)r�rrrr1�sz3SignalEINTRTest.test_sigwaitinfo.<locals>.wait_func)r�)r!r1rrr�test_sigwaitinfo�sz SignalEINTRTest.test_sigwaitinfo�sigtimedwaitcCsdd�}|j|�dS)NcSstj|gd�dS)Ng^@)rr�)r�rrrr1�sz4SignalEINTRTest.test_sigtimedwait.<locals>.wait_func)r�)r!r1rrr�test_sigtimedwait�sz!SignalEINTRTest.test_sigtimedwaitN)
r#r$r%r�rTrUrrr�r�rrrrr�ss
r�c@s�eZdZdd�Zejejdkd�eje	e
d�d�dd���Zeje	e
d	�d
�dd��Zeje	e
d
�d�dd��Z
eje	e
d�d�dd��ZdS)�SelectEINTRTestcCsVtj�}tjggg|j�tj�|}|j�|j||j�dS)N)r�r��selectr&rr�)r!r�r�rrr�test_select�s

zSelectEINTRTest.test_selectr�z(poll may fail on macOS; see issue #28087�pollzneed select.pollcCs]tj�}tj�}|j|jd�tj�|}|j�|j||j�dS)Ng@�@)r�r�r�r�r&rr�)r!�pollerr�r�rrr�	test_poll�s
zSelectEINTRTest.test_poll�epollzneed select.epollcCsitj�}|j|j�tj�}|j|j�tj�|}|j�|j	||j�dS)N)
r�r�rCrDr�r�r�r&rr�)r!r�r�r�rrr�
test_epoll�s
zSelectEINTRTest.test_epoll�kqueuezneed select.kqueuecCsotj�}|j|j�tj�}|jdd|j�tj�|}|j�|j	||j�dS)Nrn)
r�r�rCrDr�r�Zcontrolr&rr�)r!r�r�r�rrr�test_kqueue�s
zSelectEINTRTest.test_kqueue�devpollzneed select.devpollcCsmtj�}|j|j�tj�}|j|jd�tj�|}|j�|j	||j�dS)Ng@�@)
r�r�rCrDr�r�r�r&rr�)r!r�r�r�rrr�test_devpoll�s
zSelectEINTRTest.test_devpollN)r#r$r%r�rTr�rr�rUrr�r�r�r�r�rrrrr��s*
''r�cCstjttttt�dS)N)rZrun_unittestr(rVr�r�r�rrrr�	test_main�sr��__main__)�
contextlibrr5r�rrZrrr�rTZtestr�contextmanagerrrUrZTestCaser	r(rVr�r�r�r�r#rrrr�<module>s8%%%h%�%/%8