python (3.11.7)

(root)/
lib/
python3.11/
test/
__pycache__/
test_socket.cpython-311.opt-2.pyc

e'ddlZddlmZddlmZddlmZddlmZddlZddlZddl	Z	ddl
Z
ddlZddlZddl
Z
ddlZddlZddlZddlZddlZddlZddlZddlmZddlZddlZddlZddlZddlZddlZddlZddlZddl Z 	ddl!Z!n
#e"$rdZ!YnwxYw	ddl#Z#n
#e"$rdZ#YnwxYwej$d	ej%Z%d
&dZ'dZ(ej)d
kZ*	ddl+Z+n
#e"$rdZ+YnwxYwdZ,dZ-dZ.dZ/dZ0dZ1dZ2dZ3dZ4ej5dZ6e-Z7e.Z8e/Z9e0Z:e1Z;e2Z<e3Z=e>e
dZ?e4Z@ejdjAZBGddejCZDGddejCZEGddeEZFGd d!ejCZGGd"d#ejCZHGd$d%ZIGd&d'eDeIZJGd(d)eEeIZKejLe?d*Gd+d,eFeIZMGd-d.eGeIZNGd/d0eHeIZOejPe#dud1ejLe=d2ejLe,d3kd4Gd5d6ejCeIZQGd7d8eJZRGd9d:ejCeIZSGd;d<ejCZTGd=d>eTZUGd?d@eTeIZVGdAdBeUeVZWGdCdDeTZXGdEdFeXZYGdGdHeTZZGdIdJeZZ[GdKdLeZZ\GdMdNeZZ]GdOdPeZZ^GdQdReZZ_GdSdTe_Z`GdUdVe_ZadWZbdXZcdYZdGdZd[ejCZeejLe7d\Gd]d^ejCZfejLe7d\Gd_d`eNZgejLe8daGdbdcejCZhejLe9ddGdedfejCZiejLe:dgGdhdiejCZjejLe:dgGdjdkeOZkejLe<dlGdmdnejCZlejPe#dud1ejLe=d2GdodpejCZmejLe@dqGdrdsejCZnGdtdueRZoGdvdweKZpejLe?d*GdxdyeMZqGdzd{ZrGd|d}erZsGd~derZtGdderZuGdderZvGdderZwGdderZxGddexZyGddeyZzGddeyZ{GdderZ|Gdde|Z}Gdde|Z~Gddese|ZGddejCZGddexZGddexZGddeteveVe\Zece
j
dGdde{eZece
j
dGdde~eZece
j
dGddeeZGddeteveVe`Zece
j
dejLejdedddGdde{eZece
j
dejLejdedddGdde~eZece
j
dejLejdedddGddeeZece
j
dejLejdece
dedddGddeeZece
j
dejLejdece
dedddGddeseeZejLe?d*GddeteveVe]ZejLe?d*ece
j
dGdde{eZejLe?d*ece
j
dGdde~eZejLe?d*ece
j
dGddeeZejLe?d*GddeteveVeaZece
j
dejLejdejLe?d*edddGdde{eZece
j
dejLejdejLe?d*edddGdÄde~eZece
j
dejLejdejLe?d*edddGdńdeeZece
j
dejLejdejLe?d*ece
dedddGdDŽdeeZece
j
dejLejdejLe?d*ece
dedddGdɄdeseeZGd˄deweWe[Zece
j
dGd̈́dezeZece
j
dGdτde~e}eZece
j
dGdфdee}eZGdӄdeueweWe^Zece
j
dejPe*dզeddddئGdلdezeZece
j
dejPe*dզeddddئGdۄde~e}eZece
j
dejPe*dզeddddئGd݄dee}eZGd߄deweWeYZece
j
dece
dGddezeZece
j
dece
dGdde~e}eZece
j
dece
dGddee}eZece
j
ddece
dddGddeeZece
j
ddece
dddGddeseeZGddZecedejLe>edpe>eddGddee\ZecedejLe>edpe>eddGddeeUe[ZGddeJZGddeSZGddeJZGddeRZGddeZGddeZGddeZGddeZGdd	eZGd
deZGdd
eZGddeeoZGddejCZGddeDeIZGddeDeIZGddeDZGddeEZejLe?d*GddeFZGddejCZejLejdkdGd d!ejCZejLe>e
dd"Gd#d$ejCZGd%d&eRZd'Zd(Zd)Zd*ZejLeæd+Gd,d-ejCZejLeæd+Gd.d/ejCeIZGd0d1eJZGd2d3ejCZejLe>e
d4d5Gd6d7ejCZejLejd8kd9ejLe!d:Gd;d<eDZGd=d>eJZejLe>ed?d@GdAdBe˦ZejLe;dCGdDdEejCZejLejdFkdGGdHdIejCZejLejdJdKGdLdMejCZGdNdOejCZGdPdQejCZece
dRece
dSece
dGdTdUejCZӐdVZeՐdWkrejdSdS(XN)support)	os_helper)
socket_helper)threading_helper)proxyFT)moduleuMichael Gilfix was hereሴ
utf-8AIXc,tdSttdsdS	tdd5}tj|tjd}dddn#1swxYwYt
jd|dS#t$rYdSwxYw)NIOCTL_VM_SOCKETS_GET_LOCAL_CIDz
/dev/vsockrbz    Ir)	fcntlhasattrsocketopenioctlr
structunpackOSError)frs  D/BuggyBox/python/3.11.7/bootstrap/lib/python3.11/test/test_socket.pyget_cidr6s}t6;<<t(
,
%
%	NAvDfMMA	N	N	N	N	N	N	N	N	N	N	N	N	N	N	N
}S!$$Q''tts4B!ABA##B&A#'B
BBc		tjtjtjtj}|n#t
tf$rYdSwxYwdSNFT)rPF_CANSOCK_RAWCAN_RAWcloseAttributeErrorrss r_have_socket_canr%Csd?M&-&.II	
				
G$uu44AA! A!c		tjtjtjtj}|n#t
tf$rYdSwxYwdSr)rr
SOCK_DGRAM	CAN_ISOTPr!r"rr#s r_have_socket_can_isotpr*MfEM&-):F<LMM	
				
G$uu4r&c		tjtjtjtj}|n#t
tf$rYdSwxYwdSr)rrr(	CAN_J1939r!r"rr#s r_have_socket_can_j1939r.Wr+r&c		tjtjtjd}|n#tt
f$rYdSwxYwdSNrFT)rPF_RDSSOCK_SEQPACKETr!r"rr#s r_have_socket_rdsr3asc?M&-)>BB	
				
G$uu4*AAAc		tjtjtjd}|n#tt
f$rYdSwxYwdSr0)rAF_ALGr2r!r"rr#s r_have_socket_algr7kscBM&-)>BB	
				
G$uu4r4c		tjtjtjd}|n#tt
f$rYdSwxYwdSr0)r
AF_QIPCRTRr(r!r"rr#s r_have_socket_qipcrtrr:usdFM&+V->BB	
				
G$uu4r4c(	tdu}|SN)r)rets r_have_socket_vsockr>sD
))4
CJc		tjtjtjtj}|n#t
tf$rYdSwxYwdSr)rAF_BLUETOOTHSOCK_STREAMBTPROTO_RFCOMMr!r"rr#s r_have_socket_bluetoothrDsiH
M&-v/A6CXYY	
				
G$uu4r&c#Ktj}	tj|dVtj|dS#tj|wxYwr<)rgetdefaulttimeoutsetdefaulttimeout)timeoutold_timeouts  rsocket_setdefaulttimeoutrJsa*,,K. )))
 ----- ----sAAIPPROTO_UDPLITEiceZdZdZdZdS)
SocketTCPTestctjtjtj|_t	j|j|_|jdSr<)rAF_INETrBservr	bind_portportlistenselfs rsetUpzSocketTCPTest.setUpsHM&.&2DEE	!+DI66		r?cF|jd|_dSr<rQr!rUs rtearDownzSocketTCPTest.tearDown				r?N__name__
__module____qualname__rWrZr?rrNrNs2
r?rNceZdZdZdZdS)
SocketUDPTestctjtjtj|_t	j|j|_dSr<)rrPr(rQrrRrSrUs rrWzSocketUDPTest.setUps2M&.&2CDD	!+DI66			r?cF|jd|_dSr<rYrUs rrZzSocketUDPTest.tearDownr[r?Nr\r`r?rrbrbs2777r?rbceZdZdZdS)SocketUDPLITETestctjtjtjtj|_tj|j|_dSr<)rrPr(rKrQrrRrSrUs rrWzSocketUDPLITETest.setUps7M&.&2CVE[\\	!+DI66			r?N)r]r^r_rWr`r?rrfrfs#77777r?rfc|eZdZ	dZdZ	dZejeZ	dZ	e	deje	dzzz
Z	dZ
dS)	
SocketCANTestvcan0z=IB3x8sz@3I4l2IxcTtjtjtjtj|_||jj	|j|jfdS#t$r!|
d|jzYdSwxYwN%network interface `%s` does not exist)rrrr r$
addCleanupr!bind	interfacerskipTestrUs rrWzSocketCANTest.setUpsv}fov~NN%%%	+FKK)*****	+	+	+MMA>*
+
+
+
+
+
+	+s A<<'B'&B'N)r]r^r_rsbufsize
can_frame_fmtrcalcsizecan_frame_sizebcm_cmd_msg_fmtrWr`r?rriris}IGM$V_]33N  Osofoo>>BCCO+++++r?riceZdZ	dZdZdS)
SocketRDSTest c,tjtjtjd|_||jj	t
j|j|_dS#t$r|
dYdSwxYw)Nrzunable to bind RDS socket)rr1r2rQrqr!rrRrSrrtrUs rrWzSocketRDSTest.setUpsM&-1FJJ		(((	7%/	::DIII	7	7	7MM5666666	7sA00BBN)r]r^r_rurWr`r?rr{r{s/G77777r?r{c4eZdZ	dZdZdZdZdZdZdS)ThreadableTestc6|j|_|j|_dSr<)rW_ThreadableTest__setUp_setUprUs r__init__zThreadableTest.__init__6sz[


r?c:	|jdSr<)server_readysetrUs rserverExplicitReadyz"ThreadableTest.serverExplicitReady;s%	F	
r?cRtjtj_tj_tj_tj	d_d_
fd}|}|
d}||dzd}td|z}tjj|f_	n
#d_
xYw	jn#jwxYwjjjdS)NFcljrjdSr<)queueqsizegetrUsrraise_queued_exceptionz5ThreadableTest._setUp.<locals>.raise_queued_exceptionKs5z!!
'jnn&&&
'
'r?._T)enterContextrwait_threads_exit	threadingEventrclient_readydonerQueueserver_crashedrqidrfindgetattrthreadstart_new_thread	clientRun
client_threadrrwait)rVr
methodnamerLtest_methods`    rrzThreadableTest._setUpBs*<>>???%O--%O--O%%	[^^
#	'	'	'	'	'	
.///WWYY
S!!!%
dC*$455#4N[N,,	$LLNNNN	"&D


!!####D!!####   	'''''sD)(E)
D33EE,c|j	|n_#t$rR}|j||Yd}~|jdSd}~wwxYw	|jn#|jwxYw|j	r|dSt|dstd	|n1#t$r$}|j|Yd}~nd}~wwxYw|dS#|wxYw)N__call__z%test_func must be a callable function)rrclientSetUp
BaseExceptionrputclientTearDownrrrr	TypeError)rV	test_funces   rrzThreadableTest.clientRunbs   	$			JNN1!!!FFF!!#####	

!!####D!!####	!!!Fy*--	ECDDD	"IKKKK			JNN1	
!!!!!D!!!!s[0B*
B.B(B*BB**C
DE
D>D94E9D>>EE-c td)Nz clientSetUp must be implemented.)NotImplementedErrorrUs rrzThreadableTest.clientSetUpxs!"DEEEr?c^|jtjdSr<)rrrexitrUs rrzThreadableTest.clientTearDown{s 	






r?N)	r]r^r_rrrrrrr`r?rrrsx#J!!!
   (((@""",FFFr?rc"eZdZddZdZdZdS)ThreadedTCPSocketTestrunTestcrt||t|dSN)
methodNamerNrrrVrs  rrzThreadedTCPSocketTest.__init__5t
;;;%%%%%r?cbtjtjtj|_dSr<)rrPrBclirUs rrz!ThreadedTCPSocketTest.clientSetUps=1CDDr?cz|jd|_t|dSr<rr!rrrUs rrz$ThreadedTCPSocketTest.clientTearDown5%%d+++++r?Nrr]r^r_rrrr`r?rrrsI&&&&EEE,,,,,r?rc"eZdZddZdZdZdS)ThreadedUDPSocketTestrcrt||t|dSr)rbrrrs  rrzThreadedUDPSocketTest.__init__rr?cbtjtjtj|_dSr<)rrPr(rrUs rrz!ThreadedUDPSocketTest.clientSetUps=1BCCr?cz|jd|_t|dSr<rrUs rrz$ThreadedUDPSocketTest.clientTearDownrr?Nrrr`r?rrrsI&&&&DDD,,,,,r?rz'UDPLITE sockets required for this test.c"eZdZddZdZdZdS)ThreadedUDPLITESocketTestrcrt||t|dSr)rfrrrs  rrz"ThreadedUDPLITESocketTest.__init__s5""4J"???%%%%%r?cxtjtjtjtj|_dSr<)rrPr(rKrrUs rrz%ThreadedUDPLITESocketTest.clientSetUps#=1BFDZ[[r?cz|jd|_t|dSr<rrUs rrz(ThreadedUDPLITESocketTest.clientTearDownrr?Nrrr`r?rrrsI&&&&\\\,,,,,r?rc"eZdZddZdZdZdS)ThreadedCANSocketTestrcrt||t|dSr)rirrrs  rrzThreadedCANSocketTest.__init__rr?ctjtjtjtj|_	|j|jfdS#t$rYdSwxYwr<)rrrr rrrrsrrUs rrz!ThreadedCANSocketTest.clientSetUpse=PP	HMM4>+,,,,,			
DD	s A
A+*A+cz|jd|_t|dSr<rrUs rrz$ThreadedCANSocketTest.clientTearDownrr?Nrrr`r?rrrsF&&&&,,,,,r?rc"eZdZddZdZdZdS)ThreadedRDSSocketTestrcrt||t|dSr)r{rrrs  rrzThreadedRDSSocketTest.__init__rr?ctjtjtjd|_	|jt
df|j|_dS#t$rYdSwxYwNr)	rr1r2rrrHOSTgetsocknamecli_addrrrUs rrz!ThreadedRDSSocketTest.clientSetUpsv=0EqII	HMM4)$$$ H0022DMMM			
DD	s?A22
B?Bcz|jd|_t|dSr<rrUs rrz$ThreadedRDSSocketTest.clientTearDownrr?Nrrr`r?rrrsF&&&&			,,,,,r?r
need fcntlz%VSOCK sockets required for this test.z-This test can only be run on a virtual guest.c.eZdZddZdZdZdZdZdS)	ThreadedVSOCKSocketStreamTestrc|tj||t|dSrunittestTestCaserrrs  rrz&ThreadedVSOCKSocketStreamTest.__init__8""4J"???%%%%%r?ctjtjtj|_||jj|jtjtf|j	|
|j\|_|_
||jjdSr<)rAF_VSOCKrBrQrqr!rrVMADDR_CID_ANY	VSOCKPORTrTracceptconnconnaddrrUs rrWz#ThreadedVSOCKSocketStreamTest.setUpsM&/63EFF		(((	-y9:::	  """#'9#3#3#5#5 	4=	(((((r?c&tjdtjtjtj|_||jjt}|j	|tfdS)N皙?)timesleeprrrBrrqr!rconnectr)rVcids  rrz)ThreadedVSOCKSocketStreamTest.clientSetUpsg
3=&2DEE'''ii#y)*****r?cp|jd}||tdSN)rrecvassertEqualMSGrVmsgs  r
testStreamz(ThreadedVSOCKSocketStreamTest.testStream1innT""c"""""r?cv|jt|jdSr<rsendrr!rUs r_testStreamz)ThreadedVSOCKSocketStreamTest._testStream.

cr?Nrr]r^r_rrWrrrr`r?rrrsd&&&&)))+++###r?rc0eZdZ	ddZdZdZdZdZdS)	SocketConnectedTestrc>t||dSr)rrrs  rrzSocketConnectedTest.__init__!&&t
&CCCCCr?ct|||j\}}||_dSr<)rrWrrQrcli_connrVraddrs   rrWzSocketConnectedTest.setUpsL##D)))	
  """Y%%''
d


r?cz|jd|_t|dSr<)rr!rrZrUs rrZzSocketConnectedTest.tearDown
s7

&&t,,,,,r?ct||jt|jf|j|_dSr<)rrrrrrS	serv_connrUs rrzSocketConnectedTest.clientSetUps@))$///$	*+++r?cz|jd|_t|dSr<)rr!rrrUs rrz"SocketConnectedTest.clientTearDowns7,,T22222r?Nrr]r^r_rrWrZrrr`r?rrrsmDDDD---
"""
33333r?rc.eZdZddZdZdZdZdZdS)	SocketPairTestrc|tj||t|dSrrrs  rrzSocketPairTest.__init__rr?cFtj\|_|_dSr<)r
socketpairrQrrUs rrWzSocketPairTest.setUps$/11	4888r?cF|jd|_dSr<rYrUs rrZzSocketPairTest.tearDown"r[r?cdSr<r`rUs rrzSocketPairTest.clientSetUp&r?cz|jd|_t|dSr<rrUs rrzSocketPairTest.clientTearDown)rr?Nrr
r`r?rrrsd&&&&222


,,,,,r?rc"eZdZ	dZdZdZdS)SocketTestBasec`||_|dSr<)	newSocketrQ
bindServerrUs rrWzSocketTestBase.setUp>s)NN$$	r?cx	||j|j|_dSr<)bindSockrQr	serv_addrrUs rrzSocketTestBase.bindServerBs2G

di   ..00r?cF|jd|_dSr<rYrUs rrZzSocketTestBase.tearDownGr[r?N)r]r^r_rWrrZr`r?rrr5sF111
r?rc eZdZ	fdZxZS)SocketListeningTestMixinczt|jdSr<)superrWrQrTrV	__class__s rrWzSocketListeningTestMixin.setUpOs.


	r?r]r^r_rW
__classcell__r"s@rrrLs;/r?rc8eZdZ	fdZdZdZdZdZxZS)ThreadedSocketTestMixincntj|i|t|dSr<)r rrrVargskwargsr"s   rrz ThreadedSocketTestMixin.__init__[s9$)&)))%%%%%r?c`||_|dSr<)newClientSocketr
bindClientrUs rrz#ThreadedSocketTestMixin.clientSetUp_s+''))r?c,	|Sr<)rrUs rr-z'ThreadedSocketTestMixin.newClientSocketcs4~~r?cx	||j|j|_dSr<)rrrrrUs rr.z"ThreadedSocketTestMixin.bindClientgs2F

dh,,..


r?cz|jd|_t|dSr<rrUs rrz&ThreadedSocketTestMixin.clientTearDownlrr?)	r]r^r_rrr-r.rr$r%s@rr'r'Tsy&&&&&   ///
,,,,,,,r?r'c>eZdZ	fdZfdZfdZfdZxZS)ConnectedStreamTestMixinct||j\}}||_dSr<)r rWrrQrr)rVrrr"s   rrWzConnectedStreamTestMixin.setUp{sJ


	
  """Y%%''
d


r?c|jd|_tdSr<)rr!r rZr!s rrZz!ConnectedStreamTestMixin.tearDowns:


r?ct|j|j|j|_dSr<)r rrrrrr!s rrz$ConnectedStreamTestMixin.clientSetUps>
(((r?c	|jd|_n#t$rYnwxYwtdSr<)rr!r"r rr!s rrz'ConnectedStreamTestMixin.clientTearDownsa	N  """!DNN			D	
     s $
11)r]r^r_rWrZrrr$r%s@rr3r3rs
"""""
!!!!!!!!!r?r3c&eZdZ	fdZdZxZS)UnixSocketTestBasectj|_|tj|jt
dSr<)tempfilemkdtempdir_pathrqosrmdirr rWr!s rrWzUnixSocketTestBase.setUps@ (**
$-000


r?ctj|j}tj|||tj|dS)N)dir)r;mktempr=rbind_unix_socketrqrunlink)rVsockpaths   rrzUnixSocketTestBase.bindSocksF4=111&tT222	($/////r?)r]r^r_rWrr$r%s@rr9r9sJ2
0000000r?r9ceZdZ	dZdS)UnixStreamBasecTtjtjtjSr<)rAF_UNIXrBrUs rrzUnixStreamBase.newSocket}V^V-?@@@r?Nr]r^r_rr`r?rrHrHs+7AAAAAr?rHc*eZdZ	eZfdZdZxZS)InetTestBaseclt|jd|_dSNr)r rWrrSr!s rrWzInetTestBase.setUps&


N1%			r?c<tj||jdS)Nhost)rrRrSrVrEs  rrzInetTestBase.bindSocks 49555555r?)r]r^r_rrSrWrr$r%s@rrNrNsO+D&&&&&6666666r?rNceZdZ	dZdS)TCPTestBasecTtjtjtjSr<)rrPrBrUs rrzTCPTestBase.newSocketrKr?NrLr`r?rrVrV+-AAAAAr?rVceZdZ	dZdS)UDPTestBasecTtjtjtjSr<)rrPr(rUs rrzUDPTestBase.newSockets}V^V->???r?NrLr`r?rrZrZs+-@@@@@r?rZceZdZ	dZdS)UDPLITETestBasecjtjtjtjtjSr<)rrPr(rKrUs rrzUDPLITETestBase.newSockets}V^V->@VWWWr?NrLr`r?rr]r]s+1XXXXXr?r]ceZdZ	dZdS)SCTPStreamBasecjtjtjtjtjSr<)rrPrBIPPROTO_SCTPrUs rrzSCTPStreamBase.newSockets%}V^V-?#022	2r?NrLr`r?rr`r`s&E22222r?r`ceZdZ	ejZdS)
Inet6TestBaseN)r]r^r_rHOSTv6rSr`r?rrdrds+DDDr?rdceZdZ	dZdS)UDP6TestBasecTtjtjtjSr<)rAF_INET6r(rUs rrzUDP6TestBase.newSockets}V_f.?@@@r?NrLr`r?rrgrgrXr?rgceZdZ	dZdS)UDPLITE6TestBasecjtjtjtjtjSr<)rrir(rKrUs rrzUDPLITE6TestBase.newSockets}V_f.?AWXXXr?NrLr`r?rrkrks+1YYYYYr?rkc,	dfd}d}|r|n|S)NcdSr<r`)r*r+s  rclient_passz%skipWithClientIf.<locals>.client_passrr?ctj|}t|ts
fd|_|S)NcSr<r`)rros r<lambda>z3skipWithClientIf.<locals>.skipdec.<locals>.<lambda>s;r?)rskip
isinstancetypeclient_skip)objretvalroreasons  rskipdecz!skipWithClientIf.<locals>.skipdecsD&v&&s++#t$$	7!6!6!6!6F
r?c`t|tst|dsd|_|S)Nrvc|Sr<r`)rs rrrz5skipWithClientIf.<locals>.noskipdec.<locals>.<lambda>sr?)rtrurrv)rws r	noskipdecz#skipWithClientIf.<locals>.noskipdecs33%%	*m)D)D	*)kCO
r?r`)	conditionryrzr}ros `  @rskipWithClientIfrsV



 .77Y.r?c	fd|D}t|ddd|DzS)Nc4g|]}t||Sr`)r).0namerws  r
<listcomp>z requireAttrs.<locals>.<listcomp>s(EEE'#t2D2DEtEEEr?don't have , c3K|]}|VdSr<r`rrs  r	<genexpr>zrequireAttrs.<locals>.<genexpr>s"*D*DD4*D*D*D*D*D*Dr?)rjoin)rw
attributesmissings`  rrequireAttrsrs^FEEE
EEEG*D*DG*D*D*D!D!DDFFFr?c		d}d|D}|r#ddd|Dz}nVd|D}	tj|}|n&#t$r}t	|}Yd}~nd}~wwxYwt|duddd|D|S)Ncfg|].}t|ttt|,|/Sr`)rtstrrrrrws  rrz!requireSocket.<locals>.<listcomp>sPBBBs#s##B,3FC,@,@BsBBBr?rrc3K|]}|VdSr<r`rs  rrz requireSocket.<locals>.<genexpr>s"'A'A'A'A'A'A'A'Ar?cfg|].}t|trtt|n|/Sr`)rtrrrrs  rrz!requireSocket.<locals>.<listcomp>sF%%%-7sC,@,@IGFC(((c%%%r?zcan't create socket({0}): {1}c34K|]}t|VdSr<)rros  rrz requireSocket.<locals>.<genexpr>#s(++c!ff++++++r?)rrr!rrrformat)r*errrcallargsr$rs      r
requireSocketr
s#CBBdBBBGdii'A'A'A'A'AAAA%%#%%%	
x(A

GGIIII				a&&CCCCCC	
4'..II++d+++++S	2	2333sA%%
B/BBc	
eZdZdZdZejeduddZdZ	dZ
dZd	Zd
Z
ejejdkdd
ZejejddZejejdkdejejddZdZdZdZejeeddejeedddZejeedddZ ejeedd d!Z!ejeed"d#d$Z"ejeed%d&d'Z#d(Z$d)Z%ej&d*Z'd+Z(d,Z)ejeed-d.d/Z*ejeed0d1d2Z+ejeed0d1d3Z,ejeed4d5d6Z-ejeed4d5d7Z.d8Z/d9Z0d:Z1d;Z2d<Z3d=Z4d>Z5ejejdkdd?Z6ejejdkdejeed@dAdBZ7dCZ8dDZ9ejej:dEdFdGZ;dHZ<dIZ=dJZ>dKZ?dLZ@dMZAdNZBdOZCdPZDdQZEdRZFej&dSZGejejdTdUZHejejdTdVZIdWZJejejdTejejdXkdYejeKdZejeedd[d\ZLejejdTejejdXkd]d^ZMejejdTejejdXkdYejeKdZejeedd[d_ZNejejdTejejdXkd]d`ZOdaZPdbZQdcZRejeedddedfZSdgZTdhZUdiZVdjZWdkZXejejdkdldmZYdnZZdoZ[dpZ\dqZ]drZ^dsZ_dS)tGeneralModuleTestscddl}|tj|jutj}||tj|dSr)_socket
assertTruer
SocketTypeassertIsInstancer!)rVrr$s   rtest_SocketType_is_socketobjectz2GeneralModuleTests.test_SocketType_is_socketobject+s\)W^;<<<MOOa!2333						r?ctjtjtj}|5|d|zt||dtjzt||dtjzt||dt||dt||d|dt||t|	t|dddn#1swxYwY|dt||dt|dS)	Nzfd=%iz	family=%sztype=%szproto=0raddr	127.0.0.1rladdrz[closed])
rrPrBassertInfilenoreprassertNotInrrrrrVr$s  r	test_reprzGeneralModuleTests.test_repr2sM&.&*<==
	9	9MM'AHHJJ.Q888MM+6Q@@@MM)f&88$q''BBBMM)T!WW---Wd1gg...
FF#$$$MM'477+++MM#ammoo..Q888	9	9	9	9	9	9	9	9	9	9	9	9	9	9	9	


j$q''***$q''*****sEFFFNzneed _socket modulec	tjtjtj}d|d|jd|jd|jd	}|t|||
n#|
wxYwd|jd|jd|jd}|t||dS)Nz<socket object, fd=z	, family=z, type=z, proto=>z<socket object, fd=-1, family=)rrrPrBrfamilyruprotorrr!)rVr$expecteds   rtest_csocket_reprz$GeneralModuleTests.test_csocket_repr@sN7?G,?@@	88::::qxxxBHT!WWh///
GGIIIIAGGIIIIIxxx2a(+++++sABB(ctjtjtj5}t|}|||dddn#1swxYwYd}t
j	||ddS#t$rYdSwxYw)NzSocket proxy still exists)
rrPrBrrrr
gc_collectfailReferenceError)rVr$ps   rtest_weakrefzGeneralModuleTests.test_weakrefMs
]6>6+=
>
>	5!aAQXXZZ444	5	5	5	5	5	5	5	5	5	5	5	5	5	5	5
	3
HHJJJ
II122222			DD	s$A
BBB!C
CCcJd}|t|dz5t#1swxYwY|t|dz5tj#1swxYwY|t|dz5tj#1swxYwYdS)Nz$Error raising socket exception (%s).rrz
socket.herrorzsocket.gaierror)assertRaisesrrherrorgaierrorrs  rtestSocketErrorz"GeneralModuleTests.testSocketErrorZs4


wC)O

<
<		M								


wC/,A

B
B	 	 -	 	 	 	 	 	 	 	 


wC2C,C

D
D	"	"/!	"	"	"	"	"	"	"	"	"	"s0*..
A!!A%(A%
BBBc
	tjtjtj}||j|d|}|t5}|	d|dddn#1swxYwY|
t|jd|t5}|	d|dddn#1swxYwY|
t|jd|t5}|	dddddn#1swxYwY|
dt|j|t5}|	dd|dddn#1swxYwY|
t|jd|t5}|	dd|dddn#1swxYwY|
t|jd|t5}|	ddddddn#1swxYwY|
dt|j|t5}|	dd	|dddn#1swxYwY|t5}|	ddddddn#1swxYwY|t5}|	ddddn#1swxYwY|
d
t|j|t5}|	dd|ddddn#1swxYwY|
dt|jdS)
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))rrPr(rqr!rrrrrsendtorr	exceptionr)rVr$socknamecms    rtestSendtoErrorsz#GeneralModuleTests.testSendtoErrorsds@M&.&*;<<   	w==??


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


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


y
)
)	#R
HHVT"""	#	#	#	#	#	#	#	#	#	#	#	#	#	#	#

nS%6%6777


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


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


y
)
)	&R
HHVQ%%%	&	&	&	&	&	&	&	&	&	&	&	&	&	&	&

nc",&7&7888


y
)
)	.R
HHVUH---	.	.	.	.	.	.	.	.	.	.	.	.	.	.	.


y
)
)	)R
HHVT4(((	)	)	)	)	)	)	)	)	)	)	)	)	)	)	)

y
)
)	R
HHV															

k3r|#4#4555


y
)
)	-R
HHVQ!,,,	-	-	-	-	-	-	-	-	-	-	-	-	-	-	-

k3r|#4#455555sB**B.1B.7DD!D'F

FFG;;G?G?I,,I03I09KK!$K!*MMM3NNN<OO"%O"+QQQctjtjrtjtjtjtjtjtjtj	tj
dSr<)rrPhas_ipv6rirBr(rSOCK_RDMr2
SOL_SOCKETSO_REUSEADDRrUs rtestCrucialConstantsz'GeneralModuleTests.testCrucialConstantss[?	OOr?cjtjtjtjrtjdSdSr<)rIPPROTO_TCPIPPROTO_UDPrIPPROTO_IPV6rUs rtestCrucialIpProtoConstantsz.GeneralModuleTests.testCrucialIpProtoConstantss7?	 	 	 r?ntWindows specificctjtjtjtjtjtjtjtjdSr<)	rIPPROTO_ICLFXBM
IPPROTO_STIPPROTO_CBTIPPROTO_IGPIPPROTO_RDPIPPROTO_PGMIPPROTO_L2TPrbrUs rtestWindowsSpecificConstantsz/GeneralModuleTests.testWindowsSpecificConstantssPr?zWASI is missing these methodsc~gd}|D]5}ttj|s|d|d6dS)N)_acceptrrr
connect_exgetpeernamerrTrecvfrom
recvfrom_intor
setsockoptshutdownzsocket method z is missing)rrr)rVnamesrs   rtest_socket_methodsz&GeneralModuleTests.test_socket_methodssa



	>	>D6=$//
>		<4<<<===	>	>r?darwinmacOS specific testIPv6 required for this testcrhd}|D]/}|tt|d|d0dS)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)rVoptsopts   rtest3542SocketOptionsz(GeneralModuleTests.test3542SocketOptionssd


,		COO$$&N&N&N&N



		r?ctj}	tj|}n%#t$r|dYnwxYw||ddkd	tj|\}}}n%#t$r|dYnwxYw||g|z}tj|}||vr+|	d|dt|ddSdS)Nname lookup failurerrzError resolving host to ip.z1Error testing host resolution mechanisms. (fqdn: z, all: ))rgethostname
gethostbynamerrtrfind
gethostbyaddrgetfqdnrr)rVhostnameiphnamealiasesipaddrsall_host_namesfqhns        rtestHostnameResz"GeneralModuleTests.testHostnameRess<%''	1%h//BB	1	1	1MM/00000	1	
)+HIII	1&,&:2&>&>#E7GG	1	1	1MM/00000	1#E*W4~b!!~%%IIIY]Y]Y]_cdr_s_s_s_stuuuuu&%s!*AA=BB87B8ctjddfD]*}|tj||+tjfD]0}||tj|d1dS)Nz10.0.0.1255.255.255.255r)rHOSTv4rrr
rr)rVrrSs   rtest_host_resolutionz'GeneralModuleTests.test_host_resolutions"):7HI	?	?DV1$77>>>>#)*	?	?DMM$ 4T : :1 =>>>>	?	?r?c4d}dD]}|t|5tj|dddn#1swxYwY|t|5tj|dddn#1swxYwYdS)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)rrrr
r)rVexplanationrs   r test_host_resolution_bad_addressz3GeneralModuleTests.test_host_resolution_bad_addresss&
3	*	+	+D""7"55
+
+$T***
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+""7"<<
+
+$T***
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+		+	+s#AA	A	+BB	B	sethostnameztest needs socket.sethostname()r	ztest needs socket.gethostname()ctj}	tjdnC#t$r6}|jtjkr|dnYd}~nd}~wwxYw	|tjdtjd|tjdtj|dS#tj|wxYw)Nnewztest should be run as rootsbarr)rr	rrerrnoEPERMrtr)rVoldhnrs   rtest_sethostnamez#GeneralModuleTests.test_sethostnames"$$	u%%%%			w%+%%

:;;;;<;;;;	
	&V/115999v&&&V/115999u%%%%%Fu%%%%s!*
A*,A%%A*.A"C&&C<if_nameindexz$socket.if_nameindex() not available.ctj}|D]\}}||t||t||dtj|}||t|||tj|}||t|||dSr)	rr$rintr
assertGreaterif_nametoindexrif_indextoname)rV
interfacesindexr_index_names      rtestInterfaceNameIndexz)GeneralModuleTests.testInterfaceNameIndexs(**
%
	*
	*KE4!!%---!!$,,,ua(((*400F!!&#...UF+++)%00E!!%---T5))))
	*
	*r?r)z&socket.if_indextoname() not available.c|ttjd|ttjddSNr	_DEADBEEF)rrrr)rrUs rtestInvalidInterfaceIndexToNamez2GeneralModuleTests.testInvalidInterfaceIndexToName)s@	
'6#8!<<<)V%:KHHHHHr?r(z&socket.if_nametoindex() not available.c|ttjd|ttjddSr0)rrrr(rrUs rtestInvalidInterfaceNameToIndexz2GeneralModuleTests.testInvalidInterfaceNameToIndex/s@	
)V%:A>>>'6#8+FFFFFr?getrefcountztest needs sys.getrefcount()c	tjt}tjtddS#t
$r9tjt|kr|dYdSYdSwxYw)Nrz$socket.getnameinfo loses a reference)sysr5r]rgetnameinforr)rVorigs  rtestRefCountGetNameInfoz*GeneralModuleTests.testRefCountGetNameInfo5s	B?8,,Dx*****	B	B	Bx((D00		@AAAAAA100	Bs37<A:9A:cT	tjdddS#t$rYdSwxYw)N)rlrrrr)rr8rrUs rtestInterpreterCrashz'GeneralModuleTests.testInterpreterCrashAsB	~q11111			DD	s
''ctjdtjdtjdtjdi}|D]\}}d|zdz
}dD]3}|||z||||z|z4||}|||z||t|ddS)N r)rririgE#i2Tvl)	rhtonlntohlhtonsntohsitemsrr
OverflowError)rVsizesfuncsizemaskrLswappeds       rtestNtoHzGeneralModuleTests.testNtoHIsr6<r6<5++--	:	:JD$tGq=DG
F
F  T44QtV+=+=+DEEEEd4jjGWt^T222mT59999	:	:r?cnddl}gd}|dgz}dddddzg}||jdz
|jdzgzd	|jgz}|D]*}tj|tj|+|D]*}tj|tj|+|D]N}|ttj||ttj|O|D]N}|ttj||ttj|OdS)
Nr)rrrr@lr)
	_testcapiINT_MININT_MAXrrDrCrBrArrF)rVrS
s_good_values
l_good_valuesl_bad_valuess_bad_valuesks       rtestNtoHErrorsz!GeneralModuleTests.testNtoHErrorsWsZ)))
%4
Bq$w/

q
 )"3A"56
7
i'(
)	
		ALOOOLOOOO		ALOOOLOOOO	>	>AmV\1===mV\1====	>	>AmV\1===mV\1====	>	>r?cL|j}tjdstjdvrd}nd}|D])}	t	j|d}n#t$rY&wxYwtttdrtjdkr t	j|}|||	t	j|d}|||n#t$rd}YnwxYwtj
s|t	j|||t	j|d|||t	j|d||ttjd	|ttjd
dS)N)freebsdnetbsdgnukfreebsd)linuxr)daytimeqotddomain)echorarctcpgetandroidapileveludprOrR)rr7platform
startswithr
getservbynamerrrfr
is_android
getservbyportrrF)rVeqservicesservicerSport2udpports       r
testGetServByz GeneralModuleTests.testGetServByos


L##$HII	5|2225HH4H		G
+GU;;



M122	&((B..(11EBtUOOO	*7E::G
Bw			GGG	!	5Bv#E**G444
6e,,g666Bv#GU33W===-)=rBBB-)=uEEEEEs#A
A#"A#:CC+*C+c|tjdtj5}||ddddn#1swxYwYt	d5|tjdtj5}||ddddn#1swxYwYtjd|tjdtj5}||ddddn#1swxYwYdddn#1swxYwY|ttjd|ttjddS)N
rOspam)	rrrF
gettimeoutrJrGr
ValueErrorr)rVr$rEs   rtestDefaultTimeoutz%GeneralModuleTests.testDefaultTimeouts	
133T:::
]__	3Q\\^^T222	3	3	3	3	3	3	3	3	3	3	3	3	3	3	3&b
)
)		:		:V577<<<
8D  !2!2B777
8
8
8
8
8
8
8
8
8
8
8
8
8
8
8
$T***V577>>>
:D  !2!2D999
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:		:		:		:		:		:		:		:		:		:		:		:		:		:		:		:	
*f&>CCC	
)V%=vFFFFFsl)A00A47A4
;F)C:.F:C>	>FC>	AF)F<FF	FF	FF#&F#	inet_atonztest needs socket.inet_aton()c|dtjd|dtjddS)N0.0.0.0r)rrrzrUs rtestIPv4_inet_aton_fourbytesz/GeneralModuleTests.testIPv4_inet_aton_fourbytessM
	
F$4Y$?$?@@@F$45F$G$GHHHHHr?	inet_ptonztest needs socket.inet_pton()cbddlm}mmfd}fd}d|dd|dd	|d
d|dd
|dt
s||d||d||d||d||dd|dd|dd	|d
d
|d||d||d||d||d||ddS)Nr)rzrrPc|Sr<r`)arPrs rrrz5GeneralModuleTests.testIPv4toString.<locals>.<lambda>ii++r?cJttf||Sr<rrrxrHrrVs  rrrz5GeneralModuleTests.testIPv4toString.<locals>.<lambda>#t'8'8
j!4(
(
r?r|r}sz255.0.255.0sz170.170.170.1701.2.3.4r~rz0.0.0.z	300.0.0.0za.0.0.0z	1.2.3.4.5::1)rrzrrPrr)rVrg
assertInvalidrPrs`   @@rtestIPv4toStringz#GeneralModuleTests.testIPv4toStrings7	>=========+++++




	
,aa	ll;;;,aa
.>.>???,aa0A.B.BCCC,aa	ll;;;,aa0A.B.BCCC	'M!X&&&
a%%%
a###
a%%%
a,aa	ll;;;,aa
.>.>???,aa0A.B.BCCC,aa0A.B.BCCC
a"""
a%%%
a###
a%%%
ar?c	ddlmmm}|sdn%#t
$rdYnwxYwtjdkrE	dn7#t$r*}|j	dkrdYd}~nd}~wwxYwfd	fd
}
dd
dd
d
d
dd
dd
dd|d|d|d|d|d|d|d|dts|d
dd
d d!
d"d#|d$|d%|d&|d'|d(|d)dS)*Nr)rrirIPv6 not available+could not import needed symbols from socketwin32::&'IPv6 might not be supportedc|Sr<r`)rrirs rrrz5GeneralModuleTests.testIPv6toString.<locals>.<lambda>ii!,,r?cJttf|Sr<rrrrVs rrrz5GeneralModuleTests.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)rrrirrtImportErrorr7rirwinerrorrr)rVrrrrirrs`   @@@rtestIPv6toStringz#GeneralModuleTests.testIPv6toStringst	I<<<<<<<<<<
4

2333	I	I	IMMGHHHHH	I<7""
A	(D))))
A
A
A:&&MM"?@@@
A
-,,,,





	
qqww///qqyy1113QQuXX>>>O
A455	
	
	
	
S
A%&&	
	
	
	
;QQx[[III
h
e
g
j!!!
m$$$
m$$$
n%%%
)***	.M,---;
A	
	
	
	
C
A%&&	
	
	
	
O
A233	
	
	
	
'(((
n%%%
m$$$
-...
m$$$
/00000'!(A
	A
A++
B5 BB	inet_ntopztest needs socket.inet_ntop()c(ddlm}mmfd}fd}d|dd|dd	|d
d|d||d
||d||dd|tdd|dd|dd	|d
||d
||d||dd|tddS)Nr)	inet_ntoarrPc|Sr<r`)rrPrs rrrz5GeneralModuleTests.testStringToIPv4.<locals>.<lambda>!rr?cJttf||Sr<rrs  rrrz5GeneralModuleTests.testStringToIPv4.<locals>.<lambda>"rr?z1.0.1.0sz
170.85.170.85sUUrr~rrssr)rrrrPr	bytearray)rVrrrrPrs`   @@rtestStringToIPv4z#GeneralModuleTests.testStringToIPv4s	>=========+++++




	
AA&9$:$:;;;!!,?*@*@AAA*AA.A,B,BCCCAA&9$:$:;;;
a%%%
a%%%
a&&&!!I6I,J,J*K*KLLLAA&9$:$:;;;!!,?*@*@AAA*AA.A,B,BCCC
a%%%
a%%%
a&&&!!I6I,J,J*K*KLLLLLr?c	ddlmmm}|sdn%#t
$rdYnwxYwtjdkrE	dn7#t$r*}|j	dkrdYd}~nd}~wwxYwfd	fd
}
dd
dd

dd
dtd
|d|d|ddS)Nr)rrirrrrrrrc|Sr<r`)rrirs rrrz5GeneralModuleTests.testStringToIPv6.<locals>.<lambda>Hrr?cJttf|Sr<rrs rrrz5GeneralModuleTests.testStringToIPv6.<locals>.<lambda>Irr?rrsz!aef:b01:506:1001:ffff:9997:55:170s
Upsss)rrrirrtrr7rirrrr)rVrrrrirrs`   @@@rtestStringToIPv6z#GeneralModuleTests.testStringToIPv67s	I<<<<<<<<<<
4

2333	I	I	IMMGHHHHH	I<7""
A	(L1111
A
A
A:&&MM"?@@@
A
-,,,,





	
qq///"8 9 9:::/
AQRR	
	
	
	
),B"C"C D DEEE
l###
l###
k"""""rctjtjtj}||jtjD]a}tj}	|	d|fn3#t$r&}|jtjks|dkrYd}~Zd}~wwxYw|
}	tjtj}n%#t$r|dYnwxYw||dd|fd|dz||d|dS)Nr}rrz
%s invalidr)rrPrBrqr!	itertoolscountrfind_unused_portrrrr 
EADDRINUSErr
r	rtrr)rVrErLrSrr
my_ip_addrs       rtestSockNamezGeneralModuleTests.testSockName[sp}V^V-?@@
###""		A 133D
		9d+,,,
	


7e...!q&&39&&&&
!!	1-f.@.B.BCCJJ	1	1	1MM/00000	1	


d1g	:6tAw8NOOOa$'''''s*-B
B6B11B6%C44DDctjtjtj}||j|tjtj}||dkddS)Nrzinitial mode is reuse)	rrPrBrqr!
getsockoptrrassertFalserVrEreuses   rtestGetSockOptz!GeneralModuleTests.testGetSockOptxsh}V^V-?@@
### 163FGG!%<=====r?cjtjtjtj}||j|tjtjd|tjtj}|	|dkddS)Nrrzfailed to set reuse mode)
rrPrBrqr!rrrrrrs   rtestSetSockOptz!GeneralModuleTests.testSetSockOpts}V^V-?@@
###)6+>BBB 163FGG!%?@@@@@r?ctjtjtj5}|ddddn#1swxYwY|t
|jddS)Nrspam)rrPrB
settimeoutrrrrTs  rtestSendAfterClosez%GeneralModuleTests.testSendAfterCloses
]6>6+=
>
>	$OOA															'49g66666sAAActj}|tjdftj|	||ddS#t$r<}||jtj	tj
fYd}~dSd}~wwxYw)Nrrz#close() should raise EBADF/ENOTSOCK)rrr
_LOCALHOSTrr!rrrr EBADFENOTSOCK)rVrErs   rtestCloseExceptionz%GeneralModuleTests.testCloseExceptions}		6$a()))
T[[]]+++11333	=JJLLL

