Sindbad~EG File Manager

Current Path : /usr/local/lib/python3.9/test/__pycache__/
Upload File :
Current File : //usr/local/lib/python3.9/test/__pycache__/test_socket.cpython-39.opt-2.pyc

a

��g���@s�ddlZddlmZddlmZddlZddlZddlZddlZddl	Z	ddl
Z
ddlZddlZddl
Z
ddlZddlZddlZddlZddlZddlmZddlZddlZddlZddlZddlZddlZddlZddlZddlZzddlZWne �ydZYn0zddl!Z!Wne �y.dZ!Yn0ej"Z"d�#d�Z$dZ%e�&�d	kZ'zddl(Z(Wne �ytdZ(Yn0d
d�Z)dd
�Z*dd�Z+dd�Z,dd�Z-dd�Z.dd�Z/dd�Z0dd�Z1ej2dd��Z3e*�Z4e+�Z5e,�Z6e-�Z7e.�Z8e/�Z9e0�Z:e;ed�Z<e1�Z=e�d�j>Z?Gd d!�d!ej@�ZAGd"d#�d#ej@�ZBGd$d%�d%eB�ZCGd&d'�d'�ZDGd(d)�d)ej@�ZEGd*d+�d+ej@�ZFGd,d-�d-�ZGGd.d/�d/eAeG�ZHGd0d1�d1eBeG�ZIe�Je<d2�Gd3d4�d4eCeG��ZKGd5d6�d6eEeG�ZLGd7d8�d8eFeG�ZMe�Ne!dud9�e�Je:d:�e�Je)�d;kd<�Gd=d>�d>ej@eG����ZOGd?d@�d@eH�ZPGdAdB�dBej@eG�ZQGdCdD�dDej@�ZRGdEdF�dFeR�ZSGdGdH�dHeDeReG�ZTGdIdJ�dJeSeT�ZUGdKdL�dLeR�ZVGdMdN�dNeV�ZWGdOdP�dPeR�ZXGdQdR�dReX�ZYGdSdT�dTeX�ZZGdUdV�dVeX�Z[GdWdX�dXeX�Z\GdYdZ�dZeX�Z]Gd[d\�d\e]�Z^Gd]d^�d^e]�Z_d_d`�Z`dadb�Zadcdd�ZbGdedf�dfej@�Zce�Je4dg�Gdhdi�diej@��Zde�Je4dg�Gdjdk�dkeL��Zee�Je5dl�Gdmdn�dnej@��Zfe�Je6do�Gdpdq�dqej@��Zge�Je7dr�Gdsdt�dtej@��Zhe�Je7dr�Gdudv�dveM��Zie�Je9dw�Gdxdy�dyej@��Zje�Ne!dud9�e�Je:d:�Gdzd{�d{ej@���Zke�Je=d|�Gd}d~�d~ej@��ZlGdd��d�eP�ZmGd�d��d�eI�Zne�Je<d2�Gd�d��d�eK��ZoGd�d��d�eD�ZpGd�d��d�ep�ZqGd�d��d�ep�ZrGd�d��d�ep�ZsGd�d��d�ep�ZtGd�d��d�ep�ZuGd�d��d�ep�ZvGd�d��d�ev�ZwGd�d��d�ew�ZxGd�d��d�ew�ZyGd�d��d�ep�ZzGd�d��d�ez�Z{Gd�d��d�ez�Z|Gd�d��d�eqez�Z}Gd�d��d�ej@�Z~Gd�d��d�ev�ZGd�d��d�ev�Z�Gd�d��d�ereteTeZ�Z�eaejd��Gd�d��d�eye���Z�eaejd��Gd�d��d�e|e���Z�eaejd��Gd�d��d�e}e���Z�Gd�d��d�ereteTe^�Z�eaejd��e�Jej�d��ebd�d��Gd�d��d�eye�����Z�eaejd��e�Jej�d��ebd�d��Gd�d��d�e|e�����Z�eaejd��e�Jej�d��ebd�d��Gd�d��d�e}e�����Z�eaejd��e�Jej�d��eaed��ebd�d��Gd�d��d�e�e������Z�eaejd��e�Jej�d��eaed��ebd�d��Gd�d��d�eqe�e������Z�e�Je<d2�Gd�dÄd�ereteTe[��Z�e�Je<d2�eaejd��Gd�dńd�eye����Z�e�Je<d2�eaejd��Gd�dDŽd�e|e����Z�e�Je<d2�eaejd��Gd�dɄd�e}e����Z�e�Je<d2�Gd�d˄d�ereteTe_��Z�eaejd��e�Jej�d��e�Je<d2�ebd�d��Gd�d̈́d�eye������Z�eaejd��e�Jej�d��e�Je<d2�ebd�d��Gd�dτd�e|e������Z�eaejd��e�Jej�d��e�Je<d2�ebd�d��Gd�dфd�e}e������Z�eaejd��e�Jej�d��e�Je<d2�eaed��ebd�d��Gd�dӄd�e�e�������Z�eaejd��e�Jej�d��e�Je<d2�eaed��ebd�d��Gd�dՄd�eqe�e�������Z�Gd�dׄd�eueUeY�Z�eaejd��Gd�dلd�exe���Z�eaejd��Gd�dۄd�e|e{e���Z�eaejd��Gd�d݄d�e}e{e���Z�Gd�d߄d�eseueUe\�Z�eaejd��e�Ne'd�ebd�d�d�Gd�d�d�exe�����Z�eaejd��e�Ne'd�ebd�d�d�Gd�d�d�e|e{e�����Z�eaejd��e�Ne'd�ebd�d�d�Gd�d�d�e}e{e�����Z�Gd�d�d�eueUeW�Z�eaejd��eaed�Gd�d�d�exe����Z�eaejd��eaed�Gd�d�d�e|e{e����Z�eaejd��eaed�Gd�d�d�e}e{e����Z�eaejd�d��eaed�d�d�Gd�d��d�ee����Z�eaejd�d��eaed�d�d�Gd�d��d�eqee����Z�Gd�d��d��Z�eaed��e�Je;ed���p�e;ed��d��Gd��d��de�eZ���Z�eaed��e�Je;ed���
p"e;ed��d��G�d�d��de�eDeSeY���Z�G�d�d��deH�Z�G�d�d��deQ�Z�G�d�d��deQ�Z�G�d	�d
��d
eH�Z�G�d�d��deP�Z�G�d
�d��de��Z�G�d�d��de��Z�G�d�d��de��Z�G�d�d��de��Z�G�d�d��de��Z�G�d�d��de��Z�G�d�d��de��Z�G�d�d��de�em�Z�G�d�d��dej@�Z�G�d�d ��d eAeG�Z�G�d!�d"��d"eAeG�Z�G�d#�d$��d$eA�Z�G�d%�d&��d&eB�Z�e�Je<d2�G�d'�d(��d(eC��Z�G�d)�d*��d*ej@�Z�e�Jej�d+k�d,�G�d-�d.��d.ej@��Z�e�Je;ed��d/�G�d0�d1��d1ej@��Z�G�d2�d3��d3eP�Z��d4Z��d5Z��d6Z��d7�d8�Z�e�Jeƒ�d9�G�d:�d;��d;ej@��Z�e�Jeƒ�d9�G�d<�d=��d=ej@eG��Z�G�d>�d?��d?eH�Z�G�d@�dA��dAej@�Z�e�Je;e�dB��dC�G�dD�dE��dEej@��Z�e�JejȐdFk�dG�e�Je�dH�G�dI�dJ��dJeA���Z�G�dK�dL��dLeH�Z�e�Je;e�dM��dN�G�dO�dP��dPeʃ�Z�e�Je8�dQ�G�dR�dS��dSej@��Z�e�Jej�͐dT��dU�G�dV�dW��dWej@��Z�G�dX�dY��dYej@�Z�G�dZ�d[��d[ej@�Z�eae�d\�eae�d]�eaed�G�d^�d_��d_ej@����Zѐd`�da�Z�eӐdbk�r�e�ԡdS(c�N)�support)�
socket_helper)�proxyFuMichael Gilfix was hereሴ
�utf-8���AIXcCs�tdurdSttd�sdSz>tdd�� }t�|tjd�}Wd�n1sL0YWntylYdS0t�d|�dSdS)N�IOCTL_VM_SOCKETS_GET_LOCAL_CIDz
/dev/vsock�rbz    �Ir)	�fcntl�hasattr�socket�open�ioctlr�OSError�struct�unpack)�f�r�r�,/usr/local/lib/python3.9/test/test_socket.py�get_cid2s
2rc	Cs>zt�tjtjtj�}Wnttfy0YdS0|��dS�NFT)r
�PF_CAN�SOCK_RAW�CAN_RAW�AttributeErrorr�close��srrr�_have_socket_can?sr c	Cs>zt�tjtjtj�}Wnttfy0YdS0|��dSr)r
r�
SOCK_DGRAM�	CAN_ISOTPrrrrrrr�_have_socket_can_isotpIsr#c	Cs>zt�tjtjtj�}Wnttfy0YdS0|��dSr)r
rr!�	CAN_J1939rrrrrrr�_have_socket_can_j1939Ssr%c	Cs<zt�tjtjd�}Wnttfy.YdS0|��dS�NrFT)r
�PF_RDS�SOCK_SEQPACKETrrrrrrr�_have_socket_rds]sr)c	Cs<zt�tjtjd�}Wnttfy.YdS0|��dSr&)r
�AF_ALGr(rrrrrrr�_have_socket_alggsr+c	Cs<zt�tjtjd�}Wnttfy.YdS0|��dSr&)r
�
AF_QIPCRTRr!rrrrrrr�_have_socket_qipcrtrqsr-cCst�du}|S�N)r)�retrrr�_have_socket_vsock{s
r0c	Cs>zt�tjtjtj�}Wnttfy0YdS0|��dSr)r
�AF_BLUETOOTH�SOCK_STREAM�BTPROTO_RFCOMMrrrrrrr�_have_socket_bluetooth�sr4c	cs8t��}zt�|�dVWt�|�nt�|�0dSr.)r
�getdefaulttimeout�setdefaulttimeout)�timeoutZold_timeoutrrr�socket_setdefaulttimeout�s

r8�IPPROTO_UDPLITE�ic@seZdZdd�Zdd�ZdS)�
SocketTCPTestcCs.t�tjtj�|_t�|j�|_|j��dSr.)r
�AF_INETr2�servr�	bind_port�port�listen��selfrrr�setUp�szSocketTCPTest.setUpcCs|j��d|_dSr.�r=rrArrr�tearDown�s
zSocketTCPTest.tearDownN��__name__�
__module__�__qualname__rCrErrrrr;�sr;c@seZdZdd�Zdd�ZdS)�
SocketUDPTestcCs$t�tjtj�|_t�|j�|_dSr.)r
r<r!r=rr>r?rArrrrC�szSocketUDPTest.setUpcCs|j��d|_dSr.rDrArrrrE�s
zSocketUDPTest.tearDownNrFrrrrrJ�srJc@seZdZdd�ZdS)�SocketUDPLITETestcCs(t�tjtjtj�|_t�|j�|_dSr.)r
r<r!r9r=rr>r?rArrrrC�szSocketUDPLITETest.setUpN)rGrHrIrCrrrrrK�srKcs4eZdZ�fdd�Z�fdd�Z�fdd�Z�ZS)�ThreadSafeCleanupTestCasecs t�j|i|��t��|_dSr.)�super�__init__�	threading�RLock�
_cleanup_lock�rB�args�kwargs��	__class__rrrN�sz"ThreadSafeCleanupTestCase.__init__cs<|j�"t�j|i|��Wd�S1s.0YdSr.)rQrM�
addCleanuprRrUrrrW�sz$ThreadSafeCleanupTestCase.addCleanupcs<|j�"t�j|i|��Wd�S1s.0YdSr.)rQrM�
doCleanupsrRrUrrrX�sz$ThreadSafeCleanupTestCase.doCleanups)rGrHrIrNrWrX�
__classcell__rrrUrrL�srLc@sDeZdZdZdZdZe�e�ZdZ	e	de�e	�d7Z	dd�Z
d	S)
�
SocketCANTest�vcan0�z=IB3x8sz@3I4l2I�x�cCs`t�tjtjtj�|_|�|jj�z|j�|jf�Wn"t	yZ|�
d|j�Yn0dS�N�%network interface `%s` does not exist)r
rrrrrWr�bind�	interfacer�skipTestrArrrrCs�zSocketCANTest.setUpN)rGrHrIrb�bufsize�
can_frame_fmtr�calcsizeZcan_frame_size�bcm_cmd_msg_fmtrCrrrrrZ�s

rZc@seZdZdZdd�ZdS)�
SocketRDSTest� cCsVt�tjtjd�|_|�|jj�zt�|j�|_Wnt	yP|�
d�Yn0dS)Nrzunable to bind RDS socket)r
r'r(r=rWrrr>r?rrcrArrrrCszSocketRDSTest.setUpN)rGrHrIrdrCrrrrrhsrhc@s<eZdZdd�Zdd�Zdd�Zdd�Zd	d
�Zdd�Zd
S)�ThreadableTestcCs|j|_|j|_dSr.)rC�_ThreadableTest__setUp�_setUprArrrrNDszThreadableTest.__init__cCs|j��dSr.)�server_ready�setrArrr�serverExplicitReadyIsz"ThreadableTest.serverExplicitReadycs
t���_�j�����jjddd�t���_t���_	t���_
t�d��_d�_
�fdd�}��|����}|�d�}||dd�}t�d|�}t��j|f��_z0z���Wnd�_
�Yn0W�j��n�j��0�j	�����j
j�dS)N�Fcs�j��r�j���dSr.)�queue�qsize�getrrArr�raise_queued_exception[s
z5ThreadableTest._setUp.<locals>.raise_queued_exception�.�_T)rZwait_threads_exitZwait_threads�	__enter__rW�__exit__rO�Eventrm�client_ready�donerq�Queue�server_crashed�id�rfind�getattr�thread�start_new_thread�	clientRunZ
client_threadrkrn�wait)rBrtZ
methodnamer:Ztest_methodrrArrlPs2






�

zThreadableTest._setUpc
Cs�|j��zbz|��WnFty^}z.|j�|�|��WYd}~W|j��dSd}~00W|j��n|j��0|j	r�|��dSt
|d�s�td��zHz
|�Wn0ty�}z|j�|�WYd}~n
d}~00W|��n
|��0dS)N�__call__z%test_func must be a callable function)rmr��clientSetUp�
BaseExceptionrq�put�clientTearDownrzrnr}r�	TypeError)rBZ	test_func�errrr�rs(

�

$zThreadableTest.clientRuncCstd��dS)Nz clientSetUp must be implemented.)�NotImplementedErrorrArrrr��szThreadableTest.clientSetUpcCs|j��t��dSr.)r{rnr��exitrArrrr��s
zThreadableTest.clientTearDownN)	rGrHrIrNrorlr�r�r�rrrrrjs&"rjc@s&eZdZd	dd�Zdd�Zdd�ZdS)
�ThreadedTCPSocketTest�runTestcCstj||d�t�|�dS�N)�
methodName�r;rNrj�rBr�rrrrN�szThreadedTCPSocketTest.__init__cCst�tjtj�|_dSr.)r
r<r2�clirArrrr��sz!ThreadedTCPSocketTest.clientSetUpcCs|j��d|_t�|�dSr.�r�rrjr�rArrrr��s
z$ThreadedTCPSocketTest.clientTearDownN)r��rGrHrIrNr�r�rrrrr��s
r�c@s&eZdZd	dd�Zdd�Zdd�ZdS)
�ThreadedUDPSocketTestr�cCstj||d�t�|�dSr�)rJrNrjr�rrrrN�szThreadedUDPSocketTest.__init__cCst�tjtj�|_dSr.)r
r<r!r�rArrrr��sz!ThreadedUDPSocketTest.clientSetUpcCs|j��d|_t�|�dSr.r�rArrrr��s
z$ThreadedUDPSocketTest.clientTearDownN)r�r�rrrrr��s
r�z'UDPLITE sockets required for this test.c@s&eZdZd	dd�Zdd�Zdd�ZdS)
�ThreadedUDPLITESocketTestr�cCstj||d�t�|�dSr�)rKrNrjr�rrrrN�sz"ThreadedUDPLITESocketTest.__init__cCst�tjtjtj�|_dSr.)r
r<r!r9r�rArrrr��sz%ThreadedUDPLITESocketTest.clientSetUpcCs|j��d|_t�|�dSr.r�rArrrr��s
z(ThreadedUDPLITESocketTest.clientTearDownN)r�r�rrrrr��s
r�c@s&eZdZd	dd�Zdd�Zdd�ZdS)
�ThreadedCANSocketTestr�cCstj||d�t�|�dSr�)rZrNrjr�rrrrN�szThreadedCANSocketTest.__init__cCsBt�tjtjtj�|_z|j�|jf�Wnty<Yn0dSr.)r
rrrr�rarbrrArrrr��s
z!ThreadedCANSocketTest.clientSetUpcCs|j��d|_t�|�dSr.r�rArrrr��s
z$ThreadedCANSocketTest.clientTearDownN)r�r�rrrrr��s
	r�c@s&eZdZd	dd�Zdd�Zdd�ZdS)
�ThreadedRDSSocketTestr�cCstj||d�t�|�dSr�)rhrNrjr�rrrrN�szThreadedRDSSocketTest.__init__cCsLt�tjtjd�|_z |j�tdf�|j��|_WntyFYn0dS�Nr)	r
r'r(r�ra�HOST�getsockname�cli_addrrrArrrr��sz!ThreadedRDSSocketTest.clientSetUpcCs|j��d|_t�|�dSr.r�rArrrr��s
z$ThreadedRDSSocketTest.clientTearDownN)r�r�rrrrr��s
r��
need fcntlz%VSOCK sockets required for this test.�z-This test can only be run on a virtual guest.c@s6eZdZd
dd�Zdd�Zdd�Zdd	�Zd
d�ZdS)�ThreadedVSOCKSocketStreamTestr�cCstjj||d�t�|�dSr���unittest�TestCaserNrjr�rrrrN�sz&ThreadedVSOCKSocketStreamTest.__init__cCsht�tjtj�|_|�|jj�|j�tjtf�|j�	�|�
�|j��\|_|_
|�|jj�dSr.)r
�AF_VSOCKr2r=rWrra�VMADDR_CID_ANY�	VSOCKPORTr@ro�accept�conn�connaddrrArrrrC�s
z#ThreadedVSOCKSocketStreamTest.setUpcCsDt�d�t�tjtj�|_|�|jj�t�}|j�	|t
f�dS)N皙�����?)�time�sleepr
r�r2r�rWrr�connectr�)rBZcidrrrr��s

z)ThreadedVSOCKSocketStreamTest.clientSetUpcCs|j�d�}|�|t�dS�N�)r��recv�assertEqual�MSG�rB�msgrrr�
testStreamsz(ThreadedVSOCKSocketStreamTest.testStreamcCs|j�t�|j��dSr.�r��sendr�rrArrr�_testStreamsz)ThreadedVSOCKSocketStreamTest._testStreamN)r��rGrHrIrNrCr�r�r�rrrrr��s

	r�c@s6eZdZd
dd�Zdd�Zdd�Zdd	�Zd
d�ZdS)�SocketConnectedTestr�cCstj||d�dSr�)r�rNr�rrrrNszSocketConnectedTest.__init__cCs*t�|�|��|j��\}}||_dSr.)r�rCror=r��cli_conn�rBr��addrrrrrCs
zSocketConnectedTest.setUpcCs|j��d|_t�|�dSr.)r�rr�rErArrrrEs
zSocketConnectedTest.tearDowncCs(t�|�|j�t|jf�|j|_dSr.)r�r�r�r�r�r?�	serv_connrArrrr�s
zSocketConnectedTest.clientSetUpcCs|j��d|_t�|�dSr.)r�rr�r�rArrrr�$s
z"SocketConnectedTest.clientTearDownN)r�)rGrHrIrNrCrEr�r�rrrrr�s

r�c@s>eZdZddd�Zdd�Zdd�Zdd	�Zd
d�Zdd
�ZdS)�SocketPairTestr�cCs*tjj||d�t�|�d|_d|_dSr�)r�r�rNrjr�r=r�rrrrN+s
zSocketPairTest.__init__cCst��Sr.)r
�
socketpairrArrrr�1szSocketPairTest.socketpaircCs|��\|_|_dSr.)r�r=r�rArrrrC5szSocketPairTest.setUpcCs|jr|j��d|_dSr.rDrArrrrE8s
zSocketPairTest.tearDowncCsdSr.rrArrrr�=szSocketPairTest.clientSetUpcCs$|jr|j��d|_t�|�dSr.r�rArrrr�@s
zSocketPairTest.clientTearDownN)r�)	rGrHrIrNr�rCrEr�r�rrrrr�)s
r�c@s$eZdZdd�Zdd�Zdd�ZdS)�SocketTestBasecCs|��|_|��dSr.)�	newSocketr=�
bindServerrArrrrCVs
zSocketTestBase.setUpcCs|�|j�|j��|_dSr.)�bindSockr=r��	serv_addrrArrrr�ZszSocketTestBase.bindServercCs|j��d|_dSr.rDrArrrrE_s
zSocketTestBase.tearDownN)rGrHrIrCr�rErrrrr�Ms	r�cseZdZ�fdd�Z�ZS)�SocketListeningTestMixincst���|j��dSr.)rMrCr=r@rArUrrrCgs
zSocketListeningTestMixin.setUp�rGrHrIrCrYrrrUrr�dsr�cs<eZdZ�fdd�Zdd�Zdd�Zdd�Zd	d
�Z�ZS)�ThreadedSocketTestMixincs t�j|i|��t�|�dSr.)rMrNrjrRrUrrrNtsz ThreadedSocketTestMixin.__init__cCs|��|_|��dSr.)�newClientSocketr��
bindClientrArrrr�xs
z#ThreadedSocketTestMixin.clientSetUpcCs|��Sr.)r�rArrrr�|sz'ThreadedSocketTestMixin.newClientSocketcCs|�|j�|j��|_dSr.)r�r�r�r�rArrrr��sz"ThreadedSocketTestMixin.bindClientcCs|j��d|_t�|�dSr.r�rArrrr��s
z&ThreadedSocketTestMixin.clientTearDown)	rGrHrIrNr�r�r�r�rYrrrUrr�ls
r�cs@eZdZ�fdd�Z�fdd�Z�fdd�Z�fdd�Z�ZS)	�ConnectedStreamTestMixincs*t���|��|j��\}}||_dSr.)rMrCror=r�r�r�rUrrrC�s
zConnectedStreamTestMixin.setUpcs|j��d|_t���dSr.)r�rrMrErArUrrrE�s
z!ConnectedStreamTestMixin.tearDowncs$t���|j�|j�|j|_dSr.)rMr�r�r�r�r�rArUrrr��s
z$ConnectedStreamTestMixin.clientSetUpcs6z|j��d|_Wnty&Yn0t���dSr.)r�rrrMr�rArUrrr��s

z'ConnectedStreamTestMixin.clientTearDown)rGrHrIrCrEr�r�rYrrrUrr��s	r�cs$eZdZ�fdd�Zdd�Z�ZS)�UnixSocketTestBasecs(t��|_|�tj|j�t���dSr.)�tempfile�mkdtemp�dir_pathrW�os�rmdirrMrCrArUrrrC�s
zUnixSocketTestBase.setUpcCs,tj|jd�}t�||�|�tj|�dS)N)�dir)r��mktempr�r�bind_unix_socketrWr�unlink)rB�sock�pathrrrr��szUnixSocketTestBase.bindSock)rGrHrIrCr�rYrrrUrr��sr�c@seZdZdd�ZdS)�UnixStreamBasecCst�tjtj�Sr.)r
�AF_UNIXr2rArrrr��szUnixStreamBase.newSocketN�rGrHrIr�rrrrr��sr�cs(eZdZeZ�fdd�Zdd�Z�ZS)�InetTestBasecst���|jd|_dS�Nrp)rMrCr�r?rArUrrrC�s
zInetTestBase.setUpcCstj||jd�dS)N��host)rr>r��rBr�rrrr��szInetTestBase.bindSock)rGrHrIr�r�rCr�rYrrrUrr��sr�c@seZdZdd�ZdS)�TCPTestBasecCst�tjtj�Sr.)r
r<r2rArrrr��szTCPTestBase.newSocketNr�rrrrr��sr�c@seZdZdd�ZdS)�UDPTestBasecCst�tjtj�Sr.)r
r<r!rArrrr��szUDPTestBase.newSocketNr�rrrrr��sr�c@seZdZdd�ZdS)�UDPLITETestBasecCst�tjtjtj�Sr.)r
r<r!r9rArrrr��szUDPLITETestBase.newSocketNr�rrrrr��sr�c@seZdZdd�ZdS)�SCTPStreamBasecCst�tjtjtj�Sr.)r
r<r2�IPPROTO_SCTPrArrrr��s�zSCTPStreamBase.newSocketNr�rrrrr��sr�c@seZdZejZdS)�
Inet6TestBaseN)rGrHrIr�HOSTv6r�rrrrr��sr�c@seZdZdd�ZdS)�UDP6TestBasecCst�tjtj�Sr.)r
�AF_INET6r!rArrrr��szUDP6TestBase.newSocketNr�rrrrr��sr�c@seZdZdd�ZdS)�UDPLITE6TestBasecCst�tjtjtj�Sr.)r
r�r!r9rArrrr��szUDPLITE6TestBase.newSocketNr�rrrrr��sr�cs*dd����fdd�}dd�}|r&|S|S)Nc_sdSr.r�rSrTrrr�client_passsz%skipWithClientIf.<locals>.client_passcs*t���|�}t|t�s&�fdd�|_|S)Ncs�Sr.r�r)r�rr�<lambda>�z3skipWithClientIf.<locals>.skipdec.<locals>.<lambda>)r��skip�
isinstance�type�client_skip)�objZretval�r��reasonrr�skipdec
s
z!skipWithClientIf.<locals>.skipdeccSs"t|t�st|d�sdd�|_|S)Nr�cSs|Sr.rr�rrrr�r�z5skipWithClientIf.<locals>.noskipdec.<locals>.<lambda>)r�r�rr��r�rrr�	noskipdecs
z#skipWithClientIf.<locals>.noskipdecr)Z	conditionr�r�r�rr�r�skipWithClientIfs	r�cs0�fdd�|D�}t|dd�dd�|D���S)Ncsg|]}t�|�s|�qSr)r��.0�namer�rr�
<listcomp>r�z requireAttrs.<locals>.<listcomp>�don't have �, css|]
}|VqdSr.rr�rrr�	<genexpr> r�zrequireAttrs.<locals>.<genexpr>)r��join)r�Z
attributes�missingrr�r�requireAttrss�rc
Gs�d}dd�|D�}|r0dd�dd�|D��}nRdd�|D�}ztj|�}Wn,tyx}zt|�}WYd}~nd}~00|��t|dud�d�d	d�|D��|��S)
NcSs$g|]}t|t�rtt|�s|�qSr)r��strrr
�r�r�rrrr�+s�z!requireSocket.<locals>.<listcomp>r�rcss|]
}|VqdSr.rr�rrrr.r�z requireSocket.<locals>.<genexpr>cSs$g|]}t|t�rtt|�n|�qSr)r�rr�r
rrrrr�0s�zcan't create socket({0}): {1}css|]}t|�VqdSr.)r�r��orrrr<r�)rr
rrrr��format)rS�errrZcallargsrr�rrr�
requireSocket#s$���rc@speZdZdd�Zdd�Ze�edud�dd��Zd	d
�Z	dd�Z
d
d�Zdd�Zdd�Z
e�ejdkd�dd��Ze�ejdkd�e�ejd�dd���Zdd�Zdd�Zd d!�Ze�eed"�d#�e�eed$�d%�d&d'���Ze�eed(�d)�d*d+��Ze�eed,�d-�d.d/��Ze�eed0�d1�d2d3��Ze�eed4�d5�d6d7��Zd8d9�Z d:d;�Z!e"j#d<d=��Z$d>d?�Z%d@dA�Z&e�eedB�dC�dDdE��Z'e�eedF�dG�dHdI��Z(e�eedF�dG�dJdK��Z)e�eedL�dM�dNdO��Z*e�eedL�dM�dPdQ��Z+dRdS�Z,dTdU�Z-dVdW�Z.dXdY�Z/dZd[�Z0d\d]�Z1d^d_�Z2e�ejdkd�d`da��Z3e�ejdkd�e�eedb�dc�ddde���Z4dfdg�Z5dhdi�Z6e�e"�7dj�dk�dldm��Z8dndo�Z9dpdq�Z:drds�Z;dtdu�Z<dvdw�Z=dxdy�Z>dzd{�Z?d|d}�Z@d~d�ZAd�d��ZBd�d��ZCe"j#d�d���ZDe�ejd��d�d���ZEe�ejd��d�d���ZFe�ejd��e�Gejd�kd��e�GeHd��d�d�����ZIe�ejd��e�ejd�kd��d�d����ZJe�ejd��e�Gejd�kd��e�GeHd��d�d�����ZKe�ejd��e�ejd�kd��d�d����ZLd�d��ZMd�d��ZNd�d��ZOe�eed��d��d�d���ZPd�d��ZQd�d��ZRd�d��ZSd�d��ZTd�d��ZUe�Gejdkd��d�d���ZVd�d��ZWd�d��ZXdS)��GeneralModuleTestscCs<ddl}|�tj|ju�t��}|�|tj�|��dSr�)�_socket�
assertTruer
�
SocketType�assertIsInstancer)rBr
rrrr�test_SocketType_is_socketobjectDs
z2GeneralModuleTests.test_SocketType_is_socketobjectcCs�t�tjtj�}|��|�d|��t|��|�dtjt|��|�dtjt|��|�dt|��|�dt|��|�d�|�dt|��|�t|�	��t|��Wd�n1s�0Y|�dt|��|�dt|��dS)	Nzfd=%iz	family=%sztype=%szproto=0�raddr��	127.0.0.1r�laddrz[closed])
r
r<r2�assertIn�fileno�repr�assertNotInrarr��rBrrrr�	test_reprKs
6zGeneralModuleTests.test_reprNzneed _socket modulecCszt�tjtj�}z6d|��|j|j|jf}|�t	|�|�W|�
�n
|�
�0d|j|j|jf}|�t	|�|�dS)Nz4<socket object, fd=%s, family=%s, type=%s, proto=%s>z4<socket object, fd=-1, family=%s, type=%s, proto=%s>)r
r
r<r2r�familyr��protor�rr)rBr�expectedrrr�test_csocket_reprYs��z$GeneralModuleTests.test_csocket_reprcCs�t�tjtj��,}t|�}|�|��|���Wd�n1sB0Yd}t��z|��WntyvYn0|�	d�dS)NzSocket proxy still exists)
r
r<r2rr�rr�
gc_collect�ReferenceError�fail)rBr�prrr�test_weakreffs2zGeneralModuleTests.test_weakrefcCs�d}|jt|dd��t�Wd�n1s00Y|jt|dd��tj�Wd�n1sh0Y|jt|dd��tj�Wd�n1s�0YdS)Nz$Error raising socket exception (%s).r�r�z
socket.herrorzsocket.gaierror)�assertRaisesrr
�herror�gaierrorr�rrr�testSocketErrorss"$z"GeneralModuleTests.testSocketErrorcCst�tjtj�}|�|j�|�d�|��}|�t��}|�	d|�Wd�n1sZ0Y|�
t|j�d�|�t��}|�	d|�Wd�n1s�0Y|�
t|j�d�|�t��}|�	dd�Wd�n1s�0Y|�
dt|j��|�t��}|�	dd|�Wd�n1�s60Y|�
t|j�d�|�t��}|�	dd|�Wd�n1�s�0Y|�
t|j�d�|�t��}|�	ddd�Wd�n1�s�0Y|�
dt|j��|�t��}|�	dd	|�Wd�n1�s0Y|�
d
t|j��|�t��}|�	ddd�Wd�n1�sf0Y|�
d
t|j��|�t��}|�	d�Wd�n1�s�0Y|�
dt|j��|�t�� }|�	dd|d�Wd�n1�s�0Y|�
d
t|j��dS)N)�ru☠z*a bytes-like object is required, not 'str'y@z.a bytes-like object is required, not 'complex'�fooznot NoneTyper�barzan integer is requiredz	(1 given)�z	(4 given))r
r<r!rWrrar�r&r��sendtor�r�	exceptionr)rBr�sockname�cmrrr�testSendtoErrors}sT
*�*�*.�.�...*0z#GeneralModuleTests.testSendtoErrorscCs@tjtjrtjtjtjtjtjtjtj	tj
dSr.)r
r<�has_ipv6r�r2r!r�SOCK_RDMr(�
SOL_SOCKET�SO_REUSEADDRrArrr�testCrucialConstants�sz'GeneralModuleTests.testCrucialConstantscCstjtjtjrtjdSr.)r
�IPPROTO_TCP�IPPROTO_UDPr3�IPPROTO_IPV6rArrr�testCrucialIpProtoConstants�sz.GeneralModuleTests.testCrucialIpProtoConstants�nt�Windows specificcCs4tjtjtjtjtjtjtjtjdSr.)	r
ZIPPROTO_ICLFXBMZ
IPPROTO_STZIPPROTO_CBTZIPPROTO_IGPZIPPROTO_RDPZIPPROTO_PGMZIPPROTO_L2TPr�rArrr�testWindowsSpecificConstants�sz/GeneralModuleTests.testWindowsSpecificConstants�darwinzmacOS specific test�IPv6 required for this testcCs0hd�}|D]}|�tt|�d|�d��qdS)N>�IPV6_DSTOPTS�IPV6_RECVDSTOPTS�IPV6_RECVHOPLIMIT�IPV6_RECVHOPOPTS�IPV6_RECVRTHDR�IPV6_USE_MIN_MTU�IPV6_RTHDRDSTOPTS�IPV6_RECVPKTINFO�
IPV6_DONTFRAG�IPV6_PATHMTU�
IPV6_CHECKSUM�IPV6_NEXTHOP�IPV6_PKTINFO�IPV6_TCLASS�
IPV6_RTHDR�IPV6_HOPOPTS�
IPV6_HOPLIMIT�IPV6_RTHDR_TYPE_0�IPV6_RECVPATHMTU�IPV6_RECVTCLASSzMissing RFC3542 socket option '�')rrr
)rBZopts�optrrr�test3542SocketOptions�s
�z(GeneralModuleTests.test3542SocketOptionscCs�t��}zt�|�}Wnty2|�d�Yn0|�|�d�dkd�zt�|�\}}}Wntyz|�d�Yn0||g|}t�|�}||vr�|�	d|t
|�f�dS)N�name lookup failurerurzError resolving host to ip.z=Error testing host resolution mechanisms. (fqdn: %s, all: %s))r
�gethostname�
gethostbynamerrcr�find�
gethostbyaddr�getfqdnr"r)rB�hostname�ipZhname�aliases�ipaddrsZall_host_namesZfqhnrrr�testHostnameRes�s
z"GeneralModuleTests.testHostnameRescCsLtjddfD]}|�t�|�|�qtjfD]}|�|t�|�d�q,dS)Nz10.0.0.1�255.255.255.255r�)rZHOSTv4r�r
rZrr\)rBr�r�rrr�test_host_resolution�sz'GeneralModuleTests.test_host_resolutionc	Cs�d}dD]t}|jt|d��t�|�Wd�n1s:0Y|jt|d��t�|�Wd�q1sr0YqdS)Nz[resolving an invalid IP address did not raise OSError; can be caused by a broken DNS server)z0.1.1.~1z1+.1.1.1z::1qz::1::2z1:1:1:1:1:1:1:1:1r%)r&rr
rZr\)rBZexplanationr�rrr� test_host_resolution_bad_addresss�(z3GeneralModuleTests.test_host_resolution_bad_address�sethostnameztest needs socket.sethostname()rYztest needs socket.gethostname()c
Cs�t��}zt�d�Wn>tyT}z&|jtjkr>|�d�n�WYd}~n
d}~00z8|�t��d�t�d�|�t��d�Wt�|�nt�|�0dS)N�newztest should be run as rootsbarr,)r
rYrfr�errnoZEPERMrcr�)rBZoldhnr�rrr�test_sethostnames
z#GeneralModuleTests.test_sethostname�if_nameindexz$socket.if_nameindex() not available.cCs�t��}|D]p\}}|�|t�|�|t�|�|d�t�|�}|�|t�|�||�t�|�}|�|t�|�||�qdSr�)	r
rjr�intr�
assertGreater�if_nametoindexr��if_indextoname)rBZ
interfaces�indexr�Z_index�_namerrr�testInterfaceNameIndex%s

