+
    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FT)r8   PF_CANSOCK_RAWCAN_RAWcloseAttributeErrorr=   ss    r   _have_socket_canrI   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rA   )r8   rB   
SOCK_DGRAM	CAN_ISOTPrE   rF   r=   rG   s    r   _have_socket_can_isotprN   r   P    MM&--):):F<L<LM 	
		 G$ rJ   c                       \         P                   ! \         P                  \         P                  \         P                  4      p V P	                  4        R#   \
        \        3 d     R # i ; irA   )r8   rB   rL   	CAN_J1939rE   rF   r=   rG   s    r   _have_socket_can_j1939rR   |   rO   rJ   c                       \         P                   ! \         P                  \         P                  ^ 4      p V P                  4        R#   \        \
        3 d     R# i ; ir   FT)r8   PF_RDSSOCK_SEQPACKETrE   rF   r=   rG   s    r   _have_socket_rdsrW      J    MM&--)>)>B 	
		 G$    4A AAc                       \         P                   ! \         P                  \         P                  ^ 4      p V P                  4        R#   \        \
        3 d     R# i ; irT   )r8   AF_ALGrV   rE   rF   r=   rG   s    r   _have_socket_algr\      rX   rY   c                       \         P                   ! \         P                  \         P                  ^ 4      p V P                  4        R#   \        \
        3 d     R# i ; irT   )r8   
AF_QIPCRTRrL   rE   rF   r=   rG   s    r   _have_socket_qipcrtrr_      sL    MM&++V->->B 	
		 G$ rY   c                      \        4       p V R J# r   )r?   )cids    r   _have_socket_vsockrb      s    
)CtOr   c                       \         P                   ! \         P                  \         P                  \         P                  4      p V P	                  4        R#   \
        \        3 d     R # i ; irA   )r8   AF_BLUETOOTHSOCK_STREAMBTPROTO_RFCOMMrE   rF   r=   rG   s    r   _have_socket_bluetoothrg      sT     MM&--v/A/A6CXCXY 	
		 G$ rJ   c                       \         P                   ! \         P                  \         P                  \         P                  4      p V P	                  4        R#   \
        \        3 d     R # i ; irA   )r8   rd   rV   BTPROTO_L2CAPrE   rF   r=   rG   s    r   _have_socket_bluetooth_l2caprj      sR    MM&--v/D/DfFZFZ[ 	
		 G$ rJ   c                       \         P                   ! \         P                  \         P                  \         P                  4      p V P	                  4        R#   \
        \        3 d     R # i ; irA   )r8   	AF_HYPERVre   HV_PROTOCOL_RAWrE   rF   r=   rG   s    r   _have_socket_hypervrn      sR    MM&**F,>,>@V@VW 	
		 G$ rJ   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_setdefaulttimeoutrt      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>   rv   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_INETre   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   rE   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   rL   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   rL   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^t Rt]P                  ! ]4      t	 Rt
]
R]P                  ! ]
4      ^,          ,          ,          t
R tRtV tR# )	SocketCANTesti'  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   rB   rC   rD   rH   
addCleanuprE   bind	interfacer=   skipTestr   s   &r   r   SocketCANTest.setUpP  s|    v}}foov~~N%	+FFKK)* 	+MMA>>* +	+s   .&B -CCrG   N)r   r   r   r   r   bufsizecan_frame_fmtr;   calcsizecan_frame_sizebcm_cmd_msg_fmtr   r   r   r   s   @r   r   r   '  s^      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V tR# )SocketRDSTestiZ      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   rU   rV   r   r   rE   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   s   @r   r   r   Z  s     
 G7 7r   r   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	# )
ThreadableTestij  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 # r   )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   s   @r   r   r   j  s+     L!
 (@",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   re   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
  rE   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   rL   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   rL   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   rB   rC   rD   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   rU   rV   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
  r4  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_VSOCKre   r   r   rE   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   rA  re   r
  r   rE   r?   VMADDR_CID_HOSTrB  VMADDR_CID_LOCALconnectrC  )r   ra   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)rG  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
  sendrZ  rE   r   s   &r   _testStream)ThreadedVSOCKSocketStreamTest._testStreamV       cr   )r
  rG  rH  r   Nr  r   r   r   r   r   r   r   r]  rb  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# )
SocketConnectedTestiZ  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   rF  cli_connr   rG  addrs   &  r   r   SocketConnectedTest.setUpd  s7    ##D) 	  "YY%%'
r   c                r    V P                   P                  4        R V n         \        P                  V 4       R # r   )rl  rE   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
  rQ  r2  r   	serv_connr   s   &r   r   SocketConnectedTest.clientSetUpq  s6    ))$/$		*+r   c                r    V P                   P                  4        R V n         \        P                  V 4       R # r   )rs  rE   r  r   r   s   &r   r   "SocketConnectedTest.clientTearDownv  s'    ,,T2r   rl  rs  Nr  )r   r   r   r   r   r   r   r   r   r   r   r   s   @r   rg  rg  Z  s$     D-
"
3 3r   rg  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   ry  ry  {  s(     #0
, ,r   ry  c                   2   a  ] tR tRt o R tR tR tRtV tR# )SocketTestBasei  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 # r   )bindSockr   r3  	serv_addrr   s   &r   r  SocketTestBase.bindServer  s&    dii ..0r   )r   r  N)	r   r   r   r   r   r  r  r   r   r   s   @r   r  r    s     
1 1r   r  c                   2   a a ] tR tRt oV 3R ltRtVtV ;t# )SocketListeningTestMixini  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   __classcell__r  r   s   @@r   r  r    s      r   r  c                   J   a a ] tR tRt oV 3R ltR tR tR tR tRt	Vt
V ;t# )ThreadedSocketTestMixini  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       # r   )r  r   s   &r   r  'ThreadedSocketTestMixin.newClientSocket  s    ~~r   c                z    V P                  V P                  4       V P                  P                  4       V n        R # r   )r  r
  r3  r4  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   r8  )r   r   r   r   r   r   r  r  r   r   r   r  r  s   @@r   r  r    s#     & /
, ,r   r  c                   V   a a ] tR tRt o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  c                   < \         SV `  4        V P                  4        V P                  P	                  4       w  rWn        R # r   )r  r   r   r   rF  rl  )r   rG  rn  r  s   &  r   r   ConnectedStreamTestMixin.setUp  s3     	  "YY%%'
r   c                f   < V P                   P                  4        R V n         \        SV `  4        R # r   )rl  rE   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
  rQ  r  rs  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   )rs  rE   rF   r  r   r  s   &r   r   'ConnectedStreamTestMixin.clientTearDown  s@    	NN  "!DN 	   		s   !4 AArw  )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V tR# )UnixSocketTestBasei  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   s   @r   r  r    s     3 3r   r  c                   &   a  ] tR tRt o R tRtV tR# )UnixStreamBasei  c                h    \         P                   ! \         P                  \         P                  4      # r   )r8   AF_UNIXre   r   s   &r   r  UnixStreamBase.newSocket      }}V^^V-?-?@@r   r   Nr   r   r   r   r  r   r   r   s   @r   r  r         A Ar   r  c                   <   a a ] tR tRt o]tV 3R ltR tRtVt	V ;t
