python (3.12.0)

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

ΑeB%ddlZddlmZddlmZddlmZddlmZddlZddl	Z	ddl
Z
ddlZddlZddl
Z
ddlZddlZddlZddlZddlZddlZddlZddlZddlZddlZddlZddlZddlZddlZddlZddlZddlZddlZddl m!Z!	ddl"Z"	ddl$Z$ejJd	ejLZ&d
jOdZ(dZ)ejTd
k(Z+	ddl,Z,dZ-dZ.dZ/dZ0dZ1dZ2dZ3dZ4dZ5dZ6e
jndZ8e.Z9e/Z:e0Z;e1Z<e2Z=e3Z>e4Z?e@edZAe5ZBe6ZCe	jdjZEGddejZGGddejZHGdd eHZIGd!d"ZJGd#d$ejZKGd%d&ejZLGd'd(ZMGd)d*eGeMZNGd+d,eHeMZOejeAd-Gd.d/eIeMZQGd0d1eKeMZRGd2d3eLeMZSeje$dud4eje?d5eje-d6k7d7Gd8d9ejeMZUGd:d;eNZVGd<d=ejeMZWGd>d?ejZXGd@dAeXZYGdBdCeJeXeMZZGdDdEeYeZZ[GdFdGeXZ\GdHdIe\Z]GdJdKeXZ^GdLdMe^Z_GdNdOe^Z`GdPdQe^ZaGdRdSe^ZbGdTdUe^ZcGdVdWecZdGdXdYecZedZZfd[Zgd\ZhGd]d^ejZieje9d_Gd`daejZjeje9d_GdbdceRZkeje:ddGdedfejZleje;dgGdhdiejZmeje<djGdkdlejZneje<djGdmdneSZoeje>doGdpdqejZpeje$dud4eje?d5GdrdsejZqejeBdtGdudvejZrejeCdwGdxdyejZsGdzd{eVZtGd|d}eOZuejeAd-Gd~deQZvGddeJZwGddewZxGddewZyGddewZzGddewZ{GddewZ|GddewZ}Gdde}Z~Gdde~ZGdde~ZGddewZGddeZGddeZGddexeZGddejZGdde}ZGdde}ZGddeye{eZe`Zegej0dGddeeZegej0dGddeeZegej0dGddeeZGddeye{eZedZegej0dejejdehddGddeeZegej0dejejdehddGddeeZegej0dejejdehddGddeeZegej0dejejdegedehddGddeeZegej0dejejdegedehddGddexeeZejeAd-Gddeye{eZeaZejeAd-egej0dGddeeZejeAd-egej0dGddeeZejeAd-egej0dGdÄdeeZejeAd-Gdńdeye{eZeeZegej0dejejdejeAd-ehddGdDŽdeeZegej0dejejdejeAd-ehddGdɄdeeZegej0dejejdejeAd-ehddGd˄deeZegej0dejejdejeAd-egedehddGd̈́deeZegej0dejejdejeAd-egedehddGdτdexeeZGdфde|e[e_Zegej0dGdӄdeeZegej0dGdՄdeeeZegej0dGdׄdeeeZGdلdeze|e[ebZegej0deje+d۫ehdddޫGd߄deeZegej0deje+d۫ehdddޫGddeeeZegej0deje+d۫ehdddޫGddeeeZGdde|e[e]Zegej0degedGddeeZegej0degedGddeeeZegej0degedGddeeeZegej0ddegedddGddeeZegej0ddegedddGddexeeZGddZegedeje@edxs	e@eddGddee`Zegedeje@edxs	e@eddGddeeJeYe_ZGddeNZGddeWZGddeNZGddeVZGddeZGdd	eZGd
deZGdd
eZGddeZGddeZGddeZGddeetZGddejZGddeGeMZGddeGeMZGddeGZGddeHZejeAd-Gd d!eIZGd"d#ejZejej$d$k(d%Gd&d'ejZeje@edd(Gd)d*ejZGd+d,eVZĐd-ZŐd.ZƐd/Zǐd0Zejeȫd1Gd2d3ejZejeȫd1Gd4d5ejeMZGd6d7eNZGd8d9ejZeje@ed:d;Gd<d=ejZejejd>k(d?eje"d@GdAdBeGZGdCdDeNZeje@edEdFGdGdHeЫZeje=dIGdJdKejZejej$dLk(dMGdNdOejZejej$jdPdQGdRdSejZGdTdUejZGdVdWejZegedXegedYegedGdZd[ejZؐd\Zeڐd]k(rejyy#e#$rdZ"YwxYw#e#$rdZ$YwxYw#e#$rdZ,YwxYw(^N)support)	os_helper)
socket_helper)threading_helper)proxyFT)moduleuMichael Gilfix was hereሴ
utf-8AIXctyttdsy	tdd5}tj|tj
d}dddt
jddS#1swY"xYw#t$rYywxYw)NIOCTL_VM_SOCKETS_GET_LOCAL_CIDz
/dev/vsockrbz    Ir)	fcntlhasattrsocketopenioctlr
structunpackOSError)frs  D/BuggyBox/python/3.12.0/bootstrap/lib/python3.12/test/test_socket.pyget_cidr7s}6;<(
,
%	NAvDDfMA	N
}}S!$Q''	N	Ns(A9&A-A9-A62A99	BBc	tjtjtjtj}|j	y#t
tf$rYywxYw)z5Check whether CAN sockets are supported on this host.FT)rPF_CANSOCK_RAWCAN_RAWcloseAttributeErrorrss r_have_socket_canr$DsLMM&--&..I	
		
G$AAA&%A&c	tjtjtjtj}|j	y#t
tf$rYywxYw)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)NPMM&--):):F<L<LM	
		
G$r%c	tjtjtjtj}|j	y#t
tf$rYywxYw)z;Check whether CAN J1939 sockets are supported on this host.FT)rrr'	CAN_J1939r r!rr"s r_have_socket_can_j1939r-Xr*r%c	tjtjtjd}|jy#tt
f$rYywxYw)z5Check whether RDS sockets are supported on this host.rFT)rPF_RDSSOCK_SEQPACKETr r!rr"s r_have_socket_rdsr1bJMM&--)>)>B	
		
G$3AAAc	tjtjtjd}|jy#tt
f$rYywxYw)z8Check whether AF_ALG sockets are supported on this host.rFT)rAF_ALGr0r r!rr"s r_have_socket_algr6lr2r3c	tjtjtjd}|jy#tt
f$rYywxYw)z<Check whether AF_QIPCRTR sockets are supported on this host.rFT)r
AF_QIPCRTRr'r r!rr"s r_have_socket_qipcrtrr9vsLMM&++V->->B	
		
G$r3ctdu}|S)z:Check whether AF_VSOCK sockets are supported on this host.N)r)rets r_have_socket_vsockr<s
)4
CJc	tjtjtjtj}|j	y#t
tf$rYywxYw)z>Check whether AF_BLUETOOTH sockets are supported on this host.FT)rAF_BLUETOOTHSOCK_STREAMBTPROTO_RFCOMMr r!rr"s r_have_socket_bluetoothrBsT
MM&--v/A/A6CXCXY	
		
G$r%c	tjtjtjtj}|j	y#t
tf$rYywxYw)z;Check whether AF_HYPERV sockets are supported on this host.FT)r	AF_HYPERVr@HV_PROTOCOL_RAWr r!rr"s r_have_socket_hypervrFsRMM&**F,>,>@V@VW	
		
G$r%c#Ktj}	tj|dtj|y#tj|wxYwwN)rgetdefaulttimeoutsetdefaulttimeout)timeoutold_timeouts  rsocket_setdefaulttimeoutrMsF**,K.  )
  -  -sA!AA!AA!IPPROTO_UDPLITEiceZdZdZdZy)
SocketTCPTestctjtjtj|_t	j
|j|_|jjyrH)rAF_INETr@servr	bind_portportlistenselfs rsetUpzSocketTCPTest.setUpsDMM&..&2D2DE	!++DII6			r=cF|jjd|_yrHrTr rXs rtearDownzSocketTCPTest.tearDown			r=N__name__
__module____qualname__rZr]r=rrQrQs
r=rQceZdZdZdZy)
SocketUDPTestctjtjtj|_t	j
|j|_yrH)rrSr'rTrrUrVrXs rrZzSocketUDPTest.setUps4MM&..&2C2CD	!++DII6	r=cF|jjd|_yrHr\rXs rr]zSocketUDPTest.tearDownr^r=Nr_rcr=rreres7r=receZdZdZy)SocketUDPLITETestctjtjtjtj|_tj|j|_yrH)rrSr'rNrTrrUrVrXs rrZzSocketUDPLITETest.setUps<MM&..&2C2CVE[E[\	!++DII6	r=N)r`rarbrZrcr=rriris7r=ric6eZdZdZfdZfdZfdZxZS)ThreadSafeCleanupTestCasezSubclass of unittest.TestCase with thread-safe cleanup methods.

    This subclass protects the addCleanup() and doCleanups() methods
    with a recursive lock.
    cVt||i|tj|_yrH)super__init__	threadingRLock
_cleanup_lockrYargskwargs	__class__s   rroz"ThreadSafeCleanupTestCase.__init__s$
$)&)&__.r=cf|j5t||i|cdddS#1swYyxYwrH)rrrn
addCleanuprss   rrxz$ThreadSafeCleanupTestCase.addCleanup3


	77%t6v6	7	7	7'0cf|j5t||i|cdddS#1swYyxYwrH)rrrn
doCleanupsrss   rr|z$ThreadSafeCleanupTestCase.doCleanupsryrz)r`rarb__doc__rorxr|
__classcell__rvs@rrlrls/777r=rlceZdZdZdZdZ	dZejeZ		dZ
e
deje
dzzz
Z
dZy	)

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@3I4l2Ixctjtjtjtj|_|j|jj	|jj|jfy#t$r!|jd|jzYywxYwN%network interface `%s` does not exist)rrrrr#rxr bind	interfacerskipTestrXs rrZzSocketCANTest.setUps|v}}foov~~N%	+FFKK)*	+MMA>>*
+	+s-&B'B>=B>N)r`rarbr}rbufsize
can_frame_fmtrcalcsizecan_frame_sizebcm_cmd_msg_fmtrZrcr=rrrs_IGM$V__]3N  Osofooo>BCCO+r=rceZdZdZdZdZy)
SocketRDSTestz\To be able to run this test, the `rds` kernel module must be loaded:
    # modprobe rds
     cHtjtjtjd|_|j	|jj
	t
j|j|_y#t$r|jdYywxYw)Nrzunable to bind RDS socket)rr/r0rTrxr rrUrVrrrXs rrZzSocketRDSTest.setUp'skMM&--1F1FJ			(	7%//		:DI	7MM56	7s$BB! B!N)r`rarbr}rrZrcr=rrr sG7r=rc4eZdZdZdZdZdZdZdZdZ	y)	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().
    cH|j|_|j|_yrH)rZ_ThreadableTest__setUp_setUprXs rrozThreadableTest.__init__Vszz[[
r=c8|jjy)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_readysetrXs rserverExplicitReadyz"ThreadableTest.serverExplicitReady[s
	
r=c:jtjtj_tj_tj_tjd_d_
fd}j|j}|jd}||dzd}td|z}tj j"|f_	j'	j
j)jj+jjj*y#d_
xYw#j
j)wxYw)NFcnjjrjjyrH)queueqsizegetrXsrraise_queued_exceptionz5ThreadableTest._setUp.<locals>.raise_queued_exceptionks)zz!jjnn&&"r=._T)enterContextrwait_threads_exitrpEventrclient_readydonerQueueserver_crashedrxidrfindgetattrthreadstart_new_thread	clientRun
client_threadrrwait)rYr
methodnamerOtest_methods`    rrzThreadableTest._setUpbs;*<<>?%OO-%OO-OO%	[[^
#	'	
./WWY
S!!%
dC*$45#44NN[N,	$LLN

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

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


r=N)
r`rarbr}rorrrrrrcr=rrr0s(#J!
 (@",Fr=rc eZdZddZdZdZy)ThreadedTCPSocketTestc\tj||tj|yN)
methodNamerQrorrYrs  rrozThreadedTCPSocketTest.__init__#t
;%r=crtjtjtj|_yrH)rrSr@clirXs rrz!ThreadedTCPSocketTest.clientSetUps==1C1CDr=cp|jjd|_tj|yrHrr rrrXs rrz$ThreadedTCPSocketTest.clientTearDown%%%d+r=NrunTestr`rarbrorrrcr=rrrs&E,r=rc eZdZddZdZdZy)ThreadedUDPSocketTestc\tj||tj|yr)rerorrs  rrozThreadedUDPSocketTest.__init__rr=crtjtjtj|_yrH)rrSr'rrXs rrz!ThreadedUDPSocketTest.clientSetUps==1B1BCr=cp|jjd|_tj|yrHrrXs rrz$ThreadedUDPSocketTest.clientTearDownrr=Nrrrcr=rrrs&D,r=rz'UDPLITE sockets required for this test.c eZdZddZdZdZy)ThreadedUDPLITESocketTestc\tj||tj|yr)rirorrs  rroz"ThreadedUDPLITESocketTest.__init__s#""4J"?%r=ctjtjtjtj|_yrH)rrSr'rNrrXs rrz%ThreadedUDPLITESocketTest.clientSetUps&==1B1BFDZDZ[r=cp|jjd|_tj|yrHrrXs rrz(ThreadedUDPLITESocketTest.clientTearDownrr=Nrrrcr=rrrs&\,r=rc eZdZddZdZdZy)ThreadedCANSocketTestc\tj||tj|yr)rrorrs  rrozThreadedCANSocketTest.__init__rr=ctjtjtjtj|_	|jj|jfy#t$rYywxYwrH)rrrrrrrrrXs rrz!ThreadedCANSocketTest.clientSetUpsR==P	HHMM4>>+,	
	s&A//	A;:A;cp|jjd|_tj|yrHrrXs rrz$ThreadedCANSocketTest.clientTearDownrr=Nrrrcr=rrrs&,r=rc eZdZddZdZdZy)ThreadedRDSSocketTestc\tj||tj|yr)rrorrs  rrozThreadedRDSSocketTest.__init__rr=ctjtjtjd|_	|jj	t
df|jj
|_y#t$rYywxYwNr)	rr/r0rrHOSTgetsocknamecli_addrrrXs rrz!ThreadedRDSSocketTest.clientSetUpsa==0E0EqI	HHMM4)$ HH002DM	
	sAA;;	BBcp|jjd|_tj|yrHrrXs rrz$ThreadedRDSSocketTest.clientTearDownrr=Nrrrcr=rrrs&	,r=r
need fcntlz%VSOCK sockets required for this test.z-This test can only be run on a virtual guest.c,eZdZddZdZdZdZdZy)ThreadedVSOCKSocketStreamTestcptjj||tj|yrunittestTestCaserorrs  rroz&ThreadedVSOCKSocketStreamTest.__init__)""4J"?%r=ctjtjtj|_|j	|jj
|jj
tjtf|jj|j|jj\|_|_
|j	|jj
yrH)rAF_VSOCKr@rTrxr rVMADDR_CID_ANY	VSOCKPORTrWracceptconnconnaddrrXs rrZz#ThreadedVSOCKSocketStreamTest.setUpsMM&//63E3EF			(		--y9:		  "#'99#3#3#5 	4=		(r=c<tjdtjtjtj|_|j
|j
jt}|j
j|tfy)N皙?)timesleeprrr@rrxr rconnectr)rYcids  rrz)ThreadedVSOCKSocketStreamTest.clientSetUp	s[

3==&2D2DE'i#y)*r=cf|jjd}|j|tyN)rrecvassertEqualMSGrYmsgs  r
testStreamz(ThreadedVSOCKSocketStreamTest.testStream$iinnT"c"r=cv|jjt|jjyrHrsendrr rXs r_testStreamz)ThreadedVSOCKSocketStreamTest._testStream 

cr=Nrr`rarbrorZrrrrcr=rrrs&)+#r=rc0eZdZdZddZdZdZdZdZy)	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.
    c2tj||yr)rrors  rrozSocketConnectedTest.__init__&&t
&Cr=ctj||j|jj	\}}||_yrH)rrZrrTrcli_connrYraddrs   rrZzSocketConnectedTest.setUp"s;##D)	
  "YY%%'
d
r=cp|jjd|_tj|yrH)rr rr]rXs rr]zSocketConnectedTest.tearDown*s'


&&t,r=ctj||jjt|j
f|j|_yrH)rrrrrrV	serv_connrXs rrzSocketConnectedTest.clientSetUp/s6))$/$		*+r=cp|jjd|_tj|yrH)rr rrrXs rrz"SocketConnectedTest.clientTearDown4s',,T2r=Nr)	r`rarbr}rorZr]rrrcr=rrrs!D-
"
3r=rc,eZdZddZdZdZdZdZy)SocketPairTestcptjj||tj|yrrrs  rrozSocketPairTest.__init__;rr=cFtj\|_|_yrH)r
socketpairrTrrXs rrZzSocketPairTest.setUp?s$//1	48r=cF|jjd|_yrHr\rXs rr]zSocketPairTest.tearDownBr^r=cyrHrcrXs rrzSocketPairTest.clientSetUpFr=cp|jjd|_tj|yrHrrXs rrzSocketPairTest.clientTearDownIrr=Nr)r`rarbrorZr]rrrcr=rr r 9s&2
,r=r c"eZdZdZdZdZdZy)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|j|_|j|j|j	yrH)	newSocketrTrxclose_server
bindServerrXs rrZzSocketTestBase.setUp^s,NN$	))*r=cF|jjd|_yrHr\rXs rr,zSocketTestBase.close_servercr^r=cx|j|j|jj|_y)z9Bind server socket and set self.serv_addr to its address.N)bindSockrTr	serv_addrrXs rr-zSocketTestBase.bindServergs&

dii ..0r=N)r`rarbr}rZr,r-rcr=rr)r)Us
1r=r)c"eZdZdZfdZxZS)SocketListeningTestMixinz%Mixin to listen on the server socket.cVt||jjyrH)rnrZrTrWrYrvs rrZzSocketListeningTestMixin.setUpps

		r=)r`rarbr}rZr~rs@rr3r3ms/r=r3c: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.
    cNt||i|tj|yrH)rnrorrss   rroz ThreadedSocketTestMixin.__init__}s#
$)&)%r=cN|j|_|jyrH)newClientSocketr
bindClientrXs rrz#ThreadedSocketTestMixin.clientSetUps'')r=c"|jS)z&Return a new socket for use as client.)r+rXs rr:z'ThreadedSocketTestMixin.newClientSockets~~r=cx|j|j|jj|_y)z8Bind client socket and set self.cli_addr to its address.N)r0rrrrXs rr;z"ThreadedSocketTestMixin.bindClients&

