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©NFT)r ÚPF_CANÚSOCK_RAWÚCAN_RAWÚAttributeErrorrÚclose©ÚsrrrÚ_have_socket_can?s r c Cs>zt tjtjtj¡}Wnttfy0YdS0| ¡dSr)r rÚ SOCK_DGRAMÚ CAN_ISOTPrrrrrrrÚ_have_socket_can_isotpIs r#c Cs>zt tjtjtj¡}Wnttfy0YdS0| ¡dSr)r rr!Ú CAN_J1939rrrrrrrÚ_have_socket_can_j1939Ss r%c Cs<zt tjtjd¡}Wnttfy.YdS0| ¡dS©NrFT)r ÚPF_RDSÚSOCK_SEQPACKETrrrrrrrÚ_have_socket_rds]s r)c Cs<zt tjtjd¡}Wnttfy.YdS0| ¡dSr&)r ÚAF_ALGr(rrrrrrrÚ_have_socket_alggs r+c Cs<zt tjtjd¡}Wnttfy.YdS0| ¡dSr&)r Ú AF_QIPCRTRr!rrrrrrrÚ_have_socket_qipcrtrqs r-cCstƒdu}|S©N)r)ÚretrrrÚ_have_socket_vsock{s r0c Cs>zt tjtjtj¡}Wnttfy0YdS0| ¡dSr)r Ú AF_BLUETOOTHÚ SOCK_STREAMÚBTPROTO_RFCOMMrrrrrrrÚ_have_socket_bluetooths r4c cs8t ¡}zt |¡dVWt |¡n t |¡0dSr.)r ÚgetdefaulttimeoutÚsetdefaulttimeout)ÚtimeoutZ old_timeoutrrrÚsocket_setdefaulttimeoutŽs  r8ÚIPPROTO_UDPLITEÚic@seZdZdd„Zdd„ZdS)Ú SocketTCPTestcCs.t tjtj¡|_t |j¡|_|j ¡dSr.)r ÚAF_INETr2ÚservrÚ bind_portÚportÚlisten©ÚselfrrrÚsetUp¯szSocketTCPTest.setUpcCs|j ¡d|_dSr.©r=rrArrrÚtearDown´s zSocketTCPTest.tearDownN©Ú__name__Ú __module__Ú __qualname__rCrErrrrr;­sr;c@seZdZdd„Zdd„ZdS)Ú SocketUDPTestcCs$t tjtj¡|_t |j¡|_dSr.)r r<r!r=rr>r?rArrrrCºszSocketUDPTest.setUpcCs|j ¡d|_dSr.rDrArrrrE¾s zSocketUDPTest.tearDownNrFrrrrrJ¸srJc@seZdZdd„ZdS)ÚSocketUDPLITETestcCs(t tjtjtj¡|_t |j¡|_dSr.)r r<r!r9r=rr>r?rArrrrCÄszSocketUDPLITETest.setUpN)rGrHrIrCrrrrrKÂsrKcs4eZdZ‡fdd„Z‡fdd„Z‡fdd„Z‡ZS)ÚThreadSafeCleanupTestCasecs tƒj|i|¤Žt ¡|_dSr.)ÚsuperÚ__init__Ú threadingÚRLockÚ _cleanup_lock©rBÚargsÚkwargs©Ú __class__rrrNÏsz"ThreadSafeCleanupTestCase.__init__cs<|j"tƒj|i|¤ŽWdƒS1s.0YdSr.)rQrMÚ addCleanuprRrUrrrWÓsz$ThreadSafeCleanupTestCase.addCleanupcs<|j"tƒj|i|¤ŽWdƒS1s.0YdSr.)rQrMÚ doCleanupsrRrUrrrX×sz$ThreadSafeCleanupTestCase.doCleanups)rGrHrIrNrWrXÚ __classcell__rrrUrrLÈs  rLc@sDeZdZdZdZdZe e¡ZdZ e de e ¡d7Z dd„Z d S) Ú SocketCANTestÚ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 rrrrrWrÚbindÚ interfacerÚskipTestrArrrrCs ÿzSocketCANTest.setUpN) rGrHrIrbÚbufsizeÚ can_frame_fmtrÚcalcsizeZcan_frame_sizeÚbcm_cmd_msg_fmtrCrrrrrZÛs  rZc@seZdZdZdd„ZdS)Ú SocketRDSTesté cCsVt tjtjd¡|_| |jj¡zt |j¡|_Wnt yP|  d¡Yn0dS)Nrzunable to bind RDS socket) r r'r(r=rWrrr>r?rrcrArrrrCs  zSocketRDSTest.setUpN)rGrHrIrdrCrrrrrhsrhc@sDeZdZdd„Zdd„Zdd„Zdd„Zd d „Zd d „Zd d„Z dS)ÚThreadableTestcCs$|j|_|j|_|j|_|j|_dSr.)rCÚ_ThreadableTest__setUprEÚ_ThreadableTest__tearDownÚ_setUpÚ _tearDownrArrrrNDszThreadableTest.__init__cCs|j ¡dSr.)Ú server_readyÚsetrArrrÚ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__rOÚEventroÚ client_readyÚdoneÚqueueÚQueueÚserver_crashedÚidÚrfindÚgetattrÚthreadÚstart_new_threadÚ clientRunZ client_threadrkrpÚwait)rBZ methodnamer:Z test_methodrrrrmRs*       ÿ  zThreadableTest._setUpcCs>| ¡|j ¡|j ddd¡|j ¡r:|j ¡}|‚dSr.)rlryrƒruÚ__exit__rzÚqsizeÚget©rBÚexcrrrrnms    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) rorƒÚ clientSetUpÚ BaseExceptionrzÚputÚclientTearDownrxrpr|r Ú TypeError)rBZ test_funcÚerrrr‚vs(     þ  $zThreadableTest.clientRuncCs tdƒ‚dS)Nz clientSetUp must be implemented.)ÚNotImplementedErrorrArrrrŠŒszThreadableTest.clientSetUpcCs|j ¡t ¡dSr.)ryrpr€ÚexitrArrrrs zThreadableTest.clientTearDownN) rGrHrIrNrqrmrnr‚rŠrrrrrrjs& rjc@s&eZdZd dd„Zdd„Zdd„ZdS) ÚThreadedTCPSocketTestÚrunTestcCstj||dt |¡dS©N)Ú methodName©r;rNrj©rBr•rrrrN•szThreadedTCPSocketTest.__init__cCst tjtj¡|_dSr.)r r<r2ÚclirArrrrŠ™sz!ThreadedTCPSocketTest.clientSetUpcCs|j ¡d|_t |¡dSr.©r˜rrjrrArrrrœs z$ThreadedTCPSocketTest.clientTearDownN)r“©rGrHrIrNrŠrrrrrr’“s r’c@s&eZdZd dd„Zdd„Zdd„ZdS) ÚThreadedUDPSocketTestr“cCstj||dt |¡dSr”)rJrNrjr—rrrrN£szThreadedUDPSocketTest.__init__cCst tjtj¡|_dSr.)r r<r!r˜rArrrrЧsz!ThreadedUDPSocketTest.clientSetUpcCs|j ¡d|_t |¡dSr.r™rArrrrª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”)rKrNrjr—rrrrN³sz"ThreadedUDPLITESocketTest.__init__cCst tjtjtj¡|_dSr.)r r<r!r9r˜rArrrrŠ·sz%ThreadedUDPLITESocketTest.clientSetUpcCs|j ¡d|_t |¡dSr.r™rArrrrºs z(ThreadedUDPLITESocketTest.clientTearDownN)r“ršrrrrrœ¯s rœc@s&eZdZd dd„Zdd„Zdd„ZdS) ÚThreadedCANSocketTestr“cCstj||dt |¡dSr”)rZrNrjr—rrrrNÁszThreadedCANSocketTest.__init__cCsBt tjtjtj¡|_z|j |jf¡Wnty<Yn0dSr.)r rrrr˜rarbrrArrrrŠÅs  z!ThreadedCANSocketTest.clientSetUpcCs|j ¡d|_t |¡dSr.r™rArrrrÎs z$ThreadedCANSocketTest.clientTearDownN)r“ršrrrrr¿s  rc@s&eZdZd dd„Zdd„Zdd„ZdS) ÚThreadedRDSSocketTestr“cCstj||dt |¡dSr”)rhrNrjr—rrrrNÕszThreadedRDSSocketTest.__init__cCsLt tjtjd¡|_z |j tdf¡|j ¡|_WntyFYn0dS©Nr) r r'r(r˜raÚHOSTÚ getsocknameÚcli_addrrrArrrrŠÙs  z!ThreadedRDSSocketTest.clientSetUpcCs|j ¡d|_t |¡dSr.r™rArrrrä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ÚTestCaserNrjr—rrrrNðsz&ThreadedVSOCKSocketStreamTest.__init__cCsht tjtj¡|_| |jj¡|j tjtf¡|j  ¡|  ¡|j  ¡\|_ |_ | |j j¡dSr.)r ÚAF_VSOCKr2r=rWrraÚVMADDR_CID_ANYÚ VSOCKPORTr@rqÚacceptÚconnÚconnaddrrArrrrCôs z#ThreadedVSOCKSocketStreamTest.setUpcCsDt d¡t tjtj¡|_| |jj¡tƒ}|j  |t f¡dS)Nçš™™™™™¹?) ÚtimeÚsleepr r©r2r˜rWrrÚconnectr«)rBZcidrrrrŠýs  z)ThreadedVSOCKSocketStreamTest.clientSetUpcCs|j d¡}| |t¡dS©Né)r­ÚrecvÚ assertEqualÚMSG©rBÚmsgrrrÚ testStreams z(ThreadedVSOCKSocketStreamTest.testStreamcCs|j t¡|j ¡dSr.©r˜Úsendr·rrArrrÚ _testStreams z)ThreadedVSOCKSocketStreamTest._testStreamN)r“©rGrHrIrNrCrŠrºr½rrrrr¥és   r¥c@s6eZdZd dd„Zdd„Zdd„Zdd „Zd d „Zd S)ÚSocketConnectedTestr“cCstj||ddSr”)r’rNr—rrrrNszSocketConnectedTest.__init__cCs*t |¡| ¡|j ¡\}}||_dSr.)r’rCrqr=r¬Úcli_conn©rBr­ÚaddrrrrrCs zSocketConnectedTest.setUpcCs|j ¡d|_t |¡dSr.)rÀrr’rErArrrrEs zSocketConnectedTest.tearDowncCs(t |¡|j t|jf¡|j|_dSr.)r’rŠr˜r²r r?Ú serv_connrArrrrŠ#s zSocketConnectedTest.clientSetUpcCs|j ¡d|_t |¡dSr.)rÃrr’rrArrrr(s z"SocketConnectedTest.clientTearDownN)r“©rGrHrIrNrCrErŠrrrrrr¿ s  r¿c@s6eZdZd dd„Zdd„Zdd„Zdd „Zd d „Zd S)ÚSocketPairTestr“cCstjj||dt |¡dSr”r¦r—rrrrN/szSocketPairTest.__init__cCst ¡\|_|_dSr.)r Ú socketpairr=r˜rArrrrC3szSocketPairTest.setUpcCs|j ¡d|_dSr.rDrArrrrE6s zSocketPairTest.tearDowncCsdSr.rrArrrrŠ:szSocketPairTest.clientSetUpcCs|j ¡d|_t |¡dSr.r™rArrrr=s zSocketPairTest.clientTearDownN)r“rÄrrrrrÅ-s  rÅc@s$eZdZdd„Zdd„Zdd„ZdS)ÚSocketTestBasecCs| ¡|_| ¡dSr.)Ú newSocketr=Ú bindServerrArrrrCRs zSocketTestBase.setUpcCs| |j¡|j ¡|_dSr.)ÚbindSockr=r¡Ú serv_addrrArrrrÉVs zSocketTestBase.bindServercCs|j ¡d|_dSr.rDrArrrrE[s zSocketTestBase.tearDownN)rGrHrIrCrÉrErrrrrÇIs rÇcseZdZ‡fdd„Z‡ZS)ÚSocketListeningTestMixincstƒ ¡|j ¡dSr.)rMrCr=r@rArUrrrCcs zSocketListeningTestMixin.setUp©rGrHrIrCrYrrrUrrÌ`srÌcs<eZdZ‡fdd„Zdd„Zdd„Zdd„Zd d „Z‡ZS) ÚThreadedSocketTestMixincs tƒj|i|¤Žt |¡dSr.)rMrNrjrRrUrrrNpsz ThreadedSocketTestMixin.__init__cCs| ¡|_| ¡dSr.)ÚnewClientSocketr˜Ú bindClientrArrrrŠts z#ThreadedSocketTestMixin.clientSetUpcCs| ¡Sr.)rÈrArrrrÏxsz'ThreadedSocketTestMixin.newClientSocketcCs| |j¡|j ¡|_dSr.)rÊr˜r¡r¢rArrrrÐ|s z"ThreadedSocketTestMixin.bindClientcCs|j ¡d|_t |¡dSr.r™rArrrrs z&ThreadedSocketTestMixin.clientTearDown) rGrHrIrNrŠrÏrÐrrYrrrUrrÎhs  rÎcs@eZdZ‡fdd„Z‡fdd„Z‡fdd„Z‡fdd„Z‡ZS) ÚConnectedStreamTestMixincs*tƒ ¡| ¡|j ¡\}}||_dSr.)rMrCrqr=r¬rÀrÁrUrrrCs zConnectedStreamTestMixin.setUpcs|j ¡d|_tƒ ¡dSr.)rÀrrMrErArUrrrE˜s z!ConnectedStreamTestMixin.tearDowncs$tƒ ¡|j |j¡|j|_dSr.)rMrŠr˜r²rËrÃrArUrrrŠs z$ConnectedStreamTestMixin.clientSetUpcs6z|j ¡d|_Wnty&Yn0tƒ ¡dSr.)rÃrrrMrrArUrrr¢s    z'ConnectedStreamTestMixin.clientTearDown)rGrHrIrCrErŠrrYrrrUrrчs   rÑcs$eZdZ‡fdd„Zdd„Z‡ZS)ÚUnixSocketTestBasecs(t ¡|_| tj|j¡tƒ ¡dSr.)ÚtempfileÚmkdtempÚdir_pathrWÚosÚrmdirrMrCrArUrrrC³s zUnixSocketTestBase.setUpcCs,tj|jd}t ||¡| tj|¡dS)N)Údir)rÓÚmktemprÕrÚbind_unix_socketrWrÚunlink)rBÚsockÚpathrrrrʸs zUnixSocketTestBase.bindSock)rGrHrIrCrÊrYrrrUrrÒ«s rÒc@seZdZdd„ZdS)ÚUnixStreamBasecCst tjtj¡Sr.)r ÚAF_UNIXr2rArrrrÈÀszUnixStreamBase.newSocketN©rGrHrIrÈrrrrrÞ½srÞcs(eZdZeZ‡fdd„Zdd„Z‡ZS)Ú InetTestBasecstƒ ¡|jd|_dS©Nrr)rMrCrËr?rArUrrrCÉs zInetTestBase.setUpcCstj||jddS)N©Úhost)rr>rä©rBrÜrrrrÊÍszInetTestBase.bindSock)rGrHrIr rärCrÊrYrrrUrráÄs rác@seZdZdd„ZdS)Ú TCPTestBasecCst tjtj¡Sr.)r r<r2rArrrrÈÓszTCPTestBase.newSocketNràrrrrræÐsræc@seZdZdd„ZdS)Ú UDPTestBasecCst tjtj¡Sr.)r r<r!rArrrrÈÙszUDPTestBase.newSocketNràrrrrrçÖsrçc@seZdZdd„ZdS)ÚUDPLITETestBasecCst tjtjtj¡Sr.)r r<r!r9rArrrrÈßszUDPLITETestBase.newSocketNràrrrrrèÜsrèc@seZdZdd„ZdS)ÚSCTPStreamBasecCst tjtjtj¡Sr.)r r<r2Ú IPPROTO_SCTPrArrrrÈås ÿzSCTPStreamBase.newSocketNràrrrrréâsréc@seZdZejZdS)Ú Inet6TestBaseN)rGrHrIrÚHOSTv6rärrrrrëêsrëc@seZdZdd„ZdS)Ú UDP6TestBasecCst tjtj¡Sr.)r ÚAF_INET6r!rArrrrÈòszUDP6TestBase.newSocketNràrrrrríïsríc@seZdZdd„ZdS)ÚUDPLITE6TestBasecCst tjtjtj¡Sr.)r rîr!r9rArrrrÈøszUDPLITE6TestBase.newSocketNràrrrrrïõsrïcs*dd„‰‡‡fdd„}dd„}|r&|S|S)Nc_sdSr.r©rSrTrrrÚ client_passsz%skipWithClientIf..client_passcs*t ˆ¡|ƒ}t|tƒs&‡fdd„|_|S)NcsˆSr.r©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|Sr.rrò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)Ncsg|]}tˆ|ƒs|‘qSr)r ©Ú.0ÚnamerýrrÚ rôz requireAttrs..ú don't have ú, css|] }|VqdSr.rrrrrÚ rôzrequireAttrs..)rÿÚjoin)rùZ attributesÚmissingrrýrÚ requireAttrssÿr c Gs¨d}dd„|Dƒ}|r0dd dd„|Dƒ¡}nRdd„|Dƒ}ztj|Ž}Wn,tyx}zt|ƒ}WYd}~nd}~00| ¡t|dud d d d„|Dƒ¡|¡ƒS) NcSs$g|]}t|tƒrtt|ƒs|‘qSr)röÚstrr r ©rrùrrrr'sÿz!requireSocket..rrcss|] }|VqdSr.rrrrrr*rôz requireSocket..cSs$g|]}t|tƒrtt|ƒn|‘qSr)rör rr r rrrr,sÿzcan't create socket({0}): {1}css|]}t|ƒVqdSr.)r ©rÚorrrr8rô)rr rr rrÿÚformat)rSÚerrrZcallargsrrrrrÚ requireSockets$ÿÿþrc@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)rBrrrrrÚ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<r2ÚassertInÚfilenoÚreprÚ assertNotInrar r¡©rBrrrrÚ test_reprGs 6zGeneralModuleTests.test_reprNzneed _socket modulecCszt tjtj¡}z6d| ¡|j|j|jf}| t |ƒ|¡W|  ¡n |  ¡0d|j|j|jf}| t |ƒ|¡dS)Nz4z4) rr r<r2rÚfamilyr÷Úprotor¶rr)rBrÚ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<r2rr¶rÚReferenceErrorÚfail)rBrÚ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!rWrrar¡r*rŽÚsendtor¶r Ú exceptionr)rBrZsocknameÚcmrrrÚtestSendtoErrorsxsT   * ÿ * ÿ * . ÿ . ÿ . . . * 0z#GeneralModuleTests.testSendtoErrorscCs@tjtjrtjtjtjtjtjtjtj tj dSr.) r r<Úhas_ipv6rîr2r!rÚSOCK_RDMr(Ú SOL_SOCKETÚ SO_REUSEADDRrArrrÚtestCrucialConstants¤sz'GeneralModuleTests.testCrucialConstantscCstjtjtjrtjdSr.)r Ú IPPROTO_TCPÚ IPPROTO_UDPr6Ú IPPROTO_IPV6rArrrÚtestCrucialIpProtoConstants±sz.GeneralModuleTests.testCrucialIpProtoConstantsÚntúWindows specificcCs4tjtjtjtjtjtjtjtjdSr.) r ZIPPROTO_ICLFXBMZ IPPROTO_STZ IPPROTO_CBTZ IPPROTO_IGPZ IPPROTO_RDPZ IPPROTO_PGMZ IPPROTO_L2TPrêrArrrÚtestWindowsSpecificConstants·sz/GeneralModuleTests.testWindowsSpecificConstantsÚdarwinzmacOS specific testúIPv6 required for this testcCs0hd£}|D]}| tt|ƒd|›d¡q dS)N>Ú IPV6_CHECKSUMÚIPV6_RECVHOPLIMITZIPV6_USE_MIN_MTUÚ IPV6_DSTOPTSÚIPV6_RECVTCLASSÚ IPV6_HOPLIMITÚ IPV6_HOPOPTSÚIPV6_RTHDRDSTOPTSÚ IPV6_NEXTHOPÚIPV6_RECVDSTOPTSÚ IPV6_PKTINFOZIPV6_RECVPATHMTUZ IPV6_PATHMTUZ IPV6_DONTFRAGÚIPV6_RECVHOPOPTSÚIPV6_RTHDR_TYPE_0Ú IPV6_TCLASSÚ IPV6_RTHDRÚIPV6_RECVPKTINFOÚIPV6_RECVRTHDRzMissing RFC3542 socket option 'ú')rr r )rBZoptsÚ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 failurersrzError resolving host to ip.z=Error testing host resolution mechanisms. (fqdn: %s, all: %s)) r Ú gethostnameÚ gethostbynamerrcrÚfindÚ gethostbyaddrÚgetfqdnr&r)rBÚ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 rYrr[)rBrÂ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 rYr[)rBZ explanationrÂrrrÚ test_host_resolution_bad_addressýsÿ(z3GeneralModuleTests.test_host_resolution_bad_addressÚ sethostnameztest needs socket.sethostname()rXztest 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 rootsbarr0)r rXrdrÚerrnoÚEPERMrcr¶)rBZoldhnrrrrÚ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 rirÚintr Ú assertGreaterÚif_nametoindexr¶Úif_indextoname)rBZ interfacesÚindexrZ_indexÚ_namerrrÚtestInterfaceNameIndex s         z)GeneralModuleTests.testInterfaceNameIndexrmz&socket.if_indextoname() not available.cCs$| ttjd¡| ttjd¡dS©NrZ _DEADBEEF)r*rr rmrŽrArrrÚtestInvalidInterfaceIndexToName0sz2GeneralModuleTests.testInvalidInterfaceIndexToNamerlz&socket.if_nametoindex() not available.cCs$| ttjd¡| ttjd¡dSrq)r*rŽr rlrrArrrÚtestInvalidInterfaceNameToIndex6sz2GeneralModuleTests.testInvalidInterfaceNameToIndexÚ getrefcountztest needs sys.getrefcount()cCsJzt t¡}t td¡Wn*tyDt t¡|kr@| d¡Yn0dS)Nrz$socket.getnameinfo loses a reference)ÚsysrtrGr Ú getnameinforŽr&)rBÚorigrrrÚtestRefCountGetNameInfo<s   z*GeneralModuleTests.testRefCountGetNameInfocCs(zt dd¡Wnty"Yn0dS)N)r]rrrr)r rvrrArrrÚtestInterpreterCrashHs z'GeneralModuleTests.testInterpreterCrashc CsŽtjdtjdtjdtjdi}| ¡D]d\}}d|>d}dD]$}| ||@||||@ƒƒ|@¡q<||ƒ}| ||@|¡| t|d¡q$dS)Né érr)rrréÿÿiÿÿr¤igE#i2Tvl) r ÚhtonlÚntohlÚhtonsÚntohsÚitemsr¶r*Ú OverflowError)rBZsizesÚfuncÚsizeÚmaskr:ZswappedrrrÚ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)rrrr¤r|ìÿÿéÿÿÿÿéþÿÿÿlrréèé) Ú _testcapiZINT_MINÚINT_MAXr r€rr~r}r*r‚Ú assertWarnsÚDeprecationWarning)rBrŒ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)ÚlinuxrB)ÚdaytimeZqotdÚdomain)Zechor”r•ZtcpÚgetandroidapileveléZudprˆr‹)r¶ruÚplatformÚ startswithr Ú getservbynamerr r–rZ is_androidÚ getservbyportr*r‚)rBÚ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 r5Ú gettimeoutr8r6r*Ú ValueErrorrŽ)rBrrÜrrrÚtestDefaultTimeout£s .  .  Nz%GeneralModuleTests.testDefaultTimeoutÚ inet_atonztest needs socket.inet_aton()cCs(| dt d¡¡| dt d¡¡dS)Nóú0.0.0.0óÿÿÿÿra)r¶r r¢rArrrÚ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 ˆˆ|ƒSr.r©Úa)r<r§rrróÈrôz5GeneralModuleTests.testIPv4toString..csˆ ttf||¡Sr.©r*rr ©rƒr©rArrróÊs ÿr£r¤sÿÿz 255.0.255.0sªªªªz170.170.170.170óú1.2.3.4r¥raz0.0.0.z 300.0.0.0za.0.0.0z 1.2.3.4.5ú::1)r r¢r§r<r¶r©rBrÚgÚ assertInvalidr)r<r§rBrÚ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îr6úIPv6 not availableú+could not import needed symbols from socketÚwin32ú::é&'úIPv6 might not be supportedcs ˆˆ|ƒSr.rr¨)rîr§rrróörôz5GeneralModuleTests.testIPv6toString..csˆ ttfˆ|¡Sr.rªr¨©rrBrrró÷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îr6rcÚ ImportErrorrur˜rÚwinerrorr¶r©rBr6rr±r)rîrr§rBrÚ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 ˆˆ|ƒSr.rr¨)r<r¿rrró)rôz5GeneralModuleTests.testStringToIPv4..csˆ ttf||¡Sr.rªr«rArrró*s ÿz1.0.1.0sz 170.85.170.85sªUªUrar¥r­r¬ssrº)r rÀr¿r<r¶Ú bytearrayr¯r)r<r¿rBrÚ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îr6r³r´rµrºr·r¸cs ˆˆ|ƒSr.rr¨)rîr¿rrróPrôz5GeneralModuleTests.testStringToIPv6..csˆ ttfˆ|¡Sr.rªr¨r¹rrróQs ÿr¶r®sz!aef:b01:506:1001:ffff:9997:55:170s ï ÿÿ™—Upsss) r r¿rîr6rcr»rur˜rr¼r¶rÁr½r)rîrr¿rBrÚtestStringToIPv6?s0    þz#GeneralModuleTests.testStringToIPv6cCsœt ¡}t tjtj¡}| |j¡| d|f¡| ¡}zt  t  ¡¡}Wnt yh|  d¡Yn0|  |dd|fd|d¡| |d|¡dS)Nr¤rWrz %s invalidrr)rÚfind_unused_portr r<r2rWrrar¡rYrXrrcrr¶)rBr?rÜrZ my_ip_addrrrrÚ testSockNamecs  zGeneralModuleTests.testSockNamecCs@t tjtj¡}| |j¡| tjtj¡}| |dkd¡dS)Nrzinitial mode is reuse) r r<r2rWrÚ getsockoptr8r9Ú assertFalse©rBrÜZreuserrrÚtestGetSockOptus z!GeneralModuleTests.testGetSockOptcCsRt tjtj¡}| |j¡| tjtjd¡| tjtj¡}|  |dkd¡dS)Nrrrzfailed to set reuse mode) r r<r2rWrÚ setsockoptr8r9rÆrÇrÈrrrÚtestSetSockOpt}s  z!GeneralModuleTests.testSetSockOptcCsNt tjtj¡}| d¡Wdƒn1s00Y| t|jd¡dS)Nrróspam)r r<r2Ú 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 raÚ _LOCALHOSTrrrrrfÚEBADFÚENOTSOCKr&)rBrÜrrrrÚtestCloseException‹s ,z%GeneralModuleTests.testCloseExceptioncCsŠt tjtj¡f}| |jtj¡ttdƒrJ| |jtjtjBtjf¡n| |jtj¡| |j d¡Wdƒn1s|0YdS)NÚ SOCK_CLOEXECr) r r<r2r¶r!r rr÷rÔr"rå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 rWrrrÄr*r‚rar Ú itertoolsÚcountrrfZ EADDRINUSE)rBrÜr?Zbig_portZneg_portr:rrrrÚ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ˆ)rrédrÛ) rr r rWrr*r rrÚ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 rWrrrÝrr¼rcr*rŽ)rBrrˆ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©NrrrrørûrArrÚraising_handler?szEGeneralModuleTests.check_sendall_interrupted..raising_handlergø?rróxr)r Úsignalr rcrÆÚSIGALRMrÍr*ÚZeroDivisionErrorr÷ÚsendallrÚ SOCK_MAX_SIZEr7r)rBZ with_timeoutrürþÚcrÚ old_alarmrrArÚcheck_sendall_interrupted7s4       .  ÿ  ý z,GeneralModuleTests.check_sendall_interruptedcCs| d¡dS©NF©rrArrrÚtest_sendall_interruptedVsz+GeneralModuleTests.test_sendall_interruptedcCs| d¡dS)NTr rArrrÚ%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<r2rrŽÚResourceWarningrÚ gc_collectrr ÚwarningrSÚmakefile)rBrÜrr4rrrrÚtest_dealloc_warn\s &  z$GeneralModuleTests.test_dealloc_warncCsVt tjtj¡2}| d¡}| ¡| t|ƒd¡Wdƒn1sH0YdS)Nr z<_io.BufferedReader name=-1>)r r<r2rrr¶r©rBrÜÚ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 rrÚreadablerÇÚwritableÚseekablerr*r rrrrÚ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)Nrrrrˆ) r rar rrr*rr@rŽrå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 rr¶r)rBrrÜ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 ÚassertRaisesRegexr r)rBrrÜ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¶r2)rBrÜÚprotocolr!r÷rrrÚ test_pickleœs2zGeneralModuleTests.test_picklec CsœdD]L}t tjtj¡(}| tdf¡| |¡Wdƒq1sF0Yqt tjtj¡&}| tdf¡| ¡Wdƒn1sŽ0YdS)N)rrˆr)r r<r2rar r@)rBÚ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<r2rar r*r‚r@r)rBrŒ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*r‚r rvrrìrîr2rarrrrÚ 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!r<r¶)rBrtÚ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%rr3)r rirèrîr!r<r¶)rBÚifindexÚtest_interfacertr4rrrÚ&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é*r6rr3r)r rèr rîr!r<r¶)rBr7rtr4rrrÚ%test_getaddrinfo_ipv6_scopeid_numericÙs ü z8GeneralModuleTests.test_getaddrinfo_ipv6_scopeid_numericcCsHt ¡d\}}ddd|f}t |tjtjB¡}| |d|df¡dS)Nrr2rúff02::1de:c0:face:8d%Ú1234)r rirvÚNI_NUMERICHOSTÚNI_NUMERICSERVr¶)rBr7r8r4ÚnameinforrrÚ&test_getnameinfo_ipv6_scopeid_symbolicês z9GeneralModuleTests.test_getnameinfo_ipv6_scopeid_symboliccCs@d}ddd|f}t |tjtjB¡}| |dt|ƒdf¡dS)Nr:r2rrr<r=)r rvr>r?r¶r )rBr7r4r@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<r2r¶r r!r÷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ÔrrTF)rr r2r<r¶r÷rÍÚ setblocking)rBrDrÔ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)Nrrcss|]\}}|dvr|VqdS)>rDrÔNr)rrÚkindrrrr!sþzEGeneralModuleTests.test_unknown_socket_family_repr..r—)r!r÷r"rr)r r<r2ÚdetachÚmaxÚ AddressFamilyÚ __members__ÚvaluesÚ SocketKindrr¶r!r÷rr")rBrÜÚ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 ||_dSr.©rN)rBrNrrrrN2szEGeneralModuleTests.test__sendfile_use_sendfile..File.__init__cSs|jSr.rQrArrrr5szCGeneralModuleTests.test__sendfile_use_sendfile..File.filenoN)rGrHrIrNrrrrrÚFile1srRr¤rŠ) r rÖrÚcurdirÚO_RDONLYrr*Ú_GiveupOnSendfileÚ_sendfile_use_sendfiler‚rŽ)rBrRrÜrNrrrÚtest__sendfile_use_sendfile/s  , 0 z.GeneralModuleTests.test__sendfile_use_sendfilecCst| |j|¡| |j|¡| ¡}tj|d}| |j¡| ¡| |j|¡| |j|¡| | ¡|¡dS©NrÏ)r¶r!r÷rr rWrrH)rBrr!ÚstyperNÚ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<r2rWrrarr r[r r!rërîrìrÓrÔÚshutilÚrmtreerßrÖrÝrÚPermissionError)rBrZtmpdirrrrÚtest_socket_filenoNs4       ÿz%GeneralModuleTests.test_socket_filenocCsD| td¡$tjtjtjddWdƒn1s60YdS)Nzinteger argument expectedg@E@rÏ©r#rŽr r<r2rArrrÚ test_socket_fileno_rejects_floatmsz3GeneralModuleTests.test_socket_fileno_rejects_floatcCsD| td¡$tjtjtjddWdƒn1s60YdS)Nzinteger is requiredÚfoorÏr`rArrrÚ&test_socket_fileno_rejects_other_typesqsz9GeneralModuleTests.test_socket_fileno_rejects_other_typescCsD| td¡$tjtjtjddWdƒn1s60YdS)Núnegative file descriptorrˆrÏ©r#r r r<r2rArrrÚ)test_socket_fileno_rejects_invalid_socketuszrÖrrArur˜rrërVr`rbrcr r rhrprrrsrxryr†rÚ cpython_onlyr‘rr¡r¦r²r¾rÂrÃrÅrÉrËrÎrÓrÕrÙrÜrÞrórôZis_resource_enabledrörr r rrrrr r$r+r.r/r1r5ÚskipIfrr9r;rArBrCrFrOrWr[r_rarcrfrgrhrjrrrrr>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)Ú BasicCANTestcCstjtjtjdSr.)r ÚAF_CANrrrArrrr:›sz!BasicCANTest.testCrucialConstantsÚCAN_BCMú&socket.CAN_BCM required for this test.cCs”tjtjtjtjtjtjtjtjtj tj tj tj tj tjtjtjtjtjtjtjtjtjtjtjdSr.)r rpÚ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_FRAMErArrrÚtestBCMConstants s0zBasicCANTest.testBCMConstantscCs8t tjtjtj¡}Wdƒn1s*0YdSr.©r rrrrrrrÚtestCreateSocketÀszBasicCANTest.testCreateSocketcCs8t tjtjtj¡}Wdƒn1s*0YdSr.)r rr!rprrrrÚtestCreateBCMSocketÄsz BasicCANTest.testCreateBCMSocketcCsVt tjtjtj¡.}d}| |¡| | ¡|¡Wdƒn1sH0YdS)N)r.)r rrrrar¶r¡)rBrÚaddressrrrÚ testBindAnyÊs zBasicCANTest.testBindAnycCsJt tjtjtj¡"}| td|jd¡Wdƒn1s<0YdS)Núinterface name too long)Áxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx)r rrrr#rrarrrrÚ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)rrr) r rrrrÊÚ SOL_CAN_RAWr’r¶rÆ)rBrZloopbackrrrÚ 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Êr“r•r¶rÆrÁ)rBÚcan_idZcan_maskZ can_filterrrrrÚ testFilteràsÿzBasicCANTest.testFilterN)rGrHrIr:r§rkr r r‰r‹rŒrŽr‘r”r™rrrrrn˜s( ÿ  ÿ  ÿ  ÿrnc@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”)rrNr—rrrrNïszCANTest.__init__cCs&t|ƒ}| dd¡}t |j|||¡S)Nr^ó)rêÚljustrr—re)Úclsr˜ÚdataÚcan_dlcrrrÚbuild_can_frameòs zCANTest.build_can_framecCs&t |j|¡\}}}|||d|…fSr.)rrre)rÚframer˜rŸržrrrÚdissect_can_frameùszCANTest.dissect_can_framecCs6|j |j¡\}}| |j|¡| |d|j¡dSrŸ)rÚrecvfromrdr¶Úcfrb©rBr¤rÂrrrÚ testSendFrameÿszCANTest.testSendFramecCs | dd¡|_|j |j¡dS)Nrs©r r¤r˜r¼rArrrÚ_testSendFrameszCANTest._testSendFramecCs$|j |j¡\}}| |j|¡dSr.)rr£rdr¶r¤r¥rrrÚtestSendMaxFrameszCANTest.testSendMaxFramecCs | dd¡|_|j |j¡dS)Nrsr§rArrrÚ_testSendMaxFrame szCANTest._testSendMaxFramecCsD|j |j¡\}}| |j|¡|j |j¡\}}| |j|¡dSr.)rr£rdr¶Úcf1Úcf2r¥rrrÚtestSendMultiFramesszCANTest.testSendMultiFramescCs<| dd¡|_|j |j¡| dd¡|_|j |j¡dS)NésD3"és™"3)r r«r˜r¼r¬rArrrÚ_testSendMultiFramesszCANTest._testSendMultiFramesrprqcCsP|j |j¡\}}| |j|¡| |¡\}}}| |j|¡| |j|¡dSr.)r˜r£rdr¶r¤r¢r˜rž)rBr¤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|||||||| | ¡ } | |j } | | ¡} | | t| ƒ¡dS)Né#)éÀéÿéîri"rr)r rr!rprWrr²rbr˜Úbytesržr r¤rurr—rgr¼r¶rê)rBZbcmZopcoderærØZ ival1_secondsZ ival1_usecZ ival2_secondsZ ival2_usecZ bcm_can_idZnframesÚheaderZheader_plus_frameZ bytes_sentrrrÚtestBCM's4 ÷  zCANTest.testBCMN)r“)rGrHrIrNÚ classmethodr r¢r¦r¨r©rªr­r°r§rkr 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©Nr[©rMrNrbrRrUrrrNJszISOTPTest.__init__cCstjtjtjtjdSr.)r rorr"r!rArrrr:NszISOTPTest.testCrucialConstantscCs8t tjtjtj¡}Wdƒn1s*0YdSr.rŠrrrrr‹TszISOTPTest.testCreateSocketr"z(socket.CAN_ISOTP required for this test.cCs8t tjtjtj¡}Wdƒn1s*0YdSr.)r rr!r"rrrrÚtestCreateISOTPSocketXszISOTPTest.testCreateISOTPSocketc Csnt tjtjtj¡F}| td¡| d¡Wdƒn1sB0YWdƒn1s`0YdS)Nr)rrrr¤)r rr!r"r#rrarrrrr‘^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"rbrar¶r¡rrfÚENODEVrc©rBrrÂrrrrÚtestBindds  2 ÿzISOTPTest.testBind)rGrHrIrNr:r‹r§rkr r r½r‘rÀrYrrrUrrº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¼rRrUrrrNuszJ1939Test.__init__r$z(socket.CAN_J1939 required for this test.cCs”tjtjtjtjtjtjtjtjtj tj tj tj tj tjtjtjtjtjtjtjtjtjtjtjdSr.)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_MAXrArrrÚtestJ1939Constantsys0zJ1939Test.testJ1939ConstantscCs8t tjtjtj¡}Wdƒn1s*0YdSr.)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$rbrÃrÄrÂrar¶r¡rrfr¾rcr¿rrrrÀ¢s 2 ÿzJ1939Test.testBind) rGrHrIrNr§rkr r rÅrÆrÀrYrrrUrrÁrs  ÿ ! ÿ rÁz#RDS sockets required for this test.c@s$eZdZdd„Zdd„Zdd„ZdS)Ú BasicRDSTestcCstjtjdSr.)r ÚAF_RDSr'rArrrr:³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Êr8Ú SO_RCVBUFÚ SO_SNDBUF)rBrdrrrrÚtestSocketBufferSize»sz!BasicRDSTest.testSocketBufferSizeN)rGrHrIr:r‹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”)ržrNr—rrrrNÅszRDSTest.__init__cstƒ ¡t ¡|_dSr.)rMrCrOrwZevtrArUrrrCÈs z RDSTest.setUpcCs2|j |j¡\}}| |j|¡| |j|¡dSr.)r=r£rdr¶ržr¢©rBržrÂrrrÚtestSendAndRecvÌszRDSTest.testSendAndRecvcCs"d|_|j |jdt|jf¡dS©NrÌr©ržr˜r2r r?rArrrÚ_testSendAndRecvÑszRDSTest._testSendAndRecvcCsH|j |jtj¡\}}| |j|¡|j |j¡\}}| |j|¡dSr.)r=r£rdr ÚMSG_PEEKr¶ržrÍrrrÚtestPeekÕszRDSTest.testPeekcCs"d|_|j |jdt|jf¡dSrÏrÐrArrrÚ _testPeekÛszRDSTest._testPeekÚrecvmsgcCs(|j |j¡\}}}}| |j|¡dSr.)r=rÕrdr¶rž)rBržÚ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?rArrrÚ_testSendAndRecvMsgäszRDSTest._testSendAndRecvMsgcCsD|j |j¡\}}| |j|¡|j |j¡\}}| |j|¡dSr.)r=r£rdr¶Údata1Údata2rÍrrrÚtestSendAndRecvMultiészRDSTest.testSendAndRecvMulticCs@d|_|j |jdt|jf¡d|_|j |jdt|jf¡dS)Nsbaconrsegg)rÚr˜r2r r?rÛrArrrÚ_testSendAndRecvMultiðszRDSTest._testSendAndRecvMulticCsLt |jgggd¡\}}}| |j|¡|j |j¡\}}| |j|¡dS)Ng@)Úselectr=rr£rdr¶rž)rBrrr]ržrÂrrrÚ testSelect÷szRDSTest.testSelectcCs"d|_|j |jdt|jf¡dS)NsselectrrÐrArrrÚ _testSelectýszRDSTest._testSelect)r“)rGrHrIrNrCrÎrÑrÓrÔr r r×rÙrÜrÝrßràrYrrrUrrÌÂs      rÌz'QIPCRTR sockets required for this test.c@s<eZdZdd„Zdd„Zdd„Zdd„Zd d „Zd d „Zd S)ÚBasicQIPCRTRTestcCs tjdSr.)r r,rArrrr: sz%BasicQIPCRTRTest.testCrucialConstantscCs4t tjtj¡}Wdƒn1s&0YdSr.)r r,r!rrrrr‹ sz!BasicQIPCRTRTest.testCreateSocketcCsHt tjtj¡$}| | ¡dd¡Wdƒn1s:0YdS©Nrrr)r r,r!r¶r¡rrrrÚ testUnbound szBasicQIPCRTRTest.testUnboundcCs^t tjtj¡:}tj|| ¡dd| | ¡dd¡Wdƒn1sP0YdS)Nrrãrr)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çrrr)r r,r!r²rär¡rrrrÚtestAutoBindSock s z!BasicQIPCRTRTest.testAutoBindSockN) rGrHrIr:r‹rãrårærèrrrrrá s rác@s,eZdZdd„Zdd„Zdd„Zdd„Zd S) ÚBasicVSOCKTestcCs tjdSr.)r r©rArrrr:# sz#BasicVSOCKTest.testCrucialConstantscCs4tjtjtjtjtjtjtjtjdSr.) 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_VERSIONrrArrrÚtestVSOCKConstants& sz!BasicVSOCKTest.testVSOCKConstantscCs4t tjtj¡}Wdƒn1s&0YdSr.)r r©r2rrrrr‹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©r2rÆrìrêrërÊr¶)rBrZorig_maxrwZorig_minrrrrË4 sDÿÿÿ ÿ ÿ ÿ ÿÿ ÿÿ ÿÿz#BasicVSOCKTest.testSocketBufferSizeN)rGrHrIr:rð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_LOCALr1r3rur˜Ú BTPROTO_HCIZSOL_HCIÚ BTPROTO_L2CAPr™Ú BTPROTO_SCOrArrrÚtestBluetoothConstantsS s  z)BasicBluetoothTest.testBluetoothConstantscCs8t tjtjtj¡}Wdƒn1s*0YdSr.)r r1r2r3rrrrÚtestCreateRfcommSocketa sz)BasicBluetoothTest.testCreateRfcommSocketrµz&windows does not support L2CAP socketscCs8t tjtjtj¡}Wdƒn1s*0YdSr.)r r1r(rôrrrrÚtestCreateL2capSockete sz(BasicBluetoothTest.testCreateL2capSocketz$windows does not support HCI socketscCs8t tjtjtj¡}Wdƒn1s*0YdSr.)r r1rrórrrrÚtestCreateHciSocketj sz&BasicBluetoothTest.testCreateHciSocketr’z.windows and freebsd do not support SCO socketscCs8t tjtjtj¡}Wdƒn1s*0YdSr.)r r1r(rõrrrrÚtestCreateScoSocketo sz&BasicBluetoothTest.testCreateScoSocketN) rGrHrIrör÷r§rmrur˜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¿rNr—rrrrNx szBasicTCPTest.__init__cCs|j d¡}| |t¡dSr³)rÀrµr¶r·r¸rrrÚtestRecv{ s zBasicTCPTest.testRecvcCs|j t¡dSr.©rÃr¼r·rArrrÚ _testRecv€ szBasicTCPTest._testRecvcCs8|j ttƒd¡}|j d¡}||}| |t¡dS©Nér´)rÀrµrêr·r¶)rBÚseg1Úseg2r¹rrrÚtestOverFlowRecvƒ s zBasicTCPTest.testOverFlowRecvcCs|j t¡dSr.rþrArrrÚ_testOverFlowRecvŠ szBasicTCPTest._testOverFlowRecvcCs |j d¡\}}| |t¡dSr³)rÀr£r¶r·©rBr¹rÂrrrÚ testRecvFrom szBasicTCPTest.testRecvFromcCs|j t¡dSr.rþrArrrÚ _testRecvFrom’ szBasicTCPTest._testRecvFromcCs@|j ttƒd¡\}}|j d¡\}}||}| |t¡dSr)rÀr£rêr·r¶)rBrrÂrr¹rrrÚtestOverFlowRecvFrom• sz!BasicTCPTest.testOverFlowRecvFromcCs|j t¡dSr.rþrArrrÚ_testOverFlowRecvFromœ sz"BasicTCPTest._testOverFlowRecvFromcCs0d}|j d¡}|sq ||7}q| |d¡dS)Nrôr´óffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff)rÀrµr¶)rBr¹ÚreadrrrÚ testSendAllŸ s   zBasicTCPTest.testSendAllcCsd}|j |¡dS)Nr )rÃr)rBZ big_chunkrrrÚ _testSendAll© szBasicTCPTest._testSendAllcCsP|j ¡}t |tjtj¡}| |j¡| |tj¡|  d¡}|  |t ¡dSr³) rÀrr Úfromfdr<r2rWrrrµr¶r·)rBrNrÜr¹rrrÚ testFromFd­ s    zBasicTCPTest.testFromFdcCs|j t¡dSr.rþrArrrÚ _testFromFd¶ szBasicTCPTest._testFromFdcCs0|j ¡}| |j¡| d¡}| |t¡dSr³)rÀÚduprWrrµr¶r·)rBrÜr¹rrrÚtestDup¹ s   zBasicTCPTest.testDupcCs|j t¡dSr.rþrArrrÚ_testDupÀ szBasicTCPTest._testDupcCs&|j d¡}| |t¡|j ¡dSr³)rÀrµr¶r·ryrƒr¸rrrÚ testShutdownà s  zBasicTCPTest.testShutdowncCs|j t¡|j d¡dSrñ)rÃr¼r·ÚshutdownrArrrÚ _testShutdownÌ s zBasicTCPTest._testShutdowncCsXddl}|j t¡| t|jj|jd¡| t|jjd|jd¡|j d¡dS)Nrrrr¤) rŒrÃr¼r·r*r‚rrÚUINT_MAX©rBrŒ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ÀrrHr¶rÚ_closedr*rrµrr r<r2rWr·)rBrrrÜr¹rrrÚ testDetachÝ s      zBasicTCPTest.testDetachcCs|j t¡dSr.rþrArrrÚ _testDetachí szBasicTCPTest._testDetachN)r“)rGrHrIrNrýrÿrrrrr r r rrrrrrrrrlZtestShutdown_overflowrrrrrrrrûv s,      rûc@sFeZdZddd„Zdd„Zdd„Zdd „Zd d „Zd d „Zdd„Z dS)Ú BasicUDPTestr“cCstj||ddSr”)r›rNr—rrrrNó szBasicUDPTest.__init__cCs |j ttƒ¡}| |t¡dSr.©r=rµrêr·r¶r¸rrrÚtestSendtoAndRecvö szBasicUDPTest.testSendtoAndRecvcCs|j tdt|jf¡dSrŸ©r˜r2r·r r?rArrrÚ_testSendtoAndRecvû szBasicUDPTest._testSendtoAndRecvcCs$|j ttƒ¡\}}| |t¡dSr.©r=r£rêr·r¶rrrrrþ szBasicUDPTest.testRecvFromcCs|j tdt|jf¡dSrŸr!rArrrr szBasicUDPTest._testRecvFromcCs| t|jjd¡dS©Nrˆ©r*r r=r£rArrrÚtestRecvFromNegative sz!BasicUDPTest.testRecvFromNegativecCs|j tdt|jf¡dSrŸr!rArrrÚ_testRecvFromNegative sz"BasicUDPTest._testRecvFromNegativeN)r“© rGrHrIrNr r"rrr&r'rrrrrñ s rc@sFeZdZddd„Zdd„Zdd„Zdd „Zd d „Zd d „Zdd„Z dS)ÚBasicUDPLITETestr“cCstj||ddSr”)rœrNr—rrrrN szBasicUDPLITETest.__init__cCs |j ttƒ¡}| |t¡dSr.rr¸rrrr  sz"BasicUDPLITETest.testSendtoAndRecvcCs|j tdt|jf¡dSrŸr!rArrrr" sz#BasicUDPLITETest._testSendtoAndRecvcCs$|j ttƒ¡\}}| |t¡dSr.r#rrrrr szBasicUDPLITETest.testRecvFromcCs|j tdt|jf¡dSrŸr!rArrrr" szBasicUDPLITETest._testRecvFromcCs| t|jjd¡dSr$r%rArrrr&% sz%BasicUDPLITETest.testRecvFromNegativecCs|j tdt|jf¡dSrŸr!rArrrr') 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ƒ ¡dSr.)rOrwÚ misc_eventrMrCrArUrrrCN s zSendrecvmsgBase.setUpcCs |j |¡Sr.)Úcli_sockr¼r¸rrrÚ sendToServerR szSendrecvmsgBase.sendToServerrcGs|jj||jt|ƒd…ŽSr.)r,rØÚsendmsg_to_server_defaultsrê©rBrSrrrÚsendmsgToServerZ sÿzSendrecvmsgBase.sendmsgToServercGs |j|g|¢RŽ}| |¡|Sr.)rÕÚregisterRecvmsgResult)rBrÜrdrSÚresultrrrÚ doRecvmsgb s zSendrecvmsgBase.doRecvmsgcCsdSr.r©rBr2rrrr1l sz%SendrecvmsgBase.registerRecvmsgResultcCs| ||¡dSr.©r¶©rBZaddr1Zaddr2rrrÚ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Ú Exceptionrr¶) rBræÚeorÚchecksetÚ checkunsetÚignoreZ defaultsetZ defaultunsetZinbothr…rrrÚ checkFlags‡ s&      ÿzSendrecvmsgBase.checkFlags)Nrrr)rGrHrIrÚLOOPBACK_TIMEOUTÚ fail_timeoutrCr-r.r0r3r1r7r;rrr r:r<r=rCrYrrrUrr*G s  r*c@seZdZdd„ZdS)ÚRecvmsgIntoMixincGsht|ƒ}|j|gg|¢RŽ}| |¡| |dd¡| |d|¡t|d|d…ƒf|dd…Srý)rÁÚ recvmsg_intor1ÚassertGreaterEqualÚassertLessEqualr¶)rBrÜrdrSÚbufr2rrrr3Á s  zRecvmsgIntoMixin.doRecvmsgN)rGrHrIr3rrrrrF¾ srFcs eZdZe‡fdd„ƒZ‡ZS)ÚSendrecvmsgDgramFlagsBasecstƒjtjBSr.)rMr=r Ú MSG_TRUNCrArUrrr=Í sz5SendrecvmsgDgramFlagsBase.msg_flags_non_eor_indicator)rGrHrIÚpropertyr=rYrrrUrrKÊ srKcs eZdZe‡fdd„ƒZ‡ZS)ÚSendrecvmsgSCTPFlagsBasecstƒjtjBSr.)rMr<r ÚMSG_EORrArUrrr<Õ sz0SendrecvmsgSCTPFlagsBase.msg_flags_eor_indicator)rGrHrIrMr<rYrrrUrrNÒ srNc@s8eZdZedd„ƒZedd„ƒZedd„ƒZdd„Zd S) ÚSendrecvmsgConnectionlessBasecCs|jSr.)r=rArrrÚ serv_sockß sz'SendrecvmsgConnectionlessBase.serv_sockcCs|jSr.)r˜rArrrr,ã sz&SendrecvmsgConnectionlessBase.cli_sockcCsggd|jfSrŸ)rËrArrrr.ç sz8SendrecvmsgConnectionlessBase.sendmsg_to_server_defaultscCs|j ||j¡Sr.)r,r2rËr¸rrrr-ë sz*SendrecvmsgConnectionlessBase.sendToServerN)rGrHrIrMrQr,r.r-rrrrrPÚ s   rPc@s,eZdZedd„ƒZedd„ƒZdd„ZdS)ÚSendrecvmsgConnectedBasecCs|jSr.)rÀrArrrrQõ sz"SendrecvmsgConnectedBase.serv_sockcCs|jSr.)rÃrArrrr,ù sz!SendrecvmsgConnectedBase.cli_sockcCsdSr.rr6rrrr7ý sz,SendrecvmsgConnectedBase.checkRecvmsgAddressN)rGrHrIrMrQr,r7rrrrrRï s   rRcseZdZ‡fdd„Z‡ZS)ÚSendrecvmsgServerTimeoutBasecstƒ ¡|j |j¡dSr.)rMrCrQrÍrErArUrrrC s z"SendrecvmsgServerTimeoutBase.setUprÍrrrUrrS srSc@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¡dSr.©r¶rQrµrêr·rArrrÚ testSendmsg szSendmsgTests.testSendmsgcCs| | tg¡ttƒ¡dSr.©r¶r0r·rêrArrrÚ _testSendmsg szSendmsgTests._testSendmsgcCs| |j ttƒ¡t¡dSr.rUrArrrÚtestSendmsgDataGenerator sz%SendmsgTests.testSendmsgDataGeneratorcCs&| | dd„tfDƒ¡ttƒ¡dS)Ncss|] }|VqdSr.rr rrrr rôz9SendmsgTests._testSendmsgDataGenerator..rWrArrrÚ_testSendmsgDataGenerator sÿz&SendmsgTests._testSendmsgDataGeneratorcCs| |j ttƒ¡t¡dSr.rUrArrrÚtestSendmsgAncillaryGenerator sz*SendmsgTests.testSendmsgAncillaryGeneratorcCs(| | tgdd„dDƒ¡ttƒ¡dS)Ncss|] }|VqdSr.rr rrrr# rôz>SendmsgTests._testSendmsgAncillaryGenerator..rrWrArrrÚ_testSendmsgAncillaryGenerator" sÿz+SendmsgTests._testSendmsgAncillaryGeneratorcCs| |j ttƒ¡t¡dSr.rUrArrrÚtestSendmsgArray& szSendmsgTests.testSendmsgArraycCs$| | t dt¡g¡ttƒ¡dS)NÚB)r¶r0Úarrayr·rêrArrrÚ_testSendmsgArray* sÿzSendmsgTests._testSendmsgArraycCs| |j ttƒ¡t¡dSr.rUrArrrÚtestSendmsgGather. szSendmsgTests.testSendmsgGathercCs.| | tdd…tdd…g¡ttƒ¡dS©NrrWrArrrÚ_testSendmsgGather2 szSendmsgTests._testSendmsgGathercCs| |j d¡d¡dS©NrŠódone©r¶rQrµrArrrÚ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 iterablerre)r*rŽr,rØr0Úobjectr·r-rArrrÚ_testSendmsgBadArgs9 s. ÿ ÿ ÿ ÿ ÿ  ÿ  ÿz SendmsgTests._testSendmsgBadArgscCs| |j d¡d¡dSrdrfrArrrÚtestSendmsgBadCmsgK szSendmsgTests.testSendmsgBadCmsgcCs¬| t|jtgtƒg¡| t|jtgtƒddfg¡| t|jtgdtƒdfg¡| t|jtgddtƒfg¡| t|jtgdg¡| t|jtgdg¡| d¡dS)Nródata)rr)rrrkr:re©r*rŽr0r·rhr-rArrrÚ_testSendmsgBadCmsgO s&  ÿ ÿ ÿ ÿ ÿ ÿz SendmsgTests._testSendmsgBadCmsgÚ CMSG_SPACEcCs| |j d¡d¡dSrdrfrArrrÚtestSendmsgBadMultiCmsg^ sz$SendmsgTests.testSendmsgBadMultiCmsgcCs@| t|jtggd¢¡| t|jtgdtƒg¡| d¡dS)N©rrrôrerlrArrrÚ_testSendmsgBadMultiCmsgd s  ÿ  ÿz%SendmsgTests._testSendmsgBadMultiCmsgcCs| |j d¡d¡dSrdrfrArrrÚtestSendmsgExcessCmsgRejectl sz(SendmsgTests.testSendmsgExcessCmsgRejectcCsbttdƒsT| t¡"}| tgddg¡Wdƒn1s<0Y| |jj¡|  d¡dS)Nrnrpre) r r r*rr0r·Ú assertIsNoner3rfr-©rBr4rrrÚ_testSendmsgExcessCmsgRejectq s   0z)SendmsgTests._testSendmsgExcessCmsgRejectcCsdSr.rrArrrÚtestSendmsgAfterClosey sz"SendmsgTests.testSendmsgAfterClosecCs |j ¡| t|jtg¡dSr.)r,rr*rr0r·rArrrÚ_testSendmsgAfterClose} s z#SendmsgTests._testSendmsgAfterCloseN)rGrHrIrVrXrYrZr[r\r]r`rarcrgrirjrmr r rorørqrrrurvrwrrrrrT s,  rTc@sReZdZdd„Zdd„Zdd„Zdd„Zeej d vd ƒd d „ƒZ e j d d„ƒZ dS)ÚSendmsgStreamTestscCs| |j ttƒ¡t¡dSr.rUrArrrÚtestSendmsgExplicitNoneAddr† sz.SendmsgStreamTests.testSendmsgExplicitNoneAddrcCs"| | tggdd¡ttƒ¡dSrŸrWrArrrÚ_testSendmsgExplicitNoneAddrŠ sz/SendmsgStreamTests._testSendmsgExplicitNoneAddrcCs.| |j d¡d¡| |jj|jd¡dS©Nr–óaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa©r7©r¶rQrµrr+rƒrErArrrÚ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¸ž?r|úsocket.timeout not raised) r,rÍr0r r7rrfÚENOMEMr&r+rpr‡rrrÚ_testSendmsgTimeout’ s   z&SendmsgStreamTests._testSendmsgTimeout>r“z.Tr) rÁrêr·rQrGr¶r7r¢rCr´rrrÚtestRecvmsgIntoGeneratorÈ s ÿ  z)RecvmsgIntoTests.testRecvmsgIntoGeneratorcCs| t¡dSr.r“rArrrÚ_testRecvmsgIntoGeneratorÓ sz*RecvmsgIntoTests._testRecvmsgIntoGeneratorcCsxt ddgttƒ¡}|j |g¡\}}}}| |ttƒ¡| | ¡t¡| ||j¡| |g¡|j |dddS)Nr^rTr) r_rêr·rQrGr¶Útobytesr7r¢rCr´rrrÚtestRecvmsgIntoArrayÖ s z%RecvmsgIntoTests.testRecvmsgIntoArraycCs| t¡dSr.r“rArrrÚ_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ÁrQrGÚ memoryviewr¶rêr7r¢rC)rBÚb1Úb2Zb3rµrÖrærÂrrrÚtestRecvmsgIntoScatterã sÿ  z'RecvmsgIntoTests.testRecvmsgIntoScattercCs| d¡dS)Nr¾)r-rArrrÚ_testRecvmsgIntoScatterò sz(RecvmsgIntoTests._testRecvmsgIntoScatterN) rGrHrIr¶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)Nrrrér:r¤rˆ)Úsocklen_t_limitr rÅÚlistr%rkr_Úitemsizer¶rIr*r‚ruÚmaxsize)rBÚtoobigrLÚnr/rrrÚ testCMSG_LEN s zCmsgMacroTests.testCMSG_LENrncCsä|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)NrrrÆrr:r¤rˆ)rÇr rnrÈr%rkr_rÉrHrÅrIr*r‚rurÊ)rBrËrLZlastrÌr/rrrÚtestCMSG_SPACE s   zCmsgMacroTests.testCMSG_SPACE) rGrHrIrŒr»rÇÚminrr r 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 |Sr.) r%rÓÚmkstemprWrÖrÛrÚwriter ÚencodeÚappend)rBrÌÚfdsr:rNrÝrrrÚnewFDs9 s   zSCMRightsTest.newFDscCsBt|ƒD]4\}}t |dtj¡| t |d¡t|ƒ ¡¡qdS)Nrr´)Ú enumeraterÖÚlseekÚSEEK_SETr¶r r rÓ)rBrÕrÌrNrrrÚcheckFDsE szSCMRightsTest.checkFDscCs| |j|¡dSr.)rWÚcloseRecvmsgFDsr4rrrr1L sz#SCMRightsTest.registerRecvmsgResultcCsn|dD]`\}}}|tjkr|tjkrt d¡}| |dt|ƒt|ƒ|j…¡|D]}t |¡qXqdS)Nrrr:) r r8Ú SCM_RIGHTSr_Ú frombytesrêrÉrÖr)rBZrecvmsg_resultÚ cmsg_levelÚ cmsg_typeÚ cmsg_datarÕrNrrrrÛO s ÿ ÿzSCMRightsTest.closeRecvmsgFDsc Cs8| | tgtjtjt d| |¡¡fg¡ttƒ¡dS)Nr:) r¶r0r·r r8rÜr_rÖrê)rBrÌrrrÚcreateAndSendFDs[ sþÿûzSCMRightsTest.createAndSendFDsrrrcCsä|\}}}}| |t¡| ||j¡|j|dtj|d| |t¡|  t |ƒ|¡t   d¡} |D]`} | | t ¡| \} } } | | tj ¡| | tj¡| | t¡| t | ƒtd¡|  | ¡qd| t | ƒ|¡| | ¡dS)NT©r?rArBr:r)r¶r·r7r¢rCr r8rrÈrIrêr_Útupler8rÜr¶Ú SIZEOF_INTrÝrÚ)rBZnumfdsr2ÚmaxcmsgsÚ ignoreflagsr¹rÖrærÂrÕÚitemrÞrßràrrrÚcheckRecvmsgFDse s&   ÿ      zSCMRightsTest.checkRecvmsgFDscCs | d| |jttƒd¡¡dS)Nrrrž©rèr3rQrêr·rArrrÚtestFDPassSimple€ sÿzSCMRightsTest.testFDPassSimplec Cs<| | tgtjtjt d| d¡¡ ¡fg¡t tƒ¡dS)Nr:rr) r¶r0r·r r8rÜr_rÖrºrêrArrrÚ_testFDPassSimple… sþþúzSCMRightsTest._testFDPassSimplecCs | d| |jttƒd¡¡dS)Nr1ržrérArrrÚtestMultipleFDPassŽ sÿz SCMRightsTest.testMultipleFDPasscCs| d¡dS©Nr1©rárArrrÚ_testMultipleFDPass“ sz!SCMRightsTest._testMultipleFDPassrnc Cs*| d| |jttƒt dt¡¡¡dSrí)rèr3rQrêr·r rnrärArrrÚtestFDPassCMSG_SPACE– s  ÿÿz"SCMRightsTest.testFDPassCMSG_SPACEcCs| d¡dSrírîrArrrÚ_testFDPassCMSG_SPACE sz#SCMRightsTest._testFDPassCMSG_SPACEc Cs0|jd| |jttƒt dt¡¡tjddS)Nrrr1©ræ) rèr3rQrêr·r rÅrär8rArrrÚtestFDPassCMSG_LEN¡ s  ÿúz SCMRightsTest.testFDPassCMSG_LENcCs| d¡dSrârîrArrrÚ_testFDPassCMSG_LEN« sz!SCMRightsTest._testFDPassCMSG_LENrBzskipping, see issue #12958zskipping, see issue #22397cCs$|jd| |jttƒd¡dddS)Nr¤rž)rårérArrrÚtestFDPassSeparate® sþz SCMRightsTest.testFDPassSeparatec CsX| d¡\}}| | tgtjtjt d|g¡ftjtjt d|g¡fg¡ttƒ¡dS©Nr¤r:© rÖr¶r0r·r r8rÜr_rê©rBZfd0Úfd1rrrÚ_testFDPassSeparate¸ s  þ þýùz!SCMRightsTest._testFDPassSeparatec Cs@d}|j|| |jttƒt t¡t t|¡¡dtj ddS)Nr¤)råræ) rèr3rQrêr·r rnrärÅr8)rBZnum_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|ƒ¡dSr.)r0rrrfrjr¶rê)rBr¹rÖrµrrrrÚsendAncillaryIfPossibleá s "z%SCMRightsTest.sendAncillaryIfPossiblezsee issue #24725cCs&|jd| |jttƒd¡tjddS)Nrržrò)rèr3rQrêr·r r8rArrrÚtestFDPassEmptyì s ÿþzSCMRightsTest.testFDPassEmptycCs| ttjtjdfg¡dS©Nrô)rýr·r r8rÜrArrrÚ_testFDPassEmptyô s þzSCMRightsTest._testFDPassEmptycCs˜| |jttƒd¡\}}}}| |t¡| ||j¡|j|dtj d|  t|ƒd¡|D]6\}}}| |tj ¡| |tj ¡|  t|ƒt¡q\dS)NržTr¦rr)r3rQrêr·r¶r7r¢rCr r8rIr8rÜÚ assertLessrä©rBr¹rÖrærÂrÞrßràrrrÚtestFDPassPartialIntù sÿ  z"SCMRightsTest.testFDPassPartialIntc Cs4| ttjtjt d|jg¡ ¡dd…fg¡dS)Nr:rˆ)rýr·r r8rÜr_ÚbadfdrºrArrrÚ_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¤r:)r3rQrêr·r¶r7r¢rCr r8rIr_r8rÜrÝrÉrÚ) rBr¹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¤r:rˆ) rÖrýr·r r8rÜr_rrºrørrrÚ_testFDPassPartialIntInMiddle sþ þýþz+SCMRightsTest._testFDPassPartialIntInMiddlecCsJ|\}}}}| |t¡| ||j¡| |g¡|j|dtj|ddS)NT©r?r@rB)r¶r·r7r¢rCr r8)rBr2rær¹rÖrærÂrrrÚcheckTruncatedHeader,s    ÿz"SCMRightsTest.checkTruncatedHeadercCs"|j| |jttƒ¡tjddS©Nrò©r r3rQrêr·r r8rArrrÚtestCmsgTruncNoBufSize6süz$SCMRightsTest.testCmsgTruncNoBufSizecCs| d¡dSrârîrArrrÚ_testCmsgTruncNoBufSize?sz%SCMRightsTest._testCmsgTruncNoBufSizecCs$|j| |jttƒd¡tjddS)Nrròr rArrrÚtestCmsgTrunc0BsÿzSCMRightsTest.testCmsgTrunc0cCs| d¡dSrârîrArrrÚ_testCmsgTrunc0GszSCMRightsTest._testCmsgTrunc0cCs| | |jttƒd¡¡dSrâ)r r3rQrêr·rArrrÚtestCmsgTrunc1MszSCMRightsTest.testCmsgTrunc1cCs| d¡dSrârîrArrrÚ_testCmsgTrunc1PszSCMRightsTest._testCmsgTrunc1cCs"| | |jttƒtd¡¡dSrñ)r r3rQrêr·rärArrrÚtestCmsgTrunc2IntSsÿzSCMRightsTest.testCmsgTrunc2IntcCs| d¡dSrârîrArrrÚ_testCmsgTrunc2IntZsz SCMRightsTest._testCmsgTrunc2Intc Cs(| | |jttƒt d¡d¡¡dSrý)r r3rQrêr·r rÅrArrrÚtestCmsgTruncLen0Minus1]s ÿz%SCMRightsTest.testCmsgTruncLen0Minus1cCs| d¡dSrârîrArrrÚ_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@rrrr:)r3rQrêr·r¶r7r¢rCr r8r8rÜrHrIr_rÝrÉrÚ) rBÚancbufÚmaxdataZmindatar¹rÖrærÂrÞrßràrÕrrrÚcheckTruncatedArraygs&ÿ   ÿz!SCMRightsTest.checkTruncatedArraycCs|jt d¡dddS)Nr©rr©rr rÅrArrrÚtestCmsgTruncLen0szSCMRightsTest.testCmsgTruncLen0cCs| d¡dSrârîrArrrÚ_testCmsgTruncLen0‚sz SCMRightsTest._testCmsgTruncLen0cCs|jt d¡ddddS)NrrrrrrArrrÚtestCmsgTruncLen0Plus1…sz$SCMRightsTest.testCmsgTruncLen0Plus1cCs| d¡dSrñrîrArrrÚ_testCmsgTruncLen0Plus1ˆsz%SCMRightsTest._testCmsgTruncLen0Plus1cCs|jt t¡tddS)Nr©rr rÅrärArrrÚtestCmsgTruncLen1‹s ÿzSCMRightsTest.testCmsgTruncLen1cCs| d¡dSrñrîrArrrÚ_testCmsgTruncLen1sz SCMRightsTest._testCmsgTruncLen1cCs(|jt dt¡ddtdddS)Nr¤rrrr rArrrÚtestCmsgTruncLen2Minus1’s ÿz%SCMRightsTest.testCmsgTruncLen2Minus1cCs| d¡dSrñrîrArrrÚ_testCmsgTruncLen2Minus1–sz&SCMRightsTest._testCmsgTruncLen2Minus1N)rrr)r)r)9rGrHrIrrÖrÚr1rÛrárèrêrërìrïr r rðrørñrórôr§rmrur˜rrõrúrûrürýrþrrrrrr r r rrrrrrrrrrrrrr!r"r#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|Sr.)r)rBrÖÚ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)NrrTrârr:)rQrÊr r=rEr+rpr3rêr·r¶r7r¢rCr8rrãrHr¶rär_rÝrHrI) rBÚ ancbufsizeÚmaxhoprær¹rÖrærÂrÞrßràr©rrrÚ checkHopLimitµs. ÿ ÿ   ÿ   z"RFC3542AncillaryTest.checkHopLimitrErHcCs|jdddS©Nrž©r()r*rArrrÚtestRecvHopLimitÑsz%RFC3542AncillaryTest.testRecvHopLimitcCs$| |jj|jd¡| t¡dSr¤©rr+rƒrEr-r·rArrrÚ_testRecvHopLimitÖsz&RFC3542AncillaryTest._testRecvHopLimitrncCs|jt t¡ddS)Nr,)r*r rnrärArrrÚtestRecvHopLimitCMSG_SPACEÞsz/RFC3542AncillaryTest.testRecvHopLimitCMSG_SPACEcCs$| |jj|jd¡| t¡dSr¤r.rArrrÚ_testRecvHopLimitCMSG_SPACEãsz0RFC3542AncillaryTest._testRecvHopLimitCMSG_SPACErØcCs|jd|jddS©Nrž)r(r))r*Ú hop_limitrArrrÚtestSetHopLimitísz$RFC3542AncillaryTest.testSetHopLimitc CsL| |jj|jd¡| | tgtjtj t   d|j g¡fg¡t tƒ¡dS©Nr}r:) rr+rƒrEr¶r0r·r r=rHr_r3rêrArrrÚ_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)NrrTrâr¤r:rr´)rQrÊr r=rErGr+rpr3rêr·r¶r7r¢rCr8r'rPrär_rÝrHrIrH) rBr(r)rær¹rÖrærÂZancmapZtcdatar©ZhldatarrrÚcheckTrafficClassAndHopLimitýs: ÿ ÿ ÿ   ÿ     z1RFC3542AncillaryTest.checkTrafficClassAndHopLimitrGrPcCs|jdddSr+)r7rArrrÚtestRecvTrafficClassAndHopLimit!sz4RFC3542AncillaryTest.testRecvTrafficClassAndHopLimitcCs$| |jj|jd¡| t¡dSr¤r.rArrrÚ _testRecvTrafficClassAndHopLimit'sz5RFC3542AncillaryTest._testRecvTrafficClassAndHopLimitcCs|jt t¡dddS©Nr¤r,)r7r rnrärArrrÚ)testRecvTrafficClassAndHopLimitCMSG_SPACE,s ÿz>RFC3542AncillaryTest.testRecvTrafficClassAndHopLimitCMSG_SPACEcCs$| |jj|jd¡| t¡dSr¤r.rArrrÚ*_testRecvTrafficClassAndHopLimitCMSG_SPACE4sz?RFC3542AncillaryTest._testRecvTrafficClassAndHopLimitCMSG_SPACEcCs|jd|jddSr2©r7r3rArrrÚtestSetTrafficClassAndHopLimit9sÿz3RFC3542AncillaryTest.testSetTrafficClassAndHopLimitc Csd| |jj|jd¡| | tgtjtj t   d|j g¡ftjtj t   d|j g¡fg¡ttƒ¡dSr5)rr+rƒrEr¶r0r·r r=rPr_Ú traffic_classrHr3rêrArrrÚ_testSetTrafficClassAndHopLimitBsÿÿþÿúz4RFC3542AncillaryTest._testSetTrafficClassAndHopLimitcCs|jd|jddSr2r=rArrrÚ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)Nr}r:r›)rr+rƒrEr0r·r r=rPr_r?rºrHr3rrrfrjr¶rê)rBrµrrrrÚ_testOddCmsgSizeWs2ÿÿþþÿÿþþz%RFC3542AncillaryTest._testOddCmsgSizecCs|j tjtjd¡|j ¡|dur*dn|f}|j|jtt ƒg|¢RŽ\}}}}|  |t ¡|  ||j ¡|  |g¡|j |dtj|ddS)NrrrTr)rQrÊr r=rEr+rpr3rêr·r¶r7r¢rCr8)rBr(rærSr¹rÖrærÂrrrÚcheckHopLimitTruncatedHeaderms  ÿ ÿÿ   ÿz1RFC3542AncillaryTest.checkHopLimitTruncatedHeadercCs|jdtjddS)N©r(ræ©rCr r8rArrrr sûz+RFC3542AncillaryTest.testCmsgTruncNoBufSizecCs$| |jj|jd¡| t¡dSr¤r.rArrrr Œsz,RFC3542AncillaryTest._testCmsgTruncNoBufSizecCs|jdtjddS)NrrDrErArrrÚtestSingleCmsgTrunc0‘sÿz)RFC3542AncillaryTest.testSingleCmsgTrunc0cCs$| |jj|jd¡| t¡dSr¤r.rArrrÚ_testSingleCmsgTrunc0˜sz*RFC3542AncillaryTest._testSingleCmsgTrunc0cCs|jdddS)Nrrr,)rCrArrrÚtestSingleCmsgTrunc1 sz)RFC3542AncillaryTest.testSingleCmsgTrunc1cCs$| |jj|jd¡| t¡dSr¤r.rArrrÚ_testSingleCmsgTrunc1¤sz*RFC3542AncillaryTest._testSingleCmsgTrunc1cCs|jdtddSr:)rCrärArrrÚtestSingleCmsgTrunc2Int©sz,RFC3542AncillaryTest.testSingleCmsgTrunc2IntcCs$| |jj|jd¡| t¡dSr¤r.rArrrÚ_testSingleCmsgTrunc2Int­sz-RFC3542AncillaryTest._testSingleCmsgTrunc2IntcCs|jt d¡dddS)Nrrrr,)rCr rÅrArrrÚtestSingleCmsgTruncLen0Minus1²sz2RFC3542AncillaryTest.testSingleCmsgTruncLen0Minus1cCs$| |jj|jd¡| t¡dSr¤r.rArrrÚ_testSingleCmsgTruncLen0Minus1¶sz3RFC3542AncillaryTest._testSingleCmsgTruncLen0Minus1cCsÂ|j tjtjd¡|j ¡| |jtt ƒt  t ¡d¡\}}}}|  |t ¡|  ||j¡|j|dtjd| t|ƒd¡|r¾|d\}}}|  |tj¡|  |tj¡| t|ƒt ¡dS)NrrTrr)rQrÊr r=rEr+rpr3rêr·rÅrär¶r7r¢rCr8rIrHrrrrrÚtestSingleCmsgTruncInData»s  ÿ ÿ  z.RFC3542AncillaryTest.testSingleCmsgTruncInDatacCs$| |jj|jd¡| t¡dSr¤r.rArrrÚ_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)NrrTrrr:r´)rQrÊr r=rErGr+rpr3rêr·r¶r7r¢rCr8rrPrHrär_rÝrHrI) rBr(rær¹rÖrærÂrÞrßràr©rrrÚcheckTruncatedSecondHeaderÖs0 ÿ ÿ ÿ   ÿ  z/RFC3542AncillaryTest.checkTruncatedSecondHeadercCs|jt t¡tjddSr )rPr rnrär8rArrrÚtestSecondCmsgTrunc0ös ÿz)RFC3542AncillaryTest.testSecondCmsgTrunc0cCs$| |jj|jd¡| t¡dSr¤r.rArrrÚ_testSecondCmsgTrunc0üsz*RFC3542AncillaryTest._testSecondCmsgTrunc0cCs| t t¡d¡dSrâ©rPr rnrärArrrÚtestSecondCmsgTrunc1sz)RFC3542AncillaryTest.testSecondCmsgTrunc1cCs$| |jj|jd¡| t¡dSr¤r.rArrrÚ_testSecondCmsgTrunc1sz*RFC3542AncillaryTest._testSecondCmsgTrunc1cCs| t t¡dt¡dSrñrSrArrrÚtestSecondCmsgTrunc2Int s ÿz,RFC3542AncillaryTest.testSecondCmsgTrunc2IntcCs$| |jj|jd¡| t¡dSr¤r.rArrrÚ_testSecondCmsgTrunc2Intsz-RFC3542AncillaryTest._testSecondCmsgTrunc2IntcCs"| t t¡t d¡d¡dSrý)rPr rnrärÅrArrrÚtestSecondCmsgTruncLen0Minus1s  ÿÿz2RFC3542AncillaryTest.testSecondCmsgTruncLen0Minus1cCs$| |jj|jd¡| t¡dSr¤r.rArrrÚ_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)NrrTrrr:r´)rQrÊr r=rErGr+rpr3rêr·rnrärÅr¶r7r¢rCr8rPrHÚpopÚremover_rÝrHrIr) rBr¹rÖrærÂZ cmsg_typesrÞrßràr©rrrÚtestSecomdCmsgTruncInData!s: ÿ ÿ  þ       z.RFC3542AncillaryTest.testSecomdCmsgTruncInDatacCs$| |jj|jd¡| t¡dSr¤r.rArrrÚ_testSecomdCmsgTruncInDataFsz/RFC3542AncillaryTest._testSecomdCmsgTruncInDataN)r´r)r´r)r)r)1rGrHrIr3r?r'r*r r r-rør/r0r1r4r6r7r8r9r;r<r>r@rArBrCr r rFrGrHrIrJrKrLrMrNrOrPrQrRrTrUrVrWrXrYr\r]rrrrr%šsÌ           ÿ $ÿ   ÿ    ÿ   ÿ                      ÿ   ÿ   ÿ   ÿ   ÿ #r%c@s eZdZdS)ÚSendrecvmsgUDPTestBaseN©rGrHrIrrrrr^Nsr^rØc@s eZdZdS)ÚSendmsgUDPTestNr_rrrrr`Ssr`rÕc@s eZdZdS)ÚRecvmsgUDPTestNr_rrrrraWsrarGc@s eZdZdS)ÚRecvmsgIntoUDPTestNr_rrrrrb[srbc@seZdZdd„ZdS)ÚSendrecvmsgUDP6TestBasecCs | |dd…|dd…¡dSr$r5r6rrrr7dsz+SendrecvmsgUDP6TestBase.checkRecvmsgAddressN©rGrHrIr7rrrrrc`srcr0rîr!c@s eZdZdS)ÚSendmsgUDP6TestNr_rrrrreisrec@s eZdZdS)ÚRecvmsgUDP6TestNr_rrrrrfosrfc@s eZdZdS)ÚRecvmsgIntoUDP6TestNr_rrrrrgusrgr=c@s eZdZdS)ÚRecvmsgRFC3542AncillaryUDP6TestNr_rrrrrh{srhc@s eZdZdS)Ú#RecvmsgIntoRFC3542AncillaryUDP6TestNr_rrrrriƒsric@s eZdZdS)ÚSendrecvmsgUDPLITETestBaseNr_rrrrrjsrjc@s eZdZdS)ÚSendmsgUDPLITETestNr_rrrrrk”srkc@s eZdZdS)ÚRecvmsgUDPLITETestNr_rrrrrlšsrlc@s eZdZdS)ÚRecvmsgIntoUDPLITETestNr_rrrrrm srmc@seZdZdd„ZdS)ÚSendrecvmsgUDPLITE6TestBasecCs | |dd…|dd…¡dSr$r5r6rrrr7­sz/SendrecvmsgUDPLITE6TestBase.checkRecvmsgAddressNrdrrrrrn§srnc@s eZdZdS)ÚSendmsgUDPLITE6TestNr_rrrrro²sroc@s eZdZdS)ÚRecvmsgUDPLITE6TestNr_rrrrrpºsrpc@s eZdZdS)ÚRecvmsgIntoUDPLITE6TestNr_rrrrrqÂsrqc@s eZdZdS)Ú#RecvmsgRFC3542AncillaryUDPLITE6TestNr_rrrrrrÊsrrc@s eZdZdS)Ú'RecvmsgIntoRFC3542AncillaryUDPLITE6TestNr_rrrrrsÔs rsc@s eZdZdS)ÚSendrecvmsgTCPTestBaseNr_rrrrrtàsrtc@s eZdZdS)ÚSendmsgTCPTestNr_rrrrruäsruc@s eZdZdS)ÚRecvmsgTCPTestNr_rrrrrvèsrvc@s eZdZdS)ÚRecvmsgIntoTCPTestNr_rrrrrwísrwc@s eZdZdS)ÚSendrecvmsgSCTPStreamTestBaseNr_rrrrrxósrxz6IPPROTO_SCTP: [Errno 62] Protocol not supported on AIXr<r2rêc@s eZdZdS)ÚSendmsgSCTPStreamTestNr_rrrrryøsrycseZdZ‡fdd„Z‡ZS)ÚRecvmsgSCTPStreamTestc sTztt|ƒ ¡Wn<tyN}z$|jtjkr0‚| d¡WYd}~n d}~00dS©Nz4sporadic ENOTCONN (kernel issue?) - see issue #13876)rMrzr¬rrfÚENOTCONNrc©rBrrUrrr¬s  z$RecvmsgSCTPStreamTest.testRecvmsgEOF©rGrHrIr¬rYrrrUrrzþsrzcseZdZ‡fdd„Z‡ZS)ÚRecvmsgIntoSCTPStreamTestc sTztt|ƒ ¡Wn<tyN}z$|jtjkr0‚| d¡WYd}~n d}~00dSr{)rMrr¬rrfr|rcr}rUrrr¬s  z(RecvmsgIntoSCTPStreamTest.testRecvmsgEOFr~rrrUrr src@s eZdZdS)ÚSendrecvmsgUnixStreamTestBaseNr_rrrrr€sr€rßc@s eZdZdS)ÚSendmsgUnixStreamTestNr_rrrrrsrc@s eZdZdS)ÚRecvmsgUnixStreamTestNr_rrrrr‚$sr‚c@s eZdZdS)ÚRecvmsgIntoUnixStreamTestNr_rrrrrƒ*srƒr8rÜc@s eZdZdS)ÚRecvmsgSCMRightsStreamTestNr_rrrrr„0sr„c@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..)rMrCrrrW)rBZorig_alrm_handlerrUrrrCFs  ÿzInterruptedTimeoutBase.setUpÚ setitimergš™™™™™©?cCst tj|¡dSr.)rrˆÚ ITIMER_REAL©rBZsecondsrrrÚsetAlarmUszInterruptedTimeoutBase.setAlarmr¤cCst |¡dSr.)rr÷rŠrrrr‹[s) rGrHrIrCrrDr7r rÚ alarm_timer‹rYrrrUrr†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¡dSr.)rMrCr=rÍr7rArUrrrChs z InterruptedRecvTimeoutTest.setUpc OsdzR| |j¡| t¡}||i|¤ŽWdƒn1s<0YW| d¡n | d¡0dSrŸ)r‹rŒr*r©rBrƒrSrTr4rrrÚcheckInterruptedRecvls   .z/InterruptedRecvTimeoutTest.checkInterruptedRecvcCs| |jjd¡dSr³)rr=rµrArrrÚtestInterruptedRecvTimeoutvsz5InterruptedRecvTimeoutTest.testInterruptedRecvTimeoutcCs| |jjtdƒ¡dSr³)rr=Ú recv_intorÁrArrrÚtestInterruptedRecvIntoTimeoutysz9InterruptedRecvTimeoutTest.testInterruptedRecvIntoTimeoutcCs| |jjd¡dSr³)rr=r£rArrrÚtestInterruptedRecvfromTimeout|sz9InterruptedRecvTimeoutTest.testInterruptedRecvfromTimeoutcCs| |jjtdƒ¡dSr³)rr=Ú recvfrom_intorÁrArrrÚ"testInterruptedRecvfromIntoTimeoutsz=InterruptedRecvTimeoutTest.testInterruptedRecvfromIntoTimeoutrÕcCs| |jjd¡dSr³)rr=rÕrArrrÚtestInterruptedRecvmsgTimeout‚sz8InterruptedRecvTimeoutTest.testInterruptedRecvmsgTimeoutrGcCs| |jjtdƒg¡dSr³)rr=rGrÁrArrrÚ!testInterruptedRecvmsgIntoTimeout†sz0YW| d¡n | d¡0dSrŸ)r*rr‹rŒrrrrÚcheckInterruptedSend§s   0z/InterruptedSendTimeoutTest.checkInterruptedSendržr®cCs| |jjd¡dSr…)ržrÃr¼rArrrÚtestInterruptedSendTimeout´sz5InterruptedSendTimeoutTest.testInterruptedSendTimeoutcCs| |jjd|j¡dSr…)ržrÃr2rËrArrrÚtestInterruptedSendtoTimeout¸s ÿz7InterruptedSendTimeoutTest.testInterruptedSendtoTimeoutrØcCs| |jjdg¡dSr…)ržrÃrØrArrrÚtestInterruptedSendmsgTimeoutÁsz8InterruptedSendTimeoutTest.testInterruptedSendmsgTimeout)rGrHrIrCrœržrZrequires_mac_verrŸr r r r¡rYrrrUrr™s       r™c@seZdZdd„Zdd„ZdS)Ú TCPCloserTestcCsh|j ¡\}}| ¡|j}t |gggd¡\}}}| ||g¡| | d¡d¡| ¡| ¡dS)Nçð?rrrô)r=r¬rr˜rÞr¶rµ)rBr­rÂÚsdr rÒrrrrÚ testCloseÉszTCPCloserTest.testClosecCs |j t|jf¡t d¡dS©Nr£)r˜r²r r?r°r±rArrrÚ _testCloseÖszTCPCloserTest._testCloseN)rGrHrIr¥r§rrrrr¢Çs r¢c@sNeZdZddd„Zdd„Zdd„Zdd „Zd d „Zd d „Zdd„Z dd„Z dS)ÚBasicSocketPairTestr“cCstj||ddSr”)rÅrNr—rrrrNÝszBasicSocketPairTest.__init__cCs\| |tj¡ttdƒr*| |jtj¡n| |jtj¡| |jtj¡| |j d¡dS)Nrßr) rr r r¶r!rßr<r÷r2r"rårrrÚ_check_defaultsàs  z#BasicSocketPairTest._check_defaultscCs| |j¡dSr.)r©r˜rArrrÚ _testDefaultsész!BasicSocketPairTest._testDefaultscCs| |j¡dSr.)r©r=rArrrÚ testDefaultsìsz BasicSocketPairTest.testDefaultscCs|j d¡}| |t¡dSr³)r=rµr¶r·r¸rrrrýïs zBasicSocketPairTest.testRecvcCs|j t¡dSr.)r˜r¼r·rArrrrÿószBasicSocketPairTest._testRecvcCs|j t¡dSr.)r=r¼r·rArrrÚtestSendöszBasicSocketPairTest.testSendcCs|j d¡}| |t¡dSr³)r˜rµr¶r·r¸rrrÚ _testSendùs zBasicSocketPairTest._testSendN)r“) rGrHrIrNr©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”)rOrwÚeventr’rNr—rrrrNs zNonBlockingTCPTests.__init__cCsh| |j ¡|¡|dk}| | ¡|¡tdurd|du}t |tjtj¡}| t|tj@ƒ |¡dS)Nç) r¶r=rŸÚ getblockingr ÚF_GETFLrÖÚ O_NONBLOCKÚbool)rBrÜr7Ú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=rEr·rÍrArrrÚtestSetBlockings      z#NonBlockingTCPTests.testSetBlockingcCsdSr.rrArrrÚ_testSetBlocking)sz$NonBlockingTCPTests._testSetBlockingcCsbddl}|j|jkr| d¡|j d¡| |j ¡d¡|j |jd¡| |j ¡¡dS)Nrzneeds UINT_MAX < ULONG_MAXFr°rr) rŒrZ ULONG_MAXrcr=rEr¶rŸrsrrrrÚtestSetBlocking_overflow,s   z,NonBlockingTCPTests.testSetBlocking_overflowrDztest needs socket.SOCK_NONBLOCKr¤éécCs4|j ¡t tjtjtjB¡|_| |jd¡dSrŸ)r=rr r<r2rDr·rArrrÚtestInitNonBlocking;s   ÿz'NonBlockingTCPTests.testInitNonBlockingcCsdSr.rrArrrÚ_testInitNonBlockingEsz(NonBlockingTCPTests._testInitNonBlockingcCs`tdƒD|j d¡|j ¡\}}| |j¡| | ¡¡Wdƒn1sR0YdS)Nrž)r8r=rÍr¬rWrrsrŸrÁrrrÚtestInheritFlagsBlockingHs    z,NonBlockingTCPTests.testInheritFlagsBlockingcCs|j t|jf¡dSr.©r˜r²r r?rArrrÚ_testInheritFlagsBlockingQsz-NonBlockingTCPTests._testInheritFlagsBlockingcCsfd}t|ƒF|j d¡|j ¡\}}| |j¡| | ¡|¡Wdƒn1sX0YdS)Ng4@rž)r8r=rÍr¬rWrr¶rŸ)rBZdefault_timeoutr­rÂrrrÚtestInheritFlagsTimeoutTs    z+NonBlockingTCPTests.testInheritFlagsTimeoutcCs|j t|jf¡dSr.rÀrArrrÚ_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=rEr°Ú monotonicr*ÚBlockingIOErrorr¬rr¯rprÞrÚ LONG_TIMEOUTr&rWrrsrŸ)rBZ start_timer­rÂZdtr rÒrrrrÚ testAcceptbs  ,      zNonBlockingTCPTests.testAcceptcCs |j ¡|j t|jf¡dSr.)r¯rƒr˜r²r r?rArrrÚ _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¬rWrrEr*rÅrµrêr·r¯rprÞrrÆr&r¶)rBr­rÂr¹r rÒrrrrrýs   ,  zNonBlockingTCPTests.testRecvcCs,|j t|jf¡|j ¡|j t¡dSr.)r˜r²r r?r¯rƒrr·rArrrrÿ“s zNonBlockingTCPTests._testRecvN)r“)rGrHrIrNr·r¸r¹rrlrºZ_testSetBlocking_overflowr§rkr r Úrequires_linux_versionr½r¾r¿rÁrÂrÃrÇrÈrýrÿrrrrr®þs*   ÿ    r®c@söeZdZdZdZdZdZdZeZ dZ eZ d:dd „Z d d „Z d 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.d/„Zd0d1„Z d2d3„Z!d4d5„Z"d6d7„Z#d8d9„Z$dS);ÚFileObjectClassTestCaserˆrÚstrictNr rr“cCstj||ddSr”rür—rrrrN´sz FileObjectClassTestCase.__init__cCsRdd„tdƒDƒ\|_|_|_|_t |¡|jj|j |j |j |j |j d|_dS)NcSsg|] }t ¡‘qSr)rOrw©rr:rrrr¸sz1FileObjectClassTestCase.setUp..r1©ÚencodingÚerrorsÚnewline)r%Úevt1Úevt2Ú serv_finishedÚ cli_finishedr¿rCrÀrÚ read_moderdrÎrÏrÐÚ read_filerArrrrC·sÿ üzFileObjectClassTestCase.setUpcCs6|j ¡|j ¡| |jj¡d|_t |¡dSr.)rÓrprÖrrÚclosedr¿rErArrrrEÁs   z FileObjectClassTestCase.tearDowncCs0t |¡|jj|j|j|j|j|jd|_ dS)NrÍ) r¿rŠrÃrÚ write_moderdrÎrÏrÐÚ write_filerArrrrŠÈs üz#FileObjectClassTestCase.clientSetUpcCs6|j ¡|j ¡| |jj¡d|_t |¡dSr.)rÔrprÙrrr×r¿rrArrrrÐs   z&FileObjectClassTestCase.clientTearDowncCsx|j d¡|j d¡| tj|jjd¡| t¡}|j d¡Wdƒn1sX0Y| dt |j ƒ¡dS)Nrrrz!cannot read from timed out object) rÀrÍrÖr r*r r7rrr r3)rBÚctxrrrÚtestReadAfterTimeout×s    *z,FileObjectClassTestCase.testReadAfterTimeoutcCs.|j |jdd…¡|j ¡|j ¡dS)Nrr)rÙrÒÚ write_msgÚflushrÓrƒrArrrÚ_testReadAfterTimeoutãs z-FileObjectClassTestCase._testReadAfterTimeoutcCs<|j t|jƒd¡}|j d¡}||}| ||j¡dSrb)rÖr rêÚread_msgr¶)rBÚ first_segZ second_segr¹rrrÚ testSmallReadès z%FileObjectClassTestCase.testSmallReadcCs|j |j¡|j ¡dSr.©rÙrÒrÜrÝrArrrÚ_testSmallReadïsz&FileObjectClassTestCase._testSmallReadcCs|j ¡}| ||j¡dSr.)rÖr r¶rßr¸rrrÚ testFullReadós z$FileObjectClassTestCase.testFullReadcCs|j |j¡|j ¡dSr.)rÙrÒrÜrrArrrÚ _testFullReadøsz%FileObjectClassTestCase._testFullReadcCs:t|jƒƒ}|j d¡}|sq(||7}q | ||j¡dSrâ)r÷rßrÖr r¶)rBrJÚcharrrrÚtestUnbufferedReadüs    z*FileObjectClassTestCase.testUnbufferedReadcCs|j |j¡|j ¡dSr.rârArrrÚ_testUnbufferedReadsz+FileObjectClassTestCase._testUnbufferedReadcCs|j ¡}| ||j¡dSr.)rÖÚreadliner¶rß©rBÚlinerrrÚ testReadline s z$FileObjectClassTestCase.testReadlinecCs|j |j¡|j ¡dSr.rârArrrÚ _testReadlinesz%FileObjectClassTestCase._testReadlinecCs&|j ¡|j ¡}| ||j¡dSr.)rÀrrÖr r¶rßr¸rrrÚtestCloseAfterMakefiles  z.FileObjectClassTestCase.testCloseAfterMakefilecCs|j |j¡|j ¡dSr.rârArrrÚ_testCloseAfterMakefilesz/FileObjectClassTestCase._testCloseAfterMakefilecCs@|j ¡|j ttƒ¡}t|jtƒr.|  ¡}|  ||j¡dSr.) rÖrrÀrµrêr·rörßr Údecoder¶r¸rrrÚtestMakefileAfterMakefileCloses   z6FileObjectClassTestCase.testMakefileAfterMakefileClosecCs|j |j¡|j ¡dSr.rârArrrÚ_testMakefileAfterMakefileClose%sz7FileObjectClassTestCase._testMakefileAfterMakefileClosecCs| |jj ¡dSr.)rrÖr×rArrrÚtestClosedAttr)sz&FileObjectClassTestCase.testClosedAttrcCs| |jj ¡dSr.)rrÙr×rArrrÚ_testClosedAttr,sz'FileObjectClassTestCase._testClosedAttrcCs,| |jj|j¡| |jj|j ¡¡dSr.)r¶rÖrrÕrrÀrrArrrÚtestAttributes/sz&FileObjectClassTestCase.testAttributescCs,| |jj|j¡| |jj|j ¡¡dSr.)r¶rÙrrØrrÃrrArrrÚ_testAttributes3sz'FileObjectClassTestCase._testAttributescCs8|j ¡| t|jj¡|j ¡| t|jj¡dSr.)rÖrr*r rrÀrr¡rArrrÚ testRealClose7s  z%FileObjectClassTestCase.testRealClosecCsdSr.rrArrrÚ_testRealClose=sz&FileObjectClassTestCase._testRealClose)r“)%rGrHrIrdrÎrÏrÐrÕr·rßrØrÜrNrCrErŠrrÛrÞrárãrärårçrèrìrírîrïrñròrórôrõrör÷rørrrrrÊžsB     rÊc@s`eZdZdZdd„Zdd„Zdd„Zdd „Zd d „Zd d „Z dd„Z dd„Z dd„Z dd„Z dS)Ú!UnbufferedFileObjectClassTestCasercCsL|j ¡}| |d|j¡|j dd¡|_|j ¡}| |d|j¡dS)NóA. r róB. )rÖrér¶rÜrÀrrêrrrÚtestUnbufferedReadlineMs   z8UnbufferedFileObjectClassTestCase.testUnbufferedReadlinecCs2|j d|j¡|j d|j¡|j ¡dS)NrúrûrârArrrÚ_testUnbufferedReadlineUsz9UnbufferedFileObjectClassTestCase._testUnbufferedReadlinecCsD|j ¡|j d¡}| ||j¡|j ¡| t|jjd¡dSr³)rÀrrµr¶rßrÖr*rr¸rrrÚtestMakefileCloseZs    z3UnbufferedFileObjectClassTestCase.testMakefileClosecCs|j |j¡|j ¡dSr.rârArrrÚ_testMakefileClosecsz4UnbufferedFileObjectClassTestCase._testMakefileClosecCs6t |j¡}|j ¡t |j¡}| |d|¡dSrâ)rurtrÀrÖrr¶)rBZrefcount_beforeZrefcount_afterrrrÚtestMakefileCloseSocketDestroygs   z@UnbufferedFileObjectClassTestCase.testMakefileCloseSocketDestroycCsdSr.rrArrrÚ_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žrr£gà?r{rr)rÀrEr¶rÖÚreadintorÁr rêrßrÑrprÒrƒr°r±)rBràrJrÌr¹rrrÚtestSmallReadNonBlockingts       z:UnbufferedFileObjectClassTestCase.testSmallReadNonBlockingcCs>|j d¡|j |j¡|j ¡|j ¡|j d¡dS)Nr£ç@) rÑrƒrÙrÒrÜrÝrÒrprÓrArrrÚ_testSmallReadNonBlocking‡s    z;UnbufferedFileObjectClassTestCase._testSmallReadNonBlockingcCs"|j d¡|jr| |j¡dS)Nr)rÔrƒÚ serv_skippedrcrArrrÚ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ÃrErrrÙrÒrkr%)rBZBIGZLIMITrÌr:rrrÚ_testWriteNonBlocking—s      z7UnbufferedFileObjectClassTestCase._testWriteNonBlockingN)rGrHrIrdrürýrþrÿrrrrrrrrrrrùAs   rùc@seZdZdZdS)Ú#LineBufferedFileObjectClassTestCaserrN©rGrHrIrdrrrrr ­sr c@seZdZdZdS)Ú$SmallBufferedFileObjectClassTestCaser¤Nr rrrrr ²sr c@s&eZdZdZe d¡ZdZeZdZ dS)Ú"UnicodeReadFileObjectClassTestCaserrrr.N© rGrHrIrÕr·rðrßrØrÜrÐrrrrr ·s  r c@s&eZdZdZeZdZe d¡ZdZ dS)Ú#UnicodeWriteFileObjectClassTestCaser rrr.N) rGrHrIrÕr·rßrØrðrÜrÐrrrrrÁs  rc@s,eZdZdZe d¡ZdZe d¡ZdZ dS)Ú'UnicodeReadWriteFileObjectClassTestCaserrrr.Nr rrrrrËs   rc@seZdZdd„ZdS)ÚNetworkConnectionTestcCst t|jf¡|_|j|_dSr.)r Úcreate_connectionr r?r˜rÃrArrrrŠØsz!NetworkConnectionTest.clientSetUpN)rGrHrIrŠrrrrrÕsrc@s eZdZdS)Ú BasicTCPTest2Nr_rrrrrÞsrc@sDeZdZGdd„dejƒZejdd„ƒZdd„Zdd„Z d d „Z d S) ÚNetworkConnectionNoServerc@seZdZdd„ZdS)z$NetworkConnectionNoServer.MockSocketcGst d¡‚dS)Nz timed out)r r7r/rrrr²åsz,NetworkConnectionNoServer.MockSocket.connectN)rGrHrIr²rrrrÚ MockSocketäsrccs,tj}|jt_zdVW|t_n|t_0dSr.)r r)rBZ old_socketrrrÚmocked_socket_moduleès z.NetworkConnectionNoServer.mocked_socket_modulecCsrt ¡}t tjtj¡}| |j¡| t¡}|  t |f¡Wdƒn1sR0Y|  |j j t j¡dSr.)rrÄr r<r2rWrr*rr²r r¶r3rfZ ECONNREFUSED)rBr?r˜r4rrrÚ test_connectòs   ,z&NetworkConnectionNoServer.test_connectcCs\t ¡}| t¡}t t|f¡Wdƒn1s60Yt ¡}| |j j |¡dSr.) rrÄr*rr rr Zget_socket_conn_refused_errsrr3rf)rBr?r4Zexpected_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 r7rrrërfZ EAFNOSUPPORTr&r‡rrrÚtest_create_connection_timeouts z8NetworkConnectionNoServer.test_create_connection_timeoutN) rGrHrIr 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—rrrrN#sz(NetworkConnectionAttributesTest.__init__cCst ¡|_dSr.)rrÄÚ source_portrArrrrŠ'sz+NetworkConnectionAttributesTest.clientSetUpcCs|j ¡d|_t |¡dSr.r™rArrrr*s z.NetworkConnectionAttributesTest.clientTearDowncCs|j ¡\}}| ¡dSr.)r=r¬rrÁrrrÚ _justAccept/sz+NetworkConnectionAttributesTest._justAcceptcCs:tjt|jftjd|_| |jj¡|  |jj d¡dS)Nr}r¤) r rr r?rrDr˜rWrr¶r!rArrrÚ _testFamily4s  ÿz+NetworkConnectionAttributesTest._testFamilycCsJtjt|jftjd|jfd|_| |jj ¡|  |j  ¡d|j¡dS)Nr.)r7Úsource_addressrr) r rr r?rrDrr˜rWrr¶r¡rArrrÚ_testSourceAddress;s  þz2NetworkConnectionAttributesTest._testSourceAddressc Csn| t ¡du¡t d¡z.t t|jf¡|_| |jj ¡Wt d¡n t d¡0|  |j  ¡d¡dS)Nr:© rr r5r6rr r?r˜rWrr¶rŸrArrrÚ_testTimeoutDefaultEs z3NetworkConnectionAttributesTest._testTimeoutDefaultc Csr| t ¡du¡t d¡z2tjt|jfdd|_| |jj ¡Wt d¡n t d¡0|  |j  ¡d¡dS©Nér}r!rArrrÚ_testTimeoutNoneQs z0NetworkConnectionAttributesTest._testTimeoutNonecCs,tjt|jfdd|_| |j ¡d¡dSr#)r rr r?r˜r¶rŸrArrrÚ_testTimeoutValueNamed]sz6NetworkConnectionAttributesTest._testTimeoutValueNamedcCs8t t|jfd¡|_| |jj¡| |j ¡d¡dS)Nr$) r rr r?r˜rWrr¶rŸrArrrÚ_testTimeoutValueNonamedbsz8NetworkConnectionAttributesTest._testTimeoutValueNonamedN)r“)rGrHrIrNrŠrrZ testFamilyrZtestSourceAddressr ZtestTimeoutDefaultr"ZtestTimeoutNoner%ZtestTimeoutValueNamedr&ZtestTimeoutValueNonamedr'rrrrr!s     rc@sBeZdZddd„Zdd„Zdd„Zdd „ZeZd d „Zd d „Z dS)ÚNetworkConnectionBehaviourTestr“cCstj||dt |¡dSr”r–r—rrrrNjsz'NetworkConnectionBehaviourTest.__init__cCsdSr.rrArrrrŠnsz*NetworkConnectionBehaviourTest.clientSetUpcCs|j ¡d|_t |¡dSr.r™rArrrrqs z-NetworkConnectionBehaviourTest.clientTearDowncCs2|j ¡\}}| |j¡t d¡| d¡dS)Nródone!)r=r¬rWrr°r±r¼rÁrrrÚtestInsideTimeoutvs  z0NetworkConnectionBehaviourTest.testInsideTimeoutcCs0t t|jf¡|_}| d¡}| |d¡dS)NrÖr))r rr r?r˜rµr¶)rBrÜržrrrÚ_testInsideTimeout}s z1NetworkConnectionBehaviourTest._testInsideTimeoutcs4tjt|jfdd|_‰| tj‡fdd„¡dS)Nrrr}cs ˆ d¡S)NrÖ)rµr©rÜrrró„rôzDNetworkConnectionBehaviourTest._testOutsideTimeout..)r rr r?r˜r*r7rArr,rÚ_testOutsideTimeout‚sz2NetworkConnectionBehaviourTest._testOutsideTimeoutN)r“) rGrHrIrNrŠrr*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ðrArrÚ raise_timeoutŠs z4TCPTimeoutTest.testTCPTimeout..raise_timeoutz*Error generating a timeout exception (TCP)©r*r r7©rBr/rrArÚ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 r7r&r©rBÚokrbrrrÚ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¥sr6csˆ‚dSr.r)rr¡©r6rrÚ 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>rrr÷r¬r r7r&ruÚexc_infoÚ tracebackÚ format_exc)rBr8rrbrr7rÚtestInterruptedTimeoutžs*    þ   z%TCPTimeoutTest.testInterruptedTimeoutN) rGrHrIr2r5r§rkr rr<rrrrr.‡s  ÿr.c@seZdZdd„Zdd„ZdS)ÚUDPTimeoutTestcs ‡fdd„}ˆ tj|d¡dS)Ncsˆj d¡ˆj d¡dS©Nr£r´©r=rÍrµrðrArrr/Ãs z4UDPTimeoutTest.testUDPTimeout..raise_timeoutz*Error generating a timeout exception (UDP)r0r1rrArÚ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 r7r&rr3rrrr5És  zUDPTimeoutTest.testTimeoutZeroN)rGrHrIr@r5rrrrr=Àsr=c@seZdZdd„Zdd„ZdS)ÚUDPLITETimeoutTestcs ‡fdd„}ˆ tj|d¡dS)Ncsˆj d¡ˆj d¡dSr>r?rðrArrr/Üs z.raise_timeoutz.Error generating a timeout exception (UDPLITE)r0r1rrArÚ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)rArBr3rrrr5âs  z"UDPLITETimeoutTest.testTimeoutZeroN)rGrHrIrDr5rrrrrC×srCc@seZdZdd„Zdd„ZdS)ÚTestExceptionscCsJ| tttƒ¡| ttjtƒ¡| ttjtƒ¡| ttjtƒ¡dSr.)rÚ issubclassrr>r r+r,r7rArrrÚtestExceptionTreeòsz TestExceptions.testExceptionTreecCsvt tjtjd¡}t tjtjd| ¡¡}| ¡| |j¡| t¡|  d¡Wdƒn1sh0YdS)NrF) r r<r2rrrWrHr*rrE)rBZsock0rÜrrrÚtest_setblocking_invalidfdøsÿ  z)TestExceptions.test_setblocking_invalidfdN)rGrHrIrGrHrrrrrEðsrEr“zLinux 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ßr2rar@r²r¡r¬r¶Ú getpeername)rBrÚs1rZZs3rrrÚtestLinuxAbstractNamespace s z5TestLinuxAbstractNamespace.testLinuxAbstractNamespacecCs`dd|jd}t tjtj¡*}| |¡| | ¡|¡Wdƒn1sR0YdS)Nr›óhrr)Ú UNIX_PATH_MAXr rßr2rar¶r¡©rBrrrrrÚ testMaxNames z&TestLinuxAbstractNamespace.testMaxNamecCsRdd|j}t tjtj¡ }| t|j|¡Wdƒn1sD0YdS)NúÚh)rOr rßr2r*rrarPrrrÚtestNameOverflowsz+TestLinuxAbstractNamespace.testNameOverflowcCsFt tjtj¡}z&| d¡| | ¡d¡W| ¡n | ¡0dS)Nz pythontestó pythontest)r rßr2rar¶r¡rrrrrÚ testStrName s  z&TestLinuxAbstractNamespace.testStrNamecCsRt tjtj¡.}| tdƒ¡| | ¡d¡Wdƒn1sD0YdS)NrU)r rßr2rarÁr¶r¡rrrrÚtestBytearrayName)sz,TestLinuxAbstractNamespace.testBytearrayNameN) rGrHrIrOrMrQrTrVrWrrrrrIs   rIztest needs socket.AF_UNIXc@sTeZdZdd„Zdd„Zdd„Zdd„Zd d „Zd d „Zd d„Z dd„Z dd„Z dS)ÚTestUnixDomaincCst tjtj¡|_dSr.)r rßr2rÜrArrrrC2szTestUnixDomain.setUpcCs|j ¡dSr.)rÜrrArrrrE5szTestUnixDomain.tearDownc Cs:z t |¡WSty4| d |t ¡¡¡Yn0dS)NzBPathname {0!a} cannot be represented in file system encoding {1!r})rÖÚfsencoderïrcrruÚgetfilesystemencoding©rBrÝ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Úrr rcr)rBrÜrÝrrrrraCs ÿÿzTestUnixDomain.bindcCs| |j ¡d¡dS)N)r.N)rrÜr¡rArrrrãOszTestUnixDomain.testUnboundcCs@tj tj¡}| |j|¡| tj|¡|  |j  ¡|¡dSr.) rÖrÝÚabspathrÚTESTFNrarÜrWrÛr¶r¡r[rrrÚ testStrAddrSszTestUnixDomain.testStrAddrcCsFtj tj¡}| |j| |¡¡| tj |¡|  |j  ¡|¡dSr.) rÖrÝr]rr^rarÜr\rWrÛr¶r¡r[rrrÚ testBytesAddrZszTestUnixDomain.testBytesAddrcCsRtj tj¡}| |¡}| |j| dd¡¡|  tj |¡|  |j  ¡|¡dS)NÚasciiÚsurrogateescape) rÖrÝr]rZTESTFN_UNICODEr\rarÜrðrWrÛr¶r¡)rBrÝròrrrÚtestSurrogateescapeBindas  z&TestUnixDomain.testSurrogateescapeBindcCsTtjdur| d¡tj tj¡}| |j|¡| tj |¡|  |j  ¡|¡dS)Nz!No unencodable filename available) rZTESTFN_UNENCODABLErcrÖrÝr]rarÜrWrÛr¶r¡r[rrrÚtestUnencodableAddrjs   z"TestUnixDomain.testUnencodableAddrN) rGrHrIrCrEr\rarãr_r`rcrdrrrrrX/s   rXc@s‚eZdZddd„Zdd„Zdd„Zdd „ZeZd d „ZeZ d d „Z dd„Z dd„Z e Z dd„Ze Zdd„Zdd„Zdd„Ze ZdS)Ú BufferIOTestr“cCstj||ddSr”rür—rrrrNyszBufferIOTest.__init__cCsZt ddgttƒ¡}|j |¡}| |ttƒ¡| ¡}|dttƒ…}| |t¡dS©Nr^r)r_rêr·rÀr’r¶rº©rBrJrµr¹rrrÚtestRecvIntoArray|s  zBufferIOTest.testRecvIntoArraycCsttƒ}|j |¡dSr.©r¶r·rÃr¼©rBrJrrrÚ_testRecvIntoArray„szBufferIOTest._testRecvIntoArraycCsDtdƒ}|j |¡}| |ttƒ¡|dttƒ…}| |t¡dSr³)rÁrÀr’r¶rêr·rgrrrÚtestRecvIntoBytearrayˆs  z"BufferIOTest.testRecvIntoBytearraycCsHtdƒ}|j t|ƒ¡}| |ttƒ¡|dttƒ…}| |t¡dSr³)rÁrÀr’r¿r¶rêr·rgrrrÚtestRecvIntoMemoryview‘s z#BufferIOTest.testRecvIntoMemoryviewcCs^t ddgttƒ¡}|j |¡\}}| |ttƒ¡| ¡}|dttƒ…}| |t¡dSrf)r_rêr·rÀr•r¶rº©rBrJrµrÂr¹rrrÚtestRecvFromIntoArrayšs z"BufferIOTest.testRecvFromIntoArraycCsttƒ}|j |¡dSr.rirjrrrÚ_testRecvFromIntoArray¢sz#BufferIOTest._testRecvFromIntoArraycCsHtdƒ}|j |¡\}}| |ttƒ¡|dttƒ…}| |t¡dSr³)rÁrÀr•r¶rêr·rnrrrÚtestRecvFromIntoBytearray¦s z&BufferIOTest.testRecvFromIntoBytearraycCsLtdƒ}|j t|ƒ¡\}}| |ttƒ¡|dttƒ…}| |t¡dSr³)rÁrÀr•r¿r¶rêr·rnrrrÚtestRecvFromIntoMemoryview¯s z'BufferIOTest.testRecvFromIntoMemoryviewcCs tdƒ}| t|jj|d¡dS)Nr^r´)rÁr*r rÀr•rjrrrÚtestRecvFromIntoSmallBuffer¸sz(BufferIOTest.testRecvFromIntoSmallBuffercCs|j t¡dSr.rþrArrrÚ_testRecvFromIntoSmallBuffer½sz)BufferIOTest._testRecvFromIntoSmallBuffercCs$tƒ}|j |¡|j |d¡dSrŸ)rÁrÀr•rjrrrÚtestRecvFromIntoEmptyBufferÀs z(BufferIOTest.testRecvFromIntoEmptyBufferN)r“)rGrHrIrNrhrkrlZ_testRecvIntoBytearrayrmZ_testRecvIntoMemoryviewrorprqZ_testRecvFromIntoBytearrayrrZ_testRecvFromIntoMemoryviewrsrtruZ_testRecvFromIntoEmptyBufferrrrrreus" reiÐéÈéÒc Cs„ttdƒsdSz tdƒ}Wntttfy4YdS0|6|D] }| d¡r@WdƒdSq@Wdƒn1sv0YdS)NÚAF_TIPCFz /proc/modulesztipc T)r r rÚFileNotFoundErrorÚIsADirectoryErrorr^r™)rrërrrÚisTipcAvailableÌs   2r{z6TIPC 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)Nrrr¤rr´)r rxr7rWrrÊr8r9ÚTIPC_ADDR_NAMESEQÚ TIPC_STYPEÚ TIPC_LOWERÚ TIPC_UPPERraÚTIPC_ADDR_NAMErjr2r·r£r¶r¡)rBr-r˜ÚsrvaddrZsendaddrr¹ZrecvaddrrrrÚtestRDMãs   ÿ ÿ zTIPCTest.testRDMN)rGrHrIrƒrrrrr|àsr|c@s6eZdZd dd„Zdd„Zdd„Zdd „Zd d „Zd S)ÚTIPCThreadableTestr“cCstjj||dt |¡dSr”r¦r—rrrrNûszTIPCThreadableTest.__init__cCs„t tjtj¡|_| |jj¡|j tjtjd¡tj t t t f}|j  |¡|j ¡| ¡|j ¡\|_|_| |jj¡dSrâ)r rxr2r-rWrrÊr8r9r}r~rr€rar@rqr¬r­r®)rBr‚rrrrCÿsÿ  zTIPCThreadableTest.setUpcCsdt d¡t tjtj¡|_| |jj¡tjt t t t t dƒdf}|j  |¡|j ¡|_dS)Nr¯r¤r)r°r±r rxr2r˜rWrrr~rrjr€r²r¡Úcliaddr)rBrÂrrrrŠ s ÿ zTIPCThreadableTest.clientSetUpcCs,|j d¡}| |t¡| |j|j¡dSr³)r­rµr¶r·r…r®r¸rrrrºs  zTIPCThreadableTest.testStreamcCs|j t¡|j ¡dSr.r»rArrrr½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¬rWrrµr©rBr­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©rBrrÜ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)rGrHrIrˆr‹rrŽ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ƒn1sJ0YdSr.)r r<r2rÔr¶r÷rÇÚget_inheritablerrrrÚtest_SOCK_CLOEXECNs  ÿz!InheritanceTest.test_SOCK_CLOEXECcCs@t ¡}| | | ¡d¡Wdƒn1s20YdSr)r r¶r‘rårrrÚtest_default_inheritableWsz(InheritanceTest.test_default_inheritablec Cstt ¡}|T| ¡}| ¡| | | ¡d¡Wdƒn1sH0YWdƒn1sf0YdSr)r rrr¶r‘)rBrÜZnewsockrrrÚtest_dup\s zInheritanceTest.test_dupcCsdt ¡}|D| d¡| | ¡d¡| d¡| | ¡d¡Wdƒn1sV0YdS)NTF)r Úset_inheritabler¶r‘rårrrÚtest_set_inheritableds   z$InheritanceTest.test_set_inheritableNr£cCs‚t ¡}|b| ¡}| | ¡d¡t |tj¡}|tjM}t |tj|¡| | ¡d¡Wdƒn1st0YdSr)r rr¶r‘r ÚF_GETFDÚ FD_CLOEXECZF_SETFD)rBrÜrNræ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•)rBrÜrNrrrÚtest_set_inheritable_cloexec{sÿ ÿz,InheritanceTest.test_set_inheritable_cloexeccCsHt ¡\}}| |j¡| |j¡| | ¡d¡| | ¡d¡dSr)r rÆrWrr¶r‘)rBrLrZrrrÚtest_socketpairˆs    zInheritanceTest.test_socketpair)rGrHrIr§rkr r rrÉr’r“r”r–rmr r™ršr›rrrrrMs ÿ     rrDzSOCK_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 r2rŸrr r²rÖr³rÇr±)rBrÚnonblockr7rrrÚ 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)rg@r}r°) r r<r2rDržrErÍr5r6)rBrÚtrrrÚtest_SOCK_NONBLOCK¬s: ÿ       ,  (  ,  .  ,z'NonblockConstantTest.test_SOCK_NONBLOCKN)Tr°)rGrHrIržrrÉr rrrrrœs  rœr?r@zneed multiprocessingc@s@eZdZedd„ƒZdd„Zdd„Zdd„Zd d „Zd d „Z d S)ÚTestSocketSharingcCsD| ¡}| ¡}t |¡}| ¡\}}| |¡| ¡| ¡dSr.)r†r Ú fromsharer¬rr)rÚqZsdataÚmessagerrZrrrrÚremoteProcessServerÓs   z%TestSocketSharing.remoteProcessServerc Cs°t ¡}tj|j|fd}| ¡|j |j¡}|j ¡}|j  ¡|  |¡d}|  |¡t   |¡}g}|  d¡}|szq†| |¡qj|  ¡d |¡}| ||¡| ¡dS)N©ršrSs slapmahfrorÛrô)Úmultiprocessingr{ÚProcessr¥rr=ÚshareÚpidr¡rrŒr rrµrÔrr¶) rBr£r'ržrÂr¤rÚmÚreceivedrrrÚ testShareás&         zTestSocketSharing.testSharecCs@|j t ¡¡}| ttj|dd…¡| ttj|d¡dS)Nrˆr/)r=r©rÖÚgetpidr*r r r¢)rBržrrrÚtestShareLengthsz!TestSocketSharing.testShareLengthcCsb| | ¡d¡| | ¡| ¡¡| |j|j¡| |j|j¡|jdkr^| |j|j¡dSrŸ)r¶rŸr!r÷r")rBZorgÚotherrrrÚcompareSockets s  z TestSocketSharing.compareSocketscCsD|j t ¡¡}t |¡}z| |j|¡W| ¡n | ¡0dSr.)r=r©rÖr®r r¢r±r)rBržrrrrÚtestShareLocals  z TestSocketSharing.testShareLocalc Cs¬tjtjg}tjtjg}|D]Š}|D]€}zt ||¡}WntyNYq$Yn0zH| t ¡¡}t  |¡}z|  ||¡W|  ¡n |  ¡0W|  ¡q$|  ¡0q$qdSr.) r r<rîr2r!rr©rÖr®r¢r±r)rBÚfamiliesÚtypesrrŸÚsourceržZsharedrrrÚ testTypes!s     zTestSocketSharing.testTypesN) rGrHrIr¹r¥r­r¯r±r²r¶rrrrr¡Îs #r¡c@sþeZdZdZdZdZejZe dd„ƒZ e dd„ƒZ dd „Z d d „Z d 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.d/„Zd0d1„Z d2d3„Z!d4d5„Z"d6d7„Z#d8d9„Z$d:S);ÚSendfileUsingSendTesti rirôcCs¦dd„}d dd„t|jƒDƒ¡}ttjdƒ.}||j|jƒD]}| |¡q>Wdƒn1sb0Yttjdƒ}| ¡|_ Wdƒn1s˜0YdS)Ncss&||kr|V||8}q|r"|VdSr.r)ÚtotalÚsteprrrÚchunksAs  z0SendfileUsingSendTest.setUpClass..chunksrôcSsg|]}t tj¡ ¡‘qSr)ÚrandomÚchoiceÚstringÚ ascii_lettersrÓrÌrrrrIsÿz4SendfileUsingSendTest.setUpClass..rr ) rr%ÚBUFSIZErrr^ÚFILESIZErÒr ÚFILEDATA)rrºÚchunkrZcsizerrrÚ setUpClass?s ÿ* z SendfileUsingSendTest.setUpClasscCst tj¡dSr.)rrÛr^)rrrrÚ tearDownClassRsz#SendfileUsingSendTest.tearDownClasscCs8|j tj¡|j ¡\}}| |j¡| |j¡|Sr.)r=rÍrrÆr¬ÚTIMEOUTrWrrÁrrrÚ accept_connVs   z!SendfileUsingSendTest.accept_conncCs,g}| |j¡}|sq"| |¡qd |¡Srÿ)rµr¿rÔr)rBr­r¬rÂrrrÚ recv_data]s   zSendfileUsingSendTest.recv_datacCs t|dƒS)NÚ_sendfile_use_send©rrå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©rBrÚfilerÜÚmethÚsentrrrÚ_testRegularFilems   z&SendfileUsingSendTest._testRegularFilecCs6| ¡}| |¡}| t|ƒ|j¡| ||j¡dSr.©rÆrÇr¶rêrÀrÁ©rBr­ržrrrÚtestRegularFilevs z%SendfileUsingSendTest.testRegularFilec Cs¤|j ¡}t |j¡}t |¡p}|L}| |¡}| ||j ¡| |  ¡|j ¡|  tj |j |¡Wdƒn1sx0YWdƒn1s–0YdSr.)r=r¡ÚioÚBytesIOrÁr rrPr¶rÀrÌr*rUrV)rBrrÎrÜrÐrrrÚ_testNonRegularFile~s   ÿz)SendfileUsingSendTest._testNonRegularFilecCs6| ¡}| |¡}| t|ƒ|j¡| ||j¡dSr.rÒ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^rrWrÛr rrÊr¶rÌ)rBrÚ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 r}éGKL©rØ© r=r¡rrr^r rrDrÊr¶rÌ©rBrrÎrÜrØrÏrÐrrrÚ _testCount´s  ÿ    z SendfileUsingSendTest._testCountcCs@d}| ¡}| |¡}| t|ƒ|¡| ||jd|…¡dS)Nrá©rÆrÇr¶rêrÁ©rBrØr­ržrrrÚ testCountÀs  zSendfileUsingSendTest.testCountc Cs¨|j ¡}ttjdƒ}tj|tjd}|j|Fd}| |¡}|||d}|  ||¡|  |  ¡|¡Wdƒn1s|0YWdƒn1sš0YdS)Nr r}rrrâ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¤r}駆é×)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 rrErÊr*r rP©rBrrÎrÜrÏrrrÚ_testNonBlockingñs    z&SendfileUsingSendTest._testNonBlockingcCs | ¡}| d¡r| d¡dS)Nriz$was not supposed to receive any data)rÆrµr&©rBr­rrrÚtestNonBlockingús z%SendfileUsingSendTest.testNonBlockingc Cs’|j ¡}ttjdƒ}tj|tjd}|T|0| |¡}||ƒ}|  ||j ¡Wdƒn1sf0YWdƒn1s„0YdS)Nr r}) r=r¡rrr^r rrDrÊr¶rÀrÍrrrÚ_testWithTimeouts  ÿ  z&SendfileUsingSendTest._testWithTimeoutcCs6| ¡}| |¡}| t|ƒ|j¡| ||j¡dSr.rÒ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*r7rïrrrÚ_testWithTimeoutTriggeredSends     z3SendfileUsingSendTest._testWithTimeoutTriggeredSendcCs| ¡}| d¡dS)Ni€X)rÆrµrñrrrÚtestWithTimeoutTriggeredSendsz2SendfileUsingSendTest.testWithTimeoutTriggeredSendcCsdSr.rrArrrÚ _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år2r!z binary modezpositive integerrÙrâr¯rrˆ) rrr^r r!rÊr#r rŽ)rBrÎrrÏrrrÚ test_errors$s6 ÿ@  ÿ@  ÿÿÿÿz!SendfileUsingSendTest.test_errorsN)%rGrHrIrÀr¿rÁrrDrÅ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·5sB               r·rPz%os.sendfile() required for this test.c@seZdZdd„ZdS)ÚSendfileUsingSendfileTestcCs t|dƒS)NrVrÉrårrrrÊBsz(SendfileUsingSendfileTest.meth_from_sockN)rGrHrIrÊ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(raryrr§ZSkipTestr )rBÚtyprrÜrrrrÚ create_algIs(zLinuxKernelCryptoAPI.create_algr1rÖ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©rBr#ÚalgoÚoprtrrrÚ 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¶rrürÊr ÚSOL_ALGÚ ALG_SET_KEYr¬rr¶rµrrrrÚtest_hmac_sha1hs   z#LinuxKernelCryptoAPI.test_hmac_sha1rc 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æ)rr r´)r¶rrêrürÊr rrr¬Ú sendmsg_afalgÚALG_OP_ENCRYPTrrr¶rµÚALG_OP_DECRYPT) rBÚkeyr r¹Z ciphertextZmsglenrrrtZ 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æ)rr rr )r¶rrê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 )rBrr ZplainZassocZ expected_ctZ expected_tagZtaglenrrrrtÚ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_sha256rz) rürÖÚurandomrÊr rrr¬rµr¶rê)rBrZ extra_seedrrtZrnrrrÚ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)rrr)rrrˆ)r r*r(r*rŽr 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 tttttttttttttrz type too long)Zttttttttttttttr)r÷Z?nnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnz name too long)r÷Z@nnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnn) r r*r(rWrr*ryrar#r rårrrÚtest_length_restrictionøs  (( (z,LinuxKernelCryptoAPI.test_length_restrictionN) rGrHrIrürrÉrr rrrrrrrrrrúFs    (  >  rúÚwinzrequires Windowsc@seZdZhd£Zdd„ZdS)ÚTestMSWindowsTCPFlags>Ú TCP_KEEPINTVLÚ TCP_FASTOPENÚ TCP_MAXSEGÚ TCP_KEEPCNTÚ TCP_KEEPIDLEÚ TCP_NODELAYcs6dd„ttƒDƒ}‡fdd„|Dƒ}ˆ g|d¡dS)NcSsg|]}| d¡r|‘qS)ZTCP)r™©rrrrrrrôz.csg|]}|ˆjvr|‘qSr)Ú knownTCPFlagsr&rArrrrôzANew TCP flags were discovered. See bpo-32394 for more information)rØr r¶)rBZprovidedÚunknownrrArÚtest_new_tcp_flagss ÿz(TestMSWindowsTCPFlags.test_new_tcp_flagsN)rGrHrIr'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)Nrrrrr®rä)rrÄr Ú create_serverr¶r¡rërî©rBr?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¶r!r<r÷r2rrërî)rBrÜ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*r r+rÆr8r0r¶rä)rBrÜrUrrrÚtest_reuse_port7s  . *z CreateServerTest.test_reuse_portr=Ú IPV6_V6ONLYz IPV6_V6ONLY option not supportedrCcCs4tjdtjd}Wdƒn1s&0YdS)Nr.rä)r r+rîrå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¶r!rårrrÚtest_dualstack_ipv6_familyKs  ÿz+CreateServerTest.test_dualstack_ipv6_familyN)rGrHrIr-r/r2r§rmr rrkrrër4r Úhas_dualstack_ipv6r8rrrrr*!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|_dSr.)r€rArrrrCWsz CreateServerFunctionalTest.setUpcCs|jdur|j |j¡dSr.)r€rr7rArrrrEZs z#CreateServerFunctionalTest.tearDowncsJ‡‡fdd„}t ¡‰| ˆj¡tj||fdˆ_ˆj ¡ˆ ¡dS)Nc s˜|€| ¡\}}|Pˆ ˆj¡| d¡}|sNWdƒWdƒdS| |¡Wdƒn1sl0YWdƒn1sŠ0YdSr³)r¬rƒr7rµr)rÜr­rtr¹©r¯rBrrÚrun_s   z3CreateServerFunctionalTest.echo_server..runr¦)rOrwrÍr7r›r€rrp)rBrÜr<rr;rÚ echo_server^s    z&CreateServerFunctionalTest.echo_servercCsbtj|dB}| |j¡| |¡| d¡| | d¡d¡Wdƒn1sT0YdS)Nrär/r´)r rÍr7r²rr¶rµ)rBrÂr!rÜ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_tcp4rCcCs\t ¡}tjd|ftjd,}| |¡| d|ftj¡Wdƒn1sN0YdS)Nr.rär®©rrÄr r+rîr=r>r,rrrÚ test_tcp6|s ÿ z$CreateServerFunctionalTest.test_tcp6r5cCs^t ¡}tjd|ftjdd,}| |¡| d|ftj¡Wdƒn1sP0YdS)Nr.Tr6r)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.Tr6r®r@r,rrrÚtest_dual_stack_client_v6sÿ z4CreateServerFunctionalTest.test_dual_stack_client_v6N)rGrHrIrrDr7rCrEr=r>r?r§rkrrërArmr r9rBrCrrrrr:Ts$  ÿ   ÿ r:Ú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 |¡qdSr.©rÖr)ÚpipesrùÚfd2rrrÚ close_pipesŸs  z8SendRecvFdsTests.testSendAndRecvFds..close_pipescSs|D]}t |¡qdSr.rG)rÕrNrrrÚ close_fds¤sz6SendRecvFdsTests.testSendAndRecvFds..close_fdscSsg|] }t ¡‘qSr)rÖÚpipe)rrtrrrr©rôz7SendRecvFdsTests.testSendAndRecvFds..ržcSsg|] \}}|‘qSrr)rÚrfdÚwfdrrrr«rôr¤rrÛ)r%rWr rÆrßr2rDr·rErêr¶r×rÖrÒr rÓr )rBrJrKrHrÕZsock1Zsock2r¹Zfds2rærÂrnrMrNržrrrÚtestSendAndRecvFdsžs&  &H   z#SendRecvFdsTests.testSendAndRecvFdsN)rGrHrIrOrrrrrFšsrFc#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|ŽdSr.)Prrûr¢r.rErerrr=r*r:rFÚextendr®rÊrùr r r rrrrr(r†rrœrÔr¨rXrIr|r„rnršrÇrÌrúrárér¥ròrÄr`rarbrerfrhrirgrkrlrmrorprrrsrqrurvrwryrzrrr‚rƒr„r…rŽr™r¡r·rùrrZthreading_setupZ run_unittestZthreading_cleanup)ZtestsÚ thread_inforrrÚ test_mainÄs’ýò     þ Þ$  rRÚ__main__)Ór§ÚtestrZ test.supportrrfrÕr×r rÞrÓr°r:rzrurÖr˜r_rÚweakrefrrrùr&rr»r\r½Ú_threadr€rOr§r»r r rÓr·r«Úsystemrrrr r#r%r)r+r-r0r4rr8ZHAVE_SOCKET_CANZHAVE_SOCKET_CAN_ISOTPZHAVE_SOCKET_CAN_J1939ZHAVE_SOCKET_RDSZHAVE_SOCKET_ALGZHAVE_SOCKET_QIPCRTRZHAVE_SOCKET_VSOCKr ZHAVE_SOCKET_UDPLITEZHAVE_SOCKET_BLUETOOTHrÉrär¨r;rJrKrLrZrhrjr’r›rkrœrržrmr¥r¿rÅrÇrÌrÎrÑrÒrÞrárærçrèrérërírïrÿr rrrnršrºrÁrÇrÌráréròrûrr)r*rFrKrNrPrRrSrTrxrŠrr«r°r³rÄrÐr%r^r`rarbrcrërerfrgrhrirjrkrlrmrnrorprqrrrsrtrurvrwrxryrzrr€rr‚rƒr„r…r†rŽr™r¢r¨r®rÊrùr r r rrrhrrrrr(r.r=rCrErIrXrer~rr€r{r|r„r†rrœrr¡r·rùrúr™rr*r:rFrRrGrrrrÚsT                        3uÿÿ ÿ!ÿ ÿ$   b S Z * =  >ÿÿ.ÿ%{ÿ7w w=#P;k7 þ    þ         ÿ    þ ÿ þÿ ÿ ÿ ÿ þ  ÿ  ÿ  ÿ  ÿ ÿ  ÿ þ ÿ  ÿ ÿ þ      ÿ   ÿ ÿ  ÿ ÿ    ÿ  ÿ)ÿþ7#!$l    ?G9ÿ)ES ÿÿ',Cÿ< e ÿ D3F  ' N