Sindbad~EG File Manager

Current Path : /proc/2568807/root/usr/local/lib/python3.12/test/__pycache__/
Upload File :
Current File : //proc/2568807/root/usr/local/lib/python3.12/test/__pycache__/test_socket.cpython-312.pyc

�

'Μg�
��%�ddlZddlmZddlmZddlmZddlmZddlZddl	Z	ddl
Z
ddlZddlZddl
Z
ddlZddlZddlZddlZddlZddlZddlZddlZddlZddlZddlZddlZddlZddlZddlZddlZddlZddlZddl m!Z!	ddl"Z"	ddl$Z$ejJd�	�ejLZ&d
jOd�Z(dZ)d
Z*ejV�dk(Z,dejZ�vZ.	ddl/Z/d�Z0d�Z1d�Z2d�Z3d�Z4d�Z5d�Z6d�Z7d�Z8d�Z9e
jtd��Z;e1�Z<e2�Z=e3�Z>e4�Z?e5�Z@e6�ZAe7�ZBeCed�ZDe8�ZEe9�ZFe	jd�j�ZHGd�dej��ZJGd�d ej��ZKGd!�d"eK�ZLGd#�d$ej��ZMGd%�d&ej��ZNGd'�d(�ZOGd)�d*eJeO�ZPGd+�d,eKeO�ZQej�eDd-�Gd.�d/eLeO��ZSGd0�d1eMeO�ZTGd2�d3eNeO�ZUej�e$dud4�ej�e.d5�ej�eBd6�Gd7�d8ej�eO����ZWGd9�d:eP�ZXGd;�d<ej�eO�ZYGd=�d>ej��ZZGd?�d@eZ�Z[GdA�dBeZeO�Z\GdC�dDe[e\�Z]GdE�dFeZ�Z^GdG�dHe^�Z_GdI�dJeZ�Z`GdK�dLe`�ZaGdM�dNe`�ZbGdO�dPe`�ZcGdQ�dRe`�ZdGdS�dTe`�ZeGdU�dVee�ZfGdW�dXee�ZgdY�ZhdZ�Zid[�ZjGd\�d]ej��Zkej�e<d^�Gd_�d`ej���Zlej�e<d^�Gda�dbeT��Zmej�e=dc�Gdd�deej���Znej�e>df�Gdg�dhej���Zoej�e?di�Gdj�dkej���Zpej�e?di�Gdl�dmeU��Zqej�eAdn�Gdo�dpej���Zrej�e$dud4�ej�eBd6�Gdq�drej����Zsej�eEds�Gdt�duej���Ztej�eFdv�Gdw�dxej���ZuGdy�dzeX�ZvGd{�d|eQ�Zwej�eDd-�Gd}�d~eS��ZxGd�d��ZyGd��d�ey�ZzGd��d�ey�Z{Gd��d�ey�Z|Gd��d�ey�Z}Gd��d�ey�Z~Gd��d�ey�ZGd��d�e�Z�Gd��d�e��Z�Gd��d�e��Z�Gd��d�ey�Z�Gd��d�e��Z�Gd��d�e��Z�Gd��d�eze��Z�Gd��d�ej��Z�Gd��d�e�Z�Gd��d�e�Z�Gd��d�e{e}e\eb�Z�eiej0d��Gd��d�e�e���Z�eiej0d��Gd��d�e�e���Z�eiej0d��Gd��d�e�e���Z�Gd��d�e{e}e\ef�Z�eiej0d��ej�e�jd��ejd�d��Gd��d�e�e�����Z�eiej0d��ej�e�jd��ejd�d��Gd��d�e�e�����Z�eiej0d��ej�e�jd��ejd�d��Gd��d�e�e�����Z�eiej0d��ej�e�jd��eied��ejd�d��Gd��d�e�e������Z�eiej0d��ej�e�jd��eied��ejd�d��Gd��d�eze�e������Z�ej�eDd-�Gd��d�e{e}e\ec��Z�ej�eDd-�eiej0d��Gd��d�e�e����Z�ej�eDd-�eiej0d��Gd��d�e�e����Z�ej�eDd-�eiej0d��Gd„d�e�e����Z�ej�eDd-�GdĄd�e{e}e\eg��Z�eiej0d��ej�e�jd��ej�eDd-�ejd�d��GdƄd�e�e������Z�eiej0d��ej�e�jd��ej�eDd-�ejd�d��GdȄd�e�e������Z�eiej0d��ej�e�jd��ej�eDd-�ejd�d��Gdʄd�e�e������Z�eiej0d��ej�e�jd��ej�eDd-�eied��ejd�d��Gd̄d�e�e�������Z�eiej0d��ej�e�jd��ej�eDd-�eied��ejd�d��Gd΄d�eze�e�������Z�GdЄd�e~e]ea�Z�eiej0d��Gd҄d�e�e���Z�eiej0d��GdԄd�e�e�e���Z�eiej0d��Gdքd�e�e�e���Z�Gd؄d�e|e~e]ed�Z�eiej0d��ej�e,dګejd�d�dݫGdބd�e�e�����Z�eiej0d��ej�e,dګejd�d�dݫGd�d�e�e�e�����Z�eiej0d��ej�e,dګejd�d�dݫGd�d�e�e�e�����Z�Gd�d�e~e]e_�Z�eiej0d��eied�Gd�d�e�e����Z�eiej0d��eied�Gd�d�e�e�e����Z�eiej0d��eied�Gd�d�e�e�e����Z�eiej0d�d��eied�d�d�Gd�d�e�e����Z�eiej0d�d��eied�d�d�Gd�d�eze�e����Z�Gd�d�Z�eied��ej�eCed��xs	eCed��d��Gd��d�e�eb���Z�eied��ej�eCed��xs	eCed��d��Gd��d�e�e[ea���Z�Gd��d�eP�Z�Gd���deY�Z�G�d��deY�Z�G�d��deP�Z�G�d��deX�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��Z�G�d��de�ev�Z�G�d��dej��Z�G�d��deJeO�Z�G�d��deJeO�Z�G�d��deJ�Z�G�d��d eK�Z�ej�eDd-�G�d!��d"eL��Z�G�d#��d$ej��Z�ej�ej$�d%k(�d&�G�d'��d(ej���Z�ej�eCed��d)�G�d*��d+ej���Z�G�d,��d-eX�Zǐd.ZȐd/Zɐd0Zʐd1�Z�ej�e˫�d2�G�d3��d4ej���Z�ej�e˫�d2�G�d5��d6ej�eO��Z�G�d7��d8eP�Z�G�d9��d:ej��Z�ej�eCe�d;��d<�G�d=��d>ej���Z�ej�e�j��d?k(�d@�ej�e"�dA�G�dB��dCeJ���Z�G�dD��dEeP�Z�ej�eCe�dF��dG�G�dH��dIeӫ�Z�ej�e@�dJ�G�dK��dLej���Z�ej�ej$�dMk(�dN�G�dO��dPej���Z�ej�ej$�j��dQ��dR�G�dS��dTej���Z�G�dU��dVej��Z�G�dW��dXej��Z�eie�dY�eie�dZ�eied�G�d[��d\ej�����Zېd]�Z�eݐd^k(re�j��yy#e#$rdZ"Y���wxYw#e#$rdZ$Y���wxYw#e#$rdZ/Y���wxYw(_�N)�support)�	os_helper)�
socket_helper)�threading_helper)�proxyFT)�moduleuMichael Gilfix was hereሴ
�utf-8����AIXzmicrosoft-standard-WSLc��t�yttd�sy	tdd�5}tj|tj
d�}ddd�t
jd�dS#1swY�"xYw#t$rYywxYw)N�IOCTL_VM_SOCKETS_GET_LOCAL_CIDz
/dev/vsock�rbz    �Ir)	�fcntl�hasattr�socket�open�ioctlr�struct�unpack�OSError)�f�rs  �-/usr/local/lib/python3.12/test/test_socket.py�get_cidr9sx���}���6�;�<��(�
�,��
%�����A�v�D�D�f�M�A�&�
�}�}�S�!�$�Q�'�'�&�
%������s(�A9�&A-�A9�-A6�2A9�9	B�Bc���	tjtjtjtj�}|j	�y#t
tf$rYywxYw)z5Check whether CAN sockets are supported on this host.FT)r�PF_CAN�SOCK_RAW�CAN_RAW�close�AttributeErrorr��ss r�_have_socket_canr%FsL����M�M�&�-�-����&�.�.�I��	
���	���	
�G�$������AA�A&�%A&c���	tjtjtjtj�}|j	�y#t
tf$rYywxYw)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*P�P����M�M�&�-�-��):�):�F�<L�<L�M��	
���	���	
�G�$����r&c���	tjtjtjtj�}|j	�y#t
tf$rYywxYw)z;Check whether CAN J1939 sockets are supported on this host.FT)rrr(�	CAN_J1939r!r"rr#s r�_have_socket_can_j1939r.Zr+r&c��	tjtjtjd�}|j�y#tt
f$rYywxYw)z5Check whether RDS sockets are supported on this host.rFT)r�PF_RDS�SOCK_SEQPACKETr!r"rr#s r�_have_socket_rdsr2d�J����M�M�&�-�-��)>�)>��B��	
���	���	
�G�$������3A�A�Ac��	tjtjtjd�}|j�y#tt
f$rYywxYw)z8Check whether AF_ALG sockets are supported on this host.rFT)r�AF_ALGr1r!r"rr#s r�_have_socket_algr7nr3r4c��	tjtjtjd�}|j�y#tt
f$rYywxYw)z<Check whether AF_QIPCRTR sockets are supported on this host.rFT)r�
AF_QIPCRTRr(r!r"rr#s r�_have_socket_qipcrtrr:xsL����M�M�&�+�+�V�->�->��B��	
���	���	
�G�$����r4c��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�}|j	�y#t
tf$rYywxYw)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�sT���
�M�M�&�-�-�v�/A�/A�6�CX�CX�Y��	
���	���	
�G�$����r&c���	tjtjtjtj�}|j	�y#t
tf$rYywxYw)z;Check whether AF_HYPERV sockets are supported on this host.FT)r�	AF_HYPERVrA�HV_PROTOCOL_RAWr!r"rr#s r�_have_socket_hypervrG�sR����M�M�&�*�*�F�,>�,>��@V�@V�W��	
���	���	
�G�$����r&c#��K�tj�}	tj|�d��tj|�y#tj|�wxYw�w�N)r�getdefaulttimeout�setdefaulttimeout)�timeout�old_timeouts  r�socket_setdefaulttimeoutrN�sF�����*�*�,�K�.�� � ��)�
�� � ��-��� � ��-�s�A!�A�A!�A�A!�IPPROTO_UDPLITE�ic��eZdZd�Zd�Zy)�
SocketTCPTestc���tjtjtj�|_t	j
|j�|_|jj�yrI)r�AF_INETrA�servr�	bind_port�port�listen��selfs r�setUpzSocketTCPTest.setUp�sD���M�M�&�.�.�&�2D�2D�E��	�!�+�+�D�I�I�6��	��	�	���r>c�F�|jj�d|_yrI�rUr!rYs r�tearDownzSocketTCPTest.tearDown�����	�	������	r>N��__name__�
__module__�__qualname__r[r^�r>rrRrR�s���
r>rRc��eZdZd�Zd�Zy)�
SocketUDPTestc��tjtjtj�|_t	j
|j�|_yrI)rrTr(rUrrVrWrYs rr[zSocketUDPTest.setUp�s4���M�M�&�.�.�&�2C�2C�D��	�!�+�+�D�I�I�6��	r>c�F�|jj�d|_yrIr]rYs rr^zSocketUDPTest.tearDown�r_r>Nr`rdr>rrfrf�s��7�r>rfc��eZdZd�Zy)�SocketUDPLITETestc���tjtjtjtj�|_tj|j�|_yrI)rrTr(rOrUrrVrWrYs rr[zSocketUDPLITETest.setUp�s<���M�M�&�.�.�&�2C�2C�V�E[�E[�\��	�!�+�+�D�I�I�6��	r>N)rarbrcr[rdr>rrjrj�s��7r>rjc��eZdZdZdZdZ	dZeje�Z		dZ
e
deje
�dzzz
Z
d�Zy	)
�
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��tjtjtjtj�|_|j|jj�	|jj|jf�y#t$r!|jd|jz�YywxYw�N�%network interface `%s` does not exist)rrrr r$�
addCleanupr!�bind�	interfacer�skipTestrYs rr[zSocketCANTest.setUps|�����v�}�}�f�o�o�v�~�~�N�����������%�	+��F�F�K�K����)�*���	+��M�M�A��>�>�*�
+�	+�s�-&B�'B>�=B>N)rarbrc�__doc__rw�bufsize�
can_frame_fmtr�calcsize�can_frame_size�bcm_cmd_msg_fmtr[rdr>rrmrm�s_����I��G���M�$�V�_�_�]�3�N��  �O��s�o�f�o�o�o�>��B�C�C�O�+r>rmc��eZdZdZdZd�Zy)�
SocketRDSTestz\To be able to run this test, the `rds` kernel module must be loaded:
    # modprobe rds
    � c�H�tjtjtjd�|_|j	|jj
�	t
j|j�|_y#t$r|jd�YywxYw)Nrzunable to bind RDS socket)rr0r1rUrur!rrVrWrrxrYs rr[zSocketRDSTest.setUpsk���M�M�&�-�-��1F�1F��J��	�����	�	���(�	7�%�/�/��	�	�:�D�I���	7��M�M�5�6�	7�s�$B�B!� B!N)rarbrcryrzr[rdr>rr�r�s����G�7r>r�c�4�eZdZdZd�Zd�Zd�Zd�Zd�Zd�Z	y)	�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�H�|j|_|j|_yrI)r[�_ThreadableTest__setUp�_setUprYs r�__init__zThreadableTest.__init__Fs���z�z����[�[��
r>c�8�|jj�y)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�setrYs r�serverExplicitReadyz"ThreadableTest.serverExplicitReadyKs��
	
�����r>c�:���jtj��tj��_tj��_tj��_tjd��_d�_
�fd�}�j|��j�}|jd�}||dzd}t�d|z�}tj �j"|f��_	�j'�	�j
j)��jj+��j�jj*�y#d�_
�xYw#�j
j)�wxYw)Nr
Fc�n���jj�r�jj��yrI)�queue�qsize�getrYs�r�raise_queued_exceptionz5ThreadableTest._setUp.<locals>.raise_queued_exception[s)����z�z���!��j�j�n�n�&�&�"r>�.�_T)�enterContextr�wait_threads_exit�	threading�Eventr��client_ready�doner��Queue�server_crashedru�id�rfind�getattr�thread�start_new_thread�	clientRun�
client_threadr�r��wait)rZr��
methodnamerP�test_methods`    rr�zThreadableTest._setUpRs;������*�<�<�>�?�%�O�O�-���%�O�O�-����O�O�%��	��[�[��^��
�#���	'�	
���.�/��W�W�Y�
����S�!����!���%�
��d�C�*�$4�5��#�4�4��N�N�[�N�,���	$��L�L�N�

���!�!�#������ �����	�	���'��
	�"&�D�������!�!�#�s�E1�1
E;�;E>�>Fc��|jj�	|j�	|jj�|jr|j
�yt|d�std��	|�|j
�y#t$rO}|jj|�|j
�Yd}~|jj�yd}~wwxYw#|jj�wxYw#t$r%}|jj|�Yd}~��d}~wwxYw#|j
�wxYw)N�__call__z%test_func must be a callable function)r�r��clientSetUp�
BaseExceptionr��put�clientTearDownr�r�r�r�	TypeError)rZ�	test_func�es   rr�zThreadableTest.clientRunrs
������� �	$�����
���!�!�#�������!���y�*�-��C�D�D�	"��K�
���!��!�	��J�J�N�N�1�����!�����!�!�#��	��

���!�!�#���	��J�J�N�N�1����	��
���!�sS�B�<D�	C,�+C'�C/�'C,�,C/�/D�	D<�D7�2D?�7D<�<D?�?Ec��td��)Nz clientSetUp must be implemented.)�NotImplementedErrorrYs rr�zThreadableTest.clientSetUp�s��!�"D�E�Er>c�`�|jj�tj�yrI)r�r�r��exitrYs rr�zThreadableTest.clientTearDown�s���	�	�
�
�����
r>N)
rarbrcryr�r�r�r�r�r�rdr>rr�r� s(��#�J!�
 �(�@"�,F�r>r�c� �eZdZdd�Zd�Zd�Zy)�ThreadedTCPSocketTestc�\�tj||��tj|�y�N)�
methodName�rRr�r��rZr�s  rr�zThreadedTCPSocketTest.__init__��#�����t�
��;�����%r>c�r�tjtjtj�|_yrI)rrTrA�clirYs rr�z!ThreadedTCPSocketTest.clientSetUp�s���=�=�����1C�1C�D��r>c�p�|jj�d|_tj|�yrI�r�r!r�r�rYs rr�z$ThreadedTCPSocketTest.clientTearDown��%������������%�%�d�+r>N��runTest�rarbrcr�r�r�rdr>rr�r��s��&�E�,r>r�c� �eZdZdd�Zd�Zd�Zy)�ThreadedUDPSocketTestc�\�tj||��tj|�yr�)rfr�r�r�s  rr�zThreadedUDPSocketTest.__init__�r�r>c�r�tjtjtj�|_yrI)rrTr(r�rYs rr�z!ThreadedUDPSocketTest.clientSetUp�s���=�=�����1B�1B�C��r>c�p�|jj�d|_tj|�yrIr�rYs rr�z$ThreadedUDPSocketTest.clientTearDown�r�r>Nr�r�rdr>rr�r��s��&�D�,r>r�z'UDPLITE sockets required for this test.c� �eZdZdd�Zd�Zd�Zy)�ThreadedUDPLITESocketTestc�\�tj||��tj|�yr�)rjr�r�r�s  rr�z"ThreadedUDPLITESocketTest.__init__�s#���"�"�4�J�"�?�����%r>c��tjtjtjtj�|_yrI)rrTr(rOr�rYs rr�z%ThreadedUDPLITESocketTest.clientSetUp�s&���=�=�����1B�1B�F�DZ�DZ�[��r>c�p�|jj�d|_tj|�yrIr�rYs rr�z(ThreadedUDPLITESocketTest.clientTearDown�r�r>Nr�r�rdr>rr�r��s��&�\�,r>r�c� �eZdZdd�Zd�Zd�Zy)�ThreadedCANSocketTestc�\�tj||��tj|�yr�)rmr�r�r�s  rr�zThreadedCANSocketTest.__init__�r�r>c��tjtjtjtj�|_	|jj|jf�y#t$rYywxYwrI)rrrr r�rvrwrrYs rr�z!ThreadedCANSocketTest.clientSetUp�sR���=�=����������P���	��H�H�M�M�4�>�>�+�,���	�
�	�s�&A/�/	A;�:A;c�p�|jj�d|_tj|�yrIr�rYs rr�z$ThreadedCANSocketTest.clientTearDown�r�r>Nr�r�rdr>rr�r��s��&��,r>r�c� �eZdZdd�Zd�Zd�Zy)�ThreadedRDSSocketTestc�\�tj||��tj|�yr�)r�r�r�r�s  rr�zThreadedRDSSocketTest.__init__�r�r>c��tjtjtjd�|_	|jj	t
df�|jj
�|_y#t$rYywxYw�Nr)	rr0r1r�rv�HOST�getsockname�cli_addrrrYs rr�z!ThreadedRDSSocketTest.clientSetUp�sa���=�=�����0E�0E�q�I���	��H�H�M�M�4��)�$� �H�H�0�0�2�D�M���	�
�	�s�AA;�;	B�Bc�p�|jj�d|_tj|�yrIr�rYs rr�z$ThreadedRDSSocketTest.clientTearDown�r�r>Nr�r�rdr>rr�r��s��&�	�,r>r��
need fcntlz$VSOCK does not work on Microsoft WSLz%VSOCK sockets required for this test.c�,�eZdZdd�Zd�Zd�Zd�Zd�Zy)�ThreadedVSOCKSocketStreamTestc�p�tjj||��tj|�yr���unittest�TestCaser�r�r�s  rr�z&ThreadedVSOCKSocketStreamTest.__init__�s)�����"�"�4�J�"�?�����%r>c�X�tjtjtj�|_|j	|jj
�|jj
tjtf�|jj�|j�|jjtj�|jj�\|_|_|j	|jj
�yrI)r�AF_VSOCKrArUrur!rv�VMADDR_CID_ANY�	VSOCKPORTrXr��
settimeoutr�LOOPBACK_TIMEOUT�accept�conn�connaddrrYs rr[z#ThreadedVSOCKSocketStreamTest.setUp�s����M�M�&�/�/�6�3E�3E�F��	�����	�	���(��	�	����-�-�y�9�:��	�	����� � �"��	�	���W�5�5�6�#'�9�9�#3�#3�#5� ��	�4�=�����	�	���(r>c��tjd�tjtjtj�|_|j
|j
j�t�}|tjtjfvrt}|j
j|tf�y)N皙�����?)�time�sleeprr�rAr�rur!r�VMADDR_CID_HOSTr��VMADDR_CID_LOCAL�connectr�)rZr<s  rr�z)ThreadedVSOCKSocketStreamTest.clientSetUp�sy���
�
�3���=�=����&�2D�2D�E�����������'��i���6�)�)�6�+@�+@�A�A�"�C������#�y�)�*r>c�f�|jjd�}|j|t�y�N�)r��recv�assertEqual�MSG�rZ�msgs  r�
testStreamz(ThreadedVSOCKSocketStreamTest.testStream�$���i�i�n�n�T�"������c�"r>c�v�|jjt�|jj�yrI�r��sendr�r!rYs r�_testStreamz)ThreadedVSOCKSocketStreamTest._testStream� �����
�
�c�������r>Nr��rarbrcr�r[r�r�rrdr>rr�r��s��&�)�+�#�r>r�c�0�eZdZdZdd�Zd�Zd�Zd�Zd�Zy)	�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.
    c�2�tj||��yr�)r�r�r�s  rr�zSocketConnectedTest.__init__����&�&�t�
�&�Cr>c��tj|�|j�|jj	�\}}||_yrI)r�r[r�rUr��cli_conn�rZr��addrs   rr[zSocketConnectedTest.setUps;���#�#�D�)�	
� � �"��Y�Y�%�%�'�
��d���
r>c�p�|jj�d|_tj|�yrI)rr!r�r^rYs rr^zSocketConnectedTest.tearDowns'���
�
������
��&�&�t�,r>c��tj|�|jjt|j
f�|j|_yrI)r�r�r�r�r�rW�	serv_connrYs rr�zSocketConnectedTest.clientSetUp"s6���)�)�$�/������$��	�	�*�+�����r>c�p�|jj�d|_tj|�yrI)r
r!r�r�rYs rr�z"SocketConnectedTest.clientTearDown's'������������,�,�T�2r>Nr�)	rarbrcryr�r[r^r�r�rdr>rrrs!���D��-�
"�
3r>rc�2�eZdZdd�Zd�Zd�Zd�Zd�Zd�Zy)	�SocketPairTestc��tjj||��tj|�d|_d|_yr�)r�r�r�r�r�rUr�s  rr�zSocketPairTest.__init__.s7�����"�"�4�J�"�?�����%������	r>c�*�tj�SrI)r�
socketpairrYs rrzSocketPairTest.socketpair4s��� � �"�"r>c�>�|j�\|_|_yrI)rrUr�rYs rr[zSocketPairTest.setUp8s��"�o�o�/���	�4�8r>c�^�|jr|jj�d|_yrIr]rYs rr^zSocketPairTest.tearDown;s���9�9��I�I�O�O����	r>c��yrIrdrYs rr�zSocketPairTest.clientSetUp@���r>c��|jr|jj�d|_tj|�yrIr�rYs rr�zSocketPairTest.clientTearDownCs,���8�8��H�H�N�N������%�%�d�+r>Nr�)	rarbrcr�rr[r^r�r�rdr>rrr,s ���#�0��

�,r>rc�"�eZdZdZd�Zd�Zd�Zy)�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��|j�|_|j|j�|j	�yrI)�	newSocketrUru�close_server�
bindServerrYs rr[zSocketTestBase.setUpYs,���N�N�$��	�����)�)�*����r>c�F�|jj�d|_yrIr]rYs rrzSocketTestBase.close_server^r_r>c�x�|j|j�|jj�|_y)z9Bind server socket and set self.serv_addr to its address.N)�bindSockrUr��	serv_addrrYs rrzSocketTestBase.bindServerbs&���
�
�d�i�i� ����.�.�0��r>N)rarbrcryr[rrrdr>rrrPs����
�1r>rc�"��eZdZdZ�fd�Z�xZS)�SocketListeningTestMixinz%Mixin to listen on the server socket.c�V��t�|��|jj�yrI)�superr[rUrX�rZ�	__class__s �rr[zSocketListeningTestMixin.setUpks���
��
���	�	���r>)rarbrcryr[�
__classcell__�r(s@rr$r$hs���/��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�|�|i|��tj|�yrI)r&r�r��rZ�args�kwargsr(s   �rr�z ThreadedSocketTestMixin.__init__ws#���
���$�)�&�)�����%r>c�N�|j�|_|j�yrI)�newClientSocketr��
bindClientrYs rr�z#ThreadedSocketTestMixin.clientSetUp{s���'�'�)������r>c�"�|j�S)z&Return a new socket for use as client.)rrYs rr2z'ThreadedSocketTestMixin.newClientSockets���~�~��r>c�x�|j|j�|jj�|_y)z8Bind client socket and set self.cli_addr to its address.N)r!r�r�r�rYs rr3z"ThreadedSocketTestMixin.bindClient�s&���
�
�d�h�h�����,�,�.��
r>c�p�|jj�d|_tj|�yrIr�rYs rr�z&ThreadedSocketTestMixin.clientTearDown�r�r>)
rarbrcryr�r�r2r3r�r)r*s@rr,r,ps!����&�� �/�
,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�|jj	�\}}||_yrI)r&r[r�rUr�r)rZr�r
r(s   �rr[zConnectedStreamTestMixin.setUp�s7���
��
��	
� � �"��Y�Y�%�%�'�
��d���
r>c�d��|jj�d|_t�|�
�yrI)rr!r&r^r's �rr^z!ConnectedStreamTestMixin.tearDown�s%����
�
������
�
���r>c���t�|��|jj|j�|j|_yrI)r&r�r�r�r"r
r's �rr�z$ConnectedStreamTestMixin.clientSetUp�s/���
������������(�����r>c���	|jj�d|_t�|��y#t$rY�wxYwrI)r
r!r"r&r�r's �rr�z'ConnectedStreamTestMixin.clientTearDown�s@���	��N�N� � �"�!�D�N�	��� ���	��	�s�!3�	?�?)	rarbrcryr[r^r�r�r)r*s@rr8r8�s!������
"�
!�!r>r8c��eZdZdZd�Zy)�UnixSocketTestBasez(Base class for Unix-domain socket tests.c��tj�}|jtj|�tj
||�yrI)r�create_unix_domain_namerur�unlink�bind_unix_socket)rZ�sock�paths   rr!zUnixSocketTestBase.bindSock�s4���4�4�6�����	�(�(�$�/��&�&�t�T�2r>N)rarbrcryr!rdr>rr>r>�s
��2�3r>r>c��eZdZdZd�Zy)�UnixStreamBasez-Base class for Unix-domain SOCK_STREAM tests.c�f�tjtjtj�SrI)r�AF_UNIXrArYs rrzUnixStreamBase.newSocket�����}�}�V�^�^�V�-?�-?�@�@r>N�rarbrcryrrdr>rrFrF�s��7�Ar>rFc�,��eZdZdZeZ�fd�Zd�Z�xZS)�InetTestBasez!Base class for IPv4 socket tests.c�J��t�|��|jd|_y�Nr
)r&r[r"rWr's �rr[zInetTestBase.setUp�s���
��
���N�N�1�%��	r>c�F�tj||j��y)N��host)rrVrQ�rZrCs  rr!zInetTestBase.bindSock�s������4�9�9�5r>)	rarbrcryr�rQr[r!r)r*s@rrLrL�s���+��D�&�6r>rLc��eZdZdZd�Zy)�TCPTestBasez#Base class for TCP-over-IPv4 tests.c�f�tjtjtj�SrI)rrTrArYs rrzTCPTestBase.newSocket�rIr>NrJrdr>rrTrT����-�Ar>rTc��eZdZdZd�Zy)�UDPTestBasez#Base class for UDP-over-IPv4 tests.c�f�tjtjtj�SrI)rrTr(rYs rrzUDPTestBase.newSocket�s���}�}�V�^�^�V�->�->�?�?r>NrJrdr>rrXrX�s��-�@r>rXc��eZdZdZd�Zy)�UDPLITETestBasez'Base class for UDPLITE-over-IPv4 tests.c��tjtjtjtj�SrI)rrTr(rOrYs rrzUDPLITETestBase.newSocket�s%���}�}�V�^�^�V�->�->��@V�@V�W�Wr>NrJrdr>rr[r[�s��1�Xr>r[c��eZdZdZd�Zy)�SCTPStreamBasez;Base class for SCTP tests in one-to-one (SOCK_STREAM) mode.c��tjtjtjtj�SrI)rrTrA�IPPROTO_SCTPrYs rrzSCTPStreamBase.newSocket�s*���}�}�V�^�^�V�-?�-?�#�0�0�2�	2r>NrJrdr>rr^r^�s
��E�2r>r^c�(�eZdZdZej
Zy)�
Inet6TestBasez!Base class for IPv6 socket tests.N)rarbrcryr�HOSTv6rQrdr>rrbrb�s��+����Dr>rbc��eZdZdZd�Zy)�UDP6TestBasez#Base class for UDP-over-IPv6 tests.c�f�tjtjtj�SrI)r�AF_INET6r(rYs rrzUDP6TestBase.newSocket�s���}�}�V�_�_�f�.?�.?�@�@r>NrJrdr>rrere�rVr>rec��eZdZdZd�Zy)�UDPLITE6TestBasez'Base class for UDPLITE-over-IPv6 tests.c��tjtjtjtj�SrI)rrgr(rOrYs rrzUDPLITE6TestBase.newSocket�s%���}�}�V�_�_�f�.?�.?��AW�AW�X�Xr>NrJrdr>rriri�s��1�Yr>ric�*���d����fd�}d�}|r|S|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��yrIrd)r/r0s  r�client_passz%skipWithClientIf.<locals>.client_pass	rr>c�r��tj��|�}t|t�s
�fd�|_|S)Nc����SrIrd)rrms �r�<lambda>z3skipWithClientIf.<locals>.skipdec.<locals>.<lambda>s���;r>)r��skip�
isinstance�type�client_skip)�obj�retvalrm�reasons  ��r�skipdecz!skipWithClientIf.<locals>.skipdecs/���&����v�&�s�+���#�t�$�!6�F���
r>c�N�t|t�st|d�sd�|_|S)Nrtc��|SrIrd)rs rrpz5skipWithClientIf.<locals>.noskipdec.<locals>.<lambda>s��r>)rrrsrrt)rus r�	noskipdecz#skipWithClientIf.<locals>.noskipdecs!���3��%���m�)D�)�C�O��
r>rd)�	conditionrwrxr{rms `  @r�skipWithClientIfr}s!���
��
� �7�.�Y�.r>c��|D�cgc]}t||�r�|��}}t|ddjd�|D��z�Scc}w)z�Skip decorated test if obj is missing any of the given attributes.

    Sets client_skip attribute as skipWithClientIf() does.
    �don't have �, c3� K�|]}|���y�wrIrd��.0�names  r�	<genexpr>zrequireAttrs.<locals>.<genexpr>s����*D�G�D�4�G���)rr}�join)ru�
attributesr��missings    r�requireAttrsr�sO��
!+�E�
��'�#�t�2D�t�
�G�E�������*D�G�*D�!D�D�F�F��Fs
�A�Ac	��d}|D�cgc]$}t|t�rtt|�s|��&}}|rddj	d�|D��z}nR|D�cgc]$}t|t�rtt|�n|��&}}	tj|�}|j
�t|dudjdj	d�|D��|��Scc}wcc}w#t$r}t|�}Yd}~�Wd}~wwxYw)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.
    Nrr�c3� K�|]}|���y�wrIrdr�s  rr�z requireSocket.<locals>.<genexpr>,s����'A�����r�zcan't create socket({0}): {1}c3�2K�|]}t|����y�wrI)�str�r��os  rr�z requireSocket.<locals>.<genexpr>:s����+�d��c�!�f�d�s�)
rrr�rrr�r�r!rr}�format)r/�errrur��callargsr$r�s       r�
requireSocketr�!s���C�"�B�d�s��#�s�#�G�F�C�,@��d�G�B���d�i�i�'A��'A�A�A�� $�%�#��-7�s�C�,@�G�F�C�(�c�I�#�	�%�	��
�
�x�(�A�

�G�G�I���4��'�.�.��I�I�+�d�+�+�S�	2�3�3��B��
%���	��a�&�C��	�s#�)C�)C�C � 	C>�)C9�9C>c	�
�eZdZejedud�d��Zd�Zd�Zejedud�d��Z	d�Z
d�Zd	�Zd
�Z
d�Zejej dk(d
�d��Zej$ej(d�d��Zejej.dk(d�ejej2d�d���Zd�Zd�Zd�Zejeed�d�ejeed�d�d���Z ejeed�d�d��Z!ejeed �d!�d"��Z"ejeed#�d$�d%��Z#ejeed&�d'�d(��Z$d)�Z%d*�Z&ejNd+��Z(d,�Z)d-�Z*ejeed.�d/�d0��Z+ejeed1�d2�d3��Z,ejeed1�d2�d4��Z-ejeed5�d6�d7��Z.ejeed5�d6�d8��Z/d9�Z0d:�Z1d;�Z2d<�Z3d=�Z4d>�Z5d?�Z6ejej dk(d
�d@��Z7ejej dk(d
�ejeedA�dB�dC���Z8dD�Z9dE�Z:dF�Z;ejejxdG�dH�dI��Z=dJ�Z>dK�Z?dL�Z@dM�ZAdN�ZBdO�ZCdP�ZDdQ�ZEdR�ZFdS�ZGdT�ZHejNdU��ZIejej2dV�dW��ZJejej2dV�dX��ZKdY�ZLejej2dV�ej$ej.dZk(d[�ej$eMd\�ejeed�d]�d^�����ZNejej2dV�ejej.dZk(d_�d`���ZOejej2dV�ej$ej.dZk(d[�ej$eMd\�ejeed�d]�da�����ZPejej2dV�ejej.dZk(d_�db���ZQdc�ZRdd�ZSde�ZTejeedf�dg�dh��ZUdi�ZVdj�ZWdk�ZXdl�ZYdm�ZZej$ej dk(dn�do��Z[dp�Z\dq�Z]dr�Z^ds�Z_dt�Z`du�Zay)v�GeneralModuleTestsNzneed _socket modulec���|jtjtj��|jtd�5dtj_ddd�y#1swYyxYw)N�	immutabler
)�
assertTrue�gc�
is_tracked�_socketr�assertRaisesRegexr��foorYs r�test_socket_typez#GeneralModuleTests.test_socket_typeBsC������
�
�g�n�n�5�6�
�
#�
#�I�{�
;�!"�G�N�N��<�
;�
;�s�	A(�(A1c���ddl}|jtj|ju�tj�}|j	|tj�|j�yr�)r�r�r�
SocketType�assertIsInstancer!)rZr�r$s   r�test_SocketType_is_socketobjectz2GeneralModuleTests.test_SocketType_is_socketobjectHsJ�������)�)�W�^�^�;�<��M�M�O�����a��!2�!2�3�	���	r>c�2�tjtjtj�}|5|jd|j	�zt|��|jdtjzt|��|jdtjzt|��|jdt|��|j
dt|��|jd�|jdt|��|jt|j��t|��ddd�|jdt|��|j
dt|��y#1swY�@xYw)	Nzfd=%iz	family=%sztype=%szproto=0�raddr��	127.0.0.1r�laddrz[closed])
rrTrA�assertIn�fileno�repr�assertNotInrvr�r��rZr$s  r�	test_reprzGeneralModuleTests.test_reprOs���M�M�&�.�.�&�*<�*<�=��
��M�M�'�A�H�H�J�.��Q��8��M�M�+����6��Q��@��M�M�)�f�&8�&8�8�$�q�'�B��M�M�)�T�!�W�-����W�d�1�g�.�
�F�F�#�$��M�M�'�4��7�+��M�M�#�a�m�m�o�.��Q��8��	
�
�
�j�$�q�'�*�����$�q�'�*��Q�s�DF
�
Fc	���tjtjtj�}d|j	��d|j
�d|j�d|j�d�	}|jt|�|�|j�d|j
�d|j�d|j�d�}|jt|�|�y#|j�wxYw)Nz<socket object, fd=z	, family=z, type=z, proto=�>z<socket object, fd=-1, family=)r�rrTrAr��familyrs�protor�r�r!)rZr$�expecteds   r�test_csocket_reprz$GeneralModuleTests.test_csocket_repr]s����N�N�7�?�?�G�,?�,?�@��	��8�8�:�q�x�x�������B�H����T�!�W�h�/�
�G�G�I��x�x�������2������a��(�+��
�G�G�I�s�AC�C1c��tjtjtj�5}t|�}|j	|j�|j��ddd�d}t
j�	j�|jd�y#1swY�BxYw#t$rYywxYw)NzSocket proxy still exists)
rrTrArr�r�r�
gc_collect�fail�ReferenceError)rZr$�ps   r�test_weakrefzGeneralModuleTests.test_weakrefjs���
�]�]�6�>�>�6�+=�+=�
>�!��a��A����Q�X�X�Z�����4�?�
������	3�
�H�H�J�
�I�I�1�2�?�
>���	��	�s�:B.�B:�.B7�:	C�Cc�<�d}|jt|dz��5t�#1swYnxYw|jt|dz��5tj�#1swYnxYw|jt|dz��5tj�#1swYyxYw)Nz$Error raising socket exception (%s).r�r�z
socket.herrorzsocket.gaierror)�assertRaisesrr�herror�gaierrorr�s  r�testSocketErrorz"GeneralModuleTests.testSocketErrorws���4��
�
�
�w�C�)�O�
�
<��M�=�
<��
�
�
�w�C�/�,A�
�
B��-�-��C�
B��
�
�
�w�C�2C�,C�
�
D��/�/�!�E�
D�s �$�-�
A�A$�B�Bc��tjtjtj�}|j|j�|jd�|j
�}|jt�5}|jd|�ddd�|jtj�d�|jt�5}|jd|�ddd�|jt|j�d�|jt�5}|jdd�ddd�|jdt|j��|jt�5}|jdd|�ddd�|jt|j�d�|jt�5}|jdd|�ddd�|jt|j�d�|jt�5}|jddd�ddd�|jdt|j��|jt�5}|jdd	|�ddd�|jt�5}|jddd�ddd�|jt�5}|jd�ddd�|jd
t|j��|jt�5}|jdd|d�ddd�|jdt|j��y#1swY���xYw#1swY���xYw#1swY��YxYw#1swY��xYw#1swY���xYw#1swY��~xYw#1swY��5xYw#1swY��xYw#1swY��xYw#1swY��xYw)
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))rrTr(rur!rvr�r�r��sendtor�r��	exceptionr�)rZr$�sockname�cms    r�testSendtoErrorsz#GeneralModuleTests.testSendtoErrors�s����M�M�&�.�.�&�*;�*;�<�������� �	���w���=�=�?��
�
�
�y�
)�R�
�H�H�X�x�(�*�����R�\�\�*�E�	G�
�
�
�y�
)�R�
�H�H�R��"�*�����R�\�\�*�I�	K�
�
�
�y�
)�R�
�H�H�V�T�"�*��
�
�n�S����%6�7�
�
�
�y�
)�R�
�H�H�X�q�(�+�*�����R�\�\�*�E�	G�
�
�
�y�
)�R�
�H�H�R��H�%�*�����R�\�\�*�I�	K�
�
�
�y�
)�R�
�H�H�V�Q��%�*��
�
�n�c�"�,�,�&7�8�
�
�
�y�
)�R�
�H�H�V�U�H�-�*�
�
�
�y�
)�R�
�H�H�V�T�4�(�*��
�
�y�
)�R�
�H�H�V��*��
�
�k�3�r�|�|�#4�5�
�
�
�y�
)�R�
�H�H�V�Q��!�,�*��
�
�k�3�r�|�|�#4�5�C*�
)��*�
)��*�
)��*�
)��*�
)��*�
)��*�
)��
)�
)��*�
)��*�
)�sx�M>�N�.N�N%�N2�/N?�O�6O�'O&�;O2�>N�N�N"�%N/�2N<�?O	�O�O#�&O/�2O;c�D�tjtjrtjtjtj
tjtjtjtjtjyrI)rrT�has_ipv6rgrAr(r�SOCK_RDMr1�
SOL_SOCKET�SO_REUSEADDRrYs r�testCrucialConstantsz'GeneralModuleTests.testCrucialConstants�sR������?�?��O�O���������������������r>c��tjtjtjrtjyyrI)r�IPPROTO_TCP�IPPROTO_UDPr��IPPROTO_IPV6rYs r�testCrucialIpProtoConstantsz.GeneralModuleTests.testCrucialIpProtoConstants�s)���������?�?����r>�nt�Windows specificc��tjtjtjtjtj
tjtjtjyrI)	r�IPPROTO_ICLFXBM�
IPPROTO_ST�IPPROTO_CBT�IPPROTO_IGP�IPPROTO_RDP�IPPROTO_PGM�IPPROTO_L2TPr`rYs r�testWindowsSpecificConstantsz/GeneralModuleTests.testWindowsSpecificConstants�sJ�������������������������r>zWASI is missing these methodsc�z�gd�}|D]2}ttj|�r�|jd|�d���4y)N)�_acceptrvr��
connect_ex�getpeernamer�rX�recvfrom�
recvfrom_intor��
setsockopt�shutdownzsocket method z is missing)rrr�)rZ�namesr�s   r�test_socket_methodsz&GeneralModuleTests.test_socket_methods�s8��
��
�D��6�=�=�$�/��	�	�N�4�&��<�=�r>�darwin�macOS specific test�IPv6 required for this testc�b�hd�}|D]&}|jtt|�d|�d���(y)N>�
IPV6_RTHDR�IPV6_TCLASS�IPV6_DSTOPTS�IPV6_HOPOPTS�IPV6_NEXTHOP�IPV6_PATHMTU�IPV6_PKTINFO�
IPV6_CHECKSUM�
IPV6_DONTFRAG�
IPV6_HOPLIMIT�IPV6_RECVRTHDR�IPV6_RECVTCLASS�IPV6_RECVDSTOPTS�IPV6_RECVHOPOPTS�IPV6_RECVPATHMTU�IPV6_RECVPKTINFO�IPV6_USE_MIN_MTU�IPV6_RECVHOPLIMIT�IPV6_RTHDRDSTOPTS�IPV6_RTHDR_TYPE_0zMissing RFC3542 socket option '�')r�rr)rZ�opts�opts   r�test3542SocketOptionsz(GeneralModuleTests.test3542SocketOptions�s7��
��,�C��O�O����$�(G��u�A�&N�
�r>c���tj�}	tj|�}|jj
d�dk\d�	tj|�\}}}|gz}tj|�}||vr"|jd|�dt|��d��yy#t$r|j	d�Y��wxYw#t$r|j	d�Y�wxYw)N�name lookup failurer�rzError resolving host to ip.z1Error testing host resolution mechanisms. (fqdn: z, all: �))r�gethostname�
gethostbynamerrxr��find�
gethostbyaddr�getfqdnr�r�)rZ�hostname�ip�hname�aliases�ipaddrs�all_host_names�fqhns        r�testHostnameResz"GeneralModuleTests.testHostnameRes�s����%�%�'��	1��%�%�h�/�B�	
���������)�+H�I�	1�&,�&:�&:�2�&>�#�E�7�G�#�E�*�W�4���~�~�b�!���~�%��I�I�Y]�_c�dr�_s�t�u�&���	1��M�M�/�0�	1���	1��M�M�/�0�	1�s#�B,�C�,C	�C	�C)�(C)c��tjddfD]'}|jtj|�|��)tjfD]*}|j|tj|�d��,y)Nz10.0.0.1�255.255.255.255�)r�HOSTv4r�rrr�r
)rZr
rQs   r�test_host_resolutionz'GeneralModuleTests.test_host_resolutionsi��"�)�)�:�7H�I�D����V�1�1�$�7��>�J�
#�)�)�*�D��M�M�$�� 4� 4�T� :�1� =�>�+r>c��d}dD]l}|jt|��5tj|�ddd�|jt|��5tj|�ddd��ny#1swY�AxYw#1swY��xYw)Nz[resolving an invalid IP address did not raise OSError; can be caused by a broken DNS server)z0.1.1.~1z1+.1.1.1z::1qz::1::2z1:1:1:1:1:1:1:1:1r�)r�rrrr
)rZ�explanationr
s   r� test_host_resolution_bad_addressz3GeneralModuleTests.test_host_resolution_bad_addresssu��
3�	�*�D��"�"�7��"�5��$�$�T�*�6��"�"�7��"�<��$�$�T�*�=�<�	*�5�5��<�<�s�A5�B�5A>	�B
	�sethostnameztest needs socket.sethostname()r