II;<<<<<		D	D	DMM#)ek5>%BCCCCCCCCC	Ds/B
C $1CC ctjtjtj5}||jtjttdr?||jtjtjztjfn%||jtj||j	dddddS#1swxYwYdS)NSOCK_CLOEXECr)
rrPrBrrrrrurrrTs  rtestNewAttributesz$GeneralModuleTests.testNewAttributess]6>6+=
>
>	,$T[&.999v~..
@

di%1F4GG%134444  F,>???TZ+++	,	,	,	,	,	,	,	,	,	,	,	,	,	,	,	,	,	,sB:C11C58C5c0tj}||jtj}|dz}|dz
}|t|jt|f|t|jt|ftj
D]g}tj}	|t|fdS#t$r&}|jtj
ks|dkrYd}~`d}~wwxYwdS)NrRr)rrqr!rrrrFrrrrrrr r)rVrErSbig_portneg_portrLrs       rtest_getsockaddrargz&GeneralModuleTests.test_getsockaddrargs}
###-//%<%<-T84DEEE-T84DEEE""		A 133D
		4,'''
	


7e...!q&&39&&&&
			sC##
D-DDc~|ttjd|ttd|ttd|ttd|ttdtj}||j|t|jdd|tjddS)Nr
SIO_RCVALL	RCVALL_ON
RCVALL_OFFSIO_KEEPALIVE_VALSrO)rdr)	rrrrqr!rrxrrrs  rtest_sock_ioctlz"GeneralModuleTests.test_sock_ioctls
w77888556664455555666(<==>>>MOO   *agr4888	)=99999r?SIO_LOOPBACK_FAST_PATHz1Loopback fast path support required for this testcftj}||j	|tjdn5#t
$r(}d}|j|kr|dd}~wwxYw|t|jtjddS)NTi='zQSIO_LOOPBACK_FAST_PATH is defined but doesn't implemented in this Windows version)
rrqr!rrrrrtrr)rVr$exc
WSAEOPNOTSUPPs    rtest_sio_loopback_fast_pathz.GeneralModuleTests.test_sio_loopback_fast_paths
MOO   	
GGF148888			!M|},,

LMMM		
)QWf.KTRRRRRs A
B#A==Bc	tjddnB#tj$r0}|jtjkr|dd}~wwxYwtjtdD]%}|t|d&tjddtjddtjddtj
rtjddttdrtj
dkrtjtd	tjtdtjtdtjtdtjtj}|D]	\}}}}}||tj|t!|d
|jz|t%|t%|j||tj|t!|d|jz|t%|t%|jtjtddtj}|D](\}}}}}||tj)tjtdddtjtjtddddtjtjddtjtjdtjtjtd}tjtd
}	|||	tjtdtj}tjtdtj}	|||	tjtddtj}tjtdtj}	|||	tjtdddtj}tjtdtj}	|||	tjtddddtj}tjtdtj}	|||	tjddtjtjdtj}tjddtjtjdtj}	|||	|t.tjddttdr<	tjdddddtjdS#tj$rYdSwxYwdS)N	localhostPzbuggy libc versionrrrrfrghttp<AddressFamily.AF_INET: %r><SocketKind.SOCK_STREAM: %r>r)rSrSrru)r)flags)rSrSrrurruAI_NUMERICSERV)rgetaddrinforr EAI_SERVICErtrrlenrIPV6_ENABLEDrr7rfrPrBrvaluerSOL_TCP
AI_PASSIVE	AF_UNSPECrUnicodeEncodeErrorr)
rVrinfoinfosrrursocktyperbs
          rtestGetaddrinfoz"GeneralModuleTests.testGetaddrinfost	{B////			yF...

2333		&tT22	+	+DSYY****	;+++;+++4$$$%	*ub)))122	-&((B..tV,,,4$$$4&&&"4V^V=OPP%*	9	9!FD!QVV^444T&\\+H6<+WXXXS[[#fl*;*;<<<T6#5666T$ZZ)G$*)TUUUSYYDJ8888"4q&2DEE$)	;	; AxAqXv'9::::4q!V^<<<4q!Q0ABBB	4F$4f6H!!,	.	.	.
tT**Dt444AtT6>::tT&.AAAAtT1f.@AAtT0BCCCAtT1a@@tT@@@AtT1aF4EFFtT1BCCCAtQ(8&:La%0
2
2Dq9I$*$6a%+%6
8
8
8	
A,f.@+xXXX6+,,	
";aA#)#8:::::?




		s&A+AA#YYYcT|ttjdddS)N)zmail.python.orgrr)rrrr8rUs rtest_getnameinfoz#GeneralModuleTests.test_getnameinfo's&'6#57LaPPPPPr?networkznetwork is not enabledc0tjd5tjddddn#1swxYwYd}tj|tj|tj|dtjtjdS)Nz
python.orgu!испытание.pythontest.netr)rtransient_internetrr
gethostbyname_exrrrB)rVrcs  r	test_idnazGeneralModuleTests.test_idna+s

-l
;
;	/	/ ...	/	/	/	/	/	/	/	/	/	/	/	/	/	/	/5V$$$'''6!F$4V5GHHHHHs6::c@ttdrttdsdfd}fd}tj\}}tjtj|}	|r|dt5tj	d|
dtjzdddn#1swxYwY|ratjtj|tj	dt|j
dtjztj	d	tjtj|||dS#tj	d	tjtj|||wxYw)
Nalarmrz9signal.alarm and socket.socketpair required for this testcTttjddSrrrxmathacoshr*rVs r
ok_handlerz@GeneralModuleTests.check_sendall_interrupted.<locals>.ok_handlerBs#j$*a88888r?c^ttjdddzdSNrrrrs rraising_handlerzEGeneralModuleTests.check_sendall_interrupted.<locals>.raising_handlerDs*j$*a888
FFFFr?g?rxr)rsignalrrtrSIGALRMrrZeroDivisionErrorrsendallr
SOCK_MAX_SIZETimeoutErrorr!)rVwith_timeoutrrcr$	old_alarms`      rcheck_sendall_interruptedz,GeneralModuleTests.check_sendall_interrupted<s vw''	Wwv|/L/L	WMMUVVV	9	9	9	9	9					 ""1M&./BB		
"S!!!""#455
8
8Q		$!66777
8
8
8
8
8
8
8
8
8
8
8
8
8
8
8
@
fnj999Q!!,	"&)>">@@@
LOOOM&.)444
GGIII
GGIIIII
LOOOM&.)444
GGIII
GGIIIIs21G27C5)G5C99G<C9=A&GAHc0|ddSNFrrUs rtest_sendall_interruptedz+GeneralModuleTests.test_sendall_interrupted[s&&u-----r?c0|ddS)NTrrUs r%test_sendall_interrupted_with_timeoutz8GeneralModuleTests.test_sendall_interrupted_with_timeout^s&&t,,,,,r?ctjtjtj}t|}|t
5}d}t
jdddn#1swxYwY||t|j
jdtjtjtj}|d}t|}d}t
j|t
5d}t
jddddS#1swxYwYdS)Nrr)
rrPrBrassertWarnsResourceWarningrrrrwarningr*makefile)rVrErrrs     rtest_dealloc_warnz$GeneralModuleTests.test_dealloc_warnas}V^V-?@@JJ


o
.
.	!"D   	!	!	!	!	!	!	!	!	!	!	!	!	!	!	!	


aRZ_Q/00111}V^V-?@@MM$JJ


o
.
.	!	!A   	!	!	!	!	!	!	!	!	!	!	!	!	!	!	!	!	!	!s$A55A9<A9/EEEc"tjtjtj5}|d}||t
|dddddS#1swxYwYdS)Nrz<_io.BufferedReader name=-1>)rrPrBrr!rrrVrEfps   rtest_name_closed_socketioz,GeneralModuleTests.test_name_closed_socketiors
]6>6+=
>
>	G$t$$BHHJJJT"XX'EFFF	G	G	G	G	G	G	G	G	G	G	G	G	G	G	G	G	G	GsA
BBBc^tj5}|dd}||||||||t|j|t|j|t|jddddS#1swxYwYdS)Nrr)	buffering)
rrrreadablerwritableseekabler!rrxrs   rtest_unusable_closed_socketioz0GeneralModuleTests.test_unusable_closed_socketioxs+
]__	7tq11BOOBKKMM***R[[]]+++R[[]]+++HHJJJj"+666j"+666j"+666	7	7	7	7	7	7	7	7	7	7	7	7	7	7	7	7	7	7sDD""D&)D&c~tj}	|tdftj||t5|ddddn#1swxYwY|t5|dddn#1swxYwYnK#|t5|dddw#1swxYwYwxYw|t5tjddddn#1swxYwY|t5tjdddddS#1swxYwYdS)NrrrO)	rrrrr!rrrrTrrTs  rtest_socket_closez$GeneralModuleTests.test_socket_closes}	IItQi   L'''""7++

A














""7++


















""7++





















y
)
)		L															


w
'
'		L																		sAC%1BC%BC%BC%8CC C%D-D!D-!D%%D-(D%)D-
E++E/2E/F22F69F6c	fdD]}||5tj5}d|vrdnd}|||5}||j|dddn#1swxYwYdddn#1swxYwYdddn#1swxYwYdS)N)rrrwwwbmoderr	encoding)subTestrrrr*)rVr*rEr,rs     rtest_makefile_modez%GeneralModuleTests.test_makefile_modest.	8	8D4((
8
8]__8'*d{{ttHth??82(($777888888888888888888888888888888
8
8
8
8
8
8
8
8
8
8
8
8
8
8
8	8	8sXB% BA7	+B7A;
;B>A;
?BB%BB%BB%%B)	,B)	c	RdD]}||5tj5}|td5||dddn#1swxYwYdddn#1swxYwYdddn#1swxYwYdS)N)rtrl+rr)zinvalid mode)r-rassertRaisesRegexrxr)rVr*rEs   rtest_makefile_invalid_modez-GeneralModuleTests.test_makefile_invalid_modes`'	,	,D4((
,
,]__,//
NKK,,

d+++,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,	,	,sXBBA-	!B-A1
1B4A1
5B8BBBBBB	"B	cptj}|5ttjdzD])}|t
tj||*	dddn#1swxYwYttjdzD]}tjtjtj|}|	|tjtjtjtj
|}|	|tj
dSrP)rrangepickleHIGHEST_PROTOCOLrrdumpsloadsrPrrB)rVrEprotocolrrus     rtest_picklezGeneralModuleTests.test_picklesY}
	K	K!&"9A"=>>
K
K!!)V\4JJJJ
K	K	K	K	K	K	K	K	K	K	K	K	K	K	K	Kf59::	7	7H\&,v~x"H"HIIFVV^444<V-? J JKKDT6#56666		7	7sAA**A.1A.cdD]t}tjtjtj5}|tdf||dddn#1swxYwYutjtjtj5}|tdf|ddddS#1swxYwYdS)N)rrOr)rrPrBrrrrT)rVbacklogsrvs   rtest_listen_backlogz&GeneralModuleTests.test_listen_backlogs@	$	$Gv~v/ABB
$c$###

7###
$
$
$
$
$
$
$
$
$
$
$
$
$
$
$]6>6+=
>
>	#HHdAYJJLLL																		s#2A,,A0	3A0	!1CC#&C#cddl}tjtjtj5}|t
df|t|j|j	dzddddS#1swxYwYdSr)
rSrrPrBrrrrrFrTrU)rVrSr>s   rtest_listen_backlog_overflowz/GeneralModuleTests.test_listen_backlog_overflows	
]6>6+=
>
>	P#HHdAYmSZ9JQ9NOOO	P	P	P	P	P	P	P	P	P	P	P	P	P	P	P	P	P	PsABBBIPv6 required for this test.cN|ttjtjddfdtjtjtj5}|t|jtjddfddddS#1swxYwYdS)NrrNi)	rrFrr8rrerirBrrrs  r
test_flowinfoz GeneralModuleTests.test_flowinfos-);(/J?	D	D	D
]6?F,>
?
?	U1mQVm6JAs5STTT	U	U	U	U	U	U	U	U	U	U	U	U	U	U	U	U	U	Us/BB!Bctjddtjtjtj\^}}||ddS)Nff02::1de:c0:face:8Dr
)ff02::1de:c0:face:8dr
rr)rrrir(rr)rVrsockaddrs   rtest_getaddrinfo_ipv6_basicz.GeneralModuleTests.test_getaddrinfo_ipv6_basicsP"."&/	

1h	
#GHHHHHr?c|tjtjd|tjtjddS)Nr}r)rrr
rUs rtest_getfqdn_filter_localhostz0GeneralModuleTests.test_getfqdn_filter_localhostsX))6>)+D+DEEE))6>$+?+?@@@@@r?rzdoes not work on WindowszSymbolic scope id does not workz test needs socket.if_nameindex()ctjd\}}tjd|zdtjtjtj\^}}||ddd|fdS)Nrff02::1de:c0:face:8D%r
rG)rr$rrir(rr)rVifindextest_interfacerrHs     r&test_getaddrinfo_ipv6_scopeid_symbolicz9GeneralModuleTests.test_getaddrinfo_ipv6_scopeid_symbolicsx%+$7$9$9!$<!.".#n4&/	

1h	
$:D!W#MNNNNNr?z.Numeric scope id does not work or undocumentedcd}tjdt|zdtjtjtj\^}}||ddd|fdS)N*rMr
rGr)rrrrir(rr)rVrNrrHs    r%test_getaddrinfo_ipv6_scopeid_numericz8GeneralModuleTests.test_getaddrinfo_ipv6_scopeid_numericsk".#c'll2&/	

