python (3.12.0)

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

ΑeB%ddlZddlmZddlmZddlmZddlmZddlZddl	Z	ddl
Z
ddlZddlZddl
Z
ddlZddlZddlZddlZddlZddlZddlZddlZddlZddlZddlZddlZddlZddlZddlZddlZddlZddlZddl m!Z!	ddl"Z"	ddl$Z$ejJd	ejLZ&d
jOdZ(dZ)ejTd
k(Z+	ddl,Z,dZ-dZ.dZ/dZ0dZ1dZ2dZ3dZ4dZ5dZ6e
jndZ8e.Z9e/Z:e0Z;e1Z<e2Z=e3Z>e4Z?e@edZAe5ZBe6ZCe	jdjZEGddejZGGddejZHGdd eHZIGd!d"ZJGd#d$ejZKGd%d&ejZLGd'd(ZMGd)d*eGeMZNGd+d,eHeMZOejeAd-Gd.d/eIeMZQGd0d1eKeMZRGd2d3eLeMZSeje$dud4eje?d5eje-d6k7d7Gd8d9ejeMZUGd:d;eNZVGd<d=ejeMZWGd>d?ejZXGd@dAeXZYGdBdCeJeXeMZZGdDdEeYeZZ[GdFdGeXZ\GdHdIe\Z]GdJdKeXZ^GdLdMe^Z_GdNdOe^Z`GdPdQe^ZaGdRdSe^ZbGdTdUe^ZcGdVdWecZdGdXdYecZedZZfd[Zgd\ZhGd]d^ejZieje9d_Gd`daejZjeje9d_GdbdceRZkeje:ddGdedfejZleje;dgGdhdiejZmeje<djGdkdlejZneje<djGdmdneSZoeje>doGdpdqejZpeje$dud4eje?d5GdrdsejZqejeBdtGdudvejZrejeCdwGdxdyejZsGdzd{eVZtGd|d}eOZuejeAd-Gd~deQZvGddeJZwGddewZxGddewZyGddewZzGddewZ{GddewZ|GddewZ}Gdde}Z~Gdde~ZGdde~ZGddewZGddeZGddeZGddexeZGddejZGdde}ZGdde}ZGddeye{eZe`Zegej0dGddeeZegej0dGddeeZegej0dGddeeZGddeye{eZedZegej0dejejdehddGddeeZegej0dejejdehddGddeeZegej0dejejdehddGddeeZegej0dejejdegedehddGddeeZegej0dejejdegedehddGddexeeZejeAd-Gddeye{eZeaZejeAd-egej0dGddeeZejeAd-egej0dGddeeZejeAd-egej0dGdÄdeeZejeAd-Gdńdeye{eZeeZegej0dejejdejeAd-ehddGdDŽdeeZegej0dejejdejeAd-ehddGdɄdeeZegej0dejejdejeAd-ehddGd˄deeZegej0dejejdejeAd-egedehddGd̈́deeZegej0dejejdejeAd-egedehddGdτdexeeZGdфde|e[e_Zegej0dGdӄdeeZegej0dGdՄdeeeZegej0dGdׄdeeeZGdلdeze|e[ebZegej0deje+d۫ehdddޫGd߄deeZegej0deje+d۫ehdddޫGddeeeZegej0deje+d۫ehdddޫGddeeeZGdde|e[e]Zegej0degedGddeeZegej0degedGddeeeZegej0degedGddeeeZegej0ddegedddGddeeZegej0ddegedddGddexeeZGddZegedeje@edxs	e@eddGddee`Zegedeje@edxs	e@eddGddeeJeYe_ZGddeNZGddeWZGddeNZGddeVZGddeZGdd	eZGd
deZGdd
eZGddeZGddeZGddeZGddeetZGddejZGddeGeMZGddeGeMZGddeGZGddeHZejeAd-Gd d!eIZGd"d#ejZejej$d$k(d%Gd&d'ejZeje@edd(Gd)d*ejZGd+d,eVZĐd-ZŐd.ZƐd/Zǐd0Zejeȫd1Gd2d3ejZejeȫd1Gd4d5ejeMZGd6d7eNZGd8d9ejZeje@ed:d;Gd<d=ejZejejd>k(d?eje"d@GdAdBeGZGdCdDeNZeje@edEdFGdGdHeЫZeje=dIGdJdKejZejej$dLk(dMGdNdOejZejej$jdPdQGdRdSejZGdTdUejZGdVdWejZegedXegedYegedGdZd[ejZؐd\Zeڐd]k(rejyy#e#$rdZ"YwxYw#e#$rdZ$YwxYw#e#$rdZ,YwxYw(^N)support)	os_helper)
socket_helper)threading_helper)proxyFT)moduleuMichael Gilfix was hereሴ
utf-8AIXctyttdsy	tdd5}tj|tj
d}dddt
jddS#1swY"xYw#t$rYywxYw)NIOCTL_VM_SOCKETS_GET_LOCAL_CIDz
/dev/vsockrbz    Ir)	fcntlhasattrsocketopenioctlr
structunpackOSError)frs  D/BuggyBox/python/3.12.0/bootstrap/lib/python3.12/test/test_socket.pyget_cidr7s}6;<(
,
%	NAvDDfMA	N
}}S!$Q''	N	Ns(A9&A-A9-A62A99	BBc		tjtjtjtj}|j	y#t
tf$rYywxYwNFT)rPF_CANSOCK_RAWCAN_RAWcloseAttributeErrorrss r_have_socket_canr%DsO?MM&--&..I	
		
G$AAA'&A'c		tjtjtjtj}|j	y#t
tf$rYywxYwr)rr
SOCK_DGRAM	CAN_ISOTPr!r"rr#s r_have_socket_can_isotpr*NSEMM&--):):F<L<LM	
		
G$r&c		tjtjtjtj}|j	y#t
tf$rYywxYwr)rrr(	CAN_J1939r!r"rr#s r_have_socket_can_j1939r.Xr+r&c		tjtjtjd}|jy#tt
f$rYywxYwNrFT)rPF_RDSSOCK_SEQPACKETr!r"rr#s r_have_socket_rdsr3bsM?MM&--)>)>B	
		
G$3AAAc		tjtjtjd}|jy#tt
f$rYywxYwr0)rAF_ALGr2r!r"rr#s r_have_socket_algr7lsMBMM&--)>)>B	
		
G$r4c		tjtjtjd}|jy#tt
f$rYywxYwr0)r
AF_QIPCRTRr(r!r"rr#s r_have_socket_qipcrtrr:vsOFMM&++V->->B	
		
G$r4c 	tdu}|SN)r)rets r_have_socket_vsockr>sD
)4
CJc		tjtjtjtj}|j	y#t
tf$rYywxYwr)rAF_BLUETOOTHSOCK_STREAMBTPROTO_RFCOMMr!r"rr#s r_have_socket_bluetoothrDsWH
MM&--v/A/A6CXCXY	
		
G$r&c		tjtjtjtj}|j	y#t
tf$rYywxYwr)r	AF_HYPERVrBHV_PROTOCOL_RAWr!r"rr#s r_have_socket_hypervrHsUEMM&**F,>,>@V@VW	
		
G$r&c#Ktj}	tj|dtj|y#tj|wxYwwr<)rgetdefaulttimeoutsetdefaulttimeout)timeoutold_timeouts  rsocket_setdefaulttimeoutrNsF**,K.  )
  -  -sA!AA!AA!IPPROTO_UDPLITEiceZdZdZdZy)
SocketTCPTestctjtjtj|_t	j
|j|_|jjyr<)rAF_INETrBservr	bind_portportlistenselfs rsetUpzSocketTCPTest.setUpsDMM&..&2D2DE	!++DII6			r?cF|jjd|_yr<rUr!rYs rtearDownzSocketTCPTest.tearDown			r?N__name__
__module____qualname__r[r^r?rrRrRs
r?rRceZdZdZdZy)
SocketUDPTestctjtjtj|_t	j
|j|_yr<)rrTr(rUrrVrWrYs rr[zSocketUDPTest.setUps4MM&..&2C2CD	!++DII6	r?cF|jjd|_yr<r]rYs rr^zSocketUDPTest.tearDownr_r?Nr`rdr?rrfrfs7r?rfceZdZdZy)SocketUDPLITETestctjtjtjtj|_tj|j|_yr<)rrTr(rOrUrrVrWrYs rr[zSocketUDPLITETest.setUps<MM&..&2C2CVE[E[\	!++DII6	r?N)rarbrcr[rdr?rrjrjs7r?rjc4eZdZ	fdZfdZfdZxZS)ThreadSafeCleanupTestCasecVt||i|tj|_yr<)super__init__	threadingRLock
_cleanup_lockrZargskwargs	__class__s   rrpz"ThreadSafeCleanupTestCase.__init__s$
$)&)&__.r?cf|j5t||i|cdddS#1swYyxYwr<)rsro
addCleanuprts   rryz$ThreadSafeCleanupTestCase.addCleanup3


	77%t6v6	7	7	7'0cf|j5t||i|cdddS#1swYyxYwr<)rsro
doCleanupsrts   rr}z$ThreadSafeCleanupTestCase.doCleanupsrzr{)rarbrcrpryr}
__classcell__rws@rrmrms/777r?rmceZdZ	dZdZ	dZejeZ	dZ	e	deje	dzzz
Z	dZ
y)	
SocketCANTestvcan0z=IB3x8sz@3I4l2Ixctjtjtjtj|_|j|jj	|jj|jfy#t$r!|jd|jzYywxYwN%network interface `%s` does not exist)rrrr r$ryr!bind	interfacerskipTestrYs rr[zSocketCANTest.setUps|v}}foov~~N%	+FFKK)*	+MMA>>*
+	+s-&B'B>=B>N)rarbrcrbufsize
can_frame_fmtrcalcsizecan_frame_sizebcm_cmd_msg_fmtr[rdr?rrrs_IGM$V__]3N  Osofooo>BCCO+r?rceZdZ	dZdZy)
SocketRDSTest cHtjtjtjd|_|j	|jj
	t
j|j|_y#t$r|jdYywxYw)Nrzunable to bind RDS socket)rr1r2rUryr!rrVrWrrrYs rr[zSocketRDSTest.setUp'skMM&--1F1FJ			(	7%//		:DI	7MM56	7s$BB! B!N)rarbrcrr[rdr?rrr sG7r?rc2eZdZ	dZdZdZdZdZdZy)ThreadableTestcH|j|_|j|_yr<)r[_ThreadableTest__setUp_setUprYs rrpzThreadableTest.__init__Vszz[[
r?c:	|jjyr<)server_readysetrYs rserverExplicitReadyz"ThreadableTest.serverExplicitReady[s	F	
r?c:jtjtj_tj_tj_tjd_d_
fd}j|j}|jd}||dzd}td|z}tj j"|f_	j'	j
j)jj+jjj*y#d_
xYw#j
j)wxYw)NFcnjjrjjyr<)queueqsizegetrYsrraise_queued_exceptionz5ThreadableTest._setUp.<locals>.raise_queued_exceptionks)zz!jjnn&&"r?._T)enterContextrwait_threads_exitrqEventrclient_readydonerQueueserver_crashedryidrfindgetattrthreadstart_new_thread	clientRun
client_threadrrwait)rZr
methodnamerPtest_methods`    rrzThreadableTest._setUpbs;*<<>?%OO-%OO-OO%	[[^
#	'	
./WWY
S!!%
dC*$45#44NN[N,	$LLN

!!# 		'
	"&D!!#sE11
E;;E>>Fc|jj	|j	|jj|jr|j
yt|dstd	||j
y#t$rO}|jj||j
Yd}~|jjyd}~wwxYw#|jjwxYw#t$r%}|jj|Yd}~d}~wwxYw#|j
wxYw)N__call__z%test_func must be a callable function)rrclientSetUp
BaseExceptionrputclientTearDownrrrr	TypeError)rZ	test_funces   rrzThreadableTest.clientRuns
 	$
!!#!y*-CDD	"K
!!	JJNN1!!!#	

!!#	JJNN1	
!sSB<D	C,+C'C/'C,,C//D	D<D72D?7D<<D??Ectd)Nz clientSetUp must be implemented.)NotImplementedErrorrYs rrzThreadableTest.clientSetUps!"DEEr?c`|jjtjyr<)rrrexitrYs rrzThreadableTest.clientTearDowns		


r?N)	rarbrcrprrrrrrdr?rrr0s(#J!
 (@",Fr?rc eZdZddZdZdZy)ThreadedTCPSocketTestc\tj||tj|yN)
methodNamerRrprrZrs  rrpzThreadedTCPSocketTest.__init__#t
;%r?crtjtjtj|_yr<)rrTrBclirYs rrz!ThreadedTCPSocketTest.clientSetUps==1C1CDr?cp|jjd|_tj|yr<rr!rrrYs rrz$ThreadedTCPSocketTest.clientTearDown%%%d+r?NrunTestrarbrcrprrrdr?rrrs&E,r?rc eZdZddZdZdZy)ThreadedUDPSocketTestc\tj||tj|yr)rfrprrs  rrpzThreadedUDPSocketTest.__init__rr?crtjtjtj|_yr<)rrTr(rrYs rrz!ThreadedUDPSocketTest.clientSetUps==1B1BCr?cp|jjd|_tj|yr<rrYs rrz$ThreadedUDPSocketTest.clientTearDownrr?Nrrrdr?rrrs&D,r?rz'UDPLITE sockets required for this test.c eZdZddZdZdZy)ThreadedUDPLITESocketTestc\tj||tj|yr)rjrprrs  rrpz"ThreadedUDPLITESocketTest.__init__s#""4J"?%r?ctjtjtjtj|_yr<)rrTr(rOrrYs rrz%ThreadedUDPLITESocketTest.clientSetUps&==1B1BFDZDZ[r?cp|jjd|_tj|yr<rrYs rrz(ThreadedUDPLITESocketTest.clientTearDownrr?Nrrrdr?rrrs&\,r?rc eZdZddZdZdZy)ThreadedCANSocketTestc\tj||tj|yr)rrprrs  rrpzThreadedCANSocketTest.__init__rr?ctjtjtjtj|_	|jj|jfy#t$rYywxYwr<)rrrr rrrrrYs rrz!ThreadedCANSocketTest.clientSetUpsR==P	HHMM4>>+,	
	s&A//	A;:A;cp|jjd|_tj|yr<rrYs rrz$ThreadedCANSocketTest.clientTearDownrr?Nrrrdr?rrrs&,r?rc eZdZddZdZdZy)ThreadedRDSSocketTestc\tj||tj|yr)rrprrs  rrpzThreadedRDSSocketTest.__init__rr?ctjtjtjd|_	|jj	t
df|jj
|_y#t$rYywxYwNr)	rr1r2rrHOSTgetsocknamecli_addrrrYs rrz!ThreadedRDSSocketTest.clientSetUpsa==0E0EqI	HHMM4)$ HH002DM	
	sAA;;	BBcp|jjd|_tj|yr<rrYs rrz$ThreadedRDSSocketTest.clientTearDownrr?Nrrrdr?rrrs&	,r?r
need fcntlz%VSOCK sockets required for this test.z-This test can only be run on a virtual guest.c,eZdZddZdZdZdZdZy)ThreadedVSOCKSocketStreamTestcptjj||tj|yrunittestTestCaserprrs  rrpz&ThreadedVSOCKSocketStreamTest.__init__)""4J"?%r?ctjtjtj|_|j	|jj
|jj
tjtf|jj|j|jj\|_|_
|j	|jj
yr<)rAF_VSOCKrBrUryr!rVMADDR_CID_ANY	VSOCKPORTrXracceptconnconnaddrrYs rr[z#ThreadedVSOCKSocketStreamTest.setUpsMM&//63E3EF			(		--y9:		  "#'99#3#3#5 	4=		(r?c<tjdtjtjtj|_|j
|j
jt}|j
j|tfy)N皙?)timesleeprrrBrryr!rconnectr)rZcids  rrz)ThreadedVSOCKSocketStreamTest.clientSetUp	s[

3==&2D2DE'i#y)*r?cf|jjd}|j|tyN)rrecvassertEqualMSGrZmsgs  r
testStreamz(ThreadedVSOCKSocketStreamTest.testStream$iinnT"c"r?cv|jjt|jjyr<rsendrr!rYs r_testStreamz)ThreadedVSOCKSocketStreamTest._testStream 

cr?Nrrarbrcrpr[rrrrdr?rrrs&)+#r?rc.eZdZ	ddZdZdZdZdZy)SocketConnectedTestc2tj||yr)rrprs  rrpzSocketConnectedTest.__init__&&t
&Cr?ctj||j|jj	\}}||_yr<)rr[rrUrcli_connrZraddrs   rr[zSocketConnectedTest.setUp"s;##D)	
  "YY%%'
d
r?cp|jjd|_tj|yr<)rr!rr^rYs rr^zSocketConnectedTest.tearDown*s'


&&t,r?ctj||jjt|j
f|j|_yr<)rrrrrrW	serv_connrYs rrzSocketConnectedTest.clientSetUp/s6))$/$		*+r?cp|jjd|_tj|yr<)rr!rrrYs rrz"SocketConnectedTest.clientTearDown4s',,T2r?Nrrarbrcrpr[r^rrrdr?rrrs!D-
"
3r?rc,eZdZddZdZdZdZdZy)SocketPairTestcptjj||tj|yrrrs  rrpzSocketPairTest.__init__;rr?cFtj\|_|_yr<)r
socketpairrUrrYs rr[zSocketPairTest.setUp?s$//1	48r?cF|jjd|_yr<r]rYs rr^zSocketPairTest.tearDownBr_r?cyr<rdrYs rrzSocketPairTest.clientSetUpFr?cp|jjd|_tj|yr<rrYs rrzSocketPairTest.clientTearDownIrr?Nrrrdr?rr!r!9s&2
,r?r!c eZdZ	dZdZdZy)SocketTestBasec|j|_|j|j|j	yr<)	newSocketrUryclose_server
bindServerrYs rr[zSocketTestBase.setUp^s,NN$	))*r?cF|jjd|_yr<r]rYs rr-zSocketTestBase.close_servercr_r?cz	|j|j|jj|_yr<)bindSockrUr	serv_addrrYs rr.zSocketTestBase.bindServergs)G

dii ..0r?N)rarbrcr[r-r.rdr?rr*r*Us
1r?r*c eZdZ	fdZxZS)SocketListeningTestMixincVt||jjyr<)ror[rUrXrZrws rr[zSocketListeningTestMixin.setUpps

		r?rarbrcr[r~rs@rr4r4ms/r?r4c8eZdZ	fdZdZdZdZdZxZS)ThreadedSocketTestMixincNt||i|tj|yr<)rorprrts   rrpz ThreadedSocketTestMixin.__init__}s#
$)&)%r?cN|j|_|jyr<)newClientSocketr
bindClientrYs rrz#ThreadedSocketTestMixin.clientSetUps'')r?c$	|jSr<)r,rYs rr<z'ThreadedSocketTestMixin.newClientSockets4~~r?cz	|j|j|jj|_yr<)r1rrrrYs rr=z"ThreadedSocketTestMixin.bindClients)F

dhh,,.
r?cp|jjd|_tj|yr<rrYs rrz&ThreadedSocketTestMixin.clientTearDownrr?)	rarbrcrprr<r=rr~rs@rr9r9us!& /
,r?r9c>eZdZ	fdZfdZfdZfdZxZS)ConnectedStreamTestMixinct||j|jj	\}}||_yr<)ror[rrUrr)rZrrrws   rr[zConnectedStreamTestMixin.setUps7

	
  "YY%%'
d
r?cd|jjd|_t|
yr<)rr!ror^r6s rr^z!ConnectedStreamTestMixin.tearDowns%



r?ct||jj|j|j|_yr<)rorrrr2rr6s rrz$ConnectedStreamTestMixin.clientSetUps/
(r?c	|jjd|_t|y#t$rYwxYwr<)rr!r"rorr6s rrz'ConnectedStreamTestMixin.clientTearDowns@	NN  "!DN	 		s!3	??)rarbrcr[r^rrr~rs@rrBrBs!
"
!!r?rBceZdZ	dZy)UnixSocketTestBasectj}|jtj|tj
||yr<)rcreate_unix_domain_nameryrunlinkbind_unix_socket)rZsockpaths   rr1zUnixSocketTestBase.bindSocks4446	(($/&&tT2r?N)rarbrcr1rdr?rrHrHs
23r?rHceZdZ	dZy)UnixStreamBasecftjtjtjSr<)rAF_UNIXrBrYs rr,zUnixStreamBase.newSocket}}V^^V-?-?@@r?Nrarbrcr,rdr?rrPrPs7Ar?rPc*eZdZ	eZfdZdZxZS)InetTestBasecJt||jd|_yNr)ror[r2rWr6s rr[zInetTestBase.setUps

NN1%	r?cFtj||jy)Nhost)rrVr[rZrMs  rr1zInetTestBase.bindSocks4995r?)rarbrcrr[r[r1r~rs@rrVrVs+D&6r?rVceZdZ	dZy)TCPTestBasecftjtjtjSr<)rrTrBrYs rr,zTCPTestBase.newSocketrSr?NrTrdr?rr^r^-Ar?r^ceZdZ	dZy)UDPTestBasecftjtjtjSr<)rrTr(rYs rr,zUDPTestBase.newSockets}}V^^V->->??r?NrTrdr?rrbrbs-@r?rbceZdZ	dZy)UDPLITETestBasectjtjtjtjSr<)rrTr(rOrYs rr,zUDPLITETestBase.newSockets%}}V^^V->->@V@VWWr?NrTrdr?rreres1Xr?receZdZ	dZy)SCTPStreamBasectjtjtjtjSr<)rrTrBIPPROTO_SCTPrYs rr,zSCTPStreamBase.newSockets*}}V^^V-?-?#002	2r?NrTrdr?rrhrhs
E2r?rhc&eZdZ	ejZy)
Inet6TestBaseN)rarbrcrHOSTv6r[rdr?rrlrls+Dr?rlceZdZ	dZy)UDP6TestBasecftjtjtjSr<)rAF_INET6r(rYs rr,zUDP6TestBase.newSockets}}V__f.?.?@@r?NrTrdr?rroror`r?roceZdZ	dZy)UDPLITE6TestBasectjtjtjtjSr<)rrqr(rOrYs rr,zUDPLITE6TestBase.newSockets%}}V__f.?.?AWAWXXr?NrTrdr?rrsrss1Yr?rsc,	dfd}d}|r|S|S)Ncyr<rd)rurvs  rclient_passz%skipWithClientIf.<locals>.client_passr'r?crtj|}t|ts
fd|_|S)NcSr<rd)rrws r<lambda>z3skipWithClientIf.<locals>.skipdec.<locals>.<lambda>s;r?)rskip
isinstancetypeclient_skip)objretvalrwreasons  rskipdecz!skipWithClientIf.<locals>.skipdecs/&v&s+#t$!6F
r?cNt|tst|dsd|_|S)Nr~c|Sr<rd)rs rrzz5skipWithClientIf.<locals>.noskipdec.<locals>.<lambda>sr?)r|r}rr~)rs r	noskipdecz#skipWithClientIf.<locals>.noskipdecs!3%m)D)CO
r?rd)	conditionrrrrws `  @rskipWithClientIfrs&

 7.Y.r?c	|Dcgc]}t||r|}}t|ddjd|DzScc}w)Ndon't have , c3 K|]}|ywr<rd.0names  r	<genexpr>zrequireAttrs.<locals>.<genexpr>$s*DD4*D)rrjoin)r
attributesrmissings    rrequireAttrsrsS!+E'#t2DtEGE*DG*D!DDFFFs
AAc		d}|Dcgc]$}t|trtt|s|&}}|rddj	d|Dz}nR|Dcgc]$}t|trtt|n|&}}	tj|}|j
t|dudjdj	d|D|Scc}wcc}w#t$r}t|}Yd}~Wd}~wwxYw)Nrrc3 K|]}|ywr<rdrs  rrz requireSocket.<locals>.<genexpr>2s'A'Arzcan't create socket({0}): {1}c32K|]}t|ywr<)strros  rrz requireSocket.<locals>.<genexpr>@s+c!f+s)
r|rrrrrr!rrformat)ruerrrrcallargsr$rs       r
requireSocketr's
C"Bs#s#GFC,@BGBdii'A'AAA $%-7sC,@GFC(cI%%	

x(A

GGI4'..II+d++S	233B
%	a&C	s#)C)CC!!	C?*C::C?c	
eZdZejeduddZdZdZejeduddZ	dZ
dZd	Zd
Z
dZejej dk(d
dZej$ej(ddZejej.dk(dejej2ddZdZdZdZejeeddejeedddZ ejeedddZ!ejeed d!d"Z"ejeed#d$d%Z#ejeed&d'd(Z$d)Z%d*Z&ejNd+Z(d,Z)d-Z*ejeed.d/d0Z+ejeed1d2d3Z,ejeed1d2d4Z-ejeed5d6d7Z.ejeed5d6d8Z/d9Z0d:Z1d;Z2d<Z3d=Z4d>Z5d?Z6ejej dk(d
d@Z7ejej dk(d
ejeedAdBdCZ8dDZ9dEZ:dFZ;ejejxdGdHdIZ=dJZ>dKZ?dLZ@dMZAdNZBdOZCdPZDdQZEdRZFdSZGdTZHejNdUZIejej2dVdWZJejej2dVdXZKdYZLejej2dVej$ej.dZk(d[ej$eMd\ejeedd]d^ZNejej2dVejej.dZk(d_d`ZOejej2dVej$ej.dZk(d[ej$eMd\ejeedd]daZPejej2dVejej.dZk(d_dbZQdcZRddZSdeZTejeedfdgdhZUdiZVdjZWdkZXdlZYdmZZej$ej dk(dndoZ[dpZ\dqZ]drZ^dsZ_dtZ`duZay)vGeneralModuleTestsNzneed _socket modulec|jtjtj|jtd5dtj_dddy#1swYyxYw)N	immutabler)
assertTruegc
is_tracked_socketrassertRaisesRegexrfoorYs rtest_socket_typez#GeneralModuleTests.test_socket_typeHsL

gnn56

#
#I{
;	#!"GNN	#	#	#s	A((A1cddl}|jtj|jutj}|j	|tj|jyr)rrr
SocketTypeassertIsInstancer!)rZrr$s   rtest_SocketType_is_socketobjectz2GeneralModuleTests.test_SocketType_is_socketobjectNsJ))W^^;<MMOa!2!23		r?c2tjtjtj}|5|jd|j	zt||jdtjzt||jdtjzt||jdt||j
dt||jd|jdt||jt|jt|ddd|jdt||j
dt|y#1swY@xYw)	Nzfd=%iz	family=%sztype=%szproto=0raddr	127.0.0.1rladdrz[closed])
rrTrBassertInfilenoreprassertNotInrrrrZr$s  r	test_reprzGeneralModuleTests.test_reprUsMM&..&*<*<=
	9MM'AHHJ.Q8MM+6Q@MM)f&8&88$q'BMM)T!W-Wd1g.
FF#$MM'47+MM#ammo.Q8	9	


j$q'*$q'*	9	9sDF

Fc	tjtjtj}d|j	d|j
d|jd|jd	}|jt|||jd|j
d|jd|jd}|jt||y#|jwxYw)Nz<socket object, fd=z	, family=z, type=z, proto=>z<socket object, fd=-1, family=)rrrTrBrfamilyr}protorrr!)rZr$expecteds   rtest_csocket_reprz$GeneralModuleTests.test_csocket_reprcsNN7??G,?,?@	88:qxxBHT!Wh/
GGIxx2a(+
GGIsACC1ctjtjtj5}t|}|j	|j|jdddd}t
j	j|jdy#1swYBxYw#t$rYywxYw)NzSocket proxy still exists)
rrTrBrrrr
gc_collectfailReferenceError)rZr$ps   rtest_weakrefzGeneralModuleTests.test_weakrefps
]]6>>6+=+=
>	5!aAQXXZ4	5
	3
HHJ
II12	5	5		s:B.B:.B7:	CCc<d}|jt|dz5t#1swYnxYw|jt|dz5tj#1swYnxYw|jt|dz5tj#1swYyxYw)Nz$Error raising socket exception (%s).rr
z
socket.herrorzsocket.gaierror)assertRaisesrrherrorgaierrorr	s  rtestSocketErrorz"GeneralModuleTests.testSocketError}s4


wC)O

<	M		


wC/,A

B	 --	 	 


wC2C,C

D	"//!	"	"s $-
AA$BBctjtjtj}|j|j|jd|j
}|jt5}|jd|ddd|jtjd|jt5}|jd|ddd|jt|jd|jt5}|jddddd|jdt|j|jt5}|jdd|ddd|jt|jd|jt5}|jdd|ddd|jt|jd|jt5}|jdddddd|jdt|j|jt5}|jdd	|ddd|jt5}|jdddddd|jt5}|jdddd|jd
t|j|jt5}|jdd|dddd|jdt|jy#1swYxYw#1swYxYw#1swYYxYw#1swYxYw#1swYxYw#1swY~xYw#1swY5xYw#1swYxYw#1swYxYw#1swYxYw)
N)ru☠z*a bytes-like object is required, not 'str'y@z.a bytes-like object is required, not 'complex'fooznot NoneTyperbarz	(1 given)z	(4 given))rrTr(ryr!rrrrsendtorr	exceptionr)rZr$socknamecms    rtestSendtoErrorsz#GeneralModuleTests.testSendtoErrorssMM&..&*;*;< 	w==?


