
    z%iB                    %   d dl Z d dlmZ d dlmZ d dlmZ d dlmZ d dlZd dl	Z	d dl
Z
d dlZd dlZd dlZd dlZd dlZd dlZd dlZd dlZd dlZd dlZd dlZd dlZd dlZd dlZd dlZd dlZd dlZd dlZd dlZd dlZd dlZd dl m!Z! 	 d dl"Z"	 d dl$Z$ ejJ                  d	       ejL                  Z&d
jO                  d      Z(dZ) ejT                         dk(  Z+	 d dl,Z,d Z-d Z.d Z/d Z0d Z1d Z2d Z3d Z4d Z5d Z6e
jn                  d        Z8 e.       Z9 e/       Z: e0       Z; e1       Z< e2       Z= e3       Z> e4       Z? e@ed      ZA e5       ZB e6       ZC e	j                  d      j                  ZE G d de j                        ZG G d de j                        ZH G d d eH      ZI G d! d"      ZJ G d# d$e j                        ZK G d% d&e j                        ZL G d' d(      ZM G d) d*eGeM      ZN G d+ d,eHeM      ZO e j                  eAd-       G d. d/eIeM             ZQ G d0 d1eKeM      ZR G d2 d3eLeM      ZS e j                  e$du d4       e j                  e?d5       e j                   e-       d6k7  d7       G d8 d9e j                  eM                           ZU G d: d;eN      ZV G d< d=e j                  eM      ZW G d> d?e j                        ZX G d@ dAeX      ZY G dB dCeJeXeM      ZZ G dD dEeYeZ      Z[ G dF dGeX      Z\ G dH dIe\      Z] G dJ dKeX      Z^ G dL dMe^      Z_ G dN dOe^      Z` G dP dQe^      Za G dR dSe^      Zb G dT dUe^      Zc G dV dWec      Zd G dX dYec      ZedZ Zfd[ Zgd\ Zh G d] d^e j                        Zi e j                  e9d_       G d` dae j                               Zj e j                  e9d_       G db dceR             Zk e j                  e:dd       G de dfe j                               Zl e j                  e;dg       G dh die j                               Zm e j                  e<dj       G dk dle j                               Zn e j                  e<dj       G dm dneS             Zo e j                  e>do       G dp dqe j                               Zp e j                  e$du d4       e j                  e?d5       G dr dse j                                      Zq e j                  eBdt       G du dve j                               Zr e j                  eCdw       G dx dye j                               Zs G dz d{eV      Zt G d| d}eO      Zu e j                  eAd-       G d~ deQ             Zv G d deJ      Zw G d dew      Zx G d dew      Zy G d dew      Zz G d dew      Z{ G d dew      Z| G d dew      Z} G d de}      Z~ G d de~      Z G d de~      Z G d dew      Z G d de      Z G d de      Z G d dexe      Z G d de j                        Z G d de}      Z G d de}      Z G d deye{eZe`      Z egej0                  d       G d dee             Z egej0                  d       G d dee             Z egej0                  d       G d dee             Z G d deye{eZed      Z egej0                  d       e j                  ej                  d       ehdd       G d dee                           Z egej0                  d       e j                  ej                  d       ehdd       G d dee                           Z egej0                  d       e j                  ej                  d       ehdd       G d dee                           Z egej0                  d       e j                  ej                  d       eged       ehdd       G d dee                                  Z egej0                  d       e j                  ej                  d       eged       ehdd       G d dexee                                  Z e j                  eAd-       G d deye{eZea             Z e j                  eAd-       egej0                  d       G d dee                    Z e j                  eAd-       egej0                  d       G d dee                    Z e j                  eAd-       egej0                  d       G dÄ dee                    Z e j                  eAd-       G dń deye{eZee             Z egej0                  d       e j                  ej                  d       e j                  eAd-       ehdd       G dǄ dee                                  Z egej0                  d       e j                  ej                  d       e j                  eAd-       ehdd       G dɄ dee                                  Z egej0                  d       e j                  ej                  d       e j                  eAd-       ehdd       G d˄ dee                                  Z egej0                  d       e j                  ej                  d       e j                  eAd-       eged       ehdd       G d̈́ dee                                         Z egej0                  d       e j                  ej                  d       e j                  eAd-       eged       ehdd       G dτ dexee                                         Z G dф de|e[e_      Z egej0                  d       G dӄ dee             Z egej0                  d       G dՄ deee             Z egej0                  d       G dׄ deee             Z G dل deze|e[eb      Z egej0                  d       e j                  e+d۫       ehdddޫ       G d߄ dee                           Z egej0                  d       e j                  e+d۫       ehdddޫ       G d deee                           Z egej0                  d       e j                  e+d۫       ehdddޫ       G d deee                           Z G d de|e[e]      Z egej0                  d       eged       G d dee                    Z egej0                  d       eged       G d deee                    Z egej0                  d       eged       G d deee                    Z egej0                  dd       egeddd       G d dee                    Z egej0                  dd       egeddd       G d dexee                    Z G d d      Z eged       e j                   e@ed      xs	  e@ed      d       G d dee`                    Z eged       e j                   e@ed      xs	  e@ed      d       G d deeJeYe_                    Z G d deN      Z G d  deW      Z G d deN      Z G d deV      Z G d de      Z G d d	e      Z G d
 de      Z G d de      Z G d de      Z G d de      Z G d de      Z G d deet      Z G d de j                        Z G d deGeM      Z G d deGeM      Z G d deG      Z G d deH      Z e j                  eAd-       G d  d!eI             Z G d" d#e j                        Z e j                  ej$                  d$k(  d%       G d& d'e j                               Z e j                   e@ed      d(       G d) d*e j                               Z G d+ d,eV      ZĐd-ZŐd.ZƐd/Zǐd0 Z e j                   eȫ       d1       G d2 d3e j                               Z e j                   eȫ       d1       G d4 d5e j                  eM             Z G d6 d7eN      Z G d8 d9e j                        Z e j                   e@ed:      d;       G d< d=e j                               Z e j                  ej                  d>k(  d?       e j                  e"d@       G dA dBeG                    Z G dC dDeN      Z e j                   e@edE      dF       G dG dHeЫ             Z e j                  e=dI       G dJ dKe j                               Z e j                  ej$                  dLk(  dM       G dN dOe j                               Z e j                  ej$                  j                  dP      dQ       G dR dSe j                               Z G dT dUe j                        Z G dV dWe j                        Z egedX       egedY       eged       G dZ d[e j                                             Zؐd\ Zeڐd]k(  r e j                          yy# e#$ r dZ"Y w xY w# e#$ r dZ$Y w xY w# e#$ r dZ,Y w xY w(^      N)support)	os_helper)socket_helper)threading_helper)proxyFT)moduleu   Michael Gilfix was hereሴ
utf-8  AIXc                     t         y t        t        d      sy 	 t        dd      5 } t        j                  | t        j
                  d      }d d d        t        j                  d      d   S # 1 sw Y   "xY w# t        $ r Y y w xY w)NIOCTL_VM_SOCKETS_GET_LOCAL_CIDz
/dev/vsockrbz    Ir   )	fcntlhasattrsocketopenioctlr   structunpackOSError)frs     D/home/uftp/.pyenv/versions/3.12.0/lib/python3.12/test/test_socket.pyget_cidr   7   s    }6;<(,% 	NAvDDfMA	N
 }}S!$Q''	N 	N s(   A9 &A-A9 -A62A9 9	BBc                      	 	 t        j                   t         j                  t         j                  t         j                        } | j	                          y# t
        t        f$ r Y yw xY wNFT)r   PF_CANSOCK_RAWCAN_RAWcloseAttributeErrorr   ss    r   _have_socket_canr%   D   sO    ?MM&--&..I 	
		 G$    AA A'&A'c                      	 	 t        j                   t         j                  t         j                  t         j                        } | j	                          y# t
        t        f$ r Y yw xY wr   )r   r   
SOCK_DGRAM	CAN_ISOTPr!   r"   r   r#   s    r   _have_socket_can_isotpr*   N   S    EMM&--):):F<L<LM 	
		 G$ r&   c                      	 	 t        j                   t         j                  t         j                  t         j                        } | j	                          y# t
        t        f$ r Y yw xY wr   )r   r   r(   	CAN_J1939r!   r"   r   r#   s    r   _have_socket_can_j1939r.   X   r+   r&   c                      	 	 t        j                   t         j                  t         j                  d      } | j                          y# t        t
        f$ r Y yw xY wNr   FT)r   PF_RDSSOCK_SEQPACKETr!   r"   r   r#   s    r   _have_socket_rdsr3   b   sM    ?MM&--)>)>B 	
		 G$    3A AAc                      	 	 t        j                   t         j                  t         j                  d      } | j                          y# t        t
        f$ r Y yw xY wr0   )r   AF_ALGr2   r!   r"   r   r#   s    r   _have_socket_algr7   l   sM    BMM&--)>)>B 	
		 G$ r4   c                      	 	 t        j                   t         j                  t         j                  d      } | j                          y# t        t
        f$ r Y yw xY wr0   )r   
AF_QIPCRTRr(   r!   r"   r   r#   s    r   _have_socket_qipcrtrr:   v   sO    FMM&++V->->B 	
		 G$ r4   c                       	 t               d u} | S N)r   )rets    r   _have_socket_vsockr>      s    D
)4
CJ    c                      	 	 t        j                   t         j                  t         j                  t         j                        } | j	                          y# t
        t        f$ r Y yw xY wr   )r   AF_BLUETOOTHSOCK_STREAMBTPROTO_RFCOMMr!   r"   r   r#   s    r   _have_socket_bluetoothrD      sW    H MM&--v/A/A6CXCXY 	
		 G$ r&   c                      	 	 t        j                   t         j                  t         j                  t         j                        } | j	                          y# t
        t        f$ r Y yw xY wr   )r   	AF_HYPERVrB   HV_PROTOCOL_RAWr!   r"   r   r#   s    r   _have_socket_hypervrH      sU    EMM&**F,>,>@V@VW 	
		 G$ r&   c              #      K   t        j                         }	 t        j                  |        d  t        j                  |       y # t        j                  |       w xY wwr<   )r   getdefaulttimeoutsetdefaulttimeout)timeoutold_timeouts     r   socket_setdefaulttimeoutrN      sF     **,K.  )  -  -s   A!A A!AA!IPPROTO_UDPLITEic                       e Zd Zd Zd Zy)SocketTCPTestc                     t        j                   t         j                  t         j                        | _        t	        j
                  | j                        | _        | j                  j                          y r<   )r   AF_INETrB   servr   	bind_portportlistenselfs    r   setUpzSocketTCPTest.setUp   sD    MM&..&2D2DE	!++DII6			r?   c                 F    | j                   j                          d | _         y r<   rU   r!   rY   s    r   tearDownzSocketTCPTest.tearDown       			r?   N__name__
__module____qualname__r[   r^    r?   r   rR   rR      s    
r?   rR   c                       e Zd Zd Zd Zy)SocketUDPTestc                     t        j                   t         j                  t         j                        | _        t	        j
                  | j                        | _        y r<   )r   rT   r(   rU   r   rV   rW   rY   s    r   r[   zSocketUDPTest.setUp   s4    MM&..&2C2CD	!++DII6	r?   c                 F    | j                   j                          d | _         y r<   r]   rY   s    r   r^   zSocketUDPTest.tearDown   r_   r?   Nr`   rd   r?   r   rf   rf      s    7r?   rf   c                       e Zd Zd Zy)SocketUDPLITETestc                     t        j                   t         j                  t         j                  t         j                        | _        t        j                  | j                        | _        y r<   )r   rT   r(   rO   rU   r   rV   rW   rY   s    r   r[   zSocketUDPLITETest.setUp   s<    MM&..&2C2CVE[E[\	!++DII6	r?   N)ra   rb   rc   r[   rd   r?   r   rj   rj      s    7r?   rj   c                   4     e Zd Z	  fdZ fdZ fdZ xZS )ThreadSafeCleanupTestCasec                 V    t        |   |i | t        j                         | _        y r<   )super__init__	threadingRLock_cleanup_lockrZ   argskwargs	__class__s      r   rp   z"ThreadSafeCleanupTestCase.__init__   s$    $)&)&__.r?   c                 f    | j                   5  t        |   |i |cd d d        S # 1 sw Y   y xY wr<   )rs   ro   
addCleanuprt   s      r   ry   z$ThreadSafeCleanupTestCase.addCleanup   3     	77%t6v6	7 	7 	7   '0c                 f    | j                   5  t        |   |i |cd d d        S # 1 sw Y   y xY wr<   )rs   ro   
doCleanupsrt   s      r   r}   z$ThreadSafeCleanupTestCase.doCleanups   rz   r{   )ra   rb   rc   rp   ry   r}   __classcell__rw   s   @r   rm   rm      s    /77 7r?   rm   c                       e Zd Z	 dZdZ	 dZ ej                  e      Z	 dZ	e	d ej                  e	      dz  z  z  Z	d Z
y)	SocketCANTestvcan0   z=IB3x8sz@3I4l2Ix   c                    t        j                   t         j                  t         j                  t         j                        | _        | j                  | j                  j                         	 | j                  j                  | j                  f       y # t        $ r! | j                  d| j                  z         Y y w xY wN%network interface `%s` does not exist)r   r   r   r    r$   ry   r!   bind	interfacer   skipTestrY   s    r   r[   zSocketCANTest.setUp  s|    v}}foov~~N%	+FFKK)* 	+MMA>>* +	+s   -&B 'B>=B>N)ra   rb   rc   r   bufsizecan_frame_fmtr   calcsizecan_frame_sizebcm_cmd_msg_fmtr[   rd   r?   r   r   r      s_     IG M$V__]3N   Osofooo>BCCO+r?   r   c                       e Zd Z	 dZd Zy)SocketRDSTest    c                 H   t        j                   t         j                  t         j                  d      | _        | j	                  | j                  j
                         	 t        j                  | j                        | _        y # t        $ r | j                  d       Y y w xY w)Nr   zunable to bind RDS socket)r   r1   r2   rU   ry   r!   r   rV   rW   r   r   rY   s    r   r[   zSocketRDSTest.setUp'  sk    MM&--1F1FJ			(	7%//		:DI 	7MM56	7s   $B B! B!N)ra   rb   rc   r   r[   rd   r?   r   r   r      s     G7r?   r   c                   2    e Zd Z	 d Zd Zd Zd Zd Zd Zy)ThreadableTestc                 H    | j                   | _        | j                  | _         y r<   )r[   _ThreadableTest__setUp_setUprY   s    r   rp   zThreadableTest.__init__V  s    zz[[
r?   c                 :    	 | j                   j                          y r<   )server_readysetrY   s    r   serverExplicitReadyz"ThreadableTest.serverExplicitReady[  s    	F 	r?   c                 :     j                  t        j                                t        j                          _        t        j                          _        t        j                          _        t        j                  d       _        d _
         fd} j                  |        j                         }|j                  d      }||dz   d  }t         d|z         }t        j                    j"                  |f       _        	  j'                          	  j
                  j)                           j                  j+                           j                   j                  j*                         y #  d _
         xY w#  j
                  j)                          w xY w)N   Fc                  n     j                   j                         r j                   j                         y r<   )queueqsizegetrY   s   r   raise_queued_exceptionz5ThreadableTest._setUp.<locals>.raise_queued_exceptionk  s)    zz!jjnn&& "r?   ._T)enterContextr   wait_threads_exitrq   Eventr   client_readydoner   Queueserver_crashedry   idrfindgetattrthreadstart_new_thread	clientRunclient_threadr   r   wait)rZ   r   
methodnamerP   test_methods   `    r   r   zThreadableTest._setUpb  s;   *<<>?%OO-%OO-OO%	[[^
#	' 	./ WWY
S!!%
dC*$45#44NN[N,	$LLN
 !!# 		'	"&D!!#s   E1 1
E;;E> >Fc                    | j                   j                          	 | j                          	 | j                  j                          | j                  r| j                          y t        |d      st        d      	  |        | j                          y # t        $ rO}| j                  j                  |       | j                          Y d }~| j                  j                          y d }~ww xY w# | j                  j                          w xY w# t        $ r%}| j                  j                  |       Y d }~d }~ww xY w# | j                          w xY w)N__call__z%test_func must be a callable function)r   r   clientSetUpBaseExceptionr   putclientTearDownr   r   r   r   	TypeError)rZ   	test_funces      r   r   zThreadableTest.clientRun  s
    	$ !!#!y*-CDD	"K !!  	JJNN1!!!#	
 !!#  	JJNN1	 !sS   B <D 	C,+C'C/ 'C,,C/ /D	D<D72D? 7D<<D? ?Ec                     t        d      )Nz clientSetUp must be implemented.)NotImplementedErrorrY   s    r   r   zThreadableTest.clientSetUp  s    !"DEEr?   c                 `    | j                   j                          t        j                          y r<   )r   r   r   exitrY   s    r   r   zThreadableTest.clientTearDown  s    		r?   N)	ra   rb   rc   rp   r   r   r   r   r   rd   r?   r   r   r   0  s(    #J!
 (@",Fr?   r   c                        e Zd ZddZd Zd Zy)ThreadedTCPSocketTestc                 \    t         j                  | |       t        j                  |        y N)
methodNamerR   rp   r   rZ   r   s     r   rp   zThreadedTCPSocketTest.__init__  #    t
;%r?   c                 r    t        j                   t         j                  t         j                        | _        y r<   )r   rT   rB   clirY   s    r   r   z!ThreadedTCPSocketTest.clientSetUp  s    ==1C1CDr?   c                 p    | j                   j                          d | _         t        j                  |        y r<   r   r!   r   r   rY   s    r   r   z$ThreadedTCPSocketTest.clientTearDown  %    %%d+r?   NrunTestra   rb   rc   rp   r   r   rd   r?   r   r   r     s    &E,r?   r   c                        e Zd ZddZd Zd Zy)ThreadedUDPSocketTestc                 \    t         j                  | |       t        j                  |        y r   )rf   rp   r   r   s     r   rp   zThreadedUDPSocketTest.__init__  r   r?   c                 r    t        j                   t         j                  t         j                        | _        y r<   )r   rT   r(   r   rY   s    r   r   z!ThreadedUDPSocketTest.clientSetUp  s    ==1B1BCr?   c                 p    | j                   j                          d | _         t        j                  |        y r<   r   rY   s    r   r   z$ThreadedUDPSocketTest.clientTearDown  r   r?   Nr   r   rd   r?   r   r   r     s    &D,r?   r   z'UDPLITE sockets required for this test.c                        e Zd ZddZd Zd Zy)ThreadedUDPLITESocketTestc                 \    t         j                  | |       t        j                  |        y r   )rj   rp   r   r   s     r   rp   z"ThreadedUDPLITESocketTest.__init__  s#    ""4J"?%r?   c                     t        j                   t         j                  t         j                  t         j                        | _        y r<   )r   rT   r(   rO   r   rY   s    r   r   z%ThreadedUDPLITESocketTest.clientSetUp  s&    ==1B1BFDZDZ[r?   c                 p    | j                   j                          d | _         t        j                  |        y r<   r   rY   s    r   r   z(ThreadedUDPLITESocketTest.clientTearDown  r   r?   Nr   r   rd   r?   r   r   r     s    &\,r?   r   c                        e Zd ZddZd Zd Zy)ThreadedCANSocketTestc                 \    t         j                  | |       t        j                  |        y r   )r   rp   r   r   s     r   rp   zThreadedCANSocketTest.__init__  r   r?   c                     t        j                   t         j                  t         j                  t         j                        | _        	 | j                  j                  | j                  f       y # t        $ r Y y w xY wr<   )r   r   r   r    r   r   r   r   rY   s    r   r   z!ThreadedCANSocketTest.clientSetUp  sR    ==P	HHMM4>>+, 	 	s   &A/ /	A;:A;c                 p    | j                   j                          d | _         t        j                  |        y r<   r   rY   s    r   r   z$ThreadedCANSocketTest.clientTearDown  r   r?   Nr   r   rd   r?   r   r   r     s    &,r?   r   c                        e Zd ZddZd Zd Zy)ThreadedRDSSocketTestc                 \    t         j                  | |       t        j                  |        y r   )r   rp   r   r   s     r   rp   zThreadedRDSSocketTest.__init__  r   r?   c                    t        j                   t         j                  t         j                  d      | _        	 | j                  j	                  t
        df       | j                  j                         | _        y # t        $ r Y y w xY wNr   )	r   r1   r2   r   r   HOSTgetsocknamecli_addrr   rY   s    r   r   z!ThreadedRDSSocketTest.clientSetUp  sa    ==0E0EqI	HHMM4)$ HH002DM 	 	s   A A; ;	BBc                 p    | j                   j                          d | _         t        j                  |        y r<   r   rY   s    r   r   z$ThreadedRDSSocketTest.clientTearDown  r   r?   Nr   r   rd   r?   r   r   r     s    &	,r?   r   
need fcntlz%VSOCK sockets required for this test.   z-This test can only be run on a virtual guest.c                   ,    e Zd ZddZd Zd Zd Zd Zy)ThreadedVSOCKSocketStreamTestc                 p    t         j                  j                  | |       t        j                  |        y r   unittestTestCaserp   r   r   s     r   rp   z&ThreadedVSOCKSocketStreamTest.__init__  )    ""4J"?%r?   c                    t        j                   t         j                  t         j                        | _        | j	                  | j                  j
                         | j                  j                  t         j                  t        f       | j                  j                          | j                          | j                  j                         \  | _        | _        | j	                  | j                  j
                         y r<   )r   AF_VSOCKrB   rU   ry   r!   r   VMADDR_CID_ANY	VSOCKPORTrX   r   acceptconnconnaddrrY   s    r   r[   z#ThreadedVSOCKSocketStreamTest.setUp   s    MM&//63E3EF			(		--y9:		  "#'99#3#3#5 	4=		(r?   c                 <   t        j                  d       t        j                  t        j                  t        j                        | _        | j                  | j
                  j                         t               }| j
                  j                  |t        f       y )N皙?)timesleepr   r   rB   r   ry   r!   r   connectr   )rZ   cids     r   r   z)ThreadedVSOCKSocketStreamTest.clientSetUp	  s[    

3==&2D2DE'i#y)*r?   c                 f    | j                   j                  d      }| j                  |t               y N   )r   recvassertEqualMSGrZ   msgs     r   
testStreamz(ThreadedVSOCKSocketStreamTest.testStream  $    iinnT"c"r?   c                 v    | j                   j                  t               | j                   j                          y r<   r   sendr  r!   rY   s    r   _testStreamz)ThreadedVSOCKSocketStreamTest._testStream       cr?   Nr   ra   rb   rc   rp   r[   r   r  r  rd   r?   r   r   r     s    &)+#r?   r   c                   .    e Zd Z	 ddZd Zd Zd Zd Zy)SocketConnectedTestc                 2    t         j                  | |       y r   )r   rp   r   s     r   rp   zSocketConnectedTest.__init__      &&t
&Cr?   c                     t         j                  |        | j                          | j                  j	                         \  }}|| _        y r<   )r   r[   r   rU   r   cli_connrZ   r   addrs      r   r[   zSocketConnectedTest.setUp"  s;    ##D) 	  "YY%%'
dr?   c                 p    | j                   j                          d | _         t        j                  |        y r<   )r  r!   r   r^   rY   s    r   r^   zSocketConnectedTest.tearDown*  s'    &&t,r?   c                     t         j                  |        | j                  j                  t        | j
                  f       | j                  | _        y r<   )r   r   r   r  r   rW   	serv_connrY   s    r   r   zSocketConnectedTest.clientSetUp/  s6    ))$/$		*+r?   c                 p    | j                   j                          d | _         t        j                  |        y r<   )r  r!   r   r   rY   s    r   r   z"SocketConnectedTest.clientTearDown4  s'    ,,T2r?   Nr   ra   rb   rc   rp   r[   r^   r   r   rd   r?   r   r  r    s!    D-
"
3r?   r  c                   ,    e Zd ZddZd Zd Zd Zd Zy)SocketPairTestc                 p    t         j                  j                  | |       t        j                  |        y r   r   r   s     r   rp   zSocketPairTest.__init__;  r   r?   c                 F    t        j                         \  | _        | _        y r<   )r   
socketpairrU   r   rY   s    r   r[   zSocketPairTest.setUp?  s    $//1	48r?   c                 F    | j                   j                          d | _         y r<   r]   rY   s    r   r^   zSocketPairTest.tearDownB  r_   r?   c                      y r<   rd   rY   s    r   r   zSocketPairTest.clientSetUpF      r?   c                 p    | j                   j                          d | _         t        j                  |        y r<   r   rY   s    r   r   zSocketPairTest.clientTearDownI  r   r?   Nr   r  rd   r?   r   r!  r!  9  s    &2,r?   r!  c                        e Zd Z	 d Zd Zd Zy)SocketTestBasec                     | j                         | _        | j                  | j                         | j	                          y r<   )	newSocketrU   ry   close_server
bindServerrY   s    r   r[   zSocketTestBase.setUp^  s,    NN$	))*r?   c                 F    | j                   j                          d | _         y r<   r]   rY   s    r   r-  zSocketTestBase.close_serverc  r_   r?   c                 z    	 | j                  | j                         | j                  j                         | _        y r<   )bindSockrU   r   	serv_addrrY   s    r   r.  zSocketTestBase.bindServerg  s)    Gdii ..0r?   N)ra   rb   rc   r[   r-  r.  rd   r?   r   r*  r*  U  s    
1r?   r*  c                         e Zd Z	  fdZ xZS )SocketListeningTestMixinc                 V    t         |           | j                  j                          y r<   )ro   r[   rU   rX   rZ   rw   s    r   r[   zSocketListeningTestMixin.setUpp  s    		r?   ra   rb   rc   r[   r~   r   s   @r   r4  r4  m  s    / r?   r4  c                   8     e Zd Z	  fdZd Zd Zd Zd Z xZS )ThreadedSocketTestMixinc                 N    t        |   |i | t        j                  |        y r<   )ro   rp   r   rt   s      r   rp   z ThreadedSocketTestMixin.__init__}  s#    $)&)%r?   c                 N    | j                         | _        | j                          y r<   )newClientSocketr   
bindClientrY   s    r   r   z#ThreadedSocketTestMixin.clientSetUp  s    '')r?   c                 $    	 | j                         S r<   )r,  rY   s    r   r<  z'ThreadedSocketTestMixin.newClientSocket  s    4~~r?   c                 z    	 | j                  | j                         | j                  j                         | _        y r<   )r1  r   r   r   rY   s    r   r=  z"ThreadedSocketTestMixin.bindClient  s)    Fdhh,,.r?   c                 p    | j                   j                          d | _         t        j                  |        y r<   r   rY   s    r   r   z&ThreadedSocketTestMixin.clientTearDown  r   r?   )	ra   rb   rc   rp   r   r<  r=  r   r~   r   s   @r   r9  r9  u  s!    & /
,r?   r9  c                   >     e Zd Z	  fdZ fdZ fdZ fdZ xZS )ConnectedStreamTestMixinc                     t         |           | j                          | j                  j	                         \  }}|| _        y r<   )ro   r[   r   rU   r   r  )rZ   r   r  rw   s      r   r[   zConnectedStreamTestMixin.setUp  s7     	  "YY%%'
dr?   c                 d    | j                   j                          d | _         t        |           y r<   )r  r!   ro   r^   r6  s    r   r^   z!ConnectedStreamTestMixin.tearDown  s%    r?   c                     t         |           | j                  j                  | j                         | j                  | _        y r<   )ro   r   r   r  r2  r  r6  s    r   r   z$ConnectedStreamTestMixin.clientSetUp  s/    (r?   c                     	 | j                   j                          d | _         t        |           y # t        $ r Y w xY wr<   )r  r!   r"   ro   r   r6  s    r   r   z'ConnectedStreamTestMixin.clientTearDown  s@    	NN  "!DN 	   		s   !3 	??)ra   rb   rc   r[   r^   r   r   r~   r   s   @r   rB  rB    s!    
"
! !r?   rB  c                       e Zd Z	 d Zy)UnixSocketTestBasec                     t        j                         }| j                  t        j                  |       t        j
                  ||       y r<   )r   create_unix_domain_namery   r   unlinkbind_unix_socket)rZ   sockpaths      r   r1  zUnixSocketTestBase.bindSock  s4    446	(($/&&tT2r?   N)ra   rb   rc   r1  rd   r?   r   rH  rH    s
    23r?   rH  c                       e Zd Z	 d Zy)UnixStreamBasec                 f    t        j                   t         j                  t         j                        S r<   )r   AF_UNIXrB   rY   s    r   r,  zUnixStreamBase.newSocket      }}V^^V-?-?@@r?   Nra   rb   rc   r,  rd   r?   r   rP  rP    s    7Ar?   rP  c                   *     e Zd Z	 eZ fdZd Z xZS )InetTestBasec                 J    t         |           | j                  d   | _        y Nr   )ro   r[   r2  rW   r6  s    r   r[   zInetTestBase.setUp  s    NN1%	r?   c                 F    t        j                  || j                         y )Nhost)r   rV   r[  rZ   rM  s     r   r1  zInetTestBase.bindSock  s    4995r?   )ra   rb   rc   r   r[  r[   r1  r~   r   s   @r   rV  rV    s    +D&6r?   rV  c                       e Zd Z	 d Zy)TCPTestBasec                 f    t        j                   t         j                  t         j                        S r<   )r   rT   rB   rY   s    r   r,  zTCPTestBase.newSocket  rS  r?   NrT  rd   r?   r   r^  r^        -Ar?   r^  c                       e Zd Z	 d Zy)UDPTestBasec                 f    t        j                   t         j                  t         j                        S r<   )r   rT   r(   rY   s    r   r,  zUDPTestBase.newSocket  s    }}V^^V->->??r?   NrT  rd   r?   r   rb  rb    s    -@r?   rb  c                       e Zd Z	 d Zy)UDPLITETestBasec                     t        j                   t         j                  t         j                  t         j                        S r<   )r   rT   r(   rO   rY   s    r   r,  zUDPLITETestBase.newSocket  s%    }}V^^V->->@V@VWWr?   NrT  rd   r?   r   re  re    s    1Xr?   re  c                       e Zd Z	 d Zy)SCTPStreamBasec                     t        j                   t         j                  t         j                  t         j                        S r<   )r   rT   rB   IPPROTO_SCTPrY   s    r   r,  zSCTPStreamBase.newSocket  s*    }}V^^V-?-?#002 	2r?   NrT  rd   r?   r   rh  rh    s
    E2r?   rh  c                   &    e Zd Z	 ej                  Zy)Inet6TestBaseN)ra   rb   rc   r   HOSTv6r[  rd   r?   r   rl  rl    s    +Dr?   rl  c                       e Zd Z	 d Zy)UDP6TestBasec                 f    t        j                   t         j                  t         j                        S r<   )r   AF_INET6r(   rY   s    r   r,  zUDP6TestBase.newSocket  s    }}V__f.?.?@@r?   NrT  rd   r?   r   ro  ro    r`  r?   ro  c                       e Zd Z	 d Zy)UDPLITE6TestBasec                     t        j                   t         j                  t         j                  t         j                        S r<   )r   rq  r(   rO   rY   s    r   r,  zUDPLITE6TestBase.newSocket   s%    }}V__f.?.?AWAWXXr?   NrT  rd   r?   r   rs  rs    s    1Yr?   rs  c                 ,    	 d fd}d }| r|S |S )Nc                       y r<   rd   )ru   rv   s     r   client_passz%skipWithClientIf.<locals>.client_pass  r'  r?   c                 r     t        j                        |       }t        | t              s
fd|_        |S )Nc                     S r<   rd   )r   rw  s    r   <lambda>z3skipWithClientIf.<locals>.skipdec.<locals>.<lambda>  s    ; r?   )r   skip
isinstancetypeclient_skip)objretvalrw  reasons     r   skipdecz!skipWithClientIf.<locals>.skipdec  s/    &v&s+#t$!6Fr?   c                 N    t        | t              st        | d      sd | _        | S )Nr~  c                     | S r<   rd   )r   s    r   rz  z5skipWithClientIf.<locals>.noskipdec.<locals>.<lambda>  s     r?   )r|  r}  r   r~  )r  s    r   	noskipdecz#skipWithClientIf.<locals>.noskipdec  s!    3%m)D)CO
r?   rd   )	conditionr  r  r  rw  s    `  @r   skipWithClientIfr    s&    
  7.Y.r?   c                     	 |D cg c]  }t        | |      r| }}t        |ddj                  d |D              z         S c c}w )Ndon't have , c              3       K   | ]  }|  y wr<   rd   .0names     r   	<genexpr>zrequireAttrs.<locals>.<genexpr>$  s     *DD4*D   )r   r  join)r  
attributesr  missings       r   requireAttrsr    sS     !+E'#t2DtEGE*DG*D!DDF F Fs
   AAc            	         	 d }| D cg c]$  }t        |t              rt        t        |      s|& }}|rddj	                  d |D              z   }nR| D cg c]$  }t        |t              rt        t        |      n|& }}	 t        j                  | }|j                          t        |d udj                  dj	                  d | D              |            S c c}w c c}w # t        $ r}t        |      }Y d }~Wd }~ww xY w)Nr  r  c              3       K   | ]  }|  y wr<   rd   r  s     r   r  z requireSocket.<locals>.<genexpr>2  s     'A'Ar  zcan't create socket({0}): {1}c              3   2   K   | ]  }t        |        y wr<   )strr  os     r   r  z requireSocket.<locals>.<genexpr>@  s     +c!f+s   )
r|  r  r   r   r  r   r!   r   r  format)ru   errr  r  callargsr$   r   s          r   requireSocketr  '  s
    C" Bs#s#GFC,@  BG 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! !	C?*C::C?c            	       
   e Zd Z ej                  edud      d        Zd Zd Z ej                  edud      d        Z	d Z
d Zd	 Zd
 Zd Z ej                  ej                   dk(  d      d        Z ej$                  ej(                  d      d        Z ej                  ej.                  dk(  d       ej                  ej2                  d      d               Zd Zd Zd Z ej                   eed      d       ej                   eed      d      d               Z  ej                   eed      d      d        Z! ej                   eed       d!      d"        Z" ej                   eed#      d$      d%        Z# ej                   eed&      d'      d(        Z$d) Z%d* Z&ejN                  d+        Z(d, Z)d- Z* ej                   eed.      d/      d0        Z+ ej                   eed1      d2      d3        Z, ej                   eed1      d2      d4        Z- ej                   eed5      d6      d7        Z. ej                   eed5      d6      d8        Z/d9 Z0d: Z1d; Z2d< Z3d= Z4d> Z5d? Z6 ej                  ej                   dk(  d      d@        Z7 ej                  ej                   dk(  d       ej                   eedA      dB      dC               Z8dD Z9dE Z:dF Z; ej                   ejx                  dG      dH      dI        Z=dJ Z>dK Z?dL Z@dM ZAdN ZBdO ZCdP ZDdQ ZEdR ZFdS ZGdT ZHejN                  dU        ZI ej                  ej2                  dV      dW        ZJ ej                  ej2                  dV      dX        ZKdY ZL ej                  ej2                  dV       ej$                  ej.                  dZk(  d[       ej$                  eMd\       ej                   eed      d]      d^                             ZN ej                  ej2                  dV       ej                  ej.                  dZk(  d_      d`               ZO ej                  ej2                  dV       ej$                  ej.                  dZk(  d[       ej$                  eMd\       ej                   eed      d]      da                             ZP ej                  ej2                  dV       ej                  ej.                  dZk(  d_      db               ZQdc ZRdd ZSde ZT ej                   eedf      dg      dh        ZUdi ZVdj ZWdk ZXdl ZYdm ZZ ej$                  ej                   dk(  dn      do        Z[dp Z\dq Z]dr Z^ds Z_dt Z`du Zay)vGeneralModuleTestsNzneed _socket modulec                     | j                  t        j                  t        j                               | j                  t        d      5  dt        j                  _        d d d        y # 1 sw Y   y xY w)N	immutabler   )
assertTruegc
is_tracked_socketr   assertRaisesRegexr   foorY   s    r   test_socket_typez#GeneralModuleTests.test_socket_typeH  sL    gnn56##I{; 	#!"GNN	# 	# 	#s   	A((A1c                     dd l }| j                  t        j                  |j                  u        t        j                         }| j	                  |t        j                         |j                          y r   )r  r  r   
SocketTypeassertIsInstancer!   )rZ   r  r$   s      r   test_SocketType_is_socketobjectz2GeneralModuleTests.test_SocketType_is_socketobjectN  sJ    ))W^^;<MMOa!2!23		r?   c                 2   t        j                   t         j                  t         j                        }|5  | j                  d|j	                         z  t        |             | j                  dt         j                  z  t        |             | j                  dt         j                  z  t        |             | j                  dt        |             | j                  dt        |             |j                  d       | j                  dt        |             | j                  t        |j                               t        |             d d d        | j                  dt        |             | j                  dt        |             y # 1 sw Y   @xY w)	Nzfd=%iz	family=%sztype=%szproto=0raddr	127.0.0.1r   laddrz[closed])
r   rT   rB   assertInfilenoreprassertNotInr   r  r   rZ   r$   s     r   	test_reprzGeneralModuleTests.test_reprU  s   MM&..&*<*<= 	9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	9 	j$q'*$q'*	9 	9s   DFFc           	         t        j                  t         j                  t         j                        }d|j	                         d|j
                  d|j                  d|j                  d	}| j                  t        |      |       |j                          d|j
                  d|j                  d|j                  d}| j                  t        |      |       y # |j                          w xY w)Nz<socket object, fd=z	, family=z, type=z, proto=>z<socket object, fd=-1, family=)r  r   rT   rB   r  familyr}  protor  r  r!   )rZ   r$   expecteds      r   test_csocket_reprz$GeneralModuleTests.test_csocket_reprc  s    NN7??G,?,?@	88:qxxBHT!Wh/GGIxx2a(+ GGIs   AC C1c                    t        j                   t         j                  t         j                        5 }t        |      }| j	                  |j                         |j                                d d d        d }t        j                          	 j                          | j                  d       y # 1 sw Y   BxY w# t        $ r Y y w xY w)NzSocket proxy still exists)