1h	
$:D!W#MNNNNNr?ctjd\}}ddd|f}tj|tjtjz}||d|zdfdS)NrrFr
ff02::1de:c0:face:8d%1234)rr$r8NI_NUMERICHOSTNI_NUMERICSERVr)rVrNrOrHnameinfos     r&test_getnameinfo_ipv6_scopeid_symbolicz9GeneralModuleTests.test_getnameinfo_ipv6_scopeid_symbolicsn%+$7$9$9!$<!.*D!W=%h0EH]0]^^$;n$Lf#UVVVVVr?cd}ddd|f}tj|tjtjz}||dt|zdfdS)NrRrFr
rrUrV)rr8rWrXrr)rVrNrHrYs    r%test_getnameinfo_ipv6_scopeid_numericz8GeneralModuleTests.test_getnameinfo_ipv6_scopeid_numericsa*D!W=%h0EH]0]^^$;c'll$JF#STTTTTr?cZtjtjtj5}|t	|jd|jjz|t	|jd|jjz|t|jt|jj|t|jt|jjddddS#1swxYwYdS)Nrr)	rrPrBrrrrrurrs  rtest_str_for_enumsz%GeneralModuleTests.test_str_for_enumss ]6>6+=
>
>	=!T!(^^-JQX^-[\\\T!&\\+IAFL+XYYYS]]C,?,?@@@S[[#afl*;*;<<<		=	=	=	=	=	=	=	=	=	=	=	=	=	=	=	=	=	=sC)D  D$'D$cttdd}ttdd}tj|z|z}tjtj|5}||jtj|d||jtj|d||jtj|d||jtj|d||jtjddddS#1swxYwYdS)N
SOCK_NONBLOCKrrrTF)rrrBrPrrursetblocking)rVr`r	sock_typer$s     r test_socket_consistent_sock_typez3GeneralModuleTests.test_socket_consistent_sock_typest;;
v~q99&6E	
]6>9
5
5		9QVV%7888
LLOOOQVV%7888
LLOOOQVV%7888
MM$QVV%7888
MM%   QVV%7888		9		9		9		9		9		9		9		9		9		9		9		9		9		9		9		9		9		9sDE99E=E=chtjtjtj}|}t	tjjdz}t	dtjj	Ddz}tj||d|5}|
|j||
|j||
|jddhddddS#1swxYwYdS)Nrc3(K|]
\}}|dv	|VdS)>rr`Nr`)rrkinds   rrzEGeneralModuleTests.test_unknown_socket_family_repr.<locals>.<genexpr>/s>

d<<<
<<<<

r?rg)rrurrr)rrPrBdetachmax
AddressFamily__members__values
SocketKindrErrrurr)rVrEfdunknown_familyunknown_typer$s      rtest_unknown_socket_family_reprz2GeneralModuleTests.test_unknown_socket_family_repr$sa}V^V-?@@
[[]]V1=DDFFGG!K

$/;AACC





	]%L	,QX~666QV\222MM!'Ar7+++
	,	,	,	,	,	,	,	,	,	,	,	,	,	,	,	,	,	,sAD''D+.D+sendfileztest needs os.sendfile()cGdd}tj5}tjtjtj}tj||tj5|||dddn#1swxYwY|t5||ddzdddn#1swxYwY|t5||ddddn#1swxYwYddddS#1swxYwYdS)NceZdZdZdZdS)<GeneralModuleTests.test__sendfile_use_sendfile.<locals>.Filec||_dSr<rm)rVrms  rrzEGeneralModuleTests.test__sendfile_use_sendfile.<locals>.File.__init__@s
r?c|jSr<rvrUs rrzCGeneralModuleTests.test__sendfile_use_sendfile.<locals>.File.filenoCs	wr?N)r]r^r_rrr`r?rFilert?s2







r?rxrrQ)rr>rcurdirO_RDONLYr!r_GiveupOnSendfile_sendfile_use_sendfilerFr)rVrxrErms    rtest__sendfile_use_sendfilez.GeneralModuleTests.test__sendfile_use_sendfile=sQ								]__	8BK00BHRLLL""6#;<<
6
6++DDHH555
6
6
6
6
6
6
6
6
6
6
6
6
6
6
6""=11
;
;++DDDMM:::
;
;
;
;
;
;
;
;
;
;
;
;
;
;
;""9--
8
8++DDJJ777
8
8
8
8
8
8
8
8
8
8
8
8
8
8
8	8	8	8	8	8	8	8	8	8	8	8	8	8	8	8	8	8	8s~AE$>B)E$)B-	-E$0B-	1E$"C<0E$<D	E$D	E$!EE$E	E$E	E$$E(+E(c||j|||j||}t	j|}||j|||j|||j||||dSNr)rrrurrrqr!rg)rVr$rstyperms2s      r_test_socket_filenoz&GeneralModuleTests._test_socket_filenoOs6***'''
XXZZ
]"
%
%
%!!!	


F+++%(((b)))))r?ctjtjtj}||j|tjdf||tjtjttdrtjtjtj
}||j|tjdf||tjtj
tjrtjtjtj}||j|tj
dddf||tjtjttdrtj}|t j|tjtjtj}||j	|t&j|d||tjtjdS#t,$rYdSwxYwdS)Nrr(rJr)rrPrBrqr!rrrrrrr(rrirer;r<shutilrmtreerJr>rFrPermissionError)rVr$tmpdirs   rtest_socket_filenoz%GeneralModuleTests.test_socket_fileno\s-M&.&*<==   	
"A&'''  FNF4FGGG6<((	K
fnf.?@@AOOAG$$$
FFM&*+++$$Q8IJJJ%	M
fov/ABBAOOAG$$$
FFM(!Q2333$$Q9KLLL69%%	=%''FOOFM6222
fnf.@AAAOOAG$$$
=rw||FH55666((FN)/);=====#



	=	=s3J==
K
Kc|t5tjtjtjdddddS#1swxYwYdS)Ng@E@rrrrrPrBrUs r test_socket_fileno_rejects_floatz3GeneralModuleTests.test_socket_fileno_rejects_float{s


y
)
)	K	KM&.&*<TJJJJ	K	K	K	K	K	K	K	K	K	K	K	K	K	K	K	K	K	K,AAAc|t5tjtjtjdddddS#1swxYwYdS)NfoorrrUs r&test_socket_fileno_rejects_other_typesz9GeneralModuleTests.test_socket_fileno_rejects_other_typess


y
)
)	L	LM&.&*<UKKKK	L	L	L	L	L	L	L	L	L	L	L	L	L	L	L	L	L	Lrc|td5tjtjtjdddddS#1swxYwYdS)Nnegative file descriptorrOrr2rxrrPrBrUs r)test_socket_fileno_rejects_invalid_socketz<GeneralModuleTests.test_socket_fileno_rejects_invalid_sockets

#
#J0J
K
K	I	IM&.&*<RHHHH	I	I	I	I	I	I	I	I	I	I	I	I	I	I	I	I	I	I,AAAzWindows disallows -1 onlyc|td5tjtjtjdddddS#1swxYwYdS)NrirrrUs r#test_socket_fileno_rejects_negativez6GeneralModuleTests.test_socket_fileno_rejects_negatives

#
#J0J
K
K	J	JM&.&*<SIIII	J	J	J	J	J	J	J	J	J	J	J	J	J	J	J	J	J	JrcFd}|t5}tjtjdddn#1swxYwY||jjtj|f|t5}tjtj	tj
tjdddn#1swxYwY||jjtj|fdS)Ni6'r)rrrrmake_bad_fdrrr rrPrB)rVWSAENOTSOCKrs   r$test_socket_fileno_requires_valid_fdz7GeneralModuleTests.test_socket_fileno_requires_valid_fdsg


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

bl(5;*DEEE


w
'
'	02M" ,..
0
0
0
0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0
	


bl(5;*DEEEEEs#'AAA!=C**C.1C.cBtj5}|t5t	j|dddn#1swxYwY|t5}t	jtjtj|dddn#1swxYwY||j	j
tjddddS#1swxYwYdSr)r;NamedTemporaryFilerrrrrPrBrrr r)rVafilers   r%test_socket_fileno_requires_socket_fdz8GeneralModuleTests.test_socket_fileno_requires_socket_fds

(
*
*		Ae""7++
5
5
U\\^^4444
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5""7++
+r
N& <<>>++++
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+

R\/@@@		A		A		A		A		A		A		A		A		A		A		A		A		A		A		A		A		A		AsXD(A#D#A'	'D*A'	+D>CDC	DC	-DDDcddl}ddl}||jddd|}||t
jdS)NrrircT|o|dS)NAF_isupperrjCs rrrz<GeneralModuleTests.test_addressfamily_enum.<locals>.<lambda>!))++=!,,u*=*=r?source)renum
_old_convert_IntEnum_test_simple_enumrri)rVrrCheckedAddressFamilys    rtest_addressfamily_enumz*GeneralModuleTests.test_addressfamily_enumsi#11ox== 2  
	
3V5IJJJJJr?cddl}ddl}||jddd|}||t
jdS)NrrlrcT|o|dS)NSOCK_rrs rrrz9GeneralModuleTests.test_socketkind_enum.<locals>.<lambda>s!))++?!,,w*?*?r?r)rrrrrrrl)rVrrCheckedSocketKinds    rtest_socketkind_enumz'GeneralModuleTests.test_socketkind_enumsi ..lH??/
	
0&2CDDDDDr?cddl}ddl}||jddd|}||t
jdS)NrMsgFlagrcT|o|dS)NMSG_rrs rrrz6GeneralModuleTests.test_msgflag_enum.<locals>.<lambda>s!))++>!,,v*>*>r?r)rrrIntFlagrrr)rVrrCheckedMsgFlags    rtest_msgflag_enumz$GeneralModuleTests.test_msgflag_enumsf++i>>,
	
~v~>>>>>r?cddl}ddl}||jddd|}||t
jdS)NrAddressInforcT|o|dS)NAI_rrs rrrz:GeneralModuleTests.test_addressinfo_enum.<locals>.<lambda>rr?r)rrrrrrr)rVrrCheckedAddressInfos    rtest_addressinfo_enumz(GeneralModuleTests.test_addressinfo_enumsi!//mX==0  	
163EFFFFFr?)`r]r^r_rrr
skipUnlessrrrrrrrr>rrskipIfris_wasirr7rirrrrrrrrr#r.r2r4r:r<rLcpython_onlyr[rsryrrrrrrrrrrrrrrrris_resource_enabledrrrrrrr"r$r.r3r;r?rArDrIrKrrPrSrZr\r^rcrpr}rrrrrrrrrrrrr`r?rrr)s
+++X,.CDD
,
,ED
,333"""(6(6(6T   XD*<==>=X_W_&EFF
>
>GF
>X13HIIX35RSSTSJI:vvv&???+++"X779Z[[X779Z[[&&\[\[&$X88?AA**AA*X)9::ACCIICCIX)9::ACCGGCCGXm44799BB99B:::
>>>.*F*F*FXGGG2X558::II::IX558::  :: >X558::<1<1::<1|X558::MM::M0X558::##::#D(((:>>>AAA777
=
=
=,,,(XD*<==	:	:>=	:XD*<==X)ABBLNNSSNN>=SNNN`QQQX44Y??133
I
I33
I>...---!!!"GGG	7	7	7 888,,,	7	7	7
PPPX35STTUUUTUX35STTIIUTIAAAX35STTX_S\W,.HIIX_S;<<X88:\]]
O
O^]=<JIUT
OX35STTX8::OO::UTOX35STTX_S\W,.HIIX_S;<<X88:\]]WW^]=<JIUTWX35STTX#,'18::UU::UTU===999 ,,,2XZ002LMM88NM8"***===>KKKLLLIIIX_RW_&ABBJJCBJFFF
A
A
AKKKEEE???GGGGGr?rz!SocketCan required for this test.cFeZdZdZejeedddZdZ	ejeedddZ
dZdZejeed	d
dZ
ejeedd
dZdS)BasicCANTestcNtjtjtjdSr<)rAF_CANrr rUs rrz!BasicCANTest.testCrucialConstantss



r?CAN_BCM&socket.CAN_BCM required for this test.cFtjtjtjtjtjtjtjtjtj	tj
tjtjtj
tjtjtjtjtjtjtjtjtjtjtjdSr<)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_FRAMErUs rtestBCMConstantszBasicCANTest.testBCMConstantss		      !!  !!!!	!!""""######&&))))####r?ctjtjtjtj5}	ddddS#1swxYwYdSr<rrrr rs  rtestCreateSocketzBasicCANTest.testCreateSocket
]6=&/6>
J
J	a																		AAActjtjtjtj5}	ddddS#1swxYwYdSr<)rrr(rrs  rtestCreateBCMSocketz BasicCANTest.testCreateBCMSockets]6=&*;V^
L
L	PQ																		rctjtjtjtj5}d}|||||ddddS#1swxYwYdS)N)r)rrrr rrrr)rVr$addresss   rtestBindAnyzBasicCANTest.testBindAnys
]6=&/6>
J
J	7aG
FF7OOOQ]]__g666	7	7	7	7	7	7	7	7	7	7	7	7	7	7	7	7	7	7sABB	Bctjtjtjtj5}|t
d|jdddddS#1swxYwYdS)Ninterface name too long)xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx)rrrr r2rrrrs  rtestTooLongInterfaceNamez%BasicCANTest.testTooLongInterfaceNames
]6=&/6>
J
J	:a""7,E#$6=
:
:
:	:	:	:	:	:	:	:	:	:	:	:	:	:	:	:	:	:	:s#A%%A),A)CAN_RAW_LOOPBACKz/socket.CAN_RAW_LOOPBACK required for this test.c	~tjtjtjtj5}dD]k}|tjtj||||tjtjl	ddddS#1swxYwYdS)N)rr)	rrrr rSOL_CAN_RAWrrr)rVr$loopbacks   rtestLoopbackzBasicCANTest.testLoopbacks]6=&/6>
J
J	Oa"
O
OV/1H%'''  LL!3V5LMMOOOO
O	O	O	O	O	O	O	O	O	O	O	O	O	O	O	O	O	O	OsA/B22B69B6CAN_RAW_FILTERz-socket.CAN_RAW_FILTER required for this test.c	d\}}tjd||}tjtjtjtj5}|tjtj||	||
tjtjd|tjtjt|ddddS#1swxYwYdS)N)iz=IIrm)rpackrrrr rrrrrr)rVcan_idcan_mask
can_filterr$s     r
testFilterzBasicCANTest.testFilters%([99

]6=&/6>
J
J	[a
LL+V-BJOOOZLL!3V5JANN
P
P
P
LL+V-BIjDYDYZZZ		[	[	[	[	[	[	[	[	[	[	[	[	[	[	[	[	[	[sB#DDDN)r]r^r_rrrrrrrrrrrrr`r?rrrsb
X33ACC$$CC$<X33ACCCC777:::X);<<JLLOOLLOX)9::HJJ[[JJ[[[r?rceZdZddZedZedZdZdZdZ	dZ
d	Zd
Ze
jeeddd
Ze
jeedddZdS)CANTestrc>t||dSr)rrrs  rrzCANTest.__init__ rr?c	t|}|dd}tj|j|||S)Nrm)rljustrrrv)clsrdatacan_dlcs    rbuild_can_framezCANTest.build_can_frame#s< d))zz!W%%{3,fgtDDDr?cZ	tj|j|\}}}|||d|fSr<)rrrv)rframerrrs     rdissect_can_framezCANTest.dissect_can_frame*s5" &
c.? G Ghwh00r?c|j|j\}}||j|||d|jdSr)r$rrurcfrsrVrrs   r
testSendFramezCANTest.testSendFrame0sU6??4<00D"%%%a$.11111r?cz|dd|_|j|jdS)Nrsr	rrrrUs r_testSendFramezCANTest._testSendFrame5s6&&t-DEE

dgr?c|j|j\}}||j|dSr<)r$rrurrrs   rtestSendMaxFramezCANTest.testSendMaxFrame9s96??4<00D"%%%%%r?cz|dd|_|j|jdS)NrsrrUs r_testSendMaxFramezCANTest._testSendMaxFrame=s5&&t[99

dgr?c|j|j\}}||j||j|j\}}||j|dSr<)r$rrurcf1cf2rs   rtestSendMultiFrameszCANTest.testSendMultiFramesAsj6??4<00D2&&&6??4<00D2&&&&&r?c|dd|_|j|j|dd|_|j|jdS)NsD3"s"3)r	rrrrrUs r_testSendMultiFrameszCANTest._testSendMultiFramesHsc''.ABB

dh''o>>

dhr?rrc|j|j\}}||j|||\}}}||j|||j|dSr<)rrrurrrrr)rVrrrrrs      r_testBCMzCANTest._testBCMOs8$$T\22D"%%% $ 6 6r : :f---D)))))r?c\tjtjtjtj}||j||jfd|_tgd|_
||j|j
|_tj
}d}d}dx}x}x}}d}	d}
tj|j||||||||	|


}||jz}||}
||
t'|dS)N#)ri"r)rrr(rrqr!rrsrbytesrr	rrrrryrrr)rVbcmopcoderr
ival1_seconds
ival1_usec
ival2_seconds
ival2_usec
bcm_can_idnframesheaderheader_plus_frame
bytes_sents              rtestBCMzCANTest.testBCMXs(mFM6+<fnMM	"""T^%&&&,,,--	&&t{DI>>'BCC
C
C]Z
T1!!

#TW,XX/00
S):%;%;<<<<<r?Nr)r]r^r_rclassmethodr	rrrrrrrrrrrr!r3r`r?rrrsCDDDDEE[E11[1
222
&&&'''   X33ACC**CC*X33ACC==CC===r?rz!CAN ISOTP required for this test.c~eZdZfdZdZdZejee	dddZ
dZdZxZ
S)		ISOTPTestcHtj|i|d|_dSNrjr rrsr)s   rrzISOTPTest.__init__{*$)&))) r?cftjtjtjtjdSr<)rrrr)r(rUs rrzISOTPTest.testCrucialConstantss(



r?ctjtjtjtj5}	ddddS#1swxYwYdSr<rrs  rrzISOTPTest.testCreateSocketrrr)z(socket.CAN_ISOTP required for this test.ctjtjtjtj5}	ddddS#1swxYwYdSr<)rrr(r)rs  rtestCreateISOTPSocketzISOTPTest.testCreateISOTPSocket]6=&*;V=M
N
N	RS																		rc0tjtjtjtj5}|t
d5|ddddn#1swxYwYddddS#1swxYwYdS)Nr)rrr)rrr(r)r2rrrrs  rrz"ISOTPTest.testTooLongInterfaceNames
]6=&*;V=M
N
N	+RS''1JKK
+
+)***
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+	+	+	+	+	+	+	+	+	+	+	+	+	+	+	+	+	+	+s5BA3'B3A7	7B:A7	;BBBc	tjtjtjtj5}|jddf}|||||ddddS#1swxYwYdS#t$r?}|j	tj
kr|d|jznYd}~dSd}~wwxYw)Nr#iVrp)rrr(r)rsrrrrrr ENODEVrtrVr$rrs    rtestBindzISOTPTest.testBinds;
	v}f.?AQRR
8VW~ue3t  $777
8
8
8
8
8
8
8
8
8
8
8
8
8
8
8
8
8
8			w%,&&

E>*++++++++++	s;4BAB>BBBBB
C!"4CC!)r]r^r_rrrrrrrr>rrDr$r%s@rr6r6xs!!!!!X55CEEEE+++r?r6z!CAN J1939 required for this test.ceZdZfdZejeedddZejeedddZ	dZ
xZS)	J1939TestcHtj|i|d|_dSr8r9r)s   rrzJ1939Test.__init__r:r?r-z(socket.CAN_J1939 required for this test.cFtjtjtjtjtjtjtjtjtj	tj
tjtjtj
tjtjtjtjtjtjtjtjtjtjtjdSr<)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_MAXrUs rtestJ1939ConstantszJ1939Test.testJ1939Constantss	%%  ((**!!	!!  """"!!$$!!%%r?ctjtjtjtj5}	ddddS#1swxYwYdSr<)rrr(r-rs  rtestCreateJ1939SocketzJ1939Test.testCreateJ1939Socketr?rc	tjtjtjtj5}|jtjtjtjf}|||	|
|ddddS#1swxYwYdS#t$r?}|jtj
kr|d|jznYd}~dSd}~wwxYwro)rrr(r-rsrLrRrKrrrrrr rBrtrCs    rrDzJ1939Test.testBindsG
	v}f.?AQRR
8VW~v';V=PRXRfft  $777
8
8
8
8
8
8
8
8
8
8
8
8
8
8
8
8
8
8			w%,&&

E>*++++++++++	s;4B7A'B*B7*B..B71B.2B77
D4C;;D)r]r^r_rrrrrr`rbrDr$r%s@rrFrFs!!!!!X55CEE  EE BX55CEEEEr?rFz#RDS sockets required for this test.c eZdZdZdZdZdS)BasicRDSTestc6tjtjdSr<)rAF_RDSr1rUs rrz!BasicRDSTest.testCrucialConstantss





r?ctjtjtjd5}	ddddS#1swxYwYdSr)rr1r2rs  rrzBasicRDSTest.testCreateSockets
]6=&*?
C
C	q																		s
:>>c<d}tjtjtjd5}|tjtj||tjtj|ddddS#1swxYwYdS)Ni@r)rr1r2rr	SO_RCVBUF	SO_SNDBUF)rVrur$s   rtestSocketBufferSizez!BasicRDSTest.testSocketBufferSizes
]6=&*?
C
C	Gq
LL*F,<gFFF
LL*F,<gFFF	G	G	G	G	G	G	G	G	G	G	G	G	G	G	G	G	G	GsABBBN)r]r^r_rrrlr`r?rreresFGGGGGr?receZdZddZfdZdZdZdZdZe	e
j
dd	Ze	e
j
d
dZdZ
d
ZdZdZxZS)RDSTestrc>t||dSr)rrrs  rrzRDSTest.__init__rr?cxttj|_dSr<)r rWrrevtr!s rrWz
RDSTest.setUps'


?$$r?c|j|j\}}||j|||j|dSr<)rQrrurrrrVrrs   rtestSendAndRecvzRDSTest.testSendAndRecvsSY''55
dD)))-----r?cnd|_|j|jdt|jfdSNrrrrrrrSrUs r_testSendAndRecvzRDSTest._testSendAndRecv	0		1tTY&788888r?c|j|jtj\}}||j||j|j\}}||j|dSr<)rQrrurMSG_PEEKrrrss   rtestPeekzRDSTest.testPeek	srY''foFF
dD)))Y''55
dD)))))r?cnd|_|j|jdt|jfdSrvrwrUs r	_testPeekzRDSTest._testPeek	ryr?recvmsgc|j|j\}}}}||j|dSr<)rQrrurr)rVrancdata	msg_flagsrs     rtestSendAndRecvMsgzRDSTest.testSendAndRecvMsg	s@)-):):4<)H)H&gy$D)))))r?sendmsgcrd|_|j|jgddt|jfdS)Ns<hello hello hello hello hello hello hello hello hello hello r`r)rrrrrSrUs r_testSendAndRecvMsgzRDSTest._testSendAndRecvMsg	s6"	$)b!dDI->?????r?c|j|j\}}||j||j|j\}}||j|dSr<)rQrrurdata1data2rss   rtestSendAndRecvMultizRDSTest.testSendAndRecvMulti	snY''55
dT***Y''55
dT*****r?cd|_|j|jdt|jfd|_|j|jdt|jfdS)Nsbaconrsegg)rrrrrSrrUs r_testSendAndRecvMultizRDSTest._testSendAndRecvMulti!	sX

Adi'8999

Adi'899999r?ctj|jgggd\}}}||j||j|j\}}||j|dS)Ng@)selectrQrrrurr)rVrr'rlrrs      r
testSelectzRDSTest.testSelect(	sp-RS991a

di###Y''55
dD)))))r?cnd|_|j|jdt|jfdS)NsselectrrwrUs r_testSelectzRDSTest._testSelect.	s0		1tTY&788888r?r)r]r^r_rrWrtrxr|r~rrrrrrrrr$r%s@rrnrnsDDDD%%%%%...
999***999\&-++**,+*\&-++@@,+@+++:::***9999999r?rnz'QIPCRTR sockets required for this test.c2eZdZdZdZdZdZdZdZdS)BasicQIPCRTRTestctjdSr<)rr9rUs rrz%BasicQIPCRTRTest.testCrucialConstants6	sr?ctjtjtj5}	ddddS#1swxYwYdSr<)rr9r(rs  rrz!BasicQIPCRTRTest.testCreateSocket9	s~
]6,f.?
@
@	A																		
9==ctjtjtj5}||ddddddS#1swxYwYdSNrr)rr9r(rrrs  rtestUnboundzBasicQIPCRTRTest.testUnbound=	s
]6,f.?
@
@	4AQ]]__Q/333	4	4	4	4	4	4	4	4	4	4	4	4	4	4	4	4	4	4s/A&&A*-A*cBtjtjtj5}tj||d||ddddddS#1swxYwYdS)NrrRr)rr9r(rrRrassertNotEqualrs  rtestBindSockzBasicQIPCRTRTest.testBindSockA	s
]6,f.?
@
@	7A#AAMMOOA,>????

 2A666	7	7	7	7	7	7	7	7	7	7	7	7	7	7	7	7	7	7sABBBctjtjtj5}|tt
j|dddddS#1swxYwYdS)NrPrR)rr9r(rrrrRrs  rtestInvalidBindSockz$BasicQIPCRTRTest.testInvalidBindSockF	s
]6,f.?
@
@	LAg}'>KKK	L	L	L	L	L	L	L	L	L	L	L	L	L	L	L	L	L	Ls)A  A$'A$ctjtjtj5}|d||ddddddS#1swxYwYdS)N){rrr)rr9r(rrrrs  rtestAutoBindSockz!BasicQIPCRTRTest.testAutoBindSockJ	s
]6,f.?
@
@	7A
IIj!!!

 2A666	7	7	7	7	7	7	7	7	7	7	7	7	7	7	7	7	7	7sAA;;A?A?N)	r]r^r_rrrrrrr`r?rrr2	sq444777
LLL77777r?rc&eZdZdZdZdZdZdS)BasicVSOCKTestctjdSr<)rrrUs rrz#BasicVSOCKTest.testCrucialConstantsT	s
r?ctjtjtjtjtjtjtjtjdSr<)	rSO_VM_SOCKETS_BUFFER_SIZESO_VM_SOCKETS_BUFFER_MIN_SIZESO_VM_SOCKETS_BUFFER_MAX_SIZErVMADDR_PORT_ANYVMADDR_CID_HOSTVM_SOCKETS_INVALID_VERSIONr
rUs rtestVSOCKConstantsz!BasicVSOCKTest.testVSOCKConstantsW	sP((,,,,))----r?ctjtjtj5}	ddddS#1swxYwYdSr<)rrrBrs  rrzBasicVSOCKTest.testCreateSocketa	s}
]6?F,>
?
?	1																		rc tjtjtj5}|tjtj}|tjtj}|tjtj}|tjtj|dz|tjtj|dz|tjtj|dz||dz|tjtj||dz|tjtj||dz|tjtjddddS#1swxYwYdSNr)	rrrBrrrrrr)rVr$orig_maxr9orig_mins     rrlz#BasicVSOCKTest.testSocketBufferSizee	s%
]6?F,>
?
?	D1||FO$*$HJJH<< & @BBD||FO$*$HJJH
LL=x!|
M
M
M
LL94!8
E
E
E
LL=x!|
M
M
M
X\\\&/#ACC
D
D
D
TAX\\&/#=??
@
@
@
X\\\&/#ACC
D
D
D+	D	D	D	D	D	D	D	D	D	D	D	D	D	D	D	D	D	DsGHH
HN)r]r^r_rrrrlr`r?rrrO	sU
...DDDDDr?rz)Bluetooth sockets required for this test.c eZdZdZdZejejdkddZ	ejejdkddZ
ejejdkpejdd	d
ZdS)BasicBluetoothTestc,tjtjtjtjt
jdkrQtjtjtj	t
j
dstjdSdSdS)Nrr])r
BDADDR_ANYBDADDR_LOCALrArCr7riBTPROTO_HCISOL_HCI
BTPROTO_L2CAPrjBTPROTO_SCOrUs rtestBluetoothConstantsz)BasicBluetoothTest.testBluetoothConstants	s<7""NN  <**955
#""""
#"

#
#r?ctjtjtjtj5}	ddddS#1swxYwYdSr<)rrArBrCrs  rtestCreateRfcommSocketz)BasicBluetoothTest.testCreateRfcommSocket	s
]6.0BFDY
Z
Z	^_																		rrz&windows does not support L2CAP socketsctjtjtjtj5}	ddddS#1swxYwYdSr<)rrAr2rrs  rtestCreateL2capSocketz(BasicBluetoothTest.testCreateL2capSocket	s
]6.0EvG[
\
\	`a																		rz$windows does not support HCI socketsctjtjtjtj5}	ddddS#1swxYwYdSr<)rrArrrs  rtestCreateHciSocketz&BasicBluetoothTest.testCreateHciSocket	s
]6.AS
T
T	XY																		rr]z.windows and freebsd do not support SCO socketsctjtjtjtj5}	ddddS#1swxYwYdSr<)rrAr2rrs  rtestCreateScoSocketz&BasicBluetoothTest.testCreateScoSocket	s]6.0EvGY
Z
Z	^_																		rN)
r]r^r_rrrrr7rirrrjrr`r?rrr	s###X_S\W,.VWWXWX_S\W,.TUUVUX_S\W,R0G0G	0R0REGGGGr?rceZdZddZdZdZdZdZdZdZ	d	Z
d
ZdZdZ
d
ZdZdZdZdZdZejeZejdZdZdZdS)BasicTCPTestrc>t||dSrrrrs  rrzBasicTCPTest.__init__	!$$Tj$AAAAAr?cp|jd}||tdSr)rrrrrs  rtestRecvzBasicTCPTest.testRecv	s3m  &&c"""""r?cD|jtdSr<rrrrUs r	_testRecvzBasicTCPTest._testRecv	C     r?c|jttdz
}|jd}||z}||tdSNr)rrrrr)rVseg1seg2rs    rtestOverFlowRecvzBasicTCPTest.testOverFlowRecv	s[}!!#c((Q,//}!!$''Tkc"""""r?cD|jtdSr<rrUs r_testOverFlowRecvzBasicTCPTest._testOverFlowRecv	rr?cv|jd\}}||tdSr)rrrrrVrrs   rtestRecvFromzBasicTCPTest.testRecvFrom	s7M**400	Tc"""""r?cD|jtdSr<rrUs r
_testRecvFromzBasicTCPTest._testRecvFrom	rr?c|jttdz
\}}|jd\}}||z}||tdSr)rrrrr)rVrrrrs     rtestOverFlowRecvFromz!BasicTCPTest.testOverFlowRecvFrom	sc]++CHHQJ77
d]++D11
dTkc"""""r?cD|jtdSr<rrUs r_testOverFlowRecvFromz"BasicTCPTest._testOverFlowRecvFrom	rr?c~d}	|jd}|sn||z
}#||ddS)Nr?rrffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff)rrr)rVrreads   rtestSendAllzBasicTCPTest.testSendAll	sX	=%%d++D
4KC		
	
