+
    Bi,T                    '   ^ RI t ^ RI Ht ^ RIHt ^ RIHtHtHtHtH	t	H
t
 ^ RIHt ^ RIt^ RIt^ RIt^ RIt^ RIt^ RIt^ RIt^ RIt^ RIt^ RIt^ RIt^ RIt^ RIt^ RIt^ RIt^ RIt^ RIt^ RIt^ RI t ^ RI!t!^ RI"t"^ RI#t#^ RI$t$^ RI%t%^ RI&t&^ RI'H(t(  ^ RI)t) ^ RI+t+ ^ RI,t,]PZ                  ! RR	7       ]	P\                  t.R
P_                  R4      t0Rt1]Pd                  ! 4       R8H  t3R]Ph                  ! 4       9   t5 ^ RI6t6R t7R t8R t9R t:R t;R t<R t=R t>R t?R t@R tAR tB]P                  R 4       tD]P                  R 4       tE]9! 4       tF]:! 4       tG];! 4       tH]<! 4       tI]=! 4       tJ]>! 4       tK]?! 4       tL]M! ]R4      ;'       d8    ]P                  ;'       d    ]P                  ! 4       P                  ^8  '       * tQ]@! 4       tR]A! 4       tS]B! 4       tT]P                  ! R4      P                  tV ! R R ] P                  4      tX ! R! R"] P                  4      tY ! R# R$] P                  4      tZ ! R% R&]Z4      t[ ! R' R(] P                  4      t\ ! R) R*] P                  4      t] ! R+ R,4      t^ ! R- R.]Y]^4      t_ ! R/ R0]Z]^4      t`] P                  ! ]QR14       ! R2 R3][]^4      4       tb ! R4 R5]\]^4      tc ! R6 R7]]]^4      td] P                  ! ]+RJ R84      ] P                  ! ]5R94      ] P                  ! ]LR:4      ] P                  ! ]8! 4       ^8g  R;4       ! R< R=] P                  ]^4      4       4       4       4       tf ! R> R?]_4      tg ! R@ RA] P                  ]^4      th ! RB RC] P                  4      ti ! RD RE]i4      tj ! RF RG]i]^4      tk ! RH RI]j]k4      tl ! RJ RK]i4      tm ! RL RM]m4      tn ! RN RO]i4      to ! RP RQ]o4      tp ! RR RS]o4      tq ! RT RU]o4      tr ! RV RW]o4      ts ! RX RY]o4      tt ! RZ R[]t4      tu ! R\ R]]t4      tvR^ twR_ txR` ty ! Ra Rb] P                  4      tz] P                  ! ]FRc4       ! Rd Re] P                  4      4       t{] P                  ! ]FRc4       ! Rf Rg]c4      4       t|] P                  ! ]GRh4       ! Ri Rj] P                  4      4       t}] P                  ! ]HRk4       ! Rl Rm] P                  4      4       t~] P                  ! ]IRn4       ! Ro Rp] P                  4      4       t] P                  ! ]IRn4       ! Rq Rr]d4      4       t] P                  ! ]KRs4       ! Rt Ru] P                  4      4       t] P                  ! ]+RJ R84      ] P                  ! ]LR:4       ! Rv Rw] P                  4      4       4       t] P                  ! ]M! ]Rx4      Ry4       ! Rz R{] P                  4      4       t] P                  ! ]RRy4       ! R| R}] P                  4      4       t] P                  ! ]TR~4       ! R R] P                  4      4       t ! R R]g4      t ! R R]`4      t] P                  ! ]QR14       ! R R]b4      4       t ! R R4      t ! R R]4      t ! R R]4      t ! R R]4      t ! R R]4      t ! R R]4      t ! R R]4      t ! R R]4      t ! R R]4      t ! R R]4      t ! R R]4      t ! R R]4      t ! R R]4      t ! R R]]4      t ! R R] P                  4      t ! R R]4      t ! R R]4      t ! R R]]]k]q4      t]x! ]P<                  R4       ! R R]]4      4       t]x! ]P<                  R4       ! R R]]4      4       t]x! ]P<                  R4       ! R R]]4      4       t ! R R]]]k]u4      t]x! ]P<                  R4      ] P                  ! ]	EP>                  R4      ]y! RR4       ! R R]]4      4       4       4       t]x! ]P<                  R4      ] P                  ! ]	EP>                  R4      ]y! RR4       ! R R]]4      4       4       4       t]x! ]P<                  R4      ] P                  ! ]	EP>                  R4      ]y! RR4       ! R R]]4      4       4       4       t]x! ]P<                  R4      ] P                  ! ]	EP>                  R4      ]x! ]R4      ]y! RR4       ! R R]]4      4       4       4       4       t]x! ]P<                  R4      ] P                  ! ]	EP>                  R4      ]x! ]R4      ]y! RR4       ! R R]]]4      4       4       4       4       t] P                  ! ]QR14       ! R R]]]k]r4      4       t] P                  ! ]QR14      ]x! ]P<                  R4       ! R R]]4      4       4       t] P                  ! ]QR14      ]x! ]P<                  R4       ! R R]]4      4       4       t] P                  ! ]QR14      ]x! ]P<                  R4       ! R R]]4      4       4       t] P                  ! ]QR14       ! R R]]]k]v4      4       t]x! ]P<                  R4      ] P                  ! ]	EP>                  R4      ] P                  ! ]QR14      ]y! RR4       ! R R]]4      4       4       4       4       t]x! ]P<                  R4      ] P                  ! ]	EP>                  R4      ] P                  ! ]QR14      ]y! RR4       ! R R]]4      4       4       4       4       t]x! ]P<                  R4      ] P                  ! ]	EP>                  R4      ] P                  ! ]QR14      ]y! RR4       ! R R]]4      4       4       4       4       t]x! ]P<                  R4      ] P                  ! ]	EP>                  R4      ] P                  ! ]QR14      ]x! ]R4      ]y! RR4       ! R R]]4      4       4       4       4       4       t]x! ]P<                  R4      ] P                  ! ]	EP>                  R4      ] P                  ! ]QR14      ]x! ]R4      ]y! RR4       ! R R]]]4      4       4       4       4       4       t ! R R]]l]p4      t]x! ]P<                  R4       ! R R]]4      4       t]x! ]P<                  R4       ! R R]]]4      4       t]x! ]P<                  R4       ! R R]]]4      4       t ! R R]]]l]s4      t]x! ]P<                  R4      ] P                  ! ]3R4      ]y! RRR4       ! R R]]4      4       4       4       t]x! ]P<                  R4      ] P                  ! ]3R4      ]y! RRR4       ! R R]]]4      4       4       4       t]x! ]P<                  R4      ] P                  ! ]3R4      ]y! RRR4       ! R R]]]4      4       4       4       t ! R R]]l]n4      t]x! ]P<                  R4      ]x! ]R4       ! R R]]4      4       4       t]x! ]P<                  R4      ]x! ]R4       ! R R]]]4      4       4       t]x! ]P<                  R4      ]x! ]R4       ! R R]]]4      4       4       t]x! ]P<                  RR4      ]x! ]RRR4       ! R R]]4      4       4       t]x! ]P<                  RR4      ]x! ]RRR4       ! R R]]]4      4       4       t ! R R4      t]x! ]R4      ] P                  ! ]M! ]R4      ;'       g
    ]M! ]R4      ER 4       ! ER ER]]q4      4       4       t]x! ]R4      ] P                  ! ]M! ]R4      ;'       g
    ]M! ]R4      ER 4       ! ER ER]]j]p4      4       4       t ! ER ER]_4      t ! ER ER]h4      t ! ER	 ER
]h4      t ! ER ER]_4      t ! ER ER]g4      t ! ER ER]4      t ! ER ER]4      t ! ER ER]4      t ! ER ER]4      t ! ER ER]4      t ! ER ER]4      t ! ER ER]4      t ! ER ER]]4      t ! ER ER ] P                  4      t ! ER! ER"]Y]^4      t ! ER# ER$]Y]^4      t ! ER% ER&]Y4      t ! ER' ER(]Z4      t] P                  ! ]QR14       ! ER) ER*][4      4       t ! ER+ ER,] P                  4      t] P                  ! ]!P0                  ERj9   ER-4       ! ER. ER/] P                  4      4       t] P                  ! ]M! ]R4      ER04       ! ER1 ER2] P                  4      4       t ! ER3 ER4]g4      tER5t^t^tER6 t] P                  ! ]! 4       ER74       ! ER8 ER9] P                  4      4       t] P                  ! ]! 4       ER74       ! ER: ER;] P                  ]^4      4       t ! ER< ER=]_4      t ! ER> ER?] P                  4      t] P                  ! ]M! ]ER@4      ERA4       ! ERB ERC] P                  4      4       t] P                  ! ]EP                  ERD8H  ERE4      ] P                  ! ])ERF4       ! ERG ERH]Y4      4       4       t ! ERI ERJ]_4      t] P                  ! ]M! ]ERK4      ERL4       ! ERM ERN]4      4       t] P                  ! ]JERO4       ! ERP ERQ] P                  4      4       t] P                  ! ]!P0                  ERR8H  ERS4       ! ERT ERU] P                  4      4       t] P                  ! ]M! ]ERV4      ERW4       ! ERX ERY] P                  4      4       t] P                  ! ]!P0                  EP                  ERZ4      ER[4       ! ER\ ER]] P                  4      4       t ! ER^ ER_] P                  4      t ! ER` ERa] P                  4      t]x! ]ERb4      ]x! ]ERc4      ]x! ]R4       ! ERd ERe] P                  4      4       4       4       t ! ERf ERg] P                  4      tERh t]ERi8X  d   ] EP                  ! 4        R# R#   ]* d    Rt) ELi ; i  ]* d    Rt+ ELi ; i  ]* d    Rt, EL*i ; i  ]* d    Rt6 ELi ; i(k      N)mock)support)cpython_onlyis_apple	os_helperrefleak_helpersocket_helperthreading_helperensure_lazy_imports)proxyFT)moduleu   Michael Gilfix was hereሴ
utf-8  AIXzmicrosoft-standard-WSLc                 .   a V '       g   R  pV# V3R lpV# )c                     R  V n         V # )c                     V # N fs   &'/usr/lib/python3.14/test/test_socket.py<lambda>;skipForRefleakHuntinIf.<locals>.decorator.<locals>.<lambda>A   s    a    )client_skipr   s   &r   	decorator)skipForRefleakHuntinIf.<locals>.decorator@   s    'AMHr   c                 \   <a  \         P                  ! S 4      V V3R  l4       pR pW!n        V# )c                  |   < \         P                  ! 4       '       d   \        P                  ! R S 24      hS! V / VB # )z'ignore while hunting for refleaks, see )r   hunting_for_refleaksunittestSkipTest)argskwdsr   issuerefs   *,r   wrapper:skipForRefleakHuntinIf.<locals>.decorator.<locals>.wrapperF   s=    !6688"++.UV^U_,`aa$'$''r   c                 F   a  \         P                  ! S 4      V 3R  l4       pV# )c                  N   < \         P                  ! 4       '       d   R # S! V / VB # r   )r   r"   )r%   r&   r   s   *,r   r(   OskipForRefleakHuntinIf.<locals>.decorator.<locals>.client_skip.<locals>.wrapperN   s%    %::<<d+d++r   )
contextlibwraps)r   r(   s   f r   r   >skipForRefleakHuntinIf.<locals>.decorator.<locals>.client_skipM   s'    !!!$, %, r   )r-   r.   r   )r   r(   r   r'   s   f  r   r   r   E   s2    a ( !( #.Nr   r   )	conditionr'   r   s   &f r   skipForRefleakHuntinIfr1   >   s     	2 )	( r   c                  T   \         f   R # \        \        R4      '       g   R #  \        RR4      ;_uu_ 4       p \         P                  ! V \        P
                  R4      pR R R 4       \        P                  ! RX4      ^ ,          #   + '       g   i     L.; i  \         d     R # i ; i)NIOCTL_VM_SOCKETS_GET_LOCAL_CIDz
/dev/vsockrbz    I)	fcntlhasattrsocketopenioctlr3   structunpackOSError)r   rs     r   get_cidr?   [   s~    }6;<<(,%%AvDDfMA &
 }}S!$Q'' &% s(   B 'BB B	B B'&B'c                      \         P                   ! \         P                  \         P                  \         P                  4      p V P	                  4        R#   \
        \        3 d     R# i ; i)z5Check whether CAN sockets are supported on this host.FT)r8   PF_CANSOCK_RAWCAN_RAWcloseAttributeErrorr=   ss    r   _have_socket_canrH   h   sL    MM&--&..I 	
		 G$    AA A+*A+c                      \         P                   ! \         P                  \         P                  \         P                  4      p V P	                  4        R#   \
        \        3 d     R# i ; i)z;Check whether CAN ISOTP sockets are supported on this host.FT)r8   rA   
SOCK_DGRAM	CAN_ISOTPrD   rE   r=   rF   s    r   _have_socket_can_isotprM   r   P    MM&--):):F<L<LM 	
		 G$ rI   c                      \         P                   ! \         P                  \         P                  \         P                  4      p V P	                  4        R#   \
        \        3 d     R# i ; i)z;Check whether CAN J1939 sockets are supported on this host.FT)r8   rA   rK   	CAN_J1939rD   rE   r=   rF   s    r   _have_socket_can_j1939rQ   |   rN   rI   c                      \         P                   ! \         P                  \         P                  ^ 4      p V P                  4        R#   \        \
        3 d     R# i ; i)z5Check whether RDS sockets are supported on this host.FT)r8   PF_RDSSOCK_SEQPACKETrD   rE   r=   rF   s    r   _have_socket_rdsrU      J    MM&--)>)>B 	
		 G$    4A AAc                      \         P                   ! \         P                  \         P                  ^ 4      p V P                  4        R#   \        \
        3 d     R# i ; i)z8Check whether AF_ALG sockets are supported on this host.FT)r8   AF_ALGrT   rD   rE   r=   rF   s    r   _have_socket_algrZ      rV   rW   c                      \         P                   ! \         P                  \         P                  ^ 4      p V P                  4        R#   \        \
        3 d     R# i ; i)z<Check whether AF_QIPCRTR sockets are supported on this host.FT)r8   
AF_QIPCRTRrK   rD   rE   r=   rF   s    r   _have_socket_qipcrtrr]      sL    MM&++V->->B 	
		 G$ rW   c                     \        4       p V RJ# )z:Check whether AF_VSOCK sockets are supported on this host.N)r?   )cids    r   _have_socket_vsockr`      s    
)CtOr   c                      \         P                   ! \         P                  \         P                  \         P                  4      p V P	                  4        R#   \
        \        3 d     R# i ; i)z>Check whether AF_BLUETOOTH sockets are supported on this host.FT)r8   AF_BLUETOOTHSOCK_STREAMBTPROTO_RFCOMMrD   rE   r=   rF   s    r   _have_socket_bluetoothre      sT     MM&--v/A/A6CXCXY 	
		 G$ rI   c                      \         P                   ! \         P                  \         P                  \         P                  4      p V P	                  4        R#   \
        \        3 d     R# i ; i)z?Check whether BTPROTO_L2CAP sockets are supported on this host.FT)r8   rb   rT   BTPROTO_L2CAPrD   rE   r=   rF   s    r   _have_socket_bluetooth_l2caprh      sR    MM&--v/D/DfFZFZ[ 	
		 G$ rI   c                      \         P                   ! \         P                  \         P                  \         P                  4      p V P	                  4        R#   \
        \        3 d     R# i ; i)z;Check whether AF_HYPERV sockets are supported on this host.FT)r8   	AF_HYPERVrc   HV_PROTOCOL_RAWrD   rE   r=   rF   s    r   _have_socket_hypervrl      sR    MM&**F,>,>@V@VW 	
		 G$ rI   c              #      "   \         P                  ! 4       p \         P                  ! V 4       R x  \         P                  ! V4       R #   \         P                  ! T4       i ; i5ir   )r8   getdefaulttimeoutsetdefaulttimeout)timeoutold_timeouts   & r   socket_setdefaulttimeoutrr      sE     **,K.  )  -  -s   A&A A&A##A&c               #      "   \         P                  R9  d   Rx  R# \        P                  ! 4       ;_uu_ 4        \        P                  ! RR\
        R7       Rx  RRR4       R#   + '       g   i     R# ; i5i)win32Nalwaysz9received malformed or improperly-truncated ancillary data)actionmessagecategory>   rt   darwin)sysplatformwarningscatch_warningsfilterwarningsRuntimeWarningr   r   r    downgrade_malformed_data_warningr      sU      ||..		 	 	"	" 	O#	

 	 
#	"	"	"s   9A;"A'
A;'A8	2	A;IPPROTO_UDPLITEic                   0   a  ] tR tRt o ]R 4       tRtV tR# )TestLazyImporti  c                "    \        R RR04       R# )r8   array	selectorsNr   selfs   &r   test_lazy_importTestLazyImport.test_lazy_import  s    Hw&<=r   r   N)__name__
__module____qualname____firstlineno__r   r   __static_attributes____classdictcell____classdict__s   @r   r   r     s     > >r   r   c                   ,   a  ] tR tRt o R tR tRtV tR# )SocketTCPTesti  c                    \         P                   ! \         P                  \         P                  4      V n        \        P
                  ! V P                  4      V n        V P                  P                  4        R # r   )r8   AF_INETrc   servr	   	bind_portportlistenr   s   &r   setUpSocketTCPTest.setUp  sD    MM&..&2D2DE	!++DII6			r   c                H    V P                   P                  4        R V n         R # r   r   rD   r   s   &r   tearDownSocketTCPTest.tearDown      			r   r   r   Nr   r   r   r   r   r   r   r   r   s   @r   r   r     s     
 r   r   c                   ,   a  ] tR tRt o R tR tRtV tR# )SocketUDPTesti  c                    \         P                   ! \         P                  \         P                  4      V n        \        P
                  ! V P                  4      V n        R # r   )r8   r   rK   r   r	   r   r   r   s   &r   r   SocketUDPTest.setUp  s4    MM&..&2C2CD	!++DII6	r   c                H    V P                   P                  4        R V n         R # r   r   r   s   &r   r   SocketUDPTest.tearDown  r   r   r   Nr   r   s   @r   r   r     s     7 r   r   c                   &   a  ] tR tRt o R tRtV tR# )SocketUDPLITETesti   c                    \         P                   ! \         P                  \         P                  \         P                  4      V n        \
        P                  ! V P                  4      V n        R # r   )r8   r   rK   r   r   r	   r   r   r   s   &r   r   SocketUDPLITETest.setUp"  s<    MM&..&2C2CVE[E[\	!++DII6	r   r   N)r   r   r   r   r   r   r   r   s   @r   r   r      s     7 7r   r   c                      a  ] tR tRt o RtRt^t Rt]P                  ! ]4      t
 Rt]R]P                  ! ]4      ^,          ,          ,          tR tRtV tR	# )
SocketCANTesti'  zTo be able to run this test, a `vcan0` CAN interface can be created with
the following commands:
# modprobe vcan
# ip link add dev vcan0 type vcan
# ip link set up vcan0
vcan0z=IB3x8sz@3I4l2Ixc                   \         P                   ! \         P                  \         P                  \         P                  4      V n        V P                  V P                  P                  4        V P                  P                  V P                  34       R#   \         d'    T P                  R T P                  ,          4        R# i ; i)%network interface `%s` does not existN)r8   rA   rB   rC   rG   
addCleanuprD   bind	interfacer=   skipTestr   s   &r   r   SocketCANTest.setUpP  s|    v}}foov~~N%	+FFKK)* 	+MMA>>* +	+s   .&B -CCrF   N)r   r   r   r   __doc__r   bufsizecan_frame_fmtr;   calcsizecan_frame_sizebcm_cmd_msg_fmtr   r   r   r   s   @r   r   r   '  sc      IG M__]3N   Osfooo>BCCO+ +r   r   c                   .   a  ] tR tRt o RtRtR tRtV tR# )SocketRDSTestiZ  zTTo be able to run this test, the `rds` kernel module must be loaded:
# modprobe rds
    c                T   \         P                   ! \         P                  \         P                  ^ 4      V n        V P	                  V P                  P
                  4        \        P                  ! V P                  4      V n        R#   \         d    T P                  R4        R# i ; i)r   zunable to bind RDS socketN)r8   rS   rT   r   r   rD   r	   r   r   r=   r   r   s   &r   r   SocketRDSTest.setUpa  sk    MM&--1F1FJ			(	7%//		:DI 	7MM56	7s    %B B'&B'r   N)	r   r   r   r   r   r   r   r   r   r   s   @r   r   r   Z  s      G7 7r   r   c                   H   a  ] tR tRt o RtR tR tR tR tR t	R t
R	tV tR
# )ThreadableTestij  a1  Threadable Test class

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

    class NewClass (OldClass, ThreadableTest):
        pass

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

    clientSetUp ()
    clientTearDown ()

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

    def testFoo(self):
        # Server portion

    def _testFoo(self):
        # Client portion

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

Note, the server setup function cannot call any blocking
functions that rely on the client thread during setup,
unless serverExplicitReady() is called just before
the blocking call (such as in setting up a client/server
connection and performing the accept() in setUp().
c                J    V P                   V n        V P                  V n         R # r   )r   _ThreadableTest__setUp_setUpr   s   &r   __init__ThreadableTest.__init__  s    zz[[
r   c                :    V P                   P                  4        R# )zThis method allows the server to explicitly indicate that
it wants the client thread to proceed. This is useful if the
server is about to execute a blocking routine that is
dependent upon the client thread during its setup routine.N)server_readysetr   s   &r   serverExplicitReady"ThreadableTest.serverExplicitReady  s    
 	r   c                X  a  S P                  \        P                  ! 4       4       \        P                  ! 4       S n        \        P                  ! 4       S n        \        P                  ! 4       S n        \        P                  ! ^4      S n        RS n
        V 3R lpS P                  V4       S P                  4       pVP                  R4      pW#^,           R p\        S RV,           4      p\        P                   ! S P"                  V34      S n         S P'                  4         S P
                  P)                  4        S P                  P+                  4        S P                  S P                  P*                  4       R#    RS n
        h ; i  S P
                  P)                  4        i ; i)   Fc                  |   < S P                   P                  4       '       d   S P                   P                  4       hR # r   )queueqsizegetr   s   r   raise_queued_exception5ThreadableTest._setUp.<locals>.raise_queued_exception  s,    zz!!jjnn&& "r   .N_T)enterContextr
   wait_threads_exit	threadingEventr   client_readydoner   Queueserver_crashedr   idrfindgetattrthreadstart_new_thread	clientRunclient_threadr   r   wait)r   r   
methodnamer   test_methods   f    r   r   ThreadableTest._setUp  s9   *<<>?%OO-%OO-OO%	[[^
#	' 	./ WWY
S!!%
dC*$45#44NN[N,	$LLN
 !!# 		'	"&D!!#s   F   
F

F F)c                   V P                   P                  4         V P                  4         T P                  P                  4        T P                  '       d   T P                  4        R # \        TR4      '       g   \        R4      h T! 4        T P                  4        R #   \         dQ   pT P                  P                  T4       T P                  4         R p?T P                  P                  4        R # R p?ii ; i  T P                  P                  4        i ; i  \         d&   pT P                  P                  T4        R p?LR p?ii ; i  T P                  4        i ; i)N__call__z%test_func must be a callable function)r   r   clientSetUpBaseExceptionr   putclientTearDownr   r   r   r7   	TypeError)r   	test_funces   && r   r   ThreadableTest.clientRun  s    	$ !!#!y*--CDD	"K !!  	JJNN1!!!#	
 !!#  	JJNN1	 !sS   B" 	D "C=-+C8D  8C==D   DE*E
E 
EE E$c                    \        R 4      h)z clientSetUp must be implemented.)NotImplementedErrorr   s   &r   r   ThreadableTest.clientSetUp  s    !"DEEr   c                d    V P                   P                  4        \        P                  ! 4        R # r   )r   r   r   exitr   s   &r   r   ThreadableTest.clientTearDown  s    		r   )__setUpr   r   r   r   r   r   r   N)r   r   r   r   r   r   r   r   r   r   r   r   r   r   s   @r   r   r   j  s0     #J!
 (@",F r   r   c                   6   a  ] tR tRt o RR ltR tR tRtV tR# )ThreadedTCPSocketTesti  c                \    \         P                  WR 7       \        P                  V 4       R# )
methodNameNr   r   r   r   r  s   &&r   r   ThreadedTCPSocketTest.__init__  !    t;%r   c                v    \         P                   ! \         P                  \         P                  4      V n        R # r   )r8   r   rc   clir   s   &r   r   !ThreadedTCPSocketTest.clientSetUp  s    ==1C1CDr   c                r    V P                   P                  4        R V n         \        P                  V 4       R # r   r	  rD   r   r   r   s   &r   r   $ThreadedTCPSocketTest.clientTearDown  %    %%d+r   r	  NrunTest	r   r   r   r   r   r   r   r   r   r   s   @r   r   r     s     &E, ,r   r   c                   6   a  ] tR tRt o RR ltR tR tRtV tR# )ThreadedUDPSocketTesti  c                \    \         P                  WR 7       \        P                  V 4       R# r  )r   r   r   r  s   &&r   r   ThreadedUDPSocketTest.__init__  r  r   c                v    \         P                   ! \         P                  \         P                  4      V n        R # r   )r8   r   rK   r	  r   s   &r   r   !ThreadedUDPSocketTest.clientSetUp  s    ==1B1BCr   c                r    V P                   P                  4        R V n         \        P                  V 4       R # r   r  r   s   &r   r   $ThreadedUDPSocketTest.clientTearDown  r  r   r  Nr  r  r   s   @r   r  r    s     &D, ,r   r  z'UDPLITE sockets required for this test.c                   6   a  ] tR tRt o RR ltR tR tRtV tR# )ThreadedUDPLITESocketTesti  c                \    \         P                  WR 7       \        P                  V 4       R# r  )r   r   r   r  s   &&r   r   "ThreadedUDPLITESocketTest.__init__  s!    ""4"?%r   c                    \         P                   ! \         P                  \         P                  \         P                  4      V n        R # r   )r8   r   rK   r   r	  r   s   &r   r   %ThreadedUDPLITESocketTest.clientSetUp  s&    ==1B1BFDZDZ[r   c                r    V P                   P                  4        R V n         \        P                  V 4       R # r   r  r   s   &r   r   (ThreadedUDPLITESocketTest.clientTearDown   r  r   r  Nr  r  r   s   @r   r  r    s     &\, ,r   r  c                   6   a  ] tR tRt o RR ltR tR tRtV tR# )ThreadedCANSocketTesti  c                \    \         P                  WR 7       \        P                  V 4       R# r  )r   r   r   r  s   &&r   r   ThreadedCANSocketTest.__init__  r  r   c                   \         P                   ! \         P                  \         P                  \         P                  4      V n         V P                  P                  V P                  34       R #   \         d     R # i ; ir   )r8   rA   rB   rC   r	  r   r   r=   r   s   &r   r   !ThreadedCANSocketTest.clientSetUp  sR    ==P	HHMM4>>+, 	 	s   	&A1 1B ?B c                r    V P                   P                  4        R V n         \        P                  V 4       R # r   r  r   s   &r   r   $ThreadedCANSocketTest.clientTearDown  r  r   r  Nr  r  r   s   @r   r$  r$    s     &, ,r   r$  c                   6   a  ] tR tRt o RR ltR tR tRtV tR# )ThreadedRDSSocketTesti  c                \    \         P                  WR 7       \        P                  V 4       R# r  )r   r   r   r  s   &&r   r   ThreadedRDSSocketTest.__init__  r  r   c                   \         P                   ! \         P                  \         P                  ^ 4      V n         V P                  P	                  \
        ^ 34       V P                  P                  4       V n        R#   \         d     R# i ; ir   N)	r8   rS   rT   r	  r   HOSTgetsocknamecli_addrr=   r   s   &r   r   !ThreadedRDSSocketTest.clientSetUp  sa    ==0E0EqI	HHMM4)$ HH002DM 	 	s   A A= =BBc                r    V P                   P                  4        R V n         \        P                  V 4       R # r   r  r   s   &r   r   $ThreadedRDSSocketTest.clientTearDown*  r  r   r	  r3  Nr  r  r   s   @r   r,  r,    s     &	, ,r   r,  
need fcntlz$VSOCK does not work on Microsoft WSLz%VSOCK sockets required for this test.z-This test can only be run on a virtual guest.c                   B   a  ] tR tRt o R	R ltR tR tR tR tRt	V t
R# )
ThreadedVSOCKSocketStreamTesti/  c                p    \         P                  P                  WR 7       \        P                  V 4       R# r  r#   TestCaser   r   r  s   &&r   r   &ThreadedVSOCKSocketStreamTest.__init__7  s'    ""4"?%r   c                \   \         P                   ! \         P                  \         P                  4      V n        V P	                  V P                  P
                  4       V P                  P                  \         P                  \        34       V P                  P                  4        V P                  4        V P                  P                  \        P                  4       V P                  P                  4       w  V n        V n        V P	                  V P                  P
                  4       R # r   )r8   AF_VSOCKrc   r   r   rD   r   VMADDR_CID_ANY	VSOCKPORTr   r   
settimeoutr   LOOPBACK_TIMEOUTacceptconnconnaddrr   s   &r   r   #ThreadedVSOCKSocketStreamTest.setUp;  s    MM&//63E3EF			(		--y9:		  "		W556#'99#3#3#5 	4=		(r   c                   \         P                  ! R 4       \        P                  ! \        P                  \        P                  4      V n        V P                  V P
                  P                  4       \        4       pV\        P                  \        P                  39   d   \        P                  pV P
                  P                  V\        34       R# 皙?N)timesleepr8   r@  rc   r	  r   rD   r?   VMADDR_CID_HOSTrA  VMADDR_CID_LOCALconnectrB  )r   r_   s   & r   r   )ThreadedVSOCKSocketStreamTest.clientSetUpE  s    

3==&2D2DE'i6))6+@+@AA))C#y)*r   c                     V P                   P                  R 4      pV P                  X\        4       R#   \         d%   pT P                  \	        T4      4        Rp?LBRp?ii ; i   N)rF  recvPermissionErrorr   reprassertEqualMSG)r   msgexcs   &  r   
testStream(ThreadedVSOCKSocketStreamTest.testStreamO  sP    	%))..&C 	c"  	%MM$s)$$	%s   5 A$ AA$c                x    V P                   P                  \        4       V P                   P                  4        R # r   r	  sendrY  rD   r   s   &r   _testStream)ThreadedVSOCKSocketStreamTest._testStreamV       cr   )r	  rF  rG  r   Nr  r   r   r   r   r   r   r   r\  ra  r   r   r   s   @r   r:  r:  /  s#     &)+# r   r:  c                   F   a  ] tR tRt o RtR
R ltR tR tR tR t	Rt
V tR	# )SocketConnectedTestiZ  zSocket tests for client-server connection.

self.cli_conn is a client socket connected to the server.  The
setUp() method guarantees that it is connected to the server.
c                2    \         P                  WR 7       R# r  )r   r   r  s   &&r   r   SocketConnectedTest.__init__a      &&t&Cr   c                    \         P                  V 4       V P                  4        V P                  P	                  4       w  rWn        R # r   )r   r   r   r   rE  cli_connr   rF  addrs   &  r   r   SocketConnectedTest.setUpd  s7    ##D) 	  "YY%%'
r   c                r    V P                   P                  4        R V n         \        P                  V 4       R # r   )rk  rD   r   r   r   s   &r   r   SocketConnectedTest.tearDownl  s'    &&t,r   c                    \         P                  V 4       V P                  P                  \        V P
                  34       V P                  V n        R # r   )r   r   r	  rP  r1  r   	serv_connr   s   &r   r   SocketConnectedTest.clientSetUpq  s6    ))$/$		*+r   c                r    V P                   P                  4        R V n         \        P                  V 4       R # r   )rr  rD   r   r   r   s   &r   r   "SocketConnectedTest.clientTearDownv  s'    ,,T2r   rk  rr  Nr  )r   r   r   r   r   r   r   r   r   r   r   r   r   s   @r   rf  rf  Z  s)     D-
"
3 3r   rf  c                   H   a  ] tR tRt o R
R ltR tR tR tR tR t	Rt
V tR	# )SocketPairTesti{  c                    \         P                  P                  WR 7       \        P                  V 4       RV n        RV n        R# r  )r#   r=  r   r   r	  r   r  s   &&r   r   SocketPairTest.__init__}  s5    ""4"?%	r   c                ,    \         P                  ! 4       # r   )r8   
socketpairr   s   &r   r|  SocketPairTest.socketpair  s      ""r   c                @    V P                  4       w  V n        V n        R # r   )r|  r   r	  r   s   &r   r   SocketPairTest.setUp  s    "oo/	48r   c                l    V P                   '       d   V P                   P                  4        R V n         R # r   r   r   s   &r   r   SocketPairTest.tearDown  s     999IIOO	r   c                    R # r   r   r   s   &r   r   SocketPairTest.clientSetUp      r   c                    V P                   '       d   V P                   P                  4        R V n         \        P                  V 4       R # r   r  r   s   &r   r   SocketPairTest.clientTearDown  s.    888HHNN%%d+r   )r	  r   Nr  )r   r   r   r   r   r|  r   r   r   r   r   r   r   s   @r   rx  rx  {  s(     #0
, ,r   rx  c                   6   a  ] tR tRt o RtR tR tR tRtV t	R# )SocketTestBasei  zA base class for socket tests.

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

Creates a socket self.serv and sets self.serv_addr to its address.
c                    V P                  4       V n        V P                  V P                  4       V P	                  4        R # r   )	newSocketr   r   close_server
bindServerr   s   &r   r   SocketTestBase.setUp  s,    NN$	))*r   c                H    V P                   P                  4        R V n         R # r   r   r   s   &r   r  SocketTestBase.close_server  r   r   c                z    V P                  V P                  4       V P                  P                  4       V n        R# )z9Bind server socket and set self.serv_addr to its address.N)bindSockr   r2  	serv_addrr   s   &r   r  SocketTestBase.bindServer  s&    dii ..0r   )r   r  N)
r   r   r   r   r   r   r  r  r   r   r   s   @r   r  r    s     
1 1r   r  c                   6   a a ] tR tRt oRtV 3R ltRtVtV ;t# )SocketListeningTestMixini  z%Mixin to listen on the server socket.c                X   < \         SV `  4        V P                  P                  4        R # r   )superr   r   r   r   	__class__s   &r   r   SocketListeningTestMixin.setUp  s    		r   r   )	r   r   r   r   r   r   r   r   __classcell__r  r   s   @@r   r  r    s     / r   r  c                   N   a a ] tR tRt oRtV 3R ltR tR tR tR t	Rt
VtV ;t# )	ThreadedSocketTestMixini  zMixin to add client socket and allow client/server tests.

Client socket is self.cli and its address is self.cli_addr.  See
ThreadableTest for usage information.
c                R   < \         SV `  ! V/ VB  \        P                  V 4       R # r   )r  r   r   r   r%   kwargsr  s   &*,r   r    ThreadedSocketTestMixin.__init__  s#    $)&)%r   c                P    V P                  4       V n        V P                  4        R # r   )newClientSocketr	  
bindClientr   s   &r   r   #ThreadedSocketTestMixin.clientSetUp  s    '')r   c                "    V P                  4       # )z&Return a new socket for use as client.)r  r   s   &r   r  'ThreadedSocketTestMixin.newClientSocket  s    ~~r   c                z    V P                  V P                  4       V P                  P                  4       V n        R# )z8Bind client socket and set self.cli_addr to its address.N)r  r	  r2  r3  r   s   &r   r  "ThreadedSocketTestMixin.bindClient  s&    dhh,,.r   c                r    V P                   P                  4        R V n         \        P                  V 4       R # r   r  r   s   &r   r   &ThreadedSocketTestMixin.clientTearDown  r  r   r7  )r   r   r   r   r   r   r   r  r  r   r   r   r  r  s   @@r   r  r    s(     & /
, ,r   r  c                   Z   a a ] tR tRt oRtV 3R ltV 3R ltV 3R ltV 3R ltRt	Vt
V ;t# )ConnectedStreamTestMixini  zMixin to allow client/server stream tests with connected client.

Server's socket representing connection to client is self.cli_conn
and client's connection to server is self.serv_conn.  (Based on
SocketConnectedTest.)
c                   < \         SV `  4        V P                  4        V P                  P	                  4       w  rWn        R # r   )r  r   r   r   rE  rk  )r   rF  rm  r  s   &  r   r   ConnectedStreamTestMixin.setUp  s3     	  "YY%%'
r   c                f   < V P                   P                  4        R V n         \        SV `  4        R # r   )rk  rD   r  r   r  s   &r   r   !ConnectedStreamTestMixin.tearDown  s%    r   c                   < \         SV `  4        V P                  P                  V P                  4       V P                  V n        R # r   )r  r   r	  rP  r  rr  r  s   &r   r   $ConnectedStreamTestMixin.clientSetUp  s/    (r   c                   <  V P                   P                  4        R V n         \        SV `  4        R #   \         d     Li ; ir   )rr  rD   rE   r  r   r  s   &r   r   'ConnectedStreamTestMixin.clientTearDown  s@    	NN  "!DN 	   		s   !4 AArv  )r   r   r   r   r   r   r   r   r   r   r   r  r  s   @@r   r  r    s#     
"
! !r   r  c                   *   a  ] tR tRt o RtR tRtV tR# )UnixSocketTestBasei  z(Base class for Unix-domain socket tests.c                    \         P                  ! 4       pV P                  \        P                  V4       \         P
                  ! W4       R # r   )r	   create_unix_domain_namer   r   unlinkbind_unix_socket)r   sockpaths   && r   r  UnixSocketTestBase.bindSock	  s2    446	(($/&&t2r   r   N)r   r   r   r   r   r  r   r   r   s   @r   r  r    s     23 3r   r  c                   *   a  ] tR tRt o RtR tRtV tR# )UnixStreamBasei  z-Base class for Unix-domain SOCK_STREAM tests.c                h    \         P                   ! \         P                  \         P                  4      # r   )r8   AF_UNIXrc   r   s   &r   r  UnixStreamBase.newSocket      }}V^^V-?-?@@r   r   Nr   r   r   r   r   r  r   r   r   s   @r   r  r    s     7A Ar   r  c                   @   a a ] tR tRt oRt]tV 3R ltR tRt	Vt
V ;t# )InetTestBasei  z!Base class for IPv4 socket tests.c                T   < \         SV `  4        V P                  ^,          V n        R# r   N)r  r   r  r   r  s   &r   r   InetTestBase.setUp  s    NN1%	r   c                H    \         P                  ! WP                  R 7       R# )hostN)r	   r   r  r   r  s   &&r   r  InetTestBase.bindSock  s    995r   )r   )r   r   r   r   r   r1  r  r   r  r   r   r  r  s   @@r   r  r    s     +D&6 6r   r  c                   *   a  ] tR tRt o RtR tRtV tR# )TCPTestBasei!  z#Base class for TCP-over-IPv4 tests.c                h    \         P                   ! \         P                  \         P                  4      # r   )r8   r   rc   r   s   &r   r  TCPTestBase.newSocket$  r  r   r   Nr  r   s   @r   r  r  !       -A Ar   r  c                   *   a  ] tR tRt o RtR tRtV tR# )UDPTestBasei'  z#Base class for UDP-over-IPv4 tests.c                h    \         P                   ! \         P                  \         P                  4      # r   )r8   r   rK   r   s   &r   r  UDPTestBase.newSocket*  s    }}V^^V->->??r   r   Nr  r   s   @r   r  r  '  s     -@ @r   r  c                   *   a  ] tR tRt o RtR tRtV tR# )UDPLITETestBasei-  z'Base class for UDPLITE-over-IPv4 tests.c                    \         P                   ! \         P                  \         P                  \         P                  4      # r   )r8   r   rK   r   r   s   &r   r  UDPLITETestBase.newSocket0  s%    }}V^^V->->@V@VWWr   r   Nr  r   s   @r   r  r  -  s     1X Xr   r  c                   *   a  ] tR tRt o RtR tRtV tR# )SCTPStreamBasei3  z;Base class for SCTP tests in one-to-one (SOCK_STREAM) mode.c                    \         P                   ! \         P                  \         P                  \         P                  4      # r   )r8   r   rc   IPPROTO_SCTPr   s   &r   r  SCTPStreamBase.newSocket6  s*    }}V^^V-?-?#002 	2r   r   Nr  r   s   @r   r  r  3  s     E2 2r   r  c                   2    ] tR tRtRt]P                  tRtR# )Inet6TestBasei;  z!Base class for IPv6 socket tests.r   N)	r   r   r   r   r   r	   HOSTv6r  r   r   r   r   r  r  ;  s    +Dr   r  c                   *   a  ] tR tRt o RtR tRtV tR# )UDP6TestBasei@  z#Base class for UDP-over-IPv6 tests.c                h    \         P                   ! \         P                  \         P                  4      # r   )r8   AF_INET6rK   r   s   &r   r  UDP6TestBase.newSocketC  s    }}V__f.?.?@@r   r   Nr  r   s   @r   r  r  @  r  r   r  c                   *   a  ] tR tRt o RtR tRtV tR# )UDPLITE6TestBaseiF  z'Base class for UDPLITE-over-IPv6 tests.c                    \         P                   ! \         P                  \         P                  \         P                  4      # r   )r8   r  rK   r   r   s   &r   r  UDPLITE6TestBase.newSocketI  s%    }}V__f.?.?AWAWXXr   r   Nr  r   s   @r   r  r  F  s     1Y Yr   r  c                8   aa R oVV3R lpR pV '       d   V# T# )ag  Skip decorated test if condition is true, add client_skip decorator.

If the decorated object is not a class, sets its attribute
"client_skip" to a decorator which will return an empty function
if the test is to be skipped, or the original function if it is
not.  This can be used to avoid running the client part of a
skipped test when using ThreadableTest.
c                      R # r   r   )r%   r  s   *,r   client_pass%skipWithClientIf.<locals>.client_passX  r  r   c                    < \         P                  ! S4      ! V 4      p\        V \        4      '       g   V3R  lVn        V# )c                    < S# r   r   )r   r  s   &r   r   3skipWithClientIf.<locals>.skipdec.<locals>.<lambda>]  s    ;r   )r#   skip
isinstancetyper   )objretvalr  reasons   & r   skipdec!skipWithClientIf.<locals>.skipdecZ  s0    v&s+#t$$!6Fr   c                 f    \        V \        4      '       g   \        V R 4      '       g	   R V n        V # )r   c                     V # r   r   r   s   &r   r   5skipWithClientIf.<locals>.noskipdec.<locals>.<lambda>a  s    r   )r  r  r7   r   )r  s   &r   	noskipdec#skipWithClientIf.<locals>.noskipdec_  s'    3%%m)D)D)CO
r   r   )r0   r  r  r  r  s   &f  @r   skipWithClientIfr  O  s!    
  7.Y.r   c                    V Uu. uF  p\        W4      '       d   K  VNK  	  pp\        VRRP                  R V 4       4      ,           4      # u upi )z{Skip decorated test if obj is missing any of the given attributes.

Sets client_skip attribute as skipWithClientIf() does.
don't have , c              3   $   "   T F  qx  K  	  R # 5ir   r   .0names   & r   	<genexpr>requireAttrs.<locals>.<genexpr>m  s     *DGD4G   )r7   r  join)r  
attributesr
  missings   &*  r   requireAttrsr  f  sO    
 !+E
'#2Dtt
GE*DG*D!DDF F Fs
   AAc            	     R   RpV  Uu. uF5  p\        V\        4      '       g   K  \        \        V4      '       d   K3  VNK7  	  ppV'       d!   RRP	                  R V 4       4      ,           pM\V  Uu. uF+  p\        V\        4      '       d   \        \        V4      MTNK-  	  pp \        P                  ! V!  pVP                  4        \        VRJRP                  RP	                  R V  4       4      V4      4      # u upi u upi   \         d   p\        T4      p Rp?LYRp?ii ; i)a	  Skip decorated test if a socket cannot be created with given arguments.

When an argument is given as a string, will use the value of that
attribute of the socket module, or skip the test if it doesn't
exist.  Sets client_skip attribute as skipWithClientIf() does.
Nr  r  c              3   $   "   T F  qx  K  	  R # 5ir   r   r  s   & r   r   requireSocket.<locals>.<genexpr>{  s     'Ar  zcan't create socket({0}): {1}c              3   8   "   T F  p\        V4      x  K  	  R # 5ir   )strr	  os   & r   r  r    s     +dc!ffds   )
r  r  r7   r8   r  r   rD   r=   r  format)r%   errr  r  callargsrG   r   s   *      r   requireSocketr  p  s    C" Bds#s# ,3FC,@ sdG Bdii'A'AAA  $%# -7sC,@,@GFC(cI# 	 %	x(A
 GGI4'..II+d++S	23 3B
%  	a&C	s-   C<C<C<01D$D D&D!!D&c            	       $  a  ] tR tRt o ]P
                  ! ]RJR4      R 4       tR tR t	]P
                  ! ]RJR4      R 4       t
R tR	 tR
 tR tR t]P
                  ! ]P"                  R8H  R4      R 4       t]P&                  ! ]P*                  R4      R 4       t]P
                  ! ]P0                  R8H  R4      ]P
                  ! ]P4                  R4      R 4       4       tR tR tR t]P
                  ! ]! ] R4      R4      ]P
                  ! ]! ] R4      R4      R 4       4       t!]P
                  ! ]! ] R4      R4      ]PD                  ! R4      R  4       4       t#]P
                  ! ]! ] R!4      R"4      ]PD                  ! R!4      R# 4       4       t$]P
                  ! ]! ] R$4      R%4      ]PD                  ! R$4      R& 4       4       t%]P
                  ! ]! ]R'4      R(4      R) 4       t&R* t'R+ t(R, t)R- t*R. t+]P
                  ! ]! ] R/4      R04      R1 4       t,]P
                  ! ]! ] R24      R34      R4 4       t-]P
                  ! ]! ] R24      R34      R5 4       t.]P
                  ! ]! ] R64      R74      R8 4       t/]P
                  ! ]! ] R64      R74      R9 4       t0R: t1R; t2R< t3R= t4R> t5R? t6R@ t7]P
                  ! ]P"                  R8H  R4      RA 4       t8]P
                  ! ]P"                  R8H  R4      ]P
                  ! ]! ] RB4      RC4      RD 4       4       t9RE t:]P&                  ! ];RJ RF4      RG 4       t<RH t=]P
                  ! ]P|                  ! RI4      RJ4      RK 4       t?RL t@RM tARN tBRO tCRP tDRQ tERR tFRS tGRT tHRU tIRV tJ]P                  ]P&                  ! ];RJ RF4      RW 4       4       tL]P
                  ! ]P4                  RX4      RY 4       tM]P
                  ! ]P4                  RX4      RZ 4       tNR[ tO]P
                  ! ]P4                  RX4      ]P&                  ! ]P0                  R\8H  R]4      ]P&                  ! ]PR^4      ]P
                  ! ]! ] R4      R_4      ]PD                  ! R4      R` 4       4       4       4       4       tQ]P
                  ! ]P4                  RX4      ]P
                  ! ]P0                  R\8H  Ra4      Rb 4       4       tR]P
                  ! ]P4                  RX4      ]P&                  ! ]P0                  R\8H  R]4      ]P&                  ! ]PR^4      ]P
                  ! ]! ] R4      R_4      ]PD                  ! R4      Rc 4       4       4       4       4       tS]P
                  ! ]P4                  RX4      ]P
                  ! ]P0                  R\8H  Ra4      Rd 4       4       tTRe tURf tVRg tW]P
                  ! ]! ]Rh4      Ri4      Rj 4       tXRk tYRl tZRm t[Rn t\Ro t]]P&                  ! ]P"                  R8H  Rp4      Rq 4       t^Rr t_Rs t`Rt taRu tbRv tcRw tdRxteV tfR# )yGeneralModuleTestsi  Nzneed _socket modulec                   V P                  \        P                  ! \        P                  4      4       V P                  \        R 4      ;_uu_ 4        ^\        P                  n        RRR4       R#   + '       g   i     R# ; i)	immutableN)
assertTruegc
is_tracked_socketr8   assertRaisesRegexr   foor   s   &r   test_socket_type#GeneralModuleTests.test_socket_type  sI    gnn56##I{;;!"GNN <;;;s   A22B	c                    ^ RI pV P                  \        P                  VP                  J 4       \        P                  ! 4       pV P	                  V\        P                  4       VP                  4        R# r0  )r$  r!  r8   
SocketTypeassertIsInstancerD   )r   r$  rG   s   &  r   test_SocketType_is_socketobject2GeneralModuleTests.test_SocketType_is_socketobject  sJ    ))W^^;<MMOa!2!23		r   c                l   \         P                   ! \         P                  \         P                  4      pV;_uu_ 4        V P                  R VP	                  4       ,          \        V4      4       V P                  R\         P                  ,          \        V4      4       V P                  R\         P                  ,          \        V4      4       V P                  R\        V4      4       V P                  R\        V4      4       VP                  R4       V P                  R\        V4      4       V P                  \        VP                  4       4      \        V4      4       RRR4       V P                  R\        V4      4       V P                  R\        V4      4       R#   + '       g   i     LH; i)	zfd=%iz	family=%sztype=%szproto=0raddrladdrNz[closed]	127.0.0.1r   )
r8   r   rc   assertInfilenorW  assertNotInr   r  r2  r   rG   s   & r   	test_reprGeneralModuleTests.test_repr  s   MM&..&*<*<=QMM'AHHJ.Q8MM+6Q@MM)f&8&88$q'BMM)T!W-Wd1g.FF#$MM'47+MM#ammo.Q8  	j$q'*$q'* Qs   D%F##F3	c           	        \         P                  ! \         P                  \         P                  4      pR VP	                  4       : RVP
                  : RVP                  : RVP                  : R2	pV P                  \        V4      V4       VP                  4        RVP
                  : RVP                  : RVP                  : R2pV P                  \        V4      V4       R#   TP                  4        i ; i)z<socket object, fd=z	, family=z, type=z, proto=>z<socket object, fd=-1, family=N)r$  r8   r   rc   r4  familyr  protorX  rW  rD   )r   rG   expecteds   &  r   test_csocket_repr$GeneralModuleTests.test_csocket_repr  s    NN7??G,?,?@	88:qxxBHT!Wh/GGIxx2a(+ GGIs   AC( (C:c                   \         P                   ! \         P                  \         P                  4      ;_uu_ 4       p\        V4      pV P	                  VP                  4       VP                  4       4       R R R 4       R p\        P                  ! 4         XP                  4        V P                  R4       R #   + '       g   i     LK; i  \         d     R # i ; i)NzSocket proxy still exists)
r8   r   rc   r   rX  r4  r   
gc_collectfailReferenceError)r   rG   ps   &  r   test_weakrefGeneralModuleTests.test_weakref  s    ]]6>>6+=+=>>!aAQXXZ4 ? 	3HHJ II12 ?>  		s   :B9C 9C		CCc                   R pV P                  \        VR,          R7      ;_uu_ 4        \        h  + '       g   i     M; iT P                  \        TR,          R7      ;_uu_ 4        \        P                  h  + '       g   i     M; iT P                  \        TR,          R7      ;_uu_ 4        \        P                  h  + '       g   i     R# ; i)z$Error raising socket exception (%s).r=   rZ  Nzsocket.herrorzsocket.gaierror)assertRaisesr=   r8   herrorgaierrorr   rZ  s   & r   testSocketError"GeneralModuleTests.testSocketError  s    4wC)O<<M =<wC/,ABB-- CBwC2C,CDD//! EDDs!   0A 	)A::B
	3CC	c                .	   \         P                   ! \         P                  \         P                  4      pV P                  VP                  4       VP                  R4       VP                  4       pV P                  \        4      ;_uu_ 4       pVP                  RV4       RRR4       V P                  \        XP                  4      R4       V P                  \        4      ;_uu_ 4       pVP                  RV4       RRR4       V P                  \        VP                  4      R4       V P                  \        4      ;_uu_ 4       pVP                  RR4       RRR4       V P                  R\        VP                  4      4       V P                  \        4      ;_uu_ 4       pVP                  R^ V4       RRR4       V P                  \        VP                  4      R4       V P                  \        4      ;_uu_ 4       pVP                  R^ V4       RRR4       V P                  \        VP                  4      R4       V P                  \        4      ;_uu_ 4       pVP                  R^ R4       RRR4       V P                  R\        VP                  4      4       V P                  \        4      ;_uu_ 4       pVP                  RRV4       RRR4       V P                  \        4      ;_uu_ 4       pVP                  RRR4       RRR4       V P                  \        4      ;_uu_ 4       pVP                  R4       RRR4       V P                  R	\        VP                  4      4       V P                  \        4      ;_uu_ 4       pVP                  R^ V^4       RRR4       V P                  R
\        VP                  4      4       R#   + '       g   i     EL9; i  + '       g   i     EL; i  + '       g   i     EL; i  + '       g   i     EL]; i  + '       g   i     EL; i  + '       g   i     EL; i  + '       g   i     EL; i  + '       g   i     ELZ; i  + '       g   i     EL7; i  + '       g   i     L; i) u   ☠Nz*a bytes-like object is required, not 'str'y              @z.a bytes-like object is required, not 'complex'   fooznot NoneTypebarz	(1 given)z	(4 given))rP  r   )r8   r   rK   r   rD   r   r2  rI  r   sendtorX  r  	exceptionr3  )r   rG   socknamecms   &   r   testSendtoErrors#GeneralModuleTests.testSendtoErrors  s   MM&..&*;*;< 	w==?y))RHHXx( *R\\*E	Gy))RHHR" *R\\*I	Ky))RHHVT" *nS%67y))RHHXq(+ *R\\*E	Gy))RHHRH% *R\\*I	Ky))RHHVQ% *nc",,&78y))RHHVUH- *y))RHHVT4( * y))RHHV *k3r||#45y))RHHVQ!, *k3r||#45C *)) *)) *)) *)) *)) *)) *))))) *)) *)sx   O*O$O8$PP  P4>Q7Q0Q0RO!	$O5	8P		P	 P1	4Q	Q	Q-	0R	R	c                R   \         P                   \         P                  '       d   \         P                   \         P                   \         P
                   \         P                   \         P                   \         P                   \         P                   \         P                   R # r   )r8   r   has_ipv6r  rc   rK   rB   SOCK_RDMrT   
SOL_SOCKETSO_REUSEADDRr   s   &r   testCrucialConstants'GeneralModuleTests.testCrucialConstants  sT    ???OOr   c                    \         P                   \         P                   \         P                  '       d   \         P                   R # R # r   )r8   IPPROTO_TCPIPPROTO_UDPrZ  IPPROTO_IPV6r   s   &r   testCrucialIpProtoConstants.GeneralModuleTests.testCrucialIpProtoConstants  s+    ??? r   ntWindows specificc                   \         P                   \         P                   \         P                   \         P                   \         P
                   \         P                   \         P                   \         P                   R # r   )	r8   IPPROTO_ICLFXBM
IPPROTO_STIPPROTO_CBTIPPROTO_IGPIPPROTO_RDPIPPROTO_PGMIPPROTO_L2TPr  r   s   &r   testWindowsSpecificConstants/GeneralModuleTests.testWindowsSpecificConstants  sJ    r   zWASI is missing these methodsc                    . ROpV F:  p\        \        P                  V4      '       d   K%  V P                  RV R24       K<  	  R# )_acceptzsocket method z is missingN)rs  r   rP  
connect_exgetpeernamer2  r   recvfromrecvfrom_intorS  
setsockoptshutdown)r7   r8   rB  )r   namesr
  s   &  r   test_socket_methods&GeneralModuleTests.test_socket_methods  s;    

 D6==$//		N4&<= r   ry   macOS specific testIPv6 required for this testc                L    0 RmpV F  pV P                  \        V4       K  	  R# )IPV6_CHECKSUMN>   
IPV6_RTHDRIPV6_TCLASSIPV6_DSTOPTSIPV6_HOPOPTSIPV6_NEXTHOPIPV6_PATHMTUIPV6_PKTINFOr  IPV6_DONTFRAGIPV6_HOPLIMITIPV6_RECVRTHDRIPV6_RECVTCLASSIPV6_RECVDSTOPTSIPV6_RECVHOPOPTSIPV6_RECVPATHMTUIPV6_RECVPKTINFOIPV6_USE_MIN_MTUIPV6_RECVHOPLIMITIPV6_RTHDRDSTOPTSIPV6_RTHDR_TYPE_0)assertHasAttrr8   )r   optsopts   &  r   test3542SocketOptions(GeneralModuleTests.test3542SocketOptions%  s%    
, Cvs+ r   c                   \         P                  ! 4       p \         P                  ! V4      pV P                  XP                  R4      ^ 8  R4        \         P                  ! V4      w  r4pVX.X,           p\         P                  ! V4      pWv9   g&   V P                  RV: R\        V4      : R24       R# R#   \         d    T P	                  R 4        Li ; i  \         d    T P	                  R 4        Li ; i)name lookup failurer   zError resolving host to ip.z1Error testing host resolution mechanisms. (fqdn: z, all: )N)r8   gethostnamegethostbynamer=   r   r!  findgethostbyaddrgetfqdnrB  rW  )r   hostnameiphnamealiasesipaddrsall_host_namesfqhns   &       r   testHostnameRes"GeneralModuleTests.testHostnameResB  s    %%'	1%%h/B 	)+HI	1&,&:&:2&>#EG #E*W4~~b!%IIY]_cdr_stu &  	1MM/0	1  	1MM/0	1s#   B9 C 9CCC:9C:c                   \         P                  R R3 F)  pV P                  \        P                  ! V4      V4       K+  	  \         P                  3 F0  pV P                  V\        P                  ! V4      ^,          4       K2  	  R# )z10.0.0.1255.255.255.255N)r	   HOSTv4rX  r8   r  r3  r  )r   rm  r  s   &  r   test_host_resolution'GeneralModuleTests.test_host_resolutionU  si    ")):7HIDV11$7> J
 #))*DMM$ 4 4T :1 => +r   c                b   R pR F  pV P                  \        VR7      ;_uu_ 4        \        P                  ! V4       RRR4       V P                  \        VR7      ;_uu_ 4        \        P                  ! V4       RRR4       K  	  R#   + '       g   i     LT; i  + '       g   i     K  ; i)z[resolving an invalid IP address did not raise OSError; can be caused by a broken DNS serverrH  N)z0.1.1.~1z1+.1.1.1z::1qz::1::2z1:1:1:1:1:1:1:1:1)rI  r=   r8   r  r  )r   explanationrm  s   &  r    test_host_resolution_bad_address3GeneralModuleTests.test_host_resolution_bad_address^  s~    3 	*D""7"55$$T* 6""7"<<$$T* =<	*55<<<s   B
%B
BB.sethostnameztest needs socket.sethostname()r  ztest needs socket.gethostname()c                   \         P                  ! 4       p \         P                  ! R 4        T P                  \         P                  ! 4       R 4       \         P                  ! R4       T P                  \         P                  ! 4       R4       \         P                  ! T4       R#   \         d<   pTP                  \        P
                  8X  d   T P                  R4        Rp?Lh Rp?ii ; i  \         P                  ! T4       i ; i)newztest should be run as rootNs   barrR  )r8   r  r  r=   errnoEPERMr   rX  )r   oldhnr   s   &  r   test_sethostname#GeneralModuleTests.test_sethostnameo  s     ""$	u%	&V//159v&V//159u%  	ww%++%:;;		 u%s)   B& A C/ &C,10C'&C''C,/Dif_nameindexz$socket.if_nameindex() not available.c                   \         P                  ! 4       pV F  w  r#V P                  V\        4       V P                  V\        4       V P                  V^ 4       \         P                  ! V4      pV P                  V\        4       V P                  W$4       \         P                  ! V4      pV P                  V\        4       V P                  W54       K  	  R# r0  )	r8   r  r+  intr  assertGreaterif_nametoindexrX  if_indextoname)r   
interfacesindexr
  _index_names   &     r   testInterfaceNameIndex)GeneralModuleTests.testInterfaceNameIndex  s     ((*
%KE!!%-!!$,ua(**40F!!&#.U+))%0E!!%-T) &r   r  z&socket.if_indextoname() not available.c                V   V P                  \        \        P                  ^ 4       V P                  \        \        P                  R4       V P                  \
        \        P                  ^R,          4       V P                  \        \        P                  R4       \        \        R4      '       d   \        \        P                  ! 4       4      pV FV  pVR,           pW19  g   K  V P                  \
        \        34      ;_uu_ 4        \        P                  ! V4       RRR4       KX  	  R FM  pW!9  g   K  V P                  \
        \        34      ;_uu_ 4        \        P                  ! V4       RRR4       KO  	  R# R#   + '       g   i     K  ; i  + '       g   i     Kz  ; i)r     	_DEADBEEFr  N        )    l    )
rI  r=   r8   r  
ValueErrorOverflowErrorr   r7   dictr  )r   indicesr  index2s   &   r   testInvalidInterfaceIndexToName2GeneralModuleTests.testInvalidInterfaceIndexToName  s,    	'6#8#8!<*f&;&;R@-)>)>4H)V%:%:KH6>**6..01G (**M7+CDD--f5 ED !
 *'**M7+CDD--e4 ED * +
 EDD EDDs   	FFFF(r  z&socket.if_nametoindex() not available.c                    V P                  \        \        P                  ^ 4       V P                  \        \        P                  R4       R# )r   r  N)rI  r   r8   r  r=   r   s   &r   testInvalidInterfaceNameToIndex2GeneralModuleTests.testInvalidInterfaceNameToIndex  s4     	)V%:%:A>'6#8#8+Fr   getrefcounttest needs sys.getrefcount()c                     \         P                  ! \        4      p\        P                  ! \        ^ 4       R#   \
         d8    \         P                  ! \        4      X8w  d   T P                  R4        R#  R# i ; i)r   z$socket.getnameinfo loses a referenceN)rz   r  r   r8   getnameinfor   rB  )r   origs   & r   testRefCountGetNameInfo*GeneralModuleTests.testRefCountGetNameInfo  sZ    	B??8,Dx* 	Bx(D0		@A 1	Bs   59 ;A;:A;c                Z     \         P                  ! R^ 4       R#   \         d     R# i ; i)r   N)r   r   r   r   )r8   r  r=   r   s   &r   testInterpreterCrash'GeneralModuleTests.testInterpreterCrash  s)    	~q1 		s    **c                   \         P                  ^ \         P                  ^ \         P                  ^\         P                  ^/pVP                  4        F  w  r#^V,          ^,
          pR F4  pV P                  WT,          V! V! WT,          4      4      V,          4       K6  	  V! V4      pV P                  Wd,          V4       V P                  \        VR4       K  	  R# )    N)r   r     i     igE#i2Tvl        )	r8   htonlntohlhtonsntohsitemsrX  rI  r  )r   sizesfuncsizemaskr   swappeds   &      r   testNtoHGeneralModuleTests.testNtoH  s     r6<<r6<<5++-JDtGq=DG  4QV+=+DE H 4jGW^T2mT59 (r   c                   . ROpVR.,           pRRRRR	RR,          .pR
^R,          .pV. RO,           pV F/  p\         P                  ! V4       \         P                  ! V4       K1  	  V F/  p\         P                  ! V4       \         P                  ! V4       K1  	  V F  pV P                  \        \         P                  V4       V P                  \        \         P                  V4       V P                  \        \         P                  V4       V P                  \        \         P                  V4       K  	  V FM  pV P                  \        \         P                  V4       V P                  \        \         P                  V4       KO  	  V FM  pV P                  \        \         P                  V4       V P                  \        \         P                  V4       KO  	  R# )r   r  r  N)r   r   r  r  r  il    l        r  )           )r8   r  r  r  r  rI  r  r  )r   s_good_valuesl_good_values
neg_valuesl_bad_valuess_bad_valuesks   &      r   testNtoHErrors!GeneralModuleTests.testNtoHErrors  sX   )%4"j*j"d(K
q$w'#&AAALLOLLO  ALLOLLO  Aj&,,:j&,,:j&,,:j&,,:	 
 AmV\\1=mV\\1=  AmV\\1=mV\\1= r   c                   V P                   p\        P                  P                  R4      '       g   \        '       d   RpMRpV F  p \
        P                  ! VR4      p M	  \        h\        P                  '       d%   \        P                  ! 4       P                  ^8  g   \
        P                  ! V4      pV! WE4        \
        P                  ! VR4      pV! Wd4       \        P                  '       d%   \        P                  ! 4       P                  ^8  g   V! \
        P                  ! X4      V4       V! \
        P                  ! VR4      V4       Ve   V! \
        P                  ! VR4      V4       V P                  \        \
        P                  R4       V P                  \        \
        P                  R4       R#   \         d     EK  i ; i  \         d    Rp ELi ; i)	linuxtcpudpNr  )r  androidfreebsdnetbsdgnukfreebsd)daytimeqotddomain)echor  r  r  )rX  rz   r{   
startswithr   r8   getservbynamer=   r   
is_androidandroid_ver	api_levelgetservbyportrI  r  )r   eqservicesservicer   port2udpports   &      r   testGetServBy GeneralModuleTests.testGetServBy  s   
 LL##HJ Jx 5H4HG++GU;   M """x';';'='G'G"'L((1EtO	**7E:G w """x';';'='G'G"'Lv##E*G4
6e,g6v##GU3W=-)=)=rB-)=)=uE5    	G	s$   	GG GGG)(G)c           	        V P                  \        P                  ! 4       R 4       \        P                  ! 4       ;_uu_ 4       pV P                  VP                  4       R 4       R R R 4       \	        ^
4      ;_uu_ 4        V P                  \        P                  ! 4       ^
4       \        P                  ! 4       ;_uu_ 4       pV P                  VP                  4       ^
4       R R R 4       \        P
                  ! R 4       V P                  \        P                  ! 4       R 4       \        P                  ! 4       ;_uu_ 4       pV P                  VP                  4       R 4       R R R 4       R R R 4       V P                  \        \        P
                  R4       V P                  \        \        P
                  R4       R #   + '       g   i     ELe; i  + '       g   i     L; i  + '       g   i     L; i  + '       g   i     L; i)Nspamr  )	rX  r8   rn   
gettimeoutrr   ro   rI  r  r   )r   rG   r  s   &  r   testDefaultTimeout%GeneralModuleTests.testDefaultTimeout  sB    	113T:]]__Q\\^T2  &b))V557<D  !2B7 ! $$T*V557>D  !2D9 ! * 	*f&>&>C 	)V%=%=vF' __ ! ! *)sJ   !G ?AG:!G	#A G:!G'	$G: G	G$G:'G72G::H
		inet_atonztest needs socket.inet_aton()c                    V P                  R\        P                  ! R4      4       V P                  R\        P                  ! R4      4       R# )    0.0.0.0r  N          )rX  r8   r  r   s   &r   testIPv4_inet_aton_fourbytes/GeneralModuleTests.testIPv4_inet_aton_fourbytes1  s;    
 	F$4$4Y$?@F$4$45F$GHr   	inet_ptonztest needs socket.inet_pton()c                  a aa ^ RI HpHoHo VV3R lpV 3R lpS P	                  RV! R4      4       S P	                  RV! R4      4       S P	                  RV! R	4      4       S P	                  R
V! R4      4       S P	                  RV! R4      4       \
        '       g
   V! VR4       V! VR4       V! VR4       V! VR4       V! VR4       S P	                  RV! R4      4       S P	                  RV! R4      4       S P	                  RV! R	4      4       S P	                  RV! R4      4       V! VR4       V! VR4       V! VR4       V! VR4       V! VR4       R# )r   )r  r$  r   c                    < S! SV 4      # r   r   )ar   r$  s   &r   r   5GeneralModuleTests.testIPv4toString.<locals>.<lambda>=      i+r   c                 <   < SP                  \        \        3W4      # r   rI  r=   r  r  r'  r   s   &&r   r   r(  ?      t'8'8j!4(
r   r   r  s     z255.0.255.0s   z170.170.170.170   1.2.3.4r!  r  z0.0.0.z	300.0.0.0za.0.0.0z	1.2.3.4.5::1N)r8   r  r$  r   rX  r   )r   r   gassertInvalidr   r$  s   f   @@r   testIPv4toString#GeneralModuleTests.testIPv4toString9  sI    	>=+
 	,a	l;,a.>?,a0A.BC,a	l;,a0A.BCs!X&a%a#a%a,a	l;,a.>?,a0A.BC,a0A.BCa"a%a#a%ar   c                $  a aaa  ^ RI HoHoHp V'       g   S P	                  R4       \        P                  R8X  d    S! SR4       TT3R	 loTT 3R
 lpS P                  R$S! R4      4       S P                  R$S! R4      4       S P                  R%S! R4      4       S P                  RS! R4      4       S P                  R&S! R4      4       S P                  R'S! R4      4       T! R4       T! R4       T! R4       T! R4       T! R4       T! R4       T! R4       T! R4       \        '       g	   T! R4       S P                  R(S! R4      4       S P                  R)S! R4      4       S P                  RS! R4      4       T! R4       T! R4       T! R 4       T! R!4       T! R"4       T! R#4       R#   \
         d    S P	                  R4        ELi ; i  \         d.   pTP                  R8X  d   S P	                  R4        Rp?ELRp?ii ; i)*r   )r$  r  rZ  IPv6 not available+could not import needed symbols from socketrt   ::&'  IPv6 might not be supportedNc                    < S! SV 4      # r   r   )r'  r  r$  s   &r   r   5GeneralModuleTests.testIPv6toString.<locals>.<lambda>k      i!,r   c                 >   < SP                  \        \        3SV 4      # r   r+  r'  r   r   s   &r   r   r<  l      $"3"3j!1a#
r   z0::0z1::s   Ev V$z$45ef:76cb:1a:56ef:afeb:bac:1924:aeaezad42:abc::127:0:254:2z12:a::z0x20::z:::z::0::z1::abc::z1::abc::defz1:2:3:4:5:6z1:2:3:4:5:6:z1:2:3:4:5:6:7:8:0z1:2:3:4:5:6:7:8:z::254.42.23.64z42::a29b:254.42.23.64s    B   *@z"42:a8b9:0:2:ffff:a29b:254.42.23.64z255.254.253.252z1::260.2.3.0z1::0.be.e.0z1:2:3:4:5:6:7:1.2.3.4z::1.2.3.4:0z0.100.200.0:3:4:5:6:7:8                   s                  s   B
    '  T s     
            s               *@s    B        *@)r8   r$  r  rZ  r   ImportErrorrz   r{   r=   winerrorrX  r   )r   rZ  r   r2  r  r   r$  s   f   @@@r   testIPv6toString#GeneralModuleTests.testIPv6toStringZ  s   	I<<23 <<7"A(D)
 -
 	qw/qy13QuX>O45	
 	S%&	
 	;Qx[Ihegj!m$m$n%)*s,-;	
 	C%&	
 	O23	
 	'(n%m$-.m$/0o  	IMMGH	I  A::&MM"?@As-   F4 F4 	G 4GGH""H

H	inet_ntopztest needs socket.inet_ntop()c                z  a aa ^ RI HpHoHo VV3R lpV 3R lpS P	                  RV! R4      4       S P	                  RV! R4      4       S P	                  RV! R	4      4       S P	                  R
V! R4      4       V! VR4       V! VR4       V! VR4       S P	                  RV! \        R4      4      4       S P	                  RV! R4      4       S P	                  RV! R4      4       S P	                  RV! R	4      4       V! VR4       V! VR4       V! VR4       S P	                  RV! \        R4      4      4       R# )r   )	inet_ntoarF  r   c                    < S! SV 4      # r   r   )r'  r   rF  s   &r   r   5GeneralModuleTests.testStringToIPv4.<locals>.<lambda>  r)  r   c                 <   < SP                  \        \        3W4      # r   r+  r,  s   &&r   r   rJ    r-  r   z1.0.1.0s     z170.85.170.85s   UUr  r!  r/  r.  Ns      s        rA  )r8   rH  rF  r   rX  	bytearray)r   r   r1  r2  r   rF  s   f   @@r   testStringToIPv4#GeneralModuleTests.testStringToIPv4  s'    	>=+
 	A&9$:;!,?*@A*A.A,BCA&9$:;a%a%a&!I6I,J*KLA&9$:;!,?*@A*A.A,BCa%a%a&!I6I,J*KLr   c                j  a aaa  ^ RI HoHoHp V'       g   S P	                  R4       \        P                  R8X  d    S! SR4       TT3R loTT 3R	 lpS P                  R
S! R4      4       S P                  RS! R4      4       S P                  RS! R4      4       S P                  RS! \        R4      4      4       T! R4       T! R4       T! R4       R#   \
         d    S P	                  R4        Li ; i  \         d-   pTP                  R8X  d   S P	                  R4        Rp?LRp?ii ; i)r   )rF  r  rZ  r6  r7  rt   r9  r:  Nc                    < S! SV 4      # r   r   )r'  r  rF  s   &r   r   5GeneralModuleTests.testStringToIPv6.<locals>.<lambda>  r=  r   c                 >   < SP                  \        \        3SV 4      # r   r+  r?  s   &r   r   rQ    r@  r   r8  r0  z!aef:b01:506:1001:ffff:9997:55:170s   
 UprA  s                  s   s   s   )r8   rF  r  rZ  r   rB  rz   r{   r=   rC  rX  rL  )r   rZ  r   r2  r  r   rF  s   f   @@@r   testStringToIPv6#GeneralModuleTests.testStringToIPv6  s   	I<<23 <<7"A(L1
 -
 	q/"8 9:/QR	
 	),B"C DEl#l#k"3  	IMMGH	I  A::&MM"?@As-   C C 	C; C87C8;D2"D--D2c                   \         P                   ! \         P                  \         P                  4      pV P                  VP                  4       \
        P                  ! 4        F,  p\        P                  ! 4       p VP                  R V34        M	  VP                  4       p \         P                  ! \         P                  ! 4       4      pV P#                  V^ ,          R X3RV^ ,          ,          4       V P%                  V^,          X4       R#   \         d3   pTP                  \        P                  8w  g   T^8X  d   h  Rp?K  Rp?ii ; i  \         d    T P!                  R4        Li ; i)r  Nr  z
%s invalid)r8   r   rc   r   rD   	itertoolscountr	   find_unused_portr   r=   r  
EADDRINUSEr2  r  r  r   r3  rX  )r   r  r   r   r   r
  
my_ip_addrs   &      r   testSockNameGeneralModuleTests.testSockName  s   }}V^^V-?-?@

# "A 113D		9d+,
  # !	1--f.@.@.BCJ 	d1g	:6tAw8NOa$'!  77e...!q& 39  	1MM/0	1s*   =D%)E E'EEE21E2c                (   \         P                   ! \         P                  \         P                  4      pV P                  VP                  4       VP                  \         P                  \         P                  4      pV P                  V^ 8g  R4       R# )r   zinitial mode is reuseN)	r8   r   rc   r   rD   
getsockoptr\  r]  assertFalser   r  reuses   &  r   testGetSockOpt!GeneralModuleTests.testGetSockOpt  s_     }}V^^V-?-?@

# 1 163F3FG!%<=r   c                   \         P                   ! \         P                  \         P                  4      pV P                  VP                  4       VP                  \         P                  \         P                  ^4       VP                  \         P                  \         P                  4      pV P                  V^ 8H  R4       R# )r   zfailed to set reuse modeN)
r8   r   rc   r   rD   rx  r\  r]  r^  r_  r`  s   &  r   testSetSockOpt!GeneralModuleTests.testSetSockOpt  sy    }}V^^V-?-?@

#))6+>+>B 1 163F3FG!%?@r   c                   \         P                   ! \         P                  \         P                  4      ;_uu_ 4       pVP                  ^4       RRR4       V P	                  \
        XP                  R4       R#   + '       g   i     L3; i)r   N   spam)r8   r   rc   rC  rI  r=   r`  r  s   & r   testSendAfterClose%GeneralModuleTests.testSendAfterClose  sO    ]]6>>6+=+=>>$OOA ?'499g6 ?>s   A99B		c                   \         P                   ! 4       pVP                  \         P                  ^ 34       \         P                   ! VP                  4       R7      P	                  4         VP	                  4        V P                  R4       R#   \         dF   pT P                  TP                  \        P                  \        P                  34        Rp?R# Rp?ii ; i)r   r4  z#close() should raise EBADF/ENOTSOCKN)r8   r   
_LOCALHOSTr4  rD   rB  r=   r3  r  EBADFENOTSOCK)r   r  r  s   &  r   testCloseException%GeneralModuleTests.testCloseException  s    }}		6$$a()T[[]+113	=JJL
 II;<	  	DMM#))ekk5>>%BCC	Ds   +B C:CCc                b   \         P                   ! \         P                  \         P                  4      ;_uu_ 4       pV P                  VP                  \         P                  4       \        \         R 4      '       dQ   V P                  VP                  \         P                  \         P                  ,          \         P                  34       M*V P                  VP                  \         P                  4       V P                  VP                  ^ 4       RRR4       R#   + '       g   i     R# ; i)SOCK_CLOEXECN)
r8   r   rc   rX  r;  r7   r3  r  rs  r<  r  s   & r   testNewAttributes$GeneralModuleTests.testNewAttributes  s     ]]6>>6+=+=>>$T[[&..9v~..dii%11F4G4GG%1134   F,>,>?TZZ+ ?>>>s   CDD.	c                d   \         P                   ! 4       pV P                  VP                  4       \        P                  ! 4       pVR ,           pVR ,
          pV P                  \        VP                  \        V34       V P                  \        VP                  \        V34       \        P                  ! 4        F1  p\        P                  ! 4       p VP                  \        V34        R# 	  R#   \         d3   pTP                  \        P                  8w  g   T^8X  d   h  Rp?Ko  Rp?ii ; i)r  N)r8   r   rD   r	   rX  rI  r  r   r1  rV  rW  r=   r  rY  )r   r  r   big_portneg_portr   r   s   &      r   test_getsockaddrarg&GeneralModuleTests.test_getsockaddrarg$  s    }}

#--/%<%<-T84DE-T84DE "A 113D		4,'
  #  77e...!q& 39s   C22D/='D**D/c                   V P                  \        P                  R 4       V P                  \        R4       V P                  \        R4       V P                  \        R4       V P                  \        R4       \        P                  ! 4       pV P                  VP                  4       V P	                  \
        VP                  RR4       VP                  \        P                  R4       R# )r:   
SIO_RCVALL	RCVALL_ON
RCVALL_OFFSIO_KEEPALIVE_VALSNr  )r   d   r  )r  r8   r   rD   rI  r  r:   r  r6  s   & r   test_sock_ioctl"GeneralModuleTests.test_sock_ioctl8  s    6=='26<06;/6<06#78MMO *aggr48	))=9r   SIO_LOOPBACK_FAST_PATHz1Loopback fast path support required for this testc                x   \         P                   ! 4       pV P                  VP                  4        VP                  \         P                  R 4       T P                  \        TP                  \         P                  R4       R#   \
         d+   pRpTP                  T8X  d   T P                  R4       h Rp?ii ; i)Ti='  zQSIO_LOOPBACK_FAST_PATH is defined but doesn't implemented in this Windows versionN)
r8   r   rD   r:   r  r=   rC  r   rI  r   )r   rG   r[  WSAEOPNOTSUPPs   &   r   test_sio_loopback_fast_path.GeneralModuleTests.test_sio_loopback_fast_pathD  s     MMO 	GGF1148 	)QWWf.K.KTR  	!M||}, L M	s    B B9%B44B9c           	     6    \         P                  ! R ^P4       \         P                  ! \        R4       F  pT P                  \        T4      ^4       K   	  \         P                  ! R ^P4       \         P                  ! R^P4       \         P                  ! R^P4       \        P                  '       d   \         P                  ! R^P4       \        P                  '       d%   \        P                  ! 4       P                  ^8  g   \         P                  ! \        R4       \         P                  ! \        ^P4       \         P                  ! \        R4       \         P                  ! \        ^P\         P                   \         P"                  4      pT F  w  rE  pT P                  T\         P                   4       T P                  \%        T4      RTP&                  ,          4       T P                  \)        T4      \)        TP&                  4      4       T P                  T\         P"                  4       T P                  \%        T4      RTP&                  ,          4       T P                  \)        T4      \)        TP&                  4      4       K  	  \         P                  ! \        R^ \         P"                  4      pT F(  w  rg  pT P                  T\         P"                  4       K*  	  \         P                  ! \        R^ ^ \         P*                  4       \         P                  ! \        R^ ^ ^ \         P,                  4       \         P                  ! R^ \         P.                  \         P"                  ^ \         P,                  4       \         P                  ! \        R4      p\         P                  ! \        RR7      p	T P                  Y4       \         P                  ! \        R\         P                   4      p\         P                  ! \        R\         P                   R	7      p	T P                  Y4       \         P                  ! \        R^ \         P"                  4      p\         P                  ! \        R\         P"                  R
7      p	T P                  Y4       \         P                  ! \        R^ ^ \         P*                  4      p\         P                  ! \        R\         P*                  R7      p	T P                  Y4       \         P                  ! \        R^ ^ ^ \         P,                  4      p\         P                  ! \        R\         P,                  R7      p	T P                  Y4       \         P                  ! R^ \         P.                  \         P"                  ^ \         P,                  4      p\         P                  ! R^ \         P.                  \         P"                  ^ \         P,                  R7      p	T P                  Y4       T P1                  \2        \         P                  R R4       \5        \         R4      '       dm   T P1                  \         P                  \         P                  R R\         P6                  R7        \         P                  ! R R^ ^ ^ \         P6                  4       R# R#   \         P                   d7   pTP                  \         P                  8X  d   T P                  R4       h Rp?ii ; i  \         P                   d     R# i ; i)	localhostzbuggy libc versionNr2  r0  http<AddressFamily.AF_INET: %r><SocketKind.SOCK_STREAM: %r>)r  r   r;  r  )r<  )flags)r  r   r;  r  r<  r  u   AI_NUMERICSERV)r8   getaddrinforK  r  EAI_SERVICEr   r1  rX  lenr	   IPV6_ENABLEDr   r  r{   r  r  r   rc   rW  valuer  SOL_TCP
AI_PASSIVE	AF_UNSPECrI  UnicodeEncodeErrorr7   r  )
r   r  infoinfosr;  r  r   socktyper'  bs
   &         r   testGetaddrinfo"GeneralModuleTests.testGetaddrinfoT  s   	{B/ &&tT2DSY* 3 	;+;+4$%%%ub) """x';';'='G'G"'LtV,4$4&""4V^^V=O=OP%*!F!QVV^^4T&\+H6<<+WXS[#fll*;<T6#5#56T$Z)G$**)TUSYDJJ8 &+ ""4q&2D2DE$) AAqXv'9'9: %* 	4q!V^^<4q!Q0A0AB 	4F$4$4f6H6H!!,,	. tT*Dt4tT6>>:tT&..AtT1f.@.@AtT0B0BCtT1a@tT@tT1aF4E4EFtT1B1BCtQ(8(8&:L:La%002Dq9I9I$*$6$6a%+%6%68 	,f.@.@+xX6+,,foov/A/A;PV$*$9$9  ; "";aA#)#8#8: -E  	yyF...23		X ?? s)   Z1 )[? 1[<1[77[<?\\requires _testcapic                   ^ RI HpHpHp  \        P
                  ! RV^,           \        P                  R7        \        P
                  ! RV^,           \        P                  R7        \        P
                  ! RVR,
          ^,           \        P                  R7        \        P
                  ! RV^,
          \        P                  R7       \        P
                  ! R^ \        P                  R7       \        P
                  ! RR\        P                  R7       R#   \         d    T P                  R4        EL\        P                   d     ELi ; i  \         d    T P                  R4        EL\        P                   d     EL%i ; i  \         d    T P                  R4        EL\        P                   d     EL)i ; i  \         d    T P                  R4        EL\        P                   d     EL4i ; i)r   )	ULONG_MAXLONG_MAXLONG_MINNr  z,Either no error or socket.gaierror expected.r  )
	_testcapir  r  r  r8   r  rc   r  rB  rK  )r   r  r  r  s   &   r   "test_getaddrinfo_int_port_overflow5GeneralModuleTests.test_getaddrinfo_int_port_overflow  s}    	<;	tY]9K9KL	tX\8J8JK	tX%6%:ASAST	tX\8J8JK 	4););<4f.@.@A=  	F IIDE 		
  	FIIDE 		
  	FIIDE 		
  	FIIDE 		sv   .D .E *5F  .G E=EEEF7F
FFG	1G	G	G	H+H>HHc                R    V P                  \        \        P                  R^ 4       R# )mail.python.orgN)r  r   )rI  r=   r8   r  r   s   &r   test_getnameinfo#GeneralModuleTests.test_getnameinfo  s    '6#5#57LaPr   networkznetwork is not enabledc                l   \         P                  ! R 4      ;_uu_ 4        \        P                  ! R 4       RRR4       Rp\        P                  ! V4       \        P                  ! V4       \        P
                  ! V^ \        P                  \        P                  4       R#   + '       g   i     Lu; i)z
python.orgNu!   испытание.pythontest.net)r	   transient_internetr8   r  gethostbyname_exr  r  rc   )r   r  s   & r   	test_idnaGeneralModuleTests.test_idna  st    
 --l;;  . < 5V$'6!F$4$4V5G5GH <;s   B##B3	c                  a  \        \        R 4      '       d   \        \        R4      '       g   S P                  R4       V 3R lpV 3R lp\        P                  ! 4       w  rE\        P                  ! \        P
                  V4      p V'       d   VP                  R4       S P                  \        4      ;_uu_ 4        \        P                  ! ^4       VP                  R\        P                  ,          4       RRR4       V'       dr   \        P                  ! \        P
                  V4       \        P                  ! ^4       S P                  \        VP                  R\        P                  ,          4       \        P                  ! ^ 4       \        P                  ! \        P
                  V4       VP                  4        VP                  4        R#   + '       g   i     L; i  \        P                  ! ^ 4       \        P                  ! \        P
                  T4       TP                  4        TP                  4        i ; i)alarmr|  z9signal.alarm and socket.socketpair required for this testc                  R   < SP                  \        \        P                  ^ 4       R# r0  rI  r  mathacoshr%   r   s   *r   
ok_handler@GeneralModuleTests.check_sendall_interrupted.<locals>.ok_handler  s    j$**a8r   c                  d   < SP                  \        \        P                  ^ 4       ^^ ,           R# r0  r  r  s   *r   raising_handlerEGeneralModuleTests.check_sendall_interrupted.<locals>.raising_handler  s"    j$**a8FFr   g      ?   xN)r7   signalr8   r   r|  SIGALRMrC  rI  ZeroDivisionErrorr  sendallr   SOCK_MAX_SIZETimeoutErrorrD   )r   with_timeoutr  r  crG   	old_alarms   f&     r   check_sendall_interrupted,GeneralModuleTests.check_sendall_interrupted  sY   vw''wv|/L/LMMUV	9	   "MM&../B		S!""#455Q		$!6!667 6 fnnj9Q!!,		"&)>)>">@ LLOMM&..)4GGIGGI 65 LLOMM&..)4GGIGGIs,   6G, >=G;G, A1G, G)	$G, ,AI	c                (    V P                  R 4       R# FNr  r   s   &r   test_sendall_interrupted+GeneralModuleTests.test_sendall_interrupted  s    &&u-r   c                (    V P                  R 4       R# TNr  r   s   &r   %test_sendall_interrupted_with_timeout8GeneralModuleTests.test_sendall_interrupted_with_timeout  s    &&t,r   c                   \         P                   ! \         P                  \         P                  4      p\        V4      pV P	                  \
        4      ;_uu_ 4       pR p\        P                  ! 4        R R R 4       V P                  V\        XP                  P                  ^ ,          4      4       \         P                   ! \         P                  \         P                  4      pVP                  R4      p\        V4      pR p\        P                  ! 4        V P	                  \
        4      ;_uu_ 4        R p\        P                  ! 4        R R R 4       R #   + '       g   i     L; i  + '       g   i     R # ; i)Nr4   )r8   r   rc   rW  assertWarnsResourceWarningr   rA  r3  r  warningr%   makefile)r   r  r>   rV  r   s   &    r   test_dealloc_warn$GeneralModuleTests.test_dealloc_warn  s    }}V^^V-?-?@Jo.."D  / 	aRZZ__Q/01}}V^^V-?-?@MM$Jo..A  /. /. /..s   E5E*E'	*E;	c                .   \         P                   ! \         P                  \         P                  4      ;_uu_ 4       pVP                  R 4      pVP	                  4        V P                  \        V4      R4       RRR4       R#   + '       g   i     R# ; i)r4   z<_io.BufferedReader name=-1>N)r8   r   rc   r  rD   rX  rW  r   r  fps   &  r   test_name_closed_socketio,GeneralModuleTests.test_name_closed_socketio"  sZ    ]]6>>6+=+=>>$t$BHHJT"X'EF ?>>>s   =BB	c                :   \         P                   ! 4       ;_uu_ 4       pVP                  R ^ R7      pV P                  VP                  4       4       V P	                  VP                  4       4       V P	                  VP                  4       4       VP                  4        V P                  \        VP                  4       V P                  \        VP
                  4       V P                  \        VP                  4       RRR4       R#   + '       g   i     R# ; i)r4   )	bufferingN)
r8   r  r!  readabler_  writableseekablerD   rI  r  r  s   &  r   test_unusable_closed_socketio0GeneralModuleTests.test_unusable_closed_socketio(  s    ]]__tq1BOOBKKM*R[[]+R[[]+HHJj"++6j"++6j"++6 ___s   C!D		D	c           	        \         P                   ! 4       p VP                  \        ^ 34       \         P                  ! VP	                  4       4       V P                  \        4      ;_uu_ 4        VP                  ^4       RRR4       V P                  \        4      ;_uu_ 4        VP                  4        RRR4       T P                  \        4      ;_uu_ 4        \         P                  ! R4       RRR4       T P                  \        4      ;_uu_ 4        \         P                  ! R4       RRR4       R#   + '       g   i     L; i  + '       g   i     L; i  T P                  \        4      ;_uu_ 4        TP                  4        RRR4       i   + '       g   i     i ; i; i  + '       g   i     L; i  + '       g   i     R# ; i)r   Nr  )	r8   r   r1  rD   r4  rI  r=   r   r   r  s   & r   test_socket_close$GeneralModuleTests.test_socket_close3  s   }}	IItQi LL'""7++A , ""7++

 , y))LL *w''LL (' ,+ ,+""7++

 ,+++ *)'''s`   AE /D9E &EF-G 9E		E E	F*=F		F*F'"F*-F=	 G	c                   R F  pV P                  VR7      ;_uu_ 4        \        P                  ! 4       ;_uu_ 4       pRV9   d   RMRpVP                  WR7      ;_uu_ 4       pV P                  VP                  V4       RRR4       RRR4       RRR4       K  	  R#   + '       g   i     L&; i  + '       g   i     L1; i  + '       g   i     K  ; i)r>   moder  Nr   encoding)r>   r4   rwwwb)subTestr8   r  rX  r  )r   r  r  r  r  s   &    r   test_makefile_mode%GeneralModuleTests.test_makefile_modeC  s    .D4((]]__'*d{tHt??2(($7 @ % )( / @? %_ )((s:   C&B2$BB2	CB/*B22C=CCc                   R F  pV P                  VR7      ;_uu_ 4        \        P                  ! 4       ;_uu_ 4       pV P                  \        R4      ;_uu_ 4        VP	                  V4       RRR4       RRR4       RRR4       K  	  R#   + '       g   i     L&; i  + '       g   i     L1; i  + '       g   i     K  ; i)rtr  zinvalid modeN)r  r   +r'  )r  r8   r%  r  r  )r   r  r  s   &  r   test_makefile_invalid_mode-GeneralModuleTests.test_makefile_invalid_modeK  sz    'D4((]]__//
NKKd+ L % )( ( LK %_ )((s:   B3B B/B 7B3BB  B0+B33Cc           	        \         P                   ! 4       pT;_uu_ 4        \        \        P                  ^,           4       F(  pV P	                  \
        \        P                  W4       K*  	  RRR4       \        \        P                  ^,           4       F  p\        P                  ! \        P                  ! \         P                  V4      4      pV P                  V\         P                  4       \        P                  ! \        P                  ! \         P                  V4      4      pV P                  V\         P                  4       K  	  R#   + '       g   i     L; ir  )r8   rangepickleHIGHEST_PROTOCOLrI  r   dumpsloadsr   rX  rc   )r   r  protocolr;  r  s   &    r   test_pickleGeneralModuleTests.test_pickleR  s    }}T!&"9"9A"=>!!)V\\4J ?  f559:H\\&,,v~~x"HIFVV^^4<<V-?-? JKDT6#5#56	 ; Ts   AEE 	c                   R Fo  p\         P                   ! \         P                  \         P                  4      ;_uu_ 4       pVP                  \        ^ 34       VP                  V4       RRR4       Kq  	  \         P                   ! \         P                  \         P                  4      ;_uu_ 4       pVP                  \        ^ 34       VP                  4        RRR4       R#   + '       g   i     K  ; i  + '       g   i     R# ; i)r   N)r   r  )r8   r   rc   r   r1  r   )r   backlogsrvs   &  r   test_listen_backlog&GeneralModuleTests.test_listen_backlog]  s    Gv~~v/A/ABBc$#

7# CB 
 ]]6>>6+=+=>>#HHdAYJJL ?>	 CBB ?>>s   )C#1(C7#C47D	c                P   ^ RI p\        P                  ! \        P                  \        P                  4      ;_uu_ 4       pVP	                  \
        ^ 34       V P                  \        VP                  VP                  ^,           4       RRR4       R#   + '       g   i     R# ; ir0  )
r  r8   r   rc   r   r1  rI  r  r   INT_MAX)r   r  r  s   &  r   test_listen_backlog_overflow/GeneralModuleTests.test_listen_backlog_overflowg  sd     	]]6>>6+=+=>>#HHdAYmSZZ9J9JQ9NO ?>>>s    A
BB%	IPv6 required for this test.c           	        V P                  \        \        P                  \        P
                  ^ R3^ 4       \        P                  ! \        P                  \        P                  4      ;_uu_ 4       pV P                  \        VP                  \        P
                  ^ R34       RRR4       R#   + '       g   i     R# ; i)r   r  Ni)	rI  r  r8   r  r	   r  r  rc   r   r6  s   & r   test_flowinfo GeneralModuleTests.test_flowinfop  s}    -););(//J?	D]]6??F,>,>??1mQVVm6J6JAs5ST @???s   33B00C	c                    \         P                  ! R R\         P                  \         P                  \         P                  4      w  Ev rV P                  VR4       R# )ff02::1de:c0:face:8Dr   N)ff02::1de:c0:face:8dr   r   r   )r8   r  r  rK   rb  rX  )r   r   sockaddrs   &  r   test_getaddrinfo_ipv6_basic.GeneralModuleTests.test_getaddrinfo_ipv6_basicw  sH    ".."&//	
1 	#GHr   c                    V P                  \        P                  ! 4       \        P                  ! R 4      4       V P                  \        P                  ! 4       \        P                  ! R4      4       R# )r  r8  N)rX  r8   r  r   s   &r   test_getfqdn_filter_localhost0GeneralModuleTests.test_getfqdn_filter_localhost  sB    )6>>)+DE)6>>$+?@r   rt   zdoes not work on WindowszSymbolic scope id does not workz test needs socket.if_nameindex()c                   \         P                  ! 4       ^ ,          w  r\         P                  ! RV,           R\         P                  \         P                  \         P
                  4      w  Ev r4V P                  VRR^ V34       R# )r   ff02::1de:c0:face:8D%r   r  N)r8   r  r  r  rK   rb  rX  )r   ifindextest_interfacer   r  s   &    r   &test_getaddrinfo_ipv6_scopeid_symbolic9GeneralModuleTests.test_getaddrinfo_ipv6_scopeid_symbolic  sn     %+$7$7$9!$<!"..#n4&//	
1 	$:D!W#MNr   z.Numeric scope id does not work or undocumentedc                    ^*p\         P                  ! R\        V4      ,           R\         P                  \         P                  \         P
                  4      w  Ev r#V P                  VRR^ V34       R# )*   r  r   r  N)r8   r  r  r  rK   rb  rX  )r   r  r   r  s   &   r   %test_getaddrinfo_ipv6_scopeid_numeric8GeneralModuleTests.test_getaddrinfo_ipv6_scopeid_numeric  sa     "..#c'l2&//	
1 	$:D!W#MNr   c                    \         P                  ! 4       ^ ,          w  rRR^ V3p\         P                  ! V\         P                  \         P                  ,          4      pV P                  VRV,           R34       R# )r   r  r   ff02::1de:c0:face:8d%1234N)r8   r  r  NI_NUMERICHOSTNI_NUMERICSERVrX  )r   r  r  r  nameinfos   &    r   &test_getnameinfo_ipv6_scopeid_symbolic9GeneralModuleTests.test_getnameinfo_ipv6_scopeid_symbolic  sf     %+$7$7$9!$<!*D!W=%%h0E0EH]H]0]^$;n$Lf#UVr   c                    ^*pRR^ V3p\         P                  ! V\         P                  \         P                  ,          4      pV P	                  VR\        V4      ,           R34       R# )r  r  r   r#  r$  N)r8   r  r%  r&  rX  r  )r   r  r  r'  s   &   r   %test_getnameinfo_ipv6_scopeid_numeric8GeneralModuleTests.test_getnameinfo_ipv6_scopeid_numeric  sY     *D!W=%%h0E0EH]H]0]^$;c'l$JF#STr   c                   \         P                   ! \         P                  \         P                  4      ;_uu_ 4       pV P                  \	        VP
                  4      R VP
                  P                  ,          4       V P                  \	        VP                  4      RVP                  P                  ,          4       V P                  \        VP
                  4      \        VP
                  P                  4      4       V P                  \        VP                  4      \        VP                  P                  4      4       RRR4       R#   + '       g   i     R# ; i)r  r  N)	r8   r   rc   rX  rW  r;  r  r  r  r6  s   & r   test_str_for_enums%GeneralModuleTests.test_str_for_enums  s     ]]6>>6+=+=>>!T!((^-JQXX^^-[\T!&&\+IAFFLL+XYS]C,?@S[#affll*;<	 ?>>>s   DEE	c                F   \        \        R ^ 4      p\        \        R^ 4      p\        P                  V,          V,          p\        P                  ! \        P                  V4      ;_uu_ 4       pV P	                  VP
                  \        P                  4       VP                  ^4       V P	                  VP
                  \        P                  4       VP                  ^ 4       V P	                  VP
                  \        P                  4       VP                  R4       V P	                  VP
                  \        P                  4       VP                  R4       V P	                  VP
                  \        P                  4       RRR4       R#   + '       g   i     R# ; i)SOCK_NONBLOCKrs  TFN)r   r8   rc   r   rX  r  rC  setblocking)r   r1  rs  	sock_typerG   s   &    r    test_socket_consistent_sock_type3GeneralModuleTests.test_socket_consistent_sock_type  s	   ;v~q9&&6E	]]6>>955QVVV%7%78LLOQVVV%7%78LLOQVVV%7%78MM$QVVV%7%78MM% QVVV%7%78 6555s   .DFF 	c                   \         P                   ! \         P                  \         P                  4      pVP                  4       p\	        \         P
                  P                  P                  4       4      ^,           p\	        R \         P                  P                  P                  4        4       4      ^,           p\         P                   ! W4^VR7      ;_uu_ 4       pV P                  VP                  V4       V P                  VP                  V4       V P                  VP                  ^ ^04       RRR4       R#   + '       g   i     R# ; i)r   c              3   <   "   T F  w  rVR9  g   K  Vx  K  	  R# 5i)r1  N>   rs  r1  r   )r	  r
  kinds   &  r   r  EGeneralModuleTests.test_unknown_socket_family_repr.<locals>.<genexpr>  s$      
C
<< DCs   
)r;  r  r<  r4  N)r8   r   rc   detachmaxAddressFamily__members__values
SocketKindr  rX  r;  r  r3  r<  )r   r  fdunknown_familyunknown_typerG   s   &     r   test_unknown_socket_family_repr2GeneralModuleTests.test_unknown_socket_family_repr  s     }}V^^V-?-?@[[]V11==DDFG!K 
$//;;AAC
 
 	 ]]% QXX~6QVV\2MM!''Ar7+   s   AD==E	sendfileztest needs os.sendfile()c           
     "    ! R  R4      p\         P                   ! 4       ;_uu_ 4       p\        P                  ! \        P                  \        P                  4      p\        P
                  ! V4       V P                  \         P                  4      ;_uu_ 4        VP                  V! V4      4       RRR4       V P                  \        4      ;_uu_ 4        VP                  V! ^R,          4      4       RRR4       V P                  \        4      ;_uu_ 4        VP                  V! R4      4       RRR4       RRR4       R#   + '       g   i     L; i  + '       g   i     Lj; i  + '       g   i     L@; i  + '       g   i     R# ; i)c                   ,   a  ] tR tRt o R tR tRtV tR# )<GeneralModuleTests.test__sendfile_use_sendfile.<locals>.Filei  c                    Wn         R # r   r@  )r   r@  s   &&r   r   EGeneralModuleTests.test__sendfile_use_sendfile.<locals>.File.__init__  s    r   c                    V P                   # r   rJ  r   s   &r   r4  CGeneralModuleTests.test__sendfile_use_sendfile.<locals>.File.fileno  s    wwr   rJ  N)r   r   r   r   r   r4  r   r   r   s   @r   FilerH    s      r   rN  Nr  )r8   osr9   curdirO_RDONLYrD   rI  _GiveupOnSendfile_sendfile_use_sendfiler  r   )r   rN  r  r@  s   &   r   test__sendfile_use_sendfile.GeneralModuleTests.test__sendfile_use_sendfile  s    	 	 ]]__BKK0BHHRL""6#;#;<<++DH5 =""=11++DDM: 2""9--++DJ7 . _ =<11-- __sT   A1E=E	1%E=E	5%E=E*	2E=EE=E'"E=*E:5E==F	c                   V P                  VP                  V4       V P                  VP                  V4       VP                  4       p\        P                  ! VR 7      pV P                  VP                  4       VP                  4        V P                  VP                  V4       V P                  VP                  V4       V P                  VP                  4       V4       R# rl  N)rX  r;  r  r4  r8   r   rD   r:  )r   rG   r;  styper@  s2s   &&&&  r   _test_socket_fileno&GeneralModuleTests._test_socket_fileno  s    6*'XXZ]]"%!	
F+%(b)r   c                   \         P                   ! \         P                  \         P                  4      pV P                  VP                  4       VP                  \        P                  ^ 34       V P                  V\         P                  \         P                  4       \        \         R4      '       d   \         P                   ! \         P                  \         P                  4      pV P                  VP                  4       VP                  \        P                  ^ 34       V P                  V\         P                  \         P                  4       \        P                  '       d   \         P                   ! \         P                  \         P                  4      pV P                  VP                  4       VP                  \        P                  ^ ^ ^ 34       V P                  V\         P                  \         P                  4       \        \         R4      '       d   \        P                  ! 4       pV P                  \        P                   V4       \         P                   ! \         P"                  \         P                  4      pT;_uu_ 4         VP                  V4       V P                  V\         P"                  \         P                  4       RRR4       R# R#   \$         d     Li ; i  + '       g   i     R# ; i)r   rK   r  N)r8   r   rc   r   rD   r   r	   r1  rZ  r7   rK   r  r  r  r  r   r  r  rV  )r   rG   	unix_names   &  r   test_socket_fileno%GeneralModuleTests.test_socket_fileno  s   MM&..&*<*<= 	""A&'  FNNF4F4FG6<((fnnf.?.?@AOOAGG$FFM&&*+$$Q8I8IJ%%%foov/A/ABAOOAGG$FFM((!Q23$$Q9K9KL69%%%==?IOOI,,i8fnnf.@.@AAAFF9% ,,Q-3-?-?A  & '  s0   K0K$/K0K-*K0,K--K00L	c                    V P                  \        4      ;_uu_ 4        \        P                  ! \        P                  \        P                  R R7       RRR4       R#   + '       g   i     R# ; i)g     @E@rl  NrI  r   r8   r   rc   r   s   &r    test_socket_fileno_rejects_float3GeneralModuleTests.test_socket_fileno_rejects_float/  s<    y))MM&..&*<*<TJ *)))   6AA/	c                    V P                  \        4      ;_uu_ 4        \        P                  ! \        P                  \        P                  R R7       RRR4       R#   + '       g   i     R# ; i)r&  rl  Nra  r   s   &r   &test_socket_fileno_rejects_other_types9GeneralModuleTests.test_socket_fileno_rejects_other_types3  s<    y))MM&..&*<*<UK *)))rd  c                    V P                  \        R 4      ;_uu_ 4        \        P                  ! \        P                  \        P                  RR7       RRR4       R#   + '       g   i     R# ; i)negative file descriptorrl  Nr  r%  r  r8   r   rc   r   s   &r   )test_socket_fileno_rejects_invalid_socket<GeneralModuleTests.test_socket_fileno_rejects_invalid_socket7  s@    ##J0JKKMM&..&*<*<RH LKKK   6AA0	zWindows disallows -1 onlyc                    V P                  \        R 4      ;_uu_ 4        \        P                  ! \        P                  \        P                  RR7       RRR4       R#   + '       g   i     R# ; i)ri  rl  Nirj  r   s   &r   #test_socket_fileno_rejects_negative6GeneralModuleTests.test_socket_fileno_rejects_negative;  s@    ##J0JKKMM&..&*<*<SI LKKKrm  c                   R pV P                  \        4      ;_uu_ 4       p\        P                  ! \        P                  ! 4       R7       RRR4       V P                  XP                  P                  \        P                  V34       V P                  \        4      ;_uu_ 4       p\        P                  ! \        P                  \        P                  \        P                  ! 4       R7       RRR4       V P                  VP                  P                  \        P                  V34       R#   + '       g   i     L; i  + '       g   i     L[; i)i6'  rl  N)rI  r=   r8   r   make_bad_fdr3  rT  r  rn  r   rc   )r   WSAENOTSOCKrV  s   &  r   $test_socket_fileno_requires_valid_fd7GeneralModuleTests.test_socket_fileno_requires_valid_fd@  s    w''2MM!6!6!89 (bll((5;;*DEw''2MM"" ,,.0 (
 	bll((5;;*DE (' ('s   +D/&A	E/D?	E	c           
        \         P                  ! 4       ;_uu_ 4       pV P                  \        4      ;_uu_ 4        \        P                  ! VP                  4       R 7       RRR4       V P                  \        4      ;_uu_ 4       p\        P                  ! \        P                  \        P                  VP                  4       R 7       RRR4       V P                  XP                  P                  \        P                  4       RRR4       R#   + '       g   i     L; i  + '       g   i     La; i  + '       g   i     R# ; irW  )tempfileNamedTemporaryFilerI  r=   r8   r4  r   rc   rX  rT  r  ro  )r   afilerV  s   &  r   %test_socket_fileno_requires_socket_fd8GeneralModuleTests.test_socket_fileno_requires_socket_fdM  s    ((**e""7++U\\^4 , ""7++rNN&& <<>+ ,
 R\\//@ +*++ ,+	 +**s;   D7&D	"%D7AD$	<D7D!D7$D4/D77E	c                    ^ RI p^ RIpVP                  VP                  RRR VR7      pVP	                  V\
        P                  4       R# )r   Nr<  r8   c                 T    V P                  4       ;'       d    V P                  R 4      # )AF_isupperr
  Cs   &r   r   <GeneralModuleTests.test_addressfamily_enum.<locals>.<lambda>]      !))+==!,,u*==r   source)r$  enum_old_convert_IntEnum_test_simple_enumr8   r<  )r   r$  r  CheckedAddressFamilys   &   r   test_addressfamily_enum*GeneralModuleTests.test_addressfamily_enumY  sE    #11ox=  2  
 	3V5I5IJr   c                    ^ RI p^ RIpVP                  VP                  RRR VR7      pVP	                  V\
        P                  4       R# )r   Nr?  r8   c                 T    V P                  4       ;'       d    V P                  R 4      # )SOCK_r  r  s   &r   r   9GeneralModuleTests.test_socketkind_enum.<locals>.<lambda>f  s    !))+??!,,w*??r   r  )r$  r  r  r  r  r8   r?  )r   r$  r  CheckedSocketKinds   &   r   test_socketkind_enum'GeneralModuleTests.test_socketkind_enumb  sE     ..lH? / 
 	0&2C2CDr   c                    ^ RI p^ RIpVP                  VP                  RRR VR7      pVP	                  V\
        P                  4       R# )r   NMsgFlagr8   c                 T    V P                  4       ;'       d    V P                  R 4      # )MSG_r  r  s   &r   r   6GeneralModuleTests.test_msgflag_enum.<locals>.<lambda>o  s    !))+>>!,,v*>>r   r  )r$  r  r  IntFlagr  r8   r  )r   r$  r  CheckedMsgFlags   &   r   test_msgflag_enum$GeneralModuleTests.test_msgflag_enumk  sA    ++i> , 
 	~v~~>r   c                    ^ RI p^ RIpVP                  VP                  RRR VR7      pVP	                  V\
        P                  4       R# )r   NAddressInfor8   c                 T    V P                  4       ;'       d    V P                  R 4      # )AI_r  r  s   &r   r   :GeneralModuleTests.test_addressinfo_enum.<locals>.<lambda>x  r  r   r  )r$  r  r  r  r  r8   r  )r   r$  r  CheckedAddressInfos   &   r   test_addressinfo_enum(GeneralModuleTests.test_addressinfo_enumt  sE    !//mX= 0   	163E3EFr   r   )gr   r   r   r   r#   
skipUnlessr$  r'  r,  r7  r>  rE  rM  rW  r^  rd  rO  r
  rp  skipIfr   is_wasir{  rz   r{   r	   r  r  r  r  r  r7   r8   r  skip_android_selinuxr  r  r  r  r  r  r  r  r  r"  r3  rD  rM  rS  r[  rb  re  ri  rp  rt  ry  r  r  r  r  r  r  is_resource_enabledr  r  r  r  r  r  r  r  r  r  r   r  r   r	  r  r  r  r   r  r   r(  r+  r.  r4  rC  rT  rZ  r^  rb  rf  rk  ro  rt  rz  r  r  r  r  r   r   r   s   @r   r  r    s~    ,.CD# E#
+ ,.CD
, E
,3"(6T  D*<= > __W__&EF
> G
> 13HI335RS, T J,6v&?+" 79Z[79Z[& \ \&$ 8?A!!.1* 2A* )9:AC!!"235 4C5" )9:AC!!"23G 4CG m479B9B:>0-F^G2 58:I:I 58: : > 58:<1:<1| 58:M:M0 58:#:#D(:>A7
=,( D*<=	: >	: D*<=)ABLNSN >SPd __Y$&(<=.B >.B`Q 44Y?13
I3
I>.-!"G	7 8,	7 __Y$&(<=P > P 335STU UU 335STI UIA 335ST__S\\W,.HI__S;<8:\]!!.1
O 2 ^ = J U

O 335ST8:O: UO 335ST__S\\W,.HI__S;<8:\]!!.1W 2 ^ = J U
W 335ST#,,'18:U: UU=9 ,2 Z02LM8 N8"*A@KLI __RWW_&ABJ CJF
AKE?G Gr   r  z!SocketCan required for this test.c                   8  a  ] tR tRt o R t]P                  ! ]! ]R4      R4      R 4       t	R t
]P                  ! ]! ]R4      R4      R 4       tR tR	 t]P                  ! ]! ]R
4      R4      R 4       t]P                  ! ]! ]R4      R4      R 4       tRtV tR# )BasicCANTesti}  c                f    \         P                   \         P                   \         P                   R # r   )r8   AF_CANrA   rC   r   s   &r   r^  !BasicCANTest.testCrucialConstants  s    r   CAN_BCM&socket.CAN_BCM required for this test.c                   \         P                   \         P                   \         P                   \         P                   \         P
                   \         P                   \         P                   \         P                   \         P                   \         P                   \         P                   \         P                   \         P                   \         P                   \         P                   \         P                    \         P"                   \         P$                   \         P&                   \         P(                   \         P*                   \         P,                   \         P.                   \         P0                   R # r   )r8   r  CAN_BCM_TX_SETUPCAN_BCM_TX_DELETECAN_BCM_TX_READCAN_BCM_TX_SENDCAN_BCM_RX_SETUPCAN_BCM_RX_DELETECAN_BCM_RX_READCAN_BCM_TX_STATUSCAN_BCM_TX_EXPIREDCAN_BCM_RX_STATUSCAN_BCM_RX_TIMEOUTCAN_BCM_RX_CHANGEDCAN_BCM_SETTIMERCAN_BCM_STARTTIMERCAN_BCM_TX_COUNTEVTCAN_BCM_TX_ANNOUNCECAN_BCM_TX_CP_CAN_IDCAN_BCM_RX_FILTER_IDCAN_BCM_RX_CHECK_DLCCAN_BCM_RX_NO_AUTOTIMERCAN_BCM_RX_ANNOUNCE_RESUMECAN_BCM_TX_RESET_MULTI_IDXCAN_BCM_RX_RTR_FRAMEr   s   &r   testBCMConstantsBasicCANTest.testBCMConstants  s     	 	      !!  !!!! 	!!""""######&&))))##r   c                    \         P                   ! \         P                  \         P                  \         P                  4      ;_uu_ 4       p R R R 4       R #   + '       g   i     R # ; ir   r8   rA   rB   rC   r6  s   & r   testCreateSocketBasicCANTest.testCreateSocket  6    ]]6==&//6>>JJa KJJJ   AA(	c                    \         P                   ! \         P                  \         P                  \         P                  4      ;_uu_ 4       p R R R 4       R #   + '       g   i     R # ; ir   )r8   rA   rK   r  r6  s   & r   testCreateBCMSocket BasicCANTest.testCreateBCMSocket  s;     ]]6==&*;*;V^^LLPQ MLLLr  c                :   \         P                   ! \         P                  \         P                  \         P                  4      ;_uu_ 4       pRpVP	                  V4       V P                  VP                  4       V4       RRR4       R#   + '       g   i     R# ; i)rP  N)rP  )r8   rA   rB   rC   r   rX  r2  )r   rG   addresss   &  r   testBindAnyBasicCANTest.testBindAny  sY    ]]6==&//6>>JJaGFF7OQ]]_g6 KJJJs   4B		B	c                   \         P                   ! \         P                  \         P                  \         P                  4      ;_uu_ 4       pV P	                  \
        R VP                  R4       RRR4       R#   + '       g   i     R# ; i)interface name too longN)   xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx)r8   rA   rB   rC   r%  r=   r   r6  s   & r   testTooLongInterfaceName%BasicCANTest.testTooLongInterfaceName  sO    ]]6==&//6>>JJa""7,E#$66=: KJJJs   #A88B		CAN_RAW_LOOPBACKz/socket.CAN_RAW_LOOPBACK required for this test.c           
        \         P                   ! \         P                  \         P                  \         P                  4      ;_uu_ 4       pR Fp  pVP	                  \         P
                  \         P                  V4       V P                  VVP                  \         P
                  \         P                  4      4       Kr  	  RRR4       R#   + '       g   i     R# ; i)r   N)r   r   )	r8   rA   rB   rC   rx  SOL_CAN_RAWr  rX  r^  )r   rG   loopbacks   &  r   testLoopbackBasicCANTest.testLoopback  s     ]]6==&//6>>JJa"V//1H1H%'  LL!3!3V5L5LMO # KJJJs   A7CC	CAN_RAW_FILTERz-socket.CAN_RAW_FILTER required for this test.c           
     T   R Rr!\         P                  ! RW4      p\        P                  ! \        P                  \        P                  \        P
                  4      ;_uu_ 4       pVP                  \        P                  \        P                  V4       V P                  VVP                  \        P                  \        P                  ^4      4       VP                  \        P                  \        P                  \        V4      4       RRR4       R#   + '       g   i     R# ; i)   i   z=IIN)r;   packr8   rA   rB   rC   rx  r  r  rX  r^  rL  )r   can_idcan_mask
can_filterrG   s   &    r   
testFilterBasicCANTest.testFilter  s     !%[[9
]]6==&//6>>JJaLL++V-B-BJOZLL!3!3V5J5JANPLL++V-B-BIjDYZ	 KJJJs   %B'DD'	r   N)r   r   r   r   r^  r#   r  r7   r8   r  r  r  r  r  r  r  r   r   r   s   @r   r  r  }  s     
 3AC$C$< 3ACC7: );<JLOLO )9:HJ[J[r   r  c                      a  ] tR tRt o RR lt]R 4       t]R 4       tR tR t	R t
R tR	 tR
 t]P                  ! ]! ]R4      R4      R 4       t]P                  ! ]! ]R4      R4      R 4       tRtV tR# )CANTesti  c                2    \         P                  WR 7       R# r  )r$  r   r  s   &&r   r   CANTest.__init__  ri  r   c                    \        V4      pVP                  ^R4      p\        P                  ! V P                  WV4      # )zBuild a CAN frame.r  )r  ljustr;   r  r   )clsr  datacan_dlcs   &&& r   build_can_frameCANTest.build_can_frame  s6     d)zz!W%{{3,,ftDDr   c                X    \         P                  ! V P                  V4      w  r#pW#VRV 3# )zDissect a CAN frame.N)r;   r<   r   )r  framer  r  r  s   &&   r   dissect_can_frameCANTest.dissect_can_frame  s0     !'c.?.? Ghw00r   c                    V P                   P                  V P                  4      w  rV P                  V P                  V4       V P                  V^ ,          V P
                  4       R# r0  )rG   rv  r   rX  cfr   r   r  rm  s   &  r   testSendFrameCANTest.testSendFrame  sF    66??4<<0"%a$..1r   c                ~    V P                  ^ R4      V n        V P                  P                  V P                  4       R# )r   s   Nr  r  r	  r`  r   s   &r   _testSendFrameCANTest._testSendFrame  s+    &&t-DEdggr   c                    V P                   P                  V P                  4      w  rV P                  V P                  V4       R # r   )rG   rv  r   rX  r  r  s   &  r   testSendMaxFrameCANTest.testSendMaxFrame  s.    66??4<<0"%r   c                ~    V P                  ^ R4      V n        V P                  P                  V P                  4       R# )r   Ns   r  r   s   &r   _testSendMaxFrameCANTest._testSendMaxFrame  s*    &&t[9dggr   c                   V P                   P                  V P                  4      w  rV P                  V P                  V4       V P                   P                  V P                  4      w  rV P                  V P
                  V4       R # r   )rG   rv  r   rX  cf1cf2r  s   &  r   testSendMultiFramesCANTest.testSendMultiFrames  sZ    66??4<<02&66??4<<02&r   c                    V P                  ^R4      V n        V P                  P                  V P                  4       V P                  ^R4      V n        V P                  P                  V P                  4       R# )   s   D3"s   "3N)r  r  r	  r`  r  r   s   &r   _testSendMultiFramesCANTest._testSendMultiFrames  sS    ''.ABdhh''o>dhhr   r  r  c                $   V P                   P                  V P                  4      w  rV P                  V P                  V4       V P                  V4      w  r4pV P                  V P                  V4       V P                  V P                  V4       R # r   )r	  rv  r   rX  r  r  r  r  )r   r  rm  r  r  r  s   &     r   _testBCMCANTest._testBCM	  so     88$$T\\2"% $ 6 6r :f-D)r   c                   \         P                   ! \         P                  \         P                  \         P                  4      pV P	                  VP
                  4       VP                  V P                  34       R V n        \        . RO4      V n
        V P                  V P                  V P                  4      V n        \         P                  p^ p^ p^ ;p;p;rxRp	^p
\        V P                  4      ^8X  g   Q h\        P                   ! V P"                  VVVVVVVV	V
4
      pWP                  ,           pVP%                  V4      pV P'                  V\        V4      4       R# )#  i"  N)         )r8   rA   rK   r  r   rD   rP  r   r  bytesr  r  r  r  r  r;   r  r   r`  rX  )r   bcmopcoder  rW  ival1_seconds
ival1_usecival2_seconds
ival2_usec
bcm_can_idnframesheaderheader_plus_frame
bytes_sents   &             r   testBCMCANTest.testBCM	  s#    mmFMM6+<+<fnnM		"T^^%&,-	&&t{{DII>''BCCC
C]
477|r!!!T11!!
 #WW,XX/0
S):%;<r   )r  r  r  r  r  Nr  )r   r   r   r   r   classmethodr  r  r  r  r  r	  r  r  r#   r  r7   r8   r  r(  r   r   r   s   @r   r  r    s     D E E 1 1
2
&'  3AC*C* 3AC=C=r   r  z!CAN ISOTP required for this test.c                      a a ] tR tRt oV 3R ltR tR t]P                  ! ]	! ]
R4      R4      R 4       tR tR	 tR
tVtV ;t# )	ISOTPTesti,	  c                6   < \         SV `  ! V/ VB  R V n        R# r   Nr  r   r   r  s   &*,r   r   ISOTPTest.__init__/	      $)&) r   c                    \         P                   \         P                   \         P                   \         P                   R # r   )r8   r  rA   rL   rK   r   s   &r   r^  ISOTPTest.testCrucialConstants3	  s"    r   c                    \         P                   ! \         P                  \         P                  \         P                  4      ;_uu_ 4       p R R R 4       R #   + '       g   i     R # ; ir   r  r6  s   & r   r  ISOTPTest.testCreateSocket9	  r  r  rL   z(socket.CAN_ISOTP required for this test.c                    \         P                   ! \         P                  \         P                  \         P                  4      ;_uu_ 4       p R R R 4       R #   + '       g   i     R # ; ir   )r8   rA   rK   rL   r6  s   & r   testCreateISOTPSocketISOTPTest.testCreateISOTPSocket=	  =     ]]6==&*;*;V=M=MNNRS ONNNr  c           	     j   \         P                   ! \         P                  \         P                  \         P                  4      ;_uu_ 4       pV P	                  \
        R 4      ;_uu_ 4        VP                  R4       RRR4       RRR4       R#   + '       g   i     L; i  + '       g   i     R# ; i)r  N)r  r   r  )r8   rA   rK   rL   r%  r=   r   r6  s   & r   r  "ISOTPTest.testTooLongInterfaceNameC	  sl    ]]6==&*;*;V=M=MNNRS''1JKK)* L ONKK ONNs$   B!*B	<B!BB!!B2	c                    \         P                   ! \         P                  \         P                  \         P                  4      ;_uu_ 4       pV P                  R R3pVP                  V4       V P                  VP                  4       V4       RRR4       R#   + '       g   i     R# ; i  \         dN   pTP                  \        P                  8X  d)   T P                  RT P                  ,          4        Rp?R# h Rp?ii ; i)r  iV  Nr   )r8   rA   rK   rL   r   r   rX  r2  r=   r  ENODEVr   r   rG   rm  r   s   &   r   testBindISOTPTest.testBindI	  s    
	v}}f.?.?AQAQRRVW~~ue3t  $7 SRRR  	ww%,,&E>>* + + 	s>   A
B+ ABB+ B(	"B+ (B+ +D6AC>=C>>Dr   )r   r   r   r   r   r^  r  r#   r  r7   r8   r7  r  r?  r   r   r  r  s   @@r   r,  r,  ,	  sP     ! 5CEE+ r   r,  z!CAN J1939 required for this test.c                      a a ] tR tRt oV 3R lt]P                  ! ]! ]R4      R4      R 4       t	]P                  ! ]! ]R4      R4      R 4       t
R tRtVtV ;t# )		J1939TestiW	  c                6   < \         SV `  ! V/ VB  R V n        R# r.  r/  r  s   &*,r   r   J1939Test.__init__Z	  r1  r   rP   z(socket.CAN_J1939 required for this test.c                   \         P                   \         P                   \         P                   \         P                   \         P
                   \         P                   \         P                   \         P                   \         P                   \         P                   \         P                   \         P                   \         P                   \         P                   \         P                   \         P                    \         P"                   \         P$                   \         P&                   \         P(                   \         P*                   \         P,                   \         P.                   \         P0                   R # r   )r8   rP   J1939_MAX_UNICAST_ADDRJ1939_IDLE_ADDRJ1939_NO_ADDRJ1939_NO_NAMEJ1939_PGN_REQUESTJ1939_PGN_ADDRESS_CLAIMEDJ1939_PGN_ADDRESS_COMMANDEDJ1939_PGN_PDU1_MAXJ1939_PGN_MAXJ1939_NO_PGNSO_J1939_FILTERSO_J1939_PROMISCSO_J1939_SEND_PRIOSO_J1939_ERRQUEUESCM_J1939_DEST_ADDRSCM_J1939_DEST_NAMESCM_J1939_PRIOSCM_J1939_ERRQUEUEJ1939_NLA_PADJ1939_NLA_BYTES_ACKEDJ1939_EE_INFO_NONEJ1939_EE_INFO_TX_ABORTJ1939_FILTER_MAXr   s   &r   testJ1939ConstantsJ1939Test.testJ1939Constants^	  s     	%%  ((**!! 	!!  """"!!$$!!%%r   c                    \         P                   ! \         P                  \         P                  \         P                  4      ;_uu_ 4       p R R R 4       R #   + '       g   i     R # ; ir   )r8   rA   rK   rP   r6  s   & r   testCreateJ1939SocketJ1939Test.testCreateJ1939Socket	  r9  r  c                b    \         P                   ! \         P                  \         P                  \         P                  4      ;_uu_ 4       pV P                  \         P
                  \         P                  \         P                  3pVP                  V4       V P                  VP                  4       V4       R R R 4       R #   + '       g   i     R # ; i  \         dN   pTP                  \        P                  8X  d)   T P                  RT P                  ,          4        R p?R # h R p?ii ; i)Nr   )r8   rA   rK   rP   r   rJ  rP  rI  r   rX  r2  r=   r  r=  r   r>  s   &   r   r?  J1939Test.testBind	  s    
	v}}f.?.?AQAQRRVW~~v';';V=P=PRXRfRfft  $7 SRRR  	ww%,,&E>>* + + 	s>   A
C A,C8C C	C C D.!AD)(D))D.rA  )r   r   r   r   r   r#   r  r7   r8   r^  ra  r?  r   r   r  r  s   @@r   rC  rC  W	  so     ! 5CE E B 5CEE r   rC  z#RDS sockets required for this test.c                   2   a  ] tR tRt o R tR tR tRtV tR# )BasicRDSTesti	  c                F    \         P                   \         P                   R # r   )r8   AF_RDSrS   r   s   &r   r^  !BasicRDSTest.testCrucialConstants	  s    r   c                    \         P                   ! \         P                  \         P                  ^ 4      ;_uu_ 4       p RRR4       R#   + '       g   i     R# ; ir0  )r8   rS   rT   r6  s   & r   r  BasicRDSTest.testCreateSocket	  s4    ]]6==&*?*?CCq DCCCs   A		A	c                x   R p\         P                   ! \         P                  \         P                  ^ 4      ;_uu_ 4       pVP                  \         P                  \         P
                  V4       VP                  \         P                  \         P                  V4       RRR4       R#   + '       g   i     R# ; i)i @  N)r8   rS   rT   rx  r\  	SO_RCVBUF	SO_SNDBUF)r   r   rG   s   &  r   testSocketBufferSize!BasicRDSTest.testSocketBufferSize	  sn    ]]6==&*?*?CCqLL**F,<,<gFLL**F,<,<gF DCCCs   AB((B9	r   N)	r   r   r   r   r^  r  ro  r   r   r   s   @r   rf  rf  	  s     G Gr   rf  c                      a a ] tR tRt oRR ltV 3R ltR tR tR tR t	]
! ]P                  R4      R	 4       t]
! ]P                  R
4      R 4       tR tR tR tR tRtVtV ;t# )RDSTesti	  c                2    \         P                  WR 7       R# r  )r,  r   r  s   &&r   r   RDSTest.__init__	  ri  r   c                X   < \         SV `  4        \        P                  ! 4       V n        R # r   )r  r   r   r   evtr  s   &r   r   RDSTest.setUp	  s    ??$r   c                    V P                   P                  V P                  4      w  rV P                  V P                  V4       V P                  V P
                  V4       R # r   )r   rv  r   rX  r  r3  r   r  rm  s   &  r   testSendAndRecvRDSTest.testSendAndRecv	  sD    YY''5
D)-r   c                    R V n         V P                  P                  V P                   ^ \        V P                  34       R# rh  Nr  r	  rS  r1  r   r   s   &r   _testSendAndRecvRDSTest._testSendAndRecv	  *    			1tTYY&78r   c                0   V P                   P                  V P                  \        P                  4      w  rV P                  V P                  V4       V P                   P                  V P                  4      w  rV P                  V P                  V4       R # r   )r   rv  r   r8   MSG_PEEKrX  r  ry  s   &  r   testPeekRDSTest.testPeek	  sd    YY''fooF
D)YY''5
D)r   c                    R V n         V P                  P                  V P                   ^ \        V P                  34       R# r}  r~  r   s   &r   	_testPeekRDSTest._testPeek	  r  r   recvmsgc                    V P                   P                  V P                  4      w  rr4V P                  V P                  V4       R # r   )r   r  r   rX  r  )r   r  ancdata	msg_flagsrm  s   &    r   testSendAndRecvMsgRDSTest.testSendAndRecvMsg	  s3    )-):):4<<)H&yD)r   sendmsgc                    RV n         V P                  P                  V P                   .R^ \        V P                  34       R# )s   hello Ns<   hello hello hello hello hello hello hello hello hello hello r   )r  r	  r  r1  r   r   s   &r   _testSendAndRecvMsgRDSTest._testSendAndRecvMsg	  s0    "	$))b!dDII->?r   c                   V P                   P                  V P                  4      w  rV P                  V P                  V4       V P                   P                  V P                  4      w  rV P                  V P
                  V4       R # r   )r   rv  r   rX  data1data2ry  s   &  r   testSendAndRecvMultiRDSTest.testSendAndRecvMulti	  s^    YY''5
T*YY''5
T*r   c                    R V n         V P                  P                  V P                   ^ \        V P                  34       RV n        V P                  P                  V P
                  ^ \        V P                  34       R# )s   bacons   eggN)r  r	  rS  r1  r   r  r   s   &r   _testSendAndRecvMultiRDSTest._testSendAndRecvMulti	  sR    


Adii'89


Adii'89r   c                   \         P                   ! V P                  .. . R 4      w  rpV P                  V P                  V4       V P                  P                  V P                  4      w  rEV P                  V P                  V4       R# )g      @N)selectr   r3  rv  r   rX  r  )r   r>   r  r   r  rm  s   &     r   
testSelectRDSTest.testSelect	  s`    --RS9adii#YY''5
D)r   c                    R V n         V P                  P                  V P                   ^ \        V P                  34       R# )s   selectNr~  r   s   &r   _testSelectRDSTest._testSelect	  s*    			1tTYY&78r   )r  r  r  rv  r  )r   r   r   r   r   r   rz  r  r  r  r  r8   r  r  r  r  r  r  r   r   r  r  s   @@r   rr  rr  	  s}     D%.
9*9 &--+* ,* &--+@ ,@+:*9 9r   rr  z'QIPCRTR sockets required for this test.c                   D   a  ] tR tRt o R tR tR tR tR tR t	Rt
V tR	# )
BasicQIPCRTRTesti	  c                &    \         P                   R # r   )r8   r\   r   s   &r   r^  %BasicQIPCRTRTest.testCrucialConstants	  s    r   c                    \         P                   ! \         P                  \         P                  4      ;_uu_ 4       p R R R 4       R #   + '       g   i     R # ; ir   )r8   r\   rK   r6  s   & r   r  !BasicQIPCRTRTest.testCreateSocket	  s4    ]]6,,f.?.?@@A A@@@   AA	c                   \         P                   ! \         P                  \         P                  4      ;_uu_ 4       pV P                  VP	                  4       ^,          ^ 4       RRR4       R#   + '       g   i     R# ; ir  )r8   r\   rK   rX  r2  r6  s   & r   testUnboundBasicQIPCRTRTest.testUnbound	  sL    ]]6,,f.?.?@@AQ]]_Q/3 A@@@   (A..A?	c                \   \         P                   ! \         P                  \         P                  4      ;_uu_ 4       p\        P                  ! WP                  4       ^ ,          R7       V P                  VP                  4       ^,          ^ 4       RRR4       R#   + '       g   i     R# ; i)r   r  N)r8   r\   rK   r	   r   r2  assertNotEqualr6  s   & r   testBindSockBasicQIPCRTRTest.testBindSock	  se    ]]6,,f.?.?@@A##AMMOA,>? 2A6 A@@@s   ABB+	c           	        \         P                   ! \         P                  \         P                  4      ;_uu_ 4       pV P                  \        \
        P                  VRR7       RRR4       R#   + '       g   i     R# ; i)r  r  Nr  )r8   r\   rK   rI  r=   r	   r   r6  s   & r   testInvalidBindSock$BasicQIPCRTRTest.testInvalidBindSock	  sN    ]]6,,f.?.?@@Ag}'>'>K A@@@r  c                &   \         P                   ! \         P                  \         P                  4      ;_uu_ 4       pVP                  R4       V P	                  VP                  4       ^,          ^ 4       RRR4       R#   + '       g   i     R# ; i){   N)r  r  )r8   r\   rK   rP  r  r2  r6  s   & r   testAutoBindSock!BasicQIPCRTRTest.testAutoBindSock	  sX    ]]6,,f.?.?@@AIIj! 2A6 A@@@s   9A??B	r   N)r   r   r   r   r^  r  r  r  r  r  r   r   r   s   @r   r  r  	  s)     47
L7 7r   r  c                   8   a  ] tR tRt o R tR tR tR tRtV t	R# )BasicVSOCKTesti
  c                &    \         P                   R # r   )r8   r@  r   s   &r   r^  #BasicVSOCKTest.testCrucialConstants
  s	    r   c                &   \         P                   \         P                   \         P                   \         P                   \         P
                   \         P                   \         P                   \         P                   \         P                   R # r   )
r8   SO_VM_SOCKETS_BUFFER_SIZESO_VM_SOCKETS_BUFFER_MIN_SIZESO_VM_SOCKETS_BUFFER_MAX_SIZErA  VMADDR_PORT_ANYrO  rN  VM_SOCKETS_INVALID_VERSIONr3   r   s   &r   testVSOCKConstants!BasicVSOCKTest.testVSOCKConstants
  sS    ((,,,,))--r   c                    \         P                   ! \         P                  \         P                  4      ;_uu_ 4       p R R R 4       R #   + '       g   i     R # ; ir   )r8   r@  rc   r6  s   & r   r  BasicVSOCKTest.testCreateSocket
  s2    ]]6??F,>,>??1 @???r  c           	        \         P                   ! \         P                  \         P                  4      ;_uu_ 4       pVP                  \         P                  \         P                  4      pVP                  \         P                  \         P
                  4      pVP                  \         P                  \         P                  4      pVP                  \         P                  \         P                  V^,          4       VP                  \         P                  \         P
                  V^,          4       VP                  \         P                  \         P                  V^,          4       V P                  V^,          VP                  \         P                  \         P                  4      4       V P                  V^,          VP                  \         P                  \         P
                  4      4       V P                  V^,          VP                  \         P                  \         P                  4      4       RRR4       R#   + '       g   i     R# ; ir  N)	r8   r@  rc   r^  r  r  r  rx  rX  )r   rG   orig_maxr  orig_mins   &    r   ro  #BasicVSOCKTest.testSocketBufferSize
  s   ]]6??F,>,>??1||FOO$*$H$HJH<< & @ @BD||FOO$*$H$HJH LL==x!|MLL994!8ELL==x!|M X\\\&//#AACD TAX\\&//#==?@ X\\\&//#AACD+ @???s   G<II	r   N)
r   r   r   r   r^  r  r  ro  r   r   r   s   @r   r  r  
  s      
	.D Dr   r  rb   z)Bluetooth sockets required for this test.c                   &   a  ] tR tRt o R tRtV tR# )BasicBluetoothTesti5
  c                   \         P                   \         P                   \         P                   \         P                   \         P
                   \        P                  R 8X  dA   \         P                   \         P                   \         P                   \         P                   \        P                  R 8w  dq   \         P                   \         P                   \         P                   \         P                   \         P                    \         P"                   \         P$                   \        P                  R8X  Ed   \         P&                   \         P(                   \         P*                   \         P,                   \         P.                   \         P0                   \         P2                   \         P4                   \         P6                   \         P8                   \         P:                   \         P<                   \         P>                   \         P@                   \C        \         R4      '       d   \         PD                   \C        \         R4      '       d   \         PF                   \C        \         R4      '       d!   \         PH                   \         PJ                   \         PL                   \         PN                   \         PP                   \        P                  R9   dA   \         PR                   \         PT                   \         PV                   \         PX                   \        P                  P[                  R4      '       dQ   \         P\                   \         P^                   \         P`                   \         Pb                   \         Pd                   \        P                  R8X  d   \         Pf                   \        P                  P[                  R	4      '       d   \         Ph                   \         Pj                   \         Pl                   \         Pn                   \         PP                   \         Pp                   \         Pr                   \         Pt                   R# R# )
rt   r  BT_PHYBT_MODEBT_VOICEr  N)r  r  )r  r  	dragonfly)r  r  );r8   
BDADDR_ANYBDADDR_LOCALrb   rd   
SOL_RFCOMMrz   r{   SO_BTH_ENCRYPT
SO_BTH_MTUSO_BTH_MTU_MAXSO_BTH_MTU_MINBTPROTO_HCISOL_HCIrg   	SOL_L2CAPBTPROTO_SCOSOL_SCOHCI_DATA_DIRSOL_BLUETOOTHHCI_DEV_NONEHCI_CHANNEL_RAWHCI_CHANNEL_USERHCI_CHANNEL_MONITORHCI_CHANNEL_CONTROLHCI_CHANNEL_LOGGINGHCI_TIME_STAMPBT_SECURITYBT_SECURITY_SDPBT_FLUSHABLEBT_POWERBT_CHANNEL_POLICYBT_CHANNEL_POLICY_BREDR_ONLYr7   BT_PHY_BR_1M_1SLOTBT_MODE_BASICBT_VOICE_TRANSPARENTBT_VOICE_CVSD_16BITL2CAP_LML2CAP_LM_MASTERL2CAP_LM_AUTHBDADDR_BREDRBDADDR_LE_PUBLICBDADDR_LE_RANDOM
HCI_FILTERr
  SO_L2CAP_IMTUSO_L2CAP_FLUSHSO_RFCOMM_MTUSO_RFCOMM_FC_INFO
SO_SCO_MTUSO_SCO_CONNINFOSO_HCI_EVT_FILTERSO_HCI_PKT_FILTERSO_L2CAP_IQOSSO_L2CAP_LMSO_RFCOMM_LMRFCOMM_LM_AUTHSO_SCO_HANDLEr   s   &r   testBluetoothConstants)BasicBluetoothTest.testBluetoothConstants9
  s~   <<7"!!!!!!<<7"NN  NN<<7"  ""##&&&&&&!!""OO$$//vx(())vy))$$vz**++**OO""  <<//####<<""#EFF  !!  $$<<9$""<<""#:;;$$$$    !!   <r   r   N)r   r   r   r   r  r   r   r   s   @r   r  r  5
  s     H! H!r   r  c                     a  ] tR tRt o R t]P                  ! ]P                  R8H  R4      R 4       t	]P                  ! ]P                  R8H  R4      R 4       t
]P                  ! ]P                  R8H  R4      R	 4       t]P                  ! ]R
4      R 4       t]P                  ! ]R
4      R 4       t]P                  ! ]R
4      R 4       t]P                  ! ]R
4      R 4       tR tR t]P                  ! ]! ]R4      R4      R 4       t]P                  ! ]! ]R4      R4      R 4       t]P                  ! ]! ]R4      R4      R 4       t]P                  ! ]! ]R4      R4      R 4       tRtV tR# )BluetoothTesti
  c                    \         P                   ! \         P                  \         P                  \         P                  4      ;_uu_ 4       p R R R 4       R #   + '       g   i     R # ; ir   )r8   rb   rc   rd   r6  s   & r   testCreateRfcommSocket$BluetoothTest.testCreateRfcommSocket
  s=    ]]6..0B0BFDYDYZZ^_ [ZZZr  rt   z&windows does not support L2CAP socketsc                    \         P                   ! \         P                  \         P                  \         P                  4      ;_uu_ 4       p R R R 4       R #   + '       g   i     R # ; ir   )r8   rb   rT   rg   r6  s   & r   testCreateL2capSocket#BluetoothTest.testCreateL2capSocket
  s=    ]]6..0E0EvG[G[\\`a ]\\\r  z$windows does not support HCI socketsc                    \         P                   ! \         P                  \         P                  \         P                  4      ;_uu_ 4       p R R R 4       R #   + '       g   i     R # ; ir   )r8   rb   rB   r  r6  s   & r   testCreateHciSocket!BluetoothTest.testCreateHciSocket
  s;    ]]6..ASASTTXY UTTTr  z$windows does not support SCO socketsc                    \         P                   ! \         P                  \         P                  \         P                  4      ;_uu_ 4       p R R R 4       R #   + '       g   i     R # ; ir   )r8   rb   rT   r  r6  s   & r   testCreateScoSocket!BluetoothTest.testCreateScoSocket
  s=    ]]6..0E0EvGYGYZZ^_ [ZZZr  z.Bluetooth L2CAP sockets required for this testc           	        \         P                  ! \        R 4      p\        P                  ! \        P                  \        P                  \        P
                  4      ;_uu_ 4       p^pVP                  \        P                  ^ W134       VP                  4       pV P                  V\        P                  ^ W134       RRR4       R#   + '       g   i     R# ; i)r  N
r   get_attributer8   rb   rT   rg   r   r  r2  rX  )r   r  r   CID_ATTrm  s   &    r   testBindLeAttL2capSocket&BluetoothTest.testBindLeAttL2capSocket
  s    "009KL]]6..0E0EvG[G[\\`aGFFF%%q'DE==?DTF$5$5q'#TU ]\\\s   &ACC	c           	        \         P                  ! \        R 4      p\        P                  ! \        P                  \        P                  \        P
                  4      ;_uu_ 4       p^pVP                  \        P                  V^ V34       VP                  4       pV P                  V\        P                  V^ V34       RRR4       R#   + '       g   i     R# ; i)r  Nr  )r   r  r   psmrm  s   &    r   testBindLePsmL2capSocket&BluetoothTest.testBindLePsmL2capSocket
  s    "009KL]]6..0E0EvG[G[\\`aCFFF%%sA/?@A==?DTF$5$5sA?O#PQ ]\\\s   &AC

C	c                ~   \         P                   ! \         P                  \         P                  \         P                  4      ;_uu_ 4       pR pVP	                  \         P
                  V34       VP                  4       pV P                  V\         P
                  V34       RRR4       R#   + '       g   i     R# ; i)  N)r8   rb   rT   rg   r   r  r2  rX  )r   r   r  rm  s   &   r   testBindBrEdrL2capSocket&BluetoothTest.testBindBrEdrL2capSocket
  s|    ]]6..0E0EvG[G[\\`aCFFF%%s+,==?DTF$5$5s#;< ]\\\s   AB++B<	c                V   \         P                   ! \         P                  \         P                  \         P                  4      ;_uu_ 4       pV P	                  \
        4      ;_uu_ 4        VP                  \         P                  ^ ^ ^ ^ 34       RRR4       V P	                  \
        4      ;_uu_ 4        VP                  \         P                  34       RRR4       V P	                  \
        4      ;_uu_ 4        VP                  \         P                  4       RRR4       V P	                  \
        4      ;_uu_ 4        VP                  \         P                  P                  4       R34       RRR4       V P	                  \
        4      ;_uu_ 4        VP                  R4       RRR4       RRR4       R#   + '       g   i     EL2; i  + '       g   i     L; i  + '       g   i     L; i  + '       g   i     L; i  + '       g   i     Lg; i  + '       g   i     R# ; i)r   Nr   )   r   )	r8   rb   rT   rg   rI  r=   r   r  encode)r   r   s   & r   testBadL2capAddrBluetoothTest.testBadL2capAddr
  sE   ]]6..0E0EvG[G[\\`a""7++))1aA67 ,""7++))+, ,""7++v(() ,""7++))002F;< ,""7++)* , ]\+++++++++++ ]\\s   H)%F7	%H3!G	%H9 G	%H>0G1	.%HH	%H7G	HGHG.)H1H<HHHH(	c                   \         P                   ! \         P                  \         P                  \         P                  4      ;_uu_ 4       p^ p VP	                  \         P
                  V34       TP                  4       pT P                  T\        P                  T34       T P!                  T^ ,          R4       \        P                  R8w  d#   T P                  T\         P
                  T34       RRR4       \         P                   ! \         P                  \         P                  \         P                  4      ;_uu_ 4       pTP	                  X4       TP                  4       pT P                  YT4       RRR4       R#   \         dG   p\        P                  R8X  d,   TP                  R8X  d   T P                  \        T4      4       h Rp?ii ; i  + '       g   i     L; i  + '       g   i     R# ; i)r   rt   iB'  Nz"(?i)[0-9a-f]{2}(?::[0-9a-f]{2}){4})r8   rb   rc   rd   r   r  r=   rz   r{   rC  r   r  r2  rX  r   ANYassertRegex)r   rG   channelr  rm  addr2s   &     r   testBindRfcommSocket"BluetoothTest.testBindRfcommSocket
  s]   ]]6..0B0BFDYDYZZ^_G))734
 ==?DTDHHg#67T!W&KL||w&  (9(97'CD [ ]]6..0B0BFDYDYZZ^_FF4LMMOEU) [Z  <<7*s||u/DMM#c(+	 [Z [ZZs>   G!F0BG3G(GAGGGG%	(G9	c           	        \         P                   ! \         P                  \         P                  \         P                  4      ;_uu_ 4       p^ pV P	                  \
        4      ;_uu_ 4        VP                  \         P                  P                  4       V34       RRR4       V P	                  \
        4      ;_uu_ 4        VP                  \         P                  34       RRR4       V P	                  \
        4      ;_uu_ 4        VP                  \         P                  V^ 34       RRR4       V P	                  \
        4      ;_uu_ 4        VP                  \         P                  R,           V34       RRR4       V P	                  \
        4      ;_uu_ 4        VP                  R4       RRR4       V P	                  \
        4      ;_uu_ 4        VP                  RV34       RRR4       RRR4       R#   + '       g   i     ELg; i  + '       g   i     EL5; i  + '       g   i     EL; i  + '       g   i     L; i  + '       g   i     L; i  + '       g   i     L|; i  + '       g   i     R# ; i)r   N r$  invalid)	r8   rb   rc   rd   rI  r=   r   r  r%  )r   rG   r+  s   &  r   testBadRfcommAddrBluetoothTest.testBadRfcommAddr
  s   ]]6..0B0BFDYDYZZ^_G""7++))002G<= ,""7++))+, ,""7++))7A67 ,""7++))D0':; ,""7++x  ,""7++	7+, , [Z+++++++++++++++ [ZZs    I.+0G9	%I. !H	!%I.#H!	)%I.)H5	7%I.I	.%I.I	'I.9H
	I.H	I.!H2,	I.5I I.II.I+&I..I?	r  z,Bluetooth HCI sockets required for this testc           
     	   \         P                  P                  R4      '       d   \        P                  ! \        P                  \        P
                  \        P                  4      ;_uu_ 4       pVP                  \        P                  4       VP                  4       pV P                  V\        P                  4       RRR4       R# ^ p\        P                  ! \        P                  \        P
                  \        P                  4      ;_uu_ 4       p VP                  V34       TP                  4       pT P                  Y#4       RRR4       T P#                  R4      ;_uu_ 4        \        P                  ! \        P                  \        P
                  \        P                  4      ;_uu_ 4       pTP                  T4       TP                  4       pT P                  Y#4       RRR4       RRR4       T P#                  R4      ;_uu_ 4        \        P                  ! \        P                  \        P
                  \        P                  4      ;_uu_ 4       p\        P$                  pTP                  Y534       TP                  4       pT P                  Y#4       RRR4       RRR4       T P#                  R4      ;_uu_ 4        \        P                  ! \        P                  \        P
                  \        P                  4      ;_uu_ 4       p\        P&                  p TP                  Y534       TP                  4       pT P                  Y#T34       RRR4       RRR4       R#   + '       g   i     R# ; i  \         dP   pTP                  \        P                  \        P                  39   d   T P                  \!        T4      4       h Rp?ii ; i  + '       g   i     EL; i  + '       g   i     EL; i  + '       g   i     EL; i  + '       g   i     EL; i  + '       g   i     EL; i  \         d_   pTP                  \        P(                  \        P*                  \        P,                  39   d   T P                  \!        T4      4       h Rp?ii ; i  + '       g   i     EL\; i  + '       g   i     R# ; i)r  Nintegerzchannel=HCI_CHANNEL_RAWzchannel=HCI_CHANNEL_USERr  r  r  )rz   r{   r
  r8   rb   rB   r  r   r  r2  rX  r=   r  EINVALr=  r   r  r  r  r  r  EBUSYERFKILL)r   rG   rm  devr  r+  s   &     r   testBindHciSocketBluetoothTest.testBindHciSocket
  s   <<""#EFFv22FOOVEWEWXX\]v(()}}  v'8'89 YX
 Cv22FOOVEWEWXX\]FFC6N
 }}  + Y ,,y))-- 3 3V__fFXFXYY]^s}}  + Z * ,,899-- 3 3V__fFXFXYY]^ 00~&}}  +	 Z : ,,9::-- 3 3V__fFXFXYY]^ 11FFC>* }}  W~6 Z ;:; YXX  yyU\\5<<$@@c#h/ YXX ZYY *)) ZYY :99  yyU[[%++u}}$MMc#h/		 ZYY ;::s   0AM/O N*!O ,AP73O4	*PAP0AP	"P0ASR0	(Q:#R0	S/N 	OA
OOO  O1	4P?	PP	P-'	P00Q	R-AR((R--R0	0S;	SS	c           
        \         P                   ! \         P                  \         P                  \         P                  4      ;_uu_ 4       p\        P
                  P                  R4      '       Ed   V P                  \        4      ;_uu_ 4        VP                  \         P                  P                  4       4       RRR4       V P                  \        4      ;_uu_ 4        VP                  \         P                  34       RRR4       V P                  \        4      ;_uu_ 4        VP                  \         P                  R,           4       RRR4       V P                  \        \        34      ;_uu_ 4        VP                  \         P                  R,           4       RRR4       V P                  \        4      ;_uu_ 4        VP                  R4       RRR4       V P                  \        4      ;_uu_ 4        VP                  R4       RRR4       V P                  \        4      ;_uu_ 4        VP                  R4       RRR4       EM^ pV P                  \        4      ;_uu_ 4        VP                  R4       RRR4       V P                  \        4      ;_uu_ 4        VP                  V\         P                  ^ ^ 34       RRR4       V P                  \        4      ;_uu_ 4        VP                  \         P                  4       RRR4       V P                  \        4      ;_uu_ 4        VP                  \         P                  P                  4       4       RRR4       RRR4       R#   + '       g   i     EL; i  + '       g   i     EL; i  + '       g   i     ELV; i  + '       g   i     EL; i  + '       g   i     EL; i  + '       g   i     EL; i  + '       g   i     L; i  + '       g   i     EL; i  + '       g   i     ELR; i  + '       g   i     EL!; i  + '       g   i     L; i  + '       g   i     R# ; i)	r  Nr0  r$  r1     invalidr6  zd                                                                                                    r   )r8   rb   rB   r  rz   r{   r
  rI  r=   r   r  r%  r  r  )r   rG   r:  s   &  r   testBadHciAddrBluetoothTest.testBadHciAddr  s   ]]6..ASASTTXY||&&'IJJ&&w//FF6,,3356 0&&w//FFF--/0 0&&w//FF6,,t34 0&&
G'<==FF6,,w67 >&&w//FF8$ 0&&w//FF9% 0&&w//FF:& 0/ &&w//FF2J 0&&w//FFC!7!7A>? 0&&w//FF6,,- 0&&w//FF6,,3356 01 UT/////////===//////// 0//////////1 UTTs  AQ.M4	=%Q"!N	%Q('N	+Q:'N0	!%QO	%Q=O	%Q4O,	)Q/O?	%Q&$P	
%Q/ P'	%Q4.P;	"Q4N?	QN	QN-'	Q0O;	QO	QO)#	Q,O<7Q?P
	QP$	Q'P82	Q;QQQ	r  z,Bluetooth SCO sockets required for this testc                   \         P                   ! \         P                  \         P                  \         P                  4      ;_uu_ 4       pVP	                  \         P
                  4       VP                  4       pV P                  V\         P
                  4       R R R 4       \         P                   ! \         P                  \         P                  \         P                  4      ;_uu_ 4       pVP	                  \         P
                  P                  4       4       VP                  4       pV P                  V\         P
                  4       R R R 4       R #   + '       g   i     L; i  + '       g   i     R # ; ir   )	r8   rb   rT   r  r   r  r2  rX  r%  )r   rG   rm  s   &  r   testBindScoSocketBluetoothTest.testBindScoSocket2  s    ]]6..0E0EvGYGYZZ^_FF6$$%==?DT6#4#45 [
 ]]6..0E0EvGYGYZZ^_FF6$$++-.==?DT6#4#45 [Z [Z
 [ZZs   AE-AE(E%	(E9	c           	        \         P                   ! \         P                  \         P                  \         P                  4      ;_uu_ 4       pV P	                  \
        4      ;_uu_ 4        VP                  \         P                  34       R R R 4       V P	                  \
        4      ;_uu_ 4        VP                  \         P                  P                  4       34       R R R 4       V P	                  \        4      ;_uu_ 4        VP                  \         P                  R,           4       R R R 4       V P	                  \        4      ;_uu_ 4        VP                  \         P                  P                  4       R,           4       R R R 4       V P	                  \        4      ;_uu_ 4        VP                  R4       R R R 4       V P	                  \
        4      ;_uu_ 4        VP                  R4       R R R 4       V P	                  \
        4      ;_uu_ 4        VP                  R4       R R R 4       R R R 4       R #   + '       g   i     EL; i  + '       g   i     ELz; i  + '       g   i     ELB; i  + '       g   i     L; i  + '       g   i     L; i  + '       g   i     L; i  + '       g   i     L; i  + '       g   i     R # ; i)Nr0  r  r$  r1  r>  )r8   rb   rT   r  rI  r=   r   r  r%  r  r  r6  s   & r   testBadScoAddrBluetoothTest.testBadScoAddr>  s   ]]6..0E0EvGYGYZZ^_""7++))+, ,""7++))00245 ,"":..v((4/0 /"":..v((//1E9: /""#566x  7""7++y! ,""7++z" , [Z++++++.....66++++ [ZZs   K)!H;	
%K//I	%K'I#	*%K5I7	%K)J
	;%K J	2%KJ0	)K;I	KI 	K#I4.	K7JK
JKJ-(K0K ;KK	r   N)r   r   r   r   r
  r#   r  rz   r{   r  r  r  r  HAVE_SOCKET_BLUETOOTH_L2CAPr  r  r!  r&  r-  r2  r7   r8   r;  r?  rB  rE  r   r   r   s   @r   r  r  
  s     __S\\W,.VW X __S\\W,.TU V __S\\W,.TU V 46fgV hV 46fgR hR 46fg= h= 46fg+ h+*&-  79gh*7 i*7X 79gh7 i78 79gh	6 i	6 79gh# i#r   r  z'Hyper-V sockets required for this test.c                   J   a  ] tR tRt o R tR tR tR tR tR t	R t
R	tV tR
# )BasicHyperVTestiQ  c                F   \         P                   \         P                   \         P                   \         P                   \         P
                   \         P                   \         P                   \         P                   \         P                   \         P                   R # r   )r8   HVSOCKET_CONNECT_TIMEOUTHVSOCKET_CONNECT_TIMEOUT_MAXHVSOCKET_CONNECTED_SUSPENDHVSOCKET_ADDRESS_FLAG_PASSTHRUHV_GUID_ZEROHV_GUID_WILDCARDHV_GUID_BROADCASTHV_GUID_CHILDRENHV_GUID_LOOPBACKHV_GUID_PARENTr   s   &r   testHyperVConstants#BasicHyperVTest.testHyperVConstantsU  s\    ''++))--  r   c                    R pV P                  \        V4      ;_uu_ 4        \        P                  ! \        P                  \        P                  4       RRR4       R#   + '       g   i     R# ; i)z\[WinError 10041\]N)r%  r=   r8   rj   rc   )r   r=  s   & r   -testCreateHyperVSocketWithUnknownProtoFailure=BasicHyperVTest.testCreateHyperVSocketWithUnknownProtoFailurea  sC    (##GX66MM&**F,>,>? 7666s   4AA0	c           	        R p\         P                   ! \         P                  \         P                  \         P                  4      ;_uu_ 4       pV P	                  \
        \        P                  ! V4      4      ;_uu_ 4        VP                  \         P                  4       RRR4       RRR4       R#   + '       g   i     L; i  + '       g   i     R# ; i)z3connect(): AF_HYPERV address must be tuple, not strN
r8   rj   rc   rk   r%  r   reescaperP  rO  r   r=  rG   s   &  r   )testCreateHyperVSocketAddrNotTupleFailure9BasicHyperVTest.testCreateHyperVSocketAddrNotTupleFailuref  s    H]]6++V-?-?AWAWXX\]''	299X3FGG		&--. H YXGG YXXs$   3C  B2	 C2C=CC	c           	        R p\         P                   ! \         P                  \         P                  \         P                  4      ;_uu_ 4       pV P	                  \
        \        P                  ! V4      4      ;_uu_ 4        VP                  \         P                  34       RRR4       RRR4       R#   + '       g   i     L; i  + '       g   i     R# ; i)9AF_HYPERV address must be a str tuple (vm_id, service_id)Nr[  r^  s   &  r   0testCreateHyperVSocketAddrNotTupleOf2StrsFailure@BasicHyperVTest.testCreateHyperVSocketAddrNotTupleOf2StrsFailurel  s    N]]6++V-?-?AWAWXX\]''	299X3FGG		6..01 H YXGG YXXs$   3C !B3	!C3C>CC	c           	        R p\         P                   ! \         P                  \         P                  \         P                  4      ;_uu_ 4       pV P	                  \
        \        P                  ! V4      4      ;_uu_ 4        VP                  R4       RRR4       RRR4       R#   + '       g   i     L; i  + '       g   i     R# ; i)rb  N)r   r  )	r8   rj   rc   rk   r%  r   r\  r]  rP  r^  s   &  r   /testCreateHyperVSocketAddrNotTupleOfStrsFailure?BasicHyperVTest.testCreateHyperVSocketAddrNotTupleOfStrsFailurer  sz    N]]6++V-?-?AWAWXX\]''	299X3FGG		&! H YXGG YXXs$   3B7 B$	B7$B4/B77C	c           	        R p\         P                   ! \         P                  \         P                  \         P                  4      ;_uu_ 4       pV P	                  \
        \        P                  ! V4      4      ;_uu_ 4        VP                  R\         P                  34       RRR4       RRR4       R#   + '       g   i     L; i  + '       g   i     R# ; i)z=connect(): AF_HYPERV address vm_id is not a valid UUID string00N
r8   rj   rc   rk   r%  r  r\  r]  rP  rO  r^  s   &  r   1testCreateHyperVSocketAddrVmIdNotValidUUIDFailureABasicHyperVTest.testCreateHyperVSocketAddrVmIdNotValidUUIDFailurex  s    R]]6++V-?-?AWAWXX\]''
BIIh4GHH		4!4!456 I YXHH YXX$   3C "B4	"C4C?CC	c           	        R p\         P                   ! \         P                  \         P                  \         P                  4      ;_uu_ 4       pV P	                  \
        \        P                  ! V4      4      ;_uu_ 4        VP                  \         P                  R34       RRR4       RRR4       R#   + '       g   i     L; i  + '       g   i     R# ; i)zBconnect(): AF_HYPERV address service_id is not a valid UUID stringri  Nrj  r^  s   &  r   6testCreateHyperVSocketAddrServiceIdNotValidUUIDFailureFBasicHyperVTest.testCreateHyperVSocketAddrServiceIdNotValidUUIDFailure~  s    W]]6++V-?-?AWAWXX\]''
BIIh4GHH		6..56 I YXHH YXXrm  r   N)r   r   r   r   rU  rX  r_  rc  rf  rk  ro  r   r   r   s   @r   rI  rI  Q  s.     
@
/2"77 7r   rI  c                   D  a  ] tR tRt o RR ltR tR tR tR tR t	R t
R	 tR
 tR tR tR tR tR tR tR tR tR t]P.                  ]P2                  ! ]RJ R4      R 4       4       t]P.                  ]P2                  ! ]RJ R4      R 4       4       tR tR tRtV t R# )BasicTCPTesti  c                2    \         P                  WR 7       R# r  rf  r   r  s   &&r   r   BasicTCPTest.__init__      $$T$Ar   c                h    V P                   P                  R 4      pV P                  V\        4       R# rS  )rk  rU  rX  rY  rL  s   & r   testRecvBasicTCPTest.testRecv  s&    mm  &c"r   c                D    V P                   P                  \        4       R # r   rr  r`  rY  r   s   &r   	_testRecvBasicTCPTest._testRecv      C r   c                    V P                   P                  \        \        4      ^,
          4      pV P                   P                  R4      pW,           pV P	                  V\        4       R#    rT  N)rk  rU  r  rY  rX  )r   seg1seg2rZ  s   &   r   testOverFlowRecvBasicTCPTest.testOverFlowRecv  sI    }}!!#c(Q,/}}!!$'kc"r   c                D    V P                   P                  \        4       R # r   r{  r   s   &r   _testOverFlowRecvBasicTCPTest._testOverFlowRecv  r~  r   c                l    V P                   P                  R 4      w  rV P                  V\        4       R# rS  )rk  rv  rX  rY  r   rZ  rm  s   &  r   testRecvFromBasicTCPTest.testRecvFrom  s(    MM**40	c"r   c                D    V P                   P                  \        4       R # r   r{  r   s   &r   _testRecvFromBasicTCPTest._testRecvFrom  r~  r   c                    V P                   P                  \        \        4      ^,
          4      w  rV P                   P                  R4      w  r2W,           pV P	                  V\        4       R# r  )rk  rv  r  rY  rX  )r   r  rm  r  rZ  s   &    r   testOverFlowRecvFrom!BasicTCPTest.testOverFlowRecvFrom  sM    ]]++CHQJ7
]]++D1
kc"r   c                D    V P                   P                  \        4       R # r   r{  r   s   &r   _testOverFlowRecvFrom"BasicTCPTest._testOverFlowRecvFrom  r~  r   c                    R p V P                   P                  R4      pV'       g   M
W,          pK/  V P                  VR4       R# )r   rT  N   ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff)rk  rU  rX  )r   rZ  reads   &  r   testSendAllBasicTCPTest.testSendAll  s;    ==%%d+DKCk*r   c                @    RpV P                   P                  V4       R# )   fNr  )rr  r  )r   	big_chunks   & r   _testSendAllBasicTCPTest._testSendAll  s    	y)r   c                f   V P                   P                  4       p\        P                  ! V\        P                  \        P
                  4      pV P                  VP                  4       V P                  V\        P                  4       VP                  R 4      pV P                  V\        4       R# rS  )rk  r4  r8   fromfdr   rc   r   rD   r+  rU  rX  rY  )r   r@  r  rZ  s   &   r   
testFromFdBasicTCPTest.testFromFd  sq    ]]!!#}}R1C1CD

#dFMM2iioc"r   c                D    V P                   P                  \        4       R # r   r{  r   s   &r   _testFromFdBasicTCPTest._testFromFd  r~  r   c                    V P                   P                  4       pV P                  VP                  4       VP	                  R 4      pV P                  V\        4       R# rS  )rk  dupr   rD   rU  rX  rY  )r   r  rZ  s   &  r   testDupBasicTCPTest.testDup  sA    }}  "

#iioc"r   c                D    V P                   P                  \        4       R # r   r{  r   s   &r   _testDupBasicTCPTest._testDup  r~  r   c                    V P                   P                  R 4      pV P                  V\        4       V P                  P                  4        R# rS  )rk  rU  rX  rY  r   r   rL  s   & r   check_shutdownBasicTCPTest.check_shutdown  s6    mm  &c" 			r   c                &    V P                  4        R # r   r  r   s   &r   testShutdownBasicTCPTest.testShutdown  s    r   c                z    V P                   P                  \        4       V P                   P                  ^4       R# r  )rr  r`  rY  ry  r   s   &r   _testShutdownBasicTCPTest._testShutdown  s&    C "r   Nr  c                &    V P                  4        R # r   r  r   s   &r   testShutdown_overflow"BasicTCPTest.testShutdown_overflow  s     	r   c                   ^ RI pV P                  P                  \        4       V P	                  \
        V P                  P                  VP                  ^,           4       V P	                  \
        V P                  P                  ^VP                  ^,           ,           4       V P                  P                  ^4       R# r0  )	r  rr  r`  rY  rI  r  ry  r  UINT_MAXr   r  s   & r   _testShutdown_overflow#BasicTCPTest._testShutdown_overflow  s     	C -)@)@#++a/	1-)@)@y11A56	8"r   c                R   V P                   P                  4       pV P                   P                  4       pV P                  W!4       V P	                  V P                   P
                  4       V P                  \        V P                   P                  R 4       V P                   P                  4        \        P                  ! \        P                  \        P                  VR7      pV P                  VP                  4       VP                  R 4      pV P                  V\        4       R# )rT  rl  N)rk  r4  r:  rX  r!  _closedrI  r=   rU  rD   r8   r   rc   r   rY  )r   r4  r   r  rZ  s   &    r   
testDetachBasicTCPTest.testDetach  s    %%'MM  "#--.'4==#5#5t< }}V^^V-?-?J

#iioc"r   c                D    V P                   P                  \        4       R # r   r{  r   s   &r   _testDetachBasicTCPTest._testDetach  r~  r   r   r  )!r   r   r   r   r   rx  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   s   @r   rr  rr    s     B#
!#!#
!#!+*#!#!# __Y$&(<= >  __Y$&(<=# > ## ! !r   rr  c                   N   a  ] tR tRt o RR ltR tR tR tR tR t	R t
R	tV tR
# )BasicUDPTesti  c                2    \         P                  WR 7       R# r  )r  r   r  s   &&r   r   BasicUDPTest.__init__	  ri  r   c                    V P                   P                  \        \        4      4      pV P	                  V\        4       R # r   r   rU  r  rY  rX  rL  s   & r   testSendtoAndRecvBasicUDPTest.testSendtoAndRecv  (    iinnSX&c"r   c                h    V P                   P                  \        ^ \        V P                  34       R# r0  r	  rS  rY  r1  r   r   s   &r   _testSendtoAndRecvBasicUDPTest._testSendtoAndRecv      Qtyy 12r   c                    V P                   P                  \        \        4      4      w  rV P	                  V\        4       R # r   r   rv  r  rY  rX  r  s   &  r   r  BasicUDPTest.testRecvFrom  ,    II&&s3x0	c"r   c                h    V P                   P                  \        ^ \        V P                  34       R# r0  r  r   s   &r   r  BasicUDPTest._testRecvFrom  r  r   c                \    V P                  \        V P                  P                  R4       R# r   Nr  rI  r  r   rv  r   s   &r   testRecvFromNegative!BasicUDPTest.testRecvFromNegative      *dii&8&8"=r   c                h    V P                   P                  \        ^ \        V P                  34       R# r0  r  r   s   &r   _testRecvFromNegative"BasicUDPTest._testRecvFromNegative   r  r   r   Nr  r   r   r   r   r   r  r  r  r  r  r  r   r   r   s   @r   r  r    s.     D#
3#
3>3 3r   r  c                   N   a  ] tR tRt o RR ltR tR tR tR tR t	R t
R	tV tR
# )BasicUDPLITETesti$  c                2    \         P                  WR 7       R# r  )r  r   r  s   &&r   r   BasicUDPLITETest.__init__(  s    !**4*Gr   c                    V P                   P                  \        \        4      4      pV P	                  V\        4       R # r   r  rL  s   & r   r  "BasicUDPLITETest.testSendtoAndRecv+  r  r   c                h    V P                   P                  \        ^ \        V P                  34       R# r0  r  r   s   &r   r  #BasicUDPLITETest._testSendtoAndRecv0  r  r   c                    V P                   P                  \        \        4      4      w  rV P	                  V\        4       R # r   r  r  s   &  r   r  BasicUDPLITETest.testRecvFrom3  r  r   c                h    V P                   P                  \        ^ \        V P                  34       R# r0  r  r   s   &r   r  BasicUDPLITETest._testRecvFrom8  r  r   c                \    V P                  \        V P                  P                  R4       R# r  r  r   s   &r   r  %BasicUDPLITETest.testRecvFromNegative;  r  r   c                h    V P                   P                  \        ^ \        V P                  34       R# r0  r  r   s   &r   r  &BasicUDPLITETest._testRecvFromNegative?  r  r   r   Nr  r  r   s   @r   r  r  $  s.     H#
3#
3>3 3r   r  c                      a a ] tR tRt o]P
                  tV 3R ltR tR
t	R t
R tR tR t^ tR F  t]]! ]]^ 4      ,          tK  	  ^ t^ t^ tRR ltR	tVtV ;t# )SendrecvmsgBasei]  c                X   < \         P                  ! 4       V n        \        SV `  4        R # r   )r   r   
misc_eventr  r   r  s   &r   r   SendrecvmsgBase.setUpd  s    #//+r   c                8    V P                   P                  V4      # r   )cli_sockr`  rL  s   &&r   sendToServerSendrecvmsgBase.sendToServerh  s    }}!!#&&r   c                n    V P                   P                  ! WP                  \        V4      R  ,           !  # r   )r  r  sendmsg_to_server_defaultsr  r   r%   s   &*r   sendmsgToServerSendrecvmsgBase.sendmsgToServerp  s4    
 }}$$44SYZ@@C 	Cr   c                P    VP                   ! V.VO5!  pV P                  V4       V# r   )r  registerRecvmsgResult)r   r  r   r%   results   &&&* r   	doRecvmsgSendrecvmsgBase.doRecvmsgx  s*     g--""6*r   c                    R # r   r   r   r  s   &&r   r  %SendrecvmsgBase.registerRecvmsgResult  s     	r   c                (    V P                  W4       R # r   rX  r   addr1r,  s   &&&r   checkRecvmsgAddress#SendrecvmsgBase.checkRecvmsgAddress  s     	&r   c                   V P                   pV P                  pV'       d&   W`P                  ,          pWpP                  ,          pM(Ve%   W`P                  ,          pWpP                  ,          pWd( ,          pWs( ,          pW6,          pWG,          pW4,          V( ,          pV'       d   \	        RP                  V4      4      hW4,          V( ,          p	V P                  W,          W9,          4       R # )Nz6contradictory set, unset requirements for flags {0:#x})msg_flags_common_setmsg_flags_common_unsetmsg_flags_eor_indicatormsg_flags_non_eor_indicator	Exceptionr  rX  )
r   r  eorcheckset
checkunsetignore
defaultsetdefaultunsetinbothr  s
   &&&&&&    r   
checkFlagsSendrecvmsgBase.checkFlags  s    8 ..
22666J<<<L_:::J888L 	k!
	! 	"
&&0 %%+VF^5 5 %&0x7r   )r  r   )
MSG_CTRUNCMSG_OOB)Nr   r   r   )r   r   r   r   r   rD  fail_timeoutr   r  r  r  r  r  r  r  r
  r   r8   r  r  r  r  r   r   r  r  s   @@r   r  r  ]  s     
 ++L' "$C' )'&$":: *    #$48 48r   r  c                   &   a  ] tR tRt o R tRtV tR# )RecvmsgIntoMixini  c                   \        V4      pVP                  ! V..VO5!  pV P                  V4       V P                  V^ ,          ^ 4       V P	                  V^ ,          V4       \        VRV^ ,           4      3VR,          ,           # )r   N:r   NN)rL  recvmsg_intor  assertGreaterEqualassertLessEqualr  )r   r  r   r%   bufr  s   &&&*  r   r  RecvmsgIntoMixin.doRecvmsg  sz     ""C5040""6*q	1-VAY0c*6!9o&(6":55r   r   N)r   r   r   r   r  r   r   r   s   @r   r$  r$    s     6 6r   r$  c                   <   a a ] tR tRt o]V 3R l4       tRtVtV ;t# )SendrecvmsgDgramFlagsBasei  c                B   < \         SV `  \        P                  ,          # r   )r  r  r8   	MSG_TRUNCr  s   &r   r  5SendrecvmsgDgramFlagsBase.msg_flags_non_eor_indicator  s    w2V5E5EEEr   r   )	r   r   r   r   propertyr  r   r   r  r  s   @@r   r,  r,    s!      F F Fr   r,  c                   <   a a ] tR tRt o]V 3R l4       tRtVtV ;t# )SendrecvmsgSCTPFlagsBasei  c                B   < \         SV `  \        P                  ,          # r   )r  r  r8   MSG_EORr  s   &r   r  0SendrecvmsgSCTPFlagsBase.msg_flags_eor_indicator  s    w.??r   r   )	r   r   r   r   r0  r  r   r   r  r  s   @@r   r2  r2    s!      @ @ @r   r2  c                   V   a  ] tR tRt o ]R 4       t]R 4       t]R 4       tR tRt	V t
R# )SendrecvmsgConnectionlessBasei  c                    V P                   # r   )r   r   s   &r   	serv_sock'SendrecvmsgConnectionlessBase.serv_sock  s    yyr   c                    V P                   # r   r  r   s   &r   r  &SendrecvmsgConnectionlessBase.cli_sock  s    xxr   c                "    . . ^ V P                   3# r   )r  r   s   &r   r  8SendrecvmsgConnectionlessBase.sendmsg_to_server_defaults  s    B4>>**r   c                L    V P                   P                  WP                  4      # r   )r  rS  r  rL  s   &&r   r  *SendrecvmsgConnectionlessBase.sendToServer  s    }}##C88r   r   N)r   r   r   r   r0  r9  r  r  r  r   r   r   s   @r   r7  r7    sK     
     + +9 9r   r7  c                   F   a  ] tR tRt o ]R 4       t]R 4       tR tRtV t	R# )SendrecvmsgConnectedBasei  c                    V P                   # r   )rk  r   s   &r   r9  "SendrecvmsgConnectedBase.serv_sock  s    }}r   c                    V P                   # r   )rr  r   s   &r   r  !SendrecvmsgConnectedBase.cli_sock  s    ~~r   c                    R # r   r   r  s   &&&r   r  ,SendrecvmsgConnectedBase.checkRecvmsgAddress       	r   r   N)
r   r   r   r   r0  r9  r  r  r   r   r   s   @r   rC  rC    s7          r   rC  c                   2   a a ] tR tRt oV 3R ltRtVtV ;t# )SendrecvmsgServerTimeoutBasei  c                n   < \         SV `  4        V P                  P                  V P                  4       R # r   )r  r   r9  rC  r"  r  s   &r   r   "SendrecvmsgServerTimeoutBase.setUp  s$    !!$"3"34r   r   )r   r   r   r   r   r   r   r  r  s   @@r   rL  rL    s     5 5r   rL  c                      a  ] tR tRt o R tR tR tR tR tR t	R t
R	 tR
 tR tR tR tR tR t]! ]R4      R 4       t]P*                  R 4       tR tR tR tR tRtV tR# )SendmsgTestsi!  c                ~    V P                  V P                  P                  \        \        4      4      \        4       R # r   rX  r9  rU  r  rY  r   s   &r   testSendmsgSendmsgTests.testSendmsg%  %    ,,SX6<r   c                l    V P                  V P                  \        .4      \        \        4      4       R # r   rX  r  rY  r  r   s   &r   _testSendmsgSendmsgTests._testSendmsg)  s#    --se4c#h?r   c                ~    V P                  V P                  P                  \        \        4      4      \        4       R # r   rR  r   s   &r   testSendmsgDataGenerator%SendmsgTests.testSendmsgDataGenerator,  rU  r   c                z    V P                  V P                  R  \        3 4       4      \        \        4      4       R# )c              3   $   "   T F  qx  K  	  R # 5ir   r   r  s   & r   r  9SendmsgTests._testSendmsgDataGenerator.<locals>.<genexpr>1  s     .@%Qq%r  NrW  r   s   &r   _testSendmsgDataGenerator&SendmsgTests._testSendmsgDataGenerator0  s,    --.@3%.@AS	#r   c                ~    V P                  V P                  P                  \        \        4      4      \        4       R # r   rR  r   s   &r   testSendmsgAncillaryGenerator*SendmsgTests.testSendmsgAncillaryGenerator4  rU  r   c                |    V P                  V P                  \        .R  R 4       4      \        \        4      4       R# )c              3   $   "   T F  qx  K  	  R # 5ir   r   r  s   & r   r  >SendmsgTests._testSendmsgAncillaryGenerator.<locals>.<genexpr>9  s     _Aar  Nr   rW  r   s   &r   _testSendmsgAncillaryGenerator+SendmsgTests._testSendmsgAncillaryGenerator8  s,    --se__ES	#r   c                ~    V P                  V P                  P                  \        \        4      4      \        4       R # r   rR  r   s   &r   testSendmsgArraySendmsgTests.testSendmsgArray<  rU  r   c                    V P                  V P                  \        P                  ! R \        4      .4      \	        \        4      4       R# BN)rX  r  r   rY  r  r   s   &r   _testSendmsgArraySendmsgTests._testSendmsgArray@  s2    --u{{3/D.EFS	#r   c                ~    V P                  V P                  P                  \        \        4      4      \        4       R # r   rR  r   s   &r   testSendmsgGatherSendmsgTests.testSendmsgGatherD  rU  r   c                    V P                  V P                  \        R ,          \        R,          .4      \        \        4      4       R# :Nr  N:r  NNNrW  r   s   &r   _testSendmsgGatherSendmsgTests._testSendmsgGatherH  s.    --s2wB.@A3s8Lr   c                \    V P                  V P                  P                  R 4      R4       R# r     doneNrX  r9  rU  r   s   &r   testSendmsgBadArgsSendmsgTests.testSendmsgBadArgsK  !    ,,T2G<r   c           	        V P                  \        V P                  P                  4       V P                  \        V P                  R 4       V P                  \        V P                  \        4       4       V P                  \        V P                  \        4       .4       V P                  \        V P                  \        \        4       .4       V P                  \        V P                  \        .\        4       4       V P                  \        V P                  \        .. \        4       4       V P                  \        V P                  \        .. ^ \        4       4       V P                  R4       R# )s   not in an iterabler{  N)rI  r   r  r  r  objectrY  r  r   s   &r   _testSendmsgBadArgs SendmsgTests._testSendmsgBadArgsO  s   )T]]%:%:;)T%9%9/	1)T%9%9 (	$)T%9%9!8*	&)T%9%9/	+)T%9%9%	+)T%9%9%VX	/)T%9%9%Q	2'"r   c                \    V P                  V P                  P                  R 4      R4       R# rz  r|  r   s   &r   testSendmsgBadCmsgSendmsgTests.testSendmsgBadCmsga  r  r   c           	     Z   V P                  \        V P                  \        .\	        4       .4       V P                  \        V P                  \        .\	        4       ^ R3.4       V P                  \        V P                  \        .^ \	        4       R3.4       V P                  \        V P                  \        .^ ^ \	        4       3.4       V P                  \        V P                  \        .R.4       V P                  \        V P                  \        .R.4       V P                  R4       R# )r      datar{  N)r   r   )r   r   r  r  rI  r   r  rY  r  r  r   s   &r   _testSendmsgBadCmsg SendmsgTests._testSendmsgBadCmsge  s    )T%9%9%&(	-)T%9%9%68Q"8!9	;)T%9%9%1fh"8!9	;)T%9%9%1a"2!3	5)T%9%9%&	+)T%9%9%"5!6	8'"r   
CMSG_SPACEc                \    V P                  V P                  P                  R 4      R4       R# rz  r|  r   s   &r   testSendmsgBadMultiCmsg$SendmsgTests.testSendmsgBadMultiCmsgt  s#     	,,T2G<r   c                    V P                  \        V P                  \        .. RO4       V P                  \        V P                  \        .R\	        4       .4       V P                  R4       R# )r   r{  Nr   r   r   r  r   s   &r   _testSendmsgBadMultiCmsg%SendmsgTests._testSendmsgBadMultiCmsgz  sU    )T%9%9%	.)T%9%9%+vx!8	:'"r   c                \    V P                  V P                  P                  R 4      R4       R# rz  r|  r   s   &r   testSendmsgExcessCmsgReject(SendmsgTests.testSendmsgExcessCmsgReject  s#     	,,T2G<r   c                B   \        \        R 4      '       ge   V P                  \        4      ;_uu_ 4       pV P	                  \
        .RR.4       RRR4       V P                  XP                  P                  4       V P                  R4       R#   + '       g   i     LH; i)r  Nr{  r  )
r7   r8   rI  r=   r  rY  assertIsNonerT  r  r  r   rV  s   & r   _testSendmsgExcessCmsgReject)SendmsgTests._testSendmsgExcessCmsgReject  sm    v|,,""7++r$$cU[+,FG ,bll001'" ,+s   BB	c                    R # r   r   r   s   &r   testSendmsgAfterClose"SendmsgTests.testSendmsgAfterClose  s    r   c                    V P                   P                  4        V P                  \        V P                  \
        .4       R # r   )r  rD   rI  r=   r  rY  r   s   &r   _testSendmsgAfterClose#SendmsgTests._testSendmsgAfterClose  s,    '4#7#7#?r   r   N)r   r   r   r   rS  rX  r[  r`  rc  rh  rk  rp  rs  rw  r}  r  r  r  r  r8   r  r   r  r  r  r  r  r   r   r   s   @r   rP  rP  !  s     =@=#=#=#=M=#$=# &,'= (=
 ((# )#=
#@ @r   rP  c                      a  ] tR tRt o R tR tR tR t]! ]	P                  R9  R4      R 4       t]P                  R 4       tR	tV tR
# )SendmsgStreamTestsi  c                ~    V P                  V P                  P                  \        \        4      4      \        4       R # r   rR  r   s   &r   testSendmsgExplicitNoneAddr.SendmsgStreamTests.testSendmsgExplicitNoneAddr  rU  r   c                r    V P                  V P                  \        .. ^ R4      \        \        4      4       R# r0  rW  r   s   &r   _testSendmsgExplicitNoneAddr/SendmsgStreamTests._testSendmsgExplicitNoneAddr  s)    --seRDA3s8Lr   c                    V P                  V P                  P                  R 4      R4       V P                  V P                  P                  V P                  R7      4       R# r  rp   N   aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaarX  r9  rU  r!  r  r   r"  r   s   &r   testSendmsgTimeout%SendmsgStreamTests.testSendmsgTimeout  sE    ,,S18<,,T5F5F,GHr   c                d    V P                   P                  R 4         V P                  R.4       K    \         d     M7\
         d+   pTP                  \        P                  8w  d   h  Rp?MRp?ii ; iT P                  P                  4        R#   T P                  P                  4        i ; i)Q?Nr  )
r  rC  r  rB  r  r=   r  ENOMEMr  r   r   r[  s   & r   _testSendmsgTimeout&SendmsgStreamTests._testSendmsgTimeout  s    	"MM$$T*5(((4  99, - OO!DOO!s=   B 3 A4B  A4	A4
 A/*B /A44B B/z<MSG_DONTWAIT not known to work on this platform when sendingc                    V P                  V P                  P                  R 4      R4       V P                  V P                  P                  V P                  R7      4       R# r  r  r   s   &r   testSendmsgDontWait&SendmsgStreamTests.testSendmsgDontWait  sG    
 	,,S18<,,T5F5F,GHr   c                    V P                  \        4      ;_uu_ 4       p V P                  R.. \        P                  4       K%    + '       g   i     M; iT P                  XP                  P                  \        P                  \        P                  \        P                  34       T P                  P                  4        R#   T P                  P                  4        i ; i)TNr  )rI  r=   r  r8   MSG_DONTWAITr3  rT  r  EAGAINEWOULDBLOCKr  r  r   r  s   & r   _testSendmsgDontWait'SendmsgStreamTests._testSendmsgDontWait  s    		"""7++r(((R9L9LM ,+
 MM",,,, <<):):ELLIK OO!DOO!s   C &AA	AC C#r   N>   r  r  )r   r   r   r   r  r  r  r  r  rz   r{   r  r   r  r   r   r   s   @r   r  r    sa     =MI
". cll*>> !I!I
 $$
" %
"r   r  c                   ,   a  ] tR tRt o R tR tRtV tR# )SendmsgConnectionlessTestsi  c                    R # r   r   r   s   &r   testSendmsgNoDestAddr0SendmsgConnectionlessTests.testSendmsgNoDestAddr  rJ  r   c                    V P                  \        V P                  P                  \        .4       V P                  \        V P                  P                  \        .. ^ R4       R# r0  )rI  r=   r  r  rY  r   s   &r   _testSendmsgNoDestAddr1SendmsgConnectionlessTests._testSendmsgNoDestAddr  sJ    '4==#8#8%	!'4==#8#8%Q	.r   r   N)r   r   r   r   r  r  r   r   r   s   @r   r  r    s     

. .r   r  c                     a  ] tR tRt o R tR tR tR tR tR t	R t
R	 tR
 tR tR tR tR tR tR tR t]! ]R4      R 4       t]P.                  R 4       t]! ]P*                  R4      R 4       t]P.                  R 4       tRtV tR# )RecvmsgGenericTestsi  c                
   V P                  V P                  \        \        4      4      w  rr4V P	                  V\        4       V P                  W@P                  4       V P	                  V. 4       V P                  VR R7       R# Tr  Nr  r9  r  rY  rX  r  r3  r  r   rZ  r  r  rm  s   &    r   testRecvmsgRecvmsgGenericTests.testRecvmsg  sa    $(NN4>>3s8$L!ec"  }}5"%4(r   c                0    V P                  \        4       R # r   r  rY  r   s   &r   _testRecvmsg RecvmsgGenericTests._testRecvmsg      #r   c                   V P                  V P                  \        \        4      ^ ^ 4      w  rr4V P	                  V\        4       V P                  W@P                  4       V P	                  V. 4       V P                  VRR7       R# )r   Tr  Nr  r  s   &    r   testRecvmsgExplicitDefaults/RecvmsgGenericTests.testRecvmsgExplicitDefaults  si    $(NN4>>36s8Q%C!ec"  }}5"%4(r   c                0    V P                  \        4       R # r   r  r   s   &r   _testRecvmsgExplicitDefaults0RecvmsgGenericTests._testRecvmsgExplicitDefaults  r  r   c                   V P                  V P                  \        \        4      ^*,           4      w  rr4V P	                  V\        4       V P                  W@P                  4       V P	                  V. 4       V P                  VRR7       R# )r  Tr  Nr  r  s   &    r   testRecvmsgShorter&RecvmsgGenericTests.testRecvmsgShorter  si    $(NN4>>36s8b=%B!ec"  }}5"%4(r   c                0    V P                  \        4       R # r   r  r   s   &r   _testRecvmsgShorter'RecvmsgGenericTests._testRecvmsgShorter
  r  r   c                   V P                  V P                  \        \        4      ^,
          4      w  rr4V P	                  V\        RR 4       V P                  W@P                  4       V P	                  V. 4       V P                  VRR7       R# )r  NFr  r  r  s   &    r   testRecvmsgTrunc$RecvmsgGenericTests.testRecvmsgTrunc  so    $(NN4>>36s8a<%A!ec#2h'  }}5"%5)r   c                0    V P                  \        4       R # r   r  r   s   &r   _testRecvmsgTrunc%RecvmsgGenericTests._testRecvmsgTrunc  r  r   c                   V P                  V P                  \        \        4      ^4      w  rr4V P	                  V\        4       V P                  W@P                  4       V P	                  V. 4       V P                  VRR7       R# )r   Tr  Nr  r  s   &    r   testRecvmsgShortAncillaryBuf0RecvmsgGenericTests.testRecvmsgShortAncillaryBuf  sg    $(NN4>>36s8Q%@!ec"  }}5"%4(r   c                0    V P                  \        4       R # r   r  r   s   &r   _testRecvmsgShortAncillaryBuf1RecvmsgGenericTests._testRecvmsgShortAncillaryBuf"  r  r   c                   V P                  V P                  \        \        4      R 4      w  rr4V P	                  V\        4       V P                  W@P                  4       V P	                  V. 4       V P                  VRR7       R# ) (  Tr  Nr  r  s   &    r   testRecvmsgLongAncillaryBuf/RecvmsgGenericTests.testRecvmsgLongAncillaryBuf%  sg    $(NN4>>36s8U%D!ec"  }}5"%4(r   c                0    V P                  \        4       R # r   r  r   s   &r   _testRecvmsgLongAncillaryBuf0RecvmsgGenericTests._testRecvmsgLongAncillaryBuf.  r  r   c                    V P                   P                  4        V P                  \        V P                  V P                   R 4       R# rS  )r9  rD   rI  r=   r  r   s   &r   testRecvmsgAfterClose)RecvmsgGenericTests.testRecvmsgAfterClose1  s.    '4>>4>>4Hr   c                    R # r   r   r   s   &r   _testRecvmsgAfterClose*RecvmsgGenericTests._testRecvmsgAfterClose6  r  r   c                "    V P                   P                  R 4       V P                  \        V P                  V P                   \        \        4      4       V P                  P                  4        R#   T P                  P                  4        i ; i)r  N)	r9  rC  rI  r  r  r  rY  r  r   r   s   &r   testRecvmsgTimeout&RecvmsgGenericTests.testRecvmsgTimeout9  s`    	"NN%%d+l"nndnnc#hH OO!DOO!s   AA2 2Bc                p    V P                  V P                  P                  V P                  R 7      4       R# r  N)r!  r  r   r"  r   s   &r   _testRecvmsgTimeout'RecvmsgGenericTests._testRecvmsgTimeoutB  s&    ,,T5F5F,GHr   r  c           	        V P                  V P                  \        \        4      ^,
          ^ \        P
                  4      w  rr4V P                  V\        RR 4       V P                  W@P                  4       V P                  V. 4       V P                  VR\        \        R^ 4      R7       V P                  V P                  \        \        4      ^ \        P
                  4      w  rr4V P                  V\        4       V P                  W@P                  4       V P                  V. 4       V P                  VRR7       V P                  V P                  \        \        4      4      w  rr4V P                  V\        4       V P                  W@P                  4       V P                  V. 4       V P                  VRR7       R# )r  NFr.  r  r  Tr  r  )r  r9  r  rY  r8   r  rX  r  r3  r  r   r  s   &    r   testRecvmsgPeek#RecvmsgGenericTests.testRecvmsgPeekE  sa    %)NN4>>36s8a<39??%D!e 	c#2h'  }}5"%
 	5&v{A> 	 	@ %)NN4>>36s8Q39??%D!e 	c"  }}5"%4( %)NN4>>3s8$L!ec"  }}5"%4(r   c                0    V P                  \        4       R # r   r  r   s   &r   _testRecvmsgPeek$RecvmsgGenericTests._testRecvmsgPeekh  s    #r   r  c                T   V P                   P                  V P                  4       V P                  V P                   \	        \
        4      4      w  rr4V P                  V\
        4       V P                  W@P                  4       V P                  V. 4       V P                  VR R7       R# r  )
r9  rC  r"  r  r  rY  rX  r  r3  r  r  s   &    r   testRecvmsgFromSendmsg*RecvmsgGenericTests.testRecvmsgFromSendmsgl  s{     	!!$"3"34$(NN4>>3s8$L!ec"  }}5"%4(r   c                    V P                  V P                  \        R ,          \        R,          .4      \        \        4      4       R# rv  rW  r   s   &r   _testRecvmsgFromSendmsg+RecvmsgGenericTests._testRecvmsgFromSendmsgw  s.    --s2wB.@A3s8Lr   r   N)r   r   r   r   r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r8   r  r   r  r  r  r   r   r   s   @r   r  r    s     )))*))I
"I &*% ) & )D    ! &--+) ,) ''M (Mr   r  c                   8   a  ] tR tRt o R tR tR tR tRtV t	R# )RecvmsgGenericStreamTestsi|  c                    V P                  V P                  R 4      w  rr4V P                  VR4       V P                  W@P                  4       V P                  V. 4       V P                  VRR7       R# )rT  r   Nr  )r  r9  rX  r  r3  r  r  s   &    r   testRecvmsgEOF(RecvmsgGenericStreamTests.testRecvmsgEOF  s]    $(NN4>>4$H!ec"  }}5"%4(r   c                :    V P                   P                  4        R # r   )r  rD   r   s   &r   _testRecvmsgEOF)RecvmsgGenericStreamTests._testRecvmsgEOF  s    r   c                   V P                  V P                  \        \        4      ^,
          4      w  rr4V P	                  W@P
                  4       V P                  V. 4       V P                  VRR7       V P                  V P                  R4      w  rRr4V P	                  W@P
                  4       V P                  V. 4       V P                  VRR7       W,           pV P                  V\        4       R# )r  Fr  rT  TN)r  r9  r  rY  r  r3  rX  r  )r   r  r  r  rm  r  rZ  s   &      r   testRecvmsgOverflow-RecvmsgGenericStreamTests.testRecvmsgOverflow  s    %)^^DNN47HqL&B"u  }}5"%5)%)^^DNND%I"u  }}5"%4(kc"r   c                0    V P                  \        4       R # r   r  r   s   &r   _testRecvmsgOverflow.RecvmsgGenericStreamTests._testRecvmsgOverflow  r  r   r   N)
r   r   r   r   r  r  r  r  r   r   r   s   @r   r  r  |  s     )#  r   r  c                   ,   a  ] tR tRt o R tR tRtV tR# )RecvmsgTestsi  c                   V P                  \        V P                  P                  4       V P                  \        V P                  P                  R^ ^ 4       V P                  \        V P                  P                  \        \        4      R^ 4       V P                  \        V P                  P                  \        ^
4      .^ ^ 4       V P                  \        V P                  P                  \        4       ^ ^ 4       V P                  \        V P                  P                  \        \        4      \        4       ^ 4       V P                  \        V P                  P                  \        \        4      ^ \        4       4       V P                  P                  \        \        4      ^ ^ 4      w  rr4V P                  V\        4       V P                  W@P                  4       V P                  V. 4       V P                  VRR7       R# )r   Tr  Nr  )rI  r   r9  r  r  r  rY  rL  r  rX  r  r3  r  r  s   &    r   testRecvmsgBadArgsRecvmsgTests.testRecvmsgBadArgs  sk   )T^^%;%;<*dnn&<&<a	$*dnn&<&<c(B	+)T^^%;%;$R=/1a	1)T^^%;%; (Aq	*)T^^%;%;c(FHa	1)T^^%;%;c(Avx	1 %)NN$:$:3s8Q$J!ec"  }}5"%4(r   c                0    V P                  \        4       R # r   r  r   s   &r   _testRecvmsgBadArgs RecvmsgTests._testRecvmsgBadArgs  r  r   r   N)r   r   r   r   r!  r$  r   r   r   s   @r   r  r    s     ), r   r  c                   P   a  ] tR tRt o R tR tR tR tR tR t	R t
R	 tR
tV tR# )RecvmsgIntoTestsi  c                    \        \        \        4      4      pV P                  \        V P
                  P                  4       V P                  \        V P
                  P                  \        \        4      ^ ^ 4       V P                  \        V P
                  P                  V^ ^ 4       V P                  \        V P
                  P                  \        4       .^ ^ 4       V P                  \        V P
                  P                  R.^ ^ 4       V P                  \        V P
                  P                  V\        4       .^ ^ 4       V P                  \        V P
                  P                  V.R^ 4       V P                  \        V P
                  P                  V.\        4       ^ 4       V P                  \        V P
                  P                  V.^ \        4       4       V P
                  P                  V.^ ^ 4      w  r#rEV P                  V\        \        4      4       V P                  V\        \        4      4       V P                  WPP                  4       V P                  V. 4       V P                  VRR7       R# )r   s   I'm not writableTr  Nr  )rL  r  rY  rI  r   r9  r&  r  r  rX  r  r3  r  r   r)  nbytesr  r  rm  s   &     r   testRecvmsgIntoBadArgs'RecvmsgIntoTests.testRecvmsgIntoBadArgs  s   C!)T^^%@%@A)T^^%@%@c(Aq	*)T^^%@%@q!	%)T^^%@%@!8*a	,)T^^%@%@./A	7)T^^%@%@/1a	1*dnn&A&A%Q	()T^^%@%@%1	.)T^^%@%@%FH	. (,~~'B'BC5!Q'O$S*in-  }}5"%4(r   c                0    V P                  \        4       R # r   r  r   s   &r   _testRecvmsgIntoBadArgs(RecvmsgIntoTests._testRecvmsgIntoBadArgs  r  r   c                ~   \        \        \        4      4      pV P                  P	                  R  V3 4       4      w  r#rEV P                  V\        \        4      4       V P                  V\        \        4      4       V P                  WPP                  4       V P                  V. 4       V P                  VRR7       R# )c              3   $   "   T F  qx  K  	  R # 5ir   r   r  s   & r   r  <RecvmsgIntoTests.testRecvmsgIntoGenerator.<locals>.<genexpr>  s     1Qr  Tr  N)	rL  r  rY  r9  r&  rX  r  r3  r  r)  s   &     r   testRecvmsgIntoGenerator)RecvmsgIntoTests.testRecvmsgIntoGenerator  s    C!'+~~'B'B( $S*in-  }}5"%4(r   c                0    V P                  \        4       R # r   r  r   s   &r   _testRecvmsgIntoGenerator*RecvmsgIntoTests._testRecvmsgIntoGenerator  r  r   c                   \         P                   ! R ^ .\        \        4      ,          4      pV P                  P	                  V.4      w  r#rEV P                  V\        \        4      4       V P                  VP                  4       \        4       V P                  WPP                  4       V P                  V. 4       V P                  VRR7       R# )ro  Tr  N)
r   r  rY  r9  r&  rX  tobytesr  r3  r  r)  s   &     r   testRecvmsgIntoArray%RecvmsgIntoTests.testRecvmsgIntoArray  s    kk#sSX~.'+~~'B'BC5'I$S*,  }}5"%4(r   c                0    V P                  \        4       R # r   r  r   s   &r   _testRecvmsgIntoArray&RecvmsgIntoTests._testRecvmsgIntoArray  r  r   c                   \        R 4      p\        R4      p\        R4      pV P                  P                  V\        V4      R,          V.4      w  rErgV P	                  V\        R4      4       V P	                  V\        R4      4       V P	                  V\        R4      4       V P	                  V\        R4      4       V P                  WpP                  4       V P	                  V. 4       V P                  VRR	7       R
# )s   ----s
   0123456789s   --------------:r  	   N   Mary had a little lambs   Marys
   01 had a 9s   little lamb---Tr  N)	rL  r9  r&  
memoryviewrX  r  r  r3  r  )r   b1b2b3r*  r  r  rm  s   &       r   testRecvmsgIntoScatter'RecvmsgIntoTests.testRecvmsgIntoScatter  s    w}%()'+~~'B'BB$b)(+$%>!?@Yw/0Y}56Y'89:  }}5"%4(r   c                (    V P                  R 4       R# )rA  N)r  r   s   &r   _testRecvmsgIntoScatter(RecvmsgIntoTests._testRecvmsgIntoScatter  s    34r   r   N)r   r   r   r   r+  r.  r3  r6  r:  r=  rF  rI  r   r   r   s   @r   r'  r'    s2     )8	)))5 5r   r'  c                      a  ] tR tRt o  ^ RIt]! R]P                  4      t]	! ]
R4      R 4       t]	! ]
R4      R 4       tRtV tR#   ] d    Rt L/i ; i)	CmsgMacroTestsi  Nr  CMSG_LENc                *   V P                   \        P                  ! ^ 4      ,
          ^,           p\        \	        R4      4      \        \	        VR,
          V4      4      ,           pV P                  \        P                  ! ^ 4      \        P                  ! R4      P                  ^,          4       V Fa  p\        P                  ! V4      pV P                  V\        P                  ! ^ 4      ,
          V4       V P                  W@P                   4       Kc  	  V P                  \        \        P                  R4       V P                  \        \        P                  V4       V P                  \        \        P                  \        P                  4       R# )r     r   Nr  )socklen_t_limitr8   rM  listr  r  r   itemsizerX  r(  rI  r  rz   maxsize)r   toobigr>  nrets   &    r   testCMSG_LENCmsgMacroTests.testCMSG_LEN  s    %%(::Q>eCj!Dv|V)D$EE 	6??1-u{{3/?/H/H1/LMA//!$CS6??1#55q9  &:&:;	  	-"= 	-&A-#++Fr   r  c                   V P                   \        P                  ! ^4      ,
          ^,           p\        \	        R4      4      \        \	        VR,
          V4      4      ,           p\        P                  ! ^ 4      pV P                  V\        P                  ! R4      P                  ^,          4       V F  p\        P                  ! V4      pV P                  WS4       V P                  V\        P                  ! V4      4       V P                  WT\        P                  ! ^ 4      ,           4       V P                  WPP                   4       TpK  	  V P                  \        \        P                  R4       V P                  \        \        P                  V4       V P                  \        \        P                  \        P                  4       R# )r   rO  r   Nr  )rP  r8   r  rQ  r  r  r   rR  r'  rM  r(  rI  r  rz   rS  )r   rT  r>  lastrU  rV  s   &     r   testCMSG_SPACECmsgMacroTests.testCMSG_SPACE.  sA    %%(9(9!(<<q@eCj!Dv|V)D$EE  #4S!1!:!:Q!>?A##A&C##C.##C);<##CV__Q-?)?@  &:&:;D  	-):):B? 	-):):FC-):):CKKHr   r   )r   r   r   r   r  minr  rP  rB  r  r8   rW  r[  r   r   r   s   @r   rL  rL    so     = j)*;*;<&*%G &G( &,'I (I7  %$%s   A 	AArL  c                   r  a  ] tR tRt o R6tR tR tR tR tR t	R7R lt
R tR	 tR
 tR t]! ]R4      R 4       t]P$                  R 4       tR tR t]P.                  ! ]R4      ]P.                  ! ]R4      ]! ]R4      R 4       4       4       t]P$                  ]P.                  ! ]R4      ]P.                  ! ]R4      R 4       4       4       t]P.                  ! ]R4      ]P.                  ! ]R4      ]! ]R4      R 4       4       4       t]P$                  ]P.                  ! ]R4      ]P.                  ! ]R4      R 4       4       4       tR t]P.                  ! ]R4      R 4       tR t R t!R t"]! ]R4      R 4       t#]#P$                  R 4       t$R8R lt%]&! ]'PP                  R8H  R 4      R! 4       t)])P$                  R" 4       t*]&! ]'PP                  R8H  R 4      R# 4       t+]+P$                  R$ 4       t,]&! ]'PP                  R8H  R 4      R% 4       t-]-P$                  R& 4       t.]&! ]'PP                  R8H  R 4      R' 4       t/]/P$                  R( 4       t0]&! ]'PP                  R8H  R 4      R) 4       t1]1P$                  R* 4       t2R8R+ lt3]&! ]'PP                  R8H  R 4      R, 4       t4]4P$                  R- 4       t5]&! ]'PP                  R8H  R 4      R. 4       t6]6P$                  R/ 4       t7]&! ]'PP                  R8H  R 4      R0 4       t8]8P$                  R1 4       t9]&! ]'PP                  R8H  R 4      R2 4       t:]:P$                  R3 4       t;R4t<V t=R5# )9SCMRightsTestiG  c                Z   . p\        V4       F  p\        P                  ! 4       w  rEV P                  \        P
                  V4       V P                  \        P                  V4       \        P                  ! V\        V4      P                  4       4       VP                  V4       K  	  V# r   )r  rw  mkstempr   rO  r  rD   writer  r%  append)r   rU  fdsr   r@  r  s   &&    r   newFDsSCMRightsTest.newFDsO  su     qA'')HBOOBIIt,OOBHHb)HHRQ)JJrN  
r   c                    \        V4       Fi  w  r#\        P                  ! V^ \        P                  4       V P	                  \        P
                  ! VR4      \        V4      P                  4       4       Kk  	  R# )r   rT  N)	enumeraterO  lseekSEEK_SETrX  r  r  r%  )r   rd  rU  r@  s   &&  r   checkFDsSCMRightsTest.checkFDs[  sM     s^EAHHRBKK(RWWR.A@ $r   c                >    V P                  V P                  V4       R # r   )r   closeRecvmsgFDsr	  s   &&r   r  #SCMRightsTest.registerRecvmsgResultb  s    ,,f5r   c           	     n   V^,           F  w  r#pV\         P                  8X  g   K  V\         P                  8X  g   K4  \        P                  ! R4      pVP	                  VR\        V4      \        V4      VP                  ,          ,
           4       V F  p\        P                  ! V4       K  	  K  	  R# )r   r   N)	r8   r\  
SCM_RIGHTSr   	frombytesr  rR  rO  rD   )r   recvmsg_result
cmsg_level	cmsg_type	cmsg_datard  r@  s   &&     r   rn  SCMRightsTest.closeRecvmsgFDse  s     1?q0A0A,J9f///!2!22kk#&i )II#i.3<<*GHJ KBHHRL  1Br   c                    V P                  V P                  \        .\        P                  \        P
                  \        P                  ! R V P                  V4      4      3.4      \        \        4      4       R# r   N)	rX  r  rY  r8   r\  rq  r   re  r  )r   rU  s   &&r   createAndSendFDsSCMRightsTest.createAndSendFDsq  sb     	  ##)#4#4#)#4#4#(;;sDKKN#C#E "FG H	r   c                    Vw  rVrxV P                  V\        4       V P                  WP                  4       V P	                  VR \
        P                  VR7       V P                  V\        4       V P                  \        V4      V4       \        P                  ! R4      p	V F  p
V P                  V
\        4       V
w  rpV P                  V\
        P                  4       V P                  V\
        P                  4       V P                  V\        4       V P                  \        V4      \         ,          ^ 4       V	P#                  V4       K  	  V P                  \        V	4      V4       V P%                  V	4       R# )Tr  r  r  r   N)rX  rY  r  r3  r  r8   r   r+  rQ  r(  r  r   tupler\  rq  r  
SIZEOF_INTrr  rk  )r   numfdsr  maxcmsgsignoreflagsrZ  r  r  rm  rd  itemrt  ru  rv  s   &&&&&         r   checkRecvmsgFDsSCMRightsTest.checkRecvmsgFDs{  s+    %+!ec"  }}54F4E4E* 	 	, 	gt,S\84kk#D!!$./3,J9Z):):;Y(9(9:!!)U3S^j8!<MM)$  	S6*cr   c           	     z    V P                  ^V P                  V P                  \        \        4      R4      4       R# )r   r  Nr  r  r9  r  rY  r   s   &r   testFDPassSimpleSCMRightsTest.testFDPassSimple  .    Qt~~/23x!@ 	Ar   c                   V P                  V P                  \        .\        P                  \        P
                  \        P                  ! R V P                  ^4      4      P                  4       3.4      \        \        4      4       R# ry  )
rX  r  rY  r8   r\  rq  r   re  r9  r  r   s   &r   _testFDPassSimpleSCMRightsTest._testFDPassSimple  sh      ####++c4;;q>2::<> ?@
 H	r   c           	     z    V P                  ^V P                  V P                  \        \        4      R4      4       R# )   r  Nr  r   s   &r   testMultipleFDPass SCMRightsTest.testMultipleFDPass  r  r   c                (    V P                  ^4       R# r  Nrz  r   s   &r   _testMultipleFDPass!SCMRightsTest._testMultipleFDPass      a r   r  c                    V P                  ^V P                  V P                  \        \        4      \
        P                  ! ^\        ,          4      4      4       R# r  )r  r  r9  r  rY  r8   r  r  r   s   &r   testFDPassCMSG_SPACE"SCMRightsTest.testFDPassCMSG_SPACE  s@     	t~~dnnc#h$//J?A	Br   c                (    V P                  ^4       R# r  r  r   s   &r   _testFDPassCMSG_SPACE#SCMRightsTest._testFDPassCMSG_SPACE      a r   c                    V P                  ^V P                  V P                  \        \        4      \
        P                  ! ^\        ,          4      4      \
        P                  R7       R# )r   r  N)	r  r  r9  r  rY  r8   rM  r  r   r   s   &r   testFDPassCMSG_LEN SCMRightsTest.testFDPassCMSG_LEN  sK    Q!^^DNNCH,2OOA
N,KM
 *0):): 	 	<r   c                (    V P                  ^4       R# r  r  r   s   &r   _testFDPassCMSG_LEN!SCMRightsTest._testFDPassCMSG_LEN  r  r   zskipping, see issue #12958zskipping, see issue #22397c           	     ~    V P                  ^V P                  V P                  \        \        4      R4      ^R7       R# )r  r  )r  Nr  r   s   &r   testFDPassSeparate SCMRightsTest.testFDPassSeparate  s4     	Q!^^DNNCHeL&' 	 	)r   c                l   V P                  ^4      w  rV P                  V P                  \        .\        P
                  \        P                  \        P                  ! RV.4      3\        P
                  \        P                  \        P                  ! RV.4      3.4      \        \        4      4       R# r  r   N	re  rX  r  rY  r8   r\  rq  r   r  r   fd0fd1s   &  r   _testFDPassSeparate!SCMRightsTest._testFDPassSeparate       ;;q>  #&*;*;*0*;*;*/++cC5*A*C +1*;*;*0*;*;*/++cC5*A*C)D E H	r   c                   ^pV P                  VV P                  V P                  \        \        4      \
        P                  ! \        4      \
        P                  ! \        V,          4      ,           4      ^\
        P                  R7       R# )r  )r  r  N)
r  r  r9  r  rY  r8   r  r  rM  r   )r   num_fdss   & r   testFDPassSeparateMinSpace(SCMRightsTest.testFDPassSeparateMinSpace  sj     W!^^DNNCH,2,=,=j,I,2OOJ<P,Q-RS '(V5F5F	 	 	Hr   c                l   V P                  ^4      w  rV P                  V P                  \        .\        P
                  \        P                  \        P                  ! RV.4      3\        P
                  \        P                  \        P                  ! RV.4      3.4      \        \        4      4       R# r  r  r  s   &  r   _testFDPassSeparateMinSpace)SCMRightsTest._testFDPassSeparateMinSpace  r  r   c                     V P                  V.V4      pV P                  V\        V4      4       R #   \         d=   pT P                  TP                  \        4       T P                  T.4      p R p?L_R p?ii ; ir   )r  r=   r+  r  r  rX  r  )r   rZ  r  r*  r   s   &&&  r   sendAncillaryIfPossible%SCMRightsTest.sendAncillaryIfPossible  si    	1))3%9F
 	S*	  	1!!!''3/))3%0F	1s   2 A92A44A9c           	         V P                  ^ V P                  V P                  \        \        4      R4      \
        P                  R7       R# )r   r  r  N)r  r  r9  r  rY  r8   r   r   s   &r   testFDPassEmptySCMRightsTest.testFDPassEmpty  s=     	Qt~~/23x!@)/):): 	 	<r   c                r    V P                  \        \        P                  \        P                  R 3.4       R# r   N)r  rY  r8   r\  rq  r   s   &r   _testFDPassEmptySCMRightsTest._testFDPassEmpty
  s0    $$SF,=,=,2,=,=,/,1 +2 	3r   c                   V P                  V P                  \        \        4      R 4      w  rr4V P	                  V\        4       V P                  W@P                  4       V P                  VR\        P                  R7       V P                  \        V4      ^4       V Fe  w  rVpV P	                  V\        P                  4       V P	                  V\        P                  4       V P                  \        V4      \        4       Kg  	  R# )r  Tr  N)r  r9  r  rY  rX  r  r3  r  r8   r   r(  r\  rq  
assertLessr  r   rZ  r  r  rm  rt  ru  rv  s   &       r   testFDPassPartialInt"SCMRightsTest.testFDPassPartialInt  s    $(NN4>>36s8U%D!ec"  }}540A0ABS\1-07,J9Z):):;Y(9(9:OOC	NJ7 18r   c           	         V P                  \        \        P                  \        P                  \
        P
                  ! R V P                  .4      P                  4       RR 3.4       R# )r   Nr  )r  rY  r8   r\  rq  r   badfdr9  r   s   &r   _testFDPassPartialInt#SCMRightsTest._testFDPassPartialInt  sS    $$kk#

|,446s;= >	?r   c           	        V P                  V P                  \        \        4      R 4      w  rr4V P	                  V\        4       V P                  W@P                  4       V P                  VR\        P                  R7       V P                  \        V4      ^4       \        P                  ! R4      pV F  w  rgpV P	                  V\        P                  4       V P	                  V\        P                  4       VP                  VR\        V4      \        V4      VP                  ,          ,
           4       K  	  V P                  \        V4      ^4       V P!                  V4       R# )r  Tr  r   N)r  r9  r  rY  rX  r  r3  r  r8   r   r(  r   r\  rq  rr  rR  rk  )	r   rZ  r  r  rm  rd  rt  ru  rv  s	   &        r   testFDPassPartialIntInMiddle*SCMRightsTest.testFDPassPartialIntInMiddle#  s    %)NN4>>36s8U%D!ec"  }}540A0ABS\1-kk#07,J9Z):):;Y(9(9:MM) %E	Nc)ns||&CDF G 18
 	SXq)cr   c           
     f   V P                  ^4      w  rV P                  \        \        P                  \        P
                  \        P                  ! RWP                  .4      P                  4       RR 3\        P                  \        P
                  \        P                  ! RV.4      3.4       R# )r  r   Nr  )	re  r  rY  r8   r\  rq  r   r  r9  r  s   &  r   _testFDPassPartialIntInMiddle+SCMRightsTest._testFDPassPartialIntInMiddle6  s    ;;q>$$kk#ZZ0199;CR@B kk#u%'(	)r   c                    Vw  r4rVV P                  V\        4       V P                  W`P                  4       V P                  V. 4       V P	                  VR \
        P                  VR7       R# )Tr  r  r  N)rX  rY  r  r3  r  r8   r   )r   r  r  rZ  r  r  rm  s   &&&    r   checkTruncatedHeader"SCMRightsTest.checkTruncatedHeaderB  s`     %+!ec"  }}5"%4&2C2C* 	 	,r   ry   z#80931c                    V P                  V P                  V P                  \        \        4      4      \
        P                  R 7       R# r  Nr  r  r9  r  rY  r8   r   r   s   &r   testCmsgTruncNoBufSize$SCMRightsTest.testCmsgTruncNoBufSizeL  s8     	!!$..S"J /5.?.?	 	" 	Ar   c                (    V P                  ^4       R# r  r  r   s   &r   _testCmsgTruncNoBufSize%SCMRightsTest._testCmsgTruncNoBufSizeV  r  r   c                    V P                  V P                  V P                  \        \        4      ^ 4      \
        P                  R7       R# )r   r  Nr  r   s   &r   testCmsgTrunc0SCMRightsTest.testCmsgTrunc0Z  s8     	!!$..S1"M.4.?.? 	" 	Ar   c                (    V P                  ^4       R# r  r  r   s   &r   _testCmsgTrunc0SCMRightsTest._testCmsgTrunc0`  r  r   c                x    V P                  V P                  V P                  \        \        4      ^4      4       R# r  )r  r  r9  r  rY  r   s   &r   testCmsgTrunc1SCMRightsTest.testCmsgTrunc1g  s%    !!$..S1"MNr   c                (    V P                  ^4       R# r  r  r   s   &r   _testCmsgTrunc1SCMRightsTest._testCmsgTrunc1k  r  r   c                    V P                  V P                  V P                  \        \        4      \
        ^,          4      4       R# r  )r  r  r9  r  rY  r  r   s   &r   testCmsgTrunc2IntSCMRightsTest.testCmsgTrunc2Into  s2    
 	!!$..S1;a#A 	Br   c                (    V P                  ^4       R# r  r  r   s   &r   _testCmsgTrunc2Int SCMRightsTest._testCmsgTrunc2Intw  r  r   c           	         V P                  V P                  V P                  \        \        4      \
        P                  ! ^ 4      ^,
          4      4       R# r0  )r  r  r9  r  rY  r8   rM  r   s   &r   testCmsgTruncLen0Minus1%SCMRightsTest.testCmsgTruncLen0Minus1{  s:    !!$..S171Ca1G#I 	Jr   c                (    V P                  ^4       R# r  r  r   s   &r   _testCmsgTruncLen0Minus1&SCMRightsTest._testCmsgTruncLen0Minus1  r  r   c                   \        4       ;_uu_ 4        V P                  V P                  \        \        4      V4      w  rErgR R R 4       V P                  X\        4       V P                  XV P                  4       V P                  XR\        P                  R7       V^ 8X  d
   X. 8X  d   R # V P                  \        X4      ^4       V^ ,          w  rp
V P                  V\        P                  4       V P                  V	\        P                  4       V P                  \        V
4      V4       V P                  \        V
4      V4       \        P                  ! R4      pVP!                  V
R \        V
4      \        V
4      VP"                  ,          ,
           4       V P%                  V4       R #   + '       g   i     ELy; i)NTr  r  r   )r   r  r9  r  rY  rX  r  r3  r  r8   r   r\  rq  r'  r(  r   rr  rR  rk  )r   ancbufmaxdatamindatarZ  r  r  rm  rt  ru  rv  rd  s   &&&&        r   checkTruncatedArray!SCMRightsTest.checkTruncatedArray  sS   
 .//(,t~~7:3x)I%C% 0 	c"  t}}54&2C2CDa<GrMWq)+21:(
yV%6%67F$5$56I8S^W5kk#i !AI#i.3<<"?@B 	Cc% 0//s   .F11G	c                T    V P                  \        P                  ! ^ 4      ^ R7       R# r   r  r  Nr  r8   rM  r   s   &r   testCmsgTruncLen0SCMRightsTest.testCmsgTruncLen0  s      (:A Fr   c                (    V P                  ^4       R# r  r  r   s   &r   _testCmsgTruncLen0 SCMRightsTest._testCmsgTruncLen0  r  r   c                b    V P                  \        P                  ! ^ 4      ^,           ^R7       R# r  r 	  r   s   &r   testCmsgTruncLen0Plus1$SCMRightsTest.testCmsgTruncLen0Plus1  s#      (:Q(> Jr   c                (    V P                  ^4       R# r  r  r   s   &r   _testCmsgTruncLen0Plus1%SCMRightsTest._testCmsgTruncLen0Plus1  r  r   c                d    V P                  \        P                  ! \        4      \        R 7       R# )r  Nr  r8   rM  r  r   s   &r   testCmsgTruncLen1SCMRightsTest.testCmsgTruncLen1  s#      
(C)3 	! 	5r   c                (    V P                  ^4       R# r  r  r   s   &r   _testCmsgTruncLen1 SCMRightsTest._testCmsgTruncLen1  r  r   c                    V P                  \        P                  ! ^\        ,          4      ^,
          ^\        ,          ^,
          R7       R# )r  r  Nr	  r   s   &r   testCmsgTruncLen2Minus1%SCMRightsTest.testCmsgTruncLen2Minus1  s5      J(G!(K*+j.A)= 	! 	?r   c                (    V P                  ^4       R# r  r  r   s   &r   _testCmsgTruncLen2Minus1&SCMRightsTest._testCmsgTruncLen2Minus1  r  r   r   Ni)r   r   r>  )>r   r   r   r   r  re  rk  r  rn  rz  r  r  r  r  r  r  r8   r  r   r  r  r  r#   r  r   r   r  r  r  r  r  r  r  r  r  r  r  r  r1   rz   r{   r  r  r  r  r  r  r  r  r  r  r  r	  r	  r	  r
	  r	  r	  r	  r	  r   r   r   s   @r   r_  r_  G  sF     E
A6
!6A
A
! &,'B (B %%! &!<! __X;<__S67&,') ( 8 =) ##__X;<__S67	 8 = $	 __X;<__S67&,'H ( 8 =H  ++__X;<__S67	 8 = ,		+ __X;<< =<3
8? &,' ($ "--	) .	), CLLH4h?A @A ''! (! CLLH4h?A @A
 !  ! CLLH4h?O @O !  ! CLLH4h?B @B ""! #! CLLH4h?J @J ((! )!2 CLLH4h?G @G ""! #! CLLH4h?K @K ''! (! CLLH4h?5 @5 ""! #! CLLH4h?? @? ((! )!r   r_  c            	         a  ] tR tRt o ^tR3tR tR4R lt]! ]	RR4      R 4       t
]
P                  R 4       t]! ]	RRR4      R	 4       t]P                  R
 4       t]! ]	P                  R4      ]! ]	RR4      R 4       4       t]P                  R 4       tR4R lt]! ]	RRRR4      R 4       t]P                  R 4       t]! ]	RRRRR4      R 4       t]P                  R 4       t]! ]	P                  R4      ]! ]	RRRRR4      R 4       4       t]P                  R 4       t]! ]	P                  R4      ]! ]	RRRRR4      R 4       4       t]P                  R 4       tR5R lt]! ]	RR4      R 4       t]P                  R 4       t]! ]	RR4      R 4       t]P                  R 4       t]! ]	RR4      R 4       t]P                  R 4       t ]! ]	RR4      R  4       t!]!P                  R! 4       t"]! ]	RR4      R" 4       t#]#P                  R# 4       t$]! ]	RR4      R$ 4       t%]%P                  R% 4       t&R5R& lt']! ]	RRRRR4      R' 4       t(](P                  R( 4       t)]! ]	RRRRR4      R) 4       t*]*P                  R* 4       t+]! ]	RRRRR4      R+ 4       t,],P                  R, 4       t-]! ]	RRRRR4      R- 4       t.].P                  R. 4       t/]! ]	RRRRR4      R/ 4       t0]0P                  R0 4       t1R1t2V t3R2# )6RFC3542AncillaryTesti  c                R    / pV F  w  r4pV P                  W43V4       WRW43&   K   	  V# r   )r5  )r   r  drt  ru  rv  s   &&    r   ancillaryMapping%RFC3542AncillaryTest.ancillaryMapping  s=     07,J9j4a8)2z%& 18 r   c                   V P                   P                  \        P                  \        P                  ^4       V P
                  P                  4        V P                  V P                   \        \        4      V4      w  rErgV P                  V\        4       V P                  WpP                  4       V P                  VR\        P                  VR7       V P                  \        V4      ^4       V P                  V^ ,          \         4       V^ ,          w  rp
V P                  V\        P                  4       V P                  V	\        P"                  4       V P                  V
\$        4       V P                  \        V
4      \&        4       \(        P(                  ! R4      pVP+                  V
4       V P-                  V^ ,          ^ 4       V P/                  V^ ,          V4       R# r   Tr}  r   N)r9  rx  r8   rc  r  r  r   r  r  rY  rX  r  r3  r  r   r+  r~  r  r  r  r   rr  r'  r(  )r   
ancbufsizemaxhopr  rZ  r  r  rm  rt  ru  rv  r'  s   &&&&        r   checkHopLimit"RFC3542AncillaryTest.checkHopLimit  sj   
 	!!&"5"5"(":":A	?$(NN4>>36s8Z%I!e 	c"  }}54F4E4E* 	 	, 	Wq)gaj%0+21:(
yV%8%89F$8$89i/Y4KK	I!a(QqT6*r   r  r  c                *    V P                  R R7       R# r  r!	  N)r#	  r   s   &r   testRecvHopLimit%RFC3542AncillaryTest.testRecvHopLimit  s     	e,r   c                    V P                  V P                  P                  V P                  R 7      4       V P	                  \
        4       R# r   r!  r  r   r"  r  rY  r   s   &r   _testRecvHopLimit&RFC3542AncillaryTest._testRecvHopLimit   s6    
 	,,T5F5F,GH#r   r  c                Z    V P                  \        P                  ! \        4      R 7       R# )r'	  N)r#	  r8   r  r  r   s   &r   testRecvHopLimitCMSG_SPACE/RFC3542AncillaryTest.testRecvHopLimitCMSG_SPACE  s      	f&7&7
&CDr   c                    V P                  V P                  P                  V P                  R 7      4       V P	                  \
        4       R# r   r+	  r   s   &r   _testRecvHopLimitCMSG_SPACE0RFC3542AncillaryTest._testRecvHopLimitCMSG_SPACE  4    ,,T5F5F,GH#r   r  c                @    V P                  R V P                  R7       R# r  )r!	  r"	  N)r#	  	hop_limitr   s   &r   testSetHopLimit$RFC3542AncillaryTest.testSetHopLimit  s    
 	eDNNCr   c                X   V P                  V P                  P                  V P                  R 7      4       V P	                  V P                  \        .\        P                  \        P                  \        P                  ! RV P                  .4      3.4      \        \        4      4       R# r  r   N)r!  r  r   r"  rX  r  rY  r8   rc  r  r   r7	  r  r   s   &r   _testSetHopLimit%RFC3542AncillaryTest._testSetHopLimit  s    ,,T5F5F,GH  ##)#6#68L8L#(;;sT^^4D#E#G "HI H		r   c                   V P                   P                  \        P                  \        P                  ^4       V P                   P                  \        P                  \        P
                  ^4       V P                  P                  4        V P                  V P                   \        \        4      V4      w  rErgV P                  V\        4       V P                  WpP                  4       V P                  VR\        P                  VR7       V P                  \        V4      ^4       V P!                  V4      pV\        P                  \        P"                  3,          p	V P                  \        V	4      \$        4       \&        P&                  ! R4      p
V
P)                  V	4       V P+                  V
^ ,          ^ 4       V P-                  V
^ ,          ^4       V\        P                  \        P.                  3,          pV P                  \        V4      \$        4       \&        P&                  ! R4      p
V
P)                  V4       V P+                  V
^ ,          ^ 4       V P-                  V
^ ,          V4       R# r 	  )r9  rx  r8   rc  r  r  r  r   r  r  rY  rX  r  r3  r  r   r	  r  r  r   rr  r'  r(  r  )r   r!	  r"	  r  rZ  r  r  rm  ancmaptcdatar'  hldatas   &&&&        r   checkTrafficClassAndHopLimit1RFC3542AncillaryTest.checkTrafficClassAndHopLimit'  s    	!!&"5"5"(":":A	?!!&"5"5"("8"8!	=$(NN4>>36s8Z%I!e 	c"  }}54F4E4E* 	 	,Wq)&&w/,,f.@.@ABVj1KK	F!a(QqT3',,f.B.BCDVj1KK	F!a(QqT6*r   r  r  c                *    V P                  R R7       R# r&	  )rB	  r   s   &r   testRecvTrafficClassAndHopLimit4RFC3542AncillaryTest.testRecvTrafficClassAndHopLimitK  s     	))U);r   c                    V P                  V P                  P                  V P                  R 7      4       V P	                  \
        4       R# r   r+	  r   s   &r    _testRecvTrafficClassAndHopLimit5RFC3542AncillaryTest._testRecvTrafficClassAndHopLimitQ  r4	  r   c                h    V P                  \        P                  ! \        4      ^,          R7       R# r  r'	  N)rB	  r8   r  r  r   s   &r   )testRecvTrafficClassAndHopLimitCMSG_SPACE>RFC3542AncillaryTest.testRecvTrafficClassAndHopLimitCMSG_SPACEV  s*    
 	))((4q8 	* 	:r   c                    V P                  V P                  P                  V P                  R 7      4       V P	                  \
        4       R# r   r+	  r   s   &r   *_testRecvTrafficClassAndHopLimitCMSG_SPACE?RFC3542AncillaryTest._testRecvTrafficClassAndHopLimitCMSG_SPACE^  r4	  r   c                @    V P                  R V P                  R7       R# r6	  rB	  r7	  r   s   &r   testSetTrafficClassAndHopLimit3RFC3542AncillaryTest.testSetTrafficClassAndHopLimitc  s!     	))U15 	* 	Ar   c                   V P                  V P                  P                  V P                  R 7      4       V P	                  V P                  \        .\        P                  \        P                  \        P                  ! RV P                  .4      3\        P                  \        P                  \        P                  ! RV P                  .4      3.4      \        \        4      4       R# r;	  )r!  r  r   r"  rX  r  rY  r8   rc  r  r   traffic_classr  r7	  r  r   s   &r   _testSetTrafficClassAndHopLimit4RFC3542AncillaryTest._testSetTrafficClassAndHopLimitl  s    ,,T5F5F,GH  ##)#6#68J8J#(;;sT5G5G4H#I#K#)#6#68L8L#(;;sT^^4D#E#G"HI
 H	r   c                @    V P                  R V P                  R7       R# r6	  rR	  r   s   &r   testOddCmsgSize$RFC3542AncillaryTest.testOddCmsgSizew  s!     	))U15 	* 	Ar   c                   V P                  V P                  P                  V P                  R 7      4        V P	                  \
        .\        P                  \        P                  \        P                  ! RV P                  .4      P                  4       R,           3\        P                  \        P                  \        P                  ! RV P                  .4      3.4      pR#   \         d   pT P                  TP                   \"        4       T P	                  \
        .\        P                  \        P                  \        P                  ! RT P                  .4      3\        P                  \        P                  \        P                  ! RT P                  .4      3.4      pT P%                  T\'        \
        4      4        Rp?R# Rp?ii ; i)r  r   r  N)r!  r  r   r"  r  rY  r8   rc  r  r   rV	  r9  r  r7	  r=   r+  r  r  rX  r  )r   r*  r   s   &  r   _testOddCmsgSize%RFC3542AncillaryTest._testOddCmsgSize  s]   ,,T5F5F,GH	/))%%v'9'9++cD$6$6#78@@BWLN%%v';';++cDNN#34678F  	/!!!''3/))%%v'9'9++cD$6$6#78:%%v';';++cDNN#34678F VSX..	/s   B,C% %G0CGGc                   V P                   P                  \        P                  \        P                  ^4       V P
                  P                  4        Vf   RMV3pV P                  ! V P                   \        \        4      .VO5!  w  rErgV P                  V\        4       V P                  WpP                  4       V P                  V. 4       V P                  VR\        P                  VR7       R# )r   NTr  r   )r9  rx  r8   rc  r  r  r   r  r  rY  rX  r  r3  r  r   )r   r!	  r  r%   rZ  r  r  rm  s   &&&     r   checkHopLimitTruncatedHeader1RFC3542AncillaryTest.checkHopLimitTruncatedHeader  s     	!!&"5"5"(":":A	?'rj]$(NN4>>36s8%D>B%D!e 	c"  }}5"%4&2C2C* 	 	,r   c                H    V P                  R \        P                  R7       R # )Nr!	  r  r`	  r8   r   r   s   &r   r  +RFC3542AncillaryTest.testCmsgTruncNoBufSize  s%     	))T
 7=6G6G 	* 	Ir   c                    V P                  V P                  P                  V P                  R 7      4       V P	                  \
        4       R# r   r+	  r   s   &r   r  ,RFC3542AncillaryTest._testCmsgTruncNoBufSize  r4	  r   c                H    V P                  ^ \        P                  R7       R# )r   rc	  Nrd	  r   s   &r   testSingleCmsgTrunc0)RFC3542AncillaryTest.testSingleCmsgTrunc0  s#     	))Q6<6G6G 	* 	Ir   c                    V P                  V P                  P                  V P                  R 7      4       V P	                  \
        4       R# r   r+	  r   s   &r   _testSingleCmsgTrunc0*RFC3542AncillaryTest._testSingleCmsgTrunc0  r4	  r   c                *    V P                  ^R7       R# )r   r'	  N)r`	  r   s   &r   testSingleCmsgTrunc1)RFC3542AncillaryTest.testSingleCmsgTrunc1  s    ))Q)7r   c                    V P                  V P                  P                  V P                  R 7      4       V P	                  \
        4       R# r   r+	  r   s   &r   _testSingleCmsgTrunc1*RFC3542AncillaryTest._testSingleCmsgTrunc1  r4	  r   c                @    V P                  ^\        ,          R7       R# rK	  )r`	  r  r   s   &r   testSingleCmsgTrunc2Int,RFC3542AncillaryTest.testSingleCmsgTrunc2Int  s    ))Q^)Dr   c                    V P                  V P                  P                  V P                  R 7      4       V P	                  \
        4       R# r   r+	  r   s   &r   _testSingleCmsgTrunc2Int-RFC3542AncillaryTest._testSingleCmsgTrunc2Int  r4	  r   c                `    V P                  \        P                  ! ^ 4      ^,
          R7       R# )r   r'	  N)r`	  r8   rM  r   s   &r   testSingleCmsgTruncLen0Minus12RFC3542AncillaryTest.testSingleCmsgTruncLen0Minus1  s!    ))V__Q5G!5K)Lr   c                    V P                  V P                  P                  V P                  R 7      4       V P	                  \
        4       R# r   r+	  r   s   &r   _testSingleCmsgTruncLen0Minus13RFC3542AncillaryTest._testSingleCmsgTruncLen0Minus1  r4	  r   c           	     h   V P                   P                  \        P                  \        P                  ^4       V P
                  P                  4        \        4       ;_uu_ 4        V P                  V P                   \        \        4      \        P                  ! \        4      ^,
          4      w  rr4RRR4       V P                  X\        4       V P                  XV P                  4       V P!                  XR\        P"                  R7       V P%                  \        X4      ^4       V'       dn   V^ ,          w  rVpV P                  V\        P                  4       V P                  V\        P&                  4       V P)                  \        V4      \        4       R# R#   + '       g   i     L; i)r   NTr  )r9  rx  r8   rc  r  r  r   r   r  r  rY  rM  r  rX  r  r3  r  r   r(  r  r  r  s   &       r   testSingleCmsgTruncInData.RFC3542AncillaryTest.testSingleCmsgTruncInData  s'   
 	!!&"5"5"(":":A	?-//(,C&//**E*I)K%C% 0 	c"  t}}54&2C2CDS\1-/6qz,J9Z)<)<=Y(<(<=OOC	NJ7	  0/s   &AF!!F1	c                    V P                  V P                  P                  V P                  R 7      4       V P	                  \
        4       R# r   r+	  r   s   &r   _testSingleCmsgTruncInData/RFC3542AncillaryTest._testSingleCmsgTruncInData  r4	  r   c                   V P                   P                  \        P                  \        P                  ^4       V P                   P                  \        P                  \        P
                  ^4       V P                  P                  4        V P                  V P                   \        \        4      V4      w  r4rVV P                  V\        4       V P                  W`P                  4       V P                  VR\        P                  VR7       V P                  \        V4      ^4       V^ ,          w  rxp	V P                  V\        P                  4       V P!                  V\        P"                  \        P$                  04       V P                  \        V	4      \&        4       \(        P(                  ! R4      p
V
P+                  V	4       V P-                  V
^ ,          ^ 4       V P/                  V
^ ,          ^4       R# )r   Tr  r   N)r9  rx  r8   rc  r  r  r  r   r  r  rY  rX  r  r3  r  r   r3  r  r  r  r   rr  r'  r(  )r   r!	  r  rZ  r  r  rm  rt  ru  rv  r'  s   &&&        r   checkTruncatedSecondHeader/RFC3542AncillaryTest.checkTruncatedSecondHeader  st    	!!&"5"5"(":":A	?!!&"5"5"("8"8!	=$(NN4>>36s8Z%I!e 	c"  }}54&2C2C* 	 	, 	Wq)+21:(
yV%8%89i&"4"4f6J6J!KLY4KK	I!a(QqT3'r   c                x    V P                  \        P                  ! \        4      \        P                  R 7       R# r  )r	  r8   r  r  r   r   s   &r   testSecondCmsgTrunc0)RFC3542AncillaryTest.testSecondCmsgTrunc0!  s.     	''(9(9*(E4:4E4E 	( 	Gr   c                    V P                  V P                  P                  V P                  R 7      4       V P	                  \
        4       R# r   r+	  r   s   &r   _testSecondCmsgTrunc0*RFC3542AncillaryTest._testSecondCmsgTrunc0'  r4	  r   c                f    V P                  \        P                  ! \        4      ^,           4       R# r  r	  r8   r  r  r   s   &r   testSecondCmsgTrunc1)RFC3542AncillaryTest.testSecondCmsgTrunc1,  s"     	''(9(9*(E(IJr   c                    V P                  V P                  P                  V P                  R 7      4       V P	                  \
        4       R# r   r+	  r   s   &r   _testSecondCmsgTrunc1*RFC3542AncillaryTest._testSecondCmsgTrunc11  r4	  r   c                |    V P                  \        P                  ! \        4      ^\        ,          ,           4       R# r  r	  r   s   &r   testSecondCmsgTrunc2Int,RFC3542AncillaryTest.testSecondCmsgTrunc2Int6  s+     	''(9(9*(E()J)7 	8r   c                    V P                  V P                  P                  V P                  R 7      4       V P	                  \
        4       R# r   r+	  r   s   &r   _testSecondCmsgTrunc2Int-RFC3542AncillaryTest._testSecondCmsgTrunc2Int<  r4	  r   c                    V P                  \        P                  ! \        4      \        P                  ! ^ 4      ,           ^,
          4       R# r0  )r	  r8   r  r  rM  r   s   &r   testSecondCmsgTruncLen0Minus12RFC3542AncillaryTest.testSecondCmsgTruncLen0Minus1A  s9     	''(9(9*(E(.(:);=>)? 	@r   c                    V P                  V P                  P                  V P                  R 7      4       V P	                  \
        4       R# r   r+	  r   s   &r   _testSecondCmsgTruncLen0Minus13RFC3542AncillaryTest._testSecondCmsgTruncLen0Minus1G  r4	  r   c           
        V P                   P                  \        P                  \        P                  ^4       V P                   P                  \        P                  \        P
                  ^4       V P                  P                  4        \        4       ;_uu_ 4        V P                  V P                   \        \        4      \        P                  ! \        4      \        P                  ! \        4      ,           ^,
          4      w  rr4RRR4       V P                  X\        4       V P!                  XV P"                  4       V P%                  XR\        P&                  R7       \        P(                  \        P*                  0pXP-                  ^ 4      w  rgpV P                  V\        P                  4       VP/                  V4       V P                  \        V4      \        4       \0        P0                  ! R4      p	V	P3                  V4       V P5                  V	^ ,          ^ 4       V P7                  V	^ ,          ^4       V'       de   VP-                  ^ 4      w  rgpV P                  V\        P                  4       VP/                  V4       V P9                  \        V4      \        4       V P                  V. 4       R#   + '       g   i     EL; i)r   NTr  r   )r9  rx  r8   rc  r  r  r  r   r   r  r  rY  r  r  rM  rX  r  r3  r  r   r  r  popremover   rr  r'  r(  r  )
r   rZ  r  r  rm  
cmsg_typesrt  ru  rv  r'  s
   &         r   testSecondCmsgTruncInData.RFC3542AncillaryTest.testSecondCmsgTruncInDataL  s   
 	!!&"5"5"(":":A	?!!&"5"5"("8"8!	=-//(,C!!*-
0KKaO)Q%C% 0
 	c"  t}}54&2C2CD((&*>*>?
+2;;q>(
yV%8%89)$Y4KK	I!a(QqT3'/6{{1~,J9Z)<)<=i(OOC	NJ7"%5 0//s   A,KK	c                    V P                  V P                  P                  V P                  R 7      4       V P	                  \
        4       R# r   r+	  r   s   &r   _testSecondCmsgTruncInData/RFC3542AncillaryTest._testSecondCmsgTruncInDatar  r4	  r   r   Nr  )r  r   r>  )4r   r   r   r   r7	  rV	  r	  r#	  r  r8   r(	  r   r,	  r/	  r2	  r8	  r<	  rB	  rE	  rH	  rL	  rO	  rS	  rW	  rZ	  r]	  r`	  r  r  ri	  rl	  ro	  rr	  ru	  rx	  r{	  r~	  r	  r	  r	  r	  r	  r	  r	  r	  r	  r	  r	  r	  r	  r   r   r   s   @r   r	  r	    s     I M+8 &-?- @- !! " &,(;_ME NE  ++ , &--+&-?D @ ,D
    !"+H &-#]4<4< %00 1 &,(;_#]4:4: /:: ; &--+&,(;_#]4A4 ,A $// 0 &--+&,(;_#]4A4 ,A   / !/*,( &-?I @I '' ( &-?I @I %% & &-?8 @8 %% & &-?E @E (( ) &-?M @M #.. / &-?8 @8, ** +(@ &,(;_#]4G4G %% & &,(;_#]4K4K %% & &,(;_#]4848 (( ) &,(;_#]4@4@ #.. / &,(;_#]4"&4"&H ** +r   r	  c                       ] tR tRtRtR# )SendrecvmsgUDPTestBaseiz  r   Nr   r   r   r   r   r   r   r   r	  r	  z       	r   r	  r  c                       ] tR tRtRtR# )SendmsgUDPTesti  r   Nr	  r   r   r   r	  r	        r   r	  r  c                       ] tR tRtRtR# )RecvmsgUDPTesti  r   Nr	  r   r   r   r	  r	    r	  r   r	  r&  c                       ] tR tRtRtR# )RecvmsgIntoUDPTesti  r   Nr	  r   r   r   r	  r	    r	  r   r	  c                   &   a  ] tR tRt o R tRtV tR# )SendrecvmsgUDP6TestBasei  c                6    V P                  VR R VR R 4       R # Nr  r  r  s   &&&r   r  +SendrecvmsgUDP6TestBase.checkRecvmsgAddress        	sU3BZ0r   r   Nr   r   r   r   r  r   r   r   s   @r   r	  r	    s     1 1r   r	  r  r  rK   c                       ] tR tRtRtR# )SendmsgUDP6Testi  r   Nr	  r   r   r   r	  r	         	r   r	  c                       ] tR tRtRtR# )RecvmsgUDP6Testi  r   Nr	  r   r   r   r	  r	    r	  r   r	  c                       ] tR tRtRtR# )RecvmsgIntoUDP6Testi  r   Nr	  r   r   r   r	  r	    r	  r   r	  rc  c                       ] tR tRtRtR# )RecvmsgRFC3542AncillaryUDP6Testi  r   Nr	  r   r   r   r	  r	         	r   r	  c                       ] tR tRtRtR# )#RecvmsgIntoRFC3542AncillaryUDP6Testi  r   Nr	  r   r   r   r	  r	    s     	r   r	  c                       ] tR tRtRtR# )SendrecvmsgUDPLITETestBasei  r   Nr	  r   r   r   r	  r	    s    
 	r   r	  c                       ] tR tRtRtR# )SendmsgUDPLITETesti  r   Nr	  r   r   r   r	  r	    r	  r   r	  c                       ] tR tRtRtR# )RecvmsgUDPLITETesti  r   Nr	  r   r   r   r	  r	    r	  r   r	  c                       ] tR tRtRtR# )RecvmsgIntoUDPLITETesti  r   Nr	  r   r   r   r	  r	    r	  r   r	  c                   &   a  ] tR tRt o R tRtV tR# )SendrecvmsgUDPLITE6TestBasei  c                6    V P                  VR R VR R 4       R # r	  r  r  s   &&&r   r  /SendrecvmsgUDPLITE6TestBase.checkRecvmsgAddress  r	  r   r   Nr	  r   s   @r   r	  r	    s     1 1r   r	  c                       ] tR tRtRtR# )SendmsgUDPLITE6Testi  r   Nr	  r   r   r   r	  r	    r	  r   r	  c                       ] tR tRtRtR# )RecvmsgUDPLITE6Testi  r   Nr	  r   r   r   r	  r	    r	  r   r	  c                       ] tR tRtRtR# )RecvmsgIntoUDPLITE6Testi  r   Nr	  r   r   r   r	  r	    r	  r   r	  c                       ] tR tRtRtR# )#RecvmsgRFC3542AncillaryUDPLITE6Testi  r   Nr	  r   r   r   r	  r	    s     	r   r	  c                       ] tR tRtRtR# )'RecvmsgIntoRFC3542AncillaryUDPLITE6Testi   r   Nr	  r   r   r   r	  r	     s     	r   r	  c                       ] tR tRtRtR# )SendrecvmsgTCPTestBasei  r   Nr	  r   r   r   r	  r	    r	  r   r	  c                       ] tR tRtRtR# )SendmsgTCPTesti  r   Nr	  r   r   r   r	  r	    r	  r   r	  c                       ] tR tRtRtR# )RecvmsgTCPTesti  r   Nr	  r   r   r   r	  r	    r	  r   r	  c                       ] tR tRtRtR# )RecvmsgIntoTCPTesti  r   Nr	  r   r   r   r	  r	    r	  r   r	  c                       ] tR tRtRtR# )SendrecvmsgSCTPStreamTestBasei  r   Nr	  r   r   r   r	  r	    r	  r   r	  z6IPPROTO_SCTP: [Errno 62] Protocol not supported on AIXr   rc   r  c                       ] tR tRtRtR# )SendmsgSCTPStreamTesti$  r   Nr	  r   r   r   r	  r	  $  r	  r   r	  c                   2   a a ] tR tRt oV 3R ltRtVtV ;t# )RecvmsgSCTPStreamTesti*  c                   <  \         \        V `  4        R#   \         d=   pTP                  \        P
                  8w  d   h T P                  R 4        Rp?R# Rp?ii ; iz4sporadic ENOTCONN (kernel issue?) - see issue #13876N)r  r	  r  r=   r  ENOTCONNr   r   r   r  s   & r   r  $RecvmsgSCTPStreamTest.testRecvmsgEOF0  sL    	R'=? 	Rww%..(MMPQQ	R    A1AAr   r   r   r   r   r  r   r   r  r  s   @@r   r	  r	  *       R Rr   r	  c                   2   a a ] tR tRt oV 3R ltRtVtV ;t# )RecvmsgIntoSCTPStreamTesti8  c                   <  \         \        V `  4        R#   \         d=   pTP                  \        P
                  8w  d   h T P                  R 4        Rp?R# Rp?ii ; ir	  )r  r	  r  r=   r  r	  r   r	  s   & r   r  (RecvmsgIntoSCTPStreamTest.testRecvmsgEOF>  sL    	R+TAC 	Rww%..(MMPQQ	Rr	  r   r	  r  s   @@r   r	  r	  8  r	  r   r	  c                       ] tR tRtRtR# )SendrecvmsgUnixStreamTestBaseiG  r   Nr	  r   r   r   r	  r	  G  r	  r   r	  r  c                       ] tR tRtRtR# )SendmsgUnixStreamTestiK  r   Nr	  r   r   r   r	  r	  K  r	  r   r	  c                       ] tR tRtRtR# )RecvmsgUnixStreamTestiP  r   Nr	  r   r   r   r	  r	  P  r	  r   r	  c                       ] tR tRtRtR# )RecvmsgIntoUnixStreamTestiV  r   Nr	  r   r   r   r 
  r 
  V  r	  r   r 
  r\  rq  c                       ] tR tRtRtR# )RecvmsgSCMRightsStreamTesti\  r   Nr	  r   r   r   r
  r
  \  r	  r   r
  c                       ] tR tRtRtR# )RecvmsgIntoSCMRightsStreamTestia  r   Nr	  r   r   r   r
  r
  a  r	  r   r
  c                      a a ] tR tRt oV 3R lt]P                  t]! ]	R4      '       d   Rt
R tRtVtV ;t# ^t
R tRtVtV ;t# )InterruptedTimeoutBaseim  c                   < \         SV `  4        \        P                  ! \        P                  R  4      pV P	                  \        P                  \        P                  V4       R# )c                     ^^ ,          # )r   r   )signumr  s   &&r   r   .InterruptedTimeoutBase.setUp.<locals>.<lambda>u  s    Ar   N)r  r   r  r  r   )r   orig_alrm_handlerr  s   & r   r   InterruptedTimeoutBase.setUpr  s>    "MM&..*EGv~~7HIr   	setitimerg?c                P    \         P                  ! \         P                  V4       R # r   )r  r
  ITIMER_REALr   secondss   &&r   setAlarmInterruptedTimeoutBase.setAlarm  s    V//9r   c                2    \         P                  ! V4       R # r   )r  r  r
  s   &&r   r
  r
    s    LL!r   r   )r   r   r   r   r   r   rD  rp   r7   r  
alarm_timer
  r   r   r  r  s   @@r   r
  r
  m  sG     
J &&G
 v{##
	: 	: 
	" 	"r   r
  siginterruptr  r
  z+Don't have signal.alarm or signal.setitimerc                      a a ] tR tRt oV 3R ltR tR tR tR tR t	]
! ]P                  R4      R	 4       t]
! ]P                  R
4      R 4       tRtVtV ;t# )InterruptedRecvTimeoutTesti  c                n   < \         SV `  4        V P                  P                  V P                  4       R # r   )r  r   r   rC  rp   r  s   &r   r    InterruptedRecvTimeoutTest.setUp  s"    		T\\*r   c                    V P                  V P                  4       V P                  \        4      ;_uu_ 4       pV! V/ VB  R R R 4       V P                  ^ 4       R #   + '       g   i     L#; i  T P                  ^ 4       i ; ir   )r
  r
  rI  r  r   r  r%   r  rV  s   &&*, r   checkInterruptedRecv/InterruptedRecvTimeoutTest.checkInterruptedRecv  sc    	MM$//*""#455d%f% 6 MM! 65 MM!s"   8A1 	AA1 A.	)A1 1Bc                R    V P                  V P                  P                  R 4       R# rS  )r
  r   rU  r   s   &r   testInterruptedRecvTimeout5InterruptedRecvTimeoutTest.testInterruptedRecvTimeout  s    !!$))..$7r   c                d    V P                  V P                  P                  \        R 4      4       R# rS  )r
  r   	recv_intorL  r   s   &r   testInterruptedRecvIntoTimeout9InterruptedRecvTimeoutTest.testInterruptedRecvIntoTimeout  s     !!$))"5"5yGr   c                R    V P                  V P                  P                  R 4       R# rS  )r
  r   rv  r   s   &r   testInterruptedRecvfromTimeout9InterruptedRecvTimeoutTest.testInterruptedRecvfromTimeout  s    !!$))"4"4d;r   c                d    V P                  V P                  P                  \        R 4      4       R# rS  )r
  r   rw  rL  r   s   &r   "testInterruptedRecvfromIntoTimeout=InterruptedRecvTimeoutTest.testInterruptedRecvfromIntoTimeout  s     !!$))"9"99T?Kr   r  c                R    V P                  V P                  P                  R 4       R# rS  )r
  r   r  r   s   &r   testInterruptedRecvmsgTimeout8InterruptedRecvTimeoutTest.testInterruptedRecvmsgTimeout  s    !!$))"3"3T:r   r&  c                f    V P                  V P                  P                  \        R 4      .4       R# rS  )r
  r   r&  rL  r   s   &r   !testInterruptedRecvmsgIntoTimeout<InterruptedRecvTimeoutTest.testInterruptedRecvmsgIntoTimeout  s#    !!$))"8"89T?:KLr   r   )r   r   r   r   r   r
  r 
  r$
  r'
  r*
  r  r8   r-
  r0
  r   r   r  r  s   @@r   r
  r
    sk     +8H<L &--+; ,; &--0M 1M Mr   r
  c                      a a ] tR tRt oV 3R ltR tR t]P                  ! ^
^4      R 4       t	]P                  ! ^
^4      R 4       t
]P                  ! ^
^4      ]! ]P                  R4      R 4       4       tR	tVtV ;t# )
InterruptedSendTimeoutTesti  c                  < \         SV `  4        V P                  4       V n        V P	                  V P                  P
                  4       \        P                  ! V P                  R 7      pVP                  4        V P                  P                  4       w  V n        pV P	                  V P                  P
                  4       VP                  4        V P                  P                  V P                  4       R# )targetN)r  r   r  rr  r   rD   r   Thread	doConnectstartr   rE  rk  r  rC  rp   )r   
cli_threadrm  r  s   &  r   r    InterruptedSendTimeoutTest.setUp  s    ),,- %%T^^<
"ii..0t++,!!$,,/r   c                P    V P                   P                  V P                  4       R # r   )rr  rP  r  r   s   &r   r8
  $InterruptedSendTimeoutTest.doConnect  s    t~~.r   c                    V P                  \        4      ;_uu_ 4       p V P                  V P                  4       V! V/ VB  K&    + '       g   i     M; iT P                  ^ 4       R#   T P                  ^ 4       i ; ir  )rI  r  r
  r
  r
  s   &&*, r   checkInterruptedSend/InterruptedSendTimeoutTest.checkInterruptedSend  s_    	""#455MM$//2$)&) 65
 MM!DMM!s   A, 'AA	A, ,A?c                R    V P                  V P                  P                  R4       R#    aNr  )r?
  rr  r`  r   s   &r   testInterruptedSendTimeout5InterruptedSendTimeoutTest.testInterruptedSendTimeout  s    !!$.."5"5x@r   c                h    V P                  V P                  P                  RV P                  4       R# rB
  )r?
  rr  rS  r  r   s   &r   testInterruptedSendtoTimeout7InterruptedSendTimeoutTest.testInterruptedSendtoTimeout  s'     	!!$.."7"7"&..	2r   r  c                T    V P                  V P                  P                  R.4       R# rB
  )r?
  rr  r  r   s   &r   testInterruptedSendmsgTimeout8InterruptedSendTimeoutTest.testInterruptedSendmsgTimeout  s      	!!$.."8"88*Er   rv  )r   r   r   r   r   r8
  r?
  r   requires_mac_verrD
  rG
  r  r8   rJ
  r   r   r  r  s   @@r   r3
  r3
    s     0/
 b!$A %A b!$2 %2 b!$&--+F , %F Fr   r3
  c                   ,   a  ] tR tRt o R tR tRtV tR# )TCPCloserTesti  c                \   V P                   P                  4       w  r\        P                  ! V.. . \        P                  4      w  p pV P                  W1.4       V P                  VP                  ^4      R4       VP                  4        VP                  4        VP                  4        R# )r   r  N)r   rE  r  r   SHORT_TIMEOUTrX  rU  rD   )r   rF  r   r  s   &   r   	testCloseTCPCloserTest.testClose  s}    ))""$]]D62r73H3HI
av&1t,

 	



r   c                   V P                   P                  \        V P                  34       V P                   P	                  R 4       \
        P
                  ! V P                   .. . \        P                  4      w  p pV P                  WP                   .4       V P                  V P                   P                  ^4      R4       R# )r  r   N)
r	  rP  r1  r   r`  r  r   rP
  rX  rU  )r   r  r   s   &  r   
_testCloseTCPCloserTest._testClose  s    $		*+d]]DHH:r2w7L7LM
az*q)3/r   r   N)r   r   r   r   rQ
  rT
  r   r   r   s   @r   rN
  rN
    s     
0 0r   rN
  c                   T   a  ] tR tRt o RR ltR tR tR tR tR t	R t
R	 tR
tV tR# )BasicSocketPairTesti  c                2    \         P                  WR 7       R# r  )rx  r   r  s   &&r   r   BasicSocketPairTest.__init__	  s    <r   c                   V P                  V\        P                  4       \        \        R 4      '       d,   V P                  VP                  \        P
                  4       M*V P                  VP                  \        P                  4       V P                  VP                  \        P                  4       V P                  VP                  ^ 4       R# )r  N)
r+  r8   r7   rX  r;  r  r   r  rc   r<  r  s   &&r   _check_defaults#BasicSocketPairTest._check_defaults  s    dFMM269%%T[[&..9T[[&..9F$6$67Q'r   c                <    V P                  V P                  4       R # r   )r[
  r	  r   s   &r   _testDefaults!BasicSocketPairTest._testDefaults  s    TXX&r   c                <    V P                  V P                  4       R # r   )r[
  r   r   s   &r   testDefaults BasicSocketPairTest.testDefaults  s    TYY'r   c                h    V P                   P                  R 4      pV P                  V\        4       R# rS  r   rU  rX  rY  rL  s   & r   rx  BasicSocketPairTest.testRecv  $    iinnT"c"r   c                D    V P                   P                  \        4       R # r   r	  r`  rY  r   s   &r   r|  BasicSocketPairTest._testRecv      cr   c                D    V P                   P                  \        4       R # r   r   r`  rY  r   s   &r   testSendBasicSocketPairTest.testSend"      		sr   c                h    V P                   P                  R 4      pV P                  V\        4       R# rS  r	  rU  rX  rY  rL  s   & r   	_testSendBasicSocketPairTest._testSend%  $    hhmmD!c"r   r   Nr  )r   r   r   r   r   r[
  r^
  ra
  rx  r|  rm
  rr
  r   r   r   s   @r   rW
  rW
    s2     =('(## #r   rW
  c                   0  a a ] tR tRt oR tV 3R ltV 3R ltR tR tR t	R t
R	 tR
 t]P                  ! ]! ]R4      '       * ;'       g    ]! ]R4      '       * R4      ]P"                  ! ]P&                  R4      R 4       4       tR tR tR tRtVtV ;t# )PurePythonSocketPairTesti*  c                     \         P                  ! \         P                  4      #   \         d(    \         P                  ! \         P                  4      u # i ; ir   )r8   r|  r  r=   r   r   s   &r   r|  #PurePythonSocketPairTest.socketpair/  s@    	5$$V__55 	5$$V^^44	5s   #& /AAc                   < \        \        R 4      '       d0   \        P                  V n        \        P
                  \        n        MRV n        \        SV `  4        R# )r|  N)r7   r$  r8   r|  _orig_sp_fallback_socketpairr  r   r  s   &r   r   PurePythonSocketPairTest.setUp8  s?    7L))"--DM !' ; ;F !DMr   c                n   < \         SV `  4        V P                  e   V P                  \        n        R # R # r   )r  r   rz
  r8   r|  r  s   &r   r   !PurePythonSocketPairTest.tearDownC  s)    ==$ $F %r   c                h    V P                   P                  R 4      pV P                  V\        4       R# rS  rd
  rL  s   & r   	test_recv"PurePythonSocketPairTest.test_recvI  rf
  r   c                D    V P                   P                  \        4       R # r   rh
  r   s   &r   
_test_recv#PurePythonSocketPairTest._test_recvM  rj
  r   c                D    V P                   P                  \        4       R # r   rl
  r   s   &r   	test_send"PurePythonSocketPairTest.test_sendP  ro
  r   c                h    V P                   P                  R 4      pV P                  V\        4       R# rS  rq
  rL  s   & r   
_test_send#PurePythonSocketPairTest._test_sendS  rt
  r   c                    \         P                  ! \         P                  4      w  rVP                  4        VP                  4        R # r   )r8   r|  r   rD   r   r	  r  s   &  r   	test_ipv4"PurePythonSocketPairTest.test_ipv4W  s*    $$V^^4				r   c                    R # r   r   r   s   &r   
_test_ipv4#PurePythonSocketPairTest._test_ipv4\  r  r   rc  IPV6_V6ONLY IPV6_V6ONLY option not supportedr~  c                    \         P                  ! \         P                  4      w  rVP                  4        VP                  4        R # r   )r8   r|  r  rD   r
  s   &  r   	test_ipv6"PurePythonSocketPairTest.test_ipv6_  s,    
 $$V__5				r   c                    R # r   r   r   s   &r   
_test_ipv6#PurePythonSocketPairTest._test_ipv6h  r  r   c                  aa \         P                   P                  oR oVV3R lpR ;r# V\         P                   n        V P                  \        4      ;_uu_ 4        \         P                  ! 4       w  r#R R R 4       S\         P                   n        S'       d   SP                  4        V'       d   VP                  4        V'       d   VP                  4        R # R #   + '       g   i     Lq; i  S\         P                   n        S'       d   SP                  4        T'       d   TP                  4        T'       d   TP                  4        i i ; i)Nc                 *  < S! V 4      pSfo   \         P                   ! \         P                  \         P                  4      oSP                  R4        SP	                  VR,          4       SP                  R4       V#   \
        \        3 d     L&i ; i)NF:Nr  NT)r8   r   rc   r2  rP  BlockingIOErrorInterruptedError)r   rU  inject_sockorig_getsocknames   & r   inject_getsocketname[PurePythonSocketPairTest.test_injected_authentication_failure.<locals>.inject_getsocketnameo  s    '-H "$mmFNNF<N<NO''.''5 ''-O ()9: s   A> >BB)r8   r2  rI  r=   r|  rD   )r   r
  sock1sock2r
  r
  s   &   @@r   $test_injected_authentication_failure=PurePythonSocketPairTest.test_injected_authentication_failurek  s    !==44	 	(<FMM%""7++%002 , )9FMM%!!#  ,+ )9FMM%!!# s/   2C0 C4C0 C-	(C0 05E&E>Ec                    R # r   r   r   s   &r   %_test_injected_authentication_failure>PurePythonSocketPairTest._test_injected_authentication_failure  s    
 	r   )rz
  )r   r   r   r   r|  r   r   r
  r
  r
  r
  r
  r
  r#   r  r7   r$  r  r	   r  r
  r
  r
  r
  r   r   r  r  s   @@r   rv
  rv
  *  s     
5	.##
 __.99 9 9 -8879 335RS T9
B r   rv
  c                   d  a  ] tR tRt o RR ltR tR tR t]P                  ]
P                  ! ]RJ R4      R 4       4       t]P                  ! ]4      t]
P                  ! ]! ]R	4      R
4      ]P$                  ! ^^^4      R 4       4       tR tR tR tR tR tR tR tR tR tR tR tRtV t R# )NonBlockingTCPTestsi  c                f    \         P                  ! 4       V n        \        P	                  WR 7       R# r  )r   r   eventr   r   r  s   &&r   r   NonBlockingTCPTests.__init__  s!    __&
&&t&Cr   c                   V P                  V P                  P                  4       V4       VR 8g  pV P                  VP                  4       V4       \        ep   VRJ p\        P                  ! V\        P
                  \        P                  4      pV P                  \        V\        P                  ,          4      '       * V4       R# R# )        N)	rX  r   r  getblockingr6   F_GETFLrO  
O_NONBLOCKbool)r   r  rp   blockingfd_blockingflags   &&&   r   assert_sock_timeout'NonBlockingTCPTests.assert_sock_timeout  s    --/9sN))+X6 #d?K;;tU]]BMMBDdR]]&:!;;[I r   c                   V P                   P                  R 4       V P                  V P                   R4       V P                   P                  R4       V P                  V P                   R4       V P                   P                  R4       V P                  V P                   R4       V P                   P                  ^ 4       V P                  V P                   ^ 4       V P                   P                  ^
4       V P                  V P                   ^
4       V P                   P                  ^ 4       V P                  V P                   ^ 4       R# )TNFr
  )r   r2  r
  rC  r   s   &r   testSetBlocking#NonBlockingTCPTests.testSetBlocking  s    		d#  D1		e$  C0		T"  D1		Q  A.		R   B/		Q  A.r   c                    R # r   r   r   s   &r   _testSetBlocking$NonBlockingTCPTests._testSetBlocking  r  r   Nr  c                   ^ RI pVP                  VP                  8  d   V P                  R4       V P                  P                  R4       V P                  V P                  P                  4       R4       V P                  P                  VP                  ^,           4       V P                  V P                  P                  4       4       R# )r   Nzneeds UINT_MAX < ULONG_MAXFr
  )	r  r  r  r   r   r2  rX  r  r  r  s   & r   testSetBlocking_overflow,NonBlockingTCPTests.testSetBlocking_overflow  s     	!4!44MM67		e$--/5		i00145$))..01r   r1  ztest needs socket.SOCK_NONBLOCKc                   V P                   P                  4        \        P                  ! \        P                  \        P                  \        P
                  ,          4      V n         V P                  V P                   ^ 4       R# r0  )r   rD   r8   r   rc   r1  r
  r   s   &r   testInitNonBlocking'NonBlockingTCPTests.testInitNonBlocking  sQ    
 			MM&.."("4"4v7K7K"KM	  A.r   c                    R # r   r   r   s   &r   _testInitNonBlocking(NonBlockingTCPTests._testInitNonBlocking  r  r   c                H   \        R 4      ;_uu_ 4        V P                  P                  ^
4       V P                  P                  4       w  rV P	                  VP
                  4       V P                  VP                  4       4       R R R 4       R #   + '       g   i     R # ; ir   )rr   r   rC  rE  r   rD   r  r  rl  s   &  r   testInheritFlagsBlocking,NonBlockingTCPTests.testInheritFlagsBlocking  si     &d++II  $))+JDOODJJ'doo/0	 ,+++s   A2BB!	c                \    V P                   P                  \        V P                  34       R # r   r	  rP  r1  r   r   s   &r   _testInheritFlagsBlocking-NonBlockingTCPTests._testInheritFlagsBlocking      $		*+r   c                N   R p\        V4      ;_uu_ 4        V P                  P                  ^
4       V P                  P                  4       w  r#V P	                  VP
                  4       V P                  VP                  4       V4       RRR4       R#   + '       g   i     R# ; i)g      4@N)rr   r   rC  rE  r   rD   rX  r  )r   default_timeoutrF  rm  s   &   r   testInheritFlagsTimeout+NonBlockingTCPTests.testInheritFlagsTimeout  sp     %o66II  $))+JDOODJJ'T__.@	 7666s   A3BB$	c                \    V P                   P                  \        V P                  34       R # r   r
  r   s   &r   _testInheritFlagsTimeout,NonBlockingTCPTests._testInheritFlagsTimeout  r
  r   c                   V P                   P                  R 4       \        P                  ! 4       pV P	                  \
        4      ;_uu_ 4        V P                   P                  4       w  r#RRR4       \        P                  ! 4       V,
          pV P                  VR4       V P                  P                  4        \        P                  ! V P                   .. . \        P                  4      w  rVpV P                   V9  d   V P                  R4       V P                   P                  4       w  r#V P                  VP                  4       V P!                  VP#                  4       4       R#   + '       g   i     EL; i)FN      ?z'Error trying to do accept after select.)r   r2  rL  	monotonicrI  r
  rE  r  r
  r   r  r   LONG_TIMEOUTrB  r   rD   r  r  )r   
start_timerF  rm  dtr  rb  r  s   &       r   
testAcceptNonBlockingTCPTests.testAccept  s    		e$ ^^%
//))+JD 0^^
*C 

!==$))b"g>R>RSS99D II?@ YY%%'


#$//+, 0//s   E**E;	c                    V P                   P                  4        V P                  P                  \        V P
                  34       R # r   )r
  r   r	  rP  r1  r   r   s   &r   _testAcceptNonBlockingTCPTests._testAccept  s-     	

$		*+r   c                d   V P                   P                  4       w  rV P                  VP                  4       VP	                  R 4       V P                  \        4      ;_uu_ 4        VP                  \        \        4      4      pRRR4       V P                  P                  4        \        P                  ! V.. . \        P                  4      w  rEpW9  d   V P                  R4       VP                  \        \        4      4      pV P!                  V\        4       R#   + '       g   i     L; i)FNz0Error during select call to non-blocking socket.)r   rE  r   rD   r2  rI  r
  rU  r  rY  r
  r   r  r   r
  rB  rX  )r   rF  rm  rZ  r  rb  r  s   &      r   rx  NonBlockingTCPTests.testRecv  s    YY%%'


# //))CH%C 0 	

!==$R9M9MNSIIHI iiC!c" 0/s   &DD/	c                    V P                   P                  \        V P                  34       V P                  P                  4        V P                   P                  \        4       R # r   )r	  rP  r1  r   r
  r   r  rY  r   s   &r   r|  NonBlockingTCPTests._testRecv*  sA    $		*+ 	

 	r   c                <   \         e   \         P                  ^,           pMRpV P                  P                  4       w  r#V P	                  VP
                  4        VP                  V4       TP                  \        \        4      4      pR #   \         d     R # i ; iNr  )r  r  r   rE  r   rD   rC  r  rU  r  rY  )r   large_timeoutrF  rm  rZ  s   &    r   testLargeTimeout$NonBlockingTCPTests.testLargeTimeout4  s      %--1M&M YY%%'


#	OOM*
 iiC!	  	 	s   B BBc                :   \         e   \         P                  ^,           pMRpV P                  P                  \        V P
                  34        V P                  P                  V4       T P                  P                  \        4       R #   \         d     R # i ; ir
  )
r  r  r	  rP  r1  r   rC  r  r  rY  )r   r
  s   & r   _testLargeTimeout%NonBlockingTCPTests._testLargeTimeoutH  sw     %--1M&M$		*+	HH. 	  		s   B BB)r
  r   r  )!r   r   r   r   r   r
  r
  r
  r   r   r#   r  r  r
  _testSetBlocking_overflowr  r7   r8   requires_linux_versionr
  r
  r
  r
  r
  r
  r
  r
  rx  r|  r
  r
  r   r   r   s   @r   r
  r
    s     DJ"/( __Y$&(<=
2 > 
2 !( 4 45E F9:<##Aq"-/ .</1,	A,-,,#("( r   r
  c                      a  ] tR tRt o RtR"tRtRtRtRt	]
tRt]
tR#R ltR	 tR
 tR tR tR tR tR tR tR tR tR tR tR tR tR tR tR tR t R t!R t"R t#R t$R t%R  t&R!t'V t(R# )$FileObjectClassTestCaseiV  aS  Unit tests for the object returned by socket.makefile()

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

self.write_file is the io object returned by makefile() on the
server connection.  You can write to this file to send output
to the client.
r   strictNr4   r  c                2    \         P                  WR 7       R# r  rt  r  s   &&r   r    FileObjectClassTestCase.__init__l  rv  r   c                v   \        ^4       Uu. uF  p\        P                  ! 4       NK  	  upw  V n        V n        V n        V n        \        P                  V 4       V P                  P                  V P                  V P                  V P                  V P                  V P                  R7      V n        R# u upi )r  r  errorsnewlineN)r  r   r   evt1evt2serv_finishedcli_finishedrf  r   rk  r  	read_moder   r  r
  r
  	read_file)r   r   s   & r   r   FileObjectClassTestCase.setUpo  s    ',QxG1'/!IOOxG1C	49d0$2C!!$'//NNDLL}}[[ll	 0 $G1s   B6c                    V P                   P                  4        V P                  P                  4        V P	                  V P                  P
                  4       R V n        \        P                  V 4       R # r   )r
  r   r
  rD   r!  closedrf  r   r   s   &r   r    FileObjectClassTestCase.tearDowny  sO     --.$$T*r   c                    \         P                  V 4       V P                  P                  V P                  V P
                  V P                  V P                  V P                  R 7      V n	        R# )r
  N)
rf  r   rr  r  
write_moder   r  r
  r
  
write_filer   s   &r   r   #FileObjectClassTestCase.clientSetUp  sM    ''-..11OOT\\}}[[ll	 2 $r   c                    V P                   P                  4        V P                  P                  4        V P	                  V P                  P
                  4       R V n        \        P                  V 4       R # r   )r
  r   r  rD   r!  r  rf  r   r   s   &r   r   &FileObjectClassTestCase.clientTearDown  sO    ../**40r   c                   V P                   P                  ^4       V P                  P                  ^4       V P	                  \
        V P                  P                  ^4       V P	                  \        4      ;_uu_ 4       pV P                  P                  ^4       RRR4       V P                  R\        XP                  4      4       R#   + '       g   i     L7; i)r   Nz!cannot read from timed out object)
rk  rC  r
  r  rI  r  r=   r3  r  rT  )r   ctxs   & r   testReadAfterTimeout,FileObjectClassTestCase.testReadAfterTimeout  s     	  #A,(;(;Q?w''3NN" (93s}};MN ('s   ?C

C	c                    V P                   P                  V P                  R ,          4       V P                   P                  4        V P                  P                  4        R# ):r   r  NN)r  rb  	write_msgflushr
  r   r   s   &r   _testReadAfterTimeout-FileObjectClassTestCase._testReadAfterTimeout  s?    dnnS12!r   c                    V P                   P                  \        V P                  4      ^,
          4      pV P                   P                  ^4      pW,           pV P	                  W0P                  4       R# )r  N)r
  r  r  read_msgrX  )r   	first_seg
second_segrZ  s   &   r   testSmallRead%FileObjectClassTestCase.testSmallRead  sR    NN''DMM(:1(<=	^^((+
$mm,r   c                    V P                   P                  V P                  4       V P                   P                  4        R # r   r  rb  r  r  r   s   &r   _testSmallRead&FileObjectClassTestCase._testSmallRead  (    dnn-r   c                p    V P                   P                  4       pV P                  WP                  4       R # r   )r
  r  rX  r  rL  s   & r   testFullRead$FileObjectClassTestCase.testFullRead  s&    nn!!#mm,r   c                    V P                   P                  V P                  4       V P                   P                  4        R # r   )r  rb  r  rD   r   s   &r   _testFullRead%FileObjectClassTestCase._testFullRead  r  r   c                    \        V P                  4      ! 4       p V P                  P                  ^4      pV'       g   M
W,          pK/  V P	                  WP                  4       R# r  )r  r  r
  r  rX  )r   r)  chars   &  r   testUnbufferedRead*FileObjectClassTestCase.testUnbufferedRead  sI    4==!#>>&&q)DKCmm,r   c                    V P                   P                  V P                  4       V P                   P                  4        R # r   r  r   s   &r   _testUnbufferedRead+FileObjectClassTestCase._testUnbufferedRead  r  r   c                p    V P                   P                  4       pV P                  WP                  4       R # r   )r
  readlinerX  r  r   lines   & r   testReadline$FileObjectClassTestCase.testReadline  s&    ~~&&(}}-r   c                    V P                   P                  V P                  4       V P                   P                  4        R # r   r  r   s   &r   _testReadline%FileObjectClassTestCase._testReadline  r  r   c                    V P                   P                  4        V P                  P                  4       pV P	                  WP
                  4       R # r   )rk  rD   r
  r  rX  r  rL  s   & r   testCloseAfterMakefile.FileObjectClassTestCase.testCloseAfterMakefile  s6    nn!!#mm,r   c                    V P                   P                  V P                  4       V P                   P                  4        R # r   r  r   s   &r   _testCloseAfterMakefile/FileObjectClassTestCase._testCloseAfterMakefile  r  r   c                    V P                   P                  4        V P                  P                  \	        \
        4      4      p\        V P                  \        4      '       d   VP                  4       pV P                  WP                  4       R # r   )r
  rD   rk  rU  r  rY  r  r  r  decoderX  rL  s   & r   testMakefileAfterMakefileClose6FileObjectClassTestCase.testMakefileAfterMakefileClose  sX    mm  S*dmmS))**,Cmm,r   c                    V P                   P                  V P                  4       V P                   P                  4        R # r   r  r   s   &r   _testMakefileAfterMakefileClose7FileObjectClassTestCase._testMakefileAfterMakefileClose  r  r   c                Z    V P                  V P                  P                  '       * 4       R # r   )r!  r
  r  r   s   &r   testClosedAttr&FileObjectClassTestCase.testClosedAttr  s    DNN1112r   c                Z    V P                  V P                  P                  '       * 4       R # r   )r!  r  r  r   s   &r   _testClosedAttr'FileObjectClassTestCase._testClosedAttr  s    DOO2223r   c                    V P                  V P                  P                  V P                  4       V P                  V P                  P                  V P
                  P                  4       4       R # r   )rX  r
  r  r
  r
  rk  r4  r   s   &r   testAttributes&FileObjectClassTestCase.testAttributes  sG    ,,dnn=,,dmm.B.B.DEr   c                    V P                  V P                  P                  V P                  4       V P                  V P                  P                  V P
                  P                  4       4       R # r   )rX  r  r  r  r
  rr  r4  r   s   &r   _testAttributes'FileObjectClassTestCase._testAttributes  sG    --t?--t~~/D/D/FGr   c                   V P                   P                  4        V P                  \        V P                   P                  4       V P
                  P                  4        V P                  \        V P
                  P                  4       R # r   )r
  rD   rI  r  r4  rk  r=   r2  r   s   &r   testRealClose%FileObjectClassTestCase.testRealClose  sV    *dnn&;&;<'4==#<#<=r   c                    R # r   r   r   s   &r   _testRealClose&FileObjectClassTestCase._testRealClose  r  r   )r
  r
  r
  r
  r
  r  r  r  ))r   r   r   r   r   r   r  r
  r
  r
  rY  r  r  r  r   r   r   r   r   r  r  r  r  r  r!  r%  r(  r.  r1  r4  r7  r;  r>  rA  rD  rG  rJ  rM  rP  r   r   r   s   @r   r
  r
  V  s     	 GHFGIHJIB$+$1
O"
- -
 - .
 - - 34FH> r   r
  c                      a  ] tR tRt o Rt^ tR tR tR tR t	]
P                  ! ]! ]R4      R4      R	 4       tR
 tR tR tR tR tRtV tR# )!UnbufferedFileObjectClassTestCasei  as  Repeat the tests from FileObjectClassTestCase with bufsize==0.

In this case (and in this case only), it should be possible to
create a file object, read a line from it, create another file
object, read another line from it, without loss of data in the
first file object's buffer.  Note that http.client relies on this
when reading multiple requests from the same socket.c                <   V P                   P                  4       pV P                  VR V P                  ,           4       V P                  P                  R^ 4      V n         V P                   P                  4       pV P                  VRV P                  ,           4       R# )   A. r4      B. N)r
  r+  rX  r  rk  r  r,  s   & r   testUnbufferedReadline8UnbufferedFileObjectClassTestCase.testUnbufferedReadline  sp    ~~&&(v67//a8~~&&(v67r   c                    V P                   P                  R V P                  ,           4       V P                   P                  RV P                  ,           4       V P                   P                  4        R# )rU  rV  Nr  r   s   &r   _testUnbufferedReadline9UnbufferedFileObjectClassTestCase._testUnbufferedReadline  sH    ft~~56ft~~56r   c                0   V P                   P                  4        V P                   P                  R 4      pV P                  WP                  4       V P
                  P                  4        V P                  \        V P                   P                  R 4       R# rS  )rk  rD   rU  rX  r  r
  rI  r=   rL  s   & r   testMakefileClose3UnbufferedFileObjectClassTestCase.testMakefileClose  sd    mm  &mm,'4==#5#5t<r   c                    V P                   P                  V P                  4       V P                   P                  4        R # r   r  r   s   &r   _testMakefileClose4UnbufferedFileObjectClassTestCase._testMakefileClose  r  r   r  r  c                    \         P                  ! V P                  4      pV P                  P	                  4        \         P                  ! V P                  4      pV P                  V^,
          V4       R# r  )rz   r  rk  r
  rD   rX  )r   refcount_beforerefcount_afters   &  r   testMakefileCloseSocketDestroy@UnbufferedFileObjectClassTestCase.testMakefileCloseSocketDestroy  sM     //$--871,n=r   c                    R # r   r   r   s   &r   _testMakefileCloseSocketDestroyAUnbufferedFileObjectClassTestCase._testMakefileCloseSocketDestroy'  r  r   c                   V P                   P                  R 4       V P                  V P                  P	                  \        ^
4      4      R4       V P                  V P                  P                  \        V P                  4      ^,
          4      R4       V P                  P                  4        V P                  P                  R4       V P                  P                  \        V P                  4      ^,
          4      pVfL   \        P                  ! R4       V P                  P                  \        V P                  4      ^,
          4      p\        ^
4      pV P                  P	                  V4      pV P                  V^4       WRV ,           pV P                  W@P                  4       V P                  V P                  P	                  \        ^4      4      R4       V P                  V P                  P                  ^4      R4       R# )FNr
  g      ?)rk  r2  rX  r
  readintorL  r  r  r  r
  r   r
  r   rL  rM  )r   r  r)  rU  rZ  s   &    r   testSmallReadNonBlocking:UnbufferedFileObjectClassTestCase.testSmallReadNonBlocking.  se   !!%(002?F,,S-?!-CDdK				sNN''DMM(:Q(>?	JJsO++C,>,BCImNN##C(Abq'!mm,002?F,,Q/6r   c                $   V P                   P                  R 4       V P                  P                  V P                  4       V P                  P                  4        V P                  P                  4        V P                  P                  R4       R# )r
        @N)	r
  r   r  rb  r  r  r
  r   r
  r   s   &r   _testSmallReadNonBlocking;UnbufferedFileObjectClassTestCase._testSmallReadNonBlockingA  s[    		sdnn-		 	$r   c                    V P                   P                  R 4       V P                  '       d   V P                  V P                  4       R# R# )ro  N)r
  r   serv_skippedr   r   s   &r   testWriteNonBlocking6UnbufferedFileObjectClassTestCase.testWriteNonBlockingJ  s;    s# MM$++, r   c                p   R V n         V P                  P                  R4       R\        P                  ,          p^
pV P
                  P                  V4      pV P                  V^ 4       \        V4       F7  pV P
                  P                  V4      pVf    R # V P                  V^ 4       K9  	  RV n         R # )NFr  z$failed to saturate the socket buffer)	rs  rr  r2  r   r  r  rb  r  r  )r   BIGLIMITrU  r   s   &    r   _testWriteNonBlocking7UnbufferedFileObjectClassTestCase._testWriteNonBlockingQ  s     ""5)W***OO!!#&1a uA%%c*Ayq!$  !GDr   )r
  rs  N)r   r   r   r   r   r   rW  rZ  r]  r`  r#   r  r7   rz   re  rh  rl  rp  rt  ry  r   r   r   s   @r   rS  rS    sp     < G8 
=  m479>9>7&%-G Gr   rS  c                       ] tR tRt^tRtR# )#LineBufferedFileObjectClassTestCaseig  r   Nr   r   r   r   r   r   r   r   r   r|  r|  g      Gr   r|  c                       ] tR tRt^tRtR# )$SmallBufferedFileObjectClassTestCaseil  r   Nr}  r   r   r   r  r  l  r~  r   r  c                   L    ] tR tRtRtRt]P                  R4      tRt	]t
RtRtR# )	"UnicodeReadFileObjectClassTestCaseiq  =Tests for socket.makefile() in text mode (rather than binary)r>   r   r  rP  r   Nr   r   r   r   r   r
  rY  r:  r  r  r  r
  r   r   r   r   r  r  q  s'    GIzz'"HJIGr   r  c                   L    ] tR tRtRtRt]tRt]P                  R4      t
RtRtR# )	#UnicodeWriteFileObjectClassTestCasei{  r  r4   r  r   rP  r   N)r   r   r   r   r   r
  rY  r  r  r:  r  r
  r   r   r   r   r  r  {  s'    GIHJ

7#IGr   r  c                   j    ] tR tRtRtRt]P                  R4      tRt	]P                  R4      t
RtRtR# )	'UnicodeReadWriteFileObjectClassTestCasei  r  r>   r   r  rP  r   Nr  r   r   r   r  r    s0    GIzz'"HJ

7#IGr   r  c                   *   a  ] tR tRt o RtR tRtV tR# )NetworkConnectionTesti  zProve network connection.c                ~    \         P                  ! \        V P                  34      V n        V P                  V n        R # r   )r8   create_connectionr1  r   r	  rr  r   s   &r   r   !NetworkConnectionTest.clientSetUp  s*     ++T499,=>r   )r	  rr  N)r   r   r   r   r   r   r   r   r   s   @r   r  r    s     #" "r   r  c                       ] tR tRtRtRtR# )BasicTCPTest2i  zLTests that NetworkConnection does not break existing TCP functionality.
    r   N)r   r   r   r   r   r   r   r   r   r  r    s    r   r  c                      a  ] tR tRt o  ! R R]P                  4      t]P                  R 4       t]	P                  R 4       t]	P                  R 4       tR tR tR	tV tR
# )NetworkConnectionNoServeri  c                   &   a  ] tR tRt o R tRtV tR# )$NetworkConnectionNoServer.MockSocketi  c                    \        R 4      h)z	timed out)r  r   s   &*r   rP  ,NetworkConnectionNoServer.MockSocket.connect  s    {++r   r   N)r   r   r   r   rP  r   r   r   s   @r   
MockSocketr    s     	, 	,r   r  c              #     "   \         P                   pV P                  \         n          Rx  V\         n         R#   T\         n         i ; i5i)z*Return a socket which times out on connectN)r8   r  )r   
old_sockets   & r   mocked_socket_module.NetworkConnectionNoServer.mocked_socket_module  s1      ]]
	'&FMJFMs   &A
: A
AA
c                   \         P                  ! 4       p\        P                  ! \        P                  \        P                  4      pV P                  VP                  4       V P                  \        4      ;_uu_ 4       pVP                  \        V34       R R R 4       V P                  XP                  P                  \        P                  4       R #   + '       g   i     LF; ir   )r	   rX  r8   r   rc   r   rD   rI  r=   rP  r1  rX  rT  r  ECONNREFUSED)r   r   r	  rV  s   &   r   test_connect&NetworkConnectionNoServer.test_connect  s    --/mmFNNF,>,>?		"w''2KKt% (++U-?-?@ ('s   CC'	c                P   \         P                  ! 4       pV P                  \        4      ;_uu_ 4       p\        P
                  ! \        V34       R R R 4       \         P                  ! 4       pV P                  XP                  P                  V4       R #   + '       g   i     LM; ir   )r	   rX  rI  r=   r8   r  r1  get_socket_conn_refused_errsr3  rT  r  )r   r   rV  expected_errnoss   &   r   test_create_connection0NetworkConnectionNoServer.test_create_connection  sm     --/w''2$$dD\2 (" (DDFbll((/:% ('s   BB%	c                   \         P                  ! 4       p \        P                  ! \        V3R R7       V P                  R4       V P                  X\        4       VP                   F  pV P                  V\        4       K  	  \        P                  ! RV^ \        P                  4      pV P                  \        V4      \        VP                  4      4       R#   \         d   pTp Rp?LRp?ii ; i)T)
all_errorszexpected connection to failNr  )r	   rX  r8   r  r1  rB  ExceptionGroupr+  
exceptionsr=   r  rc   rX  r  )r   r   r   eg	addressess   &    r   !test_create_connection_all_errors;NetworkConnectionNoServer.test_create_connection_all_errors  s    --/	5$$dD\dC II34b.1A!!!W-  &&q&"4"46	 	YR]]);<  	B	s   C C3'C..C3c                   V P                  4       ;_uu_ 4         \        P                  ! \        R 34       V P	                  R4       RRR4       R#   \
         d     L\         dA   p\        P                  '       g    TP                  \        P                  8w  d   h  Rp?L\Rp?ii ; i  + '       g   i     R# ; i)r   zTimeoutError not raisedN)r  r8   r  r1  rB  r  r=   r	   r  r  EAFNOSUPPORTr  s   & r   test_create_connection_timeout8NetworkConnectionNoServer.test_create_connection_timeout  s     &&((5(($6 		34 )(     ---e>P>P1P 2Q )((sE   B,AB,B)B,B)(B))6B$B,$B))B,,B=	r   N)r   r   r   r   r8   r  r-   contextmanagerr  r	   skip_if_tcp_blackholer  r  r  r  r   r   r   s   @r   r  r    st     ,V]] , ' ' ((A )A ((; );0=$5 5r   r  c                   |   a  ] tR tRt o RtRR ltR tR tR t]t	R t
]tR t]tR	 t]tR
 t]tR t]tR tRtV tR# )NetworkConnectionAttributesTesti  Nc                \    \         P                  WR 7       \        P                  V 4       R# r  r  r  s   &&r   r   (NetworkConnectionAttributesTest.__init__  r  r   c                :    \         P                  ! 4       V n        R # r   )r	   rX  source_portr   s   &r   r   +NetworkConnectionAttributesTest.clientSetUp  s    (99;r   c                    V P                   e   V P                   P                  4        R V n         \        P                  V 4       R # r   r  r   s   &r   r   .NetworkConnectionAttributesTest.clientTearDown  s/    88HHNN%%d+r   c                ^    V P                   P                  4       w  rVP                  4        R # r   )r   rE  rD   rl  s   &  r   _justAccept+NetworkConnectionAttributesTest._justAccept  s    YY%%'


r   c                   \         P                  ! \        V P                  3\        P
                  R 7      V n        V P                  V P                  P                  4       V P                  V P                  P                  ^4       R# r   )r8   r  r1  r   r   rD  r	  r   rD   rX  r;  r   s   &r   _testFamily+NetworkConnectionAttributesTest._testFamily  sT    ++T499,=$+$<$<>'!,r   c                V   \         P                  ! \        V P                  3\        P
                  R V P                  3R7      V n        V P                  V P                  P                  4       V P                  V P                  P                  4       ^,          V P                  4       R# )rP  )rp   source_addressN)r8   r  r1  r   r   rD  r  r	  r   rD   rX  r2  r   s   &r   _testSourceAddress2NetworkConnectionAttributesTest._testSourceAddress  su    ++T499,=$+$<$<,.0@0@+AC 	'--/2D4D4DEr   c                   V P                  \        P                  ! 4       R J 4       \        P                  ! ^*4        \        P                  ! \
        V P                  34      V n        V P                  V P                  P                  4       \        P                  ! R 4       V P                  V P                  P                  4       ^*4       R #   \        P                  ! R 4       i ; ir   r!  r8   rn   ro   r  r1  r   r	  r   rD   rX  r  r   s   &r   _testTimeoutDefault3NetworkConnectionAttributesTest._testTimeoutDefault  s    002d:;  $	+//tyy0ABDHOODHHNN+$$T*,,.3 $$T*s   AC C(c                   V P                  \        P                  ! 4       R J 4       \        P                  ! ^4        \        P                  ! \
        V P                  3R R7      V n        V P                  V P                  P                  4       \        P                  ! R 4       V P                  V P                  P                  4       R 4       R #   \        P                  ! R 4       i ; i)Nr  r  r   s   &r   _testTimeoutNone0NetworkConnectionAttributesTest._testTimeoutNone!  s    002d:;  $	+//tyy0A4PDHOODHHNN+$$T*,,.5 $$T*s   AC C*c                    \         P                  ! \        V P                  3^R7      V n        V P                  V P                  P                  4       ^4       R# )   r  N)r8   r  r1  r   r	  rX  r  r   s   &r   _testTimeoutValueNamed6NetworkConnectionAttributesTest._testTimeoutValueNamed-  s<    ++T499,=rJ,,.3r   c                    \         P                  ! \        V P                  3^4      V n        V P                  V P                  P                  4       V P                  V P                  P                  4       ^4       R# )r  N)	r8   r  r1  r   r	  r   rD   rX  r  r   s   &r   _testTimeoutValueNonamed8NetworkConnectionAttributesTest._testTimeoutValueNonamed2  sP    ++T499,=rB',,.3r   )r	  r  r  )r   r   r   r   r	  r   r   r   r  
testFamilyr  testSourceAddressr  testTimeoutDefaultr  testTimeoutNoner  testTimeoutValueNamedr  testTimeoutValueNonamedr  r   r   r   s   @r   r  r    sp     
C&<, J- $F %	4 "O	6 (4 *4 4r   r  c                   L   a  ] tR tRt o R
R ltR tR tR t]tR t	R t
RtV tR	# )NetworkConnectionBehaviourTesti8  c                \    \         P                  WR 7       \        P                  V 4       R# r  r  r  s   &&r   r   'NetworkConnectionBehaviourTest.__init__:  r  r   c                    R # r   r   r   s   &r   r   *NetworkConnectionBehaviourTest.clientSetUp>  r  r   c                r    V P                   P                  4        R V n         \        P                  V 4       R # r   r  r   s   &r   r   -NetworkConnectionBehaviourTest.clientTearDownA  r  r   c                    V P                   P                  4       w  rV P                  VP                  4       \        P
                  ! ^4       VP                  R4       R# )r     done!N)r   rE  r   rD   rL  rM  r`  rl  s   &  r   testInsideTimeout0NetworkConnectionBehaviourTest.testInsideTimeoutF  s=    YY%%'


#

1		(r   c                    \         P                  ! \        V P                  34      ;V n        pVP                  ^4      pV P                  VR4       R# )   r  N)r8   r  r1  r   r	  rU  rX  )r   r  r  s   &  r   _testInsideTimeout1NetworkConnectionBehaviourTest._testInsideTimeoutM  s?     22D$))3DEE4yy|x(r   c                   a \         P                  ! \        V P                  3^R7      ;V n        oV P                  \        V3R l4       R# )r   r  c                  &   < S P                  ^4      # )r  )rU  r  s   r   r   DNetworkConnectionBehaviourTest._testOutsideTimeout.<locals>.<lambda>T  s    		!r   N)r8   r  r1  r   r	  rI  r  r  s   &@r   _testOutsideTimeout2NetworkConnectionBehaviourTest._testOutsideTimeoutR  s6     22D$))3DaPP4,(<=r   r  Nr  )r   r   r   r   r   r   r   r  testOutsideTimeoutr  r  r   r   r   s   @r   r  r  8  s0     &,

 +)
> >r   r  c                   l   a  ] tR tRt o R tR t]P                  ! ]! ]	R4      R4      R 4       t
RtV tR# )	TCPTimeoutTestiW  c                B   a  V 3R  lpS P                  \        VR4       R# )c                  r   < SP                   P                  R 4       SP                   P                  4        R# )r
  N)r   rC  rE  r%   r  r   s   *,r   raise_timeout4TCPTimeoutTest.testTCPTimeout.<locals>.raise_timeoutZ  s%    II  %IIr   z*Error generating a timeout exception (TCP)NrI  r  r   r  s   f r   testTCPTimeoutTCPTimeoutTest.testTCPTimeoutY  s     	 	,J	Lr   c                2   R p V P                   P                  R4       V P                   P                  4       pT'       g   T P	                  R4       R# R#   \         d    T P	                  R4        L;\
         d    Rp LI T P	                  R4        L]; i)Fr
  z%caught timeout instead of error (TCP)Tz!caught unexpected exception (TCP)z3accept() returned success when we did not expect itN)r   rC  rE  r  rB  r=   r   okr&  s   &  r   testTimeoutZeroTCPTimeoutTest.testTimeoutZero`  s    	;II  %))""$C IIKL   	?II=> 	B	;II9:s   5A B4B=BBr  ztest needs signal.alarm()c           
     `  a V P                   P                  R 4        ! R R\        4      oV3R lp\        P                  ! \        P                  V4      p  \        P
                  ! ^4       V P                   P                  4       pV P                  R4       \        P
                  ! ^ 4       \        P                  ! \        P                  T4       R	#   \         d    T P                  R4        L[S d     Lc\         dD   pT P                  R\        T4      : RT: R\        P                  ! 4       : 24        R	p?LR	p?ii ; i  \        P
                  ! ^ 4       i ; i  S d    T P                  R
4        Li ; i  \        P                  ! \        P                  T4       i ; i)ro  c                       ] tR tRtRtR# )4TCPTimeoutTest.testInterruptedTimeout.<locals>.Alarmiu  r   Nr	  r   r   r   Alarmr  u  s    r   r  c                    < Shr   r   )r  r  r  s   &&r   alarm_handler<TCPTimeoutTest.testInterruptedTimeout.<locals>.alarm_handlerw  s    Kr   znothing caughtzcaught timeout instead of Alarmz)caught other exception instead of Alarm: (z):
Nzgot Alarm in wrong place)r   rC  r  r  r  r  rE  rB  r  r   r  	traceback
format_exc)r   r  r  r&  r   r  s   &    @r   testInterruptedTimeout%TCPTimeoutTest.testInterruptedTimeoutn  s/    			S!	I 		MM&..-@		5 Qii&&( 		*+Q
 MM&..)4!   =		;<   @		7Ay';';'=? @ @@ Q 	2II01	2 MM&..)4s~   0C 	E E( E
3E 5E
:E
;E =E
E
9E E E

E E%%E( (F F FF 'F-r   N)r   r   r   r   r  r  r#   r  r7   r  r
  r   r   r   s   @r   r  r  W  s<     LM 146565r   r  c                   ,   a  ] tR tRt o R tR tRtV tR# )UDPTimeoutTesti  c                B   a  V 3R  lpS P                  \        VR4       R# )c                  t   < SP                   P                  R 4       SP                   P                  R4       R# r
  rT  Nr   rC  rU  r  s   *,r   r  4UDPTimeoutTest.testUDPTimeout.<locals>.raise_timeout  %    II  %IINN4 r   z*Error generating a timeout exception (UDP)Nr  r  s   f r   testUDPTimeoutUDPTimeoutTest.testUDPTimeout  s     	! 	,J	Lr   c                4   R p V P                   P                  R4       V P                   P                  R4      pT'       g   T P	                  R4       R# R#   \         d    T P	                  R4        L;\
         d    Rp LI T P	                  R4        L]; i)Fr
  rT  z%caught timeout instead of error (UDP)Tz!caught unexpected exception (UDP)1recv() returned success when we did not expect itNr   rC  rU  r  rB  r=   r  s   &  r   r  UDPTimeoutTest.testTimeoutZero  s    	;II  %))..&C IIIJ   	?II=> 	B	;II9:   6A B5B>BBr   N)r   r   r   r   r  r  r   r   r   s   @r   r  r    s     LK Kr   r  c                   ,   a  ] tR tRt o R tR tRtV tR# )UDPLITETimeoutTesti  c                B   a  V 3R  lpS P                  \        VR4       R# )c                  t   < SP                   P                  R 4       SP                   P                  R4       R# r  r  r  s   *,r   r  <UDPLITETimeoutTest.testUDPLITETimeout.<locals>.raise_timeout  r  r   z.Error generating a timeout exception (UDPLITE)Nr  r  s   f r   testUDPLITETimeout%UDPLITETimeoutTest.testUDPLITETimeout  s     	! 	,N	Pr   c                4   R p V P                   P                  R4       V P                   P                  R4      pT'       g   T P	                  R4       R# R#   \         d    T P	                  R4        L;\
         d    Rp LI T P	                  R4        L]; i)Fr
  rT  z)caught timeout instead of error (UDPLITE)Tz%caught unexpected exception (UDPLITE)r  Nr  r  s   &  r   r  "UDPLITETimeoutTest.testTimeoutZero  s    	?II  %))..&C IIIJ   	CIIAB 	B	?II=>r  r   N)r   r   r   r   r   r  r   r   r   s   @r   r  r    s     PK Kr   r  c                   ,   a  ] tR tRt o R tR tRtV tR# )TestExceptionsi  c                   V P                  \        \        4       V P                  \        P                  \        4       V P                  \        P
                  \        4       V P                  \        P                  \        4       V P                  \        P                  \        4       V P                  \        P                  \        4       R # r   )
assertIsSubclassr=   r  r8   rJ  rK  rp   assertIserrorr  r   s   &r   testExceptionTree TestExceptions.testExceptionTree  sr    gy1fmmW5foow7fnng6fllG,fnnl3r   c                   \         P                   ! \         P                  \         P                  ^ 4      p\         P                   ! \         P                  \         P                  ^ VP                  4       4      pVP	                  4        V P                  VP                  4       V P                  \        4      ;_uu_ 4        VP                  R4       RRR4       R#   + '       g   i     R# ; i)r   FN)
r8   r   rc   r4  rD   r   r:  rI  r=   r2  )r   sock0r  s   &  r   test_setblocking_invalidfd)TestExceptions.test_setblocking_invalidfd  s     fnnf.@.@!D}}NNF..5<<>C$w''U# ('''s    CC-	r   N)r   r   r   r   r*  r.  r   r   r   s   @r   r%  r%    s     4
$ 
$r   r%  zLinux specific testc                   H   a  ] tR tRt o ^ltR tR tR tR tR t	R t
RtV tR	# )
TestLinuxAbstractNamespacei  c                   R p\         P                   ! \         P                  \         P                  4      ;_uu_ 4       pVP                  V4       VP	                  4        \         P                   ! \         P                  \         P                  4      ;_uu_ 4       pVP                  VP                  4       4       VP                  4       ^ ,          ;_uu_ 4       pV P                  VP                  4       V4       V P                  VP                  4       V4       RRR4       RRR4       RRR4       R#   + '       g   i     L"; i  + '       g   i     L-; i  + '       g   i     R# ; i)s    python-test-hello N)
r8   r  rc   r   r   rP  r2  rE  rX  ru  )r   r  s1rY  s3s   &    r   testLinuxAbstractNamespace5TestLinuxAbstractNamespace.testLinuxAbstractNamespace  s    2]]6>>6+=+=>>"GGGIIKv~~v/A/ABBb

2>>+,YY[^^r$$R^^%5w?$$R^^%5w? $ C ?>
 $^ CB ?>>s=   AE?E	AD5E	#E5E E	EEE,	c                Z   R RV P                   ^,
          ,          ,           p\        P                  ! \        P                  \        P                  4      ;_uu_ 4       pVP	                  V4       V P                  VP                  4       V4       RRR4       R#   + '       g   i     R# ; i)r     hN)UNIX_PATH_MAXr8   r  rc   r   rX  r2  r   r  rG   s   &  r   testMaxName&TestLinuxAbstractNamespace.testMaxName  si    DD$6$6$:;;]]6>>6+=+=>>!FF7OQ]]_g6 ?>>>s   2BB*	c                ,   R RV P                   ,          ,           p\        P                  ! \        P                  \        P                  4      ;_uu_ 4       pV P	                  \
        VP                  V4       RRR4       R#   + '       g   i     R# ; i)r0  hN)r9  r8   r  rc   rI  r=   r   r:  s   &  r   testNameOverflow+TestLinuxAbstractNamespace.testNameOverflow  sY    3!3!333]]6>>6+=+=>>!gqvvw7 ?>>>s   "BB	c                   \         P                   ! \         P                  \         P                  4      p VP                  R 4       V P	                  VP                  4       R4       VP                  4        R#   TP                  4        i ; i)z python test     python test N)r8   r  rc   r   rX  r2  rD   r6  s   & r   testStrName&TestLinuxAbstractNamespace.testStrName  sX    MM&..&*<*<=	FF+,Q]]_.GHGGIAGGIs   1A8 8B
c                *   \         P                   ! \         P                  \         P                  4      ;_uu_ 4       pVP                  \	        R 4      4       V P                  VP                  4       R 4       RRR4       R#   + '       g   i     R# ; i)rB  N)r8   r  rc   r   rL  rX  r2  r6  s   & r   testBytearrayName,TestLinuxAbstractNamespace.testBytearrayName  sW    ]]6>>6+=+=>>!FF9678Q]]_.GH ?>>>s   ;BB	c           	        R p\         P                   ! \         P                  \         P                  4      ;_uu_ 4       pVP                  R4       V P	                  VP                  4       V4       \         P                   ! \         P                  \         P                  4      ;_uu_ 4       pVP                  R4       V P	                  VP                  4       V4       V P                  VP                  4       VP                  4       4       RRR4       RRR4       R#   + '       g   i     L; i  + '       g   i     R# ; i)s   ^ [0-9a-f]{5}rP  N)r8   r  rc   r   r*  r2  r  )r   abstract_addressr3  rY  s   &   r   testAutobind'TestLinuxAbstractNamespace.testAutobind  s     -]]6>>6+=+=>>"GGBKR^^-/?@v~~v/A/ABBb  !13CD##BNN$4bnn6FG C	 ?> CB	 ?>>s%   A-D0+A D	D0D-(D00E	r   N)r   r   r   r   r9  r5  r;  r?  rC  rF  rJ  r   r   r   s   @r   r1  r1    s3      M	@78
IH Hr   r1  ztest needs socket.AF_UNIXc                      a  ] tR tRt o R tR tR tR tR tR t	R t
R	 tR
 t]P                  ! ]P                   R9   R4      R 4       tRtV tR# )TestUnixDomaini  c                v    \         P                   ! \         P                  \         P                  4      V n        R # r   )r8   r  rc   r  r   s   &r   r   TestUnixDomain.setUp  s    MM&..&2D2DE	r   c                :    V P                   P                  4        R # r   )r  rD   r   s   &r   r   TestUnixDomain.tearDown  s    		r   c                     \         P                  ! V4      #   \         d9    T P                  R P	                  T\
        P                  ! 4       4      4        R# i ; i)zBPathname {0!a} cannot be represented in file system encoding {1!r}N)rO  fsencoder  r   r  rz   getfilesystemencodingr   r  s   &&r   encodedTestUnixDomain.encoded  sN    	8;;t$$! 	8MM((.#335)78	8s    ?AAc                     \         P                  ! W4       R#   \         d=   p\        T4      R 8X  d'   T P	                  RP                  T4      4        Rp?R# h Rp?ii ; i)zAF_UNIX path too longz6Pathname {0!a} is too long to serve as an AF_UNIX pathN)r	   r  r=   r  r   r  )r   r  r  r   s   &&& r   r   TestUnixDomain.bind#  sT    	**46 	1v00LVD\# # 	s    A!0AAA!c                Z    V P                  V P                  P                  4       R4       R# )rP  NrP  N)r3  r  r2  r   s   &r   r  TestUnixDomain.testUnbound/  s    dii++-z:r   c                ,   \         P                  P                  \        P                  4      pV P                  V P                  V4       V P                  \        P                  V4       V P                  V P                  P                  4       V4       R # r   )rO  r  abspathr   TESTFNr   r  r   r  rX  r2  rU  s   & r   testStrAddrTestUnixDomain.testStrAddr3  s]    wwy//0		$))T"	(($/..0$7r   c                J   \         P                  P                  \        P                  4      pV P                  V P                  V P                  V4      4       V P                  \        P                  V4       V P                  V P                  P                  4       V4       R # r   )rO  r  r^  r   r_  r   r  rV  r   r  rX  r2  rU  s   & r   testBytesAddrTestUnixDomain.testBytesAddr:  sf    wwy//0		$))T\\$/0	(($/..0$7r   c                n   \         P                  P                  \        P                  4      pV P                  V4      pV P                  V P                  VP                  R R4      4       V P                  \        P                  V4       V P                  V P                  P                  4       V4       R# )asciisurrogateescapeN)rO  r  r^  r   TESTFN_UNICODErV  r   r  r:  r   r  rX  r2  )r   r  r  s   &  r   testSurrogateescapeBind&TestUnixDomain.testSurrogateescapeBindA  sy     wwy778LL		$))QXXg/@AB	(($/..0$7r   c                r   \         P                  f   V P                  R4       \        P                  P                  \         P                  4      pV P                  V P                  V4       V P                  \         P                  V4       V P                  V P                  P                  4       V4       R # )Nz!No unencodable filename available)r   TESTFN_UNENCODABLEr   rO  r  r^  r   r  r   r  rX  r2  rU  s   & r   testUnencodableAddr"TestUnixDomain.testUnencodableAddrJ  sx     ''/MM=>wwy;;<		$))T"	(($/..0$7r   z6Linux behavior is tested by TestLinuxAbstractNamespacec                \    V P                  \        V P                  P                  R 4       R# r[  )rI  r=   r  r   r   s   &r   testEmptyAddressTestUnixDomain.testEmptyAddressT  s     	'499>>26r   r  Nr  r  )r   r   r   r   r   r   rV  r   r  r`  rc  ri  rm  r#   r  rz   r{   rp  r   r   r   s   @r   rM  rM    sa     F	8
;8888 __S\\%99MO7O7r   rM  c                      a  ] tR tRt o RtRR ltR tR tR t]t	R t
]tR tR	 tR
 t]tR t]tR tR tR t]tRtV tR# )BufferIOTesti[  z>
Test the buffer versions of socket.recv() and socket.send().
c                2    \         P                  WR 7       R# r  rt  r  s   &&r   r   BufferIOTest.__init___  rv  r   c                B   \         P                   ! R ^ .\        \        4      ,          4      pV P                  P	                  V4      pV P                  V\        \        4      4       VP                  4       pVR\        \        4       pV P                  V\        4       R# rn  )r   r  rY  rk  r#
  rX  r9  r   r)  r*  rZ  s   &   r   testRecvIntoArrayBufferIOTest.testRecvIntoArrayb  sn    kk#sSX~.((-S*kkm)3s8nc"r   c                Z    \        \        4      pV P                  P                  V4       R # r   r  rY  rr  r`  r   r)  s   & r   _testRecvIntoArrayBufferIOTest._testRecvIntoArrayj      CjC r   c                    \        R 4      pV P                  P                  V4      pV P                  V\	        \
        4      4       VR\	        \
        4       pV P                  V\
        4       R# rS  )rL  rk  r#
  rX  r  rY  rx  s   &   r   testRecvIntoBytearray"BufferIOTest.testRecvIntoBytearrayn  sR    o((-S*)3s8nc"r   c                    \        R 4      pV P                  P                  \        V4      4      pV P	                  V\        \        4      4       VR\        \        4       pV P	                  V\        4       R# rS  )rL  rk  r#
  rB  rX  r  rY  rx  s   &   r   testRecvIntoMemoryview#BufferIOTest.testRecvIntoMemoryvieww  sV    o((C9S*)3s8nc"r   c                F   \         P                   ! R ^ .\        \        4      ,          4      pV P                  P	                  V4      w  r#V P                  V\        \        4      4       VP                  4       pVR\        \        4       pV P                  V\        4       R# rn  )r   r  rY  rk  rw  rX  r9  r   r)  r*  rm  rZ  s   &    r   testRecvFromIntoArray"BufferIOTest.testRecvFromIntoArray  sp    kk#sSX~.}}2237S*kkm)3s8nc"r   c                Z    \        \        4      pV P                  P                  V4       R # r   r|  r}  s   & r   _testRecvFromIntoArray#BufferIOTest._testRecvFromIntoArray  r  r   c                    \        R 4      pV P                  P                  V4      w  r#V P                  V\	        \
        4      4       VR\	        \
        4       pV P                  V\
        4       R# rS  )rL  rk  rw  rX  r  rY  r  s   &    r   testRecvFromIntoBytearray&BufferIOTest.testRecvFromIntoBytearray  sT    o}}2237S*)3s8nc"r   c                    \        R 4      pV P                  P                  \        V4      4      w  r#V P	                  V\        \        4      4       VR\        \        4       pV P	                  V\        4       R# rS  )rL  rk  rw  rB  rX  r  rY  r  s   &    r   testRecvFromIntoMemoryview'BufferIOTest.testRecvFromIntoMemoryview  sX    o}}22:c?CS*)3s8nc"r   c                t    \        ^4      pV P                  \        V P                  P                  VR4       R# )   rT  N)rL  rI  r  rk  rw  r}  s   & r   testRecvFromIntoSmallBuffer(BufferIOTest.testRecvFromIntoSmallBuffer  s)    l*dmm&A&A3Mr   c                D    V P                   P                  \        4       R # r   r{  r   s   &r   _testRecvFromIntoSmallBuffer)BufferIOTest._testRecvFromIntoSmallBuffer  r~  r   c                    \        4       pV P                  P                  V4       V P                  P                  V^ 4       R# r0  )rL  rk  rw  r}  s   & r   testRecvFromIntoEmptyBuffer(BufferIOTest.testRecvFromIntoEmptyBuffer  s/    k##C(##C+r   r   Nr  )r   r   r   r   r   r   ry  r~  r  _testRecvIntoBytearrayr  _testRecvIntoMemoryviewr  r  r  _testRecvFromIntoBytearrayr  _testRecvFromIntoMemoryviewr  r  r  _testRecvFromIntoEmptyBufferr   r   r   s   @r   rt  rt  [  sp     B#!# 0# 1#!# "8# #9N
!,
 $: r   rt  i  c                 0   \        \        R4      '       g   R#  \        RRR7      p T ;_uu_ 4        T  F%  pTP                  R4      '       g   K   RRR4       R# 	  RRR4       R#   \        \        \
        3 d     R# i ; i  + '       g   i     R# ; i)	z|Check if the TIPC module is loaded

The TIPC module is not loaded automatically on Ubuntu and probably
other Linux distros.
AF_TIPCFz/proc/modulesr   r  ztipc NT)r7   r8   r9   FileNotFoundErrorIsADirectoryErrorrV  r
  )r   r-  s     r   isTipcAvailabler    s     69%%73
 
Dw'' 
 
  0/B   
 s(   A' BBB'B BB	z6TIPC module is not loaded, please 'sudo modprobe tipc'c                   &   a  ] tR tRt o R tRtV tR# )TIPCTesti  c                @   \         P                   ! \         P                  \         P                  4      p\         P                   ! \         P                  \         P                  4      pV P                  VP                  4       V P                  VP                  4       VP                  \         P                  \         P                  ^4       \         P                  \        \        \        3pVP                  V4       \         P                  \        \        \        \        \        ,
          ^,          4      ,           ^ 3pVP                  \         V4       VP#                  R4      w  rVV P%                  VP'                  4       V4       V P%                  V\         4       R# )r   rT  N)r8   r  r[  r   rD   rx  r\  r]  TIPC_ADDR_NAMESEQ
TIPC_STYPE
TIPC_LOWER
TIPC_UPPERr   TIPC_ADDR_NAMEr  rS  rY  rv  rX  r2  )r   r  r	  srvaddrsendaddrrZ  recvaddrs   &      r   testRDMTIPCTest.testRDM  s   mmFNNFOO<mmFNNFOO<		"		"v((&*=*=qA++ZJ()):S*z"9Q!>??D

3!T**H5c"r   r   N)r   r   r   r   r  r   r   r   s   @r   r  r    s     # #r   r  c                   B   a  ] tR tRt o R	R ltR tR tR tR tRt	V t
R# )
TIPCThreadableTesti  c                p    \         P                  P                  WR 7       \        P                  V 4       R# r  r<  r  s   &&r   r   TIPCThreadableTest.__init__  s'    ""4"A%r   c                   \         P                   ! \         P                  \         P                  4      V n        V P	                  V P                  P
                  4       V P                  P                  \         P                  \         P                  ^4       \         P                  \        \        \        3pV P                  P                  V4       V P                  P                  4        V P                  4        V P                  P!                  4       w  V n        V n        V P	                  V P"                  P
                  4       R# r  )r8   r  rc   r  r   rD   rx  r\  r]  r  r  r  r  r   r   r   rE  rF  rG  )r   r  s   & r   r   TIPCThreadableTest.setUp  s    ==1C1CD'F--v/B/BAF++ZJ(g  "#'88??#4 	4=		(r   c                   \         P                  ! R 4       \        P                  ! \        P                  \        P                  4      V n        V P                  V P
                  P                  4       \        P                  \        \        \        \        \        ,
          ^,          4      ,           ^ 3pV P
                  P                  V4       V P
                  P                  4       V n        R# rJ  )rL  rM  r8   r  rc   r	  r   rD   r  r  r  r  r  rP  r2  cliaddr)r   rm  s   & r   r   TIPCThreadableTest.clientSetUp  s     	

3==1C1CD'%%zS*z"9Q!>??Dxx++-r   c                    V P                   P                  R 4      pV P                  V\        4       V P                  V P                  V P
                  4       R# rS  )rF  rU  rX  rY  r  rG  rL  s   & r   r\  TIPCThreadableTest.testStream  s<    iinnT"c"t}}5r   c                x    V P                   P                  \        4       V P                   P                  4        R # r   r_  r   s   &r   ra  TIPCThreadableTest._testStream  rc  r   )r	  r  rF  rG  r  Nr  rd  r   s   @r   r  r    s#     &
)
.6
 r   r  c                   >   a  ] tR tRt o R tR tR tR tR tRt	V t
R# )	ContextManagersTesti  c                   \         P                   ! 4       ;_uu_ 4       pV P                  VP                  4       R R R 4       V P                  XP                  4       \         P                   ! 4       ;_uu_ 4       pVP	                  4        R R R 4       V P                  VP                  4       \         P                   ! 4       ;_uu_ 4       pV P                  \        VP                  R4       R R R 4       V P                  VP                  4       R #   + '       g   i     L; i  + '       g   i     L; i  + '       g   i     LS; iNrQ  )r8   r_  r  r!  rD   rI  r=   r  r  s   & r   _testSocketClass$ContextManagersTest._testSocketClass	  s    ]]__T\\* %]]__JJL %]]__gt||V< % _ _ _s#   D:D%"D8D"	%D5	8E	c                    V P                   P                  4       w  rV P                  VP                  4       VP	                  R 4      pVP                  V4       R# rS  r   rE  r   rD   rU  r  r   rF  rm  r  s   &   r   testCreateConnectionBase,ContextManagersTest.testCreateConnectionBase  ?    YY%%'


#yyTr   c                ~   V P                   P                  4       p\        P                  ! V4      ;_uu_ 4       pV P	                  VP
                  4       VP                  R 4       V P                  VP                  R4      R 4       RRR4       V P                  XP
                  4       R#   + '       g   i     L-; i)rQ  rT  N)
r   r2  r8   r  r_  r  r  rX  rU  r!  r   r  r  s   &  r   _testCreateConnectionBase-ContextManagersTest._testCreateConnectionBase  s}    ))'')%%g..$T\\*LL TYYt_f5 / 	%	 /.s   AB,,B<	c                    V P                   P                  4       w  rV P                  VP                  4       VP	                  R 4      pVP                  V4       R# rS  r  r  s   &   r   testCreateConnectionClose-ContextManagersTest.testCreateConnectionClose%  r  r   c                F   V P                   P                  4       p\        P                  ! V4      ;_uu_ 4       pVP	                  4        R R R 4       V P                  XP                  4       V P                  \        VP                  R4       R #   + '       g   i     LN; ir  )
r   r2  r8   r  rD   r!  r  rI  r=   r  r  s   &  r   _testCreateConnectionClose.ContextManagersTest._testCreateConnectionClose+  sd    ))'')%%g..$JJL /%'4<<8 /.s   BB 	r   N)r   r   r   r   r  r  r  r  r  r   r   r   s   @r   r  r    s#     &&9 9r   r  c                     a  ] tR tRt o ]P
                  ! ]! ]R4      R4      ]P                  ! ^^^4      R 4       4       t
R tR tR t]P                  ! ]RJ R	4      R
 4       t]P                  ! ]RJ R	4      R 4       tR tRtV tR# )InheritanceTesti3  rs  zSOCK_CLOEXEC not definedc                r   \         P                   ! \         P                  \         P                  \         P                  ,          4      ;_uu_ 4       pV P	                  VP
                  \         P                  4       V P                  VP                  4       4       R R R 4       R #   + '       g   i     R # ; ir   )r8   r   rc   rs  rX  r  r_  get_inheritabler6  s   & r   test_SOCK_CLOEXEC!InheritanceTest.test_SOCK_CLOEXEC4  s~     ]]6>>!--0C0CCE EHIQVVV%7%78Q..01E E E Es   A
B%%B6	c                    \         P                   ! 4       pV;_uu_ 4        V P                  VP                  4       R 4       RRR4       R#   + '       g   i     R# ; ir  )r8   rX  r  r  s   & r   test_default_inheritable(InheritanceTest.test_default_inheritable=  s7    }}TT113U; TTTs   !AA	c           	     J   \         P                   ! 4       pT;_uu_ 4        VP                  4       pVP                  4        V;_uu_ 4        V P                  VP	                  4       R 4       RRR4       RRR4       R#   + '       g   i     L; i  + '       g   i     R# ; ir  )r8   r  rD   rX  r  )r   r  newsocks   &  r   test_dupInheritanceTest.test_dupB  sb    }}ThhjGJJL  !8!8!:EB  T  TTs#   +B!A>	,B>B	BB"	c                B   \         P                   ! 4       pV;_uu_ 4        VP                  R 4       V P                  VP                  4       R 4       VP                  R4       V P                  VP                  4       R4       RRR4       R#   + '       g   i     R# ; i)TFN)r8   set_inheritablerX  r  r  s   & r   test_set_inheritable$InheritanceTest.test_set_inheritableJ  sl    }}T  &T113T:  'T113U; TTTs   A#BB	Nr8  c                   \         P                   ! 4       pV;_uu_ 4        VP                  4       pV P                  VP                  4       R 4       \        P                  ! V\        P
                  4      pV\        P                  ( ,          p\        P                  ! V\        P                  V4       V P                  VP                  4       R4       RRR4       R#   + '       g   i     R# ; i)FTN)r8   r4  rX  r  r6   F_GETFD
FD_CLOEXECF_SETFD)r   r  r@  r  s   &   r   test_get_inheritable_cloexec,InheritanceTest.test_get_inheritable_cloexecS  s    }}TBT113U; KKEMM2Ee&&&&EKKEMM51T113T: TTTs   B4CC/	c                   \         P                   ! 4       pV;_uu_ 4        VP                  4       pV P                  \        P                  ! V\        P                  4      \        P
                  ,          \        P
                  4       VP                  R 4       V P                  \        P                  ! V\        P                  4      \        P
                  ,          ^ 4       RRR4       R#   + '       g   i     R# ; ir  )r8   r4  rX  r6   r  r  r  )r   r  r@  s   &  r   test_set_inheritable_cloexec,InheritanceTest.test_set_inheritable_cloexeca  s    }}TBU[[U]];e>N>NN"--/   &U[[U]];e>N>NN  TTTs   CC..C?	c                    \         P                  ! 4       w  rV P                  VP                  4       V P                  VP                  4       V P	                  VP                  4       R 4       V P	                  VP                  4       R 4       R# r  )r8   r|  r   rD   rX  r  )r   r3  rY  s   &  r   test_socketpairInheritanceTest.test_socketpairn  sd    ""$!!++-u5++-u5r   r   )r   r   r   r   r#   r  r7   r8   r   r
  r  r  r  r  r  r6   r  r  r  r   r   r   s   @r   r  r  3  s     835##Aq"-2 .52<
C< __Ud]L1; 2; __Ud]L1	  2	 6 6r   r  r1  zSOCK_NONBLOCK not definedc                   ^   a  ] tR tRt o RR lt]P                  ! ^^^4      R 4       tRtV t	R# )NonblockConstantTestiv  c                n   V'       d   V P                  VP                  \        P                  4       V P                  VP	                  4       V4       V P                  \        P                  ! V\        P                  \        P                  4      \        P                  ,          4       V^ 8X  d"   V P                  VP                  4       4       R# V P                  VP                  4       4       R# V P                  VP                  \        P                  4       V P                  VP	                  4       R4       V P                  \        P                  ! V\        P                  \        P                  4      \        P                  ,          4       V P                  VP                  4       4       R# r0  )rX  r  r8   rc   r  r!  r6   r
  rO  r
  r_  r
  )r   rG   nonblockrp   s   &&&&r   checkNonblock"NonblockConstantTest.checkNonblocky  s   QVVV%7%78Q\\^W5OOAu}}bmm<r}}LN!|  1 0QVVV%7%78Q\\^T2Au}}bmm<r}}LNOOAMMO,r   c                   \         P                   ! \         P                  \         P                  \         P                  ,          4      ;_uu_ 4       pV P	                  V4       VP                  R 4       V P	                  VRR7       VP                  R4       V P	                  V4       VP                  R4       V P	                  VRR7       VP                  R4       V P	                  VRR7       VP                  R 4       V P	                  VRR7       RRR4       \         P                  ! 4       p\         P                  ! R4       \         P                   ! 4       ;_uu_ 4       pV P	                  V4       RRR4       \         P                  ! R4       \         P                   ! 4       ;_uu_ 4       pV P	                  VR4       RRR4       \         P                  ! R4       \         P                   ! 4       ;_uu_ 4       pV P	                  VRR7       RRR4       \         P                  ! R4       \         P                   ! 4       ;_uu_ 4       pV P	                  VR4       RRR4       \         P                  ! V4       R#   + '       g   i     ELv; i  + '       g   i     EL(; i  + '       g   i     L; i  + '       g   i     L; i  + '       g   i     Lv; i)TF)r  Ng       @r  r
  )	r8   r   rc   r1  r  r2  rC  rn   ro   )r   rG   ts   &  r   test_SOCK_NONBLOCK'NonblockConstantTest.test_SOCK_NONBLOCK  s    ]]6>>!--0D0DDF FIJq!MM$q51MM% q!LLq51LLq#.MM$q51F $$&  %]]__q!   &]]__q%(   %]]__q#.   &]]__q%(   #7F F F  __ _ _ _s=   CJ%J2J* J=KJ	J'	*J:	=K	K 	r   N)Tr
  )
r   r   r   r   r  r   r
  r  r   r   r   s   @r   r  r  v  s-     -2 ##Aq"-$ .$r   r  rf  rg  zneed multiprocessingc                   N   a  ] tR tRt o ]R 4       tR tR tR tR t	R t
RtV tR	# )
TestSocketSharingi  c                    VP                  4       pVP                  4       p\        P                  ! V4      pVP                  4       w  rVVP	                  V4       VP                  4        VP                  4        R # r   )r   r8   	fromsharerE  r  rD   )r  qsdatarw   rG   rY  r  s   &&     r   remoteProcessServer%TestSocketSharing.remoteProcessServer  sW     %%'U#
 	

7

		r   c                   \         P                  ! 4       p\         P                  ! V P                  V3R 7      pVP	                  4        V P
                  P                  VP                  4      pV P
                  P                  4       pV P
                  P                  4        VP                  V4       RpVP                  V4       \        P                  ! V4      p. p VP                  ^d4      pV'       g   MVP                  V4       K.  VP                  4        RP                  V4      pV P!                  W4       VP                  4        R# )r6
  r%   s
   slapmahfror   N)multiprocessingr   Processr  r9
  r   sharepidr2  rD   r   r8   r  rU  rc  r  rX  )	r   r  rD  r  rm  rw   rG   mreceiveds	   &        r   	testShareTestSocketSharing.testShare  s    
 !!###4+C+C1$O		 yyquu% yy$$&			d  	g $$T*66#;DHHTN		88A;+	r   c                
   V P                   P                  \        P                  ! 4       4      pV P	                  \
        \        P                  VR R 4       V P	                  \
        \        P                  VR,           4       R # )NrQ  r  )r   r  rO  getpidrI  r  r8   r  )r   r  s   & r   testShareLength!TestSocketSharing.testShareLength  sT    yyryy{+*f&6&6Sb	B*f&6&6VDr   c                   V P                  VP                  4       R 4       V P                  VP                  4       VP                  4       4       V P                  VP                  VP                  4       V P                  VP                  VP                  4       VP                  ^ 8w  d)   V P                  VP                  VP                  4       R # R # r   )rX  r  r;  r  r<  )r   orgothers   &&&r   compareSockets TestSocketSharing.compareSockets  s     	)40)5+;+;+=>U\\25::. 99>SYY4 r   c                   V P                   P                  \        P                  ! 4       4      p\        P
                  ! V4      p V P                  V P                   V4       VP                  4        R #   TP                  4        i ; ir   )r   r  rO  r  r8   r  r  rD   )r   r  rG   s   &  r   testShareLocal TestSocketSharing.testShareLocal  sV    yyryy{+T"			1-GGIAGGIs   A4 4Bc                ,   \         P                  \         P                  .p\         P                  \         P                  .pV F  pV F  p \         P                   ! W44      p TP                  \        P                  ! 4       4      p\         P                  ! T4      p T P                  YW4       TP                  4         TP                  4        K  	  K  	  R #   \
         d     K  i ; i  TP                  4        i ; i  TP                  4        i ; ir   )r8   r   r  rc   rK   r=   r  rO  r  r  r  rD   )r   familiestypesr   r  r  r  shareds   &       r   	testTypesTestSocketSharing.testTypes  s    NNFOO4##V%6%67A#]]10F#!<<		4D#--d3F'++F;LLN     LLNs6   C#:DC,/DC)(C),C>>DDr   N)r   r   r   r   r*  r  r  r  r  r  r!  r   r   r   s   @r   r   r     s9     
  !FE
5 # #r   r   c                      a  ] tR tRt o RtR"tRtRt]P                  t
]R 4       t]R 4       tR tR tR	 tR
 tR tR tR tR tR tR tR tR tR tR tR tR tR tR tR t R t!R t"R t#R t$R t%R t&R t'V t(R!# )#SendfileUsingSendTesti  z6
Test the send() implementation of socket.sendfile().
r   r   c                   R  pRP                  \        V P                  4       Uu. uF5  p\        P                  ! \
        P                  4      P                  4       NK7  	  up4      p\        \        P                  R4      ;_uu_ 4       pV! V P                  V P                  4       F  pVP                  V4       K  	  RRR4       \        \        P                  R4      ;_uu_ 4       pVP                  4       V n        \        V P                  4      V P                  8X  g   Q h RRR4       R# u upi   + '       g   i     L~; i  + '       g   i     R# ; i)c              3   b   "   W8  g   Q hW8  d   Vx  W,          p K  V '       d   V x  R # R # 5ir   r   )totalsteps   &&r   chunks0SendfileUsingSendTest.setUpClass.<locals>.chunks'  s-     = =,
 s   $//r   r  Nr4   )r  r  BUFSIZErandomchoicestringascii_lettersr%  r9   r   r_  FILESIZErb  r  FILEDATAr  )r  r)  r   chunkr   csizes   &     r   
setUpClass SendfileUsingSendTest.setUpClass%  s    	 #(#57#5a !--(<(<=DDF#57 8)""D))Qckk: ; * )""D))Q668CLs||$444 *)7)) *))s   ;D1
6D6*<E	6E		E	c                N    \         P                  ! \         P                  4       R # r   )r   r  r_  )r  s   &r   tearDownClass#SendfileUsingSendTest.tearDownClass8  s    ))*r   c                    V P                   P                  \        P                  4       V P                   P	                  4       w  rVP                  V P
                  4       V P                  VP                  4       V# r   )r   rC  r   r
  rE  TIMEOUTr   rD   rl  s   &  r   accept_conn!SendfileUsingSendTest.accept_conn<  sS    		W112YY%%'
%

#r   c                    . p VP                  V P                  4      pV'       g   MVP                  V4       K8  RP                  V4      # )Tr   )rU  r+  rc  r  )r   rF  r  r2  s   &&  r   	recv_dataSendfileUsingSendTest.recv_dataC  s=    IIdll+EOOE"xx!!r   c                    \        VR 4      # )_sendfile_use_sendr   r  s   &&r   meth_from_sock$SendfileUsingSendTest.meth_from_sockL  s     t122r   c           	        V P                   P                  4       p\        \        P                  R 4      p\
        P                  ! V4      ;_uu_ 4       q2;_uu_ 4       pV P                  V4      pV! V4      pV P                  WPP                  4       V P                  VP                  4       V P                  4       RRR4       RRR4       R#   + '       g   i     L; i  + '       g   i     R# ; i)r4   Nr   r2  r9   r   r_  r8   r  rC  rX  r0  tellr   r  filer  methsents   &     r   _testRegularFile&SendfileUsingSendTest._testRegularFileS  s    ))'')I$$d+%%g..$&&t,D:DT==1TYY[$--8	 9=.....s%   
C!AC	<C!CC!!C2	c                    V P                  4       pV P                  V4      pV P                  \        V4      V P                  4       V P                  W P
                  4       R # r   r;  r>  rX  r  r0  r1  r   rF  r  s   &  r   testRegularFile%SendfileUsingSendTest.testRegularFile\  H    !~~d#TDMM2}}-r   c           	     <   V P                   P                  4       p\        P                  ! V P                  4      p\
        P                  ! V4      ;_uu_ 4       q2;_uu_ 4       pVP                  V4      pV P                  W@P                  4       V P                  VP                  4       V P                  4       V P                  \
        P                  VP                  V4       R R R 4       R R R 4       R #   + '       g   i     L; i  + '       g   i     R # ; ir   )r   r2  ioBytesIOr1  r8   r  rE  rX  r0  rG  rI  rR  rS  )r   r  rI  r  rK  s   &    r   _testNonRegularFile)SendfileUsingSendTest._testNonRegularFiled  s    ))'')zz$--(%%g..$==&DT==1TYY[$--8f66"994A	 9=.....s%   
D
#BC7	%D
7DD

D	c                    V P                  4       pV P                  V4      pV P                  \        V4      V P                  4       V P                  W P
                  4       R # r   rO  rP  s   &  r   testNonRegularFile(SendfileUsingSendTest.testNonRegularFilen  rS  r   c           	     v   V P                   P                  4       p\        P                  R ,           p\	        VR4      ;_uu_ 4        V P                  \        P                  V4       RRR4       \	        VR4      p\        P                  ! V4      ;_uu_ 4       qC;_uu_ 4       pV P                  V4      pV! V4      pV P                  V^ 4       V P                  VP                  4       ^ 4       RRR4       RRR4       R#   + '       g   i     L; i  + '       g   i     L-; i  + '       g   i     R# ; i)2r  Nr4   )r   r2  r   r_  r9   r   r  r8   r  rC  rX  rG  )r   r  filenamerI  r  rJ  rK  s   &      r   _testEmptyFileSend(SendfileUsingSendTest._testEmptyFileSendv  s    ))'')##c)(D!!OOI,,h7 "Hd#%%g..$&&t,D:DT1%TYY[!,	 9=.. "! 9=...s1   !D
D'#AD	/D'D	D$D''D8	c                l    V P                  4       pV P                  V4      pV P                  VR 4       R# r  )r;  r>  rX  rP  s   &  r   testEmptyFileSend'SendfileUsingSendTest.testEmptyFileSend  s.    !~~d#s#r   c           	        V P                   P                  4       p\        \        P                  R 4      p\
        P                  ! V4      ;_uu_ 4       q2;_uu_ 4       pV P                  V4      pV! VRR7      pV P                  WPP                  R,
          4       V P                  VP                  4       V P                  4       RRR4       RRR4       R#   + '       g   i     L; i  + '       g   i     R# ; i)r4     )offsetNrF  rH  s   &     r   _testOffset!SendfileUsingSendTest._testOffset  s    ))'')I$$d+%%g..$&&t,DT*DT==4#78TYY[$--8	 9=.....s%   
C*A(C	C*C'"C**C;	c                    V P                  4       pV P                  V4      pV P                  \        V4      V P                  R ,
          4       V P                  W P
                  R,          4       R# )re  :i  NNNrO  rP  s   &  r   
testOffset SendfileUsingSendTest.testOffset  sR    !~~d#TDMMD$89}}U34r   c           	        V P                   P                  4       p\        \        P                  R 4      p\
        P                  ! V\        P                  R7      pT;_uu_ 4        V;_uu_ 4        RpV P                  V4      pV! W$R7      pV P                  Wd4       V P                  VP                  4       V4       RRR4       RRR4       R#   + '       g   i     L; i  + '       g   i     R# ; i)r4   r  GKL rW  Nr   r2  r9   r   r_  r8   r  r   rD  rC  rX  rG  r   r  rI  r  rW  rJ  rK  s   &      r   
_testCount SendfileUsingSendTest._testCount  s    ))'')I$$d+''070H0HJT44E&&t,D*DT)TYY[%0 TT44TTT%   %C#0AC	>C#C C##C4	c                    R pV P                  4       pV P                  V4      pV P                  \        V4      V4       V P                  W0P                  RV 4       R# )rm  Nr;  r>  rX  r  r1  r   rW  rF  r  s   &   r   	testCountSendfileUsingSendTest.testCount  sP    !~~d#TE*}}Ve45r   c           	        V P                   P                  4       p\        \        P                  R 4      p\
        P                  ! V\        P                  R7      pT;_uu_ 4        V;_uu_ 4        ^pV P                  V4      pV! W$R7      pV P                  Wd4       V P                  VP                  4       V4       RRR4       RRR4       R#   + '       g   i     L; i  + '       g   i     R# ; i)r4   r  rn  Nro  rp  s   &      r   _testCountSmall%SendfileUsingSendTest._testCountSmall  s    ))'')I$$d+''070H0HJT44E&&t,D*DT)TYY[%0 TT44TTTrs  c                    ^pV P                  4       pV P                  V4      pV P                  \        V4      V4       V P                  W0P                  RV 4       R# r  ru  rv  s   &   r   testCountSmall$SendfileUsingSendTest.testCountSmall  sP    !~~d#TE*}}Ve45r   c           
        V P                   P                  4       p\        \        P                  R 4      p\
        P                  ! V^R7      ;_uu_ 4       q2;_uu_ 4       pRpV P                  V4      pV! VRVR7      pV P                  Wd4       V P                  VP                  4       VR,           4       RRR4       RRR4       R#   + '       g   i     L; i  + '       g   i     R# ; i)r4   r  駆   )rf  rW  N)
r   r2  r9   r   r_  r8   r  rC  rX  rG  rp  s   &      r   _testCountWithOffset*SendfileUsingSendTest._testCountWithOffset  s    ))'')I$$d+%%gq99T444E&&t,DT7DT)TYY[%$,7 DH9944999s%   
CAC	6CCCC,	c                    R pV P                  4       pV P                  V4      pV P                  \        V4      V4       V P                  W0P                  RVR,            4       R# )r  r  Nru  rv  s   &   r   testCountWithOffset)SendfileUsingSendTest.testCountWithOffset  sT    !~~d#TE*}}T%*=>r   c           	        V P                   P                  4       p\        \        P                  R 4      p\
        P                  ! V4      ;_uu_ 4       q2;_uu_ 4       pVP                  R4       V P                  V4      pV P                  \        WB4       V P                  \        VP                  V4       RRR4       RRR4       R#   + '       g   i     L; i  + '       g   i     R# ; i)r4   FN)r   r2  r9   r   r_  r8   r  r2  rC  rI  r  rE  r   r  rI  r  rJ  s   &    r   _testNonBlocking&SendfileUsingSendTest._testNonBlocking  s    ))'')I$$d+%%g..$U#&&t,Dj$5j$-->	 9=.....s%   
CAC		7C	CCC-	c                z    V P                  4       pVP                  R 4      '       d   V P                  R4       R# R# )r   z$was not supposed to receive any dataN)r;  rU  rB  r   rF  s   & r   testNonBlocking%SendfileUsingSendTest.testNonBlocking  s/    !99T??II<= r   c           	        V P                   P                  4       p\        \        P                  R 4      p\
        P                  ! V\        P                  R7      pT;_uu_ 4        V;_uu_ 4        V P                  V4      pV! V4      pV P                  WPP                  4       RRR4       RRR4       R#   + '       g   i     L; i  + '       g   i     R# ; i)r4   r  N)r   r2  r9   r   r_  r8   r  r   rD  rC  rX  r0  rH  s   &     r   _testWithTimeout&SendfileUsingSendTest._testWithTimeout  s    ))'')I$$d+''070H0HJT44&&t,D:DT==1 TT44TTTs$   %C
05B7	%C
7CC

C	c                    V P                  4       pV P                  V4      pV P                  \        V4      V P                  4       V P                  W P
                  4       R # r   rO  rP  s   &  r   testWithTimeout%SendfileUsingSendTest.testWithTimeout  rS  r   c           	        V P                   P                  4       p\        \        P                  R 4      ;_uu_ 4       p\
        P                  ! V4      ;_uu_ 4       pVP                  R4       V P                  V4      pV P                  \        WB4       RRR4       RRR4       R#   + '       g   i     L; i  + '       g   i     R# ; i)r4   g{Gz?N)r   r2  r9   r   r_  r8   r  rC  rC  rI  r  r  s   &    r   _testWithTimeoutTriggeredSend3SendfileUsingSendTest._testWithTimeoutTriggeredSend  s    ))''))""D))T))'22d%**40!!,; 3 *)22 *))s#   B:9B'	B:'B72B::C	c                t    V P                  4       pVP                  R 4       \        P                  ! ^4       R# )iX N)r;  rU  rL  rM  r  s   & r   testWithTimeoutTriggeredSend2SendfileUsingSendTest.testWithTimeoutTriggeredSend  s'    !		%

1r   c                    R # r   r   r   s   &r   _test_errors"SendfileUsingSendTest._test_errors	  r  r   c                   \        \        P                  R 4      ;_uu_ 4       p\        P                  ! \        P                  R7      ;_uu_ 4       pV P                  V4      pV P                  \        RW14       RRR4       RRR4       \        \        P                  RR7      ;_uu_ 4       p\        P                  ! 4       ;_uu_ 4       pV P                  V4      pV P                  \        RW14       RRR4       RRR4       \        \        P                  R 4      ;_uu_ 4       p\        P                  ! 4       ;_uu_ 4       pV P                  V4      pV P                  \        RW1RR	7       V P                  \        RW1R
R	7       V P                  \        RW1^ R	7       V P                  \        RW1RR	7       RRR4       RRR4       R#   + '       g   i     EL[; i  + '       g   i     ELg; i  + '       g   i     EL	; i  + '       g   i     EL; i  + '       g   i     Lj; i  + '       g   i     R# ; i)r4   r  rc   Nr   r  zbinary modezpositive integerr]  rn  rK  r  )	r9   r   r_  r8   rK   rC  r%  r  r   )r   rI  rG   rJ  s   &   r   test_errors!SendfileUsingSendTest.test_errors  s   )""D))TF$5$566!**1-&&t; 7 *
 )""W55A**1-&&t; ! 6
 )""D))TA**1-&&y2D'+ ' >&&y2D'+ ' >&&z3E'+ ' <&&z3E'+ ' = ! *) 766 *)) ! 655 ! *))sl   .G )G	:G -H)G4	4H&H/A6H	:H/G	G  G1	4H?	HH	H,'H//I 	r   Ni   ))r   r   r   r   r   r0  r+  r1  r   rD  r:  r*  r4  r7  r;  r>  rC  rL  rQ  rW  rZ  r_  rb  rg  rj  rq  rw  rz  r}  r  r  r  r  r  r  r  r  r  r  r   r   r   s   @r   r$  r$    s      !HGH&&G5 5$ + +"39.A.
-$95
16
168??>2.<= =r   r$  rE  z%os.sendfile() required for this test.c                   *   a  ] tR tRt o RtR tRtV tR# )SendfileUsingSendfileTesti$  z:
Test the sendfile() implementation of socket.sendfile().
c                    \        VR 4      # )rS  rB  r  s   &&r   rC  (SendfileUsingSendfileTest.meth_from_sock*  s    t566r   r   N)r   r   r   r   r   rC  r   r   r   s   @r   r  r  $  s     7 7r   r  zAF_ALG requiredc                      a  ] tR tRt o R t]P                  ! ^^4      R 4       tR t]P                  ! ^^4      R 4       t	]P                  ! ^^	4      R 4       t
]P                  ! ^^4      R 4       tR tR	 tR
tV tR# )LinuxKernelCryptoAPIi.  c                   \         P                   ! \         P                  \         P                  ^ 4      p VP                  W34       V#   \         d6   pTP                  4        \        P                  ! \        T4      Y4      hRp?ii ; ir0  )	r8   rY   rT   r   r  rD   r#   r$   r  )r   typr
  r  r   s   &&&  r   
create_algLinuxKernelCryptoAPI.create_alg1  sj    }}V]]F,A,A1E	IIsk" K ! 	7JJL##CFC66	7s   A
 
B
0BB
c           	        \         P                  R 4      pV P                  RR4      ;_uu_ 4       pVP                  4       w  r4V;_uu_ 4        VP	                  R4       V P                  VP                  R4      V4       RRR4       VP                  4       w  r4V;_uu_ 4        VP                  R\        P                  4       VP                  R\        P                  4       VP                  R\        P                  4       VP                  R	4       V P                  VP                  R4      V4       RRR4       RRR4       R#   + '       g   i     L; i  + '       g   i     L-; i  + '       g   i     R# ; i)
@ba7816bf8f01cfea414140de5dae2223b00361a396177a9cb410ff61f20015adhashsha256s   abcr  NrC
     b   cr   )
r  fromhexr  rE  r  rX  rU  r`  r8   MSG_MORE)r   r=  algoopr   s   &    r   test_sha256 LinuxKernelCryptoAPI.test_sha256>  s    == ": ;__VX..$KKMEB

6"  x8  KKMEBfoo.foo.foo.  x8  /.
  /..s<   E/3E		 $E/$BE	7E/	EE/E,'E//F 	c           	        R pRp\         P                  R4      pV P                  RR4      ;_uu_ 4       pVP                  \        P
                  \        P                  V4       VP                  4       w  rVV;_uu_ 4        VP                  V4       V P                  VP                  R4      V4       RRR4       RRR4       R#   + '       g   i     L; i  + '       g   i     R# ; i)s   Python loves AF_ALGs   what do ya want for nothing?(193dbb43c6297b47ea6277ec0ce67119a3f3aa66r  z
hmac(sha1)r  N)r  r  r  rx  r8   SOL_ALGALG_SET_KEYrE  r  rX  rU  )r   keyr  r=  r  r  r   s   &      r   test_hmac_sha1#LinuxKernelCryptoAPI.test_hmac_sha1P  s     %.==!KL__V\22dOOFNNF,>,>DKKMEB

4   x8  32  322s$   AC 3C	3CCCC)	c           
     X   \         P                  R 4      p\         P                  R4      pRp\         P                  R4      p\        V4      pV P                  RR4      ;_uu_ 4       pVP	                  \
        P                  \
        P                  V4       VP                  4       w  rxV;_uu_ 4        VP                  \
        P                  V\
        P                  R7       VP                  V4       V P                  VP                  V4      V4       RRR4       VP                  4       w  rxV;_uu_ 4        VP                  V.\
        P                  VR7       V P                  VP                  V4      V4       RRR4       R	p	V.V	,          p
VP                  4       w  rxV;_uu_ 4        VP                  V
\
        P                  VR7       VP                  WY,          4      pRRR4       V P                  \        X4      WY,          4       V P                  VRV V4       VP                  4       w  rxV;_uu_ 4        VP                  V.\
        P                  VR7       VP                  WY,          4      pRRR4       V P                  \        X4      WY,          4       V P                  WV	,          4       RRR4       R#   + '       g   i     EL; i  + '       g   i     ELg; i  + '       g   i     EL; i  + '       g   i     L; i  + '       g   i     R# ; i)
 06a9214036b8a15b512e03d534120006 3dafba429d9eb430b422da802c9fac41s   Single block msg e353779c1079aeb82708942dbe77181askcipherzcbc(aes))r  ivr  N)r  r  rT  )r  r  r  r  rx  r8   r  r  rE  sendmsg_afalgALG_OP_ENCRYPTr  r  rX  rU  ALG_OP_DECRYPT)r   r  r  rZ  
ciphertextmsglenr  r  r   
multiplierlongmsgencdecs   &            r   test_aes_cbc!LinuxKernelCryptoAPI.test_aes_cbc_  sY   mm>?]]=>!]]#EF
S__Z44OOFNNF,>,>DKKMEB  F$9$9b'- ! 8

3  *=	  KKMEB  *$*$9$9b ! B  #6  Jej(GKKMEB  $*$9$9b ! Bggf12  SXv':;S&\:6KKMEB  #$*$9$9b ! Bggf12  SXv':;S
"23A 54    7 544sq   'AL3A#K		$L:AK	?0L/:K1	)AL;L	>AL	K	LK.(	L1L<	LLLL)	c                	   \         P                  ! R 4      pVe    VR8  d   VR8  d   V P                  R4       \        P	                  R4      p\        P	                  R4      p\        P	                  R4      p\        P	                  R4      p\        P	                  R4      p\        P	                  R4      p\        V4      p\        V4      p	V P                  R	R
4      ;_uu_ 4       p
V
P                  \        P                  \        P                  V4       V
P                  \        P                  \        P                  RV4       V
P                  4       w  rV;_uu_ 4        VP                  \        P                  VV	\        P                  R7       VP!                  V\        P                  4       VP!                  V4       VP#                  V	\        V4      ,           V,           4      pV P%                  WmW)  4       V P%                  W}V) R 4       RRR4       V
P                  4       w  rV;_uu_ 4        WT,           pVP                  V.\        P                  VV	R7       VP#                  V	\        V4      ,           V,           4      pV P%                  WmW)  4       V P%                  W}V) R 4       RRR4       \&        P(                  ! R4      P*                  pV
P                  4       w  rV;_uu_ 4        WT,           pVP-                  V.\        P                  \        P.                  V! \        P                  4      .\        P                  \        P0                  V! \        V4      4      V,           .\        P                  \        P2                  V! V	4      .34       VP#                  \        V4      V,           4      pV P%                  WmW)  4       V P%                  W}V) R 4       RRR4       V
P                  4       w  rV;_uu_ 4        WV,           V,           pVP                  V.\        P4                  VV	R7       VP#                  \        V4      V,
          4      pV P%                  WMV	R 4       RRR4       RRR4       R#   + '       g   i     EL; i  + '       g   i     EL; i  + '       g   i     L; i  + '       g   i     LU; i  + '       g   i     R# ; i)LinuxNzupstream Linux kernel issue c939cc13397c1d37de6ae0e1cb7c423cb3d8cc017cbb89b39e0f67e2 c3b3c41f113a31b73d9a5cd432103069 24825602bd12a984e0092d3e448eda5f 93fe7d9e9bfd10348a5606e5cafa7354 0032a1dc85f1c9786925a2e71d8272ddaeadzgcm(aes))r  r  assoclenr  )r  r  r  r5   )      )r     )r   _get_kernel_versionr   r  r  r  r  rx  r8   r  r  ALG_SET_AEAD_AUTHSIZErE  r  r  r  r  rU  rX  r;   Structr  r  
ALG_SET_OP
ALG_SET_IVALG_SET_AEAD_ASSOCLENr  )r   kernel_versionr  r  plainassocexpected_ctexpected_tagtaglenr  r  r  r   resrZ  pack_uint32s   &               r   test_aead_aes_gcm&LinuxKernelCryptoAPI.test_aead_aes_gcm  s    44W=%(^g-E;<mm>?]]56@A@Amm$FG}}%GH\"u:__VZ00DOOFNNF,>,>DOOFNNF,H,H &* KKMEB  F$9$9b*2&// ! K

5&//2

5!gghU3f<=  (7.CD  F78}=  KKMEBm  #6+@+@R*2 ! 4gghU3f<=  (7.CD  F78}=  !--,11KKKMEBm

Ennf&7&7VEZEZ9[\nnf&7&7SW9MPR9RSnnf&B&BKPXDYZ ggc#h/0  (7.CD  F78}=  KKMEB)L8  #6+@+@R*2 ! 4ggc#h/0  HI7 Y 10    Y 100sr   (A<S!$B4R	$S!<A>R'	:AS!>C6R;	4$S!A)S	S!R$	S!'R82	S!;SS!SS!!S2	c           	        V P                  R R4      ;_uu_ 4       p\        P                  ! ^ 4      pVP                  \        P
                  \        P                  V4       VP                  4       w  r4V;_uu_ 4        VP                  ^ 4      pV P                  \        V4      ^ 4       RRR4       RRR4       R#   + '       g   i     L; i  + '       g   i     R# ; i)rngdrbg_pr_sha256N)r  rO  urandomrx  r8   r  r  rE  rU  rX  r  )r   r  
extra_seedr  r   rns   &     r   test_drbg_pr_sha256(LinuxKernelCryptoAPI.test_drbg_pr_sha256  s     __U$455BJOOFNNF,>,>
KKKMEBWWR[  R"- 	 65 	 655s$   A"C=-B<	*C<CCC 	c           	        \         P                   ! \         P                  \         P                  ^ 4      pT;_uu_ 4        V P                  \        4      ;_uu_ 4        VP                  4        RRR4       V P                  \        4      ;_uu_ 4        VP                  RR7       RRR4       V P                  \        4      ;_uu_ 4        VP                  ^4       RRR4       V P                  \        4      ;_uu_ 4        VP                  \         P                  RR7       RRR4       V P                  \        4      ;_uu_ 4        VP                  \         P                  RR7       RRR4       RRR4       R#   + '       g   i     EL; i  + '       g   i     L; i  + '       g   i     L; i  + '       g   i     L; i  + '       g   i     Lg; i  + '       g   i     R# ; i)r   N)r  )r  r  r  )r8   rY   rT   rI  r   r  r  r  s   & r   test_sendmsg_afalg_args,LinuxKernelCryptoAPI.test_sendmsg_afalg_args  s5   }}V]]F,A,A1ET""9--""$ . ""9--""d"+ . ""9--""1% . ""9--""f&;&;d"K . ""9--""f&;&;b"I . T--- .- .- .- .- TTs   GE=	.%GF	&%GF$	%G"F7	$%G	"G
	+G=F	GF!G$F4/G7GG
GGG.	c                   \         P                   ! \         P                  \         P                  ^ 4      pV P                  VP                  4       V P                  \        4      ;_uu_ 4        VP                  R4       RRR4       V P                  \        R4      ;_uu_ 4        VP                  R4       RRR4       V P                  \        4      ;_uu_ 4        VP                  R4       RRR4       V P                  \        R4      ;_uu_ 4        VP                  R4       RRR4       R#   + '       g   i     L; i  + '       g   i     L; i  + '       g   i     Lp; i  + '       g   i     R# ; i)r   Nztype too longzname too long)tttttttttttttr
  )ttttttttttttttr
  )r  ?nnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnn)r  @nnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnn)
r8   rY   rT   r   rD   rI  r  r   r%  r  r  s   & r   test_length_restriction,LinuxKernelCryptoAPI.test_length_restriction  s    }}V]]F,A,A1E

# 011II() 2##J@@II() A 011II() 2##J@@II() A@ 21@@ 21@@@s0   -D0%EEE)0E 	E	E&	)E:	r   N)r   r   r   r   r  r   r
  r  r  r  r  r  r  r  r   r   r   s   @r   r  r  .  s     	 ##Aq)9 *9"9 ##Aq)&4 *&4P ##Aq)B8 *B8H ##Aq). *.J$* *r   r  ry   r}  c                   &   a  ] tR tRt o R tRtV tR# )TestMacOSTCPFlagsi  c                D    V P                  \        P                  4       R # r   )r!  r8   TCP_KEEPALIVEr   s   &r   test_tcp_keepalive$TestMacOSTCPFlags.test_tcp_keepalive  s    ,,-r   r   N)r   r   r   r   r  r   r   r   s   @r   r  r    s     . .r   r  TCP_QUICKACKzneed socket.TCP_QUICKACKc                   ,   a  ] tR tRt o R tR tRtV tR# )TestQuickackFlagi  c                *   VP                  \        P                  \        P                  4      pV'       d0   VP	                  \        P                  \        P                  ^ 4       VP                  \        P                  \        P                  4      pV P                  V4       VP	                  \        P                  \        P                  ^4       VP                  \        P                  \        P                  4      pV P                  V4       R# r0  )r^  r8   ra  r  rx  r_  r!  r   r  r  s   && r   check_set_quickack#TestQuickackFlag.check_set_quickack  s    oof00&2E2EFOOF..0C0CQGoof00&2E2EF**F,?,?Coof00&2E2EFr   c                    \         P                   ! \         P                  \         P                  \         P                  R 7      pV;_uu_ 4        V P	                  V4       RRR4       R#   + '       g   i     R# ; i))r;  r  r<  N)r8   r   rc   ra  r	  r  s   & r   test_set_quickack"TestQuickackFlag.test_set_quickack  sF    }}FNN9K9K#)#5#57T##D) TTTs   A**A;	r   N)r   r   r   r   r	  r  r   r   r   s   @r   r  r    s     * *r   r  winzrequires Windowsc                   .   a  ] tR tRt o 0 RmtR tRtV tR# )TestMSWindowsTCPFlagsi  c                    \        \        4       Uu. uF  qP                  R 4      '       g   K  VNK  	  ppV Uu. uF  qV P                  9  g   K  VNK  	  ppV P	                  . VR4       R# u upi u upi )TCPzANew TCP flags were discovered. See bpo-32394 for more informationN)dirr8   r
  knownTCPFlagsrX  )r   rG   providedunknowns   &   r   test_new_tcp_flags(TestMSWindowsTCPFlags.test_new_tcp_flags)  se    "6{B{!ll5.AAA{B&Fh43E3E*E11hFWO	Q CFs   A/A/A4A4r   N>   
TCP_MAXSEGTCP_KEEPCNTTCP_NODELAYTCP_FASTOPENTCP_KEEPIDLEr  TCP_KEEPINTVL)r   r   r   r   r  r  r   r   r   s   @r   r  r    s     MQ Qr   r  c                     a  ] tR tRt o R tR tR t]P                  ! ]	! ]
R4      '       * ;'       g    ]	! ]
R4      '       * R4      ]P                  ! ]P                  R4      R	 4       4       t]P                  ! ]P                   ! 4       '       * R
4      ]P                  ! ]P                  R4      R 4       4       tRtV tR# )CreateServerTesti1  c                   \         P                  ! 4       p\        P                  ! R V34      ;_uu_ 4       pV P	                  VP                  4       ^ ,          R 4       V P	                  VP                  4       ^,          V4       RRR4       \         P                  '       d   \        P                  ! RV3\        P                  R7      ;_uu_ 4       pV P	                  VP                  4       ^ ,          R4       V P	                  VP                  4       ^,          V4       RRR4       R# R#   + '       g   i     L; i  + '       g   i     R# ; i)r2  Nr0  r  )r	   rX  r8   create_serverrX  r2  r  r  r   r   r  s   &  r   test_addressCreateServerTest.test_address3  s    --/!!;"566$T--/2K@T--/2D9 7 %%%%%udm-3__> >AE  !1!1!3A!6>  !1!1!3A!6=> > & 76> > >s   AD.AE.D>	E	c                   \         P                  ! R4      ;_uu_ 4       pV P                  VP                  \         P                  4       V P                  VP
                  \         P                  4       RRR4       \        P                  '       d   \         P                  ! R\         P                  R7      ;_uu_ 4       pV P                  VP                  \         P                  4       V P                  XP
                  \         P                  4       RRR4       R# R#   + '       g   i     L; i  + '       g   i     R# ; i)r2  Nr  r1  r0  r   )
r8   r"  rX  r;  r   r  rc   r	   r  r  )r   r  rG   s   &  r   test_family_and_type%CreateServerTest.test_family_and_type>  s    !!"233tT[[&..9TYY(:(:; 4 %%%%%jIIQ  6??;  F,>,>? JI & 43 JIIs   AD! AD4!D1	4E	c                   \        \        R 4      '       gA   V P                  \        4      ;_uu_ 4        \        P                  ! RRR7       RRR4       R# \        P                  ! R4      ;_uu_ 4       pVP                  \        P                  \        P                  4      pV P                  V^ 4       RRR4       \        P                  ! RRR7      ;_uu_ 4       pVP                  \        P                  \        P                  4      pV P                  V^ 4       RRR4       R#   + '       g   i     R# ; i  + '       g   i     L; i  + '       g   i     R# ; i)SO_REUSEPORTT)
reuse_portN)r  r   )
r7   r8   rI  r  r"  r^  r\  r+  rX  r  r  s   &  r   test_reuse_port CreateServerTest.test_reuse_portG  s    v~.."":..$$%5$G /. %%&6774oof&7&79L9LM  a( 8 %%&64HHDoof&7&79L9LM##C+ IH /.. 87 IHHs%   D)5AD=AE)D:	=E	E!	rc  r
  r
  r~  c                
   \         P                  ! R\         P                  R7      ;_uu_ 4       pVP                  \         P                  \         P
                  4      '       g   Q h RRR4       R#   + '       g   i     R# ; i)r0  r  Nr'  )r8   r"  r  r^  rc  r
  r  s   & r   test_ipv6_only_default'CreateServerTest.test_ipv6_only_defaultS  sP    
 !!*V__EE??6#6#68J8JKKKK FEEEs   7A11B	dualstack_ipv6 not supportedc                    \         P                  ! R\         P                  RR7      ;_uu_ 4       pV P                  VP                  \         P                  4       RRR4       R#   + '       g   i     R# ; i)r0  Tr;  dualstack_ipv6Nr'  )r8   r"  r  rX  r;  r  s   & r   test_dualstack_ipv6_family+CreateServerTest.test_dualstack_ipv6_family[  sR     !!*V__157 7:>T[[&//:7 7 7 7s   +A%%A6	r   N)r   r   r   r   r$  r(  r-  r#   r  r7   r$  r  r	   r  r0  r8   has_dualstack_ipv6r6  r   r   r   s   @r   r   r   1  s     	>@
, __.99 9 9 -8879 335RSL T9L __224435335RS; T5;r   r   c                     a  ] tR tRt o ]P
                  tR tR tR t	]
P                  ! ]P                  R4      R 4       t]
P                  ! ]P"                  ! 4       '       * R4      ]
P                  ! ]P                  R4      R 4       4       t]
P                  ! ]P"                  ! 4       '       * R4      ]
P                  ! ]P                  R4      R	 4       4       tR
tV tR# )CreateServerFunctionalTestid  c                6  a a VV 3R  lp\         P                  ! 4       oVP                  S P                  4       \         P                  ! W!3R7      pVP
                  ! 4        S P                  VP                  S P                  4       SP                  4        R# )c           	      v  < T ;_uu_ 4        V P                  4       w  rT;_uu_ 4        SP                  SP                  4       VP                  R 4      pV'       g    RRR4       RRR4       R# VP	                  V4       RRR4       RRR4       R#   + '       g   i     L; i  + '       g   i     R# ; irS  )rE  r   rp   rU  r  )r  rF  r   rZ  r
  r   s   &   r   run3CreateServerFunctionalTest.echo_server.<locals>.runh  ss    ++-TJJt||,))D/C	   LL%  T s.   B'6B	B'1B	B'B$B''B8	r  N)	r   r   rC  rp   r7
  r9
  r   r  r   )r   r  r=  r   r
  s   f&  @r   echo_server&CreateServerFunctionalTest.echo_serverg  s`    	& !%!!8<T\\2		r   c                :   \         P                   ! VR 7      ;_uu_ 4       pVP                  V P                  4       VP                  V4       VP	                  R4       V P                  VP                  R4      R4       RRR4       R#   + '       g   i     R# ; i)r  rQ  rT  N)r8   rC  rp   rP  r  rX  rU  )r   rm  r;  r  s   &&& r   echo_client&CreateServerFunctionalTest.echo_clienty  sb    ]]&))TOODLL)LLLL TYYt_f5	 *)))s   AB		B	c                   \         P                  ! 4       p\        P                  ! R V34      ;_uu_ 4       pV P	                  V4       V P                  RV3\        P                  4       RRR4       R#   + '       g   i     R# ; i)rP  r2  N)r	   rX  r8   r"  r?  rB  r   r#  s   &  r   	test_tcp4$CreateServerFunctionalTest.test_tcp4  s]    --/!!2t*--T"k40&..A .---s   4A44B	r~  c                0   \         P                  ! 4       p\        P                  ! R V3\        P                  R7      ;_uu_ 4       pV P                  V4       V P                  RV3\        P                  4       RRR4       R#   + '       g   i     R# ; i)rP  r  r0  Nr	   rX  r8   r"  r  r?  rB  r#  s   &  r   	test_tcp6$CreateServerFunctionalTest.test_tcp6  sn    --/!!2t*)/: :=AT"eT]FOO<: : : :s   4BB	r2  c                2   \         P                  ! 4       p\        P                  ! R V3\        P                  RR7      ;_uu_ 4       pV P                  V4       V P                  RV3\        P                  4       RRR4       R#   + '       g   i     R# ; i)rP  Tr4  r2  N)r	   rX  r8   r"  r  r?  rB  r   r#  s   &  r   test_dual_stack_client_v44CreateServerFunctionalTest.test_dual_stack_client_v4  ss     --/!!2t*V__157 7:>T"k40&..A7 7 7 7   4BB	c                2   \         P                  ! 4       p\        P                  ! R V3\        P                  RR7      ;_uu_ 4       pV P                  V4       V P                  RV3\        P                  4       RRR4       R#   + '       g   i     R# ; i)rP  Tr4  r0  NrH  r#  s   &  r   test_dual_stack_client_v64CreateServerFunctionalTest.test_dual_stack_client_v6  sr     --/!!2t*V__157 7:>T"eT]FOO<7 7 7 7rN  r   N)r   r   r   r   r   rD  rp   r?  rB  rE  r#   r  r	   r  rI  r  r8   r8  rL  rP  r   r   r   s   @r   r:  r:  d  s     &&G$6B 335RS= T= __224435335RSB T5B __224435335RS= T5=r   r:  send_fdsrecv_fdsc                   &   a  ] tR tRt o R tRtV tR# )SendRecvFdsTestsi  c                z   R  pR p\        ^
4       Uu. uF  p\        P                  ! 4       NK  	  ppV P                  W4       V UUu. uF  w  rVVNK	  	  ppp\        P
                  ! \        P                  \        P                  4      w  rT;_uu_ 4        V	;_uu_ 4        \        P                  ! V\        .V4       \        P                  ! V	\        \        4      ^,          \        V4      ^,          4      w  rrV P                  W+4       RRR4       RRR4       V P                  X
\        4       V P                  \        X4      \        V4      4       V P                  X^ 4       \        V4       F7  w  rVw  rV\        P                  ! V\        V4      P!                  4       4       K9  	  \        V4       FE  w  r\        P"                  ! V^d4      pV P                  V\        V4      P!                  4       4       KG  	  R# u upi u uppi   + '       g   i     EL; i  + '       g   i     EL; i)c                 t    V  F1  w  r\         P                  ! V4       \         P                  ! V4       K3  	  R # r   rO  rD   )pipesr  fd2s   &  r   close_pipes8SendRecvFdsTests.testSendAndRecvFds.<locals>.close_pipes  s$    ! "r   c                 D    V  F  p\         P                  ! V4       K  	  R # r   rX  )rd  r@  s   & r   	close_fds6SendRecvFdsTests.testSendAndRecvFds.<locals>.close_fds  s     r   N)r  rO  piper   r8   r|  r  rc   rR  rY  rS  r  rX  rh  rb  r  r%  r  )r   r[  r^  r   rY  rfdwfdrd  r
  r
  rZ  fds2r  rm  r  r  s   &               r   testSendAndRecvFds#SendRecvFdsTests.testSendAndRecvFds  s   	
	
 %*"I.IqI.+#()5xss5) ((9K9KLUEEOOEC5#.%+__UCHqL#c(UV,%W"CuOOI,	 U 	c"TCH-" $E*JEHCHHS#e*++-. + $D/JE773$DTCJ$5$5$78 *- /) EEUUUs0   H

HH)$A.H	H)H& 	H))H:	r   N)r   r   r   r   rd  r   r   r   s   @r   rU  rU    s     #9 #9r   rU  c                   &   a  ] tR tRt o R tRtV tR# )FreeThreadingTestsi  c                \  a \         P                   ! \         P                  \         P                  4      oV3R  lpV3R lp\        P                  ! VR7      p\        P                  ! VR7      p\
        P                  ! W4.4      ;_uu_ 4         RRR4       R#   + '       g   i     R# ; i)c                  L   < \        R 4       F  p SP                  4        K  	  R# r  N)r  rD   r   rG   s    r   rD   8FreeThreadingTests.test_close_detach_race.<locals>.close  s    4[	 !r   c                  L   < \        R 4       F  p SP                  4        K  	  R# rj  )r  r:  rk  s    r   r:  9FreeThreadingTests.test_close_detach_race.<locals>.detach  s    4[
 !r   r5
  N)r8   r   rc   r   r7
  r
   start_threads)r   rD   r:  t1t2rG   s   &    @r   test_close_detach_race)FreeThreadingTests.test_close_detach_race  sn    MM&..&*<*<=		 U+V,++RH55 6555s   BB+	r   N)r   r   r   r   rr  r   r   r   s   @r   rg  rg    s      r   rg  c                  |    \         P                  ! 4       p \        P                  ! \         P                  .V O5!   R # r   )r
   threading_setupr#   addModuleCleanupthreading_cleanup)thread_infos    r   setUpModulery    s*    "224K.@@O;Or   __main__rr  )r#   r   testr   test.supportr   r   r   r   r	   r
   test.support.import_helperr   _threadr   r   r-   r  r"  rU  rV  r  rO  r  r{   r   r,  r\  r  r  r8   r.  r;   rz   rw  r   rL  r  r|   weakrefr   r	  rB  r6   r  requires_working_socketr1  r%  rY  rB  systemr   releaseWSLr$  r1   r?   rH   rM   rQ   rU   rZ   r]   r`   re   rh   rl   r  rr   r   HAVE_SOCKET_CANHAVE_SOCKET_CAN_ISOTPHAVE_SOCKET_CAN_J1939HAVE_SOCKET_RDSHAVE_SOCKET_ALGHAVE_SOCKET_QIPCRTRHAVE_SOCKET_VSOCKr7   r  r  r  HAVE_SOCKET_UDPLITEHAVE_SOCKET_BLUETOOTHrG  HAVE_SOCKET_HYPERVrR  r  r=  r   r   r   r   r   r   r   r   r  r  r  r$  r,  r  r:  rf  rx  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r,  rC  rf  rr  r  r  r  r  rI  rr  r  r  r  r$  r,  r2  r7  rC  rL  rP  r  r  r  r  r  r'  rL  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	  r	  r	  r	  r	  r	  r	  r 
  r
  r
  r
  r
  r3
  rN
  rW
  rv
  r
  r
  rS  r|  r  r  r  r  r  r  r  r  r  r  r  r  r  r%  r1  rM  rt  r  r  r  r  r  r  r  r  r  r
  r   r$  r  r  r  r  r
  r  r   r:  rU  rg  ry  r   mainr   r   r   <module>r     s       ;     	 	   	     	      
         t ,)009	oo5 ("2"2"44:(
 . .  " #$.0 .0 "$"$*, &(  F%& K KIIH$8$8$:$D$Dr$IJ  /0 :< (*  [[&&
>X&& >	H%% 	H%% 7 70+H%% 0+f7H%% 7 m m^,M> ,,M> , 
(
35, 1> ,5,,M> ,(,M> ,, 
$-	<=	&
13	WY!^DF#H$5$5~ #F3 > .#J3/ 3B,X&& ,H1X&& 10~ ,nn ,<!!76!!H3 3A' A
6> 
6A, A@, @Xl X2\ 2 L  
A= AY} Y/.F3>kG** kG\' 
_&IJP[8$$ P[ KP[f 
_&IJW=# W= KW=t 
*,OP'!! ' Q'T 
*,OP:!! : Q:z 
_&KLG8$$ G MG" 
_&KL<9# <9 M<9| 
(
357x(( 7576 
$-	&
13,DX&& ,D3 .,D^ 
WV^4@BJ!** J!BJ!X 
*@BI#H%% I#BI#X 
'>@/7h'' /7@/7d!& !D3( 3: 
(
3530 353nt8 t8n	6 	6F F@ @9O 9* (5? 5t@/ t@n:" :"z. ."SM/ SMl  3  F& :M5')< M5`8IX&& 8Ivz!0 z!zq7 ql	6:4k	
 fmmY'	/1G 	 (	 fmmY'	\#9 	 (	 fmm^,	)+A 	 -	17;5|1 fmmY'	]//1OPz<(	02I 	 ) Q (	 fmmY'	]//1OPz<(	l$; 	 ) Q (	 fmm^,	]//1OPz<(	*,C 	 ) Q -	 fmmY'	]//1OPfn%z<(	&:&=	 ) & Q (	 fmm^,	]//1OPfn%z<(	*:*>*A	 ) & Q -	 
(
35	!::4o	5	
 
(
35fmmY'	35O 	 (5	 
(
35fmmY'	'A 	 (5	 
(
35fmm^,	-/I 	 -5	 
(
351";;57G151 fmmY'	]//1OP	(
35z<(	46Q 	 )5 Q (
	 fmmY'	]//1OP	(
35z<(	,(C 	 )5 Q (
	 fmm^,	]//1OP	(
35z<(	.0K 	 )5 Q -
	 fmmY'	]//1OP	(
35fn%z<(	*>&A	 ) &5 Q (	 fmm^,	]//1OP	(
35fn%z<(	.>*>*E	 ) &5 Q -		55{	 fmmY'	')? 	 (	 fmmY'	\#<+	 (	 fmm^,	)+D/	 -	
	$<$<$<n	
 fmmY'	NOy-8	.0M 	 9 P (	 fmmY'	NOy-8	RL*C9	R 9 P (	R fmm^,	NOy-8	R 02K =	R 9 P -	R	$<$<n	 fmmY'fi 	.0M 	 ! (	 fmmY'fi 	L*C9	 ! (	 fmm^,fi 	 02K =	 ! -	 fmmY	2fi|<	0M 	 = 3	 fmmY7fi|<	%5}%B	 = 8	" "@ fn%	WVW-MM1MBD$M!7 $MD &$MR fn%	WVW-MM1MBD3F!7!9;3FD &3Fl0) 0* #.  #Fg~ gT/ D`1 `FkG(? kG\*A 
+B 
)@ *A .E "F ")< P5 1 1 P5fF4m^ F4R>]N >>75] 75rK] K. 
(
35K* K5K.$X&& $. 
S\\%99;PQ4H!2!2 4H R4Hn 
WVY/1LMH7X&& H7 NH7VP:& P:f 


( 
_&MO#x   #O#, 
_&MO$**N $O$N)9/ )9X@6h'' @6F 
WV_5029$8,, 9$29$x 
RWW_&89	_&<=b# b# > :b#JF=1 F=R 
WR,<>7 5 7>7 
_&78J*8,, J* 9J*Z 
S\\X-/DE.)) . F. 
WV^46PQ*x(( * R*, 
S\\,,U35GHQH-- Q IQ00;x(( 0;f>=!2!2 >=@ fj!fj!fi $9x(( $9 ! " "$9N** (P
 zMMO Gf  O  E  I  Gs\   AN AN. AN> ;AO N	AN+N*AN+N.	AN;N:AN;N>	AOO
AOO	AOOAO