y
)	)R
HHXx(	)R\\*E	G


y
)	#R
HHR"	#R\\*I	K


y
)	#R
HHVT"	#

nS%67


y
)	,R
HHXq(+	,R\\*E	G


y
)	&R
HHRH%	&R\\*I	K


y
)	&R
HHVQ%	&

nc",,&78


y
)	.R
HHVUH-	.


y
)	)R
HHVT4(	)

y
)	R
HHV	

k3r||#45


y
)	-R
HHVQ!,	-

k3r||#45C	)	)	#	#	#	#	,	,	&	&	&	&	.	.	)	)			-	-sxM>N.NN%N2/N?O6O'O&;O2>NNN"%N/2N<?O	OO#&O/2O;cDtjtjrtjtjtj
tjtjtjtjtjyr<)rrThas_ipv6rqrBr(rSOCK_RDMr2
SOL_SOCKETSO_REUSEADDRrYs rtestCrucialConstantsz'GeneralModuleTests.testCrucialConstantssR??OOr?ctjtjtjrtjyyr<)rIPPROTO_TCPIPPROTO_UDPrIPPROTO_IPV6rYs rtestCrucialIpProtoConstantsz.GeneralModuleTests.testCrucialIpProtoConstantss)??r?ntWindows specificctjtjtjtjtj
tjtjtjyr<)	rIPPROTO_ICLFXBM
IPPROTO_STIPPROTO_CBTIPPROTO_IGPIPPROTO_RDPIPPROTO_PGMIPPROTO_L2TPrjrYs rtestWindowsSpecificConstantsz/GeneralModuleTests.testWindowsSpecificConstantssJr?zWASI is missing these methodsczgd}|D]2}ttj|r|jd|d4y)N)_acceptrr
connect_exgetpeernamerrXrecvfrom
recvfrom_intor
setsockoptshutdownzsocket method z is missing)rrr)rZnamesrs   rtest_socket_methodsz&GeneralModuleTests.test_socket_methodss=

	>D6==$/		N4&<=	>r?darwinmacOS specific testIPv6 required for this testcbhd}|D]&}|jtt|d|d(y)N>
IPV6_RTHDRIPV6_TCLASSIPV6_DSTOPTSIPV6_HOPOPTSIPV6_NEXTHOPIPV6_PATHMTUIPV6_PKTINFO
IPV6_CHECKSUM
IPV6_DONTFRAG
IPV6_HOPLIMITIPV6_RECVRTHDRIPV6_RECVTCLASSIPV6_RECVDSTOPTSIPV6_RECVHOPOPTSIPV6_RECVPATHMTUIPV6_RECVPKTINFOIPV6_USE_MIN_MTUIPV6_RECVHOPLIMITIPV6_RTHDRDSTOPTSIPV6_RTHDR_TYPE_0zMissing RFC3542 socket option '')rrr)rZoptsopts   rtest3542SocketOptionsz(GeneralModuleTests.test3542SocketOptionss<
,	COO$(GuA&N
	r?ctj}	tj|}|jj
ddk\d	tj|\}}}|gz}tj|}||vr"|jd|dt|dyy#t$r|j	dYwxYw#t$r|j	dYwxYw)Nname lookup failurerrzError resolving host to ip.z1Error testing host resolution mechanisms. (fqdn: z, all: ))rgethostname
gethostbynamerrrfind
gethostbyaddrgetfqdnrr)rZhostnameiphnamealiasesipaddrsall_host_namesfqhns        rtestHostnameResz"GeneralModuleTests.testHostnameRess%%'	1%%h/B	
)+HI	1&,&:&:2&>#E7G#E*W4~~b!~%IIY]_cdr_stu&	1MM/0	1	1MM/0	1s#B,C,C	C	C)(C)ctjddfD]'}|jtj||)tjfD]*}|j|tj|d,y)Nz10.0.0.1255.255.255.255r)rHOSTv4rrrrr)rZrr[s   rtest_host_resolutionz'GeneralModuleTests.test_host_resolutionsr")):7HI	?DV11$7>	?
#))*	?DMM$ 4 4T :1 =>	?r?cd}dD]l}|jt|5tj|ddd|jt|5tj|dddny#1swYAxYw#1swYxYw)Nz[resolving an invalid IP address did not raise OSError; can be caused by a broken DNS server)z0.1.1.~1z1+.1.1.1z::1qz::1::2z1:1:1:1:1:1:1:1:1r)rrrrr)rZexplanationrs   r test_host_resolution_bad_addressz3GeneralModuleTests.test_host_resolution_bad_addresss
3	*	+D""7"5
+$$T*
+""7"<
+$$T*
+
+		+
+
+
+
+sA5B5A>	B
	sethostnameztest needs socket.sethostname()rztest needs socket.gethostname()ctj}	tjd	|jtjdtjd|jtjdtj|y#t$r:}|jtj
k(r|j
dnYd}~d}~wwxYw#tj|wxYw)Nnewztest should be run as rootsbarr)rrr(rerrnoEPERMrr)rZoldhnrs   rtest_sethostnamez#GeneralModuleTests.test_sethostname(s""$	u%	&V//159v&V//159u%	ww%++%

:;<	
u%s#BAC%	C"(0CC"%C<if_nameindexz$socket.if_nameindex() not available.ctj}|D]\}}|j|t|j|t|j|dtj|}|j|t|j||tj|}|j|t|j||yr)	rr/rintr
assertGreaterif_nametoindexrif_indextoname)rZ
interfacesindexr_index_names      rtestInterfaceNameIndexz)GeneralModuleTests.testInterfaceNameIndex<s((*
%
	*KE4!!%-!!$,ua(**40F!!&#.UF+))%0E!!%-T5)
	*r?r4z&socket.if_indextoname() not available.c|jttjd|jttjdyNr	_DEADBEEF)rrrr4rrYs rtestInvalidInterfaceIndexToNamez2GeneralModuleTests.testInvalidInterfaceIndexToNameLs4	
'6#8#8!<)V%:%:KHr?r3z&socket.if_nametoindex() not available.c|jttjd|jttjdyr;)rrrr3rrYs rtestInvalidInterfaceNameToIndexz2GeneralModuleTests.testInvalidInterfaceNameToIndexRs4	
)V%:%:A>'6#8#8+Fr?getrefcountztest needs sys.getrefcount()c	tjt}tjtdy#t
$r2tjtk7r|j
dYyYywxYw)Nrz$socket.getnameinfo loses a reference)sysr@rargetnameinforr)rZorigs  rtestRefCountGetNameInfoz*GeneralModuleTests.testRefCountGetNameInfoXsZ	B??8,Dx*	Bx(D0		@A1	Bs366A10A1cP	tjddy#t$rYywxYw)N)rrrrr)rrCrrYs rtestInterpreterCrashz'GeneralModuleTests.testInterpreterCrashds)	~q1		s	%%ctjdtjdtjdtjdi}|jD]o\}}d|zdz
}dD])}|j
||z||||z|z+||}|j
||z||jt|dqy)N r)rririgE#i2Tvl)	rhtonlntohlhtonsntohsitemsrr
OverflowError)rZsizesfuncsizemaskrPswappeds       rtestNtoHzGeneralModuleTests.testNtoHlsr6<<r6<<5++-	:JD$tGq=DG
F  T4QtV+=+DE
F4jGWt^T2mT59	:r?cddl}gd}|dgz}dddddzg}||jdz
|jdzgzd	|jgz}|D],}tj|tj
|.|D],}tj|tj|.|D]L}|jttj||jttj
|N|D]L}|jttj||jttj|Ny)
Nr)rrrrKlr)
	_testcapiINT_MININT_MAXrrOrNrMrLrrQ)rZr^
s_good_values
l_good_valuesl_bad_valuess_bad_valuesks       rtestNtoHErrorsz!GeneralModuleTests.testNtoHErrorszs.)
%4
Bq$w/


q
 )"3"3A"56
7
i''(
)	
	ALLOLLO		ALLOLLO		>AmV\\1=mV\\1=	>	>AmV\\1=mV\\1=	>r?cB|j}tjjdstjdvrd}nd}|D]}	t	j
|d}ntttdrtjdk\rt	j
|}|||	t	j
|d}|||tjs|t	j||t	j|d|||t	j|d||jttjd	|jttjd
y#t$rYGwxYw#t$rd}YwxYw)N)freebsdnetbsdgnukfreebsd)linuxr)daytimeqotddomain)echorlrntcpgetandroidapileveludprZr])rrBplatform
startswithr
getservbynamerrrqr
is_android
getservbyportrrQ)rZeqservicesservicerWport2udpports       r
testGetServByz GeneralModuleTests.testGetServBysr



LL##$HI||225H4H	G
++GU;	M12&&(B.((1EtUO	**7E:G
w!!v##E*G4
6e,g6v##GU3W=-)=)=rB-)=)=uE5

	G	s$	F.F	F
F
FFc|jtjdtj5}|j|jddddt	d5|jtjdtj5}|j|jddddtj
d|jtjdtj5}|j|jddddddd|j
ttj
d|j
ttj
dy#1swY@xYw#1swYxYw#1swYuxYw#1swYyxYw)N
rZspam)	rrrJ
gettimeoutrNrKr
ValueErrorr)rZr$rMs   rtestDefaultTimeoutz%GeneralModuleTests.testDefaultTimeoutsV	
113T:
]]_	3Q\\^T2	3&b
)		:V557<
8D  !2B7
8
$$T*V557>
:D  !2D9
:		:	
*f&>&>C	
)V%=%=vF'	3	3
8
8
:
:		:		:sH!F-9F=&!F%AF=!F1=F=F"%F.	*F=1F:	6F==G	inet_atonztest needs socket.inet_aton()c|jdtjd|jdtjdy)N0.0.0.0r")rrrrYs rtestIPv4_inet_aton_fourbytesz/GeneralModuleTests.testIPv4_inet_aton_fourbytess;
	
F$4$4Y$?@F$4$45F$GHr?	inet_ptonztest needs socket.inet_pton()cddlm}mmfd}fd}j	d|dj	d|dj	d	|d
j	d|dj	d
|dt
s	||d||d||d||d||dj	d|dj	d|dj	d	|d
j	d
|d||d||d||d||d||dy)Nr)rrrTc|Sr<rd)arTrs rrzz5GeneralModuleTests.testIPv4toString.<locals>.<lambda>i+r?c>jttf||Sr<rrrrSrrZs  rrzz5GeneralModuleTests.testIPv4toString.<locals>.<lambda>t'8'8
j!4(
r?rrsz255.0.255.0sz170.170.170.1701.2.3.4rr"z0.0.0.z	300.0.0.0za.0.0.0z	1.2.3.4.5::1)rrrrTrr)rZrg
assertInvalidrTrs`   @@rtestIPv4toStringz#GeneralModuleTests.testIPv4toStringsG	>=+

	
,a	l;,a
.>?,a0A.BC,a	l;,a0A.BC!X&a%a#a%a,a	l;,a
.>?,a0A.BC,a0A.BCa"a%a#a%ar?c	ddlmmm}|sj	dtjdk(r
	dfd	fd
}jddjddjd
djddjddjdd|d|d|d|d|d|d|d|dts|djddjd d!jd"d#|d$|d%|d&|d'|d(|d)y#t
$rj	dYwxYw#t$r+}|jdk(rj	dYd}~d}~wwxYw)*Nr)rrqrIPv6 not available+could not import needed symbols from socketwin32::&'IPv6 might not be supportedc|Sr<rd)rrqrs rrzz5GeneralModuleTests.testIPv6toString.<locals>.<lambda>i!,r?c>jttf|Sr<rrrrZs rrzz5GeneralModuleTests.testIPv6toString.<locals>.<lambda>$"3"3
j!1a#
r?z0::0sz1::sEvV$z$45ef:76cb:1a:56ef:afeb:bac:1924:aeaesB
'Tzad42:abc::127:0:254:2s
z12:a::z0x20::z:::z::0::z1::abc::z1::abc::defz1:2:3:4:5:6z1:2:3:4:5:6:z1:2:3:4:5:6:7:8:0z1:2:3:4:5:6:7:8:s*@z::254.42.23.64sB*@z42::a29b:254.42.23.64sB*@z"42:a8b9:0:2:ffff:a29b:254.42.23.64z255.254.253.252z1::260.2.3.0z1::0.be.e.0z1:2:3:4:5:6:7:1.2.3.4z::1.2.3.4:0z0.100.200.0:3:4:5:6:7:8)rrrqrrImportErrorrBrtrwinerrorrr)rZrrrrqrrs`   @@@rtestIPv6toStringz#GeneralModuleTests.testIPv6toStrings	I<<

23<<7"
A(D)

-

	
qw/qy13QuX>O
45	
	
S
%&	
	
;Qx[Ihegj!m$m$n%)*,-;
	
	
C
%&	
	
O
23	
	'(n%m$-.m$/0o	IMMGH	I
A::&MM"?@
As(F#	G#GG	G8
 G33G8	inet_ntopztest needs socket.inet_ntop()ctddlm}mmfd}fd}j	d|dj	d|dj	d	|d
j	d|d||d
||d||dj	d|tdj	d|dj	d|dj	d	|d
||d
||d||dj	d|tdy)Nr)	inet_ntoarrTc|Sr<rd)rrTrs rrzz5GeneralModuleTests.testStringToIPv4.<locals>.<lambda>Drr?c>jttf||Sr<rrs  rrzz5GeneralModuleTests.testStringToIPv4.<locals>.<lambda>Err?z1.0.1.0sz
170.85.170.85sUUr"rrrssr)rrrrTr	bytearray)rZrrrrTrs`   @@rtestStringToIPv4z#GeneralModuleTests.testStringToIPv4@s'	>=+

	
A&9$:;!,?*@A*A.A,BCA&9$:;a%a%a&!I6I,J*KLA&9$:;!,?*@A*A.A,BCa%a%a&!I6I,J*KLr?cH	ddlmmm}|sj	dtjdk(r
	dfd	fd
}jddjdd
jddjdtd
|d|d|dy#t
$rj	dYwxYw#t$r*}|jdk(rj	dYd}~d}~wwxYw)Nr)rrqrrrrrrrc|Sr<rd)rrqrs rrzz5GeneralModuleTests.testStringToIPv6.<locals>.<lambda>krr?c>jttf|Sr<rrs rrzz5GeneralModuleTests.testStringToIPv6.<locals>.<lambda>lrr?rrsz!aef:b01:506:1001:ffff:9997:55:170s
Upsss)rrrqrrrrBrtrrrr)rZrrrrqrrs`   @@@rtestStringToIPv6z#GeneralModuleTests.testStringToIPv6Zs	I<<

23<<7"
A(L1

-

	
q/"8 9:/
QR	
	
),B"C DEl#l#k"3	IMMGH	I
A::&MM"?@
As(C	C.C+*C+.	D!7 DD!ctjtjtj}|j|jtjD]+}tj}	|jd|fn|j}	tjtj}|j#|ddfd|dz|j%|dy#t$r-}|jtjk7s|dk(rYd}~d}~wwxYw#t$r|j!dYwxYw)Nrrrz
%s invalidr)rrTrBryr!	itertoolscountrfind_unused_portrrr+
EADDRINUSErrrrrr)rZrMrPrWrr
my_ip_addrs       rtestSockNamezGeneralModuleTests.testSockName~s"}}V^^V-?-?@

#"	A 113D
		9d+,
	!	1--f.@.@.BCJ	


d1g	:6tAw8NOa$'!
77e...!q&39
	1MM/0	1s*:C<!'D5<	D2#D--D25EEc$tjtjtj}|j|j|jtjtj}|j|dk7dy)Nrzinitial mode is reuse)	rrTrBryr!
getsockoptrrassertFalserZrMreuses   rtestGetSockOptz!GeneralModuleTests.testGetSockOpts_}}V^^V-?-?@

# 1 163F3FG!%<=r?ctjtjtj}|j|j|jtjtjd|jtjtj}|j|dk(dy)Nrrzfailed to set reuse mode)
rrTrBryr!rrrrrrs   rtestSetSockOptz!GeneralModuleTests.testSetSockOptsy}}V^^V-?-?@

#))6+>+>B 1 163F3FG!%?@r?ctjtjtj5}|jdddd|j	t
jdy#1swY+xYw)Nrspam)rrTrB
settimeoutrrrr\s  rtestSendAfterClosez%GeneralModuleTests.testSendAfterClosesS
]]6>>6+=+=
>	$OOA	'499g6		sA//A8ctj}|jtjdftj|jj		|j	|jdy#t$rD}|j|jtjtjfYd}~yd}~wwxYw)Nrrz#close() should raise EBADF/ENOTSOCK)rr
_LOCALHOSTrr!rrrr+EBADFENOTSOCK)rZrMrs   rtestCloseExceptionz%GeneralModuleTests.testCloseExceptions}}		6$$a()

T[[]+113	=JJL

II;<		DMM#))ekk5>>%BCC	Ds)B	C:CCc*tjtjtj5}|j|jtjttdrL|j
|jtjtjztjfn*|j|jtj|j|jddddy#1swYyxYw)NSOCK_CLOEXECr)
rrTrBrrrrr}rrr\s  rtestNewAttributesz$GeneralModuleTests.testNewAttributess]]6>>6+=+=
>	,$T[[&..9v~.

dii%11F4G4GG%1134  F,>,>?TZZ+	,	,	,sC
D		Dc8tj}|j|jtj}|dz}|dz
}|jt|jt|f|jt|jt|ftjD]/}tj}	|jt|fyy#t$r-}|jtjk7s|dk(rYd}~dd}~wwxYw)Nr]r)rryr!rrrrQrrrrrr+r)rZrMrWbig_portneg_portrPrs       rtest_getsockaddrargz&GeneralModuleTests.test_getsockaddrargs}}

#--/%<%<-T84DE-T84DE"	A 113D
		4,'
	
77e...!q&39
sC##	D,#DDc0|jttjd|jttd|jttd|jttd|jttdtj}|j|j|jt|jdd|jtjdy)Nr
SIO_RCVALL	RCVALL_ON
RCVALL_OFFSIO_KEEPALIVE_VALSrZ)rdr)	rrrryr!rrrrrs  rtest_sock_ioctlz"GeneralModuleTests.test_sock_ioctls

w78564556(<=>MMO *aggr48	))=9r?SIO_LOOPBACK_FAST_PATHz1Loopback fast path support required for this testcltj}|j|j	|jtjd|jt|jtjdy#t
$r(}d}|j|k(r|jdd}~wwxYw)NTi='zQSIO_LOOPBACK_FAST_PATH is defined but doesn't implemented in this Windows version)
rryr!rrrrrrr)rZr$exc
WSAEOPNOTSUPPs    rtest_sio_loopback_fast_pathz.GeneralModuleTests.test_sio_loopback_fast_paths
MMO 	
GGF1148	
)QWWf.K.KTR
	!M||},

LM	s B	B3#B..B3c$
	tjddtjtdD]}|jt|dtjddtjddtjddtjrtjddttdrtjdk\rtjtd	tjtdtjtdtjtdtjtj}|D]\}}}}}|j|tj|jt!|d
|j"z|jt%|t%|j"|j|tj|jt!|d|j"z|jt%|t%|j"tjtddtj}|D](\}}}}}|j|tj*tjtdddtj&tjtddddtj(tjddtj*tjdtj(tjtd}tjtd
}	|j||	tjtdtj}tjtdtj}	|j||	tjtddtj}tjtdtj}	|j||	tjtdddtj&}tjtdtj&}	|j||	tjtddddtj(}tjtdtj(}	|j||	tjddtj*tjdtj(}tjddtj*tjdtj(}	|j||	|j-t.tjddttdr*	tjdddddtj0yy#tj$r4}|jtjk(r|jdd}~wwxYw#tj$rYywxYw)N	localhostPzbuggy libc versionrrrrqrrhttp<AddressFamily.AF_INET: %r><SocketKind.SOCK_STREAM: %r>r)r[rWrr})r)flags)r[rWrr}rruAI_NUMERICSERV)rgetaddrinforr+EAI_SERVICErrrlenrIPV6_ENABLEDrrBrqrTrBrvaluerSOL_TCP
AI_PASSIVE	AF_UNSPECrUnicodeEncodeErrorr)
rZrinfoinfosrr}rsocktyperbs
          rtestGetaddrinfoz"GeneralModuleTests.testGetaddrinfos	{B/&&tT2	+DSY*	+	;+;+4$%%ub)12&&(B.tV,4$4&""4V^^V=O=OP%*	9!FD!QVV^^4T&\+H6<<+WXS[#fll*;<T6#5#56T$Z)G$**)TUSYDJJ8
	9""4q&2D2DE$)	; AxAqXv'9'9:	;	4q!V^^<4q!Q0A0AB	4F$4$4f6H6H!!,,	.
tT*Dt4AtT6>>:tT&..AAtT1f.@.@AtT0B0BCAtT1a@tT@AtT1aF4E4EFtT1B1BCAtQ(8(8&:L:La%00
2Dq9I9I$*$6$6a%+%6%6
8	
A,f.@.@+xX6+,
"";aA#)#8#8:	-I	yyF...

23		T??

s)X/(Y9/Y6/Y11Y69ZZcddlm}m}m}	t	j
d|dztj	t	j
d|dztj	t	j
d|dz
dztj	t	j
d|dz
tjt	j
ddtjt	j
ddtjy#t$r|jdYtj$rYwxYw#t$r|jdYtj$rY	wxYw#t$r|jdYtj$rYwxYw#t$r|jdYtj$rYwxYw)Nr)	ULONG_MAXLONG_MAXLONG_MINrrz,Either no error or socket.gaierror expected.rK)
r^rrrrrrBrQrr)rZrrrs    r"test_getaddrinfo_int_port_overflowz5GeneralModuleTests.test_getaddrinfo_int_port_overflowJs}	<;	tY]9K9KL	tX\8J8JK	tX%6%:ASAST	tX\8J8JK	4););<4f.@.@A=	F
IIDE		
	FIIDE		
	FIIDE		
	FIIDE		s^)D)D7 ,E,
)F!D4D43D47E)E)(E),FFF!G>GGcP|jttjddy)N)zmail.python.orgrr)rrrrCrYs rtest_getnameinfoz#GeneralModuleTests.test_getnameinfozs'6#5#57LaPr?networkznetwork is not enabledcBtjd5tjddddd}tj|tj|tj
|dtjtjy#1swYjxYw)Nz
python.orgu!испытание.pythontest.netr)rtransient_internetrrgethostbyname_exrrrB)rZrns  r	test_idnazGeneralModuleTests.test_idna~sx

-
-l
;	/  .	/5V$'6!F$4$4V5G5GH	/	/sBBc$ttdrttdsjdfd}fd}tj\}}tjtj
|}	|r|j
djt5tjd|jdtjzddd|rktjtj
|tjdjt|jdtjztjd	tjtj
||j|jy#1swYxYw#tjd	tjtj
||j|jwxYw)
Nalarmr$z9signal.alarm and socket.socketpair required for this testcPjttjdyrrrmathacoshrurZs r
ok_handlerz@GeneralModuleTests.check_sendall_interrupted.<locals>.ok_handlersj$**a8r?cZjttjdddzyNrrr	rs rraising_handlerzEGeneralModuleTests.check_sendall_interrupted.<locals>.raising_handlers j$**a8
Fr?g?rxr)rsignalrrr$SIGALRMrrZeroDivisionErrorrsendallr
SOCK_MAX_SIZETimeoutErrorr!)rZwith_timeoutr
rcr$	old_alarms`      rcheck_sendall_interruptedz,GeneralModuleTests.check_sendall_interruptedsYvw'wv|/LMMUV	9	  "1MM&../B		S!""#45
8Q		$!6!667
8

fnnj9Q!!,		"&)>)>">@
LLOMM&..)4
GGI
GGI
8
8
LLOMM&..)4
GGI
GGIs&9(F4!8F(A5F4(F1-F44AHc&|jdyNFrrYs rtest_sendall_interruptedz+GeneralModuleTests.test_sendall_interrupteds&&u-r?c&|jdy)NTrrYs r%test_sendall_interrupted_with_timeoutz8GeneralModuleTests.test_sendall_interrupted_with_timeouts&&t,r?ctjtjtj}t|}|j	t
5}d}t
jddd|j|tjjdtjtjtj}|jd}t|}d}t
j|j	t
5d}t
jdddy#1swYxYw#1swYyxYw)Nrr)
rrTrBrassertWarnsResourceWarningrrrrwarningrumakefile)rZrMrrrs     rtest_dealloc_warnz$GeneralModuleTests.test_dealloc_warns}}V^^V-?-?@J


o
.	!"D 	!	


aRZZ__Q/01}}V^^V-?-?@MM$J


o
.	!A 	!	!	!	!	!	!sD=E	=E	Ec
tjtjtj5}|jd}|j	|jt
|ddddy#1swYyxYw)Nrz<_io.BufferedReader name=-1>)rrTrBr&r!rrrZrMfps   rtest_name_closed_socketioz,GeneralModuleTests.test_name_closed_socketiosa
]]6>>6+=+=
>	G$t$BHHJT"X'EF	G	G	Gs=A99Bctj5}|jdd}|j|j|j	|j|j	|j
|j|jt|j|jt|j
|jt|jdddy#1swYyxYw)Nrr)	buffering)
rr&rreadablerwritableseekabler!rrr)s   rtest_unusable_closed_socketioz0GeneralModuleTests.test_unusable_closed_socketios
]]_	7tq1BOOBKKM*R[[]+R[[]+HHJj"++6j"++6j"++6	7	7	7sC!C??Dctj}	|jtdftj|j	|jt5|jdddd|jt5|jddd|jt5tjdddd|jt5tjddddy#1swYxYw#1swY|xYw#|jt5|jdddw#1swYwxYwxYw#1swYxYw#1swYyxYw)NrrrZ)	rrrr!rrrrXrr\s  rtest_socket_closez$GeneralModuleTests.test_socket_closes }}	IItQi LL'""7+
A
""7+





y
)	LL	


w
'	LL		



""7+





				s`AD,%D7D,D E+5E7DD, D),E(E	E(E%!E(+E47Fc	JdD]z}|j|5tj5}d|vrdnd}|j||5}|j|j|ddddddddd|y#1swYxYw#1swY xYw#1swYxYw)N)rrrwwwbmoderr	encoding)subTestrr&rr9)rZr9rMr;r*s     rtest_makefile_modez%GeneralModuleTests.test_makefile_modes.	8D4(
8]]_8'*d{tHth?82(($788
8
8	88888
8
8s:BB
	B	&B
.BB

B

BBB"	c	*dD]j}|j|5tj5}|jtd5|j	|dddddddddly#1swYxYw#1swY xYw#1swYxYw)N)rtr+rr8zinvalid mode)r<rrrr&)rZr9rMs   rtest_makefile_invalid_modez-GeneralModuleTests.test_makefile_invalid_modes'	,D4(
,]]_,//
NK,

d+,,
,
,	,,,,,
,
,s:B	A=A1	A=B	1A:
6A==BB		B	ctj}|5ttjdzD](}|j	t
tj||*	dddttjdzD]}tjtjtj|}|j|tjtjtjtj|}|j|tjy#1swYxYwrX)rrangepickleHIGHEST_PROTOCOLrrdumpsloadsrTrrB)rZrMprotocolrr}s     rtest_picklezGeneralModuleTests.test_pickles}}
	K!&"9"9A"=>
K!!)V\\4J
K	Kf559:	7H\\&,,v~~x"HIFVV^^4<<V-?-? JKDT6#5#56		7	K	KsAD88EcdD]e}tjtjtj5}|jtdf|j|dddgtjtjtj5}|jtdf|jdddy#1swYxYw#1swYyxYw)N)rrZr)rrTrBrrrX)rZbacklogsrvs   rtest_listen_backlogz&GeneralModuleTests.test_listen_backlogs	$Gv~~v/A/AB
$c$#

7#
$
$	$
]]6>>6+=+=
>	#HHdAYJJL			
$
$		s)C(CC	C#c$ddl}tjtjtj5}|j	t
df|j
t|j|jdzdddy#1swYyxYwr)
r^rrTrBrrrrQrXr`)rZr^rLs   rtest_listen_backlog_overflowz/GeneralModuleTests.test_listen_backlog_overflow
sk	
]]6>>6+=+=
>	P#HHdAYmSZZ9J9JQ9NO	P	P	PsABBIPv6 required for this test.cd|jttjtj
ddfdtjtjtj5}|jt|jtj
ddfdddy#1swYyxYw)NrrYi)	rrQrrCrrmrqrBrrs  r
test_flowinfoz GeneralModuleTests.test_flowinfos-););(//J?	D
]]6??F,>,>
?	U1mQVVm6J6JAs5ST	U	U	Us*3B&&B/ctjddtjtjtj\^}}|j|dy)Nff02::1de:c0:face:8Dr
)ff02::1de:c0:face:8dr
rr)rrrqr(rr)rZrsockaddrs   rtest_getaddrinfo_ipv6_basicz.GeneralModuleTests.test_getaddrinfo_ipv6_basicsJ".."&//	
1h	
#GHr?c|jtjtjd|jtjtjdy)Nrr)rrrrYs rtest_getfqdn_filter_localhostz0GeneralModuleTests.test_getfqdn_filter_localhost#sB)6>>)+DE)6>>$+?@r?rzdoes not work on WindowszSymbolic scope id does not workz test needs socket.if_nameindex()ctjd\}}tjd|zdtjtjtj
\^}}|j
|ddd|fy)Nrff02::1de:c0:face:8D%r
rU)rr/rrqr(rr)rZifindextest_interfacerrVs     r&test_getaddrinfo_ipv6_scopeid_symbolicz9GeneralModuleTests.test_getaddrinfo_ipv6_scopeid_symbolic'sr%+$7$7$9!$<!."..#n4&//	
1h	
$:D!W#MNr?z.Numeric scope id does not work or undocumentedcd}tjdt|zdtjtjtj
\^}}|j
|ddd|fy)N*r[r
rUr)rrrrqr(rr)rZr\rrVs    r%test_getaddrinfo_ipv6_scopeid_numericz8GeneralModuleTests.test_getaddrinfo_ipv6_scopeid_numeric7sc"..#c'l2&//	
1h	
$:D!W#MNr?ctjd\}}ddd|f}tj|tjtjz}|j|d|zdfy)NrrTr
ff02::1de:c0:face:8d%1234)rr/rCNI_NUMERICHOSTNI_NUMERICSERVr)rZr\r]rVnameinfos     r&test_getnameinfo_ipv6_scopeid_symbolicz9GeneralModuleTests.test_getnameinfo_ipv6_scopeid_symbolicHsh%+$7$7$9!$<!.*D!W=%%h0E0EH]H]0]^$;n$Lf#UVr?cd}ddd|f}tj|tjtjz}|j	|dt|zdfy)Nr`rTr
rrcrd)rrCrerfrr)rZr\rVrgs    r%test_getnameinfo_ipv6_scopeid_numericz8GeneralModuleTests.test_getnameinfo_ipv6_scopeid_numericSsY*D!W=%%h0E0EH]H]0]^$;c'l$JF#STr?ctjtjtj5}|jt	|j
d|j
jz|jt	|jd|jjz|jt|j
t|j
j|jt|jt|jjdddy#1swYyxYw)Nrr)	rrTrBrrrrr}rrs  rtest_str_for_enumsz%GeneralModuleTests.test_str_for_enums^s]]6>>6+=+=
>	=!T!((^-JQXX^^-[\T!&&\+IAFFLL+XYS]C,?@S[#affll*;<		=	=	=sC=D99Ecttdd}ttdd}tj|z|z}tjtj|5}|j	|j
tj|j
d|j	|j
tj|j
d|j	|j
tj|jd|j	|j
tj|jd|j	|j
tjdddy#1swYyxYw)N
SOCK_NONBLOCKrrrTF)rrrBrTrr}rsetblocking)rZrnr	sock_typer$s     r test_socket_consistent_sock_typez3GeneralModuleTests.test_socket_consistent_sock_typegs;
v~q9&&6E	
]]6>>9
5		9QVVV%7%78
LLOQVVV%7%78
LLOQVVV%7%78
MM$QVVV%7%78
MM% QVVV%7%78		9		9		9s
DE==Fcntjtjtj}|j}t	tj
jjdz}t	dtjjjDdz}tj||d|5}|j|j||j|j||j|jddhdddy#1swYyxYw)Nrc3.K|]
\}}|dvr|yw)>rrnNrd)rrkinds   rrzEGeneralModuleTests.test_unknown_socket_family_repr.<locals>.<genexpr>s%
d<<