r   rT   rB   r   r  r  r   
gc_collectfailReferenceError)rZ   r$   ps      r   test_weakrefzGeneralModuleTests.test_weakrefp  s    ]]6>>6+=+=> 	5!aAQXXZ4	5 	3HHJ II12	5 	5  		s   :B.B: .B7:	CCc                 <   d}| j                  t        |dz        5  t        # 1 sw Y   nxY w| j                  t        |dz        5  t        j                  # 1 sw Y   nxY w| j                  t        |dz        5  t        j                  # 1 sw Y   y xY w)Nz$Error raising socket exception (%s).r   r
  zsocket.herrorzsocket.gaierror)assertRaisesr   r   herrorgaierrorr	  s     r   testSocketErrorz"GeneralModuleTests.testSocketError}  s    4wC)O< 	M	 	wC/,AB 	 --	  	 wC2C,CD 	"//!	" 	"s    $-
AA$BBc                    t        j                   t         j                  t         j                        }| j                  |j                         |j                  d       |j                         }| j                  t              5 }|j                  d|       d d d        | j                  t        j                        d       | j                  t              5 }|j                  d|       d d d        | j                  t        |j                        d       | j                  t              5 }|j                  dd        d d d        | j                  dt        |j                               | j                  t              5 }|j                  dd|       d d d        | j                  t        |j                        d       | j                  t              5 }|j                  dd|       d d d        | j                  t        |j                        d       | j                  t              5 }|j                  ddd        d d d        | j                  dt        |j                               | j                  t              5 }|j                  dd	|       d d d        | j                  t              5 }|j                  dd d        d d d        | j                  t              5 }|j                  d       d d d        | j                  d
t        |j                               | j                  t              5 }|j                  dd|d       d d d        | j                  dt        |j                               y # 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   YxY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   ~xY w# 1 sw Y   5xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   xY w)N) r   u   ☠z*a bytes-like object is required, not 'str'y              @z.a bytes-like object is required, not 'complex'   fooznot NoneTyper   barz	(1 given)   z	(4 given))r   rT   r(   ry   r!   r   r   r  r   sendtor  r  	exceptionr  )rZ   r$   socknamecms       r   testSendtoErrorsz#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   M>N.NN%N2/N?O6O'O&;O2>NNN"%N/2N<?O	OO#&O/2O;c                 D   t         j                   t         j                  rt         j                   t         j                   t         j
                   t         j                   t         j                   t         j                   t         j                   t         j                   y r<   )r   rT   has_ipv6rq  rB   r(   r   SOCK_RDMr2   
SOL_SOCKETSO_REUSEADDRrY   s    r   testCrucialConstantsz'GeneralModuleTests.testCrucialConstants  sR    ??OOr?   c                     t         j                   t         j                   t         j                  rt         j                   y y r<   )r   IPPROTO_TCPIPPROTO_UDPr  IPPROTO_IPV6rY   s    r   testCrucialIpProtoConstantsz.GeneralModuleTests.testCrucialIpProtoConstants  s)    ?? r?   ntWindows specificc                    t         j                   t         j                   t         j                   t         j                   t         j
                   t         j                   t         j                   t         j                   y r<   )	r   IPPROTO_ICLFXBM
IPPROTO_STIPPROTO_CBTIPPROTO_IGPIPPROTO_RDPIPPROTO_PGMIPPROTO_L2TPrj  rY   s    r   testWindowsSpecificConstantsz/GeneralModuleTests.testWindowsSpecificConstants  sJ    r?   zWASI is missing these methodsc                 z    g d}|D ]2  }t        t        j                  |      r| j                  d| d       4 y )N)_acceptr   r  
connect_exgetpeernamer   rX   recvfromrecvfrom_intor  
setsockoptshutdownzsocket method z is missing)r   r   r  )rZ   namesr  s      r   test_socket_methodsz&GeneralModuleTests.test_socket_methods  s=    

  	>D6==$/		N4&<=	>r?   darwinmacOS specific testIPv6 required for this testc                 b    h d}|D ]&  }| j                  t        t        |      d| d       ( y )N>   
IPV6_RTHDRIPV6_TCLASSIPV6_DSTOPTSIPV6_HOPOPTSIPV6_NEXTHOPIPV6_PATHMTUIPV6_PKTINFOIPV6_CHECKSUM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_0zMissing RFC3542 socket option '')r  r   r   )rZ   optsopts      r   test3542SocketOptionsz(GeneralModuleTests.test3542SocketOptions  s<    
,  	COO$(GuA&N	r?   c                    t        j                         }	 t        j                  |      }| j                  j                  d      dk\  d       	 t        j                  |      \  }}}|gz   }t        j                  |      }||vr"| j                  d|dt        |      d       y y # t        $ r | j	                  d       Y w xY w# t        $ r | j	                  d       Y w xY w)Nname lookup failurer   r   zError resolving host to ip.z1Error testing host resolution mechanisms. (fqdn: z, all: ))r   gethostnamegethostbynamer   r   r  findgethostbyaddrgetfqdnr  r  )rZ   hostnameiphnamealiasesipaddrsall_host_namesfqhns           r   testHostnameResz"GeneralModuleTests.testHostnameRes  s    %%'	1%%h/B 	)+HI	1&,&:&:2&>#E7G #E*W4~~b!~%IIY]_cdr_stu &  	1MM/0	1  	1MM/0	1s#   B, C ,C	C	C)(C)c                     t         j                  ddfD ]'  }| j                  t        j                  |      |       ) t         j                  fD ]*  }| j                  |t        j                  |      d          , y )Nz10.0.0.1255.255.255.255r   )r   HOSTv4r  r   r  r  r  )rZ   r  r[  s      r   test_host_resolutionz'GeneralModuleTests.test_host_resolution  sr    ")):7HI 	?DV11$7>	?
 #))* 	?DMM$ 4 4T :1 =>	?r?   c                    d}dD ]l  }| j                  t        |      5  t        j                  |       d d d        | j                  t        |      5  t        j                  |       d d d        n y # 1 sw Y   AxY w# 1 sw Y   xY w)Nz[resolving an invalid IP address did not raise OSError; can be caused by a broken DNS server)z0.1.1.~1z1+.1.1.1z::1qz::1::2z1:1:1:1:1:1:1:1:1r  )r  r   r   r  r  )rZ   explanationr  s      r    test_host_resolution_bad_addressz3GeneralModuleTests.test_host_resolution_bad_address  s    3 	* 	+D""7"5 +$$T*+""7"< +$$T*+ +		++ ++ +s   A5B5A>	B
	sethostnameztest needs socket.sethostname()r  ztest needs socket.gethostname()c                    t        j                         }	 t        j                  d       	 | j                  t        j                         d       t        j                  d       | j                  t        j                         d       t        j                  |       y # t        $ r:}|j                  t        j
                  k(  r| j                  d       n Y d }~d }~ww xY w# t        j                  |       w xY w)Nnewztest should be run as roots   barr  )r   r  r(  r   errnoEPERMr   r  )rZ   oldhnr   s      r   test_sethostnamez#GeneralModuleTests.test_sethostname(  s     ""$	u%	&V//159v&V//159u%  	ww%++%:; <	 u%s#   B AC% 	C"(0CC"%C<if_nameindexz$socket.if_nameindex() not available.c                    t        j                         }|D ]  \  }}| j                  |t               | j                  |t               | j                  |d       t        j                  |      }| j                  |t               | j                  ||       t        j                  |      }| j                  |t               | j                  ||        y r   )	r   r/  r  intr  assertGreaterif_nametoindexr  if_indextoname)rZ   
interfacesindexr  _index_names         r   testInterfaceNameIndexz)GeneralModuleTests.testInterfaceNameIndex<  s     ((*
% 
	*KE4!!%-!!$,ua(**40F!!&#.UF+))%0E!!%-T5)
	*r?   r4  z&socket.if_indextoname() not available.c                     | j                  t        t        j                  d       | j                  t        t        j                  d       y Nr   	_DEADBEEF)r  r   r   r4  r   rY   s    r   testInvalidInterfaceIndexToNamez2GeneralModuleTests.testInvalidInterfaceIndexToNameL  s4     	'6#8#8!<)V%:%:KHr?   r3  z&socket.if_nametoindex() not available.c                     | j                  t        t        j                  d       | j                  t        t        j                  d       y r;  )r  r   r   r3  r   rY   s    r   testInvalidInterfaceNameToIndexz2GeneralModuleTests.testInvalidInterfaceNameToIndexR  s4     	)V%:%:A>'6#8#8+Fr?   getrefcountztest needs sys.getrefcount()c                     	 t        j                  t              }t        j                  t        d       y # t
        $ r2 t        j                  t              k7  r| j                  d       Y y Y y w xY w)Nr   z$socket.getnameinfo loses a reference)sysr@  ra   r   getnameinfor   r  )rZ   origs     r   testRefCountGetNameInfoz*GeneralModuleTests.testRefCountGetNameInfoX  sZ    	B??8,Dx* 	Bx(D0		@A 1	Bs   36 6A10A1c                 P    	 t        j                  dd       y # t        $ r Y y w xY w)N)r   r   r   r   r   )r   rC  r   rY   s    r   testInterpreterCrashz'GeneralModuleTests.testInterpreterCrashd  s)    	~q1 		s    	%%c                    t         j                  dt         j                  dt         j                  dt         j                  di}|j                         D ]o  \  }}d|z  dz
  }dD ])  }| j                  ||z   | |||z              |z         +  ||      }| j                  ||z  |       | j                  t        |d       q y )N       r   )r   r     i  r   igE#i2Tvl        )	r   htonlntohlhtonsntohsitemsr  r  OverflowError)rZ   sizesfuncsizemaskrP   swappeds          r   testNtoHzGeneralModuleTests.testNtoHl  s     r6<<r6<<5++- 	:JD$tGq=DG F  T4QtV+=+DEF 4jGWt^T2mT59	:r?   c                    dd l }g d}|dgz   }dddddz  g}||j                  dz
  |j                  dz   gz   d	|j                  gz   }|D ],  }t        j                  |       t        j
                  |       . |D ],  }t        j                  |       t        j                  |       . |D ]L  }| j                  t        t        j                  |       | j                  t        t        j
                  |       N |D ]L  }| j                  t        t        j                  |       | j                  t        t        j                  |       N y )
Nr   )r   r   r   rK      l        r        )
	_testcapiINT_MININT_MAXr   rO  rN  rM  rL  r  rQ  )rZ   r^  s_good_valuesl_good_valuesl_bad_valuess_bad_valuesks          r   testNtoHErrorsz!GeneralModuleTests.testNtoHErrorsz  s.   )%4Bq$w/q )"3"3A"567i''() 	
  	ALLOLLO	  	ALLOLLO	  	>AmV\\1=mV\\1=	>  	>AmV\\1=mV\\1=	>r?   c                 B   | j                   }t        j                  j                  d      st        j                  dv rd}nd}|D ]  }	 t	        j
                  |d      } n t        t        t        d      rt        j                         dk\  rt	        j
                  |      } |||       	 t	        j
                  |d      } |||       t        j                  s |t	        j                        |        |t	        j                  |d      |       | |t	        j                  |d      |       | j                  t        t        j                  d	       | j                  t        t        j                  d
       y # t        $ r Y Gw xY w# t        $ r d }Y w xY w)N)freebsdnetbsdgnukfreebsd)linuxr  )daytimeqotddomain)echorl  rn  tcpgetandroidapilevel   udprZ  r]  )r  rB  platform
startswithr   getservbynamer   r   rq  r   
is_androidgetservbyportr  rQ  )rZ   eqservicesservicerW   port2udpports          r   testGetServByz GeneralModuleTests.testGetServBy  sr    LL##$HI||22 5H4H 	G++GU;	 M 12&&(B.((1EtUO	**7E:G w !!v##E*G4
6e,g6v##GU3W=-)=)=rB-)=)=uE5    	G	s$   	F .F  	FFFFc                    | j                  t        j                         d        t        j                         5 }| j                  |j                         d        d d d        t	        d      5  | j                  t        j                         d       t        j                         5 }| j                  |j                         d       d d d        t        j
                  d        | j                  t        j                         d        t        j                         5 }| j                  |j                         d        d d d        d d d        | j                  t        t        j
                  d       | j                  t        t        j
                  d       y # 1 sw Y   @xY w# 1 sw Y   xY w# 1 sw Y   uxY w# 1 sw Y   yxY w)N
   rZ  spam)	r  r   rJ   
gettimeoutrN   rK   r  
ValueErrorr   )rZ   r$   rM  s      r   testDefaultTimeoutz%GeneralModuleTests.testDefaultTimeout  sV    	113T:]]_ 	3Q\\^T2	3 &b) 		:V557< 8D  !2B78 $$T*V557> :D  !2D9:		: 	*f&>&>C 	)V%=%=vF'	3 	38 8: :		: 		:sH   !F-9F=&!F%AF=!F1=F=F"%F.	*F=1F:	6F==G	inet_atonztest needs socket.inet_aton()c                     | j                  dt        j                  d             | j                  dt        j                  d             y )N       0.0.0.0   r"  )r  r   r  rY   s    r   testIPv4_inet_aton_fourbytesz/GeneralModuleTests.testIPv4_inet_aton_fourbytes  s;    
 	F$4$4Y$?@F$4$45F$GHr?   	inet_ptonztest needs socket.inet_pton()c                     ddl m}mm fd} fd} j	                  d |d              j	                  d |d              j	                  d	 |d
              j	                  d |d              j	                  d |d             t
        s	 ||d        ||d        ||d        ||d        ||d        j	                  d |d              j	                  d |d              j	                  d	 |d
              j	                  d |d              ||d        ||d        ||d        ||d        ||d       y )Nr   )r  r  rT   c                      |       S r<   rd   )arT   r  s    r   rz  z5GeneralModuleTests.testIPv4toString.<locals>.<lambda>      i+ r?   c                 >    j                  t        t        f| |      S r<   r  r   r  rS  r  rZ   s     r   rz  z5GeneralModuleTests.testIPv4toString.<locals>.<lambda>      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::1)r   r  r  rT   r  r   )rZ   r   gassertInvalidrT   r  s   `   @@r   testIPv4toStringz#GeneralModuleTests.testIPv4toString  sG    	>=+
 	,a	l;,a.>?,a0A.BC,a	l;,a0A.BC!X&a%a#a%a,a	l;,a.>?,a0A.BC,a0A.BCa"a%a#a%ar?   c                     	 ddl mmm} |s j	                  d       t        j                  dk(  r
	  d       fd	 fd
} j                  d d              j                  d d              j                  d d              j                  d d              j                  d d              j                  d d              |d        |d        |d        |d        |d        |d        |d        |d       t        s |d        j                  d d              j                  d  d!              j                  d" d#              |d$        |d%        |d&        |d'        |d(        |d)       y # t
        $ r  j	                  d       Y w xY w# t        $ r+}|j                  dk(  r j	                  d       Y d }~d }~ww xY w)*Nr   )r  rq  r  IPv6 not available+could not import needed symbols from socketwin32::&'  IPv6 might not be supportedc                      |       S r<   rd   )r  rq  r  s    r   rz  z5GeneralModuleTests.testIPv6toString.<locals>.<lambda>      i!, r?   c                 >    j                  t        t        f|       S r<   r  r  r   rZ   s    r   rz  z5GeneralModuleTests.testIPv6toString.<locals>.<lambda>      $"3"3j!1a#
 r?                      z0::0s                  z1::s   Ev V$z$45ef:76cb:1a:56ef:afeb:bac:1924:aeaes   B
    '  T zad42:abc::127:0:254:2s     
            z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:s               *@z::254.42.23.64s    B        *@z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)r   r  rq  r  r   ImportErrorrB  rt  r   winerrorr  r   )rZ   r  r   r  rq  r   r  s   `   @@@r   testIPv6toStringz#GeneralModuleTests.testIPv6toString   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%)*,-;	
 	C%&	
 	O23	
 	'(n%m$-.m$/0o  	IMMGH	I  A::&MM"?@As(   F# 	G #G G	G8 G33G8	inet_ntopztest needs socket.inet_ntop()c                 t    ddl m}mm fd} fd} j	                  d |d              j	                  d |d              j	                  d	 |d
              j	                  d |d              ||d        ||d        ||d        j	                  d |t        d                    j	                  d |d              j	                  d |d              j	                  d	 |d
              ||d        ||d        ||d        j	                  d |t        d                   y )Nr   )	inet_ntoar  rT   c                      |       S r<   rd   )r  rT   r  s    r   rz  z5GeneralModuleTests.testStringToIPv4.<locals>.<lambda>D  r  r?   c                 >    j                  t        t        f| |      S r<   r  r  s     r   rz  z5GeneralModuleTests.testStringToIPv4.<locals>.<lambda>E  r  r?   z1.0.1.0s     z170.85.170.85s   UUr"  r  r  r  s      s        r  )r   r  r  rT   r  	bytearray)rZ   r   r  r  rT   r  s   `   @@r   testStringToIPv4z#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                 H    	 ddl mmm} |s j	                  d       t        j                  dk(  r
	  d       fd	 fd
} j                  d d              j                  d d              j                  d d              j                  d t        d                    |d        |d        |d       y # t
        $ r  j	                  d       Y w xY w# t        $ r*}|j                  dk(  r j	                  d       Y d }~d }~ww xY w)Nr   )r  rq  r  r  r  r  r  r  r  c                      |       S r<   rd   )r  rq  r  s    r   rz  z5GeneralModuleTests.testStringToIPv6.<locals>.<lambda>k  r  r?   c                 >    j                  t        t        f|       S r<   r  r  s    r   rz  z5GeneralModuleTests.testStringToIPv6.<locals>.<lambda>l  r  r?   r  r  s                  z!aef:b01:506:1001:ffff:9997:55:170s   
 Ups   s   s   )r   r  rq  r  r   r  rB  rt  r   r  r  r  )rZ   r  r   r  rq  r   r  s   `   @@@r   testStringToIPv6z#GeneralModuleTests.testStringToIPv6Z  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+*C+.	D!7 DD!c                    t        j                   t         j                  t         j                        }| j                  |j                         t        j                         D ]+  }t        j                         }	 |j                  d|f        n |j                         }	 t        j                  t        j                               }| j#                  |d   dfd|d   z         | j%                  |d          y # t        $ r-}|j                  t        j                  k7  s|dk(  r Y d }~d }~ww xY w# t        $ r | j!                  d       Y w xY w)Nr     r  r   z
%s invalidr   )r   rT   rB   ry   r!   	itertoolscountr   find_unused_portr   r   r+  
EADDRINUSEr   r  r  r   r  r  )rZ   rM  rP   rW   r   r  
my_ip_addrs          r   testSockNamez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*   :C<!'D5 <	D2#D--D25EEc                 $   t        j                   t         j                  t         j                        }| j                  |j                         |j                  t         j                  t         j                        }| j                  |dk7  d       y )Nr   zinitial mode is reuse)	r   rT   rB   ry   r!   
getsockoptr  r  assertFalserZ   rM  reuses      r   testGetSockOptz!GeneralModuleTests.testGetSockOpt  s_     }}V^^V-?-?@

# 1 163F3FG!%<=r?   c                    t        j                   t         j                  t         j                        }| j                  |j                         |j                  t         j                  t         j                  d       |j                  t         j                  t         j                        }| j                  |dk(  d       y )Nr   r   zfailed to set reuse mode)
r   rT   rB   ry   r!   r  r  r  r  r  r  s      r   testSetSockOptz!GeneralModuleTests.testSetSockOpt  sy    }}V^^V-?-?@

#))6+>+>B 1 163F3FG!%?@r?   c                     t        j                   t         j                  t         j                        5 }|j                  d       d d d        | j	                  t
        j                  d       y # 1 sw Y   +xY w)Nr      spam)r   rT   rB   
settimeoutr  r   r  r\  s     r   testSendAfterClosez%GeneralModuleTests.testSendAfterClose  sS    ]]6>>6+=+=> 	$OOA	'499g6	 	s   A//A8c                    t        j                          }|j                  t         j                  df       t        j                   |j                               j	                          	 |j	                          | j                  d       y # t        $ rD}| j                  |j                  t        j                  t        j                  f       Y d }~y d }~ww xY w)Nr   r  z#close() should raise EBADF/ENOTSOCK)r   r   
_LOCALHOSTr  r!   r  r   r  r+  EBADFENOTSOCK)rZ   rM  r  s      r   testCloseExceptionz%GeneralModuleTests.testCloseException  s    }}		6$$a()T[[]+113	=JJL
 II;<	  	DMM#))ekk5>>%BCC	Ds   )B 	C:CCc                 *   t        j                   t         j                  t         j                        5 }| j                  |j                  t         j                         t        t         d      rL| j                  |j                  t         j                  t         j                  z  t         j                  f       n*| j                  |j                  t         j                         | j                  |j                  d       d d d        y # 1 sw Y   y xY w)NSOCK_CLOEXECr   )
r   rT   rB   r  r  r   r  r}  r  r  r\  s     r   testNewAttributesz$GeneralModuleTests.testNewAttributes  s     ]]6>>6+=+=> 	,$T[[&..9v~.dii%11F4G4GG%1134   F,>,>?TZZ+	, 	, 	,s   CD		Dc                 8   t        j                          }| j                  |j                         t        j                         }|dz   }|dz
  }| j                  t        |j                  t        |f       | j                  t        |j                  t        |f       t        j                         D ]/  }t        j                         }	 |j                  t        |f        y  y # t        $ r-}|j                  t        j                  k7  s|dk(  r Y d }~dd }~ww xY w)Nr]  r  )r   ry   r!   r   r  r  rQ  r   r   r  r  r   r+  r  )rZ   rM  rW   big_portneg_portrP   r   s          r   test_getsockaddrargz&GeneralModuleTests.test_getsockaddrarg  s    }}

#--/%<%<-T84DE-T84DE " 	A 113D		4,'
 	  77e...!q& 39s   C##	D,#DDc                 0   | j                  t        t        j                  d             | j                  t        t        d             | j                  t        t        d             | j                  t        t        d             | j                  t        t        d             t        j                         }| j                  |j                         | j                  t        |j                  dd        |j                  t        j                  d       y )Nr   
SIO_RCVALL	RCVALL_ON
RCVALL_OFFSIO_KEEPALIVE_VALSrZ  )r   d   r  )	r  r   r   ry   r!   r  r  r   r  r  s     r   test_sock_ioctlz"GeneralModuleTests.test_sock_ioctl  s    w78564556(<=>MMO *aggr48	))=9r?   SIO_LOOPBACK_FAST_PATHz1Loopback fast path support required for this testc                 l   t        j                          }| j                  |j                         	 |j                  t         j                  d       | j                  t        |j                  t         j                  d        y # t
        $ r(}d}|j                  |k(  r| j                  d        d }~ww xY w)NTi='  zQSIO_LOOPBACK_FAST_PATH is defined but doesn't implemented in this Windows version)
r   ry   r!   r   r  r   r  r   r  r   )rZ   r$   excWSAEOPNOTSUPPs       r   test_sio_loopback_fast_pathz.GeneralModuleTests.test_sio_loopback_fast_path  s     MMO 	GGF1148 	)QWWf.K.KTR  	!M||}, L M	s    B 	B3#B..B3c                 $   	 t        j                  dd       t        j                  t        d       D ]  }| j                  t        |      d        t        j                  dd       t        j                  dd       t        j                  d d       t        j                  rt        j                  dd       t        t        d      rt        j                         dk\  rt        j                  t        d	       t        j                  t        d       t        j                  t        d        t        j                  t        dt         j                  t         j                        }|D ]  \  }}}}}| j                  |t         j                         | j                  t!        |      d
|j"                  z         | j                  t%        |      t%        |j"                               | j                  |t         j                         | j                  t!        |      d|j"                  z         | j                  t%        |      t%        |j"                                t        j                  t        d dt         j                        }|D ](  \  }}}}}| j                  |t         j                         * t        j                  t        d ddt         j&                         t        j                  t        d dddt         j(                         t        j                  d dt         j*                  t         j                  dt         j(                         t        j                  t        d       }t        j                  t        d       }	| j                  ||	       t        j                  t        d t         j                        }t        j                  t        d t         j                        }	| j                  ||	       t        j                  t        d dt         j                        }t        j                  t        d t         j                        }	| j                  ||	       t        j                  t        d ddt         j&                        }t        j                  t        d t         j&                        }	| j                  ||	       t        j                  t        d dddt         j(                        }t        j                  t        d t         j(                        }	| j                  ||	       t        j                  d dt         j*                  t         j                  dt         j(                        }t        j                  d dt         j*                  t         j                  dt         j(                        }	| j                  ||	       | j-                  t.        t         j                  dd       t        t         d      r*	 t        j                  dd dddt         j0                         y y # t         j                  $ r4}|j                  t         j                  k(  r| j                  d        d }~ww xY w# t         j                  $ r Y y w xY w)N	localhostP   zbuggy libc versionr  r  r  rq  rr  http<AddressFamily.AF_INET: %r><SocketKind.SOCK_STREAM: %r>r   )r[  rW   r  r}  )r  )flags)r[  rW   r  r}  r  r  u   AI_NUMERICSERV)r   getaddrinfor  r+  EAI_SERVICEr   r   r  lenr   IPV6_ENABLEDr   rB  rq  rT   rB   r  valuer  SOL_TCP
AI_PASSIVE	AF_UNSPECr  UnicodeEncodeErrorr  )
rZ   r  infoinfosr  r}  r   socktyper  bs
             r   testGetaddrinfoz"GeneralModuleTests.testGetaddrinfo  s   	{B/ &&tT2 	+DSY*	+ 	;+;+4$%%ub) 12&&(B.tV,4$4&""4V^^V=O=OP%* 	9!FD!QVV^^4T&\+H6<<+WXS[#fll*;<T6#5#56T$Z)G$**)TUSYDJJ8	9 ""4q&2D2DE$) 	; AxAqXv'9'9:	; 	4q!V^^<4q!Q0A0AB 	4F$4$4f6H6H!!,,	. tT*Dt4AtT6>>:tT&..AAtT1f.@.@AtT0B0BCAtT1a@tT@AtT1aF4E4EFtT1B1BCAtQ(8(8&:L:La%002Dq9I9I$*$6$6a%+%6%68 	A,f.@.@+xX 6+, "";aA#)#8#8:	 -I  	yyF...23		T ?? s)   X/ (Y9 /Y6/Y11Y69ZZc                    ddl m}m}m} 	 t	        j
                  d |dz   t        j                         	 t	        j
                  d |dz   t        j                         	 t	        j
                  d |dz
  dz   t        j                         	 t	        j
                  d |dz
  t        j                         t	        j
                  d dt        j                         t	        j
                  d dt        j                         y # t        $ r | j                  d       Y t        j                  $ r Y w xY w# t        $ r | j                  d       Y t        j                  $ r Y 	w xY w# t        $ r | j                  d       Y t        j                  $ r Y w xY w# t        $ r | j                  d       Y t        j                  $ r Y w xY w)Nr   )	ULONG_MAXLONG_MAXLONG_MINr   r  z,Either no error or socket.gaierror expected.rK  )
r^  r  r  r  r   r  rB   rQ  r  r  )rZ   r  r  r  s       r   "test_getaddrinfo_int_port_overflowz5GeneralModuleTests.test_getaddrinfo_int_port_overflowJ  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 		s^   )D )D7  ,E, )F! D4D43D47E)E)(E),FFF!G>GGc                 P    | j                  t        t        j                  dd       y )N)zmail.python.orgr   r   )r  r   r   rC  rY   s    r   test_getnameinfoz#GeneralModuleTests.test_getnameinfoz  s    '6#5#57LaPr?   networkznetwork is not enabledc                 B   t        j                  d      5  t        j                  d       d d d        d}t        j                  |       t        j                  |       t        j
                  |dt        j                  t        j                         y # 1 sw Y   jxY w)Nz
python.orgu!   испытание.pythontest.netr   )r   transient_internetr   r  gethostbyname_exr  r  rB   )rZ   rn  s     r   	test_idnazGeneralModuleTests.test_idna~  sx    
 --l; 	/  .	/ 5V$'6!F$4$4V5G5GH	/ 	/s   BBc                 $    t        t        d      rt        t        d      s j                  d        fd} fd}t        j                         \  }}t        j                  t        j
                  |      }	 |r|j                  d        j                  t              5  t        j                  d       |j                  dt        j                  z         d d d        |rkt        j                  t        j
                  |       t        j                  d        j                  t        |j                  dt        j                  z         t        j                  d	       t        j                  t        j
                  |       |j                          |j                          y # 1 sw Y   xY w# t        j                  d	       t        j                  t        j
                  |       |j                          |j                          w xY w)
Nalarmr$  z9signal.alarm and socket.socketpair required for this testc                  P    j                  t        t        j                  d       y r   r  r  mathacoshru   rZ   s    r   
ok_handlerz@GeneralModuleTests.check_sendall_interrupted.<locals>.ok_handler  s    j$**a8r?   c                  Z    j                  t        t        j                  d       ddz   y Nr   r   r	  r  s    r   raising_handlerzEGeneralModuleTests.check_sendall_interrupted.<locals>.raising_handler  s     j$**a8Fr?   g      ?r      xr   )r   signalr   r   r$  SIGALRMr  r  ZeroDivisionErrorr  sendallr   SOCK_MAX_SIZETimeoutErrorr!   )rZ   with_timeoutr  r  cr$   	old_alarms   `      r   check_sendall_interruptedz,GeneralModuleTests.check_sendall_interrupted  sY   vw'wv|/LMMUV	9	   "1MM&../B		S!""#45 8Q		$!6!6678 fnnj9Q!!,		"&)>)>">@ LLOMM&..)4GGIGGI8 8 LLOMM&..)4GGIGGIs&   9(F4 !8F(A5F4 (F1-F4 4AHc                 &    | j                  d       y NFr  rY   s    r   test_sendall_interruptedz+GeneralModuleTests.test_sendall_interrupted  s    &&u-r?   c                 &    | j                  d       y )NTr  rY   s    r   %test_sendall_interrupted_with_timeoutz8GeneralModuleTests.test_sendall_interrupted_with_timeout  s    &&t,r?   c                    t        j                   t         j                  t         j                        }t        |      }| j	                  t
              5 }d }t        j                          d d d        | j                  |t        j                  j                  d                t        j                   t         j                  t         j                        }|j                  d      }t        |      }d }t        j                          | j	                  t
              5  d }t        j                          d d d        y # 1 sw Y   xY w# 1 sw Y   y xY w)Nr   r   )r   rT   rB   r  assertWarnsResourceWarningr   r  r  r  warningru   makefile)rZ   rM  r   r  r   s        r   test_dealloc_warnz$GeneralModuleTests.test_dealloc_warn  s    }}V^^V-?-?@Jo. 	!"D 	! 	aRZZ__Q/01}}V^^V-?-?@MM$Jo. 	!A 	! 	!	! 	!	! 	!s   D=E	=E	Ec                 
   t        j                   t         j                  t         j                        5 }|j                  d      }|j	                          | j                  t        |      d       d d d        y # 1 sw Y   y xY w)Nr   z<_io.BufferedReader name=-1>)r   rT   rB   r&  r!   r  r  rZ   rM  fps      r   test_name_closed_socketioz,GeneralModuleTests.test_name_closed_socketio  sa    ]]6>>6+=+=> 	G$t$BHHJT"X'EF	G 	G 	Gs   =A99Bc                    t        j                          5 }|j                  dd      }| j                  |j                                | j	                  |j                                | j	                  |j                                |j                          | j                  t        |j                         | j                  t        |j
                         | j                  t        |j                         d d d        y # 1 sw Y   y xY w)Nr   r   )	buffering)
r   r&  r  readabler  writableseekabler!   r  r  r)  s      r   test_unusable_closed_socketioz0GeneralModuleTests.test_unusable_closed_socketio  s    ]]_ 	7tq1BOOBKKM*R[[]+R[[]+HHJj"++6j"++6j"++6	7 	7 	7s   C!C??Dc                    t        j                          }	 |j                  t        df       t        j                  |j	                                | j                  t              5  |j                  d       d d d        | j                  t              5  |j                          d d d        | j                  t              5  t        j                  d        d d d        | j                  t              5  t        j                  d       d d d        y # 1 sw Y   xY w# 1 sw Y   |xY w# | j                  t              5  |j                          d d d        w # 1 sw Y   w xY wxY w# 1 sw Y   xY w# 1 sw Y   y xY w)Nr   r   rZ  )	r   r   r   r!   r  r  r   rX   r   r\  s     r   test_socket_closez$GeneralModuleTests.test_socket_close  s    }}	IItQi LL'""7+ A ""7+ 

 y) 	LL	w' 	LL	 	  ""7+ 

  	 		 	s`   AD, %D7D, D E+5E7DD,  D),E(E	E(E%!E(+E47F c           	      J   dD ]z  }| j                  |      5  t        j                         5 }d|v rd nd}|j                  ||      5 }| j                  |j                  |       d d d        d d d        d d d        | y # 1 sw Y   xY w# 1 sw Y    xY w# 1 sw Y   xY w)N)r   r   rwwwbmoder  r	   encoding)subTestr   r&  r  r9  )rZ   r9  rM  r;  r*  s        r   test_makefile_modez%GeneralModuleTests.test_makefile_mode  s    . 	8D4( 8]]_ 8'*d{tHth? 82(($7888 8	88 88 88 8s:   BB	B	&B.BB
BBBB"	c           	      *   dD ]j  }| j                  |      5  t        j                         5 }| j                  t        d      5  |j	                  |       d d d        d d d        d d d        l y # 1 sw Y   xY w# 1 sw Y    xY w# 1 sw Y   xY w)N)rtr   +r  r8  zinvalid mode)r<  r   r  r  r&  )rZ   r9  rM  s      r   test_makefile_invalid_modez-GeneralModuleTests.test_makefile_invalid_mode  s    ' 	,D4( ,]]_ ,//
NK ,d+,,, ,	,, ,, ,, ,s:   B	A=A1	A=B	1A:6A==BB		B	c                    t        j                          }|5  t        t        j                  dz         D ](  }| j	                  t
        t        j                  ||       * 	 d d d        t        t        j                  dz         D ]  }t        j                  t        j                  t         j                  |            }| j                  |t         j                         t        j                  t        j                  t         j                  |            }| j                  |t         j                          y # 1 sw Y   xY wrX  )r   rangepickleHIGHEST_PROTOCOLr  r   dumpsloadsrT   r  rB   )rZ   rM  protocolr  r}  s        r   test_picklezGeneralModuleTests.test_pickle  s    }} 	K!&"9"9A"=> K!!)V\\4JK	K f559: 	7H\\&,,v~~x"HIFVV^^4<<V-?-? JKDT6#5#56		7	K 	Ks   AD88Ec                    dD ]e  }t        j                   t         j                  t         j                        5 }|j                  t        df       |j                  |       d d d        g t        j                   t         j                  t         j                        5 }|j                  t        df       |j                          d d d        y # 1 sw Y   xY w# 1 sw Y   y xY w)N)r   rZ  r   )r   rT   rB   r   r   rX   )rZ   backlogsrvs      r   test_listen_backlogz&GeneralModuleTests.test_listen_backlog   s     	$Gv~~v/A/AB $c$#

7#$ $	$
 ]]6>>6+=+=> 	#HHdAYJJL	 		$ $	 	s   )C(CC	C#c                 $   dd l }t        j                  t        j                  t        j                        5 }|j	                  t
        df       | j                  t        |j                  |j                  dz          d d d        y # 1 sw Y   y xY wr  )
r^  r   rT   rB   r   r   r  rQ  rX   r`  )rZ   r^  rL  s      r   test_listen_backlog_overflowz/GeneralModuleTests.test_listen_backlog_overflow
  sk     	]]6>>6+=+=> 	P#HHdAYmSZZ9J9JQ9NO	P 	P 	Ps   ABBIPv6 required for this test.c                 d   | j                  t        t        j                  t        j
                  ddfd       t        j                  t        j                  t        j                        5 }| j                  t        |j                  t        j
                  ddf       d d d        y # 1 sw Y   y xY w)Nr   rY  i)	r  rQ  r   rC  r   rm  rq  rB   r   r  s     r   test_flowinfoz GeneralModuleTests.test_flowinfo  s    -););(//J?	D]]6??F,>,>? 	U1mQVVm6J6JAs5ST	U 	U 	Us   *3B&&B/c                     t        j                  ddt         j                  t         j                  t         j                        \  ^ }}| j                  |d       y )Nff02::1de:c0:face:8Dr
   )ff02::1de:c0:face:8dr
   r   r   )r   r  rq  r(   r  r  )rZ   r   sockaddrs      r   test_getaddrinfo_ipv6_basicz.GeneralModuleTests.test_getaddrinfo_ipv6_basic  sJ    ".."&//	
