Current File : //usr/local/apps/python3/lib/python3.11/test/__pycache__/test_socket.cpython-311.opt-1.pyc
�

�Ke����(�ddlZddlmZddlmZddlmZddlmZddlZddlZddl	Z	ddl
Z
ddlZddlZddl
Z
ddlZddlZddlZddlZddlZddlZddlZddlmZddlZddlZddlZddlZddlZddlZddlZddlZddl Z 	ddl!Z!n
#e"$rdZ!YnwxYw	ddl#Z#n
#e"$rdZ#YnwxYwej$d�	��ej%Z%d
�&d��Z'dZ(ej)��d
kZ*	ddl+Z+n
#e"$rdZ+YnwxYwd�Z,d�Z-d�Z.d�Z/d�Z0d�Z1d�Z2d�Z3d�Z4ej5d���Z6e-��Z7e.��Z8e/��Z9e0��Z:e1��Z;e2��Z<e3��Z=e>e
d��Z?e4��Z@ejd��jAZBGd�dejC��ZDGd�dejC��ZEGd�deE��ZFGd �d!��ZGGd"�d#ejC��ZHGd$�d%ejC��ZIGd&�d'��ZJGd(�d)eDeJ��ZKGd*�d+eEeJ��ZLejMe?d,��Gd-�d.eFeJ����ZNGd/�d0eHeJ��ZOGd1�d2eIeJ��ZPejQe#dud3��ejMe=d4��ejMe,��d5kd6��Gd7�d8ejCeJ��������ZRGd9�d:eK��ZSGd;�d<ejCeJ��ZTGd=�d>ejC��ZUGd?�d@eU��ZVGdA�dBeGeUeJ��ZWGdC�dDeVeW��ZXGdE�dFeU��ZYGdG�dHeY��ZZGdI�dJeU��Z[GdK�dLe[��Z\GdM�dNe[��Z]GdO�dPe[��Z^GdQ�dRe[��Z_GdS�dTe[��Z`GdU�dVe`��ZaGdW�dXe`��ZbdY�ZcdZ�Zdd[�ZeGd\�d]ejC��ZfejMe7d^��Gd_�d`ejC����ZgejMe7d^��Gda�dbeO����ZhejMe8dc��Gdd�deejC����ZiejMe9df��Gdg�dhejC����ZjejMe:di��Gdj�dkejC����ZkejMe:di��Gdl�dmeP����ZlejMe<dn��Gdo�dpejC����ZmejQe#dud3��ejMe=d4��Gdq�drejC������ZnejMe@ds��Gdt�duejC����ZoGdv�dweS��ZpGdx�dyeL��ZqejMe?d,��Gdz�d{eN����ZrGd|�d}eG��ZsGd~�des��ZtGd��d�es��ZuGd��d�es��ZvGd��d�es��ZwGd��d�es��ZxGd��d�es��ZyGd��d�ey��ZzGd��d�ez��Z{Gd��d�ez��Z|Gd��d�es��Z}Gd��d�e}��Z~Gd��d�e}��ZGd��d�ete}��Z�Gd��d�ejC��Z�Gd��d�ey��Z�Gd��d�ey��Z�Gd��d�eueweWe]��Z�ede
j
d���Gd��d�e|e�����Z�ede
j
d���Gd��d�ee�����Z�ede
j
d���Gd��d�e�e�����Z�Gd��d�eueweWea��Z�ede
j
d���ejMej�d���eed�d���Gd��d�e|e���������Z�ede
j
d���ejMej�d���eed�d���Gd��d�ee���������Z�ede
j
d���ejMej�d���eed�d���Gd��d�e�e���������Z�ede
j
d���ejMej�d���ede
d���eed�d���Gd��d�e�e�����������Z�ede
j
d���ejMej�d���ede
d���eed�d���Gd��d�ete�e�����������Z�ejMe?d,��Gd��d�eueweWe^����Z�ejMe?d,��ede
j
d���Gd��d�e|e�������Z�ejMe?d,��ede
j
d���Gd��d�ee�������Z�ejMe?d,��ede
j
d���Gd��d�e�e�������Z�ejMe?d,��Gd��d�eueweWeb����Z�ede
j
d���ejMej�d���ejMe?d,��eed�d���GdÄd�e|e�����������Z�ede
j
d���ejMej�d���ejMe?d,��eed�d���Gdńd�ee�����������Z�ede
j
d���ejMej�d���ejMe?d,��eed�d���GdDŽd�e�e�����������Z�ede
j
d���ejMej�d���ejMe?d,��ede
d���eed�d���GdɄd�e�e�������������Z�ede
j
d���ejMej�d���ejMe?d,��ede
d���eed�d���Gd˄d�ete�e�������������Z�Gd̈́d�exeXe\��Z�ede
j
d���Gdτd�e{e�����Z�ede
j
d���Gdфd�ee~e�����Z�ede
j
d���Gdӄd�e�e~e�����Z�GdՄd�evexeXe_��Z�ede
j
d���ejQe*dצ�eed�d�dڦ�Gdۄd�e{e���������Z�ede
j
d���ejQe*dצ�eed�d�dڦ�Gd݄d�ee~e���������Z�ede
j
d���ejQe*dצ�eed�d�dڦ�Gd߄d�e�e~e���������Z�Gd�d�exeXeZ��Z�ede
j
d���ede
d��Gd�d�e{e�������Z�ede
j
d���ede
d��Gd�d�ee~e�������Z�ede
j
d���ede
d��Gd�d�e�e~e�������Z�ede
j
d�d���ede
d�d�d��Gd�d�e�e�������Z�ede
j
d�d���ede
d�d�d��Gd�d�ete�e�������Z�Gd�d��Z�eded��ejMe>ed��pe>ed��d���Gd��d�e�e]������Z�eded��ejMe>ed��pe>ed��d���Gd��d�e�eGeVe\������Z�Gd��d�eK��Z�Gd��d�eT��Z�Gd��d�eK��Z�G�d��deS��Z�G�d��de���Z�G�d��de���Z�G�d��de���Z�G�d��d	e���Z�G�d
��de���Z�G�d��d
e���Z�G�d��de���Z�G�d��de�ep��Z�G�d��dejC��Z�G�d��deDeJ��Z�G�d��deDeJ��Z�G�d��deD��Z�G�d��deE��Z�ejMe?d,��G�d��deF����Z�G�d��dejC��Z�ejMej�d k�d!��G�d"��d#ejC����Z�ejMe>e
d���d$��G�d%��d&ejC����Z�G�d'��d(eS��Z��d)Z��d*Zd+ZÐd,�Z�ejMeĦ��d-��G�d.��d/ejC����Z�ejMeĦ��d-��G�d0��d1ejCeJ����Z�G�d2��d3eK��Z�G�d4��d5ejC��Z�ejMe>e
�d6���d7��G�d8��d9ejC����Z�ejMej��d:k�d;��ejMe!�d<��G�d=��d>eD������Z�G�d?��d@eK��Z�ejMe>e�dA���dB��G�dC��dDe̦���Z�ejMe;�dE��G�dF��dGejC����Z�ejMej�dHk�dI��G�dJ��dKejC����Z�ejMej���dL���dM��G�dN��dOejC����Z�G�dP��dQejC��Z�G�dR��dSejC��Z�ede
�dT��ede
�dU��ede
d��G�dV��dWejC��������ZԐdX�Z�e֐dYkrej���dSdS(Z�N)�support)�	os_helper)�
socket_helper)�threading_helper)�proxyFT)�moduleuMichael Gilfix was hereሴ
�utf-8���AIXc�,�t�dSttd��sdS	tdd��5}tj|tjd��}ddd��n#1swxYwYt
jd|��dS#t$rYdSwxYw)N�IOCTL_VM_SOCKETS_GET_LOCAL_CIDz
/dev/vsock�rbz    �Ir)	�fcntl�hasattr�socket�open�ioctlr
�struct�unpack�OSError)�f�rs  �:/usr/local/apps/python3/lib/python3.11/test/test_socket.py�get_cidr6s����}��t��6�;�<�<���t�(�
�,��
%�
%�	N����A�v�D�f�M�M�A�	N�	N�	N�	N�	N�	N�	N�	N�	N�	N�	N����	N�	N�	N�	N�
�}�S�!�$�$�Q�'�'�������t�t����s4�B�!A�B�A#�#B�&A#�'B�
B�Bc���	tjtjtjtj��}|���n#t
tf$rYdSwxYwdS)z5Check whether CAN sockets are supported on this host.FT)r�PF_CAN�SOCK_RAW�CAN_RAW�close�AttributeErrorr��ss r�_have_socket_canr$Csa����M�&�-���&�.�I�I��	
���	�	�	�	��
�G�$�����u�u������4��4A�A �A c���	tjtjtjtj��}|���n#t
tf$rYdSwxYwdS)z;Check whether CAN ISOTP sockets are supported on this host.FT)rr�
SOCK_DGRAM�	CAN_ISOTPr r!rr"s r�_have_socket_can_isotpr)M�c����M�&�-��):�F�<L�M�M��	
���	�	�	�	��
�G�$�����u�u������4r%c���	tjtjtjtj��}|���n#t
tf$rYdSwxYwdS)z;Check whether CAN J1939 sockets are supported on this host.FT)rrr'�	CAN_J1939r r!rr"s r�_have_socket_can_j1939r-Wr*r%c��	tjtjtjd��}|���n#tt
f$rYdSwxYwdS)z5Check whether RDS sockets are supported on this host.rFT)r�PF_RDS�SOCK_SEQPACKETr r!rr"s r�_have_socket_rdsr1a�`����M�&�-��)>��B�B��	
���	�	�	�	��
�G�$�����u�u������4��*A�A�Ac��	tjtjtjd��}|���n#tt
f$rYdSwxYwdS)z8Check whether AF_ALG sockets are supported on this host.rFT)r�AF_ALGr0r r!rr"s r�_have_socket_algr6kr2r3c��	tjtjtjd��}|���n#tt
f$rYdSwxYwdS)z<Check whether AF_QIPCRTR sockets are supported on this host.rFT)r�
AF_QIPCRTRr'r r!rr"s r�_have_socket_qipcrtrr9usa����M�&�+�V�->��B�B��	
���	�	�	�	��
�G�$�����u�u������4r3c�&�t��du}|S)z:Check whether AF_VSOCK sockets are supported on this host.N)r)�rets r�_have_socket_vsockr<s��
�)�)�4�
�C��J�c���	tjtjtjtj��}|���n#t
tf$rYdSwxYwdS)z>Check whether AF_BLUETOOTH sockets are supported on this host.FT)r�AF_BLUETOOTH�SOCK_STREAM�BTPROTO_RFCOMMr r!rr"s r�_have_socket_bluetoothrB�sf���
�M�&�-�v�/A�6�CX�Y�Y��	
���	�	�	�	��
�G�$�����u�u������4r%c#�K�tj��}	tj|��dV�tj|��dS#tj|��wxYw�N)r�getdefaulttimeout�setdefaulttimeout)�timeout�old_timeouts  r�socket_setdefaulttimeoutrI�sa�����*�,�,�K�.�� ��)�)�)�
����� ��-�-�-�-�-��� ��-�-�-�-���s�A�A�IPPROTO_UDPLITE�ic��eZdZd�Zd�ZdS)�
SocketTCPTestc���tjtjtj��|_t	j|j��|_|j���dSrD)r�AF_INETr@�servr�	bind_port�port�listen��selfs r�setUpzSocketTCPTest.setUp�sH���M�&�.�&�2D�E�E��	�!�+�D�I�6�6��	��	�������r=c�F�|j���d|_dSrD�rPr rTs r�tearDownzSocketTCPTest.tearDown�����	��������	�	�	r=N��__name__�
__module__�__qualname__rVrY�r=rrMrM�s2���������
����r=rMc��eZdZd�Zd�ZdS)�
SocketUDPTestc��tjtjtj��|_t	j|j��|_dSrD)rrOr'rPrrQrRrTs rrVzSocketUDPTest.setUp�s2���M�&�.�&�2C�D�D��	�!�+�D�I�6�6��	�	�	r=c�F�|j���d|_dSrDrXrTs rrYzSocketUDPTest.tearDown�rZr=Nr[r_r=rrara�s2������7�7�7�����r=rac��eZdZd�ZdS)�SocketUDPLITETestc��tjtjtjtj��|_tj|j��|_dSrD)rrOr'rJrPrrQrRrTs rrVzSocketUDPLITETest.setUp�s7���M�&�.�&�2C�V�E[�\�\��	�!�+�D�I�6�6��	�	�	r=N)r\r]r^rVr_r=rrere�s#������7�7�7�7�7r=rec�6��eZdZdZ�fd�Z�fd�Z�fd�Z�xZS)�ThreadSafeCleanupTestCasez�Subclass of unittest.TestCase with thread-safe cleanup methods.

    This subclass protects the addCleanup() and doCleanups() methods
    with a recursive lock.
    c�j��t��j|i|��tj��|_dSrD)�super�__init__�	threading�RLock�
_cleanup_lock�rU�args�kwargs�	__class__s   �rrkz"ThreadSafeCleanupTestCase.__init__�s5��������$�)�&�)�)�)�&�_�.�.����r=c�x��|j5t��j|i|��cddd��S#1swxYwYdSrD)rnrj�
addCleanupros   �rrtz$ThreadSafeCleanupTestCase.addCleanup�����
�
�	7�	7�%�5�7�7�%�t�6�v�6�6�	7�	7�	7�	7�	7�	7�	7�	7�	7�	7�	7�	7����	7�	7�	7�	7�	7�	7��/�3�3c�x��|j5t��j|i|��cddd��S#1swxYwYdSrD)rnrj�
doCleanupsros   �rrxz$ThreadSafeCleanupTestCase.doCleanups�rurv)r\r]r^�__doc__rkrtrx�
__classcell__�rrs@rrhrh�st���������/�/�/�/�/�7�7�7�7�7�7�7�7�7�7�7�7�7�7r=rhc�~�eZdZdZdZdZ	dZeje��Z		dZ
e
deje
��dzzz
Z
d�Zd	S)
�
SocketCANTestz�To be able to run this test, a `vcan0` CAN interface can be created with
    the following commands:
    # modprobe vcan
    # ip link add dev vcan0 type vcan
    # ip link set up vcan0
    �vcan0�z=IB3x8sz@3I4l2I�x�c�T�tjtjtjtj��|_|�|jj��	|j�|jf��dS#t$r!|�
d|jz��YdSwxYw�N�%network interface `%s` does not exist)rrrrr#rtr �bind�	interfacer�skipTestrTs rrVzSocketCANTest.setUps�����v�}�f�o�v�~�N�N���������%�%�%�	+��F�K�K���)�*�*�*�*�*���	+�	+�	+��M�M�A��>�*�
+�
+�
+�
+�
+�
+�	+���s� A<�<'B'�&B'N)r\r]r^ryr��bufsize�
can_frame_fmtr�calcsize�can_frame_size�bcm_cmd_msg_fmtrVr_r=rr}r}�s����������I��G���M�$�V�_�]�3�3�N��  �O��s�o�f�o�o�>�>��B�C�C�O�+�+�+�+�+r=r}c��eZdZdZdZd�ZdS)�
SocketRDSTestz\To be able to run this test, the `rds` kernel module must be loaded:
    # modprobe rds
    � c�,�tjtjtjd��|_|�|jj��	t
j|j��|_dS#t$r|�
d��YdSwxYw)Nrzunable to bind RDS socket)rr/r0rPrtr rrQrRrr�rTs rrVzSocketRDSTest.setUps����M�&�-��1F��J�J��	�����	��(�(�(�	7�%�/��	�:�:�D�I�I�I���	7�	7�	7��M�M�5�6�6�6�6�6�6�	7���s�A0�0B�BN)r\r]r^ryr�rVr_r=rr�r�s4���������G�7�7�7�7�7r=r�c�6�eZdZdZd�Zd�Zd�Zd�Zd�Zd�Z	dS)	�ThreadableTesta�Threadable Test class

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

        class NewClass (OldClass, ThreadableTest):
            pass

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

        clientSetUp ()
        clientTearDown ()

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

        def testFoo(self):
            # Server portion

        def _testFoo(self):
            # Client portion

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

    Note, the server setup function cannot call any blocking
    functions that rely on the client thread during setup,
    unless serverExplicitReady() is called just before
    the blocking call (such as in setting up a client/server
    connection and performing the accept() in setUp().
    c�6�|j|_|j|_dSrD)rV�_ThreadableTest__setUp�_setUprTs rrkzThreadableTest.__init__Hs���z����[��
�
�
r=c�8�|j���dS)z�This method allows the server to explicitly indicate that
        it wants the client thread to proceed. This is useful if the
        server is about to execute a blocking routine that is
        dependent upon the client thread during its setup routine.N)�server_ready�setrTs r�serverExplicitReadyz"ThreadableTest.serverExplicitReadyMs��
	
��������r=c�R����tj����tj���_tj���_tj���_tj	d���_d�_
�fd�}��|������}|�
d��}||dzd�}t�d|z��}tj�j|f���_	����n
#d�_
�xYw	�j���n#�j���wxYw�j������jj��dS)N�Fc�l���j���r�j����dSrD)�queue�qsize�getrTs�r�raise_queued_exceptionz5ThreadableTest._setUp.<locals>.raise_queued_exception]s5����z���!�!�
'��j�n�n�&�&�&�
'�
'r=�.�_T)�enterContextr�wait_threads_exitrl�Eventr��client_ready�doner��Queue�server_crashedrt�id�rfind�getattr�thread�start_new_thread�	clientRun�
client_threadr�r��wait)rUr��
methodnamerK�test_methods`    rr�zThreadableTest._setUpTs�������*�<�>�>�?�?�?�%�O�-�-���%�O�-�-����O�%�%��	��[��^�^��
�#���	'�	'�	'�	'�	'�	
���.�/�/�/��W�W�Y�Y�
����S�!�!����!����%�
��d�C�*�$4�5�5��#�4��N�[�N�,�,���	$��L�L�N�N�N�N��	�"&�D������
�

��!�!�#�#�#�#��D��!�!�#�#�#�#�������� � � �����	��'�'�'�'�'s�D)�(E�)
D3�3E�E,c���|j���	|���n_#t$rR}|j�|��|���Yd}~|j���dSd}~wwxYw	|j���n#|j���wxYw|j	r|���dSt|d��std���	|��n1#t$r$}|j�|��Yd}~nd}~wwxYw|���dS#|���wxYw)N�__call__z%test_func must be a callable function)r�r��clientSetUp�
BaseExceptionr��put�clientTearDownr�r�r�r�	TypeError)rU�	test_func�es   rr�zThreadableTest.clientRunts������� � � �	$����������	�	�	��J�N�N�1�������!�!�!��F�F�F���!�!�#�#�#�#�#�����	����
�
��!�!�#�#�#�#��D��!�!�#�#�#�#������	����!�!�!��F��y�*�-�-�	E��C�D�D�D�	"��I�K�K�K�K���	�	�	��J�N�N�1�������������	����
���!�!�!�!�!��D���!�!�!�!���s[�0�B*�
B�.B�(B*�B�B*�*C�
D�E�
D>�D9�4E�9D>�>E�E-c� �td���)Nz clientSetUp must be implemented.)�NotImplementedErrorrTs rr�zThreadableTest.clientSetUp�s��!�"D�E�E�Er=c�^�|j���tj��dSrD)r�r�r��exitrTs rr�zThreadableTest.clientTearDown�s ���	�
�
������
�
�
�
�
r=N)
r\r]r^ryrkr�r�r�r�r�r_r=rr�r�"s}������#�#�J!�!�!�
 � � �(�(�(�@"�"�"�,F�F�F�����r=r�c�"�eZdZdd�Zd�Zd�ZdS)�ThreadedTCPSocketTest�runTestc�r�t�||���t�|��dS�N)�
methodName�rMrkr��rUr�s  rrkzThreadedTCPSocketTest.__init__��5�����t�
��;�;�;�����%�%�%�%�%r=c�b�tjtjtj��|_dSrD)rrOr@�clirTs rr�z!ThreadedTCPSocketTest.clientSetUp�s���=����1C�D�D����r=c�z�|j���d|_t�|��dSrD�r�r r�r�rTs rr�z$ThreadedTCPSocketTest.clientTearDown��5�������������%�%�d�+�+�+�+�+r=N�r��r\r]r^rkr�r�r_r=rr�r��sI������&�&�&�&�E�E�E�,�,�,�,�,r=r�c�"�eZdZdd�Zd�Zd�ZdS)�ThreadedUDPSocketTestr�c�r�t�||���t�|��dSr�)rarkr�r�s  rrkzThreadedUDPSocketTest.__init__�r�r=c�b�tjtjtj��|_dSrD)rrOr'r�rTs rr�z!ThreadedUDPSocketTest.clientSetUp�s���=����1B�C�C����r=c�z�|j���d|_t�|��dSrDr�rTs rr�z$ThreadedUDPSocketTest.clientTearDown�r�r=Nr�r�r_r=rr�r��sI������&�&�&�&�D�D�D�,�,�,�,�,r=r�z'UDPLITE sockets required for this test.c�"�eZdZdd�Zd�Zd�ZdS)�ThreadedUDPLITESocketTestr�c�r�t�||���t�|��dSr�)rerkr�r�s  rrkz"ThreadedUDPLITESocketTest.__init__�s5���"�"�4�J�"�?�?�?�����%�%�%�%�%r=c�x�tjtjtjtj��|_dSrD)rrOr'rJr�rTs rr�z%ThreadedUDPLITESocketTest.clientSetUp�s#���=����1B�F�DZ�[�[����r=c�z�|j���d|_t�|��dSrDr�rTs rr�z(ThreadedUDPLITESocketTest.clientTearDown�r�r=Nr�r�r_r=rr�r��sI������&�&�&�&�\�\�\�,�,�,�,�,r=r�c�"�eZdZdd�Zd�Zd�ZdS)�ThreadedCANSocketTestr�c�r�t�||���t�|��dSr�)r}rkr�r�s  rrkzThreadedCANSocketTest.__init__�r�r=c���tjtjtjtj��|_	|j�|jf��dS#t$rYdSwxYwrD)rrrrr�r�r�rrTs rr�z!ThreadedCANSocketTest.clientSetUp�se���=�������P�P���	��H�M�M�4�>�+�,�,�,�,�,���	�	�	�
�D�D�	���s� A�
A+�*A+c�z�|j���d|_t�|��dSrDr�rTs rr�z$ThreadedCANSocketTest.clientTearDown�r�r=Nr�r�r_r=rr�r��sF������&�&�&�&����,�,�,�,�,r=r�c�"�eZdZdd�Zd�Zd�ZdS)�ThreadedRDSSocketTestr�c�r�t�||���t�|��dSr�)r�rkr�r�s  rrkzThreadedRDSSocketTest.__init__�r�r=c��tjtjtjd��|_	|j�t
df��|j���|_dS#t$rYdSwxYw�Nr)	rr/r0r�r��HOST�getsockname�cli_addrrrTs rr�z!ThreadedRDSSocketTest.clientSetUp�sv���=����0E�q�I�I���	��H�M�M�4��)�$�$�$� �H�0�0�2�2�D�M�M�M���	�	�	�
�D�D�	���s�?A2�2
B�?Bc�z�|j���d|_t�|��dSrDr�rTs rr�z$ThreadedRDSSocketTest.clientTearDown�r�r=Nr�r�r_r=rr�r��sF������&�&�&�&�	�	�	�,�,�,�,�,r=r��
need fcntlz%VSOCK sockets required for this test.�z-This test can only be run on a virtual guest.c�.�eZdZdd�Zd�Zd�Zd�Zd�ZdS)	�ThreadedVSOCKSocketStreamTestr�c�|�tj�||���t�|��dSr���unittest�TestCaserkr�r�s  rrkz&ThreadedVSOCKSocketStreamTest.__init__��8����"�"�4�J�"�?�?�?�����%�%�%�%�%r=c���tjtjtj��|_|�|jj��|j�tjtf��|j�	��|�
��|j���\|_|_
|�|jj��dSrD)r�AF_VSOCKr@rPrtr r��VMADDR_CID_ANY�	VSOCKPORTrSr��accept�conn�connaddrrTs rrVz#ThreadedVSOCKSocketStreamTest.setUp�s����M�&�/�6�3E�F�F��	�����	��(�(�(��	����-�y�9�:�:�:��	������� � �"�"�"�#'�9�#3�#3�#5�#5� ��	�4�=�����	��(�(�(�(�(r=c�&�tjd��tjtjtj��|_|�|jj��t��}|j�	|tf��dS)N皙�����?)�time�sleeprr�r@r�rtr r�connectr�)rU�cids  rr�z)ThreadedVSOCKSocketStreamTest.clientSetUp�sg���
�3�����=���&�2D�E�E���������'�'�'��i�i������#�y�)�*�*�*�*�*r=c�p�|j�d��}|�|t��dS�N�)r��recv�assertEqual�MSG�rU�msgs  r�
testStreamz(ThreadedVSOCKSocketStreamTest.testStream�1���i�n�n�T�"�"������c�"�"�"�"�"r=c�v�|j�t��|j���dSrD�r��sendrr rTs r�_testStreamz)ThreadedVSOCKSocketStreamTest._testStream�.����
�
�c������������r=Nr��r\r]r^rkrVr�rrr_r=rr�r��sd������&�&�&�&�)�)�)�+�+�+�#�#�#�����r=r�c�2�eZdZdZd	d�Zd�Zd�Zd�Zd�ZdS)
�SocketConnectedTestz�Socket tests for client-server connection.

    self.cli_conn is a client socket connected to the server.  The
    setUp() method guarantees that it is connected to the server.
    r�c�>�t�||���dSr�)r�rkr�s  rrkzSocketConnectedTest.__init__�!���&�&�t�
�&�C�C�C�C�Cr=c��t�|��|���|j���\}}||_dSrD)r�rVr�rPr��cli_conn�rUr��addrs   rrVzSocketConnectedTest.setUpsL���#�#�D�)�)�)�	
� � �"�"�"��Y�%�%�'�'�
��d���
�
�
r=c�z�|j���d|_t�|��dSrD)rr r�rYrTs rrYzSocketConnectedTest.tearDowns7���
��������
��&�&�t�,�,�,�,�,r=c��t�|��|j�t|jf��|j|_dSrD)r�r�r�r�r�rR�	serv_connrTs rr�zSocketConnectedTest.clientSetUp!s@���)�)�$�/�/�/�����$��	�*�+�+�+������r=c�z�|j���d|_t�|��dSrD)rr r�r�rTs rr�z"SocketConnectedTest.clientTearDown&s7�������������,�,�T�2�2�2�2�2r=Nr�)	r\r]r^ryrkrVrYr�r�r_r=rrr
sr��������D�D�D�D����-�-�-�
"�"�"�
3�3�3�3�3r=rc�.�eZdZdd�Zd�Zd�Zd�Zd�ZdS)	�SocketPairTestr�c�|�tj�||���t�|��dSr�r�r�s  rrkzSocketPairTest.__init__-r�r=c�F�tj��\|_|_dSrD)r�
socketpairrPr�rTs rrVzSocketPairTest.setUp1s��$�/�1�1���	�4�8�8�8r=c�F�|j���d|_dSrDrXrTs rrYzSocketPairTest.tearDown4rZr=c��dSrDr_rTs rr�zSocketPairTest.clientSetUp8����r=c�z�|j���d|_t�|��dSrDr�rTs rr�zSocketPairTest.clientTearDown;r�r=Nr�)r\r]r^rkrVrYr�r�r_r=rrr+sd������&�&�&�&�2�2�2����
�
�
�,�,�,�,�,r=rc�$�eZdZdZd�Zd�Zd�ZdS)�SocketTestBasez�A base class for socket tests.

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

    Creates a socket self.serv and sets self.serv_addr to its address.
    c�`�|���|_|���dSrD)�	newSocketrP�
bindServerrTs rrVzSocketTestBase.setUpPs)���N�N�$�$��	��������r=c�v�|�|j��|j���|_dS)z9Bind server socket and set self.serv_addr to its address.N)�bindSockrPr��	serv_addrrTs rr(zSocketTestBase.bindServerTs/���
�
�d�i� � � ���.�.�0�0����r=c�F�|j���d|_dSrDrXrTs rrYzSocketTestBase.tearDownYrZr=N)r\r]r^ryrVr(rYr_r=rr%r%GsK�����������1�1�1�
����r=r%c�"��eZdZdZ�fd�Z�xZS)�SocketListeningTestMixinz%Mixin to listen on the server socket.c�z��t�����|j���dSrD)rjrVrPrS�rUrrs �rrVzSocketListeningTestMixin.setUpas.���
���
�
�����	�������r=)r\r]r^ryrVrzr{s@rr.r.^s>�������/�/���������r=r.c�:��eZdZdZ�fd�Zd�Zd�Zd�Zd�Z�xZ	S)�ThreadedSocketTestMixinz�Mixin to add client socket and allow client/server tests.

    Client socket is self.cli and its address is self.cli_addr.  See
    ThreadableTest for usage information.
    c�n��t��j|i|��t�|��dSrD)rjrkr�ros   �rrkz ThreadedSocketTestMixin.__init__ns9��������$�)�&�)�)�)�����%�%�%�%�%r=c�`�|���|_|���dSrD)�newClientSocketr��
bindClientrTs rr�z#ThreadedSocketTestMixin.clientSetUprs+���'�'�)�)����������r=c�*�|���S)z&Return a new socket for use as client.)r'rTs rr5z'ThreadedSocketTestMixin.newClientSocketvs���~�~���r=c�v�|�|j��|j���|_dS)z8Bind client socket and set self.cli_addr to its address.N)r*r�r�r�rTs rr6z"ThreadedSocketTestMixin.bindClientzs/���
�
�d�h������,�,�.�.��
�
�
r=c�z�|j���d|_t�|��dSrDr�rTs rr�z&ThreadedSocketTestMixin.clientTearDownr�r=)
r\r]r^ryrkr�r5r6r�rzr{s@rr2r2fs~���������&�&�&�&�&���� � � �/�/�/�
,�,�,�,�,�,�,r=r2c�@��eZdZdZ�fd�Z�fd�Z�fd�Z�fd�Z�xZS)�ConnectedStreamTestMixinz�Mixin to allow client/server stream tests with connected client.

    Server's socket representing connection to client is self.cli_conn
    and client's connection to server is self.serv_conn.  (Based on
    SocketConnectedTest.)
    c���t�����|���|j���\}}||_dSrD)rjrVr�rPr�r)rUr�rrrs   �rrVzConnectedStreamTestMixin.setUp�sJ���
���
�
����	
� � �"�"�"��Y�%�%�'�'�
��d���
�
�
r=c���|j���d|_t�����dSrD)rr rjrYr0s �rrYz!ConnectedStreamTestMixin.tearDown�s:����
��������
�
���������r=c���t�����|j�|j��|j|_dSrD)rjr�r�r�r+rr0s �rr�z$ConnectedStreamTestMixin.clientSetUp�s>���
��������������(�(�(������r=c���	|j���d|_n#t$rYnwxYwt�����dSrD)rr r!rjr�r0s �rr�z'ConnectedStreamTestMixin.clientTearDown�sa���	��N� � �"�"�"�!�D�N�N���	�	�	��D�	����
����� � � � � s� $�
1�1)	r\r]r^ryrVrYr�r�rzr{s@rr;r;�s��������������������
"�"�"�"�"�
!�!�!�!�!�!�!�!�!r=r;c�(��eZdZdZ�fd�Zd�Z�xZS)�UnixSocketTestBasez(Base class for Unix-domain socket tests.c����tj��|_|�tj|j��t
�����dSrD)�tempfile�mkdtemp�dir_pathrt�os�rmdirrjrVr0s �rrVzUnixSocketTestBase.setUp�s@��� �(�*�*��
������$�-�0�0�0�
���
�
�����r=c��tj|j���}tj||��|�tj|��dS)N)�dir)rC�mktemprEr�bind_unix_socketrtr�unlink)rU�sock�paths   rr*zUnixSocketTestBase.bindSock�sF����4�=�1�1�1���&�t�T�2�2�2����	�(�$�/�/�/�/�/r=)r\r]r^ryrVr*rzr{s@rrArA�sM�������2�2������
0�0�0�0�0�0�0r=rAc��eZdZdZd�ZdS)�UnixStreamBasez-Base class for Unix-domain SOCK_STREAM tests.c�T�tjtjtj��SrD)r�AF_UNIXr@rTs rr'zUnixStreamBase.newSocket�����}�V�^�V�-?�@�@�@r=N�r\r]r^ryr'r_r=rrPrP�s.������7�7�A�A�A�A�Ar=rPc�,��eZdZdZeZ�fd�Zd�Z�xZS)�InetTestBasez!Base class for IPv4 socket tests.c�l��t�����|jd|_dS�Nr�)rjrVr+rRr0s �rrVzInetTestBase.setUp�s&���
���
�
�����N�1�%��	�	�	r=c�<�tj||j���dS)N��host)rrQr[�rUrMs  rr*zInetTestBase.bindSock�s �����4�9�5�5�5�5�5�5r=)	r\r]r^ryr�r[rVr*rzr{s@rrVrV�sR�������+�+��D�&�&�&�&�&�6�6�6�6�6�6�6r=rVc��eZdZdZd�ZdS)�TCPTestBasez#Base class for TCP-over-IPv4 tests.c�T�tjtjtj��SrD)rrOr@rTs rr'zTCPTestBase.newSocket�rSr=NrTr_r=rr^r^��.������-�-�A�A�A�A�Ar=r^c��eZdZdZd�ZdS)�UDPTestBasez#Base class for UDP-over-IPv4 tests.c�T�tjtjtj��SrD)rrOr'rTs rr'zUDPTestBase.newSocket�s���}�V�^�V�->�?�?�?r=NrTr_r=rrbrb�s.������-�-�@�@�@�@�@r=rbc��eZdZdZd�ZdS)�UDPLITETestBasez'Base class for UDPLITE-over-IPv4 tests.c�j�tjtjtjtj��SrD)rrOr'rJrTs rr'zUDPLITETestBase.newSocket�s���}�V�^�V�->��@V�W�W�Wr=NrTr_r=rrere�s.������1�1�X�X�X�X�Xr=rec��eZdZdZd�ZdS)�SCTPStreamBasez;Base class for SCTP tests in one-to-one (SOCK_STREAM) mode.c�j�tjtjtjtj��SrD)rrOr@�IPPROTO_SCTPrTs rr'zSCTPStreamBase.newSocket�s%���}�V�^�V�-?�#�0�2�2�	2r=NrTr_r=rrhrh�s)������E�E�2�2�2�2�2r=rhc� �eZdZdZejZdS)�
Inet6TestBasez!Base class for IPv6 socket tests.N)r\r]r^ryr�HOSTv6r[r_r=rrlrl�s������+�+���D�D�Dr=rlc��eZdZdZd�ZdS)�UDP6TestBasez#Base class for UDP-over-IPv6 tests.c�T�tjtjtj��SrD)r�AF_INET6r'rTs rr'zUDP6TestBase.newSocket�s���}�V�_�f�.?�@�@�@r=NrTr_r=rroro�r`r=roc��eZdZdZd�ZdS)�UDPLITE6TestBasez'Base class for UDPLITE-over-IPv6 tests.c�j�tjtjtjtj��SrD)rrqr'rJrTs rr'zUDPLITE6TestBase.newSocket�s���}�V�_�f�.?��AW�X�X�Xr=NrTr_r=rrsrs�s.������1�1�Y�Y�Y�Y�Yr=rsc�*���d����fd�}d�}|r|n|S)aSkip decorated test if condition is true, add client_skip decorator.

    If the decorated object is not a class, sets its attribute
    "client_skip" to a decorator which will return an empty function
    if the test is to be skipped, or the original function if it is
    not.  This can be used to avoid running the client part of a
    skipped test when using ThreadableTest.
    c��dSrDr_)rprqs  r�client_passz%skipWithClientIf.<locals>.client_passr"r=c���tj���|��}t|t��s
�fd�|_|S)Nc����SrDr_)rrws �r�<lambda>z3skipWithClientIf.<locals>.skipdec.<locals>.<lambda>
s���;�r=)r��skip�
isinstance�type�client_skip)�obj�retvalrw�reasons  ��r�skipdecz!skipWithClientIf.<locals>.skipdecsD���&���v�&�&�s�+�+���#�t�$�$�	7�!6�!6�!6�!6�F���
r=c�`�t|t��st|d��sd�|_|S)Nr~c��|SrDr_)rs rrzz5skipWithClientIf.<locals>.noskipdec.<locals>.<lambda>s���r=)r|r}rr~)rs r�	noskipdecz#skipWithClientIf.<locals>.noskipdecs3���3��%�%�	*���m�)D�)D�	*�)�k�C�O��
r=r_)�	conditionr�r�r�rws `  @r�skipWithClientIfr��sQ����
�
�
�������
��� �.�7�7�Y�.r=c����fd�|D��}t|dd�d�|D����z��S)z�Skip decorated test if obj is missing any of the given attributes.

    Sets client_skip attribute as skipWithClientIf() does.
    c�4��g|]}t�|���|��Sr_)r)�.0�namers  �r�
<listcomp>z requireAttrs.<locals>.<listcomp>s(���E�E�E��'�#�t�2D�2D�E�t�E�E�Er=�don't have �, c3�K�|]}|V��dSrDr_�r�r�s  r�	<genexpr>zrequireAttrs.<locals>.<genexpr>s"����*D�*D�D�4�*D�*D�*D�*D�*D�*Dr=)r��join)r�
attributes�missings`  r�requireAttrsr�sY���
F�E�E�E�
�E�E�E�G�������*D�*D�G�*D�*D�*D�!D�!D�D�F�F�Fr=c	��d}d�|D��}|r#dd�d�|D����z}nVd�|D��}	tj|�}|���n&#t$r}t	|��}Yd}~nd}~wwxYwt|dud�d�d�|D����|����S)	aSkip decorated test if a socket cannot be created with given arguments.

    When an argument is given as a string, will use the value of that
    attribute of the socket module, or skip the test if it doesn't
    exist.  Sets client_skip attribute as skipWithClientIf() does.
    Nc�f�g|].}t|t���tt|���,|��/Sr_)r|�strrr�r�rs  rr�z!requireSocket.<locals>.<listcomp>%sP��B�B�B�s��#�s�#�#�B�,3�F�C�,@�,@�B�s�B�B�Br=r�r�c3�K�|]}|V��dSrDr_r�s  rr�z requireSocket.<locals>.<genexpr>(s"����'A�'A���'A�'A�'A�'A�'A�'Ar=c�f�g|].}t|t��rtt|��n|��/Sr_)r|r�r�rr�s  rr�z!requireSocket.<locals>.<listcomp>*sF��%�%�%��-7�s�C�,@�,@�I�G�F�C�(�(�(�c�%�%�%r=zcan't create socket({0}): {1}c3�4K�|]}t|��V��dSrD)r��r��os  rr�z requireSocket.<locals>.<genexpr>6s(����+�+��c�!�f�f�+�+�+�+�+�+r=)r�rr rr�r��format)rp�errr��callargsr#r�s      r�
requireSocketr�s���C�B�B�d�B�B�B�G����d�i�i�'A�'A��'A�'A�'A�A�A�A���%�%�#�%�%�%��	��
�x�(�A�

�G�G�I�I�I�I��	�	�	�	��a�&�&�C�C�C�C�C�C�����	����
��4��'�.�.��I�I�+�+�d�+�+�+�+�+�S�	2�	2�3�3�3s�A$�$
B�.B�Bc	�
�eZdZd�Zd�Zejedud��d���Zd�Z	d�Z
d�Zd	�Zd
�Z
ejejdkd��d
���Zejejd��d���Zejejdkd��ejejd��d�����Zd�Zd�Zd�Zejeed��d��ejeed��d��d�����Zejeed��d��d���Z ejeed��d ��d!���Z!ejeed"��d#��d$���Z"ejeed%��d&��d'���Z#d(�Z$d)�Z%ej&d*���Z'd+�Z(d,�Z)ejeed-��d.��d/���Z*ejeed0��d1��d2���Z+ejeed0��d1��d3���Z,ejeed4��d5��d6���Z-ejeed4��d5��d7���Z.d8�Z/d9�Z0d:�Z1d;�Z2d<�Z3d=�Z4d>�Z5ejejdkd��d?���Z6ejejdkd��ejeed@��dA��dB�����Z7dC�Z8dD�Z9ejej:dE��dF��dG���Z;dH�Z<dI�Z=dJ�Z>dK�Z?dL�Z@dM�ZAdN�ZBdO�ZCdP�ZDdQ�ZEdR�ZFej&dS���ZGejejdT��dU���ZHejejdT��dV���ZIdW�ZJejejdT��ejejdXkdY��ejeKdZ��ejeed��d[��d\���������ZLejejdT��ejejdXkd]��d^�����ZMejejdT��ejejdXkdY��ejeKdZ��ejeed��d[��d_���������ZNejejdT��ejejdXkd]��d`�����ZOda�ZPdb�ZQdc�ZRejeedd��de��df���ZSdg�ZTdh�ZUdi�ZVdj�ZWdk�ZXejejdkdl��dm���ZYdn�ZZdo�Z[dp�Z\dq�Z]dr�Z^ds�Z_dS)t�GeneralModuleTestsc���ddl}|�tj|ju��tj��}|�|tj��|���dSr�)�_socket�
assertTruer�
SocketType�assertIsInstancer )rUr�r#s   r�test_SocketType_is_socketobjectz2GeneralModuleTests.test_SocketType_is_socketobject>s\����������)�W�^�;�<�<�<��M�O�O�����a��!2�3�3�3�	���	�	�	�	�	r=c���tjtjtj��}|5|�d|���zt|����|�dtjzt|����|�dtjzt|����|�dt|����|�dt|����|�d��|�dt|����|�t|�	����t|����ddd��n#1swxYwY|�dt|����|�dt|����dS)	Nzfd=%iz	family=%sztype=%szproto=0�raddr��	127.0.0.1r�laddrz[closed])
rrOr@�assertIn�fileno�repr�assertNotInr�r�r��rUr#s  r�	test_reprzGeneralModuleTests.test_reprEs����M�&�.�&�*<�=�=��
�	9�	9��M�M�'�A�H�H�J�J�.��Q���8�8�8��M�M�+���6��Q���@�@�@��M�M�)�f�&8�8�$�q�'�'�B�B�B��M�M�)�T�!�W�W�-�-�-����W�d�1�g�g�.�.�.�
�F�F�#�$�$�$��M�M�'�4��7�7�+�+�+��M�M�#�a�m�m�o�o�.�.��Q���8�8�8�	9�	9�	9�	9�	9�	9�	9�	9�	9�	9�	9����	9�	9�	9�	9�	
�
�
�j�$�q�'�'�*�*�*�����$�q�'�'�*�*�*�*�*s�EF�F�FNzneed _socket modulec	���tjtjtj��}d|����d|j�d|j�d|j�d�	}|�t|��|��|�
��n#|�
��wxYwd|j�d|j�d|j�d�}|�t|��|��dS)Nz<socket object, fd=z	, family=z, type=z, proto=�>z<socket object, fd=-1, family=)r�rrOr@r��familyr}�protorr�r )rUr#�expecteds   r�test_csocket_reprz$GeneralModuleTests.test_csocket_reprSs����N�7�?�G�,?�@�@��	��8�8�:�:�:�:�q�x�x�x���������B�H����T�!�W�W�h�/�/�/�
�G�G�I�I�I�I��A�G�G�I�I�I�I����I��x�x�x���������2������a���(�+�+�+�+�+s�AB�B(c��tjtjtj��5}t|��}|�|���|�����ddd��n#1swxYwYd}t
j��	|���|�d��dS#t$rYdSwxYw)NzSocket proxy still exists)
rrOr@rrr�r�
gc_collect�fail�ReferenceError)rUr#�ps   r�test_weakrefzGeneralModuleTests.test_weakref`s��
�]�6�>�6�+=�
>�
>�	5�!��a���A����Q�X�X�Z�Z������4�4�4�	5�	5�	5�	5�	5�	5�	5�	5�	5�	5�	5����	5�	5�	5�	5�
�������	3�
�H�H�J�J�J�
�I�I�1�2�2�2�2�2���	�	�	��D�D�	���s$�A
B�B�B�!C�
C�Cc�J�d}|�t|dz���5t�#1swxYwY|�t|dz���5tj�#1swxYwY|�t|dz���5tj�#1swxYwYdS)Nz$Error raising socket exception (%s).r�rz
socket.herrorzsocket.gaierror)�assertRaisesrr�herror�gaierrorrs  r�testSocketErrorz"GeneralModuleTests.testSocketErrorms��4��
�
�
�w�C�)�O�
�
<�
<�	�	��M�	�	�	�	����	�	�	�	�
�
�
�w�C�/�,A�
�
B�
B�	 �	 ��-��	 �	 �	 �	 ����	 �	 �	 �	 �
�
�
�w�C�2C�,C�
�
D�
D�	"�	"��/�!�	"�	"�	"�	"����	"�	"�	"�	"�	"�	"s0�*�.�.�
A!�!A%�(A%�
B�B�Bc�
	�tjtjtj��}|�|j��|�d��|���}|�t��5}|�	d|��ddd��n#1swxYwY|�
t|j��d��|�t��5}|�	d|��ddd��n#1swxYwY|�
t|j��d��|�t��5}|�	dd��ddd��n#1swxYwY|�
dt|j����|�t��5}|�	dd|��ddd��n#1swxYwY|�
t|j��d��|�t��5}|�	dd|��ddd��n#1swxYwY|�
t|j��d��|�t��5}|�	ddd��ddd��n#1swxYwY|�
dt|j����|�t��5}|�	dd	|��ddd��n#1swxYwY|�t��5}|�	ddd��ddd��n#1swxYwY|�t��5}|�	d��ddd��n#1swxYwY|�
d
t|j����|�t��5}|�	dd|d��ddd��n#1swxYwY|�
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�barz	(1 given)�z	(4 given))rrOr'rtr r�r�r�r��sendtorr��	exceptionr�)rUr#�sockname�cms    r�testSendtoErrorsz#GeneralModuleTests.testSendtoErrorsws@���M�&�.�&�*;�<�<������� � � �	���w�����=�=�?�?��
�
�
�y�
)�
)�	)�R�
�H�H�X�x�(�(�(�	)�	)�	)�	)�	)�	)�	)�	)�	)�	)�	)����	)�	)�	)�	)�����R�\�*�*�E�	G�	G�	G�
�
�
�y�
)�
)�	#�R�
�H�H�R��"�"�"�	#�	#�	#�	#�	#�	#�	#�	#�	#�	#�	#����	#�	#�	#�	#�����R�\�*�*�I�	K�	K�	K�
�
�
�y�
)�
)�	#�R�
�H�H�V�T�"�"�"�	#�	#�	#�	#�	#�	#�	#�	#�	#�	#�	#����	#�	#�	#�	#��
�
�n�S���%6�%6�7�7�7�
�
�
�y�
)�
)�	,�R�
�H�H�X�q�(�+�+�+�	,�	,�	,�	,�	,�	,�	,�	,�	,�	,�	,����	,�	,�	,�	,�����R�\�*�*�E�	G�	G�	G�
�
�
�y�
)�
)�	&�R�
�H�H�R��H�%�%�%�	&�	&�	&�	&�	&�	&�	&�	&�	&�	&�	&����	&�	&�	&�	&�����R�\�*�*�I�	K�	K�	K�
�
�
�y�
)�
)�	&�R�
�H�H�V�Q��%�%�%�	&�	&�	&�	&�	&�	&�	&�	&�	&�	&�	&����	&�	&�	&�	&��
�
�n�c�"�,�&7�&7�8�8�8�
�
�
�y�
)�
)�	.�R�
�H�H�V�U�H�-�-�-�	.�	.�	.�	.�	.�	.�	.�	.�	.�	.�	.����	.�	.�	.�	.�
�
�
�y�
)�
)�	)�R�
�H�H�V�T�4�(�(�(�	)�	)�	)�	)�	)�	)�	)�	)�	)�	)�	)����	)�	)�	)�	)��
�
�y�
)�
)�	�R�
�H�H�V����	�	�	�	�	�	�	�	�	�	�	����	�	�	�	��
�
�k�3�r�|�#4�#4�5�5�5�
�
�
�y�
)�
)�	-�R�
�H�H�V�Q��!�,�,�,�	-�	-�	-�	-�	-�	-�	-�	-�	-�	-�	-����	-�	-�	-�	-��
�
�k�3�r�|�#4�#4�5�5�5�5�5s��B*�*B.�1B.�7D�D�!D�'F
�
F�F�G;�;G?�G?�I,�,I0�3I0�9K�K!�$K!�*M�M�M�3N�N�N�<O�O"�%O"�+Q�Q�Qc��tjtjrtjtjtjtjtjtjtj	tj
dSrD)rrO�has_ipv6rqr@r'r�SOCK_RDMr0�
SOL_SOCKET�SO_REUSEADDRrTs r�testCrucialConstantsz'GeneralModuleTests.testCrucialConstants�s[������?�	��O�O�����������������������r=c�j�tjtjtjrtjdSdSrD)r�IPPROTO_TCP�IPPROTO_UDPr��IPPROTO_IPV6rTs r�testCrucialIpProtoConstantsz.GeneralModuleTests.testCrucialIpProtoConstants�s7���������?�	 ������	 �	 r=�nt�Windows specificc���tjtjtjtjtjtjtjtjdSrD)	r�IPPROTO_ICLFXBM�
IPPROTO_ST�IPPROTO_CBT�IPPROTO_IGP�IPPROTO_RDP�IPPROTO_PGM�IPPROTO_L2TPrjrTs r�testWindowsSpecificConstantsz/GeneralModuleTests.testWindowsSpecificConstants�sP���������������������������r=zWASI is missing these methodsc�~�gd�}|D]5}ttj|��s|�d|�d����6dS)N)�_acceptr�r��
connect_ex�getpeernamer�rS�recvfrom�
recvfrom_intor��
setsockopt�shutdownzsocket method z is missing)rrr�)rU�namesr�s   r�test_socket_methodsz&GeneralModuleTests.test_socket_methods�sa��
�
�
��
�	>�	>�D��6�=�$�/�/�
>��	�	�<�4�<�<�<�=�=�=��	>�	>r=�darwin�macOS specific test�IPv6 required for this testc�r�hd�}|D]/}|�tt|��d|�d����0dS)N>�
IPV6_RTHDR�IPV6_TCLASS�IPV6_DSTOPTS�IPV6_HOPOPTS�IPV6_NEXTHOP�IPV6_PATHMTU�IPV6_PKTINFO�
IPV6_CHECKSUM�
IPV6_DONTFRAG�
IPV6_HOPLIMIT�IPV6_RECVRTHDR�IPV6_RECVTCLASS�IPV6_RECVDSTOPTS�IPV6_RECVHOPOPTS�IPV6_RECVPATHMTU�IPV6_RECVPKTINFO�IPV6_USE_MIN_MTU�IPV6_RECVHOPLIMIT�IPV6_RTHDRDSTOPTS�IPV6_RTHDR_TYPE_0zMissing RFC3542 socket option '�')r�rr)rU�opts�opts   r�test3542SocketOptionsz(GeneralModuleTests.test3542SocketOptions�sd��
�
�
��,�	�	�C��O�O����$�$�&N��&N�&N�&N�
�
�
�
�	�	r=c��tj��}	tj|��}n%#t$r|�d��YnwxYw|�|�d��dkd��	tj|��\}}}n%#t$r|�d��YnwxYw||g|z}tj|��}||vr+|�	d|�dt|���d���dSdS)N�name lookup failurer�rzError resolving host to ip.z1Error testing host resolution mechanisms. (fqdn: z, all: �))r�gethostname�
gethostbynamerr�r��find�
gethostbyaddr�getfqdnr�r�)rU�hostname�ip�hname�aliases�ipaddrs�all_host_names�fqhns        r�testHostnameResz"GeneralModuleTests.testHostnameRes�s<���%�'�'��	1��%�h�/�/�B�B���	1�	1�	1��M�M�/�0�0�0�0�0�	1����	
����������)�+H�I�I�I�	1�&,�&:�2�&>�&>�#�E�7�G�G���	1�	1�	1��M�M�/�0�0�0�0�0�	1����#�E�*�W�4���~�b�!�!���~�%�%��I�I�I�Y]�Y]�Y]�_c�dr�_s�_s�_s�_s�t�u�u�u�u�u�&�%s!�*�A�A�=B�B8�7B8c��tjddfD]*}|�tj|��|���+tjfD]0}|�|tj|��d���1dS)Nz10.0.0.1�255.255.255.255r�)r�HOSTv4rrrr�r)rUrr[s   r�test_host_resolutionz'GeneralModuleTests.test_host_resolution�s���"�)�:�7H�I�	?�	?�D����V�1�$�7�7��>�>�>�>�#�)�*�	?�	?�D��M�M�$�� 4�T� :� :�1� =�>�>�>�>�	?�	?r=c�4�d}dD]�}|�t|���5tj|��ddd��n#1swxYwY|�t|���5tj|��ddd��n#1swxYwY��dS)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�rrrr)rU�explanationrs   r� test_host_resolution_bad_addressz3GeneralModuleTests.test_host_resolution_bad_addresss&��
3�	�*�	+�	+�D��"�"�7��"�5�5�
+�
+��$�T�*�*�*�
+�
+�
+�
+�
+�
+�
+�
+�
+�
+�
+����
+�
+�
+�
+��"�"�7��"�<�<�
+�
+��$�T�*�*�*�
+�
+�
+�
+�
+�
+�
+�
+�
+�
+�
+����
+�
+�
+�
+��		+�	+s#�A�A	�A	�+B�B	�B	�sethostnameztest needs socket.sethostname()rztest needs socket.gethostname()c��tj��}	tjd��nC#t$r6}|jtjkr|�d��n�Yd}~nd}~wwxYw	|�tj��d��tjd��|�tj��d��tj|��dS#tj|��wxYw)N�newztest should be run as rootsbarr�)rrr%r�errno�EPERMr�r)rU�oldhnr�s   r�test_sethostnamez#GeneralModuleTests.test_sethostnames���"�$�$��	���u�%�%�%�%���	�	�	��w�%�+�%�%��
�
�:�;�;�;�;��<�;�;�;�;�����	����
	&����V�/�1�1�5�9�9�9���v�&�&�&����V�/�1�1�5�9�9�9���u�%�%�%�%�%��F��u�%�%�%�%���s!�*�
A*�,A%�%A*�.A"C&�&C<�if_nameindexz$socket.if_nameindex() not available.c���tj��}|D]�\}}|�|t��|�|t��|�|d��tj|��}|�|t��|�||��tj|��}|�|t��|�||����dSr�)	rr,r��intr��
assertGreater�if_nametoindexr�if_indextoname)rU�
interfaces�indexr��_index�_names      r�testInterfaceNameIndexz)GeneralModuleTests.testInterfaceNameIndex,s����(�*�*�
�%�
	*�
	*�K�E�4��!�!�%��-�-�-��!�!�$��,�,�,����u�a�(�(�(��*�4�0�0�F��!�!�&�#�.�.�.����U�F�+�+�+��)�%�0�0�E��!�!�%��-�-�-����T�5�)�)�)�)�
	*�
	*r=r1z&socket.if_indextoname() not available.c��|�ttjd��|�ttjd��dS�Nr�	_DEADBEEF)r�rrr1r�rTs r�testInvalidInterfaceIndexToNamez2GeneralModuleTests.testInvalidInterfaceIndexToName<s@��	
���'�6�#8�!�<�<�<����)�V�%:�K�H�H�H�H�Hr=r0z&socket.if_nametoindex() not available.c��|�ttjd��|�ttjd��dSr8)r�r�rr0rrTs r�testInvalidInterfaceNameToIndexz2GeneralModuleTests.testInvalidInterfaceNameToIndexBs@��	
���)�V�%:�A�>�>�>����'�6�#8�+�F�F�F�F�Fr=�getrefcountztest needs sys.getrefcount()c��	tjt��}tjtd��dS#t
$r9tjt��|kr|�d��YdSYdSwxYw)Nrz$socket.getnameinfo loses a reference)�sysr=r\r�getnameinfor�r�)rU�origs  r�testRefCountGetNameInfoz*GeneralModuleTests.testRefCountGetNameInfoHs���	B��?�8�,�,�D���x��*�*�*�*�*���	B�	B�	B���x�(�(�D�0�0��	�	�@�A�A�A�A�A�A�1�0�0�	B���s�37�<A:�9A:c�T�	tjdd��dS#t$rYdSwxYw)N)r�rrrr)rr@rrTs r�testInterpreterCrashz'GeneralModuleTests.testInterpreterCrashTsB��	���~�q�1�1�1�1�1���	�	�	��D�D�	���s��
'�'c��tjdtjdtjdtjdi}|���D]�\}}d|zdz
}dD]3}|�||z||||z����|z���4||��}|�||z|��|�t|d����dS)N� �r�)rr��i��r�igE#i2Tvl)	r�htonl�ntohl�htons�ntohs�itemsrr��
OverflowError)rU�sizes�func�size�maskrK�swappeds       r�testNtoHzGeneralModuleTests.testNtoH\s�����r�6�<����r�6�<��5���+�+�-�-�	:�	:�J�D�$��t�G�q�=�D�G�
F�
F��� � ��T��4�4���Q�t�V���+=�+=��+D�E�E�E�E��d�4�j�j�G����W�t�^�T�2�2�2����m�T�5�9�9�9�9�	:�	:r=c�n�ddl}gd�}|dgz}dddddzg}||jdz
|jdzgzd	|jgz}|D]*}tj|��tj|���+|D]*}tj|��tj|���+|D]N}|�ttj|��|�ttj|���O|D]N}|�ttj|��|�ttj|���OdS)
Nr)rr�r�rH���������lr����)
�	_testcapi�INT_MIN�INT_MAXrrLrKrJrIr�rN)rUr[�
s_good_values�
l_good_values�l_bad_values�s_bad_values�ks       r�testNtoHErrorsz!GeneralModuleTests.testNtoHErrorsjsZ������)�)�)�
�%���4�
��B��q�$�w�/���
�
�q�
 �)�"3�A�"5�6�
7�
�i�'�(�
)�	�
�	�	�A��L��O�O�O��L��O�O�O�O��	�	�A��L��O�O�O��L��O�O�O�O��	>�	>�A����m�V�\�1�=�=�=����m�V�\�1�=�=�=�=��	>�	>�A����m�V�\�1�=�=�=����m�V�\�1�=�=�=�=�	>�	>r=c�L�|j}tj�d��stjdvrd}nd}|D])}	t	j|d��}n#t$rY�&wxYwt�ttd��rtj��dkr t	j|��}|||��	t	j|d��}|||��n#t$rd}YnwxYwtj
s|t	j|��|��|t	j|d��|��|�|t	j|d��|��|�ttjd	��|�ttjd
��dS)N)�freebsd�netbsd�gnukfreebsd)�linuxr�)�daytime�qotd�domain)�echorirk�tcp�getandroidapilevel��udprWrZ)rr?�platform�
startswithr�
getservbynamerrrnr�
is_android�
getservbyportr�rN)rU�eq�services�servicerR�port2�udpports       r�
testGetServByz GeneralModuleTests.testGetServBy�s���
�
��
�L�#�#�$H�I�I�	5��|�2�2�2�5�H�H�4�H��	�	�G�
��+�G�U�;�;������
�
�
���
�����M���1�2�2�	��&�(�(�B�.�.��(��1�1�E��B�t�U�O�O�O�	��*�7�E�:�:�G�
�B�w��������	�	�	��G�G�G�	�����!�	5��B�v�#�E�*�*�G�4�4�4�
��6���e�,�,�g�6�6�6����B�v�#�G�U�3�3�W�=�=�=����-��)=�r�B�B�B����-��)=�u�E�E�E�E�Es#�A�
A#�"A#�:C�C+�*C+c���|�tj��d��tj��5}|�|���d��ddd��n#1swxYwYt	d��5|�tj��d��tj��5}|�|���d��ddd��n#1swxYwYtjd��|�tj��d��tj��5}|�|���d��ddd��n#1swxYwYddd��n#1swxYwY|�ttjd��|�ttjd��dS)N�
rW�spam)	rrrE�
gettimeoutrIrFr��
ValueErrorr�)rUr#rMs   r�testDefaultTimeoutz%GeneralModuleTests.testDefaultTimeout�s���	
����1�3�3�T�:�:�:�
�]�_�_�	3�����Q�\�\�^�^�T�2�2�2�	3�	3�	3�	3�	3�	3�	3�	3�	3�	3�	3����	3�	3�	3�	3�&�b�
)�
)�		:�		:����V�5�7�7��<�<�<�����
8�D�� � ����!2�!2�B�7�7�7�
8�
8�
8�
8�
8�
8�
8�
8�
8�
8�
8����
8�
8�
8�
8�
�$�T�*�*�*����V�5�7�7��>�>�>�����
:�D�� � ����!2�!2�D�9�9�9�
:�
:�
:�
:�
:�
:�
:�
:�
:�
:�
:����
:�
:�
:�
:�		:�		:�		:�		:�		:�		:�		:�		:�		:�		:�		:����		:�		:�		:�		:�	
���*�f�&>��C�C�C�	
���)�V�%=�v�F�F�F�F�Fsl�)A0�0A4�7A4�
;F�)C:�.F�:C>	�>F�C>	�AF�)F�<F�F	�F�F	�F�F#�&F#�	inet_atonztest needs socket.inet_aton()c��|�dtjd����|�dtjd����dS)N��0.0.0.0�����r)rrr�rTs r�testIPv4_inet_aton_fourbytesz/GeneralModuleTests.testIPv4_inet_aton_fourbytes�sM��
	
����F�$4�Y�$?�$?�@�@�@�����F�$4�5F�$G�$G�H�H�H�H�Hr=�	inet_ptonztest needs socket.inet_pton()c�b����ddlm}m�m���fd�}�fd�}��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����||d��||d��||d��||d��||d��dS)Nr)r�r�rOc�����|��SrDr_)�arOr�s ��rrzz5GeneralModuleTests.testIPv4toString.<locals>.<lambda>�����i�i���+�+�r=c�J����ttf||��SrD�r�rr��rPr�rUs  �rrzz5GeneralModuleTests.testIPv4toString.<locals>.<lambda>��#���t�'8�'8�
�j�!�4��(
�(
�r=r�r�s��z255.0.255.0s����z170.170.170.170��1.2.3.4r�rz0.0.0.z	300.0.0.0za.0.0.0z	1.2.3.4.5�::1)rr�r�rOrr)rUr�g�
assertInvalidrOr�s`   @@r�testIPv4toStringz#GeneralModuleTests.testIPv4toString�s7�����	>�=�=�=�=�=�=�=�=�=�+�+�+�+�+��
�
�
�
�
�	
���,�a�a�	�l�l�;�;�;����,�a�a�
�.>�.>�?�?�?����,�a�a�0A�.B�.B�C�C�C����,�a�a�	�l�l�;�;�;����,�a�a�0A�.B�.B�C�C�C��	'��M�!�X�&�&�&��
�a��%�%�%��
�a��#�#�#��
�a��%�%�%��
�a��������,�a�a�	�l�l�;�;�;����,�a�a�
�.>�.>�?�?�?����,�a�a�0A�.B�.B�C�C�C����,�a�a�0A�.B�.B�C�C�C��
�a��"�"�"��
�a��%�%�%��
�a��#�#�#��
�a��%�%�%��
�a������r=c�������	ddlm�m�m}|s��d��n%#t
$r��d��YnwxYwtjdkrE	��d��n7#t$r*}|j	dkr��d��Yd}~nd}~wwxYw��fd	����fd
�}��
d�d������
d�d������
d
�d������
d�d������
d�d������
d�d����|d��|d��|d��|d��|d��|d��|d��|d��ts|d����
d�d������
d �d!������
d"�d#����|d$��|d%��|d&��|d'��|d(��|d)��dS)*Nr)r�rqr��IPv6 not available�+could not import needed symbols from socket�win32�::�&'�IPv6 might not be supportedc�����|��SrDr_)r�rqr�s ��rrzz5GeneralModuleTests.testIPv6toString.<locals>.<lambda>����i�i��!�,�,�r=c�J����ttf�|��SrDr��r�rrUs ��rrzz5GeneralModuleTests.testIPv6toString.<locals>.<lambda>�#���$�"3�"3�
�j�!�1�a�#
�#
�r=�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)rr�rqr�r��ImportErrorr?rqr�winerrorrr)rUr�r�r�rqrr�s`   @@@r�testIPv6toStringz#GeneralModuleTests.testIPv6toString�st������	I�<�<�<�<�<�<�<�<�<�<��
4��
�
�2�3�3�3����	I�	I�	I��M�M�G�H�H�H�H�H�	I�����<�7�"�"�
A��	�(�D�)�)�)�)���
A�
A�
A��:��&�&��M�M�"?�@�@�@����������
A����
-�,�,�,�,��
�
�
�
�
�
�	
����q�q��w�w�/�/�/�����q�q��y�y�1�1�1����3�Q�Q�u�X�X�>�>�>����O�
�A�4�5�5�	
�	
�	
�	
���S�
�A�%�&�&�	
�	
�	
�	
���;�Q�Q�x�[�[�I�I�I��
�h�����
�e�����
�g�����
�j�!�!�!��
�m�$�$�$��
�m�$�$�$��
�n�%�%�%��
�)�*�*�*��	.��M�,�-�-�-����;�
�A����	
�	
�	
�	
���C�
�A�%�&�&�	
�	
�	
�	
���O�
�A�2�3�3�	
�	
�	
�	�
�'�(�(�(��
�n�%�%�%��
�m�$�$�$��
�-�.�.�.��
�m�$�$�$��
�/�0�0�0�0�0�'�!(�A
�	A
�A+�+
B�5 B�B�	inet_ntopztest needs socket.inet_ntop()c�(����ddlm}m�m���fd�}�fd�}��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�rOc�����|��SrDr_)r�rOr�s ��rrzz5GeneralModuleTests.testStringToIPv4.<locals>.<lambda>4r�r=c�J����ttf||��SrDr�r�s  �rrzz5GeneralModuleTests.testStringToIPv4.<locals>.<lambda>5r�r=z1.0.1.0sz
170.85.170.85s�U�Urr�r�r�ssr�)rr�r�rOr�	bytearray)rUrr�r�rOr�s`   @@r�testStringToIPv4z#GeneralModuleTests.testStringToIPv40s������	>�=�=�=�=�=�=�=�=�=�+�+�+�+�+��
�
�
�
�
�	
����A�A�&9�$:�$:�;�;�;�����!�!�,?�*@�*@�A�A�A����*�A�A�.A�,B�,B�C�C�C�����A�A�&9�$:�$:�;�;�;��
�a��%�%�%��
�a��%�%�%��
�a��&�&�&�����!�!�I�6I�,J�,J�*K�*K�L�L�L�����A�A�&9�$:�$:�;�;�;�����!�!�,?�*@�*@�A�A�A����*�A�A�.A�,B�,B�C�C�C��
�a��%�%�%��
�a��%�%�%��
�a��&�&�&�����!�!�I�6I�,J�,J�*K�*K�L�L�L�L�Lr=c������	ddlm�m�m}|s��d��n%#t
$r��d��YnwxYwtjdkrE	��d��n7#t$r*}|j	dkr��d��Yd}~nd}~wwxYw��fd	����fd
�}��
d�d������
d�d
������
d�d������
d�td
������|d��|d��|d��dS)Nr)r�rqr�r�r�r�r�r�r�c�����|��SrDr_)r�rqr�s ��rrzz5GeneralModuleTests.testStringToIPv6.<locals>.<lambda>[r�r=c�J����ttf�|��SrDr�r�s ��rrzz5GeneralModuleTests.testStringToIPv6.<locals>.<lambda>\r�r=r�r�sz!aef:b01:506:1001:ffff:9997:55:170s
�����Upsss)rr�rqr�r�r�r?rqrr�rr�)rUr�r�r�rqrr�s`   @@@r�testStringToIPv6z#GeneralModuleTests.testStringToIPv6Js�������	I�<�<�<�<�<�<�<�<�<�<��
4��
�
�2�3�3�3����	I�	I�	I��M�M�G�H�H�H�H�H�	I�����<�7�"�"�
A��	�(�L�1�1�1�1���
A�
A�
A��:��&�&��M�M�"?�@�@�@����������
A����
-�,�,�,�,��
�
�
�
�
�
�	
����q�q����/�/�/�������"8� 9� 9�:�:�:����/�
�A�Q�R�R�	
�	
�	
�	
������)�,B�"C�"C� D� D�E�E�E��
�l�#�#�#��
�l�#�#�#��
�k�"�"�"�"�"r�c��tjtjtj��}|�|j��tj��D]a}tj��}	|�	d|f��n3#t$r&}|jtjks|dkr�Yd}~�Zd}~wwxYw|�
��}	tjtj����}n%#t$r|�d��YnwxYw|�|dd|fd|dz��|�|d|��dS)Nr��rrz
%s invalidr�)rrOr@rtr �	itertools�countr�find_unused_portr�rr(�
EADDRINUSEr�rrr�r�r)rUrMrKrRr�r��
my_ip_addrs       r�testSockNamezGeneralModuleTests.testSockNamensp���}�V�^�V�-?�@�@������
�#�#�#���"�"�	�	�A� �1�3�3�D�
��	�	�9�d�+�,�,�,�
���	�
�
�
��7�e�.�.�.�!�q�&�&��39�&�&�&�&�����
�������!�!��	1��-�f�.@�.B�.B�C�C�J�J���	1�	1�	1��M�M�/�0�0�0�0�0�	1����	
�
�
�d�1�g�	�:�6��t�A�w�8N�O�O�O�����a��$�'�'�'�'�'s*�-B�
B6�B1�1B6�%C4�4D�Dc��tjtjtj��}|�|j��|�tjtj��}|�|dkd��dS)Nrzinitial mode is reuse)	rrOr@rtr �
getsockoptr�r��assertFalse�rUrM�reuses   r�testGetSockOptz!GeneralModuleTests.testGetSockOpt�sh���}�V�^�V�-?�@�@������
�#�#�#����� 1�6�3F�G�G������!��%<�=�=�=�=�=r=c�j�tjtjtj��}|�|j��|�tjtjd��|�tjtj��}|�	|dkd��dS)Nr�rzfailed to set reuse mode)
rrOr@rtr r�r�r�r�r�r�s   r�testSetSockOptz!GeneralModuleTests.testSetSockOpt�s����}�V�^�V�-?�@�@������
�#�#�#�����)�6�+>��B�B�B����� 1�6�3F�G�G������!��%?�@�@�@�@�@r=c���tjtjtj��5}|�d��ddd��n#1swxYwY|�t
|jd��dS)Nr��spam)rrOr@�
settimeoutr�rrr\s  r�testSendAfterClosez%GeneralModuleTests.testSendAfterClose�s���
�]�6�>�6�+=�
>�
>�	�$��O�O�A����	�	�	�	�	�	�	�	�	�	�	����	�	�	�	����'�4�9�g�6�6�6�6�6s�A�A�Ac���tj��}|�tjdf��tj|���������	|���|�d��dS#t$r<}|�|jtj	tj
f��Yd}~dSd}~wwxYw)Nr�r�z#close() should raise EBADF/ENOTSOCK)rr��
_LOCALHOSTr�r r�rr�r(�EBADF�ENOTSOCK)rUrMr�s   r�testCloseExceptionz%GeneralModuleTests.testCloseException�s����}�����	�	�6�$�a�(�)�)�)��
�T�[�[�]�]�+�+�+�1�1�3�3�3�	=��J�J�L�L�L�

�I�I�;�<�<�<�<�<��	�	D�	D�	D��M�M�#�)�e�k�5�>�%B�C�C�C�C�C�C�C�C�C�����	D���s�/B�
C �$1C�C c��tjtjtj��5}|�|jtj��ttd��r?|�|jtjtjztjf��n%|�|jtj��|�|j	d��ddd��dS#1swxYwYdS)N�SOCK_CLOEXECr)
rrOr@rr�rr�r}r�r�r\s  r�testNewAttributesz$GeneralModuleTests.testNewAttributes�s���]�6�>�6�+=�
>�
>�	,�$����T�[�&�.�9�9�9��v�~�.�.�
@��
�
�d�i�%�1�F�4G�G�%�1�3�4�4�4�4�� � ���F�,>�?�?�?����T�Z��+�+�+�	,�	,�	,�	,�	,�	,�	,�	,�	,�	,�	,�	,����	,�	,�	,�	,�	,�	,s�B:C1�1C5�8C5c�0�tj��}|�|j��tj��}|dz}|dz
}|�t|jt|f��|�t|jt|f��tj
��D]g}tj��}	|�t|f��dS#t$r&}|jtj
ks|dkr�Yd}~�`d}~wwxYwdS)NrZr�)rrtr rr�r�rNr�r�r�r�rr(r�)rUrMrR�big_port�neg_portrKr�s       r�test_getsockaddrargz&GeneralModuleTests.test_getsockaddrarg�s���}��������
�#�#�#��-�/�/���%�<���%�<�����-���T�8�4D�E�E�E����-���T�8�4D�E�E�E���"�"�	�	�A� �1�3�3�D�
��	�	�4��,�'�'�'�
����	�
�
�
��7�e�.�.�.�!�q�&�&��39�&�&�&�&�����
����		�	s�C#�#
D�-D�Dc�~�|�ttjd����|�ttd����|�ttd����|�ttd����|�ttd����tj��}|�|j��|�t|jdd��|�tjd��dS)Nr�
SIO_RCVALL�	RCVALL_ON�
RCVALL_OFF�SIO_KEEPALIVE_VALSrW)r��dr�)	r�rrrtr r�r�rr�r�s  r�test_sock_ioctlz"GeneralModuleTests.test_sock_ioctl�s��������
�w�7�7�8�8�8�������5�5�6�6�6�������4�4�5�5�5�������5�5�6�6�6������(<�=�=�>�>�>��M�O�O������� � � ����*�a�g�r�4�8�8�8�	����)�=�9�9�9�9�9r=�SIO_LOOPBACK_FAST_PATHz1Loopback fast path support required for this testc�f�tj��}|�|j��	|�tjd��n5#t
$r(}d}|j|kr|�d���d}~wwxYw|�t|jtjd��dS)NTi='zQSIO_LOOPBACK_FAST_PATH is defined but doesn't implemented in this Windows version)
rrtr rr�rr�r�r�r�)rUr#�exc�
WSAEOPNOTSUPPs    r�test_sio_loopback_fast_pathz.GeneralModuleTests.test_sio_loopback_fast_path�s���
�M�O�O������� � � �	�
�G�G�F�1�4�8�8�8�8���	�	�	�!�M��|�}�,�,��
�
�L�M�M�M������	����	
���)�Q�W�f�.K�T�R�R�R�R�Rs� A�
B�#A=�=Bc��	tjdd��nB#tj$r0}|jtjkr|�d���d}~wwxYwtjtd��D]%}|�t|��d���&tjdd��tjdd��tjdd��tj
rtjdd��ttd��rtj
��dkrtjtd	��tjtd��tjtd��tjtdtjtj��}|D�]	\}}}}}|�|tj��|�t!|��d
|jz��|�t%|��t%|j����|�|tj��|�t!|��d|jz��|�t%|��t%|j������tjtddtj��}|D](\}}}}}|�|tj���)tjtdddtj��tjtddddtj��tjddtjtjdtj��tjtd��}tjtd�
��}	|�||	��tjtdtj��}tjtdtj���}	|�||	��tjtddtj��}tjtdtj���}	|�||	��tjtdddtj��}tjtdtj���}	|�||	��tjtddddtj��}tjtdtj���}	|�||	��tjddtjtjdtj��}tjddtjtjdtj���}	|�||	��|�t.tjdd��ttd��r<	tjdddddtj��dS#tj$rYdSwxYwdS)N�	localhost�Pzbuggy libc versionr�r�r�rnro�http�<AddressFamily.AF_INET: %r>�<SocketKind.SOCK_STREAM: %r>r)r[rR�r��r})r�)�flags)r[rRr�r}r�r�u��AI_NUMERICSERV)r�getaddrinfor�r(�EAI_SERVICEr�r�r�lenr�IPV6_ENABLEDrr?rnrOr@r��valuer��SOL_TCP�
AI_PASSIVE�	AF_UNSPECr��UnicodeEncodeErrorr�)
rUr��info�infosr�r}r��socktyper��bs
          r�testGetaddrinfoz"GeneralModuleTests.testGetaddrinfo�st��	���{�B�/�/�/�/����	�	�	��y�F�.�.�.��
�
�2�3�3�3������		�����&�t�T�2�2�	+�	+�D����S��Y�Y��*�*�*�*�	��;��+�+�+���;��+�+�+���4��$�$�$��%�	*���u�b�)�)�)���1�2�2�	-��&�(�(�B�.�.���t�V�,�,�,���4��$�$�$���4��&�&�&��"�4��V�^�V�=O�P�P��%*�	9�	9�!�F�D�!�Q�����V�V�^�4�4�4����T�&�\�\�+H�6�<�+W�X�X�X����S��[�[�#�f�l�*;�*;�<�<�<����T�6�#5�6�6�6����T�$�Z�Z�)G�$�*�)T�U�U�U����S��Y�Y��D�J���8�8�8�8��"�4��q�&�2D�E�E��$)�	;�	;� �A�x��A�q����X�v�'9�:�:�:�:���4��q�!�V�^�<�<�<���4��q�!�Q��0A�B�B�B�	��4��F�$4�f�6H�!�!�,�	.�	.�	.�
��t�T�*�*����D�t�4�4�4������A������t�T�6�>�:�:����t�T�&�.�A�A�A������A������t�T�1�f�.@�A�A����t�T��0B�C�C�C������A������t�T�1�a���@�@����t�T���@�@�@������A������t�T�1�a��F�4E�F�F����t�T��1B�C�C�C������A������t�Q��(8�&�:L�a�%�0�
2�
2����D�q��9I�$*�$6�a�%+�%6�
8�
8�
8��	
����A�������,�f�.@�+�x�X�X�X��6�+�,�,�	�
��"�;��a��A�#)�#8�:�:�:�:�:���?�
�
�
����
����
	�	s&��A�+A�A�#Y�Y�Yc�T�|�ttjdd��dS)N)zmail.python.orgrr)r�rrr@rTs r�test_getnameinfoz#GeneralModuleTests.test_getnameinfo:s&�����'�6�#5�7L�a�P�P�P�P�Pr=�networkznetwork is not enabledc�0�tjd��5tjd��ddd��n#1swxYwYd}tj|��tj|��tj|dtjtj��dS)Nz
python.orgu!испытание.pythontest.netr)r�transient_internetrr�gethostbyname_exr�r�r@)rUrks  r�	test_idnazGeneralModuleTests.test_idna>s���
�
-�l�
;�
;�	/�	/�� ��.�.�.�	/�	/�	/�	/�	/�	/�	/�	/�	/�	/�	/����	/�	/�	/�	/�5����V�$�$�$����'�'�'���6�!�F�$4�V�5G�H�H�H�H�Hs�6�:�:c�@��ttd��rttd��s��d���fd�}�fd�}tj��\}}tjtj|��}	|r|�d����t��5tj	d��|�
dtjz��ddd��n#1swxYwY|ratjtj|��tj	d����t|j
dtjz��tj	d	��tjtj|��|���|���dS#tj	d	��tjtj|��|���|���wxYw)
N�alarmrz9signal.alarm and socket.socketpair required for this testc�T����ttjd��dSr��r�r��math�acosh�rprUs �r�
ok_handlerz@GeneralModuleTests.check_sendall_interrupted.<locals>.ok_handlerUs#������j�$�*�a�8�8�8�8�8r=c�^����ttjd��ddzdS�Nrr�rrs �r�raising_handlerzEGeneralModuleTests.check_sendall_interrupted.<locals>.raising_handlerWs*������j�$�*�a�8�8�8�
��F�F�F�Fr=g�?r��xr)r�signalrr�r�SIGALRMr�r��ZeroDivisionErrorr�sendallr�
SOCK_MAX_SIZE�TimeoutErrorr )rU�with_timeoutrr	�cr#�	old_alarms`      r�check_sendall_interruptedz,GeneralModuleTests.check_sendall_interruptedOs ����v�w�'�'�	W�w�v�|�/L�/L�	W��M�M�U�V�V�V�	9�	9�	9�	9�	9�	�	�	�	�	�� �"�"���1��M�&�.�/�B�B�	�	��
"����S�!�!�!��"�"�#4�5�5�
8�
8���Q�����	�	�$��!6�6�7�7�7�
8�
8�
8�
8�
8�
8�
8�
8�
8�
8�
8����
8�
8�
8�
8��
@��
�f�n�j�9�9�9���Q�����!�!�,��	�"&��)>�">�@�@�@�
�L��O�O�O��M�&�.�)�4�4�4�
�G�G�I�I�I�
�G�G�I�I�I�I�I��
�L��O�O�O��M�&�.�)�4�4�4�
�G�G�I�I�I�
�G�G�I�I�I�I���s2�1G�27C5�)G�5C9�9G�<C9�=A&G�AHc�0�|�d��dS�NF�rrTs r�test_sendall_interruptedz+GeneralModuleTests.test_sendall_interruptedns���&�&�u�-�-�-�-�-r=c�0�|�d��dS)NTrrTs r�%test_sendall_interrupted_with_timeoutz8GeneralModuleTests.test_sendall_interrupted_with_timeoutqs���&�&�t�,�,�,�,�,r=c��tjtjtj��}t|��}|�t
��5}d}t
j��ddd��n#1swxYwY|�|t|j
jd����tjtjtj��}|�d��}t|��}d}t
j��|�t
��5d}t
j��ddd��dS#1swxYwYdS)Nrr)
rrOr@r��assertWarns�ResourceWarningrr�r�r��warningrp�makefile)rUrMrr�rs     r�test_dealloc_warnz$GeneralModuleTests.test_dealloc_warnts����}�V�^�V�-?�@�@����J�J��
�
�
�o�
.�
.�	!�"��D��� � � �	!�	!�	!�	!�	!�	!�	!�	!�	!�	!�	!����	!�	!�	!�	!�	
�
�
�a��R�Z�_�Q�/�0�0�1�1�1��}�V�^�V�-?�@�@���M�M�$������J�J���������
�
�
�o�
.�
.�	!�	!��A��� � � �	!�	!�	!�	!�	!�	!�	!�	!�	!�	!�	!�	!����	!�	!�	!�	!�	!�	!s$�A5�5A9�<A9�/E�E�Ec�"�tjtjtj��5}|�d��}|���|�t
|��d��ddd��dS#1swxYwYdS)Nrz<_io.BufferedReader name=-1>)rrOr@rr rr��rUrM�fps   r�test_name_closed_socketioz,GeneralModuleTests.test_name_closed_socketio�s���
�]�6�>�6�+=�
>�
>�	G�$����t�$�$�B��H�H�J�J�J����T�"�X�X�'E�F�F�F�	G�	G�	G�	G�	G�	G�	G�	G�	G�	G�	G�	G����	G�	G�	G�	G�	G�	Gs�A
B�B�Bc�^�tj��5}|�dd���}|�|�����|�|�����|�|�����|���|�t|j��|�t|j��|�t|j��ddd��dS#1swxYwYdS)Nrr)�	buffering)
rrr��readabler��writable�seekabler r�r�r"s   r�test_unusable_closed_socketioz0GeneralModuleTests.test_unusable_closed_socketio�s+��
�]�_�_�	7�����t�q��1�1�B��O�O�B�K�K�M�M�*�*�*����R�[�[�]�]�+�+�+����R�[�[�]�]�+�+�+��H�H�J�J�J����j�"�+�6�6�6����j�"�+�6�6�6����j�"�+�6�6�6�	7�	7�	7�	7�	7�	7�	7�	7�	7�	7�	7�	7����	7�	7�	7�	7�	7�	7s�DD"�"D&�)D&c�~�tj��}	|�tdf��tj|�����|�t��5|�d��ddd��n#1swxYwY|�t��5|���ddd��n#1swxYwYnK#|�t��5|���ddd��w#1swxYwYwxYw|�t��5tjd��ddd��n#1swxYwY|�t��5tjd��ddd��dS#1swxYwYdS)Nrr�rW)	rr�r�r r�r�rrSr�r\s  r�test_socket_closez$GeneralModuleTests.test_socket_close�s����}����	��I�I�t�Q�i� � � ��L������'�'�'��"�"�7�+�+�
�
����A����
�
�
�
�
�
�
�
�
�
�
����
�
�
�
��"�"�7�+�+�
�
��
�
����
�
�
�
�
�
�
�
�
�
�
����
�
�
�
����"�"�7�+�+�
�
��
�
����
�
�
�
�
�
�
�
�
�
�
����
�
�
�
�
�����
�
�y�
)�
)�	�	��L�����	�	�	�	�	�	�	�	�	�	�	����	�	�	�	�
�
�
�w�
'�
'�	�	��L�����	�	�	�	�	�	�	�	�	�	�	�	����	�	�	�	�	�	s��AC%�1B�C%�B�C%�B�C%�8C�C� C�%D-�D!�D-�!D%�%D-�(D%�)D-�
E+�+E/�2E/�F2�2F6�9F6c	�f�dD]�}|�|���5tj��5}d|vrdnd}|�||���5}|�|j|��ddd��n#1swxYwYddd��n#1swxYwYddd��n#1swxYwY��dS)N)rr�rw�w�wb��moder�r	��encoding)�subTestrrrr2)rUr2rMr4r#s     r�test_makefile_modez%GeneralModuleTests.test_makefile_mode�st��.�	8�	8�D����4��(�(�
8�
8��]�_�_�8��'*�d�{�{�t�t��H����t�h��?�?�8�2��(�(���$�7�7�7�8�8�8�8�8�8�8�8�8�8�8����8�8�8�8�8�8�8�8�8�8�8�8�8�8�8����8�8�8�8�
8�
8�
8�
8�
8�
8�
8�
8�
8�
8�
8����
8�
8�
8�
8��	8�	8sX�B%� B�A7	�+B�7A;
�;B�>A;
�?B�B%�B�B%�B�B%�%B)	�,B)	c	�R�dD]�}|�|���5tj��5}|�td��5|�|��ddd��n#1swxYwYddd��n#1swxYwYddd��n#1swxYwY��dS)N)�rtr��+r�r1zinvalid mode)r5r�assertRaisesRegexr�r)rUr2rMs   r�test_makefile_invalid_modez-GeneralModuleTests.test_makefile_invalid_mode�s`��'�	,�	,�D����4��(�(�
,�
,��]�_�_�,���/�/�
�N�K�K�,�,��
�
�d�+�+�+�,�,�,�,�,�,�,�,�,�,�,����,�,�,�,�,�,�,�,�,�,�,�,�,�,�,����,�,�,�,�
,�
,�
,�
,�
,�
,�
,�
,�
,�
,�
,����
,�
,�
,�
,��	,�	,sX�B�B�A-	�!B�-A1
�1B�4A1
�5B�8B�B�B�B�B�B	�"B	c�p�tj��}|5ttjdz��D])}|�t
tj||���*	ddd��n#1swxYwYttjdz��D]�}tjtjtj|����}|�	|tj��tjtjtj
|����}|�	|tj
����dSrX)r�range�pickle�HIGHEST_PROTOCOLr�r��dumps�loadsrOrr@)rUrM�protocolr�r}s     r�test_picklezGeneralModuleTests.test_pickle�sY���}����
�	K�	K�!�&�"9�A�"=�>�>�
K�
K���!�!�)�V�\�4��J�J�J�J�
K�	K�	K�	K�	K�	K�	K�	K�	K�	K�	K�	K����	K�	K�	K�	K��f�5��9�:�:�	7�	7�H��\�&�,�v�~�x�"H�"H�I�I�F����V�V�^�4�4�4��<���V�-?�� J� J�K�K�D����T�6�#5�6�6�6�6�		7�	7s�AA*�*A.�1A.c���dD]t}tjtjtj��5}|�tdf��|�|��ddd��n#1swxYwY�utjtjtj��5}|�tdf��|���ddd��dS#1swxYwYdS)N)rrWr)rrOr@r�r�rS)rU�backlog�srvs   r�test_listen_backlogz&GeneralModuleTests.test_listen_backlog�s@���	$�	$�G���v�~�v�/A�B�B�
$�c����$���#�#�#��
�
�7�#�#�#�
$�
$�
$�
$�
$�
$�
$�
$�
$�
$�
$����
$�
$�
$�
$���]�6�>�6�+=�
>�
>�	�#��H�H�d�A�Y�����J�J�L�L�L�	�	�	�	�	�	�	�	�	�	�	�	����	�	�	�	�	�	s#�2A,�,A0	�3A0	�!1C�C#�&C#c��ddl}tjtjtj��5}|�t
df��|�t|j|j	dz��ddd��dS#1swxYwYdSr)
r[rrOr@r�r�r�rNrSr])rUr[rFs   r�test_listen_backlog_overflowz/GeneralModuleTests.test_listen_backlog_overflow�s���	����
�]�6�>�6�+=�
>�
>�	P�#��H�H�d�A�Y�������m�S�Z��9J�Q�9N�O�O�O�	P�	P�	P�	P�	P�	P�	P�	P�	P�	P�	P�	P����	P�	P�	P�	P�	P�	Ps�AB�B�B�IPv6 required for this test.c�N�|�ttjtjddfd��tjtjtj��5}|�t|jtjddf��ddd��dS#1swxYwYdS)NrrVi����)	r�rNrr@rrmrqr@r�r�s  r�
test_flowinfoz GeneralModuleTests.test_flowinfo�s������-��);�(�/��J�?��	D�	D�	D�
�]�6�?�F�,>�
?�
?�	U�1����m�Q�V�m�6J�A�s�5S�T�T�T�	U�	U�	U�	U�	U�	U�	U�	U�	U�	U�	U�	U����	U�	U�	U�	U�	U�	Us�/B�B�!Bc��tjddtjtjtj��\�^}}|�|d��dS)N�ff02::1de:c0:face:8Dr
)�ff02::1de:c0:face:8dr
rr)rr�rqr'r�r)rUr��sockaddrs   r�test_getaddrinfo_ipv6_basicz.GeneralModuleTests.test_getaddrinfo_ipv6_basic�sP��"�.�"��&�/�����	
�
���1�h�	
����#G�H�H�H�H�Hr=c���|�tj��tjd����|�tj��tjd����dS)Nr�r�)rrrrTs r�test_getfqdn_filter_localhostz0GeneralModuleTests.test_getfqdn_filter_localhost�sX�������)�)�6�>�)�+D�+D�E�E�E������)�)�6�>�$�+?�+?�@�@�@�@�@r=r�zdoes not work on WindowszSymbolic scope id does not workz test needs socket.if_nameindex()c���tj��d\}}tjd|zdtjtjtj��\�^}}|�|ddd|f��dS)Nr�ff02::1de:c0:face:8D%r
rO)rr,r�rqr'r�r)rU�ifindex�test_interfacer�rPs     r�&test_getaddrinfo_ipv6_scopeid_symbolicz9GeneralModuleTests.test_getaddrinfo_ipv6_scopeid_symbolic�sx��%+�$7�$9�$9�!�$<�!��.�"�.�#�n�4��&�/�����	
�
���1�h�	
����$:�D�!�W�#M�N�N�N�N�Nr=z.Numeric scope id does not work or undocumentedc���d}tjdt|��zdtjtjtj��\�^}}|�|ddd|f��dS)N�*rUr
rOr)rr�r�rqr'r�r)rUrVr�rPs    r�%test_getaddrinfo_ipv6_scopeid_numericz8GeneralModuleTests.test_getaddrinfo_ipv6_scopeid_numeric�sk����"�.�#�c�'�l�l�2��&�/�����	
�
���1�h�	
����$:�D�!�W�#M�N�N�N�N�Nr=c���tj��d\}}ddd|f}tj|tjtjz��}|�|d|zdf��dS)NrrNr
�ff02::1de:c0:face:8d%�1234)rr,r@�NI_NUMERICHOST�NI_NUMERICSERVr)rUrVrWrP�nameinfos     r�&test_getnameinfo_ipv6_scopeid_symbolicz9GeneralModuleTests.test_getnameinfo_ipv6_scopeid_symbolicsn��%+�$7�$9�$9�!�$<�!��.�*�D�!�W�=���%�h��0E��H]�0]�^�^������$;�n�$L�f�#U�V�V�V�V�Vr=c��d}ddd|f}tj|tjtjz��}|�|dt|��zdf��dS)NrZrNr
rr]r^)rr@r_r`rr�)rUrVrPras    r�%test_getnameinfo_ipv6_scopeid_numericz8GeneralModuleTests.test_getnameinfo_ipv6_scopeid_numericsa����*�D�!�W�=���%�h��0E��H]�0]�^�^������$;�c�'�l�l�$J�F�#S�T�T�T�T�Tr=c�Z�tjtjtj��5}|�t	|j��d|jjz��|�t	|j��d|jjz��|�t|j��t|jj����|�t|j��t|jj����ddd��dS#1swxYwYdS)Nr�r�)	rrOr@rr�r�r�r}r�r�s  r�test_str_for_enumsz%GeneralModuleTests.test_str_for_enumss ���]�6�>�6�+=�
>�
>�	=�!����T�!�(�^�^�-J�Q�X�^�-[�\�\�\����T�!�&�\�\�+I�A�F�L�+X�Y�Y�Y����S���]�]�C����,?�,?�@�@�@����S���[�[�#�a�f�l�*;�*;�<�<�<�		=�	=�	=�	=�	=�	=�	=�	=�	=�	=�	=�	=����	=�	=�	=�	=�	=�	=s�C)D � D$�'D$c��ttdd��}ttdd��}tj|z|z}tjtj|��5}|�|jtj��|�d��|�|jtj��|�d��|�|jtj��|�d��|�|jtj��|�d��|�|jtj��ddd��dS#1swxYwYdS)N�
SOCK_NONBLOCKrr�r�TF)r�rr@rOrr}r��setblocking)rUrhr��	sock_typer#s     r� test_socket_consistent_sock_typez3GeneralModuleTests.test_socket_consistent_sock_type'st������;�;�
��v�~�q�9�9���&��6��E�	�
�]�6�>�9�
5�
5�		9�����Q�V�V�%7�8�8�8�
�L�L��O�O�O����Q�V�V�%7�8�8�8�
�L�L��O�O�O����Q�V�V�%7�8�8�8�
�M�M�$�������Q�V�V�%7�8�8�8�
�M�M�%� � � ����Q�V�V�%7�8�8�8�		9�		9�		9�		9�		9�		9�		9�		9�		9�		9�		9�		9����		9�		9�		9�		9�		9�		9s�DE9�9E=�E=c�h�tjtjtj��}|���}t	tjj�����dz}t	d�tjj�	��D����dz}tj||d|���5}|�
|j|��|�
|j|��|�
|jddh��ddd��dS#1swxYwYdS)Nr�c3�(K�|]
\}}|dv�	|V��dS)>r�rhNr_)r�r��kinds   rr�zEGeneralModuleTests.test_unknown_socket_family_repr.<locals>.<genexpr>Bs>����
�
���d��<�<�<�
�<�<�<�<�
�
r=ro)r�r}r�r�r)rrOr@�detach�max�
AddressFamily�__members__�values�
SocketKindrMrr�r}r�r�)rUrM�fd�unknown_family�unknown_typer#s      r�test_unknown_socket_family_reprz2GeneralModuleTests.test_unknown_socket_family_repr7sa���}�V�^�V�-?�@�@��
�[�[�]�]���V�1�=�D�D�F�F�G�G�!�K���
�
�$�/�;�A�A�C�C�
�
�
�
�
�
�	���]�%�L������	,�����Q�X�~�6�6�6����Q�V�\�2�2�2��M�M�!�'�A�r�7�+�+�+�
	,�	,�	,�	,�	,�	,�	,�	,�	,�	,�	,�	,����	,�	,�	,�	,�	,�	,s�AD'�'D+�.D+�sendfileztest needs os.sendfile()c���Gd�d��}tj��5}tjtjtj��}tj|��|�tj��5|�||����ddd��n#1swxYwY|�t��5|�|ddz����ddd��n#1swxYwY|�t��5|�|d����ddd��n#1swxYwYddd��dS#1swxYwYdS)Nc��eZdZd�Zd�ZdS)�<GeneralModuleTests.test__sendfile_use_sendfile.<locals>.Filec��||_dSrD�ru)rUrus  rrkzEGeneralModuleTests.test__sendfile_use_sendfile.<locals>.File.__init__Ss
������r=c��|jSrDr~rTs rr�zCGeneralModuleTests.test__sendfile_use_sendfile.<locals>.File.filenoVs	���w�r=N)r\r]r^rkr�r_r=r�Filer|Rs2������
�
�
�
�
�
�
�
r=r�r�rY)rrFr�curdir�O_RDONLYr r��_GiveupOnSendfile�_sendfile_use_sendfilerNr�)rUr�rMrus    r�test__sendfile_use_sendfilez.GeneralModuleTests.test__sendfile_use_sendfilePsQ��	�	�	�	�	�	�	�	��]�_�_�	8������B�K�0�0�B��H�R�L�L�L��"�"�6�#;�<�<�
6�
6��+�+�D�D��H�H�5�5�5�
6�
6�
6�
6�
6�
6�
6�
6�
6�
6�
6����
6�
6�
6�
6��"�"�=�1�1�
;�
;��+�+�D�D��D��M�M�:�:�:�
;�
;�
;�
;�
;�
;�
;�
;�
;�
;�
;����
;�
;�
;�
;��"�"�9�-�-�
8�
8��+�+�D�D��J�J�7�7�7�
8�
8�
8�
8�
8�
8�
8�
8�
8�
8�
8����
8�
8�
8�
8�	8�	8�	8�	8�	8�	8�	8�	8�	8�	8�	8�	8����	8�	8�	8�	8�	8�	8s~�AE$�>B)�E$�)B-	�-E$�0B-	�1E$�"C<�0E$�<D	�E$�D	�E$�!E�E$�E	�E$�E	�E$�$E(�+E(c���|�|j|��|�|j|��|���}t	j|���}|�|j��|���|�|j|��|�|j|��|�|���|��dS�Nr�)rr�r}r�rrtr ro)rUr#r��styperu�s2s      r�_test_socket_filenoz&GeneralModuleTests._test_socket_filenobs��������6�*�*�*�������'�'�'�
�X�X�Z�Z��
�]�"�
%�
%�
%�������!�!�!�	���
�
�
������F�+�+�+������%�(�(�(���������b�)�)�)�)�)r=c��tjtjtj��}|�|j��|�tjdf��|�|tjtj��ttd��r�tjtjtj
��}|�|j��|�tjdf��|�|tjtj
��tjr�tjtjtj��}|�|j��|�tj
dddf��|�|tjtj��ttd��r�tj��}|�t j|��tjtjtj��}|�|j��	|�t&j�|d����|�|tjtj��dS#t,$rYdSwxYwdS)Nrr'rRr)rrOr@rtr r�rr�r�rr'r�rqrmrCrD�shutil�rmtreerRrFrNr��PermissionError)rUr#�tmpdirs   r�test_socket_filenoz%GeneralModuleTests.test_socket_filenoos-���M�&�.�&�*<�=�=������� � � �	���
�"�A�&�'�'�'�� � ��F�N�F�4F�G�G�G��6�<�(�(�	K��
�f�n�f�.?�@�@�A��O�O�A�G�$�$�$�
�F�F�M�&��*�+�+�+��$�$�Q����8I�J�J�J��%�	M��
�f�o�v�/A�B�B�A��O�O�A�G�$�$�$�
�F�F�M�(�!�Q��2�3�3�3��$�$�Q����9K�L�L�L��6�9�%�%�	=��%�'�'�F��O�O�F�M�6�2�2�2��
�f�n�f�.@�A�A�A��O�O�A�G�$�$�$�
=����r�w�|�|�F�H�5�5�6�6�6��(�(��F�N�)/�);�=�=�=�=�=��#�
�
�
����
����	=�	=s�3J=�=
K�
Kc���|�t��5tjtjtjd���ddd��dS#1swxYwYdS)Ng@E@r��r�r�rrOr@rTs r� test_socket_fileno_rejects_floatz3GeneralModuleTests.test_socket_fileno_rejects_float�s���
�
�
�y�
)�
)�	K�	K��M�&�.�&�*<�T�J�J�J�J�	K�	K�	K�	K�	K�	K�	K�	K�	K�	K�	K�	K����	K�	K�	K�	K�	K�	K��,A�A�Ac���|�t��5tjtjtjd���ddd��dS#1swxYwYdS)N�foor�r�rTs r�&test_socket_fileno_rejects_other_typesz9GeneralModuleTests.test_socket_fileno_rejects_other_types�s���
�
�
�y�
)�
)�	L�	L��M�&�.�&�*<�U�K�K�K�K�	L�	L�	L�	L�	L�	L�	L�	L�	L�	L�	L�	L����	L�	L�	L�	L�	L�	Lr�c���|�td��5tjtjtjd���ddd��dS#1swxYwYdS)N�negative file descriptorrWr��r:r�rrOr@rTs r�)test_socket_fileno_rejects_invalid_socketz<GeneralModuleTests.test_socket_fileno_rejects_invalid_socket�s���
�
#�
#�J�0J�
K�
K�	I�	I��M�&�.�&�*<�R�H�H�H�H�	I�	I�	I�	I�	I�	I�	I�	I�	I�	I�	I�	I����	I�	I�	I�	I�	I�	I��,A�A�AzWindows disallows -1 onlyc���|�td��5tjtjtjd���ddd��dS#1swxYwYdS)Nr�i���r�r�rTs r�#test_socket_fileno_rejects_negativez6GeneralModuleTests.test_socket_fileno_rejects_negative�s���
�
#�
#�J�0J�
K�
K�	J�	J��M�&�.�&�*<�S�I�I�I�I�	J�	J�	J�	J�	J�	J�	J�	J�	J�	J�	J�	J����	J�	J�	J�	J�	J�	Jr�c�F�d}|�t��5}tjtj�����ddd��n#1swxYwY|�|jjtj|f��|�t��5}tjtj	tj
tj�����ddd��n#1swxYwY|�|jjtj|f��dS)Ni6'r�)r�rrr�make_bad_fdr�r�r(r�rOr@)rU�WSAENOTSOCKr�s   r�$test_socket_fileno_requires_valid_fdz7GeneralModuleTests.test_socket_fileno_requires_valid_fd�sg����
�
�
�w�
'�
'�	:�2��M��!6�!8�!8�9�9�9�9�	:�	:�	:�	:�	:�	:�	:�	:�	:�	:�	:����	:�	:�	:�	:��
�
�b�l�(�5�;��*D�E�E�E�
�
�
�w�
'�
'�	0�2��M����"� �,�.�.�
0�
0�
0�
0�	0�	0�	0�	0�	0�	0�	0�	0�	0�	0�	0����	0�	0�	0�	0�
	
�
�
�b�l�(�5�;��*D�E�E�E�E�Es#�'A�A�A�!=C*�*C.�1C.c�B�tj��5}|�t��5t	j|������ddd��n#1swxYwY|�t��5}t	jtjtj|������ddd��n#1swxYwY|�|j	j
tj��ddd��dS#1swxYwYdSr�)rC�NamedTemporaryFiler�rrr�rOr@rr�r(r�)rU�afiler�s   r�%test_socket_fileno_requires_socket_fdz8GeneralModuleTests.test_socket_fileno_requires_socket_fd�s���
�
(�
*�
*�		A�e��"�"�7�+�+�
5�
5��
�U�\�\�^�^�4�4�4�4�
5�
5�
5�
5�
5�
5�
5�
5�
5�
5�
5����
5�
5�
5�
5��"�"�7�+�+�
+�r��
��N��&� �<�<�>�>�+�+�+�+�
+�
+�
+�
+�
+�
+�
+�
+�
+�
+�
+����
+�
+�
+�
+�

���R�\�/���@�@�@�		A�		A�		A�		A�		A�		A�		A�		A�		A�		A�		A�		A����		A�		A�		A�		A�		A�		AsX�D�(A#�D�#A'	�'D�*A'	�+D�>C�D�C	�D�C	�-D�D�Dc��ddl}ddl}|�|jddd�|���}|�|t
j��dS)Nrrqrc�T�|���o|�d��S)N�AF_��isupperrr��Cs rrzz<GeneralModuleTests.test_addressfamily_enum.<locals>.<lambda>����!�)�)�+�+�=�!�,�,�u�*=�*=�r=��source)r��enum�
_old_convert_�IntEnum�_test_simple_enumrrq)rUr�r��CheckedAddressFamilys    r�test_addressfamily_enumz*GeneralModuleTests.test_addressfamily_enum�si����������#�1�1���o�x�=�=�� 2� � ��
	
���3�V�5I�J�J�J�J�Jr=c��ddl}ddl}|�|jddd�|���}|�|t
j��dS)Nrrtrc�T�|���o|�d��S)N�SOCK_r�r�s rrzz9GeneralModuleTests.test_socketkind_enum.<locals>.<lambda>�s��!�)�)�+�+�?�!�,�,�w�*?�*?�r=r�)r�r�r�r�r�rrt)rUr�r��CheckedSocketKinds    r�test_socketkind_enumz'GeneralModuleTests.test_socketkind_enum�si���������� �.�.���l�H�?�?��/����
	
���0�&�2C�D�D�D�D�Dr=c��ddl}ddl}|�|jddd�|���}|�|t
j��dS)Nr�MsgFlagrc�T�|���o|�d��S)N�MSG_r�r�s rrzz6GeneralModuleTests.test_msgflag_enum.<locals>.<lambda>�s��!�)�)�+�+�>�!�,�,�v�*>�*>�r=r�)r�r�r��IntFlagr�rr�)rUr�r��CheckedMsgFlags    r�test_msgflag_enumz$GeneralModuleTests.test_msgflag_enum�sf�����������+�+���i��>�>��,����
	
���~�v�~�>�>�>�>�>r=c��ddl}ddl}|�|jddd�|���}|�|t
j��dS)Nr�AddressInforc�T�|���o|�d��S)N�AI_r�r�s rrzz:GeneralModuleTests.test_addressinfo_enum.<locals>.<lambda>�r�r=r�)r�r�r�r�r�rr�)rUr�r��CheckedAddressInfos    r�test_addressinfo_enumz(GeneralModuleTests.test_addressinfo_enum�si����������!�/�/���m�X�=�=��0� � ��	
���1�6�3E�F�F�F�F�Fr=)`r\r]r^r�r�r��
skipUnlessr�r�r�r�r�r�r�rFr�r��skipIfr�is_wasir�r?rqrr�r
rr!r$rrr+r6r:r<rBrDrT�cpython_onlyrcr{r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r��is_resource_enabledr�rrrr r$r*r,r6r;rCrGrIrLrQrSrrXr[rbrdrfrkrxr�r�r�r�r�r�r�r�r�r�r�r�r�r_r=rr�r�<s�
���������+�+�+��X����,�.C�D�D�
,�
,�E�D�
,�3�3�3�"�"�"�(6�(6�(6�T��� � � ��X����D��*<�=�=���>�=���X�_�W�_�&E�F�F�
>�
>�G�F�
>��X�����1�3H�I�I��X���3�5R�S�S���T�S�J�I��:v�v�v�&?�?�?�+�+�+�"�X������7�7�9Z�[�[��X������7�7�9Z�[�[�&�&�\�[�\�[�&�$�X������8�8�?�A�A�*�*�A�A�*��X�����)9�:�:�A�C�C�I�I�C�C�I��X�����)9�:�:�A�C�C�G�G�C�C�G��X�����m�4�4�7�9�9�B�B�9�9�B����:�:�:�
��>�>���>�.*F�*F�*F�XG�G�G�2�X������5�5�8�:�:�I�I�:�:�I��X������5�5�8�:�:� � �:�:� �>�X������5�5�8�:�:�<1�<1�:�:�<1�|�X������5�5�8�:�:�M�M�:�:�M�0�X������5�5�8�:�:�#�#�:�:�#�D(�(�(�:>�>�>�A�A�A�7�7�7�
=�
=�
=�,�,�,����(�X����D��*<�=�=�	:�	:�>�=�	:��X����D��*<�=�=��X�����)A�B�B�L�N�N�S�S�N�N�>�=�S�N�N�N�`Q�Q�Q��X��4��4�Y�?�?�1�3�3�
I�
I�3�3�
I����>.�.�.�-�-�-�!�!�!�"G�G�G�	7�	7�	7���� 8�8�8�,�,�,�	7�	7�	7����
��P�P���P��X���3�5S�T�T�U�U�U�T�U��X���3�5S�T�T�I�I�U�T�I�A�A�A��X���3�5S�T�T��X�_�S�\�W�,�.H�I�I��X�_�S�;�<�<��X������8�8�:\�]�]�
O�
O�^�]�=�<�J�I�U�T�
O��X���3�5S�T�T��X������8�:�:�O�O�:�:�U�T�O��X���3�5S�T�T��X�_�S�\�W�,�.H�I�I��X�_�S�;�<�<��X������8�8�:\�]�]�W�W�^�]�=�<�J�I�U�T�W��X���3�5S�T�T��X��#�,�'�1�8�:�:�U�U�:�:�U�T�U�=�=�=�9�9�9� ,�,�,�2�X�����Z�0�0�2L�M�M�8�8�N�M�8�"*�*�*�=�=�=�>K�K�K�L�L�L�I�I�I��X�_�R�W��_�&A�B�B�J�J�C�B�J�F�F�F�
A�
A�
A�K�K�K�E�E�E�?�?�?�G�G�G�G�Gr=r�z!SocketCan required for this test.c�F�eZdZd�Zejeed��d��d���Zd�Z	ejeed��d��d���Z
d�Zd�Zejeed	��d
��d���Z
ejeed��d
��d���ZdS)�BasicCANTestc�N�tjtjtjdSrD)r�AF_CANrrrTs rr�z!BasicCANTest.testCrucialConstants�s���
�
��
�
�����r=�CAN_BCM�&socket.CAN_BCM required for this test.c�F�tjtjtjtjtjtjtjtjtj	tj
tjtjtj
tjtjtjtjtjtjtjtjtjtjtjdSrD)rr��CAN_BCM_TX_SETUP�CAN_BCM_TX_DELETE�CAN_BCM_TX_READ�CAN_BCM_TX_SEND�CAN_BCM_RX_SETUP�CAN_BCM_RX_DELETE�CAN_BCM_RX_READ�CAN_BCM_TX_STATUS�CAN_BCM_TX_EXPIRED�CAN_BCM_RX_STATUS�CAN_BCM_RX_TIMEOUT�CAN_BCM_RX_CHANGED�CAN_BCM_SETTIMER�CAN_BCM_STARTTIMER�CAN_BCM_TX_COUNTEVT�CAN_BCM_TX_ANNOUNCE�CAN_BCM_TX_CP_CAN_ID�CAN_BCM_RX_FILTER_ID�CAN_BCM_RX_CHECK_DLC�CAN_BCM_RX_NO_AUTOTIMER�CAN_BCM_RX_ANNOUNCE_RESUME�CAN_BCM_TX_RESET_MULTI_IDX�CAN_BCM_RX_RTR_FRAMErTs r�testBCMConstantszBasicCANTest.testBCMConstants�s���	���	���� � ����������� � ����� � ��!�!�� � ��!�!��!�!�	����!�!��"�"��"�"��#�#��#�#��#�#��&�&��)�)��)�)��#�#�#�#r=c��tjtjtjtj��5}	ddd��dS#1swxYwYdSrD�rrrrr�s  r�testCreateSocketzBasicCANTest.testCreateSocket���
�]�6�=�&�/�6�>�
J�
J�	�a��	�	�	�	�	�	�	�	�	�	�	�	����	�	�	�	�	�	��A�A�Ac��tjtjtjtj��5}	ddd��dS#1swxYwYdSrD)rrr'r�r�s  r�testCreateBCMSocketz BasicCANTest.testCreateBCMSockets����]�6�=�&�*;�V�^�
L�
L�	�PQ��	�	�	�	�	�	�	�	�	�	�	�	����	�	�	�	�	�	r�c��tjtjtjtj��5}d}|�|��|�|���|��ddd��dS#1swxYwYdS)N)r�)rrrrr�rr�)rUr#�addresss   r�testBindAnyzBasicCANTest.testBindAnys���
�]�6�=�&�/�6�>�
J�
J�	7�a��G�
�F�F�7�O�O�O����Q�]�]�_�_�g�6�6�6�	7�	7�	7�	7�	7�	7�	7�	7�	7�	7�	7�	7����	7�	7�	7�	7�	7�	7s�AB�B�	Bc���tjtjtjtj��5}|�t
d|jd��ddd��dS#1swxYwYdS)N�interface name too long)�xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx)rrrrr:rr�r�s  r�testTooLongInterfaceNamez%BasicCANTest.testTooLongInterfaceNames���
�]�6�=�&�/�6�>�
J�
J�	:�a��"�"�7�,E�#$�6�=�
:�
:�
:�	:�	:�	:�	:�	:�	:�	:�	:�	:�	:�	:�	:����	:�	:�	:�	:�	:�	:s�#A%�%A)�,A)�CAN_RAW_LOOPBACKz/socket.CAN_RAW_LOOPBACK required for this test.c	�~�tjtjtjtj��5}dD]k}|�tjtj|��|�||�tjtj�����l	ddd��dS#1swxYwYdS)N)rr�)	rrrrr��SOL_CAN_RAWr�rr�)rUr#�loopbacks   r�testLoopbackzBasicCANTest.testLoopbacks���]�6�=�&�/�6�>�
J�
J�	O�a�"�
O�
O�����V�/��1H�%�'�'�'�� � ���L�L��!3�V�5L�M�M�O�O�O�O�
O�	O�	O�	O�	O�	O�	O�	O�	O�	O�	O�	O�	O����	O�	O�	O�	O�	O�	Os�A/B2�2B6�9B6�CAN_RAW_FILTERz-socket.CAN_RAW_FILTER required for this test.c	��d\}}tjd||��}tjtjtjtj��5}|�tjtj|��|�	||�
tjtjd����|�tjtjt|����ddd��dS#1swxYwYdS)N)�iz=IIr�)r�packrrrrr�r�rrr�r�)rU�can_id�can_mask�
can_filterr#s     r�
testFilterzBasicCANTest.testFilter$s%��(�����[����9�9�
�
�]�6�=�&�/�6�>�
J�
J�	[�a�
�L�L��+�V�-B�J�O�O�O����Z��L�L��!3�V�5J�A�N�N�
P�
P�
P�
�L�L��+�V�-B�I�j�DY�DY�Z�Z�Z�		[�	[�	[�	[�	[�	[�	[�	[�	[�	[�	[�	[����	[�	[�	[�	[�	[�	[s�B#D�D�DN)r\r]r^r�r�r�rrr�r�r�r�r�r�rr_r=rr�r��sb���������
�X������3�3�A�C�C�$�$�C�C�$�<����X������3�3�A�C�C���C�C��7�7�7�:�:�:��X�����);�<�<�J�L�L�O�O�L�L�O��X�����)9�:�:�H�J�J�[�[�J�J�[�[�[r=r�c��eZdZdd�Zed���Zed���Zd�Zd�Zd�Z	d�Z
d	�Zd
�Ze
jeed��d��d
���Ze
jeed��d��d���ZdS)�CANTestr�c�>�t�||���dSr�)r�rkr�s  rrkzCANTest.__init__3rr=c��t|��}|�dd��}tj|j|||��S)zBuild a CAN frame.r��)r��ljustrrr�)�clsr�data�can_dlcs    r�build_can_framezCANTest.build_can_frame6s;���d�)�)���z�z�!�W�%�%���{�3�,�f�g�t�D�D�Dr=c�X�tj|j|��\}}}|||d|�fS)zDissect a CAN frame.N)rrr�)r�framerrrs     r�dissect_can_framezCANTest.dissect_can_frame=s4��!'�
�c�.?�� G� G��������h�w�h��0�0r=c���|j�|j��\}}|�|j|��|�|d|j��dSr�)r#r�r�r�cfr��rUrrs   r�
testSendFramezCANTest.testSendFrameCsU���6�?�?�4�<�0�0���D������"�%�%�%�����a��$�.�1�1�1�1�1r=c�z�|�dd��|_|j�|j��dS)Nrs�rrr�rrTs r�_testSendFramezCANTest._testSendFrameHs6���&�&�t�-D�E�E�����
�
�d�g�����r=c��|j�|j��\}}|�|j|��dSrD)r#r�r�rrrs   r�testSendMaxFramezCANTest.testSendMaxFrameLs9���6�?�?�4�<�0�0���D������"�%�%�%�%�%r=c�z�|�dd��|_|j�|j��dS)NrsrrTs r�_testSendMaxFramezCANTest._testSendMaxFramePs5���&�&�t�[�9�9�����
�
�d�g�����r=c��|j�|j��\}}|�|j|��|j�|j��\}}|�|j|��dSrD)r#r�r�r�cf1�cf2rs   r�testSendMultiFrameszCANTest.testSendMultiFramesTsj���6�?�?�4�<�0�0���D������2�&�&�&��6�?�?�4�<�0�0���D������2�&�&�&�&�&r=c���|�dd��|_|j�|j��|�dd��|_|j�|j��dS)N�sD3"�s�"3)rr!r�rr"rTs r�_testSendMultiFrameszCANTest._testSendMultiFrames[sc���'�'��.A�B�B�����
�
�d�h�����'�'��o�>�>�����
�
�d�h�����r=r�r�c��|j�|j��\}}|�|j|��|�|��\}}}|�|j|��|�|j|��dSrD)r�r�r�rrrrr)rUrrrrrs      r�_testBCMzCANTest._testBCMbs����8�$�$�T�\�2�2���D������"�%�%�%� $� 6� 6�r� :� :����������f�-�-�-������D�)�)�)�)�)r=c�\�tjtjtjtj��}|�|j��|�|jf��d|_tgd���|_
|�|j|j
��|_tj
}d}d}dx}x}x}}d}	d}
tj|j||||||||	|
�
�
}||jz}|�|��}
|�|
t'|����dS)N�#)����ri"r�)rrr'r�rtr r�r�r�bytesrrrr�rrr�rrr�)rU�bcm�opcoder�r��
ival1_seconds�
ival1_usec�
ival2_seconds�
ival2_usec�
bcm_can_id�nframes�header�header_plus_frame�
bytes_sents              r�testBCMzCANTest.testBCMks(���m�F�M�6�+<�f�n�M�M������	�"�"�"����T�^�%�&�&�&�����,�,�,�-�-��	��&�&�t�{�D�I�>�>����'������BC�C�
�C�
�C�]�Z��
�����T�1����!��!����
�
��#�T�W�,���X�X�/�0�0�
�����S�):�%;�%;�<�<�<�<�<r=Nr�)r\r]r^rk�classmethodrrrrrrr#r'r�r�rrr)r;r_r=rr	r	0sC������D�D�D�D��E�E��[�E��1�1��[�1�
2�2�2�
���&�&�&����'�'�'� � � ��X������3�3�A�C�C�*�*�C�C�*��X������3�3�A�C�C�=�=�C�C�=�=�=r=r	z!CAN ISOTP required for this test.c�~��eZdZ�fd�Zd�Zd�Zejee	d��d��d���Z
d�Zd�Z�xZ
S)	�	ISOTPTestc�H��t��j|i|��d|_dS�Nr~�rjrkr�ros   �rrkzISOTPTest.__init__��*��������$�)�&�)�)�)� ����r=c�f�tjtjtjtjdSrD)rr�rr(r'rTs rr�zISOTPTest.testCrucialConstants�s(���
�
��
�
��������r=c��tjtjtjtj��5}	ddd��dS#1swxYwYdSrDr�r�s  rr�zISOTPTest.testCreateSocket�r�r�r(z(socket.CAN_ISOTP required for this test.c��tjtjtjtj��5}	ddd��dS#1swxYwYdSrD)rrr'r(r�s  r�testCreateISOTPSocketzISOTPTest.testCreateISOTPSocket�����]�6�=�&�*;�V�=M�
N�
N�	�RS��	�	�	�	�	�	�	�	�	�	�	�	����	�	�	�	�	�	r�c�0�tjtjtjtj��5}|�t
d��5|�d��ddd��n#1swxYwYddd��dS#1swxYwYdS)Nr�)r�r�r�)rrr'r(r:rr�r�s  rr�z"ISOTPTest.testTooLongInterfaceName�s���
�]�6�=�&�*;�V�=M�
N�
N�	+�RS��'�'��1J�K�K�
+�
+����)�*�*�*�
+�
+�
+�
+�
+�
+�
+�
+�
+�
+�
+����
+�
+�
+�
+�	+�	+�	+�	+�	+�	+�	+�	+�	+�	+�	+�	+����	+�	+�	+�	+�	+�	+s5�B�A3�'B�3A7	�7B�:A7	�;B�B�Bc���	tjtjtjtj��5}|jddf}|�|��|�|���|��ddd��dS#1swxYwYdS#t$r?}|j	tj
kr|�d|jz��n�Yd}~dSd}~wwxYw)Nr+iVr�)rrr'r(r�r�rr�rr(�ENODEVr��rUr#rr�s    r�testBindzISOTPTest.testBind�s;��
	���v�}�f�.?��AQ�R�R�
8�VW��~�u�e�3�����t����� � ������$�7�7�7�
8�
8�
8�
8�
8�
8�
8�
8�
8�
8�
8�
8����
8�
8�
8�
8�
8�
8���	�	�	��w�%�,�&�&��
�
�E��>�*�+�+�+�+��+�+�+�+�+�+�����	���s;�4B�AB�>B�B�B�B�B�
C!�"4C�C!)r\r]r^rkr�r�r�r�rrrFr�rLrzr{s@rr>r>�s��������!�!�!�!�!��������X������5�5�C�E�E���E�E��+�+�+�������r=r>z!CAN J1939 required for this test.c���eZdZ�fd�Zejeed��d��d���Zejeed��d��d���Z	d�Z
�xZS)�	J1939Testc�H��t��j|i|��d|_dSr@rAros   �rrkzJ1939Test.__init__�rBr=r,z(socket.CAN_J1939 required for this test.c�F�tjtjtjtjtjtjtjtjtj	tj
tjtjtj
tjtjtjtjtjtjtjtjtjtjtjdSrD)rr,�J1939_MAX_UNICAST_ADDR�J1939_IDLE_ADDR�
J1939_NO_ADDR�
J1939_NO_NAME�J1939_PGN_REQUEST�J1939_PGN_ADDRESS_CLAIMED�J1939_PGN_ADDRESS_COMMANDED�J1939_PGN_PDU1_MAX�
J1939_PGN_MAX�J1939_NO_PGN�SO_J1939_FILTER�SO_J1939_PROMISC�SO_J1939_SEND_PRIO�SO_J1939_ERRQUEUE�SCM_J1939_DEST_ADDR�SCM_J1939_DEST_NAME�SCM_J1939_PRIO�SCM_J1939_ERRQUEUE�
J1939_NLA_PAD�J1939_NLA_BYTES_ACKED�J1939_EE_INFO_NONE�J1939_EE_INFO_TX_ABORT�J1939_FILTER_MAXrTs r�testJ1939ConstantszJ1939Test.testJ1939Constants�s���	����%�%����������� � ��(�(��*�*��!�!�������	�������!�!�� � ��"�"��"�"�����!�!�����$�$��!�!��%�%�����r=c��tjtjtjtj��5}	ddd��dS#1swxYwYdSrD)rrr'r,r�s  r�testCreateJ1939SocketzJ1939Test.testCreateJ1939Socket�rGr�c��	tjtjtjtj��5}|jtjtjtjf}|�|��|�	|�
��|��ddd��dS#1swxYwYdS#t$r?}|jtj
kr|�d|jz��n�Yd}~dSd}~wwxYwr�)rrr'r,r�rTrZrSr�rr�rr(rJr�rKs    rrLzJ1939Test.testBind�sG��
	���v�}�f�.?��AQ�R�R�
8�VW��~�v�';�V�=P�RX�Rf�f�����t����� � ������$�7�7�7�
8�
8�
8�
8�
8�
8�
8�
8�
8�
8�
8�
8����
8�
8�
8�
8�
8�
8���	�	�	��w�%�,�&�&��
�
�E��>�*�+�+�+�+��+�+�+�+�+�+�����	���s;�4B7�A'B*�B7�*B.�.B7�1B.�2B7�7
D�4C;�;D)r\r]r^rkr�r�rrrhrjrLrzr{s@rrNrN�s��������!�!�!�!�!��X������5�5�C�E�E� � �E�E� �B�X������5�5�C�E�E���E�E��������r=rNz#RDS sockets required for this test.c� �eZdZd�Zd�Zd�ZdS)�BasicRDSTestc�6�tjtjdSrD)r�AF_RDSr/rTs rr�z!BasicRDSTest.testCrucialConstants�s���
�
��
�
�
�
r=c��tjtjtjd��5}	ddd��dS#1swxYwYdSr�)rr/r0r�s  rr�zBasicRDSTest.testCreateSocket�s��
�]�6�=�&�*?��
C�
C�	�q��	�	�	�	�	�	�	�	�	�	�	�	����	�	�	�	�	�	s
�:�>�>c�<�d}tjtjtjd��5}|�tjtj|��|�tjtj|��ddd��dS#1swxYwYdS)Ni@r)rr/r0r�r��	SO_RCVBUF�	SO_SNDBUF)rUr�r#s   r�testSocketBufferSizez!BasicRDSTest.testSocketBufferSize�s�����
�]�6�=�&�*?��
C�
C�	G�q�
�L�L��*�F�,<�g�F�F�F�
�L�L��*�F�,<�g�F�F�F�	G�	G�	G�	G�	G�	G�	G�	G�	G�	G�	G�	G����	G�	G�	G�	G�	G�	Gs�AB�B�BN)r\r]r^r�r�rtr_r=rrmrm�sF������������G�G�G�G�Gr=rmc���eZdZdd�Z�fd�Zd�Zd�Zd�Zd�Ze	e
j
d��d	���Ze	e
j
d
��d���Zd�Z
d
�Zd�Zd�Z�xZS)�RDSTestr�c�>�t�||���dSr�)r�rkr�s  rrkzRDSTest.__init__		rr=c�x��t�����tj��|_dSrD)rjrVrlr��evtr0s �rrVz
RDSTest.setUp	s'���
���
�
�����?�$�$����r=c��|j�|j��\}}|�|j|��|�|j|��dSrD)rPr�r�rrr��rUrrs   r�testSendAndRecvzRDSTest.testSendAndRecv	sS���Y�'�'���5�5�
��d������D�)�)�)�������-�-�-�-�-r=c�n�d|_|j�|jdt|jf��dS�Nr�r�rr�r�r�rRrTs r�_testSendAndRecvzRDSTest._testSendAndRecv	�0����	������	�1�t�T�Y�&7�8�8�8�8�8r=c��|j�|jtj��\}}|�|j|��|j�|j��\}}|�|j|��dSrD)rPr�r�r�MSG_PEEKrrr{s   r�testPeekzRDSTest.testPeek	sr���Y�'�'���f�o�F�F�
��d������D�)�)�)��Y�'�'���5�5�
��d������D�)�)�)�)�)r=c�n�d|_|j�|jdt|jf��dSr~rrTs r�	_testPeekzRDSTest._testPeek	r�r=�recvmsgc��|j�|j��\}}}}|�|j|��dSrD)rPr�r�rr)rUr�ancdata�	msg_flagsrs     r�testSendAndRecvMsgzRDSTest.testSendAndRecvMsg#	s@��)-��):�):�4�<�)H�)H�&��g�y�$������D�)�)�)�)�)r=�sendmsgc�r�d|_|j�|jgddt|jf��dS)Ns<hello hello hello hello hello hello hello hello hello hello r_r)rr�r�r�rRrTs r�_testSendAndRecvMsgzRDSTest._testSendAndRecvMsg(	s6��"��	�����$�)��b�!�d�D�I�->�?�?�?�?�?r=c��|j�|j��\}}|�|j|��|j�|j��\}}|�|j|��dSrD)rPr�r�r�data1�data2r{s   r�testSendAndRecvMultizRDSTest.testSendAndRecvMulti-	sn���Y�'�'���5�5�
��d������T�*�*�*��Y�'�'���5�5�
��d������T�*�*�*�*�*r=c���d|_|j�|jdt|jf��d|_|j�|jdt|jf��dS)Nsbaconrsegg)r�r�r�r�rRr�rTs r�_testSendAndRecvMultizRDSTest._testSendAndRecvMulti4	sX����
������
�A��d�i�'8�9�9�9���
������
�A��d�i�'8�9�9�9�9�9r=c��tj|jgggd��\}}}|�|j|��|j�|j��\}}|�|j|��dS)Ng@)�selectrPr�r�r�rr)rUrr/r�rrs      r�
testSelectzRDSTest.testSelect;	sp���-����R��S�9�9���1�a��
�
�d�i��#�#�#��Y�'�'���5�5�
��d������D�)�)�)�)�)r=c�n�d|_|j�|jdt|jf��dS)NsselectrrrTs r�_testSelectzRDSTest._testSelectA	s0����	������	�1�t�T�Y�&7�8�8�8�8�8r=r�)r\r]r^rkrVr|r�r�r�r�rr�r�r�r�r�r�rzr{s@rrvrv	s�������D�D�D�D�%�%�%�%�%�.�.�.�
9�9�9�*�*�*�9�9�9��\�&�-��+�+�*�*�,�+�*��\�&�-��+�+�@�@�,�+�@�+�+�+�:�:�:�*�*�*�9�9�9�9�9�9�9r=rvz'QIPCRTR sockets required for this test.c�2�eZdZd�Zd�Zd�Zd�Zd�Zd�ZdS)�BasicQIPCRTRTestc��tjdSrD)rr8rTs rr�z%BasicQIPCRTRTest.testCrucialConstantsI	s������r=c��tjtjtj��5}	ddd��dS#1swxYwYdSrD)rr8r'r�s  rr�z!BasicQIPCRTRTest.testCreateSocketL	s~��
�]�6�,�f�.?�
@�
@�	�A��	�	�	�	�	�	�	�	�	�	�	�	����	�	�	�	�	�	�
�9�=�=c���tjtjtj��5}|�|���dd��ddd��dS#1swxYwYdS�Nr�r)rr8r'rr�r�s  r�testUnboundzBasicQIPCRTRTest.testUnboundP	s���
�]�6�,�f�.?�
@�
@�	4�A����Q�]�]�_�_�Q�/��3�3�3�	4�	4�	4�	4�	4�	4�	4�	4�	4�	4�	4�	4����	4�	4�	4�	4�	4�	4s�/A&�&A*�-A*c�B�tjtjtj��5}tj||���d���|�|���dd��ddd��dS#1swxYwYdS)NrrZr�)rr8r'rrQr��assertNotEqualr�s  r�testBindSockzBasicQIPCRTRTest.testBindSockT	s���
�]�6�,�f�.?�
@�
@�	7�A��#�A�A�M�M�O�O�A�,>�?�?�?�?�����
�
���� 2�A�6�6�6�	7�	7�	7�	7�	7�	7�	7�	7�	7�	7�	7�	7����	7�	7�	7�	7�	7�	7s�AB�B�Bc���tjtjtj��5}|�tt
j|d���ddd��dS#1swxYwYdS)NrXrZ)rr8r'r�rrrQr�s  r�testInvalidBindSockz$BasicQIPCRTRTest.testInvalidBindSockY	s���
�]�6�,�f�.?�
@�
@�	L�A����g�}�'>����K�K�K�	L�	L�	L�	L�	L�	L�	L�	L�	L�	L�	L�	L����	L�	L�	L�	L�	L�	Ls�)A � A$�'A$c��tjtjtj��5}|�d��|�|���dd��ddd��dS#1swxYwYdS)N)�{r�r�r)rr8r'r�r�r�r�s  r�testAutoBindSockz!BasicQIPCRTRTest.testAutoBindSock]	s���
�]�6�,�f�.?�
@�
@�	7�A�
�I�I�j�!�!�!�����
�
���� 2�A�6�6�6�	7�	7�	7�	7�	7�	7�	7�	7�	7�	7�	7�	7����	7�	7�	7�	7�	7�	7s�AA;�;A?�A?N)	r\r]r^r�r�r�r�r�r�r_r=rr�r�E	sq������������4�4�4�7�7�7�
L�L�L�7�7�7�7�7r=r�c�&�eZdZd�Zd�Zd�Zd�ZdS)�BasicVSOCKTestc��tjdSrD)rr�rTs rr�z#BasicVSOCKTest.testCrucialConstantsg	s
������r=c���tjtjtjtjtjtjtjtjdSrD)	r�SO_VM_SOCKETS_BUFFER_SIZE�SO_VM_SOCKETS_BUFFER_MIN_SIZE�SO_VM_SOCKETS_BUFFER_MAX_SIZEr��VMADDR_PORT_ANY�VMADDR_CID_HOST�VM_SOCKETS_INVALID_VERSIONr
rTs r�testVSOCKConstantsz!BasicVSOCKTest.testVSOCKConstantsj	sP���(�(��,�,��,�,�����������)�)��-�-�-�-r=c��tjtjtj��5}	ddd��dS#1swxYwYdSrD)rr�r@r�s  rr�zBasicVSOCKTest.testCreateSockett	s}��
�]�6�?�F�,>�
?�
?�	�1��	�	�	�	�	�	�	�	�	�	�	�	����	�	�	�	�	�	r�c� �tjtjtj��5}|�tjtj��}|�tjtj��}|�tjtj��}|�tjtj|dz��|�tjtj|dz��|�tjtj|dz��|�|dz|�tjtj����|�|dz|�tjtj����|�|dz|�tjtj����ddd��dS#1swxYwYdS�Nr�)	rr�r@r�r�r�r�r�r)rUr#�orig_maxrA�orig_mins     rrtz#BasicVSOCKTest.testSocketBufferSizex	s%��
�]�6�?�F�,>�
?�
?�	D�1��|�|�F�O�$*�$H�J�J�H��<�<��� &� @�B�B�D��|�|�F�O�$*�$H�J�J�H�
�L�L����=�x�!�|�
M�
M�
M�
�L�L����9�4�!�8�
E�
E�
E�
�L�L����=�x�!�|�
M�
M�
M�
���X��\��\�\�&�/�#�A�C�C�
D�
D�
D�
���T�A�X��\�\�&�/�#�=�?�?�
@�
@�
@�
���X��\��\�\�&�/�#�A�C�C�
D�
D�
D�+	D�	D�	D�	D�	D�	D�	D�	D�	D�	D�	D�	D����	D�	D�	D�	D�	D�	Ds�GH�H�
HN)r\r]r^r�r�r�rtr_r=rr�r�b	sU������
���.�.�.����D�D�D�D�Dr=r�z)Bluetooth sockets required for this test.c� �eZdZd�Zd�Zejejdkd��d���Z	ejejdkd��d���Z
ejejdkpej�d��d	��d
���ZdS)�BasicBluetoothTestc�,�tjtjtjtjt
jdkrQtjtjtj	t
j�
d��stjdSdSdS)Nr�re)r�
BDADDR_ANY�BDADDR_LOCALr?rAr?rq�BTPROTO_HCI�SOL_HCI�
BTPROTO_L2CAPrr�BTPROTO_SCOrTs r�testBluetoothConstantsz)BasicBluetoothTest.testBluetoothConstants�	s����������������<�7�"�"�����N�N�� � ��<�*�*�9�5�5�
#��"�"�"�"�
#�"�

#�
#r=c��tjtjtjtj��5}	ddd��dS#1swxYwYdSrD)rr?r@rAr�s  r�testCreateRfcommSocketz)BasicBluetoothTest.testCreateRfcommSocket�	s���
�]�6�.��0B�F�DY�
Z�
Z�	�^_��	�	�	�	�	�	�	�	�	�	�	�	����	�	�	�	�	�	r�r�z&windows does not support L2CAP socketsc��tjtjtjtj��5}	ddd��dS#1swxYwYdSrD)rr?r0r�r�s  r�testCreateL2capSocketz(BasicBluetoothTest.testCreateL2capSocket�	s���
�]�6�.��0E�v�G[�
\�
\�	�`a��	�	�	�	�	�	�	�	�	�	�	�	����	�	�	�	�	�	r�z$windows does not support HCI socketsc��tjtjtjtj��5}	ddd��dS#1swxYwYdSrD)rr?rr�r�s  r�testCreateHciSocketz&BasicBluetoothTest.testCreateHciSocket�	s���
�]�6�.����AS�
T�
T�	�XY��	�	�	�	�	�	�	�	�	�	�	�	����	�	�	�	�	�	r�rez.windows and freebsd do not support SCO socketsc��tjtjtjtj��5}	ddd��dS#1swxYwYdSrD)rr?r0r�r�s  r�testCreateScoSocketz&BasicBluetoothTest.testCreateScoSocket�	s����]�6�.��0E�v�GY�
Z�
Z�	�^_��	�	�	�	�	�	�	�	�	�	�	�	����	�	�	�	�	�	r�N)
r\r]r^r�r�r�r�r?rqr�r�rrr�r_r=rr�r��	s�������#�#�#�����X�_�S�\�W�,�.V�W�W���X�W���X�_�S�\�W�,�.T�U�U���V�U���X�_�S�\�W�,�R���0G�0G�	�0R�0R�E�G�G���G�G���r=r�c���eZdZdd�Zd�Zd�Zd�Zd�Zd�Zd�Z	d	�Z
d
�Zd�Zd�Z
d
�Zd�Zd�Zd�Zd�Zd�Zeje��Zejd���Zd�Zd�ZdS)�BasicTCPTestr�c�>�t�||���dSr��rrkr�s  rrkzBasicTCPTest.__init__�	�!���$�$�T�j�$�A�A�A�A�Ar=c�p�|j�d��}|�|t��dSr)rrrrrs  r�testRecvzBasicTCPTest.testRecv�	s3���m� � ��&�&������c�"�"�"�"�"r=c�D�|j�t��dSrD�rrrrTs r�	_testRecvzBasicTCPTest._testRecv�	�������C� � � � � r=c���|j�tt��dz
��}|j�d��}||z}|�|t��dS�N�r)rrr�rr)rU�seg1�seg2rs    r�testOverFlowRecvzBasicTCPTest.testOverFlowRecv�	s[���}�!�!�#�c�(�(�Q�,�/�/���}�!�!�$�'�'���T�k������c�"�"�"�"�"r=c�D�|j�t��dSrDr�rTs r�_testOverFlowRecvzBasicTCPTest._testOverFlowRecv�	r�r=c�v�|j�d��\}}|�|t��dSr)rr�rr�rUrrs   r�testRecvFromzBasicTCPTest.testRecvFrom�	s7���M�*�*�4�0�0�	��T�����c�"�"�"�"�"r=c�D�|j�t��dSrDr�rTs r�
_testRecvFromzBasicTCPTest._testRecvFrom�	r�r=c���|j�tt��dz
��\}}|j�d��\}}||z}|�|t��dSr�)rr�r�rr)rUr�rr�rs     r�testOverFlowRecvFromz!BasicTCPTest.testOverFlowRecvFrom�	sc���]�+�+�C��H�H�Q�J�7�7�
��d��]�+�+�D�1�1�
��d��T�k������c�"�"�"�"�"r=c�D�|j�t��dSrDr�rTs r�_testOverFlowRecvFromz"BasicTCPTest._testOverFlowRecvFrom�	r�r=c�~�d}	|j�d��}|sn||z
}�#|�|d��dS)Nr=r�r�ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff)rrr)rUr�reads   r�testSendAllzBasicTCPTest.testSendAll�	sX����	��=�%�%�d�+�+�D��
���4�K�C�		�
	
����k�*�*�*�*�*r=c�>�d}|j�|��dS)Nr�)rr)rU�	big_chunks  r�_testSendAllzBasicTCPTest._testSendAll�	s#���	�����y�)�)�)�)�)r=c�`�|j���}tj|tjtj��}|�|j��|�|tj��|�	d��}|�
|t��dSr)rr�r�fromfdrOr@rtr r�rrr)rUrurMrs    r�
testFromFdzBasicTCPTest.testFromFd�	s���
�]�
!�
!�
#�
#���}�R����1C�D�D������
�#�#�#����d�F�M�2�2�2��i�i��o�o������c�"�"�"�"�"r=c�D�|j�t��dSrDr�rTs r�_testFromFdzBasicTCPTest._testFromFd�	r�r=c���|j���}|�|j��|�d��}|�|t��dSr)r�duprtr rrr)rUrMrs   r�testDupzBasicTCPTest.testDup�	sT���}� � �"�"������
�#�#�#��i�i��o�o������c�"�"�"�"�"r=c�D�|j�t��dSrDr�rTs r�_testDupzBasicTCPTest._testDup
r�r=c��|j�d��}|�|t��|j���dSr)rrrrr�r�rs  r�testShutdownzBasicTCPTest.testShutdown
sG���m� � ��&�&������c�"�"�"�	
�	�������r=c�x�|j�t��|j�d��dSr�)rrrr�rTs r�
_testShutdownzBasicTCPTest._testShutdown
s4������C� � � ������"�"�"�"�"r=c�>�ddl}|j�t��|�t
|jj|jdz��|�t
|jjd|jdzz��|j�d��dS)Nrr�r�)	r[rrrr�rNr�r]�UINT_MAX�rUr[s  r�_testShutdown_overflowz#BasicTCPTest._testShutdown_overflow
s�����������C� � � ����-���)@�#�+�a�/�	1�	1�	1����-���)@��y�1�A�5�6�	8�	8�	8������"�"�"�"�"r=c�<�|j���}|j���}|�||��|�|jj��|�t|jjd��|j�	��tj
tjtj|���}|�
|j	��|�d��}|�|t��dS)Nrr�)rr�rorr��_closedr�rrr rrOr@rtr)rUr�rrMrs     r�
testDetachzBasicTCPTest.testDetach!
s�����%�%�'�'���M� � �"�"������F�#�#�#�����
�-�.�.�.����'�4�=�#5�t�<�<�<��
�������}�V�^�V�-?��J�J�J������
�#�#�#��i�i��o�o������c�"�"�"�"�"r=c�D�|j�t��dSrDr�rTs r�_testDetachzBasicTCPTest._testDetach1
r�r=Nr�)r\r]r^rkr�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�rr��testShutdown_overflowrrrr_r=rr�r��	sl������B�B�B�B�#�#�#�
!�!�!�#�#�#�!�!�!�#�#�#�
!�!�!�#�#�#�!�!�!�+�+�+�*�*�*�#�#�#�!�!�!�#�#�#�!�!�!����#�#�#�1�G�0��>�>����#�#���#�#�#�#� !�!�!�!�!r=r�c�:�eZdZd
d�Zd�Zd�Zd�Zd�Zd�Zd�Z	d	S)�BasicUDPTestr�c�>�t�||���dSr�)r�rkr�s  rrkzBasicUDPTest.__init__7
rr=c��|j�tt����}|�|t��dSrD�rPrr�rrrs  r�testSendtoAndRecvzBasicUDPTest.testSendtoAndRecv:
�7���i�n�n�S��X�X�&�&������c�"�"�"�"�"r=c�`�|j�tdt|jf��dSr��r�r�rr�rRrTs r�_testSendtoAndRecvzBasicUDPTest._testSendtoAndRecv?
�'�������Q��t�y� 1�2�2�2�2�2r=c��|j�tt����\}}|�|t��dSrD�rPr�r�rrr�s   rr�zBasicUDPTest.testRecvFromB
�=���I�&�&�s�3�x�x�0�0�	��T�����c�"�"�"�"�"r=c�`�|j�tdt|jf��dSr�rrTs rr�zBasicUDPTest._testRecvFromG
rr=c�R�|�t|jjd��dS�NrW�r�r�rPr�rTs r�testRecvFromNegativez!BasicUDPTest.testRecvFromNegativeJ
�%�����*�d�i�&8�"�=�=�=�=�=r=c�`�|j�tdt|jf��dSr�rrTs r�_testRecvFromNegativez"BasicUDPTest._testRecvFromNegativeN
rr=Nr��
r\r]r^rkrrr�r�rrr_r=rrr5
s�������D�D�D�D�#�#�#�
3�3�3�#�#�#�
3�3�3�>�>�>�3�3�3�3�3r=rc�:�eZdZd
d�Zd�Zd�Zd�Zd�Zd�Zd�Z	d	S)�BasicUDPLITETestr�c�>�t�||���dSr�)r�rkr�s  rrkzBasicUDPLITETest.__init__V
s!��!�*�*�4�J�*�G�G�G�G�Gr=c��|j�tt����}|�|t��dSrDrrs  rrz"BasicUDPLITETest.testSendtoAndRecvY
r
r=c�`�|j�tdt|jf��dSr�rrTs rrz#BasicUDPLITETest._testSendtoAndRecv^
rr=c��|j�tt����\}}|�|t��dSrDrr�s   rr�zBasicUDPLITETest.testRecvFroma
rr=c�`�|j�tdt|jf��dSr�rrTs rr�zBasicUDPLITETest._testRecvFromf
rr=c�R�|�t|jjd��dSrrrTs rrz%BasicUDPLITETest.testRecvFromNegativei
rr=c�`�|j�tdt|jf��dSr�rrTs rrz&BasicUDPLITETest._testRecvFromNegativem
rr=Nr�rr_r=rrrR
s�������H�H�H�H�#�#�#�
3�3�3�#�#�#�
3�3�3�>�>�>�3�3�3�3�3r=rc���eZdZejZ�fd�Zd�ZdZd�Z	d�Z
d�Zd�ZdZ
d	D]Ze
eeed��zZ
�dZdZdZdd�Z�xZS)
�SendrecvmsgBasec�x��tj��|_t�����dSrD)rlr��
misc_eventrjrVr0s �rrVzSendrecvmsgBase.setUp�
s'���#�/�+�+���
���
�
�����r=c�6�|j�|��SrD)�cli_sockrrs  r�sendToServerzSendrecvmsgBase.sendToServer�
s���}�!�!�#�&�&�&r=r_c�Z�|jj||jt|��d�z�SrD)r,r��sendmsg_to_server_defaultsr��rUrps  r�sendmsgToServerzSendrecvmsgBase.sendmsgToServer�
s4��
%�t�}�$��T�4�S��Y�Y�Z�Z�@�@�C�	Cr=c�L�|j|g|�R�}|�|��|SrD)r��registerRecvmsgResult)rUrMr�rp�results     r�	doRecvmsgzSendrecvmsgBase.doRecvmsg�
s6�����g�-��-�-�-���"�"�6�*�*�*��
r=c��dSrDr_�rUr4s  rr3z%SendrecvmsgBase.registerRecvmsgResult�
s	��	
�r=c�2�|�||��dSrD�r�rU�addr1�addr2s   r�checkRecvmsgAddressz#SendrecvmsgBase.checkRecvmsgAddress�
s ��	
�����&�&�&�&�&r=r)�
MSG_CTRUNC�MSG_OOBNc�L�|j}|j}|r||jz}||jz}n|�||jz}||jz}||z}||z}||z}||z}||z|z}|r"t	d�|�����||z|z}	|�||	z||	z��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)
rUr��eor�checkset�
checkunset�ignore�
defaultset�defaultunset�inbothrRs
          r�
checkFlagszSendrecvmsgBase.checkFlags�
s���8�.�
��2���	9��$�6�6�J��D�<�<�L�L�
�_��$�:�:�J��D�8�8�L�	�z�k�!�
���	�!��	�J����l�"�
��J�&�&��0���	5��%�%+�V�F�^�^�5�5�
5��:�%�&��0��������x�$��7�7�7�7�7r=)Nrrr)r\r]r^r�LOOPBACK_TIMEOUT�fail_timeoutrVr-r/r1r5r3r=rBr�r�rrArCrDrMrzr{s@rr(r(�
s��������
�+�L������'�'�'�"$��C�C�C����
�
�
�'�'�'���)�;�;���'�'�&�$��":�":�:����� ��#$��48�48�48�48�48�48�48�48r=r(c��eZdZd�ZdS)�RecvmsgIntoMixinc�*�t|��}|j|gg|�R�}|�|��|�|dd��|�|d|��t|d|d���f|dd�zSr)r��recvmsg_intor3�assertGreaterEqual�assertLessEqualr/)rUrMr�rp�bufr4s      rr5zRecvmsgIntoMixin.doRecvmsgs����� � ��"��"�C�5�0�4�0�0�0���"�"�6�*�*�*�����q�	�1�-�-�-����V�A�Y��0�0�0��c�*�6�!�9�*�o�&�&�(�6�!�"�"�:�5�5r=N)r\r]r^r5r_r=rrQrQs#������6�6�6�6�6r=rQc�.��eZdZe�fd���Z�xZS)�SendrecvmsgDgramFlagsBasec�D��t��jtjzSrD)rjrDr�	MSG_TRUNCr0s �rrDz5SendrecvmsgDgramFlagsBase.msg_flags_non_eor_indicators����w�w�2�V�5E�E�Er=)r\r]r^�propertyrDrzr{s@rrXrXsM��������F�F�F�F��X�F�F�F�F�Fr=rXc�.��eZdZe�fd���Z�xZS)�SendrecvmsgSCTPFlagsBasec�D��t��jtjzSrD)rjrCr�MSG_EORr0s �rrCz0SendrecvmsgSCTPFlagsBase.msg_flags_eor_indicators����w�w�.���?�?r=)r\r]r^r[rCrzr{s@rr]r]sM��������@�@�@�@��X�@�@�@�@�@r=r]c�V�eZdZed���Zed���Zed���Zd�ZdS)�SendrecvmsgConnectionlessBasec��|jSrD)rPrTs r�	serv_sockz'SendrecvmsgConnectionlessBase.serv_sock#s
���y�r=c��|jSrD)r�rTs rr,z&SendrecvmsgConnectionlessBase.cli_sock's	���x�r=c��ggd|jfSr�)r+rTs rr/z8SendrecvmsgConnectionlessBase.sendmsg_to_server_defaults+s���B��4�>�*�*r=c�B�|j�||j��SrD)r,r�r+rs  rr-z*SendrecvmsgConnectionlessBase.sendToServer/s���}�#�#�C���8�8�8r=N)r\r]r^r[rcr,r/r-r_r=rrarast������
����X������X���+�+��X�+�9�9�9�9�9r=rac�@�eZdZed���Zed���Zd�ZdS)�SendrecvmsgConnectedBasec��|jSrD)rrTs rrcz"SendrecvmsgConnectedBase.serv_sock9s
���}�r=c��|jSrD)rrTs rr,z!SendrecvmsgConnectedBase.cli_sock=s
���~�r=c��dSrDr_r:s   rr=z,SendrecvmsgConnectedBase.checkRecvmsgAddressA�	��	
�r=N)r\r]r^r[rcr,r=r_r=rrhrh3sY����������X������X��
�
�
�
�
r=rhc���eZdZ�fd�Z�xZS)�SendrecvmsgServerTimeoutBasec���t�����|j�|j��dSrD)rjrVrcr�rOr0s �rrVz"SendrecvmsgServerTimeoutBase.setUpJs3���
���
�
������!�!�$�"3�4�4�4�4�4r=)r\r]r^rVrzr{s@rrnrnGs8�������5�5�5�5�5�5�5�5�5r=rnc���eZdZd�Zd�Zd�Zd�Zd�Zd�Zd�Z	d�Z
d	�Zd
�Zd�Z
d�Zd
�Zd�Zeed��d���Zejd���Zd�Zd�Zd�Zd�ZdS)�SendmsgTestsc��|�|j�tt����t��dSrD�rrcrr�rrTs r�testSendmsgzSendmsgTests.testSendmsgS�4�������,�,�S��X�X�6�6��<�<�<�<�<r=c��|�|�tg��tt����dSrD�rr1rr�rTs r�_testSendmsgzSendmsgTests._testSendmsgWs4������-�-�s�e�4�4�c�#�h�h�?�?�?�?�?r=c��|�|j�tt����t��dSrDrsrTs r�testSendmsgDataGeneratorz%SendmsgTests.testSendmsgDataGeneratorZrur=c��|�|�d�tfD����tt����dS)Nc3�K�|]}|V��dSrDr_r�s  rr�z9SendmsgTests._testSendmsgDataGenerator.<locals>.<genexpr>_s"����.@�.@�Q�q�.@�.@�.@�.@�.@�.@r=rwrTs r�_testSendmsgDataGeneratorz&SendmsgTests._testSendmsgDataGenerator^sN������-�-�.@�.@�3�%�.@�.@�.@�A�A��S���	#�	#�	#�	#�	#r=c��|�|j�tt����t��dSrDrsrTs r�testSendmsgAncillaryGeneratorz*SendmsgTests.testSendmsgAncillaryGeneratorbrur=c��|�|�tgd�dD����tt����dS)Nc3�K�|]}|V��dSrDr_r�s  rr�z>SendmsgTests._testSendmsgAncillaryGenerator.<locals>.<genexpr>gs����_�_�A�a�_�_�_�_�_�_r=r_rwrTs r�_testSendmsgAncillaryGeneratorz+SendmsgTests._testSendmsgAncillaryGeneratorfsK������-�-�s�e�_�_��_�_�_�E�E��S���	#�	#�	#�	#�	#r=c��|�|j�tt����t��dSrDrsrTs r�testSendmsgArrayzSendmsgTests.testSendmsgArrayjrur=c��|�|�tjdt��g��t	t����dS)N�B)rr1�arrayrr�rTs r�_testSendmsgArrayzSendmsgTests._testSendmsgArraynsL������-�-�u�{�3��/D�/D�.E�F�F��S���	#�	#�	#�	#�	#r=c��|�|j�tt����t��dSrDrsrTs r�testSendmsgGatherzSendmsgTests.testSendmsgGatherrrur=c��|�|�tdd�tdd�g��tt����dS�Nr�rwrTs r�_testSendmsgGatherzSendmsgTests._testSendmsgGathervsG������-�-�s�2�A�2�w��A�B�B��.@�A�A�3�s�8�8�L�L�L�L�Lr=c�b�|�|j�d��d��dS�NrY�done�rrcrrTs r�testSendmsgBadArgszSendmsgTests.testSendmsgBadArgsy�.�������,�,�T�2�2�G�<�<�<�<�<r=c	��|�t|jj��|�t|jd��|�t|jt����|�t|jt��g��|�t|jtt��g��|�t|jtgt����|�t|jtggt����|�t|jtggdt����|�d��dS)Nsnot in an iterablerr�)r�r�r,r�r1�objectrr-rTs r�_testSendmsgBadArgsz SendmsgTests._testSendmsgBadArgs}sU�����)�T�]�%:�;�;�;����)�T�%9�/�	1�	1�	1����)�T�%9� �(�(�	$�	$�	$����)�T�%9�!�8�8�*�	&�	&�	&����)�T�%9�����/�	+�	+�	+����)�T�%9��%����	+�	+�	+����)�T�%9��%��V�X�X�	/�	/�	/����)�T�%9��%��Q����	2�	2�	2����'�"�"�"�"�"r=c�b�|�|j�d��d��dSr�r�rTs r�testSendmsgBadCmsgzSendmsgTests.testSendmsgBadCmsg�r�r=c	��|�t|jtgt	��g��|�t|jtgt	��ddfg��|�t|jtgdt	��dfg��|�t|jtgddt	��fg��|�t|jtgdg��|�t|jtgdg��|�d��dS)Nr�data)rr)rrr�rZr��r�r�r1rr�r-rTs r�_testSendmsgBadCmsgz SendmsgTests._testSendmsgBadCmsg�s6�����)�T�%9��%�&�(�(��	-�	-�	-����)�T�%9��%�6�8�8�Q��"8�!9�	;�	;�	;����)�T�%9��%�1�f�h�h��"8�!9�	;�	;�	;����)�T�%9��%�1�a����"2�!3�	5�	5�	5����)�T�%9��%�&��	+�	+�	+����)�T�%9��%�"5�!6�	8�	8�	8����'�"�"�"�"�"r=�
CMSG_SPACEc�b�|�|j�d��d��dSr�r�rTs r�testSendmsgBadMultiCmsgz$SendmsgTests.testSendmsgBadMultiCmsg�s0��	
�����,�,�T�2�2�G�<�<�<�<�<r=c���|�t|jtggd���|�t|jtgdt	��g��|�d��dS)N�rrr=r�r�rTs r�_testSendmsgBadMultiCmsgz%SendmsgTests._testSendmsgBadMultiCmsg�su�����)�T�%9��%����	.�	.�	.����)�T�%9��%�+�v�x�x�!8�	:�	:�	:����'�"�"�"�"�"r=c�b�|�|j�d��d��dSr�r�rTs r�testSendmsgExcessCmsgRejectz(SendmsgTests.testSendmsgExcessCmsgReject�s0��	
�����,�,�T�2�2�G�<�<�<�<�<r=c�8�ttd��so|�t��5}|�t
gddg��ddd��n#1swxYwY|�|jj��|�	d��dS)Nr�r�r�)
rrr�rr1r�assertIsNoner�r(r-�rUr�s  r�_testSendmsgExcessCmsgRejectz)SendmsgTests._testSendmsgExcessCmsgReject�s����v�|�,�,�	2��"�"�7�+�+�
H�r��$�$�c�U�[�+�,F�G�G�G�
H�
H�
H�
H�
H�
H�
H�
H�
H�
H�
H����
H�
H�
H�
H����b�l�0�1�1�1����'�"�"�"�"�"s�A�A�"Ac��dSrDr_rTs r�testSendmsgAfterClosez"SendmsgTests.testSendmsgAfterClose�s���r=c��|j���|�t|jt
g��dSrD)r,r r�rr1rrTs r�_testSendmsgAfterClosez#SendmsgTests._testSendmsgAfterClose�s9���
���������'�4�#7�#��?�?�?�?�?r=N)r\r]r^rtrxrzr}rr�r�r�r�r�r�r�r�r�r�rr�r~r�r�r�r�r�r_r=rrqrqOst������=�=�=�@�@�@�=�=�=�#�#�#�=�=�=�#�#�#�=�=�=�#�#�#�=�=�=�M�M�M�=�=�=�#�#�#�$=�=�=�
#�
#�
#��\�&�,�'�'�=�=�(�'�=�
�(�#�#�)�(�#�=�=�=�
#�#�#�
�
�
�@�@�@�@�@r=rqc�~�eZdZd�Zd�Zd�Zd�Zeej	dvd��d���Z
e
jd���Zd	S)
�SendmsgStreamTestsc��|�|j�tt����t��dSrDrsrTs r�testSendmsgExplicitNoneAddrz.SendmsgStreamTests.testSendmsgExplicitNoneAddr�rur=c��|�|�tggdd��tt����dSr�rwrTs r�_testSendmsgExplicitNoneAddrz/SendmsgStreamTests._testSendmsgExplicitNoneAddr�s:������-�-�s�e�R��D�A�A�3�s�8�8�L�L�L�L�Lr=c���|�|j�d��d��|�|j�|j�����dS�Nr�aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa�rG�rrcrr�r*r�rOrTs r�testSendmsgTimeoutz%SendmsgStreamTests.testSendmsgTimeout�sV�������,�,�S�1�1�8�<�<�<������,�,�T�5F�,�G�G�H�H�H�H�Hr=c�L�	|j�d��		|�dg���#t$rYn,t
$r }|jtjkr�Yd}~nd}~wwxYw|j�	��dS#|j�	��wxYw)N���Q��?Tr�)
r,r�r1r�rrr(�ENOMEMr*r��rUr�s  r�_testSendmsgTimeoutz&SendmsgStreamTests._testSendmsgTimeout�s���	"��M�$�$�T�*�*�*�
5�5��(�(�(��4�4�4�5���
�
�
����
�
�
��9���,�,��-�,�,�,�,�����
����
�O���!�!�!�!�!��D�O���!�!�!�!���s7�B�5�
A*�B�	A*�
A%� B�%A*�*B�B#>rhz<MSG_DONTWAIT not known to work on this platform when sendingc���|�|j�d��d��|�|j�|j�����dSr�r�rTs r�testSendmsgDontWaitz&SendmsgStreamTests.testSendmsgDontWait�sX��
	
�����,�,�S�1�1�8�<�<�<������,�,�T�5F�,�G�G�H�H�H�H�Hr=c��	|�t��5}	|�dggtj���##1swxYwY|�|jjtjtj	tj
f��|j���dS#|j���wxYw)NTr�)
r�rr1r�MSG_DONTWAITr�r�r(�EAGAIN�EWOULDBLOCKr�r*r�r�s  r�_testSendmsgDontWaitz'SendmsgStreamTests._testSendmsgDontWait�s���		"��"�"�7�+�+�
N�r�N��(�(�(��R��9L�M�M�M�N�
N�
N�
N�
N����
N�
N�
N�
N�

�M�M�"�,�,� �<��):�E�L�I�
K�
K�
K�
�O���!�!�!�!�!��D�O���!�!�!�!���s)�B(�%A�A�B(�A�	AB(�(CN)
r\r]r^r�r�r�r�r�r?rqr�r~r�r_r=rr�r��s�������=�=�=�M�M�M�I�I�I�
"�"�"�.��c�l�)�3� �!�!�I�I�!�!�I�
�$�
"�
"�%�$�
"�
"�
"r=r�c��eZdZd�Zd�ZdS)�SendmsgConnectionlessTestsc��dSrDr_rTs r�testSendmsgNoDestAddrz0SendmsgConnectionlessTests.testSendmsgNoDestAddrrlr=c��|�t|jjtg��|�t|jjtggdd��dSr�)r�rr,r�rrTs r�_testSendmsgNoDestAddrz1SendmsgConnectionlessTests._testSendmsgNoDestAddr
s^�����'�4�=�#8��%�	!�	!�	!����'�4�=�#8��%��Q��	.�	.�	.�	.�	.r=N)r\r]r^r�r�r_r=rr�r�s2������

�
�
�
.�.�.�.�.r=r�c��eZdZd�Zd�Zd�Zd�Zd�Zd�Zd�Z	d�Z
d	�Zd
�Zd�Z
d�Zd
�Zd�Zd�Zd�Zeed��d���Zejd���Zeejd��d���Zejd���ZdS)�RecvmsgGenericTestsc�0�|�|jtt����\}}}}|�|t��|�||j��|�|g��|�|d���dS�NT�rF�r5rcr�rrr=r�rM�rUrr�r�rs     r�testRecvmsgzRecvmsgGenericTests.testRecvmsgs���$(�N�N�4�>�3�s�8�8�$L�$L�!��W�e�T�����c�"�"�"�� � ��t�}�5�5�5�����"�%�%�%�����4��(�(�(�(�(r=c�:�|�t��dSrD�r-rrTs r�_testRecvmsgz RecvmsgGenericTests._testRecvmsg ������#�����r=c�4�|�|jtt��dd��\}}}}|�|t��|�||j��|�|g��|�|d���dS)NrTr�r�r�s     r�testRecvmsgExplicitDefaultsz/RecvmsgGenericTests.testRecvmsgExplicitDefaults#s���$(�N�N�4�>�36�s�8�8�Q��%C�%C�!��W�e�T�����c�"�"�"�� � ��t�}�5�5�5�����"�%�%�%�����4��(�(�(�(�(r=c�:�|�t��dSrDr�rTs r�_testRecvmsgExplicitDefaultsz0RecvmsgGenericTests._testRecvmsgExplicitDefaults,r�r=c�6�|�|jtt��dz��\}}}}|�|t��|�||j��|�|g��|�|d���dS)NrZTr�r�r�s     r�testRecvmsgShorterz&RecvmsgGenericTests.testRecvmsgShorter/s���$(�N�N�4�>�36�s�8�8�b�=�%B�%B�!��W�e�T�����c�"�"�"�� � ��t�}�5�5�5�����"�%�%�%�����4��(�(�(�(�(r=c�:�|�t��dSrDr�rTs r�_testRecvmsgShorterz'RecvmsgGenericTests._testRecvmsgShorter8r�r=c�F�|�|jtt��dz
��\}}}}|�|tdd���|�||j��|�|g��|�|d���dS)Nr����Fr�r�r�s     r�testRecvmsgTruncz$RecvmsgGenericTests.testRecvmsgTrunc;s���$(�N�N�4�>�36�s�8�8�a�<�%A�%A�!��W�e�T�����c�#�2�#�h�'�'�'�� � ��t�}�5�5�5�����"�%�%�%�����5��)�)�)�)�)r=c�:�|�t��dSrDr�rTs r�_testRecvmsgTruncz%RecvmsgGenericTests._testRecvmsgTruncDr�r=c�2�|�|jtt��d��\}}}}|�|t��|�||j��|�|g��|�|d���dS)Nr�Tr�r�r�s     r�testRecvmsgShortAncillaryBufz0RecvmsgGenericTests.testRecvmsgShortAncillaryBufGs���$(�N�N�4�>�36�s�8�8�Q�%@�%@�!��W�e�T�����c�"�"�"�� � ��t�}�5�5�5�����"�%�%�%�����4��(�(�(�(�(r=c�:�|�t��dSrDr�rTs r�_testRecvmsgShortAncillaryBufz1RecvmsgGenericTests._testRecvmsgShortAncillaryBufPr�r=c�2�|�|jtt��d��\}}}}|�|t��|�||j��|�|g��|�|d���dS)N�(Tr�r�r�s     r�testRecvmsgLongAncillaryBufz/RecvmsgGenericTests.testRecvmsgLongAncillaryBufSs���$(�N�N�4�>�36�s�8�8�U�%D�%D�!��W�e�T�����c�"�"�"�� � ��t�}�5�5�5�����"�%�%�%�����4��(�(�(�(�(r=c�:�|�t��dSrDr�rTs r�_testRecvmsgLongAncillaryBufz0RecvmsgGenericTests._testRecvmsgLongAncillaryBuf\r�r=c��|j���|�t|j|jd��dSr)rcr r�rr5rTs r�testRecvmsgAfterClosez)RecvmsgGenericTests.testRecvmsgAfterClose_s:������������'�4�>�4�>�4�H�H�H�H�Hr=c��dSrDr_rTs r�_testRecvmsgAfterClosez*RecvmsgGenericTests._testRecvmsgAfterClosedr"r=c��	|j�d��|�t|j|jtt����|j���dS#|j���wxYw)Nr�)	rcr�r�rr5r�rr*r�rTs r�testRecvmsgTimeoutz&RecvmsgGenericTests.testRecvmsgTimeoutgs���	"��N�%�%�d�+�+�+����l�"�n�d�n�c�#�h�h�
H�
H�
H�
�O���!�!�!�!�!��D�O���!�!�!�!���s�AA0�0Bc�l�|�|j�|j�����dS�Nr�)r�r*r�rOrTs r�_testRecvmsgTimeoutz'RecvmsgGenericTests._testRecvmsgTimeoutps0�������,�,�T�5F�,�G�G�H�H�H�H�Hr=r�c	���|�|jtt��dz
dtj��\}}}}|�|tdd���|�||j��|�|g��|�	|dttdd�����|�|jtt��dtj��\}}}}|�|t��|�||j��|�|g��|�	|d���|�|jtt����\}}}}|�|t��|�||j��|�|g��|�	|d���dS)	Nr�rr�FrZ�rFrITr�)r5rcr�rrr�rr=r�rMr�r�s     r�testRecvmsgPeekz#RecvmsgGenericTests.testRecvmsgPeekss���%)�N�N�4�>�36�s�8�8�a�<��39�?�%D�%D�!��W�e�T�	
����c�#�2�#�h�'�'�'�� � ��t�}�5�5�5�����"�%�%�%�
	
����5�&�v�{�A�>�>�	�	@�	@�	@�%)�N�N�4�>�36�s�8�8�Q�39�?�%D�%D�!��W�e�T�	
����c�"�"�"�� � ��t�}�5�5�5�����"�%�%�%�����4��(�(�(�%)�N�N�4�>�3�s�8�8�$L�$L�!��W�e�T�����c�"�"�"�� � ��t�}�5�5�5�����"�%�%�%�����4��(�(�(�(�(r=c�:�|�t��dSrDr�rTs r�_testRecvmsgPeekz$RecvmsgGenericTests._testRecvmsgPeek�s�����#�����r=r�c�n�|j�|j��|�|jt	t
����\}}}}|�|t
��|�||j��|�|g��|�	|d���dSr�)
rcr�rOr5r�rrr=r�rMr�s     r�testRecvmsgFromSendmsgz*RecvmsgGenericTests.testRecvmsgFromSendmsg�s���	
��!�!�$�"3�4�4�4�$(�N�N�4�>�3�s�8�8�$L�$L�!��W�e�T�����c�"�"�"�� � ��t�}�5�5�5�����"�%�%�%�����4��(�(�(�(�(r=c��|�|�tdd�tdd�g��tt����dSr�rwrTs r�_testRecvmsgFromSendmsgz+RecvmsgGenericTests._testRecvmsgFromSendmsg�sG������-�-�s�2�A�2�w��A�B�B��.@�A�A�3�s�8�8�L�L�L�L�Lr=N)r\r]r^r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�rr�r~r�r�r�r_r=rr�r�s�������)�)�)����)�)�)����)�)�)����*�*�*����)�)�)����)�)�)����I�I�I�

�
�
�"�"�"�I�I�I��\�&�*�%�%� )� )�&�%� )�D� ���!� ���\�&�-��+�+�)�)�,�+�)��'�M�M�(�'�M�M�Mr=r�c�&�eZdZd�Zd�Zd�Zd�ZdS)�RecvmsgGenericStreamTestsc��|�|jd��\}}}}|�|d��|�||j��|�|g��|�|d���dS)Nrr=r�)r5rcrr=r�rMr�s     r�testRecvmsgEOFz(RecvmsgGenericStreamTests.testRecvmsgEOF�s���$(�N�N�4�>�4�$H�$H�!��W�e�T�����c�"�"�"�� � ��t�}�5�5�5�����"�%�%�%�����4��(�(�(�(�(r=c�8�|j���dSrD)r,r rTs r�_testRecvmsgEOFz)RecvmsgGenericStreamTests._testRecvmsgEOF�s���
�������r=c��|�|jtt��dz
��\}}}}|�||j��|�|g��|�|d���|�|jd��\}}}}|�||j��|�|g��|�|d���||z}|�|t��dS)Nr�Fr�rT)r5rcr�rr=r�rrM)rUr�r�r�rr�rs       r�testRecvmsgOverflowz-RecvmsgGenericStreamTests.testRecvmsgOverflow�s���%)�^�^�D�N�47��H�H�q�L�&B�&B�"��g�u�d�� � ��t�}�5�5�5�����"�%�%�%�����5��)�)�)�%)�^�^�D�N�D�%I�%I�"��g�u�d�� � ��t�}�5�5�5�����"�%�%�%�����4��(�(�(��T�k������c�"�"�"�"�"r=c�:�|�t��dSrDr�rTs r�_testRecvmsgOverflowz.RecvmsgGenericStreamTests._testRecvmsgOverflow�r�r=N)r\r]r^rrrrr_r=rrr�sP������)�)�)����#�#�#� ����r=rc��eZdZd�Zd�ZdS)�RecvmsgTestsc�,�|�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��|�|d���dS)NrWrr}Tr�)
r�r�rcr�r�r�rr�r�rr=r�rMr�s     r�testRecvmsgBadArgszRecvmsgTests.testRecvmsgBadArgs�s������)�T�^�%;�<�<�<����*�d�n�&<��a��	$�	$�	$����*�d�n�&<��c�(�(�B��	+�	+�	+����)�T�^�%;�$�R�=�=�/�1�a�	1�	1�	1����)�T�^�%;� �(�(�A�q�	*�	*�	*����)�T�^�%;��c�(�(�F�H�H�a�	1�	1�	1����)�T�^�%;��c�(�(�A�v�x�x�	1�	1�	1�%)�N�$:�$:�3�s�8�8�Q��$J�$J�!��W�e�T�����c�"�"�"�� � ��t�}�5�5�5�����"�%�%�%�����4��(�(�(�(�(r=c�:�|�t��dSrDr�rTs r�_testRecvmsgBadArgsz RecvmsgTests._testRecvmsgBadArgs�r�r=N)r\r]r^rrr_r=rr
r
�s2������)�)�)�,����r=r
c�>�eZdZd�Zd�Zd�Zd�Zd�Zd�Zd�Z	d�Z
d	S)
�RecvmsgIntoTestsc��ttt����}|�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��|�|d���dS)NrsI'm not writablerWTr�)
r�r�rr�r�rcrSr�r�rr=r�rM�rUrV�nbytesr�r�rs      r�testRecvmsgIntoBadArgsz'RecvmsgIntoTests.testRecvmsgIntoBadArgs�s=����C���!�!�����)�T�^�%@�A�A�A����)�T�^�%@��c�(�(�A�q�	*�	*�	*����)�T�^�%@��q�!�	%�	%�	%����)�T�^�%@�!�8�8�*�a��	,�	,�	,����)�T�^�%@�.�/��A�	7�	7�	7����)�T�^�%@�����/�1�a�	1�	1�	1����*�d�n�&A��%��Q�	(�	(�	(����)�T�^�%@��%����1�	.�	.�	.����)�T�^�%@��%��F�H�H�	.�	.�	.�(,�~�'B�'B�C�5�!�Q�'O�'O�$����������S���*�*�*�����i��n�n�-�-�-�� � ��t�}�5�5�5�����"�%�%�%�����4��(�(�(�(�(r=c�:�|�t��dSrDr�rTs r�_testRecvmsgIntoBadArgsz(RecvmsgIntoTests._testRecvmsgIntoBadArgs	
r�r=c���ttt����}|j�d�|fD����\}}}}|�|tt����|�|tt����|�||j��|�|g��|�|d���dS)Nc3�K�|]}|V��dSrDr_r�s  rr�z<RecvmsgIntoTests.testRecvmsgIntoGenerator.<locals>.<genexpr>
s"������1�Q������r=Tr�)	r�r�rrcrSrr=r�rMrs      r�testRecvmsgIntoGeneratorz)RecvmsgIntoTests.testRecvmsgIntoGenerator
s�����C���!�!��'+�~�'B�'B��������( �( �$����������S���*�*�*�����i��n�n�-�-�-�� � ��t�}�5�5�5�����"�%�%�%�����4��(�(�(�(�(r=c�:�|�t��dSrDr�rTs r�_testRecvmsgIntoGeneratorz*RecvmsgIntoTests._testRecvmsgIntoGenerator
r�r=c���tjddgtt��z��}|j�|g��\}}}}|�|tt����|�|���t��|�||j��|�|g��|�	|d���dS)Nr�rTr�)
r�r�rrcrSr�tobytesr=r�rMrs      r�testRecvmsgIntoArrayz%RecvmsgIntoTests.testRecvmsgIntoArray
s����k�#��s�S��X�X�~�.�.��'+�~�'B�'B�C�5�'I�'I�$����������S���*�*�*����������,�,�,�� � ��t�}�5�5�5�����"�%�%�%�����4��(�(�(�(�(r=c�:�|�t��dSrDr�rTs r�_testRecvmsgIntoArrayz&RecvmsgIntoTests._testRecvmsgIntoArray$
r�r=c�v�td��}td��}td��}|j�|t|��dd�|g��\}}}}|�|td����|�|td����|�|td����|�|td	����|�||j��|�|g��|�|d
���dS)Ns----s
0123456789s--------------r��	�Mary had a little lambsMarys
01 had a 9slittle lamb---Tr�)	r�rcrS�
memoryviewrr�r=r�rM)rU�b1�b2�b3rr�r�rs        r�testRecvmsgIntoScatterz'RecvmsgIntoTests.testRecvmsgIntoScatter'
s'��
�w�
�
��
�}�
%�
%��
�(�
)�
)��'+�~�'B�'B�
��B����!��$�b�)�(+�(+�$����������%>�!?�!?�@�@�@�����Y�w�/�/�0�0�0�����Y�}�5�5�6�6�6�����Y�'8�9�9�:�:�:�� � ��t�}�5�5�5�����"�%�%�%�����4��(�(�(�(�(r=c�0�|�d��dS)Nr#)r-rTs r�_testRecvmsgIntoScatterz(RecvmsgIntoTests._testRecvmsgIntoScatter6
s�����3�4�4�4�4�4r=N)r\r]r^rrrrrr r(r*r_r=rrr�s�������)�)�)�8���	)�	)�	)����)�)�)����
)�
)�
)�5�5�5�5�5r=rc��eZdZ	ddlZedej��Zn
#e$rdZYnwxYwee	d��d���Z
ee	d��d���ZdS)�CmsgMacroTestsrNi����CMSG_LENc��|jtjd��z
dz}tt	d����tt	|dz
|����z}|�tjd��t
jd��jdz��|D]\}tj|��}|�|tjd��z
|��|�	||j���]|�
ttjd��|�
ttj|��|�
ttjtj
��dS)Nrr��rKr�rW)�socklen_t_limitrr-�listr=r/r��itemsizerrUr�rNr?�maxsize)rU�toobigrs�nr;s     r�testCMSG_LENzCmsgMacroTests.testCMSG_LENG
s9���%����(:�(:�:�Q�>���e�C�j�j�!�!�D��v��|�V�)D�)D�$E�$E�E��	
���6�?�1�-�-�u�{�3�/?�/?�/H�1�/L�M�M�M��	<�	<�A��/�!�$�$�C����S�6�?�1�#5�#5�5�q�9�9�9�� � ��d�&:�;�;�;�;����-���"�=�=�=�	
���-���&�A�A�A����-���#�+�F�F�F�F�Fr=r�c�|�|jtjd��z
dz}tt	d����tt	|dz
|����z}tjd��}|�|t
jd��jdz��|D]�}tj|��}|�||��|�|tj	|����|�||tj	d��z��|�
||j��|}��|�ttjd��|�ttj|��|�ttjtj��dS)Nr�r/rrKr�rW)r0rr�r1r=r/r�r2rTr-rUr�rNr?r3)rUr4rs�lastr5r;s      r�testCMSG_SPACEzCmsgMacroTests.testCMSG_SPACE\
s|���%��(9�!�(<�(<�<�q�@���e�C�j�j�!�!�D��v��|�V�)D�)D�$E�$E�E��� ��#�#�����4���S�!1�!1�!:�Q�!>�?�?�?��	�	�A��#�A�&�&�C��#�#�C��.�.�.��#�#�C����);�);�<�<�<��#�#�C��V�_�Q�-?�-?�)?�@�@�@�� � ��d�&:�;�;�;��D�D����-��):�B�?�?�?�	
���-��):�F�C�C�C����-��):�C�K�H�H�H�H�Hr=)r\r]r^r[�minr]r0r�r�rr6r9r_r=rr,r,:
s�������=������#�j�)�*;�<�<�����%�%�%�$����%����
�\�&�*�%�%�G�G�&�%�G�(�\�&�,�'�'�I�I�(�'�I�I�Is��&�&r,c��eZdZdZd�Zd�Zd�Zd�Zd�Zd7d	�Z	d
�Z
d�Zd�Zd
�Z
eed��d���Zejd���Zd�Zd�Zejejdkd��ejed��eed��d�������Zejejejdkd��ejed��d�������Zejejdkd��ejed��eed��d�������Zejejejdkd��ejed��d�������Zd�Zejejdkd��d���Zd�Z d�Z!d�Z"eed��d ���Z#e#jd!���Z$d8d"�Z%d#�Z&d$�Z'd%�Z(d&�Z)d'�Z*d(�Z+d)�Z,d*�Z-d+�Z.d,�Z/d8d-�Z0d.�Z1d/�Z2d0�Z3d1�Z4d2�Z5d3�Z6d4�Z7d5�Z8d6S)9�
SCMRightsTesti����c�l�g}t|��D]�}tj��\}}|�tj|��|�tj|��t	j|t|���	����|�
|����|SrD)r=rC�mkstemprtrFrLr �writer��encode�append)rUr5�fdsrKrurNs      r�newFDszSCMRightsTest.newFDs}
s������q���	�	�A��'�)�)�H�B���O�O�B�I�t�,�,�,��O�O�B�H�b�)�)�)��H�R��Q�������)�)�)��J�J�r�N�N�N�N��
r=c��t|��D]m\}}tj|dtj��|�tj|d��t
|��������ndS)Nrr)�	enumeraterF�lseek�SEEK_SETrr�r�r@)rUrBr5rus    r�checkFDszSCMRightsTest.checkFDs�
st���s�^�^�	A�	A�E�A�r��H�R��B�K�(�(�(����R�W�R��.�.��A���
�
���@�@�@�@�	A�	Ar=c�<�|�|j|��dSrD)rt�closeRecvmsgFDsr7s  rr3z#SCMRightsTest.registerRecvmsgResult�
s������,�f�5�5�5�5�5r=c	�B�|dD]�\}}}|tjkr|tjkrotjd��}|�|dt|��t|��|jzz
���|D]}tj|�����dS)Nr�rK)	rr��
SCM_RIGHTSr��	frombytesr�r2rFr )rU�recvmsg_result�
cmsg_level�	cmsg_type�	cmsg_datarBrus       rrJzSCMRightsTest.closeRecvmsgFDs�
s���1?�q�0A�	!�	!�,�J�	�9��f�/�/�/���!2�2�2��k�#�&�&���
�
�i�)I��I���#�i�.�.�3�<�*G�H�)I�J�K�K�K��!�!�B��H�R�L�L�L�L��	!�	!r=c
��|�|�tgtjtjt
jd|�|����fg��tt����dS)NrK)	rr1rrr�rLr�rCr�)rUr5s  r�createAndSendFDszSCMRightsTest.createAndSendFDs�
s{��	
���� � �#��#)�#4�#)�#4�#(�;�s�D�K�K��N�N�#C�#C�#E�"F�
G�
G�
��H�H�	�	�	�	�	r=r�rc�\�|\}}}}|�|t��|�||j��|�|dt
j|���|�|t��|�	t|��|��tjd��}	|D]�}
|�|
t��|
\}}}
|�|t
j
��|�|t
j��|�|
t��|�t|
��t zd��|	�|
����|�t|	��|��|�|	��dS)NT�rFrHrIrKr)rrr=r�rMrr>r�r1rUr�r��tupler�rLr/�
SIZEOF_INTrMrH)rU�numfdsr4�maxcmsgs�ignoreflagsrr�r�rrB�itemrOrPrQs              r�checkRecvmsgFDszSCMRightsTest.checkRecvmsgFDs�
s���%+�!��W�e�T�����c�"�"�"�� � ��t�}�5�5�5�����4�F�4E�*�	�	,�	,�	,�	
���g�t�,�,�,����S��\�\�8�4�4�4��k�#�����	%�	%�D��!�!�$��.�.�.�/3�,�J�	�9����Z��):�;�;�;����Y��(9�:�:�:��!�!�)�U�3�3�3����S��^�^�j�8�!�<�<�<��M�M�)�$�$�$�$�����S���6�*�*�*��
�
�c�����r=c	��|�d|�|jtt��d����dS)Nr�r��r\r5rcr�rrTs r�testFDPassSimplezSCMRightsTest.testFDPassSimple�
�L�����Q����t�~�/2�3�x�x��!@�!@�	A�	A�	A�	A�	Ar=c
�*�|�|�tgtjtjt
jd|�d�������fg��tt����dS)NrKr�)
rr1rrr�rLr�rCrr�rTs r�_testFDPassSimplezSCMRightsTest._testFDPassSimple�
s������� � ����#��#��+�c�4�;�;�q�>�>�2�2�:�:�<�<�>�?�
@�
@�

��H�H�
	�	�	�	�	r=c	��|�d|�|jtt��d����dS)Nr�r�r^rTs r�testMultipleFDPassz SCMRightsTest.testMultipleFDPass�
r`r=c�0�|�d��dS�Nr��rSrTs r�_testMultipleFDPassz!SCMRightsTest._testMultipleFDPass�
������a� � � � � r=r�c��|�d|�|jtt��tjdtz������dSrf)r\r5rcr�rrr�rWrTs r�testFDPassCMSG_SPACEz"SCMRightsTest.testFDPassCMSG_SPACE�
s^��	
���
�t�~�~�d�n�c�#�h�h�$�/��J��?�?�A�A�	B�	B�	B�	B�	Br=c�0�|�d��dSrfrgrTs r�_testFDPassCMSG_SPACEz#SCMRightsTest._testFDPassCMSG_SPACE�
s�����a� � � � � r=c���|�d|�|jtt��tjdtz����t
j���dS)Nr�r��rZ)	r\r5rcr�rrr-rWr>rTs r�testFDPassCMSG_LENz SCMRightsTest.testFDPassCMSG_LEN�
sc�����Q�!�^�^�D�N�C��H�H�,2�O�A�
�N�,K�,K�M�M�
*0�):�
	�	<�	<�	<�	<�	<r=c�0�|�d��dSrXrgrTs r�_testFDPassCMSG_LENz!SCMRightsTest._testFDPassCMSG_LEN�
rir=r�zskipping, see issue #12958zskipping, see issue #22397c	��|�d|�|jtt��d��d���dS)Nr�r�)rYr^rTs r�testFDPassSeparatez SCMRightsTest.testFDPassSeparate�
sK��	
���Q�!�^�^�D�N�C��H�H�e�L�L�&'�	�	)�	)�	)�	)�	)r=c�j�|�d��\}}|�|�tgtjtjtjd|g��ftjtjtjd|g��fg��tt����dS�Nr�rK�	rCrr1rrr�rLr�r��rU�fd0�fd1s   r�_testFDPassSeparatez!SCMRightsTest._testFDPassSeparate�
����;�;�q�>�>���S����� � �#��&�*;�*0�*;�*/�+�c�C�5�*A�*A�*C�+1�*;�*0�*;�*/�+�c�C�5�*A�*A�*C�)D�
E�
E�
��H�H�	�	�	�	�	r=c��d}|�||�|jtt��tjt��tjt|z��z��dt
j	���dS)Nr�)rYrZ)
r\r5rcr�rrr�rWr-r>)rU�num_fdss  r�testFDPassSeparateMinSpacez(SCMRightsTest.testFDPassSeparateMinSpace
s��������W�!�^�^�D�N�C��H�H�,2�,=�j�,I�,I�,2�O�J��<P�,Q�,Q�-R�S�S�'(�V�5F�		�	H�	H�	H�	H�	Hr=c�j�|�d��\}}|�|�tgtjtjtjd|g��ftjtjtjd|g��fg��tt����dSrvrwrxs   r�_testFDPassSeparateMinSpacez)SCMRightsTest._testFDPassSeparateMinSpacer|r=c��	|�|g|��}nM#t$r@}|�|jt��|�|g��}Yd}~nd}~wwxYw|�|t
|����dSrD)r1rr�r(r.rr�)rUrr�rr�s     r�sendAncillaryIfPossiblez%SCMRightsTest.sendAncillaryIfPossible%s���	1��)�)�3�%��9�9�F�F���	1�	1�	1��!�!�!�'�3�/�/�/��)�)�3�%�0�0�F�F�F�F�F�F�����	1����	
�����S���*�*�*�*�*s��
A$�6A�A$zsee issue #24725c	��|�d|�|jtt��d��t
j���dS)Nrr�ro)r\r5rcr�rrr>rTs r�testFDPassEmptyzSCMRightsTest.testFDPassEmpty0sT��	
���Q����t�~�/2�3�x�x��!@�!@�)/�):�	�	<�	<�	<�	<�	<r=c�l�|�ttjtjdfg��dS�Nr=)r�rrr�rLrTs r�_testFDPassEmptyzSCMRightsTest._testFDPassEmpty8s>���$�$�S�F�,=�,2�,=�,/�,1�+2�	3�	3�	3�	3�	3r=c�D�|�|jtt��d��\}}}}|�|t��|�||j��|�|dtj	���|�
t|��d��|D]n\}}}|�|tj��|�|tj��|�
t|��t���odS)Nr�Tr�r�)r5rcr�rrr=r�rMrr>rUr�rL�
assertLessrW�rUrr�r�rrOrPrQs        r�testFDPassPartialIntz"SCMRightsTest.testFDPassPartialInt=s��$(�N�N�4�>�36�s�8�8�U�%D�%D�!��W�e�T�����c�"�"�"�� � ��t�}�5�5�5�����4��0A��B�B�B����S��\�\�1�-�-�-�07�	8�	8�,�J�	�9����Z��):�;�;�;����Y��(9�:�:�:��O�O�C�	�N�N�J�7�7�7�7�	8�	8r=c	���|�ttjtjtjd|jg�����dd�fg��dS)NrKrW)r�rrr�rLr��badfdrrTs r�_testFDPassPartialIntz#SCMRightsTest._testFDPassPartialIntJse���$�$�������k�#��
�|�,�,�4�4�6�6�s��s�;�=�
>�	?�	?�	?�	?�	?r=c	��|�|jtt��d��\}}}}|�|t��|�||j��|�|dtj	���|�
t|��d��tjd��}|D]�\}}}|�|tj��|�|tj
��|�|dt|��t|��|jzz
�����|�
t|��d��|�|��dS)Nr�Tr�r�rK)r5rcr�rrr=r�rMrr>rUr�r�rLrMr2rH)	rUrr�r�rrBrOrPrQs	         r�testFDPassPartialIntInMiddlez*SCMRightsTest.testFDPassPartialIntInMiddleQsq��%)�N�N�4�>�36�s�8�8�U�%D�%D�!��W�e�T�����c�"�"�"�� � ��t�}�5�5�5�����4��0A��B�B�B����S��\�\�1�-�-�-��k�#����07�	G�	G�,�J�	�9����Z��):�;�;�;����Y��(9�:�:�:��M�M�)�%E��	�N�N�c�)�n�n�s�|�&C�D�%E�F�
G�
G�
G�
G����S��X�X�q�)�)�)��
�
�c�����r=c
�\�|�d��\}}|�ttjtjt
jd||jg�����dd�ftjtjt
jd|g��fg��dS)Nr�rKrW)	rCr�rrr�rLr�r�rrxs   r�_testFDPassPartialIntInMiddlez+SCMRightsTest._testFDPassPartialIntInMiddleds����;�;�q�>�>���S��$�$�������k�#��T�Z�0�1�1�9�9�;�;�C�R�C�@�B������k�#��u�%�%�'�
(�	)�	)�	)�	)�	)r=c���|\}}}}|�|t��|�||j��|�|g��|�|dt
j|���dS)NT�rFrGrI)rrr=r�rMrr>)rUr4rZrr�r�rs       r�checkTruncatedHeaderz"SCMRightsTest.checkTruncatedHeaderps���%+�!��W�e�T�����c�"�"�"�� � ��t�}�5�5�5�����"�%�%�%�����4�&�2C�*�	�	,�	,�	,�	,�	,r=c��|�|�|jtt����t
j���dS�Nro�r�r5rcr�rrr>rTs r�testCmsgTruncNoBufSizez$SCMRightsTest.testCmsgTruncNoBufSizezsP��	
�!�!�$�.�.����S���"J�"J�/5�.?�		"�	A�	A�	A�	A�	Ar=c�0�|�d��dSrXrgrTs r�_testCmsgTruncNoBufSizez%SCMRightsTest._testCmsgTruncNoBufSize�rir=c��|�|�|jtt��d��t
j���dS)Nrror�rTs r�testCmsgTrunc0zSCMRightsTest.testCmsgTrunc0�sN���!�!�$�.�.����S���1�"M�"M�.4�.?�	"�	A�	A�	A�	A�	Ar=c�0�|�d��dSrXrgrTs r�_testCmsgTrunc0zSCMRightsTest._testCmsgTrunc0�rir=c��|�|�|jtt��d����dSrX)r�r5rcr�rrTs r�testCmsgTrunc1zSCMRightsTest.testCmsgTrunc1�s4���!�!�$�.�.����S���1�"M�"M�N�N�N�N�Nr=c�0�|�d��dSrXrgrTs r�_testCmsgTrunc1zSCMRightsTest._testCmsgTrunc1�rir=c��|�|�|jtt��t
dz����dSr�)r�r5rcr�rrWrTs r�testCmsgTrunc2IntzSCMRightsTest.testCmsgTrunc2Int�sP��	
�!�!�$�.�.����S���1;�a��#A�#A�	B�	B�	B�	B�	Br=c�0�|�d��dSrXrgrTs r�_testCmsgTrunc2Intz SCMRightsTest._testCmsgTrunc2Int�rir=c	��|�|�|jtt��tjd��dz
����dSr)r�r5rcr�rrr-rTs r�testCmsgTruncLen0Minus1z%SCMRightsTest.testCmsgTruncLen0Minus1�sY���!�!�$�.�.����S���17���1C�1C�a�1G�#I�#I�	J�	J�	J�	J�	Jr=c�0�|�d��dSrXrgrTs r�_testCmsgTruncLen0Minus1z&SCMRightsTest._testCmsgTruncLen0Minus1�rir=c�x�|�|jtt��|��\}}}}|�|t��|�||j��|�|dtj	���|dkr|gkrdS|�t|��d��|d\}}	}
|�|tj
��|�|	tj��|�t|
��|��|�
t|
��|��tjd��}|�|
dt|
��t|
��|jzz
���|�|��dS)NT�rFrGrr�rK)r5rcr�rrr=r�rMrr>r�rLrTrUr�rMr2rH)rU�ancbuf�maxdata�mindatarr�r�rrOrPrQrBs            r�checkTruncatedArrayz!SCMRightsTest.checkTruncatedArray�s���
%)�N�N�4�>�36�s�8�8�V�%E�%E�!��W�e�T�����c�"�"�"�� � ��t�}�5�5�5�����4�&�2C��D�D�D��a�<�<�G�r�M�M��F�����W���q�)�)�)�+2�1�:�(�
�I�y�����V�%6�7�7�7�����F�$5�6�6�6�����I����8�8�8����S��^�^�W�5�5�5��k�#�����
�
�i�!A��I���#�i�.�.�3�<�"?�@�!A�B�	C�	C�	C��
�
�c�����r=c�X�|�tjd��d���dS)Nr�r�r��r�rr-rTs r�testCmsgTruncLen0zSCMRightsTest.testCmsgTruncLen0�s+��� � ����(:�(:�A� �F�F�F�F�Fr=c�0�|�d��dSrXrgrTs r�_testCmsgTruncLen0z SCMRightsTest._testCmsgTruncLen0�rir=c�^�|�tjd��dzd���dS)Nrr�r�r�rTs r�testCmsgTruncLen0Plus1z$SCMRightsTest.testCmsgTruncLen0Plus1�s0��� � ����(:�(:�Q�(>�� �J�J�J�J�Jr=c�0�|�d��dSr�rgrTs r�_testCmsgTruncLen0Plus1z%SCMRightsTest._testCmsgTruncLen0Plus1�rir=c�l�|�tjt��t���dS)Nr��r�rr-rWrTs r�testCmsgTruncLen1zSCMRightsTest.testCmsgTruncLen1�s8��� � ���
�(C�(C�)3�	!�	5�	5�	5�	5�	5r=c�0�|�d��dSr�rgrTs r�_testCmsgTruncLen1z SCMRightsTest._testCmsgTruncLen1�rir=c��|�tjdtz��dz
dtzdz
���dS)Nr�r�r�r�rTs r�testCmsgTruncLen2Minus1z%SCMRightsTest.testCmsgTruncLen2Minus1�sJ��� � ����J��(G�(G�!�(K�*+�j�.�A�)=�	!�	?�	?�	?�	?�	?r=c�0�|�d��dSr�rgrTs r�_testCmsgTruncLen2Minus1z&SCMRightsTest._testCmsgTruncLen2Minus1�rir=N)r�r�r)9r\r]r^r�rCrHr3rJrSr\r_rbrdrhr�rrkr~rmrprrr�r�r?rqrrtr{rr�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r_r=rr<r<u
s�������
�E�
�
�
�A�A�A�6�6�6�
!�
!�
!��������6A�A�A�
���A�A�A�
!�!�!��\�&�,�'�'�B�B�(�'�B��%�!�!�&�%�!�<�<�<�!�!�!��X�_�S�\�X�-�/K�L�L��X�_�S�6�7�7��\�&�,�'�'�)�)�(�'�8�7�M�L�)��#��X�_�S�\�X�-�/K�L�L��X�_�S�6�7�7�	�	�8�7�M�L�$�#�	��X�_�S�\�X�-�/K�L�L��X�_�S�6�7�7��\�&�,�'�'�H�H�(�'�8�7�M�L�H� �+��X�_�S�\�X�-�/K�L�L��X�_�S�6�7�7�	�	�8�7�M�L�,�+�	�	+�	+�	+��X�_�S�\�X�-�/A�B�B�<�<�C�B�<�3�3�3�
8�8�8�?�?�?��\�&�,�'�'���(�'��$"�-�	)�	)�.�-�	)�,�,�,�,�A�A�A�!�!�!�A�A�A�
!�!�!�O�O�O�!�!�!�B�B�B�!�!�!�J�J�J�!�!�!�����0G�G�G�!�!�!�K�K�K�!�!�!�5�5�5�!�!�!�?�?�?�!�!�!�!�!r=r<c	�X�eZdZdZdZd�Zd5d�Zeedd��d	���Z	e	j
d
���Zeeddd��d���Zej
d
���Z
eejd��eedd��d�����Zej
d���Z		d5d�Zeedddd��d���Zej
d���Zeeddddd��d���Zej
d���Zeejd��eeddddd��d�����Zej
d���Zeejd��eeddddd��d�����Zej
d���Zd6d�Zeedd��d���Zej
d���Zeedd��d���Zej
d ���Zeedd��d!���Zej
d"���Zeedd��d#���Z e j
d$���Z!eedd��d%���Z"e"j
d&���Z#eedd��d'���Z$e$j
d(���Z%d6d)�Z&eeddddd��d*���Z'e'j
d+���Z(eeddddd��d,���Z)e)j
d-���Z*eeddddd��d.���Z+e+j
d/���Z,eeddddd��d0���Z-e-j
d1���Z.eeddddd��d2���Z/e/j
d3���Z0d4S)7�RFC3542AncillaryTestr�rWc�Z�i}|D]%\}}}|�||f|��||||f<�&|SrD)r�)rUr��drOrPrQs      r�ancillaryMappingz%RFC3542AncillaryTest.ancillaryMapping�sQ��
��07�	3�	3�,�J�	�9����j�)�4�a�8�8�8�)2�A�z�9�%�&�&��r=r-rc��|j�tjtjd��|j���|�|jtt��|��\}}}}|�
|t��|�||j��|�
|dtj|���|�
t|��d��|�|dt ��|d\}}	}
|�
|tj��|�
|	tj��|�|
t$��|�
t|
��t&��t)jd��}|�|
��|�|dd��|�|d|��dS)Nr�TrUrrK)rcr�rr�rr*r�r5r�rrr=r�rMr>r�rVr�r/rWr�rMrTrU)rU�
ancbufsize�maxhoprZrr�r�rrOrPrQr�s            r�
checkHopLimitz"RFC3542AncillaryTest.checkHopLimit�s���
	
��!�!�&�"5�"(�":�A�	?�	?�	?��������$(�N�N�4�>�36�s�8�8�Z�%I�%I�!��W�e�T�	
����c�"�"�"�� � ��t�}�5�5�5�����4�F�4E�*�	�	,�	,�	,�	
����W���q�)�)�)����g�a�j�%�0�0�0�+2�1�:�(�
�I�y�����V�%8�9�9�9�����F�$8�9�9�9����i��/�/�/�����Y����4�4�4��K�����	���I��������!��a�(�(�(����Q�q�T�6�*�*�*�*�*r=rr�c�2�|�d���dS�Nr��r�)r�rTs r�testRecvHopLimitz%RFC3542AncillaryTest.testRecvHopLimits!��	
���e��,�,�,�,�,r=c��|�|j�|j�����|�t
��dSr��r�r*r�rOr-rrTs r�_testRecvHopLimitz&RFC3542AncillaryTest._testRecvHopLimitsF��
	
�����,�,�T�5F�,�G�G�H�H�H����#�����r=r�c�`�|�tjt�����dS)Nr�)r�rr�rWrTs r�testRecvHopLimitCMSG_SPACEz/RFC3542AncillaryTest.testRecvHopLimitCMSG_SPACE"s,��	
���f�&7�
�&C�&C��D�D�D�D�Dr=c��|�|j�|j�����|�t
��dSr�r�rTs r�_testRecvHopLimitCMSG_SPACEz0RFC3542AncillaryTest._testRecvHopLimitCMSG_SPACE'�D�������,�,�T�5F�,�G�G�H�H�H����#�����r=r�c�>�|�d|j���dS�Nr�)r�r�)r��	hop_limitrTs r�testSetHopLimitz$RFC3542AncillaryTest.testSetHopLimit1s%��
	
���e�D�N��C�C�C�C�Cr=c�R�|�|j�|j�����|�|�tgtjtj	tj
d|jg��fg��tt����dS�Nr�rK)
r�r*r�rOrr1rrr�r�r�r�r�rTs r�_testSetHopLimitz%RFC3542AncillaryTest._testSetHopLimit8s��������,�,�T�5F�,�G�G�H�H�H����� � �#��#)�#6��8L�#(�;�s�T�^�4D�#E�#E�#G�"H�
I�
I�
��H�H�		�	�	�	�	r=c��|j�tjtjd��|j�tjtjd��|j���|�|jtt��|��\}}}}|�|t��|�||j
��|�|dtj|���|�t|��d��|�|��}|tjtjf}	|�t|	��t$��t'jd��}
|
�|	��|�|
dd��|�|
dd��|tjtjf}|�t|��t$��t'jd��}
|
�|��|�|
dd��|�|
d|��dS)Nr�TrUr�rKrr-)rcr�rr�rrr*r�r5r�rrr=r�rMr>r�r�rWr�rMrTrUr�)rUr�r�rZrr�r�r�ancmap�tcdatar��hldatas            r�checkTrafficClassAndHopLimitz1RFC3542AncillaryTest.checkTrafficClassAndHopLimitAs+��	
��!�!�&�"5�"(�":�A�	?�	?�	?���!�!�&�"5�"(�"8�!�	=�	=�	=��������$(�N�N�4�>�36�s�8�8�Z�%I�%I�!��W�e�T�	
����c�"�"�"�� � ��t�}�5�5�5�����4�F�4E�*�	�	,�	,�	,�����W���q�)�)�)��&�&�w�/�/����,�f�.@�A�B������V���j�1�1�1��K�����	���F��������!��a�(�(�(����Q�q�T�3�'�'�'���,�f�.B�C�D������V���j�1�1�1��K�����	���F��������!��a�(�(�(����Q�q�T�6�*�*�*�*�*r=rr�c�2�|�d���dSr�)r�rTs r�testRecvTrafficClassAndHopLimitz4RFC3542AncillaryTest.testRecvTrafficClassAndHopLimites!��	
�)�)�U�)�;�;�;�;�;r=c��|�|j�|j�����|�t
��dSr�r�rTs r� _testRecvTrafficClassAndHopLimitz5RFC3542AncillaryTest._testRecvTrafficClassAndHopLimitkr�r=c�f�|�tjt��dz���dS�Nr�r�)r�rr�rWrTs r�)testRecvTrafficClassAndHopLimitCMSG_SPACEz>RFC3542AncillaryTest.testRecvTrafficClassAndHopLimitCMSG_SPACEps>��
	
�)�)��(��4�4�q�8�	*�	:�	:�	:�	:�	:r=c��|�|j�|j�����|�t
��dSr�r�rTs r�*_testRecvTrafficClassAndHopLimitCMSG_SPACEz?RFC3542AncillaryTest._testRecvTrafficClassAndHopLimitCMSG_SPACExr�r=c�>�|�d|j���dSr��r�r�rTs r�testSetTrafficClassAndHopLimitz3RFC3542AncillaryTest.testSetTrafficClassAndHopLimit}s7��	
�)�)�U�15��	*�	A�	A�	A�	A�	Ar=c��|�|j�|j�����|�|�tgtjtj	tj
d|jg��ftjtjtj
d|j
g��fg��tt����dSr�)r�r*r�rOrr1rrr�r�r��
traffic_classr�r�r�rTs r�_testSetTrafficClassAndHopLimitz4RFC3542AncillaryTest._testSetTrafficClassAndHopLimit�s��������,�,�T�5F�,�G�G�H�H�H����� � �#��#)�#6��8J�#(�;�s�T�5G�4H�#I�#I�#K�#)�#6��8L�#(�;�s�T�^�4D�#E�#E�#G�"H�
I�
I�

��H�H�
	�	�	�	�	r=c�>�|�d|j���dSr�r�rTs r�testOddCmsgSizez$RFC3542AncillaryTest.testOddCmsgSize�s7��	
�)�)�U�15��	*�	A�	A�	A�	A�	Ar=c�P�|�|j�|j�����	|�t
gtjtjtj	d|j
g�����dzftjtjtj	d|j
g��fg��}dS#t$r�}|�|jt"��|�t
gtjtjtj	d|j
g��ftjtjtj	d|j
g��fg��}|�|t't
����Yd}~dSd}~wwxYw)Nr�rKr)r�r*r�rOr1rrr�r�r�r�rr�r�rr�r(r.rr�)rUrr�s   r�_testOddCmsgSizez%RFC3542AncillaryTest._testOddCmsgSize�s~�������,�,�T�5F�,�G�G�H�H�H�	/��)�)����%�v�'9��+�c�D�$6�#7�8�8�@�@�B�B�W�L�N��%�v�';��+�c�D�N�#3�4�4�6�7�8�8�F�F�F���	/�	/�	/��!�!�!�'�3�/�/�/��)�)����%�v�'9��+�c�D�$6�#7�8�8�:��%�v�';��+�c�D�N�#3�4�4�6�7�8�8�F�
���V�S��X�X�.�.�.�.�.�.�.�.�.�����	/���s�BC
�

F%�CF � F%c���|j�tjtjd��|j���|�dn|f}|j|jtt��g|�R�\}}}}|�
|t��|�||j��|�
|g��|�
|dtj|���dS)Nr�r_Tr�)rcr�rr�rr*r�r5r�rrr=r�rMr>)rUr�rZrprr�r�rs        r�checkHopLimitTruncatedHeaderz1RFC3542AncillaryTest.checkHopLimitTruncatedHeader�s��	
��!�!�&�"5�"(�":�A�	?�	?�	?���������'�r�r�j�]��$2�D�N�4�>�36�s�8�8�%D�>B�%D�%D�%D�!��W�e�T�	
����c�"�"�"�� � ��t�}�5�5�5�����"�%�%�%�����4�&�2C�*�	�	,�	,�	,�	,�	,r=c�H�|�dtj���dS)N�r�rZ�r�rr>rTs rr�z+RFC3542AncillaryTest.testCmsgTruncNoBufSize�s:��	
�)�)�T�
7=�6G�	*�	I�	I�	I�	I�	Ir=c��|�|j�|j�����|�t
��dSr�r�rTs rr�z,RFC3542AncillaryTest._testCmsgTruncNoBufSize�r�r=c�H�|�dtj���dS)Nrr�r�rTs r�testSingleCmsgTrunc0z)RFC3542AncillaryTest.testSingleCmsgTrunc0�s8��	
�)�)�Q�6<�6G�	*�	I�	I�	I�	I�	Ir=c��|�|j�|j�����|�t
��dSr�r�rTs r�_testSingleCmsgTrunc0z*RFC3542AncillaryTest._testSingleCmsgTrunc0�r�r=c�2�|�d���dS)Nr�r�)r�rTs r�testSingleCmsgTrunc1z)RFC3542AncillaryTest.testSingleCmsgTrunc1�s���)�)�Q�)�7�7�7�7�7r=c��|�|j�|j�����|�t
��dSr�r�rTs r�_testSingleCmsgTrunc1z*RFC3542AncillaryTest._testSingleCmsgTrunc1�r�r=c�B�|�dtz���dSr�)r�rWrTs r�testSingleCmsgTrunc2Intz,RFC3542AncillaryTest.testSingleCmsgTrunc2Int�s#���)�)�Q��^�)�D�D�D�D�Dr=c��|�|j�|j�����|�t
��dSr�r�rTs r�_testSingleCmsgTrunc2Intz-RFC3542AncillaryTest._testSingleCmsgTrunc2Int�r�r=c�\�|�tjd��dz
���dS)Nrr�r�)r�rr-rTs r�testSingleCmsgTruncLen0Minus1z2RFC3542AncillaryTest.testSingleCmsgTruncLen0Minus1�s.���)�)�V�_�Q�5G�5G�!�5K�)�L�L�L�L�Lr=c��|�|j�|j�����|�t
��dSr�r�rTs r�_testSingleCmsgTruncLen0Minus1z3RFC3542AncillaryTest._testSingleCmsgTruncLen0Minus1�r�r=c��|j�tjtjd��|j���|�|jtt��tj
t��dz
��\}}}}|�|t��|�
||j��|�|dtj���|�t|��d��|rv|d\}}}|�|tj��|�|tj��|�t|��t��dSdS)Nr�Tr�r)rcr�rr�rr*r�r5r�rr-rWrr=r�rMr>rUr�r�r�s        r�testSingleCmsgTruncInDataz.RFC3542AncillaryTest.testSingleCmsgTruncInData�sV��
	
��!�!�&�"5�"(�":�A�	?�	?�	?��������$(�N�N��N�C��H�H�f�o�j�&A�&A�A�&E�%G�%G�!��W�e�T�	
����c�"�"�"�� � ��t�}�5�5�5�����4�&�2C��D�D�D����S��\�\�1�-�-�-��	8�/6�q�z�,�J�	�9����Z��)<�=�=�=����Y��(<�=�=�=��O�O�C�	�N�N�J�7�7�7�7�7�		8�	8r=c��|�|j�|j�����|�t
��dSr�r�rTs r�_testSingleCmsgTruncInDataz/RFC3542AncillaryTest._testSingleCmsgTruncInDatar�r=c��|j�tjtjd��|j�tjtjd��|j���|�|jtt��|��\}}}}|�|t��|�||j
��|�|dtj|���|�t|��d��|d\}}}	|�|tj��|�|tjtjh��|�t|	��t&��t)jd��}
|
�|	��|�|
dd��|�|
dd��dS)Nr�Tr�rrKr-)rcr�rr�rrr*r�r5r�rrr=r�rMr>r�r�r�rWr�rMrTrU)rUr�rZrr�r�rrOrPrQr�s           r�checkTruncatedSecondHeaderz/RFC3542AncillaryTest.checkTruncatedSecondHeaders���	
��!�!�&�"5�"(�":�A�	?�	?�	?���!�!�&�"5�"(�"8�!�	=�	=�	=��������$(�N�N�4�>�36�s�8�8�Z�%I�%I�!��W�e�T�	
����c�"�"�"�� � ��t�}�5�5�5�����4�&�2C�*�	�	,�	,�	,�	
����W���q�)�)�)�+2�1�:�(�
�I�y�����V�%8�9�9�9��
�
�i�&�"4�f�6J�!K�L�L�L�����Y����4�4�4��K�����	���I��������!��a�(�(�(����Q�q�T�3�'�'�'�'�'r=c�v�|�tjt��tj���dSr�)rrr�rWr>rTs r�testSecondCmsgTrunc0z)RFC3542AncillaryTest.testSecondCmsgTrunc0:sC��	
�'�'��(9�*�(E�(E�4:�4E�	(�	G�	G�	G�	G�	Gr=c��|�|j�|j�����|�t
��dSr�r�rTs r�_testSecondCmsgTrunc0z*RFC3542AncillaryTest._testSecondCmsgTrunc0@r�r=c�d�|�tjt��dz��dSrX�rrr�rWrTs r�testSecondCmsgTrunc1z)RFC3542AncillaryTest.testSecondCmsgTrunc1Es.��	
�'�'��(9�*�(E�(E��(I�J�J�J�J�Jr=c��|�|j�|j�����|�t
��dSr�r�rTs r�_testSecondCmsgTrunc1z*RFC3542AncillaryTest._testSecondCmsgTrunc1Jr�r=c�t�|�tjt��dtzz��dSr�rrTs r�testSecondCmsgTrunc2Intz,RFC3542AncillaryTest.testSecondCmsgTrunc2IntOs?��	
�'�'��(9�*�(E�(E�()�J��)7�	8�	8�	8�	8�	8r=c��|�|j�|j�����|�t
��dSr�r�rTs r�_testSecondCmsgTrunc2Intz-RFC3542AncillaryTest._testSecondCmsgTrunc2IntUr�r=c��|�tjt��tjd��zdz
��dSr)rrr�rWr-rTs r�testSecondCmsgTruncLen0Minus1z2RFC3542AncillaryTest.testSecondCmsgTruncLen0Minus1ZsR��	
�'�'��(9�*�(E�(E�(.���(:�(:�);�=>�)?�	@�	@�	@�	@�	@r=c��|�|j�|j�����|�t
��dSr�r�rTs r�_testSecondCmsgTruncLen0Minus1z3RFC3542AncillaryTest._testSecondCmsgTruncLen0Minus1`r�r=c�p�|j�tjtjd��|j�tjtjd��|j���|�|jtt��tjt��tj
t��zdz
��\}}}}|�|t��|�||j��|�|dtj���tjtjh}|�d��\}}}|�|tj��|�|��|�t|��t��t/jd��}	|	�|��|�|	dd��|�|	dd��|rv|�d��\}}}|�|tj��|�|��|�t|��t��|�|g��dS)Nr�Tr�rrKr-)rcr�rr�rrr*r�r5r�rr�rWr-rr=r�rMr>r�r��pop�remover�rMrTrUr�)
rUrr�r�r�
cmsg_typesrOrPrQr�s
          r�testSecondCmsgTruncInDataz.RFC3542AncillaryTest.testSecondCmsgTruncInDataesC��
	
��!�!�&�"5�"(�":�A�	?�	?�	?���!�!�&�"5�"(�"8�!�	=�	=�	=��������$(�N�N��N�C��H�H���j�)�)�F�O�J�,G�,G�G�!�K�%M�%M�!��W�e�T�	
����c�"�"�"�� � ��t�}�5�5�5�����4�&�2C��D�D�D��(�&�*>�?�
�+2�;�;�q�>�>�(�
�I�y�����V�%8�9�9�9����)�$�$�$�����Y����4�4�4��K�����	���I��������!��a�(�(�(����Q�q�T�3�'�'�'��	8�/6�{�{�1�~�~�,�J�	�9����Z��)<�=�=�=����i�(�(�(��O�O�C�	�N�N�J�7�7�7�����"�%�%�%�%�%r=c��|�|j�|j�����|�t
��dSr�r�rTs r�_testSecondCmsgTruncInDataz/RFC3542AncillaryTest._testSecondCmsgTruncInData�r�r=N)r-rr�)1r\r]r^r�r�r�r�r�rr�r~r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�rrrrr
rrrrrrrrrrr!r#r%r'r,r.r_r=rr�r��s��������I��M����+�+�+�+�8�\�&�-��?�?�-�-�@�?�-��!���"�!���\�&�,�(;�_�M�M�E�E�N�M�E� �+���,�+���\�&�-��+�+��\�&�-��?�?�D�D�@�?�,�+�D�
� ���!� ��?B�12�"+�"+�"+�"+�H�\�&�-��#�]�4�4�<�<�4�4�<�%�0���1�0���\�&�,�(;�_�#�]�4�4�:�:�4�4�:�/�:���;�:���\�&�-��+�+��\�&�,�(;�_�#�]�4�4�A�A�4�4�,�+�A�$�/���0�/���\�&�-��+�+��\�&�,�(;�_�#�]�4�4�A�A�4�4�,�+�A�� �/�/�!� �/�*,�,�,�,�(�\�&�-��?�?�I�I�@�?�I��'���(�'���\�&�-��?�?�I�I�@�?�I��%���&�%���\�&�-��?�?�8�8�@�?�8��%���&�%���\�&�-��?�?�E�E�@�?�E��(���)�(���\�&�-��?�?�M�M�@�?�M�#�.���/�.���\�&�-��?�?�8�8�@�?�8�*�*���+�*��(�(�(�(�@�\�&�,�(;�_�#�]�4�4�G�G�4�4�G��%���&�%���\�&�,�(;�_�#�]�4�4�K�K�4�4�K��%���&�%���\�&�,�(;�_�#�]�4�4�8�8�4�4�8��(���)�(���\�&�,�(;�_�#�]�4�4�@�@�4�4�@�#�.���/�.���\�&�,�(;�_�#�]�4�4�!&�!&�4�4�!&�F�*���+�*���r=r�c��eZdZdS)�SendrecvmsgUDPTestBaseN�r\r]r^r_r=rr0r0��������	�Dr=r0r�c��eZdZdS)�SendmsgUDPTestNr1r_r=rr4r4���������Dr=r4r�c��eZdZdS)�RecvmsgUDPTestNr1r_r=rr7r7�r5r=r7rSc��eZdZdS)�RecvmsgIntoUDPTestNr1r_r=rr9r9�r5r=r9c��eZdZd�ZdS)�SendrecvmsgUDP6TestBasec�R�|�|dd�|dd���dSrr9r:s   rr=z+SendrecvmsgUDP6TestBase.checkRecvmsgAddress��0��	
����s��s��U�3�B�3�Z�0�0�0�0�0r=N�r\r]r^r=r_r=rr;r;�s#������1�1�1�1�1r=r;rJrqr'c��eZdZdS)�SendmsgUDP6TestNr1r_r=rr@r@��������	�Dr=r@c��eZdZdS)�RecvmsgUDP6TestNr1r_r=rrCrC�rAr=rCc��eZdZdS)�RecvmsgIntoUDP6TestNr1r_r=rrErE�rAr=rEr�c��eZdZdS)�RecvmsgRFC3542AncillaryUDP6TestNr1r_r=rrGrG��������	�Dr=rGc��eZdZdS)�#RecvmsgIntoRFC3542AncillaryUDP6TestNr1r_r=rrJrJ�s������	�Dr=rJc��eZdZdS)�SendrecvmsgUDPLITETestBaseNr1r_r=rrLrL�s������
	�Dr=rLc��eZdZdS)�SendmsgUDPLITETestNr1r_r=rrNrN�rAr=rNc��eZdZdS)�RecvmsgUDPLITETestNr1r_r=rrPrP�rAr=rPc��eZdZdS)�RecvmsgIntoUDPLITETestNr1r_r=rrRrR�rAr=rRc��eZdZd�ZdS)�SendrecvmsgUDPLITE6TestBasec�R�|�|dd�|dd���dSrr9r:s   rr=z/SendrecvmsgUDPLITE6TestBase.checkRecvmsgAddress�r=r=Nr>r_r=rrTrT�s#������1�1�1�1�1r=rTc��eZdZdS)�SendmsgUDPLITE6TestNr1r_r=rrWrW�rHr=rWc��eZdZdS)�RecvmsgUDPLITE6TestNr1r_r=rrYrY�rHr=rYc��eZdZdS)�RecvmsgIntoUDPLITE6TestNr1r_r=rr[r[rHr=r[c��eZdZdS)�#RecvmsgRFC3542AncillaryUDPLITE6TestNr1r_r=rr]r]s������	�Dr=r]c��eZdZdS)�'RecvmsgIntoRFC3542AncillaryUDPLITE6TestNr1r_r=rr_r_s������	�Dr=r_c��eZdZdS)�SendrecvmsgTCPTestBaseNr1r_r=rrara$r5r=rac��eZdZdS)�SendmsgTCPTestNr1r_r=rrcrc(r5r=rcc��eZdZdS)�RecvmsgTCPTestNr1r_r=rrere,r2r=rec��eZdZdS)�RecvmsgIntoTCPTestNr1r_r=rrgrg1r2r=rgc��eZdZdS)�SendrecvmsgSCTPStreamTestBaseNr1r_r=rriri7r2r=riz6IPPROTO_SCTP: [Errno 62] Protocol not supported on AIXrOr@rjc��eZdZdS)�SendmsgSCTPStreamTestNr1r_r=rrkrk<rAr=rkc���eZdZ�fd�Z�xZS)�RecvmsgSCTPStreamTestc����	tt|�����dS#t$r6}|jtjkr�|�d��Yd}~dSd}~wwxYw�Nz4sporadic ENOTCONN (kernel issue?) - see issue #13876)rjrmrrr(�ENOTCONNr��rUr�rrs  �rrz$RecvmsgSCTPStreamTest.testRecvmsgEOFHs����	R��'��.�.�=�=�?�?�?�?�?���	R�	R�	R��w�%�.�(�(���M�M�P�Q�Q�Q�Q�Q�Q�Q�Q�Q�����	R�����',�
A,�+A'�'A,�r\r]r^rrzr{s@rrmrmB�A�������R�R�R�R�R�R�R�R�Rr=rmc���eZdZ�fd�Z�xZS)�RecvmsgIntoSCTPStreamTestc����	tt|�����dS#t$r6}|jtjkr�|�d��Yd}~dSd}~wwxYwro)rjrvrrr(rpr�rqs  �rrz(RecvmsgIntoSCTPStreamTest.testRecvmsgEOFVs����	R��+�T�2�2�A�A�C�C�C�C�C���	R�	R�	R��w�%�.�(�(���M�M�P�Q�Q�Q�Q�Q�Q�Q�Q�Q�����	R���rrrsr{s@rrvrvPrtr=rvc��eZdZdS)�SendrecvmsgUnixStreamTestBaseNr1r_r=rryry_r5r=ryrRc��eZdZdS)�SendmsgUnixStreamTestNr1r_r=rr{r{cr2r=r{c��eZdZdS)�RecvmsgUnixStreamTestNr1r_r=rr}r}hrAr=r}c��eZdZdS)�RecvmsgIntoUnixStreamTestNr1r_r=rrrnrAr=rr�rLc��eZdZdS)�RecvmsgSCMRightsStreamTestNr1r_r=rr�r�tr2r=r�c��eZdZdS)�RecvmsgIntoSCMRightsStreamTestNr1r_r=rr�r�yrAr=r�c�`��eZdZ�fd�ZejZeed��r	dZ	d�Z
�xZSdZ	d�Z
�xZS)�InterruptedTimeoutBasec����t�����tjtjd���}|�tjtj|��dS)Nc��ddzSr�r_)�signumrs  rrzz.InterruptedTimeoutBase.setUp.<locals>.<lambda>�s
���A��r=)rjrVrrrt)rU�orig_alrm_handlerrrs  �rrVzInterruptedTimeoutBase.setUp�sS���
���
�
����"�M�&�.�*E�*E�G�G������
�v�~�7H�I�I�I�I�Ir=�	setitimerg�������?c�D�tjtj|��dSrD)rr��ITIMER_REAL�rU�secondss  r�setAlarmzInterruptedTimeoutBase.setAlarm�s����V�/��9�9�9�9�9r=r�c�.�tj|��dSrD)rrr�s  rr�zInterruptedTimeoutBase.setAlarm�s���L��!�!�!�!�!r=)r\r]r^rVrrNrGrr�
alarm_timer�rzr{s@rr�r��s��������
J�J�J�J�J��&�G�
�w�v�{�#�#�
"��
�	:�	:�	:�	:�	:�	:�	:��
�	"�	"�	"�	"�	"�	"�	"r=r��siginterruptrr�z+Don't have signal.alarm or signal.setitimerc���eZdZ�fd�Zd�Zd�Zd�Zd�Zd�Ze	e
j
d��d���Ze	e
j
d	��d
���Z�xZ
S)�InterruptedRecvTimeoutTestc���t�����|j�|j��dSrD)rjrVrPr�rGr0s �rrVz InterruptedRecvTimeoutTest.setUp�s2���
���
�
�����	���T�\�*�*�*�*�*r=c��	|�|j��|�t��5}||i|��ddd��n#1swxYwY|�d��dS#|�d��wxYwr�)r�r�r�r
�rUrPrprqr�s     r�checkInterruptedRecvz/InterruptedRecvTimeoutTest.checkInterruptedRecv�s���	��M�M�$�/�*�*�*��"�"�#4�5�5�
&����d�%�f�%�%�%�
&�
&�
&�
&�
&�
&�
&�
&�
&�
&�
&����
&�
&�
&�
&�
�M�M�!�������D�M�M�!�������s-�4A-�	A�A-�A�A-�A�A-�-Bc�F�|�|jjd��dSr)r�rPrrTs r�testInterruptedRecvTimeoutz5InterruptedRecvTimeoutTest.testInterruptedRecvTimeout�s"���!�!�$�)�.�$�7�7�7�7�7r=c�`�|�|jjtd����dSr)r�rP�	recv_intor�rTs r�testInterruptedRecvIntoTimeoutz9InterruptedRecvTimeoutTest.testInterruptedRecvIntoTimeout�s)���!�!�$�)�"5�y����G�G�G�G�Gr=c�F�|�|jjd��dSr)r�rPr�rTs r�testInterruptedRecvfromTimeoutz9InterruptedRecvTimeoutTest.testInterruptedRecvfromTimeout�s#���!�!�$�)�"4�d�;�;�;�;�;r=c�`�|�|jjtd����dSr)r�rPr�r�rTs r�"testInterruptedRecvfromIntoTimeoutz=InterruptedRecvTimeoutTest.testInterruptedRecvfromIntoTimeout�s)���!�!�$�)�"9�9�T�?�?�K�K�K�K�Kr=r�c�F�|�|jjd��dSr)r�rPr�rTs r�testInterruptedRecvmsgTimeoutz8InterruptedRecvTimeoutTest.testInterruptedRecvmsgTimeout�s#���!�!�$�)�"3�T�:�:�:�:�:r=rSc�b�|�|jjtd��g��dSr)r�rPrSr�rTs r�!testInterruptedRecvmsgIntoTimeoutz<InterruptedRecvTimeoutTest.testInterruptedRecvmsgIntoTimeout�s,���!�!�$�)�"8�9�T�?�?�:K�L�L�L�L�Lr=)r\r]r^rVr�r�r�r�r�r�rr�r�rzr{s@rr�r��s��������+�+�+�+�+����8�8�8�H�H�H�<�<�<�L�L�L��\�&�-��+�+�;�;�,�+�;��\�&�-��0�0�M�M�1�0�M�M�M�M�Mr=r�c����eZdZ�fd�Zd�Zd�Zejdd��d���Zejdd��d���Z	ejdd��e
ejd��d	�����Z�xZ
S)
�InterruptedSendTimeoutTestc���t�����|���|_|�|jj��t
j|j���}|�	��|j
���\|_}|�|jj��|�
��|j�|j��dS)N)�target)rjrVr'rrtr rl�Thread�	doConnect�startrPr�rr�r�rG)rU�
cli_threadrrrs   �rrVz InterruptedSendTimeoutTest.setUp�s����
���
�
�������)�)��������,�-�-�-��%�T�^�<�<�<�
�������"�i�.�.�0�0���
�t�����
�+�,�,�,���������!�!�$�,�/�/�/�/�/r=c�D�|j�|j��dSrD)rr�r+rTs rr�z$InterruptedSendTimeoutTest.doConnect�s ������t�~�.�.�.�.�.r=c��	|�t��5}	|�|j��||i|���##1swxYwY	|�d��dS#|�d��wxYw�NTr)r�r
r�r�r�s     r�checkInterruptedSendz/InterruptedSendTimeoutTest.checkInterruptedSend�s���	��"�"�#4�5�5�
*��*��M�M�$�/�2�2�2��D�$�)�&�)�)�)�*�
*�
*�
*�
*����
*�
*�
*�
*�
*�

�M�M�!�������D�M�M�!�������s(�A$�%A�A�A$�A�	A$�$A;r}r%c�F�|�|jjd��dS�Nr�)r�rrrTs r�testInterruptedSendTimeoutz5InterruptedSendTimeoutTest.testInterruptedSendTimeout�s#���!�!�$�.�"5�x�@�@�@�@�@r=c�R�|�|jjd|j��dSr�)r�rr�r+rTs r�testInterruptedSendtoTimeoutz7InterruptedSendTimeoutTest.testInterruptedSendtoTimeout�s4��	
�!�!�$�.�"7��"&�.�	2�	2�	2�	2�	2r=r�c�H�|�|jjdg��dSr�)r�rr�rTs r�testInterruptedSendmsgTimeoutz8InterruptedSendTimeoutTest.testInterruptedSendmsgTimeouts'��	
�!�!�$�.�"8�8�*�E�E�E�E�Er=)r\r]r^rVr�r�r�requires_mac_verr�r�r�rr�rzr{s@rr�r��s��������0�0�0�0�0�/�/�/�
�
�
��W��b�!�$�$�A�A�%�$�A��W��b�!�$�$�2�2�%�$�2��W��b�!�$�$��\�&�-��+�+�F�F�,�+�%�$�F�F�F�F�Fr=r�c��eZdZd�Zd�ZdS)�
TCPCloserTestc�|�|j���\}}|���|j}t	j|gggd��\}}}|�||g��|�|�d��d��|���|���dS)N��?r�r=)rPr�r r�r�rr)rUr�r�sdr�r?r�s       r�	testClosezTCPCloserTest.testClose
s����Y�%�%�'�'�
��d��
�
����
�X��!�=�"��r�2�s�;�;���e�S������t�$�$�$����������S�)�)�)�	
�
�
�����
�
�����r=c�z�|j�t|jf��t	jd��dS�Nr�)r�r�r�rRr�r�rTs r�
_testClosezTCPCloserTest._testCloses0������$��	�*�+�+�+��
�3�����r=N)r\r]r^r�r�r_r=rr�r�s2�������������r=r�c�@�eZdZdd�Zd�Zd�Zd�Zd�Zd�Zd�Z	d	�Z
d
S)�BasicSocketPairTestr�c�>�t�||���dSr�)rrkr�s  rrkzBasicSocketPairTest.__init__!s!��������<�<�<�<�<r=c��|�|tj��ttd��r&|�|jtj��n%|�|jtj��|�|jtj��|�|j	d��dS)NrRr)
r�rrrr�rRrOr}r@r�r\s  r�_check_defaultsz#BasicSocketPairTest._check_defaults$s������d�F�M�2�2�2��6�9�%�%�	:����T�[�&�.�9�9�9�9����T�[�&�.�9�9�9������F�$6�7�7�7������Q�'�'�'�'�'r=c�:�|�|j��dSrD)r�r�rTs r�
_testDefaultsz!BasicSocketPairTest._testDefaults-s�����T�X�&�&�&�&�&r=c�:�|�|j��dSrD)r�rPrTs r�testDefaultsz BasicSocketPairTest.testDefaults0s�����T�Y�'�'�'�'�'r=c�p�|j�d��}|�|t��dSr)rPrrrrs  rr�zBasicSocketPairTest.testRecv3rr=c�D�|j�t��dSrD)r�rrrTs rr�zBasicSocketPairTest._testRecv7s����
�
�c�����r=c�D�|j�t��dSrD)rPrrrTs r�testSendzBasicSocketPairTest.testSend:s���	���s�����r=c�p�|j�d��}|�|t��dSr)r�rrrrs  r�	_testSendzBasicSocketPairTest._testSend=s1���h�m�m�D�!�!������c�"�"�"�"�"r=Nr�)r\r]r^rkr�r�r�r�r�r�r�r_r=rr�r�s�������=�=�=�=�(�(�(�'�'�'�(�(�(�#�#�#�������#�#�#�#�#r=r�c��eZdZdd�Zd�Zd�Zd�Zejd���Z	eje��Z
eje
ed��d��ejd	d
d��d�����Zd
�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�ZdS)�NonBlockingTCPTestsr�c�n�tj��|_t�||���dSr�)rlr��eventr�rkr�s  rrkzNonBlockingTCPTests.__init__Ds0���_�&�&��
��&�&�t�
�&�C�C�C�C�Cr=c��|�|j���|��|dk}|�|���|��t�a|du}t	j|tjtj��}|�t|tjz��|��dSdS)N�)	rrPr�getblockingr�F_GETFLrF�
O_NONBLOCK�bool)rUrMrG�blocking�fd_blocking�flags      r�assert_sock_timeoutz'NonBlockingTCPTests.assert_sock_timeoutHs��������-�-�/�/��9�9�9��s�N������)�)�+�+�X�6�6�6���#�d�?�K��;�t�U�]�B�M�B�B�D�����d�R�]�&:�!;�!;�;�[�I�I�I�I�I��r=c��|j�d��|�|jd��|j�d��|�|jd��|j�d��|�|jd��|j�d��|�|jd��|j�d��|�|jd��|j�d��|�|jd��dS)NTFr�rr})rPrir�r�rTs r�testSetBlockingz#NonBlockingTCPTests.testSetBlockingYs���	���d�#�#�#�� � ���D�1�1�1��	���e�$�$�$�� � ���C�0�0�0��	���T�"�"�"�� � ���D�1�1�1��	���Q����� � ���A�.�.�.��	���R� � � �� � ���B�/�/�/��	���Q����� � ���A�.�.�.�.�.r=c��dSrDr_rTs r�_testSetBlockingz$NonBlockingTCPTests._testSetBlockingmr"r=c��ddl}|j|jkr|�d��|j�d��|�|j���d��|j�|jdz��|�|j�����dS)Nrzneeds UINT_MAX < ULONG_MAXFr�r�)	r[r��	ULONG_MAXr�rPrirrr�r�s  r�testSetBlocking_overflowz,NonBlockingTCPTests.testSetBlocking_overflowps���	�������!4�4�4��M�M�6�7�7�7��	���e�$�$�$������-�-�/�/��5�5�5��	���i�0�1�4�5�5�5����$�)�.�.�0�0�1�1�1�1�1r=rhztest needs socket.SOCK_NONBLOCKr���c���|j���tjtjtjtjz��|_|�|jd��dSr�)rPr rrOr@rhr�rTs r�testInitNonBlockingz'NonBlockingTCPTests.testInitNonBlockings[��
	
�	�������M�&�.�"(�"4�v�7K�"K�M�M��	�� � ���A�.�.�.�.�.r=c��dSrDr_rTs r�_testInitNonBlockingz(NonBlockingTCPTests._testInitNonBlocking�r"r=c�D�td��5|j�d��|j���\}}|�|j��|�|�����ddd��dS#1swxYwYdS)Nr})rIrPr�r�rtr r�rrs   r�testInheritFlagsBlockingz,NonBlockingTCPTests.testInheritFlagsBlocking�s���&�d�
+�
+�	1�	1��I� � ��$�$�$���)�)�+�+�J�D�$��O�O�D�J�'�'�'����d�o�o�/�/�0�0�0�		1�	1�	1�	1�	1�	1�	1�	1�	1�	1�	1�	1����	1�	1�	1�	1�	1�	1s�A8B�B�Bc�R�|j�t|jf��dSrD�r�r�r�rRrTs r�_testInheritFlagsBlockingz-NonBlockingTCPTests._testInheritFlagsBlocking��%������$��	�*�+�+�+�+�+r=c�J�d}t|��5|j�d��|j���\}}|�|j��|�|���|��ddd��dS#1swxYwYdS)Ng4@r})rIrPr�r�rtr rr)rU�default_timeoutr�rs    r�testInheritFlagsTimeoutz+NonBlockingTCPTests.testInheritFlagsTimeout�s�����
%�o�
6�
6�	A�	A��I� � ��$�$�$���)�)�+�+�J�D�$��O�O�D�J�'�'�'����T�_�_�.�.��@�@�@�		A�	A�	A�	A�	A�	A�	A�	A�	A�	A�	A�	A����	A�	A�	A�	A�	A�	As�A9B�B�Bc�R�|j�t|jf��dSrDr�rTs r�_testInheritFlagsTimeoutz,NonBlockingTCPTests._testInheritFlagsTimeout�r�r=c���|j�d��tj��}|�t
��5|j���\}}ddd��n#1swxYwYtj��|z
}|�|d��|j�	��tj
|jgggtj��\}}}|j|vr|�
d��|j���\}}|�|j��|�|�����dS)NFr�z'Error trying to do accept after select.)rPrir��	monotonicr��BlockingIOErrorr�r�r�r�r�r�LONG_TIMEOUTr�rtr r�r)rU�
start_timer�r�dtr�r?r�s        r�
testAcceptzNonBlockingTCPTests.testAccept�ss���	���e�$�$�$��^�%�%�
�
�
�
��
/�
/�	,�	,���)�)�+�+�J�D�$�	,�	,�	,�	,�	,�	,�	,�	,�	,�	,�	,����	,�	,�	,�	,�
�^�
�
�
�
*������C� � � ��
������!�=�$�)��b�"�g�>R�S�S���e�S��9�D� � ��I�I�?�@�@�@��Y�%�%�'�'�
��d�����
�#�#�#����$�/�/�+�+�,�,�,�,�,s�A1�1A5�8A5c��|j���|j�t|jf��dSrD)r�r�r�r�r�rRrTs r�_testAcceptzNonBlockingTCPTests._testAccept�s9��	
�
����������$��	�*�+�+�+�+�+r=c��|j���\}}|�|j��|�d��|�t��5|�tt����}ddd��n#1swxYwY|j
���tj|gggtj��\}}}||vr|�d��|�tt����}|�|t��dS)NFz0Error during select call to non-blocking socket.)rPr�rtr rir�r�rr�rr�r�r�rr�r�r)rUr�rrr�r?r�s       rr�zNonBlockingTCPTests.testRecv�sK���Y�%�%�'�'�
��d�����
�#�#�#���������
�
��
/�
/�	&�	&��)�)�C��H�H�%�%�C�	&�	&�	&�	&�	&�	&�	&�	&�	&�	&�	&����	&�	&�	&�	&�	
�
������!�=�$���R��9M�N�N���e�S��t����I�I�H�I�I�I��i�i��C���!�!������c�"�"�"�"�"s�&(B�B�!Bc���|j�t|jf��|j���|j�t��dSrD)r�r�r�rRr�r�rrrTs rr�zNonBlockingTCPTests._testRecv�sQ������$��	�*�+�+�+�	
�
������	
���������r=Nr�)r\r]r^rkr�r�r�rr�r��_testSetBlocking_overflowr�r�rr�requires_linux_versionr�r�r�r�r�r�r�rr�r�r_r=rr�r�Bss������D�D�D�D�J�J�J�"/�/�/�(
�
�
�
��
2�
2���
2�!5�� 4�5E� F� F���X������9�9�:�<�<�#�W�#�A�q�"�-�-�/�/�.�-�<�<�/�
�
�
�1�1�1�,�,�,�	A�	A�	A�,�,�,�-�-�-�,,�,�,�#�#�#�(����r=r�c���eZdZdZdZdZdZdZdZe	Z
dZe	Zd"d	�Z
d
�Zd�Zd�Zd
�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Z d�Z!d�Z"d�Z#d �Z$d!�Z%dS)#�FileObjectClassTestCaseaoUnit tests for the object returned by socket.makefile()

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

    self.write_file is the io object returned by makefile() on the
    server connection.  You can write to this file to send output
    to the client.
    rWr	�strictNrr0r�c�>�t�||���dSr�r�r�s  rrkz FileObjectClassTestCase.__init__�r�r=c��d�td��D��\|_|_|_|_t
�|��|j�|j	|j
|j|j|j
���|_dS)Nc�4�g|]}tj����Sr_)rlr��r�rKs  rr�z1FileObjectClassTestCase.setUp.<locals>.<listcomp>�s3��G1�G1�G1�"#�I�O���G1�G1�G1r=r��r4�errors�newline)r=�evt1�evt2�
serv_finished�cli_finishedrrVrr�	read_moder�r4r
r�	read_filerTs rrVzFileObjectClassTestCase.setUp�s���G1�G1�',�Q�x�x�G1�G1�G1�C��	�4�9�d�0�$�2C��!�!�$�'�'�'���/�/��N�D�L��}��[��l�	0�$�$����r=c���|j���|j���|�|jj��d|_t�|��dSrD)rr�rr r��closedrrYrTs rrYz FileObjectClassTestCase.tearDownsc������ � � �������������-�.�.�.�����$�$�T�*�*�*�*�*r=c��t�|��|j�|j|j|j|j|j���|_	dS)Nr)
rr�rr�
write_moder�r4r
r�
write_filerTs rr�z#FileObjectClassTestCase.clientSetUpsP���'�'��-�-�-��.�1�1��O�T�\��}��[��l�	2�$�$����r=c���|j���|j���|�|jj��d|_t�|��dSrD)rr�rr r�rrr�rTs rr�z&FileObjectClassTestCase.clientTearDownsc���������������������.�/�/�/�����*�*�4�0�0�0�0�0r=c��|j�d��|j�d��|�t
|jjd��|�t��5}|j�d��ddd��n#1swxYwY|�dt|j	����dS)Nr�r�z!cannot read from timed out object)
rr�rr�r�rrr�r�r�)rU�ctxs  r�testReadAfterTimeoutz,FileObjectClassTestCase.testReadAfterTimeouts���	
�
� � ��#�#�#�����A�������,���(;�Q�?�?�?�
�
�
�w�
'�
'�	#�3��N����"�"�"�	#�	#�	#�	#�	#�	#�	#�	#�	#�	#�	#����	#�	#�	#�	#��
�
�9�3�s�}�;M�;M�N�N�N�N�Ns�5B�B �#B c��|j�|jdd���|j���|j���dS)Nrr�)rr?�	write_msg�flushrr�rTs r�_testReadAfterTimeoutz-FileObjectClassTestCase._testReadAfterTimeout'sR������d�n�Q�q�S�1�2�2�2������������!�!�!�!�!r=c���|j�t|j��dz
��}|j�d��}||z}|�||j��dSr�)rr�r��read_msgr)rU�	first_seg�
second_segrs    r�
testSmallReadz%FileObjectClassTestCase.testSmallRead,sc���N�'�'��D�M�(:�(:�1�(<�=�=�	��^�(�(��+�+�
��*�$������d�m�,�,�,�,�,r=c�v�|j�|j��|j���dSrD�rr?rr rTs r�_testSmallReadz&FileObjectClassTestCase._testSmallRead3�4������d�n�-�-�-���������r=c�n�|j���}|�||j��dSrD)rr�rr#rs  r�testFullReadz$FileObjectClassTestCase.testFullRead7s3���n�!�!�#�#������d�m�,�,�,�,�,r=c�v�|j�|j��|j���dSrD)rr?rr rTs r�
_testFullReadz%FileObjectClassTestCase._testFullRead<r*r=c��t|j����}	|j�d��}|sn||z
}�#|�||j��dSrX)r}r#rr�r)rUrV�chars   r�testUnbufferedReadz*FileObjectClassTestCase.testUnbufferedRead@sl��!�d�4�=�!�!�#�#��	��>�&�&�q�)�)�D��
���4�K�C�		�
	
����d�m�,�,�,�,�,r=c�v�|j�|j��|j���dSrDr(rTs r�_testUnbufferedReadz+FileObjectClassTestCase._testUnbufferedReadJr*r=c�n�|j���}|�||j��dSrD)r�readlinerr#�rU�lines  r�testReadlinez$FileObjectClassTestCase.testReadlineNs3���~�&�&�(�(������t�}�-�-�-�-�-r=c�v�|j�|j��|j���dSrDr(rTs r�
_testReadlinez%FileObjectClassTestCase._testReadlineSr*r=c��|j���|j���}|�||j��dSrD)rr rr�rr#rs  r�testCloseAfterMakefilez.FileObjectClassTestCase.testCloseAfterMakefileWsG���
�������n�!�!�#�#������d�m�,�,�,�,�,r=c�v�|j�|j��|j���dSrDr(rTs r�_testCloseAfterMakefilez/FileObjectClassTestCase._testCloseAfterMakefile^r*r=c�"�|j���|j�t	t
����}t
|jt��r|�	��}|�
||j��dSrD)rr rrr�rr|r#r��decoderrs  r�testMakefileAfterMakefileClosez6FileObjectClassTestCase.testMakefileAfterMakefileClosebsp����������m� � ��S���*�*���d�m�S�)�)�	��*�*�,�,�C�����d�m�,�,�,�,�,r=c�v�|j�|j��|j���dSrDr(rTs r�_testMakefileAfterMakefileClosez7FileObjectClassTestCase._testMakefileAfterMakefileCloseir*r=c�F�|�|jj��dSrD)r�rrrTs r�testClosedAttrz&FileObjectClassTestCase.testClosedAttrms"�����D�N�1�1�2�2�2�2�2r=c�F�|�|jj��dSrD)r�rrrTs r�_testClosedAttrz'FileObjectClassTestCase._testClosedAttrps"�����D�O�2�2�3�3�3�3�3r=c��|�|jj|j��|�|jj|j�����dSrD)rrr2rr�rr�rTs r�testAttributesz&FileObjectClassTestCase.testAttributesssN�������,�d�n�=�=�=������,�d�m�.B�.B�.D�.D�E�E�E�E�Er=c��|�|jj|j��|�|jj|j�����dSrD)rrr2rr�rr�rTs r�_testAttributesz'FileObjectClassTestCase._testAttributeswsN�������-�t��?�?�?������-�t�~�/D�/D�/F�/F�G�G�G�G�Gr=c��|j���|�t|jj��|j���|�t|jj��dSrD)rr r�r�r�rrr�rTs r�
testRealClosez%FileObjectClassTestCase.testRealClose{sf������������*�d�n�&;�<�<�<��
���������'�4�=�#<�=�=�=�=�=r=c��dSrDr_rTs r�_testRealClosez&FileObjectClassTestCase._testRealClose�r"r=r�)&r\r]r^ryr�r4r
rrrr#rrrkrVrYr�r�rr!r&r)r,r.r1r3r8r:r<r>rArCrErGrIrKrMrOr_r=rrr�s�������	�	��G��H�
�F��G��I��H��J��I�B�B�B�B�$�$�$�+�+�+�$�$�$�1�1�1�
O�
O�
O�"�"�"�
-�-�-� � � �-�-�-�
 � � �-�-�-� � � �.�.�.�
 � � �-�-�-� � � �-�-�-� � � �3�3�3�4�4�4�F�F�F�H�H�H�>�>�>�
�
�
�
�
r=rc�R�eZdZdZdZd�Zd�Zd�Zd�Zd�Z	d�Z
d	�Zd
�Zd�Z
d�Zd
S)�!UnbufferedFileObjectClassTestCasea�Repeat the tests from FileObjectClassTestCase with bufsize==0.

    In this case (and in this case only), it should be possible to
    create a file object, read a line from it, create another file
    object, read another line from it, without loss of data in the
    first file object's buffer.  Note that http.client relies on this
    when reading multiple requests from the same socket.rc�"�|j���}|�|d|jz��|j�dd��|_|j���}|�|d|jz��dS)N�A. rr�B. )rr5rrrrr6s  r�testUnbufferedReadlinez8UnbufferedFileObjectClassTestCase.testUnbufferedReadline�s����~�&�&�(�(������v���6�7�7�7���/�/��a�8�8����~�&�&�(�(������v���6�7�7�7�7�7r=c��|j�d|jz��|j�d|jz��|j���dS)NrSrTr(rTs r�_testUnbufferedReadlinez9UnbufferedFileObjectClassTestCase._testUnbufferedReadline�sV������f�t�~�5�6�6�6�����f�t�~�5�6�6�6���������r=c� �|j���|j�d��}|�||j��|j���|�t|jjd��dSr)rr rrr#rr�rrs  r�testMakefileClosez3UnbufferedFileObjectClassTestCase.testMakefileClose�sz���
�������m� � ��&�&������d�m�,�,�,�����������'�4�=�#5�t�<�<�<�<�<r=c�v�|j�|j��|j���dSrDr(rTs r�_testMakefileClosez4UnbufferedFileObjectClassTestCase._testMakefileClose�r*r=c���tj|j��}|j���tj|j��}|�|dz
|��dSrX)r?r=rrr r)rU�refcount_before�refcount_afters   r�testMakefileCloseSocketDestroyz@UnbufferedFileObjectClassTestCase.testMakefileCloseSocketDestroy�sY���/�$�-�8�8�������������7�7������1�,�n�=�=�=�=�=r=c��dSrDr_rTs r�_testMakefileCloseSocketDestroyzAUnbufferedFileObjectClassTestCase._testMakefileCloseSocketDestroy�r"r=c�$�|j�d��|�|j�td����d��|�|j�t|j��dz
��d��|j	�
��|j�d��|j�t|j��dz
��}|�Ctjd��|j�t|j��dz
��}td��}|j�|��}|�|d��||d|�z}|�||j��|�|j�td����d��|�|j�d��d��dS)NFr}r�r�g�?rGr�)rrirr�readintor�r�r�r#rr�rr�r�r�)rUr$rVr5rs     r�testSmallReadNonBlockingz:UnbufferedFileObjectClassTestCase.testSmallReadNonBlocking�s����
�!�!�%�(�(�(������0�0��2���?�?��F�F�F������,�,�S���-?�-?�!�-C�D�D�d�K�K�K��	�
�
�����	���s�����N�'�'��D�M�(:�(:�Q�(>�?�?�	����J�s�O�O�O���+�+�C��
�,>�,>��,B�C�C�I���m�m���N�#�#�C�(�(������A�����#�b�q�b�'�!������d�m�,�,�,������0�0��2���?�?��F�F�F������,�,�Q�/�/��6�6�6�6�6r=c��|j�d��|j�|j��|j���|j���|j�d��dS)Nr��@)	rr�rr?rr rr�rrTs r�_testSmallReadNonBlockingz;UnbufferedFileObjectClassTestCase._testSmallReadNonBlocking�sp���	���s��������d�n�-�-�-���������	�
�
����	
�����$�$�$�$�$r=c��|j�d��|jr|�|j��dSdS)Nrf)rr��serv_skippedr�rTs r�testWriteNonBlockingz6UnbufferedFileObjectClassTestCase.testWriteNonBlocking�sK������s�#�#�#���	-��M�M�$�+�,�,�,�,�,�	-�	-r=c�f�d|_|j�d��dtjz}d}|j�|��}|�|d��t|��D]7}|j�|��}|�dS|�|d���8d|_dS)NFr
r}rz$failed to saturate the socket buffer)	rirrirrrr?r/r=)rU�BIG�LIMITr5rKs     r�_testWriteNonBlockingz7UnbufferedFileObjectClassTestCase._testWriteNonBlocking�s��� �����"�"�5�)�)�)��W�*�*�����O�!�!�#�&�&�����1�a� � � ��u���
	G�
	G�A���%�%�c�*�*�A��y�������q�!�$�$�$�$�
!G�D���r=N)r\r]r^ryr�rUrWrYr[r_rardrgrjrnr_r=rrQrQ�s�������<�<��G�8�8�8� � � �
=�=�=� � � �>�>�>�
�
�
�7�7�7�&%�%�%�-�-�-�G�G�G�G�Gr=rQc��eZdZdZdS)�#LineBufferedFileObjectClassTestCaser�N�r\r]r^r�r_r=rrprp���������G�G�Gr=rpc��eZdZdZdS)�$SmallBufferedFileObjectClassTestCaser�Nrqr_r=rrtrt�rrr=rtc�L�eZdZdZdZe�d��ZdZeZ	dZ
dS)�"UnicodeReadFileObjectClassTestCase�=Tests for socket.makefile() in text mode (rather than binary)rr	r0r�N�r\r]r^ryrrr@r#rrrr_r=rrvrv�s9������G�G��I��z�z�'�"�"�H��J��I��G�G�Gr=rvc�L�eZdZdZdZeZdZe�d��Z	dZ
dS)�#UnicodeWriteFileObjectClassTestCaserwrr/r	r�N)r\r]r^ryrrr#rr@rrr_r=rrzrzs9������G�G��I��H��J��
�
�7�#�#�I��G�G�Gr=rzc�r�eZdZdZdZe�d��ZdZe�d��Z	dZ
dS)�'UnicodeReadWriteFileObjectClassTestCaserwrr	r/r�Nrxr_r=rr|r|sE������G�G��I��z�z�'�"�"�H��J��
�
�7�#�#�I��G�G�Gr=r|c��eZdZdZd�ZdS)�NetworkConnectionTestzProve network connection.c�h�tjt|jf��|_|j|_dSrD)r�create_connectionr�rRr�rrTs rr�z!NetworkConnectionTest.clientSetUps*���+�T�4�9�,=�>�>��������r=N)r\r]r^ryr�r_r=rr~r~s)������#�#�"�"�"�"�"r=r~c��eZdZdZdS)�
BasicTCPTest2zLTests that NetworkConnection does not break existing TCP functionality.
    N)r\r]r^ryr_r=rr�r�"s���������r=r�c�l�eZdZGd�dej��Zejd���Zd�Zd�Z	d�Z
d�ZdS)	�NetworkConnectionNoServerc��eZdZd�ZdS)�$NetworkConnectionNoServer.MockSocketc� �td���)Nz	timed out)rr0s  rr�z,NetworkConnectionNoServer.MockSocket.connect)s���{�+�+�+r=N)r\r]r^r�r_r=r�
MockSocketr�(s#������	,�	,�	,�	,�	,r=r�c#�K�tj}|jt_	dV�|t_dS#|t_wxYw)z*Return a socket which times out on connectN)rr�)rU�
old_sockets  r�mocked_socket_modulez.NetworkConnectionNoServer.mocked_socket_module,sD�����]�
����
�	'��E�E�E�&�F�M�M�M��J�F�M�&�&�&�&s	�3�Ac��tj��}tjtjtj��}|�|j��|�t��5}|�	t|f��ddd��n#1swxYwY|�|jj
tj��dSrD)rr�rrOr@rtr r�rr�r�rr�r(�ECONNREFUSED)rUrRr�r�s    r�test_connectz&NetworkConnectionNoServer.test_connect6s����-�/�/���m�F�N�F�,>�?�?������	�"�"�"�
�
�
�w�
'�
'�	&�2��K�K��t��%�%�%�	&�	&�	&�	&�	&�	&�	&�	&�	&�	&�	&����	&�	&�	&�	&������+�U�-?�@�@�@�@�@s�1B�B�!Bc�,�tj��}|�t��5}t	jt|f��ddd��n#1swxYwYtj��}|�|j	j
|��dSrD)rr�r�rrr�r��get_socket_conn_refused_errsr�r�r()rUrRr��expected_errnoss    r�test_create_connectionz0NetworkConnectionNoServer.test_create_connection>s����-�/�/��
�
�
�w�
'�
'�	3�2��$�d�D�\�2�2�2�	3�	3�	3�	3�	3�	3�	3�	3�	3�	3�	3����	3�	3�	3�	3�"(�D�F�F���
�
�b�l�(�/�:�:�:�:�:s�A�A�Ac���tj��}	tjt|fd���|�d��n#t$r}|}Yd}~nd}~wwxYw|�|t��|jD]}|�|t���tj
d|dtj��}|�t|��t|j����dS)NT)�
all_errorszexpected connection to failr�r)rr�rr�r�r��ExceptionGroupr��
exceptionsrr�r@rr�)rUrRr��eg�	addressess     r�!test_create_connection_all_errorsz;NetworkConnectionNoServer.test_create_connection_all_errorsVs���-�/�/��	5��$�d�D�\�d�C�C�C�C�
�I�I�3�4�4�4�4���	�	�	��B�B�B�B�B�B�����	����
	
���b�.�1�1�1���	.�	.�A��!�!�!�W�-�-�-�-��&���q�&�"4�6�6�	�	
����Y����R�]�);�);�<�<�<�<�<s�A�
A�A�Ac�L�|���5	tjtdf��|�d��nD#t
$rYn8t$r,}tjs|j	tj
kr�Yd}~nd}~wwxYwddd��dS#1swxYwYdS)Nr
zTimeoutError not raised)r�rr�r�r�rrrr�r(�EAFNOSUPPORTr�s  r�test_create_connection_timeoutz8NetworkConnectionNoServer.test_create_connection_timeouths���
&�
&�
(�
(�		5�		5�
5��(�$���6�6�6��	�	�3�4�4�4�4��
 �
�
�
����
�
�
� �-����e�>P�1P�1P��2Q�1P�1P�1P�1P�����
����		5�		5�		5�		5�		5�		5�		5�		5�		5�		5�		5�		5����		5�		5�		5�		5�		5�		5sE�B�A�B�
B	�B�	B	�"B�?B�B	�	B�B� BN)r\r]r^rr��
contextlib�contextmanagerr�r�r�r�r�r_r=rr�r�&s�������,�,�,�,�,�V�]�,�,�,���'�'���'�A�A�A�;�;�;�0=�=�=�$5�5�5�5�5r=r�c�d�eZdZd
d�Zd�Zd�Zd�ZeZd�ZeZ	d�Z
eZd�ZeZ
d	�ZeZd
�ZeZd�ZdS)�NetworkConnectionAttributesTestr�c�r�t�||���t�|��dSr�r�r�s  rrkz(NetworkConnectionAttributesTest.__init__yr�r=c�6�tj��|_dSrD)rr��source_portrTs rr�z+NetworkConnectionAttributesTest.clientSetUp}s��(�9�;�;����r=c�z�|j���d|_t�|��dSrDr�rTs rr�z.NetworkConnectionAttributesTest.clientTearDown�r�r=c�f�|j���\}}|���dSrD)rPr�r rs   r�_justAcceptz+NetworkConnectionAttributesTest._justAccept�s*���Y�%�%�'�'�
��d��
�
�����r=c���tjt|jftj���|_|�|jj��|�	|jj
d��dS)Nr�r�)rr�r�rRrrNr�rtr rr�rTs r�_testFamilyz+NetworkConnectionAttributesTest._testFamily�s`���+�T�4�9�,=�$+�$<�>�>�>���������'�'�'�������!�,�,�,�,�,r=c�&�tjt|jftjd|jf���|_|�|jj	��|�
|j���d|j��dS)Nr�)rG�source_addressr�)rr�r�rRrrNr�r�rtr rr�rTs r�_testSourceAddressz2NetworkConnectionAttributesTest._testSourceAddress�s����+�T�4�9�,=�$+�$<�,.��0@�+A�C�C�C���	
������'�'�'������-�-�/�/��2�D�4D�E�E�E�E�Er=c��|�tj��du��tjd��	tjt
|jf��|_|�|jj	��tjd��n#tjd��wxYw|�
|j���d��dS)NrZ�r�rrErFr�r�rRr�rtr rrrTs r�_testTimeoutDefaultz3NetworkConnectionAttributesTest._testTimeoutDefault�s�������0�2�2�d�:�;�;�;�� ��$�$�$�	+��/��t�y�0A�B�B�D�H��O�O�D�H�N�+�+�+��$�T�*�*�*�*��F�$�T�*�*�*�*���������,�,�.�.��3�3�3�3�3s�AB�B-c���|�tj��du��tjd��	tjt
|jfd���|_|�|jj	��tjd��n#tjd��wxYw|�
|j���d��dS�N�r�r�rTs r�_testTimeoutNonez0NetworkConnectionAttributesTest._testTimeoutNone�s�������0�2�2�d�:�;�;�;�� ��$�$�$�	+��/��t�y�0A�4�P�P�P�D�H��O�O�D�H�N�+�+�+��$�T�*�*�*�*��F�$�T�*�*�*�*���������,�,�.�.��5�5�5�5�5s�AB�B/c��tjt|jfd���|_|�|j���d��dSr�)rr�r�rRr�rrrTs r�_testTimeoutValueNamedz6NetworkConnectionAttributesTest._testTimeoutValueNamed�sJ���+�T�4�9�,=�r�J�J�J��������,�,�.�.��3�3�3�3�3r=c���tjt|jfd��|_|�|jj��|�|j���d��dS)Nr�)	rr�r�rRr�rtr rrrTs r�_testTimeoutValueNonamedz8NetworkConnectionAttributesTest._testTimeoutValueNonamed�s]���+�T�4�9�,=�r�B�B���������'�'�'������,�,�.�.��3�3�3�3�3r=Nr�)r\r]r^rkr�r�r��
testFamilyr��testSourceAddressr��testTimeoutDefaultr��testTimeoutNoner��testTimeoutValueNamedr��testTimeoutValueNonamedr�r_r=rr�r�ws�������&�&�&�&�<�<�<�,�,�,�
����J�-�-�-�$��F�F�F�%��	4�	4�	4�"�O�	6�	6�	6�(��4�4�4�*��4�4�4�4�4r=r�c�8�eZdZd	d�Zd�Zd�Zd�ZeZd�Zd�Z	dS)
�NetworkConnectionBehaviourTestr�c�r�t�||���t�|��dSr�r�r�s  rrkz'NetworkConnectionBehaviourTest.__init__�r�r=c��dSrDr_rTs rr�z*NetworkConnectionBehaviourTest.clientSetUp�r"r=c�z�|j���d|_t�|��dSrDr�rTs rr�z-NetworkConnectionBehaviourTest.clientTearDown�r�r=c���|j���\}}|�|j��t	jd��|�d��dS)Nr��done!)rPr�rtr r�r�rrs   r�testInsideTimeoutz0NetworkConnectionBehaviourTest.testInsideTimeout�sR���Y�%�%�'�'�
��d�����
�#�#�#��
�1�
�
�
��	�	�(�����r=c��tjt|jf��x|_}|�d��}|�|d��dS)Nr�r�)rr�r�rRr�rr)rUrMrs   r�_testInsideTimeoutz1NetworkConnectionBehaviourTest._testInsideTimeout�sK�� �2�D�$�)�3D�E�E�E���4��y�y��|�|������x�(�(�(�(�(r=c���tjt|jfd���x|_�|�t�fd���dS)Nr�r�c�.����d��S)Nr�)r)rMs�rrzzDNetworkConnectionBehaviourTest._testOutsideTimeout.<locals>.<lambda>�s����	�	�!���r=)rr�r�rRr�r�rr\s @r�_testOutsideTimeoutz2NetworkConnectionBehaviourTest._testOutsideTimeout�sL��� �2�D�$�)�3D�a�P�P�P�P���4����,�(<�(<�(<�(<�=�=�=�=�=r=Nr�)
r\r]r^rkr�r�r��testOutsideTimeoutr�r�r_r=rr�r��s{������&�&�&�&�
�
�
�,�,�,�
���
+��)�)�)�
>�>�>�>�>r=r�c�b�eZdZd�Zd�Zejeed��d��d���Z	dS)�TCPTimeoutTestc�J���fd�}��t|d��dS)Nc�n���j�d���j���dSr�)rPr�r��rprqrUs  �r�
raise_timeoutz4TCPTimeoutTest.testTCPTimeout.<locals>.raise_timeout�s3����I� � ��%�%�%��I�������r=z*Error generating a timeout exception (TCP)�r�r�rUr�s` r�testTCPTimeoutzTCPTimeoutTest.testTCPTimeout�sL���	�	�	�	�	�	
���,�
�J�	L�	L�	L�	L�	Lr=c�8�d}	|j�d��|j���}nI#t$r|�d��Yn(t
$rd}Yn|�d��YnxYw|s|�d��dSdS)NFr�z%caught timeout instead of error (TCP)Tz!caught unexpected exception (TCP)z3accept() returned success when we did not expect it)rPr�r�rr�r�rU�okr�s   r�testTimeoutZerozTCPTimeoutTest.testTimeoutZero�s���
��	;��I� � ��%�%�%��)�"�"�$�$�C�C���	?�	?�	?��I�I�=�>�>�>�>�>��	�	�	��B�B�B�	;��I�I�9�:�:�:�:�:�����	M��I�I�K�L�L�L�L�L�	M�	Ms�38�A>�A>�&A>rztest needs signal.alarm()c�>��|j�d��Gd�dt����fd�}tjtj|��}		tjd��|j���}|�d��ns#t$r|�d��YnR�$rYnL|�dtj
��dd�tj��fzz��YnxYwtjd	��n#tjd	��wxYwn #�$r|�d
��YnwxYwtjtj|��dS#tjtj|��wxYw)Nrfc��eZdZdS)�4TCPTimeoutTest.testInterruptedTimeout.<locals>.AlarmNr1r_r=r�Alarmr��s�������Dr=r�c�����rDr_)rrr�s  �r�
alarm_handlerz<TCPTimeoutTest.testInterruptedTimeout.<locals>.alarm_handler�s����Kr=r�znothing caughtzcaught timeout instead of Alarmz3caught other exception instead of Alarm: %s(%s):
%srzgot Alarm in wrong place)
rPr�rErrrr�r�rr?�exc_info�	traceback�
format_exc)rUr�rr�r�s    @r�testInterruptedTimeoutz%TCPTimeoutTest.testInterruptedTimeout�s����	
�	���S�!�!�!�	�	�	�	�	�I�	�	�	�	�	�	�	�	��M�&�.�-�@�@�	�	5�
 ���Q�����i�&�&�(�(���	�	�*�+�+�+�+�� �
=�
=�
=��	�	�;�<�<�<�<�<��
�
�
���
L��	�	�)��<�>�>�"�1�"�-��1E�1G�1G�0I�I�K�L�L�L�L�L������Q��������Q�����������	2�	2�	2��I�I�0�1�1�1�1�1�	2����
�M�&�.�)�4�4�4�4�4��F�M�&�.�)�4�4�4�4���sg�-B�D �D�7D �9D�=D �?AD�D �D:� D6�6D:�9E;�:E�E;�E�E;�;!FN)
r\r]r^r�r�r�r�rrr�r_r=rr�r��sv������L�L�L�M�M�M��X������1�1�4�6�6�5�5�6�6�5�5�5r=r�c��eZdZd�Zd�ZdS)�UDPTimeoutTestc�J���fd�}��t|d��dS)Nc�p���j�d���j�d��dS�Nr�r�rPr�rr�s  �rr�z4UDPTimeoutTest.testUDPTimeout.<locals>.raise_timeout�3����I� � ��%�%�%��I�N�N�4� � � � � r=z*Error generating a timeout exception (UDP)r�r�s` r�testUDPTimeoutzUDPTimeoutTest.testUDPTimeoutsL���	!�	!�	!�	!�	!�	
���,�
�J�	L�	L�	L�	L�	Lr=c�:�d}	|j�d��|j�d��}nI#t$r|�d��Yn(t
$rd}Yn|�d��YnxYw|s|�d��dSdS)NFr�rz%caught timeout instead of error (UDP)Tz!caught unexpected exception (UDP)�1recv() returned success when we did not expect it�rPr�rrr�rr�s   rr�zUDPTimeoutTest.testTimeoutZeros���
��	;��I� � ��%�%�%��)�.�.��&�&�C�C���	?�	?�	?��I�I�=�>�>�>�>�>��	�	�	��B�B�B�	;��I�I�9�:�:�:�:�:�����	K��I�I�I�J�J�J�J�J�	K�	K��49�A?�A?�'A?N)r\r]r^r�r�r_r=rr�r�s:������L�L�L�K�K�K�K�Kr=r�c��eZdZd�Zd�ZdS)�UDPLITETimeoutTestc�J���fd�}��t|d��dS)Nc�p���j�d���j�d��dSr�r�r�s  �rr�z<UDPLITETimeoutTest.testUDPLITETimeout.<locals>.raise_timeout2r�r=z.Error generating a timeout exception (UDPLITE)r�r�s` r�testUDPLITETimeoutz%UDPLITETimeoutTest.testUDPLITETimeout1sL���	!�	!�	!�	!�	!�	
���,�
�N�	P�	P�	P�	P�	Pr=c�:�d}	|j�d��|j�d��}nI#t$r|�d��Yn(t
$rd}Yn|�d��YnxYw|s|�d��dSdS)NFr�rz)caught timeout instead of error (UDPLITE)Tz%caught unexpected exception (UDPLITE)r�r�r�s   rr�z"UDPLITETimeoutTest.testTimeoutZero8s���
��	?��I� � ��%�%�%��)�.�.��&�&�C�C���	C�	C�	C��I�I�A�B�B�B�B�B��	�	�	��B�B�B�	?��I�I�=�>�>�>�>�>�����	K��I�I�I�J�J�J�J�J�	K�	Kr�N)r\r]r^r�r�r_r=rr�r�-s:������P�P�P�K�K�K�K�Kr=r�c��eZdZd�Zd�ZdS)�TestExceptionsc� �|�ttt����|�ttjt����|�ttjt����|�ttjt����|�tj	t��|�tjt��dSrD)r��
issubclassrrErr�r�rG�assertIs�errorrrTs r�testExceptionTreez TestExceptions.testExceptionTreeHs������
�7�I�6�6�7�7�7����
�6�=�'�:�:�;�;�;����
�6�?�G�<�<�=�=�=����
�6�>�7�;�;�<�<�<��
�
�f�l�G�,�,�,��
�
�f�n�l�3�3�3�3�3r=c��tjtjtjd��}tjtjtjd|�����}|���|�|j��|�t��5|�	d��ddd��dS#1swxYwYdS)NrF)
rrOr@r�r rtror�rri)rU�sock0rMs   r�test_setblocking_invalidfdz)TestExceptions.test_setblocking_invalidfdPs����
�f�n�f�.@�!�D�D���}��N�F�.��5�<�<�>�>�C�C��
���
�
�
������$�$�$�
�
�
�w�
'�
'�	$�	$����U�#�#�#�	$�	$�	$�	$�	$�	$�	$�	$�	$�	$�	$�	$����	$�	$�	$�	$�	$�	$s�0C�C�CN)r\r]r^r�r�r_r=rr�r�Fs2������4�4�4�
$�
$�
$�
$�
$r=r�rh�Linux specific testc�6�eZdZdZd�Zd�Zd�Zd�Zd�Zd�Z	dS)	�TestLinuxAbstractNamespace�lc��d}tjtjtj��5}|�|��|���tjtjtj��5}|�|�����|���d5}|�|���|��|�|�	��|��ddd��n#1swxYwYddd��n#1swxYwYddd��dS#1swxYwYdS)Nspython-test-hello�r)
rrRr@r�rSr�r�r�rr�)rUr��s1r��s3s     r�testLinuxAbstractNamespacez5TestLinuxAbstractNamespace.testLinuxAbstractNamespacebs���2��
�]�6�>�6�+=�
>�
>�	@�"��G�G�G�����I�I�K�K�K���v�~�v�/A�B�B�
@�b��
�
�2�>�>�+�+�,�,�,��Y�Y�[�[��^�@�r��$�$�R�^�^�%5�%5�w�?�?�?��$�$�R�^�^�%5�%5�w�?�?�?�@�@�@�@�@�@�@�@�@�@�@����@�@�@�@�
@�
@�
@�
@�
@�
@�
@�
@�
@�
@�
@����
@�
@�
@�
@�	@�	@�	@�	@�	@�	@�	@�	@�	@�	@�	@�	@����	@�	@�	@�	@�	@�	@s\�AE
�?AD5�AD�D5�D"�"D5�%D"�&D5�)E
�5D9	�9E
�<D9	�=E
�
E�Ec�$�dd|jdz
zz}tjtjtj��5}|�|��|�|���|��ddd��dS#1swxYwYdS)Nr�hr�)�
UNIX_PATH_MAXrrRr@r�rr��rUr�r#s   r�testMaxNamez&TestLinuxAbstractNamespace.testMaxNamems����D�D�$6��$:�;�;��
�]�6�>�6�+=�
>�
>�	7�!�
�F�F�7�O�O�O����Q�]�]�_�_�g�6�6�6�	7�	7�	7�	7�	7�	7�	7�	7�	7�	7�	7�	7����	7�	7�	7�	7�	7�	7s�>B�B	�B	c���dd|jzz}tjtjtj��5}|�t
|j|��ddd��dS#1swxYwYdS)N��h)r	rrRr@r�rr�r		s   r�testNameOverflowz+TestLinuxAbstractNamespace.testNameOverflowss����3��!3�3�3��
�]�6�>�6�+=�
>�
>�	8�!����g�q�v�w�7�7�7�	8�	8�	8�	8�	8�	8�	8�	8�	8�	8�	8�	8����	8�	8�	8�	8�	8�	8s�"A&�&A*�-A*c�.�tjtjtj��}	|�d��|�|���d��|���dS#|���wxYw)Nz
pythontest�
pythontest)rrRr@r�rr�r r�s  r�testStrNamez&TestLinuxAbstractNamespace.testStrNamexsr���M�&�.�&�*<�=�=��	�
�F�F�+�,�,�,����Q�]�]�_�_�.G�H�H�H�
�G�G�I�I�I�I�I��A�G�G�I�I�I�I���s�=A>�>Bc��tjtjtj��5}|�t	d����|�|���d��ddd��dS#1swxYwYdS)Nr	)rrRr@r�r�rr�r�s  r�testBytearrayNamez,TestLinuxAbstractNamespace.testBytearrayName�s���
�]�6�>�6�+=�
>�
>�	I�!�
�F�F�9�6�7�7�8�8�8����Q�]�]�_�_�.G�H�H�H�	I�	I�	I�	I�	I�	I�	I�	I�	I�	I�	I�	I����	I�	I�	I�	I�	I�	Is�AB�B�	Bc�x�d}tjtjtj��5}|�d��|�|���|��tjtjtj��5}|�d��|�|���|��|�|���|�����ddd��n#1swxYwYddd��dS#1swxYwYdS)Ns
^[0-9a-f]{5}r�)rrRr@r��assertRegexr�r�)rU�abstract_addressr	r�s    r�testAutobindz'TestLinuxAbstractNamespace.testAutobind�s���-��
�]�6�>�6�+=�
>�
>�	H�"��G�G�B�K�K�K����R�^�^�-�-�/?�@�@�@���v�~�v�/A�B�B�
H�b��������� � ����!1�!1�3C�D�D�D��#�#�B�N�N�$4�$4�b�n�n�6F�6F�G�G�G�
H�
H�
H�
H�
H�
H�
H�
H�
H�
H�
H����
H�
H�
H�
H�		H�	H�	H�	H�	H�	H�	H�	H�	H�	H�	H�	H����	H�	H�	H�	H�	H�	Hs7�A'D/�A8D�D/�D	�D/�D	�D/�/D3�6D3N)
r\r]r^r	r	r
	r	r	r	r	r_r=rr	r	]s��������M�	@�	@�	@�7�7�7�8�8�8�
���I�I�I�H�H�H�H�Hr=r	ztest needs socket.AF_UNIXc��eZdZd�Zd�Zd�Zd�Zd�Zd�Zd�Z	d�Z
d	�Zej
ejd
kd��d���Zd
S)�TestUnixDomainc�b�tjtjtj��|_dSrD)rrRr@rMrTs rrVzTestUnixDomain.setUp�s���M�&�.�&�2D�E�E��	�	�	r=c�8�|j���dSrD)rMr rTs rrYzTestUnixDomain.tearDown�s���	�������r=c���	tj|��S#t$r>|�d�|tj������YdSwxYw)NzBPathname {0!a} cannot be represented in file system encoding {1!r})rF�fsencoder�r�r�r?�getfilesystemencoding�rUrNs  r�encodedzTestUnixDomain.encoded�sy��	8��;�t�$�$�$��!�	8�	8�	8��M�M�(�(.���#�3�5�5�)7�)7�
8�
8�
8�
8�
8�
8�	8���s��AA�Ac���	tj||��dS#t$rH}t|��dkr)|�d�|����n�Yd}~dSd}~wwxYw)NzAF_UNIX path too longz6Pathname {0!a} is too long to serve as an AF_UNIX path)rrKrr�r�r�)rUrMrNr�s    rr�zTestUnixDomain.bind�s���	��*�4��6�6�6�6�6���	�	�	��1�v�v�0�0�0��
�
�L��V�D�\�\�#�#�#�#��	#�#�#�#�#�#�����	���s��
A+�=A&�&A+c�`�|�|j���d��dS)N)r�N)r�rMr�rTs rr�zTestUnixDomain.testUnbound�s*���
�
�d�i�+�+�-�-�z�:�:�:�:�:r=c�(�tj�tj��}|�|j|��|�tj|��|�	|j�
��|��dSrD)rFrN�abspathr�TESTFNr�rMrtrLrr�r	s  r�testStrAddrzTestUnixDomain.testStrAddr�so���w���y�/�0�0���	�	�$�)�T�"�"�"����	�(�$�/�/�/������.�.�0�0�$�7�7�7�7�7r=c�N�tj�tj��}|�|j|�|����|�tj	|��|�
|j���|��dSrD)rFrNr$	rr%	r�rMr 	rtrLrr�r	s  r�
testBytesAddrzTestUnixDomain.testBytesAddr�s{���w���y�/�0�0���	�	�$�)�T�\�\�$�/�/�0�0�0����	�(�$�/�/�/������.�.�0�0�$�7�7�7�7�7r=c�z�tj�tj��}|�|��}|�|j|�dd����|�	tj
|��|�|j���|��dS)N�ascii�surrogateescape)
rFrNr$	r�TESTFN_UNICODEr 	r�rMr@rtrLrr�)rUrNr�s   r�testSurrogateescapeBindz&TestUnixDomain.testSurrogateescapeBind�s����w���y�7�8�8���L�L������	�	�$�)�Q�X�X�g�/@�A�A�B�B�B����	�(�$�/�/�/������.�.�0�0�$�7�7�7�7�7r=c�j�tj�|�d��tj�tj��}|�|j|��|�tj	|��|�
|j���|��dS)Nz!No unencodable filename available)r�TESTFN_UNENCODABLEr�rFrNr$	r�rMrtrLrr�r	s  r�testUnencodableAddrz"TestUnixDomain.testUnencodableAddr�s����'�/��M�M�=�>�>�>��w���y�;�<�<���	�	�$�)�T�"�"�"����	�(�$�/�/�/������.�.�0�0�$�7�7�7�7�7r=rhr�c�R�|�t|jjd��dS)Nr�)r�rrMr�rTs r�testEmptyAddresszTestUnixDomain.testEmptyAddress�s&��	
���'�4�9�>�2�6�6�6�6�6r=N)r\r]r^rVrYr 	r�r�r&	r(	r-	r0	r�r�r?rqr2	r_r=rr	r	�s�������F�F�F����	8�	8�	8�
�
�
�;�;�;�8�8�8�8�8�8�8�8�8�8�8�8��X�_�S�\�W�,�.C�D�D�7�7�E�D�7�7�7r=r	c�p�eZdZdZdd�Zd�Zd�Zd�ZeZd�Z	eZ
d�Zd	�Zd
�Z
eZd�ZeZd�Zd
�Zd�ZeZdS)�BufferIOTestzF
    Test the buffer versions of socket.recv() and socket.send().
    r�c�>�t�||���dSr�r�r�s  rrkzBufferIOTest.__init__�r�r=c�v�tjddgtt��z��}|j�|��}|�|tt����|���}|dtt���}|�|t��dS�Nr�r)r�r�rrr�rr�rUrVrrs    r�testRecvIntoArrayzBufferIOTest.testRecvIntoArray�s����k�#��s�S��X�X�~�.�.����(�(��-�-�������S���*�*�*��k�k�m�m���)�3�s�8�8�)�n������c�"�"�"�"�"r=c�b�tt��}|j�|��dSrD�r/rrr�rUrVs  r�_testRecvIntoArrayzBufferIOTest._testRecvIntoArray��)���C�j�j������C� � � � � r=c��td��}|j�|��}|�|t	t
����|dt	t
���}|�|t
��dSr)r�rr�rr�rr8	s    r�testRecvIntoBytearrayz"BufferIOTest.testRecvIntoBytearray�sm����o�o����(�(��-�-�������S���*�*�*��)�3�s�8�8�)�n������c�"�"�"�"�"r=c�0�td��}|j�t|����}|�|tt����|dtt���}|�|t��dSr)r�rr�r$rr�rr8	s    r�testRecvIntoMemoryviewz#BufferIOTest.testRecvIntoMemoryview�ss����o�o����(�(��C���9�9�������S���*�*�*��)�3�s�8�8�)�n������c�"�"�"�"�"r=c�|�tjddgtt��z��}|j�|��\}}|�|tt����|���}|dtt���}|�|t��dSr7	)r�r�rrr�rr�rUrVrrrs     r�testRecvFromIntoArrayz"BufferIOTest.testRecvFromIntoArrays����k�#��s�S��X�X�~�.�.���}�2�2�3�7�7���������S���*�*�*��k�k�m�m���)�3�s�8�8�)�n������c�"�"�"�"�"r=c�b�tt��}|j�|��dSrDr;	r<	s  r�_testRecvFromIntoArrayz#BufferIOTest._testRecvFromIntoArray
r>	r=c��td��}|j�|��\}}|�|t	t
����|dt	t
���}|�|t
��dSr)r�rr�rr�rrD	s     r�testRecvFromIntoBytearrayz&BufferIOTest.testRecvFromIntoBytearraysq����o�o���}�2�2�3�7�7���������S���*�*�*��)�3�s�8�8�)�n������c�"�"�"�"�"r=c�6�td��}|j�t|����\}}|�|tt����|dtt���}|�|t��dSr)r�rr�r$rr�rrD	s     r�testRecvFromIntoMemoryviewz'BufferIOTest.testRecvFromIntoMemoryviewsw����o�o���}�2�2�:�c�?�?�C�C���������S���*�*�*��)�3�s�8�8�)�n������c�"�"�"�"�"r=c�r�td��}|�t|jj|d��dS)Nr�r)r�r�r�rr�r<	s  r�testRecvFromIntoSmallBufferz(BufferIOTest.testRecvFromIntoSmallBuffer#s2����l�l�����*�d�m�&A�3��M�M�M�M�Mr=c�D�|j�t��dSrDr�rTs r�_testRecvFromIntoSmallBufferz)BufferIOTest._testRecvFromIntoSmallBuffer(r�r=c��t��}|j�|��|j�|d��dSr�)r�rr�r<	s  r�testRecvFromIntoEmptyBufferz(BufferIOTest.testRecvFromIntoEmptyBuffer+s?���k�k���
�#�#�C�(�(�(��
�#�#�C��+�+�+�+�+r=Nr�)r\r]r^ryrkr9	r=	r@	�_testRecvIntoBytearrayrB	�_testRecvIntoMemoryviewrE	rG	rI	�_testRecvFromIntoBytearrayrK	�_testRecvFromIntoMemoryviewrM	rO	rQ	�_testRecvFromIntoEmptyBufferr_r=rr4	r4	�s��������B�B�B�B�#�#�#�!�!�!�#�#�#�0��#�#�#�1��#�#�#�!�!�!�#�#�#�"8��#�#�#�#9��N�N�N�
!�!�!�,�,�,�
$:� � � r=r4	i�����c��ttd��sdS	tdd���}n#ttt
f$rYdSwxYw|5|D]%}|�d��rddd��dS�&	ddd��n#1swxYwYdS)	z�Check if the TIPC module is loaded

    The TIPC module is not loaded automatically on Ubuntu and probably
    other Linux distros.
    �AF_TIPCFz
/proc/modulesr	r3ztipc NT)rrr�FileNotFoundError�IsADirectoryErrorr�rr)rr7s  r�isTipcAvailabler]	7s���6�9�%�%���u����7�3�3�3�����0�/�B�����u�u�����
����	�	�D����w�'�'�
����������
�	��������������������5s'�+�A�A�B�3B�B�Bz6TIPC module is not loaded, please 'sudo modprobe tipc'c��eZdZd�ZdS)�TIPCTestc�0�tjtjtj��}tjtjtj��}|�|j��|�|j��|�tjtjd��tjtttf}|�|��tj
tttttz
dz��zdf}|�t |��|�d��\}}|�|���|��|�|t ��dS)Nr�r�rr)rrZ	r�rtr r�r�r��TIPC_ADDR_NAMESEQ�
TIPC_STYPE�
TIPC_LOWER�
TIPC_UPPERr��TIPC_ADDR_NAMEr.r�rr�rr�)rUrFr��srvaddr�sendaddrr�recvaddrs       r�testRDMzTIPCTest.testRDMNs'���m�F�N�F�O�<�<���m�F�N�F�O�<�<������	�"�"�"�����	�"�"�"����v�(�&�*=�q�A�A�A��+�Z��J�(����������)�:��S�*�z�"9�Q�!>�?�?�?��D���
�
�3��!�!�!����T�*�*�
��X�������*�*�H�5�5�5�����c�"�"�"�"�"r=N)r\r]r^ri	r_r=rr_	r_	Ks#������#�#�#�#�#r=r_	c�.�eZdZdd�Zd�Zd�Zd�Zd�ZdS)	�TIPCThreadableTestr�c�|�tj�||���t�|��dSr�r�r�s  rrkzTIPCThreadableTest.__init__fs8����"�"�4�j�"�A�A�A�����%�%�%�%�%r=c�V�tjtjtj��|_|�|jj��|j�tjtjd��tj	tttf}|j�
|��|j���|���|j���\|_|_|�|jj��dSrX)rrZ	r@rFrtr r�r�r�ra	rb	rc	rd	r�rSr�r�r�r�)rUrf	s  rrVzTIPCThreadableTest.setUpjs����=����1C�D�D���������'�'�'�����F�-�v�/B�A�F�F�F��+�Z��J�(����
�
�g������������ � �"�"�"�#'�8�?�?�#4�#4� ��	�4�=�����	��(�(�(�(�(r=c��tjd��tjtjtj��|_|�|jj��tjtttttz
dz��zdf}|j�
|��|j���|_dS)Nr�r�r)r�r�rrZ	r@r�rtr re	rb	rc	r.rd	r�r��cliaddr)rUrs  rr�zTIPCThreadableTest.clientSetUpvs���	
�
�3�����=����1C�D�D���������'�'�'��%�z��S�*�z�"9�Q�!>�?�?�?��D�����������x�+�+�-�-����r=c��|j�d��}|�|t��|�|j|j��dSr)r�rrrro	r�rs  rrzTIPCThreadableTest.testStream�sK���i�n�n�T�"�"������c�"�"�"������t�}�5�5�5�5�5r=c�v�|j�t��|j���dSrDr
rTs rrzTIPCThreadableTest._testStream�r
r=Nr�rr_r=rrk	rk	csd������&�&�&�&�
)�
)�
)�
.�
.�
.�6�6�6�
����r=rk	c�,�eZdZd�Zd�Zd�Zd�Zd�ZdS)�ContextManagersTestc�B�tj��5}|�|j��ddd��n#1swxYwY|�|j��tj��5}|���ddd��n#1swxYwY|�|j��tj��5}|�t|jd��ddd��n#1swxYwY|�|j��dS�Nr�)rr�rr�r r�rrr\s  r�_testSocketClassz$ContextManagersTest._testSocketClass�s���
�]�_�_�	+�����T�\�*�*�*�	+�	+�	+�	+�	+�	+�	+�	+�	+�	+�	+����	+�	+�	+�	+������%�%�%�
�]�_�_�	���J�J�L�L�L�	�	�	�	�	�	�	�	�	�	�	����	�	�	�	������%�%�%�
�]�_�_�	=�����g�t�|�V�<�<�<�	=�	=�	=�	=�	=�	=�	=�	=�	=�	=�	=����	=�	=�	=�	=������%�%�%�%�%s1�;�?�?�3B�B�B�"C:�:C>�C>c���|j���\}}|�|j��|�d��}|�|��dSr�rPr�rtr rr�rUr�rrs    r�testCreateConnectionBasez,ContextManagersTest.testCreateConnectionBase��T���Y�%�%�'�'�
��d�����
�#�#�#��y�y��������T�����r=c�t�|j���}tj|��5}|�|j��|�d��|�|�d��d��ddd��n#1swxYwY|�	|j��dS)Nr�r)
rPr�rr�r�rrrrr��rUr�rMs   r�_testCreateConnectionBasez-ContextManagersTest._testCreateConnectionBase�s����)�'�'�)�)��
�
%�g�
.�
.�	6�$����T�\�*�*�*��L�L�� � � ����T�Y�Y�t�_�_�f�5�5�5�	6�	6�	6�	6�	6�	6�	6�	6�	6�	6�	6����	6�	6�	6�	6�	
�����%�%�%�%�%s�AB�B�Bc���|j���\}}|�|j��|�d��}|�|��dSrrx	ry	s    r�testCreateConnectionClosez-ContextManagersTest.testCreateConnectionClose�r{	r=c�.�|j���}tj|��5}|���ddd��n#1swxYwY|�|j��|�t|j	d��dSru	)
rPr�rr�r r�rr�rrr}	s   r�_testCreateConnectionClosez.ContextManagersTest._testCreateConnectionClose�s����)�'�'�)�)��
�
%�g�
.�
.�	�$��J�J�L�L�L�	�	�	�	�	�	�	�	�	�	�	����	�	�	�	������%�%�%����'�4�<��8�8�8�8�8s�A�A�AN)r\r]r^rv	rz	r~	r�	r�	r_r=rrs	rs	�s_������&�&�&����&�&�&����9�9�9�9�9r=rs	c��eZdZejeed��d��ejddd��d�����Z	d�Z
d�Zd	�Zej
ed
ud��d���Zej
ed
ud��d
���Zd�Zd
S)�InheritanceTestr�zSOCK_CLOEXEC not definedr�r�r�c�<�tjtjtjtjz��5}|�|jtj��|�|�����ddd��dS#1swxYwYdSrD)rrOr@r�rr}r��get_inheritabler�s  r�test_SOCK_CLOEXECz!InheritanceTest.test_SOCK_CLOEXEC�s����]�6�>�!�-��0C�C�E�E�	2�HI����Q�V�V�%7�8�8�8����Q�.�.�0�0�1�1�1�	2�	2�	2�	2�	2�	2�	2�	2�	2�	2�	2�	2����	2�	2�	2�	2�	2�	2s�A
B�B�Bc��tj��}|5|�|���d��ddd��dS#1swxYwYdSr)rrr�	r\s  r�test_default_inheritablez(InheritanceTest.test_default_inheritable�s����}����
�	<�	<����T�1�1�3�3�U�;�;�;�	<�	<�	<�	<�	<�	<�	<�	<�	<�	<�	<�	<����	<�	<�	<�	<�	<�	<s�)A�A�Ac�6�tj��}|5|���}|���|5|�|���d��ddd��n#1swxYwYddd��dS#1swxYwYdSr)rr�r rr�	)rUrM�newsocks   r�test_dupzInheritanceTest.test_dup�s3���}����
�	C�	C��h�h�j�j�G��J�J�L�L�L��
C�
C�� � ��!8�!8�!:�!:�E�B�B�B�
C�
C�
C�
C�
C�
C�
C�
C�
C�
C�
C����
C�
C�
C�
C�	C�	C�	C�	C�	C�	C�	C�	C�	C�	C�	C�	C����	C�	C�	C�	C�	C�	Cs5�+B�)A6�*B�6A:	�:B�=A:	�>B�B�Bc�V�tj��}|5|�d��|�|���d��|�d��|�|���d��ddd��dS#1swxYwYdS)NTF)r�set_inheritablerr�	r\s  r�test_set_inheritablez$InheritanceTest.test_set_inheritable�s����}����
�	<�	<�� � ��&�&�&����T�1�1�3�3�T�:�:�:�� � ��'�'�'����T�1�1�3�3�U�;�;�;�	<�	<�	<�	<�	<�	<�	<�	<�	<�	<�	<�	<����	<�	<�	<�	<�	<�	<s�A;B�B"�%B"Nr�c���tj��}|5|���}|�|���d��t	j|tj��}|tjz}t	j|tj|��|�|���d��ddd��dS#1swxYwYdS)NFT)rr�rr�	r�F_GETFD�
FD_CLOEXEC�F_SETFD)rUrMrur�s    r�test_get_inheritable_cloexecz,InheritanceTest.test_get_inheritable_cloexec�s���}����
�		;�		;������B����T�1�1�3�3�U�;�;�;��K��E�M�2�2�E��e�&�&�&�E��K��E�M�5�1�1�1����T�1�1�3�3�T�:�:�:�		;�		;�		;�		;�		;�		;�		;�		;�		;�		;�		;�		;����		;�		;�		;�		;�		;�		;��B4C�C�Cc���tj��}|5|���}|�tj|tj��tjztj��|�d��|�tj|tj��tjzd��ddd��dS#1swxYwYdSr�)rr�rrr�	r�	r�	)rUrMrus   r�test_set_inheritable_cloexecz,InheritanceTest.test_set_inheritable_cloexec�s���}����
�	 �	 ������B����U�[��U�]�;�;�e�>N�N�"�-�
/�
/�
/�
� � ��&�&�&����U�[��U�]�;�;�e�>N�N��
 �
 �
 �
	 �	 �	 �	 �	 �	 �	 �	 �	 �	 �	 �	 ����	 �	 �	 �	 �	 �	 r�	c�:�tj��\}}|�|j��|�|j��|�|���d��|�|���d��dSr)rrrtr rr�	)rUr	r�s   r�test_socketpairzInheritanceTest.test_socketpair�s����"�$�$���B������!�!�!������!�!�!�����+�+�-�-�u�5�5�5�����+�+�-�-�u�5�5�5�5�5r=)r\r]r^r�r�rrrrr�	r�	r�	r�	r�rr�	r�	r�	r_r=rr�	r�	�s�������X������8�8�3�5�5�#�W�#�A�q�"�-�-�2�2�.�-�5�5�2�<�<�<�
C�C�C�<�<�<��X�_�U�d�]�L�1�1�;�;�2�1�;��X�_�U�d�]�L�1�1�	 �	 �2�1�	 �6�6�6�6�6r=r�	rhzSOCK_NONBLOCK not definedc�L�eZdZd	d�Zejddd��d���ZdS)
�NonblockConstantTestTr�c�d�|r�|�|jtj��|�|���|��|�t
j|tjtj	��tj	z��|dkr)|�
|�����dS|�|�����dS|�|jtj��|�|���d��|�
t
j|tjtj	��tj	z��|�|�����dSr�)rr}rr@rr�rr�rFr�r�r�)rUr#�nonblockrGs    r�
checkNonblockz"NonblockConstantTest.checkNonblock�sU���	-����Q�V�V�%7�8�8�8����Q�\�\�^�^�W�5�5�5��O�O���A�u�}�b�m�<�<�r�}�L�
N�
N�
N��!�|�|�� � ������1�1�1�1�1�����
�
���0�0�0�0�0����Q�V�V�%7�8�8�8����Q�\�\�^�^�T�2�2�2������A�u�}�b�m�<�<�r�}�L�
N�
N�
N��O�O�A�M�M�O�O�,�,�,�,�,r=r�r�r�c�v�tjtjtjtjz��5}|�|��|�d��|�|d���|�d��|�|��|�d��|�|d���|�d��|�|d���|�d��|�|d���ddd��n#1swxYwYtj��}tjd��tj��5}|�|��ddd��n#1swxYwYtjd��tj��5}|�|d��ddd��n#1swxYwYtjd��tj��5}|�|d���ddd��n#1swxYwYtjd��tj��5}|�|d��ddd��n#1swxYwYtj|��dS)NTF)r�	g@r�r�)	rrOr@rhr�	rir�rErF)rUr#�ts   r�test_SOCK_NONBLOCKz'NonblockConstantTest.test_SOCK_NONBLOCKs����]�6�>�!�-��0D�D�F�F�	2�IJ����q�!�!�!�
�M�M�$�������q�5��1�1�1�
�M�M�%� � � ����q�!�!�!�
�L�L��������q�5��1�1�1�
�L�L��������q�#��.�.�.�
�M�M�$�������q�5��1�1�1�	2�	2�	2�	2�	2�	2�	2�	2�	2�	2�	2����	2�	2�	2�	2�
�$�&�&��� ��%�%�%�
�]�_�_�	"�����q�!�!�!�	"�	"�	"�	"�	"�	"�	"�	"�	"�	"�	"����	"�	"�	"�	"�� ��&�&�&�
�]�_�_�	)�����q�%�(�(�(�	)�	)�	)�	)�	)�	)�	)�	)�	)�	)�	)����	)�	)�	)�	)�� ��%�%�%�
�]�_�_�	/�����q�#��.�.�.�	/�	/�	/�	/�	/�	/�	/�	/�	/�	/�	/����	/�	/�	/�	/�� ��&�&�&�
�]�_�_�	)�����q�%�(�(�(�	)�	)�	)�	)�	)�	)�	)�	)�	)�	)�	)����	)�	)�	)�	)�� ��#�#�#�#�#sZ�C0D3�3D7�:D7�8F�F�!F�G/�/G3�6G3�!I�I	�I	�7J�J�!JN)Tr�)r\r]r^r�	rrr�	r_r=rr�	r�	�sU������-�-�-�-�2$�W�#�A�q�"�-�-�$�$�.�-�$�$�$r=r�	r�r�zneed multiprocessingc�B�eZdZed���Zd�Zd�Zd�Zd�Zd�Z	dS)�TestSocketSharingc�&�|���}|���}tj|��}|���\}}|�|��|���|���dSrD)r�r�	fromsharer�rr )r�q�sdata�messager#r�rs       r�remoteProcessServerz%TestSocketSharing.remoteProcessServer>sq���������%�%�'�'����U�#�#�����
�
���A�	�
�
�7����
���
�
�
�	���	�	�	�	�	r=c��tj��}tj|j|f���}|���|j�|j��}|j���}|j�	��|�
|��d}|�
|��tj|��}g}	|�
d��}|sn|�|���.|�	��d�|��}|�||��|���dS)N�r�rps
slapmahfroTr�r=)�multiprocessingr��Processr�	r�rP�share�pidr�r r�rr�rrAr�r)	rUr�	r�rrr�	r#�m�receiveds	         r�	testSharezTestSocketSharing.testShareLs+��

�!�#�#���#�4�+C�1�$�O�O�O��	���	�	�	��y���q�u�%�%���y�$�$�&�&���	������	���d���� ��	���g����
�$�T�*�*����	��6�6�#�;�;�D��
��
�H�H�T�N�N�N�		�
	
���	�	�	��8�8�A�;�;������7�+�+�+�	�������r=c�
�|j�tj����}|�t
tj|dd���|�t
tj|dz��dS)NrWr�)rPr�	rF�getpidr�r�rr�	)rUrs  r�testShareLengthz!TestSocketSharing.testShareLengthosc���y���r�y�{�{�+�+�����*�f�&6��S�b�S�	�B�B�B����*�f�&6��V��D�D�D�D�Dr=c��|�|���d��|�|���|�����|�|j|j��|�|j|j��|jdkr"|�|j|j��dSdSr�)rrr�r}r�)rU�org�others   r�compareSocketsz TestSocketSharing.compareSocketsts���	
������)�)�4�0�0�0�������)�)�5�+;�+;�+=�+=�>�>�>������U�\�2�2�2������5�:�.�.�.��9��>�>����S�Y���4�4�4�4�4��>r=c��|j�tj����}t	j|��}	|�|j|��|���dS#|���wxYwrD)rPr�	rFr�	rr�	r�	r )rUrr#s   r�testShareLocalz TestSocketSharing.testShareLocal�sk���y���r�y�{�{�+�+����T�"�"��	�����	�1�-�-�-�
�G�G�I�I�I�I�I��A�G�G�I�I�I�I���s�A2�2Bc�$�tjtjg}tjtjg}|D]�}|D]�}	tj||��}n#t
$rY�%wxYw	|�tj����}tj	|��}	|�
||��|���n#|���wxYw	|�����#|���wxYw��dSrD)rrOrqr@r'rr�	rFr�	r�	r�	r )rU�families�typesrr�	r�r�shareds        r�	testTypeszTestSocketSharing.testTypes�s���N�F�O�4���#�V�%6�7���	#�	#�A��

#�

#���#�]�1�a�0�0�F�F�������H�����#�!�<�<��	���4�4�D�#�-�d�3�3�F�'��+�+�F�F�;�;�;���������������������L�L�N�N�N�N��F�L�L�N�N�N�N����

#�	#�	#s5�A�
A�A�!:C6�C�2C6�C�C6�6DN)
r\r]r^r<r�	r�	r�	r�	r�	r�	r_r=rr�	r�	9s~������
����[��!�!�!�FE�E�E�
5�5�5� ���#�#�#�#�#r=r�	c���eZdZdZdZdZdZejZ	e
d���Ze
d���Zd�Z
d�Zd	�Zd
�Zd�Zd�Zd
�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Z d�Z!d�Z"d�Z#d�Z$d�Z%d S)!�SendfileUsingSendTestz>
    Test the send() implementation of socket.sendfile().
    i�r�r=c���d�}d�d�t|j��D����}ttjd��5}||j|j��D]}|�|���	ddd��n#1swxYwYttjd��5}|���|_	ddd��dS#1swxYwYdS)Nc3�DK�||kr|V�||z}||k�|r|V�dSdSrDr_)�total�steps  r�chunksz0SendfileUsingSendTest.setUpClass.<locals>.chunks�sM�����$�,�,��
�
�
���
���$�,�,��
�������
�
r=r=c�n�g|]2}tjtj�������3Sr_)�random�choice�string�
ascii_lettersr@rs  rr�z4SendfileUsingSendTest.setUpClass.<locals>.<listcomp>�sA��7�7�7��!�-��(<�=�=�D�D�F�F�7�7�7r=r0r)
r�r=�BUFSIZErrr%	�FILESIZEr?r��FILEDATA)rr�	�chunkr�csizes     r�
setUpClassz SendfileUsingSendTest.setUpClass�sk��	�	�	����7�7�#(���#5�#5�7�7�7�8�8��
�)�"�D�
)�
)�	�Q�����c�k�:�:�
�
����������
�	�	�	�	�	�	�	�	�	�	�	����	�	�	�	��)�"�D�
)�
)�	5�Q��6�6�8�8�C�L�	5�	5�	5�	5�	5�	5�	5�	5�	5�	5�	5�	5����	5�	5�	5�	5�	5�	5s$�/B�B�B�0C�C�Cc�B�tjtj��dSrD)rrLr%	)rs r�
tearDownClassz#SendfileUsingSendTest.tearDownClass�s�����)�*�*�*�*�*r=c���|j�tj��|j���\}}|�|j��|�|j��|SrD)rPr�rr�r��TIMEOUTrtr rs   r�accept_connz!SendfileUsingSendTest.accept_conn�s_���	���W�1�2�2�2��Y�%�%�'�'�
��d������%�%�%�����
�#�#�#��r=c��g}	|�|j��}|sn|�|���3d�|��S)NTr=)rr�	rAr�)rUr�r�	r�	s    r�	recv_datazSendfileUsingSendTest.recv_data�sU����	#��I�I�d�l�+�+�E��
���O�O�E�"�"�"�		#�
�x�x��!�!�!r=c�"�t|d��S)N�_sendfile_use_send�r�r\s  r�meth_from_sockz$SendfileUsingSendTest.meth_from_sock�s���t�1�2�2�2r=c���|j���}ttjd��}tj|��5}|5}|�|��}||��}|�||j	��|�|�
��|j	��ddd��n#1swxYwYddd��dS#1swxYwYdS)Nr�rPr�rrr%	rr�r�	rr�	�tell�rUr��filerM�meth�sents      r�_testRegularFilez&SendfileUsingSendTest._testRegularFile�sH���)�'�'�)�)���I�$�d�+�+��
�
%�g�
.�
.�	9�$��	9���&�&�t�,�,�D��4��:�:�D����T�4�=�1�1�1����T�Y�Y�[�[�$�-�8�8�8�		9�	9�	9�	9�	9�	9�	9�	9�	9�	9�	9����	9�	9�	9�	9�	9�	9�	9�	9�	9�	9�	9�	9�	9�	9�	9�	9����	9�	9�	9�	9�	9�	9s7�C�A)C�4C�C	�C�C	�C�C�Cc���|���}|�|��}|�t|��|j��|�||j��dSrD�r�	r�	rr�r�	r�	�rUr�rs   r�testRegularFilez%SendfileUsingSendTest.testRegularFile��`�����!�!���~�~�d�#�#������T���D�M�2�2�2�����t�}�-�-�-�-�-r=c��|j���}tj|j��}tj|��5}|5}|�|��}|�||j	��|�|�
��|j	��|�t
j|j
|��ddd��n#1swxYwYddd��dS#1swxYwYdSrD)rPr��io�BytesIOr�	rr�ryrr�	r�	r�r�r�)rUr�r�	rMr�	s     r�_testNonRegularFilez)SendfileUsingSendTest._testNonRegularFile�s����)�'�'�)�)���z�$�-�(�(��
�
%�g�
.�
.�	A�$��	A���=�=��&�&�D����T�4�=�1�1�1����T�Y�Y�[�[�$�-�8�8�8����f�6�"�9�4�
A�
A�
A�		A�	A�	A�	A�	A�	A�	A�	A�	A�	A�	A����	A�	A�	A�	A�	A�	A�	A�	A�	A�	A�	A�	A�	A�	A�	A�	A����	A�	A�	A�	A�	A�	As7�C2�
BC�C2�C	�C2�!C	�"C2�2C6�9C6c���|���}|�|��}|�t|��|j��|�||j��dSrDr�	r�	s   r�testNonRegularFilez(SendfileUsingSendTest.testNonRegularFile�r�	r=c�P�|j���}tjdz}t	|d��5|�tj|��ddd��n#1swxYwYt	|d��}tj|��5}|5}|�	|��}||��}|�
|d��|�
|���d��ddd��n#1swxYwYddd��dS#1swxYwYdS)N�2r0rr)rPr�rr%	rrtrLrr�r�	rr�	)rUr��filenamer�	rMr�	r�	s       r�_testEmptyFileSendz(SendfileUsingSendTest._testEmptyFileSend�s����)�'�'�)�)���#�c�)��
�(�D�
!�
!�	8�	8��O�O�I�,�h�7�7�7�	8�	8�	8�	8�	8�	8�	8�	8�	8�	8�	8����	8�	8�	8�	8��H�d�#�#��
�
%�g�
.�
.�	-�$��	-���&�&�t�,�,�D��4��:�:�D����T�1�%�%�%����T�Y�Y�[�[�!�,�,�,�		-�	-�	-�	-�	-�	-�	-�	-�	-�	-�	-����	-�	-�	-�	-�	-�	-�	-�	-�	-�	-�	-�	-�	-�	-�	-�	-����	-�	-�	-�	-�	-�	-sH�!A&�&A*�-A*�D�AD�7D�D	�D�
D	�D�D�"Dc��|���}|�|��}|�|d��dSr�)r�	r�	rr�	s   r�testEmptyFileSendz'SendfileUsingSendTest.testEmptyFileSends@�����!�!���~�~�d�#�#������s�#�#�#�#�#r=c���|j���}ttjd��}tj|��5}|5}|�|��}||d���}|�||j	dz
��|�|�
��|j	��ddd��n#1swxYwYddd��dS#1swxYwYdS)Nr�)�offsetr�	r�	s      r�_testOffsetz!SendfileUsingSendTest._testOffsetsT���)�'�'�)�)���I�$�d�+�+��
�
%�g�
.�
.�	9�$��	9���&�&�t�,�,�D��4��T�*�*�*�D����T�4�=�4�#7�8�8�8����T�Y�Y�[�[�$�-�8�8�8�		9�	9�	9�	9�	9�	9�	9�	9�	9�	9�	9����	9�	9�	9�	9�	9�	9�	9�	9�	9�	9�	9�	9�	9�	9�	9�	9����	9�	9�	9�	9�	9�	9s7�C�A.C�9C�C		�	C�C		�
C�C!�$C!c���|���}|�|��}|�t|��|jdz
��|�||jdd���dS)Nr�	r�	r�	s   r�
testOffsetz SendfileUsingSendTest.testOffsetsn�����!�!���~�~�d�#�#������T���D�M�D�$8�9�9�9�����t�}�T�U�U�3�4�4�4�4�4r=c���|j���}ttjd��}tj|tj���}|5|5d}|�	|��}|||���}|�
||��|�
|���|��ddd��n#1swxYwYddd��dS#1swxYwYdS)Nrr��GKL�r��rPr�rrr%	rr�rrNr�	rr�	�rUr�r�	rMr�r�	r�	s       r�
_testCountz SendfileUsingSendTest._testCountsm���)�'�'�)�)���I�$�d�+�+���'��07�0H�J�J�J��
�	1�	1�4�	1�	1��E��&�&�t�,�,�D��4��E�*�*�*�D����T�5�)�)�)����T�Y�Y�[�[�%�0�0�0�	1�	1�	1�	1�	1�	1�	1�	1�	1�	1�	1����	1�	1�	1�	1�	1�	1�	1�	1�	1�	1�	1�	1�	1�	1�	1�	1����	1�	1�	1�	1�	1�	1�7�C �A#C�<C �C	�C �C	�C � C$�'C$c���d}|���}|�|��}|�t|��|��|�||jd|���dS)Nr�	�r�	r�	rr�r�	�rUr�r�rs    r�	testCountzSendfileUsingSendTest.testCount+sl�������!�!���~�~�d�#�#������T���E�*�*�*�����t�}�V�e�V�4�5�5�5�5�5r=c���|j���}ttjd��}tj|tj���}|5|5d}|�	|��}|||���}|�
||��|�
|���|��ddd��n#1swxYwYddd��dS#1swxYwYdS)Nrr�r�r�	r
r
s       r�_testCountSmallz%SendfileUsingSendTest._testCountSmall4sm���)�'�'�)�)���I�$�d�+�+���'��07�0H�J�J�J��
�	1�	1�4�	1�	1��E��&�&�t�,�,�D��4��E�*�*�*�D����T�5�)�)�)����T�Y�Y�[�[�%�0�0�0�	1�	1�	1�	1�	1�	1�	1�	1�	1�	1�	1����	1�	1�	1�	1�	1�	1�	1�	1�	1�	1�	1�	1�	1�	1�	1�	1����	1�	1�	1�	1�	1�	1r
c���d}|���}|�|��}|�t|��|��|�||jd|���dSrXr
r
s    r�testCountSmallz$SendfileUsingSendTest.testCountSmall@sl�������!�!���~�~�d�#�#������T���E�*�*�*�����t�}�V�e�V�4�5�5�5�5�5r=c���|j���}ttjd��}tj|d���5}|5}d}|�|��}||d|���}|�||��|�|�	��|dz��ddd��n#1swxYwYddd��dS#1swxYwYdS)Nrr�r�駆��)r�	r�)
rPr�rrr%	rr�r�	rr�	r
s       r�_testCountWithOffsetz*SendfileUsingSendTest._testCountWithOffsetIs[���)�'�'�)�)���I�$�d�+�+��
�
%�g�q�
9�
9�
9�	8�T�4�	8�4��E��&�&�t�,�,�D��4��T��7�7�7�D����T�5�)�)�)����T�Y�Y�[�[�%�$�,�7�7�7�	8�	8�	8�	8�	8�	8�	8�	8�	8�	8�	8����	8�	8�	8�	8�	8�	8�	8�	8�	8�	8�	8�	8�	8�	8�	8�	8����	8�	8�	8�	8�	8�	8s7�
C�
A'C�4C�C	�C�C	�C�C�Cc���d}|���}|�|��}|�t|��|��|�||jd|dz���dS)Nr
r
r
r
s    r�testCountWithOffsetz)SendfileUsingSendTest.testCountWithOffsetSsp�������!�!���~�~�d�#�#������T���E�*�*�*�����t�}�T�%��*�_�=�>�>�>�>�>r=c���|j���}ttjd��}tj|��5}|5}|�d��|�|��}|�	t||��|�	t|j|��ddd��n#1swxYwYddd��dS#1swxYwYdS)NrF)rPr�rrr%	rr�rir�	r�r�ry�rUr�r�	rMr�	s     r�_testNonBlockingz&SendfileUsingSendTest._testNonBlocking\sI���)�'�'�)�)���I�$�d�+�+��
�
%�g�
.�
.�	?�$��	?�����U�#�#�#��&�&�t�,�,�D����j�$��5�5�5����j�$�-��>�>�>�		?�	?�	?�	?�	?�	?�	?�	?�	?�	?�	?����	?�	?�	?�	?�	?�	?�	?�	?�	?�	?�	?�	?�	?�	?�	?�	?����	?�	?�	?�	?�	?�	?s7�C�A(B?�3C�?C	�C�C	�C�C�Cc��|���}|�d��r|�d��dSdS)Nr�z$was not supposed to receive any data)r�	rr��rUr�s  r�testNonBlockingz%SendfileUsingSendTest.testNonBlockingesH�����!�!���9�9�T�?�?�	>��I�I�<�=�=�=�=�=�	>�	>r=c��|j���}ttjd��}tj|tj���}|5|5|�	|��}||��}|�
||j��ddd��n#1swxYwYddd��dS#1swxYwYdS)Nrr�)rPr�rrr%	rr�rrNr�	rr�	r�	s      r�_testWithTimeoutz&SendfileUsingSendTest._testWithTimeoutlsE���)�'�'�)�)���I�$�d�+�+���'��07�0H�J�J�J��
�	2�	2�4�	2�	2��&�&�t�,�,�D��4��:�:�D����T�4�=�1�1�1�	2�	2�	2�	2�	2�	2�	2�	2�	2�	2�	2����	2�	2�	2�	2�	2�	2�	2�	2�	2�	2�	2�	2�	2�	2�	2�	2����	2�	2�	2�	2�	2�	2s6�B9�<B!�B9�!B%	�%B9�(B%	�)B9�9B=�B=c���|���}|�|��}|�t|��|j��|�||j��dSrDr�	r�	s   r�testWithTimeoutz%SendfileUsingSendTest.testWithTimeoutvr�	r=c��|j���}ttjd��5}tj|��5}|�d��|�|��}|�	t||��ddd��n#1swxYwYddd��dS#1swxYwYdS)Nrg{�G�z�?)rPr�rrr%	rr�r�r�	r�rr
s     r�_testWithTimeoutTriggeredSendz3SendfileUsingSendTest._testWithTimeoutTriggeredSend~s)���)�'�'�)�)��
�)�"�D�
)�
)�	<�T��)�'�2�2�
<�d�����%�%�%��*�*�4�0�0���!�!�,��d�;�;�;�
<�
<�
<�
<�
<�
<�
<�
<�
<�
<�
<����
<�
<�
<�
<�	<�	<�	<�	<�	<�	<�	<�	<�	<�	<�	<�	<����	<�	<�	<�	<�	<�	<s6�B4�	AB�B4�B 	� B4�#B 	�$B4�4B8�;B8c��|���}|�d��tjd��dS)Ni�Xr�)r�	rr�r�r
s  r�testWithTimeoutTriggeredSendz2SendfileUsingSendTest.testWithTimeoutTriggeredSend�s6�����!�!���	�	�%�����
�1�
�
�
�
�
r=c��dSrDr_rTs r�_test_errorsz"SendfileUsingSendTest._test_errors�r"r=c	�:�ttjd��5}tjtj���5}|�|��}|�td||��ddd��n#1swxYwYddd��n#1swxYwYttjd���5}tj��5}|�|��}|�td||��ddd��n#1swxYwYddd��n#1swxYwYttjd��5}tj��5}|�|��}|�td||d�	��|�td||d
�	��|�td||d�	��|�td||d�	��ddd��n#1swxYwYddd��dS#1swxYwYdS)
Nrr�r@r	r3zbinary modezpositive integerr�	r�	r�rrW)	rrr%	rr'r�	r:r�r�)rUr�	r#r�	s    r�test_errorsz!SendfileUsingSendTest.test_errors�s���
�)�"�D�
)�
)�	;�T���F�$5�6�6�6�
;�!��*�*�1�-�-���&�&��
�t�T�;�;�;�
;�
;�
;�
;�
;�
;�
;�
;�
;�
;�
;����
;�
;�
;�
;�	;�	;�	;�	;�	;�	;�	;�	;�	;�	;�	;����	;�	;�	;�	;�
�)�"�W�
5�
5�
5�	;������
;�A��*�*�1�-�-���&�&��
�t�T�;�;�;�
;�
;�
;�
;�
;�
;�
;�
;�
;�
;�
;����
;�
;�
;�
;�	;�	;�	;�	;�	;�	;�	;�	;�	;�	;�	;����	;�	;�	;�	;�
�)�"�D�
)�
)�
	=�T�����	
=�A��*�*�1�-�-���&�&�y�2D�'+�T��'�>�>�>��&�&�y�2D�'+�T��'�>�>�>��&�&�z�3E�'+�T��'�<�<�<��&�&�z�3E�'+�T��'�=�=�=�	
=�	
=�	
=�	
=�	
=�	
=�	
=�	
=�	
=�	
=�	
=����	
=�	
=�	
=�	
=�
	=�
	=�
	=�
	=�
	=�
	=�
	=�
	=�
	=�
	=�
	=�
	=����
	=�
	=�
	=�
	=�
	=�
	=s�� B�3A:�.B�:A>	�>B�A>	�B�B�B�7D!�3D
�>D!�
D	�D!�D	�D!�!D%�(D%�H�BG8�,H�8G<	�<H�?G<	�H�H�HN)&r\r]r^ryr�	r�	r�	rrNr�	r<r�	r�	r�	r�	r�	r�	r�	r�	r�	r�	r�	r�	r�	r
r
r	
r
r
r
r
r
r
r
r
r
r!
r#
r_r=rr�	r�	�s���������!�H��G��H��&�G��5�5��[�5�$�+�+��[�+����"�"�"�3�3�3�9�9�9�.�.�.�A�A�A�.�.�.�
-�
-�
-�$�$�$�9�9�9�5�5�5�
1�
1�
1�6�6�6�
1�
1�
1�6�6�6�8�8�8�?�?�?�?�?�?�>�>�>�2�2�2�.�.�.�<�<�<����
�
�
�=�=�=�=�=r=r�	ryz%os.sendfile() required for this test.c��eZdZdZd�ZdS)�SendfileUsingSendfileTestzB
    Test the sendfile() implementation of socket.sendfile().
    c�"�t|d��S)Nr�r�	r\s  rr�	z(SendfileUsingSendfileTest.meth_from_sock�s���t�5�6�6�6r=N)r\r]r^ryr�	r_r=rr%
r%
�s-��������7�7�7�7�7r=r%
zAF_ALG requiredc��eZdZd�Zejdd��d���Zd�Zejdd��d���Zejdd��d	���Z	ejdd��d
���Z
d�Zd�Zd
S)�LinuxKernelCryptoAPIc��tjtjtjd��}	|�||f��|S#t$r<}|���t
jt|��||���d}~wwxYwr�)	rr5r0r�r[	r r��SkipTestr�)rU�typr�rMr�s     r�
create_algzLinuxKernelCryptoAPI.create_alg�s����}�V�]�F�,A�1�E�E��	��I�I�s�D�k�"�"�"��K��!�	7�	7�	7��J�J�L�L�L��#�C��F�F�C��6�6�6�����	7���s�A�
B�7B�Br�r�c��t�d��}|�dd��5}|���\}}|5|�d��|�|�d��|��ddd��n#1swxYwY|���\}}|5|�dtj	��|�dtj	��|�dtj	��|�d	��|�|�d��|��ddd��n#1swxYwYddd��dS#1swxYwYdS)
N�@ba7816bf8f01cfea414140de5dae2223b00361a396177a9cb410ff61f20015ad�hash�sha256sabcr�a�b�cr=)
r/�fromhexr,
r�rrrrr�MSG_MORE�rUr��algo�opr�s     r�test_sha256z LinuxKernelCryptoAPI.test_sha256�s���=�=�":�;�;��
�_�_�V�X�
.�
.�	9�$��K�K�M�M�E�B���
9�
9��
�
�6�"�"�"�� � �������x�8�8�8�
9�
9�
9�
9�
9�
9�
9�
9�
9�
9�
9����
9�
9�
9�
9��K�K�M�M�E�B���
9�
9�����f�o�.�.�.�����f�o�.�.�.�����f�o�.�.�.��������� � �������x�8�8�8�
9�
9�
9�
9�
9�
9�
9�
9�
9�
9�
9����
9�
9�
9�
9�	9�	9�	9�	9�	9�	9�	9�	9�	9�	9�	9�	9����	9�	9�	9�	9�	9�	9sZ�E=�?B�
E=�B	�E=�B	�E=�:BE%�E=�%E)	�)E=�,E)	�-E=�=F�Fc���t�d��}|�dd��5}|�tjtjd��|���\}}|5|�d��|�	|�
d��|��ddd��n#1swxYwYddd��dS#1swxYwYdS)N�(effcdf6ae5eb2fa2d27416d5f184df9c259a7c79r/
z
hmac(sha1)sJefeswhat do ya want for nothing?r)r/r4
r,
r�r�SOL_ALG�ALG_SET_KEYr�rrrr6
s     r�test_hmac_sha1z#LinuxKernelCryptoAPI.test_hmac_sha1�sC���=�=�!K�L�L��
�_�_�V�\�
2�
2�	9�d��O�O�F�N�F�,>��H�H�H��K�K�M�M�E�B���
9�
9��
�
�:�;�;�;�� � �������x�8�8�8�
9�
9�
9�
9�
9�
9�
9�
9�
9�
9�
9����
9�
9�
9�
9�	9�	9�	9�	9�	9�	9�	9�	9�	9�	9�	9�	9����	9�	9�	9�	9�	9�	9s6�AC�6?C�5C�C	�C�C	�	C�C� Cr�c�l�t�d��}t�d��}d}t�d��}t|��}|�dd��5}|�t
jt
j|��|���\}}|5|�	t
j
|t
j���|�|��|�
|�|��|��ddd��n#1swxYwY|���\}}|5|�	|gt
j|���|�
|�|��|��ddd��n#1swxYwYd	}	|g|	z}
|���\}}|5|�	|
t
j
|���|�||	z��}ddd��n#1swxYwY|�
t|��||	z��|�
|d|�|��|���\}}|5|�	|gt
j|���|�||	z��}ddd��n#1swxYwY|�
t|��||	z��|�
|||	z��ddd��dS#1swxYwYdS)
N� 06a9214036b8a15b512e03d534120006� 3dafba429d9eb430b422da802c9fac41sSingle block msg� e353779c1079aeb82708942dbe77181a�skcipherzcbc(aes))r8
�ivr�)r8
rD
r)r/r4
r�r,
r�rr<
r=
r��
sendmsg_afalg�ALG_OP_ENCRYPTr5
rrr�ALG_OP_DECRYPT)
rU�keyrD
r�
ciphertext�msglenr7
r8
r��
multiplier�longmsg�enc�decs
             r�test_aes_cbcz!LinuxKernelCryptoAPI.test_aes_cbc�sC���m�m�>�?�?��
�]�]�=�
>�
>��!���]�]�#E�F�F�
��S����
�_�_�Z��
4�
4� 	4���O�O�F�N�F�,>��D�D�D��K�K�M�M�E�B���
>�
>�� � �F�$9�b�'-��!�8�8�8��
�
�3����� � �������*�=�=�=�	
>�
>�
>�
>�
>�
>�
>�
>�
>�
>�
>����
>�
>�
>�
>��K�K�M�M�E�B���
7�
7�� � �*��$*�$9�b�!�B�B�B�� � �������#�6�6�6�
7�
7�
7�
7�
7�
7�
7�
7�
7�
7�
7����
7�
7�
7�
7��J��e�j�(�G��K�K�M�M�E�B���
3�
3�� � ��$*�$9�b�!�B�B�B��g�g�f�z�1�2�2��
3�
3�
3�
3�
3�
3�
3�
3�
3�
3�
3����
3�
3�
3�
3�
���S��X�X�v�
�':�;�;�;����S��&��\�:�6�6�6��K�K�M�M�E�B���
3�
3�� � �#��$*�$9�b�!�B�B�B��g�g�f�z�1�2�2��
3�
3�
3�
3�
3�
3�
3�
3�
3�
3�
3����
3�
3�
3�
3�
���S��X�X�v�
�':�;�;�;����S�#�
�"2�3�3�3�A 	4� 	4� 	4� 	4� 	4� 	4� 	4� 	4� 	4� 	4� 	4� 	4���� 	4� 	4� 	4� 	4� 	4� 	4s��6AL)�;A+D2�&L)�2D6	�6L)�9D6	�:L)�A
F/�#L)�/F3	�3L)�6F3	�7$L)�;H"�L)�"H&	�&L)�)H&	�*A L)�
<K�L)�K	�L)�K	�AL)�)L-�0L-r"c
��	�t�d��}t�d��}t�d��}t�d��}t�d��}t�d��}t|��}t|��}|�dd��5}	|	�t
jt
j|��|	�t
jt
jd|��|	�	��\}
}|
5|
�
t
j||t
j�	��|
�
|t
j��|
�
|��|
�|t|��z|z��}|�||||���|�|||d���ddd��n#1swxYwY|	�	��\}
}|
5||z}
|
�
|
gt
j||�
��|
�|t|��z|z��}|�||||���|�|||d���ddd��n#1swxYwYt!jd��j}|	�	��\}
}|
5||z}
|
�|
gt
jt
j|t
j��gt
jt
j|t|����|zgt
jt
j||��gf��|
�t|
��|z��}|�||||���|�|||d���ddd��n#1swxYwY|	�	��\}
}|
5||z|z}
|
�
|
gt
j||�
��|
�t|
��|z
��}|�|||d���ddd��n#1swxYwYddd��dS#1swxYwYdS)N� c939cc13397c1d37de6ae0e1cb7c423c�b3d8cc017cbb89b39e0f67e2� c3b3c41f113a31b73d9a5cd432103069� 24825602bd12a984e0092d3e448eda5f� 93fe7d9e9bfd10348a5606e5cafa7354� 0032a1dc85f1c9786925a2e71d8272dd�aeadzgcm(aes))r8
rD
�assoclenr�)r8
rD
rX
r)r/r4
r�r,
r�rr<
r=
�ALG_SET_AEAD_AUTHSIZEr�rE
rF
r5
rrrr�Structrr��
ALG_SET_OP�
ALG_SET_IV�ALG_SET_AEAD_ASSOCLENrG
)rUrH
rD
�plain�assoc�expected_ct�expected_tag�taglenrX
r7
r8
r��resr�pack_uint32s               r�test_aead_aes_gcmz&LinuxKernelCryptoAPI.test_aead_aes_gcm	s����m�m�>�?�?��
�]�]�5�
6�
6���
�
�@�A�A���
�
�@�A�A���m�m�$F�G�G���}�}�%G�H�H���\�"�"���u�:�:��
�_�_�V�Z�
0�
0�1	8�D��O�O�F�N�F�,>��D�D�D��O�O�F�N�F�,H� �&�
*�
*�
*��K�K�M�M�E�B���
>�
>�� � �F�$9�b�*2�&�/�!�K�K�K��
�
�5�&�/�2�2�2��
�
�5�!�!�!��g�g�h��U���3�f�<�=�=��� � ��c�(�F�7�2B�.C�D�D�D�� � ��s�F�7�8�8�}�=�=�=�
>�
>�
>�
>�
>�
>�
>�
>�
>�
>�
>����
>�
>�
>�
>��K�K�M�M�E�B���
>�
>��e�m��� � �#��6�+@�R�*2�!�4�4�4��g�g�h��U���3�f�<�=�=��� � ��c�(�F�7�2B�.C�D�D�D�� � ��s�F�7�8�8�}�=�=�=�

>�
>�
>�
>�
>�
>�
>�
>�
>�
>�
>����
>�
>�
>�
>�!�-��,�,�1�K��K�K�M�M�E�B���
>�
>��e�m���
�
��E��n�f�&7���V�EZ�9[�9[�\��n�f�&7���S��W�W�9M�9M�PR�9R�S��n�f�&B�K�K�PX�DY�DY�Z������g�g�c�#�h�h��/�0�0��� � ��c�(�F�7�2B�.C�D�D�D�� � ��s�F�7�8�8�}�=�=�=�
>�
>�
>�
>�
>�
>�
>�
>�
>�
>�
>����
>�
>�
>�
>��K�K�M�M�E�B���
8�
8��k�)�L�8��� � �#��6�+@�R�*2�!�4�4�4��g�g�c�#�h�h��/�0�0��� � ���H�I�I��7�7�7�
8�
8�
8�
8�
8�
8�
8�
8�
8�
8�
8����
8�
8�
8�
8�Y1	8�1	8�1	8�1	8�1	8�1	8�1	8�1	8�1	8�1	8�1	8�1	8����1	8�1	8�1	8�1	8�1	8�1	8s��A1S�C	H�S�H	�S�H	�S�;BK�S�K	�S�K	�5S�C=P�S�P!	�!S�$P!	�%S�A0R=�1S�=S	�S�S	�S�S�Sc��|�dd��5}tjd��}|�tjtj|��|���\}}|5|�d��}|�	t|��d��ddd��n#1swxYwYddd��dS#1swxYwYdS)N�rng�drbg_pr_sha256rF)r,
rF�urandomr�rr<
r=
r�rrr�)rUr7
�
extra_seedr8
r��rns      r�test_drbg_pr_sha256z(LinuxKernelCryptoAPI.test_drbg_pr_sha256Hs9���_�_�U�$4�
5�
5�	.����B���J��O�O�F�N�F�,>�
�K�K�K��K�K�M�M�E�B���
.�
.��W�W�R�[�[��� � ��R���"�-�-�-�
.�
.�
.�
.�
.�
.�
.�
.�
.�
.�
.����
.�
.�
.�
.�		.�	.�	.�	.�	.�	.�	.�	.�	.�	.�	.�	.����	.�	.�	.�	.�	.�	.s6�AC
�09B5�)C
�5B9	�9C
�<B9	�=C
�
C�Cc��tjtjtjd��}|5|�t��5|���ddd��n#1swxYwY|�t��5|�d���ddd��n#1swxYwY|�t��5|�d��ddd��n#1swxYwY|�t��5|�tjd���ddd��n#1swxYwY|�t��5|�tjd���ddd��n#1swxYwYddd��dS#1swxYwYdS)Nr)r8
r�)r8
rX
rW)rr5r0r�r�rE
rF
r\s  r�test_sendmsg_afalg_argsz,LinuxKernelCryptoAPI.test_sendmsg_afalg_argsSsD���}�V�]�F�,A�1�E�E��
�	J�	J��"�"�9�-�-�
%�
%��"�"�$�$�$�
%�
%�
%�
%�
%�
%�
%�
%�
%�
%�
%����
%�
%�
%�
%��"�"�9�-�-�
,�
,��"�"�d�"�+�+�+�
,�
,�
,�
,�
,�
,�
,�
,�
,�
,�
,����
,�
,�
,�
,��"�"�9�-�-�
&�
&��"�"�1�%�%�%�
&�
&�
&�
&�
&�
&�
&�
&�
&�
&�
&����
&�
&�
&�
&��"�"�9�-�-�
L�
L��"�"�f�&;�d�"�K�K�K�
L�
L�
L�
L�
L�
L�
L�
L�
L�
L�
L����
L�
L�
L�
L��"�"�9�-�-�
J�
J��"�"�f�&;�b�"�I�I�I�
J�
J�
J�
J�
J�
J�
J�
J�
J�
J�
J����
J�
J�
J�
J�	J�	J�	J�	J�	J�	J�	J�	J�	J�	J�	J�	J����	J�	J�	J�	J�	J�	Js��F6�A)�F6�)A-	�-F6�0A-	�1F6�B1�%F6�1B5	�5F6�8B5	�9F6�C8�,F6�8C<	�<F6�?C<	�F6�"E�?F6�E	�F6�E	�F6�0"F�F6�F"	�"F6�%F"	�&F6�6F:�=F:c���tjtjtjd��}|�|j��|�t��5|�d��ddd��n#1swxYwY|�td��5|�d��ddd��n#1swxYwY|�t��5|�d��ddd��n#1swxYwY|�td��5|�d��ddd��dS#1swxYwYdS)Nr)�
tttttttttttttr�z
type too long)�ttttttttttttttr�)r}�?nnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnz
name too long)r}�@nnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnn)
rr5r0rtr r�r[	r�r:r�r\s  r�test_length_restrictionz,LinuxKernelCryptoAPI.test_length_restrictiones7���}�V�]�F�,A�1�E�E������
�#�#�#��
�
�0�
1�
1�	*�	*��I�I�(�)�)�)�	*�	*�	*�	*�	*�	*�	*�	*�	*�	*�	*����	*�	*�	*�	*�
�
#�
#�J��
@�
@�	*�	*��I�I�(�)�)�)�	*�	*�	*�	*�	*�	*�	*�	*�	*�	*�	*����	*�	*�	*�	*��
�
�0�
1�
1�	*�	*��I�I�(�)�)�)�	*�	*�	*�	*�	*�	*�	*�	*�	*�	*�	*����	*�	*�	*�	*�
�
#�
#�J��
@�
@�	*�	*��I�I�(�)�)�)�	*�	*�	*�	*�	*�	*�	*�	*�	*�	*�	*�	*����	*�	*�	*�	*�	*�	*sH�B�B�B�'C	�	C
�C
�.D�D�D�6E�E� EN)
r\r]r^r,
rrr9
r>
rO
re
rl
rn
rt
r_r=rr(
r(
�s������	�	�	�$�W�#�A�q�)�)�9�9�*�)�9�"9�9�9�$�W�#�A�q�)�)�&4�&4�*�)�&4�P$�W�#�A�q�)�)�<8�<8�*�)�<8�|$�W�#�A�q�)�)�.�.�*�)�.�J�J�J�$*�*�*�*�*r=r(
r�r�c��eZdZd�ZdS)�TestMacOSTCPFlagsc�D�|�tj��dSrD)r�r�
TCP_KEEPALIVErTs r�test_tcp_keepalivez$TestMacOSTCPFlags.test_tcp_keepaliveys������,�-�-�-�-�-r=N)r\r]r^ry
r_r=rrv
rv
ws#������.�.�.�.�.r=rv
�winzrequires Windowsc��eZdZhd�Zd�ZdS)�TestMSWindowsTCPFlags>�
TCP_MAXSEG�TCP_KEEPCNT�TCP_NODELAY�TCP_FASTOPEN�TCP_KEEPIDLE�
TCP_KEEPINTVLc���d�tt��D��}�fd�|D��}��g|d��dS)Nc�<�g|]}|�d���|��S)�TCP)rr)r�r#s  rr�z<TestMSWindowsTCPFlags.test_new_tcp_flags.<locals>.<listcomp>�s)��B�B�B�!�a�l�l�5�.A�.A�B�A�B�B�Br=c�&��g|]
}|�jv�|��Sr_)�
knownTCPFlags)r�r#rUs  �rr�z<TestMSWindowsTCPFlags.test_new_tcp_flags.<locals>.<listcomp>�s&���F�F�F��!�4�3E�*E�*E�1�*E�*E�*Er=zANew TCP flags were discovered. See bpo-32394 for more information)rIrr)rU�provided�unknowns`  r�test_new_tcp_flagsz(TestMSWindowsTCPFlags.test_new_tcp_flags�sc���B�B�s�6�{�{�B�B�B��F�F�F�F�h�F�F�F������W�O�	Q�	Q�	Q�	Q�	Qr=N)r\r]r^r�
r�
r_r=rr|
r|
}s9���������M�Q�Q�Q�Q�Qr=r|
c�D�eZdZd�Zd�Zd�Zejee	d��pee	d��d��ej
ejd��d�����Z
ejej��d	��ej
ejd��d
�����ZdS)�CreateServerTestc��tj��}tjd|f��5}|�|���dd��|�|���d|��ddd��n#1swxYwYtjr�tjd|ftj���5}|�|���dd��|�|���d|��ddd��dS#1swxYwYdSdS)Nr�rr�r�r�)rr�r�
create_serverrr�r�rq�rUrRrMs   r�test_addresszCreateServerTest.test_address�s����-�/�/��
�
!�;��"5�
6�
6�	:�$����T�-�-�/�/��2�K�@�@�@����T�-�-�/�/��2�D�9�9�9�	:�	:�	:�	:�	:�	:�	:�	:�	:�	:�	:����	:�	:�	:�	:��%�	>��%�u�d�m�-3�_�>�>�>�
>�AE�� � ��!1�!1�!3�!3�A�!6��>�>�>�� � ��!1�!1�!3�!3�A�!6��=�=�=�
>�
>�
>�
>�
>�
>�
>�
>�
>�
>�
>�
>����
>�
>�
>�
>�
>�
>�	>�	>s%�AB�B�B�AD6�6D:�=D:c��tjd��5}|�|jtj��|�|jtj��ddd��n#1swxYwYtjr�tjdtj	���5}|�|jtj	��|�|jtj��ddd��dS#1swxYwYdSdS)Nr��r�rr�)
rr�
rr�rOr}r@rr�rq)rUrMr#s   r�test_family_and_typez%CreateServerTest.test_family_and_type�sv��
�
!�"2�
3�
3�	<�t����T�[�&�.�9�9�9����T�Y��(:�;�;�;�	<�	<�	<�	<�	<�	<�	<�	<�	<�	<�	<����	<�	<�	<�	<��%�	@��%�j���I�I�I�
@�Q�� � ���6�?�;�;�;�� � ���F�,>�?�?�?�
@�
@�
@�
@�
@�
@�
@�
@�
@�
@�
@�
@����
@�
@�
@�
@�
@�
@�	@�	@s%�AA,�,A0�3A0�#AC;�;C?�C?c�|�ttd��sK|�t��5tjdd���ddd��dS#1swxYwYdStjd��5}|�tjtj��}|�|d��ddd��n#1swxYwYtjdd���5}|�tjtj��}|�	|d��ddd��dS#1swxYwYdS)N�SO_REUSEPORT)r�rT)�
reuse_portr)
rrr�r�r�
r�r�r�
rr�)rUrMrs   r�test_reuse_portz CreateServerTest.test_reuse_port�s����v�~�.�.�		,��"�"�:�.�.�
H�
H��$�%5�$�G�G�G�G�
H�
H�
H�
H�
H�
H�
H�
H�
H�
H�
H�
H����
H�
H�
H�
H�
H�
H��%�&6�7�7�
)�4��o�o�f�&7��9L�M�M��� � ��a�(�(�(�
)�
)�
)�
)�
)�
)�
)�
)�
)�
)�
)����
)�
)�
)�
)��%�&6�4�H�H�H�
,�D��o�o�f�&7��9L�M�M���#�#�C��+�+�+�
,�
,�
,�
,�
,�
,�
,�
,�
,�
,�
,�
,����
,�
,�
,�
,�
,�
,s7�A�A�A�5AC�C�	C�#AD1�1D5�8D5r��IPV6_V6ONLYz IPV6_V6ONLY option not supportedr�c�x�tjdtj���5}ddd��dS#1swxYwYdS)Nr�
r�)rr�
rqr\s  r�test_ipv6_only_defaultz'CreateServerTest.test_ipv6_only_default�s���
�
!�*�V�_�
E�
E�
E�	L��	L�	L�	L�	L�	L�	L�	L�	L�	L�	L�	L�	L����	L�	L�	L�	L�	L�	Ls�/�3�3�dualstack_ipv6 not supportedc���tjdtjd���5}|�|jtj��ddd��dS#1swxYwYdS)Nr�
T�r��dualstack_ipv6)rr�
rqrr�r\s  r�test_dualstack_ipv6_familyz+CreateServerTest.test_dualstack_ipv6_family�s����
!�*�V�_�15�7�7�7�	;�:>����T�[�&�/�:�:�:�	;�	;�	;�	;�	;�	;�	;�	;�	;�	;�	;�	;����	;�	;�	;�	;�	;�	;s�&A�A�AN)r\r]r^r�
r�
r�
r�r�rr�r�rr�r�
r�has_dualstack_ipv6r�
r_r=rr�
r�
�s������	>�	>�	>�@�@�@�
,�
,�
,��X�_����.�9�9�9�9� ���-�8�8�8�7�9�9��X���3�5R�S�S�L�L�T�S�9�9�L��X�_�2��2�4�4�4�3�5�5��X���3�5R�S�S�;�;�T�S�5�5�;�;�;r=r�
c�|�eZdZejZd�Zd�Zd�Ze	j
ejd��d���Z
e	jej��d��e	j
ejd��d�����Ze	jej��d��e	j
ejd��d�����Zd	S)
�CreateServerFunctionalTestc�$�����fd�}tj���|��j��tj||f���}|j����|j�j������dS)Nc�^��|5|���\}}|5���j��|�d��}|s	ddd��ddd��dS|�|��ddd��n#1swxYwYddd��dS#1swxYwYdSr)r�r�rGrr)rMr�r�rr�rUs    ��r�runz3CreateServerFunctionalTest.echo_server.<locals>.run�sa����
&�
&��+�+�-�-���a��&�&��J�J�t�|�,�,�,��)�)�D�/�/�C����	&�&�&�&�&�&�
&�
&�
&�
&�
&�
&�
&�
&��L�L��%�%�%�&�&�&�&�&�&�&�&�&�&�&����&�&�&�&�
&�
&�
&�
&�
&�
&�
&�
&�
&�
&�
&�
&����
&�
&�
&�
&�
&�
&s@�B"�3B
�B"�)B
�>B"�
B	�B"�B	�B"�"B&�)B&r�	)	rlr�r�rGr�r�rtr�r�)rUrMr�
r�r�s`   @r�echo_serverz&CreateServerFunctionalTest.echo_server�s�����	&�	&�	&�	&�	&�	&���!�!�������%�%�%��!��D�8�<�<�<�������������T�\�2�2�2�
�	�	�����r=c�<�tj|���5}|�|j��|�|��|�d��|�|�d��d��ddd��dS#1swxYwYdS)Nr�r�r)rr�rGr�rrr)rUrr�rMs    r�echo_clientz&CreateServerFunctionalTest.echo_client�s���
�]�&�
)�
)�
)�	6�T��O�O�D�L�)�)�)��L�L������L�L�� � � ����T�Y�Y�t�_�_�f�5�5�5�		6�	6�	6�	6�	6�	6�	6�	6�	6�	6�	6�	6����	6�	6�	6�	6�	6�	6s�A.B�B�Bc��tj��}tjd|f��5}|�|��|�d|ftj��ddd��dS#1swxYwYdS)Nr�r�)rr�rr�
r�
r�
rOr�
s   r�	test_tcp4z$CreateServerFunctionalTest.test_tcp4�s����-�/�/��
�
!�2�t�*�
-�
-�	B�����T�"�"�"����k�4�0�&�.�A�A�A�	B�	B�	B�	B�	B�	B�	B�	B�	B�	B�	B�	B����	B�	B�	B�	B�	B�	Bs�8A/�/A3�6A3r�c��tj��}tjd|ftj���5}|�|��|�d|ftj��ddd��dS#1swxYwYdS)Nr�r�r��rr�rr�
rqr�
r�
r�
s   r�	test_tcp6z$CreateServerFunctionalTest.test_tcp6�s����-�/�/��
�
!�2�t�*�)/��:�:�:�	=�=A����T�"�"�"����e�T�]�F�O�<�<�<�	=�	=�	=�	=�	=�	=�	=�	=�	=�	=�	=�	=����	=�	=�	=�	=�	=�	=s�8A;�;A?�A?r�
c��tj��}tjd|ftjd���5}|�|��|�d|ftj��ddd��dS#1swxYwYdS)Nr�Tr�
r�)rr�rr�
rqr�
r�
rOr�
s   r�test_dual_stack_client_v4z4CreateServerFunctionalTest.test_dual_stack_client_v4�s����-�/�/��
�
!�2�t�*�V�_�15�7�7�7�	B�:>����T�"�"�"����k�4�0�&�.�A�A�A�	B�	B�	B�	B�	B�	B�	B�	B�	B�	B�	B�	B����	B�	B�	B�	B�	B�	B��8A<�<B�Bc��tj��}tjd|ftjd���5}|�|��|�d|ftj��ddd��dS#1swxYwYdS)Nr�Tr�
r�r�
r�
s   r�test_dual_stack_client_v6z4CreateServerFunctionalTest.test_dual_stack_client_v6�s����-�/�/��
�
!�2�t�*�V�_�15�7�7�7�	=�:>����T�"�"�"����e�T�]�F�O�<�<�<�	=�	=�	=�	=�	=�	=�	=�	=�	=�	=�	=�	=����	=�	=�	=�	=�	=�	=r�
N)r\r]r^rrNrGr�
r�
r�
r�r�rr�r�
r�rr�
r�
r�
r_r=rr�
r�
�s=�������&�G����$6�6�6�B�B�B��X���3�5R�S�S�=�=�T�S�=��X�_�2��2�4�4�4�3�5�5��X���3�5R�S�S�B�B�T�S�5�5�B��X�_�2��2�4�4�4�3�5�5��X���3�5R�S�S�=�=�T�S�5�5�=�=�=r=r�
�send_fds�recv_fdsc��eZdZd�ZdS)�SendRecvFdsTestsc	�H�d�}d�}d�td��D��}|�||��d�|D��}tjtjtj��\}}|5|5tj|tg|��tj|tt��dzt|��dz��\}}}	}
|�||��ddd��n#1swxYwYddd��n#1swxYwY|�
|t��|�
t|��t|����|�
|	d��t|��D]>\}}|\}}
tj
|
t|��������?t|��D]O\}}tj|d��}|�
|t|��������PdS)	Nc�f�|D]-\}}tj|��tj|���.dSrD�rFr )�pipesrz�fd2s   r�close_pipesz8SendRecvFdsTests.testSendAndRecvFds.<locals>.close_pipess;��!�
�
���S����
�
�
����
�
�
�
�
�
r=c�8�|D]}tj|���dSrDr�
)rBrus  r�	close_fdsz6SendRecvFdsTests.testSendAndRecvFds.<locals>.close_fdss*���
�
���������
�
r=c�4�g|]}tj����Sr_)rF�pipe)r�r�s  rr�z7SendRecvFdsTests.testSendAndRecvFds.<locals>.<listcomp>s��.�.�.�q�����.�.�.r=r}c��g|]\}}|��Sr_r_)r��rfd�wfds   rr�z7SendRecvFdsTests.testSendAndRecvFds.<locals>.<listcomp>s��)�)�)�x�s�C�s�)�)�)r=r�rr�)r=rtrrrRr@r�
rr�
r�rrErFr?r�r@r�)rUr�
r�
r�
rB�sock1�sock2r�fds2r�rr3r�
r�
rs               r�testSendAndRecvFdsz#SendRecvFdsTests.testSendAndRecvFdss���	�	�	�
	�	�	�
/�.�E�"�I�I�.�.�.������U�+�+�+�)�)�5�)�)�)���(����9K�L�L���u�
�	-�	-�E�	-�	-��O�E�C�5�#�.�.�.�%+�_�U�C��H�H�q�L�#�c�(�(�UV�,�%W�%W�"�C��u�d��O�O�I�t�,�,�,�		-�	-�	-�	-�	-�	-�	-�	-�	-�	-�	-����	-�	-�	-�	-�	-�	-�	-�	-�	-�	-�	-�	-�	-�	-�	-����	-�	-�	-�	-�	
����c�"�"�"�����T���C��H�H�-�-�-������"�"�"�$�E�*�*�	/�	/�J�E�3��H�C���H�S�#�e�*�*�+�+�-�-�.�.�.�.�#�D�/�/�	9�	9�J�E�3��7�3��$�$�D����T�C��J�J�$5�$5�$7�$7�8�8�8�8�	9�	9s7�0D	�3A3C2�&D	�2C6	�6D	�9C6	�:D	�	D
�D
N)r\r]r^r�
r_r=rr�
r�
s#������#9�#9�#9�#9�#9r=r�
c�d�tj��}tjtjg|�R�dSrD)r�threading_setupr��addModuleCleanup�threading_cleanup)�thread_infos r�setUpModuler�
1s3��"�2�4�4�K���.�@�O�;�O�O�O�O�O�Or=�__main__)�r��testr�test.supportrrrr(r�	r�rr�rCr�r�r�r?rFrqr�r��weakrefrrrr>rr�	r�r�	�_threadr�rlr�	r�r�requires_working_socketr�r@rr��systemrr�rr$r)r-r1r6r9r<rBr�rI�HAVE_SOCKET_CAN�HAVE_SOCKET_CAN_ISOTP�HAVE_SOCKET_CAN_J1939�HAVE_SOCKET_RDS�HAVE_SOCKET_ALG�HAVE_SOCKET_QIPCRTR�HAVE_SOCKET_VSOCKr�HAVE_SOCKET_UDPLITE�HAVE_SOCKET_BLUETOOTHr2rWr�rMrarerhr}r�r�r�r�r�r�r�r�r�r�rrr%r.r2r;rArPrVr^rbrerhrlrorsr�r�r�r�r�r	r>rNrmrvr�r�r�r�rrr(rQrXr]rarhrnrqr�r�r�rr
rr,r<r�r0r4r7r9r;r�r@rCrErGrJrLrNrPrRrTrWrYr[r]r_rarcrergrirkrmrvryr{r}rr�r�r�r�r�r�r�r�rrQrprtrvrzr|r�r~r�r�r�r�r�r�r�r�r	r	r4	rb	rc	rd	r]	r_	rk	rs	r�	r�	r�r�	r�	r%
r(
rv
rrr|
r�
r�
r�
r�
r\�mainr_r=r�<module>r�
s4)������������"�"�"�"�"�"�&�&�&�&�&�&�)�)�)�)�)�)�����	�	�	�	�����
�
�
�
�
�
�
�
�����������������
�
�
�
�	�	�	�	�������������������
�
�
�
�����
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
���������������������O�O�O�������L�L�L�L�������E�E�E����� ���t�,�,�,�,����)�0�0��9�9���	��h�o���5� ����N�N�N�N�������G�G�G�����(�(�(����������������������
�
�
���.�.���.�#�"�$�$��.�.�0�0��.�.�0�0��"�"�$�$��"�"�$�$��*�*�,�,��&�&�(�(���g�f�&7�8�8��.�.�0�0���U�[��
�
�
&�
�	�	�	�	�	�H�%�	�	�	������H�%����7�7�7�7�7�
�7�7�7�7�7�7�7�7�7�7�7�&0+�0+�0+�0+�0+�H�%�0+�0+�0+�f
7�
7�
7�
7�
7�H�%�
7�
7�
7� m�m�m�m�m�m�m�m�^,�,�,�,�,�M�>�,�,�,�,�,�,�,�,�M�>�,�,�,����(�
3�5�5�,�,�,�,�,� 1�>�,�,�5�5�,�,�,�,�,�,�M�>�,�,�,�(,�,�,�,�,�M�>�,�,�,�,����$���-�-����&�
1�3�3����W�W�Y�Y�!�^�
9�;�;������H�$5�~���;�;�3�3�.�-�
�<3�3�3�3�3�/�3�3�3�B,�,�,�,�,�X�&��,�,�,�8�����X�&����.�����~����,�,�,�,�,�7��,�,�,�,�>!!�!!�!!�!!�!!�7�6�!!�!!�!!�H0�0�0�0�0��0�0�0�$A�A�A�A�A�'�A�A�A�
6�
6�
6�
6�
6�>�
6�
6�
6�A�A�A�A�A�,�A�A�A�@�@�@�@�@�,�@�@�@�X�X�X�X�X�l�X�X�X�2�2�2�2�2�\�2�2�2� � � � � �L� � � �
A�A�A�A�A�=�A�A�A�Y�Y�Y�Y�Y�}�Y�Y�Y�/�/�/�.F�F�F�3�3�3�>]G�]G�]G�]G�]G��*�]G�]G�]G�@%���_�&I�J�J�P[�P[�P[�P[�P[�8�$�P[�P[�K�J�P[�f���_�&I�J�J�W=�W=�W=�W=�W=�#�W=�W=�K�J�W=�t���*�,O�P�P�'�'�'�'�'��!�'�'�Q�P�'�T���*�,O�P�P�:�:�:�:�:��!�:�:�Q�P�:�z���_�&K�L�L�G�G�G�G�G�8�$�G�G�M�L�G�"���_�&K�L�L�<9�<9�<9�<9�<9�#�<9�<9�M�L�<9�|���(�
3�5�5�7�7�7�7�7�x�(�7�7�5�5�7�6����$���-�-����&�
1�3�3�+D�+D�+D�+D�+D�X�&�+D�+D�3�3�.�-�+D�\���*�@�B�B�"�"�"�"�"��*�"�"�B�B�"�Jx!�x!�x!�x!�x!�&�x!�x!�x!�v3�3�3�3�3�(�3�3�3�:���(�
3�5�5�3�3�3�3�3�0�3�3�5�5�3�nt8�t8�t8�t8�t8�/�t8�t8�t8�n	6�	6�	6�	6�	6��	6�	6�	6�F�F�F�F�F��F�F�F�@�@�@�@�@��@�@�@�9�9�9�9�9�O�9�9�9�*
�
�
�
�
��
�
�
�(5�5�5�5�5�?�5�5�5�t@�t@�t@�t@�t@�/�t@�t@�t@�n:"�:"�:"�:"�:"��:"�:"�:"�z.�.�.�.�.��.�.�.�"SM�SM�SM�SM�SM�/�SM�SM�SM�l � � � � � 3� � � �F�����&����:M5�M5�M5�M5�M5�'�)<�M5�M5�M5�`8I�8I�8I�8I�8I�X�&�8I�8I�8I�vf!�f!�f!�f!�f!�0�f!�f!�f!�Ro�o�o�o�o�7�o�o�o�h
	�	�	�	�	�6�:�4�k�	�	�	�
��f�m�Y�'�'�	�	�	�	�	�/�1G�	�	�(�'�	���f�m�Y�'�'�	�	�	�	�	�\�#9�	�	�(�'�	���f�m�^�,�,�	�	�	�	�	�)�+A�	�	�-�,�	�1�1�1�1�1�7�;�5�|�1�1�1���f�m�Y�'�'����]�/�1O�P�P���z�<�(�(�	�	�	�	�	�0�2I�	�	�)�(�Q�P�(�'�	���f�m�Y�'�'����]�/�1O�P�P���z�<�(�(�	�	�	�	�	�l�$;�	�	�)�(�Q�P�(�'�	���f�m�^�,�,����]�/�1O�P�P���z�<�(�(�	�	�	�	�	�*�,C�	�	�)�(�Q�P�-�,�	���f�m�Y�'�'����]�/�1O�P�P�
��f�n�%�%���z�<�(�(�	�	�	�	�	�&:�&=�	�	�)�(�&�%�Q�P�(�'�	���f�m�^�,�,����]�/�1O�P�P�
��f�n�%�%���z�<�(�(�	�	�	�	�	�*:�*>�*A�	�	�)�(�&�%�Q�P�-�,�	����(�
3�5�5�	�	�	�	�	�!:�:�4�o�	�	�5�5�	�
���(�
3�5�5�
��f�m�Y�'�'�	�	�	�	�	�3�5O�	�	�(�'�5�5�	����(�
3�5�5�
��f�m�Y�'�'�	�	�	�	�	��'A�	�	�(�'�5�5�	����(�
3�5�5�
��f�m�^�,�,�	�	�	�	�	�-�/I�	�	�-�,�5�5�	����(�
3�5�5�1�1�1�1�1�";�;�5�7G�1�1�5�5�1���f�m�Y�'�'����]�/�1O�P�P����(�
3�5�5���z�<�(�(�	�	�	�	�	�4�6Q�	�	�)�(�5�5�Q�P�(�'�
	���f�m�Y�'�'����]�/�1O�P�P����(�
3�5�5���z�<�(�(�	�	�	�	�	�,�(C�	�	�)�(�5�5�Q�P�(�'�
	���f�m�^�,�,����]�/�1O�P�P����(�
3�5�5���z�<�(�(�	�	�	�	�	�.�0K�	�	�)�(�5�5�Q�P�-�,�
	���f�m�Y�'�'����]�/�1O�P�P����(�
3�5�5�
��f�n�%�%���z�<�(�(�	�	�	�	�	�*>�&A�	�	�)�(�&�%�5�5�Q�P�(�'�	���f�m�^�,�,����]�/�1O�P�P����(�
3�5�5�
��f�n�%�%���z�<�(�(�	�	�	�	�	�.>�*>�*E�	�	�)�(�&�%�5�5�Q�P�-�,�	�	�	�	�	�	�5�5�{�	�	�	���f�m�Y�'�'�	�	�	�	�	�'�)?�	�	�(�'�	���f�m�Y�'�'�	�	�	�	�	�\�#<�+�	�	�(�'�	���f�m�^�,�,�	�	�	�	�	�)�+D�/�	�	�-�,�	�
	�	�	�	�	�$<�$<�$<�n�	�	�	�
��f�m�Y�'�'�����N�O�O���y�-��8�8�	�	�	�	�	�.�0M�	�	�9�8�P�O�(�'�	���f�m�Y�'�'�����N�O�O���y�-��8�8�	R�	R�	R�	R�	R�L�*C�9�	R�	R�9�8�P�O�(�'�	R���f�m�^�,�,�����N�O�O���y�-��8�8�	R�	R�	R�	R�	R� 0�2K� =�	R�	R�9�8�P�O�-�,�	R�	�	�	�	�	�$<�$<�n�	�	�	���f�m�Y�'�'�
��f�i� � �	�	�	�	�	�.�0M�	�	�!� �(�'�	���f�m�Y�'�'�
��f�i� � �	�	�	�	�	�L�*C�9�	�	�!� �(�'�	���f�m�^�,�,�
��f�i� � �	�	�	�	�	� 0�2K� =�	�	�!� �-�,�	���f�m�Y�	�2�2�
��f�i��|�<�<�	�	�	�	�	��0M�	�	�=�<�3�2�	���f�m�Y��7�7�
��f�i��|�<�<�	�	�	�	�	�%5�}�%B�	�	�=�<�8�7�	�"�"�"�"�"�"�"�"�@��f�n�%�%����W�W�V�W�-�-�M�����1M�1M�B�D�D�$M�$M�$M�$M�$M�!7��$M�$M�D�D�&�%�$M�R��f�n�%�%����W�W�V�W�-�-�M�����1M�1M�B�D�D�4F�4F�4F�4F�4F�!7�!:�!9�;�4F�4F�D�D�&�%�4F�n�����)����( #� #� #� #� #�.� #� #� #�F]�]�]�]�]�/�]�]�]�@`
�`
�`
�`
�`
�1�`
�`
�`
�FiG�iG�iG�iG�iG�(?�iG�iG�iG�X�����*A����
�����+B����
�����)@���������*A���������.E����"�"�"�"�"�F�"�"�"������)�<����N5�N5�N5�N5�N5�� 1�N5�N5�N5�bD4�D4�D4�D4�D4�m�^�D4�D4�D4�N>�>�>�>�>�]�N�>�>�>�>75�75�75�75�75�]�75�75�75�rK�K�K�K�K�]�K�K�K�.���(�
3�5�5�K�K�K�K�K�*�K�K�5�5�K�.$�$�$�$�$�X�&�$�$�$�.���S�\�W�,�.C�D�D�4H�4H�4H�4H�4H��!2�4H�4H�E�D�4H�n���W�W�V�Y�/�/�1L�M�M�G7�G7�G7�G7�G7�X�&�G7�G7�N�M�G7�TP:�P:�P:�P:�P:�&�P:�P:�P:�f�
�
�
�
�
����(���_�_�&�&�M�O�O�#�#�#�#�#�x� �#�#�O�O�#�,���_�_�&�&�M�O�O�$�$�$�$�$��*�N�$�$�O�O�$�N)9�)9�)9�)9�)9�/�)9�)9�)9�X@6�@6�@6�@6�@6�h�'�@6�@6�@6�F���W�W�V�_�5�5�0�2�2�9$�9$�9$�9$�9$�8�,�9$�9$�2�2�9$�x���R�W��_�&8�9�9����_�&<�=�=�b#�b#�b#�b#�b#�
�b#�b#�>�=�:�9�b#�JF=�F=�F=�F=�F=�1�F=�F=�F=�R���W�W�R��,�,�<�>�>�7�7�7�7�7� 5�7�7�>�>�7����_�&7�8�8�@*�@*�@*�@*�@*�8�,�@*�@*�9�8�@*�F���S�\�X�-�/D�E�E�.�.�.�.�.��)�.�.�F�E�.�
���S�\�,�,�U�3�3�5G�H�H�Q�Q�Q�Q�Q�H�-�Q�Q�I�H�Q�,0;�0;�0;�0;�0;�x�(�0;�0;�0;�f>=�>=�>=�>=�>=��!2�>=�>=�>=�@��f�j�!�!�
��f�j�!�!�
��f�i� � �$9�$9�$9�$9�$9�x�(�$9�$9�!� �"�!�"�!�$9�NP�P�P�
�z����H�M�O�O�O�O�O��s6�B�B�B�B�B"�!B"�(C-�-C7�6C7