srr)rr}rrr)rrTrBdetachmax
AddressFamily__members__values
SocketKindrPrrr}rr)rZrMfdunknown_familyunknown_typer$s      rtest_unknown_socket_family_reprz2GeneralModuleTests.test_unknown_socket_family_reprws}}V^^V-?-?@
[[]V11==DDFG!K
$//;;AAC


	]]%L	,QXX~6QVV\2MM!''Ar7+
	,	,	,s
AD++D4sendfileztest needs os.sendfile()cGdd}tj5}tjtjtj}tj
||j
tj5|j||ddd|j
t5|j|ddzddd|j
t5|j|dddddddy#1swYxYw#1swYSxYw#1swY*xYw#1swYyxYw)NceZdZdZdZy)<GeneralModuleTests.test__sendfile_use_sendfile.<locals>.Filec||_yr<r{)rZr{s  rrpzEGeneralModuleTests.test__sendfile_use_sendfile.<locals>.File.__init__s	r?c|jSr<rrYs rrzCGeneralModuleTests.test__sendfile_use_sendfile.<locals>.File.filenoswwr?N)rarbrcrprrdr?rFilers

r?rrr\)rosrcurdirO_RDONLYr!r_GiveupOnSendfile_sendfile_use_sendfilerQr)rZrrMr{s    rtest__sendfile_use_sendfilez.GeneralModuleTests.test__sendfile_use_sendfiles		]]_	8BKK0BHHRL""6#;#;<
6++DH5
6""=1
;++DDM:
;""9-
8++DJ7
8	8	8
6
6
;
;
8
8	8	8sTA'EDE;D(E3D4ED%	!E(D1	-E4D=	9EE	c|j|j||j|j||j}t	j|}|j|j|j|j|j||j|j||j|j|yNr)rrr}rrryr!ru)rZr$rstyper{s2s      r_test_socket_filenoz&GeneralModuleTests._test_socket_filenos6*'
XXZ
]]"
%!	
F+%(b)r?ctjtjtj}|j|j|jtjdf|j|tjtjttdrtjtjtj}|j|j|jtjdf|j|tjtjtjrtjtjtj}|j|j|jtjdddf|j|tjtjttdrt
j}|jtj |tjtj"tj}|5	|j||j|tj"tjdddyy#t$$rYwxYw#1swYyxYw)Nrr(rR)rrTrBryr!rrrrrr(rrqrmrJrrKrRPermissionError)rZr$	unix_names   rtest_socket_filenoz%GeneralModuleTests.test_socket_filenosMM&..&*<*<= 	
""A&'  FNNF4F4FG6<(

fnnf.?.?@AOOAGG$
FFM&&*+$$Q8I8IJ%%

foov/A/ABAOOAGG$
FFM((!Q23$$Q9K9KL69%%==?IOOI,,i8

fnnf.@.@AA
AAFF9%,,Q-3-?-?A

A
A&'
A
As02K
4J>/K
>	K
K
	K

K

Kc|jt5tjtjtjddddy#1swYyxYw)Ng@E@rrrrrTrBrYs r test_socket_fileno_rejects_floatz3GeneralModuleTests.test_socket_fileno_rejects_floatsC


y
)	KMM&..&*<*<TJ	K	K	K5AAc|jt5tjtjtjddddy#1swYyxYw)NrrrrYs r&test_socket_fileno_rejects_other_typesz9GeneralModuleTests.test_socket_fileno_rejects_other_typessC


y
)	LMM&..&*<*<UK	L	L	Lrc|jtd5tjtjtjddddy#1swYyxYw)Nnegative file descriptorrZrrrrrTrBrYs r)test_socket_fileno_rejects_invalid_socketz<GeneralModuleTests.test_socket_fileno_rejects_invalid_socketsF

#
#J0J
K	IMM&..&*<*<RH	I	I	I5AAzWindows disallows -1 onlyc|jtd5tjtjtjddddy#1swYyxYw)NrirrrYs r#test_socket_fileno_rejects_negativez6GeneralModuleTests.test_socket_fileno_rejects_negativesF

#
#J0J
K	JMM&..&*<*<SI	J	J	Jrcdd}|jt5}tjtjddd|jjjtj|f|jt5}tjtjtjtjddd|j|jjtj|fy#1swYxYw#1swYLxYw)Ni6'r)rrrrmake_bad_fdrrr+rrTrB)rZWSAENOTSOCKrs   r$test_socket_fileno_requires_valid_fdz7GeneralModuleTests.test_socket_fileno_requires_valid_fds


w
'	:2MM!6!6!89	:

bll((5;;*DE


w
'	02MM"" ,,.
0	0
	


bll((5;;*DE	:	:	0	0s)DAD&D#&D/c2tj5}|jt5t	j|jddd|jt5}t	jtjtj|jddd|jjjtjdddy#1swYxYw#1swYRxYw#1swYyxYwr)tempfileNamedTemporaryFilerrrrrTrBrrr+r)rZafilers   r%test_socket_fileno_requires_socket_fdz8GeneralModuleTests.test_socket_fileno_requires_socket_fds

(
(
*		Ae""7+
5

U\\^4
5""7+
+r

NN&& <<>+
+

R\\//@		A		A
5
5
+
+			A		As;D
%C5D
-AD0<D
5C>	:D
D
	D

Dcddl}ddl}|j|jddd|}|j	|t
jy)NrrwrcH|jxr|jdS)NAF_isupperruCs rrzz<GeneralModuleTests.test_addressfamily_enum.<locals>.<lambda>!))+=!,,u*=r?source)renum
_old_convert_IntEnum_test_simple_enumrrw)rZrrCheckedAddressFamilys    rtest_addressfamily_enumz*GeneralModuleTests.test_addressfamily_enumsE#11ox= 2 
	
3V5I5IJr?cddl}ddl}|j|jddd|}|j	|t
jy)NrrzrcH|jxr|jdS)NSOCK_rrs rrzz9GeneralModuleTests.test_socketkind_enum.<locals>.<lambda>s!))+?!,,w*?r?r)rrrrrrrz)rZrrCheckedSocketKinds    rtest_socketkind_enumz'GeneralModuleTests.test_socketkind_enumsE ..lH?/
	
0&2C2CDr?cddl}ddl}|j|jddd|}|j	|t
jy)NrMsgFlagrcH|jxr|jdS)NMSG_rrs rrzz6GeneralModuleTests.test_msgflag_enum.<locals>.<lambda>s!))+>!,,v*>r?r)rrrIntFlagrrr)rZrrCheckedMsgFlags    rtest_msgflag_enumz$GeneralModuleTests.test_msgflag_enumsA++i>,
	
~v~~>r?cddl}ddl}|j|jddd|}|j	|t
jy)NrAddressInforcH|jxr|jdS)NAI_rrs rrzz:GeneralModuleTests.test_addressinfo_enum.<locals>.<lambda>rr?r)rrrrrrr)rZrrCheckedAddressInfos    rtest_addressinfo_enumz(GeneralModuleTests.test_addressinfo_enumsE!//mX=0 	
163E3EFr?)brarbrcr
skipUnlessrrrrrrrrrrrrrskipIfris_wasirrBrtrrrr r$r'rrr.r9r=r?rErGrWcpython_onlyrfr~rrrrrrrrrrrrrrrrrris_resource_enabledrrrr!r'r+r1r3r=rArIrMrOrRrWrYrr^rarhrjrlrqr~rrrrrrrrrrrrrrdr?rrrFs>X,.CD#E#
+X,.CD
,E
,3"(6T XD*<=>X__W__&EF
>G
>X13HIX335RSTJ:v&?+"X79Z[X79Z[&\\&$X8?A*A*X)9:ACICIX)9:ACGCGXm479B9B:
>>.*FXG2X58:I:IX58: : >X58:<1:<1|X58:M:M0X58:#:#D(:>A7
=,(XD*<=	:>	:XD*<=X)ABLNSN>SN`.B`QX444Y?13
I3
I>.-!"G	7 8,	7
PPX335STUUUX335STIUIAX335STX__S\\W,.HIX__S;<X8:\]
O^=JU
OX335STX8:O:UOX335STX__S\\W,.HIX__S;<X8:\]W^=JUWX335STX#,,'18:U:UU=9 ,2XZ02LM8N8"*A@KLIX__RWW_&ABJCJF
AKE?Gr?rz!SocketCan required for this test.c$eZdZdZej
eedddZdZ	ej
eedddZ
dZdZej
eed	d
dZ
ej
eedd
dZy)BasicCANTestcdtjtjtjyr<)rAF_CANrr rYs rrz!BasicCANTest.testCrucialConstants s



r?CAN_BCM&socket.CAN_BCM required for this test.ctjtjtjtjtj
tjtjtjtjtjtjtjtjtjtjtj tj"tj$tj&tj(tj*tj,tj.tj0yr<)rrCAN_BCM_TX_SETUPCAN_BCM_TX_DELETECAN_BCM_TX_READCAN_BCM_TX_SENDCAN_BCM_RX_SETUPCAN_BCM_RX_DELETECAN_BCM_RX_READCAN_BCM_TX_STATUSCAN_BCM_TX_EXPIREDCAN_BCM_RX_STATUSCAN_BCM_RX_TIMEOUTCAN_BCM_RX_CHANGEDCAN_BCM_SETTIMERCAN_BCM_STARTTIMERCAN_BCM_TX_COUNTEVTCAN_BCM_TX_ANNOUNCECAN_BCM_TX_CP_CAN_IDCAN_BCM_RX_FILTER_IDCAN_BCM_RX_CHECK_DLCCAN_BCM_RX_NO_AUTOTIMERCAN_BCM_RX_ANNOUNCE_RESUMECAN_BCM_TX_RESET_MULTI_IDXCAN_BCM_RX_RTR_FRAMErYs rtestBCMConstantszBasicCANTest.testBCMConstants%s		      !!  !!!!	!!""""######&&))))##r?ctjtjtjtj5}	dddy#1swYyxYwr<rrrr rs  rtestCreateSocketzBasicCANTest.testCreateSocketE8
]]6==&//6>>
J	a			A

Actjtjtjtj5}	dddy#1swYyxYwr<)rrr(rrs  rtestCreateBCMSocketz BasicCANTest.testCreateBCMSocketIs=]]6==&*;*;V^^
L	PQ			rctjtjtjtj5}d}|j	||j|j
|dddy#1swYyxYw)N)r)rrrr rrr)rZr$addresss   rtestBindAnyzBasicCANTest.testBindAnyOs[
]]6==&//6>>
J	7aG
FF7OQ]]_g6	7	7	7s4A??Bctjtjtjtj5}|j	t
d|jddddy#1swYyxYw)Ninterface name too long)xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx)rrrr rrrrs  rtestTooLongInterfaceNamez%BasicCANTest.testTooLongInterfaceNameUsQ
]]6==&//6>>
J	:a""7,E#$66=
:	:	:	:s#A..A7CAN_RAW_LOOPBACKz/socket.CAN_RAW_LOOPBACK required for this test.c	tjtjtjtj5}dD]o}|j	tj
tj||j||jtj
tjq	dddy#1swYyxYw)N)rr)	rrrr rSOL_CAN_RAWrrr)rZr$loopbacks   rtestLoopbackzBasicCANTest.testLoopback[s]]6==&//6>>
J	Oa"
OV//1H1H%'  LL!3!3V5L5LMO
O	O	O	Os
A5CC
CAN_RAW_FILTERz-socket.CAN_RAW_FILTER required for this test.c	4d\}}tjd||}tjtjtjtj
5}|j
tjtj||j||jtjtjd|j
tjtjt|dddy#1swYyxYw)N)iz=IIr)rpackrrrr rrrrrr)rZcan_idcan_mask
can_filterr$s     r
testFilterzBasicCANTest.testFilteres([[9

]]6==&//6>>
J	[a
LL++V-B-BJOZLL!3!3V5J5JAN
P
LL++V-B-BIjDYZ		[	[	[s
B'DDN)rarbrcrrrrrrrrrrrrrdr?rrrs
X3AC$C$<X3ACC7:X);<JLOLOX)9:HJ[J[r?rceZdZddZedZedZdZdZdZ	dZ
dZd	Ze
jeed
ddZe
jeed
dd
Zy)CANTestc2tj||yr)rrprs  rrpzCANTest.__init__trr?c	t|}|jdd}tj|j|||S)Nr)rljustrrr)clsr	datacan_dlcs    rbuild_can_framezCANTest.build_can_framews9 d)zz!W%{{3,,fgtDDr?c\	tj|j|\}}}|||d|fSr<)rrr)rframer	rrs     rdissect_can_framezCANTest.dissect_can_frame~s5" &

c.?.? Ghw00r?c|jj|j\}}|j|j||j|d|j
yr)r$rrrcfrrZrrs   r
testSendFramezCANTest.testSendFramesH66??4<<0D"%a$..1r?c||jdd|_|jj|jy)NrsrrrrrYs r_testSendFramezCANTest._testSendFrames+&&t-DE

dggr?c|jj|j\}}|j|j|yr<)r$rrrrrs   rtestSendMaxFramezCANTest.testSendMaxFrames066??4<<0D"%r?c||jdd|_|jj|jy)NrsrrYs r_testSendMaxFramezCANTest._testSendMaxFrames*&&t[9

dggr?c|jj|j\}}|j|j||jj|j\}}|j|j
|yr<)r$rrrcf1cf2rs   rtestSendMultiFrameszCANTest.testSendMultiFramess^66??4<<0D2&66??4<<0D2&r?c|jdd|_|jj|j|jdd|_|jj|jy)NsD3"s"3)rr&rrr'rYs r_testSendMultiFrameszCANTest._testSendMultiFramessS''.AB

dhh''o>

dhhr?rrc&|jj|j\}}|j|j||j|\}}}|j|j||j|j|yr<)rrrrrrr	r)rZrrr	rrs      r_testBCMzCANTest._testBCMss88$$T\\2D"% $ 6 6r :f-D)r?ctjtjtjtj}|j	|j
|j
|jfd|_tgd|_
|j|j|j|_tj}d}d}dx}x}x}}d}	d}
tj|j ||||||||	|

}||jz}|j#|}
|j%|
t'|y)N#)ri"r)rrr(rryr!rrr	bytesrrrrrrrrrr)rZbcmopcoderr
ival1_seconds
ival1_usec
ival2_seconds
ival2_usec
bcm_can_idnframesheaderheader_plus_frame
bytes_sents              rtestBCMzCANTest.testBCMsmmFMM6+<+<fnnM		"T^^%&,-	&&t{{DII>''BCC
C
C]Z
T11!!
#TWW,XX/0
S):%;<r?Nr)rarbrcrpclassmethodrrrr r"r$r(r,rrrrr.r@rdr?rrrqsDEE11
2
&' X3AC*C*X3AC=C=r?rz!CAN ISOTP required for this test.cveZdZfdZdZdZejee	dddZ
dZdZxZ
S)		ISOTPTestc2t||i|d|_yNrrorprrts   rrpzISOTPTest.__init__
$)&) r?ctjtjtjtjyr<)rrrr)r(rYs rrzISOTPTest.testCrucialConstantss"



r?ctjtjtjtj5}	dddy#1swYyxYwr<rrs  rrzISOTPTest.testCreateSocketrrr)z(socket.CAN_ISOTP required for this test.ctjtjtjtj5}	dddy#1swYyxYwr<)rrr(r)rs  rtestCreateISOTPSocketzISOTPTest.testCreateISOTPSocket?]]6==&*;*;V=M=M
N	RS			rc(tjtjtjtj5}|j	t
d5|j
dddddddy#1swYxYw#1swYyxYw)Nr)rrr)rrr(r)rrrrs  rrz"ISOTPTest.testTooLongInterfaceNamesr
]]6==&*;*;V=M=M
N	+RS''1JK
+)*
+	+	+
+
+	+	+s$BA<+B<B	BBc	tjtjtjtj5}|jddf}|j||j
|j|dddy#1swYyxYw#t$rG}|jtjk(r|jd|jznYd}~yd}~wwxYw)Nr0iVr)rrr(r)rrrrrr+ENODEVrrZr$rrs    rtestBindzISOTPTest.testBinds
	v}}f.?.?AQAQR
8VW~~ue3t  $7
8
8
8	ww%,,&

E>>*++	s7ABAB
B
BBB	C)"=C$$C))rarbrcrprrrrrrrKrrQr~rs@rrCrCsK!X5CEE+r?rCz!CAN J1939 required for this test.ceZdZfdZej
eedddZej
eedddZ	dZ
xZS)	J1939Testc2t||i|d|_yrErFrts   rrpzJ1939Test.__init__rGr?r-z(socket.CAN_J1939 required for this test.ctjtjtjtjtj
tjtjtjtjtjtjtjtjtjtjtj tj"tj$tj&tj(tj*tj,tj.tj0yr<)rr-J1939_MAX_UNICAST_ADDRJ1939_IDLE_ADDR
J1939_NO_ADDR
J1939_NO_NAMEJ1939_PGN_REQUESTJ1939_PGN_ADDRESS_CLAIMEDJ1939_PGN_ADDRESS_COMMANDEDJ1939_PGN_PDU1_MAX
J1939_PGN_MAXJ1939_NO_PGNSO_J1939_FILTERSO_J1939_PROMISCSO_J1939_SEND_PRIOSO_J1939_ERRQUEUESCM_J1939_DEST_ADDRSCM_J1939_DEST_NAMESCM_J1939_PRIOSCM_J1939_ERRQUEUE
J1939_NLA_PADJ1939_NLA_BYTES_ACKEDJ1939_EE_INFO_NONEJ1939_EE_INFO_TX_ABORTJ1939_FILTER_MAXrYs rtestJ1939ConstantszJ1939Test.testJ1939Constantss	%%  ((**!!	!!  """"!!$$!!%%r?ctjtjtjtj5}	dddy#1swYyxYwr<)rrr(r-rs  rtestCreateJ1939SocketzJ1939Test.testCreateJ1939Socket!	rLrc.	tjtjtjtj5}|jtj
tjtjf}|j||j|j|dddy#1swYyxYw#t$rG}|jtjk(r|jd|jznYd}~yd}~wwxYwr)rrr(r-rrYr_rXrrrrr+rOrrPs    rrQzJ1939Test.testBind'	s
	v}}f.?.?AQAQR
8VW~~v';';V=P=PRXRfRfft  $7
8
8
8	ww%,,&

E>>*++	s7ACA,B8/C8C=CC	D
=DD)rarbrcrprrrrrmrorQr~rs@rrSrSsl!X5CE E BX5CEEr?rSz#RDS sockets required for this test.ceZdZdZdZdZy)BasicRDSTestcDtjtjyr<)rAF_RDSr1rYs rrz!BasicRDSTest.testCrucialConstants8	s



