Your IP : 216.73.216.213


Current Path : /opt/alt/python311/lib64/python3.11/test/__pycache__/
Upload File :
Current File : //opt/alt/python311/lib64/python3.11/test/__pycache__/test_socket.cpython-311.pyc

�

�0�i	���l(�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(d
Z)ej*��dkZ+dej,��vZ-	ddl.Z.n
#e"$rdZ.YnwxYwd�Z/d�Z0d�Z1d�Z2d�Z3d�Z4d�Z5d�Z6d�Z7ej8d���Z9e0��Z:e1��Z;e2��Z<e3��Z=e4��Z>e5��Z?e6��Z@eAe
d��ZBe7��ZCejd��jDZEGd�dejF��ZGGd�dejF��ZHGd �d!eH��ZIGd"�d#ejF��ZJGd$�d%ejF��ZKGd&�d'��ZLGd(�d)eGeL��ZMGd*�d+eHeL��ZNejOeBd,��Gd-�d.eIeL����ZPGd/�d0eJeL��ZQGd1�d2eKeL��ZRejSe#dud3��ejSe-d4��ejOe@d5��ejOe/��d6kd7��Gd8�d9ejFeL����������ZTGd:�d;eM��ZUGd<�d=ejFeL��ZVGd>�d?ejF��ZWGd@�dAeW��ZXGdB�dCeWeL��ZYGdD�dEeXeY��ZZGdF�dGeW��Z[GdH�dIe[��Z\GdJ�dKeW��Z]GdL�dMe]��Z^GdN�dOe]��Z_GdP�dQe]��Z`GdR�dSe]��ZaGdT�dUe]��ZbGdV�dWeb��ZcGdX�dYeb��ZddZ�Zed[�Zfd\�ZgGd]�d^ejF��ZhejOe:d_��Gd`�daejF����ZiejOe:d_��Gdb�dceQ����ZjejOe;dd��Gde�dfejF����ZkejOe<dg��Gdh�diejF����ZlejOe=dj��Gdk�dlejF����ZmejOe=dj��Gdm�dneR����ZnejOe?do��Gdp�dqejF����ZoejSe#dud3��ejOe@d5��Gdr�dsejF������ZpejOeCdt��Gdu�dvejF����ZqGdw�dxeU��ZrGdy�dzeN��ZsejOeBd,��Gd{�d|eP����ZtGd}�d~��ZuGd�d�eu��ZvGd��d�eu��ZwGd��d�eu��ZxGd��d�eu��ZyGd��d�eu��ZzGd��d�eu��Z{Gd��d�e{��Z|Gd��d�e|��Z}Gd��d�e|��Z~Gd��d�eu��ZGd��d�e��Z�Gd��d�e��Z�Gd��d�eve��Z�Gd��d�ejF��Z�Gd��d�e{��Z�Gd��d�e{��Z�Gd��d�eweyeYe_��Z�efe
j
d���Gd��d�e~e�����Z�efe
j
d���Gd��d�e�e�����Z�efe
j
d���Gd��d�e�e�����Z�Gd��d�eweyeYec��Z�efe
j
d���ejOej�d���egd�d���Gd��d�e~e���������Z�efe
j
d���ejOej�d���egd�d���Gd��d�e�e���������Z�efe
j
d���ejOej�d���egd�d���Gd��d�e�e���������Z�efe
j
d���ejOej�d���efe
d���egd�d���Gd��d�e�e�����������Z�efe
j
d���ejOej�d���efe
d���egd�d���Gd��d�eve�e�����������Z�ejOeBd,��Gd��d�eweyeYe`����Z�ejOeBd,��efe
j
d���Gd��d�e~e�������Z�ejOeBd,��efe
j
d���Gd��d�e�e�������Z�ejOeBd,��efe
j
d���Gd��d�e�e�������Z�ejOeBd,��Gd„d�eweyeYed����Z�efe
j
d���ejOej�d���ejOeBd,��egd�d���GdĄd�e~e�����������Z�efe
j
d���ejOej�d���ejOeBd,��egd�d���GdƄd�e�e�����������Z�efe
j
d���ejOej�d���ejOeBd,��egd�d���GdȄd�e�e�����������Z�efe
j
d���ejOej�d���ejOeBd,��efe
d���egd�d���Gdʄd�e�e�������������Z�efe
j
d���ejOej�d���ejOeBd,��efe
d���egd�d���Gd̄d�eve�e�������������Z�Gd΄d�ezeZe^��Z�efe
j
d���GdЄd�e}e�����Z�efe
j
d���Gd҄d�e�e�e�����Z�efe
j
d���GdԄd�e�e�e�����Z�Gdքd�exezeZea��Z�efe
j
d���ejSe+dئ�egd�d�dۦ�Gd܄d�e}e���������Z�efe
j
d���ejSe+dئ�egd�d�dۦ�Gdބd�e�e�e���������Z�efe
j
d���ejSe+dئ�egd�d�dۦ�Gd�d�e�e�e���������Z�Gd�d�ezeZe\��Z�efe
j
d���efe
d��Gd�d�e}e�������Z�efe
j
d���efe
d��Gd�d�e�e�e�������Z�efe
j
d���efe
d��Gd�d�e�e�e�������Z�efe
j
d�d���efe
d�d�d��Gd�d�e�e�������Z�efe
j
d�d���efe
d�d�d��Gd�d�eve�e�������Z�Gd�d��Z�efed��ejOeAed��peAed���d���Gd��d�e�e_������Z�efed��ejOeAed��peAed���d���Gd��d�e�eXe^������Z�Gd��d�eM��Z�Gd��d�eV��Z�Gd���deV��Z�G�d��deM��Z�G�d��deU��Z�G�d��de���Z�G�d��de���Z�G�d	��d
e���Z�G�d��de���Z�G�d
��de���Z�G�d��de���Z�G�d��de���Z�G�d��de�er��Z�G�d��dejF��Z�G�d��deGeL��Z�G�d��deGeL��Z�G�d��deG��Z�G�d��deH��Z�ejOeBd,��G�d��d eI����Z�G�d!��d"ejF��Z�ejOej�d#k�d$��G�d%��d&ejF����Z�ejOeAe
d���d'��G�d(��d)ejF����Z�G�d*��d+eU��ZÐd,ZĐd-ZŐd.ZƐd/�Z�ejOeǦ��d0��G�d1��d2ejF����Z�ejOeǦ��d0��G�d3��d4ejFeL����Z�G�d5��d6eM��Z�G�d7��d8ejF��Z�ejOeAe
�d9���d:��G�d;��d<ejF����Z�ejOej��d=k�d>��ejOe!�d?��G�d@��dAeG������Z�G�dB��dCeM��Z�ejOeAe�dD���dE��G�dF��dGeϦ���Z�ejOe>�dH��G�dI��dJejF����Z�ejOej�dKk�dL��G�dM��dNejF����Z�ejOej���dO���dP��G�dQ��dRejF����Z�G�dS��dTejF��Z�G�dU��dVejF��Z�efe
�dW��efe
�dX��efe
d��G�dY��dZejF��������Zאd[�Z�eِd\krej���dSdS(]�N)�support)�	os_helper)�
socket_helper)�threading_helper)�proxyFT)�moduleuMichael Gilfix was hereሴ
�utf-8����AIXzmicrosoft-standard-WSLc�,�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  �7/opt/alt/python311/lib64/python3.11/test/test_socket.py�get_cidr8s����}��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%Esa����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*O�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.Yr+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_rdsr2c�`����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_ALGr1r!r"rr#s r�_have_socket_algr7mr3r4c��	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_qipcrtrr:wsa����M�&�+�V�->��B�B��	
���	�	�	�	��
�G�$�����u�u������4r4c�&�t��}|duS)z:Check whether AF_VSOCK sockets are supported on this host.N)r)�cids r�_have_socket_vsockr=�s��
�)�)�C��t�O��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_bluetoothrC�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_setdefaulttimeoutrJ�sa�����*�,�,�K�.�� ��)�)�)�
����� ��-�-�-�-�-��� ��-�-�-�-���s�A�A�IPPROTO_UDPLITE�ic��eZdZd�Zd�ZdS)�
SocketTCPTestc���tjtjtj��|_t	j|j��|_|j���dSrE)r�AF_INETrA�servr�	bind_port�port�listen��selfs r�setUpzSocketTCPTest.setUp�sH���M�&�.�&�2D�E�E��	�!�+�D�I�6�6��	��	�������r>c�F�|j���d|_dSrE�rQr!rUs r�tearDownzSocketTCPTest.tearDown�����	��������	�	�	r>N��__name__�
__module__�__qualname__rWrZ�r>rrNrN�s2���������
����r>rNc��eZdZd�Zd�ZdS)�
SocketUDPTestc��tjtjtj��|_t	j|j��|_dSrE)rrPr(rQrrRrSrUs rrWzSocketUDPTest.setUp�s2���M�&�.�&�2C�D�D��	�!�+�D�I�6�6��	�	�	r>c�F�|j���d|_dSrErYrUs rrZzSocketUDPTest.tearDown�r[r>Nr\r`r>rrbrb�s2������7�7�7�����r>rbc��eZdZd�ZdS)�SocketUDPLITETestc��tjtjtjtj��|_tj|j��|_dSrE)rrPr(rKrQrrRrSrUs rrWzSocketUDPLITETest.setUp�s7���M�&�.�&�2C�V�E[�\�\��	�!�+�D�I�6�6��	�	�	r>N)r]r^r_rWr`r>rrfrf�s#������7�7�7�7�7r>rfc�~�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)rrrr r$�
addCleanupr!�bind�	interfacer�skipTestrUs rrWzSocketCANTest.setUp�s�����v�}�f�o�v�~�N�N���������%�%�%�	+��F�K�K���)�*�*�*�*�*���	+�	+�	+��M�M�A��>�*�
+�
+�
+�
+�
+�
+�	+���s� A<�<'B'�&B'N)r]r^r_�__doc__rs�bufsize�
can_frame_fmtr�calcsize�can_frame_size�bcm_cmd_msg_fmtrWr`r>rriri�s����������I��G���M�$�V�_�]�3�3�N��  �O��s�o�f�o�o�>�>��B�C�C�O�+�+�+�+�+r>ric��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)rr0r1rQrqr!rrRrSrrtrUs rrWzSocketRDSTest.setUp	s����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_rurvrWr`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|_dSrE)rW�_ThreadableTest__setUp�_setUprUs r�__init__zThreadableTest.__init__8s���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�setrUs r�serverExplicitReadyz"ThreadableTest.serverExplicitReady=s��
	
��������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)Nr
Fc�l���j���r�j����dSrE)�queue�qsize�getrUs�r�raise_queued_exceptionz5ThreadableTest._setUp.<locals>.raise_queued_exceptionMs5����z���!�!�
'��j�n�n�&�&�&�
'�
'r>�.�_T)�enterContextr�wait_threads_exit�	threading�Eventr��client_ready�doner��Queue�server_crashedrq�id�rfind�getattr�thread�start_new_thread�	clientRun�
client_threadr�r��wait)rVr��
methodnamerL�test_methods`    rr�zThreadableTest._setUpDs�������*�<�>�>�?�?�?�%�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)rV�	test_func�es   rr�zThreadableTest.clientRunds������� � � �	$����������	�	�	��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.)�NotImplementedErrorrUs rr�zThreadableTest.clientSetUpzs��!�"D�E�E�Er>c�^�|j���tj��dSrE)r�r�r��exitrUs rr�zThreadableTest.clientTearDown}s ���	�
�
������
�
�
�
�
r>N)
r]r^r_rur�r�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�rNr�r��rVr�s  rr�zThreadedTCPSocketTest.__init__��5�����t�
��;�;�;�����%�%�%�%�%r>c�b�tjtjtj��|_dSrE)rrPrA�clirUs rr�z!ThreadedTCPSocketTest.clientSetUp�s���=����1C�D�D����r>c�z�|j���d|_t�|��dSrE�r�r!r�r�rUs rr�z$ThreadedTCPSocketTest.clientTearDown��5�������������%�%�d�+�+�+�+�+r>N�r��r]r^r_r�r�r�r`r>rr�r��sI������&�&�&�&�E�E�E�,�,�,�,�,r>r�c�"�eZdZdd�Zd�Zd�ZdS)�ThreadedUDPSocketTestr�c�r�t�||���t�|��dSr�)rbr�r�r�s  rr�zThreadedUDPSocketTest.__init__�r�r>c�b�tjtjtj��|_dSrE)rrPr(r�rUs rr�z!ThreadedUDPSocketTest.clientSetUp�s���=����1B�C�C����r>c�z�|j���d|_t�|��dSrEr�rUs 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�)rfr�r�r�s  rr�z"ThreadedUDPLITESocketTest.__init__�s5���"�"�4�J�"�?�?�?�����%�%�%�%�%r>c�x�tjtjtjtj��|_dSrE)rrPr(rKr�rUs rr�z%ThreadedUDPLITESocketTest.clientSetUp�s#���=����1B�F�DZ�[�[����r>c�z�|j���d|_t�|��dSrEr�rUs 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�)rir�r�r�s  rr�zThreadedCANSocketTest.__init__�r�r>c���tjtjtjtj��|_	|j�|jf��dS#t$rYdSwxYwrE)rrrr r�rrrsrrUs rr�z!ThreadedCANSocketTest.clientSetUp�se���=�������P�P���	��H�M�M�4�>�+�,�,�,�,�,���	�	�	�
�D�D�	���s� A�
A+�*A+c�z�|j���d|_t�|��dSrEr�rUs 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|r�r�r�s  rr�zThreadedRDSSocketTest.__init__�r�r>c��tjtjtjd��|_	|j�t
df��|j���|_dS#t$rYdSwxYw�Nr)	rr0r1r�rr�HOST�getsockname�cli_addrrrUs 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�|��dSrEr�rUs rr�z$ThreadedRDSSocketTest.clientTearDown�r�r>Nr�r�r`r>rr�r��sF������&�&�&�&�	�	�	�,�,�,�,�,r>r��
need fcntlz$VSOCK does not work on Microsoft WSLz%VSOCK sockets required for this test.�z-This test can only be run on a virtual guest.c�.�eZdZdd�Zd�Zd�Zd�Zd�ZdS)	�ThreadedVSOCKSocketStreamTestr�c�|�tj�||���t�|��dSr���unittest�TestCaser�r�r�s  rr�z&ThreadedVSOCKSocketStreamTest.__init__�s8����"�"�4�J�"�?�?�?�����%�%�%�%�%r>c�"�tjtjtj��|_|�|jj��|j�tjtf��|j�	��|�
��|j�tj
��|j���\|_|_|�|jj��dSrE)r�AF_VSOCKrArQrqr!rr�VMADDR_CID_ANY�	VSOCKPORTrTr��
settimeoutr�LOOPBACK_TIMEOUT�accept�conn�connaddrrUs rrWz#ThreadedVSOCKSocketStreamTest.setUp�s����M�&�/�6�3E�F�F��	�����	��(�(�(��	����-�y�9�:�:�:��	������� � �"�"�"��	���W�5�6�6�6�#'�9�#3�#3�#5�#5� ��	�4�=�����	��(�(�(�(�(r>c�h�tjd��tjtjtj��|_|�|jj��t��}|tj	tj
fvrt}|j�|tf��dS)N皙�����?)�time�sleeprr�rAr�rqr!r�VMADDR_CID_HOSTr��VMADDR_CID_LOCAL�connectr�)rVr<s  rr�z)ThreadedVSOCKSocketStreamTest.clientSetUp�s����
�3�����=���&�2D�E�E���������'�'�'��i�i���6�)�6�+@�A�A�A�"�C�����#�y�)�*�*�*�*�*r>c���	|j�d��}n9#t$r,}|�t	|����Yd}~nd}~wwxYw|�|t��dS�N�)r��recv�PermissionErrorrt�repr�assertEqual�MSG)rV�msg�excs   r�
testStreamz(ThreadedVSOCKSocketStreamTest.testStream�s~��	%��)�.�.��&�&�C�C���	%�	%�	%��M�M�$�s�)�)�$�$�$�$�$�$�$�$�����	%��������c�"�"�"�"�"s��
A�"A�Ac�v�|j�t��|j���dSrE�r��sendr�r!rUs r�_testStreamz)ThreadedVSOCKSocketStreamTest._testStream��.����
�
�c������������r>Nr��r]r^r_r�rWr�r�r�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�r�r�s  rr�zSocketConnectedTest.__init__	�!���&�&�t�
�&�C�C�C�C�Cr>c��t�|��|���|j���\}}||_dSrE)r�rWr�rQr��cli_conn�rVr��addrs   rrWzSocketConnectedTest.setUpsL���#�#�D�)�)�)�	
� � �"�"�"��Y�%�%�'�'�
��d���
�
�
r>c�z�|j���d|_t�|��dSrE)rr!r�rZrUs rrZzSocketConnectedTest.tearDowns7���
��������
��&�&�t�,�,�,�,�,r>c��t�|��|j�t|jf��|j|_dSrE)r�r�r�r�r�rS�	serv_connrUs rr�zSocketConnectedTest.clientSetUps@���)�)�$�/�/�/�����$��	�*�+�+�+������r>c�z�|j���d|_t�|��dSrE)rr!r�r�rUs rr�z"SocketConnectedTest.clientTearDowns7�������������,�,�T�2�2�2�2�2r>Nr�)	r]r^r_rur�rWrZr�r�r`r>rrrsr��������D�D�D�D����-�-�-�
"�"�"�
3�3�3�3�3r>rc�4�eZdZd	d�Zd�Zd�Zd�Zd�Zd�ZdS)
�SocketPairTestr�c��tj�||���t�|��d|_d|_dSr�)r�r�r�r�r�rQr�s  rr�zSocketPairTest.__init__%sD����"�"�4�J�"�?�?�?�����%�%�%������	�	�	r>c�(�tj��SrE)r�
socketpairrUs rrzSocketPairTest.socketpair+s��� �"�"�"r>c�H�|���\|_|_dSrE)rrQr�rUs rrWzSocketPairTest.setUp/s��"�o�o�/�/���	�4�8�8�8r>c�T�|jr|j���d|_dSrErYrUs rrZzSocketPairTest.tearDown2s)���9�	��I�O�O������	�	�	r>c��dSrEr`rUs rr�zSocketPairTest.clientSetUp7����r>c��|jr|j���d|_t�|��dSrEr�rUs rr�zSocketPairTest.clientTearDown:s?���8�	��H�N�N��������%�%�d�+�+�+�+�+r>Nr�)	r]r^r_r�rrWrZr�r�r`r>rrr#ss����������#�#�#�0�0�0����

�
�
�,�,�,�,�,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�`�|���|_|���dSrE)�	newSocketrQ�
bindServerrUs rrWzSocketTestBase.setUpPs)���N�N�$�$��	��������r>c�v�|�|j��|j���|_dS)z9Bind server socket and set self.serv_addr to its address.N)�bindSockrQr��	serv_addrrUs rrzSocketTestBase.bindServerTs/���
�
�d�i� � � ���.�.�0�0����r>c�F�|j���d|_dSrErYrUs rrZzSocketTestBase.tearDownYr[r>N)r]r^r_rurWrrZr`r>rrrGsK�����������1�1�1�
����r>rc�"��eZdZdZ�fd�Z�xZS)�SocketListeningTestMixinz%Mixin to listen on the server socket.c�z��t�����|j���dSrE)�superrWrQrT�rV�	__class__s �rrWzSocketListeningTestMixin.setUpas.���
���
�
�����	�������r>)r]r^r_rurW�
__classcell__�r%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�|��dSrE)r#r�r��rV�args�kwargsr%s   �rr�z ThreadedSocketTestMixin.__init__ms9��������$�)�&�)�)�)�����%�%�%�%�%r>c�`�|���|_|���dSrE)�newClientSocketr��
bindClientrUs rr�z#ThreadedSocketTestMixin.clientSetUpqs+���'�'�)�)����������r>c�*�|���S)z&Return a new socket for use as client.)rrUs rr/z'ThreadedSocketTestMixin.newClientSocketus���~�~���r>c�v�|�|j��|j���|_dS)z8Bind client socket and set self.cli_addr to its address.N)rr�r�r�rUs rr0z"ThreadedSocketTestMixin.bindClientys/���
�
�d�h������,�,�.�.��
�
�
r>c�z�|j���d|_t�|��dSrEr�rUs rr�z&ThreadedSocketTestMixin.clientTearDown~r�r>)
r]r^r_rur�r�r/r0r�r&r's@rr)r)fs~���������&�&�&�&�&���� � � �/�/�/�
,�,�,�,�,�,�,r>r)c�@��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���\}}||_dSrE)r#rWr�rQr�r)rVr�rr%s   �rrWzConnectedStreamTestMixin.setUp�sJ���
���
�
����	
� � �"�"�"��Y�%�%�'�'�
��d���
�
�
r>c���|j���d|_t�����dSrE)rr!r#rZr$s �rrZz!ConnectedStreamTestMixin.tearDown�s:����
��������
�
���������r>c���t�����|j�|j��|j|_dSrE)r#r�r�r�rrr$s �rr�z$ConnectedStreamTestMixin.clientSetUp�s>���
��������������(�(�(������r>c���	|j���d|_n#t$rYnwxYwt�����dSrE)rr!r"r#r�r$s �rr�z'ConnectedStreamTestMixin.clientTearDown�sa���	��N� � �"�"�"�!�D�N�N���	�	�	��D�	����
����� � � � � s� $�
1�1)	r]r^r_rurWrZr�r�r&r's@rr5r5�s��������������������
"�"�"�"�"�
!�!�!�!�!�!�!�!�!r>r5c�(��eZdZdZ�fd�Zd�Z�xZS)�UnixSocketTestBasez(Base class for Unix-domain socket tests.c����tj��|_|�tj|j��t
�����dSrE)�tempfile�mkdtemp�dir_pathrq�os�rmdirr#rWr$s �rrWzUnixSocketTestBase.setUp�s@��� �(�*�*��
������$�-�0�0�0�
���
�
�����r>c��tj|j���}tj||��|�tj|��dS)N)�dir)r=�mktempr?r�bind_unix_socketrqr�unlink)rV�sock�paths   rrzUnixSocketTestBase.bindSock�sF����4�=�1�1�1���&�t�T�2�2�2����	�(�$�/�/�/�/�/r>)r]r^r_rurWrr&r's@rr;r;�sM�������2�2������
0�0�0�0�0�0�0r>r;c��eZdZdZd�ZdS)�UnixStreamBasez-Base class for Unix-domain SOCK_STREAM tests.c�T�tjtjtj��SrE)r�AF_UNIXrArUs rrzUnixStreamBase.newSocket�����}�V�^�V�-?�@�@�@r>N�r]r^r_rurr`r>rrJrJ�s.������7�7�A�A�A�A�Ar>rJc�,��eZdZdZeZ�fd�Zd�Z�xZS)�InetTestBasez!Base class for IPv4 socket tests.c�l��t�����|jd|_dS�Nr
)r#rWrrSr$s �rrWzInetTestBase.setUp�s&���
���
�
�����N�1�%��	�	�	r>c�<�tj||j���dS)N��host)rrRrU�rVrGs  rrzInetTestBase.bindSock�s �����4�9�5�5�5�5�5�5r>)	r]r^r_rur�rUrWrr&r's@rrPrP�sR�������+�+��D�&�&�&�&�&�6�6�6�6�6�6�6r>rPc��eZdZdZd�ZdS)�TCPTestBasez#Base class for TCP-over-IPv4 tests.c�T�tjtjtj��SrE)rrPrArUs rrzTCPTestBase.newSocket�rMr>NrNr`r>rrXrX��.������-�-�A�A�A�A�Ar>rXc��eZdZdZd�ZdS)�UDPTestBasez#Base class for UDP-over-IPv4 tests.c�T�tjtjtj��SrE)rrPr(rUs rrzUDPTestBase.newSocket�s���}�V�^�V�->�?�?�?r>NrNr`r>rr\r\�s.������-�-�@�@�@�@�@r>r\c��eZdZdZd�ZdS)�UDPLITETestBasez'Base class for UDPLITE-over-IPv4 tests.c�j�tjtjtjtj��SrE)rrPr(rKrUs rrzUDPLITETestBase.newSocket�s���}�V�^�V�->��@V�W�W�Wr>NrNr`r>rr_r_�s.������1�1�X�X�X�X�Xr>r_c��eZdZdZd�ZdS)�SCTPStreamBasez;Base class for SCTP tests in one-to-one (SOCK_STREAM) mode.c�j�tjtjtjtj��SrE)rrPrA�IPPROTO_SCTPrUs rrzSCTPStreamBase.newSocket�s%���}�V�^�V�-?�#�0�2�2�	2r>NrNr`r>rrbrb�s)������E�E�2�2�2�2�2r>rbc� �eZdZdZejZdS)�
Inet6TestBasez!Base class for IPv6 socket tests.N)r]r^r_rur�HOSTv6rUr`r>rrfrf�s������+�+���D�D�Dr>rfc��eZdZdZd�ZdS)�UDP6TestBasez#Base class for UDP-over-IPv6 tests.c�T�tjtjtj��SrE)r�AF_INET6r(rUs rrzUDP6TestBase.newSocket�s���}�V�_�f�.?�@�@�@r>NrNr`r>rriri�rZr>ric��eZdZdZd�ZdS)�UDPLITE6TestBasez'Base class for UDPLITE-over-IPv6 tests.c�j�tjtjtjtj��SrE)rrkr(rKrUs rrzUDPLITE6TestBase.newSocket�s���}�V�_�f�.?��AW�X�X�Xr>NrNr`r>rrmrm�s.������1�1�Y�Y�Y�Y�Yr>rmc�*���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��dSrEr`)r,r-s  r�client_passz%skipWithClientIf.<locals>.client_passrr>c���tj���|��}t|t��s
�fd�|_|S)Nc����SrEr`)rrqs �r�<lambda>z3skipWithClientIf.<locals>.skipdec.<locals>.<lambda>	s���;�r>)r��skip�
isinstance�type�client_skip)�obj�retvalrq�reasons  ��r�skipdecz!skipWithClientIf.<locals>.skipdecsD���&���v�&�&�s�+�+���#�t�$�$�	7�!6�!6�!6�!6�F���
r>c�`�t|t��st|d��sd�|_|S)Nrxc��|SrEr`)rs rrtz5skipWithClientIf.<locals>.noskipdec.<locals>.<lambda>
s���r>)rvrwrrx)rys r�	noskipdecz#skipWithClientIf.<locals>.noskipdecs3���3��%�%�	*���m�)D�)D�	*�)�k�C�O��
r>r`)�	conditionr{r|rrqs `  @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�namerys  �r�
<listcomp>z requireAttrs.<locals>.<listcomp>s(���E�E�E��'�#�t�2D�2D�E�t�E�E�Er>�don't have �, c3�K�|]}|V��dSrEr`�r�r�s  r�	<genexpr>zrequireAttrs.<locals>.<genexpr>s"����*D�*D�D�4�*D�*D�*D�*D�*D�*Dr>)r��join)ry�
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`)rv�strrr�r�rys  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��dSrEr`r�s  rr�z requireSocket.<locals>.<genexpr>'s"����'A�'A���'A�'A�'A�'A�'A�'Ar>c�f�g|].}t|t��rtt|��n|��/Sr`)rvr�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��dSrE)r��r��os  rr�z requireSocket.<locals>.<genexpr>5s(����+�+��c�!�f�f�+�+�+�+�+�+r>)r�rr!rr�r��format)r,�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!)rVr�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])
rrPrA�assertIn�filenor��assertNotInrrr�r��rVr$s  r�	test_reprzGeneralModuleTests.test_reprDs����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�rrPrAr��familyrw�protor�r�r!)rVr$�expecteds   r�test_csocket_reprz$GeneralModuleTests.test_csocket_reprRs����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)
rrPrArr�r�r�
gc_collect�fail�ReferenceError)rVr$�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�r�z
socket.herrorzsocket.gaierror)�assertRaisesrr�herror�gaierror�rVr�s  r�testSocketErrorz"GeneralModuleTests.testSocketErrorls��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))rrPr(rqr!rrr�r�r��sendtor�r��	exceptionr�)rVr$�sockname�cms    r�testSendtoErrorsz#GeneralModuleTests.testSendtoErrorsvs@���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
dSrE)rrP�has_ipv6rkrAr(r�SOCK_RDMr1�
SOL_SOCKET�SO_REUSEADDRrUs r�testCrucialConstantsz'GeneralModuleTests.testCrucialConstants�s[������?�	��O�O�����������������������r>c�j�tjtjtjrtjdSdSrE)r�IPPROTO_TCP�IPPROTO_UDPr��IPPROTO_IPV6rUs r�testCrucialIpProtoConstantsz.GeneralModuleTests.testCrucialIpProtoConstants�s7���������?�	 ������	 �	 r>�nt�Windows specificc���tjtjtjtjtjtjtjtjdSrE)	r�IPPROTO_ICLFXBM�
IPPROTO_ST�IPPROTO_CBT�IPPROTO_IGP�IPPROTO_RDP�IPPROTO_PGM�IPPROTO_L2TPrdrUs r�testWindowsSpecificConstantsz/GeneralModuleTests.testWindowsSpecificConstants�sP���������������������������r>zWASI is missing these methodsc�~�gd�}|D]5}ttj|��s|�d|�d����6dS)N)�_acceptrrr��
connect_ex�getpeernamer�rT�recvfrom�
recvfrom_intor��
setsockopt�shutdownzsocket method z is missing)rrr�)rV�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)rV�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�
gethostbynamerrtr��find�
gethostbyaddr�getfqdnr�r�)rV�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�HOSTv4r�rrr�r)rVrrUs   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�rrrr)rV�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�)rrrr�errno�EPERMrtr�)rV�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)rV�
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>r+z&socket.if_indextoname() not available.c��|�ttjd��|�ttjd��|�ttjddz��|�t
tjd��t
td��r�ttj����}|D]X}|dz}||vrM|�ttf��5tj|��ddd��n#1swxYwY�YdD]U}||vrM|�ttf��5tj|��ddd��n#1swxYwY�TdSdS)	Nr���r����	_DEADBEEFr&�)���l����)	r�rrr+�
OverflowErrorr�r�dictr&)rV�indicesr-�index2s    r�testInvalidInterfaceIndexToNamez2GeneralModuleTests.testInvalidInterfaceIndexToName;s���	
���'�6�#8�!�<�<�<����-��)>��C�C�C����-��)>��4��H�H�H����)�V�%:�K�H�H�H��6�>�*�*�
	5��6�.�0�0�1�1�G� �
6�
6��������(�(��*�*�M�7�+C�D�D�6�6��-�f�5�5�5�6�6�6�6�6�6�6�6�6�6�6����6�6�6�6��)�
5�
5����'�'��*�*�M�7�+C�D�D�5�5��-�e�4�4�4�5�5�5�5�5�5�5�5�5�5�5����5�5�5�5��
	5�
	5�
5�
5s$�?D � D$	�'D$	�E6�6E:	�=E:	r*z&socket.if_nametoindex() not available.c��|�ttjd��|�ttjd��dS)Nrr4)r�r�rr*rrUs r�testInvalidInterfaceNameToIndexz2GeneralModuleTests.testInvalidInterfaceNameToIndexNs@��	
���)�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�)rV�origs  r�testRefCountGetNameInfoz*GeneralModuleTests.testRefCountGetNameInfoTs���	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)rlrrrr)rrArrUs r�testInterpreterCrashz'GeneralModuleTests.testInterpreterCrash`sB��	���~�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�itemsr�r�r7)rV�sizes�func�size�maskrL�swappeds       r�testNtoHzGeneralModuleTests.testNtoHhs�����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�rIr6r2���r5r
r3�)
�	_testcapi�INT_MIN�INT_MAXrrMrLrKrJr�r7)rVrX�
s_good_values�
l_good_values�l_bad_values�s_bad_values�ks       r�testNtoHErrorsz!GeneralModuleTests.testNtoHErrorsvsZ������)�)�)�
�%���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)�echorfrh�tcp�getandroidapilevel��udpr2rW)r�r@�platform�
startswithr�
getservbynamerrrkr�
is_android�
getservbyportr�r7)rV�eq�services�servicerS�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�
r2�spam)	r�rrF�
gettimeoutrJrGr��
ValueErrorr�)rVr$rGs   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)r�rrrUs 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)rr�rPc�����|��SrEr`)�arPr�s ��rrtz5GeneralModuleTests.testIPv4toString.<locals>.<lambda>�����i�i���+�+�r>c�J����ttf||��SrE�r�rr}�rPr�rVs  �rrtz5GeneralModuleTests.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)rrr�rPr�r)rVr�g�
assertInvalidrPr�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�rkr��IPv6 not available�+could not import needed symbols from socket�win32�::�&'�IPv6 might not be supportedc�����|��SrEr`)r�rkr�s ��rrtz5GeneralModuleTests.testIPv6toString.<locals>.<lambda>
����i�i��!�,�,�r>c�J����ttf�|��SrEr��r�rrVs ��rrtz5GeneralModuleTests.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�rkr�rt�ImportErrorr@rnr�winerrorr�r)rVr�r�r�rkrr�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�rPc�����|��SrEr`)r�rPr�s ��rrtz5GeneralModuleTests.testStringToIPv4.<locals>.<lambda>@r�r>c�J����ttf||��SrEr�r�s  �rrtz5GeneralModuleTests.testStringToIPv4.<locals>.<lambda>Ar�r>z1.0.1.0sz
170.85.170.85s�U�Urr�r�r�ssr�)rr�r�rPr��	bytearray)rVrr�r�rPr�s`   @@r�testStringToIPv4z#GeneralModuleTests.testStringToIPv4<s������	>�=�=�=�=�=�=�=�=�=�+�+�+�+�+��
�
�
�
�
�	
����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�rkr�r�r�r�r�r�r�c�����|��SrEr`)r�rkr�s ��rrtz5GeneralModuleTests.testStringToIPv6.<locals>.<lambda>gr�r>c�J����ttf�|��SrEr�r�s ��rrtz5GeneralModuleTests.testStringToIPv6.<locals>.<lambda>hr�r>r�r�sz!aef:b01:506:1001:ffff:9997:55:170s
�����Upsss)rr�rkr�rtr�r@rnrr�r�r�)rVr�r�r�rkrr�s`   @@@r�testStringToIPv6z#GeneralModuleTests.testStringToIPv6Vs�������	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��r	rz
%s invalidr
)rrPrArqr!�	itertools�countr�find_unused_portrrrr"�
EADDRINUSEr�rrrtr�r�)rVrGrLrSr�r��
my_ip_addrs       r�testSockNamezGeneralModuleTests.testSockNamezsp���}�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)	rrPrArqr!�
getsockoptr�r��assertFalse�rVrG�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)
rrPrArqr!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)rrPrAr�r�rr�rVs  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)rrr�
_LOCALHOSTr�r!r�rr�r"�EBADF�ENOTSOCK)rVrGr�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)
rrPrAr�r�rr�rwr�r�rVs  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)NrWr�)rrqr!rr�r�r7rrr�r�r�rr"r�)rVrGrS�big_port�neg_portrLr�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_VALSr2)r
�dr�)	r�rrrqr!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)
rrqr!rr�rr�rtr�r�)rVr$r��
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�rkrl�http�<AddressFamily.AF_INET: %r>�<SocketKind.SOCK_STREAM: %r>r)rUrS�r��rw)r�)�flags)rUrSr�rwr�r�u��AI_NUMERICSERV)r�getaddrinfor�r"�EAI_SERVICErtr�r��lenr�IPV6_ENABLEDrr@rkrPrAr��valuer��SOL_TCP�
AI_PASSIVE�	AF_UNSPECr��UnicodeEncodeErrorr�)
rVr��info�infosr�rwr��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�rrrArUs r�test_getnameinfoz#GeneralModuleTests.test_getnameinfoFs&�����'�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�rA)rVrhs  r�	test_idnazGeneralModuleTests.test_idnaJs���
�
-�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�r,rVs �r�
ok_handlerz@GeneralModuleTests.check_sendall_interrupted.<locals>.ok_handleras#������j�$�*�a�8�8�8�8�8r>c�^����ttjd��ddzdS�Nrr
r�rs �r�raising_handlerzEGeneralModuleTests.check_sendall_interrupted.<locals>.raising_handlercs*������j�$�*�a�8�8�8�
��F�F�F�Fr>g�?r
�xr)r�signalrrtr�SIGALRMr�r��ZeroDivisionErrorr��sendallr�
SOCK_MAX_SIZE�TimeoutErrorr!)rV�with_timeoutrr�cr$�	old_alarms`      r�check_sendall_interruptedz,GeneralModuleTests.check_sendall_interrupted[s ����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�rrUs r�test_sendall_interruptedz+GeneralModuleTests.test_sendall_interruptedzs���&�&�u�-�-�-�-�-r>c�0�|�d��dS)NTrrUs r�%test_sendall_interrupted_with_timeoutz8GeneralModuleTests.test_sendall_interrupted_with_timeout}s���&�&�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)
rrPrAr��assertWarns�ResourceWarningrr�r�r��warningr,�makefile)rVrGrr�rs     r�test_dealloc_warnz$GeneralModuleTests.test_dealloc_warn�s����}�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>)rrPrArr!r�r��rVrG�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}rs   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
r2)	rrrr�r!r�r�rrTr�rVs  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)�subTestrrr�r-)rVr-rGr/rs     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)�rtrl�+r�r,zinvalid mode)r0r�assertRaisesRegexr}r)rVr-rGs   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
����dSrR)r�range�pickle�HIGHEST_PROTOCOLr�r��dumps�loadsrPr�rA)rVrG�protocolr�rws     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)rr2r)rrPrArrr�rT)rV�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)
rXrrPrArrr�r�r7rTrZ)rVrXrAs   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)Nrr6i����)	r�r7rrArrgrkrArrr�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:8drrr)rr�rkr(r�r�)rVr��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�)r�rrrUs 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%rrJ)rr&r�rkr(r�r�)rV�ifindex�test_interfacer�rKs     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�*rPrrJr)rr�r�rkr(r�r�)rVrQr�rKs    r�%test_getaddrinfo_ipv6_scopeid_numericz8GeneralModuleTests.test_getaddrinfo_ipv6_scopeid_numericsk����"�.�#�c�'�l�l�2��&�/�����	
�
���1�h�	
����$:�D�!�W�#M�N�N�N�N�Nr>c���tj��d\}}ddd|f}tj|tjtjz��}|�|d|zdf��dS)NrrIr�ff02::1de:c0:face:8d%�1234)rr&rA�NI_NUMERICHOST�NI_NUMERICSERVr�)rVrQrRrK�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)NrUrIrrrXrY)rrArZr[r�r�)rVrQrKr\s    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�)	rrPrAr�r�r�r�rwr�r�s  r�test_str_for_enumsz%GeneralModuleTests.test_str_for_enums*s ���]�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�rrArPr�rwr��setblocking)rVrcr��	sock_typer$s     r� test_socket_consistent_sock_typez3GeneralModuleTests.test_socket_consistent_sock_type3st������;�;�
��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�rcNr`)r�r��kinds   rr�zEGeneralModuleTests.test_unknown_socket_family_repr.<locals>.<genexpr>Ns>����
�
���d��<�<�<�
�<�<�<�<�
�
r>rl)r�rwr�r�r)rrPrA�detach�max�
AddressFamily�__members__�values�
SocketKindrNr�r�rwr�r�)rVrG�fd�unknown_family�unknown_typer$s      r�test_unknown_socket_family_reprz2GeneralModuleTests.test_unknown_socket_family_reprCsa���}�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��||_dSrE�rp)rVrps  rr�zEGeneralModuleTests.test__sendfile_use_sendfile.<locals>.File.__init___s
������r>c��|jSrEryrUs rr�zCGeneralModuleTests.test__sendfile_use_sendfile.<locals>.File.filenobs	���w�r>N)r]r^r_r�r�r`r>r�Filerw^s2������
�
�
�
�
�
�
�
r>r{r�r3)rr@r�curdir�O_RDONLYr!r��_GiveupOnSendfile�_sendfile_use_sendfiler7r�)rVr{rGrps    r�test__sendfile_use_sendfilez.GeneralModuleTests.test__sendfile_use_sendfile\sQ��	�	�	�	�	�	�	�	��]�_�_�	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�)r�r�rwr�rrqr!rj)rVr$r��styperp�s2s      r�_test_socket_filenoz&GeneralModuleTests._test_socket_filenons��������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(rLr)rrPrArqr!rrrr�r�rr(r�rkrgr=r>�shutil�rmtreerLr@rHr�r�)rVr$�tmpdirs   r�test_socket_filenoz%GeneralModuleTests.test_socket_fileno{s-���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�rrPrArUs 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�rUs 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 descriptorr2r��r5r}rrPrArUs 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�rUs 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�rPrA)rV�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�)r=�NamedTemporaryFiler�rrr�rPrAr�r�r"r�)rV�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)Nrrlrc�T�|���o|�d��S)N�AF_��isupperro��Cs rrtz<GeneralModuleTests.test_addressfamily_enum.<locals>.<lambda>����!�)�)�+�+�=�!�,�,�u�*=�*=�r>��source)r��enum�
_old_convert_�IntEnum�_test_simple_enumrrl)rVr�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)Nrrorc�T�|���o|�d��S)N�SOCK_r�r�s rrtz9GeneralModuleTests.test_socketkind_enum.<locals>.<lambda>�s��!�)�)�+�+�?�!�,�,�w�*?�*?�r>r�)r�r�r�r�r�rro)rVr�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 rrtz6GeneralModuleTests.test_msgflag_enum.<locals>.<lambda>�s��!�)�)�+�+�>�!�,�,�v�*>�*>�r>r�)r�r�r��IntFlagr�rr�)rVr�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 rrtz:GeneralModuleTests.test_addressinfo_enum.<locals>.<lambda>�r�r>r�)r�r�r�r�r�rr�)rVr�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�r@r�r��skipIfr�is_wasir�r@rnrr�rrrrrrr%r0r;r=rCrErT�cpython_onlyr`rxr~r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r��is_resource_enabledr�rrrrrr%r'r1r6r>rBrDrGrLrNrrSrVr]r_rarfrsr�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�5�5�C�C�5�"�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�tjtjtjdSrE)r�AF_CANrr rUs rr�z!BasicCANTest.testCrucialConstants�s���
�
��
�
�����r>�CAN_BCM�&socket.CAN_BCM required for this test.c�F�tjtjtjtjtjtjtjtjtj	tj
tjtjtj
tjtjtjtjtjtjtjtjtjtjtjdSrE)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_FRAMErUs r�testBCMConstantszBasicCANTest.testBCMConstants�s���	���	���� � ����������� � ����� � ��!�!�� � ��!�!��!�!�	����!�!��"�"��"�"��#�#��#�#��#�#��&�&��)�)��)�)��#�#�#�#r>c��tjtjtjtj��5}	ddd��dS#1swxYwYdSrE�rrrr r�s  r�testCreateSocketzBasicCANTest.testCreateSocket���
�]�6�=�&�/�6�>�
J�
J�	�a��	�	�	�	�	�	�	�	�	�	�	�	����	�	�	�	�	�	��A�A�Ac��tjtjtjtj��5}	ddd��dS#1swxYwYdSrE)rrr(r�r�s  r�testCreateBCMSocketz BasicCANTest.testCreateBCMSockets����]�6�=�&�*;�V�^�
L�
L�	�PQ��	�	�	�	�	�	�	�	�	�	�	�	����	�	�	�	�	�	r�c��tjtjtjtj��5}d}|�|��|�|���|��ddd��dS#1swxYwYdS)N)r�)rrrr rrr�r�)rVr$�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)rrrr r5rrrr�s  r�testTooLongInterfaceNamez%BasicCANTest.testTooLongInterfaceName s���
�]�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
)	rrrr r��SOL_CAN_RAWr�r�r�)rVr$�loopbacks   r�testLoopbackzBasicCANTest.testLoopback&s���]�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=IIrm)r�packrrrr r�r�r�r�r�r�)rV�can_id�can_mask�
can_filterr$s     r�
testFilterzBasicCANTest.testFilter0s%��(�����[����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�r�r�s  rr�zCANTest.__init__?rr>c��t|��}|�dd��}tj|j|||��S)zBuild a CAN frame.rm�)r��ljustrr�rw)�clsr��data�can_dlcs    r�build_can_framezCANTest.build_can_frameBs;���d�)�)���z�z�!�W�%�%���{�3�,�f�g�t�D�D�Dr>c�X�tj|j|��\}}}|||d|�fS)zDissect a CAN frame.N)rrrw)r�framer�r
r	s     r�dissect_can_framezCANTest.dissect_can_frameIs4��!'�
�c�.?�� G� G��������h�w�h��0�0r>c���|j�|j��\}}|�|j|��|�|d|j��dSr�)r$r�rvr��cfrs�rVrrs   r�
testSendFramezCANTest.testSendFrameOsU���6�?�?�4�<�0�0���D������"�%�%�%�����a��$�.�1�1�1�1�1r>c�z�|�dd��|_|j�|j��dS)Nrs�rrr�r�rUs r�_testSendFramezCANTest._testSendFrameTs6���&�&�t�-D�E�E�����
�
�d�g�����r>c��|j�|j��\}}|�|j|��dSrE)r$r�rvr�rrs   r�testSendMaxFramezCANTest.testSendMaxFrameXs9���6�?�?�4�<�0�0���D������"�%�%�%�%�%r>c�z�|�dd��|_|j�|j��dS)NrsrrUs r�_testSendMaxFramezCANTest._testSendMaxFrame\s5���&�&�t�[�9�9�����
�
�d�g�����r>c��|j�|j��\}}|�|j|��|j�|j��\}}|�|j|��dSrE)r$r�rvr��cf1�cf2rs   r�testSendMultiFrameszCANTest.testSendMultiFrames`sj���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)rrr�r�rrUs r�_testSendMultiFrameszCANTest._testSendMultiFramesgsc���'�'��.A�B�B�����
�
�d�h�����'�'��o�>�>�����
�
�d�h�����r>r�r�c��|j�|j��\}}|�|j|��|�|��\}}}|�|j|��|�|j|��dSrE)r�r�rvr�rrr�r	)rVrrr�r
r	s      r�_testBCMzCANTest._testBCMns����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}
t|j��dksJ�tj|j||||||||	|
�
�
}||jz}|�|��}
|�|
t|����dS)N�#)����ri"r
rH)rrr(r�rqr!r�rsr��bytesr	rrr�r�rr�rzr�r�)rV�bcm�opcoder�r��
ival1_seconds�
ival1_usec�
ival2_seconds�
ival2_usec�
bcm_can_id�nframes�header�header_plus_frame�
bytes_sents              r�testBCMzCANTest.testBCMwsA���m�F�M�6�+<�f�n�M�M������	�"�"�"����T�^�%�&�&�&�����,�,�,�-�-��	��&�&�t�{�D�I�>�>����'������BC�C�
�C�
�C�]�Z��
����4�7�|�|�r�!�!�!�!���T�1����!��!����
�
��#�T�W�,���X�X�/�0�0�
�����S�):�%;�%;�<�<�<�<�<r>Nr�)r]r^r_r��classmethodrrrrrrrr!r�r�rrr#r5r`r>rrr<sC������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>rz!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�Nrj�r#r�rsr+s   �rr�zISOTPTest.__init__��*��������$�)�&�)�)�)� ����r>c�f�tjtjtjtjdSrE)rr�rr)r(rUs rr�zISOTPTest.testCrucialConstants�s(���
�
��
�
��������r>c��tjtjtjtj��5}	ddd��dS#1swxYwYdSrEr�r�s  rr�zISOTPTest.testCreateSocket�r�r�r)z(socket.CAN_ISOTP required for this test.c��tjtjtjtj��5}	ddd��dS#1swxYwYdSrE)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)r5rrrr�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%iVrp)rrr(r)rsrrr�r�rr"�ENODEVrt�rVr$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_r�r�r�r�r�rrr@r�rFr&r's@rr8r8�s��������!�!�!�!�!��������X������5�5�C�E�E���E�E��+�+�+�������r>r8z!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:r;r+s   �rr�zJ1939Test.__init__�r<r>r-z(socket.CAN_J1939 required for this test.c�F�tjtjtjtjtjtjtjtjtj	tj
tjtjtj
tjtjtjtjtjtjtjtjtjtjtjdSrE)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_MAXrUs r�testJ1939ConstantszJ1939Test.testJ1939Constants�s���	����%�%����������� � ��(�(��*�*��!�!�������	�������!�!�� � ��"�"��"�"�����!�!�����$�$��!�!��%�%�����r>c��tjtjtjtj��5}	ddd��dS#1swxYwYdSrE)rrr(r-r�s  r�testCreateJ1939SocketzJ1939Test.testCreateJ1939Socket�rAr�c��	tjtjtjtj��5}|jtjtjtjf}|�|��|�	|�
��|��ddd��dS#1swxYwYdS#t$r?}|jtj
kr|�d|jz��n�Yd}~dSd}~wwxYwro)rrr(r-rsrNrTrMrrr�r�rr"rDrtrEs    rrFzJ1939Test.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_r�r�r�rrrbrdrFr&r's@rrHrH�s��������!�!�!�!�!��X������5�5�C�E�E� � �E�E� �B�X������5�5�C�E�E���E�E��������r>rHz#RDS sockets required for this test.c� �eZdZd�Zd�Zd�ZdS)�BasicRDSTestc�6�tjtjdSrE)r�AF_RDSr0rUs rr�z!BasicRDSTest.testCrucialConstants	s���
�
��
�
�
�
r>c��tjtjtjd��5}	ddd��dS#1swxYwYdSr�)rr0r1r�s  rr�zBasicRDSTest.testCreateSocket	s��
�]�6�=�&�*?��
C�
C�	�q��	�	�	�	�	�	�	�	�	�	�	�	����	�	�	�	�	�	s
�:�>�>c�<�d}tjtjtjd��5}|�tjtj|��|�tjtj|��ddd��dS#1swxYwYdS)Ni@r)rr0r1r�r��	SO_RCVBUF�	SO_SNDBUF)rVrvr$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�rnr`r>rrgrg	sF������������G�G�G�G�Gr>rgc���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�r�r�s  rr�zRDSTest.__init__	rr>c�x��t�����tj��|_dSrE)r#rWr�r��evtr$s �rrWz
RDSTest.setUp	s'���
���
�
�����?�$�$����r>c��|j�|j��\}}|�|j|��|�|j|��dSrE)rQr�rvr�r	r��rVr	rs   r�testSendAndRecvzRDSTest.testSendAndRecv	sS���Y�'�'���5�5�
��d������D�)�)�)�������-�-�-�-�-r>c�n�d|_|j�|jdt|jf��dS�Nr�r�r	r�r�r�rSrUs r�_testSendAndRecvzRDSTest._testSendAndRecv!	�0����	������	�1�t�T�Y�&7�8�8�8�8�8r>c��|j�|jtj��\}}|�|j|��|j�|j��\}}|�|j|��dSrE)rQr�rvr�MSG_PEEKr�r	rus   r�testPeekzRDSTest.testPeek%	sr���Y�'�'���f�o�F�F�
��d������D�)�)�)��Y�'�'���5�5�
��d������D�)�)�)�)�)r>c�n�d|_|j�|jdt|jf��dSrxryrUs r�	_testPeekzRDSTest._testPeek+	r{r>�recvmsgc��|j�|j��\}}}}|�|j|��dSrE)rQr�rvr�r	)rVr	�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)r	r�r�r�rSrUs r�_testSendAndRecvMsgzRDSTest._testSendAndRecvMsg4	s6��"��	�����$�)��b�!�d�D�I�->�?�?�?�?�?r>c��|j�|j��\}}|�|j|��|j�|j��\}}|�|j|��dSrE)rQr�rvr��data1�data2rus   r�testSendAndRecvMultizRDSTest.testSendAndRecvMulti9	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�rSr�rUs r�_testSendAndRecvMultizRDSTest._testSendAndRecvMulti@	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@)�selectrQr�r�rvr�r	)rVrr*rlr	rs      r�
testSelectzRDSTest.testSelectG	sp���-����R��S�9�9���1�a��
�
�d�i��#�#�#��Y�'�'���5�5�
��d������D�)�)�)�)�)r>c�n�d|_|j�|jdt|jf��dS)NsselectrryrUs r�_testSelectzRDSTest._testSelectM	s0����	������	�1�t�T�Y�&7�8�8�8�8�8r>r�)r]r^r_r�rWrvrzr~r�r�rr�r�r�r�r�r�r&r's@rrprp	s�������D�D�D�D�%�%�%�%�%�.�.�.�
9�9�9�*�*�*�9�9�9��\�&�-��+�+�*�*�,�+�*��\�&�-��+�+�@�@�,�+�@�+�+�+�:�:�:�*�*�*�9�9�9�9�9�9�9r>rpz'QIPCRTR sockets required for this test.c�2�eZdZd�Zd�Zd�Zd�Zd�Zd�ZdS)�BasicQIPCRTRTestc��tjdSrE)rr9rUs rr�z%BasicQIPCRTRTest.testCrucialConstantsU	s������r>c��tjtjtj��5}	ddd��dS#1swxYwYdSrE)rr9r(r�s  rr�z!BasicQIPCRTRTest.testCreateSocketX	s~��
�]�6�,�f�.?�
@�
@�	�A��	�	�	�	�	�	�	�	�	�	�	�	����	�	�	�	�	�	�
�9�=�=c���tjtjtj��5}|�|���dd��ddd��dS#1swxYwYdS�Nr
r)rr9r(r�r�r�s  r�testUnboundzBasicQIPCRTRTest.testUnbound\	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)NrrTr
)rr9r(rrRr��assertNotEqualr�s  r�testBindSockzBasicQIPCRTRTest.testBindSock`	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)NrVrT)rr9r(r�rrrRr�s  r�testInvalidBindSockz$BasicQIPCRTRTest.testInvalidBindSocke	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)rr9r(r�r�r�r�s  r�testAutoBindSockz!BasicQIPCRTRTest.testAutoBindSocki	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�Q	sq������������4�4�4�7�7�7�
L�L�L�7�7�7�7�7r>r�c�&�eZdZd�Zd�Zd�Zd�ZdS)�BasicVSOCKTestc��tjdSrE)rr�rUs rr�z#BasicVSOCKTest.testCrucialConstantss	s
������r>c���tjtjtjtjtjtjtjtjdSrE)	r�SO_VM_SOCKETS_BUFFER_SIZE�SO_VM_SOCKETS_BUFFER_MIN_SIZE�SO_VM_SOCKETS_BUFFER_MAX_SIZEr��VMADDR_PORT_ANYr��VM_SOCKETS_INVALID_VERSIONrrUs r�testVSOCKConstantsz!BasicVSOCKTest.testVSOCKConstantsv	sP���(�(��,�,��,�,�����������)�)��-�-�-�-r>c��tjtjtj��5}	ddd��dS#1swxYwYdSrE)rr�rAr�s  rr�zBasicVSOCKTest.testCreateSocket�	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�rAr�r�r�r�r�r�)rVr$�orig_maxrB�orig_mins     rrnz#BasicVSOCKTest.testSocketBufferSize�	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�rnr`r>rr�r�n	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�rb)r�
BDADDR_ANY�BDADDR_LOCALr@rBr@rn�BTPROTO_HCI�SOL_HCI�
BTPROTO_L2CAPro�BTPROTO_SCOrUs r�testBluetoothConstantsz)BasicBluetoothTest.testBluetoothConstants�	s����������������<�7�"�"�����N�N�� � ��<�*�*�9�5�5�
#��"�"�"�"�
#�"�

#�
#r>c��tjtjtjtj��5}	ddd��dS#1swxYwYdSrE)rr@rArBr�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#1swxYwYdSrE)rr@r1r�r�s  r�testCreateL2capSocketz(BasicBluetoothTest.testCreateL2capSocket�	s���
�]�6�.��0E�v�G[�
\�
\�	�`a��	�	�	�	�	�	�	�	�	�	�	�	����	�	�	�	�	�	r�z$windows does not support HCI socketsc��tjtjtjtj��5}	ddd��dS#1swxYwYdSrE)rr@rr�r�s  r�testCreateHciSocketz&BasicBluetoothTest.testCreateHciSocket�	s���
�]�6�.����AS�
T�
T�	�XY��	�	�	�	�	�	�	�	�	�	�	�	����	�	�	�	�	�	r�rbz.windows and freebsd do not support SCO socketsc��tjtjtjtj��5}	ddd��dS#1swxYwYdSrE)rr@r1r�r�s  r�testCreateScoSocketz&BasicBluetoothTest.testCreateScoSocket�	s����]�6�.��0E�v�GY�
Z�
Z�	�^_��	�	�	�	�	�	�	�	�	�	�	�	����	�	�	�	�	�	r�N)
r]r^r_r�r�r�r�r@rnr�r�ror�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��rr�r�s  rr�zBasicTCPTest.__init__�	�!���$�$�T�j�$�A�A�A�A�Ar>c�p�|j�d��}|�|t��dSr�)rr�r�r�r�s  r�testRecvzBasicTCPTest.testRecv�	s3���m� � ��&�&������c�"�"�"�"�"r>c�D�|j�t��dSrE�rr�r�rUs r�	_testRecvzBasicTCPTest._testRecv�	�������C� � � � � r>c���|j�tt��dz
��}|j�d��}||z}|�|t��dS�N�r�)rr�r�r�r�)rV�seg1�seg2r�s    r�testOverFlowRecvzBasicTCPTest.testOverFlowRecv�	s[���}�!�!�#�c�(�(�Q�,�/�/���}�!�!�$�'�'���T�k������c�"�"�"�"�"r>c�D�|j�t��dSrEr�rUs r�_testOverFlowRecvzBasicTCPTest._testOverFlowRecv�	r�r>c�v�|j�d��\}}|�|t��dSr�)rr�r�r��rVr�rs   r�testRecvFromzBasicTCPTest.testRecvFrom�	s7���M�*�*�4�0�0�	��T�����c�"�"�"�"�"r>c�D�|j�t��dSrEr�rUs r�
_testRecvFromzBasicTCPTest._testRecvFrom�	r�r>c���|j�tt��dz
��\}}|j�d��\}}||z}|�|t��dSr�)rr�r�r�r�)rVr�rr�r�s     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��dSrEr�rUs r�_testOverFlowRecvFromz"BasicTCPTest._testOverFlowRecvFrom�	r�r>c�~�d}	|j�d��}|sn||z
}�#|�|d��dS)Nr>r
r��ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff)rr�r�)rVr��reads   r�testSendAllzBasicTCPTest.testSendAll�	sX����	��=�%�%�d�+�+�D��
���4�K�C�		�
	
����k�*�*�*�*�*r>c�>�d}|j�|��dS)Nr�)rr	)rV�	big_chunks  r�_testSendAllzBasicTCPTest._testSendAll�	s#���	�����y�)�)�)�)�)r>c�`�|j���}tj|tjtj��}|�|j��|�|tj��|�	d��}|�
|t��dSr�)rr�r�fromfdrPrArqr!r�r�r�r�)rVrprGr�s    r�
testFromFdzBasicTCPTest.testFromFd�	s���
�]�
!�
!�
#�
#���}�R����1C�D�D������
�#�#�#����d�F�M�2�2�2��i�i��o�o������c�"�"�"�"�"r>c�D�|j�t��dSrEr�rUs r�_testFromFdzBasicTCPTest._testFromFd
r�r>c���|j���}|�|j��|�d��}|�|t��dSr�)r�duprqr!r�r�r�)rVrGr�s   r�testDupzBasicTCPTest.testDup	
sT���}� � �"�"������
�#�#�#��i�i��o�o������c�"�"�"�"�"r>c�D�|j�t��dSrEr�rUs r�_testDupzBasicTCPTest._testDup
r�r>c��|j�d��}|�|t��|j���dSr�)rr�r�r�r�r�r�s  r�testShutdownzBasicTCPTest.testShutdown
sG���m� � ��&�&������c�"�"�"�	
�	�������r>c�x�|j�t��|j�d��dSr�)rr�r�r�rUs r�
_testShutdownzBasicTCPTest._testShutdown
s4������C� � � ������"�"�"�"�"r>c�>�ddl}|j�t��|�t
|jj|jdz��|�t
|jjd|jdzz��|j�d��dS)Nrr
r�)	rXrr�r�r�r7r�rZ�UINT_MAX�rVrXs  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)Nr�r�)rr�rjr�r��_closedr�rr�r!rrPrArqr�)rVr�rrGr�s     r�
testDetachzBasicTCPTest.testDetach-
s�����%�%�'�'���M� � �"�"������F�#�#�#�����
�-�.�.�.����'�4�=�#5�t�<�<�<��
�������}�V�^�V�-?��J�J�J������
�#�#�#��i�i��o�o������c�"�"�"�"�"r>c�D�|j�t��dSrEr�rUs r�_testDetachzBasicTCPTest._testDetach=
r�r>Nr�)r]r^r_r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�rr��testShutdown_overflowr�r�r�r`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�r�r�s  rr�zBasicUDPTest.__init__C
rr>c��|j�tt����}|�|t��dSrE�rQr�r�r�r�r�s  r�testSendtoAndRecvzBasicUDPTest.testSendtoAndRecvF
�7���i�n�n�S��X�X�&�&������c�"�"�"�"�"r>c�`�|j�tdt|jf��dSr��r�r�r�r�rSrUs r�_testSendtoAndRecvzBasicUDPTest._testSendtoAndRecvK
�'�������Q��t�y� 1�2�2�2�2�2r>c��|j�tt����\}}|�|t��dSrE�rQr�r�r�r�r�s   rr�zBasicUDPTest.testRecvFromN
�=���I�&�&�s�3�x�x�0�0�	��T�����c�"�"�"�"�"r>c�`�|j�tdt|jf��dSr�rrUs rr�zBasicUDPTest._testRecvFromS
r
r>c�R�|�t|jjd��dS�Nr2�r�r}rQr�rUs r�testRecvFromNegativez!BasicUDPTest.testRecvFromNegativeV
�%�����*�d�i�&8�"�=�=�=�=�=r>c�`�|j�tdt|jf��dSr�rrUs r�_testRecvFromNegativez"BasicUDPTest._testRecvFromNegativeZ
r
r>Nr��
r]r^r_r�rr	r�r�rrr`r>rrrA
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�r�r�s  rr�zBasicUDPLITETest.__init__b
s!��!�*�*�4�J�*�G�G�G�G�Gr>c��|j�tt����}|�|t��dSrErr�s  rrz"BasicUDPLITETest.testSendtoAndRecve
rr>c�`�|j�tdt|jf��dSr�rrUs rr	z#BasicUDPLITETest._testSendtoAndRecvj
r
r>c��|j�tt����\}}|�|t��dSrErr�s   rr�zBasicUDPLITETest.testRecvFromm
r
r>c�`�|j�tdt|jf��dSr�rrUs rr�zBasicUDPLITETest._testRecvFromr
r
r>c�R�|�t|jjd��dSrrrUs rrz%BasicUDPLITETest.testRecvFromNegativeu
rr>c�`�|j�tdt|jf��dSr�rrUs rrz&BasicUDPLITETest._testRecvFromNegativey
r
r>Nr�rr`r>rrr^
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�����dSrE)r�r��
misc_eventr#rWr$s �rrWzSendrecvmsgBase.setUp�
s'���#�/�+�+���
���
�
�����r>c�6�|j�|��SrE)�cli_sockr�r�s  r�sendToServerzSendrecvmsgBase.sendToServer�
s���}�!�!�#�&�&�&r>r`c�Z�|jj||jt|��d�z�SrE)r%r��sendmsg_to_server_defaultsr��rVr,s  r�sendmsgToServerzSendrecvmsgBase.sendmsgToServer�
s4��
%�t�}�$��T�4�S��Y�Y�Z�Z�@�@�C�	Cr>c�L�|j|g|�R�}|�|��|SrE)r��registerRecvmsgResult)rVrGrvr,�results     r�	doRecvmsgzSendrecvmsgBase.doRecvmsg�
s6�����g�-��-�-�-���"�"�6�*�*�*��
r>c��dSrEr`�rVr-s  rr,z%SendrecvmsgBase.registerRecvmsgResult�
s	��	
�r>c�2�|�||��dSrE�r��rV�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�)
rVr��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_rr��fail_timeoutrWr&r(r*r.r,r6r;r�r�rr:r<r=rFr&r'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_intor,�assertGreaterEqual�assertLessEqualr))rVrGrvr,�bufr-s      rr.zRecvmsgIntoMixin.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_r.r`r>rrIrIs#������6�6�6�6�6r>rIc�.��eZdZe�fd���Z�xZS)�SendrecvmsgDgramFlagsBasec�D��t��jtjzSrE)r#r=r�	MSG_TRUNCr$s �rr=z5SendrecvmsgDgramFlagsBase.msg_flags_non_eor_indicators����w�w�2�V�5E�E�Er>)r]r^r_�propertyr=r&r's@rrPrPsM��������F�F�F�F��X�F�F�F�F�Fr>rPc�.��eZdZe�fd���Z�xZS)�SendrecvmsgSCTPFlagsBasec�D��t��jtjzSrE)r#r<r�MSG_EORr$s �rr<z0SendrecvmsgSCTPFlagsBase.msg_flags_eor_indicator%s����w�w�.���?�?r>)r]r^r_rSr<r&r's@rrUrU"sM��������@�@�@�@��X�@�@�@�@�@r>rUc�V�eZdZed���Zed���Zed���Zd�ZdS)�SendrecvmsgConnectionlessBasec��|jSrE)rQrUs r�	serv_sockz'SendrecvmsgConnectionlessBase.serv_sock/s
���y�r>c��|jSrE)r�rUs rr%z&SendrecvmsgConnectionlessBase.cli_sock3s	���x�r>c��ggd|jfSr�)rrUs rr(z8SendrecvmsgConnectionlessBase.sendmsg_to_server_defaults7s���B��4�>�*�*r>c�B�|j�||j��SrE)r%r�rr�s  rr&z*SendrecvmsgConnectionlessBase.sendToServer;s���}�#�#�C���8�8�8r>N)r]r^r_rSr[r%r(r&r`r>rrYrY*st������
����X������X���+�+��X�+�9�9�9�9�9r>rYc�@�eZdZed���Zed���Zd�ZdS)�SendrecvmsgConnectedBasec��|jSrE)rrUs rr[z"SendrecvmsgConnectedBase.serv_sockEs
���}�r>c��|jSrE)rrUs rr%z!SendrecvmsgConnectedBase.cli_sockIs
���~�r>c��dSrEr`r3s   rr6z,SendrecvmsgConnectedBase.checkRecvmsgAddressM�	��	
�r>N)r]r^r_rSr[r%r6r`r>rr`r`?sY����������X������X��
�
�
�
�
r>r`c���eZdZ�fd�Z�xZS)�SendrecvmsgServerTimeoutBasec���t�����|j�|j��dSrE)r#rWr[r�rGr$s �rrWz"SendrecvmsgServerTimeoutBase.setUpVs3���
���
�
������!�!�$�"3�4�4�4�4�4r>)r]r^r_rWr&r's@rrfrfSs8�������5�5�5�5�5�5�5�5�5r>rfc���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��dSrE�r�r[r�r�r�rUs r�testSendmsgzSendmsgTests.testSendmsg_�4�������,�,�S��X�X�6�6��<�<�<�<�<r>c��|�|�tg��tt����dSrE�r�r*r�r�rUs r�_testSendmsgzSendmsgTests._testSendmsgcs4������-�-�s�e�4�4�c�#�h�h�?�?�?�?�?r>c��|�|j�tt����t��dSrErkrUs r�testSendmsgDataGeneratorz%SendmsgTests.testSendmsgDataGeneratorfrmr>c��|�|�d�tfD����tt����dS)Nc3�K�|]}|V��dSrEr`r�s  rr�z9SendmsgTests._testSendmsgDataGenerator.<locals>.<genexpr>ks"����.@�.@�Q�q�.@�.@�.@�.@�.@�.@r>rorUs r�_testSendmsgDataGeneratorz&SendmsgTests._testSendmsgDataGeneratorjsN������-�-�.@�.@�3�%�.@�.@�.@�A�A��S���	#�	#�	#�	#�	#r>c��|�|j�tt����t��dSrErkrUs r�testSendmsgAncillaryGeneratorz*SendmsgTests.testSendmsgAncillaryGeneratornrmr>c��|�|�tgd�dD����tt����dS)Nc3�K�|]}|V��dSrEr`r�s  rr�z>SendmsgTests._testSendmsgAncillaryGenerator.<locals>.<genexpr>ss����_�_�A�a�_�_�_�_�_�_r>r`rorUs r�_testSendmsgAncillaryGeneratorz+SendmsgTests._testSendmsgAncillaryGeneratorrsK������-�-�s�e�_�_��_�_�_�E�E��S���	#�	#�	#�	#�	#r>c��|�|j�tt����t��dSrErkrUs r�testSendmsgArrayzSendmsgTests.testSendmsgArrayvrmr>c��|�|�tjdt��g��t	t����dS)N�B)r�r*�arrayr�r�rUs r�_testSendmsgArrayzSendmsgTests._testSendmsgArrayzsL������-�-�u�{�3��/D�/D�.E�F�F��S���	#�	#�	#�	#�	#r>c��|�|j�tt����t��dSrErkrUs r�testSendmsgGatherzSendmsgTests.testSendmsgGather~rmr>c��|�|�tdd�tdd�g��tt����dS�Nr�rorUs r�_testSendmsgGatherzSendmsgTests._testSendmsgGather�sG������-�-�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�Nr3�done�r�r[r�rUs r�testSendmsgBadArgszSendmsgTests.testSendmsgBadArgs��.�������,�,�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�r*�objectr�r&rUs 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�rUs 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�rUr��r�r�r*r�r�r&rUs 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�rUs r�testSendmsgBadMultiCmsgz$SendmsgTests.testSendmsgBadMultiCmsg�s0��	
�����,�,�T�2�2�G�<�<�<�<�<r>c���|�t|jtggd���|�t|jtgdt	��g��|�d��dS)N�rrr>r�r�rUs r�_testSendmsgBadMultiCmsgz%SendmsgTests._testSendmsgBadMultiCmsg�su�����)�T�%9��%����	.�	.�	.����)�T�%9��%�+�v�x�x�!8�	:�	:�	:����'�"�"�"�"�"r>c�b�|�|j�d��d��dSr�r�rUs 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�rr*r��assertIsNoner�r"r&�rVr�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��dSrEr`rUs r�testSendmsgAfterClosez"SendmsgTests.testSendmsgAfterClose�s���r>c��|j���|�t|jt
g��dSrE)r%r!r�rr*r�rUs r�_testSendmsgAfterClosez#SendmsgTests._testSendmsgAfterClose�s9���
���������'�4�#7�#��?�?�?�?�?r>N)r]r^r_rlrprrrurwrzr|r�r�r�r�r�r�r�r�rr�rxr�r�r�r�r�r`r>rriri[st������=�=�=�@�@�@�=�=�=�#�#�#�=�=�=�#�#�#�=�=�=�#�#�#�=�=�=�M�M�M�=�=�=�#�#�#�$=�=�=�
#�
#�
#��\�&�,�'�'�=�=�(�'�=�
�(�#�#�)�(�#�=�=�=�
#�#�#�
�
�
�@�@�@�@�@r>ric�~�eZdZd�Zd�Zd�Zd�Zeej	dvd��d���Z
e
jd���Zd	S)
�SendmsgStreamTestsc��|�|j�tt����t��dSrErkrUs r�testSendmsgExplicitNoneAddrz.SendmsgStreamTests.testSendmsgExplicitNoneAddr�rmr>c��|�|�tggdd��tt����dSr�rorUs 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�rH�r�r[r�r�r#r�rGrUs 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�r*r�rrr"�ENOMEMr#r��rVr�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#>rez<MSG_DONTWAIT not known to work on this platform when sendingc���|�|j�d��d��|�|j�|j�����dSr�r�rUs 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�rr*r�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@rnr�rxr�r`r>rr�r��s�������=�=�=�M�M�M�I�I�I�
"�"�"�.��c�l�)�3� �!�!�I�I�!�!�I�
�$�
"�
"�%�$�
"�
"�
"r>r�c��eZdZd�Zd�ZdS)�SendmsgConnectionlessTestsc��dSrEr`rUs r�testSendmsgNoDestAddrz0SendmsgConnectionlessTests.testSendmsgNoDestAddrrdr>c��|�t|jjtg��|�t|jjtggdd��dSr�)r�rr%r�r�rUs 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�r?�r.r[r�r�r�r6r�rF�rVr�r�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��dSrE�r&r�rUs 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��dSrEr�rUs r�_testRecvmsgExplicitDefaultsz0RecvmsgGenericTests._testRecvmsgExplicitDefaults8r�r>c�6�|�|jtt��dz��\}}}}|�|t��|�||j��|�|g��|�|d���dS)NrUTr�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��dSrEr�rUs r�_testRecvmsgShorterz'RecvmsgGenericTests._testRecvmsgShorterDr�r>c�F�|�|jtt��dz
��\}}}}|�|tdd���|�||j��|�|g��|�|d���dS)Nr����Fr�r�r�s     r�testRecvmsgTruncz$RecvmsgGenericTests.testRecvmsgTruncG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��dSrEr�rUs r�_testRecvmsgTruncz%RecvmsgGenericTests._testRecvmsgTruncPr�r>c�2�|�|jtt��d��\}}}}|�|t��|�||j��|�|g��|�|d���dS)Nr
Tr�r�r�s     r�testRecvmsgShortAncillaryBufz0RecvmsgGenericTests.testRecvmsgShortAncillaryBufSs���$(�N�N�4�>�36�s�8�8�Q�%@�%@�!��W�e�T�����c�"�"�"�� � ��t�}�5�5�5�����"�%�%�%�����4��(�(�(�(�(r>c�:�|�t��dSrEr�rUs r�_testRecvmsgShortAncillaryBufz1RecvmsgGenericTests._testRecvmsgShortAncillaryBuf\r�r>c�2�|�|jtt��d��\}}}}|�|t��|�||j��|�|g��|�|d���dS)N�(Tr�r�r�s     r�testRecvmsgLongAncillaryBufz/RecvmsgGenericTests.testRecvmsgLongAncillaryBuf_s���$(�N�N�4�>�36�s�8�8�U�%D�%D�!��W�e�T�����c�"�"�"�� � ��t�}�5�5�5�����"�%�%�%�����4��(�(�(�(�(r>c�:�|�t��dSrEr�rUs r�_testRecvmsgLongAncillaryBufz0RecvmsgGenericTests._testRecvmsgLongAncillaryBufhr�r>c��|j���|�t|j|jd��dSr�)r[r!r�rr.rUs r�testRecvmsgAfterClosez)RecvmsgGenericTests.testRecvmsgAfterCloseks:������������'�4�>�4�>�4�H�H�H�H�Hr>c��dSrEr`rUs r�_testRecvmsgAfterClosez*RecvmsgGenericTests._testRecvmsgAfterCloseprr>c��	|j�d��|�t|j|jtt����|j���dS#|j���wxYw)Nr�)	r[r�r�rr.r�r�r#r�rUs r�testRecvmsgTimeoutz&RecvmsgGenericTests.testRecvmsgTimeouts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�rGrUs r�_testRecvmsgTimeoutz'RecvmsgGenericTests._testRecvmsgTimeout|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�FrR�r?rBTr�)r.r[r�r�rr}r�r6r�rFr�r�s     r�testRecvmsgPeekz#RecvmsgGenericTests.testRecvmsgPeek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��dSrEr�rUs r�_testRecvmsgPeekz$RecvmsgGenericTests._testRecvmsgPeek�s�����#�����r>r�c�n�|j�|j��|�|jt	t
����\}}}}|�|t
��|�||j��|�|g��|�	|d���dSr�)
r[r�rGr.r�r�r�r6r�rFr�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�rorUs 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�rxr�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)Nr�r>r�)r.r[r�r6r�rFr�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���dSrE)r%r!rUs r�_testRecvmsgEOFz)RecvmsgGenericStreamTests._testRecvmsgEOF�s���
�������r>c��|�|jtt��dz
��\}}}}|�||j��|�|g��|�|d���|�|jd��\}}}}|�||j��|�|g��|�|d���||z}|�|t��dS)Nr�Fr�r�T)r.r[r�r�r6r�r�rF)rVr�r�r�rr�r�s       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��dSrEr�rUs r�_testRecvmsgOverflowz.RecvmsgGenericStreamTests._testRecvmsgOverflow�r�r>N)r]r^r_r�r�r�rr`r>rr�r��sP������)�)�)����#�#�#� ����r>r�c��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)Nr2rrzTr�)
r�r�r[r�r}r�r�r�r�r�r6r�rFr�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��dSrEr�rUs r�_testRecvmsgBadArgsz RecvmsgTests._testRecvmsgBadArgs�r�r>N)r]r^r_rrr`r>rrr�s2������)�)�)�,����r>rc�>�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 writabler2Tr�)
r�r�r�r�r�r[rKr�r}r�r6r�rF�rVrN�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��dSrEr�rUs r�_testRecvmsgIntoBadArgsz(RecvmsgIntoTests._testRecvmsgIntoBadArgs
r�r>c���ttt����}|j�d�|fD����\}}}}|�|tt����|�|tt����|�||j��|�|g��|�|d���dS)Nc3�K�|]}|V��dSrEr`r�s  rr�z<RecvmsgIntoTests.testRecvmsgIntoGenerator.<locals>.<genexpr>
s"������1�Q������r>Tr�)	r�r�r�r[rKr�r6r�rFr
s      r�testRecvmsgIntoGeneratorz)RecvmsgIntoTests.testRecvmsgIntoGenerator
s�����C���!�!��'+�~�'B�'B��������( �( �$����������S���*�*�*�����i��n�n�-�-�-�� � ��t�}�5�5�5�����"�%�%�%�����4��(�(�(�(�(r>c�:�|�t��dSrEr�rUs r�_testRecvmsgIntoGeneratorz*RecvmsgIntoTests._testRecvmsgIntoGenerator#
r�r>c���tjddgtt��z��}|j�|g��\}}}}|�|tt����|�|���t��|�||j��|�|g��|�	|d���dS)Nr~rTr�)
rr�r�r[rKr��tobytesr6r�rFr
s      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��dSrEr�rUs r�_testRecvmsgIntoArrayz&RecvmsgIntoTests._testRecvmsgIntoArray0
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�r[rK�
memoryviewr�r�r6r�rF)rV�b1�b2�b3rr�r�rs        r�testRecvmsgIntoScatterz'RecvmsgIntoTests.testRecvmsgIntoScatter3
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&rUs r�_testRecvmsgIntoScatterz(RecvmsgIntoTests._testRecvmsgIntoScatterB
s�����3�4�4�4�4�4r>N)r]r^r_rrrrrrr 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
�rLr�r2)�socklen_t_limitrr%�listr8r)r�itemsizer�rMr�r7r@�maxsize)rV�toobigrn�n�rets     r�testCMSG_LENzCmsgMacroTests.testCMSG_LENS
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'rrLr�r2)r(rr�r)r8r)rr*rLr%rMr�r7r@r+)rVr,rn�lastr-r.s      r�testCMSG_SPACEzCmsgMacroTests.testCMSG_SPACEh
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_rX�minrZr(r�r�rr/r2r`r>rr$r$F
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|���	����|�
|����|SrE)r8r=�mkstemprqr@rFr!�writer��encode�append)rVr-�fdsrLrprHs      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�)�	enumerater@�lseek�SEEK_SETr�r�r�r9)rVr;r-rps    r�checkFDszSCMRightsTest.checkFDs�
st���s�^�^�	A�	A�E�A�r��H�R��B�K�(�(�(����R�W�R��.�.��A���
�
���@�@�@�@�	A�	Ar>c�<�|�|j|��dSrE)rq�closeRecvmsgFDsr0s  rr,z#SCMRightsTest.registerRecvmsgResult�
s������,�f�5�5�5�5�5r>c	�B�|dD]�\}}}|tjkr|tjkrotjd��}|�|dt|��t|��|jzz
���|D]}tj|�����dS)Nr
rL)	rr��
SCM_RIGHTSr�	frombytesr�r*r@r!)rV�recvmsg_result�
cmsg_level�	cmsg_type�	cmsg_datar;rps       rrCzSCMRightsTest.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)NrL)	r�r*r�rr�rErr<r�)rVr-s  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�r?rArBrLr)r�r�r6r�rFrr7r�r)rMr�r�tupler�rEr)�
SIZEOF_INTrFrA)rV�numfdsr-�maxcmsgs�ignoreflagsr�r�r�rr;�itemrHrIrJs              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��rUr.r[r�r�rUs r�testFDPassSimplezSCMRightsTest.testFDPassSimple�
�L�����Q����t�~�/2�3�x�x��!@�!@�	A�	A�	A�	A�	Ar>c
�*�|�|�tgtjtjt
jd|�d�������fg��tt����dS)NrLr
)
r�r*r�rr�rErr<rr�rUs r�_testFDPassSimplezSCMRightsTest._testFDPassSimple�
s������� � ����#��#��+�c�4�;�;�q�>�>�2�2�:�:�<�<�>�?�
@�
@�

��H�H�
	�	�	�	�	r>c	��|�d|�|jtt��d����dS)Nr�r�rWrUs r�testMultipleFDPassz SCMRightsTest.testMultipleFDPass�
rYr>c�0�|�d��dS�Nr��rLrUs r�_testMultipleFDPassz!SCMRightsTest._testMultipleFDPass�
������a� � � � � r>r�c��|�d|�|jtt��tjdtz������dSr_)rUr.r[r�r�rr�rPrUs r�testFDPassCMSG_SPACEz"SCMRightsTest.testFDPassCMSG_SPACE�
s^��	
���
�t�~�~�d�n�c�#�h�h�$�/��J��?�?�A�A�	B�	B�	B�	B�	Br>c�0�|�d��dSr_r`rUs r�_testFDPassCMSG_SPACEz#SCMRightsTest._testFDPassCMSG_SPACE�
s�����a� � � � � r>c���|�d|�|jtt��tjdtz����t
j���dS)Nr
r��rS)	rUr.r[r�r�rr%rPr7rUs 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��dSrRr`rUs r�_testFDPassCMSG_LENz!SCMRightsTest._testFDPassCMSG_LEN�
rbr>r�zskipping, see issue #12958zskipping, see issue #22397c	��|�d|�|jtt��d��d���dS)Nr�r�)rRrWrUs 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�rL�	r<r�r*r�rr�rErr��rV�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�)rRrS)
rUr.r[r�r�rr�rPr%r7)rV�num_fdss  r�testFDPassSeparateMinSpacez(SCMRightsTest.testFDPassSeparateMinSpaces��������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����dSrorprqs   r�_testFDPassSeparateMinSpacez)SCMRightsTest._testFDPassSeparateMinSpace#rur>c��	|�|g|��}nM#t$r@}|�|jt��|�|g��}Yd}~nd}~wwxYw|�|t
|����dSrE)r*rr�r"r(r�r�)rVr�r�rr�s     r�sendAncillaryIfPossiblez%SCMRightsTest.sendAncillaryIfPossible1s���	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�rh)rUr.r[r�r�rr7rUs r�testFDPassEmptyzSCMRightsTest.testFDPassEmpty<sT��	
���Q����t�~�/2�3�x�x��!@�!@�)/�):�	�	<�	<�	<�	<�	<r>c�l�|�ttjtjdfg��dS�Nr>)r|r�rr�rErUs r�_testFDPassEmptyzSCMRightsTest._testFDPassEmptyDs>���$�$�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
)r.r[r�r�r�r6r�rFrr7rMr�rE�
assertLessrP�rVr�r�r�rrHrIrJs        r�testFDPassPartialIntz"SCMRightsTest.testFDPassPartialIntIs��$(�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)NrLr2)r|r�rr�rEr�badfdrrUs r�_testFDPassPartialIntz#SCMRightsTest._testFDPassPartialIntVse���$�$�������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�rL)r.r[r�r�r�r6r�rFrr7rMrr�rErFr*rA)	rVr�r�r�rr;rHrIrJs	         r�testFDPassPartialIntInMiddlez*SCMRightsTest.testFDPassPartialIntInMiddle]sq��%)�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�rLr2)	r<r|r�rr�rErr�rrqs   r�_testFDPassPartialIntInMiddlez+SCMRightsTest._testFDPassPartialIntInMiddleps����;�;�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�r?r@rB)r�r�r6r�rFrr7)rVr-rSr�r�r�rs       r�checkTruncatedHeaderz"SCMRightsTest.checkTruncatedHeader|s���%+�!��W�e�T�����c�"�"�"�� � ��t�}�5�5�5�����"�%�%�%�����4�&�2C�*�	�	,�	,�	,�	,�	,r>c��|�|�|jtt����t
j���dS�Nrh�r�r.r[r�r�rr7rUs r�testCmsgTruncNoBufSizez$SCMRightsTest.testCmsgTruncNoBufSize�sP��	
�!�!�$�.�.����S���"J�"J�/5�.?�		"�	A�	A�	A�	A�	Ar>c�0�|�d��dSrRr`rUs r�_testCmsgTruncNoBufSizez%SCMRightsTest._testCmsgTruncNoBufSize�rbr>c��|�|�|jtt��d��t
j���dS)Nrrhr�rUs r�testCmsgTrunc0zSCMRightsTest.testCmsgTrunc0�sN���!�!�$�.�.����S���1�"M�"M�.4�.?�	"�	A�	A�	A�	A�	Ar>c�0�|�d��dSrRr`rUs r�_testCmsgTrunc0zSCMRightsTest._testCmsgTrunc0�rbr>c��|�|�|jtt��d����dSrR)r�r.r[r�r�rUs r�testCmsgTrunc1zSCMRightsTest.testCmsgTrunc1�s4���!�!�$�.�.����S���1�"M�"M�N�N�N�N�Nr>c�0�|�d��dSrRr`rUs r�_testCmsgTrunc1zSCMRightsTest._testCmsgTrunc1�rbr>c��|�|�|jtt��t
dz����dSr�)r�r.r[r�r�rPrUs r�testCmsgTrunc2IntzSCMRightsTest.testCmsgTrunc2Int�sP��	
�!�!�$�.�.����S���1;�a��#A�#A�	B�	B�	B�	B�	Br>c�0�|�d��dSrRr`rUs r�_testCmsgTrunc2Intz SCMRightsTest._testCmsgTrunc2Int�rbr>c	��|�|�|jtt��tjd��dz
����dSr)r�r.r[r�r�rr%rUs r�testCmsgTruncLen0Minus1z%SCMRightsTest.testCmsgTruncLen0Minus1�sY���!�!�$�.�.����S���17���1C�1C�a�1G�#I�#I�	J�	J�	J�	J�	Jr>c�0�|�d��dSrRr`rUs r�_testCmsgTruncLen0Minus1z&SCMRightsTest._testCmsgTruncLen0Minus1�rbr>c�x�|�|jtt��|��\}}}}|�|t��|�||j��|�|dtj	���|dkr|gkrdS|�t|��d��|d\}}	}
|�|tj
��|�|	tj��|�t|
��|��|�
t|
��|��tjd��}|�|
dt|
��t|
��|jzz
���|�|��dS)NT�r?r@rr
rL)r.r[r�r�r�r6r�rFrr7r�rErLrMrrFr*rA)rV�ancbuf�maxdata�mindatar�r�r�rrHrIrJr;s            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%rUs r�testCmsgTruncLen0zSCMRightsTest.testCmsgTruncLen0�s+��� � ����(:�(:�A� �F�F�F�F�Fr>c�0�|�d��dSrRr`rUs r�_testCmsgTruncLen0z SCMRightsTest._testCmsgTruncLen0�rbr>c�^�|�tjd��dzd���dS)Nrr
r�r�rUs r�testCmsgTruncLen0Plus1z$SCMRightsTest.testCmsgTruncLen0Plus1�s0��� � ����(:�(:�Q�(>�� �J�J�J�J�Jr>c�0�|�d��dSr�r`rUs r�_testCmsgTruncLen0Plus1z%SCMRightsTest._testCmsgTruncLen0Plus1�rbr>c�l�|�tjt��t���dS)Nr��r�rr%rPrUs r�testCmsgTruncLen1zSCMRightsTest.testCmsgTruncLen1�s8��� � ���
�(C�(C�)3�	!�	5�	5�	5�	5�	5r>c�0�|�d��dSr�r`rUs r�_testCmsgTruncLen1z SCMRightsTest._testCmsgTruncLen1�rbr>c��|�tjdtz��dz
dtzdz
���dS)Nr�r
r�r�rUs r�testCmsgTruncLen2Minus1z%SCMRightsTest.testCmsgTruncLen2Minus1�sJ��� � ����J��(G�(G�!�(K�*+�j�.�A�)=�	!�	?�	?�	?�	?�	?r>c�0�|�d��dSr�r`rUs r�_testCmsgTruncLen2Minus1z&SCMRightsTest._testCmsgTruncLen2Minus1�rbr>N)r
r�r)9r]r^r_r�r<rAr,rCrLrUrXr[r]rar�rrdrxrfrirkr�r�r@rnrrmrtrxrzr|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>rr5r5�
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>r5c	�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�r2c�Z�i}|D]%\}}}|�||f|��||||f<�&|SrE)r�)rVr��drHrIrJs      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
TrNrrL)r[r�rr�rr#r�r.r�r�r�r6r�rFr7r�rOr�r)rPrrFrLrM)rV�
ancbufsize�maxhoprSr�r�r�rrHrIrJr�s            r�
checkHopLimitz"RFC3542AncillaryTest.checkHopLimits���
	
��!�!�&�"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�rUs r�testRecvHopLimitz%RFC3542AncillaryTest.testRecvHopLimit!s!��	
���e��,�,�,�,�,r>c��|�|j�|j�����|�t
��dSr��r�r#r�rGr&r�rUs r�_testRecvHopLimitz&RFC3542AncillaryTest._testRecvHopLimit&sF��
	
�����,�,�T�5F�,�G�G�H�H�H����#�����r>r�c�`�|�tjt�����dS)Nr�)r�rr�rPrUs r�testRecvHopLimitCMSG_SPACEz/RFC3542AncillaryTest.testRecvHopLimitCMSG_SPACE.s,��	
���f�&7�
�&C�&C��D�D�D�D�Dr>c��|�|j�|j�����|�t
��dSr�r�rUs r�_testRecvHopLimitCMSG_SPACEz0RFC3542AncillaryTest._testRecvHopLimitCMSG_SPACE3�D�������,�,�T�5F�,�G�G�H�H�H����#�����r>r�c�>�|�d|j���dS�Nr�)r�r�)r��	hop_limitrUs r�testSetHopLimitz$RFC3542AncillaryTest.testSetHopLimit=s%��
	
���e�D�N��C�C�C�C�Cr>c�R�|�|j�|j�����|�|�tgtjtj	tj
d|jg��fg��tt����dS�Nr�rL)
r�r#r�rGr�r*r�rr�r�rr�r�rUs r�_testSetHopLimitz%RFC3542AncillaryTest._testSetHopLimitDs��������,�,�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
TrNr�rLrr')r[r�rr�rr�r#r�r.r�r�r�r6r�rFr7r�r�rPrrFrLrMr�)rVr�r�rSr�r�r�r�ancmap�tcdatar��hldatas            r�checkTrafficClassAndHopLimitz1RFC3542AncillaryTest.checkTrafficClassAndHopLimitMs+��	
��!�!�&�"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>r�r�c�2�|�d���dSr�)r�rUs r�testRecvTrafficClassAndHopLimitz4RFC3542AncillaryTest.testRecvTrafficClassAndHopLimitqs!��	
�)�)�U�)�;�;�;�;�;r>c��|�|j�|j�����|�t
��dSr�r�rUs r� _testRecvTrafficClassAndHopLimitz5RFC3542AncillaryTest._testRecvTrafficClassAndHopLimitwr�r>c�f�|�tjt��dz���dS�Nr�r�)r�rr�rPrUs r�)testRecvTrafficClassAndHopLimitCMSG_SPACEz>RFC3542AncillaryTest.testRecvTrafficClassAndHopLimitCMSG_SPACE|s>��
	
�)�)��(��4�4�q�8�	*�	:�	:�	:�	:�	:r>c��|�|j�|j�����|�t
��dSr�r�rUs r�*_testRecvTrafficClassAndHopLimitCMSG_SPACEz?RFC3542AncillaryTest._testRecvTrafficClassAndHopLimitCMSG_SPACE�r�r>c�>�|�d|j���dSr��r�r�rUs 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�rGr�r*r�rr�r�r�
traffic_classr�r�r�rUs 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�rUs 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�rLr)r�r#r�rGr*r�rr�r�rr�rr�r�rr�r"r(r�r�)rVrr�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�)r[r�rr�rr#r�r.r�r�r�r6r�rFr7)rVr�rSr,r�r�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�rS�r�rr7rUs rr�z+RFC3542AncillaryTest.testCmsgTruncNoBufSize�s:��	
�)�)�T�
7=�6G�	*�	I�	I�	I�	I�	Ir>c��|�|j�|j�����|�t
��dSr�r�rUs rr�z,RFC3542AncillaryTest._testCmsgTruncNoBufSize�r�r>c�H�|�dtj���dS)Nrr�r�rUs r�testSingleCmsgTrunc0z)RFC3542AncillaryTest.testSingleCmsgTrunc0�s8��	
�)�)�Q�6<�6G�	*�	I�	I�	I�	I�	Ir>c��|�|j�|j�����|�t
��dSr�r�rUs r�_testSingleCmsgTrunc0z*RFC3542AncillaryTest._testSingleCmsgTrunc0�r�r>c�2�|�d���dS)Nr
r�)r�rUs r�testSingleCmsgTrunc1z)RFC3542AncillaryTest.testSingleCmsgTrunc1�s���)�)�Q�)�7�7�7�7�7r>c��|�|j�|j�����|�t
��dSr�r�rUs r�_testSingleCmsgTrunc1z*RFC3542AncillaryTest._testSingleCmsgTrunc1�r�r>c�B�|�dtz���dSr�)r�rPrUs r�testSingleCmsgTrunc2Intz,RFC3542AncillaryTest.testSingleCmsgTrunc2Int�s#���)�)�Q��^�)�D�D�D�D�Dr>c��|�|j�|j�����|�t
��dSr�r�rUs r�_testSingleCmsgTrunc2Intz-RFC3542AncillaryTest._testSingleCmsgTrunc2Int�r�r>c�\�|�tjd��dz
���dS)Nrr
r�)r�rr%rUs r�testSingleCmsgTruncLen0Minus1z2RFC3542AncillaryTest.testSingleCmsgTruncLen0Minus1s.���)�)�V�_�Q�5G�5G�!�5K�)�L�L�L�L�Lr>c��|�|j�|j�����|�t
��dSr�r�rUs r�_testSingleCmsgTruncLen0Minus1z3RFC3542AncillaryTest._testSingleCmsgTruncLen0Minus1r�r>c��|j�tjtjd��|j���|�|jtt��tj
t��dz
��\}}}}|�|t��|�
||j��|�|dtj���|�t|��d��|rv|d\}}}|�|tj��|�|tj��|�t|��t��dSdS)Nr
Tr�r)r[r�rr�rr#r�r.r�r�r%rPr�r6r�rFr7rMr�r�r�s        r�testSingleCmsgTruncInDataz.RFC3542AncillaryTest.testSingleCmsgTruncInDatasV��
	
��!�!�&�"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�rUs r�_testSingleCmsgTruncInDataz/RFC3542AncillaryTest._testSingleCmsgTruncInData!r�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�rrLr')r[r�rr�rr�r#r�r.r�r�r�r6r�rFr7r�r�r�rPrrFrLrM)rVr�rSr�r�r�rrHrIrJr�s           r�checkTruncatedSecondHeaderz/RFC3542AncillaryTest.checkTruncatedSecondHeader&s���	
��!�!�&�"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�rPr7rUs r�testSecondCmsgTrunc0z)RFC3542AncillaryTest.testSecondCmsgTrunc0FsC��	
�'�'��(9�*�(E�(E�4:�4E�	(�	G�	G�	G�	G�	Gr>c��|�|j�|j�����|�t
��dSr�r�rUs r�_testSecondCmsgTrunc0z*RFC3542AncillaryTest._testSecondCmsgTrunc0Lr�r>c�d�|�tjt��dz��dSrR�rrr�rPrUs r�testSecondCmsgTrunc1z)RFC3542AncillaryTest.testSecondCmsgTrunc1Qs.��	
�'�'��(9�*�(E�(E��(I�J�J�J�J�Jr>c��|�|j�|j�����|�t
��dSr�r�rUs r�_testSecondCmsgTrunc1z*RFC3542AncillaryTest._testSecondCmsgTrunc1Vr�r>c�t�|�tjt��dtzz��dSr�rrUs r�testSecondCmsgTrunc2Intz,RFC3542AncillaryTest.testSecondCmsgTrunc2Int[s?��	
�'�'��(9�*�(E�(E�()�J��)7�	8�	8�	8�	8�	8r>c��|�|j�|j�����|�t
��dSr�r�rUs r�_testSecondCmsgTrunc2Intz-RFC3542AncillaryTest._testSecondCmsgTrunc2Intar�r>c��|�tjt��tjd��zdz
��dSr)rrr�rPr%rUs r�testSecondCmsgTruncLen0Minus1z2RFC3542AncillaryTest.testSecondCmsgTruncLen0Minus1fsR��	
�'�'��(9�*�(E�(E�(.���(:�(:�);�=>�)?�	@�	@�	@�	@�	@r>c��|�|j�|j�����|�t
��dSr�r�rUs r�_testSecondCmsgTruncLen0Minus1z3RFC3542AncillaryTest._testSecondCmsgTruncLen0Minus1lr�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�rrLr')r[r�rr�rr�r#r�r.r�r�r�rPr%r�r6r�rFr7r�r��pop�removerrFrLrMr�)
rVr�r�r�r�
cmsg_typesrHrIrJr�s
          r�testSecondCmsgTruncInDataz.RFC3542AncillaryTest.testSecondCmsgTruncInDataqsC��
	
��!�!�&�"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�rUs r�_testSecondCmsgTruncInDataz/RFC3542AncillaryTest._testSecondCmsgTruncInData�r�r>N)r'rr�)1r]r^r_r�r�r�r�r�rr�rxr�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�rrrrr	rr
rrrrrrrrr 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>rr)r)��������	�Dr>r)r�c��eZdZdS)�SendmsgUDPTestNr*r`r>rr-r-���������Dr>r-r�c��eZdZdS)�RecvmsgUDPTestNr*r`r>rr0r0�r.r>r0rKc��eZdZdS)�RecvmsgIntoUDPTestNr*r`r>rr2r2�r.r>r2c��eZdZd�ZdS)�SendrecvmsgUDP6TestBasec�R�|�|dd�|dd���dSrr2r3s   rr6z+SendrecvmsgUDP6TestBase.checkRecvmsgAddress��0��	
����s��s��U�3�B�3�Z�0�0�0�0�0r>N�r]r^r_r6r`r>rr4r4�s#������1�1�1�1�1r>r4rErkr(c��eZdZdS)�SendmsgUDP6TestNr*r`r>rr9r9��������	�Dr>r9c��eZdZdS)�RecvmsgUDP6TestNr*r`r>rr<r<�r:r>r<c��eZdZdS)�RecvmsgIntoUDP6TestNr*r`r>rr>r>�r:r>r>r�c��eZdZdS)�RecvmsgRFC3542AncillaryUDP6TestNr*r`r>rr@r@��������	�Dr>r@c��eZdZdS)�#RecvmsgIntoRFC3542AncillaryUDP6TestNr*r`r>rrCrC�s������	�Dr>rCc��eZdZdS)�SendrecvmsgUDPLITETestBaseNr*r`r>rrErE�s������
	�Dr>rEc��eZdZdS)�SendmsgUDPLITETestNr*r`r>rrGrG�r:r>rGc��eZdZdS)�RecvmsgUDPLITETestNr*r`r>rrIrI�r:r>rIc��eZdZdS)�RecvmsgIntoUDPLITETestNr*r`r>rrKrK�r:r>rKc��eZdZd�ZdS)�SendrecvmsgUDPLITE6TestBasec�R�|�|dd�|dd���dSrr2r3s   rr6z/SendrecvmsgUDPLITE6TestBase.checkRecvmsgAddress�r6r>Nr7r`r>rrMrM�s#������1�1�1�1�1r>rMc��eZdZdS)�SendmsgUDPLITE6TestNr*r`r>rrPrPrAr>rPc��eZdZdS)�RecvmsgUDPLITE6TestNr*r`r>rrRrR
rAr>rRc��eZdZdS)�RecvmsgIntoUDPLITE6TestNr*r`r>rrTrTrAr>rTc��eZdZdS)�#RecvmsgRFC3542AncillaryUDPLITE6TestNr*r`r>rrVrVs������	�Dr>rVc��eZdZdS)�'RecvmsgIntoRFC3542AncillaryUDPLITE6TestNr*r`r>rrXrX$s������	�Dr>rXc��eZdZdS)�SendrecvmsgTCPTestBaseNr*r`r>rrZrZ0r.r>rZc��eZdZdS)�SendmsgTCPTestNr*r`r>rr\r\4r.r>r\c��eZdZdS)�RecvmsgTCPTestNr*r`r>rr^r^8r+r>r^c��eZdZdS)�RecvmsgIntoTCPTestNr*r`r>rr`r`=r+r>r`c��eZdZdS)�SendrecvmsgSCTPStreamTestBaseNr*r`r>rrbrbCr+r>rbz6IPPROTO_SCTP: [Errno 62] Protocol not supported on AIXrPrArdc��eZdZdS)�SendmsgSCTPStreamTestNr*r`r>rrdrdHr:r>rdc���eZdZ�fd�Z�xZS)�RecvmsgSCTPStreamTestc����	tt|�����dS#t$r6}|jtjkr�|�d��Yd}~dSd}~wwxYw�Nz4sporadic ENOTCONN (kernel issue?) - see issue #13876)r#rfr�rr"�ENOTCONNrt�rVr�r%s  �rr�z$RecvmsgSCTPStreamTest.testRecvmsgEOFTs����	R��'��.�.�=�=�?�?�?�?�?���	R�	R�	R��w�%�.�(�(���M�M�P�Q�Q�Q�Q�Q�Q�Q�Q�Q�����	R�����',�
A,�+A'�'A,�r]r^r_r�r&r's@rrfrfN�A�������R�R�R�R�R�R�R�R�Rr>rfc���eZdZ�fd�Z�xZS)�RecvmsgIntoSCTPStreamTestc����	tt|�����dS#t$r6}|jtjkr�|�d��Yd}~dSd}~wwxYwrh)r#ror�rr"rirtrjs  �rr�z(RecvmsgIntoSCTPStreamTest.testRecvmsgEOFbs����	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���rkrlr's@rroro\rmr>roc��eZdZdS)�SendrecvmsgUnixStreamTestBaseNr*r`r>rrrrrkr.r>rrrLc��eZdZdS)�SendmsgUnixStreamTestNr*r`r>rrtrtor+r>rtc��eZdZdS)�RecvmsgUnixStreamTestNr*r`r>rrvrvtr:r>rvc��eZdZdS)�RecvmsgIntoUnixStreamTestNr*r`r>rrxrxzr:r>rxr�rEc��eZdZdS)�RecvmsgSCMRightsStreamTestNr*r`r>rrzrz�r+r>rzc��eZdZdS)�RecvmsgIntoSCMRightsStreamTestNr*r`r>rr|r|�r:r>r|c�`��eZdZ�fd�ZejZeed��r	dZ	d�Z
�xZSdZ	d�Z
�xZS)�InterruptedTimeoutBasec����t�����tjtjd���}|�tjtj|��dS)Nc��ddzSr�r`)�signumr
s  rrtz.InterruptedTimeoutBase.setUp.<locals>.<lambda>�s
���A��r>)r#rWrrrq)rV�orig_alrm_handlerr%s  �rrWzInterruptedTimeoutBase.setUp�sS���
���
�
����"�M�&�.�*E�*E�G�G������
�v�~�7H�I�I�I�I�Ir>�	setitimerg�������?c�D�tjtj|��dSrE)rr��ITIMER_REAL�rV�secondss  r�setAlarmzInterruptedTimeoutBase.setAlarm�s����V�/��9�9�9�9�9r>r�c�.�tj|��dSrE)rr�r�s  rr�zInterruptedTimeoutBase.setAlarm�s���L��!�!�!�!�!r>)r]r^r_rWrr�rHrr�
alarm_timer�r&r's@rr~r~�s��������
J�J�J�J�J��&�G�
�w�v�{�#�#�
"��
�	:�	:�	:�	:�	:�	:�	:��
�	"�	"�	"�	"�	"�	"�	"r>r~�siginterruptr�r�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��dSrE)r#rWrQr�rHr$s �rrWz InterruptedRecvTimeoutTest.setUp�s2���
���
�
�����	���T�\�*�*�*�*�*r>c��	|�|j��|�t��5}||i|��ddd��n#1swxYwY|�d��dS#|�d��wxYwr�)r�r�r�r�rVrPr,r-r�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�rQr�rUs r�testInterruptedRecvTimeoutz5InterruptedRecvTimeoutTest.testInterruptedRecvTimeout�s"���!�!�$�)�.�$�7�7�7�7�7r>c�`�|�|jjtd����dSr�)r�rQ�	recv_intor�rUs r�testInterruptedRecvIntoTimeoutz9InterruptedRecvTimeoutTest.testInterruptedRecvIntoTimeout�s)���!�!�$�)�"5�y����G�G�G�G�Gr>c�F�|�|jjd��dSr�)r�rQr�rUs r�testInterruptedRecvfromTimeoutz9InterruptedRecvTimeoutTest.testInterruptedRecvfromTimeout�s#���!�!�$�)�"4�d�;�;�;�;�;r>c�`�|�|jjtd����dSr�)r�rQr�r�rUs r�"testInterruptedRecvfromIntoTimeoutz=InterruptedRecvTimeoutTest.testInterruptedRecvfromIntoTimeout�s)���!�!�$�)�"9�9�T�?�?�K�K�K�K�Kr>r�c�F�|�|jjd��dSr�)r�rQr�rUs r�testInterruptedRecvmsgTimeoutz8InterruptedRecvTimeoutTest.testInterruptedRecvmsgTimeout�s#���!�!�$�)�"3�T�:�:�:�:�:r>rKc�b�|�|jjtd��g��dSr�)r�rQrKr�rUs r�!testInterruptedRecvmsgIntoTimeoutz<InterruptedRecvTimeoutTest.testInterruptedRecvmsgIntoTimeout�s,���!�!�$�)�"8�9�T�?�?�:K�L�L�L�L�Lr>)r]r^r_rWr�r�r�r�r�r�rr�r�r&r'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)r#rWrrrqr!r��Thread�	doConnect�startrQr�rr�r�rH)rV�
cli_threadrr%s   �rrWz InterruptedSendTimeoutTest.setUp�s����
���
�
�������)�)��������,�-�-�-��%�T�^�<�<�<�
�������"�i�.�.�0�0���
�t�����
�+�,�,�,���������!�!�$�,�/�/�/�/�/r>c�D�|j�|j��dSrE)rr�rrUs rr�z$InterruptedSendTimeoutTest.doConnect�s ������t�~�.�.�.�.�.r>c��	|�t��5}	|�|j��||i|���##1swxYwY	|�d��dS#|�d��wxYw�NTr)r�rr�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;rzrc�F�|�|jjd��dS�Nr�)r�rr�rUs r�testInterruptedSendTimeoutz5InterruptedSendTimeoutTest.testInterruptedSendTimeouts#���!�!�$�.�"5�x�@�@�@�@�@r>c�R�|�|jjd|j��dSr�)r�rr�rrUs r�testInterruptedSendtoTimeoutz7InterruptedSendTimeoutTest.testInterruptedSendtoTimeouts4��	
�!�!�$�.�"7��"&�.�	2�	2�	2�	2�	2r>r�c�H�|�|jjdg��dSr�)r�rr�rUs r�testInterruptedSendmsgTimeoutz8InterruptedSendTimeoutTest.testInterruptedSendmsgTimeouts'��	
�!�!�$�.�"8�8�*�E�E�E�E�Er>)r]r^r_rWr�r�r�requires_mac_verr�r�r�rr�r&r'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>)rQr�r!r�r�r�r�)rVr�r�sdr�r8r�s       r�	testClosezTCPCloserTest.testCloses����Y�%�%�'�'�
��d��
�
����
�X��!�=�"��r�2�s�;�;���e�S������t�$�$�$����������S�)�)�)�	
�
�
�����
�
�����r>c�z�|j�t|jf��t	jd��dS�Nr�)r�r�r�rSr�r�rUs r�
_testClosezTCPCloserTest._testClose%s0������$��	�*�+�+�+��
�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�)rr�r�s  rr�zBasicSocketPairTest.__init__,s!��������<�<�<�<�<r>c��|�|tj��ttd��r&|�|jtj��n%|�|jtj��|�|jtj��|�|j	d��dS)NrLr)
r�rrr�r�rLrPrwrAr�rVs  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��dSrE)r�r�rUs r�
_testDefaultsz!BasicSocketPairTest._testDefaults8s�����T�X�&�&�&�&�&r>c�:�|�|j��dSrE)r�rQrUs r�testDefaultsz BasicSocketPairTest.testDefaults;s�����T�Y�'�'�'�'�'r>c�p�|j�d��}|�|t��dSr��rQr�r�r�r�s  rr�zBasicSocketPairTest.testRecv>�1���i�n�n�T�"�"������c�"�"�"�"�"r>c�D�|j�t��dSrE�r�r�r�rUs rr�zBasicSocketPairTest._testRecvB�����
�
�c�����r>c�D�|j�t��dSrE�rQr�r�rUs r�testSendzBasicSocketPairTest.testSendE����	���s�����r>c�p�|j�d��}|�|t��dSr��r�r�r�r�r�s  r�	_testSendzBasicSocketPairTest._testSendH�1���h�m�m�D�!�!������c�"�"�"�"�"r>Nr�)r]r^r_r�r�r�r�r�r�r�r�r`r>rr�r�*s�������=�=�=�=�(�(�(�'�'�'�(�(�(�#�#�#�������#�#�#�#�#r>r�c���eZdZd�Z�fd�Z�fd�Zd�Zd�Zd�Zd�Z	d�Z
d	�Zej
eed
��peed��d��ejejd
��d�����Zd�Zd�Zd�Z�xZS)�PurePythonSocketPairTestc��	tjtj��S#t$r!tjtj��cYSwxYwrE)rrrkrrPrUs rrz#PurePythonSocketPairTest.socketpairRsN��	5��$�V�_�5�5�5���	5�	5�	5��$�V�^�4�4�4�4�4�	5���s� �(A�
Ac����ttd��r(tj|_tjt_nd|_t
�����dS)Nr)rr�rr�_orig_sp�_fallback_socketpairr#rWr$s �rrWzPurePythonSocketPairTest.setUp[sM����7�L�)�)�	!�"�-�D�M�!'� ;�F���!�D�M�
���
�
�����r>c�|��t�����|j�|jt_dSdSrE)r#rZr�rrr$s �rrZz!PurePythonSocketPairTest.tearDownfs9���
���������=�$� $�
�F����%�$r>c�p�|j�d��}|�|t��dSr�r�r�s  r�	test_recvz"PurePythonSocketPairTest.test_recvlr�r>c�D�|j�t��dSrEr�rUs r�
_test_recvz#PurePythonSocketPairTest._test_recvpr�r>c�D�|j�t��dSrEr�rUs r�	test_sendz"PurePythonSocketPairTest.test_sendsr�r>c�p�|j�d��}|�|t��dSr�r�r�s  r�
_test_sendz#PurePythonSocketPairTest._test_sendvr�r>c��tjtj��\}}|���|���dSrE)rrrPr!�rVr�rAs   r�	test_ipv4z"PurePythonSocketPairTest.test_ipv4zs6���$�V�^�4�4���S��	�	�����	�	�����r>c��dSrEr`rUs r�
_test_ipv4z#PurePythonSocketPairTest._test_ipv4rr>r��IPV6_V6ONLY� IPV6_V6ONLY option not supportedr�c��tjtj��\}}|���|���dSrE)rrrkr!r�s   r�	test_ipv6z"PurePythonSocketPairTest.test_ipv6�s8��
�$�V�_�5�5���S��	�	�����	�	�����r>c��dSrEr`rUs r�
_test_ipv6z#PurePythonSocketPairTest._test_ipv6�rr>c�T���tjj�d���fd�}dx}}	|tj_|�t��5tj��\}}ddd��n#1swxYwY�tj_�r����|r|���|r|���dSdS#�tj_�r����|r|���|r|���wwxYw)Nc�4���|��}���tjtjtj�����d��	��|dd���n#t
tf$rYnwxYw��d��|S)NFr�T)rrPrArdr��BlockingIOError�InterruptedError)rVr��inject_sock�orig_getsocknames  ��r�inject_getsocketnamez[PurePythonSocketPairTest.test_injected_authentication_failure.<locals>.inject_getsocketname�s����'�'��-�-�H��"�$�m�F�N�F�<N�O�O���'�'��.�.�.���'�'���!���5�5�5�5��'�)9�:�����D������'�'��-�-�-��Os�A,�,B�?B)rr�r�rrr!)rVr��sock1�sock2r�r�s    @@r�$test_injected_authentication_failurez=PurePythonSocketPairTest.test_injected_authentication_failure�s�����!�=�4����
	�
	�
	�
	�
	�
	�����	�(<�F�M�%��"�"�7�+�+�
3�
3�%�0�2�2���u�
3�
3�
3�
3�
3�
3�
3�
3�
3�
3�
3����
3�
3�
3�
3�)9�F�M�%��
$��!�!�#�#�#��
����
�
�
��
����
�
�
�
�
�
�
��)9�F�M�%��
$��!�!�#�#�#��
����
�
�
��
����
�
�
�
�
���s0�+C�A/�#C�/A3�3C�6A3�7C�AD'c��dSrEr`rUs r�%_test_injected_authentication_failurez>PurePythonSocketPairTest._test_injected_authentication_failure�s	��
	
