Your IP : 216.73.216.213


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

3

��2aF�@sxddlZddlZddlZddlZddlZddlZddlZddlZddlZddl	Z	ddl
Z
ddlmZej
dd��Ze
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��ZGdd�de�Zedk�rte
j�dS)�N)�supportccs6|�(y
|VWn|j��YnXWdQRXdS)N)�kill)�proc�r�1/opt/alt/python36/lib64/python3.6/eintr_tester.py�
kill_on_errors
r�	setitimerzrequires setitimer()c@sDeZdZdZdZdZdd�Zdd�Zedd��Z	d	d
�Z
dd�Zd
S)�
EINTRBaseTestg�������?g�������?cCs|jd7_dS)N�)�signals)�self�signum�framerrr�
sighandler0szEINTRBaseTest.sighandlercCsLd|_tjtj|j�|_tjtj|j|j�t	t
d�rHt
jddtj
d�dS)Nr�dump_traceback_later�
�<T)�exit�fileiX)r�signal�SIGALRMr�orig_handlerr�ITIMER_REAL�signal_delay�
signal_period�hasattr�faulthandlerr�sys�
__stderr__)rrrr�setUp3s
zEINTRBaseTest.setUpcCstjtjdd�dS)Nr)rrrrrrr�
stop_alarm?szEINTRBaseTest.stop_alarmcCs.|j�tjtj|j�ttd�r*tj�dS)N�cancel_dump_traceback_later)r rrrrrr!)rrrr�tearDownCs
zEINTRBaseTest.tearDowncOstjdf|}tj|f|�S)Nz-c)r�
executable�
subprocess�Popen)r�args�kwZcmd_argsrrrr$IszEINTRBaseTest.subprocessN)�__name__�
__module__�__qualname__rr�
sleep_timerr�staticmethodr r"r$rrrrr	$sr	c@sxeZdZdd�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_processRs
zOSEINTRTest.new_sleep_processcsLd}�fdd�t|�D�}xt|�D]
}|�q$Wx|D]}|j�q8WdS)N�csg|]}�j��qSr)r/)�.0�_)rrr�
<listcomp>Xsz3OSEINTRTest._test_wait_multiple.<locals>.<listcomp>)�range�wait)r�	wait_funcZnumZ	processesr2rr)rr�_test_wait_multipleVs

zOSEINTRTest._test_wait_multiplecCs|jtj�dS)N)r7�osr5)rrrr�	test_wait_szOSEINTRTest.test_wait�wait3zrequires wait3()cCs|jdd��dS)NcSs
tjd�S)Nr)r8r:rrrr�<lambda>dsz(OSEINTRTest.test_wait3.<locals>.<lambda>)r7)rrrr�
test_wait3bszOSEINTRTest.test_wait3cCs|j�}||j�|j�dS)N)r/�pidr5)rr6rrrr�_test_wait_singlefs
zOSEINTRTest._test_wait_singlecCs|jdd��dS)NcSstj|d�S)Nr)r8�waitpid)r=rrrr;msz*OSEINTRTest.test_waitpid.<locals>.<lambda>)r>)rrrr�test_waitpidlszOSEINTRTest.test_waitpid�wait4zrequires wait4()cCs|jdd��dS)NcSstj|d�S)Nr)r8rA)r=rrrr;qsz(OSEINTRTest.test_wait4.<locals>.<lambda>)r>)rrrr�
test_wait4oszOSEINTRTest.test_wait4cCs�tj�\}}|jtj|�dddg}djdddd|d	|jdd
ddd
f
�}|j|t|�|gd�}t|��Ftj|�x$|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)
r8�pipe�
addCleanup�close�joinr+r$�strr�assertEqual�read�lenr5)r�rd�wr�datasr.r�datarrr�	test_readss(



zOSEINTRTest.test_readcCs�tj�\}}|jtj|�dtj}djdddd|jdtjddd	d
dddd
ddddddf�}|j|t	|�|gd�}t
|��Rtj|�d}x,|t|�kr�|tj|t
|�|d��7}q�W|j|j�d�WdQRXdS)N�xrCzimport io, os, sys, timerDzrd = 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)))rEr)r8rFrGrHrZ
PIPE_MAX_SIZErIr+r$rJrrM�write�
memoryviewrKr5)rrNrOrQr.r�writtenrrr�
test_write�s<


 zOSEINTRTest.test_writeN)r(r)r*r/r7r9�unittest�
skipUnlessrr8r<r>r@rBrRrWrrrrr-Ns	r-c@s�eZdZejeed�d�dd��Zdd�Zejeejd�d�d	d
��Z	dd�Z
d
d�Zdd�Zejeejd�d�dd��Z
dd�Zejdd�ejeed�d�dd���Zdd�Zejejdkd �d!d"��Zd#d$�Zejejdkd �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|�|gd�}t|��B|j�x"|D]}|j
|||t|���q�W|j
|j�d�WdQRXdS)NrS�y�zrCzimport os, socket, sys, timerDzfd = 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))rEr)�socketr[rGrHrI�int�family�typer+�filenor$rJrrKrMr5)	rZ	recv_funcrNrOrPr.�fdrrQrrr�
_test_recv�s6


zSocketEINTRTest._test_recvcCs|jtjj�dS)N)rdr^Zrecv)rrrr�	test_recv�szSocketEINTRTest.test_recv�recvmsgzneeds recvmsg()cCs|jdd��dS)NcSs|j|�dS)Nr)rf)�sockrQrrrr;�sz.SocketEINTRTest.test_recvmsg.<locals>.<lambda>)rd)rrrr�test_recvmsg�szSocketEINTRTest.test_recvmsgc
Cstj�\}}|j|j�dtjd}djddddt|j�dt|j	�d	|j
d
tjddddd
dddddddddddddf�}|j�}|j|t
|�|gd�}t|��b|j�d}x>|t|�kr�||t|�|d��}	||	dkr�t|�n|	7}q�W|j|j�d�WdQRXdS)Nsxyzr0rCzimport os, socket, sys, timerDzfd = 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)))rEr)r^r[rGrHrZ
SOCK_MAX_SIZErIr_r`rar+rbr$rJrrMrUrKr5)
rZ	send_funcrNrOrQr.rcrrVZsentrrr�
_test_send�sJ
zSocketEINTRTest._test_sendcCs|jtjj�dS)N)rir^�send)rrrr�	test_sendszSocketEINTRTest.test_sendcCs|jtjj�dS)N)rir^Zsendall)rrrr�test_sendallszSocketEINTRTest.test_sendall�sendmsgzneeds sendmsg()cCs|jdd��dS)NcSs|j|g�S)N)rm)rgrQrrrr;sz.SocketEINTRTest.test_sendmsg.<locals>.<lambda>)ri)rrrr�test_sendmsgszSocketEINTRTest.test_sendmsgcCs�tjtjtj�}|j|j�|jtjdf�|j�d}|j	�dj
dddtjd|d|jdd	d
ddf
�}|j|�}t
|��*|j�\}}|j�|j|j�d�WdQRXdS)
Nrr
rCzimport socket, timerDz	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))r^ZAF_INETZSOCK_STREAMrGrHZbindrZHOSTZgetsocknameZlistenrIr+r$rZacceptrKr5)rrgZportr.rZclient_sockr2rrr�test_accepts*

zSocketEINTRTest.test_acceptrr0�mkfifozneeds mkfifo()cCs�tj}tj|�ytj|�Wn0tk
rN}z|jd|�WYdd}~XnX|jtj|�djddd|d|j	dddd|f	�}|j
|�}t|��||�|j|j
�d	�WdQRXdS)
Nzos.mkfifo(): %srCzimport os, timerDz	path = %azsleep_time = %rz# let the parent blockztime.sleep(sleep_time)r)r�TESTFN�unlinkr8rp�PermissionErrorZskipTestrGrIr+r$rrKr5)rZdo_open_close_readerZdo_open_close_writer�filename�er.rrrr�
_test_open=s*
 

zSocketEINTRTest._test_opencCst|d�}|j�dS)N�w)�openrH)r�path�fprrr�python_open\s
zSocketEINTRTest.python_open�darwinz+hangs under macOS; see bpo-25234, bpo-35363cCs|jd|j�dS)Nzfp = open(path, 'r')
fp.close())rvr{)rrrr�	test_open`szSocketEINTRTest.test_opencCstj|tj�}tj|�dS)N)r8rx�O_WRONLYrH)rryrcrrr�os_openfszSocketEINTRTest.os_opencCs|jd|j�dS)Nz,fd = os.open(path, os.O_RDONLY)
os.close(fd))rvr)rrrr�test_os_openjszSocketEINTRTest.test_os_openN)r(r)r*rXrYrr^rdrerhrirkrlrnrorZrequires_freebsd_versionr8rvr{�skipIfr�platformr}rr�rrrrrZ�s $.
rZc@seZdZdd�ZdS)�
TimeEINTRTestcCs:tj�}tj|j�|j�tj�|}|j||j�dS)N)�time�	monotonic�sleepr+r �assertGreaterEqual)r�t0�dtrrr�
test_sleepus
zTimeEINTRTest.test_sleepN)r(r)r*r�rrrrr�qsr��pthread_sigmaskzneed signal.pthread_sigmask()c@sHeZdZdd�Zejeed�d�dd��Zejeed�d�dd	��Z	d
S)�SignalEINTRTestc