# )InetTestBasei  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   r2  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V tR# )TCPTestBasei!  c                h    \         P                   ! \         P                  \         P                  4      # r   )r8   r   re   r   s   &r   r  TCPTestBase.newSocket$  r  r   r   Nr  r   s   @r   r  r  !  r  r   r  c                   &   a  ] tR tRt o R tRtV tR# )UDPTestBasei'  c                h    \         P                   ! \         P                  \         P                  4      # r   )r8   r   rL   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V tR# )UDPLITETestBasei-  c                    \         P                   ! \         P                  \         P                  \         P                  4      # r   )r8   r   rL   r   r   s   &r   r  UDPLITETestBase.newSocket0  s%    }}V^^V->->@V@VWWr   r   Nr  r   s   @r   r  r  -  s     X Xr   r  c                   &   a  ] tR tRt o R tRtV tR# )SCTPStreamBasei3  c                    \         P                   ! \         P                  \         P                  \         P                  4      # r   )r8   r   re   IPPROTO_SCTPr   s   &r   r  SCTPStreamBase.newSocket6  s*    }}V^^V-?-?#002 	2r   r   Nr  r   s   @r   r  r  3  s     2 2r   r  c                   .    ] tR tRt]P
                  tRtR# )Inet6TestBasei;  r   N)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V tR# )UDP6TestBasei@  c                h    \         P                   ! \         P                  \         P                  4      # r   )r8   AF_INET6rL   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V tR# )UDPLITE6TestBaseiF  c                    \         P                   ! \         P                  \         P                  \         P                  4      # r   )r8   r  rL   r   r   s   &r   r  UDPLITE6TestBase.newSocketI  s%    }}V__f.?.?AWAWXXr   r   Nr  r   s   @r   r  r  F  s     Y Yr   r  c                 8   aa R  oVV3R lpR pV '       d   V# T# )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 )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)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   rE   r=   r  format)r%   errr  r  callargsrH   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# r1  )r&  r#  r8   
SocketTypeassertIsInstancerE   )r   r&  rH   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   re   assertInfilenorX  assertNotInr   r  r3  r   rH   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   re   r6  familyr  protorY  rX  rE   )r   rH   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   re   r   rY  r6  r   
gc_collectfailReferenceError)r   rH   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=   r[  Nzsocket.herrorzsocket.gaierror)assertRaisesr=   r8   herrorgaierrorr   r[  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))rR  r   )r8   r   rL   r   rE   r   r3  rK  r   sendtorY  r  	exceptionr5  )r   rH   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  re   rL   rC   SOCK_RDMrV   
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_UDPr\  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)ru  r   rQ  
connect_exgetpeernamer3  r   recvfromrecvfrom_intorU  
setsockoptshutdown)r7   r8   rD  )r   namesr  s   &  r   test_socket_methods&GeneralModuleTests.test_socket_methods  s;    

 D6==$//		N4&<= r   r{   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getfqdnrD  rX  )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	   HOSTv4rY  r8   r  r5  r  )r   rn  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 serverrJ  N)z0.1.1.~1z1+.1.1.1z::1qz::1::2z1:1:1:1:1:1:1:1:1)rK  r=   r8   r  r  )r   explanationrn  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   barrT  )r8   r  r  r=   errnoEPERMr   rY  )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# r1  )	r8   r  r-  intr  assertGreaterif_nametoindexrY  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    )
rK  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)rK  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)r|   r  r   r8   getnameinfor   rD  )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itemsrY  rK  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  rK  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  )rY  r|   r}   
startswithr   r8   getservbynamer=   r   
is_androidandroid_ver	api_levelgetservbyportrK  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  )	rY  r8   rp   
gettimeoutrt   rq   rK  r  r   )r   rH   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          )rY  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   rK  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   rY  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  r\  IPv6 not available+could not import needed symbols from socketrv   ::&'  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  r\  r   ImportErrorr|   r}   r=   winerrorrY  r   )r   r\  r   r4  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_ntoarH  r   c                    < S! SV 4      # r   r   )r)  r   rH  s   &r   r   5GeneralModuleTests.testStringToIPv4.<locals>.<lambda>  r+  r   c                 <   < SP                  \        \        3W4      # r   r-  r.  s   &&r   r   rL    r/  r   z1.0.1.0s     z170.85.170.85s   UUr  r#  r1  r0  Ns      s        rC  )r8   rJ  rH  r   rY  	bytearray)r   r   r3  r4  r   rH  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   )rH  r  r\  r8  r9  rv   r;  r<  Nc                    < S! SV 4      # r   r   )r)  r  rH  s   &r   r   5GeneralModuleTests.testStringToIPv6.<locals>.<lambda>  r?  r   c                 >   < SP                  \        \        3SV 4      # r   r-  rA  s   &r   r   rS    rB  r   r:  r2  z!aef:b01:506:1001:ffff:9997:55:170s   
 UprC  s                  s   s   s   )r8   rH  r  r\  r   rD  r|   r}   r=   rE  rY  rN  )r   r\  r   r4  r  r   rH  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   re   r   rE   	itertoolscountr	   find_unused_portr   r=   r  