k*****r?c>d}|j|dS)Nr)rr)rV	big_chunks  r_testSendAllzBasicTCPTest._testSendAll	s#	y)))))r?c`|j}tj|tjtj}||j||tj|	d}|
|tdSr)rrrfromfdrPrBrqr!rrrr)rVrmrErs    r
testFromFdzBasicTCPTest.testFromFd	s
]
!
!
#
#}R1CDD
###dFM222iiooc"""""r?cD|jtdSr<rrUs r_testFromFdzBasicTCPTest._testFromFd	rr?c|j}||j|d}||tdSr)rduprqr!rrr)rVrErs   rtestDupzBasicTCPTest.testDup	sT}  ""
###iiooc"""""r?cD|jtdSr<rrUs r_testDupzBasicTCPTest._testDup	rr?c|jd}||t|jdSr)rrrrrrrs  rtestShutdownzBasicTCPTest.testShutdown	sGm  &&c"""	
	r?cx|jt|jddSr)rrrrrUs r
_testShutdownzBasicTCPTest._testShutdown	s4C   """""r?c>ddl}|jt|t
|jj|jdz|t
|jjd|jdzz|jddS)Nrrr)	rSrrrrrFrrUUINT_MAXrVrSs  r_testShutdown_overflowz#BasicTCPTest._testShutdown_overflow
sC   -)@#+a/	1	1	1-)@y1A56	8	8	8"""""r?c<|j}|j}|||||jj|t|jjd|j	tj
tjtj|}|
|j	|d}||tdS)Nrr)rrrgrr_closedrrrr!rrPrBrqr)rVrrrErs     r
testDetachzBasicTCPTest.testDetach
s%%''M  ""F###
-...'4=#5t<<<
}V^V-?JJJ
###iiooc"""""r?cD|jtdSr<rrUs r_testDetachzBasicTCPTest._testDetach
rr?Nr)r]r^r_rrrrrrrrrrrrrrrrrrrtestShutdown_overflowrrrr`r?rrr	slBBBB###
!!!###!!!###
!!!###!!!+++***###!!!###!!!###1G0>>###### !!!!!r?rc:eZdZd
dZdZdZdZdZdZdZ	d	S)BasicUDPTestrc>t||dSr)rrrs  rrzBasicUDPTest.__init__$
rr?c|jtt}||tdSr<rQrrrrrs  rtestSendtoAndRecvzBasicUDPTest.testSendtoAndRecv'
7innSXX&&c"""""r?c`|jtdt|jfdSrrrrrrSrUs r_testSendtoAndRecvzBasicUDPTest._testSendtoAndRecv,
'Qty 122222r?c|jtt\}}||tdSr<rQrrrrrs   rrzBasicUDPTest.testRecvFrom/
=I&&s3xx00	Tc"""""r?c`|jtdt|jfdSrrrUs rrzBasicUDPTest._testRecvFrom4
r	r?cR|t|jjddSNrOrrxrQrrUs rtestRecvFromNegativez!BasicUDPTest.testRecvFromNegative7
%*di&8"=====r?c`|jtdt|jfdSrrrUs r_testRecvFromNegativez"BasicUDPTest._testRecvFromNegative;
r	r?Nr
r]r^r_rrrrrrrr`r?rrr"
sDDDD###
333###
333>>>33333r?rc:eZdZd
dZdZdZdZdZdZdZ	d	S)BasicUDPLITETestrc>t||dSr)rrrs  rrzBasicUDPLITETest.__init__C
s!!**4J*GGGGGr?c|jtt}||tdSr<rrs  rrz"BasicUDPLITETest.testSendtoAndRecvF
rr?c`|jtdt|jfdSrrrUs rrz#BasicUDPLITETest._testSendtoAndRecvK
r	r?c|jtt\}}||tdSr<rrs   rrzBasicUDPLITETest.testRecvFromN
rr?c`|jtdt|jfdSrrrUs rrzBasicUDPLITETest._testRecvFromS
r	r?cR|t|jjddSrrrUs rrz%BasicUDPLITETest.testRecvFromNegativeV
rr?c`|jtdt|jfdSrrrUs rrz&BasicUDPLITETest._testRecvFromNegativeZ
r	r?Nrrr`r?rrr?
sHHHH###
333###
333>>>33333r?rceZdZejZfdZdZdZdZ	dZ
dZdZdZ
d	D]Ze
eeedzZ
dZdZdZddZxZS)
SendrecvmsgBasecxtj|_tdSr<)rr
misc_eventr rWr!s rrWzSendrecvmsgBase.setUp
s'#/++


r?c6|j|Sr<)cli_sockrrs  rsendToServerzSendrecvmsgBase.sendToServer
s}!!#&&&r?r`cZ|jj||jt|dzSr<)r$rsendmsg_to_server_defaultsrrVr*s  rsendmsgToServerzSendrecvmsgBase.sendmsgToServer
s4
%t}$T4SYYZZ@@C	Cr?cL|j|g|R}|||Sr<)rregisterRecvmsgResult)rVrErur*results     r	doRecvmsgzSendrecvmsgBase.doRecvmsg
s6g----""6***
r?cdSr<r`rVr,s  rr+z%SendrecvmsgBase.registerRecvmsgResult
s		
r?c2|||dSr<rrVaddr1addr2s   rcheckRecvmsgAddressz#SendrecvmsgBase.checkRecvmsgAddress
s 	
&&&&&r?r)
MSG_CTRUNCMSG_OOBNcL|j}|j}|r||jz}||jz}n|||jz}||jz}||z}||z}||z}||z}||z|z}|r"t	d|||z|z}	|||	z||	zdS)Nz6contradictory set, unset requirements for flags {0:#x})msg_flags_common_setmsg_flags_common_unsetmsg_flags_eor_indicatormsg_flags_non_eor_indicator	Exceptionrr)
rVreorcheckset
checkunsetignore
defaultsetdefaultunsetinbothrJs
          r
checkFlagszSendrecvmsgBase.checkFlags
s8.
2	9$66JD<<LL
_$::JD88L	zk!
	!	Jl"
J&&0	5%%+VF^^55
5:%&0x$77777r?)Nrrr)r]r^r_rLOOPBACK_TIMEOUTfail_timeoutrWr%r'r)r-r+r5r:rrrr9r;r<rEr$r%s@rr r x
s
+L'''"$CCC


''');;''&$":":: #$4848484848484848r?r ceZdZdZdS)RecvmsgIntoMixinc*t|}|j|gg|R}||||dd||d|t|d|df|ddzSr)rrecvmsg_intor+assertGreaterEqualassertLessEqualr')rVrErur*bufr,s      rr-zRecvmsgIntoMixin.doRecvmsg
s  ""C504000""6***q	1---VAY000c*6!9*o&&(6!"":55r?N)r]r^r_r-r`r?rrIrI
s#66666r?rIc.eZdZefdZxZS)SendrecvmsgDgramFlagsBasecDtjtjzSr<)r r<r	MSG_TRUNCr!s rr<z5SendrecvmsgDgramFlagsBase.msg_flags_non_eor_indicator
sww2V5EEEr?)r]r^r_propertyr<r$r%s@rrPrP
sMFFFFXFFFFFr?rPc.eZdZefdZxZS)SendrecvmsgSCTPFlagsBasecDtjtjzSr<)r r;rMSG_EORr!s rr;z0SendrecvmsgSCTPFlagsBase.msg_flags_eor_indicatorsww.??r?)r]r^r_rSr;r$r%s@rrUrUsM@@@@X@@@@@r?rUcVeZdZedZedZedZdZdS)SendrecvmsgConnectionlessBasec|jSr<)rQrUs r	serv_sockz'SendrecvmsgConnectionlessBase.serv_socks
yr?c|jSr<)rrUs rr$z&SendrecvmsgConnectionlessBase.cli_socks	xr?cggd|jfSr)rrUs rr'z8SendrecvmsgConnectionlessBase.sendmsg_to_server_defaultssB4>**r?cB|j||jSr<)r$rrrs  rr%z*SendrecvmsgConnectionlessBase.sendToServers}##C888r?N)r]r^r_rSr[r$r'r%r`r?rrYrYst
XX++X+99999r?rYc@eZdZedZedZdZdS)SendrecvmsgConnectedBasec|jSr<)rrUs rr[z"SendrecvmsgConnectedBase.serv_sock&s
}r?c|jSr<)rrUs rr$z!SendrecvmsgConnectedBase.cli_sock*s
~r?cdSr<r`r2s   rr5z,SendrecvmsgConnectedBase.checkRecvmsgAddress.		
r?N)r]r^r_rSr[r$r5r`r?rr`r` sYXX




r?r`ceZdZfdZxZS)SendrecvmsgServerTimeoutBasect|j|jdSr<)r rWr[rrGr!s rrWz"SendrecvmsgServerTimeoutBase.setUp7s3


!!$"344444r?r#r%s@rrfrf4s8555555555r?rfceZdZdZdZdZdZdZdZdZ	dZ
d	Zd
ZdZ
dZd
ZdZeeddZejdZdZdZdZdZdS)SendmsgTestsc||jtttdSr<rr[rrrrUs rtestSendmsgzSendmsgTests.testSendmsg@4,,SXX66<<<<<r?c||tgttdSr<rr)rrrUs r_testSendmsgzSendmsgTests._testSendmsgDs4--se44c#hh?????r?c||jtttdSr<rkrUs rtestSendmsgDataGeneratorz%SendmsgTests.testSendmsgDataGeneratorGrmr?c||dtfDttdS)Nc3K|]}|VdSr<r`rs  rrz9SendmsgTests._testSendmsgDataGenerator.<locals>.<genexpr>Ls".@.@Qq.@.@.@.@.@.@r?rorUs r_testSendmsgDataGeneratorz&SendmsgTests._testSendmsgDataGeneratorKsN--.@.@3%.@.@.@AAS	#	#	#	#	#r?c||jtttdSr<rkrUs rtestSendmsgAncillaryGeneratorz*SendmsgTests.testSendmsgAncillaryGeneratorOrmr?c||tgddDttdS)Nc3K|]}|VdSr<r`rs  rrz>SendmsgTests._testSendmsgAncillaryGenerator.<locals>.<genexpr>Ts__Aa______r?r`rorUs r_testSendmsgAncillaryGeneratorz+SendmsgTests._testSendmsgAncillaryGeneratorSsK--se_____EES	#	#	#	#	#r?c||jtttdSr<rkrUs rtestSendmsgArrayzSendmsgTests.testSendmsgArrayWrmr?c||tjdtgt	tdS)NB)rr)arrayrrrUs r_testSendmsgArrayzSendmsgTests._testSendmsgArray[sL--u{3/D/D.EFFS	#	#	#	#	#r?c||jtttdSr<rkrUs rtestSendmsgGatherzSendmsgTests.testSendmsgGather_rmr?c||tddtddgttdSNrrorUs r_testSendmsgGatherzSendmsgTests._testSendmsgGathercsG--s2A2wABB.@AA3s88LLLLLr?cb||jdddSNrQdonerr[rrUs rtestSendmsgBadArgszSendmsgTests.testSendmsgBadArgsf.,,T22G<<<<<r?c	|t|jj|t|jd|t|jt|t|jtg|t|jttg|t|jtgt|t|jtggt|t|jtggdt|ddS)Nsnot in an iterablerr)rrr$rr)objectrr%rUs r_testSendmsgBadArgsz SendmsgTests._testSendmsgBadArgsjsU)T]%:;;;)T%9/	1	1	1)T%9 ((	$	$	$)T%9!88*	&	&	&)T%9/	+	+	+)T%9%	+	+	+)T%9%VXX	/	/	/)T%9%Q	2	2	2'"""""r?cb||jdddSrrrUs rtestSendmsgBadCmsgzSendmsgTests.testSendmsgBadCmsg|rr?c	|t|jtgt	g|t|jtgt	ddfg|t|jtgdt	dfg|t|jtgddt	fg|t|jtgdg|t|jtgdg|ddS)Nrdata)rr)rrrrRrrrr)rrr%rUs r_testSendmsgBadCmsgz SendmsgTests._testSendmsgBadCmsgs6)T%9%&((	-	-	-)T%9%688Q"8!9	;	;	;)T%9%1fhh"8!9	;	;	;)T%9%1a"2!3	5	5	5)T%9%&	+	+	+)T%9%"5!6	8	8	8'"""""r?
CMSG_SPACEcb||jdddSrrrUs rtestSendmsgBadMultiCmsgz$SendmsgTests.testSendmsgBadMultiCmsgs0	
,,T22G<<<<<r?c|t|jtggd|t|jtgdt	g|ddS)Nrrr?rrrUs r_testSendmsgBadMultiCmsgz%SendmsgTests._testSendmsgBadMultiCmsgsu)T%9%	.	.	.)T%9%+vxx!8	:	:	:'"""""r?cb||jdddSrrrUs rtestSendmsgExcessCmsgRejectz(SendmsgTests.testSendmsgExcessCmsgRejects0	
,,T22G<<<<<r?c8ttdso|t5}|t
gddgdddn#1swxYwY||jj|	ddS)Nrrr)
rrrrr)rassertIsNonerr r%rVrs  r_testSendmsgExcessCmsgRejectz)SendmsgTests._testSendmsgExcessCmsgRejectsv|,,	2""7++
Hr$$cU[+,FGGG
H
H
H
H
H
H
H
H
H
H
H
H
H
H
Hbl0111'"""""sAA"AcdSr<r`rUs rtestSendmsgAfterClosez"SendmsgTests.testSendmsgAfterClosesr?c|j|t|jt
gdSr<)r$r!rrr)rrUs r_testSendmsgAfterClosez#SendmsgTests._testSendmsgAfterCloses9
'4#7#?????r?N)r]r^r_rlrprrrurwrzr|rrrrrrrrrrrvrrrrrr`r?rriri<st===@@@===###===###===###===MMM===###$===
#
#
#\&,''==('=
(##)(#===
###


@@@@@r?ric~eZdZdZdZdZdZeej	dvddZ
e
jdZd	S)
SendmsgStreamTestsc||jtttdSr<rkrUs rtestSendmsgExplicitNoneAddrz.SendmsgStreamTests.testSendmsgExplicitNoneAddrrmr?c||tggddttdSrrorUs r_testSendmsgExplicitNoneAddrz/SendmsgStreamTests._testSendmsgExplicitNoneAddrs:--seRDAA3s88LLLLLr?c||jdd||j|jdSNraaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaarHrr[rrr"rrGrUs rtestSendmsgTimeoutz%SendmsgStreamTests.testSendmsgTimeoutsV,,S118<<<,,T5F,GGHHHHHr?cL	|jd		|dg#t$rYn,t
$r }|jtjkrYd}~nd}~wwxYw|j	dS#|j	wxYw)NQ?Tr)
r$rr)rrrr ENOMEMr"rrVrs  r_testSendmsgTimeoutz&SendmsgStreamTests._testSendmsgTimeouts	"M$$T***
55(((4445





9,,-,,,,

O!!!!!DO!!!!s7B5
A*B	A*
A% B%A**BB#>r`z<MSG_DONTWAIT not known to work on this platform when sendingc||jdd||j|jdSrrrUs rtestSendmsgDontWaitz&SendmsgStreamTests.testSendmsgDontWaitsX
	
,,S118<<<,,T5F,GGHHHHHr?c	|t5}	|dggtj##1swxYwY||jjtjtj	tj
f|jdS#|jwxYw)NTr)
rrr)rMSG_DONTWAITrrr EAGAINEWOULDBLOCKrr"rrs  r_testSendmsgDontWaitz'SendmsgStreamTests._testSendmsgDontWaits		"""7++
NrN(((R9LMMMN
N
N
N
N
N
N
N
N

MM",, <):ELI
K
K
K
O!!!!!DO!!!!s)B(%AAB(A	AB((CN)
r]r^r_rrrrrr7rirrvrr`r?rrrs===MMMIII
""".cl)3 !!II!!I
$
"
"%$
"
"
"r?rceZdZdZdZdS)SendmsgConnectionlessTestscdSr<r`rUs rtestSendmsgNoDestAddrz0SendmsgConnectionlessTests.testSendmsgNoDestAddrrdr?c|t|jjtg|t|jjtggdddSr)rrr$rrrUs r_testSendmsgNoDestAddrz1SendmsgConnectionlessTests._testSendmsgNoDestAddrs^'4=#8%	!	!	!'4=#8%Q	.	.	.	.	.r?N)r]r^r_rrr`r?rrrs2



.....r?rceZdZdZdZdZdZdZdZdZ	dZ
d	Zd
ZdZ
dZd
ZdZdZdZeeddZejdZeejddZejdZdS)RecvmsgGenericTestsc0||jtt\}}}}||t|||j||g||ddSNTr>r-r[rrrr5rrErVrrrrs     rtestRecvmsgzRecvmsgGenericTests.testRecvmsgs$(NN4>3s88$L$L!WeTc"""  t}555"%%%4(((((r?c:|tdSr<r%rrUs r_testRecvmsgz RecvmsgGenericTests._testRecvmsg
#r?c4||jttdd\}}}}||t|||j||g||ddS)NrTrrrs     rtestRecvmsgExplicitDefaultsz/RecvmsgGenericTests.testRecvmsgExplicitDefaultss$(NN4>36s88Q%C%C!WeTc"""  t}555"%%%4(((((r?c:|tdSr<rrUs r_testRecvmsgExplicitDefaultsz0RecvmsgGenericTests._testRecvmsgExplicitDefaultsrr?c6||jttdz\}}}}||t|||j||g||ddS)NrRTrrrs     rtestRecvmsgShorterz&RecvmsgGenericTests.testRecvmsgShorters$(NN4>36s88b=%B%B!WeTc"""  t}555"%%%4(((((r?c:|tdSr<rrUs r_testRecvmsgShorterz'RecvmsgGenericTests._testRecvmsgShorter%rr?cF||jttdz
\}}}}||tdd|||j||g||ddS)NrFrrrs     rtestRecvmsgTruncz$RecvmsgGenericTests.testRecvmsgTrunc(s$(NN4>36s88a<%A%A!WeTc#2#h'''  t}555"%%%5)))))r?c:|tdSr<rrUs r_testRecvmsgTruncz%RecvmsgGenericTests._testRecvmsgTrunc1rr?c2||jttd\}}}}||t|||j||g||ddS)NrTrrrs     rtestRecvmsgShortAncillaryBufz0RecvmsgGenericTests.testRecvmsgShortAncillaryBuf4s$(NN4>36s88Q%@%@!WeTc"""  t}555"%%%4(((((r?c:|tdSr<rrUs r_testRecvmsgShortAncillaryBufz1RecvmsgGenericTests._testRecvmsgShortAncillaryBuf=rr?c2||jttd\}}}}||t|||j||g||ddS)N(Trrrs     rtestRecvmsgLongAncillaryBufz/RecvmsgGenericTests.testRecvmsgLongAncillaryBuf@s$(NN4>36s88U%D%D!WeTc"""  t}555"%%%4(((((r?c:|tdSr<rrUs r_testRecvmsgLongAncillaryBufz0RecvmsgGenericTests._testRecvmsgLongAncillaryBufIrr?c|j|t|j|jddSr)r[r!rrr-rUs rtestRecvmsgAfterClosez)RecvmsgGenericTests.testRecvmsgAfterCloseLs:'4>4>4HHHHHr?cdSr<r`rUs r_testRecvmsgAfterClosez*RecvmsgGenericTests._testRecvmsgAfterCloseQrr?c	|jd|t|j|jtt|jdS#|jwxYw)Nr)	r[rrrr-rrr"rrUs rtestRecvmsgTimeoutz&RecvmsgGenericTests.testRecvmsgTimeoutTs	"N%%d+++l"ndnc#hh
H
H
H
O!!!!!DO!!!!sAA00Bcl||j|jdSNr)rr"rrGrUs r_testRecvmsgTimeoutz'RecvmsgGenericTests._testRecvmsgTimeout]s0,,T5F,GGHHHHHr?r{c	||jttdz
dtj\}}}}||tdd|||j||g|	|dttdd||jttdtj\}}}}||t|||j||g|	|d||jtt\}}}}||t|||j||g|	|ddS)	NrrrFrRr>rATr)r-r[rrrr{rr5rrErrs     rtestRecvmsgPeekz#RecvmsgGenericTests.testRecvmsgPeek`s%)NN4>36s88a<39?%D%D!WeT	
c#2#h'''  t}555"%%%
	
5&v{A>>		@	@	@%)NN4>36s88Q39?%D%D!WeT	
c"""  t}555"%%%4(((%)NN4>3s88$L$L!WeTc"""  t}555"%%%4(((((r?c:|tdSr<rrUs r_testRecvmsgPeekz$RecvmsgGenericTests._testRecvmsgPeeks#r?rcn|j|j||jt	t
\}}}}||t
|||j||g|	|ddSr)
r[rrGr-rrrr5rrErs     rtestRecvmsgFromSendmsgz*RecvmsgGenericTests.testRecvmsgFromSendmsgs	
!!$"3444$(NN4>3s88$L$L!WeTc"""  t}555"%%%4(((((r?c||tddtddgttdSrrorUs r_testRecvmsgFromSendmsgz+RecvmsgGenericTests._testRecvmsgFromSendmsgsG--s2A2wABB.@AA3s88LLLLLr?N)r]r^r_rrrrrrrrrrrrrrrrrrrrvrrrr`r?rrrs)))))))))***))))))III