z)GeneralModuleTests.testInterfaceNameIndexrnz&socket.if_indextoname() not available.c	Cs�|�ttjd�|�ttjd�|�ttjdd�|�ttjd�ttd�r�tt���}|D]L}|d}||vr^|�ttf��t�|�Wd�q^1s�0Yq^dD]D}||vr�|�ttf��t�|�Wd�q�1s�0Yq�dS)	Nr���r����	_DEADBEEFrj�)���l����)	r&rr
rn�
OverflowErrorr�r�dictrj)rB�indicesro�index2rrr�testInvalidInterfaceIndexToName5s
*z2GeneralModuleTests.testInvalidInterfaceIndexToNamermz&socket.if_nametoindex() not available.cCs$|�ttjd�|�ttjd�dS)Nrrt)r&r�r
rmrrArrr�testInvalidInterfaceNameToIndexHsz2GeneralModuleTests.testInvalidInterfaceNameToIndex�getrefcountztest needs sys.getrefcount()cCsJzt�t�}t�td�Wn*tyDt�t�|kr@|�d�Yn0dS)Nrz$socket.getnameinfo loses a reference)�sysr}rGr
�getnameinfor�r")rB�origrrr�testRefCountGetNameInfoNs
z*GeneralModuleTests.testRefCountGetNameInfocCs(zt�dd�Wnty"Yn0dS)N)r]rrrr)r
rrrArrr�testInterpreterCrashZsz'GeneralModuleTests.testInterpreterCrashc	Cs�tjdtjdtjdtjdi}|��D]d\}}d|>d}dD]$}|�||@||||@��|@�q<||�}|�||@|�|�t|d�q$dS)N� �rp)rrp�i��r�igE#i2Tvl)	r
�htonl�ntohl�htons�ntohs�itemsr�r&rw)rBZsizes�func�size�maskr:Zswappedrrr�testNtoHbs�"zGeneralModuleTests.testNtoHcCs
ddl}gd�}|dg}ddddd>g}||jd|jdg}d	|jg}|D]}t�|�t�|�qP|D]}t�|�t�|�qn|D]$}|�t	tj|�|�t	tj|�q�|D]$}|�t	tj|�|�t	tj|�q�|D]$}|�
ttj|�|�
ttj|�q�dS)
Nr)rrpr�r�rvrr���rurprs�)�	_testcapiZINT_MIN�INT_MAXr
r�r�r�r�r&rw�assertWarns�DeprecationWarning)rBr�Z
s_good_valuesZ
l_good_valuesZl_bad_valuesZs_bad_valuesZs_deprecated_values�krrr�testNtoHErrorsps.

�


z!GeneralModuleTests.testNtoHErrorsc	Cs |j}tj�d�stjdvr"d}nd}|D].}zt�|d�}Wq^Wq*tyVYq*0q*t�ttd�rtt��dkr�t�|�}|||�zt�|d�}Wnty�d}Yn0|||�t	j
s�|t�|�|�|t�|d�|�|dur�|t�|d�|�|�t
tjd	�|�t
tjd
�dS)N)�freebsdZnetbsdZgnukfreebsd)�linuxr?)�daytimeZqotd�domain)Zechor�r�Ztcp�getandroidapilevel�Zudprrr�)r�r~�platform�
startswithr
�
getservbynamerrr�rZ
is_android�
getservbyportr&rw)rB�eqZservicesZservicer?Zport2Zudpportrrr�
testGetServBy�s<�


�



z GeneralModuleTests.testGetServByc	Cs0|�t��d�t��� }|�|��d�Wd�n1s>0Ytd���|�t��d�t��� }|�|��d�Wd�n1s�0Yt�d�|�t��d�t��� }|�|��d�Wd�n1s�0YWd�n1�s0Y|�ttjd�|�ttjd�dS)N�
rrZspam)	r�r
r5�
gettimeoutr8r6r&�
ValueErrorr�)rBrr�rrr�testDefaultTimeout�s
.

.

Nz%GeneralModuleTests.testDefaultTimeout�	inet_atonztest needs socket.inet_aton()cCs(|�dt�d��|�dt�d��dS)N��0.0.0.0�����rc)r�r
r�rArrr�testIPv4_inet_aton_fourbytes�sz/GeneralModuleTests.testIPv4_inet_aton_fourbytes�	inet_ptonztest needs socket.inet_pton()cs*ddlm}m�m���fdd�}�fdd�}��d|d����d|d	����d
|d����d|d
����d|d��ts�||d�||d�||d�||d�||d���d|d����d|d	����d
|d����d|d��||d�||d�||d�||d�||d�dS)Nr)r�r�r<cs
��|�Sr.r��a)r<r�rrr��r�z5GeneralModuleTests.testIPv4toString.<locals>.<lambda>cs��ttf||�Sr.�r&rr��r�r�rArrr��s
�r�r�s��z255.0.255.0s����z170.170.170.170��1.2.3.4r�rcz0.0.0.z	300.0.0.0za.0.0.0z	1.2.3.4.5�::1)r
r�r�r<r�r�rBr�g�
assertInvalidr)r<r�rBr�testIPv4toString�s.








z#GeneralModuleTests.testIPv4toStringc
s�z&ddlm�m�m}|s$��d�WntyB��d�Yn0tjdkr�z��d�Wn8ty�}z |j	dkr���d�WYd}~n
d}~00��fd	d
����fdd
�}��
d�d����
d�d
����
d�d����
d�d����
d�d����
d�d��|d�|d�|d�|d�|d�|d�|d�|d�t�s`|d���
d�d ����
d!�d"����
d#�d$��|d%�|d&�|d'�|d(�|d)�|d*�dS)+Nr)r�r�r3�IPv6 not available�+could not import needed symbols from socket�win32�::�&'�IPv6 might not be supportedcs
��|�Sr.rr�)r�r�rrr�r�z5GeneralModuleTests.testIPv6toString.<locals>.<lambda>cs��ttf�|�Sr.r�r��rrBrrr�	s
��z0::0sz1::sE�v�V���$��z$45ef:76cb:1a:56ef:afeb:bac:1924:aeaes�B
�'Tzad42:abc::127:0:254:2s
z12:a::z0x20::z:::z::0::z1::abc::z1::abc::defz1:2:3:4:5:6z1:2:3:4:5:6:z1:2:3:4:5:6:7:8:0z1:2:3:4:5:6:7:8:s�*@z::254.42.23.64sB���*@z42::a29b:254.42.23.64sB�������*@z"42:a8b9:0:2:ffff:a29b:254.42.23.64z255.254.253.252z1::260.2.3.0z1::0.be.e.0z1:2:3:4:5:6:7:1.2.3.4z::1.2.3.4:0z0.100.200.0:3:4:5:6:7:8)r
r�r�r3rc�ImportErrorr~r�r�winerrorr�r�rBr3r�r�r)r�rr�rBr�testIPv6toString�sj

 �����z#GeneralModuleTests.testIPv6toString�	inet_ntopztest needs socket.inet_ntop()csddlm}m�m���fdd�}�fdd�}��d|d����d|d	����d
|d����d|d
��||d�||d�||d���d|td	�����d|d����d|d	����d
|d��||d�||d�||d���d|td	���dS)Nr)�	inet_ntoar�r<cs
��|�Sr.rr�)r<r�rrr�;r�z5GeneralModuleTests.testStringToIPv4.<locals>.<lambda>cs��ttf||�Sr.r�r�rArrr�<s
�z1.0.1.0sz
170.85.170.85s�U�Urcr�r�r�ssr�)r
r�r�r<r��	bytearrayr�r)r<r�rBr�testStringToIPv47s$





z#GeneralModuleTests.testStringToIPv4c
sz&ddlm�m�m}|s$��d�WntyB��d�Yn0tjdkr�z��d�Wn8ty�}z |j	dkr���d�WYd}~n
d}~00��fd	d
����fdd
�}��
d�d����
d
�d����
d�d����
d
�td���|d�|d�|d�dS)Nr)r�r�r3r�r�r�r�r�r�cs
��|�Sr.rr�)r�r�rrr�br�z5GeneralModuleTests.testStringToIPv6.<locals>.<lambda>cs��ttf�|�Sr.r�r�r�rrr�cs
�r�r�sz!aef:b01:506:1001:ffff:9997:55:170s
�����Upsss)r
r�r�r3rcr�r~r�rr�r�r�r�r)r�rr�rBr�testStringToIPv6Qs0

 �z#GeneralModuleTests.testStringToIPv6cCs�t��}t�tjtj�}|�|j�|�d|f�|��}zt�	t�
��}Wntyh|�d�Yn0|�
|dd|fd|d�|�|d|�dS)Nr�rXrz
%s invalidrp)r�find_unused_portr
r<r2rWrrar�rZrYrrcrr�)rBr?r�r�Z
my_ip_addrrrr�testSockNameuszGeneralModuleTests.testSockNamecCs@t�tjtj�}|�|j�|�tjtj�}|�|dkd�dS)Nrzinitial mode is reuse)	r
r<r2rWr�
getsockoptr5r6�assertFalse�rBr�Zreuserrr�testGetSockOpt�sz!GeneralModuleTests.testGetSockOptcCsRt�tjtj�}|�|j�|�tjtjd�|�tjtj�}|�	|dkd�dS)Nrprzfailed to set reuse mode)
r
r<r2rWr�
setsockoptr5r6r�r�r�rrr�testSetSockOpt�s
z!GeneralModuleTests.testSetSockOptcCsNt�tjtj��}|�d�Wd�n1s00Y|�t|jd�dS)Nrp�spam)r
r<r2�
settimeoutr&rr�r�rrr�testSendAfterClose�s(z%GeneralModuleTests.testSendAfterClosec
Cs�t��}|�tjdf�tj|��d���z|��Wn:tyr}z"|�|jtjtj	f�WYd}~nd}~00|�
d�dS)Nr�rz#close() should raise EBADF/ENOTSOCK)r
ra�
_LOCALHOSTrrrrrh�EBADF�ENOTSOCKr")rBr�r
rrr�testCloseException�s,z%GeneralModuleTests.testCloseExceptioncCs�t�tjtj��f}|�|jtj�ttd�rJ|�|jtjtjBtjf�n|�|jtj�|�|j	d�Wd�n1s|0YdS)N�SOCK_CLOEXECr)
r
r<r2r�rrrr�r�rr�rrr�testNewAttributes�s

��z$GeneralModuleTests.testNewAttributescCs�t��}|�|j�t��}|d}|d}|�t|jt|f�|�t|jt|f�t	�
�D]^}t��}z|�t|f�Wn:ty�}z"|jtj
ks�|dkr��WYd}~q\d}~00q�q\dS)Nr��)r
rWrrr�r&rwrar��	itertools�countrrhZ
EADDRINUSE)rBr�r?Zbig_portZneg_portr:r�rrr�test_getsockaddrarg�sz&GeneralModuleTests.test_getsockaddrargcCs�|�ttjd��|�ttd��|�ttd��|�ttd��|�ttd��t��}|�|j�|�t|jdd�|�tjd�dS)NrZ
SIO_RCVALLZ	RCVALL_ONZ
RCVALL_OFF�SIO_KEEPALIVE_VALSrr)rp�dr�)	rrr
rWrr&r�rr�rrrr�test_sock_ioctl�sz"GeneralModuleTests.test_sock_ioctl�SIO_LOOPBACK_FAST_PATHz1Loopback fast path support required for this testc
Cs~t��}|�|j�z|�tjd�Wn>tyd}z&d}|j|krN|�d��WYd}~n
d}~00|�t	|jtjd�dS)NTi='zQSIO_LOOPBACK_FAST_PATH is defined but doesn't implemented in this Windows version)
r
rWrrr�rr�rcr&r�)rBr�excZ
WSAEOPNOTSUPPrrr�test_sio_loopback_fast_path�s

z.GeneralModuleTests.test_sio_loopback_fast_pathc

Cs@zt�dd�Wn>tjyN}z$|jtjkr8|�d��WYd}~n
d}~00t�td�D]}|�t|�d�q\t�dd�t�dd�t�dd�t	j
r�t�dd�ttd�r�t�
�dkr�t�td	�t�td�t�td�t�tdtjtj�}|D]J\}}}}}|�|tj�|�t|�d
�|�|tj�|�t|�d�q�t�tddtj�}|D]\}}}}}|�|tj��q\t�tdddtj�t�tddddtj�t�ddtjtjdtj�t�td�}tjtdd
�}	|�||	�t�tdtj�}tjtdtjd�}	|�||	�t�tddtj�}tjtdtjd�}	|�||	�t�tdddtj�}tjtdtjd�}	|�||	�t�tddddtj�}tjtdtjd�}	|�||	�t�ddtjtjdtj�}tjddtjtjdtjd�}	|�||	�|�ttjdd�ttd��r<zt�dddddtj�Wntj�y:Yn0dS)N�	localhost�Pzbuggy libc versionr�rr�r�r��http�AddressFamily.AF_INET�SocketKind.SOCK_STREAMr)r�r?�r�r�)r)�flags)r�r?rr�rr�u��AI_NUMERICSERV)r
�getaddrinfor(rh�EAI_SERVICErcr�r��lenr�IPV6_ENABLEDrr~r�r<r2r�SOL_TCP�
AI_PASSIVE�	AF_UNSPECr&�UnicodeEncodeErrorr�)
rBr
�infoZinfosrr�rv�socktyper��brrr�testGetaddrinfo�s�


�����z"GeneralModuleTests.testGetaddrinfocCs|�ttjdd�dS)N)zmail.python.orgrr)r&rr
rrArrr�test_getnameinfo4sz#GeneralModuleTests.test_getnameinfo�networkznetwork is not enabledcCsdt�d��t�d�Wd�n1s*0Yd}t�|�t�|�t�|dtjtj�dS)Nz
python.orgu!испытание.pythontest.netr)rZtransient_internetr
rZ�gethostbyname_exr�r�r2)rBr�rrr�	test_idna8s(

zGeneralModuleTests.test_idnac
s2ttd�rttd�s��d��fdd�}�fdd�}t��\}}t�tj|�}z�|r`|�d���t��*t�	d	�|�
d
tj�Wd�n1s�0Y|r�t�tj|�t�	d	���tj
|j
d
tj�Wt�	d�t�tj|�|��|��n*t�	d�t�tj|�|��|��0dS)N�alarmr�z9signal.alarm and socket.socketpair required for this testcs��ttjd�dSr��r&r��math�acosh�rSrArr�
ok_handlerOsz@GeneralModuleTests.check_sendall_interrupted.<locals>.ok_handlercs��ttjd�dddS�Nrrpr�rrArr�raising_handlerQszEGeneralModuleTests.check_sendall_interrupted.<locals>.raising_handlerg�?rp�xr)r�signalr
rcr��SIGALRMr�r&�ZeroDivisionErrorr��sendallr�
SOCK_MAX_SIZEr7r)rBZwith_timeoutrr�cr�	old_alarmrrAr�check_sendall_interruptedIs4


.
�

�
z,GeneralModuleTests.check_sendall_interruptedcCs|�d�dS�NF�rrArrr�test_sendall_interruptedhsz+GeneralModuleTests.test_sendall_interruptedcCs|�d�dS)NTrrArrr�%test_sendall_interrupted_with_timeoutksz8GeneralModuleTests.test_sendall_interrupted_with_timeoutcCs�t�tjtj�}t|�}|�t��}d}t��Wd�n1sD0Y|�|t	|j
jd��t�tjtj�}|�d�}t|�}d}t��|�t��d}t��Wd�n1s�0YdS)Nrr	)
r
r<r2rr��ResourceWarningrr rr�warningrS�makefile)rBr�rr1rrrr�test_dealloc_warnns&
z$GeneralModuleTests.test_dealloc_warncCsVt�tjtj��2}|�d�}|��|�t|�d�Wd�n1sH0YdS)Nr	z<_io.BufferedReader name=-1>)r
r<r2rrr�r�rBr��fprrr�test_name_closed_socketios
z,GeneralModuleTests.test_name_closed_socketiocCs�t���z}|jddd�}|�|���|�|���|�|���|��|�t	|j�|�t	|j�|�t	|j�Wd�n1s�0YdS)Nr	r)�	buffering)
r
rr�readabler��writable�seekablerr&r�rrrr�test_unusable_closed_socketio�s
z0GeneralModuleTests.test_unusable_closed_socketiocCs2t��}z�|�tdf�t�|���|�t��|�d�Wd�n1sP0YW|�t��|��Wd�q�1s�0Yn4|�t��|��Wd�n1s�0Y0|�t��t�d�Wd�n1s�0Y|�t��t�d�Wd�n1�s$0YdS)Nrrprr)	r
rar�rrr&rr@r�r�rrr�test_socket_close�s*(�((z$GeneralModuleTests.test_socket_closecCs�dD]�}|j|d��pt���H}|�|��}|�|j|�Wd�n1sN0YWd�n1sl0YWd�q1s�0YqdS)N)rr	�rw�w�wb��mode)�subTestr
rr�r$)rBr$r�rrrr�test_makefile_mode�s

z%GeneralModuleTests.test_makefile_modecCs�dD]�}|j|d��nt���F}|�td��|�|�Wd�n1sL0YWd�n1sj0YWd�q1s�0YqdS)N)�rtr]�+r�r#zinvalid mode)r%r
�assertRaisesRegexr�r)rBr$r�rrr�test_makefile_invalid_mode�s

z-GeneralModuleTests.test_makefile_invalid_modecCs�t��}|�6ttjd�D]}|�ttj||�qWd�n1sH0Yttjd�D]H}t�t�tj|��}|�	|tj�t�t�tj
|��}|�	|tj
�q`dSr�)r
�range�pickle�HIGHEST_PROTOCOLr&r��dumps�loadsr<r�r2)rBr��protocolrr�rrr�test_pickle�s2zGeneralModuleTests.test_picklec	Cs�dD]L}t�tjtj��(}|�tdf�|�|�Wd�q1sF0Yqt�tjtj��&}|�tdf�|��Wd�n1s�0YdS)N)rrrr)r
r<r2rar�r@)rB�backlog�srvrrr�test_listen_backlog�s*z&GeneralModuleTests.test_listen_backlogcCs`ddl}t�tjtj��4}|�tdf�|�t|j|j	d�Wd�n1sR0YdSr)
r�r
r<r2rar�r&rwr@r�)rBr�r3rrr�test_listen_backlog_overflow�sz/GeneralModuleTests.test_listen_backlog_overflow�IPv6 required for this test.cCsf|�ttjtjddfd�t�tjtj��(}|�t|jtjddf�Wd�n1sX0YdS)Nrrvi����)	r&rwr
rrr�r�r2rarrrr�
test_flowinfo�s

�z GeneralModuleTests.test_flowinfocCs0t�ddtjtjtj�\�^}}|�|d�dS)N�ff02::1de:c0:face:8Dr)�ff02::1de:c0:face:8drrr)r
r�r�r!r9r�)rBrv�sockaddrrrr�test_getaddrinfo_ipv6_basic�s�z.GeneralModuleTests.test_getaddrinfo_ipv6_basicr�zdoes not work on WindowszSymbolic scope id does not workcCsLt��d\}}t�d|dtjtjtj�\�^}}|�|ddd|f�dS)Nr�ff02::1de:c0:face:8D%rr9)r
rjr�r�r!r9r�)rB�ifindex�test_interfacervr:rrr�&test_getaddrinfo_ipv6_scopeid_symbolic�s�z9GeneralModuleTests.test_getaddrinfo_ipv6_scopeid_symbolicz.Numeric scope id does not work or undocumentedcCsDd}t�dt|�dtjtjtj�\�^}}|�|ddd|f�dS)N�*r<rr9r)r
r�rr�r!r9r�)rBr=rvr:rrr�%test_getaddrinfo_ipv6_scopeid_numeric�s
�z8GeneralModuleTests.test_getaddrinfo_ipv6_scopeid_numericcCsHt��d\}}ddd|f}t�|tjtjB�}|�|d|df�dS)Nrr8r�ff02::1de:c0:face:8d%�1234)r
rjr�NI_NUMERICHOST�NI_NUMERICSERVr�)rBr=r>r:�nameinforrr�&test_getnameinfo_ipv6_scopeid_symbolic�sz9GeneralModuleTests.test_getnameinfo_ipv6_scopeid_symboliccCs@d}ddd|f}t�|tjtjB�}|�|dt|�df�dS)Nr@r8rrrBrC)r
rrDrEr�r)rBr=r:rFrrr�%test_getnameinfo_ipv6_scopeid_numericsz8GeneralModuleTests.test_getnameinfo_ipv6_scopeid_numericcCsXt�tjtj��4}|�t|j�d�|�t|j�d�Wd�n1sJ0YdS)Nr�r�)r
r<r2r�rrr�rrrr�test_str_for_enumssz%GeneralModuleTests.test_str_for_enumscCs�ttdd�}ttdd�}tj|B|B}t�tj|���}|�|jtj�|�d�|�|jtj�|�d�|�|jtj�|�d�|�|jtj�|�d�|�|jtj�Wd�n1s�0YdS)N�
SOCK_NONBLOCKrr�rpTF)r�r
r2r<r�r�r��setblocking)rBrJr�Z	sock_typerrrr� test_socket_consistent_sock_types



z3GeneralModuleTests.test_socket_consistent_sock_typecCs�t�tjtj�}|��}ttjj���d}tdd�tjj�	�D��d}tj||d|d��>}|�
|j|�|�
|j|�|�
|jddh�Wd�n1s�0YdS)Nrpcss|]\}}|dvr|VqdS)>r�rJNr)r�r��kindrrrr3s�zEGeneralModuleTests.test_unknown_socket_family_repr.<locals>.<genexpr>r�)rr�rrr)r
r<r2�detach�max�
AddressFamily�__members__�values�
SocketKindr�r�rr�rr)rBr��fdZunknown_familyZunknown_typerrrr�test_unknown_socket_family_repr(s 
���z2GeneralModuleTests.test_unknown_socket_family_repr�sendfileztest needs os.sendfile()c	CsGdd�d�}t����}t�tjtj�}t�|�|�tj��|�||��Wd�n1sb0Y|�t	��"|�|dd��Wd�n1s�0Y|�t
��|�|d��Wd�n1s�0YWd�n1s�0YdS)Nc@seZdZdd�Zdd�ZdS)z<GeneralModuleTests.test__sendfile_use_sendfile.<locals>.FilecSs
||_dSr.�rT)rBrTrrrrNDszEGeneralModuleTests.test__sendfile_use_sendfile.<locals>.File.__init__cSs|jSr.rWrArrrrGszCGeneralModuleTests.test__sendfile_use_sendfile.<locals>.File.filenoN)rGrHrIrNrrrrr�FileCsrXr�rs)r
r�r�curdir�O_RDONLYrr&�_GiveupOnSendfile�_sendfile_use_sendfilerwr�)rBrXr�rTrrr�test__sendfile_use_sendfileAs

,0z.GeneralModuleTests.test__sendfile_use_sendfilecCst|�|j|�|�|j|�|��}tj|d�}|�|j�|��|�|j|�|�|j|�|�|��|�dS�Nr�)r�rr�rr
rWrrN)rBrr�styperT�s2rrr�_test_socket_filenoSsz&GeneralModuleTests._test_socket_filenocCsPt�tjtj�}|�|j�|�tjdf�|�|tjtj�t	td�r�t�tjtj
�}|�|j�|�tjdf�|�|tjtj
�tjr�t�tjtj�}|�|j�|�tj
dddf�|�|tjtj�t	td��rLt��}|�tj|�t�tjtj�}|�|j�z|�tj�|d��Wnt�y8Yn0|�|tjtj�dS)Nrr!r�r
)r
r<r2rWrrarr�rarr!r�r�r�r�r��shutil�rmtreer�r�r�r�PermissionError)rBrZtmpdirrrr�test_socket_fileno`s4

�z%GeneralModuleTests.test_socket_filenocCsD|�td��$tjtjtjdd�Wd�n1s60YdS)Nzinteger argument expectedg@E@r��r)r�r
r<r2rArrr� test_socket_fileno_rejects_floatsz3GeneralModuleTests.test_socket_fileno_rejects_floatcCsD|�td��$tjtjtjdd�Wd�n1s60YdS)Nzinteger is required�foor�rfrArrr�&test_socket_fileno_rejects_other_types�sz9GeneralModuleTests.test_socket_fileno_rejects_other_typescCsD|�td��$tjtjtjdd�Wd�n1s60YdS)N�negative file descriptorrrr��r)r�r
r<r2rArrr�)test_socket_fileno_rejects_invalid_socket�sz<GeneralModuleTests.test_socket_fileno_rejects_invalid_socketzWindows disallows -1 onlycCsD|�td��$tjtjtjdd�Wd�n1s60YdS)Nrji���r�rkrArrr�#test_socket_fileno_rejects_negative�sz6GeneralModuleTests.test_socket_fileno_rejects_negativecCs�d}|�t�� }tjt��d�Wd�n1s40Y|�|jjtj|f�|�t��(}tjtj	tj
t��d�Wd�n1s�0Y|�|jjtj|f�dS)Ni6'r�)r&rr
rZmake_bad_fdrr/rhr�r<r2)rBZWSAENOTSOCKr1rrr�$test_socket_fileno_requires_valid_fd�s.�$z7GeneralModuleTests.test_socket_fileno_requires_valid_fdc	Cs�t����}|�t�� tj|��d�Wd�n1s:0Y|�t��(}tjtjtj|��d�Wd�n1s|0Y|�|j	j
t
j�Wd�n1s�0YdSr^)r��NamedTemporaryFiler&rr
rr<r2r�r/rhr�)rBZafiler1rrr�%test_socket_fileno_requires_socket_fd�s
.�$z8GeneralModuleTests.test_socket_fileno_requires_socket_fd)YrGrHrIrrr��
skipUnlessr
rr$r)r2r7r;r�r�r>r~r�rr�rWrbrdrerr
rirqr{r|r�r�r�r�cpython_onlyr�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�Zis_resource_enabledr�rrrrrrrr&r*r1r4r5r7r;�skipIfrr?rArGrHrIrLrUr]rarergrirlrmrnrprrrrrBs


,


	�
�
�
�


,�
�
�
>�
�
"

�
N�




	
�

�



rz!SocketCan required for this test.c@s�eZdZdd�Ze�eed�d�dd��Zdd�Z	e�eed�d�d	d
��Z
dd�Zd
d�Ze�eed�d�dd��Z
e�eed�d�dd��ZdS)�BasicCANTestcCstjtjtjdSr.)r
�AF_CANrrrArrrr7�sz!BasicCANTest.testCrucialConstants�CAN_BCM�&socket.CAN_BCM required for this test.cCs�tjtjtjtjtjtjtjtjtj	tj
tjtjtj
tjtjtjtjtjtjtjtjtjtjtjdSr.)r
rvZCAN_BCM_TX_SETUPZCAN_BCM_TX_DELETEZCAN_BCM_TX_READ�CAN_BCM_TX_SENDZCAN_BCM_RX_SETUPZCAN_BCM_RX_DELETEZCAN_BCM_RX_READZCAN_BCM_TX_STATUSZCAN_BCM_TX_EXPIREDZCAN_BCM_RX_STATUSZCAN_BCM_RX_TIMEOUTZCAN_BCM_RX_CHANGEDZCAN_BCM_SETTIMERZCAN_BCM_STARTTIMERZCAN_BCM_TX_COUNTEVTZCAN_BCM_TX_ANNOUNCEZCAN_BCM_TX_CP_CAN_IDZCAN_BCM_RX_FILTER_IDZCAN_BCM_RX_CHECK_DLCZCAN_BCM_RX_NO_AUTOTIMERZCAN_BCM_RX_ANNOUNCE_RESUMEZCAN_BCM_TX_RESET_MULTI_IDXZCAN_BCM_RX_RTR_FRAMErArrr�testBCMConstants�s0zBasicCANTest.testBCMConstantscCs8t�tjtjtj��}Wd�n1s*0YdSr.�r
rrrrrrr�testCreateSocket�szBasicCANTest.testCreateSocketcCs8t�tjtjtj��}Wd�n1s*0YdSr.)r
rr!rvrrrr�testCreateBCMSocket�sz BasicCANTest.testCreateBCMSocketcCsVt�tjtjtj��.}d}|�|�|�|��|�Wd�n1sH0YdS)N)r*)r
rrrrar�r�)rBr�addressrrr�testBindAny�s
zBasicCANTest.testBindAnycCsJt�tjtjtj��"}|�td|jd�Wd�n1s<0YdS)N�interface name too long)�xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx)r
rrrr)rrarrrr�testTooLongInterfaceName�s�z%BasicCANTest.testTooLongInterfaceName�CAN_RAW_LOOPBACKz/socket.CAN_RAW_LOOPBACK required for this test.c	Cslt�tjtjtj��D}dD].}|�tjtj|�|�||�tjtj��qWd�n1s^0YdS)N)rrp)	r
rrrr��SOL_CAN_RAWr�r�r�)rBrZloopbackrrr�testLoopback�s��zBasicCANTest.testLoopback�CAN_RAW_FILTERz-socket.CAN_RAW_FILTER required for this test.c	Cs�d\}}t�d||�}t�tjtjtj��R}|�tjtj|�|�	||�
tjtjd��|�tjtjt|��Wd�n1s�0YdS)N)�iz=IIr^)r�packr
rrrr�r�r�r�r�r�)rB�can_idZcan_maskZ
can_filterrrrr�
testFilter�s�zBasicCANTest.testFilterN)rGrHrIr7r�rqrr
ryr{r|r~r�r�r�rrrrrt�s(�
�
�
�rtc@s�eZdZddd�Zedd��Zedd��Zdd	�Zd
d�Zdd
�Z	dd�Z
dd�Zdd�Ze
�eed�d�dd��Ze
�eed�d�dd��ZdS)�CANTestr�cCstj||d�dSr�)r�rNr�rrrrNszCANTest.__init__cCs&t|�}|�dd�}t�|j|||�S)Nr^�)r��ljustrr�re)�clsr��data�can_dlcrrr�build_can_frameszCANTest.build_can_framecCs&t�|j|�\}}}|||d|�fSr.)rrre)r��framer�r�r�rrr�dissect_can_frameszCANTest.dissect_can_framecCs6|j�|j�\}}|�|j|�|�|d|j�dSr�)r�recvfromrdr��cfrb�rBr�r�rrr�
testSendFrameszCANTest.testSendFramecCs |�dd�|_|j�|j�dS)Nrs�r�r�r�r�rArrr�_testSendFrameszCANTest._testSendFramecCs$|j�|j�\}}|�|j|�dSr.)rr�rdr�r�r�rrr�testSendMaxFrameszCANTest.testSendMaxFramecCs |�dd�|_|j�|j�dS)Nrsr�rArrr�_testSendMaxFrameszCANTest._testSendMaxFramecCsD|j�|j�\}}|�|j|�|j�|j�\}}|�|j|�dSr.)rr�rdr��cf1�cf2r�rrr�testSendMultiFrames"szCANTest.testSendMultiFramescCs<|�dd�|_|j�|j�|�dd�|_|j�|j�dS)N�sD3"�s�"3)r�r�r�r�r�rArrr�_testSendMultiFrames)szCANTest._testSendMultiFramesrvrwcCsP|j�|j�\}}|�|j|�|�|�\}}}|�|j|�|�|j|�dSr.)r�r�rdr�r�r�r�r�)rBr�r�r�r�r�rrr�_testBCM0s
zCANTest._testBCMcCs�t�tjtjtj�}|�|j�|�|jf�d|_t	gd��|_
|�|j|j
�|_tj
}d}d}d}}}}d}	d}
t�|j||||||||	|
�
}||j}|�|�}
|�|
t|��dS)N�#)����ri"rp)r
rr!rvrWrr�rbr��bytesr�r�r�rxrr�rgr�r�r�)rBZbcmZopcoder�r�Z
ival1_secondsZ
ival1_usecZ
ival2_secondsZ
ival2_usecZ
bcm_can_idZnframes�headerZheader_plus_frameZ
bytes_sentrrr�testBCM9s4�

zCANTest.testBCMN)r�)rGrHrIrN�classmethodr�r�r�r�r�r�r�r�r�rqrr
r�r�rrrrr��s&


�
�r�z!CAN ISOTP required for this test.csVeZdZ�fdd�Zdd�Zdd�Ze�ee	d�d�d	d
��Z
dd�Zd
d�Z�Z
S)�	ISOTPTestcst�j|i|��d|_dS�Nr[�rMrNrbrRrUrrrN\szISOTPTest.__init__cCstjtjtjtjdSr.)r
rurr"r!rArrrr7`szISOTPTest.testCrucialConstantscCs8t�tjtjtj��}Wd�n1s*0YdSr.rzrrrrr{fszISOTPTest.testCreateSocketr"z(socket.CAN_ISOTP required for this test.cCs8t�tjtjtj��}Wd�n1s*0YdSr.)r
rr!r"rrrr�testCreateISOTPSocketjszISOTPTest.testCreateISOTPSocketc	Csnt�tjtjtj��F}|�td��|�d�Wd�n1sB0YWd�n1s`0YdS)Nr)r�rpr�)r
rr!r"r)rrarrrrr�psz"ISOTPTest.testTooLongInterfaceNamec
Cs�z^t�tjtjtj��6}|jddf}|�|�|�|��|�Wd�n1sR0YWnDty�}z,|j	t	j
kr�|�d|j�n�WYd}~n
d}~00dS)Nr�iVr`)r
rr!r"rbrar�r�rrh�ENODEVrc�rBrr�r�rrr�testBindvs
2�zISOTPTest.testBind)rGrHrIrNr7r{r�rqrr
r�r�r�rYrrrUrr�Ys�
r�z!CAN J1939 required for this test.csXeZdZ�fdd�Ze�eed�d�dd��Ze�eed�d�dd��Z	d	d
�Z
�ZS)�	J1939Testcst�j|i|��d|_dSr�r�rRrUrrrN�szJ1939Test.__init__r$z(socket.CAN_J1939 required for this test.cCs�tjtjtjtjtjtjtjtjtj	tj
tjtjtj
tjtjtjtjtjtjtjtjtjtjtjdSr.)r
r$ZJ1939_MAX_UNICAST_ADDRZJ1939_IDLE_ADDR�
J1939_NO_ADDR�
J1939_NO_NAMEZJ1939_PGN_REQUESTZJ1939_PGN_ADDRESS_CLAIMEDZJ1939_PGN_ADDRESS_COMMANDEDZJ1939_PGN_PDU1_MAXZ
J1939_PGN_MAX�J1939_NO_PGNZSO_J1939_FILTERZSO_J1939_PROMISCZSO_J1939_SEND_PRIOZSO_J1939_ERRQUEUEZSCM_J1939_DEST_ADDRZSCM_J1939_DEST_NAMEZSCM_J1939_PRIOZSCM_J1939_ERRQUEUEZ
J1939_NLA_PADZJ1939_NLA_BYTES_ACKEDZJ1939_EE_INFO_NONEZJ1939_EE_INFO_TX_ABORTZJ1939_FILTER_MAXrArrr�testJ1939Constants�s0zJ1939Test.testJ1939ConstantscCs8t�tjtjtj��}Wd�n1s*0YdSr.)r
rr!r$rrrr�testCreateJ1939Socket�szJ1939Test.testCreateJ1939Socketc
Cs�zft�tjtjtj��>}|jtjtjtjf}|�|�|�	|�
�|�Wd�n1sZ0YWnDty�}z,|jtj
kr�|�d|j�n�WYd}~n
d}~00dSr_)r
rr!r$rbr�r�r�rar�r�rrhr�rcr�rrrr��s
2�zJ1939Test.testBind)rGrHrIrNr�rqrr
r�r�r�rYrrrUrr��s�
!�
r�z#RDS sockets required for this test.c@s$eZdZdd�Zdd�Zdd�ZdS)�BasicRDSTestcCstjtjdSr.)r
ZAF_RDSr'rArrrr7�sz!BasicRDSTest.testCrucialConstantscCs6t�tjtjd��}Wd�n1s(0YdSr�)r
r'r(rrrrr{�szBasicRDSTest.testCreateSocketcCs^d}t�tjtjd��4}|�tjtj|�|�tjtj|�Wd�n1sP0YdS)Ni@r)r
r'r(r�r5�	SO_RCVBUF�	SO_SNDBUF)rBrdrrrr�testSocketBufferSize�sz!BasicRDSTest.testSocketBufferSizeN)rGrHrIr7r{r�rrrrr��sr�cs�eZdZddd�Z�fdd�Zdd�Zdd	�Zd
d�Zdd
�Ze	e
j
d�dd��Ze	e
j
d�dd��Zdd�Z
dd�Zdd�Zdd�Z�ZS)�RDSTestr�cCstj||d�dSr�)r�rNr�rrrrN�szRDSTest.__init__cst���t��|_dSr.)rMrCrOryZevtrArUrrrC�s
z
RDSTest.setUpcCs2|j�|j�\}}|�|j|�|�|j|�dSr.)r=r�rdr�r�r��rBr�r�rrr�testSendAndRecv�szRDSTest.testSendAndRecvcCs"d|_|j�|jdt|jf�dS�Nr�r�r�r�r.r�r?rArrr�_testSendAndRecv�szRDSTest._testSendAndRecvcCsH|j�|jtj�\}}|�|j|�|j�|j�\}}|�|j|�dSr.)r=r�rdr
�MSG_PEEKr�r�r�rrr�testPeek�szRDSTest.testPeekcCs"d|_|j�|jdt|jf�dSr�r�rArrr�	_testPeek�szRDSTest._testPeek�recvmsgcCs(|j�|j�\}}}}|�|j|�dSr.)r=r�rdr�r�)rBr��ancdataZ	msg_flagsr�rrr�testSendAndRecvMsg�szRDSTest.testSendAndRecvMsg�sendmsgcCs&d|_|j�|jgddt|jf�dS)Ns<hello hello hello hello hello hello hello hello hello hello rr)r�r�r�r�r?rArrr�_testSendAndRecvMsg�szRDSTest._testSendAndRecvMsgcCsD|j�|j�\}}|�|j|�|j�|j�\}}|�|j|�dSr.)r=r�rdr��data1�data2r�rrr�testSendAndRecvMulti�szRDSTest.testSendAndRecvMulticCs@d|_|j�|jdt|jf�d|_|j�|jdt|jf�dS)Nsbaconrsegg)r�r�r.r�r?r�rArrr�_testSendAndRecvMulti	szRDSTest._testSendAndRecvMulticCsLt�|jgggd�\}}}|�|j|�|j�|j�\}}|�|j|�dS)Ng@)�selectr=rr�rdr�r�)rBrr!r]r�r�rrr�
testSelect		szRDSTest.testSelectcCs"d|_|j�|jdt|jf�dS)Nsselectrr�rArrr�_testSelect	szRDSTest._testSelect)r�)rGrHrIrNrCr�r�r�r�rr
r�r�r�r�r�r�rYrrrUrr��s




r�z'QIPCRTR sockets required for this test.c@s<eZdZdd�Zdd�Zdd�Zdd�Zd	d
�Zdd�Zd
S)�BasicQIPCRTRTestcCs
tjdSr.)r
r,rArrrr7	sz%BasicQIPCRTRTest.testCrucialConstantscCs4t�tjtj��}Wd�n1s&0YdSr.)r
r,r!rrrrr{	sz!BasicQIPCRTRTest.testCreateSocketcCsHt�tjtj��$}|�|��dd�Wd�n1s:0YdS�Nrpr)r
r,r!r�r�rrrr�testUnbound	szBasicQIPCRTRTest.testUnboundcCs^t�tjtj��:}tj||��dd�|�|��dd�Wd�n1sP0YdS)Nrr�rp)r
r,r!rr>r��assertNotEqualrrrr�testBindSock"	szBasicQIPCRTRTest.testBindSockcCsHt�tjtj��$}|jttj|dd�Wd�n1s:0YdS)Nr�r�)r
r,r!r&rrr>rrrr�testInvalidBindSock'	sz$BasicQIPCRTRTest.testInvalidBindSockcCsRt�tjtj��.}|�d�|�|��dd�Wd�n1sD0YdS)N)�{r�rpr)r
r,r!r�r�r�rrrr�testAutoBindSock+	s
z!BasicQIPCRTRTest.testAutoBindSockN)	rGrHrIr7r{r�r�r�r�rrrrr�	sr�c@s,eZdZdd�Zdd�Zdd�Zdd�Zd	S)
�BasicVSOCKTestcCs
tjdSr.)r
r�rArrrr75	sz#BasicVSOCKTest.testCrucialConstantscCs4tjtjtjtjtjtjtjtjdSr.)	r
�SO_VM_SOCKETS_BUFFER_SIZE�SO_VM_SOCKETS_BUFFER_MIN_SIZE�SO_VM_SOCKETS_BUFFER_MAX_SIZEr�ZVMADDR_PORT_ANYZVMADDR_CID_HOSTZVM_SOCKETS_INVALID_VERSIONrrArrr�testVSOCKConstants8	sz!BasicVSOCKTest.testVSOCKConstantscCs4t�tjtj��}Wd�n1s&0YdSr.)r
r�r2rrrrr{B	szBasicVSOCKTest.testCreateSocketcCs�t�tjtj���}|�tjtj�}|�tjtj�}|�tjtj�}|�tjtj|d�|�tjtj|d�|�tjtj|d�|�|d|�tjtj��|�|d|�tjtj��|�|d|�tjtj��Wd�n1s�0YdS�Nr�)	r
r�r2r�r�r�r�r�r�)rBrZorig_maxr�Zorig_minrrrr�F	sD���
�
�
�
��
��
��z#BasicVSOCKTest.testSocketBufferSizeN)rGrHrIr7r�r{r�rrrrr�0	s
r�z)Bluetooth sockets required for this test.c@sveZdZdd�Zdd�Ze�ejdkd�dd��Z	e�ejdkd	�d
d��Z
e�ejdkpdej�d�d
�dd��ZdS)�BasicBluetoothTestcCsJtjtjtjtjtjdkrFtjtjtj	tj�
d�sFtjdS)Nr�r�)r
�
BDADDR_ANY�BDADDR_LOCALr1r3r~r��BTPROTO_HCI�SOL_HCI�
BTPROTO_L2CAPr��BTPROTO_SCOrArrr�testBluetoothConstantse	s
z)BasicBluetoothTest.testBluetoothConstantscCs8t�tjtjtj��}Wd�n1s*0YdSr.)r
r1r2r3rrrr�testCreateRfcommSockets	sz)BasicBluetoothTest.testCreateRfcommSocketr�z&windows does not support L2CAP socketscCs8t�tjtjtj��}Wd�n1s*0YdSr.)r
r1r(r�rrrr�testCreateL2capSocketw	sz(BasicBluetoothTest.testCreateL2capSocketz$windows does not support HCI socketscCs8t�tjtjtj��}Wd�n1s*0YdSr.)r
r1rr�rrrr�testCreateHciSocket|	sz&BasicBluetoothTest.testCreateHciSocketr�z.windows and freebsd do not support SCO socketscCs8t�tjtjtj��}Wd�n1s*0YdSr.)r
r1r(r�rrrr�testCreateScoSocket�	sz&BasicBluetoothTest.testCreateScoSocketN)
rGrHrIr�r�r�rsr~r�r�r�r�r�rrrrr�a	s

�r�c@s�eZdZd+dd�Zdd�Zdd�Zdd	�Zd
d�Zdd
�Zdd�Z	dd�Z
dd�Zdd�Zdd�Z
dd�Zdd�Zdd�Zdd�Zd d!�Zd"d#�Ze�e�Zejd$d%��Zd&d'�Zd(d)�Zd*S),�BasicTCPTestr�cCstj||d�dSr��r�rNr�rrrrN�	szBasicTCPTest.__init__cCs|j�d�}|�|t�dSr�)r�r�r�r�r�rrr�testRecv�	szBasicTCPTest.testRecvcCs|j�t�dSr.�r�r�r�rArrr�	_testRecv�	szBasicTCPTest._testRecvcCs8|j�tt�d�}|j�d�}||}|�|t�dS�N�r�)r�r�r�r�r�)rB�seg1�seg2r�rrr�testOverFlowRecv�	szBasicTCPTest.testOverFlowRecvcCs|j�t�dSr.r�rArrr�_testOverFlowRecv�	szBasicTCPTest._testOverFlowRecvcCs |j�d�\}}|�|t�dSr�)r�r�r�r��rBr�r�rrr�testRecvFrom�	szBasicTCPTest.testRecvFromcCs|j�t�dSr.r�rArrr�
_testRecvFrom�	szBasicTCPTest._testRecvFromcCs@|j�tt�d�\}}|j�d�\}}||}|�|t�dSr�)r�r�r�r�r�)rBr�r�r�r�rrr�testOverFlowRecvFrom�	sz!BasicTCPTest.testOverFlowRecvFromcCs|j�t�dSr.r�rArrr�_testOverFlowRecvFrom�	sz"BasicTCPTest._testOverFlowRecvFromcCs0d}|j�d�}|sq ||7}q|�|d�dS)Nr�r��ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff)r�r�r�)rBr��readrrr�testSendAll�	s
zBasicTCPTest.testSendAllcCsd}|j�|�dS)Nr�)r�r
)rBZ	big_chunkrrr�_testSendAll�	szBasicTCPTest._testSendAllcCsP|j��}t�|tjtj�}|�|j�|�|tj�|�	d�}|�
|t�dSr�)r�rr
�fromfdr<r2rWrrr�r�r�)rBrTr�r�rrr�
testFromFd�	s

zBasicTCPTest.testFromFdcCs|j�t�dSr.r�rArrr�_testFromFd�	szBasicTCPTest._testFromFdcCs0|j��}|�|j�|�d�}|�|t�dSr�)r��duprWrr�r�r�)rBr�r�rrr�testDup�	s

zBasicTCPTest.testDupcCs|j�t�dSr.r�rArrr�_testDup�	szBasicTCPTest._testDupcCs&|j�d�}|�|t�|j��dSr�)r�r�r�r�r{r�r�rrr�testShutdown�	szBasicTCPTest.testShutdowncCs|j�t�|j�d�dSr�)r�r�r��shutdownrArrr�
_testShutdown�	szBasicTCPTest._testShutdowncCsXddl}|j�t�|�t|jj|jd�|�t|jjd|jd�|j�d�dS)Nrrpr�)	r�r�r�r�r&rwrr��UINT_MAX�rBr�rrr�_testShutdown_overflow�	s��z#BasicTCPTest._testShutdown_overflowcCs�|j��}|j��}|�||�|�|jj�|�t|jjd�|j�	�t
j
t
jt
j|d�}|�
|j	�|�d�}|�|t�dS)Nr�r�)r�rrNr�r�_closedr&rr�rr
r<r2rWr�)rBrrr�r�rrr�
testDetach�	s



zBasicTCPTest.testDetachcCs|j�t�dSr.r�rArrr�_testDetach�	szBasicTCPTest._testDetachN)r�)rGrHrIrNr�r�r�r�r�r�r�r�r�r�r�rrrrrrrrZtestShutdown_overflowr	rrrrrrr��	s,

		


r�c@sFeZdZddd�Zdd�Zdd�Zdd	�Zd
d�Zdd
�Zdd�Z	dS)�BasicUDPTestr�cCstj||d�dSr�)r�rNr�rrrrN
szBasicUDPTest.__init__cCs |j�tt��}|�|t�dSr.�r=r�r�r�r�r�rrr�testSendtoAndRecv
szBasicUDPTest.testSendtoAndRecvcCs|j�tdt|jf�dSr��r�r.r�r�r?rArrr�_testSendtoAndRecv
szBasicUDPTest._testSendtoAndRecvcCs$|j�tt��\}}|�|t�dSr.�r=r�r�r�r�r�rrrr�
szBasicUDPTest.testRecvFromcCs|j�tdt|jf�dSr�rrArrrr�
szBasicUDPTest._testRecvFromcCs|�t|jjd�dS�Nrr�r&r�r=r�rArrr�testRecvFromNegative
sz!BasicUDPTest.testRecvFromNegativecCs|j�tdt|jf�dSr�rrArrr�_testRecvFromNegative
sz"BasicUDPTest._testRecvFromNegativeN)r��
rGrHrIrNrrr�r�rrrrrrr

s
r
c@sFeZdZddd�Zdd�Zdd�Zdd	�Zd
d�Zdd
�Zdd�Z	dS)�BasicUDPLITETestr�cCstj||d�dSr�)r�rNr�rrrrN$
szBasicUDPLITETest.__init__cCs |j�tt��}|�|t�dSr.rr�rrrr'
sz"BasicUDPLITETest.testSendtoAndRecvcCs|j�tdt|jf�dSr�rrArrrr,
sz#BasicUDPLITETest._testSendtoAndRecvcCs$|j�tt��\}}|�|t�dSr.rr�rrrr�/
szBasicUDPLITETest.testRecvFromcCs|j�tdt|jf�dSr�rrArrrr�4
szBasicUDPLITETest._testRecvFromcCs|�t|jjd�dSrrrArrrr7
sz%BasicUDPLITETest.testRecvFromNegativecCs|j�tdt|jf�dSr�rrArrrr;
sz&BasicUDPLITETest._testRecvFromNegativeN)r�rrrrrr 
s
rcs�eZdZejZ�fdd�Zdd�ZdZdd�Z	dd	�Z
d
d�Zdd
�ZdZ
dD]Ze
eeed�OZ
qNdZdZdZddd�Z�ZS)�SendrecvmsgBasecst��|_t���dSr.)rOry�
misc_eventrMrCrArUrrrC`
s
zSendrecvmsgBase.setUpcCs|j�|�Sr.)�cli_sockr�r�rrr�sendToServerd
szSendrecvmsgBase.sendToServerrcGs|jj||jt|�d��Sr.)rr��sendmsg_to_server_defaultsr��rBrSrrr�sendmsgToServerl
s�zSendrecvmsgBase.sendmsgToServercGs |j|g|�R�}|�|�|Sr.)r��registerRecvmsgResult)rBr�rdrS�resultrrr�	doRecvmsgt
s
zSendrecvmsgBase.doRecvmsgcCsdSr.r�rBr!rrrr ~
sz%SendrecvmsgBase.registerRecvmsgResultcCs|�||�dSr.�r��rBZaddr1Zaddr2rrr�checkRecvmsgAddress�
sz#SendrecvmsgBase.checkRecvmsgAddressr)�
MSG_CTRUNC�MSG_OOBNc
Cs�|j}|j}|r&||jO}||jO}n|durB||jO}||jO}||M}||M}||O}||O}||@|@}|r�td�|���||B|@}	|�||	@||	@�dS)Nz6contradictory set, unset requirements for flags {0:#x})�msg_flags_common_set�msg_flags_common_unset�msg_flags_eor_indicator�msg_flags_non_eor_indicator�	Exceptionr	r�)
rBr��eor�checkset�
checkunset�ignoreZ
defaultsetZdefaultunsetZinbothr�rrr�
checkFlags�
s&




�zSendrecvmsgBase.checkFlags)Nrrr)rGrHrIr�LOOPBACK_TIMEOUT�fail_timeoutrCrrrr"r r&r*r�r�r
r)r+r,r2rYrrrUrrY
s
rc@seZdZdd�ZdS)�RecvmsgIntoMixincGsht|�}|j|gg|�R�}|�|�|�|dd�|�|d|�t|d|d��f|dd�Sr)r��recvmsg_intor �assertGreaterEqual�assertLessEqualr�)rBr�rdrS�bufr!rrrr"�
s
zRecvmsgIntoMixin.doRecvmsgN)rGrHrIr"rrrrr5�
sr5cs eZdZe�fdd��Z�ZS)�SendrecvmsgDgramFlagsBasecst�jtjBSr.)rMr,r
�	MSG_TRUNCrArUrrr,�
sz5SendrecvmsgDgramFlagsBase.msg_flags_non_eor_indicator)rGrHrI�propertyr,rYrrrUrr:�
sr:cs eZdZe�fdd��Z�ZS)�SendrecvmsgSCTPFlagsBasecst�jtjBSr.)rMr+r
�MSG_EORrArUrrr+�
sz0SendrecvmsgSCTPFlagsBase.msg_flags_eor_indicator)rGrHrIr<r+rYrrrUrr=�
sr=c@s8eZdZedd��Zedd��Zedd��Zdd�Zd	S)
�SendrecvmsgConnectionlessBasecCs|jSr.)r=rArrr�	serv_sock�
sz'SendrecvmsgConnectionlessBase.serv_sockcCs|jSr.)r�rArrrr�
sz&SendrecvmsgConnectionlessBase.cli_sockcCsggd|jfSr�)r�rArrrr�
sz8SendrecvmsgConnectionlessBase.sendmsg_to_server_defaultscCs|j�||j�Sr.)rr.r�r�rrrr�
sz*SendrecvmsgConnectionlessBase.sendToServerN)rGrHrIr<r@rrrrrrrr?�
s