EADDRINUSEr3  r  r  r   r5  rY  )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   re   r   rE   
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   re   r   rE   rz  r^  r_  r`  ra  rb  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   re   rD  rK  r=   ra  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   r6  z#close() should raise EBADF/ENOTSOCKN)r8   r   
_LOCALHOSTr6  rE   rD  r=   r5  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   re   rY  r=  r7   r5  r  ru  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   rE   r	   rZ  rK  r  r   r2  rX  rY  r=   r  r[  )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   rE   rK  r  r:   r  r8  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   rE   r:   r  r=   rE  r   rK  r   )r   rH   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 versionNr4  r2  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   getaddrinforM  r  EAI_SERVICEr   r2  rY  lenr	   IPV6_ENABLEDr   r  r}   r  r  r   re   rX  valuer  SOL_TCP
AI_PASSIVE	AF_UNSPECrK  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  re   r  rD  rM  )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   )rK  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  re   )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# r1  rK  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# r1  r  r  s   *r   raising_handlerEGeneralModuleTests.check_sendall_interrupted.<locals>.raising_handler  s"    j$**a8FFr   g      ?   xN)r7   signalr8   r   r}  SIGALRMrD  rK  ZeroDivisionErrorr  sendallr   SOCK_MAX_SIZETimeoutErrorrE   )r   with_timeoutr  r  crH   	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   re   rX  assertWarnsResourceWarningr   rC  r5  r  warningr%   makefile)r   r  r>   rX  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   re   r  rE   rY  rX  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#  readablera  writableseekablerE   rK  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   r2  rE   r6  rK  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  rY  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_PROTOCOLrK  r   dumpsloadsr   rY  re   )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   re   r   r2  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r1  )
r  r8   r   re   r   r2  rK  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)	rK  r  r8   r  r	   r  r  re   r   r8  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  rL   rd  rY  )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!  r:  N)rY  r8   r  r   s   &r   test_getfqdn_filter_localhost0GeneralModuleTests.test_getfqdn_filter_localhost  sB    )6>>)+DE)6>>$+?@r   rv   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  rL   rd  rY  )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  rL   rd  rY  )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_NUMERICSERVrY  )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(  rY  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   re   rY  rX  r=  r  r  r  r8  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_NONBLOCKru  TFN)r   r8   re   r   rY  r  rD  setblocking)r   r3  ru  	sock_typerH   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)r3  N>   ru  r3  r   )r  r  kinds   &  r   r  EGeneralModuleTests.test_unknown_socket_family_repr.<locals>.<genexpr>  s$      
C
<< DCs   
)r=  r  r>  r6  N)r8   r   re   detachmaxAddressFamily__members__values
SocketKindr  rY  r=  r  r5  r>  )r   r  fdunknown_familyunknown_typerH   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   rB  )r   rB  s   &&r   r   EGeneralModuleTests.test__sendfile_use_sendfile.<locals>.File.__init__  s    r   c                    V P                   # r   rL  r   s   &r   r6  CGeneralModuleTests.test__sendfile_use_sendfile.<locals>.File.fileno  s    wwr   rL  N)r   r   r   r   r   r6  r   r   r   s   @r   FilerJ    s      r   rP  Nr  )r8   osr9   curdirO_RDONLYrE   rK  _GiveupOnSendfile_sendfile_use_sendfiler  r   )r   rP  r  rB  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# rn  N)rY  r=  r  r6  r8   r   rE   r<  )r   rH   r=  styperB  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   rL   r  N)r8   r   re   r   rE   r   r	   r2  r\  r7   rL   r  r  r  r  r   r  r  rW  )r   rH   	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@rn  NrK  r   r8   r   re   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(  rn  Nrc  r   s   &r   &test_socket_fileno_rejects_other_types9GeneralModuleTests.test_socket_fileno_rejects_other_types3  s<    y))MM&..&*<*<UK *)))rf  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 descriptorrn  Nr  r'  r  r8   r   re   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)rk  rn  Nirl  r   s   &r   #test_socket_fileno_rejects_negative6GeneralModuleTests.test_socket_fileno_rejects_negative;  s@    ##J0JKKMM&..&*<*<SI LKKKro  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'  rn  N)rK  r=   r8   r   make_bad_fdr5  rV  r  rp  r   re   )r   WSAENOTSOCKrX  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rY  )tempfileNamedTemporaryFilerK  r=   r8   r6  r   re   rY  rV  r  rq  )r   afilerX  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   NrA  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   rA  )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.  r9  r@  rG  rO  rY  r`  rf  rQ  r  rr  skipIfr   is_wasir}  r|   r}   r	   r  r  r  r  r  r7   r8   r  skip_android_selinuxr  r  r  r  r  r  r  r  r  r$  r5  rF  rO  rU  r]  rd  rg  rk  rr  rv  r{  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-  r0  r6  rE  rV  r\  r`  rd  rh  rm  rq  rv  r|  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_CANrB   rD   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   rB   rC   rD   r8  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   rB   rL   r  r8  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)rR  N)rR  )r8   rB   rC   rD   r   rY  r3  )r   rH   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   rB   rC   rD   r'  r=   r   r8  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   rB   rC   rD   rz  SOL_CAN_RAWr  rY  r`  )r   rH   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   rB   rC   rD   rz  r  r  rY  r`  rN  )r   can_idcan_mask
can_filterrH   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__  rj  r   c                    \        V4      pVP                  ^R4      p\        P                  ! V P                  WV4      # )   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# r   )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# r1  )rH   rx  r   rY  cfr   r   r   rn  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
  ra  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   )rH   rx  r   rY  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   )rH   rx  r   rY  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
  ra  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
  rx  r   rY  r   r  r  r  )r   r   rn  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
\        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   rB   rL   r  r   rE   rQ  r   r  bytesr  r  r   r  r;   r  r   ra  rY  r  )r   bcmopcoder  rY  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]
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  rB   rM   rL   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  r8  s   & r   r  ISOTPTest.testCreateSocket9	  r  r  rM   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   rB   rL   rM   r8  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   rB   rL   rM   r'  r=   r   r8  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   rB   rL   rM   r   r   rY  r3  r=   r  ENODEVr   r   rH   rn  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   r:  r  rB  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# r1  r2  r  s   &*,r   r   J1939Test.__init__Z	  r4  r   rQ   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   rQ   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   rB   rL   rQ   r8  s   & r   testCreateJ1939SocketJ1939Test.testCreateJ1939Socket	  r<  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   rB   rL   rQ   r   rM  rS  rL  r   rY  r3  r=   r  r@  r   rA  s   &   r   rB  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.rD  )r   r   r   r   r   r#   r  r7   r8   ra  rd  rB  r   r   r  r  s   @@r   rF  rF  W	  so     ! 5CE E B 5CEE r   rF  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_RDSrU   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r1  )r8   rU   rV   r8  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   rU   rV   rz  r^  	SO_RCVBUF	SO_SNDBUF)r   r   rH   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  rr  r   r   r   s   @r   ri  ri  	  s     G Gr   ri  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__	  rj  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   rx  r   rY  r  r4  r   r  rn  s   &  r   testSendAndRecvRDSTest.testSendAndRecv	  sD    YY''5
D)-r   c                    R V n         V P                  P                  V P                   ^ \        V P                  34       R# rj  Nr  r
  rU  r2  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   rx  r   r8   MSG_PEEKrY  r  r|  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   rY  r  )r   r  ancdata	msg_flagsrn  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  r2  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   rx  r   rY  data1data2r|  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
  rU  r2  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   r5  rx  r   rY  r  )r   r>   r  r   r  rn  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  ry  r  )r   r   r   r   r   r   r}  r  r  r  r  r8   r  r  r  r  r  r  r   r   r  r  s   @@r   ru  ru  	  s}     D%.
9*9 &--+* ,* &--+@ ,@+:*9 9r   ru  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^   rL   r8  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^   rL   rY  r3  r8  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^   rL   r	   r   r3  assertNotEqualr8  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^   rL   rK  r=   r	   r   r8  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^   rL   rQ  r  r3  r8  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   rA  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_SIZErB  VMADDR_PORT_ANYrP  rO  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   rA  re   r8  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   rA  re   r`  r  r  r  rz  rY  )r   rH   orig_maxr  orig_mins   &    r   rr  #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  rr  r   r   r   s   @r   r  r  
  s      
	.D Dr   r  rd   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# )