"""III\&*%% ) )&% )D ! \&-++)),+)'MM('MMMr?rc&eZdZdZdZdZdZdS)RecvmsgGenericStreamTestsc||jd\}}}}||d|||j||g||ddS)Nrr?r)r-r[rr5rrErs     rtestRecvmsgEOFz(RecvmsgGenericStreamTests.testRecvmsgEOFs$(NN4>4$H$H!WeTc"""  t}555"%%%4(((((r?c8|jdSr<)r$r!rUs r_testRecvmsgEOFz)RecvmsgGenericStreamTests._testRecvmsgEOFs
r?c||jttdz
\}}}}|||j||g||d||jd\}}}}|||j||g||d||z}||tdS)NrFrrT)r-r[rrr5rrrE)rVrrrrrrs       rtestRecvmsgOverflowz-RecvmsgGenericStreamTests.testRecvmsgOverflows%)^^DN47HHqL&B&B"gud  t}555"%%%5)))%)^^DND%I%I"gud  t}555"%%%4(((Tkc"""""r?c:|tdSr<rrUs r_testRecvmsgOverflowz.RecvmsgGenericStreamTests._testRecvmsgOverflowrr?N)r]r^r_rrrrr`r?rrrsP)))### r?rceZdZdZdZdS)RecvmsgTestsc,|t|jj|t|jjddd|t|jjttdd|t|jjtdgdd|t|jjtdd|t|jjtttd|t|jjttdt|jttdd\}}}}|	|t|
||j|	|g||ddS)NrOrruTr)
rrr[rrxrrrrrr5rrErs     rtestRecvmsgBadArgszRecvmsgTests.testRecvmsgBadArgss)T^%;<<<*dn&<a	$	$	$*dn&<c((B	+	+	+)T^%;$R==/1a	1	1	1)T^%; ((Aq	*	*	*)T^%;c((FHHa	1	1	1)T^%;c((Avxx	1	1	1%)N$:$:3s88Q$J$J!WeTc"""  t}555"%%%4(((((r?c:|tdSr<rrUs r_testRecvmsgBadArgsz RecvmsgTests._testRecvmsgBadArgsrr?N)r]r^r_rrr`r?rrrs2))),r?rc>eZdZdZdZdZdZdZdZdZ	dZ
d	S)
RecvmsgIntoTestscttt}|t|jj|t|jjttdd|t|jj|dd|t|jjtgdd|t|jjdgdd|t|jj|tgdd|t|jj|gdd|t|jj|gtd|t|jj|gdt|j|gdd\}}}}|	|tt|	|tt|
||j|	|g||ddS)NrsI'm not writablerOTr)
rrrrrr[rKrrxrr5rrErVrNnbytesrrrs      rtestRecvmsgIntoBadArgsz'RecvmsgIntoTests.testRecvmsgIntoBadArgss=C!!)T^%@AAA)T^%@c((Aq	*	*	*)T^%@q!	%	%	%)T^%@!88*a	,	,	,)T^%@./A	7	7	7)T^%@/1a	1	1	1*dn&A%Q	(	(	()T^%@%1	.	.	.)T^%@%FHH	.	.	.(,~'B'BC5!Q'O'O$S***inn---  t}555"%%%4(((((r?c:|tdSr<rrUs r_testRecvmsgIntoBadArgsz(RecvmsgIntoTests._testRecvmsgIntoBadArgsrr?cttt}|jd|fD\}}}}||tt||tt|||j||g||ddS)Nc3K|]}|VdSr<r`rs  rrz<RecvmsgIntoTests.testRecvmsgIntoGenerator.<locals>.<genexpr>s"1Qr?Tr)	rrrr[rKrr5rrEr
s      rtestRecvmsgIntoGeneratorz)RecvmsgIntoTests.testRecvmsgIntoGeneratorsC!!'+~'B'B( ( $S***inn---  t}555"%%%4(((((r?c:|tdSr<rrUs r_testRecvmsgIntoGeneratorz*RecvmsgIntoTests._testRecvmsgIntoGenerator
rr?ctjddgttz}|j|g\}}}}||tt||t|||j||g|	|ddS)Nr~rTr)
rrrr[rKrtobytesr5rrEr
s      rtestRecvmsgIntoArrayz%RecvmsgIntoTests.testRecvmsgIntoArray
sk#sSXX~..'+~'B'BC5'I'I$S***,,,  t}555"%%%4(((((r?c:|tdSr<rrUs r_testRecvmsgIntoArrayz&RecvmsgIntoTests._testRecvmsgIntoArray
rr?cvtd}td}td}|j|t|dd|g\}}}}||td||td||td||td	|||j||g||d
dS)Ns----s
0123456789s--------------r	Mary had a little lambsMarys
01 had a 9slittle lamb---Tr)	rr[rK
memoryviewrrr5rrE)rVb1b2b3rrrrs        rtestRecvmsgIntoScatterz'RecvmsgIntoTests.testRecvmsgIntoScatter
s'
w


}
%
%
(
)
)'+~'B'B
B!$b)(+(+$%>!?!?@@@Yw//000Y}55666Y'899:::  t}555"%%%4(((((r?c0|ddS)Nr)r%rUs r_testRecvmsgIntoScatterz(RecvmsgIntoTests._testRecvmsgIntoScatter#
s344444r?N)r]r^r_rrrrrrr r"r`r?rrrs)))8	)	)	))))
)
)
)55555r?rceZdZ	ddlZedejZn
#e$rdZYnwxYwee	ddZ
ee	ddZdS)CmsgMacroTestsrNiCMSG_LENc|jtjdz
dz}tt	dtt	|dz
|z}|tjdt
jdjdz|D]\}tj|}||tjdz
||	||j]|
ttjd|
ttj||
ttjtj
dS)NrrrLrrO)socklen_t_limitrr%listr5r'ritemsizerrMrrFr7maxsize)rVtoobigrknr=s     rtestCMSG_LENzCmsgMacroTests.testCMSG_LEN4
s9%(:(::Q>eCjj!!Dv|V)D)D$E$EE	
6?1--u{3/?/?/H1/LMMM	<	<A/!$$CS6?1#5#55q999  d&:;;;;-"===	
-&AAA-#+FFFFFr?rc||jtjdz
dz}tt	dtt	|dz
|z}tjd}||t
jdjdz|D]}tj|}|||||tj	||||tj	dz|
||j|}|ttjd|ttj||ttjtjdS)Nrr'rrLrrO)r(rrr)r5r'rr*rLr%rMrrFr7r+)rVr,rklastr-r=s      rtestCMSG_SPACEzCmsgMacroTests.testCMSG_SPACEI
s|%(9!(<(<<q@eCjj!!Dv|V)D)D$E$EE ##4S!1!1!:Q!>???		A#A&&C##C...##C););<<<##CV_Q-?-?)?@@@  d&:;;;DD-):B???	
-):FCCC-):CKHHHHHr?)r]r^r_rSminrUr(rrrr.r1r`r?rr$r$'
s=#j)*;<<%%%$%
\&*%%GG&%G(\&,''II('IIIs&&r$ceZdZdZdZdZdZdZdZd7d	Z	d
Z
dZdZd
Z
eeddZejdZdZdZejejdkdejedeeddZejejejdkdejeddZejejdkdejedeeddZejejejdkdejeddZdZejejdkddZdZ dZ!dZ"eedd Z#e#jd!Z$d8d"Z%d#Z&d$Z'd%Z(d&Z)d'Z*d(Z+d)Z,d*Z-d+Z.d,Z/d8d-Z0d.Z1d/Z2d0Z3d1Z4d2Z5d3Z6d4Z7d5Z8d6S)9
SCMRightsTesticlg}t|D]}tj\}}|tj||tj|t	j|t|	|
||Sr<)r5r;mkstemprqr>rDr!writerencodeappend)rVr-fdsrLrmrFs      rnewFDszSCMRightsTest.newFDsj
sq		A'))HBOOBIt,,,OOBHb)))HRQ)))JJrNNNN
r?ct|D]m\}}tj|dtj|tj|dt
|ndS)Nrr)	enumerater>lseekSEEK_SETrrrr8)rVr:r-rms    rcheckFDszSCMRightsTest.checkFDsv
sts^^	A	AEArHRBK(((RWR..A

@@@@	A	Ar?c<||j|dSr<)rqcloseRecvmsgFDsr/s  rr+z#SCMRightsTest.registerRecvmsgResult}
s,f55555r?c	B|dD]\}}}|tjkr|tjkrotjd}||dt|t||jzz
|D]}tj|dS)NrrL)	rr
SCM_RIGHTSr	frombytesrr*r>r!)rVrecvmsg_result
cmsg_level	cmsg_type	cmsg_datar:rms       rrBzSCMRightsTest.closeRecvmsgFDs
s1?q0A	!	!,J	9f///!222k#&&

i)II#i..3<*GH)IJKKK!!BHRLLLL	!	!r?c
||tgtjtjt
jd||fgttdS)NrL)	rr)rrrrDrr;r)rVr-s  rcreateAndSendFDszSCMRightsTest.createAndSendFDs
s{	
  ##)#4#)#4#(;sDKKNN#C#C#E"F
G
G
HH					r?rrc\|\}}}}||t|||j||dt
j|||t|	t||tjd}	|D]}
||
t|
\}}}
||t
j
||t
j||
t|t|
t zd|	|
|t|	|||	dS)NTr>r@rArLr)rrr5rrErr6rr)rMrrtuplerrDr'
SIZEOF_INTrEr@)rVnumfdsr,maxcmsgsignoreflagsrrrrr:itemrGrHrIs              rcheckRecvmsgFDszSCMRightsTest.checkRecvmsgFDs
s%+!WeTc"""  t}5554F4E*		,	,	,	
gt,,,S\\8444k#	%	%D!!$.../3,J	9Z):;;;Y(9:::!!)U333S^^j8!<<<MM)$$$$S6***

cr?c	|d||jttddS)NrrrTr-r[rrrUs rtestFDPassSimplezSCMRightsTest.testFDPassSimple
LQt~/23xx!@!@	A	A	A	A	Ar?c
*||tgtjtjt
jd|dfgttdS)NrLr)
rr)rrrrDrr;rrrUs r_testFDPassSimplezSCMRightsTest._testFDPassSimple
s  ##+c4;;q>>22::<<>?
@
@

HH
					r?c	|d||jttddS)NrrrVrUs rtestMultipleFDPassz SCMRightsTest.testMultipleFDPass
rXr?c0|ddSNrrKrUs r_testMultipleFDPassz!SCMRightsTest._testMultipleFDPass
a     r?rc|d||jtttjdtzdSr^)rTr-r[rrrrrOrUs rtestFDPassCMSG_SPACEz"SCMRightsTest.testFDPassCMSG_SPACE
s^	

t~~dnc#hh$/J??AA	B	B	B	B	Br?c0|ddSr^r_rUs r_testFDPassCMSG_SPACEz#SCMRightsTest._testFDPassCMSG_SPACE
sa     r?c|d||jtttjdtzt
jdS)NrrrR)	rTr-r[rrrr%rOr6rUs rtestFDPassCMSG_LENz SCMRightsTest.testFDPassCMSG_LEN
scQ!^^DNCHH,2OA
N,K,KMM
*0):
		<	<	<	<	<r?c0|ddSrPr_rUs r_testFDPassCMSG_LENz!SCMRightsTest._testFDPassCMSG_LEN
rar?rzskipping, see issue #12958zskipping, see issue #22397c	|d||jttdddS)Nrr)rQrVrUs rtestFDPassSeparatez SCMRightsTest.testFDPassSeparate
sK	
Q!^^DNCHHeLL&'		)	)	)	)	)r?cj|d\}}||tgtjtjtjd|gftjtjtjd|gfgttdSNrrL	r;rr)rrrrDrrrVfd0fd1s   r_testFDPassSeparatez!SCMRightsTest._testFDPassSeparate
;;q>>S  #&*;*0*;*/+cC5*A*A*C+1*;*0*;*/+cC5*A*A*C)D
E
E
HH					r?cd}||||jtttjttjt|zzdt
j	dS)Nr)rQrR)
rTr-r[rrrrrOr%r6)rVnum_fdss  rtestFDPassSeparateMinSpacez(SCMRightsTest.testFDPassSeparateMinSpace
sW!^^DNCHH,2,=j,I,I,2OJ<P,Q,Q-RSS'(V5F			H	H	H	H	Hr?cj|d\}}||tgtjtjtjd|gftjtjtjd|gfgttdSrnrorps   r_testFDPassSeparateMinSpacez)SCMRightsTest._testFDPassSeparateMinSpacertr?c	||g|}nM#t$r@}||jt||g}Yd}~nd}~wwxYw||t
|dSr<)r)rrr r&rr)rVrrrrs     rsendAncillaryIfPossiblez%SCMRightsTest.sendAncillaryIfPossibles	1))3%99FF	1	1	1!!!'3///))3%00FFFFFF	1	
S*****s
A$6AA$zsee issue #24725c	|d||jttdt
jdS)Nrrrg)rTr-r[rrrr6rUs rtestFDPassEmptyzSCMRightsTest.testFDPassEmptysT	
Qt~/23xx!@!@)/):		<	<	<	<	<r?cl|ttjtjdfgdSNr?)r{rrrrDrUs r_testFDPassEmptyzSCMRightsTest._testFDPassEmpty%s>$$SF,=,2,=,/,1+2	3	3	3	3	3r?cD||jttd\}}}}||t|||j||dtj	|
t|d|D]n\}}}||tj||tj|
t|todS)NrTrr)r-r[rrrr5rrErr6rMrrD
assertLessrOrVrrrrrGrHrIs        rtestFDPassPartialIntz"SCMRightsTest.testFDPassPartialInt*s$(NN4>36s88U%D%D!WeTc"""  t}55540ABBBS\\1---07	8	8,J	9Z):;;;Y(9:::OOC	NNJ7777	8	8r?c	|ttjtjtjd|jgddfgdS)NrLrO)r{rrrrDrbadfdrrUs r_testFDPassPartialIntz#SCMRightsTest._testFDPassPartialInt7se$$k#
|,,4466ss;=
>	?	?	?	?	?r?c	||jttd\}}}}||t|||j||dtj	|
t|dtjd}|D]\}}}||tj||tj
||dt|t||jzz
|
t|d||dS)NrTrrrL)r-r[rrrr5rrErr6rMrrrDrEr*r@)	rVrrrrr:rGrHrIs	         rtestFDPassPartialIntInMiddlez*SCMRightsTest.testFDPassPartialIntInMiddle>sq%)NN4>36s88U%D%D!WeTc"""  t}55540ABBBS\\1---k#07	G	G,J	9Z):;;;Y(9:::MM)%E	NNc)nns|&CD%EF
G
G
G
GSXXq)))

cr?c
\|d\}}|ttjtjt
jd||jgddftjtjt
jd|gfgdS)NrrLrO)	r;r{rrrrDrrrrps   r_testFDPassPartialIntInMiddlez+SCMRightsTest._testFDPassPartialIntInMiddleQs;;q>>S$$k#TZ01199;;CRC@Bk#u%%'
(	)	)	)	)	)r?c|\}}}}||t|||j||g||dt
j|dS)NTr>r?rA)rrr5rrErr6)rVr,rRrrrrs       rcheckTruncatedHeaderz"SCMRightsTest.checkTruncatedHeader]s%+!WeTc"""  t}555"%%%4&2C*		,	,	,	,	,r?c|||jttt
jdSNrgrr-r[rrrr6rUs rtestCmsgTruncNoBufSizez$SCMRightsTest.testCmsgTruncNoBufSizegsP	
!!$..S"J"J/5.?		"	A	A	A	A	Ar?c0|ddSrPr_rUs r_testCmsgTruncNoBufSizez%SCMRightsTest._testCmsgTruncNoBufSizeprar?c|||jttdt
jdS)NrrgrrUs rtestCmsgTrunc0zSCMRightsTest.testCmsgTrunc0ssN!!$..S1"M"M.4.?	"	A	A	A	A	Ar?c0|ddSrPr_rUs r_testCmsgTrunc0zSCMRightsTest._testCmsgTrunc0xrar?c|||jttddSrP)rr-r[rrrUs rtestCmsgTrunc1zSCMRightsTest.testCmsgTrunc1~s4!!$..S1"M"MNNNNNr?c0|ddSrPr_rUs r_testCmsgTrunc1zSCMRightsTest._testCmsgTrunc1rar?c|||jttt
dzdSr)rr-r[rrrOrUs rtestCmsgTrunc2IntzSCMRightsTest.testCmsgTrunc2IntsP	
!!$..S1;a#A#A	B	B	B	B	Br?c0|ddSrPr_rUs r_testCmsgTrunc2Intz SCMRightsTest._testCmsgTrunc2Intrar?c	|||jtttjddz
dSr)rr-r[rrrr%rUs rtestCmsgTruncLen0Minus1z%SCMRightsTest.testCmsgTruncLen0Minus1sY!!$..S171C1Ca1G#I#I	J	J	J	J	Jr?c0|ddSrPr_rUs r_testCmsgTruncLen0Minus1z&SCMRightsTest._testCmsgTruncLen0Minus1rar?cx||jtt|\}}}}||t|||j||dtj	|dkr|gkrdS|t|d|d\}}	}
||tj
||	tj|t|
||
t|
|tjd}||
dt|
t|
|jzz
||dS)NTr>r?rrrL)r-r[rrrr5rrErr6rrDrLrMrrEr*r@)rVancbufmaxdatamindatarrrrrGrHrIr:s            rcheckTruncatedArrayz!SCMRightsTest.checkTruncatedArrays
%)NN4>36s88V%E%E!WeTc"""  t}5554&2CDDDa<<GrMMFWq)))+21:(
IyV%6777F$5666I888S^^W555k#

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

cr?cX|tjdddS)Nrrrrrr%rUs rtestCmsgTruncLen0zSCMRightsTest.testCmsgTruncLen0s+  (:(:A FFFFFr?c0|ddSrPr_rUs r_testCmsgTruncLen0z SCMRightsTest._testCmsgTruncLen0rar?c^|tjddzddS)NrrrrrUs rtestCmsgTruncLen0Plus1z$SCMRightsTest.testCmsgTruncLen0Plus1s0  (:(:Q(> JJJJJr?c0|ddSrr_rUs r_testCmsgTruncLen0Plus1z%SCMRightsTest._testCmsgTruncLen0Plus1rar?cl|tjttdS)Nrrrr%rOrUs rtestCmsgTruncLen1zSCMRightsTest.testCmsgTruncLen1s8  
(C(C)3	!	5	5	5	5	5r?c0|ddSrr_rUs r_testCmsgTruncLen1z SCMRightsTest._testCmsgTruncLen1rar?c|tjdtzdz
dtzdz
dS)NrrrrrUs rtestCmsgTruncLen2Minus1z%SCMRightsTest.testCmsgTruncLen2Minus1sJ  J(G(G!(K*+j.A)=	!	?	?	?	?	?r?c0|ddSrr_rUs r_testCmsgTruncLen2Minus1z&SCMRightsTest._testCmsgTruncLen2Minus1rar?N)rrr)9r]r^r_rr;r@r+rBrKrTrWrZr\r`rrrcrvrerhrjrrr7rirrlrsrwryr{r}rrrrrrrrrrrrrrrrrrrrrrrrrr`r?rr4r4b
s
E


AAA666
!
!
!6AAA
AAA
!!!\&,''BB('B%!!&%!<<<!!!X_S\X-/KLLX_S677\&,''))('87ML)#X_S\X-/KLLX_S677		87ML$#	X_S\X-/KLLX_S677\&,''HH('87MLH +X_S\X-/KLLX_S677		87ML,+		+	+	+X_S\X-/ABB<<CB<333
888???\&,''('$"-	)	).-	),,,,AAA!!!AAA
!!!OOO!!!BBB!!!JJJ!!!0GGG!!!KKK!!!555!!!???!!!!!r?r4c	XeZdZdZdZdZd5dZeeddd	Z	e	j
d
ZeeddddZej
d
Z
eejdeedddZej
dZ		d5dZeedddddZej
dZeeddddddZej
dZeejdeeddddddZej
dZeejdeeddddddZej
dZd6dZeedddZej
dZeedddZej
d Zeeddd!Zej
d"Zeeddd#Z e j
d$Z!eeddd%Z"e"j
d&Z#eeddd'Z$e$j
d(Z%d6d)Z&eedddddd*Z'e'j
d+Z(eedddddd,Z)e)j
d-Z*eedddddd.Z+e+j
d/Z,eedddddd0Z-e-j
d1Z.eedddddd2Z/e/j
d3Z0d4S)7RFC3542AncillaryTestrrOcZi}|D]%\}}}|||f|||||f<&|Sr<)r)rVrdrGrHrIs      rancillaryMappingz%RFC3542AncillaryTest.ancillaryMappingsQ
07	3	3,J	9j)4a888)2Az9%&&r?r%rc|jtjtjd|j||jtt|\}}}}|
|t|||j|
|dtj||
t|d||dt |d\}}	}
|
|tj|
|	tj||
t$|
t|
t&t)jd}||
||dd||d|dS)NrTrMrrL)r[rrrrr"rr-rrrr5rrEr6rrNrr'rOrrErLrM)rV
ancbufsizemaxhoprRrrrrrGrHrIrs            r
checkHopLimitz"RFC3542AncillaryTest.checkHopLimits
	
!!&"5"(":A	?	?	?$(NN4>36s88Z%I%I!WeT	
c"""  t}5554F4E*		,	,	,	
Wq)))gaj%000+21:(
IyV%8999F$8999i///Y444K	I!a(((QqT6*****r?rrc2|ddSNrr)rrUs rtestRecvHopLimitz%RFC3542AncillaryTest.testRecvHopLimits!	
e,,,,,r?c||j|j|t
dSrrr"rrGr%rrUs r_testRecvHopLimitz&RFC3542AncillaryTest._testRecvHopLimitsF
	
,,T5F,GGHHH#r?rc`|tjtdS)Nr)rrrrOrUs rtestRecvHopLimitCMSG_SPACEz/RFC3542AncillaryTest.testRecvHopLimitCMSG_SPACEs,	
f&7
&C&CDDDDDr?c||j|j|t
dSrrrUs r_testRecvHopLimitCMSG_SPACEz0RFC3542AncillaryTest._testRecvHopLimitCMSG_SPACED,,T5F,GGHHH#r?rc>|d|jdSNr)rr)r	hop_limitrUs rtestSetHopLimitz$RFC3542AncillaryTest.testSetHopLimits%
	
eDNCCCCCr?cR||j|j||tgtjtj	tj
d|jgfgttdSNrrL)
rr"rrGrr)rrrrrrrrUs r_testSetHopLimitz%RFC3542AncillaryTest._testSetHopLimit%s,,T5F,GGHHH  ##)#68L#(;sT^4D#E#E#G"H
I
I
HH						r?c|jtjtjd|jtjtjd|j||jtt|\}}}}||t|||j
||dtj||t|d||}|tjtjf}	|t|	t$t'jd}
|
|	||
dd||
dd|tjtjf}|t|t$t'jd}
|
|||
dd||
d|dS)NrTrMrrLrr%)r[rrrrrr"rr-rrrr5rrEr6rrrOrrErLrMr)rVrrrRrrrrancmaptcdatarhldatas            rcheckTrafficClassAndHopLimitz1RFC3542AncillaryTest.checkTrafficClassAndHopLimit.s+	
!!&"5"(":A	?	?	?!!&"5"("8!	=	=	=$(NN4>36s88Z%I%I!WeT	
c"""  t}5554F4E*		,	,	,Wq)))&&w//,f.@ABVj111K	F!a(((QqT3''',f.BCDVj111K	F!a(((QqT6*****r?rrc2|ddSr)rrUs rtestRecvTrafficClassAndHopLimitz4RFC3542AncillaryTest.testRecvTrafficClassAndHopLimitRs!	
))U);;;;;r?c||j|j|t
dSrrrUs r _testRecvTrafficClassAndHopLimitz5RFC3542AncillaryTest._testRecvTrafficClassAndHopLimitXrr?cf|tjtdzdSNrr)rrrrOrUs r)testRecvTrafficClassAndHopLimitCMSG_SPACEz>RFC3542AncillaryTest.testRecvTrafficClassAndHopLimitCMSG_SPACE]s>
	
))(44q8	*	:	:	:	:	:r?c||j|j|t
dSrrrUs r*_testRecvTrafficClassAndHopLimitCMSG_SPACEz?RFC3542AncillaryTest._testRecvTrafficClassAndHopLimitCMSG_SPACEerr?c>|d|jdSrrrrUs rtestSetTrafficClassAndHopLimitz3RFC3542AncillaryTest.testSetTrafficClassAndHopLimitjs7	
))U15	*	A	A	A	A	Ar?c||j|j||tgtjtj	tj
d|jgftjtjtj
d|j
gfgttdSr)rr"rrGrr)rrrrr
traffic_classrrrrUs r_testSetTrafficClassAndHopLimitz4RFC3542AncillaryTest._testSetTrafficClassAndHopLimitss,,T5F,GGHHH  ##)#68J#(;sT5G4H#I#I#K#)#68L#(;sT^4D#E#E#G"H
I
I

HH
					r?c>|d|jdSrrrUs rtestOddCmsgSizez$RFC3542AncillaryTest.testOddCmsgSize~s7	
))U15	*	A	A	A	A	Ar?cP||j|j	|t
gtjtjtj	d|j
gdzftjtjtj	d|j
gfg}dS#t$r}||jt"|t
gtjtjtj	d|j
gftjtjtj	d|j
gfg}||t't
Yd}~dSd}~wwxYw)NrrLr)rr"rrGr)rrrrrrrrrrrr r&rr)rVrrs   r_testOddCmsgSizez%RFC3542AncillaryTest._testOddCmsgSizes~,,T5F,GGHHH	/))%v'9+cD$6#788@@BBWLN%v';+cDN#3446788FFF	/	/	/!!!'3///))%v'9+cD$6#788:%v';+cDN#3446788F
VSXX.........	/sBC


F%CF  F%c|jtjtjd|j|dn|f}|j|jttg|R\}}}}|
|t|||j|
|g|
|dtj|dS)Nrr`Tr)r[rrrrr"rr-rrrr5rrEr6)rVrrRr*rrrrs        rcheckHopLimitTruncatedHeaderz1RFC3542AncillaryTest.checkHopLimitTruncatedHeaders	
!!&"5"(":A	?	?	?'rrj]$2DN4>36s88%D>B%D%D%D!WeT	
c"""  t}555"%%%4&2C*		,	,	,	,	,r?cH|dtjdS)NrrRrrr6rUs rrz+RFC3542AncillaryTest.testCmsgTruncNoBufSizes:	
))T
7=6G	*	I	I	I	I	Ir?c||j|j|t
dSrrrUs rrz,RFC3542AncillaryTest._testCmsgTruncNoBufSizerr?cH|dtjdS)NrrrrUs rtestSingleCmsgTrunc0z)RFC3542AncillaryTest.testSingleCmsgTrunc0s8	
))Q6<6G	*	I	I	I	I	Ir?c||j|j|t
dSrrrUs r_testSingleCmsgTrunc0z*RFC3542AncillaryTest._testSingleCmsgTrunc0rr?c2|ddS)Nrr)rrUs rtestSingleCmsgTrunc1z)RFC3542AncillaryTest.testSingleCmsgTrunc1s))Q)77777r?c||j|j|t
dSrrrUs r_testSingleCmsgTrunc1z*RFC3542AncillaryTest._testSingleCmsgTrunc1rr?cB|dtzdSr)rrOrUs rtestSingleCmsgTrunc2Intz,RFC3542AncillaryTest.testSingleCmsgTrunc2Ints#))Q^)DDDDDr?c||j|j|t
dSrrrUs r_testSingleCmsgTrunc2Intz-RFC3542AncillaryTest._testSingleCmsgTrunc2Intrr?c\|tjddz
dS)Nrrr)rrr%rUs rtestSingleCmsgTruncLen0Minus1z2RFC3542AncillaryTest.testSingleCmsgTruncLen0Minus1s.))V_Q5G5G!5K)LLLLLr?c||j|j|t
dSrrrUs r_testSingleCmsgTruncLen0Minus1z3RFC3542AncillaryTest._testSingleCmsgTruncLen0Minus1rr?c|jtjtjd|j||jtttj
tdz
\}}}}||t|
||j||dtj|t|d|rv|d\}}}||tj||tj|t|tdSdS)NrTrr)r[rrrrr"rr-rrr%rOrr5rrEr6rMrrrs        rtestSingleCmsgTruncInDataz.RFC3542AncillaryTest.testSingleCmsgTruncInDatasV
	
!!&"5"(":A	?	?	?$(NNNCHHfoj&A&AA&E%G%G!WeT	
c"""  t}5554&2CDDDS\\1---	8/6qz,J	9Z)<===Y(<===OOC	NNJ77777		8	8r?c||j|j|t
dSrrrUs r_testSingleCmsgTruncInDataz/RFC3542AncillaryTest._testSingleCmsgTruncInDatarr?c|jtjtjd|jtjtjd|j||jtt|\}}}}||t|||j
||dtj||t|d|d\}}}	||tj||tjtjh|t|	t&t)jd}
|
|	||
dd||
dddS)NrTrrrLr%)r[rrrrrr"rr-rrrr5rrEr6rrrrOrrErLrM)rVrrRrrrrrGrHrIrs           rcheckTruncatedSecondHeaderz/RFC3542AncillaryTest.checkTruncatedSecondHeaders	
!!&"5"(":A	?	?	?!!&"5"("8!	=	=	=$(NN4>36s88Z%I%I!WeT	
c"""  t}5554&2C*		,	,	,	
Wq)))+21:(
IyV%8999

i&"4f6J!KLLLY444K	I!a(((QqT3'''''r?cv|tjttjdSr)rrrrOr6rUs rtestSecondCmsgTrunc0z)RFC3542AncillaryTest.testSecondCmsgTrunc0'sC	
''(9*(E(E4:4E	(	G	G	G	G	Gr?c||j|j|t
dSrrrUs r_testSecondCmsgTrunc0z*RFC3542AncillaryTest._testSecondCmsgTrunc0-rr?cd|tjtdzdSrPrrrrOrUs rtestSecondCmsgTrunc1z)RFC3542AncillaryTest.testSecondCmsgTrunc12s.	
''(9*(E(E(IJJJJJr?c||j|j|t
dSrrrUs r_testSecondCmsgTrunc1z*RFC3542AncillaryTest._testSecondCmsgTrunc17rr?ct|tjtdtzzdSrrrUs rtestSecondCmsgTrunc2Intz,RFC3542AncillaryTest.testSecondCmsgTrunc2Int<s?	
''(9*(E(E()J)7	8	8	8	8	8r?c||j|j|t
dSrrrUs r_testSecondCmsgTrunc2Intz-RFC3542AncillaryTest._testSecondCmsgTrunc2IntBrr?c|tjttjdzdz
dSr)rrrrOr%rUs rtestSecondCmsgTruncLen0Minus1z2RFC3542AncillaryTest.testSecondCmsgTruncLen0Minus1GsR	
''(9*(E(E(.(:(:);=>)?	@	@	@	@	@r?c||j|j|t
dSrrrUs r_testSecondCmsgTruncLen0Minus1z3RFC3542AncillaryTest._testSecondCmsgTruncLen0Minus1Mrr?cp|jtjtjd|jtjtjd|j||jtttjttj
tzdz
\}}}}||t|||j||dtjtjtjh}|d\}}}||tj|||t|tt/jd}	|	|||	dd||	dd|rv|d\}}}||tj|||t|t||gdS)NrTrrrLr%)r[rrrrrr"rr-rrrrOr%rr5rrEr6rrpopremoverrErLrMr)
rVrrrr
cmsg_typesrGrHrIrs
          rtestSecondCmsgTruncInDataz.RFC3542AncillaryTest.testSecondCmsgTruncInDataRsC
	
!!&"5"(":A	?	?	?!!&"5"("8!	=	=	=$(NNNCHHj))FOJ,G,GG!K%M%M!WeT	
c"""  t}5554&2CDDD(&*>?
+2;;q>>(
IyV%8999)$$$Y444K	I!a(((QqT3'''	8/6{{1~~,J	9Z)<===i(((OOC	NNJ777"%%%%%r?c||j|j|t
dSrrrUs r_testSecondCmsgTruncInDataz/RFC3542AncillaryTest._testSecondCmsgTruncInDatawrr?N)r%rr)1r]r^r_rrrrrrrrvrrrrrrrrrrrrrrrrrrrrrrrrrr
rrrrrrrrrrr$r&r`r?rrrsIM++++8\&-??--@?-!"!\&,(;_MMEENME +,+\&-++\&-??DD@?,+D
 ! ?B12"+"+"+"+H\&-#]44<<44<%010\&,(;_#]44::44:/:;:\&-++\&,(;_#]44AA44,+A$/0/\&-++\&,(;_#]44AA44,+A //! /*,,,,(\&-??II@?I'('\&-??II@?I%&%\&-??88@?8%&%\&-??EE@?E()(\&-??MM@?M#./.\&-??88@?8**+*((((@\&,(;_#]44GG44G%&%\&,(;_#]44KK44K%&%\&,(;_#]4488448()(\&,(;_#]44@@44@#./.\&,(;_#]44!&!&44!&F*+*r?rceZdZdS)SendrecvmsgUDPTestBaseNr]r^r_r`r?rr(r(	Dr?r(rceZdZdS)SendmsgUDPTestNr)r`r?rr,r,Dr?r,rceZdZdS)RecvmsgUDPTestNr)r`r?rr/r/r-r?r/rKceZdZdS)RecvmsgIntoUDPTestNr)r`r?rr1r1r-r?r1ceZdZdZdS)SendrecvmsgUDP6TestBasecR||dd|dddSrr1r2s   rr5z+SendrecvmsgUDP6TestBase.checkRecvmsgAddress0	
ssU3B3Z00000r?Nr]r^r_r5r`r?rr3r3s#11111r?r3rBrir(ceZdZdS)SendmsgUDP6TestNr)r`r?rr8r8	Dr?r8ceZdZdS)RecvmsgUDP6TestNr)r`r?rr;r;r9r?r;ceZdZdS)RecvmsgIntoUDP6TestNr)r`r?rr=r=r9r?r=rceZdZdS)RecvmsgRFC3542AncillaryUDP6TestNr)r`r?rr?r?	Dr?r?ceZdZdS)#RecvmsgIntoRFC3542AncillaryUDP6TestNr)r`r?rrBrBs	Dr?rBceZdZdS)SendrecvmsgUDPLITETestBaseNr)r`r?rrDrDs
	Dr?rDceZdZdS)SendmsgUDPLITETestNr)r`r?rrFrFr9r?rFceZdZdS)RecvmsgUDPLITETestNr)r`r?rrHrHr9r?rHceZdZdS)RecvmsgIntoUDPLITETestNr)r`r?rrJrJr9r?rJceZdZdZdS)SendrecvmsgUDPLITE6TestBasecR||dd|dddSrr1r2s   rr5z/SendrecvmsgUDPLITE6TestBase.checkRecvmsgAddressr5r?Nr6r`r?rrLrLs#11111r?rLceZdZdS)SendmsgUDPLITE6TestNr)r`r?rrOrOr@r?rOceZdZdS)RecvmsgUDPLITE6TestNr)r`r?rrQrQr@r?rQceZdZdS)RecvmsgIntoUDPLITE6TestNr)r`r?rrSrSr@r?rSceZdZdS)#RecvmsgRFC3542AncillaryUDPLITE6TestNr)r`r?rrUrUs	Dr?rUceZdZdS)'RecvmsgIntoRFC3542AncillaryUDPLITE6TestNr)r`r?rrWrWs	Dr?rWceZdZdS)SendrecvmsgTCPTestBaseNr)r`r?rrYrYr-r?rYceZdZdS)SendmsgTCPTestNr)r`r?rr[r[r-r?r[ceZdZdS)RecvmsgTCPTestNr)r`r?rr]r]r*r?r]ceZdZdS)RecvmsgIntoTCPTestNr)r`r?rr_r_r*r?r_ceZdZdS)SendrecvmsgSCTPStreamTestBaseNr)r`r?rrara$r*r?raz6IPPROTO_SCTP: [Errno 62] Protocol not supported on AIXrPrBrbceZdZdS)SendmsgSCTPStreamTestNr)r`r?rrcrc)r9r?rcceZdZfdZxZS)RecvmsgSCTPStreamTestc	tt|dS#t$r6}|jtjkr|dYd}~dSd}~wwxYwNz4sporadic ENOTCONN (kernel issue?) - see issue #13876)r rerrr ENOTCONNrtrVrr"s  rrz$RecvmsgSCTPStreamTest.testRecvmsgEOF5s	R'..==?????	R	R	Rw%.((MMPQQQQQQQQQ	R',
A,+A''A,r]r^r_rr$r%s@rrere/ARRRRRRRRRr?receZdZfdZxZS)RecvmsgIntoSCTPStreamTestc	tt|dS#t$r6}|jtjkr|dYd}~dSd}~wwxYwrg)r rnrrr rhrtris  rrz(RecvmsgIntoSCTPStreamTest.testRecvmsgEOFCs	R+T22AACCCCC	R	R	Rw%.((MMPQQQQQQQQQ	Rrjrkr%s@rrnrn=rlr?rnceZdZdS)SendrecvmsgUnixStreamTestBaseNr)r`r?rrqrqLr-r?rqrJceZdZdS)SendmsgUnixStreamTestNr)r`r?rrsrsPr*r?rsceZdZdS)RecvmsgUnixStreamTestNr)r`r?rruruUr9r?ruceZdZdS)RecvmsgIntoUnixStreamTestNr)r`r?rrwrw[r9r?rwrrDceZdZdS)RecvmsgSCMRightsStreamTestNr)r`r?rryryar*r?ryceZdZdS)RecvmsgIntoSCMRightsStreamTestNr)r`r?rr{r{fr9r?r{c`eZdZfdZejZeedr	dZ	dZ
xZSdZ	dZ
xZS)InterruptedTimeoutBasecttjtjd}|tjtj|dS)NcddzSrr`)signumrs  rrrz.InterruptedTimeoutBase.setUp.<locals>.<lambda>zs
Ar?)r rWrrrq)rVorig_alrm_handlerr"s  rrWzInterruptedTimeoutBase.setUpwsS


"M&.*E*EGG
v~7HIIIIIr?	setitimerg?cDtjtj|dSr<)rrITIMER_REALrVsecondss  rsetAlarmzInterruptedTimeoutBase.setAlarmsV/99999r?rc.tj|dSr<)rrrs  rrzInterruptedTimeoutBase.setAlarmsL!!!!!r?)r]r^r_rWrrFrHrr
alarm_timerr$r%s@rr}r}rs
JJJJJ&G
wv{##
"
	:	:	:	:	:	:	:
	"	"	"	"	"	"	"r?r}siginterruptrrz+Don't have signal.alarm or signal.setitimerceZdZfdZdZdZdZdZdZe	e
j
ddZe	e
j
d	d
ZxZ
S)InterruptedRecvTimeoutTestct|j|jdSr<)r rWrQrrHr!s rrWz InterruptedRecvTimeoutTest.setUps2


	T\*****r?c	||j|t5}||i|dddn#1swxYwY|ddS#|dwxYwr)rrrrrVrHr*r+rs     rcheckInterruptedRecvz/InterruptedRecvTimeoutTest.checkInterruptedRecvs	MM$/***""#455
&d%f%%%
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
MM!DMM!s-4A-	AA-AA-AA--BcF||jjddSr)rrQrrUs rtestInterruptedRecvTimeoutz5InterruptedRecvTimeoutTest.testInterruptedRecvTimeouts"!!$).$77777r?c`||jjtddSr)rrQ	recv_intorrUs rtestInterruptedRecvIntoTimeoutz9InterruptedRecvTimeoutTest.testInterruptedRecvIntoTimeouts)!!$)"5yGGGGGr?cF||jjddSr)rrQrrUs rtestInterruptedRecvfromTimeoutz9InterruptedRecvTimeoutTest.testInterruptedRecvfromTimeouts#!!$)"4d;;;;;r?c`||jjtddSr)rrQrrrUs r"testInterruptedRecvfromIntoTimeoutz=InterruptedRecvTimeoutTest.testInterruptedRecvfromIntoTimeouts)!!$)"99T??KKKKKr?rcF||jjddSr)rrQrrUs rtestInterruptedRecvmsgTimeoutz8InterruptedRecvTimeoutTest.testInterruptedRecvmsgTimeouts#!!$)"3T:::::r?rKcb||jjtdgdSr)rrQrKrrUs r!testInterruptedRecvmsgIntoTimeoutz<InterruptedRecvTimeoutTest.testInterruptedRecvmsgIntoTimeouts,!!$)"89T??:KLLLLLr?)r]r^r_rWrrrrrrrrrr$r%s@rrrs+++++888HHH<<<LLL\&-++;;,+;\&-00MM10MMMMMr?rceZdZfdZdZdZejdddZejdddZ	ejdde
ejdd	ZxZ
S)
InterruptedSendTimeoutTestct||_||jjt
j|j}|	|j
\|_}||jj|
|j|jdS)N)target)r rWrrrqr!rThread	doConnectstartrQrrrrrH)rV
cli_threadrr"s   rrWz InterruptedSendTimeoutTest.setUps


)),---%T^<<<
"i..00
t
+,,,!!$,/////r?cD|j|jdSr<)rrrrUs rrz$InterruptedSendTimeoutTest.doConnects t~.....r?c	|t5}	||j||i|##1swxYwY	|ddS#|dwxYwNTr)rrrrrs     rcheckInterruptedSendz/InterruptedSendTimeoutTest.checkInterruptedSends	""#455
**MM$/222D$)&)))*
*
*
*
*
*
*
*
*
*

MM!DMM!s(A$%AAA$A	A$$A;rurcF||jjddSNr)rrrrUs rtestInterruptedSendTimeoutz5InterruptedSendTimeoutTest.testInterruptedSendTimeouts#!!$."5x@@@@@r?cR||jjd|jdSr)rrrrrUs rtestInterruptedSendtoTimeoutz7InterruptedSendTimeoutTest.testInterruptedSendtoTimeouts4	
!!$."7"&.	2	2	2	2	2r?rcH||jjdgdSr)rrrrUs rtestInterruptedSendmsgTimeoutz8InterruptedSendTimeoutTest.testInterruptedSendmsgTimeouts'	
!!$."88*EEEEEr?)r]r^r_rWrrrrequires_mac_verrrrrrr$r%s@rrrs00000///


Wb!$$AA%$AWb!$$22%$2Wb!$$\&-++FF,+%$FFFFFr?rceZdZdZdZdS)
TCPCloserTestc||j\}}||j}t	j|gggd\}}}|||g||dd||dS)N?rr?)rQrr!rrrr)rVrrsdrr7rs       r	testClosezTCPCloserTest.testClosesY%%''
d

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



r?cz|jt|jft	jddSNr)rrrrSrrrUs r
_testClosezTCPCloserTest._testCloses0$	*+++
3r?N)r]r^r_rrr`r?rrrs2r?rc@eZdZddZdZdZdZdZdZdZ	d	Z
d
S)BasicSocketPairTestrc>t||dSr)rrrs  rrzBasicSocketPairTest.__init__
s!<<<<<r?c||tjttdr&||jtjn%||jtj||jtj||j	ddS)NrJr)
rrrrrrJrPrurBrrTs  r_check_defaultsz#BasicSocketPairTest._check_defaultssdFM22269%%	:T[&.9999T[&.999F$6777Q'''''r?c:||jdSr<)rrrUs r
_testDefaultsz!BasicSocketPairTest._testDefaultssTX&&&&&r?c:||jdSr<)rrQrUs rtestDefaultsz BasicSocketPairTest.testDefaultssTY'''''r?cp|jd}||tdSr)rQrrrrs  rrzBasicSocketPairTest.testRecvrr?cD|jtdSr<)rrrrUs rrzBasicSocketPairTest._testRecv#s

cr?cD|jtdSr<)rQrrrUs rtestSendzBasicSocketPairTest.testSend&s	sr?cp|jd}||tdSr)rrrrrs  r	_testSendzBasicSocketPairTest._testSend)s1hmmD!!c"""""r?Nr)r]r^r_rrrrrrrrr`r?rrrs====((('''(((########r?rceZdZddZdZdZdZejdZ	ejeZ
eje
eddejd	d
ddZd
ZdZdZdZdZdZdZdZdZdS)NonBlockingTCPTestsrcntj|_t||dSr)rreventrrrs  rrzNonBlockingTCPTests.__init__0s0_&&
&&t
&CCCCCr?c||j||dk}|||ta|du}t	j|tjtj}|t|tjz|dSdS)N)	rrQrwgetblockingrF_GETFLr>
O_NONBLOCKbool)rVrErHblockingfd_blockingflags      rassert_sock_timeoutz'NonBlockingTCPTests.assert_sock_timeout4s--//999sN))++X666#d?K;tU]BMBBDdR]&:!;!;;[IIIIIr?c|jd||jd|jd||jd|jd||jd|jd||jd|jd||jd|jd||jddS)NTFrrru)rQrarrrUs rtestSetBlockingz#NonBlockingTCPTests.testSetBlockingEs	d###  D111	e$$$  C000	T"""  D111	Q  A...	R     B///	Q  A.....r?cdSr<r`rUs r_testSetBlockingz$NonBlockingTCPTests._testSetBlockingYrr?c<ddl}|j|jkr|d|jd||jd|j|jdz||jddS)Nrzneeds UINT_MAX < ULONG_MAXFrr)rSr	ULONG_MAXrtrQrarrs  rtestSetBlocking_overflowz,NonBlockingTCPTests.testSetBlocking_overflow\s	!444MM6777	e$$$  C000	i014555  D11111r?r`ztest needs socket.SOCK_NONBLOCKrc|jtjtjtjtjz|_||jddSr)rQr!rrPrBr`rrUs rtestInitNonBlockingz'NonBlockingTCPTests.testInitNonBlockingks[
	
	M&."("4v7K"KMM	  A.....r?cdSr<r`rUs r_testInitNonBlockingz(NonBlockingTCPTests._testInitNonBlockingurr?cDtd5|jd|j\}}||j||ddddS#1swxYwYdS)Nru)rJrQrrrqr!rrwrs   rtestInheritFlagsBlockingz,NonBlockingTCPTests.testInheritFlagsBlockingxs&d