1h 	#GHr?   c                     | j                  t        j                         t        j                  d             | j                  t        j                         t        j                  d             y )Nr  r  )r  r   r  rY   s    r   test_getfqdn_filter_localhostz0GeneralModuleTests.test_getfqdn_filter_localhost#  sB    )6>>)+DE)6>>$+?@r?   r  zdoes not work on WindowszSymbolic scope id does not workz test needs socket.if_nameindex()c                     t        j                         d   \  }}t        j                  d|z   dt         j                  t         j                  t         j
                        \  ^ }}| j                  |ddd|f       y )Nr   ff02::1de:c0:face:8D%r
   rU  )r   r/  r  rq  r(   r  r  )rZ   ifindextest_interfacer   rV  s        r   &test_getaddrinfo_ipv6_scopeid_symbolicz9GeneralModuleTests.test_getaddrinfo_ipv6_scopeid_symbolic'  sr     %+$7$7$9!$<!."..#n4&//	
1h 	$:D!W#MNr?   z.Numeric scope id does not work or undocumentedc                     d}t        j                  dt        |      z   dt         j                  t         j                  t         j
                        \  ^ }}| j                  |ddd|f       y )N*   r[  r
   rU  r   )r   r  r  rq  r(   r  r  )rZ   r\  r   rV  s       r   %test_getaddrinfo_ipv6_scopeid_numericz8GeneralModuleTests.test_getaddrinfo_ipv6_scopeid_numeric7  sc     "..#c'l2&//	
1h 	$:D!W#MNr?   c                     t        j                         d   \  }}ddd|f}t        j                  |t         j                  t         j                  z        }| j                  |d|z   df       y )Nr   rT  r
   ff02::1de:c0:face:8d%1234)r   r/  rC  NI_NUMERICHOSTNI_NUMERICSERVr  )rZ   r\  r]  rV  nameinfos        r   &test_getnameinfo_ipv6_scopeid_symbolicz9GeneralModuleTests.test_getnameinfo_ipv6_scopeid_symbolicH  sh     %+$7$7$9!$<!.*D!W=%%h0E0EH]H]0]^$;n$Lf#UVr?   c                     d}ddd|f}t        j                  |t         j                  t         j                  z        }| j	                  |dt        |      z   df       y )Nr`  rT  r
   r   rc  rd  )r   rC  re  rf  r  r  )rZ   r\  rV  rg  s       r   %test_getnameinfo_ipv6_scopeid_numericz8GeneralModuleTests.test_getnameinfo_ipv6_scopeid_numericS  sY     *D!W=%%h0E0EH]H]0]^$;c'l$JF#STr?   c                    t        j                   t         j                  t         j                        5 }| j                  t	        |j
                        d|j
                  j                  z         | j                  t	        |j                        d|j                  j                  z         | j                  t        |j
                        t        |j
                  j                               | j                  t        |j                        t        |j                  j                               d d d        y # 1 sw Y   y xY w)Nr  r  )	r   rT   rB   r  r  r  r  r}  r  r  s     r   test_str_for_enumsz%GeneralModuleTests.test_str_for_enums^  s     ]]6>>6+=+=> 	=!T!((^-JQXX^^-[\T!&&\+IAFFLL+XYS]C,?@S[#affll*;<		= 	= 	=s   C=D99Ec                    t        t        dd      }t        t        dd      }t        j                  |z  |z  }t        j                  t        j                  |      5 }| j	                  |j
                  t        j                         |j                  d       | j	                  |j
                  t        j                         |j                  d       | j	                  |j
                  t        j                         |j                  d       | j	                  |j
                  t        j                         |j                  d       | j	                  |j
                  t        j                         d d d        y # 1 sw Y   y xY w)NSOCK_NONBLOCKr   r  r   TF)r   r   rB   rT   r  r}  r  setblocking)rZ   rn  r  	sock_typer$   s        r    test_socket_consistent_sock_typez3GeneralModuleTests.test_socket_consistent_sock_typeg  s   ;v~q9&&6E	]]6>>95 		9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		9 		9 		9s   DE==Fc                 n   t        j                   t         j                  t         j                        }|j                         }t	        t         j
                  j                  j                               dz   }t	        d t         j                  j                  j                         D              dz   }t        j                   ||d|      5 }| j                  |j                  |       | j                  |j                  |       | j                  |j                  ddh       d d d        y # 1 sw Y   y xY w)Nr   c              3   .   K   | ]  \  }}|d vr|  yw)>   r  rn  Nrd   )r  r  kinds      r   r  zEGeneralModuleTests.test_unknown_socket_family_repr.<locals>.<genexpr>  s%      
d<< 
s   rr  )r  r}  r  r  r   )r   rT   rB   detachmaxAddressFamily__members__values
SocketKindrP  r  r  r}  r  r  )rZ   rM  fdunknown_familyunknown_typer$   s         r   test_unknown_socket_family_reprz2GeneralModuleTests.test_unknown_socket_family_reprw  s     }}V^^V-?-?@[[]V11==DDFG!K 
$//;;AAC
 
 	 ]]%L 	,QXX~6QVV\2MM!''Ar7+	, 	, 	,s   AD++D4sendfileztest needs os.sendfile()c                     G d d      }t        j                          5 }t        j                  t        j                  t        j                        }t        j
                  |       | j                  t         j                        5  |j                   ||             d d d        | j                  t              5  |j                   |ddz               d d d        | j                  t              5  |j                   |d              d d d        d d d        y # 1 sw Y   xY w# 1 sw Y   SxY w# 1 sw Y   *xY w# 1 sw Y   y xY w)Nc                       e Zd Zd Zd Zy)<GeneralModuleTests.test__sendfile_use_sendfile.<locals>.Filec                     || _         y r<   r{  )rZ   r{  s     r   rp   zEGeneralModuleTests.test__sendfile_use_sendfile.<locals>.File.__init__  s	    r?   c                     | j                   S r<   r  rY   s    r   r  zCGeneralModuleTests.test__sendfile_use_sendfile.<locals>.File.fileno  s    wwr?   N)ra   rb   rc   rp   r  rd   r?   r   Filer    s    r?   r  r   r\  )r   osr   curdirO_RDONLYr!   r  _GiveupOnSendfile_sendfile_use_sendfilerQ  r   )rZ   r  rM  r{  s       r   test__sendfile_use_sendfilez.GeneralModuleTests.test__sendfile_use_sendfile  s    	 	 ]]_ 	8BKK0BHHRL""6#;#;< 6++DH56""=1 ;++DDM:;""9- 8++DJ78	8 	86 6; ;8 8	8 	8sT   A'E DE ;D(E 3D4E D%	!E (D1	-E 4D=	9E  E	c                    | j                  |j                  |       | j                  |j                  |       |j                         }t	        j                  |      }| j                  |j                         |j                          | j                  |j                  |       | j                  |j                  |       | j                  |j                         |       y Nr  )r  r  r}  r  r   ry   r!   ru  )rZ   r$   r  styper{  s2s         r   _test_socket_filenoz&GeneralModuleTests._test_socket_fileno  s    6*'XXZ]]"%!	
F+%(b)r?   c                    t        j                   t         j                  t         j                        }| j                  |j                         |j                  t        j                  df       | j                  |t         j                  t         j                         t        t         d      rt        j                   t         j                  t         j                        }| j                  |j                         |j                  t        j                  df       | j                  |t         j                  t         j                         t        j                  rt        j                   t         j                  t         j                        }| j                  |j                         |j                  t        j                  dddf       | j                  |t         j                  t         j                         t        t         d      rt        j                         }| j                  t        j                   |       t        j                   t         j"                  t         j                        }|5  	 |j                  |       | j                  |t         j"                  t         j                         d d d        y y # t$        $ r Y w xY w# 1 sw Y   y xY w)Nr   r(   rR  )r   rT   rB   ry   r!   r   r   r   r  r   r(   r  rq  rm  rJ  r   rK  rR  PermissionError)rZ   r$   	unix_names      r   test_socket_filenoz%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AFF9% ,,Q-3-?-?AA A & ' A As0   2K4J>/K>	K
K	K

KKc                     | j                  t              5  t        j                  t        j                  t        j                  d       d d d        y # 1 sw Y   y xY w)Ng     @E@r  r  r   r   rT   rB   rY   s    r    test_socket_fileno_rejects_floatz3GeneralModuleTests.test_socket_fileno_rejects_float  sC    y) 	KMM&..&*<*<TJ	K 	K 	K   5AAc                     | j                  t              5  t        j                  t        j                  t        j                  d       d d d        y # 1 sw Y   y xY w)Nr  r  r  rY   s    r   &test_socket_fileno_rejects_other_typesz9GeneralModuleTests.test_socket_fileno_rejects_other_types  sC    y) 	LMM&..&*<*<UK	L 	L 	Lr  c                     | j                  t        d      5  t        j                  t        j                  t        j                  d       d d d        y # 1 sw Y   y xY w)Nnegative file descriptorrZ  r  r  r  r   rT   rB   rY   s    r   )test_socket_fileno_rejects_invalid_socketz<GeneralModuleTests.test_socket_fileno_rejects_invalid_socket  sF    ##J0JK 	IMM&..&*<*<RH	I 	I 	I   5AAzWindows disallows -1 onlyc                     | j                  t        d      5  t        j                  t        j                  t        j                  d       d d d        y # 1 sw Y   y xY w)Nr  ir  r  rY   s    r   #test_socket_fileno_rejects_negativez6GeneralModuleTests.test_socket_fileno_rejects_negative  sF    ##J0JK 	JMM&..&*<*<SI	J 	J 	Jr  c                 d   d}| j                  t              5 }t        j                  t        j                                d d d        | j                  j                  j                  t        j                  |f       | j                  t              5 }t        j                  t        j                  t        j                  t        j                                d d d        | j                  |j                  j                  t        j                  |f       y # 1 sw Y   xY w# 1 sw Y   LxY w)Ni6'  r  )r  r   r   r   make_bad_fdr  r  r+  r  rT   rB   )rZ   WSAENOTSOCKr  s      r   $test_socket_fileno_requires_valid_fdz7GeneralModuleTests.test_socket_fileno_requires_valid_fd  s    w' 	:2MM!6!6!89	:bll((5;;*DEw' 	02MM"" ,,.0	0
 	bll((5;;*DE	: 	:	0 	0s   )DAD&D#&D/c                 2   t        j                         5 }| j                  t              5  t	        j                  |j                                d d d        | j                  t              5 }t	        j                  t        j                  t        j                  |j                                d d d        | j                  j                  j                  t        j                         d d d        y # 1 sw Y   xY w# 1 sw Y   RxY w# 1 sw Y   y xY wr  )tempfileNamedTemporaryFiler  r   r   r  rT   rB   r  r  r+  r  )rZ   afiler  s      r   %test_socket_fileno_requires_socket_fdz8GeneralModuleTests.test_socket_fileno_requires_socket_fd  s    ((* 		Ae""7+ 5U\\^45 ""7+ +rNN&& <<>++
 R\\//@		A 		A5 5+ +			A 		As;   D%C5D-AD0<D5C>	:DD
	DDc                     dd l }dd l}|j                  |j                  ddd |      }|j	                  |t
        j                         y )Nr   rw  r   c                 H    | j                         xr | j                  d      S )NAF_isupperru  Cs    r   rz  z<GeneralModuleTests.test_addressfamily_enum.<locals>.<lambda>      !))+=!,,u*= r?   source)r  enum_old_convert_IntEnum_test_simple_enumr   rw  )rZ   r  r  CheckedAddressFamilys       r   test_addressfamily_enumz*GeneralModuleTests.test_addressfamily_enum  sE    #11ox=  2  
 	3V5I5IJr?   c                     dd l }dd l}|j                  |j                  ddd |      }|j	                  |t
        j                         y )Nr   rz  r   c                 H    | j                         xr | j                  d      S )NSOCK_r  r  s    r   rz  z9GeneralModuleTests.test_socketkind_enum.<locals>.<lambda>  s    !))+?!,,w*? r?   r  )r  r  r  r  r  r   rz  )rZ   r  r  CheckedSocketKinds       r   test_socketkind_enumz'GeneralModuleTests.test_socketkind_enum  sE     ..lH? / 
 	0&2C2CDr?   c                     dd l }dd l}|j                  |j                  ddd |      }|j	                  |t
        j                         y )Nr   MsgFlagr   c                 H    | j                         xr | j                  d      S )NMSG_r  r  s    r   rz  z6GeneralModuleTests.test_msgflag_enum.<locals>.<lambda>  s    !))+>!,,v*> r?   r  )r  r  r  IntFlagr  r   r  )rZ   r  r  CheckedMsgFlags       r   test_msgflag_enumz$GeneralModuleTests.test_msgflag_enum  sA    ++i> , 
 	~v~~>r?   c                     dd l }dd l}|j                  |j                  ddd |      }|j	                  |t
        j                         y )Nr   AddressInfor   c                 H    | j                         xr | j                  d      S )NAI_r  r  s    r   rz  z:GeneralModuleTests.test_addressinfo_enum.<locals>.<lambda>  r  r?   r  )r  r  r  r  r  r   r  )rZ   r  r  CheckedAddressInfos       r   test_addressinfo_enumz(GeneralModuleTests.test_addressinfo_enum  sE    !//mX= 0   	163E3EFr?   )bra   rb   rc   r   
skipUnlessr  r  r  r  r  r  r  r  r  r  r  r  r  skipIfr   is_wasir  rB  rt  r   r  r  r   r$  r'  r   r   r.  r9  r=  r?  rE  rG  rW  cpython_onlyrf  r~  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r   is_resource_enabledr  r  r  r!  r'  r+  r1  r3  r=  rA  rI  rM  rO  rR  rW  rY  r   r^  ra  rh  rj  rl  rq  r~  r  r  r  r  r  r  r  r  r  r  r  r  r  rd   r?   r   r  r  F  s>   X,.CD# E#
+ X,.CD
, E
,3"(6T  XD*<= > X__W__&EF
> G
> X13HIX335RS T J:v&?+" X79Z[X79Z[& \ \&$ X8?A*A* X)9:ACICI X)9:ACGCG Xm479B9B: > >.*FXG2 X58:I:I X58: : > X58:<1:<1| X58:M:M0 X58:#:#D(:>A7
=,( XD*<=	: >	: XD*<=X)ABLNSN >SN`.B`Q X444Y?13
I3
I>.-!"G	7 8,	7 P P X335STU UU X335STI UIA X335STX__S\\W,.HIX__S;<X8:\]
O ^ = J U
O X335STX8:O: UO X335STX__S\\W,.HIX__S;<X8:\]W ^ = J UW X335STX#,,'18:U: UU=9 ,2 XZ02LM8 N8"*A@KLI X__RWW_&ABJ CJF
AKE?Gr?   r  z!SocketCan required for this test.c                   $   e Zd Zd Z ej
                   eed      d      d        Zd Z	 ej
                   eed      d      d        Z
d Zd Z ej
                   eed	      d
      d        Z ej
                   eed      d      d        Zy)BasicCANTestc                 d    t         j                   t         j                   t         j                   y r<   )r   AF_CANr   r    rY   s    r   r  z!BasicCANTest.testCrucialConstants   s    r?   CAN_BCM&socket.CAN_BCM required for this test.c                    t         j                   t         j                   t         j                   t         j                   t         j
                   t         j                   t         j                   t         j                   t         j                   t         j                   t         j                   t         j                   t         j                   t         j                   t         j                   t         j                    t         j"                   t         j$                   t         j&                   t         j(                   t         j*                   t         j,                   t         j.                   t         j0                   y r<   )r   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_FRAMErY   s    r   testBCMConstantszBasicCANTest.testBCMConstants%  s     	 	      !!  !!!! 	!!""""######&&))))##r?   c                     t        j                   t         j                  t         j                  t         j                        5 }	 d d d        y # 1 sw Y   y xY wr<   r   r   r   r    r  s     r   testCreateSocketzBasicCANTest.testCreateSocketE  8    ]]6==&//6>>J 	a	 	 	   AAc                     t        j                   t         j                  t         j                  t         j                        5 }	 d d d        y # 1 sw Y   y xY wr<   )r   r   r(   r  r  s     r   testCreateBCMSocketz BasicCANTest.testCreateBCMSocketI  s=     ]]6==&*;*;V^^L 	PQ	 	 	r  c                    t        j                   t         j                  t         j                  t         j                        5 }d}|j	                  |       | j                  |j                         |       d d d        y # 1 sw Y   y xY w)N)r  )r   r   r   r    r   r  r   )rZ   r$   addresss      r   testBindAnyzBasicCANTest.testBindAnyO  s[    ]]6==&//6>>J 	7aGFF7OQ]]_g6	7 	7 	7s   4A??Bc                     t        j                   t         j                  t         j                  t         j                        5 }| j	                  t
        d|j                  d       d d d        y # 1 sw Y   y xY w)Ninterface name too long)   xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx)r   r   r   r    r  r   r   r  s     r   testTooLongInterfaceNamez%BasicCANTest.testTooLongInterfaceNameU  sQ    ]]6==&//6>>J 	:a""7,E#$66=:	: 	: 	:s   #A..A7CAN_RAW_LOOPBACKz/socket.CAN_RAW_LOOPBACK required for this test.c           	         t        j                   t         j                  t         j                  t         j                        5 }dD ]o  }|j	                  t         j
                  t         j                  |       | j                  ||j                  t         j
                  t         j                               q 	 d d d        y # 1 sw Y   y xY w)N)r   r   )	r   r   r   r    r  SOL_CAN_RAWr   r  r  )rZ   r$   loopbacks      r   testLoopbackzBasicCANTest.testLoopback[  s     ]]6==&//6>>J 	Oa" OV//1H1H%'  LL!3!3V5L5LMOO	O 	O 	Os   A5CC
CAN_RAW_FILTERz-socket.CAN_RAW_FILTER required for this test.c           	      4   d\  }}t        j                  d||      }t        j                  t        j                  t        j                  t        j
                        5 }|j                  t        j                  t        j                  |       | j                  ||j                  t        j                  t        j                  d             |j                  t        j                  t        j                  t        |             d d d        y # 1 sw Y   y xY w)N)   i   z=IIr   )r   packr   r   r   r    r  r  r  r  r  r  )rZ   can_idcan_mask
can_filterr$   s        r   
testFilterzBasicCANTest.testFiltere  s     ([[9
]]6==&//6>>J 	[aLL++V-B-BJOZLL!3!3V5J5JANPLL++V-B-BIjDYZ		[ 	[ 	[s   B'DDN)ra   rb   rc   r  r   r  r   r   r  r  r  r  r  r  r  rd   r?   r   r  r    s    
 X3AC$C$< X3ACC7: X);<JLOLO X)9:HJ[J[r?   r  c                       e Zd ZddZed        Zed        Zd Zd Zd Z	d Z
d Zd	 Z ej                   eed
      d      d        Z ej                   eed
      d      d        Zy)CANTestc                 2    t         j                  | |       y r   )r   rp   r   s     r   rp   zCANTest.__init__t  r  r?   c                     	 t        |      }|j                  dd      }t        j                  | j                  |||      S )Nr       )r  ljustr   r  r   )clsr	  datacan_dlcs       r   build_can_framezCANTest.build_can_framew  s9     d)zz!W%{{3,,fgtDDr?   c                 \    	 t        j                  | j                  |      \  }}}|||d | fS r<   )r   r   r   )r  framer	  r  r  s        r   dissect_can_framezCANTest.dissect_can_frame~  s5    " &c.?.? Ghw00r?   c                     | j                   j                  | j                        \  }}| j                  | j                  |       | j                  |d   | j
                         y r   )r$   r  r   r  cfr   rZ   r  r  s      r   testSendFramezCANTest.testSendFrame  sH    66??4<<0D"%a$..1r?   c                 |    | j                  dd      | _        | j                  j                  | j                         y )Nr   s   r  r  r   r  rY   s    r   _testSendFramezCANTest._testSendFrame  s+    &&t-DEdggr?   c                     | j                   j                  | j                        \  }}| j                  | j                  |       y r<   )r$   r  r   r  r  r  s      r   testSendMaxFramezCANTest.testSendMaxFrame  s0    66??4<<0D"%r?   c                 |    | j                  dd      | _        | j                  j                  | j                         y )Nr   s   r  rY   s    r   _testSendMaxFramezCANTest._testSendMaxFrame  s*    &&t[9dggr?   c                    | j                   j                  | j                        \  }}| j                  | j                  |       | j                   j                  | j                        \  }}| j                  | j
                  |       y r<   )r$   r  r   r  cf1cf2r  s      r   testSendMultiFrameszCANTest.testSendMultiFrames  s^    66??4<<0D2&66??4<<0D2&r?   c                     | j                  dd      | _        | j                  j                  | j                         | j                  dd      | _        | j                  j                  | j                         y )N   s   D3"   s   "3)r  r&  r   r  r'  rY   s    r   _testSendMultiFrameszCANTest._testSendMultiFrames  sS    ''.ABdhh''o>dhhr?   r  r  c                 &   | j                   j                  | j                        \  }}| j                  | j                  |       | j                  |      \  }}}| j                  | j                  |       | j                  | j                  |       y r<   )r   r  r   r  r  r  r	  r  )rZ   r  r  r	  r  r  s         r   _testBCMzCANTest._testBCM  ss     88$$T\\2D"% $ 6 6r :f-D)r?   c                    t        j                   t         j                  t         j                  t         j                        }| j	                  |j
                         |j                  | j                  f       d| _        t        g d      | _
        | j                  | j                  | j                        | _        t         j                  }d}d}dx}x}x}}d}	d}
t        j                  | j                   ||||||||	|

      }|| j                  z   }|j#                  |      }| j%                  |t'        |             y )N#  )         r   i"  r   )r   r   r(   r  ry   r!   r  r   r	  bytesr  r  r  r  r   r  r   r  r  r  )rZ   bcmopcoder  r  ival1_seconds
ival1_usecival2_seconds
ival2_usec
bcm_can_idnframesheaderheader_plus_frame
bytes_sents                 r   testBCMzCANTest.testBCM  s    mmFMM6+<+<fnnM		"T^^%&,-	&&t{{DII>''BCCC
C]Z
T11!!
 #TWW,XX/0
S):%;<r?   Nr   )ra   rb   rc   rp   classmethodr  r  r  r   r"  r$  r(  r,  r   r  r   r   r.  r@  rd   r?   r   r  r  q  s    D E E 1 1
2
&'  X3AC*C* X3AC=C=r?   r  z!CAN ISOTP required for this test.c                   v     e Zd Z fdZd Zd Z ej                   ee	d      d      d        Z
d Zd Z xZS )		ISOTPTestc                 2    t        |   |i | d| _        y Nr   ro   rp   r   rt   s      r   rp   zISOTPTest.__init__      $)&) r?   c                     t         j                   t         j                   t         j                   t         j                   y r<   )r   r  r   r)   r(   rY   s    r   r  zISOTPTest.testCrucialConstants  s"    r?   c                     t        j                   t         j                  t         j                  t         j                        5 }	 d d d        y # 1 sw Y   y xY wr<   r  r  s     r   r  zISOTPTest.testCreateSocket  r  r  r)   z(socket.CAN_ISOTP required for this test.c                     t        j                   t         j                  t         j                  t         j                        5 }	 d d d        y # 1 sw Y   y xY wr<   )r   r   r(   r)   r  s     r   testCreateISOTPSocketzISOTPTest.testCreateISOTPSocket  ?     ]]6==&*;*;V=M=MN 	RS	 	 	r  c                 (   t        j                   t         j                  t         j                  t         j                        5 }| j	                  t
        d      5  |j                  d       d d d        d d d        y # 1 sw Y   xY w# 1 sw Y   y xY w)Nr  )r  r   r   )r   r   r(   r)   r  r   r   r  s     r   r  z"ISOTPTest.testTooLongInterfaceName  sr    ]]6==&*;*;V=M=MN 	+RS''1JK +)*+	+ 	++ +	+ 	+s$   BA<+B<B	BBc                    	 t        j                   t         j                  t         j                  t         j                        5 }| j                  ddf}|j                  |       | j                  |j                         |       d d d        y # 1 sw Y   y xY w# t        $ rG}|j                  t        j                  k(  r| j                  d| j                  z         n Y d }~y d }~ww xY w)Nr0  iV  r   )r   r   r(   r)   r   r   r  r   r   r+  ENODEVr   rZ   r$   r  r   s       r   testBindzISOTPTest.testBind  s    
	v}}f.?.?AQAQR 8VW~~ue3t  $78 8 8  	ww%,,&E>>* + +	s7   AB ABB BB B 	C)"=C$$C))ra   rb   rc   rp   r  r  r   r  r   r   rK  r  rQ  r~   r   s   @r   rC  rC    sK    ! X5CEE+r?   rC  z!CAN J1939 required for this test.c                        e Zd Z fdZ ej
                   eed      d      d        Z ej
                   eed      d      d        Z	d Z
 xZS )	J1939Testc                 2    t        |   |i | d| _        y rE  rF  rt   s      r   rp   zJ1939Test.__init__  rG  r?   r-   z(socket.CAN_J1939 required for this test.c                    t         j                   t         j                   t         j                   t         j                   t         j
                   t         j                   t         j                   t         j                   t         j                   t         j                   t         j                   t         j                   t         j                   t         j                   t         j                   t         j                    t         j"                   t         j$                   t         j&                   t         j(                   t         j*                   t         j,                   t         j.                   t         j0                   y r<   )r   r-   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_MAXrY   s    r   testJ1939ConstantszJ1939Test.testJ1939Constants  s     	%%  ((**!! 	!!  """"!!$$!!%%r?   c                     t        j                   t         j                  t         j                  t         j                        5 }	 d d d        y # 1 sw Y   y xY wr<   )r   r   r(   r-   r  s     r   testCreateJ1939SocketzJ1939Test.testCreateJ1939Socket!	  rL  r  c                 .   	 t        j                   t         j                  t         j                  t         j                        5 }| j                  t         j
                  t         j                  t         j                  f}|j                  |       | j                  |j                         |       d d d        y # 1 sw Y   y xY w# t        $ rG}|j                  t        j                  k(  r| j                  d| j                  z         n Y d }~y d }~ww xY wr   )r   r   r(   r-   r   rY  r_  rX  r   r  r   r   r+  rO  r   rP  s       r   rQ  zJ1939Test.testBind'	  s    
	v}}f.?.?AQAQR 8VW~~v';';V=P=PRXRfRfft  $78 8 8  	ww%,,&E>>* + +	s7   AC A,B8/C 8C=C C 	D=DD)ra   rb   rc   rp   r   r  r   r   rm  ro  rQ  r~   r   s   @r   rS  rS    sl    ! X5CE E B X5CEEr?   rS  z#RDS sockets required for this test.c                       e Zd Zd Zd Zd Zy)BasicRDSTestc                 D    t         j                   t         j                   y r<   )r   AF_RDSr1   rY   s    r   r  z!BasicRDSTest.testCrucialConstants8	  s    r?   c                     t        j                   t         j                  t         j                  d      5 }	 d d d        y # 1 sw Y   y xY wr   )r   r1   r2   r  s     r   r  zBasicRDSTest.testCreateSocket<	  s6    ]]6==&*?*?C 	q	 	 	s	   ?Ac                 T   d}t        j                   t         j                  t         j                  d      5 }|j                  t         j                  t         j
                  |       |j                  t         j                  t         j                  |       d d d        y # 1 sw Y   y xY w)Ni @  r   )r   r1   r2   r  r  	SO_RCVBUF	SO_SNDBUF)rZ   r   r$   s      r   testSocketBufferSizez!BasicRDSTest.testSocketBufferSize@	  st    ]]6==&*?*?C 	GqLL**F,<,<gFLL**F,<,<gF	G 	G 	Gs   ABB'N)ra   rb   rc   r  r  ry  rd   r?   r   rr  rr  5	  s    Gr?   rr  c                        e Zd ZddZ fdZd Zd Zd Zd Z e	e
j                  d      d        Z e	e
j                  d	      d
        Zd Zd Zd Zd Z xZS )RDSTestc                 2    t         j                  | |       y r   )r   rp   r   s     r   rp   zRDSTest.__init__J	  r  r?   c                 T    t         |           t        j                         | _        y r<   )ro   r[   rq   r   evtr6  s    r   r[   zRDSTest.setUpM	  s    ??$r?   c                     | j                   j                  | j                        \  }}| j                  | j                  |       | j                  | j
                  |       y r<   )rU   r  r   r  r  r   rZ   r  r  s      r   testSendAndRecvzRDSTest.testSendAndRecvQ	  sF    YY''5
dD)-r?   c                     d| _         | j                  j                  | j                   dt        | j                  f       y Nr  r   r  r   r  r   rW   rY   s    r   _testSendAndRecvzRDSTest._testSendAndRecvV	  *    			1tTYY&78r?   c                 2   | j                   j                  | j                  t        j                        \  }}| j                  | j                  |       | j                   j                  | j                        \  }}| j                  | j                  |       y r<   )rU   r  r   r   MSG_PEEKr  r  r  s      r   testPeekzRDSTest.testPeekZ	  sh    YY''fooF
dD)YY''5
dD)r?   c                     d| _         | j                  j                  | j                   dt        | j                  f       y r  r  rY   s    r   	_testPeekzRDSTest._testPeek`	  r  r?   recvmsgc                     | j                   j                  | j                        \  }}}}| j                  | j                  |       y r<   )rU   r  r   r  r  )rZ   r  ancdata	msg_flagsr  s        r   testSendAndRecvMsgzRDSTest.testSendAndRecvMsgd	  s7    )-):):4<<)H&gy$D)r?   sendmsgc                     d| _         | j                  j                  | j                   gddt        | j                  f       y )Ns<   hello hello hello hello hello hello hello hello hello hello rd   r   )r  r   r  r   rW   rY   s    r   _testSendAndRecvMsgzRDSTest._testSendAndRecvMsgi	  s0    "	$))b!dDII->?r?   c                    | j                   j                  | j                        \  }}| j                  | j                  |       | j                   j                  | j                        \  }}| j                  | j
                  |       y r<   )rU   r  r   r  data1data2r  s      r   testSendAndRecvMultizRDSTest.testSendAndRecvMultin	  sb    YY''5
dT*YY''5
dT*r?   c                     d| _         | j                  j                  | j                   dt        | j                  f       d| _        | j                  j                  | j
                  dt        | j                  f       y )Ns   baconr   s   egg)r  r   r  r   rW   r  rY   s    r   _testSendAndRecvMultizRDSTest._testSendAndRecvMultiu	  sR    


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

Adii'89r?   c                    t        j                   | j                  gg g d      \  }}}| j                  | j                  |       | j                  j                  | j                        \  }}| j                  | j                  |       y )Ng      @)selectrU   r  r  r   r  r  )rZ   r   r6  r   r  r  s         r   
testSelectzRDSTest.testSelect|	  sd    --RS91adii#YY''5
dD)r?   c                     d| _         | j                  j                  | j                   dt        | j                  f       y )Ns   selectr   r  rY   s    r   _testSelectzRDSTest._testSelect	  s*    			1tTYY&78r?   r   )ra   rb   rc   rp   r[   r  r  r  r  r  r   r  r  r  r  r  r  r~   r   s   @r   r{  r{  G	  sv    D%.
9*9 &--+* ,* &--+@ ,@+:*9r?   r{  z'QIPCRTR sockets required for this test.c                   0    e Zd Zd Zd Zd Zd Zd Zd Zy)BasicQIPCRTRTestc                 $    t         j                   y r<   )r   r9   rY   s    r   r  z%BasicQIPCRTRTest.testCrucialConstants	  s    r?   c                     t        j                   t         j                  t         j                        5 }	 d d d        y # 1 sw Y   y xY wr<   )r   r9   r(   r  s     r   r  z!BasicQIPCRTRTest.testCreateSocket	  s6    ]]6,,f.?.?@ 	A	 	 		   >Ac                     t        j                   t         j                  t         j                        5 }| j                  |j	                         d   d       d d d        y # 1 sw Y   y xY wNr   r   )r   r9   r(   r  r   r  s     r   testUnboundzBasicQIPCRTRTest.testUnbound	  sN    ]]6,,f.?.?@ 	4AQ]]_Q/3	4 	4 	4s   $A  A)c                 (   t        j                   t         j                  t         j                        5 }t        j                  ||j                         d          | j                  |j                         d   d       d d d        y # 1 sw Y   y xY w)Nr   rZ  r   )r   r9   r(   r   rV   r   assertNotEqualr  s     r   testBindSockzBasicQIPCRTRTest.testBindSock	  si    ]]6,,f.?.?@ 	7A##AAMMOA,>? 2A6	7 	7 	7s   ABBc                     t        j                   t         j                  t         j                        5 }| j                  t        t
        j                  |d       d d d        y # 1 sw Y   y xY w)Nr[  rZ  )r   r9   r(   r  r   r   rV   r  s     r   testInvalidBindSockz$BasicQIPCRTRTest.testInvalidBindSock	  sT    ]]6,,f.?.?@ 	LAg}'>'>K	L 	L 	Ls   (A$$A-c                     t        j                   t         j                  t         j                        5 }|j                  d       | j	                  |j                         d   d       d d d        y # 1 sw Y   y xY w)N){   r  r   r   )r   r9   r(   r  r  r   r  s     r   testAutoBindSockz!BasicQIPCRTRTest.testAutoBindSock	  sZ    ]]6,,f.?.?@ 	7AIIj! 2A6	7 	7 	7s   5A11A:N)	ra   rb   rc   r  r  r  r  r  r  rd   r?   r   r  r  	  s!    47
L7r?   r  c                   $    e Zd Zd Zd Zd Zd Zy)BasicVSOCKTestc                 $    t         j                   y r<   )r   r   rY   s    r   r  z#BasicVSOCKTest.testCrucialConstants	  s	    r?   c                    t         j                   t         j                   t         j                   t         j                   t         j
                   t         j                   t         j                   t         j                   y r<   )	r   SO_VM_SOCKETS_BUFFER_SIZESO_VM_SOCKETS_BUFFER_MIN_SIZESO_VM_SOCKETS_BUFFER_MAX_SIZEr   VMADDR_PORT_ANYVMADDR_CID_HOSTVM_SOCKETS_INVALID_VERSIONr   rY   s    r   testVSOCKConstantsz!BasicVSOCKTest.testVSOCKConstants	  sJ    ((,,,,))--r?   c                     t        j                   t         j                  t         j                        5 }	 d d d        y # 1 sw Y   y xY wr<   )r   r   rB   r  s     r   r  zBasicVSOCKTest.testCreateSocket	  s4    ]]6??F,>,>? 	1	 	 	r  c                 X   t        j                   t         j                  t         j                        5 }|j                  t         j                  t         j                        }|j                  t         j                  t         j
                        }|j                  t         j                  t         j                        }|j                  t         j                  t         j                  |dz         |j                  t         j                  t         j
                  |dz         |j                  t         j                  t         j                  |dz         | j                  |dz  |j                  t         j                  t         j                               | j                  |dz  |j                  t         j                  t         j
                               | j                  |dz  |j                  t         j                  t         j                               d d d        y # 1 sw Y   y xY wNr   )	r   r   rB   r  r  r  r  r  r  )rZ   r$   orig_maxrD  orig_mins        r   ry  z#BasicVSOCKTest.testSocketBufferSize	  s   ]]6??F,>,>? 	D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+	D 	D 	Ds   G$H  H)N)ra   rb   rc   r  r  r  ry  rd   r?   r   r  r  	  s    
.Dr?   r  z)Bluetooth sockets required for this test.c                   6   e Zd Zd Zd Z ej                  ej                  dk(  d      d        Z	 ej                  ej                  dk(  d      d        Z
 ej                  ej                  dk(  xs ej                  j                  d      d	      d
        Zy)BasicBluetoothTestc                 l   t         j                   t         j                   t         j                   t         j                   t
        j                  dk7  rat         j                   t         j                   t         j                   t
        j                  j                  d      st         j                   y y y )Nr  rh  )r   
BDADDR_ANYBDADDR_LOCALrA   rC   rB  rt  BTPROTO_HCISOL_HCIBTPROTO_L2CAPru  BTPROTO_SCOrY   s    r   testBluetoothConstantsz)BasicBluetoothTest.testBluetoothConstants	  sp    <<7"NN  <<**95"" 6 #r?   c                     t        j                   t         j                  t         j                  t         j                        5 }	 d d d        y # 1 sw Y   y xY wr<   )r   rA   rB   rC   r  s     r   testCreateRfcommSocketz)BasicBluetoothTest.testCreateRfcommSocket	  s?    ]]6..0B0BFDYDYZ 	^_	 	 	r  r  z&windows does not support L2CAP socketsc                     t        j                   t         j                  t         j                  t         j                        5 }	 d d d        y # 1 sw Y   y xY wr<   )r   rA   r2   r  r  s     r   testCreateL2capSocketz(BasicBluetoothTest.testCreateL2capSocket	  s?    ]]6..0E0EvG[G[\ 	`a	 	 	r  z$windows does not support HCI socketsc                     t        j                   t         j                  t         j                  t         j                        5 }	 d d d        y # 1 sw Y   y xY wr<   )r   rA   r   r  r  s     r   testCreateHciSocketz&BasicBluetoothTest.testCreateHciSocket	  s=    ]]6..ASAST 	XY	 	 	r  rh  z.windows and freebsd do not support SCO socketsc                     t        j                   t         j                  t         j                  t         j                        5 }	 d d d        y # 1 sw Y   y xY wr<   )r   rA   r2   r  r  s     r   testCreateScoSocketz&BasicBluetoothTest.testCreateScoSocket	  sA     ]]6..0E0EvGYGYZ 	^_	 	 	r  N)ra   rb   rc   r  r  r   r  rB  rt  r  r  ru  r  rd   r?   r   r  r  	  s    # X__S\\W,.VW X X__S\\W,.TU V X__S\\W,R0G0G	0REGGr?   r  z'Hyper-V sockets required for this test.c                   6    e Zd Zd Zd Zd Zd Zd Zd Zd Z	y)	BasicHyperVTestc                 D   t         j                   t         j                   t         j                   t         j                   t         j
                   t         j                   t         j                   t         j                   t         j                   t         j                   y r<   )r   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_PARENTrY   s    r   testHyperVConstantsz#BasicHyperVTest.testHyperVConstants	  s\    ''++))--  r?   c                     d}| j                  t        |      5  t        j                  t        j                  t        j                         d d d        y # 1 sw Y   y xY w)Nz\[WinError 10041\])r  r   r   rF   rB   )rZ   r  s     r   -testCreateHyperVSocketWithUnknownProtoFailurez=BasicHyperVTest.testCreateHyperVSocketWithUnknownProtoFailure
  sJ    (##GX6 	@MM&**F,>,>?	@ 	@ 	@s   3AAc                 n   d}t        j                   t         j                  t         j                  t         j                        5 }| j	                  t
        t        j                  |            5  |j                  t         j                         d d d        d d d        y # 1 sw Y   xY w# 1 sw Y   y xY w)Nz3connect(): AF_HYPERV address must be tuple, not str
r   rF   rB   rG   r  r   reescaper  r  rZ   r  r$   s      r   )testCreateHyperVSocketAddrNotTupleFailurez9BasicHyperVTest.testCreateHyperVSocketAddrNotTupleFailure
  s    H]]6++V-?-?AWAWX 	/\]''	299X3FG /		&--./	/ 	// /	/ 	/s$   *B+. BB+B(	$B++B4c                 p   d}t        j                   t         j                  t         j                  t         j                        5 }| j	                  t
        t        j                  |            5  |j                  t         j                  f       d d d        d d d        y # 1 sw Y   xY w# 1 sw Y   y xY w)N9AF_HYPERV address must be a str tuple (vm_id, service_id)r  r  s      r   0testCreateHyperVSocketAddrNotTupleOf2StrsFailurez@BasicHyperVTest.testCreateHyperVSocketAddrNotTupleOf2StrsFailure
  s    N]]6++V-?-?AWAWX 	2\]''	299X3FG 2		6..012	2 	22 2	2 	2s$   *B,.!B B, B)	%B,,B5c                 R   d}t        j                   t         j                  t         j                  t         j                        5 }| j	                  t
        t        j                  |            5  |j                  d       d d d        d d d        y # 1 sw Y   xY w# 1 sw Y   y xY w)Nr  )r   r   )	r   rF   rB   rG   r  r   r  r  r  r  s      r   /testCreateHyperVSocketAddrNotTupleOfStrsFailurez?BasicHyperVTest.testCreateHyperVSocketAddrNotTupleOfStrsFailure
  s    N]]6++V-?-?AWAWX 	"\]''	299X3FG "		&!"	" 	"" "	" 	"s$   *B.B BB	BB&c                 r   d}t        j                   t         j                  t         j                  t         j                        5 }| j	                  t
        t        j                  |            5  |j                  dt         j                  f       d d d        d d d        y # 1 sw Y   xY w# 1 sw Y   y xY w)Nz=connect(): AF_HYPERV address vm_id is not a valid UUID string00
