python (3.12.0)

(root)/
lib/
python3.12/
test/
__pycache__/
_test_eintr.cpython-312.opt-2.pyc

͑eF 	ddlZddlZddlZddlZddlZddlZddlZddlZddlZddl	Z	ddl
Z
ddlZddlm
Z
ddlmZddlmZej"dZej&eeddGdd	ej*Zej&eeddGd
deZej&eeddGdd
eZej&eeddGddeZej&eeddej&eeddGddeZej&eeddGddeZGddeZedk(rej<yy)N)support)	os_helper)
socket_helperc#tK	|5	|	dddy#|jxYw#1swYyxYwwN)kill)procs D/BuggyBox/python/3.12.0/bootstrap/lib/python3.12/test/_test_eintr.py
kill_on_errorrsBQ	
	J	IIKs 8,	8),58	setitimerzrequires setitimer()cBeZdZ	dZdZdZdZdZedZ	dZ
dZy)	
EINTRBaseTestg?g?c.|xjdz
c_yN)signals)selfsignumframes   r

sighandlerzEINTRBaseTest.sighandler3sc6d|_tjtj|j|_tj
tj|j|jtjddtjy)NriXT)exitfile)
rsignalSIGALRMrorig_handlerrITIMER_REALsignal_delay
signal_periodfaulthandlerdump_traceback_latersys
__stderr__rs r
setUpzEINTRBaseTest.setUp6sf"MM&..$//J++T->->++	-
	))'/2~~	?rcNtjtjddyNr)rrrrr

stop_alarmzEINTRBaseTest.stop_alarmAs++Q2rc|jtjtj|jt	j
yr)r*rrrr!cancel_dump_traceback_laterr%s r
tearDownzEINTRBaseTest.tearDownEs0

fnnd&7&78002rcXtjdf|z}tj|fi|S)Nz-c)r#
executable
subprocessPopen)rargskwcmd_argss    r
r0zEINTRBaseTest.subprocessJs+NND)D0/B//rN)__name__
__module____qualname__rr 
sleep_timerr&staticmethodr*r-r0r)rr
rr's@'LMJ	?333
0rrceZdZ	dZdZdZejee	dddZ
dZdZejee	d	d
dZ
dZd
Zy)OSEINTRTestcBd|jz}|j|S)Nzimport time; time.sleep(%r))r8r0)rcodes  r
new_sleep_processzOSEINTRTest.new_sleep_processSs,t>t$$rcd}t|Dcgc]}|j}}t|D]	}||D]}|jycc}w)N)ranger>wait)r	wait_funcnum_	processesr	s      r
_test_wait_multiplezOSEINTRTest._test_wait_multipleWs_7<SzB!T++-B	Bs	AK		DIIK		CsAcB|jtjyr)rGosrBr%s r
	test_waitzOSEINTRTest.test_wait`s  )rwait3zrequires wait3()c(|jdy)Nc,tjdSr()rIrKr)rr
<lambda>z(OSEINTRTest.test_wait3.<locals>.<lambda>es!r)rGr%s r

test_wait3zOSEINTRTest.test_wait3cs  !45rch|j}||j|jyr)r>pidrB)rrCr	s   r
_test_wait_singlezOSEINTRTest._test_wait_singlegs%%%'$((		rc(|jdy)Nc.tj|dSr()rIwaitpidrQs r
rNz*OSEINTRTest.test_waitpid.<locals>.<lambda>ns2::c1+=rrRr%s r
test_waitpidzOSEINTRTest.test_waitpidms=>rwait4zrequires wait4()c(|jdy)Nc.tj|dSr()rIrYrVs r
rNz(OSEINTRTest.test_wait4.<locals>.<lambda>rs288C+;rrWr%s r

test_wait4zOSEINTRTest.test_wait4ps;<rc"tj\}}|jtj|gd}dj	dddd|zd|j
zddd	d
df
}|j
|t||g}t|5tj||D]1}|j|tj|t|3|j|jd
dddy#1swYyxYw)N)shellosworldsspam
zimport os, sys, timezwr = int(sys.argv[1])
datas = %rsleep_time = %rzfor data in datas:z$    # let the parent block on read()    time.sleep(sleep_time)z    os.write(wr, data)pass_fdsr)
rIpipe
addCleanupclosejoinr8r0strrassertEqualreadlenrB)rrdwrdatasr=r	datas       r
	test_readzOSEINTRTest.test_readtsB"%
.yy"#5 / 2($
tSWt<
4
 	-HHRL
?  rwwr3t9'=>
?TYY[!,		-	-	-s
A,DDctj\}}|jtj|dtj
z}dj
dddd|jzdtj
zddd	d
dddd
ddddddf}|j|t||g}t|5tj|d}|t|kr4|tj|t||dz
}|t|kr4|j|jddddy#1swYyxYw)Nxr^zimport io, os, sys, timer_zrd = int(sys.argv[1])razdata = b"x" * %sdata_len = len(data)z!# let the parent block on write()time.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))rcr)rIrerfrgr
PIPE_MAX_SIZErhr8r0rirrlwrite
memoryviewrjrB)rrmrnrpr=r	writtens       r

test_writezOSEINTRTest.test_writes/B"%g+++yy&#/!6!66"/$&93(*>;'
,tSWt<
4
 	-HHRLGCI%288B
4(8(BCCCI%TYY[!,	-	-	-s6AD9 D99EN)r5r6r7r>rGrJunittest
skipUnlesshasattrrIrOrRrXr\rqrzr)rr
r;r;Os*%*XW-/AB6C6?XW-/AB=C=-:$-rr;c$eZdZ	ejeedddZdZejeejdddZ	dZ
d	Zd
Zejeejddd
Z
dZej ddejeedddZdZej(ej,dk(ddZdZej(ej,dk(ddZy)SocketEINTRTest
socketpairzneeds socketpair()cxtj\}}|j|jgd}dj	ddddt|jzdt|jzd|zd	|jzdd
dddd
dddf}|j}|j|t||g}t|5|j|D]$}|j|||t|&|j|jddddy#1swYyxYw)N)rsyzr^import os, socket, sys, timer_fd = int(sys.argv[1])family = %ssock_type = %sr`raz)wr = socket.fromfd(fd, family, sock_type)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)rcr)socketrrfrgrhintfamilytyper8filenor0rirrjrlrB)	r	recv_funcrmrnror=fdr	rps	         r