r?ctjtjtjd5}	dddy#1swYyxYwr)rr1r2rs  rrzBasicRDSTest.testCreateSocket<	s6
]]6==&*?*?
C	q			s	?AcTd}tjtjtjd5}|jtjtj
||jtjtj|dddy#1swYyxYw)Ni@r)rr1r2rr	SO_RCVBUF	SO_SNDBUF)rZrr$s   rtestSocketBufferSizez!BasicRDSTest.testSocketBufferSize@	st
]]6==&*?*?
C	Gq
LL**F,<,<gF
LL**F,<,<gF	G	G	GsABB'N)rarbrcrrryrdr?rrrrr5	sGr?rrceZdZddZfdZdZdZdZdZe	e
jddZe	e
jd	d
ZdZ
dZd
ZdZxZS)RDSTestc2tj||yr)rrprs  rrpzRDSTest.__init__J	rr?cTt|tj|_yr<)ror[rqrevtr6s rr[z
RDSTest.setUpM	s

??$r?c|jj|j\}}|j|j||j|j
|yr<)rUrrrrrrZrrs   rtestSendAndRecvzRDSTest.testSendAndRecvQ	sFYY''5
dD)-r?cd|_|jj|jdt|jfyNrrrrrrrWrYs r_testSendAndRecvzRDSTest._testSendAndRecvV	*			1tTYY&78r?c2|jj|jtj\}}|j|j||jj|j\}}|j|j|yr<)rUrrrMSG_PEEKrrrs   rtestPeekzRDSTest.testPeekZ	shYY''fooF
dD)YY''5
dD)r?cd|_|jj|jdt|jfyrrrYs r	_testPeekzRDSTest._testPeek`	rr?recvmsgc|jj|j\}}}}|j|j|yr<)rUrrrr)rZrancdata	msg_flagsrs     rtestSendAndRecvMsgzRDSTest.testSendAndRecvMsgd	s7)-):):4<<)H&gy$D)r?sendmsgcd|_|jj|jgddt|jfy)Ns<hello hello hello hello hello hello hello hello hello hello rdr)rrrrrWrYs r_testSendAndRecvMsgzRDSTest._testSendAndRecvMsgi	s0"	$))b!dDII->?r?c|jj|j\}}|j|j||jj|j\}}|j|j
|yr<)rUrrrdata1data2rs   rtestSendAndRecvMultizRDSTest.testSendAndRecvMultin	sbYY''5
dT*YY''5
dT*r?cd|_|jj|jdt|jfd|_|jj|j
dt|jfy)Nsbaconrsegg)rrrrrWrrYs r_testSendAndRecvMultizRDSTest._testSendAndRecvMultiu	sR


Adii'89


Adii'89r?ctj|jgggd\}}}|j|j||jj|j\}}|j|j|y)Ng@)selectrUrrrrr)rZrr6rrrs      r
testSelectzRDSTest.testSelect|	sd--RS91a

dii#YY''5
dD)r?cd|_|jj|jdt|jfy)NsselectrrrYs r_testSelectzRDSTest._testSelect	s*			1tTYY&78r?r)rarbrcrpr[rrrrrrrrrrrrr~rs@rr{r{G	svD%.
9*9&--+*,*&--+@,@+:*9r?r{z'QIPCRTR sockets required for this test.c0eZdZdZdZdZdZdZdZy)BasicQIPCRTRTestc$tjyr<)rr9rYs rrz%BasicQIPCRTRTest.testCrucialConstants	sr?ctjtjtj5}	dddy#1swYyxYwr<)rr9r(rs  rrz!BasicQIPCRTRTest.testCreateSocket	s6
]]6,,f.?.?
@	A				>Actjtjtj5}|j|j	dddddy#1swYyxYwNrr)rr9r(rrrs  rtestUnboundzBasicQIPCRTRTest.testUnbound	sN
]]6,,f.?.?
@	4AQ]]_Q/3	4	4	4s$A  A)c(tjtjtj5}tj||jd|j
|jdddddy#1swYyxYw)NrrZr)rr9r(rrVrassertNotEqualrs  rtestBindSockzBasicQIPCRTRTest.testBindSock	si
]]6,,f.?.?
@	7A##AAMMOA,>?

 2A6	7	7	7sABBctjtjtj5}|jtt
j|ddddy#1swYyxYw)Nr[rZ)rr9r(rrrrVrs  rtestInvalidBindSockz$BasicQIPCRTRTest.testInvalidBindSock	sT
]]6,,f.?.?
@	LAg}'>'>K	L	L	Ls(A$$A-ctjtjtj5}|jd|j	|jdddddy#1swYyxYw)N){rrr)rr9r(rrrrs  rtestAutoBindSockz!BasicQIPCRTRTest.testAutoBindSock	sZ
]]6,,f.?.?
@	7A
IIj!

 2A6	7	7	7s5A11A:N)	rarbrcrrrrrrrdr?rrr	s!47
L7r?rc$eZdZdZdZdZdZy)BasicVSOCKTestc$tjyr<)rrrYs rrz#BasicVSOCKTest.testCrucialConstants	s	r?ctjtjtjtjtj
tjtjtjyr<)	rSO_VM_SOCKETS_BUFFER_SIZESO_VM_SOCKETS_BUFFER_MIN_SIZESO_VM_SOCKETS_BUFFER_MAX_SIZErVMADDR_PORT_ANYVMADDR_CID_HOSTVM_SOCKETS_INVALID_VERSIONr
rYs rtestVSOCKConstantsz!BasicVSOCKTest.testVSOCKConstants	sJ((,,,,))--r?ctjtjtj5}	dddy#1swYyxYwr<)rrrBrs  rrzBasicVSOCKTest.testCreateSocket	s4
]]6??F,>,>
?	1			rcXtjtjtj5}|jtjtj}|jtjtj
}|jtjtj}|jtjtj|dz|jtjtj
|dz|jtjtj|dz|j|dz|jtjtj|j|dz|jtjtj
|j|dz|jtjtjdddy#1swYyxYwNr)	rrrBrrrrrr)rZr$orig_maxrDorig_mins     rryz#BasicVSOCKTest.testSocketBufferSize	s
]]6??F,>,>
?	D1||FOO$*$H$HJH<< & @ @BD||FOO$*$H$HJH
LL==x!|
M
LL994!8
E
LL==x!|
M
X\\\&//#AAC
D
TAX\\&//#==?
@
X\\\&//#AAC
D+	D	D	DsG$H  H)N)rarbrcrrrryrdr?rrr	s
.Dr?rz)Bluetooth sockets required for this test.c6eZdZdZdZejejdk(ddZ	ejejdk(ddZ
ejejdk(xsejjdd	d
Zy)BasicBluetoothTestcltjtjtjtjt
jdk7ratjtjtjt
jjdstjyyy)Nrrh)r
BDADDR_ANYBDADDR_LOCALrArCrBrtBTPROTO_HCISOL_HCI
BTPROTO_L2CAPruBTPROTO_SCOrYs rtestBluetoothConstantsz)BasicBluetoothTest.testBluetoothConstants	sp<<7"NN  <<**95""6#r?ctjtjtjtj5}	dddy#1swYyxYwr<)rrArBrCrs  rtestCreateRfcommSocketz)BasicBluetoothTest.testCreateRfcommSocket	s?
]]6..0B0BFDYDY
Z	^_			rrz&windows does not support L2CAP socketsctjtjtjtj5}	dddy#1swYyxYwr<)rrAr2rrs  rtestCreateL2capSocketz(BasicBluetoothTest.testCreateL2capSocket	s?
]]6..0E0EvG[G[
\	`a			rz$windows does not support HCI socketsctjtjtjtj5}	dddy#1swYyxYwr<)rrArrrs  rtestCreateHciSocketz&BasicBluetoothTest.testCreateHciSocket	s=
]]6..ASAS
T	XY			rrhz.windows and freebsd do not support SCO socketsctjtjtjtj5}	dddy#1swYyxYwr<)rrAr2rrs  rtestCreateScoSocketz&BasicBluetoothTest.testCreateScoSocket	sA]]6..0E0EvGYGY
Z	^_			rN)
rarbrcrrrrrBrtrrrurrdr?rrr	s#X__S\\W,.VWXX__S\\W,.TUVX__S\\W,R0G0G	0REGGr?rz'Hyper-V sockets required for this test.c6eZdZdZdZdZdZdZdZdZ	y)	BasicHyperVTestcDtjtjtjtjtj
tjtjtjtjtjyr<)rHVSOCKET_CONNECT_TIMEOUTHVSOCKET_CONNECT_TIMEOUT_MAXHVSOCKET_CONNECTED_SUSPENDHVSOCKET_ADDRESS_FLAG_PASSTHRUHV_GUID_ZEROHV_GUID_WILDCARDHV_GUID_BROADCASTHV_GUID_CHILDRENHV_GUID_LOOPBACKHV_GUID_PARENTrYs rtestHyperVConstantsz#BasicHyperVTest.testHyperVConstants	s\''++))--  r?cd}|jt|5tjtjtjdddy#1swYyxYw)Nz\[WinError 10041\])rrrrFrB)rZrs  r-testCreateHyperVSocketWithUnknownProtoFailurez=BasicHyperVTest.testCreateHyperVSocketWithUnknownProtoFailure
sJ(

#
#GX
6	@MM&**F,>,>?	@	@	@s3AAcnd}tjtjtjtj5}|j	t
t
j|5|jtjddddddy#1swYxYw#1swYyxYw)Nz3connect(): AF_HYPERV address must be tuple, not str
rrFrBrGrrreescaperrrZrr$s   r)testCreateHyperVSocketAddrNotTupleFailurez9BasicHyperVTest.testCreateHyperVSocketAddrNotTupleFailure
sH
]]6++V-?-?AWAW
X	/\]''	299X3FG
/		&--.
/	/	/
/
/	/	/s$*B+. BB+B(	$B++B4cpd}tjtjtjtj5}|j	t
t
j|5|jtjfddddddy#1swYxYw#1swYyxYw)N9AF_HYPERV address must be a str tuple (vm_id, service_id)rrs   r0testCreateHyperVSocketAddrNotTupleOf2StrsFailurez@BasicHyperVTest.testCreateHyperVSocketAddrNotTupleOf2StrsFailure
sN
]]6++V-?-?AWAW
X	2\]''	299X3FG
2		6..01
2	2	2
2
2	2	2s$*B,.!B B, B)	%B,,B5cRd}tjtjtjtj5}|j	t
t
j|5|jdddddddy#1swYxYw#1swYyxYw)Nr)rr)	rrFrBrGrrrrrrs   r/testCreateHyperVSocketAddrNotTupleOfStrsFailurez?BasicHyperVTest.testCreateHyperVSocketAddrNotTupleOfStrsFailure
sN
]]6++V-?-?AWAW
X	"\]''	299X3FG
"		&!
"	"	"
"
"	"	"s$*B.BBB	BB&crd}tjtjtjtj5}|j	t
t
j|5|jdtjfddddddy#1swYxYw#1swYyxYw)Nz=connect(): AF_HYPERV address vm_id is not a valid UUID string00
rrFrBrGrrrrrrrs   r1testCreateHyperVSocketAddrVmIdNotValidUUIDFailurezABasicHyperVTest.testCreateHyperVSocketAddrVmIdNotValidUUIDFailure"
sR
]]6++V-?-?AWAW
X	7\]''
BIIh4GH
7		4!4!456
7	7	7
7
7	7	7$*B-."B!B-!B*	&B--B6crd}tjtjtjtj5}|j	t
t
j|5|jtjdfddddddy#1swYxYw#1swYyxYw)NzBconnect(): AF_HYPERV address service_id is not a valid UUID stringrrrs   r6testCreateHyperVSocketAddrServiceIdNotValidUUIDFailurezFBasicHyperVTest.testCreateHyperVSocketAddrServiceIdNotValidUUIDFailure(
sW
]]6++V-?-?AWAW
X	7\]''
BIIh4GH
7		6..56
7	7	7
7
7	7	7rN)
rarbrcrrrrrrrrdr?rrr	s&
@
/2"77r?rceZdZddZdZdZdZdZdZdZ	dZ
d	Zd
ZdZ
dZd
ZdZdZdZdZej*eZej*dZdZdZy)BasicTCPTestc2tj||yrrrprs  rrpzBasicTCPTest.__init__1
$$Tj$Ar?cf|jjd}|j|tyr)rrrrr	s  rtestRecvzBasicTCPTest.testRecv4
s&mm  &c"r?cB|jjtyr<rrrrYs r	_testRecvzBasicTCPTest._testRecv9
C r?c|jjttdz
}|jjd}||z}|j	|tyNr)rrrrr)rZseg1seg2r
s    rtestOverFlowRecvzBasicTCPTest.testOverFlowRecv<
sK}}!!#c(Q,/}}!!$'Tkc"r?cB|jjtyr<rrYs r_testOverFlowRecvzBasicTCPTest._testOverFlowRecvC
rr?cl|jjd\}}|j|tyr)rrrrrZr
rs   rtestRecvFromzBasicTCPTest.testRecvFromF
s*MM**40	Tc"r?cB|jjtyr<rrYs r
_testRecvFromzBasicTCPTest._testRecvFromK
rr?c|jjttdz
\}}|jjd\}}||z}|j	|tyr)rrrrr)rZrrrr
s     rtestOverFlowRecvFromz!BasicTCPTest.testOverFlowRecvFromN
sS]]++CHQJ7
d]]++D1
dTkc"r?cB|jjtyr<rrYs r_testOverFlowRecvFromz"BasicTCPTest._testOverFlowRecvFromU
rr?cvd}	|jjd}|sn||z
}$|j|dy)Nr?rffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff)rrr)rZr
reads   rtestSendAllzBasicTCPTest.testSendAllX
sD==%%d+D4KC	
	
k*r?c>d}|jj|y)Nr)rr)rZ	big_chunks  r_testSendAllzBasicTCPTest._testSendAllb
s	y)r?cb|jj}tj|tjtj
}|j
|j|j|tj|jd}|j|tyr)rrrfromfdrTrBryr!rrrr)rZr{rMr
s    r
testFromFdzBasicTCPTest.testFromFdf
sq
]]
!
!
#}}R1C1CD

#dFMM2iioc"r?cB|jjtyr<rrYs r_testFromFdzBasicTCPTest._testFromFdo
rr?c|jj}|j|j|j	d}|j|tyr)rdupryr!rrr)rZrMr
s   rtestDupzBasicTCPTest.testDupr
sA}}  "

#iioc"r?cB|jjtyr<rrYs r_testDupzBasicTCPTest._testDupy
rr?c|jjd}|j|t|jjyr)rrrrrrr	s  rtestShutdownzBasicTCPTest.testShutdown|
s6mm  &c"	
		r?cx|jjt|jjdyr)rrrrrYs r
_testShutdownzBasicTCPTest._testShutdown
s&C "r?cfddl}|jjt|j	t
|jj|jdz|j	t
|jjd|jdzz|jj
dy)Nrrr)	r^rrrrrQrr`UINT_MAXrZr^s  r_testShutdown_overflowz#BasicTCPTest._testShutdown_overflow
sC -)@)@#++a/	1-)@)@y11A56	8"r?cP|jj}|jj}|j|||j	|jj
|j
t|jjd|jjtjtjtj|}|j|j|jd}|j|ty)Nrr)rrrurr_closedrrrr!rrTrBryr)rZrrrMr
s     r
testDetachzBasicTCPTest.testDetach
s%%'MM  "F#

--.'4==#5#5t<

}}V^^V-?-?J

#iioc"r?cB|jjtyr<rrYs r_testDetachzBasicTCPTest._testDetach
rr?Nr)rarbrcrprrrrrr
rrrrrrrrr!r#rrtestShutdown_overflowr'r*r,rdr?rrr/
sB#
!#!#
!#!+*#!#!#1G00>### !r?rc8eZdZd	dZdZdZdZdZdZdZ	y)
BasicUDPTestc2tj||yr)rrprs  rrpzBasicUDPTest.__init__
rr?c|jjtt}|j	|tyr<rUrrrrr	s  rtestSendtoAndRecvzBasicUDPTest.testSendtoAndRecv
(iinnSX&c"r?cf|jjtdt|jfyrrrrrrWrYs r_testSendtoAndRecvzBasicUDPTest._testSendtoAndRecv
Qtyy 12r?c|jjtt\}}|j	|tyr<rUrrrrrs   rrzBasicUDPTest.testRecvFrom
.II&&s3x0	Tc"r?cf|jjtdt|jfyrr6rYs rr
zBasicUDPTest._testRecvFrom
r8r?cZ|jt|jjdyNrZrrrUrrYs rtestRecvFromNegativez!BasicUDPTest.testRecvFromNegative
*dii&8&8"=r?cf|jjtdt|jfyrr6rYs r_testRecvFromNegativez"BasicUDPTest._testRecvFromNegative
r8r?Nr
rarbrcrpr3r7rr
r@rCrdr?rr/r/
s&D#
3#
3>3r?r/c8eZdZd	dZdZdZdZdZdZdZ	y)
BasicUDPLITETestc2tj||yr)rrprs  rrpzBasicUDPLITETest.__init__
s!**4J*Gr?c|jjtt}|j	|tyr<r2r	s  rr3z"BasicUDPLITETest.testSendtoAndRecv
r4r?cf|jjtdt|jfyrr6rYs rr7z#BasicUDPLITETest._testSendtoAndRecv
r8r?c|jjtt\}}|j	|tyr<r:rs   rrzBasicUDPLITETest.testRecvFrom
r;r?cf|jjtdt|jfyrr6rYs rr
zBasicUDPLITETest._testRecvFrom
r8r?cZ|jt|jjdyr>r?rYs rr@z%BasicUDPLITETest.testRecvFromNegative
rAr?cf|jjtdt|jfyrr6rYs rrCz&BasicUDPLITETest._testRecvFromNegative
r8r?NrrDrdr?rrFrF
s&H#
3#
3>3r?rFceZdZejZfdZdZdZdZ	dZ
dZdZdZ
d	D]Ze
eeedzZ
dZdZdZdd
ZxZS)SendrecvmsgBasecTtj|_t|yr<)rqr
misc_eventror[r6s rr[zSendrecvmsgBase.setUps#//+

r?c8|jj|Sr<)cli_sockrr	s  rsendToServerzSendrecvmsgBase.sendToServers}}!!#&&r?rdcf|jj||jt|dzSr<)rSrsendmsg_to_server_defaultsrrZrus  rsendmsgToServerzSendrecvmsgBase.sendmsgToServers8
%t}}$$T44SYZ@@C	Cr?cN|j|g|}|j||Sr<)rregisterRecvmsgResult)rZrMrruresults     r	doRecvmsgzSendrecvmsgBase.doRecvmsgs,g--""6*
r?cyr<rdrZr[s  rrZz%SendrecvmsgBase.registerRecvmsgResult%s	
r?c(|j||yr<rrZaddr1addr2s   rcheckRecvmsgAddressz#SendrecvmsgBase.checkRecvmsgAddress+s	
&r?r)
MSG_CTRUNCMSG_OOBcn|j}|j}|r||jz}||jz}n |||jz}||jz}||z}||z}||z}||z}||z|z}|rt	dj|||z|z}	|j
||	z||	zy)Nz6contradictory set, unset requirements for flags {0:#x})msg_flags_common_setmsg_flags_common_unsetmsg_flags_eor_indicatormsg_flags_non_eor_indicator	Exceptionrr)
rZreorcheckset
checkunsetignore
defaultsetdefaultunsetinbothrUs
          r
checkFlagszSendrecvmsgBase.checkFlags@s8..
22$666JD<<<L
_$:::JD888L	zk!
	!	Jl"
J&&0%%+VF^5
5:%&0x$7r?)Nrrr)rarbrcrLOOPBACK_TIMEOUTfail_timeoutr[rTrVrXr\rZrdrirrrrhrjrkrtr~rs@rrOrOs
++L'"$C
');'&$"::; #$48r?rOceZdZdZy)RecvmsgIntoMixinct|}|j|gg|}|j||j|dd|j	|d|t|d|df|ddzSr)rrecvmsg_intorZassertGreaterEqualassertLessEqualr4)rZrMrrubufr[s      rr\zRecvmsgIntoMixin.doRecvmsgzs~ """C5040""6*q	1-VAY0c*6!9o&(6!":55r?N)rarbrcr\rdr?rrxrxws6r?rxc(eZdZefdZxZS)SendrecvmsgDgramFlagsBasec:t|tjzSr<)rorkr	MSG_TRUNCr6s rrkz5SendrecvmsgDgramFlagsBase.msg_flags_non_eor_indicatorsw2V5E5EEEr?)rarbrcpropertyrkr~rs@rrrsFFr?rc(eZdZefdZxZS)SendrecvmsgSCTPFlagsBasec:t|tjzSr<)rorjrMSG_EORr6s rrjz0SendrecvmsgSCTPFlagsBase.msg_flags_eor_indicatorsw.??r?)rarbrcrrjr~rs@rrrs@@r?rcBeZdZedZedZedZdZy)SendrecvmsgConnectionlessBasec|jSr<)rUrYs r	serv_sockz'SendrecvmsgConnectionlessBase.serv_socksyyr?c|jSr<)rrYs rrSz&SendrecvmsgConnectionlessBase.cli_socksxxr?c"ggd|jfSr)r2rYs rrVz8SendrecvmsgConnectionlessBase.sendmsg_to_server_defaultssB4>>**r?cN|jj||jSr<)rSrr2r	s  rrTz*SendrecvmsgConnectionlessBase.sendToServers}}##C88r?N)rarbrcrrrSrVrTrdr?rrrsC
++9r?rc2eZdZedZedZdZy)SendrecvmsgConnectedBasec|jSr<)rrYs rrz"SendrecvmsgConnectedBase.serv_socks}}r?c|jSr<)rrYs rrSz!SendrecvmsgConnectedBase.cli_socks~~r?cyr<rdras   rrdz,SendrecvmsgConnectedBase.checkRecvmsgAddress	
r?N)rarbrcrrrSrdrdr?rrrs/
r?rceZdZfdZxZS)SendrecvmsgServerTimeoutBaseclt||jj|jyr<)ror[rrrvr6s rr[z"SendrecvmsgServerTimeoutBase.setUps$

!!$"3"34r?r7rs@rrrs
55r?rceZdZdZdZdZdZdZdZdZ	dZ
d	Zd
ZdZ
dZd
ZdZeeddZej(dZdZdZdZdZy)SendmsgTestsc||j|jjtttyr<rrrrrrYs rtestSendmsgzSendmsgTests.testSendmsg%,,SX6<r?cj|j|jtgttyr<rrXrrrYs r_testSendmsgzSendmsgTests._testSendmsgs#--se4c#h?r?c||j|jjtttyr<rrYs rtestSendmsgDataGeneratorz%SendmsgTests.testSendmsgDataGeneratorrr?cx|j|jdtfDtty)Nc3 K|]}|ywr<rdrs  rrz9SendmsgTests._testSendmsgDataGenerator.<locals>.<genexpr>s.@Qq.@rrrYs r_testSendmsgDataGeneratorz&SendmsgTests._testSendmsgDataGenerators,--.@3%.@AS	#r?c||j|jjtttyr<rrYs rtestSendmsgAncillaryGeneratorz*SendmsgTests.testSendmsgAncillaryGeneratorrr?cz|j|jtgddDtty)Nc3 K|]}|ywr<rdrs  rrz>SendmsgTests._testSendmsgAncillaryGenerator.<locals>.<genexpr>s_Aa_rrdrrYs r_testSendmsgAncillaryGeneratorz+SendmsgTests._testSendmsgAncillaryGenerators,--se__ES	#r?c||j|jjtttyr<rrYs rtestSendmsgArrayzSendmsgTests.testSendmsgArrayrr?c|j|jtjdtgt	ty)NB)rrXarrayrrrYs r_testSendmsgArrayzSendmsgTests._testSendmsgArrays2--u{{3/D.EFS	#r?c||j|jjtttyr<rrYs rtestSendmsgGatherzSendmsgTests.testSendmsgGatherrr?c|j|jtddtddgttyNrrrYs r_testSendmsgGatherzSendmsgTests._testSendmsgGathers2--s2AwAB.@A3s8Lr?cZ|j|jjddyNr\donerrrrYs rtestSendmsgBadArgszSendmsgTests.testSendmsgBadArgs!,,T2G<r?c	|jt|jj|jt|jd|jt|jt|jt|jtg|jt|jttg|jt|jtgt|jt|jtggt|jt|jtggdt|jdy)Nsnot in an iterablerr)rrrSrrXobjectrrTrYs r_testSendmsgBadArgsz SendmsgTests._testSendmsgBadArgss)T]]%:%:;)T%9%9/	1)T%9%9 (	$)T%9%9!8*	&)T%9%9/	+)T%9%9%	+)T%9%9%VX	/)T%9%9%Q	2'"r?cZ|j|jjddyrrrYs rtestSendmsgBadCmsgzSendmsgTests.testSendmsgBadCmsgrr?c	X|jt|jtgt	g|jt|jtgt	ddfg|jt|jtgdt	dfg|jt|jtgddt	fg|jt|jtgdg|jt|jtgdg|jdy)Nrdata)rr)rrrr`rrrrXrrrTrYs r_testSendmsgBadCmsgz SendmsgTests._testSendmsgBadCmsgs)T%9%9%&(	-)T%9%9%68Q"8!9	;)T%9%9%1fh"8!9	;)T%9%9%1a"2!3	5)T%9%9%&	+)T%9%9%"5!6	8'"r?
CMSG_SPACEcZ|j|jjddyrrrYs rtestSendmsgBadMultiCmsgz$SendmsgTests.testSendmsgBadMultiCmsgs#	
,,T2G<r?c|jt|jtggd|jt|jtgdt	g|jdy)Nrrr?rrrYs r_testSendmsgBadMultiCmsgz%SendmsgTests._testSendmsgBadMultiCmsgsU)T%9%9%	.)T%9%9%+vx!8	:'"r?cZ|j|jjddyrrrYs rtestSendmsgExcessCmsgRejectz(SendmsgTests.testSendmsgExcessCmsgReject%s#	
,,T2G<r?cttds\|jt5}|j	t
gddgddd|j
jj|jdy#1swY@xYw)Nrrr)
rrrrrXrassertIsNonerr+rTrZrs  r_testSendmsgExcessCmsgRejectz)SendmsgTests._testSendmsgExcessCmsgReject*srv|,""7+
Hr$$cU[+,FG
Hbll001'"
H
HsA??Bcyr<rdrYs rtestSendmsgAfterClosez"SendmsgTests.testSendmsgAfterClose2sr?c|jj|jt|jt
gyr<)rSr!rrrXrrYs r_testSendmsgAfterClosez#SendmsgTests._testSendmsgAfterClose6s,

'4#7#7#?r?N)rarbrcrrrrrrrrrrrrrrrrrr~rrrrrrdr?rrrs=@=#=#=#=M=#$=
#&,'=(=
((#)#=
#
@r?rc~eZdZdZdZdZdZeejdvddZ
e
jdZy	)
SendmsgStreamTestsc||j|jjtttyr<rrYs rtestSendmsgExplicitNoneAddrz.SendmsgStreamTests.testSendmsgExplicitNoneAddr?rr?cp|j|jtggddttyrrrYs r_testSendmsgExplicitNoneAddrz/SendmsgStreamTests._testSendmsgExplicitNoneAddrCs)--seRDA3s8Lr?c|j|jjdd|j|jj|jyNraaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaarLrrrrrQrrvrYs rtestSendmsgTimeoutz%SendmsgStreamTests.testSendmsgTimeoutFsE,,S18<,,T5F5F,GHr?cT	|jjd		|jdg#t$rYn3t
$r(}|jtjk7rYd}~nd}~wwxYw|jjy#|jjwxYw)NQ?r)
rSrrXrrrr+ENOMEMrQrrZrs  r_testSendmsgTimeoutz&SendmsgStreamTests._testSendmsgTimeoutKs	"MM$$T*
5(((4

99,-

OO!DOO!s6B2	A-BA-A(#B(A--BB'>rkz<MSG_DONTWAIT not known to work on this platform when sendingc|j|jjdd|j|jj|jyrrrYs rtestSendmsgDontWaitz&SendmsgStreamTests.testSendmsgDontWaitbsG
	
,,S18<,,T5F5F,GHr?c	|jt5}	|jdggtj##1swYnxYw|jjjtjtjtjf|jjy#|jjwxYwNr)
rrrXrMSG_DONTWAITrrr+EAGAINEWOULDBLOCKrrQrrs  r_testSendmsgDontWaitz'SendmsgStreamTests._testSendmsgDontWaitjs		"""7+
Nr(((R9L9LM
N
N

MM",,,, <<):):ELLI
K
OO!DOO!sB6%<AAB66CN)
rarbrcrrrrrrBrtrr~rrdr?rrr;s]=MI
".cll)3 !I!I
$$
"%
"r?rceZdZdZdZy)SendmsgConnectionlessTestscyr<rdrYs rtestSendmsgNoDestAddrz0SendmsgConnectionlessTests.testSendmsgNoDestAddr}rr?c|jt|jjtg|jt|jjtggddyr)rrrSrrrYs r_testSendmsgNoDestAddrz1SendmsgConnectionlessTests._testSendmsgNoDestAddrsJ'4==#8#8%	!'4==#8#8%Q	.r?N)rarbrcrrrdr?rrrxs

.r?rceZdZdZdZdZdZdZdZdZ	dZ
d	Zd
ZdZ
dZd
ZdZdZdZeeddZej,dZeej(ddZej,dZy)RecvmsgGenericTestsc|j|jtt\}}}}|j	|t|j||j|j	|g|j|dyNTrmr\rrrrrdrrtrZr
rrrs     rtestRecvmsgzRecvmsgGenericTests.testRecvmsgsg$(NN4>>3s8$L!WeTc"  t}}5"%4(r?c.|jtyr<rTrrYs r_testRecvmsgz RecvmsgGenericTests._testRecvmsg#r?c|j|jttdd\}}}}|j	|t|j||j|j	|g|j|dy)NrTrrrs     rtestRecvmsgExplicitDefaultsz/RecvmsgGenericTests.testRecvmsgExplicitDefaultsso$(NN4>>36s8Q%C!WeTc"  t}}5"%4(r?c.|jtyr<rrYs r_testRecvmsgExplicitDefaultsz0RecvmsgGenericTests._testRecvmsgExplicitDefaultsrr?c|j|jttdz\}}}}|j	|t|j||j|j	|g|j|dy)Nr`Trrrs     rtestRecvmsgShorterz&RecvmsgGenericTests.testRecvmsgShorterso$(NN4>>36s8b=%B!WeTc"  t}}5"%4(r?c.|jtyr<rrYs r_testRecvmsgShorterz'RecvmsgGenericTests._testRecvmsgShorterrr?c|j|jttdz
\}}}}|j	|tdd|j||j|j	|g|j|dy)NrFrrrs     rtestRecvmsgTruncz$RecvmsgGenericTests.testRecvmsgTruncsu$(NN4>>36s8a<%A!WeTc#2h'  t}}5"%5)r?c.|jtyr<rrYs r_testRecvmsgTruncz%RecvmsgGenericTests._testRecvmsgTruncrr?c|j|jttd\}}}}|j	|t|j||j|j	|g|j|dy)NrTrrrs     rtestRecvmsgShortAncillaryBufz0RecvmsgGenericTests.testRecvmsgShortAncillaryBufsm$(NN4>>36s8Q%@!WeTc"  t}}5"%4(r?c.|jtyr<rrYs r_testRecvmsgShortAncillaryBufz1RecvmsgGenericTests._testRecvmsgShortAncillaryBufrr?c|j|jttd\}}}}|j	|t|j||j|j	|g|j|dy)N(Trrrs     rtestRecvmsgLongAncillaryBufz/RecvmsgGenericTests.testRecvmsgLongAncillaryBufsm$(NN4>>36s8U%D!WeTc"  t}}5"%4(r?c.|jtyr<rrYs r_testRecvmsgLongAncillaryBufz0RecvmsgGenericTests._testRecvmsgLongAncillaryBufrr?c|jj|jt|j|jdyr)rr!rrr\rYs rtestRecvmsgAfterClosez)RecvmsgGenericTests.testRecvmsgAfterCloses.'4>>4>>4Hr?cyr<rdrYs r_testRecvmsgAfterClosez*RecvmsgGenericTests._testRecvmsgAfterCloser'r?c 	|jjd|jt|j|jtt|jjy#|jjwxYw)Nr)	rrrrr\rrrQrrYs rtestRecvmsgTimeoutz&RecvmsgGenericTests.testRecvmsgTimeouts`	"NN%%d+l"nndnnc#h
H
OO!DOO!sAA11B
cn|j|jj|jyNr)rrQrrvrYs r_testRecvmsgTimeoutz'RecvmsgGenericTests._testRecvmsgTimeouts&,,T5F5F,GHr?rc	|j|jttdz
dtj
\}}}}|j
|tdd|j||j|j
|g|j|dttdd|j|jttdtj
\}}}}|j
|t|j||j|j
|g|j|d|j|jtt\}}}}|j
|t|j||j|j
|g|j|dy)	NrrrFrrmrpTr)r\rrrrrrrdrrtrrs     rtestRecvmsgPeekz#RecvmsgGenericTests.testRecvmsgPeekss%)NN4>>36s8a<39??%D!WeT	
c#2h'  t}}5"%
	