ztest needs socket.gethostname()c��tj�}	tjd�	|jtj�d�tjd�|jtj�d�tj|�y#t$r:}|jtj
k(r|j
d�n�Yd}~��d}~wwxYw#tj|�wxYw)N�newztest should be run as rootsbarr�)rr
rr�errno�EPERMrxr�)rZ�oldhnr�s   r�test_sethostnamez#GeneralModuleTests.test_sethostname"s����"�"�$��	����u�%�	&����V�/�/�1�5�9����v�&����V�/�/�1�5�9����u�%���	��w�w�%�+�+�%��
�
�:�;��<��	��
���u�%�s#�B�AC%�	C"�(0C�C"�%C<�if_nameindexz$socket.if_nameindex() not available.c��tj�}|D]�\}}|j|t�|j|t�|j|d�tj|�}|j|t�|j||�tj|�}|j|t�|j||���yr�)	rr&r��intr��
assertGreater�if_nametoindexr��if_indextoname)rZ�
interfaces�indexr��_index�_names      r�testInterfaceNameIndexz)GeneralModuleTests.testInterfaceNameIndex6s����(�(�*�
�%�K�E�4��!�!�%��-��!�!�$��,����u�a�(��*�*�4�0�F��!�!�&�#�.����U�F�+��)�)�%�0�E��!�!�%��-����T�5�)�&r>r+z&socket.if_indextoname() not available.c���|jttjd�|jttjd�|jttjddz�|jt
tjd�t
td�r�ttj��}|D]E}|dz}||vs�
|jttf�5tj|�ddd��GdD]@}||vs�|jttf�5tj|�ddd��Byy#1swY��xYw#1swY�ZxYw)	Nr���r���	_DEADBEEFr&�)���l����)	r�rrr+�
OverflowErrorr�r�dictr&)rZ�indicesr-�index2s    r�testInvalidInterfaceIndexToNamez2GeneralModuleTests.testInvalidInterfaceIndexToNameFs!��	
���'�6�#8�#8�!�<����-��)>�)>��C����-��)>�)>��4��H����)�V�%:�%:�K�H��6�>�*��6�.�.�0�1�G� ��������(��*�*�M�7�+C�D��-�-�f�5�E�D�!�
*����'��*�*�M�7�+C�D��-�-�e�4�E�D�*�+�
E�D��E�D�s�/E�4E"�E	�"E+	r*z&socket.if_nametoindex() not available.c��|jttjd�|jttjd�y)Nrr4)r�r�rr*rrYs r�testInvalidInterfaceNameToIndexz2GeneralModuleTests.testInvalidInterfaceNameToIndexYs4��	
���)�V�%:�%:�A�>����'�6�#8�#8�+�Fr>�getrefcountztest needs sys.getrefcount()c���	tjt�}tjtd�y#t
$r2tjt�k7r|j
d�YyYywxYw)Nrz$socket.getnameinfo loses a reference)�sysr>rar�getnameinfor�r�)rZ�origs  r�testRefCountGetNameInfoz*GeneralModuleTests.testRefCountGetNameInfo_sZ��	B��?�?�8�,�D����x��*���	B����x�(�D�0��	�	�@�A�1�	B�s�36�6A1�0A1c�P�	tjdd�y#t$rYywxYw)N)rprrrr)rrArrYs r�testInterpreterCrashz'GeneralModuleTests.testInterpreterCrashks)��	����~�q�1���	��	�s��	%�%c��tjdtjdtjdtjdi}|j�D]o\}}d|zdz
}dD])}|j
||z||||z��|z��+||�}|j
||z|�|jt|d��qy)N� �r
)rr
�i��rigE#i2Tvl)	r�htonl�ntohl�htons�ntohs�itemsr�r�r7)rZ�sizes�func�size�maskrP�swappeds       r�testNtoHzGeneralModuleTests.testNtoHss������r�6�<�<�����r�6�<�<��5���+�+�-�J�D�$��t�G�q�=�D�G��� � ��T��4��Q�t�V��+=��+D�E�H��4�j�G����W�t�^�T�2����m�T�5�9�(r>c��ddl}gd�}|dgz}dddddzg}||jdz
|jdzgzd	|jgz}|D],}tj|�tj
|��.|D],}tj|�tj|��.|D]L}|jttj|�|jttj
|��N|D]L}|jttj|�|jttj|��Ny)
Nr)rr
rrIr6r2���r5r
r3�)
�	_testcapi�INT_MIN�INT_MAXrrMrLrKrJr�r7)rZrX�
s_good_values�
l_good_values�l_bad_values�s_bad_values�ks       r�testNtoHErrorsz!GeneralModuleTests.testNtoHErrors�s���)�
�%���4�
��B��q�$�w�/���
�
�
�q�
 �)�"3�"3�A�"5�6�
7�
�i�'�'�(�
)�	�
�A��L�L��O��L�L��O���A��L�L��O��L�L��O���A����m�V�\�\�1�=����m�V�\�\�1�=���A����m�V�\�\�1�=����m�V�\�\�1�=�r>c�B�|j}tjjd�stjdvrd}nd}|D]}	t	j
|d�}nt�ttd�rtj�dk\rt	j
|�}|||�	t	j
|d�}|||�tjs|t	j�|�|t	j|d�|�|�|t	j|d�|�|jttjd	�|jttjd
�y#t$rY��GwxYw#t$rd}Y��wxYw)N)�freebsd�netbsd�gnukfreebsd)�linuxr�)�daytime�qotd�domain)�echorfrh�tcp�getandroidapilevel��udpr2rW)r�r@�platform�
startswithr�
getservbynamerrrkr�
is_android�
getservbyportr�r7)rZ�eq�services�servicerW�port2�udpports       r�
testGetServByz GeneralModuleTests.testGetServBy�sm��
�
�
��
�L�L�#�#�$H�I��|�|�2�2�5�H�4�H��G�
��+�+�G�U�;��� ��M���1�2��&�&�(�B�.��(�(��1�E��t�U�O�	��*�*�7�E�:�G�
�w����!�!��v�#�#�E�*�G�4�
�6����e�,�g�6����v�#�#�G�U�3�W�=����-��)=�)=�r�B����-��)=�)=�u�E��5�
��
���	��G�	�s$�	F�.F�	F
�F
�F�Fc��|jtj�d�tj�5}|j|j�d�ddd�t	d�5|jtj�d�tj�5}|j|j�d�ddd�tj
d�|jtj�d�tj�5}|j|j�d�ddd�ddd�|j
ttj
d�|j
ttj
d�y#1swY��@xYw#1swY��xYw#1swY�uxYw#1swY�yxYw)N�
r2�spam)	r�rrJ�
gettimeoutrNrKr��
ValueErrorr�)rZr$rCs   r�testDefaultTimeoutz%GeneralModuleTests.testDefaultTimeout�s7��	
����1�1�3�T�:�
�]�]�_�����Q�\�\�^�T�2��&�b�
)����V�5�5�7��<�����D�� � ����!2�B�7�!�
�$�$�T�*����V�5�5�7��>�����D�� � ����!2�D�9�!�*�	
���*�f�&>�&>��C�	
���)�V�%=�%=�v�F�'�_��!���!���*�
)�sH�!F�-9F=�&!F%�AF=�!F1�=F=�F"�%F.	�*F=�1F:	�6F=�=G�	inet_atonztest needs socket.inet_aton()c��|jdtjd��|jdtjd��y)N��0.0.0.0�����r)r�rrrYs r�testIPv4_inet_aton_fourbytesz/GeneralModuleTests.testIPv4_inet_aton_fourbytes�s;��
	
����F�$4�$4�Y�$?�@�����F�$4�$4�5F�$G�Hr>�	inet_ptonztest needs socket.inet_pton()c�����ddlm}m�m���fd�}�fd�}�j	d|d���j	d|d���j	d	|d
���j	d|d���j	d
|d��t
s	||d�||d�||d�||d�||d��j	d|d���j	d|d���j	d	|d
���j	d
|d��||d�||d�||d�||d�||d�y)Nr)rr�rTc�����|�SrIrd)�arTr�s ��rrpz5GeneralModuleTests.testIPv4toString.<locals>.<lambda>�����i���+r>c�>���jttf||�SrI�r�rr}�rPr�rZs  �rrpz5GeneralModuleTests.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�rTr�r)rZr�g�
assertInvalidrTr�s`   @@r�testIPv4toStringz#GeneralModuleTests.testIPv4toString�sG���	>�=�+��
�
�	
���,�a�	�l�;����,�a�
�.>�?����,�a�0A�.B�C����,�a�	�l�;����,�a�0A�.B�C���!�X�&��a��%��a��#��a��%��a������,�a�	�l�;����,�a�
�.>�?����,�a�0A�.B�C����,�a�0A�.B�C��a��"��a��%��a��#��a��%��a��r>c������	ddlm�m�m}|s�j	d�tjdk(r
	��d���fd	����fd
�}�jd�d���jd�d���jd
�d���jd�d���jd�d���jd�d��|d�|d�|d�|d�|d�|d�|d�|d�ts|d��jd�d���jd �d!���jd"�d#��|d$�|d%�|d&�|d'�|d(�|d)�y#t
$r�j	d�Y���wxYw#t$r+}|jdk(r�j	d�Yd}~���d}~wwxYw)*Nr)r�rgr��IPv6 not available�+could not import needed symbols from socket�win32�::�&'�IPv6 might not be supportedc�����|�SrIrd)r�rgr�s ��rrpz5GeneralModuleTests.testIPv6toString.<locals>.<lambda>����i��!�,r>c�>���jttf�|�SrIr��r�rrZs ��rrpz5GeneralModuleTests.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�rgr�rx�ImportErrorr@rnr�winerrorr�r)rZr�r�r�rgrr�s`   @@@r�testIPv6toStringz#GeneralModuleTests.testIPv6toStrings����	I�<�<���
�
�2�3��<�<�7�"�
A��(�D�)�

-��
�
�	
����q��w�/�����q��y�1����3�Q�u�X�>����O�
�4�5�	
�	
���S�
�%�&�	
�	
���;�Q�x�[�I��h���e���g���j�!��m�$��m�$��n�%��)�*���,�-����;�
���	
�	
���C�
�%�&�	
�	
���O�
�2�3�	
�	�'�(��n�%��m�$��-�.��m�$��/�0��o�	I��M�M�G�H�	I���
A��:�:��&��M�M�"?�@���
A�s(�F#�	G�#G�G�	G8�
 G3�3G8�	inet_ntopztest needs socket.inet_ntop()c�t����ddlm}m�m���fd�}�fd�}�j	d|d���j	d|d���j	d	|d
���j	d|d��||d
�||d�||d��j	d|td����j	d|d���j	d|d���j	d	|d
��||d
�||d�||d��j	d|td���y)Nr)�	inet_ntoar�rTc�����|�SrIrd)r�rTr�s ��rrpz5GeneralModuleTests.testStringToIPv4.<locals>.<lambda>Kr�r>c�>���jttf||�SrIr�r�s  �rrpz5GeneralModuleTests.testStringToIPv4.<locals>.<lambda>Lr�r>z1.0.1.0sz
170.85.170.85s�U�Urr�r�r�ssr�)rr�r�rTr��	bytearray)rZrr�r�rTr�s`   @@r�testStringToIPv4z#GeneralModuleTests.testStringToIPv4Gs'���	>�=�+��
�
�	
����A�&9�$:�;�����!�,?�*@�A����*�A�.A�,B�C�����A�&9�$:�;��a��%��a��%��a��&�����!�I�6I�,J�*K�L�����A�&9�$:�;�����!�,?�*@�A����*�A�.A�,B�C��a��%��a��%��a��&�����!�I�6I�,J�*K�Lr>c�H�����	ddlm�m�m}|s�j	d�tjdk(r
	��d���fd	����fd
�}�jd�d���jd�d
���jd�d���jd�td
���|d�|d�|d�y#t
$r�j	d�Y��wxYw#t$r*}|jdk(r�j	d�Yd}~��d}~wwxYw)Nr)r�rgr�r�r�r�r�r�r�c�����|�SrIrd)r�rgr�s ��rrpz5GeneralModuleTests.testStringToIPv6.<locals>.<lambda>rr�r>c�>���jttf�|�SrIr�r�s ��rrpz5GeneralModuleTests.testStringToIPv6.<locals>.<lambda>sr�r>r�r�sz!aef:b01:506:1001:ffff:9997:55:170s
�����Upsss)rr�rgr�rxr�r@rnrr�r�r�)rZr�r�r�rgrr�s`   @@@r�testStringToIPv6z#GeneralModuleTests.testStringToIPv6as���	I�<�<���
�
�2�3��<�<�7�"�
A��(�L�1�

-��
�
�	
����q���/������"8� 9�:����/�
�Q�R�	
�	
�����)�,B�"C� D�E��l�#��l�#��k�"��3�	I��M�M�G�H�	I���
A��:�:��&��M�M�"?�@���
A�s(�C�	C.�C+�*C+�.	D!�7 D�D!c��tjtjtj�}|j|j�tj�D]+}tj�}	|jd|f�n|j�}	tjtj��}|j#|ddfd|dz�|j%|d�y#t$r-}|jtjk7s|dk(r�Yd}~��d}~wwxYw#t$r|j!d�Y��wxYw)Nr��rrz
%s invalidr
)rrTrArur!�	itertools�countr�find_unused_portrvrr"�
EADDRINUSEr�rr
rxr�r�)rZrCrPrWr�r��
my_ip_addrs       r�testSockNamezGeneralModuleTests.testSockName�s���}�}�V�^�^�V�-?�-?�@������
�
�#����"�A� �1�1�3�D�
��	�	�9�d�+�,�
�#����!��	1��-�-�f�.@�.@�.B�C�J�	
�
�
�d�1�g�	�:�6��t�A�w�8N�O�����a��$�'��!�
��7�7�e�.�.�.�!�q�&��39��
���	1��M�M�/�0�	1�s*�:C<�!'D5�<	D2�#D-�-D2�5E�Ec�$�tjtjtj�}|j|j�|jtjtj�}|j|dk7d�y)Nrzinitial mode is reuse)	rrTrArur!�
getsockoptr�r��assertFalse�rZrC�reuses   r�testGetSockOptz!GeneralModuleTests.testGetSockOpt�s_���}�}�V�^�^�V�-?�-?�@������
�
�#����� 1� 1�6�3F�3F�G������!��%<�=r>c��tjtjtj�}|j|j�|jtjtjd�|jtjtj�}|j|dk(d�y)Nr
rzfailed to set reuse mode)
rrTrArur!r�r�r�r�r�r�s   r�testSetSockOptz!GeneralModuleTests.testSetSockOpt�sy���}�}�V�^�^�V�-?�-?�@������
�
�#�����)�)�6�+>�+>��B����� 1� 1�6�3F�3F�G������!��%?�@r>c��tjtjtj�5}|jd�ddd�|j	t
jd�y#1swY�+xYw)Nr
�spam)rrTrAr�r�rr�rRs  r�testSendAfterClosez%GeneralModuleTests.testSendAfterClose�sL��
�]�]�6�>�>�6�+=�+=�
>�$��O�O�A��?����'�4�9�9�g�6�?�
>�s�A/�/A8c��tj�}|jtjdf�tj|j���j	�	|j	�|jd�y#t$rD}|j|jtjtjf�Yd}~yd}~wwxYw)Nr�r�z#close() should raise EBADF/ENOTSOCK)rrv�
_LOCALHOSTr�r!r�rr�r"�EBADF�ENOTSOCK)rZrCr�s   r�testCloseExceptionz%GeneralModuleTests.testCloseException�s����}�}����	�	�6�$�$�a�(�)��
�
�T�[�[�]�+�1�1�3�	=��J�J�L�

�I�I�;�<��	�	D��M�M�#�)�)�e�k�k�5�>�>�%B�C�C��	D�s�)B�	C�:C�Cc�*�tjtjtj�5}|j|jtj�ttd�rL|j
|jtjtjztjf�n*|j|jtj�|j|jd�ddd�y#1swYyxYw)N�SOCK_CLOEXECr)
rrTrAr�r�rr�rsr�r�rRs  r�testNewAttributesz$GeneralModuleTests.testNewAttributes�s����]�]�6�>�>�6�+=�+=�
>�$����T�[�[�&�.�.�9��v�~�.��
�
�d�i�i�%�1�1�F�4G�4G�G�%�1�1�3�4�� � ����F�,>�,>�?����T�Z�Z��+�?�
>�
>�s�C
D	�	Dc�8�tj�}|j|j�tj�}|dz}|dz
}|jt|jt|f�|jt|jt|f�tj�D]/}tj�}	|jt|f�yy#t$r-}|jtjk7s|dk(r�Yd}~�dd}~wwxYw)NrWr�)rrur!rr�r�r7rvr�r�r�rr"r�)rZrCrW�big_port�neg_portrPr�s       r�test_getsockaddrargz&GeneralModuleTests.test_getsockaddrarg�s����}�}�������
�
�#��-�-�/���%�<���%�<�����-����T�8�4D�E����-����T�8�4D�E����"�A� �1�1�3�D�
��	�	�4��,�'�
�#���
��7�7�e�.�.�.�!�q�&��39��
�s�C#�#	D�,#D�Dc�0�|jttjd��|jttd��|jttd��|jttd��|jttd��tj�}|j|j�|jt|jdd�|jtjd�y)Nr�
SIO_RCVALL�	RCVALL_ON�
RCVALL_OFF�SIO_KEEPALIVE_VALSr2)r
�dr�)	r�rrrur!r�r}rr�r�s  r�test_sock_ioctlz"GeneralModuleTests.test_sock_ioctl�s��������
�
�w�7�8�������5�6�������4�5�������5�6������(<�=�>��M�M�O�������� ����*�a�g�g�r�4�8�	����)�)�=�9r>�SIO_LOOPBACK_FAST_PATHz1Loopback fast path support required for this testc�l�tj�}|j|j�	|jtjd�|jt|jtjd�y#t
$r(}d}|j|k(r|jd��d}~wwxYw)NTi='zQSIO_LOOPBACK_FAST_PATH is defined but doesn't implemented in this Windows version)
rrur!rr�rr�rxr�r�)rZr$�exc�
WSAEOPNOTSUPPs    r�test_sio_loopback_fast_pathz.GeneralModuleTests.test_sio_loopback_fast_path�s���
�M�M�O�������� �	�
�G�G�F�1�1�4�8�	
���)�Q�W�W�f�.K�.K�T�R��
�	�!�M��|�|�}�,��
�
�L�M���	�s� B�	B3�#B.�.B3c�$
�	tjdd�tjtd�D]}|jt|�d��tjdd�tjdd�tjdd�tjrtjdd�ttd�rtj�dk\rtjtd	�tjtd�tjtd�tjtdtjtj�}|D]�\}}}}}|j|tj�|jt!|�d
|j"z�|jt%|�t%|j"��|j|tj�|jt!|�d|j"z�|jt%|�t%|j"����tjtddtj�}|D](\}}}}}|j|tj��*tjtdddtj&�tjtddddtj(�tjddtj*tjdtj(�tjtd�}tjtd�
�}	|j||	�tjtdtj�}tjtdtj��}	|j||	�tjtddtj�}tjtdtj��}	|j||	�tjtdddtj&�}tjtdtj&��}	|j||	�tjtddddtj(�}tjtdtj(��}	|j||	�tjddtj*tjdtj(�}tjddtj*tjdtj(��}	|j||	�|j-t.tjdd�ttd�r*	tjdddddtj0�yy#tj$r4}|jtjk(r|jd��d}~wwxYw#tj$rYywxYw)N�	localhost�Pzbuggy libc versionr�r�r�rkrl�http�<AddressFamily.AF_INET: %r>�<SocketKind.SOCK_STREAM: %r>r)rQrW�r��rs)r�)�flags)rQrWr�rsr�r�u��AI_NUMERICSERV)r�getaddrinfor�r"�EAI_SERVICErxr�r��lenr�IPV6_ENABLEDrr@rkrTrAr��valuer��SOL_TCP�
AI_PASSIVE�	AF_UNSPECr��UnicodeEncodeErrorr�)
rZr��info�infosr�rsr��socktyper��bs
          r�testGetaddrinfoz"GeneralModuleTests.testGetaddrinfos���	����{�B�/��&�&�t�T�2�D����S��Y��*�3�	���;��+����;��+����4��$��%�%����u�b�)���1�2��&�&�(�B�.����t�V�,����4��$����4��&��"�"�4��V�^�^�V�=O�=O�P��%*�!�F�D�!�Q�����V�V�^�^�4����T�&�\�+H�6�<�<�+W�X����S��[�#�f�l�l�*;�<����T�6�#5�#5�6����T�$�Z�)G�$�*�*�)T�U����S��Y��D�J�J��8�
&+��"�"�4��q�&�2D�2D�E��$)� �A�x��A�q����X�v�'9�'9�:�%*�	���4��q�!�V�^�^�<����4��q�!�Q��0A�0A�B�	���4��F�$4�$4�f�6H�6H�!�!�,�,�	.�
���t�T�*�����D�t�4������A�����t�T�6�>�>�:�����t�T�&�.�.�A������A�����t�T�1�f�.@�.@�A�����t�T��0B�0B�C������A�����t�T�1�a����@�����t�T����@������A�����t�T�1�a��F�4E�4E�F�����t�T��1B�1B�C������A�����t�Q��(8�(8�&�:L�:L�a�%�0�0�
2�����D�q��9I�9I�$*�$6�$6�a�%+�%6�%6�
8��	
����A�����,�f�.@�.@�+�x�X��6�+�,�
��"�"�;��a��A�#)�#8�#8�:�	-��I���	��y�y�F�.�.�.��
�
�2�3���		��T�?�?�
��
�s)�X/�(Y9�/Y6�/Y1�1Y6�9Z�Zc��ddlm}m}m}	t	j
d|dztj��	t	j
d|dztj��	t	j
d|dz
dztj��	t	j
d|dz
tj��t	j
ddtj��t	j
ddtj��y#t$r|jd�Y��tj$rY��wxYw#t$r|jd�Y��tj$rY��	wxYw#t$r|jd�Y��tj$rY��wxYw#t$r|jd�Y��tj$rY��wxYw)Nr)�	ULONG_MAX�LONG_MAX�LONG_MINr
r�z,Either no error or socket.gaierror expected.rI)
rXr�r�r�rr�rAr7r�r�)rZr�r�r�s    r�"test_getaddrinfo_int_port_overflowz5GeneralModuleTests.test_getaddrinfo_int_port_overflowQs}��	<�;�	����t�Y��]��9K�9K�L�	����t�X��\��8J�8J�K�	����t�X��%6��%:��AS�AS�T�	����t�X��\��8J�8J�K�	���4���);�);�<����4��f�.@�.@�A��=�	F�
�I�I�D�E����	��	��
�	F��I�I�D�E����	��	��
�	F��I�I�D�E����	��	��
�	F��I�I�D�E����	��	�s^�)D�)D7� ,E,�
)F!�D4�D4�3D4�7E)�E)�(E)�,F�F�F�!G�>G�Gc�P�|jttjdd�y)N)zmail.python.orgrr)r�rrrArYs r�test_getnameinfoz#GeneralModuleTests.test_getnameinfo�s�����'�6�#5�#5�7L�a�Pr>�networkznetwork is not enabledc�B�tjd�5tjd�ddd�d}tj|�tj|�tj
|dtjtj�y#1swY�jxYw)Nz
python.orgu!испытание.pythontest.netr)r�transient_internetrr�gethostbyname_exr�r�rA)rZrhs  r�	test_idnazGeneralModuleTests.test_idna�sq��
�
-�
-�l�
;�� � ��.�<�5�����V�$�����'����6�!�F�$4�$4�V�5G�5G�H�<�
;�s�B�Bc�$��ttd�rttd�s�jd��fd�}�fd�}tj�\}}tjtj
|�}	|r|j
d��jt�5tjd�|jdtjz�ddd�|rktjtj
|�tjd��jt|jdtjz�tjd	�tjtj
|�|j�|j�y#1swY��xYw#tjd	�tjtj
|�|j�|j�wxYw)
N�alarmrz9signal.alarm and socket.socketpair required for this testc�P���jttjd�yr��r�r}�math�acosh�r/rZs �r�
ok_handlerz@GeneralModuleTests.check_sendall_interrupted.<locals>.ok_handler�s������j�$�*�*�a�8r>c�Z���jttjd�ddzy�Nrr
rrs �r�raising_handlerzEGeneralModuleTests.check_sendall_interrupted.<locals>.raising_handler�s ������j�$�*�*�a�8�
��Fr>g�?r
�xr)r�signalrrxr�SIGALRMr�r��ZeroDivisionErrorr�sendallr�
SOCK_MAX_SIZE�TimeoutErrorr!)rZ�with_timeoutrr	�cr$�	old_alarms`      r�check_sendall_interruptedz,GeneralModuleTests.check_sendall_interrupted�sR����v�w�'�w�v�|�/L��M�M�U�V�	9�	�� � �"���1��M�M�&�.�.�/�B�	�	�����S�!��"�"�#4�5����Q���	�	�$��!6�!6�6�7�6���
�
�f�n�n�j�9����Q���!�!�,��	�	�"&��)>�)>�">�@�
�L�L��O��M�M�&�.�.�)�4�
�G�G�I�
�G�G�I�6�5��
�L�L��O��M�M�&�.�.�)�4�
�G�G�I�
�G�G�I�s&�9(F4�!8F(�A5F4�(F1�-F4�4AHc�&�|jd�y�NF�rrYs r�test_sendall_interruptedz+GeneralModuleTests.test_sendall_interrupted�s���&�&�u�-r>c�&�|jd�y)NTrrYs r�%test_sendall_interrupted_with_timeoutz8GeneralModuleTests.test_sendall_interrupted_with_timeout�s���&�&�t�,r>c��tjtjtj�}t|�}|j	t
�5}d}t
j�ddd�|j|tjjd��tjtjtj�}|jd�}t|�}d}t
j�|j	t
�5d}t
j�ddd�y#1swY��xYw#1swYyxYw)Nrr)
rrTrAr��assertWarns�ResourceWarningrr�r�r��warningr/�makefile)rZrCrr�rs     r�test_dealloc_warnz$GeneralModuleTests.test_dealloc_warn�s����}�}�V�^�^�V�-?�-?�@����J��
�
�
�o�
.�"��D���� �/�	
�
�
�a��R�Z�Z�_�_�Q�/�0�1��}�}�V�^�^�V�-?�-?�@���M�M�$�����J��������
�
�
�o�
.��A���� �/�
.�/�
.��/�
.�s�D=�E	�=E�	Ec�
�tjtjtj�5}|jd�}|j	�|jt
|�d�ddd�y#1swYyxYw)Nrz<_io.BufferedReader name=-1>)rrTrArr!r�r��rZrC�fps   r�test_name_closed_socketioz,GeneralModuleTests.test_name_closed_socketio�sT��
�]�]�6�>�>�6�+=�+=�
>�$����t�$�B��H�H�J����T�"�X�'E�F�?�
>�
>�s�=A9�9Bc��tj�5}|jdd��}|j|j��|j	|j��|j	|j
��|j�|jt|j�|jt|j
�|jt|j�ddd�y#1swYyxYw)Nrr)�	buffering)
rrr��readabler��writable�seekabler!r�r}r"s   r�test_unusable_closed_socketioz0GeneralModuleTests.test_unusable_closed_socketio�s���
�]�]�_�����t�q��1�B��O�O�B�K�K�M�*����R�[�[�]�+����R�[�[�]�+��H�H�J����j�"�+�+�6����j�"�+�+�6����j�"�+�+�6��_�_�s�C!C?�?Dc��tj�}	|jtdf�tj|j	��|jt�5|jd�ddd�|jt�5|j�ddd�|jt�5tjd�ddd�|jt�5tjd�ddd�y#1swY��xYw#1swY�|xYw#|jt�5|j�ddd�w#1swYwxYwxYw#1swY��xYw#1swYyxYw)Nrr
r2)	rrvr�r!r�r�rrXr�rRs  r�test_socket_closez$GeneralModuleTests.test_socket_close�s����}�}���	��I�I�t�Q�i� ��L�L�����'��"�"�7�+����A��,��"�"�7�+��
�
��,��
�
�y�
)��L�L���*�
�
�
�w�
'��L�L���(�
'�,�+��,�+���"�"�7�+��
�
��,�+�+��*�
)��
'�
'�s`�AD,�%D�7D,�D �E+�5E7�D�D,� D)�,E(�E�	E(�E%�!E(�+E4�7Fc	�J�dD]z}|j|��5tj�5}d|vrdnd}|j||��5}|j|j|�ddd�ddd�ddd��|y#1swY�xYw#1swY� xYw#1swY��xYw)N)rr�rw�w�wb��moder�r	��encoding)�subTestrrr�r2)rZr2rCr4r#s     r�test_makefile_modez%GeneralModuleTests.test_makefile_mode�s���.�D����4��(��]�]�_��'*�d�{�t��H����t�h��?�2��(�(����$�7�@�%�)�(�/�@�?��%�_��)�(�s:�B�B
�	B	�&B
�.B�B

