python (3.11.7)

(root)/
lib/
python3.11/
test/
__pycache__/
test_socket.cpython-311.opt-1.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$rYdSwxYwdS)z5Check whether CAN sockets are supported on this host.FT)rPF_CANSOCK_RAWCAN_RAWcloseAttributeErrorrss r_have_socket_canr$CsaM&-&.II	
				
G$uu44AA A c	tjtjtjtj}|n#t
tf$rYdSwxYwdS)z;Check whether CAN ISOTP sockets are supported on this host.FT)rr
SOCK_DGRAM	CAN_ISOTPr r!rr"s r_have_socket_can_isotpr)McM&-):F<LMM	
				
G$uu4r%c	tjtjtjtj}|n#t
tf$rYdSwxYwdS)z;Check whether CAN J1939 sockets are supported on this host.FT)rrr'	CAN_J1939r r!rr"s r_have_socket_can_j1939r-Wr*r%c	tjtjtjd}|n#tt
f$rYdSwxYwdS)z5Check whether RDS sockets are supported on this host.rFT)rPF_RDSSOCK_SEQPACKETr r!rr"s r_have_socket_rdsr1a`M&-)>BB	
				
G$uu4*AAAc	tjtjtjd}|n#tt
f$rYdSwxYwdS)z8Check whether AF_ALG sockets are supported on this host.rFT)rAF_ALGr0r r!rr"s r_have_socket_algr6kr2r3c	tjtjtjd}|n#tt
f$rYdSwxYwdS)z<Check whether AF_QIPCRTR sockets are supported on this host.rFT)r
AF_QIPCRTRr'r r!rr"s r_have_socket_qipcrtrr9usaM&+V->BB	
				
G$uu4r3c&tdu}|S)z:Check whether AF_VSOCK sockets are supported on this host.N)r)rets r_have_socket_vsockr<s
))4
CJc	tjtjtjtj}|n#t
tf$rYdSwxYwdS)z>Check whether AF_BLUETOOTH sockets are supported on this host.FT)rAF_BLUETOOTHSOCK_STREAMBTPROTO_RFCOMMr r!rr"s r_have_socket_bluetoothrBsf
M&-v/A6CXYY	
				
G$uu4r%c#Ktj}	tj|dVtj|dS#tj|wxYwN)rgetdefaulttimeoutsetdefaulttimeout)timeoutold_timeouts  rsocket_setdefaulttimeoutrIsa*,,K. )))
 ----- ----sAAIPPROTO_UDPLITEiceZdZdZdZdS)
SocketTCPTestctjtjtj|_t	j|j|_|jdSrD)rAF_INETr@servr	bind_portportlistenselfs rsetUpzSocketTCPTest.setUpsHM&.&2DEE	!+DI66		r=cF|jd|_dSrDrPr rTs rtearDownzSocketTCPTest.tearDown				r=N__name__
__module____qualname__rVrYr=rrMrMs2
r=rMceZdZdZdZdS)
SocketUDPTestctjtjtj|_t	j|j|_dSrD)rrOr'rPrrQrRrTs rrVzSocketUDPTest.setUps2M&.&2CDD	!+DI66			r=cF|jd|_dSrDrXrTs rrYzSocketUDPTest.tearDownrZr=Nr[r_r=rraras2777r=raceZdZdZdS)SocketUDPLITETestctjtjtjtj|_tj|j|_dSrD)rrOr'rJrPrrQrRrTs rrVzSocketUDPLITETest.setUps7M&.&2CVE[\\	!+DI66			r=N)r\r]r^rVr_r=rreres#77777r=rec~eZdZdZdZdZ	dZejeZ		dZ
e
deje
dzzz
Z
dZd	S)

SocketCANTestzTo be able to run this test, a `vcan0` CAN interface can be created with
    the following commands:
    # modprobe vcan
    # ip link add dev vcan0 type vcan
    # ip link set up vcan0
    vcan0z=IB3x8sz@3I4l2IxcTtjtjtjtj|_||jj	|j|jfdS#t$r!|
d|jzYdSwxYwN%network interface `%s` does not exist)rrrrr#
addCleanupr bind	interfacerskipTestrTs rrVzSocketCANTest.setUpsv}fov~NN%%%	+FKK)*****	+	+	+MMA>*
+
+
+
+
+
+	+s A<<'B'&B'N)r\r]r^__doc__rrbufsize
can_frame_fmtrcalcsizecan_frame_sizebcm_cmd_msg_fmtrVr_r=rrhrhsIGM$V_]33N  Osofoo>>BCCO+++++r=rhceZdZdZdZdZdS)
SocketRDSTestz\To be able to run this test, the `rds` kernel module must be loaded:
    # modprobe rds
     c,tjtjtjd|_||jj	t
j|j|_dS#t$r|
dYdSwxYw)Nrzunable to bind RDS socket)rr/r0rPrpr rrQrRrrsrTs rrVzSocketRDSTest.setUpsM&-1FJJ		(((	7%/	::DIII	7	7	7MM5666666	7sA00BBN)r\r]r^rtrurVr_r=rr{r{s4G77777r=r{c6eZdZdZdZdZdZdZdZdZ	dS)	ThreadableTestaThreadable Test class

    The ThreadableTest class makes it easy to create a threaded
    client/server pair from an existing unit test. To create a
    new threaded class from an existing unit test, use multiple
    inheritance:

        class NewClass (OldClass, ThreadableTest):
            pass

    This class defines two new fixture functions with obvious
    purposes for overriding:

        clientSetUp ()
        clientTearDown ()

    Any new test functions within the class must then define
    tests in pairs, where the test name is preceded with a
    '_' to indicate the client portion of the test. Ex:

        def testFoo(self):
            # Server portion

        def _testFoo(self):
            # Client portion

    Any exceptions raised by the clients during their tests
    are caught and transferred to the main thread to alert
    the testing framework.

    Note, the server setup function cannot call any blocking
    functions that rely on the client thread during setup,
    unless serverExplicitReady() is called just before
    the blocking call (such as in setting up a client/server
    connection and performing the accept() in setUp().
    c6|j|_|j|_dSrD)rV_ThreadableTest__setUp_setUprTs r__init__zThreadableTest.__init__6sz[


r=c8|jdS)zThis method allows the server to explicitly indicate that
        it wants the client thread to proceed. This is useful if the
        server is about to execute a blocking routine that is
        dependent upon the client thread during its setup routine.N)server_readysetrTs rserverExplicitReadyz"ThreadableTest.serverExplicitReady;s
	
r=cRtjtj_tj_tj_tj	d_d_
fd}|}|
d}||dzd}td|z}tjj|f_	n
#d_
xYw	jn#jwxYwjjjdS)NFcljrjdSrD)queueqsizegetrTsrraise_queued_exceptionz5ThreadableTest._setUp.<locals>.raise_queued_exceptionKs5z!!
'jnn&&&
'
'r=._T)enterContextrwait_threads_exit	threadingEventrclient_readydonerQueueserver_crashedrpidrfindgetattrthreadstart_new_thread	clientRun
client_threadrrwait)rUr
methodnamerKtest_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)rU	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.)NotImplementedErrorrTs rrzThreadableTest.clientSetUpxs!"DEEEr=c^|jtjdSrD)rrrexitrTs rrzThreadableTest.clientTearDown{s 	