+
+	1	1I  $$$))++JD$OODJ'''doo//000		1	1	1	1	1	1	1	1	1	1	1	1	1	1	1	1	1	1sA8BBBcR|jt|jfdSr<rrrrSrUs r_testInheritFlagsBlockingz-NonBlockingTCPTests._testInheritFlagsBlocking%$	*+++++r?cJd}t|5|jd|j\}}||j|||ddddS#1swxYwYdS)Ng4@ru)rJrQrrrqr!rrw)rVdefault_timeoutrrs    rtestInheritFlagsTimeoutz+NonBlockingTCPTests.testInheritFlagsTimeouts
%o
6
6	A	AI  $$$))++JD$OODJ'''T__..@@@		A	A	A	A	A	A	A	A	A	A	A	A	A	A	A	A	A	AsA9BBBcR|jt|jfdSr<rrUs r_testInheritFlagsTimeoutz,NonBlockingTCPTests._testInheritFlagsTimeoutrr?c|jdtj}|t
5|j\}}dddn#1swxYwYtj|z
}||d|j	tj
|jgggtj\}}}|j|vr|
d|j\}}||j||dS)NFrz'Error trying to do accept after select.)rQrar	monotonicrBlockingIOErrorrrrrrrLONG_TIMEOUTrrqr!rrw)rV
start_timerrdtrr7rs        r
testAcceptzNonBlockingTCPTests.testAcceptss	e$$$^%%




/
/	,	,))++JD$	,	,	,	,	,	,	,	,	,	,	,	,	,	,	,
^



*C   
!=$)b"g>RSSeS9D  II?@@@Y%%''
d
###$//++,,,,,sA11A58A5c|j|jt|jfdSr<)rrrrrrSrUs r_testAcceptzNonBlockingTCPTests._testAccepts9	
$	*+++++r?c|j\}}||j|d|t5|tt}dddn#1swxYwY|j
tj|gggtj\}}}||vr|d|tt}||tdS)NFz0Error during select call to non-blocking socket.)rQrrqr!rarrrrrrrrrrrr)rVrrrrr7rs       rrzNonBlockingTCPTests.testRecvsKY%%''
d
###


/
/	&	&))CHH%%C	&	&	&	&	&	&	&	&	&	&	&	&	&	&	&	
!=$R9MNNeStIIHIIIiiC!!c"""""s&(BB!Bc|jt|jf|j|jtdSr<)rrrrSrrrrrUs rrzNonBlockingTCPTests._testRecvsQ$	*+++	
	
r?Nr)r]r^r_rrrrrrr_testSetBlocking_overflowrrrrrequires_linux_versionrrrrrrrrrrr`r?rrr.ssDDDDJJJ"///(




2
2
2!5 45E F FX99:<<#W#Aq"--//.-<</


111,,,	A	A	A,,,---,,,,###(r?rceZdZ	dZdZdZdZdZeZ	dZ
eZd!dZd	Z
d
ZdZdZd
ZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdZ dZ!dZ"dZ#d Z$dS)"FileObjectClassTestCaserOr	strictNrr(rc>t||dSrrrs  rrz FileObjectClassTestCase.__init__rr?cdtdD\|_|_|_|_t
||j|j	|j
|j|j|j
|_dS)Nc4g|]}tjSr`)rrrrLs  rrz1FileObjectClassTestCase.setUp.<locals>.<listcomp>s3G1G1G1"#IOG1G1G1r?rr,errorsnewline)r5evt1evt2
serv_finishedcli_finishedrrWrr	read_moderur,rr	read_filerUs rrWzFileObjectClassTestCase.setUpsG1G1',QxxG1G1G1C	49d0$2C!!$'''//NDL}[l	0$$r?c|j|j||jjd|_t|dSr<)r	rrr!rclosedrrZrUs rrZz FileObjectClassTestCase.tearDownsc   -...$$T*****r?ct||j|j|j|j|j|j|_	dS)Nr)
rrrr
write_moderur,rr
write_filerUs rrz#FileObjectClassTestCase.clientSetUpsP''---.11OT\}[l	2$$r?c|j|j||jjd|_t|dSr<)r
rrr!rrrrrUs rrz&FileObjectClassTestCase.clientTearDownsc.///**400000r?c|jd|jd|t
|jjd|t5}|jddddn#1swxYwY|dt|j	dS)Nrrz!cannot read from timed out object)
rrrrrrrrrr)rVctxs  rtestReadAfterTimeoutz,FileObjectClassTestCase.testReadAfterTimeouts	

  ###A,(;Q???


w
'
'	#3N"""	#	#	#	#	#	#	#	#	#	#	#	#	#	#	#

93s};M;MNNNNNs5BB #B c|j|jdd|j|jdS)Nrr)rr7	write_msgflushr	rrUs r_testReadAfterTimeoutz-FileObjectClassTestCase._testReadAfterTimeoutsRdnQqS1222!!!!!r?c|jt|jdz
}|jd}||z}|||jdSr)rrrread_msgr)rV	first_seg
second_segrs    r
testSmallReadz%FileObjectClassTestCase.testSmallReadscN''DM(:(:1(<==	^((++
*$dm,,,,,r?cv|j|j|jdSr<rr7rrrUs r_testSmallReadz&FileObjectClassTestCase._testSmallRead4dn---r?cn|j}|||jdSr<)rrrrrs  rtestFullReadz$FileObjectClassTestCase.testFullRead#s3n!!##dm,,,,,r?cv|j|j|jdSr<)rr7rr!rUs r
_testFullReadz%FileObjectClassTestCase._testFullRead(r"r?ct|j}	|jd}|sn||z
}#|||jdSrP)rurrrr)rVrNchars   rtestUnbufferedReadz*FileObjectClassTestCase.testUnbufferedRead,sl!d4=!!##	>&&q))D
4KC		
	
dm,,,,,r?cv|j|j|jdSr<r rUs r_testUnbufferedReadz+FileObjectClassTestCase._testUnbufferedRead6r"r?cn|j}|||jdSr<)rreadlinerrrVlines  rtestReadlinez$FileObjectClassTestCase.testReadline:s3~&&((t}-----r?cv|j|j|jdSr<r rUs r
_testReadlinez%FileObjectClassTestCase._testReadline?r"r?c|j|j}|||jdSr<)rr!rrrrrs  rtestCloseAfterMakefilez.FileObjectClassTestCase.testCloseAfterMakefileCsG
n!!##dm,,,,,r?cv|j|j|jdSr<r rUs r_testCloseAfterMakefilez/FileObjectClassTestCase._testCloseAfterMakefileJr"r?c"|j|jt	t
}t
|jtr|	}|
||jdSr<)rr!rrrrrtrrdecoderrs  rtestMakefileAfterMakefileClosez6FileObjectClassTestCase.testMakefileAfterMakefileCloseNspm  S**dmS))	**,,Cdm,,,,,r?cv|j|j|jdSr<r rUs r_testMakefileAfterMakefileClosez7FileObjectClassTestCase._testMakefileAfterMakefileCloseUr"r?cF||jjdSr<)rrrrUs rtestClosedAttrz&FileObjectClassTestCase.testClosedAttrYs"DN1122222r?cF||jjdSr<)rrrrUs r_testClosedAttrz'FileObjectClassTestCase._testClosedAttr\s"DO2233333r?c||jj|j||jj|jdSr<)rrr*rrrrrUs rtestAttributesz&FileObjectClassTestCase.testAttributes_sN,dn===,dm.B.B.D.DEEEEEr?c||jj|j||jj|jdSr<)rrr*rrrrrUs r_testAttributesz'FileObjectClassTestCase._testAttributescsN-t???-t~/D/D/F/FGGGGGr?c|j|t|jj|j|t|jjdSr<)rr!rrxrrrrrUs r
testRealClosez%FileObjectClassTestCase.testRealClosegsf*dn&;<<<
'4=#<=====r?cdSr<r`rUs r_testRealClosez&FileObjectClassTestCase._testRealClosemrr?r)%r]r^r_rur,rrrrrrrrrWrZrrrrrr!r$r&r)r+r0r2r4r6r9r;r=r?rArCrErGr`r?rrrs	GH
FGIHJIBBBB$$$+++$$$111
O
O
O"""
---   ---
   ---   ...
   ---   ---   333444FFFHHH>>>




r?rcPeZdZ	dZdZdZdZdZdZdZ	dZ
d	Zd
ZdZ
dS)
!UnbufferedFileObjectClassTestCaserc"|j}||d|jz|jdd|_|j}||d|jzdS)NA. rrB. )rr-rrrrr.s  rtestUnbufferedReadlinez8UnbufferedFileObjectClassTestCase.testUnbufferedReadline}s~&&((v6777//a88~&&((v677777r?c|jd|jz|jd|jz|jdS)NrKrLr rUs r_testUnbufferedReadlinez9UnbufferedFileObjectClassTestCase._testUnbufferedReadlinesVft~5666ft~5666r?c |j|jd}|||j|j|t|jjddSr)rr!rrrrrrrs  rtestMakefileClosez3UnbufferedFileObjectClassTestCase.testMakefileClosesz
m  &&dm,,,'4=#5t<<<<<r?cv|j|j|jdSr<r rUs r_testMakefileClosez4UnbufferedFileObjectClassTestCase._testMakefileCloser"r?ctj|j}|jtj|j}||dz
|dSrP)r7r5rrr!r)rVrefcount_beforerefcount_afters   rtestMakefileCloseSocketDestroyz@UnbufferedFileObjectClassTestCase.testMakefileCloseSocketDestroysY/$-88771,n=====r?cdSr<r`rUs r_testMakefileCloseSocketDestroyzAUnbufferedFileObjectClassTestCase._testMakefileCloseSocketDestroyrr?c$|jd||jtdd||jt|jdz
d|j	
|jd|jt|jdz
}|Ctjd|jt|jdz
}td}|j|}||d||d|z}|||j||jtdd||jdddS)NFrurrg?r?r)rrarrreadintorrrrrrrrrr)rVrrNr-rs     rtestSmallReadNonBlockingz:UnbufferedFileObjectClassTestCase.testSmallReadNonBlockings
!!%(((002??FFF,,S-?-?!-CDDdKKK	

	sN''DM(:(:Q(>??	JsOOO++C
,>,>,BCCImmN##C((A#bqb'!dm,,,002??FFF,,Q//66666r?c|jd|j|j|j|j|jddS)Nr@)	rrrr7rrrrr	rUs r_testSmallReadNonBlockingz;UnbufferedFileObjectClassTestCase._testSmallReadNonBlockingsp	sdn---	

	
$$$$$r?c|jd|jr||jdSdS)Nr^)r
rserv_skippedrtrUs rtestWriteNonBlockingz6UnbufferedFileObjectClassTestCase.testWriteNonBlockingsKs###	-MM$+,,,,,	-	-r?cfd|_|jddtjz}d}|j|}||dt|D]7}|j|}|dS||d8d|_dS)NFrrurz$failed to saturate the socket buffer)	rarrarrrr7r'r5)rVBIGLIMITr-rLs     r_testWriteNonBlockingz7UnbufferedFileObjectClassTestCase._testWriteNonBlockings ""5)))W**O!!#&&1a   u
	G
	GA%%c**Ayq!$$$$
!GDr?N)r]r^r_rurMrOrQrSrWrYr\r_rbrfr`r?rrIrIqs<G888   
===   >>>


777&%%%---GGGGGr?rIceZdZdZdS)#LineBufferedFileObjectClassTestCaserNr]r^r_rur`r?rrhrhGGGr?rhceZdZdZdS)$SmallBufferedFileObjectClassTestCaserNrir`r?rrlrlrjr?rlcJeZdZ	dZedZdZeZdZ	dS)"UnicodeReadFileObjectClassTestCaserr	r(rN
r]r^r_rrr8rrrrr`r?rrnrns6GIzz'""HJIGGGr?rncJeZdZ	dZeZdZedZdZ	dS)#UnicodeWriteFileObjectClassTestCaserr'r	rN)
r]r^r_rrrrr8rrr`r?rrqrqs6GIHJ

7##IGGGr?rqcpeZdZ	dZedZdZedZdZ	dS)'UnicodeReadWriteFileObjectClassTestCaserr	r'rNror`r?rrsrssBGIzz'""HJ

7##IGGGr?rsceZdZ	dZdS)NetworkConnectionTestchtjt|jf|_|j|_dSr<)rcreate_connectionrrSrrrUs rrz!NetworkConnectionTest.clientSetUps*+T49,=>>r?N)r]r^r_rr`r?rrurus&#"""""r?ruceZdZdS)
BasicTCPTest2Nr)r`r?rryrysr?ryceZdZGddejZejdZej	dZ
ej	dZdZdZ
dS)	NetworkConnectionNoServerceZdZdZdS)$NetworkConnectionNoServer.MockSocketc td)Nz	timed out)rr(s  rrz,NetworkConnectionNoServer.MockSocket.connects{+++r?N)r]r^r_rr`r?r
MockSocketr}s#	,	,	,	,	,r?rc#K	tj}|jt_	dV|t_dS#|t_wxYwr<)rr)rV
old_sockets  rmocked_socket_modulez.NetworkConnectionNoServer.mocked_socket_modulesE8]

	'EEE&FMMMJFM&&&&s	4Actj}tjtjtj}||j|t5}|	t|fdddn#1swxYwY||jj
tjdSr<)rrrrPrBrqr!rrrrrrr ECONNREFUSED)rVrSrrs    rtest_connectz&NetworkConnectionNoServer.test_connect"s-//mFNF,>??	"""


w
'
'	&2KKt%%%	&	&	&	&	&	&	&	&	&	&	&	&	&	&	&+U-?@@@@@s1BB!Bc,tj}|t5}t	jt|fdddn#1swxYwYtj}||j	j
|dSr<)rrrrrrwrget_socket_conn_refused_errsrrr )rVrSrexpected_errnoss    rtest_create_connectionz0NetworkConnectionNoServer.test_create_connection+s-//


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

bl(/:::::sAAActj}	tjt|fd|dn#t$r}|}Yd}~nd}~wwxYw||t|jD]}||ttj
d|dtj}|t|t|jdS)NT)
all_errorszexpected connection to failrr)rrrrwrrExceptionGroupr
exceptionsrrrBrr)rVrSreg	addressess     r!test_create_connection_all_errorsz;NetworkConnectionNoServer.test_create_connection_all_errorsDs-//	5$dD\dCCCC
II34444			BBBBBB	
	