5&v{A>		@%)NN4>>36s8Q39??%D!WeT	
c"  t}}5"%4(%)NN4>>3s8$L!WeTc"  t}}5"%4(r?c.|jtyr<rrYs r_testRecvmsgPeekz$RecvmsgGenericTests._testRecvmsgPeek
s#r?rcX|jj|j|j|jt	t
\}}}}|j
|t
|j||j|j
|g|j|dyr)
rrrvr\rrrrdrrtrs     rtestRecvmsgFromSendmsgz*RecvmsgGenericTests.testRecvmsgFromSendmsg
s	
!!$"3"34$(NN4>>3s8$L!WeTc"  t}}5"%4(r?c|j|jtddtddgttyrrrYs r_testRecvmsgFromSendmsgz+RecvmsgGenericTests._testRecvmsgFromSendmsg
s2--s2AwAB.@A3s8Lr?N)rarbrcrrrrrrr	rr
rrrrrrrrrr r~r"r$r&rdr?rrrs)))*))I

"I&*% )& )D  !&--+),)''M(Mr?rc$eZdZdZdZdZdZy)RecvmsgGenericStreamTestsc|j|jd\}}}}|j|d|j||j|j|g|j|dy)Nrr?r)r\rrrdrrtrs     rtestRecvmsgEOFz(RecvmsgGenericStreamTests.testRecvmsgEOF#
sc$(NN4>>4$H!WeTc"  t}}5"%4(r?c8|jjyr<)rSr!rYs r_testRecvmsgEOFz)RecvmsgGenericStreamTests._testRecvmsgEOF+
s

r?c|j|jttdz
\}}}}|j	||j
|j
|g|j|d|j|jd\}}}}|j	||j
|j
|g|j|d||z}|j
|ty)NrFrrT)r\rrrrdrrrt)rZrrrrrr
s       rtestRecvmsgOverflowz-RecvmsgGenericStreamTests.testRecvmsgOverflow.
s%)^^DNN47HqL&B"gud  t}}5"%5)%)^^DNND%I"gud  t}}5"%4(Tkc"r?c.|jtyr<rrYs r_testRecvmsgOverflowz.RecvmsgGenericStreamTests._testRecvmsgOverflow>
rr?N)rarbrcr*r,r.r0rdr?rr(r(
s)# r?r(ceZdZdZdZy)RecvmsgTestsc|jt|jj|jt|jjddd|jt|jjttdd|jt|jjtdgdd|jt|jjtdd|jt|jjtttd|jt|jjttdt|jjttdd\}}}}|j|t|j||j|j|g|j|dy)NrZrrTr)
rrrrrrrrrrrdrrtrs     rtestRecvmsgBadArgszRecvmsgTests.testRecvmsgBadArgsE
sq)T^^%;%;<*dnn&<&<a	$*dnn&<&<c(B	+)T^^%;%;$R=/1a	1)T^^%;%; (Aq	*)T^^%;%;c(FHa	1)T^^%;%;c(Avx	1%)NN$:$:3s8Q$J!WeTc"  t}}5"%4(r?c.|jtyr<rrYs r_testRecvmsgBadArgsz RecvmsgTests._testRecvmsgBadArgs[
rr?N)rarbrcr4r6rdr?rr2r2B
s),r?r2c<eZdZdZdZdZdZdZdZdZ	dZ
y	)
RecvmsgIntoTestscttt}|jt|j
j|jt|j
jttdd|jt|j
j|dd|jt|j
jtgdd|jt|j
jdgdd|jt|j
j|tgdd|jt|j
j|gdd|jt|j
j|gtd|jt|j
j|gdt|j
j
|gdd\}}}}|j|tt|j|tt|j||j|j|g|j|dy)NrsI'm not writablerZTr)
rrrrrrrzrrrrdrrtrZr}nbytesrrrs      rtestRecvmsgIntoBadArgsz'RecvmsgIntoTests.testRecvmsgIntoBadArgsb
sC!)T^^%@%@A)T^^%@%@c(Aq	*)T^^%@%@q!	%)T^^%@%@!8*a	,)T^^%@%@./A	7)T^^%@%@/1a	1*dnn&A&A%Q	()T^^%@%@%1	.)T^^%@%@%FH	.(,~~'B'BC5!Q'O$S*in-  t}}5"%4(r?c.|jtyr<rrYs r_testRecvmsgIntoBadArgsz(RecvmsgIntoTests._testRecvmsgIntoBadArgs~
rr?cttt}|jj	d|fD\}}}}|j|tt|j|tt|j
||j|j|g|j|dy)Nc3 K|]}|ywr<rdrs  rrz<RecvmsgIntoTests.testRecvmsgIntoGenerator.<locals>.<genexpr>
s1QrTr)	rrrrrzrrdrrtr:s      rtestRecvmsgIntoGeneratorz)RecvmsgIntoTests.testRecvmsgIntoGenerator
sC!'+~~'B'B( $S*in-  t}}5"%4(r?c.|jtyr<rrYs r_testRecvmsgIntoGeneratorz*RecvmsgIntoTests._testRecvmsgIntoGenerator
rr?ctjddgttz}|jj	|g\}}}}|j|tt|j|j
t|j||j|j|g|j|dy)NrrTr)
rrrrrzrtobytesrdrrtr:s      rtestRecvmsgIntoArrayz%RecvmsgIntoTests.testRecvmsgIntoArray
skk#sSX~.'+~~'B'BC5'I$S*,  t}}5"%4(r?c.|jtyr<rrYs r_testRecvmsgIntoArrayz&RecvmsgIntoTests._testRecvmsgIntoArray
rr?ctd}td}td}|jj|t|dd|g\}}}}|j	|td|j	|td|j	|td|j	|td	|j
||j|j	|g|j|d
y)Ns----s
0123456789s--------------r	Mary had a little lambsMarys
01 had a 9slittle lamb---Tr)	rrrz
memoryviewrrrdrrt)rZb1b2b3r;rrrs        rtestRecvmsgIntoScatterz'RecvmsgIntoTests.testRecvmsgIntoScatter
s
w

}
%
(
)'+~~'B'B
B!$b)(+$%>!?@Yw/0Y}56Y'89:  t}}5"%4(r?c&|jdy)NrK)rTrYs r_testRecvmsgIntoScatterz(RecvmsgIntoTests._testRecvmsgIntoScatter
s34r?N)rarbrcr<r>rArCrFrHrPrRrdr?rr8r8_
s*)8	))
)5r?r8ceZdZ	ddlZedej
Zee	ddZ
ee	ddZy#e$rdZY(wxYw)CmsgMacroTestsrNiCMSG_LENc|jtjdz
dz}tt	dtt	|dz
|z}|jtjdt
jdjdz|D][}tj|}|j|tjdz
||j||j]|jttjd|jttj||jttjtjy)NrrrPrrZ)socklen_t_limitrrUlistrCr2ritemsizerr|rrQrBmaxsize)rZtoobigrynr=s     rtestCMSG_LENzCmsgMacroTests.testCMSG_LEN
s%%(::Q>eCj!Dv|V)D$EE	
6??1-u{{3/?/H/H1/LM	<A//!$CS6??1#55q9  d&:&:;		<	
-"=	
-&A-#++Fr?rcb|jtjdz
dz}tt	dtt	|dz
|z}tjd}|j|t
jdjdz|D]}tj|}|j|||j|tj||j||tjdz|j||j|}|jttjd|jttj||jttjtjy)NrrWrrPrrZ)rXrrrYrCr2rrZr{rUr|rrQrBr[)rZr\rylastr]r=s      rtestCMSG_SPACEzCmsgMacroTests.testCMSG_SPACE
sL%%(9(9!(<<q@eCj!Dv|V)D$EE  #4S!1!:!:Q!>?	A##A&C##C.##C);<##CV__Q-?)?@  d&:&:;D
		
-):):B?	
-):):FC-):):CKKHr?)rarbrcr^minr`rXrrrr^rardr?rrTrT
sl=j)*;*;<&*%G&G(&,'I(I7%$%s<AArTc
eZdZdZdZdZdZdZdZd5dZ	dZ
d	Zd
ZdZ
eedd
Zej"dZdZdZej,ej0dk(dej,edeeddZej"ej,ej0dk(dej,eddZej,ej0dk(dej,edeeddZej"ej,ej0dk(dej,eddZdZej,ej0dk(ddZdZ dZ!dZ"eeddZ#e#j"dZ$d6d Z%d!Z&d"Z'd#Z(d$Z)d%Z*d&Z+d'Z,d(Z-d)Z.d*Z/d6d+Z0d,Z1d-Z2d.Z3d/Z4d0Z5d1Z6d2Z7d3Z8y4)7
SCMRightsTesticTg}t|D]}tj\}}|jtj
||jtj|t	j|t|j|j||Sr<)rCrmkstempryrrKr!writerencodeappend)rZr]fdsrPr{rNs      rnewFDszSCMRightsTest.newFDs
s|q	A'')HBOOBIIt,OOBHHb)HHRQ)JJrN	
r?ct|D]g\}}tj|dtj|j	tj
|dt
|jiy)Nrr)	enumeraterlseekSEEK_SETrrrrh)rZrjr]r{s    rcheckFDszSCMRightsTest.checkFDs
sVs^	AEArHHRBKK(RWWR.A

@	Ar?c<|j|j|yr<)rycloseRecvmsgFDsr^s  rrZz#SCMRightsTest.registerRecvmsgResults,,f5r?c	>|dD]\}}}|tjk(s|tjk(s/tjd}|j	|dt|t||jzz
|D]}tj|y)NrrP)	rr
SCM_RIGHTSr	frombytesrrZrr!)rZrecvmsg_result
cmsg_level	cmsg_type	cmsg_datarjr{s       rrrzSCMRightsTest.closeRecvmsgFDss1?q0A	!,J	9f///!2!22kk#&

i)II#i.3<<*GHJK!BHHRL!
	!r?c
|j|jtgtjtj
t
jd|j|fgtty)NrP)	rrXrrrrtrrkr)rZr]s  rcreateAndSendFDszSCMRightsTest.createAndSendFDssb	
  ##)#4#4#)#4#4#(;;sDKKN#C#E"F
G
H	r?c|\}}}}|j|t|j||j|j	|dt
j||j|t|jt||tjd}	|D]}
|j|
t|
\}}}
|j|t
j|j|t
j|j|
t|jt|
t zd|	j#|
|jt|	||j%|	y)NTrmrorprPr)rrrdrrtrrerrYr|rrtuplerrtr4
SIZEOF_INTrurp)rZnumfdsr[maxcmsgsignoreflagsr
rrrrjitemrwrxrys              rcheckRecvmsgFDszSCMRightsTest.checkRecvmsgFDss8%+!WeTc"  t}}54F4E4E*		,	
gt,S\84kk#	%D!!$./3,J	9Z):):;Y(9(9:!!)U3S^j8!<MM)$	%	
S6*

cr?c	x|jd|j|jttdy)Nrrrr\rrrrYs rtestFDPassSimplezSCMRightsTest.testFDPassSimple9.Qt~~/23x!@	Ar?c
|j|jtgtjtj
t
jd|jdjfgtty)NrPr)
rrXrrrrtrrkrErrYs r_testFDPassSimplezSCMRightsTest._testFDPassSimple>sh  ####++c4;;q>2::<>?
@

H
	r?c	x|jd|j|jttdy)NrrrrYs rtestMultipleFDPassz SCMRightsTest.testMultipleFDPassGrr?c&|jdyNrr{rYs r_testMultipleFDPassz!SCMRightsTest._testMultipleFDPassLa r?rc|jd|j|jtttjdtzyr)rr\rrrrrrrYs rtestFDPassCMSG_SPACEz"SCMRightsTest.testFDPassCMSG_SPACEOs@	

t~~dnnc#h$//J?A	Br?c&|jdyrrrYs r_testFDPassCMSG_SPACEz#SCMRightsTest._testFDPassCMSG_SPACEVsa r?c|jd|j|jtttjdtzt
jy)Nrrr)	rr\rrrrrUrrerYs rtestFDPassCMSG_LENz SCMRightsTest.testFDPassCMSG_LENZsKQ!^^DNNCH,2OOA
N,KM
*0):):
		<r?c&|jdyrXrrYs r_testFDPassCMSG_LENz!SCMRightsTest._testFDPassCMSG_LENdrr?rzskipping, see issue #12958zskipping, see issue #22397c	||jd|j|jttddy)Nrr)rrrYs rtestFDPassSeparatez SCMRightsTest.testFDPassSeparategs4	
Q!^^DNNCHeL&'		)r?ch|jd\}}|j|jtgtj
tjtjd|gftj
tjtjd|gfgttyNrrP	rkrrXrrrrtrrrZfd0fd1s   r_testFDPassSeparatez!SCMRightsTest._testFDPassSeparateq;;q>S  #&*;*;*0*;*;*/++cC5*A*C+1*;*;*0*;*;*/++cC5*A*C)D
E
H	r?cd}|j||j|jtttjttjt|zzdt
jy)Nr)rr)
rr\rrrrrrrUre)rZnum_fdss  rtestFDPassSeparateMinSpacez(SCMRightsTest.testFDPassSeparateMinSpacesjW!^^DNNCH,2,=,=j,I,2OOJ<P,Q-RS'(V5F5F			Hr?ch|jd\}}|j|jtgtj
tjtjd|gftj
tjtjd|gfgttyrrrs   r_testFDPassSeparateMinSpacez)SCMRightsTest._testFDPassSeparateMinSpacerr?c	|j|g|}|j|t
|y#t$r<}|j|jt|j|g}Yd}~\d}~wwxYwr<)rXrrr+r1rr)rZr
rr;rs     rsendAncillaryIfPossiblez%SCMRightsTest.sendAncillaryIfPossiblesi	1))3%9F
	
S*		1!!!''3/))3%0F	1s1	A62A11A6zsee issue #24725c	|jd|j|jttdt
jy)Nrrr)rr\rrrrrerYs rtestFDPassEmptyzSCMRightsTest.testFDPassEmptys=	
Qt~~/23x!@)/):):		<r?cp|jttjtjdfgyNr?)rrrrrtrYs r_testFDPassEmptyzSCMRightsTest._testFDPassEmptys0$$SF,=,=,2,=,=,/,1+2	3r?c|j|jttd\}}}}|j	|t|j||j|j|dtj|jt|d|D]e\}}}|j	|tj|j	|tj|jt|tgy)NrTrr)r\rrrrrdrrtrrer|rrt
assertLessrrZr
rrrrwrxrys        rtestFDPassPartialIntz"SCMRightsTest.testFDPassPartialInts$(NN4>>36s8U%D!WeTc"  t}}540A0ABS\1-07	8,J	9Z):):;Y(9(9:OOC	NJ7	8r?c	|jttjtjtj
d|jgjddfgy)NrPrZ)rrrrrtrbadfdrErYs r_testFDPassPartialIntz#SCMRightsTest._testFDPassPartialIntsS$$kk#

|,446s;=
>	?r?c	|j|jttd\}}}}|j	|t|j||j|j|dtj|jt|dtjd}|D]|\}}}|j	|tj|j	|tj|j|dt|t||jzz
~|jt|d|j!|y)NrTrrrP)r\rrrrrdrrtrrer|rrrtrurZrp)	rZr
rrrrjrwrxrys	         rtestFDPassPartialIntInMiddlez*SCMRightsTest.testFDPassPartialIntInMiddles#%)NN4>>36s8U%D!WeTc"  t}}540A0ABS\1-kk#07	G,J	9Z):):;Y(9(9:MM)%E	Nc)ns||&CDF
G	G
	
SXq)

cr?c
d|jd\}}|jttjtj
t
jd||jgjddftjtj
t
jd|gfgy)NrrPrZ)	rkrrrrrtrrrErs   r_testFDPassPartialIntInMiddlez+SCMRightsTest._testFDPassPartialIntInMiddles;;q>S$$kk#TZZ0199;CR@Bkk#u%'
(	)r?c|\}}}}|j|t|j||j|j|g|j	|dt
j|y)NTrmrnrp)rrrdrrtrre)rZr[rr
rrrs       rcheckTruncatedHeaderz"SCMRightsTest.checkTruncatedHeadersf%+!WeTc"  t}}5"%4&2C2C*		,r?c|j|j|jttt
jyNrrr\rrrrrerYs rtestCmsgTruncNoBufSizez$SCMRightsTest.testCmsgTruncNoBufSizes8	
!!$..S"J/5.?.?		"	Ar?c&|jdyrXrrYs r_testCmsgTruncNoBufSizez%SCMRightsTest._testCmsgTruncNoBufSizerr?c|j|j|jttdt
jy)NrrrrYs rtestCmsgTrunc0zSCMRightsTest.testCmsgTrunc0s6!!$..S1"M.4.?.?	"	Ar?c&|jdyrXrrYs r_testCmsgTrunc0zSCMRightsTest._testCmsgTrunc0rr?cv|j|j|jttdyrX)rr\rrrrYs rtestCmsgTrunc1zSCMRightsTest.testCmsgTrunc1s%!!$..S1"MNr?c&|jdyrXrrYs r_testCmsgTrunc1zSCMRightsTest._testCmsgTrunc1	rr?c|j|j|jttt
dzyr)rr\rrrrrYs rtestCmsgTrunc2IntzSCMRightsTest.testCmsgTrunc2Ints2	
!!$..S1;a#A	Br?c&|jdyrXrrYs r_testCmsgTrunc2Intz SCMRightsTest._testCmsgTrunc2Intrr?c	|j|j|jtttjddz
yr)rr\rrrrrUrYs rtestCmsgTruncLen0Minus1z%SCMRightsTest.testCmsgTruncLen0Minus1s:!!$..S171Ca1G#I	Jr?c&|jdyrXrrYs r_testCmsgTruncLen0Minus1z&SCMRightsTest._testCmsgTruncLen0Minus1rr?c|j|jtt|\}}}}|j	|t|j||j|j|dtj|dk(r|gk(ry|j	t|d|d\}}	}
|j	|tj|j	|	tj|jt|
||jt|
|tjd}|j|
dt|
t|
|j zz
|j#|y)NTrmrnrrrP)r\rrrrrdrrtrrerrtr{r|rrurZrp)rZancbufmaxdatamindatar
rrrrwrxryrjs            rcheckTruncatedArrayz!SCMRightsTest.checkTruncatedArray s=
%)NN4>>36s8V%E!WeTc"  t}}54&2C2CDa<GrMWq)+21:(
IyV%6%67F$5$56I8S^W5kk#

i!AI#i.3<<"?@B	C

cr?cP|jtjddy)NrrrrrrUrYs rtestCmsgTruncLen0zSCMRightsTest.testCmsgTruncLen08s  (:A Fr?c&|jdyrXrrYs r_testCmsgTruncLen0z SCMRightsTest._testCmsgTruncLen0;rr?cV|jtjddzdy)NrrrrrYs rtestCmsgTruncLen0Plus1z$SCMRightsTest.testCmsgTruncLen0Plus1>s#  (:Q(> Jr?c&|jdyrrrYs r_testCmsgTruncLen0Plus1z%SCMRightsTest._testCmsgTruncLen0Plus1Arr?c`|jtjtty)NrrrrUrrYs rtestCmsgTruncLen1zSCMRightsTest.testCmsgTruncLen1Ds#  
(C)3	!	5r?c&|jdyrrrYs r_testCmsgTruncLen1z SCMRightsTest._testCmsgTruncLen1Hrr?cx|jtjdtzdz
dtzdz
y)NrrrrrYs rtestCmsgTruncLen2Minus1z%SCMRightsTest.testCmsgTruncLen2Minus1Ks5  J(G!(K*+j.A)=	!	?r?c&|jdyrrrYs r_testCmsgTruncLen2Minus1z&SCMRightsTest._testCmsgTruncLen2Minus1Orr?N)rrr)9rarbrcrrkrprZrrr{rrrrrrrrr~rrrrrrBrtrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrdr?rrdrd
s
E
A6
!6A
A
!&,'B(B%%!&!<!X__S\\X-/KLX__S67&,')(8M)##X__S\\X-/KLX__S67	8M$	X__S\\X-/KLX__S67&,'H(8MH ++X__S\\X-/KLX__S67	8M,		+X__S\\X-/AB<C<3
8?&,'($"--	).	),A!A
!O!B!J!0G!K!5!?!r?rdc	eZdZdZdZdZd3dZeedddZ	e	jdZeed	ddd
ZejdZ
eejdeeddd
ZejdZ		d3dZeedddddZejdZeed	dddddZejdZeejdeed	dddddZejdZeejdeed	dddddZejdZd4dZeedddZejdZeedddZejdZeedddZejd Zeeddd!Z e jd"Z!eeddd#Z"e"jd$Z#eeddd%Z$e$jd&Z%d4d'Z&eed	ddddd(Z'e'jd)Z(eed	ddddd*Z)e)jd+Z*eed	ddddd,Z+e+jd-Z,eed	ddddd.Z-e-jd/Z.eed	ddddd0Z/e/jd1Z0y2)5RFC3542AncillaryTestrrZcVi}|D]!\}}}|j||f|||||f<#|Sr<)r)rZrdrwrxrys      rancillaryMappingz%RFC3542AncillaryTest.ancillaryMappingdsJ
07	3,J	9j)4a8)2Az9%&	3r?c|jjtjtjd|j
j
|j|jtt|\}}}}|j|t|j||j|j|dtj||jt|d|j|dt |d\}}	}
|j|tj|j|	tj"|j|
t$|jt|
t&t)j(d}|j+|
|j-|dd|j/|d|y)NrTr}rrP)rrrrr
rQrr\rrrrdrrtrerr~rr4rrrur{r|)rZ
ancbufsizemaxhoprr
rrrrwrxryrs            r
checkHopLimitz"RFC3542AncillaryTest.checkHopLimitnsr
	
!!&"5"5"(":":A	?$(NN4>>36s8Z%I!WeT	
c"  t}}54F4E4E*		,	
Wq)gaj%0+21:(
IyV%8%89F$8$89i/Y4KK	I!a(QqT6*r?r
rc(|jdyNrr)rrYs rtestRecvHopLimitz%RFC3542AncillaryTest.testRecvHopLimits	
e,r?c|j|jj|j|j	t
yrrrQrrvrTrrYs r_testRecvHopLimitz&RFC3542AncillaryTest._testRecvHopLimits6
	
,,T5F5F,GH#r?rcV|jtjty)Nr)rrrrrYs rtestRecvHopLimitCMSG_SPACEz/RFC3542AncillaryTest.testRecvHopLimitCMSG_SPACEs 	
f&7&7
&CDr?c|j|jj|j|j	t
yrrrYs r_testRecvHopLimitCMSG_SPACEz0RFC3542AncillaryTest._testRecvHopLimitCMSG_SPACE4,,T5F5F,GH#r?rc>|jd|jyNr)rr)r	hop_limitrYs rtestSetHopLimitz$RFC3542AncillaryTest.testSetHopLimits
	
eDNNCr?cT|j|jj|j|j	|jtgtjtjtjd|jgfgttyNrrP)
rrQrrvrrXrrrrrrrrYs r_testSetHopLimitz%RFC3542AncillaryTest._testSetHopLimits,,T5F5F,GH  ##)#6#68L8L#(;;sT^^4D#E#G"H
I
H		r?c|jjtjtjd|jjtjtj
d|jj|j|jtt|\}}}}|j|t|j||j|j|dtj||jt|d|j!|}|tjtj"f}	|jt|	t$t'j&d}
|
j)|	|j+|
dd|j-|
dd|tjtj.f}|jt|t$t'j&d}
|
j)||j+|
dd|j-|
d|y)NrTr}rrPrr2)rrrrr
rrQrr\rrrrdrrtrerrrrrur{r|r)rZrrrr
rrrancmaptcdatarhldatas            rcheckTrafficClassAndHopLimitz1RFC3542AncillaryTest.checkTrafficClassAndHopLimits	
!!&"5"5"(":":A	?!!&"5"5"("8"8!	=$(NN4>>36s8Z%I!WeT	
c"  t}}54F4E4E*		,Wq)&&w/,,f.@.@ABVj1KK	F!a(QqT3',,f.B.BCDVj1KK	F!a(QqT6*r?rrc(|jdyr)rrYs rtestRecvTrafficClassAndHopLimitz4RFC3542AncillaryTest.testRecvTrafficClassAndHopLimits	
))U);r?c|j|jj|j|j	t
yrrrYs r _testRecvTrafficClassAndHopLimitz5RFC3542AncillaryTest._testRecvTrafficClassAndHopLimitrr?c\|jtjtdzyNrr)rrrrrYs r)testRecvTrafficClassAndHopLimitCMSG_SPACEz>RFC3542AncillaryTest.testRecvTrafficClassAndHopLimitCMSG_SPACEs*
	
))((4q8	*	:r?c|j|jj|j|j	t
yrrrYs r*_testRecvTrafficClassAndHopLimitCMSG_SPACEz?RFC3542AncillaryTest._testRecvTrafficClassAndHopLimitCMSG_SPACErr?c>|jd|jyrrrrYs rtestSetTrafficClassAndHopLimitz3RFC3542AncillaryTest.testSetTrafficClassAndHopLimits!	
))U15	*	Ar?c|j|jj|j|j	|jtgtjtjtjd|jgftjtjtjd|jgfgttyr	)rrQrrvrrXrrrrr
traffic_classrrrrYs r_testSetTrafficClassAndHopLimitz4RFC3542AncillaryTest._testSetTrafficClassAndHopLimits,,T5F5F,GH  ##)#6#68J8J#(;;sT5G5G4H#I#K#)#6#68L8L#(;;sT^^4D#E#G"H
I

H
	r?c>|jd|jyrrrYs rtestOddCmsgSizez$RFC3542AncillaryTest.testOddCmsgSizes!	
))U15	*	Ar?c|j|jj|j	|j	t
gtjtjtjd|jgjdzftjtjtjd|jgfg}y#t$r}|j|j t"|j	t
gtjtjtjd|jgftjtjtjd|jgfg}|j%|t't
Yd}~yd}~wwxYw)NrrPr)rrQrrvrXrrrrrrrErrrrr+r1rr)rZr;rs   r_testOddCmsgSizez%RFC3542AncillaryTest._testOddCmsgSizes],,T5F5F,GH	/))%%v'9'9++cD$6$6#78@@BWLN%%v';';++cDNN#34678F	/!!!''3/))%%v'9'9++cD$6$6#78:%%v';';++cDNN#34678F
VSX..	/sB&C	G'CGGc|jjtjtjd|j
j
|dn|f}|j|jttg|\}}}}|j|t|j||j|j|g|j|dtj|y)NrrdTr)rrrrr
rQrr\rrrrdrrtre)rZrrrur
rrrs        rcheckHopLimitTruncatedHeaderz1RFC3542AncillaryTest.checkHopLimitTruncatedHeader&s	
!!&"5"5"(":":A	?'rj]$2DNN4>>36s8%D>B%D!WeT	
c"  t}}5"%4&2C2C*		,r?cF|jdtjy)Nrrr$rrerYs rrz+RFC3542AncillaryTest.testCmsgTruncNoBufSize:s%	
))T
7=6G6G	*	Ir?c|j|jj|j|j	t
yrrrYs rrz,RFC3542AncillaryTest._testCmsgTruncNoBufSizeErr?cF|jdtjy)Nrr&r'rYs rtestSingleCmsgTrunc0z)RFC3542AncillaryTest.testSingleCmsgTrunc0Js#	
))Q6<6G6G	*	Ir?c|j|jj|j|j	t
yrrrYs r_testSingleCmsgTrunc0z*RFC3542AncillaryTest._testSingleCmsgTrunc0Qrr?c(|jdy)Nrr)r$rYs rtestSingleCmsgTrunc1z)RFC3542AncillaryTest.testSingleCmsgTrunc1Ys))Q)7r?c|j|jj|j|j	t
yrrrYs r_testSingleCmsgTrunc1z*RFC3542AncillaryTest._testSingleCmsgTrunc1]rr?c6|jdtzyr)r$rrYs rtestSingleCmsgTrunc2Intz,RFC3542AncillaryTest.testSingleCmsgTrunc2Intbs))Q^)Dr?c|j|jj|j|j	t
yrrrYs r_testSingleCmsgTrunc2Intz-RFC3542AncillaryTest._testSingleCmsgTrunc2Intfrr?cT|jtjddz
y)Nrrr)r$rrUrYs rtestSingleCmsgTruncLen0Minus1z2RFC3542AncillaryTest.testSingleCmsgTruncLen0Minus1ks!))V__Q5G!5K)Lr?c|j|jj|j|j	t
yrrrYs r_testSingleCmsgTruncLen0Minus1z3RFC3542AncillaryTest._testSingleCmsgTruncLen0Minus1orr?c|jjtjtjd|j
j
|j|jtttjtdz
\}}}}|j|t|j||j|j|dtj |j#t|d|ri|d\}}}|j|tj|j|tj$|j't|tyy)NrTrr)rrrrr
rQrr\rrrUrrrdrrtrer|rrrs        rtestSingleCmsgTruncInDataz.RFC3542AncillaryTest.testSingleCmsgTruncInDatats
	