�B
�
B�B�B"	c	�*�dD]j}|j|��5tj�5}|jtd�5|j	|�ddd�ddd�ddd��ly#1swY�xYw#1swY� xYw#1swY��xYw)N)�rtrp�+r�r1zinvalid mode)r5rr�r}r)rZr2rCs   r�test_makefile_invalid_modez-GeneralModuleTests.test_makefile_invalid_mode�so��'�D����4��(��]�]�_���/�/�
�N�K��
�
�d�+�L�%�)�(�(�L�K��%�_��)�(�s:�B	�A=�A1	�A=�B	�1A:
�6A=�=B�B	�	B	c��tj�}|5ttjdz�D](}|j	t
tj||��*	ddd�ttjdz�D]�}tjtjtj|��}|j|tj�tjtjtj|��}|j|tj���y#1swY��xYwrN)r�range�pickle�HIGHEST_PROTOCOLr�r��dumps�loadsrTr�rA)rZrC�protocolr�rss     r�test_picklezGeneralModuleTests.test_pickle�s����}�}���
�!�&�"9�"9�A�"=�>���!�!�)�V�\�\�4��J�?���f�5�5��9�:�H��\�\�&�,�,�v�~�~�x�"H�I�F����V�V�^�^�4��<�<����V�-?�-?�� J�K�D����T�6�#5�#5�6�	;��T�s�AD8�8Ec���dD]e}tjtjtj�5}|jtdf�|j|�ddd��gtjtjtj�5}|jtdf�|j�ddd�y#1swY��xYw#1swYyxYw)N)rr2r)rrTrArvr�rX)rZ�backlog�srvs   r�test_listen_backlogz&GeneralModuleTests.test_listen_backlogs����G����v�~�~�v�/A�/A�B�c����$���#��
�
�7�#�C�B��
�]�]�6�>�>�6�+=�+=�
>�#��H�H�d�A�Y���J�J�L�?�
>�	C�B��?�
>�s�)C�(C�C	�C#c�$�ddl}tjtjtj�5}|j	t
df�|j
t|j|jdz�ddd�y#1swYyxYwr)
rXrrTrArvr�r�r7rXrZ)rZrXrEs   r�test_listen_backlog_overflowz/GeneralModuleTests.test_listen_backlog_overflows^��	�
�]�]�6�>�>�6�+=�+=�
>�#��H�H�d�A�Y�����m�S�Z�Z��9J�9J�Q�9N�O�?�
>�
>�s�AB�B�IPv6 required for this test.c�d�|jttjtj
ddfd�tjtjtj�5}|jt|jtj
ddf�ddd�y#1swYyxYw)Nrr6i����)	r�r7rrArrcrgrArvr�s  r�
test_flowinfoz GeneralModuleTests.test_flowinfosw�����-��);�);�(�/�/��J�?��	D�
�]�]�6�?�?�F�,>�,>�
?�1����m�Q�V�V�m�6J�6J�A�s�5S�T�@�
?�
?�s�*3B&�&B/c��tjddtjtjtj�\�^}}|j|d�y)N�ff02::1de:c0:face:8Dr)�ff02::1de:c0:face:8drrr)rr�rgr(r�r�)rZr��sockaddrs   r�test_getaddrinfo_ipv6_basicz.GeneralModuleTests.test_getaddrinfo_ipv6_basic sJ��"�.�.�"��&�/�/�������	
���1�h�	
����#G�Hr>c���|jtj�tjd��|jtj�tjd��y)Nr�r�)r�rrrYs r�test_getfqdn_filter_localhostz0GeneralModuleTests.test_getfqdn_filter_localhost*sB��������)�6�>�>�)�+D�E�������)�6�>�>�$�+?�@r>r�zdoes not work on WindowszSymbolic scope id does not workz test needs socket.if_nameindex()c��tj�d\}}tjd|zdtjtjtj
�\�^}}|j
|ddd|f�y)Nr�ff02::1de:c0:face:8D%rrN)rr&r�rgr(r�r�)rZ�ifindex�test_interfacer�rOs     r�&test_getaddrinfo_ipv6_scopeid_symbolicz9GeneralModuleTests.test_getaddrinfo_ipv6_scopeid_symbolic.sr��%+�$7�$7�$9�!�$<�!��.�"�.�.�#�n�4��&�/�/�������	
���1�h�	
����$:�D�!�W�#M�Nr>z.Numeric scope id does not work or undocumentedc���d}tjdt|�zdtjtjtj
�\�^}}|j
|ddd|f�y)N�*rTrrNr)rr�r�rgr(r�r�)rZrUr�rOs    r�%test_getaddrinfo_ipv6_scopeid_numericz8GeneralModuleTests.test_getaddrinfo_ipv6_scopeid_numeric>sc����"�.�.�#�c�'�l�2��&�/�/�������	
���1�h�	
����$:�D�!�W�#M�Nr>c���tj�d\}}ddd|f}tj|tjtjz�}|j|d|zdf�y)NrrMr�ff02::1de:c0:face:8d%�1234)rr&rA�NI_NUMERICHOST�NI_NUMERICSERVr�)rZrUrVrO�nameinfos     r�&test_getnameinfo_ipv6_scopeid_symbolicz9GeneralModuleTests.test_getnameinfo_ipv6_scopeid_symbolicOsh��%+�$7�$7�$9�!�$<�!��.�*�D�!�W�=���%�%�h��0E�0E��H]�H]�0]�^������$;�n�$L�f�#U�Vr>c��d}ddd|f}tj|tjtjz�}|j	|dt|�zdf�y)NrYrMrrr\r])rrAr^r_r�r�)rZrUrOr`s    r�%test_getnameinfo_ipv6_scopeid_numericz8GeneralModuleTests.test_getnameinfo_ipv6_scopeid_numericZsY����*�D�!�W�=���%�%�h��0E�0E��H]�H]�0]�^������$;�c�'�l�$J�F�#S�Tr>c��tjtjtj�5}|jt	|j
�d|j
jz�|jt	|j�d|jjz�|jt|j
�t|j
j��|jt|j�t|jj��ddd�y#1swYyxYw)Nr�r�)	rrTrAr�r�r�r�rsr�r�s  r�test_str_for_enumsz%GeneralModuleTests.test_str_for_enumses����]�]�6�>�>�6�+=�+=�
>�!����T�!�(�(�^�-J�Q�X�X�^�^�-[�\����T�!�&�&�\�+I�A�F�F�L�L�+X�Y����S����]�C������,?�@����S����[�#�a�f�f�l�l�*;�<�	?�
>�
>�s�C=D9�9Ec��ttdd�}ttdd�}tj|z|z}tjtj|�5}|j	|j
tj�|j
d�|j	|j
tj�|j
d�|j	|j
tj�|jd�|j	|j
tj�|jd�|j	|j
tj�ddd�y#1swYyxYw)N�
SOCK_NONBLOCKrr�r
TF)r�rrArTr�rsr��setblocking)rZrgr��	sock_typer$s     r� test_socket_consistent_sock_typez3GeneralModuleTests.test_socket_consistent_sock_typens������;�
��v�~�q�9���&�&��6��E�	�
�]�]�6�>�>�9�
5�����Q�V�V�V�%7�%7�8�
�L�L��O����Q�V�V�V�%7�%7�8�
�L�L��O����Q�V�V�V�%7�%7�8�
�M�M�$�����Q�V�V�V�%7�%7�8�
�M�M�%� ����Q�V�V�V�%7�%7�8�6�
5�
5�s
�DE=�=Fc�n�tjtjtj�}|j�}t	tj
jj��dz}t	d�tjjj�D��dz}tj||d|��5}|j|j|�|j|j|�|j|jddh�ddd�y#1swYyxYw)Nr
c3�.K�|]
\}}|dvr|���y�w)>r�rgNrd)r�r��kinds   rr�zEGeneralModuleTests.test_unknown_socket_family_repr.<locals>.<genexpr>�s%����
�C�
��d��<�<�
�C�s�rl)r�rsr�r�r)rrTrA�detach�max�
AddressFamily�__members__�values�
SocketKindrNr�r�rsr�r�)rZrC�fd�unknown_family�unknown_typer$s      r�test_unknown_socket_family_reprz2GeneralModuleTests.test_unknown_socket_family_repr~s����}�}�V�^�^�V�-?�-?�@��
�[�[�]���V�1�1�=�=�D�D�F�G�!�K���
�$�/�/�;�;�A�A�C�
�
�
�	���]�]�%�L��������Q�X�X�~�6����Q�V�V�\�2��M�M�!�'�'�A�r�7�+�
���s
�AD+�+D4�sendfileztest needs os.sendfile()c��Gd�d�}tj�5}tjtjtj�}tj
|�|j
tj�5|j||��ddd�|j
t�5|j|ddz��ddd�|j
t�5|j|d��ddd�ddd�y#1swY�xYw#1swY�SxYw#1swY�*xYw#1swYyxYw)Nc��eZdZd�Zd�Zy)�<GeneralModuleTests.test__sendfile_use_sendfile.<locals>.Filec��||_yrI�rt)rZrts  rr�zEGeneralModuleTests.test__sendfile_use_sendfile.<locals>.File.__init__�s	����r>c��|jSrIr}rYs rr�zCGeneralModuleTests.test__sendfile_use_sendfile.<locals>.File.fileno�s���w�w�r>N)rarbrcr�r�rdr>r�Filer{�s��
�
r>rrr3)r�osr�curdir�O_RDONLYr!r��_GiveupOnSendfile�_sendfile_use_sendfiler7r�)rZrrCrts    r�test__sendfile_use_sendfilez.GeneralModuleTests.test__sendfile_use_sendfile�s���	�	��]�]�_��������B�K�K�0�B��H�H�R�L��"�"�6�#;�#;�<��+�+�D��H�5�=��"�"�=�1��+�+�D��D��M�:�2��"�"�9�-��+�+�D��J�7�.��_�=�<��1�1��-�-���_�sT�A'E�D�E�;D(�E�3D4�E�D%	�!E�(D1	�-E�4D=	�9E�E	c���|j|j|�|j|j|�|j�}t	j|��}|j|j�|j�|j|j|�|j|j|�|j|j�|�y�Nr�)r�r�rsr�rrur!rn)rZr$r��stypert�s2s      r�_test_socket_filenoz&GeneralModuleTests._test_socket_fileno�s���������6�*��������'�
�X�X�Z��
�]�]�"�
%��������!�	���
�������F�+�������%�(��������b�)r>c��tjtjtj�}|j|j�|jtjdf�|j|tjtj�ttd�r�tjtjtj�}|j|j�|jtjdf�|j|tjtj�tjr�tjtjtj�}|j|j�|jtjdddf�|j|tjtj�ttd�r�t
j�}|jtj |�tjtj"tj�}|5	|j|�|j|tj"tj�ddd�yy#t$$rY�wxYw#1swYyxYw)Nrr(rH)rrTrArur!rvrr�r�rr(r�rgrcr@rrArH�PermissionError)rZr$�	unix_names   r�test_socket_filenoz%GeneralModuleTests.test_socket_fileno�s����M�M�&�.�.�&�*<�*<�=�������� �	���
�"�"�A�&�'�� � ��F�N�N�F�4F�4F�G��6�<�(��
�
�f�n�n�f�.?�.?�@�A��O�O�A�G�G�$�
�F�F�M�&�&��*�+��$�$�Q�����8I�8I�J��%�%��
�
�f�o�o�v�/A�/A�B�A��O�O�A�G�G�$�
�F�F�M�(�(�!�Q��2�3��$�$�Q�����9K�9K�L��6�9�%�%�=�=�?�I��O�O�I�,�,�i�8��
�
�f�n�n�f�.@�.@�A�A��A��F�F�9�%��,�,�Q����-3�-?�-?�A�
��&��'�������s0�2K
�4J>�/K
�>	K
�K
�	K
�
K
�
Kc��|jt�5tjtjtjd��ddd�y#1swYyxYw)Ng@E@r��r�r�rrTrArYs r� test_socket_fileno_rejects_floatz3GeneralModuleTests.test_socket_fileno_rejects_float�s6��
�
�
�y�
)��M�M�&�.�.�&�*<�*<�T�J�*�
)�
)���5A�Ac��|jt�5tjtjtjd��ddd�y#1swYyxYw)Nr�r�r�rYs r�&test_socket_fileno_rejects_other_typesz9GeneralModuleTests.test_socket_fileno_rejects_other_types�s6��
�
�
�y�
)��M�M�&�.�.�&�*<�*<�U�K�*�
)�
)�r�c���|jtd�5tjtjtjd��ddd�y#1swYyxYw)N�negative file descriptorr2r��r�r}rrTrArYs r�)test_socket_fileno_rejects_invalid_socketz<GeneralModuleTests.test_socket_fileno_rejects_invalid_socket�s:��
�
#�
#�J�0J�
K��M�M�&�.�.�&�*<�*<�R�H�L�
K�
K���5A�AzWindows disallows -1 onlyc���|jtd�5tjtjtjd��ddd�y#1swYyxYw)Nr�i���r�r�rYs r�#test_socket_fileno_rejects_negativez6GeneralModuleTests.test_socket_fileno_rejects_negative�s:��
�
#�
#�J�0J�
K��M�M�&�.�.�&�*<�*<�S�I�L�
K�
K�r�c�d�d}|jt�5}tjtj���ddd�|jjjtj|f�|jt�5}tjtjtjtj���ddd�|j|jjtj|f�y#1swY��xYw#1swY�LxYw)Ni6'r�)r�rrr�make_bad_fdr�r�r"r�rTrA)rZ�WSAENOTSOCKr�s   r�$test_socket_fileno_requires_valid_fdz7GeneralModuleTests.test_socket_fileno_requires_valid_fd�s�����
�
�
�w�
'�2��M�M��!6�!6�!8�9�(��
�
�b�l�l�(�(�5�;�;��*D�E�
�
�
�w�
'�2��M�M�����"�"� �,�,�.�
0�(�
	
�
�
�b�l�l�(�(�5�;�;��*D�E�(�
'��(�
'�s�)D�AD&�D#�&D/c�2�tj�5}|jt�5t	j|j���ddd�|jt�5}t	jtjtj|j���ddd�|jjjtj�ddd�y#1swY��xYw#1swY�RxYw#1swYyxYwr�)�tempfile�NamedTemporaryFiler�rrr�rTrAr�r�r"r�)rZ�afiler�s   r�%test_socket_fileno_requires_socket_fdz8GeneralModuleTests.test_socket_fileno_requires_socket_fd�s���
�
(�
(�
*�e��"�"�7�+��
�
�U�\�\�^�4�,��"�"�7�+�r��
�
��N�N��&�&� �<�<�>�+�,�

���R�\�\�/�/����@�+�
*�+�+��,�+��	+�
*�s;�D
�%C5�D
�-AD�0<D
�5C>	�:D
�D
	�D
�
Dc��ddl}ddl}|j|jddd�|��}|j	|t
j�y)Nrrprc�H�|j�xr|jd�S)N�AF_��isupperro��Cs rrpz<GeneralModuleTests.test_addressfamily_enum.<locals>.<lambda>���!�)�)�+�=�!�,�,�u�*=�=r>��source)r��enum�
_old_convert_�IntEnum�_test_simple_enumrrp)rZr�r��CheckedAddressFamilys    r�test_addressfamily_enumz*GeneralModuleTests.test_addressfamily_enumsE���#�1�1����o�x�=�� 2� ��
	
���3�V�5I�5I�Jr>c��ddl}ddl}|j|jddd�|��}|j	|t
j�y)Nrrsrc�H�|j�xr|jd�S)N�SOCK_r�r�s rrpz9GeneralModuleTests.test_socketkind_enum.<locals>.<lambda>
s��!�)�)�+�?�!�,�,�w�*?�?r>r�)r�r�r�r�r�rrs)rZr�r��CheckedSocketKinds    r�test_socketkind_enumz'GeneralModuleTests.test_socketkind_enum	sE��� �.�.����l�H�?��/���
	
���0�&�2C�2C�Dr>c��ddl}ddl}|j|jddd�|��}|j	|t
j�y)Nr�MsgFlagrc�H�|j�xr|jd�S)N�MSG_r�r�s rrpz6GeneralModuleTests.test_msgflag_enum.<locals>.<lambda>s��!�)�)�+�>�!�,�,�v�*>�>r>r�)r�r�r��IntFlagr�rr�)rZr�r��CheckedMsgFlags    r�test_msgflag_enumz$GeneralModuleTests.test_msgflag_enumsA����+�+����i��>��,���
	
���~�v�~�~�>r>c��ddl}ddl}|j|jddd�|��}|j	|t
j�y)Nr�AddressInforc�H�|j�xr|jd�S)N�AI_r�r�s rrpz:GeneralModuleTests.test_addressinfo_enum.<locals>.<lambda>r�r>r�)r�r�r�r�r�rr�)rZr�r��CheckedAddressInfos    r�test_addressinfo_enumz(GeneralModuleTests.test_addressinfo_enumsE���!�/�/����m�X�=��0� ��	
���1�6�3E�3E�Fr>)brarbrcr��
skipUnlessr�r�r�r�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�r��is_resource_enabledr�rrrr r$r*r,r6r:rBrFrHrKrPrRrrWrZrarcrerjrwr�r�r�r�r�r�r�r�r�r�r�r�r�rdr>rr�r�@s<���X�����,�.C�D�#�E�#�
�+��X�����,�.C�D�
,�E�
,�3�"�(6�T� ��X������D��*<�=��>���X�_�_�W�_�_�&E�F�
>�G�
>��X�������1�3H�I��X����3�3�5R�S��T�J��:v�&?�+�"�X������7�9Z�[��X������7�9Z�[�&�\�\�&�$�X������8�?�A�*�A�*��X�����)9�:�A�C�5�C�5�"�X�����)9�:�A�C�G�C�G��X�����m�4�7�9�B�9�B��:�
���>��>�.*F�XG�2�X������5�8�:�I�:�I��X������5�8�:� �:� �>�X������5�8�:�<1�:�<1�|�X������5�8�:�M�:�M�0�X������5�8�:�#�:�#�D(�:>�A�7�
=�,��(�X������D��*<�=�	:�>�	:��X������D��*<�=��X�����)A�B�L�N�S�N�>�S�N�`.B�`Q��X���4��4�4�Y�?�1�3�
I�3�
I��>.�-�!�"G�	7�� 8�,�	7��
���P��P��X����3�3�5S�T�U�U�U��X����3�3�5S�T�I�U�I�A��X����3�3�5S�T��X�_�_�S�\�\�W�,�.H�I��X�_�_�S�;�<��X������8�:\�]�
O�^�=�J�U�
O��X����3�3�5S�T��X��������8�:�O�:�U�O��X����3�3�5S�T��X�_�_�S�\�\�W�,�.H�I��X�_�_�S�;�<��X������8�:\�]�W�^�=�J�U�W��X����3�3�5S�T��X���#�,�,�'�1�8�:�U�:�U�U�=�9� ,�2�X�����Z�0�2L�M�8�N�8�"*�A�@K�L�I��X�_�_�R�W�W��_�&A�B�J�C�J�F�
A�K�E�?�Gr>r�z!SocketCan required for this test.c�$�eZdZd�Zej
eed�d�d��Zd�Z	ej
eed�d�d��Z
d�Zd�Zej
eed	�d
�d��Z
ej
eed�d
�d��Zy)�BasicCANTestc�d�tjtjtjyrI)r�AF_CANrr rYs rr�z!BasicCANTest.testCrucialConstants's���
�
��
�
���r>�CAN_BCM�&socket.CAN_BCM required for this test.c��tjtjtjtjtj
tjtjtjtjtjtjtjtjtjtjtj tj"tj$tj&tj(tj*tj,tj.tj0yrI)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_FRAMErYs r�testBCMConstantszBasicCANTest.testBCMConstants,s���	���	���� � ����������� � ����� � ��!�!�� � ��!�!��!�!�	����!�!��"�"��"�"��#�#��#�#��#�#��&�&��)�)��)�)��#�#r>c��tjtjtjtj�5}	ddd�y#1swYyxYwrI�rrrr r�s  r�testCreateSocketzBasicCANTest.testCreateSocketL�0��
�]�]�6�=�=�&�/�/�6�>�>�
J�a��K�
J�
J���A
�
Ac��tjtjtjtj�5}	ddd�y#1swYyxYwrI)rrr(r�r�s  r�testCreateBCMSocketz BasicCANTest.testCreateBCMSocketPs5���]�]�6�=�=�&�*;�*;�V�^�^�
L�PQ��M�
L�
L�r�c��tjtjtjtj�5}d}|j	|�|j|j
�|�ddd�y#1swYyxYw)N)r�)rrrr rvr�r�)rZr$�addresss   r�testBindAnyzBasicCANTest.testBindAnyVsS��
�]�]�6�=�=�&�/�/�6�>�>�
J�a��G�
�F�F�7�O����Q�]�]�_�g�6�K�
J�
J�s�4A?�?Bc���tjtjtjtj�5}|j	t
d|jd�ddd�y#1swYyxYw)N�interface name too long)�xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx)rrrr r�rrvr�s  r�testTooLongInterfaceNamez%BasicCANTest.testTooLongInterfaceName\sI��
�]�]�6�=�=�&�/�/�6�>�>�
J�a��"�"�7�,E�#$�6�6�=�
:�K�
J�
J�s�#A.�.A7�CAN_RAW_LOOPBACKz/socket.CAN_RAW_LOOPBACK required for this test.c	��tjtjtjtj�5}dD]o}|j	tj
tj|�|j||jtj
tj���q	ddd�y#1swYyxYw)N)rr
)	rrrr r��SOL_CAN_RAWr�r�r�)rZr$�loopbacks   r�testLoopbackzBasicCANTest.testLoopbackbs����]�]�6�=�=�&�/�/�6�>�>�
J�a�"�����V�/�/��1H�1H�%�'�� � ���L�L��!3�!3�V�5L�5L�M�O�#�K�
J�
J�s
�A5C�C
�CAN_RAW_FILTERz-socket.CAN_RAW_FILTER required for this test.c	�4�d\}}tjd||�}tjtjtjtj
�5}|j
tjtj|�|j||jtjtjd��|j
tjtjt|��ddd�y#1swYyxYw)N)�iz=IIrq)r�packrrrr r�r�r�r�r�r�)rZ�can_id�can_mask�
can_filterr$s     r�
testFilterzBasicCANTest.testFilterls���(�����[�[����9�
�
�]�]�6�=�=�&�/�/�6�>�>�
J�a�
�L�L��+�+�V�-B�-B�J�O����Z��L�L��!3�!3�V�5J�5J�A�N�
P�
�L�L��+�+�V�-B�-B�I�j�DY�Z�	K�
J�
J�s
�B'D�DN)rarbrcr�r�r�rrr�r�r�r�r�r�rrdr>rr�r�$s����
�X������3�A�C�$�C�$�<��X������3�A�C��C��7�:��X�����);�<�J�L�O�L�O��X�����)9�:�H�J�[�J�[r>r�c���eZdZdd�Zed��Zed��Zd�Zd�Zd�Z	d�Z
d�Zd	�Ze
jeed
�d�d��Ze
jeed
�d�d
��Zy)�CANTestc�2�tj||��yr�)r�r�r�s  rr�zCANTest.__init__{rr>c��t|�}|jdd�}tj|j|||�S)zBuild a CAN frame.rq�)r��ljustrrr{)�clsr�data�can_dlcs    r�build_can_framezCANTest.build_can_frame~s8���d�)���z�z�!�W�%���{�{�3�,�,�f�g�t�D�Dr>c�Z�tj|j|�\}}}|||d|fS)zDissect a CAN frame.N)rrr{)r�framerrr
s     r�dissect_can_framezCANTest.dissect_can_frame�s4��!'�
�
�c�.?�.?�� G��������h�w��0�0r>c���|jj|j�\}}|j|j|�|j|d|j
�yr�)r$r�rzr��cfrw�rZrr
s   r�
testSendFramezCANTest.testSendFrame�sH���6�6�?�?�4�<�<�0���D�������"�%�����a��$�.�.�1r>c�|�|jdd�|_|jj|j�y)Nrs�rrr�r�rYs r�_testSendFramezCANTest._testSendFrame�s+���&�&�t�-D�E������
�
�d�g�g�r>c��|jj|j�\}}|j|j|�yrI)r$r�rzr�rrs   r�testSendMaxFramezCANTest.testSendMaxFrame�s0���6�6�?�?�4�<�<�0���D�������"�%r>c�|�|jdd�|_|jj|j�y)NrsrrYs r�_testSendMaxFramezCANTest._testSendMaxFrame�s*���&�&�t�[�9������
�
�d�g�g�r>c��|jj|j�\}}|j|j|�|jj|j�\}}|j|j
|�yrI)r$r�rzr��cf1�cf2rs   r�testSendMultiFrameszCANTest.testSendMultiFrames�s^���6�6�?�?�4�<�<�0���D�������2�&��6�6�?�?�4�<�<�0���D�������2�&r>c���|jdd�|_|jj|j�|jdd�|_|jj|j�y)N�sD3"�s�"3)rrr�r�r rYs r�_testSendMultiFrameszCANTest._testSendMultiFrames�sS���'�'��.A�B������
�
�d�h�h���'�'��o�>������
�
�d�h�h�r>r�r�c�&�|jj|j�\}}|j|j|�|j|�\}}}|j|j|�|j|j|�yrI)r�r�rzr�rrrr
)rZrr
rrr
s      r�_testBCMzCANTest._testBCM�ss���8�8�$�$�T�\�\�2���D�������"�%� $� 6� 6�r� :�����������f�-�������D�)r>c��tjtjtjtj�}|j	|j
�|j
|jf�d|_tgd��|_
|j|j|j�|_tj}d}d}dx}x}x}}d}	d}
t|j�dk(sJ�tj |j"||||||||	|
�
}||jz}|j%|�}
|j'|
t|��y)N�#)����ri"r
rH)rrr(r�rur!r�rwr�bytesr
rrr�r�rrr~r�r�)rZ�bcm�opcoder�r��
ival1_seconds�
ival1_usec�
ival2_seconds�
ival2_usec�
bcm_can_id�nframes�header�header_plus_frame�
bytes_sents              r�testBCMzCANTest.testBCM�s'���m�m�F�M�M�6�+<�+<�f�n�n�M������	�	�"����T�^�^�%�&�����,�-��	��&�&�t�{�{�D�I�I�>����'�'������BC�C�
�C�
�C�]�Z��
����4�7�7�|�r�!�!�!����T�1�1����!��!����
��#�T�W�W�,���X�X�/�0�
�����S�):�%;�<r>Nr�)rarbrcr��classmethodrrrrrrr!r%r�r�rrr'r9rdr>rrrxs���D��E��E��1��1�
2�
�&��'� ��X������3�A�C�*�C�*��X������3�A�C�=�C�=r>rz!CAN ISOTP required for this test.c�v��eZdZ�fd�Zd�Zd�Zejee	d�d�d��Z
d�Zd�Z�xZ
S)	�	ISOTPTestc�2��t�|�|i|��d|_y�Nrn�r&r�rwr.s   �rr�zISOTPTest.__init__�����
���$�)�&�)� ��r>c��tjtjtjtjyrI)rr�rr)r(rYs rr�zISOTPTest.testCrucialConstants�s"���
�
��
�
������r>c��tjtjtjtj�5}	ddd�y#1swYyxYwrIr�r�s  rr�zISOTPTest.testCreateSocket�r�r�r)z(socket.CAN_ISOTP required for this test.c��tjtjtjtj�5}	ddd�y#1swYyxYwrI)rrr(r)r�s  r�testCreateISOTPSocketzISOTPTest.testCreateISOTPSocket��7���]�]�6�=�=�&�*;�*;�V�=M�=M�
N�RS��O�
N�
N�r�c�(�tjtjtjtj�5}|j	t
d�5|j
d�ddd�ddd�y#1swY�xYw#1swYyxYw)Nr�)r�r
r)rrr(r)r�rrvr�s  rr�z"ISOTPTest.testTooLongInterfaceName�sc��
�]�]�6�=�=�&�*;�*;�V�=M�=M�
N�RS��'�'��1J�K����)�*�L�O�
N�K�K��O�
N�s$�B�A<�+B�<B	�B�Bc���	tjtjtjtj�5}|jddf}|j|�|j
|j�|�ddd�y#1swYyxYw#t$rG}|jtjk(r|jd|jz�n�Yd}~yd}~wwxYw)Nr)iVrt)rrr(r)rwrvr�r�rr"�ENODEVrx�rZr$r
r�s    r�testBindzISOTPTest.testBind�s���
	����v�}�}�f�.?�.?��AQ�AQ�R�VW��~�~�u�e�3�����t��� � �����$�7�S�R�R���	��w�w�%�,�,�&��
�
�E��>�>�*�+��+��	�s7�AB�AB
�B�
B�B�B�	C)�"=C$�$C))rarbrcr�r�r�r�r�rrrDr�rJr)r*s@rr<r<�sK���!����X������5�C�E��E��+�r>r<z!CAN J1939 required for this test.c���eZdZ�fd�Zej
eed�d�d��Zej
eed�d�d��Z	d�Z
�xZS)�	J1939Testc�2��t�|�|i|��d|_yr>r?r.s   �rr�zJ1939Test.__init__	r@r>r-z(socket.CAN_J1939 required for this test.c��tjtjtjtjtj
tjtjtjtjtjtjtjtjtjtjtj tj"tj$tj&tj(tj*tj,tj.tj0yrI)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_MAXrYs r�testJ1939ConstantszJ1939Test.testJ1939Constants	s���	����%�%����������� � ��(�(��*�*��!�!�������	�������!�!�� � ��"�"��"�"�����!�!�����$�$��!�!��%�%���r>c��tjtjtjtj�5}	ddd�y#1swYyxYwrI)rrr(r-r�s  r�testCreateJ1939SocketzJ1939Test.testCreateJ1939Socket(	rEr�c�.�	tjtjtjtj�5}|jtj
tjtjf}|j|�|j|j�|�ddd�y#1swYyxYw#t$rG}|jtjk(r|jd|jz�n�Yd}~yd}~wwxYwrs)rrr(r-rwrRrXrQrvr�r�rr"rHrxrIs    rrJzJ1939Test.testBind.	s���
	����v�}�}�f�.?�.?��AQ�AQ�R�VW��~�~�v�';�';�V�=P�=P�RX�Rf�Rf�f�����t��� � �����$�7�S�R�R���	��w�w�%�,�,�&��
�
�E��>�>�*�+��+��	�s7�AC�A,B8�/C�8C�=C�C�	D�
=D�D)rarbrcr�r�r�rrrfrhrJr)r*s@rrLrL�sl���!��X������5�C�E� �E� �B�X������5�C�E��E��r>rLz#RDS sockets required for this test.c��eZdZd�Zd�Zd�Zy)�BasicRDSTestc�D�tjtjyrI)r�AF_RDSr0rYs rr�z!BasicRDSTest.testCrucialConstants?	s���
�
��
�
r>c��tjtjtjd�5}	ddd�y#1swYyxYwr�)rr0r1r�s  rr�zBasicRDSTest.testCreateSocketC	s.��
�]�]�6�=�=�&�*?�*?��
C�q��D�
C�
C�s	�?�Ac�T�d}tjtjtjd�5}|jtjtj
|�|jtjtj|�ddd�y#1swYyxYw)Ni@r)rr0r1r�r��	SO_RCVBUF�	SO_SNDBUF)rZrzr$s   r�testSocketBufferSizez!BasicRDSTest.testSocketBufferSizeG	sh����
�]�]�6�=�=�&�*?�*?��
C�q�
�L�L��*�*�F�,<�,<�g�F�
�L�L��*�*�F�,<�,<�g�F�D�
C�
C�s�AB�B'N)rarbrcr�r�rrrdr>rrkrk<	s����Gr>rkc���eZdZdd�Z�fd�Zd�Zd�Zd�Zd�Ze	e
jd�d��Ze	e
jd	�d
��Zd�Z
d�Zd
�Zd�Z�xZS)�RDSTestc�2�tj||��yr�)r�r�r�s  rr�zRDSTest.__init__Q	rr>c�T��t�|��tj�|_yrI)r&r[r�r��evtr's �rr[z
RDSTest.setUpT	s���
��
���?�?�$��r>c���|jj|j�\}}|j|j|�|j|j
|�yrI)rUr�rzr�r
r��rZr
r
s   r�testSendAndRecvzRDSTest.testSendAndRecvX	sF���Y�Y�'�'����5�
��d�������D�)��������-r>c��d|_|jj|jdt|jf�y�Nr�r�r
r�r�r�rWrYs r�_testSendAndRecvzRDSTest._testSendAndRecv]	�*����	�������	�	�1�t�T�Y�Y�&7�8r>c�2�|jj|jtj�\}}|j|j|�|jj|j�\}}|j|j|�yrI)rUr�rzr�MSG_PEEKr�r
rys   r�testPeekzRDSTest.testPeeka	sh���Y�Y�'�'����f�o�o�F�
��d�������D�)��Y�Y�'�'����5�
��d�������D�)r>c��d|_|jj|jdt|jf�yr|r}rYs r�	_testPeekzRDSTest._testPeekg	rr>�recvmsgc��|jj|j�\}}}}|j|j|�yrI)rUr�rzr�r
)rZr
�ancdata�	msg_flagsr
s     r�testSendAndRecvMsgzRDSTest.testSendAndRecvMsgk	s7��)-���):�):�4�<�<�)H�&��g�y�$�������D�)r>�sendmsgc��d|_|jj|jgddt|jf�y)Ns<hello hello hello hello hello hello hello hello hello hello rdr)r
r�r�r�rWrYs r�_testSendAndRecvMsgzRDSTest._testSendAndRecvMsgp	s0��"��	������$�)�)��b�!�d�D�I�I�->�?r>c��|jj|j�\}}|j|j|�|jj|j�\}}|j|j
|�yrI)rUr�rzr��data1�data2rys   r�testSendAndRecvMultizRDSTest.testSendAndRecvMultiu	sb���Y�Y�'�'����5�
��d�������T�*��Y�Y�'�'����5�
��d�������T�*r>c��d|_|jj|jdt|jf�d|_|jj|j
dt|jf�y)Nsbaconrsegg)r�r�r�r�rWr�rYs r�_testSendAndRecvMultizRDSTest._testSendAndRecvMulti|	sR����
�������
�
�A��d�i�i�'8�9���
�������
�
�A��d�i�i�'8�9r>c��tj|jgggd�\}}}|j|j|�|jj|j�\}}|j|j|�y)Ng@)�selectrUr�r�rzr�r
)rZrr/rpr
r
s      r�
testSelectzRDSTest.testSelect�	sd���-�-�����R��S�9���1�a��
�
�d�i�i��#��Y�Y�'�'����5�
��d�������D�)r>c��d|_|jj|jdt|jf�y)Nsselectrr}rYs r�_testSelectzRDSTest._testSelect�	s*����	�������	�	�1�t�T�Y�Y�&7�8r>r�)rarbrcr�r[rzr~r�r�r�rr�r�r�r�r�r�r)r*s@rrtrtN	sv���D�%�.�
9�*�9��&�-�-��+�*�,�*��&�-�-��+�@�,�@�+�:�*�9r>rtz'QIPCRTR sockets required for this test.c�0�eZdZd�Zd�Zd�Zd�Zd�Zd�Zy)�BasicQIPCRTRTestc�$�tjyrI)rr9rYs rr�z%BasicQIPCRTRTest.testCrucialConstants�	s����r>c��tjtjtj�5}	ddd�y#1swYyxYwrI)rr9r(r�s  rr�z!BasicQIPCRTRTest.testCreateSocket�	s.��
�]�]�6�,�,�f�.?�.?�
@�A��A�
@�
@��	�>�Ac���tjtjtj�5}|j|j	�dd�ddd�y#1swYyxYw�Nr
r)rr9r(r�r�r�s  r�testUnboundzBasicQIPCRTRTest.testUnbound�	sF��
�]�]�6�,�,�f�.?�.?�
@�A����Q�]�]�_�Q�/��3�A�
@�
@�s�$A � A)c�(�tjtjtj�5}tj||j�d��|j
|j�dd�ddd�y#1swYyxYw)NrrPr
)rr9r(rrVr��assertNotEqualr�s  r�testBindSockzBasicQIPCRTRTest.testBindSock�	sa��
�]�]�6�,�,�f�.?�.?�
@�A��#�#�A�A�M�M�O�A�,>�?�����
�
��� 2�A�6�A�
@�
@�s�AB�Bc���tjtjtj�5}|jtt
j|d��ddd�y#1swYyxYw)NrVrP)rr9r(r�rrrVr�s  r�testInvalidBindSockz$BasicQIPCRTRTest.testInvalidBindSock�	sH��
�]�]�6�,�,�f�.?�.?�
@�A����g�}�'>�'>����K�A�
@�
@�s�(A$�$A-c��tjtjtj�5}|jd�|j	|j�dd�ddd�y#1swYyxYw)N)�{r�r
r)rr9r(r�r�r�r�s  r�testAutoBindSockz!BasicQIPCRTRTest.testAutoBindSock�	sR��
�]�]�6�,�,�f�.?�.?�
@�A�
�I�I�j�!�����
�
��� 2�A�6�A�
@�
@�s�5A1�1A:N)	rarbrcr�r�r�r�r�r�rdr>rr�r��	s!����4�7�
L�7r>r�c�$�eZdZd�Zd�Zd�Zd�Zy)�BasicVSOCKTestc�$�tjyrI)rr�rYs rr�z#BasicVSOCKTest.testCrucialConstants�	s	����r>c��tjtjtjtjtj
tjtjtjyrI)	r�SO_VM_SOCKETS_BUFFER_SIZE�SO_VM_SOCKETS_BUFFER_MIN_SIZE�SO_VM_SOCKETS_BUFFER_MAX_SIZEr��VMADDR_PORT_ANYr��VM_SOCKETS_INVALID_VERSIONrrYs r�testVSOCKConstantsz!BasicVSOCKTest.testVSOCKConstants�	sJ���(�(��,�,��,�,�����������)�)��-�-r>c��tjtjtj�5}	ddd�y#1swYyxYwrI)rr�rAr�s  rr�zBasicVSOCKTest.testCreateSocket�	s,��
�]�]�6�?�?�F�,>�,>�
?�1��@�
?�
?�r�c�X�tjtjtj�5}|jtjtj�}|jtjtj
�}|jtjtj�}|jtjtj|dz�|jtjtj
|dz�|jtjtj|dz�|j|dz|jtjtj��|j|dz|jtjtj
��|j|dz|jtjtj��ddd�y#1swYyxYw�Nr)	rr�rAr�r�r�r�r�r�)rZr$�orig_maxrB�orig_mins     rrrz#BasicVSOCKTest.testSocketBufferSize�	s���
�]�]�6�?�?�F�,>�,>�
?�1��|�|�F�O�O�$*�$H�$H�J�H��<�<���� &� @� @�B�D��|�|�F�O�O�$*�$H�$H�J�H�
�L�L�����=�=�x�!�|�
M�
�L�L�����9�9�4�!�8�
E�
�L�L�����=�=�x�!�|�
M�
���X��\��\�\�&�/�/�#�A�A�C�
D�
���T�A�X��\�\�&�/�/�#�=�=�?�
@�
���X��\��\�\�&�/�/�#�A�A�C�
D�+@�
?�
?�s�G$H � H)N)rarbrcr�r�r�rrrdr>rr�r��	s��
�.��Dr>r�z)Bluetooth sockets required for this test.c�6�eZdZd�Zd�Zejejdk(d�d��Z	ejejdk(d�d��Z
ejejdk(xsejjd�d	�d
��Zy)�BasicBluetoothTestc�l�tjtjtjtjt
jdk7ratjtjtjt
jjd�stjyyy)Nr�rb)r�
BDADDR_ANY�BDADDR_LOCALr@rBr@rn�BTPROTO_HCI�SOL_HCI�
BTPROTO_L2CAPro�BTPROTO_SCOrYs r�testBluetoothConstantsz)BasicBluetoothTest.testBluetoothConstants�	sp���������������<�<�7�"�����N�N�� � ��<�<�*�*�9�5��"�"�6�#r>c��tjtjtjtj�5}	ddd�y#1swYyxYwrI)rr@rArBr�s  r�testCreateRfcommSocketz)BasicBluetoothTest.testCreateRfcommSocket�	s7��
�]�]�6�.�.��0B�0B�F�DY�DY�
Z�^_��[�
Z�
Z�r�r�z&windows does not support L2CAP socketsc��tjtjtjtj�5}	ddd�y#1swYyxYwrI)rr@r1r�r�s  r�testCreateL2capSocketz(BasicBluetoothTest.testCreateL2capSocket�	s7��
�]�]�6�.�.��0E�0E�v�G[�G[�
\�`a��]�
\�
\�r�z$windows does not support HCI socketsc��tjtjtjtj�5}	ddd�y#1swYyxYwrI)rr@rr�r�s  r�testCreateHciSocketz&BasicBluetoothTest.testCreateHciSocket�	s5��
�]�]�6�.�.�����AS�AS�
T�XY��U�
T�
T�r�rbz.windows and freebsd do not support SCO socketsc��tjtjtjtj�5}	ddd�y#1swYyxYwrI)rr@r1r�r�s  r�testCreateScoSocketz&BasicBluetoothTest.testCreateScoSocket�	s9���]�]�6�.�.��0E�0E�v�GY�GY�
Z�^_��[�
Z�
Z�r�N)
rarbrcr�r�r�r�r@rnr�r�ror�rdr>rr�r��	s���#���X�_�_�S�\�\�W�,�.V�W��X���X�_�_�S�\�\�W�,�.T�U��V���X�_�_�S�\�\�W�,�R����0G�0G�	�0R�E�G��G�r>r�z'Hyper-V sockets required for this test.c�6�eZdZd�Zd�Zd�Zd�Zd�Zd�Zd�Z	y)	�BasicHyperVTestc�D�tjtjtjtjtj
tjtjtjtjtjyrI)r�HVSOCKET_CONNECT_TIMEOUT�HVSOCKET_CONNECT_TIMEOUT_MAX�HVSOCKET_CONNECTED_SUSPEND�HVSOCKET_ADDRESS_FLAG_PASSTHRU�HV_GUID_ZERO�HV_GUID_WILDCARD�HV_GUID_BROADCAST�HV_GUID_CHILDREN�HV_GUID_LOOPBACK�HV_GUID_PARENTrYs r�testHyperVConstantsz#BasicHyperVTest.testHyperVConstants
s\���'�'��+�+��)�)��-�-�������� � ���������r>c���d}|jt|�5tjtjtj�ddd�y#1swYyxYw)Nz\[WinError 10041\])r�rrrErA)rZr�s  r�-testCreateHyperVSocketWithUnknownProtoFailurez=BasicHyperVTest.testCreateHyperVSocketWithUnknownProtoFailure
s=��(��
�
#�
#�G�X�
6��M�M�&�*�*�F�,>�,>�?�7�
6�
6�s�3A�Ac�n�d}tjtjtjtj�5}|j	t
t
j|��5|jtj�ddd�ddd�y#1swY�xYw#1swYyxYw)Nz3connect(): AF_HYPERV address must be tuple, not str�
rrErArFr�r��re�escaper�r��rZr�r$s   r�)testCreateHyperVSocketAddrNotTupleFailurez9BasicHyperVTest.testCreateHyperVSocketAddrNotTupleFailure
sw��H��
�]�]�6�+�+�V�-?�-?��AW�AW�
X�\]��'�'�	�2�9�9�X�3F�G��	�	�&�-�-�.�H�Y�
X�G�G��Y�
X�s$�*B+�. B�B+�B(	�$B+�+B4c�p�d}tjtjtjtj�5}|j	t
t
j|��5|jtjf�ddd�ddd�y#1swY�xYw#1swYyxYw)N�9AF_HYPERV address must be a str tuple (vm_id, service_id)r�r�s   r�0testCreateHyperVSocketAddrNotTupleOf2StrsFailurez@BasicHyperVTest.testCreateHyperVSocketAddrNotTupleOf2StrsFailure
sz��N��
�]�]�6�+�+�V�-?�-?��AW�AW�
X�\]��'�'�	�2�9�9�X�3F�G��	�	�6�.�.�0�1�H�Y�
X�G�G��Y�
X�s$�*B,�.!B �B,� B)	�%B,�,B5c�R�d}tjtjtjtj�5}|j	t
t
j|��5|jd�ddd�ddd�y#1swY�xYw#1swYyxYw)Nr�)r
r)	rrErArFr�r�r�r�r�r�s   r�/testCreateHyperVSocketAddrNotTupleOfStrsFailurez?BasicHyperVTest.testCreateHyperVSocketAddrNotTupleOfStrsFailure#
sq��N��
�]�]�6�+�+�V�-?�-?��AW�AW�
X�\]��'�'�	�2�9�9�X�3F�G��	�	�&�!�H�Y�
X�G�G��Y�
X�s$�*B�.B�B�B	�B�B&c�r�d}tjtjtjtj�5}|j	t
t
j|��5|jdtjf�ddd�ddd�y#1swY�xYw#1swYyxYw)Nz=connect(): AF_HYPERV address vm_id is not a valid UUID string�00�
rrErArFr�r}r�r�r�r�r�s   r�1testCreateHyperVSocketAddrVmIdNotValidUUIDFailurezABasicHyperVTest.testCreateHyperVSocketAddrVmIdNotValidUUIDFailure)
s|��R��
�]�]�6�+�+�V�-?�-?��AW�AW�
X�\]��'�'�
�B�I�I�h�4G�H��	�	�4��!4�!4�5�6�I�Y�
X�H�H��Y�
X��$�*B-�."B!�B-�!B*	�&B-�-B6c�r�d}tjtjtjtj�5}|j	t
t
j|��5|jtjdf�ddd�ddd�y#1swY�xYw#1swYyxYw)NzBconnect(): AF_HYPERV address service_id is not a valid UUID stringr�r�r�s   r�6testCreateHyperVSocketAddrServiceIdNotValidUUIDFailurezFBasicHyperVTest.testCreateHyperVSocketAddrServiceIdNotValidUUIDFailure/
s|��W��
�]�]�6�+�+�V�-?�-?��AW�AW�
X�\]��'�'�
�B�I�I�h�4G�H��	�	�6�.�.��5�6�I�Y�
X�H�H��Y�
X�r�N)
rarbrcr�r�r�r�r�r�r�rdr>rr�r�
s&��
�@�
/�2�"�7�7r>r�c���eZdZdd�Zd�Zd�Zd�Zd�Zd�Zd�Z	d�Z
d	�Zd
�Zd�Z
d�Zd
�Zd�Zd�Zd�Zd�Zej*e�Zej*d��Zd�Zd�Zy)�BasicTCPTestc�2�tj||��yr��rr�r�s  rr�zBasicTCPTest.__init__8
����$�$�T�j�$�Ar>c�f�|jjd�}|j|t�yr�)rr�r�r�r�s  r�testRecvzBasicTCPTest.testRecv;
s&���m�m� � ��&������c�"r>c�B�|jjt�yrI�r
r�r�rYs r�	_testRecvzBasicTCPTest._testRecv@
��������C� r>c���|jjtt�dz
�}|jjd�}||z}|j	|t�y�N�r�)rr�r�r�r�)rZ�seg1�seg2r�s    r�testOverFlowRecvzBasicTCPTest.testOverFlowRecvC
sK���}�}�!�!�#�c�(�Q�,�/���}�}�!�!�$�'���T�k������c�"r>c�B�|jjt�yrIr�rYs r�_testOverFlowRecvzBasicTCPTest._testOverFlowRecvJ
r�r>c�l�|jjd�\}}|j|t�yr�)rr�r�r��rZr�r
s   r�testRecvFromzBasicTCPTest.testRecvFromM
s*���M�M�*�*�4�0�	��T�����c�"r>c�B�|jjt�yrIr�rYs r�
_testRecvFromzBasicTCPTest._testRecvFromR
r�r>c���|jjtt�dz
�\}}|jjd�\}}||z}|j	|t�yr�)rr�r�r�r�)rZr�r
r�r�s     r�testOverFlowRecvFromz!BasicTCPTest.testOverFlowRecvFromU
sS���]�]�+�+�C��H�Q�J�7�
��d��]�]�+�+�D�1�
��d��T�k������c�"r>c�B�|jjt�yrIr�rYs r�_testOverFlowRecvFromz"BasicTCPTest._testOverFlowRecvFrom\
r�r>c�v�d}	|jjd�}|sn||z
}�$|j|d�y)Nr>r��ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff)rr�r�)rZr��reads   r�testSendAllzBasicTCPTest.testSendAll_
sD������=�=�%�%�d�+�D����4�K�C�	�
	
����k�*r>c�>�d}|jj|�y)Nr)r
r)rZ�	big_chunks  r�_testSendAllzBasicTCPTest._testSendAlli
s���	������y�)r>c�b�|jj�}tj|tjtj
�}|j
|j�|j|tj�|jd�}|j|t�yr�)rr�r�fromfdrTrArur!r�r�r�r�)rZrtrCr�s    r�
testFromFdzBasicTCPTest.testFromFdm
sq��
�]�]�
!�
!�
#���}�}�R�����1C�1C�D������
�
�#����d�F�M�M�2��i�i��o������c�"r>c�B�|jjt�yrIr�rYs r�_testFromFdzBasicTCPTest._testFromFdv
r�r>c��|jj�}|j|j�|j	d�}|j|t�yr�)r�duprur!r�r�r�)rZrCr�s   r�testDupzBasicTCPTest.testDupy
sA���}�}� � �"������
�
�#��i�i��o������c�"r>c�B�|jjt�yrIr�rYs r�_testDupzBasicTCPTest._testDup�
r�r>c��|jjd�}|j|t�|jj�yr�)rr�r�r�r�r�r�s  r�testShutdownzBasicTCPTest.testShutdown�
s6���m�m� � ��&������c�"�	
�	�	���r>c�x�|jjt�|jjd�yr�)r
r�r�r�rYs r�
_testShutdownzBasicTCPTest._testShutdown�
s&�������C� �������"r>c�f�ddl}|jjt�|j	t
|jj|jdz�|j	t
|jjd|jdzz�|jj
d�y)Nrr
r)	rXr
r�r�r�r7r�rZ�UINT_MAX�rZrXs  r�_testShutdown_overflowz#BasicTCPTest._testShutdown_overflow�
s���������C� ����-����)@�)@�#�+�+�a�/�	1����-����)@�)@��y�1�1�A�5�6�	8�������"r>c�P�|jj�}|jj�}|j||�|j	|jj
�|j
t|jjd�|jj�tjtjtj|��}|j|j�|jd�}|j|t�y)Nr�r�)rr�rnr�r��_closedr�rr�r!rrTrArur�)rZr�rrCr�s     r�
testDetachzBasicTCPTest.testDetach�
s������%�%�'���M�M� � �"������F�#�����
�
�-�-�.����'�4�=�=�#5�#5�t�<��
�
�����}�}�V�^�^�V�-?�-?��J������
�
�#��i�i��o������c�"r>c�B�|jjt�yrIr�rYs r�_testDetachzBasicTCPTest._testDetach�
r�r>Nr�)rarbrcr�r�r�r�r�rrrrr
r
rrrrrrrr��testShutdown_overflowrr"r$rdr>rr�r�6
s���B�#�
!�#�!�#�
!�#�!�+�*�#�!�#�!��#�1�G�0�0��>�����#��#�#� !r>r�c�8�eZdZd	d�Zd�Zd�Zd�Zd�Zd�Zd�Z	y)
�BasicUDPTestc�2�tj||��yr�)r�r�r�s  rr�zBasicUDPTest.__init__�
rr>c��|jjtt��}|j	|t�yrI�rUr�r�r�r�r�s  r�testSendtoAndRecvzBasicUDPTest.testSendtoAndRecv�
�(���i�i�n�n�S��X�&������c�"r>c�f�|jjtdt|jf�yr��r�r�r�r�rWrYs r�_testSendtoAndRecvzBasicUDPTest._testSendtoAndRecv�
���������Q��t�y�y� 1�2r>c��|jjtt��\}}|j	|t�yrI�rUr�r�r�r�r�s   rrzBasicUDPTest.testRecvFrom�
�.���I�I�&�&�s�3�x�0�	��T�����c�"r>c�f�|jjtdt|jf�yr�r.rYs rrzBasicUDPTest._testRecvFrom�
r0r>c�Z�|jt|jjd�y�Nr2�r�r}rUr�rYs r�testRecvFromNegativez!BasicUDPTest.testRecvFromNegative�
������*�d�i�i�&8�&8�"�=r>c�f�|jjtdt|jf�yr�r.rYs r�_testRecvFromNegativez"BasicUDPTest._testRecvFromNegative�
r0r>Nr��
rarbrcr�r+r/rrr8r;rdr>rr'r'�
s&��D�#�
3�#�
3�>�3r>r'c�8�eZdZd	d�Zd�Zd�Zd�Zd�Zd�Zd�Z	y)
�BasicUDPLITETestc�2�tj||��yr�)r�r�r�s  rr�zBasicUDPLITETest.__init__�
s��!�*�*�4�J�*�Gr>c��|jjtt��}|j	|t�yrIr*r�s  rr+z"BasicUDPLITETest.testSendtoAndRecv�
r,r>c�f�|jjtdt|jf�yr�r.rYs rr/z#BasicUDPLITETest._testSendtoAndRecv�
r0r>c��|jjtt��\}}|j	|t�yrIr2r�s   rrzBasicUDPLITETest.testRecvFrom�
r3r>c�f�|jjtdt|jf�yr�r.rYs rrzBasicUDPLITETest._testRecvFrom�
r0r>c�Z�|jt|jjd�yr6r7rYs rr8z%BasicUDPLITETest.testRecvFromNegative�
r9r>c�f�|jjtdt|jf�yr�r.rYs rr;z&BasicUDPLITETest._testRecvFromNegative�
r0r>Nr�r<rdr>rr>r>�
s&��H�#�
3�#�
3�>�3r>r>c���eZdZejZ�fd�Zd�ZdZd�Z	d�Z
d�Zd�ZdZ
d	D]Ze
eeed�zZ
�dZdZdZdd
�Z�xZS)�SendrecvmsgBasec�T��tj�|_t�|��yrI)r�r��
misc_eventr&r[r's �rr[zSendrecvmsgBase.setUps���#�/�/�+���
��
�r>c�8�|jj|�SrI)�cli_sockr�r�s  r�sendToServerzSendrecvmsgBase.sendToServers���}�}�!�!�#�&�&r>rdc�f�|jj||jt|�dz�SrI)rKr��sendmsg_to_server_defaultsr��rZr/s  r�sendmsgToServerzSendrecvmsgBase.sendmsgToServers8��
%�t�}�}�$�$��T�4�4�S��Y�Z�@�@�C�	Cr>c�N�|j|g|���}|j|�|SrI)r��registerRecvmsgResult)rZrCrzr/�results     r�	doRecvmsgzSendrecvmsgBase.doRecvmsg"s,������g�-��-���"�"�6�*��
r>c��yrIrd�rZrSs  rrRz%SendrecvmsgBase.registerRecvmsgResult,s��	
r>c�(�|j||�yrI�r��rZ�addr1�addr2s   r�checkRecvmsgAddressz#SendrecvmsgBase.checkRecvmsgAddress2s��	
�����&r>r)�
MSG_CTRUNC�MSG_OOBc�n�|j}|j}|r||jz}||jz}n |�||jz}||jz}||z}||z}||z}||z}||z|z}|rt	dj|���||z|z}	|j
||	z||	z�y)Nz6contradictory set, unset requirements for flags {0:#x})�msg_flags_common_set�msg_flags_common_unset�msg_flags_eor_indicator�msg_flags_non_eor_indicator�	Exceptionr�r�)
rZr��eor�checkset�
checkunset�ignore�
defaultset�defaultunset�inbothrRs
          r�
checkFlagszSendrecvmsgBase.checkFlagsGs���8�.�.�
��2�2����$�6�6�6�J��D�<�<�<�L�
�_��$�:�:�:�J��D�8�8�8�L�	�z�k�!�
���	�!��	�J����l�"�
��J�&�&��0����%�%+�V�F�^�5�
5��:�%�&��0��������x�$��7r>)Nrrr)rarbrcrr��fail_timeoutr[rLrNrPrTrRr\rar�r�rr`rbrcrlr)r*s@rrGrGsz���
�+�+�L��'�"$��C��
�'���)���'�&�$��":�:��*��� ��#$��48r>rGc��eZdZd�Zy)�RecvmsgIntoMixinc���t|�}|j|gg|���}|j|�|j|dd�|j	|d|�t|d|d�f|ddzSr)r��recvmsg_intorR�assertGreaterEqual�assertLessEqualr-)rZrCrzr/�bufrSs      rrTzRecvmsgIntoMixin.doRecvmsg�s~���� ��"��"�"�C�5�0�4�0���"�"�6�*�����q�	�1�-����V�A�Y��0��c�*�6�!�9�o�&�(�6�!�"�:�5�5r>N)rarbrcrTrdr>rroro~s��6r>roc�(��eZdZe�fd��Z�xZS)�SendrecvmsgDgramFlagsBasec�:��t�|�tjzSrI)r&rcr�	MSG_TRUNCr's �rrcz5SendrecvmsgDgramFlagsBase.msg_flags_non_eor_indicator�s����w�2�V�5E�5E�E�Er>)rarbrc�propertyrcr)r*s@rrvrv�s����F��Fr>rvc�(��eZdZe�fd��Z�xZS)�SendrecvmsgSCTPFlagsBasec�:��t�|�tjzSrI)r&rbr�MSG_EORr's �rrbz0SendrecvmsgSCTPFlagsBase.msg_flags_eor_indicator�s����w�.����?�?r>)rarbrcryrbr)r*s@rr{r{�s����@��@r>r{c�B�eZdZed��Zed��Zed��Zd�Zy)�SendrecvmsgConnectionlessBasec��|jSrI)rUrYs r�	serv_sockz'SendrecvmsgConnectionlessBase.serv_sock�s���y�y�r>c��|jSrI)r�rYs rrKz&SendrecvmsgConnectionlessBase.cli_sock�s���x�x�r>c�"�ggd|jfSr�)r"rYs rrNz8SendrecvmsgConnectionlessBase.sendmsg_to_server_defaults�s���B��4�>�>�*�*r>c�N�|jj||j�SrI)rKr�r"r�s  rrLz*SendrecvmsgConnectionlessBase.sendToServer�s���}�}�#�#�C����8�8r>N)rarbrcryr�rKrNrLrdr>rrr�sC��
���������+��+�9r>rc�2�eZdZed��Zed��Zd�Zy)�SendrecvmsgConnectedBasec��|jSrI)rrYs rr�z"SendrecvmsgConnectedBase.serv_sock�s���}�}�r>c��|jSrI)r
rYs rrKz!SendrecvmsgConnectedBase.cli_sock�s���~�~�r>c��yrIrdrYs   rr\z,SendrecvmsgConnectedBase.checkRecvmsgAddress����	
r>N)rarbrcryr�rKr\rdr>rr�r��s/����������
r>r�c���eZdZ�fd�Z�xZS)�SendrecvmsgServerTimeoutBasec�l��t�|��|jj|j�yrI)r&r[r�r�rmr's �rr[z"SendrecvmsgServerTimeoutBase.setUp�s$���
��
�����!�!�$�"3�"3�4r>)rarbrcr[r)r*s@rr�r��s
���5�5r>r�c��eZdZd�Zd�Zd�Zd�Zd�Zd�Zd�Z	d�Z
d	�Zd
�Zd�Z
d�Zd
�Zd�Zeed�d��Zej(d��Zd�Zd�Zd�Zd�Zy)�SendmsgTestsc�|�|j|jjtt��t�yrI�r�r�r�r�r�rYs r�testSendmsgzSendmsgTests.testSendmsg��%��������,�,�S��X�6��<r>c�j�|j|jtg�tt��yrI�r�rPr�r�rYs r�_testSendmsgzSendmsgTests._testSendmsg�s#������-�-�s�e�4�c�#�h�?r>c�|�|j|jjtt��t�yrIr�rYs r�testSendmsgDataGeneratorz%SendmsgTests.testSendmsgDataGenerator�r�r>c�x�|j|jd�tfD��tt��y)Nc3� K�|]}|���y�wrIrdr�s  rr�z9SendmsgTests._testSendmsgDataGenerator.<locals>.<genexpr>�s����.@�%�Q�q�%�r�r�rYs r�_testSendmsgDataGeneratorz&SendmsgTests._testSendmsgDataGenerator�s,������-�-�.@�3�%�.@�A��S��	#r>c�|�|j|jjtt��t�yrIr�rYs r�testSendmsgAncillaryGeneratorz*SendmsgTests.testSendmsgAncillaryGenerator�r�r>c�z�|j|jtgd�dD��tt��y)Nc3� K�|]}|���y�wrIrdr�s  rr�z>SendmsgTests._testSendmsgAncillaryGenerator.<locals>.<genexpr>�s����_��A�a��r�rdr�rYs r�_testSendmsgAncillaryGeneratorz+SendmsgTests._testSendmsgAncillaryGenerator�s,������-�-�s�e�_��_�E��S��	#r>c�|�|j|jjtt��t�yrIr�rYs r�testSendmsgArrayzSendmsgTests.testSendmsgArray�r�r>c��|j|jtjdt�g�t	t��y)N�B)r�rP�arrayr�r�rYs r�_testSendmsgArrayzSendmsgTests._testSendmsgArray�s2������-�-�u�{�{�3��/D�.E�F��S��	#r>c�|�|j|jjtt��t�yrIr�rYs r�testSendmsgGatherzSendmsgTests.testSendmsgGather�r�r>c��|j|jtddtddg�tt��y�Nr�r�rYs r�_testSendmsgGatherzSendmsgTests._testSendmsgGather�s2������-�-�s�2�A�w��A�B��.@�A�3�s�8�Lr>c�Z�|j|jjd�d�y�Nr3�done�r�r�r�rYs r�testSendmsgBadArgszSendmsgTests.testSendmsgBadArgs��!��������,�,�T�2�G�<r>c	���|jt|jj�|jt|jd�|jt|jt��|jt|jt�g�|jt|jtt�g�|jt|jtgt��|jt|jtggt��|jt|jtggdt��|jd�y)Nsnot in an iterablerr�)r�r�rKr�rP�objectr�rLrYs r�_testSendmsgBadArgsz SendmsgTests._testSendmsgBadArgs�s�����)�T�]�]�%:�%:�;����)�T�%9�%9�/�	1����)�T�%9�%9� �(�	$����)�T�%9�%9�!�8�*�	&����)�T�%9�%9����/�	+����)�T�%9�%9��%���	+����)�T�%9�%9��%��V�X�	/����)�T�%9�%9��%��Q���	2����'�"r>c�Z�|j|jjd�d�yr�r�rYs r�testSendmsgBadCmsgzSendmsgTests.testSendmsgBadCmsgr�r>c	�X�|jt|jtgt	�g�|jt|jtgt	�ddfg�|jt|jtgdt	�dfg�|jt|jtgddt	�fg�|jt|jtgdg�|jt|jtgdg�|jd�y)Nr�data)rr)rrr�rYr��r�r�rPr�r�rLrYs r�_testSendmsgBadCmsgz SendmsgTests._testSendmsgBadCmsgs������)�T�%9�%9��%�&�(��	-����)�T�%9�%9��%�6�8�Q��"8�!9�	;����)�T�%9�%9��%�1�f�h��"8�!9�	;����)�T�%9�%9��%�1�a���"2�!3�	5����)�T�%9�%9��%�&��	+����)�T�%9�%9��%�"5�!6�	8����'�"r>�
CMSG_SPACEc�Z�|j|jjd�d�yr�r�rYs r�testSendmsgBadMultiCmsgz$SendmsgTests.testSendmsgBadMultiCmsgs#��	
������,�,�T�2�G�<r>c���|jt|jtggd��|jt|jtgdt	�g�|jd�y)N�rrr>r�r�rYs r�_testSendmsgBadMultiCmsgz%SendmsgTests._testSendmsgBadMultiCmsg$sU�����)�T�%9�%9��%��	.����)�T�%9�%9��%�+�v�x�!8�	:����'�"r>c�Z�|j|jjd�d�yr�r�rYs r�testSendmsgExcessCmsgRejectz(SendmsgTests.testSendmsgExcessCmsgReject,s#��	
������,�,�T�2�G�<r>c��ttd�s\|jt�5}|j	t
gddg�ddd�|j
jj�|jd�y#1swY�@xYw)Nr�r�r�)
rrr�rrPr��assertIsNoner�r"rL�rZr�s  r�_testSendmsgExcessCmsgRejectz)SendmsgTests._testSendmsgExcessCmsgReject1sg���v�|�,��"�"�7�+�r��$�$�c�U�[�+�,F�G�,����b�l�l�0�0�1����'�"�,�+�s�A?�?Bc��yrIrdrYs r�testSendmsgAfterClosez"SendmsgTests.testSendmsgAfterClose9s��r>c��|jj�|jt|jt
g�yrI)rKr!r�rrPr�rYs r�_testSendmsgAfterClosez#SendmsgTests._testSendmsgAfterClose=s,���
�
�������'�4�#7�#7�#��?r>N)rarbrcr�r�r�r�r�r�r�r�r�r�r�r�r�r�r�rr�rtr�r�r�r�r�rdr>rr�r��s���=�@�=�#�=�#�=�#�=�M�=�#�$=�
#��&�,�'�=�(�=�
�(�(�#�)�#�=�
#�
�@r>r�c�~�eZdZd�Zd�Zd�Zd�Zeejdvd�d��Z
e
jd��Zy	)
�SendmsgStreamTestsc�|�|j|jjtt��t�yrIr�rYs r�testSendmsgExplicitNoneAddrz.SendmsgStreamTests.testSendmsgExplicitNoneAddrFr�r>c�p�|j|jtggdd�tt��yr�r�rYs r�_testSendmsgExplicitNoneAddrz/SendmsgStreamTests._testSendmsgExplicitNoneAddrJs)������-�-�s�e�R��D�A�3�s�8�Lr>c���|j|jjd�d�|j|jj|j���y�Nr�aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa�rL�r�r�r�r�rIr�rmrYs r�testSendmsgTimeoutz%SendmsgStreamTests.testSendmsgTimeoutMsE��������,�,�S�1�8�<�������,�,�T�5F�5F�,�G�Hr>c�T�	|jjd�		|jdg��#t$rYn3t
$r(}|jtjk7r�Yd}~nd}~wwxYw|jj�y#|jj�wxYw)N���Q��?r�)
rKr�rPr�rrr"�ENOMEMrIr��rZr�s  r�_testSendmsgTimeoutz&SendmsgStreamTests._testSendmsgTimeoutRs���	"��M�M�$�$�T�*�
5���(�(�(��4����
���
��9�9����,��-��
��
�O�O���!��D�O�O���!�s6�B�2�	A-�B�A-�A(�#B�(A-�-B�B'>rez<MSG_DONTWAIT not known to work on this platform when sendingc���|j|jjd�d�|j|jj|j���yr�r�rYs r�testSendmsgDontWaitz&SendmsgStreamTests.testSendmsgDontWaitisG��
	
������,�,�S�1�8�<�������,�,�T�5F�5F�,�G�Hr>c��	|jt�5}	|jdggtj��##1swYnxYw|jjjtjtjtjf�|jj�y#|jj�wxYw�Nr�)
r�rrPr�MSG_DONTWAITr�r�r"�EAGAIN�EWOULDBLOCKr�rIr�r�s  r�_testSendmsgDontWaitz'SendmsgStreamTests._testSendmsgDontWaitqs���		"��"�"�7�+�r���(�(�(��R��9L�9L�M��,�+��

�M�M�"�,�,�,�,� �<�<��):�):�E�L�L�I�
K�
�O�O���!��D�O�O���!�s�B6�%<�A�AB6�6CN)
rarbrcr�r�r�r�r}r@rnr�rtr�rdr>rr�r�Bs]��=�M�I�
"�.�c�l�l�)�3� �!�I�!�I�
�$�$�
"�%�
"r>r�c��eZdZd�Zd�Zy)�SendmsgConnectionlessTestsc��yrIrdrYs r�testSendmsgNoDestAddrz0SendmsgConnectionlessTests.testSendmsgNoDestAddr�r�r>c���|jt|jjtg�|jt|jjtggdd�yr�)r�rrKr�r�rYs r�_testSendmsgNoDestAddrz1SendmsgConnectionlessTests._testSendmsgNoDestAddr�sJ�����'�4�=�=�#8�#8��%�	!����'�4�=�=�#8�#8��%��Q��	.r>N)rarbrcr�r�rdr>rr�r�s��

�
.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��Zej,d��Zeej(d�d��Zej,d��Zy)�RecvmsgGenericTestsc��|j|jtt��\}}}}|j	|t�|j||j�|j	|g�|j|d��y�NT�re�rTr�r�r�r�r\r�rl�rZr�r�r�r
s     r�testRecvmsgzRecvmsgGenericTests.testRecvmsg�sg��$(�N�N�4�>�>�3�s�8�$L�!��W�e�T�����c�"�� � ��t�}�}�5�����"�%�����4��(r>c�.�|jt�yrI�rLr�rYs r�_testRecvmsgz RecvmsgGenericTests._testRecvmsg�������#�r>c��|j|jtt�dd�\}}}}|j	|t�|j||j�|j	|g�|j|d��y)NrTr�r�r�s     r�testRecvmsgExplicitDefaultsz/RecvmsgGenericTests.testRecvmsgExplicitDefaults�so��$(�N�N�4�>�>�36�s�8�Q��%C�!��W�e�T�����c�"�� � ��t�}�}�5�����"�%�����4��(r>c�.�|jt�yrIr�rYs r�_testRecvmsgExplicitDefaultsz0RecvmsgGenericTests._testRecvmsgExplicitDefaults�r�r>c��|j|jtt�dz�\}}}}|j	|t�|j||j�|j	|g�|j|d��y)NrYTr�r�r�s     r�testRecvmsgShorterz&RecvmsgGenericTests.testRecvmsgShorter�so��$(�N�N�4�>�>�36�s�8�b�=�%B�!��W�e�T�����c�"�� � ��t�}�}�5�����"�%�����4��(r>c�.�|jt�yrIr�rYs r�_testRecvmsgShorterz'RecvmsgGenericTests._testRecvmsgShorter�r�r>c��|j|jtt�dz
�\}}}}|j	|tdd�|j||j�|j	|g�|j|d��y)Nr����Fr�r�r�s     r�testRecvmsgTruncz$RecvmsgGenericTests.testRecvmsgTrunc�su��$(�N�N�4�>�>�36�s�8�a�<�%A�!��W�e�T�����c�#�2�h�'�� � ��t�}�}�5�����"�%�����5��)r>c�.�|jt�yrIr�rYs r�_testRecvmsgTruncz%RecvmsgGenericTests._testRecvmsgTrunc�r�r>c��|j|jtt�d�\}}}}|j	|t�|j||j�|j	|g�|j|d��y)Nr
Tr�r�r�s     r�testRecvmsgShortAncillaryBufz0RecvmsgGenericTests.testRecvmsgShortAncillaryBuf�sm��$(�N�N�4�>�>�36�s�8�Q�%@�!��W�e�T�����c�"�� � ��t�}�}�5�����"�%�����4��(r>c�.�|jt�yrIr�rYs r�_testRecvmsgShortAncillaryBufz1RecvmsgGenericTests._testRecvmsgShortAncillaryBuf�r�r>c��|j|jtt�d�\}}}}|j	|t�|j||j�|j	|g�|j|d��y)N�(Tr�r�r�s     r�testRecvmsgLongAncillaryBufz/RecvmsgGenericTests.testRecvmsgLongAncillaryBuf�sm��$(�N�N�4�>�>�36�s�8�U�%D�!��W�e�T�����c�"�� � ��t�}�}�5�����"�%�����4��(r>c�.�|jt�yrIr�rYs r�_testRecvmsgLongAncillaryBufz0RecvmsgGenericTests._testRecvmsgLongAncillaryBuf�r�r>c��|jj�|jt|j|jd�yr�)r�r!r�rrTrYs r�testRecvmsgAfterClosez)RecvmsgGenericTests.testRecvmsgAfterClose�s.�����������'�4�>�>�4�>�>�4�Hr>c��yrIrdrYs r�_testRecvmsgAfterClosez*RecvmsgGenericTests._testRecvmsgAfterClose�rr>c� �	|jjd�|jt|j|jtt��|jj�y#|jj�wxYw)Nr�)	r�r�r�rrTr�r�rIr�rYs r�testRecvmsgTimeoutz&RecvmsgGenericTests.testRecvmsgTimeout�s`��	"��N�N�%�%�d�+����l�"�n�n�d�n�n�c�#�h�
H�
�O�O���!��D�O�O���!�s�AA1�1B
c�n�|j|jj|j���y�Nr�)r�rIr�rmrYs r�_testRecvmsgTimeoutz'RecvmsgGenericTests._testRecvmsgTimeout�s&��������,�,�T�5F�5F�,�G�Hr>r�c	��|j|jtt�dz
dtj
�\}}}}|j
|tdd�|j||j�|j
|g�|j|dttdd���|j|jtt�dtj
�\}}}}|j
|t�|j||j�|j
|g�|j|d��|j|jtt��\}}}}|j
|t�|j||j�|j
|g�|j|d��y)	Nr�rr�Frx�rerhTr�)rTr�r�r�rr�r�r\r�rlr�r�s     r�testRecvmsgPeekz#RecvmsgGenericTests.testRecvmsgPeek�ss��%)�N�N�4�>�>�36�s�8�a�<��39�?�?�%D�!��W�e�T�	
����c�#�2�h�'�� � ��t�}�}�5�����"�%�
	
����5�&�v�{�A�>�	�	@�%)�N�N�4�>�>�36�s�8�Q�39�?�?�%D�!��W�e�T�	
����c�"�� � ��t�}�}�5�����"�%�����4��(�%)�N�N�4�>�>�3�s�8�$L�!��W�e�T�����c�"�� � ��t�}�}�5�����"�%�����4��(r>c�.�|jt�yrIr�rYs r�_testRecvmsgPeekz$RecvmsgGenericTests._testRecvmsgPeek
s�����#�r>r�c�X�|jj|j�|j|jt	t
��\}}}}|j
|t
�|j||j�|j
|g�|j|d��yr�)
r�r�rmrTr�r�r�r\r�rlr�s     r�testRecvmsgFromSendmsgz*RecvmsgGenericTests.testRecvmsgFromSendmsg
s���	
���!�!�$�"3�"3�4�$(�N�N�4�>�>�3�s�8�$L�!��W�e�T�����c�"�� � ��t�}�}�5�����"�%�����4��(r>c��|j|jtddtddg�tt��yr�r�rYs r�_testRecvmsgFromSendmsgz+RecvmsgGenericTests._testRecvmsgFromSendmsg!
s2������-�-�s�2�A�w��A�B��.@�A�3�s�8�Lr>N)rarbrcr�r�r�r�r�r�rrrrr	rr
rrrr�rrrtrrrrdr>rr�r��s���)��)��)��*��)��)��I�

�"�I��&�*�%� )�&� )�D� � ��!���&�-�-��+�)�,�)��'�'�M�(�Mr>r�c�$�eZdZd�Zd�Zd�Zd�Zy)�RecvmsgGenericStreamTestsc���|j|jd�\}}}}|j|d�|j||j�|j|g�|j|d��y)Nr�r>r�)rTr�r�r\r�rlr�s     r�testRecvmsgEOFz(RecvmsgGenericStreamTests.testRecvmsgEOF*
sc��$(�N�N�4�>�>�4�$H�!��W�e�T�����c�"�� � ��t�}�}�5�����"�%�����4��(r>c�8�|jj�yrI)rKr!rYs r�_testRecvmsgEOFz)RecvmsgGenericStreamTests._testRecvmsgEOF2
s���
�
���r>c���|j|jtt�dz
�\}}}}|j	||j
�|j
|g�|j|d��|j|jd�\}}}}|j	||j
�|j
|g�|j|d��||z}|j
|t�y)Nr�Fr�r�T)rTr�r�r�r\r�r�rl)rZr�r�r�r
r�r�s       r�testRecvmsgOverflowz-RecvmsgGenericStreamTests.testRecvmsgOverflow5
s���%)�^�^�D�N�N�47��H�q�L�&B�"��g�u�d�� � ��t�}�}�5�����"�%�����5��)�%)�^�^�D�N�N�D�%I�"��g�u�d�� � ��t�}�}�5�����"�%�����4��(��T�k������c�"r>c�.�|jt�yrIr�rYs r�_testRecvmsgOverflowz.RecvmsgGenericStreamTests._testRecvmsgOverflowE
r�r>N)rarbrcr!r#r%r'rdr>rrr&
s��)��#� r>rc��eZdZd�Zd�Zy)�RecvmsgTestsc��|jt|jj�|jt|jjddd�|jt|jjtt�dd�|jt|jjtd�gdd�|jt|jjt�dd�|jt|jjtt�t�d�|jt|jjtt�dt��|jjtt�dd�\}}}}|j|t�|j||j�|j|g�|j|d��y)Nr2rrzTr�)
r�r�r�r�r}r�r�r�r�r�r\r�rlr�s     r�testRecvmsgBadArgszRecvmsgTests.testRecvmsgBadArgsL
sq�����)�T�^�^�%;�%;�<����*�d�n�n�&<�&<��a��	$����*�d�n�n�&<�&<��c�(�B��	+����)�T�^�^�%;�%;�$�R�=�/�1�a�	1����)�T�^�^�%;�%;� �(�A�q�	*����)�T�^�^�%;�%;��c�(�F�H�a�	1����)�T�^�^�%;�%;��c�(�A�v�x�	1�%)�N�N�$:�$:�3�s�8�Q��$J�!��W�e�T�����c�"�� � ��t�}�}�5�����"�%�����4��(r>c�.�|jt�yrIr�rYs r�_testRecvmsgBadArgsz RecvmsgTests._testRecvmsgBadArgsb
r�r>N)rarbrcr+r-rdr>rr)r)I
s��)�,r>r)c�<�eZdZd�Zd�Zd�Zd�Zd�Zd�Zd�Z	d�Z
y	)
�RecvmsgIntoTestsc��ttt��}|jt|j
j�|jt|j
jtt�dd�|jt|j
j|dd�|jt|j
jt�gdd�|jt|j
jdgdd�|jt|j
j|t�gdd�|jt|j
j|gdd�|jt|j
j|gt�d�|jt|j
j|gdt��|j
j
|gdd�\}}}}|j|tt��|j|tt��|j||j�|j|g�|j|d��y)NrsI'm not writabler2Tr�)
r�r�r�r�r�r�rqr�r}r�r\r�rl�rZrt�nbytesr�r�r
s      r�testRecvmsgIntoBadArgsz'RecvmsgIntoTests.testRecvmsgIntoBadArgsi
s�����C��!�����)�T�^�^�%@�%@�A����)�T�^�^�%@�%@��c�(�A�q�	*����)�T�^�^�%@�%@��q�!�	%����)�T�^�^�%@�%@�!�8�*�a��	,����)�T�^�^�%@�%@�.�/��A�	7����)�T�^�^�%@�%@����/�1�a�	1����*�d�n�n�&A�&A��%��Q�	(����)�T�^�^�%@�%@��%���1�	.����)�T�^�^�%@�%@��%��F�H�	.�(,�~�~�'B�'B�C�5�!�Q�'O�$����������S��*�����i��n�-�� � ��t�}�}�5�����"�%�����4��(r>c�.�|jt�yrIr�rYs r�_testRecvmsgIntoBadArgsz(RecvmsgIntoTests._testRecvmsgIntoBadArgs�
r�r>c��ttt��}|jj	d�|fD��\}}}}|j|tt��|j|tt��|j
||j�|j|g�|j|d��y)Nc3� K�|]}|���y�wrIrdr�s  rr�z<RecvmsgIntoTests.testRecvmsgIntoGenerator.<locals>.<genexpr>�
s������1�Q��r�Tr�)	r�r�r�r�rqr�r\r�rlr1s      r�testRecvmsgIntoGeneratorz)RecvmsgIntoTests.testRecvmsgIntoGenerator�
s�����C��!��'+�~�~�'B�'B�����( �$����������S��*�����i��n�-�� � ��t�}�}�5�����"�%�����4��(r>c�.�|jt�yrIr�rYs r�_testRecvmsgIntoGeneratorz*RecvmsgIntoTests._testRecvmsgIntoGenerator�
r�r>c��tjddgtt�z�}|jj	|g�\}}}}|j|tt��|j|j
�t�|j||j�|j|g�|j|d��y)Nr�rTr�)
r�r�r�r�rqr��tobytesr\r�rlr1s      r�testRecvmsgIntoArrayz%RecvmsgIntoTests.testRecvmsgIntoArray�
s����k�k�#��s�S��X�~�.��'+�~�~�'B�'B�C�5�'I�$����������S��*���������,�� � ��t�}�}�5�����"�%�����4��(r>c�.�|jt�yrIr�rYs r�_testRecvmsgIntoArrayz&RecvmsgIntoTests._testRecvmsgIntoArray�
r�r>c��td�}td�}td�}|jj|t|�dd|g�\}}}}|j	|td��|j	|td��|j	|td��|j	|td	��|j
||j�|j	|g�|j|d
��y)Ns----s
0123456789s--------------r�	�Mary had a little lambsMarys
01 had a 9slittle lamb---Tr�)	r�r�rq�
memoryviewr�r�r\r�rl)rZ�b1�b2�b3r2r�r�r
s        r�testRecvmsgIntoScatterz'RecvmsgIntoTests.testRecvmsgIntoScatter�
s���
�w�
��
�}�
%��
�(�
)��'+�~�~�'B�'B�
��B���!�$�b�)�(+�$����������%>�!?�@�����Y�w�/�0�����Y�}�5�6�����Y�'8�9�:�� � ��t�}�}�5�����"�%�����4��(r>c�&�|jd�y)NrB)rLrYs r�_testRecvmsgIntoScatterz(RecvmsgIntoTests._testRecvmsgIntoScatter�
s�����3�4r>N)rarbrcr3r5r8r:r=r?rGrIrdr>rr/r/f
s*��)�8�	)��)��
)�5r>r/c��eZdZ	ddlZedej
�Zee	d�d��Z
ee	d�d��Zy#e$rdZY�(wxYw)�CmsgMacroTestsrNi����CMSG_LENc���|jtjd�z
dz}tt	d��tt	|dz
|��z}|jtjd�t
jd�jdz�|D][}tj|�}|j|tjd�z
|�|j||j��]|jttjd�|jttj|�|jttjtj�y)Nrr
�rPrr2)�socklen_t_limitrrL�listr<r)r��itemsizer�rsr�r7r@�maxsize)rZ�toobigrr�n�rets     r�testCMSG_LENzCmsgMacroTests.testCMSG_LEN�
s
���%�%�����(:�:�Q�>���e�C�j�!�D��v��|�V�)D�$E�E��	
���6�?�?�1�-�u�{�{�3�/?�/H�/H�1�/L�M��A��/�/�!�$�C����S�6�?�?�1�#5�5�q�9�� � ��d�&:�&:�;�	�	
���-����"�=�	
���-����&�A����-����#�+�+�Fr>r�c�b�|jtjd�z
dz}tt	d��tt	|dz
|��z}tjd�}|j|t
jd�jdz�|D]�}tj|�}|j||�|j|tj|��|j||tjd�z�|j||j�|}��|jttjd�|jttj|�|jttjtj�y)Nr
rNrrPrr2)rOrr�rPr<r)r�rQrrrLrsr�r7r@rR)rZrSrr�lastrTrUs      r�testCMSG_SPACEzCmsgMacroTests.testCMSG_SPACE�
sG���%�%��(9�(9�!�(<�<�q�@���e�C�j�!�D��v��|�V�)D�$E�E��� � ��#�����4����S�!1�!:�!:�Q�!>�?��A��#�#�A�&�C��#�#�C��.��#�#�C�����);�<��#�#�C��V�_�_�Q�-?�)?�@�� � ��d�&:�&:�;��D�
�	
���-��):�):�B�?�	
���-��):�):�F�C����-��):�):�C�K�K�Hr>)rarbrcrX�minrZrOr�r�rrVrYrdr>rrKrK�
sl��=���j�)�*;�*;�<���&�*�%�G�&�G�(�&�,�'�I�(�I��7�%�$��%�s�<�A�ArKc�
�eZdZdZd�Zd�Zd�Zd�Zd�Zd5d�Z	d�Z
d	�Zd
�Zd�Z
eed�d
��Zej"d��Zd�Zd�Zej,ej0dk(d�ej,ed�eed�d����Zej"ej,ej0dk(d�ej,ed�d����Zej,ej0dk(d�ej,ed�eed�d����Zej"ej,ej0dk(d�ej,ed�d����Zd�Zej,ej0dk(d�d��Zd�Z d�Z!d�Z"eed�d��Z#e#j"d��Z$d6d �Z%d!�Z&d"�Z'd#�Z(d$�Z)d%�Z*d&�Z+d'�Z,d(�Z-d)�Z.d*�Z/d6d+�Z0d,�Z1d-�Z2d.�Z3d/�Z4d0�Z5d1�Z6d2�Z7d3�Z8y4)7�
SCMRightsTesti����c�T�g}t|�D]�}tj�\}}|jtj
|�|jtj|�t	j|t|�j��|j|���|SrI)r<r��mkstemprur�rAr!�writer��encode�append)rZrT�fdsrPrtrDs      r�newFDszSCMRightsTest.newFDs�
sw�����q��A��'�'�)�H�B���O�O�B�I�I�t�,��O�O�B�H�H�b�)��H�H�R��Q�����)��J�J�r�N���
r>c���t|�D]g\}}tj|dtj�|j	tj
|d�t
|�j���iy)Nrr�)�	enumerater��lseek�SEEK_SETr�r	r�r`)rZrbrTrts    r�checkFDszSCMRightsTest.checkFDssO���s�^�E�A�r��H�H�R��B�K�K�(����R�W�W�R��.��A��
�
��@�$r>c�<�|j|j|�yrI)ru�closeRecvmsgFDsrVs  rrRz#SCMRightsTest.registerRecvmsgResults������,�,�f�5r>c	�>�|dD]�\}}}|tjk(s�|tjk(s�/tjd�}|j	|dt|�t|�|jzz
�|D]}tj|����y)Nr
rP)	rr��
SCM_RIGHTSr��	frombytesr�rQr�r!)rZ�recvmsg_result�
cmsg_level�	cmsg_type�	cmsg_datarbrts       rrjzSCMRightsTest.closeRecvmsgFDss���1?�q�0A�,�J�	�9��f�/�/�/���!2�!2�2��k�k�#�&���
�
�i�)I��I��#�i�.�3�<�<�*G�H�J�K��B��H�H�R�L��
1Br>c
���|j|jtgtjtj
t
jd|j|��fg�tt��y)NrP)	r�rPr�rr�rlr�rcr�)rZrTs  r�createAndSendFDszSCMRightsTest.createAndSendFDssb��	
���� � �#��#)�#4�#4�#)�#4�#4�#(�;�;�s�D�K�K��N�#C�#E�"F�
G�
��H�	r>c��|\}}}}|j|t�|j||j�|j	|dt
j|��|j|t�|jt|�|�tjd�}	|D]�}
|j|
t�|
\}}}
|j|t
j�|j|t
j�|j|
t�|jt|
�t zd�|	j#|
���|jt|	�|�|j%|	�y)NT�rergrhrPr)r�r�r\r�rlrr]r�rPrsr�r��tupler�rlr-�
SIZEOF_INTrmrh)rZ�numfdsrS�maxcmsgs�ignoreflagsr�r�r�r
rb�itemrorprqs              r�checkRecvmsgFDszSCMRightsTest.checkRecvmsgFDs%s3��%+�!��W�e�T�����c�"�� � ��t�}�}�5�����4�F�4E�4E�*�	�	,�	
���g�t�,����S��\�8�4��k�k�#����D��!�!�$��.�/3�,�J�	�9����Z��):�):�;����Y��(9�(9�:��!�!�)�U�3����S��^�j�8�!�<��M�M�)�$��	
����S��6�*��
�
�c�r>c	�x�|jd|j|jtt�d��y)Nr
r�r|rTr�r�r�rYs r�testFDPassSimplezSCMRightsTest.testFDPassSimple@�.�����Q����t�~�~�/2�3�x��!@�	Ar>c
��|j|jtgtjtj
t
jd|jd��j�fg�tt��y)NrPr
)
r�rPr�rr�rlr�rcr<r�rYs r�_testFDPassSimplezSCMRightsTest._testFDPassSimpleEsh������ � ����#�#��#�#��+�+�c�4�;�;�q�>�2�:�:�<�>�?�
@�

��H�
	r>c	�x�|jd|j|jtt�d��y)Nr�rr~rYs r�testMultipleFDPassz SCMRightsTest.testMultipleFDPassNr�r>c�&�|jd�y�Nr��rsrYs r�_testMultipleFDPassz!SCMRightsTest._testMultipleFDPassS������a� r>r�c��|jd|j|jtt�tjdtz���yr�)r|rTr�r�r�rr�rwrYs r�testFDPassCMSG_SPACEz"SCMRightsTest.testFDPassCMSG_SPACEVs@��	
���
�t�~�~�d�n�n�c�#�h�$�/�/��J��?�A�	Br>c�&�|jd�yr�r�rYs r�_testFDPassCMSG_SPACEz#SCMRightsTest._testFDPassCMSG_SPACE]s�����a� r>c���|jd|j|jtt�tjdtz��t
j��y)Nr
r��rz)	r|rTr�r�r�rrLrwr]rYs r�testFDPassCMSG_LENz SCMRightsTest.testFDPassCMSG_LENasK�����Q�!�^�^�D�N�N�C��H�,2�O�O�A�
�N�,K�M�
*0�):�):�
	�	<r>c�&�|jd�yrNr�rYs r�_testFDPassCMSG_LENz!SCMRightsTest._testFDPassCMSG_LENkr�r>r�zskipping, see issue #12958zskipping, see issue #22397c	�|�|jd|j|jtt�d�d��y)Nrr)ryr~rYs r�testFDPassSeparatez SCMRightsTest.testFDPassSeparatens4��	
���Q�!�^�^�D�N�N�C��H�e�L�&'�	�	)r>c�h�|jd�\}}|j|jtgtj
tjtjd|g�ftj
tjtjd|g�fg�tt��y�NrrP�	rcr�rPr�rr�rlr�r��rZ�fd0�fd1s   r�_testFDPassSeparatez!SCMRightsTest._testFDPassSeparatex����;�;�q�>���S����� � �#��&�*;�*;�*0�*;�*;�*/�+�+�c�C�5�*A�*C�+1�*;�*;�*0�*;�*;�*/�+�+�c�C�5�*A�*C�)D�
E�
��H�	r>c��d}|j||j|jtt�tjt�tjt|z�z�dt
j��y)Nr)ryrz)
r|rTr�r�r�rr�rwrLr])rZ�num_fdss  r�testFDPassSeparateMinSpacez(SCMRightsTest.testFDPassSeparateMinSpace�sj�������W�!�^�^�D�N�N�C��H�,2�,=�,=�j�,I�,2�O�O�J��<P�,Q�-R�S�'(�V�5F�5F�		�	Hr>c�h�|jd�\}}|j|jtgtj
tjtjd|g�ftj
tjtjd|g�fg�tt��yr�r�r�s   r�_testFDPassSeparateMinSpacez)SCMRightsTest._testFDPassSeparateMinSpace�r�r>c���	|j|g|�}|j|t
|��y#t$r<}|j|jt�|j|g�}Yd}~�\d}~wwxYwrI)rPrr�r"r(r�r�)rZr�r�r2r�s     r�sendAncillaryIfPossiblez%SCMRightsTest.sendAncillaryIfPossible�si��	1��)�)�3�%��9�F�
	
�����S��*��	�	1��!�!�!�'�'�3�/��)�)�3�%�0�F��	1�s�1�	A6�2A1�1A6zsee issue #24725c	��|jd|j|jtt�d�t
j��y)Nrrr�)r|rTr�r�r�rr]rYs r�testFDPassEmptyzSCMRightsTest.testFDPassEmpty�s=��	
���Q����t�~�~�/2�3�x��!@�)/�):�):�	�	<r>c�p�|jttjtjdfg�y�Nr>)r�r�rr�rlrYs r�_testFDPassEmptyzSCMRightsTest._testFDPassEmpty�s0���$�$�S�F�,=�,=�,2�,=�,=�,/�,1�+2�	3r>c��|j|jtt�d�\}}}}|j	|t�|j||j�|j|dtj��|jt|�d�|D]e\}}}|j	|tj�|j	|tj�|jt|�t��gy)NrTrr
)rTr�r�r�r�r\r�rlrr]rsr�rl�
assertLessrw�rZr�r�r�r
rorprqs        r�testFDPassPartialIntz"SCMRightsTest.testFDPassPartialInt�s���$(�N�N�4�>�>�36�s�8�U�%D�!��W�e�T�����c�"�� � ��t�}�}�5�����4��0A�0A��B����S��\�1�-�07�,�J�	�9����Z��):�):�;����Y��(9�(9�:��O�O�C�	�N�J�7�18r>c	���|jttjtjtj
d|jg�j�ddfg�y)NrPr2)r�r�rr�rlr��badfdr<rYs r�_testFDPassPartialIntz#SCMRightsTest._testFDPassPartialInt�sS���$�$���������k�k�#��
�
�|�,�4�4�6�s��;�=�
>�	?r>c	���|j|jtt�d�\}}}}|j	|t�|j||j�|j|dtj��|jt|�d�tjd�}|D]|\}}}|j	|tj�|j	|tj�|j|dt|�t|�|jzz
��~|jt|�d�|j!|�y)NrTrrrP)rTr�r�r�r�r\r�rlrr]rsr�r�rlrmrQrh)	rZr�r�r�r
rbrorprqs	         r�testFDPassPartialIntInMiddlez*SCMRightsTest.testFDPassPartialIntInMiddle�s��%)�N�N�4�>�>�36�s�8�U�%D�!��W�e�T�����c�"�� � ��t�}�}�5�����4��0A�0A��B����S��\�1�-��k�k�#���07�,�J�	�9����Z��):�):�;����Y��(9�(9�:��M�M�)�%E��	�N�c�)�n�s�|�|�&C�D�F�
G�18�
	
���S��X�q�)��
�
�c�r>c
�d�|jd�\}}|jttjtj
t
jd||jg�j�ddftjtj
t
jd|g�fg�y)NrrPr2)	rcr�r�rr�rlr�r�r<r�s   r�_testFDPassPartialIntInMiddlez+SCMRightsTest._testFDPassPartialIntInMiddle�s����;�;�q�>���S��$�$���������k�k�#��T�Z�Z�0�1�9�9�;�C�R�@�B��������k�k�#��u�%�'�
(�	)r>c���|\}}}}|j|t�|j||j�|j|g�|j	|dt
j|��y)NT�rerfrh)r�r�r\r�rlrr])rZrSrzr�r�r�r
s       r�checkTruncatedHeaderz"SCMRightsTest.checkTruncatedHeader�sf��%+�!��W�e�T�����c�"�� � ��t�}�}�5�����"�%�����4�&�2C�2C�*�	�	,r>c��|j|j|jtt��t
j��y�Nr��r�rTr�r�r�rr]rYs r�testCmsgTruncNoBufSizez$SCMRightsTest.testCmsgTruncNoBufSize�s8��	
�!�!�$�.�.�����S��"J�/5�.?�.?�		"�	Ar>c�&�|jd�yrNr�rYs r�_testCmsgTruncNoBufSizez%SCMRightsTest._testCmsgTruncNoBufSize�r�r>c��|j|j|jtt�d�t
j��y)Nrr�r�rYs r�testCmsgTrunc0zSCMRightsTest.testCmsgTrunc0s6���!�!�$�.�.�����S��1�"M�.4�.?�.?�	"�	Ar>c�&�|jd�yrNr�rYs r�_testCmsgTrunc0zSCMRightsTest._testCmsgTrunc0r�r>c�v�|j|j|jtt�d��yrN)r�rTr�r�r�rYs r�testCmsgTrunc1zSCMRightsTest.testCmsgTrunc1
s%���!�!�$�.�.�����S��1�"M�Nr>c�&�|jd�yrNr�rYs r�_testCmsgTrunc1zSCMRightsTest._testCmsgTrunc1r�r>c��|j|j|jtt�t
dz��yr�)r�rTr�r�r�rwrYs r�testCmsgTrunc2IntzSCMRightsTest.testCmsgTrunc2Ints2��	
�!�!�$�.�.�����S��1;�a��#A�	Br>c�&�|jd�yrNr�rYs r�_testCmsgTrunc2Intz SCMRightsTest._testCmsgTrunc2Intr�r>c	��|j|j|jtt�tjd�dz
��yr)r�rTr�r�r�rrLrYs r�testCmsgTruncLen0Minus1z%SCMRightsTest.testCmsgTruncLen0Minus1s:���!�!�$�.�.�����S��17����1C�a�1G�#I�	Jr>c�&�|jd�yrNr�rYs r�_testCmsgTruncLen0Minus1z&SCMRightsTest._testCmsgTruncLen0Minus1!r�r>c��|j|jtt�|�\}}}}|j	|t�|j||j�|j|dtj��|dk(r|gk(ry|j	t|�d�|d\}}	}
|j	|tj�|j	|	tj�|jt|
�|�|jt|
�|�tjd�}|j|
dt|
�t|
�|j zz
�|j#|�y)NT�rerfrr
rP)rTr�r�r�r�r\r�rlrr]r�rlrrrsr�rmrQrh)rZ�ancbuf�maxdata�mindatar�r�r�r
rorprqrbs            r�checkTruncatedArrayz!SCMRightsTest.checkTruncatedArray's=��
%)�N�N�4�>�>�36�s�8�V�%E�!��W�e�T�����c�"�� � ��t�}�}�5�����4�&�2C�2C��D��a�<�G�r�M������W��q�)�+2�1�:�(�
�I�y�����V�%6�%6�7�����F�$5�$5�6�����I���8����S��^�W�5��k�k�#����
�
�i�!A��I��#�i�.�3�<�<�"?�@�B�	C��
�
�c�r>c�P�|jtjd�d��y)Nr�r�r��r�rrLrYs r�testCmsgTruncLen0zSCMRightsTest.testCmsgTruncLen0?s��� � �����(:�A� �Fr>c�&�|jd�yrNr�rYs r�_testCmsgTruncLen0z SCMRightsTest._testCmsgTruncLen0Br�r>c�V�|jtjd�dzd��y)Nrr
r�r�rYs r�testCmsgTruncLen0Plus1z$SCMRightsTest.testCmsgTruncLen0Plus1Es#��� � �����(:�Q�(>�� �Jr>c�&�|jd�yr�r�rYs r�_testCmsgTruncLen0Plus1z%SCMRightsTest._testCmsgTruncLen0Plus1Hr�r>c�`�|jtjt�t��y)Nr��r�rrLrwrYs r�testCmsgTruncLen1zSCMRightsTest.testCmsgTruncLen1Ks#��� � ����
�(C�)3�	!�	5r>c�&�|jd�yr�r�rYs r�_testCmsgTruncLen1z SCMRightsTest._testCmsgTruncLen1Or�r>c�x�|jtjdtz�dz
dtzdz
��y)Nrr
r�r�rYs r�testCmsgTruncLen2Minus1z%SCMRightsTest.testCmsgTruncLen2Minus1Rs5��� � �����J��(G�!�(K�*+�j�.�A�)=�	!�	?r>c�&�|jd�yr�r�rYs r�_testCmsgTruncLen2Minus1z&SCMRightsTest._testCmsgTruncLen2Minus1Vr�r>N)r
r�r)9rarbrcr�rcrhrRrjrsr|rr�r�r�r�rr�rtr�r�r�r�r�r@rnrr�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�rdr>rr\r\�
s���
�E�
�A�6�
!���6A�
�A�
!��&�,�'�B�(�B��%�%�!�&�!�<�!��X�_�_�S�\�\�X�-�/K�L��X�_�_�S�6�7��&�,�'�)�(�8�M�)��#�#��X�_�_�S�\�\�X�-�/K�L��X�_�_�S�6�7�	�8�M�$�	��X�_�_�S�\�\�X�-�/K�L��X�_�_�S�6�7��&�,�'�H�(�8�M�H� �+�+��X�_�_�S�\�\�X�-�/K�L��X�_�_�S�6�7�	�8�M�,�	�	+��X�_�_�S�\�\�X�-�/A�B�<�C�<�3�
8�?��&�,�'��(��$"�-�-�	)�.�	)�,�A�!�A�
!�O�!�B�!�J�!��0G�!�K�!�5�!�?�!r>r\c	��eZdZdZdZd�Zd3d�Zeedd�d��Z	e	jd��Zeed	dd�d
��Zejd��Z
eejd�eedd�d
���Zejd��Z		d3d�Zeedddd�d��Zejd��Zeed	dddd�d��Zejd��Zeejd�eed	dddd�d���Zejd��Zeejd�eed	dddd�d���Zejd��Zd4d�Zeedd�d��Zejd��Zeedd�d��Zejd��Zeedd�d��Zejd ��Zeedd�d!��Z e jd"��Z!eedd�d#��Z"e"jd$��Z#eedd�d%��Z$e$jd&��Z%d4d'�Z&eed	dddd�d(��Z'e'jd)��Z(eed	dddd�d*��Z)e)jd+��Z*eed	dddd�d,��Z+e+jd-��Z,eed	dddd�d.��Z-e-jd/��Z.eed	dddd�d0��Z/e/jd1��Z0y2)5�RFC3542AncillaryTestrr2c�V�i}|D]!\}}}|j||f|�||||f<�#|SrI)r�)rZr��drorprqs      r�ancillaryMappingz%RFC3542AncillaryTest.ancillaryMappingksE��
��07�,�J�	�9����j�)�4�a�8�)2�A�z�9�%�&�18��r>c��|jjtjtjd�|j
j
�|j|jtt�|�\}}}}|j|t�|j||j�|j|dtj|��|jt|�d�|j|dt �|d\}}	}
|j|tj�|j|	tj"�|j|
t$�|jt|
�t&�t)j(d�}|j+|
�|j-|dd�|j/|d|�y)Nr
TrurrP)r�r�rr�rrIr�rTr�r�r�r\r�rlr]r�rvr�r-rwr�rmrrrs)rZ�
ancbufsize�maxhoprzr�r�r�r
rorprqr�s            r�
checkHopLimitz"RFC3542AncillaryTest.checkHopLimitusr��
	
���!�!�&�"5�"5�"(�":�":�A�	?�������$(�N�N�4�>�>�36�s�8�Z�%I�!��W�e�T�	
����c�"�� � ��t�}�}�5�����4�F�4E�4E�*�	�	,�	
����W��q�)����g�a�j�%�0�+2�1�:�(�
�I�y�����V�%8�%8�9�����F�$8�$8�9����i��/�����Y���4��K�K����	���I������!��a�(����Q�q�T�6�*r>rr�c�(�|jd��y�Nr�r�)r�rYs r�testRecvHopLimitz%RFC3542AncillaryTest.testRecvHopLimit�s��	
���e��,r>c��|j|jj|j���|j	t
�yr�r�rIr�rmrLr�rYs r�_testRecvHopLimitz&RFC3542AncillaryTest._testRecvHopLimit�s6��
	
������,�,�T�5F�5F�,�G�H����#�r>r�c�V�|jtjt���y)Nr�)r�rr�rwrYs r�testRecvHopLimitCMSG_SPACEz/RFC3542AncillaryTest.testRecvHopLimitCMSG_SPACE�s ��	
���f�&7�&7�
�&C��Dr>c��|j|jj|j���|j	t
�yrr�rYs r�_testRecvHopLimitCMSG_SPACEz0RFC3542AncillaryTest._testRecvHopLimitCMSG_SPACE��4��������,�,�T�5F�5F�,�G�H����#�r>r�c�>�|jd|j��y�Nr)r�r�)r��	hop_limitrYs r�testSetHopLimitz$RFC3542AncillaryTest.testSetHopLimit�s��
	
���e�D�N�N��Cr>c�T�|j|jj|j���|j	|jtgtjtjtjd|jg�fg�tt��y�Nr�rP)
r�rIr�rmr�rPr�rr�r�r�r�r�rYs r�_testSetHopLimitz%RFC3542AncillaryTest._testSetHopLimit�s���������,�,�T�5F�5F�,�G�H����� � �#��#)�#6�#6��8L�8L�#(�;�;�s�T�^�^�4D�#E�#G�"H�
I�
��H�		r>c���|jjtjtjd�|jjtjtj
d�|jj�|j|jtt�|�\}}}}|j|t�|j||j�|j|dtj|��|jt|�d�|j!|�}|tjtj"f}	|jt|	�t$�t'j&d�}
|
j)|	�|j+|
dd�|j-|
dd�|tjtj.f}|jt|�t$�t'j&d�}
|
j)|�|j+|
dd�|j-|
d|�y)Nr
TrurrPrr+)r�r�rr�rr�rIr�rTr�r�r�r\r�rlr]r�r�rwr�rmrrrsr�)rZr�r�rzr�r�r�r
�ancmap�tcdatar��hldatas            r�checkTrafficClassAndHopLimitz1RFC3542AncillaryTest.checkTrafficClassAndHopLimit�s���	
���!�!�&�"5�"5�"(�":�":�A�	?����!�!�&�"5�"5�"(�"8�"8�!�	=�������$(�N�N�4�>�>�36�s�8�Z�%I�!��W�e�T�	
����c�"�� � ��t�}�}�5�����4�F�4E�4E�*�	�	,�����W��q�)��&�&�w�/����,�,�f�.@�.@�A�B������V��j�1��K�K����	���F������!��a�(����Q�q�T�3�'���,�,�f�.B�.B�C�D������V��j�1��K�K����	���F������!��a�(����Q�q�T�6�*r>r�r�c�(�|jd��yr�)rrYs r�testRecvTrafficClassAndHopLimitz4RFC3542AncillaryTest.testRecvTrafficClassAndHopLimit�s��	
�)�)�U�)�;r>c��|j|jj|j���|j	t
�yrr�rYs r� _testRecvTrafficClassAndHopLimitz5RFC3542AncillaryTest._testRecvTrafficClassAndHopLimit�r�r>c�\�|jtjt�dz��y�Nrr�)rrr�rwrYs r�)testRecvTrafficClassAndHopLimitCMSG_SPACEz>RFC3542AncillaryTest.testRecvTrafficClassAndHopLimitCMSG_SPACE�s*��
	
�)�)��(�(��4�q�8�	*�	:r>c��|j|jj|j���|j	t
�yrr�rYs r�*_testRecvTrafficClassAndHopLimitCMSG_SPACEz?RFC3542AncillaryTest._testRecvTrafficClassAndHopLimitCMSG_SPACE�r�r>c�>�|jd|j��yr��rr�rYs r�testSetTrafficClassAndHopLimitz3RFC3542AncillaryTest.testSetTrafficClassAndHopLimit�s!��	
�)�)�U�15���	*�	Ar>c���|j|jj|j���|j	|jtgtjtjtjd|jg�ftjtjtjd|jg�fg�tt��yr)r�rIr�rmr�rPr�rr�r�r��
traffic_classr�r�r�rYs r�_testSetTrafficClassAndHopLimitz4RFC3542AncillaryTest._testSetTrafficClassAndHopLimits���������,�,�T�5F�5F�,�G�H����� � �#��#)�#6�#6��8J�8J�#(�;�;�s�T�5G�5G�4H�#I�#K�#)�#6�#6��8L�8L�#(�;�;�s�T�^�^�4D�#E�#G�"H�
I�

��H�
	r>c�>�|jd|j��yr�rrYs r�testOddCmsgSizez$RFC3542AncillaryTest.testOddCmsgSize
s!��	
�)�)�U�15���	*�	Ar>c��|j|jj|j���	|j	t
gtjtjtjd|jg�j�dzftjtjtjd|jg�fg�}y#t$r�}|j|j t"�|j	t
gtjtjtjd|jg�ftjtjtjd|jg�fg�}|j%|t't
��Yd}~yd}~wwxYw)Nr�rPr
)r�rIr�rmrPr�rr�r�r�rr<r�r�rr�r"r(r�r�)rZr2r�s   r�_testOddCmsgSizez%RFC3542AncillaryTest._testOddCmsgSizes]��������,�,�T�5F�5F�,�G�H�	/��)�)����%�%�v�'9�'9��+�+�c�D�$6�$6�#7�8�@�@�B�W�L�N��%�%�v�';�';��+�+�c�D�N�N�#3�4�6�7�8�F���	/��!�!�!�'�'�3�/��)�)����%�%�v�'9�'9��+�+�c�D�$6�$6�#7�8�:��%�%�v�';�';��+�+�c�D�N�N�#3�4�6�7�8�F�
���V�S��X�.�.��	/�s�B&C�	G�'CG�Gc���|jjtjtjd�|j
j
�|�dn|f}|j|jtt�g|���\}}}}|j|t�|j||j�|j|g�|j|dtj|��y)Nr
rdTr�)r�r�rr�rrIr�rTr�r�r�r\r�rlr])rZr�rzr/r�r�r�r
s        r�checkHopLimitTruncatedHeaderz1RFC3542AncillaryTest.checkHopLimitTruncatedHeader-s���	
���!�!�&�"5�"5�"(�":�":�A�	?��������'�r�j�]��$2�D�N�N�4�>�>�36�s�8�%D�>B�%D�!��W�e�T�	
����c�"�� � ��t�}�}�5�����"�%�����4�&�2C�2C�*�	�	,r>c�F�|jdtj��y)N�r�rz�rrr]rYs rr�z+RFC3542AncillaryTest.testCmsgTruncNoBufSizeAs%��	
�)�)�T�
7=�6G�6G�	*�	Ir>c��|j|jj|j���|j	t
�yrr�rYs rr�z,RFC3542AncillaryTest._testCmsgTruncNoBufSizeLr�r>c�F�|jdtj��y)NrrrrYs r�testSingleCmsgTrunc0z)RFC3542AncillaryTest.testSingleCmsgTrunc0Qs#��	
�)�)�Q�6<�6G�6G�	*�	Ir>c��|j|jj|j���|j	t
�yrr�rYs r�_testSingleCmsgTrunc0z*RFC3542AncillaryTest._testSingleCmsgTrunc0Xr�r>c�(�|jd��y)Nr
r�)rrYs r�testSingleCmsgTrunc1z)RFC3542AncillaryTest.testSingleCmsgTrunc1`s���)�)�Q�)�7r>c��|j|jj|j���|j	t
�yrr�rYs r�_testSingleCmsgTrunc1z*RFC3542AncillaryTest._testSingleCmsgTrunc1dr�r>c�6�|jdtz��yr
)rrwrYs r�testSingleCmsgTrunc2Intz,RFC3542AncillaryTest.testSingleCmsgTrunc2Intis���)�)�Q��^�)�Dr>c��|j|jj|j���|j	t
�yrr�rYs r�_testSingleCmsgTrunc2Intz-RFC3542AncillaryTest._testSingleCmsgTrunc2Intmr�r>c�T�|jtjd�dz
��y)Nrr
r�)rrrLrYs r�testSingleCmsgTruncLen0Minus1z2RFC3542AncillaryTest.testSingleCmsgTruncLen0Minus1rs!���)�)�V�_�_�Q�5G�!�5K�)�Lr>c��|j|jj|j���|j	t
�yrr�rYs r�_testSingleCmsgTruncLen0Minus1z3RFC3542AncillaryTest._testSingleCmsgTruncLen0Minus1vr�r>c���|jjtjtjd�|j
j
�|j|jtt�tjt�dz
�\}}}}|j|t�|j||j�|j|dtj ��|j#t|�d�|ri|d\}}}|j|tj�|j|tj$�|j't|�t�yy)Nr
Tr�r)r�r�rr�rrIr�rTr�r�rLrwr�r\r�rlr]rsr�r�r�s        r�testSingleCmsgTruncInDataz.RFC3542AncillaryTest.testSingleCmsgTruncInData{s��
	
���!�!�&�"5�"5�"(�":�":�A�	?�������$(�N�N��N�N�C��H�f�o�o�j�&A�A�&E�%G�!��W�e�T�	
����c�"�� � ��t�}�}�5�����4�&�2C�2C��D����S��\�1�-��/6�q�z�,�J�	�9����Z��)<�)<�=����Y��(<�(<�=��O�O�C�	�N�J�7�	r>c��|j|jj|j���|j	t
�yrr�rYs r�_testSingleCmsgTruncInDataz/RFC3542AncillaryTest._testSingleCmsgTruncInData�r�r>c���|jjtjtjd�|jjtjtj
d�|jj�|j|jtt�|�\}}}}|j|t�|j||j�|j|dtj|��|jt|�d�|d\}}}	|j|tj�|j!|tj"tj$h�|jt|	�t&�t)j(d�}
|
j+|	�|j-|
dd�|j/|
dd�y)Nr
Tr�rrPr+)r�r�rr�rr�rIr�rTr�r�r�r\r�rlr]r�r�r�rwr�rmrrrs)rZr�rzr�r�r�r
rorprqr�s           r�checkTruncatedSecondHeaderz/RFC3542AncillaryTest.checkTruncatedSecondHeader�s|��	
���!�!�&�"5�"5�"(�":�":�A�	?����!�!�&�"5�"5�"(�"8�"8�!�	=�������$(�N�N�4�>�>�36�s�8�Z�%I�!��W�e�T�	
����c�"�� � ��t�}�}�5�����4�&�2C�2C�*�	�	,�	
����W��q�)�+2�1�:�(�
�I�y�����V�%8�%8�9��
�
�i�&�"4�"4�f�6J�6J�!K�L�����Y���4��K�K����	���I������!��a�(����Q�q�T�3�'r>c�t�|jtjt�tj��yr�)r6rr�rwr]rYs r�testSecondCmsgTrunc0z)RFC3542AncillaryTest.testSecondCmsgTrunc0�s.��	
�'�'��(9�(9�*�(E�4:�4E�4E�	(�	Gr>c��|j|jj|j���|j	t
�yrr�rYs r�_testSecondCmsgTrunc0z*RFC3542AncillaryTest._testSecondCmsgTrunc0�r�r>c�Z�|jtjt�dz�yrN�r6rr�rwrYs r�testSecondCmsgTrunc1z)RFC3542AncillaryTest.testSecondCmsgTrunc1�s"��	
�'�'��(9�(9�*�(E��(I�Jr>c��|j|jj|j���|j	t
�yrr�rYs r�_testSecondCmsgTrunc1z*RFC3542AncillaryTest._testSecondCmsgTrunc1�r�r>c�h�|jtjt�dtzz�yr�r<rYs r�testSecondCmsgTrunc2Intz,RFC3542AncillaryTest.testSecondCmsgTrunc2Int�s+��	
�'�'��(9�(9�*�(E�()�J��)7�	8r>c��|j|jj|j���|j	t
�yrr�rYs r�_testSecondCmsgTrunc2Intz-RFC3542AncillaryTest._testSecondCmsgTrunc2Int�r�r>c��|jtjt�tjd�zdz
�yr)r6rr�rwrLrYs r�testSecondCmsgTruncLen0Minus1z2RFC3542AncillaryTest.testSecondCmsgTruncLen0Minus1�s9��	
�'�'��(9�(9�*�(E�(.����(:�);�=>�)?�	@r>c��|j|jj|j���|j	t
�yrr�rYs r�_testSecondCmsgTruncLen0Minus1z3RFC3542AncillaryTest._testSecondCmsgTruncLen0Minus1�r�r>c�&�|jjtjtjd�|jjtjtj
d�|jj�|j|jtt�tjt�tjt�zdz
�\}}}}|j|t�|j||j �|j#|dtj$��tj&tj(h}|j+d�\}}}|j|tj�|j-|�|jt|�t�t/j.d�}	|	j1|�|j3|	dd�|j5|	dd�|re|j+d�\}}}|j|tj�|j-|�|j7t|�t�|j|g�y)Nr
Tr�rrPr+)r�r�rr�rr�rIr�rTr�r�r�rwrLr�r\r�rlr]r�r��pop�remover�rmrrrsr�)
rZr�r�r�r
�
cmsg_typesrorprqr�s
          r�testSecondCmsgTruncInDataz.RFC3542AncillaryTest.testSecondCmsgTruncInData�s���
	
���!�!�&�"5�"5�"(�":�":�A�	?����!�!�&�"5�"5�"(�"8�"8�!�	=�������$(�N�N��N�N�C��H����j�)�F�O�O�J�,G�G�!�K�%M�!��W�e�T�	
����c�"�� � ��t�}�}�5�����4�&�2C�2C��D��(�(�&�*>�*>�?�
�+2�;�;�q�>�(�
�I�y�����V�%8�%8�9����)�$�����Y���4��K�K����	���I������!��a�(����Q�q�T�3�'��/6�{�{�1�~�,�J�	�9����Z��)<�)<�=����i�(��O�O�C�	�N�J�7�����"�%r>c��|j|jj|j���|j	t
�yrr�rYs r�_testSecondCmsgTruncInDataz/RFC3542AncillaryTest._testSecondCmsgTruncInDatar�r>N)r+rr�)1rarbrcr�rr�r�r�rr�rtr�r�r�r�rrr	rrrrrrrrr�r�r"r$r&r(r*r,r.r0r2r4r6r8r:r=r?rArCrErGrLrNrdr>rr�r�Zs����I��M��+�8�&�-��?�-�@�-��!�!��"���&�,�(;�_�M�E�N�E� �+�+��,���&�-�-��+��&�-��?�D�@�,�D�
� � ��!��?B�12�"+�H�&�-��#�]�4�<�4�<�%�0�0��1���&�,�(;�_�#�]�4�:�4�:�/�:�:��;���&�-�-��+��&�,�(;�_�#�]�4�A�4�,�A�$�/�/��0���&�-�-��+��&�,�(;�_�#�]�4�A�4�,�A�� � �/�!�/�*,�(�&�-��?�I�@�I��'�'��(���&�-��?�I�@�I��%�%��&���&�-��?�8�@�8��%�%��&���&�-��?�E�@�E��(�(��)���&�-��?�M�@�M�#�.�.��/���&�-��?�8�@�8�*�*�*��+��(�@�&�,�(;�_�#�]�4�G�4�G��%�%��&���&�,�(;�_�#�]�4�K�4�K��%�%��&���&�,�(;�_�#�]�4�8�4�8��(�(��)���&�,�(;�_�#�]�4�@�4�@�#�.�.��/���&�,�(;�_�#�]�4�!&�4�!&�F�*�*��+�r>r�c��eZdZy)�SendrecvmsgUDPTestBaseN�rarbrcrdr>rrPrP���	r>rPr�c��eZdZy)�SendmsgUDPTestNrQrdr>rrTrT���r>rTr�c��eZdZy)�RecvmsgUDPTestNrQrdr>rrWrWrUr>rWrqc��eZdZy)�RecvmsgIntoUDPTestNrQrdr>rrYrYrUr>rYc��eZdZd�Zy)�SendrecvmsgUDP6TestBasec�4�|j|dd|dd�yr6rXrYs   rr\z+SendrecvmsgUDP6TestBase.checkRecvmsgAddress$� ��	
����s���U�3�B�Z�0r>N�rarbrcr\rdr>rr[r[ s��1r>r[rIrgr(c��eZdZy)�SendmsgUDP6TestNrQrdr>rr`r`)���	r>r`c��eZdZy)�RecvmsgUDP6TestNrQrdr>rrcrc/rar>rcc��eZdZy)�RecvmsgIntoUDP6TestNrQrdr>rrere5rar>rer�c��eZdZy)�RecvmsgRFC3542AncillaryUDP6TestNrQrdr>rrgrg;���	r>rgc��eZdZy)�#RecvmsgIntoRFC3542AncillaryUDP6TestNrQrdr>rrjrjCs��	r>rjc��eZdZy)�SendrecvmsgUDPLITETestBaseNrQrdr>rrlrlMs��
	r>rlc��eZdZy)�SendmsgUDPLITETestNrQrdr>rrnrnTrar>rnc��eZdZy)�RecvmsgUDPLITETestNrQrdr>rrprpZrar>rpc��eZdZy)�RecvmsgIntoUDPLITETestNrQrdr>rrrrr`rar>rrc��eZdZd�Zy)�SendrecvmsgUDPLITE6TestBasec�4�|j|dd|dd�yr6rXrYs   rr\z/SendrecvmsgUDPLITE6TestBase.checkRecvmsgAddressmr]r>Nr^rdr>rrtrtgs��1r>rtc��eZdZy)�SendmsgUDPLITE6TestNrQrdr>rrwrwrrhr>rwc��eZdZy)�RecvmsgUDPLITE6TestNrQrdr>rryryzrhr>ryc��eZdZy)�RecvmsgIntoUDPLITE6TestNrQrdr>rr{r{�rhr>r{c��eZdZy)�#RecvmsgRFC3542AncillaryUDPLITE6TestNrQrdr>rr}r}�s��	r>r}c��eZdZy)�'RecvmsgIntoRFC3542AncillaryUDPLITE6TestNrQrdr>rrr�s��	r>rc��eZdZy)�SendrecvmsgTCPTestBaseNrQrdr>rr�r��rUr>r�c��eZdZy)�SendmsgTCPTestNrQrdr>rr�r��rUr>r�c��eZdZy)�RecvmsgTCPTestNrQrdr>rr�r��rRr>r�c��eZdZy)�RecvmsgIntoTCPTestNrQrdr>rr�r��rRr>r�c��eZdZy)�SendrecvmsgSCTPStreamTestBaseNrQrdr>rr�r��rRr>r�z6IPPROTO_SCTP: [Errno 62] Protocol not supported on AIXrTrAr`c��eZdZy)�SendmsgSCTPStreamTestNrQrdr>rr�r��rar>r�c���eZdZ�fd�Z�xZS)�RecvmsgSCTPStreamTestc���	tt|��y#t$r9}|jtj