dhh,,.
r=cp|jjd|_tj|yrHrrXs rrz&ThreadedSocketTestMixin.clientTearDownrr=)
r`rarbr}rorr:r;rr~rs@rr7r7us!& /
,r=r7c@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|jj	\}}||_yrH)rnrZrrTrr)rYrrrvs   rrZzConnectedStreamTestMixin.setUps7

	
  "YY%%'
d
r=cd|jjd|_t|
yrH)rr rnr]r5s rr]z!ConnectedStreamTestMixin.tearDowns%



r=ct||jj|j|j|_yrH)rnrrrr1rr5s rrz$ConnectedStreamTestMixin.clientSetUps/
(r=c	|jjd|_t|y#t$rYwxYwrH)rr r!rnrr5s rrz'ConnectedStreamTestMixin.clientTearDowns@	NN  "!DN	 		s!3	??)	r`rarbr}rZr]rrr~rs@rr@r@s!
"
!!r=r@ceZdZdZdZy)UnixSocketTestBasez(Base class for Unix-domain socket tests.ctj}|jtj|tj
||yrH)rcreate_unix_domain_namerxrunlinkbind_unix_socket)rYsockpaths   rr0zUnixSocketTestBase.bindSocks4446	(($/&&tT2r=N)r`rarbr}r0rcr=rrFrFs
23r=rFceZdZdZdZy)UnixStreamBasez-Base class for Unix-domain SOCK_STREAM tests.cftjtjtjSrH)rAF_UNIXr@rXs rr+zUnixStreamBase.newSocket}}V^^V-?-?@@r=Nr`rarbr}r+rcr=rrNrNs7Ar=rNc,eZdZdZeZfdZdZxZS)InetTestBasez!Base class for IPv4 socket tests.cJt||jd|_yNr)rnrZr1rVr5s rrZzInetTestBase.setUps

NN1%	r=cFtj||jy)Nhost)rrUrYrYrKs  rr0zInetTestBase.bindSocks4995r=)	r`rarbr}rrYrZr0r~rs@rrTrTs+D&6r=rTceZdZdZdZy)TCPTestBasez#Base class for TCP-over-IPv4 tests.cftjtjtjSrH)rrSr@rXs rr+zTCPTestBase.newSocketrQr=NrRrcr=rr\r\-Ar=r\ceZdZdZdZy)UDPTestBasez#Base class for UDP-over-IPv4 tests.cftjtjtjSrH)rrSr'rXs rr+zUDPTestBase.newSockets}}V^^V->->??r=NrRrcr=rr`r`s-@r=r`ceZdZdZdZy)UDPLITETestBasez'Base class for UDPLITE-over-IPv4 tests.ctjtjtjtjSrH)rrSr'rNrXs rr+zUDPLITETestBase.newSockets%}}V^^V->->@V@VWWr=NrRrcr=rrcrcs1Xr=rcceZdZdZdZy)SCTPStreamBasez;Base class for SCTP tests in one-to-one (SOCK_STREAM) mode.ctjtjtjtjSrH)rrSr@IPPROTO_SCTPrXs rr+zSCTPStreamBase.newSockets*}}V^^V-?-?#002	2r=NrRrcr=rrfrfs
E2r=rfc(eZdZdZej
Zy)
Inet6TestBasez!Base class for IPv6 socket tests.N)r`rarbr}rHOSTv6rYrcr=rrjrjs+Dr=rjceZdZdZdZy)UDP6TestBasez#Base class for UDP-over-IPv6 tests.cftjtjtjSrH)rAF_INET6r'rXs rr+zUDP6TestBase.newSockets}}V__f.?.?@@r=NrRrcr=rrmrmr^r=rmceZdZdZdZy)UDPLITE6TestBasez'Base class for UDPLITE-over-IPv6 tests.ctjtjtjtjSrH)rror'rNrXs rr+zUDPLITE6TestBase.newSockets%}}V__f.?.?AWAWXXr=NrRrcr=rrqrqs1Yr=rqc*dfd}d}|r|S|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.
    cyrHrc)rtrus  rclient_passz%skipWithClientIf.<locals>.client_passr&r=crtj|}t|ts
fd|_|S)NcSrHrc)rrus r<lambda>z3skipWithClientIf.<locals>.skipdec.<locals>.<lambda>s;r=)rskip
isinstancetypeclient_skip)objretvalrureasons  rskipdecz!skipWithClientIf.<locals>.skipdecs/&v&s+#t$!6F
r=cNt|tst|dsd|_|S)Nr|c|SrHrc)rs rrxz5skipWithClientIf.<locals>.noskipdec.<locals>.<lambda>sr=)rzr{rr|)r}s r	noskipdecz#skipWithClientIf.<locals>.noskipdecs!3%m)D)CO
r=rc)	conditionrrrrus `  @rskipWithClientIfrs!

 7.Y.r=c|Dcgc]}t||r|}}t|ddjd|DzScc}w)zSkip decorated test if obj is missing any of the given attributes.

    Sets client_skip attribute as skipWithClientIf() does.
    don't have , c3 K|]}|ywrHrc.0names  r	<genexpr>zrequireAttrs.<locals>.<genexpr>$s*DD4*D)rrjoin)r}
attributesrmissings    rrequireAttrsrsN
!+E'#t2DtEGE*DG*D!DDFFFs
AAc	d}|Dcgc]$}t|trtt|s|&}}|rddj	d|Dz}nR|Dcgc]$}t|trtt|n|&}}	tj|}|j
t|dudjdj	d|D|Scc}wcc}w#t$r}t|}Yd}~Wd}~wwxYw)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.
    Nrrc3 K|]}|ywrHrcrs  rrz requireSocket.<locals>.<genexpr>2s'A'Arzcan't create socket({0}): {1}c32K|]}t|ywrH)strros  rrz requireSocket.<locals>.<genexpr>@s+c!f+s)
rzrrrrrr rrformat)rterrr}rcallargsr#rs       r
requireSocketr'sC"Bs#s#GFC,@BGBdii'A'AAA $%-7sC,@GFC(cI%%	

x(A

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

gnn56

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


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

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


wC)O

<	M		


wC/,A

B	 --	 	 


wC2C,C

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


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


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


y
)	#R
HHVT"	#

nS%67


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


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


y
)	&R
HHVQ%	&

nc",,&78


y
)	.R
HHVUH-	.


y
)	)R
HHVT4(	)

y
)	R
HHV	

k3r||#45


y
)	-R
HHVQ!,	-

k3r||#45C	)	)	#	#	#	#	,	,	&	&	&	&	.	.	)	)			-	-sxM>N.NN%N2/N?O6O'O&;O2>NNN"%N/2N<?O	OO#&O/2O;cDtjtjrtjtjtj
tjtjtjtjtjyrH)rrShas_ipv6ror@r'rSOCK_RDMr0
SOL_SOCKETSO_REUSEADDRrXs rtestCrucialConstantsz'GeneralModuleTests.testCrucialConstantssR??OOr=ctjtjtjrtjyyrH)rIPPROTO_TCPIPPROTO_UDPrIPPROTO_IPV6rXs rtestCrucialIpProtoConstantsz.GeneralModuleTests.testCrucialIpProtoConstantss)??r=ntWindows specificctjtjtjtjtj
tjtjtjyrH)	rIPPROTO_ICLFXBM
IPPROTO_STIPPROTO_CBTIPPROTO_IGPIPPROTO_RDPIPPROTO_PGMIPPROTO_L2TPrhrXs rtestWindowsSpecificConstantsz/GeneralModuleTests.testWindowsSpecificConstantssJr=zWASI is missing these methodsczgd}|D]2}ttj|r|jd|d4y)N)_acceptrr
connect_exgetpeernamerrWrecvfrom
recvfrom_intor
setsockoptshutdownzsocket method z is missing)rrr)rYnamesrs   rtest_socket_methodsz&GeneralModuleTests.test_socket_methodss=

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

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


q
 )"3"3A"56
7
i''(
)	
	ALLOLLO		ALLOLLO		>AmV\\1=mV\\1=	>	>AmV\\1=mV\\1=	>r=cB|j}tjjdstjdvrd}nd}|D]}	t	j
|d}ntttdrtjdk\rt	j
|}|||	t	j
|d}|||tjs|t	j||t	j|d|||t	j|d||jttjd	|jttjd
y#t$rYGwxYw#t$rd}YwxYw)N)freebsdnetbsdgnukfreebsd)linuxr)daytimeqotddomain)echorjrltcpgetandroidapileveludprXr[)rr@platform
startswithr
getservbynamerrror
is_android
getservbyportrrO)rYeqservicesservicerVport2udpports       r
testGetServByz GeneralModuleTests.testGetServBysr



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

	G	s$	F.F	F
F
FFc|jtjdtj5}|j|jddddt	d5|jtjdtj5}|j|jddddtj
d|jtjdtj5}|j|jddddddd|j
ttj
d|j
ttj
dy#1swY@xYw#1swYxYw#1swYuxYw#1swYyxYw)N
rXspam)	rrrI
gettimeoutrMrJr
ValueErrorr)rYr#rKs   rtestDefaultTimeoutz%GeneralModuleTests.testDefaultTimeoutsV	
113T:
]]_	3Q\\^T2	3&b
)		:V557<
8D  !2B7
8
$$T*V557>
:D  !2D9
:		:	
*f&>&>C	
)V%=%=vF'	3	3
8
8
:
:		:		:sH!F-9F=&!F%AF=!F1=F=F"%F.	*F=1F:	6F==G	inet_atonztest needs socket.inet_aton()c|jdtjd|jdtjdy)N0.0.0.0r )rrrrXs rtestIPv4_inet_aton_fourbytesz/GeneralModuleTests.testIPv4_inet_aton_fourbytess;
	
F$4$4Y$?@F$4$45F$GHr=	inet_ptonztest needs socket.inet_pton()cddlm}mmfd}fd}j	d|dj	d|dj	d	|d
j	d|dj	d
|dt
s	||d||d||d||d||dj	d|dj	d|dj	d	|d
j	d
|d||d||d||d||d||dy)Nr)rrrSc|SrHrc)arSrs rrxz5GeneralModuleTests.testIPv4toString.<locals>.<lambda>i+r=c>jttf||SrHrrrrQrrYs  rrxz5GeneralModuleTests.testIPv4toString.<locals>.<lambda>t'8'8
j!4(
r=rrsz255.0.255.0sz170.170.170.1701.2.3.4rr z0.0.0.z	300.0.0.0za.0.0.0z	1.2.3.4.5::1)rrrrSrr)rYrg
assertInvalidrSrs`   @@rtestIPv4toStringz#GeneralModuleTests.testIPv4toStringsG	>=+

	
,a	l;,a
.>?,a0A.BC,a	l;,a0A.BC!X&a%a#a%a,a	l;,a
.>?,a0A.BC,a0A.BCa"a%a#a%ar=c	ddlmmm}|sj	dtjdk(r
	dfd	fd
}jddjddjd
djddjddjdd|d|d|d|d|d|d|d|dts|djddjd d!jd"d#|d$|d%|d&|d'|d(|d)y#t
$rj	dYwxYw#t$r+}|jdk(rj	dYd}~d}~wwxYw)*Nr)rrorIPv6 not available+could not import needed symbols from socketwin32::&'IPv6 might not be supportedc|SrHrc)rrors rrxz5GeneralModuleTests.testIPv6toString.<locals>.<lambda>i!,r=c>jttf|SrHrrrrYs rrxz5GeneralModuleTests.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)rrrorrImportErrorr@rrrwinerrorrr)rYrrrrorrs`   @@@rtestIPv6toStringz#GeneralModuleTests.testIPv6toStrings	I<<

23<<7"
A(D)

-

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

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

23<<7"
A(L1

-

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

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


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

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

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

T[[]+113	=JJL

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

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

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

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

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

23		T??

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

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

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


o
.	!"D 	!	


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


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





y
)	LL	


w
'	LL		



""7+





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

B

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

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

7#
$
$	$
]]6>>6+=+=
>	#HHdAYJJL			
$
$		s)C(CC	C#c$ddl}tjtjtj5}|j	t
df|j
t|j|jdzdddy#1swYyxYwr
)
r\rrSr@rrrrOrWr^)rYr\rJs   rtest_listen_backlog_overflowz/GeneralModuleTests.test_listen_backlog_overflow
sk	
]]6>>6+=+=
>	P#HHdAYmSZZ9J9JQ9NO	P	P	PsABBIPv6 required for this test.cd|jttjtj
ddfdtjtjtj5}|jt|jtj
ddfdddy#1swYyxYw)NrrWi)	rrOrrArrkror@rrs  r
test_flowinfoz GeneralModuleTests.test_flowinfos-););(//J?	D
]]6??F,>,>
?	U1mQVVm6J6JAs5ST	U	U	Us*3B&&B/ctjddtjtjtj\^}}|j|dy)Nff02::1de:c0:face:8Dr
)ff02::1de:c0:face:8dr
rr)rrror'rr)rYrsockaddrs   rtest_getaddrinfo_ipv6_basicz.GeneralModuleTests.test_getaddrinfo_ipv6_basicsJ".."&//	
1h	
#GHr=c|jtjtjd|jtjtjdy)Nrr)rrrrXs rtest_getfqdn_filter_localhostz0GeneralModuleTests.test_getfqdn_filter_localhost#sB)6>>)+DE)6>>$+?@r=rzdoes not work on WindowszSymbolic scope id does not workz test needs socket.if_nameindex()ctjd\}}tjd|zdtjtjtj
\^}}|j
|ddd|fy)Nrff02::1de:c0:face:8D%r
rS)rr-rror'rr)rYifindextest_interfacerrTs     r&test_getaddrinfo_ipv6_scopeid_symbolicz9GeneralModuleTests.test_getaddrinfo_ipv6_scopeid_symbolic'sr%+$7$7$9!$<!."..#n4&//	
1h	
$:D!W#MNr=z.Numeric scope id does not work or undocumentedcd}tjdt|zdtjtjtj
\^}}|j
|ddd|fy)N*rYr
rSr)rrrror'rr)rYrZrrTs    r%test_getaddrinfo_ipv6_scopeid_numericz8GeneralModuleTests.test_getaddrinfo_ipv6_scopeid_numeric7sc"..#c'l2&//	
1h	
$:D!W#MNr=ctjd\}}ddd|f}tj|tjtjz}|j|d|zdfy)NrrRr
ff02::1de:c0:face:8d%1234)rr-rANI_NUMERICHOSTNI_NUMERICSERVr)rYrZr[rTnameinfos     r&test_getnameinfo_ipv6_scopeid_symbolicz9GeneralModuleTests.test_getnameinfo_ipv6_scopeid_symbolicHsh%+$7$7$9!$<!.*D!W=%%h0E0EH]H]0]^$;n$Lf#UVr=cd}ddd|f}tj|tjtjz}|j	|dt|zdfy)Nr^rRr
rrarb)rrArcrdrr)rYrZrTres    r%test_getnameinfo_ipv6_scopeid_numericz8GeneralModuleTests.test_getnameinfo_ipv6_scopeid_numericSsY*D!W=%%h0E0EH]H]0]^$;c'l$JF#STr=ctjtjtj5}|jt	|j
d|j
jz|jt	|jd|jjz|jt|j
t|j
j|jt|jt|jjdddy#1swYyxYw)Nrr)	rrSr@rrrrr{rrs  rtest_str_for_enumsz%GeneralModuleTests.test_str_for_enums^s]]6>>6+=+=
>	=!T!((^-JQXX^^-[\T!&&\+IAFFLL+XYS]C,?@S[#affll*;<		=	=	=sC=D99Ecttdd}ttdd}tj|z|z}tjtj|5}|j	|j
tj|j
d|j	|j
tj|j
d|j	|j
tj|jd|j	|j
tj|jd|j	|j
tjdddy#1swYyxYw)N
SOCK_NONBLOCKrrrTF)rrr@rSrr{rsetblocking)rYrlr	sock_typer#s     r test_socket_consistent_sock_typez3GeneralModuleTests.test_socket_consistent_sock_typegs;
v~q9&&6E	
]]6>>9
5		9QVVV%7%78
LLOQVVV%7%78
LLOQVVV%7%78
MM$QVVV%7%78
MM% QVVV%7%78		9		9		9s
DE==Fcntjtjtj}|j}t	tj
jjdz}t	dtjjjDdz}tj||d|5}|j|j||j|j||j|jddhdddy#1swYyxYw)Nrc3.K|]
\}}|dvr|yw)>rrlNrc)rrkinds   rrzEGeneralModuleTests.test_unknown_socket_family_repr.<locals>.<genexpr>s%
d<<

srp)rr{rrr)rrSr@detachmax
AddressFamily__members__values
SocketKindrNrrr{rr)rYrKfdunknown_familyunknown_typer#s      rtest_unknown_socket_family_reprz2GeneralModuleTests.test_unknown_socket_family_reprws}}V^^V-?-?@
[[]V11==DDFG!K
$//;;AAC


	]]%L	,QXX~6QVV\2MM!''Ar7+
	,	,	,s
AD++D4sendfileztest needs os.sendfile()cGdd}tj5}tjtjtj}tj
||j
tj5|j||ddd|j
t5|j|ddzddd|j
t5|j|dddddddy#1swYxYw#1swYSxYw#1swY*xYw#1swYyxYw)NceZdZdZdZy)<GeneralModuleTests.test__sendfile_use_sendfile.<locals>.Filec||_yrHry)rYrys  rrozEGeneralModuleTests.test__sendfile_use_sendfile.<locals>.File.__init__s	r=c|jSrHrrXs rrzCGeneralModuleTests.test__sendfile_use_sendfile.<locals>.File.filenoswwr=N)r`rarbrorrcr=rFilers

r=rrrZ)rosrcurdirO_RDONLYr r_GiveupOnSendfile_sendfile_use_sendfilerOr)rYrrKrys    rtest__sendfile_use_sendfilez.GeneralModuleTests.test__sendfile_use_sendfiles		]]_	8BKK0BHHRL""6#;#;<
6++DH5
6""=1
;++DDM:
;""9-
8++DJ7
8	8	8
6
6
;
;
8
8	8	8sTA'EDE;D(E3D4ED%	!E(D1	-E4D=	9EE	c|j|j||j|j||j}t	j|}|j|j|j|j|j||j|j||j|j|yNr)rrr{rrrxr rs)rYr#rstyperys2s      r_test_socket_filenoz&GeneralModuleTests._test_socket_filenos6*'
XXZ
]]"
%!	
F+%(b)r=ctjtjtj}|j|j|jtjdf|j|tjtjttdrtjtjtj}|j|j|jtjdf|j|tjtjtjrtjtjtj}|j|j|jtjdddf|j|tjtjttdrt
j}|jtj |tjtj"tj}|5	|j||j|tj"tjdddyy#t$$rYwxYw#1swYyxYw)Nrr'rP)rrSr@rxr rrrrrr'rrorkrHrrIrPPermissionError)rYr#	unix_names   rtest_socket_filenoz%GeneralModuleTests.test_socket_filenosMM&..&*<*<= 	
""A&'  FNNF4F4FG6<(

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

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

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

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