!!&"5"5"(":":A	?$(NNNNCHfooj&AA&E%G!WeT	
c"  t}}54&2C2CDS\1-/6qz,J	9Z)<)<=Y(<(<=OOC	NJ7	r?c|j|jj|j|j	t
yrrrYs r_testSingleCmsgTruncInDataz/RFC3542AncillaryTest._testSingleCmsgTruncInDatarr?c|jjtjtjd|jjtjtj
d|jj|j|jtt|\}}}}|j|t|j||j|j|dtj||jt|d|d\}}}	|j|tj|j!|tj"tj$h|jt|	t&t)j(d}
|
j+|	|j-|
dd|j/|
ddy)NrTrrrPr2)rrrrr
rrQrr\rrrrdrrtrerrrrrrur{r|)rZrrr
rrrrwrxryrs           rcheckTruncatedSecondHeaderz/RFC3542AncillaryTest.checkTruncatedSecondHeaders|	
!!&"5"5"(":":A	?!!&"5"5"("8"8!	=$(NN4>>36s8Z%I!WeT	
c"  t}}54&2C2C*		,	
Wq)+21:(
IyV%8%89

i&"4"4f6J6J!KLY4KK	I!a(QqT3'r?ct|jtjttjyr)r>rrrrerYs rtestSecondCmsgTrunc0z)RFC3542AncillaryTest.testSecondCmsgTrunc0s.	
''(9(9*(E4:4E4E	(	Gr?c|j|jj|j|j	t
yrrrYs r_testSecondCmsgTrunc0z*RFC3542AncillaryTest._testSecondCmsgTrunc0rr?cZ|jtjtdzyrXr>rrrrYs rtestSecondCmsgTrunc1z)RFC3542AncillaryTest.testSecondCmsgTrunc1s"	
''(9(9*(E(IJr?c|j|jj|j|j	t
yrrrYs r_testSecondCmsgTrunc1z*RFC3542AncillaryTest._testSecondCmsgTrunc1rr?ch|jtjtdtzzyrrDrYs rtestSecondCmsgTrunc2Intz,RFC3542AncillaryTest.testSecondCmsgTrunc2Ints+	
''(9(9*(E()J)7	8r?c|j|jj|j|j	t
yrrrYs r_testSecondCmsgTrunc2Intz-RFC3542AncillaryTest._testSecondCmsgTrunc2Intrr?c|jtjttjdzdz
yr)r>rrrrUrYs rtestSecondCmsgTruncLen0Minus1z2RFC3542AncillaryTest.testSecondCmsgTruncLen0Minus1s9	
''(9(9*(E(.(:);=>)?	@r?c|j|jj|j|j	t
yrrrYs r_testSecondCmsgTruncLen0Minus1z3RFC3542AncillaryTest._testSecondCmsgTruncLen0Minus1rr?c&|jjtjtjd|jjtjtj
d|jj|j|jtttjttjtzdz
\}}}}|j|t|j||j |j#|dtj$tj&tj(h}|j+d\}}}|j|tj|j-||jt|tt/j.d}	|	j1||j3|	dd|j5|	dd|re|j+d\}}}|j|tj|j-||j7t|t|j|gy)NrTrrrPr2)rrrrr
rrQrr\rrrrrUrrdrrtrerrpopremoverrur{r|r)
rZr
rrr
cmsg_typesrwrxryrs
          rtestSecondCmsgTruncInDataz.RFC3542AncillaryTest.testSecondCmsgTruncInDatas
	
!!&"5"5"(":":A	?!!&"5"5"("8"8!	=$(NNNNCHj)FOOJ,GG!K%M!WeT	
c"  t}}54&2C2CD((&*>*>?
+2;;q>(
IyV%8%89)$Y4KK	I!a(QqT3'/6{{1~,J	9Z)<)<=i(OOC	NJ7"%r?c|j|jj|j|j	t
yrrrYs r_testSecondCmsgTruncInDataz/RFC3542AncillaryTest._testSecondCmsgTruncInDatarr?N)r2rr)1rarbrcrrrrrrrr~rrrrr
rrrrrrrr r"r$rrr*r,r.r0r2r4r6r8r:r<r>r@rBrErGrIrKrMrOrTrVrdr?rrrSsIM+8&-?-@-!!"&,(;_MENE ++,&--+&-?D@,D
  !?B12"+H&-#]4<4<%001&,(;_#]4:4:/::;&--+&,(;_#]4A4,A$//0&--+&,(;_#]4A4,A  /!/*,(&-?I@I''(&-?I@I%%&&-?8@8%%&&-?E@E(()&-?M@M#../&-?8@8***+(@&,(;_#]4G4G%%&&,(;_#]4K4K%%&&,(;_#]4848(()&,(;_#]4@4@#../&,(;_#]4!&4!&F**+r?rceZdZy)SendrecvmsgUDPTestBaseNrarbrcrdr?rrXrX	r?rXrceZdZy)SendmsgUDPTestNrYrdr?rr\r\r?r\rceZdZy)RecvmsgUDPTestNrYrdr?rr_r_r]r?r_rzceZdZy)RecvmsgIntoUDPTestNrYrdr?rrarar]r?raceZdZdZy)SendrecvmsgUDP6TestBasec4|j|dd|ddyr>r`ras   rrdz+SendrecvmsgUDP6TestBase.checkRecvmsgAddress 	
sU3BZ0r?Nrarbrcrdrdr?rrcrcs1r?rcrPrqr(ceZdZy)SendmsgUDP6TestNrYrdr?rrhrh"	r?rhceZdZy)RecvmsgUDP6TestNrYrdr?rrkrk(rir?rkceZdZy)RecvmsgIntoUDP6TestNrYrdr?rrmrm.rir?rmrceZdZy)RecvmsgRFC3542AncillaryUDP6TestNrYrdr?rroro4	r?roceZdZy)#RecvmsgIntoRFC3542AncillaryUDP6TestNrYrdr?rrrrr<s	r?rrceZdZy)SendrecvmsgUDPLITETestBaseNrYrdr?rrtrtFs
	r?rtceZdZy)SendmsgUDPLITETestNrYrdr?rrvrvMrir?rvceZdZy)RecvmsgUDPLITETestNrYrdr?rrxrxSrir?rxceZdZy)RecvmsgIntoUDPLITETestNrYrdr?rrzrzYrir?rzceZdZdZy)SendrecvmsgUDPLITE6TestBasec4|j|dd|ddyr>r`ras   rrdz/SendrecvmsgUDPLITE6TestBase.checkRecvmsgAddressfrer?Nrfrdr?rr|r|`s1r?r|ceZdZy)SendmsgUDPLITE6TestNrYrdr?rrrkrpr?rceZdZy)RecvmsgUDPLITE6TestNrYrdr?rrrsrpr?rceZdZy)RecvmsgIntoUDPLITE6TestNrYrdr?rrr{rpr?rceZdZy)#RecvmsgRFC3542AncillaryUDPLITE6TestNrYrdr?rrrs	r?rceZdZy)'RecvmsgIntoRFC3542AncillaryUDPLITE6TestNrYrdr?rrrs	r?rceZdZy)SendrecvmsgTCPTestBaseNrYrdr?rrrr]r?rceZdZy)SendmsgTCPTestNrYrdr?rrrr]r?rceZdZy)RecvmsgTCPTestNrYrdr?rrrrZr?rceZdZy)RecvmsgIntoTCPTestNrYrdr?rrrrZr?rceZdZy)SendrecvmsgSCTPStreamTestBaseNrYrdr?rrrrZr?rz6IPPROTO_SCTP: [Errno 62] Protocol not supported on AIXrTrBrjceZdZy)SendmsgSCTPStreamTestNrYrdr?rrrrir?rceZdZfdZxZS)RecvmsgSCTPStreamTestc	tt|y#t$r9}|jtj
k7r|j
dYd}~yd}~wwxYwNz4sporadic ENOTCONN (kernel issue?) - see issue #13876)rorr*rr+ENOTCONNrrZrrws  rr*z$RecvmsgSCTPStreamTest.testRecvmsgEOFsL	R'=?	Rww%..(MMPQQ	R	A/AArarbrcr*r~rs@rrrRRr?rceZdZfdZxZS)RecvmsgIntoSCTPStreamTestc	tt|y#t$r9}|jtj
k7r|j
dYd}~yd}~wwxYwr)rorr*rr+rrrs  rr*z(RecvmsgIntoSCTPStreamTest.testRecvmsgEOFsL	R+TAC	Rww%..(MMPQQ	Rrrrs@rrrrr?rceZdZy)SendrecvmsgUnixStreamTestBaseNrYrdr?rrrr]r?rrRceZdZy)SendmsgUnixStreamTestNrYrdr?rrrrZr?rceZdZy)RecvmsgUnixStreamTestNrYrdr?rrrrir?rceZdZy)RecvmsgIntoUnixStreamTestNrYrdr?rrrrir?rrrtceZdZy)RecvmsgSCMRightsStreamTestNrYrdr?rrrrZr?rceZdZy)RecvmsgIntoSCMRightsStreamTestNrYrdr?rrrrir?rcdeZdZfdZej
Zeedr	dZ	dZ
xZSdZ	dZ
xZS)InterruptedTimeoutBasect|tjtjd}|j	tjtj|y)NcddzSrrd)signumrs  rrzz.InterruptedTimeoutBase.setUp.<locals>.<lambda>s
Ar?)ror[rrry)rZorig_alrm_handlerrws  rr[zInterruptedTimeoutBase.setUps>

"MM&..*EG

v~~7HIr?	setitimerg?cLtjtj|yr<)rrITIMER_REALrZsecondss  rsetAlarmzInterruptedTimeoutBase.setAlarmsV//9r?rc.tj|yr<)rrrs  rrzInterruptedTimeoutBase.setAlarmsLL!r?)rarbrcr[rrurLrr
alarm_timerr~rs@rrrs8
J&&G
v{#
	:
	"r?rsiginterruptrrz+Don't have signal.alarm or signal.setitimerceZdZfdZdZdZdZdZdZe	e
jddZe	e
jd	d
ZxZ
S)InterruptedRecvTimeoutTestclt||jj|jyr<)ror[rUrrLr6s rr[z InterruptedRecvTimeoutTest.setUp!s"

		T\\*r?c	|j|j|jt5}||i|ddd|jdy#1swYxYw#|jdwxYwr)rrrrrZrSrurvrs     rcheckInterruptedRecvz/InterruptedRecvTimeoutTest.checkInterruptedRecv%sg	MM$//*""#45
&d%f%
&
MM!
&
&
MM!s!0A!	AA!AA!!A4cP|j|jjdyr)rrUrrYs rtestInterruptedRecvTimeoutz5InterruptedRecvTimeoutTest.testInterruptedRecvTimeout/s!!$))..$7r?cb|j|jjtdyr)rrU	recv_intorrYs rtestInterruptedRecvIntoTimeoutz9InterruptedRecvTimeoutTest.testInterruptedRecvIntoTimeout2s !!$))"5"5yGr?cP|j|jjdyr)rrUrrYs rtestInterruptedRecvfromTimeoutz9InterruptedRecvTimeoutTest.testInterruptedRecvfromTimeout5s!!$))"4"4d;r?cb|j|jjtdyr)rrUrrrYs r"testInterruptedRecvfromIntoTimeoutz=InterruptedRecvTimeoutTest.testInterruptedRecvfromIntoTimeout8s !!$))"9"99T?Kr?rcP|j|jjdyr)rrUrrYs rtestInterruptedRecvmsgTimeoutz8InterruptedRecvTimeoutTest.testInterruptedRecvmsgTimeout;s!!$))"3"3T:r?rzcd|j|jjtdgyr)rrUrzrrYs r!testInterruptedRecvmsgIntoTimeoutz<InterruptedRecvTimeoutTest.testInterruptedRecvmsgIntoTimeout?s#!!$))"8"89T?:KLr?)rarbrcr[rrrrrrrrrr~rs@rrrsc+8H<L&--+;,;&--0M1Mr?rceZdZfdZdZdZejdddZejdddZ	ejdde
ejdd	ZxZ
S)
InterruptedSendTimeoutTestct||j|_|j	|jj
t
j|j}|j|jj\|_}|j	|jj
|j|jj|jy)N)target)ror[r,rryr!rqThread	doConnectstartrUrrrrrL)rZ
cli_threadrrws   rr[z InterruptedSendTimeoutTest.setUpOs

),,-%%T^^<
"ii..0
t

++,!!$,,/r?cN|jj|jyr<)rrr2rYs rrz$InterruptedSendTimeoutTest.doConnect]st~~.r?c	|jt5}	|j|j||i|$#1swYnxYw	|jdy#|jdwxYwr)rrrrrs     rcheckInterruptedSendz/InterruptedSendTimeoutTest.checkInterruptedSend`sm	""#45
*MM$//2$)&)
*
*
*

MM!DMM!sA&=AAA/rr*cP|j|jjdyr)rrrrYs rtestInterruptedSendTimeoutz5InterruptedSendTimeoutTest.testInterruptedSendTimeoutms!!$.."5"5x@r?cf|j|jjd|jyr)rrrr2rYs rtestInterruptedSendtoTimeoutz7InterruptedSendTimeoutTest.testInterruptedSendtoTimeoutqs'	
!!$.."7"7"&..	2r?rcR|j|jjdgyr)rrrrYs rtestInterruptedSendmsgTimeoutz8InterruptedSendTimeoutTest.testInterruptedSendmsgTimeoutzs 	
!!$.."8"88*Er?)rarbrcr[rrrrequires_mac_verrrrrrr~rs@rrrFs0/
Wb!$A%AWb!$2%2Wb!$&--+F,%Fr?rceZdZdZdZy)
TCPCloserTestcX|jj\}}|j|j}t	j|gggd\}}}|j||g|j|j
dd|j|jy)N?rr?)rUrr!rrrr)rZrrsdrrgrs       r	testClosezTCPCloserTest.testClosesYY%%'
d


XX!=="r2s;eSt$S)	



r?c|jjt|jft	j
dyNr)rrrrWrrrYs r
_testClosezTCPCloserTest._testCloses($		*+

3r?N)rarbrcrrrdr?rrrsr?rc>eZdZd
dZdZdZdZdZdZdZ	dZ
y	)BasicSocketPairTestc2tj||yr)r!rprs  rrpzBasicSocketPairTest.__init__s<r?c|j|tjttdr+|j|jtj
n*|j|jtj|j|jtj|j|jdy)NrRr)
rrrrrrRrTr}rBrr\s  r_check_defaultsz#BasicSocketPairTest._check_defaultss~dFMM269%T[[&..9T[[&..9F$6$67Q'r?c:|j|jyr<)rrrYs r
_testDefaultsz!BasicSocketPairTest._testDefaultssTXX&r?c:|j|jyr<)rrUrYs rtestDefaultsz BasicSocketPairTest.testDefaultssTYY'r?cf|jjd}|j|tyr)rUrrrr	s  rrzBasicSocketPairTest.testRecvrr?cB|jjtyr<)rrrrYs rrzBasicSocketPairTest._testRecvs

cr?cB|jjtyr<)rUrrrYs rtestSendzBasicSocketPairTest.testSends		sr?cf|jjd}|j|tyr)rrrrr	s  r	_testSendzBasicSocketPairTest._testSends$hhmmD!c"r?Nr)rarbrcrprrrrrrrrdr?rrrs*=('(##r?rceZdZddZdZdZdZejdZ	ejeZ
eje
eddejdd	d
dZdZd
ZdZdZdZdZdZdZdZy)NonBlockingTCPTestscdtj|_tj	||yr)rqreventrrprs  rrpzNonBlockingTCPTests.__init__s#__&
&&t
&Cr?cx|j|jj||dk7}|j|j|te|du}t	j|tj
tj}|jt|tjz|yy)N)	rrUrgetblockingrF_GETFLr
O_NONBLOCKbool)rZrMrLblockingfd_blockingflags      rassert_sock_timeoutz'NonBlockingTCPTests.assert_sock_timeouts--/9sN))+X6#d?K;;tU]]BMMBDdR]]&:!;;[Ir?c|jjd|j|jd|jjd|j|jd|jjd|j|jd|jjd|j|jd|jjd|j|jd|jjd|j|jdy)NTFrrr)rUrorrrYs rtestSetBlockingz#NonBlockingTCPTests.testSetBlockings		d#  D1		e$  C0		T"  D1		Q  A.		R   B/		Q  A.r?cyr<rdrYs r_testSetBlockingz$NonBlockingTCPTests._testSetBlockingr'r?cddl}|j|jk\r|jd|jjd|j
|jjd|jj|jdz|j|jjy)Nrzneeds UINT_MAX < ULONG_MAXFrr)	r^r%rrrUrorrrr&s  rtestSetBlocking_overflowz,NonBlockingTCPTests.testSetBlocking_overflows	!4!44MM67		e$--/5		i00145$))..01r?rnztest needs socket.SOCK_NONBLOCKrc|jjtjtjtjtj
z|_|j
|jdyr)rUr!rrTrBrnrrYs rtestInitNonBlockingz'NonBlockingTCPTests.testInitNonBlockingsQ
	
		MM&.."("4"4v7K7K"KM	  A.r?cyr<rdrYs r_testInitNonBlockingz(NonBlockingTCPTests._testInitNonBlockingr'r?c(td5|jjd|jj\}}|j	|j
|j
|jdddy#1swYyxYw)Nr)rNrUrrryr!rrrs   rtestInheritFlagsBlockingz,NonBlockingTCPTests.testInheritFlagsBlockingsn&d
+	1II  $))+JD$OODJJ'doo/0		1	1	1sA3BBcZ|jjt|jfyr<rrrrWrYs r_testInheritFlagsBlockingz-NonBlockingTCPTests._testInheritFlagsBlocking
$		*+r?c.d}t|5|jjd|jj\}}|j	|j
|j
|j|dddy#1swYyxYw)Ng4@r)rNrUrrryr!rr)rZdefault_timeoutrrs    rtestInheritFlagsTimeoutz+NonBlockingTCPTests.testInheritFlagsTimeout
sy
%o
6	AII  $))+JD$OODJJ'T__.@		A	A	AsA4BBcZ|jjt|jfyr<rrYs r_testInheritFlagsTimeoutz,NonBlockingTCPTests._testInheritFlagsTimeoutrr?c|jjdtj}|j	t
5|jj
\}}dddtj|z
}|j|d|jjtj|jgggtj\}}}|j|vr|jd|jj
\}}|j|j|j!|j#y#1swYxYw)NFrz'Error trying to do accept after select.)rUror	monotonicrBlockingIOErrorrrrrrrLONG_TIMEOUTrryr!rr)rZ
start_timerrdtrrgrs        r
testAcceptzNonBlockingTCPTests.testAccepts		e$^^%




/	,))+JD$	,
^^


*C 

!==$))b"g>R>RSeS99D II?@YY%%'
d

#$//+,	,	,sEE#c|jj|jjt|j
fyr<)rrrrrrWrYs r_testAcceptzNonBlockingTCPTests._testAccept1s-	

$		*+r?cB|jj\}}|j|j|j	d|jt5|jtt}ddd|jjtj|gggtj\}}}||vr|jd|jtt}|j!|ty#1swYxYw)NFz0Error during select call to non-blocking socket.)rUrryr!rorrrrrrrrrr rr)rZrrr
rrgrs       rrzNonBlockingTCPTests.testRecv8sYY%%'
d

#


/	&))CH%C	&	

!==$R9M9MNeStIIHIiiC!c"	&	&sDDc|jjt|jf|jj|jj
tyr<)rrrrWrrrrrYs rrzNonBlockingTCPTests._testRecvLsA$		*+	

	
r?Nr)rarbrcrprrr	rrr_testSetBlocking_overflowrrrrrequires_linux_versionrrrrrrr#r%rrrdr?rrrsDJ"/(