r=N)
r\r]r^rtrrrrrrr_r=rrrs}##J!!!
   (((@""",FFFr=rc"eZdZddZdZdZdS)ThreadedTCPSocketTestrunTestcrt||t|dSN)
methodNamerMrrrUrs  rrzThreadedTCPSocketTest.__init__5t
;;;%%%%%r=cbtjtjtj|_dSrD)rrOr@clirTs rrz!ThreadedTCPSocketTest.clientSetUps=1CDDr=cz|jd|_t|dSrDrr rrrTs rrz$ThreadedTCPSocketTest.clientTearDown5%%d+++++r=Nrr\r]r^rrrr_r=rrrsI&&&&EEE,,,,,r=rc"eZdZddZdZdZdS)ThreadedUDPSocketTestrcrt||t|dSr)rarrrs  rrzThreadedUDPSocketTest.__init__rr=cbtjtjtj|_dSrD)rrOr'rrTs rrz!ThreadedUDPSocketTest.clientSetUps=1BCCr=cz|jd|_t|dSrDrrTs rrz$ThreadedUDPSocketTest.clientTearDownrr=Nrrr_r=rrrsI&&&&DDD,,,,,r=rz'UDPLITE sockets required for this test.c"eZdZddZdZdZdS)ThreadedUDPLITESocketTestrcrt||t|dSr)rerrrs  rrz"ThreadedUDPLITESocketTest.__init__s5""4J"???%%%%%r=cxtjtjtjtj|_dSrD)rrOr'rJrrTs rrz%ThreadedUDPLITESocketTest.clientSetUps#=1BFDZ[[r=cz|jd|_t|dSrDrrTs rrz(ThreadedUDPLITESocketTest.clientTearDownrr=Nrrr_r=rrrsI&&&&\\\,,,,,r=rc"eZdZddZdZdZdS)ThreadedCANSocketTestrcrt||t|dSr)rhrrrs  rrzThreadedCANSocketTest.__init__rr=ctjtjtjtj|_	|j|jfdS#t$rYdSwxYwrD)rrrrrrqrrrrTs rrz!ThreadedCANSocketTest.clientSetUpse=PP	HMM4>+,,,,,			
DD	s A
A+*A+cz|jd|_t|dSrDrrTs rrz$ThreadedCANSocketTest.clientTearDownrr=Nrrr_r=rrrsF&&&&,,,,,r=rc"eZdZddZdZdZdS)ThreadedRDSSocketTestrcrt||t|dSr)r{rrrs  rrzThreadedRDSSocketTest.__init__rr=ctjtjtjd|_	|jt
df|j|_dS#t$rYdSwxYwNr)	rr/r0rrqHOSTgetsocknamecli_addrrrTs rrz!ThreadedRDSSocketTest.clientSetUpsv=0EqII	HMM4)$$$ H0022DMMM			
DD	s?A22
B?Bcz|jd|_t|dSrDrrTs 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jdSrD)rAF_VSOCKr@rPrpr rqVMADDR_CID_ANY	VSOCKPORTrSracceptconnconnaddrrTs rrVz#ThreadedVSOCKSocketStreamTest.setUpsM&/63EFF		(((	-y9:::	  """#'9#3#3#5#5 	4=	(((((r=c&tjdtjtjtj|_||jjt}|j	|tfdS)N皙?)timesleeprrr@rrpr rconnectr)rUcids  rrz)ThreadedVSOCKSocketStreamTest.clientSetUpsg
3=&2DEE'''ii#y)*****r=cp|jd}||tdSN)rrecvassertEqualMSGrUmsgs  r
testStreamz(ThreadedVSOCKSocketStreamTest.testStream1innT""c"""""r=cv|jt|jdSrDrsendrr rTs r_testStreamz)ThreadedVSOCKSocketStreamTest._testStream.

cr=Nrr\r]r^rrVrrrr_r=rrrsd&&&&)))+++###r=rc2eZdZdZd	dZdZdZdZdZdS)
SocketConnectedTestzSocket tests for client-server connection.

    self.cli_conn is a client socket connected to the server.  The
    setUp() method guarantees that it is connected to the server.
    rc>t||dSr)rrrs  rrzSocketConnectedTest.__init__!&&t
&CCCCCr=ct|||j\}}||_dSrD)rrVrrPrcli_connrUraddrs   rrVzSocketConnectedTest.setUpsL##D)))	
  """Y%%''
d


r=cz|jd|_t|dSrD)rr rrYrTs rrYzSocketConnectedTest.tearDown
s7

&&t,,,,,r=ct||jt|jf|j|_dSrD)rrrrrrR	serv_connrTs rrzSocketConnectedTest.clientSetUps@))$///$	*+++r=cz|jd|_t|dSrD)rr rrrTs rrz"SocketConnectedTest.clientTearDowns7,,T22222r=Nr)	r\r]r^rtrrVrYrrr_r=rrrsrDDDD---
"""
33333r=rc.eZdZddZdZdZdZdZdS)	SocketPairTestrc|tj||t|dSrrrs  rrzSocketPairTest.__init__rr=cFtj\|_|_dSrD)r
socketpairrPrrTs rrVzSocketPairTest.setUps$/11	4888r=cF|jd|_dSrDrXrTs rrYzSocketPairTest.tearDown"rZr=cdSrDr_rTs rrzSocketPairTest.clientSetUp&r=cz|jd|_t|dSrDrrTs rrzSocketPairTest.clientTearDown)rr=Nr)r\r]r^rrVrYrrr_r=rrrsd&&&&222


,,,,,r=rc$eZdZdZdZdZdZdS)SocketTestBasezA base class for socket tests.

    Subclasses must provide methods newSocket() to return a new socket
    and bindSock(sock) to bind it to an unused address.

    Creates a socket self.serv and sets self.serv_addr to its address.
    c`||_|dSrD)	newSocketrP
bindServerrTs rrVzSocketTestBase.setUp>s)NN$$	r=cv||j|j|_dS)z9Bind server socket and set self.serv_addr to its address.N)bindSockrPr	serv_addrrTs rrzSocketTestBase.bindServerBs/

di   ..00r=cF|jd|_dSrDrXrTs rrYzSocketTestBase.tearDownGrZr=N)r\r]r^rtrVrrYr_r=rrr5sK111
r=rc"eZdZdZfdZxZS)SocketListeningTestMixinz%Mixin to listen on the server socket.czt|jdSrD)superrVrPrSrU	__class__s rrVzSocketListeningTestMixin.setUpOs.


	r=)r\r]r^rtrV
__classcell__r!s@rrrLs>//r=rc:eZdZdZfdZdZdZdZdZxZ	S)ThreadedSocketTestMixinzMixin to add client socket and allow client/server tests.

    Client socket is self.cli and its address is self.cli_addr.  See
    ThreadableTest for usage information.
    cntj|i|t|dSrD)rrrrUargskwargsr!s   rrz ThreadedSocketTestMixin.__init__[s9$)&)))%%%%%r=c`||_|dSrD)newClientSocketr
bindClientrTs rrz#ThreadedSocketTestMixin.clientSetUp_s+''))r=c*|S)z&Return a new socket for use as client.)rrTs rr+z'ThreadedSocketTestMixin.newClientSocketcs~~r=cv||j|j|_dS)z8Bind client socket and set self.cli_addr to its address.N)rrrrrTs rr,z"ThreadedSocketTestMixin.bindClientgs/

dh,,..


r=cz|jd|_t|dSrDrrTs rrz&ThreadedSocketTestMixin.clientTearDownlrr=)
r\r]r^rtrrr+r,rr"r#s@rr%r%Ts~&&&&&   ///
,,,,,,,r=r%c@eZdZdZfdZfdZfdZfdZxZS)ConnectedStreamTestMixinzMixin to allow client/server stream tests with connected client.

    Server's socket representing connection to client is self.cli_conn
    and client's connection to server is self.serv_conn.  (Based on
    SocketConnectedTest.)
    ct||j\}}||_dSrD)rrVrrPrr)rUrrr!s   rrVzConnectedStreamTestMixin.setUp{sJ


	
  """Y%%''
d


r=c|jd|_tdSrD)rr rrYr s rrYz!ConnectedStreamTestMixin.tearDowns:


r=ct|j|j|j|_dSrD)rrrrrrr s rrz$ConnectedStreamTestMixin.clientSetUps>
(((r=c	|jd|_n#t$rYnwxYwtdSrD)rr r!rrr s rrz'ConnectedStreamTestMixin.clientTearDownsa	N  """!DNN			D	
     s $
11)	r\r]r^rtrVrYrrr"r#s@rr1r1rs
"""""
!!!!!!!!!r=r1c(eZdZdZfdZdZxZS)UnixSocketTestBasez(Base class for Unix-domain socket tests.ctj|_|tj|jt
dSrD)tempfilemkdtempdir_pathrposrmdirrrVr s rrVzUnixSocketTestBase.setUps@ (**
$-000


r=ctj|j}tj|||tj|dS)N)dir)r9mktempr;rbind_unix_socketrprunlink)rUsockpaths   rrzUnixSocketTestBase.bindSocksF4=111&tT222	($/////r=)r\r]r^rtrVrr"r#s@rr7r7sM22
0000000r=r7ceZdZdZdZdS)UnixStreamBasez-Base class for Unix-domain SOCK_STREAM tests.cTtjtjtjSrD)rAF_UNIXr@rTs rrzUnixStreamBase.newSocket}V^V-?@@@r=Nr\r]r^rtrr_r=rrFrFs.77AAAAAr=rFc,eZdZdZeZfdZdZxZS)InetTestBasez!Base class for IPv4 socket tests.clt|jd|_dSNr)rrVrrRr s rrVzInetTestBase.setUps&


N1%			r=c<tj||jdS)Nhost)rrQrQrUrCs  rrzInetTestBase.bindSocks 49555555r=)	r\r]r^rtrrQrVrr"r#s@rrLrLsR++D&&&&&6666666r=rLceZdZdZdZdS)TCPTestBasez#Base class for TCP-over-IPv4 tests.cTtjtjtjSrD)rrOr@rTs rrzTCPTestBase.newSocketrIr=NrJr_r=rrTrT.--AAAAAr=rTceZdZdZdZdS)UDPTestBasez#Base class for UDP-over-IPv4 tests.cTtjtjtjSrD)rrOr'rTs rrzUDPTestBase.newSockets}V^V->???r=NrJr_r=rrXrXs.--@@@@@r=rXceZdZdZdZdS)UDPLITETestBasez'Base class for UDPLITE-over-IPv4 tests.cjtjtjtjtjSrD)rrOr'rJrTs rrzUDPLITETestBase.newSockets}V^V->@VWWWr=NrJr_r=rr[r[s.11XXXXXr=r[ceZdZdZdZdS)SCTPStreamBasez;Base class for SCTP tests in one-to-one (SOCK_STREAM) mode.cjtjtjtjtjSrD)rrOr@IPPROTO_SCTPrTs rrzSCTPStreamBase.newSockets%}V^V-?#022	2r=NrJr_r=rr^r^s)EE22222r=r^c eZdZdZejZdS)
Inet6TestBasez!Base class for IPv6 socket tests.N)r\r]r^rtrHOSTv6rQr_r=rrbrbs++DDDr=rbceZdZdZdZdS)UDP6TestBasez#Base class for UDP-over-IPv6 tests.cTtjtjtjSrD)rAF_INET6r'rTs rrzUDP6TestBase.newSockets}V_f.?@@@r=NrJr_r=rrererVr=receZdZdZdZdS)UDPLITE6TestBasez'Base class for UDPLITE-over-IPv6 tests.cjtjtjtjtjSrD)rrgr'rJrTs rrzUDPLITE6TestBase.newSockets}V_f.?AWXXXr=NrJr_r=rriris.11YYYYYr=ric*dfd}d}|r|n|S)aSkip decorated test if condition is true, add client_skip decorator.

    If the decorated object is not a class, sets its attribute
    "client_skip" to a decorator which will return an empty function
    if the test is to be skipped, or the original function if it is
    not.  This can be used to avoid running the client part of a
    skipped test when using ThreadableTest.
    cdSrDr_)r(r)s  rclient_passz%skipWithClientIf.<locals>.client_passrr=ctj|}t|ts
fd|_|S)NcSrDr_)rrms r<lambda>z3skipWithClientIf.<locals>.skipdec.<locals>.<lambda>s;r=)rskip
isinstancetypeclient_skip)objretvalrmreasons  rskipdecz!skipWithClientIf.<locals>.skipdecsD&v&&s++#t$$	7!6!6!6!6F
r=c`t|tst|dsd|_|S)Nrtc|SrDr_)rs rrpz5skipWithClientIf.<locals>.noskipdec.<locals>.<lambda>sr=)rrrsrrt)rus r	noskipdecz#skipWithClientIf.<locals>.noskipdecs33%%	*m)D)D	*)kCO
r=r_)	conditionrwrxr{rms `  @rskipWithClientIfr}sQ



 .77Y.r=cfd|D}t|ddd|DzS)zSkip decorated test if obj is missing any of the given attributes.

    Sets client_skip attribute as skipWithClientIf() does.
    c4g|]}t||Sr_)r).0namerus  r
<listcomp>z requireAttrs.<locals>.<listcomp>s(EEE'#t2D2DEtEEEr=don't have , c3K|]}|VdSrDr_rrs  r	<genexpr>zrequireAttrs.<locals>.<genexpr>s"*D*DD4*D*D*D*D*D*Dr=)r}join)ru
attributesmissings`  rrequireAttrsrsY
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)	aSkip decorated test if a socket cannot be created with given arguments.

    When an argument is given as a string, will use the value of that
    attribute of the socket module, or skip the test if it doesn't
    exist.  Sets client_skip attribute as skipWithClientIf() does.
    Ncfg|].}t|ttt|,|/Sr_)rrstrrrrrus  rrz!requireSocket.<locals>.<listcomp>sPBBBs#s##B,3FC,@,@BsBBBr=rrc3K|]}|VdSrDr_rs  rrz requireSocket.<locals>.<genexpr>s"'A'A'A'A'A'A'A'Ar=cfg|].}t|trtt|n|/Sr_)rrrrrrs  rrz!requireSocket.<locals>.<listcomp>sF%%%-7sC,@,@IGFC(((c%%%r=zcan't create socket({0}): {1}c34K|]}t|VdSrD)rros  rrz requireSocket.<locals>.<genexpr>#s(++c!ff++++++r=)rrr rrr}format)r(errrcallargsr#rs      r
requireSocketr
sCBBdBBBGdii'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 )rUrr#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])
rrOr@assertInfilenoreprassertNotInrqrrrUr#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=)rrrOr@rfamilyrsprotorrr )rUr#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)
rrOr@rrrr
gc_collectfailReferenceError)rUr#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))rrOr'rpr rqrrrsendtorr	exceptionr)rUr#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
dSrD)rrOhas_ipv6rgr@r'rSOCK_RDMr0
SOL_SOCKETSO_REUSEADDRrTs rtestCrucialConstantsz'GeneralModuleTests.testCrucialConstantss[?	OOr=cjtjtjtjrtjdSdSrD)rIPPROTO_TCPIPPROTO_UDPrIPPROTO_IPV6rTs rtestCrucialIpProtoConstantsz.GeneralModuleTests.testCrucialIpProtoConstantss7?	 	 	 r=ntWindows specificctjtjtjtjtjtjtjtjdSrD)	rIPPROTO_ICLFXBM
IPPROTO_STIPPROTO_CBTIPPROTO_IGPIPPROTO_RDPIPPROTO_PGMIPPROTO_L2TPr`rTs rtestWindowsSpecificConstantsz/GeneralModuleTests.testWindowsSpecificConstantssPr=zWASI is missing these methodsc~gd}|D]5}ttj|s|d|d6dS)N)_acceptrqr
connect_exgetpeernamerrSrecvfrom
recvfrom_intor
setsockoptshutdownzsocket method z is missing)rrr)rUnamesrs   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)rUoptsopts   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
gethostbynamerrsrfind
gethostbyaddrgetfqdnrr)rUhostnameiphnamealiasesipaddrsall_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)rHOSTv4rrrrr
)rUrrQs   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)rrrrr
)rUexplanationrs   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()rztest needs socket.gethostname()ctj}	tjdnC#t$r6}|jtjkr|dnYd}~nd}~wwxYw	|tjdtjd|tjdtj|dS#tj|wxYw)Nnewztest should be run as rootsbarr)rrrrerrnoEPERMrsr)rUoldhnrs   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)rU
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'rrTs rtestInvalidInterfaceIndexToNamez2GeneralModuleTests.testInvalidInterfaceIndexToName)s@	
'6#8!<<<)V%:KHHHHHr=r&z&socket.if_nametoindex() not available.c|ttjd|ttjddSr.)rrrr&rrTs 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)sysr3r\rgetnameinforr)rUorigs  rtestRefCountGetNameInfoz*GeneralModuleTests.testRefCountGetNameInfo5s	B?8,,Dx*****	B	B	Bx((D00		@AAAAAA100	Bs37<A:9A:cT	tjdddS#t$rYdSwxYw)N)rkrrrr)rr6rrTs 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)rUsizesfuncsizemaskrKswappeds       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_MAXrrBrAr@r?rrD)rUrQ
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)echor_ratcpgetandroidapileveludprMrP)rr5platform
startswithr
getservbynamerrrdr
is_android
getservbyportrrD)rUeqservicesservicerRport2udpports       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
rMspam)	rrrE
gettimeoutrIrFr
ValueErrorr)rUr#rCs   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)rrrxrTs 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)rxr~rOc|SrDr_)arOr~s rrpz5GeneralModuleTests.testIPv4toString.<locals>.<lambda>ii++r=cJttf||SrDrrrvrFrrUs  rrpz5GeneralModuleTests.testIPv4toString.<locals>.<lambda>#t'8'8
j!4(
(
r=rzr{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)rrxr~rOrr)rUrg
assertInvalidrOr~s`   @@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)r~rgrIPv6 not available+could not import needed symbols from socketwin32::&'IPv6 might not be supportedc|SrDr_)rrgr~s rrpz5GeneralModuleTests.testIPv6toString.<locals>.<lambda>ii!,,r=cJttf|SrDrrrrUs rrpz5GeneralModuleTests.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)rr~rgrrsImportErrorr5rgrwinerrorrr)rUrrrrgrr~s`   @@@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_ntoarrOc|SrDr_)rrOrs rrpz5GeneralModuleTests.testStringToIPv4.<locals>.<lambda>!rr=cJttf||SrDrrs  rrpz5GeneralModuleTests.testStringToIPv4.<locals>.<lambda>"rr=z1.0.1.0sz
170.85.170.85sUUrr|rrssr)rrrrOr	bytearray)rUrrrrOrs`   @@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)rrgrrrrrrrc|SrDr_)rrgrs rrpz5GeneralModuleTests.testStringToIPv6.<locals>.<lambda>Hrr=cJttf|SrDrrs rrpz5GeneralModuleTests.testStringToIPv6.<locals>.<lambda>Irr=rrsz!aef:b01:506:1001:ffff:9997:55:170s
Upsss)rrrgrrsrr5rgrrrr)rUrrrrgrrs`   @@@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)rrOr@rpr 	itertoolscountrfind_unused_portrqrr
EADDRINUSErrrrsrr)rUrCrKrRrr
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)	rrOr@rpr 
getsockoptrrassertFalserUrCreuses   rtestGetSockOptz!GeneralModuleTests.testGetSockOptxsh}V^V-?@@
### 163FGG!%<=====r=cjtjtjtj}||j|tjtjd|tjtj}|	|dkddS)Nrrzfailed to set reuse mode)
rrOr@rpr rrrrrrs   rtestSetSockOptz!GeneralModuleTests.testSetSockOpts}V^V-?@@
###)6+>BBB 163FGG!%?@@@@@r=ctjtjtj5}|ddddn#1swxYwY|t
|jddS)Nrspam)rrOr@
settimeoutrrrrRs  rtestSendAfterClosez%GeneralModuleTests.testSendAfterCloses
]6>6+=
>
>	$OOA															'49g66666sAAActj}|tjdftj|	||ddS#t$r<}||jtj	tj
fYd}~dSd}~wwxYw)Nrrz#close() should raise EBADF/ENOTSOCK)rrq
_LOCALHOSTrr rrrrEBADFENOTSOCK)rUrCrs   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)
rrOr@rrrrrsrrrRs  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)NrPr)rrpr rrrrDrqrrrrrr)rUrCrRbig_portneg_portrKrs       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_VALSrM)rdr)	rrrrpr rrvrrrs  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)
rrpr rrrrrsrr)rUr#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 versionrrrrdrehttp<AddressFamily.AF_INET: %r><SocketKind.SOCK_STREAM: %r>r)rQrRrrs)r)flags)rQrRrrsrruAI_NUMERICSERV)rgetaddrinforrEAI_SERVICErsrrlenrIPV6_ENABLEDrr5rdrOr@rvaluerSOL_TCP
AI_PASSIVE	AF_UNSPECrUnicodeEncodeErrorr)
rUrinfoinfosrrsrsocktyperbs
          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)rrrr6rTs rtest_getnameinfoz#GeneralModuleTests.test_getnameinfo's&'6#57LaPPPPPr=networkznetwork is not enabledc0tjd5tjddddn#1swxYwYd}tj|tj|tj|dtjtjdS)Nz
python.orgu!испытание.pythontest.netr)rtransient_internetrrgethostbyname_exrrr@)rUras  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 testcTttjddSrrrvmathacoshr(rUs 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)rsignalrrsrSIGALRMrrZeroDivisionErrorrsendallr
SOCK_MAX_SIZETimeoutErrorr )rU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
rTs rtest_sendall_interruptedz+GeneralModuleTests.test_sendall_interrupted[s&&u-----r=c0|ddS)NTr
rTs 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)
rrOr@rassertWarnsResourceWarningrrrrwarningr(makefile)rUrCrrrs     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>)rrOr@rr rrrUrCfps   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 rrvrs   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)NrrrM)	rrqrr rrrrSrrRs  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()rUr(rCr*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)rtrk+rr'zinvalid mode)r+rassertRaisesRegexrvr)rUr(rCs   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
dSrN)rrangepickleHIGHEST_PROTOCOLrrdumpsloadsrOrr@)rUrCprotocolrrss     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)rrMr)rrOr@rqrrS)rUbacklogsrvs   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)
rQrrOr@rqrrrDrSrS)rUrQr<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)NrrLi)	rrDrr6rrcrgr@rqrs  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)rrrgr'rr)rUrsockaddrs   rtest_getaddrinfo_ipv6_basicz.GeneralModuleTests.test_getaddrinfo_ipv6_basicsP"."&/	

1h	
#GHHHHHr=c|tjtjd|tjtjddS)Nr{r)rrrrTs 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
rE)rr"rrgr'rr)rUifindextest_interfacerrFs     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*rKr
rEr)rrrrgr'rr)rUrLrrFs    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)NrrDr
ff02::1de:c0:face:8d%1234)rr"r6NI_NUMERICHOSTNI_NUMERICSERVr)rUrLrMrFnameinfos     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)NrPrDr
rrSrT)rr6rUrVrr)rUrLrFrWs    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)	rrOr@rrrrrsrrs  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)rrr@rOrrsrsetblocking)rUr^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=re)rrsrrr)rrOr@detachmax
AddressFamily__members__values
SocketKindrCrrrsrr)rUrCfdunknown_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||_dSrDrk)rUrks  rrzEGeneralModuleTests.test__sendfile_use_sendfile.<locals>.File.__init__@s
r=c|jSrDrtrTs rrzCGeneralModuleTests.test__sendfile_use_sendfile.<locals>.File.filenoCs	wr=N)r\r]r^rrr_r=rFilerr?s2







r=rvrrO)rr<rcurdirO_RDONLYr r_GiveupOnSendfile_sendfile_use_sendfilerDr)rUrvrCrks    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)rrrsrrrpr re)rUr#rstyperks2s      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'rHr)rrOr@rpr rqrrrrr'rrgrcr9r:shutilrmtreerHr<rDrPermissionError)rUr#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@rrrrrOr@rTs 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)NfoorrrTs 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 descriptorrMrr0rvrrOr@rTs 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)NrirrrTs 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_fdrrrrrOr@)rUWSAENOTSOCKrs   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})r9NamedTemporaryFilerrrrrOr@rrrr)rUafilers   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)NrrgrcT|o|dS)NAF_isupperrhCs rrpz<GeneralModuleTests.test_addressfamily_enum.<locals>.<lambda>!))++=!,,u*=*=r=source)renum
_old_convert_IntEnum_test_simple_enumrrg)rUrrCheckedAddressFamilys    rtest_addressfamily_enumz*GeneralModuleTests.test_addressfamily_enumsi#11ox== 2  
	
3V5IJJJJJr=cddl}ddl}||jddd|}||t
jdS)NrrjrcT|o|dS)NSOCK_rrs rrpz9GeneralModuleTests.test_socketkind_enum.<locals>.<lambda>s!))++?!,,w*?*?r=r)rrrrrrrj)rUrrCheckedSocketKinds    rtest_socketkind_enumz'GeneralModuleTests.test_socketkind_enumsi ..lH??/
	
0&2CDDDDDr=cddl}ddl}||jddd|}||t
jdS)NrMsgFlagrcT|o|dS)NMSG_rrs rrpz6GeneralModuleTests.test_msgflag_enum.<locals>.<lambda>s!))++>!,,v*>*>r=r)rrrIntFlagrrr)rUrrCheckedMsgFlags    rtest_msgflag_enumz$GeneralModuleTests.test_msgflag_enumsf++i>>,
	
~v~>>>>>r=cddl}ddl}||jddd|}||t
jdS)NrAddressInforcT|o|dS)NAI_rrs rrpz:GeneralModuleTests.test_addressinfo_enum.<locals>.<lambda>rr=r)rrrrrrr)rUrrCheckedAddressInfos    rtest_addressinfo_enumz(GeneralModuleTests.test_addressinfo_enumsi!//mX==0  	
163EFFFFFr=)`r\r]r^rrr
skipUnlessrrrrrrrr<rrskipIfris_wasirr5rgrrrrrrrrr!r,r0r2r8r:rJcpython_onlyrYrqrwr}rrrrrrrrrrrrrrris_resource_enabledrr
rrrrr r"r,r1r9r=r?rBrGrIrrNrQrXrZr\rarnr{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)BasicCANTestcNtjtjtjdSrD)rAF_CANrrrTs rrz!BasicCANTest.testCrucialConstantss



r=CAN_BCM&socket.CAN_BCM required for this test.cFtjtjtjtjtjtjtjtjtj	tj
tjtjtj
tjtjtjtjtjtjtjtjtjtjtjdSrD)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_FRAMErTs rtestBCMConstantszBasicCANTest.testBCMConstantss		      !!  !!!!	!!""""######&&))))####r=ctjtjtjtj5}	ddddS#1swxYwYdSrDrrrrrs  rtestCreateSocketzBasicCANTest.testCreateSocket
]6=&/6>
J
J	a																		AAActjtjtjtj5}	ddddS#1swxYwYdSrD)rrr'rrs  rtestCreateBCMSocketz BasicCANTest.testCreateBCMSockets]6=&*;V^
L
L	PQ																		rctjtjtjtj5}d}|||||ddddS#1swxYwYdS)N)r)rrrrrqrr)rUr#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)rrrrr0rrqrs  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)	rrrrrSOL_CAN_RAWrrr)rUr#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=IIrl)rpackrrrrrrrrrr)rUcan_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=ct|}|dd}tj|j|||S)zBuild a CAN frame.rl)rljustrrrv)clsrdatacan_dlcs    rbuild_can_framezCANTest.build_can_frame#s;d))zz!W%%{3,fgtDDDr=cXtj|j|\}}}|||d|fS)zDissect a CAN frame.N)rrrv)rframerrrs     rdissect_can_framezCANTest.dissect_can_frame*s4!'
c.? G Ghwh00r=c|j|j\}}||j|||d|jdSr)r#rrurcfrrrUrrs   r
testSendFramezCANTest.testSendFrame0sU6??4<00D"%%%a$.11111r=cz|dd|_|j|jdS)NrsrrrrrTs r_testSendFramezCANTest._testSendFrame5s6&&t-DEE

dgr=c|j|j\}}||j|dSrD)r#rrurrr
s   rtestSendMaxFramezCANTest.testSendMaxFrame9s96??4<00D"%%%%%r=cz|dd|_|j|jdS)NrsrrTs r_testSendMaxFramezCANTest._testSendMaxFrame=s5&&t[99

dgr=c|j|j\}}||j||j|j\}}||j|dSrD)r#rrurcf1cf2r
s   rtestSendMultiFrameszCANTest.testSendMultiFramesAsj6??4<00D2&&&6??4<00D2&&&&&r=c|dd|_|j|j|dd|_|j|jdS)NsD3"s"3)rrrrrrTs r_testSendMultiFrameszCANTest._testSendMultiFramesHsc''.ABB

dh''o>>

dhr=rrc|j|j\}}||j|||\}}}||j|||j|dSrD)rrrurrr
rr)rUrrrrrs      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'rrpr rrrrbytesrrrrrrryrrr)rUbcmopcoderr
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^rclassmethodrr
rrrrrrrrrrrr1r_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|_dSNrirrrrr's   rrzISOTPTest.__init__{*$)&))) r=cftjtjtjtjdSrD)rrrr(r'rTs rrzISOTPTest.testCrucialConstantss(



r=ctjtjtjtj5}	ddddS#1swxYwYdSrDrrs  rrzISOTPTest.testCreateSocketrrr(z(socket.CAN_ISOTP required for this test.ctjtjtjtj5}	ddddS#1swxYwYdSrD)rrr'r(rs  rtestCreateISOTPSocketzISOTPTest.testCreateISOTPSocket]6=&*;V=M
N
N	RS																		rc0tjtjtjtj5}|t
d5|ddddn#1swxYwYddddS#1swxYwYdS)Nr)rrr)rrr'r(r0rrqrs  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!iVro)rrr'r(rrrqrrrrENODEVrsrUr#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<rrBr"r#s@rr4r4xs!!!!!X55CEEEE+++r=r4z!CAN J1939 required for this test.ceZdZfdZejeedddZejeedddZ	dZ
xZS)	J1939TestcHtj|i|d|_dSr6r7r's   rrzJ1939Test.__init__r8r=r,z(socket.CAN_J1939 required for this test.cFtjtjtjtjtjtjtjtjtj	tj
tjtjtj
tjtjtjtjtjtjtjtjtjtjtjdSrD)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_MAXrTs rtestJ1939ConstantszJ1939Test.testJ1939Constantss	%%  ((**!!	!!  """"!!$$!!%%r=ctjtjtjtj5}	ddddS#1swxYwYdSrD)rrr'r,rs  rtestCreateJ1939SocketzJ1939Test.testCreateJ1939Socketr=rc	tjtjtjtj5}|jtjtjtjf}|||	|
|ddddS#1swxYwYdS#t$r?}|jtj
kr|d|jznYd}~dSd}~wwxYwrn)rrr'r,rrrJrPrIrqrrrrr@rsrAs    rrBzJ1939Test.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^r`rBr"r#s@rrDrDs!!!!!X55CEE  EE BX55CEEEEr=rDz#RDS sockets required for this test.c eZdZdZdZdZdS)BasicRDSTestc6tjtjdSrD)rAF_RDSr/rTs rrz!BasicRDSTest.testCrucialConstantss





r=ctjtjtjd5}	ddddS#1swxYwYdSr)rr/r0rs  rrzBasicRDSTest.testCreateSockets
]6=&*?
C
C	q																		s
:>>c<d}tjtjtjd5}|tjtj||tjtj|ddddS#1swxYwYdS)Ni@r)rr/r0rr	SO_RCVBUF	SO_SNDBUF)rUrur#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^rrrjr_r=rrcrcsFGGGGGr=rcceZdZddZfdZdZdZdZdZe	e
j
dd	Ze	e
j
d
dZdZ
d
ZdZdZxZS)RDSTestrc>t||dSr)rrrs  rrzRDSTest.__init__rr=cxttj|_dSrD)rrVrrevtr s rrVz
RDSTest.setUps'


?$$r=c|j|j\}}||j|||j|dSrD)rPrrurrrrUrrs   rtestSendAndRecvzRDSTest.testSendAndRecvsSY''55
dD)))-----r=cnd|_|j|jdt|jfdSNrrrrrrrRrTs r_testSendAndRecvzRDSTest._testSendAndRecv	0		1tTY&788888r=c|j|jtj\}}||j||j|j\}}||j|dSrD)rPrrurMSG_PEEKrrrqs   rtestPeekzRDSTest.testPeek	srY''foFF
dD)))Y''55
dD)))))r=cnd|_|j|jdt|jfdSrtrurTs r	_testPeekzRDSTest._testPeek	rwr=recvmsgc|j|j\}}}}||j|dSrD)rPr}rurr)rUrancdata	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)rrrrrRrTs r_testSendAndRecvMsgzRDSTest._testSendAndRecvMsg	s6"	$)b!dDI->?????r=c|j|j\}}||j||j|j\}}||j|dSrD)rPrrurdata1data2rqs   rtestSendAndRecvMultizRDSTest.testSendAndRecvMulti	snY''55
dT***Y''55
dT*****r=cd|_|j|jdt|jfd|_|j|jdt|jfdS)Nsbaconrsegg)rrrrrRrrTs r_testSendAndRecvMultizRDSTest._testSendAndRecvMulti!	sX

Adi'8999

Adi'899999r=ctj|jgggd\}}}||j||j|j\}}||j|dS)Ng@)selectrPrrrurr)rUrr%rkrrs      r
testSelectzRDSTest.testSelect(	sp-RS991a

di###Y''55
dD)))))r=cnd|_|j|jdt|jfdS)NsselectrrurTs r_testSelectzRDSTest._testSelect.	s0		1tTY&788888r=r)r\r]r^rrVrrrvrzr|rrrrrrrrr"r#s@rrlrlsDDDD%%%%%...
999***999\&-++**,+*\&-++@@,+@+++:::***9999999r=rlz'QIPCRTR sockets required for this test.c2eZdZdZdZdZdZdZdZdS)BasicQIPCRTRTestctjdSrD)rr8rTs rrz%BasicQIPCRTRTest.testCrucialConstants6	sr=ctjtjtj5}	ddddS#1swxYwYdSrD)rr8r'rs  rrz!BasicQIPCRTRTest.testCreateSocket9	s~
]6,f.?
@
@	A																		
9==ctjtjtj5}||ddddddS#1swxYwYdSNrr)rr8r'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)NrrPr)rr8r'rrQrassertNotEqualrs  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)NrNrP)rr8r'rrrrQrs  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)rr8r'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)BasicVSOCKTestctjdSrD)rrrTs rrz#BasicVSOCKTest.testCrucialConstantsT	s
r=ctjtjtjtjtjtjtjtjdSrD)	rSO_VM_SOCKETS_BUFFER_SIZESO_VM_SOCKETS_BUFFER_MIN_SIZESO_VM_SOCKETS_BUFFER_MAX_SIZErVMADDR_PORT_ANYVMADDR_CID_HOSTVM_SOCKETS_INVALID_VERSIONr
rTs rtestVSOCKConstantsz!BasicVSOCKTest.testVSOCKConstantsW	sP((,,,,))----r=ctjtjtj5}	ddddS#1swxYwYdSrD)rrr@rs  rrzBasicVSOCKTest.testCreateSocketa	s}
]6?F,>
?
?	1																		rc tjtjtj5}|tjtj}|tjtj}|tjtj}|tjtj|dz|tjtj|dz|tjtj|dz||dz|tjtj||dz|tjtj||dz|tjtjddddS#1swxYwYdSNr)	rrr@rrrrrr)rUr#orig_maxr7orig_mins     rrjz#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^rrrrjr_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_LOCALr?rAr5rgBTPROTO_HCISOL_HCI
BTPROTO_L2CAPrhBTPROTO_SCOrTs rtestBluetoothConstantsz)BasicBluetoothTest.testBluetoothConstants	s<7""NN  <**955
#""""
#"

#
#r=ctjtjtjtj5}	ddddS#1swxYwYdSrD)rr?r@rArs  rtestCreateRfcommSocketz)BasicBluetoothTest.testCreateRfcommSocket	s
]6.0BFDY
Z
Z	^_																		rrz&windows does not support L2CAP socketsctjtjtjtj5}	ddddS#1swxYwYdSrD)rr?r0rrs  rtestCreateL2capSocketz(BasicBluetoothTest.testCreateL2capSocket	s
]6.0EvG[
\
\	`a																		rz$windows does not support HCI socketsctjtjtjtj5}	ddddS#1swxYwYdSrD)rr?rrrs  rtestCreateHciSocketz&BasicBluetoothTest.testCreateHciSocket	s
]6.AS
T
T	XY																		rr[z.windows and freebsd do not support SCO socketsctjtjtjtj5}	ddddS#1swxYwYdSrD)rr?r0rrs  rtestCreateScoSocketz&BasicBluetoothTest.testCreateScoSocket	s]6.0EvGY
Z
Z	^_																		rN)
r\r]r^rrrrr5rgrrrhrr_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|jtdSrDrrrrTs r	_testRecvzBasicTCPTest._testRecv	C     r=c|jttdz
}|jd}||z}||tdSNr)rrrrr)rUseg1seg2rs    rtestOverFlowRecvzBasicTCPTest.testOverFlowRecv	s[}!!#c((Q,//}!!$''Tkc"""""r=cD|jtdSrDrrTs r_testOverFlowRecvzBasicTCPTest._testOverFlowRecv	rr=cv|jd\}}||tdSr)rrrrrUrrs   rtestRecvFromzBasicTCPTest.testRecvFrom	s7M**400	Tc"""""r=cD|jtdSrDrrTs r
_testRecvFromzBasicTCPTest._testRecvFrom	rr=c|jttdz
\}}|jd\}}||z}||tdSr)rrrrr)rUrrrrs     rtestOverFlowRecvFromz!BasicTCPTest.testOverFlowRecvFrom	sc]++CHHQJ77
d]++D11
dTkc"""""r=cD|jtdSrDrrTs r_testOverFlowRecvFromz"BasicTCPTest._testOverFlowRecvFrom	rr=c~d}	|jd}|sn||z
}#||ddS)Nr=rrffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff)rrr)rUrreads   rtestSendAllzBasicTCPTest.testSendAll	sX	=%%d++D
4KC		
	
k*****r=c>d}|j|dS)Nr)rr)rU	big_chunks  r_testSendAllzBasicTCPTest._testSendAll	s#	y)))))r=c`|j}tj|tjtj}||j||tj|	d}|
|tdSr)rrrfromfdrOr@rpr rrrr)rUrkrCrs    r
testFromFdzBasicTCPTest.testFromFd	s
]
!
!
#
#}R1CDD
###dFM222iiooc"""""r=cD|jtdSrDrrTs r_testFromFdzBasicTCPTest._testFromFd	rr=c|j}||j|d}||tdSr)rduprpr rrr)rUrCrs   rtestDupzBasicTCPTest.testDup	sT}  ""
###iiooc"""""r=cD|jtdSrDrrTs r_testDupzBasicTCPTest._testDup	rr=c|jd}||t|jdSr)rrrrrrrs  rtestShutdownzBasicTCPTest.testShutdown	sGm  &&c"""	
	r=cx|jt|jddSr)rrrrrTs r
_testShutdownzBasicTCPTest._testShutdown	s4C   """""r=c>ddl}|jt|t
|jj|jdz|t
|jjd|jdzz|jddS)Nrrr)	rQrrrrrDrrSUINT_MAXrUrQs  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)rrrerr_closedrrrr rrOr@rpr)rUrrrCrs     r
testDetachzBasicTCPTest.testDetach
s%%''M  ""F###
-...'4=#5t<<<
}V^V-?JJJ
###iiooc"""""r=cD|jtdSrDrrTs 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}||tdSrDrPrrrrrs  rtestSendtoAndRecvzBasicUDPTest.testSendtoAndRecv'
7innSXX&&c"""""r=c`|jtdt|jfdSrrrrrrRrTs r_testSendtoAndRecvzBasicUDPTest._testSendtoAndRecv,
'Qty 122222r=c|jtt\}}||tdSrDrPrrrrrs   rrzBasicUDPTest.testRecvFrom/
=I&&s3xx00	Tc"""""r=c`|jtdt|jfdSrrrTs rrzBasicUDPTest._testRecvFrom4
rr=cR|t|jjddSNrMrrvrPrrTs rtestRecvFromNegativez!BasicUDPTest.testRecvFromNegative7
%*di&8"=====r=c`|jtdt|jfdSrrrTs r_testRecvFromNegativez"BasicUDPTest._testRecvFromNegative;
rr=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}||tdSrDrrs  rrz"BasicUDPLITETest.testSendtoAndRecvF
rr=c`|jtdt|jfdSrrrTs rrz#BasicUDPLITETest._testSendtoAndRecvK
rr=c|jtt\}}||tdSrDr	rs   rrzBasicUDPLITETest.testRecvFromN
r
r=c`|jtdt|jfdSrrrTs rrzBasicUDPLITETest._testRecvFromS
rr=cR|t|jjddSr
rrTs rrz%BasicUDPLITETest.testRecvFromNegativeV
rr=c`|jtdt|jfdSrrrTs rrz&BasicUDPLITETest._testRecvFromNegativeZ
rr=Nrrr_r=rrr?
sHHHH###
333###
333>>>33333r=rceZdZejZfdZdZdZdZ	dZ
dZdZdZ
d	D]Ze
eeedzZ
dZdZdZddZxZS)
SendrecvmsgBasecxtj|_tdSrD)rr
misc_eventrrVr s rrVzSendrecvmsgBase.setUp
s'#/++


r=c6|j|SrD)cli_sockrrs  rsendToServerzSendrecvmsgBase.sendToServer
s}!!#&&&r=r_cZ|jj||jt|dzSrD)r"rsendmsg_to_server_defaultsrrUr(s  rsendmsgToServerzSendrecvmsgBase.sendmsgToServer
s4
%t}$T4SYYZZ@@C	Cr=cL|j|g|R}|||SrD)r}registerRecvmsgResult)rUrCrur(results     r	doRecvmsgzSendrecvmsgBase.doRecvmsg
s6g----""6***
r=cdSrDr_rUr*s  rr)z%SendrecvmsgBase.registerRecvmsgResult
s		
r=c2|||dSrDrrUaddr1addr2s   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)
rUreorcheckset
checkunsetignore
defaultsetdefaultunsetinbothrHs
          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_timeoutrVr#r%r'r+r)r3r8rrrr7r9r:rCr"r#s@rrrx
s
+L'''"$CCC


''');;''&$":":: #$4848484848484848r=rceZdZdZdS)RecvmsgIntoMixinc*t|}|j|gg|R}||||dd||d|t|d|df|ddzSr)rrecvmsg_intor)assertGreaterEqualassertLessEqualr%)rUrCrur(bufr*s      rr+zRecvmsgIntoMixin.doRecvmsg
s  ""C504000""6***q	1---VAY000c*6!9*o&&(6!"":55r=N)r\r]r^r+r_r=rrGrG
s#66666r=rGc.eZdZefdZxZS)SendrecvmsgDgramFlagsBasecDtjtjzSrD)rr:r	MSG_TRUNCr s rr:z5SendrecvmsgDgramFlagsBase.msg_flags_non_eor_indicator
sww2V5EEEr=)r\r]r^propertyr:r"r#s@rrNrN
sMFFFFXFFFFFr=rNc.eZdZefdZxZS)SendrecvmsgSCTPFlagsBasecDtjtjzSrD)rr9rMSG_EORr s rr9z0SendrecvmsgSCTPFlagsBase.msg_flags_eor_indicatorsww.??r=)r\r]r^rQr9r"r#s@rrSrSsM@@@@X@@@@@r=rScVeZdZedZedZedZdZdS)SendrecvmsgConnectionlessBasec|jSrD)rPrTs r	serv_sockz'SendrecvmsgConnectionlessBase.serv_socks
yr=c|jSrD)rrTs rr"z&SendrecvmsgConnectionlessBase.cli_socks	xr=cggd|jfSr)rrTs rr%z8SendrecvmsgConnectionlessBase.sendmsg_to_server_defaultssB4>**r=cB|j||jSrD)r"rrrs  rr#z*SendrecvmsgConnectionlessBase.sendToServers}##C888r=N)r\r]r^rQrYr"r%r#r_r=rrWrWst
XX++X+99999r=rWc@eZdZedZedZdZdS)SendrecvmsgConnectedBasec|jSrD)rrTs rrYz"SendrecvmsgConnectedBase.serv_sock&s
}r=c|jSrD)rrTs rr"z!SendrecvmsgConnectedBase.cli_sock*s
~r=cdSrDr_r0s   rr3z,SendrecvmsgConnectedBase.checkRecvmsgAddress.		
r=N)r\r]r^rQrYr"r3r_r=rr^r^ sYXX




r=r^ceZdZfdZxZS)SendrecvmsgServerTimeoutBasect|j|jdSrD)rrVrYrrEr s rrVz"SendrecvmsgServerTimeoutBase.setUp7s3


!!$"344444r=)r\r]r^rVr"r#s@rrdrd4s8555555555r=rdceZdZdZdZdZdZdZdZdZ	dZ
d	Zd
ZdZ
dZd
ZdZeeddZejdZdZdZdZdZdS)SendmsgTestsc||jtttdSrDrrYrrrrTs rtestSendmsgzSendmsgTests.testSendmsg@4,,SXX66<<<<<r=c||tgttdSrDrr'rrrTs r_testSendmsgzSendmsgTests._testSendmsgDs4--se44c#hh?????r=c||jtttdSrDrirTs rtestSendmsgDataGeneratorz%SendmsgTests.testSendmsgDataGeneratorGrkr=c||dtfDttdS)Nc3K|]}|VdSrDr_rs  rrz9SendmsgTests._testSendmsgDataGenerator.<locals>.<genexpr>Ls".@.@Qq.@.@.@.@.@.@r=rmrTs r_testSendmsgDataGeneratorz&SendmsgTests._testSendmsgDataGeneratorKsN--.@.@3%.@.@.@AAS	#	#	#	#	#r=c||jtttdSrDrirTs rtestSendmsgAncillaryGeneratorz*SendmsgTests.testSendmsgAncillaryGeneratorOrkr=c||tgddDttdS)Nc3K|]}|VdSrDr_rs  rrz>SendmsgTests._testSendmsgAncillaryGenerator.<locals>.<genexpr>Ts__Aa______r=r_rmrTs r_testSendmsgAncillaryGeneratorz+SendmsgTests._testSendmsgAncillaryGeneratorSsK--se_____EES	#	#	#	#	#r=c||jtttdSrDrirTs rtestSendmsgArrayzSendmsgTests.testSendmsgArrayWrkr=c||tjdtgt	tdS)NB)rr'arrayrrrTs r_testSendmsgArrayzSendmsgTests._testSendmsgArray[sL--u{3/D/D.EFFS	#	#	#	#	#r=c||jtttdSrDrirTs rtestSendmsgGatherzSendmsgTests.testSendmsgGather_rkr=c||tddtddgttdSNrrmrTs r_testSendmsgGatherzSendmsgTests._testSendmsgGathercsG--s2A2wABB.@AA3s88LLLLLr=cb||jdddSNrOdonerrYrrTs 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#rTs 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||jdddSrrrTs rtestSendmsgBadCmsgzSendmsgTests.testSendmsgBadCmsg|rr=c	|t|jtgt	g|t|jtgt	ddfg|t|jtgdt	dfg|t|jtgddt	fg|t|jtgdg|t|jtgdg|ddS)Nrdata)rr)rrrrPrrrr'rrr#rTs 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||jdddSrrrTs rtestSendmsgBadMultiCmsgz$SendmsgTests.testSendmsgBadMultiCmsgs0	
,,T22G<<<<<r=c|t|jtggd|t|jtgdt	g|ddS)Nrrr=rrrTs r_testSendmsgBadMultiCmsgz%SendmsgTests._testSendmsgBadMultiCmsgsu)T%9%	.	.	.)T%9%+vxx!8	:	:	:'"""""r=cb||jdddSrrrTs rtestSendmsgExcessCmsgRejectz(SendmsgTests.testSendmsgExcessCmsgRejects0	
,,T22G<<<<<r=c8ttdso|t5}|t
gddgdddn#1swxYwY||jj|	ddS)Nrrr)
rrrrr'rassertIsNonerrr#rUrs  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"AcdSrDr_rTs rtestSendmsgAfterClosez"SendmsgTests.testSendmsgAfterClosesr=c|j|t|jt
gdSrD)r"r rrr'rrTs r_testSendmsgAfterClosez#SendmsgTests._testSendmsgAfterCloses9
'4#7#?????r=N)r\r]r^rjrnrprsrurxrzr~rrrrrrrrrrtrrrrrr_r=rrgrg<st===@@@===###===###===###===MMM===###$===
#
#
#\&,''==('=
(##)(#===
###


@@@@@r=rgc~eZdZdZdZdZdZeej	dvddZ
e
jdZd	S)
SendmsgStreamTestsc||jtttdSrDrirTs rtestSendmsgExplicitNoneAddrz.SendmsgStreamTests.testSendmsgExplicitNoneAddrrkr=c||tggddttdSrrmrTs r_testSendmsgExplicitNoneAddrz/SendmsgStreamTests._testSendmsgExplicitNoneAddrs:--seRDAA3s88LLLLLr=c||jdd||j|jdSNraaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaarGrrYrrr rrErTs 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'rrrrENOMEMr rrUrs  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|jdSrrrTs rtestSendmsgDontWaitz&SendmsgStreamTests.testSendmsgDontWaitsX
	
,,S118<<<,,T5F,GGHHHHHr=c	|t5}	|dggtj##1swxYwY||jjtjtj	tj
f|jdS#|jwxYw)NTr)
rrr'rMSG_DONTWAITrrrEAGAINEWOULDBLOCKrr 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^rrrrr}r5rgrrtrr_r=rrrs===MMMIII
""".cl)3 !!II!!I
$
"
"%$
"
"
"r=rceZdZdZdZdS)SendmsgConnectionlessTestscdSrDr_rTs rtestSendmsgNoDestAddrz0SendmsgConnectionlessTests.testSendmsgNoDestAddrrbr=c|t|jjtg|t|jjtggdddSr)rrr"rrrTs 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+rYrrrr3rrCrUrrrrs     rtestRecvmsgzRecvmsgGenericTests.testRecvmsgs$(NN4>3s88$L$L!WeTc"""  t}555"%%%4(((((r=c:|tdSrDr#rrTs 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:|tdSrDrrTs r_testRecvmsgExplicitDefaultsz0RecvmsgGenericTests._testRecvmsgExplicitDefaultsrr=c6||jttdz\}}}}||t|||j||g||ddS)NrPTrrrs     rtestRecvmsgShorterz&RecvmsgGenericTests.testRecvmsgShorters$(NN4>36s88b=%B%B!WeTc"""  t}555"%%%4(((((r=c:|tdSrDrrTs 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:|tdSrDrrTs r_testRecvmsgTruncz%RecvmsgGenericTests._testRecvmsgTrunc1rr=c2||jttd\}}}}||t|||j||g||ddS)NrTrrrs     rtestRecvmsgShortAncillaryBufz0RecvmsgGenericTests.testRecvmsgShortAncillaryBuf4s$(NN4>36s88Q%@%@!WeTc"""  t}555"%%%4(((((r=c:|tdSrDrrTs 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:|tdSrDrrTs r_testRecvmsgLongAncillaryBufz0RecvmsgGenericTests._testRecvmsgLongAncillaryBufIrr=c|j|t|j|jddSr)rYr rrr+rTs rtestRecvmsgAfterClosez)RecvmsgGenericTests.testRecvmsgAfterCloseLs:'4>4>4HHHHHr=cdSrDr_rTs r_testRecvmsgAfterClosez*RecvmsgGenericTests._testRecvmsgAfterCloseQrr=c	|jd|t|j|jtt|jdS#|jwxYw)Nr)	rYrrrr+rrr rrTs rtestRecvmsgTimeoutz&RecvmsgGenericTests.testRecvmsgTimeoutTs	"N%%d+++l"ndnc#hh
H
H
H
O!!!!!DO!!!!sAA00Bcl||j|jdSNr)rr rrErTs r_testRecvmsgTimeoutz'RecvmsgGenericTests._testRecvmsgTimeout]s0,,T5F,GGHHHHHr=ryc	||jttdz
dtj\}}}}||tdd|||j||g|	|dttdd||jttdtj\}}}}||t|||j||g|	|d||jtt\}}}}||t|||j||g|	|ddS)	NrrrFrPr<r?Tr)r+rYrrrryrr3rrCrrs     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:|tdSrDrrTs r_testRecvmsgPeekz$RecvmsgGenericTests._testRecvmsgPeeks#r=rcn|j|j||jt	t
\}}}}||t
|||j||g|	|ddSr)
rYrrEr+rrrr3rrCrs     rtestRecvmsgFromSendmsgz*RecvmsgGenericTests.testRecvmsgFromSendmsgs	
!!$"3444$(NN4>3s88$L$L!WeTc"""  t}555"%%%4(((((r=c||tddtddgttdSrrmrTs r_testRecvmsgFromSendmsgz+RecvmsgGenericTests._testRecvmsgFromSendmsgsG--s2A2wABB.@AA3s88LLLLLr=N)r\r]r^rrrrrrrrrrrrrrrrrrrrtrrrr_r=rrrs)))))))))***))))))III



"""III\&*%% ) )&% )D ! \&-++)),+)'MM('MMMr=rc&eZdZdZdZdZdZdS)RecvmsgGenericStreamTestsc||jd\}}}}||d|||j||g||ddS)Nrr=r)r+rYrr3rrCrs     rtestRecvmsgEOFz(RecvmsgGenericStreamTests.testRecvmsgEOFs$(NN4>4$H$H!WeTc"""  t}555"%%%4(((((r=c8|jdSrD)r"r rTs r_testRecvmsgEOFz)RecvmsgGenericStreamTests._testRecvmsgEOFs
r=c||jttdz
\}}}}|||j||g||d||jd\}}}}|||j||g||d||z}||tdS)NrFrrT)r+rYrrr3rrrC)rUrrrrrrs       rtestRecvmsgOverflowz-RecvmsgGenericStreamTests.testRecvmsgOverflows%)^^DN47HHqL&B&B"gud  t}555"%%%5)))%)^^DND%I%I"gud  t}555"%%%4(((Tkc"""""r=c:|tdSrDrrTs 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)NrMrrsTr)
rrrYr}rvrrrrrr3rrCrs     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:|tdSrDrrTs 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 writablerMTr)
rrrrrrYrIrrvrr3rrCrUrLnbytesrrrs      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:|tdSrDrrTs r_testRecvmsgIntoBadArgsz(RecvmsgIntoTests._testRecvmsgIntoBadArgsrr=cttt}|jd|fD\}}}}||tt||tt|||j||g||ddS)Nc3K|]}|VdSrDr_rs  rrz<RecvmsgIntoTests.testRecvmsgIntoGenerator.<locals>.<genexpr>s"1Qr=Tr)	rrrrYrIrr3rrCrs      rtestRecvmsgIntoGeneratorz)RecvmsgIntoTests.testRecvmsgIntoGeneratorsC!!'+~'B'B( ( $S***inn---  t}555"%%%4(((((r=c:|tdSrDrrTs r_testRecvmsgIntoGeneratorz*RecvmsgIntoTests._testRecvmsgIntoGenerator
rr=ctjddgttz}|j|g\}}}}||tt||t|||j||g|	|ddS)Nr|rTr)
r}rrrYrIrtobytesr3rrCrs      rtestRecvmsgIntoArrayz%RecvmsgIntoTests.testRecvmsgIntoArray
sk#sSXX~..'+~'B'BC5'I'I$S***,,,  t}555"%%%4(((((r=c:|tdSrDrrTs 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)	rrYrI
memoryviewrrr3rrC)rUb1b2b3r	rrrs        rtestRecvmsgIntoScatterz'RecvmsgIntoTests.testRecvmsgIntoScatter
s'
w


}
%
%
(
)
)'+~'B'B
B!$b)(+(+$%>!?!?@@@Yw//000Y}55666Y'899:::  t}555"%%%4(((((r=c0|ddS)Nr)r#rTs r_testRecvmsgIntoScatterz(RecvmsgIntoTests._testRecvmsgIntoScatter#
s344444r=N)r\r]r^r
rrrrrrr 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)NrrrKrrM)socklen_t_limitrr#listr3r%r}itemsizerrKrrDr5maxsize)rUtoobigrinr;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%rrKrrM)r&rrr'r3r%r}r(rJr#rKrrDr5r))rUr*rilastr+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^rQminrSr&rrrr,r/r_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|	|
||SrD)r3r9mkstemprpr<rBr writerencodeappend)rUr+fdsrKrkrDs      rnewFDszSCMRightsTest.newFDsj
sq		A'))HBOOBIt,,,OOBHb)))HRQ)))JJrNNNN
r=ct|D]m\}}tj|dtj|tj|dt
|ndS)Nrr)	enumerater<lseekSEEK_SETrrrr6)rUr8r+rks    rcheckFDszSCMRightsTest.checkFDsv
sts^^	A	AEArHRBK(((RWR..A

@@@@	A	Ar=c<||j|dSrD)rpcloseRecvmsgFDsr-s  rr)z#SCMRightsTest.registerRecvmsgResult}
s,f55555r=c	B|dD]\}}}|tjkr|tjkrotjd}||dt|t||jzz
|D]}tj|dS)NrrK)	rr
SCM_RIGHTSr}	frombytesrr(r<r )rUrecvmsg_result
cmsg_level	cmsg_type	cmsg_datar8rks       rr@zSCMRightsTest.closeRecvmsgFDs
s1?q0A	!	!,J	9f///!222k#&&

i)II#i..3<*GH)IJKKK!!BHRLLLL	!	!r=c
||tgtjtjt
jd||fgttdS)NrK)	rr'rrrrBr}r9r)rUr+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>r?rKr)rrr3rrCrr4rr'rKrr}tuplerrBr%
SIZEOF_INTrCr>)rUnumfdsr*maxcmsgsignoreflagsrrrrr8itemrErFrGs              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)NrrrRr+rYrrrTs rtestFDPassSimplezSCMRightsTest.testFDPassSimple
LQt~/23xx!@!@	A	A	A	A	Ar=c
*||tgtjtjt
jd|dfgttdS)NrKr)
rr'rrrrBr}r9rrrTs r_testFDPassSimplezSCMRightsTest._testFDPassSimple
s  ##+c4;;q>>22::<<>?
@
@

HH
					r=c	|d||jttddS)NrrrTrTs rtestMultipleFDPassz SCMRightsTest.testMultipleFDPass
rVr=c0|ddSNrrIrTs r_testMultipleFDPassz!SCMRightsTest._testMultipleFDPass
a     r=rc|d||jtttjdtzdSr\)rRr+rYrrrrrMrTs rtestFDPassCMSG_SPACEz"SCMRightsTest.testFDPassCMSG_SPACE
s^	

t~~dnc#hh$/J??AA	B	B	B	B	Br=c0|ddSr\r]rTs r_testFDPassCMSG_SPACEz#SCMRightsTest._testFDPassCMSG_SPACE
sa     r=c|d||jtttjdtzt
jdS)NrrrP)	rRr+rYrrrr#rMr4rTs rtestFDPassCMSG_LENz SCMRightsTest.testFDPassCMSG_LEN
scQ!^^DNCHH,2OA
N,K,KMM
*0):
		<	<	<	<	<r=c0|ddSrNr]rTs r_testFDPassCMSG_LENz!SCMRightsTest._testFDPassCMSG_LEN
r_r=rzskipping, see issue #12958zskipping, see issue #22397c	|d||jttdddS)Nrr)rOrTrTs rtestFDPassSeparatez SCMRightsTest.testFDPassSeparate
sK	
Q!^^DNCHHeLL&'		)	)	)	)	)r=cj|d\}}||tgtjtjtjd|gftjtjtjd|gfgttdSNrrK	r9rr'rrrrBr}rrUfd0fd1s   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)rOrP)
rRr+rYrrrrrMr#r4)rUnum_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|gfgttdSrlrmrns   r_testFDPassSeparateMinSpacez)SCMRightsTest._testFDPassSeparateMinSpacerrr=c	||g|}nM#t$r@}||jt||g}Yd}~nd}~wwxYw||t
|dSrD)r'rrrr$rr)rUrrr	rs     rsendAncillaryIfPossiblez%SCMRightsTest.sendAncillaryIfPossibles	1))3%99FF	1	1	1!!!'3///))3%00FFFFFF	1	
S*****s
A$6AA$zsee issue #24725c	|d||jttdt
jdS)Nrrre)rRr+rYrrrr4rTs rtestFDPassEmptyzSCMRightsTest.testFDPassEmptysT	
Qt~/23xx!@!@)/):		<	<	<	<	<r=cl|ttjtjdfgdSNr=)ryrrrrBrTs 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+rYrrrr3rrCrr4rKrrB
assertLessrMrUrrrrrErFrGs        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)NrKrM)ryrrrrBr}badfdrrTs r_testFDPassPartialIntz#SCMRightsTest._testFDPassPartialInt7se$$k#
|,,4466ss;=
>	?	?	?	?	?r=c	||jttd\}}}}||t|||j||dtj	|
t|dtjd}|D]\}}}||tj||tj
||dt|t||jzz
|
t|d||dS)NrTrrrK)r+rYrrrr3rrCrr4rKr}rrBrCr(r>)	rUrrrrr8rErFrGs	         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)NrrKrM)	r9ryrrrrBr}rrrns   r_testFDPassPartialIntInMiddlez+SCMRightsTest._testFDPassPartialIntInMiddleQs;;q>>S$$k#TZ01199;;CRC@Bk#u%%'
(	)	)	)	)	)r=c|\}}}}||t|||j||g||dt
j|dS)NTr<r=r?)rrr3rrCrr4)rUr*rPrrrrs       rcheckTruncatedHeaderz"SCMRightsTest.checkTruncatedHeader]s%+!WeTc"""  t}555"%%%4&2C*		,	,	,	,	,r=c|||jttt
jdSNrerr+rYrrrr4rTs rtestCmsgTruncNoBufSizez$SCMRightsTest.testCmsgTruncNoBufSizegsP	
!!$..S"J"J/5.?		"	A	A	A	A	Ar=c0|ddSrNr]rTs r_testCmsgTruncNoBufSizez%SCMRightsTest._testCmsgTruncNoBufSizepr_r=c|||jttdt
jdS)NrrerrTs rtestCmsgTrunc0zSCMRightsTest.testCmsgTrunc0ssN!!$..S1"M"M.4.?	"	A	A	A	A	Ar=c0|ddSrNr]rTs r_testCmsgTrunc0zSCMRightsTest._testCmsgTrunc0xr_r=c|||jttddSrN)rr+rYrrrTs rtestCmsgTrunc1zSCMRightsTest.testCmsgTrunc1~s4!!$..S1"M"MNNNNNr=c0|ddSrNr]rTs r_testCmsgTrunc1zSCMRightsTest._testCmsgTrunc1r_r=c|||jttt
dzdSr)rr+rYrrrMrTs rtestCmsgTrunc2IntzSCMRightsTest.testCmsgTrunc2IntsP	
!!$..S1;a#A#A	B	B	B	B	Br=c0|ddSrNr]rTs r_testCmsgTrunc2Intz SCMRightsTest._testCmsgTrunc2Intr_r=c	|||jtttjddz
dSr)rr+rYrrrr#rTs rtestCmsgTruncLen0Minus1z%SCMRightsTest.testCmsgTruncLen0Minus1sY!!$..S171C1Ca1G#I#I	J	J	J	J	Jr=c0|ddSrNr]rTs r_testCmsgTruncLen0Minus1z&SCMRightsTest._testCmsgTruncLen0Minus1r_r=cx||jtt|\}}}}||t|||j||dtj	|dkr|gkrdS|t|d|d\}}	}
||tj
||	tj|t|
||
t|
|tjd}||
dt|
t|
|jzz
||dS)NTr<r=rrrK)r+rYrrrr3rrCrr4rrBrJrKr}rCr(r>)rUancbufmaxdatamindatarrrrrErFrGr8s            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#rTs rtestCmsgTruncLen0zSCMRightsTest.testCmsgTruncLen0s+  (:(:A FFFFFr=c0|ddSrNr]rTs r_testCmsgTruncLen0z SCMRightsTest._testCmsgTruncLen0r_r=c^|tjddzddS)NrrrrrTs rtestCmsgTruncLen0Plus1z$SCMRightsTest.testCmsgTruncLen0Plus1s0  (:(:Q(> JJJJJr=c0|ddSrr]rTs r_testCmsgTruncLen0Plus1z%SCMRightsTest._testCmsgTruncLen0Plus1r_r=cl|tjttdS)Nrrrr#rMrTs rtestCmsgTruncLen1zSCMRightsTest.testCmsgTruncLen1s8  
(C(C)3	!	5	5	5	5	5r=c0|ddSrr]rTs r_testCmsgTruncLen1z SCMRightsTest._testCmsgTruncLen1r_r=c|tjdtzdz
dtzdz
dS)NrrrrrTs rtestCmsgTruncLen2Minus1z%SCMRightsTest.testCmsgTruncLen2Minus1sJ  J(G(G!(K*+j.A)=	!	?	?	?	?	?r=c0|ddSrr]rTs r_testCmsgTruncLen2Minus1z&SCMRightsTest._testCmsgTruncLen2Minus1r_r=N)rrr)9r\r]r^rr9r>r)r@rIrRrUrXrZr^rrrartrcrfrhrrr5rgrrjrqrurwryr{r~rrrrrrrrrrrrrrrrrrrrrrrrr_r=rr2r2b
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=r2c	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)7RFC3542AncillaryTestrrMcZi}|D]%\}}}|||f|||||f<&|SrD)r)rUrdrErFrGs      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)NrTrKrrK)rYrrrrr rr+rrrr3rrCr4rrLrr%rMr}rCrJrK)rU
ancbufsizemaxhoprPrrrrrErFrGrs            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)rrTs rtestRecvHopLimitz%RFC3542AncillaryTest.testRecvHopLimits!	
e,,,,,r=c||j|j|t
dSrrr rrEr#rrTs r_testRecvHopLimitz&RFC3542AncillaryTest._testRecvHopLimitsF
	
,,T5F,GGHHH#r=rc`|tjtdS)Nr)rrrrMrTs rtestRecvHopLimitCMSG_SPACEz/RFC3542AncillaryTest.testRecvHopLimitCMSG_SPACEs,	
f&7
&C&CDDDDDr=c||j|j|t
dSrrrTs r_testRecvHopLimitCMSG_SPACEz0RFC3542AncillaryTest._testRecvHopLimitCMSG_SPACED,,T5F,GGHHH#r=rc>|d|jdSNr)rr)r	hop_limitrTs rtestSetHopLimitz$RFC3542AncillaryTest.testSetHopLimits%
	
eDNCCCCCr=cR||j|j||tgtjtj	tj
d|jgfgttdSNrrK)
rr rrErr'rrrrr}rrrTs 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)NrTrKrrKrr#)rYrrrrrr rr+rrrr3rrCr4rrrMr}rCrJrKr)rUrrrPrrrrancmaptcdatarhldatas            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)rrTs rtestRecvTrafficClassAndHopLimitz4RFC3542AncillaryTest.testRecvTrafficClassAndHopLimitRs!	
))U);;;;;r=c||j|j|t
dSrrrTs r _testRecvTrafficClassAndHopLimitz5RFC3542AncillaryTest._testRecvTrafficClassAndHopLimitXrr=cf|tjtdzdSNrr)rrrrMrTs r)testRecvTrafficClassAndHopLimitCMSG_SPACEz>RFC3542AncillaryTest.testRecvTrafficClassAndHopLimitCMSG_SPACE]s>
	
))(44q8	*	:	:	:	:	:r=c||j|j|t
dSrrrTs r*_testRecvTrafficClassAndHopLimitCMSG_SPACEz?RFC3542AncillaryTest._testRecvTrafficClassAndHopLimitCMSG_SPACEerr=c>|d|jdSrrrrTs rtestSetTrafficClassAndHopLimitz3RFC3542AncillaryTest.testSetTrafficClassAndHopLimitjs7	
))U15	*	A	A	A	A	Ar=c||j|j||tgtjtj	tj
d|jgftjtjtj
d|j
gfgttdSr)rr rrErr'rrrrr}
traffic_classrrrrTs r_testSetTrafficClassAndHopLimitz4RFC3542AncillaryTest._testSetTrafficClassAndHopLimitss,,T5F,GGHHH  ##)#68J#(;sT5G4H#I#I#K#)#68L#(;sT^4D#E#E#G"H
I
I

HH
					r=c>|d|jdSrrrTs 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)NrrKr)rr rrEr'rrrrr}rrrrrrrr$rr)rUr	rs   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)rYrrrrr rr+rrrr3rrCr4)rUrrPr(rrrrs        rcheckHopLimitTruncatedHeaderz1RFC3542AncillaryTest.checkHopLimitTruncatedHeaders	
!!&"5"(":A	?	?	?'rrj]$2DN4>36s88%D>B%D%D%D!WeT	
c"""  t}555"%%%4&2C*		,	,	,	,	,r=cH|dtjdS)NrrPrrr4rTs rrz+RFC3542AncillaryTest.testCmsgTruncNoBufSizes:	
))T
7=6G	*	I	I	I	I	Ir=c||j|j|t
dSrrrTs rrz,RFC3542AncillaryTest._testCmsgTruncNoBufSizerr=cH|dtjdS)NrrrrTs rtestSingleCmsgTrunc0z)RFC3542AncillaryTest.testSingleCmsgTrunc0s8	
))Q6<6G	*	I	I	I	I	Ir=c||j|j|t
dSrrrTs r_testSingleCmsgTrunc0z*RFC3542AncillaryTest._testSingleCmsgTrunc0rr=c2|ddS)Nrr)rrTs rtestSingleCmsgTrunc1z)RFC3542AncillaryTest.testSingleCmsgTrunc1s))Q)77777r=c||j|j|t
dSrrrTs r_testSingleCmsgTrunc1z*RFC3542AncillaryTest._testSingleCmsgTrunc1rr=cB|dtzdSr)rrMrTs rtestSingleCmsgTrunc2Intz,RFC3542AncillaryTest.testSingleCmsgTrunc2Ints#))Q^)DDDDDr=c||j|j|t
dSrrrTs r_testSingleCmsgTrunc2Intz-RFC3542AncillaryTest._testSingleCmsgTrunc2Intrr=c\|tjddz
dS)Nrrr)rrr#rTs rtestSingleCmsgTruncLen0Minus1z2RFC3542AncillaryTest.testSingleCmsgTruncLen0Minus1s.))V_Q5G5G!5K)LLLLLr=c||j|j|t
dSrrrTs r_testSingleCmsgTruncLen0Minus1z3RFC3542AncillaryTest._testSingleCmsgTruncLen0Minus1rr=c|jtjtjd|j||jtttj
tdz
\}}}}||t|
||j||dtj|t|d|rv|d\}}}||tj||tj|t|tdSdS)NrTrr)rYrrrrr rr+rrr#rMrr3rrCr4rKrrrs        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
dSrrrTs r_testSingleCmsgTruncInDataz/RFC3542AncillaryTest._testSingleCmsgTruncInDatarr=c|jtjtjd|jtjtjd|j||jtt|\}}}}||t|||j
||dtj||t|d|d\}}}	||tj||tjtjh|t|	t&t)jd}
|
|	||
dd||
dddS)NrTrrrKr#)rYrrrrrr rr+rrrr3rrCr4rrrrMr}rCrJrK)rUrrPrrrrrErFrGrs           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)rrrrMr4rTs rtestSecondCmsgTrunc0z)RFC3542AncillaryTest.testSecondCmsgTrunc0'sC	
''(9*(E(E4:4E	(	G	G	G	G	Gr=c||j|j|t
dSrrrTs r_testSecondCmsgTrunc0z*RFC3542AncillaryTest._testSecondCmsgTrunc0-rr=cd|tjtdzdSrNrrrrMrTs rtestSecondCmsgTrunc1z)RFC3542AncillaryTest.testSecondCmsgTrunc12s.	
''(9*(E(E(IJJJJJr=c||j|j|t
dSrrrTs r_testSecondCmsgTrunc1z*RFC3542AncillaryTest._testSecondCmsgTrunc17rr=ct|tjtdtzzdSrrrTs rtestSecondCmsgTrunc2Intz,RFC3542AncillaryTest.testSecondCmsgTrunc2Int<s?	
''(9*(E(E()J)7	8	8	8	8	8r=c||j|j|t
dSrrrTs r_testSecondCmsgTrunc2Intz-RFC3542AncillaryTest._testSecondCmsgTrunc2IntBrr=c|tjttjdzdz
dSr)rrrrMr#rTs rtestSecondCmsgTruncLen0Minus1z2RFC3542AncillaryTest.testSecondCmsgTruncLen0Minus1GsR	
''(9*(E(E(.(:(:);=>)?	@	@	@	@	@r=c||j|j|t
dSrrrTs 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)NrTrrrKr#)rYrrrrrr rr+rrrrMr#rr3rrCr4rrpopremover}rCrJrKr)
rUrrrr
cmsg_typesrErFrGrs
          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
dSrrrTs r_testSecondCmsgTruncInDataz/RFC3542AncillaryTest._testSecondCmsgTruncInDatawrr=N)r#rr)1r\r]r^rrrrrrrrtrrrrrrrrrrrrrrrrrrrrrrrrrrr
rrrrrrrrrr"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*r}ceZdZdS)RecvmsgUDPTestNr'r_r=rr-r-r+r=r-rIceZdZdS)RecvmsgIntoUDPTestNr'r_r=rr/r/r+r=r/ceZdZdZdS)SendrecvmsgUDP6TestBasecR||dd|dddSr
r/r0s   rr3z+SendrecvmsgUDP6TestBase.checkRecvmsgAddress0	
ssU3B3Z00000r=Nr\r]r^r3r_r=rr1r1s#11111r=r1r@rgr'ceZdZdS)SendmsgUDP6TestNr'r_r=rr6r6	Dr=r6ceZdZdS)RecvmsgUDP6TestNr'r_r=rr9r9r7r=r9ceZdZdS)RecvmsgIntoUDP6TestNr'r_r=rr;r;r7r=r;rceZdZdS)RecvmsgRFC3542AncillaryUDP6TestNr'r_r=rr=r=	Dr=r=ceZdZdS)#RecvmsgIntoRFC3542AncillaryUDP6TestNr'r_r=rr@r@s	Dr=r@ceZdZdS)SendrecvmsgUDPLITETestBaseNr'r_r=rrBrBs
	Dr=rBceZdZdS)SendmsgUDPLITETestNr'r_r=rrDrDr7r=rDceZdZdS)RecvmsgUDPLITETestNr'r_r=rrFrFr7r=rFceZdZdS)RecvmsgIntoUDPLITETestNr'r_r=rrHrHr7r=rHceZdZdZdS)SendrecvmsgUDPLITE6TestBasecR||dd|dddSr
r/r0s   rr3z/SendrecvmsgUDPLITE6TestBase.checkRecvmsgAddressr3r=Nr4r_r=rrJrJs#11111r=rJceZdZdS)SendmsgUDPLITE6TestNr'r_r=rrMrMr>r=rMceZdZdS)RecvmsgUDPLITE6TestNr'r_r=rrOrOr>r=rOceZdZdS)RecvmsgIntoUDPLITE6TestNr'r_r=rrQrQr>r=rQceZdZdS)#RecvmsgRFC3542AncillaryUDPLITE6TestNr'r_r=rrSrSs	Dr=rSceZdZdS)'RecvmsgIntoRFC3542AncillaryUDPLITE6TestNr'r_r=rrUrUs	Dr=rUceZdZdS)SendrecvmsgTCPTestBaseNr'r_r=rrWrWr+r=rWceZdZdS)SendmsgTCPTestNr'r_r=rrYrYr+r=rYceZdZdS)RecvmsgTCPTestNr'r_r=rr[r[r(r=r[ceZdZdS)RecvmsgIntoTCPTestNr'r_r=rr]r]r(r=r]ceZdZdS)SendrecvmsgSCTPStreamTestBaseNr'r_r=rr_r_$r(r=r_z6IPPROTO_SCTP: [Errno 62] Protocol not supported on AIXrOr@r`ceZdZdS)SendmsgSCTPStreamTestNr'r_r=rrara)r7r=raceZdZfdZxZS)RecvmsgSCTPStreamTestc	tt|dS#t$r6}|jtjkr|dYd}~dSd}~wwxYwNz4sporadic ENOTCONN (kernel issue?) - see issue #13876)rrcrrrENOTCONNrsrUrr!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@rrcrc/ARRRRRRRRRr=rcceZdZfdZxZS)RecvmsgIntoSCTPStreamTestc	tt|dS#t$r6}|jtjkr|dYd}~dSd}~wwxYwre)rrlrrrrfrsrgs  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	Rrhrir#s@rrlrl=rjr=rlceZdZdS)SendrecvmsgUnixStreamTestBaseNr'r_r=rroroLr+r=rorHceZdZdS)SendmsgUnixStreamTestNr'r_r=rrqrqPr(r=rqceZdZdS)RecvmsgUnixStreamTestNr'r_r=rrsrsUr7r=rsceZdZdS)RecvmsgIntoUnixStreamTestNr'r_r=rruru[r7r=rurrBceZdZdS)RecvmsgSCMRightsStreamTestNr'r_r=rrwrwar(r=rwceZdZdS)RecvmsgIntoSCMRightsStreamTestNr'r_r=rryryfr7r=ryc`eZdZfdZejZeedr	dZ	dZ
xZSdZ	dZ
xZS)InterruptedTimeoutBasecttjtjd}|tjtj|dS)NcddzSrr_)signumr	s  rrpz.InterruptedTimeoutBase.setUp.<locals>.<lambda>zs
Ar=)rrVrrrp)rUorig_alrm_handlerr!s  rrVzInterruptedTimeoutBase.setUpwsS


"M&.*E*EGG
v~7HIIIIIr=	setitimerg?cDtjtj|dSrD)rrITIMER_REALrUsecondss  rsetAlarmzInterruptedTimeoutBase.setAlarmsV/99999r=rc.tj|dSrD)rrrs  rrzInterruptedTimeoutBase.setAlarmsL!!!!!r=)r\r]r^rVrrDrGrr
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|jdSrD)rrVrPrrGr s rrVz InterruptedRecvTimeoutTest.setUps2


	T\*****r=c	||j|t5}||i|dddn#1swxYwY|ddS#|dwxYwr)rrrrrUrFr(r)rs     rcheckInterruptedRecvz/InterruptedRecvTimeoutTest.checkInterruptedRecvs	MM$/***""#455
&d%f%%%
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
MM!DMM!s-4A-	AA-AA-AA--BcF||jjddSr)rrPrrTs rtestInterruptedRecvTimeoutz5InterruptedRecvTimeoutTest.testInterruptedRecvTimeouts"!!$).$77777r=c`||jjtddSr)rrP	recv_intorrTs rtestInterruptedRecvIntoTimeoutz9InterruptedRecvTimeoutTest.testInterruptedRecvIntoTimeouts)!!$)"5yGGGGGr=cF||jjddSr)rrPrrTs rtestInterruptedRecvfromTimeoutz9InterruptedRecvTimeoutTest.testInterruptedRecvfromTimeouts#!!$)"4d;;;;;r=c`||jjtddSr)rrPrrrTs r"testInterruptedRecvfromIntoTimeoutz=InterruptedRecvTimeoutTest.testInterruptedRecvfromIntoTimeouts)!!$)"99T??KKKKKr=r}cF||jjddSr)rrPr}rTs rtestInterruptedRecvmsgTimeoutz8InterruptedRecvTimeoutTest.testInterruptedRecvmsgTimeouts#!!$)"3T:::::r=rIcb||jjtdgdSr)rrPrIrrTs r!testInterruptedRecvmsgIntoTimeoutz<InterruptedRecvTimeoutTest.testInterruptedRecvmsgIntoTimeouts,!!$)"89T??:KLLLLLr=)r\r]r^rVrrrrrrrrrr"r#s@rrrs+++++888HHH<<<LLL\&-++;;,+;\&-00MM10MMMMMr=rceZdZfdZdZdZejdddZejdddZ	ejdde
ejdd	ZxZ
S)
InterruptedSendTimeoutTestct||_||jjt
j|j}|	|j
\|_}||jj|
|j|jdS)N)target)rrVrrrpr rThread	doConnectstartrPrrrrrG)rU
cli_threadrr!s   rrVz InterruptedSendTimeoutTest.setUps


)),---%T^<<<
"i..00
t
+,,,!!$,/////r=cD|j|jdSrD)rrrrTs 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;rsrcF||jjddSNr)rrrrTs rtestInterruptedSendTimeoutz5InterruptedSendTimeoutTest.testInterruptedSendTimeouts#!!$."5x@@@@@r=cR||jjd|jdSr)rrrrrTs rtestInterruptedSendtoTimeoutz7InterruptedSendTimeoutTest.testInterruptedSendtoTimeouts4	
!!$."7"&.	2	2	2	2	2r=rcH||jjdgdSr)rrrrTs rtestInterruptedSendmsgTimeoutz8InterruptedSendTimeoutTest.testInterruptedSendmsgTimeouts'	
!!$."88*EEEEEr=)r\r]r^rVrrrrequires_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=)rPrr rrrr)rUrrsdrr5rs       r	testClosezTCPCloserTest.testClosesY%%''
d

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



r=cz|jt|jft	jddSNr)rrrrRrrrTs r
_testClosezTCPCloserTest._testCloses0$	*+++
3r=N)r\r]r^rrr_r=rrrs2r=rc@eZdZddZdZdZdZdZdZdZ	d	Z
d
S)BasicSocketPairTestrc>t||dSr)rrrs  rrzBasicSocketPairTest.__init__
s!<<<<<r=c||tjttdr&||jtjn%||jtj||jtj||j	ddS)NrHr)
rrrrrrHrOrsr@rrRs  r_check_defaultsz#BasicSocketPairTest._check_defaultssdFM22269%%	:T[&.9999T[&.999F$6777Q'''''r=c:||jdSrD)rrrTs r
_testDefaultsz!BasicSocketPairTest._testDefaultssTX&&&&&r=c:||jdSrD)rrPrTs rtestDefaultsz BasicSocketPairTest.testDefaultssTY'''''r=cp|jd}||tdSr)rPrrrrs  rrzBasicSocketPairTest.testRecvrr=cD|jtdSrD)rrrrTs rrzBasicSocketPairTest._testRecv#s

cr=cD|jtdSrD)rPrrrTs 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)	rrPrugetblockingrF_GETFLr<
O_NONBLOCKbool)rUrCrGblockingfd_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)NTFrrrs)rPr_rrrTs rtestSetBlockingz#NonBlockingTCPTests.testSetBlockingEs	d###  D111	e$$$  C000	T"""  D111	Q  A...	R     B///	Q  A.....r=cdSrDr_rTs r_testSetBlockingz$NonBlockingTCPTests._testSetBlockingYrr=c<ddl}|j|jkr|d|jd||jd|j|jdz||jddS)Nrzneeds UINT_MAX < ULONG_MAXFrr)rQr	ULONG_MAXrsrPr_rrs  rtestSetBlocking_overflowz,NonBlockingTCPTests.testSetBlocking_overflow\s	!444MM6777	e$$$  C000	i014555  D11111r=r^ztest needs socket.SOCK_NONBLOCKrc|jtjtjtjtjz|_||jddSr)rPr rrOr@r^rrTs rtestInitNonBlockingz'NonBlockingTCPTests.testInitNonBlockingks[
	
	M&."("4v7K"KMM	  A.....r=cdSrDr_rTs r_testInitNonBlockingz(NonBlockingTCPTests._testInitNonBlockingurr=cDtd5|jd|j\}}||j||ddddS#1swxYwYdS)Nrs)rIrPrrrpr rrurs   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|jfdSrDrrrrRrTs r_testInheritFlagsBlockingz-NonBlockingTCPTests._testInheritFlagsBlocking%$	*+++++r=cJd}t|5|jd|j\}}||j|||ddddS#1swxYwYdS)Ng4@rs)rIrPrrrpr rru)rUdefault_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|jfdSrDrrTs 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.)rPr_r	monotonicrBlockingIOErrorrrrrrrLONG_TIMEOUTrrpr rru)rU
start_timerrdtrr5rs        r
testAcceptzNonBlockingTCPTests.testAcceptss	e$$$^%%




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



*C   
!=$)b"g>RSSeS9D  II?@@@Y%%''
d
###$//++,,,,,sA11A58A5c|j|jt|jfdSrD)rrrrrrRrTs 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.)rPrrpr r_rrrrrrrrrrrr)rUrrrrr5rs       rrzNonBlockingTCPTests.testRecvsKY%%''
d
###


/
/	&	&))CHH%%C	&	&	&	&	&	&	&	&	&	&	&	&	&	&	&	
!=$R9MNNeStIIHIIIiiC!!c"""""s&(BB!Bc|jt|jf|j|jtdSrD)rrrrRrrrrrTs 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=rceZdZdZdZdZdZdZdZe	Z
dZe	Zd"d	Z
d
ZdZdZd
ZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdZ dZ!dZ"dZ#d Z$d!Z%dS)#FileObjectClassTestCaseaoUnit tests for the object returned by socket.makefile()

    self.read_file is the io object returned by makefile() on
    the client connection.  You can read from this file to
    get output from the server.

    self.write_file is the io object returned by makefile() on the
    server connection.  You can write to this file to send output
    to the client.
    rMr	strictNrr&rc>t||dSrrrs  rrz FileObjectClassTestCase.__init__rr=cdtdD\|_|_|_|_t
||j|j	|j
|j|j|j
|_dS)Nc4g|]}tjSr_)rrrrKs  rrz1FileObjectClassTestCase.setUp.<locals>.<listcomp>s3G1G1G1"#IOG1G1G1r=rr*errorsnewline)r3evt1evt2
serv_finishedcli_finishedrrVrr	read_moderur*rr	read_filerTs rrVzFileObjectClassTestCase.setUpsG1G1',QxxG1G1G1C	49d0$2C!!$'''//NDL}[l	0$$r=c|j|j||jjd|_t|dSrD)rrr
r rclosedrrYrTs rrYz FileObjectClassTestCase.tearDownsc   -...$$T*****r=ct||j|j|j|j|j|j|_	dS)Nr)
rrrr
write_moderur*rr
write_filerTs rrz#FileObjectClassTestCase.clientSetUpsP''---.11OT\}[l	2$$r=c|j|j||jjd|_t|dSrD)rrrr rrrrrTs 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)rUctxs  rtestReadAfterTimeoutz,FileObjectClassTestCase.testReadAfterTimeouts	

  ###A,(;Q???


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

