a 5êdg\Ûã @s ddlZddlmZddlmZddlZddlZddlZddlZddl Z ddl Z ddl Z ddl Z ddl Z ddlZddlZddlZddlZddlZddlmZddlZddlZddlZddlZddlZddlZddlZddlZddlZz ddlZWne ydZYn0z ddl!Z!Wne y.dZ!Yn0ej"Z"d #d¡Z$dZ%e &¡d kZ'z ddl(Z(Wne ytdZ(Yn0d d „Z)d d „Z*dd„Z+dd„Z,dd„Z-dd„Z.dd„Z/dd„Z0dd„Z1ej2dd„ƒZ3e*ƒZ4e+ƒZ5e,ƒZ6e-ƒZ7e.ƒZ8e/ƒZ9e0ƒZ:e;edƒZZ?Gd d!„d!ej@ƒZAGd"d#„d#ej@ƒZBGd$d%„d%eBƒZCGd&d'„d'ej@ƒZDGd(d)„d)ej@ƒZEGd*d+„d+ej@ƒZFGd,d-„d-ƒZGGd.d/„d/eAeGƒZHGd0d1„d1eBeGƒZIe Je„d>ej@eGƒƒƒƒZOGd?d@„d@eHƒZPGdAdB„dBej@eGƒZQGdCdD„dDej@ƒZRGdEdF„dFeRƒZSGdGdH„dHeDeReGƒZTGdIdJ„dJeSeTƒZUGdKdL„dLeRƒZVGdMdN„dNeVƒZWGdOdP„dPeRƒZXGdQdR„dReXƒZYGdSdT„dTeXƒZZGdUdV„dVeXƒZ[GdWdX„dXeXƒZ\GdYdZ„dZeXƒZ]Gd[d\„d\e]ƒZ^Gd]d^„d^e]ƒZ_d_d`„Z`dadb„Zadcdd„ZbGdedf„dfej@ƒZce Je4dg¡Gdhdi„diej@ƒƒZde Je4dg¡Gdjdk„dkeLƒƒZee Je5dl¡Gdmdn„dnej@ƒƒZfe Je6do¡Gdpdq„dqej@ƒƒZge Je7dr¡Gdsdt„dtej@ƒƒZhe Je7dr¡Gdudv„dveMƒƒZie Je9dw¡Gdxdy„dyej@ƒƒZje Ne!dud9¡e Je:d:¡Gdzd{„d{ej@ƒƒƒZke Je=d|¡Gd}d~„d~ej@ƒƒZlGdd€„d€ePƒZmGdd‚„d‚eIƒZne Jed?„d?ej@ƒZÅe Je;ed@ƒdA¡GdBdC„dCej@ƒƒZÆe JejÇdDkdE¡e JedF¡GdGdH„dHeAƒƒƒZÈGdIdJ„dJeHƒZÉe Je;edKƒdL¡GdMdN„dNeɃƒZÊe Je8dO¡GdPdQ„dQej@ƒƒZËe Jej ÌdR¡dS¡GdTdU„dUej@ƒƒZÍGdVdW„dWej@ƒZÎGdXdY„dYej@ƒZÏeaedZƒeaed[ƒeaedìƒGd\d]„d]ej@ƒƒƒƒZÐd^d_„ZÑeÒd`krœeуdS(aéN)Úsupport)Ú socket_helper)ÚproxyFuMichael Gilfix was hereሴ úutf-8éÒÚAIXcCs‚tdur dSttdƒsdSz>tddƒ }t |tjd¡}Wdƒn1sL0YWntylYdS0t d|¡dSdS)NÚIOCTL_VM_SOCKETS_GET_LOCAL_CIDz /dev/vsockÚrbz ÚIr) ÚfcntlÚhasattrÚsocketÚopenÚioctlrÚOSErrorÚstructÚunpack)ÚfÚr©rú,/usr/local/lib/python3.9/test/test_socket.pyÚget_cid2s  2 rc Cs>zt tjtjtj¡}Wnttfy0YdS0| ¡dS)z5Check whether CAN sockets are supported on this host.FT)r ÚPF_CANÚSOCK_RAWÚCAN_RAWÚAttributeErrorrÚclose©ÚsrrrÚ_have_socket_can?s rc Cs>zt tjtjtj¡}Wnttfy0YdS0| ¡dS)z;Check whether CAN ISOTP sockets are supported on this host.FT)r rÚ SOCK_DGRAMÚ CAN_ISOTPrrrrrrrÚ_have_socket_can_isotpIs r"c Cs>zt tjtjtj¡}Wnttfy0YdS0| ¡dS)z;Check whether CAN J1939 sockets are supported on this host.FT)r rr Ú CAN_J1939rrrrrrrÚ_have_socket_can_j1939Ss r$c Cs<zt tjtjd¡}Wnttfy.YdS0| ¡dS)z5Check whether RDS sockets are supported on this host.rFT)r ÚPF_RDSÚSOCK_SEQPACKETrrrrrrrÚ_have_socket_rds]s r'c Cs<zt tjtjd¡}Wnttfy.YdS0| ¡dS)z8Check whether AF_ALG sockets are supported on this host.rFT)r ÚAF_ALGr&rrrrrrrÚ_have_socket_alggs r)c Cs<zt tjtjd¡}Wnttfy.YdS0| ¡dS)zzt tjtjtj¡}Wnttfy0YdS0| ¡dS)z>Check whether AF_BLUETOOTH sockets are supported on this host.FT)r Ú AF_BLUETOOTHÚ SOCK_STREAMÚBTPROTO_RFCOMMrrrrrrrÚ_have_socket_bluetooths r1c cs8t ¡}zt |¡dVWt |¡n t |¡0dS©N)r ÚgetdefaulttimeoutÚsetdefaulttimeout)ÚtimeoutZ old_timeoutrrrÚsocket_setdefaulttimeoutŽs  r6ÚIPPROTO_UDPLITEÚic@seZdZdd„Zdd„ZdS)Ú SocketTCPTestcCs.t tjtj¡|_t |j¡|_|j ¡dSr2)r ÚAF_INETr/ÚservrÚ bind_portÚportÚlisten©ÚselfrrrÚsetUp¯szSocketTCPTest.setUpcCs|j ¡d|_dSr2©r;rr?rrrÚtearDown´s zSocketTCPTest.tearDownN©Ú__name__Ú __module__Ú __qualname__rArCrrrrr9­sr9c@seZdZdd„Zdd„ZdS)Ú SocketUDPTestcCs$t tjtj¡|_t |j¡|_dSr2)r r:r r;rr<r=r?rrrrAºszSocketUDPTest.setUpcCs|j ¡d|_dSr2rBr?rrrrC¾s zSocketUDPTest.tearDownNrDrrrrrH¸srHc@seZdZdd„ZdS)ÚSocketUDPLITETestcCs(t tjtjtj¡|_t |j¡|_dSr2)r r:r r7r;rr<r=r?rrrrAÄszSocketUDPLITETest.setUpN)rErFrGrArrrrrIÂsrIcs8eZdZdZ‡fdd„Z‡fdd„Z‡fdd„Z‡ZS)ÚThreadSafeCleanupTestCasez¥Subclass of unittest.TestCase with thread-safe cleanup methods. This subclass protects the addCleanup() and doCleanups() methods with a recursive lock. cs tƒj|i|¤Žt ¡|_dSr2)ÚsuperÚ__init__Ú threadingÚRLockÚ _cleanup_lock©r@ÚargsÚkwargs©Ú __class__rrrLÏsz"ThreadSafeCleanupTestCase.__init__cs<|j"tƒj|i|¤ŽWdƒS1s.0YdSr2)rOrKÚ addCleanuprPrSrrrUÓsz$ThreadSafeCleanupTestCase.addCleanupcs<|j"tƒj|i|¤ŽWdƒS1s.0YdSr2)rOrKÚ doCleanupsrPrSrrrV×sz$ThreadSafeCleanupTestCase.doCleanups)rErFrGÚ__doc__rLrUrVÚ __classcell__rrrSrrJÈs  rJc@sHeZdZdZdZdZdZe e¡Z dZ e de e ¡d7Z dd „Z d S) Ú SocketCANTestz¾To 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 Úvcan0é€z=IB3x8sz@3I4l2IÚxécCs`t tjtjtj¡|_| |jj¡z|j |jf¡Wn"t yZ|  d|j¡Yn0dS©Nú%network interface `%s` does not exist) r rrrrrUrÚbindÚ interfacerÚskipTestr?rrrrAs ÿzSocketCANTest.setUpN) rErFrGrWraÚbufsizeÚ can_frame_fmtrÚcalcsizeZcan_frame_sizeÚbcm_cmd_msg_fmtrArrrrrYÛs  rYc@seZdZdZdZdd„ZdS)Ú SocketRDSTestz\To be able to run this test, the `rds` kernel module must be loaded: # modprobe rds é cCsVt tjtjd¡|_| |jj¡zt |j¡|_Wnt yP|  d¡Yn0dS)Nrzunable to bind RDS socket) r r%r&r;rUrrr<r=rrbr?rrrrAs  zSocketRDSTest.setUpN)rErFrGrWrcrArrrrrgsrgc@sHeZdZdZdd„Zdd„Zdd„Zdd „Zd d „Zd d „Z dd„Z dS)ÚThreadableTesta™Threadable 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(). cCs$|j|_|j|_|j|_|j|_dSr2)rAÚ_ThreadableTest__setUprCÚ_ThreadableTest__tearDownÚ_setUpÚ _tearDownr?rrrrLDszThreadableTest.__init__cCs|j ¡dS)zÿThis 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_readyÚsetr?rrrÚserverExplicitReadyKsz"ThreadableTest.serverExplicitReadycCsÒt ¡|_|j ¡t ¡|_t ¡|_t ¡|_t   d¡|_ d|_ |  ¡}|  d¡}||dd…}t|d|ƒ}t |j|f¡|_z0z | ¡Wnd|_ ‚Yn0W|j ¡n |j ¡0|j ¡dS)NéFÚ.Ú_T)rZwait_threads_exitÚ wait_threadsÚ __enter__rMÚEventrnÚ client_readyÚdoneÚqueueÚQueueÚserver_crashedÚidÚrfindÚgetattrÚthreadÚstart_new_threadÚ clientRunZ client_threadrjroÚwait)r@Z methodnamer8Z test_methodrrrrlRs*       ÿ  zThreadableTest._setUpcCs>| ¡|j ¡|j ddd¡|j ¡r:|j ¡}|‚dSr2)rkrxr‚rtÚ__exit__ryÚqsizeÚget©r@Úexcrrrrmms    zThreadableTest._tearDownc Csö|j ¡zbz | ¡WnFty^}z.|j |¡| ¡WYd}~W|j ¡dSd}~00W|j ¡n |j ¡0|j rŒ| ¡dSt |dƒsžt dƒ‚zHz |ƒWn0tyÚ}z|j |¡WYd}~n d}~00W| ¡n | ¡0dS)NÚ__call__z%test_func must be a callable function) rnr‚Ú clientSetUpÚ BaseExceptionryÚputÚclientTearDownrwror{r Ú TypeError)r@Z test_funcÚerrrrvs(     þ  $zThreadableTest.clientRuncCs tdƒ‚dS)Nz clientSetUp must be implemented.)ÚNotImplementedErrorr?rrrr‰ŒszThreadableTest.clientSetUpcCs|j ¡t ¡dSr2)rxrorÚexitr?rrrrŒs zThreadableTest.clientTearDownN) rErFrGrWrLrprlrmrr‰rŒrrrrris% ric@s&eZdZd dd„Zdd„Zdd„ZdS) ÚThreadedTCPSocketTestÚrunTestcCstj||dt |¡dS©N)Ú methodName©r9rLri©r@r”rrrrL•szThreadedTCPSocketTest.__init__cCst tjtj¡|_dSr2)r r:r/Úclir?rrrr‰™sz!ThreadedTCPSocketTest.clientSetUpcCs|j ¡d|_t |¡dSr2©r—rrirŒr?rrrrŒœs z$ThreadedTCPSocketTest.clientTearDownN)r’©rErFrGrLr‰rŒrrrrr‘“s r‘c@s&eZdZd dd„Zdd„Zdd„ZdS) ÚThreadedUDPSocketTestr’cCstj||dt |¡dSr“)rHrLrir–rrrrL£szThreadedUDPSocketTest.__init__cCst tjtj¡|_dSr2)r r:r r—r?rrrr‰§sz!ThreadedUDPSocketTest.clientSetUpcCs|j ¡d|_t |¡dSr2r˜r?rrrrŒªs z$ThreadedUDPSocketTest.clientTearDownN)r’r™rrrrrš¡s ršz'UDPLITE sockets required for this test.c@s&eZdZd dd„Zdd„Zdd„ZdS) ÚThreadedUDPLITESocketTestr’cCstj||dt |¡dSr“)rIrLrir–rrrrL³sz"ThreadedUDPLITESocketTest.__init__cCst tjtjtj¡|_dSr2)r r:r r7r—r?rrrr‰·sz%ThreadedUDPLITESocketTest.clientSetUpcCs|j ¡d|_t |¡dSr2r˜r?rrrrŒºs z(ThreadedUDPLITESocketTest.clientTearDownN)r’r™rrrrr›¯s r›c@s&eZdZd dd„Zdd„Zdd„ZdS) ÚThreadedCANSocketTestr’cCstj||dt |¡dSr“)rYrLrir–rrrrLÁszThreadedCANSocketTest.__init__cCsBt tjtjtj¡|_z|j |jf¡Wnty<Yn0dSr2)r rrrr—r`rarr?rrrr‰Ås  z!ThreadedCANSocketTest.clientSetUpcCs|j ¡d|_t |¡dSr2r˜r?rrrrŒÎs z$ThreadedCANSocketTest.clientTearDownN)r’r™rrrrrœ¿s  rœc@s&eZdZd dd„Zdd„Zdd„ZdS) ÚThreadedRDSSocketTestr’cCstj||dt |¡dSr“)rgrLrir–rrrrLÕszThreadedRDSSocketTest.__init__cCsLt tjtjd¡|_z |j tdf¡|j ¡|_WntyFYn0dS©Nr) r r%r&r—r`ÚHOSTÚ getsocknameÚcli_addrrr?rrrr‰Ùs  z!ThreadedRDSSocketTest.clientSetUpcCs|j ¡d|_t |¡dSr2r˜r?rrrrŒäs z$ThreadedRDSSocketTest.clientTearDownN)r’r™rrrrrÓs  rú need fcntlz%VSOCK sockets required for this test.éz-This test can only be run on a virtual guest.c@s6eZdZd dd„Zdd„Zdd„Zdd „Zd d „Zd S)ÚThreadedVSOCKSocketStreamTestr’cCstjj||dt |¡dSr“©ÚunittestÚTestCaserLrir–rrrrLðsz&ThreadedVSOCKSocketStreamTest.__init__cCsht tjtj¡|_| |jj¡|j tjtf¡|j  ¡|  ¡|j  ¡\|_ |_ | |j j¡dSr2)r ÚAF_VSOCKr/r;rUrr`ÚVMADDR_CID_ANYÚ VSOCKPORTr>rpÚacceptÚconnÚconnaddrr?rrrrAôs z#ThreadedVSOCKSocketStreamTest.setUpcCsDt d¡t tjtj¡|_| |jj¡tƒ}|j  |t f¡dS)Nçš™™™™™¹?) ÚtimeÚsleepr r¨r/r—rUrrÚconnectrª)r@Zcidrrrr‰ýs  z)ThreadedVSOCKSocketStreamTest.clientSetUpcCs|j d¡}| |t¡dS©Né)r¬ÚrecvÚ assertEqualÚMSG©r@ÚmsgrrrÚ testStreams z(ThreadedVSOCKSocketStreamTest.testStreamcCs|j t¡|j ¡dSr2©r—Úsendr¶rr?rrrÚ _testStreams z)ThreadedVSOCKSocketStreamTest._testStreamN)r’©rErFrGrLrAr‰r¹r¼rrrrr¤és   r¤c@s:eZdZdZddd„Zdd„Zdd„Zd d „Zd d „Zd S)ÚSocketConnectedTestzµSocket 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. r’cCstj||ddSr“)r‘rLr–rrrrLszSocketConnectedTest.__init__cCs*t |¡| ¡|j ¡\}}||_dSr2)r‘rArpr;r«Úcli_conn©r@r¬ÚaddrrrrrAs zSocketConnectedTest.setUpcCs|j ¡d|_t |¡dSr2)r¿rr‘rCr?rrrrCs zSocketConnectedTest.tearDowncCs(t |¡|j t|jf¡|j|_dSr2)r‘r‰r—r±rŸr=Ú serv_connr?rrrr‰#s zSocketConnectedTest.clientSetUpcCs|j ¡d|_t |¡dSr2)rÂrr‘rŒr?rrrrŒ(s z"SocketConnectedTest.clientTearDownN)r’) rErFrGrWrLrArCr‰rŒrrrrr¾ s  r¾c@s6eZdZd dd„Zdd„Zdd„Zdd „Zd d „Zd S)ÚSocketPairTestr’cCstjj||dt |¡dSr“r¥r–rrrrL/szSocketPairTest.__init__cCst ¡\|_|_dSr2)r Ú socketpairr;r—r?rrrrA3szSocketPairTest.setUpcCs|j ¡d|_dSr2rBr?rrrrC6s zSocketPairTest.tearDowncCsdSr2rr?rrrr‰:szSocketPairTest.clientSetUpcCs|j ¡d|_t |¡dSr2r˜r?rrrrŒ=s zSocketPairTest.clientTearDownN)r’)rErFrGrLrArCr‰rŒrrrrrÃ-s  rÃc@s(eZdZdZdd„Zdd„Zdd„ZdS) ÚSocketTestBasezëA 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. cCs| ¡|_| ¡dSr2)Ú newSocketr;Ú bindServerr?rrrrARs zSocketTestBase.setUpcCs| |j¡|j ¡|_dS)z9Bind server socket and set self.serv_addr to its address.N)ÚbindSockr;r Ú serv_addrr?rrrrÇVs zSocketTestBase.bindServercCs|j ¡d|_dSr2rBr?rrrrC[s zSocketTestBase.tearDownN)rErFrGrWrArÇrCrrrrrÅIsrÅcs eZdZdZ‡fdd„Z‡ZS)ÚSocketListeningTestMixinz%Mixin to listen on the server socket.cstƒ ¡|j ¡dSr2)rKrAr;r>r?rSrrrAcs zSocketListeningTestMixin.setUp)rErFrGrWrArXrrrSrrÊ`srÊcs@eZdZdZ‡fdd„Zdd„Zdd„Zdd „Zd d „Z‡Z S) ÚThreadedSocketTestMixinz®Mixin 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. cs tƒj|i|¤Žt |¡dSr2)rKrLrirPrSrrrLpsz ThreadedSocketTestMixin.__init__cCs| ¡|_| ¡dSr2)ÚnewClientSocketr—Ú bindClientr?rrrr‰ts z#ThreadedSocketTestMixin.clientSetUpcCs| ¡S)z&Return a new socket for use as client.)rÆr?rrrrÌxsz'ThreadedSocketTestMixin.newClientSocketcCs| |j¡|j ¡|_dS)z8Bind client socket and set self.cli_addr to its address.N)rÈr—r r¡r?rrrrÍ|s z"ThreadedSocketTestMixin.bindClientcCs|j ¡d|_t |¡dSr2r˜r?rrrrŒs z&ThreadedSocketTestMixin.clientTearDown) rErFrGrWrLr‰rÌrÍrŒrXrrrSrrËhs  rËcsDeZdZdZ‡fdd„Z‡fdd„Z‡fdd„Z‡fdd „Z‡ZS) ÚConnectedStreamTestMixinzëMixin 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.) cs*tƒ ¡| ¡|j ¡\}}||_dSr2)rKrArpr;r«r¿rÀrSrrrAs zConnectedStreamTestMixin.setUpcs|j ¡d|_tƒ ¡dSr2)r¿rrKrCr?rSrrrC˜s z!ConnectedStreamTestMixin.tearDowncs$tƒ ¡|j |j¡|j|_dSr2)rKr‰r—r±rÉrÂr?rSrrr‰s z$ConnectedStreamTestMixin.clientSetUpcs6z|j ¡d|_Wnty&Yn0tƒ ¡dSr2)rÂrrrKrŒr?rSrrrŒ¢s    z'ConnectedStreamTestMixin.clientTearDown) rErFrGrWrArCr‰rŒrXrrrSrr·s    rÎcs(eZdZdZ‡fdd„Zdd„Z‡ZS)ÚUnixSocketTestBasez(Base class for Unix-domain socket tests.cs(t ¡|_| tj|j¡tƒ ¡dSr2)ÚtempfileÚmkdtempÚdir_pathrUÚosÚrmdirrKrAr?rSrrrA³s zUnixSocketTestBase.setUpcCs,tj|jd}t ||¡| tj|¡dS)N)Údir)rÐÚmktemprÒrÚbind_unix_socketrUrÚunlink)r@ÚsockÚpathrrrrȸs zUnixSocketTestBase.bindSock)rErFrGrWrArÈrXrrrSrrÏ«s rÏc@seZdZdZdd„ZdS)ÚUnixStreamBasez-Base class for Unix-domain SOCK_STREAM tests.cCst tjtj¡Sr2)r ÚAF_UNIXr/r?rrrrÆÀszUnixStreamBase.newSocketN©rErFrGrWrÆrrrrrÛ½srÛcs,eZdZdZeZ‡fdd„Zdd„Z‡ZS)Ú InetTestBasez!Base class for IPv4 socket tests.cstƒ ¡|jd|_dS©Nrq)rKrArÉr=r?rSrrrAÉs zInetTestBase.setUpcCstj||jddS)N©Úhost)rr<rá©r@rÙrrrrÈÍszInetTestBase.bindSock) rErFrGrWrŸrárArÈrXrrrSrrÞÄs rÞc@seZdZdZdd„ZdS)Ú TCPTestBasez#Base class for TCP-over-IPv4 tests.cCst tjtj¡Sr2)r r:r/r?rrrrÆÓszTCPTestBase.newSocketNrÝrrrrrãÐsrãc@seZdZdZdd„ZdS)Ú UDPTestBasez#Base class for UDP-over-IPv4 tests.cCst tjtj¡Sr2)r r:r r?rrrrÆÙszUDPTestBase.newSocketNrÝrrrrräÖsräc@seZdZdZdd„ZdS)ÚUDPLITETestBasez'Base class for UDPLITE-over-IPv4 tests.cCst tjtjtj¡Sr2)r r:r r7r?rrrrÆßszUDPLITETestBase.newSocketNrÝrrrrråÜsråc@seZdZdZdd„ZdS)ÚSCTPStreamBasez;Base class for SCTP tests in one-to-one (SOCK_STREAM) mode.cCst tjtjtj¡Sr2)r r:r/Ú IPPROTO_SCTPr?rrrrÆås ÿzSCTPStreamBase.newSocketNrÝrrrrræâsræc@seZdZdZejZdS)Ú Inet6TestBasez!Base class for IPv6 socket tests.N)rErFrGrWrÚHOSTv6rárrrrrèêsrèc@seZdZdZdd„ZdS)Ú UDP6TestBasez#Base class for UDP-over-IPv6 tests.cCst tjtj¡Sr2)r ÚAF_INET6r r?rrrrÆòszUDP6TestBase.newSocketNrÝrrrrrêïsrêc@seZdZdZdd„ZdS)ÚUDPLITE6TestBasez'Base class for UDPLITE-over-IPv6 tests.cCst tjtjtj¡Sr2)r rër r7r?rrrrÆøszUDPLITE6TestBase.newSocketNrÝrrrrrìõsrìcs*dd„‰‡‡fdd„}dd„}|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. c_sdSr2r©rQrRrrrÚ client_passsz%skipWithClientIf..client_passcs*t ˆ¡|ƒ}t|tƒs&‡fdd„|_|S)NcsˆSr2r©r)rîrrÚ óz3skipWithClientIf..skipdec..)r¦ÚskipÚ isinstanceÚtypeÚ client_skip)ÚobjZretval©rîÚreasonrrÚskipdec s z!skipWithClientIf..skipdeccSs"t|tƒst|dƒsdd„|_|S)NrõcSs|Sr2rrïrrrrðrñz5skipWithClientIf..noskipdec..)rórôr rõ©rörrrÚ noskipdecs z#skipWithClientIf..noskipdecr)Z conditionrørùrûrr÷rÚskipWithClientIfþs rücs0‡fdd„|Dƒ}t|dd dd„|Dƒ¡ƒS)zƒSkip decorated test if obj is missing any of the given attributes. Sets client_skip attribute as skipWithClientIf() does. csg|]}tˆ|ƒs|‘qSr)r ©Ú.0ÚnamerúrrÚ rñz requireAttrs..ú don't have ú, css|] }|VqdSr2rrýrrrÚ rñzrequireAttrs..)rüÚjoin)röZ attributesÚmissingrrúrÚ requireAttrssÿrc Gs¨d}dd„|Dƒ}|r0dd dd„|Dƒ¡}nRdd„|Dƒ}ztj|Ž}Wn,tyx}zt|ƒ}WYd}~nd}~00| ¡t|dud  d d d„|Dƒ¡|¡ƒS) aSkip decorated test if a socket cannot be created with given arguments. When an argument is given as a string, will use the value of that attribute of the socket module, or skip the test if it doesn't exist. Sets client_skip attribute as skipWithClientIf() does. NcSs$g|]}t|tƒrtt|ƒs|‘qSr)róÚstrr r ©rþrörrrr'sÿz!requireSocket..rrcss|] }|VqdSr2rrýrrrr*rñz requireSocket..cSs$g|]}t|tƒrtt|ƒn|‘qSr)rórr~r rrrrr,sÿzcan't create socket({0}): {1}css|]}t|ƒVqdSr2)r©rþÚorrrr8rñ)rr rrrrüÚformat)rQÚerrrZcallargsrrŽrrrÚ requireSockets$ÿÿþr c@speZdZdd„Zdd„Ze edud¡dd„ƒZd d „Z d d „Z d d„Z dd„Z dd„Z e ejdkd¡dd„ƒZe ejdkd¡e ejd¡dd„ƒƒZdd„Zdd„Zd d!„Ze eed"ƒd#¡e eed$ƒd%¡d&d'„ƒƒZe eed(ƒd)¡d*d+„ƒZe eed,ƒd-¡d.d/„ƒZe eed0ƒd1¡d2d3„ƒZe eed4ƒd5¡d6d7„ƒZd8d9„Z d:d;„Z!e"j#dd?„Z%d@dA„Z&e eedBƒdC¡dDdE„ƒZ'e eedFƒdG¡dHdI„ƒZ(e eedFƒdG¡dJdK„ƒZ)e eedLƒdM¡dNdO„ƒZ*e eedLƒdM¡dPdQ„ƒZ+dRdS„Z,dTdU„Z-dVdW„Z.dXdY„Z/dZd[„Z0d\d]„Z1d^d_„Z2e ejdkd¡d`da„ƒZ3e ejdkd¡e eedbƒdc¡ddde„ƒƒZ4dfdg„Z5dhdi„Z6e e" 7dj¡dk¡dldm„ƒZ8dndo„Z9dpdq„Z:drds„Z;dtdu„Zdzd{„Z?d|d}„Z@d~d„ZAd€d„ZBd‚dƒ„ZCe"j#d„d…„ƒZDe ejd†¡d‡dˆ„ƒZEe ejd†¡d‰dŠ„ƒZFe ejd†¡e Gejd‹kdŒ¡e GeHd¡dŽd„ƒƒƒZIe ejd†¡e ejd‹kd¡d‘d’„ƒƒZJe ejd†¡e Gejd‹kdŒ¡e GeHd¡d“d”„ƒƒƒZKe ejd†¡e ejd‹kd¡d•d–„ƒƒZLd—d˜„ZMd™dš„ZNd›dœ„ZOe eedƒdž¡dŸd „ƒZPd¡d¢„ZQd£d¤„ZRd¥d¦„ZSd§d¨„ZTd©dª„ZUe Gejdkd«¡d¬d­„ƒZVd®d¯„ZWd°d±„ZXdS)²ÚGeneralModuleTestscCs<ddl}| tj|ju¡t ¡}| |tj¡| ¡dSrž)Ú_socketÚ assertTruer Ú SocketTypeÚassertIsInstancer)r@rrrrrÚtest_SocketType_is_socketobject@s z2GeneralModuleTests.test_SocketType_is_socketobjectcCsît tjtj¡}|¦| d| ¡t|ƒ¡| dtjt|ƒ¡| dtjt|ƒ¡| dt|ƒ¡| dt|ƒ¡| d¡| dt|ƒ¡| t|  ¡ƒt|ƒ¡Wdƒn1sÀ0Y| dt|ƒ¡| dt|ƒ¡dS) Nzfd=%iz family=%sztype=%szproto=0Úraddr©ú 127.0.0.1rÚladdrz[closed]) r r:r/ÚassertInÚfilenoÚreprÚ assertNotInr`rr ©r@rrrrÚ test_reprGs 6zGeneralModuleTests.test_reprNzneed _socket modulecCszt tjtj¡}z6d| ¡|j|j|jf}| t |ƒ|¡W|  ¡n |  ¡0d|j|j|jf}| t |ƒ|¡dS)Nz4z4) rr r:r/rÚfamilyrôÚprotorµrr)r@rÚexpectedrrrÚtest_csocket_reprUsÿÿz$GeneralModuleTests.test_csocket_reprcCs~t tjtj¡,}t|ƒ}| | ¡| ¡¡Wdƒn1sB0Yd}z | ¡WntynYn 0| d¡dS)NzSocket proxy still exists)r r:r/rrµrÚReferenceErrorÚfail)r@rÚprrrÚ test_weakrefbs2  zGeneralModuleTests.test_weakrefcCs®d}|jt|ddt‚Wdƒn1s00Y|jt|ddtj‚Wdƒn1sh0Y|jt|ddtj‚Wdƒn1s 0YdS)Nz$Error raising socket exception (%s).r©r¸z socket.herrorzsocket.gaierror)Ú assertRaisesrr ÚherrorÚgaierrorr·rrrÚtestSocketErrorns"$z"GeneralModuleTests.testSocketErrorcCst tjtj¡}| |j¡| d¡| ¡}| t¡}|  d|¡Wdƒn1sZ0Y|  t |j ƒd¡| t¡}|  d|¡Wdƒn1s¢0Y|  t |j ƒd¡| t¡}|  dd¡Wdƒn1sê0Y|  dt |j ƒ¡| t¡}|  dd|¡Wdƒn1s60Y|  t |j ƒd¡| t¡}|  dd|¡Wdƒn1s‚0Y|  t |j ƒd¡| t¡}|  ddd¡Wdƒn1sÎ0Y|  dt |j ƒ¡| t¡}|  dd |¡Wdƒn1s0Y|  d t |j ƒ¡| t¡}|  ddd¡Wdƒn1sf0Y|  d t |j ƒ¡| t¡}|  d¡Wdƒn1s®0Y|  d t |j ƒ¡| t¡ }|  dd|d ¡Wdƒn1sü0Y|  d t |j ƒ¡dS)N)Úru☠z*a bytes-like object is required, not 'str'y@z.a bytes-like object is required, not 'complex'ófooz not NoneTyperÚbarzan integer is requiredz (1 given)éz (4 given))r r:r rUrr`r r'rÚsendtorµrÚ exceptionr)r@rZsocknameÚcmrrrÚtestSendtoErrorsxsT   * ÿ * ÿ * . ÿ . ÿ . . . * 0z#GeneralModuleTests.testSendtoErrorscCs@tjtjrtjtjtjtjtjtjtj tj dSr2) r r:Úhas_ipv6rër/r rÚSOCK_RDMr&Ú SOL_SOCKETÚ SO_REUSEADDRr?rrrÚtestCrucialConstants¤sz'GeneralModuleTests.testCrucialConstantscCstjtjtjrtjdSr2)r Ú IPPROTO_TCPÚ IPPROTO_UDPr3Ú IPPROTO_IPV6r?rrrÚtestCrucialIpProtoConstants±sz.GeneralModuleTests.testCrucialIpProtoConstantsÚntúWindows specificcCs4tjtjtjtjtjtjtjtjdSr2) r ZIPPROTO_ICLFXBMZ IPPROTO_STZ IPPROTO_CBTZ IPPROTO_IGPZ IPPROTO_RDPZ IPPROTO_PGMZ IPPROTO_L2TPrçr?rrrÚtestWindowsSpecificConstants·sz/GeneralModuleTests.testWindowsSpecificConstantsÚdarwinzmacOS specific testúIPv6 required for this testcCs0hd£}|D]}| tt|ƒd|›d¡q dS)N>Ú IPV6_PKTINFOÚIPV6_RECVTCLASSÚ IPV6_TCLASSÚIPV6_RECVRTHDRÚIPV6_RECVHOPOPTSÚIPV6_RECVHOPLIMITZIPV6_USE_MIN_MTUÚ IPV6_HOPOPTSÚ IPV6_RTHDRÚ IPV6_NEXTHOPÚIPV6_RECVPKTINFOÚ IPV6_CHECKSUMÚIPV6_RTHDRDSTOPTSZ IPV6_PATHMTUZIPV6_RECVPATHMTUÚIPV6_RTHDR_TYPE_0Z IPV6_DONTFRAGÚ IPV6_HOPLIMITÚ IPV6_DSTOPTSÚIPV6_RECVDSTOPTSzMissing RFC3542 socket option 'ú')rr r )r@ZoptsÚoptrrrÚtest3542SocketOptionsÂs ÿz(GeneralModuleTests.test3542SocketOptionscCs´t ¡}zt |¡}Wnty2| d¡Yn0| | d¡dkd¡zt |¡\}}}Wntyz| d¡Yn0||g|}t |¡}||vr°|  d|t |ƒf¡dS)Núname lookup failurerrrzError resolving host to ip.z=Error testing host resolution mechanisms. (fqdn: %s, all: %s)) r Ú gethostnameÚ gethostbynamerrbrÚfindÚ gethostbyaddrÚgetfqdnr#r)r@ÚhostnameZipZhnameÚaliasesÚipaddrsZall_host_namesZfqhnrrrÚtestHostnameResás    z"GeneralModuleTests.testHostnameRescCsLtjddfD]}| t |¡|¡q tjfD]}| |t |¡d¡q,dS)Nz10.0.0.1ú255.255.255.255r£)rZHOSTv4rµr rVrrX)r@rÁrárrrÚtest_host_resolutionôs z'GeneralModuleTests.test_host_resolutionc Cs‚d}dD]t}|jt|dt |¡Wdƒn1s:0Y|jt|dt |¡Wdƒq1sr0YqdS)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&)r'rr rVrX)r@Z explanationrÁrrrÚ test_host_resolution_bad_addressýsÿ(z3GeneralModuleTests.test_host_resolution_bad_addressÚ sethostnameztest needs socket.sethostname()rUztest needs socket.gethostname()c Cs t ¡}zt d¡Wn>tyT}z&|jtjkr>| d¡n‚WYd}~n d}~00z8| t ¡d¡t d¡| t ¡d¡Wt |¡n t |¡0dS)NÚnewztest should be run as rootsbarr-)r rUrarÚerrnoÚEPERMrbrµ)r@ZoldhnrŽrrrÚtest_sethostname s   z#GeneralModuleTests.test_sethostnameÚ if_nameindexz$socket.if_nameindex() not available.cCs‚t ¡}|D]p\}}| |t¡| |t¡| |d¡t |¡}| |t¡| ||¡t |¡}| |t¡| ||¡q dSrž) r rfrÚintrÚ assertGreaterÚif_nametoindexrµÚif_indextoname)r@Z interfacesÚindexrÿZ_indexÚ_namerrrÚtestInterfaceNameIndex s         z)GeneralModuleTests.testInterfaceNameIndexrjz&socket.if_indextoname() not available.cCs$| ttjd¡| ttjd¡dS©NrZ _DEADBEEF)r'rr rjrr?rrrÚtestInvalidInterfaceIndexToName0sz2GeneralModuleTests.testInvalidInterfaceIndexToNameriz&socket.if_nametoindex() not available.cCs$| ttjd¡| ttjd¡dSrn)r'rr rirr?rrrÚtestInvalidInterfaceNameToIndex6sz2GeneralModuleTests.testInvalidInterfaceNameToIndexÚ getrefcountztest needs sys.getrefcount()cCsJzt t¡}t td¡Wn*tyDt t¡|kr@| d¡Yn0dS)Nrz$socket.getnameinfo loses a reference)ÚsysrqrEr Ú getnameinforr#)r@ÚorigrrrÚtestRefCountGetNameInfo<s   z*GeneralModuleTests.testRefCountGetNameInfocCs(zt dd¡Wnty"Yn0dS)N)r\rrrr)r rsrr?rrrÚtestInterpreterCrashHs z'GeneralModuleTests.testInterpreterCrashc CsŽtjdtjdtjdtjdi}| ¡D]d\}}d|>d}dD]$}| ||@||||@ƒƒ|@¡q<||ƒ}| ||@|¡| t|d¡q$dS)Né érq)rrqéÿÿiÿÿr£igE#i2Tvl) r ÚhtonlÚntohlÚhtonsÚntohsÚitemsrµr'Ú OverflowError)r@ZsizesÚfuncÚsizeÚmaskr8ZswappedrrrÚtestNtoHPs  ÿ "zGeneralModuleTests.testNtoHcCs ddl}gd¢}|dg}ddddd>g}||jd|jdg}d |jg}|D]}t |¡t |¡qP|D]}t |¡t |¡qn|D]$}| t tj|¡| t tj|¡qŒ|D]$}| t tj|¡| t tj|¡q¶|D]$}|  t tj|¡|  t tj|¡qàdS) Nr)rrqr£ryìÿÿéÿÿÿÿéþÿÿÿlrqéèé) Ú _testcapiZINT_MINÚINT_MAXr r}r|r{rzr'rÚ assertWarnsÚDeprecationWarning)r@r‰Z s_good_valuesZ l_good_valuesZ l_bad_valuesZ s_bad_valuesZs_deprecated_valuesÚkrrrÚtestNtoHErrors^s.  ÿ     z!GeneralModuleTests.testNtoHErrorsc Cs |j}tj d¡stjdvr"d}nd}|D].}zt |d¡}Wq^Wq*tyVYq*0q*t‚ttdƒrtt ¡dkrˆt |¡}|||ƒzt |d¡}Wnty®d}Yn 0|||ƒt j sÐ|t  |¡|ƒ|t  |d¡|ƒ|durü|t  |d¡|ƒ|  t tj d ¡|  t tj d ¡dS) N)ÚfreebsdZnetbsdZ gnukfreebsd)Úlinuxr?)ÚdaytimeZqotdÚdomain)Zechor‘r’ZtcpÚgetandroidapileveléZudpr…rˆ)rµrrÚplatformÚ startswithr Ú getservbynamerr r“rZ is_androidÚ getservbyportr'r)r@ÚeqZservicesZservicer=Zport2ZudpportrrrÚ testGetServByws< ÿ     ÿ     z GeneralModuleTests.testGetServByc Cs0| t ¡d¡t ¡ }| | ¡d¡Wdƒn1s>0Ytdƒª| t ¡d¡t ¡ }| | ¡d¡Wdƒn1s0Yt d¡| t ¡d¡t ¡ }| | ¡d¡Wdƒn1sâ0YWdƒn1s0Y| ttjd¡| ttjd¡dS)Né r…Zspam) rµr r3Ú gettimeoutr6r4r'Ú ValueErrorr)r@rrÙrrrÚtestDefaultTimeout£s .  .  Nz%GeneralModuleTests.testDefaultTimeoutÚ inet_atonztest needs socket.inet_aton()cCs(| dt d¡¡| dt d¡¡dS)Nóú0.0.0.0óÿÿÿÿr^)rµr rŸr?rrrÚtestIPv4_inet_aton_fourbytes¼sz/GeneralModuleTests.testIPv4_inet_aton_fourbytesÚ inet_ptonztest needs socket.inet_pton()cs*ddlm}m‰m‰‡‡fdd„}‡fdd„}ˆ d|dƒ¡ˆ d|d ƒ¡ˆ d |d ƒ¡ˆ d |d ƒ¡ˆ d|dƒ¡tsŒ||dƒ||dƒ||dƒ||dƒ||dƒˆ d|dƒ¡ˆ d|d ƒ¡ˆ d |d ƒ¡ˆ d|dƒ¡||dƒ||dƒ||dƒ||dƒ||dƒdS)Nr)rŸr¤r:cs ˆˆ|ƒSr2r©Úa)r:r¤rrrðÈrñz5GeneralModuleTests.testIPv4toString..csˆ ttf||¡Sr2©r'rr©r€r¦r?rrrðÊs ÿr r¡sÿÿz 255.0.255.0sªªªªz170.170.170.170óú1.2.3.4r¢r^z0.0.0.z 300.0.0.0za.0.0.0z 1.2.3.4.5ú::1)r rŸr¤r:rµr©r@rÚgÚ assertInvalidr)r:r¤r@rÚtestIPv4toStringÄs.          z#GeneralModuleTests.testIPv4toStringc sÄz&ddlm‰m‰m}|s$ˆ d¡WntyBˆ d¡Yn0tjdkr–zˆˆdƒWn8ty”}z |j dkr€ˆ d¡WYd}~n d}~00‡‡fd d „‰‡‡fd d „}ˆ  d ˆdƒ¡ˆ  d ˆd ƒ¡ˆ  dˆdƒ¡ˆ  dˆdƒ¡ˆ  dˆdƒ¡ˆ  dˆdƒ¡|dƒ|dƒ|dƒ|dƒ|dƒ|dƒ|dƒ|dƒt s`|dƒˆ  dˆd ƒ¡ˆ  d!ˆd"ƒ¡ˆ  d#ˆd$ƒ¡|d%ƒ|d&ƒ|d'ƒ|d(ƒ|d)ƒ|d*ƒdS)+Nr)r¤rër3úIPv6 not availableú+could not import needed symbols from socketÚwin32ú::é&'úIPv6 might not be supportedcs ˆˆ|ƒSr2rr¥)rër¤rrrðörñz5GeneralModuleTests.testIPv6toString..csˆ ttfˆ|¡Sr2r§r¥©rr@rrrð÷s ÿóz0::0sz1::sEïvËVï¯ë ¬$®®z$45ef:76cb:1a:56ef:afeb:bac:1924:aeaes­B ¼'Tzad42:abc::127:0:254:2s z12:a::z0x20::z:::z::0::z1::abc::z 1::abc::defz 1: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.0z 1::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) r r¤rër3rbÚ ImportErrorrrr•rÚwinerrorrµr©r@r3rŽr®r)rërr¤r@rÚtestIPv6toStringåsj    þþÿþþz#GeneralModuleTests.testIPv6toStringÚ inet_ntopztest needs socket.inet_ntop()csddlm}m‰m‰‡‡fdd„}‡fdd„}ˆ d|dƒ¡ˆ d|d ƒ¡ˆ d |d ƒ¡ˆ d |d ƒ¡||dƒ||dƒ||dƒˆ d|td ƒƒ¡ˆ d|dƒ¡ˆ d|d ƒ¡ˆ d |d ƒ¡||dƒ||dƒ||dƒˆ d|td ƒƒ¡dS)Nr)Ú inet_ntoar¼r:cs ˆˆ|ƒSr2rr¥)r:r¼rrrð)rñz5GeneralModuleTests.testStringToIPv4..csˆ ttf||¡Sr2r§r¨r?rrrð*s ÿz1.0.1.0sz 170.85.170.85sªUªUr^r¢rªr©ssr·)r r½r¼r:rµÚ bytearrayr¬r)r:r¼r@rÚtestStringToIPv4%s$       z#GeneralModuleTests.testStringToIPv4c sz&ddlm‰m‰m}|s$ˆ d¡WntyBˆ d¡Yn0tjdkr–zˆˆdƒWn8ty”}z |j dkr€ˆ d¡WYd}~n d}~00‡‡fd d „‰‡‡fd d „}ˆ  d ˆdƒ¡ˆ  d ˆdƒ¡ˆ  dˆdƒ¡ˆ  d ˆt dƒƒ¡|dƒ|dƒ|dƒdS)Nr)r¼rër3r°r±r²r·r´rµcs ˆˆ|ƒSr2rr¥)rër¼rrrðPrñz5GeneralModuleTests.testStringToIPv6..csˆ ttfˆ|¡Sr2r§r¥r¶rrrðQs ÿr³r«sz!aef:b01:506:1001:ffff:9997:55:170s ï ÿÿ™—Upsss) r r¼rër3rbr¸rrr•rr¹rµr¾rºr)rërr¼r@rÚtestStringToIPv6?s0    þz#GeneralModuleTests.testStringToIPv6cCsœt ¡}t tjtj¡}| |j¡| d|f¡| ¡}zt  t  ¡¡}Wnt yh|  d¡Yn0|  |dd|fd|d¡| |d|¡dS)Nr¡rTrz %s invalidrq)rÚfind_unused_portr r:r/rUrr`r rVrUrrbrrµ)r@r=rÙrÿZ my_ip_addrrrrÚ testSockNamecs  zGeneralModuleTests.testSockNamecCs@t tjtj¡}| |j¡| tjtj¡}| |dkd¡dS)Nrzinitial mode is reuse) r r:r/rUrÚ getsockoptr5r6Ú assertFalse©r@rÙZreuserrrÚtestGetSockOptus z!GeneralModuleTests.testGetSockOptcCsRt tjtj¡}| |j¡| tjtjd¡| tjtj¡}|  |dkd¡dS)Nrqrzfailed to set reuse mode) r r:r/rUrÚ setsockoptr5r6rÃrÄrÅrrrÚtestSetSockOpt}s  z!GeneralModuleTests.testSetSockOptcCsNt tjtj¡}| d¡Wdƒn1s00Y| t|jd¡dS)Nrqóspam)r r:r/Ú settimeoutr'rr»rârrrÚtestSendAfterClose…s(z%GeneralModuleTests.testSendAfterClosec Cs‚t ¡}| tjdf¡tj| ¡d ¡z | ¡Wn:tyr}z"| |jtjtj f¡WYd}~nd}~00|  d¡dS)Nr©rz#close() should raise EBADF/ENOTSOCK) r r`Ú _LOCALHOSTrrrrrcÚEBADFÚENOTSOCKr#)r@rÙr rrrÚtestCloseException‹s ,z%GeneralModuleTests.testCloseExceptioncCsŠt tjtj¡f}| |jtj¡ttdƒrJ| |jtjtjBtjf¡n| |jtj¡| |j d¡Wdƒn1s|0YdS)NÚ SOCK_CLOEXECr) r r:r/rµrr rrôrÑrrârrrÚtestNewAttributes—s  ÿÿz$GeneralModuleTests.testNewAttributesc CsÀt ¡}| |j¡t ¡}|d}|d}| t|jt|f¡| t|jt|f¡t   ¡D]^}t ¡}z| t|f¡Wn:t y´}z"|j t j ksž|dkr ‚WYd}~q\d}~00q¼q\dS)Nrˆé)r rUrrrÁr'rr`rŸÚ itertoolsÚcountrrcZ EADDRINUSE)r@rÙr=Zbig_portZneg_portr8rŽrrrÚtest_getsockaddrarg¤s  z&GeneralModuleTests.test_getsockaddrargcCsŠ| ttjdƒ¡| ttdƒ¡| ttdƒ¡| ttdƒ¡| ttdƒ¡t ¡}| |j¡| t|jdd¡| tjd¡dS)NrZ SIO_RCVALLZ RCVALL_ONZ RCVALL_OFFÚSIO_KEEPALIVE_VALSr…)rqédrØ) rr r rUrr'rrr×rrrrÚtest_sock_ioctl¸s z"GeneralModuleTests.test_sock_ioctlÚSIO_LOOPBACK_FAST_PATHz1Loopback fast path support required for this testc Cs~t ¡}| |j¡z| tjd¡Wn>tyd}z&d}|j|krN| d¡‚WYd}~n d}~00| t |jtjd¡dS)NTi='zQSIO_LOOPBACK_FAST_PATH is defined but doesn't implemented in this Windows version) r rUrrrÚrr¹rbr'r)r@rr‡Z WSAEOPNOTSUPPrrrÚtest_sio_loopback_fast_pathÄs   z.GeneralModuleTests.test_sio_loopback_fast_pathc Cs@zt dd¡Wn>tjyN}z$|jtjkr8| d¡‚WYd}~n d}~00t td¡D]}| t|ƒd¡q\t dd¡t dd¡t dd¡t j r¨t dd¡t t dƒr¾t   ¡dkrÊt td ¡t td¡t td¡t tdtjtj¡}|D]J\}}}}}| |tj¡| t|ƒd ¡| |tj¡| t|ƒd ¡qút tdd tj¡}|D]\}}}}}| |tj¡q\t tdd d tj¡t tdd d d tj¡t dd tjtjd tj¡t td¡}tjtdd } | || ¡t tdtj¡}tjtdtjd} | || ¡t tdd tj¡}tjtdtjd} | || ¡t tdd d tj¡}tjtdtjd} | || ¡t tdd d d tj¡}tjtdtjd} | || ¡t dd tjtjd tj¡}tjdd tjtjd tjd} | || ¡| ttjdd¡t tdƒr.ok_handlercsˆ ttjd¡dddS©Nrrqrõrør?rrÚraising_handler?szEGeneralModuleTests.check_sendall_interrupted..raising_handlergø?rqóxr)r Úsignalr rbrÄÚSIGALRMrÊr'ÚZeroDivisionErrorrôÚsendallrÚ SOCK_MAX_SIZEr5r)r@Z with_timeoutrùrûÚcrÚ old_alarmrr?rÚcheck_sendall_interrupted7s4       .  ÿ  ý z,GeneralModuleTests.check_sendall_interruptedcCs| d¡dS©NF©rr?rrrÚtest_sendall_interruptedVsz+GeneralModuleTests.test_sendall_interruptedcCs| d¡dS)NTrr?rrrÚ%test_sendall_interrupted_with_timeoutYsz8GeneralModuleTests.test_sendall_interrupted_with_timeoutcCsÎt tjtj¡}t|ƒ}| t¡}d}t ¡Wdƒn1sD0Y| |t |j j dƒ¡t tjtj¡}|  d¡}t|ƒ}d}t ¡| t¡d}t ¡Wdƒn1sÀ0YdS)Nrr ) r r:r/rr‹ÚResourceWarningrÚ gc_collectrrÚwarningrQÚmakefile)r@rÙrr1rrrrÚtest_dealloc_warn\s &  z$GeneralModuleTests.test_dealloc_warncCsVt tjtj¡2}| d¡}| ¡| t|ƒd¡Wdƒn1sH0YdS)Nr z<_io.BufferedReader name=-1>)r r:r/r rrµr©r@rÙÚfprrrÚtest_name_closed_socketioms z,GeneralModuleTests.test_name_closed_socketiocCs–t ¡z}|jddd}| | ¡¡| | ¡¡| | ¡¡| ¡| t |j¡| t |j¡| t |j¡Wdƒn1sˆ0YdS)Nr r)Ú buffering) r r rÚreadablerÄÚwritableÚseekablerr'rrrrrÚtest_unusable_closed_socketioss z0GeneralModuleTests.test_unusable_closed_socketiocCs2t ¡}z†| tdf¡t | ¡¡| t¡| d¡Wdƒn1sP0YW| t¡| ¡WdƒqÄ1s„0Yn4| t¡| ¡Wdƒn1s¸0Y0| t¡t d¡Wdƒn1sî0Y| t¡t d¡Wdƒn1s$0YdS)Nrrqr…) r r`rŸrrr'rr>rrârrrÚtest_socket_close~s * (þ ( ( z$GeneralModuleTests.test_socket_closec CsšdD]}|j|dpt ¡H}| |¡}| |j|¡Wdƒn1sN0YWdƒn1sl0YWdƒq1sŠ0YqdS)N)rr ÚrwÚwÚwb©Úmode)ÚsubTestr r rµr)r@rrÙrrrrÚtest_makefile_modeŽs   z%GeneralModuleTests.test_makefile_modec Cs˜dD]Ž}|j|dnt ¡F}| td¡| |¡Wdƒn1sL0YWdƒn1sj0YWdƒq1sˆ0YqdS)N)Úrtr\ú+r¦rz invalid mode)rr ÚassertRaisesRegexrr )r@rrÙrrrÚtest_makefile_invalid_mode•s  z-GeneralModuleTests.test_makefile_invalid_modecCs®t ¡}|6ttjdƒD]}| ttj||¡qWdƒn1sH0YttjdƒD]H}t t tj|¡¡}|  |tj¡t t tj |¡¡}|  |tj ¡q`dSrß) r ÚrangeÚpickleÚHIGHEST_PROTOCOLr'rÚdumpsÚloadsr:rµr/)r@rÙÚprotocolrrôrrrÚ test_pickleœs2zGeneralModuleTests.test_picklec CsœdD]L}t tjtj¡(}| tdf¡| |¡Wdƒq1sF0Yqt tjtj¡&}| tdf¡| ¡Wdƒn1sŽ0YdS)N)rr…r)r r:r/r`rŸr>)r@ÚbacklogÚsrvrrrÚtest_listen_backlog§s*z&GeneralModuleTests.test_listen_backlogcCs`ddl}t tjtj¡4}| tdf¡| t|j|j d¡Wdƒn1sR0YdSrú) r‰r r:r/r`rŸr'rr>rŠ)r@r‰r*rrrÚtest_listen_backlog_overflow±sz/GeneralModuleTests.test_listen_backlog_overflowúIPv6 required for this test.cCsf| ttjtjddfd¡t tjtj¡(}| t|jtjddf¡Wdƒn1sX0YdS)Nrr„iöÿÿÿ) r'rr rsrrérër/r`rrrrÚ test_flowinfo¹s   ÿz GeneralModuleTests.test_flowinfocCs0t ddtjtjtj¡\^}}| |d¡dS)Núff02::1de:c0:face:8Dr)úff02::1de:c0:face:8drrr)r rårër r9rµ)r@rsÚsockaddrrrrÚtest_getaddrinfo_ipv6_basicÀsü z.GeneralModuleTests.test_getaddrinfo_ipv6_basicr²zdoes not work on WindowszSymbolic scope id does not workcCsLt ¡d\}}t d|dtjtjtj¡\^}}| |ddd|f¡dS)Nrúff02::1de:c0:face:8D%rr0)r rfrårër r9rµ)r@ÚifindexÚtest_interfacersr1rrrÚ&test_getaddrinfo_ipv6_scopeid_symbolicÊsü z9GeneralModuleTests.test_getaddrinfo_ipv6_scopeid_symbolicz.Numeric scope id does not work or undocumentedcCsDd}t dt|ƒdtjtjtj¡\^}}| |ddd|f¡dS)Né*r3rr0r)r rårrër r9rµ)r@r4rsr1rrrÚ%test_getaddrinfo_ipv6_scopeid_numericÙs ü z8GeneralModuleTests.test_getaddrinfo_ipv6_scopeid_numericcCsHt ¡d\}}ddd|f}t |tjtjB¡}| |d|df¡dS)Nrr/rúff02::1de:c0:face:8d%Ú1234)r rfrsÚNI_NUMERICHOSTÚNI_NUMERICSERVrµ)r@r4r5r1ÚnameinforrrÚ&test_getnameinfo_ipv6_scopeid_symbolicês z9GeneralModuleTests.test_getnameinfo_ipv6_scopeid_symboliccCs@d}ddd|f}t |tjtjB¡}| |dt|ƒdf¡dS)Nr7r/rrr9r:)r rsr;r<rµr)r@r4r1r=rrrÚ%test_getnameinfo_ipv6_scopeid_numericôs z8GeneralModuleTests.test_getnameinfo_ipv6_scopeid_numericcCsXt tjtj¡4}| t|jƒd¡| t|jƒd¡Wdƒn1sJ0YdS)Nrßrà)r r:r/rµrrrôrrrrÚtest_str_for_enumsÿsz%GeneralModuleTests.test_str_for_enumscCsÐttddƒ}ttddƒ}tj|B|B}t tj|¡ˆ}| |jtj¡| d¡| |jtj¡| d¡| |jtj¡| d¡| |jtj¡| d¡| |jtj¡Wdƒn1sÂ0YdS)NÚ SOCK_NONBLOCKrrÑrqTF)r~r r/r:rµrôrÊÚ setblocking)r@rArÑZ sock_typerrrrÚ test_socket_consistent_sock_types      z3GeneralModuleTests.test_socket_consistent_sock_typecCs®t tjtj¡}| ¡}ttjj ¡ƒd}tdd„tjj  ¡Dƒƒd}tj||d|d>}|  |j |¡|  |j |¡|  |jddh¡Wdƒn1s 0YdS)Nrqcss|]\}}|dvr|VqdS)>rÑrANr)rþrÿÚkindrrrr!sþzEGeneralModuleTests.test_unknown_socket_family_repr..r”)rrôrrr)r r:r/ÚdetachÚmaxÚ AddressFamilyÚ __members__ÚvaluesÚ SocketKindr~rµrrôrr)r@rÙÚfdZunknown_familyZ unknown_typerrrrÚtest_unknown_socket_family_reprs  þüþz2GeneralModuleTests.test_unknown_socket_family_reprÚsendfileztest needs os.sendfile()c CsGdd„dƒ}t ¡Ø}t tjtj¡}t |¡| tj¡| ||ƒ¡Wdƒn1sb0Y| t ¡"| |ddƒ¡Wdƒn1sž0Y| t ¡| |dƒ¡Wdƒn1sÖ0YWdƒn1sô0YdS)Nc@seZdZdd„Zdd„ZdS)z.FilecSs ||_dSr2©rK)r@rKrrrrL2szEGeneralModuleTests.test__sendfile_use_sendfile..File.__init__cSs|jSr2rNr?rrrr5szCGeneralModuleTests.test__sendfile_use_sendfile..File.filenoN)rErFrGrLrrrrrÚFile1srOr£r‡) r rÓrÚcurdirÚO_RDONLYrr'Ú_GiveupOnSendfileÚ_sendfile_use_sendfilerr)r@rOrÙrKrrrÚtest__sendfile_use_sendfile/s  , 0 z.GeneralModuleTests.test__sendfile_use_sendfilecCst| |j|¡| |j|¡| ¡}tj|d}| |j¡| ¡| |j|¡| |j|¡| | ¡|¡dS©NrÌ)rµrrôrr rUrrE)r@rrÚstyperKÚs2rrrÚ_test_socket_filenoAs  z&GeneralModuleTests._test_socket_filenocCsPt tjtj¡}| |j¡| tjdf¡| |tjtj¡t tdƒr†t tjtj ¡}| |j¡| tjdf¡| |tjtj ¡tj rÎt tj tj¡}| |j¡| tj dddf¡| |tj tj¡t tdƒrLt ¡}| tj|¡t tjtj¡}| |j¡z| tj |d¡¡Wnty8Yn0| |tjtj¡dS)Nrr rÜr )r r:r/rUrr`rrŸrXr r rèrërérÐrÑÚshutilÚrmtreerÜrÓrÚrÚPermissionError)r@rZtmpdirrrrÚtest_socket_filenoNs4       ÿz%GeneralModuleTests.test_socket_filenocCsD| td¡$tjtjtjddWdƒn1s60YdS)Nzinteger argument expectedg@E@rÌ©r rr r:r/r?rrrÚ test_socket_fileno_rejects_floatmsz3GeneralModuleTests.test_socket_fileno_rejects_floatcCsD| td¡$tjtjtjddWdƒn1s60YdS)Nzinteger is requiredÚfoorÌr]r?rrrÚ&test_socket_fileno_rejects_other_typesqsz9GeneralModuleTests.test_socket_fileno_rejects_other_typescCsD| td¡$tjtjtjddWdƒn1s60YdS)Núnegative file descriptorr…rÌ©r rr r:r/r?rrrÚ)test_socket_fileno_rejects_invalid_socketuszrrr•rrèrSr]r_r`r r rermrorprurvrƒrÚ cpython_onlyrŽršržr£r¯r»r¿rÀrÂrÆrÈrËrÐrÒrÖrÙrÛrðrñZis_resource_enabledrórrrr rrrrr!r(r+r,r.r2ÚskipIfrr6r8r>r?r@rCrLrTrXr\r^r`rcrdrergrrrrr>s   ,       ÿ  ÿ  ÿ  ÿ  , ÿ  ÿ  ÿ > ÿ  ÿ "    ÿ N ÿ           þ    ÿ     rz!SocketCan required for this test.c@s”eZdZdd„Ze eedƒd¡dd„ƒZdd„Z e eedƒd¡d d „ƒZ d d „Z d d„Z e eedƒd¡dd„ƒZ e eedƒd¡dd„ƒZdS)Ú BasicCANTestcCstjtjtjdSr2)r ÚAF_CANrrr?rrrr7›sz!BasicCANTest.testCrucialConstantsÚCAN_BCMú&socket.CAN_BCM required for this test.cCs”tjtjtjtjtjtjtjtjtj tj tj tj tj tjtjtjtjtjtjtjtjtjtjtjdSr2)r rmÚCAN_BCM_TX_SETUPÚCAN_BCM_TX_DELETEÚCAN_BCM_TX_READÚCAN_BCM_TX_SENDÚCAN_BCM_RX_SETUPÚCAN_BCM_RX_DELETEÚCAN_BCM_RX_READÚCAN_BCM_TX_STATUSÚCAN_BCM_TX_EXPIREDÚCAN_BCM_RX_STATUSÚCAN_BCM_RX_TIMEOUTÚCAN_BCM_RX_CHANGEDÚCAN_BCM_SETTIMERÚCAN_BCM_STARTTIMERÚCAN_BCM_TX_COUNTEVTÚCAN_BCM_TX_ANNOUNCEÚCAN_BCM_TX_CP_CAN_IDÚCAN_BCM_RX_FILTER_IDÚCAN_BCM_RX_CHECK_DLCÚCAN_BCM_RX_NO_AUTOTIMERÚCAN_BCM_RX_ANNOUNCE_RESUMEÚCAN_BCM_TX_RESET_MULTI_IDXÚCAN_BCM_RX_RTR_FRAMEr?rrrÚtestBCMConstants s0zBasicCANTest.testBCMConstantscCs8t tjtjtj¡}Wdƒn1s*0YdSr2©r rrrrrrrÚtestCreateSocketÀszBasicCANTest.testCreateSocketcCs8t tjtjtj¡}Wdƒn1s*0YdSr2)r rr rmrrrrÚtestCreateBCMSocketÄsz BasicCANTest.testCreateBCMSocketcCsVt tjtjtj¡.}d}| |¡| | ¡|¡Wdƒn1sH0YdS)N)r+)r rrrr`rµr )r@rÚaddressrrrÚ testBindAnyÊs zBasicCANTest.testBindAnycCsJt tjtjtj¡"}| td|jd¡Wdƒn1s<0YdS)Núinterface name too long)Áxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx)r rrrr rr`rrrrÚtestTooLongInterfaceNameÐsÿz%BasicCANTest.testTooLongInterfaceNameÚCAN_RAW_LOOPBACKz/socket.CAN_RAW_LOOPBACK required for this test.c Cslt tjtjtj¡D}dD].}| tjtj|¡| || tjtj¡¡qWdƒn1s^0YdS)N)rrq) r rrrrÇÚ SOL_CAN_RAWrrµrÃ)r@rZloopbackrrrÚ testLoopbackÖs ÿÿzBasicCANTest.testLoopbackÚCAN_RAW_FILTERz-socket.CAN_RAW_FILTER required for this test.c Csd\}}t d||¡}t tjtjtj¡R}| tjtj|¡|  ||  tjtjd¡¡| tjtjt |ƒ¡Wdƒn1s‚0YdS)N)éiz=IIr]) rÚpackr rrrrÇrr’rµrÃr¾)r@Úcan_idZcan_maskZ can_filterrrrrÚ testFilteràsÿzBasicCANTest.testFilterN)rErFrGr7r¦rhr r r†rˆr‰r‹rŽr‘r–rrrrrk˜s( ÿ  ÿ  ÿ  ÿrkc@s’eZdZddd„Zedd„ƒZedd„ƒZdd „Zd d „Zd d „Z dd„Z dd„Z dd„Z e  eedƒd¡dd„ƒZe  eedƒd¡dd„ƒZdS)ÚCANTestr’cCstj||ddSr“)rœrLr–rrrrLïszCANTest.__init__cCs&t|ƒ}| dd¡}t |j|||¡S)zBuild a CAN frame.r]ó)rçÚljustrr”rd)Úclsr•ÚdataÚcan_dlcrrrÚbuild_can_frameòs zCANTest.build_can_framecCs&t |j|¡\}}}|||d|…fS)zDissect a CAN frame.N)rrrd)ršÚframer•rœr›rrrÚdissect_can_frameùszCANTest.dissect_can_framecCs6|j |j¡\}}| |j|¡| |d|j¡dSrž)rÚrecvfromrcrµÚcfra©r@r¡rÁrrrÚ testSendFrameÿszCANTest.testSendFramecCs | dd¡|_|j |j¡dS)Nrs©rr¡r—r»r?rrrÚ_testSendFrameszCANTest._testSendFramecCs$|j |j¡\}}| |j|¡dSr2)rr rcrµr¡r¢rrrÚtestSendMaxFrameszCANTest.testSendMaxFramecCs | dd¡|_|j |j¡dS)Nrsr¤r?rrrÚ_testSendMaxFrame szCANTest._testSendMaxFramecCsD|j |j¡\}}| |j|¡|j |j¡\}}| |j|¡dSr2)rr rcrµÚcf1Úcf2r¢rrrÚtestSendMultiFramesszCANTest.testSendMultiFramescCs<| dd¡|_|j |j¡| dd¡|_|j |j¡dS)NésD3"és™"3)rr¨r—r»r©r?rrrÚ_testSendMultiFramesszCANTest._testSendMultiFramesrmrncCsP|j |j¡\}}| |j|¡| |¡\}}}| |j|¡| |j|¡dSr2)r—r rcrµr¡rŸr•r›)r@r¡rÁr•rœr›rrrÚ_testBCMs zCANTest._testBCMc CsÒt tjtjtj¡}| |j¡| |jf¡d|_t gd¢ƒ|_ |  |j|j ¡|_ tj }d}d}d}}}}d} d} t|j ƒdksŒJ‚t |j|||||||| | ¡ } | |j } | | ¡} | | t| ƒ¡dS)Né#)éÀéÿéîri"rqrx)r rr rmrUrr±rar•Úbytesr›rr¡rrrçrr”rfr»rµ)r@ZbcmZopcoderãrÕZ ival1_secondsZ ival1_usecZ ival2_secondsZ ival2_usecZ bcm_can_idZnframesÚheaderZheader_plus_frameZ bytes_sentrrrÚtestBCM's6 ÷  zCANTest.testBCMN)r’)rErFrGrLÚ classmethodrrŸr£r¥r¦r§rªr­r¦rhr r r®rµrrrrr—ìs&    ÿ  ÿr—z!CAN ISOTP required for this test.csVeZdZ‡fdd„Zdd„Zdd„Ze ee dƒd¡d d „ƒZ d d „Z d d„Z ‡Z S)Ú ISOTPTestcstƒj|i|¤Žd|_dS©NrZ©rKrLrarPrSrrrLJszISOTPTest.__init__cCstjtjtjtjdSr2)r rlrr!r r?rrrr7NszISOTPTest.testCrucialConstantscCs8t tjtjtj¡}Wdƒn1s*0YdSr2r‡rrrrrˆTszISOTPTest.testCreateSocketr!z(socket.CAN_ISOTP required for this test.cCs8t tjtjtj¡}Wdƒn1s*0YdSr2)r rr r!rrrrÚtestCreateISOTPSocketXszISOTPTest.testCreateISOTPSocketc Csnt tjtjtj¡F}| td¡| d¡Wdƒn1sB0YWdƒn1s`0YdS)NrŒ)rrqr£)r rr r!r rr`rrrrrŽ^sz"ISOTPTest.testTooLongInterfaceNamec Cs¨z^t tjtjtj¡6}|jddf}| |¡| | ¡|¡Wdƒn1sR0YWnDty¢}z,|j t j krŒ|  d|j¡n‚WYd}~n d}~00dS)Nr¯iVr_) r rr r!rar`rµr rrcÚENODEVrb©r@rrÁrŽrrrÚtestBindds  2 ÿzISOTPTest.testBind)rErFrGrLr7rˆr¦rhr r rºrŽr½rXrrrSrr·Gs  ÿ r·z!CAN J1939 required for this test.csXeZdZ‡fdd„Ze eedƒd¡dd„ƒZe eedƒd¡dd„ƒZ d d „Z ‡Z S) Ú J1939Testcstƒj|i|¤Žd|_dSr¸r¹rPrSrrrLuszJ1939Test.__init__r#z(socket.CAN_J1939 required for this test.cCs”tjtjtjtjtjtjtjtjtj tj tj tj tj tjtjtjtjtjtjtjtjtjtjtjdSr2)r r#ZJ1939_MAX_UNICAST_ADDRZJ1939_IDLE_ADDRÚ J1939_NO_ADDRÚ J1939_NO_NAMEZJ1939_PGN_REQUESTZJ1939_PGN_ADDRESS_CLAIMEDZJ1939_PGN_ADDRESS_COMMANDEDZJ1939_PGN_PDU1_MAXZ J1939_PGN_MAXÚ J1939_NO_PGNZSO_J1939_FILTERZSO_J1939_PROMISCZSO_J1939_SEND_PRIOZSO_J1939_ERRQUEUEZSCM_J1939_DEST_ADDRZSCM_J1939_DEST_NAMEZSCM_J1939_PRIOZSCM_J1939_ERRQUEUEZ J1939_NLA_PADZJ1939_NLA_BYTES_ACKEDZJ1939_EE_INFO_NONEZJ1939_EE_INFO_TX_ABORTZJ1939_FILTER_MAXr?rrrÚtestJ1939Constantsys0zJ1939Test.testJ1939ConstantscCs8t tjtjtj¡}Wdƒn1s*0YdSr2)r rr r#rrrrÚtestCreateJ1939SocketœszJ1939Test.testCreateJ1939Socketc Cs°zft tjtjtj¡>}|jtjtjtjf}| |¡|  |  ¡|¡Wdƒn1sZ0YWnDt yª}z,|j t j kr”| d|j¡n‚WYd}~n d}~00dSr^)r rr r#rarÀrÁr¿r`rµr rrcr»rbr¼rrrr½¢s 2 ÿzJ1939Test.testBind) rErFrGrLr¦rhr r rÂrÃr½rXrrrSrr¾rs  ÿ ! ÿ r¾z#RDS sockets required for this test.c@s$eZdZdd„Zdd„Zdd„ZdS)Ú BasicRDSTestcCstjtjdSr2)r ÚAF_RDSr%r?rrrr7³sz!BasicRDSTest.testCrucialConstantscCs6t tjtjd¡}Wdƒn1s(0YdSrž)r r%r&rrrrrˆ·szBasicRDSTest.testCreateSocketcCs^d}t tjtjd¡4}| tjtj|¡| tjtj|¡Wdƒn1sP0YdS)Ni@r)r r%r&rÇr5Ú SO_RCVBUFÚ SO_SNDBUF)r@rcrrrrÚtestSocketBufferSize»sz!BasicRDSTest.testSocketBufferSizeN)rErFrGr7rˆrÈrrrrrİsrÄcsŽeZdZddd„Z‡fdd„Zdd„Zdd „Zd d „Zd d „Ze e j dƒdd„ƒZ e e j dƒdd„ƒZ dd„Z dd„Zdd„Zdd„Z‡ZS)ÚRDSTestr’cCstj||ddSr“)rrLr–rrrrLÅszRDSTest.__init__cstƒ ¡t ¡|_dSr2)rKrArMrvZevtr?rSrrrAÈs z RDSTest.setUpcCs2|j |j¡\}}| |j|¡| |j|¡dSr2)r;r rcrµr›r¡©r@r›rÁrrrÚtestSendAndRecvÌszRDSTest.testSendAndRecvcCs"d|_|j |jdt|jf¡dS©NrÉr©r›r—r/rŸr=r?rrrÚ_testSendAndRecvÑszRDSTest._testSendAndRecvcCsH|j |jtj¡\}}| |j|¡|j |j¡\}}| |j|¡dSr2)r;r rcr ÚMSG_PEEKrµr›rÊrrrÚtestPeekÕszRDSTest.testPeekcCs"d|_|j |jdt|jf¡dSrÌrÍr?rrrÚ _testPeekÛszRDSTest._testPeekÚrecvmsgcCs(|j |j¡\}}}}| |j|¡dSr2)r;rÒrcrµr›)r@r›ÚancdataZ msg_flagsrÁrrrÚtestSendAndRecvMsgßszRDSTest.testSendAndRecvMsgÚsendmsgcCs&d|_|j |jgddt|jf¡dS)Ns<hello hello hello hello hello hello hello hello hello hello rr)r›r—rÕrŸr=r?rrrÚ_testSendAndRecvMsgäszRDSTest._testSendAndRecvMsgcCsD|j |j¡\}}| |j|¡|j |j¡\}}| |j|¡dSr2)r;r rcrµÚdata1Údata2rÊrrrÚtestSendAndRecvMultiészRDSTest.testSendAndRecvMulticCs@d|_|j |jdt|jf¡d|_|j |jdt|jf¡dS)Nsbaconrsegg)r×r—r/rŸr=rØr?rrrÚ_testSendAndRecvMultiðszRDSTest._testSendAndRecvMulticCsLt |jgggd¡\}}}| |j|¡|j |j¡\}}| |j|¡dS)Ng@)Úselectr;rr rcrµr›)r@rrr\r›rÁrrrÚ testSelect÷szRDSTest.testSelectcCs"d|_|j |jdt|jf¡dS)NsselectrrÍr?rrrÚ _testSelectýszRDSTest._testSelect)r’)rErFrGrLrArËrÎrÐrÑrr rÔrÖrÙrÚrÜrÝrXrrrSrrÉÂs      rÉz'QIPCRTR sockets required for this test.c@s<eZdZdd„Zdd„Zdd„Zdd„Zd d „Zd d „Zd S)ÚBasicQIPCRTRTestcCs tjdSr2)r r*r?rrrr7 sz%BasicQIPCRTRTest.testCrucialConstantscCs4t tjtj¡}Wdƒn1s&0YdSr2)r r*r rrrrrˆ sz!BasicQIPCRTRTest.testCreateSocketcCsHt tjtj¡$}| | ¡dd¡Wdƒn1s:0YdS©Nrqr)r r*r rµr rrrrÚ testUnbound szBasicQIPCRTRTest.testUnboundcCs^t tjtj¡:}tj|| ¡dd| | ¡dd¡Wdƒn1sP0YdS)Nrràrq)r r*r rr<r ÚassertNotEqualrrrrÚ testBindSock szBasicQIPCRTRTest.testBindSockcCsHt tjtj¡$}|jttj|ddWdƒn1s:0YdS)Nr†rà)r r*r r'rrr<rrrrÚtestInvalidBindSock sz$BasicQIPCRTRTest.testInvalidBindSockcCsRt tjtj¡.}| d¡| | ¡dd¡Wdƒn1sD0YdS)N)é{rärqr)r r*r r±rár rrrrÚtestAutoBindSock s z!BasicQIPCRTRTest.testAutoBindSockN) rErFrGr7rˆràrârãrårrrrrÞ s rÞc@s,eZdZdd„Zdd„Zdd„Zdd„Zd S) ÚBasicVSOCKTestcCs tjdSr2)r r¨r?rrrr7# sz#BasicVSOCKTest.testCrucialConstantscCs4tjtjtjtjtjtjtjtjdSr2) r ÚSO_VM_SOCKETS_BUFFER_SIZEÚSO_VM_SOCKETS_BUFFER_MIN_SIZEÚSO_VM_SOCKETS_BUFFER_MAX_SIZEr©ÚVMADDR_PORT_ANYÚVMADDR_CID_HOSTÚVM_SOCKETS_INVALID_VERSIONrr?rrrÚtestVSOCKConstants& sz!BasicVSOCKTest.testVSOCKConstantscCs4t tjtj¡}Wdƒn1s&0YdSr2)r r¨r/rrrrrˆ0 szBasicVSOCKTest.testCreateSocketcCsút tjtj¡Ö}| tjtj¡}| tjtj¡}| tjtj¡}| tjtj|d¡| tjtj|d¡| tjtj|d¡| |d| tjtj¡¡| |d| tjtj¡¡| |d| tjtj¡¡Wdƒn1sì0YdS©Nr£) r r¨r/rÃrérçrèrÇrµ)r@rZorig_maxrtZorig_minrrrrÈ4 sDÿÿÿ ÿ ÿ ÿ ÿÿ ÿÿ ÿÿz#BasicVSOCKTest.testSocketBufferSizeN)rErFrGr7rírˆrÈrrrrræ s ræz)Bluetooth sockets required for this test.c@sveZdZdd„Zdd„Ze ejdkd¡dd„ƒZ e ejdkd ¡d d „ƒZ e ejdkpdej  d ¡d ¡dd„ƒZ dS)ÚBasicBluetoothTestcCsJtjtjtjtjtjdkrFtjtjtj tj  d¡sFtj dS)Nr²r) r Z BDADDR_ANYZ BDADDR_LOCALr.r0rrr•Ú BTPROTO_HCIZSOL_HCIÚ BTPROTO_L2CAPr–Ú BTPROTO_SCOr?rrrÚtestBluetoothConstantsS s  z)BasicBluetoothTest.testBluetoothConstantscCs8t tjtjtj¡}Wdƒn1s*0YdSr2)r r.r/r0rrrrÚtestCreateRfcommSocketa sz)BasicBluetoothTest.testCreateRfcommSocketr²z&windows does not support L2CAP socketscCs8t tjtjtj¡}Wdƒn1s*0YdSr2)r r.r&rñrrrrÚtestCreateL2capSockete sz(BasicBluetoothTest.testCreateL2capSocketz$windows does not support HCI socketscCs8t tjtjtj¡}Wdƒn1s*0YdSr2)r r.rrðrrrrÚtestCreateHciSocketj sz&BasicBluetoothTest.testCreateHciSocketrz.windows and freebsd do not support SCO socketscCs8t tjtjtj¡}Wdƒn1s*0YdSr2)r r.r&ròrrrrÚtestCreateScoSocketo sz&BasicBluetoothTest.testCreateScoSocketN) rErFrGrórôr¦rjrrr•rõrör–r÷rrrrrïO s  ÿrïc@s¾eZdZd+dd„Zdd„Zdd„Zdd „Zd d „Zd d „Zdd„Z dd„Z dd„Z dd„Z dd„Z dd„Zdd„Zdd„Zdd„Zd d!„Zd"d#„Ze e¡Zejd$d%„ƒZd&d'„Zd(d)„Zd*S),Ú BasicTCPTestr’cCstj||ddSr“©r¾rLr–rrrrLx szBasicTCPTest.__init__cCs|j d¡}| |t¡dSr²)r¿r´rµr¶r·rrrÚtestRecv{ s zBasicTCPTest.testRecvcCs|j t¡dSr2©rÂr»r¶r?rrrÚ _testRecv€ szBasicTCPTest._testRecvcCs8|j ttƒd¡}|j d¡}||}| |t¡dS©Nér³)r¿r´rçr¶rµ)r@Úseg1Úseg2r¸rrrÚtestOverFlowRecvƒ s zBasicTCPTest.testOverFlowRecvcCs|j t¡dSr2rûr?rrrÚ_testOverFlowRecvŠ szBasicTCPTest._testOverFlowRecvcCs |j d¡\}}| |t¡dSr²)r¿r rµr¶©r@r¸rÁrrrÚ testRecvFrom szBasicTCPTest.testRecvFromcCs|j t¡dSr2rûr?rrrÚ _testRecvFrom’ szBasicTCPTest._testRecvFromcCs@|j ttƒd¡\}}|j d¡\}}||}| |t¡dSrý)r¿r rçr¶rµ)r@rÿrÁrr¸rrrÚtestOverFlowRecvFrom• sz!BasicTCPTest.testOverFlowRecvFromcCs|j t¡dSr2rûr?rrrÚ_testOverFlowRecvFromœ sz"BasicTCPTest._testOverFlowRecvFromcCs0d}|j d¡}|sq ||7}q| |d¡dS)Nrñr³óffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff)r¿r´rµ)r@r¸ÚreadrrrÚ testSendAllŸ s   zBasicTCPTest.testSendAllcCsd}|j |¡dS)Nr)rÂr)r@Z big_chunkrrrÚ _testSendAll© szBasicTCPTest._testSendAllcCsP|j ¡}t |tjtj¡}| |j¡| |tj¡|  d¡}|  |t ¡dSr²) r¿rr Úfromfdr:r/rUrrr´rµr¶)r@rKrÙr¸rrrÚ testFromFd­ s    zBasicTCPTest.testFromFdcCs|j t¡dSr2rûr?rrrÚ _testFromFd¶ szBasicTCPTest._testFromFdcCs0|j ¡}| |j¡| d¡}| |t¡dSr²)r¿ÚduprUrr´rµr¶)r@rÙr¸rrrÚtestDup¹ s   zBasicTCPTest.testDupcCs|j t¡dSr2rûr?rrrÚ_testDupÀ szBasicTCPTest._testDupcCs&|j d¡}| |t¡|j ¡dSr²)r¿r´rµr¶rxr‚r·rrrÚ testShutdownà s  zBasicTCPTest.testShutdowncCs|j t¡|j d¡dSrî)rÂr»r¶Úshutdownr?rrrÚ _testShutdownÌ s zBasicTCPTest._testShutdowncCsXddl}|j t¡| t|jj|jd¡| t|jjd|jd¡|j d¡dS)Nrrqr£) r‰rÂr»r¶r'rrrŠÚUINT_MAX©r@r‰rrrÚ_testShutdown_overflowÒ s  ÿ  ÿz#BasicTCPTest._testShutdown_overflowcCs„|j ¡}|j ¡}| ||¡| |jj¡| t|jjd¡|j  ¡t j t j t j |d}|  |j ¡| d¡}| |t¡dS)Nr³rÌ)r¿rrErµrÚ_closedr'rr´rr r:r/rUr¶)r@rrrÙr¸rrrÚ testDetachÝ s      zBasicTCPTest.testDetachcCs|j t¡dSr2rûr?rrrÚ _testDetachí szBasicTCPTest._testDetachN)r’)rErFrGrLrúrürrrrrrr r r rrrrrrriZtestShutdown_overflowrrrrrrrrøv s,      røc@sFeZdZddd„Zdd„Zdd„Zdd „Zd d „Zd d „Zdd„Z dS)Ú BasicUDPTestr’cCstj||ddSr“)ršrLr–rrrrLó szBasicUDPTest.__init__cCs |j ttƒ¡}| |t¡dSr2©r;r´rçr¶rµr·rrrÚtestSendtoAndRecvö szBasicUDPTest.testSendtoAndRecvcCs|j tdt|jf¡dSrž©r—r/r¶rŸr=r?rrrÚ_testSendtoAndRecvû szBasicUDPTest._testSendtoAndRecvcCs$|j ttƒ¡\}}| |t¡dSr2©r;r rçr¶rµrrrrrþ szBasicUDPTest.testRecvFromcCs|j tdt|jf¡dSržrr?rrrr szBasicUDPTest._testRecvFromcCs| t|jjd¡dS©Nr…©r'rr;r r?rrrÚtestRecvFromNegative sz!BasicUDPTest.testRecvFromNegativecCs|j tdt|jf¡dSržrr?rrrÚ_testRecvFromNegative sz"BasicUDPTest._testRecvFromNegativeN)r’© rErFrGrLrrrrr#r$rrrrrñ s rc@sFeZdZddd„Zdd„Zdd„Zdd „Zd d „Zd d „Zdd„Z dS)ÚBasicUDPLITETestr’cCstj||ddSr“)r›rLr–rrrrL szBasicUDPLITETest.__init__cCs |j ttƒ¡}| |t¡dSr2rr·rrrr sz"BasicUDPLITETest.testSendtoAndRecvcCs|j tdt|jf¡dSržrr?rrrr sz#BasicUDPLITETest._testSendtoAndRecvcCs$|j ttƒ¡\}}| |t¡dSr2r rrrrr szBasicUDPLITETest.testRecvFromcCs|j tdt|jf¡dSržrr?rrrr" szBasicUDPLITETest._testRecvFromcCs| t|jjd¡dSr!r"r?rrrr#% sz%BasicUDPLITETest.testRecvFromNegativecCs|j tdt|jf¡dSržrr?rrrr$) sz&BasicUDPLITETest._testRecvFromNegativeN)r’r%rrrrr& s r&cs‚eZdZejZ‡fdd„Zdd„ZdZdd„Z dd „Z d d „Z d d „Z dZ dD]Ze eeedƒOZ qNdZdZdZddd„Z‡ZS)ÚSendrecvmsgBasecst ¡|_tƒ ¡dSr2)rMrvÚ misc_eventrKrAr?rSrrrAN s zSendrecvmsgBase.setUpcCs |j |¡Sr2)Úcli_sockr»r·rrrÚ sendToServerR szSendrecvmsgBase.sendToServerrcGs|jj||jt|ƒd…ŽSr2)r)rÕÚsendmsg_to_server_defaultsrç©r@rQrrrÚsendmsgToServerZ sÿzSendrecvmsgBase.sendmsgToServercGs |j|g|¢RŽ}| |¡|Sr2)rÒÚregisterRecvmsgResult)r@rÙrcrQÚresultrrrÚ doRecvmsgb s zSendrecvmsgBase.doRecvmsgcCsdSr2r©r@r/rrrr.l sz%SendrecvmsgBase.registerRecvmsgResultcCs| ||¡dSr2©rµ©r@Zaddr1Zaddr2rrrÚcheckRecvmsgAddressr sz#SendrecvmsgBase.checkRecvmsgAddressr)Ú MSG_CTRUNCÚMSG_OOBNc Cs¬|j}|j}|r&||jO}||jO}n|durB||jO}||jO}||M}||M}||O}||O}||@|@}|r†td |¡ƒ‚||B|@} | || @|| @¡dS)Nz6contradictory set, unset requirements for flags {0:#x})Úmsg_flags_common_setÚmsg_flags_common_unsetÚmsg_flags_eor_indicatorÚmsg_flags_non_eor_indicatorÚ Exceptionr rµ) r@rãÚeorÚchecksetÚ checkunsetÚignoreZ defaultsetZ defaultunsetZinbothr‚rrrÚ checkFlags‡ s&      ÿzSendrecvmsgBase.checkFlags)Nrrr)rErFrGrÚLOOPBACK_TIMEOUTÚ fail_timeoutrAr*r+r-r0r.r4r8rÿr~r r7r9r:r@rXrrrSrr'G s  r'c@seZdZdd„ZdS)ÚRecvmsgIntoMixincGsht|ƒ}|j|gg|¢RŽ}| |¡| |dd¡| |d|¡t|d|d…ƒf|dd…Srú)r¾Ú recvmsg_intor.ÚassertGreaterEqualÚassertLessEqualr³)r@rÙrcrQÚbufr/rrrr0Á s  zRecvmsgIntoMixin.doRecvmsgN)rErFrGr0rrrrrC¾ srCcs eZdZe‡fdd„ƒZ‡ZS)ÚSendrecvmsgDgramFlagsBasecstƒjtjBSr2)rKr:r Ú MSG_TRUNCr?rSrrr:Í sz5SendrecvmsgDgramFlagsBase.msg_flags_non_eor_indicator)rErFrGÚpropertyr:rXrrrSrrHÊ srHcs eZdZe‡fdd„ƒZ‡ZS)ÚSendrecvmsgSCTPFlagsBasecstƒjtjBSr2)rKr9r ÚMSG_EORr?rSrrr9Õ sz0SendrecvmsgSCTPFlagsBase.msg_flags_eor_indicator)rErFrGrJr9rXrrrSrrKÒ srKc@s8eZdZedd„ƒZedd„ƒZedd„ƒZdd„Zd S) ÚSendrecvmsgConnectionlessBasecCs|jSr2)r;r?rrrÚ serv_sockß sz'SendrecvmsgConnectionlessBase.serv_sockcCs|jSr2)r—r?rrrr)ã sz&SendrecvmsgConnectionlessBase.cli_sockcCsggd|jfSrž)rÉr?rrrr+ç sz8SendrecvmsgConnectionlessBase.sendmsg_to_server_defaultscCs|j ||j¡Sr2)r)r/rÉr·rrrr*ë sz*SendrecvmsgConnectionlessBase.sendToServerN)rErFrGrJrNr)r+r*rrrrrMÚ s   rMc@s,eZdZedd„ƒZedd„ƒZdd„ZdS)ÚSendrecvmsgConnectedBasecCs|jSr2)r¿r?rrrrNõ sz"SendrecvmsgConnectedBase.serv_sockcCs|jSr2)rÂr?rrrr)ù sz!SendrecvmsgConnectedBase.cli_sockcCsdSr2rr3rrrr4ý sz,SendrecvmsgConnectedBase.checkRecvmsgAddressN)rErFrGrJrNr)r4rrrrrOï s   rOcseZdZ‡fdd„Z‡ZS)ÚSendrecvmsgServerTimeoutBasecstƒ ¡|j |j¡dSr2)rKrArNrÊrBr?rSrrrA s z"SendrecvmsgServerTimeoutBase.setUp)rErFrGrArXrrrSrrP srPc@s¼eZdZdd„Zdd„Zdd„Zdd„Zd d „Zd d „Zd d„Z dd„Z dd„Z dd„Z dd„Z dd„Zdd„Zdd„Zeedƒdd„ƒZejd d!„ƒZd"d#„Zd$d%„Zd&d'„Zd(d)„Zd*S)+Ú SendmsgTestscCs| |j ttƒ¡t¡dSr2©rµrNr´rçr¶r?rrrÚ testSendmsg szSendmsgTests.testSendmsgcCs| | tg¡ttƒ¡dSr2©rµr-r¶rçr?rrrÚ _testSendmsg szSendmsgTests._testSendmsgcCs| |j ttƒ¡t¡dSr2rRr?rrrÚtestSendmsgDataGenerator sz%SendmsgTests.testSendmsgDataGeneratorcCs&| | dd„tfDƒ¡ttƒ¡dS)Ncss|] }|VqdSr2rr rrrr rñz9SendmsgTests._testSendmsgDataGenerator..rTr?rrrÚ_testSendmsgDataGenerator sÿz&SendmsgTests._testSendmsgDataGeneratorcCs| |j ttƒ¡t¡dSr2rRr?rrrÚtestSendmsgAncillaryGenerator sz*SendmsgTests.testSendmsgAncillaryGeneratorcCs(| | tgdd„dDƒ¡ttƒ¡dS)Ncss|] }|VqdSr2rr rrrr# rñz>SendmsgTests._testSendmsgAncillaryGenerator..rrTr?rrrÚ_testSendmsgAncillaryGenerator" sÿz+SendmsgTests._testSendmsgAncillaryGeneratorcCs| |j ttƒ¡t¡dSr2rRr?rrrÚtestSendmsgArray& szSendmsgTests.testSendmsgArraycCs$| | t dt¡g¡ttƒ¡dS)NÚB)rµr-Úarrayr¶rçr?rrrÚ_testSendmsgArray* sÿzSendmsgTests._testSendmsgArraycCs| |j ttƒ¡t¡dSr2rRr?rrrÚtestSendmsgGather. szSendmsgTests.testSendmsgGathercCs.| | tdd…tdd…g¡ttƒ¡dS©NrþrTr?rrrÚ_testSendmsgGather2 szSendmsgTests._testSendmsgGathercCs| |j d¡d¡dS©Nr‡ódone©rµrNr´r?rrrÚtestSendmsgBadArgs5 szSendmsgTests.testSendmsgBadArgscCs²| t|jj¡| t|jd¡| t|jtƒ¡| t|jtƒg¡| t|jttƒg¡| t|jtgtƒ¡| t|jtggtƒ¡| t|jtggdtƒ¡| d¡dS)Nsnot in an iterablerrb)r'rr)rÕr-Úobjectr¶r*r?rrrÚ_testSendmsgBadArgs9 s. ÿ ÿ ÿ ÿ ÿ  ÿ  ÿz SendmsgTests._testSendmsgBadArgscCs| |j d¡d¡dSrarcr?rrrÚtestSendmsgBadCmsgK szSendmsgTests.testSendmsgBadCmsgcCs¬| t|jtgtƒg¡| t|jtgtƒddfg¡| t|jtgdtƒdfg¡| t|jtgddtƒfg¡| t|jtgdg¡| t|jtgdg¡| d¡dS)Nródata)rr)rrrhr7rb©r'rr-r¶rer*r?rrrÚ_testSendmsgBadCmsgO s&  ÿ ÿ ÿ ÿ ÿ ÿz SendmsgTests._testSendmsgBadCmsgÚ CMSG_SPACEcCs| |j d¡d¡dSrarcr?rrrÚtestSendmsgBadMultiCmsg^ sz$SendmsgTests.testSendmsgBadMultiCmsgcCs@| t|jtggd¢¡| t|jtgdtƒg¡| d¡dS)N©rrrñrbrir?rrrÚ_testSendmsgBadMultiCmsgd s  ÿ  ÿz%SendmsgTests._testSendmsgBadMultiCmsgcCs| |j d¡d¡dSrarcr?rrrÚtestSendmsgExcessCmsgRejectl sz(SendmsgTests.testSendmsgExcessCmsgRejectcCsbttdƒsT| t¡"}| tgddg¡Wdƒn1s<0Y| |jj¡|  d¡dS)Nrkrmrb) r r r'rr-r¶Ú assertIsNoner0rcr*©r@r1rrrÚ_testSendmsgExcessCmsgRejectq s   0z)SendmsgTests._testSendmsgExcessCmsgRejectcCsdSr2rr?rrrÚtestSendmsgAfterClosey sz"SendmsgTests.testSendmsgAfterClosecCs |j ¡| t|jtg¡dSr2)r)rr'rr-r¶r?rrrÚ_testSendmsgAfterClose} s z#SendmsgTests._testSendmsgAfterCloseN)rErFrGrSrUrVrWrXrYrZr]r^r`rdrfrgrjrr rlrõrnrorrrsrtrrrrrQ s,  rQc@sReZdZdd„Zdd„Zdd„Zdd„Zeej d vd ƒd d „ƒZ e j d d„ƒZ dS)ÚSendmsgStreamTestscCs| |j ttƒ¡t¡dSr2rRr?rrrÚtestSendmsgExplicitNoneAddr† sz.SendmsgStreamTests.testSendmsgExplicitNoneAddrcCs"| | tggdd¡ttƒ¡dSržrTr?rrrÚ_testSendmsgExplicitNoneAddrŠ sz/SendmsgStreamTests._testSendmsgExplicitNoneAddrcCs.| |j d¡d¡| |jj|jd¡dS©Nr“óaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa©r5©rµrNr´rr(r‚rBr?rrrÚtestSendmsgTimeout sz%SendmsgStreamTests.testSendmsgTimeoutc CsŽz||j d¡z| dg¡qWnDtjy4Yn<tyd}z|jtjkrP‚WYd}~nd}~00| d¡W|j   ¡n |j   ¡0dS)N縅ëQ¸ž?ryúsocket.timeout not raised) r)rÊr-r r5rrcÚENOMEMr#r(ror†rrrÚ_testSendmsgTimeout’ s   z&SendmsgStreamTests._testSendmsgTimeout>rz.TrŒ) r¾rçr¶rNrDrµr4r¡r@r±rrrÚtestRecvmsgIntoGeneratorÈ s ÿ  z)RecvmsgIntoTests.testRecvmsgIntoGeneratorcCs| t¡dSr2rr?rrrÚ_testRecvmsgIntoGeneratorÓ sz*RecvmsgIntoTests._testRecvmsgIntoGeneratorcCsxt ddgttƒ¡}|j |g¡\}}}}| |ttƒ¡| | ¡t¡| ||j¡| |g¡|j |dddS)Nr[rTrŒ) r\rçr¶rNrDrµÚtobytesr4r¡r@r±rrrÚtestRecvmsgIntoArrayÖ s z%RecvmsgIntoTests.testRecvmsgIntoArraycCs| t¡dSr2rr?rrrÚ_testRecvmsgIntoArrayà sz&RecvmsgIntoTests._testRecvmsgIntoArraycCsªtdƒ}tdƒ}tdƒ}|j |t|ƒdd…|g¡\}}}}| |tdƒ¡| |tdƒ¡| |tdƒ¡| |td ƒ¡| ||j¡| |g¡|j|d d dS) Ns----s 0123456789s--------------r£é óMary had a little lambsMarys 01 had a 9slittle lamb---TrŒ) r¾rNrDÚ memoryviewrµrçr4r¡r@)r@Úb1Úb2Zb3r²rÓrãrÁrrrÚtestRecvmsgIntoScatterã sÿ  z'RecvmsgIntoTests.testRecvmsgIntoScattercCs| d¡dS)Nr»)r*r?rrrÚ_testRecvmsgIntoScatterò sz(RecvmsgIntoTests._testRecvmsgIntoScatterN) rErFrGr³r´rµr¶r¸r¹r¿rÀrrrrr°¦ s  r°c@s`eZdZz ddlZWney*dZYn0edejƒZee dƒdd„ƒZ ee dƒdd „ƒZ dS) ÚCmsgMacroTestsrNiÿÿÿÚCMSG_LENcCs¾|jt d¡d}ttdƒƒtt|d|ƒƒ}| t d¡t d¡jd¡|D]2}t |¡}| |t d¡|¡|  ||j¡qT|  t tjd¡|  t tj|¡|  t tjt j ¡dS)Nrrqér8r£r…)Úsocklen_t_limitr rÂÚlistr"rhr\ÚitemsizerµrFr'rrrÚmaxsize)r@ÚtoobigrIÚnr,rrrÚ testCMSG_LEN s zCmsgMacroTests.testCMSG_LENrkcCsä|jt d¡d}ttdƒƒtt|d|ƒƒ}t d¡}| |t d¡jd¡|D]T}t |¡}| ||¡| |t  |¡¡| ||t  d¡¡|  ||j¡|}qX|  t tjd¡|  t tj|¡|  t tjt j¡dS)NrqrÃrr8r£r…)rÄr rkrÅr"rhr\rÆrErÂrFr'rrrrÇ)r@rÈrIZlastrÉr,rrrÚtestCMSG_SPACE s   zCmsgMacroTests.testCMSG_SPACE) rErFrGr‰r¸rÄÚminrŠrr rÊrËrrrrrÁö s     rÁc@sHeZdZdZdd„Zdd„Zdd„Zdd „Zd d „Zdddd„Z dd„Z dd„Z dd„Z dd„Z eedƒdd„ƒZejdd„ƒZdd„Zdd „Ze ejd!kd"¡e ed#¡eedƒd$d%„ƒƒƒZeje ejd!kd"¡e ed#¡d&d'„ƒƒƒZe ejd!kd"¡e ed#¡eedƒd(d)„ƒƒƒZeje ejd!kd"¡e ed#¡d*d+„ƒƒƒZd,d-„Ze ejd!kd.¡d/d0„ƒZd1d2„Z d3d4„Z!d5d6„Z"eedƒd7d8„ƒZ#e#jd9d:„ƒZ$ded;d<„Z%d=d>„Z&d?d@„Z'dAdB„Z(dCdD„Z)dEdF„Z*dGdH„Z+dIdJ„Z,dKdL„Z-dMdN„Z.dOdP„Z/dfdQdR„Z0dSdT„Z1dUdV„Z2dWdX„Z3dYdZ„Z4d[d\„Z5d]d^„Z6d_d`„Z7dadb„Z8dcS)gÚ SCMRightsTesti«ªÿÿcCs\g}t|ƒD]J}t ¡\}}| tj|¡| tj|¡t |t|ƒ  ¡¡|  |¡q |Sr2) r"rÐÚmkstemprUrÓrØrÚwriterÚencodeÚappend)r@rÉÚfdsr8rKrÚrrrÚnewFDs9 s   zSCMRightsTest.newFDscCsBt|ƒD]4\}}t |dtj¡| t |d¡t|ƒ ¡¡qdS)Nrr³)Ú enumeraterÓÚlseekÚSEEK_SETrµr rrÐ)r@rÒrÉrKrrrÚcheckFDsE szSCMRightsTest.checkFDscCs| |j|¡dSr2)rUÚcloseRecvmsgFDsr1rrrr.L sz#SCMRightsTest.registerRecvmsgResultcCsn|dD]`\}}}|tjkr|tjkrt d¡}| |dt|ƒt|ƒ|j…¡|D]}t |¡qXqdS)Nrqr8) r r5Ú SCM_RIGHTSr\Ú frombytesrçrÆrÓr)r@Zrecvmsg_resultÚ cmsg_levelÚ cmsg_typeÚ cmsg_datarÒrKrrrrØO s ÿ ÿzSCMRightsTest.closeRecvmsgFDsc Cs8| | tgtjtjt d| |¡¡fg¡ttƒ¡dS)Nr8) rµr-r¶r r5rÙr\rÓrç)r@rÉrrrÚcreateAndSendFDs[ sþÿûzSCMRightsTest.createAndSendFDsrqrcCsä|\}}}}| |t¡| ||j¡|j|dtj|d| |t¡|  t |ƒ|¡t   d¡} |D]`} | | t ¡| \} } } | | tj ¡| | tj¡| | t¡| t | ƒtd¡|  | ¡qd| t | ƒ|¡| | ¡dS)NT©r<r>r?r8r)rµr¶r4r¡r@r r5rrÅrFrçr\Útupler5rÙr³Ú SIZEOF_INTrÚr×)r@Znumfdsr/ÚmaxcmsgsÚ ignoreflagsr¸rÓrãrÁrÒÚitemrÛrÜrÝrrrÚcheckRecvmsgFDse s&   ÿ      zSCMRightsTest.checkRecvmsgFDscCs | d| |jttƒd¡¡dS)Nrqr›©rår0rNrçr¶r?rrrÚtestFDPassSimple€ sÿzSCMRightsTest.testFDPassSimplec Cs<| | tgtjtjt d| d¡¡ ¡fg¡t tƒ¡dS)Nr8rq) rµr-r¶r r5rÙr\rÓr·rçr?rrrÚ_testFDPassSimple… sþþúzSCMRightsTest._testFDPassSimplecCs | d| |jttƒd¡¡dS)Nr.r›rær?rrrÚtestMultipleFDPassŽ sÿz SCMRightsTest.testMultipleFDPasscCs| d¡dS©Nr.©rÞr?rrrÚ_testMultipleFDPass“ sz!SCMRightsTest._testMultipleFDPassrkc Cs*| d| |jttƒt dt¡¡¡dSrê)rår0rNrçr¶r rkrár?rrrÚtestFDPassCMSG_SPACE– s  ÿÿz"SCMRightsTest.testFDPassCMSG_SPACEcCs| d¡dSrêrër?rrrÚ_testFDPassCMSG_SPACE sz#SCMRightsTest._testFDPassCMSG_SPACEc Cs0|jd| |jttƒt dt¡¡tjddS)Nrqr.©rã) rår0rNrçr¶r rÂrár5r?rrrÚtestFDPassCMSG_LEN¡ s  ÿúz SCMRightsTest.testFDPassCMSG_LENcCs| d¡dSrßrër?rrrÚ_testFDPassCMSG_LEN« sz!SCMRightsTest._testFDPassCMSG_LENr?zskipping, see issue #12958zskipping, see issue #22397cCs$|jd| |jttƒd¡dddS)Nr£r›)rârær?rrrÚtestFDPassSeparate® sþz SCMRightsTest.testFDPassSeparatec CsX| d¡\}}| | tgtjtjt d|g¡ftjtjt d|g¡fg¡ttƒ¡dS©Nr£r8© rÓrµr-r¶r r5rÙr\rç©r@Zfd0Úfd1rrrÚ_testFDPassSeparate¸ s  þ þýùz!SCMRightsTest._testFDPassSeparatec Cs@d}|j|| |jttƒt t¡t t|¡¡dtj ddS)Nr£)rârã) rår0rNrçr¶r rkrárÂr5)r@Znum_fdsrrrÚtestFDPassSeparateMinSpaceÆ s ÿÿüz(SCMRightsTest.testFDPassSeparateMinSpacec CsX| d¡\}}| | tgtjtjt d|g¡ftjtjt d|g¡fg¡ttƒ¡dSrórôrõrrrÚ_testFDPassSeparateMinSpaceÓ s  þ þýùz)SCMRightsTest._testFDPassSeparateMinSpacec Csfz| |g|¡}Wn>tyP}z&| |jt¡| |g¡}WYd}~n d}~00| |t|ƒ¡dSr2)r-rrrcrgrµrç)r@r¸rÓr²rŽrrrÚsendAncillaryIfPossibleá s "z%SCMRightsTest.sendAncillaryIfPossiblezsee issue #24725cCs&|jd| |jttƒd¡tjddS)Nrr›rï)rår0rNrçr¶r r5r?rrrÚtestFDPassEmptyì s ÿþzSCMRightsTest.testFDPassEmptycCs| ttjtjdfg¡dS©Nrñ)rúr¶r r5rÙr?rrrÚ_testFDPassEmptyô s þzSCMRightsTest._testFDPassEmptycCs˜| |jttƒd¡\}}}}| |t¡| ||j¡|j|dtj d|  t|ƒd¡|D]6\}}}| |tj ¡| |tj ¡|  t|ƒt¡q\dS)Nr›Tr£rq)r0rNrçr¶rµr4r¡r@r r5rFr5rÙÚ assertLessrá©r@r¸rÓrãrÁrÛrÜrÝrrrÚtestFDPassPartialIntù sÿ  z"SCMRightsTest.testFDPassPartialIntc Cs4| ttjtjt d|jg¡ ¡dd…fg¡dS)Nr8r…)rúr¶r r5rÙr\Úbadfdr·r?rrrÚ_testFDPassPartialIntsþþz#SCMRightsTest._testFDPassPartialIntc CsÐ| |jttƒd¡\}}}}| |t¡| ||j¡|j|dtj d|  t|ƒd¡t   d¡}|D]J\}}}| |tj ¡| |tj ¡| |dt|ƒt|ƒ|j…¡qf|  t|ƒd¡| |¡dS)Nr›Tr£r£r8)r0rNrçr¶rµr4r¡r@r r5rFr\r5rÙrÚrÆr×) r@r¸rÓrãrÁrÒrÛrÜrÝrrrÚtestFDPassPartialIntInMiddle s ÿ   ÿ z*SCMRightsTest.testFDPassPartialIntInMiddlec CsZ| d¡\}}| ttjtjt d||jg¡ ¡dd…ftjtjt d|g¡fg¡dS)Nr£r8r…) rÓrúr¶r r5rÙr\rr·rõrrrÚ_testFDPassPartialIntInMiddle sþ þýþz+SCMRightsTest._testFDPassPartialIntInMiddlecCsJ|\}}}}| |t¡| ||j¡| |g¡|j|dtj|ddS)NT©r<r=r?)rµr¶r4r¡r@r r5)r@r/rãr¸rÓrãrÁrrrÚcheckTruncatedHeader,s    ÿz"SCMRightsTest.checkTruncatedHeadercCs"|j| |jttƒ¡tjddS©Nrï©rr0rNrçr¶r r5r?rrrÚtestCmsgTruncNoBufSize6süz$SCMRightsTest.testCmsgTruncNoBufSizecCs| d¡dSrßrër?rrrÚ_testCmsgTruncNoBufSize?sz%SCMRightsTest._testCmsgTruncNoBufSizecCs$|j| |jttƒd¡tjddS)Nrrïrr?rrrÚtestCmsgTrunc0BsÿzSCMRightsTest.testCmsgTrunc0cCs| d¡dSrßrër?rrrÚ_testCmsgTrunc0GszSCMRightsTest._testCmsgTrunc0cCs| | |jttƒd¡¡dSrß)rr0rNrçr¶r?rrrÚtestCmsgTrunc1MszSCMRightsTest.testCmsgTrunc1cCs| d¡dSrßrër?rrrÚ_testCmsgTrunc1PszSCMRightsTest._testCmsgTrunc1cCs"| | |jttƒtd¡¡dSrî)rr0rNrçr¶rár?rrrÚtestCmsgTrunc2IntSsÿzSCMRightsTest.testCmsgTrunc2IntcCs| d¡dSrßrër?rrrÚ_testCmsgTrunc2IntZsz SCMRightsTest._testCmsgTrunc2Intc Cs(| | |jttƒt d¡d¡¡dSrú)rr0rNrçr¶r rÂr?rrrÚtestCmsgTruncLen0Minus1]s ÿz%SCMRightsTest.testCmsgTruncLen0Minus1cCs| d¡dSrßrër?rrrÚ_testCmsgTruncLen0Minus1asz&SCMRightsTest._testCmsgTruncLen0Minus1c Csò| |jttƒ|¡\}}}}| |t¡| ||j¡|j|dtj d|dkr\|gkr\dS| t|ƒd¡|d\}} } | |tj ¡| | tj ¡|  t| ƒ|¡|  t| ƒ|¡t d¡} |  | dt| ƒt| ƒ| j…¡| | ¡dS)NT©r<r=rrqr8)r0rNrçr¶rµr4r¡r@r r5r5rÙrErFr\rÚrÆr×) r@ÚancbufÚmaxdataZmindatar¸rÓrãrÁrÛrÜrÝrÒrrrÚcheckTruncatedArraygs&ÿ   ÿz!SCMRightsTest.checkTruncatedArraycCs|jt d¡dddS)Nr©rr©rr rÂr?rrrÚtestCmsgTruncLen0szSCMRightsTest.testCmsgTruncLen0cCs| d¡dSrßrër?rrrÚ_testCmsgTruncLen0‚sz SCMRightsTest._testCmsgTruncLen0cCs|jt d¡ddddS)Nrrqrrr?rrrÚtestCmsgTruncLen0Plus1…sz$SCMRightsTest.testCmsgTruncLen0Plus1cCs| d¡dSrîrër?rrrÚ_testCmsgTruncLen0Plus1ˆsz%SCMRightsTest._testCmsgTruncLen0Plus1cCs|jt t¡tddS)Nr©rr rÂrár?rrrÚtestCmsgTruncLen1‹s ÿzSCMRightsTest.testCmsgTruncLen1cCs| d¡dSrîrër?rrrÚ_testCmsgTruncLen1sz SCMRightsTest._testCmsgTruncLen1cCs(|jt dt¡ddtdddS)Nr£rqrrr?rrrÚtestCmsgTruncLen2Minus1’s ÿz%SCMRightsTest.testCmsgTruncLen2Minus1cCs| d¡dSrîrër?rrrÚ_testCmsgTruncLen2Minus1–sz&SCMRightsTest._testCmsgTruncLen2Minus1N)rqr)r)r)9rErFrGrrÓr×r.rØrÞrårçrèrérìrr rírõrîrðrñr¦rjrrr•rròr÷rørùrúrûrýrrrrrr r r r r rrrrrrrrrrrrr r!rrrrrÍ1 s~                     rÍc@seZdZdZdZdd„Zd^dd„Zeed d ƒd d „ƒZ e j d d„ƒZ eedd d ƒdd„ƒZ e j dd„ƒZ eejdƒeed d ƒdd„ƒƒZej dd„ƒZd_dd„Zeed d ddƒdd„ƒZej dd „ƒZeedd d ddƒd!d"„ƒZej d#d$„ƒZeejdƒeedd d ddƒd%d&„ƒƒZej d'd(„ƒZeejdƒeedd d ddƒd)d*„ƒƒZej d+d,„ƒZd`d-d.„Zeed d ƒd/d0„ƒZej d1d2„ƒZeed d ƒd3d4„ƒZej d5d6„ƒZeed d ƒd7d8„ƒZej d9d:„ƒZeed d ƒd;d<„ƒZ e j d=d>„ƒZ!eed d ƒd?d@„ƒZ"e"j dAdB„ƒZ#eed d ƒdCdD„ƒZ$e$j dEdF„ƒZ%dadGdH„Z&eedd d ddƒdIdJ„ƒZ'e'j dKdL„ƒZ(eedd d ddƒdMdN„ƒZ)e)j dOdP„ƒZ*eedd d ddƒdQdR„ƒZ+e+j dSdT„ƒZ,eedd d ddƒdUdV„ƒZ-e-j dWdX„ƒZ.eedd d ddƒdYdZ„ƒZ/e/j d[d\„ƒZ0d]S)bÚRFC3542AncillaryTestr£r…cCs4i}|D]&\}}}| ||f|¡||||f<q|Sr2)r)r@rÓÚdrÛrÜrÝrrrÚancillaryMapping«s z%RFC3542AncillaryTest.ancillaryMappingr±rc Cs|j tjtjd¡|j ¡| |jtt ƒ|¡\}}}}|  |t ¡|  ||j ¡|j |dtj|d|  t|ƒd¡| |dt¡|d\}} } |  |tj¡|  | tj¡| | t¡|  t| ƒt¡t d¡} |  | ¡| | dd¡| | d|¡dS)NrqTrßrr8)rNrÇr r:rFr(ror0rçr¶rµr4r¡r@r5rràrNr³rár\rÚrErF) r@Ú ancbufsizeÚmaxhoprãr¸rÓrãrÁrÛrÜrÝr¦rrrÚ checkHopLimitµs. ÿ ÿ   ÿ   z"RFC3542AncillaryTest.checkHopLimitrFrNcCs|jdddS©Nr›©r%)r'r?rrrÚtestRecvHopLimitÑsz%RFC3542AncillaryTest.testRecvHopLimitcCs$| |jj|jd¡| t¡dSr¡©rr(r‚rBr*r¶r?rrrÚ_testRecvHopLimitÖsz&RFC3542AncillaryTest._testRecvHopLimitrkcCs|jt t¡ddS)Nr))r'r rkrár?rrrÚtestRecvHopLimitCMSG_SPACEÞsz/RFC3542AncillaryTest.testRecvHopLimitCMSG_SPACEcCs$| |jj|jd¡| t¡dSr¡r+r?rrrÚ_testRecvHopLimitCMSG_SPACEãsz0RFC3542AncillaryTest._testRecvHopLimitCMSG_SPACErÕcCs|jd|jddS©Nr›)r%r&)r'Ú hop_limitr?rrrÚtestSetHopLimitísz$RFC3542AncillaryTest.testSetHopLimitc CsL| |jj|jd¡| | tgtjtj t   d|j g¡fg¡t tƒ¡dS©Nrzr8) rr(r‚rBrµr-r¶r r:rNr\r0rçr?rrrÚ_testSetHopLimitôsÿÿüz%RFC3542AncillaryTest._testSetHopLimitc CsB|j tjtjd¡|j tjtjd¡|j ¡| |jt t ƒ|¡\}}}}|  |t ¡|  ||j ¡|j|dtj|d|  t |ƒd¡| |¡}|tjtjf} |  t | ƒt¡t d¡} |  | ¡| | dd¡| | dd¡|tjtjf} |  t | ƒt¡t d¡} |  | ¡| | dd¡| | d|¡dS)NrqTrßr£r8rr±)rNrÇr r:rFrBr(ror0rçr¶rµr4r¡r@r5r$rCrár\rÚrErFrN) r@r%r&rãr¸rÓrãrÁZancmapZtcdatar¦ZhldatarrrÚcheckTrafficClassAndHopLimitýs: ÿ ÿ ÿ   ÿ     z1RFC3542AncillaryTest.checkTrafficClassAndHopLimitrBrCcCs|jdddSr()r4r?rrrÚtestRecvTrafficClassAndHopLimit!sz4RFC3542AncillaryTest.testRecvTrafficClassAndHopLimitcCs$| |jj|jd¡| t¡dSr¡r+r?rrrÚ _testRecvTrafficClassAndHopLimit'sz5RFC3542AncillaryTest._testRecvTrafficClassAndHopLimitcCs|jt t¡dddS©Nr£r))r4r rkrár?rrrÚ)testRecvTrafficClassAndHopLimitCMSG_SPACE,s ÿz>RFC3542AncillaryTest.testRecvTrafficClassAndHopLimitCMSG_SPACEcCs$| |jj|jd¡| t¡dSr¡r+r?rrrÚ*_testRecvTrafficClassAndHopLimitCMSG_SPACE4sz?RFC3542AncillaryTest._testRecvTrafficClassAndHopLimitCMSG_SPACEcCs|jd|jddSr/©r4r0r?rrrÚtestSetTrafficClassAndHopLimit9sÿz3RFC3542AncillaryTest.testSetTrafficClassAndHopLimitc Csd| |jj|jd¡| | tgtjtj t   d|j g¡ftjtj t   d|j g¡fg¡ttƒ¡dSr2)rr(r‚rBrµr-r¶r r:rCr\Ú traffic_classrNr0rçr?rrrÚ_testSetTrafficClassAndHopLimitBsÿÿþÿúz4RFC3542AncillaryTest._testSetTrafficClassAndHopLimitcCs|jd|jddSr/r:r?rrrÚtestOddCmsgSizeMsÿz$RFC3542AncillaryTest.testOddCmsgSizec Csæ| |jj|jd¡zJ| tgtjtjt   d|j g¡  ¡dftjtj t   d|j g¡fg¡}Wn€tyà}zh| |jt¡| tgtjtjt   d|j g¡ftjtj t   d|j g¡fg¡}| |ttƒ¡WYd}~n d}~00dS)Nrzr8r˜)rr(r‚rBr-r¶r r:rCr\r<r·rNr0rrrcrgrµrç)r@r²rŽrrrÚ_testOddCmsgSizeWs2ÿÿþþÿÿþþz%RFC3542AncillaryTest._testOddCmsgSizecCs|j tjtjd¡|j ¡|dur*dn|f}|j|jtt ƒg|¢RŽ\}}}}|  |t ¡|  ||j ¡|  |g¡|j |dtj|ddS)NrqrTr)rNrÇr r:rFr(ror0rçr¶rµr4r¡r@r5)r@r%rãrQr¸rÓrãrÁrrrÚcheckHopLimitTruncatedHeaderms  ÿ ÿÿ   ÿz1RFC3542AncillaryTest.checkHopLimitTruncatedHeadercCs|jdtjddS)N©r%rã©r@r r5r?rrrr sûz+RFC3542AncillaryTest.testCmsgTruncNoBufSizecCs$| |jj|jd¡| t¡dSr¡r+r?rrrr Œsz,RFC3542AncillaryTest._testCmsgTruncNoBufSizecCs|jdtjddS)NrrArBr?rrrÚtestSingleCmsgTrunc0‘sÿz)RFC3542AncillaryTest.testSingleCmsgTrunc0cCs$| |jj|jd¡| t¡dSr¡r+r?rrrÚ_testSingleCmsgTrunc0˜sz*RFC3542AncillaryTest._testSingleCmsgTrunc0cCs|jdddS)Nrqr))r@r?rrrÚtestSingleCmsgTrunc1 sz)RFC3542AncillaryTest.testSingleCmsgTrunc1cCs$| |jj|jd¡| t¡dSr¡r+r?rrrÚ_testSingleCmsgTrunc1¤sz*RFC3542AncillaryTest._testSingleCmsgTrunc1cCs|jdtddSr7)r@rár?rrrÚtestSingleCmsgTrunc2Int©sz,RFC3542AncillaryTest.testSingleCmsgTrunc2IntcCs$| |jj|jd¡| t¡dSr¡r+r?rrrÚ_testSingleCmsgTrunc2Int­sz-RFC3542AncillaryTest._testSingleCmsgTrunc2IntcCs|jt d¡dddS)Nrrqr))r@r rÂr?rrrÚtestSingleCmsgTruncLen0Minus1²sz2RFC3542AncillaryTest.testSingleCmsgTruncLen0Minus1cCs$| |jj|jd¡| t¡dSr¡r+r?rrrÚ_testSingleCmsgTruncLen0Minus1¶sz3RFC3542AncillaryTest._testSingleCmsgTruncLen0Minus1cCsÂ|j tjtjd¡|j ¡| |jtt ƒt  t ¡d¡\}}}}|  |t ¡|  ||j¡|j|dtjd| t|ƒd¡|r¾|d\}}}|  |tj¡|  |tj¡| t|ƒt ¡dS)NrqTrr)rNrÇr r:rFr(ror0rçr¶rÂrárµr4r¡r@r5rFrNrþrÿrrrÚtestSingleCmsgTruncInData»s  ÿ ÿ  z.RFC3542AncillaryTest.testSingleCmsgTruncInDatacCs$| |jj|jd¡| t¡dSr¡r+r?rrrÚ_testSingleCmsgTruncInDataÑsz/RFC3542AncillaryTest._testSingleCmsgTruncInDatac Cs|j tjtjd¡|j tjtjd¡|j ¡| |jt t ƒ|¡\}}}}|  |t ¡|  ||j ¡|j|dtj|d|  t |ƒd¡|d\}}} |  |tj¡| |tjtjh¡|  t | ƒt¡t d¡} |  | ¡| | dd¡| | dd¡dS)NrqTrrr8r±)rNrÇr r:rFrBr(ror0rçr¶rµr4r¡r@r5rrCrNrár\rÚrErF) r@r%rãr¸rÓrãrÁrÛrÜrÝr¦rrrÚcheckTruncatedSecondHeaderÖs0 ÿ ÿ ÿ   ÿ  z/RFC3542AncillaryTest.checkTruncatedSecondHeadercCs|jt t¡tjddSr)rMr rkrár5r?rrrÚtestSecondCmsgTrunc0ös ÿz)RFC3542AncillaryTest.testSecondCmsgTrunc0cCs$| |jj|jd¡| t¡dSr¡r+r?rrrÚ_testSecondCmsgTrunc0üsz*RFC3542AncillaryTest._testSecondCmsgTrunc0cCs| t t¡d¡dSrß©rMr rkrár?rrrÚtestSecondCmsgTrunc1sz)RFC3542AncillaryTest.testSecondCmsgTrunc1cCs$| |jj|jd¡| t¡dSr¡r+r?rrrÚ_testSecondCmsgTrunc1sz*RFC3542AncillaryTest._testSecondCmsgTrunc1cCs| t t¡dt¡dSrîrPr?rrrÚtestSecondCmsgTrunc2Int s ÿz,RFC3542AncillaryTest.testSecondCmsgTrunc2IntcCs$| |jj|jd¡| t¡dSr¡r+r?rrrÚ_testSecondCmsgTrunc2Intsz-RFC3542AncillaryTest._testSecondCmsgTrunc2IntcCs"| t t¡t d¡d¡dSrú)rMr rkrárÂr?rrrÚtestSecondCmsgTruncLen0Minus1s  ÿÿz2RFC3542AncillaryTest.testSecondCmsgTruncLen0Minus1cCs$| |jj|jd¡| t¡dSr¡r+r?rrrÚ_testSecondCmsgTruncLen0Minus1sz3RFC3542AncillaryTest._testSecondCmsgTruncLen0Minus1c CsT|j tjtjd¡|j tjtjd¡|j ¡| |jt t ƒt  t ¡t  t ¡d¡\}}}}| |t ¡| ||j¡|j|dtjdtjtjh}| d¡\}}}| |tj¡| |¡| t |ƒt ¡t d¡} |  |¡| | dd¡| | dd¡|rD| d¡\}}}| |tj¡| |¡| t |ƒt ¡| |g¡dS)NrqTrrr8r±)rNrÇr r:rFrBr(ror0rçr¶rkrárÂrµr4r¡r@r5rCrNÚpopÚremover\rÚrErFrþ) r@r¸rÓrãrÁZ cmsg_typesrÛrÜrÝr¦rrrÚtestSecomdCmsgTruncInData!s: ÿ ÿ  þ       z.RFC3542AncillaryTest.testSecomdCmsgTruncInDatacCs$| |jj|jd¡| t¡dSr¡r+r?rrrÚ_testSecomdCmsgTruncInDataFsz/RFC3542AncillaryTest._testSecomdCmsgTruncInDataN)r±r)r±r)r)r)1rErFrGr0r<r$r'rr r*rõr,r-r.r1r3r4r5r6r8r9r;r=r>r?r@r r rCrDrErFrGrHrIrJrKrLrMrNrOrQrRrSrTrUrVrYrZrrrrr"šsÌ           ÿ $ÿ   ÿ    ÿ   ÿ                      ÿ   ÿ   ÿ   ÿ   ÿ #r"c@s eZdZdS)ÚSendrecvmsgUDPTestBaseN©rErFrGrrrrr[Nsr[rÕc@s eZdZdS)ÚSendmsgUDPTestNr\rrrrr]Ssr]rÒc@s eZdZdS)ÚRecvmsgUDPTestNr\rrrrr^Wsr^rDc@s eZdZdS)ÚRecvmsgIntoUDPTestNr\rrrrr_[sr_c@seZdZdd„ZdS)ÚSendrecvmsgUDP6TestBasecCs | |dd…|dd…¡dSr!r2r3rrrr4dsz+SendrecvmsgUDP6TestBase.checkRecvmsgAddressN©rErFrGr4rrrrr``sr`r-rër c@s eZdZdS)ÚSendmsgUDP6TestNr\rrrrrbisrbc@s eZdZdS)ÚRecvmsgUDP6TestNr\rrrrrcosrcc@s eZdZdS)ÚRecvmsgIntoUDP6TestNr\rrrrrdusrdr:c@s eZdZdS)ÚRecvmsgRFC3542AncillaryUDP6TestNr\rrrrre{srec@s eZdZdS)Ú#RecvmsgIntoRFC3542AncillaryUDP6TestNr\rrrrrfƒsrfc@s eZdZdS)ÚSendrecvmsgUDPLITETestBaseNr\rrrrrgsrgc@s eZdZdS)ÚSendmsgUDPLITETestNr\rrrrrh”srhc@s eZdZdS)ÚRecvmsgUDPLITETestNr\rrrrrišsric@s eZdZdS)ÚRecvmsgIntoUDPLITETestNr\rrrrrj srjc@seZdZdd„ZdS)ÚSendrecvmsgUDPLITE6TestBasecCs | |dd…|dd…¡dSr!r2r3rrrr4­sz/SendrecvmsgUDPLITE6TestBase.checkRecvmsgAddressNrarrrrrk§srkc@s eZdZdS)ÚSendmsgUDPLITE6TestNr\rrrrrl²srlc@s eZdZdS)ÚRecvmsgUDPLITE6TestNr\rrrrrmºsrmc@s eZdZdS)ÚRecvmsgIntoUDPLITE6TestNr\rrrrrnÂsrnc@s eZdZdS)Ú#RecvmsgRFC3542AncillaryUDPLITE6TestNr\rrrrroÊsroc@s eZdZdS)Ú'RecvmsgIntoRFC3542AncillaryUDPLITE6TestNr\rrrrrpÔs rpc@s eZdZdS)ÚSendrecvmsgTCPTestBaseNr\rrrrrqàsrqc@s eZdZdS)ÚSendmsgTCPTestNr\rrrrrräsrrc@s eZdZdS)ÚRecvmsgTCPTestNr\rrrrrsèsrsc@s eZdZdS)ÚRecvmsgIntoTCPTestNr\rrrrrtísrtc@s eZdZdS)ÚSendrecvmsgSCTPStreamTestBaseNr\rrrrruósruz6IPPROTO_SCTP: [Errno 62] Protocol not supported on AIXr:r/rçc@s eZdZdS)ÚSendmsgSCTPStreamTestNr\rrrrrvøsrvcseZdZ‡fdd„Z‡ZS)ÚRecvmsgSCTPStreamTestc sTztt|ƒ ¡Wn<tyN}z$|jtjkr0‚| d¡WYd}~n d}~00dS©Nz4sporadic ENOTCONN (kernel issue?) - see issue #13876)rKrwr©rrcÚENOTCONNrb©r@rŽrSrrr©s  z$RecvmsgSCTPStreamTest.testRecvmsgEOF©rErFrGr©rXrrrSrrwþsrwcseZdZ‡fdd„Z‡ZS)ÚRecvmsgIntoSCTPStreamTestc sTztt|ƒ ¡Wn<tyN}z$|jtjkr0‚| d¡WYd}~n d}~00dSrx)rKr|r©rrcryrbrzrSrrr©s  z(RecvmsgIntoSCTPStreamTest.testRecvmsgEOFr{rrrSrr| sr|c@s eZdZdS)ÚSendrecvmsgUnixStreamTestBaseNr\rrrrr}sr}rÜc@s eZdZdS)ÚSendmsgUnixStreamTestNr\rrrrr~sr~c@s eZdZdS)ÚRecvmsgUnixStreamTestNr\rrrrr$src@s eZdZdS)ÚRecvmsgIntoUnixStreamTestNr\rrrrr€*sr€r5rÙc@s eZdZdS)ÚRecvmsgSCMRightsStreamTestNr\rrrrr0src@s eZdZdS)ÚRecvmsgIntoSCMRightsStreamTestNr\rrrrr‚5sr‚csFeZdZ‡fdd„ZejZeedƒr2dZ dd„Z n dZ dd„Z ‡Z S) ÚInterruptedTimeoutBasecs2tƒ ¡t tjdd„¡}| tjtj|¡dS)NcSsddSrßr)ÚsignumržrrrrðIrñz.InterruptedTimeoutBase.setUp..)rKrArýrþrU)r@Zorig_alrm_handlerrSrrrAFs  ÿzInterruptedTimeoutBase.setUpÚ setitimergš™™™™™©?cCst tj|¡dSr2)rýr…Ú ITIMER_REAL©r@ZsecondsrrrÚsetAlarmUszInterruptedTimeoutBase.setAlarmr£cCst |¡dSr2)rýrôr‡rrrrˆ[s) rErFrGrArrAr5r rýÚ alarm_timerˆrXrrrSrrƒAs   rƒÚ siginterruptrôr…z+Don't have signal.alarm or signal.setitimercsleZdZ‡fdd„Zdd„Zdd„Zdd„Zd d „Zd d „Ze e j d ƒdd„ƒZ e e j dƒdd„ƒZ ‡Z S)ÚInterruptedRecvTimeoutTestcstƒ ¡|j |j¡dSr2)rKrAr;rÊr5r?rSrrrAhs z InterruptedRecvTimeoutTest.setUpc OsdzR| |j¡| t¡}||i|¤ŽWdƒn1s<0YW| d¡n | d¡0dSrž)rˆr‰r'rÿ©r@r€rQrRr1rrrÚcheckInterruptedRecvls   .z/InterruptedRecvTimeoutTest.checkInterruptedRecvcCs| |jjd¡dSr²)rr;r´r?rrrÚtestInterruptedRecvTimeoutvsz5InterruptedRecvTimeoutTest.testInterruptedRecvTimeoutcCs| |jjtdƒ¡dSr²)rr;Ú recv_intor¾r?rrrÚtestInterruptedRecvIntoTimeoutysz9InterruptedRecvTimeoutTest.testInterruptedRecvIntoTimeoutcCs| |jjd¡dSr²)rr;r r?rrrÚtestInterruptedRecvfromTimeout|sz9InterruptedRecvTimeoutTest.testInterruptedRecvfromTimeoutcCs| |jjtdƒ¡dSr²)rr;Ú recvfrom_intor¾r?rrrÚ"testInterruptedRecvfromIntoTimeoutsz=InterruptedRecvTimeoutTest.testInterruptedRecvfromIntoTimeoutrÒcCs| |jjd¡dSr²)rr;rÒr?rrrÚtestInterruptedRecvmsgTimeout‚sz8InterruptedRecvTimeoutTest.testInterruptedRecvmsgTimeoutrDcCs| |jjtdƒg¡dSr²)rr;rDr¾r?rrrÚ!testInterruptedRecvmsgIntoTimeout†sz0YW| d¡n | d¡0dSrž)r'rÿrˆr‰rŒrrrÚcheckInterruptedSend§s   0z/InterruptedSendTimeoutTest.checkInterruptedSendr›r«cCs| |jjd¡dSr‚)r›rÂr»r?rrrÚtestInterruptedSendTimeout´sz5InterruptedSendTimeoutTest.testInterruptedSendTimeoutcCs| |jjd|j¡dSr‚)r›rÂr/rÉr?rrrÚtestInterruptedSendtoTimeout¸s ÿz7InterruptedSendTimeoutTest.testInterruptedSendtoTimeoutrÕcCs| |jjdg¡dSr‚)r›rÂrÕr?rrrÚtestInterruptedSendmsgTimeoutÁsz8InterruptedSendTimeoutTest.testInterruptedSendmsgTimeout)rErFrGrAr™r›rZrequires_mac_verrœrrr ržrXrrrSrr–s       r–c@seZdZdd„Zdd„ZdS)Ú TCPCloserTestcCsh|j ¡\}}| ¡|j}t |gggd¡\}}}| ||g¡| | d¡d¡| ¡| ¡dS)Nçð?rqrñ)r;r«rr—rÛrµr´)r@r¬rÁÚsdr rÏr rrrÚ testCloseÉszTCPCloserTest.testClosecCs |j t|jf¡t d¡dS©Nr )r—r±rŸr=r¯r°r?rrrÚ _testCloseÖszTCPCloserTest._testCloseN)rErFrGr¢r¤rrrrrŸÇs rŸc@sNeZdZddd„Zdd„Zdd„Zdd „Zd d „Zd d „Zdd„Z dd„Z dS)ÚBasicSocketPairTestr’cCstj||ddSr“)rÃrLr–rrrrLÝszBasicSocketPairTest.__init__cCs\| |tj¡ttdƒr*| |jtj¡n| |jtj¡| |jtj¡| |j d¡dS)NrÜr) rr r rµrrÜr:rôr/rrârrrÚ_check_defaultsàs  z#BasicSocketPairTest._check_defaultscCs| |j¡dSr2)r¦r—r?rrrÚ _testDefaultsész!BasicSocketPairTest._testDefaultscCs| |j¡dSr2)r¦r;r?rrrÚ testDefaultsìsz BasicSocketPairTest.testDefaultscCs|j d¡}| |t¡dSr²)r;r´rµr¶r·rrrrúïs zBasicSocketPairTest.testRecvcCs|j t¡dSr2)r—r»r¶r?rrrrüószBasicSocketPairTest._testRecvcCs|j t¡dSr2)r;r»r¶r?rrrÚtestSendöszBasicSocketPairTest.testSendcCs|j d¡}| |t¡dSr²)r—r´rµr¶r·rrrÚ _testSendùs zBasicSocketPairTest._testSendN)r’) rErFrGrLr¦r§r¨rúrür©rªrrrrr¥Ûs  r¥c@s¶eZdZd&dd„Zdd„Zdd„Zdd „Zejd d „ƒZ e e¡Z e   e ed ƒd ¡e ddd¡dd„ƒƒZdd„Zdd„Zdd„Zdd„Zdd„Zdd„Zdd „Zd!d"„Zd#d$„Zd%S)'ÚNonBlockingTCPTestsr’cCst ¡|_tj||ddSr“)rMrvÚeventr‘rLr–rrrrLs zNonBlockingTCPTests.__init__cCsh| |j ¡|¡|dk}| | ¡|¡tdurd|du}t |tjtj¡}| t|tj@ƒ |¡dS)Nç) rµr;rœÚ getblockingr ÚF_GETFLrÓÚ O_NONBLOCKÚbool)r@rÙr5ÚblockingZ fd_blockingÚflagrrrÚassert_sock_timeoutsz'NonBlockingTCPTests.assert_sock_timeoutcCs |j d¡| |jd¡|j d¡| |jd¡|j d¡| |jd¡|j d¡| |jd¡|j d¡| |jd¡|j d¡| |jd¡dS)NTFr­rr›)r;rBr´rÊr?rrrÚtestSetBlockings      z#NonBlockingTCPTests.testSetBlockingcCsdSr2rr?rrrÚ_testSetBlocking)sz$NonBlockingTCPTests._testSetBlockingcCsbddl}|j|jkr| d¡|j d¡| |j ¡d¡|j |jd¡| |j ¡¡dS)Nrzneeds UINT_MAX < ULONG_MAXFr­rq) r‰rZ ULONG_MAXrbr;rBrµrœrprrrrÚtestSetBlocking_overflow,s   z,NonBlockingTCPTests.testSetBlocking_overflowrAztest needs socket.SOCK_NONBLOCKr£éécCs4|j ¡t tjtjtjB¡|_| |jd¡dSrž)r;rr r:r/rAr´r?rrrÚtestInitNonBlocking;s   ÿz'NonBlockingTCPTests.testInitNonBlockingcCsdSr2rr?rrrÚ_testInitNonBlockingEsz(NonBlockingTCPTests._testInitNonBlockingcCs`tdƒD|j d¡|j ¡\}}| |j¡| | ¡¡Wdƒn1sR0YdS)Nr›)r6r;rÊr«rUrrprœrÀrrrÚtestInheritFlagsBlockingHs    z,NonBlockingTCPTests.testInheritFlagsBlockingcCs|j t|jf¡dSr2©r—r±rŸr=r?rrrÚ_testInheritFlagsBlockingQsz-NonBlockingTCPTests._testInheritFlagsBlockingcCsfd}t|ƒF|j d¡|j ¡\}}| |j¡| | ¡|¡Wdƒn1sX0YdS)Ng4@r›)r6r;rÊr«rUrrµrœ)r@Zdefault_timeoutr¬rÁrrrÚtestInheritFlagsTimeoutTs    z+NonBlockingTCPTests.testInheritFlagsTimeoutcCs|j t|jf¡dSr2r½r?rrrÚ_testInheritFlagsTimeout_sz,NonBlockingTCPTests._testInheritFlagsTimeoutcCsÊ|j d¡t ¡}| t¡|j ¡\}}Wdƒn1sB0Yt ¡|}| |d¡|j  ¡t   |jgggt j ¡\}}}|j|vrž|  d¡|j ¡\}}| |j¡| | ¡¡dS)NFr z'Error trying to do accept after select.)r;rBr¯Ú monotonicr'ÚBlockingIOErrorr«rþr¬rorÛrÚ LONG_TIMEOUTr#rUrrprœ)r@Z start_timer¬rÁZdtr rÏr rrrÚ testAcceptbs  ,      zNonBlockingTCPTests.testAcceptcCs |j ¡|j t|jf¡dSr2)r¬r‚r—r±rŸr=r?rrrÚ _testAcceptxs zNonBlockingTCPTests._testAcceptcCs°|j ¡\}}| |j¡| d¡| t¡| tt ƒ¡}Wdƒn1sR0Y|j   ¡t   |gggt j¡\}}}||vr’| d¡| tt ƒ¡}| |t ¡dS)NFz0Error during select call to non-blocking socket.)r;r«rUrrBr'rÂr´rçr¶r¬rorÛrrÃr#rµ)r@r¬rÁr¸r rÏr rrrrús   ,  zNonBlockingTCPTests.testRecvcCs,|j t|jf¡|j ¡|j t¡dSr2)r—r±rŸr=r¬r‚rr¶r?rrrrü“s zNonBlockingTCPTests._testRecvN)r’)rErFrGrLr´rµr¶rrir·Z_testSetBlocking_overflowr¦rhr r Úrequires_linux_versionrºr»r¼r¾r¿rÀrÄrÅrúrürrrrr«þs*   ÿ    r«c@súeZdZdZdZdZdZdZdZe Z dZ e Z d;d d „Z d d „Zd d„Zdd„Zdd„Zdd„Zdd„Zdd„Zdd„Zdd„Zdd„Zdd „Zd!d"„Zd#d$„Zd%d&„Zd'd(„Zd)d*„Zd+d,„Zd-d.„Zd/d0„Z d1d2„Z!d3d4„Z"d5d6„Z#d7d8„Z$d9d:„Z%dS)<ÚFileObjectClassTestCaseaoUnit tests for the object returned by socket.makefile() self.read_file is the io object returned by makefile() on the client connection. You can read from this file to get output from the server. self.write_file is the io object returned by makefile() on the server connection. You can write to this file to send output to the client. r…rÚstrictNr rr’cCstj||ddSr“rùr–rrrrL´sz FileObjectClassTestCase.__init__cCsRdd„tdƒDƒ\|_|_|_|_t |¡|jj|j |j |j |j |j d|_dS)NcSsg|] }t ¡‘qSr)rMrv©rþr8rrrr¸sz1FileObjectClassTestCase.setUp..r.©ÚencodingÚerrorsÚnewline)r"Úevt1Úevt2Ú serv_finishedÚ cli_finishedr¾rAr¿r Ú read_modercrËrÌrÍÚ read_filer?rrrrA·sÿ üzFileObjectClassTestCase.setUpcCs6|j ¡|j ¡| |jj¡d|_t |¡dSr2)rÐrorÓrrÚclosedr¾rCr?rrrrCÁs   z FileObjectClassTestCase.tearDowncCs0t |¡|jj|j|j|j|j|jd|_ dS)NrÊ) r¾r‰rÂr Ú write_modercrËrÌrÍÚ write_filer?rrrr‰Ès üz#FileObjectClassTestCase.clientSetUpcCs6|j ¡|j ¡| |jj¡d|_t |¡dSr2)rÑrorÖrrrÔr¾rŒr?rrrrŒÐs   z&FileObjectClassTestCase.clientTearDowncCsx|j d¡|j d¡| tj|jjd¡| t¡}|j d¡Wdƒn1sX0Y| dt |j ƒ¡dS)Nrqrþz!cannot read from timed out object) r¿rÊrÓr r'r r5rrrr0)r@ÚctxrrrÚtestReadAfterTimeout×s    *z,FileObjectClassTestCase.testReadAfterTimeoutcCs.|j |jdd…¡|j ¡|j ¡dS)Nrrþ)rÖrÏÚ write_msgÚflushrÐr‚r?rrrÚ_testReadAfterTimeoutãs z-FileObjectClassTestCase._testReadAfterTimeoutcCs<|j t|jƒd¡}|j d¡}||}| ||j¡dSr_)rÓr rçÚread_msgrµ)r@Ú first_segZ second_segr¸rrrÚ testSmallReadès z%FileObjectClassTestCase.testSmallReadcCs|j |j¡|j ¡dSr2©rÖrÏrÙrÚr?rrrÚ_testSmallReadïsz&FileObjectClassTestCase._testSmallReadcCs|j ¡}| ||j¡dSr2)rÓr rµrÜr·rrrÚ testFullReadós z$FileObjectClassTestCase.testFullReadcCs|j |j¡|j ¡dSr2)rÖrÏrÙrr?rrrÚ _testFullReadøsz%FileObjectClassTestCase._testFullReadcCs:t|jƒƒ}|j d¡}|sq(||7}q | ||j¡dSrß)rôrÜrÓr rµ)r@rGÚcharrrrÚtestUnbufferedReadüs    z*FileObjectClassTestCase.testUnbufferedReadcCs|j |j¡|j ¡dSr2rßr?rrrÚ_testUnbufferedReadsz+FileObjectClassTestCase._testUnbufferedReadcCs|j ¡}| ||j¡dSr2)rÓÚreadlinerµrÜ©r@ÚlinerrrÚ testReadline s z$FileObjectClassTestCase.testReadlinecCs|j |j¡|j ¡dSr2rßr?rrrÚ _testReadlinesz%FileObjectClassTestCase._testReadlinecCs&|j ¡|j ¡}| ||j¡dSr2)r¿rrÓr rµrÜr·rrrÚtestCloseAfterMakefiles  z.FileObjectClassTestCase.testCloseAfterMakefilecCs|j |j¡|j ¡dSr2rßr?rrrÚ_testCloseAfterMakefilesz/FileObjectClassTestCase._testCloseAfterMakefilecCs@|j ¡|j ttƒ¡}t|jtƒr.|  ¡}|  ||j¡dSr2) rÓrr¿r´rçr¶rórÜrÚdecoderµr·rrrÚtestMakefileAfterMakefileCloses   z6FileObjectClassTestCase.testMakefileAfterMakefileClosecCs|j |j¡|j ¡dSr2rßr?rrrÚ_testMakefileAfterMakefileClose%sz7FileObjectClassTestCase._testMakefileAfterMakefileClosecCs| |jj ¡dSr2)rrÓrÔr?rrrÚtestClosedAttr)sz&FileObjectClassTestCase.testClosedAttrcCs| |jj ¡dSr2)rrÖrÔr?rrrÚ_testClosedAttr,sz'FileObjectClassTestCase._testClosedAttrcCs,| |jj|j¡| |jj|j ¡¡dSr2)rµrÓrrÒrÿr¿rr?rrrÚtestAttributes/sz&FileObjectClassTestCase.testAttributescCs,| |jj|j¡| |jj|j ¡¡dSr2)rµrÖrrÕrÿrÂrr?rrrÚ_testAttributes3sz'FileObjectClassTestCase._testAttributescCs8|j ¡| t|jj¡|j ¡| t|jj¡dSr2)rÓrr'rrr¿rr r?rrrÚ testRealClose7s  z%FileObjectClassTestCase.testRealClosecCsdSr2rr?rrrÚ_testRealClose=sz&FileObjectClassTestCase._testRealClose)r’)&rErFrGrWrcrËrÌrÍrÒr¶rÜrÕrÙrLrArCr‰rŒrØrÛrÞràrárârärårérêrërìrîrïrðrñròrórôrõrrrrrÇžsD     rÇc@sdeZdZdZdZdd„Zdd„Zdd„Zd d „Zd d „Z d d„Z dd„Z dd„Z dd„Z dd„ZdS)Ú!UnbufferedFileObjectClassTestCasea‡Repeat 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.rcCsL|j ¡}| |d|j¡|j dd¡|_|j ¡}| |d|j¡dS)NóA. r róB. )rÓrærµrÙr¿r rçrrrÚtestUnbufferedReadlineMs   z8UnbufferedFileObjectClassTestCase.testUnbufferedReadlinecCs2|j d|j¡|j d|j¡|j ¡dS)Nr÷rørßr?rrrÚ_testUnbufferedReadlineUsz9UnbufferedFileObjectClassTestCase._testUnbufferedReadlinecCsD|j ¡|j d¡}| ||j¡|j ¡| t|jjd¡dSr²)r¿rr´rµrÜrÓr'rr·rrrÚtestMakefileCloseZs    z3UnbufferedFileObjectClassTestCase.testMakefileClosecCs|j |j¡|j ¡dSr2rßr?rrrÚ_testMakefileClosecsz4UnbufferedFileObjectClassTestCase._testMakefileClosecCs6t |j¡}|j ¡t |j¡}| |d|¡dSrß)rrrqr¿rÓrrµ)r@Zrefcount_beforeZrefcount_afterrrrÚtestMakefileCloseSocketDestroygs   z@UnbufferedFileObjectClassTestCase.testMakefileCloseSocketDestroycCsdSr2rr?rrrÚ_testMakefileCloseSocketDestroymszAUnbufferedFileObjectClassTestCase._testMakefileCloseSocketDestroycCs|j d¡| |j tdƒ¡d¡| |j t|jƒd¡d¡|j   ¡|j   d¡|j t|jƒd¡}|dur–t  d¡|j t|jƒd¡}tdƒ}|j |¡}| |d¡||d|…}| ||j¡| |j tdƒ¡d¡| |j d¡d¡dS)NFr›rþr gà?rxrq)r¿rBrµrÓÚreadintor¾r rçrÜrÎrorÏr‚r¯r°)r@rÝrGrÉr¸rrrÚtestSmallReadNonBlockingts       z:UnbufferedFileObjectClassTestCase.testSmallReadNonBlockingcCs>|j d¡|j |j¡|j ¡|j ¡|j d¡dS)Nr ç@) rÎr‚rÖrÏrÙrÚrÏrorÐr?rrrÚ_testSmallReadNonBlocking‡s    z;UnbufferedFileObjectClassTestCase._testSmallReadNonBlockingcCs"|j d¡|jr| |j¡dS)Nr)rÑr‚Ú serv_skippedrbr?rrrÚtestWriteNonBlockings z6UnbufferedFileObjectClassTestCase.testWriteNonBlockingcCstd|_|j d¡dtj}d}|j |¡}| |d¡t|ƒD](}|j |¡}|dur\qp| |d¡q@d|_dS)NFrür›rz$failed to saturate the socket buffer) rrÂrBrrrÖrÏrhr")r@ZBIGZLIMITrÉr8rrrÚ_testWriteNonBlocking—s      z7UnbufferedFileObjectClassTestCase._testWriteNonBlockingN)rErFrGrWrcrùrúrûrürýrþrrrrrrrrröAs  röc@seZdZdZdS)Ú#LineBufferedFileObjectClassTestCaserqN©rErFrGrcrrrrr­src@seZdZdZdS)Ú$SmallBufferedFileObjectClassTestCaser£Nrrrrrr²src@s*eZdZdZdZe d¡ZdZeZ dZ dS)Ú"UnicodeReadFileObjectClassTestCaseú=Tests for socket.makefile() in text mode (rather than binary)rrrr+N© rErFrGrWrÒr¶rírÜrÕrÙrÍrrrrr ·s  r c@s*eZdZdZdZeZdZe d¡Z dZ dS)Ú#UnicodeWriteFileObjectClassTestCaser r rrr+N) rErFrGrWrÒr¶rÜrÕrírÙrÍrrrrr Ás  r c@s0eZdZdZdZe d¡ZdZe d¡Z dZ dS)Ú'UnicodeReadWriteFileObjectClassTestCaser rrrr+Nr rrrrr Ës   r c@seZdZdZdd„ZdS)ÚNetworkConnectionTestzProve network connection.cCst t|jf¡|_|j|_dSr2)r Úcreate_connectionrŸr=r—rÂr?rrrr‰Øsz!NetworkConnectionTest.clientSetUpN)rErFrGrWr‰rrrrrÕsrc@seZdZdZdS)Ú BasicTCPTest2zLTests that NetworkConnection does not break existing TCP functionality. N)rErFrGrWrrrrrÞsrc@sDeZdZGdd„dejƒZejdd„ƒZdd„Zdd„Z d d „Z d S) ÚNetworkConnectionNoServerc@seZdZdd„ZdS)z$NetworkConnectionNoServer.MockSocketcGst d¡‚dS)Nz timed out)r r5r,rrrr±åsz,NetworkConnectionNoServer.MockSocket.connectN)rErFrGr±rrrrÚ MockSocketäsrccs,tj}|jt_zdVW|t_n|t_0dS)z*Return a socket which times out on connectN)r r)r@Z old_socketrrrÚmocked_socket_moduleès z.NetworkConnectionNoServer.mocked_socket_modulecCsrt ¡}t tjtj¡}| |j¡| t¡}|  t |f¡Wdƒn1sR0Y|  |j j t j¡dSr2)rrÁr r:r/rUrr'rr±rŸrµr0rcZ ECONNREFUSED)r@r=r—r1rrrÚ test_connectòs   ,z&NetworkConnectionNoServer.test_connectcCs\t ¡}| t¡}t t|f¡Wdƒn1s60Yt ¡}| |j j |¡dSr2) rrÁr'rr rrŸZget_socket_conn_refused_errsrr0rc)r@r=r1Zexpected_errnosrrrÚtest_create_connectionús  ,z0NetworkConnectionNoServer.test_create_connectionc Cs”| ¡xzt tdf¡WnJtjy0YnBtyf}z tjsP|jtj krR‚WYd}~nd}~00|  d¡Wdƒn1s†0YdS)Nrr~) rr rrŸr5rrrèrcZ EAFNOSUPPORTr#r†rrrÚtest_create_connection_timeouts z8NetworkConnectionNoServer.test_create_connection_timeoutN) rErFrGr rÚ contextlibÚcontextmanagerrrrrrrrrrâs  rc@sveZdZddd„Zdd„Zdd„Zdd „ZeZd d „ZeZ d d „Z eZ dd„Z eZ dd„ZeZdd„ZeZdd„ZdS)ÚNetworkConnectionAttributesTestr’cCstj||dt |¡dSr“r•r–rrrrL#sz(NetworkConnectionAttributesTest.__init__cCst ¡|_dSr2)rrÁÚ source_portr?rrrr‰'sz+NetworkConnectionAttributesTest.clientSetUpcCs|j ¡d|_t |¡dSr2r˜r?rrrrŒ*s z.NetworkConnectionAttributesTest.clientTearDowncCs|j ¡\}}| ¡dSr2)r;r«rrÀrrrÚ _justAccept/sz+NetworkConnectionAttributesTest._justAcceptcCs:tjt|jftjd|_| |jj¡|  |jj d¡dS)Nrzr£) r rrŸr=rrAr—rUrrµrr?rrrÚ _testFamily4s  ÿz+NetworkConnectionAttributesTest._testFamilycCsJtjt|jftjd|jfd|_| |jj ¡|  |j  ¡d|j¡dS)Nr+)r5Úsource_addressrq) r rrŸr=rrArr—rUrrµr r?rrrÚ_testSourceAddress;s  þz2NetworkConnectionAttributesTest._testSourceAddressc Csn| t ¡du¡t d¡z.t t|jf¡|_| |jj ¡Wt d¡n t d¡0|  |j  ¡d¡dS)Nr7© rr r3r4rrŸr=r—rUrrµrœr?rrrÚ_testTimeoutDefaultEs z3NetworkConnectionAttributesTest._testTimeoutDefaultc Csr| t ¡du¡t d¡z2tjt|jfdd|_| |jj ¡Wt d¡n t d¡0|  |j  ¡d¡dS©Nérzrr?rrrÚ_testTimeoutNoneQs z0NetworkConnectionAttributesTest._testTimeoutNonecCs,tjt|jfdd|_| |j ¡d¡dSr!)r rrŸr=r—rµrœr?rrrÚ_testTimeoutValueNamed]sz6NetworkConnectionAttributesTest._testTimeoutValueNamedcCs8t t|jfd¡|_| |jj¡| |j ¡d¡dS)Nr") r rrŸr=r—rUrrµrœr?rrrÚ_testTimeoutValueNonamedbsz8NetworkConnectionAttributesTest._testTimeoutValueNonamedN)r’)rErFrGrLr‰rŒrZ testFamilyrZtestSourceAddressrZtestTimeoutDefaultr ZtestTimeoutNoner#ZtestTimeoutValueNamedr$ZtestTimeoutValueNonamedr%rrrrr!s     rc@sBeZdZddd„Zdd„Zdd„Zdd „ZeZd d „Zd d „Z dS)ÚNetworkConnectionBehaviourTestr’cCstj||dt |¡dSr“r•r–rrrrLjsz'NetworkConnectionBehaviourTest.__init__cCsdSr2rr?rrrr‰nsz*NetworkConnectionBehaviourTest.clientSetUpcCs|j ¡d|_t |¡dSr2r˜r?rrrrŒqs z-NetworkConnectionBehaviourTest.clientTearDowncCs2|j ¡\}}| |j¡t d¡| d¡dS)Nrþódone!)r;r«rUrr¯r°r»rÀrrrÚtestInsideTimeoutvs  z0NetworkConnectionBehaviourTest.testInsideTimeoutcCs0t t|jf¡|_}| d¡}| |d¡dS)NrÓr')r rrŸr=r—r´rµ)r@rÙr›rrrÚ_testInsideTimeout}s z1NetworkConnectionBehaviourTest._testInsideTimeoutcs4tjt|jfdd|_‰| tj‡fdd„¡dS)Nrqrzcs ˆ d¡S)NrÓ)r´r©rÙrrrð„rñzDNetworkConnectionBehaviourTest._testOutsideTimeout..)r rrŸr=r—r'r5r?rr*rÚ_testOutsideTimeout‚sz2NetworkConnectionBehaviourTest._testOutsideTimeoutN)r’) rErFrGrLr‰rŒr(ZtestOutsideTimeoutr)r+rrrrr&hs r&c@s6eZdZdd„Zdd„Ze eedƒd¡dd„ƒZ d S) ÚTCPTimeoutTestcs ‡fdd„}ˆ tj|d¡dS)Ncsˆj d¡ˆj ¡dSr£)r;rÊr«rír?rrÚ raise_timeoutŠs z4TCPTimeoutTest.testTCPTimeout..raise_timeoutz*Error generating a timeout exception (TCP)©r'r r5©r@r-rr?rÚtestTCPTimeout‰s  ÿzTCPTimeoutTest.testTCPTimeoutcCsxd}z|j d¡|j ¡}WnFtjy<| d¡Yn*tyPd}Yn| d¡Yn0|st| d¡dS)NFr­z%caught timeout instead of error (TCP)Tz!caught unexpected exception (TCP)z3accept() returned success when we did not expect it)r;rÊr«r r5r#r©r@Úokr_rrrÚtestTimeoutZeros  zTCPTimeoutTest.testTimeoutZerorôztest needs signal.alarm()c s|j d¡Gdd„dtƒ‰‡fdd„}t tj|¡}zÐz zŽzt d¡|j ¡}Wn\tjyr|  d¡YnJˆy‚Yn:|  dt   ¡dd…t   ¡f¡Yn 0|  d ¡Wt d ¡n t d ¡0Wnˆyô|  d ¡Yn0Wt tj|¡nt tj|¡0dS) Nrc@s eZdZdS)z4TCPTimeoutTest.testInterruptedTimeout..AlarmNr\rrrrÚAlarm¥sr4csˆ‚dSr2r)rýrž©r4rrÚ alarm_handler§sz.alarm_handlerr£zcaught timeout instead of Alarmz3caught other exception instead of Alarm: %s(%s): %sznothing caughtrzgot Alarm in wrong place)r;rÊr;rýrþrôr«r r5r#rrÚexc_infoÚ tracebackÚ format_exc)r@r6rr_rr5rÚtestInterruptedTimeoutžs*    þ   z%TCPTimeoutTest.testInterruptedTimeoutN) rErFrGr0r3r¦rhr rýr:rrrrr,‡s  ÿr,c@seZdZdd„Zdd„ZdS)ÚUDPTimeoutTestcs ‡fdd„}ˆ tj|d¡dS)Ncsˆj d¡ˆj d¡dS©Nr r³©r;rÊr´rír?rrr-Ãs z4UDPTimeoutTest.testUDPTimeout..raise_timeoutz*Error generating a timeout exception (UDP)r.r/rr?rÚtestUDPTimeoutÂs  ÿzUDPTimeoutTest.testUDPTimeoutcCszd}z|j d¡|j d¡}WnFtjy>| d¡Yn*tyRd}Yn| d¡Yn0|sv| d¡dS)NFr­r³z%caught timeout instead of error (UDP)Tz!caught unexpected exception (UDP)ú1recv() returned success when we did not expect it©r;rÊr´r r5r#rr1rrrr3És  zUDPTimeoutTest.testTimeoutZeroN)rErFrGr>r3rrrrr;Àsr;c@seZdZdd„Zdd„ZdS)ÚUDPLITETimeoutTestcs ‡fdd„}ˆ tj|d¡dS)Ncsˆj d¡ˆj d¡dSr<r=rír?rrr-Üs z.raise_timeoutz.Error generating a timeout exception (UDPLITE)r.r/rr?rÚtestUDPLITETimeoutÛs  ÿz%UDPLITETimeoutTest.testUDPLITETimeoutcCszd}z|j d¡|j d¡}WnFtjy>| d¡Yn*tyRd}Yn| d¡Yn0|sv| d¡dS)NFr­r³z)caught timeout instead of error (UDPLITE)Tz%caught unexpected exception (UDPLITE)r?r@r1rrrr3âs  z"UDPLITETimeoutTest.testTimeoutZeroN)rErFrGrBr3rrrrrA×srAc@seZdZdd„Zdd„ZdS)ÚTestExceptionscCsJ| tttƒ¡| ttjtƒ¡| ttjtƒ¡| ttjtƒ¡dSr2)rÚ issubclassrr;r r(r)r5r?rrrÚtestExceptionTreeòsz TestExceptions.testExceptionTreecCsvt tjtjd¡}t tjtjd| ¡¡}| ¡| |j¡| t¡|  d¡Wdƒn1sh0YdS)NrF) r r:r/rrrUrEr'rrB)r@Zsock0rÙrrrÚtest_setblocking_invalidfdøsÿ  z)TestExceptions.test_setblocking_invalidfdN)rErFrGrErFrrrrrCðsrCrzLinux specific testc@s8eZdZdZdd„Zdd„Zdd„Zdd „Zd d „Zd S) ÚTestLinuxAbstractNamespaceélc CsÔd}t tjtj¡¬}| |¡| ¡t tjtj¡j}| | ¡¡| ¡d0}| | ¡|¡| |  ¡|¡Wdƒn1sŠ0YWdƒn1s¨0YWdƒn1sÆ0YdS)Nspython-test-helloÿr) r rÜr/r`r>r±r r«rµÚ getpeername)r@rŠÚs1rWZs3rrrÚtestLinuxAbstractNamespace s z5TestLinuxAbstractNamespace.testLinuxAbstractNamespacecCs`dd|jd}t tjtj¡*}| |¡| | ¡|¡Wdƒn1sR0YdS)Nr˜óhrq)Ú UNIX_PATH_MAXr rÜr/r`rµr ©r@rŠrrrrÚ testMaxNames z&TestLinuxAbstractNamespace.testMaxNamecCsRdd|j}t tjtj¡ }| t|j|¡Wdƒn1sD0YdS)NúÚh)rMr rÜr/r'rr`rNrrrÚtestNameOverflowsz+TestLinuxAbstractNamespace.testNameOverflowcCsFt tjtj¡}z&| d¡| | ¡d¡W| ¡n | ¡0dS)Nz pythontestó pythontest)r rÜr/r`rµr rrrrrÚ testStrName s  z&TestLinuxAbstractNamespace.testStrNamecCsRt tjtj¡.}| tdƒ¡| | ¡d¡Wdƒn1sD0YdS)NrS)r rÜr/r`r¾rµr rrrrÚtestBytearrayName)sz,TestLinuxAbstractNamespace.testBytearrayNameN) rErFrGrMrKrOrRrTrUrrrrrGs   rGztest needs socket.AF_UNIXc@sTeZdZdd„Zdd„Zdd„Zdd„Zd d „Zd d „Zd d„Z dd„Z dd„Z dS)ÚTestUnixDomaincCst tjtj¡|_dSr2)r rÜr/rÙr?rrrrA2szTestUnixDomain.setUpcCs|j ¡dSr2)rÙrr?rrrrC5szTestUnixDomain.tearDownc Cs:z t |¡WSty4| d |t ¡¡¡Yn0dS)NzBPathname {0!a} cannot be represented in file system encoding {1!r})rÓÚfsencoderìrbr rrÚgetfilesystemencoding©r@rÚrrrÚencoded8s  þÿzTestUnixDomain.encodedc CsZzt ||¡WnDtyT}z,t|ƒdkr>| d |¡¡n‚WYd}~n d}~00dS)NzAF_UNIX path too longz6Pathname {0!a} is too long to serve as an AF_UNIX path)rr×rrrbr )r@rÙrÚrŽrrrr`Cs ÿÿzTestUnixDomain.bindcCs| |j ¡d¡dS)N)r+N)rrÙr r?rrrràOszTestUnixDomain.testUnboundcCs@tj tj¡}| |j|¡| tj|¡|  |j  ¡|¡dSr2) rÓrÚÚabspathrÚTESTFNr`rÙrUrØrµr rYrrrÚ testStrAddrSszTestUnixDomain.testStrAddrcCsFtj tj¡}| |j| |¡¡| tj |¡|  |j  ¡|¡dSr2) rÓrÚr[rr\r`rÙrZrUrØrµr rYrrrÚ testBytesAddrZszTestUnixDomain.testBytesAddrcCsRtj tj¡}| |¡}| |j| dd¡¡|  tj |¡|  |j  ¡|¡dS)NÚasciiÚsurrogateescape) rÓrÚr[rZTESTFN_UNICODErZr`rÙrírUrØrµr )r@rÚrïrrrÚtestSurrogateescapeBindas  z&TestUnixDomain.testSurrogateescapeBindcCsTtjdur| d¡tj tj¡}| |j|¡| tj |¡|  |j  ¡|¡dS)Nz!No unencodable filename available) rZTESTFN_UNENCODABLErbrÓrÚr[r`rÙrUrØrµr rYrrrÚtestUnencodableAddrjs   z"TestUnixDomain.testUnencodableAddrN) rErFrGrArCrZr`ràr]r^rarbrrrrrV/s   rVc@s†eZdZdZddd„Zdd„Zdd„Zd d „ZeZd d „Z eZ d d„Z dd„Z dd„Z e Zdd„Ze Zdd„Zdd„Zdd„Ze ZdS)Ú BufferIOTestzF Test the buffer versions of socket.recv() and socket.send(). r’cCstj||ddSr“rùr–rrrrLyszBufferIOTest.__init__cCsZt ddgttƒ¡}|j |¡}| |ttƒ¡| ¡}|dttƒ…}| |t¡dS©Nr[r)r\rçr¶r¿rrµr·©r@rGr²r¸rrrÚtestRecvIntoArray|s  zBufferIOTest.testRecvIntoArraycCsttƒ}|j |¡dSr2©r³r¶rÂr»©r@rGrrrÚ_testRecvIntoArray„szBufferIOTest._testRecvIntoArraycCsDtdƒ}|j |¡}| |ttƒ¡|dttƒ…}| |t¡dSr²)r¾r¿rrµrçr¶rerrrÚtestRecvIntoBytearrayˆs  z"BufferIOTest.testRecvIntoBytearraycCsHtdƒ}|j t|ƒ¡}| |ttƒ¡|dttƒ…}| |t¡dSr²)r¾r¿rr¼rµrçr¶rerrrÚtestRecvIntoMemoryview‘s z#BufferIOTest.testRecvIntoMemoryviewcCs^t ddgttƒ¡}|j |¡\}}| |ttƒ¡| ¡}|dttƒ…}| |t¡dSrd)r\rçr¶r¿r’rµr·©r@rGr²rÁr¸rrrÚtestRecvFromIntoArrayšs z"BufferIOTest.testRecvFromIntoArraycCsttƒ}|j |¡dSr2rgrhrrrÚ_testRecvFromIntoArray¢sz#BufferIOTest._testRecvFromIntoArraycCsHtdƒ}|j |¡\}}| |ttƒ¡|dttƒ…}| |t¡dSr²)r¾r¿r’rµrçr¶rlrrrÚtestRecvFromIntoBytearray¦s z&BufferIOTest.testRecvFromIntoBytearraycCsLtdƒ}|j t|ƒ¡\}}| |ttƒ¡|dttƒ…}| |t¡dSr²)r¾r¿r’r¼rµrçr¶rlrrrÚtestRecvFromIntoMemoryview¯s z'BufferIOTest.testRecvFromIntoMemoryviewcCs tdƒ}| t|jj|d¡dS)Nr]r³)r¾r'rr¿r’rhrrrÚtestRecvFromIntoSmallBuffer¸sz(BufferIOTest.testRecvFromIntoSmallBuffercCs|j t¡dSr2rûr?rrrÚ_testRecvFromIntoSmallBuffer½sz)BufferIOTest._testRecvFromIntoSmallBuffercCs$tƒ}|j |¡|j |d¡dSrž)r¾r¿r’rhrrrÚtestRecvFromIntoEmptyBufferÀs z(BufferIOTest.testRecvFromIntoEmptyBufferN)r’)rErFrGrWrLrfrirjZ_testRecvIntoBytearrayrkZ_testRecvIntoMemoryviewrmrnroZ_testRecvFromIntoBytearrayrpZ_testRecvFromIntoMemoryviewrqrrrsZ_testRecvFromIntoEmptyBufferrrrrrcus$ rciÐéÈéÒc Cs„ttdƒsdSz tdƒ}Wntttfy4YdS0|6|D] }| d¡r@WdƒdSq@Wdƒn1sv0YdS)zˆCheck if the TIPC module is loaded The TIPC module is not loaded automatically on Ubuntu and probably other Linux distros. ÚAF_TIPCFz /proc/modulesztipc NT)r r rÚFileNotFoundErrorÚIsADirectoryErrorr[r–)rrèrrrÚisTipcAvailableÌs   2ryz6TIPC module is not loaded, please 'sudo modprobe tipc'c@seZdZdd„ZdS)ÚTIPCTestcCsºt tjtj¡}t tjtj¡}| |j¡| |j¡| tjtjd¡tjt t t f}|  |¡tj t t tt t dƒdf}| t|¡| d¡\}}| | ¡|¡| |t¡dS)Nrqr£rr³)r rvr4rUrrÇr5r6ÚTIPC_ADDR_NAMESEQÚ TIPC_STYPEÚ TIPC_LOWERÚ TIPC_UPPERr`ÚTIPC_ADDR_NAMErgr/r¶r rµr )r@r*r—ÚsrvaddrZsendaddrr¸ZrecvaddrrrrÚtestRDMãs   ÿ ÿ zTIPCTest.testRDMN)rErFrGrrrrrrzàsrzc@s6eZdZd dd„Zdd„Zdd„Zdd „Zd d „Zd S)ÚTIPCThreadableTestr’cCstjj||dt |¡dSr“r¥r–rrrrLûszTIPCThreadableTest.__init__cCs„t tjtj¡|_| |jj¡|j tjtjd¡tj t t t f}|j  |¡|j ¡| ¡|j ¡\|_|_| |jj¡dSrß)r rvr/r*rUrrÇr5r6r{r|r}r~r`r>rpr«r¬r­)r@r€rrrrAÿsÿ  zTIPCThreadableTest.setUpcCsdt d¡t tjtj¡|_| |jj¡tjt t t t t dƒdf}|j  |¡|j ¡|_dS)Nr®r£r)r¯r°r rvr/r—rUrrr|r}rgr~r±r Úcliaddr)r@rÁrrrr‰ s ÿ zTIPCThreadableTest.clientSetUpcCs,|j d¡}| |t¡| |j|j¡dSr²)r¬r´rµr¶rƒr­r·rrrr¹s  zTIPCThreadableTest.testStreamcCs|j t¡|j ¡dSr2rºr?rrrr¼s zTIPCThreadableTest._testStreamN)r’r½rrrrr‚øs    r‚c@s4eZdZdd„Zdd„Zdd„Zdd„Zd d „Zd S) ÚContextManagersTestcCsÄt ¡}| |j¡Wdƒn1s*0Y| |j¡t ¡}| ¡Wdƒn1sf0Y| |j¡t ¡ }| t|jd¡Wdƒn1sª0Y| |j¡dS©Nr,)r rÄrrrr'rrrârrrÚ_testSocketClass#s *  &  .z$ContextManagersTest._testSocketClasscCs2|j ¡\}}| |j¡| d¡}| |¡dSr²©r;r«rUrr´r©r@r¬rÁr›rrrÚtestCreateConnectionBase1s  z,ContextManagersTest.testCreateConnectionBasecCsl|j ¡}t |¡8}| |j¡| d¡| | d¡d¡Wdƒn1sR0Y|  |j¡dS)Nr,r³) r;r r rrÄrrrµr´r©r@rŠrÙrrrÚ_testCreateConnectionBase7s     0z-ContextManagersTest._testCreateConnectionBasecCs2|j ¡\}}| |j¡| d¡}| |¡dSr²r‡rˆrrrÚtestCreateConnectionClose?s  z-ContextManagersTest.testCreateConnectionClosecCs\|j ¡}t |¡}| ¡Wdƒn1s20Y| |j¡| t|j d¡dSr…) r;r r rrrrr'rrrŠrrrÚ_testCreateConnectionCloseEs   & z.ContextManagersTest._testCreateConnectionCloseN)rErFrGr†r‰r‹rŒrrrrrr„!s r„c@s„eZdZe eedƒd¡e ddd¡dd„ƒƒZ dd „Z d d „Z d d „Z e  edud¡dd„ƒZe  edud¡dd„ƒZdd„ZdS)ÚInheritanceTestrÑzSOCK_CLOEXEC not definedr£r¸r¹cCsXt tjtjtjB¡.}| |jtj¡| | ¡¡Wdƒn1sJ0YdSr2)r r:r/rÑrµrôrÄÚget_inheritablerrrrÚtest_SOCK_CLOEXECNs  ÿz!InheritanceTest.test_SOCK_CLOEXECcCs@t ¡}| | | ¡d¡Wdƒn1s20YdSr)r rµrrârrrÚtest_default_inheritableWsz(InheritanceTest.test_default_inheritablec Cstt ¡}|T| ¡}| ¡| | | ¡d¡Wdƒn1sH0YWdƒn1sf0YdSr)r rrrµr)r@rÙZnewsockrrrÚtest_dup\s zInheritanceTest.test_dupcCsdt ¡}|D| d¡| | ¡d¡| d¡| | ¡d¡Wdƒn1sV0YdS)NTF)r Úset_inheritablerµrrârrrÚtest_set_inheritableds   z$InheritanceTest.test_set_inheritableNr¢cCs‚t ¡}|b| ¡}| | ¡d¡t |tj¡}|tjM}t |tj|¡| | ¡d¡Wdƒn1st0YdS)NFT)r rrµrr ÚF_GETFDÚ FD_CLOEXECZF_SETFD)r@rÙrKrãrrrÚtest_get_inheritable_cloexecms z,InheritanceTest.test_get_inheritable_cloexeccCs|t ¡}|\| ¡}| t |tj¡tj@tj¡| d¡| t |tj¡tj@d¡Wdƒn1sn0YdS)NTr)r rrµr r•r–r“)r@rÙrKrrrÚtest_set_inheritable_cloexec{sÿ ÿz,InheritanceTest.test_set_inheritable_cloexeccCsHt ¡\}}| |j¡| |j¡| | ¡d¡| | ¡d¡dSr)r rÄrUrrµr)r@rJrWrrrÚtest_socketpairˆs    zInheritanceTest.test_socketpair)rErFrGr¦rhr r rrÆrr‘r’r”rjr r—r˜r™rrrrrŽMs ÿ     rŽrAzSOCK_NONBLOCK not definedc@s,eZdZd dd„Ze ddd¡dd „ƒZd S) ÚNonblockConstantTestTr­cCsº|rj| |jtj¡| | ¡|¡| t |tjtj ¡tj @¡|dkrZ|  |  ¡¡q¶| |  ¡¡nL| |jtj¡| | ¡d¡|  t |tjtj ¡tj @¡| |  ¡¡dSrž) rµrôr r/rœrr r¯rÓr°rÄr®)r@rÚnonblockr5rrrÚ checkNonblock“sÿ ÿz"NonblockConstantTest.checkNonblockr£r¸r¹cCsÈt tjtjtjB¡Ž}| |¡| d¡|j|dd| d¡| |¡| d¡|j|dd| d¡|j|dd| d¡|j|ddWdƒn1sª0Yt ¡}t d¡t ¡}| |¡Wdƒn1sî0Yt d¡t ¡}| |d¡Wdƒn1s.0Yt d¡t ¡}|j|ddWdƒn1sp0Yt d¡t ¡}| |d¡Wdƒn1s°0Yt |¡dS)NTF)r›g@rzr­) r r:r/rArœrBrÊr3r4)r@rÚtrrrÚtest_SOCK_NONBLOCK¬s: ÿ       ,  (  ,  .  ,z'NonblockConstantTest.test_SOCK_NONBLOCKN)Tr­)rErFrGrœrrÆržrrrrršs  ršr<r=zneed multiprocessingc@s@eZdZedd„ƒZdd„Zdd„Zdd„Zd d „Zd d „Z d S)ÚTestSocketSharingcCsD| ¡}| ¡}t |¡}| ¡\}}| |¡| ¡| ¡dSr2)r…r Ú fromsharer«rr)ršÚqZsdataÚmessagerrWrrrrÚremoteProcessServerÓs   z%TestSocketSharing.remoteProcessServerc Cs°t ¡}tj|j|fd}| ¡|j |j¡}|j ¡}|j  ¡|  |¡d}|  |¡t   |¡}g}|  d¡}|szq†| |¡qj|  ¡d |¡}| ||¡| ¡dS)N©r—rQs slapmahfrorØrñ)ÚmultiprocessingrzÚProcessr£ršr;ÚshareÚpidr rr‹r rr´rÑrrµ) r@r¡r$r›rÁr¢rÚmÚreceivedrrrÚ testShareás&         zTestSocketSharing.testSharecCs@|j t ¡¡}| ttj|dd…¡| ttj|d¡dS)Nr…r,)r;r§rÓÚgetpidr'rr r )r@r›rrrÚtestShareLengthsz!TestSocketSharing.testShareLengthcCsb| | ¡d¡| | ¡| ¡¡| |j|j¡| |j|j¡|jdkr^| |j|j¡dSrž)rµrœrrôr)r@ZorgÚotherrrrÚcompareSockets s  z TestSocketSharing.compareSocketscCsD|j t ¡¡}t |¡}z| |j|¡W| ¡n | ¡0dSr2)r;r§rÓr¬r r r¯r)r@r›rrrrÚtestShareLocals  z TestSocketSharing.testShareLocalc Cs¬tjtjg}tjtjg}|D]Š}|D]€}zt ||¡}WntyNYq$Yn0zH| t ¡¡}t  |¡}z|  ||¡W|  ¡n |  ¡0W|  ¡q$|  ¡0q$qdSr2) r r:rër/r rr§rÓr¬r r¯r)r@ÚfamiliesÚtypesrrÚsourcer›ZsharedrrrÚ testTypes!s     zTestSocketSharing.testTypesN) rErFrGr¶r£r«r­r¯r°r´rrrrrŸÎs #rŸc@seZdZdZdZdZdZejZ e dd„ƒZ e dd„ƒZ d d „Z d d „Zd d„Zdd„Zdd„Zdd„Zdd„Zdd„Zdd„Zdd„Zdd„Zdd „Zd!d"„Zd#d$„Zd%d&„Zd'd(„Zd)d*„Zd+d,„Zd-d.„Zd/d0„Z d1d2„Z!d3d4„Z"d5d6„Z#d7d8„Z$d9d:„Z%d;S)<ÚSendfileUsingSendTestz> Test the send() implementation of socket.sendfile(). i rhrñcCsºdd„}d dd„t|jƒDƒ¡}ttjdƒ.}||j|jƒD]}| |¡q>Wdƒn1sb0Yttjdƒ.}| ¡|_ t |j ƒ|jks˜J‚Wdƒn1s¬0YdS)Ncss2||ks J‚||kr$|V||8}q |r.|VdSr2r)ÚtotalÚsteprrrÚchunksAs   z0SendfileUsingSendTest.setUpClass..chunksrñcSsg|]}t tj¡ ¡‘qSr)ÚrandomÚchoiceÚstringÚ ascii_lettersrÐrÉrrrrIsÿz4SendfileUsingSendTest.setUpClass..rr ) rr"ÚBUFSIZErrr\ÚFILESIZErÏr ÚFILEDATArç)ršr¸ÚchunkrZcsizerrrÚ setUpClass?s ÿ* z SendfileUsingSendTest.setUpClasscCst tj¡dSr2)rrØr\)ršrrrÚ tearDownClassRsz#SendfileUsingSendTest.tearDownClasscCs8|j tj¡|j ¡\}}| |j¡| |j¡|Sr2)r;rÊrrÃr«ÚTIMEOUTrUrrÀrrrÚ accept_connVs   z!SendfileUsingSendTest.accept_conncCs,g}| |j¡}|sq"| |¡qd |¡Srü)r´r½rÑr)r@r¬rªrÀrrrÚ recv_data]s   zSendfileUsingSendTest.recv_datacCs t|dƒS)NÚ_sendfile_use_send©r~rârrrÚmeth_from_sockfsz$SendfileUsingSendTest.meth_from_sockc Csš|j ¡}ttjdƒ}t |¡f}|B}| |¡}||ƒ}| ||j ¡| |  ¡|j ¡Wdƒn1sn0YWdƒn1sŒ0YdS)Nr © r;r rrr\r rrÈrµr¾Útell©r@rŠÚfilerÙÚmethÚsentrrrÚ_testRegularFilems   z&SendfileUsingSendTest._testRegularFilecCs6| ¡}| |¡}| t|ƒ|j¡| ||j¡dSr2©rÄrÅrµrçr¾r¿©r@r¬r›rrrÚtestRegularFilevs z%SendfileUsingSendTest.testRegularFilec Cs¤|j ¡}t |j¡}t |¡p}|L}| |¡}| ||j ¡| |  ¡|j ¡|  tj |j |¡Wdƒn1sx0YWdƒn1s–0YdSr2)r;r ÚioÚBytesIOr¿r rrMrµr¾rÊr'rRrS)r@rŠrÌrÙrÎrrrÚ_testNonRegularFile~s   ÿz)SendfileUsingSendTest._testNonRegularFilecCs6| ¡}| |¡}| t|ƒ|j¡| ||j¡dSr2rÐrÑrrrÚtestNonRegularFileˆs z(SendfileUsingSendTest.testNonRegularFilec CsÖ|j ¡}tjd}t|dƒ| tj|¡Wdƒn1sB0Yt|dƒ}t |¡b}|>}|  |¡}||ƒ}|  |d¡|  |  ¡d¡Wdƒn1sª0YWdƒn1sÈ0YdS)NÚ2rr r) r;r rr\rrUrØr rrÈrµrÊ)r@rŠÚfilenamerÌrÙrÍrÎrrrÚ_testEmptyFileSends   ,   z(SendfileUsingSendTest._testEmptyFileSendcCs"| ¡}| |¡}| |d¡dSrü)rÄrÅrµrÑrrrÚtestEmptyFileSendœs z'SendfileUsingSendTest.testEmptyFileSendc Cs¢|j ¡}ttjdƒ}t |¡n}|J}| |¡}||dd}| ||j d¡| |  ¡|j ¡Wdƒn1sv0YWdƒn1s”0YdS)Nr éˆ)ÚoffsetrÉrËrrrÚ _testOffset£s    z!SendfileUsingSendTest._testOffsetcCsB| ¡}| |¡}| t|ƒ|jd¡| ||jdd…¡dS)NrÛrÐrÑrrrÚ testOffset¬s z SendfileUsingSendTest.testOffsetc Cs¨|j ¡}ttjdƒ}tj|tjd}|j|Fd}| |¡}|||d}|  ||¡|  |  ¡|¡Wdƒn1s|0YWdƒn1sš0YdS)Nr rzéGKL©rÕ© r;r rrr\r rrArÈrµrÊ©r@rŠrÌrÙrÕrÍrÎrrrÚ _testCount´s  ÿ    z SendfileUsingSendTest._testCountcCs@d}| ¡}| |¡}| t|ƒ|¡| ||jd|…¡dS)Nrß©rÄrÅrµrçr¿©r@rÕr¬r›rrrÚ testCountÀs  zSendfileUsingSendTest.testCountc Cs¨|j ¡}ttjdƒ}tj|tjd}|j|Fd}| |¡}|||d}|  ||¡|  |  ¡|¡Wdƒn1s|0YWdƒn1sš0YdS)Nr rzrqràrárârrrÚ_testCountSmallÉs  ÿ    z%SendfileUsingSendTest._testCountSmallcCs@d}| ¡}| |¡}| t|ƒ|¡| ||jd|…¡dSrßrärårrrÚtestCountSmallÕs  z$SendfileUsingSendTest.testCountSmallc Cs¨|j ¡}ttjdƒ}tj|ddp}|L}d}| |¡}||d|d}| ||¡| |  ¡|d¡Wdƒn1s|0YWdƒn1sš0YdS)Nr r£rz駆é×)rÜrÕ) r;r rrr\r rrÈrµrÊrârrrÚ_testCountWithOffsetÞs    z*SendfileUsingSendTest._testCountWithOffsetcCsDd}| ¡}| |¡}| t|ƒ|¡| ||jd|d…¡dS)NrérêrärårrrÚtestCountWithOffsetès  z)SendfileUsingSendTest.testCountWithOffsetc Csš|j ¡}ttjdƒ}t |¡f}|B}| d¡| |¡}|  t ||¡|  t |j |¡Wdƒn1sn0YWdƒn1sŒ0YdS)Nr F) r;r rrr\r rrBrÈr'rrM©r@rŠrÌrÙrÍrrrÚ_testNonBlockingñs    z&SendfileUsingSendTest._testNonBlockingcCs | ¡}| d¡r| d¡dS)Nrhz$was not supposed to receive any data)rÄr´r#©r@r¬rrrÚtestNonBlockingús z%SendfileUsingSendTest.testNonBlockingc Cs’|j ¡}ttjdƒ}tj|tjd}|T|0| |¡}||ƒ}|  ||j ¡Wdƒn1sf0YWdƒn1s„0YdS)Nr rz) r;r rrr\r rrArÈrµr¾rËrrrÚ_testWithTimeouts  ÿ  z&SendfileUsingSendTest._testWithTimeoutcCs6| ¡}| |¡}| t|ƒ|j¡| ||j¡dSr2rÐrÑrrrÚtestWithTimeout s z%SendfileUsingSendTest.testWithTimeoutc Csˆ|j ¡}ttjdƒ^}t |¡4}| d¡| |¡}|  tj ||¡Wdƒn1s\0YWdƒn1sz0YdS)Nr g{®Gáz„?) r;r rrr\r rrÊrÈr'r5rírrrÚ_testWithTimeoutTriggeredSends     z3SendfileUsingSendTest._testWithTimeoutTriggeredSendcCs| ¡}| d¡dS)Ni€X)rÄr´rïrrrÚtestWithTimeoutTriggeredSendsz2SendfileUsingSendTest.testWithTimeoutTriggeredSendcCsdSr2rr?rrrÚ _test_errors!sz"SendfileUsingSendTest._test_errorsc Cs˜ttjdƒX}tjtjd*}| |¡}| td||¡Wdƒn1sL0YWdƒn1sj0YttjdƒR}t ¡*}| |¡}| td||¡Wdƒn1sº0YWdƒn1sØ0Yttjdƒ”}t ¡j}| |¡}|jtd||dd|jtd||d d|jtd||d d|jtd||d dWdƒn1sj0YWdƒn1sŠ0YdS) Nr râr/rz binary modezpositive integerr×ràr®rr…) rrr\r r rÈr rr)r@rÌrrÍrrrÚ test_errors$s6 ÿ@  ÿ@  ÿÿÿÿz!SendfileUsingSendTest.test_errorsN)&rErFrGrWr¾r½r¿rrArÃr¶rÁrÂrÄrÅrÈrÏrÒrÕrÖrÙrÚrÝrÞrãrærçrèrërìrîrðrñròrórôrõrörrrrrµ5sD               rµrMz%os.sendfile() required for this test.c@seZdZdZdd„ZdS)ÚSendfileUsingSendfileTestzB Test the sendfile() implementation of socket.sendfile(). cCs t|dƒS)NrSrÇrârrrrÈBsz(SendfileUsingSendfileTest.meth_from_sockN)rErFrGrWrÈrrrrr÷<sr÷zAF_ALG requiredc@s|eZdZdd„Ze dd¡dd„ƒZdd„Ze dd ¡d d „ƒZe dd ¡d d„ƒZ e dd ¡dd„ƒZ dd„Z dd„Z dS)ÚLinuxKernelCryptoAPIc Cslt tjtjd¡}z| ||f¡Wn>tyb}z&| ¡t t|ƒ||¡‚WYd}~nd}~00|SdSrž) r r(r&r`rwrr¦ZSkipTestr)r@ÚtyprÿrÙrŽrrrÚ create_algIs(zLinuxKernelCryptoAPI.create_algr.rÓc Csüt d¡}| dd¡Ò}| ¡\}}|,| d¡| | d¡|¡Wdƒn1sZ0Y| ¡\}}|V| dtj ¡| dtj ¡| dtj ¡| d ¡| | d¡|¡Wdƒn1sÐ0YWdƒn1sî0YdS) NZ@ba7816bf8f01cfea414140de5dae2223b00361a396177a9cb410ff61f20015adÚhashZsha256sabcr“óaóbócrñ) r³Úfromhexrúr«rrµr´r»r ÚMSG_MORE©r@r ÚalgoÚoprsrrrÚ test_sha256Vs   0  z LinuxKernelCryptoAPI.test_sha256c Cs˜t d¡}| dd¡n}| tjtjd¡| ¡\}}|,| d¡|  |  d¡|¡Wdƒn1sl0YWdƒn1sŠ0YdS)NZ(effcdf6ae5eb2fa2d27416d5f184df9c259a7c79rûz hmac(sha1)sJefeswhat do ya want for nothing?r“) r³rÿrúrÇr ÚSOL_ALGÚ ALG_SET_KEYr«rrµr´rrrrÚtest_hmac_sha1hs   z#LinuxKernelCryptoAPI.test_hmac_sha1rþc Cs&t d¡}t d¡}d}t d¡}t|ƒ}| dd¡Ø}| tjtj|¡| ¡\}}|@|j tj |tj d|  |¡|  | |¡|¡Wdƒn1s¢0Y| ¡\}}|6|j |gtj|d|  | |¡|¡Wdƒn1sø0Yd } |g| } | ¡\}}|0|j | tj |d| || ¡} Wdƒn1sX0Y|  t| ƒ|| ¡|  | d|…|¡| ¡\}}|2|j | gtj|d| || ¡} Wdƒn1sÔ0Y|  t| ƒ|| ¡|  | || ¡Wdƒn1s0YdS) NZ 06a9214036b8a15b512e03d534120006Z 3dafba429d9eb430b422da802c9fac41sSingle block msgZ e353779c1079aeb82708942dbe77181aZskcipherzcbc(aes))rÚivrã)rrr³)r³rÿrçrúrÇr rrr«Ú sendmsg_afalgÚALG_OP_ENCRYPTrrrµr´ÚALG_OP_DECRYPT) r@Úkeyrr¸Z ciphertextZmsglenrrrsZ multiplierZlongmsgÚencZdecrrrÚ test_aes_cbcssL     ÿ 0 ÿ0  ÿ. ÿ.z!LinuxKernelCryptoAPI.test_aes_cbcrºc Cs t d¡}t d¡}t d¡}t d¡}t d¡}t d¡}t|ƒ}t|ƒ}| dd¡°} |  tjtj|¡|  tjtjd|¡|   ¡\} } | €| j tj ||tj d |   |tj ¡|   |¡|  |t|ƒ|¡} | || || …¡| || | d…¡Wdƒn1s0Y|   ¡\} } | p||} | j | gtj ||d |  |t|ƒ|¡} | || || …¡| || | d…¡Wdƒn1s¬0Yt d ¡j}|   ¡\} } | ž||} |  | gtjtj|tj ƒgtjtj|t|ƒƒ|gtjtj||ƒgf¡|  t| ƒ|¡} | || || …¡| || | d…¡Wdƒn1sx0Y|   ¡\} } | X|||} | j | gtj||d |  t| ƒ|¡} | || |d…¡Wdƒn1sò0YWdƒn1s0YdS) NZ c939cc13397c1d37de6ae0e1cb7c423cZb3d8cc017cbb89b39e0f67e2Z c3b3c41f113a31b73d9a5cd432103069Z 24825602bd12a984e0092d3e448eda5fZ 93fe7d9e9bfd10348a5606e5cafa7354Z 0032a1dc85f1c9786925a2e71d8272ddZaeadzgcm(aes))rrÚassoclenrã)rrrr )r³rÿrçrúrÇr rrÚALG_SET_AEAD_AUTHSIZEr«r r rrr´rµrÚStructr”rÕÚ ALG_SET_OPÚ ALG_SET_IVÚALG_SET_AEAD_ASSOCLENr )r@r rZplainZassocZ expected_ctZ expected_tagZtaglenrrrrsÚresr¸Z pack_uint32rrrÚtest_aead_aes_gcmœsl       ÿ  ÿ 6 ÿ6  þþ6  ÿz&LinuxKernelCryptoAPI.test_aead_aes_gcmc Cs–| dd¡v}t d¡}| tjtj|¡| ¡\}}|*| d¡}|  t |ƒd¡Wdƒn1sj0YWdƒn1sˆ0YdS)NÚrngZdrbg_pr_sha256rw) rúrÓÚurandomrÇr rrr«r´rµrç)r@rZ extra_seedrrsZrnrrrÚtest_drbg_pr_sha256Ûs   z(LinuxKernelCryptoAPI.test_drbg_pr_sha256c CsPt tjtjd¡}|"| t¡| ¡Wdƒn1sB0Y| t¡|jddWdƒn1sx0Y| t¡| d¡Wdƒn1s¬0Y| t¡ |jtjddWdƒn1sæ0Y| t¡ |jtjddWdƒn1s"0YWdƒn1sB0YdS)Nr)rrq)rrr…)r r(r&r'rr r rârrrÚtest_sendmsg_afalg_argsæs & * ( . z,LinuxKernelCryptoAPI.test_sendmsg_afalg_argscCsöt tjtjd¡}| |j¡| t¡| d¡Wdƒn1sH0Y| t d¡| d¡Wdƒn1s~0Y| t¡| d¡Wdƒn1s²0Y| t d¡| d¡Wdƒn1sè0YdS)Nr)Z tttttttttttttrÿz type too long)Zttttttttttttttrÿ)rôZ?nnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnz name too long)rôZ@nnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnn) r r(r&rUrr'rwr`r rrârrrÚtest_length_restrictionøs  (( (z,LinuxKernelCryptoAPI.test_length_restrictionN) rErFrGrúrrÆrrrrrrrrrrrrøFs    (  >  røÚwinzrequires Windowsc@seZdZhd£Zdd„ZdS)ÚTestMSWindowsTCPFlags>Ú TCP_FASTOPENÚ TCP_MAXSEGÚ TCP_KEEPCNTÚ TCP_KEEPINTVLÚ TCP_NODELAYÚ TCP_KEEPIDLEcs6dd„ttƒDƒ}‡fdd„|Dƒ}ˆ g|d¡dS)NcSsg|]}| d¡r|‘qS)ZTCP)r–©rþrrrrrrñz.csg|]}|ˆjvr|‘qSr)Ú knownTCPFlagsr$r?rrrrñzANew TCP flags were discovered. See bpo-32394 for more information)rÕr rµ)r@ZprovidedÚunknownrr?rÚtest_new_tcp_flagss ÿz(TestMSWindowsTCPFlags.test_new_tcp_flagsN)rErFrGr%r'rrrrr s rc@s‚eZdZdd„Zdd„Zdd„Ze ee dƒ p:ee dƒ d ¡e  e j d ¡d d „ƒƒZ e e ¡ d ¡e  e j d ¡dd„ƒƒZdS)ÚCreateServerTestcCsÄt ¡}t d|f¡8}| | ¡dd¡| | ¡d|¡Wdƒn1sT0YtjrÀtjd|ftjd8}| | ¡dd¡| | ¡d|¡Wdƒn1s¶0YdS)Nrrrqr«rá)rrÁr Ú create_serverrµr rèrë©r@r=rÙrrrÚ test_address#s2 ÿzCreateServerTest.test_addresscCs¤t d¡0}| |jtj¡| |jtj¡Wdƒn1s@0Ytjr tjdtj d0}| |jtj ¡| |jtj¡Wdƒn1s–0YdS)Nr©r«rrá) r r)rµrr:rôr/rrèrë)r@rÙrrrrÚtest_family_and_type.s .z%CreateServerTest.test_family_and_typecCsØttdƒsD| t¡tjdddWdƒqÔ1s80Ynt d¡,}| tjtj¡}| |d¡Wdƒn1s€0Ytjddd,}| tjtj¡}|  |d¡Wdƒn1sÊ0YdS)NÚ SO_REUSEPORT)rÜrT)Ú reuse_portr) r r r'rr)rÃr5r.rµrá)r@rÙrRrrrÚtest_reuse_port7s  . *z CreateServerTest.test_reuse_portr:Ú IPV6_V6ONLYz IPV6_V6ONLY option not supportedr@cCsHtjdtjd$}| tjtj¡s&J‚Wdƒn1s:0YdS)Nr,rá)r r)rërÃr:r1rârrrÚtest_ipv6_only_defaultCsz'CreateServerTest.test_ipv6_only_defaultúdualstack_ipv6 not supportedcCsFtjdtjdd }| |jtj¡Wdƒn1s80YdS)Nr,T©rÚdualstack_ipv6)r r)rërµrrârrrÚtest_dualstack_ipv6_familyKs  ÿz+CreateServerTest.test_dualstack_ipv6_familyN)rErFrGr+r-r0r¦rjr rrhrrèr2r Úhas_dualstack_ipv6r6rrrrr(!s    þ   ÿ r(c@s eZdZejZdd„Zdd„Zdd„Zdd„Z d d „Z e   e jd ¡d d „ƒZe  e ¡ d¡e   e jd ¡dd„ƒƒZe  e ¡ d¡e   e jd ¡dd„ƒƒZdS)ÚCreateServerFunctionalTestcCs d|_dSr2)rr?rrrrAWsz CreateServerFunctionalTest.setUpcCs|jdur|j |j¡dSr2)rrr5r?rrrrCZs z#CreateServerFunctionalTest.tearDowncsJ‡‡fdd„}t ¡‰| ˆj¡tj||fdˆ_ˆj ¡ˆ ¡dS)Nc s˜|€| ¡\}}|Pˆ ˆj¡| d¡}|sNWdƒWdƒdS| |¡Wdƒn1sl0YWdƒn1sŠ0YdSr²)r«r‚r5r´r)rÙr¬rsr¸©r¬r@rrÚrun_s   z3CreateServerFunctionalTest.echo_server..runr¤)rMrvrÊr5r˜rršro)r@rÙr:rr9rÚ echo_server^s    z&CreateServerFunctionalTest.echo_servercCsbtj|dB}| |j¡| |¡| d¡| | d¡d¡Wdƒn1sT0YdS)Nrár,r³)r rÊr5r±rrµr´)r@rÁrrÙrrrÚ echo_clientos    z&CreateServerFunctionalTest.echo_clientcCsVt ¡}t d|f¡,}| |¡| d|ftj¡Wdƒn1sH0YdS)Nr+r)rrÁr r)r;r<r:r*rrrÚ test_tcp4vs z$CreateServerFunctionalTest.test_tcp4r@cCs\t ¡}tjd|ftjd,}| |¡| d|ftj¡Wdƒn1sN0YdS)Nr+rár«©rrÁr r)rër;r<r*rrrÚ test_tcp6|s ÿ z$CreateServerFunctionalTest.test_tcp6r3cCs^t ¡}tjd|ftjdd,}| |¡| d|ftj¡Wdƒn1sP0YdS)Nr+Tr4r)rrÁr r)rër;r<r:r*rrrÚtest_dual_stack_client_v4†sÿ z4CreateServerFunctionalTest.test_dual_stack_client_v4cCs^t ¡}tjd|ftjdd,}| |¡| d|ftj¡Wdƒn1sP0YdS)Nr+Tr4r«r>r*rrrÚtest_dual_stack_client_v6sÿ z4CreateServerFunctionalTest.test_dual_stack_client_v6N)rErFrGrrAr5rArCr;r<r=r¦rhrrèr?rjr r7r@rArrrrr8Ts$  ÿ   ÿ r8Úsend_fdsÚrecv_fdsc@seZdZdd„ZdS)ÚSendRecvFdsTestsc Csndd„}dd„}dd„tdƒDƒ}| ||¡dd„|Dƒ}t tjtj¡\}}|v|Rt |tg|¡t |t tƒd t |ƒd ¡\}}} } | ||¡Wdƒn1s²0YWdƒn1sÐ0Y|  |t¡|  t |ƒt |ƒ¡|  | d ¡t |ƒD]&\} }|\} } t   | t| ƒ ¡¡qt |ƒD]*\} } t  | d ¡}|  |t| ƒ ¡¡q>dS) NcSs&|D]\}}t |¡t |¡qdSr2©rÓr)ÚpipesröÚfd2rrrÚ close_pipesŸs  z8SendRecvFdsTests.testSendAndRecvFds..close_pipescSs|D]}t |¡qdSr2rE)rÒrKrrrÚ close_fds¤sz6SendRecvFdsTests.testSendAndRecvFds..close_fdscSsg|] }t ¡‘qSr)rÓÚpipe)rþrsrrrr©rñz7SendRecvFdsTests.testSendAndRecvFds..r›cSsg|] \}}|‘qSrr)rþÚrfdÚwfdrrrr«rñr£rrØ)r"rUr rÄrÜr/rBr¶rCrçrµrÔrÓrÏrrÐr )r@rHrIrFrÒZsock1Zsock2r¸Zfds2rãrÁrkrKrLr›rrrÚtestSendAndRecvFdsžs&  &H   z#SendRecvFdsTests.testSendAndRecvFdsN)rErFrGrMrrrrrDšsrDc#Cs,tttttttttt t t g }|  t tttttttttttttg¡| t¡| t¡| t¡|  tt g¡|  t!t"g¡|  t#t$g¡| t%¡| t&¡|  t't(g¡| t)¡|  t*t+t,t-t.t/t0t1t2t3t4t5t6t7t8t9t:t;tt?t@tAtBtCtDtEtFtGtHtItJg!¡| tK¡tL M¡}tLjN|ŽtLjO|ŽdSr2)PrrørŸr,rCrcrrr;r(r8rDÚextendr«rÇrörrr r r rrr&r„rŽršrÑr¥rVrGrzr‚rkr—rÄrÉrørÞrær¤rïrÁr]r^r_rbrcrerfrdrhrirjrlrmrorprnrrrsrtrvrwr|r~rr€rr‚r‹r–rŸrµr÷rrZthreading_setupZ run_unittestZthreading_cleanup)ZtestsÚ thread_inforrrÚ test_mainÄs’ýò     þ Þ$  rPÚ__main__)Ór¦ÚtestrZ test.supportrrcrÓrÔr rÛrÐr¯r8ryrrrÓr•r\rÚweakrefrrýrör#rr¹rYr»Ú_threadrrMr¥r¸r rŸrÐr¶rªÚsystemrrrrr"r$r'r)r+r-r1rr6ZHAVE_SOCKET_CANZHAVE_SOCKET_CAN_ISOTPZHAVE_SOCKET_CAN_J1939ZHAVE_SOCKET_RDSZHAVE_SOCKET_ALGZHAVE_SOCKET_QIPCRTRZHAVE_SOCKET_VSOCKr ZHAVE_SOCKET_UDPLITEZHAVE_SOCKET_BLUETOOTHrÆrár§r9rHrIrJrYrgrir‘ršrhr›rœrrjr¤r¾rÃrÅrÊrËrÎrÏrÛrÞrãrärårærèrêrìrürr rrkr—r·r¾rÄrÉrÞrærïrørr&r'rCrHrKrMrOrPrQrur‡rŠr¨r­r°rÁrÍr"r[r]r^r_r`rèrbrcrdrerfrgrhrirjrkrlrmrnrorprqrrrsrtrurvrwr|r}r~rr€rr‚rƒr‹r–rŸr¥r«rÇrörrr r r rerrrrr&r,r;rArCrGrVrcr|r}r~ryrzr‚r„rŽršrÿrŸrµr÷rør–rr(r8rDrPrErrrrÚsT                        3uÿÿ ÿ!ÿ ÿ$   b S Z * =  >ÿÿ.ÿ%{ÿ7w w=#P;k7 þ    þ         ÿ    þ ÿ þÿ ÿ ÿ ÿ þ  ÿ  ÿ  ÿ  ÿ ÿ  ÿ þ ÿ  ÿ ÿ þ      ÿ   ÿ ÿ  ÿ ÿ    ÿ  ÿ)ÿþ7#!$l    ?G9ÿ)ES ÿÿ',Cÿ< e ÿ D3F  ' N