2
2!5 4 45E FX9:<#W##Aq"-/.</
1,	A,-,,#(r?rceZdZ	dZdZdZdZdZeZ	dZ
eZd dZdZ
d	Zd
ZdZdZd
ZdZdZdZdZdZdZdZdZdZdZdZdZdZdZ dZ!dZ"dZ#dZ$y)!FileObjectClassTestCaserZr	strictNrr7c2tj||yrrrs  rrpz FileObjectClassTestCase.__init__mrr?cntdDcgc]}tjc}\|_|_|_|_tj||jj|j|j|j|j|j|_ycc}w)Nrr;errorsnewline)rCrqrevt1evt2
serv_finishedcli_finishedrr[rr&	read_moderr;r0r1	read_file)rZrPs  rr[zFileObjectClassTestCase.setUpps',QxG1"#IOOG1C	49d0$2C!!$'//NNDLL}}[[ll	0$G1sB2c|jj|jj|j	|jj
d|_tj|yr<)r4rr7r!rclosedrr^rYs rr^z FileObjectClassTestCase.tearDownzsO --.$$T*r?ctj||jj|j|j
|j|j|j|_	y)Nr/)
rrrr&
write_moderr;r0r1
write_filerYs rrz#FileObjectClassTestCase.clientSetUpsM''-..11OOT\\}}[[ll	2$r?c|jj|jj|j	|jj
d|_tj|yr<)r5rr<r!rr9rrrYs rrz&FileObjectClassTestCase.clientTearDownsO../**40r?c|jjd|jjd|j	t
|jjd|j	t5}|jjdddd|jdtjy#1swY/xYw)Nrrz!cannot read from timed out object)
rrr7rrrrrrr)rZctxs  rtestReadAfterTimeoutz,FileObjectClassTestCase.testReadAfterTimeouts	


  #A,(;(;Q?


w
'	#3NN"	#

93s}};MN	#	#s7CC
c|jj|jdd|jj|jjy)Nrr)r<rg	write_msgflushr4rrYs r_testReadAfterTimeoutz-FileObjectClassTestCase._testReadAfterTimeoutsAdnnQq12!r?c|jjt|jdz
}|jjd}||z}|j	||jyr)r7rrread_msgr)rZ	first_seg
second_segr
s    r
testSmallReadz%FileObjectClassTestCase.testSmallReadsVNN''DMM(:1(<=	^^((+
*$dmm,r?c|jj|j|jjyr<r<rgrBrCrYs r_testSmallReadz&FileObjectClassTestCase._testSmallRead(dnn-r?cp|jj}|j||jyr<)r7rrrFr	s  rtestFullReadz$FileObjectClassTestCase.testFullReads(nn!!#dmm,r?c|jj|j|jjyr<)r<rgrBr!rYs r
_testFullReadz%FileObjectClassTestCase._testFullReadrMr?ct|j}	|jjd}|sn||z
}$|j	||jyrX)r}rFr7rr)rZr}chars   rtestUnbufferedReadz*FileObjectClassTestCase.testUnbufferedReadsV!d4==!#>>&&q)D4KC	
	
dmm,r?c|jj|j|jjyr<rKrYs r_testUnbufferedReadz+FileObjectClassTestCase._testUnbufferedReadrMr?cp|jj}|j||jyr<)r7readlinerrFrZlines  rtestReadlinez$FileObjectClassTestCase.testReadlines(~~&&(t}}-r?c|jj|j|jjyr<rKrYs r
_testReadlinez%FileObjectClassTestCase._testReadlinerMr?c|jj|jj}|j	||j
yr<)rr!r7rrrFr	s  rtestCloseAfterMakefilez.FileObjectClassTestCase.testCloseAfterMakefiles8

nn!!#dmm,r?c|jj|j|jjyr<rKrYs r_testCloseAfterMakefilez/FileObjectClassTestCase._testCloseAfterMakefilerMr?c|jj|jjt	t
}t
|jtr|j}|j||jyr<)r7r!rrrrr|rFrdecoderr	s  rtestMakefileAfterMakefileClosez6FileObjectClassTestCase.testMakefileAfterMakefileClosesWmm  S*dmmS)**,Cdmm,r?c|jj|j|jjyr<rKrYs r_testMakefileAfterMakefileClosez7FileObjectClassTestCase._testMakefileAfterMakefileCloserMr?cP|j|jjyr<)rr7r9rYs rtestClosedAttrz&FileObjectClassTestCase.testClosedAttrsDNN1112r?cP|j|jjyr<)rr<r9rYs r_testClosedAttrz'FileObjectClassTestCase._testClosedAttrsDOO2223r?c|j|jj|j|j|jj|j
j
yr<)rr7r9r6rrrrYs rtestAttributesz&FileObjectClassTestCase.testAttributessG,,dnn=,,dmm.B.B.DEr?c|j|jj|j|j|jj|j
j
yr<)rr<r9r;rrrrYs r_testAttributesz'FileObjectClassTestCase._testAttributessG--t?--t~~/D/D/FGr?c|jj|jt|jj|j
j|jt|j
jyr<)r7r!rrrrrrrYs r
testRealClosez%FileObjectClassTestCase.testRealClosesV*dnn&;&;<

'4==#<#<=r?cyr<rdrYs r_testRealClosez&FileObjectClassTestCase._testRealCloser'r?r)%rarbrcrr;r0r1r6rrFr;rBrpr[r^rrr@rDrIrLrOrQrTrVr[r]r_rardrfrhrjrlrnrprrrdr?rr+r+Ws	GH
FGIHJIB$+$1
O"
- -
 - .
 - - 34FH>
r?r+cNeZdZ	dZdZdZdZdZdZdZ	dZ
d	Zd
ZdZ
y)
!UnbufferedFileObjectClassTestCaserc*|jj}|j|d|jz|jjdd|_|jj}|j|d|jzy)NA. rrB. )r7rXrrBrr&rYs  rtestUnbufferedReadlinez8UnbufferedFileObjectClassTestCase.testUnbufferedReadlinesp~~&&(v67//a8~~&&(v67r?c|jjd|jz|jjd|jz|jjy)NrvrwrKrYs r_testUnbufferedReadlinez9UnbufferedFileObjectClassTestCase._testUnbufferedReadlinesHft~~56ft~~56r?c0|jj|jjd}|j||j|j
j|j
t|jjdyr)rr!rrrFr7rrr	s  rtestMakefileClosez3UnbufferedFileObjectClassTestCase.testMakefileClosesf

mm  &dmm,'4==#5#5t<r?c|jj|j|jjyr<rKrYs r_testMakefileClosez4UnbufferedFileObjectClassTestCase._testMakefileCloserMr?ctj|j}|jj	tj|j}|j|dz
|yrX)rBr@rr7r!r)rZrefcount_beforerefcount_afters   rtestMakefileCloseSocketDestroyz@UnbufferedFileObjectClassTestCase.testMakefileCloseSocketDestroy sK//$--871,n=r?cyr<rdrYs r_testMakefileCloseSocketDestroyzAUnbufferedFileObjectClassTestCase._testMakefileCloseSocketDestroy&r'r?c|jjd|j|jj	tdd|j|jj
t|jdz
d|jj|jjd|jj
t|jdz
}|Ftjd|jj
t|jdz
}td}|jj	|}|j|d||d|z}|j||j|j|jj	tdd|j|jj
ddy)NFrrrg?rJr)rrorr7readintorrrrFr2rr3rrr)rZrGr}r]r
s     rtestSmallReadNonBlockingz:UnbufferedFileObjectClassTestCase.testSmallReadNonBlocking-si

!!%(002?F,,S-?!-CDdK		

		sNN''DMM(:Q(>?	JJsO++C

,>,BCImNN##C(A#bq'!dmm,002?F,,Q/6r?c"|jjd|jj|j|jj|jj|jjdy)Nr@)	r2rr<rgrBrCr3rr4rYs r_testSmallReadNonBlockingz;UnbufferedFileObjectClassTestCase._testSmallReadNonBlocking@s[		sdnn-		

	
$r?c|jjd|jr|j|jyy)Nr)r5rserv_skippedrrYs rtestWriteNonBlockingz6UnbufferedFileObjectClassTestCase.testWriteNonBlockingIs8s#MM$++,r?c\d|_|jjddtjz}d}|j
j
|}|j|dt|D]3}|j
j
|}|y|j|d5d|_y)NFrrrz$failed to saturate the socket buffer)	rrrorrr<rgr2rC)rZBIGLIMITr]rPs     r_testWriteNonBlockingz7UnbufferedFileObjectClassTestCase._testWriteNonBlockingPs ""5)W***OO!!#&1a u
	GA%%c*Ayq!$
	G!GDr?N)rarbrcrrxrzr|r~rrrrrrrdr?rrtrtsA<G8 
= >
7&%-Gr?rtceZdZdZy)#LineBufferedFileObjectClassTestCaserNrarbrcrrdr?rrrfGr?rceZdZdZy)$SmallBufferedFileObjectClassTestCaserNrrdr?rrrkrr?rc@eZdZ	dZejdZdZeZdZ	y)"UnicodeReadFileObjectClassTestCaserr	r7rN
rarbrcr6rrcrFr;rBr1rdr?rrrps'GIzz'"HJIGr?rc@eZdZ	dZeZdZejdZdZ	y)#UnicodeWriteFileObjectClassTestCaserr6r	rN)
rarbrcr6rrFr;rcrBr1rdr?rrrzs'GIHJ

7#IGr?rc^eZdZ	dZejdZdZejdZdZ	y)'UnicodeReadWriteFileObjectClassTestCaserr	r6rNrrdr?rrrs0GIzz'"HJ

7#IGr?rceZdZ	dZy)NetworkConnectionTestcztjt|jf|_|j|_yr<)rcreate_connectionrrWrrrYs rrz!NetworkConnectionTest.clientSetUps*++T499,=>r?N)rarbrcrrdr?rrrs
#"r?rceZdZy)
BasicTCPTest2NrYrdr?rrrsr?rceZdZGddejZejdZejdZ
ejdZdZdZ
y)	NetworkConnectionNoServerceZdZdZy)$NetworkConnectionNoServer.MockSocketctd)Nz	timed out)rrWs  rrz,NetworkConnectionNoServer.MockSocket.connects
{++r?N)rarbrcrrdr?r
MockSocketrs	,r?rc#K	tj}|jt_	d|t_y#|t_wxYwwr<)rr)rZ
old_sockets  rmocked_socket_modulez.NetworkConnectionNoServer.mocked_socket_modules38]]

	'&FMJFMs'A
:A

AA
ctj}tjtjtj}|j|j|jt5}|jt|fddd|jjjtjy#1swY>xYwr<)rrrrTrBryr!rrrrrrr+ECONNREFUSED)rZrWrrs    rtest_connectz&NetworkConnectionNoServer.test_connects--/mmFNNF,>,>?		"


w
'	&2KKt%	&++U-?-?@	&	&s7CCc*tj}|jt5}t	j
t|fdddtj}|jjj|y#1swYDxYwr<)rrrrrrrget_socket_conn_refused_errsrrr+)rZrWrexpected_errnoss    rtest_create_connectionz0NetworkConnectionNoServer.test_create_connectionsq--/


w
'	32$$dD\2	3"(DDF

bll((/:%	3	3sB		Bctj}	tjt|fd|jd|jt|jD]}|j|ttjd|dtj}|jt|t|jy#t$r}|}Yd}~d}~wwxYw)NT)
all_errorszexpected connection to failrr)rrrrrrExceptionGroupr
exceptionsrrrBrr)rZrWreg	addressess     r!test_create_connection_all_errorsz;NetworkConnectionNoServer.test_create_connection_all_errorss--/	5$$dD\dC
II34b.1	.A!!!W-	.&&q&"4"46		
YR]]);<	B	sC	C+C&&C+cD|j5	tjtdf|j	ddddy#t
$rYt$r8}tjs|jtjk7rYd}~Od}~wwxYw#1swYyxYw)Nr
zTimeoutError not raised)rrrrrrrrrr+EAFNOSUPPORTrs  rtest_create_connection_timeoutz8NetworkConnectionNoServer.test_create_connection_timeouts
&
&
(		5
5(($6		34		5		5 

 --e>P>P1P2Q
		5		5s?BAB	BBB.B	BBBBN)rarbrcrr
contextlibcontextmanagerrrskip_if_tcp_blackholerrrrrdr?rrrsl,V]],''((A)A((;);0=$5r?rcbeZdZddZdZdZdZeZdZeZ	dZ
eZdZeZ
dZeZd	ZeZd
Zy)
NetworkConnectionAttributesTestc\tj||tj|yrrrs  rrpz(NetworkConnectionAttributesTest.__init__rr?c6tj|_yr<)rrsource_portrYs rrz+NetworkConnectionAttributesTest.clientSetUps(99;r?cp|jjd|_tj|yr<rrYs rrz.NetworkConnectionAttributesTest.clientTearDownrr?c^|jj\}}|jyr<)rUrr!rs   r_justAcceptz+NetworkConnectionAttributesTest._justAccepts!YY%%'
d

r?ctjt|jftj
|_|j|jj|j|jjdy)Nrr)rrrrWrrurryr!rrrYs r_testFamilyz+NetworkConnectionAttributesTest._testFamilysT++T499,=$+$<$<>'!,r?cJtjt|jftj
d|jf|_|j|jj|j|jjd|jy)Nr)rLsource_addressr)rrrrWrrurrryr!rrrYs r_testSourceAddressz2NetworkConnectionAttributesTest._testSourceAddresssu++T499,=$+$<$<,.0@0@+AC	
'--/2D4D4DEr?c|jtjdutjd	tjt
|jf|_|j|jjtjd|j|jjdy#tjdwxYw)Nr`rrrJrKrrrWrryr!rrrYs r_testTimeoutDefaultz3NetworkConnectionAttributesTest._testTimeoutDefaults002d:;  $	+//tyy0ABDHOODHHNN+$$T*,,.3
$$T*sACC"c|jtjdutjd	tjt
|jfd|_|j|jjtjd|j|jjdy#tjdwxYwNrrrYs r_testTimeoutNonez0NetworkConnectionAttributesTest._testTimeoutNones002d:;  $	+//tyy0A4PDHOODHHNN+$$T*,,.5
$$T*sAC

C$ctjt|jfd|_|j|jj
dyr)rrrrWrrrrYs r_testTimeoutValueNamedz6NetworkConnectionAttributesTest._testTimeoutValueNamed*s<++T499,=rJ,,.3r?ctjt|jfd|_|j|jj|j|jjdy)Nr)	rrrrWrryr!rrrYs r_testTimeoutValueNonamedz8NetworkConnectionAttributesTest._testTimeoutValueNonamed/sP++T499,=rB',,.3r?Nr)rarbrcrprrr
testFamilyrtestSourceAddressrtestTimeoutDefaultrtestTimeoutNonertestTimeoutValueNamedrtestTimeoutValueNonamedrrdr?rrrsc&<,
J-$F%	4"O	6(4*4r?rc6eZdZddZdZdZdZeZdZdZ	y)	NetworkConnectionBehaviourTestc\tj||tj|yrrrs  rrpz'NetworkConnectionBehaviourTest.__init__7rr?cyr<rdrYs rrz*NetworkConnectionBehaviourTest.clientSetUp;r'r?cp|jjd|_tj|yr<rrYs rrz-NetworkConnectionBehaviourTest.clientTearDown>rr?c|jj\}}|j|jt	j
d|j
dy)Nrdone!)rUrryr!rrrrs   rtestInsideTimeoutz0NetworkConnectionBehaviourTest.testInsideTimeoutCs?YY%%'
d

#

1
		(r?ctjt|jfx|_}|jd}|j
|dy)Nrr)rrrrWrrr)rZrMrs   r_testInsideTimeoutz1NetworkConnectionBehaviourTest._testInsideTimeoutJs? 22D$))3DEE4yy|x(r?ctjt|jfdx|_|jtfdy)Nrrc&jdS)Nr)r)rMsrrzzDNetworkConnectionBehaviourTest._testOutsideTimeout.<locals>.<lambda>Qs		!r?)rrrrWrrrr\s @r_testOutsideTimeoutz2NetworkConnectionBehaviourTest._testOutsideTimeoutOs6 22D$))3DaPP4,(<=r?Nr)
rarbrcrprrrtestOutsideTimeoutrrrdr?rrr5s(&
,

+)
>r?rcXeZdZdZdZejeedddZ	y)TCPTimeoutTestc>fd}jt|dy)Ncpjjdjjyr)rUrrrurvrZs  r
raise_timeoutz4TCPTimeoutTest.testTCPTimeout.<locals>.raise_timeoutWs%II  %IIr?z*Error generating a timeout exception (TCP)rrrZrs` rtestTCPTimeoutzTCPTimeoutTest.testTCPTimeoutVs 		
,
J	Lr?cd}	|jjd|jj}|s|j	dyy#t$r|j	dY1t
$rd}Y=|j	dYQxYw)NFrz%caught timeout instead of error (TCP)Tz!caught unexpected exception (TCP)z3accept() returned success when we did not expect it)rUrrrrrrZokrs   rtestTimeoutZerozTCPTimeoutTest.testTimeoutZero]s
	;II  %))""$CIIKL
	?II=>	B	;II9:s5AB
*
B
6B
rztest needs signal.alarm()c
:|jjdGddtfd}tjtj|}		tj
d|jj
}|jdtj
d	tjtj|y#t$r|jdYW$rY]t$r?}|jdt|d	|d
tjYd}~d}~wwxYw#tj
dwxYw#$r|jdYwxYw#tjtj|wxYw)
NrceZdZy)4TCPTimeoutTest.testInterruptedTimeout.<locals>.AlarmNrYrdr?rAlarmrrsr?rcr<rd)rrrs  r
alarm_handlerz<TCPTimeoutTest.testInterruptedTimeout.<locals>.alarm_handlertsKr?rznothing caughtzcaught timeout instead of Alarmz)caught other exception instead of Alarm: (z):
rzgot Alarm in wrong place)
rUrrlrrrrrrrr}	traceback
format_exc)rZr	rrrrs     @rtestInterruptedTimeoutz%TCPTimeoutTest.testInterruptedTimeoutks/	
		S!	I		MM&..-@		5
 Qii&&(		*+Q

MM&..)4! 
=		;<
 
@		7Ay';';'=?@@
@Q	2II01	2
MM&..)4sx/CD>E,E4D;,D>.D;2D>4D;<5D61D>6D;;D>>EEE1.E40E11E44&FN)
rarbrcrrrrrrr	rdr?rrrTs;LMX146565r?rceZdZdZdZy)UDPTimeoutTestc>fd}jt|dy)NcrjjdjjdyNrrrUrrrs  rrz4UDPTimeoutTest.testUDPTimeout.<locals>.raise_timeout%II  %IINN4 r?z*Error generating a timeout exception (UDP)rrs` rtestUDPTimeoutzUDPTimeoutTest.testUDPTimeouts 	!	
,
J	Lr?cd}	|jjd|jjd}|s|j	dyy#t$r|j	dY1t
$rd}Y=|j	dYQxYw)NFrrz%caught timeout instead of error (UDP)Tz!caught unexpected exception (UDP)1recv() returned success when we did not expect itrUrrrrrrs   rrzUDPTimeoutTest.testTimeoutZeros
	;II  %))..&CIIIJ
	?II=>	B	;II9:6AB+
B7BN)rarbrcr	rrdr?rr	r	sLKr?r	ceZdZdZdZy)UDPLITETimeoutTestc>fd}jt|dy)Ncrjjdjjdyr		r
	rs  rrz<UDPLITETimeoutTest.testUDPLITETimeout.<locals>.raise_timeoutr	r?z.Error generating a timeout exception (UDPLITE)rrs` rtestUDPLITETimeoutz%UDPLITETimeoutTest.testUDPLITETimeouts 	!	
,
N	Pr?cd}	|jjd|jjd}|s|j	dyy#t$r|j	dY1t
$rd}Y=|j	dYQxYw)NFrrz)caught timeout instead of error (UDPLITE)Tz%caught unexpected exception (UDPLITE)r	r	rs   rrz"UDPLITETimeoutTest.testTimeoutZeros
	?II  %))..&CIIIJ
	CIIAB	B	?II=>r	N)rarbrcr	rrdr?rr	r	sPKr?r	ceZdZdZdZy)TestExceptionsc|jttt|jttj
t|jttjt|jttjt|jtjt|jtjtyr<)r
issubclassrrlrrrrLassertIserrorrrYs rtestExceptionTreez TestExceptions.testExceptionTrees~
7I67
6==':;
6??G<=
6>>7;<

fllG,

fnnl3r?ctjtjtjd}tjtjtjd|j}|j	|j|j|jt5|jddddy#1swYyxYw)NrF)
rrTrBrr!ryrurrro)rZsock0rMs   rtest_setblocking_invalidfdz)TestExceptions.test_setblocking_invalidfds

fnnf.@.@!D}}NNF..5<<>C

$


w
'	$U#	$	$	$s6CCN)rarbrcr	r 	rdr?rr	r	s4
$r?r	rkLinux specific testc4eZdZdZdZdZdZdZdZdZ	y)	TestLinuxAbstractNamespacelctd}tjtjtj5}|j||j	tjtjtj5}|j|j
|jd5}|j|j
||j|j|dddddddddy#1swYxYw#1swYxYw#1swYyxYw)Nspython-test-hellor)
rrRrBrrXrrrrr)rZrs1rs3s     rtestLinuxAbstractNamespacez5TestLinuxAbstractNamespace.testLinuxAbstractNamespaces2
]]6>>6+=+=
>	@"GGGIIKv~~v/A/AB
@b

2>>+,YY[^@r$$R^^%5w?$$R^^%5w?@
@	@	@
@@
@
@	@	@s=AD.	3D"<AD=D"D.DD""D+	'D..D7cdd|jdz
zz}tjtjtj5}|j	||j|j
|dddy#1swYyxYw)Nrhr)
UNIX_PATH_MAXrrRrBrrrrZrr$s   rtestMaxNamez&TestLinuxAbstractNamespace.testMaxNameslDD$6$6$:;;
]]6>>6+=+=
>	7!
FF7OQ]]_g6	7	7	7s2BBcdd|jzz}tjtjtj5}|j	t
|j|dddy#1swYyxYw)Nh)r+	rrRrBrrrr,	s   rtestNameOverflowz+TestLinuxAbstractNamespace.testNameOverflows\3!3!333
]]6>>6+=+=
>	8!gqvvw7	8	8	8s"A00A9ctjtjtj}	|jd|j	|jd|j
y#|j
wxYw)Nz
pythontest
pythontest)rrRrBrrrr!rs  rtestStrNamez&TestLinuxAbstractNamespace.testStrNamesXMM&..&*<*<=	
FF+,Q]]_.GH
GGIAGGIs1A66Bctjtjtj5}|jt	d|j|j
ddddy#1swYyxYw)Nr3	)rrRrBrrrrrs  rtestBytearrayNamez,TestLinuxAbstractNamespace.testBytearrayNames^
]]6>>6+=+=
>	I!
FF9678Q]]_.GH	I	I	Is;A77BcDd}tjtjtj5}|jd|j	|j|tjtjtj5}|jd|j	|j||j
|j|jddddddy#1swYxYw#1swYyxYw)Ns
^[0-9a-f]{5}r)rrRrBrassertRegexrr)rZabstract_addressr&	rs    rtestAutobindz'TestLinuxAbstractNamespace.testAutobinds-
]]6>>6+=+=
>	H"GGBKR^^-/?@v~~v/A/AB
Hb  !13CD##BNN$4bnn6FG
H		H	H
H
H		H	Hs%A$DA D
9D
D	DDN)
rarbrcr+	r(	r-	r1	r4	r6	r:	rdr?rr#	r#	s*M	@78
IHr?r#	ztest needs socket.AF_UNIXceZdZdZdZdZdZdZdZdZ	dZ
d	Zejejd
k(ddZy
)TestUnixDomaincrtjtjtj|_yr<)rrRrBrMrYs rr[zTestUnixDomain.setUpsMM&..&2D2DE	r?c8|jjyr<)rMr!rYs rr^zTestUnixDomain.tearDowns		r?c	tj|S#t$r6|jdj	|tjYywxYw)NzBPathname {0!a} cannot be represented in file system encoding {1!r})rfsencoderrrrBgetfilesystemencodingrZrNs  rencodedzTestUnixDomain.encodedsN	8;;t$$!	8MM((.#335)7
8	8s<AAc	tj||y#t$r:}t|dk(r!|j	dj|nYd}~yd}~wwxYw)NzAF_UNIX path too longz6Pathname {0!a} is too long to serve as an AF_UNIX path)rrLrrrr)rZrMrNrs    rrzTestUnixDomain.bind sV	**46	1v00

LVD\#	#	s	A0AAcX|j|jjdy)N)rN)rrMrrYs rrzTestUnixDomain.testUnbound,s

dii++-z:r?c*tjjtj}|j|j||jtj||j|jj|yr<)rrNabspathrTESTFNrrMryrKrrrB	s  rtestStrAddrzTestUnixDomain.testStrAddr0s]wwy//0		$))T"	(($/..0$7r?cHtjjtj}|j|j|j||jtj||j|jj|yr<)rrNrG	rrH	rrMrC	ryrKrrrB	s  r
testBytesAddrzTestUnixDomain.testBytesAddr7sfwwy//0		$))T\\$/0	(($/..0$7r?cltjjtj}|j|}|j
|j|jdd|jtj||j|jj|y)Nasciisurrogateescape)
rrNrG	rTESTFN_UNICODErC	rrMrcryrKrr)rZrNrs   rtestSurrogateescapeBindz&TestUnixDomain.testSurrogateescapeBind>sywwy778LL		$))QXXg/@AB	(($/..0$7r?cltj|jdtjjtj}|j
|j||jtj||j|jj|y)Nz!No unencodable filename available)rTESTFN_UNENCODABLErrrNrG	rrMryrKrrrB	s  rtestUnencodableAddrz"TestUnixDomain.testUnencodableAddrGsx''/MM=>wwy;;<		$))T"	(($/..0$7r?rkr!	cZ|jt|jjdy)Nr)rrrMrrYs rtestEmptyAddresszTestUnixDomain.testEmptyAddressQs	
'499>>26r?N)rarbrcr[r^rC	rrrI	rK	rP	rS	rrrBrtrU	rdr?rr<	r<	s\F	8
;8888X__S\\W,.CD7E7r?r<	cleZdZ	ddZdZdZdZeZdZeZ	dZ
dZdZeZ
d	ZeZd
ZdZdZeZy
)BufferIOTestc2tj||yrrrs  rrpzBufferIOTest.__init__[rr?c6tjddgttz}|jj	|}|j|tt|j
}|dtt}|j|tyNrr)rrrrrrrErZr}r;r
s    rtestRecvIntoArrayzBufferIOTest.testRecvIntoArray^snkk#sSX~.((-S*kkm)3s8nc"r?cXtt}|jj|yr<r4rrrrZr}s  r_testRecvIntoArrayzBufferIOTest._testRecvIntoArrayfCjC r?ctd}|jj|}|j|t	t
|dt	t
}|j|t
yr)rrrrrrr[	s    rtestRecvIntoBytearrayz"BufferIOTest.testRecvIntoBytearrayjsRo((-S*)3s8nc"r?ctd}|jjt|}|j	|tt|dtt}|j	|tyr)rrrrLrrrr[	s    rtestRecvIntoMemoryviewz#BufferIOTest.testRecvIntoMemoryviewssVo((C9S*)3s8nc"r?c<tjddgttz}|jj	|\}}|j|tt|j
}|dtt}|j|tyrZ	)rrrrrrrErZr}r;rr
s     rtestRecvFromIntoArrayz"BufferIOTest.testRecvFromIntoArray|srkk#sSX~.}}2237S*kkm)3s8nc"r?cXtt}|jj|yr<r^	r_	s  r_testRecvFromIntoArrayz#BufferIOTest._testRecvFromIntoArrayra	r?ctd}|jj|\}}|j|t	t
|dt	t
}|j|t
yr)rrrrrrrg	s     rtestRecvFromIntoBytearrayz&BufferIOTest.testRecvFromIntoBytearraysVo}}2237S*)3s8nc"r?ctd}|jjt|\}}|j	|tt|dtt}|j	|tyr)rrrrLrrrrg	s     rtestRecvFromIntoMemoryviewz'BufferIOTest.testRecvFromIntoMemoryviewsZo}}22:c?CS*)3s8nc"r?crtd}|jt|jj|dy)Nrr)rrrrrr_	s  rtestRecvFromIntoSmallBufferz(BufferIOTest.testRecvFromIntoSmallBuffers)l*dmm&A&A3Mr?cB|jjtyr<rrYs r_testRecvFromIntoSmallBufferz)BufferIOTest._testRecvFromIntoSmallBufferrr?ct}|jj||jj|dyr)rrrr_	s  rtestRecvFromIntoEmptyBufferz(BufferIOTest.testRecvFromIntoEmptyBuffers/k

##C(

##C+r?Nr)rarbrcrpr\	r`	rc	_testRecvIntoBytearrayre	_testRecvIntoMemoryviewrh	rj	rl	_testRecvFromIntoBytearrayrn	_testRecvFromIntoMemoryviewrp	rr	rt	_testRecvFromIntoEmptyBufferrdr?rrW	rW	WsmB#!#0#1#!#"8##9N
!,
$: r?rW	ic	ttdsy	tdd}|5|D]}|j
dsdddy	dddy#ttt
f$rYywxYw#1swYyxYw)NAF_TIPCFz
/proc/modulesr	r:ztipc T)rrrFileNotFoundErrorIsADirectoryErrorrru)rrZs  risTipcAvailabler	s
69%73

	Dw'	
0/Bs'
AA*A*A*A'&A'*A3z6TIPC module is not loaded, please 'sudo modprobe tipc'ceZdZdZy)TIPCTestc$tjtjtj}tjtjtj}|j|j|j|j|jtjtjdtjtttf}|j|tjtttttz
dzzdf}|jt ||j#d\}}|j%|j'||j%|t y)Nrrrr)rr}	rryr!rrrTIPC_ADDR_NAMESEQ
TIPC_STYPE
TIPC_LOWER
TIPC_UPPERrTIPC_ADDR_NAMEr1rrrrr)rZrLrsrvaddrsendaddrr
recvaddrs       rtestRDMzTIPCTest.testRDMsmmFNNFOO<mmFNNFOO<		"		"v((&*=*=qA++ZJ()):S*z"9Q!>??D

3!T*
X*H5c"r?N)rarbrcr	rdr?rr	r	s#r?r	c,eZdZddZdZdZdZdZy)TIPCThreadableTestcptjj||tj|yrrrs  rrpzTIPCThreadableTest.__init__s)""4j"A%r?ctjtjtj|_|j	|jj
|jj
tjtjdtjtttf}|jj||jj|j|jj!\|_|_|j	|j"j
yrX)rr}	rBrLryr!rrrr	r	r	r	rrXrrrr)rZr	s  rr[zTIPCThreadableTest.setUps==1C1CD'F--v/B/BAF++ZJ(

g  "#'88??#4 	4=		(r?ctjdtjtjtj|_|j
|j
jtjtttttz
dzzdf}|j
j||j
j|_y)Nrrr)rrrr}	rBrryr!r	r	r	r1r	rrcliaddr)rZrs  rrzTIPCThreadableTest.clientSetUps	

3==1C1CD'%%zS*z"9Q!>??Dxx++-r?c|jjd}|j|t|j|j|j
yr)rrrrr	rr	s  rrzTIPCThreadableTest.testStreams<iinnT"c"t}}5r?cv|jjt|jjyr<rrYs rrzTIPCThreadableTest._testStreamrr?Nrrrdr?rr	r	s&
)
.6
r?r	c*eZdZdZdZdZdZdZy)ContextManagersTestc4tj5}|j|jddd|jjtj5}|j	ddd|j|jtj5}|jt|jdddd|j|jy#1swYxYw#1swYxYw#1swY=xYwNr)rrr)rr!rrrr\s  r_testSocketClassz$ContextManagersTest._testSocketClasss
]]_	+T\\*	+%
]]_	JJL	%
]]_	=gt||V<	=%	+	+			=	=s#C6(D0"D6C?DDc|jj\}}|j|j|j	d}|j|yrrUrryr!rrrZrrrs    rtestCreateConnectionBasez,ContextManagersTest.testCreateConnectionBaseAYY%%'
d

#yyTr?c\|jj}tj|5}|j	|j
|j
d|j|jddddd|jj
y#1swY%xYw)Nrr)
rUrrrrr)rrrrrZrrMs   r_testCreateConnectionBasez-ContextManagersTest._testCreateConnectionBases))'')

%
%g
.	6$T\\*LL TYYt_f5	6	
%		6	6sAB""B+c|jj\}}|j|j|j	d}|j|yrr	r	s    rtestCreateConnectionClosez-ContextManagersTest.testCreateConnectionClose!r	r?c$|jj}tj|5}|j	ddd|jj|jt|jdy#1swYFxYwr	)
rUrrrr!rr)rrrr	s   r_testCreateConnectionClosez.ContextManagersTest._testCreateConnectionClose'sh))'')

%
%g
.	$JJL	%'4<<8		sBBN)rarbrcr	r	r	r	r	rdr?rr	r	s&&9r?r	ceZdZejeeddejddddZ	dZ
dZd	Zejed
uddZejed
udd
ZdZy
)InheritanceTestrzSOCK_CLOEXEC not definedrrr
cFtjtjtjtjz5}|j	|j
tj|j
|jdddy#1swYyxYwr<)rrTrBrrr}rget_inheritablers  rtest_SOCK_CLOEXECz!InheritanceTest.test_SOCK_CLOEXEC0st]]6>>!--0C0CCE	2HIQVVV%7%78Q..01	2	2	2s
A
BB ctj}|5|j|jddddy#1swYyxYwr)rrr	r\s  rtest_default_inheritablez(InheritanceTest.test_default_inheritable9s>}}
	<T113U;	<	<	<s!AA
ctj}|5|j}|j|5|j|j	dddddddy#1swYxYw#1swYyxYwr)rrr!rr	)rZrMnewsocks   rtest_dupzInheritanceTest.test_dup>sx}}
	ChhjGJJL
C  !8!8!:EB
C	C	C
C
C	C	Cs"#A8!A,A8,A5	1A88Bctj}|5|jd|j|jd|jd|j|jddddy#1swYyxYw)NTF)rset_inheritablerr	r\s  rtest_set_inheritablez$InheritanceTest.test_set_inheritableFss}}
	<  &T113T:  'T113U;	<	<	<sA#BBNrctj}|5|j}|j|jdt	j|tj
}|tjz}t	j|tj||j|jddddy#1swYyxYwr)rrrr	rF_GETFD
FD_CLOEXECF_SETFD)rZrMr{rs    rtest_get_inheritable_cloexecz,InheritanceTest.test_get_inheritable_cloexecOs}}
		;BT113U;KKEMM2Ee&&&&EKKEMM51T113T:		;		;		;sB.CCctj}|5|j}|jtj|tjtj
ztj
|j
d|jtj|tjtj
zddddy#1swYyxYw)NTr)rrrrr	r	r	)rZrMr{s   rtest_set_inheritable_cloexecz,InheritanceTest.test_set_inheritable_cloexec]s}}
	 BU[[U]];e>N>NN"--
/
  &U[[U]];e>N>NN
 
	 	 	 sB:CC#ctj\}}|j|j|j|j|j	|jd|j	|jdyr)rr$ryr!rr	)rZr&	rs   rtest_socketpairzInheritanceTest.test_socketpairjsf""$B!!++-u5++-u5r?)rarbrcrrrrrr)r	r	r	r	rrr	r	r	rdr?rr	r	/sX835#W##Aq"-2.52<
C<X__Ud]L1;2;X__Ud]L1	 2	 6r?r	rnzSOCK_NONBLOCK not definedcHeZdZddZej
ddddZy)NonblockConstantTestcD|r|j|jtj|j|j	||jt
j|tjtjtjz|dk(r |j|jy|j|jy|j|jtj|j|j	d|jt
j|tjtjtjz|j|jyr)rr}rrBrrrrrrrr)rZr$nonblockrLs    r
checkNonblockz"NonblockConstantTest.checkNonblockusQVVV%7%78Q\\^W5OOAu}}bmm<r}}L
N!|  1

0QVVV%7%78Q\\^T2Au}}bmm<r}}L
NOOAMMO,r?rrr
ctjtjtjtjz5}|j	||jd|j	|d|jd|j	||j
d|j	|d|j
d|j	|d|jd|j	|ddddtj}tjdtj5}|j	|dddtjdtj5}|j	|ddddtjdtj5}|j	|ddddtjdtj5}|j	|ddddtj|y#1swYDxYw#1swYxYw#1swYxYw#1swYxYw#1swYPxYw)NTF)r	g@rr)	rrTrBrnr	rorrJrK)rZr$ts   rtest_SOCK_NONBLOCKz'NonblockConstantTest.test_SOCK_NONBLOCKs]]6>>!--0D0DDF	2IJq!
MM$q51
MM% q!
LLq51
LLq#.
MM$q51	2
$$&  %
]]_	"q!	"  &
]]_	)q%(	)  %
]]_	/q#.	/  &
]]_	)q%(	)  #7	2	2 	"	"	)	)	/	/	)	)s=CI

II#I/I;
II #I,/I8;JN)Tr)rarbrcr	rr)r	rdr?rr	r	rs,-2$W##Aq"-$.$r?r	rrzneed multiprocessingc:eZdZedZdZdZdZdZdZ	y)TestSocketSharingc|j}|j}tj|}|j\}}|j	||j|jyr<)rr	fromsharerrr!)rqsdatamessager$rrs       rremoteProcessServerz%TestSocketSharing.remoteProcessServersY%%'U#
A	

7

		r?ctj}tj|j|f}|j	|j
j
|j}|j
j}|j
j|j|d}|j|tj|}g}	|jd}|sn|j|&|jdj|}|j!|||jy)Nrrus
slapmahfrorr?)multiprocessingrProcessr	rrUsharepidrr!rrrrrirr)	rZr	rrrr	r$mreceiveds	         r	testSharezTestSocketSharing.testShares

!!###4+C+C1$O		yyquu%yy$$&			d 	g
$$T*66#;D
HHTN	
	
	88A;7+	r?c|jjtj}|j	t
tj|dd|j	t
tj|dzy)NrZr)rUr	rgetpidrrrr	)rZrs  rtestShareLengthz!TestSocketSharing.testShareLengthsTyyryy{+*f&6&6Sb	B*f&6&6VDr?c|j|jd|j|j|j|j|j|j|j|j|j|jdk7r'|j|j|jyyr)rrrr}r)rZorgothers   rcompareSocketsz TestSocketSharing.compareSocketss	
)40)5+;+;+=>U\\25::.99>SYY4r?c|jjtj}t	j
|}	|j
|j||jy#|jwxYwr<)rUr	rr	rr	r	r!)rZrr$s   rtestShareLocalz TestSocketSharing.testShareLocalsVyyryy{+T"			1-
GGIAGGIsA11Bctjtjg}tjtjg}|D]}|D]}	tj||}	|j
tj}tj|}	|j|||j	|jy#t
$rYwxYw#|jwxYw#|jwxYwr<)rrTrqrBr(rr	rr	r	r	r!)rZfamiliestypesrr	rrshareds        r	testTypeszTestSocketSharing.testTypessNNFOO4##V%6%67	#A

##]]1a0F#!<<		4D#--d3F'++FF;LLN

#	#LLNs6C#8C8C#.C8	C C #C55C88D
N)
rarbrcrAr	r	r	r	r	r	rdr?rr	r	s1
!FE
5 #r?r	ceZdZ	dZdZdZejZe	dZ
e	dZdZdZ
dZd	Zd
ZdZdZd
ZdZdZdZdZdZdZdZdZdZdZdZdZdZ dZ!dZ"dZ#dZ$y) SendfileUsingSendTestirr?c$d}djt|jDcgc]3}tjt
jj5c}}ttjd5}||j|jD]}|j|	dddttjd5}|j|_dddycc}w#1swYGxYw#1swYyxYw)Nc3BK||kDr|||z}||kDr|r|yywr<rd)totalsteps  rchunksz0SendfileUsingSendTest.setUpClass.<locals>.chunks#s3$,

$,sr?r7r)rrCBUFSIZErandomchoicestring
ascii_lettersrhrrrH	FILESIZErgrFILEDATA)rr	rPchunkrcsizes      r
setUpClassz SendfileUsingSendTest.setUpClass!s	#(#57!--(<(<=DDF78
)""D
)	Qckk:

	)""D
)	5Q668CL	5	57			5	5s8C5?4C:D:DDcJtjtjyr<)rrKrH	)rs r
tearDownClassz#SendfileUsingSendTest.tearDownClass4s))*r?c|jjtj|jj	\}}|j|j
|j
|j|Sr<)rUrrr rTIMEOUTryr!rs   raccept_connz!SendfileUsingSendTest.accept_conn8sU		W112YY%%'
d%

#r?cg}	|j|j}|sn|j|0dj|Sr)rr	rir)rZrr	r	s    r	recv_datazSendfileUsingSendTest.recv_data?sDIIdll+EOOE"	
xx!!r?ct|dS)N_sendfile_use_sendrr\s  rmeth_from_sockz$SendfileUsingSendTest.meth_from_sockHst122r?c|jj}ttjd}tj|5}|5}|j|}||}|j||j|j|j|jddddddy#1swYxYw#1swYyxYw)NrrUrrrrH	rrr	rr	tellrZrfilerMmethsents      r_testRegularFilez&SendfileUsingSendTest._testRegularFileOs))'')I$$d+

%
%g
.	9$	9&&t,D:DT4==1TYY[$--8		9	9	9	9	9	9s%
C

A B>-C
>C	C

Cc|j}|j|}|jt||j|j||j
yr<r	r	rrr	r	rZrrs   rtestRegularFilez%SendfileUsingSendTest.testRegularFileXJ!~~d#TDMM2t}}-r?c|jj}tj|j}tj|5}|5}|j|}|j||j|j|j|j|jt
j|j|ddddddy#1swYxYw#1swYyxYwr<)rUrioBytesIOr	rrrrr	r
rrr)rZrr
rMr
s     r_testNonRegularFilez)SendfileUsingSendTest._testNonRegularFile`s))'')zz$--(

%
%g
.	A$	A==&DT4==1TYY[$--8f66"994
A		A	A	A	A	A	As%C2BC&C2&C/	+C22C;c|j}|j|}|jt||j|j||j
yr<r
r	
s   rtestNonRegularFilez(SendfileUsingSendTest.testNonRegularFilejr
r?c|jj}tjdz}t	|d5|jtj|dddt	|d}tj|5}|5}|j|}||}|j|d|j|jdddddddy#1swYxYw#1swYxYw#1swYyxYw)N2r7rr)rUrrrH	rryrKrrr	rr
)rZrfilenamer
rMr
r
s       r_testEmptyFileSendz(SendfileUsingSendTest._testEmptyFileSendrs))'')##c)
(D
!	8OOI,,h7	8Hd#

%
%g
.	-$	-&&t,D:DT1%TYY[!,		-	-	-	8	8	-	-	-	-s0!C$C<AC0C<$C-0C9	5C<<Dcj|j}|j|}|j|dyr)r	r	rr	
s   rtestEmptyFileSendz'SendfileUsingSendTest.testEmptyFileSend~s.!~~d#s#r?c|jj}ttjd}tj|5}|5}|j|}||d}|j||jdz
|j|j|jddddddy#1swYxYw#1swYyxYw)Nr)offsetr
r
s      r_testOffsetz!SendfileUsingSendTest._testOffsets))'')I$$d+

%
%g
.	9$	9&&t,DT*DT4==4#78TYY[$--8		9	9	9	9	9	9s%
C
A%C2CC	CCc|j}|j|}|jt||jdz
|j||j
ddy)Nr
r
r	
s   r
testOffsetz SendfileUsingSendTest.testOffsetsV!~~d#TDMMD$89t}}TU34r?c|jj}ttjd}tj|tj}|5|5d}|j|}|||}|j|||j|j|ddddddy#1swYxYw#1swYyxYw)NrrGKLrrUrrrrH	rrrrur	rr
rZrr
rMrr
r
s       r
_testCountz SendfileUsingSendTest._testCounts))'')I$$d+''070H0HJ
	14	1E&&t,DE*DT5)TYY[%0	1	1	1	1	1	1%CAC/CC		CCcd}|j}|j|}|jt|||j||jd|y)Nr
r	r	rrr	rZrrrs    r	testCountzSendfileUsingSendTest.testCountsR!~~d#TE*t}}Ve45r?c|jj}ttjd}tj|tj}|5|5d}|j|}|||}|j|||j|j|ddddddy#1swYxYw#1swYyxYw)Nrrrr 
r!
r"
s       r_testCountSmallz%SendfileUsingSendTest._testCountSmalls))'')I$$d+''070H0HJ
	14	1E&&t,DE*DT5)TYY[%0	1	1	1	1	1	1r$
cd}|j}|j|}|jt|||j||jd|yrXr&
r'
s    rtestCountSmallz$SendfileUsingSendTest.testCountSmallsR!~~d#TE*t}}Ve45r?c|jj}ttjd}tj|d5}|5}d}|j|}||d|}|j|||j|j|dzddddddy#1swYxYw#1swYyxYw)Nrrr駆)r
r)
rUrrrrH	rrr	rr
r"
s       r_testCountWithOffsetz*SendfileUsingSendTest._testCountWithOffsets))'')I$$d+

%
%gq
9	8T4	84E&&t,DT7DT5)TYY[%$,7	8	8	8	8	8	8s%CAB4#C4B=	9CC	cd}|j}|j|}|jt|||j||jd|dzy)Nr.
r/
r&
r'
s    rtestCountWithOffsetz)SendfileUsingSendTest.testCountWithOffsetsV!~~d#TE*t}}T%*=>r?c|jj}ttjd}tj|5}|5}|jd|j|}|jt|||jt|j|ddddddy#1swYxYw#1swYyxYw)NrF)rUrrrrH	rrror	rrrrZrr
rMr
s     r_testNonBlockingz&SendfileUsingSendTest._testNonBlockings))'')I$$d+

%
%g
.	?$	?U#&&t,Dj$5j$-->		?	?	?	?	?	?s%
C
AB9(C9C	>CCcj|j}|jdr|jdyy)Nrz$was not supposed to receive any data)r	rrrZrs  rtestNonBlockingz%SendfileUsingSendTest.testNonBlockings-!99T?II<=r?c||jj}ttjd}tj|tj}|5|5|j|}||}|j||jddddddy#1swYxYw#1swYyxYw)Nrr)rUrrrrH	rrrrur	rr	r
s      r_testWithTimeoutz&SendfileUsingSendTest._testWithTimeouts))'')I$$d+''070H0HJ
	24	2&&t,D:DT4==1	2	2	2	2	2	2s$B26B&B2&B/	+B22B;c|j}|j|}|jt||j|j||j
yr<r
r	
s   rtestWithTimeoutz%SendfileUsingSendTest.testWithTimeoutr
r?c\|jj}ttjd5}tj|5}|jd|j|}|jt||ddddddy#1swYxYw#1swYyxYw)Nrg{Gz?)rUrrrrH	rrrr	rrr4
s     r_testWithTimeoutTriggeredSendz3SendfileUsingSendTest._testWithTimeoutTriggeredSends))'')
)""D
)	<T))'2
<d%**40!!,d;
<	<	<
<
<	<	<s#B":BB"B	B""B+cp|j}|jdtjdy)NiXr)r	rrrr7
s  rtestWithTimeoutTriggeredSendz2SendfileUsingSendTest.testWithTimeoutTriggeredSends'!		%

1
r?cyr<rdrYs r_test_errorsz"SendfileUsingSendTest._test_errorsr'r?c	ttjd5}tjtj5}|j|}|j
td||ddddddttjd5}tj5}|j|}|j
td||ddddddttjd5}tj5}|j|}|j
td||d	|j
td||d
	|j
td||d	|j
td||d	ddddddy#1swY6xYw#1swY;xYw#1swYxYw#1swYxYw#1swYDxYw#1swYyxYw)
NrrrBr	r:zbinary modezpositive integerr
r 
rrrZ)	rrrH	rr(r	rrr)rZr
r$r
s    rtest_errorsz!SendfileUsingSendTest.test_errorss
)""D
)	;TF$5$56
;!**1-&&
tT;
;	;
)""W
5	;
;A**1-&&
tT;
;	;
)""D
)
	=T	
=A**1-&&y2D'+T'>&&y2D'+T'>&&z3E'+T'<&&z3E'+T'=	
=
	=
	=
;
;	;	;
;
;	;	;	
=	
=
	=
	=sl%F+*F*F+G**F8G>GA:G
GF(	#F++F58G	=GG
G	GG%N)%rarbrcr	r	r	rrur	rAr	r	r	r	r	r
r

r
r
r
r
r
r
r#
r(
r*
r,
r0
r2
r5
r8
r:
r<
r>
r@
rB
rD
rdr?rr	r	s!HGH&&G55$++"39.A.
-$95
16
168??>2.<
=r?r	rz%os.sendfile() required for this test.ceZdZ	dZy)SendfileUsingSendfileTestct|dS)Nrr	r\s  rr	z(SendfileUsingSendfileTest.meth_from_sock&st566r?N)rarbrcr	rdr?rrF
rF
 s7r?rF
zAF_ALG requiredceZdZdZej
dddZdZej
dddZej
ddd	Z	ej
ddd
Z
dZdZy
)LinuxKernelCryptoAPIctjtjtjd}	|j||f|S#t$r5}|jt
jt|||d}~wwxYwr)	rr6r2rr~	r!rSkipTestr)rZtyprrMrs     r
create_algzLinuxKernelCryptoAPI.create_alg-sn}}V]]F,A,A1E	IIsDk"K!	7JJL##CFC66	7sA

	B0BBrrctjd}|jdd5}|j\}}|5|j	d|j|j
d|ddd|j\}}|5|jdtj|jdtj|jdtj|jd	|j|j
d|ddddddy#1swYxYw#1swYxYw#1swYyxYw)
N@ba7816bf8f01cfea414140de5dae2223b00361a396177a9cb410ff61f20015adhashsha256sabcrabcr?)
r4fromhexrM
rrrrrrMSG_MORE)rZralgooprs     rtest_sha256z LinuxKernelCryptoAPI.test_sha256:s==":;
__VX
.	9$KKMEB
9

6"  x8
9KKMEB
9foo.foo.foo.  x8
9	9	9
9
9

9
9	9	9s;E
3D21E
BD>!E
2D;	7E
>E	E

Ecd}d}tjd}|jdd5}|jtj
tj||j\}}|5|j||j|jd|ddddddy#1swYxYw#1swYyxYw)NsPython loves AF_ALGswhat do ya want for nothing?(193dbb43c6297b47ea6277ec0ce67119a3f3aa66rP
z
hmac(sha1)r)r4rU
rM
rrSOL_ALGALG_SET_KEYrrrr)rZkeyrrrW
rX
rs       rtest_hmac_sha1z#LinuxKernelCryptoAPI.test_hmac_sha1Ls%.==!KL
__V\
2	9dOOFNNF,>,>DKKMEB
9

4   x8
9	9	9
9
9	9	9s$AC13B5$C5B>	:CC
rctjd}tjd}d}tjd}t|}|jdd5}|j	t
jt
j||j\}}|5|jt
j|t
j|j||j|j||ddd|j\}}|5|j|gt
j||j|j||dddd	}	|g|	z}
|j\}}|5|j|
t
j||j||	z}ddd|jt||	z|j|d|||j\}}|5|j|gt
j||j||	z}ddd|jt||	z|j|||	zdddy#1swYxYw#1swY7xYw#1swYxYw#1swYkxYw#1swYyxYw)
N 06a9214036b8a15b512e03d534120006 3dafba429d9eb430b422da802c9fac41sSingle block msg e353779c1079aeb82708942dbe77181askcipherzcbc(aes))rX
ivr)rX
re
r)r4rU
rrM
rrr\
r]
r
sendmsg_afalgALG_OP_ENCRYPTrV
rrrALG_OP_DECRYPT)
rZr^
re
r

ciphertextmsglenrW
rX
r
multiplierlongmsgencdecs
             rtest_aes_cbcz!LinuxKernelCryptoAPI.test_aes_cbc[smm>?
]]=
>!]]#EF
S
__Z
4 	4OOFNNF,>,>DKKMEB
>  F$9$9b'-!8

3  *=	
>KKMEB
7  *$*$9$9b!B  #6
7Jej(GKKMEB
3  $*$9$9b!Bggfz12
3
SXv
':;S&\:6KKMEB
3  #$*$9$9b!Bggfz12
3
SXv
':;S#
"23A 	4 	4
>
>
7
7
3
3
3
37 	4 	4spAK$A#JK$AJ)%K7J+AK8J7
;KJ	KJ(	#K+J4	0K7K	<KKrJc
tjd}tjd}tjd}tjd}tjd}tjd}t|}t|}|jdd5}	|	j	t
jt
j||	j	t
jt
jd||	j\}
}|
5|
jt
j||t
j	|
j|t
j|
j||
j|t|z|z}|j|||||j|||dddd|	j\}
}|
5||z}
|
j|
gt
j||
|
j|t|z|z}|j|||||j|||ddddt!j"dj$}|	j\}
}|
5||z}
|
j'|
gt
jt
j(|t
jgt
jt
j*|t||zgt
jt
j,||gf|
jt|
|z}|j|||||j|||dddd|	j\}
}|
5||z|z}
|
j|
gt
j.||
|
jt|
|z
}|j|||dddddddy#1swYLxYw#1swYxYw#1swYxYw#1swY8xYw#1swYyxYw)N c939cc13397c1d37de6ae0e1cb7c423cb3d8cc017cbb89b39e0f67e2 c3b3c41f113a31b73d9a5cd432103069 24825602bd12a984e0092d3e448eda5f 93fe7d9e9bfd10348a5606e5cafa7354 0032a1dc85f1c9786925a2e71d8272ddaeadzgcm(aes))rX
re
assoclenr)rX
re
rx
r)r4rU
rrM
rrr\
r]
ALG_SET_AEAD_AUTHSIZErrf
rg
rV
rrrrStructrr
ALG_SET_OP
ALG_SET_IVALG_SET_AEAD_ASSOCLENrh
)rZr^
re
plainassocexpected_ctexpected_tagtaglenrx
rW
rX
rresr
pack_uint32s               rtest_aead_aes_gcmz&LinuxKernelCryptoAPI.test_aead_aes_gcmsmm>?
]]5
6

@A

@Amm$FG}}%GH\"u:
__VZ
01	8DOOFNNF,>,>DOOFNNF,H,H &
*KKMEB
>  F$9$9b*2&//!K

5&//2

5!gghU3f<=  c(F7.CD  sF78}=
>KKMEB
>em  #6+@+@R*2!4gghU3f<=  c(F7.CD  sF78}=

>!--,11KKKMEB
>em

Ennf&7&7VEZEZ9[\nnf&7&7SW9MPR9RSnnf&B&BKPXDYZggc#h/0  c(F7.CD  sF78}=
>KKMEB
8k)L8  #6+@+@R*2!4ggc#h/0  HI7
8Y1	81	8
>
>
>
>
>
>
8
8Y1	81	8sq'A5QB/PQ(A6P"<QC.P/Q%AP;QP	Q"P,	'Q/P8	4Q;Q	QQc|jdd5}tjd}|jtj
tj||j\}}|5|jd}|jt|dddddddy#1swYxYw#1swYyxYw)Nrngdrbg_pr_sha256rI)rM
rurandomrrr\
r]
rrrr)rZrW

extra_seedrX
rrns      rtest_drbg_pr_sha256z(LinuxKernelCryptoAPI.test_drbg_pr_sha256s__U$4
5	.BJOOFNNF,>,>
KKKMEB
.WWR[  R"-
.		.	.
.
.		.	.s$AB7--B+B7+B4	0B77Cc&tjtjtjd}|5|jt5|jddd|jt5|jdddd|jt5|jdddd|jt5|jtjdddd|jt5|jtjdddddddy#1swYxYw#1swYxYw#1swYxYw#1swYuxYw#1swYBxYw#1swYyxYw)Nr)rX
r)rX
rx
rZ)rr6r2rrrf
rg
r\s  rtest_sendmsg_afalg_argsz,LinuxKernelCryptoAPI.test_sendmsg_afalg_argss\}}V]]F,A,A1E
	J""9-
%""$
%""9-
,""d"+
,""9-
&""1%
&""9-
L""f&;&;d"K
L""9-
J""f&;&;b"I
J	J	J
%
%
,
,
&
&
L
L
J
J	J	JsFEF:E
F*E#<F"E/;F"E;:FE	FE 	F#E,	(F/E8	4F;F	FFc|tjtjtjd}|j|j|jt5|jdddd|jtd5|jdddd|jt5|jdddd|jtd5|jddddy#1swYxYw#1swYuxYw#1swYRxYw#1swYyxYw)Nr)
tttttttttttttrz
type too long)ttttttttttttttr)r}?nnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnz
name too long)r}@nnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnn)
rr6r2ryr!rr~	rrrr\s  rtest_length_restrictionz,LinuxKernelCryptoAPI.test_length_restrictions}}V]]F,A,A1E

#

0
1	*II()	*

#
#J
@	*II()	*

0
1	*II()	*

#
#J
@	*II()	*	*	*	*	*	*	*	*	*	*s0$DDD&3D2DD#&D/2D;N)
rarbrcrM
rr)rY
r_
ro
r
r
r
r
rdr?rrI
rI
*s	$W##Aq)9*9"9$W##Aq)&4*&4P$W##Aq)<8*<8|$W##Aq).*.J$*r?rI
rrceZdZdZy)TestMacOSTCPFlagscB|jtjyr<)rr
TCP_KEEPALIVErYs rtest_tcp_keepalivez$TestMacOSTCPFlags.test_tcp_keepalives,,-r?N)rarbrcr
rdr?rr
r
s.r?r
winzrequires WindowsceZdZhdZdZy)TestMSWindowsTCPFlags>
TCP_MAXSEGTCP_KEEPCNTTCP_NODELAYTCP_FASTOPENTCP_KEEPIDLE
TCP_KEEPINTVLcttDcgc]}|jds|}}|Dcgc]}||jvs|}}|j	g|dycc}wcc}w)NTCPzANew TCP flags were discovered. See bpo-32394 for more information)dirrru
knownTCPFlagsr)rZr$providedunknowns    rtest_new_tcp_flagsz(TestMSWindowsTCPFlags.test_new_tcp_flagssc"6{B!all5.AABB&F!43E3E*E1FFWO	QCFsA!A!A&A&N)rarbrcr
r
rdr?rr
r
sMQr?r
cJeZdZdZdZdZejee	dxs
ee	ddejejddZ
ejejd	ejejdd
Zy)CreateServerTestc6tj}tjd|f5}|j	|jdd|j	|jd|dddtjrwtjd|ftj5}|j	|jdd|j	|jd|dddyy#1swYxYw#1swYyxYw)Nrrrrr)rrr
create_serverrrrrqrZrWrMs   rtest_addresszCreateServerTest.test_addresss--/

!
!;"5
6	:$T--/2K@T--/2D9	:%%%%udm-3__>
>AE  !1!1!3A!6>  !1!1!3A!6=
>
>&	:	:
>
>sAD2ADDDc>tjd5}|j|jtj|j|j
tjdddtjrtjdtj5}|j|jtj|jj
tjdddyy#1swYxYw#1swYyxYw)Nrrrr)
rr
rrrTr}rBrrrq)rZrMr$s   rtest_family_and_typez%CreateServerTest.test_family_and_types

!
!"2
3	<tT[[&..9TYY(:(:;	<%%%%jI
@Q  6??;  F,>,>?
@
@&	<	<
@
@sAD(ADDDcTttds6|jt5tjdddddytjd5}|jtjtj}|j|ddddtjdd5}|jtjtj}|j|ddddy#1swYyxYw#1swYvxYw#1swYyxYw)NSO_REUSEPORT)rrT)
reuse_portr)
rrrrr
rrr
rr)rZrMrs   rtest_reuse_portz CreateServerTest.test_reuse_port%sv~."":.
H$$%5$G
H
H%%&67
)4oof&7&79L9LM  a(
)%%&64H
,Doof&7&79L9LM##C+
,
,

H
H
)
)
,
,s%DAD<ADDDD'rIPV6_V6ONLYz IPV6_V6ONLY option not supportedrcxtjdtj5}dddy#1swYyxYw)Nr
r)rr
rqr\s  rtest_ipv6_only_defaultz'CreateServerTest.test_ipv6_only_default1s3

!
!*V__
E	L	L	L	Ls09dualstack_ipv6 not supportedctjdtjd5}|j|jtjdddy#1swYyxYw)Nr
Trdualstack_ipv6)rr
rqrrr\s  rtest_dualstack_ipv6_familyz+CreateServerTest.test_dualstack_ipv6_family9sM
!
!*V__157	;:>T[[&//:	;	;	;s+AA$N)rarbrcr
r
r
rrrrrrrr
rhas_dualstack_ipv6r
rdr?rr
r
s	>@
,X__.999 -8879X335RSLT9LX__2224435X335RS;T5;r?r
ceZdZejZdZdZdZe	jejddZ
e	jej de	jejddZe	jej de	jejddZy	)
CreateServerFunctionalTestc0fd}tj|jjtj||f}|j
j
|jjjy)Nc*|5|j\}}|5jj|jd}|s	ddddddy|j	|ddddddy#1swYxYw#1swYyxYwr)rrrLrr)rMrrr
rrZs    rrunz3CreateServerFunctionalTest.echo_server.<locals>.runFs
&++-a&JJt||,))D/C	&
&
&LL%&
&
&&&
&
&s.B	0A=
B	A=,B	=B	B		Br	)	rqrrrLrrryrr)rZrMr
rrs`   @recho_serverz&CreateServerFunctionalTest.echo_serverEsd	&!%!!D8<T\\2
		r?ctj|5}|j|j|j||j	d|j|j
dddddy#1swYyxYw)Nrrr)rrrLrrrr)rZrrrMs    recho_clientz&CreateServerFunctionalTest.echo_clientWse
]]&
)	6TOODLL)LLLL TYYt_f5		6	6	6sAA??Bctj}tjd|f5}|j	||jd|ftjdddy#1swYyxYw)Nrr)rrrr
r
r
rTr
s   r	test_tcp4z$CreateServerFunctionalTest.test_tcp4^sd--/

!
!2t*
-	BT"k40&..A	B	B	Bs4A))A2rc
tj}tjd|ftj5}|j||j
d|ftjdddy#1swYyxYw)Nrrrrrrr
rqr
r
r
s   r	test_tcp6z$CreateServerFunctionalTest.test_tcp6dsi--/

!
!2t*)/:	==AT"eT]FOO<	=	=	=s4A99Br
ctj}tjd|ftjd5}|j||j
d|ftjdddy#1swYyxYw)NrTr
r)rrrr
rqr
r
rTr
s   rtest_dual_stack_client_v4z4CreateServerFunctionalTest.test_dual_stack_client_v4nsr--/

!
!2t*V__157	B:>T"k40&..A	B	B	B4A::Bctj}tjd|ftjd5}|j||j
d|ftjdddy#1swYyxYw)NrTr
rr
r
s   rtest_dual_stack_client_v6z4CreateServerFunctionalTest.test_dual_stack_client_v6xsm--/

!
!2t*V__157	=:>T"eT]FOO<	=	=	=r
N)rarbrcrrurLr
r
r
rrrrr
rrr
r
r
rdr?rr
r
Bs&&G$6BX335RS=T=X__2224435X335RSBT5BX__2224435X335RS=T5=r?r
send_fdsrecv_fdsceZdZdZy)SendRecvFdsTestsc	"d}d}tdDcgc]}tj}}|j|||Dcgc]\}}|	}}}t	j
tjtj\}}	|5|	5t	j|tg|t	j|	ttdzt|dz\}
}}}
|j||dddddd|j
t|jtt||jdt|D]7\}}|\}}tj|t|j!9t|D]D\}}tj"|d}|j|t|j!Fycc}wcc}}w#1swYxYw#1swYxYw)Ncl|D]/\}}tj|tj|1yr<rr!)pipesrfd2s   rclose_pipesz8SendRecvFdsTests.testSendAndRecvFds.<locals>.close_pipess+!
S


r?c<|D]}tj|yr<r
)rjr{s  r	close_fdsz6SendRecvFdsTests.testSendAndRecvFds.<locals>.close_fdss

r?rrrr)rCrpiperyrr$rRrBr
rr
rrrmrgrrhr)rZr
r
rr
rfdwfdrjsock1sock2r
fds2rrr6rs                rtestSendAndRecvFdsz#SendRecvFdsTests.testSendAndRecvFdss	
	
%*"I.q..U+#()xsCs))((9K9KLu
	-E	-OOEC5#.%+__UCHqL#c(UV,%W"CudOOIt,		-	-	
c"TCH-"$E*	/JE3HCHHS#e*++-.	/$D/	9JE3773$DTCJ$5$5$78	9-/)	-	-	-	-s0G,G1HA'G78H7H	<HHN)rarbrcr
rdr?rr
r
s#9r?r
cttj}tjtjg|yr<)rthreading_setupraddModuleCleanupthreading_cleanup)thread_infos rsetUpModuler
s*"224K.@@O;Or?__main__)rtestrtest.supportrrr_threadrrrr+rr
rr
rrDrtrr	rrrrr	rrBrrqrr	weakrefrr	rrrequires_working_socketrrhrrsystemrrrr%r*r.r3r7r:r>rDrHrrNHAVE_SOCKET_CANHAVE_SOCKET_CAN_ISOTPHAVE_SOCKET_CAN_J1939HAVE_SOCKET_RDSHAVE_SOCKET_ALGHAVE_SOCKET_QIPCRTRHAVE_SOCKET_VSOCKrHAVE_SOCKET_UDPLITEHAVE_SOCKET_BLUETOOTHHAVE_SOCKET_HYPERVrZrrrRrfrjrmrrrrrrrrrrrrr!r*r4r9rBrHrPrVr^rbrerhrlrorsrrrrrrrCrSrrr{rrrrrr/rFrOrxrrrrrrrrrr(r2r8rTrdrrXr\r_rarcrrhrkrmrorrrtrvrxrzr|rrrrrrrrrrrrrrrrrrrrrrrrrr+rtrrrrrrrrrrrrr	r	r	r#	r<	rW	r	r	r	r	r	r	r	r	r	rr	r	rF
rI
r
rur
r
r
r
r
ramainrdr?r<module>r
s"&)			

	





 t,)009	hoo5 (
..#$.0.0"$"$*,&(f&78.0(*U[[

&
&
	H%%	H%%7
777&0+H%%0+f
7H%%
7 mm^,M>,,M>,(
35, 1>,5,,M>,(,M>,,$-&
13WY!^
9;H$5$5~;3.
<3/3B,X&&,81X&&10~,7,,>!!76!!H33A'A
6>
6A,A@,@XlX2\2 L 
A=AY}Y/.F3>TG**TGn&_&IJP[8$$P[KP[f_&IJW=#W=KW=t*,OP'!!'Q'T*,OP:!!:Q:z_&KLG8$$GMG"_&KL<9#<9M<9|(
357x((7576$-&
13+DX&&+D3.+D\*@B"**"B"J'>@/7h''/7@/7dx!&x!v3(3:(
3530353nt8/t8n	6	6FF@@9O9*

(5?5t@/t@n:":"z.."SM/SMl  3 F&:M5')<M5`8IX&&8Ivf!0f!Ro7oh
	6:4k	
fmmY'	/1G	(	fmmY'	\#9	(	fmm^,	)+A	-	17;5|1fmmY']//1OPz<(	02I	)Q(	fmmY']//1OPz<(	l$;	)Q(	fmm^,]//1OPz<(	*,C	)Q-	fmmY']//1OP
fn%z<(	&:&=	)&Q(	fmm^,]//1OP
fn%z<(	*:*>*A	)&Q-	(
35	!::4o	5	
(
35
fmmY'	35O	(5	(
35
fmmY'	'A	(5	(
35
fmm^,	-/I	-5	(
351";;57G151fmmY']//1OP(
35z<(	46Q	)5Q(
	fmmY']//1OP(
35z<(	,(C	)5Q(
	fmm^,]//1OP(
35z<(	.0K	)5Q-
	fmmY']//1OP(
35
fn%z<(	*>&A	)&5Q(	fmm^,]//1OP(
35
fn%z<(	.>*>*E	)&5Q-		55{	fmmY'	')?	(	fmmY'	\#<+	(	fmm^,	)+D/	-	
	$<$<$<n	
fmmY'NOy-8	.0M	9P(	fmmY'NOy-8	RL*C9	R9P(	Rfmm^,NOy-8	R 02K =	R9P-	R	$<$<n	fmmY'
fi 	.0M	!(	fmmY'
fi 	L*C9	!(	fmm^,
fi 	 02K =	!-	fmmY	2
fi|<	0M	=3	fmmY7
fi|<	%5}%B	=8	""@fn%WVW-M1MBD$M!7$MD&$MRfn%WVW-M1MBD4F!7!:!9;4FD&4Fn)( #. #F]/]@`
1`
FiG(?iGX*A
+B
)@*A.E"F")<P5 1 1P5fD4m^D4N>]N>>75]75rK]K.(
35K*K5K.$X&&$.S\\W,.CD4H!2!24HE4HnWVY/1LMG7X&&G7NG7TP:&P:f




(_&MO#x  #O#,_&MO$**N$O$N)9/)9X@6h''@6FWV_5029$8,,9$29$xRWW_&89_&<=b#
b#>:b#JF=1F=RWR,<>7 57>7_&78D*8,,D*9D*NS\\X-/DE.)).F.
S\\,,U35GHQH--QIQ,0;x((0;f>=!2!2>=@fj!
fj!
fi $9x(($9!""$9NP
zHMMO_TOEGsEAI	AI'AI5IAI$I#AI$I'AI2I1AI2I5AJI?AJ