93s};M;MNNNNNs5BB #B c|j|jdd|j|jdS)Nrr)rr5	write_msgflushrrrTs r_testReadAfterTimeoutz-FileObjectClassTestCase._testReadAfterTimeoutsRdnQqS1222!!!!!r=c|jt|jdz
}|jd}||z}|||jdSr)r
rrread_msgr)rU	first_seg
second_segrs    r
testSmallReadz%FileObjectClassTestCase.testSmallReadscN''DM(:(:1(<==	^((++
*$dm,,,,,r=cv|j|j|jdSrDrr5rrrTs r_testSmallReadz&FileObjectClassTestCase._testSmallRead4dn---r=cn|j}|||jdSrD)r
rrrrs  rtestFullReadz$FileObjectClassTestCase.testFullRead#s3n!!##dm,,,,,r=cv|j|j|jdSrD)rr5rr rTs r
_testFullReadz%FileObjectClassTestCase._testFullRead(r r=ct|j}	|jd}|sn||z
}#|||jdSrN)rsrr
rr)rUrLchars   rtestUnbufferedReadz*FileObjectClassTestCase.testUnbufferedRead,sl!d4=!!##	>&&q))D
4KC		
	
dm,,,,,r=cv|j|j|jdSrDrrTs r_testUnbufferedReadz+FileObjectClassTestCase._testUnbufferedRead6r r=cn|j}|||jdSrD)r
readlinerrrUlines  rtestReadlinez$FileObjectClassTestCase.testReadline:s3~&&((t}-----r=cv|j|j|jdSrDrrTs r
_testReadlinez%FileObjectClassTestCase._testReadline?r r=c|j|j}|||jdSrD)rr r
rrrrs  rtestCloseAfterMakefilez.FileObjectClassTestCase.testCloseAfterMakefileCsG
n!!##dm,,,,,r=cv|j|j|jdSrDrrTs r_testCloseAfterMakefilez/FileObjectClassTestCase._testCloseAfterMakefileJr r=c"|j|jt	t
}t
|jtr|	}|
||jdSrD)r
r rrrrrrrrdecoderrs  rtestMakefileAfterMakefileClosez6FileObjectClassTestCase.testMakefileAfterMakefileCloseNspm  S**dmS))	**,,Cdm,,,,,r=cv|j|j|jdSrDrrTs r_testMakefileAfterMakefileClosez7FileObjectClassTestCase._testMakefileAfterMakefileCloseUr r=cF||jjdSrD)rr
rrTs rtestClosedAttrz&FileObjectClassTestCase.testClosedAttrYs"DN1122222r=cF||jjdSrD)rrrrTs r_testClosedAttrz'FileObjectClassTestCase._testClosedAttr\s"DO2233333r=c||jj|j||jj|jdSrD)rr
r(r	rrrrTs rtestAttributesz&FileObjectClassTestCase.testAttributes_sN,dn===,dm.B.B.D.DEEEEEr=c||jj|j||jj|jdSrD)rrr(rrrrrTs r_testAttributesz'FileObjectClassTestCase._testAttributescsN-t???-t~/D/D/F/FGGGGGr=c|j|t|jj|j|t|jjdSrD)r
r rrvrrrrrTs r
testRealClosez%FileObjectClassTestCase.testRealClosegsf*dn&;<<<
'4=#<=====r=cdSrDr_rTs r_testRealClosez&FileObjectClassTestCase._testRealClosemrr=r)&r\r]r^rtrur*rrr	rrrrrrVrYrrrrrrr"r$r'r)r.r0r2r4r7r9r;r=r?rArCrEr_r=rrrs		GH
FGIHJIBBBB$$$+++$$$111
O
O
O"""
---   ---
   ---   ...
   ---   ---   333444FFFHHH>>>




r=rcReZdZdZdZdZdZdZdZdZ	dZ
d	Zd
ZdZ
dZd
S)!UnbufferedFileObjectClassTestCaseaRepeat the tests from FileObjectClassTestCase with bufsize==0.

    In this case (and in this case only), it should be possible to
    create a file object, read a line from it, create another file
    object, read another line from it, without loss of data in the
    first file object's buffer.  Note that http.client relies on this
    when reading multiple requests from the same socket.rc"|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)NrIrJrrTs 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|jdSrDrrTs r_testMakefileClosez4UnbufferedFileObjectClassTestCase._testMakefileCloser r=ctj|j}|jtj|j}||dz
|dSrN)r5r3rr
r r)rUrefcount_beforerefcount_afters   rtestMakefileCloseSocketDestroyz@UnbufferedFileObjectClassTestCase.testMakefileCloseSocketDestroysY/$-88771,n=====r=cdSrDr_rTs 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)NFrsrrg?r=r)rr_rr
readintorrrrrrrrrr)rUrrLr+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@)	rrrr5rrrrrrTs r_testSmallReadNonBlockingz;UnbufferedFileObjectClassTestCase._testSmallReadNonBlockingsp	sdn---	

	
$$$$$r=c|jd|jr||jdSdS)Nr\)rrserv_skippedrsrTs rtestWriteNonBlockingz6UnbufferedFileObjectClassTestCase.testWriteNonBlockingsKs###	-MM$+,,,,,	-	-r=cfd|_|jddtjz}d}|j|}||dt|D]7}|j|}|dS||d8d|_dS)NFrrsrz$failed to saturate the socket buffer)	r_rr_rrrr5r%r3)rUBIGLIMITr+rKs     r_testWriteNonBlockingz7UnbufferedFileObjectClassTestCase._testWriteNonBlockings ""5)))W**O!!#&&1a   u
	G
	GA%%c**Ayq!$$$$
!GDr=N)r\r]r^rtrurKrMrOrQrUrWrZr]r`rdr_r=rrGrGqs<<G888   
===   >>>


777&%%%---GGGGGr=rGceZdZdZdS)#LineBufferedFileObjectClassTestCaserNr\r]r^rur_r=rrfrfGGGr=rfceZdZdZdS)$SmallBufferedFileObjectClassTestCaserNrgr_r=rrjrjrhr=rjcLeZdZdZdZedZdZeZ	dZ
dS)"UnicodeReadFileObjectClassTestCase=Tests for socket.makefile() in text mode (rather than binary)rr	r&rNr\r]r^rtr	rr6rrrrr_r=rrlrls9GGIzz'""HJIGGGr=rlcLeZdZdZdZeZdZedZ	dZ
dS)#UnicodeWriteFileObjectClassTestCasermrr%r	rN)r\r]r^rtr	rrrr6rrr_r=rrprps9GGIHJ

7##IGGGr=rpcreZdZdZdZedZdZedZ	dZ
dS)'UnicodeReadWriteFileObjectClassTestCasermrr	r%rNrnr_r=rrrrrsEGGIzz'""HJ

7##IGGGr=rrceZdZdZdZdS)NetworkConnectionTestzProve network connection.chtjt|jf|_|j|_dSrD)rcreate_connectionrrRrrrTs rrz!NetworkConnectionTest.clientSetUps*+T49,=>>r=N)r\r]r^rtrr_r=rrtrts)##"""""r=rtceZdZdZdS)
BasicTCPTest2zLTests that NetworkConnection does not break existing TCP functionality.
    N)r\r]r^rtr_r=rrxrxsr=rxceZdZGddejZejdZej	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=r~c#Ktj}|jt_	dV|t_dS#|t_wxYw)z*Return a socket which times out on connectN)rr~)rU