_test_recvzSocketEINTRTest._test_recvs%""$B!#yy*#C		N*s277|+5 /7$6,&!
&YY[tSWt<
4
 	-HHJ
A  ySY'?@
ATYY[!,		-	-	-s

AD00D9cV|jtjjyr)rrrecvr%s r
	test_recvzSocketEINTRTest.test_recv

**+rrecvmsgzneeds recvmsg()c(|jdy)Nc*|j|dSr()rsockrps  r
rNz.SocketEINTRTest.test_recvmsg.<locals>.<lambda>s4<<+=a+@r)rr%s r
test_recvmsgzSocketEINTRTest.test_recvmsgs@Arctj\}}|j|jdtj
dzz}dj
ddddt|jzdt|jzd	|jzd
tj
dzzdddd
dddddddddddddf}|j}|j|t||g}t|5|jd}|t|kr6||t!||d}	||	t|n|	z
}|t|kr6|j#|j%ddddy#1swYyxYw)Nsxyzr@r^rr_rrrrazdata = b"xyz" * %srtz)rd = socket.fromfd(fd, family, sock_type)rzwith rd:z$    # let the parent block on send()rbz'    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))rcr)rrrfrgr
SOCK_MAX_SIZErhrrrr8rr0rirrlrxrjrB)
r	send_funcrmrnrpr=rr	rysents
          r

_test_sendzSocketEINTRTest._test_sendsy""$B!..!34yy*#C		N*s277|+/ G$9$9Q$>?"72(5%F'>C1
6YY[tSWt<
4
 	-HHJGCI% Z%5gh%?@3t9$>CI%
TYY[!,	-	-	-s8AE8 E88FcV|jtjjyr)rrsendr%s r
	test_sendzSocketEINTRTest.test_sendrrcV|jtjjyr)rrsendallr%s r
test_sendallzSocketEINTRTest.test_sendalls