r   rF   rB   rG   r  r  r  r  r  r  r  s      r   1testCreateHyperVSocketAddrVmIdNotValidUUIDFailurezABasicHyperVTest.testCreateHyperVSocketAddrVmIdNotValidUUIDFailure"
  s    R]]6++V-?-?AWAWX 	7\]''
BIIh4GH 7		4!4!4567	7 	77 7	7 	7$   *B-."B!B-!B*	&B--B6c                 r   d}t        j                   t         j                  t         j                  t         j                        5 }| j	                  t
        t        j                  |            5  |j                  t         j                  df       d d d        d d d        y # 1 sw Y   xY w# 1 sw Y   y xY w)NzBconnect(): AF_HYPERV address service_id is not a valid UUID stringr  r  r  s      r   6testCreateHyperVSocketAddrServiceIdNotValidUUIDFailurezFBasicHyperVTest.testCreateHyperVSocketAddrServiceIdNotValidUUIDFailure(
  s    W]]6++V-?-?AWAWX 	7\]''
BIIh4GH 7		6..567	7 	77 7	7 	7r  N)
ra   rb   rc   r  r  r  r  r  r  r  rd   r?   r   r  r  	  s&    
@
/2"77r?   r  c                       e Zd ZddZd Zd Zd Zd Zd Zd Z	d Z
d	 Zd
 Zd Zd Zd Zd Zd Zd Zd Z ej*                  e      Zej*                  d        Zd Zd Zy)BasicTCPTestc                 2    t         j                  | |       y r   r  rp   r   s     r   rp   zBasicTCPTest.__init__1
      $$Tj$Ar?   c                 f    | j                   j                  d      }| j                  |t               y r  )r  r  r  r  r	  s     r   testRecvzBasicTCPTest.testRecv4
  s&    mm  &c"r?   c                 B    | j                   j                  t               y r<   r  r  r  rY   s    r   	_testRecvzBasicTCPTest._testRecv9
      C r?   c                     | j                   j                  t        t              dz
        }| j                   j                  d      }||z   }| j	                  |t               y N   r  )r  r  r  r  r  )rZ   seg1seg2r
  s       r   testOverFlowRecvzBasicTCPTest.testOverFlowRecv<
  sK    }}!!#c(Q,/}}!!$'Tkc"r?   c                 B    | j                   j                  t               y r<   r  rY   s    r   _testOverFlowRecvzBasicTCPTest._testOverFlowRecvC
  r  r?   c                 l    | j                   j                  d      \  }}| j                  |t               y r  )r  r  r  r  rZ   r
  r  s      r   testRecvFromzBasicTCPTest.testRecvFromF
  s*    MM**40	Tc"r?   c                 B    | j                   j                  t               y r<   r  rY   s    r   _testRecvFromzBasicTCPTest._testRecvFromK
  r  r?   c                     | j                   j                  t        t              dz
        \  }}| j                   j                  d      \  }}||z   }| j	                  |t               y r  )r  r  r  r  r  )rZ   r  r  r  r
  s        r   testOverFlowRecvFromz!BasicTCPTest.testOverFlowRecvFromN
  sS    ]]++CHQJ7
d]]++D1
dTkc"r?   c                 B    | j                   j                  t               y r<   r  rY   s    r   _testOverFlowRecvFromz"BasicTCPTest._testOverFlowRecvFromU
  r  r?   c                 v    d}	 | j                   j                  d      }|sn||z  }$| j                  |d       y )Nr?   r     ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff)r  r  r  )rZ   r
  reads      r   testSendAllzBasicTCPTest.testSendAllX
  sD    ==%%d+D4KC	 
 	k*r?   c                 >    d}| j                   j                  |       y )Nr  )r  r  )rZ   	big_chunks     r   _testSendAllzBasicTCPTest._testSendAllb
  s    	y)r?   c                 b   | j                   j                         }t        j                  |t        j                  t        j
                        }| j                  |j                         | j                  |t        j                         |j                  d      }| j                  |t               y r  )r  r  r   fromfdrT   rB   ry   r!   r  r  r  r  )rZ   r{  rM  r
  s       r   
testFromFdzBasicTCPTest.testFromFdf
  sq    ]]!!#}}R1C1CD

#dFMM2iioc"r?   c                 B    | j                   j                  t               y r<   r  rY   s    r   _testFromFdzBasicTCPTest._testFromFdo
  r  r?   c                     | j                   j                         }| j                  |j                         |j	                  d      }| j                  |t               y r  )r  dupry   r!   r  r  r  )rZ   rM  r
  s      r   testDupzBasicTCPTest.testDupr
  sA    }}  "

#iioc"r?   c                 B    | j                   j                  t               y r<   r  rY   s    r   _testDupzBasicTCPTest._testDupy
  r  r?   c                     | j                   j                  d      }| j                  |t               | j                  j                          y r  )r  r  r  r  r   r   r	  s     r   testShutdownzBasicTCPTest.testShutdown|
  s6    mm  &c" 			r?   c                 x    | j                   j                  t               | j                   j                  d       y r  )r  r  r  r  rY   s    r   _testShutdownzBasicTCPTest._testShutdown
  s&    C "r?   c                 f   dd l }| j                  j                  t               | j	                  t
        | j                  j                  |j                  dz          | j	                  t
        | j                  j                  d|j                  dz   z          | j                  j                  d       y )Nr   r   r   )	r^  r  r  r  r  rQ  r  r`  UINT_MAXrZ   r^  s     r   _testShutdown_overflowz#BasicTCPTest._testShutdown_overflow
  s    C -)@)@#++a/	1-)@)@y11A56	8"r?   c                 P   | j                   j                         }| j                   j                         }| j                  ||       | j	                  | j                   j
                         | j                  t        | j                   j                  d       | j                   j                          t        j                  t        j                  t        j                  |      }| j                  |j                         |j                  d      }| j                  |t               y )Nr  r  )r  r  ru  r  r  _closedr  r   r  r!   r   rT   rB   ry   r  )rZ   r  r   rM  r
  s        r   
testDetachzBasicTCPTest.testDetach
  s    %%'MM  "F#--.'4==#5#5t< }}V^^V-?-?J

#iioc"r?   c                 B    | j                   j                  t               y r<   r  rY   s    r   _testDetachzBasicTCPTest._testDetach
  r  r?   Nr   )ra   rb   rc   rp   r  r  r  r  r  r
  r  r  r  r  r  r  r  r  r!  r#  r   r  testShutdown_overflowr'  r*  r,  rd   r?   r   r  r  /
  s    B#
!#!#
!#!+*#!#!# 1G00># ## !r?   r  c                   8    e Zd Zd	dZd Zd Zd Zd Zd Zd Z	y)
BasicUDPTestc                 2    t         j                  | |       y r   )r   rp   r   s     r   rp   zBasicUDPTest.__init__
  r  r?   c                     | j                   j                  t        t                    }| j	                  |t               y r<   rU   r  r  r  r  r	  s     r   testSendtoAndRecvzBasicUDPTest.testSendtoAndRecv
  (    iinnSX&c"r?   c                 f    | j                   j                  t        dt        | j                  f       y r   r   r  r  r   rW   rY   s    r   _testSendtoAndRecvzBasicUDPTest._testSendtoAndRecv
      Qtyy 12r?   c                     | j                   j                  t        t                    \  }}| j	                  |t               y r<   rU   r  r  r  r  r  s      r   r  zBasicUDPTest.testRecvFrom
  .    II&&s3x0	Tc"r?   c                 f    | j                   j                  t        dt        | j                  f       y r   r6  rY   s    r   r
  zBasicUDPTest._testRecvFrom
  r8  r?   c                 Z    | j                  t        | j                  j                  d       y NrZ  r  r  rU   r  rY   s    r   testRecvFromNegativez!BasicUDPTest.testRecvFromNegative
      *dii&8&8"=r?   c                 f    | j                   j                  t        dt        | j                  f       y r   r6  rY   s    r   _testRecvFromNegativez"BasicUDPTest._testRecvFromNegative
  r8  r?   Nr   
ra   rb   rc   rp   r3  r7  r  r
  r@  rC  rd   r?   r   r/  r/  
  s&    D#
3#
3>3r?   r/  c                   8    e Zd Zd	dZd Zd Zd Zd Zd Zd Z	y)
BasicUDPLITETestc                 2    t         j                  | |       y r   )r   rp   r   s     r   rp   zBasicUDPLITETest.__init__
  s    !**4J*Gr?   c                     | j                   j                  t        t                    }| j	                  |t               y r<   r2  r	  s     r   r3  z"BasicUDPLITETest.testSendtoAndRecv
  r4  r?   c                 f    | j                   j                  t        dt        | j                  f       y r   r6  rY   s    r   r7  z#BasicUDPLITETest._testSendtoAndRecv
  r8  r?   c                     | j                   j                  t        t                    \  }}| j	                  |t               y r<   r:  r  s      r   r  zBasicUDPLITETest.testRecvFrom
  r;  r?   c                 f    | j                   j                  t        dt        | j                  f       y r   r6  rY   s    r   r
  zBasicUDPLITETest._testRecvFrom
  r8  r?   c                 Z    | j                  t        | j                  j                  d       y r>  r?  rY   s    r   r@  z%BasicUDPLITETest.testRecvFromNegative
  rA  r?   c                 f    | j                   j                  t        dt        | j                  f       y r   r6  rY   s    r   rC  z&BasicUDPLITETest._testRecvFromNegative
  r8  r?   Nr   rD  rd   r?   r   rF  rF  
  s&    H#
3#
3>3r?   rF  c                        e Zd Zej                  Z fdZd ZdZd Z	d Z
d Zd ZdZd	D ]  Ze eeed      z  Z dZdZdZdd
Z xZS )SendrecvmsgBasec                 T    t        j                         | _        t        |           y r<   )rq   r   
misc_eventro   r[   r6  s    r   r[   zSendrecvmsgBase.setUp  s    #//+r?   c                 8    | j                   j                  |      S r<   )cli_sockr  r	  s     r   sendToServerzSendrecvmsgBase.sendToServer  s    }}!!#&&r?   rd   c                 f     | j                   j                  || j                  t        |      d  z    S r<   )rS  r  sendmsg_to_server_defaultsr  rZ   ru   s     r   sendmsgToServerzSendrecvmsgBase.sendmsgToServer  s8    
 %t}}$$T44SYZ@@C 	Cr?   c                 N     |j                   |g| }| j                  |       |S r<   )r  registerRecvmsgResult)rZ   rM  r   ru   results        r   	doRecvmsgzSendrecvmsgBase.doRecvmsg  s,     g--""6*r?   c                      y r<   rd   rZ   r[  s     r   rZ  z%SendrecvmsgBase.registerRecvmsgResult%  s     	r?   c                 (    | j                  ||       y r<   r  rZ   addr1addr2s      r   checkRecvmsgAddressz#SendrecvmsgBase.checkRecvmsgAddress+  s     	&r?   r   )
MSG_CTRUNCMSG_OOBc                 n   | j                   }| j                  }|r|| j                  z  }|| j                  z  }n ||| j                  z  }|| j                  z  }|| z  }|| z  }||z  }||z  }||z  | z  }|rt	        dj                  |            ||z  | z  }	| j                  ||	z  ||	z         y )Nz6contradictory set, unset requirements for flags {0:#x})msg_flags_common_setmsg_flags_common_unsetmsg_flags_eor_indicatormsg_flags_non_eor_indicator	Exceptionr  r  )
rZ   r  eorcheckset
checkunsetignore
defaultsetdefaultunsetinbothrU  s
             r   
checkFlagszSendrecvmsgBase.checkFlags@  s    8 ..
22$666JD<<<L_$:::JD888L 	zk!
	! 	Jl"
J&&0 %%+VF^5 5 :%&0x$7r?   )Nr   r   r   )ra   rb   rc   r   LOOPBACK_TIMEOUTfail_timeoutr[   rT  rV  rX  r\  rZ  rd  ri  r  r   r   rh  rj  rk  rt  r~   r   s   @r   rO  rO     s    
 ++L' "$C' ) ;'&$"::;    #$48r?   rO  c                       e Zd Zd Zy)RecvmsgIntoMixinc                     t        |      } |j                  |gg| }| j                  |       | j                  |d   d       | j	                  |d   |       t        |d |d          f|dd  z   S r  )r  recvmsg_intorZ  assertGreaterEqualassertLessEqualr4  )rZ   rM  r   ru   bufr[  s         r   r\  zRecvmsgIntoMixin.doRecvmsgz  s~     """C5040""6*q	1-VAY0c*6!9o&(6!":55r?   N)ra   rb   rc   r\  rd   r?   r   rx  rx  w  s    6r?   rx  c                   (     e Zd Ze fd       Z xZS )SendrecvmsgDgramFlagsBasec                 :    t         |   t        j                  z  S r<   )ro   rk  r   	MSG_TRUNCr6  s    r   rk  z5SendrecvmsgDgramFlagsBase.msg_flags_non_eor_indicator  s    w2V5E5EEEr?   )ra   rb   rc   propertyrk  r~   r   s   @r   r  r    s     F Fr?   r  c                   (     e Zd Ze fd       Z xZS )SendrecvmsgSCTPFlagsBasec                 :    t         |   t        j                  z  S r<   )ro   rj  r   MSG_EORr6  s    r   rj  z0SendrecvmsgSCTPFlagsBase.msg_flags_eor_indicator  s    w.??r?   )ra   rb   rc   r  rj  r~   r   s   @r   r  r    s     @ @r?   r  c                   B    e Zd Zed        Zed        Zed        Zd Zy)SendrecvmsgConnectionlessBasec                     | j                   S r<   )rU   rY   s    r   	serv_sockz'SendrecvmsgConnectionlessBase.serv_sock  s    yyr?   c                     | j                   S r<   )r   rY   s    r   rS  z&SendrecvmsgConnectionlessBase.cli_sock  s    xxr?   c                 "    g g d| j                   fS r   )r2  rY   s    r   rV  z8SendrecvmsgConnectionlessBase.sendmsg_to_server_defaults  s    B4>>**r?   c                 N    | j                   j                  || j                        S r<   )rS  r  r2  r	  s     r   rT  z*SendrecvmsgConnectionlessBase.sendToServer  s    }}##C88r?   N)ra   rb   rc   r  r  rS  rV  rT  rd   r?   r   r  r    sC    
     + +9r?   r  c                   2    e Zd Zed        Zed        Zd Zy)SendrecvmsgConnectedBasec                     | j                   S r<   )r  rY   s    r   r  z"SendrecvmsgConnectedBase.serv_sock  s    }}r?   c                     | j                   S r<   )r  rY   s    r   rS  z!SendrecvmsgConnectedBase.cli_sock  s    ~~r?   c                      y r<   rd   ra  s      r   rd  z,SendrecvmsgConnectedBase.checkRecvmsgAddress       	r?   N)ra   rb   rc   r  r  rS  rd  rd   r?   r   r  r    s/        r?   r  c                        e Zd Z fdZ xZS )SendrecvmsgServerTimeoutBasec                 l    t         |           | j                  j                  | j                         y r<   )ro   r[   r  r  rv  r6  s    r   r[   z"SendrecvmsgServerTimeoutBase.setUp  s$    !!$"3"34r?   r7  r   s   @r   r  r    s    5 5r?   r  c                       e Zd Zd Zd Zd Zd Zd Zd Zd Z	d Z
d	 Zd
 Zd Zd Zd Zd Z eed      d        Zej(                  d        Zd Zd Zd Zd Zy)SendmsgTestsc                 |    | j                  | j                  j                  t        t                    t               y r<   r  r  r  r  r  rY   s    r   testSendmsgzSendmsgTests.testSendmsg  %    ,,SX6<r?   c                 j    | j                  | j                  t        g      t        t                     y r<   r  rX  r  r  rY   s    r   _testSendmsgzSendmsgTests._testSendmsg  s#    --se4c#h?r?   c                 |    | j                  | j                  j                  t        t                    t               y r<   r  rY   s    r   testSendmsgDataGeneratorz%SendmsgTests.testSendmsgDataGenerator  r  r?   c                 x    | j                  | j                  d t        fD              t        t                     y )Nc              3       K   | ]  }|  y wr<   rd   r  s     r   r  z9SendmsgTests._testSendmsgDataGenerator.<locals>.<genexpr>  s     .@Qq.@r  r  rY   s    r   _testSendmsgDataGeneratorz&SendmsgTests._testSendmsgDataGenerator  s,    --.@3%.@AS	#r?   c                 |    | j                  | j                  j                  t        t                    t               y r<   r  rY   s    r   testSendmsgAncillaryGeneratorz*SendmsgTests.testSendmsgAncillaryGenerator  r  r?   c                 z    | j                  | j                  t        gd dD              t        t                     y )Nc              3       K   | ]  }|  y wr<   rd   r  s     r   r  z>SendmsgTests._testSendmsgAncillaryGenerator.<locals>.<genexpr>  s     _Aa_r  rd   r  rY   s    r   _testSendmsgAncillaryGeneratorz+SendmsgTests._testSendmsgAncillaryGenerator  s,    --se__ES	#r?   c                 |    | j                  | j                  j                  t        t                    t               y r<   r  rY   s    r   testSendmsgArrayzSendmsgTests.testSendmsgArray  r  r?   c                     | j                  | j                  t        j                  dt              g      t	        t                     y )NB)r  rX  arrayr  r  rY   s    r   _testSendmsgArrayzSendmsgTests._testSendmsgArray  s2    --u{{3/D.EFS	#r?   c                 |    | j                  | j                  j                  t        t                    t               y r<   r  rY   s    r   testSendmsgGatherzSendmsgTests.testSendmsgGather  r  r?   c                     | j                  | j                  t        d d t        dd  g      t        t                     y Nr   r  rY   s    r   _testSendmsgGatherzSendmsgTests._testSendmsgGather  s2    --s2AwAB.@A3s8Lr?   c                 Z    | j                  | j                  j                  d      d       y Nr\     doner  r  r  rY   s    r   testSendmsgBadArgszSendmsgTests.testSendmsgBadArgs  !    ,,T2G<r?   c           	         | j                  t        | j                  j                         | j                  t        | j                  d       | j                  t        | j                  t                      | j                  t        | j                  t               g       | j                  t        | j                  t        t               g       | j                  t        | j                  t        gt                      | j                  t        | j                  t        gg t                      | j                  t        | j                  t        gg dt                      | j                  d       y )Ns   not in an iterabler   r  )r  r   rS  r  rX  objectr  rT  rY   s    r   _testSendmsgBadArgsz SendmsgTests._testSendmsgBadArgs  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                 Z    | j                  | j                  j                  d      d       y r  r  rY   s    r   testSendmsgBadCmsgzSendmsgTests.testSendmsgBadCmsg  r  r?   c           	      X   | j                  t        | j                  t        gt	               g       | j                  t        | j                  t        gt	               ddfg       | j                  t        | j                  t        gdt	               dfg       | j                  t        | j                  t        gddt	               fg       | j                  t        | j                  t        gdg       | j                  t        | j                  t        gdg       | j                  d       y )Nr      data)r   r   )r   r   r  r`  r  r  r   rX  r  r  rT  rY   s    r   _testSendmsgBadCmsgz SendmsgTests._testSendmsgBadCmsg  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                 Z    | j                  | j                  j                  d      d       y r  r  rY   s    r   testSendmsgBadMultiCmsgz$SendmsgTests.testSendmsgBadMultiCmsg  s#     	,,T2G<r?   c                     | j                  t        | j                  t        gg d       | j                  t        | j                  t        gdt	               g       | j                  d       y )Nr   r   r?   r  r  rY   s    r   _testSendmsgBadMultiCmsgz%SendmsgTests._testSendmsgBadMultiCmsg  sU    )T%9%9%	.)T%9%9%+vx!8	:'"r?   c                 Z    | j                  | j                  j                  d      d       y r  r  rY   s    r   testSendmsgExcessCmsgRejectz(SendmsgTests.testSendmsgExcessCmsgReject%  s#     	,,T2G<r?   c                    t        t        d      s\| j                  t              5 }| j	                  t
        gddg       d d d        | j                  j                  j                         | j                  d       y # 1 sw Y   @xY w)Nr  r  r  )
r   r   r  r   rX  r  assertIsNoner  r+  rT  rZ   r  s     r   _testSendmsgExcessCmsgRejectz)SendmsgTests._testSendmsgExcessCmsgReject*  sr    v|,""7+ Hr$$cU[+,FGHbll001'"H Hs   A??Bc                      y r<   rd   rY   s    r   testSendmsgAfterClosez"SendmsgTests.testSendmsgAfterClose2  s    r?   c                     | j                   j                          | j                  t        | j                  t
        g       y r<   )rS  r!   r  r   rX  r  rY   s    r   _testSendmsgAfterClosez#SendmsgTests._testSendmsgAfterClose6  s,    '4#7#7#?r?   N)ra   rb   rc   r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r   r  r~  r  r  r  r  r  rd   r?   r   r  r    s    =@=#=#=#=M=#$=# &,'= (=
 ((# )#=
#@r?   r  c                   ~    e Zd Zd Zd Zd Zd Z eej                  dvd      d        Z
e
j                  d        Zy	)
SendmsgStreamTestsc                 |    | j                  | j                  j                  t        t                    t               y r<   r  rY   s    r   testSendmsgExplicitNoneAddrz.SendmsgStreamTests.testSendmsgExplicitNoneAddr?  r  r?   c                 p    | j                  | j                  t        gg dd       t        t                     y r   r  rY   s    r   _testSendmsgExplicitNoneAddrz/SendmsgStreamTests._testSendmsgExplicitNoneAddrC  s)    --seRDA3s8Lr?   c                     | j                  | j                  j                  d      d       | j                  | j                  j                  | j                               y Nr     aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaarL   r  r  r  r  rQ  r   rv  rY   s    r   testSendmsgTimeoutz%SendmsgStreamTests.testSendmsgTimeoutF  sE    ,,S18<,,T5F5F,GHr?   c                 T   	 | j                   j                  d       	 	 | j                  dg       # t        $ r Y n3t
        $ r(}|j                  t        j                  k7  r Y d }~nd }~ww xY w| j                  j                          y # | j                  j                          w xY w)NQ?r  )
rS  r  rX  r  r  r   r+  ENOMEMrQ  r   rZ   r  s     r   _testSendmsgTimeoutz&SendmsgStreamTests._testSendmsgTimeoutK  s    	"MM$$T*5(((4   99, - OO!DOO!s6   B 2 	A-B A-A(#B (A--B B'>   rk  z<MSG_DONTWAIT not known to work on this platform when sendingc                     | j                  | j                  j                  d      d       | j                  | j                  j                  | j                               y r  r  rY   s    r   testSendmsgDontWaitz&SendmsgStreamTests.testSendmsgDontWaitb  sG    
 	,,S18<,,T5F5F,GHr?   c                    	 | j                  t              5 }	 | j                  dgg t        j                         ## 1 sw Y   nxY w| j                  j                  j                  t        j                  t        j                  t        j                  f       | j                  j                          y # | j                  j                          w xY wNr  )r  r   rX  r   MSG_DONTWAITr  r  r+  EAGAINEWOULDBLOCKr  rQ  r   r  s     r   _testSendmsgDontWaitz'SendmsgStreamTests._testSendmsgDontWaitj  s    		"""7+ Nr(((R9L9LM N N
 MM",,,, <<):):ELLIK OO!DOO!s   B6 %<AAB6 6CN)ra   rb   rc   r  r  r  r  r  rB  rt  r  r~  r  rd   r?   r   r  r  ;  s]    =MI
". cll)3 !I!I
 $$
" %
"r?   r  c                       e Zd Zd Zd Zy)SendmsgConnectionlessTestsc                      y r<   rd   rY   s    r   testSendmsgNoDestAddrz0SendmsgConnectionlessTests.testSendmsgNoDestAddr}  r  r?   c                     | j                  t        | j                  j                  t        g       | j                  t        | j                  j                  t        gg dd        y r   )r  r   rS  r  r  rY   s    r   _testSendmsgNoDestAddrz1SendmsgConnectionlessTests._testSendmsgNoDestAddr  sJ    '4==#8#8%	!'4==#8#8%Q	.r?   N)ra   rb   rc   r  r  rd   r?   r   r  r  x  s    

.r?   r  c                      e Zd Zd Zd Zd Zd Zd Zd Zd Z	d Z
d	 Zd
 Zd Zd Zd Zd Zd Zd Z eed      d        Zej,                  d        Z eej(                  d      d        Zej,                  d        Zy)RecvmsgGenericTestsc                    | j                  | j                  t        t                    \  }}}}| j	                  |t               | j                  || j                         | j	                  |g        | j                  |d       y NTrm  r\  r  r  r  r  rd  r   rt  rZ   r
  r  r  r  s        r   testRecvmsgzRecvmsgGenericTests.testRecvmsg  sg    $(NN4>>3s8$L!WeTc"  t}}5"%4(r?   c                 .    | j                  t               y r<   rT  r  rY   s    r   _testRecvmsgz RecvmsgGenericTests._testRecvmsg      #r?   c                    | j                  | j                  t        t              dd      \  }}}}| j	                  |t               | j                  || j                         | j	                  |g        | j                  |d       y )Nr   Tr  r  r  s        r   testRecvmsgExplicitDefaultsz/RecvmsgGenericTests.testRecvmsgExplicitDefaults  so    $(NN4>>36s8Q%C!WeTc"  t}}5"%4(r?   c                 .    | j                  t               y r<   r  rY   s    r   _testRecvmsgExplicitDefaultsz0RecvmsgGenericTests._testRecvmsgExplicitDefaults  r  r?   c                    | j                  | j                  t        t              dz         \  }}}}| j	                  |t               | j                  || j                         | j	                  |g        | j                  |d       y )Nr`  Tr  r  r  s        r   testRecvmsgShorterz&RecvmsgGenericTests.testRecvmsgShorter  so    $(NN4>>36s8b=%B!WeTc"  t}}5"%4(r?   c                 .    | j                  t               y r<   r  rY   s    r   _testRecvmsgShorterz'RecvmsgGenericTests._testRecvmsgShorter  r  r?   c                    | j                  | j                  t        t              dz
        \  }}}}| j	                  |t        d d        | j                  || j                         | j	                  |g        | j                  |d       y )Nr   Fr  r  r  s        r   testRecvmsgTruncz$RecvmsgGenericTests.testRecvmsgTrunc  su    $(NN4>>36s8a<%A!WeTc#2h'  t}}5"%5)r?   c                 .    | j                  t               y r<   r  rY   s    r   _testRecvmsgTruncz%RecvmsgGenericTests._testRecvmsgTrunc  r  r?   c                    | j                  | j                  t        t              d      \  }}}}| j	                  |t               | j                  || j                         | j	                  |g        | j                  |d       y )Nr   Tr  r  r  s        r   testRecvmsgShortAncillaryBufz0RecvmsgGenericTests.testRecvmsgShortAncillaryBuf  sm    $(NN4>>36s8Q%@!WeTc"  t}}5"%4(r?   c                 .    | j                  t               y r<   r  rY   s    r   _testRecvmsgShortAncillaryBufz1RecvmsgGenericTests._testRecvmsgShortAncillaryBuf  r  r?   c                    | j                  | j                  t        t              d      \  }}}}| j	                  |t               | j                  || j                         | j	                  |g        | j                  |d       y )N (  Tr  r  r  s        r   testRecvmsgLongAncillaryBufz/RecvmsgGenericTests.testRecvmsgLongAncillaryBuf  sm    $(NN4>>36s8U%D!WeTc"  t}}5"%4(r?   c                 .    | j                  t               y r<   r  rY   s    r   _testRecvmsgLongAncillaryBufz0RecvmsgGenericTests._testRecvmsgLongAncillaryBuf  r  r?   c                     | j                   j                          | j                  t        | j                  | j                   d       y r  )r  r!   r  r   r\  rY   s    r   testRecvmsgAfterClosez)RecvmsgGenericTests.testRecvmsgAfterClose  s.    '4>>4>>4Hr?   c                      y r<   rd   rY   s    r   _testRecvmsgAfterClosez*RecvmsgGenericTests._testRecvmsgAfterClose  r'  r?   c                     	 | j                   j                  d       | j                  t        | j                  | j                   t        t                     | j                  j                          y # | j                  j                          w xY w)Nr  )	r  r  r  r  r\  r  r  rQ  r   rY   s    r   testRecvmsgTimeoutz&RecvmsgGenericTests.testRecvmsgTimeout  s`    	"NN%%d+l"nndnnc#hH OO!DOO!s   AA1 1Bc                 n    | j                  | j                  j                  | j                               y Nr  )r  rQ  r   rv  rY   s    r   _testRecvmsgTimeoutz'RecvmsgGenericTests._testRecvmsgTimeout  s&    ,,T5F5F,GHr?   r  c           	         | j                  | j                  t        t              dz
  dt        j
                        \  }}}}| j                  |t        d d        | j                  || j                         | j                  |g        | j                  |dt        t        dd             | j                  | j                  t        t              dt        j
                        \  }}}}| j                  |t               | j                  || j                         | j                  |g        | j                  |d       | j                  | j                  t        t                    \  }}}}| j                  |t               | j                  || j                         | j                  |g        | j                  |d       y )	Nr   r   r  Fr  rm  rp  Tr  )r\  r  r  r  r   r  r  rd  r   rt  r   r  s        r   testRecvmsgPeekz#RecvmsgGenericTests.testRecvmsgPeek  ss    %)NN4>>36s8a<39??%D!WeT 	c#2h'  t}}5"%
 	5&v{A> 	 	@ %)NN4>>36s8Q39??%D!WeT 	c"  t}}5"%4( %)NN4>>3s8$L!WeTc"  t}}5"%4(r?   c                 .    | j                  t               y r<   r  rY   s    r   _testRecvmsgPeekz$RecvmsgGenericTests._testRecvmsgPeek  s    #r?   r  c                 X   | j                   j                  | j                         | j                  | j                   t	        t
                    \  }}}}| j                  |t
               | j                  || j                         | j                  |g        | j                  |d       y r  )
r  r  rv  r\  r  r  r  rd  r   rt  r  s        r   testRecvmsgFromSendmsgz*RecvmsgGenericTests.testRecvmsgFromSendmsg  s     	!!$"3"34$(NN4>>3s8$L!WeTc"  t}}5"%4(r?   c                     | j                  | j                  t        d d t        dd  g      t        t                     y r  r  rY   s    r   _testRecvmsgFromSendmsgz+RecvmsgGenericTests._testRecvmsgFromSendmsg  s2    --s2AwAB.@A3s8Lr?   N)ra   rb   rc   r  r  r   r  r  r  r	  r  r  r  r  r  r  r  r  r  r  r   r   r~  r"  r$  r&  rd   r?   r   r  r    s    )))*))I
"I &*% ) & )D    ! &--+) ,) ''M (Mr?   r  c                   $    e Zd Zd Zd Zd Zd Zy)RecvmsgGenericStreamTestsc                     | j                  | j                  d      \  }}}}| j                  |d       | j                  || j                         | j                  |g        | j                  |d        y )Nr  r?   r  )r\  r  r  rd  r   rt  r  s        r   testRecvmsgEOFz(RecvmsgGenericStreamTests.testRecvmsgEOF#  sc    $(NN4>>4$H!WeTc"  t}}5"%4(r?   c                 8    | j                   j                          y r<   )rS  r!   rY   s    r   _testRecvmsgEOFz)RecvmsgGenericStreamTests._testRecvmsgEOF+  s    r?   c                    | j                  | j                  t        t              dz
        \  }}}}| j	                  || j
                         | j                  |g        | j                  |d       | j                  | j                  d      \  }}}}| j	                  || j
                         | j                  |g        | j                  |d       ||z   }| j                  |t               y )Nr   Fr  r  T)r\  r  r  r  rd  r   r  rt  )rZ   r  r  r  r  r  r
  s          r   testRecvmsgOverflowz-RecvmsgGenericStreamTests.testRecvmsgOverflow.  s    %)^^DNN47HqL&B"gud  t}}5"%5)%)^^DNND%I"gud  t}}5"%4(Tkc"r?   c                 .    | j                  t               y r<   r  rY   s    r   _testRecvmsgOverflowz.RecvmsgGenericStreamTests._testRecvmsgOverflow>  r  r?   N)ra   rb   rc   r*  r,  r.  r0  rd   r?   r   r(  r(    s    )# r?   r(  c                       e Zd Zd Zd Zy)RecvmsgTestsc                    | j                  t        | j                  j                         | j                  t        | j                  j                  ddd       | j                  t        | j                  j                  t        t              dd       | j                  t        | j                  j                  t        d      gdd       | j                  t        | j                  j                  t               dd       | j                  t        | j                  j                  t        t              t               d       | j                  t        | j                  j                  t        t              dt                      | j                  j                  t        t              dd      \  }}}}| j                  |t               | j                  || j                         | j                  |g        | j                  |d       y )NrZ  r   r  Tr  )r  r   r  r  r  r  r  r  r  r  rd  r   rt  r  s        r   testRecvmsgBadArgszRecvmsgTests.testRecvmsgBadArgsE  sq   )T^^%;%;<*dnn&<&<a	$*dnn&<&<c(B	+)T^^%;%;$R=/1a	1)T^^%;%; (Aq	*)T^^%;%;c(FHa	1)T^^%;%;c(Avx	1 %)NN$:$:3s8Q$J!WeTc"  t}}5"%4(r?   c                 .    | j                  t               y r<   r  rY   s    r   _testRecvmsgBadArgsz RecvmsgTests._testRecvmsgBadArgs[  r  r?   N)ra   rb   rc   r4  r6  rd   r?   r   r2  r2  B  s    ),r?   r2  c                   <    e Zd Zd Zd Zd Zd Zd Zd Zd Z	d Z