rv   r  BT_PHYBT_MODEBT_VOICEr  N)r  r  )r  r  	dragonfly)r  r  );r8   
BDADDR_ANYBDADDR_LOCALrd   rf   
SOL_RFCOMMr|   r}   SO_BTH_ENCRYPT
SO_BTH_MTUSO_BTH_MTU_MAXSO_BTH_MTU_MINBTPROTO_HCISOL_HCIri   	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   rd   re   rf   r8  s   & r   testCreateRfcommSocket$BluetoothTest.testCreateRfcommSocket
  s=    ]]6..0B0BFDYDYZZ^_ [ZZZr  rv   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   rd   rV   ri   r8  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   rd   rC   r  r8  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   rd   rV   r  r8  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   rd   rV   ri   r   r  r3  rY  )r   r  r   CID_ATTrn  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   psmrn  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   rd   rV   ri   r   r  r3  rY  )r   r   r  rn  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   rd   rV   ri   rK  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   rv   iB'  Nz"(?i)[0-9a-f]{2}(?::[0-9a-f]{2}){4})r8   rd   re   rf   r   r  r=   r|   r}   rE  r   r  r3  rY  r   ANYassertRegex)r   rH   channelr  rn  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   rd   re   rf   rK  r=   r   r  r(  )r   rH   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  )r|   r}   r  r8   rd   rC   r  r   r  r3  rY  r=   r  EINVALr@  r   r  r  r  r  r  EBUSYERFKILL)r   rH   rn  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  Nr3  r'  r4     invalidr9  zd                                                                                                    r   )r8   rd   rC   r  r|   r}   r  rK  r=   r   r  r(  r  r  )r   rH   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   rd   rV   r  r   r  r3  rY  r(  )r   rH   rn  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)Nr3  r   r'  r4  rA  )r8   rd   rV   r  rK  r=   r   r  r(  r  r  r8  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  r|   r}   r  r  r  r  HAVE_SOCKET_BLUETOOTH_L2CAPr  r   r$  r)  r0  r5  r7   r8   r>  rB  rE  rH  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   rl   re   )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   rl   re   rm   r'  r   reescaperQ  rR  r   r?  rH   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^  ra  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)re  N)r   r  )	r8   rl   re   rm   r'  r   r_  r`  rQ  ra  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   rl   re   rm   r'  r  r_  r`  rQ  rR  ra  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 stringrl  Nrm  ra  s   &  r   6testCreateHyperVSocketAddrServiceIdNotValidUUIDFailureFBasicHyperVTest.testCreateHyperVSocketAddrServiceIdNotValidUUIDFailure~  s    W]]6++V-?-?AWAWXX\]''
BIIh4GHH		6..56 I YXHH YXXrp  r   N)r   r   r   r   rX  r[  rb  rf  ri  rn  rr  r   r   r   s   @r   rL  rL  Q  s.     
@
/2"77 7r   rL  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  rg  r   r  s   &&r   r   BasicTCPTest.__init__      $$T$Ar   c                h    V P                   P                  R 4      pV P                  V\        4       R# rT  )rl  rV  rY  rZ  rN  s   & r   testRecvBasicTCPTest.testRecv  s&    mm  &c"r   c                D    V P                   P                  \        4       R # r   rs  ra  rZ  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#    rU  N)rl  rV  r  rZ  rY  )r   seg1seg2r[  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# rT  )rl  rx  rY  rZ  r   r[  rn  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  )rl  rx  r  rZ  rY  )r   r  rn  r  r[  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   rU  N   ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff)rl  rV  rY  )r   r[  reads   &  r   testSendAllBasicTCPTest.testSendAll  s;    ==%%d+DKCk*r   c                @    RpV P                   P                  V4       R# )   fNr  )rs  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# rT  )rl  r6  r8   fromfdr   re   r   rE   r-  rV  rY  rZ  )r   rB  r  r[  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# rT  )rl  dupr   rE   rV  rY  rZ  )r   r  r[  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# rT  )rl  rV  rY  rZ  r   r   rN  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  )rs  ra  rZ  r{  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# r1  )	r  rs  ra  rZ  rK  r  r{  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# )rU  rn  N)rl  r6  r<  rY  r#  _closedrK  r=   rV  rE   r8   r   re   r   rZ  )r   r6  r   r  r[  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   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   s   @r   ru  ru    s     B#
!#!#
!#!+*#!#!# __Y$&(<= >  __Y$&(<=# > ## ! !r   ru  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__	  rj  r   c                    V P                   P                  \        \        4      4      pV P	                  V\        4       R # r   r   rV  r  rZ  rY  rN  s   & r   testSendtoAndRecvBasicUDPTest.testSendtoAndRecv  (    iinnSX&c"r   c                h    V P                   P                  \        ^ \        V P                  34       R# r1  r
  rU  rZ  r2  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   rx  r  rZ  rY  r  s   &  r   r  BasicUDPTest.testRecvFrom  ,    II&&s3x0	c"r   c                h    V P                   P                  \        ^ \        V P                  34       R# r1  r  r   s   &r   r  BasicUDPTest._testRecvFrom  r  r   c                \    V P                  \        V P                  P                  R4       R# r   Nr  rK  r  r   rx  r   s   &r   testRecvFromNegative!BasicUDPTest.testRecvFromNegative      *dii&8&8"=r   c                h    V P                   P                  \        ^ \        V P                  34       R# r1  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  rN  s   & r   r  "BasicUDPLITETest.testSendtoAndRecv+  r  r   c                h    V P                   P                  \        ^ \        V P                  34       R# r1  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# r1  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# r1  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_sockra  rN  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   rY  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  rY  )
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   rE  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)rN  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   r3  r  r   r   r  r  s   @@r   r5  r5    s!      @ @ @r   r5  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  rU  r  rN  s   &&r   r  *SendrecvmsgConnectionlessBase.sendToServer  s    }}##C88r   r   N)r   r   r   r   r3  r<  r  r  r  r   r   r   s   @r   r:  r:    sK     
     + +9 9r   r:  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   )rl  r   s   &r   r<  "SendrecvmsgConnectedBase.serv_sock  s    }}r   c                    V P                   # r   )rs  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   r3  r<  r  r  r   r   r   s   @r   rF  rF    s7          r   rF  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   r<  rD  r%  r  s   &r   r   "SendrecvmsgServerTimeoutBase.setUp  s$    !!$"3"34r   r   r  r  s   @@r   rO  rO    s     5 5r   rO  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   rY  r<  rV  r  rZ  r   s   &r   testSendmsgSendmsgTests.testSendmsg%  %    ,,SX6<r   c                l    V P                  V P                  \        .4      \        \        4      4       R # r   rY  r  rZ  r  r   s   &r   _testSendmsgSendmsgTests._testSendmsg)  s#    --se4c#h?r   c                ~    V P                  V P                  P                  \        \        4      4      \        4       R # r   rU  r   s   &r   testSendmsgDataGenerator%SendmsgTests.testSendmsgDataGenerator,  rX  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  NrZ  r   s   &r   _testSendmsgDataGenerator&SendmsgTests._testSendmsgDataGenerator0  s,    --.@3%.@AS	#r   c                ~    V P                  V P                  P                  \        \        4      4      \        4       R # r   rU  r   s   &r   testSendmsgAncillaryGenerator*SendmsgTests.testSendmsgAncillaryGenerator4  rX  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   rZ  r   s   &r   _testSendmsgAncillaryGenerator+SendmsgTests._testSendmsgAncillaryGenerator8  s,    --se__ES	#r   c                ~    V P                  V P                  P                  \        \        4      4      \        4       R # r   rU  r   s   &r   testSendmsgArraySendmsgTests.testSendmsgArray<  rX  r   c                    V P                  V P                  \        P                  ! R \        4      .4      \	        \        4      4       R# BN)rY  r  r   rZ  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   rU  r   s   &r   testSendmsgGatherSendmsgTests.testSendmsgGatherD  rX  r   c                    V P                  V P                  \        R ,          \        R,          .4      \        \        4      4       R# :Nr  N:r  NNNrZ  r   s   &r   _testSendmsgGatherSendmsgTests._testSendmsgGatherH  s.    --s2wB.@A3s8Lr   c                \    V P                  V P                  P                  R 4      R4       R# r     doneNrY  r<  rV  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)rK  r   r  r  r  objectrZ  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# r}  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!  rK  r   r  rZ  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# r}  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# r}  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   rK  r=   r  rZ  assertIsNonerV  r  r  r   rX  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  rE   rK  r=   r  rZ  r   s   &r   _testSendmsgAfterClose#SendmsgTests._testSendmsgAfterClose  s,    '4#7#7#?r   r   N)r   r   r   r   rV  r[  r^  rc  rf  rk  rn  rs  rv  rz  r  r  r  r  r  r8   r  r   r  r  r  r  r  r   r   r   s   @r   rS  rS  !  s     =@=#=#=#=M=#$=# &,'= (=
 ((# )#=
#@ @r   rS  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   rU  r   s   &r   testSendmsgExplicitNoneAddr.SendmsgStreamTests.testSendmsgExplicitNoneAddr  rX  r   c                r    V P                  V P                  \        .. ^ R4      \        \        4      4       R# r1  rZ  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  rr   N   aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaarY  r<  rV  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  rD  r  rD  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  )rK  r=   r  r8   MSG_DONTWAITr5  rV  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  r|   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  rM  r   c                    V P                  \        V P                  P                  \        .4       V P                  \        V P                  P                  \        .. ^ R4       R# r1  )rK  r=   r  r  rZ  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	  r<  r  rZ  rY  r  r4  r!  r   r[  r  r  rn  s   &    r   testRecvmsgRecvmsgGenericTests.testRecvmsg  sa    $(NN4>>3s8$L!ec"  }}5"%4(r   c                0    V P                  \        4       R # r   r  rZ  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# rT  )r<  rE   rK  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)	r<  rD  rK  r  r	  r  rZ  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  NFr1  r  r  Tr  r  )r	  r<  r  rZ  r8   r  rY  r  r4  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  )
r<  rD  r%  r	  r  rZ  rY  r  r4  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# ry  rZ  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# )rU  r   Nr  )r	  r<  rY  r  r4  r!  r  s   &    r   testRecvmsgEOF(RecvmsgGenericStreamTests.testRecvmsgEOF  s]    $(NN4>>4$H!ec"  }}5"%4(r   c                :    V P                   P                  4        R # r   )r  rE   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  rU  TN)r	  r<  r  rZ  r  r4  rY  r!  )r   r  r  r  rn  r  r[  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  )rK  r   r<  r  r  r  rZ  rN  r  rY  r  r4  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  )rN  r  rZ  rK  r   r<  r)  r  r  rY  r  r4  r!  r   r,  nbytesr  r  rn  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)	rN  r  rZ  r<  r)  rY  r  r4  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# )rr  Tr  N)
r   r  rZ  r<  r)  rY  tobytesr  r4  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)	rN  r<  r)  
memoryviewrY  r  r  r4  r!  )r   b1b2b3r-  r  r  rn  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# )rD  N)r  r   s   &r   _testRecvmsgIntoScatter(RecvmsgIntoTests._testRecvmsgIntoScatter  s    34r   r   N)r   r   r   r   r.  r1  r6  r9  r=  r@  rI  rL  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   rP  listr  r  r   itemsizerY  r+  rK  r  r|   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   rR  r   Nr  )rS  r8   r  rT  r  r  r   rU  r*  rP  r+  rK  r  r|   rV  )r   rW  r@  lastrX  rY  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
  rS  rD  r  r8   rZ  r^  r   r   r   s   @r   rO  rO    so     = j)*;*;<&*%G &G( &,'I (I7  %$%s   A 	AArO  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  ry  mkstempr   rQ  r  rE   writer  r(  append)r   rX  fdsr   rB  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   rU  N)	enumeraterQ  lseekSEEK_SETrY  r  r  r(  )r   rg  rX  rB  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  rU  rQ  rE   )r   recvmsg_result
cmsg_level	cmsg_type	cmsg_datarg  rB  s   &&     r   rq  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)	rY  r  rZ  r8   r^  rt  r   rh  r  )r   rX  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)rY  rZ  r  r4  r!  r8   r#  r-  rT  r+  r  r   tupler^  rt  r  
SIZEOF_INTru  rn  )r   numfdsr  maxcmsgsignoreflagsr[  r  r  rn  rg  itemrw  rx  ry  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	  r<  r  rZ  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# r|  )
rY  r  rZ  r8   r^  rt  r   rh  r<  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r}  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	  r<  r  rZ  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	  r<  r  rZ  r8   rP  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	rh  rY  r  rZ  r8   r^  rt  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	  r<  r  rZ  r8   r  r  rP  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  rY  r  )r   r[  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	  r<  r  rZ  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  rZ  r8   r^  rt  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	  r<  r  rZ  rY  r  r4  r!  r8   r#  r+  r^  rt  
assertLessr  r   r[  r  r  rn  rw  rx  ry  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  rZ  r8   r^  rt  r   badfdr<  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	  r<  r  rZ  rY  r  r4  r!  r8   r#  r+  r   r^  rt  ru  rU  rn  )	r   r[  r  r  rn  rg  rw  rx  ry  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  )	rh  r  rZ  r8   r^  rt  r   r  r<  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)rY  rZ  r  r4  r!  r8   r#  )r   r  r  r[  r  r  rn  s   &&&    r   checkTruncatedHeader"SCMRightsTest.checkTruncatedHeaderB  s`     %+!ec"  }}5"%4&2C2C* 	 	,r   r{   z#80931c                    V P                  V P                  V P                  \        \        4      4      \
        P                  R 7       R# r  Nr  r	  r<  r  rZ  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	  r<  r  rZ  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	  r<  r  rZ  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# r1  )r  r	  r<  r  rZ  r8   rP  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	  r<  r  rZ  rY  r  r4  r!  r8   r#  r^  rt  r*  r+  r   ru  rU  rn  )r   ancbufmaxdatamindatar[  r  r  rn  rw  rx  ry  rg  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   rP  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   rP  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   rA  )>r   r   r   r   r  rh  rn  r  rq  r}  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   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   rb  rb  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   rb  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   )r7  )r   r  drw  rx  ry  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)r<  rz  r8   re  r  r  r   r	  r  rZ  rY  r  r4  r!  r#  r-  r  r  r  r  r   ru  r*  r+  )r   
ancbufsizemaxhopr  r[  r  r  rn  rw  rx  ry  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  rZ  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%  rY  r  rZ  r8   re  r  r   r:	  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#	  )r<  rz  r8   re  r  r  r  r   r	  r  rZ  rY  r  r4  r!  r#  r 	  r  r  r   ru  r*  r+  r  )r   r$	  r%	  r  r[  r  r  rn  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)	  )rE	  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  r7	  r   c                h    V P                  \        P                  ! \        4      ^,          R7       R# r  r*	  N)rE	  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^  r7	  r   c                @    V P                  R V P                  R7       R# r9	  rE	  r:	  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%  rY  r  rZ  r8   re  r  r   traffic_classr  r:	  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# r9	  rU	  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  rZ  r8   re  r  r   rY	  r<  r  r:	  r=   r-  r  r  rY  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   )r<  rz  r8   re  r  r  r   r	  r  rZ  rY  r  r4  r!  r#  )r   r$	  r  r%   r[  r  r  rn  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  rc	  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  r7	  r   c                H    V P                  ^ \        P                  R7       R# )r   rf	  Nrg	  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  r7	  r   c                *    V P                  ^R7       R# )r   r*	  N)rc	  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  r7	  r   c                @    V P                  ^\        ,          R7       R# rN	  )rc	  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  r7	  r   c                `    V P                  \        P                  ! ^ 4      ^,
          R7       R# )r   r*	  N)rc	  r8   rP  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  r7	  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  )r<  rz  r8   re  r  r  r   r   r	  r  rZ  rP  r  rY  r  r4  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  r7	  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)r<  rz  r8   re  r  r  r  r   r	  r  rZ  rY  r  r4  r!  r#  r5  r  r  r  r   ru  r*  r+  )r   r$	  r  r[  r  r  rn  rw  rx  ry  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'  r7	  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  r7	  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<  r7	  r   c                    V P                  \        P                  ! \        4      \        P                  ! ^ 4      ,           ^,
          4       R# r1  )r	  r8   r  r  rP  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  r7	  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   )r<  rz  r8   re  r  r  r  r   r   r	  r  rZ  r  r  rP  rY  r  r4  r!  r#  r  r  popremover   ru  r*  r+  r  )
r   r[  r  r  rn  
cmsg_typesrw  rx  ry  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  r7	  r   r   Nr  )r  r   rA  )4r   r   r   r   r:	  rY	  r 	  r&	  r  r8   r+	  r   r/	  r2	  r5	  r;	  r?	  rE	  rH	  rK	  rO	  rR	  rV	  rZ	  r]	  r`	  rc	  r  r  rl	  ro	  rr	  ru	  rx	  r{	  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  rL   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	  re  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   re   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^  rt  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   rE  rr   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   rD  rr   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
  rK  r  r   r  r%   r  rX  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# rT  )r 
  r   rV  r   s   &r   testInterruptedRecvTimeout5InterruptedRecvTimeoutTest.testInterruptedRecvTimeout  s    !!$))..$7r   c                d    V P                  V P                  P                  \        R 4      4       R# rT  )r 
  r   	recv_intorN  r   s   &r   testInterruptedRecvIntoTimeout9InterruptedRecvTimeoutTest.testInterruptedRecvIntoTimeout  s     !!$))"5"5yGr   c                R    V P                  V P                  P                  R 4       R# rT  )r 
  r   rx  r   s   &r   testInterruptedRecvfromTimeout9InterruptedRecvTimeoutTest.testInterruptedRecvfromTimeout  s    !!$))"4"4d;r   c                d    V P                  V P                  P                  \        R 4      4       R# rT  )r 
  r   ry  rN  r   s   &r   "testInterruptedRecvfromIntoTimeout=InterruptedRecvTimeoutTest.testInterruptedRecvfromIntoTimeout  s     !!$))"9"99T?Kr   r  c                R    V P                  V P                  P                  R 4       R# rT  )r 
  r   r  r   s   &r   testInterruptedRecvmsgTimeout8InterruptedRecvTimeoutTest.testInterruptedRecvmsgTimeout  s    !!$))"3"3T:r   r)  c                f    V P                  V P                  P                  \        R 4      .4       R# rT  )r 
  r   r)  rN  r   s   &r   !testInterruptedRecvmsgIntoTimeout<InterruptedRecvTimeoutTest.testInterruptedRecvmsgIntoTimeout  s#    !!$))"8"89T?:KLr   r   )r   r   r   r   r   r 
  r#
  r'
  r*
  r-
  r  r8   r0
  r3
  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  rs  r   rE   r   Thread	doConnectstartr   rF  rl  r  rD  rr   )r   
cli_threadrn  r  s   &  r   r    InterruptedSendTimeoutTest.setUp  s    ),,- %%T^^<
"ii..0t++,!!$,,/r   c                P    V P                   P                  V P                  4       R # r   )rs  rQ  r  r   s   &r   r;
  $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  )rK  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  )rB
  rs  ra  r   s   &r   testInterruptedSendTimeout5InterruptedSendTimeoutTest.testInterruptedSendTimeout  s    !!$.."5"5x@r   c                h    V P                  V P                  P                  RV P                  4       R# rE
  )rB
  rs  rU  r  r   s   &r   testInterruptedSendtoTimeout7InterruptedSendTimeoutTest.testInterruptedSendtoTimeout  s'     	!!$.."7"7"&..	2r   r  c                T    V P                  V P                  P                  R.4       R# rE
  )rB
  rs  r  r   s   &r   testInterruptedSendmsgTimeout8InterruptedSendTimeoutTest.testInterruptedSendmsgTimeout  s      	!!$.."8"88*Er   rw  )r   r   r   r   r   r;
  rB
  r   requires_mac_verrG
  rJ
  r  r8   rM
  r   r   r  r  s   @@r   r6
  r6
    s     0/
 b!$A %A b!$2 %2 b!$&--+F , %F Fr   r6
  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   rF  r  r   SHORT_TIMEOUTrY  rV  rE   )r   rG  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
  rQ  r2  r   ra  r  r   rS
  rY  rV  )r   r  r   s   &  r   
_testCloseTCPCloserTest._testClose  s    $		*+d]]DHH:r2w7L7LM
az*q)3/r   r   N)r   r   r   r   rT
  rW
  r   r   r   s   @r   rQ
  rQ
    s     
0 0r   rQ
  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  )ry  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   rY  r=  r  r   r  re   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# rT  r   rV  rY  rZ  rN  s   & r   r{  BasicSocketPairTest.testRecv  $    iinnT"c"r   c                D    V P                   P                  \        4       R # r   r
  ra  rZ  r   s   &r   r  BasicSocketPairTest._testRecv      cr   c                D    V P                   P                  \        4       R # r   r   ra  rZ  r   s   &r   testSendBasicSocketPairTest.testSend"      		sr   c                h    V P                   P                  R 4      pV P                  V\        4       R# rT  r
  rV  rY  rZ  rN  s   & r   	_testSendBasicSocketPairTest._testSend%  $    hhmmD!c"r   r   Nr  )r   r   r   r   r   r^
  ra
  rd
  r{  r  rp
  ru
  r   r   r   s   @r   rZ
  rZ
    s2     =('(## #r   rZ
  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   r}
  r8   r}  r  s   &r   r   !PurePythonSocketPairTest.tearDownC  s)    ==$ $F %r   c                h    V P                   P                  R 4      pV P                  V\        4       R# rT  rg
  rN  s   & r   	test_recv"PurePythonSocketPairTest.test_recvI  ri
  r   c                D    V P                   P                  \        4       R # r   rk
  r   s   &r   
_test_recv#PurePythonSocketPairTest._test_recvM  rm
  r   c                D    V P                   P                  \        4       R # r   ro
  r   s   &r   	test_send"PurePythonSocketPairTest.test_sendP  rr
  r   c                h    V P                   P                  R 4      pV P                  V\        4       R# rT  rt
  rN  s   & r   
_test_send#PurePythonSocketPairTest._test_sendS  rw
  r   c                    \         P                  ! \         P                  4      w  rVP                  4        VP                  4        R # r   )r8   r}  r   rE   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   re  IPV6_V6ONLY IPV6_V6ONLY option not supportedr  c                    \         P                  ! \         P                  4      w  rVP                  4        VP                  4        R # r   )r8   r}  r  rE   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   re   r4  rQ  BlockingIOErrorInterruptedError)r   rW  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   r3  rK  r=   r}  rE   )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   )r}
  )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   ry
  ry
  *  s     
5	.##
 __.99 9 9 -8879 335RS T9
B r   ry
  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)	rY  r   r  getblockingr6   F_GETFLrQ  
O_NONBLOCKbool)r   r  rr   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   r4  r
  rD  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   r4  rY  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   r3  ztest needs socket.SOCK_NONBLOCKc                   V P                   P                  4        \        P                  ! \        P                  \        P                  \        P
                  ,          4      V n         V P                  V P                   ^ 4       R# r1  )r   rE   r8   r   re   r3  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   )rt   r   rD  rF  r   rE   r  r  rm  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
  rQ  r2  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)rt   r   rD  rF  r   rE   rY  r  )r   default_timeoutrG  rn  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   r4  rM  	monotonicrK  r
  rF  r  r
  r   r  r   LONG_TIMEOUTrD  r   rE   r  r  )r   
start_timerG  rn  dtr  re  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
  rQ  r2  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   rF  r   rE   r4  rK  r
  rV  r  rZ  r
  r   r  r   r
  rD  rY  )r   rG  rn  r[  r  re  r  s   &      r   r{  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
  rQ  r2  r   r
  r   r  rZ  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   rF  r   rE   rD  r  rV  r  rZ  )r   large_timeoutrG  rn  r[  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
  rQ  r2  r   rD  r  r  rZ  )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
  r{  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]	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  r   strictNr4   r  c                2    \         P                  WR 7       R# r  rw  r  s   &&r   r    FileObjectClassTestCase.__init__l  ry  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_finishedrg  r   rl  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  rE   r#  closedrg  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)
rg  r   rs  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  rE   r#  r  rg  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)
rl  rD  r  r  rK  r  r=   r5  r  rV  )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  re  	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_msgrY  )r   	first_seg
second_segr[  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  re  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  rY  r  rN  s   & r   testFullRead$FileObjectClassTestCase.testFullRead  s&    nn!!#mm,r   c                    V P                   P                  V P                  4       V P                   P                  4        R # r   )r  re  r  rE   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  rY  )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  readlinerY  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   )rl  rE   r  r  rY  r  rN  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  rE   rl  rV  r  rZ  r  r  r  decoderY  rN  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   )rY  r  r  r   r  rl  r6  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   )rY  r  r  r  r  rs  r6  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  rE   rK  r  r6  rl  r=   r3  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   rZ  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  rS  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 ^ 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  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.  rY  r  rl  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# )rX  rY  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# rT  )rl  rE   rV  rY  r  r  rK  r=   rN  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  )r|   r  rl  r  rE   rY  )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      ?)rl  r4  rY  r  readintorN  r  r  r  r
  r   r
  r   rM  rN  )r   r  r,  rX  r[  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  re  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# )rr  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)	rv  rs  r4  r   r  r  re  r  r  )r   BIGLIMITrX  r   s   &    r   _testWriteNonBlocking7UnbufferedFileObjectClassTestCase._testWriteNonBlockingQ  s     ""5)W***OO!!#&1a uA%%c*Ayq!$  !GDr   )r  rv  N)r   r   r   r   r   rZ  r]  r`  rc  r#   r  r7   r|   rh  rk  ro  rs  rw  r|  r   r   r   s   @r   rV  rV    sk      G8 