K

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


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


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

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

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


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

bll((5;;*DE


w
'	02MM"" ,,.
0	0
	


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

(
(
*		Ae""7+
5

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

NN&& <<>+
+

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

Dcddl}ddl}|j|jddd|}|j	|t
jy)NrrurcH|jxr|jdS)NAF_isupperrsCs rrxz<GeneralModuleTests.test_addressfamily_enum.<locals>.<lambda>!))+=!,,u*=r=source)renum
_old_convert_IntEnum_test_simple_enumrru)rYrrCheckedAddressFamilys    rtest_addressfamily_enumz*GeneralModuleTests.test_addressfamily_enumsE#11ox= 2 
	
3V5I5IJr=cddl}ddl}|j|jddd|}|j	|t
jy)NrrxrcH|jxr|jdS)NSOCK_rrs rrxz9GeneralModuleTests.test_socketkind_enum.<locals>.<lambda>s!))+?!,,w*?r=r)rrrrrrrx)rYrrCheckedSocketKinds    rtest_socketkind_enumz'GeneralModuleTests.test_socketkind_enumsE ..lH?/
	
0&2C2CDr=cddl}ddl}|j|jddd|}|j	|t
jy)NrMsgFlagrcH|jxr|jdS)NMSG_rrs rrxz6GeneralModuleTests.test_msgflag_enum.<locals>.<lambda>s!))+>!,,v*>r=r)rrrIntFlagrrr)rYrrCheckedMsgFlags    rtest_msgflag_enumz$GeneralModuleTests.test_msgflag_enumsA++i>,
	
~v~~>r=cddl}ddl}|j|jddd|}|j	|t
jy)NrAddressInforcH|jxr|jdS)NAI_rrs rrxz:GeneralModuleTests.test_addressinfo_enum.<locals>.<lambda>rr=r)rrrrrrr)rYrrCheckedAddressInfos    rtest_addressinfo_enumz(GeneralModuleTests.test_addressinfo_enumsE!//mX=0 	
163E3EFr=)br`rarbr
skipUnlessrrrrrrrrrrrrrskipIfris_wasirr@rrrrrrr"r%rrr,r7r;r=rCrErUcpython_onlyrdr|rrrrrrrrrrrrrrrrrris_resource_enabledrrrrr%r)r/r1r;r?rGrKrMrPrUrWrr\r_rfrhrjror|rrrrrrrrrrrrrrcr=rrrFs>X,.CD#E#
+X,.CD
,E
,3"(6T XD*<=>X__W__&EF
>G
>X13HIX335RSTJ:v&?+"X79Z[X79Z[&\\&$X8?A*A*X)9:ACICIX)9:ACGCGXm479B9B:
>>.*FXG2X58:I:IX58: : >X58:<1:<1|X58:M:M0X58:#:#D(:>A7
=,(XD*<=	:>	:XD*<=X)ABLNSN>SN`.B`QX444Y?13
I3
I>.-!"G	7 8,	7
PPX335STUUUX335STIUIAX335STX__S\\W,.HIX__S;<X8:\]
O^=JU
OX335STX8:O:UOX335STX__S\\W,.HIX__S;<X8:\]W^=JUWX335STX#,,'18:U:UU=9 ,2XZ02LM8N8"*A@KLIX__RWW_&ABJCJF
AKE?Gr=rz!SocketCan required for this test.c$eZdZdZej
eedddZdZ	ej
eedddZ
dZdZej
eed	d
dZ
ej
eedd
dZy)BasicCANTestcdtjtjtjyrH)rAF_CANrrrXs rrz!BasicCANTest.testCrucialConstants s



r=CAN_BCM&socket.CAN_BCM required for this test.ctjtjtjtjtj
tjtjtjtjtjtjtjtjtjtjtj tj"tj$tj&tj(tj*tj,tj.tj0yrH)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_FRAMErXs rtestBCMConstantszBasicCANTest.testBCMConstants%s		      !!  !!!!	!!""""######&&))))##r=ctjtjtjtj5}	dddy#1swYyxYwrHrrrrrs  rtestCreateSocketzBasicCANTest.testCreateSocketE8
]]6==&//6>>
J	a			A

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

]]6==&//6>>
J	[a
LL++V-B-BJOZLL!3!3V5J5JAN
P
LL++V-B-BIjDYZ		[	[	[s
B'DDN)r`rarbrrrrrrrrrrrr
rcr=rrrs
X3AC$C$<X3ACC7:X);<JLOLOX)9:HJ[J[r=rceZdZddZedZedZdZdZdZ	dZ
dZd	Ze
jeed
ddZe
jeed
dd
Zy)CANTestc2tj||yr)rrors  rrozCANTest.__init__trr=ct|}|jdd}tj|j|||S)zBuild a CAN frame.r)rljustrrr)clsrdatacan_dlcs    rbuild_can_framezCANTest.build_can_framews8d)zz!W%{{3,,fgtDDr=cZtj|j|\}}}|||d|fS)zDissect a CAN frame.N)rrr)rframerrrs     rdissect_can_framezCANTest.dissect_can_frame~s4!'

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

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

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

dhh''o>

dhhr=rrc&|jj|j\}}|j|j||j|\}}}|j|j||j|j|yrH)rrrrrrrr)rYrrrrrs      r_testBCMzCANTest._testBCMss88$$T\\2D"% $ 6 6r :f-D)r=ctjtjtjtj}|j	|j
|j
|jfd|_tgd|_
|j|j|j|_tj}d}d}dx}x}x}}d}	d}
t|jdk(sJtj |j"||||||||	|

}||jz}|j%|}
|j'|
t|y)N#)ri"rrH)rrr'rrxr rrrbytesrrrrrrrrrr)rYbcmopcoderr
ival1_seconds
ival1_usec
ival2_seconds
ival2_usec
bcm_can_idnframesheaderheader_plus_frame
bytes_sents              rtestBCMzCANTest.testBCMs$mmFMM6+<+<fnnM		"T^^%&,-	&&t{{DII>''BCC
C
C]Z
477|r!!T11!!
#TWW,XX/0
S):%;<r=Nr)r`rarbroclassmethodrrrrr r"r&r*rrrrr,r>rcr=rrrqsDEE11
2
&' X3AC*C*X3AC=C=r=rz!CAN ISOTP required for this test.cveZdZfdZdZdZejee	dddZ
dZdZxZ
S)		ISOTPTestc2t||i|d|_yNrrnrorrss   rrozISOTPTest.__init__
$)&) r=ctjtjtjtjyrH)rrrr(r'rXs rrzISOTPTest.testCrucialConstantss"



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

E>>*++	s7ABAB
B
BBB	C)"=C$$C))r`rarbrorrrrrrrIrrOr~rs@rrArAsK!X5CEE+r=rAz!CAN J1939 required for this test.ceZdZfdZej
eedddZej
eedddZ	dZ
xZS)	J1939Testc2t||i|d|_yrCrDrss   rrozJ1939Test.__init__rEr=r,z(socket.CAN_J1939 required for this test.ctjtjtjtjtj
tjtjtjtjtjtjtjtjtjtjtj tj"tj$tj&tj(tj*tj,tj.tj0yrH)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_MAXrXs rtestJ1939ConstantszJ1939Test.testJ1939Constantss	%%  ((**!!	!!  """"!!$$!!%%r=ctjtjtjtj5}	dddy#1swYyxYwrH)rrr'r,rs  rtestCreateJ1939SocketzJ1939Test.testCreateJ1939Socket!	rJrc.	tjtjtjtj5}|jtj
tjtjf}|j||j|j|dddy#1swYyxYw#t$rG}|jtjk(r|jd|jznYd}~yd}~wwxYwr)rrr'r,rrWr]rVrrrrr)rMrrNs    rrOzJ1939Test.testBind'	s
	v}}f.?.?AQAQR
8VW~~v';';V=P=PRXRfRfft  $7
8
8
8	ww%,,&

E>>*++	s7ACA,B8/C8C=CC	D
=DD)r`rarbrorrrrrkrmrOr~rs@rrQrQsl!X5CE E BX5CEEr=rQz#RDS sockets required for this test.ceZdZdZdZdZy)BasicRDSTestcDtjtjyrH)rAF_RDSr/rXs rrz!BasicRDSTest.testCrucialConstants8	s



r=ctjtjtjd5}	dddy#1swYyxYwr)rr/r0rs  rrzBasicRDSTest.testCreateSocket<	s6
]]6==&*?*?
C	q			s	?AcTd}tjtjtjd5}|jtjtj
||jtjtj|dddy#1swYyxYw)Ni@r)rr/r0rr	SO_RCVBUF	SO_SNDBUF)rYrr#s   rtestSocketBufferSizez!BasicRDSTest.testSocketBufferSize@	st
]]6==&*?*?
C	Gq
LL**F,<,<gF
LL**F,<,<gF	G	G	GsABB'N)r`rarbrrrwrcr=rrprp5	sGr=rpceZdZddZfdZdZdZdZdZe	e
jddZe	e
jd	d
ZdZ
dZd
ZdZxZS)RDSTestc2tj||yr)rrors  rrozRDSTest.__init__J	rr=cTt|tj|_yrH)rnrZrprevtr5s rrZz
RDSTest.setUpM	s

??$r=c|jj|j\}}|j|j||j|j
|yrH)rTrrrrrrYrrs   rtestSendAndRecvzRDSTest.testSendAndRecvQ	sFYY''5
dD)-r=cd|_|jj|jdt|jfyNrrrrrrrVrXs r_testSendAndRecvzRDSTest._testSendAndRecvV	*			1tTYY&78r=c2|jj|jtj\}}|j|j||jj|j\}}|j|j|yrH)rTrrrMSG_PEEKrrr~s   rtestPeekzRDSTest.testPeekZ	shYY''fooF
dD)YY''5
dD)r=cd|_|jj|jdt|jfyrrrXs r	_testPeekzRDSTest._testPeek`	rr=recvmsgc|jj|j\}}}}|j|j|yrH)rTrrrr)rYrancdata	msg_flagsrs     rtestSendAndRecvMsgzRDSTest.testSendAndRecvMsgd	s7)-):):4<<)H&gy$D)r=sendmsgcd|_|jj|jgddt|jfy)Ns<hello hello hello hello hello hello hello hello hello hello rcr)rrrrrVrXs r_testSendAndRecvMsgzRDSTest._testSendAndRecvMsgi	s0"	$))b!dDII->?r=c|jj|j\}}|j|j||jj|j\}}|j|j
|yrH)rTrrrdata1data2r~s   rtestSendAndRecvMultizRDSTest.testSendAndRecvMultin	sbYY''5
dT*YY''5
dT*r=cd|_|jj|jdt|jfd|_|jj|j
dt|jfy)Nsbaconrsegg)rrrrrVrrXs r_testSendAndRecvMultizRDSTest._testSendAndRecvMultiu	sR


Adii'89


Adii'89r=ctj|jgggd\}}}|j|j||jj|j\}}|j|j|y)Ng@)selectrTrrrrr)rYrr4rrrs      r
testSelectzRDSTest.testSelect|	sd--RS91a

dii#YY''5
dD)r=cd|_|jj|jdt|jfy)NsselectrrrXs r_testSelectzRDSTest._testSelect	s*			1tTYY&78r=r)r`rarbrorZrrrrrrrrrrrrr~rs@rryryG	svD%.
9*9&--+*,*&--+@,@+:*9r=ryz'QIPCRTR sockets required for this test.c0eZdZdZdZdZdZdZdZy)BasicQIPCRTRTestc$tjyrH)rr8rXs rrz%BasicQIPCRTRTest.testCrucialConstants	sr=ctjtjtj5}	dddy#1swYyxYwrH)rr8r'rs  rrz!BasicQIPCRTRTest.testCreateSocket	s6
]]6,,f.?.?
@	A				>Actjtjtj5}|j|j	dddddy#1swYyxYwNrr)rr8r'rrrs  rtestUnboundzBasicQIPCRTRTest.testUnbound	sN
]]6,,f.?.?
@	4AQ]]_Q/3	4	4	4s$A  A)c(tjtjtj5}tj||jd|j
|jdddddy#1swYyxYw)NrrXr)rr8r'rrUrassertNotEqualrs  rtestBindSockzBasicQIPCRTRTest.testBindSock	si
]]6,,f.?.?
@	7A##AAMMOA,>?

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

 2A6	7	7	7s5A11A:N)	r`rarbrrrrrrrcr=rrr	s!47
L7r=rc$eZdZdZdZdZdZy)BasicVSOCKTestc$tjyrH)rrrXs rrz#BasicVSOCKTest.testCrucialConstants	s	r=ctjtjtjtjtj
tjtjtjyrH)	rSO_VM_SOCKETS_BUFFER_SIZESO_VM_SOCKETS_BUFFER_MIN_SIZESO_VM_SOCKETS_BUFFER_MAX_SIZErVMADDR_PORT_ANYVMADDR_CID_HOSTVM_SOCKETS_INVALID_VERSIONr
rXs rtestVSOCKConstantsz!BasicVSOCKTest.testVSOCKConstants	sJ((,,,,))--r=ctjtjtj5}	dddy#1swYyxYwrH)rrr@rs  rrzBasicVSOCKTest.testCreateSocket	s4
]]6??F,>,>
?	1			rcXtjtjtj5}|jtjtj}|jtjtj
}|jtjtj}|jtjtj|dz|jtjtj
|dz|jtjtj|dz|j|dz|jtjtj|j|dz|jtjtj
|j|dz|jtjtjdddy#1swYyxYwNr)	rrr@rrrrrr)rYr#orig_maxrBorig_mins     rrwz#BasicVSOCKTest.testSocketBufferSize	s
]]6??F,>,>
?	D1||FOO$*$H$HJH<< & @ @BD||FOO$*$H$HJH
LL==x!|
M
LL994!8
E
LL==x!|
M
X\\\&//#AAC
D
TAX\\&//#==?
@
X\\\&//#AAC
D+	D	D	DsG$H  H)N)r`rarbrrrrwrcr=rrr	s
.Dr=rz)Bluetooth sockets required for this test.c6eZdZdZdZejejdk(ddZ	ejejdk(ddZ
ejejdk(xsejjdd	d
Zy)BasicBluetoothTestcltjtjtjtjt
jdk7ratjtjtjt
jjdstjyyy)Nrrf)r
BDADDR_ANYBDADDR_LOCALr?rAr@rrBTPROTO_HCISOL_HCI
BTPROTO_L2CAPrsBTPROTO_SCOrXs rtestBluetoothConstantsz)BasicBluetoothTest.testBluetoothConstants	sp<<7"NN  <<**95""6#r=ctjtjtjtj5}	dddy#1swYyxYwrH)rr?r@rArs  rtestCreateRfcommSocketz)BasicBluetoothTest.testCreateRfcommSocket	s?
]]6..0B0BFDYDY
Z	^_			rrz&windows does not support L2CAP socketsctjtjtjtj5}	dddy#1swYyxYwrH)rr?r0rrs  rtestCreateL2capSocketz(BasicBluetoothTest.testCreateL2capSocket	s?
]]6..0E0EvG[G[
\	`a			rz$windows does not support HCI socketsctjtjtjtj5}	dddy#1swYyxYwrH)rr?rrrs  rtestCreateHciSocketz&BasicBluetoothTest.testCreateHciSocket	s=
]]6..ASAS
T	XY			rrfz.windows and freebsd do not support SCO socketsctjtjtjtj5}	dddy#1swYyxYwrH)rr?r0rrs  rtestCreateScoSocketz&BasicBluetoothTest.testCreateScoSocket	sA]]6..0E0EvGYGY
Z	^_			rN)
r`rarbrrrrr@rrrrrsrrcr=rrr	s#X__S\\W,.VWXX__S\\W,.TUVX__S\\W,R0G0G	0REGGr=rz'Hyper-V sockets required for this test.c6eZdZdZdZdZdZdZdZdZ	y)	BasicHyperVTestcDtjtjtjtjtj
tjtjtjtjtjyrH)rHVSOCKET_CONNECT_TIMEOUTHVSOCKET_CONNECT_TIMEOUT_MAXHVSOCKET_CONNECTED_SUSPENDHVSOCKET_ADDRESS_FLAG_PASSTHRUHV_GUID_ZEROHV_GUID_WILDCARDHV_GUID_BROADCASTHV_GUID_CHILDRENHV_GUID_LOOPBACKHV_GUID_PARENTrXs rtestHyperVConstantsz#BasicHyperVTest.testHyperVConstants	s\''++))--  r=cd}|jt|5tjtjtjdddy#1swYyxYw)Nz\[WinError 10041\])rrrrDr@)rYrs  r-testCreateHyperVSocketWithUnknownProtoFailurez=BasicHyperVTest.testCreateHyperVSocketWithUnknownProtoFailure
sJ(

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

#dFMM2iioc"r=cB|jjtyrHrrXs r_testFromFdzBasicTCPTest._testFromFdo
rr=c|jj}|j|j|j	d}|j|tyr)rduprxr rrr)rYrKr
s   rtestDupzBasicTCPTest.testDupr
sA}}  "

#iioc"r=cB|jjtyrHrrXs r_testDupzBasicTCPTest._testDupy
rr=c|jjd}|j|t|jjyr)rrrrrrr	s  rtestShutdownzBasicTCPTest.testShutdown|
s6mm  &c"	
		r=cx|jjt|jjdyr)rrrrrXs r
_testShutdownzBasicTCPTest._testShutdown
s&C "r=cfddl}|jjt|j	t
|jj|jdz|j	t
|jjd|jdzz|jj
dy)Nrrr)	r\rrrrrOrr^UINT_MAXrYr\s  r_testShutdown_overflowz#BasicTCPTest._testShutdown_overflow
sC -)@)@#++a/	1-)@)@y11A56	8"r=cP|jj}|jj}|j|||j	|jj
|j
t|jjd|jjtjtjtj|}|j|j|jd}|j|ty)Nrr)rrrsrr_closedrrrr rrSr@rxr)rYrrrKr
s     r
testDetachzBasicTCPTest.testDetach
s%%'MM  "F#

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

}}V^^V-?-?J

#iioc"r=cB|jjtyrHrrXs r_testDetachzBasicTCPTest._testDetach
rr=Nr)r`rarbrorrrrrrr
rrrrrrrrr!rrtestShutdown_overflowr%r(r*rcr=rrr/
sB#
!#!#
!#!+*#!#!#1G00>### !r=rc8eZdZd	dZdZdZdZdZdZdZ	y)
BasicUDPTestc2tj||yr)rrors  rrozBasicUDPTest.__init__
rr=c|jjtt}|j	|tyrHrTrrrrr	s  rtestSendtoAndRecvzBasicUDPTest.testSendtoAndRecv
(iinnSX&c"r=cf|jjtdt|jfyrrrrrrVrXs r_testSendtoAndRecvzBasicUDPTest._testSendtoAndRecv
Qtyy 12r=c|jjtt\}}|j	|tyrHrTrrrrrs   rrzBasicUDPTest.testRecvFrom
.II&&s3x0	Tc"r=cf|jjtdt|jfyrr4rXs rrzBasicUDPTest._testRecvFrom
r6r=cZ|jt|jjdyNrXrrrTrrXs rtestRecvFromNegativez!BasicUDPTest.testRecvFromNegative
*dii&8&8"=r=cf|jjtdt|jfyrr4rXs r_testRecvFromNegativez"BasicUDPTest._testRecvFromNegative
r6r=Nr
r`rarbror1r5rrr>rArcr=rr-r-
s&D#
3#
3>3r=r-c8eZdZd	dZdZdZdZdZdZdZ	y)
BasicUDPLITETestc2tj||yr)rrors  rrozBasicUDPLITETest.__init__
s!**4J*Gr=c|jjtt}|j	|tyrHr0r	s  rr1z"BasicUDPLITETest.testSendtoAndRecv
r2r=cf|jjtdt|jfyrr4rXs rr5z#BasicUDPLITETest._testSendtoAndRecv
r6r=c|jjtt\}}|j	|tyrHr8rs   rrzBasicUDPLITETest.testRecvFrom
r9r=cf|jjtdt|jfyrr4rXs rrzBasicUDPLITETest._testRecvFrom
r6r=cZ|jt|jjdyr<r=rXs rr>z%BasicUDPLITETest.testRecvFromNegative
r?r=cf|jjtdt|jfyrr4rXs rrAz&BasicUDPLITETest._testRecvFromNegative
r6r=NrrBrcr=rrDrD
s&H#
3#
3>3r=rDceZdZejZfdZdZdZdZ	dZ
dZdZdZ
d	D]Ze
eeedzZ
dZdZdZdd
ZxZS)SendrecvmsgBasecTtj|_t|yrH)rpr
misc_eventrnrZr5s rrZzSendrecvmsgBase.setUps#//+

r=c8|jj|SrH)cli_sockrr	s  rsendToServerzSendrecvmsgBase.sendToServers}}!!#&&r=rccf|jj||jt|dzSrH)rQrsendmsg_to_server_defaultsrrYrts  rsendmsgToServerzSendrecvmsgBase.sendmsgToServers8
%t}}$$T44SYZ@@C	Cr=cN|j|g|}|j||SrH)rregisterRecvmsgResult)rYrKrrtresults     r	doRecvmsgzSendrecvmsgBase.doRecvmsgs,g--""6*
r=cyrHrcrYrYs  rrXz%SendrecvmsgBase.registerRecvmsgResult%s	
r=c(|j||yrHrrYaddr1addr2s   rcheckRecvmsgAddressz#SendrecvmsgBase.checkRecvmsgAddress+s	
&r=r)
MSG_CTRUNCMSG_OOBcn|j}|j}|r||jz}||jz}n |||jz}||jz}||z}||z}||z}||z}||z|z}|rt	dj|||z|z}	|j
||	z||	zy)Nz6contradictory set, unset requirements for flags {0:#x})msg_flags_common_setmsg_flags_common_unsetmsg_flags_eor_indicatormsg_flags_non_eor_indicator	Exceptionrr)
rYreorcheckset
checkunsetignore
defaultsetdefaultunsetinbothrSs
          r
checkFlagszSendrecvmsgBase.checkFlags@s8..
22$666JD<<<L
_$:::JD888L	zk!
	!	Jl"
J&&0%%+VF^5
5:%&0x$7r=)Nrrr)r`rarbrLOOPBACK_TIMEOUTfail_timeoutrZrRrTrVrZrXrbrgrrrrfrhrirrr~rs@rrMrMs
++L'"$C
');'&$"::; #$48r=rMceZdZdZy)RecvmsgIntoMixinct|}|j|gg|}|j||j|dd|j	|d|t|d|df|ddzSr
)rrecvmsg_intorXassertGreaterEqualassertLessEqualr2)rYrKrrtbufrYs      rrZzRecvmsgIntoMixin.doRecvmsgzs~ """C5040""6*q	1-VAY0c*6!9o&(6!":55r=N)r`rarbrZrcr=rrvrvws6r=rvc(eZdZefdZxZS)SendrecvmsgDgramFlagsBasec:t|tjzSrH)rnrir	MSG_TRUNCr5s rriz5SendrecvmsgDgramFlagsBase.msg_flags_non_eor_indicatorsw2V5E5EEEr=)r`rarbpropertyrir~rs@rr}r}sFFr=r}c(eZdZefdZxZS)SendrecvmsgSCTPFlagsBasec:t|tjzSrH)rnrhrMSG_EORr5s rrhz0SendrecvmsgSCTPFlagsBase.msg_flags_eor_indicatorsw.??r=)r`rarbrrhr~rs@rrrs@@r=rcBeZdZedZedZedZdZy)SendrecvmsgConnectionlessBasec|jSrH)rTrXs r	serv_sockz'SendrecvmsgConnectionlessBase.serv_socksyyr=c|jSrH)rrXs rrQz&SendrecvmsgConnectionlessBase.cli_socksxxr=c"ggd|jfSr)r1rXs rrTz8SendrecvmsgConnectionlessBase.sendmsg_to_server_defaultssB4>>**r=cN|jj||jSrH)rQrr1r	s  rrRz*SendrecvmsgConnectionlessBase.sendToServers}}##C88r=N)r`rarbrrrQrTrRrcr=rrrsC
++9r=rc2eZdZedZedZdZy)SendrecvmsgConnectedBasec|jSrH)rrXs rrz"SendrecvmsgConnectedBase.serv_socks}}r=c|jSrH)rrXs rrQz!SendrecvmsgConnectedBase.cli_socks~~r=cyrHrcr_s   rrbz,SendrecvmsgConnectedBase.checkRecvmsgAddress	
r=N)r`rarbrrrQrbrcr=rrrs/
r=rceZdZfdZxZS)SendrecvmsgServerTimeoutBaseclt||jj|jyrH)rnrZrrrtr5s rrZz"SendrecvmsgServerTimeoutBase.setUps$

!!$"3"34r=)r`rarbrZr~rs@rrrs
55r=rceZdZdZdZdZdZdZdZdZ	dZ
d	Zd
ZdZ
dZd
ZdZeeddZej(dZdZdZdZdZy)SendmsgTestsc||j|jjtttyrHrrrrrrXs rtestSendmsgzSendmsgTests.testSendmsg%,,SX6<r=cj|j|jtgttyrHrrVrrrXs r_testSendmsgzSendmsgTests._testSendmsgs#--se4c#h?r=c||j|jjtttyrHrrXs rtestSendmsgDataGeneratorz%SendmsgTests.testSendmsgDataGeneratorrr=cx|j|jdtfDtty)Nc3 K|]}|ywrHrcrs  rrz9SendmsgTests._testSendmsgDataGenerator.<locals>.<genexpr>s.@Qq.@rrrXs r_testSendmsgDataGeneratorz&SendmsgTests._testSendmsgDataGenerators,--.@3%.@AS	#r=c||j|jjtttyrHrrXs rtestSendmsgAncillaryGeneratorz*SendmsgTests.testSendmsgAncillaryGeneratorrr=cz|j|jtgddDtty)Nc3 K|]}|ywrHrcrs  rrz>SendmsgTests._testSendmsgAncillaryGenerator.<locals>.<genexpr>s_Aa_rrcrrXs r_testSendmsgAncillaryGeneratorz+SendmsgTests._testSendmsgAncillaryGenerators,--se__ES	#r=c||j|jjtttyrHrrXs rtestSendmsgArrayzSendmsgTests.testSendmsgArrayrr=c|j|jtjdtgt	ty)NB)rrVarrayrrrXs r_testSendmsgArrayzSendmsgTests._testSendmsgArrays2--u{{3/D.EFS	#r=c||j|jjtttyrHrrXs rtestSendmsgGatherzSendmsgTests.testSendmsgGatherrr=c|j|jtddtddgttyNrrrXs r_testSendmsgGatherzSendmsgTests._testSendmsgGathers2--s2AwAB.@A3s8Lr=cZ|j|jjddyNrZdonerrrrXs rtestSendmsgBadArgszSendmsgTests.testSendmsgBadArgs!,,T2G<r=c	|jt|jj|jt|jd|jt|jt|jt|jtg|jt|jttg|jt|jtgt|jt|jtggt|jt|jtggdt|jdy)Nsnot in an iterablerr)rrrQrrVobjectrrRrXs r_testSendmsgBadArgsz SendmsgTests._testSendmsgBadArgss)T]]%:%:;)T%9%9/	1)T%9%9 (	$)T%9%9!8*	&)T%9%9/	+)T%9%9%	+)T%9%9%VX	/)T%9%9%Q	2'"r=cZ|j|jjddyrrrXs rtestSendmsgBadCmsgzSendmsgTests.testSendmsgBadCmsgrr=c	X|jt|jtgt	g|jt|jtgt	ddfg|jt|jtgdt	dfg|jt|jtgddt	fg|jt|jtgdg|jt|jtgdg|jdy)Nrdata)rr)rrrr^rrrrVrrrRrXs r_testSendmsgBadCmsgz SendmsgTests._testSendmsgBadCmsgs)T%9%9%&(	-)T%9%9%68Q"8!9	;)T%9%9%1fh"8!9	;)T%9%9%1a"2!3	5)T%9%9%&	+)T%9%9%"5!6	8'"r=
CMSG_SPACEcZ|j|jjddyrrrXs rtestSendmsgBadMultiCmsgz$SendmsgTests.testSendmsgBadMultiCmsgs#	
,,T2G<r=c|jt|jtggd|jt|jtgdt	g|jdy)Nrrr=rrrXs r_testSendmsgBadMultiCmsgz%SendmsgTests._testSendmsgBadMultiCmsgsU)T%9%9%	.)T%9%9%+vx!8	:'"r=cZ|j|jjddyrrrXs rtestSendmsgExcessCmsgRejectz(SendmsgTests.testSendmsgExcessCmsgReject%s#	
,,T2G<r=cttds\|jt5}|j	t
gddgddd|j
jj|jdy#1swY@xYw)Nrrr)
rrrrrVrassertIsNonerr)rRrYrs  r_testSendmsgExcessCmsgRejectz)SendmsgTests._testSendmsgExcessCmsgReject*srv|,""7+
Hr$$cU[+,FG
Hbll001'"
H
HsA??BcyrHrcrXs rtestSendmsgAfterClosez"SendmsgTests.testSendmsgAfterClose2sr=c|jj|jt|jt
gyrH)rQr rrrVrrXs r_testSendmsgAfterClosez#SendmsgTests._testSendmsgAfterClose6s,