r?c@s,eZdZedd��Zedd��Zdd�ZdS)�SendrecvmsgConnectedBasecCs|jSr.)r�rArrrr@sz"SendrecvmsgConnectedBase.serv_sockcCs|jSr.)r�rArrrrsz!SendrecvmsgConnectedBase.cli_sockcCsdSr.rr%rrrr&sz,SendrecvmsgConnectedBase.checkRecvmsgAddressN)rGrHrIr<r@rr&rrrrrAs


rAcseZdZ�fdd�Z�ZS)�SendrecvmsgServerTimeoutBasecst���|j�|j�dSr.)rMrCr@r�r4rArUrrrCs
z"SendrecvmsgServerTimeoutBase.setUpr�rrrUrrBsrBc@s�eZdZdd�Zdd�Zdd�Zdd�Zd	d
�Zdd�Zd
d�Z	dd�Z
dd�Zdd�Zdd�Z
dd�Zdd�Zdd�Zeed�dd��Zejd d!��Zd"d#�Zd$d%�Zd&d'�Zd(d)�Zd*S)+�SendmsgTestscCs|�|j�tt��t�dSr.�r�r@r�r�r�rArrr�testSendmsg!szSendmsgTests.testSendmsgcCs|�|�tg�tt��dSr.�r�rr�r�rArrr�_testSendmsg%szSendmsgTests._testSendmsgcCs|�|j�tt��t�dSr.rDrArrr�testSendmsgDataGenerator(sz%SendmsgTests.testSendmsgDataGeneratorcCs&|�|�dd�tfD��tt��dS)Ncss|]
}|VqdSr.rrrrrr-r�z9SendmsgTests._testSendmsgDataGenerator.<locals>.<genexpr>rFrArrr�_testSendmsgDataGenerator,s�z&SendmsgTests._testSendmsgDataGeneratorcCs|�|j�tt��t�dSr.rDrArrr�testSendmsgAncillaryGenerator0sz*SendmsgTests.testSendmsgAncillaryGeneratorcCs(|�|�tgdd�dD��tt��dS)Ncss|]
}|VqdSr.rrrrrr5r�z>SendmsgTests._testSendmsgAncillaryGenerator.<locals>.<genexpr>rrFrArrr�_testSendmsgAncillaryGenerator4s�z+SendmsgTests._testSendmsgAncillaryGeneratorcCs|�|j�tt��t�dSr.rDrArrr�testSendmsgArray8szSendmsgTests.testSendmsgArraycCs$|�|�t�dt�g�tt��dS)N�B)r�r�arrayr�r�rArrr�_testSendmsgArray<s�zSendmsgTests._testSendmsgArraycCs|�|j�tt��t�dSr.rDrArrr�testSendmsgGather@szSendmsgTests.testSendmsgGathercCs.|�|�tdd�tdd�g�tt��dS�Nr�rFrArrr�_testSendmsgGatherDszSendmsgTests._testSendmsgGathercCs|�|j�d�d�dS�Nrs�done�r�r@r�rArrr�testSendmsgBadArgsGszSendmsgTests.testSendmsgBadArgscCs�|�t|jj�|�t|jd�|�t|jt��|�t|jt�g�|�t|jtt�g�|�t|jtgt��|�t|jtggt��|�t|jtggdt��|�d�dS)Nsnot in an iterablerrT)r&r�rr�r�objectr�rrArrr�_testSendmsgBadArgsKs.
�
�
�
�
�

�
�z SendmsgTests._testSendmsgBadArgscCs|�|j�d�d�dSrSrUrArrr�testSendmsgBadCmsg]szSendmsgTests.testSendmsgBadCmsgcCs�|�t|jtgt�g�|�t|jtgt�ddfg�|�t|jtgdt�dfg�|�t|jtgddt�fg�|�t|jtgdg�|�t|jtgdg�|�d�dS)Nr�data)rr)rrrZr@rT�r&r�rr�rWrrArrr�_testSendmsgBadCmsgas&

�
�
�
�
�
�z SendmsgTests._testSendmsgBadCmsg�
CMSG_SPACEcCs|�|j�d�d�dSrSrUrArrr�testSendmsgBadMultiCmsgpsz$SendmsgTests.testSendmsgBadMultiCmsgcCs@|�t|jtggd��|�t|jtgdt�g�|�d�dS)N�rrr�rTr[rArrr�_testSendmsgBadMultiCmsgvs

�
�z%SendmsgTests._testSendmsgBadMultiCmsgcCs|�|j�d�d�dSrSrUrArrr�testSendmsgExcessCmsgReject~sz(SendmsgTests.testSendmsgExcessCmsgRejectcCsbttd�sT|�t��"}|�tgddg�Wd�n1s<0Y|�|jj�|�	d�dS)Nr]r_rT)
rr
r&rrr��assertIsNoner/rhr�rBr1rrr�_testSendmsgExcessCmsgReject�s

0z)SendmsgTests._testSendmsgExcessCmsgRejectcCsdSr.rrArrr�testSendmsgAfterClose�sz"SendmsgTests.testSendmsgAfterClosecCs |j��|�t|jtg�dSr.)rrr&rrr�rArrr�_testSendmsgAfterClose�s
z#SendmsgTests._testSendmsgAfterCloseN)rGrHrIrErGrHrIrJrKrLrOrPrRrVrXrYr\rr
r^r�r`rardrerfrrrrrCs,

rCc@sReZdZdd�Zdd�Zdd�Zdd�Zeej	d	vd
�dd��Z
e
jd
d��ZdS)�SendmsgStreamTestscCs|�|j�tt��t�dSr.rDrArrr�testSendmsgExplicitNoneAddr�sz.SendmsgStreamTests.testSendmsgExplicitNoneAddrcCs"|�|�tggdd�tt��dSr�rFrArrr�_testSendmsgExplicitNoneAddr�sz/SendmsgStreamTests._testSendmsgExplicitNoneAddrcCs.|�|j�d�d�|�|jj|jd��dS�Nr��aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa�r7�r�r@r�rrr�r4rArrr�testSendmsgTimeout�sz%SendmsgStreamTests.testSendmsgTimeoutc
Cs�z||j�d�z|�dg�qWnDtjy4Yn<tyd}z|jtjkrP�WYd}~nd}~00|�d�W|j	�
�n|j	�
�0dS)N���Q��?rk�socket.timeout not raised)rr�rr
r7rrh�ENOMEMr"rrn�rBr�rrr�_testSendmsgTimeout�sz&SendmsgStreamTests._testSendmsgTimeout>r�z<MSG_DONTWAIT not known to work on this platform when sendingcCs.|�|j�d�d�|�|jj|jd��dSrjrmrArrr�testSendmsgDontWait�sz&SendmsgStreamTests.testSendmsgDontWaitcCszzh|�t��$}|�dggtj�qWd�n1s60Y|�|jjtjtj	tj
f�W|j��n|j��0dS�Nrk)
r&rrr
�MSG_DONTWAITrr/rh�EAGAIN�EWOULDBLOCKrqrrnrcrrr�_testSendmsgDontWait�s2
�z'SendmsgStreamTests._testSendmsgDontWaitN)
rGrHrIrhrirnrsr�r~r�rtr�ryrrrrrg�s
�
rgc@seZdZdd�Zdd�ZdS)�SendmsgConnectionlessTestscCsdSr.rrArrr�testSendmsgNoDestAddr�sz0SendmsgConnectionlessTests.testSendmsgNoDestAddrcCs2|�t|jjtg�|�t|jjtggdd�dSr�)r&rrr�r�rArrr�_testSendmsgNoDestAddr�s�
�z1SendmsgConnectionlessTests._testSendmsgNoDestAddrN)rGrHrIr{r|rrrrrz�srzc@s�eZdZdd�Zdd�Zdd�Zdd�Zd	d
�Zdd�Zd
d�Z	dd�Z
dd�Zdd�Zdd�Z
dd�Zdd�Zdd�Zdd�Zdd �Zeed!�d"d#��Zejd$d%��Zeejd&�d'd(��Zejd)d*��Zd+S),�RecvmsgGenericTestscCsR|�|jtt��\}}}}|�|t�|�||j�|�|g�|j|dd�dS�NT�r.�r"r@r�r�r�r&r�r2�rBr�r�r�r�rrr�testRecvmsg�s
zRecvmsgGenericTests.testRecvmsgcCs|�t�dSr.�rr�rArrr�_testRecvmsg�sz RecvmsgGenericTests._testRecvmsgcCsV|�|jtt�dd�\}}}}|�|t�|�||j�|�|g�|j|dd�dS)NrTrr�r�rrr�testRecvmsgExplicitDefaults�s
�z/RecvmsgGenericTests.testRecvmsgExplicitDefaultscCs|�t�dSr.r�rArrr�_testRecvmsgExplicitDefaults�sz0RecvmsgGenericTests._testRecvmsgExplicitDefaultscCsV|�|jtt�d�\}}}}|�|t�|�||j�|�|g�|j|dd�dS)Nr@Trr�r�rrr�testRecvmsgShorter�s
�z&RecvmsgGenericTests.testRecvmsgShortercCs|�t�dSr.r�rArrr�_testRecvmsgShortersz'RecvmsgGenericTests._testRecvmsgShortercCs^|�|jtt�d�\}}}}|�|tdd��|�||j�|�|g�|j|dd�dS)Nr����Frr�r�rrr�testRecvmsgTrunc	s
�z$RecvmsgGenericTests.testRecvmsgTrunccCs|�t�dSr.r�rArrr�_testRecvmsgTruncsz%RecvmsgGenericTests._testRecvmsgTrunccCsT|�|jtt�d�\}}}}|�|t�|�||j�|�|g�|j|dd�dS)NrpTrr�r�rrr�testRecvmsgShortAncillaryBufs�z0RecvmsgGenericTests.testRecvmsgShortAncillaryBufcCs|�t�dSr.r�rArrr�_testRecvmsgShortAncillaryBufsz1RecvmsgGenericTests._testRecvmsgShortAncillaryBufcCsT|�|jtt�d�\}}}}|�|t�|�||j�|�|g�|j|dd�dS)N�(Trr�r�rrr�testRecvmsgLongAncillaryBuf!s�z/RecvmsgGenericTests.testRecvmsgLongAncillaryBufcCs|�t�dSr.r�rArrr�_testRecvmsgLongAncillaryBuf*sz0RecvmsgGenericTests._testRecvmsgLongAncillaryBufcCs"|j��|�t|j|jd�dSr�)r@rr&rr"rArrr�testRecvmsgAfterClose-s
z)RecvmsgGenericTests.testRecvmsgAfterClosecCsdSr.rrArrr�_testRecvmsgAfterClose2sz*RecvmsgGenericTests._testRecvmsgAfterClosecCsFz4|j�d�|�tj|j|jtt��W|j�	�n|j�	�0dS)Nro)
r@r�r&r
r7r"r�r�rrnrArrr�testRecvmsgTimeout5s�z&RecvmsgGenericTests.testRecvmsgTimeoutcCs|�|jj|jd��dS�Nrl)rrr�r4rArrr�_testRecvmsgTimeout>sz'RecvmsgGenericTests._testRecvmsgTimeoutr�cCs|�|jtt�ddtj�\}}}}|�|tdd��|�||j�|�|g�|j	|dt
tdd�d�|�|jtt�dtj�\}}}}|�|t�|�||j�|�|g�|j	|dd�|�|jtt��\}}}}|�|t�|�||j�|�|g�|j	|dd�dS)	Nr�rr�Fr;�r.r1Tr)r"r@r�r�r
r�r�r&r�r2r�r�rrr�testRecvmsgPeekAs.�
��z#RecvmsgGenericTests.testRecvmsgPeekcCs|�t�dSr.r�rArrr�_testRecvmsgPeekdsz$RecvmsgGenericTests._testRecvmsgPeekr�cCs`|j�|j�|�|jtt��\}}}}|�|t�|�||j�|�|g�|j	|dd�dSr~)
r@r�r4r"r�r�r�r&r�r2r�rrr�testRecvmsgFromSendmsghsz*RecvmsgGenericTests.testRecvmsgFromSendmsgcCs.|�|�tdd�tdd�g�tt��dSrQrFrArrr�_testRecvmsgFromSendmsgssz+RecvmsgGenericTests._testRecvmsgFromSendmsgN)rGrHrIr�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�rr
r�r�r�r�r�rrrrr}�s0						
"