old_sockets  rmocked_socket_modulez.NetworkConnectionNoServer.mocked_socket_modulesD]

	'EEE&FMMMJFM&&&&s	3Actj}tjtjtj}||j|t5}|	t|fdddn#1swxYwY||jj
tjdSrD)rrrrOr@rpr rrrrrrrECONNREFUSED)rUrRrrs    rtest_connectz&NetworkConnectionNoServer.test_connect"s-//mFNF,>??	"""


w
'
'	&2KKt%%%	&	&	&	&	&	&	&	&	&	&	&	&	&	&	&+U-?@@@@@s1BB!Bc,tj}|t5}t	jt|fdddn#1swxYwYtj}||j	j
|dSrD)rrrrrrvrget_socket_conn_refused_errsrrr)rUrRrexpected_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)rrrrvrrExceptionGroupr
exceptionsrrr@rr)rUrRreg	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)rrrvrrrrrrr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=rrzrzs,,,,,V],,,'''(AA)(A(;;)(;0===$55555r=rzcheZdZdZd
dZdZdZdZeZdZ	eZ
dZeZd	Z
eZd
ZeZdZeZdZdS)NetworkConnectionAttributesTestNrcrt||t|dSrrrs  rrz(NetworkConnectionAttributesTest.__init__hrr=c6tj|_dSrD)rrsource_portrTs rrz+NetworkConnectionAttributesTest.clientSetUpls(9;;r=c|j|jd|_t|dSrDrrTs rrz.NetworkConnectionAttributesTest.clientTearDownos=8HNN%%d+++++r=cf|j\}}|dSrD)rPrr rs   r_justAcceptz+NetworkConnectionAttributesTest._justAcceptus*Y%%''
d

r=ctjt|jftj|_||jj|	|jj
ddS)Nrr)rrvrrRrrDrrpr rrrTs r_testFamilyz+NetworkConnectionAttributesTest._testFamilyzs`+T49,=$+$<>>>'''!,,,,,r=c&tjt|jftjd|jf|_||jj	|
|jd|jdS)Nr)rGsource_addressr)rrvrrRrrDrrrpr rrrTs r_testSourceAddressz2NetworkConnectionAttributesTest._testSourceAddresss+T49,=$+$<,.0@+ACCC	
'''--//2D4DEEEEEr=c|tjdutjd	tjt
|jf|_||jj	tjdn#tjdwxYw|
|jddS)NrPrrrErFrvrrRrrpr rrurTs r_testTimeoutDefaultz3NetworkConnectionAttributesTest._testTimeoutDefaults022d:;;; $$$	+/ty0ABBDHOODHN+++$T****F$T****,,..33333sABB-c|tjdutjd	tjt
|jfd|_||jj	tjdn#tjdwxYw|
|jddSNrrrTs r_testTimeoutNonez0NetworkConnectionAttributesTest._testTimeoutNones022d:;;; $$$	+/ty0A4PPPDHOODHN+++$T****F$T****,,..55555sABB/ctjt|jfd|_||jddSr)rrvrrRrrrurTs r_testTimeoutValueNamedz6NetworkConnectionAttributesTest._testTimeoutValueNamedsJ+T49,=rJJJ,,..33333r=ctjt|jfd|_||jj||jddS)Nr)	rrvrrRrrpr rrurTs 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=cdSrDr_rTs rrz*NetworkConnectionBehaviourTest.clientSetUprr=cz|jd|_t|dSrDrrTs rrz-NetworkConnectionBehaviourTest.clientTearDownrr=c|j\}}||jt	jd|ddS)Nrdone!)rPrrpr rrrrs   rtestInsideTimeoutz0NetworkConnectionBehaviourTest.testInsideTimeoutsRY%%''
d
###
1


		(r=ctjt|jfx|_}|d}||ddS)Nrr)rrvrrRrrr)rUrCrs   r_testInsideTimeoutz1NetworkConnectionBehaviourTest._testInsideTimeoutsK 2D$)3DEEE4yy||x(((((r=ctjt|jfdx|_|tfddS)Nrrc.dS)Nr)r)rCsrrpzDNetworkConnectionBehaviourTest._testOutsideTimeout.<locals>.<lambda>s		!r=)rrvrrRrrrrRs @r_testOutsideTimeoutz2NetworkConnectionBehaviourTest._testOutsideTimeoutsL 2D$)3DaPPPP4,(<(<(<(<=====r=Nr)
r\r]r^rrrrtestOutsideTimeoutrrr_r=rrrs{&&&&


,,,

+)))
>>>>>r=rcbeZdZdZdZejeedddZ	dS)TCPTimeoutTestcJfd}t|ddS)NcnjdjdSr)rPrrr(r)rUs  r
raise_timeoutz4TCPTimeoutTest.testTCPTimeout.<locals>.raise_timeouts3I  %%%Ir=z*Error generating a timeout exception (TCP)rrrUrs` 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)rPrrrrrrUokrs   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=rcrDr_)rr	rs  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)
rPrr;rrrrrrr5exc_info	traceback
format_exc)rUrr	rrs    @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)NcpjdjddSNrrrPrrrs  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 itrPrrrrrrs   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|tjtdSrD)r
issubclassrr;rrrrGassertIserrorrrTs rtestExceptionTreez TestExceptions.testExceptionTree8s
7I66777
6='::;;;
6?G<<===
6>7;;<<<

flG,,,

fnl33333r=ctjtjtjd}tjtjtjd|}|||j|t5|	dddddS#1swxYwYdS)NrF)
rrOr@rr rprerrr_)rUsock0rCs   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)
rrHr@rqrSrrrrr)rUrs1rs3s     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_MAXrrHr@rqrrrUrr#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)rrrHr@rrrqr	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)rrHr@rqrrr rs  rtestStrNamez&TestLinuxAbstractNamespace.testStrNamehsrM&.&*<==	
FF+,,,Q]]__.GHHH
GGIIIIIAGGIIIIs=A>>Bctjtjtj5}|t	d||dddddS#1swxYwYdS)Nr	)rrHr@rqrrrrs  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)rrHr@rqassertRegexrr)rUabstract_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^rrr	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|_dSrD)rrHr@rCrTs rrVzTestUnixDomain.setUpsM&.&2DEE			r=c8|jdSrD)rCr rTs rrYzTestUnixDomain.tearDowns	r=c	tj|S#t$r>|d|tjYdSwxYw)NzBPathname {0!a} cannot be represented in file system encoding {1!r})r<fsencoderrsrr5getfilesystemencodingrUrDs  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)rrArrrsr)rUrCrDrs    rrqzTestUnixDomain.binds	*466666			1vv000

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

di++--z:::::r=c(tjtj}||j||tj||	|j
|dSrD)r<rDabspathrTESTFNrqrCrprBrrr	s  rtestStrAddrzTestUnixDomain.testStrAddrsowy/00		$)T"""	($///..00$77777r=cNtjtj}||j|||tj	||
|j|dSrD)r<rDr	rr	rqrCr	rprBrrr	s  r
testBytesAddrzTestUnixDomain.testBytesAddrs{wy/00		$)T\\$//000	($///..00$77777r=cztjtj}||}||j|dd|	tj
|||j|dS)Nasciisurrogateescape)
r<rDr	rTESTFN_UNICODEr	rqrCr6rprBrr)rUrDrs   rtestSurrogateescapeBindz&TestUnixDomain.testSurrogateescapeBindswy788LL		$)QXXg/@AABBB	($///..00$77777r=cjtj|dtjtj}||j||tj	||
|j|dS)Nz!No unencodable filename available)rTESTFN_UNENCODABLErsr<rDr	rqrCrprBrrr	s  rtestUnencodableAddrz"TestUnixDomain.testUnencodableAddrs'/MM=>>>wy;<<		$)T"""	($///..00$77777r=r^rcR|t|jjddS)Nr)rrrCrqrTs rtestEmptyAddresszTestUnixDomain.testEmptyAddresss&	
'49>266666r=N)r\r]r^rVrYr	rqrr	r	r$	r'	rrr5rgr)	r_r=rr	r	sFFF	8	8	8


;;;888888888888X_S\W,.CDD77ED777r=r	cpeZdZdZddZdZdZdZeZdZ	eZ
dZd	Zd
Z
eZdZeZdZd
ZdZeZdS)BufferIOTestzF
    Test the buffer versions of socket.recv() and socket.send().
    rc>t||dSrrrs  rrzBufferIOTest.__init__rr=cvtjddgttz}|j|}||tt|}|dtt}||tdSNr|r)r}rrrrrrrUrLr	rs    rtestRecvIntoArrayzBufferIOTest.testRecvIntoArraysk#sSXX~..((--S***kkmm)3s88)nc"""""r=cbtt}|j|dSrDr%rrrrUrLs  r_testRecvIntoArrayzBufferIOTest._testRecvIntoArray)CjjC     r=ctd}|j|}||t	t
|dt	t
}||t
dSr)rrrrrrr/	s    rtestRecvIntoBytearrayz"BufferIOTest.testRecvIntoBytearraysmoo((--S***)3s88)nc"""""r=c0td}|jt|}||tt|dtt}||tdSr)rrrrrrrr/	s    rtestRecvIntoMemoryviewz#BufferIOTest.testRecvIntoMemoryviewssoo((C99S***)3s88)nc"""""r=c|tjddgttz}|j|\}}||tt|}|dtt}||tdSr.	)r}rrrrrrrUrLr	rrs     rtestRecvFromIntoArrayz"BufferIOTest.testRecvFromIntoArraysk#sSXX~..}22377S***kkmm)3s88)nc"""""r=cbtt}|j|dSrDr2	r3	s  r_testRecvFromIntoArrayz#BufferIOTest._testRecvFromIntoArrayr5	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)Nrlr)rrrvrrr3	s  rtestRecvFromIntoSmallBufferz(BufferIOTest.testRecvFromIntoSmallBuffers2ll*dm&A3MMMMMr=cD|jtdSrDrrTs r_testRecvFromIntoSmallBufferz)BufferIOTest._testRecvFromIntoSmallBufferrr=ct}|j||j|ddSr)rrrr3	s  rtestRecvFromIntoEmptyBufferz(BufferIOTest.testRecvFromIntoEmptyBuffers?kk
##C(((
##C+++++r=Nr)r\r]r^rtrr0	r4	r7	_testRecvIntoBytearrayr9	_testRecvIntoMemoryviewr<	r>	r@	_testRecvFromIntoBytearrayrB	_testRecvFromIntoMemoryviewrD	rF	rH	_testRecvFromIntoEmptyBufferr_r=rr+	r+	sBBBB###!!!###0###1###!!!###"8####9NNN
!!!,,,
$:   r=r+	icttdsdS	tdd}n#ttt
f$rYdSwxYw|5|D]%}|drddddS&	dddn#1swxYwYdS)	zCheck if the TIPC module is loaded

    The TIPC module is not loaded automatically on Ubuntu and probably
    other Linux distros.
    AF_TIPCFz
/proc/modulesr	r)ztipc NT)rrrFileNotFoundErrorIsADirectoryErrorrrh)rr-s  risTipcAvailablerT	's69%%u73330/Buu
		Dw''

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

3!!!T**
X**H555c"""""r=N)r\r]r^r`	r_r=rrV	rV	;s######r=rV	c.eZdZddZdZdZdZdZdS)	TIPCThreadableTestrc|tj||t|dSrrrs  rrzTIPCThreadableTest.__init__Vs8""4j"AAA%%%%%r=cVtjtjtj|_||jj|jtjtjdtj	tttf}|j
||j||j\|_|_||jjdSrN)rrQ	r@r<rpr rrrrX	rY	rZ	r[	rqrSrrrr)rUr]	s  rrVzTIPCThreadableTest.setUpZs=1CDD'''F-v/BAFFF+ZJ(

g  """#'8??#4#4 	4=	(((((r=ctjdtjtjtj|_||jjtjtttttz
dzzdf}|j
||j|_dS)Nrrr)rrrrQ	r@rrpr r\	rY	rZ	r$r[	rrcliaddr)rUrs  rrzTIPCThreadableTest.clientSetUpfs	
3=1CDD'''%zS*z"9Q!>???Dx++--r=c|jd}||t||j|jdSr)rrrrrf	rrs  rrzTIPCThreadableTest.testStreamrsKinnT""c"""t}55555r=cv|jt|jdSrDrrTs rrzTIPCThreadableTest._testStreamwrr=Nrrr_r=rrb	rb	Ssd&&&&
)
)
)
.
.
.666
r=rb	c,eZdZdZdZdZdZdZdS)ContextManagersTestcBtj5}||jdddn#1swxYwY||jtj5}|dddn#1swxYwY||jtj5}|t|jddddn#1swxYwY||jdSNr)rrrrr rrrrRs  r_testSocketClassz$ContextManagersTest._testSocketClass~s
]__	+T\***	+	+	+	+	+	+	+	+	+	+	+	+	+	+	+%%%
]__	JJLLL															%%%
]__	=gt|V<<<	=	=	=	=	=	=	=	=	=	=	=	=	=	=	=%%%%%s1;??3BBB"C::C>C>c|j\}}||j|d}||dSrrPrrpr rrrUrrrs    rtestCreateConnectionBasez,ContextManagersTest.testCreateConnectionBaseTY%%''
d
###yyTr=ct|j}tj|5}||j|d||dddddn#1swxYwY|	|jdS)Nrr)
rPrrrvrrrrrrrUrrCs   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}||dSrro	rp	s    rtestCreateConnectionClosez-ContextManagersTest.testCreateConnectionCloserr	r=c.|j}tj|5}|dddn#1swxYwY||j|t|j	ddSrl	)
rPrrrvr rrrrrrt	s   r_testCreateConnectionClosez.ContextManagersTest._testCreateConnectionCloses)''))