'4#7#7#?r=N)r`rarbrrrrrrrrrrrrrrrrrr|rrrrrrcr=rrrs=@=#=#=#=M=#$=
#&,'=(=
((#)#=
#
@r=rc~eZdZdZdZdZdZeejdvddZ
e
jdZy	)
SendmsgStreamTestsc||j|jjtttyrHrrXs rtestSendmsgExplicitNoneAddrz.SendmsgStreamTests.testSendmsgExplicitNoneAddr?rr=cp|j|jtggddttyrrrXs r_testSendmsgExplicitNoneAddrz/SendmsgStreamTests._testSendmsgExplicitNoneAddrCs)--seRDA3s8Lr=c|j|jjdd|j|jj|jyNraaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaarKrrrrrOrrtrXs rtestSendmsgTimeoutz%SendmsgStreamTests.testSendmsgTimeoutFsE,,S18<,,T5F5F,GHr=cT	|jjd		|jdg#t$rYn3t
$r(}|jtjk7rYd}~nd}~wwxYw|jjy#|jjwxYw)NQ?r)
rQrrVrrrr)ENOMEMrOrrYrs  r_testSendmsgTimeoutz&SendmsgStreamTests._testSendmsgTimeoutKs	"MM$$T*
5(((4

99,-

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

MM",,,, <<):):ELLI
K
OO!DOO!sB6%<AAB66CN)
r`rarbrrrrrr@rrrr|rrcr=rrr;s]=MI
".cll)3 !I!I
$$
"%
"r=rceZdZdZdZy)SendmsgConnectionlessTestscyrHrcrXs rtestSendmsgNoDestAddrz0SendmsgConnectionlessTests.testSendmsgNoDestAddr}rr=c|jt|jjtg|jt|jjtggddyr)rrrQrrrXs r_testSendmsgNoDestAddrz1SendmsgConnectionlessTests._testSendmsgNoDestAddrsJ'4==#8#8%	!'4==#8#8%Q	.r=N)r`rarbrrrcr=rrrxs

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

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

r=c|j|jttdz
\}}}}|j	||j
|j
|g|j|d|j|jd\}}}}|j	||j
|j
|g|j|d||z}|j
|ty)NrFrrT)rZrrrrbrrrr)rYrrrrrr
s       rtestRecvmsgOverflowz-RecvmsgGenericStreamTests.testRecvmsgOverflow.
s%)^^DNN47HqL&B"gud  t}}5"%5)%)^^DNND%I"gud  t}}5"%4(Tkc"r=c.|jtyrHrrXs r_testRecvmsgOverflowz.RecvmsgGenericStreamTests._testRecvmsgOverflow>
rr=N)r`rarbr(r*r,r.rcr=rr&r&
s)# r=r&ceZdZdZdZy)RecvmsgTestsc|jt|jj|jt|jjddd|jt|jjttdd|jt|jjtdgdd|jt|jjtdd|jt|jjtttd|jt|jjttdt|jjttdd\}}}}|j|t|j||j|j|g|j|dy)NrXrr~Tr)
rrrrrrrrrrrbrrrrs     rtestRecvmsgBadArgszRecvmsgTests.testRecvmsgBadArgsE
sq)T^^%;%;<*dnn&<&<a	$*dnn&<&<c(B	+)T^^%;%;$R=/1a	1)T^^%;%; (Aq	*)T^^%;%;c(FHa	1)T^^%;%;c(Avx	1%)NN$:$:3s8Q$J!WeTc"  t}}5"%4(r=c.|jtyrHrrXs r_testRecvmsgBadArgsz RecvmsgTests._testRecvmsgBadArgs[
rr=N)r`rarbr2r4rcr=rr0r0B
s),r=r0c<eZdZdZdZdZdZdZdZdZ	dZ
y	)
RecvmsgIntoTestscttt}|jt|j
j|jt|j
jttdd|jt|j
j|dd|jt|j
jtgdd|jt|j
jdgdd|jt|j
j|tgdd|jt|j
j|gdd|jt|j
j|gtd|jt|j
j|gdt|j
j
|gdd\}}}}|j|tt|j|tt|j||j|j|g|j|dy)NrsI'm not writablerXTr)
rrrrrrrxrrrrbrrrrYr{nbytesrrrs      rtestRecvmsgIntoBadArgsz'RecvmsgIntoTests.testRecvmsgIntoBadArgsb
sC!)T^^%@%@A)T^^%@%@c(Aq	*)T^^%@%@q!	%)T^^%@%@!8*a	,)T^^%@%@./A	7)T^^%@%@/1a	1*dnn&A&A%Q	()T^^%@%@%1	.)T^^%@%@%FH	.(,~~'B'BC5!Q'O$S*in-  t}}5"%4(r=c.|jtyrHrrXs r_testRecvmsgIntoBadArgsz(RecvmsgIntoTests._testRecvmsgIntoBadArgs~
rr=cttt}|jj	d|fD\}}}}|j|tt|j|tt|j
||j|j|g|j|dy)Nc3 K|]}|ywrHrcrs  rrz<RecvmsgIntoTests.testRecvmsgIntoGenerator.<locals>.<genexpr>
s1QrTr)	rrrrrxrrbrrrr8s      rtestRecvmsgIntoGeneratorz)RecvmsgIntoTests.testRecvmsgIntoGenerator
sC!'+~~'B'B( $S*in-  t}}5"%4(r=c.|jtyrHrrXs r_testRecvmsgIntoGeneratorz*RecvmsgIntoTests._testRecvmsgIntoGenerator
rr=ctjddgttz}|jj	|g\}}}}|j|tt|j|j
t|j||j|j|g|j|dy)NrrTr)
rrrrrxrtobytesrbrrrr8s      rtestRecvmsgIntoArrayz%RecvmsgIntoTests.testRecvmsgIntoArray
skk#sSX~.'+~~'B'BC5'I$S*,  t}}5"%4(r=c.|jtyrHrrXs r_testRecvmsgIntoArrayz&RecvmsgIntoTests._testRecvmsgIntoArray
rr=ctd}td}td}|jj|t|dd|g\}}}}|j	|td|j	|td|j	|td|j	|td	|j
||j|j	|g|j|d
y)Ns----s
0123456789s--------------r	Mary had a little lambsMarys
01 had a 9slittle lamb---Tr)	rrrx
memoryviewrrrbrrr)rYb1b2b3r9rrrs        rtestRecvmsgIntoScatterz'RecvmsgIntoTests.testRecvmsgIntoScatter
s
w

}
%
(
)'+~~'B'B
B!$b)(+$%>!?@Yw/0Y}56Y'89:  t}}5"%4(r=c&|jdy)NrI)rRrXs r_testRecvmsgIntoScatterz(RecvmsgIntoTests._testRecvmsgIntoScatter
s34r=N)r`rarbr:r<r?rArDrFrNrPrcr=rr6r6_
s*)8	))
)5r=r6ceZdZ	ddlZedej
Zee	ddZ
ee	ddZy#e$rdZY(wxYw)CmsgMacroTestsrNiCMSG_LENc|jtjdz
dz}tt	dtt	|dz
|z}|jtjdt
jdjdz|D][}tj|}|j|tjdz
||j||j]|jttjd|jttj||jttjtjy)NrrrOrrX)socklen_t_limitrrSlistrAr0ritemsizerrzrrOr@maxsize)rYtoobigrwnr;s     rtestCMSG_LENzCmsgMacroTests.testCMSG_LEN
s%%(::Q>eCj!Dv|V)D$EE	
6??1-u{{3/?/H/H1/LM	<A//!$CS6??1#55q9  d&:&:;		<	
-"=	
-&A-#++Fr=rcb|jtjdz
dz}tt	dtt	|dz
|z}tjd}|j|t
jdjdz|D]}tj|}|j|||j|tj||j||tjdz|j||j|}|jttjd|jttj||jttjtjy)NrrUrrOrrX)rVrrrWrAr0rrXryrSrzrrOr@rY)rYrZrwlastr[r;s      rtestCMSG_SPACEzCmsgMacroTests.testCMSG_SPACE
sL%%(9(9!(<<q@eCj!Dv|V)D$EE  #4S!1!:!:Q!>?	A##A&C##C.##C);<##CV__Q-?)?@  d&:&:;D
		
-):):B?	
-):):FC-):):CKKHr=)r`rarbr\minr^rVrrrr\r_rcr=rrRrR
sl=j)*;*;<&*%G&G(&,'I(I7%$%s<AArRc
eZdZdZdZdZdZdZdZd5dZ	dZ
d	Zd
ZdZ
eedd
Zej"dZdZdZej,ej0dk(dej,edeeddZej"ej,ej0dk(dej,eddZej,ej0dk(dej,edeeddZej"ej,ej0dk(dej,eddZdZej,ej0dk(ddZdZ dZ!dZ"eeddZ#e#j"dZ$d6d Z%d!Z&d"Z'd#Z(d$Z)d%Z*d&Z+d'Z,d(Z-d)Z.d*Z/d6d+Z0d,Z1d-Z2d.Z3d/Z4d0Z5d1Z6d2Z7d3Z8y4)7
SCMRightsTesticTg}t|D]}tj\}}|jtj
||jtj|t	j|t|j|j||SrH)rArmkstemprxrrIr writerencodeappend)rYr[fdsrOryrLs      rnewFDszSCMRightsTest.newFDs
s|q	A'')HBOOBIIt,OOBHHb)HHRQ)JJrN	
r=ct|D]g\}}tj|dtj|j	tj
|dt
|jiy)Nrr)	enumeraterlseekSEEK_SETrrrrf)rYrhr[rys    rcheckFDszSCMRightsTest.checkFDs
sVs^	AEArHHRBKK(RWWR.A

@	Ar=c<|j|j|yrH)rxcloseRecvmsgFDsr\s  rrXz#SCMRightsTest.registerRecvmsgResults,,f5r=c	>|dD]\}}}|tjk(s|tjk(s/tjd}|j	|dt|t||jzz
|D]}tj|y)NrrO)	rr
SCM_RIGHTSr	frombytesrrXrr )rYrecvmsg_result
cmsg_level	cmsg_type	cmsg_datarhrys       rrpzSCMRightsTest.closeRecvmsgFDss1?q0A	!,J	9f///!2!22kk#&