Cs�tj}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&rrrr;�sz/SignalEINTRTest.check_sigwait.<locals>.<lambda>rCzimport os, timezpid = %szsignum = %szsleep_time = %rztime.sleep(sleep_time)zos.kill(pid, signum)r)r�SIGUSR1r8�getpidrGrIr_r+r��	SIG_BLOCK�SIG_UNBLOCKr�r�r$rrKr5)
rr6r
r=Zold_handlerr.Zold_maskr�rr�rrr�
check_sigwait�s&



zSignalEINTRTest.check_sigwait�sigwaitinfozneed signal.sigwaitinfo()cCsdd�}|j|�dS)NcSstj|g�dS)N)rr�)r
rrrr6�sz3SignalEINTRTest.test_sigwaitinfo.<locals>.wait_func)r�)rr6rrr�test_sigwaitinfo�sz SignalEINTRTest.test_sigwaitinfo�sigtimedwaitcCsdd�}|j|�dS)NcSstj|gd�dS)Ng^@)rr�)r
rrrr6�sz4SignalEINTRTest.test_sigtimedwait.<locals>.wait_func)r�)rr6rrr�test_sigtimedwait�sz!SignalEINTRTest.test_sigtimedwaitN)
r(r)r*r�rXrYrrr�r�rrrrr�}s
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)�SelectEINTRTestcCs@tj�}tjggg|j�tj�|}|j�|j||j�dS)N)r�r��selectr+r r�)rr�r�rrr�test_select�s
zSelectEINTRTest.test_selectr|z(poll may fail on macOS; see issue #28087�pollzneed select.pollcCsFtj�}tj�}|j|jd�tj�|}|j�|j||j�dS)Ng@�@)r�r�r�r�r+r r�)r�pollerr�r�rrr�	test_poll�szSelectEINTRTest.test_poll�epollzneed select.epollcCsNtj�}|j|j�tj�}|j|j�tj�|}|j�|j	||j�dS)N)
r�r�rGrHr�r�r�r+r r�)rr�r�r�rrr�
test_epoll�szSelectEINTRTest.test_epoll�kqueuezneed select.kqueuecCsRtj�}|j|j�tj�}|jdd|j�tj�|}|j�|j	||j�dS)Nr
)
r�r�rGrHr�r�Zcontrolr+r r�)rr�r�r�rrr�test_kqueue�szSelectEINTRTest.test_kqueue�devpollzneed select.devpollcCsRtj�}|j|j�tj�}|j|jd�tj�|}|j�|j	||j�dS)Ng@�@)
r�r�rGrHr�r�r�r+r r�)rr�r�r�rrr�test_devpoll�szSelectEINTRTest.test_devpollN)r(r)r*r�rXr�rr�rYrr�r�r�r�r�rrrrr��s
r�c@s$eZdZdd�Zdd�Zdd�ZdS)�
FNTLEINTRTestcCs|jtjtj�djddtjd|d|jf�}tj�}|j|�}t	|���t
tjd���}xhtj�|}|dkr~td|��y,||tj
tjB�||tj�tjd	�Wq^tk
r�PYq^Xq^W||tj
�tj�|}|j||j�|j�WdQRX|j�WdQRXdS)
NrCzimport fcntl, timezwith open('%s', 'wb') as f:z   fcntl.%s(f, fcntl.LOCK_EX)z   time.sleep(%s)�wbgN@z failed to sync child in %.1f secg{�G�z�?)rGrrrrqrIr+r�r�r$rrx�	Exception�fcntlZLOCK_EXZLOCK_NBZLOCK_UNr��BlockingIOErrorr�r r5)rZ	lock_funcZ	lock_namer.Z
start_timer�fr�rrr�_lock�s2

zFNTLEINTRTest._lockcCs|jtjd�dS)N�lockf)r�r�r�)rrrr�
test_lockf	szFNTLEINTRTest.test_lockfcCs|jtjd�dS)N�flock)r�r�r�)rrrr�
test_flockszFNTLEINTRTest.test_flockN)r(r)r*r�r�r�rrrrr��sr��__main__)�
contextlibrr�r8r�rr^r$rr�rXZtestr�contextmanagerrrYrZTestCaser	r-rZr�r�r�r�r(�mainrrrr�<module>s<
)h:
/8&