=  m479>9>7&%-G Gr   rV  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                   H    ] tR tRtRt]P                  R4      tRt]t	Rt
RtR# )"UnicodeReadFileObjectClassTestCaseiq  r>   r   r  rR  r   Nr   r   r   r   r   rZ  r=  r  r  r  r
  r   r   r   r   r  r  q  s&     Izz'"HJIGr   r  c                   H    ] tR tRtRt]tRt]P                  R4      t	Rt
RtR# )#UnicodeWriteFileObjectClassTestCasei{  r4   r  r   rR  r   N)r   r   r   r   r   rZ  r  r  r=  r  r
  r   r   r   r   r  r  {  s&     IHJ

7#IGr   r  c                   f    ] 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  rR  r   Nr  r   r   r   r  r    s/     Izz'"HJ

7#IGr   r  c                   &   a  ] tR tRt o R tRtV tR# )NetworkConnectionTesti  c                ~    \         P                  ! \        V P                  34      V n        V P                  V n        R # r   )r8   create_connectionr2  r   r
  rs  r   s   &r   r   !NetworkConnectionTest.clientSetUp  s*     ++T499,=>r   )r
  rs  N)r   r   r   r   r   r   r   r   s   @r   r  r    s     " "r   r  c                       ] tR tRtRtR# )BasicTCPTest2i  r   Nr	  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   rQ  ,NetworkConnectionNoServer.MockSocket.connect  s    {++r   r   N)r   r   r   r   rQ  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r   )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	   rZ  r8   r   re   r   rE   rK  r=   rQ  r2  rY  rV  r  ECONNREFUSED)r   r   r
  rX  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	   rZ  rK  r=   r8   r  r2  get_socket_conn_refused_errsr5  rV  r  )r   r   rX  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	   rZ  r8   r  r2  rD  ExceptionGroupr-  