--.rsendmsgzneeds sendmsg()c(|jdy)Nc&|j|gSr)rrs  r
rNz.SocketEINTRTest.test_sendmsg.<locals>.<lambda>s4<<+?r)rr%s r
test_sendmsgzSocketEINTRTest.test_sendmsgs?@rc
tjtjdf}|j	|j
|j
d}djdddtjzd|zd|jzdd	d
ddf
}|j|}t|5|j\}}|j|j|jddddy#1swYyxYw)
Nrrr^zimport socket, timer_z	host = %rz	port = %sraz# let parent block on accept()ruz,with socket.create_connection((host, port)):rb)r
create_serverrHOSTrfrggetsocknamerhr8r0racceptrjrB)rrportr=r	client_sockrEs       r
test_acceptzSocketEINTRTest.test_accepts##]%7%7$;<

#!!$yy!-,,,$/,$:(
t$
4
 	-![[]NKTYY[!,	-	-	-s
,AC99D
r@mkfifozneeds mkfifo()ctj}tj|	tj||jtj|djddd|zd|jzdddd|f	}|j|}t|5|||j|jd	dddy#t
$r}|j
d|zYd}~d}~wwxYw#1swYyxYw)
Nzos.mkfifo(): %sr^import os, timer_z	path = %araz# let the parent blockrur)rTESTFNunlinkrIrPermissionErrorskipTestrfrhr8r0rrjrB)rdo_open_close_readerdo_open_close_writerfilenameer=r	s       r

_test_openzSocketEINTRTest._test_open;s##	"	1IIh	
	(((3yy("/$$ 


t$
4
 	- *TYY[!,	-	-#	1MM+a/00	1"	-	-s#C")C>	C;C66C;>Dc<t|d}|jy)Nw)openrg)rpathfps   r
python_openzSocketEINTRTest.python_openZs
$_

rdarwinz+hangs under macOS; see bpo-25234, bpo-35363c<|jd|jy)Nzfp = open(path, 'r')
fp.close())rrr%s r
	test_openzSocketEINTRTest.test_open^s	
:((	*rcvtj|tj}tj|yr)rIrO_WRONLYrg)rrrs   r
os_openzSocketEINTRTest.os_opends!
WWT2;;
'
rc<|jd|jy)Nz,fd = os.open(path, os.O_RDONLY)
os.close(fd))rrr%s r
test_os_openzSocketEINTRTest.test_os_openhs	
G	&rN)r5r6r7r{r|r}rrrrrrrrrrrequires_freebsd_versionrIrrskipIfr#platformrrrr)rr
rrsY.X68LM!-N!-F,X	:<MNBOB,-\,/X	:<MNAOA-8&W%%b!,XX.0@A-B--:X__S\\X-BD*D*X__S\\X-BD&D&rrceZdZ	dZy)
TimeEINTRTestctj}tj|j|j	tj|z
}|j||jyr)time	monotonicsleepr8r*assertGreaterEqualrt0dts   r

test_sleepzTimeEINTRTest.test_sleepssM
^^


4??#
^^

"DOO4rN)r5r6r7rr)rr
rros
,5rrpthread_sigmaskzneed signal.pthread_sigmask()ceZdZ	dZej
eedddZej
eedddZ	y)SignalEINTRTestctj}tj}tj|d}|j	tj||djddtjzdt
|zd|jzddf}tjtj|g}|j	tjtj|g|j|}t|5||ddd|j|jd	y#1swY*xYw)
Ncyrr))r2s r
rNz/SignalEINTRTest.check_sigwait.<locals>.<lambda>srr^rzpid = %szsignum = %sraruzos.kill(pid, signum)r)rSIGUSR1rIgetpidrfrhrr8r	SIG_BLOCKSIG_UNBLOCKr0rrjrB)rrCrrQold_handlerr=old_maskr	s        r

check_sigwaitzSignalEINTRTest.check_sigwaitsiikmmF,>?

v{;yy$CK'/$"

))&*:*:VHE..0B0BVHMt$
4
 	f		