b.111	.	.A!!!W----&q&"466		
YR]););<<<<<sA
AAAcL|5	tjtdf|dnD#t
$rYn8t$r,}tjs|j	tj
krYd}~nd}~wwxYwddddS#1swxYwYdS)Nr
zTimeoutError not raised)rrrwrrrrrrr EAFNOSUPPORTrs  rtest_create_connection_timeoutz8NetworkConnectionNoServer.test_create_connection_timeoutVs
&
&
(
(		5		5
5($666		34444
 





 -e>P1P1P2Q1P1P1P1P
		5		5		5		5		5		5		5		5		5		5		5		5		5		5		5		5		5		5sEBAB
B	B	B	"B?BB		BB BN)r]r^r_rr
contextlibcontextmanagerrrskip_if_tcp_blackholerrrrr`r?rr{r{s,,,,,V],,,'''(AA)(A(;;)(;0===$55555r?r{cheZdZdZd
dZdZdZdZeZdZ	eZ
dZeZd	Z
eZd
ZeZdZeZdZdS)NetworkConnectionAttributesTestNrcrt||t|dSrrrs  rrz(NetworkConnectionAttributesTest.__init__hrr?c6tj|_dSr<)rrsource_portrUs rrz+NetworkConnectionAttributesTest.clientSetUpls(9;;r?c|j|jd|_t|dSr<rrUs rrz.NetworkConnectionAttributesTest.clientTearDownos=8HNN%%d+++++r?cf|j\}}|dSr<)rQrr!rs   r_justAcceptz+NetworkConnectionAttributesTest._justAcceptus*Y%%''
d

r?ctjt|jftj|_||jj|	|jj
ddS)Nrr)rrwrrSrrFrrqr!rrrUs r_testFamilyz+NetworkConnectionAttributesTest._testFamilyzs`+T49,=$+$<>>>'''!,,,,,r?c&tjt|jftjd|jf|_||jj	|
|jd|jdS)Nr)rHsource_addressr)rrwrrSrrFrrrqr!rrrUs r_testSourceAddressz2NetworkConnectionAttributesTest._testSourceAddresss+T49,=$+$<,.0@+ACCC	
'''--//2D4DEEEEEr?c|tjdutjd	tjt
|jf|_||jj	tjdn#tjdwxYw|
|jddS)NrRrrrFrGrwrrSrrqr!rrwrUs r_testTimeoutDefaultz3NetworkConnectionAttributesTest._testTimeoutDefaults022d:;;; $$$	+/ty0ABBDHOODHN+++$T****F$T****,,..33333sABB-c|tjdutjd	tjt
|jfd|_||jj	tjdn#tjdwxYw|
|jddSNrrrUs r_testTimeoutNonez0NetworkConnectionAttributesTest._testTimeoutNones022d:;;; $$$	+/ty0A4PPPDHOODHN+++$T****F$T****,,..55555sABB/ctjt|jfd|_||jddSr)rrwrrSrrrwrUs r_testTimeoutValueNamedz6NetworkConnectionAttributesTest._testTimeoutValueNamedsJ+T49,=rJJJ,,..33333r?ctjt|jfd|_||jj||jddS)Nr)	rrwrrSrrqr!rrwrUs r_testTimeoutValueNonamedz8NetworkConnectionAttributesTest._testTimeoutValueNonameds]+T49,=rBB''',,..33333r?r)r]r^r_rrrrr
testFamilyrtestSourceAddressrtestTimeoutDefaultrtestTimeoutNonertestTimeoutValueNamedrtestTimeoutValueNonamedrr`r?rrres
C&&&&<<<,,,J---$FFF%	4	4	4"O	6	6	6(444*44444r?rc8eZdZd	dZdZdZdZeZdZdZ	dS)
NetworkConnectionBehaviourTestrcrt||t|dSrrrs  rrz'NetworkConnectionBehaviourTest.__init__rr?cdSr<r`rUs rrz*NetworkConnectionBehaviourTest.clientSetUprr?cz|jd|_t|dSr<rrUs rrz-NetworkConnectionBehaviourTest.clientTearDownrr?c|j\}}||jt	jd|ddS)Nrdone!)rQrrqr!rrrrs   rtestInsideTimeoutz0NetworkConnectionBehaviourTest.testInsideTimeoutsRY%%''
d
###
1


		(r?ctjt|jfx|_}|d}||ddS)Nrr)rrwrrSrrr)rVrErs   r_testInsideTimeoutz1NetworkConnectionBehaviourTest._testInsideTimeoutsK 2D$)3DEEE4yy||x(((((r?ctjt|jfdx|_|tfddS)Nrrc.dS)Nr)r)rEsrrrzDNetworkConnectionBehaviourTest._testOutsideTimeout.<locals>.<lambda>s		!r?)rrwrrSrrrrTs @r_testOutsideTimeoutz2NetworkConnectionBehaviourTest._testOutsideTimeoutsL 2D$)3DaPPPP4,(<(<(<(<=====r?Nr)
r]r^r_rrrrtestOutsideTimeoutrrr`r?rrrs{&&&&


,,,

+)))
>>>>>r?rcbeZdZdZdZejeedddZ	dS)TCPTimeoutTestcJfd}t|ddS)NcnjdjdSr)rQrrr*r+rVs  r
raise_timeoutz4TCPTimeoutTest.testTCPTimeout.<locals>.raise_timeouts3I  %%%Ir?z*Error generating a timeout exception (TCP)rrrVrs` rtestTCPTimeoutzTCPTimeoutTest.testTCPTimeoutsL						
,
J	L	L	L	L	Lr?c8d}	|jd|j}nI#t$r|dYn(t
$rd}Yn|dYnxYw|s|ddSdS)NFrz%caught timeout instead of error (TCP)Tz!caught unexpected exception (TCP)z3accept() returned success when we did not expect it)rQrrrrrrVokrs   rtestTimeoutZerozTCPTimeoutTest.testTimeoutZeros
	;I  %%%)""$$CC	?	?	?II=>>>>>			BBB	;II9:::::	MIIKLLLLL	M	Ms38A>A>&A>rztest needs signal.alarm()c>|jdGddtfd}tjtj|}		tjd|j}|dns#t$r|dYnR$rYnL|dtj
ddtjfzzYnxYwtjd	n#tjd	wxYwn #$r|d
YnwxYwtjtj|dS#tjtj|wxYw)Nr^ceZdZdS)4TCPTimeoutTest.testInterruptedTimeout.<locals>.AlarmNr)r`r?rAlarmrsDr?rcr<r`)rrrs  r
alarm_handlerz<TCPTimeoutTest.testInterruptedTimeout.<locals>.alarm_handlersKr?rznothing caughtzcaught timeout instead of Alarmz3caught other exception instead of Alarm: %s(%s):
%srzgot Alarm in wrong place)
rQrr=rrrrrrr7exc_info	traceback
format_exc)rVrrrrs    @rtestInterruptedTimeoutz%TCPTimeoutTest.testInterruptedTimeouts	
	S!!!					I								M&.-@@		5
 Qi&&((		*++++ 
=
=
=		;<<<<<



L		)<>>"1"-1E1G1G0IIKLLLLLQQ	2	2	2II011111	2
M&.)44444FM&.)4444sg-BD D7D 9D=D ?ADD D: D66D:9E;:EE;EE;;!FN)
r]r^r_rrrrrrrr`r?rrrsvLLLMMMX114665566555r?rceZdZdZdZdS)UDPTimeoutTestcJfd}t|ddS)NcpjdjddSNrrrQrrrs  rrz4UDPTimeoutTest.testUDPTimeout.<locals>.raise_timeout	3I  %%%INN4     r?z*Error generating a timeout exception (UDP)rrs` rtestUDPTimeoutzUDPTimeoutTest.testUDPTimeoutsL	!	!	!	!	!	
,
J	L	L	L	L	Lr?c:d}	|jd|jd}nI#t$r|dYn(t
$rd}Yn|dYnxYw|s|ddSdS)NFrrz%caught timeout instead of error (UDP)Tz!caught unexpected exception (UDP)1recv() returned success when we did not expect itrQrrrrrrs   rrzUDPTimeoutTest.testTimeoutZeros
	;I  %%%)..&&CC	?	?	?II=>>>>>			BBB	;II9:::::	KIIIJJJJJ	K	K49A?A?'A?N)r]r^r_rrr`r?rrrs:LLLKKKKKr?rceZdZdZdZdS)UDPLITETimeoutTestcJfd}t|ddS)NcpjdjddSrrrs  rrz<UDPLITETimeoutTest.testUDPLITETimeout.<locals>.raise_timeout"rr?z.Error generating a timeout exception (UDPLITE)rrs` rtestUDPLITETimeoutz%UDPLITETimeoutTest.testUDPLITETimeout!sL	!	!	!	!	!	
,
N	P	P	P	P	Pr?c:d}	|jd|jd}nI#t$r|dYn(t
$rd}Yn|dYnxYw|s|ddSdS)NFrrz)caught timeout instead of error (UDPLITE)Tz%caught unexpected exception (UDPLITE)rrrs   rrz"UDPLITETimeoutTest.testTimeoutZero(s
	?I  %%%)..&&CC	C	C	CIIABBBBB			BBB	?II=>>>>>	KIIIJJJJJ	K	KrN)r]r^r_rrr`r?rrrs:PPPKKKKKr?rceZdZdZdZdS)TestExceptionsc |ttt|ttjt|ttjt|ttjt|tj	t|tjtdSr<)r
issubclassrr=rrrrHassertIserrorrrUs rtestExceptionTreez TestExceptions.testExceptionTree8s
7I66777
6='::;;;
6?G<<===
6>7;;<<<

flG,,,

fnl33333r?ctjtjtjd}tjtjtjd|}|||j|t5|	dddddS#1swxYwYdS)NrF)
rrPrBrr!rqrgrrra)rVsock0rEs   rtest_setblocking_invalidfdz)TestExceptions.test_setblocking_invalidfd@s
fnf.@!DD}NF.5<<>>CC



$$$


w
'
'	$	$U###	$	$	$	$	$	$	$	$	$	$	$	$	$	$	$	$	$	$s0CCCN)r]r^r_rrr`r?rrr6s2444
$
$
$
$
$r?rr`Linux specific testc6eZdZdZdZdZdZdZdZdZ	dS)	TestLinuxAbstractNamespacelcd}tjtjtj5}|||tjtjtj5}|||d5}|||||	|dddn#1swxYwYdddn#1swxYwYddddS#1swxYwYdS)Nspython-test-hellor)
rrJrBrrrTrrrrr)rVrs1rs3s     rtestLinuxAbstractNamespacez5TestLinuxAbstractNamespace.testLinuxAbstractNamespaceRs2
]6>6+=
>
>	@"GGGIIKKKv~v/ABB
@b

2>>++,,,YY[[^@r$$R^^%5%5w???$$R^^%5%5w???@@@@@@@@@@@@@@@
@
@
@
@
@
@
@
@
@
@
@
@
@
@
@	@	@	@	@	@	@	@	@	@	@	@	@	@	@	@	@	@	@s\AE
?AD5ADD5D""D5%D"&D5)E
5D9	9E
<D9	=E

EEc$dd|jdz
zz}tjtjtj5}|||||ddddS#1swxYwYdS)Nrhr)
UNIX_PATH_MAXrrJrBrrrrrVrr$s   rtestMaxNamez&TestLinuxAbstractNamespace.testMaxName]sDD$6$:;;
]6>6+=
>
>	7!
FF7OOOQ]]__g666	7	7	7	7	7	7	7	7	7	7	7	7	7	7	7	7	7	7s>BB	B	cdd|jzz}tjtjtj5}|t
|j|ddddS#1swxYwYdS)Nh)r	rrJrBrrrrr	s   rtestNameOverflowz+TestLinuxAbstractNamespace.testNameOverflowcs3!333
]6>6+=
>
>	8!gqvw777	8	8	8	8	8	8	8	8	8	8	8	8	8	8	8	8	8	8s"A&&A*-A*c.tjtjtj}	|d||d|dS#|wxYw)Nz
pythontest
pythontest)rrJrBrrrrr!rs  rtestStrNamez&TestLinuxAbstractNamespace.testStrNamehsrM&.&*<==	
FF+,,,Q]]__.GHHH
GGIIIIIAGGIIIIs=A>>Bctjtjtj5}|t	d||dddddS#1swxYwYdS)Nr	)rrJrBrrrrrrs  rtestBytearrayNamez,TestLinuxAbstractNamespace.testBytearrayNameqs
]6>6+=
>
>	I!
FF9677888Q]]__.GHHH	I	I	I	I	I	I	I	I	I	I	I	I	I	I	I	I	I	IsABB	Bcxd}tjtjtj5}|d|||tjtjtj5}|d||||||dddn#1swxYwYddddS#1swxYwYdS)Ns
^[0-9a-f]{5}r)rrJrBrrassertRegexrr)rVabstract_addressrrs    rtestAutobindz'TestLinuxAbstractNamespace.testAutobindws-
]6>6+=
>
>	H"GGBKKKR^^--/?@@@v~v/ABB
Hb  !1!13CDDD##BNN$4$4bnn6F6FGGG
H
H
H
H
H
H
H
H
H
H
H
H
H
H
H		H	H	H	H	H	H	H	H	H	H	H	H	H	H	H	H	H	Hs7A'D/A8DD/D	D/D	D//D36D3N)
r]r^r_r	rr	r	r		r	r	r`r?rrrMsM	@	@	@777888
IIIHHHHHr?rztest needs socket.AF_UNIXceZdZdZdZdZdZdZdZdZ	dZ
d	Zej
ejd
kddZd
S)TestUnixDomaincbtjtjtj|_dSr<)rrJrBrErUs rrWzTestUnixDomain.setUpsM&.&2DEE			r?c8|jdSr<)rEr!rUs rrZzTestUnixDomain.tearDowns	r?c	tj|S#t$r>|d|tjYdSwxYw)NzBPathname {0!a} cannot be represented in file system encoding {1!r})r>fsencoderrtrr7getfilesystemencodingrVrFs  rencodedzTestUnixDomain.encodedsy	8;t$$$!	8	8	8MM((.#355)7)7
8
8
8
8
8
8	8sAAAc	tj||dS#t$rH}t|dkr)|d|nYd}~dSd}~wwxYw)NzAF_UNIX path too longz6Pathname {0!a} is too long to serve as an AF_UNIX path)rrCrrrtr)rVrErFrs    rrrzTestUnixDomain.binds	*466666			1vv000

LVD\\####	######	s
A+=A&&A+c`||jddS)N)rN)rrErrUs rrzTestUnixDomain.testUnbounds*

di++--z:::::r?c(tjtj}||j||tj||	|j
|dSr<)r>rFabspathrTESTFNrrrErqrDrrr	s  rtestStrAddrzTestUnixDomain.testStrAddrsowy/00		$)T"""	($///..00$77777r?cNtjtj}||j|||tj	||
|j|dSr<)r>rFr	rr	rrrEr	rqrDrrr	s  r
testBytesAddrzTestUnixDomain.testBytesAddrs{wy/00		$)T\\$//000	($///..00$77777r?cztjtj}||}||j|dd|	tj
|||j|dS)Nasciisurrogateescape)
r>rFr	rTESTFN_UNICODEr	rrrEr8rqrDrr)rVrFrs   rtestSurrogateescapeBindz&TestUnixDomain.testSurrogateescapeBindswy788LL		$)QXXg/@AABBB	($///..00$77777r?cjtj|dtjtj}||j||tj	||
|j|dS)Nz!No unencodable filename available)rTESTFN_UNENCODABLErtr>rFr	rrrErqrDrrr	s  rtestUnencodableAddrz"TestUnixDomain.testUnencodableAddrs'/MM=>>>wy;<<		$)T"""	($///..00$77777r?r`rcR|t|jjddS)Nr)rrrErrrUs rtestEmptyAddresszTestUnixDomain.testEmptyAddresss&	
'49>266666r?N)r]r^r_rWrZr	rrrr	r 	r%	r(	rrr7rir*	r`r?rr	r	sFFF	8	8	8


;;;888888888888X_S\W,.CDD77ED777r?r	cneZdZ	ddZdZdZdZeZdZeZ	dZ
dZd	ZeZ
d
ZeZdZdZd
ZeZdS)BufferIOTestrc>t||dSrrrs  rrzBufferIOTest.__init__rr?cvtjddgttz}|j|}||tt|}|dtt}||tdSNr~r)rrrrrrrrVrNrrs    rtestRecvIntoArrayzBufferIOTest.testRecvIntoArraysk#sSXX~..((--S***kkmm)3s88)nc"""""r?cbtt}|j|dSr<r'rrrrVrNs  r_testRecvIntoArrayzBufferIOTest._testRecvIntoArray)CjjC     r?ctd}|j|}||t	t
|dt	t
}||t
dSr)rrrrrrr0	s    rtestRecvIntoBytearrayz"BufferIOTest.testRecvIntoBytearraysmoo((--S***)3s88)nc"""""r?c0td}|jt|}||tt|dtt}||tdSr)rrrrrrrr0	s    rtestRecvIntoMemoryviewz#BufferIOTest.testRecvIntoMemoryviewssoo((C99S***)3s88)nc"""""r?c|tjddgttz}|j|\}}||tt|}|dtt}||tdSr/	)rrrrrrrrVrNrrrs     rtestRecvFromIntoArrayz"BufferIOTest.testRecvFromIntoArraysk#sSXX~..}22377S***kkmm)3s88)nc"""""r?cbtt}|j|dSr<r3	r4	s  r_testRecvFromIntoArrayz#BufferIOTest._testRecvFromIntoArrayr6	r?ctd}|j|\}}||t	t
|dt	t
}||t
dSr)rrrrrrr<	s     rtestRecvFromIntoBytearrayz&BufferIOTest.testRecvFromIntoBytearraysqoo}22377S***)3s88)nc"""""r?c6td}|jt|\}}||tt|dtt}||tdSr)rrrrrrrr<	s     rtestRecvFromIntoMemoryviewz'BufferIOTest.testRecvFromIntoMemoryview
swoo}22:c??CCS***)3s88)nc"""""r?crtd}|t|jj|ddS)Nrmr)rrrxrrr4	s  rtestRecvFromIntoSmallBufferz(BufferIOTest.testRecvFromIntoSmallBuffers2ll*dm&A3MMMMMr?cD|jtdSr<rrUs r_testRecvFromIntoSmallBufferz)BufferIOTest._testRecvFromIntoSmallBufferrr?ct}|j||j|ddSr)rrrr4	s  rtestRecvFromIntoEmptyBufferz(BufferIOTest.testRecvFromIntoEmptyBuffers?kk
##C(((
##C+++++r?Nr)r]r^r_rr1	r5	r8	_testRecvIntoBytearrayr:	_testRecvIntoMemoryviewr=	r?	rA	_testRecvFromIntoBytearrayrC	_testRecvFromIntoMemoryviewrE	rG	rI	_testRecvFromIntoEmptyBufferr`r?rr,	r,	sBBBB###!!!###0###1###!!!###"8####9NNN
!!!,,,
$:   r?r,	ic	ttdsdS	tdd}n#ttt
f$rYdSwxYw|5|D]%}|drddddS&	dddn#1swxYwYdS)NAF_TIPCFz
/proc/modulesr	r+ztipc T)rrrFileNotFoundErrorIsADirectoryErrorrrj)rr/s  risTipcAvailablerU	's!
69%%u73330/Buu
		Dw''

	5s',AAB4BB	Bz6TIPC module is not loaded, please 'sudo modprobe tipc'ceZdZdZdS)TIPCTestc0tjtjtj}tjtjtj}||j||j|tjtjdtjtttf}||tj
tttttz
dzzdf}|t ||d\}}|||||t dS)Nrrrr)rrR	rrqr!rrrTIPC_ADDR_NAMESEQ
TIPC_STYPE
TIPC_LOWER
TIPC_UPPERrrTIPC_ADDR_NAMEr&rrrrr)rVr>rsrvaddrsendaddrrrecvaddrs       rtestRDMzTIPCTest.testRDM>s'mFNFO<<mFNFO<<	"""	"""v(&*=qAAA+ZJ():S*z"9Q!>???D

3!!!T**
X**H555c"""""r?N)r]r^r_ra	r`r?rrW	rW	;s######r?rW	c.eZdZddZdZdZdZdZdS)	TIPCThreadableTestrc|tj||t|dSrrrs  rrzTIPCThreadableTest.__init__Vs8""4j"AAA%%%%%r?cVtjtjtj|_||jj|jtjtjdtj	tttf}|j
||j||j\|_|_||jjdSrP)rrR	rBr>rqr!rrrrY	rZ	r[	r\	rrrTrrrr)rVr^	s  rrWzTIPCThreadableTest.setUpZs=1CDD'''F-v/BAFFF+ZJ(

g  """#'8??#4#4 	4=	(((((r?ctjdtjtjtj|_||jjtjtttttz
dzzdf}|j
||j|_dS)Nrrr)rrrrR	rBrrqr!r]	rZ	r[	r&r\	rrcliaddr)rVrs  rrzTIPCThreadableTest.clientSetUpfs	
3=1CDD'''%zS*z"9Q!>???Dx++--r?c|jd}||t||j|jdSr)rrrrrg	rrs  rrzTIPCThreadableTest.testStreamrsKinnT""c"""t}55555r?cv|jt|jdSr<rrUs rrzTIPCThreadableTest._testStreamwrr?Nrrr`r?rrc	rc	Ssd&&&&
)
)
)
.
.
.666
r?rc	c,eZdZdZdZdZdZdZdS)ContextManagersTestcBtj5}||jdddn#1swxYwY||jtj5}|dddn#1swxYwY||jtj5}|t|jddddn#1swxYwY||jdSNr)rrrrr!rrrrTs  r_testSocketClassz$ContextManagersTest._testSocketClass~s
]__	+T\***	+	+	+	+	+	+	+	+	+	+	+	+	+	+	+%%%
]__	JJLLL															%%%
]__	=gt|V<<<	=	=	=	=	=	=	=	=	=	=	=	=	=	=	=%%%%%s1;??3BBB"C::C>C>c|j\}}||j|d}||dSrrQrrqr!rrrVrrrs    rtestCreateConnectionBasez,ContextManagersTest.testCreateConnectionBaseTY%%''
d
###yyTr?ct|j}tj|5}||j|d||dddddn#1swxYwY|	|jdS)Nrr)
rQrrrwrrrrrrrVrrEs   r_testCreateConnectionBasez-ContextManagersTest._testCreateConnectionBases)''))

%g
.
.	6$T\***LL   TYYt__f555	6	6	6	6	6	6	6	6	6	6	6	6	6	6	6	
%%%%%sABBBc|j\}}||j|d}||dSrrp	rq	s    rtestCreateConnectionClosez-ContextManagersTest.testCreateConnectionClosers	r?c.|j}tj|5}|dddn#1swxYwY||j|t|j	ddSrm	)
rQrrrwr!rrrrrru	s   r_testCreateConnectionClosez.ContextManagersTest._testCreateConnectionCloses)''))

%g
.
.	$JJLLL															%%%'4<88888sAAAN)r]r^r_rn	rr	rv	rx	rz	r`r?rrk	rk	|s_&&&&&&99999r?rk	ceZdZejeeddejddddZ	dZ
dZd	Zej
ed
uddZej
ed
udd
ZdZd
S)InheritanceTestrzSOCK_CLOEXEC not definedrrrc<tjtjtjtjz5}||jtj||ddddS#1swxYwYdSr<)rrPrBrrrurget_inheritablers  rtest_SOCK_CLOEXECz!InheritanceTest.test_SOCK_CLOEXECs]6>!-0CCEE	2HIQVV%7888Q..00111	2	2	2	2	2	2	2	2	2	2	2	2	2	2	2	2	2	2sA
BBBctj}|5||dddddS#1swxYwYdSr)rrr~	rTs  rtest_default_inheritablez(InheritanceTest.test_default_inheritables}
	<	<T1133U;;;	<	<	<	<	<	<	<	<	<	<	<	<	<	<	<	<	<	<s)AAAc6tj}|5|}||5||ddddn#1swxYwYddddS#1swxYwYdSr)rrr!rr~	)rVrEnewsocks   rtest_dupzInheritanceTest.test_dups3}
	C	ChhjjGJJLLL