exceptionsr=   r  re   rY  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  r2  rD  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	   rZ  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   rF  rE   rm  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  r2  r   r   rE  r
  r   rE   rY  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# )rR  )rr   source_addressN)r8   r  r2  r   r   rE  r  r
  r   rE   rY  r3  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   rp   rq   r  r2  r   r
  r   rE   rY  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  r2  r   r
  rY  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  r2  r   r
  r   rE   rY  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   rF  r   rE   rM  rN  ra  rm  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  r2  r   r
  rV  rY  )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  )rV  r  s   r   r   DNetworkConnectionBehaviourTest._testOutsideTimeout.<locals>.<lambda>T  s    		!r   N)r8   r  r2  r   r
  rK  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   rD  rF  r%   r  r   s   *,r   raise_timeout4TCPTimeoutTest.testTCPTimeout.<locals>.raise_timeoutZ  s%    II  %IIr   z*Error generating a timeout exception (TCP)NrK  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   rD  rF  r  rD  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)rr  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   rD  r  r  r  r  rF  rD  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
  rU  Nr   rD  rV  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
  rU  z%caught timeout instead of error (UDP)Tz!caught unexpected exception (UDP)1recv() returned success when we did not expect itNr   rD  rV  r  rD  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
  rU  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   rL  rM  rr   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   re   r6  rE   r   r<  rK  r=   r4  )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,  r0  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  re   r   r   rQ  r3  rF  rY  rw  )r   r  s1r[  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  re   r   rY  r3  r   r  rH   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)r3  hN)r;  r8   r  re   rK  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  re   r   rY  r3  rE   r8  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)rD  N)r8   r  re   r   rN  rY  r3  r8  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}rR  N)r8   r  re   r   r-  r3  r  )r   abstract_addressr5  r[  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   r;  r7  r=  rA  rE  rH  rL  r   r   r   s   @r   r3  r3    s3      M	@78
IH Hr   r3  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  re   r  r   s   &r   r   TestUnixDomain.setUp  s    MM&..&2D2DE	r   c                :    V P                   P                  4        R # r   )r  rE   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)rQ  fsencoder  r   r  r|   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# )rR  NrR  N)r5  r  r3  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   )rQ  r  abspathr   TESTFNr   r  r   r  rY  r3  rW  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   )rQ  r  r`  r   ra  r   r  rX  r   r  rY  r3  rW  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)rQ  r  r`  r   TESTFN_UNICODErX  r   r  r=  r   r  rY  r3  )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   rQ  r  r`  r   r  r   r  rY  r3  rW  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]  )rK  r=   r  r   r   s   &r   testEmptyAddressTestUnixDomain.testEmptyAddressT  s     	'499>>26r   r  Nr  r  )r   r   r   r   r   r   rX  r   r  rb  re  rk  ro  r#   r  r|   r}   rr  r   r   r   s   @r   rO  rO    sa     F	8
;8888 __S\\%99MO7O7r   rO  c                      a  ] tR tRt o 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[  c                2    \         P                  WR 7       R# r  rw  r  s   &&r   r   BufferIOTest.__init___  ry  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# rq  )r   r  rZ  rl  r&
  rY  r<  r   r,  r-  r[  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  rZ  rs  ra  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# rT  )rN  rl  r&
  rY  r  rZ  rz  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# rT  )rN  rl  r&
  rE  rY  r  rZ  rz  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# rq  )r   r  rZ  rl  ry  rY  r<  r   r,  r-  rn  r[  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# rT  )rN  rl  ry  rY  r  rZ  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# rT  )rN  rl  ry  rE  rY  r  rZ  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# )r  rU  N)rN  rK  r  rl  ry  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# r1  )rN  rl  ry  r  s   & r   testRecvFromIntoEmptyBuffer(BufferIOTest.testRecvFromIntoEmptyBuffer  s/    k##C(##C+r   r   Nr  )r   r   r   r   r   r{  r  r  _testRecvIntoBytearrayr  _testRecvIntoMemoryviewr  r  r  _testRecvFromIntoBytearrayr  _testRecvFromIntoMemoryviewr  r  r  _testRecvFromIntoEmptyBufferr   r   r   s   @r   rv  rv  [  sk     B#!# 0# 1#!# "8# #9N
!,
 $: r   rv  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)AF_TIPCFz/proc/modulesr   r  ztipc NT)r7   r8   r9   FileNotFoundErrorIsADirectoryErrorrW  r  )r   r0  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   rU  N)r8   r  r]  r   rE   rz  r^  r_  TIPC_ADDR_NAMESEQ