%g
.
.	$JJLLL															%%%'4<88888sAAAN)r\r]r^rm	rq	ru	rw	ry	r_r=rrj	rj	|s_&&&&&&99999r=rj	ceZdZejeeddejddddZ	dZ
dZd	Zej
ed
uddZej
ed
udd
ZdZd
S)InheritanceTestrzSOCK_CLOEXEC not definedrrrc<tjtjtjtjz5}||jtj||ddddS#1swxYwYdSrD)rrOr@rrrsrget_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}	rRs  rtest_default_inheritablez(InheritanceTest.test_default_inheritables}
	<	<T1133U;;;	<	<	<	<	<	<	<	<	<	<	<	<	<	<	<	<	<	<s)AAAc6tj}|5|}||5||ddddn#1swxYwYddddS#1swxYwYdSr)rrr rr}	)rUrCnewsocks   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}	rRs  rtest_set_inheritablez$InheritanceTest.test_set_inheritables}
	<	<  &&&T1133T:::  '''T1133U;;;	<	<	<	<	<	<	<	<	<	<	<	<	<	<	<	<	<	<sA;BB"%B"Nrctj}|5|}||dt	j|tj}|tjz}t	j|tj|||dddddS#1swxYwYdS)NFT)rrrr}	rF_GETFD
FD_CLOEXECF_SETFD)rUrCrkrs    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	)rUrCrks   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)rrrpr rr}	)rUrrs   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)rrsrr@rurrrr<rrr)rUr#nonblockrGs    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)	rrOr@r^r	r_rrErF)rUr#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|}|\}}||||dSrD)rr	fromsharerrr )rqsdatamessager#rrs       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	rrPsharepidrr rrrvrr7rr)	rUr	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)NrMr)rPr	r<getpidrrvrr	)rUrs  rtestShareLengthz!TestSocketSharing.testShareLength_scyry{{++*f&6SbS	BBB*f&6VDDDDDr=c||d|||||j|j||j|j|jdkr"||j|jdSdSr)rrurrsr)rUorgothers   rcompareSocketsz TestSocketSharing.compareSocketsds	
))4000))5+;+;+=+=>>>U\2225:...9>>SY44444>r=c|jtj}t	j|}	||j||dS#|wxYwrD)rPr	r<r	rr	r	r )rUrr#s   rtestShareLocalz TestSocketSharing.testShareLocaltskyry{{++T""		1---
GGIIIIIAGGIIIIsA22Bc$tjtjg}tjtjg}|D]}|D]}	tj||}n#t
$rY%wxYw	|tj}tj	|}	|
|||n#|wxYw	|#|wxYwdSrD)rrOrgr@r'rr	r<r	r	r	r )rUfamiliestypesrr	rrshareds        r	testTypeszTestSocketSharing.testTypes|sNFO4#V%67	#	#A

#

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

#	#	#s5A
AA!:C6C2C6CC66DN)
r\r]r^r2r	r	r	r	r	r	r_r=rr	r	)s~
[!!!FEEE
555 #####r=r	ceZdZdZdZdZdZejZ	e
dZe
dZdZ
dZd	Zd
ZdZdZd
ZdZdZdZdZdZdZdZdZdZdZdZdZdZ dZ!dZ"dZ#dZ$dZ%d S)!SendfileUsingSendTestz>
    Test the send() implementation of socket.sendfile().
    ir|r=cd}ddt|jD}ttjd5}||j|jD]}||	dddn#1swxYwYttjd5}||_	ddddS#1swxYwYdS)Nc3DK||kr|V||z}||k|r|VdSdSrDr_)totalsteps  rchunksz0SendfileUsingSendTest.setUpClass.<locals>.chunkssM$,,



$,,


r=r=cng|]2}tjtj3Sr_)randomchoicestring
ascii_lettersr6rs  rrz4SendfileUsingSendTest.setUpClass.<locals>.<listcomp>sA777!-(<==DDFF777r=r&r)
rr3BUFSIZErrr	FILESIZEr5rFILEDATA)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$/BBB0CCCcBtjtjdSrD)rrBr	)rs r
tearDownClassz#SendfileUsingSendTest.tearDownClasss)*****r=c|jtj|j\}}||j||j|SrD)rPrrrrTIMEOUTrpr rs   raccept_connz!SendfileUsingSendTest.accept_conns_	W1222Y%%''
d%%%
###r=cg}	||j}|sn||3d|S)NTr=)rr	r7r)rUrr	r	s    r	recv_datazSendfileUsingSendTest.recv_datasU	#IIdl++E
OOE"""		#
xx!!!r=c"t|dS)N_sendfile_use_sendrrRs  rmeth_from_sockz$SendfileUsingSendTest.meth_from_sockst1222r=c|j}ttjd}tj|5}|5}||}||}|||j	||
|j	dddn#1swxYwYddddS#1swxYwYdS)NrrPrrrr	rrvr	rr	tellrUrfilerCmethsents      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|||jdSrDr	r	rrr	r	rUrrs   rtestRegularFilez%SendfileUsingSendTest.testRegularFile`!!~~d##TDM222t}-----r=c|j}tj|j}tj|5}|5}||}|||j	||
|j	|t
j|j
|dddn#1swxYwYddddS#1swxYwYdSrD)rPrioBytesIOr	rrvrorr	r	rryrz)rUrr	rCr	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|||jdSrDr	r	s   rtestNonRegularFilez(SendfileUsingSendTest.testNonRegularFiler	r=cP|j}tjdz}t	|d5|tj|dddn#1swxYwYt	|d}tj|5}|5}|	|}||}|
|d|
|ddddn#1swxYwYddddS#1swxYwYdS)N2r&rr)rPrrr	rrprBrrvr	rr	)rUrfilenamer	rCr	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rPrrrr	rrvrrDr	rr	rUrr	rCrr	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	rUrrrs    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|dSrNr	r	s    rtestCountSmallz$SendfileUsingSendTest.testCountSmall0sl!!~~d##TE***t}VeV455555r=c|j}ttjd}tj|d5}|5}d}||}||d|}|||||	|dzdddn#1swxYwYddddS#1swxYwYdS)Nrrr駆)r	r)
rPrrrr	rrvr	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)rPrrrr	rrvr_r	rrvrorUrr	rCr	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	rrrUrs  rtestNonBlockingz%SendfileUsingSendTest.testNonBlockingUsH!!99T??	>II<=====	>	>r=c|j}ttjd}tj|tj}|5|5|	|}||}|
||jdddn#1swxYwYddddS#1swxYwYdS)Nrr)rPrrrr	rrvrrDr	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|||jdSrDr	r	s   rtestWithTimeoutz%SendfileUsingSendTest.testWithTimeoutfr	r=c|j}ttjd5}tj|5}|d||}|	t||dddn#1swxYwYddddS#1swxYwYdS)Nrg{Gz?)rPrrrr	rrvrr	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=cdSrDr_rTs 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)
Nrrr@r	r)zbinary modezpositive integerr	r	rrrM)	rrr	rr'r	r0rvr)rUr	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^rtr	r	r	rrDr	r2r	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	roz%os.sendfile() required for this test.ceZdZdZdZdS)SendfileUsingSendfileTestzB
    Test the sendfile() implementation of socket.sendfile().
    c"t|dS)Nrzr	rRs  rr	z(SendfileUsingSendfileTest.meth_from_sockst5666r=N)r\r]r^rtr	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)	rr5r0rqrR	r rSkipTestr)rUtyprrCrs     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)rUralgooprs     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)rUkeyrrr-
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#
rrr2
r3
r
sendmsg_afalgALG_OP_ENCRYPTr,
rrrALG_OP_DECRYPT)
rUr4
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;
rN
r)r%r+
rr#
rrr2
r3
ALG_SET_AEAD_AUTHSIZErr<
r=
r,
rrrrStructrr
ALG_SET_OP
ALG_SET_IVALG_SET_AEAD_ASSOCLENr>
)rUr4
r;
plainassocexpected_ctexpected_tagtaglenrN
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<urandomrrr2
r3
rrrr)rUr-

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.
rN
rM)rr5r0rrr<
r=
rRs  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)rs?nnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnz
name too long)rs@nnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnn)
rr5r0rpr rrR	rqr0rvrRs  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#
rrr/
r5
rE
r[
rb
rd
rj
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|tjdSrD)rr
TCP_KEEPALIVErTs rtest_tcp_keepalivez$TestMacOSTCPFlags.test_tcp_keepalivems,-----r=N)r\r]r^ro
r_r=rrl
rl
ks#.....r=rl
winzrequires WindowsceZdZhdZdZdS)TestMSWindowsTCPFlags>
TCP_MAXSEGTCP_KEEPCNTTCP_NODELAYTCP_FASTOPENTCP_KEEPIDLE
TCP_KEEPINTVLcdttD}fd|D}g|ddS)Nc<g|]}|d|S)TCP)rh)rr#s  rrz<TestMSWindowsTCPFlags.test_new_tcp_flags.<locals>.<listcomp>s)BBB!all5.A.ABABBBr=c&g|]
}|jv|Sr_)
knownTCPFlags)rr#rUs  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)r?rr)rUprovidedunknowns`  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=rrr
rr
qs9MQQQQQr=rr
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_serverrrrrgrUrRrCs   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
rrrOrsr@rrrg)rUrCr#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)
rrrrvr
rrr
rr)rUrCrs   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
rgrRs  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
rgrrrRs  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)rrrGrr)rCrrrrrUs    rrunz3CreateServerFunctionalTest.echo_server.<locals>.runsa
&
&++--a&&JJt|,,,))D//C	&&&&&&
&
&
&
&
&
&
&
&LL%%%&&&&&&&&&&&&&&&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&s@B"3B
B")B
>B"
B	B"B	B""B&)B&r	)	rrrrGrrrprr)rUrCr
rrs`   @recho_serverz&CreateServerFunctionalTest.echo_servers	&	&	&	&	&	&!!%%%!D8<<<T\222
		r=c<tj|5}||j|||d||ddddddS#1swxYwYdS)Nrrr)rrrGrrrr)rUrrrCs    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
rOr
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
rgr
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
rgr
r
rOr
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^rrDrGr
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|.dSrDr<r )pipesrpfd2s   rclose_pipesz8SendRecvFdsTests.testSendAndRecvFds.<locals>.close_pipess;!

S








r=c8|D]}tj|dSrDr
)r8rks  r	close_fdsz6SendRecvFdsTests.testSendAndRecvFds.<locals>.close_fdss*



r=c4g|]}tjSr_)r<pipe)rrs  rrz7SendRecvFdsTests.testSendAndRecvFds.<locals>.<listcomp>
s...q...r=rscg|]\}}|Sr_r_)rrfdwfds   rrz7SendRecvFdsTests.testSendAndRecvFds.<locals>.<listcomp>s)))xsCs)))r=rrr)r3rprrrHr@r
rr
rrr;r<r5rr6r)rUr
r
r
r8sock1sock2rfds2rrr)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|RdSrD)rthreading_setupraddModuleCleanupthreading_cleanup)thread_infos rsetUpModuler
%s3"244K.@O;OOOOOOr=__main__)rtestrtest.supportrrrrr	rrrr9rrrr5r<rgr}rweakrefrrrr4rr	rr	_threadrrr	rrrequires_working_socketrr6rrsystemrrrr$r)r-r1r6r9r<rBrrIHAVE_SOCKET_CANHAVE_SOCKET_CAN_ISOTPHAVE_SOCKET_CAN_J1939HAVE_SOCKET_RDSHAVE_SOCKET_ALGHAVE_SOCKET_QIPCRTRHAVE_SOCKET_VSOCKrHAVE_SOCKET_UDPLITEHAVE_SOCKET_BLUETOOTHr(rMrrMrarerhr{rrrrrrrrrrrrrr%r1r7rFrLrTrXr[r^rbrerir}rrrrrr4rDrcrlrrrrrrrrGrNrSrWr^rdrgrrrrrrr"r2rr&r*r-r/r1rr6r9r;r=r@rBrDrFrHrJrMrOrQrSrUrWrYr[r]r_rarcrlrorqrsrurwryr{rrrrrrrGrfrjrlrprrrrtrxrzrrrrrrrr	r+	rY	rZ	r[	rT	rV	rb	rj	r{	r	rr	r	r
r
rl
rhrr
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