i)II#i.3<<*GHJK!BHHRL!
	!r=c
|j|jtgtjtj
t
jd|j|fgtty)NrO)	rrVrrrrrrrir)rYr[s  rcreateAndSendFDszSCMRightsTest.createAndSendFDssb	
  ##)#4#4#)#4#4#(;;sDKKN#C#E"F
G
H	r=c|\}}}}|j|t|j||j|j	|dt
j||j|t|jt||tjd}	|D]}
|j|
t|
\}}}
|j|t
j|j|t
j|j|
t|jt|
t zd|	j#|
|jt|	||j%|	y)NTrkrmrnrOr)rrrbrrrrrcrrWrzrrtuplerrrr2
SIZEOF_INTrsrn)rYnumfdsrYmaxcmsgsignoreflagsr
rrrrhitemrurvrws              rcheckRecvmsgFDszSCMRightsTest.checkRecvmsgFDss8%+!WeTc"  t}}54F4E4E*		,	
gt,S\84kk#	%D!!$./3,J	9Z):):;Y(9(9:!!)U3S^j8!<MM)$	%	
S6*

cr=c	x|jd|j|jttdy)NrrrrZrrrrXs rtestFDPassSimplezSCMRightsTest.testFDPassSimple9.Qt~~/23x!@	Ar=c
|j|jtgtjtj
t
jd|jdjfgtty)NrOr)
rrVrrrrrrrirCrrXs r_testFDPassSimplezSCMRightsTest._testFDPassSimple>sh  ####++c4;;q>2::<>?
@

H
	r=c	x|jd|j|jttdy)NrrrrXs rtestMultipleFDPassz SCMRightsTest.testMultipleFDPassGrr=c&|jdyNrryrXs r_testMultipleFDPassz!SCMRightsTest._testMultipleFDPassLa r=rc|jd|j|jtttjdtzyr)rrZrrrrrr}rXs rtestFDPassCMSG_SPACEz"SCMRightsTest.testFDPassCMSG_SPACEOs@	

t~~dnnc#h$//J?A	Br=c&|jdyrrrXs r_testFDPassCMSG_SPACEz#SCMRightsTest._testFDPassCMSG_SPACEVsa r=c|jd|j|jtttjdtzt
jy)Nrrr)	rrZrrrrrSr}rcrXs rtestFDPassCMSG_LENz SCMRightsTest.testFDPassCMSG_LENZsKQ!^^DNNCH,2OOA
N,KM
*0):):
		<r=c&|jdyrVrrXs r_testFDPassCMSG_LENz!SCMRightsTest._testFDPassCMSG_LENdrr=rzskipping, see issue #12958zskipping, see issue #22397c	||jd|j|jttddy)Nrr)rrrXs rtestFDPassSeparatez SCMRightsTest.testFDPassSeparategs4	
Q!^^DNNCHeL&'		)r=ch|jd\}}|j|jtgtj
tjtjd|gftj
tjtjd|gfgttyNrrO	rirrVrrrrrrrrYfd0fd1s   r_testFDPassSeparatez!SCMRightsTest._testFDPassSeparateq;;q>S  #&*;*;*0*;*;*/++cC5*A*C+1*;*;*0*;*;*/++cC5*A*C)D
E
H	r=cd}|j||j|jtttjttjt|zzdt
jy)Nr)rr)
rrZrrrrrr}rSrc)rYnum_fdss  rtestFDPassSeparateMinSpacez(SCMRightsTest.testFDPassSeparateMinSpacesjW!^^DNNCH,2,=,=j,I,2OOJ<P,Q-RS'(V5F5F			Hr=ch|jd\}}|j|jtgtj
tjtjd|gftj
tjtjd|gfgttyrrrs   r_testFDPassSeparateMinSpacez)SCMRightsTest._testFDPassSeparateMinSpacerr=c	|j|g|}|j|t
|y#t$r<}|j|jt|j|g}Yd}~\d}~wwxYwrH)rVrrr)r/rr)rYr
rr9rs     rsendAncillaryIfPossiblez%SCMRightsTest.sendAncillaryIfPossiblesi	1))3%9F
	
S*		1!!!''3/))3%0F	1s1	A62A11A6zsee issue #24725c	|jd|j|jttdt
jy)Nrrr)rrZrrrrrcrXs rtestFDPassEmptyzSCMRightsTest.testFDPassEmptys=	
Qt~~/23x!@)/):):		<r=cp|jttjtjdfgyNr=)rrrrrrrXs r_testFDPassEmptyzSCMRightsTest._testFDPassEmptys0$$SF,=,=,2,=,=,/,1+2	3r=c|j|jttd\}}}}|j	|t|j||j|j|dtj|jt|d|D]e\}}}|j	|tj|j	|tj|jt|tgy)NrTrr)rZrrrrrbrrrrrcrzrrr
assertLessr}rYr
rrrrurvrws        rtestFDPassPartialIntz"SCMRightsTest.testFDPassPartialInts$(NN4>>36s8U%D!WeTc"  t}}540A0ABS\1-07	8,J	9Z):):;Y(9(9:OOC	NJ7	8r=c	|jttjtjtj
d|jgjddfgy)NrOrX)rrrrrrrbadfdrCrXs r_testFDPassPartialIntz#SCMRightsTest._testFDPassPartialIntsS$$kk#

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

cr=c
d|jd\}}|jttjtj
t
jd||jgjddftjtj
t
jd|gfgy)NrrOrX)	rirrrrrrrrrCrs   r_testFDPassPartialIntInMiddlez+SCMRightsTest._testFDPassPartialIntInMiddles;;q>S$$kk#TZZ0199;CR@Bkk#u%'
(	)r=c|\}}}}|j|t|j||j|j|g|j	|dt
j|y)NTrkrlrn)rrrbrrrrrc)rYrYrr
rrrs       rcheckTruncatedHeaderz"SCMRightsTest.checkTruncatedHeadersf%+!WeTc"  t}}5"%4&2C2C*		,r=c|j|j|jttt
jyNrrrZrrrrrcrXs rtestCmsgTruncNoBufSizez$SCMRightsTest.testCmsgTruncNoBufSizes8	
!!$..S"J/5.?.?		"	Ar=c&|jdyrVrrXs r_testCmsgTruncNoBufSizez%SCMRightsTest._testCmsgTruncNoBufSizerr=c|j|j|jttdt
jy)NrrrrXs rtestCmsgTrunc0zSCMRightsTest.testCmsgTrunc0s6!!$..S1"M.4.?.?	"	Ar=c&|jdyrVrrXs r_testCmsgTrunc0zSCMRightsTest._testCmsgTrunc0rr=cv|j|j|jttdyrV)rrZrrrrXs rtestCmsgTrunc1zSCMRightsTest.testCmsgTrunc1s%!!$..S1"MNr=c&|jdyrVrrXs r_testCmsgTrunc1zSCMRightsTest._testCmsgTrunc1	rr=c|j|j|jttt
dzyr)rrZrrrr}rXs rtestCmsgTrunc2IntzSCMRightsTest.testCmsgTrunc2Ints2	
!!$..S1;a#A	Br=c&|jdyrVrrXs r_testCmsgTrunc2Intz SCMRightsTest._testCmsgTrunc2Intrr=c	|j|j|jtttjddz
yr
)rrZrrrrrSrXs rtestCmsgTruncLen0Minus1z%SCMRightsTest.testCmsgTruncLen0Minus1s:!!$..S171Ca1G#I	Jr=c&|jdyrVrrXs r_testCmsgTruncLen0Minus1z&SCMRightsTest._testCmsgTruncLen0Minus1rr=c|j|jtt|\}}}}|j	|t|j||j|j|dtj|dk(r|gk(ry|j	t|d|d\}}	}
|j	|tj|j	|	tj|jt|
||jt|
|tjd}|j|
dt|
t|
|j zz
|j#|y)NTrkrlrrrO)rZrrrrrbrrrrrcrrrryrzrrsrXrn)rYancbufmaxdatamindatar
rrrrurvrwrhs            rcheckTruncatedArrayz!SCMRightsTest.checkTruncatedArray s=
%)NN4>>36s8V%E!WeTc"  t}}54&2C2CDa<GrMWq)+21:(
IyV%6%67F$5$56I8S^W5kk#

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

cr=cP|jtjddy)NrrrrrrSrXs rtestCmsgTruncLen0zSCMRightsTest.testCmsgTruncLen08s  (:A Fr=c&|jdyrVrrXs r_testCmsgTruncLen0z SCMRightsTest._testCmsgTruncLen0;rr=cV|jtjddzdy)NrrrrrXs rtestCmsgTruncLen0Plus1z$SCMRightsTest.testCmsgTruncLen0Plus1>s#  (:Q(> Jr=c&|jdyrrrXs r_testCmsgTruncLen0Plus1z%SCMRightsTest._testCmsgTruncLen0Plus1Arr=c`|jtjtty)NrrrrSr}rXs rtestCmsgTruncLen1zSCMRightsTest.testCmsgTruncLen1Ds#  
(C)3	!	5r=c&|jdyrrrXs r_testCmsgTruncLen1z SCMRightsTest._testCmsgTruncLen1Hrr=cx|jtjdtzdz
dtzdz
y)NrrrrrXs rtestCmsgTruncLen2Minus1z%SCMRightsTest.testCmsgTruncLen2Minus1Ks5  J(G!(K*+j.A)=	!	?r=c&|jdyrrrXs r_testCmsgTruncLen2Minus1z&SCMRightsTest._testCmsgTruncLen2Minus1Orr=N)rrr)9r`rarbrrirnrXrpryrrrrrrrrr|rrrrrr@rrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrcr=rrbrb
s
E
A6
!6A
A
!&,'B(B%%!&!<!X__S\\X-/KLX__S67&,')(8M)##X__S\\X-/KLX__S67	8M$	X__S\\X-/KLX__S67&,'H(8MH ++X__S\\X-/KLX__S67	8M,		+X__S\\X-/AB<C<3
8?&,'($"--	).	),A!A
!O!B!J!0G!K!5!?!r=rbc	eZdZdZdZdZd3dZeedddZ	e	jdZeed	ddd
ZejdZ
eejdeeddd
ZejdZ		d3dZeedddddZejdZeed	dddddZejdZeejdeed	dddddZejdZeejdeed	dddddZejdZd4dZeedddZejdZeedddZejdZeedddZejd Zeeddd!Z e jd"Z!eeddd#Z"e"jd$Z#eeddd%Z$e$jd&Z%d4d'Z&eed	ddddd(Z'e'jd)Z(eed	ddddd*Z)e)jd+Z*eed	ddddd,Z+e+jd-Z,eed	ddddd.Z-e-jd/Z.eed	ddddd0Z/e/jd1Z0y2)5RFC3542AncillaryTestrrXcVi}|D]!\}}}|j||f|||||f<#|SrH)r)rYrdrurvrws      rancillaryMappingz%RFC3542AncillaryTest.ancillaryMappingdsJ
07	3,J	9j)4a8)2Az9%&	3r=c|jjtjtjd|j
j
|j|jtt|\}}}}|j|t|j||j|j|dtj||jt|d|j|dt |d\}}	}
|j|tj|j|	tj"|j|
t$|jt|
t&t)j(d}|j+|
|j-|dd|j/|d|y)NrTr{rrO)rrrrrrOrrZrrrrbrrrrcrr|rr2r}rrsryrz)rY
ancbufsizemaxhoprr
rrrrurvrwrs            r
checkHopLimitz"RFC3542AncillaryTest.checkHopLimitnsr
	
!!&"5"5"(":":A	?$(NN4>>36s8Z%I!WeT	
c"  t}}54F4E4E*		,	
Wq)gaj%0+21:(
IyV%8%89F$8$89i/Y4KK	I!a(QqT6*r=rrc(|jdyNrr)rrXs rtestRecvHopLimitz%RFC3542AncillaryTest.testRecvHopLimits	
e,r=c|j|jj|j|j	t
yrrrOrrtrRrrXs r_testRecvHopLimitz&RFC3542AncillaryTest._testRecvHopLimits6
	
,,T5F5F,GH#r=rcV|jtjty)Nr)rrrr}rXs rtestRecvHopLimitCMSG_SPACEz/RFC3542AncillaryTest.testRecvHopLimitCMSG_SPACEs 	
f&7&7
&CDr=c|j|jj|j|j	t
yrrrXs r_testRecvHopLimitCMSG_SPACEz0RFC3542AncillaryTest._testRecvHopLimitCMSG_SPACE4,,T5F5F,GH#r=rc>|jd|jyNr)rr)r	hop_limitrXs rtestSetHopLimitz$RFC3542AncillaryTest.testSetHopLimits
	
eDNNCr=cT|j|jj|j|j	|jtgtjtjtjd|jgfgttyNrrO)
rrOrrtrrVrrrrrrrrXs r_testSetHopLimitz%RFC3542AncillaryTest._testSetHopLimits,,T5F5F,GH  ##)#6#68L8L#(;;sT^^4D#E#G"H
I
H		r=c|jjtjtjd|jjtjtj
d|jj|j|jtt|\}}}}|j|t|j||j|j|dtj||jt|d|j!|}|tjtj"f}	|jt|	t$t'j&d}
|
j)|	|j+|
dd|j-|
dd|tjtj.f}|jt|t$t'j&d}
|
j)||j+|
dd|j-|
d|y)NrTr{rrOrr0)rrrrrrrOrrZrrrrbrrrrcrrr}rrsryrzr)rYrrrr
rrrancmaptcdatarhldatas            rcheckTrafficClassAndHopLimitz1RFC3542AncillaryTest.checkTrafficClassAndHopLimits	
!!&"5"5"(":":A	?!!&"5"5"("8"8!	=$(NN4>>36s8Z%I!WeT	
c"  t}}54F4E4E*		,Wq)&&w/,,f.@.@ABVj1KK	F!a(QqT3',,f.B.BCDVj1KK	F!a(QqT6*r=rrc(|jdyr)r
rXs rtestRecvTrafficClassAndHopLimitz4RFC3542AncillaryTest.testRecvTrafficClassAndHopLimits	
))U);r=c|j|jj|j|j	t
yrrrXs r _testRecvTrafficClassAndHopLimitz5RFC3542AncillaryTest._testRecvTrafficClassAndHopLimitrr=c\|jtjtdzyNrr)r
rrr}rXs r)testRecvTrafficClassAndHopLimitCMSG_SPACEz>RFC3542AncillaryTest.testRecvTrafficClassAndHopLimitCMSG_SPACEs*
	
))((4q8	*	:r=c|j|jj|j|j	t
yrrrXs r*_testRecvTrafficClassAndHopLimitCMSG_SPACEz?RFC3542AncillaryTest._testRecvTrafficClassAndHopLimitCMSG_SPACErr=c>|jd|jyrr
rrXs rtestSetTrafficClassAndHopLimitz3RFC3542AncillaryTest.testSetTrafficClassAndHopLimits!	
))U15	*	Ar=c|j|jj|j|j	|jtgtjtjtjd|jgftjtjtjd|jgfgttyr)rrOrrtrrVrrrrr
traffic_classrrrrXs r_testSetTrafficClassAndHopLimitz4RFC3542AncillaryTest._testSetTrafficClassAndHopLimits,,T5F5F,GH  ##)#6#68J8J#(;;sT5G5G4H#I#K#)#6#68L8L#(;;sT^^4D#E#G"H
I

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

i&"4"4f6J6J!KLY4KK	I!a(QqT3'r=ct|jtjttjyr)r<rrr}rcrXs rtestSecondCmsgTrunc0z)RFC3542AncillaryTest.testSecondCmsgTrunc0s.	
''(9(9*(E4:4E4E	(	Gr=c|j|jj|j|j	t
yrrrXs r_testSecondCmsgTrunc0z*RFC3542AncillaryTest._testSecondCmsgTrunc0rr=cZ|jtjtdzyrVr<rrr}rXs rtestSecondCmsgTrunc1z)RFC3542AncillaryTest.testSecondCmsgTrunc1s"	
''(9(9*(E(IJr=c|j|jj|j|j	t
yrrrXs r_testSecondCmsgTrunc1z*RFC3542AncillaryTest._testSecondCmsgTrunc1rr=ch|jtjtdtzzyrrBrXs rtestSecondCmsgTrunc2Intz,RFC3542AncillaryTest.testSecondCmsgTrunc2Ints+	
''(9(9*(E()J)7	8r=c|j|jj|j|j	t
yrrrXs r_testSecondCmsgTrunc2Intz-RFC3542AncillaryTest._testSecondCmsgTrunc2Intrr=c|jtjttjdzdz
yr
)r<rrr}rSrXs rtestSecondCmsgTruncLen0Minus1z2RFC3542AncillaryTest.testSecondCmsgTruncLen0Minus1s9	
''(9(9*(E(.(:);=>)?	@r=c|j|jj|j|j	t
yrrrXs r_testSecondCmsgTruncLen0Minus1z3RFC3542AncillaryTest._testSecondCmsgTruncLen0Minus1rr=c&|jjtjtjd|jjtjtj
d|jj|j|jtttjttjtzdz
\}}}}|j|t|j||j |j#|dtj$tj&tj(h}|j+d\}}}|j|tj|j-||jt|tt/j.d}	|	j1||j3|	dd|j5|	dd|re|j+d\}}}|j|tj|j-||j7t|t|j|gy)NrTrrrOr0)rrrrrrrOrrZrrrr}rSrrbrrrrcrrpopremoverrsryrzr)
rYr
rrr
cmsg_typesrurvrwrs
          rtestSecondCmsgTruncInDataz.RFC3542AncillaryTest.testSecondCmsgTruncInDatas
	
!!&"5"5"(":":A	?!!&"5"5"("8"8!	=$(NNNNCHj)FOOJ,GG!K%M!WeT	
c"  t}}54&2C2CD((&*>*>?
+2;;q>(
IyV%8%89)$Y4KK	I!a(QqT3'/6{{1~,J	9Z)<)<=i(OOC	NJ7"%r=c|j|jj|j|j	t
yrrrXs r_testSecondCmsgTruncInDataz/RFC3542AncillaryTest._testSecondCmsgTruncInDatarr=N)r0rr)1r`rarbrrrrrrrr|rrrrrr
rrrrrrrr r"rrr(r*r,r.r0r2r4r6r8r:r<r>r@rCrErGrIrKrMrRrTrcr=rrrSsIM+8&-?-@-!!"&,(;_MENE ++,&--+&-?D@,D
  !?B12"+H&-#]4<4<%001&,(;_#]4:4:/::;&--+&,(;_#]4A4,A$//0&--+&,(;_#]4A4,A  /!/*,(&-?I@I''(&-?I@I%%&&-?8@8%%&&-?E@E(()&-?M@M#../&-?8@8***+(@&,(;_#]4G4G%%&&,(;_#]4K4K%%&&,(;_#]4848(()&,(;_#]4@4@#../&,(;_#]4!&4!&F**+r=rceZdZy)SendrecvmsgUDPTestBaseNr`rarbrcr=rrVrV	r=rVrceZdZy)SendmsgUDPTestNrWrcr=rrZrZr=rZrceZdZy)RecvmsgUDPTestNrWrcr=rr]r]r[r=r]rxceZdZy)RecvmsgIntoUDPTestNrWrcr=rr_r_r[r=r_ceZdZdZy)SendrecvmsgUDP6TestBasec4|j|dd|ddyr<r^r_s   rrbz+SendrecvmsgUDP6TestBase.checkRecvmsgAddress 	
sU3BZ0r=Nr`rarbrbrcr=rraras1r=rarNror'ceZdZy)SendmsgUDP6TestNrWrcr=rrfrf"	r=rfceZdZy)RecvmsgUDP6TestNrWrcr=rriri(rgr=riceZdZy)RecvmsgIntoUDP6TestNrWrcr=rrkrk.rgr=rkrceZdZy)RecvmsgRFC3542AncillaryUDP6TestNrWrcr=rrmrm4	r=rmceZdZy)#RecvmsgIntoRFC3542AncillaryUDP6TestNrWrcr=rrprp<s	r=rpceZdZy)SendrecvmsgUDPLITETestBaseNrWrcr=rrrrrFs
	r=rrceZdZy)SendmsgUDPLITETestNrWrcr=rrtrtMrgr=rtceZdZy)RecvmsgUDPLITETestNrWrcr=rrvrvSrgr=rvceZdZy)RecvmsgIntoUDPLITETestNrWrcr=rrxrxYrgr=rxceZdZdZy)SendrecvmsgUDPLITE6TestBasec4|j|dd|ddyr<r^r_s   rrbz/SendrecvmsgUDPLITE6TestBase.checkRecvmsgAddressfrcr=Nrdrcr=rrzrz`s1r=rzceZdZy)SendmsgUDPLITE6TestNrWrcr=rr}r}krnr=r}ceZdZy)RecvmsgUDPLITE6TestNrWrcr=rrrsrnr=rceZdZy)RecvmsgIntoUDPLITE6TestNrWrcr=rrr{rnr=rceZdZy)#RecvmsgRFC3542AncillaryUDPLITE6TestNrWrcr=rrrs	r=rceZdZy)'RecvmsgIntoRFC3542AncillaryUDPLITE6TestNrWrcr=rrrs	r=rceZdZy)SendrecvmsgTCPTestBaseNrWrcr=rrrr[r=rceZdZy)SendmsgTCPTestNrWrcr=rrrr[r=rceZdZy)RecvmsgTCPTestNrWrcr=rrrrXr=rceZdZy)RecvmsgIntoTCPTestNrWrcr=rrrrXr=rceZdZy)SendrecvmsgSCTPStreamTestBaseNrWrcr=rrrrXr=rz6IPPROTO_SCTP: [Errno 62] Protocol not supported on AIXrSr@rhceZdZy)SendmsgSCTPStreamTestNrWrcr=rrrrgr=rceZdZfdZxZS)RecvmsgSCTPStreamTestc	tt|y#t$r9}|jtj