C
C  !8!8!:!:EBBB
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C	C	C	C	C	C	C	C	C	C	C	C	C	C	C	C	C	C	Cs5+B)A6*B6A:	:B=A:	>BBBcVtj}|5|d||d|d||dddddS#1swxYwYdS)NTF)rset_inheritablerr~	rTs  rtest_set_inheritablez$InheritanceTest.test_set_inheritables}
	<	<  &&&T1133T:::  '''T1133U;;;	<	<	<	<	<	<	<	<	<	<	<	<	<	<	<	<	<	<sA;BB"%B"Nrctj}|5|}||dt	j|tj}|tjz}t	j|tj|||dddddS#1swxYwYdSr)rrrr~	rF_GETFD
FD_CLOEXECF_SETFD)rVrErmrs    rtest_get_inheritable_cloexecz,InheritanceTest.test_get_inheritable_cloexecs}
		;		;BT1133U;;;KEM22Ee&&&EKEM5111T1133T:::		;		;		;		;		;		;		;		;		;		;		;		;		;		;		;		;		;		;B4CCCctj}|5|}|tj|tjtjztj|d|tj|tjtjzdddddS#1swxYwYdSr)rrrrr	r	r	)rVrErms   rtest_set_inheritable_cloexecz,InheritanceTest.test_set_inheritable_cloexecs}
	 	 BU[U];;e>NN"-
/
/
/
  &&&U[U];;e>NN
 
 
 
	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 r	c:tj\}}||j||j||d||ddSr)rrrqr!rr~	)rVrrs   rtest_socketpairzInheritanceTest.test_socketpairs"$$B!!!!!!++--u555++--u55555r?)r]r^r_rrrrrrr	r	r	r	rrr	r	r	r`r?rr|	r|	sX88355#W#Aq"--22.-552<<<
CCC<<<X_Ud]L11;;21;X_Ud]L11	 	 21	 66666r?r|	r`zSOCK_NONBLOCK not definedcLeZdZd	dZejddddZdS)
NonblockConstantTestTrcd|r||jtj||||t
j|tjtj	tj	z|dkr)|
|dS||dS||jtj||d|
t
j|tjtj	tj	z||dSr)rrurrBrwrrrr>rrr)rVr$nonblockrHs    r
checkNonblockz"NonblockConstantTest.checkNonblocksU	-QVV%7888Q\\^^W555OOAu}bm<<r}L
N
N
N!||  11111

00000QVV%7888Q\\^^T222Au}bm<<r}L
N
N
NOOAMMOO,,,,,r?rrrcvtjtjtjtjz5}|||d||d|d|||d||d|d||d|d||ddddn#1swxYwYtj}tjdtj5}||dddn#1swxYwYtjdtj5}||ddddn#1swxYwYtjdtj5}||ddddn#1swxYwYtjdtj5}||ddddn#1swxYwYtj|dS)NTF)r	g@rr)	rrPrBr`r	rarrFrG)rVr$ts   rtest_SOCK_NONBLOCKz'NonblockConstantTest.test_SOCK_NONBLOCKs]6>!-0DDFF	2IJq!!!
MM$q5111
MM%   q!!!
LLq5111
LLq#...
MM$q5111	2	2	2	2	2	2	2	2	2	2	2	2	2	2	2
$&& %%%
]__	"q!!!	"	"	"	"	"	"	"	"	"	"	"	"	"	"	" &&&
]__	)q%(((	)	)	)	)	)	)	)	)	)	)	)	)	)	)	) %%%
]__	/q#...	/	/	/	/	/	/	/	/	/	/	/	/	/	/	/ &&&
]__	)q%(((	)	)	)	)	)	)	)	)	)	)	)	)	)	)	) #####sZC0D33D7:D78FF!FG//G36G3!II	I	7JJ!JN)Tr)r]r^r_r	rrr	r`r?rr	r	sU----2$W#Aq"--$$.-$$$r?r	rrzneed multiprocessingcBeZdZedZdZdZdZdZdZ	dS)TestSocketSharingc&|}|}tj|}|\}}||||dSr<)rr	fromsharerrr!)rqsdatamessager$rr
s       rremoteProcessServerz%TestSocketSharing.remoteProcessServer.sq%%''U##

A	

7



						r?ctj}tj|j|f}||j|j}|j}|j	|
|d}|
|tj|}g}	|
d}|sn||.|	d|}||||dS)Nrr*s
slapmahfroTrr?)multiprocessingrProcessr	rrQsharepidrr!rrrwrr9rr)	rVr	rrrr	r$mreceiveds	         r	testSharezTestSocketSharing.testShare<s+

!###4+C1$OOO				yqu%%y$$&&		d 	g
$T**	66#;;D

HHTNNN		
	
			88A;;7+++	r?c
|jtj}|t
tj|dd|t
tj|dzdS)NrOr)rQr	r>getpidrrxrr	)rVrs  rtestShareLengthz!TestSocketSharing.testShareLength_scyry{{++*f&6SbS	BBB*f&6VDDDDDr?c||d|||||j|j||j|j|jdkr"||j|jdSdSr)rrwrrur)rVorgothers   rcompareSocketsz TestSocketSharing.compareSocketsds	
))4000))5+;+;+=+=>>>U\2225:...9>>SY44444>r?c|jtj}t	j|}	||j||dS#|wxYwr<)rQr	r>r	rr	r	r!)rVrr$s   rtestShareLocalz TestSocketSharing.testShareLocaltskyry{{++T""		1---
GGIIIIIAGGIIIIsA22Bc$tjtjg}tjtjg}|D]}|D]}	tj||}n#t
$rY%wxYw	|tj}tj	|}	|
|||n#|wxYw	|#|wxYwdSr<)rrPrirBr(rr	r>r	r	r	r!)rVfamiliestypesrr	rrshareds        r	testTypeszTestSocketSharing.testTypes|sNFO4#V%67	#	#A

#

##]1a00FFH#!<<	44D#-d33F'++FF;;;LLNNNNFLLNNNN

#	#	#s5A
AA!:C6C2C6CC66DN)
r]r^r_r4r	r	r	r	r	r	r`r?rr	r	)s~
[!!!FEEE
555 #####r?r	ceZdZ	dZdZdZejZe	dZ
e	dZdZdZ
dZd	Zd
ZdZdZd
ZdZdZdZdZdZdZdZdZdZdZdZdZdZ dZ!dZ"dZ#dZ$dS) SendfileUsingSendTestir|r?cd}ddt|jD}ttjd5}||j|jD]}||	dddn#1swxYwYttjd5}||_	ddddS#1swxYwYdS)Nc3DK||kr|V||z}||k|r|VdSdSr<r`)totalsteps  rchunksz0SendfileUsingSendTest.setUpClass.<locals>.chunkssM$,,



$,,


r?r?cng|]2}tjtj3Sr`)randomchoicestring
ascii_lettersr8rs  rrz4SendfileUsingSendTest.setUpClass.<locals>.<listcomp>sA777!-(<==DDFF777r?r(r)
rr5BUFSIZErrr	FILESIZEr7rFILEDATA)rr	chunkrcsizes     r
setUpClassz SendfileUsingSendTest.setUpClasssk			77#(#5#577788
)"D
)
)	Qck::


															)"D
)
)	5Q6688CL	5	5	5	5	5	5	5	5	5	5	5	5	5	5	5	5	5	5s$/BBB0CCCcBtjtjdSr<)rrDr	)rs r
tearDownClassz#SendfileUsingSendTest.tearDownClasss)*****r?c|jtj|j\}}||j||j|Sr<)rQrrrrTIMEOUTrqr!rs   raccept_connz!SendfileUsingSendTest.accept_conns_	W1222Y%%''
d%%%
###r?cg}	||j}|sn||3d|S)NTr?)rr	r9r)rVrr	r	s    r	recv_datazSendfileUsingSendTest.recv_datasU	#IIdl++E
OOE"""		#
xx!!!r?c"t|dS)N_sendfile_use_sendrrTs  rmeth_from_sockz$SendfileUsingSendTest.meth_from_sockst1222r?c|j}ttjd}tj|5}|5}||}||}|||j	||
|j	dddn#1swxYwYddddS#1swxYwYdS)NrrQrrrr	rrwr	rr	tellrVrfilerEmethsents      r_testRegularFilez&SendfileUsingSendTest._testRegularFilesH)''))I$d++

%g
.
.	9$	9&&t,,D4::DT4=111TYY[[$-888		9	9	9	9	9	9	9	9	9	9	9	9	9	9	9	9	9	9	9	9	9	9	9	9	9	9	9	9	9	9	9	9	9s7CA)C4CC	CC	CCCc|}||}|t||j|||jdSr<r	r	rrr	r	rVrrs   rtestRegularFilez%SendfileUsingSendTest.testRegularFile`!!~~d##TDM222t}-----r?c|j}tj|j}tj|5}|5}||}|||j	||
|j	|t
j|j
|dddn#1swxYwYddddS#1swxYwYdSr<)rQrioBytesIOr	rrwrqrr	r	rr{r|)rVrr	rEr	s     r_testNonRegularFilez)SendfileUsingSendTest._testNonRegularFiles)''))z$-((

%g
.
.	A$	A==&&DT4=111TYY[[$-888f6"94
A
A
A		A	A	A	A	A	A	A	A	A	A	A	A	A	A	A	A	A	A	A	A	A	A	A	A	A	A	A	A	A	A	A	A	As7C2
BCC2C	C2!C	"C22C69C6c|}||}|t||j|||jdSr<r	r	s   rtestNonRegularFilez(SendfileUsingSendTest.testNonRegularFiler	r?cP|j}tjdz}t	|d5|tj|dddn#1swxYwYt	|d}tj|5}|5}|	|}||}|
|d|
|ddddn#1swxYwYddddS#1swxYwYdS)N2r(rr)rQrrr	rrqrDrrwr	rr	)rVrfilenamer	rEr	r	s       r_testEmptyFileSendz(SendfileUsingSendTest._testEmptyFileSends)''))#c)
(D
!
!	8	8OOI,h777	8	8	8	8	8	8	8	8	8	8	8	8	8	8	8Hd##

%g
.
.	-$	-&&t,,D4::DT1%%%TYY[[!,,,		-	-	-	-	-	-	-	-	-	-	-	-	-	-	-	-	-	-	-	-	-	-	-	-	-	-	-	-	-	-	-	-	-sH!A&&A*-A*DAD7DD	D
D	DD"Dc|}||}||ddSr)r	r	rr	s   rtestEmptyFileSendz'SendfileUsingSendTest.testEmptyFileSends@!!~~d##s#####r?c|j}ttjd}tj|5}|5}||}||d}|||j	dz
||
|j	dddn#1swxYwYddddS#1swxYwYdS)Nr)offsetr	r	s      r_testOffsetz!SendfileUsingSendTest._testOffsetsT)''))I$d++

%g
.
.	9$	9&&t,,D4T***DT4=4#7888TYY[[$-888		9	9	9	9	9	9	9	9	9	9	9	9	9	9	9	9	9	9	9	9	9	9	9	9	9	9	9	9	9	9	9	9	9s7CA.C9CC			CC		
CC!$C!c|}||}|t||jdz
|||jdddS)Nr	r	r	s   r
testOffsetz SendfileUsingSendTest.testOffsetsn!!~~d##TDMD$8999t}TUU344444r?c|j}ttjd}tj|tj}|5|5d}|	|}|||}|
|||
||dddn#1swxYwYddddS#1swxYwYdS)NrrGKLrrQrrrr	rrwrrFr	rr	rVrr	rErr	r	s       r
_testCountz SendfileUsingSendTest._testCountsm)''))I$d++'070HJJJ
	1	14	1	1E&&t,,D4E***DT5)))TYY[[%000	1	1	1	1	1	1	1	1	1	1	1	1	1	1	1	1	1	1	1	1	1	1	1	1	1	1	1	1	1	1	1	1	17C A#C<C C	C C	C  C$'C$cd}|}||}|t|||||jd|dS)Nr	r	r	rrr	rVrrrs    r	testCountzSendfileUsingSendTest.testCountsl!!~~d##TE***t}VeV455555r?c|j}ttjd}tj|tj}|5|5d}|	|}|||}|
|||
||dddn#1swxYwYddddS#1swxYwYdS)Nrrrr	r	r	s       r_testCountSmallz%SendfileUsingSendTest._testCountSmall$sm)''))I$d++'070HJJJ
	1	14	1	1E&&t,,D4E***DT5)))TYY[[%000	1	1	1	1	1	1	1	1	1	1	1	1	1	1	1	1	1	1	1	1	1	1	1	1	1	1	1	1	1	1	1	1	1r	cd}|}||}|t|||||jd|dSrPr	r	s    rtestCountSmallz$SendfileUsingSendTest.testCountSmall0sl!!~~d##TE***t}VeV455555r?c|j}ttjd}tj|d5}|5}d}||}||d|}|||||	|dzdddn#1swxYwYddddS#1swxYwYdS)Nrrr駆)r	r)
rQrrrr	rrwr	rr	r	s       r_testCountWithOffsetz*SendfileUsingSendTest._testCountWithOffset9s[)''))I$d++

%gq
9
9
9	8T4	84E&&t,,D4T777DT5)))TYY[[%$,777	8	8	8	8	8	8	8	8	8	8	8	8	8	8	8	8	8	8	8	8	8	8	8	8	8	8	8	8	8	8	8	8	8s7
C
A'C4CC	CC	CCCcd}|}||}|t|||||jd|dzdS)Nr
r
r	r	s    rtestCountWithOffsetz)SendfileUsingSendTest.testCountWithOffsetCsp!!~~d##TE***t}T%*_=>>>>>r?c|j}ttjd}tj|5}|5}|d||}|	t|||	t|j|dddn#1swxYwYddddS#1swxYwYdS)NrF)rQrrrr	rrwrar	rrxrqrVrr	rEr	s     r_testNonBlockingz&SendfileUsingSendTest._testNonBlockingLsI)''))I$d++

%g
.
.	?$	?U###&&t,,Dj$555j$->>>		?	?	?	?	?	?	?	?	?	?	?	?	?	?	?	?	?	?	?	?	?	?	?	?	?	?	?	?	?	?	?	?	?s7CA(B?3C?C	CC	CCCc|}|dr|ddSdS)Nr|z$was not supposed to receive any data)r	rrrVrs  rtestNonBlockingz%SendfileUsingSendTest.testNonBlockingUsH!!99T??	>II<=====	>	>r?c|j}ttjd}tj|tj}|5|5|	|}||}|
||jdddn#1swxYwYddddS#1swxYwYdS)Nrr)rQrrrr	rrwrrFr	rr	r	s      r_testWithTimeoutz&SendfileUsingSendTest._testWithTimeout\sE)''))I$d++'070HJJJ
	2	24	2	2&&t,,D4::DT4=111	2	2	2	2	2	2	2	2	2	2	2	2	2	2	2	2	2	2	2	2	2	2	2	2	2	2	2	2	2	2	2	2	2s6B9<B!B9!B%	%B9(B%	)B99B=B=c|}||}|t||j|||jdSr<r	r	s   rtestWithTimeoutz%SendfileUsingSendTest.testWithTimeoutfr	r?c|j}ttjd5}tj|5}|d||}|	t||dddn#1swxYwYddddS#1swxYwYdS)Nrg{Gz?)rQrrrr	rrwrr	rrr
s     r_testWithTimeoutTriggeredSendz3SendfileUsingSendTest._testWithTimeoutTriggeredSendns))''))
)"D
)
)	<T)'22
<d%%%**400!!,d;;;
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<	<	<	<	<	<	<	<	<	<	<	<	<	<	<	<	<	<	<s6B4	ABB4B 	 B4#B 	$B44B8;B8c|}|dtjddS)NiXr)r	rrrr
s  rtestWithTimeoutTriggeredSendz2SendfileUsingSendTest.testWithTimeoutTriggeredSendvs6!!		%
1




r?cdSr<r`rUs r_test_errorsz"SendfileUsingSendTest._test_errors~rr?c	:ttjd5}tjtj5}||}|td||dddn#1swxYwYdddn#1swxYwYttjd5}tj5}||}|td||dddn#1swxYwYdddn#1swxYwYttjd5}tj5}||}|td||d	|td||d
	|td||d	|td||d	dddn#1swxYwYddddS#1swxYwYdS)
NrrrBr	r+zbinary modezpositive integerr	r	rrrO)	rrr	rr(r	r2rxr)rVr	r$r	s    rtest_errorsz!SendfileUsingSendTest.test_errorss
)"D
)
)	;TF$5666
;!**1--&&
tT;;;
;
;
;
;
;
;
;
;
;
;
;
;
;
;
;	;	;	;	;	;	;	;	;	;	;	;	;	;	;	;
)"W
5
5
5	;
;A**1--&&
tT;;;
;
;
;
;
;
;
;
;
;
;
;
;
;
;
;	;	;	;	;	;	;	;	;	;	;	;	;	;	;	;
)"D
)
)
	=T	
=A**1--&&y2D'+T'>>>&&y2D'+T'>>>&&z3E'+T'<<<&&z3E'+T'===	
=	
=	
=	
=	
=	
=	
=	
=	
=	
=	
=	
=	
=	
=	
=
	=
	=
	=
	=
	=
	=
	=
	=
	=
	=
	=
	=
	=
	=
	=
	=
	=
	=s B3A:.B:A>	>BA>	BBB7D!3D
>D!
D	D!D	D!!D%(D%HBG8,H8G<	<H?G<	HHHN)%r]r^r_r	r	r	rrFr	r4r	r	r	r	r	r	r	r	r	r	r	r	r	r	r	r
r
r
r	
r
r
r
r
r
r
r
r
r`r?rr	r	s!HGH&G55[5$++[+"""333999...AAA...
-
-
-$$$999555
1
1
1666
1
1
1666888??????>>>222...<<<


=====r?r	rqz%os.sendfile() required for this test.ceZdZ	dZdS)SendfileUsingSendfileTestc"t|dS)Nr|r	rTs  rr	z(SendfileUsingSendfileTest.meth_from_sockst5666r?N)r]r^r_r	r`r?rr
r
s(77777r?r
zAF_ALG requiredceZdZdZejdddZdZejdddZejddd	Z	ejddd
Z
dZdZd
S)LinuxKernelCryptoAPIctjtjtjd}	|||f|S#t$r<}|t
jt|||d}~wwxYwr)	rr6r2rrrS	r!rSkipTestr)rVtyprrErs     r
create_algzLinuxKernelCryptoAPI.create_algs}V]F,A1EE	IIsDk"""K!	7	7	7JJLLL#CFFC666	7sA
B7BBrrctd}|dd5}|\}}|5|d||d|dddn#1swxYwY|\}}|5|dtj	|dtj	|dtj	|d	||d|dddn#1swxYwYddddS#1swxYwYdS)
N@ba7816bf8f01cfea414140de5dae2223b00361a396177a9cb410ff61f20015adhashsha256sabcrabcr?)
r'fromhexr$
rrrrrrMSG_MORE)rVralgooprs     rtest_sha256z LinuxKernelCryptoAPI.test_sha256s==":;;
__VX
.
.	9$KKMMEB
9
9

6"""  x888
9
9
9
9
9
9
9
9
9
9
9
9
9
9
9KKMMEB
9
9fo...fo...fo...  x888
9
9
9
9
9
9
9
9
9
9
9
9
9
9
9	9	9	9	9	9	9	9	9	9	9	9	9	9	9	9	9	9	9sZE=?B
E=B	E=B	E=:BE%E=%E)	)E=,E)	-E==FFcd}d}td}|dd5}|tjtj||\}}|5|||	|
d|dddn#1swxYwYddddS#1swxYwYdS)NsPython loves AF_ALGswhat do ya want for nothing?(193dbb43c6297b47ea6277ec0ce67119a3f3aa66r'
z
hmac(sha1)r)r'r,
r$
rrSOL_ALGALG_SET_KEYrrrr)rVkeyrrr.
r/
rs       rtest_hmac_sha1z#LinuxKernelCryptoAPI.test_hmac_sha1sN%.==!KLL
__V\
2
2	9dOOFNF,>DDDKKMMEB
9
9

4     x888
9
9
9
9
9
9
9
9
9
9
9
9
9
9
9	9	9	9	9	9	9	9	9	9	9	9	9	9	9	9	9	9	9s6AC:?C9CC			CC		
CC!$C!rcltd}td}d}td}t|}|dd5}|t
jt
j||\}}|5|	t
j
|t
j|||
|||dddn#1swxYwY|\}}|5|	|gt
j||
|||dddn#1swxYwYd	}	|g|	z}
|\}}|5|	|
t
j
||||	z}dddn#1swxYwY|
t|||	z|
|d|||\}}|5|	|gt
j||||	z}dddn#1swxYwY|
t|||	z|
|||	zddddS#1swxYwYdS)
N 06a9214036b8a15b512e03d534120006 3dafba429d9eb430b422da802c9fac41sSingle block msg e353779c1079aeb82708942dbe77181askcipherzcbc(aes))r/
ivr)r/
r<
r)r'r,
rr$
rrr3
r4
r
sendmsg_afalgALG_OP_ENCRYPTr-
rrrALG_OP_DECRYPT)
rVr5
r<
r
ciphertextmsglenr.
r/
r
multiplierlongmsgencdecs
             rtest_aes_cbcz!LinuxKernelCryptoAPI.test_aes_cbcsCmm>??
]]=
>
>!]]#EFF
S
__Z
4
4 	4OOFNF,>DDDKKMMEB
>
>  F$9b'-!888

3  *===	
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>KKMMEB
7
7  *$*$9b!BBB  #666
7
7
7
7
7
7
7
7
7
7
7
7
7
7
7Jej(GKKMMEB
3
3  $*$9b!BBBggfz122
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
SXXv
':;;;S&\:666KKMMEB
3
3  #$*$9b!BBBggfz122
3
3
3
3
3
3
3
3
3
3
3
3
3
3
3
SXXv
':;;;S#
"2333A 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4s6AL);A+D2&L)2D6	6L)9D6	:L)A
F/#L)/F3	3L)6F3	7$L);H"L)"H&	&L))H&	*A L)
<KL)K	L)K	AL))L-0L-rc
	td}td}td}td}td}td}t|}t|}|dd5}	|	t
jt
j||	t
jt
jd||		\}
}|
5|

t
j||t
j	|

|t
j|

||
|t|z|z}|||||||||ddddn#1swxYwY|		\}
}|
5||z}
|

|
gt
j||
|
|t|z|z}|||||||||ddddn#1swxYwYt!jdj}|		\}
}|
5||z}
|
|
gt
jt
j|t
jgt
jt
j|t||zgt
jt
j||gf|
t|
|z}|||||||||ddddn#1swxYwY|		\}
}|
5||z|z}
|

|
gt
j||
|
t|
|z
}||||ddddn#1swxYwYddddS#1swxYwYdS)N c939cc13397c1d37de6ae0e1cb7c423cb3d8cc017cbb89b39e0f67e2 c3b3c41f113a31b73d9a5cd432103069 24825602bd12a984e0092d3e448eda5f 93fe7d9e9bfd10348a5606e5cafa7354 0032a1dc85f1c9786925a2e71d8272ddaeadzgcm(aes))r/
r<
assoclenr)r/
r<
rO
r)r'r,
rr$
rrr3
r4
ALG_SET_AEAD_AUTHSIZErr=
r>
r-
rrrrStructrr
ALG_SET_OP
ALG_SET_IVALG_SET_AEAD_ASSOCLENr?
)rVr5
r<
plainassocexpected_ctexpected_tagtaglenrO
r.
r/
rresrpack_uint32s               rtest_aead_aes_gcmz&LinuxKernelCryptoAPI.test_aead_aes_gcmsmm>??
]]5
6
6

@AA

@AAmm$FGG}}%GHH\""u::
__VZ
0
01	8DOOFNF,>DDDOOFNF,H &
*
*
*KKMMEB
>
>  F$9b*2&/!KKK

5&/222

5!!!gghU3f<==  c(F72B.CDDD  sF788}===
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>KKMMEB
>
>em  #6+@R*2!444gghU3f<==  c(F72B.CDDD  sF788}===

>
>
>
>
>
>
>
>
>
>
>
>
>
>
>!-,,1KKKMMEB
>
>em

Enf&7VEZ9[9[\nf&7SWW9M9MPR9RSnf&BKKPXDYDYZggc#hh/00  c(F72B.CDDD  sF788}===
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>KKMMEB
8
8k)L8  #6+@R*2!444ggc#hh/00  HII777
8
8
8
8
8
8
8
8
8
8
8
8
8
8
8Y1	81	81	81	81	81	81	81	81	81	81	81	81	81	81	81	81	81	8sA1SC	HSH	SH	S;BKSK	SK	5SC=PSP!	!S$P!	%SA0R=1S=S	SS	SSSc|dd5}tjd}|tjtj||\}}|5|d}|	t|ddddn#1swxYwYddddS#1swxYwYdS)Nrngdrbg_pr_sha256r>)r$
r>urandomrrr3
r4
rrrr)rVr.

extra_seedr/
rrns      rtest_drbg_pr_sha256z(LinuxKernelCryptoAPI.test_drbg_pr_sha256<s9__U$4
5
5	.BJOOFNF,>
KKKKKMMEB
.
.WWR[[  R"---
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.		.	.	.	.	.	.	.	.	.	.	.	.	.	.	.	.	.	.s6AC
09B5)C
5B9	9C
<B9	=C

CCctjtjtjd}|5|t5|dddn#1swxYwY|t5|ddddn#1swxYwY|t5|ddddn#1swxYwY|t5|tjddddn#1swxYwY|t5|tjddddn#1swxYwYddddS#1swxYwYdS)Nr)r/
r)r/
rO
rO)rr6r2rrr=
r>
rTs  rtest_sendmsg_afalg_argsz,LinuxKernelCryptoAPI.test_sendmsg_afalg_argsGsD}V]F,A1EE
	J	J""9--
%
%""$$$
%
%
%
%
%
%
%
%
%
%
%
%
%
%
%""9--
,
,""d"+++
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,""9--
&
&""1%%%
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&""9--
L
L""f&;d"KKK
L
L
L
L
L
L
L
L
L
L
L
L
L
L
L""9--
J
J""f&;b"III
J
J
J
J
J
J
J
J
J
J
J
J
J
J
J	J	J	J	J	J	J	J	J	J	J	J	J	J	J	J	J	J	JsF6A)F6)A-	-F60A-	1F6B1%F61B5	5F68B5	9F6C8,F68C<	<F6?C<	F6"E?F6E	F6E	F60"FF6F"	"F6%F"	&F66F:=F:ctjtjtjd}||j|t5|ddddn#1swxYwY|td5|ddddn#1swxYwY|t5|ddddn#1swxYwY|td5|dddddS#1swxYwYdS)Nr)
tttttttttttttrz
type too long)ttttttttttttttr)ru?nnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnz
name too long)ru@nnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnn)
rr6r2rqr!rrS	rrr2rxrTs  rtest_length_restrictionz,LinuxKernelCryptoAPI.test_length_restrictionYs7}V]F,A1EE
###

0
1
1	*	*II()))	*	*	*	*	*	*	*	*	*	*	*	*	*	*	*

#
#J
@
@	*	*II()))	*	*	*	*	*	*	*	*	*	*	*	*	*	*	*

0
1
1	*	*II()))	*	*	*	*	*	*	*	*	*	*	*	*	*	*	*

#
#J
@
@	*	*II()))	*	*	*	*	*	*	*	*	*	*	*	*	*	*	*	*	*	*sHBBB'C		C
C
.DDD6EE EN)
r]r^r_r$
rrr0
r6
rF
r\
rc
re
rk
r`r?rr 
r 
s			$W#Aq))99*)9"999$W#Aq))&4&4*)&4P$W#Aq))<8<8*)<8|$W#Aq))..*).JJJ$*****r?r 
rrceZdZdZdS)TestMacOSTCPFlagscD|tjdSr<)rr
TCP_KEEPALIVErUs rtest_tcp_keepalivez$TestMacOSTCPFlags.test_tcp_keepalivems,-----r?N)r]r^r_rp
r`r?rrm
rm
ks#.....r?rm
winzrequires WindowsceZdZhdZdZdS)TestMSWindowsTCPFlags>
TCP_MAXSEGTCP_KEEPCNTTCP_NODELAYTCP_FASTOPENTCP_KEEPIDLE
TCP_KEEPINTVLcdttD}fd|D}g|ddS)Nc<g|]}|d|S)TCP)rj)rr$s  rrz<TestMSWindowsTCPFlags.test_new_tcp_flags.<locals>.<listcomp>s)BBB!all5.A.ABABBBr?c&g|]
}|jv|Sr`)
knownTCPFlags)rr$rVs  rrz<TestMSWindowsTCPFlags.test_new_tcp_flags.<locals>.<listcomp>s&FFF!43E*E*E1*E*E*Er?zANew TCP flags were discovered. See bpo-32394 for more information)rArr)rVprovidedunknowns`  rtest_new_tcp_flagsz(TestMSWindowsTCPFlags.test_new_tcp_flagsscBBs6{{BBBFFFFhFFFWO	Q	Q	Q	Q	Qr?N)r]r^r_r~
r
r`r?rrs
rs
qs9MQQQQQr?rs
cDeZdZdZdZdZejee	dpee	ddej
ejddZ
ejejd	ej
ejdd
ZdS)CreateServerTestctj}tjd|f5}||dd||d|dddn#1swxYwYtjrtjd|ftj5}||dd||d|ddddS#1swxYwYdSdS)Nrrrrr)rrr
create_serverrrrrirVrSrEs   rtest_addresszCreateServerTest.test_addresss-//

!;"5
6
6	:$T--//2K@@@T--//2D999	:	:	:	:	:	:	:	:	:	:	:	:	:	:	:%	>%udm-3_>>>
>AE  !1!1!3!3A!6>>>  !1!1!3!3A!6===
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>	>	>s%ABBBAD66D:=D:ctjd5}||jtj||jtjdddn#1swxYwYtjrtjdtj	5}||jtj	||jtjddddS#1swxYwYdSdS)Nrrrr)
rr
rrrPrurBrrri)rVrEr$s   rtest_family_and_typez%CreateServerTest.test_family_and_typesv

!"2
3
3	<tT[&.999TY(:;;;	<	<	<	<	<	<	<	<	<	<	<	<	<	<	<%	@%jIII
@Q  6?;;;  F,>???
@
@
@
@
@
@
@
@
@
@
@
@
@
@
@
@
@
@	@	@s%AA,,A03A0#AC;;C?C?c|ttdsK|t5tjddddddS#1swxYwYdStjd5}|tjtj}||ddddn#1swxYwYtjdd5}|tjtj}|	|dddddS#1swxYwYdS)NSO_REUSEPORT)rrT)
reuse_portr)
rrrrxr
rrr
rr)rVrErs   rtest_reuse_portz CreateServerTest.test_reuse_portsv~..		,"":..
H
H$%5$GGGG
H
H
H
H
H
H
H
H
H
H
H
H
H
H
H
H
H
H%&677
)4oof&79LMM  a(((
)
)
)
)
)
)
)
)
)
)
)
)
)
)
)%&64HHH
,Doof&79LMM##C+++
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,s7AAA5ACC	C#AD11D58D5rIPV6_V6ONLYz IPV6_V6ONLY option not supportedrcxtjdtj5}ddddS#1swxYwYdS)Nr
r)rr
rirTs  rtest_ipv6_only_defaultz'CreateServerTest.test_ipv6_only_defaults

!*V_
E
E
E	L	L	L	L	L	L	L	L	L	L	L	L	L	L	L	L	L	L	Ls/33dualstack_ipv6 not supportedctjdtjd5}||jtjddddS#1swxYwYdS)Nr
Trdualstack_ipv6)rr
rirrrTs  rtest_dualstack_ipv6_familyz+CreateServerTest.test_dualstack_ipv6_familys
!*V_15777	;:>T[&/:::	;	;	;	;	;	;	;	;	;	;	;	;	;	;	;	;	;	;s&AAAN)r]r^r_r
r
r
rrrrrrrr
rhas_dualstack_ipv6r
r`r?rr
r
s	>	>	>@@@
,
,
,X_.9999 -888799X35RSSLLTS99LX_22444355X35RSS;;TS55;;;r?r
c|eZdZejZdZdZdZe	j
ejddZ
e	jejde	j
ejddZe	jejde	j
ejddZd	S)
CreateServerFunctionalTestc$fd}tj|jtj||f}|j|jjdS)Nc^|5|\}}|5j|d}|s	dddddddS||dddn#1swxYwYddddS#1swxYwYdSr)rrrHrr)rErrrrrVs    rrunz3CreateServerFunctionalTest.echo_server.<locals>.runsa
&
&++--a&&JJt|,,,))D//C	&&&&&&
&
&
&
&
&
&
&
&LL%%%&&&&&&&&&&&&&&&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&s@B"3B
B")B
>B"
B	B"B	B""B&)B&r	)	rrrrHrrrqrr)rVrEr
rrs`   @recho_serverz&CreateServerFunctionalTest.echo_servers	&	&	&	&	&	&!!%%%!D8<<<T\222
		r?c<tj|5}||j|||d||ddddddS#1swxYwYdS)Nrrr)rrrHrrrr)rVrrrEs    recho_clientz&CreateServerFunctionalTest.echo_clients
]&
)
)
)	6TOODL)))LLLL   TYYt__f555		6	6	6	6	6	6	6	6	6	6	6	6	6	6	6	6	6	6sA.BBBctj}tjd|f5}|||d|ftjddddS#1swxYwYdS)Nrr)rrrr
r
r
rPr
s   r	test_tcp4z$CreateServerFunctionalTest.test_tcp4s-//

!2t*
-
-	BT"""k40&.AAA	B	B	B	B	B	B	B	B	B	B	B	B	B	B	B	B	B	Bs8A//A36A3rctj}tjd|ftj5}|||d|ftjddddS#1swxYwYdS)Nrrrrrrr
rir
r
r
s   r	test_tcp6z$CreateServerFunctionalTest.test_tcp6s-//

!2t*)/:::	==AT"""eT]FO<<<	=	=	=	=	=	=	=	=	=	=	=	=	=	=	=	=	=	=s8A;;A?A?r
ctj}tjd|ftjd5}|||d|ftjddddS#1swxYwYdS)NrTr
r)rrrr
rir
r
rPr
s   rtest_dual_stack_client_v4z4CreateServerFunctionalTest.test_dual_stack_client_v4s-//

!2t*V_15777	B:>T"""k40&.AAA	B	B	B	B	B	B	B	B	B	B	B	B	B	B	B	B	B	B8A<<BBctj}tjd|ftjd5}|||d|ftjddddS#1swxYwYdS)NrTr
rr
r
s   rtest_dual_stack_client_v6z4CreateServerFunctionalTest.test_dual_stack_client_v6s-//

!2t*V_15777	=:>T"""eT]FO<<<	=	=	=	=	=	=	=	=	=	=	=	=	=	=	=	=	=	=r
N)r]r^r_rrFrHr
r
r
rrrrr
rrr
r
r
r`r?rr
r
s=&G$666BBBX35RSS==TS=X_22444355X35RSSBBTS55BX_22444355X35RSS==TS55===r?r
send_fdsrecv_fdsceZdZdZdS)SendRecvFdsTestsc	Hd}d}dtdD}|||d|D}tjtjtj\}}|5|5tj|tg|tj|ttdzt|dz\}}}	}
|||dddn#1swxYwYdddn#1swxYwY|
|t|
t|t||
|	dt|D]>\}}|\}}
tj
|
t|?t|D]O\}}tj|d}|
|t|PdS)	Ncf|D]-\}}tj|tj|.dSr<r>r!)pipesrrfd2s   rclose_pipesz8SendRecvFdsTests.testSendAndRecvFds.<locals>.close_pipess;!

S








r?c8|D]}tj|dSr<r
)r:rms  r	close_fdsz6SendRecvFdsTests.testSendAndRecvFds.<locals>.close_fdss*



r?c4g|]}tjSr`)r>pipe)rrs  rrz7SendRecvFdsTests.testSendAndRecvFds.<locals>.<listcomp>
s...q...r?rucg|]\}}|Sr`r`)rrfdwfds   rrz7SendRecvFdsTests.testSendAndRecvFds.<locals>.<listcomp>s)))xsCs)))r?rrr)r5rqrrrJrBr
rr
rrr=r>r7rr8r)rVr
r
r
r:sock1sock2rfds2rrr+r
r
rs               rtestSendAndRecvFdsz#SendRecvFdsTests.testSendAndRecvFdss			
			
/.E"II...U+++))5)))(9KLLu
	-	-E	-	-OEC5#...%+_UCHHqL#c((UV,%W%W"CudOOIt,,,		-	-	-	-	-	-	-	-	-	-	-	-	-	-	-	-	-	-	-	-	-	-	-	-	-	-	-	-	-	-	
c"""TCHH---"""$E**	/	/JE3HCHS#e**++--....#D//	9	9JE373$$DTCJJ$5$5$7$78888	9	9s70D	3A3C2&D	2C6	6D	9C6	:D		D
D
N)r]r^r_r
r`r?rr
r
s##9#9#9#9#9r?r
cdtj}tjtjg|RdSr<)rthreading_setupraddModuleCleanupthreading_cleanup)thread_infos rsetUpModuler
%s3"244K.@O;OOOOOOr?__main__)rtestrtest.supportrrrr r	rrrr;rrrr7r>rirrweakrefrrrr6rr	rr	_threadrrr	rrrequires_working_socketrr8rrsystemrrrr%r*r.r3r7r:r>rDrrJHAVE_SOCKET_CANHAVE_SOCKET_CAN_ISOTPHAVE_SOCKET_CAN_J1939HAVE_SOCKET_RDSHAVE_SOCKET_ALGHAVE_SOCKET_QIPCRTRHAVE_SOCKET_VSOCKrHAVE_SOCKET_UDPLITEHAVE_SOCKET_BLUETOOTHr*rOrrNrbrfrir{rrrrrrrrrrrrrr'r3r9rHrNrVrZr]r`rdrgrkrrrrrrr6rFrernrrrrrrr rIrPrUrYr`rfrirrrrrrr$r4rr(r,r/r1r3rr8r;r=r?rBrDrFrHrJrLrOrQrSrUrWrYr[r]r_rarcrernrqrsrurwryr{r}rrrrrrrIrhrlrnrqrsrruryr{rrrrrrrr	r,	rZ	r[	r\	rU	rW	rc	rk	r|	r	rr	r	r
r 
rm
rjrs
r
r
r
r
r]mainr`r?r<module>r
s)""""""&&&&&&))))))				











				























OOOLLLLEEE t,,,,)0099	ho5 NNNNGGG(((


...#"$$..00..00""$$""$$**,,&&((gf&788..00U[


&
					H%			H%77777
7770+0+0+0+0+H%0+0+0+f
7
7
7
7
7H%
7
7
7 mmmmmmmm^,,,,,M>,,,,,,,,M>,,,(
355,,,,, 1>,,55,,,,,,M>,,,(,,,,,M>,,,,$--&
133WWYY!^
9;;H$5~;;33.-
<33333/333B,,,,,X&,,,8X&.~,,,,,nn,,,<!!!!!!!!!!76!!!!!!H00000000$AAAAA'AAA
6
6
6
6
6>
6
6
6AAAAA,AAA@@@@@,@@@XXXXXlXXX22222\222     L   
AAAAA=AAAYYYYY}YYY///.FFF333>]G]G]G]G]G*]G]G]G@%_&IJJP[P[P[P[P[8$P[P[KJP[f_&IJJW=W=W=W=W=#W=W=KJW=t*,OPP'''''!''QP'T*,OPP:::::!::QP:z_&KLLGGGGG8$GGMLG"_&KLL<9<9<9<9<9#<9<9ML<9|(
35577777x(775576$--&
133+D+D+D+D+DX&+D+D33.-+D\*@BB"""""*""BB"Jx!x!x!x!x!&x!x!x!v33333(333:(
35533333033553nt8t8t8t8t8t8t8t8n	6	6	6	6	6	6	6	6FFFFFFFF@@@@@@@@99999O999*







(55555?555t@t@t@t@t@/t@t@t@n:":":":":":":":"z........"SMSMSMSMSM/SMSMSMl      3   F&:M5M5M5M5M5')<M5M5M5`8I8I8I8I8IX&8I8I8Ivf!f!f!f!f!0f!f!f!Rooooo7oooh
					6:4k			
fmY''					/1G		('	fmY''					\#9		('	fm^,,					)+A		-,	111117;5|111fmY'']/1OPPz<((					02I		)(QP('	fmY'']/1OPPz<((					l$;		)(QP('	fm^,,]/1OPPz<((					*,C		)(QP-,	fmY'']/1OPP
fn%%z<((					&:&=		)(&%QP('	fm^,,]/1OPP
fn%%z<((					*:*>*A		)(&%QP-,	(
355					!::4o		55	
(
355
fmY''					35O		('55	(
355
fmY''					'A		('55	(
355
fm^,,					-/I		-,55	(
35511111";;57G11551fmY'']/1OPP(
355z<((					46Q		)(55QP('
	fmY'']/1OPP(
355z<((					,(C		)(55QP('
	fm^,,]/1OPP(
355z<((					.0K		)(55QP-,
	fmY'']/1OPP(
355
fn%%z<((					*>&A		)(&%55QP('	fm^,,]/1OPP(
355
fn%%z<((					.>*>*E		)(&%55QP-,						55{			fmY''					')?		('	fmY''					\#<+		('	fm^,,					)+D/		-,	
					$<$<$<n			
fmY''NOOy-88					.0M		98PO('	fmY''NOOy-88	R	R	R	R	RL*C9	R	R98PO('	Rfm^,,NOOy-88	R	R	R	R	R 02K =	R	R98PO-,	R					$<$<n			fmY''
fi  					.0M		! ('	fmY''
fi  					L*C9		! ('	fm^,,
fi  					 02K =		! -,	fmY	22
fi|<<					0M		=<32	fmY77
fi|<<					%5}%B		=<87	""""""""@fn%%WWVW--M1M1MBDD$M$M$M$M$M!7$M$MDD&%$MRfn%%WWVW--M1M1MBDD3F3F3F3F3F!7!9;3F3FDD&%3Fl)( # # # # #. # # #F]]]]]/]]]@`
`
`
`
`
1`
`
`
FiGiGiGiGiG(?iGiGiGX*A
+B
)@*A.E"""""F""")<P5P5P5P5P5 1P5P5P5fF4F4F4F4F4m^F4F4F4R>>>>>]N>>>>7575757575]757575rKKKKK]KKK.(
355KKKKK*KK55K.$$$$$X&$$$.S\W,.CDD4H4H4H4H4H!24H4HED4HnWWVY//1LMMG7G7G7G7G7X&G7G7NMG7TP:P:P:P:P:&P:P:P:f




(__&&MOO#####x ##OO#,__&&MOO$$$$$*N$$OO$N)9)9)9)9)9/)9)9)9X@6@6@6@6@6h'@6@6@6FWWV_550229$9$9$9$9$8,9$9$229$xRW_&899_&<==b#b#b#b#b#
b#b#>=:9b#JF=F=F=F=F=1F=F=F=RWWR,,<>>77777 577>>7_&788D*D*D*D*D*8,D*D*98D*NS\X-/DEE.....)..FE.
S\,,U335GHHQQQQQH-QQIHQ,0;0;0;0;0;x(0;0;0;f>=>=>=>=>=!2>=>=>=@fj!!
fj!!
fi  $9$9$9$9$9x($9$9! "!"!$9NPPP
zHMOOOOOs6BBBBB"!B"(C--C76C7