y	)
RecvmsgIntoTestsc                    t        t        t                    }| j                  t        | j
                  j                         | j                  t        | j
                  j                  t        t              dd       | j                  t        | j
                  j                  |dd       | j                  t        | j
                  j                  t               gdd       | j                  t        | j
                  j                  dgdd       | j                  t        | j
                  j                  |t               gdd       | j                  t        | j
                  j                  |gdd       | j                  t        | j
                  j                  |gt               d       | j                  t        | j
                  j                  |gdt                      | j
                  j                  |gdd      \  }}}}| j                  |t        t                     | j                  |t        t                     | j                  || j                         | j                  |g        | j                  |d       y )Nr   s   I'm not writablerZ  Tr  )r  r  r  r  r   r  rz  r  r  r  rd  r   rt  rZ   r}  nbytesr  r  r  s         r   testRecvmsgIntoBadArgsz'RecvmsgIntoTests.testRecvmsgIntoBadArgsb  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-  t}}5"%4(r?   c                 .    | j                  t               y r<   r  rY   s    r   _testRecvmsgIntoBadArgsz(RecvmsgIntoTests._testRecvmsgIntoBadArgs~  r  r?   c                    t        t        t                    }| j                  j	                  d |fD              \  }}}}| j                  |t        t                     | j                  |t        t                     | j                  || j                         | j                  |g        | j                  |d       y )Nc              3       K   | ]  }|  y wr<   rd   r  s     r   r  z<RecvmsgIntoTests.testRecvmsgIntoGenerator.<locals>.<genexpr>  s     1Qr  Tr  )	r  r  r  r  rz  r  rd  r   rt  r:  s         r   testRecvmsgIntoGeneratorz)RecvmsgIntoTests.testRecvmsgIntoGenerator  s    C!'+~~'B'B( $S*in-  t}}5"%4(r?   c                 .    | j                  t               y r<   r  rY   s    r   _testRecvmsgIntoGeneratorz*RecvmsgIntoTests._testRecvmsgIntoGenerator  r  r?   c                    t        j                   ddgt        t              z        }| j                  j	                  |g      \  }}}}| j                  |t        t                     | j                  |j                         t               | j                  || j                         | j                  |g        | j                  |d       y )Nr  r   Tr  )
r  r  r  r  rz  r  tobytesrd  r   rt  r:  s         r   testRecvmsgIntoArrayz%RecvmsgIntoTests.testRecvmsgIntoArray  s    kk#sSX~.'+~~'B'BC5'I$S*,  t}}5"%4(r?   c                 .    | j                  t               y r<   r  rY   s    r   _testRecvmsgIntoArrayz&RecvmsgIntoTests._testRecvmsgIntoArray  r  r?   c                    t        d      }t        d      }t        d      }| j                  j                  |t        |      dd |g      \  }}}}| j	                  |t        d             | j	                  |t        d             | j	                  |t        d             | j	                  |t        d	             | j                  || j                         | j	                  |g        | j                  |d
       y )Ns   ----s
   0123456789s   --------------r   	      Mary had a little lambs   Marys
   01 had a 9s   little lamb---Tr  )	r  r  rz  
memoryviewr  r  rd  r   rt  )rZ   b1b2b3r;  r  r  r  s           r   testRecvmsgIntoScatterz'RecvmsgIntoTests.testRecvmsgIntoScatter  s    w}%()'+~~'B'BB!$b)(+$%>!?@Yw/0Y}56Y'89:  t}}5"%4(r?   c                 &    | j                  d       y )NrK  )rT  rY   s    r   _testRecvmsgIntoScatterz(RecvmsgIntoTests._testRecvmsgIntoScatter  s    34r?   N)ra   rb   rc   r<  r>  rA  rC  rF  rH  rP  rR  rd   r?   r   r8  r8  _  s*    )8	)))5r?   r8  c                       e Zd Z	 ddlZ edej
                        Z ee	d      d        Z
 ee	d      d        Zy# e$ r dZY (w xY w)CmsgMacroTestsr   NiCMSG_LENc                    | j                   t        j                  d      z
  dz   }t        t	        d            t        t	        |dz
  |            z   }| j                  t        j                  d      t        j                  d      j                  dz         |D ][  }t        j                  |      }| j                  |t        j                  d      z
  |       | j                  || j                          ] | j                  t        t        j                  d       | j                  t        t        j                  |       | j                  t        t        j                  t        j                         y )Nr   r     rP   r   rZ  )socklen_t_limitr   rU  listrC  r2  r  itemsizer  r|  r  rQ  rB  maxsize)rZ   toobigry  nr=   s        r   testCMSG_LENz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  d&:&:;		< 	-"= 	-&A-#++Fr?   r  c                 b   | j                   t        j                  d      z
  dz   }t        t	        d            t        t	        |dz
  |            z   }t        j                  d      }| j                  |t        j                  d      j                  dz         |D ]  }t        j                  |      }| j                  ||       | j                  |t        j                  |             | j                  ||t        j                  d      z          | j                  || j                          |} | j                  t        t        j                  d       | j                  t        t        j                  |       | j                  t        t        j                  t        j                         y )Nr   rW  r   rP   r   rZ  )rX  r   r  rY  rC  r2  r  rZ  r{  rU  r|  r  rQ  rB  r[  )rZ   r\  ry  lastr]  r=   s         r   testCMSG_SPACEzCmsgMacroTests.testCMSG_SPACE  sL    %%(9(9!(<<q@eCj!Dv|V)D$EE  #4S!1!:!:Q!>? 	A##A&C##C.##C);<##CV__Q-?)?@  d&:&:;D	 	-):):B? 	-):):FC-):):CKKHr?   )ra   rb   rc   r^  minr`  rX  r  r  r   r^  ra  rd   r?   r   rT  rT    sl    = j)*;*;<&*%G &G( &,'I (I7  %$%s   < AArT  c                   
   e Zd ZdZd Zd Zd Zd Zd Zd5dZ	d Z
d	 Zd
 Zd Z eed      d        Zej"                  d        Zd Zd Z ej,                  ej0                  dk(  d       ej,                  ed       eed      d                      Zej"                   ej,                  ej0                  dk(  d       ej,                  ed      d                      Z ej,                  ej0                  dk(  d       ej,                  ed       eed      d                      Zej"                   ej,                  ej0                  dk(  d       ej,                  ed      d                      Zd Z ej,                  ej0                  dk(  d      d        Zd Z d Z!d Z" eed      d        Z#e#j"                  d        Z$d6d Z%d! Z&d" Z'd# Z(d$ Z)d% Z*d& Z+d' Z,d( Z-d) Z.d* Z/d6d+Z0d, Z1d- Z2d. Z3d/ Z4d0 Z5d1 Z6d2 Z7d3 Z8y4)7SCMRightsTestic                 T   g }t        |      D ]  }t        j                         \  }}| j                  t        j
                  |       | j                  t        j                  |       t	        j                  |t        |      j                                |j                  |        |S r<   )rC  r  mkstempry   r  rK  r!   writer  encodeappend)rZ   r]  fdsrP   r{  rN  s         r   newFDszSCMRightsTest.newFDs  s|     q 	A'')HBOOBIIt,OOBHHb)HHRQ)JJrN	 
r?   c                     t        |      D ]g  \  }}t        j                  |dt        j                         | j	                  t        j
                  |d      t        |      j                                i y )Nr   r  )	enumerater  lseekSEEK_SETr  r  r  rh  )rZ   rj  r]  r{  s       r   checkFDszSCMRightsTest.checkFDs  sV     s^ 	AEArHHRBKK(RWWR.A@	Ar?   c                 <    | j                  | j                  |       y r<   )ry   closeRecvmsgFDsr^  s     r   rZ  z#SCMRightsTest.registerRecvmsgResult  s    ,,f5r?   c           	      >   |d   D ]  \  }}}|t         j                  k(  s|t         j                  k(  s/t        j                  d      }|j	                  |d t        |      t        |      |j                  z  z
          |D ]  }t        j                  |         y )Nr   rP   )	r   r  
SCM_RIGHTSr  	frombytesr  rZ  r  r!   )rZ   recvmsg_result
cmsg_level	cmsg_type	cmsg_datarj  r{  s          r   rr  zSCMRightsTest.closeRecvmsgFDs  s     1?q0A 	!,J	9f///!2!22kk#&i )II#i.3<<*GHJ K !BHHRL!	!r?   c                     | j                  | j                  t        gt        j                  t        j
                  t        j                  d| j                  |            fg      t        t                     y )NrP   )	r  rX  r  r   r  rt  r  rk  r  )rZ   r]  s     r   createAndSendFDszSCMRightsTest.createAndSendFDs  sb     	  ##)#4#4#)#4#4#(;;sDKKN#C#E "FG H	r?   c                    |\  }}}}| j                  |t               | j                  || j                         | j	                  |dt
        j                  |       | j                  |t               | j                  t        |      |       t        j                  d      }	|D ]  }
| j                  |
t               |
\  }}}| j                  |t
        j                         | j                  |t
        j                         | j                  |t               | j                  t        |      t         z  d       |	j#                  |        | j                  t        |	      |       | j%                  |	       y )NTrm  ro  rp  rP   r   )r  r  rd  r   rt  r   re  r  rY  r|  r  r  tupler  rt  r4  
SIZEOF_INTru  rp  )rZ   numfdsr[  maxcmsgsignoreflagsr
  r  r  r  rj  itemrw  rx  ry  s                 r   checkRecvmsgFDszSCMRightsTest.checkRecvmsgFDs  s8    %+!WeTc"  t}}54F4E4E* 	 	, 	gt,S\84kk# 	%D!!$./3,J	9Z):):;Y(9(9:!!)U3S^j8!<MM)$	% 	S6*cr?   c           	      x    | j                  d| j                  | j                  t        t              d             y )Nr   r  r  r\  r  r  r  rY   s    r   testFDPassSimplezSCMRightsTest.testFDPassSimple9  .    Qt~~/23x!@ 	Ar?   c                    | j                  | j                  t        gt        j                  t        j
                  t        j                  d| j                  d            j                         fg      t        t                     y )NrP   r   )
r  rX  r  r   r  rt  r  rk  rE  r  rY   s    r   _testFDPassSimplezSCMRightsTest._testFDPassSimple>  sh      ####++c4;;q>2::<> ?@
 H	r?   c           	      x    | j                  d| j                  | j                  t        t              d             y )Nr  r  r  rY   s    r   testMultipleFDPassz SCMRightsTest.testMultipleFDPassG  r  r?   c                 &    | j                  d       y Nr  r{  rY   s    r   _testMultipleFDPassz!SCMRightsTest._testMultipleFDPassL      a r?   r  c                     | j                  d| j                  | j                  t        t              t        j                  dt        z                     y r  )r  r\  r  r  r  r   r  r  rY   s    r   testFDPassCMSG_SPACEz"SCMRightsTest.testFDPassCMSG_SPACEO  s@     	t~~dnnc#h$//J?A	Br?   c                 &    | j                  d       y r  r  rY   s    r   _testFDPassCMSG_SPACEz#SCMRightsTest._testFDPassCMSG_SPACEV  s    a r?   c                     | j                  d| j                  | j                  t        t              t        j                  dt        z              t
        j                         y )Nr   r  r  )	r  r\  r  r  r  r   rU  r  re  rY   s    r   testFDPassCMSG_LENz SCMRightsTest.testFDPassCMSG_LENZ  sK    Q!^^DNNCH,2OOA
N,KM
 *0):): 	 	<r?   c                 &    | j                  d       y rX  r  rY   s    r   _testFDPassCMSG_LENz!SCMRightsTest._testFDPassCMSG_LENd  r  r?   r  zskipping, see issue #12958zskipping, see issue #22397c           	      |    | j                  d| j                  | j                  t        t              d      d       y )Nr   r  )r  r  rY   s    r   testFDPassSeparatez SCMRightsTest.testFDPassSeparateg  s4     	Q!^^DNNCHeL&' 	 	)r?   c                 h   | j                  d      \  }}| j                  | j                  t        gt        j
                  t        j                  t        j                  d|g      ft        j
                  t        j                  t        j                  d|g      fg      t        t                     y Nr   rP   	rk  r  rX  r  r   r  rt  r  r  rZ   fd0fd1s      r   _testFDPassSeparatez!SCMRightsTest._testFDPassSeparateq       ;;q>S  #&*;*;*0*;*;*/++cC5*A*C +1*;*;*0*;*;*/++cC5*A*C)D E H	r?   c                    d}| j                  || j                  | j                  t        t              t        j                  t              t        j                  t        |z        z         dt
        j                         y )Nr   )r  r  )
r  r\  r  r  r  r   r  r  rU  re  )rZ   num_fdss     r   testFDPassSeparateMinSpacez(SCMRightsTest.testFDPassSeparateMinSpace  sj     W!^^DNNCH,2,=,=j,I,2OOJ<P,Q-RS '(V5F5F	 	 	Hr?   c                 h   | j                  d      \  }}| j                  | j                  t        gt        j
                  t        j                  t        j                  d|g      ft        j
                  t        j                  t        j                  d|g      fg      t        t                     y r  r  r  s      r   _testFDPassSeparateMinSpacez)SCMRightsTest._testFDPassSeparateMinSpace  r  r?   c                     	 | j                  |g|      }| j                  |t        |             y # t        $ r<}| j                  |j                  t               | j                  |g      }Y d }~\d }~ww xY wr<   )rX  r   r  r+  r1  r  r  )rZ   r
  r  r;  r   s        r   sendAncillaryIfPossiblez%SCMRightsTest.sendAncillaryIfPossible  si    	1))3%9F
 	S*	  	1!!!''3/))3%0F	1s   1 	A62A11A6zsee issue #24725c           	          | j                  d| j                  | j                  t        t              d      t
        j                         y )Nr   r  r  )r  r\  r  r  r  r   re  rY   s    r   testFDPassEmptyzSCMRightsTest.testFDPassEmpty  s=     	Qt~~/23x!@)/):): 	 	<r?   c                 p    | j                  t        t        j                  t        j                  dfg       y Nr?   )r  r  r   r  rt  rY   s    r   _testFDPassEmptyzSCMRightsTest._testFDPassEmpty  s0    $$SF,=,=,2,=,=,/,1 +2 	3r?   c                    | j                  | j                  t        t              d      \  }}}}| j	                  |t               | j                  || j                         | j                  |dt        j                         | j                  t        |      d       |D ]e  \  }}}| j	                  |t        j                         | j	                  |t        j                         | j                  t        |      t               g y )Nr  Tr  r   )r\  r  r  r  r  rd  r   rt  r   re  r|  r  rt  
assertLessr  rZ   r
  r  r  r  rw  rx  ry  s           r   testFDPassPartialIntz"SCMRightsTest.testFDPassPartialInt  s    $(NN4>>36s8U%D!WeTc"  t}}540A0ABS\1-07 	8,J	9Z):):;Y(9(9:OOC	NJ7	8r?   c           	          | j                  t        t        j                  t        j                  t        j
                  d| j                  g      j                         d d fg       y )NrP   rZ  )r  r  r   r  rt  r  badfdrE  rY   s    r   _testFDPassPartialIntz#SCMRightsTest._testFDPassPartialInt  sS    $$kk#

|,446s;= >	?r?   c           	         | j                  | j                  t        t              d      \  }}}}| j	                  |t               | j                  || j                         | j                  |dt        j                         | j                  t        |      d       t        j                  d      }|D ]|  \  }}}| j	                  |t        j                         | j	                  |t        j                         |j                  |d t        |      t        |      |j                  z  z
          ~ | j                  t        |      d       | j!                  |       y )Nr  Tr  r   rP   )r\  r  r  r  r  rd  r   rt  r   re  r|  r  r  rt  ru  rZ  rp  )	rZ   r
  r  r  r  rj  rw  rx  ry  s	            r   testFDPassPartialIntInMiddlez*SCMRightsTest.testFDPassPartialIntInMiddle  s#    %)NN4>>36s8U%D!WeTc"  t}}540A0ABS\1-kk#07 	G,J	9Z):):;Y(9(9:MM) %E	Nc)ns||&CDF G	G
 	SXq)cr?   c           
      d   | j                  d      \  }}| j                  t        t        j                  t        j
                  t        j                  d|| j                  g      j                         d d ft        j                  t        j
                  t        j                  d|g      fg       y )Nr   rP   rZ  )	rk  r  r  r   r  rt  r  r  rE  r  s      r   _testFDPassPartialIntInMiddlez+SCMRightsTest._testFDPassPartialIntInMiddle  s    ;;q>S$$kk#TZZ0199;CR@B kk#u%'(	)r?   c                     |\  }}}}| j                  |t               | j                  || j                         | j                  |g        | j	                  |dt
        j                  |       y )NTrm  rn  rp  )r  r  rd  r   rt  r   re  )rZ   r[  r  r
  r  r  r  s          r   checkTruncatedHeaderz"SCMRightsTest.checkTruncatedHeader  sf     %+!WeTc"  t}}5"%4&2C2C* 	 	,r?   c                     | j                  | j                  | j                  t        t                    t
        j                         y Nr  r  r\  r  r  r  r   re  rY   s    r   testCmsgTruncNoBufSizez$SCMRightsTest.testCmsgTruncNoBufSize  s8     	!!$..S"J /5.?.?	 	" 	Ar?   c                 &    | j                  d       y rX  r  rY   s    r   _testCmsgTruncNoBufSizez%SCMRightsTest._testCmsgTruncNoBufSize  r  r?   c                     | j                  | j                  | j                  t        t              d      t
        j                         y )Nr   r  r  rY   s    r   testCmsgTrunc0zSCMRightsTest.testCmsgTrunc0  s6    !!$..S1"M.4.?.? 	" 	Ar?   c                 &    | j                  d       y rX  r  rY   s    r   _testCmsgTrunc0zSCMRightsTest._testCmsgTrunc0   r  r?   c                 v    | j                  | j                  | j                  t        t              d             y rX  )r  r\  r  r  r  rY   s    r   testCmsgTrunc1zSCMRightsTest.testCmsgTrunc1  s%    !!$..S1"MNr?   c                 &    | j                  d       y rX  r  rY   s    r   _testCmsgTrunc1zSCMRightsTest._testCmsgTrunc1	  r  r?   c                     | j                  | j                  | j                  t        t              t
        dz               y r  )r  r\  r  r  r  r  rY   s    r   testCmsgTrunc2IntzSCMRightsTest.testCmsgTrunc2Int  s2     	!!$..S1;a#A 	Br?   c                 &    | j                  d       y rX  r  rY   s    r   _testCmsgTrunc2Intz SCMRightsTest._testCmsgTrunc2Int  r  r?   c           	          | j                  | j                  | j                  t        t              t        j                  d      dz
               y r  )r  r\  r  r  r  r   rU  rY   s    r   testCmsgTruncLen0Minus1z%SCMRightsTest.testCmsgTruncLen0Minus1  s:    !!$..S171Ca1G#I 	Jr?   c                 &    | j                  d       y rX  r  rY   s    r   _testCmsgTruncLen0Minus1z&SCMRightsTest._testCmsgTruncLen0Minus1  r  r?   c                    | j                  | j                  t        t              |      \  }}}}| j	                  |t               | j                  || j                         | j                  |dt        j                         |dk(  r|g k(  ry | j	                  t        |      d       |d   \  }}	}
| j	                  |t        j                         | j	                  |	t        j                         | j                  t        |
      |       | j                  t        |
      |       t        j                  d      }|j                  |
d t        |
      t        |
      |j                   z  z
          | j#                  |       y )NTrm  rn  r   r   rP   )r\  r  r  r  r  rd  r   rt  r   re  r  rt  r{  r|  r  ru  rZ  rp  )rZ   ancbufmaxdatamindatar
  r  r  r  rw  rx  ry  rj  s               r   checkTruncatedArrayz!SCMRightsTest.checkTruncatedArray   s=   
 %)NN4>>36s8V%E!WeTc"  t}}54&2C2CDa<GrMWq)+21:(
IyV%6%67F$5$56I8S^W5kk#i !AI#i.3<<"?@B 	Ccr?   c                 P    | j                  t        j                  d      d       y )Nr   r  r  r  r   rU  rY   s    r   testCmsgTruncLen0zSCMRightsTest.testCmsgTruncLen08  s      (:A Fr?   c                 &    | j                  d       y rX  r  rY   s    r   _testCmsgTruncLen0z SCMRightsTest._testCmsgTruncLen0;  r  r?   c                 V    | j                  t        j                  d      dz   d       y )Nr   r   r  r  rY   s    r   testCmsgTruncLen0Plus1z$SCMRightsTest.testCmsgTruncLen0Plus1>  s#      (:Q(> Jr?   c                 &    | j                  d       y r  r  rY   s    r   _testCmsgTruncLen0Plus1z%SCMRightsTest._testCmsgTruncLen0Plus1A  r  r?   c                 `    | j                  t        j                  t              t               y )Nr  r  r   rU  r  rY   s    r   testCmsgTruncLen1zSCMRightsTest.testCmsgTruncLen1D  s#      
(C)3 	! 	5r?   c                 &    | j                  d       y r  r  rY   s    r   _testCmsgTruncLen1z SCMRightsTest._testCmsgTruncLen1H  r  r?   c                 x    | j                  t        j                  dt        z        dz
  dt        z  dz
         y )Nr   r   r  r  rY   s    r   testCmsgTruncLen2Minus1z%SCMRightsTest.testCmsgTruncLen2Minus1K  s5      J(G!(K*+j.A)= 	! 	?r?   c                 &    | j                  d       y r  r  rY   s    r   _testCmsgTruncLen2Minus1z&SCMRightsTest._testCmsgTruncLen2Minus1O  r  r?   N)r   r   r   )9ra   rb   rc   r  rk  rp  rZ  rr  r{  r  r  r  r  r  r  r   r  r~  r  r  r  r   r  rB  rt  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  rd   r?   r   rd  rd    s    E
A6
!6A
A
! &,'B (B %%! &!<! X__S\\X-/KLX__S67&,') ( 8 M) ##X__S\\X-/KLX__S67	 8 M $	 X__S\\X-/KLX__S67&,'H ( 8 MH  ++X__S\\X-/KLX__S67	 8 M ,		+ X__S\\X-/AB< C<3
8? &,' ($ "--	) .	),A!A
!O!B!J!0G!K!5!?!r?   rd  c            	          e Zd ZdZdZd Zd3dZ eedd      d        Z	e	j                  d        Z eed	dd      d
        Zej                  d        Z eej                  d       eedd      d               Zej                  d        Z	 	 d3dZ eedddd      d        Zej                  d        Z eed	dddd      d        Zej                  d        Z eej                  d       eed	dddd      d               Zej                  d        Z eej                  d       eed	dddd      d               Zej                  d        Zd4dZ eedd      d        Zej                  d        Z eedd      d        Zej                  d        Z eedd      d        Zej                  d         Z eedd      d!        Z e j                  d"        Z! eedd      d#        Z"e"j                  d$        Z# eedd      d%        Z$e$j                  d&        Z%d4d'Z& eed	dddd      d(        Z'e'j                  d)        Z( eed	dddd      d*        Z)e)j                  d+        Z* eed	dddd      d,        Z+e+j                  d-        Z, eed	dddd      d.        Z-e-j                  d/        Z. eed	dddd      d0        Z/e/j                  d1        Z0y2)5RFC3542AncillaryTestr   rZ  c                 V    i }|D ]!  \  }}}| j                  ||f|       ||||f<   # |S r<   )r  )rZ   r  drw  rx  ry  s         r   ancillaryMappingz%RFC3542AncillaryTest.ancillaryMappingd  sJ     07 	3,J	9j)4a8)2Az9%&	3 r?   c                    | j                   j                  t        j                  t        j                  d       | j
                  j                          | j                  | j                   t        t              |      \  }}}}| j                  |t               | j                  || j                         | j                  |dt        j                  |       | j                  t        |      d       | j                  |d   t                |d   \  }}	}
| j                  |t        j                         | j                  |	t        j"                         | j                  |
t$               | j                  t        |
      t&               t)        j(                  d      }|j+                  |
       | j-                  |d   d       | j/                  |d   |       y )Nr   Tr}  r   rP   )r  r  r   r  r
  rQ  r   r\  r  r  r  rd  r   rt  re  r  r~  r  r4  r  r  ru  r{  r|  )rZ   
ancbufsizemaxhopr  r
  r  r  r  rw  rx  ry  r  s               r   checkHopLimitz"RFC3542AncillaryTest.checkHopLimitn  sr   
 	!!&"5"5"(":":A	?$(NN4>>36s8Z%I!WeT 	c"  t}}54F4E4E* 	 	, 	Wq)gaj%0+21:(
IyV%8%89F$8$89i/Y4KK	I!a(QqT6*r?   r
  r  c                 (    | j                  d       y Nr  r  )r  rY   s    r   testRecvHopLimitz%RFC3542AncillaryTest.testRecvHopLimit  s     	e,r?   c                     | j                  | j                  j                  | j                               | j	                  t
               y r  r  rQ  r   rv  rT  r  rY   s    r   _testRecvHopLimitz&RFC3542AncillaryTest._testRecvHopLimit  s6    
 	,,T5F5F,GH#r?   r  c                 V    | j                  t        j                  t                     y )Nr  )r  r   r  r  rY   s    r   testRecvHopLimitCMSG_SPACEz/RFC3542AncillaryTest.testRecvHopLimitCMSG_SPACE  s      	f&7&7
&CDr?   c                     | j                  | j                  j                  | j                               | j	                  t
               y r  r  rY   s    r   _testRecvHopLimitCMSG_SPACEz0RFC3542AncillaryTest._testRecvHopLimitCMSG_SPACE  4    ,,T5F5F,GH#r?   r  c                 >    | j                  d| j                         y Nr  )r  r  )r  	hop_limitrY   s    r   testSetHopLimitz$RFC3542AncillaryTest.testSetHopLimit  s    
 	eDNNCr?   c                 T   | j                  | j                  j                  | j                               | j	                  | j                  t        gt        j                  t        j                  t        j                  d| j                  g      fg      t        t                     y Nr  rP   )r  rQ  r   rv  r  rX  r  r   r  r  r  r  r  rY   s    r   _testSetHopLimitz%RFC3542AncillaryTest._testSetHopLimit  s    ,,T5F5F,GH  ##)#6#68L8L#(;;sT^^4D#E#G "HI H		r?   c                    | j                   j                  t        j                  t        j                  d       | j                   j                  t        j                  t        j
                  d       | j                  j                          | j                  | j                   t        t              |      \  }}}}| j                  |t               | j                  || j                         | j                  |dt        j                  |       | j                  t        |      d       | j!                  |      }|t        j                  t        j"                  f   }	| j                  t        |	      t$               t'        j&                  d      }
|
j)                  |	       | j+                  |
d   d       | j-                  |
d   d       |t        j                  t        j.                  f   }| j                  t        |      t$               t'        j&                  d      }
|
j)                  |       | j+                  |
d   d       | j-                  |
d   |       y )Nr   Tr}  r   rP   r   r2  )r  r  r   r  r
  r  rQ  r   r\  r  r  r  rd  r   rt  re  r  r  r  r  ru  r{  r|  r  )rZ   r  r  r  r
  r  r  r  ancmaptcdatar  hldatas               r   checkTrafficClassAndHopLimitz1RFC3542AncillaryTest.checkTrafficClassAndHopLimit  s    	!!&"5"5"(":":A	?!!&"5"5"("8"8!	=$(NN4>>36s8Z%I!WeT 	c"  t}}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                 (    | j                  d       y r  )r  rY   s    r   testRecvTrafficClassAndHopLimitz4RFC3542AncillaryTest.testRecvTrafficClassAndHopLimit  s     	))U);r?   c                     | j                  | j                  j                  | j                               | j	                  t
               y r  r  rY   s    r    _testRecvTrafficClassAndHopLimitz5RFC3542AncillaryTest._testRecvTrafficClassAndHopLimit  r  r?   c                 \    | j                  t        j                  t              dz         y Nr   r  )r  r   r  r  rY   s    r   )testRecvTrafficClassAndHopLimitCMSG_SPACEz>RFC3542AncillaryTest.testRecvTrafficClassAndHopLimitCMSG_SPACE  s*    
 	))((4q8 	* 	:r?   c                     | j                  | j                  j                  | j                               | j	                  t
               y r  r  rY   s    r   *_testRecvTrafficClassAndHopLimitCMSG_SPACEz?RFC3542AncillaryTest._testRecvTrafficClassAndHopLimitCMSG_SPACE  r  r?   c                 >    | j                  d| j                         y r  r  r  rY   s    r   testSetTrafficClassAndHopLimitz3RFC3542AncillaryTest.testSetTrafficClassAndHopLimit  s!     	))U15 	* 	Ar?   c                    | j                  | j                  j                  | j                               | j	                  | j                  t        gt        j                  t        j                  t        j                  d| j                  g      ft        j                  t        j                  t        j                  d| j                  g      fg      t        t                     y r	  )r  rQ  r   rv  r  rX  r  r   r  r  r  traffic_classr  r  r  rY   s    r   _testSetTrafficClassAndHopLimitz4RFC3542AncillaryTest._testSetTrafficClassAndHopLimit  s    ,,T5F5F,GH  ##)#6#68J8J#(;;sT5G5G4H#I#K#)#6#68L8L#(;;sT^^4D#E#G"HI
 H	r?   c                 >    | j                  d| j                         y r  r  rY   s    r   testOddCmsgSizez$RFC3542AncillaryTest.testOddCmsgSize  s!     	))U15 	* 	Ar?   c                    | j                  | j                  j                  | j                               	 | j	                  t
        gt        j                  t        j                  t        j                  d| j                  g      j                         dz   ft        j                  t        j                  t        j                  d| j                  g      fg      }y # t        $ r}| j                  |j                   t"               | j	                  t
        gt        j                  t        j                  t        j                  d| j                  g      ft        j                  t        j                  t        j                  d| j                  g      fg      }| j%                  |t'        t
                     Y d }~y d }~ww xY w)Nr  rP   r  )r  rQ  r   rv  rX  r  r   r  r  r  r  rE  r  r  r   r  r+  r1  r  r  )rZ   r;  r   s      r   _testOddCmsgSizez%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'CG  Gc                    | j                   j                  t        j                  t        j                  d       | j
                  j                          |dn|f} | j                  | j                   t        t              g| \  }}}}| j                  |t               | j                  || j                         | j                  |g        | j                  |dt        j                  |       y )Nr   rd   Tr  )r  r  r   r  r
  rQ  r   r\  r  r  r  rd  r   rt  re  )rZ   r  r  ru   r
  r  r  r  s           r   checkHopLimitTruncatedHeaderz1RFC3542AncillaryTest.checkHopLimitTruncatedHeader&  s     	!!&"5"5"(":":A	?'rj]$2DNN4>>36s8%D>B%D!WeT 	c"  t}}5"%4&2C2C* 	 	,r?   c                 F    | j                  d t        j                         y )Nr  r  r$  r   re  rY   s    r   r  z+RFC3542AncillaryTest.testCmsgTruncNoBufSize:  s%     	))T
 7=6G6G 	* 	Ir?   c                     | j                  | j                  j                  | j                               | j	                  t
               y r  r  rY   s    r   r  z,RFC3542AncillaryTest._testCmsgTruncNoBufSizeE  r  r?   c                 F    | j                  dt        j                         y )Nr   r&  r'  rY   s    r   testSingleCmsgTrunc0z)RFC3542AncillaryTest.testSingleCmsgTrunc0J  s#     	))Q6<6G6G 	* 	Ir?   c                     | j                  | j                  j                  | j                               | j	                  t
               y r  r  rY   s    r   _testSingleCmsgTrunc0z*RFC3542AncillaryTest._testSingleCmsgTrunc0Q  r  r?   c                 (    | j                  d       y )Nr   r  )r$  rY   s    r   testSingleCmsgTrunc1z)RFC3542AncillaryTest.testSingleCmsgTrunc1Y  s    ))Q)7r?   c                     | j                  | j                  j                  | j                               | j	                  t
               y r  r  rY   s    r   _testSingleCmsgTrunc1z*RFC3542AncillaryTest._testSingleCmsgTrunc1]  r  r?   c                 6    | j                  dt        z         y r  )r$  r  rY   s    r   testSingleCmsgTrunc2Intz,RFC3542AncillaryTest.testSingleCmsgTrunc2Intb  s    ))Q^)Dr?   c                     | j                  | j                  j                  | j                               | j	                  t
               y r  r  rY   s    r   _testSingleCmsgTrunc2Intz-RFC3542AncillaryTest._testSingleCmsgTrunc2Intf  r  r?   c                 T    | j                  t        j                  d      dz
         y )Nr   r   r  )r$  r   rU  rY   s    r   testSingleCmsgTruncLen0Minus1z2RFC3542AncillaryTest.testSingleCmsgTruncLen0Minus1k  s!    ))V__Q5G!5K)Lr?   c                     | j                  | j                  j                  | j                               | j	                  t
               y r  r  rY   s    r   _testSingleCmsgTruncLen0Minus1z3RFC3542AncillaryTest._testSingleCmsgTruncLen0Minus1o  r  r?   c                    | j                   j                  t        j                  t        j                  d       | j
                  j                          | j                  | j                   t        t              t        j                  t              dz
        \  }}}}| j                  |t               | j                  || j                         | j                  |dt        j                          | j#                  t        |      d       |ri|d   \  }}}| j                  |t        j                         | j                  |t        j$                         | j'                  t        |      t               y y )Nr   Tr  r   )r  r  r   r  r
  rQ  r   r\  r  r  rU  r  r  rd  r   rt  re  r|  r  r  r  s           r   testSingleCmsgTruncInDataz.RFC3542AncillaryTest.testSingleCmsgTruncInDatat  s   
 	!!&"5"5"(":":A	?$(NNNNCHfooj&AA&E%G!WeT 	c"  t}}54&2C2CDS\1-/6qz,J	9Z)<)<=Y(<(<=OOC	NJ7	 r?   c                     | j                  | j                  j                  | j                               | j	                  t
               y r  r  rY   s    r   _testSingleCmsgTruncInDataz/RFC3542AncillaryTest._testSingleCmsgTruncInData  r  r?   c                    | j                   j                  t        j                  t        j                  d       | j                   j                  t        j                  t        j
                  d       | j                  j                          | j                  | j                   t        t              |      \  }}}}| j                  |t               | j                  || j                         | j                  |dt        j                  |       | j                  t        |      d       |d   \  }}}	| j                  |t        j                         | j!                  |t        j"                  t        j$                  h       | j                  t        |	      t&               t)        j(                  d      }