r}c@s,eZdZdd�Zdd�Zdd�Zdd�Zd	S)
�RecvmsgGenericStreamTestscCsN|�|jd�\}}}}|�|d�|�||j�|�|g�|j|dd�dS)Nr�r�r)r"r@r�r&r�r2r�rrr�testRecvmsgEOF|s
z(RecvmsgGenericStreamTests.testRecvmsgEOFcCs|j��dSr.)rrrArrr�_testRecvmsgEOF�sz)RecvmsgGenericStreamTests._testRecvmsgEOFcCs�|�|jtt�d�\}}}}|�||j�|�|g�|j|dd�|�|jd�\}}}}|�||j�|�|g�|j|dd�||}|�|t�dS)Nr�Frr�T)r"r@r�r�r&r�r�r2)rBr�r�r�r�r�r�rrr�testRecvmsgOverflow�s
�z-RecvmsgGenericStreamTests.testRecvmsgOverflowcCs|�t�dSr.r�rArrr�_testRecvmsgOverflow�sz.RecvmsgGenericStreamTests._testRecvmsgOverflowN)rGrHrIr�r�r�r�rrrrr�xsr�c@seZdZdd�Zdd�ZdS)�RecvmsgTestscCs|�t|jj�|�t|jjddd�|�t|jjtt�dd�|�t|jjtd�gdd�|�t|jjt�dd�|�t|jjtt�t�d�|�t|jjtt�dt��|j�tt�dd�\}}}}|�	|t�|�
||j�|�	|g�|j|dd�dS)Nrrrr�Tr)
r&r�r@r�r�r�r�r�rWr�r&r�r2r�rrr�testRecvmsgBadArgs�s0�
�����zRecvmsgTests.testRecvmsgBadArgscCs|�t�dSr.r�rArrr�_testRecvmsgBadArgs�sz RecvmsgTests._testRecvmsgBadArgsN)rGrHrIr�r�rrrrr��sr�c@sLeZdZdd�Zdd�Zdd�Zdd�Zd	d
�Zdd�Zd
d�Z	dd�Z
dS)�RecvmsgIntoTestscCsLttt��}|�t|jj�|�t|jjtt�dd�|�t|jj|dd�|�t|jjt�gdd�|�t|jjdgdd�|�t|jj|t�gdd�|�t|jj|gdd�|�t|jj|gt�d�|�t|jj|gdt��|j�|gdd�\}}}}|�	|tt��|�	|tt��|�
||j�|�	|g�|j|dd�dS)NrsI'm not writablerrTr)
r�r�r�r&r�r@r6rWr�r�r&r�r2�rBr9�nbytesr�r�r�rrr�testRecvmsgIntoBadArgs�s@
��
����
�
�z'RecvmsgIntoTests.testRecvmsgIntoBadArgscCs|�t�dSr.r�rArrr�_testRecvmsgIntoBadArgs�sz(RecvmsgIntoTests._testRecvmsgIntoBadArgscCsxttt��}|j�dd�|fD��\}}}}|�|tt��|�|tt��|�||j�|�|g�|j|dd�dS)Ncss|]
}|VqdSr.rrrrrr�r�z<RecvmsgIntoTests.testRecvmsgIntoGenerator.<locals>.<genexpr>Tr)	r�r�r�r@r6r�r&r�r2r�rrr�testRecvmsgIntoGenerator�s�z)RecvmsgIntoTests.testRecvmsgIntoGeneratorcCs|�t�dSr.r�rArrr�_testRecvmsgIntoGenerator�sz*RecvmsgIntoTests._testRecvmsgIntoGeneratorcCsxt�ddgtt��}|j�|g�\}}}}|�|tt��|�|��t�|�||j�|�|g�|j	|dd�dS)NrMrTr)
rNr�r�r@r6r��tobytesr&r�r2r�rrr�testRecvmsgIntoArray�sz%RecvmsgIntoTests.testRecvmsgIntoArraycCs|�t�dSr.r�rArrr�_testRecvmsgIntoArray�sz&RecvmsgIntoTests._testRecvmsgIntoArraycCs�td�}td�}td�}|j�|t|�dd�|g�\}}}}|�|td��|�|td��|�|td��|�|td	��|�||j�|�|g�|j|d
d�dS)Ns----s
0123456789s--------------r��	�Mary had a little lambsMarys
01 had a 9slittle lamb---Tr)	r�r@r6�
memoryviewr�r�r&r�r2)rB�b1�b2Zb3r�r�r�r�rrr�testRecvmsgIntoScatter�s�z'RecvmsgIntoTests.testRecvmsgIntoScattercCs|�d�dS)Nr�)rrArrr�_testRecvmsgIntoScatter
sz(RecvmsgIntoTests._testRecvmsgIntoScatterN)rGrHrIr�r�r�r�r�r�r�r�rrrrr��s
r�c@s`eZdZzddlZWney*dZYn0edej�Zee	d�dd��Z
ee	d�dd	��ZdS)
�CmsgMacroTestsrNi����CMSG_LENcCs�|jt�d�d}ttd��tt|d|��}|�t�d�t�d�jd�|D]2}t�|�}|�|t�d�|�|�	||j�qT|�
ttjd�|�
ttj|�|�
ttjtj
�dS)Nrrp�r:r�rr)�socklen_t_limitr
r��listr+rlrN�itemsizer�r8r&rwr~�maxsize)rB�toobigrR�nr/rrr�testCMSG_LEN
s
zCmsgMacroTests.testCMSG_LENr]cCs�|jt�d�d}ttd��tt|d|��}t�d�}|�|t�d�jd�|D]T}t�|�}|�||�|�|t�	|��|�||t�	d��|�
||j�|}qX|�ttjd�|�ttj|�|�ttjt
j�dS)Nrpr�rr:r�rr)r�r
r]r�r+rlrNr�r7r�r8r&rwr~r�)rBr�rR�lastr�r/rrr�testCMSG_SPACE*
s

zCmsgMacroTests.testCMSG_SPACE)rGrHrIr�r�r��minr�rr
r�r�rrrrr�
s

r�c@sHeZdZdZdd�Zdd�Zdd�Zdd	�Zd
d�Zdddd�Z	dd�Z
dd�Zdd�Zdd�Z
eed�dd��Zejdd��Zdd�Zdd �Ze�ejd!kd"�e�ed#�eed�d$d%����Zeje�ejd!kd"�e�ed#�d&d'����Ze�ejd!kd"�e�ed#�eed�d(d)����Zeje�ejd!kd"�e�ed#�d*d+����Zd,d-�Ze�ejd!kd.�d/d0��Zd1d2�Z d3d4�Z!d5d6�Z"eed�d7d8��Z#e#jd9d:��Z$ded;d<�Z%d=d>�Z&d?d@�Z'dAdB�Z(dCdD�Z)dEdF�Z*dGdH�Z+dIdJ�Z,dKdL�Z-dMdN�Z.dOdP�Z/dfdQdR�Z0dSdT�Z1dUdV�Z2dWdX�Z3dYdZ�Z4d[d\�Z5d]d^�Z6d_d`�Z7dadb�Z8dcS)g�
SCMRightsTesti����cCs\g}t|�D]J}t��\}}|�tj|�|�tj|�t�|t|��	��|�
|�q|Sr.)r+r��mkstemprWr�r�r�writer�encode�append)rBr��fdsr:rTr�rrr�newFDsK
szSCMRightsTest.newFDscCsBt|�D]4\}}t�|dtj�|�t�|d�t|����qdS)Nrr�)�	enumerater��lseek�SEEK_SETr�r�rr�)rBr�r�rTrrr�checkFDsW
szSCMRightsTest.checkFDscCs|�|j|�dSr.)rW�closeRecvmsgFDsr#rrrr ^
sz#SCMRightsTest.registerRecvmsgResultcCsn|dD]`\}}}|tjkr|tjkrt�d�}|�|dt|�t|�|j��|D]}t�|�qXqdS)Nrpr:)	r
r5�
SCM_RIGHTSrN�	frombytesr�r�r�r)rBZrecvmsg_result�
cmsg_level�	cmsg_type�	cmsg_datar�rTrrrr�a
s
�
�zSCMRightsTest.closeRecvmsgFDsc
Cs8|�|�tgtjtjt�d|�|��fg�tt��dS)Nr:)	r�rr�r
r5r�rNr�r�)rBr�rrr�createAndSendFDsm
s���zSCMRightsTest.createAndSendFDsrprcCs�|\}}}}|�|t�|�||j�|j|dtj|d�|�|t�|�	t
|�|�t�d�}	|D]`}
|�|
t�|
\}}}
|�|tj
�|�|tj�|�|
t�|�t
|
�td�|	�|
�qd|�t
|	�|�|�|	�dS)NT�r.r0r1r:r)r�r�r&r�r2r
r'rr�r8r�rN�tupler5r�r��
SIZEOF_INTr�r�)rBZnumfdsr!�maxcmsgs�ignoreflagsr�r�r�r�r��itemr�r�r�rrr�checkRecvmsgFDsw
s&�

zSCMRightsTest.checkRecvmsgFDscCs |�d|�|jtt�d��dS)Nrpr��r�r"r@r�r�rArrr�testFDPassSimple�
s�zSCMRightsTest.testFDPassSimplec
Cs<|�|�tgtjtjt�d|�d����fg�t	t��dS)Nr:rp)
r�rr�r
r5r�rNr�r�r�rArrr�_testFDPassSimple�
s���zSCMRightsTest._testFDPassSimplecCs |�d|�|jtt�d��dS)Nr-r�r�rArrr�testMultipleFDPass�
s�z SCMRightsTest.testMultipleFDPasscCs|�d�dS�Nr-�r�rArrr�_testMultipleFDPass�
sz!SCMRightsTest._testMultipleFDPassr]cCs*|�d|�|jtt�t�dt���dSr�)r�r"r@r�r�r
r]r�rArrr�testFDPassCMSG_SPACE�
s
��z"SCMRightsTest.testFDPassCMSG_SPACEcCs|�d�dSr�r�rArrr�_testFDPassCMSG_SPACE�
sz#SCMRightsTest._testFDPassCMSG_SPACEc
Cs0|jd|�|jtt�t�dt��tjd�dS)Nrpr-�r�)	r�r"r@r�r�r
r�r�r'rArrr�testFDPassCMSG_LEN�
s��z SCMRightsTest.testFDPassCMSG_LENcCs|�d�dSr�r�rArrr�_testFDPassCMSG_LEN�
sz!SCMRightsTest._testFDPassCMSG_LENr?zskipping, see issue #12958zskipping, see issue #22397cCs$|jd|�|jtt�d�dd�dS)Nr�r�)r�r�rArrr�testFDPassSeparate�
s�z SCMRightsTest.testFDPassSeparatecCsX|�d�\}}|�|�tgtjtjt�d|g�ftjtjt�d|g�fg�tt��dS�Nr�r:�	r�r�rr�r
r5r�rNr��rBZfd0�fd1rrr�_testFDPassSeparate�
s����z!SCMRightsTest._testFDPassSeparatecCs@d}|j||�|jtt�t�t�t�t|��dtj	d�dS)Nr�)r�r�)
r�r"r@r�r�r
r]r�r�r')rBZnum_fdsrrr�testFDPassSeparateMinSpace�
s���z(SCMRightsTest.testFDPassSeparateMinSpacecCsX|�d�\}}|�|�tgtjtjt�d|g�ftjtjt�d|g�fg�tt��dSr�r�r�rrr�_testFDPassSeparateMinSpace�
s����z)SCMRightsTest._testFDPassSeparateMinSpacec
Csfz|�|g|�}Wn>tyP}z&|�|jt�|�|g�}WYd}~n
d}~00|�|t|��dSr.)rrrrhrkr�r�)rBr�r�r�r�rrr�sendAncillaryIfPossible�
s"z%SCMRightsTest.sendAncillaryIfPossiblezsee issue #24725cCs&|jd|�|jtt�d�tjd�dS)Nrr�r�)r�r"r@r�r�r
r'rArrr�testFDPassEmpty�
s
��zSCMRightsTest.testFDPassEmptycCs|�ttjtjdfg�dS�Nr�)r�r�r
r5r�rArrr�_testFDPassEmptys
�zSCMRightsTest._testFDPassEmptycCs�|�|jtt�d�\}}}}|�|t�|�||j�|j|dtj	d�|�
t|�d�|D]6\}}}|�|tj�|�|tj�|�
t|�t�q\dS)Nr�Tr�rp)r"r@r�r�r�r&r�r2r
r'r8r5r��
assertLessr��rBr�r�r�r�r�r�r�rrr�testFDPassPartialInts�z"SCMRightsTest.testFDPassPartialIntc	Cs4|�ttjtjt�d|jg���dd�fg�dS)Nr:rr)r�r�r
r5r�rN�badfdr�rArrr�_testFDPassPartialInts��z#SCMRightsTest._testFDPassPartialIntc	Cs�|�|jtt�d�\}}}}|�|t�|�||j�|j|dtj	d�|�
t|�d�t�d�}|D]J\}}}|�|tj�|�|tj
�|�|dt|�t|�|j��qf|�
t|�d�|�|�dS)Nr�Tr�r�r:)r"r@r�r�r�r&r�r2r
r'r8rNr5r�r�r�r�)	rBr�r�r�r�r�r�r�r�rrr�testFDPassPartialIntInMiddles �
�
z*SCMRightsTest.testFDPassPartialIntInMiddlec
CsZ|�d�\}}|�ttjtjt�d||jg���dd�ftjtjt�d|g�fg�dS)Nr�r:rr)	r�r�r�r
r5r�rNr�r�r�rrr�_testFDPassPartialIntInMiddle2s����z+SCMRightsTest._testFDPassPartialIntInMiddlecCsJ|\}}}}|�|t�|�||j�|�|g�|j|dtj|d�dS)NT�r.r/r1)r�r�r&r�r2r
r')rBr!r�r�r�r�r�rrr�checkTruncatedHeader>s�z"SCMRightsTest.checkTruncatedHeadercCs"|j|�|jtt��tjd�dS�Nr��r�r"r@r�r�r
r'rArrr�testCmsgTruncNoBufSizeHs�z$SCMRightsTest.testCmsgTruncNoBufSizecCs|�d�dSr�r�rArrr�_testCmsgTruncNoBufSizeQsz%SCMRightsTest._testCmsgTruncNoBufSizecCs$|j|�|jtt�d�tjd�dS)Nrr�r�rArrr�testCmsgTrunc0Ts�zSCMRightsTest.testCmsgTrunc0cCs|�d�dSr�r�rArrr�_testCmsgTrunc0YszSCMRightsTest._testCmsgTrunc0cCs|�|�|jtt�d��dSr�)r�r"r@r�r�rArrr�testCmsgTrunc1_szSCMRightsTest.testCmsgTrunc1cCs|�d�dSr�r�rArrr�_testCmsgTrunc1bszSCMRightsTest._testCmsgTrunc1cCs"|�|�|jtt�td��dSr�)r�r"r@r�r�r�rArrr�testCmsgTrunc2Intes�zSCMRightsTest.testCmsgTrunc2IntcCs|�d�dSr�r�rArrr�_testCmsgTrunc2Intlsz SCMRightsTest._testCmsgTrunc2Intc	Cs(|�|�|jtt�t�d�d��dSr)r�r"r@r�r�r
r�rArrr�testCmsgTruncLen0Minus1os�z%SCMRightsTest.testCmsgTruncLen0Minus1cCs|�d�dSr�r�rArrr�_testCmsgTruncLen0Minus1ssz&SCMRightsTest._testCmsgTruncLen0Minus1cCs�|�|jtt�|�\}}}}|�|t�|�||j�|j|dtj	d�|dkr\|gkr\dS|�t|�d�|d\}}	}
|�|tj
�|�|	tj�|�t|
�|�|�
t|
�|�t�d�}|�|
dt|
�t|
�|j��|�|�dS)NT�r.r/rrpr:)r"r@r�r�r�r&r�r2r
r'r5r�r7r8rNr�r�r�)rB�ancbuf�maxdataZmindatar�r�r�r�r�r�r�r�rrr�checkTruncatedArrayys&�
�z!SCMRightsTest.checkTruncatedArraycCs|jt�d�dd�dS)Nr�rr	�r
r
r�rArrr�testCmsgTruncLen0�szSCMRightsTest.testCmsgTruncLen0cCs|�d�dSr�r�rArrr�_testCmsgTruncLen0�sz SCMRightsTest._testCmsgTruncLen0cCs|jt�d�ddd�dS)NrrprrrArrr�testCmsgTruncLen0Plus1�sz$SCMRightsTest.testCmsgTruncLen0Plus1cCs|�d�dSr�r�rArrr�_testCmsgTruncLen0Plus1�sz%SCMRightsTest._testCmsgTruncLen0Plus1cCs|jt�t�td�dS)Nr�r
r
r�r�rArrr�testCmsgTruncLen1�s�zSCMRightsTest.testCmsgTruncLen1cCs|�d�dSr�r�rArrr�_testCmsgTruncLen1�sz SCMRightsTest._testCmsgTruncLen1cCs(|jt�dt�ddtdd�dS)Nr�rprrrArrr�testCmsgTruncLen2Minus1�s
�z%SCMRightsTest.testCmsgTruncLen2Minus1cCs|�d�dSr�r�rArrr�_testCmsgTruncLen2Minus1�sz&SCMRightsTest._testCmsgTruncLen2Minus1N)rpr)r)r)9rGrHrIr�r�r�r r�r�r�r�r�r�r�rr
r�r�r�r�r�r�rsr~r�rr�r�r�r�r�r�r�r�r�r�r�r�r�r�r�rrrrrrrr
r
rrrrrrrrrrrr�C
s~

	













	
r�c@seZdZdZdZdd�Zd^dd�Zeed	d
�dd��Z	e	j
d
d��Zeedd	d
�dd��Zej
dd��Z
eejd�eed	d
�dd���Zej
dd��Zd_dd�Zeed	d
dd�dd��Zej
dd ��Zeedd	d
dd�d!d"��Zej
d#d$��Zeejd�eedd	d
dd�d%d&���Zej
d'd(��Zeejd�eedd	d
dd�d)d*���Zej
d+d,��Zd`d-d.�Zeed	d
�d/d0��Zej
d1d2��Zeed	d
�d3d4��Zej
d5d6��Zeed	d
�d7d8��Zej
d9d:��Zeed	d
�d;d<��Z e j
d=d>��Z!eed	d
�d?d@��Z"e"j
dAdB��Z#eed	d
�dCdD��Z$e$j
dEdF��Z%dadGdH�Z&eedd	d
dd�dIdJ��Z'e'j
dKdL��Z(eedd	d
dd�dMdN��Z)e)j
dOdP��Z*eedd	d
dd�dQdR��Z+e+j
dSdT��Z,eedd	d
dd�dUdV��Z-e-j
dWdX��Z.eedd	d
dd�dYdZ��Z/e/j
d[d\��Z0d]S)b�RFC3542AncillaryTestr�rrcCs4i}|D]&\}}}|�||f|�||||f<q|Sr.)r)rBr��dr�r�r�rrr�ancillaryMapping�s
z%RFC3542AncillaryTest.ancillaryMappingr�rcCs|j�tjtjd�|j��|�|jtt	�|�\}}}}|�
|t	�|�||j�|j
|dtj|d�|�
t|�d�|�|dt�|d\}}	}
|�
|tj�|�
|	tj�|�|
t�|�
t|
�t�t�d�}|�|
�|�|dd�|�|d|�dS)NrpTr�rr:)r@r�r
r:rCrrnr"r�r�r�r&r�r2r'rr�rQr�r�rNr�r7r8)rB�
ancbufsize�maxhopr�r�r�r�r�r�r�r�r�rrr�
checkHopLimit�s.
�
��

z"RFC3542AncillaryTest.checkHopLimitrCrQcCs|jdd�dS�Nr��r)rrArrr�testRecvHopLimit�sz%RFC3542AncillaryTest.testRecvHopLimitcCs$|�|jj|jd��|�t�dSr��rrr�r4rr�rArrr�_testRecvHopLimit�sz&RFC3542AncillaryTest._testRecvHopLimitr]cCs|jt�t�d�dS)Nr)rr
r]r�rArrr�testRecvHopLimitCMSG_SPACE�sz/RFC3542AncillaryTest.testRecvHopLimitCMSG_SPACEcCs$|�|jj|jd��|�t�dSr�rrArrr�_testRecvHopLimitCMSG_SPACE�sz0RFC3542AncillaryTest._testRecvHopLimitCMSG_SPACEr�cCs|jd|jd�dS�Nr�)rr)r�	hop_limitrArrr�testSetHopLimit�sz$RFC3542AncillaryTest.testSetHopLimitcCsL|�|jj|jd��|�|�tgtjtj	t
�
d|jg�fg�tt��dS�Nrlr:)
rrr�r4r�rr�r
r:rQrNr$r�rArrr�_testSetHopLimits���z%RFC3542AncillaryTest._testSetHopLimitcCsB|j�tjtjd�|j�tjtjd�|j��|�|jt	t
�|�\}}}}|�|t
�|�||j
�|j|dtj|d�|�t	|�d�|�|�}|tjtjf}	|�t	|	�t�t�d�}
|
�|	�|�|
dd�|�|
dd�|tjtjf}|�t	|�t�t�d�}
|
�|�|�|
dd�|�|
d|�dS)NrpTr�r�r:rr�)r@r�r
r:rCrTrrnr"r�r�r�r&r�r2r'rrNr�rNr�r7r8rQ)rBrrr�r�r�r�r�ZancmapZtcdatar�Zhldatarrr�checkTrafficClassAndHopLimits:
�
�
��




z1RFC3542AncillaryTest.checkTrafficClassAndHopLimitrTrNcCs|jdd�dSr)r(rArrr�testRecvTrafficClassAndHopLimit3sz4RFC3542AncillaryTest.testRecvTrafficClassAndHopLimitcCs$|�|jj|jd��|�t�dSr�rrArrr� _testRecvTrafficClassAndHopLimit9sz5RFC3542AncillaryTest._testRecvTrafficClassAndHopLimitcCs|jt�t�dd�dS�Nr�r)r(r
r]r�rArrr�)testRecvTrafficClassAndHopLimitCMSG_SPACE>s�z>RFC3542AncillaryTest.testRecvTrafficClassAndHopLimitCMSG_SPACEcCs$|�|jj|jd��|�t�dSr�rrArrr�*_testRecvTrafficClassAndHopLimitCMSG_SPACEFsz?RFC3542AncillaryTest._testRecvTrafficClassAndHopLimitCMSG_SPACEcCs|jd|jd�dSr#�r(r$rArrr�testSetTrafficClassAndHopLimitKs�z3RFC3542AncillaryTest.testSetTrafficClassAndHopLimitcCsd|�|jj|jd��|�|�tgtjtj	t
�
d|jg�ftjtjt
�
d|j
g�fg�tt��dSr&)rrr�r4r�rr�r
r:rNrN�
traffic_classrQr$r�rArrr�_testSetTrafficClassAndHopLimitTs�����z4RFC3542AncillaryTest._testSetTrafficClassAndHopLimitcCs|jd|jd�dSr#r.rArrr�testOddCmsgSize_s�z$RFC3542AncillaryTest.testOddCmsgSizec
Cs�|�|jj|jd��zJ|�tgtjtjt	�	d|j
g���dftjtjt	�	d|j
g�fg�}Wn�ty�}zh|�|jt�|�tgtjtjt	�	d|j
g�ftjtjt	�	d|j
g�fg�}|�|tt��WYd}~n
d}~00dS)Nrlr:r�)rrr�r4rr�r
r:rNrNr0r�rQr$rrrhrkr�r�)rBr�r�rrr�_testOddCmsgSizeis2��������z%RFC3542AncillaryTest._testOddCmsgSizecCs�|j�tjtjd�|j��|dur*dn|f}|j|jtt	�g|�R�\}}}}|�
|t	�|�||j�|�
|g�|j
|dtj|d�dS)NrprTr�)r@r�r
r:rCrrnr"r�r�r�r&r�r2r')rBrr�rSr�r�r�r�rrr�checkHopLimitTruncatedHeaders 
�
���z1RFC3542AncillaryTest.checkHopLimitTruncatedHeadercCs|jdtjd�dS)N�rr��r4r
r'rArrrr��s�z+RFC3542AncillaryTest.testCmsgTruncNoBufSizecCs$|�|jj|jd��|�t�dSr�rrArrrr��sz,RFC3542AncillaryTest._testCmsgTruncNoBufSizecCs|jdtjd�dS)Nrr5r6rArrr�testSingleCmsgTrunc0�s�z)RFC3542AncillaryTest.testSingleCmsgTrunc0cCs$|�|jj|jd��|�t�dSr�rrArrr�_testSingleCmsgTrunc0�sz*RFC3542AncillaryTest._testSingleCmsgTrunc0cCs|jdd�dS)Nrpr)r4rArrr�testSingleCmsgTrunc1�sz)RFC3542AncillaryTest.testSingleCmsgTrunc1cCs$|�|jj|jd��|�t�dSr�rrArrr�_testSingleCmsgTrunc1�sz*RFC3542AncillaryTest._testSingleCmsgTrunc1cCs|jdtd�dSr+)r4r�rArrr�testSingleCmsgTrunc2Int�sz,RFC3542AncillaryTest.testSingleCmsgTrunc2IntcCs$|�|jj|jd��|�t�dSr�rrArrr�_testSingleCmsgTrunc2Int�sz-RFC3542AncillaryTest._testSingleCmsgTrunc2IntcCs|jt�d�dd�dS)Nrrpr)r4r
r�rArrr�testSingleCmsgTruncLen0Minus1�sz2RFC3542AncillaryTest.testSingleCmsgTruncLen0Minus1cCs$|�|jj|jd��|�t�dSr�rrArrr�_testSingleCmsgTruncLen0Minus1�sz3RFC3542AncillaryTest._testSingleCmsgTruncLen0Minus1cCs�|j�tjtjd�|j��|�|jtt	�t�
t�d�\}}}}|�|t	�|�
||j�|j|dtjd�|�t|�d�|r�|d\}}}|�|tj�|�|tj�|�t|�t�dS)NrpTrr)r@r�r
r:rCrrnr"r�r�r�r�r�r&r�r2r'r8rQr�r�rrr�testSingleCmsgTruncInData�s 
�
�z.RFC3542AncillaryTest.testSingleCmsgTruncInDatacCs$|�|jj|jd��|�t�dSr�rrArrr�_testSingleCmsgTruncInData�sz/RFC3542AncillaryTest._testSingleCmsgTruncInDatacCs|j�tjtjd�|j�tjtjd�|j��|�|jt	t
�|�\}}}}|�|t
�|�||j
�|j|dtj|d�|�t	|�d�|d\}}}	|�|tj�|�|tjtjh�|�t	|	�t�t�d�}
|
�|	�|�|
dd�|�|
dd�dS)NrpTr�rr:r�)r@r�r
r:rCrTrrnr"r�r�r�r&r�r2r'rrNrQr�rNr�r7r8)rBrr�r�r�r�r�r�r�r�r�rrr�checkTruncatedSecondHeader�s0
�
�
��

z/RFC3542AncillaryTest.checkTruncatedSecondHeadercCs|jt�t�tjd�dSr�)rAr
r]r�r'rArrr�testSecondCmsgTrunc0s�z)RFC3542AncillaryTest.testSecondCmsgTrunc0cCs$|�|jj|jd��|�t�dSr�rrArrr�_testSecondCmsgTrunc0sz*RFC3542AncillaryTest._testSecondCmsgTrunc0cCs|�t�t�d�dSr��rAr
r]r�rArrr�testSecondCmsgTrunc1sz)RFC3542AncillaryTest.testSecondCmsgTrunc1cCs$|�|jj|jd��|�t�dSr�rrArrr�_testSecondCmsgTrunc1sz*RFC3542AncillaryTest._testSecondCmsgTrunc1cCs|�t�t�dt�dSr�rDrArrr�testSecondCmsgTrunc2Ints�z,RFC3542AncillaryTest.testSecondCmsgTrunc2IntcCs$|�|jj|jd��|�t�dSr�rrArrr�_testSecondCmsgTrunc2Int#sz-RFC3542AncillaryTest._testSecondCmsgTrunc2IntcCs"|�t�t�t�d�d�dSr)rAr
r]r�r�rArrr�testSecondCmsgTruncLen0Minus1(s
��z2RFC3542AncillaryTest.testSecondCmsgTruncLen0Minus1cCs$|�|jj|jd��|�t�dSr�rrArrr�_testSecondCmsgTruncLen0Minus1.sz3RFC3542AncillaryTest._testSecondCmsgTruncLen0Minus1c
CsT|j�tjtjd�|j�tjtjd�|j��|�|jt	t
�t�t�t�
t�d�\}}}}|�|t
�|�||j�|j|dtjd�tjtjh}|�d�\}}}|�|tj�|�|�|�t	|�t�t�d�}	|	�|�|�|	dd�|�|	dd�|�rD|�d�\}}}|�|tj�|�|�|�t	|�t�|�|g�dS)NrpTrrr:r�)r@r�r
r:rCrTrrnr"r�r�r]r�r�r�r&r�r2r'rNrQ�pop�removerNr�r7r8r�)
rBr�r�r�r�Z
cmsg_typesr�r�r�r�rrr�testSecomdCmsgTruncInData3s:
�
�

�



z.RFC3542AncillaryTest.testSecomdCmsgTruncInDatacCs$|�|jj|jd��|�t�dSr�rrArrr�_testSecomdCmsgTruncInDataXsz/RFC3542AncillaryTest._testSecomdCmsgTruncInDataN)r�r)r�r)r)r)1rGrHrIr$r0rrrr
rr�r r!r"r%r'r(r)r*r,r-r/r1r2r3r4r�r�r7r8r9r:r;r<r=r>r?r@rArBrCrErFrGrHrIrJrMrNrrrrr�s�






	


�
$�


�



�



�





















 
�


�


�


�


�
#rc@seZdZdS)�SendrecvmsgUDPTestBaseN�rGrHrIrrrrrO`srOr�c@seZdZdS)�SendmsgUDPTestNrPrrrrrQesrQr�c@seZdZdS)�RecvmsgUDPTestNrPrrrrrRisrRr6c@seZdZdS)�RecvmsgIntoUDPTestNrPrrrrrSmsrSc@seZdZdd�ZdS)�SendrecvmsgUDP6TestBasecCs |�|dd�|dd��dSrr$r%rrrr&vsz+SendrecvmsgUDP6TestBase.checkRecvmsgAddressN�rGrHrIr&rrrrrTrsrTr6r�r!c@seZdZdS)�SendmsgUDP6TestNrPrrrrrV{srVc@seZdZdS)�RecvmsgUDP6TestNrPrrrrrW�srWc@seZdZdS)�RecvmsgIntoUDP6TestNrPrrrrrX�srXr:c@seZdZdS)�RecvmsgRFC3542AncillaryUDP6TestNrPrrrrrY�srYc@seZdZdS)�#RecvmsgIntoRFC3542AncillaryUDP6TestNrPrrrrrZ�srZc@seZdZdS)�SendrecvmsgUDPLITETestBaseNrPrrrrr[�sr[c@seZdZdS)�SendmsgUDPLITETestNrPrrrrr\�sr\c@seZdZdS)�RecvmsgUDPLITETestNrPrrrrr]�sr]c@seZdZdS)�RecvmsgIntoUDPLITETestNrPrrrrr^�sr^c@seZdZdd�ZdS)�SendrecvmsgUDPLITE6TestBasecCs |�|dd�|dd��dSrr$r%rrrr&�sz/SendrecvmsgUDPLITE6TestBase.checkRecvmsgAddressNrUrrrrr_�sr_c@seZdZdS)�SendmsgUDPLITE6TestNrPrrrrr`�sr`c@seZdZdS)�RecvmsgUDPLITE6TestNrPrrrrra�srac@seZdZdS)�RecvmsgIntoUDPLITE6TestNrPrrrrrb�srbc@seZdZdS)�#RecvmsgRFC3542AncillaryUDPLITE6TestNrPrrrrrc�srcc@seZdZdS)�'RecvmsgIntoRFC3542AncillaryUDPLITE6TestNrPrrrrrd�s	rdc@seZdZdS)�SendrecvmsgTCPTestBaseNrPrrrrre�srec@seZdZdS)�SendmsgTCPTestNrPrrrrrf�srfc@seZdZdS)�RecvmsgTCPTestNrPrrrrrg�srgc@seZdZdS)�RecvmsgIntoTCPTestNrPrrrrrh�srhc@seZdZdS)�SendrecvmsgSCTPStreamTestBaseNrPrrrrrisriz6IPPROTO_SCTP: [Errno 62] Protocol not supported on AIXr<r2r�c@seZdZdS)�SendmsgSCTPStreamTestNrPrrrrrj
srjcseZdZ�fdd�Z�ZS)�RecvmsgSCTPStreamTestc
sTztt|���Wn<tyN}z$|jtjkr0�|�d�WYd}~n
d}~00dS�Nz4sporadic ENOTCONN (kernel issue?) - see issue #13876)rMrkr�rrh�ENOTCONNrc�rBr�rUrrr�sz$RecvmsgSCTPStreamTest.testRecvmsgEOF�rGrHrIr�rYrrrUrrksrkcseZdZ�fdd�Z�ZS)�RecvmsgIntoSCTPStreamTestc
sTztt|���Wn<tyN}z$|jtjkr0�|�d�WYd}~n
d}~00dSrl)rMrpr�rrhrmrcrnrUrrr�$sz(RecvmsgIntoSCTPStreamTest.testRecvmsgEOFrorrrUrrpsrpc@seZdZdS)�SendrecvmsgUnixStreamTestBaseNrPrrrrrq-srqr�c@seZdZdS)�SendmsgUnixStreamTestNrPrrrrrr1srrc@seZdZdS)�RecvmsgUnixStreamTestNrPrrrrrs6srsc@seZdZdS)�RecvmsgIntoUnixStreamTestNrPrrrrrt<srtr5r�c@seZdZdS)�RecvmsgSCMRightsStreamTestNrPrrrrruBsruc@seZdZdS)�RecvmsgIntoSCMRightsStreamTestNrPrrrrrvGsrvcsFeZdZ�fdd�ZejZeed�r2dZ	dd�Z
ndZ	dd�Z
�ZS)	�InterruptedTimeoutBasecs2t���t�tjdd��}|�tjtj|�dS)NcSsddSr�r)�signumr�rrrr�[r�z.InterruptedTimeoutBase.setUp.<locals>.<lambda>)rMrCrrrW)rBZorig_alrm_handlerrUrrrCXs

�zInterruptedTimeoutBase.setUp�	setitimerg�������?cCst�tj|�dSr.)rry�ITIMER_REAL�rBZsecondsrrr�setAlarmgszInterruptedTimeoutBase.setAlarmr�cCst�|�dSr.)rr�r{rrrr|ms)rGrHrIrCrr3r7rr�
alarm_timer|rYrrrUrrwSs

rw�siginterruptr�ryz+Don't have signal.alarm or signal.setitimercsleZdZ�fdd�Zdd�Zdd�Zdd�Zd	d
�Zdd�Ze	e
j
d
�dd��Ze	e
j
d�dd��Z�Z
S)�InterruptedRecvTimeoutTestcst���|j�|j�dSr.)rMrCr=r�r7rArUrrrCzs
z InterruptedRecvTimeoutTest.setUpc	OsdzR|�|j�|�t��}||i|��Wd�n1s<0YW|�d�n|�d�0dSr�)r|r}r&r	�rBr�rSrTr1rrr�checkInterruptedRecv~s
.z/InterruptedRecvTimeoutTest.checkInterruptedRecvcCs|�|jjd�dSr�)r�r=r�rArrr�testInterruptedRecvTimeout�sz5InterruptedRecvTimeoutTest.testInterruptedRecvTimeoutcCs|�|jjtd��dSr�)r�r=�	recv_intor�rArrr�testInterruptedRecvIntoTimeout�sz9InterruptedRecvTimeoutTest.testInterruptedRecvIntoTimeoutcCs|�|jjd�dSr�)r�r=r�rArrr�testInterruptedRecvfromTimeout�sz9InterruptedRecvTimeoutTest.testInterruptedRecvfromTimeoutcCs|�|jjtd��dSr�)r�r=�
recvfrom_intor�rArrr�"testInterruptedRecvfromIntoTimeout�sz=InterruptedRecvTimeoutTest.testInterruptedRecvfromIntoTimeoutr�cCs|�|jjd�dSr�)r�r=r�rArrr�testInterruptedRecvmsgTimeout�sz8InterruptedRecvTimeoutTest.testInterruptedRecvmsgTimeoutr6cCs|�|jjtd�g�dSr�)r�r=r6r�rArrr�!testInterruptedRecvmsgIntoTimeout�sz<InterruptedRecvTimeoutTest.testInterruptedRecvmsgIntoTimeout)rGrHrIrCr�r�r�r�r�rr
r�r�rYrrrUrrss



rcsteZdZ�fdd�Zdd�Zdd�Ze�dd�d	d
��Ze�dd�dd��Z	e�dd�e
ejd
�dd���Z�Z
S)�InterruptedSendTimeoutTestcspt���|��|_|�|jj�tj|jd�}|�	�|j
��\|_}|�|jj�|�
�|j�|j�dS)N)�target)rMrCr�r�rWrrO�Thread�	doConnect�startr=r�r�rr�r7)rBZ
cli_threadr�rUrrrC�s

z InterruptedSendTimeoutTest.setUpcCs|j�|j�dSr.)r�r�r�rArrrr��sz$InterruptedSendTimeoutTest.doConnectc	OsfzT|�t��,}|�|j�||i|��qWd�n1s>0YW|�d�n|�d�0dSr�)r&r	r|r}r�rrr�checkInterruptedSend�s
0z/InterruptedSendTimeoutTest.checkInterruptedSendr�r�cCs|�|jjd�dSru)r�r�r�rArrr�testInterruptedSendTimeout�sz5InterruptedSendTimeoutTest.testInterruptedSendTimeoutcCs|�|jjd|j�dSru)r�r�r.r�rArrr�testInterruptedSendtoTimeout�s�z7InterruptedSendTimeoutTest.testInterruptedSendtoTimeoutr�cCs|�|jjdg�dSru)r�r�r�rArrr�testInterruptedSendmsgTimeout�sz8InterruptedSendTimeoutTest.testInterruptedSendmsgTimeout)rGrHrIrCr�r�rZrequires_mac_verr�r�rr
r�rYrrrUrr��s	





r�c@seZdZdd�Zdd�ZdS)�
TCPCloserTestcCsh|j��\}}|��|j}t�|gggd�\}}}|�||g�|�|�d�d�|��|��dS)N��?rpr�)r=r�rr�r�r�r�)rBr�r��sdr�r�r
rrr�	testClose�szTCPCloserTest.testClosecCs |j�t|jf�t�d�dS�Nr�)r�r�r�r?r�r�rArrr�
_testClose�szTCPCloserTest._testCloseN)rGrHrIr�r�rrrrr��s
r�c@sNeZdZddd�Zdd�Zdd�Zdd	�Zd
d�Zdd
�Zdd�Z	dd�Z
dS)�BasicSocketPairTestr�cCstj||d�dSr�)r�rNr�rrrrN�szBasicSocketPairTest.__init__cCs\|�|tj�ttd�r*|�|jtj�n|�|jtj�|�|jtj�|�|j	d�dS)Nr�r)
rr
rr�rr�r<r�r2rr�rrr�_check_defaults�s
z#BasicSocketPairTest._check_defaultscCs|�|j�dSr.)r�r�rArrr�
_testDefaults�sz!BasicSocketPairTest._testDefaultscCs|�|j�dSr.)r�r=rArrr�testDefaults�sz BasicSocketPairTest.testDefaultscCs|j�d�}|�|t�dSr��r=r�r�r�r�rrrr�szBasicSocketPairTest.testRecvcCs|j�t�dSr.�r�r�r�rArrrr�szBasicSocketPairTest._testRecvcCs|j�t�dSr.�r=r�r�rArrr�testSendszBasicSocketPairTest.testSendcCs|j�d�}|�|t�dSr��r�r�r�r�r�rrr�	_testSendszBasicSocketPairTest._testSendN)r�)rGrHrIrNr�r�r�r�r�r�r�rrrrr��s
	r�cs�eZdZdd�Z�fdd�Z�fdd�Zdd�Zd	d
�Zdd�Zd
d�Z	dd�Z
dd�Ze�
eed�preed�d�e�ejd�dd���Zdd�Zdd�Zdd�Z�ZS)�PurePythonSocketPairTestcCs2zt�tj�WSty,t�tj�YS0dSr.)r
r�r�rr<rArrrr�sz#PurePythonSocketPairTest.socketpaircs0ttd�rtj|_tjt_nd|_t���dS)Nr�)rr
r
r��_orig_sp�_fallback_socketpairrMrCrArUrrrCs


zPurePythonSocketPairTest.setUpcs t���|jdur|jt_dSr.)rMrEr�r
r�rArUrrrE)s

z!PurePythonSocketPairTest.tearDowncCs|j�d�}|�|t�dSr�r�r�rrr�	test_recv/sz"PurePythonSocketPairTest.test_recvcCs|j�t�dSr.r�rArrr�
_test_recv3sz#PurePythonSocketPairTest._test_recvcCs|j�t�dSr.r�rArrr�	test_send6sz"PurePythonSocketPairTest.test_sendcCs|j�d�}|�|t�dSr�r�r�rrr�
_test_send9sz#PurePythonSocketPairTest._test_sendcCs$t�tj�\}}|��|��dSr.)r
r�r<r�rBr�r3rrr�	test_ipv4=sz"PurePythonSocketPairTest.test_ipv4cCsdSr.rrArrr�
_test_ipv4Bsz#PurePythonSocketPairTest._test_ipv4r:�IPV6_V6ONLY� IPV6_V6ONLY option not supportedr@cCs$t�tj�\}}|��|��dSr.)r
r�r�rr�rrr�	test_ipv6Esz"PurePythonSocketPairTest.test_ipv6cCsdSr.rrArrr�
_test_ipv6Nsz#PurePythonSocketPairTest._test_ipv6cs�tjj�d���fdd�}d}}zn|tj_|�t��t��\}}Wd�n1sX0YW�tj_�rx���|r�|��|r�|��n.�tj_�r����|r�|��|r�|��0dS)Nc	sf�|�}�durbt�tjtj����d�z��|dd��WnttfyVYn0��d�|S)NFr�T)r
r<r2rKr��BlockingIOError�InterruptedError)rBr0�Zinject_sockZorig_getsocknamerr�inject_getsocketnameUs

z[PurePythonSocketPairTest.test_injected_authentication_failure.<locals>.inject_getsocketname)r
r�r&rr�r)rBr��sock1�sock2rr�r�$test_injected_authentication_failureQs,,
�z=PurePythonSocketPairTest.test_injected_authentication_failurecCsdSr.rrArrr�%_test_injected_authentication_failurersz>PurePythonSocketPairTest._test_injected_authentication_failure)rGrHrIr�rCrEr�r�r�r�r�r�r�rsrr
rqrr�r�r�r�r�rYrrrUrr�s$	
�!r�c@s�eZdZd&dd�Zdd�Zdd�Zdd	�Zejd
d��Z	e�e�Z
e�e
ed�d
�e�ddd�dd���Zdd�Zdd�Zdd�Zdd�Zdd�Zdd�Zdd �Zd!d"�Zd#d$�Zd%S)'�NonBlockingTCPTestsr�cCst��|_tj||d�dSr�)rOry�eventr�rNr�rrrrN|s
zNonBlockingTCPTests.__init__cCsh|�|j��|�|dk}|�|��|�tdurd|du}t�|tjtj�}|�t|tj@�|�dS)N�)	r�r=r��getblockingr�F_GETFLr��
O_NONBLOCK�bool)rBr�r7�blockingZfd_blocking�flagrrr�assert_sock_timeout�sz'NonBlockingTCPTests.assert_sock_timeoutcCs�|j�d�|�|jd�|j�d�|�|jd�|j�d�|�|jd�|j�d�|�|jd�|j�d�|�|jd�|j�d�|�|jd�dS)NTFr�rr�)r=rKr�r�rArrr�testSetBlocking�sz#NonBlockingTCPTests.testSetBlockingcCsdSr.rrArrr�_testSetBlocking�sz$NonBlockingTCPTests._testSetBlockingcCsbddl}|j|jkr|�d�|j�d�|�|j��d�|j�|jd�|�|j���dS)Nrzneeds UINT_MAX < ULONG_MAXFr�rp)	r�rZ	ULONG_MAXrcr=rKr�r�rbrrrr�testSetBlocking_overflow�s
z,NonBlockingTCPTests.testSetBlocking_overflowrJztest needs socket.SOCK_NONBLOCKr���cCs4|j��t�tjtjtjB�|_|�|jd�dSr�)r=rr
r<r2rJr�rArrr�testInitNonBlocking�s


�z'NonBlockingTCPTests.testInitNonBlockingcCsdSr.rrArrr�_testInitNonBlocking�sz(NonBlockingTCPTests._testInitNonBlockingcCs`td��D|j�d�|j��\}}|�|j�|�|���Wd�n1sR0YdS)Nr�)r8r=r�r�rWrrbr�r�rrr�testInheritFlagsBlocking�s

z,NonBlockingTCPTests.testInheritFlagsBlockingcCs|j�t|jf�dSr.�r�r�r�r?rArrr�_testInheritFlagsBlocking�sz-NonBlockingTCPTests._testInheritFlagsBlockingcCsfd}t|��F|j�d�|j��\}}|�|j�|�|��|�Wd�n1sX0YdS)Ng4@r�)r8r=r�r�rWrr�r�)rBZdefault_timeoutr�r�rrr�testInheritFlagsTimeout�s
z+NonBlockingTCPTests.testInheritFlagsTimeoutcCs|j�t|jf�dSr.r�rArrr�_testInheritFlagsTimeout�sz,NonBlockingTCPTests._testInheritFlagsTimeoutcCs�|j�d�t��}|�t��|j��\}}Wd�n1sB0Yt��|}|�|d�|j�	�t
�
|jgggtj�\}}}|j|vr�|�
d�|j��\}}|�|j�|�|���dS)NFr�z'Error trying to do accept after select.)r=rKr��	monotonicr&r�r�r�r�rnr�r�LONG_TIMEOUTr"rWrrbr�)rBZ
start_timer�r�Zdtr�r�r
rrr�
testAccept�s,


zNonBlockingTCPTests.testAcceptcCs |j��|j�t|jf�dSr.)r�r�r�r�r�r?rArrr�_testAccept�s
zNonBlockingTCPTests._testAcceptcCs�|j��\}}|�|j�|�d�|�t��|�tt	��}Wd�n1sR0Y|j
��t�|gggt
j�\}}}||vr�|�d�|�tt	��}|�|t	�dS)NFz0Error during select call to non-blocking socket.)r=r�rWrrKr&r�r�r�r�r�rnr�rr�r"r�)rBr�r�r�r�r�r
rrrr��s
,

zNonBlockingTCPTests.testRecvcCs,|j�t|jf�|j��|j�t�dSr.)r�r�r�r?r�r�r
r�rArrrr�s
zNonBlockingTCPTests._testRecvN)r�)rGrHrIrNr�r�r�rrrr�Z_testSetBlocking_overflowr�rqrr
�requires_linux_versionr�r�r�r�r�r�r�r�r�r�rrrrr�zs*


�	r�c@s�eZdZdZdZdZdZdZeZ	dZ
eZd:dd	�Zd
d�Z
dd
�Zdd�Zdd�Zdd�Zdd�Zdd�Zdd�Zdd�Zdd�Zdd�Zd d!�Zd"d#�Zd$d%�Zd&d'�Zd(d)�Zd*d+�Zd,d-�Zd.d/�Zd0d1�Z d2d3�Z!d4d5�Z"d6d7�Z#d8d9�Z$dS);�FileObjectClassTestCaserrr�strictNr	r"r�cCstj||d�dSr�r�r�rrrrN0sz FileObjectClassTestCase.__init__cCsRdd�td�D�\|_|_|_|_t�|�|jj|j	|j
|j|j|j
d�|_dS)NcSsg|]}t���qSr)rOry�r�r:rrrr�4sz1FileObjectClassTestCase.setUp.<locals>.<listcomp>r-��encoding�errors�newline)r+�evt1�evt2�
serv_finished�cli_finishedr�rCr�r�	read_moderdr�r�r��	read_filerArrrrC3s�
�zFileObjectClassTestCase.setUpcCs6|j��|j��|�|jj�d|_t�|�dSr.)r�rnr�rr�closedr�rErArrrrE=s


z FileObjectClassTestCase.tearDowncCs0t�|�|jj|j|j|j|j|jd�|_	dS)Nr�)
r�r�r�r�
write_moderdr�r�r��
write_filerArrrr�Ds
�z#FileObjectClassTestCase.clientSetUpcCs6|j��|j��|�|jj�d|_t�|�dSr.)r�rnr�rrr�r�r�rArrrr�Ls


z&FileObjectClassTestCase.clientTearDowncCsx|j�d�|j�d�|�tj|jjd�|�t��}|j�d�Wd�n1sX0Y|�dt	|j
��dS)Nrpr�z!cannot read from timed out object)r�r�r�r�r&r
r7rrrr/)rB�ctxrrr�testReadAfterTimeoutSs*z,FileObjectClassTestCase.testReadAfterTimeoutcCs.|j�|jdd��|j��|j��dS)Nrr�)r�r��	write_msg�flushr�r�rArrr�_testReadAfterTimeout_s
z-FileObjectClassTestCase._testReadAfterTimeoutcCs<|j�t|j�d�}|j�d�}||}|�||j�dSrQ)r�r�r��read_msgr�)rB�	first_segZ
second_segr�rrr�
testSmallReaddsz%FileObjectClassTestCase.testSmallReadcCs|j�|j�|j��dSr.�r�r�r�r�rArrr�_testSmallReadksz&FileObjectClassTestCase._testSmallReadcCs|j��}|�||j�dSr.)r�r�r�r�r�rrr�testFullReados
z$FileObjectClassTestCase.testFullReadcCs|j�|j�|j��dSr.)r�r�r�rrArrr�
_testFullReadtsz%FileObjectClassTestCase._testFullReadcCs:t|j��}|j�d�}|sq(||7}q|�||j�dSr�)r�r�r�r�r�)rBr9�charrrr�testUnbufferedReadxs
z*FileObjectClassTestCase.testUnbufferedReadcCs|j�|j�|j��dSr.r�rArrr�_testUnbufferedRead�sz+FileObjectClassTestCase._testUnbufferedReadcCs|j��}|�||j�dSr.)r��readliner�r��rB�linerrr�testReadline�s
z$FileObjectClassTestCase.testReadlinecCs|j�|j�|j��dSr.r�rArrr�
_testReadline�sz%FileObjectClassTestCase._testReadlinecCs&|j��|j��}|�||j�dSr.)r�rr�r�r�r�r�rrr�testCloseAfterMakefile�s

z.FileObjectClassTestCase.testCloseAfterMakefilecCs|j�|j�|j��dSr.r�rArrr�_testCloseAfterMakefile�sz/FileObjectClassTestCase._testCloseAfterMakefilecCs@|j��|j�tt��}t|jt�r.|�	�}|�
||j�dSr.)r�rr�r�r�r�r�r�r�decoder�r�rrr�testMakefileAfterMakefileClose�s

z6FileObjectClassTestCase.testMakefileAfterMakefileClosecCs|j�|j�|j��dSr.r�rArrr�_testMakefileAfterMakefileClose�sz7FileObjectClassTestCase._testMakefileAfterMakefileClosecCs|�|jj�dSr.)rr�r�rArrr�testClosedAttr�sz&FileObjectClassTestCase.testClosedAttrcCs|�|jj�dSr.)rr�r�rArrr�_testClosedAttr�sz'FileObjectClassTestCase._testClosedAttrcCs,|�|jj|j�|�|jj|j���dSr.)r�r�r$r�r�r�rrArrr�testAttributes�sz&FileObjectClassTestCase.testAttributescCs,|�|jj|j�|�|jj|j���dSr.)r�r�r$r�r�r�rrArrr�_testAttributes�sz'FileObjectClassTestCase._testAttributescCs8|j��|�t|jj�|j��|�t|jj�dSr.)r�rr&r�rr�rr�rArrr�
testRealClose�s

z%FileObjectClassTestCase.testRealClosecCsdSr.rrArrr�_testRealClose�sz&FileObjectClassTestCase._testRealClose)r�)%rGrHrIrdr�r�r�r�r�r�r�r�rNrCrEr�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�rrrrrrrr�sB