k7r�|j
d�Yd}~yd}~wwxYw�Nz4sporadic ENOTCONN (kernel issue?) - see issue #13876)r&r�r!rr"�ENOTCONNrx�rZr�r(s  �rr!z$RecvmsgSCTPStreamTest.testRecvmsgEOF�sL���	R��'��=�?���	R��w�w�%�.�.�(���M�M�P�Q�Q��	R����	A�/A�A�rarbrcr!r)r*s@rr�r������R�Rr>r�c���eZdZ�fd�Z�xZS)�RecvmsgIntoSCTPStreamTestc���	tt|��y#t$r9}|jtj
k7r�|j
d�Yd}~yd}~wwxYwr�)r&r�r!rr"r�rxr�s  �rr!z(RecvmsgIntoSCTPStreamTest.testRecvmsgEOF�sL���	R��+�T�A�C���	R��w�w�%�.�.�(���M�M�P�Q�Q��	R�r�r�r*s@rr�r��r�r>r�c��eZdZy)�SendrecvmsgUnixStreamTestBaseNrQrdr>rr�r��rUr>r�rHc��eZdZy)�SendmsgUnixStreamTestNrQrdr>rr�r��rRr>r�c��eZdZy)�RecvmsgUnixStreamTestNrQrdr>rr�r��rar>r�c��eZdZy)�RecvmsgIntoUnixStreamTestNrQrdr>rr�r��rar>r�r�rlc��eZdZy)�RecvmsgSCMRightsStreamTestNrQrdr>rr�r��rRr>r�c��eZdZy)�RecvmsgIntoSCMRightsStreamTestNrQrdr>rr�r��rar>r�c�d��eZdZ�fd�Zej
Zeed�r	dZ	d�Z
�xZSdZ	d�Z
�xZS)�InterruptedTimeoutBasec����t�|��tjtjd��}|j	tjtj|�y)Nc��ddzSr�rd)�signumrs  rrpz.InterruptedTimeoutBase.setUp.<locals>.<lambda>	s���A�r>)r&r[rrru)rZ�orig_alrm_handlerr(s  �rr[zInterruptedTimeoutBase.setUps>���
��
��"�M�M�&�.�.�*E�G������
�
�v�~�~�7H�Ir>�	setitimerg�������?c�L�tjtj|�yrI)rr��ITIMER_REAL�rZ�secondss  r�setAlarmzInterruptedTimeoutBase.setAlarms�����V�/�/��9r>rc�.�tj|�yrI)rrr�s  rr�zInterruptedTimeoutBase.setAlarms���L�L��!r>)rarbrcr[rr�rLrr�
alarm_timer�r)r*s@rr�r�s8���
J��&�&�G�
�v�{�#��
�	:��
�	"r>r��siginterruptrr�z+Don't have signal.alarm or signal.setitimerc���eZdZ�fd�Zd�Zd�Zd�Zd�Zd�Ze	e
jd�d��Ze	e
jd	�d
��Z�xZ
S)�InterruptedRecvTimeoutTestc�l��t�|��|jj|j�yrI)r&r[rUr�rLr's �rr[z InterruptedRecvTimeoutTest.setUp(s"���
��
���	�	���T�\�\�*r>c���	|j|j�|jt�5}||i|��ddd�|jd�y#1swY�xYw#|jd�wxYwr�)r�r�r�r
�rZrPr/r0r�s     r�checkInterruptedRecvz/InterruptedRecvTimeoutTest.checkInterruptedRecv,s`��	��M�M�$�/�/�*��"�"�#4�5���d�%�f�%�6�
�M�M�!��6�5��
�M�M�!��s!�0A!�	A�A!�A�A!�!A4c�P�|j|jjd�yr�)r�rUr�rYs r�testInterruptedRecvTimeoutz5InterruptedRecvTimeoutTest.testInterruptedRecvTimeout6s���!�!�$�)�)�.�.�$�7r>c�b�|j|jjtd��yr�)r�rU�	recv_intor�rYs r�testInterruptedRecvIntoTimeoutz9InterruptedRecvTimeoutTest.testInterruptedRecvIntoTimeout9s ���!�!�$�)�)�"5�"5�y���Gr>c�P�|j|jjd�yr�)r�rUr�rYs r�testInterruptedRecvfromTimeoutz9InterruptedRecvTimeoutTest.testInterruptedRecvfromTimeout<s���!�!�$�)�)�"4�"4�d�;r>c�b�|j|jjtd��yr�)r�rUr�r�rYs r�"testInterruptedRecvfromIntoTimeoutz=InterruptedRecvTimeoutTest.testInterruptedRecvfromIntoTimeout?s ���!�!�$�)�)�"9�"9�9�T�?�Kr>r�c�P�|j|jjd�yr�)r�rUr�rYs r�testInterruptedRecvmsgTimeoutz8InterruptedRecvTimeoutTest.testInterruptedRecvmsgTimeoutBs���!�!�$�)�)�"3�"3�T�:r>rqc�d�|j|jjtd�g�yr�)r�rUrqr�rYs r�!testInterruptedRecvmsgIntoTimeoutz<InterruptedRecvTimeoutTest.testInterruptedRecvmsgIntoTimeoutFs#���!�!�$�)�)�"8�"8�9�T�?�:K�Lr>)rarbrcr[r�r�r�r�r�r�rr�r�r)r*s@rr�r�!sc���+��8�H�<�L��&�-�-��+�;�,�;��&�-�-��0�M�1�Mr>r�c����eZdZ�fd�Zd�Zd�Zejdd�d��Zejdd�d��Z	ejdd�e
ejd�d	���Z�xZ
S)
�InterruptedSendTimeoutTestc����t�|��|j�|_|j	|jj
�t
j|j��}|j�|jj�\|_}|j	|jj
�|j�|jj|j�y)N)�target)r&r[rr
rur!r��Thread�	doConnect�startrUr�rr�r�rL)rZ�
cli_threadr
r(s   �rr[z InterruptedSendTimeoutTest.setUpUs����
��
�����)���������,�,�-��%�%�T�^�^�<�
�����"�i�i�.�.�0���
�t�����
�
�+�+�,��������!�!�$�,�,�/r>c�N�|jj|j�yrI)r
r�r"rYs rr�z$InterruptedSendTimeoutTest.doConnectcs�������t�~�~�.r>c���	|jt�5}	|j|j�||i|���$#1swYnxYw	|jd�y#|jd�wxYwr�)r�r
r�r�r�s     r�checkInterruptedSendz/InterruptedSendTimeoutTest.checkInterruptedSendfsd��	��"�"�#4�5����M�M�$�/�/�2��$�)�&�)��6�5��5�

�M�M�!���D�M�M�!��s�A�&=�A�A�A/rzr#c�P�|j|jjd�yr�)r�r
r�rYs r�testInterruptedSendTimeoutz5InterruptedSendTimeoutTest.testInterruptedSendTimeoutss���!�!�$�.�.�"5�"5�x�@r>c�f�|j|jjd|j�yr�)r�r
r�r"rYs r�testInterruptedSendtoTimeoutz7InterruptedSendTimeoutTest.testInterruptedSendtoTimeoutws'��	
�!�!�$�.�.�"7�"7��"&�.�.�	2r>r�c�R�|j|jjdg�yr�)r�r
r�rYs r�testInterruptedSendmsgTimeoutz8InterruptedSendTimeoutTest.testInterruptedSendmsgTimeout�s ��	
�!�!�$�.�.�"8�"8�8�*�Er>)rarbrcr[r�r�r�requires_mac_verr�r�r�rr�r)r*s@rr�r�Ms����0�/�
��W���b�!�$�A�%�A��W���b�!�$�2�%�2��W���b�!�$��&�-�-��+�F�,�%�Fr>r�c��eZdZd�Zd�Zy)�
TCPCloserTestc�X�|jj�\}}|j�|j}t	j|gggd�\}}}|j||g�|j|j
d�d�|j�|j�y)N��?r
r>)rUr�r!r�r�r�r�)rZr�r
�sdr	r_r�s       r�	testClosezTCPCloserTest.testClose�s����Y�Y�%�%�'�
��d��
�
��
�X�X��!�=�=�"��r�2�s�;���e�S������t�$���������S�)�	
�
�
���
�
�r>c��|jjt|jf�t	j
d�y�Nr�)r�r�r�rWr�r�rYs r�
_testClosezTCPCloserTest._testClose�s(�������$��	�	�*�+��
�
�3�r>N)rarbrcr�r�rdr>rr�r��s���r>r�c�>�eZdZd
d�Zd�Zd�Zd�Zd�Zd�Zd�Z	d�Z
y	)�BasicSocketPairTestc�2�tj||��yr�)rr�r�s  rr�zBasicSocketPairTest.__init__�s��������<r>c��|j|tj�ttd�r+|j|jtj
�n*|j|jtj�|j|jtj�|j|jd�y)NrHr)
r�rrr�r�rHrTrsrAr�rRs  r�_check_defaultsz#BasicSocketPairTest._check_defaults�s~�����d�F�M�M�2��6�9�%����T�[�[�&�.�.�9����T�[�[�&�.�.�9�������F�$6�$6�7�������Q�'r>c�:�|j|j�yrI)r�r�rYs r�
_testDefaultsz!BasicSocketPairTest._testDefaults�s�����T�X�X�&r>c�:�|j|j�yrI)r�rUrYs r�testDefaultsz BasicSocketPairTest.testDefaults�s�����T�Y�Y�'r>c�f�|jjd�}|j|t�yr��rUr�r�r�r�s  rr�zBasicSocketPairTest.testRecv�r�r>c�B�|jjt�yrI�r�r�r�rYs rr�zBasicSocketPairTest._testRecv�������
�
�c�r>c�B�|jjt�yrI�rUr�r�rYs r�testSendzBasicSocketPairTest.testSend�����	�	���s�r>c�f�|jjd�}|j|t�yr��r�r�r�r�r�s  r�	_testSendzBasicSocketPairTest._testSend��$���h�h�m�m�D�!������c�"r>Nr�)rarbrcr�r�r�r�r�r�r�r�rdr>rr�r��s*��=�(�'�(�#���#r>r�c���eZdZd�Z�fd�Z�fd�Zd�Zd�Zd�Zd�Z	d�Z
d	�Zejeed
�xs
eed�d�ej ej$d
�d���Zd�Zd�Zd�Z�xZS)�PurePythonSocketPairTestc��	tjtj�S#t$r&tjtj�cYSwxYwrI)rrrgrrTrYs rrz#PurePythonSocketPairTest.socketpair�s@��	5��$�$�V�_�_�5�5���	5��$�$�V�^�^�4�4�	5�s�"%�,A�Ac���ttd�r/tj|_tj
t_nd|_t�|��y)Nr)rr�rr�_orig_sp�_fallback_socketpairr&r[r's �rr[zPurePythonSocketPairTest.setUp�s<����7�L�)�"�-�-�D�M�!'� ;� ;�F��!�D�M�
��
�r>c�f��t�|��|j�|jt_yyrI)r&r^r�rrr's �rr^z!PurePythonSocketPairTest.tearDown�s)���
�����=�=�$� $�
�
�F��%r>c�f�|jjd�}|j|t�yr�r�r�s  r�	test_recvz"PurePythonSocketPairTest.test_recv�r�r>c�B�|jjt�yrIr�rYs r�
_test_recvz#PurePythonSocketPairTest._test_recv�r�r>c�B�|jjt�yrIr�rYs r�	test_sendz"PurePythonSocketPairTest.test_send�r�r>c�f�|jjd�}|j|t�yr�r�r�s  r�
_test_sendz#PurePythonSocketPairTest._test_send�r�r>c��tjtj�\}}|j�|j�yrI)rrrTr!�rZr�rEs   r�	test_ipv4z"PurePythonSocketPairTest.test_ipv4�s,���$�$�V�^�^�4���S��	�	���	�	�r>c��yrIrdrYs r�
_test_ipv4z#PurePythonSocketPairTest._test_ipv4�rr>r��IPV6_V6ONLY� IPV6_V6ONLY option not supportedr�c��tjtj�\}}|j�|j�yrI)rrrgr!rs   r�	test_ipv6z"PurePythonSocketPairTest.test_ipv6�s.��
�$�$�V�_�_�5���S��	�	���	�	�r>c��yrIrdrYs r�
_test_ipv6z#PurePythonSocketPairTest._test_ipv6�rr>c�<���tjj�d���fd�}dx}}	|tj_|jt�5tj�\}}ddd��tj_�r�j�|r|j�|r|j�yy#1swY�VxYw#�tj_�r�j�|r|j�|r|j�wwxYw)Nc����|�}��itjtjtj���jd�	�j	|dd��jd�|S#t
tf$rY�$wxYw)NFrT)rrTrArhr��BlockingIOError�InterruptedError)rZr��inject_sock�orig_getsocknames  ��r�inject_getsocketnamez[PurePythonSocketPairTest.test_injected_authentication_failure.<locals>.inject_getsocketnames����'��-�H��"�$�m�m�F�N�N�F�<N�<N�O���'�'��.���'�'���!��5��'�'��-��O��(�)9�:����s�A7�7B	�B	)rr�r�rrr!)rZr�sock1�sock2rrs    @@r�$test_injected_authentication_failurez=PurePythonSocketPairTest.test_injected_authentication_failure�s����!�=�=�4�4����
	�����	�(<�F�M�M�%��"�"�7�+�%�0�0�2���u�,�)9�F�M�M�%���!�!�#�����
�����
��,�+��)9�F�M�M�%���!�!�#�����
�����
��s$�*C
�C�,C
�C
�C
�
ADc��yrIrdrYs r�%_test_injected_authentication_failurez>PurePythonSocketPairTest._test_injected_authentication_failures��
	
r>)rarbrcrr[r^r�rrrrr
r�r�rr�r�rr�rrrrr)r*s@rr�r��s����
5�	�.�#���#��

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

��B
r>r�c��eZdZdd�Zd�Zd�Zd�Zejd��Z	eje�Z
eje
ed�d�ejdd	d
�d���Zd�Zd
�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zy)�NonBlockingTCPTestsc�d�tj�|_tj	||��yr�)r�r��eventr�r�r�s  rr�zNonBlockingTCPTests.__init__)s#���_�_�&��
��&�&�t�
�&�Cr>c�x�|j|jj�|�|dk7}|j|j�|�t�e|du}t	j|tj
tj�}|jt|tjz�|�yy)N�)	r�rUr|�getblockingr�F_GETFLr��
O_NONBLOCK�bool)rZrCrL�blocking�fd_blocking�flags      r�assert_sock_timeoutz'NonBlockingTCPTests.assert_sock_timeout-s���������-�-�/��9��s�N������)�)�+�X�6���#�d�?�K��;�;�t�U�]�]�B�M�M�B�D�����d�R�]�]�&:�!;�;�[�I�r>c��|jjd�|j|jd�|jjd�|j|jd�|jjd�|j|jd�|jjd�|j|jd�|jjd�|j|jd�|jjd�|j|jd�y)NTFr"rrz)rUrhr*r�rYs r�testSetBlockingz#NonBlockingTCPTests.testSetBlocking>s����	�	���d�#�� � ����D�1��	�	���e�$�� � ����C�0��	�	���T�"�� � ����D�1��	�	���Q��� � ����A�.��	�	���R� �� � ����B�/��	�	���Q��� � ����A�.r>c��yrIrdrYs r�_testSetBlockingz$NonBlockingTCPTests._testSetBlockingRrr>c��ddl}|j|jk\r|jd�|jjd�|j
|jj�d�|jj|jdz�|j|jj��y)Nrzneeds UINT_MAX < ULONG_MAXFr"r
)	rXrr�rxrUrhr�r|r�rs  r�testSetBlocking_overflowz,NonBlockingTCPTests.testSetBlocking_overflowUs���	�����!4�!4�4��M�M�6�7��	�	���e�$�������-�-�/��5��	�	���i�0�0�1�4�5����$�)�)�.�.�0�1r>rgztest needs socket.SOCK_NONBLOCKr��c��|jj�tjtjtjtj
z�|_|j
|jd�yr�)rUr!rrTrArgr*rYs r�testInitNonBlockingz'NonBlockingTCPTests.testInitNonBlockingdsQ��
	
�	�	�����M�M�&�.�.�"(�"4�"4�v�7K�7K�"K�M��	�� � ����A�.r>c��yrIrdrYs r�_testInitNonBlockingz(NonBlockingTCPTests._testInitNonBlockingnrr>c�(�td�5|jjd�|jj�\}}|j	|j
�|j
|j��ddd�y#1swYyxYw)Nrz)rNrUr�r�rur!r�r|r	s   r�testInheritFlagsBlockingz,NonBlockingTCPTests.testInheritFlagsBlockingqse��&�d�
+��I�I� � ��$����)�)�+�J�D�$��O�O�D�J�J�'����d�o�o�/�0�	,�
+�
+�s�A3B�Bc�Z�|jjt|jf�yrI�r�r�r�rWrYs r�_testInheritFlagsBlockingz-NonBlockingTCPTests._testInheritFlagsBlockingz��������$��	�	�*�+r>c�.�d}t|�5|jjd�|jj�\}}|j	|j
�|j
|j�|�ddd�y#1swYyxYw)Ng4@rz)rNrUr�r�rur!r�r|)rZ�default_timeoutr�r
s    r�testInheritFlagsTimeoutz+NonBlockingTCPTests.testInheritFlagsTimeout}sl����
%�o�
6��I�I� � ��$����)�)�+�J�D�$��O�O�D�J�J�'����T�_�_�.��@�	7�
6�
6�s�A4B�Bc�Z�|jjt|jf�yrIr:rYs r�_testInheritFlagsTimeoutz,NonBlockingTCPTests._testInheritFlagsTimeout�r<r>c���|jjd�tj�}|j	t
�5|jj
�\}}ddd�tj�|z
}|j|d�|jj�tj|jgggtj�\}}}|j|vr|jd�|jj
�\}}|j|j�|j!|j#��y#1swY��xYw)NFr�z'Error trying to do accept after select.)rUrhr��	monotonicr�rr�r�r r�r�r�LONG_TIMEOUTr�rur!r�r|)rZ�
start_timer�r
�dtr	r_r�s        r�
testAcceptzNonBlockingTCPTests.testAccept�s����	�	���e�$��^�^�%�
�
�
�
��
/����)�)�+�J�D�$�0�
�^�^�
�
�
*������C� ��
�
����!�=�=�$�)�)��b�"�g�>R�>R�S���e�S��9�9�D� ��I�I�?�@��Y�Y�%�%�'�
��d�����
�
�#����$�/�/�+�,�0�
/�s�E�E#c��|jj�|jjt|j
f�yrI)r r�r�r�r�rWrYs r�_testAcceptzNonBlockingTCPTests._testAccept�s-��	
�
�
���������$��	�	�*�+r>c�B�|jj�\}}|j|j�|j	d�|jt�5|jtt��}ddd�|jj�tj|gggtj�\}}}||vr|jd�|jtt��}|j!|t�y#1swY��xYw)NFz0Error during select call to non-blocking socket.)rUr�rur!rhr�rr�r�r�r r�r�rrDr�r�)rZr�r
r�r	r_r�s       rr�zNonBlockingTCPTests.testRecv�s����Y�Y�%�%�'�
��d�����
�
�#�������
�
��
/��)�)�C��H�%�C�0�	
�
�
����!�=�=�$���R��9M�9M�N���e�S��t���I�I�H�I��i�i��C��!������c�"�0�
/�s�D�Dc���|jjt|jf�|jj�|jj
t�yrI)r�r�r�rWr r�rr�rYs rr�zNonBlockingTCPTests._testRecv�sA�������$��	�	�*�+�	
�
�
����	
������r>Nr�)rarbrcr�r*r,r.rr�r0�_testSetBlocking_overflowr�r�rr�requires_linux_versionr4r6r8r;r?rArGrIr�r�rdr>rrr's���D�J�"/�(
�
���
2��
2�!5�� 4� 4�5E� F���X������9�:�<�#�W�#�#�A�q�"�-�/�.�<�/�
�1�,�	A�,�-�,,�#�(r>rc���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%y)"�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	�strictNrr0c�2�tj||��yr�r�r�s  rr�z FileObjectClassTestCase.__init__�r�r>c�n�td�D�cgc]}tj���c}\|_|_|_|_tj|�|jj|j|j|j|j|j��|_ycc}w)Nr��r4�errors�newline)r<r�r��evt1�evt2�
serv_finished�cli_finishedrr[rr�	read_moderzr4rTrU�	read_file)rZrPs  rr[zFileObjectClassTestCase.setUp�s���',�Q�x�G1�'/�!�I�O�O��x�G1�C��	�4�9�d�0�$�2C��!�!�$�'����/�/��N�N�D�L�L��}�}��[�[��l�l�	0�$����G1s�B2c���|jj�|jj�|j	|jj
�d|_tj|�yrI)rXr�r[r!r��closedrr^rYs rr^z FileObjectClassTestCase.tearDown�sO������� �������������-�-�.�����$�$�T�*r>c���tj|�|jj|j|j
|j|j|j��|_	y)NrS)
rr�r
r�
write_moderzr4rTrU�
write_filerYs rr�z#FileObjectClassTestCase.clientSetUp�sM���'�'��-��.�.�1�1��O�O�T�\�\��}�}��[�[��l�l�	2�$��r>c���|jj�|jj�|j	|jj
�d|_tj|�yrI)rYr�r`r!r�r]rr�rYs rr�z&FileObjectClassTestCase.clientTearDown�sO��������������������.�.�/�����*�*�4�0r>c��|jjd�|jjd�|j	t
|jjd�|j	t�5}|jjd�ddd�|jdtj��y#1swY�/xYw)Nr
r�z!cannot read from timed out object)
rr�r[r	r�rrr�r�r�)rZ�ctxs  r�testReadAfterTimeoutz,FileObjectClassTestCase.testReadAfterTimeouts���	
�
�
� � ��#������A�����,����(;�(;�Q�?�
�
�
�w�
'�3��N�N����"�(��
�
�9�3�s�}�}�;M�N�(�
'�s�7C�C
c��|jj|jdd�|jj�|jj�y)Nrr�)r`r_�	write_msg�flushrXr�rYs r�_testReadAfterTimeoutz-FileObjectClassTestCase._testReadAfterTimeoutsA�������d�n�n�Q�q�1�2������������!r>c���|jjt|j�dz
�}|jjd�}||z}|j	||j�yr�)r[r	r��read_msgr�)rZ�	first_seg�
second_segr�s    r�
testSmallReadz%FileObjectClassTestCase.testSmallReadsV���N�N�'�'��D�M�M�(:�1�(<�=�	��^�^�(�(��+�
��*�$������d�m�m�,r>c��|jj|j�|jj�yrI�r`r_rfrgrYs r�_testSmallReadz&FileObjectClassTestCase._testSmallRead�(�������d�n�n�-������r>c�p�|jj�}|j||j�yrI)r[r	r�rjr�s  r�testFullReadz$FileObjectClassTestCase.testFullReads(���n�n�!�!�#������d�m�m�,r>c��|jj|j�|jj�yrI)r`r_rfr!rYs r�
_testFullReadz%FileObjectClassTestCase._testFullRead!rqr>c��t|j��}	|jjd�}|sn||z
}�$|j	||j�yrN)rsrjr[r	r�)rZrt�chars   r�testUnbufferedReadz*FileObjectClassTestCase.testUnbufferedRead%sV��!�d�4�=�=�!�#����>�>�&�&�q�)�D����4�K�C�	�
	
����d�m�m�,r>c��|jj|j�|jj�yrIrorYs r�_testUnbufferedReadz+FileObjectClassTestCase._testUnbufferedRead/rqr>c�p�|jj�}|j||j�yrI)r[�readliner�rj�rZ�lines  r�testReadlinez$FileObjectClassTestCase.testReadline3s(���~�~�&�&�(������t�}�}�-r>c��|jj|j�|jj�yrIrorYs r�
_testReadlinez%FileObjectClassTestCase._testReadline8rqr>c��|jj�|jj�}|j	||j
�yrI)rr!r[r	r�rjr�s  r�testCloseAfterMakefilez.FileObjectClassTestCase.testCloseAfterMakefile<s8���
�
�����n�n�!�!�#������d�m�m�,r>c��|jj|j�|jj�yrIrorYs r�_testCloseAfterMakefilez/FileObjectClassTestCase._testCloseAfterMakefileCrqr>c��|jj�|jjt	t
��}t
|jt�r|j�}|j||j�yrI)r[r!rr�r�r�rrrjr��decoder�r�s  r�testMakefileAfterMakefileClosez6FileObjectClassTestCase.testMakefileAfterMakefileCloseGsW���������m�m� � ��S��*���d�m�m�S�)��*�*�,�C�����d�m�m�,r>c��|jj|j�|jj�yrIrorYs r�_testMakefileAfterMakefileClosez7FileObjectClassTestCase._testMakefileAfterMakefileCloseNrqr>c�P�|j|jj�yrI)r�r[r]rYs r�testClosedAttrz&FileObjectClassTestCase.testClosedAttrRs�����D�N�N�1�1�1�2r>c�P�|j|jj�yrI)r�r`r]rYs r�_testClosedAttrz'FileObjectClassTestCase._testClosedAttrUs�����D�O�O�2�2�2�3r>c���|j|jj|j�|j|jj|j
j
��yrI)r�r[r2rZr�rr�rYs r�testAttributesz&FileObjectClassTestCase.testAttributesXsG��������,�,�d�n�n�=�������,�,�d�m�m�.B�.B�.D�Er>c���|j|jj|j�|j|jj|j
j
��yrI)r�r`r2r_r�r
r�rYs r�_testAttributesz'FileObjectClassTestCase._testAttributes\sG��������-�-�t���?�������-�-�t�~�~�/D�/D�/F�Gr>c��|jj�|jt|jj�|j
j�|jt|j
j�yrI)r[r!r�r}r�rrr�rYs r�
testRealClosez%FileObjectClassTestCase.testRealClose`sV�����������*�d�n�n�&;�&;�<��
�
�������'�4�=�=�#<�#<�=r>c��yrIrdrYs r�_testRealClosez&FileObjectClassTestCase._testRealClosefrr>r�)&rarbrcryrzr4rTrUrZr�rjr_rfr�r[r^r�r�rdrhrmrprsrurxrzrr�r�r�r�r�r�r�r�r�r�r�rdr>rrOrO�s���	��G��H�
�F��G��I��H��J��I�B�$�+�$�1�
O�"�
-� �-�
 �-� �.�
 �-� �-� �3�4�F�H�>�
r>rOc�P�eZdZdZdZd�Zd�Zd�Zd�Zd�Z	d�Z
d	�Zd
�Zd�Z
d�Zy
)�!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�*�|jj�}|j|d|jz�|jjdd�|_|jj�}|j|d|jz�y)N�A. rr�B. )r[r|r�rfrrr}s  r�testUnbufferedReadlinez8UnbufferedFileObjectClassTestCase.testUnbufferedReadlinevsp���~�~�&�&�(������v����6�7����/�/��a�8����~�~�&�&�(������v����6�7r>c���|jjd|jz�|jjd|jz�|jj�y)Nr�r�rorYs r�_testUnbufferedReadlinez9UnbufferedFileObjectClassTestCase._testUnbufferedReadline~sH�������f�t�~�~�5�6������f�t�~�~�5�6������r>c�0�|jj�|jjd�}|j||j�|j
j�|j
t|jjd�yr�)rr!r�r�rjr[r�rr�s  r�testMakefileClosez3UnbufferedFileObjectClassTestCase.testMakefileClose�sf���
�
�����m�m� � ��&������d�m�m�,����������'�4�=�=�#5�#5�t�<r>c��|jj|j�|jj�yrIrorYs r�_testMakefileClosez4UnbufferedFileObjectClassTestCase._testMakefileClose�rqr>c���tj|j�}|jj	�tj|j�}|j|dz
|�yrN)r@r>rr[r!r�)rZ�refcount_before�refcount_afters   r�testMakefileCloseSocketDestroyz@UnbufferedFileObjectClassTestCase.testMakefileCloseSocketDestroy�sK���/�/�$�-�-�8��������������7������1�,�n�=r>c��yrIrdrYs r�_testMakefileCloseSocketDestroyzAUnbufferedFileObjectClassTestCase._testMakefileCloseSocketDestroy�rr>c��|jjd�|j|jj	td��d�|j|jj
t|j�dz
�d�|jj�|jjd�|jj
t|j�dz
�}|�Ftjd�|jj
t|j�dz
�}td�}|jj	|�}|j|d�||d|z}|j||j�|j|jj	td��d�|j|jj
d�d�y)NFrzr�r�g�?rHr
)rrhr�r[�readintor�r	r�rjrVr�rWr�r�r�)rZrkrtrTr�s     r�testSmallReadNonBlockingz:UnbufferedFileObjectClassTestCase.testSmallReadNonBlocking�si���
�
�!�!�%�(�������0�0��2��?��F�������,�,�S����-?�!�-C�D�d�K��	�	�
�
���	�	���s���N�N�'�'��D�M�M�(:�Q�(>�?�	����J�J�s�O����+�+�C��
�
�,>��,B�C�I���m���N�N�#�#�C�(������A���#�b�q�'�!������d�m�m�,�������0�0��2��?��F�������,�,�Q�/��6r>c�"�|jjd�|jj|j�|jj�|jj�|jjd�y)Nr��@)	rVr�r`r_rfrgrWr�rXrYs r�_testSmallReadNonBlockingz;UnbufferedFileObjectClassTestCase._testSmallReadNonBlocking�s[���	�	���s�������d�n�n�-��������	�	�
�
��	
������$r>c��|jjd�|jr|j|j�yy)Nr�)rYr��serv_skippedrxrYs r�testWriteNonBlockingz6UnbufferedFileObjectClassTestCase.testWriteNonBlocking�s8�������s�#�����M�M�$�+�+�,�r>c�\�d|_|jjd�dtjz}d}|j
j
|�}|j|d�t|�D]3}|j
j
|�}|�y|j|d��5d|_y)NFr
rzrz$failed to saturate the socket buffer)	r�r
rhrrr`r_r)r<)rZ�BIG�LIMITrTrPs     r�_testWriteNonBlockingz7UnbufferedFileObjectClassTestCase._testWriteNonBlocking�s��� ������"�"�5�)��W�*�*�*�����O�O�!�!�#�&�����1�a� ��u��A����%�%�c�*�A��y�����q�!�$��!G�D�r>N)rarbrcryrzr�r�r�r�r�r�r�r�r�r�rdr>rr�r�jsA��<��G�8� �
=� �>�
�7�&%�-�Gr>r�c��eZdZdZy)�#LineBufferedFileObjectClassTestCaser
N�rarbrcrzrdr>rr�r������Gr>r�c��eZdZdZy)�$SmallBufferedFileObjectClassTestCaserNr�rdr>rr�r��r�r>r�c�B�eZdZdZdZej
d�ZdZeZ	dZ
y)�"UnicodeReadFileObjectClassTestCase�=Tests for socket.makefile() in text mode (rather than binary)rr	r0r�N�rarbrcryrZr�r�rjr_rfrUrdr>rr�r��s'��G��I��z�z�'�"�H��J��I��Gr>r�c�B�eZdZdZdZeZdZejd�Z	dZ
y)�#UnicodeWriteFileObjectClassTestCaser�rr/r	r�N)rarbrcryrZr�rjr_r�rfrUrdr>rr�r��s'��G��I��H��J��
�
�7�#�I��Gr>r�c�`�eZdZdZdZej
d�ZdZej
d�Z	dZ
y)�'UnicodeReadWriteFileObjectClassTestCaser�rr	r/r�Nr�rdr>rr�r��s0��G��I��z�z�'�"�H��J��
�
�7�#�I��Gr>r�c��eZdZdZd�Zy)�NetworkConnectionTestzProve network connection.c�z�tjt|jf�|_|j|_yrI)r�create_connectionr�rWr�r
rYs rr�z!NetworkConnectionTest.clientSetUps*���+�+�T�4�9�9�,=�>�������r>N)rarbrcryr�rdr>rr�r��s
��#�"r>r�c��eZdZdZy)�
BasicTCPTest2zLTests that NetworkConnection does not break existing TCP functionality.
    N)rarbrcryrdr>rr�r�s��r>r�c��eZdZGd�dej�Zejd��Zejd��Z