TIPC_STYPE
TIPC_LOWER
TIPC_UPPERr   TIPC_ADDR_NAMEr  rU  rZ  rx  rY  r3  )r   r  r
  srvaddrsendaddrr[  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  re   r  r   rE   rz  r^  r_  r  r  r  r  r   r   r   rF  rG  rH  )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# rK  )rM  rN  r8   r  re   r
  r   rE   r  r  r  r  r  rQ  r3  cliaddr)r   rn  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# rT  )rG  rV  rY  rZ  r  rH  rN  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   rb  TIPCThreadableTest._testStream  rd  r   )r
  r  rG  rH  r  Nr  re  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NrS  )r8   ra  r  r#  rE   rK  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# rT  r   rF  r   rE   rV  r  r   rG  rn  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)rS  rU  N)
r   r3  r8   r  ra  r  r  rY  rV  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# rT  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   r3  r8   r  rE   r#  r  rK  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  ru  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   re   ru  rY  r  ra  get_inheritabler8  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   rY  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  rE   rY  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_inheritablerY  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	Nr9  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   r6  rY  r  r6   F_GETFD
FD_CLOEXECF_SETFD)r   r  rB  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   r6  rY  r6   r  r  r  )r   r  rB  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   rE   rY  r  )r   r5  r[  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  r3  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# r1  )rY  r  r8   re   r  r#  r6   r
  rQ  r
  ra  r
  )r   rH   nonblockrr   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   re   r3  r  r4  rD  rp   rq   )r   rH   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  rh  ri  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   	fromsharerF  r  rE   )r  qsdatary   rH   r[  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# )r9
  r%   s
   slapmahfror   N)multiprocessingr   Processr  r<
  r   sharepidr3  rE   r   r8   r  rV  rf  r  rY  )	r   r  rF  r  rn  ry   rH   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 # )NrS  r  )r   r  rQ  getpidrK  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   )rY  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  rQ  r  r8   r  r  rE   )r   r  rH   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  re   rL   r=   r  rQ  r  r  r  rE   )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]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  r   r   c                l   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        RRR4       R# u upi   + '       g   i     LW; i  + '       g   i     R# ; i)c              3   R   "   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   ra  FILESIZEre  r  FILEDATA)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 *)7)) *))s   ;D