|
j+                  |	       | j-                  |
d   d       | j/                  |
d   d       y )Nr   Tr  r   rP   r2  )r  r  r   r  r
  r  rQ  r   r\  r  r  r  rd  r   rt  re  r  r  r  r  r  ru  r{  r|  )rZ   r  r  r
  r  r  r  rw  rx  ry  r  s              r   checkTruncatedSecondHeaderz/RFC3542AncillaryTest.checkTruncatedSecondHeader  s|    	!!&"5"5"(":":A	?!!&"5"5"("8"8!	=$(NN4>>36s8Z%I!WeT 	c"  t}}54&2C2C* 	 	, 	Wq)+21:(
IyV%8%89i&"4"4f6J6J!KLY4KK	I!a(QqT3'r?   c                 t    | j                  t        j                  t              t        j                         y r  )r>  r   r  r  re  rY   s    r   testSecondCmsgTrunc0z)RFC3542AncillaryTest.testSecondCmsgTrunc0  s.     	''(9(9*(E4:4E4E 	( 	Gr?   c                     | j                  | j                  j                  | j                               | j	                  t
               y r  r  rY   s    r   _testSecondCmsgTrunc0z*RFC3542AncillaryTest._testSecondCmsgTrunc0  r  r?   c                 Z    | j                  t        j                  t              dz          y rX  r>  r   r  r  rY   s    r   testSecondCmsgTrunc1z)RFC3542AncillaryTest.testSecondCmsgTrunc1  s"     	''(9(9*(E(IJr?   c                     | j                  | j                  j                  | j                               | j	                  t
               y r  r  rY   s    r   _testSecondCmsgTrunc1z*RFC3542AncillaryTest._testSecondCmsgTrunc1  r  r?   c                 h    | j                  t        j                  t              dt        z  z          y r  rD  rY   s    r   testSecondCmsgTrunc2Intz,RFC3542AncillaryTest.testSecondCmsgTrunc2Int  s+     	''(9(9*(E()J)7 	8r?   c                     | j                  | j                  j                  | j                               | j	                  t
               y r  r  rY   s    r   _testSecondCmsgTrunc2Intz-RFC3542AncillaryTest._testSecondCmsgTrunc2Int  r  r?   c                     | j                  t        j                  t              t        j                  d      z   dz
         y r  )r>  r   r  r  rU  rY   s    r   testSecondCmsgTruncLen0Minus1z2RFC3542AncillaryTest.testSecondCmsgTruncLen0Minus1  s9     	''(9(9*(E(.(:);=>)? 	@r?   c                     | j                  | j                  j                  | j                               | j	                  t
               y r  r  rY   s    r   _testSecondCmsgTruncLen0Minus1z3RFC3542AncillaryTest._testSecondCmsgTruncLen0Minus1  r  r?   c                 &   | j                   j                  t        j                  t        j                  d       | j                   j                  t        j                  t        j
                  d       | j                  j                          | j                  | j                   t        t              t        j                  t              t        j                  t              z   dz
        \  }}}}| j                  |t               | j                  || j                          | j#                  |dt        j$                         t        j&                  t        j(                  h}|j+                  d      \  }}}| j                  |t        j                         |j-                  |       | j                  t        |      t               t/        j.                  d      }	|	j1                  |       | j3                  |	d   d       | j5                  |	d   d       |re|j+                  d      \  }}}| j                  |t        j                         |j-                  |       | j7                  t        |      t               | j                  |g        y )Nr   Tr  r   rP   r2  )r  r  r   r  r
  r  rQ  r   r\  r  r  r  r  rU  r  rd  r   rt  re  r  r  popremover  ru  r{  r|  r  )
rZ   r
  r  r  r  
cmsg_typesrw  rx  ry  r  s
             r   testSecondCmsgTruncInDataz.RFC3542AncillaryTest.testSecondCmsgTruncInData  s   
 	!!&"5"5"(":":A	?!!&"5"5"("8"8!	=$(NNNNCHj)FOOJ,GG!K%M!WeT 	c"  t}}54&2C2CD((&*>*>?
+2;;q>(
IyV%8%89)$Y4KK	I!a(QqT3'/6{{1~,J	9Z)<)<=i(OOC	NJ7"%r?   c                     | j                  | j                  j                  | j                               | j	                  t
               y r  r  rY   s    r   _testSecondCmsgTruncInDataz/RFC3542AncillaryTest._testSecondCmsgTruncInData  r  r?   N)r2  r   r  )1ra   rb   rc   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.  r0  r2  r4  r6  r8  r:  r<  r>  r@  rB  rE  rG  rI  rK  rM  rO  rT  rV  rd   r?   r   r  r  S  s    I M+8 &-?- @- !! " &,(;_ME NE  ++ , &--+&-?D @ ,D
    ! ?B12"+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!&F ** +r?   r  c                       e Zd Zy)SendrecvmsgUDPTestBaseNra   rb   rc   rd   r?   r   rX  rX         	r?   rX  r  c                       e Zd Zy)SendmsgUDPTestNrY  rd   r?   r   r\  r\        r?   r\  r  c                       e Zd Zy)RecvmsgUDPTestNrY  rd   r?   r   r_  r_    r]  r?   r_  rz  c                       e Zd Zy)RecvmsgIntoUDPTestNrY  rd   r?   r   ra  ra    r]  r?   ra  c                       e Zd Zd Zy)SendrecvmsgUDP6TestBasec                 4    | j                  |d d |d d        y r>  r`  ra  s      r   rd  z+SendrecvmsgUDP6TestBase.checkRecvmsgAddress        	sU3BZ0r?   Nra   rb   rc   rd  rd   r?   r   rc  rc    s    1r?   rc  rP  rq  r(   c                       e Zd Zy)SendmsgUDP6TestNrY  rd   r?   r   rh  rh  "       	r?   rh  c                       e Zd Zy)RecvmsgUDP6TestNrY  rd   r?   r   rk  rk  (  ri  r?   rk  c                       e Zd Zy)RecvmsgIntoUDP6TestNrY  rd   r?   r   rm  rm  .  ri  r?   rm  r  c                       e Zd Zy)RecvmsgRFC3542AncillaryUDP6TestNrY  rd   r?   r   ro  ro  4       	r?   ro  c                       e Zd Zy)#RecvmsgIntoRFC3542AncillaryUDP6TestNrY  rd   r?   r   rr  rr  <  s     	r?   rr  c                       e Zd Zy)SendrecvmsgUDPLITETestBaseNrY  rd   r?   r   rt  rt  F  s    
 	r?   rt  c                       e Zd Zy)SendmsgUDPLITETestNrY  rd   r?   r   rv  rv  M  ri  r?   rv  c                       e Zd Zy)RecvmsgUDPLITETestNrY  rd   r?   r   rx  rx  S  ri  r?   rx  c                       e Zd Zy)RecvmsgIntoUDPLITETestNrY  rd   r?   r   rz  rz  Y  ri  r?   rz  c                       e Zd Zd Zy)SendrecvmsgUDPLITE6TestBasec                 4    | j                  |d d |d d        y r>  r`  ra  s      r   rd  z/SendrecvmsgUDPLITE6TestBase.checkRecvmsgAddressf  re  r?   Nrf  rd   r?   r   r|  r|  `  s    1r?   r|  c                       e Zd Zy)SendmsgUDPLITE6TestNrY  rd   r?   r   r  r  k  rp  r?   r  c                       e Zd Zy)RecvmsgUDPLITE6TestNrY  rd   r?   r   r  r  s  rp  r?   r  c                       e Zd Zy)RecvmsgIntoUDPLITE6TestNrY  rd   r?   r   r  r  {  rp  r?   r  c                       e Zd Zy)#RecvmsgRFC3542AncillaryUDPLITE6TestNrY  rd   r?   r   r  r    s     	r?   r  c                       e Zd Zy)'RecvmsgIntoRFC3542AncillaryUDPLITE6TestNrY  rd   r?   r   r  r    s     	r?   r  c                       e Zd Zy)SendrecvmsgTCPTestBaseNrY  rd   r?   r   r  r    r]  r?   r  c                       e Zd Zy)SendmsgTCPTestNrY  rd   r?   r   r  r    r]  r?   r  c                       e Zd Zy)RecvmsgTCPTestNrY  rd   r?   r   r  r    rZ  r?   r  c                       e Zd Zy)RecvmsgIntoTCPTestNrY  rd   r?   r   r  r    rZ  r?   r  c                       e Zd Zy)SendrecvmsgSCTPStreamTestBaseNrY  rd   r?   r   r  r    rZ  r?   r  z6IPPROTO_SCTP: [Errno 62] Protocol not supported on AIXrT   rB   rj  c                       e Zd Zy)SendmsgSCTPStreamTestNrY  rd   r?   r   r  r    ri  r?   r  c                        e Zd Z fdZ xZS )RecvmsgSCTPStreamTestc                     	 t         t        |           y # t        $ r9}|j                  t        j
                  k7  r | j                  d       Y d }~y d }~ww xY wNz4sporadic ENOTCONN (kernel issue?) - see issue #13876)ro   r  r*  r   r+  ENOTCONNr   rZ   r   rw   s     r   r*  z$RecvmsgSCTPStreamTest.testRecvmsgEOF  sL    	R'=? 	Rww%..(MMPQQ	R    	A/AAra   rb   rc   r*  r~   r   s   @r   r  r        R Rr?   r  c                        e Zd Z fdZ xZS )RecvmsgIntoSCTPStreamTestc                     	 t         t        |           y # t        $ r9}|j                  t        j
                  k7  r | j                  d       Y d }~y d }~ww xY wr  )ro   r  r*  r   r+  r  r   r  s     r   r*  z(RecvmsgIntoSCTPStreamTest.testRecvmsgEOF  sL    	R+TAC 	Rww%..(MMPQQ	Rr  r  r   s   @r   r  r    r  r?   r  c                       e Zd Zy)SendrecvmsgUnixStreamTestBaseNrY  rd   r?   r   r  r    r]  r?   r  rR  c                       e Zd Zy)SendmsgUnixStreamTestNrY  rd   r?   r   r  r    rZ  r?   r  c                       e Zd Zy)RecvmsgUnixStreamTestNrY  rd   r?   r   r  r    ri  r?   r  c                       e Zd Zy)RecvmsgIntoUnixStreamTestNrY  rd   r?   r   r  r    ri  r?   r  r  rt  c                       e Zd Zy)RecvmsgSCMRightsStreamTestNrY  rd   r?   r   r  r    rZ  r?   r  c                       e Zd Zy)RecvmsgIntoSCMRightsStreamTestNrY  rd   r?   r   r  r    ri  r?   r  c                   d     e Zd Z fdZej
                  Z eed      r	dZ	d Z
 xZS dZ	d Z
 xZS )InterruptedTimeoutBasec                     t         |           t        j                  t        j                  d       }| j	                  t        j                  t        j                  |       y )Nc                     ddz  S r  rd   )signumr  s     r   rz  z.InterruptedTimeoutBase.setUp.<locals>.<lambda>  s
    A r?   )ro   r[   r  r  ry   )rZ   orig_alrm_handlerrw   s     r   r[   zInterruptedTimeoutBase.setUp  s>    "MM&..*EGv~~7HIr?   	setitimerg?c                 L    t        j                  t         j                  |       y r<   )r  r  ITIMER_REALrZ   secondss     r   setAlarmzInterruptedTimeoutBase.setAlarm  s    V//9r?   r   c                 .    t        j                  |       y r<   )r  r  r  s     r   r  zInterruptedTimeoutBase.setAlarm  s    LL!r?   )ra   rb   rc   r[   r   ru  rL   r   r  
alarm_timer  r~   r   s   @r   r  r    s8    
J &&G
 v{#
	: 
	"r?   r  siginterruptr  r  z+Don't have signal.alarm or signal.setitimerc                        e Zd Z fdZd Zd Zd Zd Zd Z e	e
j                  d      d        Z e	e
j                  d	      d
        Z xZS )InterruptedRecvTimeoutTestc                 l    t         |           | j                  j                  | j                         y r<   )ro   r[   rU   r  rL   r6  s    r   r[   z InterruptedRecvTimeoutTest.setUp!  s"    		T\\*r?   c                     	 | j                  | j                         | j                  t              5 } ||i | d d d        | j                  d       y # 1 sw Y   xY w# | j                  d       w xY wr   )r  r  r  r  rZ   rS  ru   rv   r  s        r   checkInterruptedRecvz/InterruptedRecvTimeoutTest.checkInterruptedRecv%  sg    	MM$//*""#45 &d%f%& MM!& & MM!s!   0A! 	AA! AA! !A4c                 P    | j                  | j                  j                  d       y r  )r  rU   r  rY   s    r   testInterruptedRecvTimeoutz5InterruptedRecvTimeoutTest.testInterruptedRecvTimeout/  s    !!$))..$7r?   c                 b    | j                  | j                  j                  t        d             y r  )r  rU   	recv_intor  rY   s    r   testInterruptedRecvIntoTimeoutz9InterruptedRecvTimeoutTest.testInterruptedRecvIntoTimeout2  s     !!$))"5"5yGr?   c                 P    | j                  | j                  j                  d       y r  )r  rU   r  rY   s    r   testInterruptedRecvfromTimeoutz9InterruptedRecvTimeoutTest.testInterruptedRecvfromTimeout5  s    !!$))"4"4d;r?   c                 b    | j                  | j                  j                  t        d             y r  )r  rU   r  r  rY   s    r   "testInterruptedRecvfromIntoTimeoutz=InterruptedRecvTimeoutTest.testInterruptedRecvfromIntoTimeout8  s     !!$))"9"99T?Kr?   r  c                 P    | j                  | j                  j                  d       y r  )r  rU   r  rY   s    r   testInterruptedRecvmsgTimeoutz8InterruptedRecvTimeoutTest.testInterruptedRecvmsgTimeout;  s    !!$))"3"3T:r?   rz  c                 d    | j                  | j                  j                  t        d      g       y r  )r  rU   rz  r  rY   s    r   !testInterruptedRecvmsgIntoTimeoutz<InterruptedRecvTimeoutTest.testInterruptedRecvmsgIntoTimeout?  s#    !!$))"8"89T?:KLr?   )ra   rb   rc   r[   r  r  r  r  r  r  r   r  r  r~   r   s   @r   r  r    sc    +8H<L &--+; ,; &--0M 1Mr?   r  c                        e Zd Z fdZd Zd Z ej                  dd      d        Z ej                  dd      d        Z	 ej                  dd       e
ej                  d      d	               Z xZS )
InterruptedSendTimeoutTestc                    t         |           | j                         | _        | j	                  | j                  j
                         t        j                  | j                        }|j                          | j                  j                         \  | _        }| j	                  | j                  j
                         |j                          | j                  j                  | j                         y )N)target)ro   r[   r,  r  ry   r!   rq   Thread	doConnectstartrU   r   r  r  r  rL   )rZ   
cli_threadr  rw   s      r   r[   z InterruptedSendTimeoutTest.setUpO  s    ),,- %%T^^<
"ii..0t++,!!$,,/r?   c                 N    | j                   j                  | j                         y r<   )r  r  r2  rY   s    r   r  z$InterruptedSendTimeoutTest.doConnect]  s    t~~.r?   c                     	 | j                  t              5 }	 | j                  | j                          ||i | $# 1 sw Y   nxY w	 | j                  d       y # | j                  d       w xY wr   )r  r  r  r  r  s        r   checkInterruptedSendz/InterruptedSendTimeoutTest.checkInterruptedSend`  sm    	""#45 *MM$//2$)&) * * *
 MM!DMM!s   A &=AA A/r  r*  c                 P    | j                  | j                  j                  d       y r  )r  r  r  rY   s    r   testInterruptedSendTimeoutz5InterruptedSendTimeoutTest.testInterruptedSendTimeoutm  s    !!$.."5"5x@r?   c                 f    | j                  | j                  j                  d| j                         y r  )r  r  r  r2  rY   s    r   testInterruptedSendtoTimeoutz7InterruptedSendTimeoutTest.testInterruptedSendtoTimeoutq  s'     	!!$.."7"7"&..	2r?   r  c                 R    | j                  | j                  j                  dg       y r  )r  r  r  rY   s    r   testInterruptedSendmsgTimeoutz8InterruptedSendTimeoutTest.testInterruptedSendmsgTimeoutz  s      	!!$.."8"88*Er?   )ra   rb   rc   r[   r  r  r   requires_mac_verr  r  r  r   r  r~   r   s   @r   r  r  F  s    0/
 Wb!$A %A Wb!$2 %2 Wb!$&--+F , %Fr?   r  c                       e Zd Zd Zd Zy)TCPCloserTestc                 X   | j                   j                         \  }}|j                          | j                  }t	        j                  |gg g d      \  }}}| j                  ||g       | j                  |j                  d      d       |j                          |j                          y )N      ?r   r?   )rU   r   r!   r   r  r  r  )rZ   r   r  sdr  rg  r  s          r   	testClosezTCPCloserTest.testClose  s    YY%%'
d

XX!=="r2s;eSt$S) 	



r?   c                     | j                   j                  t        | j                  f       t	        j
                  d       y Nr  )r   r  r   rW   r   r   rY   s    r   
_testClosezTCPCloserTest._testClose  s(    $		*+

3r?   N)ra   rb   rc   r  r  rd   r?   r   r  r    s    r?   r  c                   >    e Zd Zd
dZd Zd Zd Zd Zd Zd Z	d Z
y	)BasicSocketPairTestc                 2    t         j                  | |       y r   )r!  rp   r   s     r   rp   zBasicSocketPairTest.__init__  s    <r?   c                    | j                  |t        j                         t        t        d      r+| j                  |j                  t        j
                         n*| j                  |j                  t        j                         | j                  |j                  t        j                         | j                  |j                  d       y )NrR  r   )
r  r   r   r  r  rR  rT   r}  rB   r  r\  s     r   _check_defaultsz#BasicSocketPairTest._check_defaults  s~    dFMM269%T[[&..9T[[&..9F$6$67Q'r?   c                 :    | j                  | j                         y r<   )r  r   rY   s    r   _testDefaultsz!BasicSocketPairTest._testDefaults  s    TXX&r?   c                 :    | j                  | j                         y r<   )r  rU   rY   s    r   testDefaultsz BasicSocketPairTest.testDefaults  s    TYY'r?   c                 f    | j                   j                  d      }| j                  |t               y r  )rU   r  r  r  r	  s     r   r  zBasicSocketPairTest.testRecv  r  r?   c                 B    | j                   j                  t               y r<   )r   r  r  rY   s    r   r  zBasicSocketPairTest._testRecv  s    cr?   c                 B    | j                   j                  t               y r<   )rU   r  r  rY   s    r   testSendzBasicSocketPairTest.testSend  s    		sr?   c                 f    | j                   j                  d      }| j                  |t               y r  )r   r  r  r  r	  s     r   	_testSendzBasicSocketPairTest._testSend  s$    hhmmD!c"r?   Nr   )ra   rb   rc   rp   r  r  r  r  r  r  r  rd   r?   r   r  r    s*    =('(##r?   r  c                      e Zd ZddZd Zd Zd Zej                  d        Z	 ej                  e      Z
 ej                   eed      d       ej                  dd	d
      d               Zd Zd Zd Zd Zd Zd Zd Zd Zd Zy)NonBlockingTCPTestsc                 d    t        j                         | _        t        j	                  | |       y r   )rq   r   eventr   rp   r   s     r   rp   zNonBlockingTCPTests.__init__  s#    __&
&&t
&Cr?   c                 x   | j                  | j                  j                         |       |dk7  }| j                  |j                         |       t        e|d u }t	        j                  |t        j
                  t        j                        }| j                  t        |t        j                  z         |       y y )N        )	r  rU   r  getblockingr   F_GETFLr  
O_NONBLOCKbool)rZ   rM  rL   blockingfd_blockingflags         r   assert_sock_timeoutz'NonBlockingTCPTests.assert_sock_timeout  s    --/9sN))+X6 #d?K;;tU]]BMMBDdR]]&:!;;[I r?   c                    | j                   j                  d       | j                  | j                   d        | j                   j                  d       | j                  | j                   d       | j                   j                  d        | j                  | j                   d        | j                   j                  d       | j                  | j                   d       | j                   j                  d       | j                  | j                   d       | j                   j                  d       | j                  | j                   d       y )NTFr  r   r  )rU   ro  r  r  rY   s    r   testSetBlockingz#NonBlockingTCPTests.testSetBlocking  s    		d#  D1		e$  C0		T"  D1		Q  A.		R   B/		Q  A.r?   c                      y r<   rd   rY   s    r   _testSetBlockingz$NonBlockingTCPTests._testSetBlocking  r'  r?   c                    dd l }|j                  |j                  k\  r| j                  d       | j                  j                  d       | j                  | j                  j                         d       | j                  j                  |j                  dz          | j                  | j                  j                                y )Nr   zneeds UINT_MAX < ULONG_MAXFr  r   )	r^  r%  r  r   rU   ro  r  r  r  r&  s     r   testSetBlocking_overflowz,NonBlockingTCPTests.testSetBlocking_overflow  s     	!4!44MM67		e$--/5		i00145$))..01r?   rn  ztest needs socket.SOCK_NONBLOCKr         c                     | j                   j                          t        j                  t        j                  t        j                  t        j
                  z        | _         | j                  | j                   d       y r   )rU   r!   r   rT   rB   rn  r  rY   s    r   testInitNonBlockingz'NonBlockingTCPTests.testInitNonBlocking  sQ    
 			MM&.."("4"4v7K7K"KM	  A.r?   c                      y r<   rd   rY   s    r   _testInitNonBlockingz(NonBlockingTCPTests._testInitNonBlocking  r'  r?   c                 (   t        d       5  | j                  j                  d       | j                  j                         \  }}| j	                  |j
                         | j                  |j                                d d d        y # 1 sw Y   y xY w)Nr  )rN   rU   r  r   ry   r!   r  r  r  s      r   testInheritFlagsBlockingz,NonBlockingTCPTests.testInheritFlagsBlocking  sn     &d+ 	1II  $))+JD$OODJJ'doo/0		1 	1 	1s   A3BBc                 Z    | j                   j                  t        | j                  f       y r<   r   r  r   rW   rY   s    r   _testInheritFlagsBlockingz-NonBlockingTCPTests._testInheritFlagsBlocking
      $		*+r?   c                 .   d}t        |      5  | j                  j                  d       | j                  j                         \  }}| j	                  |j
                         | j                  |j                         |       d d d        y # 1 sw Y   y xY w)Ng      4@r  )rN   rU   r  r   ry   r!   r  r  )rZ   default_timeoutr   r  s       r   testInheritFlagsTimeoutz+NonBlockingTCPTests.testInheritFlagsTimeout  sy     %o6 	AII  $))+JD$OODJJ'T__.@		A 	A 	As   A4BBc                 Z    | j                   j                  t        | j                  f       y r<   r  rY   s    r   _testInheritFlagsTimeoutz,NonBlockingTCPTests._testInheritFlagsTimeout  r  r?   c                    | j                   j                  d       t        j                         }| j	                  t
              5  | j                   j                         \  }}d d d        t        j                         |z
  }| j                  |d       | j                  j                          t        j                  | j                   gg g t        j                        \  }}}| j                   |vr| j                  d       | j                   j                         \  }}| j                  |j                         | j!                  |j#                                y # 1 sw Y   xY w)NFr  z'Error trying to do accept after select.)rU   ro  r   	monotonicr  BlockingIOErrorr   r  r  r   r  r   LONG_TIMEOUTr  ry   r!   r  r  )rZ   
start_timer   r  dtr  rg  r  s           r   
testAcceptzNonBlockingTCPTests.testAccept  s   		e$ ^^%
/ 	,))+JD$	,^^
*C 

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

#$//+,	, 	,s   EE#c                     | j                   j                          | j                  j                  t        | j
                  f       y r<   )r  r   r   r  r   rW   rY   s    r   _testAcceptzNonBlockingTCPTests._testAccept1  s-     	

$		*+r?   c                 B   | j                   j                         \  }}| j                  |j                         |j	                  d       | j                  t              5  |j                  t        t                    }d d d        | j                  j                          t        j                  |gg g t        j                        \  }}}||vr| j                  d       |j                  t        t                    }| j!                  |t               y # 1 sw Y   xY w)NFz0Error during select call to non-blocking socket.)rU   r   ry   r!   ro  r  r  r  r  r  r  r   r  r   r   r  r  )rZ   r   r  r
  r  rg  r  s          r   r  zNonBlockingTCPTests.testRecv8  s    YY%%'
d

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

!==$R9M9MNeStIIHI iiC!c"	& 	&s   DDc                     | j                   j                  t        | j                  f       | j                  j                          | j                   j                  t               y r<   )r   r  r   rW   r  r   r  r  rY   s    r   r  zNonBlockingTCPTests._testRecvL  sA    $		*+ 	

 	r?   Nr   )ra   rb   rc   rp   r  r  r	  r   r  r  _testSetBlocking_overflowr   r  r   r   requires_linux_versionr  r  r  r  r  r  r#  r%  r  r  rd   r?   r   r  r    s    DJ"/( 
2 
2 !5 4 45E FX9:<#W##Aq"-/ .</1,	A,-,,#(r?   r  c                       e Zd Z	 dZdZdZdZdZeZ	dZ
eZd dZd Zd	 Zd
 Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Z d Z!d Z"d Z#d Z$y)!FileObjectClassTestCaserZ  r	   strictNr   r7  c                 2    t         j                  | |       y r   r  r   s     r   rp   z FileObjectClassTestCase.__init__m  r  r?   c                 n   t        d      D cg c]  }t        j                          c}\  | _        | _        | _        | _        t        j                  |        | j                  j                  | j                  | j                  | j                  | j                  | j                        | _        y c c}w )Nr  r;  errorsnewline)rC  rq   r   evt1evt2serv_finishedcli_finishedr  r[   r  r&  	read_moder   r;  r0  r1  	read_file)rZ   rP   s     r   r[   zFileObjectClassTestCase.setUpp  s    ',QxG1"#IOOG1C	49d0$2C!!$'//NNDLL}}[[ll	 0 $G1s   B2c                     | j                   j                          | j                  j                          | j	                  | j                  j
                         d | _        t        j                  |        y r<   )r4  r   r7  r!   r  closedr  r^   rY   s    r   r^   z FileObjectClassTestCase.tearDownz  sO     --.$$T*r?   c                     t         j                  |        | j                  j                  | j                  | j
                  | j                  | j                  | j                        | _	        y )Nr/  )