r�c@s`eZdZdZdd�Zdd�Zdd�Zdd	�Zd
d�Zdd
�Z	dd�Z
dd�Zdd�Zdd�Z
dS)�!UnbufferedFileObjectClassTestCasercCsL|j��}|�|d|j�|j�dd�|_|j��}|�|d|j�dS)N�A. r	r�B. )r�r�r�r�r�rr�rrr�testUnbufferedReadline�s


z8UnbufferedFileObjectClassTestCase.testUnbufferedReadlinecCs2|j�d|j�|j�d|j�|j��dS)Nrrr�rArrr�_testUnbufferedReadline�sz9UnbufferedFileObjectClassTestCase._testUnbufferedReadlinecCsD|j��|j�d�}|�||j�|j��|�t|jjd�dSr�)r�rr�r�r�r�r&rr�rrr�testMakefileClose�s


z3UnbufferedFileObjectClassTestCase.testMakefileClosecCs|j�|j�|j��dSr.r�rArrr�_testMakefileClose�sz4UnbufferedFileObjectClassTestCase._testMakefileClosecCs6t�|j�}|j��t�|j�}|�|d|�dSr�)r~r}r�r�rr�)rBZrefcount_beforeZrefcount_afterrrr�testMakefileCloseSocketDestroy�s
z@UnbufferedFileObjectClassTestCase.testMakefileCloseSocketDestroycCsdSr.rrArrr�_testMakefileCloseSocketDestroy�szAUnbufferedFileObjectClassTestCase._testMakefileCloseSocketDestroycCs|j�d�|�|j�td��d�|�|j�t|j�d�d�|j	�
�|j�d�|j�t|j�d�}|dur�t
�d�|j�t|j�d�}td�}|j�|�}|�|d�||d|�}|�||j�|�|j�td��d�|�|j�d�d�dS)NFr�r�r�g�?r�rp)r�rKr�r��readintor�r�r�r�r�rnr�r�r�r�)rBr�r9r�r�rrr�testSmallReadNonBlocking�s 

z:UnbufferedFileObjectClassTestCase.testSmallReadNonBlockingcCs>|j�d�|j�|j�|j��|j��|j�d�dS)Nr��@)	r�r�r�r�r�r�r�rnr�rArrr�_testSmallReadNonBlockings


z;UnbufferedFileObjectClassTestCase._testSmallReadNonBlockingcCs"|j�d�|jr|�|j�dS)Nr)r�r��serv_skippedrcrArrr�testWriteNonBlockingsz6UnbufferedFileObjectClassTestCase.testWriteNonBlockingcCstd|_|j�d�dtj}d}|j�|�}|�|d�t|�D](}|j�|�}|dur\qp|�|d�q@d|_dS)NFrr�rz$failed to saturate the socket buffer)	rr�rKrrr�r�rlr+)rBZBIGZLIMITr�r:rrr�_testWriteNonBlockings
z7UnbufferedFileObjectClassTestCase._testWriteNonBlockingN)rGrHrIrdrrrr	r
rr
rrrrrrrr�s
		rc@seZdZdZdS)�#LineBufferedFileObjectClassTestCaserpN�rGrHrIrdrrrrr)src@seZdZdZdS)�$SmallBufferedFileObjectClassTestCaser�Nrrrrrr.src@s&eZdZdZe�d�ZdZeZdZ	dS)�"UnicodeReadFileObjectClassTestCaserrr"r*N�
rGrHrIr�r�r�r�r�r�r�rrrrr3s

rc@s&eZdZdZeZdZe�d�ZdZ	dS)�#UnicodeWriteFileObjectClassTestCaser	r!rr*N)
rGrHrIr�r�r�r�r�r�r�rrrrr=s

rc@s,eZdZdZe�d�ZdZe�d�ZdZ	dS)�'UnicodeReadWriteFileObjectClassTestCaserrr!r*NrrrrrrGs


rc@seZdZdd�ZdS)�NetworkConnectionTestcCst�t|jf�|_|j|_dSr.)r
�create_connectionr�r?r�r�rArrrr�Tsz!NetworkConnectionTest.clientSetUpN)rGrHrIr�rrrrrQsrc@seZdZdS)�
BasicTCPTest2NrPrrrrrZsrc@sDeZdZGdd�dej�Zejdd��Zdd�Zdd�Z	d	d
�Z
dS)�NetworkConnectionNoServerc@seZdZdd�ZdS)z$NetworkConnectionNoServer.MockSocketcGst�d��dS)Nz	timed out)r
r7rrrrr�asz,NetworkConnectionNoServer.MockSocket.connectN)rGrHrIr�rrrr�
MockSocket`srccs,tj}|jt_zdVW|t_n|t_0dSr.)r
r)rBZ
old_socketrrr�mocked_socket_moduleds
z.NetworkConnectionNoServer.mocked_socket_modulecCsrt��}t�tjtj�}|�|j�|�t��}|�	t
|f�Wd�n1sR0Y|�|jj
t
j�dSr.)rr�r
r<r2rWrr&rr�r�r�r/rhZECONNREFUSED)rBr?r�r1rrr�test_connectns,z&NetworkConnectionNoServer.test_connectcCs\t��}|�t��}t�t|f�Wd�n1s60Yt��}|�|j	j
|�dSr.)rr�r&rr
rr�Zget_socket_conn_refused_errsrr/rh)rBr?r1Zexpected_errnosrrr�test_create_connectionvs
,z0NetworkConnectionNoServer.test_create_connectioncCs�|���xzt�tdf�WnJtjy0YnBtyf}z tjsP|jtj	krR�WYd}~nd}~00|�
d�Wd�n1s�0YdS)Nrrp)rr
rr�r7rrr�rhZEAFNOSUPPORTr"rrrrr�test_create_connection_timeout�s
z8NetworkConnectionNoServer.test_create_connection_timeoutN)rGrHrIr
r�
contextlib�contextmanagerrr r!r"rrrrr^s
	rc@sveZdZddd�Zdd�Zdd�Zdd	�ZeZd
d�ZeZ	dd
�Z
eZdd�ZeZ
dd�ZeZdd�ZeZdd�ZdS)�NetworkConnectionAttributesTestr�cCstj||d�t�|�dSr�r�r�rrrrN�sz(NetworkConnectionAttributesTest.__init__cCst��|_dSr.)rr��source_portrArrrr��sz+NetworkConnectionAttributesTest.clientSetUpcCs|j��d|_t�|�dSr.r�rArrrr��s
z.NetworkConnectionAttributesTest.clientTearDowncCs|j��\}}|��dSr.)r=r�rr�rrr�_justAccept�sz+NetworkConnectionAttributesTest._justAcceptcCs:tjt|jftjd�|_|�|jj�|�	|jj
d�dS)Nrlr�)r
rr�r?rr3r�rWrr�rrArrr�_testFamily�s
�z+NetworkConnectionAttributesTest._testFamilycCsJtjt|jftjd|jfd�|_|�|jj	�|�
|j��d|j�dS)Nr*)r7�source_addressrp)r
rr�r?rr3r&r�rWrr�r�rArrr�_testSourceAddress�s�z2NetworkConnectionAttributesTest._testSourceAddressc	Csn|�t��du�t�d�z.t�t|jf�|_|�|jj	�Wt�d�nt�d�0|�
|j��d�dS)Nr@�rr
r5r6rr�r?r�rWrr�r�rArrr�_testTimeoutDefault�s
z3NetworkConnectionAttributesTest._testTimeoutDefaultc	Csr|�t��du�t�d�z2tjt|jfdd�|_|�|jj	�Wt�d�nt�d�0|�
|j��d�dS�N�rlr+rArrr�_testTimeoutNone�s
z0NetworkConnectionAttributesTest._testTimeoutNonecCs,tjt|jfdd�|_|�|j��d�dSr-)r
rr�r?r�r�r�rArrr�_testTimeoutValueNamed�sz6NetworkConnectionAttributesTest._testTimeoutValueNamedcCs8t�t|jfd�|_|�|jj�|�|j��d�dS)Nr.)	r
rr�r?r�rWrr�r�rArrr�_testTimeoutValueNonamed�sz8NetworkConnectionAttributesTest._testTimeoutValueNonamedN)r�)rGrHrIrNr�r�r'Z
testFamilyr(ZtestSourceAddressr*ZtestTimeoutDefaultr,ZtestTimeoutNoner/ZtestTimeoutValueNamedr0ZtestTimeoutValueNonamedr1rrrrr%�s 
	r%c@sBeZdZddd�Zdd�Zdd�Zdd	�ZeZd
d�Zdd
�Z	dS)�NetworkConnectionBehaviourTestr�cCstj||d�t�|�dSr�r�r�rrrrN�sz'NetworkConnectionBehaviourTest.__init__cCsdSr.rrArrrr��sz*NetworkConnectionBehaviourTest.clientSetUpcCs|j��d|_t�|�dSr.r�rArrrr��s
z-NetworkConnectionBehaviourTest.clientTearDowncCs2|j��\}}|�|j�t�d�|�d�dS)Nr��done!)r=r�rWrr�r�r�r�rrr�testInsideTimeout�s
z0NetworkConnectionBehaviourTest.testInsideTimeoutcCs0t�t|jf�|_}|�d�}|�|d�dS)Nr�r3)r
rr�r?r�r�r�)rBr�r�rrr�_testInsideTimeout�s
z1NetworkConnectionBehaviourTest._testInsideTimeoutcs4tjt|jfdd�|_�|�tj�fdd��dS)Nrprlcs
��d�S)Nr�)r�r�r�rrr�r�zDNetworkConnectionBehaviourTest._testOutsideTimeout.<locals>.<lambda>)r
rr�r?r�r&r7rArr6r�_testOutsideTimeout�sz2NetworkConnectionBehaviourTest._testOutsideTimeoutN)r�)
rGrHrIrNr�r�r4ZtestOutsideTimeoutr5r7rrrrr2�s
r2c@s6eZdZdd�Zdd�Ze�eed�d�dd��Z	d	S)
�TCPTimeoutTestcs �fdd�}��tj|d�dS)Ncs�j�d��j��dSr�)r=r�r�r�rArr�
raise_timeoutsz4TCPTimeoutTest.testTCPTimeout.<locals>.raise_timeoutz*Error generating a timeout exception (TCP)�r&r
r7�rBr9rrAr�testTCPTimeouts
�zTCPTimeoutTest.testTCPTimeoutcCsxd}z|j�d�|j��}WnFtjy<|�d�Yn*tyPd}Yn|�d�Yn0|st|�d�dS)NFr�z%caught timeout instead of error (TCP)Tz!caught unexpected exception (TCP)z3accept() returned success when we did not expect it)r=r�r�r
r7r"r�rB�okrhrrr�testTimeoutZeroszTCPTimeoutTest.testTimeoutZeror�ztest needs signal.alarm()c
s|j�d�Gdd�dt���fdd�}t�tj|�}z�z�z�zt�d�|j��}Wn\tjyr|�	d�YnJ�y�Yn:|�	dt
��dd�t�
�f�Yn0|�	d	�Wt�d
�nt�d
�0Wn�y�|�	d�Yn0Wt�tj|�nt�tj|�0dS)Nrc@seZdZdS)z4TCPTimeoutTest.testInterruptedTimeout.<locals>.AlarmNrPrrrr�Alarm!sr@cs��dSr.r)rr��r@rr�
alarm_handler#sz<TCPTimeoutTest.testInterruptedTimeout.<locals>.alarm_handlerr�zcaught timeout instead of Alarmz3caught other exception instead of Alarm: %s(%s):
%sznothing caughtrzgot Alarm in wrong place)r=r�r-rrr�r�r
r7r"r~�exc_info�	traceback�
format_exc)rBrBr
rhrrAr�testInterruptedTimeouts*
�z%TCPTimeoutTest.testInterruptedTimeoutN)
rGrHrIr<r?r�rqrrrFrrrrr8s�r8c@seZdZdd�Zdd�ZdS)�UDPTimeoutTestcs �fdd�}��tj|d�dS)Ncs�j�d��j�d�dS�Nr�r��r=r�r�r�rArrr9?sz4UDPTimeoutTest.testUDPTimeout.<locals>.raise_timeoutz*Error generating a timeout exception (UDP)r:r;rrAr�testUDPTimeout>s
�zUDPTimeoutTest.testUDPTimeoutcCszd}z|j�d�|j�d�}WnFtjy>|�d�Yn*tyRd}Yn|�d�Yn0|sv|�d�dS)NFr�r�z%caught timeout instead of error (UDP)Tz!caught unexpected exception (UDP)�1recv() returned success when we did not expect it�r=r�r�r
r7r"rr=rrrr?EszUDPTimeoutTest.testTimeoutZeroN)rGrHrIrJr?rrrrrG<srGc@seZdZdd�Zdd�ZdS)�UDPLITETimeoutTestcs �fdd�}��tj|d�dS)Ncs�j�d��j�d�dSrHrIr�rArrr9Xsz<UDPLITETimeoutTest.testUDPLITETimeout.<locals>.raise_timeoutz.Error generating a timeout exception (UDPLITE)r:r;rrAr�testUDPLITETimeoutWs
�z%UDPLITETimeoutTest.testUDPLITETimeoutcCszd}z|j�d�|j�d�}WnFtjy>|�d�Yn*tyRd}Yn|�d�Yn0|sv|�d�dS)NFr�r�z)caught timeout instead of error (UDPLITE)Tz%caught unexpected exception (UDPLITE)rKrLr=rrrr?^sz"UDPLITETimeoutTest.testTimeoutZeroN)rGrHrIrNr?rrrrrMSsrMc@seZdZdd�Zdd�ZdS)�TestExceptionscCsJ|�ttt��|�ttjt��|�ttjt��|�ttjt��dSr.)r�
issubclassrr-r
r'r(r7rArrr�testExceptionTreensz TestExceptions.testExceptionTreecCsvt�tjtjd�}t�tjtjd|���}|��|�|j�|�t��|�	d�Wd�n1sh0YdS)NrF)
r
r<r2rrrWrNr&rrK)rBZsock0r�rrr�test_setblocking_invalidfdts�z)TestExceptions.test_setblocking_invalidfdN)rGrHrIrQrRrrrrrOlsrOr��Linux specific testc@s@eZdZdZdd�Zdd�Zdd�Zdd	�Zd
d�Zdd
�Z	dS)�TestLinuxAbstractNamespace�lc
Cs�d}t�tjtj���}|�|�|��t�tjtj��j}|�|���|��d�0}|�|��|�|�|�	�|�Wd�n1s�0YWd�n1s�0YWd�n1s�0YdS)Nspython-test-hello�r)
r
r�r2rar@r�r�r�r��getpeername)rBr}�s1r`Zs3rrr�testLinuxAbstractNamespace�s
z5TestLinuxAbstractNamespace.testLinuxAbstractNamespacecCs`dd|jd}t�tjtj��*}|�|�|�|��|�Wd�n1sR0YdS)Nr��hrp)�
UNIX_PATH_MAXr
r�r2rar�r��rBr}rrrr�testMaxName�s
z&TestLinuxAbstractNamespace.testMaxNamecCsRdd|j}t�tjtj�� }|�t|j|�Wd�n1sD0YdS)N��h)rZr
r�r2r&rrar[rrr�testNameOverflow�sz+TestLinuxAbstractNamespace.testNameOverflowcCsFt�tjtj�}z&|�d�|�|��d�W|��n
|��0dS)Nz
pythontest�
pythontest)r
r�r2rar�r�rrrrr�testStrName�s

z&TestLinuxAbstractNamespace.testStrNamecCsRt�tjtj��.}|�td��|�|��d�Wd�n1sD0YdS)Nr`)r
r�r2rar�r�r�rrrr�testBytearrayName�sz,TestLinuxAbstractNamespace.testBytearrayNamec	Cs�d}t�tjtj���}|�d�|�|��|�t�tjtj��>}|�d�|�|��|�|�|��|���Wd�n1s�0YWd�n1s�0YdS)Ns
^[0-9a-f]{5}r*)r
r�r2raZassertRegexr�r�)rBZabstract_addressrWr`rrr�testAutobind�s

z'TestLinuxAbstractNamespace.testAutobindN)
rGrHrIrZrXr\r_rarbrcrrrrrT�s	rTztest needs socket.AF_UNIXc@sneZdZdd�Zdd�Zdd�Zdd�Zd	d
�Zdd�Zd
d�Z	dd�Z
dd�Ze�
ejdkd�dd��ZdS)�TestUnixDomaincCst�tjtj�|_dSr.)r
r�r2r�rArrrrC�szTestUnixDomain.setUpcCs|j��dSr.)r�rrArrrrE�szTestUnixDomain.tearDownc
Cs:zt�|�WSty4|�d�|t����Yn0dS)NzBPathname {0!a} cannot be represented in file system encoding {1!r})r��fsencoder�rcr	r~�getfilesystemencoding�rBr�rrr�encoded�s��zTestUnixDomain.encodedc
CsZzt�||�WnDtyT}z,t|�dkr>|�d�|��n�WYd}~n
d}~00dS)NzAF_UNIX path too longz6Pathname {0!a} is too long to serve as an AF_UNIX path)rr�rrrcr	)rBr�r�r�rrrra�s��zTestUnixDomain.bindcCs|�|j��d�dS)N)r*N)rr�r�rArrrr��szTestUnixDomain.testUnboundcCs@tj�tj�}|�|j|�|�tj|�|�	|j�
�|�dSr.)r�r��abspathr�TESTFNrar�rWr�r�r�rgrrr�testStrAddr�szTestUnixDomain.testStrAddrcCsFtj�tj�}|�|j|�|��|�tj	|�|�
|j��|�dSr.)r�r�rirrjrar�rhrWr�r�r�rgrrr�
testBytesAddr�szTestUnixDomain.testBytesAddrcCsRtj�tj�}|�|�}|�|j|�dd��|�	tj
|�|�|j��|�dS)N�ascii�surrogateescape)
r�r�rirZTESTFN_UNICODErhrar�r�rWr�r�r�)rBr�r�rrr�testSurrogateescapeBind�s

z&TestUnixDomain.testSurrogateescapeBindcCsTtjdur|�d�tj�tj�}|�|j|�|�tj	|�|�
|j��|�dS)Nz!No unencodable filename available)rZTESTFN_UNENCODABLErcr�r�rirar�rWr�r�r�rgrrr�testUnencodableAddr�s

z"TestUnixDomain.testUnencodableAddrr�rScCs|�t|jjd�dS)Nr*)r&rr�rarArrr�testEmptyAddress�szTestUnixDomain.testEmptyAddressN)rGrHrIrCrErhrar�rkrlrorpr�rsr~r�rqrrrrrd�s	
rdc@s�eZdZddd�Zdd�Zdd�Zdd	�ZeZd
d�ZeZ	dd
�Z
dd�Zdd�ZeZ
dd�ZeZdd�Zdd�Zdd�ZeZdS)�BufferIOTestr�cCstj||d�dSr�r�r�rrrrNszBufferIOTest.__init__cCsZt�ddgtt��}|j�|�}|�|tt��|��}|dtt��}|�|t�dS�NrMr)rNr�r�r�r�r�r��rBr9r�r�rrr�testRecvIntoArrayszBufferIOTest.testRecvIntoArraycCstt�}|j�|�dSr.�r�r�r�r��rBr9rrr�_testRecvIntoArrayszBufferIOTest._testRecvIntoArraycCsDtd�}|j�|�}|�|tt��|dtt��}|�|t�dSr�)r�r�r�r�r�r�rtrrr�testRecvIntoBytearrays
z"BufferIOTest.testRecvIntoBytearraycCsHtd�}|j�t|��}|�|tt��|dtt��}|�|t�dSr�)r�r�r�r�r�r�r�rtrrr�testRecvIntoMemoryview s
z#BufferIOTest.testRecvIntoMemoryviewcCs^t�ddgtt��}|j�|�\}}|�|tt��|��}|dtt��}|�|t�dSrs)rNr�r�r�r�r�r��rBr9r�r�r�rrr�testRecvFromIntoArray)sz"BufferIOTest.testRecvFromIntoArraycCstt�}|j�|�dSr.rvrwrrr�_testRecvFromIntoArray1sz#BufferIOTest._testRecvFromIntoArraycCsHtd�}|j�|�\}}|�|tt��|dtt��}|�|t�dSr�)r�r�r�r�r�r�r{rrr�testRecvFromIntoBytearray5s
z&BufferIOTest.testRecvFromIntoBytearraycCsLtd�}|j�t|��\}}|�|tt��|dtt��}|�|t�dSr�)r�r�r�r�r�r�r�r{rrr�testRecvFromIntoMemoryview>s
z'BufferIOTest.testRecvFromIntoMemoryviewcCs td�}|�t|jj|d�dS)Nr^r�)r�r&r�r�r�rwrrr�testRecvFromIntoSmallBufferGsz(BufferIOTest.testRecvFromIntoSmallBuffercCs|j�t�dSr.r�rArrr�_testRecvFromIntoSmallBufferLsz)BufferIOTest._testRecvFromIntoSmallBuffercCs$t�}|j�|�|j�|d�dSr�)r�r�r�rwrrr�testRecvFromIntoEmptyBufferOsz(BufferIOTest.testRecvFromIntoEmptyBufferN)r�)rGrHrIrNrurxryZ_testRecvIntoBytearrayrzZ_testRecvIntoMemoryviewr|r}r~Z_testRecvFromIntoBytearrayrZ_testRecvFromIntoMemoryviewr�r�r�Z_testRecvFromIntoEmptyBufferrrrrrrs"
rri�����c
Cs�ttd�sdSztd�}Wntttfy4YdS0|�6|D] }|�d�r@Wd�dSq@Wd�n1sv0YdS)N�AF_TIPCFz
/proc/modulesztipc T)rr
r�FileNotFoundError�IsADirectoryErrorrdr�)rr�rrr�isTipcAvailable[s

2r�z6TIPC module is not loaded, please 'sudo modprobe tipc'c@seZdZdd�ZdS)�TIPCTestcCs�t�tjtj�}t�tjtj�}|�|j�|�|j�|�tjtjd�tjt	t
tf}|�|�tj
t	t
ttt
d�df}|�t|�|�d�\}}|�|��|�|�|t�dS)Nrpr�rr�)r
r�r4rWrr�r5r6�TIPC_ADDR_NAMESEQ�
TIPC_STYPE�
TIPC_LOWER�
TIPC_UPPERra�TIPC_ADDR_NAMErkr.r�r�r�r�)rBr3r��srvaddrZsendaddrr�Zrecvaddrrrr�testRDMrs �
�zTIPCTest.testRDMN)rGrHrIr�rrrrr�osr�c@s6eZdZd
dd�Zdd�Zdd�Zdd	�Zd
d�ZdS)�TIPCThreadableTestr�cCstjj||d�t�|�dSr�r�r�rrrrN�szTIPCThreadableTest.__init__cCs�t�tjtj�|_|�|jj�|j�tjtjd�tj	t
ttf}|j�
|�|j��|��|j��\|_|_|�|jj�dSr�)r
r�r2r3rWrr�r5r6r�r�r�r�rar@ror�r�r�)rBr�rrrrC�s�
zTIPCThreadableTest.setUpcCsdt�d�t�tjtj�|_|�|jj�tjt	t
ttt
d�df}|j�
|�|j��|_dS)Nr�r�r)r�r�r
r�r2r�rWrr�r�r�rkr�r�r��cliaddr)rBr�rrrr��s
�zTIPCThreadableTest.clientSetUpcCs,|j�d�}|�|t�|�|j|j�dSr�)r�r�r�r�r�r�r�rrrr��szTIPCThreadableTest.testStreamcCs|j�t�|j��dSr.r�rArrrr��szTIPCThreadableTest._testStreamN)r�r�rrrrr��s

r�c@s4eZdZdd�Zdd�Zdd�Zdd�Zd	d
�ZdS)�ContextManagersTestcCs�t���}|�|j�Wd�n1s*0Y|�|j�t���}|��Wd�n1sf0Y|�|j�t��� }|�t|jd�Wd�n1s�0Y|�|j�dS�Nr+)r
r�r
rrr&rr
r�rrr�_testSocketClass�s
*
&
.z$ContextManagersTest._testSocketClasscCs2|j��\}}|�|j�|�d�}|�|�dSr��r=r�rWrr�r
�rBr�r�r�rrr�testCreateConnectionBase�s
z,ContextManagersTest.testCreateConnectionBasecCsl|j��}t�|��8}|�|j�|�d�|�|�d�d�Wd�n1sR0Y|�	|j�dS)Nr+r�)
r=r�r
rr�r
r
r�r�r�rBr}r�rrr�_testCreateConnectionBase�s

0z-ContextManagersTest._testCreateConnectionBasecCs2|j��\}}|�|j�|�d�}|�|�dSr�r�r�rrr�testCreateConnectionClose�s
z-ContextManagersTest.testCreateConnectionClosecCs\|j��}t�|��}|��Wd�n1s20Y|�|j�|�t|j	d�dSr�)
r=r�r
rrrr
r&rr
r�rrr�_testCreateConnectionClose�s

&z.ContextManagersTest._testCreateConnectionCloseN)rGrHrIr�r�r�r�r�rrrrr��s
r�c@s�eZdZe�eed�d�e�ddd�dd���Z	dd	�Z
d
d�Zdd
�Ze�
edud�dd��Ze�
edud�dd��Zdd�ZdS)�InheritanceTestr�zSOCK_CLOEXEC not definedr�r�r�cCsXt�tjtjtjB��.}|�|jtj�|�|���Wd�n1sJ0YdSr.)r
r<r2r�r�r�r��get_inheritablerrrr�test_SOCK_CLOEXEC�s
�z!InheritanceTest.test_SOCK_CLOEXECcCs@t��}|� |�|��d�Wd�n1s20YdSr)r
r�r�r�rrr�test_default_inheritable�sz(InheritanceTest.test_default_inheritablec	Cstt��}|�T|��}|��|� |�|��d�Wd�n1sH0YWd�n1sf0YdSr)r
rrr�r�)rBr�Znewsockrrr�test_dup�szInheritanceTest.test_dupcCsdt��}|�D|�d�|�|��d�|�d�|�|��d�Wd�n1sV0YdS)NTF)r
�set_inheritabler�r�r�rrr�test_set_inheritable�s

