a zep @sddlZddlmZddlmZddlZddlZddlZddlZddl Z ddl Z ddl Z ddl Z ddl Z ddlZddlZddlZddlZddlZddlmZddlZddlZddlZddlZddlZddlZddlZddlZddlZz ddlZWne ydZYn0z ddl!Z!Wne y.dZ!Yn0ej"Z"d#dZ$dZ%e&d kZ'z ddl(Z(Wne ytdZ(Yn0d d Z)d d Z*ddZ+ddZ,ddZ-ddZ.ddZ/ddZ0ddZ1ej2ddZ3e*Z4e+Z5e,Z6e-Z7e.Z8e/Z9e0Z:e;edZZ?Gd d!d!ej@ZAGd"d#d#ej@ZBGd$d%d%eBZCGd&d'd'ZDGd(d)d)ej@ZEGd*d+d+ej@ZFGd,d-d-ZGGd.d/d/eAeGZHGd0d1d1eBeGZIeJed>ej@eGZOGd?d@d@eHZPGdAdBdBej@eGZQGdCdDdDej@ZRGdEdFdFeRZSGdGdHdHeDeReGZTGdIdJdJeSeTZUGdKdLdLeRZVGdMdNdNeVZWGdOdPdPeRZXGdQdRdReXZYGdSdTdTeXZZGdUdVdVeXZ[GdWdXdXeXZ\GdYdZdZeXZ]Gd[d\d\e]Z^Gd]d^d^e]Z_d_d`Z`dadbZadcddZbGdedfdfej@ZceJe4dgGdhdidiej@ZdeJe4dgGdjdkdkeLZeeJe5dlGdmdndnej@ZfeJe6doGdpdqdqej@ZgeJe7drGdsdtdtej@ZheJe7drGdudvdveMZieJe9dwGdxdydyej@ZjeNe!dud9eJe:d:Gdzd{d{ej@ZkeJe=d|Gd}d~d~ej@ZlGdddePZmGdddeIZneJed?d?ej@ZeJe;ed@dAGdBdCdCej@ZeJejǐdDkdEeJedFGdGdHdHeAZGdIdJdJeHZeJe;edKdLGdMdNdNeɃZeJe8dOGdPdQdQej@ZeJej̐dRdSGdTdUdUej@ZGdVdWdWej@ZGdXdYdYej@ZeaedZeaed[eaedGd\d]d]ej@ZАd^d_ZeҐd`kreӡdS(aN)support) socket_helper)proxyFuMichael Gilfix was hereሴ utf-8AIXcCstdur dSttdsdSz>tdd }t|tjd}Wdn1sL0YWntylYdS0td|dSdS)NIOCTL_VM_SOCKETS_GET_LOCAL_CIDz /dev/vsockrbz Ir) fcntlhasattrsocketopenioctlrOSErrorstructunpack)frrD/opt/bitninja-python-dojo/embedded/lib/python3.9/test/test_socket.pyget_cid2s  2 rc Cs>zttjtjtj}Wnttfy0YdS0|dSNFT)r PF_CANSOCK_RAWCAN_RAWAttributeErrorrclosesrrr_have_socket_can?s r c Cs>zttjtjtj}Wnttfy0YdS0|dSr)r r SOCK_DGRAM CAN_ISOTPrrrrrrr_have_socket_can_isotpIs r#c Cs>zttjtjtj}Wnttfy0YdS0|dSr)r rr! CAN_J1939rrrrrrr_have_socket_can_j1939Ss r%c Cs<zttjtjd}Wnttfy.YdS0|dSNrFT)r PF_RDSSOCK_SEQPACKETrrrrrrr_have_socket_rds]s r)c Cs<zttjtjd}Wnttfy.YdS0|dSr&)r AF_ALGr(rrrrrrr_have_socket_alggs r+c Cs<zttjtjd}Wnttfy.YdS0|dSr&)r AF_QIPCRTRr!rrrrrrr_have_socket_qipcrtrqs r-cCstdu}|SN)r)retrrr_have_socket_vsock{s r0c Cs>zttjtjtj}Wnttfy0YdS0|dSr)r AF_BLUETOOTH SOCK_STREAMBTPROTO_RFCOMMrrrrrrr_have_socket_bluetooths r4c cs8t}zt|dVWt|n t|0dSr.)r getdefaulttimeoutsetdefaulttimeout)timeoutZ old_timeoutrrrsocket_setdefaulttimeouts  r8IPPROTO_UDPLITEic@seZdZddZddZdS) SocketTCPTestcCs.ttjtj|_t|j|_|jdSr.)r AF_INETr2servr bind_portportlistenselfrrrsetUpszSocketTCPTest.setUpcCs|jd|_dSr.r=rrArrrtearDowns zSocketTCPTest.tearDownN__name__ __module__ __qualname__rCrErrrrr;sr;c@seZdZddZddZdS) SocketUDPTestcCs$ttjtj|_t|j|_dSr.)r r<r!r=rr>r?rArrrrCszSocketUDPTest.setUpcCs|jd|_dSr.rDrArrrrEs zSocketUDPTest.tearDownNrFrrrrrJsrJc@seZdZddZdS)SocketUDPLITETestcCs(ttjtjtj|_t|j|_dSr.)r r<r!r9r=rr>r?rArrrrCszSocketUDPLITETest.setUpN)rGrHrIrCrrrrrKsrKcs4eZdZfddZfddZfddZZS)ThreadSafeCleanupTestCasecs tj|i|t|_dSr.)super__init__ threadingRLock _cleanup_lockrBargskwargs __class__rrrNsz"ThreadSafeCleanupTestCase.__init__cs<|j"tj|i|WdS1s.0YdSr.)rQrM addCleanuprRrUrrrWsz$ThreadSafeCleanupTestCase.addCleanupcs<|j"tj|i|WdS1s.0YdSr.)rQrM doCleanupsrRrUrrrXsz$ThreadSafeCleanupTestCase.doCleanups)rGrHrIrNrWrX __classcell__rrrUrrLs  rLc@sDeZdZdZdZdZeeZdZ e dee d7Z ddZ d S) SocketCANTestvcan0z=IB3x8sz@3I4l2IxcCs`ttjtjtj|_||jjz|j|jfWn"t yZ| d|jYn0dSN%network interface `%s` does not exist) r rrrrrWrbind interfacerskipTestrArrrrCs zSocketCANTest.setUpN) rGrHrIrbbufsize can_frame_fmtrcalcsizeZcan_frame_sizebcm_cmd_msg_fmtrCrrrrrZs  rZc@seZdZdZddZdS) SocketRDSTest cCsVttjtjd|_||jjzt|j|_Wnt yP| dYn0dS)Nrzunable to bind RDS socket) r r'r(r=rWrrr>r?rrcrArrrrCs  zSocketRDSTest.setUpN)rGrHrIrdrCrrrrrhsrhc@s<eZdZddZddZddZddZd d Zd d Zd S)ThreadableTestcCs|j|_|j|_dSr.)rC_ThreadableTest__setUp_setUprArrrrNDszThreadableTest.__init__cCs|jdSr.) server_readysetrArrrserverExplicitReadyIsz"ThreadableTest.serverExplicitReadycs t_jjjdddt_t_ t_ t d_ d_ fdd}|}|d}||dd}td|}tj|f_z0z Wnd_ Yn0Wjn j0j j jdS)NFcsjrjdSr.)queueqsizegetrrArrraise_queued_exception[s z5ThreadableTest._setUp..raise_queued_exception._T)rZwait_threads_exitZ wait_threads __enter__rW__exit__rOEventrm client_readydonerqQueueserver_crashedidrfindgetattrthreadstart_new_thread clientRunZ client_threadrkrnwait)rBrtZ methodnamer:Z test_methodrrArrlPs2            zThreadableTest._setUpc Cs|jzbz |WnFty^}z.|j||WYd}~W|jdSd}~00W|jn |j0|j r|dSt |dst dzHz |Wn0ty}z|j|WYd}~n d}~00W|n |0dS)N__call__z%test_func must be a callable function) rmr clientSetUp BaseExceptionrqputclientTearDownrzrnr}r TypeError)rBZ test_funcerrrrrs(       $zThreadableTest.clientRuncCs tddS)Nz clientSetUp must be implemented.)NotImplementedErrorrArrrrszThreadableTest.clientSetUpcCs|jtdSr.)r{rnrexitrArrrrs zThreadableTest.clientTearDownN) rGrHrIrNrorlrrrrrrrrjs &"rjc@s&eZdZd ddZddZddZdS) ThreadedTCPSocketTestrunTestcCstj||dt|dSN) methodNamer;rNrjrBrrrrrNszThreadedTCPSocketTest.__init__cCsttjtj|_dSr.)r r<r2clirArrrrsz!ThreadedTCPSocketTest.clientSetUpcCs|jd|_t|dSr.rrrjrrArrrrs z$ThreadedTCPSocketTest.clientTearDownN)rrGrHrIrNrrrrrrrs rc@s&eZdZd ddZddZddZdS) ThreadedUDPSocketTestrcCstj||dt|dSr)rJrNrjrrrrrNszThreadedUDPSocketTest.__init__cCsttjtj|_dSr.)r r<r!rrArrrrsz!ThreadedUDPSocketTest.clientSetUpcCs|jd|_t|dSr.rrArrrrs z$ThreadedUDPSocketTest.clientTearDownN)rrrrrrrs rz'UDPLITE sockets required for this test.c@s&eZdZd ddZddZddZdS) ThreadedUDPLITESocketTestrcCstj||dt|dSr)rKrNrjrrrrrNsz"ThreadedUDPLITESocketTest.__init__cCsttjtjtj|_dSr.)r r<r!r9rrArrrrsz%ThreadedUDPLITESocketTest.clientSetUpcCs|jd|_t|dSr.rrArrrrs z(ThreadedUDPLITESocketTest.clientTearDownN)rrrrrrrs rc@s&eZdZd ddZddZddZdS) ThreadedCANSocketTestrcCstj||dt|dSr)rZrNrjrrrrrNszThreadedCANSocketTest.__init__cCsBttjtjtj|_z|j|jfWnty<Yn0dSr.)r rrrrrarbrrArrrrs  z!ThreadedCANSocketTest.clientSetUpcCs|jd|_t|dSr.rrArrrrs z$ThreadedCANSocketTest.clientTearDownN)rrrrrrrs  rc@s&eZdZd ddZddZddZdS) ThreadedRDSSocketTestrcCstj||dt|dSr)rhrNrjrrrrrNszThreadedRDSSocketTest.__init__cCsLttjtjd|_z |jtdf|j|_WntyFYn0dSNr) r r'r(rraHOST getsocknamecli_addrrrArrrrs  z!ThreadedRDSSocketTest.clientSetUpcCs|jd|_t|dSr.rrArrrrs z$ThreadedRDSSocketTest.clientTearDownN)rrrrrrrs  r need fcntlz%VSOCK sockets required for this test.z-This test can only be run on a virtual guest.c@s6eZdZd ddZddZddZdd Zd d Zd S)ThreadedVSOCKSocketStreamTestrcCstjj||dt|dSrunittestTestCaserNrjrrrrrNsz&ThreadedVSOCKSocketStreamTest.__init__cCshttjtj|_||jj|jtjtf|j | |j \|_ |_ ||j jdSr.)r AF_VSOCKr2r=rWrraVMADDR_CID_ANY VSOCKPORTr@roacceptconnconnaddrrArrrrCs z#ThreadedVSOCKSocketStreamTest.setUpcCsDtdttjtj|_||jjt}|j |t fdS)N皙?) timesleepr rr2rrWrrconnectr)rBZcidrrrrs  z)ThreadedVSOCKSocketStreamTest.clientSetUpcCs|jd}||tdSN)rrecv assertEqualMSGrBmsgrrr testStreams z(ThreadedVSOCKSocketStreamTest.testStreamcCs|jt|jdSr.rsendrrrArrr _testStreams z)ThreadedVSOCKSocketStreamTest._testStreamN)rrGrHrIrNrCrrrrrrrrs   rc@s6eZdZd ddZddZddZdd Zd d Zd S)SocketConnectedTestrcCstj||ddSr)rrNrrrrrNszSocketConnectedTest.__init__cCs*t|||j\}}||_dSr.)rrCror=rcli_connrBraddrrrrrCs zSocketConnectedTest.setUpcCs|jd|_t|dSr.)rrrrErArrrrEs zSocketConnectedTest.tearDowncCs(t||jt|jf|j|_dSr.)rrrrrr? serv_connrArrrrs zSocketConnectedTest.clientSetUpcCs|jd|_t|dSr.)rrrrrArrrr$s z"SocketConnectedTest.clientTearDownN)rrGrHrIrNrCrErrrrrrrs  rc@s6eZdZd ddZddZddZdd Zd d Zd S)SocketPairTestrcCstjj||dt|dSrrrrrrrN+szSocketPairTest.__init__cCst\|_|_dSr.)r socketpairr=rrArrrrC/szSocketPairTest.setUpcCs|jd|_dSr.rDrArrrrE2s zSocketPairTest.tearDowncCsdSr.rrArrrr6szSocketPairTest.clientSetUpcCs|jd|_t|dSr.rrArrrr9s zSocketPairTest.clientTearDownN)rrrrrrr)s  rc@s$eZdZddZddZddZdS)SocketTestBasecCs||_|dSr.) newSocketr= bindServerrArrrrCNs zSocketTestBase.setUpcCs||j|j|_dSr.)bindSockr=r serv_addrrArrrrRs zSocketTestBase.bindServercCs|jd|_dSr.rDrArrrrEWs zSocketTestBase.tearDownN)rGrHrIrCrrErrrrrEs rcseZdZfddZZS)SocketListeningTestMixincst|jdSr.)rMrCr=r@rArUrrrC_s zSocketListeningTestMixin.setUprGrHrIrCrYrrrUrr\srcs<eZdZfddZddZddZddZd d ZZS) ThreadedSocketTestMixincs tj|i|t|dSr.)rMrNrjrRrUrrrNlsz ThreadedSocketTestMixin.__init__cCs||_|dSr.)newClientSocketr bindClientrArrrrps z#ThreadedSocketTestMixin.clientSetUpcCs|Sr.)rrArrrrtsz'ThreadedSocketTestMixin.newClientSocketcCs||j|j|_dSr.)rrrrrArrrrxs z"ThreadedSocketTestMixin.bindClientcCs|jd|_t|dSr.rrArrrr}s z&ThreadedSocketTestMixin.clientTearDown) rGrHrIrNrrrrrYrrrUrrds  rcs@eZdZfddZfddZfddZfddZZS) ConnectedStreamTestMixincs*t||j\}}||_dSr.)rMrCror=rrrrUrrrCs zConnectedStreamTestMixin.setUpcs|jd|_tdSr.)rrrMrErArUrrrEs z!ConnectedStreamTestMixin.tearDowncs$t|j|j|j|_dSr.)rMrrrrrrArUrrrs z$ConnectedStreamTestMixin.clientSetUpcs6z|jd|_Wnty&Yn0tdSr.)rrrrMrrArUrrrs    z'ConnectedStreamTestMixin.clientTearDown)rGrHrIrCrErrrYrrrUrrs   rcs$eZdZfddZddZZS)UnixSocketTestBasecs(t|_|tj|jtdSr.)tempfilemkdtempdir_pathrWosrmdirrMrCrArUrrrCs zUnixSocketTestBase.setUpcCs,tj|jd}t|||tj|dS)N)dir)rmktemprrbind_unix_socketrWrunlink)rBsockpathrrrrs zUnixSocketTestBase.bindSock)rGrHrIrCrrYrrrUrrs rc@seZdZddZdS)UnixStreamBasecCsttjtjSr.)r AF_UNIXr2rArrrrszUnixStreamBase.newSocketNrGrHrIrrrrrrsrcs(eZdZeZfddZddZZS) InetTestBasecst|jd|_dSNrp)rMrCrr?rArUrrrCs zInetTestBase.setUpcCstj||jddS)Nhost)rr>rrBrrrrrszInetTestBase.bindSock)rGrHrIrrrCrrYrrrUrrs rc@seZdZddZdS) TCPTestBasecCsttjtjSr.)r r<r2rArrrrszTCPTestBase.newSocketNrrrrrrsrc@seZdZddZdS) UDPTestBasecCsttjtjSr.)r r<r!rArrrrszUDPTestBase.newSocketNrrrrrrsrc@seZdZddZdS)UDPLITETestBasecCsttjtjtjSr.)r r<r!r9rArrrrszUDPLITETestBase.newSocketNrrrrrrsrc@seZdZddZdS)SCTPStreamBasecCsttjtjtjSr.)r r<r2 IPPROTO_SCTPrArrrrs zSCTPStreamBase.newSocketNrrrrrrsrc@seZdZejZdS) Inet6TestBaseN)rGrHrIrHOSTv6rrrrrrsrc@seZdZddZdS) UDP6TestBasecCsttjtjSr.)r AF_INET6r!rArrrrszUDP6TestBase.newSocketNrrrrrrsrc@seZdZddZdS)UDPLITE6TestBasecCsttjtjtjSr.)r rr!r9rArrrrszUDPLITE6TestBase.newSocketNrrrrrrsrcs*ddfdd}dd}|r&|S|S)Nc_sdSr.rrSrTrrr client_passsz%skipWithClientIf..client_passcs*t|}t|ts&fdd|_|S)NcsSr.rr)rrrz3skipWithClientIf..skipdec..)rskip isinstancetype client_skip)objZretvalrreasonrrskipdecs z!skipWithClientIf..skipdeccSs"t|tst|dsdd|_|S)NrcSs|Sr.rrrrrr rz5skipWithClientIf..noskipdec..)rrr rrrrr noskipdec s z#skipWithClientIf..noskipdecr)Z conditionrrrrrrskipWithClientIfs rcs0fdd|D}t|dddd|DS)Ncsg|]}t|s|qSr)r .0namerrr rz requireAttrs.. don't have , css|] }|VqdSr.rrrrr rzrequireAttrs..)rjoin)rZ attributesmissingrrr requireAttrssrc Gsd}dd|D}|r0dddd|D}nRdd|D}ztj|}Wn,tyx}zt|}WYd}~nd}~00|t|duddd d|D|S) NcSs$g|]}t|trtt|s|qSr)rstrr r rrrrrr#sz!requireSocket..rrcss|] }|VqdSr.rrrrrr&rz requireSocket..cSs$g|]}t|trtt|n|qSr)rrrr rrrrr(szcan't create socket({0}): {1}css|]}t|VqdSr.)rrorrrr4r)rr rrrrformat)rSerrrZcallargsrrrrr requireSockets$r c@speZdZddZddZeedudddZd d Z d d Z d dZ ddZ ddZ eejdkdddZeejdkdeejdddZddZddZd d!Zeeed"d#eeed$d%d&d'Zeeed(d)d*d+Zeeed,d-d.d/Zeeed0d1d2d3Zeeed4d5d6d7Zd8d9Z d:d;Z!e"j#dd?Z%d@dAZ&eeedBdCdDdEZ'eeedFdGdHdIZ(eeedFdGdJdKZ)eeedLdMdNdOZ*eeedLdMdPdQZ+dRdSZ,dTdUZ-dVdWZ.dXdYZ/dZd[Z0d\d]Z1d^d_Z2eejdkdd`daZ3eejdkdeeedbdcdddeZ4dfdgZ5dhdiZ6ee"7djdkdldmZ8dndoZ9dpdqZ:drdsZ;dtduZdzd{Z?d|d}Z@d~dZAddZBddZCe"j#ddZDeejdddZEeejdddZFeejdeGejdkdeGeHdddZIeejdeejdkdddZJeejdeGejdkdeGeHdddZKeejdeejdkdddZLddZMddZNddZOeeeddddZPddZQddZRddZSddZTddZUeGejdkdddZVddZWddZXdS)GeneralModuleTestscCs<ddl}|tj|jut}||tj|dSr)_socket assertTruer SocketTypeassertIsInstancer)rBrrrrrtest_SocketType_is_socketobject<s z2GeneralModuleTests.test_SocketType_is_socketobjectcCsttjtj}||d|t||dtjt||dtjt||dt||dt||d|dt||t| t|Wdn1s0Y|dt||dt|dS) Nzfd=%iz family=%sztype=%szproto=0raddr 127.0.0.1rladdrz[closed]) r r<r2assertInfilenorepr assertNotInrarrrBrrrr test_reprCs 6zGeneralModuleTests.test_reprNzneed _socket modulecCszttjtj}z6d||j|j|jf}|t ||W| n | 0d|j|j|jf}|t ||dS)Nz4z4) rr r<r2rfamilyrprotorrr)rBrexpectedrrrtest_csocket_reprQsz$GeneralModuleTests.test_csocket_reprcCsttjtj,}t|}|||Wdn1sB0Yd}tz |WntyvYn 0| ddS)NzSocket proxy still exists) r r<r2rrrr gc_collectReferenceErrorfail)rBrprrr test_weakref^s2  zGeneralModuleTests.test_weakrefcCsd}|jt|ddtWdn1s00Y|jt|ddtjWdn1sh0Y|jt|ddtjWdn1s0YdS)Nz$Error raising socket exception (%s).rrz socket.herrorzsocket.gaierror) assertRaisesrr herrorgaierrorrrrrtestSocketErrorks"$z"GeneralModuleTests.testSocketErrorcCsttjtj}||j|d|}|t}| d|Wdn1sZ0Y| t |j d|t}| d|Wdn1s0Y| t |j d|t}| ddWdn1s0Y| dt |j |t}| dd|Wdn1s60Y| t |j d|t}| dd|Wdn1s0Y| t |j d|t}| dddWdn1s0Y| dt |j |t}| dd |Wdn1s0Y| d t |j |t}| dddWdn1sf0Y| d t |j |t}| dWdn1s0Y| d t |j |t }| dd|d Wdn1s0Y| 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 NoneTyperbarzan integer is requiredz (1 given)z (4 given))r r<r!rWrrarr'rsendtorr exceptionr)rBrZsocknamecmrrrtestSendtoErrorsusT   *  *  * .  .  . . . * 0z#GeneralModuleTests.testSendtoErrorscCs@tjtjrtjtjtjtjtjtjtj tj dSr.) r r<has_ipv6rr2r!rSOCK_RDMr( SOL_SOCKET SO_REUSEADDRrArrrtestCrucialConstantssz'GeneralModuleTests.testCrucialConstantscCstjtjtjrtjdSr.)r IPPROTO_TCP IPPROTO_UDPr3 IPPROTO_IPV6rArrrtestCrucialIpProtoConstantssz.GeneralModuleTests.testCrucialIpProtoConstantsntWindows specificcCs4tjtjtjtjtjtjtjtjdSr.) r ZIPPROTO_ICLFXBMZ IPPROTO_STZ IPPROTO_CBTZ IPPROTO_IGPZ IPPROTO_RDPZ IPPROTO_PGMZ IPPROTO_L2TPrrArrrtestWindowsSpecificConstantssz/GeneralModuleTests.testWindowsSpecificConstantsdarwinzmacOS specific testIPv6 required for this testcCs0hd}|D]}|tt|d|dq dS)N>IPV6_RECVTCLASSIPV6_RECVPKTINFOIPV6_RTHDR_TYPE_0IPV6_RTHDRDSTOPTSIPV6_RECVHOPOPTSIPV6_RECVDSTOPTS IPV6_HOPLIMIT IPV6_TCLASS IPV6_NEXTHOPIPV6_RECVRTHDRIPV6_RECVHOPLIMIT IPV6_HOPOPTS IPV6_CHECKSUMZIPV6_USE_MIN_MTU IPV6_RTHDR IPV6_PKTINFOZ IPV6_DONTFRAGZIPV6_RECVPATHMTUZ IPV6_PATHMTU IPV6_DSTOPTSzMissing RFC3542 socket option '')rr r )rBZoptsoptrrrtest3542SocketOptionss z(GeneralModuleTests.test3542SocketOptionscCst}zt|}Wnty2|dYn0||ddkdzt|\}}}Wntyz|dYn0||g|}t|}||vr| d|t |fdS)Nname lookup failurerurzError resolving host to ip.z=Error testing host resolution mechanisms. (fqdn: %s, all: %s)) r gethostname gethostbynamerrcrfind gethostbyaddrgetfqdnr#r)rBhostnameZipZhnamealiasesipaddrsZall_host_namesZfqhnrrrtestHostnameRess    z"GeneralModuleTests.testHostnameRescCsLtjddfD]}|t||q tjfD]}||t|dq,dS)Nz10.0.0.1255.255.255.255r)rZHOSTv4rr rVrrX)rBrrrrrtest_host_resolutions z'GeneralModuleTests.test_host_resolutionc Csd}dD]t}|jt|dt|Wdn1s:0Y|jt|dt|Wdq1sr0YqdS)Nz[resolving an invalid IP address did not raise OSError; can be caused by a broken DNS server)z0.1.1.~1z1+.1.1.1z::1qz::1::2z1:1:1:1:1:1:1:1:1r&)r'rr rVrX)rBZ explanationrrrr test_host_resolution_bad_addresss(z3GeneralModuleTests.test_host_resolution_bad_address sethostnameztest needs socket.sethostname()rUztest needs socket.gethostname()c Cst}ztdWn>tyT}z&|jtjkr>|dnWYd}~n d}~00z8|tdtd|tdWt|n t|0dS)Nnewztest should be run as rootsbarr-)r rUrarerrnoEPERMrcr)rBZoldhnrrrrtest_sethostname s   z#GeneralModuleTests.test_sethostname if_nameindexz$socket.if_nameindex() not available.cCst}|D]p\}}||t||t||dt|}||t|||t|}||t|||q dSr) r rfrintr assertGreaterif_nametoindexrif_indextoname)rBZ interfacesindexrZ_index_namerrrtestInterfaceNameIndexs         z)GeneralModuleTests.testInterfaceNameIndexrjz&socket.if_indextoname() not available.cCs$|ttjd|ttjddSNrZ _DEADBEEF)r'rr rjrrArrrtestInvalidInterfaceIndexToName-sz2GeneralModuleTests.testInvalidInterfaceIndexToNameriz&socket.if_nametoindex() not available.cCs$|ttjd|ttjddSrn)r'rr rirrArrrtestInvalidInterfaceNameToIndex3sz2GeneralModuleTests.testInvalidInterfaceNameToIndex getrefcountztest needs sys.getrefcount()cCsJztt}ttdWn*tyDtt|kr@|dYn0dS)Nrz$socket.getnameinfo loses a reference)sysrqrGr getnameinforr#)rBorigrrrtestRefCountGetNameInfo9s   z*GeneralModuleTests.testRefCountGetNameInfocCs(ztddWnty"Yn0dS)N)r]rrrr)r rsrrArrrtestInterpreterCrashEs z'GeneralModuleTests.testInterpreterCrashc Cstjdtjdtjdtjdi}|D]d\}}d|>d}dD]$}|||@||||@|@q<||}|||@||t|dq$dS)N rp)rrpirigE#i2Tvl) r htonlntohlhtonsntohsitemsrr' OverflowError)rBZsizesfuncsizemaskr:ZswappedrrrtestNtoHMs   "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|qdS) Nr)rrprrylrp) _testcapiZINT_MININT_MAXr r}r|r{rzr'r assertWarnsDeprecationWarning)rBrZ s_good_valuesZ l_good_valuesZ l_bad_valuesZ s_bad_valuesZs_deprecated_valueskrrrtestNtoHErrors[s.       z!GeneralModuleTests.testNtoHErrorsc Cs |j}tjdstjdvr"d}nd}|D].}zt|d}Wq^Wq*tyVYq*0q*tttdrttdkrt|}|||zt|d}Wntyd}Yn 0|||t j s|t |||t |d||dur|t |d|| t tj d | t tj d dS) N)freebsdZnetbsdZ gnukfreebsd)linuxr?)daytimeZqotddomain)ZechorrZtcpgetandroidapilevelZudprr)rrrplatform startswithr getservbynamerr rrZ is_android getservbyportr'r)rBeqZservicesZservicer?Zport2Zudpportrrr testGetServByts<           z GeneralModuleTests.testGetServByc Cs0|tdt }||dWdn1s>0Ytd|tdt }||dWdn1s0Ytd|tdt }||dWdn1s0YWdn1s0Y|ttjd|ttjddS)N rZspam) rr r5 gettimeoutr8r6r' ValueErrorr)rBrrrrrtestDefaultTimeouts .  .  Nz%GeneralModuleTests.testDefaultTimeout inet_atonztest needs socket.inet_aton()cCs(|dtd|dtddS)N0.0.0.0r^)rr rrArrrtestIPv4_inet_aton_fourbytessz/GeneralModuleTests.testIPv4_inet_aton_fourbytes inet_ptonztest needs socket.inet_pton()cs*ddlm}mmfdd}fdd}d|dd|d d |d d |d d|dts||d||d||d||d||dd|dd|d d |d d|d||d||d||d||d||ddS)Nr)rrr<cs |Sr.ra)r<rrrrrz5GeneralModuleTests.testIPv4toString..csttf||Sr.r'rrrrrArrrs rrsz 255.0.255.0sz170.170.170.1701.2.3.4rr^z0.0.0.z 300.0.0.0za.0.0.0z 1.2.3.4.5::1)r rrr<rrrBrg assertInvalidr)r<rrBrtestIPv4toStrings.          z#GeneralModuleTests.testIPv4toStringc sz&ddlmmm}|s$dWntyBdYn0tjdkrzdWn8ty}z |j dkrdWYd}~n d}~00fd d fd d } d d d d  dd dd dd dd|d|d|d|d|d|d|d|dt s`|d dd  d!d" d#d$|d%|d&|d'|d(|d)|d*dS)+Nr)rrr3IPv6 not available+could not import needed symbols from socketwin32::&'IPv6 might not be supportedcs |Sr.rr)rrrrrrz5GeneralModuleTests.testIPv6toString..csttf|Sr.rrrrBrrrs z0::0sz1::sEvV $z$45ef:76cb:1a:56ef:afeb:bac:1924:aeaesB 'Tzad42:abc::127:0:254:2s z12:a::z0x20::z:::z::0::z1::abc::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 rrr3rc ImportErrorrrrrwinerrorrrrBr3rrr)rrrrBrtestIPv6toStringsj    z#GeneralModuleTests.testIPv6toString inet_ntopztest needs socket.inet_ntop()csddlm}mmfdd}fdd}d|dd|d d |d d |d ||d||d||dd|td d|dd|d d |d ||d||d||dd|td dS)Nr) inet_ntoarr<cs |Sr.rr)r<rrrr&rz5GeneralModuleTests.testStringToIPv4..csttf||Sr.rrrArrr's z1.0.1.0sz 170.85.170.85sUUr^rrrssr)r rrr<r bytearrayrr)r<rrBrtestStringToIPv4"s$       z#GeneralModuleTests.testStringToIPv4c sz&ddlmmm}|s$dWntyBdYn0tjdkrzdWn8ty}z |j dkrdWYd}~n d}~00fd d fd d } d d d d dd d t d|d|d|ddS)Nr)rrr3rrrrrrcs |Sr.rr)rrrrrMrz5GeneralModuleTests.testStringToIPv6..csttf|Sr.rrrrrrNs rrsz!aef:b01:506:1001:ffff:9997:55:170s Upsss) r rrr3rcrrrrrrrrrr)rrrrBrtestStringToIPv6<s0    z#GeneralModuleTests.testStringToIPv6cCst}ttjtj}||j|d|f|}zt t }Wnt yh| dYn0| |dd|fd|d||d|dS)NrrTrz %s invalidrp)rfind_unused_portr r<r2rWrrarrVrUrrcrr)rBr?rrZ my_ip_addrrrr testSockName`s  zGeneralModuleTests.testSockNamecCs@ttjtj}||j|tjtj}||dkddS)Nrzinitial mode is reuse) r r<r2rWr getsockoptr5r6 assertFalserBrZreuserrrtestGetSockOptrs z!GeneralModuleTests.testGetSockOptcCsRttjtj}||j|tjtjd|tjtj}| |dkddS)Nrprzfailed to set reuse mode) r r<r2rWr setsockoptr5r6rrrrrrtestSetSockOptzs  z!GeneralModuleTests.testSetSockOptcCsNttjtj}|dWdn1s00Y|t|jddS)Nrpspam)r r<r2 settimeoutr'rrrrrrtestSendAfterCloses(z%GeneralModuleTests.testSendAfterClosec Cst}|tjdftj|dz |Wn:tyr}z"||jtjtj fWYd}~nd}~00| ddS)Nrrz#close() should raise EBADF/ENOTSOCK) r ra _LOCALHOSTrrrrrcEBADFENOTSOCKr#)rBrr rrrtestCloseExceptions ,z%GeneralModuleTests.testCloseExceptioncCsttjtjf}||jtjttdrJ||jtjtjBtjfn||jtj||j dWdn1s|0YdS)N SOCK_CLOEXECr) r r<r2rrr rrrrrrrrtestNewAttributess  z$GeneralModuleTests.testNewAttributesc Cst}||jt}|d}|d}|t|jt|f|t|jt|ft D]^}t}z|t|fWn:t y}z"|j t j ks|dkrWYd}~q\d}~00qq\dS)Nr)r rWrrrr'rrar itertoolscountrrcZ EADDRINUSE)rBrr?Zbig_portZneg_portr:rrrrtest_getsockaddrargs  z&GeneralModuleTests.test_getsockaddrargcCs|ttjd|ttd|ttd|ttd|ttdt}||j|t|jdd|tjddS)NrZ SIO_RCVALLZ RCVALL_ONZ RCVALL_OFFSIO_KEEPALIVE_VALSr)rpdr) rr r rWrr'rrrrrrrtest_sock_ioctls z"GeneralModuleTests.test_sock_ioctlSIO_LOOPBACK_FAST_PATHz1Loopback fast path support required for this testc Cs~t}||jz|tjdWn>tyd}z&d}|j|krN|dWYd}~n d}~00|t |jtjddS)NTi='zQSIO_LOOPBACK_FAST_PATH is defined but doesn't implemented in this Windows version) r rWrrrrrrcr'r)rBrexcZ WSAEOPNOTSUPPrrrtest_sio_loopback_fast_paths   z.GeneralModuleTests.test_sio_loopback_fast_pathc Cs@ztddWn>tjyN}z$|jtjkr8|dWYd}~n d}~00ttdD]}|t|dq\tddtddtddt j rtddt t drt dkrttd ttdttdttdtjtj}|D]J\}}}}}||tj|t|d ||tj|t|d qttdd tj}|D]\}}}}}||tjq\ttdd d tjttdd d d tjtdd tjtjd tjttd}tjtdd } ||| ttdtj}tjtdtjd} ||| ttdd tj}tjtdtjd} ||| ttdd d tj}tjtdtjd} ||| ttdd d d tj}tjtdtjd} ||| tdd tjtjd tj}tjdd tjtjd tjd} ||| |ttjddt tdr.ok_handlercsttjddddSNrrprrrArrraising_handler<szEGeneralModuleTests.check_sendall_interrupted..raising_handlerg?rpxr)r signalr rcrSIGALRMrr'ZeroDivisionErrorrsendallr SOCK_MAX_SIZEr7r)rBZ with_timeoutrrcr old_alarmrrArcheck_sendall_interrupted4s4       .    z,GeneralModuleTests.check_sendall_interruptedcCs|ddSNFrrArrrtest_sendall_interruptedSsz+GeneralModuleTests.test_sendall_interruptedcCs|ddS)NTrrArrr%test_sendall_interrupted_with_timeoutVsz8GeneralModuleTests.test_sendall_interrupted_with_timeoutcCsttjtj}t|}|t}d}tWdn1sD0Y||t |j j dttjtj}| d}t|}d}t|td}tWdn1s0YdS)Nrr ) r r<r2rrResourceWarningrr!rrwarningrSmakefile)rBrrr1rrrrtest_dealloc_warnYs &  z$GeneralModuleTests.test_dealloc_warncCsVttjtj2}|d}||t|dWdn1sH0YdS)Nr z<_io.BufferedReader name=-1>)r r<r2r rrrrBrfprrrtest_name_closed_socketiojs z,GeneralModuleTests.test_name_closed_socketiocCstz}|jddd}||||||||t |j|t |j|t |jWdn1s0YdS)Nr r) buffering) r r rreadablerwritableseekablerr'rrrrrtest_unusable_closed_socketiops z0GeneralModuleTests.test_unusable_closed_socketiocCs2t}z|tdft||t|dWdn1sP0YW|t|Wdq1s0Yn4|t|Wdn1s0Y0|ttdWdn1s0Y|ttdWdn1s$0YdS)Nrrpr) r rarrrr'rr@rrrrrtest_socket_close{s * ( ( ( z$GeneralModuleTests.test_socket_closec CsdD]}|j|dptH}||}||j|Wdn1sN0YWdn1sl0YWdq1s0YqdS)N)rr rwwwbmode)subTestr r rr)rBrrrrrrtest_makefile_modes   z%GeneralModuleTests.test_makefile_modec CsdD]}|j|dntF}|td||Wdn1sL0YWdn1sj0YWdq1s0YqdS)N)rtr]+rrz invalid mode)rr assertRaisesRegexrr )rBrrrrrtest_makefile_invalid_modes  z-GeneralModuleTests.test_makefile_invalid_modecCst}|6ttjdD]}|ttj||qWdn1sH0YttjdD]H}tttj|}| |tjtttj |}| |tj q`dSr) r rangepickleHIGHEST_PROTOCOLr'rdumpsloadsr<rr2)rBrprotocolrrrrr test_pickles2zGeneralModuleTests.test_picklec CsdD]L}ttjtj(}|tdf||Wdq1sF0Yqttjtj&}|tdf|Wdn1s0YdS)N)rrr)r r<r2rarr@)rBbacklogsrvrrrtest_listen_backlogs*z&GeneralModuleTests.test_listen_backlogcCs`ddl}ttjtj4}|tdf|t|j|j dWdn1sR0YdSr) rr r<r2rarr'rr@r)rBrr*rrrtest_listen_backlog_overflowsz/GeneralModuleTests.test_listen_backlog_overflowIPv6 required for this test.cCsf|ttjtjddfdttjtj(}|t|jtjddfWdn1sX0YdS)Nrri) r'rr rsrrrr2rarrrr test_flowinfos   z GeneralModuleTests.test_flowinfocCs0tddtjtjtj\^}}||ddS)Nff02::1de:c0:face:8Dr)ff02::1de:c0:face:8drrr)r rrr!r9r)rBrvsockaddrrrrtest_getaddrinfo_ipv6_basics z.GeneralModuleTests.test_getaddrinfo_ipv6_basicrzdoes not work on WindowszSymbolic scope id does not workcCsLtd\}}td|dtjtjtj\^}}||ddd|fdS)Nrff02::1de:c0:face:8D%rr0)r rfrrr!r9r)rBifindextest_interfacervr1rrr&test_getaddrinfo_ipv6_scopeid_symbolics z9GeneralModuleTests.test_getaddrinfo_ipv6_scopeid_symbolicz.Numeric scope id does not work or undocumentedcCsDd}tdt|dtjtjtj\^}}||ddd|fdS)N*r3rr0r)r rrrr!r9r)rBr4rvr1rrr%test_getaddrinfo_ipv6_scopeid_numerics  z8GeneralModuleTests.test_getaddrinfo_ipv6_scopeid_numericcCsHtd\}}ddd|f}t|tjtjB}||d|dfdS)Nrr/rff02::1de:c0:face:8d%1234)r rfrsNI_NUMERICHOSTNI_NUMERICSERVr)rBr4r5r1nameinforrr&test_getnameinfo_ipv6_scopeid_symbolics z9GeneralModuleTests.test_getnameinfo_ipv6_scopeid_symboliccCs@d}ddd|f}t|tjtjB}||dt|dfdS)Nr7r/rrr9r:)r rsr;r<rr)rBr4r1r=rrr%test_getnameinfo_ipv6_scopeid_numerics z8GeneralModuleTests.test_getnameinfo_ipv6_scopeid_numericcCsXttjtj4}|t|jd|t|jdWdn1sJ0YdS)Nrr)r r<r2rrrrrrrrtest_str_for_enumssz%GeneralModuleTests.test_str_for_enumscCsttdd}ttdd}tj|B|B}ttj|}||jtj|d||jtj|d||jtj|d||jtj|d||jtjWdn1s0YdS)N SOCK_NONBLOCKrrrpTF)rr r2r<rrr setblocking)rBrArZ sock_typerrrr test_socket_consistent_sock_types      z3GeneralModuleTests.test_socket_consistent_sock_typecCsttjtj}|}ttjjd}tddtjj Dd}tj||d|d>}| |j || |j || |jddhWdn1s0YdS)Nrpcss|]\}}|dvr|VqdS)>rArNr)rrkindrrrrszEGeneralModuleTests.test_unknown_socket_family_repr..r)rrrrr)r r<r2detachmax AddressFamily __members__values SocketKindr~rrrrr)rBrfdZunknown_familyZ unknown_typerrrrtest_unknown_socket_family_reprs  z2GeneralModuleTests.test_unknown_socket_family_reprsendfileztest needs os.sendfile()c CsGddd}t}ttjtj}t||tj|||Wdn1sb0Y|t "||ddWdn1s0Y|t ||dWdn1s0YWdn1s0YdS)Nc@seZdZddZddZdS)z.FilecSs ||_dSr.rK)rBrKrrrrN/szEGeneralModuleTests.test__sendfile_use_sendfile..File.__init__cSs|jSr.rNrArrrr2szCGeneralModuleTests.test__sendfile_use_sendfile..File.filenoN)rGrHrIrNrrrrrFile.srOrr) r rrcurdirO_RDONLYrr'_GiveupOnSendfile_sendfile_use_sendfilerr)rBrOrrKrrrtest__sendfile_use_sendfile,s  , 0 z.GeneralModuleTests.test__sendfile_use_sendfilecCst||j|||j||}tj|d}||j|||j|||j||||dSNr)rrrrr rWrrE)rBrrstyperKs2rrr_test_socket_fileno>s  z&GeneralModuleTests._test_socket_filenocCsPttjtj}||j|tjdf||tjtjt tdrttjtj }||j|tjdf||tjtj tj rttj tj}||j|tj dddf||tj tjt tdrLt}|tj|ttjtj}||jz|tj|dWnty8Yn0||tjtjdS)Nrr!rr )r r<r2rWrrarrrXr r!rrrrrshutilrmtreerrrrPermissionError)rBrZtmpdirrrrtest_socket_filenoKs4       z%GeneralModuleTests.test_socket_filenocCsD|td$tjtjtjddWdn1s60YdS)Nzinteger argument expectedg@E@rr rr r<r2rArrr test_socket_fileno_rejects_floatjsz3GeneralModuleTests.test_socket_fileno_rejects_floatcCsD|td$tjtjtjddWdn1s60YdS)Nzinteger is requiredfoorr]rArrr&test_socket_fileno_rejects_other_typesnsz9GeneralModuleTests.test_socket_fileno_rejects_other_typescCsD|td$tjtjtjddWdn1s60YdS)Nnegative file descriptorrrr rr r<r2rArrr)test_socket_fileno_rejects_invalid_socketrszrrrrrrSr]r_r`r r rermrorprurvrr cpython_onlyrrrrrrrrrrrrrrrrrrrZis_resource_enabledrrrr r rrrrr!r(r+r,r.r2skipIfrr6r8r>r?r@rCrLrTrXr\r^r`rcrdrergrrrrr :s   ,               ,      >    "     N                     r z!SocketCan required for this test.c@seZdZddZeeeddddZddZ eeeddd d Z d d Z d dZ eeeddddZ eeeddddZdS) BasicCANTestcCstjtjtjdSr.)r AF_CANrrrArrrr7sz!BasicCANTest.testCrucialConstantsCAN_BCM&socket.CAN_BCM required for this test.cCstjtjtjtjtjtjtjtjtj tj tj tj tj tjtjtjtjtjtjtjtjtjtjtjdSr.)r rmCAN_BCM_TX_SETUPCAN_BCM_TX_DELETECAN_BCM_TX_READCAN_BCM_TX_SENDCAN_BCM_RX_SETUPCAN_BCM_RX_DELETECAN_BCM_RX_READCAN_BCM_TX_STATUSCAN_BCM_TX_EXPIREDCAN_BCM_RX_STATUSCAN_BCM_RX_TIMEOUTCAN_BCM_RX_CHANGEDCAN_BCM_SETTIMERCAN_BCM_STARTTIMERCAN_BCM_TX_COUNTEVTCAN_BCM_TX_ANNOUNCECAN_BCM_TX_CP_CAN_IDCAN_BCM_RX_FILTER_IDCAN_BCM_RX_CHECK_DLCCAN_BCM_RX_NO_AUTOTIMERCAN_BCM_RX_ANNOUNCE_RESUMECAN_BCM_TX_RESET_MULTI_IDXCAN_BCM_RX_RTR_FRAMErArrrtestBCMConstantss0zBasicCANTest.testBCMConstantscCs8ttjtjtj}Wdn1s*0YdSr.r rrrrrrrtestCreateSocketszBasicCANTest.testCreateSocketcCs8ttjtjtj}Wdn1s*0YdSr.)r rr!rmrrrrtestCreateBCMSocketsz BasicCANTest.testCreateBCMSocketcCsVttjtjtj.}d}|||||Wdn1sH0YdS)N)r+)r rrrrarr)rBraddressrrr testBindAnys zBasicCANTest.testBindAnycCsJttjtjtj"}|td|jdWdn1s<0YdS)Ninterface name too long)xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx)r rrrr rrarrrrtestTooLongInterfaceNamesz%BasicCANTest.testTooLongInterfaceNameCAN_RAW_LOOPBACKz/socket.CAN_RAW_LOOPBACK required for this test.c CslttjtjtjD}dD].}|tjtj||||tjtjqWdn1s^0YdS)N)rrp) r rrrr SOL_CAN_RAWrrr)rBrZloopbackrrr testLoopbacks zBasicCANTest.testLoopbackCAN_RAW_FILTERz-socket.CAN_RAW_FILTER required for this test.c Csd\}}td||}ttjtjtjR}|tjtj|| || tjtjd|tjtjt |Wdn1s0YdS)N)iz=IIr^) rpackr rrrrrrrrr)rBcan_idZcan_maskZ can_filterrrrr testFilterszBasicCANTest.testFilterN)rGrHrIr7rrhr r rrrrrrrrrrrrks(       rkc@seZdZdddZeddZeddZdd Zd d Zd d Z ddZ ddZ ddZ e eeddddZe eeddddZdS)CANTestrcCstj||ddSr)rrNrrrrrNszCANTest.__init__cCs&t|}|dd}t|j|||S)Nr^)rljustrrre)clsrdatacan_dlcrrrbuild_can_frames zCANTest.build_can_framecCs&t|j|\}}}|||d|fSr.)rrre)rframerrrrrrdissect_can_frameszCANTest.dissect_can_framecCs6|j|j\}}||j|||d|jdSr)rrecvfromrdrcfrbrBrrrrr testSendFrameszCANTest.testSendFramecCs |dd|_|j|jdS)NrsrrrrrArrr_testSendFrameszCANTest._testSendFramecCs$|j|j\}}||j|dSr.)rrrdrrrrrrtestSendMaxFrameszCANTest.testSendMaxFramecCs |dd|_|j|jdS)NrsrrArrr_testSendMaxFrame szCANTest._testSendMaxFramecCsD|j|j\}}||j||j|j\}}||j|dSr.)rrrdrcf1cf2rrrrtestSendMultiFrames szCANTest.testSendMultiFramescCs<|dd|_|j|j|dd|_|j|jdS)NsD3"s"3)rrrrrrArrr_testSendMultiFramesszCANTest._testSendMultiFramesrmrncCsP|j|j\}}||j|||\}}}||j|||j|dSr.)rrrdrrrrr)rBrrrrrrrr_testBCMs zCANTest._testBCMc Csttjtjtj}||j||jfd|_t gd|_ | |j|j |_ tj }d}d}d}}}}d} d} t|j|||||||| | } | |j } || } || t| dS)N#)ri"rp)r rr!rmrWrrrbrbytesrrrrrrrrgrrr)rBZbcmZopcoderrZ ival1_secondsZ ival1_usecZ ival2_secondsZ ival2_usecZ bcm_can_idZnframesheaderZheader_plus_frameZ bytes_sentrrrtestBCM$s4   zCANTest.testBCMN)r)rGrHrIrN classmethodrrrrrrrrrrhr r rrrrrrrs&      rz!CAN ISOTP required for this test.csVeZdZfddZddZddZeee ddd d Z d d Z d dZ Z S) ISOTPTestcstj|i|d|_dSNr[rMrNrbrRrUrrrNGszISOTPTest.__init__cCstjtjtjtjdSr.)r rlrr"r!rArrrr7KszISOTPTest.testCrucialConstantscCs8ttjtjtj}Wdn1s*0YdSr.rrrrrrQszISOTPTest.testCreateSocketr"z(socket.CAN_ISOTP required for this test.cCs8ttjtjtj}Wdn1s*0YdSr.)r rr!r"rrrrtestCreateISOTPSocketUszISOTPTest.testCreateISOTPSocketc CsnttjtjtjF}|td|dWdn1sB0YWdn1s`0YdS)Nr)rrpr)r rr!r"r rrarrrrr[sz"ISOTPTest.testTooLongInterfaceNamec Csz^ttjtjtj6}|jddf}|||||Wdn1sR0YWnDty}z,|j t j kr| d|jnWYd}~n d}~00dS)NriVr`) r rr!r"rbrarrrrcENODEVrcrBrrrrrrtestBindas  2 zISOTPTest.testBind)rGrHrIrNr7rrrhr r rrrrYrrrUrrDs   rz!CAN J1939 required for this test.csXeZdZfddZeeeddddZeeeddddZ d d Z Z S) J1939Testcstj|i|d|_dSrrrRrUrrrNrszJ1939Test.__init__r$z(socket.CAN_J1939 required for this test.cCstjtjtjtjtjtjtjtjtj 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_MAXrArrrtestJ1939Constantsvs0zJ1939Test.testJ1939ConstantscCs8ttjtjtj}Wdn1s*0YdSr.)r rr!r$rrrrtestCreateJ1939SocketszJ1939Test.testCreateJ1939Socketc Cszfttjtjtj>}|jtjtjtjf}||| | |Wdn1sZ0YWnDt y}z,|j t j kr|d|jnWYd}~n d}~00dSr_)r rr!r$rbrrrrarrrrcrrcrrrrrs 2 zJ1939Test.testBind) rGrHrIrNrrhr r rrrrYrrrUrros   !  rz#RDS sockets required for this test.c@s$eZdZddZddZddZdS) BasicRDSTestcCstjtjdSr.)r AF_RDSr'rArrrr7sz!BasicRDSTest.testCrucialConstantscCs6ttjtjd}Wdn1s(0YdSr)r r'r(rrrrrszBasicRDSTest.testCreateSocketcCs^d}ttjtjd4}|tjtj||tjtj|Wdn1sP0YdS)Ni@r)r r'r(rr5 SO_RCVBUF SO_SNDBUF)rBrdrrrrtestSocketBufferSizesz!BasicRDSTest.testSocketBufferSizeN)rGrHrIr7rrrrrrrsrcseZdZdddZfddZddZdd Zd d Zd d Ze e j dddZ e e j dddZ ddZ ddZddZddZZS)RDSTestrcCstj||ddSr)rrNrrrrrNszRDSTest.__init__cstt|_dSr.)rMrCrOryZevtrArUrrrCs z RDSTest.setUpcCs2|j|j\}}||j|||j|dSr.)r=rrdrrrrBrrrrrtestSendAndRecvszRDSTest.testSendAndRecvcCs"d|_|j|jdt|jfdSNrrrrr/rr?rArrr_testSendAndRecvszRDSTest._testSendAndRecvcCsH|j|jtj\}}||j||j|j\}}||j|dSr.)r=rrdr MSG_PEEKrrrrrrtestPeekszRDSTest.testPeekcCs"d|_|j|jdt|jfdSrrrArrr _testPeekszRDSTest._testPeekrecvmsgcCs(|j|j\}}}}||j|dSr.)r=rrdrr)rBrancdataZ msg_flagsrrrrtestSendAndRecvMsgszRDSTest.testSendAndRecvMsgsendmsgcCs&d|_|j|jgddt|jfdS)Ns<hello hello hello hello hello hello hello hello hello hello rr)rrrrr?rArrr_testSendAndRecvMsgszRDSTest._testSendAndRecvMsgcCsD|j|j\}}||j||j|j\}}||j|dSr.)r=rrdrdata1data2rrrrtestSendAndRecvMultiszRDSTest.testSendAndRecvMulticCs@d|_|j|jdt|jfd|_|j|jdt|jfdS)Nsbaconrsegg)rrr/rr?rrArrr_testSendAndRecvMultiszRDSTest._testSendAndRecvMulticCsLt|jgggd\}}}||j||j|j\}}||j|dS)Ng@)selectr=rrrdrr)rBrrr]rrrrr testSelectszRDSTest.testSelectcCs"d|_|j|jdt|jfdS)NsselectrrrArrr _testSelectszRDSTest._testSelect)r)rGrHrIrNrCrrrrrr rrrrrrrYrrrUrrs      rz'QIPCRTR sockets required for this test.c@s<eZdZddZddZddZddZd d Zd d Zd S)BasicQIPCRTRTestcCs tjdSr.)r r,rArrrr7 sz%BasicQIPCRTRTest.testCrucialConstantscCs4ttjtj}Wdn1s&0YdSr.)r r,r!rrrrr sz!BasicQIPCRTRTest.testCreateSocketcCsHttjtj$}||ddWdn1s:0YdSNrpr)r r,r!rrrrrr testUnbound szBasicQIPCRTRTest.testUnboundcCs^ttjtj:}tj||dd||ddWdn1sP0YdS)Nrrrp)r r,r!rr>rassertNotEqualrrrr testBindSock szBasicQIPCRTRTest.testBindSockcCsHttjtj$}|jttj|ddWdn1s:0YdS)Nrr)r r,r!r'rrr>rrrrtestInvalidBindSock sz$BasicQIPCRTRTest.testInvalidBindSockcCsRttjtj.}|d||ddWdn1sD0YdS)N){rrpr)r r,r!rrrrrrrtestAutoBindSock s z!BasicQIPCRTRTest.testAutoBindSockN) rGrHrIr7rrrrrrrrrrs rc@s,eZdZddZddZddZddZd S) BasicVSOCKTestcCs tjdSr.)r rrArrrr7 sz#BasicVSOCKTest.testCrucialConstantscCs4tjtjtjtjtjtjtjtjdSr.) r SO_VM_SOCKETS_BUFFER_SIZESO_VM_SOCKETS_BUFFER_MIN_SIZESO_VM_SOCKETS_BUFFER_MAX_SIZErVMADDR_PORT_ANYVMADDR_CID_HOSTVM_SOCKETS_INVALID_VERSIONrrArrrtestVSOCKConstants# sz!BasicVSOCKTest.testVSOCKConstantscCs4ttjtj}Wdn1s&0YdSr.)r rr2rrrrr- szBasicVSOCKTest.testCreateSocketcCsttjtj}|tjtj}|tjtj}|tjtj}|tjtj|d|tjtj|d|tjtj|d||d|tjtj||d|tjtj||d|tjtjWdn1s0YdSNr) r rr2rrrrrr)rBrZorig_maxrtZorig_minrrrr1 sD      z#BasicVSOCKTest.testSocketBufferSizeN)rGrHrIr7rrrrrrrr s rz)Bluetooth sockets required for this test.c@sveZdZddZddZeejdkdddZ eejdkd d d Z eejdkpdej d d ddZ dS)BasicBluetoothTestcCsJtjtjtjtjtjdkrFtjtjtj tj dsFtj dS)Nrr) r Z BDADDR_ANYZ BDADDR_LOCALr1r3rrr BTPROTO_HCIZSOL_HCI BTPROTO_L2CAPr BTPROTO_SCOrArrrtestBluetoothConstantsP s  z)BasicBluetoothTest.testBluetoothConstantscCs8ttjtjtj}Wdn1s*0YdSr.)r r1r2r3rrrrtestCreateRfcommSocket^ sz)BasicBluetoothTest.testCreateRfcommSocketrz&windows does not support L2CAP socketscCs8ttjtjtj}Wdn1s*0YdSr.)r r1r(rrrrrtestCreateL2capSocketb sz(BasicBluetoothTest.testCreateL2capSocketz$windows does not support HCI socketscCs8ttjtjtj}Wdn1s*0YdSr.)r r1rrrrrrtestCreateHciSocketg sz&BasicBluetoothTest.testCreateHciSocketrz.windows and freebsd do not support SCO socketscCs8ttjtjtj}Wdn1s*0YdSr.)r r1r(rrrrrtestCreateScoSocketl sz&BasicBluetoothTest.testCreateScoSocketN) rGrHrIrrrrjrrrrrrrrrrrrL s  rc@seZdZd+ddZddZddZdd Zd d Zd d ZddZ ddZ ddZ ddZ ddZ ddZddZddZddZd d!Zd"d#ZeeZejd$d%Zd&d'Zd(d)Zd*S), BasicTCPTestrcCstj||ddSrrrNrrrrrNu szBasicTCPTest.__init__cCs|jd}||tdSr)rrrrrrrrtestRecvx s zBasicTCPTest.testRecvcCs|jtdSr.rrrrArrr _testRecv} szBasicTCPTest._testRecvcCs8|jttd}|jd}||}||tdSNr)rrrrr)rBseg1seg2rrrrtestOverFlowRecv s zBasicTCPTest.testOverFlowRecvcCs|jtdSr.rrArrr_testOverFlowRecv szBasicTCPTest._testOverFlowRecvcCs |jd\}}||tdSr)rrrrrBrrrrr testRecvFrom szBasicTCPTest.testRecvFromcCs|jtdSr.rrArrr _testRecvFrom szBasicTCPTest._testRecvFromcCs@|jttd\}}|jd\}}||}||tdSr)rrrrr)rBrrrrrrrtestOverFlowRecvFrom sz!BasicTCPTest.testOverFlowRecvFromcCs|jtdSr.rrArrr_testOverFlowRecvFrom sz"BasicTCPTest._testOverFlowRecvFromcCs0d}|jd}|sq ||7}q||ddS)Nrrffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff)rrr)rBrreadrrr testSendAll s   zBasicTCPTest.testSendAllcCsd}|j|dS)Nr)rr)rBZ big_chunkrrr _testSendAll szBasicTCPTest._testSendAllcCsP|j}t|tjtj}||j||tj| d}| |t dSr) rrr fromfdr<r2rWrrrrr)rBrKrrrrr testFromFd s    zBasicTCPTest.testFromFdcCs|jtdSr.rrArrr _testFromFd szBasicTCPTest._testFromFdcCs0|j}||j|d}||tdSr)rduprWrrrr)rBrrrrrtestDup s   zBasicTCPTest.testDupcCs|jtdSr.rrArrr_testDup szBasicTCPTest._testDupcCs&|jd}||t|jdSr)rrrrr{rrrrr testShutdown s  zBasicTCPTest.testShutdowncCs|jt|jddSr)rrrshutdownrArrr _testShutdown s zBasicTCPTest._testShutdowncCsXddl}|jt|t|jj|jd|t|jjd|jd|jddS)Nrrpr) rrrrr'rrrUINT_MAXrBrrrr_testShutdown_overflow s    z#BasicTCPTest._testShutdown_overflowcCs|j}|j}|||||jj|t|jjd|j t j t j t j |d}| |j |d}||tdS)Nrr)rrrErr_closedr'rrrr r<r2rWr)rBrrrrrrr testDetach s      zBasicTCPTest.testDetachcCs|jtdSr.rrArrr _testDetach szBasicTCPTest._testDetachN)r)rGrHrIrNrrrrrrrrr r r rrrrrrriZtestShutdown_overflowrrrrrrrrs s,      rc@sFeZdZdddZddZddZdd Zd d Zd d ZddZ dS) BasicUDPTestrcCstj||ddSr)rrNrrrrrN szBasicUDPTest.__init__cCs |jtt}||tdSr.r=rrrrrrrrtestSendtoAndRecv szBasicUDPTest.testSendtoAndRecvcCs|jtdt|jfdSrrr/rrr?rArrr_testSendtoAndRecv szBasicUDPTest._testSendtoAndRecvcCs$|jtt\}}||tdSr.r=rrrrrrrrr szBasicUDPTest.testRecvFromcCs|jtdt|jfdSrrrArrrr szBasicUDPTest._testRecvFromcCs|t|jjddSNrr'rr=rrArrrtestRecvFromNegative sz!BasicUDPTest.testRecvFromNegativecCs|jtdt|jfdSrrrArrr_testRecvFromNegative sz"BasicUDPTest._testRecvFromNegativeN)r rGrHrIrNrrrrr#r$rrrrr s rc@sFeZdZdddZddZddZdd Zd d Zd d ZddZ dS)BasicUDPLITETestrcCstj||ddSr)rrNrrrrrN szBasicUDPLITETest.__init__cCs |jtt}||tdSr.rrrrrr sz"BasicUDPLITETest.testSendtoAndRecvcCs|jtdt|jfdSrrrArrrr sz#BasicUDPLITETest._testSendtoAndRecvcCs$|jtt\}}||tdSr.r rrrrr szBasicUDPLITETest.testRecvFromcCs|jtdt|jfdSrrrArrrr szBasicUDPLITETest._testRecvFromcCs|t|jjddSr!r"rArrrr#" sz%BasicUDPLITETest.testRecvFromNegativecCs|jtdt|jfdSrrrArrrr$& sz&BasicUDPLITETest._testRecvFromNegativeN)rr%rrrrr& s r&cseZdZejZfddZddZdZddZ dd Z d d Z d d Z dZ dD]Ze eeedOZ qNdZdZdZdddZZS)SendrecvmsgBasecst|_tdSr.)rOry misc_eventrMrCrArUrrrCK s zSendrecvmsgBase.setUpcCs |j|Sr.)cli_sockrrrrr sendToServerO szSendrecvmsgBase.sendToServerrcGs|jj||jt|dSr.)r)rsendmsg_to_server_defaultsrrBrSrrrsendmsgToServerW szSendrecvmsgBase.sendmsgToServercGs |j|g|R}|||Sr.)rregisterRecvmsgResult)rBrrdrSresultrrr doRecvmsg_ s zSendrecvmsgBase.doRecvmsgcCsdSr.rrBr/rrrr.i sz%SendrecvmsgBase.registerRecvmsgResultcCs|||dSr.rrBZaddr1Zaddr2rrrcheckRecvmsgAddresso sz#SendrecvmsgBase.checkRecvmsgAddressr) MSG_CTRUNCMSG_OOBNc Cs|j}|j}|r&||jO}||jO}n|durB||jO}||jO}||M}||M}||O}||O}||@|@}|rtd|||B|@} ||| @|| @dS)Nz6contradictory set, unset requirements for flags {0:#x})msg_flags_common_setmsg_flags_common_unsetmsg_flags_eor_indicatormsg_flags_non_eor_indicator Exceptionr r) rBreorcheckset checkunsetignoreZ defaultsetZ defaultunsetZinbothrrrr checkFlags s&      zSendrecvmsgBase.checkFlags)Nrrr)rGrHrIrLOOPBACK_TIMEOUT fail_timeoutrCr*r+r-r0r.r4r8rrr r7r9r:r@rYrrrUrr'D s  r'c@seZdZddZdS)RecvmsgIntoMixincGsht|}|j|gg|R}||||dd||d|t|d|df|ddSr)r recvmsg_intor.assertGreaterEqualassertLessEqualr)rBrrdrSbufr/rrrr0 s  zRecvmsgIntoMixin.doRecvmsgN)rGrHrIr0rrrrrC srCcs eZdZefddZZS)SendrecvmsgDgramFlagsBasecstjtjBSr.)rMr:r MSG_TRUNCrArUrrr: sz5SendrecvmsgDgramFlagsBase.msg_flags_non_eor_indicator)rGrHrIpropertyr:rYrrrUrrH srHcs eZdZefddZZS)SendrecvmsgSCTPFlagsBasecstjtjBSr.)rMr9r MSG_EORrArUrrr9 sz0SendrecvmsgSCTPFlagsBase.msg_flags_eor_indicator)rGrHrIrJr9rYrrrUrrK srKc@s8eZdZeddZeddZeddZddZd S) SendrecvmsgConnectionlessBasecCs|jSr.)r=rArrr serv_sock sz'SendrecvmsgConnectionlessBase.serv_sockcCs|jSr.)rrArrrr) sz&SendrecvmsgConnectionlessBase.cli_sockcCsggd|jfSr)rrArrrr+ sz8SendrecvmsgConnectionlessBase.sendmsg_to_server_defaultscCs|j||jSr.)r)r/rrrrrr* sz*SendrecvmsgConnectionlessBase.sendToServerN)rGrHrIrJrNr)r+r*rrrrrM s   rMc@s,eZdZeddZeddZddZdS)SendrecvmsgConnectedBasecCs|jSr.)rrArrrrN sz"SendrecvmsgConnectedBase.serv_sockcCs|jSr.)rrArrrr) sz!SendrecvmsgConnectedBase.cli_sockcCsdSr.rr3rrrr4 sz,SendrecvmsgConnectedBase.checkRecvmsgAddressN)rGrHrIrJrNr)r4rrrrrO s   rOcseZdZfddZZS)SendrecvmsgServerTimeoutBasecst|j|jdSr.)rMrCrNrrBrArUrrrC s z"SendrecvmsgServerTimeoutBase.setUprrrrUrrP srPc@seZdZddZddZddZddZd d Zd d Zd dZ ddZ ddZ ddZ ddZ ddZddZddZeedddZejd d!Zd"d#Zd$d%Zd&d'Zd(d)Zd*S)+ SendmsgTestscCs||jtttdSr.rrNrrrrArrr testSendmsg szSendmsgTests.testSendmsgcCs||tgttdSr.rr-rrrArrr _testSendmsg szSendmsgTests._testSendmsgcCs||jtttdSr.rRrArrrtestSendmsgDataGenerator sz%SendmsgTests.testSendmsgDataGeneratorcCs&||ddtfDttdS)Ncss|] }|VqdSr.rrrrrr rz9SendmsgTests._testSendmsgDataGenerator..rTrArrr_testSendmsgDataGenerator sz&SendmsgTests._testSendmsgDataGeneratorcCs||jtttdSr.rRrArrrtestSendmsgAncillaryGenerator sz*SendmsgTests.testSendmsgAncillaryGeneratorcCs(||tgdddDttdS)Ncss|] }|VqdSr.rrrrrr rz>SendmsgTests._testSendmsgAncillaryGenerator..rrTrArrr_testSendmsgAncillaryGenerator sz+SendmsgTests._testSendmsgAncillaryGeneratorcCs||jtttdSr.rRrArrrtestSendmsgArray# szSendmsgTests.testSendmsgArraycCs$||tdtgttdS)NB)rr-arrayrrrArrr_testSendmsgArray' szSendmsgTests._testSendmsgArraycCs||jtttdSr.rRrArrrtestSendmsgGather+ szSendmsgTests.testSendmsgGathercCs.||tddtddgttdSNrrTrArrr_testSendmsgGather/ szSendmsgTests._testSendmsgGathercCs||jdddSNrdonerrNrrArrrtestSendmsgBadArgs2 szSendmsgTests.testSendmsgBadArgscCs|t|jj|t|jd|t|jt|t|jtg|t|jttg|t|jtgt|t|jtggt|t|jtggdt|ddS)Nsnot in an iterablerrb)r'rr)rr-objectrr*rArrr_testSendmsgBadArgs6 s.         z SendmsgTests._testSendmsgBadArgscCs||jdddSrarcrArrrtestSendmsgBadCmsgH szSendmsgTests.testSendmsgBadCmsgcCs|t|jtgtg|t|jtgtddfg|t|jtgdtdfg|t|jtgddtfg|t|jtgdg|t|jtgdg|ddS)Nrdata)rr)rrrhr7rbr'rr-rrer*rArrr_testSendmsgBadCmsgL s&       z SendmsgTests._testSendmsgBadCmsg CMSG_SPACEcCs||jdddSrarcrArrrtestSendmsgBadMultiCmsg[ sz$SendmsgTests.testSendmsgBadMultiCmsgcCs@|t|jtggd|t|jtgdtg|ddS)NrrrrbrirArrr_testSendmsgBadMultiCmsga s    z%SendmsgTests._testSendmsgBadMultiCmsgcCs||jdddSrarcrArrrtestSendmsgExcessCmsgRejecti sz(SendmsgTests.testSendmsgExcessCmsgRejectcCsbttdsT|t"}|tgddgWdn1s<0Y||jj| ddS)Nrkrmrb) r r r'rr-r assertIsNoner0rcr*rBr1rrr_testSendmsgExcessCmsgRejectn s   0z)SendmsgTests._testSendmsgExcessCmsgRejectcCsdSr.rrArrrtestSendmsgAfterClosev sz"SendmsgTests.testSendmsgAfterClosecCs |j|t|jtgdSr.)r)rr'rr-rrArrr_testSendmsgAfterClosez s z#SendmsgTests._testSendmsgAfterCloseN)rGrHrIrSrUrVrWrXrYrZr]r^r`rdrfrgrjrr rlrrnrorrrsrtrrrrrQ s,  rQc@sReZdZddZddZddZddZeej d vd d d Z e j d dZ dS)SendmsgStreamTestscCs||jtttdSr.rRrArrrtestSendmsgExplicitNoneAddr sz.SendmsgStreamTests.testSendmsgExplicitNoneAddrcCs"||tggddttdSrrTrArrr_testSendmsgExplicitNoneAddr sz/SendmsgStreamTests._testSendmsgExplicitNoneAddrcCs.||jdd||jj|jddSNraaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaar7rrNrrr(rrBrArrrtestSendmsgTimeout sz%SendmsgStreamTests.testSendmsgTimeoutc Csz||jdz|dgqWnDtjy4Yn<tyd}z|jtjkrPWYd}~nd}~00|dW|j n |j 0dS)NQ?rysocket.timeout not raised) r)rr-r r7rrcENOMEMr#r(rnrBrrrr_testSendmsgTimeout s   z&SendmsgStreamTests._testSendmsgTimeout>rz.Tr) rrrrNrDrr4rr@rrrrtestRecvmsgIntoGenerator s   z)RecvmsgIntoTests.testRecvmsgIntoGeneratorcCs|tdSr.rrArrr_testRecvmsgIntoGenerator sz*RecvmsgIntoTests._testRecvmsgIntoGeneratorcCsxtddgtt}|j|g\}}}}||tt||t|||j||g|j |dddS)Nr[rTr) r\rrrNrDrtobytesr4rr@rrrrtestRecvmsgIntoArray s z%RecvmsgIntoTests.testRecvmsgIntoArraycCs|tdSr.rrArrr_testRecvmsgIntoArray sz&RecvmsgIntoTests._testRecvmsgIntoArraycCstd}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) rrNrD memoryviewrrr4rr@)rBb1b2Zb3rrrrrrrtestRecvmsgIntoScatter s  z'RecvmsgIntoTests.testRecvmsgIntoScattercCs|ddS)Nr)r*rArrr_testRecvmsgIntoScatter sz(RecvmsgIntoTests._testRecvmsgIntoScatterN) rGrHrIrrrrrrrrrrrrr s  rc@s`eZdZz ddlZWney*dZYn0edejZee dddZ ee ddd Z dS) CmsgMacroTestsrNiCMSG_LENcCs|jtdd}ttdtt|d|}|tdtdjd|D]2}t|}||td|| ||jqT| t tjd| t tj|| t tjt j dS)Nrrpr:rr)socklen_t_limitr rlistr"rhr\itemsizerrFr'rrrmaxsize)rBtoobigrInr/rrr testCMSG_LEN s zCmsgMacroTests.testCMSG_LENrkcCs|jtdd}ttdtt|d|}td}||tdjd|D]T}t|}|||||t ||||t d| ||j|}qX| t tjd| t tj|| t tjt jdS)Nrprrr:rr)rr rkrr"rhr\rrErrFr'rrrr)rBrrIZlastrr/rrrtestCMSG_SPACE s   zCmsgMacroTests.testCMSG_SPACE) rGrHrIrrrminrrr rrrrrrr s     rc@sHeZdZdZddZddZddZdd Zd d ZddddZ ddZ ddZ ddZ ddZ eedddZejddZddZdd Zeejd!kd"eed#eedd$d%Zejeejd!kd"eed#d&d'Zeejd!kd"eed#eedd(d)Zejeejd!kd"eed#d*d+Zd,d-Zeejd!kd.d/d0Zd1d2Z d3d4Z!d5d6Z"eedd7d8Z#e#jd9d:Z$ded;d<Z%d=d>Z&d?d@Z'dAdBZ(dCdDZ)dEdFZ*dGdHZ+dIdJZ,dKdLZ-dMdNZ.dOdPZ/dfdQdRZ0dSdTZ1dUdVZ2dWdXZ3dYdZZ4d[d\Z5d]d^Z6d_d`Z7dadbZ8dcS)g SCMRightsTesticCs\g}t|D]J}t\}}|tj||tj|t|t| | |q |Sr.) r"rmkstemprWrrrwriterencodeappend)rBrfdsr:rKrrrrnewFDs6 s   zSCMRightsTest.newFDscCsBt|D]4\}}t|dtj|t|dt|qdS)Nrr) enumeraterlseekSEEK_SETrr rr)rBrrrKrrrcheckFDsB szSCMRightsTest.checkFDscCs||j|dSr.)rWcloseRecvmsgFDsr1rrrr.I sz#SCMRightsTest.registerRecvmsgResultcCsn|dD]`\}}}|tjkr|tjkrtd}||dt|t||j|D]}t|qXqdS)Nrpr:) r r5 SCM_RIGHTSr\ frombytesrrrr)rBZrecvmsg_result cmsg_level cmsg_type cmsg_datarrKrrrrL s  zSCMRightsTest.closeRecvmsgFDsc Cs8||tgtjtjtd||fgttdS)Nr:) rr-rr r5rr\rr)rBrrrrcreateAndSendFDsX szSCMRightsTest.createAndSendFDsrprcCs|\}}}}||t|||j|j|dtj|d||t| t ||t d} |D]`} || t | \} } } || tj || tj|| t|t | td| | qd|t | ||| dS)NTr<r>r?r:r)rrr4rr@r r5rrrFrr\tupler5rr SIZEOF_INTrr)rBZnumfdsr/maxcmsgs ignoreflagsrrrrritemrrrrrrcheckRecvmsgFDsb s&         zSCMRightsTest.checkRecvmsgFDscCs |d||jttddS)Nrprrr0rNrrrArrrtestFDPassSimple} szSCMRightsTest.testFDPassSimplec Cs<||tgtjtjtd|dfgt tdS)Nr:rp) rr-rr r5rr\rrrrArrr_testFDPassSimple szSCMRightsTest._testFDPassSimplecCs |d||jttddS)Nr.rrrArrrtestMultipleFDPass sz SCMRightsTest.testMultipleFDPasscCs|ddSNr.rrArrr_testMultipleFDPass sz!SCMRightsTest._testMultipleFDPassrkc Cs*|d||jtttdtdSr)rr0rNrrr rkrrArrrtestFDPassCMSG_SPACE s  z"SCMRightsTest.testFDPassCMSG_SPACEcCs|ddSrrrArrr_testFDPassCMSG_SPACE sz#SCMRightsTest._testFDPassCMSG_SPACEc Cs0|jd||jtttdttjddS)Nrpr.r) rr0rNrrr rrr5rArrrtestFDPassCMSG_LEN s  z SCMRightsTest.testFDPassCMSG_LENcCs|ddSrrrArrr_testFDPassCMSG_LEN sz!SCMRightsTest._testFDPassCMSG_LENr?zskipping, see issue #12958zskipping, see issue #22397cCs$|jd||jttddddS)Nrr)rrrArrrtestFDPassSeparate sz SCMRightsTest.testFDPassSeparatec CsX|d\}}||tgtjtjtd|gftjtjtd|gfgttdSNrr: rrr-rr r5rr\rrBZfd0fd1rrr_testFDPassSeparate s   z!SCMRightsTest._testFDPassSeparatec Cs@d}|j|||jtttttt|dtj ddS)Nr)rr) rr0rNrrr rkrrr5)rBZnum_fdsrrrtestFDPassSeparateMinSpace s z(SCMRightsTest.testFDPassSeparateMinSpacec CsX|d\}}||tgtjtjtd|gftjtjtd|gfgttdSrrrrrr_testFDPassSeparateMinSpace s   z)SCMRightsTest._testFDPassSeparateMinSpacec Csfz||g|}Wn>tyP}z&||jt||g}WYd}~n d}~00||t|dSr.)r-rrrcrgrr)rBrrrrrrrsendAncillaryIfPossible s "z%SCMRightsTest.sendAncillaryIfPossiblezsee issue #24725cCs&|jd||jttdtjddS)Nrrr)rr0rNrrr r5rArrrtestFDPassEmpty s zSCMRightsTest.testFDPassEmptycCs|ttjtjdfgdSNr)rrr r5rrArrr_testFDPassEmpty s zSCMRightsTest._testFDPassEmptycCs||jttd\}}}}||t|||j|j|dtj d| t|d|D]6\}}}||tj ||tj | t|tq\dS)NrTrrp)r0rNrrrr4rr@r r5rFr5r assertLessrrBrrrrrrrrrrtestFDPassPartialInt s  z"SCMRightsTest.testFDPassPartialIntc Cs4|ttjtjtd|jgddfgdS)Nr:r)rrr r5rr\badfdrrArrr_testFDPassPartialIntsz#SCMRightsTest._testFDPassPartialIntc Cs||jttd\}}}}||t|||j|j|dtj d| t|dt d}|D]J\}}}||tj ||tj ||dt|t||jqf| t|d||dS)NrTrrr:)r0rNrrrr4rr@r r5rFr\r5rrrr) rBrrrrrrrrrrrtestFDPassPartialIntInMiddle s     z*SCMRightsTest.testFDPassPartialIntInMiddlec CsZ|d\}}|ttjtjtd||jgddftjtjtd|gfgdS)Nrr:r) rrrr r5rr\rrrrrr_testFDPassPartialIntInMiddles z+SCMRightsTest._testFDPassPartialIntInMiddlecCsJ|\}}}}||t|||j||g|j|dtj|ddS)NTr<r=r?)rrr4rr@r r5)rBr/rrrrrrrrcheckTruncatedHeader)s    z"SCMRightsTest.checkTruncatedHeadercCs"|j||jtttjddSNrrr0rNrrr r5rArrrtestCmsgTruncNoBufSize3sz$SCMRightsTest.testCmsgTruncNoBufSizecCs|ddSrrrArrr_testCmsgTruncNoBufSize<sz%SCMRightsTest._testCmsgTruncNoBufSizecCs$|j||jttdtjddS)Nrrr rArrrtestCmsgTrunc0?szSCMRightsTest.testCmsgTrunc0cCs|ddSrrrArrr_testCmsgTrunc0DszSCMRightsTest._testCmsgTrunc0cCs|||jttddSr)rr0rNrrrArrrtestCmsgTrunc1JszSCMRightsTest.testCmsgTrunc1cCs|ddSrrrArrr_testCmsgTrunc1MszSCMRightsTest._testCmsgTrunc1cCs"|||jtttddSr)rr0rNrrrrArrrtestCmsgTrunc2IntPszSCMRightsTest.testCmsgTrunc2IntcCs|ddSrrrArrr_testCmsgTrunc2IntWsz SCMRightsTest._testCmsgTrunc2Intc Cs(|||jtttdddSr)rr0rNrrr rrArrrtestCmsgTruncLen0Minus1Zs z%SCMRightsTest.testCmsgTruncLen0Minus1cCs|ddSrrrArrr_testCmsgTruncLen0Minus1^sz&SCMRightsTest._testCmsgTruncLen0Minus1c Cs||jtt|\}}}}||t|||j|j|dtj d|dkr\|gkr\dS|t|d|d\}} } ||tj || tj | t| || t| |td} | | dt| t| | j|| dS)NTr<r=rrpr:)r0rNrrrr4rr@r r5r5rrErFr\rrr) rBancbufmaxdataZmindatarrrrrrrrrrrcheckTruncatedArrayds&   z!SCMRightsTest.checkTruncatedArraycCs|jtddddS)Nrrrrr rrArrrtestCmsgTruncLen0|szSCMRightsTest.testCmsgTruncLen0cCs|ddSrrrArrr_testCmsgTruncLen0sz SCMRightsTest._testCmsgTruncLen0cCs|jtdddddS)NrrprrrArrrtestCmsgTruncLen0Plus1sz$SCMRightsTest.testCmsgTruncLen0Plus1cCs|ddSrrrArrr_testCmsgTruncLen0Plus1sz%SCMRightsTest._testCmsgTruncLen0Plus1cCs|jtttddS)Nrrr rrrArrrtestCmsgTruncLen1s zSCMRightsTest.testCmsgTruncLen1cCs|ddSrrrArrr_testCmsgTruncLen1sz SCMRightsTest._testCmsgTruncLen1cCs(|jtdtddtdddS)NrrprrrArrrtestCmsgTruncLen2Minus1s z%SCMRightsTest.testCmsgTruncLen2Minus1cCs|ddSrrrArrr_testCmsgTruncLen2Minus1sz&SCMRightsTest._testCmsgTruncLen2Minus1N)rpr)r)r)9rGrHrIrrrr.rrrrrrrrr rrrrrrrjrrrrrrrrrrrrrrrrr r r r rrrrrrrrrrrrr r!r"rrrrr. s~                     rc@seZdZdZdZddZd^ddZeed d d d Z e j d dZ eedd d ddZ e j ddZ eejdeed d ddZej ddZd_ddZeed d ddddZej dd Zeedd d ddd!d"Zej d#d$Zeejdeedd d ddd%d&Zej d'd(Zeejdeedd d ddd)d*Zej d+d,Zd`d-d.Zeed d d/d0Zej d1d2Zeed d d3d4Zej d5d6Zeed d d7d8Zej d9d:Zeed d d;d<Z e j d=d>Z!eed d d?d@Z"e"j dAdBZ#eed d dCdDZ$e$j dEdFZ%dadGdHZ&eedd d dddIdJZ'e'j dKdLZ(eedd d dddMdNZ)e)j dOdPZ*eedd d dddQdRZ+e+j dSdTZ,eedd d dddUdVZ-e-j dWdXZ.eedd d dddYdZZ/e/j d[d\Z0d]S)bRFC3542AncillaryTestrrcCs4i}|D]&\}}}|||f|||||f<q|Sr.)r)rBrdrrrrrrancillaryMappings z%RFC3542AncillaryTest.ancillaryMappingrrc Cs|jtjtjd|j||jtt |\}}}}| |t | ||j |j |dtj|d| t|d||dt|d\}} } | |tj| | tj|| t| t| ttd} | | || dd|| d|dS)NrpTrrr:)rNrr r:rKr(rnr0rrrr4rr@r5rrrGrrr\rrErF) rB ancbufsizemaxhoprrrrrrrrrrrr checkHopLimits.        z"RFC3542AncillaryTest.checkHopLimitrKrGcCs|jdddSNrr&)r(rArrrtestRecvHopLimitsz%RFC3542AncillaryTest.testRecvHopLimitcCs$||jj|jd|tdSrrr(rrBr*rrArrr_testRecvHopLimitsz&RFC3542AncillaryTest._testRecvHopLimitrkcCs|jttddS)Nr*)r(r rkrrArrrtestRecvHopLimitCMSG_SPACEsz/RFC3542AncillaryTest.testRecvHopLimitCMSG_SPACEcCs$||jj|jd|tdSrr,rArrr_testRecvHopLimitCMSG_SPACEsz0RFC3542AncillaryTest._testRecvHopLimitCMSG_SPACErcCs|jd|jddSNr)r&r')r( hop_limitrArrrtestSetHopLimitsz$RFC3542AncillaryTest.testSetHopLimitc CsL||jj|jd||tgtjtj t d|j gfgt tdSNrzr:) rr(rrBrr-rr r:rGr\r1rrArrr_testSetHopLimitsz%RFC3542AncillaryTest._testSetHopLimitc CsB|jtjtjd|jtjtjd|j||jt t |\}}}}| |t | ||j |j|dtj|d| t |d||}|tjtjf} | t | ttd} | | || dd|| dd|tjtjf} | t | ttd} | | || dd|| d|dS)NrpTrrr:rr)rNrr r:rKrAr(rnr0rrrr4rr@r5r%rHrr\rrErFrG) rBr&r'rrrrrZancmapZtcdatarZhldatarrrcheckTrafficClassAndHopLimits:           z1RFC3542AncillaryTest.checkTrafficClassAndHopLimitrArHcCs|jdddSr))r5rArrrtestRecvTrafficClassAndHopLimitsz4RFC3542AncillaryTest.testRecvTrafficClassAndHopLimitcCs$||jj|jd|tdSrr,rArrr _testRecvTrafficClassAndHopLimit$sz5RFC3542AncillaryTest._testRecvTrafficClassAndHopLimitcCs|jttdddSNrr*)r5r rkrrArrr)testRecvTrafficClassAndHopLimitCMSG_SPACE)s z>RFC3542AncillaryTest.testRecvTrafficClassAndHopLimitCMSG_SPACEcCs$||jj|jd|tdSrr,rArrr*_testRecvTrafficClassAndHopLimitCMSG_SPACE1sz?RFC3542AncillaryTest._testRecvTrafficClassAndHopLimitCMSG_SPACEcCs|jd|jddSr0r5r1rArrrtestSetTrafficClassAndHopLimit6sz3RFC3542AncillaryTest.testSetTrafficClassAndHopLimitc Csd||jj|jd||tgtjtj t d|j gftjtj t d|j gfgttdSr3)rr(rrBrr-rr r:rHr\ traffic_classrGr1rrArrr_testSetTrafficClassAndHopLimit?sz4RFC3542AncillaryTest._testSetTrafficClassAndHopLimitcCs|jd|jddSr0r;rArrrtestOddCmsgSizeJsz$RFC3542AncillaryTest.testOddCmsgSizec Cs||jj|jdzJ|tgtjtjt d|j g dftjtj t d|j gfg}Wnty}zh||jt|tgtjtjt d|j gftjtj t d|j gfg}||ttWYd}~n d}~00dS)Nrzr:r)rr(rrBr-rr r:rHr\r=rrGr1rrrcrgrr)rBrrrrr_testOddCmsgSizeTs2z%RFC3542AncillaryTest._testOddCmsgSizecCs|jtjtjd|j|dur*dn|f}|j|jtt g|R\}}}}| |t | ||j | |g|j |dtj|ddS)NrprTr)rNrr r:rKr(rnr0rrrr4rr@r5)rBr&rrSrrrrrrrcheckHopLimitTruncatedHeaderjs      z1RFC3542AncillaryTest.checkHopLimitTruncatedHeadercCs|jdtjddS)Nr&rrAr r5rArrrr ~sz+RFC3542AncillaryTest.testCmsgTruncNoBufSizecCs$||jj|jd|tdSrr,rArrrr sz,RFC3542AncillaryTest._testCmsgTruncNoBufSizecCs|jdtjddS)NrrBrCrArrrtestSingleCmsgTrunc0sz)RFC3542AncillaryTest.testSingleCmsgTrunc0cCs$||jj|jd|tdSrr,rArrr_testSingleCmsgTrunc0sz*RFC3542AncillaryTest._testSingleCmsgTrunc0cCs|jdddS)Nrpr*)rArArrrtestSingleCmsgTrunc1sz)RFC3542AncillaryTest.testSingleCmsgTrunc1cCs$||jj|jd|tdSrr,rArrr_testSingleCmsgTrunc1sz*RFC3542AncillaryTest._testSingleCmsgTrunc1cCs|jdtddSr8)rArrArrrtestSingleCmsgTrunc2Intsz,RFC3542AncillaryTest.testSingleCmsgTrunc2IntcCs$||jj|jd|tdSrr,rArrr_testSingleCmsgTrunc2Intsz-RFC3542AncillaryTest._testSingleCmsgTrunc2IntcCs|jtddddS)Nrrpr*)rAr rrArrrtestSingleCmsgTruncLen0Minus1sz2RFC3542AncillaryTest.testSingleCmsgTruncLen0Minus1cCs$||jj|jd|tdSrr,rArrr_testSingleCmsgTruncLen0Minus1sz3RFC3542AncillaryTest._testSingleCmsgTruncLen0Minus1cCs|jtjtjd|j||jtt t t d\}}}}| |t | ||j|j|dtjd|t|d|r|d\}}}| |tj| |tj|t|t dS)NrpTrr)rNrr r:rKr(rnr0rrrrrr4rr@r5rFrGrrrrrtestSingleCmsgTruncInDatas     z.RFC3542AncillaryTest.testSingleCmsgTruncInDatacCs$||jj|jd|tdSrr,rArrr_testSingleCmsgTruncInDatasz/RFC3542AncillaryTest._testSingleCmsgTruncInDatac Cs|jtjtjd|jtjtjd|j||jt t |\}}}}| |t | ||j |j|dtj|d| t |d|d\}}} | |tj||tjtjh| t | ttd} | | || dd|| dddS)NrpTrrr:r)rNrr r:rKrAr(rnr0rrrr4rr@r5rrHrGrr\rrErF) rBr&rrrrrrrrrrrrcheckTruncatedSecondHeaders0        z/RFC3542AncillaryTest.checkTruncatedSecondHeadercCs|jtttjddSr)rNr rkrr5rArrrtestSecondCmsgTrunc0s z)RFC3542AncillaryTest.testSecondCmsgTrunc0cCs$||jj|jd|tdSrr,rArrr_testSecondCmsgTrunc0sz*RFC3542AncillaryTest._testSecondCmsgTrunc0cCs|ttddSrrNr rkrrArrrtestSecondCmsgTrunc1sz)RFC3542AncillaryTest.testSecondCmsgTrunc1cCs$||jj|jd|tdSrr,rArrr_testSecondCmsgTrunc1sz*RFC3542AncillaryTest._testSecondCmsgTrunc1cCs|ttdtdSrrQrArrrtestSecondCmsgTrunc2Ints z,RFC3542AncillaryTest.testSecondCmsgTrunc2IntcCs$||jj|jd|tdSrr,rArrr_testSecondCmsgTrunc2Intsz-RFC3542AncillaryTest._testSecondCmsgTrunc2IntcCs"|tttdddSr)rNr rkrrrArrrtestSecondCmsgTruncLen0Minus1s  z2RFC3542AncillaryTest.testSecondCmsgTruncLen0Minus1cCs$||jj|jd|tdSrr,rArrr_testSecondCmsgTruncLen0Minus1sz3RFC3542AncillaryTest._testSecondCmsgTruncLen0Minus1c CsT|jtjtjd|jtjtjd|j||jt t t t t t d\}}}}||t |||j|j|dtjdtjtjh}|d\}}}||tj|||t |t td} | ||| dd|| dd|rD|d\}}}||tj|||t |t ||gdS)NrpTrrr:r)rNrr r:rKrAr(rnr0rrrkrrrr4rr@r5rHrGpopremover\rrErFr) rBrrrrZ cmsg_typesrrrrrrrtestSecomdCmsgTruncInDatas:           z.RFC3542AncillaryTest.testSecomdCmsgTruncInDatacCs$||jj|jd|tdSrr,rArrr_testSecomdCmsgTruncInDataCsz/RFC3542AncillaryTest._testSecomdCmsgTruncInDataN)rr)rr)r)r)1rGrHrIr1r=r%r(rr r+rr-r.r/r2r4r5r6r7r9r:r<r>r?r@rAr r rDrErFrGrHrIrJrKrLrMrNrOrPrRrSrTrUrVrWrZr[rrrrr#s            $                                             #r#c@s eZdZdS)SendrecvmsgUDPTestBaseNrGrHrIrrrrr\Ksr\rc@s eZdZdS)SendmsgUDPTestNr]rrrrr^Psr^rc@s eZdZdS)RecvmsgUDPTestNr]rrrrr_Tsr_rDc@s eZdZdS)RecvmsgIntoUDPTestNr]rrrrr`Xsr`c@seZdZddZdS)SendrecvmsgUDP6TestBasecCs ||dd|dddSr!r2r3rrrr4asz+SendrecvmsgUDP6TestBase.checkRecvmsgAddressNrGrHrIr4rrrrra]srar-rr!c@s eZdZdS)SendmsgUDP6TestNr]rrrrrcfsrcc@s eZdZdS)RecvmsgUDP6TestNr]rrrrrdlsrdc@s eZdZdS)RecvmsgIntoUDP6TestNr]rrrrrersrer:c@s eZdZdS)RecvmsgRFC3542AncillaryUDP6TestNr]rrrrrfxsrfc@s eZdZdS)#RecvmsgIntoRFC3542AncillaryUDP6TestNr]rrrrrgsrgc@s eZdZdS)SendrecvmsgUDPLITETestBaseNr]rrrrrhsrhc@s eZdZdS)SendmsgUDPLITETestNr]rrrrrisric@s eZdZdS)RecvmsgUDPLITETestNr]rrrrrjsrjc@s eZdZdS)RecvmsgIntoUDPLITETestNr]rrrrrksrkc@seZdZddZdS)SendrecvmsgUDPLITE6TestBasecCs ||dd|dddSr!r2r3rrrr4sz/SendrecvmsgUDPLITE6TestBase.checkRecvmsgAddressNrbrrrrrlsrlc@s eZdZdS)SendmsgUDPLITE6TestNr]rrrrrmsrmc@s eZdZdS)RecvmsgUDPLITE6TestNr]rrrrrnsrnc@s eZdZdS)RecvmsgIntoUDPLITE6TestNr]rrrrrosroc@s eZdZdS)#RecvmsgRFC3542AncillaryUDPLITE6TestNr]rrrrrpsrpc@s eZdZdS)'RecvmsgIntoRFC3542AncillaryUDPLITE6TestNr]rrrrrqs rqc@s eZdZdS)SendrecvmsgTCPTestBaseNr]rrrrrrsrrc@s eZdZdS)SendmsgTCPTestNr]rrrrrssrsc@s eZdZdS)RecvmsgTCPTestNr]rrrrrtsrtc@s eZdZdS)RecvmsgIntoTCPTestNr]rrrrrusruc@s eZdZdS)SendrecvmsgSCTPStreamTestBaseNr]rrrrrvsrvz6IPPROTO_SCTP: [Errno 62] Protocol not supported on AIXr<r2rc@s eZdZdS)SendmsgSCTPStreamTestNr]rrrrrwsrwcseZdZfddZZS)RecvmsgSCTPStreamTestc sTztt|Wn<tyN}z$|jtjkr0|dWYd}~n d}~00dSNz4sporadic ENOTCONN (kernel issue?) - see issue #13876)rMrxrrrcENOTCONNrcrBrrUrrrs  z$RecvmsgSCTPStreamTest.testRecvmsgEOFrGrHrIrrYrrrUrrxsrxcseZdZfddZZS)RecvmsgIntoSCTPStreamTestc sTztt|Wn<tyN}z$|jtjkr0|dWYd}~n d}~00dSry)rMr}rrrcrzrcr{rUrrrs  z(RecvmsgIntoSCTPStreamTest.testRecvmsgEOFr|rrrUrr} sr}c@s eZdZdS)SendrecvmsgUnixStreamTestBaseNr]rrrrr~sr~rc@s eZdZdS)SendmsgUnixStreamTestNr]rrrrrsrc@s eZdZdS)RecvmsgUnixStreamTestNr]rrrrr!src@s eZdZdS)RecvmsgIntoUnixStreamTestNr]rrrrr'srr5rc@s eZdZdS)RecvmsgSCMRightsStreamTestNr]rrrrr-src@s eZdZdS)RecvmsgIntoSCMRightsStreamTestNr]rrrrr2srcsFeZdZfddZejZeedr2dZ ddZ n dZ ddZ Z S) InterruptedTimeoutBasecs2tttjdd}|tjtj|dS)NcSsddSrr)signumrrrrrFrz.InterruptedTimeoutBase.setUp..)rMrCrrrW)rBZorig_alrm_handlerrUrrrCCs  zInterruptedTimeoutBase.setUp setitimerg?cCsttj|dSr.)rr ITIMER_REALrBZsecondsrrrsetAlarmRszInterruptedTimeoutBase.setAlarmrcCst|dSr.)rrrrrrrXs) rGrHrIrCrrAr7r r alarm_timerrYrrrUrr>s   r siginterruptrrz+Don't have signal.alarm or signal.setitimercsleZdZfddZddZddZddZd d Zd d Ze e j d ddZ e e j dddZ Z S)InterruptedRecvTimeoutTestcst|j|jdSr.)rMrCr=rr7rArUrrrCes z InterruptedRecvTimeoutTest.setUpc OsdzR||j|t}||i|Wdn1s<0YW|dn |d0dSr)rrr'rrBrrSrTr1rrrcheckInterruptedRecvis   .z/InterruptedRecvTimeoutTest.checkInterruptedRecvcCs||jjddSr)rr=rrArrrtestInterruptedRecvTimeoutssz5InterruptedRecvTimeoutTest.testInterruptedRecvTimeoutcCs||jjtddSr)rr= recv_intorrArrrtestInterruptedRecvIntoTimeoutvsz9InterruptedRecvTimeoutTest.testInterruptedRecvIntoTimeoutcCs||jjddSr)rr=rrArrrtestInterruptedRecvfromTimeoutysz9InterruptedRecvTimeoutTest.testInterruptedRecvfromTimeoutcCs||jjtddSr)rr= recvfrom_intorrArrr"testInterruptedRecvfromIntoTimeout|sz=InterruptedRecvTimeoutTest.testInterruptedRecvfromIntoTimeoutrcCs||jjddSr)rr=rrArrrtestInterruptedRecvmsgTimeoutsz8InterruptedRecvTimeoutTest.testInterruptedRecvmsgTimeoutrDcCs||jjtdgdSr)rr=rDrrArrr!testInterruptedRecvmsgIntoTimeoutsz0YW|dn |d0dSr)r'rrrrrrrcheckInterruptedSends   0z/InterruptedSendTimeoutTest.checkInterruptedSendrrcCs||jjddSr)rrrrArrrtestInterruptedSendTimeoutsz5InterruptedSendTimeoutTest.testInterruptedSendTimeoutcCs||jjd|jdSr)rrr/rrArrrtestInterruptedSendtoTimeouts z7InterruptedSendTimeoutTest.testInterruptedSendtoTimeoutrcCs||jjdgdSr)rrrrArrrtestInterruptedSendmsgTimeoutsz8InterruptedSendTimeoutTest.testInterruptedSendmsgTimeout)rGrHrIrCrrrZrequires_mac_verrrrr rrYrrrUrrs       rc@seZdZddZddZdS) TCPCloserTestcCsh|j\}}||j}t|gggd\}}}|||g||dd||dS)N?rpr)r=rrrrrr)rBrrsdr rr rrr testCloseszTCPCloserTest.testClosecCs |jt|jftddSNr)rrrr?rrrArrr _testCloseszTCPCloserTest._testCloseN)rGrHrIrrrrrrrs rc@sNeZdZdddZddZddZdd Zd d Zd d ZddZ ddZ dS)BasicSocketPairTestrcCstj||ddSr)rrNrrrrrNszBasicSocketPairTest.__init__cCs\||tjttdr*||jtjn||jtj||jtj||j ddS)Nrr) rr r rrrr<rr2rrrrr_check_defaultss  z#BasicSocketPairTest._check_defaultscCs||jdSr.)rrrArrr _testDefaultssz!BasicSocketPairTest._testDefaultscCs||jdSr.)rr=rArrr testDefaultssz BasicSocketPairTest.testDefaultscCs|jd}||tdSr)r=rrrrrrrrs zBasicSocketPairTest.testRecvcCs|jtdSr.)rrrrArrrrszBasicSocketPairTest._testRecvcCs|jtdSr.)r=rrrArrrtestSendszBasicSocketPairTest.testSendcCs|jd}||tdSr)rrrrrrrr _testSends zBasicSocketPairTest._testSendN)r) rGrHrIrNrrrrrrrrrrrrs  rc@seZdZd&ddZddZddZdd Zejd d Z eeZ e e ed d edddddZddZddZddZddZddZddZdd Zd!d"Zd#d$Zd%S)'NonBlockingTCPTestsrcCst|_tj||ddSr)rOryeventrrNrrrrrNs zNonBlockingTCPTests.__init__cCsh||j||dk}|||tdurd|du}t|tjtj}|t|tj@ |dS)N) rr=r getblockingr F_GETFLr O_NONBLOCKbool)rBrr7blockingZ fd_blockingflagrrrassert_sock_timeoutsz'NonBlockingTCPTests.assert_sock_timeoutcCs|jd||jd|jd||jd|jd||jd|jd||jd|jd||jd|jd||jddS)NTFrrr)r=rBrrrArrrtestSetBlockings      z#NonBlockingTCPTests.testSetBlockingcCsdSr.rrArrr_testSetBlocking&sz$NonBlockingTCPTests._testSetBlockingcCsbddl}|j|jkr|d|jd||jd|j|jd||jdS)Nrzneeds UINT_MAX < ULONG_MAXFrrp) rrZ ULONG_MAXrcr=rBrrrprrrrtestSetBlocking_overflow)s   z,NonBlockingTCPTests.testSetBlocking_overflowrAztest needs socket.SOCK_NONBLOCKrcCs4|jttjtjtjB|_||jddSr)r=rr r<r2rArrArrrtestInitNonBlocking8s   z'NonBlockingTCPTests.testInitNonBlockingcCsdSr.rrArrr_testInitNonBlockingBsz(NonBlockingTCPTests._testInitNonBlockingcCs`tdD|jd|j\}}||j||Wdn1sR0YdS)Nr)r8r=rrrWrrprrrrrtestInheritFlagsBlockingEs    z,NonBlockingTCPTests.testInheritFlagsBlockingcCs|jt|jfdSr.rrrr?rArrr_testInheritFlagsBlockingNsz-NonBlockingTCPTests._testInheritFlagsBlockingcCsfd}t|F|jd|j\}}||j|||Wdn1sX0YdS)Ng4@r)r8r=rrrWrrr)rBZdefault_timeoutrrrrrtestInheritFlagsTimeoutQs    z+NonBlockingTCPTests.testInheritFlagsTimeoutcCs|jt|jfdSr.rrArrr_testInheritFlagsTimeout\sz,NonBlockingTCPTests._testInheritFlagsTimeoutcCs|jdt}|t|j\}}Wdn1sB0Yt|}||d|j t |jgggt j \}}}|j|vr| d|j\}}||j||dS)NFrz'Error trying to do accept after select.)r=rBr monotonicr'BlockingIOErrorrrrrnrr LONG_TIMEOUTr#rWrrpr)rBZ start_timerrZdtr rr rrr testAccept_s  ,      zNonBlockingTCPTests.testAcceptcCs |j|jt|jfdSr.)rrrrrr?rArrr _testAcceptus zNonBlockingTCPTests._testAcceptcCs|j\}}||j|d|t|tt }Wdn1sR0Y|j t |gggt j\}}}||vr|d|tt }||t dS)NFz0Error during select call to non-blocking socket.)r=rrWrrBr'rrrrrrnrrrr#r)rBrrrr rr rrrr|s   ,  zNonBlockingTCPTests.testRecvcCs,|jt|jf|j|jtdSr.)rrrr?rrrrrArrrrs zNonBlockingTCPTests._testRecvN)r)rGrHrIrNrrrrrirZ_testSetBlocking_overflowrrhr r requires_linux_versionrrrrrrrrrrrrrrrs*       rc@seZdZdZdZdZdZdZeZ dZ eZ d:dd Z d d Z d d ZddZddZddZddZddZddZddZddZddZd d!Zd"d#Zd$d%Zd&d'Zd(d)Zd*d+Zd,d-Zd.d/Zd0d1Z d2d3Z!d4d5Z"d6d7Z#d8d9Z$dS);FileObjectClassTestCaserrstrictNr rrcCstj||ddSrrrrrrrNsz FileObjectClassTestCase.__init__cCsRddtdD\|_|_|_|_t||jj|j |j |j |j |j d|_dS)NcSsg|] }tqSr)rOryrr:rrrrsz1FileObjectClassTestCase.setUp..r.encodingerrorsnewline)r"evt1evt2 serv_finished cli_finishedrrCrr  read_moderdrrr read_filerArrrrCs zFileObjectClassTestCase.setUpcCs6|j|j||jjd|_t|dSr.)rrnrrrclosedrrErArrrrEs   z FileObjectClassTestCase.tearDowncCs0t||jj|j|j|j|j|jd|_ dS)Nr) rrrr  write_moderdrrr write_filerArrrrs z#FileObjectClassTestCase.clientSetUpcCs6|j|j||jjd|_t|dSr.)rrnrrrrrrrArrrrs   z&FileObjectClassTestCase.clientTearDowncCsx|jd|jd|tj|jjd|t}|jdWdn1sX0Y|dt |j dS)Nrprz!cannot read from timed out object) rrrr r'r r7rrrr0)rBctxrrrtestReadAfterTimeouts    *z,FileObjectClassTestCase.testReadAfterTimeoutcCs.|j|jdd|j|jdS)Nrr)rr write_msgflushrrrArrr_testReadAfterTimeouts z-FileObjectClassTestCase._testReadAfterTimeoutcCs<|jt|jd}|jd}||}|||jdSr_)rr rread_msgr)rB first_segZ second_segrrrr testSmallReads z%FileObjectClassTestCase.testSmallReadcCs|j|j|jdSr.rrrrrArrr_testSmallReadsz&FileObjectClassTestCase._testSmallReadcCs|j}|||jdSr.)rr rrrrrr testFullReads z$FileObjectClassTestCase.testFullReadcCs|j|j|jdSr.)rrrrrArrr _testFullReadsz%FileObjectClassTestCase._testFullReadcCs:t|j}|jd}|sq(||7}q |||jdSr)rrrr r)rBrGcharrrrtestUnbufferedReads    z*FileObjectClassTestCase.testUnbufferedReadcCs|j|j|jdSr.rrArrr_testUnbufferedReadsz+FileObjectClassTestCase._testUnbufferedReadcCs|j}|||jdSr.)rreadlinerrrBlinerrr testReadlines z$FileObjectClassTestCase.testReadlinecCs|j|j|jdSr.rrArrr _testReadline sz%FileObjectClassTestCase._testReadlinecCs&|j|j}|||jdSr.)rrrr rrrrrrtestCloseAfterMakefiles  z.FileObjectClassTestCase.testCloseAfterMakefilecCs|j|j|jdSr.rrArrr_testCloseAfterMakefilesz/FileObjectClassTestCase._testCloseAfterMakefilecCs@|j|jtt}t|jtr.| }| ||jdSr.) rrrrrrrrrdecoderrrrrtestMakefileAfterMakefileCloses   z6FileObjectClassTestCase.testMakefileAfterMakefileClosecCs|j|j|jdSr.rrArrr_testMakefileAfterMakefileClose"sz7FileObjectClassTestCase._testMakefileAfterMakefileClosecCs||jj dSr.)rrrrArrrtestClosedAttr&sz&FileObjectClassTestCase.testClosedAttrcCs||jj dSr.)rrrrArrr_testClosedAttr)sz'FileObjectClassTestCase._testClosedAttrcCs,||jj|j||jj|jdSr.)rrrrrrrrArrrtestAttributes,sz&FileObjectClassTestCase.testAttributescCs,||jj|j||jj|jdSr.)rrrrrrrrArrr_testAttributes0sz'FileObjectClassTestCase._testAttributescCs8|j|t|jj|j|t|jjdSr.)rrr'rrrrrrArrr testRealClose4s  z%FileObjectClassTestCase.testRealClosecCsdSr.rrArrr_testRealClose:sz&FileObjectClassTestCase._testRealClose)r)%rGrHrIrdrrrrrrrrrNrCrErrrrrrrrrrrrrrrrrrrrrrrrrrrsB     rc@s`eZdZdZddZddZddZdd Zd d Zd d Z ddZ ddZ ddZ ddZ dS)!UnbufferedFileObjectClassTestCasercCsL|j}||d|j|jdd|_|j}||d|jdS)NA. r rB. )rrrrrr rrrrtestUnbufferedReadlineJs   z8UnbufferedFileObjectClassTestCase.testUnbufferedReadlinecCs2|jd|j|jd|j|jdS)NrrrrArrr_testUnbufferedReadlineRsz9UnbufferedFileObjectClassTestCase._testUnbufferedReadlinecCsD|j|jd}|||j|j|t|jjddSr)rrrrrrr'rrrrrtestMakefileCloseWs    z3UnbufferedFileObjectClassTestCase.testMakefileClosecCs|j|j|jdSr.rrArrr_testMakefileClose`sz4UnbufferedFileObjectClassTestCase._testMakefileClosecCs6t|j}|jt|j}||d|dSr)rrrqrrrr)rBZrefcount_beforeZrefcount_afterrrrtestMakefileCloseSocketDestroyds   z@UnbufferedFileObjectClassTestCase.testMakefileCloseSocketDestroycCsdSr.rrArrr_testMakefileCloseSocketDestroyjszAUnbufferedFileObjectClassTestCase._testMakefileCloseSocketDestroycCs|jd||jtdd||jt|jdd|j |j d|jt|jd}|durt d|jt|jd}td}|j|}||d||d|}|||j||jtdd||jdddS)NFrrrg?rxrp)rrBrrreadintorr rrrrnrrrr)rBrrGrrrrrtestSmallReadNonBlockingqs       z:UnbufferedFileObjectClassTestCase.testSmallReadNonBlockingcCs>|jd|j|j|j|j|jddS)Nr@) rrrrrrrrnrrArrr_testSmallReadNonBlockings    z;UnbufferedFileObjectClassTestCase._testSmallReadNonBlockingcCs"|jd|jr||jdS)Nr)rr serv_skippedrcrArrrtestWriteNonBlockings z6UnbufferedFileObjectClassTestCase.testWriteNonBlockingcCstd|_|jddtj}d}|j|}||dt|D](}|j|}|dur\qp||dq@d|_dS)NFrrrz$failed to saturate the socket buffer) rrrBrrrrrhr")rBZBIGZLIMITrr:rrr_testWriteNonBlockings      z7UnbufferedFileObjectClassTestCase._testWriteNonBlockingN)rGrHrIrdrrrrrrrrrrrrrrr>s   rc@seZdZdZdS)#LineBufferedFileObjectClassTestCaserpNrGrHrIrdrrrrrsrc@seZdZdZdS)$SmallBufferedFileObjectClassTestCaserNrrrrrr sr c@s&eZdZdZedZdZeZdZ dS)"UnicodeReadFileObjectClassTestCaserrrr+N rGrHrIrrrrrrrrrrrr s  r c@s&eZdZdZeZdZedZdZ dS)#UnicodeWriteFileObjectClassTestCaser rrr+N) rGrHrIrrrrrrrrrrrr s  r c@s,eZdZdZedZdZedZdZ dS)'UnicodeReadWriteFileObjectClassTestCaserrrr+Nr rrrrr s   r c@seZdZddZdS)NetworkConnectionTestcCstt|jf|_|j|_dSr.)r create_connectionrr?rrrArrrrsz!NetworkConnectionTest.clientSetUpN)rGrHrIrrrrrrsrc@s eZdZdS) BasicTCPTest2Nr]rrrrrsrc@sDeZdZGdddejZejddZddZddZ d d Z d S) NetworkConnectionNoServerc@seZdZddZdS)z$NetworkConnectionNoServer.MockSocketcGstddS)Nz timed out)r r7r,rrrrsz,NetworkConnectionNoServer.MockSocket.connectN)rGrHrIrrrrr MockSocketsrccs,tj}|jt_zdVW|t_n|t_0dSr.)r r)rBZ old_socketrrrmocked_socket_modules z.NetworkConnectionNoServer.mocked_socket_modulecCsrt}ttjtj}||j|t}| t |fWdn1sR0Y| |j j t jdSr.)rrr r<r2rWrr'rrrrr0rcZ ECONNREFUSED)rBr?rr1rrr test_connects   ,z&NetworkConnectionNoServer.test_connectcCs\t}|t}tt|fWdn1s60Yt}||j j |dSr.) rrr'rr rrZget_socket_conn_refused_errsrr0rc)rBr?r1Zexpected_errnosrrrtest_create_connections  ,z0NetworkConnectionNoServer.test_create_connectionc Cs|xzttdfWnJtjy0YnBtyf}z tjsP|jtj krRWYd}~nd}~00| dWdn1s0YdS)Nrr~) rr rrr7rrrrcZ EAFNOSUPPORTr#rrrrtest_create_connection_timeouts z8NetworkConnectionNoServer.test_create_connection_timeoutN) rGrHrIr r contextlibcontextmanagerrrrrrrrrrs  rc@sveZdZdddZddZddZdd ZeZd d ZeZ d d Z eZ ddZ eZ ddZeZddZeZddZdS)NetworkConnectionAttributesTestrcCstj||dt|dSrrrrrrrN sz(NetworkConnectionAttributesTest.__init__cCst|_dSr.)rr source_portrArrrr$sz+NetworkConnectionAttributesTest.clientSetUpcCs|jd|_t|dSr.rrArrrr's z.NetworkConnectionAttributesTest.clientTearDowncCs|j\}}|dSr.)r=rrrrrr _justAccept,sz+NetworkConnectionAttributesTest._justAcceptcCs:tjt|jftjd|_||jj| |jj ddS)Nrzr) r rrr?rrArrWrrrrArrr _testFamily1s  z+NetworkConnectionAttributesTest._testFamilycCsJtjt|jftjd|jfd|_||jj | |j d|jdS)Nr+)r7source_addressrp) r rrr?rrArrrWrrrrArrr_testSourceAddress8s  z2NetworkConnectionAttributesTest._testSourceAddressc Csn|tdutdz.tt|jf|_||jj Wtdn td0| |j ddS)Nr7 rr r5r6rrr?rrWrrrrArrr_testTimeoutDefaultBs z3NetworkConnectionAttributesTest._testTimeoutDefaultc Csr|tdutdz2tjt|jfdd|_||jj Wtdn td0| |j ddSNrzrrArrr_testTimeoutNoneNs z0NetworkConnectionAttributesTest._testTimeoutNonecCs,tjt|jfdd|_||jddSr!)r rrr?rrrrArrr_testTimeoutValueNamedZsz6NetworkConnectionAttributesTest._testTimeoutValueNamedcCs8tt|jfd|_||jj||jddS)Nr") r rrr?rrWrrrrArrr_testTimeoutValueNonamed_sz8NetworkConnectionAttributesTest._testTimeoutValueNonamedN)r)rGrHrIrNrrrZ testFamilyrZtestSourceAddressrZtestTimeoutDefaultr ZtestTimeoutNoner#ZtestTimeoutValueNamedr$ZtestTimeoutValueNonamedr%rrrrrs     rc@sBeZdZdddZddZddZdd ZeZd d Zd d Z dS)NetworkConnectionBehaviourTestrcCstj||dt|dSrrrrrrrNgsz'NetworkConnectionBehaviourTest.__init__cCsdSr.rrArrrrksz*NetworkConnectionBehaviourTest.clientSetUpcCs|jd|_t|dSr.rrArrrrns z-NetworkConnectionBehaviourTest.clientTearDowncCs2|j\}}||jtd|ddS)Nrdone!)r=rrWrrrrrrrrtestInsideTimeoutss  z0NetworkConnectionBehaviourTest.testInsideTimeoutcCs0tt|jf|_}|d}||ddS)Nrr')r rrr?rrr)rBrrrrr_testInsideTimeoutzs z1NetworkConnectionBehaviourTest._testInsideTimeoutcs4tjt|jfdd|_|tjfdddS)Nrprzcs dS)Nr)rrrrrrrzDNetworkConnectionBehaviourTest._testOutsideTimeout..)r rrr?rr'r7rArr*r_testOutsideTimeoutsz2NetworkConnectionBehaviourTest._testOutsideTimeoutN)r) rGrHrIrNrrr(ZtestOutsideTimeoutr)r+rrrrr&es r&c@s6eZdZddZddZeeeddddZ d S) TCPTimeoutTestcs fdd}tj|ddS)NcsjdjdSr)r=rrrrArr raise_timeouts z4TCPTimeoutTest.testTCPTimeout..raise_timeoutz*Error generating a timeout exception (TCP)r'r r7rBr-rrArtestTCPTimeouts  zTCPTimeoutTest.testTCPTimeoutcCsxd}z|jd|j}WnFtjy<|dYn*tyPd}Yn|dYn0|st|ddS)NFrz%caught timeout instead of error (TCP)Tz!caught unexpected exception (TCP)z3accept() returned success when we did not expect it)r=rrr r7r#rrBokr_rrrtestTimeoutZeros  zTCPTimeoutTest.testTimeoutZerorztest needs signal.alarm()c s|jdGdddtfdd}ttj|}zzzztd|j}Wn\tjyr| dYnJyYn:| dt ddt fYn 0| d Wtd n td 0Wny| d Yn0Wttj|nttj|0dS) Nrc@s eZdZdS)z4TCPTimeoutTest.testInterruptedTimeout..AlarmNr]rrrrAlarmsr4csdSr.r)rrr4rr alarm_handlersz.alarm_handlerrzcaught timeout instead of Alarmz3caught other exception instead of Alarm: %s(%s): %sznothing caughtrzgot Alarm in wrong place)r=rr;rrrrr r7r#rrexc_info traceback format_exc)rBr6rr_rr5rtestInterruptedTimeouts*       z%TCPTimeoutTest.testInterruptedTimeoutN) rGrHrIr0r3rrhr rr:rrrrr,s  r,c@seZdZddZddZdS)UDPTimeoutTestcs fdd}tj|ddS)NcsjdjddSNrrr=rrrrArrr-s z4UDPTimeoutTest.testUDPTimeout..raise_timeoutz*Error generating a timeout exception (UDP)r.r/rrArtestUDPTimeouts  zUDPTimeoutTest.testUDPTimeoutcCszd}z|jd|jd}WnFtjy>|dYn*tyRd}Yn|dYn0|sv|ddS)NFrrz%caught timeout instead of error (UDP)Tz!caught unexpected exception (UDP)1recv() returned success when we did not expect itr=rrr r7r#rr1rrrr3s  zUDPTimeoutTest.testTimeoutZeroN)rGrHrIr>r3rrrrr;sr;c@seZdZddZddZdS)UDPLITETimeoutTestcs fdd}tj|ddS)NcsjdjddSr<r=rrArrr-s z.raise_timeoutz.Error generating a timeout exception (UDPLITE)r.r/rrArtestUDPLITETimeouts  z%UDPLITETimeoutTest.testUDPLITETimeoutcCszd}z|jd|jd}WnFtjy>|dYn*tyRd}Yn|dYn0|sv|ddS)NFrrz)caught timeout instead of error (UDPLITE)Tz%caught unexpected exception (UDPLITE)r?r@r1rrrr3s  z"UDPLITETimeoutTest.testTimeoutZeroN)rGrHrIrBr3rrrrrAsrAc@seZdZddZddZdS)TestExceptionscCsJ|ttt|ttjt|ttjt|ttjtdSr.)r issubclassrr;r r(r)r7rArrrtestExceptionTreesz TestExceptions.testExceptionTreecCsvttjtjd}ttjtjd|}|||j|t| dWdn1sh0YdS)NrF) r r<r2rrrWrEr'rrB)rBZsock0rrrrtest_setblocking_invalidfds  z)TestExceptions.test_setblocking_invalidfdN)rGrHrIrErFrrrrrCsrCrzLinux specific testc@s8eZdZdZddZddZddZdd Zd d Zd S) TestLinuxAbstractNamespacelc Csd}ttjtj}|||ttjtjj}|||d0}||||| |Wdn1s0YWdn1s0YWdn1s0YdS)Nspython-test-hellor) r rr2rar@rrrr getpeername)rBrs1rWZs3rrrtestLinuxAbstractNamespaces z5TestLinuxAbstractNamespace.testLinuxAbstractNamespacecCs`dd|jd}ttjtj*}|||||Wdn1sR0YdS)Nrhrp) UNIX_PATH_MAXr rr2rarrrBrrrrr testMaxNames z&TestLinuxAbstractNamespace.testMaxNamecCsRdd|j}ttjtj }|t|j|Wdn1sD0YdS)Nh)rMr rr2r'rrarNrrrtestNameOverflowsz+TestLinuxAbstractNamespace.testNameOverflowcCsFttjtj}z&|d||dW|n |0dS)Nz pythontest pythontest)r rr2rarrrrrrr testStrNames  z&TestLinuxAbstractNamespace.testStrNamecCsRttjtj.}|td||dWdn1sD0YdS)NrS)r rr2rarrrrrrrtestBytearrayName&sz,TestLinuxAbstractNamespace.testBytearrayNameN) rGrHrIrMrKrOrRrTrUrrrrrGs   rGztest needs socket.AF_UNIXc@sTeZdZddZddZddZddZd d Zd d Zd dZ ddZ ddZ dS)TestUnixDomaincCsttjtj|_dSr.)r rr2rrArrrrC/szTestUnixDomain.setUpcCs|jdSr.)rrrArrrrE2szTestUnixDomain.tearDownc Cs:z t|WSty4|d|tYn0dS)NzBPathname {0!a} cannot be represented in file system encoding {1!r})rfsencoderrcr rrgetfilesystemencodingrBrrrrencoded5s  zTestUnixDomain.encodedc CsZzt||WnDtyT}z,t|dkr>|d|nWYd}~n d}~00dS)NzAF_UNIX path too longz6Pathname {0!a} is too long to serve as an AF_UNIX path)rrrrrcr )rBrrrrrrra@s zTestUnixDomain.bindcCs||jddS)N)r+N)rrrrArrrrLszTestUnixDomain.testUnboundcCs@tjtj}||j||tj|| |j |dSr.) rrabspathrTESTFNrarrWrrrrYrrr testStrAddrPszTestUnixDomain.testStrAddrcCsFtjtj}||j|||tj || |j |dSr.) rrr[rr\rarrZrWrrrrYrrr testBytesAddrWszTestUnixDomain.testBytesAddrcCsRtjtj}||}||j|dd| tj || |j |dS)Nasciisurrogateescape) rrr[rZTESTFN_UNICODErZrarrrWrrr)rBrrrrrtestSurrogateescapeBind^s  z&TestUnixDomain.testSurrogateescapeBindcCsTtjdur|dtjtj}||j||tj || |j |dS)Nz!No unencodable filename available) rZTESTFN_UNENCODABLErcrrr[rarrWrrrrYrrrtestUnencodableAddrgs   z"TestUnixDomain.testUnencodableAddrN) rGrHrIrCrErZrarr]r^rarbrrrrrV,s   rVc@seZdZdddZddZddZdd ZeZd d ZeZ d d Z ddZ ddZ e Z ddZe ZddZddZddZe ZdS) BufferIOTestrcCstj||ddSrrrrrrrNvszBufferIOTest.__init__cCsZtddgtt}|j|}||tt|}|dtt}||tdSNr[r)r\rrrrrrrBrGrrrrrtestRecvIntoArrayys  zBufferIOTest.testRecvIntoArraycCstt}|j|dSr.rrrrrBrGrrr_testRecvIntoArrayszBufferIOTest._testRecvIntoArraycCsDtd}|j|}||tt|dtt}||tdSr)rrrrrrrerrrtestRecvIntoBytearrays  z"BufferIOTest.testRecvIntoBytearraycCsHtd}|jt|}||tt|dtt}||tdSr)rrrrrrrrerrrtestRecvIntoMemoryviews z#BufferIOTest.testRecvIntoMemoryviewcCs^tddgtt}|j|\}}||tt|}|dtt}||tdSrd)r\rrrrrrrBrGrrrrrrtestRecvFromIntoArrays z"BufferIOTest.testRecvFromIntoArraycCstt}|j|dSr.rgrhrrr_testRecvFromIntoArraysz#BufferIOTest._testRecvFromIntoArraycCsHtd}|j|\}}||tt|dtt}||tdSr)rrrrrrrlrrrtestRecvFromIntoBytearrays z&BufferIOTest.testRecvFromIntoBytearraycCsLtd}|jt|\}}||tt|dtt}||tdSr)rrrrrrrrlrrrtestRecvFromIntoMemoryviews z'BufferIOTest.testRecvFromIntoMemoryviewcCs td}|t|jj|ddS)Nr^r)rr'rrrrhrrrtestRecvFromIntoSmallBuffersz(BufferIOTest.testRecvFromIntoSmallBuffercCs|jtdSr.rrArrr_testRecvFromIntoSmallBuffersz)BufferIOTest._testRecvFromIntoSmallBuffercCs$t}|j||j|ddSr)rrrrhrrrtestRecvFromIntoEmptyBuffers z(BufferIOTest.testRecvFromIntoEmptyBufferN)r)rGrHrIrNrfrirjZ_testRecvIntoBytearrayrkZ_testRecvIntoMemoryviewrmrnroZ_testRecvFromIntoBytearrayrpZ_testRecvFromIntoMemoryviewrqrrrsZ_testRecvFromIntoEmptyBufferrrrrrcrs" rcic CsttdsdSz td}Wntttfy4YdS0|6|D] }|dr@WddSq@Wdn1sv0YdS)NAF_TIPCFz /proc/modulesztipc T)r r rFileNotFoundErrorIsADirectoryErrorr[r)rrrrrisTipcAvailables   2ryz6TIPC module is not loaded, please 'sudo modprobe tipc'c@seZdZddZdS)TIPCTestcCsttjtj}ttjtj}||j||j|tjtjdtjt t t f}| |tj t t tt t ddf}|t||d\}}|||||tdS)Nrprrr)r rvr4rWrrr5r6TIPC_ADDR_NAMESEQ TIPC_STYPE TIPC_LOWER TIPC_UPPERraTIPC_ADDR_NAMErgr/rrrr)rBr*rsrvaddrZsendaddrrZrecvaddrrrrtestRDMs     zTIPCTest.testRDMN)rGrHrIrrrrrrzsrzc@s6eZdZd ddZddZddZdd Zd d Zd S)TIPCThreadableTestrcCstjj||dt|dSrrrrrrrNszTIPCThreadableTest.__init__cCsttjtj|_||jj|jtjtjdtj t t t f}|j ||j||j\|_|_||jjdSr)r rvr2r*rWrrr5r6r{r|r}r~rar@rorrr)rBrrrrrCs  zTIPCThreadableTest.setUpcCsdtdttjtj|_||jjtjt t t t t ddf}|j ||j|_dS)Nrrr)rrr rvr2rrWrrr|r}rgr~rrcliaddr)rBrrrrrs  zTIPCThreadableTest.clientSetUpcCs,|jd}||t||j|jdSr)rrrrrrrrrrrs  zTIPCThreadableTest.testStreamcCs|jt|jdSr.rrArrrrs zTIPCThreadableTest._testStreamN)rrrrrrrs    rc@s4eZdZddZddZddZddZd d Zd S) ContextManagersTestcCst}||jWdn1s*0Y||jt}|Wdn1sf0Y||jt }|t|jdWdn1s0Y||jdSNr,)r rrrrr'rrrrrr_testSocketClass s *  &  .z$ContextManagersTest._testSocketClasscCs2|j\}}||j|d}||dSrr=rrWrrrrBrrrrrrtestCreateConnectionBase.s  z,ContextManagersTest.testCreateConnectionBasecCsl|j}t|8}||j|d||ddWdn1sR0Y| |jdS)Nr,r) r=rr rrrrrrrrBrrrrr_testCreateConnectionBase4s     0z-ContextManagersTest._testCreateConnectionBasecCs2|j\}}||j|d}||dSrrrrrrtestCreateConnectionClose<s  z-ContextManagersTest.testCreateConnectionClosecCs\|j}t|}|Wdn1s20Y||j|t|j ddSr) r=rr rrrrr'rrrrrr_testCreateConnectionCloseBs   & z.ContextManagersTest._testCreateConnectionCloseN)rGrHrIrrrrrrrrrrs rc@seZdZeeeddedddddZ dd Z d d Z d d Z e edudddZe edudddZddZdS)InheritanceTestrzSOCK_CLOEXEC not definedrrrcCsXttjtjtjB.}||jtj||Wdn1sJ0YdSr.)r r<r2rrrrget_inheritablerrrrtest_SOCK_CLOEXECKs  z!InheritanceTest.test_SOCK_CLOEXECcCs@t}| ||dWdn1s20YdSr)r rrrrrrtest_default_inheritableTsz(InheritanceTest.test_default_inheritablec Cstt}|T|}|| ||dWdn1sH0YWdn1sf0YdSr)r rrrr)rBrZnewsockrrrtest_dupYs zInheritanceTest.test_dupcCsdt}|D|d||d|d||dWdn1sV0YdS)NTF)r set_inheritablerrrrrrtest_set_inheritableas   z$InheritanceTest.test_set_inheritableNrcCst}|b|}||dt|tj}|tjM}t|tj|||dWdn1st0YdSr)r rrrr F_GETFD FD_CLOEXECZF_SETFD)rBrrKrrrrtest_get_inheritable_cloexecjs z,InheritanceTest.test_get_inheritable_cloexeccCs|t}|\|}|t|tjtj@tj|d|t|tjtj@dWdn1sn0YdS)NTr)r rrr rrr)rBrrKrrrtest_set_inheritable_cloexecxs z,InheritanceTest.test_set_inheritable_cloexeccCsHt\}}||j||j||d||ddSr)r rrWrrr)rBrJrWrrrtest_socketpairs    zInheritanceTest.test_socketpair)rGrHrIrrhr r rrrrrrrjr rrrrrrrrJs      rrAzSOCK_NONBLOCK not definedc@s,eZdZd ddZeddddd Zd S) NonblockConstantTestTrcCs|rj||jtj||||t|tjtj tj @|dkrZ| | q|| nL||jtj||d| t|tjtj tj @|| dSr) rrr r2rrr rrrrr)rBrnonblockr7rrr checkNonblocks z"NonblockConstantTest.checkNonblockrrrcCsttjtjtjB}|||d|j|dd|d|||d|j|dd|d|j|dd|d|j|ddWdn1s0Yt}tdt}||Wdn1s0Ytdt}||dWdn1s.0Ytdt}|j|ddWdn1sp0Ytdt}||dWdn1s0Yt|dS)NTF)rg@rzr) r r<r2rArrBrr5r6)rBrtrrrtest_SOCK_NONBLOCKs:        ,  (  ,  .  ,z'NonblockConstantTest.test_SOCK_NONBLOCKN)Tr)rGrHrIrrrrrrrrrs  rr<r=zneed multiprocessingc@s@eZdZeddZddZddZddZd d Zd d Z d S)TestSocketSharingcCsD|}|}t|}|\}}||||dSr.)rsr fromsharerrr)rqZsdatamessagerrWrrrrremoteProcessServers   z%TestSocketSharing.remoteProcessServerc Cst}tj|j|fd}||j|j}|j}|j | |d}| |t |}g}| d}|szq||qj| d|}||||dS)NrrSs slapmahfrorr)multiprocessingr|Processrrr=sharepidrrrr rrrrr) rBrr$rrrrmreceivedrrr testShares&         zTestSocketSharing.testSharecCs@|jt}|ttj|dd|ttj|ddS)Nrr,)r=rrgetpidr'rr r)rBrrrrtestShareLengthsz!TestSocketSharing.testShareLengthcCsb||d|||||j|j||j|j|jdkr^||j|jdSr)rrrrr)rBZorgotherrrrcompareSocketss  z TestSocketSharing.compareSocketscCsD|jt}t|}z||j|W|n |0dSr.)r=rrrr rrr)rBrrrrrtestShareLocals  z TestSocketSharing.testShareLocalc Cstjtjg}tjtjg}|D]}|D]}zt||}WntyNYq$Yn0zH|t}t |}z| ||W| n | 0W| q$| 0q$qdSr.) r r<rr2r!rrrrrrr)rBfamiliestypesrrsourcerZsharedrrr testTypess     zTestSocketSharing.testTypesN) rGrHrIrrrrrrrrrrrrs #rc@seZdZdZdZdZejZe ddZ e ddZ dd Z d d Z d d ZddZddZddZddZddZddZddZddZddZd d!Zd"d#Zd$d%Zd&d'Zd(d)Zd*d+Zd,d-Zd.d/Zd0d1Z d2d3Z!d4d5Z"d6d7Z#d8d9Z$d:S);SendfileUsingSendTestirircCsdd}dddt|jD}ttjd.}||j|jD]}||q>Wdn1sb0Yttjd}||_ Wdn1s0YdS)Ncss&||kr|V||8}q|r"|VdSr.r)totalsteprrrchunks>s  z0SendfileUsingSendTest.setUpClass..chunksrcSsg|]}ttjqSr)randomchoicestring ascii_lettersrrrrrrFsz4SendfileUsingSendTest.setUpClass..rr ) rr"BUFSIZErrr\FILESIZErr FILEDATA)rrchunkrZcsizerrr setUpClass<s * z SendfileUsingSendTest.setUpClasscCsttjdSr.)rrr\)rrrr tearDownClassOsz#SendfileUsingSendTest.tearDownClasscCs8|jtj|j\}}||j||j|Sr.)r=rrrrTIMEOUTrWrrrrr accept_connSs   z!SendfileUsingSendTest.accept_conncCs,g}||j}|sq"||qd|Sr)rrrr)rBrrrrrr recv_dataZs   zSendfileUsingSendTest.recv_datacCs t|dS)N_sendfile_use_sendrrrrrmeth_from_sockcsz$SendfileUsingSendTest.meth_from_sockc Cs|j}ttjd}t|f}|B}||}||}|||j || |j Wdn1sn0YWdn1s0YdS)Nr r=rrrr\r rrrrtellrBrfilermethsentrrr_testRegularFilejs   z&SendfileUsingSendTest._testRegularFilecCs6|}||}|t||j|||jdSr.rrrrrrrBrrrrrtestRegularFiless z%SendfileUsingSendTest.testRegularFilec Cs|j}t|j}t|p}|L}||}|||j || |j | tj |j |Wdn1sx0YWdn1s0YdSr.)r=rioBytesIOrr rrMrrrr'rRrS)rBrrrrrrr_testNonRegularFile{s   z)SendfileUsingSendTest._testNonRegularFilecCs6|}||}|t||j|||jdSr.rrrrrtestNonRegularFiles z(SendfileUsingSendTest.testNonRegularFilec Cs|j}tjd}t|d|tj|Wdn1sB0Yt|d}t|b}|>}| |}||}| |d| | dWdn1s0YWdn1s0YdS)N2rr r) r=rrr\rrWrr rrrr)rBrfilenamerrrrrrr_testEmptyFileSends   ,   z(SendfileUsingSendTest._testEmptyFileSendcCs"|}||}||ddSr)rrrrrrrtestEmptyFileSends z'SendfileUsingSendTest.testEmptyFileSendc Cs|j}ttjd}t|n}|J}||}||dd}|||j d|| |j Wdn1sv0YWdn1s0YdS)Nr )offsetrrrrr _testOffsets    z!SendfileUsingSendTest._testOffsetcCsB|}||}|t||jd|||jdddS)Nrrrrrr testOffsets z SendfileUsingSendTest.testOffsetc Cs|j}ttjd}tj|tjd}|j|Fd}||}|||d}| ||| | |Wdn1s|0YWdn1s0YdS)Nr rzGKLr r=rrrr\r rrArrrrBrrrrrrrrr _testCounts      z SendfileUsingSendTest._testCountcCs@d}|}||}|t|||||jd|dS)NrrrrrrrBrrrrrr testCounts  zSendfileUsingSendTest.testCountc Cs|j}ttjd}tj|tjd}|j|Fd}||}|||d}| ||| | |Wdn1s|0YWdn1s0YdS)Nr rzrprrrrrr_testCountSmalls      z%SendfileUsingSendTest._testCountSmallcCs@d}|}||}|t|||||jd|dSrrrrrrtestCountSmalls  z$SendfileUsingSendTest.testCountSmallc Cs|j}ttjd}tj|ddp}|L}d}||}||d|d}||||| |dWdn1s|0YWdn1s0YdS)Nr rrz駆)rr) r=rrrr\r rrrrrrrr_testCountWithOffsets    z*SendfileUsingSendTest._testCountWithOffsetcCsDd}|}||}|t|||||jd|ddS)NrrrrrrrtestCountWithOffsets  z)SendfileUsingSendTest.testCountWithOffsetc Cs|j}ttjd}t|f}|B}|d||}| t ||| t |j |Wdn1sn0YWdn1s0YdS)Nr F) r=rrrr\r rrBrr'rrMrBrrrrrrr_testNonBlockings    z&SendfileUsingSendTest._testNonBlockingcCs |}|dr|ddS)Nriz$was not supposed to receive any data)rrr#rBrrrrtestNonBlockings z%SendfileUsingSendTest.testNonBlockingc Cs|j}ttjd}tj|tjd}|T|0||}||}| ||j Wdn1sf0YWdn1s0YdS)Nr rz) r=rrrr\r rrArrrrrrr_testWithTimeouts    z&SendfileUsingSendTest._testWithTimeoutcCs6|}||}|t||j|||jdSr.rrrrrtestWithTimeouts z%SendfileUsingSendTest.testWithTimeoutc Cs|j}ttjd^}t|4}|d||}| tj ||Wdn1s\0YWdn1sz0YdS)Nr g{Gz?) r=rrrr\r rrrr'r7rrrr_testWithTimeoutTriggeredSends     z3SendfileUsingSendTest._testWithTimeoutTriggeredSendcCs |}|dtddS)NiXrp)rrrrrrrrtestWithTimeoutTriggeredSends z2SendfileUsingSendTest.testWithTimeoutTriggeredSendcCsdSr.rrArrr _test_errorssz"SendfileUsingSendTest._test_errorsc CsttjdX}tjtjd*}||}|td||Wdn1sL0YWdn1sj0YttjdR}t*}||}|td||Wdn1s0YWdn1s0Yttjd}tj}||}|jtd||dd|jtd||d d|jtd||d d|jtd||d dWdn1sj0YWdn1s0YdS) Nr rr2rz binary modezpositive integerrrrrr) rrr\r r!rr rr)rBrrrrrr test_errors"s6 @  @  z!SendfileUsingSendTest.test_errorsN)%rGrHrIrrrrrArrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrr2sB               rrMz%os.sendfile() required for this test.c@seZdZddZdS)SendfileUsingSendfileTestcCs t|dS)NrSrrrrrr@sz(SendfileUsingSendfileTest.meth_from_sockN)rGrHrIrrrrrr:srzAF_ALG requiredc@s|eZdZddZeddddZddZedd d d Zedd d dZ edd ddZ ddZ ddZ dS)LinuxKernelCryptoAPIc Cslttjtjd}z|||fWn>tyb}z&|tt|||WYd}~nd}~00|SdSr) r r*r(rarwrrZSkipTestr)rBtyprrrrrr create_algGs(zLinuxKernelCryptoAPI.create_algr.rc Cstd}|dd}|\}}|,|d||d|Wdn1sZ0Y|\}}|V|dtj |dtj |dtj |d ||d|Wdn1s0YWdn1s0YdS) NZ@ba7816bf8f01cfea414140de5dae2223b00361a396177a9cb410ff61f20015adhashZsha256sabcrabcr) rfromhexrrrrrrr MSG_MORErBralgooprvrrr test_sha256Ts   0  z LinuxKernelCryptoAPI.test_sha256c Cstd}|ddn}|tjtjd|\}}|,|d| | d|Wdn1sl0YWdn1s0YdS)NZ(effcdf6ae5eb2fa2d27416d5f184df9c259a7c79rz hmac(sha1)sJefeswhat do ya want for nothing?r) rrrrr SOL_ALG ALG_SET_KEYrrrrrrrrtest_hmac_sha1fs   z#LinuxKernelCryptoAPI.test_hmac_sha1rc Cs&td}td}d}td}t|}|dd}|tjtj||\}}|@|j tj |tj d| || |||Wdn1s0Y|\}}|6|j |gtj|d| |||Wdn1s0Yd } |g| } |\}}|0|j | tj |d||| } Wdn1sX0Y| t| || | | d|||\}}|2|j | gtj|d||| } Wdn1s0Y| t| || | | || Wdn1s0YdS) NZ 06a9214036b8a15b512e03d534120006Z 3dafba429d9eb430b422da802c9fac41sSingle block msgZ e353779c1079aeb82708942dbe77181aZskcipherzcbc(aes))rivr)rrr)rrrrrr rrr sendmsg_afalgALG_OP_ENCRYPTrrrrALG_OP_DECRYPT) rBkeyrrZ ciphertextZmsglenrrrvZ multiplierZlongmsgencZdecrrr test_aes_cbcqsL      0 0  . .z!LinuxKernelCryptoAPI.test_aes_cbcrc Cs td}td}td}td}td}td}t|}t|}|dd} | tjtj|| tjtjd|| \} } | | j tj ||tj d | |tj | || |t||} ||| || ||| | dWdn1s0Y| \} } | p||} | j | gtj ||d | |t||} ||| || ||| | dWdn1s0Ytd j}| \} } | ||} | | gtjtj|tj gtjtj|t||gtjtj||gf| t| |} ||| || ||| | dWdn1sx0Y| \} } | X|||} | j | gtj||d | t| |} ||| |dWdn1s0YWdn1s0YdS) NZ c939cc13397c1d37de6ae0e1cb7c423cZb3d8cc017cbb89b39e0f67e2Z c3b3c41f113a31b73d9a5cd432103069Z 24825602bd12a984e0092d3e448eda5fZ 93fe7d9e9bfd10348a5606e5cafa7354Z 0032a1dc85f1c9786925a2e71d8272ddZaeadzgcm(aes))rrassoclenr)rrrr )rrrrrr rrALG_SET_AEAD_AUTHSIZErr r rrrrrStructrr ALG_SET_OP ALG_SET_IVALG_SET_AEAD_ASSOCLENr )rBr rZplainZassocZ expected_ctZ expected_tagZtaglenrrrrvresrZ pack_uint32rrrtest_aead_aes_gcmsl          6 6  6  z&LinuxKernelCryptoAPI.test_aead_aes_gcmc Cs|ddv}td}|tjtj||\}}|*|d}| t |dWdn1sj0YWdn1s0YdS)NrngZdrbg_pr_sha256rw) rrurandomrr rrrrrr)rBrZ extra_seedrrvZrnrrrtest_drbg_pr_sha256s   z(LinuxKernelCryptoAPI.test_drbg_pr_sha256c CsPttjtjd}|"|t|Wdn1sB0Y|t|jddWdn1sx0Y|t|dWdn1s0Y|t |jtjddWdn1s0Y|t |jtjddWdn1s"0YWdn1sB0YdS)Nr)rrp)rrr)r r*r(r'rr r rrrrtest_sendmsg_afalg_argss & * ( . z,LinuxKernelCryptoAPI.test_sendmsg_afalg_argscCsttjtjd}||j|t|dWdn1sH0Y|t d|dWdn1s~0Y|t|dWdn1s0Y|t d|dWdn1s0YdS)Nr)Z tttttttttttttrz type too long)Zttttttttttttttr)rZ?nnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnz name too long)rZ@nnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnn) r r*r(rWrr'rwrar rrrrrtest_length_restrictions  (( (z,LinuxKernelCryptoAPI.test_length_restrictionN) rGrHrIrrrrrrrrrrrrrrrDs    (  >  rwinzrequires Windowsc@seZdZhdZddZdS)TestMSWindowsTCPFlags> TCP_KEEPINTVL TCP_FASTOPEN TCP_KEEPIDLE TCP_KEEPCNT TCP_MAXSEG TCP_NODELAYcs6ddttD}fdd|D}g|ddS)NcSsg|]}|dr|qS)ZTCP)rrrrrrrrz.csg|]}|jvr|qSr) knownTCPFlagsr$rArrrrzANew TCP flags were discovered. See bpo-32394 for more information)rr r)rBZprovidedunknownrrArtest_new_tcp_flagss z(TestMSWindowsTCPFlags.test_new_tcp_flagsN)rGrHrIr%r'rrrrrs rc@seZdZddZddZddZeee d p:ee d d e e j d d d Z ee d e e j d ddZdS)CreateServerTestcCst}td|f8}||dd||d|Wdn1sT0Ytjrtjd|ftjd8}||dd||d|Wdn1s0YdS)Nrrrprr)rrr create_serverrrrrrBr?rrrr test_address!s2 zCreateServerTest.test_addresscCstd0}||jtj||jtjWdn1s@0Ytjrtjdtj d0}||jtj ||jtjWdn1s0YdS)Nrrrr) r r)rrr<rr2rrr)rBrrrrrtest_family_and_type,s .z%CreateServerTest.test_family_and_typecCsttdsD|ttjdddWdq1s80Yntd,}|tjtj}||dWdn1s0Ytjddd,}|tjtj}| |dWdn1s0YdS)N SO_REUSEPORT)rrT) reuse_portr) r r r'rr)rr5r.rr)rBrrRrrrtest_reuse_port5s  . *z CreateServerTest.test_reuse_portr: IPV6_V6ONLYz IPV6_V6ONLY option not supportedr@cCs4tjdtjd}Wdn1s&0YdS)Nr,r)r r)rrrrrtest_ipv6_only_defaultAsz'CreateServerTest.test_ipv6_only_defaultdualstack_ipv6 not supportedcCsFtjdtjdd }||jtjWdn1s80YdS)Nr,Trdualstack_ipv6)r r)rrrrrrrtest_dualstack_ipv6_familyIs  z+CreateServerTest.test_dualstack_ipv6_familyN)rGrHrIr+r-r0rrjr rrhrrr2r has_dualstack_ipv6r6rrrrr(s        r(c@seZdZejZddZddZddZe e j ddd Z e e d e e j dd d Ze e d e e j dd dZdS)CreateServerFunctionalTestcsVfdd}t|jtj||fd}||jjdS)Nc s||\}}|Pj|d}|sNWdWddS||Wdn1sl0YWdn1s0YdSr)rrr7rr)rrrvrrrBrrrunVs   z3CreateServerFunctionalTest.echo_server..runr) rOryrr7rrrWrrn)rBrr:rrr9r echo_serverUs  z&CreateServerFunctionalTest.echo_servercCsbtj|dB}||j|||d||ddWdn1sT0YdS)Nrr,r)r rr7rrrr)rBrrrrrr echo_clientgs    z&CreateServerFunctionalTest.echo_clientcCsVt}td|f,}|||d|ftjWdn1sH0YdS)Nr+r)rrr r)r;r<r<r*rrr test_tcp4ns z$CreateServerFunctionalTest.test_tcp4r@cCs\t}tjd|ftjd,}|||d|ftjWdn1sN0YdS)Nr+rrrrr r)rr;r<r*rrr test_tcp6ts  z$CreateServerFunctionalTest.test_tcp6r3cCs^t}tjd|ftjdd,}|||d|ftjWdn1sP0YdS)Nr+Tr4r)rrr r)rr;r<r<r*rrrtest_dual_stack_client_v4~s z4CreateServerFunctionalTest.test_dual_stack_client_v4cCs^t}tjd|ftjdd,}|||d|ftjWdn1sP0YdS)Nr+Tr4rr>r*rrrtest_dual_stack_client_v6s z4CreateServerFunctionalTest.test_dual_stack_client_v6N)rGrHrIrrAr7r;r<r=rrhrrr?rjr r7r@rArrrrr8Rs       r8send_fdsrecv_fdsc@seZdZddZdS)SendRecvFdsTestsc Csndd}dd}ddtdD}|||dd|D}ttjtj\}}|v|Rt|tg|t|t td t |d \}}} } |||Wdn1s0YWdn1s0Y| |t| t |t || | d t |D]&\} }|\} } t | t| qt |D]*\} } t | d }| |t| q>dS) NcSs&|D]\}}t|t|qdSr.rr)pipesrfd2rrr close_pipess  z8SendRecvFdsTests.testSendAndRecvFds..close_pipescSs|D]}t|qdSr.rE)rrKrrr close_fdssz6SendRecvFdsTests.testSendAndRecvFds..close_fdscSsg|] }tqSr)rpipe)rrvrrrrrz7SendRecvFdsTests.testSendAndRecvFds..rcSsg|] \}}|qSrr)rrfdwfdrrrrrrrr)r"rWr rrr2rBrrCrrrrrrrr )rBrHrIrFrZsock1Zsock2rZfds2rrrkrKrLrrrrtestSendAndRecvFdss&  &H   z#SendRecvFdsTests.testSendAndRecvFdsN)rGrHrIrMrrrrrDsrDcCs t}tjtjg|RdSr.)rZthreading_setuprZaddModuleCleanupZthreading_cleanup) thread_inforrr setUpModulesrO__main__)rtestrZ test.supportrrcrrr rrrr8rqrrrrr\rweakrefrrrr#rrrYr_threadrrOrrr rrrrsystemrrrr 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_BLUETOOTHrrrr;rJrKrLrZrhrjrrrhrrrrjrrrrrrrrrrrrrrrrrrrr r rkrrrrrrrrrrr&r'rCrHrKrMrOrPrQrurrrrrrrr#r\r^r_r`rarrcrdrerfrgrhrirjrkrlrmrnrorprqrrrsrtrurvrwrxr}r~rrrrrrrrrrrrrrr r r r rerrrrr&r,r;rArCrGrVrcr|r}r~ryrzrrrrrrrrrrrr(r8rDrOrGmainrrrrsT                        3q ! $   c S Z * =  >.%{7w w=#P;k7                                                            )7#!$l    ?G9)ES ',C< e  D3@  '