r  r   r  r&  
write_moder   r;  r0  r1  
write_filerY   s    r   r   z#FileObjectClassTestCase.clientSetUp  sM    ''-..11OOT\\}}[[ll	 2 $r?   c                     | j                   j                          | j                  j                          | j	                  | j                  j
                         d | _        t        j                  |        y r<   )r5  r   r<  r!   r  r9  r  r   rY   s    r   r   z&FileObjectClassTestCase.clientTearDown  sO    ../**40r?   c                    | j                   j                  d       | j                  j                  d       | j	                  t
        | j                  j                  d       | j	                  t              5 }| j                  j                  d       d d d        | j                  dt        j                               y # 1 sw Y   /xY w)Nr   r   z!cannot read from timed out object)
r  r  r7  r  r  r  r   r  r  r  )rZ   ctxs     r   testReadAfterTimeoutz,FileObjectClassTestCase.testReadAfterTimeout  s     	  #A,(;(;Q?w' 	#3NN"	#93s}};MN	# 	#s   7CC
c                     | j                   j                  | j                  dd        | j                   j                          | j                  j                          y )Nr   r   )r<  rg  	write_msgflushr4  r   rY   s    r   _testReadAfterTimeoutz-FileObjectClassTestCase._testReadAfterTimeout  sA    dnnQq12!r?   c                     | j                   j                  t        | j                        dz
        }| j                   j                  d      }||z   }| j	                  || j                         y r  )r7  r  r  read_msgr  )rZ   	first_seg
second_segr
  s       r   testSmallReadz%FileObjectClassTestCase.testSmallRead  sV    NN''DMM(:1(<=	^^((+
*$dmm,r?   c                     | j                   j                  | j                         | j                   j                          y r<   r<  rg  rB  rC  rY   s    r   _testSmallReadz&FileObjectClassTestCase._testSmallRead  (    dnn-r?   c                 p    | j                   j                         }| j                  || j                         y r<   )r7  r  r  rF  r	  s     r   testFullReadz$FileObjectClassTestCase.testFullRead  s(    nn!!#dmm,r?   c                     | j                   j                  | j                         | j                   j                          y r<   )r<  rg  rB  r!   rY   s    r   _testFullReadz%FileObjectClassTestCase._testFullRead  rM  r?   c                      t        | j                               }	 | j                  j                  d      }|sn||z  }$| j	                  || j                         y rX  )r}  rF  r7  r  r  )rZ   r}  chars      r   testUnbufferedReadz*FileObjectClassTestCase.testUnbufferedRead  sV    !d4==!#>>&&q)D4KC	 
 	dmm,r?   c                     | j                   j                  | j                         | j                   j                          y r<   rK  rY   s    r   _testUnbufferedReadz+FileObjectClassTestCase._testUnbufferedRead  rM  r?   c                 p    | j                   j                         }| j                  || j                         y r<   )r7  readliner  rF  rZ   lines     r   testReadlinez$FileObjectClassTestCase.testReadline  s(    ~~&&(t}}-r?   c                     | j                   j                  | j                         | j                   j                          y r<   rK  rY   s    r   _testReadlinez%FileObjectClassTestCase._testReadline  rM  r?   c                     | j                   j                          | j                  j                         }| j	                  || j
                         y r<   )r  r!   r7  r  r  rF  r	  s     r   testCloseAfterMakefilez.FileObjectClassTestCase.testCloseAfterMakefile  s8    nn!!#dmm,r?   c                     | j                   j                  | j                         | j                   j                          y r<   rK  rY   s    r   _testCloseAfterMakefilez/FileObjectClassTestCase._testCloseAfterMakefile  rM  r?   c                    | j                   j                          | j                  j                  t	        t
                    }t        | j                  t              r|j                         }| j                  || j                         y r<   )r7  r!   r  r  r  r  r|  rF  r  decoder  r	  s     r   testMakefileAfterMakefileClosez6FileObjectClassTestCase.testMakefileAfterMakefileClose  sW    mm  S*dmmS)**,Cdmm,r?   c                     | j                   j                  | j                         | j                   j                          y r<   rK  rY   s    r   _testMakefileAfterMakefileClosez7FileObjectClassTestCase._testMakefileAfterMakefileClose  rM  r?   c                 P    | j                  | j                  j                          y r<   )r  r7  r9  rY   s    r   testClosedAttrz&FileObjectClassTestCase.testClosedAttr  s    DNN1112r?   c                 P    | j                  | j                  j                          y r<   )r  r<  r9  rY   s    r   _testClosedAttrz'FileObjectClassTestCase._testClosedAttr  s    DOO2223r?   c                     | j                  | j                  j                  | j                         | j                  | j                  j                  | j
                  j                                y r<   )r  r7  r9  r6  r  r  r  rY   s    r   testAttributesz&FileObjectClassTestCase.testAttributes  sG    ,,dnn=,,dmm.B.B.DEr?   c                     | j                  | j                  j                  | j                         | j                  | j                  j                  | j
                  j                                y r<   )r  r<  r9  r;  r  r  r  rY   s    r   _testAttributesz'FileObjectClassTestCase._testAttributes  sG    --t?--t~~/D/D/FGr?   c                    | j                   j                          | j                  t        | j                   j                         | j
                  j                          | j                  t        | j
                  j                         y r<   )r7  r!   r  r  r  r  r   r   rY   s    r   testRealClosez%FileObjectClassTestCase.testRealClose  sV    *dnn&;&;<'4==#<#<=r?   c                      y r<   rd   rY   s    r   _testRealClosez&FileObjectClassTestCase._testRealClose  r'  r?   r   )%ra   rb   rc   r   r;  r0  r1  r6  r  rF  r;  rB  rp   r[   r^   r   r   r@  rD  rI  rL  rO  rQ  rT  rV  r[  r]  r_  ra  rd  rf  rh  rj  rl  rn  rp  rr  rd   r?   r   r+  r+  W  s    	 GHFGIHJIB$+$1
O"
- -
 - .
 - - 34FH>r?   r+  c                   N    e Zd Z	 dZd Zd Zd Zd Zd Zd Z	d Z
d	 Zd
 Zd Zy)!UnbufferedFileObjectClassTestCaser   c                 *   | j                   j                         }| j                  |d| j                  z          | j                  j                  dd      | _         | j                   j                         }| j                  |d| j                  z          y )N   A. r   r      B. )r7  rX  r  rB  r  r&  rY  s     r   testUnbufferedReadlinez8UnbufferedFileObjectClassTestCase.testUnbufferedReadline  sp    ~~&&(v67//a8~~&&(v67r?   c                     | j                   j                  d| j                  z          | j                   j                  d| j                  z          | j                   j                          y )Nrv  rw  rK  rY   s    r   _testUnbufferedReadlinez9UnbufferedFileObjectClassTestCase._testUnbufferedReadline  sH    ft~~56ft~~56r?   c                 0   | j                   j                          | j                   j                  d      }| j                  || j                         | j
                  j                          | j                  t        | j                   j                  d       y r  )r  r!   r  r  rF  r7  r  r   r	  s     r   testMakefileClosez3UnbufferedFileObjectClassTestCase.testMakefileClose  sf    mm  &dmm,'4==#5#5t<r?   c                     | j                   j                  | j                         | j                   j                          y r<   rK  rY   s    r   _testMakefileClosez4UnbufferedFileObjectClassTestCase._testMakefileClose  rM  r?   c                     t        j                  | j                        }| j                  j	                          t        j                  | j                        }| j                  |dz
  |       y rX  )rB  r@  r  r7  r!   r  )rZ   refcount_beforerefcount_afters      r   testMakefileCloseSocketDestroyz@UnbufferedFileObjectClassTestCase.testMakefileCloseSocketDestroy   sK    //$--871,n=r?   c                      y r<   rd   rY   s    r   _testMakefileCloseSocketDestroyzAUnbufferedFileObjectClassTestCase._testMakefileCloseSocketDestroy&  r'  r?   c                    | j                   j                  d       | j                  | j                  j	                  t        d            d        | j                  | j                  j                  t        | j                        dz
        d        | j                  j                          | j                  j                  d       | j                  j                  t        | j                        dz
        }|Ft        j                  d       | j                  j                  t        | j                        dz
        }t        d      }| j                  j	                  |      }| j                  |d       ||d | z   }| j                  || j                         | j                  | j                  j	                  t        d            d        | j                  | j                  j                  d      d        y )NFr  r   r  g      ?rJ  r   )r  ro  r  r7  readintor  r  r  rF  r2  r   r3  r   r   r   )rZ   rG  r}  r]  r
  s        r   testSmallReadNonBlockingz:UnbufferedFileObjectClassTestCase.testSmallReadNonBlocking-  si   !!%(002?F,,S-?!-CDdK				sNN''DMM(:Q(>?	JJsO++C,>,BCImNN##C(A#bq'!dmm,002?F,,Q/6r?   c                 "   | j                   j                  d       | j                  j                  | j                         | j                  j                          | j                  j                          | j                  j                  d       y )Nr        @)	r2  r   r<  rg  rB  rC  r3  r   r4  rY   s    r   _testSmallReadNonBlockingz;UnbufferedFileObjectClassTestCase._testSmallReadNonBlocking@  s[    		sdnn-		 	$r?   c                     | j                   j                  d       | j                  r| j                  | j                         y y )Nr  )r5  r   serv_skippedr   rY   s    r   testWriteNonBlockingz6UnbufferedFileObjectClassTestCase.testWriteNonBlockingI  s8    s# MM$++, r?   c                 \   d | _         | j                  j                  d       dt        j                  z  }d}| j
                  j                  |      }| j                  |d       t        |      D ]3  }| j
                  j                  |      }| y | j                  |d       5 d| _         y )NFr  r  r   z$failed to saturate the socket buffer)	r  r  ro  r   r  r<  rg  r2  rC  )rZ   BIGLIMITr]  rP   s        r   _testWriteNonBlockingz7UnbufferedFileObjectClassTestCase._testWriteNonBlockingP  s     ""5)W***OO!!#&1a u 
	GA%%c*Ayq!$
	G !GDr?   N)ra   rb   rc   r   rx  rz  r|  r~  r  r  r  r  r  r  rd   r?   r   rt  rt    sA    < G8 
= >7&%-Gr?   rt  c                       e Zd ZdZy)#LineBufferedFileObjectClassTestCaser   Nra   rb   rc   r   rd   r?   r   r  r  f      Gr?   r  c                       e Zd ZdZy)$SmallBufferedFileObjectClassTestCaser   Nr  rd   r?   r   r  r  k  r  r?   r  c                   @    e Zd Z	 dZej                  d      ZdZeZdZ	y)"UnicodeReadFileObjectClassTestCaser   r	   r7  r  N
ra   rb   rc   r6  r  rc  rF  r;  rB  r1  rd   r?   r   r  r  p  s'    GIzz'"HJIGr?   r  c                   @    e Zd Z	 dZeZdZej                  d      ZdZ	y)#UnicodeWriteFileObjectClassTestCaser   r6  r	   r  N)
ra   rb   rc   r6  r  rF  r;  rc  rB  r1  rd   r?   r   r  r  z  s'    GIHJ

7#IGr?   r  c                   ^    e Zd Z	 dZej                  d      ZdZej                  d      ZdZ	y)'UnicodeReadWriteFileObjectClassTestCaser   r	   r6  r  Nr  rd   r?   r   r  r    s0    GIzz'"HJ

7#IGr?   r  c                       e Zd Z	 d Zy)NetworkConnectionTestc                 z    t        j                  t        | j                  f      | _        | j                  | _        y r<   )r   create_connectionr   rW   r   r  rY   s    r   r   z!NetworkConnectionTest.clientSetUp  s*     ++T499,=>r?   N)ra   rb   rc   r   rd   r?   r   r  r    s
    #"r?   r  c                       e Zd Zy)BasicTCPTest2NrY  rd   r?   r   r  r    s    r?   r  c                       e Zd Z G d dej                        Zej                  d        Zej                  d        Z
ej                  d        Zd Zd Zy)	NetworkConnectionNoServerc                       e Zd Zd Zy)$NetworkConnectionNoServer.MockSocketc                     t        d      )Nz	timed out)r  rW  s     r   r  z,NetworkConnectionNoServer.MockSocket.connect  s    {++r?   N)ra   rb   rc   r  rd   r?   r   
MockSocketr    s    	,r?   r  c              #      K   	 t         j                   }| j                  t         _         	 d  |t         _         y # |t         _         w xY wwr<   )r   r  )rZ   
old_sockets     r   mocked_socket_modulez.NetworkConnectionNoServer.mocked_socket_module  s3     8]]
	'&FMJFMs   'A
: A
AA
c                    t        j                         }t        j                  t        j                  t        j                        }| j                  |j                         | j                  t              5 }|j                  t        |f       d d d        | j                  j                  j                  t        j                         y # 1 sw Y   >xY wr<   )r   r  r   rT   rB   ry   r!   r  r   r  r   r  r  r+  ECONNREFUSED)rZ   rW   r   r  s       r   test_connectz&NetworkConnectionNoServer.test_connect  s    --/mmFNNF,>,>?		"w' 	&2KKt%	&++U-?-?@	& 	&s   7CCc                 *   t        j                         }| j                  t              5 }t	        j
                  t        |f       d d d        t        j                         }| j                  j                  j                  |       y # 1 sw Y   DxY wr<   )r   r  r  r   r   r  r   get_socket_conn_refused_errsr  r  r+  )rZ   rW   r  expected_errnoss       r   test_create_connectionz0NetworkConnectionNoServer.test_create_connection  sq     --/w' 	32$$dD\2	3" (DDFbll((/:%	3 	3s   B		Bc                    t        j                         }	 t        j                  t        |fd       | j                  d       | j                  t               |j                  D ]  }| j                  |t                t        j                  d|dt        j                        }| j                  t        |      t        |j                               y # t        $ r}|}Y d }~d }~ww xY w)NT)
all_errorszexpected connection to failr  r   )r   r  r   r  r   r  ExceptionGroupr  
exceptionsr   r  rB   r  r  )rZ   rW   r   eg	addressess        r   !test_create_connection_all_errorsz;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 	C+C&&C+c                 D   | j                         5  	 t        j                  t        df       | j	                  d       d d d        y # t
        $ r Y t        $ r8}t        j                  s|j                  t        j                  k7  r Y d }~Od }~ww xY w# 1 sw Y   y xY w)Nr
   zTimeoutError not raised)r  r   r  r   r  r  r   r   r  r+  EAFNOSUPPORTr  s     r   test_create_connection_timeoutz8NetworkConnectionNoServer.test_create_connection_timeout  s     &&( 		55(($6 		34		5 		5     --e>P>P1P 2Q		5 		5s?   BAB	BBB.B	BBBBN)ra   rb   rc   r   r  
contextlibcontextmanagerr  r   skip_if_tcp_blackholer  r  r  r  rd   r?   r   r  r    sl    ,V]] , ' ' ((A )A ((; );0=$5r?   r  c                   b    e Zd ZddZd Zd Zd ZeZd ZeZ	d Z
eZd ZeZd ZeZd	 ZeZd
 Zy)NetworkConnectionAttributesTestc                 \    t         j                  | |       t        j                  |        y r   r   r   s     r   rp   z(NetworkConnectionAttributesTest.__init__  r   r?   c                 6    t        j                         | _        y r<   )r   r  source_portrY   s    r   r   z+NetworkConnectionAttributesTest.clientSetUp  s    (99;r?   c                 p    | j                   j                          d | _         t        j                  |        y r<   r   rY   s    r   r   z.NetworkConnectionAttributesTest.clientTearDown  r   r?   c                 ^    | j                   j                         \  }}|j                          y r<   )rU   r   r!   r  s      r   _justAcceptz+NetworkConnectionAttributesTest._justAccept  s!    YY%%'
d

r?   c                    t        j                  t        | j                  ft        j
                        | _        | j                  | j                  j                         | j                  | j                  j                  d       y )Nr  r   )r   r  r   rW   r   ru  r   ry   r!   r  r  rY   s    r   _testFamilyz+NetworkConnectionAttributesTest._testFamily  sT    ++T499,=$+$<$<>'!,r?   c                 J   t        j                  t        | j                  ft        j
                  d| j                  f      | _        | j                  | j                  j                         | j                  | j                  j                         d   | j                         y )Nr  )rL   source_addressr   )r   r  r   rW   r   ru  r  r   ry   r!   r  r   rY   s    r   _testSourceAddressz2NetworkConnectionAttributesTest._testSourceAddress  su    ++T499,=$+$<$<,.0@0@+AC 	'--/2D4D4DEr?   c                    | j                  t        j                         d u        t        j                  d       	 t        j                  t
        | j                  f      | _        | j                  | j                  j                         t        j                  d        | j                  | j                  j                         d       y # t        j                  d        w xY w)Nr`  r  r   rJ   rK   r  r   rW   r   ry   r!   r  r  rY   s    r   _testTimeoutDefaultz3NetworkConnectionAttributesTest._testTimeoutDefault  s    002d:;  $	+//tyy0ABDHOODHHNN+$$T*,,.3 $$T*s   AC C"c                    | j                  t        j                         d u        t        j                  d       	 t        j                  t
        | j                  fd       | _        | j                  | j                  j                         t        j                  d        | j                  | j                  j                         d        y # t        j                  d        w xY wN   r  r  rY   s    r   _testTimeoutNonez0NetworkConnectionAttributesTest._testTimeoutNone  s    002d:;  $	+//tyy0A4PDHOODHHNN+$$T*,,.5 $$T*s   AC C$c                     t        j                  t        | j                  fd      | _        | j                  | j                  j                         d       y r  )r   r  r   rW   r   r  r  rY   s    r   _testTimeoutValueNamedz6NetworkConnectionAttributesTest._testTimeoutValueNamed*  s<    ++T499,=rJ,,.3r?   c                     t        j                  t        | j                  fd      | _        | j                  | j                  j                         | j                  | j                  j                         d       y )Nr  )	r   r  r   rW   r   ry   r!   r  r  rY   s    r   _testTimeoutValueNonamedz8NetworkConnectionAttributesTest._testTimeoutValueNonamed/  sP    ++T499,=rB',,.3r?   Nr   )ra   rb   rc   rp   r   r   r  
testFamilyr  testSourceAddressr  testTimeoutDefaultr  testTimeoutNoner  testTimeoutValueNamedr  testTimeoutValueNonamedr  rd   r?   r   r  r    sc    &<,
 J- $F %	4 "O	6 (4 *4r?   r  c                   6    e Zd ZddZd Zd Zd ZeZd Zd Z	y)	NetworkConnectionBehaviourTestc                 \    t         j                  | |       t        j                  |        y r   r   r   s     r   rp   z'NetworkConnectionBehaviourTest.__init__7  r   r?   c                      y r<   rd   rY   s    r   r   z*NetworkConnectionBehaviourTest.clientSetUp;  r'  r?   c                 p    | j                   j                          d | _         t        j                  |        y r<   r   rY   s    r   r   z-NetworkConnectionBehaviourTest.clientTearDown>  r   r?   c                     | j                   j                         \  }}| j                  |j                         t	        j
                  d       |j                  d       y )Nr      done!)rU   r   ry   r!   r   r   r  r  s      r   testInsideTimeoutz0NetworkConnectionBehaviourTest.testInsideTimeoutC  s?    YY%%'
d

#

1		(r?   c                     t        j                  t        | j                  f      x| _        }|j                  d      }| j                  |d       y )Nr  r  )r   r  r   rW   r   r  r  )rZ   rM  r  s      r   _testInsideTimeoutz1NetworkConnectionBehaviourTest._testInsideTimeoutJ  s?     22D$))3DEE4yy|x(r?   c                     t        j                  t        | j                  fd      x| _        | j                  t        fd       y )Nr   r  c                  &     j                  d      S )Nr  )r  )rM  s   r   rz  zDNetworkConnectionBehaviourTest._testOutsideTimeout.<locals>.<lambda>Q  s    		! r?   )r   r  r   rW   r   r  r  r\  s    @r   _testOutsideTimeoutz2NetworkConnectionBehaviourTest._testOutsideTimeoutO  s6     22D$))3DaPP4,(<=r?   Nr   )
ra   rb   rc   rp   r   r   r  testOutsideTimeoutr  r  rd   r?   r   r  r  5  s(    &,

 +)
>r?   r  c                   X    e Zd Zd Zd Z ej                   eed      d      d        Z	y)TCPTimeoutTestc                 >      fd} j                  t        |d       y )Nc                  p    j                   j                  d       j                   j                          y r  )rU   r  r   ru   rv   rZ   s     r   raise_timeoutz4TCPTimeoutTest.testTCPTimeout.<locals>.raise_timeoutW  s%    II  %IIr?   z*Error generating a timeout exception (TCP)r  r  rZ   r  s   ` r   testTCPTimeoutzTCPTimeoutTest.testTCPTimeoutV  s     	 	,J	Lr?   c                    d}	 | j                   j                  d       | j                   j                         }|s| j	                  d       y y # t        $ r | j	                  d       Y 1t
        $ r d}Y = | j	                  d       Y QxY w)NFr  z%caught timeout instead of error (TCP)Tz!caught unexpected exception (TCP)z3accept() returned success when we did not expect it)rU   r  r   r  r  r   rZ   okr  s      r   testTimeoutZerozTCPTimeoutTest.testTimeoutZero]  s    	;II  %))""$C IIKL   	?II=> 	B	;II9:s   5A B
*
B
6B
r  ztest needs signal.alarm()c           
      :   | j                   j                  d        G d dt              fd}t        j                  t        j                  |      }	 	 t        j
                  d       | j                   j                         }| j                  d       t        j
                  d       	 t        j                  t        j                  |       y # t        $ r | j                  d       Y W$ r Y ]t        $ r?}| j                  dt        |      d	|d
t        j                                Y d }~d }~ww xY w# t        j
                  d       w xY w# $ r | j                  d       Y w xY w# t        j                  t        j                  |       w xY w)Nr  c                       e Zd Zy)4TCPTimeoutTest.testInterruptedTimeout.<locals>.AlarmNrY  rd   r?   r   Alarmr  r  s    r?   r  c                     r<   rd   )r  r  r  s     r   alarm_handlerz<TCPTimeoutTest.testInterruptedTimeout.<locals>.alarm_handlert  s    Kr?   r   znothing caughtzcaught timeout instead of Alarmz)caught other exception instead of Alarm: (z):
r   zgot Alarm in wrong place)rU   r  rl  r  r  r  r   r  r  r   r}  	traceback
format_exc)rZ   r 	  r  r  r   r  s        @r   testInterruptedTimeoutz%TCPTimeoutTest.testInterruptedTimeoutk  s/    			S!	I 		MM&..-@		5 Qii&&( 		*+Q
 MM&..)4!   =		;<   @		7Ay';';'=? @ @@ Q 	2II01	2 MM&..)4sx   /C D> E ,E4 D;,D> .D;2D> 4D;<5D61D> 6D;;D> >EE E1.E4 0E11E4 4&FN)
ra   rb   rc   r  r  r   r  r   r  r	  rd   r?   r   r  r  T  s;    LM X146565r?   r  c                       e Zd Zd Zd Zy)UDPTimeoutTestc                 >      fd} j                  t        |d       y )Nc                  r    j                   j                  d       j                   j                  d       y Nr  r  rU   r  r  r  s     r   r  z4UDPTimeoutTest.testUDPTimeout.<locals>.raise_timeout  %    II  %IINN4 r?   z*Error generating a timeout exception (UDP)r  r  s   ` r   testUDPTimeoutzUDPTimeoutTest.testUDPTimeout  s     	! 	,J	Lr?   c                    d}	 | j                   j                  d       | j                   j                  d      }|s| j	                  d       y y # t        $ r | j	                  d       Y 1t
        $ r d}Y = | j	                  d       Y QxY w)NFr  r  z%caught timeout instead of error (UDP)Tz!caught unexpected exception (UDP)1recv() returned success when we did not expect itrU   r  r  r  r  r   r  s      r   r  zUDPTimeoutTest.testTimeoutZero  s    	;II  %))..&C IIIJ   	?II=> 	B	;II9:   6A B+
B7BN)ra   rb   rc   r	  r  rd   r?   r   r	  r	    s    LKr?   r	  c                       e Zd Zd Zd Zy)UDPLITETimeoutTestc                 >      fd} j                  t        |d       y )Nc                  r    j                   j                  d       j                   j                  d       y r		  r
	  r  s     r   r  z<UDPLITETimeoutTest.testUDPLITETimeout.<locals>.raise_timeout  r	  r?   z.Error generating a timeout exception (UDPLITE)r  r  s   ` r   testUDPLITETimeoutz%UDPLITETimeoutTest.testUDPLITETimeout  s     	! 	,N	Pr?   c                    d}	 | j                   j                  d       | j                   j                  d      }|s| j	                  d       y y # t        $ r | j	                  d       Y 1t
        $ r d}Y = | j	                  d       Y QxY w)NFr  r  z)caught timeout instead of error (UDPLITE)Tz%caught unexpected exception (UDPLITE)r	  r	  r  s      r   r  z"UDPLITETimeoutTest.testTimeoutZero  s    	?II  %))..&C IIIJ   	CIIAB 	B	?II=>r	  N)ra   rb   rc   r	  r  rd   r?   r   r	  r	    s    PKr?   r	  c                       e Zd Zd Zd Zy)TestExceptionsc                    | j                  t        t        t                     | j                  t        t        j
                  t                     | j                  t        t        j                  t                     | j                  t        t        j                  t                     | j                  t        j                  t               | j                  t        j                  t               y r<   )r  
issubclassr   rl  r   r  r  rL   assertIserrorr  rY   s    r   testExceptionTreez TestExceptions.testExceptionTree  s~    
7I67
6==':;
6??G<=
6>>7;<fllG,fnnl3r?   c                    t        j                   t         j                  t         j                  d      }t        j                   t         j                  t         j                  d|j                               }|j	                          | j                  |j                         | j                  t              5  |j                  d       d d d        y # 1 sw Y   y xY w)Nr   F)
r   rT   rB   r  r!   ry   ru  r  r   ro  )rZ   sock0rM  s      r   test_setblocking_invalidfdz)TestExceptions.test_setblocking_invalidfd  s     fnnf.@.@!D}}NNF..5<<>C$w' 	$U#	$ 	$ 	$s   6CCN)ra   rb   rc   r	  r 	  rd   r?   r   r	  r	    s    4
$r?   r	  rk  Linux specific testc                   4    e Zd ZdZd Zd Zd Zd Zd Zd Z	y)	TestLinuxAbstractNamespacel   c                 t   d}t        j                   t         j                  t         j                        5 }|j                  |       |j	                          t        j                   t         j                  t         j                        5 }|j                  |j                                |j                         d   5 }| j                  |j                         |       | j                  |j                         |       d d d        d d d        d d d        y # 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   y xY w)Ns    python-test-hello r   )
r   rR  rB   r   rX   r  r   r   r  r  )rZ   r  s1r  s3s        r   testLinuxAbstractNamespacez5TestLinuxAbstractNamespace.testLinuxAbstractNamespace  s    2]]6>>6+=+=> 	@"GGGIIKv~~v/A/AB @b

2>>+,YY[^ @r$$R^^%5w?$$R^^%5w?@@	@ 	@
@ @@ @	@ 	@s=   AD.	3D"<AD=D"D.DD""D+	'D..D7c                    dd| j                   dz
  z  z   }t        j                  t        j                  t        j                        5 }|j	                  |       | j                  |j                         |       d d d        y # 1 sw Y   y xY w)Nr     hr   )UNIX_PATH_MAXr   rR  rB   r   r  r   rZ   r  r$   s      r   testMaxNamez&TestLinuxAbstractNamespace.testMaxName  sl    DD$6$6$:;;]]6>>6+=+=> 	7!FF7OQ]]_g6	7 	7 	7s   2BBc                     dd| j                   z  z   }t        j                  t        j                  t        j                        5 }| j	                  t
        |j                  |       d d d        y # 1 sw Y   y xY w)N h)r+	  r   rR  rB   r  r   r   r,	  s      r   testNameOverflowz+TestLinuxAbstractNamespace.testNameOverflow  s\    3!3!333]]6>>6+=+=> 	8!gqvvw7	8 	8 	8s   "A00A9c                    t        j                   t         j                  t         j                        }	 |j                  d       | j	                  |j                         d       |j                          y # |j                          w xY w)Nz python test     python test )r   rR  rB   r   r  r   r!   r  s     r   testStrNamez&TestLinuxAbstractNamespace.testStrName  sX    MM&..&*<*<=	FF+,Q]]_.GHGGIAGGIs   1A6 6Bc                    t        j                   t         j                  t         j                        5 }|j                  t	        d             | j                  |j                         d       d d d        y # 1 sw Y   y xY w)Nr3	  )r   rR  rB   r   r  r  r   r  s     r   testBytearrayNamez,TestLinuxAbstractNamespace.testBytearrayName  s^    ]]6>>6+=+=> 	I!FF9678Q]]_.GH	I 	I 	Is   ;A77B c                 D   d}t        j                   t         j                  t         j                        5 }|j                  d       | j	                  |j                         |       t        j                   t         j                  t         j                        5 }|j                  d       | j	                  |j                         |       | j                  |j                         |j                                d d d        d d d        y # 1 sw Y   xY w# 1 sw Y   y xY w)Ns   ^ [0-9a-f]{5}r  )r   rR  rB   r   assertRegexr   r  )rZ   abstract_addressr&	  r  s       r   testAutobindz'TestLinuxAbstractNamespace.testAutobind  s     -]]6>>6+=+=> 	H"GGBKR^^-/?@v~~v/A/AB Hb  !13CD##BNN$4bnn6FGH		H 	HH H		H 	Hs%   A$DA D
9D
D	DDN)
ra   rb   rc   r+	  r(	  r-	  r1	  r4	  r6	  r:	  rd   r?   r   r#	  r#	    s*     M	@78
IHr?   r#	  ztest needs socket.AF_UNIXc                       e Zd Zd Zd Zd Zd Zd Zd Zd Z	d Z
d	 Z ej                  ej                  d
k(  d      d        Zy)TestUnixDomainc                 r    t        j                   t         j                  t         j                        | _        y r<   )r   rR  rB   rM  rY   s    r   r[   zTestUnixDomain.setUp  s    MM&..&2D2DE	r?   c                 8    | j                   j                          y r<   )rM  r!   rY   s    r   r^   zTestUnixDomain.tearDown  s    		r?   c                     	 t        j                  |      S # t        $ r6 | j                  dj	                  |t        j                                      Y y w xY w)NzBPathname {0!a} cannot be represented in file system encoding {1!r})r  fsencoder  r   r  rB  getfilesystemencodingrZ   rN  s     r   encodedzTestUnixDomain.encoded  sN    	8;;t$$! 	8MM((.#335)78	8s    <AAc                     	 t        j                  ||       y # t        $ r:}t        |      dk(  r!| j	                  dj                  |             n Y d }~y d }~ww xY w)NzAF_UNIX path too longz6Pathname {0!a} is too long to serve as an AF_UNIX path)r   rL  r   r  r   r  )rZ   rM  rN  r   s       r   r   zTestUnixDomain.bind   sV    	**46 	1v00LVD\# 	#	s    	A0AAc                 X    | j                  | j                  j                         d       y )N)r  N)r  rM  r   rY   s    r   r  zTestUnixDomain.testUnbound,  s    dii++-z:r?   c                 *   t         j                  j                  t        j                        }| j                  | j                  |       | j                  t        j                  |       | j                  | j                  j                         |       y r<   )r  rN  abspathr   TESTFNr   rM  ry   rK  r  r   rB	  s     r   testStrAddrzTestUnixDomain.testStrAddr0  s]    wwy//0		$))T"	(($/..0$7r?   c                 H   t         j                  j                  t        j                        }| j                  | j                  | j                  |             | j                  t        j                  |       | j                  | j                  j                         |       y r<   )r  rN  rG	  r   rH	  r   rM  rC	  ry   rK  r  r   rB	  s     r   testBytesAddrzTestUnixDomain.testBytesAddr7  sf    wwy//0		$))T\\$/0	(($/..0$7r?   c                 l   t         j                  j                  t        j                        }| j                  |      }| j                  | j                  |j                  dd             | j                  t        j                  |       | j                  | j                  j                         |       y )Nasciisurrogateescape)r  rN  rG	  r   TESTFN_UNICODErC	  r   rM  rc  ry   rK  r  r   )rZ   rN  r  s      r   testSurrogateescapeBindz&TestUnixDomain.testSurrogateescapeBind>  sy     wwy778LL		$))QXXg/@AB	(($/..0$7r?   c                 l   t         j                  | j                  d       t        j                  j                  t         j                        }| j                  | j                  |       | j                  t         j                  |       | j                  | j                  j                         |       y )Nz!No unencodable filename available)r   TESTFN_UNENCODABLEr   r  rN  rG	  r   rM  ry   rK  r  r   rB	  s     r   testUnencodableAddrz"TestUnixDomain.testUnencodableAddrG  sx     ''/MM=>wwy;;<		$))T"	(($/..0$7r?   rk  r!	  c                 Z    | j                  t        | j                  j                  d       y )Nr  )r  r   rM  r   rY   s    r   testEmptyAddresszTestUnixDomain.testEmptyAddressQ  s     	'499>>26r?   N)ra   rb   rc   r[   r^   rC	  r   r  rI	  rK	  rP	  rS	  r   r  rB  rt  rU	  rd   r?   r   r<	  r<	    s\    F	8
;8888 X__S\\W,.CD7 E7r?   r<	  c                   l    e Zd Z	 ddZd Zd Zd ZeZd ZeZ	d Z
d Zd ZeZd	 ZeZd
 Zd Zd ZeZy)BufferIOTestc                 2    t         j                  | |       y r   r  r   s     r   rp   zBufferIOTest.__init__[  r  r?   c                 6   t        j                   ddgt        t              z        }| j                  j	                  |      }| j                  |t        t                     |j                         }|d t        t               }| j                  |t               y Nr  r   )r  r  r  r  r  r  rE  rZ   r}  r;  r
  s       r   testRecvIntoArrayzBufferIOTest.testRecvIntoArray^  sn    kk#sSX~.((-S*kkm)3s8nc"r?   c                 X    t        t              }| j                  j                  |       y r<   r4  r  r  r  rZ   r}  s     r   _testRecvIntoArrayzBufferIOTest._testRecvIntoArrayf      CjC r?   c                     t        d      }| j                  j                  |      }| j                  |t	        t
                     |d t	        t
               }| j                  |t
               y r  )r  r  r  r  r  r  r[	  s       r   testRecvIntoBytearrayz"BufferIOTest.testRecvIntoBytearrayj  sR    o((-S*)3s8nc"r?   c                     t        d      }| j                  j                  t        |            }| j	                  |t        t                     |d t        t               }| j	                  |t               y r  )r  r  r  rL  r  r  r  r[	  s       r   testRecvIntoMemoryviewz#BufferIOTest.testRecvIntoMemoryviews  sV    o((C9S*)3s8nc"r?   c                 <   t        j                   ddgt        t              z        }| j                  j	                  |      \  }}| j                  |t        t                     |j                         }|d t        t               }| j                  |t               y rZ	  )r  r  r  r  r  r  rE  rZ   r}  r;  r  r
  s        r   testRecvFromIntoArrayz"BufferIOTest.testRecvFromIntoArray|  sr    kk#sSX~.}}2237S*kkm)3s8nc"r?   c                 X    t        t              }| j                  j                  |       y r<   r^	  r_	  s     r   _testRecvFromIntoArrayz#BufferIOTest._testRecvFromIntoArray  ra	  r?   c                     t        d      }| j                  j                  |      \  }}| j                  |t	        t
                     |d t	        t
               }| j                  |t
               y r  )r  r  r  r  r  r  rg	  s        r   testRecvFromIntoBytearrayz&BufferIOTest.testRecvFromIntoBytearray  sV    o}}2237S*)3s8nc"r?   c                     t        d      }| j                  j                  t        |            \  }}| j	                  |t        t                     |d t        t               }| j	                  |t               y r  )r  r  r  rL  r  r  r  rg	  s        r   testRecvFromIntoMemoryviewz'BufferIOTest.testRecvFromIntoMemoryview  sZ    o}}22:c?CS*)3s8nc"r?   c                 r    t        d      }| j                  t        | j                  j                  |d       y )Nr   r  )r  r  r  r  r  r_	  s     r   testRecvFromIntoSmallBufferz(BufferIOTest.testRecvFromIntoSmallBuffer  s)    l*dmm&A&A3Mr?   c                 B    | j                   j                  t               y r<   r  rY   s    r   _testRecvFromIntoSmallBufferz)BufferIOTest._testRecvFromIntoSmallBuffer  r  r?   c                     t               }| j                  j                  |       | j                  j                  |d       y r   )r  r  r  r_	  s     r   testRecvFromIntoEmptyBufferz(BufferIOTest.testRecvFromIntoEmptyBuffer  s/    k##C(##C+r?   Nr   )ra   rb   rc   rp   r\	  r`	  rc	  _testRecvIntoBytearrayre	  _testRecvIntoMemoryviewrh	  rj	  rl	  _testRecvFromIntoBytearrayrn	  _testRecvFromIntoMemoryviewrp	  rr	  rt	  _testRecvFromIntoEmptyBufferrd   r?   r   rW	  rW	  W  sm    B#!# 0# 1#!# "8# #9N
!,
 $: r?   rW	  i        c                      	 t        t        d      sy	 t        dd      } | 5  | D ]  }|j                  d      s d d d        y 	 d d d        y# t        t        t
        f$ r Y yw xY w# 1 sw Y   yxY w)NAF_TIPCFz/proc/modulesr	   r:  ztipc T)r   r   r   FileNotFoundErrorIsADirectoryErrorr  ru  )r   rZ  s     r   isTipcAvailabler	    s    
 69%73
 
  	Dw' 	  0/B   s'   A A*A*A*A'&A'*A3z6TIPC module is not loaded, please 'sudo modprobe tipc'c                       e Zd Zd Zy)TIPCTestc                 $   t        j                   t         j                  t         j                        }t        j                   t         j                  t         j                        }| j                  |j                         | j                  |j                         |j                  t         j                  t         j                  d       t         j                  t        t        t        f}|j                  |       t         j                  t        t        t        t        t        z
  dz        z   df}|j                  t         |       |j#                  d      \  }}| j%                  |j'                         |       | j%                  |t                y )Nr   r   r   r  )r   r}	  r  ry   r!   r  r  r  TIPC_ADDR_NAMESEQ
TIPC_STYPE
TIPC_LOWER
TIPC_UPPERr   TIPC_ADDR_NAMEr1  r  r  r  r  r   )rZ   rL  r   srvaddrsendaddrr
  recvaddrs          r   testRDMzTIPCTest.testRDM  s   mmFNNFOO<mmFNNFOO<		"		"v((&*=*=qA++ZJ()):S*z"9Q!>??D

3!T*X*H5c"r?   N)ra   rb   rc   r	  rd   r?   r   r	  r	    s    #r?   r	  c                   ,    e Zd ZddZd Zd Zd Zd Zy)TIPCThreadableTestc                 p    t         j                  j                  | |       t        j                  |        y r   r   r   s     r   rp   zTIPCThreadableTest.__init__  s)    ""4j"A%r?   c                    t        j                   t         j                  t         j                        | _        | j	                  | j                  j
                         | j                  j                  t         j                  t         j                  d       t         j                  t        t        t        f}| j                  j                  |       | j                  j                          | j                          | j                  j!                         \  | _        | _        | j	                  | j"                  j
                         y rX  )r   r}	  rB   rL  ry   r!   r  r  r  r	  r	  r	  r	  r   rX   r   r   r   r   )rZ   r	  s     r   r[   zTIPCThreadableTest.setUp  s    ==1C1CD'F--v/B/BAF++ZJ(g  "#'88??#4 	4=		(r?   c                    t        j                  d       t        j                  t        j                  t        j                        | _        | j                  | j
                  j                         t        j                  t        t        t        t        t        z
  dz        z   df}| j
                  j                  |       | j
                  j                         | _        y )Nr   r   r   )r   r   r   r}	  rB   r   ry   r!   r	  r	  r	  r1  r	  r  r   cliaddr)rZ   r  s     r   r   zTIPCThreadableTest.clientSetUp  s     	

3==1C1CD'%%zS*z"9Q!>??Dxx++-r?   c                     | j                   j                  d      }| j                  |t               | j                  | j                  | j
                         y r  )r   r  r  r  r	  r   r	  s     r   r  zTIPCThreadableTest.testStream  s<    iinnT"c"t}}5r?   c                 v    | j                   j                  t               | j                   j                          y r<   r  rY   s    r   r  zTIPCThreadableTest._testStream  r  r?   Nr   r  rd   r?   r   r	  r	    s    &
)
.6
r?   r	  c                   *    e Zd Zd Zd Zd Zd Zd Zy)ContextManagersTestc                 4   t        j                          5 }| j                  |j                         d d d        | j                  j                         t        j                          5 }|j	                          d d d        | j                  |j                         t        j                          5 }| j                  t        |j                  d       d d d        | j                  |j                         y # 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   =xY wNr  )r   r  r)  r  r!   r  r   r  r\  s     r   _testSocketClassz$ContextManagersTest._testSocketClass  s    ]]_ 	+T\\*	+%]]_ 	JJL	%]]_ 	=gt||V<	=%	+ 	+	 		= 	=s#   C6(D0"D6C?DDc                     | j                   j                         \  }}| j                  |j                         |j	                  d      }|j                  |       y r  rU   r   ry   r!   r  r  rZ   r   r  r  s       r   testCreateConnectionBasez,ContextManagersTest.testCreateConnectionBase  A    YY%%'
d

#yyTr?   c                 \   | j                   j                         }t        j                  |      5 }| j	                  |j
                         |j                  d       | j                  |j                  d      d       d d d        | j                  j
                         y # 1 sw Y   %xY w)Nr  r  )
rU   r   r   r  r  r)  r  r  r  r  rZ   r  rM  s      r   _testCreateConnectionBasez-ContextManagersTest._testCreateConnectionBase  s    ))'')%%g. 	6$T\\*LL TYYt_f5	6 	%		6 	6s   AB""B+c                     | j                   j                         \  }}| j                  |j                         |j	                  d      }|j                  |       y r  r	  r	  s       r   testCreateConnectionClosez-ContextManagersTest.testCreateConnectionClose!  r	  r?   c                 $   | j                   j                         }t        j                  |      5 }|j	                          d d d        | j                  j                         | j                  t        |j                  d       y # 1 sw Y   FxY wr	  )
rU   r   r   r  r!   r  r)  r  r   r  r	  s      r   _testCreateConnectionClosez.ContextManagersTest._testCreateConnectionClose'  sh    ))'')%%g. 	$JJL	%'4<<8	 	s   BBN)ra   rb   rc   r	  r	  r	  r	  r	  rd   r?   r   r	  r	    s    &&9r?   r	  c                       e Zd Z ej                   eed      d       ej                  ddd      d               Z	d Z
d Zd	 Z ej                  ed
u d      d        Z ej                  ed
u d      d        Zd Zy
)InheritanceTestr  zSOCK_CLOEXEC not definedr   r  r  c                 F   t        j                   t         j                  t         j                  t         j                  z        5 }| j	                  |j
                  t         j                         | j                  |j                                d d d        y # 1 sw Y   y xY wr<   )r   rT   rB   r  r  r}  r  get_inheritabler  s     r   test_SOCK_CLOEXECz!InheritanceTest.test_SOCK_CLOEXEC0  st     ]]6>>!--0C0CCE 	2HIQVVV%7%78Q..01	2 	2 	2s   A
BB c                     t        j                          }|5  | j                  |j                         d       d d d        y # 1 sw Y   y xY wr  )r   r  r	  r\  s     r   test_default_inheritablez(InheritanceTest.test_default_inheritable9  s>    }} 	<T113U;	< 	< 	<s   !AA
c                    t        j                          }|5  |j                         }|j                          |5  | j                  |j	                         d       d d d        d d d        y # 1 sw Y   xY w# 1 sw Y   y xY wr  )r   r  r!   r  r	  )rZ   rM  newsocks      r   test_dupzInheritanceTest.test_dup>  sx    }} 	ChhjGJJL C  !8!8!:EBC	C 	CC C	C 	Cs"   #A8!A,A8,A5	1A88Bc                    t        j                          }|5  |j                  d       | j                  |j                         d       |j                  d       | j                  |j                         d       d d d        y # 1 sw Y   y xY w)NTF)r   set_inheritabler  r	  r\  s     r   test_set_inheritablez$InheritanceTest.test_set_inheritableF  ss    }} 	<  &T113T:  'T113U;	< 	< 	<s   A#BBNr   c                    t        j                          }|5  |j                         }| j                  |j                         d       t	        j                  |t        j
                        }|t        j                   z  }t	        j                  |t        j                  |       | j                  |j                         d       d d d        y # 1 sw Y   y xY wr   )r   r  r  r	  r   F_GETFD
FD_CLOEXECF_SETFD)rZ   rM  r{  r  s       r   test_get_inheritable_cloexecz,InheritanceTest.test_get_inheritable_cloexecO  s    }} 		;BT113U; KKEMM2Ee&&&&EKKEMM51T113T:		; 		; 		;s   B.CCc                    t        j                          }|5  |j                         }| j                  t        j                  |t        j                        t        j
                  z  t        j
                         |j                  d       | j                  t        j                  |t        j                        t        j
                  z  d       d d d        y # 1 sw Y   y xY w)NTr   )r   r  r  r   r	  r	  r	  )rZ   rM  r{  s      r   test_set_inheritable_cloexecz,InheritanceTest.test_set_inheritable_cloexec]  s    }} 	 BU[[U]];e>N>NN"--/   &U[[U]];e>N>NN 	  	  	 s   B:CC#c                    t        j                         \  }}| j                  |j                         | j                  |j                         | j	                  |j                         d       | j	                  |j                         d       y r  )r   r$  ry   r!   r  r	  )rZ   r&	  r  s      r   test_socketpairzInheritanceTest.test_socketpairj  sf    ""$B!!++-u5++-u5r?   )ra   rb   rc   r   r  r   r   r   r)  r	  r	  r	  r	  r  r   r	  r	  r	  rd   r?   r   r	  r	  /  s    X835#W##Aq"-2 .52<
C< X__Ud]L1; 2; X__Ud]L1	  2	 6r?   r	  rn  zSOCK_NONBLOCK not definedc                   H    e Zd ZddZ ej
                  ddd      d        Zy)NonblockConstantTestc                 D   |r| j                  |j                  t        j                         | j                  |j	                         |       | j                  t        j                  |t        j                  t        j                        t        j                  z         |dk(  r | j                  |j                                y | j                  |j                                y | j                  |j                  t        j                         | j                  |j	                         d        | j                  t        j                  |t        j                  t        j                        t        j                  z         | j                  |j                                y r   )r  r}  r   rB   r  r  r   r  r  r   r  r  )rZ   r$   nonblockrL   s       r   checkNonblockz"NonblockConstantTest.checkNonblocku  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?   r   r  r  c                    t        j                   t         j                  t         j                  t         j                  z        5 }| j	                  |       |j                  d       | j	                  |d       |j                  d       | j	                  |       |j                  d        | j	                  |d       |j                  d       | j	                  |d       |j                  d       | j	                  |d       d d d        t        j                         }t        j                  d       t        j                          5 }| j	                  |       d d d        t        j                  d        t        j                          5 }| j	                  |d       d d d        t        j                  d       t        j                          5 }| j	                  |d       d d d        t        j                  d        t        j                          5 }| j	                  |d       d d d        t        j                  |       y # 1 sw Y   DxY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   PxY w)NTF)r	  g       @r  r  )	r   rT   rB   rn  r	  ro  r  rJ   rK   )rZ   r$   ts      r   test_SOCK_NONBLOCKz'NonblockConstantTest.test_SOCK_NONBLOCK  s    ]]6>>!--0D0DDF 	2IJq!MM$q51MM% q!LLq51LLq#.MM$q51	2 $$&  %]]_ 	"q!	"  &]]_ 	)q%(	)  %]]_ 	/q#.	/  &]]_ 	)q%(	)  #7	2 	2 	" 	"	) 	)	/ 	/	) 	)s=   CI
II#I/I;
II #I,/I8;JN)Tr  )ra   rb   rc   r	  r   r)  r	  rd   r?   r   r	  r	  r  s,    -2 $W##Aq"-$ .$r?   r	  r  r  zneed multiprocessingc                   :    e Zd Zed        Zd Zd Zd Zd Zd Z	y)TestSocketSharingc                     |j                         }|j                         }t        j                  |      }|j                         \  }}|j	                  |       |j                          |j                          y r<   )r   r   	fromsharer   r  r!   )r  qsdatamessager$   r  r  s          r   remoteProcessServerz%TestSocketSharing.remoteProcessServer  sY     %%'U#
A 	

7

		r?   c                    t        j                         }t        j                  | j                  |f      }|j	                          | j
                  j                  |j                        }| j
                  j                         }| j
                  j                          |j                  |       d}|j                  |       t        j                  |      }g }	 |j                  d      }|sn|j                  |       &|j                          dj                  |      }| j!                  ||       |j                          y )Nr  ru   s
   slapmahfror  r?   )multiprocessingr   Processr	  r  rU   sharepidr   r!   r   r   r  r  ri  r  r  )	rZ   r	  r  r  r  r	  r$   mreceiveds	            r   	testSharezTestSocketSharing.testShare  s    
 !!###4+C+C1$O		 yyquu% yy$$&			d  	g $$T*66#;DHHTN	 
 	
	88A;7+	r?   c                     | j                   j                  t        j                               }| j	                  t
        t        j                  |d d        | j	                  t
        t        j                  |dz          y )NrZ  r  )rU   r	  r  getpidr  r  r   r	  )rZ   r  s     r   testShareLengthz!TestSocketSharing.testShareLength  sT    yyryy{+*f&6&6Sb	B*f&6&6VDr?   c                    | j                  |j                         d        | j                  |j                         |j                                | j                  |j                  |j                         | j                  |j                  |j                         |j                  dk7  r'| j                  |j                  |j                         y y r   )r  r  r  r}  r  )rZ   orgothers      r   compareSocketsz TestSocketSharing.compareSockets  s     	)40)5+;+;+=>U\\25::. 99>SYY4 r?   c                    | j                   j                  t        j                               }t	        j
                  |      }	 | j                  | j                   |       |j                          y # |j                          w xY wr<   )rU   r	  r  r	  r   r	  r	  r!   )rZ   r  r$   s      r   testShareLocalz TestSocketSharing.testShareLocal  sV    yyryy{+T"			1-GGIAGGIs   A1 1Bc                    t         j                  t         j                  g}t         j                  t         j                  g}|D ]  }|D ]  }	 t        j                   ||      }	 |j                  t        j                               }t        j                  |      }	 | j                  ||       |j                          	 |j                            y # t
        $ r Y w xY w# |j                          w xY w# |j                          w xY wr<   )r   rT   rq  rB   r(   r   r	  r  r	  r	  r	  r!   )rZ   familiestypesr   r	  r  r  shareds           r   	testTypeszTestSocketSharing.testTypes  s    NNFOO4##V%6%67 	#A ##]]1a0F#!<<		4D#--d3F'++FF;LLN#	#   LLNs6   C#8C8C#.C8	C C #C55C88D
N)
ra   rb   rc   rA  r	  r	  r	  r	  r	  r	  rd   r?   r   r	  r	    s1    
  !FE
5 #r?   r	  c                       e Zd Z	 dZdZdZej                  Ze	d        Z
e	d        Zd Zd Zd Zd	 Zd
 Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Z d Z!d Z"d Z#d Z$y) SendfileUsingSendTesti   r   r?   c                 $   d }dj                  t        | j                        D cg c]3  }t        j                  t
        j                        j                         5 c}      }t        t        j                  d      5 } || j                  | j                        D ]  }|j                  |        	 d d d        t        t        j                  d      5 }|j                         | _        d d d        y c c}w # 1 sw Y   GxY w# 1 sw Y   y xY w)Nc              3   B   K   | |kD  r| | |z  } | |kD  r| r|  y y wr<   rd   )totalsteps     r   chunksz0SendfileUsingSendTest.setUpClass.<locals>.chunks#  s3     $,
 $,  s   r?   r7  r   )r  rC  BUFSIZErandomchoicestringascii_lettersrh  r   r   rH	  FILESIZErg  r  FILEDATA)r  r	  rP   chunkr   csizes         r   
setUpClassz SendfileUsingSendTest.setUpClass!  s    	 #(#57 !--(<(<=DDF 7 8)""D) 	Qckk: 	 )""D) 	5Q668CL	5 	57	 		5 	5s   8C5?4C:D:DDc                 J    t        j                  t         j                         y r<   )r   rK  rH	  )r  s    r   tearDownClassz#SendfileUsingSendTest.tearDownClass4  s    ))*r?   c                     | j                   j                  t        j                         | j                   j	                         \  }}|j                  | j
                         | j                  |j                         |S r<   )rU   r  r   r   r   TIMEOUTry   r!   r  s      r   accept_connz!SendfileUsingSendTest.accept_conn8  sU    		W112YY%%'
d%

#r?   c                     g }	 |j                  | j                        }|sn|j                  |       0dj                  |      S r  )r  r	  ri  r  )rZ   r   r	  r	  s       r   	recv_datazSendfileUsingSendTest.recv_data?  sD    IIdll+EOOE"	 
 xx!!r?   c                     t        |d      S )N_sendfile_use_sendr   r\  s     r   meth_from_sockz$SendfileUsingSendTest.meth_from_sockH  s     t122r?   c                    | j                   j                         }t        t        j                  d      }t        j                  |      5 }|5 }| j                  |      } ||      }| j                  || j                         | j                  |j                         | j                         d d d        d d d        y # 1 sw Y   xY w# 1 sw Y   y xY w)Nr   rU   r   r   r   rH	  r   r  r	  r  r	  tellrZ   r  filerM  methsents         r   _testRegularFilez&SendfileUsingSendTest._testRegularFileO  s    ))'')I$$d+%%g. 	9$ 	9&&t,D:DT4==1TYY[$--8		9 	9 	9 	9 	9 	9s%   
C
A B>-C
>C	C

Cc                     | j                         }| j                  |      }| j                  t        |      | j                         | j                  || j
                         y r<   r	  r	  r  r  r	  r	  rZ   r   r  s      r   testRegularFilez%SendfileUsingSendTest.testRegularFileX  J    !~~d#TDMM2t}}-r?   c                    | j                   j                         }t        j                  | j                        }t        j                  |      5 }|5 }|j                  |      }| j                  || j                         | j                  |j                         | j                         | j                  t
        j                  |j                  |       d d d        d d d        y # 1 sw Y   xY w# 1 sw Y   y xY wr<   )rU   r   ioBytesIOr	  r   r  r  r  r	  r
  r  r  r  )rZ   r  r
  rM  r
  s        r   _testNonRegularFilez)SendfileUsingSendTest._testNonRegularFile`  s    ))'')zz$--(%%g. 	A$ 	A==&DT4==1TYY[$--8f66"994A		A 	A 	A 	A 	A 	As%   C2BC&C2&C/	+C22C;c                     | j                         }| j                  |      }| j                  t        |      | j                         | j                  || j
                         y r<   r
  r	
  s      r   testNonRegularFilez(SendfileUsingSendTest.testNonRegularFilej  r
  r?   c                    | j                   j                         }t        j                  dz   }t	        |d      5  | j                  t        j                  |       d d d        t	        |d      }t        j                  |      5 }|5 }| j                  |      } ||      }| j                  |d       | j                  |j                         d       d d d        d d d        y # 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   y xY w)N2r7  r   r   )rU   r   r   rH	  r   ry   rK  r   r  r	  r  r
  )rZ   r  filenamer
  rM  r
  r
  s          r   _testEmptyFileSendz(SendfileUsingSendTest._testEmptyFileSendr  s    ))'')##c)(D! 	8OOI,,h7	8Hd#%%g. 	-$ 	-&&t,D:DT1%TYY[!,		- 	- 	-	8 	8	- 	- 	- 	-s0   !C$C<AC0C<$C-0C9	5C<<Dc                 j    | j                         }| j                  |      }| j                  |d       y r  )r	  r	  r  r	
  s      r   testEmptyFileSendz'SendfileUsingSendTest.testEmptyFileSend~  s.    !~~d#s#r?   c                    | j                   j                         }t        t        j                  d      }t        j                  |      5 }|5 }| j                  |      } ||d      }| j                  || j                  dz
         | j                  |j                         | j                         d d d        d d d        y # 1 sw Y   xY w# 1 sw Y   y xY w)Nr     )offsetr 
  r
  s         r   _testOffsetz!SendfileUsingSendTest._testOffset  s    ))'')I$$d+%%g. 	9$ 	9&&t,DT*DT4==4#78TYY[$--8		9 	9 	9 	9 	9 	9s%   
CA%C2CC	CCc                     | j                         }| j                  |      }| j                  t        |      | j                  dz
         | j                  || j
                  dd         y )Nr
  r
  r	
  s      r   
testOffsetz SendfileUsingSendTest.testOffset  sV    !~~d#TDMMD$89t}}TU34r?   c                    | j                   j                         }t        t        j                  d      }t        j                  |t        j                        }|5  |5  d}| j                  |      } |||      }| j                  ||       | j                  |j                         |       d d d        d d d        y # 1 sw Y   xY w# 1 sw Y   y xY w)Nr   r  GKL r  rU   r   r   r   rH	  r   r  r   ru  r	  r  r
  rZ   r  r
  rM  r  r
  r
  s          r   
_testCountz SendfileUsingSendTest._testCount  s    ))'')I$$d+''070H0HJ 	14 	1E&&t,DE*DT5)TYY[%0	1 	1 	1 	1 	1 	1%   CAC /C C		CCc                     d}| j                         }| j                  |      }| j                  t        |      |       | j                  || j                  d |        y )Nr
  r	  r	  r  r  r	  rZ   r  r   r  s       r   	testCountzSendfileUsingSendTest.testCount  sR    !~~d#TE*t}}Ve45r?   c                    | j                   j                         }t        t        j                  d      }t        j                  |t        j                        }|5  |5  d}| j                  |      } |||      }| j                  ||       | j                  |j                         |       d d d        d d d        y # 1 sw Y   xY w# 1 sw Y   y xY w)Nr   r  r   r 
  r!
  r"
  s          r   _testCountSmallz%SendfileUsingSendTest._testCountSmall  s    ))'')I$$d+''070H0HJ 	14 	1E&&t,DE*DT5)TYY[%0	1 	1 	1 	1 	1 	1r$
  c                     d}| j                         }| j                  |      }| j                  t        |      |       | j                  || j                  d |        y rX  r&
  r'
  s       r   testCountSmallz$SendfileUsingSendTest.testCountSmall  sR    !~~d#TE*t}}Ve45r?   c                    | j                   j                         }t        t        j                  d      }t        j                  |d      5 }|5 }d}| j                  |      } ||d|      }| j                  ||       | j                  |j                         |dz          d d d        d d d        y # 1 sw Y   xY w# 1 sw Y   y xY w)Nr   r   r  駆   )r
  r  )
rU   r   r   r   rH	  r   r  r	  r  r
  r"
  s          r   _testCountWithOffsetz*SendfileUsingSendTest._testCountWithOffset  s    ))'')I$$d+%%gq9 	8T4 	84E&&t,DT7DT5)TYY[%$,7	8 	8 	8 	8 	8 	8s%   C AB4#C 4B=	9C  C	c                     d}| j                         }| j                  |      }| j                  t        |      |       | j                  || j                  d|dz           y )Nr.
  r/
  r&
  r'
  s       r   testCountWithOffsetz)SendfileUsingSendTest.testCountWithOffset  sV    !~~d#TE*t}}T%*=>r?   c                    | j                   j                         }t        t        j                  d      }t        j                  |      5 }|5 }|j                  d       | j                  |      }| j                  t        ||       | j                  t        |j                  |       d d d        d d d        y # 1 sw Y   xY w# 1 sw Y   y xY w)Nr   F)rU   r   r   r   rH	  r   r  ro  r	  r  r  r  rZ   r  r
  rM  r
  s        r   _testNonBlockingz&SendfileUsingSendTest._testNonBlocking  s    ))'')I$$d+%%g. 	?$ 	?U#&&t,Dj$5j$-->		? 	? 	? 	? 	? 	?s%   
CAB9(C9C	>CCc                 j    | j                         }|j                  d      r| j                  d       y y )Nr   z$was not supposed to receive any data)r	  r  r  rZ   r   s     r   testNonBlockingz%SendfileUsingSendTest.testNonBlocking  s-    !99T?II<= r?   c                 |   | j                   j                         }t        t        j                  d      }t        j                  |t        j                        }|5  |5  | j                  |      } ||      }| j                  || j                         d d d        d d d        y # 1 sw Y   xY w# 1 sw Y   y xY w)Nr   r  )rU   r   r   r   rH	  r   r  r   ru  r	  r  r	  r
  s         r   _testWithTimeoutz&SendfileUsingSendTest._testWithTimeout  s    ))'')I$$d+''070H0HJ 	24 	2&&t,D:DT4==1	2 	2 	2 	2 	2 	2s$   B26B&B2&B/	+B22B;c                     | j                         }| j                  |      }| j                  t        |      | j                         | j                  || j
                         y r<   r
  r	
  s      r   testWithTimeoutz%SendfileUsingSendTest.testWithTimeout  r
  r?   c                 \   | j                   j                         }t        t        j                  d      5 }t        j                  |      5 }|j                  d       | j                  |      }| j                  t        ||       d d d        d d d        y # 1 sw Y   xY w# 1 sw Y   y xY w)Nr   g{Gz?)rU   r   r   r   rH	  r   r  r  r	  r  r  r4
  s        r   _testWithTimeoutTriggeredSendz3SendfileUsingSendTest._testWithTimeoutTriggeredSend  s    ))''))""D) 	<T))'2 <d%**40!!,d;<	< 	<< <	< 	<s#   B":BB"B	B""B+c                 p    | j                         }|j                  d       t        j                  d       y )NiX r   )r	  r  r   r   r7
  s     r   testWithTimeoutTriggeredSendz2SendfileUsingSendTest.testWithTimeoutTriggeredSend  s'    !		%

1r?   c                      y r<   rd   rY   s    r   _test_errorsz"SendfileUsingSendTest._test_errors  r'  r?   c           	         t        t        j                  d      5 }t        j                  t        j                        5 }| j                  |      }| j                  t        d||       d d d        d d d        t        t        j                  d      5 }t        j                         5 }| j                  |      }| j                  t        d||       d d d        d d d        t        t        j                  d      5 }t        j                         5 }| j                  |      }| j                  t        d||d	       | j                  t        d||d
	       | j                  t        d||d	       | j                  t        d||d	       d d d        d d d        y # 1 sw Y   6xY w# 1 sw Y   ;xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   DxY w# 1 sw Y   y xY w)Nr   r  rB   r	   r:  zbinary modezpositive integerr
  r 
  r   r   rZ  )	r   r   rH	  r   r(   r	  r  r  r   )rZ   r
  r$   r
  s       r   test_errorsz!SendfileUsingSendTest.test_errors  s   )""D) 	;TF$5$56 ;!**1-&&tT;;	;
 )""W5 	; ;A**1-&&tT;;	;
 )""D) 
	=T 	=A**1-&&y2D'+T ' >&&y2D'+T ' >&&z3E'+T ' <&&z3E'+T ' =	=
	= 
	=; ;	; 	;; ;	; 	;	= 	=
	= 
	=sl   %F+ *F*F+G**F8G>GA:GGF(	#F++F58G	=GGG	GG%N)%ra   rb   rc   r	  r	  r	  r   ru  r	  rA  r	  r	  r	  r	  r	  r
  r

  r
  r
  r
  r
  r
  r
  r#
  r(
  r*
  r,
  r0
  r2
  r5
  r8
  r:
  r<
  r>
  r@
  rB
  rD
  rd   r?   r   r	  r	    s     !HGH&&G5 5$ + +"39.A.
-$95
16
168??>2.<=r?   r	  r  z%os.sendfile() required for this test.c                       e Zd Z	 d Zy)SendfileUsingSendfileTestc                     t        |d      S )Nr  r	  r\  s     r   r	  z(SendfileUsingSendfileTest.meth_from_sock&  s    t566r?   N)ra   rb   rc   r	  rd   r?   r   rF
  rF
     s    7r?   rF
  zAF_ALG requiredc                       e Zd Zd Z ej
                  dd      d        Zd Z ej
                  dd      d        Z ej
                  dd      d	        Z	 ej
                  dd      d
        Z
d Zd Zy)LinuxKernelCryptoAPIc                    t        j                   t         j                  t         j                  d      }	 |j                  ||f       |S # t        $ r5}|j                          t        j                  t        |      ||      d }~ww xY wr   )	r   r6   r2   r   r~	  r!   r   SkipTestr  )rZ   typr  rM  r   s        r   
create_algzLinuxKernelCryptoAPI.create_alg-  sn    }}V]]F,A,A1E	IIsDk" K ! 	7JJL##CFC66	7s   A
 
	B0BBr  r  c                    t         j                  d      }| j                  dd      5 }|j                         \  }}|5  |j	                  d       | j                  |j                  d      |       d d d        |j                         \  }}|5  |j                  dt        j                         |j                  dt        j                         |j                  dt        j                         |j                  d	       | j                  |j                  d      |       d d d        d d d        y # 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   y xY w)
N@ba7816bf8f01cfea414140de5dae2223b00361a396177a9cb410ff61f20015adhashsha256s   abcr     a   b   cr?   )
r4  fromhexrM
  r   r  r  r  r  r   MSG_MORE)rZ   r  algoopr   s        r   test_sha256z LinuxKernelCryptoAPI.test_sha256:  s   == ": ;__VX. 	9$KKMEB 9

6"  x89 KKMEB 9foo.foo.foo.  x89	9 	99 9
9 9	9 	9s;   E
3D21E
BD>!E
2D;	7E
>E	E

Ec                    d}d}t         j                  d      }| j                  dd      5 }|j                  t        j
                  t        j                  |       |j                         \  }}|5  |j                  |       | j                  |j                  d      |       d d d        d d d        y # 1 sw Y   xY w# 1 sw Y   y xY w)Ns   Python loves AF_ALGs   what do ya want for nothing?(193dbb43c6297b47ea6277ec0ce67119a3f3aa66rP
  z
hmac(sha1)r  )r4  rU
  rM
  r  r   SOL_ALGALG_SET_KEYr   r  r  r  )rZ   keyr  r  rW
  rX
  r   s          r   test_hmac_sha1z#LinuxKernelCryptoAPI.test_hmac_sha1L  s     %.==!KL__V\2 	9dOOFNNF,>,>DKKMEB 9

4   x89	9 	99 9	9 	9s$   AC13B5$C5B>	:CC
r   c                    t         j                  d      }t         j                  d      }d}t         j                  d      }t        |      }| j                  dd      5 }|j	                  t
        j                  t
        j                  |       |j                         \  }}|5  |j                  t
        j                  |t
        j                         |j                  |       | j                  |j                  |      |       d d d        |j                         \  }}|5  |j                  |gt
        j                  |       | j                  |j                  |      |       d d d        d	}	|g|	z  }
|j                         \  }}|5  |j                  |
t
        j                  |       |j                  ||	z        }d d d        | j                  t              ||	z         | j                  |d | |       |j                         \  }}|5  |j                  |gt
        j                  |       |j                  ||	z        }d d d        | j                  t              ||	z         | j                  |||	z         d d d        y # 1 sw Y   xY w# 1 sw Y   7xY w# 1 sw Y   xY w# 1 sw Y   kxY w# 1 sw Y   y xY w)
N 06a9214036b8a15b512e03d534120006 3dafba429d9eb430b422da802c9fac41s   Single block msg e353779c1079aeb82708942dbe77181askcipherzcbc(aes))rX
  ivr  )rX
  re
  r  )r4  rU
  r  rM
  r  r   r\
  r]
  r   sendmsg_afalgALG_OP_ENCRYPTrV
  r  r  r  ALG_OP_DECRYPT)rZ   r^
  re
  r
  
ciphertextmsglenrW
  rX
  r   
multiplierlongmsgencdecs                r   test_aes_cbcz!LinuxKernelCryptoAPI.test_aes_cbc[  s   mm>?]]=>!]]#EF
S__Z4  	4OOFNNF,>,>DKKMEB >  F$9$9b'- ! 8

3  *=	> KKMEB 7  *$*$9$9b ! B  #67 Jej(GKKMEB 3  $*$9$9b ! Bggfz123 SXv
':;S&\:6KKMEB 3  #$*$9$9b ! Bggfz123 SXv
':;S#
"23A 	4  	4> >7 73 33 37 	4  	4sp   AK$A#JK$AJ)%K7J+AK8J7;KJ	KJ(	#K+J4	0K7K 	<KKrJ  c                    t         j                  d      }t         j                  d      }t         j                  d      }t         j                  d      }t         j                  d      }t         j                  d      }t        |      }t        |      }| j                  dd      5 }	|	j	                  t
        j                  t
        j                  |       |	j	                  t
        j                  t
        j                  d |       |	j                         \  }
}|
5  |
j                  t
        j                  ||t
        j                  	       |
j                  |t
        j                         |
j                  |       |
j                  |t        |      z   |z         }| j                  ||||         | j                  ||| d         d d d        |	j                         \  }
}|
5  ||z   }|
j                  |gt
        j                  ||
       |
j                  |t        |      z   |z         }| j                  ||||         | j                  ||| d         d d d        t!        j"                  d      j$                  }|	j                         \  }
}|
5  ||z   }|
j'                  |gt
        j                  t
        j(                   |t
        j                        gt
        j                  t
        j*                   |t        |            |z   gt
        j                  t
        j,                   ||      gf       |
j                  t        |      |z         }| j                  ||||         | j                  ||| d         d d d        |	j                         \  }
}|
5  ||z   |z   }|
j                  |gt
        j.                  ||
       |
j                  t        |      |z
        }| j                  |||d         d d d        d d d        y # 1 sw Y   LxY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   8xY w# 1 sw Y   y xY w)N c939cc13397c1d37de6ae0e1cb7c423cb3d8cc017cbb89b39e0f67e2 c3b3c41f113a31b73d9a5cd432103069 24825602bd12a984e0092d3e448eda5f 93fe7d9e9bfd10348a5606e5cafa7354 0032a1dc85f1c9786925a2e71d8272ddaeadzgcm(aes))rX
  re
  assoclenr  )rX
  re
  rx
  r   )r4  rU
  r  rM
  r  r   r\
  r]
  ALG_SET_AEAD_AUTHSIZEr   rf
  rg
  rV
  r  r  r  r   Structr  r  
ALG_SET_OP
ALG_SET_IVALG_SET_AEAD_ASSOCLENrh
  )rZ   r^
  re
  plainassocexpected_ctexpected_tagtaglenrx
  rW
  rX
  r   resr
  pack_uint32s                  r   test_aead_aes_gcmz&LinuxKernelCryptoAPI.test_aead_aes_gcm  s   mm>?]]56@A@Amm$FG}}%GH\"u:__VZ0 1	8DOOFNNF,>,>DOOFNNF,H,H &* KKMEB >  F$9$9b*2&// ! K

5&//2

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

Ennf&7&7VEZEZ9[\nnf&7&7SW9MPR9RSnnf&B&BKPXDYZ ggc#h/0  c(F7.CD  sF78}=> KKMEB 8k)L8  #6+@+@R*2 ! 4ggc#h/0  HI78Y1	8 1	8> >> >> >8 8Y1	8 1	8sq   'A5QB/PQ(A6P"<QC.P/Q%AP;QP	Q"P,	'Q/P8	4Q;Q	 QQc                    | j                  dd      5 }t        j                  d      }|j                  t        j
                  t        j                  |       |j                         \  }}|5  |j                  d      }| j                  t        |      d       d d d        d d d        y # 1 sw Y   xY w# 1 sw Y   y xY w)Nrngdrbg_pr_sha256rI  )rM
  r  urandomr  r   r\
  r]
  r   r  r  r  )rZ   rW
  
extra_seedrX
  r   rns         r   test_drbg_pr_sha256z(LinuxKernelCryptoAPI.test_drbg_pr_sha256  s     __U$45 	.BJOOFNNF,>,>
KKKMEB .WWR[  R"-.		. 	.. .		. 	.s$   AB7--B+B7+B4	0B77C c                 &   t        j                   t         j                  t         j                  d      }|5  | j                  t              5  |j                          d d d        | j                  t              5  |j                  d        d d d        | j                  t              5  |j                  d       d d d        | j                  t              5  |j                  t         j                  d        d d d        | j                  t              5  |j                  t         j                  d       d d d        d d d        y # 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   uxY w# 1 sw Y   BxY w# 1 sw Y   y xY w)Nr   )rX
  r   )rX
  rx
  rZ  )r   r6   r2   r  r   rf
  rg
  r\  s     r   test_sendmsg_afalg_argsz,LinuxKernelCryptoAPI.test_sendmsg_afalg_args  s\   }}V]]F,A,A1E 	J""9- %""$% ""9- ,""d"+, ""9- &""1%& ""9- L""f&;&;d"KL ""9- J""f&;&;b"IJ	J 	J% %, ,& &L LJ J	J 	Js   FEF:EF*E#<F"E/;F"E;:FE	FE 	F#E,	(F/E8	4F;F	 FFc                 |   t        j                   t         j                  t         j                  d      }| j                  |j                         | j                  t              5  |j                  d       d d d        | j                  t        d      5  |j                  d       d d d        | j                  t              5  |j                  d       d d d        | j                  t        d      5  |j                  d       d d d        y # 1 sw Y   xY w# 1 sw Y   uxY w# 1 sw Y   RxY w# 1 sw Y   y xY w)Nr   )tttttttttttttr  ztype too long)ttttttttttttttr  )r}  ?nnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnzname too long)r}  @nnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnn)
r   r6   r2   ry   r!   r  r~	  r   r  r  r\  s     r   test_length_restrictionz,LinuxKernelCryptoAPI.test_length_restriction  s    }}V]]F,A,A1E

# 01 	*II()	*##J@ 	*II()	* 01 	*II()	*##J@ 	*II()	* 	*	* 	*	* 	*	* 	*	* 	*s0   $DDD&3D2DD#&D/2D;N)ra   rb   rc   rM
  r   r)  rY
  r_
  ro
  r
  r
  r
  r
  rd   r?   r   rI
  rI
  *  s    	 $W##Aq)9 *9"9 $W##Aq)&4 *&4P $W##Aq)<8 *<8| $W##Aq). *.J$*r?   rI
  r  r  c                       e Zd Zd Zy)TestMacOSTCPFlagsc                 B    | j                  t        j                         y r<   )r  r   TCP_KEEPALIVErY   s    r   test_tcp_keepalivez$TestMacOSTCPFlags.test_tcp_keepalive  s    ,,-r?   N)ra   rb   rc   r
  rd   r?   r   r
  r
    s    .r?   r
  winzrequires Windowsc                       e Zd Zh dZd Zy)TestMSWindowsTCPFlags>   
TCP_MAXSEGTCP_KEEPCNTTCP_NODELAYTCP_FASTOPENTCP_KEEPIDLETCP_KEEPINTVLc                     t        t              D cg c]  }|j                  d      s| }}|D cg c]  }|| j                  vs| }}| j	                  g |d       y c c}w c c}w )NTCPzANew TCP flags were discovered. See bpo-32394 for more information)dirr   ru  knownTCPFlagsr  )rZ   r$   providedunknowns       r   test_new_tcp_flagsz(TestMSWindowsTCPFlags.test_new_tcp_flags  sc    "6{B!all5.AABB&F!43E3E*E1FFWO	Q CFs   A!A!A&A&N)ra   rb   rc   r
  r
  rd   r?   r   r
  r
    s    MQr?   r
  c                   J   e Zd Zd Zd Zd Z ej                   ee	d       xs
  ee	d       d       ej                  ej                  d      d               Z ej                   ej                          d	       ej                  ej                  d      d
               Zy)CreateServerTestc                 6   t        j                         }t        j                  d|f      5 }| j	                  |j                         d   d       | j	                  |j                         d   |       d d d        t         j                  rwt        j                  d|ft        j                        5 }| j	                  |j                         d   d       | j	                  |j                         d   |       d d d        y y # 1 sw Y   xY w# 1 sw Y   y xY w)Nr  r   r   r  r  )r   r  r   create_serverr  r   r  rq  rZ   rW   rM  s      r   test_addresszCreateServerTest.test_address  s    --/!!;"56 	:$T--/2K@T--/2D9	: %%%%udm-3__> >AE  !1!1!3A!6>  !1!1!3A!6=> > &	: 	:> >s   AD2ADDDc                 >   t        j                  d      5 }| j                  |j                  t         j                         | j                  |j
                  t         j                         d d d        t        j                  rt        j                  dt         j                        5 }| j                  |j                  t         j                         | j                  j
                  t         j                         d d d        y y # 1 sw Y   xY w# 1 sw Y   y xY w)Nr  r  r   r  )
r   r
  r  r  rT   r}  rB   r   r  rq  )rZ   rM  r$   s      r   test_family_and_typez%CreateServerTest.test_family_and_type  s    !!"23 	<tT[[&..9TYY(:(:;	< %%%%jI @Q  6??;  F,>,>?@ @ &	< 	<@ @s   AD(ADDDc                 T   t        t        d      s6| j                  t              5  t        j                  dd       d d d        y t        j                  d      5 }|j                  t        j                  t        j                        }| j                  |d       d d d        t        j                  dd      5 }|j                  t        j                  t        j                        }| j                  |d       d d d        y # 1 sw Y   y xY w# 1 sw Y   vxY w# 1 sw Y   y xY w)NSO_REUSEPORT)r  r   T)
reuse_portr   )
r   r   r  r  r
  r  r  r
  r  r  )rZ   rM  r  s      r   test_reuse_portz CreateServerTest.test_reuse_port%  s    v~."":. H$$%5$GH H %%&67 )4oof&7&79L9LM  a() %%&64H ,Doof&7&79L9LM##C+, ,H H) ), ,s%   DAD<ADDDD'r  IPV6_V6ONLYz IPV6_V6ONLY option not supportedr  c                 x    t        j                  dt         j                        5 }d d d        y # 1 sw Y   y xY w)Nr
  r  )r   r
  rq  r\  s     r   test_ipv6_only_defaultz'CreateServerTest.test_ipv6_only_default1  s3    
 !!*V__E 	L 	L 	L 	Ls   09dualstack_ipv6 not supportedc                     t        j                  dt         j                  d      5 }| j                  |j                  t         j                         d d d        y # 1 sw Y   y xY w)Nr
  Tr  dualstack_ipv6)r   r
  rq  r  r  r\  s     r   test_dualstack_ipv6_familyz+CreateServerTest.test_dualstack_ipv6_family9  sM     !!*V__157 	;:>T[[&//:	; 	; 	;s   +AA$N)ra   rb   rc   r
  r
  r
  r   r  r   r  r  r   r  r
  r   has_dualstack_ipv6r
  rd   r?   r   r
  r
    s    	>@
, X__.99 9 -8879 X335RSL T9L X__2224435X335RS; T5;r?   r
  c                      e Zd Zej                  Zd Zd Zd Z e	j                  ej                  d      d        Z e	j                   ej                           d       e	j                  ej                  d      d               Z e	j                   ej                           d       e	j                  ej                  d      d               Zy	)
CreateServerFunctionalTestc                 0     fd}t        j                         |j                   j                         t        j                  ||f      } |j
                           j                  |j                   j                         j                          y )Nc                 *   | 5  | j                         \  }}|5  j                  j                         |j                  d      }|s	 d d d        d d d        y |j	                  |       d d d        d d d        y # 1 sw Y   xY w# 1 sw Y   y xY wr  )r   r   rL   r  r  )rM  r   r   r
  r  rZ   s       r   runz3CreateServerFunctionalTest.echo_server.<locals>.runF  s     &++-a &JJt||,))D/C	&& & LL%&& && && &s.   B	0A=
B	A=,B	=B	B		Br	  )	rq   r   r  rL   r  r  ry   r  r   )rZ   rM  r
  r   r  s   `   @r   echo_serverz&CreateServerFunctionalTest.echo_serverE  sd    	& !%!!D8<T\\2		r?   c                    t        j                   |      5 }|j                  | j                         |j                  |       |j	                  d       | j                  |j                  d      d       d d d        y # 1 sw Y   y xY w)Nr  r  r  )r   r  rL   r  r  r  r  )rZ   r  r  rM  s       r   echo_clientz&CreateServerFunctionalTest.echo_clientW  se    ]]&) 	6TOODLL)LLLL TYYt_f5		6 	6 	6s   AA??Bc                     t        j                         }t        j                  d|f      5 }| j	                  |       | j                  d|ft        j                         d d d        y # 1 sw Y   y xY w)Nr  r  )r   r  r   r
  r
  r
  rT   r
  s      r   	test_tcp4z$CreateServerFunctionalTest.test_tcp4^  sd    --/!!2t*- 	BT"k40&..A	B 	B 	Bs   4A))A2r  c                 
   t        j                         }t        j                  d|ft        j                        5 }| j                  |       | j                  d|ft        j                         d d d        y # 1 sw Y   y xY w)Nr  r  r  r   r  r   r
  rq  r
  r
  r
  s      r   	test_tcp6z$CreateServerFunctionalTest.test_tcp6d  si    --/!!2t*)/: 	==AT"eT]FOO<	= 	= 	=s   4A99Br
  c                    t        j                         }t        j                  d|ft        j                  d      5 }| j                  |       | j                  d|ft        j                         d d d        y # 1 sw Y   y xY w)Nr  Tr
  r  )r   r  r   r
  rq  r
  r
  rT   r
  s      r   test_dual_stack_client_v4z4CreateServerFunctionalTest.test_dual_stack_client_v4n  sr     --/!!2t*V__157 	B:>T"k40&..A	B 	B 	B   4A::Bc                    t        j                         }t        j                  d|ft        j                  d      5 }| j                  |       | j                  d|ft        j                         d d d        y # 1 sw Y   y xY w)Nr  Tr
  r  r
  r
  s      r   test_dual_stack_client_v6z4CreateServerFunctionalTest.test_dual_stack_client_v6x  sm     --/!!2t*V__157 	=:>T"eT]FOO<	= 	= 	=r
  N)ra   rb   rc   r   ru  rL   r
  r
  r
  r   r  r   r  r
  r  r   r
  r
  r
  rd   r?   r   r
  r
  B  s    &&G$6B X335RS= T= X__2224435X335RSB T5B X__2224435X335RS= T5=r?   r
  send_fdsrecv_fdsc                       e Zd Zd Zy)SendRecvFdsTestsc           	      "   d }d }t        d      D cg c]  }t        j                          }}| j                  ||       |D cg c]  \  }}|	 }}}t	        j
                  t        j                  t        j                        \  }}	|5  |	5  t	        j                  |t        g|       t	        j                  |	t        t              dz  t        |      dz        \  }
}}}| j                  ||       d d d        d d d        | j                  
t               | j                  t              t        |             | j                  d       t        |      D ]7  \  }}|\  }}t        j                  |t        |      j!                                9 t        |      D ]D  \  }}t        j"                  |d      }| j                  |t        |      j!                                F y c c}w c c}}w # 1 sw Y   xY w# 1 sw Y   xY w)Nc                 l    | D ]/  \  }}t        j                  |       t        j                  |       1 y r<   r  r!   )pipesr  fd2s      r   close_pipesz8SendRecvFdsTests.testSendAndRecvFds.<locals>.close_pipes  s+    ! Sr?   c                 <    | D ]  }t        j                  |        y r<   r
  )rj  r{  s     r   	close_fdsz6SendRecvFdsTests.testSendAndRecvFds.<locals>.close_fds  s     r?   r  r   r   r  )rC  r  pipery   r   r$  rR  rB   r
  r  r
  r  r  rm  rg  r  rh  r  )rZ   r
  r
  r   r
  rfdwfdrj  sock1sock2r
  fds2r  r  r6  r  s                   r   testSendAndRecvFdsz#SendRecvFdsTests.testSendAndRecvFds  s   	
	
 %*"I.q..U+#()xsCs)) ((9K9KLu 	-E 	-OOEC5#.%+__UCHqL#c(UV,%W"CudOOIt,		- 	- 	c"TCH-" $E* 	/JE3HCHHS#e*++-.	/ $D/ 	9JE3773$DTCJ$5$5$78	9- /)	- 	- 	- 	-s0   G,G1HA'G78H7H	<HHN)ra   rb   rc   r
  rd   r?   r   r
  r
    s    #9r?   r
  c                  t    t        j                         } t        j                  t         j                  g|   y r<   )r   threading_setupr   addModuleCleanupthreading_cleanup)thread_infos    r   setUpModuler
    s*    "224K.@@O;Or?   __main__)r   testr   test.supportr   r   r   _threadr   r  r  r+  r  r
  r  r
  r  rD  rt  r   r	  r  r  r  r   r	  r   rB  r  rq   r   r	  weakrefr   r	  r  r   requires_working_socketr   rh  r  r   systemr   r  r   r%   r*   r.   r3   r7   r:   r>   rD   rH   r  rN   HAVE_SOCKET_CANHAVE_SOCKET_CAN_ISOTPHAVE_SOCKET_CAN_J1939HAVE_SOCKET_RDSHAVE_SOCKET_ALGHAVE_SOCKET_QIPCRTRHAVE_SOCKET_VSOCKr   HAVE_SOCKET_UDPLITEHAVE_SOCKET_BLUETOOTHHAVE_SOCKET_HYPERVrZ  r  r   rR   rf   rj   rm   r   r   r   r   r   r  r   r   r   r  r   r  r!  r*  r4  r9  rB  rH  rP  rV  r^  rb  re  rh  rl  ro  rs  r  r  r  r  r  r  rC  rS  rr  r{  r  r  r  r  r  r/  rF  rO  rx  r  r  r  r  r  r  r  r  r  r(  r2  r8  rT  rd  r  rX  r\  r_  ra  rc  r  rh  rk  rm  ro  rr  rt  rv  rx  rz  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+  rt  r  r  r  r  r  r  r  r  r  r  r  r  r	  r	  r	  r#	  r<	  rW	  r	  r	  r	  r	  r	  r	  r	  r	  r	  r  r	  r	  rF
  rI
  r
  ru  r
  r
  r
  r
  r
  ra   mainrd   r?   r   <module>r
     s     " & )     	 	   	     	      
         t ,)009	hoo5 (
 . . #$.0 .0 "$"$*, &( f&78 .0 (*  U[[&&
	H%% 	H%% 7 77 7&0+H%% 0+f7H%% 7 m m^,M> ,,M> , (
35, 1> ,5,,M> ,(,M> ,, $-&
13WY!^
9;H$5$5~ ;3 .
<3/ 3B,X&& ,81X&& 10~ ,7,,>!!76!!H3 3A' A
6> 
6A, A@, @Xl X2\ 2 L  
A= AY} Y/.F3>TG** TGn& _&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\ *@B"** "B"J '>@/7h'' /7@/7dx!& x!v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f!0 f!Ro7 oh	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1MBD$M!7 $MD &$MR fn%WVW-M1MBD4F!7!:!9;4FD &4Fn) ( #.  #F]/ ]@`1 `FiG(? iGX*A 
+B 
)@ *A .E "F ")< P5 1 1 P5fD4m^ D4N>]N >>75] 75rK] K. (
35K* K5K.$X&& $. S\\W,.CD4H!2!2 4H E4Hn WVY/1LMG7X&& G7 NG7T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D*8,, D* 9D*N S\\X-/DE.)) . F.
 S\\,,U35GHQH-- Q IQ,0;x(( 0;f>=!2!2 >=@ fj!fj!fi $9x(( $9 ! " "$9NP
 zHMMO _T  O  E  GsE   AI 	AI' AI5 IAI$I#AI$I'AI2I1AI2I5AJ I?AJ 