�r>)r]r^r_rrWrZr�r�r�r�r�r�r�r�rr�r�rr�r�r�r�r�r&r's@rr�r�Ms`�������
5�5�5�	�	�	�	�	�.�.�.�.�.�#�#�#�������#�#�#����

�
�
��X�_����.�9�9�9�9� ���-�8�8�8�7�9�9��X���3�5R�S�S���T�S�9�9��

�
�
����B
�
�
�
�
�
�
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�)r�r��eventr�r�r�s  rr�zNonBlockingTCPTests.__init__�s0���_�&�&��
��&�&�t�
�&�C�C�C�C�Cr>c��|�|j���|��|dk}|�|���|��t�a|du}t	j|tjtj��}|�t|tjz��|��dSdS)N�)	r�rQr|�getblockingr�F_GETFLr@�
O_NONBLOCK�bool)rVrGrH�blocking�fd_blocking�flags      r�assert_sock_timeoutz'NonBlockingTCPTests.assert_sock_timeout�s��������-�-�/�/��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�rrz)rQrdrr�rUs r�testSetBlockingz#NonBlockingTCPTests.testSetBlocking�s���	���d�#�#�#�� � ���D�1�1�1��	���e�$�$�$�� � ���C�0�0�0��	���T�"�"�"�� � ���D�1�1�1��	���Q����� � ���A�.�.�.��	���R� � � �� � ���B�/�/�/��	���Q����� � ���A�.�.�.�.�.r>c��dSrEr`rUs r�_testSetBlockingz$NonBlockingTCPTests._testSetBlocking�rr>c�<�ddl}|j|jkr|�d��|j�d��|�|jd��|j�|jdz��|�|jd��dS)Nrzneeds UINT_MAX < ULONG_MAXFr�r
)rXr��	ULONG_MAXrtrQrdrr�s  r�testSetBlocking_overflowz,NonBlockingTCPTests.testSetBlocking_overflow�s���	�������!4�4�4��M�M�6�7�7�7��	���e�$�$�$�� � ���C�0�0�0��	���i�0�1�4�5�5�5�� � ���D�1�1�1�1�1r>rcztest needs socket.SOCK_NONBLOCKr���c���|j���tjtjtjtjz��|_|�|jd��dSr�)rQr!rrPrArcrrUs r�testInitNonBlockingz'NonBlockingTCPTests.testInitNonBlocking�s[��
	
�	�������M�&�.�"(�"4�v�7K�"K�M�M��	�� � ���A�.�.�.�.�.r>c��dSrEr`rUs r�_testInitNonBlockingz(NonBlockingTCPTests._testInitNonBlocking�rr>c�D�td��5|j�d��|j���\}}|�|j��|�|�����ddd��dS#1swxYwYdS)Nrz)rJrQr�r�rqr!r�r|rs   r�testInheritFlagsBlockingz,NonBlockingTCPTests.testInheritFlagsBlockings���&�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��dSrE�r�r�r�rSrUs r�_testInheritFlagsBlockingz-NonBlockingTCPTests._testInheritFlagsBlocking
�%������$��	�*�+�+�+�+�+r>c�J�d}t|��5|j�d��|j���\}}|�|j��|�|���|��ddd��dS#1swxYwYdS)Ng4@rz)rJrQr�r�rqr!r�r|)rV�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��dSrErrUs r�_testInheritFlagsTimeoutz,NonBlockingTCPTests._testInheritFlagsTimeoutrr>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.)rQrdr��	monotonicr�r�r�r�r�r�r�r�LONG_TIMEOUTr�rqr!r�r|)rV�
start_timer�r�dtr�r8r�s        r�
testAcceptzNonBlockingTCPTests.testAcceptss���	���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��dSrE)r�r�r�r�r�rSrUs r�_testAcceptzNonBlockingTCPTests._testAccept1s9��	
�
����������$��	�*�+�+�+�+�+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.)rQr�rqr!rdr�r�r�r�r�r�r�r�rr!r�r�)rVr�rr�r�r8r�s       rr�zNonBlockingTCPTests.testRecv8sK���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��dSrE)r�r�r�rSr�r�r	r�rUs rr�zNonBlockingTCPTests._testRecvLsQ������$��	�*�+�+�+�	
�
������	
���������r>Nr�)r]r^r_r�rrr
rr�r
�_testSetBlocking_overflowr�r�rr�requires_linux_versionrrrrrrr$r&r�r�r`r>rr�r��ss������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.
    r2r	�strictNrr+r�c�>�t�||���dSr�r�r�s  rr�z FileObjectClassTestCase.__init__mr�r>c��d�td��D��\|_|_|_|_t
�|��|j�|j	|j
|j|j|j
���|_dS)Nc�4�g|]}tj����Sr`)r�r��r�rLs  rr�z1FileObjectClassTestCase.setUp.<locals>.<listcomp>qs3��G1�G1�G1�"#�I�O���G1�G1�G1r>r��r/�errors�newline)r8�evt1�evt2�
serv_finished�cli_finishedrrWrr�	read_modervr/r3r4�	read_filerUs rrWzFileObjectClassTestCase.setUpps���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�|��dSrE)r7r�r:r!r��closedrrZrUs rrZz FileObjectClassTestCase.tearDownzsc������ � � �������������-�.�.�.�����$�$�T�*�*�*�*�*r>c��t�|��|j�|j|j|j|j|j���|_	dS)Nr2)
rr�rr�
write_modervr/r3r4�
write_filerUs rr�z#FileObjectClassTestCase.clientSetUp�sP���'�'��-�-�-��.�1�1��O�T�\��}��[��l�	2�$�$����r>c���|j���|j���|�|jj��d|_t�|��dSrE)r8r�r?r!r�r<rr�rUs rr�z&FileObjectClassTestCase.clientTearDown�sc���������������������.�/�/�/�����*�*�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�r:r�r�rrr�r�r�)rV�ctxs  r�testReadAfterTimeoutz,FileObjectClassTestCase.testReadAfterTimeout�s���	
�
� � ��#�#�#�����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�)r?r8�	write_msg�flushr7r�rUs 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�)r:r�r��read_msgr�)rV�	first_seg�
second_segr�s    r�
testSmallReadz%FileObjectClassTestCase.testSmallRead�sc���N�'�'��D�M�(:�(:�1�(<�=�=�	��^�(�(��+�+�
��*�$������d�m�,�,�,�,�,r>c�v�|j�|j��|j���dSrE�r?r8rErFrUs r�_testSmallReadz&FileObjectClassTestCase._testSmallRead��4������d�n�-�-�-���������r>c�n�|j���}|�||j��dSrE)r:r�r�rIr�s  r�testFullReadz$FileObjectClassTestCase.testFullRead�s3���n�!�!�#�#������d�m�,�,�,�,�,r>c�v�|j�|j��|j���dSrE)r?r8rEr!rUs r�
_testFullReadz%FileObjectClassTestCase._testFullRead�rPr>c��t|j����}	|j�d��}|sn||z
}�#|�||j��dSrR)rwrIr:r�r�)rVrN�chars   r�testUnbufferedReadz*FileObjectClassTestCase.testUnbufferedRead�sl��!�d�4�=�!�!�#�#��	��>�&�&�q�)�)�D��
���4�K�C�		�
	