k7r|j
dYd}~yd}~wwxYwNz4sporadic ENOTCONN (kernel issue?) - see issue #13876)rnrr(rr)ENOTCONNrrYrrvs  rr(z$RecvmsgSCTPStreamTest.testRecvmsgEOFsL	R'=?	Rww%..(MMPQQ	R	A/AAr`rarbr(r~rs@rrrRRr=rceZdZfdZxZS)RecvmsgIntoSCTPStreamTestc	tt|y#t$r9}|jtj
k7r|j
dYd}~yd}~wwxYwr)rnrr(rr)rrrs  rr(z(RecvmsgIntoSCTPStreamTest.testRecvmsgEOFsL	R+TAC	Rww%..(MMPQQ	Rrrrs@rrrrr=rceZdZy)SendrecvmsgUnixStreamTestBaseNrWrcr=rrrr[r=rrPceZdZy)SendmsgUnixStreamTestNrWrcr=rrrrXr=rceZdZy)RecvmsgUnixStreamTestNrWrcr=rrrrgr=rceZdZy)RecvmsgIntoUnixStreamTestNrWrcr=rrrrgr=rrrrceZdZy)RecvmsgSCMRightsStreamTestNrWrcr=rrrrXr=rceZdZy)RecvmsgIntoSCMRightsStreamTestNrWrcr=rrrrgr=rcdeZdZfdZej
Zeedr	dZ	dZ
xZSdZ	dZ
xZS)InterruptedTimeoutBasect|tjtjd}|j	tjtj|y)NcddzSrrc)signumrs  rrxz.InterruptedTimeoutBase.setUp.<locals>.<lambda>s
Ar=)rnrZrrrx)rYorig_alrm_handlerrvs  rrZzInterruptedTimeoutBase.setUps>

"MM&..*EG

v~~7HIr=	setitimerg?cLtjtj|yrH)rrITIMER_REALrYsecondss  rsetAlarmzInterruptedTimeoutBase.setAlarmsV//9r=rc.tj|yrH)rrrs  rrzInterruptedTimeoutBase.setAlarmsLL!r=)r`rarbrZrrsrKrr
alarm_timerr~rs@rrrs8
J&&G
v{#
	:
	"r=rsiginterruptrrz+Don't have signal.alarm or signal.setitimerceZdZfdZdZdZdZdZdZe	e
jddZe	e
jd	d
ZxZ
S)InterruptedRecvTimeoutTestclt||jj|jyrH)rnrZrTrrKr5s rrZz InterruptedRecvTimeoutTest.setUp!s"

		T\\*r=c	|j|j|jt5}||i|ddd|jdy#1swYxYw#|jdwxYwr)rrrrrYrQrtrurs     rcheckInterruptedRecvz/InterruptedRecvTimeoutTest.checkInterruptedRecv%sg	MM$//*""#45
&d%f%
&
MM!
&
&
MM!s!0A!	AA!AA!!A4cP|j|jjdyr)rrTrrXs rtestInterruptedRecvTimeoutz5InterruptedRecvTimeoutTest.testInterruptedRecvTimeout/s!!$))..$7r=cb|j|jjtdyr)rrT	recv_intorrXs rtestInterruptedRecvIntoTimeoutz9InterruptedRecvTimeoutTest.testInterruptedRecvIntoTimeout2s !!$))"5"5yGr=cP|j|jjdyr)rrTrrXs rtestInterruptedRecvfromTimeoutz9InterruptedRecvTimeoutTest.testInterruptedRecvfromTimeout5s!!$))"4"4d;r=cb|j|jjtdyr)rrTrrrXs r"testInterruptedRecvfromIntoTimeoutz=InterruptedRecvTimeoutTest.testInterruptedRecvfromIntoTimeout8s !!$))"9"99T?Kr=rcP|j|jjdyr)rrTrrXs rtestInterruptedRecvmsgTimeoutz8InterruptedRecvTimeoutTest.testInterruptedRecvmsgTimeout;s!!$))"3"3T:r=rxcd|j|jjtdgyr)rrTrxrrXs r!testInterruptedRecvmsgIntoTimeoutz<InterruptedRecvTimeoutTest.testInterruptedRecvmsgIntoTimeout?s#!!$))"8"89T?:KLr=)r`rarbrZrrrrrrrrrr~rs@rrrsc+8H<L&--+;,;&--0M1Mr=rceZdZfdZdZdZejdddZejdddZ	ejdde
ejdd	ZxZ
S)
InterruptedSendTimeoutTestct||j|_|j	|jj
t
j|j}|j|jj\|_}|j	|jj
|j|jj|jy)N)target)rnrZr+rrxr rpThread	doConnectstartrTrrrrrK)rY
cli_threadrrvs   rrZz InterruptedSendTimeoutTest.setUpOs

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

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

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

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



r=c|jjt|jft	j
dyNr)rrrrVrrrXs r
_testClosezTCPCloserTest._testCloses($		*+

3r=N)r`rarbrrrcr=rrrsr=rc>eZdZd
dZdZdZdZdZdZdZ	dZ
y	)BasicSocketPairTestc2tj||yr)r rors  rrozBasicSocketPairTest.__init__s<r=c|j|tjttdr+|j|jtj
n*|j|jtj|j|jtj|j|jdy)NrPr)
rrrrrrPrSr{r@rrZs  r_check_defaultsz#BasicSocketPairTest._check_defaultss~dFMM269%T[[&..9T[[&..9F$6$67Q'r=c:|j|jyrH)rrrXs r
_testDefaultsz!BasicSocketPairTest._testDefaultssTXX&r=c:|j|jyrH)rrTrXs rtestDefaultsz BasicSocketPairTest.testDefaultssTYY'r=cf|jjd}|j|tyr)rTrrrr	s  rrzBasicSocketPairTest.testRecvrr=cB|jjtyrH)rrrrXs rrzBasicSocketPairTest._testRecvs

cr=cB|jjtyrH)rTrrrXs rtestSendzBasicSocketPairTest.testSends		sr=cf|jjd}|j|tyr)rrrrr	s  r	_testSendzBasicSocketPairTest._testSends$hhmmD!c"r=Nr)r`rarbrorrrrrrrrcr=rrrs*=('(##r=rceZdZddZdZdZdZejdZ	ejeZ
eje
eddejdd	d
dZdZd
ZdZdZdZdZdZdZdZy)NonBlockingTCPTestscdtj|_tj	||yr)rpreventrrors  rrozNonBlockingTCPTests.__init__s#__&
&&t
&Cr=cx|j|jj||dk7}|j|j|te|du}t	j|tj
tj}|jt|tjz|yy)N)	rrTrgetblockingrF_GETFLr
O_NONBLOCKbool)rYrKrKblockingfd_blockingflags      rassert_sock_timeoutz'NonBlockingTCPTests.assert_sock_timeouts--/9sN))+X6#d?K;;tU]]BMMBDdR]]&:!;;[Ir=c|jjd|j|jd|jjd|j|jd|jjd|j|jd|jjd|j|jd|jjd|j|jd|jjd|j|jdy)NTFrrr~)rTrmrrrXs rtestSetBlockingz#NonBlockingTCPTests.testSetBlockings		d#  D1		e$  C0		T"  D1		Q  A.		R   B/		Q  A.r=cyrHrcrXs r_testSetBlockingz$NonBlockingTCPTests._testSetBlockingr&r=cddl}|j|jk\r|jd|jjd|j
|jjd|jj|jdz|j|jjy)Nrzneeds UINT_MAX < ULONG_MAXFrr)	r\r#rrrTrmrrrr$s  rtestSetBlocking_overflowz,NonBlockingTCPTests.testSetBlocking_overflows	!4!44MM67		e$--/5		i00145$))..01r=rlztest needs socket.SOCK_NONBLOCKrc|jjtjtjtjtj
z|_|j
|jdyr)rTr rrSr@rlrrXs rtestInitNonBlockingz'NonBlockingTCPTests.testInitNonBlockingsQ
	
		MM&.."("4"4v7K7K"KM	  A.r=cyrHrcrXs r_testInitNonBlockingz(NonBlockingTCPTests._testInitNonBlockingr&r=c(td5|jjd|jj\}}|j	|j
|j
|jdddy#1swYyxYw)Nr~)rMrTrrrxr rrrs   rtestInheritFlagsBlockingz,NonBlockingTCPTests.testInheritFlagsBlockingsn&d
+	1II  $))+JD$OODJJ'doo/0		1	1	1sA3BBcZ|jjt|jfyrHrrrrVrXs r_testInheritFlagsBlockingz-NonBlockingTCPTests._testInheritFlagsBlocking
$		*+r=c.d}t|5|jjd|jj\}}|j	|j
|j
|j|dddy#1swYyxYw)Ng4@r~)rMrTrrrxr rr)rYdefault_timeoutrrs    rtestInheritFlagsTimeoutz+NonBlockingTCPTests.testInheritFlagsTimeout
sy
%o
6	AII  $))+JD$OODJJ'T__.@		A	A	AsA4BBcZ|jjt|jfyrHrrXs r_testInheritFlagsTimeoutz,NonBlockingTCPTests._testInheritFlagsTimeoutrr=c|jjdtj}|j	t
5|jj
\}}dddtj|z
}|j|d|jjtj|jgggtj\}}}|j|vr|jd|jj
\}}|j|j|j!|j#y#1swYxYw)NFrz'Error trying to do accept after select.)rTrmr	monotonicrBlockingIOErrorrrrrrrLONG_TIMEOUTrrxr rr)rY
start_timerrdtrrers        r
testAcceptzNonBlockingTCPTests.testAccepts		e$^^%




/	,))+JD$	,
^^


*C 

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

#$//+,	,	,sEE#c|jj|jjt|j
fyrH)rrrrrrVrXs r_testAcceptzNonBlockingTCPTests._testAccept1s-	

$		*+r=cB|jj\}}|j|j|j	d|jt5|jtt}ddd|jjtj|gggtj\}}}||vr|jd|jtt}|j!|ty#1swYxYw)NFz0Error during select call to non-blocking socket.)rTrrxr rmrrrrrrrrrrrr)rYrrr
rrers       rrzNonBlockingTCPTests.testRecv8sYY%%'
d

#


/	&))CH%C	&	

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

	
r=Nr)r`rarbrorrrrrr	_testSetBlocking_overflowrrrrrequires_linux_versionr
rrrrrr!r#rrrcr=rrrsDJ"/(


2
2!5 4 45E FX9:<#W##Aq"-/.</
1,	A,-,,#(r=rceZdZdZdZdZdZdZdZe	Z
dZe	Zd!dZ
d	Zd
ZdZdZd
ZdZdZdZdZdZdZdZdZdZdZdZdZdZdZ dZ!dZ"dZ#dZ$d Z%y)"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.
    rXr	strictNrr5c2tj||yrrrs  rroz FileObjectClassTestCase.__init__mrr=cntdDcgc]}tjc}\|_|_|_|_tj||jj|j|j|j|j|j|_ycc}w)Nrr9errorsnewline)rArprevt1evt2
serv_finishedcli_finishedrrZrr$	read_moderr9r.r/	read_file)rYrOs  rrZzFileObjectClassTestCase.setUpps',QxG1"#IOOG1C	49d0$2C!!$'//NNDLL}}[[ll	0$G1sB2c|jj|jj|j	|jj
d|_tj|yrH)r2rr5r rclosedrr]rXs rr]z FileObjectClassTestCase.tearDownzsO --.$$T*r=ctj||jj|j|j
|j|j|j|_	y)Nr-)
rrrr$
write_moderr9r.r/
write_filerXs rrz#FileObjectClassTestCase.clientSetUpsM''-..11OOT\\}}[[ll	2$r=c|jj|jj|j	|jj
d|_tj|yrH)r3rr:r rr7rrrXs rrz&FileObjectClassTestCase.clientTearDownsO../**40r=c|jjd|jjd|j	t
|jjd|j	t5}|jjdddd|jdtjy#1swY/xYw)Nrrz!cannot read from timed out object)
rrr5rrrrrrr)rYctxs  rtestReadAfterTimeoutz,FileObjectClassTestCase.testReadAfterTimeouts	


  #A,(;(;Q?


w
'	#3NN"	#

93s}};MN	#	#s7CC
c|jj|jdd|jj|jjy)Nrr)r:re	write_msgflushr2rrXs r_testReadAfterTimeoutz-FileObjectClassTestCase._testReadAfterTimeoutsAdnnQq12!r=c|jjt|jdz
}|jjd}||z}|j	||jyr)r5rrread_msgr)rY	first_seg
second_segr
s    r
testSmallReadz%FileObjectClassTestCase.testSmallReadsVNN''DMM(:1(<=	^^((+
*$dmm,r=c|jj|j|jjyrHr:rer@rArXs r_testSmallReadz&FileObjectClassTestCase._testSmallRead(dnn-r=cp|jj}|j||jyrH)r5rrrDr	s  rtestFullReadz$FileObjectClassTestCase.testFullReads(nn!!#dmm,r=c|jj|j|jjyrH)r:rer@r rXs r
_testFullReadz%FileObjectClassTestCase._testFullReadrKr=ct|j}	|jjd}|sn||z
}$|j	||jyrV)r{rDr5rr)rYr{chars   rtestUnbufferedReadz*FileObjectClassTestCase.testUnbufferedReadsV!d4==!#>>&&q)D4KC	
	
dmm,r=c|jj|j|jjyrHrIrXs r_testUnbufferedReadz+FileObjectClassTestCase._testUnbufferedReadrKr=cp|jj}|j||jyrH)r5readlinerrDrYlines  rtestReadlinez$FileObjectClassTestCase.testReadlines(~~&&(t}}-r=c|jj|j|jjyrHrIrXs r
_testReadlinez%FileObjectClassTestCase._testReadlinerKr=c|jj|jj}|j	||j
yrH)rr r5rrrDr	s  rtestCloseAfterMakefilez.FileObjectClassTestCase.testCloseAfterMakefiles8

nn!!#dmm,r=c|jj|j|jjyrHrIrXs r_testCloseAfterMakefilez/FileObjectClassTestCase._testCloseAfterMakefilerKr=c|jj|jjt	t
}t
|jtr|j}|j||jyrH)r5r rrrrrzrDrdecoderr	s  rtestMakefileAfterMakefileClosez6FileObjectClassTestCase.testMakefileAfterMakefileClosesWmm  S*dmmS)**,Cdmm,r=c|jj|j|jjyrHrIrXs r_testMakefileAfterMakefileClosez7FileObjectClassTestCase._testMakefileAfterMakefileCloserKr=cP|j|jjyrH)rr5r7rXs rtestClosedAttrz&FileObjectClassTestCase.testClosedAttrsDNN1112r=cP|j|jjyrH)rr:r7rXs r_testClosedAttrz'FileObjectClassTestCase._testClosedAttrsDOO2223r=c|j|jj|j|j|jj|j
j
yrH)rr5r7r4rrrrXs rtestAttributesz&FileObjectClassTestCase.testAttributessG,,dnn=,,dmm.B.B.DEr=c|j|jj|j|j|jj|j
j
yrH)rr:r7r9rrrrXs r_testAttributesz'FileObjectClassTestCase._testAttributessG--t?--t~~/D/D/FGr=c|jj|jt|jj|j
j|jt|j
jyrH)r5r rrrrrrrXs r
testRealClosez%FileObjectClassTestCase.testRealClosesV*dnn&;&;<

'4==#<#<=r=cyrHrcrXs r_testRealClosez&FileObjectClassTestCase._testRealCloser&r=r)&r`rarbr}rr9r.r/r4rrDr9r@rorZr]rrr>rBrGrJrMrOrRrTrYr[r]r_rbrdrfrhrjrlrnrprcr=rr)r)Ws	GH
FGIHJIB$+$1
O"
- -
 - .
 - - 34FH>