6D*D"D	"D3	c                N    \         P                  ! \         P                  4       R # r   )r   r  ra  )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   rD  r   r
  rF  TIMEOUTr   rE   rm  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   )rV  r,  rf  r  )r   rG  r  r3  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   r3  r9   r   ra  r8   r  rD  rY  r1  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?  rY  r  r1  r2  r   rG  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   r3  ioBytesIOr2  r8   r  rG  rY  r1  rH  rK  rT  rU  )r   r  rJ  r  rL  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   rP  rQ  s   &  r   testNonRegularFile(SendfileUsingSendTest.testNonRegularFilen  rT  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   r3  r   ra  r9   r   r  r8   r  rD  rY  rH  )r   r  filenamerJ  r  rK  rL  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?  rY  rQ  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     )offsetNrG  rI  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# )rf  :i  NNNrP  rQ  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 rY  Nr   r3  r9   r   ra  r8   r  r   rE  rD  rY  rH  r   r  rJ  r  rY  rK  rL  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# )rn  Nr<  r?  rY  r  r2  r   rY  rG  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  ro  Nrp  rq  s   &      r   _testCountSmall%SendfileUsingSendTest._testCountSmall  s    ))'')I$$d+''070H0HJT44E&&t,D*DT)TYY[%0 TT44TTTrt  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  rv  rw  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  駆   )rg  rY  N)
r   r3  r9   r   ra  r8   r  rD  rY  rH  rq  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  Nrv  rw  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   r3  r9   r   ra  r8   r  r4  rD  rK  r  rG  r   r  rJ  r  rK  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<  rV  rD  r   rG  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   r3  r9   r   ra  r8   r  r   rE  rD  rY  r1  rI  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   rP  rQ  s   &  r   testWithTimeout%SendfileUsingSendTest.testWithTimeout  rT  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   r3  r9   r   ra  r8   r  rD  rD  rK  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<  rV  rM  rN  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  re   Nr   r  zbinary modezpositive integerr^  ro  rL  r  )	r9   r   ra  r8   rL   rD  r'  r  r   )r   rJ  rH   rK  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   r1  r,  r2  r   rE  r;  r-  r5  r8  r<  r?  rD  rM  rR  rX  r[  r`  rc  rh  rk  rr  rx  r{  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%  rG  z%os.sendfile() required for this test.c                   &   a  ] tR tRt o R tRtV tR# )SendfileUsingSendfileTesti$  c                    \        VR 4      # )rU  rC  r  s   &&r   rD  (SendfileUsingSendfileTest.meth_from_sock*  s    t566r   r   N)r   r   r   r   rD  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r1  )	r8   r[   rV   r   r  rE   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  NrF
     b   cr   )
r  fromhexr  rF  r  rY  rV  ra  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  rz  r8   SOL_ALGALG_SET_KEYrF  r  rY  rV  )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  rU  )r  r  r  r  rz  r8   r  r  rF  sendmsg_afalgALG_OP_ENCRYPTr  r  rY  rV  ALG_OP_DECRYPT)r   r  r  r[  
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  rz  r8   r  r  ALG_SET_AEAD_AUTHSIZErF  r  r  r  r  rV  rY  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   resr[  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  rQ  urandomrz  r8   r  r  rF  rV  rY  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   r[   rV   rK  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   r[   rV   r   rE   rK  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  r{   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# r1  )r`  r8   rc  r  rz  ra  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   re   rc  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  knownTCPFlagsrY  )r   rH   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)r4  Nr2  r  )r	   rZ  r8   create_serverrY  r3  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)r4  Nr  r3  r2  r   )
r8   r#  rY  r=  r   r  re   r	   r  r  )r   r  rH   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   rK  r  r#  r`  r^  r,  rY  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!	re  r
  r
  r  c                    \         P                  ! R\         P                  R7      ;_uu_ 4       pRRR4       R#   + '       g   i     R# ; i)r2  r  Nr(  )r8   r#  r  r  s   & r   test_ipv6_only_default'CreateServerTest.test_ipv6_only_defaultS  s*    
 !!*V__EEEEEEs	   :A	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)r2  Tr=  dualstack_ipv6Nr(  )r8   r#  r  rY  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  r1  r8   has_dualstack_ipv6r7  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rT  )rF  r   rr   rV  r  )r  rG  r   r[  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   rD  rr   r:
  r<
  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  rS  rU  N)r8   rD  rr   rQ  r  rY  rV  )r   rn  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)rR  r4  N)r	   rZ  r8   r#  r@  rC  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)rR  r  r2  Nr	   rZ  r8   r#  r  r@  rC  r$  s   &  r   	test_tcp6$CreateServerFunctionalTest.test_tcp6  sn    --/!!2t*)/: :=AT"eT]FOO<: : : :s   4BB	r3  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)rR  Tr5  r4  N)r	   rZ  r8   r#  r  r@  rC  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)rR  Tr5  r2  NrI  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 7rO  r   N)r   r   r   r   r   rE  rr   r@  rC  rF  r#   r  r	   r  rJ  r  r8   r9  rM  rQ  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   rQ  rE   )pipesr  fd2s   &  r   close_pipes8SendRecvFdsTests.testSendAndRecvFds.<locals>.close_pipes  s$    ! "r   c                 D    V  F  p\         P                  ! V4       K  	  R # r   rY  )rg  rB  s   & r   	close_fds6SendRecvFdsTests.testSendAndRecvFds.<locals>.close_fds  s     r   N)r  rQ  piper   r8   r}  r  re   rS  rZ  rT  r  rY  rk  re  r  r(  r  )r   r\  r_  r   rZ  rfdwfdrg  r
  r
  r[  fds2r  rn  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   re  r   r   r   s   @r   rV  rV    s     #9 #9r   rV  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  rE   r   rH   s    r   rE   8FreeThreadingTests.test_close_detach_race.<locals>.close  s    4[	 !r   c                  L   < \        R 4       F  p SP                  4        K  	  R# rk  )r  r<  rl  s    r   r<  9FreeThreadingTests.test_close_detach_race.<locals>.detach  s    4[
 !r   r8
  N)r8   r   re   r   r:
  r
   start_threads)r   rE   r<  t1t2rH   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   rs  r   r   r   s   @r   rh  rh    s      r   rh  c                  |    \         P                  ! 4       p \        P                  ! \         P                  .V O5!   R # r   )r
   threading_setupr#   addModuleCleanupthreading_cleanup)thread_infos    r   setUpModulerz    s*    "224K.@@O;Or   __main__rt  )r#   r   testr   test.supportr   r   r   r   r	   r
   test.support.import_helperr   _threadr   r   r-   r  r$  rV  rX  r  rQ  r  r}   r   r-  r_  r  r  r8   r/  r;   r|   ry  r   rM  r
  r~   weakrefr   r
  rD  r6   r  requires_working_socketr2  r(  rZ  rC  systemr   releaseWSLr&  r1   r?   rI   rN   rR   rW   r\   r_   rb   rg   rj   rn   r  rt   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_BLUETOOTHrJ  HAVE_SOCKET_HYPERVrU  r  r>  r   r   r   r   r   r   r   r  r  r  r  r%  r-  r  r;  rg  ry  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r   r  r  r/  rF  ri  ru  r  r  r  r  rL  ru  r  r  r  r'  r/  r5  r:  rF  rO  rS  r  r  r  r  r"  r*  rO  rb  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
  r6
  rQ
  rZ
  ry
  r
  r
  rV  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r'  r3  rO  rv  r  r  r  r  r  r  r  r  r  r  r  r%  r  r  r   r  r  r  r!  r;  rV  rh  rz  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