����d�m�,�,�,�,�,r>c�v�|j�|j��|j���dSrErNrUs r�_testUnbufferedReadz+FileObjectClassTestCase._testUnbufferedRead�rPr>c�n�|j���}|�||j��dSrE)r:�readliner�rI�rV�lines  r�testReadlinez$FileObjectClassTestCase.testReadline�s3���~�&�&�(�(������t�}�-�-�-�-�-r>c�v�|j�|j��|j���dSrErNrUs r�
_testReadlinez%FileObjectClassTestCase._testReadline�rPr>c��|j���|j���}|�||j��dSrE)rr!r:r�r�rIr�s  r�testCloseAfterMakefilez.FileObjectClassTestCase.testCloseAfterMakefile�sG���
�������n�!�!�#�#������d�m�,�,�,�,�,r>c�v�|j�|j��|j���dSrErNrUs r�_testCloseAfterMakefilez/FileObjectClassTestCase._testCloseAfterMakefile�rPr>c�"�|j���|j�t	t
����}t
|jt��r|�	��}|�
||j��dSrE)r:r!rr�r�r�rvrIr��decoder�r�s  r�testMakefileAfterMakefileClosez6FileObjectClassTestCase.testMakefileAfterMakefileClose�sp����������m� � ��S���*�*���d�m�S�)�)�	��*�*�,�,�C�����d�m�,�,�,�,�,r>c�v�|j�|j��|j���dSrErNrUs r�_testMakefileAfterMakefileClosez7FileObjectClassTestCase._testMakefileAfterMakefileClose�rPr>c�F�|�|jj��dSrE)r�r:r<rUs r�testClosedAttrz&FileObjectClassTestCase.testClosedAttr�s"�����D�N�1�1�2�2�2�2�2r>c�F�|�|jj��dSrE)r�r?r<rUs r�_testClosedAttrz'FileObjectClassTestCase._testClosedAttr�s"�����D�O�2�2�3�3�3�3�3r>c��|�|jj|j��|�|jj|j�����dSrE)r�r:r-r9r�rr�rUs r�testAttributesz&FileObjectClassTestCase.testAttributes�sN�������,�d�n�=�=�=������,�d�m�.B�.B�.D�.D�E�E�E�E�Er>c��|�|jj|j��|�|jj|j�����dSrE)r�r?r-r>r�rr�rUs r�_testAttributesz'FileObjectClassTestCase._testAttributes�sN�������-�t��?�?�?������-�t�~�/D�/D�/F�/F�G�G�G�G�Gr>c��|j���|�t|jj��|j���|�t|jj��dSrE)r:r!r�r}r�rrr�rUs r�
testRealClosez%FileObjectClassTestCase.testRealClose�sf������������*�d�n�&;�<�<�<��
���������'�4�=�#<�=�=�=�=�=r>c��dSrEr`rUs r�_testRealClosez&FileObjectClassTestCase._testRealClose�rr>r�)&r]r^r_rurvr/r3r4r9r�rIr>rEr�rWrZr�r�rCrGrLrOrRrTrWrYr^r`rbrdrgrirkrmrorqrsrur`r>rr,r,Ws�������	�	��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>r,c�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. )r:r[r�rErrr\s  r�testUnbufferedReadlinez8UnbufferedFileObjectClassTestCase.testUnbufferedReadlines����~�&�&�(�(������v���6�7�7�7���/�/��a�8�8����~�&�&�(�(������v���6�7�7�7�7�7r>c��|j�d|jz��|j�d|jz��|j���dS)NryrzrNrUs r�_testUnbufferedReadlinez9UnbufferedFileObjectClassTestCase._testUnbufferedReadlinesV������f�t�~�5�6�6�6�����f�t�~�5�6�6�6���������r>c� �|j���|j�d��}|�||j��|j���|�t|jjd��dSr�)rr!r�r�rIr:r�rr�s  r�testMakefileClosez3UnbufferedFileObjectClassTestCase.testMakefileClosesz���
�������m� � ��&�&������d�m�,�,�,�����������'�4�=�#5�t�<�<�<�<�<r>c�v�|j�|j��|j���dSrErNrUs r�_testMakefileClosez4UnbufferedFileObjectClassTestCase._testMakefileCloserPr>c���tj|j��}|j���tj|j��}|�|dz
|��dSrR)r@r>rr:r!r�)rV�refcount_before�refcount_afters   r�testMakefileCloseSocketDestroyz@UnbufferedFileObjectClassTestCase.testMakefileCloseSocketDestroy sY���/�$�-�8�8�������������7�7������1�,�n�=�=�=�=�=r>c��dSrEr`rUs r�_testMakefileCloseSocketDestroyzAUnbufferedFileObjectClassTestCase._testMakefileCloseSocketDestroy&rr>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)NFrzr�r�g�?rHr
)rrdr�r:�readintor�r�r�rIr5r�r6r�r�r�)rVrJrNr-r�s     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��@)	r5r�r?r8rErFr6r�r7rUs r�_testSmallReadNonBlockingz;UnbufferedFileObjectClassTestCase._testSmallReadNonBlocking@sp���	���s��������d�n�-�-�-���������	�
�
����	
�����$�$�$�$�$r>c��|j�d��|jr|�|j��dSdS)Nr�)r8r��serv_skippedrtrUs r�testWriteNonBlockingz6UnbufferedFileObjectClassTestCase.testWriteNonBlockingIsK������s�#�#�#���	-��M�M�$�+�,�,�,�,�,�	-�	-r>c�f�d|_|j�d��dtjz}d}|j�|��}|�|d��t|��D]7}|j�|��}|�dS|�|d���8d|_dS)NFrrzrz$failed to saturate the socket buffer)	r�rrdrr
r?r8r)r8)rV�BIG�LIMITr-rLs     r�_testWriteNonBlockingz7UnbufferedFileObjectClassTestCase._testWriteNonBlockingPs��� �����"�"�5�)�)�)��W�*�*�����O�!�!�#�&�&�����1�a� � � ��u���
	G�
	G�A���%�%�c�*�*�A��y�������q�!�$�$�$�$�
!G�D���r>N)r]r^r_rurvr{r}rr�r�r�r�r�r�r�r`r>rrwrw�s�������<�<��G�8�8�8� � � �
=�=�=� � � �>�>�>�
�
�
�7�7�7�&%�%�%�-�-�-�G�G�G�G�Gr>rwc��eZdZdZdS)�#LineBufferedFileObjectClassTestCaser
N�r]r^r_rvr`r>rr�r�f��������G�G�Gr>r�c��eZdZdZdS)�$SmallBufferedFileObjectClassTestCaser�Nr�r`r>rr�r�kr�r>r�c�L�eZdZdZdZe�d��ZdZeZ	dZ
dS)�"UnicodeReadFileObjectClassTestCase�=Tests for socket.makefile() in text mode (rather than binary)rr	r+r�N�r]r^r_rur9r�rfrIr>rEr4r`r>rr�r�ps9������G�G��I��z�z�'�"�"�H��J��I��G�G�Gr>r�c�L�eZdZdZdZeZdZe�d��Z	dZ
dS)�#UnicodeWriteFileObjectClassTestCaser�rr*r	r�N)r]r^r_rur9r�rIr>rfrEr4r`r>rr�r�zs9������G�G��I��H��J��
�
�7�#�#�I��G�G�Gr>r�c�r�eZdZdZdZe�d��ZdZe�d��Z	dZ
dS)�'UnicodeReadWriteFileObjectClassTestCaser�rr	r*r�Nr�r`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|_dSrE)r�create_connectionr�rSr�rrUs rr�z!NetworkConnectionTest.clientSetUp�s*���+�T�4�9�,=�>�>��������r>N)r]r^r_rur�r`r>rr�r��s)������#�#�"�"�"�"�"r>r�c��eZdZdZdS)�
BasicTCPTest2zLTests that NetworkConnection does not break existing TCP functionality.
    N)r]r^r_rur`r>rr�r��s���������r>r�c��eZdZGd�dej��Zejd���Zej	d���Z
ej	d���Zd�Zd�Z
dS)	�NetworkConnectionNoServerc��eZdZd�ZdS)�$NetworkConnectionNoServer.MockSocketc� �td���)Nz	timed out)rr)s  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�)rV�
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��dSrE)rr�rrPrArqr!r�rr�r�r�r�r"�ECONNREFUSED)rVrSr�r�s    r�test_connectz&NetworkConnectionNoServer.test_connect�s����-�/�/���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
|��dSrE)rr�r�rrr�r��get_socket_conn_refused_errsr�r�r")rVrSr��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�rAr�r�)rVrSr��eg�	addressess     r�!test_create_connection_all_errorsz;NetworkConnectionNoServer.test_create_connection_all_errors�s���-�/�/��	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)NrzTimeoutError not raised)r�rr�r�r�rrrr�r"�EAFNOSUPPORTr�s  r�test_create_connection_timeoutz8NetworkConnectionNoServer.test_create_connection_timeout�s���
&�
&�
(�
(�		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�skip_if_tcp_blackholer�r�r�r�r`r>rr�r��s�������,�,�,�,�,�V�]�,�,�,���'�'���'��(�A�A�)�(�A��(�;�;�)�(�;�0=�=�=�$5�5�5�5�5r>r�c�h�eZdZdZd
d�Zd�Zd�Zd�ZeZd�Z	eZ
d�ZeZd	�Z
eZd
�ZeZd�ZeZd�ZdS)�NetworkConnectionAttributesTestNr�c�r�t�||���t�|��dSr�r�r�s  rr�z(NetworkConnectionAttributesTest.__init__�r�r>c�6�tj��|_dSrE)rr��source_portrUs rr�z+NetworkConnectionAttributesTest.clientSetUp�s��(�9�;�;����r>c��|j�|j���d|_t�|��dSrEr�rUs rr�z.NetworkConnectionAttributesTest.clientTearDown�s=���8���H�N�N��������%�%�d�+�+�+�+�+r>c�f�|j���\}}|���dSrE)rQr�r!rs   r�_justAcceptz+NetworkConnectionAttributesTest._justAccept�s*���Y�%�%�'�'�
��d��
�
�����r>c���tjt|jftj���|_|�|jj��|�	|jj
d��dS)Nr�r�)rr�r�rSrr�r�rqr!r�r�rUs r�_testFamilyz+NetworkConnectionAttributesTest._testFamilys`���+�T�4�9�,=�$+�$<�>�>�>���������'�'�'�������!�,�,�,�,�,r>c�&�tjt|jftjd|jf���|_|�|jj	��|�
|j���d|j��dS)Nr�)rH�source_addressr
)rr�r�rSrr�r�r�rqr!r�r�rUs 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)NrU�r�rrFrGr�r�rSr�rqr!r�r|rUs r�_testTimeoutDefaultz3NetworkConnectionAttributesTest._testTimeoutDefaults�������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�rUs 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�rSr�r�r|rUs 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�rSr�rqr!r�r|rUs r�_testTimeoutValueNonamedz8NetworkConnectionAttributesTest._testTimeoutValueNonamed1s]���+�T�4�9�,=�r�B�B���������'�'�'������,�,�.�.��3�3�3�3�3r>r�)r]r^r_r�r�r�r�r��
testFamilyr��testSourceAddressr��testTimeoutDefaultr��testTimeoutNoner��testTimeoutValueNamedr��testTimeoutValueNonamedr�r`r>rr�r��s�������
�C�&�&�&�&�<�<�<�,�,�,�����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  rr�z'NetworkConnectionBehaviourTest.__init__9r�r>c��dSrEr`rUs rr�z*NetworkConnectionBehaviourTest.clientSetUp=rr>c�z�|j���d|_t�|��dSrEr�rUs rr�z-NetworkConnectionBehaviourTest.clientTearDown@r�r>c���|j���\}}|�|j��t	jd��|�d��dS)Nr��done!)rQr�rqr!r�r�r�rs   r�testInsideTimeoutz0NetworkConnectionBehaviourTest.testInsideTimeoutEsR���Y�%�%�'�'�
��d�����
�#�#�#��
�1�
�
�
��	�	�(�����r>c��tjt|jf��x|_}|�d��}|�|d��dS)Nr�r�)rr�r�rSr�r�r�)rVrGr	s   r�_testInsideTimeoutz1NetworkConnectionBehaviourTest._testInsideTimeoutLsK�� �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�)rGs�rrtzDNetworkConnectionBehaviourTest._testOutsideTimeout.<locals>.<lambda>Ss����	�	�!���r>)rr�r�rSr�r�rrVs @r�_testOutsideTimeoutz2NetworkConnectionBehaviourTest._testOutsideTimeoutQsL��� �2�D�$�)�3D�a�P�P�P�P���4����,�(<�(<�(<�(<�=�=�=�=�=r>Nr�)
r]r^r_r�r�r�r��testOutsideTimeoutr�r�r`r>rr�r�7s{������&�&�&�&�
�
�
�,�,�,�
���
+��)�)�)�
>�>�>�>�>r>r�c�b�eZdZd�Zd�Zejeed��d��d���Z	dS)�TCPTimeoutTestc�J���fd�}��t|d��dS)Nc�n���j�d���j���dSr�)rQr�r��r,r-rVs  �r�
raise_timeoutz4TCPTimeoutTest.testTCPTimeout.<locals>.raise_timeoutYs3����I� � ��%�%�%��I�������r>z*Error generating a timeout exception (TCP)�r�r�rVr�s` r�testTCPTimeoutzTCPTimeoutTest.testTCPTimeoutXsL���	�	�	�	�	�	
���,�
�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)rQr�r�rr�r�rV�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>r�ztest 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)Nr�c��eZdZdS)�4TCPTimeoutTest.testInterruptedTimeout.<locals>.AlarmNr*r`r>r�Alarmr	ts�������Dr>r	c�����rEr`)rr
r	s  �r�
alarm_handlerz<TCPTimeoutTest.testInterruptedTimeout.<locals>.alarm_handlervs����Kr>r�znothing caughtzcaught timeout instead of Alarmz3caught other exception instead of Alarm: %s(%s):
%srzgot Alarm in wrong place)
rQr�r>rrr�r�r�rr@�exc_info�	traceback�
format_exc)rVr	rr�r	s    @r�testInterruptedTimeoutz%TCPTimeoutTest.testInterruptedTimeoutms����	
�	���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�Vsv������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��rQr�r�r�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.testUDPTimeout�sL���	!�	!�	!�	!�	!�	
���,�
�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�r�z%caught timeout instead of error (UDP)Tz!caught unexpected exception (UDP)�1recv() returned success when we did not expect it�rQr�r�rr�rr�s   rr�zUDPTimeoutTest.testTimeoutZero�s���
��	;��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_timeout�r	r>z.Error generating a timeout exception (UDPLITE)r�r�s` r�testUDPLITETimeoutz%UDPLITETimeoutTest.testUDPLITETimeout�sL���	!�	!�	!�	!�	!�	
���,�
�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�r�z)caught timeout instead of error (UDPLITE)Tz%caught unexpected exception (UDPLITE)r	r	r�s   rr�z"UDPLITETimeoutTest.testTimeoutZero�s���
��	?��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��dSrE)r��
issubclassrr>rr�r�rH�assertIs�errorrrUs r�testExceptionTreez TestExceptions.testExceptionTree�s������
�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)
rrPrAr�r!rqrjr�rrd)rV�sock0rGs   r�test_setblocking_invalidfdz)TestExceptions.test_setblocking_invalidfd�s����
�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	�s2������4�4�4�
$�
$�
$�
$�
$r>r	re�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)
rrLrArrrTr�r�r�r�r�)rVr��s1r��s3s     r�testLinuxAbstractNamespacez5TestLinuxAbstractNamespace.testLinuxAbstractNamespace�s���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_MAXrrLrArrr�r��rVr�r$s   r�testMaxNamez&TestLinuxAbstractNamespace.testMaxName�s����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/	rrLrAr�rrrr0	s   r�testNameOverflowz+TestLinuxAbstractNamespace.testNameOverflow�s����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)rrLrArrr�r�r!r�s  r�testStrNamez&TestLinuxAbstractNamespace.testStrName�sr���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)Nr7	)rrLrArrr�r�r�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�)rrLrArr�assertRegexr�r�)rV�abstract_addressr*	r�s    r�testAutobindz'TestLinuxAbstractNamespace.testAutobinds���-��
�]�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,	r1	r5	r8	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��|_dSrE)rrLrArGrUs rrWzTestUnixDomain.setUps���M�&�.�&�2D�E�E��	�	�	r>c�8�|j���dSrE)rGr!rUs rrZzTestUnixDomain.tearDowns���	�������r>c���	tj|��S#t$r>|�d�|tj������YdSwxYw)NzBPathname {0!a} cannot be represented in file system encoding {1!r})r@�fsencoder�rtr�r@�getfilesystemencoding�rVrHs  r�encodedzTestUnixDomain.encodedsy��	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)rrErr�rtr�)rVrGrHr�s    rrrzTestUnixDomain.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�rGr�rUs rr�zTestUnixDomain.testUnbound.s*���
�
�d�i�+�+�-�-�z�:�:�:�:�:r>c�(�tj�tj��}|�|j|��|�tj|��|�	|j�
��|��dSrE)r@rH�abspathr�TESTFNrrrGrqrFr�r�rF	s  r�testStrAddrzTestUnixDomain.testStrAddr2so���w���y�/�0�0���	�	�$�)�T�"�"�"����	�(�$�/�/�/������.�.�0�0�$�7�7�7�7�7r>c�N�tj�tj��}|�|j|�|����|�tj	|��|�
|j���|��dSrE)r@rHrK	rrL	rrrGrG	rqrFr�r�rF	s  r�
testBytesAddrzTestUnixDomain.testBytesAddr9s{���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)
r@rHrK	r�TESTFN_UNICODErG	rrrGrfrqrFr�r�)rVrHr�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_UNENCODABLErtr@rHrK	rrrGrqrFr�r�rF	s  r�testUnencodableAddrz"TestUnixDomain.testUnencodableAddrIs����'�/��M�M�=�>�>�>��w���y�;�<�<���	�	�$�)�T�"�"�"����	�(�$�/�/�/������.�.�0�0�$�7�7�7�7�7r>rer%	c�R�|�t|jjd��dS)Nr�)r�rrGrrrUs r�testEmptyAddresszTestUnixDomain.testEmptyAddressSs&��	
���'�4�9�>�2�6�6�6�6�6r>N)r]r^r_rWrZrG	rrr�rM	rO	rT	rW	r�r�r@rnrY	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  rr�zBufferIOTest.__init__]r�r>c�v�tjddgtt��z��}|j�|��}|�|tt����|���}|dtt���}|�|t��dS�Nr~r)rr�r�rr�r�r�rVrNrr�s    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�|��dSrE�r)r�rr��rVrNs  r�_testRecvIntoArrayzBufferIOTest._testRecvIntoArrayh�)���C�j�j������C� � � � � r>c��td��}|j�|��}|�|t	t
����|dt	t
���}|�|t
��dSr�)r�rr�r�r�r�r_	s    r�testRecvIntoBytearrayz"BufferIOTest.testRecvIntoBytearraylsm����o�o����(�(��-�-�������S���*�*�*��)�3�s�8�8�)�n������c�"�"�"�"�"r>c�0�td��}|j�t|����}|�|tt����|dtt���}|�|t��dSr�)r�rr�rr�r�r�r_	s    r�testRecvIntoMemoryviewz#BufferIOTest.testRecvIntoMemoryviewuss����o�o����(�(��C���9�9�������S���*�*�*��)�3�s�8�8�)�n������c�"�"�"�"�"r>c�|�tjddgtt��z��}|j�|��\}}|�|tt����|���}|dtt���}|�|t��dSr^	)rr�r�rr�r�r�rVrNrrr�s     r�testRecvFromIntoArrayz"BufferIOTest.testRecvFromIntoArray~s����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�|��dSrErb	rc	s  r�_testRecvFromIntoArrayz#BufferIOTest._testRecvFromIntoArray�re	r>c��td��}|j�|��\}}|�|t	t
����|dt	t
���}|�|t
��dSr�)r�rr�r�r�r�rk	s     r�testRecvFromIntoBytearrayz&BufferIOTest.testRecvFromIntoBytearray�sq����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�rr�r�r�rk	s     r�testRecvFromIntoMemoryviewz'BufferIOTest.testRecvFromIntoMemoryview�sw����o�o���}�2�2�:�c�?�?�C�C���������S���*�*�*��)�3�s�8�8�)�n������c�"�"�"�"�"r>c�r�td��}|�t|jj|d��dS)Nrmr�)r�r�r}rr�rc	s  r�testRecvFromIntoSmallBufferz(BufferIOTest.testRecvFromIntoSmallBuffer�s2����l�l�����*�d�m�&A�3��M�M�M�M�Mr>c�D�|j�t��dSrEr�rUs r�_testRecvFromIntoSmallBufferz)BufferIOTest._testRecvFromIntoSmallBuffer�r�r>c��t��}|j�|��|j�|d��dSr�)r�rr�rc	s  r�testRecvFromIntoEmptyBufferz(BufferIOTest.testRecvFromIntoEmptyBuffer�s?���k�k���
�#�#�C�(�(�(��
�#�#�C��+�+�+�+�+r>Nr�)r]r^r_rur�r`	rd	rg	�_testRecvIntoBytearrayri	�_testRecvIntoMemoryviewrl	rn	rp	�_testRecvFromIntoBytearrayrr	�_testRecvFromIntoMemoryviewrt	rv	rx	�_testRecvFromIntoEmptyBufferr`r>rr[	r[	Ys��������B�B�B�B�#�#�#�!�!�!�#�#�#�0��#�#�#�1��#�#�#�!�!�!�#�#�#�"8��#�#�#�#9��N�N�N�
!�!�!�,�,�,�
$:� � � r>r[	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	r.ztipc NT)rrr�FileNotFoundError�IsADirectoryErrorr�ro)rr]s  r�isTipcAvailabler�	�s���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�)rr�	r�rqr!r�r�r��TIPC_ADDR_NAMESEQ�
TIPC_STYPE�
TIPC_LOWER�
TIPC_UPPERrr�TIPC_ADDR_NAMEr(r�r�r�r�r�)rVrAr��srvaddr�sendaddrr��recvaddrs       r�testRDMzTIPCTest.testRDM�s'���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_r�	r`r>rr�	r�	�s#������#�#�#�#�#r>r�	c�.�eZdZdd�Zd�Zd�Zd�Zd�ZdS)	�TIPCThreadableTestr�c�|�tj�||���t�|��dSr�r�r�s  rr�zTIPCThreadableTest.__init__�s8����"�"�4�j�"�A�A�A�����%�%�%�%�%r>c�V�tjtjtj��|_|�|jj��|j�tjtjd��tj	tttf}|j�
|��|j���|���|j���\|_|_|�|jj��dSrR)rr�	rArArqr!r�r�r�r�	r�	r�	r�	rrrTr�r�r�r�)rVr�	s  rrWzTIPCThreadableTest.setUp�s����=����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�rr�	rAr�rqr!r�	r�	r�	r(r�	r�r��cliaddr)rVrs  rr�zTIPCThreadableTest.clientSetUp�s���	
�
�3�����=����1C�D�D���������'�'�'��%�z��S�*�z�"9�Q�!>�?�?�?��D�����������x�+�+�-�-����r>c��|j�d��}|�|t��|�|j|j��dSr�)r�r�r�r�r�	r�r�s  rr�zTIPCThreadableTest.testStream�sK���i�n�n�T�"�"������c�"�"�"������t�}�5�5�5�5�5r>c�v�|j�t��|j���dSrEr�rUs rr�zTIPCThreadableTest._testStreamr�r>Nr�rr`r>rr�	r�	�sd������&�&�&�&�
)�
)�
)�
.�
.�
.�6�6�6�
����r>r�	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�r�r�r!r�rr	rVs  r�_testSocketClassz$ContextManagersTest._testSocketClasss���
�]�_�_�	+�����T�\�*�*�*�	+�	+�	+�	+�	+�	+�	+�	+�	+�	+�	+����	+�	+�	+�	+������%�%�%�
�]�_�_�	���J�J�L�L�L�	�	�	�	�	�	�	�	�	�	�	����	�	�	�	������%�%�%�
�]�_�_�	=�����g�t�|�V�<�<�<�	=�	=�	=�	=�	=�	=�	=�	=�	=�	=�	=����	=�	=�	=�	=������%�%�%�%�%s1�;�?�?�3B�B�B�"C:�:C>�C>c���|j���\}}|�|j��|�d��}|�|��dSr��rQr�rqr!r�r	�rVr�rr	s    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�)
rQr�rr�r�r�r	r�r�r��rVr�rGs   r�_testCreateConnectionBasez-ContextManagersTest._testCreateConnectionBases����)�'�'�)�)��
�
%�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��}|�|��dSr�r�	r�	s    r�testCreateConnectionClosez-ContextManagersTest.testCreateConnectionClose#r�	r>c�.�|j���}tj|��5}|���ddd��n#1swxYwY|�|j��|�t|j	d��dSr�	)
rQr�rr�r!r�r�r�rr	r�	s   r�_testCreateConnectionClosez.ContextManagersTest._testCreateConnectionClose)s����)�'�'�)�)��
�
%�g�
.�
.�	�$��J�J�L�L�L�	�	�	�	�	�	�	�	�	�	�	����	�	�	�	������%�%�%����'�4�<��8�8�8�8�8s�A�A�AN)r]r^r_r�	r�	r�	r�	r�	r`r>rr�	r�	s_������&�&�&����&�&�&����9�9�9�9�9r>r�	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�rrc�<�tjtjtjtjz��5}|�|jtj��|�|�����ddd��dS#1swxYwYdSrE)rrPrAr�r�rwr��get_inheritabler�s  r�test_SOCK_CLOEXECz!InheritanceTest.test_SOCK_CLOEXEC2s����]�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)rr�r�	rVs  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!r�r�	)rVrG�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_inheritabler�r�	rVs  r�test_set_inheritablez$InheritanceTest.test_set_inheritableHs����}����
�	<�	<�� � ��&�&�&����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�r�r�	r�F_GETFD�
FD_CLOEXEC�F_SETFD)rVrGrpr�s    r�test_get_inheritable_cloexecz,InheritanceTest.test_get_inheritable_cloexecQs���}����
�		;�		;������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�r�rr�	r�	r�	)rVrGrps   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)rrrqr!r�r�	)rVr*	r�s   r�test_socketpairzInheritanceTest.test_socketpairls����"�$�$���B������!�!�!������!�!�!�����+�+�-�-�u�5�5�5�����+�+�-�-�u�5�5�5�5�5r>)r]r^r_r�r�rrrr*r�	r�	r�	r�	r�rr�	r�	r�	r`r>rr�	r�	1s�������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�	rczSOCK_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�)r�rwrrAr|r�rrr@rr�r�)rVr$�nonblockrHs    r�
checkNonblockz"NonblockConstantTest.checkNonblockwsU���	-����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�rrc�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�)	rrPrArcr�	rdr�rFrG)rVr$�ts   r�test_SOCK_NONBLOCKz'NonblockConstantTest.test_SOCK_NONBLOCK�s����]�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�	rr*r�	r`r>rr�	r�	tsU������-�-�-�-�2$�W�#�A�q�"�-�-�$�$�.�-�$�$�$r>r�	r�r�zneed multiprocessingc�B�eZdZed���Zd�Zd�Zd�Zd�Zd�Z	dS)�TestSocketSharingc�&�|���}|���}tj|��}|���\}}|�|��|���|���dSrE)r�r�	fromsharer�r	r!)r�q�sdata�messager$r�r
s       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�r,s
slapmahfroTr�r>)�multiprocessingr��Processr�	r�rQ�share�pidr�r!r�rr�r�r:r�r�)	rVr�	r�r	rr�	r$�m�receiveds	         r�	testSharezTestSocketSharing.testShare�s+��

�!�#�#���#�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)Nr2r�)rQr�	r@�getpidr�r}rr�	)rVr	s  r�testShareLengthz!TestSocketSharing.testShareLength�sc���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�)r�r|r�rwr�)rV�org�others   r�compareSocketsz TestSocketSharing.compareSockets�s���	
������)�)�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#|���wxYwrE)rQr�	r@r�	rr�	r�	r!)rVr	r$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��dSrE)rrPrkrAr(rr�	r@r�	r�	r�	r!)rV�families�typesrr�	r�r	�shareds        r�	testTypeszTestSocketSharing.testTypess���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_r6r�	r�	r�	r�	r�	r�	r`r>rr�	r�	�s~������
����[��!�!�!�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}|���|_	t|j	��|jksJ�	ddd��dS#1swxYwYdS)Nc3�TK�||ksJ�||kr|V�||z}||k�|r|V�dSdSrEr`)�total�steps  r�chunksz0SendfileUsingSendTest.setUpClass.<locals>.chunks%sZ�����D�=�=�=�=��$�,�,��
�
�
���
���$�,�,��
�������
�
r>r>c�n�g|]2}tjtj�������3Sr`)�random�choice�string�
ascii_lettersr9r1s  rr�z4SendfileUsingSendTest.setUpClass.<locals>.<listcomp>-sA��7�7�7��!�-��(<�=�=�D�D�F�F�7�7�7r>r+r)r�r8�BUFSIZErrrL	�FILESIZEr8r��FILEDATAr�)rr�	�chunkr�csizes     r�
setUpClassz SendfileUsingSendTest.setUpClass#s���	�	�	����7�7�#(���#5�#5�7�7�7�8�8��
�)�"�D�
)�
)�	�Q�����c�k�:�:�
�
����������
�	�	�	�	�	�	�	�	�	�	�	����	�	�	�	��)�"�D�
)�
)�	5�Q��6�6�8�8�C�L��s�|�$�$���4�4�4�4�4�	5�	5�	5�	5�	5�	5�	5�	5�	5�	5�	5�	5����	5�	5�	5�	5�	5�	5s$�/B�B�B�09C7�7C;�>C;c�B�tjtj��dSrE)rrFrL	)rs r�
tearDownClassz#SendfileUsingSendTest.tearDownClass6s�����)�*�*�*�*�*r>c���|j�tj��|j���\}}|�|j��|�|j��|SrE)rQr�rr!r��TIMEOUTrqr!rs   r�accept_connz!SendfileUsingSendTest.accept_conn:s_���	���W�1�2�2�2��Y�%�%�'�'�
��d������%�%�%�����
�#�#�#��r>c��g}	|�|j��}|sn|�|���3d�|��S)NTr>)r�r�	r:r�)rVr�r�	r�	s    r�	recv_datazSendfileUsingSendTest.recv_dataAsU����	#��I�I�d�l�+�+�E��
���O�O�E�"�"�"�		#�
�x�x��!�!�!r>c�"�t|d��S)N�_sendfile_use_send�r�rVs  r�meth_from_sockz$SendfileUsingSendTest.meth_from_sockJs���t�1�2�2�2r>c���|j���}ttjd��}tj|��5}|5}|�|��}||��}|�||j	��|�|�
��|j	��ddd��n#1swxYwYddd��dS#1swxYwYdS)Nr�rQr�rrrL	rr�r
r�r�	�tell�rVr��filerG�meth�sents      r�_testRegularFilez&SendfileUsingSendTest._testRegularFileQsH���)�'�'�)�)���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��dSrE�r�	r
r�r�r�	r�	�rVr�r	s   r�testRegularFilez%SendfileUsingSendTest.testRegularFileZ�`�����!�!���~�~�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#1swxYwYdSrE)rQr��io�BytesIOr�	rr�rtr�r�	r
r�r~r)rVr�r	
rGr
s     r�_testNonRegularFilez)SendfileUsingSendTest._testNonRegularFilebs����)�'�'�)�)���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��dSrEr
r
s   r�testNonRegularFilez(SendfileUsingSendTest.testNonRegularFilelr
r>c�P�|j���}tjdz}t	|d��5|�tj|��ddd��n#1swxYwYt	|d��}tj|��5}|5}|�	|��}||��}|�
|d��|�
|���d��ddd��n#1swxYwYddd��dS#1swxYwYdS)N�2r+rr)rQr�rrL	rrqrFrr�r
r�r
)rVr��filenamer	
rGr

r
s       r�_testEmptyFileSendz(SendfileUsingSendTest._testEmptyFileSendts����)�'�'�)�)���#�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
r�r
s   r�testEmptyFileSendz'SendfileUsingSendTest.testEmptyFileSend�s@�����!�!���~�~�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._testOffset�sT���)�'�'�)�)���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.testOffset�sn�����!�!���~�~�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��rQr�rrrL	rr�rr�r
r�r
�rVr�r	
rGr�r

r
s       r�
_testCountz SendfileUsingSendTest._testCount�sm���)�'�'�)�)���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
r�r�r�	�rVr�r�r	s    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._testCountSmall�sm���)�'�'�)�)���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|���dSrRr,
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�)
rQr�rrrL	rr�r
r�r
r(
s       r�_testCountWithOffsetz*SendfileUsingSendTest._testCountWithOffset�s[���)�'�'�)�)���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)Nr4
r5
r,
r-
s    r�testCountWithOffsetz)SendfileUsingSendTest.testCountWithOffset�sp�������!�!���~�~�d�#�#������T���E�*�*�*�����t�}�T�%��*�_�=�>�>�>�>�>r>c���|j���}ttjd��}tj|��5}|5}|�d��|�|��}|�	t||��|�	t|j|��ddd��n#1swxYwYddd��dS#1swxYwYdS)NrF)rQr�rrrL	rr�rdr
r�r}rt�rVr�r	
rGr

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�	r�r��rVr�s  r�testNonBlockingz%SendfileUsingSendTest.testNonBlocking�sH�����!�!���9�9�T�?�?�	>��I�I�<�=�=�=�=�=�	>�	>r>c��|j���}ttjd��}tj|tj���}|5|5|�	|��}||��}|�
||j��ddd��n#1swxYwYddd��dS#1swxYwYdS)Nrr�)rQr�rrrL	rr�rr�r
r�r�	r
s      r�_testWithTimeoutz&SendfileUsingSendTest._testWithTimeout�sE���)�'�'�)�)���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��dSrEr
r
s   r�testWithTimeoutz%SendfileUsingSendTest.testWithTimeout�r
r>c��|j���}ttjd��5}tj|��5}|�d��|�|��}|�	t||��ddd��n#1swxYwYddd��dS#1swxYwYdS)Nrg{�G�z�?)rQr�rrrL	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�	r�r�r�r=
s  r�testWithTimeoutTriggeredSendz2SendfileUsingSendTest.testWithTimeoutTriggeredSend�s6�����!�!���	�	�%�����
�1�
�
�
�
�
r>c��dSrEr`rUs r�_test_errorsz"SendfileUsingSendTest._test_errorsrr>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�rAr	r.zbinary modezpositive integerr
r&
r�rr2)	rrrL	rr(r
r5r}r�)rVr	
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_rur�	r�	r�	rr�r�	r6r�	r�	r�	r
r
r
r
r
r
r
r
r!
r#
r)
r.
r0
r2
r6
r8
r;
r>
r@
rB
rD
rF
rH
rJ
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�	rtz%os.sendfile() required for this test.c��eZdZdZd�ZdS)�SendfileUsingSendfileTestzB
    Test the sendfile() implementation of socket.sendfile().
    c�"�t|d��S)Nrr
rVs  rr
z(SendfileUsingSendfileTest.meth_from_sock(s���t�5�6�6�6r>N)r]r^r_rur
r`r>rrL
rL
"s-��������7�7�7�7�7r>rL
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�)	rr6r1rrr�	r!r��SkipTestr�)rV�typr�rGr�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)�fromhexrS
r�r	r�r�r�r�MSG_MORE)rVr��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���d}d}t�d��}|�dd��5}|�tjtj|��|���\}}|5|�|��|�	|�
d��|��ddd��n#1swxYwYddd��dS#1swxYwYdS)NsPython loves AF_ALGswhat do ya want for nothing?�(193dbb43c6297b47ea6277ec0ce67119a3f3aa66rV
z
hmac(sha1)r�)r)r[
rS
r�r�SOL_ALG�ALG_SET_KEYr�r	r�r�)rV�keyr	r�r]
r^
r�s       r�test_hmac_sha1z#LinuxKernelCryptoAPI.test_hmac_sha1NsN��%��.���=�=�!K�L�L��
�_�_�V�\�
2�
2�	9�d��O�O�F�N�F�,>��D�D�D��K�K�M�M�E�B���
9�
9��
�
�4� � � �� � �������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�:?C�9C�C		�	C�C		�
C�C!�$C!r�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))r^
�ivr�)r^
rk
r�)r)r[
r�rS
r�rrb
rc
r��
sendmsg_afalg�ALG_OP_ENCRYPTr\
r	r�r��ALG_OP_DECRYPT)
rVrd
rk
r��
ciphertext�msglenr]
r^
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-rc
�2
�tjd��}|�!|dkr|dkr|�d��t�d��}t�d��}t�d��}t�d��}t�d	��}t�d
��}t|��}t|��}	|�dd��5}
|
�tj	tj
|��|
�tj	tjd|��|
���\}}|5|�
tj||	tj�
��|�|tj��|�|��|�|	t|��z|z��}
|�||
|	|���|�||
|d���ddd��n#1swxYwY|
���\}}|5||z}|�
|gtj||	���|�|	t|��z|z��}
|�||
|	|���|�||
|d���ddd��n#1swxYwYt'jd��j}|
���\}}|5||z}|�|gtj	tj|tj��gtj	tj|t|����|zgtj	tj||	��gf��|�t|��|z��}
|�||
|	|���|�||
|d���ddd��n#1swxYwY|
���\}}|5||z|z}|�
|gtj||	���|�t|��|z
��}
|�||
|	d���ddd��n#1swxYwYddd��dS#1swxYwYdS)N�Linux)rrH)rr zupstream Linux kernel issue� c939cc13397c1d37de6ae0e1cb7c423c�b3d8cc017cbb89b39e0f67e2� c3b3c41f113a31b73d9a5cd432103069� 24825602bd12a984e0092d3e448eda5f� 93fe7d9e9bfd10348a5606e5cafa7354� 0032a1dc85f1c9786925a2e71d8272dd�aeadzgcm(aes))r^
rk
�assoclenr�)r^
rk
r
r)r�_get_kernel_versionrtr)r[
r�rS
r�rrb
rc
�ALG_SET_AEAD_AUTHSIZEr�rl
rm
r\
r	r�r�r�Structr�r��
ALG_SET_OP�
ALG_SET_IV�ALG_SET_AEAD_ASSOCLENrn
)rV�kernel_versionrd
rk
�plain�assoc�expected_ct�expected_tag�taglenr
r]
r^
r��resr��pack_uint32s                r�test_aead_aes_gcmz&LinuxKernelCryptoAPI.test_aead_aes_gcm�s��� �4�W�=�=���%���(�(�^�g�-E�-E��
�
�;�<�<�<��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��A1T�9C	I�T�I	�T�I	�T�2BL�T�L	�T�L	�5T�C=Q�T�Q	�T�Q	�T�8A0S4�(T�4S8	�8T�;S8	�<T�T�Tc��|�dd��5}tjd��}|�tjtj|��|���\}}|5|�d��}|�	t|��d��ddd��n#1swxYwYddd��dS#1swxYwYdS)N�rng�drbg_pr_sha256rG)rS
r@�urandomr�rrb
rc
r�r�r�r�)rVr]
�
extra_seedr^
r��rns      r�test_drbg_pr_sha256z(LinuxKernelCryptoAPI.test_drbg_pr_sha256�s9���_�_�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)r^
r
)r^
r
r2)rr6r1r�r�rl
rm
rVs  r�test_sendmsg_afalg_argsz,LinuxKernelCryptoAPI.test_sendmsg_afalg_args�sD���}�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�)rw�?nnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnz
name too long)rw�@nnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnn)
rr6r1rqr!r�r�	rrr5r}rVs  r�test_length_restrictionz,LinuxKernelCryptoAPI.test_length_restriction�s7���}�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_rS
rr*r_
re
ru
r�
r�
r�
r�
r`r>rrO
rO
,s������	�	�	�$�W�#�A�q�)�)�9�9�*�)�9�"9�9�9�$�W�#�A�q�)�)�&4�&4�*�)�&4�P$�W�#�A�q�)�)�B8�B8�*�)�B8�H$�W�#�A�q�)�)�.�.�*�)�.�J�J�J�$*�*�*�*�*r>rO
r�r�c��eZdZd�ZdS)�TestMacOSTCPFlagsc�D�|�tj��dSrE)r�r�
TCP_KEEPALIVErUs r�test_tcp_keepalivez$TestMacOSTCPFlags.test_tcp_keepalive�s������,�-�-�-�-�-r>N)r]r^r_r�
r`r>rr�
r�
�s#������.�.�.�.�.r>r�
�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)ro)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$rVs  �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)rCrr�)rV�provided�unknowns`  r�test_new_tcp_flagsz(TestMSWindowsTCPFlags.test_new_tcp_flagssc���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_serverr�r�r�rk�rVrSrGs   r�test_addresszCreateServerTest.test_addresss����-�/�/��
�
!�;��"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�
r�r�rPrwrArr�rk)rVrGr$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�
r�r�)rVrGrs   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�r�r�r�c���tjdtj���5}|�tjtj��sJ�	ddd��dS#1swxYwYdS)Nr�
r�)rr�
rkr�r�r�rVs  r�test_ipv6_only_defaultz'CreateServerTest.test_ipv6_only_default9s���
�
!�*�V�_�
E�
E�
E�	L���?�?�6�#6��8J�K�K�K�K�K�K�	L�	L�	L�	L�	L�	L�	L�	L�	L�	L�	L�	L����	L�	L�	L�	L�	L�	Ls�-A�A �#A �dualstack_ipv6 not supportedc���tjdtjd���5}|�|jtj��ddd��dS#1swxYwYdS)Nr�
T�r��dualstack_ipv6)rr�
rkr�r�rVs  r�test_dualstack_ipv6_familyz+CreateServerTest.test_dualstack_ipv6_familyAs����
!�*�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�rHr�r	)rGr�r�r�r�rVs    ��r�runz3CreateServerFunctionalTest.echo_server.<locals>.runNsa����
&�
&��+�+�-�-���a��&�&��J�J�t�|�,�,�,��)�)�D�/�/�C����	&�&�&�&�&�&�
&�
&�
&�
&�
&�
&�
&�
&��L�L��%�%�%�&�&�&�&�&�&�&�&�&�&�&����&�&�&�&�
&�
&�
&�
&�
&�
&�
&�
&�
&�
&�
&�
&����
&�
&�
&�
&�
&�
&s@�B"�3B
�B"�)B
�>B"�
B	�B"�B	�B"�"B&�)B&r�	)	r�r�r�rHr�r�rqr�r�)rVrGr�
r�r�s`   @r�echo_serverz&CreateServerFunctionalTest.echo_serverMs�����	&�	&�	&�	&�	&�	&���!�!�������%�%�%��!��D�8�<�<�<�������������T�\�2�2�2�
�	�	�����r>c�<�tj|���5}|�|j��|�|��|�d��|�|�d��d��ddd��dS#1swxYwYdS)Nr�r�r�)rr�rHr�r	r�r�)rVrr�rGs    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�
rPr�
s   r�	test_tcp4z$CreateServerFunctionalTest.test_tcp4fs����-�/�/��
�
!�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�
rkr�
r�
r�
s   r�	test_tcp6z$CreateServerFunctionalTest.test_tcp6ls����-�/�/��
�
!�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�
rkr�
r�
rPr�
s   r�test_dual_stack_client_v4z4CreateServerFunctionalTest.test_dual_stack_client_v4vs����-�/�/��
�
!�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_rr�rHr�
r�
r�
r�r�rr�r�
r�rr�
r�
r�
r`r>rr�
r�
Js=�������&�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|���.dSrE�r@r!)�pipesrs�fd2s   r�close_pipesz8SendRecvFdsTests.testSendAndRecvFds.<locals>.close_pipes�s;��!�
�
���S����
�
�
����
�
�
�
�
�
r>c�8�|D]}tj|���dSrEr�
)r;rps  r�	close_fdsz6SendRecvFdsTests.testSendAndRecvFds.<locals>.close_fds�s*���
�
���������
�
r>c�4�g|]}tj����Sr`)r@�pipe)r�r�s  rr�z7SendRecvFdsTests.testSendAndRecvFds.<locals>.<listcomp>�s��.�.�.�q�����.�.�.r>rzc��g|]\}}|��Sr`r`)r��rfd�wfds   rr�z7SendRecvFdsTests.testSendAndRecvFds.<locals>.<listcomp>�s��)�)�)�x�s�C�s�)�)�)r>r�rr�)r8rqrrrLrAr�
r�r�
r�r�r>r@r8r�r9r�)rVr�
r�
r�
r;r�r�r��fds2r�rr-r�
r�
r	s               r�testSendAndRecvFdsz#SendRecvFdsTests.testSendAndRecvFds�s���	�	�	�
	�	�	�
/�.�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�dSrE)r�threading_setupr��addModuleCleanup�threading_cleanup)�thread_infos r�setUpModuler�
�s3��"�2�4�4�K���.�@�O�;�O�O�O�O�O�Or>�__main__)�r��testr�test.supportrrrr"r
r�rr�r=r�r	r�r@r@rnrr��weakrefrrr�r9rr�	r�r�	�_threadr�r�r�	r�r�requires_working_socketr�r9r�r�r��systemr�release�WSLr�rr%r*r.r2r7r:r=rCr�rJ�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_BLUETOOTHr*rPr�rNrbrfrir|r�r�r�r�r�r�r�r�r�rrrr!r)r5r;rJrPrXr\r_rbrfrirmr�r�r�r�r�rr8rHrgrpr�r�r�r�rrr!rIrPrUrYr`rfrir�r�r�r�rrr$r5r�r)r-r0r2r4r�r9r<r>r@rCrErGrIrKrMrPrRrTrVrXrZr\r^r`rbrdrfrorrrtrvrxrzr|r~r�r�r�r�r�r�r,rwr�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�	rL
rO
r�
ror�
r�
r�
r�
r�
r]�mainr`r>r�<module>rsq)������������"�"�"�"�"�"�&�&�&�&�&�&�)�)�)�)�)�)�����	�	�	�	�����
�
�
�
�
�
�
�
�����������������
�
�
�
�	�	�	�	�������������������
�
�
�
�����
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
���������������������O�O�O�������L�L�L�L�������E�E�E����� ���t�,�,�,�,����)�0�0��9�9�����	��h�o���5� ���"2�(�"2�"4�"4�4����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�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�!�^�D�F�F�#�#�#�#�#�H�$5�~�#�#�F�F�3�3�>�=�.�-�#�J3�3�3�3�3�/�3�3�3�B,�,�,�,�,�X�&��,�,�,�H�����X�&����.�����~����,�,�,�,�,�n�n�,�,�,�<!!�!!�!!�!!�!!�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�>jG�jG�jG�jG�jG��*�jG�jG�jG�Z%���_�&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�3F�3F�3F�3F�3F�!7�!9�;�3F�3F�D�D�&�%�3F�l�����)����( #� #� #� #� #�.� #� #� #�Fg
�g
�g
�g
�g
�~�g
�g
�g
�T]�]�]�]�]�/�]�]�]�@`
�`
�`
�`
�`
�1�`
�`
�`
�FiG�iG�iG�iG�iG�(?�iG�iG�iG�X�����*A����
�����+B����
�����)@���������*A���������.E����"�"�"�"�"�F�"�"�"������)�<����P5�P5�P5�P5�P5�� 1�P5�P5�P5�fF4�F4�F4�F4�F4�m�^�F4�F4�F4�R>�>�>�>�>�]�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�J*�J*�J*�J*�J*�8�,�J*�J*�9�8�J*�Z���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"�;D�D
�	D