r=r)cPeZdZdZdZdZdZdZdZdZ	dZ
d	Zd
ZdZ
dZy
)!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*|jj}|j|d|jz|jjdd|_|jj}|j|d|jzy)NA. rrB. )r5rVrr@rr$rWs  rtestUnbufferedReadlinez8UnbufferedFileObjectClassTestCase.testUnbufferedReadlinesp~~&&(v67//a8~~&&(v67r=c|jjd|jz|jjd|jz|jjy)NrtrurIrXs r_testUnbufferedReadlinez9UnbufferedFileObjectClassTestCase._testUnbufferedReadlinesHft~~56ft~~56r=c0|jj|jjd}|j||j|j
j|j
t|jjdyr)rr rrrDr5rrr	s  rtestMakefileClosez3UnbufferedFileObjectClassTestCase.testMakefileClosesf

mm  &dmm,'4==#5#5t<r=c|jj|j|jjyrHrIrXs r_testMakefileClosez4UnbufferedFileObjectClassTestCase._testMakefileCloserKr=ctj|j}|jj	tj|j}|j|dz
|yrV)r@r>rr5r r)rYrefcount_beforerefcount_afters   rtestMakefileCloseSocketDestroyz@UnbufferedFileObjectClassTestCase.testMakefileCloseSocketDestroy sK//$--871,n=r=cyrHrcrXs r_testMakefileCloseSocketDestroyzAUnbufferedFileObjectClassTestCase._testMakefileCloseSocketDestroy&r&r=c|jjd|j|jj	tdd|j|jj
t|jdz
d|jj|jjd|jj
t|jdz
}|Ftjd|jj
t|jdz
}td}|jj	|}|j|d||d|z}|j||j|j|jj	tdd|j|jj
ddy)NFr~rrg?rHr)rrmrr5readintorrrrDr0rr1rrr)rYrEr{r[r
s     rtestSmallReadNonBlockingz:UnbufferedFileObjectClassTestCase.testSmallReadNonBlocking-si

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

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

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

	
$r=c|jjd|jr|j|jyy)Nr)r3rserv_skippedrrXs rtestWriteNonBlockingz6UnbufferedFileObjectClassTestCase.testWriteNonBlockingIs8s#MM$++,r=c\d|_|jjddtjz}d}|j
j
|}|j|dt|D]3}|j
j
|}|y|j|d5d|_y)NFrr~rz$failed to saturate the socket buffer)	rrrmrrr:rer0rA)rYBIGLIMITr[rOs     r_testWriteNonBlockingz7UnbufferedFileObjectClassTestCase._testWriteNonBlockingPs ""5)W***OO!!#&1a u
	GA%%c*Ayq!$
	G!GDr=N)r`rarbr}rrvrxrzr|rrrrrrrcr=rrrrrsA<G8 
= >
7&%-Gr=rrceZdZdZy)#LineBufferedFileObjectClassTestCaserNr`rarbrrcr=rrrfGr=rceZdZdZy)$SmallBufferedFileObjectClassTestCaserNrrcr=rrrkrr=rcBeZdZdZdZej
dZdZeZ	dZ
y)"UnicodeReadFileObjectClassTestCase=Tests for socket.makefile() in text mode (rather than binary)rr	r5rNr`rarbr}r4rrarDr9r@r/rcr=rrrps'GIzz'"HJIGr=rcBeZdZdZdZeZdZejdZ	dZ
y)#UnicodeWriteFileObjectClassTestCaserrr4r	rN)r`rarbr}r4rrDr9rar@r/rcr=rrrzs'GIHJ

7#IGr=rc`eZdZdZdZej
dZdZej
dZ	dZ
y)'UnicodeReadWriteFileObjectClassTestCaserrr	r4rNrrcr=rrrs0GIzz'"HJ

7#IGr=rceZdZdZdZy)NetworkConnectionTestzProve network connection.cztjt|jf|_|j|_yrH)rcreate_connectionrrVrrrXs rrz!NetworkConnectionTest.clientSetUps*++T499,=>r=N)r`rarbr}rrcr=rrrs
#"r=rceZdZdZy)
BasicTCPTest2zLTests that NetworkConnection does not break existing TCP functionality.
    N)r`rarbr}rcr=rrrsr=rceZdZGddejZejdZejdZ
ejdZdZdZ
y)	NetworkConnectionNoServerceZdZdZy)$NetworkConnectionNoServer.MockSocketctd)Nz	timed out)rrUs  rrz,NetworkConnectionNoServer.MockSocket.connects
{++r=N)r`rarbrrcr=r
MockSocketrs	,r=rc#Ktj}|jt_	d|t_y#|t_wxYww)z*Return a socket which times out on connectN)rr)rY
old_sockets  rmocked_socket_modulez.NetworkConnectionNoServer.mocked_socket_modules2]]

	'&FMJFMs&A	9A	
AA	ctj}tjtjtj}|j|j|jt5}|jt|fddd|jjjtjy#1swY>xYwrH)rrrrSr@rxr rrrrrrr)ECONNREFUSED)rYrVrrs    rtest_connectz&NetworkConnectionNoServer.test_connects--/mmFNNF,>,>?		"


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


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

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

 --e>P>P1P2Q
		5		5s?BAB	BBB.B	BBBBN)r`rarbrr
contextlibcontextmanagerrrskip_if_tcp_blackholerrrrrcr=rrrsl,V]],''((A)A((;);0=$5r=rcbeZdZddZdZdZdZeZdZeZ	dZ
eZdZeZ
dZeZd	ZeZd
Zy)
NetworkConnectionAttributesTestc\tj||tj|yrrrs  rroz(NetworkConnectionAttributesTest.__init__rr=c6tj|_yrH)rrsource_portrXs rrz+NetworkConnectionAttributesTest.clientSetUps(99;r=cp|jjd|_tj|yrHrrXs rrz.NetworkConnectionAttributesTest.clientTearDownrr=c^|jj\}}|jyrH)rTrr rs   r_justAcceptz+NetworkConnectionAttributesTest._justAccepts!YY%%'
d

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

C$ctjt|jfd|_|j|jj
dyr)rrrrVrrrrXs r_testTimeoutValueNamedz6NetworkConnectionAttributesTest._testTimeoutValueNamed*s<++T499,=rJ,,.3r=ctjt|jfd|_|j|jj|j|jjdy)Nr)	rrrrVrrxr rrrXs r_testTimeoutValueNonamedz8NetworkConnectionAttributesTest._testTimeoutValueNonamed/sP++T499,=rB',,.3r=Nr)r`rarbrorrr
testFamilyrtestSourceAddressrtestTimeoutDefaultrtestTimeoutNonertestTimeoutValueNamedrtestTimeoutValueNonamedrrcr=rrrsc&<,
J-$F%	4"O	6(4*4r=rc6eZdZddZdZdZdZeZdZdZ	y)	NetworkConnectionBehaviourTestc\tj||tj|yrrrs  rroz'NetworkConnectionBehaviourTest.__init__7rr=cyrHrcrXs rrz*NetworkConnectionBehaviourTest.clientSetUp;r&r=cp|jjd|_tj|yrHrrXs rrz-NetworkConnectionBehaviourTest.clientTearDown>rr=c|jj\}}|j|jt	j
d|j
dy)Nrdone!)rTrrxr rrrrs   rtestInsideTimeoutz0NetworkConnectionBehaviourTest.testInsideTimeoutCs?YY%%'
d

#

1
		(r=ctjt|jfx|_}|jd}|j
|dy)Nrr)rrrrVrrr)rYrKrs   r_testInsideTimeoutz1NetworkConnectionBehaviourTest._testInsideTimeoutJs? 22D$))3DEE4yy|x(r=ctjt|jfdx|_|jtfdy)Nrrc&jdS)Nr)r)rKsrrxzDNetworkConnectionBehaviourTest._testOutsideTimeout.<locals>.<lambda>Qs		!r=)rrrrVrrrrZs @r_testOutsideTimeoutz2NetworkConnectionBehaviourTest._testOutsideTimeoutOs6 22D$))3DaPP4,(<=r=Nr)
r`rarbrorrrtestOutsideTimeoutrrrcr=rrr5s(&
,

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

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

fllG,

fnnl3r=ctjtjtjd}tjtjtjd|j}|j	|j|j|jt5|jddddy#1swYyxYw)NrF)
rrSr@rr rxrsrrrm)rYsock0rKs   rtest_setblocking_invalidfdz)TestExceptions.test_setblocking_invalidfds

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

$


w
'	$U#	$	$	$s6CCN)r`rarbr	r	rcr=rr	r	s4
$r=r	riLinux specific testc4eZdZdZdZdZdZdZdZdZ	y)	TestLinuxAbstractNamespacelctd}tjtjtj5}|j||j	tjtjtj5}|j|j
|jd5}|j|j
||j|j|dddddddddy#1swYxYw#1swYxYw#1swYyxYw)Nspython-test-hellor)
rrPr@rrWrrrrr)rYrs1rs3s     rtestLinuxAbstractNamespacez5TestLinuxAbstractNamespace.testLinuxAbstractNamespaces2
]]6>>6+=+=
>	@"GGGIIKv~~v/A/AB
@b

2>>+,YY[^@r$$R^^%5w?$$R^^%5w?@
@	@	@
@@
@
@	@	@s=AD.	3D"<AD=D"D.DD""D+	'D..D7cdd|jdz
zz}tjtjtj5}|j	||j|j
|dddy#1swYyxYw)Nrhr)
UNIX_PATH_MAXrrPr@rrrrYrr#s   rtestMaxNamez&TestLinuxAbstractNamespace.testMaxNameslDD$6$6$:;;
]]6>>6+=+=
>	7!
FF7OQ]]_g6	7	7	7s2BBcdd|jzz}tjtjtj5}|j	t
|j|dddy#1swYyxYw)Nh)r*	rrPr@rrrr+	s   rtestNameOverflowz+TestLinuxAbstractNamespace.testNameOverflows\3!3!333
]]6>>6+=+=
>	8!gqvvw7	8	8	8s"A00A9ctjtjtj}	|jd|j	|jd|j
y#|j
wxYw)Nz
pythontest
pythontest)rrPr@rrrr rs  rtestStrNamez&TestLinuxAbstractNamespace.testStrNamesXMM&..&*<*<=	
FF+,Q]]_.GH
GGIAGGIs1A66Bctjtjtj5}|jt	d|j|j
ddddy#1swYyxYw)Nr2	)rrPr@rrrrrs  rtestBytearrayNamez,TestLinuxAbstractNamespace.testBytearrayNames^
]]6>>6+=+=
>	I!
FF9678Q]]_.GH	I	I	Is;A77BcDd}tjtjtj5}|jd|j	|j|tjtjtj5}|jd|j	|j||j
|j|jddddddy#1swYxYw#1swYyxYw)Ns
^[0-9a-f]{5}r)rrPr@rassertRegexrr)rYabstract_addressr%	rs    rtestAutobindz'TestLinuxAbstractNamespace.testAutobinds-
]]6>>6+=+=
>	H"GGBKR^^-/?@v~~v/A/AB
Hb  !13CD##BNN$4bnn6FG
H		H	H
H
H		H	Hs%A$DA D
9D
D	DDN)
r`rarbr*	r'	r,	r0	r3	r5	r9	rcr=rr"	r"	s*M	@78
IHr=r"	ztest needs socket.AF_UNIXceZdZdZdZdZdZdZdZdZ	dZ
d	Zejejd
k(ddZy
)TestUnixDomaincrtjtjtj|_yrH)rrPr@rKrXs rrZzTestUnixDomain.setUpsMM&..&2D2DE	r=c8|jjyrH)rKr rXs rr]zTestUnixDomain.tearDowns		r=c	tj|S#t$r6|jdj	|tjYywxYw)NzBPathname {0!a} cannot be represented in file system encoding {1!r})rfsencoderrrr@getfilesystemencodingrYrLs  rencodedzTestUnixDomain.encodedsN	8;;t$$!	8MM((.#335)7
8	8s<AAc	tj||y#t$r:}t|dk(r!|j	dj|nYd}~yd}~wwxYw)NzAF_UNIX path too longz6Pathname {0!a} is too long to serve as an AF_UNIX path)rrJrrrr)rYrKrLrs    rrzTestUnixDomain.bind sV	**46	1v00

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

dii++-z:r=c*tjjtj}|j|j||jtj||j|jj|yrH)rrLabspathrTESTFNrrKrxrIrrrA	s  rtestStrAddrzTestUnixDomain.testStrAddr0s]wwy//0		$))T"	(($/..0$7r=cHtjjtj}|j|j|j||jtj||j|jj|yrH)rrLrF	rrG	rrKrB	rxrIrrrA	s  r
testBytesAddrzTestUnixDomain.testBytesAddr7sfwwy//0		$))T\\$/0	(($/..0$7r=cltjjtj}|j|}|j
|j|jdd|jtj||j|jj|y)Nasciisurrogateescape)
rrLrF	rTESTFN_UNICODErB	rrKrarxrIrr)rYrLrs   rtestSurrogateescapeBindz&TestUnixDomain.testSurrogateescapeBind>sywwy778LL		$))QXXg/@AB	(($/..0$7r=cltj|jdtjjtj}|j
|j||jtj||j|jj|y)Nz!No unencodable filename available)rTESTFN_UNENCODABLErrrLrF	rrKrxrIrrrA	s  rtestUnencodableAddrz"TestUnixDomain.testUnencodableAddrGsx''/MM=>wwy;;<		$))T"	(($/..0$7r=rir 	cZ|jt|jjdy)Nr)rrrKrrXs rtestEmptyAddresszTestUnixDomain.testEmptyAddressQs	
'499>>26r=N)r`rarbrZr]rB	rrrH	rJ	rO	rR	rrr@rrrT	rcr=rr;	r;	s\F	8
;8888X__S\\W,.CD7E7r=r;	cneZdZdZddZdZdZdZeZdZ	eZ
dZdZd	Z
eZd
ZeZdZdZd
ZeZy)BufferIOTestzF
    Test the buffer versions of socket.recv() and socket.send().
    c2tj||yrrrs  rrozBufferIOTest.__init__[rr=c6tjddgttz}|jj	|}|j|tt|j
}|dtt}|j|tyNrr)rrrrrrrCrYr{r9r
s    rtestRecvIntoArrayzBufferIOTest.testRecvIntoArray^snkk#sSX~.((-S*kkm)3s8nc"r=cXtt}|jj|yrHr2rrrrYr{s  r_testRecvIntoArrayzBufferIOTest._testRecvIntoArrayfCjC r=ctd}|jj|}|j|t	t
|dt	t
}|j|t
yr)rrrrrrrZ	s    rtestRecvIntoBytearrayz"BufferIOTest.testRecvIntoBytearrayjsRo((-S*)3s8nc"r=ctd}|jjt|}|j	|tt|dtt}|j	|tyr)rrrrJrrrrZ	s    rtestRecvIntoMemoryviewz#BufferIOTest.testRecvIntoMemoryviewssVo((C9S*)3s8nc"r=c<tjddgttz}|jj	|\}}|j|tt|j
}|dtt}|j|tyrY	)rrrrrrrCrYr{r9rr
s     rtestRecvFromIntoArrayz"BufferIOTest.testRecvFromIntoArray|srkk#sSX~.}}2237S*kkm)3s8nc"r=cXtt}|jj|yrHr]	r^	s  r_testRecvFromIntoArrayz#BufferIOTest._testRecvFromIntoArrayr`	r=ctd}|jj|\}}|j|t	t
|dt	t
}|j|t
yr)rrrrrrrf	s     rtestRecvFromIntoBytearrayz&BufferIOTest.testRecvFromIntoBytearraysVo}}2237S*)3s8nc"r=ctd}|jjt|\}}|j	|tt|dtt}|j	|tyr)rrrrJrrrrf	s     rtestRecvFromIntoMemoryviewz'BufferIOTest.testRecvFromIntoMemoryviewsZo}}22:c?CS*)3s8nc"r=crtd}|jt|jj|dy)Nrr)rrrrrr^	s  rtestRecvFromIntoSmallBufferz(BufferIOTest.testRecvFromIntoSmallBuffers)l*dmm&A&A3Mr=cB|jjtyrHrrXs r_testRecvFromIntoSmallBufferz)BufferIOTest._testRecvFromIntoSmallBufferrr=ct}|jj||jj|dyr)rrrr^	s  rtestRecvFromIntoEmptyBufferz(BufferIOTest.testRecvFromIntoEmptyBuffers/k

##C(

##C+r=Nr)r`rarbr}ror[	r_	rb	_testRecvIntoBytearrayrd	_testRecvIntoMemoryviewrg	ri	rk	_testRecvFromIntoBytearrayrm	_testRecvFromIntoMemoryviewro	rq	rs	_testRecvFromIntoEmptyBufferrcr=rrV	rV	WsmB#!#0#1#!#"8##9N
!,
$: r=rV	icttdsy	tdd}|5|D]}|j
dsdddy	dddy#ttt
f$rYywxYw#1swYyxYw)	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	r8ztipc NT)rrrFileNotFoundErrorIsADirectoryErrorrrs)rrXs  risTipcAvailabler	s69%73

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