ejd��Zd�Zd�Z
y)	�NetworkConnectionNoServerc��eZdZd�Zy)�$NetworkConnectionNoServer.MockSocketc��td��)Nz	timed out)rrOs  rr�z,NetworkConnectionNoServer.MockSocket.connects
���{�+�+r>N)rarbrcr�rdr>r�
MockSocketr�
s��	,r>r�c#�K�tj}|jt_	d��|t_y#|t_wxYw�w)z*Return a socket which times out on connectN)rr�)rZ�
old_sockets  r�mocked_socket_modulez.NetworkConnectionNoServer.mocked_socket_modules2�����]�]�
�����
�	'��&�F�M��J�F�M�s�&A	�9�A	�
A�A	c��tj�}tjtjtj�}|j|j�|jt�5}|jt|f�ddd�|jjjtj�y#1swY�>xYwrI)rr�rrTrArur!r�rr�r�r�r�r"�ECONNREFUSED)rZrWr�r�s    r�test_connectz&NetworkConnectionNoServer.test_connects����-�-�/���m�m�F�N�N�F�,>�,>�?������	�	�"�
�
�
�w�
'�2��K�K��t��%�(�������+�+�U�-?�-?�@�(�
'�s�7C�Cc�*�tj�}|jt�5}t	j
t|f�ddd�tj�}|jjj|�y#1swY�DxYwrI)rr�r�rrr�r��get_socket_conn_refused_errsr�r�r")rZrWr��expected_errnoss    r�test_create_connectionz0NetworkConnectionNoServer.test_create_connection$sj���-�-�/��
�
�
�w�
'�2��$�$�d�D�\�2�(�"(�D�D�F���
�
�b�l�l�(�(�/�:�%(�
'�s�B	�	Bc���tj�}	tjt|fd��|jd�|jt�|jD]}|j|t��tjd|dtj�}|jt|�t|j��y#t$r}|}Yd}~��d}~wwxYw)NT)�
all_errorszexpected connection to failr�r)rr�rr�r�r��ExceptionGroupr��
exceptionsrr�rAr�r�)rZrWr��eg�	addressess     r�!test_create_connection_all_errorsz;NetworkConnectionNoServer.test_create_connection_all_errors=s����-�-�/��	5��$�$�d�D�\�d�C�
�I�I�3�4����b�.�1����A��!�!�!�W�-���&�&���q�&�"4�"4�6�	�	
����Y���R�]�]�);�<���	��B��	�s�C�	C+�C&�&C+c�D�|j�5	tjtdf�|j	d�ddd�y#t
$rY�t$r8}tjs|jtjk7r�Yd}~�Od}~wwxYw#1swYyxYw)NrzTimeoutError not raised)r�rr�r�r�rrrr�r"�EAFNOSUPPORTr�s  r�test_create_connection_timeoutz8NetworkConnectionNoServer.test_create_connection_timeoutOs����
&�
&�
(�
5��(�(�$���6��	�	�3�4�)�
(�� �
���
� �-�-����e�>P�>P�1P��2Q��
��)�
(�s?�B�A�B�	B�B�B�.B�	B�B�B�BN)rarbrcrr��
contextlib�contextmanagerr�r�skip_if_tcp_blackholer�r�r�r�rdr>rr�r�sl��,�V�]�]�,����'��'��(�(�A�)�A��(�(�;�)�;�0=�$5r>r�c�f�eZdZdZdd�Zd�Zd�Zd�ZeZd�Z	eZ
d�ZeZd�Z
eZd	�ZeZd
�ZeZd�Zy)
�NetworkConnectionAttributesTestNc�\�tj||��tj|�yr�r�r�s  rr�z(NetworkConnectionAttributesTest.__init__ar�r>c�6�tj�|_yrI)rr��source_portrYs rr�z+NetworkConnectionAttributesTest.clientSetUpes��(�9�9�;��r>c��|j�|jj�d|_tj|�yrIr�rYs rr�z.NetworkConnectionAttributesTest.clientTearDownhs/���8�8���H�H�N�N������%�%�d�+r>c�^�|jj�\}}|j�yrI)rUr�r!r	s   r�_justAcceptz+NetworkConnectionAttributesTest._justAcceptns!���Y�Y�%�%�'�
��d��
�
�r>c��tjt|jftj
��|_|j|jj�|j|jjd�y)Nr�r)rr�r�rWrr�r�rur!r�r�rYs r�_testFamilyz+NetworkConnectionAttributesTest._testFamilyssT���+�+�T�4�9�9�,=�$+�$<�$<�>�����������'���������!�,r>c�J�tjt|jftj
d|jf��|_|j|jj�|j|jj�d|j�y)Nr�)rL�source_addressr
)rr�r�rWrr�r�r�rur!r�r�rYs r�_testSourceAddressz2NetworkConnectionAttributesTest._testSourceAddresszsu���+�+�T�4�9�9�,=�$+�$<�$<�,.��0@�0@�+A�C���	
��������'�������-�-�/��2�D�4D�4D�Er>c���|jtj�du�tjd�	tjt
|jf�|_|j|jj�tjd�|j|jj�d�y#tjd�wxYw)NrY�r�rrJrKr�r�rWr�rur!r�r|rYs r�_testTimeoutDefaultz3NetworkConnectionAttributesTest._testTimeoutDefault�s�������0�0�2�d�:�;�� � ��$�	+��/�/��t�y�y�0A�B�D�H��O�O�D�H�H�N�N�+��$�$�T�*�������,�,�.��3��
�$�$�T�*�s�AC�C"c���|jtj�du�tjd�	tjt
|jfd��|_|j|jj�tjd�|j|jj�d�y#tjd�wxYw�N�r�r�rYs r�_testTimeoutNonez0NetworkConnectionAttributesTest._testTimeoutNone�s�������0�0�2�d�:�;�� � ��$�	+��/�/��t�y�y�0A�4�P�D�H��O�O�D�H�H�N�N�+��$�$�T�*�������,�,�.��5��
�$�$�T�*�s�AC
�
C$c��tjt|jfd��|_|j|jj
�d�yr�)rr�r�rWr�r�r|rYs r�_testTimeoutValueNamedz6NetworkConnectionAttributesTest._testTimeoutValueNamed�s<���+�+�T�4�9�9�,=�r�J���������,�,�.��3r>c��tjt|jfd�|_|j|jj�|j|jj�d�y)Nr�)	rr�r�rWr�rur!r�r|rYs r�_testTimeoutValueNonamedz8NetworkConnectionAttributesTest._testTimeoutValueNonamed�sP���+�+�T�4�9�9�,=�r�B�����������'�������,�,�.��3r>r�)rarbrcr�r�r�r�r��
testFamilyr��testSourceAddressr��testTimeoutDefaultr��testTimeoutNoner��testTimeoutValueNamedr��testTimeoutValueNonamedr�rdr>rr�r�^sh��
�C�&�<�,���J�-�$��F�%��	4�"�O�	6�(��4�*��4r>r�c�6�eZdZdd�Zd�Zd�Zd�ZeZd�Zd�Z	y)	�NetworkConnectionBehaviourTestc�\�tj||��tj|�yr�r�r�s  rr�z'NetworkConnectionBehaviourTest.__init__�r�r>c��yrIrdrYs rr�z*NetworkConnectionBehaviourTest.clientSetUp�rr>c�p�|jj�d|_tj|�yrIr�rYs rr�z-NetworkConnectionBehaviourTest.clientTearDown�r�r>c��|jj�\}}|j|j�t	j
d�|j
d�y)Nr��done!)rUr�rur!r�r�r�r	s   r�testInsideTimeoutz0NetworkConnectionBehaviourTest.testInsideTimeout�s?���Y�Y�%�%�'�
��d�����
�
�#��
�
�1�
��	�	�(�r>c��tjt|jf�x|_}|jd�}|j
|d�y)Nr�r	)rr�r�rWr�r�r�)rZrCr
s   r�_testInsideTimeoutz1NetworkConnectionBehaviourTest._testInsideTimeout�s?�� �2�2�D�$�)�)�3D�E�E���4��y�y��|������x�(r>c���tjt|jfd��x|_�|jt�fd��y)Nr
r�c�&���jd�S)Nr�)r�)rCs�rrpzDNetworkConnectionBehaviourTest._testOutsideTimeout.<locals>.<lambda>�s
����	�	�!�r>)rr�r�rWr�r�rrRs @r�_testOutsideTimeoutz2NetworkConnectionBehaviourTest._testOutsideTimeout�s6��� �2�2�D�$�)�)�3D�a�P�P���4����,�(<�=r>Nr�)
rarbrcr�r�r�r	�testOutsideTimeoutr	r	rdr>rr	r	�s(��&�
�,�
�
+��)�
>r>r	c�X�eZdZd�Zd�Zejeed�d�d��Z	y)�TCPTimeoutTestc�>���fd�}�jt|d�y)Nc�p���jjd��jj�yr�)rUr�r��r/r0rZs  �r�
raise_timeoutz4TCPTimeoutTest.testTCPTimeout.<locals>.raise_timeout�s%����I�I� � ��%��I�I���r>z*Error generating a timeout exception (TCP)�r�r�rZr	s` r�testTCPTimeoutzTCPTimeoutTest.testTCPTimeout�s ���	�	
���,�
�J�	Lr>c��d}	|jjd�|jj�}|s|j	d�yy#t$r|j	d�Y�1t
$rd}Y�=|j	d�Y�QxYw)NFr"z%caught timeout instead of error (TCP)Tz!caught unexpected exception (TCP)z3accept() returned success when we did not expect it)rUr�r�rr�r�rZ�okr�s   r�testTimeoutZerozTCPTimeoutTest.testTimeoutZero�s��
��	;��I�I� � ��%��)�)�"�"�$�C���I�I�K�L���
�	?��I�I�=�>��	��B�	;��I�I�9�:�s�5A�B
�*
B
�6B
rztest needs signal.alarm()c
�:��|jjd�Gd�dt���fd�}tjtj|�}		tj
d�|jj
�}|jd�tj
d�	tjtj|�y#t$r|jd�Y�W�$rY�]t$r?}|jdt|��d	|�d
tj����Yd}~��d}~wwxYw#tj
d�wxYw#�$r|jd�Y��wxYw#tjtj|�wxYw)
Nr�c��eZdZy)�4TCPTimeoutTest.testInterruptedTimeout.<locals>.AlarmNrQrdr>r�Alarmr"	�s��r>r#	c�����rIrd)rrr#	s  �r�
alarm_handlerz<TCPTimeoutTest.testInterruptedTimeout.<locals>.alarm_handler�s����Kr>rznothing caughtzcaught timeout instead of Alarmz)caught other exception instead of Alarm: �(z):
rzgot Alarm in wrong place)
rUr�rdrrrr�r�rr�rs�	traceback�
format_exc)rZr%	rr�r�r#	s     @r�testInterruptedTimeoutz%TCPTimeoutTest.testInterruptedTimeout�s/���	
�	�	���S�!�	�I�	�	��M�M�&�.�.�-�@�	�	5�
 ����Q���i�i�&�&�(���	�	�*�+����Q��

�M�M�&�.�.�)�4��! �
=��	�	�;�<��
�� �
@��	�	���7�A�y�';�';�'=�?�@�@��
@�����Q����	2��I�I�0�1�	2��
�M�M�&�.�.�)�4�sx�/C�D>�E�,E4�D;�,D>�.D;�2D>�4D;�<5D6�1D>�6D;�;D>�>E�E�E1�.E4�0E1�1E4�4&FN)
rarbrcr	r	r�r�rrr)	rdr>rr	r	�s;��L�M��X������1�4�6�5�6�5r>r	c��eZdZd�Zd�Zy)�UDPTimeoutTestc�>���fd�}�jt|d�y)Nc�r���jjd��jjd�y�Nr�r��rUr�r�r	s  �rr	z4UDPTimeoutTest.testUDPTimeout.<locals>.raise_timeout�%����I�I� � ��%��I�I�N�N�4� r>z*Error generating a timeout exception (UDP)r	r	s` r�testUDPTimeoutzUDPTimeoutTest.testUDPTimeouts ���	!�	
���,�
�J�	Lr>c��d}	|jjd�|jjd�}|s|j	d�yy#t$r|j	d�Y�1t
$rd}Y�=|j	d�Y�QxYw)NFr"r�z%caught timeout instead of error (UDP)Tz!caught unexpected exception (UDP)�1recv() returned success when we did not expect it�rUr�r�rr�rr	s   rr	zUDPTimeoutTest.testTimeoutZeros��
��	;��I�I� � ��%��)�)�.�.��&�C���I�I�I�J���
�	?��I�I�=�>��	��B�	;��I�I�9�:���6A�B�+
B�7BN)rarbrcr1	r	rdr>rr+	r+	�s��L�Kr>r+	c��eZdZd�Zd�Zy)�UDPLITETimeoutTestc�>���fd�}�jt|d�y)Nc�r���jjd��jjd�yr.	r/	r	s  �rr	z<UDPLITETimeoutTest.testUDPLITETimeout.<locals>.raise_timeoutr0	r>z.Error generating a timeout exception (UDPLITE)r	r	s` r�testUDPLITETimeoutz%UDPLITETimeoutTest.testUDPLITETimeouts ���	!�	
���,�
�N�	Pr>c��d}	|jjd�|jjd�}|s|j	d�yy#t$r|j	d�Y�1t
$rd}Y�=|j	d�Y�QxYw)NFr"r�z)caught timeout instead of error (UDPLITE)Tz%caught unexpected exception (UDPLITE)r3	r4	r	s   rr	z"UDPLITETimeoutTest.testTimeoutZero!s���
��	?��I�I� � ��%��)�)�.�.��&�C���I�I�I�J���
�	C��I�I�A�B��	��B�	?��I�I�=�>�r5	N)rarbrcr:	r	rdr>rr7	r7	s��P�Kr>r7	c��eZdZd�Zd�Zy)�TestExceptionsc���|jttt��|jttj
t��|jttjt��|jttjt��|jtjt�|jtjt�yrI)r��
issubclassrrdrr�r�rL�assertIs�errorrrYs r�testExceptionTreez TestExceptions.testExceptionTree1s~�����
�7�I�6�7����
�6�=�=�'�:�;����
�6�?�?�G�<�=����
�6�>�>�7�;�<��
�
�f�l�l�G�,��
�
�f�n�n�l�3r>c��tjtjtjd�}tjtjtjd|j��}|j	�|j|j�|jt�5|jd�ddd�y#1swYyxYw)NrF)
rrTrAr�r!rurnr�rrh)rZ�sock0rCs   r�test_setblocking_invalidfdz)TestExceptions.test_setblocking_invalidfd9s����
�
�f�n�n�f�.@�.@�!�D���}�}��N�N�F�.�.��5�<�<�>�C��
���
�������$�
�
�
�w�
'����U�#�(�
'�
'�s�6C�CN)rarbrcrB	rE	rdr>rr=	r=	/s��4�
$r>r=	re�Linux specific testc�4�eZdZdZd�Zd�Zd�Zd�Zd�Zd�Z	y)	�TestLinuxAbstractNamespace�lc�t�d}tjtjtj�5}|j|�|j	�tjtjtj�5}|j|j
��|j�d5}|j|j
�|�|j|j�|�ddd�ddd�ddd�y#1swY�xYw#1swY�xYw#1swYyxYw)Nspython-test-hello�r)
rrHrArvrXr�r�r�r�r�)rZr��s1r��s3s     r�testLinuxAbstractNamespacez5TestLinuxAbstractNamespace.testLinuxAbstractNamespaceKs���2��
�]�]�6�>�>�6�+=�+=�
>�"��G�G�G���I�I�K����v�~�~�v�/A�/A�B�b��
�
�2�>�>�+�,��Y�Y�[��^�r��$�$�R�^�^�%5�w�?��$�$�R�^�^�%5�w�?�$�C�?�
>�
$�^��C�B��?�
>�s=�AD.�	3D"�<AD�=D"�D.�D�D"�"D+	�'D.�.D7c��dd|jdz
zz}tjtjtj�5}|j	|�|j|j
�|�ddd�y#1swYyxYw)Nr
�hr
)�
UNIX_PATH_MAXrrHrArvr�r��rZr�r$s   r�testMaxNamez&TestLinuxAbstractNamespace.testMaxNameVsc���D�D�$6�$6��$:�;�;��
�]�]�6�>�>�6�+=�+=�
>�!�
�F�F�7�O����Q�]�]�_�g�6�?�
>�
>�s�2B�Bc��dd|jzz}tjtjtj�5}|j	t
|j|�ddd�y#1swYyxYw)N��h)rP	rrHrAr�rrvrQ	s   r�testNameOverflowz+TestLinuxAbstractNamespace.testNameOverflow\sS���3��!3�!3�3�3��
�]�]�6�>�>�6�+=�+=�
>�!����g�q�v�v�w�7�?�
>�
>�s�"A0�0A9c��tjtjtj�}	|jd�|j	|j�d�|j
�y#|j
�wxYw)Nz
pythontest�
pythontest)rrHrArvr�r�r!r�s  r�testStrNamez&TestLinuxAbstractNamespace.testStrNameasX���M�M�&�.�.�&�*<�*<�=��	�
�F�F�+�,����Q�]�]�_�.G�H�
�G�G�I��A�G�G�I�s�1A6�6Bc��tjtjtj�5}|jt	d��|j|j
�d�ddd�y#1swYyxYw)NrX	)rrHrArvr�r�r�r�s  r�testBytearrayNamez,TestLinuxAbstractNamespace.testBytearrayNamejsQ��
�]�]�6�>�>�6�+=�+=�
>�!�
�F�F�9�6�7�8����Q�]�]�_�.G�H�?�
>�
>�s�;A7�7Bc�D�d}tjtjtj�5}|jd�|j	|j�|�tjtjtj�5}|jd�|j	|j�|�|j
|j�|j��ddd�ddd�y#1swY�xYw#1swYyxYw)Ns
^[0-9a-f]{5}r�)rrHrArv�assertRegexr�r�)rZ�abstract_addressrK	r�s    r�testAutobindz'TestLinuxAbstractNamespace.testAutobindps���-��
�]�]�6�>�>�6�+=�+=�
>�"��G�G�B�K����R�^�^�-�/?�@����v�~�~�v�/A�/A�B�b������� � ����!1�3C�D��#�#�B�N�N�$4�b�n�n�6F�G�C�	?�
>�C�B��	?�
>�s%�A$D�A D
�9D�
D	�D�DN)
rarbrcrP	rM	rR	rV	rY	r[	r_	rdr>rrH	rH	Fs*���M�	@�7�8�
�I�Hr>rH	ztest needs socket.AF_UNIXc��eZdZd�Zd�Zd�Zd�Zd�Zd�Zd�Z	d�Z
d	�Zejejd
k(d�d��Zy
)�TestUnixDomainc�r�tjtjtj�|_yrI)rrHrArCrYs rr[zTestUnixDomain.setUp�s���M�M�&�.�.�&�2D�2D�E��	r>c�8�|jj�yrI)rCr!rYs rr^zTestUnixDomain.tearDown�s���	�	���r>c��	tj|�S#t$r6|jdj	|tj���YywxYw)NzBPathname {0!a} cannot be represented in file system encoding {1!r})r��fsencoder�rxr�r@�getfilesystemencoding�rZrDs  r�encodedzTestUnixDomain.encoded�sN��	8��;�;�t�$�$��!�	8��M�M�(�(.���#�3�3�5�)7�
8�	8�s��<A�Ac��	tj||�y#t$r:}t|�dk(r!|j	dj|��n�Yd}~yd}~wwxYw)NzAF_UNIX path too longz6Pathname {0!a} is too long to serve as an AF_UNIX path)rrBrr�rxr�)rZrCrDr�s    rrvzTestUnixDomain.bind�sV��	��*�*�4��6���	��1�v�0�0��
�
�L��V�D�\�#��	#��	�s��	A�0A�Ac�X�|j|jj�d�y)N)r�N)r�rCr�rYs rr�zTestUnixDomain.testUnbound�s���
�
�d�i�i�+�+�-�z�:r>c�*�tjjtj�}|j|j|�|jtj|�|j|jj�|�yrI)r�rD�abspathr�TESTFNrvrCrurAr�r�rg	s  r�testStrAddrzTestUnixDomain.testStrAddr�s]���w�w���y�/�/�0���	�	�$�)�)�T�"����	�(�(�$�/�������.�.�0�$�7r>c�H�tjjtj�}|j|j|j|��|jtj|�|j|jj�|�yrI)r�rDrl	rrm	rvrCrh	rurAr�r�rg	s  r�
testBytesAddrzTestUnixDomain.testBytesAddr�sf���w�w���y�/�/�0���	�	�$�)�)�T�\�\�$�/�0����	�(�(�$�/�������.�.�0�$�7r>c�l�tjjtj�}|j|�}|j
|j|jdd��|jtj|�|j|jj�|�y)N�ascii�surrogateescape)
r�rDrl	r�TESTFN_UNICODErh	rvrCr�rurAr�r�)rZrDr�s   r�testSurrogateescapeBindz&TestUnixDomain.testSurrogateescapeBind�sy���w�w���y�7�7�8���L�L�����	�	�$�)�)�Q�X�X�g�/@�A�B����	�(�(�$�/�������.�.�0�$�7r>c�l�tj�|jd�tjjtj�}|j
|j|�|jtj|�|j|jj�|�y)Nz!No unencodable filename available)r�TESTFN_UNENCODABLErxr�rDrl	rvrCrurAr�r�rg	s  r�testUnencodableAddrz"TestUnixDomain.testUnencodableAddr�sx���'�'�/��M�M�=�>��w�w���y�;�;�<���	�	�$�)�)�T�"����	�(�(�$�/�������.�.�0�$�7r>rerF	c�Z�|jt|jjd�y)Nr�)r�rrCrvrYs r�testEmptyAddresszTestUnixDomain.testEmptyAddress�s��	
���'�4�9�9�>�>�2�6r>N)rarbrcr[r^rh	rvr�rn	rp	ru	rx	r�r�r@rnrz	rdr>rra	ra	~s\��F��	8�
�;�8�8�8�8��X�_�_�S�\�\�W�,�.C�D�7�E�7r>ra	c�n�eZdZdZdd�Zd�Zd�Zd�ZeZd�Z	eZ
d�Zd�Zd	�Z
eZd
�ZeZd�Zd�Zd
�ZeZy)�BufferIOTestzF
    Test the buffer versions of socket.recv() and socket.send().
    c�2�tj||��yr�r�r�s  rr�zBufferIOTest.__init__�r�r>c�6�tjddgtt�z�}|jj	|�}|j|tt��|j
�}|dtt�}|j|t�y�Nr�r)r�r�r�rr�r�r<�rZrtr2r�s    r�testRecvIntoArrayzBufferIOTest.testRecvIntoArray�sn���k�k�#��s�S��X�~�.�����(�(��-�������S��*��k�k�m���)�3�s�8�n������c�"r>c�X�tt�}|jj|�yrI�r-r�r
r��rZrts  r�_testRecvIntoArrayzBufferIOTest._testRecvIntoArray�����C�j�������C� r>c���td�}|jj|�}|j|t	t
��|dt	t
�}|j|t
�yr�)r�rr�r�r�r�r�	s    r�testRecvIntoBytearrayz"BufferIOTest.testRecvIntoBytearray�sR����o�����(�(��-�������S��*��)�3�s�8�n������c�"r>c���td�}|jjt|��}|j	|tt��|dtt�}|j	|t�yr�)r�rr�rCr�r�r�r�	s    r�testRecvIntoMemoryviewz#BufferIOTest.testRecvIntoMemoryview�sV����o�����(�(��C��9�������S��*��)�3�s�8�n������c�"r>c�<�tjddgtt�z�}|jj	|�\}}|j|tt��|j
�}|dtt�}|j|t�yr	)r�r�r�rr�r�r<�rZrtr2r
r�s     r�testRecvFromIntoArrayz"BufferIOTest.testRecvFromIntoArray�sr���k�k�#��s�S��X�~�.���}�}�2�2�3�7���������S��*��k�k�m���)�3�s�8�n������c�"r>c�X�tt�}|jj|�yrIr�	r�	s  r�_testRecvFromIntoArrayz#BufferIOTest._testRecvFromIntoArray�r�	r>c���td�}|jj|�\}}|j|t	t
��|dt	t
�}|j|t
�yr�)r�rr�r�r�r�r�	s     r�testRecvFromIntoBytearrayz&BufferIOTest.testRecvFromIntoBytearray�sV����o���}�}�2�2�3�7���������S��*��)�3�s�8�n������c�"r>c��td�}|jjt|��\}}|j	|tt��|dtt�}|j	|t�yr�)r�rr�rCr�r�r�r�	s     r�testRecvFromIntoMemoryviewz'BufferIOTest.testRecvFromIntoMemoryviewsZ����o���}�}�2�2�:�c�?�C���������S��*��)�3�s�8�n������c�"r>c�r�td�}|jt|jj|d�y)Nrqr�)r�r�r}rr�r�	s  r�testRecvFromIntoSmallBufferz(BufferIOTest.testRecvFromIntoSmallBuffers)����l�����*�d�m�m�&A�&A�3��Mr>c�B�|jjt�yrIr�rYs r�_testRecvFromIntoSmallBufferz)BufferIOTest._testRecvFromIntoSmallBufferr�r>c��t�}|jj|�|jj|d�yr�)r�rr�r�	s  r�testRecvFromIntoEmptyBufferz(BufferIOTest.testRecvFromIntoEmptyBuffers/���k���
�
�#�#�C�(��
�
�#�#�C��+r>Nr�)rarbrcryr�r�	r�	r�	�_testRecvIntoBytearrayr�	�_testRecvIntoMemoryviewr�	r�	r�	�_testRecvFromIntoBytearrayr�	�_testRecvFromIntoMemoryviewr�	r�	r�	�_testRecvFromIntoEmptyBufferrdr>rr|	r|	�sm���B�#�!�#�0��#�1��#�!�#�"8��#�#9��N�
!�,�
$:� r>r|	i�����c���ttd�sy	tdd��}|5|D]}|j
d�s�ddd�y	ddd�y#ttt
f$rYywxYw#1swYyxYw)	z�Check if the TIPC module is loaded

    The TIPC module is not loaded automatically on Ubuntu and probably
    other Linux distros.
    �AF_TIPCFz
/proc/modulesr	r3ztipc NT)rrr�FileNotFoundError�IsADirectoryErrorr�ro)rr~s  r�isTipcAvailabler�	 sx���6�9�%�����7�3��

��D����w�'��
���
���
�0�/�B�����
��s'�
A�A)�A)�A)�A&�%A&�)A2z6TIPC module is not loaded, please 'sudo modprobe tipc'c��eZdZd�Zy)�TIPCTestc�$�tjtjtj�}tjtjtj�}|j|j�|j|j�|jtjtjd�tjtttf}|j|�tjtttttz
dz�zdf}|jt |�|j#d�\}}|j%|j'�|�|j%|t �y)Nr
rrr�)rr�	r�rur!r�r�r��TIPC_ADDR_NAMESEQ�
TIPC_STYPE�
TIPC_LOWER�
TIPC_UPPERrv�TIPC_ADDR_NAMEr(r�r�r�r�r�)rZrEr��srvaddr�sendaddrr��recvaddrs       r�testRDMzTIPCTest.testRDM7s���m�m�F�N�N�F�O�O�<���m�m�F�N�N�F�O�O�<������	�	�"�����	�	�"����v�(�(�&�*=�*=�q�A��+�+�Z��J�(��������)�)�:��S�*�z�"9�Q�!>�?�?��D���
�
�3��!����T�*�
��X�������*�H�5�����c�"r>N)rarbrcr�	rdr>rr�	r�	4s��#r>r�	c�,�eZdZdd�Zd�Zd�Zd�Zd�Zy)�TIPCThreadableTestc�p�tjj||��tj|�yr�r�r�s  rr�zTIPCThreadableTest.__init__Os)�����"�"�4�j�"�A�����%r>c��tjtjtj�|_|j	|jj
�|jj
tjtjd�tjtttf}|jj|�|jj�|j�|jj!�\|_|_|j	|j"j
�yrN)rr�	rArErur!r�r�r�r�	r�	r�	r�	rvrXr�r�r�r�)rZr�	s  rr[zTIPCThreadableTest.setUpSs����=�=�����1C�1C�D�����������'������F�-�-�v�/B�/B�A�F��+�+�Z��J�(�����
�
�g��������� � �"�#'�8�8�?�?�#4� ��	�4�=�����	�	���(r>c���tjd�tjtjtj�|_|j
|j
j�tjtttttz
dz�zdf}|j
j|�|j
j�|_y)Nr�rr)r�r�rr�	rAr�rur!r�	r�	r�	r(r�	r�r��cliaddr)rZr
s  rr�zTIPCThreadableTest.clientSetUp_s���	
�
�
�3���=�=�����1C�1C�D�����������'��%�%�z��S�*�z�"9�Q�!>�?�?��D����������x�x�+�+�-��r>c��|jjd�}|j|t�|j|j|j
�yr�)r�r�r�r�r�	r�r�s  rr�zTIPCThreadableTest.testStreamks<���i�i�n�n�T�"������c�"�������t�}�}�5r>c�v�|jjt�|jj�yrIr�rYs rrzTIPCThreadableTest._testStreamprr>Nr�rrdr>rr�	r�	Ls��&�
)�
.�6�
r>r�	c�*�eZdZd�Zd�Zd�Zd�Zd�Zy)�ContextManagersTestc�4�tj�5}|j|j�ddd�|jj�tj�5}|j	�ddd�|j|j�tj�5}|jt|jd�ddd�|j|j�y#1swY��xYw#1swY��xYw#1swY�=xYw�Nr�)rr�r!r�r!r�rrrRs  r�_testSocketClassz$ContextManagersTest._testSocketClassws���
�]�]�_�����T�\�\�*��������%�
�]�]�_���J�J�L��������%�
�]�]�_�����g�t�|�|�V�<��������%��_���_���_�s#�C6�(D�0"D�6C?�D�Dc��|jj�\}}|j|j�|j	d�}|j|�yr��rUr�rur!r�r�rZr�r
r
s    r�testCreateConnectionBasez,ContextManagersTest.testCreateConnectionBase��A���Y�Y�%�%�'�
��d�����
�
�#��y�y�������T�r>c�\�|jj�}tj|�5}|j	|j
�|j
d�|j|jd�d�ddd�|jj
�y#1swY�%xYw)Nr�r�)
rUr�rr�r�r!rr�r�r��rZr�rCs   r�_testCreateConnectionBasez-ContextManagersTest._testCreateConnectionBase�sz���)�)�'�'�)��
�
%�
%�g�
.�$����T�\�\�*��L�L�� ����T�Y�Y�t�_�f�5�/�	
������%�	/�
.�s�AB"�"B+c��|jj�\}}|j|j�|j	d�}|j|�yr�r�	r�	s    r�testCreateConnectionClosez-ContextManagersTest.testCreateConnectionClose�r�	r>c�$�|jj�}tj|�5}|j	�ddd�|jj�|jt|jd�y#1swY�FxYwr�	)
rUr�rr�r!r�r!r�rrr�	s   r�_testCreateConnectionClosez.ContextManagersTest._testCreateConnectionClose�sa���)�)�'�'�)��
�
%�
%�g�
.�$��J�J�L�/�������%����'�4�<�<��8�/�
.�s�B�BN)rarbrcr�	r�	r�	r�	r�	rdr>rr�	r�	us��&��&��9r>r�	c��eZdZejeed�d�ejddd�d���Z	d�Z
d�Zd	�Zejed
ud�d��Zejed
ud�d
��Zd�Zy
)�InheritanceTestr�zSOCK_CLOEXEC not definedrr1r2c�F�tjtjtjtjz�5}|j	|j
tj�|j
|j��ddd�y#1swYyxYwrI)rrTrAr�r�rsr��get_inheritabler�s  r�test_SOCK_CLOEXECz!InheritanceTest.test_SOCK_CLOEXEC�sr���]�]�6�>�>�!�-�-��0C�0C�C�E�HI����Q�V�V�V�%7�%7�8����Q�.�.�0�1�E�E�E�s
�A
B�B c��tj�}|5|j|j�d�ddd�y#1swYyxYwr)rr�r�	rRs  r�test_default_inheritablez(InheritanceTest.test_default_inheritable�s3���}�}���
����T�1�1�3�U�;��T�T�s�!A�A
c��tj�}|5|j�}|j�|5|j|j	�d�ddd�ddd�y#1swY�xYw#1swYyxYwr)rrr!r�r�	)rZrC�newsocks   r�test_dupzInheritanceTest.test_dup�s\���}�}���
��h�h�j�G��J�J�L��� � ��!8�!8�!:�E�B���T�����T�s"�#A8�!A,�A8�,A5	�1A8�8Bc��tj�}|5|jd�|j|j�d�|jd�|j|j�d�ddd�y#1swYyxYw)NTF)r�set_inheritabler�r�	rRs  r�test_set_inheritablez$InheritanceTest.test_set_inheritable�sh���}�}���
�� � ��&����T�1�1�3�T�:�� � ��'����T�1�1�3�U�;��T�T�s�A#B�BNr�c��tj�}|5|j�}|j|j�d�t	j|tj
�}|tjz}t	j|tj|�|j|j�d�ddd�y#1swYyxYw)NFT)rr�r�r�	r�F_GETFD�
FD_CLOEXEC�F_SETFD)rZrCrtr�s    r�test_get_inheritable_cloexecz,InheritanceTest.test_get_inheritable_cloexec�s����}�}���
�����B����T�1�1�3�U�;��K�K��E�M�M�2�E��e�&�&�&�&�E��K�K��E�M�M�5�1����T�1�1�3�T�:��T�T�s�B.C�Cc���tj�}|5|j�}|jtj|tj�tj
ztj
�|j
d�|jtj|tj�tj
zd�ddd�y#1swYyxYw)NTr)rr�r�rr�	r�	r�	)rZrCrts   r�test_set_inheritable_cloexecz,InheritanceTest.test_set_inheritable_cloexec�s����}�}���
�����B����U�[�[��U�]�]�;�e�>N�>N�N�"�-�-�
/�
� � ��&����U�[�[��U�]�]�;�e�>N�>N�N��
 �
�T�T�s�B:C�C#c��tj�\}}|j|j�|j|j�|j	|j�d�|j	|j�d�yr)rrrur!r�r�	)rZrK	r�s   r�test_socketpairzInheritanceTest.test_socketpair�sf���"�"�$���B�������!�������!�����+�+�-�u�5�����+�+�-�u�5r>)rarbrcr�r�rrrrMr�	r�	r�	r�	r�rr�	r�	r�	rdr>rr�	r�	�s����X������8�3�5�#�W�#�#�A�q�"�-�2�.�5�2�<�
C�<��X�_�_�U�d�]�L�1�;�2�;��X�_�_�U�d�]�L�1�	 �2�	 �6r>r�	rgzSOCK_NONBLOCK not definedc�H�eZdZdd�Zej
ddd�d��Zy)�NonblockConstantTestc�D�|r�|j|jtj�|j|j	�|�|jt
j|tjtj�tjz�|dk(r |j|j��y|j|j��y|j|jtj�|j|j	�d�|jt
j|tjtj�tjz�|j|j��yr�)r�rsrrAr|r�rr$r�r%r�r#)rZr$�nonblockrLs    r�
checkNonblockz"NonblockConstantTest.checkNonblock�s������Q�V�V�V�%7�%7�8����Q�\�\�^�W�5��O�O����A�u�}�}�b�m�m�<�r�}�}�L�
N��!�|�� � �����1�����
�
��0����Q�V�V�V�%7�%7�8����Q�\�\�^�T�2�������A�u�}�}�b�m�m�<�r�}�}�L�
N��O�O�A�M�M�O�,r>rr1r2c��tjtjtjtjz�5}|j	|�|jd�|j	|d��|jd�|j	|�|j
d�|j	|d��|j
d�|j	|d��|jd�|j	|d��ddd�tj�}tjd�tj�5}|j	|�ddd�tjd�tj�5}|j	|d�ddd�tjd�tj�5}|j	|d��ddd�tjd�tj�5}|j	|d�ddd�tj|�y#1swY��DxYw#1swY��xYw#1swY��xYw#1swY��xYw#1swY�PxYw)NTF)r�	g@r�r")	rrTrArgr�	rhr�rJrK)rZr$�ts   r�test_SOCK_NONBLOCKz'NonblockConstantTest.test_SOCK_NONBLOCKs����]�]�6�>�>�!�-�-��0D�0D�D�F�IJ����q�!�
�M�M�$�����q�5��1�
�M�M�%� ����q�!�
�L�L������q�5��1�
�L�L������q�#��.�
�M�M�$�����q�5��1�F�
�$�$�&��� � ��%�
�]�]�_�����q�!��� � ��&�
�]�]�_�����q�%�(��� � ��%�
�]�]�_�����q�#��.��� � ��&�
�]�]�_�����q�%�(��� � ��#�7F�F�� �_���_���_���_�s=�CI
�
I�I#�I/�I;�
I�I �#I,�/I8�;JN)Tr")rarbrcr�	rrMr�	rdr>rr�	r�	�s,��-�2$�W�#�#�A�q�"�-�$�.�$r>r�	r�r�zneed multiprocessingc�:�eZdZed��Zd�Zd�Zd�Zd�Zd�Z	y)�TestSocketSharingc��|j�}|j�}tj|�}|j�\}}|j	|�|j�|j�yrI)r�r�	fromsharer�rr!)r�q�sdata�messager$r�rs       r�remoteProcessServerz%TestSocketSharing.remoteProcessServer'sY��������%�%�'�����U�#�����
���A�	�
�
�7��
���
�	���	r>c��tj�}tj|j|f��}|j	�|j
j
|j�}|j
j�}|j
j�|j|�d}|j|�tj|�}g}	|jd�}|sn|j|��&|j�dj|�}|j!||�|j�y)N�r�r/s
slapmahfror�r>)�multiprocessingr��Processr�	r�rU�share�pidr�r!r�rr�r�rar�r�)	rZr�	r�r
r
r�	r$�m�receiveds	         r�	testSharezTestSocketSharing.testShare5s���

�!�!�#���#�#�4�+C�+C�1�$�O��	���	��y�y���q�u�u�%���y�y�$�$�&���	�	����	���d�� ��	���g��
�$�$�T�*������6�6�#�;�D���
�H�H�T�N�	�
	
���	��8�8�A�;������7�+�	���r>c��|jjtj��}|j	t
tj|dd�|j	t
tj|dz�y)Nr2r�)rUr�	r��getpidr�r}rr�	)rZr
s  r�testShareLengthz!TestSocketSharing.testShareLengthXsT���y�y���r�y�y�{�+�����*�f�&6�&6��S�b�	�B����*�f�&6�&6��V��Dr>c��|j|j�d�|j|j�|j��|j|j|j�|j|j|j�|jdk7r'|j|j|j�yyr�)r�r|r�rsr�)rZ�org�others   r�compareSocketsz TestSocketSharing.compareSockets]s���	
������)�4�0�������)�5�+;�+;�+=�>�������U�\�\�2�������5�:�:�.��9�9��>����S�Y�Y����4�r>c��|jjtj��}t	j
|�}	|j
|j|�|j�y#|j�wxYwrI)rUr�	r�r�	rr�	r
r!)rZr
r$s   r�testShareLocalz TestSocketSharing.testShareLocalmsV���y�y���r�y�y�{�+�����T�"��	�����	�	�1�-�
�G�G�I��A�G�G�I�s�A1�1Bc��tjtjg}tjtjg}|D]�}|D]�}	tj||�}	|j
tj��}tj|�}	|j||�|j�	|j�����y#t
$rY��wxYw#|j�wxYw#|j�wxYwrI)rrTrgrAr(rr�	r�r�	r�	r
r!)rZ�families�typesrr�	r�r
�shareds        r�	testTypeszTestSocketSharing.testTypesus����N�N�F�O�O�4���#�#�V�%6�%6�7���A����#�]�]�1�a�0�F�#�!�<�<��	�	��4�D�#�-�-�d�3�F�'��+�+�F�F�;������L�L�N���������������L�L�N�s6�C�#8C8�C#�.C8�	C �C �#C5�5C8�8D
N)
rarbrcr:r�	r�	r�	r
r
r
rdr>rr�	r�	"s1��
����!�FE�
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%y )!�SendfileUsingSendTestz>
    Test the send() implementation of socket.sendfile().
    i�r�r>c�n�d�}djt|j�D�cgc]3}tjt
j�j���5c}�}ttjd�5}||j|j�D]}|j|��	ddd�ttjd�5}|j�|_t|j�|jk(sJ�	ddd�ycc}w#1swY�lxYw#1swYyxYw)Nc3�PK�||k\sJ�||kDr|��||z}||kDr�|r|��yy�wrIrd)�total�steps  r�chunksz0SendfileUsingSendTest.setUpClass.<locals>.chunks�s?�����D�=� �=��$�,��
���
���$�,�����s�&�&r>r0r)r�r<�BUFSIZE�random�choice�string�
ascii_lettersr`rrrm	�FILESIZEr_r	�FILEDATAr�)rr
rP�chunkr�csizes      r�
setUpClassz SendfileUsingSendTest.setUpClass�s���	����#(����#5�7�#5�a�!�-�-��(<�(<�=�D�D�F�#5�7�8��
�)�"�"�D�
)�Q�����c�k�k�:�������;�*��)�"�"�D�
)�Q��6�6�8�C�L��s�|�|�$����4�4�4�*�
)��7�
)�
)��*�
)�s�8D�?4D�:D+�D(�+D4c�J�tjtj�yrI)rrArm	)rs r�
tearDownClassz#SendfileUsingSendTest.tearDownClass�s������)�)�*r>c��|jjtj�|jj	�\}}|j|j
�|j
|j�|SrI)rUr�rrDr��TIMEOUTrur!r	s   r�accept_connz!SendfileUsingSendTest.accept_conn�sU���	�	���W�1�1�2��Y�Y�%�%�'�
��d�������%�����
�
�#��r>c��g}	|j|j�}|sn|j|��0dj|�Sr�)r�r
rar�)rZr�r�	r
s    r�	recv_datazSendfileUsingSendTest.recv_data�sD������I�I�d�l�l�+�E����O�O�E�"�	�
�x�x��!�!r>c��t|d�S)N�_sendfile_use_send�r�rRs  r�meth_from_sockz$SendfileUsingSendTest.meth_from_sock�s���t�1�2�2r>c��|jj�}ttjd�}tj|�5}|5}|j|�}||�}|j||j�|j|j�|j�ddd�ddd�y#1swY�xYw#1swYyxYw)Nr�rUr�rrrm	rr�r#
r�r
�tell�rZr��filerC�meth�sents      r�_testRegularFilez&SendfileUsingSendTest._testRegularFile�s����)�)�'�'�)���I�$�$�d�+��
�
%�
%�g�
.�$����&�&�t�,�D���:�D����T�4�=�=�1����T�Y�Y�[�$�-�-�8�	9=�
.�
.����
.�
.�s%�
C
�
A B>�-C
�>C	�C
�
Cc���|j�}|j|�}|jt|�|j�|j||j
�yrI�r
r
r�r�r
r
�rZr�r
s   r�testRegularFilez%SendfileUsingSendTest.testRegularFile��J�����!���~�~�d�#������T��D�M�M�2�����t�}�}�-r>c��|jj�}tj|j�}tj|�5}|5}|j|�}|j||j�|j|j�|j�|jt
j|j|�ddd�ddd�y#1swY�xYw#1swYyxYwrI)rUr��io�BytesIOr
rr�rxr�r
r&
r�r�r�)rZr�r(
rCr*
s     r�_testNonRegularFilez)SendfileUsingSendTest._testNonRegularFile�s����)�)�'�'�)���z�z�$�-�-�(��
�
%�
%�g�
.�$����=�=��&�D����T�4�=�=�1����T�Y�Y�[�$�-�-�8����f�6�6�"�9�9�4�
A�	9=�
.�
.����
.�
.�s%�C2�BC&�C2�&C/	�+C2�2C;c���|j�}|j|�}|jt|�|j�|j||j
�yrIr-
r.
s   r�testNonRegularFilez(SendfileUsingSendTest.testNonRegularFile�r0
r>c��|jj�}tjdz}t	|d�5|jtj|�ddd�t	|d�}tj|�5}|5}|j|�}||�}|j|d�|j|j�d�ddd�ddd�y#1swY��xYw#1swY�xYw#1swYyxYw)N�2r0rr)rUr�rrm	rrurArr�r#
r�r&
)rZr��filenamer(
rCr)
r*
s       r�_testEmptyFileSendz(SendfileUsingSendTest._testEmptyFileSend�s����)�)�'�'�)���#�#�c�)��
�(�D�
!��O�O�I�,�,�h�7�"��H�d�#��
�
%�
%�g�
.�$����&�&�t�,�D���:�D����T�1�%����T�Y�Y�[�!�,�	9=�
.�
.�"�
!��9=���
.�
.�s0�!C$�C<�AC0�C<�$C-�0C9	�5C<�<Dc�j�|j�}|j|�}|j|d�yr�)r
r
r�r.
s   r�testEmptyFileSendz'SendfileUsingSendTest.testEmptyFileSend�s.�����!���~�~�d�#������s�#r>c��|jj�}ttjd�}tj|�5}|5}|j|�}||d��}|j||jdz
�|j|j�|j�ddd�ddd�y#1swY�xYw#1swYyxYw)Nr�)�offsetr%
r'
s      r�_testOffsetz!SendfileUsingSendTest._testOffset�s����)�)�'�'�)���I�$�$�d�+��
�
%�
%�g�
.�$����&�&�t�,�D���T�*�D����T�4�=�=�4�#7�8����T�Y�Y�[�$�-�-�8�	9=�
.�
.����
.�
.�s%�
C�
A%C�2C�C	�C�Cc���|j�}|j|�}|jt|�|jdz
�|j||j
dd�y)Nr>
r-
r.
s   r�
testOffsetz SendfileUsingSendTest.testOffsetsV�����!���~�~�d�#������T��D�M�M�D�$8�9�����t�}�}�T�U�3�4r>c��|jj�}ttjd�}tj|tj��}|5|5d}|j|�}|||��}|j||�|j|j�|�ddd�ddd�y#1swY�xYw#1swYyxYw)Nrr��GKL�r��rUr�rrrm	rr�rr�r#
r�r&
�rZr�r(
rCr�r)
r*
s       r�
_testCountz SendfileUsingSendTest._testCounts����)�)�'�'�)���I�$�$�d�+���'�'��07�0H�0H�J��
�4��E��&�&�t�,�D���E�*�D����T�5�)����T�Y�Y�[�%�0��T�T�4�4��T�T��%�C�AC�/C�C		�C�Cc��d}|j�}|j|�}|jt|�|�|j||jd|�y)NrD
�r
r
r�r�r
�rZr�r�r
s    r�	testCountzSendfileUsingSendTest.testCountsR�������!���~�~�d�#������T��E�*�����t�}�}�V�e�4�5r>c��|jj�}ttjd�}tj|tj��}|5|5d}|j|�}|||��}|j||�|j|j�|�ddd�ddd�y#1swY�xYw#1swYyxYw)Nrr�r
rE
rF
rG
s       r�_testCountSmallz%SendfileUsingSendTest._testCountSmalls����)�)�'�'�)���I�$�$�d�+���'�'��07�0H�0H�J��
�4��E��&�&�t�,�D���E�*�D����T�5�)����T�Y�Y�[�%�0��T�T�4�4��T�T�rI
c��d}|j�}|j|�}|jt|�|�|j||jd|�yrNrK
rL
s    r�testCountSmallz$SendfileUsingSendTest.testCountSmall)sR�������!���~�~�d�#������T��E�*�����t�}�}�V�e�4�5r>c��|jj�}ttjd�}tj|d��5}|5}d}|j|�}||d|��}|j||�|j|j�|dz�ddd�ddd�y#1swY�xYw#1swYyxYw)Nrrr�駆��)r?
r�)
rUr�rrrm	rr�r#
r�r&
rG
s       r�_testCountWithOffsetz*SendfileUsingSendTest._testCountWithOffset2s����)�)�'�'�)���I�$�$�d�+��
�
%�
%�g�q�
9�T�4�4��E��&�&�t�,�D���T��7�D����T�5�)����T�Y�Y�[�%�$�,�7�DH�
9�
9�4�4��
9�
9�s%�C�AB4�#C�4B=	�9C�C	c���d}|j�}|j|�}|jt|�|�|j||jd|dz�y)NrS
rT
rK
rL
s    r�testCountWithOffsetz)SendfileUsingSendTest.testCountWithOffset<sV�������!���~�~�d�#������T��E�*�����t�}�}�T�%��*�=�>r>c��|jj�}ttjd�}tj|�5}|5}|jd�|j|�}|jt||�|jt|j|�ddd�ddd�y#1swY�xYw#1swYyxYw)NrF)rUr�rrrm	rr�rhr#
r�r}rx�rZr�r(
rCr)
s     r�_testNonBlockingz&SendfileUsingSendTest._testNonBlockingEs����)�)�'�'�)���I�$�$�d�+��
�
%�
%�g�
.�$������U�#��&�&�t�,�D����j�$��5����j�$�-�-��>�	9=�
.�
.����
.�
.�s%�
C�
AB9�(C�9C	�>C�Cc�j�|j�}|jd�r|jd�yy)Nr�z$was not supposed to receive any data)r
r�r��rZr�s  r�testNonBlockingz%SendfileUsingSendTest.testNonBlockingNs-�����!���9�9�T�?��I�I�<�=�r>c�|�|jj�}ttjd�}tj|tj��}|5|5|j|�}||�}|j||j�ddd�ddd�y#1swY�xYw#1swYyxYw)Nrr�)rUr�rrrm	rr�rr�r#
r�r
r'
s      r�_testWithTimeoutz&SendfileUsingSendTest._testWithTimeoutUs����)�)�'�'�)���I�$�$�d�+���'�'��07�0H�0H�J��
�4��&�&�t�,�D���:�D����T�4�=�=�1��T�T�4�4��T�T�s$�B2�6B&�B2�&B/	�+B2�2B;c���|j�}|j|�}|jt|�|j�|j||j
�yrIr-
r.
s   r�testWithTimeoutz%SendfileUsingSendTest.testWithTimeout_r0
r>c�\�|jj�}ttjd�5}tj|�5}|jd�|j|�}|jt||�ddd�ddd�y#1swY�xYw#1swYyxYw)Nrg{�G�z�?)rUr�rrrm	rr�r�r#
r�rrY
s     r�_testWithTimeoutTriggeredSendz3SendfileUsingSendTest._testWithTimeoutTriggeredSendgs����)�)�'�'�)��
�)�"�"�D�
)�T��)�)�'�2�d�����%��*�*�4�0���!�!�,��d�;�3�*�
)�2�2��*�
)�s#�B"�:B�B"�B	�B"�"B+c�p�|j�}|jd�tjd�y)Ni�Xr
)r
r�r�r�r\
s  r�testWithTimeoutTriggeredSendz2SendfileUsingSendTest.testWithTimeoutTriggeredSendos'�����!���	�	�%���
�
�1�
r>c��yrIrdrYs r�_test_errorsz"SendfileUsingSendTest._test_errorswrr>c	���ttjd�5}tjtj��5}|j|�}|j
td||�ddd�ddd�ttjd��5}tj�5}|j|�}|j
td||�ddd�ddd�ttjd�5}tj�5}|j|�}|j
td||d�	�|j
td||d
�	�|j
td||d�	�|j
td||d�	�ddd�ddd�y#1swY��6xYw#1swY��;xYw#1swY��xYw#1swY��xYw#1swY�DxYw#1swYyxYw)
Nrr�rAr	r3zbinary modezpositive integerr8
rE
r�rr2)	rrrm	rr(r#
r�r}r�)rZr(
r$r)
s    r�test_errorsz!SendfileUsingSendTest.test_errorszs���
�)�"�"�D�
)�T����F�$5�$5�6�!��*�*�1�-���&�&��
�t�T�;�7�*�
�)�"�"�W�
5������A��*�*�1�-���&�&��
�t�T�;�!�6�
�)�"�"�D�
)�T�����A��*�*�1�-���&�&�y�2D�'+�T��'�>��&�&�y�2D�'+�T��'�>��&�&�z�3E�'+�T��'�<��&�&�z�3E�'+�T��'�=�!�*�
)�7�6��*�
)��!���6�
5��!���*�
)�sl�%F+�*F�*F+�G�**F8�G�>G�A:G�
G�F(	�#F+�+F5�8G	�=G�G
�G	�G�G%N)&rarbrcryr
r
r
rr�r
r:r
r
r
r
r#
r+
r/
r4
r6
r:
r<
r@
rB
rH
rM
rO
rQ
rU
rW
rZ
r]
r_
ra
rc
re
rg
ri
rdr>rr	
r	
�s����!�H��G��H��&�&�G��5��5�$�+��+��"�3�9�.�A�.�
-�$�9�5�
1�6�
1�6�8�?�?�>�2�.�<��
�=r>r	
rxz%os.sendfile() required for this test.c��eZdZdZd�Zy)�SendfileUsingSendfileTestzB
    Test the sendfile() implementation of socket.sendfile().
    c��t|d�S)Nr�r"