z$InheritanceTest.test_set_inheritableNr�cCs�t��}|�b|��}|�|��d�t�|tj�}|tjM}t�|tj|�|�|��d�Wd�n1st0YdSr)r
rr�r�r�F_GETFD�
FD_CLOEXECZF_SETFD)rBr�rTr�rrr�test_get_inheritable_cloexec�sz,InheritanceTest.test_get_inheritable_cloexeccCs|t��}|�\|��}|�t�|tj�tj@tj�|�d�|�t�|tj�tj@d�Wd�n1sn0YdS)NTr)r
rr�rr�r�r�)rBr�rTrrr�test_set_inheritable_cloexec
s�
�z,InheritanceTest.test_set_inheritable_cloexeccCsHt��\}}|�|j�|�|j�|�|��d�|�|��d�dSr)r
r�rWrr�r�)rBrWr`rrr�test_socketpairs
zInheritanceTest.test_socketpair)rGrHrIr�rqrr
rr�r�r�r�r�rsrr�r�r�rrrrr��s�	


r�rJzSOCK_NONBLOCK not definedc@s,eZdZddd�Ze�ddd�dd	��Zd
S)�NonblockConstantTestTr�cCs�|rj|�|jtj�|�|��|�|�t�|tjtj	�tj	@�|dkrZ|�
|���q�|�|���nL|�|jtj�|�|��d�|�
t�|tjtj	�tj	@�|�|���dSr�)r�r�r
r2r�rrr�r�r�r�r�)rBr�nonblockr7rrr�
checkNonblock"s�	�z"NonblockConstantTest.checkNonblockr�r�r�cCs�t�tjtjtjB���}|�|�|�d�|j|dd�|�d�|�|�|�d�|j|dd�|�d�|j|dd�|�d�|j|dd�Wd�n1s�0Yt��}t�d�t���}|�|�Wd�n1s�0Yt�d�t���}|�|d�Wd�n1�s.0Yt�d�t���}|j|dd�Wd�n1�sp0Yt�d�t���}|�|d�Wd�n1�s�0Yt�|�dS)NTF)r�g@rlr�)	r
r<r2rJr�rKr�r5r6)rBr�trrr�test_SOCK_NONBLOCK;s:
�






,

(

,

.

,z'NonblockConstantTest.test_SOCK_NONBLOCKN)Tr�)rGrHrIr�rr�r�rrrrr�s
r�r<r=zneed multiprocessingc@s@eZdZedd��Zdd�Zdd�Zdd�Zd	d
�Zdd�Z	d
S)�TestSocketSharingcCsD|��}|��}t�|�}|��\}}|�|�|��|��dSr.)rsr
�	fromsharer�r
r)r��qZsdata�messagerr`rrrr�remoteProcessServerbs

z%TestSocketSharing.remoteProcessServerc	Cs�t��}tj|j|fd�}|��|j�|j�}|j��}|j�	�|�
|�d}|�
|�t�|�}g}|�
d�}|szq�|�|�qj|�	�d�|�}|�||�|��dS)N�r�rSs
slapmahfror�r�)�multiprocessingr|�Processr�r�r=�share�pidr�rr�r
rr�r�rr�)	rBr�r#r�r�r�r�m�receivedrrr�	testShareps&






zTestSocketSharing.testSharecCs@|j�t���}|�ttj|dd��|�ttj|d�dS)Nrrr+)r=r�r��getpidr&r�r
r�)rBr�rrr�testShareLength�sz!TestSocketSharing.testShareLengthcCsb|�|��d�|�|��|���|�|j|j�|�|j|j�|jdkr^|�|j|j�dSr�)r�r�rr�r)rBZorg�otherrrr�compareSockets�s
z TestSocketSharing.compareSocketscCsD|j�t���}t�|�}z|�|j|�W|��n
|��0dSr.)r=r�r�r�r
r�r�r)rBr�rrrr�testShareLocal�s

z TestSocketSharing.testShareLocalc
Cs�tjtjg}tjtjg}|D]�}|D]�}zt�||�}WntyNYq$Yn0zH|�t���}t�	|�}z|�
||�W|��n
|��0W|��q$|��0q$qdSr.)r
r<r�r2r!rr�r�r�r�r�r)rB�families�typesrr��sourcer�Zsharedrrr�	testTypes�s

zTestSocketSharing.testTypesN)
rGrHrIr�r�r�r�r�r�r�rrrrr�]s

#r�c@s�eZdZdZdZdZejZe	dd��Z
e	dd��Zdd	�Zd
d�Z
dd
�Zdd�Zdd�Zdd�Zdd�Zdd�Zdd�Zdd�Zdd�Zdd�Zd d!�Zd"d#�Zd$d%�Zd&d'�Zd(d)�Zd*d+�Zd,d-�Zd.d/�Zd0d1�Z d2d3�Z!d4d5�Z"d6d7�Z#d8d9�Z$d:S);�SendfileUsingSendTesti�rir�cCs�dd�}d�dd�t|j�D��}ttjd��.}||j|j�D]}|�|�q>Wd�n1sb0Yttjd��}|��|_	Wd�n1s�0YdS)Ncss&||kr|V||8}q|r"|VdSr.r)�total�steprrr�chunks�s

z0SendfileUsingSendTest.setUpClass.<locals>.chunksr�cSsg|]}t�tj����qSr)�random�choice�string�
ascii_lettersr�r�rrrr��s�z4SendfileUsingSendTest.setUpClass.<locals>.<listcomp>r"r	)
rr+�BUFSIZErrrj�FILESIZEr�r��FILEDATA)r�r��chunkrZcsizerrr�
setUpClass�s
�*
z SendfileUsingSendTest.setUpClasscCst�tj�dSr.)rr�rj)r�rrr�
tearDownClass�sz#SendfileUsingSendTest.tearDownClasscCs8|j�tj�|j��\}}|�|j�|�|j�|Sr.)r=r�rr�r��TIMEOUTrWrr�rrr�accept_conn�s
z!SendfileUsingSendTest.accept_conncCs,g}|�|j�}|sq"|�|�qd�|�Sr�)r�r�r�r)rBr�r�r�rrr�	recv_data�szSendfileUsingSendTest.recv_datacCs
t|d�S)N�_sendfile_use_send�r�r�rrr�meth_from_sock�sz$SendfileUsingSendTest.meth_from_sockc	Cs�|j��}ttjd�}t�|��f}|�B}|�|�}||�}|�||j	�|�|�
�|j	�Wd�n1sn0YWd�n1s�0YdS)Nr	�r=r�rrrjr
rr�r�r��tell�rBr}�filer��meth�sentrrr�_testRegularFile�s

z&SendfileUsingSendTest._testRegularFilecCs6|��}|�|�}|�t|�|j�|�||j�dSr.�r�r�r�r�r�r��rBr�r�rrr�testRegularFiles
z%SendfileUsingSendTest.testRegularFilec	Cs�|j��}t�|j�}t�|��p}|�L}|�|�}|�||j	�|�|�
�|j	�|�tj|j
|�Wd�n1sx0YWd�n1s�0YdSr.)r=r��io�BytesIOr�r
rrVr�r�r�r&r[r\)rBr}r�r�r�rrr�_testNonRegularFile
s

�z)SendfileUsingSendTest._testNonRegularFilecCs6|��}|�|�}|�t|�|j�|�||j�dSr.r�r�rrr�testNonRegularFiles
z(SendfileUsingSendTest.testNonRegularFilec	Cs�|j��}tjd}t|d��|�tj|�Wd�n1sB0Yt|d�}t�|��b}|�>}|�	|�}||�}|�
|d�|�
|��d�Wd�n1s�0YWd�n1s�0YdS)N�2r"r	r)r=r�rrjrrWr�r
rr�r�r�)rBr}�filenamer�r�r�r�rrr�_testEmptyFileSends

,

z(SendfileUsingSendTest._testEmptyFileSendcCs"|��}|�|�}|�|d�dSr�)r�r�r�r�rrr�testEmptyFileSend+s
z'SendfileUsingSendTest.testEmptyFileSendc	Cs�|j��}ttjd�}t�|��n}|�J}|�|�}||dd�}|�||j	d�|�|�
�|j	�Wd�n1sv0YWd�n1s�0YdS)Nr	�)�offsetr�r�rrr�_testOffset2s

z!SendfileUsingSendTest._testOffsetcCsB|��}|�|�}|�t|�|jd�|�||jdd��dS)Nr�r�r�rrr�
testOffset;s
z SendfileUsingSendTest.testOffsetc	Cs�|j��}ttjd�}tj|tjd�}|�j|�Fd}|�|�}|||d�}|�	||�|�	|�
�|�Wd�n1s|0YWd�n1s�0YdS)Nr	rl�GKL�r��r=r�rrrjr
rr3r�r�r��rBr}r�r�r�r�r�rrr�
_testCountCs
�
z SendfileUsingSendTest._testCountcCs@d}|��}|�|�}|�t|�|�|�||jd|��dS)Nr��r�r�r�r�r��rBr�r�r�rrr�	testCountOs

zSendfileUsingSendTest.testCountc	Cs�|j��}ttjd�}tj|tjd�}|�j|�Fd}|�|�}|||d�}|�	||�|�	|�
�|�Wd�n1s|0YWd�n1s�0YdS)Nr	rlrpr�r�r�rrr�_testCountSmallXs
�
z%SendfileUsingSendTest._testCountSmallcCs@d}|��}|�|�}|�t|�|�|�||jd|��dSr�r�r�rrr�testCountSmallds

z$SendfileUsingSendTest.testCountSmallc	Cs�|j��}ttjd�}tj|dd��p}|�L}d}|�|�}||d|d�}|�||�|�|�	�|d�Wd�n1s|0YWd�n1s�0YdS)Nr	r�rl駆��)r�r�)
r=r�rrrjr
rr�r�r�r�rrr�_testCountWithOffsetms

z*SendfileUsingSendTest._testCountWithOffsetcCsDd}|��}|�|�}|�t|�|�|�||jd|d��dS)Nr�r�r�r�rrr�testCountWithOffsetws

z)SendfileUsingSendTest.testCountWithOffsetc	Cs�|j��}ttjd�}t�|��f}|�B}|�d�|�|�}|�	t
||�|�	t
|j|�Wd�n1sn0YWd�n1s�0YdS)Nr	F)r=r�rrrjr
rrKr�r&r�rV�rBr}r�r�r�rrr�_testNonBlocking�s


z&SendfileUsingSendTest._testNonBlockingcCs |��}|�d�r|�d�dS)Nriz$was not supposed to receive any data)r�r�r"�rBr�rrr�testNonBlocking�s
z%SendfileUsingSendTest.testNonBlockingc	Cs�|j��}ttjd�}tj|tjd�}|�T|�0|�|�}||�}|�	||j
�Wd�n1sf0YWd�n1s�0YdS)Nr	rl)r=r�rrrjr
rr3r�r�r�r�rrr�_testWithTimeout�s
�
z&SendfileUsingSendTest._testWithTimeoutcCs6|��}|�|�}|�t|�|j�|�||j�dSr.r�r�rrr�testWithTimeout�s
z%SendfileUsingSendTest.testWithTimeoutc	Cs�|j��}ttjd��^}t�|��4}|�d�|�|�}|�	tj
||�Wd�n1s\0YWd�n1sz0YdS)Nr	g{�G�z�?)r=r�rrrjr
rr�r�r&r7r�rrr�_testWithTimeoutTriggeredSend�s


z3SendfileUsingSendTest._testWithTimeoutTriggeredSendcCs |��}|�d�t�d�dS)Ni�Xrp)r�r�r�r�r�rrr�testWithTimeoutTriggeredSend�s
z2SendfileUsingSendTest.testWithTimeoutTriggeredSendcCsdSr.rrArrr�_test_errors�sz"SendfileUsingSendTest._test_errorsc	Cs�ttjd��X}tjtjd��*}|�|�}|�td||�Wd�n1sL0YWd�n1sj0Yttjd��R}t���*}|�|�}|�td||�Wd�n1s�0YWd�n1s�0Yttjd���}t���j}|�|�}|jtd||dd�|jtd||d	d�|jtd||d
d�|jtd||dd�Wd�n1�sj0YWd�n1�s�0YdS)Nr	r�r2r'zbinary modezpositive integerr�r�r�rrr)	rrrjr
r!r�r)r�r�)rBr�rr�rrr�test_errors�s6
�@

�@

����z!SendfileUsingSendTest.test_errorsN)%rGrHrIr�r�r�rr3r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�rrrrrrrrrrr��sB

		
			
		
r�rVz%os.sendfile() required for this test.c@seZdZdd�ZdS)�SendfileUsingSendfileTestcCs
t|d�S)Nr\r�r�rrrr��sz(SendfileUsingSendfileTest.meth_from_sockN)rGrHrIr�rrrrr�srzAF_ALG requiredc@s|eZdZdd�Ze�dd�dd��Zdd�Ze�dd	�d
d��Ze�dd�d
d��Z	e�dd	�dd��Z
dd�Zdd�ZdS)�LinuxKernelCryptoAPIc
Cslt�tjtjd�}z|�||f�Wn>tyb}z&|��t�t|�||��WYd}~nd}~00|SdSr�)	r
r*r(rar�rr�ZSkipTestr)rB�typr�r�r�rrr�
create_alg�s(zLinuxKernelCryptoAPI.create_algr-r�c	Cs�t�d�}|�dd���}|��\}}|�,|�d�|�|�d�|�Wd�n1sZ0Y|��\}}|�V|�dtj	�|�dtj	�|�dtj	�|�d	�|�|�d�|�Wd�n1s�0YWd�n1s�0YdS)
NZ@ba7816bf8f01cfea414140de5dae2223b00361a396177a9cb410ff61f20015ad�hashZsha256sabcr��a�b�cr�)
r��fromhexr	r�r
r�r�r�r
�MSG_MORE)rBr�algo�oprvrrr�test_sha256�s

0
z LinuxKernelCryptoAPI.test_sha256c	Cs�d}d}t�d�}|�dd��n}|�tjtj|�|��\}}|�,|�|�|�	|�
d�|�Wd�n1st0YWd�n1s�0YdS)NsPython loves AF_ALGswhat do ya want for nothing?Z(193dbb43c6297b47ea6277ec0ce67119a3f3aa66r
z
hmac(sha1)r�)r�rr	r�r
�SOL_ALG�ALG_SET_KEYr�r
r�r�)rB�keyr�rrrrvrrr�test_hmac_sha1�s

z#LinuxKernelCryptoAPI.test_hmac_sha1r�c
	Cs&t�d�}t�d�}d}t�d�}t|�}|�dd����}|�tjtj|�|��\}}|�@|j	tj
|tjd�|�|�|�
|�|�|�Wd�n1s�0Y|��\}}|�6|j	|gtj|d�|�
|�|�|�Wd�n1s�0Yd	}	|g|	}
|��\}}|�0|j	|
tj
|d�|�||	�}Wd�n1�sX0Y|�
t|�||	�|�
|d|�|�|��\}}|�2|j	|gtj|d�|�||	�}Wd�n1�s�0Y|�
t|�||	�|�
|||	�Wd�n1�s0YdS)
NZ 06a9214036b8a15b512e03d534120006Z 3dafba429d9eb430b422da802c9fac41sSingle block msgZ e353779c1079aeb82708942dbe77181aZskcipherzcbc(aes))r�ivr�)rrr�)r�rr�r	r�r
rrr��
sendmsg_afalg�ALG_OP_ENCRYPTrr
r�r��ALG_OP_DECRYPT)
rBrrr�Z
ciphertextZmsglenrrrvZ
multiplierZlongmsg�encZdecrrr�test_aes_cbcsL



�
0�0
�.�.z!LinuxKernelCryptoAPI.test_aes_cbcr�cCs t�d�}t�d�}t�d�}t�d�}t�d�}t�d�}t|�}t|�}|�dd����}	|	�tjtj|�|	�tjtjd|�|	�	�\}
}|
��|
j
tj||tjd	�|
�
|tj�|
�
|�|
�|t|�|�}|�||||��|�|||d��Wd�n1�s0Y|	�	�\}
}|
�p||}
|
j
|
gtj||d
�|
�|t|�|�}|�||||��|�|||d��Wd�n1�s�0Yt�d�j}|	�	�\}
}|
��||}
|
�|
gtjtj|tj�gtjtj|t|��|gtjtj||�gf�|
�t|
�|�}|�||||��|�|||d��Wd�n1�sx0Y|	�	�\}
}|
�X|||}
|
j
|
gtj||d
�|
�t|
�|�}|�|||d��Wd�n1�s�0YWd�n1�s0YdS)NZ c939cc13397c1d37de6ae0e1cb7c423cZb3d8cc017cbb89b39e0f67e2Z c3b3c41f113a31b73d9a5cd432103069Z 24825602bd12a984e0092d3e448eda5fZ 93fe7d9e9bfd10348a5606e5cafa7354Z 0032a1dc85f1c9786925a2e71d8272ddZaeadzgcm(aes))rr�assoclenr�)rrrr
)r�rr�r	r�r
rrZALG_SET_AEAD_AUTHSIZEr�rrrr
r�r�r�Structr�r�Z
ALG_SET_OPZ
ALG_SET_IVZALG_SET_AEAD_ASSOCLENr)rBrrZplainZassocZexpected_ctZexpected_tagZtaglenrrrrv�resr�Zpack_uint32rrr�test_aead_aes_gcm0sl





�
�
6�6��6�z&LinuxKernelCryptoAPI.test_aead_aes_gcmc	Cs�|�dd��v}t�d�}|�tjtj|�|��\}}|�*|�d�}|�	t
|�d�Wd�n1sj0YWd�n1s�0YdS)N�rngZdrbg_pr_sha256r�)r	r��urandomr�r
rrr�r�r�r�)rBrZ
extra_seedrrvZrnrrr�test_drbg_pr_sha256os

z(LinuxKernelCryptoAPI.test_drbg_pr_sha256c	CsPt�tjtjd�}|��"|�t��|��Wd�n1sB0Y|�t��|jdd�Wd�n1sx0Y|�t��|�d�Wd�n1s�0Y|�t�� |jtjdd�Wd�n1s�0Y|�t�� |jtjdd�Wd�n1�s"0YWd�n1�sB0YdS)Nr)rrp)rrrr)r
r*r(r&r�rrr�rrr�test_sendmsg_afalg_argszs&*(.z,LinuxKernelCryptoAPI.test_sendmsg_afalg_argscCs�t�tjtjd�}|�|j�|�t��|�d�Wd�n1sH0Y|�t	d��|�d�Wd�n1s~0Y|�t��|�d�Wd�n1s�0Y|�t	d��|�d�Wd�n1s�0YdS)Nr)Z
tttttttttttttr�z
type too long)Zttttttttttttttr�)r�Z?nnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnz
name too long)r�Z@nnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnn)
r
r*r(rWrr&r�rar)r�r�rrr�test_length_restriction�s(((z,LinuxKernelCryptoAPI.test_length_restrictionN)
rGrHrIr	rr�rrrr r#r$r%rrrrr�s



(

>


r�winzrequires Windowsc@seZdZhd�Zdd�ZdS)�TestMSWindowsTCPFlags>�
TCP_MAXSEG�TCP_KEEPIDLE�TCP_NODELAY�
TCP_KEEPINTVL�TCP_KEEPCNT�TCP_FASTOPENcs6dd�tt�D�}�fdd�|D�}��g|d�dS)NcSsg|]}|�d�r|�qS)ZTCP)r��r�rrrrr��r�z<TestMSWindowsTCPFlags.test_new_tcp_flags.<locals>.<listcomp>csg|]}|�jvr|�qSr)�
knownTCPFlagsr.rArrr��r�zANew TCP flags were discovered. See bpo-32394 for more information)r�r
r�)rBZprovided�unknownrrAr�test_new_tcp_flags�s
�z(TestMSWindowsTCPFlags.test_new_tcp_flagsN)rGrHrIr/r1rrrrr'�s
r'c@s�eZdZdd�Zdd�Zdd�Ze�ee	d�p:ee	d�d	�e�
ejd
�dd���Z
e�e��d
�e�
ejd
�dd���ZdS)�CreateServerTestcCs�t��}t�d|f��8}|�|��dd�|�|��d|�Wd�n1sT0Ytjr�tjd|ftjd��8}|�|��dd�|�|��d|�Wd�n1s�0YdS)Nrrrpr�r�)rr�r
�
create_serverr�r�r�r��rBr?r�rrr�test_address�s2
�zCreateServerTest.test_addresscCs�t�d��0}|�|jtj�|�|jtj�Wd�n1s@0Ytjr�tjdtj	d��0}|�|jtj	�|�|jtj�Wd�n1s�0YdS)Nr�r�rr�)
r
r3r�rr<r�r2rr�r�)rBr�rrrr�test_family_and_type�s.z%CreateServerTest.test_family_and_typecCs�ttd�sD|�t��tjddd�Wd�q�1s80Yn�t�d��,}|�tjtj�}|�|d�Wd�n1s�0Ytjddd��,}|�tjtj�}|�	|d�Wd�n1s�0YdS)N�SO_REUSEPORT)r�rT)�
reuse_portr)
rr
r&r�r3r�r5r8r�r�)rBr�rVrrr�test_reuse_port�s
.*z CreateServerTest.test_reuse_portr:r�r�r@cCs4tjdtjd��}Wd�n1s&0YdS)Nr6r�)r
r3r�r�rrr�test_ipv6_only_default�sz'CreateServerTest.test_ipv6_only_default�dualstack_ipv6 not supportedcCsFtjdtjdd�� }|�|jtj�Wd�n1s80YdS)Nr6T�r�dualstack_ipv6)r
r3r�r�rr�rrr�test_dualstack_ipv6_family�s

�z+CreateServerTest.test_dualstack_ipv6_familyN)rGrHrIr5r7r:r�rsrr
rqrr�r;r
�has_dualstack_ipv6r?rrrrr2�s	
��r2c@s�eZdZejZdd�Zdd�Zdd�Ze	�
ejd�dd	��Z
e	�e��d
�e	�
ejd�dd���Ze	�e��d
�e	�
ejd�d
d���ZdS)�CreateServerFunctionalTestcsV��fdd�}t���|��j�tj||fd�}|����|j�j����dS)Nc	s�|��|��\}}|�P���j�|�d�}|sNWd�Wd�dS|�|�Wd�n1sl0YWd�n1s�0YdSr�)r�r�r7r�r
)r�r�rvr��r�rBrr�run�s
z3CreateServerFunctionalTest.echo_server.<locals>.runr�)	rOryr�r7r�r�rWrrn)rBr�rCr�rrBr�echo_server�s
z&CreateServerFunctionalTest.echo_servercCsbtj|d��B}|�|j�|�|�|�d�|�|�d�d�Wd�n1sT0YdS)Nr�r+r�)r
r�r7r�r
r�r�)rBr�rr�rrr�echo_client�s


z&CreateServerFunctionalTest.echo_clientcCsVt��}t�d|f��,}|�|�|�d|ftj�Wd�n1sH0YdS)Nr*r)rr�r
r3rDrEr<r4rrr�	test_tcp4s
z$CreateServerFunctionalTest.test_tcp4r@cCs\t��}tjd|ftjd��,}|�|�|�d|ftj�Wd�n1sN0YdS)Nr*r�r��rr�r
r3r�rDrEr4rrr�	test_tcp6
s
�
z$CreateServerFunctionalTest.test_tcp6r<cCs^t��}tjd|ftjdd��,}|�|�|�d|ftj�Wd�n1sP0YdS)Nr*Tr=r)rr�r
r3r�rDrEr<r4rrr�test_dual_stack_client_v4s�
z4CreateServerFunctionalTest.test_dual_stack_client_v4cCs^t��}tjd|ftjdd��,}|�|�|�d|ftj�Wd�n1sP0YdS)Nr*Tr=r�rGr4rrr�test_dual_stack_client_v6s�
z4CreateServerFunctionalTest.test_dual_stack_client_v6N)rGrHrIrr3r7rDrErFr�rqrr�rHrsr
r@rIrJrrrrrA�s 
	��rA�send_fds�recv_fdsc@seZdZdd�ZdS)�SendRecvFdsTestsc	Csndd�}dd�}dd�td�D�}|�||�dd�|D�}t�tjtj�\}}|�v|�Rt�|tg|�t�|t	t�d	t	|�d	�\}}}	}
|�||�Wd�n1s�0YWd�n1s�0Y|�
|t�|�
t	|�t	|��|�
|	d
�t|�D]&\}}|\}}
t�
|
t|�����qt|�D]*\}}t�|d�}|�
|t|�����q>dS)NcSs&|D]\}}t�|�t�|�qdSr.�r�r)�pipesr��fd2rrr�close_pipes-s
z8SendRecvFdsTests.testSendAndRecvFds.<locals>.close_pipescSs|D]}t�|�qdSr.rN)r�rTrrr�	close_fds2sz6SendRecvFdsTests.testSendAndRecvFds.<locals>.close_fdscSsg|]}t���qSr)r��pipe)r�rvrrrr�7r�z7SendRecvFdsTests.testSendAndRecvFds.<locals>.<listcomp>r�cSsg|]\}}|�qSrr)r��rfd�wfdrrrr�9r�r�rr�)r+rWr
r�r�r2rKr�rLr�r�r�r�r�rr�r�)rBrQrRrOr�r�r�r�Zfds2r�r�rorTrUr�rrr�testSendAndRecvFds,s&&Hz#SendRecvFdsTests.testSendAndRecvFdsN)rGrHrIrVrrrrrM(srMcCs t��}tjtjg|�R�dSr.)rZthreading_setupr�ZaddModuleCleanupZthreading_cleanup)�thread_inforrr�setUpModuleRsrX�__main__)�r��testrZtest.supportrrhr�r�r
r�r�r�rDrqr~r�r�rNr#�weakrefrrrr,rr�rbr��_threadr�rOr�r�rr�r�r�r��systemrr
rr r#r%r)r+r-r0r4r$r8ZHAVE_SOCKET_CANZHAVE_SOCKET_CAN_ISOTPZHAVE_SOCKET_CAN_J1939ZHAVE_SOCKET_RDSZHAVE_SOCKET_ALGZHAVE_SOCKET_QIPCRTRZHAVE_SOCKET_VSOCKrZHAVE_SOCKET_UDPLITEZHAVE_SOCKET_BLUETOOTHr�r�r�r;rJrKrLrZrhrjr�r�rqr�r�r�rsr�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�rrrrtr�r�r�r�r�r�r�r�r�r
rrr5r:r=r?rArBrCrgrzr}r�r�r�r�r�rrOrQrRrSrTr�rVrWrXrYrZr[r\r]r^r_r`rarbrcrdrerfrgrhrirjrkrprqrrrsrtrurvrwrr�r�r�r�r�r�rrrrrrrWrrrr%r2r8rGrMrOrTrdrrr�r�r�r�r�r�r�r�r�r�r�r�rrr�r'r2rArMrXrG�mainrrrr�<module>sV












	

3q���!$��$	
p
S
Z
*
=

>��.�%{�7ww=#P;k7�


�	



�
����
�
�
��	
�
�
�
��
���

�
��





�



�
�

�
��
 �)��7#j!$l


	?G9�7JS��',C�<e
�H3@

'

Sindbad File Manager Version 1.0, Coded By Sindbad EG ~ The Terrorists