a(		s	EEsigwaitinfozneed signal.sigwaitinfo()c,d}|j|y)Nc0tj|gyr)rrrs r
rCz3SignalEINTRTest.test_sigwaitinfo.<locals>.wait_funcsx(rrrrCs  r
test_sigwaitinfoz SignalEINTRTest.test_sigwaitinfos	)	
9%rsigtimedwaitc,d}|j|y)Nc2tj|gdy)Ng^@)rrrs r
rCz4SignalEINTRTest.test_sigtimedwait.<locals>.wait_funcs%0rrrs  r
test_sigtimedwaitz!SignalEINTRTest.test_sigtimedwaits	1	
9%rN)
r5r6r7rr{r|r}rrrr)rr
rr{sf/)2X746&6&X846&6&rrcZeZdZ	dZej
ejdk(deje	e
dddZeje	e
ddd	Zeje	e
d
ddZ
eje	e
d
ddZy)SelectEINTRTestctj}tjggg|jtj|z
}|j	|j||jyr)rrselectr8r*rrs   r
test_selectzSelectEINTRTest.test_selectsS
^^


b"b$//2
^^

"DOO4rrz(poll may fail on macOS; see issue #28087pollzneed select.pollctj}tj}|j|jdztj|z
}|j|j
||jyNg@@)rrrrr8r*rrpollerrrs    r
	test_pollzSelectEINTRTest.test_polls_
^^
DOOc)*
^^

"DOO4repollzneed select.epollcFtj}|j|jt	j
}|j
|jt	j
|z
}|j|j||jyr)
rrrfrgrrrr8r*rrs    r

test_epollzSelectEINTRTest.test_epollsh%
^^
DOO$
^^

"DOO4rkqueuezneed select.kqueuecJtj}|j|jt	j
}|j
dd|jt	j
|z
}|j|j||jyr)
rrrfrgrrcontrolr8r*r)rrrrs    r
test_kqueuezSelectEINTRTest.test_kqueuesl%
^^
tQ0
^^

"DOO4rdevpollzneed select.devpollcLtj}|j|jt	j
}|j
|jdzt	j
|z
}|j|j||jyr)
rrrfrgrrrr8r*rrs    r
test_devpollzSelectEINTRTest.test_devpollsn!%
^^
DOOc)*
^^

"DOO4rN)r5r6r7rr{rr#rr|r}rrrrrr)rr
rrs.5X__S\\X-?AX02DE5FA5X13FG5H5X24HI5J5X35JK5L5rrcneZdZdZej
ejdk(ddZdZ	y)
FNTLEINTRTestc|jtjtjdj	ddtjzd|zd|j
zf}t
j}|j|}t|5ttjd5}t
j}tjtjdD]B}	||tjtj z||tj"Dt
j|z
}t'd	|z#t$$rYnwxYw||tjt
j|z
}|j)||j
|j+dddn#1swYnxYw|j-dddy#1swYyxYw)
Nr^zimport fcntl, timezwith open('%s', 'wb') as f:z   fcntl.%s(f, fcntl.LOCK_EX)z   time.sleep(%s)wbF)errorz failed to sync child in %.1f sec)rfrrrrhr8rrr0rrrsleeping_retryLONG_TIMEOUTfcntlLOCK_EXLOCK_NBLOCK_UNBlockingIOError	Exceptionrr*rB)	r	lock_func	lock_namer=
start_timer	frErs	         r
_lockzFNTLEINTRTest._locks	(()*:*:;yy )I,<,<<+i7$//1	34
^^%
t$
4
 	i&&-
"!^^-
 //0D0DERMA!!U]]U]]%BC!!U]]3M)J6B#$F$KLL	+!U]]+^^%
2''DOO<!'
"
"
"(
IIK+			sIG,0=G.?E-'G	E!	G E!	!AG>	G,G	G,,G5AIXzAIX returns PermissionErrorcD|jtjdy)Nlockf)rrrr%s r

test_lockfzFNTLEINTRTest.test_lockf	s

5;;(rcD|jtjdy)Nflock)rrrr%s r

test_flockzFNTLEINTRTest.test_flock
s

5;;(rN)
r5r6r7rr{rrsystemrrr)rr
rrs>DX___X__&%/1NO)P))rr__main__)
contextlibr!rrIrrrrr0r#rr{testrtest.supportrrcontextmanagerrr|r}TestCaserr;rrrrrr5mainr)rr
<module>r(s	



"&WV[13IJ$0H%%$0K$0NWV[13IJe--e-Ke-PWV[13IJs&ms&Ks&lWV[13IJ5M5K5WV[13IJWV%6746*&m*&6K
*&ZWV[13IJ55m55K55p()M()VzHMMOr