rRs  rr#
z(SendfileUsingSendfileTest.meth_from_sock�s���t�5�6�6r>N)rarbrcryr#
rdr>rrk
rk
�s���7r>rk
zAF_ALG requiredc���eZdZd�Zej
dd�d��Zd�Zej
dd�d��Zej
dd�d	��Z	ej
dd�d
��Z
d�Zd�Zy
)�LinuxKernelCryptoAPIc��tjtjtjd�}	|j||f�|S#t$r5}|j�t
jt|�||��d}~wwxYwr�)	rr6r1rvr�	r!r��SkipTestr�)rZ�typr�rCr�s     r�
create_algzLinuxKernelCryptoAPI.create_alg�sn���}�}�V�]�]�F�,A�,A�1�E��	��I�I�s�D�k�"��K��!�	7��J�J�L��#�#�C��F�C��6�6��	7�s�A
�
	B�0B�Br�r�c��tjd�}|jdd�5}|j�\}}|5|j	d�|j|j
d�|�ddd�|j�\}}|5|jdtj�|jdtj�|jdtj�|jd	�|j|j
d�|�ddd�ddd�y#1swY��xYw#1swY�xYw#1swYyxYw)
N�@ba7816bf8f01cfea414140de5dae2223b00361a396177a9cb410ff61f20015ad�hash�sha256sabcr�a�b�cr>)
r-�fromhexrr
r�rr�r�r�r�MSG_MORE)rZr��algo�opr�s     r�test_sha256z LinuxKernelCryptoAPI.test_sha256�s����=�=�":�;��
�_�_�V�X�
.�$��K�K�M�E�B����
�
�6�"�� � ������x�8���K�K�M�E�B�������f�o�o�.�����f�o�o�.�����f�o�o�.������� � ������x�8��/�
.����
���/�
.�s;�E
�3D2�1E
�BD>�!E
�2D;	�7E
�>E	�E
�
Ec��d}d}tjd�}|jdd�5}|jtj
tj|�|j�\}}|5|j|�|j|jd�|�ddd�ddd�y#1swY�xYw#1swYyxYw)NsPython loves AF_ALGswhat do ya want for nothing?�(193dbb43c6297b47ea6277ec0ce67119a3f3aa66ru
z
hmac(sha1)r)r-rz
rr
r�r�SOL_ALG�ALG_SET_KEYr�rr�r�)rZ�keyr
r�r|
r}
r�s       r�test_hmac_sha1z#LinuxKernelCryptoAPI.test_hmac_sha1�s���%��.���=�=�!K�L��
�_�_�V�\�
2�d��O�O�F�N�N�F�,>�,>��D��K�K�M�E�B����
�
�4� �� � ������x�8��3�
2����3�
2�s$�AC�13B5�$C�5B>	�:C�C
r�c��tjd�}tjd�}d}tjd�}t|�}|jdd�5}|j	t
jt
j|�|j�\}}|5|jt
j|t
j��|j|�|j|j|�|�ddd�|j�\}}|5|j|gt
j|��|j|j|�|�ddd�d	}	|g|	z}
|j�\}}|5|j|
t
j|��|j||	z�}ddd�|jt�||	z�|j|d||�|j�\}}|5|j|gt
j|��|j||	z�}ddd�|jt�||	z�|j|||	z�ddd�y#1swY���xYw#1swY��7xYw#1swY��xYw#1swY�kxYw#1swYyxYw)
N� 06a9214036b8a15b512e03d534120006� 3dafba429d9eb430b422da802c9fac41sSingle block msg� e353779c1079aeb82708942dbe77181a�skcipherzcbc(aes))r}
�ivr�)r}
r�
r�)r-rz
r�rr
r�rr�
r�
r��
sendmsg_afalg�ALG_OP_ENCRYPTr{
rr�r��ALG_OP_DECRYPT)
rZr�
r�
r��
ciphertext�msglenr|
r}
r��
multiplier�longmsg�enc�decs
             r�test_aes_cbcz!LinuxKernelCryptoAPI.test_aes_cbc�sW���m�m�>�?��
�]�]�=�
>��!���]�]�#E�F�
��S���
�_�_�Z��
4���O�O�F�N�N�F�,>�,>��D��K�K�M�E�B���� � �F�$9�$9�b�'-���!�8��
�
�3��� � ������*�=�	��K�K�M�E�B���� � �*��$*�$9�$9�b�!�B�� � ������#�6���J��e�j�(�G��K�K�M�E�B���� � ��$*�$9�$9�b�!�B��g�g�f�z�1�2���
���S��X�v�
�':�;����S��&�\�:�6��K�K�M�E�B���� � �#��$*�$9�$9�b�!�B��g�g�f�z�1�2���
���S��X�v�
�':�;����S�#�
�"2�3�A5�
4�������������75�
4�sp�AK�$A#J�K�$AJ�)%K�7J+�AK�8J7�
;K�J	�K�J(	�#K�+J4	�0K�7K	�<K�KrAc
��tjd�}tjd�}tjd�}tjd�}tjd�}tjd�}t|�}t|�}|jdd�5}	|	j	t
jt
j|�|	j	t
jt
jd|�|	j�\}
}|
5|
jt
j||t
j�	�|
j|t
j�|
j|�|
j|t|�z|z�}|j||||�|j|||d�ddd�|	j�\}
}|
5||z}
|
j|
gt
j||�
�|
j|t|�z|z�}|j||||�|j|||d�ddd�t!j"d�j$}|	j�\}
}|
5||z}
|
j'|
gt
jt
j(|t
j�gt
jt
j*|t|��|zgt
jt
j,||�gf�|
jt|
�|z�}|j||||�|j|||d�ddd�|	j�\}
}|
5||z|z}
|
j|
gt
j.||�
�|
jt|
�|z
�}|j|||d�ddd�ddd�y#1swY��LxYw#1swY���xYw#1swY��xYw#1swY�8xYw#1swYyxYw)N� c939cc13397c1d37de6ae0e1cb7c423c�b3d8cc017cbb89b39e0f67e2� c3b3c41f113a31b73d9a5cd432103069� 24825602bd12a984e0092d3e448eda5f� 93fe7d9e9bfd10348a5606e5cafa7354� 0032a1dc85f1c9786925a2e71d8272dd�aeadzgcm(aes))r}
r�
�assoclenr�)r}
r�
r�
r)r-rz
r�rr
r�rr�
r�
�ALG_SET_AEAD_AUTHSIZEr�r�
r�
r{
rr�r�r�Structrr��
ALG_SET_OP�
ALG_SET_IV�ALG_SET_AEAD_ASSOCLENr�
)rZr�
r�
�plain�assoc�expected_ct�expected_tag�taglenr�
r|
r}
r��resr��pack_uint32s               r�test_aead_aes_gcmz&LinuxKernelCryptoAPI.test_aead_aes_gcm�s����m�m�>�?��
�]�]�5�
6���
�
�@�A���
�
�@�A���m�m�$F�G���}�}�%G�H���\�"���u�:��
�_�_�V�Z�
0�D��O�O�F�N�N�F�,>�,>��D��O�O�F�N�N�F�,H�,H� �&�
*��K�K�M�E�B���� � �F�$9�$9�b�*2�&�/�/�!�K��
�
�5�&�/�/�2��
�
�5�!��g�g�h��U��3�f�<�=��� � ��c�(�F�7�.C�D�� � ��s�F�7�8�}�=���K�K�M�E�B����e�m��� � �#��6�+@�+@�R�*2�!�4��g�g�h��U��3�f�<�=��� � ��c�(�F�7�.C�D�� � ��s�F�7�8�}�=�
�!�-�-��,�1�1�K��K�K�M�E�B����e�m���
�
��E��n�n�f�&7�&7��V�EZ�EZ�9[�\��n�n�f�&7�&7��S��W�9M�PR�9R�S��n�n�f�&B�&B�K�PX�DY�Z����g�g�c�#�h��/�0��� � ��c�(�F�7�.C�D�� � ��s�F�7�8�}�=���K�K�M�E�B����k�)�L�8��� � �#��6�+@�+@�R�*2�!�4��g�g�c�#�h��/�0��� � ���H�I��7��Y1�
0�������������Y1�
0�sq�'A5Q�B/P�Q�(A6P"�<Q�C.P/�Q�%AP;�Q�P	�Q�"P,	�'Q�/P8	�4Q�;Q	�Q�Qc��|jdd�5}tjd�}|jtj
tj|�|j�\}}|5|jd�}|jt|�d�ddd�ddd�y#1swY�xYw#1swYyxYw)N�rng�drbg_pr_sha256rG)rr
r��urandomr�rr�
r�
r�r�r�r�)rZr|
�
extra_seedr}
r��rns      r�test_drbg_pr_sha256z(LinuxKernelCryptoAPI.test_drbg_pr_sha2565s����_�_�U�$4�
5�����B��J��O�O�F�N�N�F�,>�,>�
�K��K�K�M�E�B����W�W�R�[��� � ��R��"�-��	6�
5����	6�
5�s$�AB7�--B+�B7�+B4	�0B7�7Cc�&�tjtjtjd�}|5|jt�5|j�ddd�|jt�5|jd��ddd�|jt�5|jd�ddd�|jt�5|jtjd��ddd�|jt�5|jtjd��ddd�ddd�y#1swY��xYw#1swY��xYw#1swY��xYw#1swY�uxYw#1swY�BxYw#1swYyxYw)Nr)r}
r
)r}
r�
r2)rr6r1r�r�r�
r�
rRs  r�test_sendmsg_afalg_argsz,LinuxKernelCryptoAPI.test_sendmsg_afalg_args@s���}�}�V�]�]�F�,A�,A�1�E��
��"�"�9�-��"�"�$�.��"�"�9�-��"�"�d�"�+�.��"�"�9�-��"�"�1�%�.��"�"�9�-��"�"�f�&;�&;�d�"�K�.��"�"�9�-��"�"�f�&;�&;�b�"�I�.��T�-�-��.�-��.�-��.�-��.�-���T�s��F�E�F�:E�
F�*E#�<F�"E/�;F�"E;�:F�E	�F�E 	�F�#E,	�(F�/E8	�4F�;F	�F�Fc�|�tjtjtjd�}|j|j�|jt�5|jd�ddd�|jtd�5|jd�ddd�|jt�5|jd�ddd�|jtd�5|jd�ddd�y#1swY��xYw#1swY�uxYw#1swY�RxYw#1swYyxYw)Nr)�
tttttttttttttr�z
type too long)�ttttttttttttttr�)rs�?nnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnz
name too long)rs�@nnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnn)
rr6r1rur!r�r�	rvr�r}rRs  r�test_length_restrictionz,LinuxKernelCryptoAPI.test_length_restrictionRs����}�}�V�]�]�F�,A�,A�1�E������
�
�#��
�
�0�
1��I�I�(�)�2�
�
#�
#�J��
@��I�I�(�)�A��
�
�0�
1��I�I�(�)�2�
�
#�
#�J��
@��I�I�(�)�A�
@�2�
1��
@�
@��2�
1��
@�
@�s0�$D�D�D&�3D2�D�D#�&D/�2D;N)
rarbrcrr
rrMr~
r�
r�
r�
r�
r�
r�
rdr>rrn
rn
�s���	�$�W�#�#�A�q�)�9�*�9�"9�$�W�#�#�A�q�)�&4�*�&4�P$�W�#�#�A�q�)�<8�*�<8�|$�W�#�#�A�q�)�.�*�.�J�$*r>rn
r�r�c��eZdZd�Zy)�TestMacOSTCPFlagsc�B�|jtj�yrI)r�r�
TCP_KEEPALIVErYs r�test_tcp_keepalivez$TestMacOSTCPFlags.test_tcp_keepalivefs������,�,�-r>N)rarbrcr�
rdr>rr�
r�
ds��.r>r�
�winzrequires Windowsc��eZdZhd�Zd�Zy)�TestMSWindowsTCPFlags>�
TCP_MAXSEG�TCP_KEEPCNT�TCP_NODELAY�TCP_FASTOPEN�TCP_KEEPIDLE�
TCP_KEEPINTVLc���tt�D�cgc]}|jd�s�|��}}|D�cgc]}||jvs�|��}}|j	g|d�ycc}wcc}w)N�TCPzANew TCP flags were discovered. See bpo-32394 for more information)�dirrro�
knownTCPFlagsr�)rZr$�provided�unknowns    r�test_new_tcp_flagsz(TestMSWindowsTCPFlags.test_new_tcp_flagsyse��"�6�{�B�{�!�a�l�l�5�.A�A�{��B�&�F�h��!�4�3E�3E�*E�1�h��F�����W�O�	Q��C��Fs�A!�A!�A&�A&N)rarbrcr�
r�
rdr>rr�
r�
js���M�Qr>r�
c�J�eZdZd�Zd�Zd�Zejee	d�xs
ee	d�d�ejejd�d���Z
ejej�d	�ejejd�d
���Zy)�CreateServerTestc�6�tj�}tjd|f�5}|j	|j�dd�|j	|j�d|�ddd�tjrwtjd|ftj��5}|j	|j�dd�|j	|j�d|�ddd�yy#1swY��xYw#1swYyxYw)Nr�rr
r�r�)rr�r�
create_serverr�r�r�rg�rZrWrCs   r�test_addresszCreateServerTest.test_address�s����-�-�/��
�
!�
!�;��"5�
6�$����T�-�-�/��2�K�@����T�-�-�/��2�D�9�7��%�%��%�%�u�d�m�-3�_�_�>�AE�� � ��!1�!1�!3�A�!6��>�� � ��!1�!1�!3�A�!6��=�>�>�&�7�
6��>�>�s�AD�2AD�D�Dc�>�tjd�5}|j|jtj�|j|j
tj�ddd�tjr�tjdtj��5}|j|jtj�|jj
tj�ddd�yy#1swY��xYw#1swYyxYw)Nr��r�rr�)
rr�
r�r�rTrsrArr�rg)rZrCr$s   r�test_family_and_typez%CreateServerTest.test_family_and_type�s���
�
!�
!�"2�
3�t����T�[�[�&�.�.�9����T�Y�Y��(:�(:�;�4��%�%��%�%�j����I�Q�� � ����6�?�?�;�� � ����F�,>�,>�?�J�I�&�4�
3��J�I�s�AD�(AD�D�Dc�T�ttd�s6|jt�5tjdd��ddd�ytjd�5}|jtjtj�}|j|d�ddd�tjdd��5}|jtjtj�}|j|d�ddd�y#1swYyxYw#1swY�vxYw#1swYyxYw)N�SO_REUSEPORT)r�rT)�
reuse_portr)
rrr�r}r�
r�r�r�
r�r�)rZrCrs   r�test_reuse_portz CreateServerTest.test_reuse_port�s����v�~�.��"�"�:�.��$�$�%5�$�G�/�.��%�%�&6�7�4��o�o�f�&7�&7��9L�9L�M��� � ��a�(�8��%�%�&6�4�H�D��o�o�f�&7�&7��9L�9L�M���#�#�C��+�I�H�
/�.��8�7��I�H�s%�D�AD�<AD�D�D�D'r�rrr�c���tjdtj��5}|jtjtj
�sJ�	ddd�y#1swYyxYw)Nr�
r�)rr�
rgr�r�rrRs  r�test_ipv6_only_defaultz'CreateServerTest.test_ipv6_only_default�sG��
�
!�
!�*�V�_�_�
E���?�?�6�#6�#6��8J�8J�K�K�K�F�
E�
E�s�1A!�!A*�dualstack_ipv6 not supportedc���tjdtjd��5}|j|jtj�ddd�y#1swYyxYw)Nr�
T�r��dualstack_ipv6)rr�
rgr�r�rRs  r�test_dualstack_ipv6_familyz+CreateServerTest.test_dualstack_ipv6_family�sH���
!�
!�*�V�_�_�15�7�:>����T�[�[�&�/�/�:�7�7�7�s�+A�A$N)rarbrcr�
r�
r�
r�r�rr�r�rr�r�
r�has_dualstack_ipv6r�
rdr>rr�
r�
�s���	>�@�
,��X�_�_���.�9�9�9� ��-�8�8�7�9��X����3�3�5R�S�L�T�9�L��X�_�_�2��2�2�4�4�3�5��X����3�3�5R�S�;�T�5�;r>r�
c��eZdZejZd�Zd�Zd�Ze	jejd�d��Z
e	jej �d�e	jejd�d���Ze	jej �d�e	jejd�d���Zy	)
�CreateServerFunctionalTestc�0�����fd�}tj��|j�j�tj||f��}|j
��j
|j�j��j�y)Nc�*��|5|j�\}}|5�j�j�|jd�}|s	ddd�ddd�y|j	|�ddd�ddd�y#1swY�xYw#1swYyxYwr�)r�r�rLr�r)rCr�r�r�r rZs    ��r�runz3CreateServerFunctionalTest.echo_server.<locals>.run�so�����+�+�-���a���J�J�t�|�|�,��)�)�D�/�C���	����L�L��%�����T����s.�B	�0A=�
B	�A=�,B	�=B	�B	�	Br�	)	r�r�r�rLr�r�rur�r�)rZrCr�
r�r s`   @r�echo_serverz&CreateServerFunctionalTest.echo_server�sd���	&����!��������%��!�!��D�8�<�������������T�\�\�2�
�	�	�r>c��tj|��5}|j|j�|j|�|j	d�|j|j
d�d�ddd�y#1swYyxYw)Nr�r�r�)rr�rLr�rr�r�)rZr
r�rCs    r�echo_clientz&CreateServerFunctionalTest.echo_client�s\��
�]�]�&�
)�T��O�O�D�L�L�)��L�L����L�L�� ����T�Y�Y�t�_�f�5�	*�
)�
)�s�AA?�?Bc���tj�}tjd|f�5}|j	|�|jd|ftj�ddd�y#1swYyxYw)Nr�r�)rr�rr�
r�
r�
rTr�
s   r�	test_tcp4z$CreateServerFunctionalTest.test_tcp4�sW���-�-�/��
�
!�
!�2�t�*�
-�����T�"����k�4�0�&�.�.�A�.�
-�
-�s�4A)�)A2r�c�
�tj�}tjd|ftj��5}|j|�|j
d|ftj�ddd�y#1swYyxYw)Nr�r�r��rr�rr�
rgr�
r�
r�
s   r�	test_tcp6z$CreateServerFunctionalTest.test_tcp6�sd���-�-�/��
�
!�
!�2�t�*�)/���:�=A����T�"����e�T�]�F�O�O�<�:�:�:�s�4A9�9Br�
c��tj�}tjd|ftjd��5}|j|�|j
d|ftj�ddd�y#1swYyxYw)Nr�Tr�
r�)rr�rr�
rgr�
r�
rTr�
s   r�test_dual_stack_client_v4z4CreateServerFunctionalTest.test_dual_stack_client_v4�si���-�-�/��
�
!�
!�2�t�*�V�_�_�15�7�:>����T�"����k�4�0�&�.�.�A�7�7�7���4A:�:Bc��tj�}tjd|ftjd��5}|j|�|j
d|ftj�ddd�y#1swYyxYw)Nr�Tr�
r�r�
r�
s   r�test_dual_stack_client_v6z4CreateServerFunctionalTest.test_dual_stack_client_v6�sh���-�-�/��
�
!�
!�2�t�*�V�_�_�15�7�:>����T�"����e�T�]�F�O�O�<�7�7�7�r�
N)rarbrcrr�rLr�
r�
r�
r�r�rr�r�
r�rr�
r�
r�
rdr>rr�
r�
�s����&�&�G��$6�B��X����3�3�5R�S�=�T�=��X�_�_�2��2�2�4�4�3�5��X����3�3�5R�S�B�T�5�B��X�_�_�2��2�2�4�4�3�5��X����3�3�5R�S�=�T�5�=r>r�
�send_fds�recv_fdsc��eZdZd�Zy)�SendRecvFdsTestsc	�"�d�}d�}td�D�cgc]}tj���}}|j||�|D��cgc]\}}|��	}}}t	j
tjtj�\}}	|5|	5t	j|tg|�t	j|	tt�dzt|�dz�\}
}}}
|j||�ddd�ddd�|j
t�|jt�t|��|jd�t|�D]7\}}|\}}tj|t|�j!���9t|�D]D\}}tj"|d�}|j|t|�j!���Fycc}wcc}}w#1swY��xYw#1swY��xYw)Nc�l�|D]/\}}tj|�tj|��1yrI�r�r!)�pipesr��fd2s   r�close_pipesz8SendRecvFdsTests.testSendAndRecvFds.<locals>.close_pipes�s&��!���S�����
�����
�"r>c�<�|D]}tj|��yrIr�
)rbrts  r�	close_fdsz6SendRecvFdsTests.testSendAndRecvFds.<locals>.close_fds�s���������r>rzrrr�)r<r��piperurrrHrAr�
r�r�
r�r�rer_r�r`r	)rZr�
rr�r�
�rfd�wfdrbrrr��fds2r�r
r-r
s                r�testSendAndRecvFdsz#SendRecvFdsTests.testSendAndRecvFds�s���	�
	�
%*�"�I�.�I�q�����I��.�����U�+�#(�)�5�x�s�C�s�5��)��(�(�����9K�9K�L���u�
�E��O�O�E�C�5�#�.�%+�_�_�U�C��H�q�L�#�c�(�UV�,�%W�"�C��u�d��O�O�I�t�,�	�U�	
����c�"�����T��C��H�-������"�$�E�*�J�E�3��H�C���H�H�S�#�e�*�+�+�-�.�+�$�D�/�J�E�3��7�7�3��$�D����T�C��J�$5�$5�$7�8�*��-/��)��E��U�U�s0�G,�G1�H�A'G7�8H�7H	�<H�HN)rarbrcrrdr>rr�
r�
�s��#9r>r�
c�t�tj�}tjtjg|���yrI)r�threading_setupr��addModuleCleanup�threading_cleanup)�thread_infos r�setUpModulers*��"�2�2�4�K����.�@�@�O�;�Or>�__main__)�r��testr�test.supportrrr�_threadr�r�r�r"r�r2
r�rr�r=rnr�r
r�r�rrr
rr@r�r�r�r'	�weakrefrr�	r�r�requires_working_socketr�r`r�r�r��systemr�release�WSLr�rr%r*r.r2r7r:r=rCrGr�rN�HAVE_SOCKET_CAN�HAVE_SOCKET_CAN_ISOTP�HAVE_SOCKET_CAN_J1939�HAVE_SOCKET_RDS�HAVE_SOCKET_ALG�HAVE_SOCKET_QIPCRTR�HAVE_SOCKET_VSOCKr�HAVE_SOCKET_UDPLITE�HAVE_SOCKET_BLUETOOTH�HAVE_SOCKET_HYPERVrQrwr�rRrfrjrmr�r�r�r�r�r�r�r�r�r�rrrr$r,r8r>rFrLrTrXr[r^rbrerir}r�r�r�r�rr<rLrkrtr�r�r�r�r�r'r>rGrorvr{rr�r�r�r�r�r�rr)r/rKr\r�rPrTrWrYr[r�r`rcrergrjrlrnrprrrtrwryr{r}rr�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�rrOr�r�r�r�r�r�r�r�r�r�r�r	r	r+	r7	r=	rH	ra	r|	r�	r�	r�	r�	r�	r�	r�	r�	r�	r�r�	r	
rk
rn
r�
ror�
r�
r�
r�
rra�mainrdr>r�<module>r!s�����"�&�)�����	�	���	�
���
�	�
�
�
�
�
�
���������� ����t�,�����)�0�0��9�����	��h�o�o��5� ���"2�(�"2�"2�"4�4����(��������
�����.��.�#�$��.�0��.�0��"�$��"�$��*�,��&�(���f�&7�8��.�0��(�*���U�[�[��
�
&�
&�
�	�H�%�%�	��H�%�%��7�
�7�0+�H�%�%�0+�f
7�H�%�%�
7� m�m�^,�M�>�,�,�M�>�,�����(�
3�5�,� 1�>�,�5�,�,�M�>�,�(,�M�>�,�,�����$���-������<�=�����&�
1�3� �H�$5�$5�~� �3�>�.� �D3�/�3�B,�X�&�&��,�H1�X�&�&�1�0�~��,�n�n�,�<!!�7�6�!!�H3��3�A�'�A�
6�>�
6�A�,�A�@�,�@�X�l�X�2�\�2� �L� �
A�=�A�Y�}�Y�/�.F�3�>aG��*�*�aG�H'����_�&I�J�P[�8�$�$�P[�K�P[�f����_�&I�J�W=�#�W=�K�W=�t����*�,O�P�'��!�!�'�Q�'�T����*�,O�P�:��!�!�:�Q�:�z����_�&K�L�G�8�$�$�G�M�G�"����_�&K�L�<9�#�<9�M�<9�|����(�
3�5�7�x�(�(�7�5�7�6�����$���-�����&�
1�3�+D�X�&�&�+D�3�.�+D�\����*�@�B�"��*�*�"�B�"�J����'�>�@�/7�h�'�'�/7�@�/7�dx!�&�x!�v3�(�3�:����(�
3�5�3�0�3�5�3�nt8�t8�n	6��	6�F��F�@��@�9�O�9�*
��
�(5�?�5�t@�/�t@�n:"��:"�z.��.�"SM�/�SM�l � 3� �F�&��:M5�'�)<�M5�`8I�X�&�&�8I�vf!�0�f!�Ro�7�o�h
	�6�:�4�k�	�
�f�m�m�Y�'�	�/�1G�	�(�	��f�m�m�Y�'�	�\�#9�	�(�	��f�m�m�^�,�	�)�+A�	�-�	�1�7�;�5�|�1��f�m�m�Y�'�����]�/�/�1O�P��z�<�(�	�0�2I�	�)�Q�(�	��f�m�m�Y�'�����]�/�/�1O�P��z�<�(�	�l�$;�	�)�Q�(�	��f�m�m�^�,�����]�/�/�1O�P��z�<�(�	�*�,C�	�)�Q�-�	��f�m�m�Y�'�����]�/�/�1O�P�
�f�n�%��z�<�(�	�&:�&=�	�)�&�Q�(�	��f�m�m�^�,�����]�/�/�1O�P�
�f�n�%��z�<�(�	�*:�*>�*A�	�)�&�Q�-�	�����(�
3�5�	�!:�:�4�o�	�5�	�
����(�
3�5�
�f�m�m�Y�'�	�3�5O�	�(�5�	�����(�
3�5�
�f�m�m�Y�'�	��'A�	�(�5�	�����(�
3�5�
�f�m�m�^�,�	�-�/I�	�-�5�	�����(�
3�5�1�";�;�5�7G�1�5�1��f�m�m�Y�'�����]�/�/�1O�P�����(�
3�5��z�<�(�	�4�6Q�	�)�5�Q�(�
	��f�m�m�Y�'�����]�/�/�1O�P�����(�
3�5��z�<�(�	�,�(C�	�)�5�Q�(�
	��f�m�m�^�,�����]�/�/�1O�P�����(�
3�5��z�<�(�	�.�0K�	�)�5�Q�-�
	��f�m�m�Y�'�����]�/�/�1O�P�����(�
3�5�
�f�n�%��z�<�(�	�*>�&A�	�)�&�5�Q�(�	��f�m�m�^�,�����]�/�/�1O�P�����(�
3�5�
�f�n�%��z�<�(�	�.>�*>�*E�	�)�&�5�Q�-�	�	�5�5�{�	��f�m�m�Y�'�	�'�)?�	�(�	��f�m�m�Y�'�	�\�#<�+�	�(�	��f�m�m�^�,�	�)�+D�/�	�-�	�
	�$<�$<�$<�n�	�
�f�m�m�Y�'������N�O��y�-��8�	�.�0M�	�9�P�(�	��f�m�m�Y�'������N�O��y�-��8�	R�L�*C�9�	R�9�P�(�	R��f�m�m�^�,������N�O��y�-��8�	R� 0�2K� =�	R�9�P�-�	R�	�$<�$<�n�	��f�m�m�Y�'�
�f�i� �	�.�0M�	�!�(�	��f�m�m�Y�'�
�f�i� �	�L�*C�9�	�!�(�	��f�m�m�^�,�
�f�i� �	� 0�2K� =�	�!�-�	��f�m�m�Y�	�2�
�f�i��|�<�	��0M�	�=�3�	��f�m�m�Y��7�
�f�i��|�<�	�%5�}�%B�	�=�8�	�"�"�@�f�n�%�����W�V�W�-�M����1M�B�D�$M�!7��$M�D�&�$M�R�f�n�%�����W�V�W�-�M����1M�B�D�3F�!7�!9�;�3F�D�&�3F�l�)��( #�.� #�Fg
�~�g
�T]�/�]�@`
�1�`
�FiG�(?�iG�X�*A��
�+B��
�)@���*A���.E��"�F�"��)�<��P5�� 1� 1�P5�fF4�m�^�F4�R>�]�N�>�>75�]�75�rK�]�K�.����(�
3�5�K�*�K�5�K�.$�X�&�&�$�.����S�\�\�W�,�.C�D�4H��!2�!2�4H�E�4H�n����W�V�Y�/�1L�M�G7�X�&�&�G7�N�G7�TP:�&�P:�f�
�
�
�
�
��(����_�&�M�O�#�x� � �#�O�#�,����_�&�M�O�$��*�*�N�$�O�$�N)9�/�)9�X@6�h�'�'�@6�F����W�V�_�5�0�2�9$�8�,�,�9$�2�9$�x����R�W�W��_�&8�9�����_�&<�=�b#�
�b#�>�:�b#�JF=�1�F=�R����W�R��,�<�>�7� 5�7�>�7�����_�&7�8�D*�8�,�,�D*�9�D*�N����S�\�\�X�-�/D�E�.��)�)�.�F�.�
����S�\�\�,�,�U�3�5G�H�Q�H�-�-�Q�I�Q�,0;�x�(�(�0;�f>=��!2�!2�>=�@�f�j�!�
�f�j�!�
�f�i� �$9�x�(�(�$9�!�"�"�$9�NP�
�z���H�M�M�O���CX���O������E��� ���G��sE�AI%�	AI3�)AJ�I%AI0�I/AI0�I3AI>�I=AI>�JAJ�JAJ

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