3!T*
X*H5c"r=N)r`rarbr	rcr=rr	r	s#r=r	c,eZdZddZdZdZdZdZy)TIPCThreadableTestcptjj||tj|yrrrs  rrozTIPCThreadableTest.__init__s)""4j"A%r=ctjtjtj|_|j	|jj
|jj
tjtjdtjtttf}|jj||jj|j|jj!\|_|_|j	|j"j
yrV)rr|	r@rJrxr rrrr	r	r	r	rrWrrrr)rYr	s  rrZzTIPCThreadableTest.setUps==1C1CD'F--v/B/BAF++ZJ(

g  "#'88??#4 	4=		(r=ctjdtjtjtj|_|j
|j
jtjtttttz
dzzdf}|j
j||j
j|_y)Nrrr)rrrr|	r@rrxr r	r	r	r/r	rrcliaddr)rYrs  rrzTIPCThreadableTest.clientSetUps	

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

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

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

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

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

II#I/I;
II #I,/I8;JN)Tr)r`rarbr	rr'r	rcr=rr	r	rs,-2$W##Aq"-$.$r=r	rrzneed multiprocessingc:eZdZedZdZdZdZdZdZ	y)TestSocketSharingc|j}|j}tj|}|j\}}|j	||j|jyrH)rr	fromsharerrr )rqsdatamessager#rrs       rremoteProcessServerz%TestSocketSharing.remoteProcessServersY%%'U#
A	

7

		r=ctj}tj|j|f}|j	|j
j
|j}|j
j}|j
j|j|d}|j|tj|}g}	|jd}|sn|j|&|jdj|}|j!|||jy)Nrrts
slapmahfrorr=)multiprocessingrProcessr	rrTsharepidrr rrrrrgrr)	rYr	rrrr	r#mreceiveds	         r	testSharezTestSocketSharing.testShares

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

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

#	#LLNs6C#8C8C#.C8	C C #C55C88D
N)
r`rarbr?r	r	r	r	r	r	rcr=rr	r	s1
!FE
5 #r=r	ceZdZdZdZdZdZejZ	e
dZe
dZdZ
dZd	Zd
ZdZdZd
ZdZdZdZdZdZdZdZdZdZdZdZdZdZ dZ!dZ"dZ#dZ$dZ%y )!SendfileUsingSendTestz>
    Test the send() implementation of socket.sendfile().
    irr=cnd}djt|jDcgc]3}tjt
jj5c}}ttjd5}||j|jD]}|j|	dddttjd5}|j|_t|j|jk(sJ	dddycc}w#1swYlxYw#1swYyxYw)Nc3PK||k\sJ||kDr|||z}||kDr|r|yywrHrc)totalsteps  rchunksz0SendfileUsingSendTest.setUpClass.<locals>.chunks#s=D= $,

$,s&&r=r5r)rrABUFSIZErandomchoicestring
ascii_lettersrfrrrG	FILESIZErerFILEDATAr)rr	rOchunkrcsizes      r
setUpClassz SendfileUsingSendTest.setUpClass!s	#(#57!--(<(<=DDF78
)""D
)	Qckk:

	)""D
)	5Q668CLs||$444	5	57			5	5s8D?4D:D+D(+D4cJtjtjyrH)rrIrG	)rs r
tearDownClassz#SendfileUsingSendTest.tearDownClass4s))*r=c|jjtj|jj	\}}|j|j
|j
|j|SrH)rTrrrrTIMEOUTrxr rs   raccept_connz!SendfileUsingSendTest.accept_conn8sU		W112YY%%'
d%

#r=cg}	|j|j}|sn|j|0dj|Sr)rr	rgr)rYrr	r	s    r	recv_datazSendfileUsingSendTest.recv_data?sDIIdll+EOOE"	
xx!!r=ct|dS)N_sendfile_use_sendrrZs  rmeth_from_sockz$SendfileUsingSendTest.meth_from_sockHst122r=c|jj}ttjd}tj|5}|5}|j|}||}|j||j|j|j|jddddddy#1swYxYw#1swYyxYw)NrrTrrrrG	rrr	rr	tellrYrfilerKmethsents      r_testRegularFilez&SendfileUsingSendTest._testRegularFileOs))'')I$$d+

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

A B>-C
>C	C

Cc|j}|j|}|jt||j|j||j
yrHr	r	rrr	r	rYrrs   rtestRegularFilez%SendfileUsingSendTest.testRegularFileXJ!~~d#TDMM2t}}-r=c|jj}tj|j}tj|5}|5}|j|}|j||j|j|j|j|jt
j|j|ddddddy#1swYxYw#1swYyxYwrH)rTrioBytesIOr	rrr}rr	r
rrr)rYrr
rKr
s     r_testNonRegularFilez)SendfileUsingSendTest._testNonRegularFile`s))'')zz$--(

%
%g
.	A$	A==&DT4==1TYY[$--8f66"994
A		A	A	A	A	A	As%C2BC&C2&C/	+C22C;c|j}|j|}|jt||j|j||j
yrHr
r
s   rtestNonRegularFilez(SendfileUsingSendTest.testNonRegularFilejr

r=c|jj}tjdz}t	|d5|jtj|dddt	|d}tj|5}|5}|j|}||}|j|d|j|jdddddddy#1swYxYw#1swYxYw#1swYyxYw)N2r5rr)rTrrrG	rrxrIrrr	rr
)rYrfilenamer
rKr
r
s       r_testEmptyFileSendz(SendfileUsingSendTest._testEmptyFileSendrs))'')##c)
(D
!	8OOI,,h7	8Hd#

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

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

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

%
%g
.	?$	?U#&&t,Dj$5j$-->		?	?	?	?	?	?s%
C
AB9(C9C	>CCcj|j}|jdr|jdyy)Nrz$was not supposed to receive any data)r	rrrYrs  rtestNonBlockingz%SendfileUsingSendTest.testNonBlockings-!99T?II<=r=c||jj}ttjd}tj|tj}|5|5|j|}||}|j||jddddddy#1swYxYw#1swYyxYw)Nrr)rTrrrrG	rrrrsr	rr	r
s      r_testWithTimeoutz&SendfileUsingSendTest._testWithTimeouts))'')I$$d+''070H0HJ
	24	2&&t,D:DT4==1	2	2	2	2	2	2s$B26B&B2&B/	+B22B;c|j}|j|}|jt||j|j||j
yrHr
r
s   rtestWithTimeoutz%SendfileUsingSendTest.testWithTimeoutr

r=c\|jj}ttjd5}tj|5}|jd|j|}|jt||ddddddy#1swYxYw#1swYyxYw)Nrg{Gz?)rTrrrrG	rrrr	rrr3
s     r_testWithTimeoutTriggeredSendz3SendfileUsingSendTest._testWithTimeoutTriggeredSends))'')
)""D
)	<T))'2
<d%**40!!,d;
<	<	<
<
<	<	<s#B":BB"B	B""B+cp|j}|jdtjdy)NiXr)r	rrrr6
s  rtestWithTimeoutTriggeredSendz2SendfileUsingSendTest.testWithTimeoutTriggeredSends'!		%

1
r=cyrHrcrXs r_test_errorsz"SendfileUsingSendTest._test_errorsr&r=c	ttjd5}tjtj5}|j|}|j
td||ddddddttjd5}tj5}|j|}|j
td||ddddddttjd5}tj5}|j|}|j
td||d	|j
td||d
	|j
td||d	|j
td||d	ddddddy#1swY6xYw#1swY;xYw#1swYxYw#1swYxYw#1swYDxYw#1swYyxYw)
Nrrr@r	r8zbinary modezpositive integerr
r
rrrX)	rrrG	rr'r	rrr)rYr
r#r
s    rtest_errorsz!SendfileUsingSendTest.test_errorss
)""D
)	;TF$5$56
;!**1-&&
tT;
;	;
)""W
5	;
;A**1-&&
tT;
;	;
)""D
)
	=T	
=A**1-&&y2D'+T'>&&y2D'+T'>&&z3E'+T'<&&z3E'+T'=	
=
	=
	=
;
;	;	;
;
;	;	;	
=	
=
	=
	=sl%F+*F*F+G**F8G>GA:G
GF(	#F++F58G	=GG
G	GG%N)&r`rarbr}r	r	r	rrsr	r?r	r	r	r	r	r
r	
r
r
r
r
r
r
r"
r'
r)
r+
r/
r1
r4
r7
r9
r;
r=
r?
rA
rC
rcr=rr	r	s!HGH&&G55$++"39.A.
-$95
16
168??>2.<
=r=r	r}z%os.sendfile() required for this test.ceZdZdZdZy)SendfileUsingSendfileTestzB
    Test the sendfile() implementation of socket.sendfile().
    ct|dS)Nrr	rZs  rr	z(SendfileUsingSendfileTest.meth_from_sock&st566r=N)r`rarbr}r	rcr=rrE
rE
 s7r=rE
zAF_ALG requiredceZdZdZej
dddZdZej
dddZej
ddd	Z	ej
ddd
Z
dZdZy
)LinuxKernelCryptoAPIctjtjtjd}	|j||f|S#t$r5}|jt
jt|||d}~wwxYwr)	rr5r0rr}	r rSkipTestr)rYtyprrKrs     r
create_algzLinuxKernelCryptoAPI.create_alg-sn}}V]]F,A,A1E	IIsDk"K!	7JJL##CFC66	7sA

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

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

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

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

4   x8
9	9	9
9
9	9	9s$AC13B5$C5B>	:CC
rctjd}tjd}d}tjd}t|}|jdd5}|j	t
jt
j||j\}}|5|jt
j|t
j|j||j|j||ddd|j\}}|5|j|gt
j||j|j||dddd	}	|g|	z}
|j\}}|5|j|
t
j||j||	z}ddd|jt||	z|j|d|||j\}}|5|j|gt
j||j||	z}ddd|jt||	z|j|||	zdddy#1swYxYw#1swY7xYw#1swYxYw#1swYkxYw#1swYyxYw)
N 06a9214036b8a15b512e03d534120006 3dafba429d9eb430b422da802c9fac41sSingle block msg e353779c1079aeb82708942dbe77181askcipherzcbc(aes))rW
ivr)rW
rd
r)r2rT
rrL
rrr[
r\
r
sendmsg_afalgALG_OP_ENCRYPTrU
rrrALG_OP_DECRYPT)
rYr]
rd
r

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

3  *=	
>KKMEB
7  *$*$9$9b!B  #6
7Jej(GKKMEB
3  $*$9$9b!Bggfz12
3
SXv
':;S&\:6KKMEB
3  #$*$9$9b!Bggfz12
3
SXv
':;S#
"23A 	4 	4
>
>
7
7
3
3
3
37 	4 	4spAK$A#JK$AJ)%K7J+AK8J7
;KJ	KJ(	#K+J4	0K7K	<KKrHc
tjd}tjd}tjd}tjd}tjd}tjd}t|}t|}|jdd5}	|	j	t
jt
j||	j	t
jt
jd||	j\}
}|
5|
jt
j||t
j	|
j|t
j|
j||
j|t|z|z}|j|||||j|||dddd|	j\}
}|
5||z}
|
j|
gt
j||
|
j|t|z|z}|j|||||j|||ddddt!j"dj$}|	j\}
}|
5||z}
|
j'|
gt
jt
j(|t
jgt
jt
j*|t||zgt
jt
j,||gf|
jt|
|z}|j|||||j|||dddd|	j\}
}|
5||z|z}
|
j|
gt
j.||
|
jt|
|z
}|j|||dddddddy#1swYLxYw#1swYxYw#1swYxYw#1swY8xYw#1swYyxYw)N c939cc13397c1d37de6ae0e1cb7c423cb3d8cc017cbb89b39e0f67e2 c3b3c41f113a31b73d9a5cd432103069 24825602bd12a984e0092d3e448eda5f 93fe7d9e9bfd10348a5606e5cafa7354 0032a1dc85f1c9786925a2e71d8272ddaeadzgcm(aes))rW
rd
assoclenr)rW
rd
rw
r)r2rT
rrL
rrr[
r\
ALG_SET_AEAD_AUTHSIZErre
rf
rU
rrrrStructrr
ALG_SET_OP
ALG_SET_IVALG_SET_AEAD_ASSOCLENrg
)rYr]
rd
plainassocexpected_ctexpected_tagtaglenrw
rV
rW
rresr
pack_uint32s               rtest_aead_aes_gcmz&LinuxKernelCryptoAPI.test_aead_aes_gcmsmm>?
]]5
6

@A

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

5&//2

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

>!--,11KKKMEB
>em

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

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

#

0
1	*II()	*

#
#J
@	*II()	*

0
1	*II()	*

#
#J
@	*II()	*	*	*	*	*	*	*	*	*	*s0$DDD&3D2DD#&D/2D;N)
r`rarbrL
rr'rX
r^
rn
r
r
r
r
rcr=rrH
rH
*s	$W##Aq)9*9"9$W##Aq)&4*&4P$W##Aq)<8*<8|$W##Aq).*.J$*r=rH
rrceZdZdZy)TestMacOSTCPFlagscB|jtjyrH)rr
TCP_KEEPALIVErXs rtest_tcp_keepalivez$TestMacOSTCPFlags.test_tcp_keepalives,,-r=N)r`rarbr
rcr=rr
r
s.r=r
winzrequires WindowsceZdZhdZdZy)TestMSWindowsTCPFlags>
TCP_MAXSEGTCP_KEEPCNTTCP_NODELAYTCP_FASTOPENTCP_KEEPIDLE
TCP_KEEPINTVLcttDcgc]}|jds|}}|Dcgc]}||jvs|}}|j	g|dycc}wcc}w)NTCPzANew TCP flags were discovered. See bpo-32394 for more information)dirrrs
knownTCPFlagsr)rYr#providedunknowns    rtest_new_tcp_flagsz(TestMSWindowsTCPFlags.test_new_tcp_flagssc"6{B!all5.AABB&F!43E3E*E1FFWO	QCFsA!A!A&A&N)r`rarbr
r
rcr=rr
r
sMQr=r
cJeZdZdZdZdZejee	dxs
ee	ddejejddZ
ejejd	ejejdd
Zy)CreateServerTestc6tj}tjd|f5}|j	|jdd|j	|jd|dddtjrwtjd|ftj5}|j	|jdd|j	|jd|dddyy#1swYxYw#1swYyxYw)Nrrrrr)rrr
create_serverrrrrorYrVrKs   rtest_addresszCreateServerTest.test_addresss--/

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

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

H
H
)
)
,
,s%DAD<ADDDD'rIPV6_V6ONLYz IPV6_V6ONLY option not supportedrctjdtj5}|jtjtj
sJ	dddy#1swYyxYw)Nr
r)rr
rorrr
rZs  rtest_ipv6_only_defaultz'CreateServerTest.test_ipv6_only_default1sS

!
!*V__
E	L??6#6#68J8JKKK	L	L	Ls1A!!A*dualstack_ipv6 not supportedctjdtjd5}|j|jtjdddy#1swYyxYw)Nr
Trdualstack_ipv6)rr
rorrrZs  rtest_dualstack_ipv6_familyz+CreateServerTest.test_dualstack_ipv6_family9sM
!
!*V__157	;:>T[[&//:	;	;	;s+AA$N)r`rarbr
r
r
rrrrrrrr
rhas_dualstack_ipv6r
rcr=rr
r
s	>@
,X__.999 -8879X335RSLT9LX__2224435X335RS;T5;r=r
ceZdZejZdZdZdZe	jejddZ
e	jej de	jejddZe	jej de	jejddZy	)
CreateServerFunctionalTestc0fd}tj|jjtj||f}|j
j
|jjjy)Nc*|5|j\}}|5jj|jd}|s	ddddddy|j	|ddddddy#1swYxYw#1swYyxYwr)rrrKrr)rKrrr
rrYs    rrunz3CreateServerFunctionalTest.echo_server.<locals>.runFs
&++-a&JJt||,))D/C	&
&
&LL%&
&
&&&
&
&s.B	0A=
B	A=,B	=B	B		Br	)	rprrrKrrrxrr)rYrKr
rrs`   @recho_serverz&CreateServerFunctionalTest.echo_serverEsd	&!%!!D8<T\\2
		r=ctj|5}|j|j|j||j	d|j|j
dddddy#1swYyxYw)Nrrr)rrrKrrrr)rYrrrKs    recho_clientz&CreateServerFunctionalTest.echo_clientWse
]]&
)	6TOODLL)LLLL TYYt_f5		6	6	6sAA??Bctj}tjd|f5}|j	||jd|ftjdddy#1swYyxYw)Nrr)rrrr
r
r
rSr
s   r	test_tcp4z$CreateServerFunctionalTest.test_tcp4^sd--/

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

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

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

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


r=c<|D]}tj|yrHr
)rhrys  r	close_fdsz6SendRecvFdsTests.testSendAndRecvFds.<locals>.close_fdss

r=r~rrr)rArpiperxrr#rPr@r
rr
rrrkrerrfr)rYr
r
rr
rfdwfdrhsock1sock2r
fds2rrr4rs                rtestSendAndRecvFdsz#SendRecvFdsTests.testSendAndRecvFdss	
	
%*"I.q..U+#()xsCs))((9K9KLu
	-E	-OOEC5#.%+__UCHqL#c(UV,%W"CudOOIt,		-	-	
c"TCH-"$E*	/JE3HCHHS#e*++-.	/$D/	9JE3773$DTCJ$5$5$78	9-/)	-	-	-	-s0G,G1HA'G78H7H	<HHN)r`rarbr
rcr=rr
r
s#9r=r
cttj}tjtjg|yrH)rthreading_setupraddModuleCleanupthreading_cleanup)thread_infos rsetUpModuler
s*"224K.@@O;Or=__main__)rtestrtest.supportrrr_threadrrrr)rr
rrrrBrrrr	rrrrr	rr@rrprr	weakrefrr	rrrequires_working_socketrrfrrsystemrrrr$r)r-r1r6r9r<rBrFrrMHAVE_SOCKET_CANHAVE_SOCKET_CAN_ISOTPHAVE_SOCKET_CAN_J1939HAVE_SOCKET_RDSHAVE_SOCKET_ALGHAVE_SOCKET_QIPCRTRHAVE_SOCKET_VSOCKrHAVE_SOCKET_UDPLITEHAVE_SOCKET_BLUETOOTHHAVE_SOCKET_HYPERVrXr}rrQrerirlrrrrrrrrrrrrr r)r3r7r@rFrNrTr\r`rcrfrjrmrqrrrrrrrArQrpryrrrrrr-rDrMrvr}rrrrrrrrr&r0r6rRrbrrVrZr]r_rarrfrirkrmrprrrtrvrxrzr}rrrrrrrrrrrrrrrrrrrrrrrrr)rrrrrrrrrrrrrrr	r	r	r"	r;	rV	r	r	r	r	r	r	r	r	r	rr	r	rE
rH
r
rsr
r
r
r
r
r`mainrcr=r<module>r
s"&)			

	





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

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

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




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