Sindbad~EG File Manager

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

�

SԚg����f(�ddlZddlmZddlmZddlmZddlmZddlZddlZddl	Z	ddl
Z
ddlZddlZddl
Z
ddlZddlZddlZddlZddlZddlZddlZddlmZddlZddlZddlZddlZddlZddlZddlZddlZddl Z 	ddl!Z!n
#e"$rdZ!YnwxYw	ddl#Z#n
#e"$rdZ#YnwxYwej$d�	��ej%Z%d
�&d��Z'dZ(ej)��d
kZ*dej+��vZ,	ddl-Z-n
#e"$rdZ-YnwxYwd�Z.d�Z/d�Z0d�Z1d�Z2d�Z3d�Z4d�Z5d�Z6ej7d���Z8e/��Z9e0��Z:e1��Z;e2��Z<e3��Z=e4��Z>e5��Z?e@e
d��ZAe6��ZBejd��jCZDGd�dejE��ZFGd�dejE��ZGGd�d eG��ZHGd!�d"ejE��ZIGd#�d$ejE��ZJGd%�d&��ZKGd'�d(eFeK��ZLGd)�d*eGeK��ZMejNeAd+��Gd,�d-eHeK����ZOGd.�d/eIeK��ZPGd0�d1eJeK��ZQejRe#dud2��ejRe,d3��ejNe?d4��ejNe.��d5kd6��Gd7�d8ejEeK����������ZSGd9�d:eL��ZTGd;�d<ejEeK��ZUGd=�d>ejE��ZVGd?�d@eV��ZWGdA�dBeVeK��ZXGdC�dDeWeX��ZYGdE�dFeV��ZZGdG�dHeZ��Z[GdI�dJeV��Z\GdK�dLe\��Z]GdM�dNe\��Z^GdO�dPe\��Z_GdQ�dRe\��Z`GdS�dTe\��ZaGdU�dVea��ZbGdW�dXea��ZcdY�ZddZ�Zed[�ZfGd\�d]ejE��ZgejNe9d^��Gd_�d`ejE����ZhejNe9d^��Gda�dbeP����ZiejNe:dc��Gdd�deejE����ZjejNe;df��Gdg�dhejE����ZkejNe<di��Gdj�dkejE����ZlejNe<di��Gdl�dmeQ����ZmejNe>dn��Gdo�dpejE����ZnejRe#dud2��ejNe?d4��Gdq�drejE������ZoejNeBds��Gdt�duejE����ZpGdv�dweT��ZqGdx�dyeM��ZrejNeAd+��Gdz�d{eO����ZsGd|�d}��ZtGd~�det��ZuGd��d�et��ZvGd��d�et��ZwGd��d�et��ZxGd��d�et��ZyGd��d�et��ZzGd��d�ez��Z{Gd��d�e{��Z|Gd��d�e{��Z}Gd��d�et��Z~Gd��d�e~��ZGd��d�e~��Z�Gd��d�eue~��Z�Gd��d�ejE��Z�Gd��d�ez��Z�Gd��d�ez��Z�Gd��d�evexeXe^��Z�eee
j
d���Gd��d�e}e�����Z�eee
j
d���Gd��d�e�e�����Z�eee
j
d���Gd��d�e�e�����Z�Gd��d�evexeXeb��Z�eee
j
d���ejNej�d���efd�d���Gd��d�e}e���������Z�eee
j
d���ejNej�d���efd�d���Gd��d�e�e���������Z�eee
j
d���ejNej�d���efd�d���Gd��d�e�e���������Z�eee
j
d���ejNej�d���eee
d���efd�d���Gd��d�e�e�����������Z�eee
j
d���ejNej�d���eee
d���efd�d���Gd��d�eue�e�����������Z�ejNeAd+��Gd��d�evexeXe_����Z�ejNeAd+��eee
j
d���Gd��d�e}e�������Z�ejNeAd+��eee
j
d���Gd��d�e�e�������Z�ejNeAd+��eee
j
d���Gd��d�e�e�������Z�ejNeAd+��Gd��d�evexeXec����Z�eee
j
d���ejNej�d���ejNeAd+��efd�d���GdÄd�e}e�����������Z�eee
j
d���ejNej�d���ejNeAd+��efd�d���Gdńd�e�e�����������Z�eee
j
d���ejNej�d���ejNeAd+��efd�d���GdDŽd�e�e�����������Z�eee
j
d���ejNej�d���ejNeAd+��eee
d���efd�d���GdɄd�e�e�������������Z�eee
j
d���ejNej�d���ejNeAd+��eee
d���efd�d���Gd˄d�eue�e�������������Z�Gd̈́d�eyeYe]��Z�eee
j
d���Gdτd�e|e�����Z�eee
j
d���Gdфd�e�ee�����Z�eee
j
d���Gdӄd�e�ee�����Z�GdՄd�eweyeYe`��Z�eee
j
d���ejRe*dצ�efd�d�dڦ�Gdۄd�e|e���������Z�eee
j
d���ejRe*dצ�efd�d�dڦ�Gd݄d�e�ee���������Z�eee
j
d���ejRe*dצ�efd�d�dڦ�Gd߄d�e�ee���������Z�Gd�d�eyeYe[��Z�eee
j
d���eee
d��Gd�d�e|e�������Z�eee
j
d���eee
d��Gd�d�e�ee�������Z�eee
j
d���eee
d��Gd�d�e�ee�������Z�eee
j
d�d���eee
d�d�d��Gd�d�e�e�������Z�eee
j
d�d���eee
d�d�d��Gd�d�eue�e�������Z�Gd�d��Z�eeed��ejNe@ed��pe@ed��d���Gd��d�e�e^������Z�eeed��ejNe@ed��pe@ed��d���Gd��d�e�eWe]������Z�Gd��d�eL��Z�Gd��d�eU��Z�Gd��d�eU��Z�G�d��deL��Z�G�d��deT��Z�G�d��de���Z�G�d��de���Z�G�d��d	e���Z�G�d
��de���Z�G�d��d
e���Z�G�d��de���Z�G�d��de���Z�G�d��de�eq��Z�G�d��dejE��Z�G�d��deFeK��Z�G�d��deFeK��Z�G�d��deF��Z�G�d��deG��Z�ejNeAd+��G�d��deH����Z�G�d ��d!ejE��Z�ejNej�d"k�d#��G�d$��d%ejE����Z�ejNe@e
d���d&��G�d'��d(ejE����Z�G�d)��d*eT��Zd+ZÐd,ZĐd-ZŐd.�Z�ejNeƦ��d/��G�d0��d1ejE����Z�ejNeƦ��d/��G�d2��d3ejEeK����Z�G�d4��d5eL��Z�G�d6��d7ejE��Z�ejNe@e
�d8���d9��G�d:��d;ejE����Z�ejNej��d<k�d=��ejNe!�d>��G�d?��d@eF������Z�G�dA��dBeL��Z�ejNe@e�dC���dD��G�dE��dFe���Z�ejNe=�dG��G�dH��dIejE����Z�ejNej�dJk�dK��G�dL��dMejE����Z�ejNej���dN���dO��G�dP��dQejE����Z�G�dR��dSejE��Z�G�dT��dUejE��Z�eee
�dV��eee
�dW��eee
d��G�dX��dYejE��������Z֐dZ�Z�eؐd[krej���dSdS(\�N)�support)�	os_helper)�
socket_helper)�threading_helper)�proxyFT)�moduleuMichael Gilfix was hereሴ
�utf-8���AIXzmicrosoft-standard-WSLc�,�t�dSttd��sdS	tdd��5}tj|tjd��}ddd��n#1swxYwYt
jd|��dS#t$rYdSwxYw)N�IOCTL_VM_SOCKETS_GET_LOCAL_CIDz
/dev/vsock�rbz    �Ir)	�fcntl�hasattr�socket�open�ioctlr
�struct�unpack�OSError)�f�rs  �-/usr/local/lib/python3.11/test/test_socket.py�get_cidr7s����}��t��6�;�<�<���t�(�
�,��
%�
%�	N����A�v�D�f�M�M�A�	N�	N�	N�	N�	N�	N�	N�	N�	N�	N�	N����	N�	N�	N�	N�
�}�S�!�$�$�Q�'�'�������t�t����s4�B�!A�B�A#�#B�&A#�'B�
B�Bc���		tjtjtjtj��}|���n#t
tf$rYdSwxYwdS�NFT)r�PF_CAN�SOCK_RAW�CAN_RAW�close�AttributeErrorr��ss r�_have_socket_canr%Dsd��?���M�&�-���&�.�I�I��	
���	�	�	�	��
�G�$�����u�u������4��4A�A!� A!c���		tjtjtjtj��}|���n#t
tf$rYdSwxYwdSr)rr�
SOCK_DGRAM�	CAN_ISOTPr!r"rr#s r�_have_socket_can_isotpr*N�f��E���M�&�-��):�F�<L�M�M��	
���	�	�	�	��
�G�$�����u�u������4r&c���		tjtjtjtj��}|���n#t
tf$rYdSwxYwdSr)rrr(�	CAN_J1939r!r"rr#s r�_have_socket_can_j1939r.Xr+r&c��		tjtjtjd��}|���n#tt
f$rYdSwxYwdS�NrFT)r�PF_RDS�SOCK_SEQPACKETr!r"rr#s r�_have_socket_rdsr3bsc��?���M�&�-��)>��B�B��	
���	�	�	�	��
�G�$�����u�u������4��*A�A�Ac��		tjtjtjd��}|���n#tt
f$rYdSwxYwdSr0)r�AF_ALGr2r!r"rr#s r�_have_socket_algr7lsc��B���M�&�-��)>��B�B��	
���	�	�	�	��
�G�$�����u�u������4r4c��		tjtjtjd��}|���n#tt
f$rYdSwxYwdSr0)r�
AF_QIPCRTRr(r!r"rr#s r�_have_socket_qipcrtrr:vsd��F���M�&�+�V�->��B�B��	
���	�	�	�	��
�G�$�����u�u������4r4c�(�	t��du}|S�N)r)�rets r�_have_socket_vsockr>�s��D�
�)�)�4�
�C��J�c���		tjtjtjtj��}|���n#t
tf$rYdSwxYwdSr)r�AF_BLUETOOTH�SOCK_STREAM�BTPROTO_RFCOMMr!r"rr#s r�_have_socket_bluetoothrD�si��H��
�M�&�-�v�/A�6�CX�Y�Y��	
���	�	�	�	��
�G�$�����u�u������4r&c#�K�tj��}	tj|��dV�tj|��dS#tj|��wxYwr<)r�getdefaulttimeout�setdefaulttimeout)�timeout�old_timeouts  r�socket_setdefaulttimeoutrJ�sa�����*�,�,�K�.�� ��)�)�)�
����� ��-�-�-�-�-��� ��-�-�-�-���s�A�A�IPPROTO_UDPLITE�ic��eZdZd�Zd�ZdS)�
SocketTCPTestc���tjtjtj��|_t	j|j��|_|j���dSr<)r�AF_INETrB�servr�	bind_port�port�listen��selfs r�setUpzSocketTCPTest.setUp�sH���M�&�.�&�2D�E�E��	�!�+�D�I�6�6��	��	�������r?c�F�|j���d|_dSr<�rQr!rUs r�tearDownzSocketTCPTest.tearDown�����	��������	�	�	r?N��__name__�
__module__�__qualname__rWrZ�r?rrNrN�s2���������
����r?rNc��eZdZd�Zd�ZdS)�
SocketUDPTestc��tjtjtj��|_t	j|j��|_dSr<)rrPr(rQrrRrSrUs rrWzSocketUDPTest.setUp�s2���M�&�.�&�2C�D�D��	�!�+�D�I�6�6��	�	�	r?c�F�|j���d|_dSr<rYrUs rrZzSocketUDPTest.tearDown�r[r?Nr\r`r?rrbrb�s2������7�7�7�����r?rbc��eZdZd�ZdS)�SocketUDPLITETestc��tjtjtjtj��|_tj|j��|_dSr<)rrPr(rKrQrrRrSrUs rrWzSocketUDPLITETest.setUp�s7���M�&�.�&�2C�V�E[�\�\��	�!�+�D�I�6�6��	�	�	r?N)r]r^r_rWr`r?rrfrf�s#������7�7�7�7�7r?rfc�|�eZdZ	dZdZ	dZeje��Z	dZ	e	deje	��dzzz
Z	d�Z
dS)	�
SocketCANTest�vcan0�z=IB3x8sz@3I4l2I�x�c�T�tjtjtjtj��|_|�|jj��	|j�|jf��dS#t$r!|�
d|jz��YdSwxYw�N�%network interface `%s` does not exist)rrrr r$�
addCleanupr!�bind�	interfacer�skipTestrUs rrWzSocketCANTest.setUp�s�����v�}�f�o�v�~�N�N���������%�%�%�	+��F�K�K���)�*�*�*�*�*���	+�	+�	+��M�M�A��>�*�
+�
+�
+�
+�
+�
+�	+���s� A<�<'B'�&B'N)r]r^r_rs�bufsize�
can_frame_fmtr�calcsize�can_frame_size�bcm_cmd_msg_fmtrWr`r?rriri�s}��������I��G���M�$�V�_�]�3�3�N��  �O��s�o�f�o�o�>�>��B�C�C�O�+�+�+�+�+r?ric��eZdZ	dZd�ZdS)�
SocketRDSTest� c�,�tjtjtjd��|_|�|jj��	t
j|j��|_dS#t$r|�
d��YdSwxYw)Nrzunable to bind RDS socket)rr1r2rQrqr!rrRrSrrtrUs rrWzSocketRDSTest.setUps����M�&�-��1F��J�J��	�����	��(�(�(�	7�%�/��	�:�:�D�I�I�I���	7�	7�	7��M�M�5�6�6�6�6�6�6�	7���s�A0�0B�BN)r]r^r_rurWr`r?rr{r{s/��������G�7�7�7�7�7r?r{c�4�eZdZ	d�Zd�Zd�Zd�Zd�Zd�ZdS)�ThreadableTestc�6�|j|_|j|_dSr<)rW�_ThreadableTest__setUp�_setUprUs r�__init__zThreadableTest.__init__7s���z����[��
�
�
r?c�:�	|j���dSr<)�server_ready�setrUs r�serverExplicitReadyz"ThreadableTest.serverExplicitReady<s%��	F�	
��������r?c�R����tj����tj���_tj���_tj���_tj	d���_d�_
�fd�}��|������}|�
d��}||dzd�}t�d|z��}tj�j|f���_	����n
#d�_
�xYw	�j���n#�j���wxYw�j������jj��dS)N�Fc�l���j���r�j����dSr<)�queue�qsize�getrUs�r�raise_queued_exceptionz5ThreadableTest._setUp.<locals>.raise_queued_exceptionLs5����z���!�!�
'��j�n�n�&�&�&�
'�
'r?�.�_T)�enterContextr�wait_threads_exit�	threading�Eventr��client_ready�doner��Queue�server_crashedrq�id�rfind�getattr�thread�start_new_thread�	clientRun�
client_threadr�r��wait)rVr��
methodnamerL�test_methods`    rr�zThreadableTest._setUpCs�������*�<�>�>�?�?�?�%�O�-�-���%�O�-�-����O�%�%��	��[��^�^��
�#���	'�	'�	'�	'�	'�	
���.�/�/�/��W�W�Y�Y�
����S�!�!����!����%�
��d�C�*�$4�5�5��#�4��N�[�N�,�,���	$��L�L�N�N�N�N��	�"&�D������
�

��!�!�#�#�#�#��D��!�!�#�#�#�#�������� � � �����	��'�'�'�'�'s�D)�(E�)
D3�3E�E,c���|j���	|���n_#t$rR}|j�|��|���Yd}~|j���dSd}~wwxYw	|j���n#|j���wxYw|j	r|���dSt|d��std���	|��n1#t$r$}|j�|��Yd}~nd}~wwxYw|���dS#|���wxYw)N�__call__z%test_func must be a callable function)r�r��clientSetUp�
BaseExceptionr��put�clientTearDownr�r�r�r�	TypeError)rV�	test_func�es   rr�zThreadableTest.clientRuncs������� � � �	$����������	�	�	��J�N�N�1�������!�!�!��F�F�F���!�!�#�#�#�#�#�����	����
�
��!�!�#�#�#�#��D��!�!�#�#�#�#������	����!�!�!��F��y�*�-�-�	E��C�D�D�D�	"��I�K�K�K�K���	�	�	��J�N�N�1�������������	����
���!�!�!�!�!��D���!�!�!�!���s[�0�B*�
B�.B�(B*�B�B*�*C�
D�E�
D>�D9�4E�9D>�>E�E-c� �td���)Nz clientSetUp must be implemented.)�NotImplementedErrorrUs rr�zThreadableTest.clientSetUpys��!�"D�E�E�Er?c�^�|j���tj��dSr<)r�r�r��exitrUs rr�zThreadableTest.clientTearDown|s ���	�
�
������
�
�
�
�
r?N)	r]r^r_r�r�r�r�r�r�r`r?rrrsx������#�J!�!�!�
 � � �(�(�(�@"�"�"�,F�F�F�����r?rc�"�eZdZdd�Zd�Zd�ZdS)�ThreadedTCPSocketTest�runTestc�r�t�||���t�|��dS�N)�
methodName�rNr�r�rVr�s  rr�zThreadedTCPSocketTest.__init__��5�����t�
��;�;�;�����%�%�%�%�%r?c�b�tjtjtj��|_dSr<)rrPrB�clirUs rr�z!ThreadedTCPSocketTest.clientSetUp�s���=����1C�D�D����r?c�z�|j���d|_t�|��dSr<�r�r!rr�rUs rr�z$ThreadedTCPSocketTest.clientTearDown��5�������������%�%�d�+�+�+�+�+r?N�r��r]r^r_r�r�r�r`r?rr�r��sI������&�&�&�&�E�E�E�,�,�,�,�,r?r�c�"�eZdZdd�Zd�Zd�ZdS)�ThreadedUDPSocketTestr�c�r�t�||���t�|��dSr�)rbr�rr�s  rr�zThreadedUDPSocketTest.__init__�r�r?c�b�tjtjtj��|_dSr<)rrPr(r�rUs rr�z!ThreadedUDPSocketTest.clientSetUp�s���=����1B�C�C����r?c�z�|j���d|_t�|��dSr<r�rUs rr�z$ThreadedUDPSocketTest.clientTearDown�r�r?Nr�r�r`r?rr�r��sI������&�&�&�&�D�D�D�,�,�,�,�,r?r�z'UDPLITE sockets required for this test.c�"�eZdZdd�Zd�Zd�ZdS)�ThreadedUDPLITESocketTestr�c�r�t�||���t�|��dSr�)rfr�rr�s  rr�z"ThreadedUDPLITESocketTest.__init__�s5���"�"�4�J�"�?�?�?�����%�%�%�%�%r?c�x�tjtjtjtj��|_dSr<)rrPr(rKr�rUs rr�z%ThreadedUDPLITESocketTest.clientSetUp�s#���=����1B�F�DZ�[�[����r?c�z�|j���d|_t�|��dSr<r�rUs rr�z(ThreadedUDPLITESocketTest.clientTearDown�r�r?Nr�r�r`r?rr�r��sI������&�&�&�&�\�\�\�,�,�,�,�,r?r�c�"�eZdZdd�Zd�Zd�ZdS)�ThreadedCANSocketTestr�c�r�t�||���t�|��dSr�)rir�rr�s  rr�zThreadedCANSocketTest.__init__�r�r?c���tjtjtjtj��|_	|j�|jf��dS#t$rYdSwxYwr<)rrrr r�rrrsrrUs rr�z!ThreadedCANSocketTest.clientSetUp�se���=�������P�P���	��H�M�M�4�>�+�,�,�,�,�,���	�	�	�
�D�D�	���s� A�
A+�*A+c�z�|j���d|_t�|��dSr<r�rUs rr�z$ThreadedCANSocketTest.clientTearDown�r�r?Nr�r�r`r?rr�r��sF������&�&�&�&����,�,�,�,�,r?r�c�"�eZdZdd�Zd�Zd�ZdS)�ThreadedRDSSocketTestr�c�r�t�||���t�|��dSr�)r{r�rr�s  rr�zThreadedRDSSocketTest.__init__�r�r?c��tjtjtjd��|_	|j�t
df��|j���|_dS#t$rYdSwxYw�Nr)	rr1r2r�rr�HOST�getsockname�cli_addrrrUs rr�z!ThreadedRDSSocketTest.clientSetUp�sv���=����0E�q�I�I���	��H�M�M�4��)�$�$�$� �H�0�0�2�2�D�M�M�M���	�	�	�
�D�D�	���s�?A2�2
B�?Bc�z�|j���d|_t�|��dSr<r�rUs rr�z$ThreadedRDSSocketTest.clientTearDown�r�r?Nr�r�r`r?rr�r��sF������&�&�&�&�	�	�	�,�,�,�,�,r?r��
need fcntlz$VSOCK does not work on Microsoft WSLz%VSOCK sockets required for this test.�z-This test can only be run on a virtual guest.c�.�eZdZdd�Zd�Zd�Zd�Zd�ZdS)	�ThreadedVSOCKSocketStreamTestr�c�|�tj�||���t�|��dSr���unittest�TestCaser�rr�s  rr�z&ThreadedVSOCKSocketStreamTest.__init__�s8����"�"�4�J�"�?�?�?�����%�%�%�%�%r?c�"�tjtjtj��|_|�|jj��|j�tjtf��|j�	��|�
��|j�tj
��|j���\|_|_|�|jj��dSr<)r�AF_VSOCKrBrQrqr!rr�VMADDR_CID_ANY�	VSOCKPORTrTr��
settimeoutr�LOOPBACK_TIMEOUT�accept�conn�connaddrrUs rrWz#ThreadedVSOCKSocketStreamTest.setUp�s����M�&�/�6�3E�F�F��	�����	��(�(�(��	����-�y�9�:�:�:��	������� � �"�"�"��	���W�5�6�6�6�#'�9�#3�#3�#5�#5� ��	�4�=�����	��(�(�(�(�(r?c�&�tjd��tjtjtj��|_|�|jj��t��}|j�	|tf��dS)N皙�����?)�time�sleeprr�rBr�rqr!r�connectr�)rV�cids  rr�z)ThreadedVSOCKSocketStreamTest.clientSetUp�sg���
�3�����=���&�2D�E�E���������'�'�'��i�i������#�y�)�*�*�*�*�*r?c�p�|j�d��}|�|t��dS�N�)r��recv�assertEqual�MSG�rV�msgs  r�
testStreamz(ThreadedVSOCKSocketStreamTest.testStream��1���i�n�n�T�"�"������c�"�"�"�"�"r?c�v�|j�t��|j���dSr<�r��sendr�r!rUs r�_testStreamz)ThreadedVSOCKSocketStreamTest._testStream��.����
�
�c������������r?Nr��r]r^r_r�rWr�r�r�r`r?rr�r��sd������&�&�&�&�)�)�)�+�+�+�#�#�#�����r?r�c�0�eZdZ	dd�Zd�Zd�Zd�Zd�ZdS)	�SocketConnectedTestr�c�>�t�||���dSr�)r�r�r�s  rr�zSocketConnectedTest.__init__�!���&�&�t�
�&�C�C�C�C�Cr?c��t�|��|���|j���\}}||_dSr<)r�rWr�rQr��cli_conn�rVr��addrs   rrWzSocketConnectedTest.setUpsL���#�#�D�)�)�)�	
� � �"�"�"��Y�%�%�'�'�
��d���
�
�
r?c�z�|j���d|_t�|��dSr<)rr!r�rZrUs rrZzSocketConnectedTest.tearDown
s7���
��������
��&�&�t�,�,�,�,�,r?c��t�|��|j�t|jf��|j|_dSr<)r�r�r�r�r�rS�	serv_connrUs rr�zSocketConnectedTest.clientSetUps@���)�)�$�/�/�/�����$��	�*�+�+�+������r?c�z�|j���d|_t�|��dSr<)r	r!r�r�rUs rr�z"SocketConnectedTest.clientTearDowns7�������������,�,�T�2�2�2�2�2r?Nr�)r]r^r_r�rWrZr�r�r`r?rrr�sm�������D�D�D�D����-�-�-�
"�"�"�
3�3�3�3�3r?rc�4�eZdZd	d�Zd�Zd�Zd�Zd�Zd�ZdS)
�SocketPairTestr�c��tj�||���t�|��d|_d|_dSr�)r�r�r�rr�rQr�s  rr�zSocketPairTest.__init__sD����"�"�4�J�"�?�?�?�����%�%�%������	�	�	r?c�(�tj��Sr<)r�
socketpairrUs rrzSocketPairTest.socketpair$s��� �"�"�"r?c�H�|���\|_|_dSr<)rrQr�rUs rrWzSocketPairTest.setUp(s��"�o�o�/�/���	�4�8�8�8r?c�T�|jr|j���d|_dSr<rYrUs rrZzSocketPairTest.tearDown+s)���9�	��I�O�O������	�	�	r?c��dSr<r`rUs rr�zSocketPairTest.clientSetUp0����r?c��|jr|j���d|_t�|��dSr<r�rUs rr�zSocketPairTest.clientTearDown3s?���8�	��H�N�N��������%�%�d�+�+�+�+�+r?Nr�)	r]r^r_r�rrWrZr�r�r`r?rrrss����������#�#�#�0�0�0����

�
�
�,�,�,�,�,r?rc�"�eZdZ	d�Zd�Zd�ZdS)�SocketTestBasec�`�|���|_|���dSr<)�	newSocketrQ�
bindServerrUs rrWzSocketTestBase.setUpIs)���N�N�$�$��	��������r?c�x�	|�|j��|j���|_dSr<)�bindSockrQr��	serv_addrrUs rrzSocketTestBase.bindServerMs2��G��
�
�d�i� � � ���.�.�0�0����r?c�F�|j���d|_dSr<rYrUs rrZzSocketTestBase.tearDownRr[r?N)r]r^r_rWrrZr`r?rrr@sF����������1�1�1�
����r?rc� ��eZdZ	�fd�Z�xZS)�SocketListeningTestMixinc�z��t�����|j���dSr<)�superrWrQrT�rV�	__class__s �rrWzSocketListeningTestMixin.setUpZs.���
���
�
�����	�������r?�r]r^r_rW�
__classcell__�r#s@rrrWs;�������/���������r?rc�8��eZdZ	�fd�Zd�Zd�Zd�Zd�Z�xZS)�ThreadedSocketTestMixinc�n��t��j|i|��t�|��dSr<)r!r�r�rV�args�kwargsr#s   �rr�z ThreadedSocketTestMixin.__init__fs9��������$�)�&�)�)�)�����%�%�%�%�%r?c�`�|���|_|���dSr<)�newClientSocketr��
bindClientrUs rr�z#ThreadedSocketTestMixin.clientSetUpjs+���'�'�)�)����������r?c�,�	|���Sr<)rrUs rr.z'ThreadedSocketTestMixin.newClientSocketns��4��~�~���r?c�x�	|�|j��|j���|_dSr<)rr�r�r�rUs rr/z"ThreadedSocketTestMixin.bindClientrs2��F��
�
�d�h������,�,�.�.��
�
�
r?c�z�|j���d|_t�|��dSr<r�rUs rr�z&ThreadedSocketTestMixin.clientTearDownwr�r?)	r]r^r_r�r�r.r/r�r%r&s@rr(r(_sy��������&�&�&�&�&���� � � �/�/�/�
,�,�,�,�,�,�,r?r(c�>��eZdZ	�fd�Z�fd�Z�fd�Z�fd�Z�xZS)�ConnectedStreamTestMixinc���t�����|���|j���\}}||_dSr<)r!rWr�rQr�r)rVr�rr#s   �rrWzConnectedStreamTestMixin.setUp�sJ���
���
�
����	
� � �"�"�"��Y�%�%�'�'�
��d���
�
�
r?c���|j���d|_t�����dSr<)rr!r!rZr"s �rrZz!ConnectedStreamTestMixin.tearDown�s:����
��������
�
���������r?c���t�����|j�|j��|j|_dSr<)r!r�r�r�rr	r"s �rr�z$ConnectedStreamTestMixin.clientSetUp�s>���
��������������(�(�(������r?c���	|j���d|_n#t$rYnwxYwt�����dSr<)r	r!r"r!r�r"s �rr�z'ConnectedStreamTestMixin.clientTearDown�sa���	��N� � �"�"�"�!�D�N�N���	�	�	��D�	����
����� � � � � s� $�
1�1)r]r^r_rWrZr�r�r%r&s@rr4r4}s�������������������
"�"�"�"�"�
!�!�!�!�!�!�!�!�!r?r4c�&��eZdZ	�fd�Zd�Z�xZS)�UnixSocketTestBasec����tj��|_|�tj|j��t
�����dSr<)�tempfile�mkdtemp�dir_pathrq�os�rmdirr!rWr"s �rrWzUnixSocketTestBase.setUp�s@��� �(�*�*��
������$�-�0�0�0�
���
�
�����r?c��tj|j���}tj||��|�tj|��dS)N)�dir)r<�mktempr>r�bind_unix_socketrqr�unlink)rV�sock�paths   rrzUnixSocketTestBase.bindSock�sF����4�=�1�1�1���&�t�T�2�2�2����	�(�$�/�/�/�/�/r?)r]r^r_rWrr%r&s@rr:r:�sJ�������2������
0�0�0�0�0�0�0r?r:c��eZdZ	d�ZdS)�UnixStreamBasec�T�tjtjtj��Sr<)r�AF_UNIXrBrUs rrzUnixStreamBase.newSocket�����}�V�^�V�-?�@�@�@r?N�r]r^r_rr`r?rrIrI�s+������7�A�A�A�A�Ar?rIc�*��eZdZ	eZ�fd�Zd�Z�xZS)�InetTestBasec�l��t�����|jd|_dS�Nr�)r!rWrrSr"s �rrWzInetTestBase.setUp�s&���
���
�
�����N�1�%��	�	�	r?c�<�tj||j���dS)N��host)rrRrT�rVrFs  rrzInetTestBase.bindSock�s �����4�9�5�5�5�5�5�5r?)r]r^r_r�rTrWrr%r&s@rrOrO�sO�������+��D�&�&�&�&�&�6�6�6�6�6�6�6r?rOc��eZdZ	d�ZdS)�TCPTestBasec�T�tjtjtj��Sr<)rrPrBrUs rrzTCPTestBase.newSocket�rLr?NrMr`r?rrWrW��+������-�A�A�A�A�Ar?rWc��eZdZ	d�ZdS)�UDPTestBasec�T�tjtjtj��Sr<)rrPr(rUs rrzUDPTestBase.newSocket�s���}�V�^�V�->�?�?�?r?NrMr`r?rr[r[�s+������-�@�@�@�@�@r?r[c��eZdZ	d�ZdS)�UDPLITETestBasec�j�tjtjtjtj��Sr<)rrPr(rKrUs rrzUDPLITETestBase.newSocket�s���}�V�^�V�->��@V�W�W�Wr?NrMr`r?rr^r^�s+������1�X�X�X�X�Xr?r^c��eZdZ	d�ZdS)�SCTPStreamBasec�j�tjtjtjtj��Sr<)rrPrB�IPPROTO_SCTPrUs rrzSCTPStreamBase.newSocket�s%���}�V�^�V�-?�#�0�2�2�	2r?NrMr`r?rrara�s&������E�2�2�2�2�2r?rac��eZdZ	ejZdS)�
Inet6TestBaseN)r]r^r_r�HOSTv6rTr`r?rrere�s������+���D�D�Dr?rec��eZdZ	d�ZdS)�UDP6TestBasec�T�tjtjtj��Sr<)r�AF_INET6r(rUs rrzUDP6TestBase.newSocket�s���}�V�_�f�.?�@�@�@r?NrMr`r?rrhrh�rYr?rhc��eZdZ	d�ZdS)�UDPLITE6TestBasec�j�tjtjtjtj��Sr<)rrjr(rKrUs rrzUDPLITE6TestBase.newSocket�s���}�V�_�f�.?��AW�X�X�Xr?NrMr`r?rrlrl�s+������1�Y�Y�Y�Y�Yr?rlc�,���	d����fd�}d�}|r|n|S)Nc��dSr<r`)r+r,s  r�client_passz%skipWithClientIf.<locals>.client_pass�rr?c���tj���|��}t|t��s
�fd�|_|S)Nc����Sr<r`)rrps �r�<lambda>z3skipWithClientIf.<locals>.skipdec.<locals>.<lambda>s���;�r?)r��skip�
isinstance�type�client_skip)�obj�retvalrp�reasons  ��r�skipdecz!skipWithClientIf.<locals>.skipdec�sD���&���v�&�&�s�+�+���#�t�$�$�	7�!6�!6�!6�!6�F���
r?c�`�t|t��st|d��sd�|_|S)Nrwc��|Sr<r`)rs rrsz5skipWithClientIf.<locals>.noskipdec.<locals>.<lambda>s���r?)rurvrrw)rxs r�	noskipdecz#skipWithClientIf.<locals>.noskipdecs3���3��%�%�	*���m�)D�)D�	*�)�k�C�O��
r?r`)�	conditionrzr{r~rps `  @r�skipWithClientIfr��sV�����
�
�
�������
��� �.�7�7�Y�.r?c���	�fd�|D��}t|dd�d�|D����z��S)Nc�4��g|]}t�|���|��Sr`)r)�.0�namerxs  �r�
<listcomp>z requireAttrs.<locals>.<listcomp>s(���E�E�E��'�#�t�2D�2D�E�t�E�E�Er?�don't have �, c3�K�|]}|V��dSr<r`�r�r�s  r�	<genexpr>zrequireAttrs.<locals>.<genexpr>s"����*D�*D�D�4�*D�*D�*D�*D�*D�*Dr?)r��join)rx�
attributes�missings`  r�requireAttrsr�s^����F�E�E�E�
�E�E�E�G�������*D�*D�G�*D�*D�*D�!D�!D�D�F�F�Fr?c	��	d}d�|D��}|r#dd�d�|D����z}nVd�|D��}	tj|�}|���n&#t$r}t	|��}Yd}~nd}~wwxYwt|dud�d�d�|D����|����S)Nc�f�g|].}t|t���tt|���,|��/Sr`)ru�strrr�r�rxs  rr�z!requireSocket.<locals>.<listcomp>sP��B�B�B�s��#�s�#�#�B�,3�F�C�,@�,@�B�s�B�B�Br?r�r�c3�K�|]}|V��dSr<r`r�s  rr�z requireSocket.<locals>.<genexpr> s"����'A�'A���'A�'A�'A�'A�'A�'Ar?c�f�g|].}t|t��rtt|��n|��/Sr`)rur�r�rr�s  rr�z!requireSocket.<locals>.<listcomp>"sF��%�%�%��-7�s�C�,@�,@�I�G�F�C�(�(�(�c�%�%�%r?zcan't create socket({0}): {1}c3�4K�|]}t|��V��dSr<)r��r��os  rr�z requireSocket.<locals>.<genexpr>.s(����+�+��c�!�f�f�+�+�+�+�+�+r?)r�rr!rr�r��format)r+�errr��callargsr$r�s      r�
requireSocketr�s#����C�B�B�d�B�B�B�G����d�i�i�'A�'A��'A�'A�'A�A�A�A���%�%�#�%�%�%��	��
�x�(�A�

�G�G�I�I�I�I��	�	�	�	��a�&�&�C�C�C�C�C�C�����	����
��4��'�.�.��I�I�+�+�d�+�+�+�+�+�S�	2�	2�3�3�3s�A%�%
B�/B�Bc	�
�eZdZd�Zd�Zejedud��d���Zd�Z	d�Z
d�Zd	�Zd
�Z
ejejdkd��d
���Zejejd��d���Zejejdkd��ejejd��d�����Zd�Zd�Zd�Zejeed��d��ejeed��d��d�����Zejeed��d��d���Z ejeed��d ��d!���Z!ejeed"��d#��d$���Z"ejeed%��d&��d'���Z#d(�Z$d)�Z%ej&d*���Z'd+�Z(d,�Z)ejeed-��d.��d/���Z*ejeed0��d1��d2���Z+ejeed0��d1��d3���Z,ejeed4��d5��d6���Z-ejeed4��d5��d7���Z.d8�Z/d9�Z0d:�Z1d;�Z2d<�Z3d=�Z4d>�Z5ejejdkd��d?���Z6ejejdkd��ejeed@��dA��dB�����Z7dC�Z8dD�Z9ejej:dE��dF��dG���Z;dH�Z<dI�Z=dJ�Z>dK�Z?dL�Z@dM�ZAdN�ZBdO�ZCdP�ZDdQ�ZEdR�ZFej&dS���ZGejejdT��dU���ZHejejdT��dV���ZIdW�ZJejejdT��ejejdXkdY��ejeKdZ��ejeed��d[��d\���������ZLejejdT��ejejdXkd]��d^�����ZMejejdT��ejejdXkdY��ejeKdZ��ejeed��d[��d_���������ZNejejdT��ejejdXkd]��d`�����ZOda�ZPdb�ZQdc�ZRejeedd��de��df���ZSdg�ZTdh�ZUdi�ZVdj�ZWdk�ZXejejdkdl��dm���ZYdn�ZZdo�Z[dp�Z\dq�Z]dr�Z^ds�Z_dS)t�GeneralModuleTestsc���ddl}|�tj|ju��tj��}|�|tj��|���dSr�)�_socket�
assertTruer�
SocketType�assertIsInstancer!)rVr�r$s   r�test_SocketType_is_socketobjectz2GeneralModuleTests.test_SocketType_is_socketobject6s\����������)�W�^�;�<�<�<��M�O�O�����a��!2�3�3�3�	���	�	�	�	�	r?c���tjtjtj��}|5|�d|���zt|����|�dtjzt|����|�dtjzt|����|�dt|����|�dt|����|�d��|�dt|����|�t|�	����t|����ddd��n#1swxYwY|�dt|����|�dt|����dS)	Nzfd=%iz	family=%sztype=%szproto=0�raddr��	127.0.0.1r�laddrz[closed])
rrPrB�assertIn�fileno�repr�assertNotInrrr�r��rVr$s  r�	test_reprzGeneralModuleTests.test_repr=s����M�&�.�&�*<�=�=��
�	9�	9��M�M�'�A�H�H�J�J�.��Q���8�8�8��M�M�+���6��Q���@�@�@��M�M�)�f�&8�8�$�q�'�'�B�B�B��M�M�)�T�!�W�W�-�-�-����W�d�1�g�g�.�.�.�
�F�F�#�$�$�$��M�M�'�4��7�7�+�+�+��M�M�#�a�m�m�o�o�.�.��Q���8�8�8�	9�	9�	9�	9�	9�	9�	9�	9�	9�	9�	9����	9�	9�	9�	9�	
�
�
�j�$�q�'�'�*�*�*�����$�q�'�'�*�*�*�*�*s�EF�F�FNzneed _socket modulec	���tjtjtj��}d|����d|j�d|j�d|j�d�	}|�t|��|��|�
��n#|�
��wxYwd|j�d|j�d|j�d�}|�t|��|��dS)Nz<socket object, fd=z	, family=z, type=z, proto=�>z<socket object, fd=-1, family=)r�rrPrBr��familyrv�protor�r�r!)rVr$�expecteds   r�test_csocket_reprz$GeneralModuleTests.test_csocket_reprKs����N�7�?�G�,?�@�@��	��8�8�:�:�:�:�q�x�x�x���������B�H����T�!�W�W�h�/�/�/�
�G�G�I�I�I�I��A�G�G�I�I�I�I����I��x�x�x���������2������a���(�+�+�+�+�+s�AB�B(c��tjtjtj��5}t|��}|�|���|�����ddd��n#1swxYwYd}t
j��	|���|�d��dS#t$rYdSwxYw)NzSocket proxy still exists)
rrPrBrr�r�r�
gc_collect�fail�ReferenceError)rVr$�ps   r�test_weakrefzGeneralModuleTests.test_weakrefXs��
�]�6�>�6�+=�
>�
>�	5�!��a���A����Q�X�X�Z�Z������4�4�4�	5�	5�	5�	5�	5�	5�	5�	5�	5�	5�	5����	5�	5�	5�	5�
�������	3�
�H�H�J�J�J�
�I�I�1�2�2�2�2�2���	�	�	��D�D�	���s$�A
B�B�B�!C�
C�Cc�J�d}|�t|dz���5t�#1swxYwY|�t|dz���5tj�#1swxYwY|�t|dz���5tj�#1swxYwYdS)Nz$Error raising socket exception (%s).r�r�z
socket.herrorzsocket.gaierror)�assertRaisesrr�herror�gaierrorr�s  r�testSocketErrorz"GeneralModuleTests.testSocketErrores��4��
�
�
�w�C�)�O�
�
<�
<�	�	��M�	�	�	�	����	�	�	�	�
�
�
�w�C�/�,A�
�
B�
B�	 �	 ��-��	 �	 �	 �	 ����	 �	 �	 �	 �
�
�
�w�C�2C�,C�
�
D�
D�	"�	"��/�!�	"�	"�	"�	"����	"�	"�	"�	"�	"�	"s0�*�.�.�
A!�!A%�(A%�
B�B�Bc�
	�tjtjtj��}|�|j��|�d��|���}|�t��5}|�	d|��ddd��n#1swxYwY|�
t|j��d��|�t��5}|�	d|��ddd��n#1swxYwY|�
t|j��d��|�t��5}|�	dd��ddd��n#1swxYwY|�
dt|j����|�t��5}|�	dd|��ddd��n#1swxYwY|�
t|j��d��|�t��5}|�	dd|��ddd��n#1swxYwY|�
t|j��d��|�t��5}|�	ddd��ddd��n#1swxYwY|�
dt|j����|�t��5}|�	dd	|��ddd��n#1swxYwY|�t��5}|�	ddd��ddd��n#1swxYwY|�t��5}|�	d��ddd��n#1swxYwY|�
d
t|j����|�t��5}|�	dd|d��ddd��n#1swxYwY|�
dt|j����dS)
N)�ru☠z*a bytes-like object is required, not 'str'y@z.a bytes-like object is required, not 'complex'�fooznot NoneTyper�barz	(1 given)�z	(4 given))rrPr(rqr!rrr�r�r��sendtor�r��	exceptionr�)rVr$�sockname�cms    r�testSendtoErrorsz#GeneralModuleTests.testSendtoErrorsos@���M�&�.�&�*;�<�<������� � � �	���w�����=�=�?�?��
�
�
�y�
)�
)�	)�R�
�H�H�X�x�(�(�(�	)�	)�	)�	)�	)�	)�	)�	)�	)�	)�	)����	)�	)�	)�	)�����R�\�*�*�E�	G�	G�	G�
�
�
�y�
)�
)�	#�R�
�H�H�R��"�"�"�	#�	#�	#�	#�	#�	#�	#�	#�	#�	#�	#����	#�	#�	#�	#�����R�\�*�*�I�	K�	K�	K�
�
�
�y�
)�
)�	#�R�
�H�H�V�T�"�"�"�	#�	#�	#�	#�	#�	#�	#�	#�	#�	#�	#����	#�	#�	#�	#��
�
�n�S���%6�%6�7�7�7�
�
�
�y�
)�
)�	,�R�
�H�H�X�q�(�+�+�+�	,�	,�	,�	,�	,�	,�	,�	,�	,�	,�	,����	,�	,�	,�	,�����R�\�*�*�E�	G�	G�	G�
�
�
�y�
)�
)�	&�R�
�H�H�R��H�%�%�%�	&�	&�	&�	&�	&�	&�	&�	&�	&�	&�	&����	&�	&�	&�	&�����R�\�*�*�I�	K�	K�	K�
�
�
�y�
)�
)�	&�R�
�H�H�V�Q��%�%�%�	&�	&�	&�	&�	&�	&�	&�	&�	&�	&�	&����	&�	&�	&�	&��
�
�n�c�"�,�&7�&7�8�8�8�
�
�
�y�
)�
)�	.�R�
�H�H�V�U�H�-�-�-�	.�	.�	.�	.�	.�	.�	.�	.�	.�	.�	.����	.�	.�	.�	.�
�
�
�y�
)�
)�	)�R�
�H�H�V�T�4�(�(�(�	)�	)�	)�	)�	)�	)�	)�	)�	)�	)�	)����	)�	)�	)�	)��
�
�y�
)�
)�	�R�
�H�H�V����	�	�	�	�	�	�	�	�	�	�	����	�	�	�	��
�
�k�3�r�|�#4�#4�5�5�5�
�
�
�y�
)�
)�	-�R�
�H�H�V�Q��!�,�,�,�	-�	-�	-�	-�	-�	-�	-�	-�	-�	-�	-����	-�	-�	-�	-��
�
�k�3�r�|�#4�#4�5�5�5�5�5s��B*�*B.�1B.�7D�D�!D�'F
�
F�F�G;�;G?�G?�I,�,I0�3I0�9K�K!�$K!�*M�M�M�3N�N�N�<O�O"�%O"�+Q�Q�Qc��tjtjrtjtjtjtjtjtjtj	tj
dSr<)rrP�has_ipv6rjrBr(r�SOCK_RDMr2�
SOL_SOCKET�SO_REUSEADDRrUs r�testCrucialConstantsz'GeneralModuleTests.testCrucialConstants�s[������?�	��O�O�����������������������r?c�j�tjtjtjrtjdSdSr<)r�IPPROTO_TCP�IPPROTO_UDPr��IPPROTO_IPV6rUs r�testCrucialIpProtoConstantsz.GeneralModuleTests.testCrucialIpProtoConstants�s7���������?�	 ������	 �	 r?�nt�Windows specificc���tjtjtjtjtjtjtjtjdSr<)	r�IPPROTO_ICLFXBM�
IPPROTO_ST�IPPROTO_CBT�IPPROTO_IGP�IPPROTO_RDP�IPPROTO_PGM�IPPROTO_L2TPrcrUs r�testWindowsSpecificConstantsz/GeneralModuleTests.testWindowsSpecificConstants�sP���������������������������r?zWASI is missing these methodsc�~�gd�}|D]5}ttj|��s|�d|�d����6dS)N)�_acceptrrr��
connect_ex�getpeernamer�rT�recvfrom�
recvfrom_intor��
setsockopt�shutdownzsocket method z is missing)rrr�)rV�namesr�s   r�test_socket_methodsz&GeneralModuleTests.test_socket_methods�sa��
�
�
��
�	>�	>�D��6�=�$�/�/�
>��	�	�<�4�<�<�<�=�=�=��	>�	>r?�darwin�macOS specific test�IPv6 required for this testc�r�hd�}|D]/}|�tt|��d|�d����0dS)N>�
IPV6_RTHDR�IPV6_TCLASS�IPV6_DSTOPTS�IPV6_HOPOPTS�IPV6_NEXTHOP�IPV6_PATHMTU�IPV6_PKTINFO�
IPV6_CHECKSUM�
IPV6_DONTFRAG�
IPV6_HOPLIMIT�IPV6_RECVRTHDR�IPV6_RECVTCLASS�IPV6_RECVDSTOPTS�IPV6_RECVHOPOPTS�IPV6_RECVPATHMTU�IPV6_RECVPKTINFO�IPV6_USE_MIN_MTU�IPV6_RECVHOPLIMIT�IPV6_RTHDRDSTOPTS�IPV6_RTHDR_TYPE_0zMissing RFC3542 socket option '�')r�rr)rV�opts�opts   r�test3542SocketOptionsz(GeneralModuleTests.test3542SocketOptions�sd��
�
�
��,�	�	�C��O�O����$�$�&N��&N�&N�&N�
�
�
�
�	�	r?c��tj��}	tj|��}n%#t$r|�d��YnwxYw|�|�d��dkd��	tj|��\}}}n%#t$r|�d��YnwxYw||g|z}tj|��}||vr+|�	d|�dt|���d���dSdS)N�name lookup failurer�rzError resolving host to ip.z1Error testing host resolution mechanisms. (fqdn: z, all: �))r�gethostname�
gethostbynamerrtr��find�
gethostbyaddr�getfqdnr�r�)rV�hostname�ip�hname�aliases�ipaddrs�all_host_names�fqhns        r�testHostnameResz"GeneralModuleTests.testHostnameRes�s<���%�'�'��	1��%�h�/�/�B�B���	1�	1�	1��M�M�/�0�0�0�0�0�	1����	
����������)�+H�I�I�I�	1�&,�&:�2�&>�&>�#�E�7�G�G���	1�	1�	1��M�M�/�0�0�0�0�0�	1����#�E�*�W�4���~�b�!�!���~�%�%��I�I�I�Y]�Y]�Y]�_c�dr�_s�_s�_s�_s�t�u�u�u�u�u�&�%s!�*�A�A�=B�B8�7B8c��tjddfD]*}|�tj|��|���+tjfD]0}|�|tj|��d���1dS)Nz10.0.0.1�255.255.255.255r�)r�HOSTv4r�rrr�r
)rVrrTs   r�test_host_resolutionz'GeneralModuleTests.test_host_resolution�s���"�)�:�7H�I�	?�	?�D����V�1�$�7�7��>�>�>�>�#�)�*�	?�	?�D��M�M�$�� 4�T� :� :�1� =�>�>�>�>�	?�	?r?c�4�d}dD]�}|�t|���5tj|��ddd��n#1swxYwY|�t|���5tj|��ddd��n#1swxYwY��dS)Nz[resolving an invalid IP address did not raise OSError; can be caused by a broken DNS server)z0.1.1.~1z1+.1.1.1z::1qz::1::2z1:1:1:1:1:1:1:1:1r�)r�rrrr
)rV�explanationrs   r� test_host_resolution_bad_addressz3GeneralModuleTests.test_host_resolution_bad_address�s&��
3�	�*�	+�	+�D��"�"�7��"�5�5�
+�
+��$�T�*�*�*�
+�
+�
+�
+�
+�
+�
+�
+�
+�
+�
+����
+�
+�
+�
+��"�"�7��"�<�<�
+�
+��$�T�*�*�*�
+�
+�
+�
+�
+�
+�
+�
+�
+�
+�
+����
+�
+�
+�
+��		+�	+s#�A�A	�A	�+B�B	�B	�sethostnameztest needs socket.sethostname()r
ztest needs socket.gethostname()c��tj��}	tjd��nC#t$r6}|jtjkr|�d��n�Yd}~nd}~wwxYw	|�tj��d��tjd��|�tj��d��tj|��dS#tj|��wxYw)N�newztest should be run as rootsbarr�)rr
rr�errno�EPERMrtr�)rV�oldhnr�s   r�test_sethostnamez#GeneralModuleTests.test_sethostnames���"�$�$��	���u�%�%�%�%���	�	�	��w�%�+�%�%��
�
�:�;�;�;�;��<�;�;�;�;�����	����
	&����V�/�1�1�5�9�9�9���v�&�&�&����V�/�1�1�5�9�9�9���u�%�%�%�%�%��F��u�%�%�%�%���s!�*�
A*�,A%�%A*�.A"C&�&C<�if_nameindexz$socket.if_nameindex() not available.c���tj��}|D]�\}}|�|t��|�|t��|�|d��tj|��}|�|t��|�||��tj|��}|�|t��|�||����dSr�)	rr%r��intr��
assertGreater�if_nametoindexr��if_indextoname)rV�
interfaces�indexr��_index�_names      r�testInterfaceNameIndexz)GeneralModuleTests.testInterfaceNameIndex$s����(�*�*�
�%�
	*�
	*�K�E�4��!�!�%��-�-�-��!�!�$��,�,�,����u�a�(�(�(��*�4�0�0�F��!�!�&�#�.�.�.����U�F�+�+�+��)�%�0�0�E��!�!�%��-�-�-����T�5�)�)�)�)�
	*�
	*r?r*z&socket.if_indextoname() not available.c��|�ttjd��|�ttjd��|�ttjddz��|�t
tjd��t
td��r�ttj����}|D]X}|dz}||vrM|�ttf��5tj|��ddd��n#1swxYwY�YdD]U}||vrM|�ttf��5tj|��ddd��n#1swxYwY�TdSdS)	Nr���r����	_DEADBEEFr%�)���l����)	r�rrr*�
OverflowErrorr�r�dictr%)rV�indicesr,�index2s    r�testInvalidInterfaceIndexToNamez2GeneralModuleTests.testInvalidInterfaceIndexToName4s���	
���'�6�#8�!�<�<�<����-��)>��C�C�C����-��)>��4��H�H�H����)�V�%:�K�H�H�H��6�>�*�*�
	5��6�.�0�0�1�1�G� �
6�
6��������(�(��*�*�M�7�+C�D�D�6�6��-�f�5�5�5�6�6�6�6�6�6�6�6�6�6�6����6�6�6�6��)�
5�
5����'�'��*�*�M�7�+C�D�D�5�5��-�e�4�4�4�5�5�5�5�5�5�5�5�5�5�5����5�5�5�5��
	5�
	5�
5�
5s$�?D � D$	�'D$	�E6�6E:	�=E:	r)z&socket.if_nametoindex() not available.c��|�ttjd��|�ttjd��dS)Nrr3)r�r�rr)rrUs r�testInvalidInterfaceNameToIndexz2GeneralModuleTests.testInvalidInterfaceNameToIndexGs@��	
���)�V�%:�A�>�>�>����'�6�#8�+�F�F�F�F�Fr?�getrefcountztest needs sys.getrefcount()c��	tjt��}tjtd��dS#t
$r9tjt��|kr|�d��YdSYdSwxYw)Nrz$socket.getnameinfo loses a reference)�sysr=r]r�getnameinfor�r�)rV�origs  r�testRefCountGetNameInfoz*GeneralModuleTests.testRefCountGetNameInfoMs���	B��?�8�,�,�D���x��*�*�*�*�*���	B�	B�	B���x�(�(�D�0�0��	�	�@�A�A�A�A�A�A�1�0�0�	B���s�37�<A:�9A:c�T�	tjdd��dS#t$rYdSwxYw)N)rlrrrr)rr@rrUs r�testInterpreterCrashz'GeneralModuleTests.testInterpreterCrashYsB��	���~�q�1�1�1�1�1���	�	�	��D�D�	���s��
'�'c��tjdtjdtjdtjdi}|���D]�\}}d|zdz
}dD]3}|�||z||||z����|z���4||��}|�||z|��|�t|d����dS)N� �r�)rr��i��r�igE#i2Tvl)	r�htonl�ntohl�htons�ntohs�itemsr�r�r6)rV�sizes�func�size�maskrL�swappeds       r�testNtoHzGeneralModuleTests.testNtoHas�����r�6�<����r�6�<��5���+�+�-�-�	:�	:�J�D�$��t�G�q�=�D�G�
F�
F��� � ��T��4�4���Q�t�V���+=�+=��+D�E�E�E�E��d�4�j�j�G����W�t�^�T�2�2�2����m�T�5�9�9�9�9�	:�	:r?c�n�ddl}gd�}|dgz}dddddzg}||jdz
|jdzgzd	|jgz}|D]*}tj|��tj|���+|D]*}tj|��tj|���+|D]N}|�ttj|��|�ttj|���O|D]N}|�ttj|��|�ttj|���OdS)
Nr)rr�r�rHr5r1���r4r�r2�)
�	_testcapi�INT_MIN�INT_MAXrrLrKrJrIr�r6)rVrW�
s_good_values�
l_good_values�l_bad_values�s_bad_values�ks       r�testNtoHErrorsz!GeneralModuleTests.testNtoHErrorsosZ������)�)�)�
�%���4�
��B��q�$�w�/���
�
�q�
 �)�"3�A�"5�6�
7�
�i�'�(�
)�	�
�	�	�A��L��O�O�O��L��O�O�O�O��	�	�A��L��O�O�O��L��O�O�O�O��	>�	>�A����m�V�\�1�=�=�=����m�V�\�1�=�=�=�=��	>�	>�A����m�V�\�1�=�=�=����m�V�\�1�=�=�=�=�	>�	>r?c�L�|j}tj�d��stjdvrd}nd}|D])}	t	j|d��}n#t$rY�&wxYwt�ttd��rtj��dkr t	j|��}|||��	t	j|d��}|||��n#t$rd}YnwxYwtj
s|t	j|��|��|t	j|d��|��|�|t	j|d��|��|�ttjd	��|�ttjd
��dS)N)�freebsd�netbsd�gnukfreebsd)�linuxr�)�daytime�qotd�domain)�echorerg�tcp�getandroidapilevel��udpr1rV)r�r?�platform�
startswithr�
getservbynamerrrjr�
is_android�
getservbyportr�r6)rV�eq�services�servicerS�port2�udpports       r�
testGetServByz GeneralModuleTests.testGetServBy�s���
�
��
�L�#�#�$H�I�I�	5��|�2�2�2�5�H�H�4�H��	�	�G�
��+�G�U�;�;������
�
�
���
�����M���1�2�2�	��&�(�(�B�.�.��(��1�1�E��B�t�U�O�O�O�	��*�7�E�:�:�G�
�B�w��������	�	�	��G�G�G�	�����!�	5��B�v�#�E�*�*�G�4�4�4�
��6���e�,�,�g�6�6�6����B�v�#�G�U�3�3�W�=�=�=����-��)=�r�B�B�B����-��)=�u�E�E�E�E�Es#�A�
A#�"A#�:C�C+�*C+c���|�tj��d��tj��5}|�|���d��ddd��n#1swxYwYt	d��5|�tj��d��tj��5}|�|���d��ddd��n#1swxYwYtjd��|�tj��d��tj��5}|�|���d��ddd��n#1swxYwYddd��n#1swxYwY|�ttjd��|�ttjd��dS)N�
r1�spam)	r�rrF�
gettimeoutrJrGr��
ValueErrorr�)rVr$rFs   r�testDefaultTimeoutz%GeneralModuleTests.testDefaultTimeout�s���	
����1�3�3�T�:�:�:�
�]�_�_�	3�����Q�\�\�^�^�T�2�2�2�	3�	3�	3�	3�	3�	3�	3�	3�	3�	3�	3����	3�	3�	3�	3�&�b�
)�
)�		:�		:����V�5�7�7��<�<�<�����
8�D�� � ����!2�!2�B�7�7�7�
8�
8�
8�
8�
8�
8�
8�
8�
8�
8�
8����
8�
8�
8�
8�
�$�T�*�*�*����V�5�7�7��>�>�>�����
:�D�� � ����!2�!2�D�9�9�9�
:�
:�
:�
:�
:�
:�
:�
:�
:�
:�
:����
:�
:�
:�
:�		:�		:�		:�		:�		:�		:�		:�		:�		:�		:�		:����		:�		:�		:�		:�	
���*�f�&>��C�C�C�	
���)�V�%=�v�F�F�F�F�Fsl�)A0�0A4�7A4�
;F�)C:�.F�:C>	�>F�C>	�AF�)F�<F�F	�F�F	�F�F#�&F#�	inet_atonztest needs socket.inet_aton()c��|�dtjd����|�dtjd����dS)N��0.0.0.0�����r)r�rr~rUs r�testIPv4_inet_aton_fourbytesz/GeneralModuleTests.testIPv4_inet_aton_fourbytes�sM��
	
����F�$4�Y�$?�$?�@�@�@�����F�$4�5F�$G�$G�H�H�H�H�Hr?�	inet_ptonztest needs socket.inet_pton()c�b����ddlm}m�m���fd�}�fd�}��d|d������d|d������d	|d
������d|d������d
|d����t
s||d��||d��||d��||d��||d����d|d������d|d������d	|d
������d
|d����||d��||d��||d��||d��||d��dS)Nr)r~r�rPc�����|��Sr<r`)�arPr�s ��rrsz5GeneralModuleTests.testIPv4toString.<locals>.<lambda>�����i�i���+�+�r?c�J����ttf||��Sr<�r�rr|�rOr�rVs  �rrsz5GeneralModuleTests.testIPv4toString.<locals>.<lambda>��#���t�'8�'8�
�j�!�4��(
�(
�r?r�r�s��z255.0.255.0s����z170.170.170.170��1.2.3.4r�rz0.0.0.z	300.0.0.0za.0.0.0z	1.2.3.4.5�::1)rr~r�rPr�r)rVr�g�
assertInvalidrPr�s`   @@r�testIPv4toStringz#GeneralModuleTests.testIPv4toString�s7�����	>�=�=�=�=�=�=�=�=�=�+�+�+�+�+��
�
�
�
�
�	
���,�a�a�	�l�l�;�;�;����,�a�a�
�.>�.>�?�?�?����,�a�a�0A�.B�.B�C�C�C����,�a�a�	�l�l�;�;�;����,�a�a�0A�.B�.B�C�C�C��	'��M�!�X�&�&�&��
�a��%�%�%��
�a��#�#�#��
�a��%�%�%��
�a��������,�a�a�	�l�l�;�;�;����,�a�a�
�.>�.>�?�?�?����,�a�a�0A�.B�.B�C�C�C����,�a�a�0A�.B�.B�C�C�C��
�a��"�"�"��
�a��%�%�%��
�a��#�#�#��
�a��%�%�%��
�a������r?c�������	ddlm�m�m}|s��d��n%#t
$r��d��YnwxYwtjdkrE	��d��n7#t$r*}|j	dkr��d��Yd}~nd}~wwxYw��fd	����fd
�}��
d�d������
d�d������
d
�d������
d�d������
d�d������
d�d����|d��|d��|d��|d��|d��|d��|d��|d��ts|d����
d�d������
d �d!������
d"�d#����|d$��|d%��|d&��|d'��|d(��|d)��dS)*Nr)r�rjr��IPv6 not available�+could not import needed symbols from socket�win32�::�&'�IPv6 might not be supportedc�����|��Sr<r`)r�rjr�s ��rrsz5GeneralModuleTests.testIPv6toString.<locals>.<lambda>����i�i��!�,�,�r?c�J����ttf�|��Sr<r��r�rrVs ��rrsz5GeneralModuleTests.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�rjr�rt�ImportErrorr?rmr�winerrorr�r)rVr�r�r�rjrr�s`   @@@r�testIPv6toStringz#GeneralModuleTests.testIPv6toString�st������	I�<�<�<�<�<�<�<�<�<�<��
4��
�
�2�3�3�3����	I�	I�	I��M�M�G�H�H�H�H�H�	I�����<�7�"�"�
A��	�(�D�)�)�)�)���
A�
A�
A��:��&�&��M�M�"?�@�@�@����������
A����
-�,�,�,�,��
�
�
�
�
�
�	
����q�q��w�w�/�/�/�����q�q��y�y�1�1�1����3�Q�Q�u�X�X�>�>�>����O�
�A�4�5�5�	
�	
�	
�	
���S�
�A�%�&�&�	
�	
�	
�	
���;�Q�Q�x�[�[�I�I�I��
�h�����
�e�����
�g�����
�j�!�!�!��
�m�$�$�$��
�m�$�$�$��
�n�%�%�%��
�)�*�*�*��	.��M�,�-�-�-����;�
�A����	
�	
�	
�	
���C�
�A�%�&�&�	
�	
�	
�	
���O�
�A�2�3�3�	
�	
�	
�	�
�'�(�(�(��
�n�%�%�%��
�m�$�$�$��
�-�.�.�.��
�m�$�$�$��
�/�0�0�0�0�0�'�!(�A
�	A
�A+�+
B�5 B�B�	inet_ntopztest needs socket.inet_ntop()c�(����ddlm}m�m���fd�}�fd�}��d|d������d|d������d	|d
������d|d����||d
��||d��||d����d|td��������d|d������d|d������d	|d
����||d
��||d��||d����d|td������dS)Nr)�	inet_ntoar�rPc�����|��Sr<r`)r�rPr�s ��rrsz5GeneralModuleTests.testStringToIPv4.<locals>.<lambda>9r�r?c�J����ttf||��Sr<r�r�s  �rrsz5GeneralModuleTests.testStringToIPv4.<locals>.<lambda>:r�r?z1.0.1.0sz
170.85.170.85s�U�Urr�r�r�ssr�)rr�r�rPr��	bytearray)rVrr�r�rPr�s`   @@r�testStringToIPv4z#GeneralModuleTests.testStringToIPv45s������	>�=�=�=�=�=�=�=�=�=�+�+�+�+�+��
�
�
�
�
�	
����A�A�&9�$:�$:�;�;�;�����!�!�,?�*@�*@�A�A�A����*�A�A�.A�,B�,B�C�C�C�����A�A�&9�$:�$:�;�;�;��
�a��%�%�%��
�a��%�%�%��
�a��&�&�&�����!�!�I�6I�,J�,J�*K�*K�L�L�L�����A�A�&9�$:�$:�;�;�;�����!�!�,?�*@�*@�A�A�A����*�A�A�.A�,B�,B�C�C�C��
�a��%�%�%��
�a��%�%�%��
�a��&�&�&�����!�!�I�6I�,J�,J�*K�*K�L�L�L�L�Lr?c������	ddlm�m�m}|s��d��n%#t
$r��d��YnwxYwtjdkrE	��d��n7#t$r*}|j	dkr��d��Yd}~nd}~wwxYw��fd	����fd
�}��
d�d������
d�d
������
d�d������
d�td
������|d��|d��|d��dS)Nr)r�rjr�r�r�r�r�r�r�c�����|��Sr<r`)r�rjr�s ��rrsz5GeneralModuleTests.testStringToIPv6.<locals>.<lambda>`r�r?c�J����ttf�|��Sr<r�r�s ��rrsz5GeneralModuleTests.testStringToIPv6.<locals>.<lambda>ar�r?r�r�sz!aef:b01:506:1001:ffff:9997:55:170s
�����Upsss)rr�rjr�rtr�r?rmrr�r�r�)rVr�r�r�rjrr�s`   @@@r�testStringToIPv6z#GeneralModuleTests.testStringToIPv6Os�������	I�<�<�<�<�<�<�<�<�<�<��
4��
�
�2�3�3�3����	I�	I�	I��M�M�G�H�H�H�H�H�	I�����<�7�"�"�
A��	�(�L�1�1�1�1���
A�
A�
A��:��&�&��M�M�"?�@�@�@����������
A����
-�,�,�,�,��
�
�
�
�
�
�	
����q�q����/�/�/�������"8� 9� 9�:�:�:����/�
�A�Q�R�R�	
�	
�	
�	
������)�,B�"C�"C� D� D�E�E�E��
�l�#�#�#��
�l�#�#�#��
�k�"�"�"�"�"r�c��tjtjtj��}|�|j��tj��D]a}tj��}	|�	d|f��n3#t$r&}|jtjks|dkr�Yd}~�Zd}~wwxYw|�
��}	tjtj����}n%#t$r|�d��YnwxYw|�|dd|fd|dz��|�|d|��dS)Nr��rrz
%s invalidr�)rrPrBrqr!�	itertools�countr�find_unused_portrrrr!�
EADDRINUSEr�rr
rtr�r�)rVrFrLrSr�r��
my_ip_addrs       r�testSockNamezGeneralModuleTests.testSockNamessp���}�V�^�V�-?�@�@������
�#�#�#���"�"�	�	�A� �1�3�3�D�
��	�	�9�d�+�,�,�,�
���	�
�
�
��7�e�.�.�.�!�q�&�&��39�&�&�&�&�����
�������!�!��	1��-�f�.@�.B�.B�C�C�J�J���	1�	1�	1��M�M�/�0�0�0�0�0�	1����	
�
�
�d�1�g�	�:�6��t�A�w�8N�O�O�O�����a��$�'�'�'�'�'s*�-B�
B6�B1�1B6�%C4�4D�Dc��tjtjtj��}|�|j��|�tjtj��}|�|dkd��dS)Nrzinitial mode is reuse)	rrPrBrqr!�
getsockoptr�r��assertFalse�rVrF�reuses   r�testGetSockOptz!GeneralModuleTests.testGetSockOpt�sh���}�V�^�V�-?�@�@������
�#�#�#����� 1�6�3F�G�G������!��%<�=�=�=�=�=r?c�j�tjtjtj��}|�|j��|�tjtjd��|�tjtj��}|�	|dkd��dS)Nr�rzfailed to set reuse mode)
rrPrBrqr!r�r�r�r�r�r�s   r�testSetSockOptz!GeneralModuleTests.testSetSockOpt�s����}�V�^�V�-?�@�@������
�#�#�#�����)�6�+>��B�B�B����� 1�6�3F�G�G������!��%?�@�@�@�@�@r?c���tjtjtj��5}|�d��ddd��n#1swxYwY|�t
|jd��dS)Nr��spam)rrPrBr�r�rr�rUs  r�testSendAfterClosez%GeneralModuleTests.testSendAfterClose�s���
�]�6�>�6�+=�
>�
>�	�$��O�O�A����	�	�	�	�	�	�	�	�	�	�	����	�	�	�	����'�4�9�g�6�6�6�6�6s�A�A�Ac���tj��}|�tjdf��tj|���������	|���|�d��dS#t$r<}|�|jtj	tj
f��Yd}~dSd}~wwxYw)Nr�r�z#close() should raise EBADF/ENOTSOCK)rrr�
_LOCALHOSTr�r!r�rr�r!�EBADF�ENOTSOCK)rVrFr�s   r�testCloseExceptionz%GeneralModuleTests.testCloseException�s����}�����	�	�6�$�a�(�)�)�)��
�T�[�[�]�]�+�+�+�1�1�3�3�3�	=��J�J�L�L�L�

�I�I�;�<�<�<�<�<��	�	D�	D�	D��M�M�#�)�e�k�5�>�%B�C�C�C�C�C�C�C�C�C�����	D���s�/B�
C �$1C�C c��tjtjtj��5}|�|jtj��ttd��r?|�|jtjtjztjf��n%|�|jtj��|�|j	d��ddd��dS#1swxYwYdS)N�SOCK_CLOEXECr)
rrPrBr�r�rr�rvr�r�rUs  r�testNewAttributesz$GeneralModuleTests.testNewAttributes�s���]�6�>�6�+=�
>�
>�	,�$����T�[�&�.�9�9�9��v�~�.�.�
@��
�
�d�i�%�1�F�4G�G�%�1�3�4�4�4�4�� � ���F�,>�?�?�?����T�Z��+�+�+�	,�	,�	,�	,�	,�	,�	,�	,�	,�	,�	,�	,����	,�	,�	,�	,�	,�	,s�B:C1�1C5�8C5c�0�tj��}|�|j��tj��}|dz}|dz
}|�t|jt|f��|�t|jt|f��tj
��D]g}tj��}	|�t|f��dS#t$r&}|jtj
ks|dkr�Yd}~�`d}~wwxYwdS)NrVr�)rrqr!rr�r�r6rrr�r�r�rr!r�)rVrFrS�big_port�neg_portrLr�s       r�test_getsockaddrargz&GeneralModuleTests.test_getsockaddrarg�s���}��������
�#�#�#��-�/�/���%�<���%�<�����-���T�8�4D�E�E�E����-���T�8�4D�E�E�E���"�"�	�	�A� �1�3�3�D�
��	�	�4��,�'�'�'�
����	�
�
�
��7�e�.�.�.�!�q�&�&��39�&�&�&�&�����
����		�	s�C#�#
D�-D�Dc�~�|�ttjd����|�ttd����|�ttd����|�ttd����|�ttd����tj��}|�|j��|�t|jdd��|�tjd��dS)Nr�
SIO_RCVALL�	RCVALL_ON�
RCVALL_OFF�SIO_KEEPALIVE_VALSr1)r��dr�)	r�rrrqr!r�r|rr�r�s  r�test_sock_ioctlz"GeneralModuleTests.test_sock_ioctl�s��������
�w�7�7�8�8�8�������5�5�6�6�6�������4�4�5�5�5�������5�5�6�6�6������(<�=�=�>�>�>��M�O�O������� � � ����*�a�g�r�4�8�8�8�	����)�=�9�9�9�9�9r?�SIO_LOOPBACK_FAST_PATHz1Loopback fast path support required for this testc�f�tj��}|�|j��	|�tjd��n5#t
$r(}d}|j|kr|�d���d}~wwxYw|�t|jtjd��dS)NTi='zQSIO_LOOPBACK_FAST_PATH is defined but doesn't implemented in this Windows version)
rrqr!rr�rr�rtr�r�)rVr$�exc�
WSAEOPNOTSUPPs    r�test_sio_loopback_fast_pathz.GeneralModuleTests.test_sio_loopback_fast_path�s���
�M�O�O������� � � �	�
�G�G�F�1�4�8�8�8�8���	�	�	�!�M��|�}�,�,��
�
�L�M�M�M������	����	
���)�Q�W�f�.K�T�R�R�R�R�Rs� A�
B�#A=�=Bc��	tjdd��nB#tj$r0}|jtjkr|�d���d}~wwxYwtjtd��D]%}|�t|��d���&tjdd��tjdd��tjdd��tj
rtjdd��ttd��rtj
��dkrtjtd	��tjtd��tjtd��tjtdtjtj��}|D�]	\}}}}}|�|tj��|�t!|��d
|jz��|�t%|��t%|j����|�|tj��|�t!|��d|jz��|�t%|��t%|j������tjtddtj��}|D](\}}}}}|�|tj���)tjtdddtj��tjtddddtj��tjddtjtjdtj��tjtd��}tjtd�
��}	|�||	��tjtdtj��}tjtdtj���}	|�||	��tjtddtj��}tjtdtj���}	|�||	��tjtdddtj��}tjtdtj���}	|�||	��tjtddddtj��}tjtdtj���}	|�||	��tjddtjtjdtj��}tjddtjtjdtj���}	|�||	��|�t.tjdd��ttd��r<	tjdddddtj��dS#tj$rYdSwxYwdS)N�	localhost�Pzbuggy libc versionr�r�r�rjrk�http�<AddressFamily.AF_INET: %r>�<SocketKind.SOCK_STREAM: %r>r)rTrS�r��rv)r�)�flags)rTrSr�rvr�r�u��AI_NUMERICSERV)r�getaddrinfor�r!�EAI_SERVICErtr�r��lenr�IPV6_ENABLEDrr?rjrPrBr��valuer��SOL_TCP�
AI_PASSIVE�	AF_UNSPECr��UnicodeEncodeErrorr�)
rVr��info�infosr�rvr��socktyper��bs
          r�testGetaddrinfoz"GeneralModuleTests.testGetaddrinfo�st��	���{�B�/�/�/�/����	�	�	��y�F�.�.�.��
�
�2�3�3�3������		�����&�t�T�2�2�	+�	+�D����S��Y�Y��*�*�*�*�	��;��+�+�+���;��+�+�+���4��$�$�$��%�	*���u�b�)�)�)���1�2�2�	-��&�(�(�B�.�.���t�V�,�,�,���4��$�$�$���4��&�&�&��"�4��V�^�V�=O�P�P��%*�	9�	9�!�F�D�!�Q�����V�V�^�4�4�4����T�&�\�\�+H�6�<�+W�X�X�X����S��[�[�#�f�l�*;�*;�<�<�<����T�6�#5�6�6�6����T�$�Z�Z�)G�$�*�)T�U�U�U����S��Y�Y��D�J���8�8�8�8��"�4��q�&�2D�E�E��$)�	;�	;� �A�x��A�q����X�v�'9�:�:�:�:���4��q�!�V�^�<�<�<���4��q�!�Q��0A�B�B�B�	��4��F�$4�f�6H�!�!�,�	.�	.�	.�
��t�T�*�*����D�t�4�4�4������A������t�T�6�>�:�:����t�T�&�.�A�A�A������A������t�T�1�f�.@�A�A����t�T��0B�C�C�C������A������t�T�1�a���@�@����t�T���@�@�@������A������t�T�1�a��F�4E�F�F����t�T��1B�C�C�C������A������t�Q��(8�&�:L�a�%�0�
2�
2����D�q��9I�$*�$6�a�%+�%6�
8�
8�
8��	
����A�������,�f�.@�+�x�X�X�X��6�+�,�,�	�
��"�;��a��A�#)�#8�:�:�:�:�:���?�
�
�
����
����
	�	s&��A�+A�A�#Y�Y�Yc�T�|�ttjdd��dS)N)zmail.python.orgrr)r�rrr@rUs r�test_getnameinfoz#GeneralModuleTests.test_getnameinfo?s&�����'�6�#5�7L�a�P�P�P�P�Pr?�networkznetwork is not enabledc�0�tjd��5tjd��ddd��n#1swxYwYd}tj|��tj|��tj|dtjtj��dS)Nz
python.orgu!испытание.pythontest.netr)r�transient_internetrr�gethostbyname_exr�r�rB)rVrgs  r�	test_idnazGeneralModuleTests.test_idnaCs���
�
-�l�
;�
;�	/�	/�� ��.�.�.�	/�	/�	/�	/�	/�	/�	/�	/�	/�	/�	/����	/�	/�	/�	/�5����V�$�$�$����'�'�'���6�!�F�$4�V�5G�H�H�H�H�Hs�6�:�:c�@��ttd��rttd��s��d���fd�}�fd�}tj��\}}tjtj|��}	|r|�d����t��5tj	d��|�
dtjz��ddd��n#1swxYwY|ratjtj|��tj	d����t|j
dtjz��tj	d	��tjtj|��|���|���dS#tj	d	��tjtj|��|���|���wxYw)
N�alarmrz9signal.alarm and socket.socketpair required for this testc�T����ttjd��dSr��r�r|�math�acosh�r+rVs �r�
ok_handlerz@GeneralModuleTests.check_sendall_interrupted.<locals>.ok_handlerZs#������j�$�*�a�8�8�8�8�8r?c�^����ttjd��ddzdS�Nrr�r�rs �r�raising_handlerzEGeneralModuleTests.check_sendall_interrupted.<locals>.raising_handler\s*������j�$�*�a�8�8�8�
��F�F�F�Fr?g�?r��xr)r�signalrrtr�SIGALRMr�r��ZeroDivisionErrorr��sendallr�
SOCK_MAX_SIZE�TimeoutErrorr!)rV�with_timeoutrr�cr$�	old_alarms`      r�check_sendall_interruptedz,GeneralModuleTests.check_sendall_interruptedTs ����v�w�'�'�	W�w�v�|�/L�/L�	W��M�M�U�V�V�V�	9�	9�	9�	9�	9�	�	�	�	�	�� �"�"���1��M�&�.�/�B�B�	�	��
"����S�!�!�!��"�"�#4�5�5�
8�
8���Q�����	�	�$��!6�6�7�7�7�
8�
8�
8�
8�
8�
8�
8�
8�
8�
8�
8����
8�
8�
8�
8��
@��
�f�n�j�9�9�9���Q�����!�!�,��	�"&��)>�">�@�@�@�
�L��O�O�O��M�&�.�)�4�4�4�
�G�G�I�I�I�
�G�G�I�I�I�I�I��
�L��O�O�O��M�&�.�)�4�4�4�
�G�G�I�I�I�
�G�G�I�I�I�I���s2�1G�27C5�)G�5C9�9G�<C9�=A&G�AHc�0�|�d��dS�NF�rrUs r�test_sendall_interruptedz+GeneralModuleTests.test_sendall_interruptedss���&�&�u�-�-�-�-�-r?c�0�|�d��dS)NTrrUs r�%test_sendall_interrupted_with_timeoutz8GeneralModuleTests.test_sendall_interrupted_with_timeoutvs���&�&�t�,�,�,�,�,r?c��tjtjtj��}t|��}|�t
��5}d}t
j��ddd��n#1swxYwY|�|t|j
jd����tjtjtj��}|�d��}t|��}d}t
j��|�t
��5d}t
j��ddd��dS#1swxYwYdS)Nrr)
rrPrBr��assertWarns�ResourceWarningrr�r�r��warningr+�makefile)rVrFrr�rs     r�test_dealloc_warnz$GeneralModuleTests.test_dealloc_warnys����}�V�^�V�-?�@�@����J�J��
�
�
�o�
.�
.�	!�"��D��� � � �	!�	!�	!�	!�	!�	!�	!�	!�	!�	!�	!����	!�	!�	!�	!�	
�
�
�a��R�Z�_�Q�/�0�0�1�1�1��}�V�^�V�-?�@�@���M�M�$������J�J���������
�
�
�o�
.�
.�	!�	!��A��� � � �	!�	!�	!�	!�	!�	!�	!�	!�	!�	!�	!�	!����	!�	!�	!�	!�	!�	!s$�A5�5A9�<A9�/E�E�Ec�"�tjtjtj��5}|�d��}|���|�t
|��d��ddd��dS#1swxYwYdS)Nrz<_io.BufferedReader name=-1>)rrPrBrr!r�r��rVrF�fps   r�test_name_closed_socketioz,GeneralModuleTests.test_name_closed_socketio�s���
�]�6�>�6�+=�
>�
>�	G�$����t�$�$�B��H�H�J�J�J����T�"�X�X�'E�F�F�F�	G�	G�	G�	G�	G�	G�	G�	G�	G�	G�	G�	G����	G�	G�	G�	G�	G�	Gs�A
B�B�Bc�^�tj��5}|�dd���}|�|�����|�|�����|�|�����|���|�t|j��|�t|j��|�t|j��ddd��dS#1swxYwYdS)Nrr)�	buffering)
rrr��readabler��writable�seekabler!r�r|rs   r�test_unusable_closed_socketioz0GeneralModuleTests.test_unusable_closed_socketio�s+��
�]�_�_�	7�����t�q��1�1�B��O�O�B�K�K�M�M�*�*�*����R�[�[�]�]�+�+�+����R�[�[�]�]�+�+�+��H�H�J�J�J����j�"�+�6�6�6����j�"�+�6�6�6����j�"�+�6�6�6�	7�	7�	7�	7�	7�	7�	7�	7�	7�	7�	7�	7����	7�	7�	7�	7�	7�	7s�DD"�"D&�)D&c�~�tj��}	|�tdf��tj|�����|�t��5|�d��ddd��n#1swxYwY|�t��5|���ddd��n#1swxYwYnK#|�t��5|���ddd��w#1swxYwYwxYw|�t��5tjd��ddd��n#1swxYwY|�t��5tjd��ddd��dS#1swxYwYdS)Nrr�r1)	rrrr�r!r�r�rrTr�rUs  r�test_socket_closez$GeneralModuleTests.test_socket_close�s����}����	��I�I�t�Q�i� � � ��L������'�'�'��"�"�7�+�+�
�
����A����
�
�
�
�
�
�
�
�
�
�
����
�
�
�
��"�"�7�+�+�
�
��
�
����
�
�
�
�
�
�
�
�
�
�
����
�
�
�
����"�"�7�+�+�
�
��
�
����
�
�
�
�
�
�
�
�
�
�
����
�
�
�
�
�����
�
�y�
)�
)�	�	��L�����	�	�	�	�	�	�	�	�	�	�	����	�	�	�	�
�
�
�w�
'�
'�	�	��L�����	�	�	�	�	�	�	�	�	�	�	�	����	�	�	�	�	�	s��AC%�1B�C%�B�C%�B�C%�8C�C� C�%D-�D!�D-�!D%�%D-�(D%�)D-�
E+�+E/�2E/�F2�2F6�9F6c	�f�dD]�}|�|���5tj��5}d|vrdnd}|�||���5}|�|j|��ddd��n#1swxYwYddd��n#1swxYwYddd��n#1swxYwY��dS)N)rr�rw�w�wb��moder�r	��encoding)�subTestrrr�r-)rVr-rFr/rs     r�test_makefile_modez%GeneralModuleTests.test_makefile_mode�st��.�	8�	8�D����4��(�(�
8�
8��]�_�_�8��'*�d�{�{�t�t��H����t�h��?�?�8�2��(�(���$�7�7�7�8�8�8�8�8�8�8�8�8�8�8����8�8�8�8�8�8�8�8�8�8�8�8�8�8�8����8�8�8�8�
8�
8�
8�
8�
8�
8�
8�
8�
8�
8�
8����
8�
8�
8�
8��	8�	8sX�B%� B�A7	�+B�7A;
�;B�>A;
�?B�B%�B�B%�B�B%�%B)	�,B)	c	�R�dD]�}|�|���5tj��5}|�td��5|�|��ddd��n#1swxYwYddd��n#1swxYwYddd��n#1swxYwY��dS)N)�rtrl�+r�r,zinvalid mode)r0r�assertRaisesRegexr|r)rVr-rFs   r�test_makefile_invalid_modez-GeneralModuleTests.test_makefile_invalid_mode�s`��'�	,�	,�D����4��(�(�
,�
,��]�_�_�,���/�/�
�N�K�K�,�,��
�
�d�+�+�+�,�,�,�,�,�,�,�,�,�,�,����,�,�,�,�,�,�,�,�,�,�,�,�,�,�,����,�,�,�,�
,�
,�
,�
,�
,�
,�
,�
,�
,�
,�
,����
,�
,�
,�
,��	,�	,sX�B�B�A-	�!B�-A1
�1B�4A1
�5B�8B�B�B�B�B�B	�"B	c�p�tj��}|5ttjdz��D])}|�t
tj||���*	ddd��n#1swxYwYttjdz��D]�}tjtjtj|����}|�	|tj��tjtjtj
|����}|�	|tj
����dSrQ)r�range�pickle�HIGHEST_PROTOCOLr�r��dumps�loadsrPr�rB)rVrF�protocolr�rvs     r�test_picklezGeneralModuleTests.test_pickle�sY���}����
�	K�	K�!�&�"9�A�"=�>�>�
K�
K���!�!�)�V�\�4��J�J�J�J�
K�	K�	K�	K�	K�	K�	K�	K�	K�	K�	K�	K����	K�	K�	K�	K��f�5��9�:�:�	7�	7�H��\�&�,�v�~�x�"H�"H�I�I�F����V�V�^�4�4�4��<���V�-?�� J� J�K�K�D����T�6�#5�6�6�6�6�		7�	7s�AA*�*A.�1A.c���dD]t}tjtjtj��5}|�tdf��|�|��ddd��n#1swxYwY�utjtjtj��5}|�tdf��|���ddd��dS#1swxYwYdS)N)rr1r)rrPrBrrr�rT)rV�backlog�srvs   r�test_listen_backlogz&GeneralModuleTests.test_listen_backlog�s@���	$�	$�G���v�~�v�/A�B�B�
$�c����$���#�#�#��
�
�7�#�#�#�
$�
$�
$�
$�
$�
$�
$�
$�
$�
$�
$����
$�
$�
$�
$���]�6�>�6�+=�
>�
>�	�#��H�H�d�A�Y�����J�J�L�L�L�	�	�	�	�	�	�	�	�	�	�	�	����	�	�	�	�	�	s#�2A,�,A0	�3A0	�!1C�C#�&C#c��ddl}tjtjtj��5}|�t
df��|�t|j|j	dz��ddd��dS#1swxYwYdSr)
rWrrPrBrrr�r�r6rTrY)rVrWrAs   r�test_listen_backlog_overflowz/GeneralModuleTests.test_listen_backlog_overflow�s���	����
�]�6�>�6�+=�
>�
>�	P�#��H�H�d�A�Y�������m�S�Z��9J�Q�9N�O�O�O�	P�	P�	P�	P�	P�	P�	P�	P�	P�	P�	P�	P����	P�	P�	P�	P�	P�	Ps�AB�B�B�IPv6 required for this test.c�N�|�ttjtjddfd��tjtjtj��5}|�t|jtjddf��ddd��dS#1swxYwYdS)Nrr5i����)	r�r6rr@rrfrjrBrrr�s  r�
test_flowinfoz GeneralModuleTests.test_flowinfo�s������-��);�(�/��J�?��	D�	D�	D�
�]�6�?�F�,>�
?�
?�	U�1����m�Q�V�m�6J�A�s�5S�T�T�T�	U�	U�	U�	U�	U�	U�	U�	U�	U�	U�	U�	U����	U�	U�	U�	U�	U�	Us�/B�B�!Bc��tjddtjtjtj��\�^}}|�|d��dS)N�ff02::1de:c0:face:8Dr
)�ff02::1de:c0:face:8dr
rr)rr�rjr(r�r�)rVr��sockaddrs   r�test_getaddrinfo_ipv6_basicz.GeneralModuleTests.test_getaddrinfo_ipv6_basic�sP��"�.�"��&�/�����	
�
���1�h�	
����#G�H�H�H�H�Hr?c���|�tj��tjd����|�tj��tjd����dS)Nr�r�)r�rrrUs r�test_getfqdn_filter_localhostz0GeneralModuleTests.test_getfqdn_filter_localhost�sX�������)�)�6�>�)�+D�+D�E�E�E������)�)�6�>�$�+?�+?�@�@�@�@�@r?r�zdoes not work on WindowszSymbolic scope id does not workz test needs socket.if_nameindex()c���tj��d\}}tjd|zdtjtjtj��\�^}}|�|ddd|f��dS)Nr�ff02::1de:c0:face:8D%r
rJ)rr%r�rjr(r�r�)rV�ifindex�test_interfacer�rKs     r�&test_getaddrinfo_ipv6_scopeid_symbolicz9GeneralModuleTests.test_getaddrinfo_ipv6_scopeid_symbolic�sx��%+�$7�$9�$9�!�$<�!��.�"�.�#�n�4��&�/�����	
�
���1�h�	
����$:�D�!�W�#M�N�N�N�N�Nr?z.Numeric scope id does not work or undocumentedc���d}tjdt|��zdtjtjtj��\�^}}|�|ddd|f��dS)N�*rPr
rJr)rr�r�rjr(r�r�)rVrQr�rKs    r�%test_getaddrinfo_ipv6_scopeid_numericz8GeneralModuleTests.test_getaddrinfo_ipv6_scopeid_numeric�sk����"�.�#�c�'�l�l�2��&�/�����	
�
���1�h�	
����$:�D�!�W�#M�N�N�N�N�Nr?c���tj��d\}}ddd|f}tj|tjtjz��}|�|d|zdf��dS)NrrIr
�ff02::1de:c0:face:8d%�1234)rr%r@�NI_NUMERICHOST�NI_NUMERICSERVr�)rVrQrRrK�nameinfos     r�&test_getnameinfo_ipv6_scopeid_symbolicz9GeneralModuleTests.test_getnameinfo_ipv6_scopeid_symbolic
sn��%+�$7�$9�$9�!�$<�!��.�*�D�!�W�=���%�h��0E��H]�0]�^�^������$;�n�$L�f�#U�V�V�V�V�Vr?c��d}ddd|f}tj|tjtjz��}|�|dt|��zdf��dS)NrUrIr
rrXrY)rr@rZr[r�r�)rVrQrKr\s    r�%test_getnameinfo_ipv6_scopeid_numericz8GeneralModuleTests.test_getnameinfo_ipv6_scopeid_numericsa����*�D�!�W�=���%�h��0E��H]�0]�^�^������$;�c�'�l�l�$J�F�#S�T�T�T�T�Tr?c�Z�tjtjtj��5}|�t	|j��d|jjz��|�t	|j��d|jjz��|�t|j��t|jj����|�t|j��t|jj����ddd��dS#1swxYwYdS)Nr�r�)	rrPrBr�r�r�r�rvr�r�s  r�test_str_for_enumsz%GeneralModuleTests.test_str_for_enums#s ���]�6�>�6�+=�
>�
>�	=�!����T�!�(�^�^�-J�Q�X�^�-[�\�\�\����T�!�&�\�\�+I�A�F�L�+X�Y�Y�Y����S���]�]�C����,?�,?�@�@�@����S���[�[�#�a�f�l�*;�*;�<�<�<�		=�	=�	=�	=�	=�	=�	=�	=�	=�	=�	=�	=����	=�	=�	=�	=�	=�	=s�C)D � D$�'D$c��ttdd��}ttdd��}tj|z|z}tjtj|��5}|�|jtj��|�d��|�|jtj��|�d��|�|jtj��|�d��|�|jtj��|�d��|�|jtj��ddd��dS#1swxYwYdS)N�
SOCK_NONBLOCKrr�r�TF)r�rrBrPr�rvr��setblocking)rVrcr��	sock_typer$s     r� test_socket_consistent_sock_typez3GeneralModuleTests.test_socket_consistent_sock_type,st������;�;�
��v�~�q�9�9���&��6��E�	�
�]�6�>�9�
5�
5�		9�����Q�V�V�%7�8�8�8�
�L�L��O�O�O����Q�V�V�%7�8�8�8�
�L�L��O�O�O����Q�V�V�%7�8�8�8�
�M�M�$�������Q�V�V�%7�8�8�8�
�M�M�%� � � ����Q�V�V�%7�8�8�8�		9�		9�		9�		9�		9�		9�		9�		9�		9�		9�		9�		9����		9�		9�		9�		9�		9�		9s�DE9�9E=�E=c�h�tjtjtj��}|���}t	tjj�����dz}t	d�tjj�	��D����dz}tj||d|���5}|�
|j|��|�
|j|��|�
|jddh��ddd��dS#1swxYwYdS)Nr�c3�(K�|]
\}}|dv�	|V��dS)>r�rcNr`)r�r��kinds   rr�zEGeneralModuleTests.test_unknown_socket_family_repr.<locals>.<genexpr>Gs>����
�
���d��<�<�<�
�<�<�<�<�
�
r?rk)r�rvr�r�r)rrPrB�detach�max�
AddressFamily�__members__�values�
SocketKindrMr�r�rvr�r�)rVrF�fd�unknown_family�unknown_typer$s      r�test_unknown_socket_family_reprz2GeneralModuleTests.test_unknown_socket_family_repr<sa���}�V�^�V�-?�@�@��
�[�[�]�]���V�1�=�D�D�F�F�G�G�!�K���
�
�$�/�;�A�A�C�C�
�
�
�
�
�
�	���]�%�L������	,�����Q�X�~�6�6�6����Q�V�\�2�2�2��M�M�!�'�A�r�7�+�+�+�
	,�	,�	,�	,�	,�	,�	,�	,�	,�	,�	,�	,����	,�	,�	,�	,�	,�	,s�AD'�'D+�.D+�sendfileztest needs os.sendfile()c���Gd�d��}tj��5}tjtjtj��}tj|��|�tj��5|�||����ddd��n#1swxYwY|�t��5|�|ddz����ddd��n#1swxYwY|�t��5|�|d����ddd��n#1swxYwYddd��dS#1swxYwYdS)Nc��eZdZd�Zd�ZdS)�<GeneralModuleTests.test__sendfile_use_sendfile.<locals>.Filec��||_dSr<�rp)rVrps  rr�zEGeneralModuleTests.test__sendfile_use_sendfile.<locals>.File.__init__Xs
������r?c��|jSr<ryrUs rr�zCGeneralModuleTests.test__sendfile_use_sendfile.<locals>.File.fileno[s	���w�r?N)r]r^r_r�r�r`r?r�FilerwWs2������
�
�
�
�
�
�
�
r?r{r�r2)rr?r�curdir�O_RDONLYr!r��_GiveupOnSendfile�_sendfile_use_sendfiler6r�)rVr{rFrps    r�test__sendfile_use_sendfilez.GeneralModuleTests.test__sendfile_use_sendfileUsQ��	�	�	�	�	�	�	�	��]�_�_�	8������B�K�0�0�B��H�R�L�L�L��"�"�6�#;�<�<�
6�
6��+�+�D�D��H�H�5�5�5�
6�
6�
6�
6�
6�
6�
6�
6�
6�
6�
6����
6�
6�
6�
6��"�"�=�1�1�
;�
;��+�+�D�D��D��M�M�:�:�:�
;�
;�
;�
;�
;�
;�
;�
;�
;�
;�
;����
;�
;�
;�
;��"�"�9�-�-�
8�
8��+�+�D�D��J�J�7�7�7�
8�
8�
8�
8�
8�
8�
8�
8�
8�
8�
8����
8�
8�
8�
8�	8�	8�	8�	8�	8�	8�	8�	8�	8�	8�	8�	8����	8�	8�	8�	8�	8�	8s~�AE$�>B)�E$�)B-	�-E$�0B-	�1E$�"C<�0E$�<D	�E$�D	�E$�!E�E$�E	�E$�E	�E$�$E(�+E(c���|�|j|��|�|j|��|���}t	j|���}|�|j��|���|�|j|��|�|j|��|�|���|��dS�Nr�)r�r�rvr�rrqr!rj)rVr$r��styperp�s2s      r�_test_socket_filenoz&GeneralModuleTests._test_socket_filenogs��������6�*�*�*�������'�'�'�
�X�X�Z�Z��
�]�"�
%�
%�
%�������!�!�!�	���
�
�
������F�+�+�+������%�(�(�(���������b�)�)�)�)�)r?c��tjtjtj��}|�|j��|�tjdf��|�|tjtj��ttd��r�tjtjtj
��}|�|j��|�tjdf��|�|tjtj
��tjr�tjtjtj��}|�|j��|�tj
dddf��|�|tjtj��ttd��r�tj��}|�t j|��tjtjtj��}|�|j��	|�t&j�|d����|�|tjtj��dS#t,$rYdSwxYwdS)Nrr(rKr)rrPrBrqr!rrrr�r�rr(r�rjrfr<r=�shutil�rmtreerKr?rGr��PermissionError)rVr$�tmpdirs   r�test_socket_filenoz%GeneralModuleTests.test_socket_filenots-���M�&�.�&�*<�=�=������� � � �	���
�"�A�&�'�'�'�� � ��F�N�F�4F�G�G�G��6�<�(�(�	K��
�f�n�f�.?�@�@�A��O�O�A�G�$�$�$�
�F�F�M�&��*�+�+�+��$�$�Q����8I�J�J�J��%�	M��
�f�o�v�/A�B�B�A��O�O�A�G�$�$�$�
�F�F�M�(�!�Q��2�3�3�3��$�$�Q����9K�L�L�L��6�9�%�%�	=��%�'�'�F��O�O�F�M�6�2�2�2��
�f�n�f�.@�A�A�A��O�O�A�G�$�$�$�
=����r�w�|�|�F�H�5�5�6�6�6��(�(��F�N�)/�);�=�=�=�=�=��#�
�
�
����
����	=�	=s�3J=�=
K�
Kc���|�t��5tjtjtjd���ddd��dS#1swxYwYdS)Ng@E@r��r�r�rrPrBrUs r� test_socket_fileno_rejects_floatz3GeneralModuleTests.test_socket_fileno_rejects_float�s���
�
�
�y�
)�
)�	K�	K��M�&�.�&�*<�T�J�J�J�J�	K�	K�	K�	K�	K�	K�	K�	K�	K�	K�	K�	K����	K�	K�	K�	K�	K�	K��,A�A�Ac���|�t��5tjtjtjd���ddd��dS#1swxYwYdS)N�foor�r�rUs r�&test_socket_fileno_rejects_other_typesz9GeneralModuleTests.test_socket_fileno_rejects_other_types�s���
�
�
�y�
)�
)�	L�	L��M�&�.�&�*<�U�K�K�K�K�	L�	L�	L�	L�	L�	L�	L�	L�	L�	L�	L�	L����	L�	L�	L�	L�	L�	Lr�c���|�td��5tjtjtjd���ddd��dS#1swxYwYdS)N�negative file descriptorr1r��r5r|rrPrBrUs r�)test_socket_fileno_rejects_invalid_socketz<GeneralModuleTests.test_socket_fileno_rejects_invalid_socket�s���
�
#�
#�J�0J�
K�
K�	I�	I��M�&�.�&�*<�R�H�H�H�H�	I�	I�	I�	I�	I�	I�	I�	I�	I�	I�	I�	I����	I�	I�	I�	I�	I�	I��,A�A�AzWindows disallows -1 onlyc���|�td��5tjtjtjd���ddd��dS#1swxYwYdS)Nr�i���r�r�rUs r�#test_socket_fileno_rejects_negativez6GeneralModuleTests.test_socket_fileno_rejects_negative�s���
�
#�
#�J�0J�
K�
K�	J�	J��M�&�.�&�*<�S�I�I�I�I�	J�	J�	J�	J�	J�	J�	J�	J�	J�	J�	J�	J����	J�	J�	J�	J�	J�	Jr�c�F�d}|�t��5}tjtj�����ddd��n#1swxYwY|�|jjtj|f��|�t��5}tjtj	tj
tj�����ddd��n#1swxYwY|�|jjtj|f��dS)Ni6'r�)r�rrr�make_bad_fdr�r�r!r�rPrB)rV�WSAENOTSOCKr�s   r�$test_socket_fileno_requires_valid_fdz7GeneralModuleTests.test_socket_fileno_requires_valid_fd�sg����
�
�
�w�
'�
'�	:�2��M��!6�!8�!8�9�9�9�9�	:�	:�	:�	:�	:�	:�	:�	:�	:�	:�	:����	:�	:�	:�	:��
�
�b�l�(�5�;��*D�E�E�E�
�
�
�w�
'�
'�	0�2��M����"� �,�.�.�
0�
0�
0�
0�	0�	0�	0�	0�	0�	0�	0�	0�	0�	0�	0����	0�	0�	0�	0�
	
�
�
�b�l�(�5�;��*D�E�E�E�E�Es#�'A�A�A�!=C*�*C.�1C.c�B�tj��5}|�t��5t	j|������ddd��n#1swxYwY|�t��5}t	jtjtj|������ddd��n#1swxYwY|�|j	j
tj��ddd��dS#1swxYwYdSr�)r<�NamedTemporaryFiler�rrr�rPrBr�r�r!r�)rV�afiler�s   r�%test_socket_fileno_requires_socket_fdz8GeneralModuleTests.test_socket_fileno_requires_socket_fd�s���
�
(�
*�
*�		A�e��"�"�7�+�+�
5�
5��
�U�\�\�^�^�4�4�4�4�
5�
5�
5�
5�
5�
5�
5�
5�
5�
5�
5����
5�
5�
5�
5��"�"�7�+�+�
+�r��
��N��&� �<�<�>�>�+�+�+�+�
+�
+�
+�
+�
+�
+�
+�
+�
+�
+�
+����
+�
+�
+�
+�

���R�\�/���@�@�@�		A�		A�		A�		A�		A�		A�		A�		A�		A�		A�		A�		A����		A�		A�		A�		A�		A�		AsX�D�(A#�D�#A'	�'D�*A'	�+D�>C�D�C	�D�C	�-D�D�Dc��ddl}ddl}|�|jddd�|���}|�|t
j��dS)Nrrlrc�T�|���o|�d��S)N�AF_��isupperrn��Cs rrsz<GeneralModuleTests.test_addressfamily_enum.<locals>.<lambda>����!�)�)�+�+�=�!�,�,�u�*=�*=�r?��source)r��enum�
_old_convert_�IntEnum�_test_simple_enumrrl)rVr�r��CheckedAddressFamilys    r�test_addressfamily_enumz*GeneralModuleTests.test_addressfamily_enum�si����������#�1�1���o�x�=�=�� 2� � ��
	
���3�V�5I�J�J�J�J�Jr?c��ddl}ddl}|�|jddd�|���}|�|t
j��dS)Nrrorc�T�|���o|�d��S)N�SOCK_r�r�s rrsz9GeneralModuleTests.test_socketkind_enum.<locals>.<lambda>�s��!�)�)�+�+�?�!�,�,�w�*?�*?�r?r�)r�r�r�r�r�rro)rVr�r��CheckedSocketKinds    r�test_socketkind_enumz'GeneralModuleTests.test_socketkind_enum�si���������� �.�.���l�H�?�?��/����
	
���0�&�2C�D�D�D�D�Dr?c��ddl}ddl}|�|jddd�|���}|�|t
j��dS)Nr�MsgFlagrc�T�|���o|�d��S)N�MSG_r�r�s rrsz6GeneralModuleTests.test_msgflag_enum.<locals>.<lambda>�s��!�)�)�+�+�>�!�,�,�v�*>�*>�r?r�)r�r�r��IntFlagr�rr�)rVr�r��CheckedMsgFlags    r�test_msgflag_enumz$GeneralModuleTests.test_msgflag_enum�sf�����������+�+���i��>�>��,����
	
���~�v�~�>�>�>�>�>r?c��ddl}ddl}|�|jddd�|���}|�|t
j��dS)Nr�AddressInforc�T�|���o|�d��S)N�AI_r�r�s rrsz:GeneralModuleTests.test_addressinfo_enum.<locals>.<lambda>�r�r?r�)r�r�r�r�r�rr�)rVr�r��CheckedAddressInfos    r�test_addressinfo_enumz(GeneralModuleTests.test_addressinfo_enum�si����������!�/�/���m�X�=�=��0� � ��	
���1�6�3E�F�F�F�F�Fr?)`r]r^r_r�r�r��
skipUnlessr�r�r�r�r�r�r�r?r�r��skipIfr�is_wasir�r?rmrr�rrrrrrr$r/r:r<rBrDrS�cpython_onlyr_rwr}r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r��is_resource_enabledr�rrrrrr%r'r1r6r>rBrDrGrLrNrrSrVr]r_rarfrsr�r�r�r�r�r�r�r�r�r�r�r�r�r`r?rr�r�4s�
���������+�+�+��X����,�.C�D�D�
,�
,�E�D�
,�3�3�3�"�"�"�(6�(6�(6�T��� � � ��X����D��*<�=�=���>�=���X�_�W�_�&E�F�F�
>�
>�G�F�
>��X�����1�3H�I�I��X���3�5R�S�S���T�S�J�I��:v�v�v�&?�?�?�+�+�+�"�X������7�7�9Z�[�[��X������7�7�9Z�[�[�&�&�\�[�\�[�&�$�X������8�8�?�A�A�*�*�A�A�*��X�����)9�:�:�A�C�C�5�5�C�C�5�"�X�����)9�:�:�A�C�C�G�G�C�C�G��X�����m�4�4�7�9�9�B�B�9�9�B����:�:�:�
��>�>���>�.*F�*F�*F�XG�G�G�2�X������5�5�8�:�:�I�I�:�:�I��X������5�5�8�:�:� � �:�:� �>�X������5�5�8�:�:�<1�<1�:�:�<1�|�X������5�5�8�:�:�M�M�:�:�M�0�X������5�5�8�:�:�#�#�:�:�#�D(�(�(�:>�>�>�A�A�A�7�7�7�
=�
=�
=�,�,�,����(�X����D��*<�=�=�	:�	:�>�=�	:��X����D��*<�=�=��X�����)A�B�B�L�N�N�S�S�N�N�>�=�S�N�N�N�`Q�Q�Q��X��4��4�Y�?�?�1�3�3�
I�
I�3�3�
I����>.�.�.�-�-�-�!�!�!�"G�G�G�	7�	7�	7���� 8�8�8�,�,�,�	7�	7�	7����
��P�P���P��X���3�5S�T�T�U�U�U�T�U��X���3�5S�T�T�I�I�U�T�I�A�A�A��X���3�5S�T�T��X�_�S�\�W�,�.H�I�I��X�_�S�;�<�<��X������8�8�:\�]�]�
O�
O�^�]�=�<�J�I�U�T�
O��X���3�5S�T�T��X������8�:�:�O�O�:�:�U�T�O��X���3�5S�T�T��X�_�S�\�W�,�.H�I�I��X�_�S�;�<�<��X������8�8�:\�]�]�W�W�^�]�=�<�J�I�U�T�W��X���3�5S�T�T��X��#�,�'�1�8�:�:�U�U�:�:�U�T�U�=�=�=�9�9�9� ,�,�,�2�X�����Z�0�0�2L�M�M�8�8�N�M�8�"*�*�*�=�=�=�>K�K�K�L�L�L�I�I�I��X�_�R�W��_�&A�B�B�J�J�C�B�J�F�F�F�
A�
A�
A�K�K�K�E�E�E�?�?�?�G�G�G�G�Gr?r�z!SocketCan required for this test.c�F�eZdZd�Zejeed��d��d���Zd�Z	ejeed��d��d���Z
d�Zd�Zejeed	��d
��d���Z
ejeed��d
��d���ZdS)�BasicCANTestc�N�tjtjtjdSr<)r�AF_CANrr rUs rr�z!BasicCANTest.testCrucialConstants�s���
�
��
�
�����r?�CAN_BCM�&socket.CAN_BCM required for this test.c�F�tjtjtjtjtjtjtjtjtj	tj
tjtjtj
tjtjtjtjtjtjtjtjtjtjtjdSr<)rr��CAN_BCM_TX_SETUP�CAN_BCM_TX_DELETE�CAN_BCM_TX_READ�CAN_BCM_TX_SEND�CAN_BCM_RX_SETUP�CAN_BCM_RX_DELETE�CAN_BCM_RX_READ�CAN_BCM_TX_STATUS�CAN_BCM_TX_EXPIRED�CAN_BCM_RX_STATUS�CAN_BCM_RX_TIMEOUT�CAN_BCM_RX_CHANGED�CAN_BCM_SETTIMER�CAN_BCM_STARTTIMER�CAN_BCM_TX_COUNTEVT�CAN_BCM_TX_ANNOUNCE�CAN_BCM_TX_CP_CAN_ID�CAN_BCM_RX_FILTER_ID�CAN_BCM_RX_CHECK_DLC�CAN_BCM_RX_NO_AUTOTIMER�CAN_BCM_RX_ANNOUNCE_RESUME�CAN_BCM_TX_RESET_MULTI_IDX�CAN_BCM_RX_RTR_FRAMErUs r�testBCMConstantszBasicCANTest.testBCMConstants�s���	���	���� � ����������� � ����� � ��!�!�� � ��!�!��!�!�	����!�!��"�"��"�"��#�#��#�#��#�#��&�&��)�)��)�)��#�#�#�#r?c��tjtjtjtj��5}	ddd��dS#1swxYwYdSr<�rrrr r�s  r�testCreateSocketzBasicCANTest.testCreateSocket	���
�]�6�=�&�/�6�>�
J�
J�	�a��	�	�	�	�	�	�	�	�	�	�	�	����	�	�	�	�	�	��A�A�Ac��tjtjtjtj��5}	ddd��dS#1swxYwYdSr<)rrr(r�r�s  r�testCreateBCMSocketz BasicCANTest.testCreateBCMSocket
s����]�6�=�&�*;�V�^�
L�
L�	�PQ��	�	�	�	�	�	�	�	�	�	�	�	����	�	�	�	�	�	r�c��tjtjtjtj��5}d}|�|��|�|���|��ddd��dS#1swxYwYdS)N)r�)rrrr rrr�r�)rVr$�addresss   r�testBindAnyzBasicCANTest.testBindAnys���
�]�6�=�&�/�6�>�
J�
J�	7�a��G�
�F�F�7�O�O�O����Q�]�]�_�_�g�6�6�6�	7�	7�	7�	7�	7�	7�	7�	7�	7�	7�	7�	7����	7�	7�	7�	7�	7�	7s�AB�B�	Bc���tjtjtjtj��5}|�t
d|jd��ddd��dS#1swxYwYdS)N�interface name too long)�xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx)rrrr r5rrrr�s  r�testTooLongInterfaceNamez%BasicCANTest.testTooLongInterfaceNames���
�]�6�=�&�/�6�>�
J�
J�	:�a��"�"�7�,E�#$�6�=�
:�
:�
:�	:�	:�	:�	:�	:�	:�	:�	:�	:�	:�	:�	:����	:�	:�	:�	:�	:�	:s�#A%�%A)�,A)�CAN_RAW_LOOPBACKz/socket.CAN_RAW_LOOPBACK required for this test.c	�~�tjtjtjtj��5}dD]k}|�tjtj|��|�||�tjtj�����l	ddd��dS#1swxYwYdS)N)rr�)	rrrr r��SOL_CAN_RAWr�r�r�)rVr$�loopbacks   r�testLoopbackzBasicCANTest.testLoopbacks���]�6�=�&�/�6�>�
J�
J�	O�a�"�
O�
O�����V�/��1H�%�'�'�'�� � ���L�L��!3�V�5L�M�M�O�O�O�O�
O�	O�	O�	O�	O�	O�	O�	O�	O�	O�	O�	O�	O����	O�	O�	O�	O�	O�	Os�A/B2�2B6�9B6�CAN_RAW_FILTERz-socket.CAN_RAW_FILTER required for this test.c	��d\}}tjd||��}tjtjtjtj��5}|�tjtj|��|�	||�
tjtjd����|�tjtjt|����ddd��dS#1swxYwYdS)N)�iz=IIrm)r�packrrrr r�r�r�r�r�r�)rV�can_id�can_mask�
can_filterr$s     r�
testFilterzBasicCANTest.testFilter)s%��(�����[����9�9�
�
�]�6�=�&�/�6�>�
J�
J�	[�a�
�L�L��+�V�-B�J�O�O�O����Z��L�L��!3�V�5J�A�N�N�
P�
P�
P�
�L�L��+�V�-B�I�j�DY�DY�Z�Z�Z�		[�	[�	[�	[�	[�	[�	[�	[�	[�	[�	[�	[����	[�	[�	[�	[�	[�	[s�B#D�D�DN)r]r^r_r�r�r�rrr�r�r�r�r�r�rr`r?rr�r��sb���������
�X������3�3�A�C�C�$�$�C�C�$�<����X������3�3�A�C�C���C�C��7�7�7�:�:�:��X�����);�<�<�J�L�L�O�O�L�L�O��X�����)9�:�:�H�J�J�[�[�J�J�[�[�[r?r�c��eZdZdd�Zed���Zed���Zd�Zd�Zd�Z	d�Z
d	�Zd
�Ze
jeed��d��d
���Ze
jeed��d��d���ZdS)�CANTestr�c�>�t�||���dSr�)r�r�r�s  rr�zCANTest.__init__8rr?c��	t|��}|�dd��}tj|j|||��S)Nrm�)r��ljustrr�rv)�clsr��data�can_dlcs    r�build_can_framezCANTest.build_can_frame;s<�� ��d�)�)���z�z�!�W�%�%���{�3�,�f�g�t�D�D�Dr?c�Z�	tj|j|��\}}}|||d|�fSr<)rrrv)r	�framer�rr
s     r�dissect_can_framezCANTest.dissect_can_frameBs5��"� &�
�c�.?�� G� G��������h�w�h��0�0r?c���|j�|j��\}}|�|j|��|�|d|j��dSr�)r$r�rur��cfrs�rVrrs   r�
testSendFramezCANTest.testSendFrameHsU���6�?�?�4�<�0�0���D������"�%�%�%�����a��$�.�1�1�1�1�1r?c�z�|�dd��|_|j�|j��dS)Nrs�rrr�r�rUs r�_testSendFramezCANTest._testSendFrameMs6���&�&�t�-D�E�E�����
�
�d�g�����r?c��|j�|j��\}}|�|j|��dSr<)r$r�rur�rrs   r�testSendMaxFramezCANTest.testSendMaxFrameQs9���6�?�?�4�<�0�0���D������"�%�%�%�%�%r?c�z�|�dd��|_|j�|j��dS)NrsrrUs r�_testSendMaxFramezCANTest._testSendMaxFrameUs5���&�&�t�[�9�9�����
�
�d�g�����r?c��|j�|j��\}}|�|j|��|j�|j��\}}|�|j|��dSr<)r$r�rur��cf1�cf2rs   r�testSendMultiFrameszCANTest.testSendMultiFramesYsj���6�?�?�4�<�0�0���D������2�&�&�&��6�?�?�4�<�0�0���D������2�&�&�&�&�&r?c���|�dd��|_|j�|j��|�dd��|_|j�|j��dS)N�sD3"�s�"3)rrr�r�rrUs r�_testSendMultiFrameszCANTest._testSendMultiFrames`sc���'�'��.A�B�B�����
�
�d�h�����'�'��o�>�>�����
�
�d�h�����r?r�r�c��|j�|j��\}}|�|j|��|�|��\}}}|�|j|��|�|j|��dSr<)r�r�rur�rrr�r
)rVrrr�rr
s      r�_testBCMzCANTest._testBCMgs����8�$�$�T�\�2�2���D������"�%�%�%� $� 6� 6�r� :� :����������f�-�-�-������D�)�)�)�)�)r?c�\�tjtjtjtj��}|�|j��|�|jf��d|_tgd���|_
|�|j|j
��|_tj
}d}d}dx}x}x}}d}	d}
tj|j||||||||	|
�
�
}||jz}|�|��}
|�|
t'|����dS)N�#)����ri"r�)rrr(r�rqr!r�rsr��bytesr
rrr�rr�ryr�r�r�)rV�bcm�opcoder�r��
ival1_seconds�
ival1_usec�
ival2_seconds�
ival2_usec�
bcm_can_id�nframes�header�header_plus_frame�
bytes_sents              r�testBCMzCANTest.testBCMps(���m�F�M�6�+<�f�n�M�M������	�"�"�"����T�^�%�&�&�&�����,�,�,�-�-��	��&�&�t�{�D�I�>�>����'������BC�C�
�C�
�C�]�Z��
�����T�1����!��!����
�
��#�T�W�,���X�X�/�0�0�
�����S�):�%;�%;�<�<�<�<�<r?Nr�)r]r^r_r��classmethodrrrrrrrr"r�r�rrr$r6r`r?rrr5sC������D�D�D�D��E�E��[�E��1�1��[�1�
2�2�2�
���&�&�&����'�'�'� � � ��X������3�3�A�C�C�*�*�C�C�*��X������3�3�A�C�C�=�=�C�C�=�=�=r?rz!CAN ISOTP required for this test.c�~��eZdZ�fd�Zd�Zd�Zejee	d��d��d���Z
d�Zd�Z�xZ
S)	�	ISOTPTestc�H��t��j|i|��d|_dS�Nrj�r!r�rsr*s   �rr�zISOTPTest.__init__��*��������$�)�&�)�)�)� ����r?c�f�tjtjtjtjdSr<)rr�rr)r(rUs rr�zISOTPTest.testCrucialConstants�s(���
�
��
�
��������r?c��tjtjtjtj��5}	ddd��dS#1swxYwYdSr<r�r�s  rr�zISOTPTest.testCreateSocket�r�r�r)z(socket.CAN_ISOTP required for this test.c��tjtjtjtj��5}	ddd��dS#1swxYwYdSr<)rrr(r)r�s  r�testCreateISOTPSocketzISOTPTest.testCreateISOTPSocket�����]�6�=�&�*;�V�=M�
N�
N�	�RS��	�	�	�	�	�	�	�	�	�	�	�	����	�	�	�	�	�	r�c�0�tjtjtjtj��5}|�t
d��5|�d��ddd��n#1swxYwYddd��dS#1swxYwYdS)Nr�)r�r�r�)rrr(r)r5rrrr�s  rr�z"ISOTPTest.testTooLongInterfaceName�s���
�]�6�=�&�*;�V�=M�
N�
N�	+�RS��'�'��1J�K�K�
+�
+����)�*�*�*�
+�
+�
+�
+�
+�
+�
+�
+�
+�
+�
+����
+�
+�
+�
+�	+�	+�	+�	+�	+�	+�	+�	+�	+�	+�	+�	+����	+�	+�	+�	+�	+�	+s5�B�A3�'B�3A7	�7B�:A7	�;B�B�Bc���	tjtjtjtj��5}|jddf}|�|��|�|���|��ddd��dS#1swxYwYdS#t$r?}|j	tj
kr|�d|jz��n�Yd}~dSd}~wwxYw)Nr&iVrp)rrr(r)rsrrr�r�rr!�ENODEVrt�rVr$rr�s    r�testBindzISOTPTest.testBind�s;��
	���v�}�f�.?��AQ�R�R�
8�VW��~�u�e�3�����t����� � ������$�7�7�7�
8�
8�
8�
8�
8�
8�
8�
8�
8�
8�
8�
8����
8�
8�
8�
8�
8�
8���	�	�	��w�%�,�&�&��
�
�E��>�*�+�+�+�+��+�+�+�+�+�+�����	���s;�4B�AB�>B�B�B�B�B�
C!�"4C�C!)r]r^r_r�r�r�r�r�rrrAr�rGr%r&s@rr9r9�s��������!�!�!�!�!��������X������5�5�C�E�E���E�E��+�+�+�������r?r9z!CAN J1939 required for this test.c���eZdZ�fd�Zejeed��d��d���Zejeed��d��d���Z	d�Z
�xZS)�	J1939Testc�H��t��j|i|��d|_dSr;r<r*s   �rr�zJ1939Test.__init__�r=r?r-z(socket.CAN_J1939 required for this test.c�F�tjtjtjtjtjtjtjtjtj	tj
tjtjtj
tjtjtjtjtjtjtjtjtjtjtjdSr<)rr-�J1939_MAX_UNICAST_ADDR�J1939_IDLE_ADDR�
J1939_NO_ADDR�
J1939_NO_NAME�J1939_PGN_REQUEST�J1939_PGN_ADDRESS_CLAIMED�J1939_PGN_ADDRESS_COMMANDED�J1939_PGN_PDU1_MAX�
J1939_PGN_MAX�J1939_NO_PGN�SO_J1939_FILTER�SO_J1939_PROMISC�SO_J1939_SEND_PRIO�SO_J1939_ERRQUEUE�SCM_J1939_DEST_ADDR�SCM_J1939_DEST_NAME�SCM_J1939_PRIO�SCM_J1939_ERRQUEUE�
J1939_NLA_PAD�J1939_NLA_BYTES_ACKED�J1939_EE_INFO_NONE�J1939_EE_INFO_TX_ABORT�J1939_FILTER_MAXrUs r�testJ1939ConstantszJ1939Test.testJ1939Constants�s���	����%�%����������� � ��(�(��*�*��!�!�������	�������!�!�� � ��"�"��"�"�����!�!�����$�$��!�!��%�%�����r?c��tjtjtjtj��5}	ddd��dS#1swxYwYdSr<)rrr(r-r�s  r�testCreateJ1939SocketzJ1939Test.testCreateJ1939Socket�rBr�c��	tjtjtjtj��5}|jtjtjtjf}|�|��|�	|�
��|��ddd��dS#1swxYwYdS#t$r?}|jtj
kr|�d|jz��n�Yd}~dSd}~wwxYwro)rrr(r-rsrOrUrNrrr�r�rr!rErtrFs    rrGzJ1939Test.testBind�sG��
	���v�}�f�.?��AQ�R�R�
8�VW��~�v�';�V�=P�RX�Rf�f�����t����� � ������$�7�7�7�
8�
8�
8�
8�
8�
8�
8�
8�
8�
8�
8�
8����
8�
8�
8�
8�
8�
8���	�	�	��w�%�,�&�&��
�
�E��>�*�+�+�+�+��+�+�+�+�+�+�����	���s;�4B7�A'B*�B7�*B.�.B7�1B.�2B7�7
D�4C;�;D)r]r^r_r�r�r�rrrcrerGr%r&s@rrIrI�s��������!�!�!�!�!��X������5�5�C�E�E� � �E�E� �B�X������5�5�C�E�E���E�E��������r?rIz#RDS sockets required for this test.c� �eZdZd�Zd�Zd�ZdS)�BasicRDSTestc�6�tjtjdSr<)r�AF_RDSr1rUs rr�z!BasicRDSTest.testCrucialConstants�s���
�
��
�
�
�
r?c��tjtjtjd��5}	ddd��dS#1swxYwYdSr�)rr1r2r�s  rr�zBasicRDSTest.testCreateSocket	s��
�]�6�=�&�*?��
C�
C�	�q��	�	�	�	�	�	�	�	�	�	�	�	����	�	�	�	�	�	s
�:�>�>c�<�d}tjtjtjd��5}|�tjtj|��|�tjtj|��ddd��dS#1swxYwYdS)Ni@r)rr1r2r�r��	SO_RCVBUF�	SO_SNDBUF)rVrur$s   r�testSocketBufferSizez!BasicRDSTest.testSocketBufferSize	s�����
�]�6�=�&�*?��
C�
C�	G�q�
�L�L��*�F�,<�g�F�F�F�
�L�L��*�F�,<�g�F�F�F�	G�	G�	G�	G�	G�	G�	G�	G�	G�	G�	G�	G����	G�	G�	G�	G�	G�	Gs�AB�B�BN)r]r^r_r�r�ror`r?rrhrh�sF������������G�G�G�G�Gr?rhc���eZdZdd�Z�fd�Zd�Zd�Zd�Zd�Ze	e
j
d��d	���Ze	e
j
d
��d���Zd�Z
d
�Zd�Zd�Z�xZS)�RDSTestr�c�>�t�||���dSr�)r�r�r�s  rr�zRDSTest.__init__	rr?c�x��t�����tj��|_dSr<)r!rWr�r��evtr"s �rrWz
RDSTest.setUp	s'���
���
�
�����?�$�$����r?c��|j�|j��\}}|�|j|��|�|j|��dSr<)rQr�rur�r
r��rVr
rs   r�testSendAndRecvzRDSTest.testSendAndRecv	sS���Y�'�'���5�5�
��d������D�)�)�)�������-�-�-�-�-r?c�n�d|_|j�|jdt|jf��dS�Nr�r�r
r�r�r�rSrUs r�_testSendAndRecvzRDSTest._testSendAndRecv	�0����	������	�1�t�T�Y�&7�8�8�8�8�8r?c��|j�|jtj��\}}|�|j|��|j�|j��\}}|�|j|��dSr<)rQr�rur�MSG_PEEKr�r
rvs   r�testPeekzRDSTest.testPeek	sr���Y�'�'���f�o�F�F�
��d������D�)�)�)��Y�'�'���5�5�
��d������D�)�)�)�)�)r?c�n�d|_|j�|jdt|jf��dSryrzrUs r�	_testPeekzRDSTest._testPeek$	r|r?�recvmsgc��|j�|j��\}}}}|�|j|��dSr<)rQr�rur�r
)rVr
�ancdata�	msg_flagsrs     r�testSendAndRecvMsgzRDSTest.testSendAndRecvMsg(	s@��)-��):�):�4�<�)H�)H�&��g�y�$������D�)�)�)�)�)r?�sendmsgc�r�d|_|j�|jgddt|jf��dS)Ns<hello hello hello hello hello hello hello hello hello hello r`r)r
r�r�r�rSrUs r�_testSendAndRecvMsgzRDSTest._testSendAndRecvMsg-	s6��"��	�����$�)��b�!�d�D�I�->�?�?�?�?�?r?c��|j�|j��\}}|�|j|��|j�|j��\}}|�|j|��dSr<)rQr�rur��data1�data2rvs   r�testSendAndRecvMultizRDSTest.testSendAndRecvMulti2	sn���Y�'�'���5�5�
��d������T�*�*�*��Y�'�'���5�5�
��d������T�*�*�*�*�*r?c���d|_|j�|jdt|jf��d|_|j�|jdt|jf��dS)Nsbaconrsegg)r�r�r�r�rSr�rUs r�_testSendAndRecvMultizRDSTest._testSendAndRecvMulti9	sX����
������
�A��d�i�'8�9�9�9���
������
�A��d�i�'8�9�9�9�9�9r?c��tj|jgggd��\}}}|�|j|��|j�|j��\}}|�|j|��dS)Ng@)�selectrQr�r�rur�r
)rVrr*rlr
rs      r�
testSelectzRDSTest.testSelect@	sp���-����R��S�9�9���1�a��
�
�d�i��#�#�#��Y�'�'���5�5�
��d������D�)�)�)�)�)r?c�n�d|_|j�|jdt|jf��dS)NsselectrrzrUs r�_testSelectzRDSTest._testSelectF	s0����	������	�1�t�T�Y�&7�8�8�8�8�8r?r�)r]r^r_r�rWrwr{rr�r�rr�r�r�r�r�r�r%r&s@rrqrq	s�������D�D�D�D�%�%�%�%�%�.�.�.�
9�9�9�*�*�*�9�9�9��\�&�-��+�+�*�*�,�+�*��\�&�-��+�+�@�@�,�+�@�+�+�+�:�:�:�*�*�*�9�9�9�9�9�9�9r?rqz'QIPCRTR sockets required for this test.c�2�eZdZd�Zd�Zd�Zd�Zd�Zd�ZdS)�BasicQIPCRTRTestc��tjdSr<)rr9rUs rr�z%BasicQIPCRTRTest.testCrucialConstantsN	s������r?c��tjtjtj��5}	ddd��dS#1swxYwYdSr<)rr9r(r�s  rr�z!BasicQIPCRTRTest.testCreateSocketQ	s~��
�]�6�,�f�.?�
@�
@�	�A��	�	�	�	�	�	�	�	�	�	�	�	����	�	�	�	�	�	�
�9�=�=c���tjtjtj��5}|�|���dd��ddd��dS#1swxYwYdS�Nr�r)rr9r(r�r�r�s  r�testUnboundzBasicQIPCRTRTest.testUnboundU	s���
�]�6�,�f�.?�
@�
@�	4�A����Q�]�]�_�_�Q�/��3�3�3�	4�	4�	4�	4�	4�	4�	4�	4�	4�	4�	4�	4����	4�	4�	4�	4�	4�	4s�/A&�&A*�-A*c�B�tjtjtj��5}tj||���d���|�|���dd��ddd��dS#1swxYwYdS)NrrSr�)rr9r(rrRr��assertNotEqualr�s  r�testBindSockzBasicQIPCRTRTest.testBindSockY	s���
�]�6�,�f�.?�
@�
@�	7�A��#�A�A�M�M�O�O�A�,>�?�?�?�?�����
�
���� 2�A�6�6�6�	7�	7�	7�	7�	7�	7�	7�	7�	7�	7�	7�	7����	7�	7�	7�	7�	7�	7s�AB�B�Bc���tjtjtj��5}|�tt
j|d���ddd��dS#1swxYwYdS)NrUrS)rr9r(r�rrrRr�s  r�testInvalidBindSockz$BasicQIPCRTRTest.testInvalidBindSock^	s���
�]�6�,�f�.?�
@�
@�	L�A����g�}�'>����K�K�K�	L�	L�	L�	L�	L�	L�	L�	L�	L�	L�	L�	L����	L�	L�	L�	L�	L�	Ls�)A � A$�'A$c��tjtjtj��5}|�d��|�|���dd��ddd��dS#1swxYwYdS)N)�{r�r�r)rr9r(r�r�r�r�s  r�testAutoBindSockz!BasicQIPCRTRTest.testAutoBindSockb	s���
�]�6�,�f�.?�
@�
@�	7�A�
�I�I�j�!�!�!�����
�
���� 2�A�6�6�6�	7�	7�	7�	7�	7�	7�	7�	7�	7�	7�	7�	7����	7�	7�	7�	7�	7�	7s�AA;�;A?�A?N)	r]r^r_r�r�r�r�r�r�r`r?rr�r�J	sq������������4�4�4�7�7�7�
L�L�L�7�7�7�7�7r?r�c�&�eZdZd�Zd�Zd�Zd�ZdS)�BasicVSOCKTestc��tjdSr<)rr�rUs rr�z#BasicVSOCKTest.testCrucialConstantsl	s
������r?c���tjtjtjtjtjtjtjtjdSr<)	r�SO_VM_SOCKETS_BUFFER_SIZE�SO_VM_SOCKETS_BUFFER_MIN_SIZE�SO_VM_SOCKETS_BUFFER_MAX_SIZEr��VMADDR_PORT_ANY�VMADDR_CID_HOST�VM_SOCKETS_INVALID_VERSIONr
rUs r�testVSOCKConstantsz!BasicVSOCKTest.testVSOCKConstantso	sP���(�(��,�,��,�,�����������)�)��-�-�-�-r?c��tjtjtj��5}	ddd��dS#1swxYwYdSr<)rr�rBr�s  rr�zBasicVSOCKTest.testCreateSockety	s}��
�]�6�?�F�,>�
?�
?�	�1��	�	�	�	�	�	�	�	�	�	�	�	����	�	�	�	�	�	r�c� �tjtjtj��5}|�tjtj��}|�tjtj��}|�tjtj��}|�tjtj|dz��|�tjtj|dz��|�tjtj|dz��|�|dz|�tjtj����|�|dz|�tjtj����|�|dz|�tjtj����ddd��dS#1swxYwYdS�Nr�)	rr�rBr�r�r�r�r�r�)rVr$�orig_maxrA�orig_mins     rroz#BasicVSOCKTest.testSocketBufferSize}	s%��
�]�6�?�F�,>�
?�
?�	D�1��|�|�F�O�$*�$H�J�J�H��<�<��� &� @�B�B�D��|�|�F�O�$*�$H�J�J�H�
�L�L����=�x�!�|�
M�
M�
M�
�L�L����9�4�!�8�
E�
E�
E�
�L�L����=�x�!�|�
M�
M�
M�
���X��\��\�\�&�/�#�A�C�C�
D�
D�
D�
���T�A�X��\�\�&�/�#�=�?�?�
@�
@�
@�
���X��\��\�\�&�/�#�A�C�C�
D�
D�
D�+	D�	D�	D�	D�	D�	D�	D�	D�	D�	D�	D�	D����	D�	D�	D�	D�	D�	Ds�GH�H�
HN)r]r^r_r�r�r�ror`r?rr�r�g	sU������
���.�.�.����D�D�D�D�Dr?r�z)Bluetooth sockets required for this test.c� �eZdZd�Zd�Zejejdkd��d���Z	ejejdkd��d���Z
ejejdkpej�d��d	��d
���ZdS)�BasicBluetoothTestc�,�tjtjtjtjt
jdkrQtjtjtj	t
j�
d��stjdSdSdS)Nr�ra)r�
BDADDR_ANY�BDADDR_LOCALrArCr?rm�BTPROTO_HCI�SOL_HCI�
BTPROTO_L2CAPrn�BTPROTO_SCOrUs r�testBluetoothConstantsz)BasicBluetoothTest.testBluetoothConstants�	s����������������<�7�"�"�����N�N�� � ��<�*�*�9�5�5�
#��"�"�"�"�
#�"�

#�
#r?c��tjtjtjtj��5}	ddd��dS#1swxYwYdSr<)rrArBrCr�s  r�testCreateRfcommSocketz)BasicBluetoothTest.testCreateRfcommSocket�	s���
�]�6�.��0B�F�DY�
Z�
Z�	�^_��	�	�	�	�	�	�	�	�	�	�	�	����	�	�	�	�	�	r�r�z&windows does not support L2CAP socketsc��tjtjtjtj��5}	ddd��dS#1swxYwYdSr<)rrAr2r�r�s  r�testCreateL2capSocketz(BasicBluetoothTest.testCreateL2capSocket�	s���
�]�6�.��0E�v�G[�
\�
\�	�`a��	�	�	�	�	�	�	�	�	�	�	�	����	�	�	�	�	�	r�z$windows does not support HCI socketsc��tjtjtjtj��5}	ddd��dS#1swxYwYdSr<)rrArr�r�s  r�testCreateHciSocketz&BasicBluetoothTest.testCreateHciSocket�	s���
�]�6�.����AS�
T�
T�	�XY��	�	�	�	�	�	�	�	�	�	�	�	����	�	�	�	�	�	r�raz.windows and freebsd do not support SCO socketsc��tjtjtjtj��5}	ddd��dS#1swxYwYdSr<)rrAr2r�r�s  r�testCreateScoSocketz&BasicBluetoothTest.testCreateScoSocket�	s����]�6�.��0E�v�GY�
Z�
Z�	�^_��	�	�	�	�	�	�	�	�	�	�	�	����	�	�	�	�	�	r�N)
r]r^r_r�r�r�r�r?rmr�r�rnr�r`r?rr�r��	s�������#�#�#�����X�_�S�\�W�,�.V�W�W���X�W���X�_�S�\�W�,�.T�U�U���V�U���X�_�S�\�W�,�R���0G�0G�	�0R�0R�E�G�G���G�G���r?r�c���eZdZdd�Zd�Zd�Zd�Zd�Zd�Zd�Z	d	�Z
d
�Zd�Zd�Z
d
�Zd�Zd�Zd�Zd�Zd�Zeje��Zejd���Zd�Zd�ZdS)�BasicTCPTestr�c�>�t�||���dSr��rr�r�s  rr�zBasicTCPTest.__init__�	�!���$�$�T�j�$�A�A�A�A�Ar?c�p�|j�d��}|�|t��dSr�)rr�r�r�r�s  r�testRecvzBasicTCPTest.testRecv�	s3���m� � ��&�&������c�"�"�"�"�"r?c�D�|j�t��dSr<�r	r�r�rUs r�	_testRecvzBasicTCPTest._testRecv�	�������C� � � � � r?c���|j�tt��dz
��}|j�d��}||z}|�|t��dS�N�r�)rr�r�r�r�)rV�seg1�seg2r�s    r�testOverFlowRecvzBasicTCPTest.testOverFlowRecv�	s[���}�!�!�#�c�(�(�Q�,�/�/���}�!�!�$�'�'���T�k������c�"�"�"�"�"r?c�D�|j�t��dSr<r�rUs r�_testOverFlowRecvzBasicTCPTest._testOverFlowRecv�	r�r?c�v�|j�d��\}}|�|t��dSr�)rr�r�r��rVr�rs   r�testRecvFromzBasicTCPTest.testRecvFrom�	s7���M�*�*�4�0�0�	��T�����c�"�"�"�"�"r?c�D�|j�t��dSr<r�rUs r�
_testRecvFromzBasicTCPTest._testRecvFrom�	r�r?c���|j�tt��dz
��\}}|j�d��\}}||z}|�|t��dSr�)rr�r�r�r�)rVr�rr�r�s     r�testOverFlowRecvFromz!BasicTCPTest.testOverFlowRecvFrom�	sc���]�+�+�C��H�H�Q�J�7�7�
��d��]�+�+�D�1�1�
��d��T�k������c�"�"�"�"�"r?c�D�|j�t��dSr<r�rUs r�_testOverFlowRecvFromz"BasicTCPTest._testOverFlowRecvFrom�	r�r?c�~�d}	|j�d��}|sn||z
}�#|�|d��dS)Nr?r�r��ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff)rr�r�)rVr��reads   r�testSendAllzBasicTCPTest.testSendAll�	sX����	��=�%�%�d�+�+�D��
���4�K�C�		�
	
����k�*�*�*�*�*r?c�>�d}|j�|��dS)Nr�)r	r	)rV�	big_chunks  r�_testSendAllzBasicTCPTest._testSendAll�	s#���	�����y�)�)�)�)�)r?c�`�|j���}tj|tjtj��}|�|j��|�|tj��|�	d��}|�
|t��dSr�)rr�r�fromfdrPrBrqr!r�r�r�r�)rVrprFr�s    r�
testFromFdzBasicTCPTest.testFromFd�	s���
�]�
!�
!�
#�
#���}�R����1C�D�D������
�#�#�#����d�F�M�2�2�2��i�i��o�o������c�"�"�"�"�"r?c�D�|j�t��dSr<r�rUs r�_testFromFdzBasicTCPTest._testFromFd�	r�r?c���|j���}|�|j��|�d��}|�|t��dSr�)r�duprqr!r�r�r�)rVrFr�s   r�testDupzBasicTCPTest.testDup
sT���}� � �"�"������
�#�#�#��i�i��o�o������c�"�"�"�"�"r?c�D�|j�t��dSr<r�rUs r�_testDupzBasicTCPTest._testDup	
r�r?c��|j�d��}|�|t��|j���dSr�)rr�r�r�r�r�r�s  r�testShutdownzBasicTCPTest.testShutdown
sG���m� � ��&�&������c�"�"�"�	
�	�������r?c�x�|j�t��|j�d��dSr�)r	r�r�r�rUs r�
_testShutdownzBasicTCPTest._testShutdown
s4������C� � � ������"�"�"�"�"r?c�>�ddl}|j�t��|�t
|jj|jdz��|�t
|jjd|jdzz��|j�d��dS)Nrr�r�)	rWr	r�r�r�r6r�rY�UINT_MAX�rVrWs  r�_testShutdown_overflowz#BasicTCPTest._testShutdown_overflow
s�����������C� � � ����-���)@�#�+�a�/�	1�	1�	1����-���)@��y�1�A�5�6�	8�	8�	8������"�"�"�"�"r?c�<�|j���}|j���}|�||��|�|jj��|�t|jjd��|j�	��tj
tjtj|���}|�
|j	��|�d��}|�|t��dS)Nr�r�)rr�rjr�r��_closedr�rr�r!rrPrBrqr�)rVr�rrFr�s     r�
testDetachzBasicTCPTest.testDetach&
s�����%�%�'�'���M� � �"�"������F�#�#�#�����
�-�.�.�.����'�4�=�#5�t�<�<�<��
�������}�V�^�V�-?��J�J�J������
�#�#�#��i�i��o�o������c�"�"�"�"�"r?c�D�|j�t��dSr<r�rUs r�_testDetachzBasicTCPTest._testDetach6
r�r?Nr�)r]r^r_r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�rr��testShutdown_overflowr�r�rr`r?rr�r��	sl������B�B�B�B�#�#�#�
!�!�!�#�#�#�!�!�!�#�#�#�
!�!�!�#�#�#�!�!�!�+�+�+�*�*�*�#�#�#�!�!�!�#�#�#�!�!�!����#�#�#�1�G�0��>�>����#�#���#�#�#�#� !�!�!�!�!r?r�c�:�eZdZd
d�Zd�Zd�Zd�Zd�Zd�Zd�Z	d	S)�BasicUDPTestr�c�>�t�||���dSr�)r�r�r�s  rr�zBasicUDPTest.__init__<
rr?c��|j�tt����}|�|t��dSr<�rQr�r�r�r�r�s  r�testSendtoAndRecvzBasicUDPTest.testSendtoAndRecv?
�7���i�n�n�S��X�X�&�&������c�"�"�"�"�"r?c�`�|j�tdt|jf��dSr��r�r�r�r�rSrUs r�_testSendtoAndRecvzBasicUDPTest._testSendtoAndRecvD
�'�������Q��t�y� 1�2�2�2�2�2r?c��|j�tt����\}}|�|t��dSr<�rQr�r�r�r�r�s   rr�zBasicUDPTest.testRecvFromG
�=���I�&�&�s�3�x�x�0�0�	��T�����c�"�"�"�"�"r?c�`�|j�tdt|jf��dSr�r
rUs rr�zBasicUDPTest._testRecvFromL
rr?c�R�|�t|jjd��dS�Nr1�r�r|rQr�rUs r�testRecvFromNegativez!BasicUDPTest.testRecvFromNegativeO
�%�����*�d�i�&8�"�=�=�=�=�=r?c�`�|j�tdt|jf��dSr�r
rUs r�_testRecvFromNegativez"BasicUDPTest._testRecvFromNegativeS
rr?Nr��
r]r^r_r�rrr�r�rrr`r?rrr:
s�������D�D�D�D�#�#�#�
3�3�3�#�#�#�
3�3�3�>�>�>�3�3�3�3�3r?rc�:�eZdZd
d�Zd�Zd�Zd�Zd�Zd�Zd�Z	d	S)�BasicUDPLITETestr�c�>�t�||���dSr�)r�r�r�s  rr�zBasicUDPLITETest.__init__[
s!��!�*�*�4�J�*�G�G�G�G�Gr?c��|j�tt����}|�|t��dSr<rr�s  rrz"BasicUDPLITETest.testSendtoAndRecv^
rr?c�`�|j�tdt|jf��dSr�r
rUs rrz#BasicUDPLITETest._testSendtoAndRecvc
rr?c��|j�tt����\}}|�|t��dSr<rr�s   rr�zBasicUDPLITETest.testRecvFromf
rr?c�`�|j�tdt|jf��dSr�r
rUs rr�zBasicUDPLITETest._testRecvFromk
rr?c�R�|�t|jjd��dSrrrUs rrz%BasicUDPLITETest.testRecvFromNegativen
rr?c�`�|j�tdt|jf��dSr�r
rUs rrz&BasicUDPLITETest._testRecvFromNegativer
rr?Nr�rr`r?rrrW
s�������H�H�H�H�#�#�#�
3�3�3�#�#�#�
3�3�3�>�>�>�3�3�3�3�3r?rc���eZdZejZ�fd�Zd�ZdZd�Z	d�Z
d�Zd�ZdZ
d	D]Ze
eeed��zZ
�dZdZdZdd�Z�xZS)
�SendrecvmsgBasec�x��tj��|_t�����dSr<)r�r��
misc_eventr!rWr"s �rrWzSendrecvmsgBase.setUp�
s'���#�/�+�+���
���
�
�����r?c�6�|j�|��Sr<)�cli_sockr�r�s  r�sendToServerzSendrecvmsgBase.sendToServer�
s���}�!�!�#�&�&�&r?r`c�Z�|jj||jt|��d�z�Sr<)r'r��sendmsg_to_server_defaultsr��rVr+s  r�sendmsgToServerzSendrecvmsgBase.sendmsgToServer�
s4��
%�t�}�$��T�4�S��Y�Y�Z�Z�@�@�C�	Cr?c�L�|j|g|�R�}|�|��|Sr<)r��registerRecvmsgResult)rVrFrur+�results     r�	doRecvmsgzSendrecvmsgBase.doRecvmsg�
s6�����g�-��-�-�-���"�"�6�*�*�*��
r?c��dSr<r`�rVr/s  rr.z%SendrecvmsgBase.registerRecvmsgResult�
s	��	
�r?c�2�|�||��dSr<�r��rV�addr1�addr2s   r�checkRecvmsgAddressz#SendrecvmsgBase.checkRecvmsgAddress�
s ��	
�����&�&�&�&�&r?r)�
MSG_CTRUNC�MSG_OOBNc�L�|j}|j}|r||jz}||jz}n|�||jz}||jz}||z}||z}||z}||z}||z|z}|r"t	d�|�����||z|z}	|�||	z||	z��dS)Nz6contradictory set, unset requirements for flags {0:#x})�msg_flags_common_set�msg_flags_common_unset�msg_flags_eor_indicator�msg_flags_non_eor_indicator�	Exceptionr�r�)
rVr��eor�checkset�
checkunset�ignore�
defaultset�defaultunset�inbothrQs
          r�
checkFlagszSendrecvmsgBase.checkFlags�
s���8�.�
��2���	9��$�6�6�J��D�<�<�L�L�
�_��$�:�:�J��D�8�8�L�	�z�k�!�
���	�!��	�J����l�"�
��J�&�&��0���	5��%�%+�V�F�^�^�5�5�
5��:�%�&��0��������x�$��7�7�7�7�7r?)Nrrr)r]r^r_rr��fail_timeoutrWr(r*r,r0r.r8r=r�r�rr<r>r?rHr%r&s@rr#r#�
s��������
�+�L������'�'�'�"$��C�C�C����
�
�
�'�'�'���)�;�;���'�'�&�$��":�":�:����� ��#$��48�48�48�48�48�48�48�48r?r#c��eZdZd�ZdS)�RecvmsgIntoMixinc�*�t|��}|j|gg|�R�}|�|��|�|dd��|�|d|��t|d|d���f|dd�zSr)r��recvmsg_intor.�assertGreaterEqual�assertLessEqualr*)rVrFrur+�bufr/s      rr0zRecvmsgIntoMixin.doRecvmsg
s����� � ��"��"�C�5�0�4�0�0�0���"�"�6�*�*�*�����q�	�1�-�-�-����V�A�Y��0�0�0��c�*�6�!�9�*�o�&�&�(�6�!�"�"�:�5�5r?N)r]r^r_r0r`r?rrKrKs#������6�6�6�6�6r?rKc�.��eZdZe�fd���Z�xZS)�SendrecvmsgDgramFlagsBasec�D��t��jtjzSr<)r!r?r�	MSG_TRUNCr"s �rr?z5SendrecvmsgDgramFlagsBase.msg_flags_non_eor_indicators����w�w�2�V�5E�E�Er?)r]r^r_�propertyr?r%r&s@rrRrRsM��������F�F�F�F��X�F�F�F�F�Fr?rRc�.��eZdZe�fd���Z�xZS)�SendrecvmsgSCTPFlagsBasec�D��t��jtjzSr<)r!r>r�MSG_EORr"s �rr>z0SendrecvmsgSCTPFlagsBase.msg_flags_eor_indicators����w�w�.���?�?r?)r]r^r_rUr>r%r&s@rrWrWsM��������@�@�@�@��X�@�@�@�@�@r?rWc�V�eZdZed���Zed���Zed���Zd�ZdS)�SendrecvmsgConnectionlessBasec��|jSr<)rQrUs r�	serv_sockz'SendrecvmsgConnectionlessBase.serv_sock(s
���y�r?c��|jSr<)r�rUs rr'z&SendrecvmsgConnectionlessBase.cli_sock,s	���x�r?c��ggd|jfSr�)rrUs rr*z8SendrecvmsgConnectionlessBase.sendmsg_to_server_defaults0s���B��4�>�*�*r?c�B�|j�||j��Sr<)r'r�rr�s  rr(z*SendrecvmsgConnectionlessBase.sendToServer4s���}�#�#�C���8�8�8r?N)r]r^r_rUr]r'r*r(r`r?rr[r[#st������
����X������X���+�+��X�+�9�9�9�9�9r?r[c�@�eZdZed���Zed���Zd�ZdS)�SendrecvmsgConnectedBasec��|jSr<)rrUs rr]z"SendrecvmsgConnectedBase.serv_sock>s
���}�r?c��|jSr<)r	rUs rr'z!SendrecvmsgConnectedBase.cli_sockBs
���~�r?c��dSr<r`r5s   rr8z,SendrecvmsgConnectedBase.checkRecvmsgAddressF�	��	
�r?N)r]r^r_rUr]r'r8r`r?rrbrb8sY����������X������X��
�
�
�
�
r?rbc���eZdZ�fd�Z�xZS)�SendrecvmsgServerTimeoutBasec���t�����|j�|j��dSr<)r!rWr]r�rIr"s �rrWz"SendrecvmsgServerTimeoutBase.setUpOs3���
���
�
������!�!�$�"3�4�4�4�4�4r?r$r&s@rrhrhLs8�������5�5�5�5�5�5�5�5�5r?rhc���eZdZd�Zd�Zd�Zd�Zd�Zd�Zd�Z	d�Z
d	�Zd
�Zd�Z
d�Zd
�Zd�Zeed��d���Zejd���Zd�Zd�Zd�Zd�ZdS)�SendmsgTestsc��|�|j�tt����t��dSr<�r�r]r�r�r�rUs r�testSendmsgzSendmsgTests.testSendmsgX�4�������,�,�S��X�X�6�6��<�<�<�<�<r?c��|�|�tg��tt����dSr<�r�r,r�r�rUs r�_testSendmsgzSendmsgTests._testSendmsg\s4������-�-�s�e�4�4�c�#�h�h�?�?�?�?�?r?c��|�|j�tt����t��dSr<rmrUs r�testSendmsgDataGeneratorz%SendmsgTests.testSendmsgDataGenerator_ror?c��|�|�d�tfD����tt����dS)Nc3�K�|]}|V��dSr<r`r�s  rr�z9SendmsgTests._testSendmsgDataGenerator.<locals>.<genexpr>ds"����.@�.@�Q�q�.@�.@�.@�.@�.@�.@r?rqrUs r�_testSendmsgDataGeneratorz&SendmsgTests._testSendmsgDataGeneratorcsN������-�-�.@�.@�3�%�.@�.@�.@�A�A��S���	#�	#�	#�	#�	#r?c��|�|j�tt����t��dSr<rmrUs r�testSendmsgAncillaryGeneratorz*SendmsgTests.testSendmsgAncillaryGeneratorgror?c��|�|�tgd�dD����tt����dS)Nc3�K�|]}|V��dSr<r`r�s  rr�z>SendmsgTests._testSendmsgAncillaryGenerator.<locals>.<genexpr>ls����_�_�A�a�_�_�_�_�_�_r?r`rqrUs r�_testSendmsgAncillaryGeneratorz+SendmsgTests._testSendmsgAncillaryGeneratorksK������-�-�s�e�_�_��_�_�_�E�E��S���	#�	#�	#�	#�	#r?c��|�|j�tt����t��dSr<rmrUs r�testSendmsgArrayzSendmsgTests.testSendmsgArrayoror?c��|�|�tjdt��g��t	t����dS)N�B)r�r,�arrayr�r�rUs r�_testSendmsgArrayzSendmsgTests._testSendmsgArrayssL������-�-�u�{�3��/D�/D�.E�F�F��S���	#�	#�	#�	#�	#r?c��|�|j�tt����t��dSr<rmrUs r�testSendmsgGatherzSendmsgTests.testSendmsgGatherwror?c��|�|�tdd�tdd�g��tt����dS�Nr�rqrUs r�_testSendmsgGatherzSendmsgTests._testSendmsgGather{sG������-�-�s�2�A�2�w��A�B�B��.@�A�A�3�s�8�8�L�L�L�L�Lr?c�b�|�|j�d��d��dS�Nr2�done�r�r]r�rUs r�testSendmsgBadArgszSendmsgTests.testSendmsgBadArgs~�.�������,�,�T�2�2�G�<�<�<�<�<r?c	��|�t|jj��|�t|jd��|�t|jt����|�t|jt��g��|�t|jtt��g��|�t|jtgt����|�t|jtggt����|�t|jtggdt����|�d��dS)Nsnot in an iterablerr�)r�r�r'r�r,�objectr�r(rUs r�_testSendmsgBadArgsz SendmsgTests._testSendmsgBadArgs�sU�����)�T�]�%:�;�;�;����)�T�%9�/�	1�	1�	1����)�T�%9� �(�(�	$�	$�	$����)�T�%9�!�8�8�*�	&�	&�	&����)�T�%9�����/�	+�	+�	+����)�T�%9��%����	+�	+�	+����)�T�%9��%��V�X�X�	/�	/�	/����)�T�%9��%��Q����	2�	2�	2����'�"�"�"�"�"r?c�b�|�|j�d��d��dSr�r�rUs r�testSendmsgBadCmsgzSendmsgTests.testSendmsgBadCmsg�r�r?c	��|�t|jtgt	��g��|�t|jtgt	��ddfg��|�t|jtgdt	��dfg��|�t|jtgddt	��fg��|�t|jtgdg��|�t|jtgdg��|�d��dS)Nr�data)rr)rrr�rUr��r�r�r,r�r�r(rUs r�_testSendmsgBadCmsgz SendmsgTests._testSendmsgBadCmsg�s6�����)�T�%9��%�&�(�(��	-�	-�	-����)�T�%9��%�6�8�8�Q��"8�!9�	;�	;�	;����)�T�%9��%�1�f�h�h��"8�!9�	;�	;�	;����)�T�%9��%�1�a����"2�!3�	5�	5�	5����)�T�%9��%�&��	+�	+�	+����)�T�%9��%�"5�!6�	8�	8�	8����'�"�"�"�"�"r?�
CMSG_SPACEc�b�|�|j�d��d��dSr�r�rUs r�testSendmsgBadMultiCmsgz$SendmsgTests.testSendmsgBadMultiCmsg�s0��	
�����,�,�T�2�2�G�<�<�<�<�<r?c���|�t|jtggd���|�t|jtgdt	��g��|�d��dS)N�rrr?r�r�rUs r�_testSendmsgBadMultiCmsgz%SendmsgTests._testSendmsgBadMultiCmsg�su�����)�T�%9��%����	.�	.�	.����)�T�%9��%�+�v�x�x�!8�	:�	:�	:����'�"�"�"�"�"r?c�b�|�|j�d��d��dSr�r�rUs r�testSendmsgExcessCmsgRejectz(SendmsgTests.testSendmsgExcessCmsgReject�s0��	
�����,�,�T�2�2�G�<�<�<�<�<r?c�8�ttd��so|�t��5}|�t
gddg��ddd��n#1swxYwY|�|jj��|�	d��dS)Nr�r�r�)
rrr�rr,r��assertIsNoner�r!r(�rVr�s  r�_testSendmsgExcessCmsgRejectz)SendmsgTests._testSendmsgExcessCmsgReject�s����v�|�,�,�	2��"�"�7�+�+�
H�r��$�$�c�U�[�+�,F�G�G�G�
H�
H�
H�
H�
H�
H�
H�
H�
H�
H�
H����
H�
H�
H�
H����b�l�0�1�1�1����'�"�"�"�"�"s�A�A�"Ac��dSr<r`rUs r�testSendmsgAfterClosez"SendmsgTests.testSendmsgAfterClose�s���r?c��|j���|�t|jt
g��dSr<)r'r!r�rr,r�rUs r�_testSendmsgAfterClosez#SendmsgTests._testSendmsgAfterClose�s9���
���������'�4�#7�#��?�?�?�?�?r?N)r]r^r_rnrrrtrwryr|r~r�r�r�r�r�r�r�r�rr�rwr�r�r�r�r�r`r?rrkrkTst������=�=�=�@�@�@�=�=�=�#�#�#�=�=�=�#�#�#�=�=�=�#�#�#�=�=�=�M�M�M�=�=�=�#�#�#�$=�=�=�
#�
#�
#��\�&�,�'�'�=�=�(�'�=�
�(�#�#�)�(�#�=�=�=�
#�#�#�
�
�
�@�@�@�@�@r?rkc�~�eZdZd�Zd�Zd�Zd�Zeej	dvd��d���Z
e
jd���Zd	S)
�SendmsgStreamTestsc��|�|j�tt����t��dSr<rmrUs r�testSendmsgExplicitNoneAddrz.SendmsgStreamTests.testSendmsgExplicitNoneAddr�ror?c��|�|�tggdd��tt����dSr�rqrUs r�_testSendmsgExplicitNoneAddrz/SendmsgStreamTests._testSendmsgExplicitNoneAddr�s:������-�-�s�e�R��D�A�A�3�s�8�8�L�L�L�L�Lr?c���|�|j�d��d��|�|j�|j�����dS�Nr��aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa�rH�r�r]r�r�r%r�rIrUs r�testSendmsgTimeoutz%SendmsgStreamTests.testSendmsgTimeout�sV�������,�,�S�1�1�8�<�<�<������,�,�T�5F�,�G�G�H�H�H�H�Hr?c�L�	|j�d��		|�dg���#t$rYn,t
$r }|jtjkr�Yd}~nd}~wwxYw|j�	��dS#|j�	��wxYw)N���Q��?Tr�)
r'r�r,r�rrr!�ENOMEMr%r��rVr�s  r�_testSendmsgTimeoutz&SendmsgStreamTests._testSendmsgTimeout�s���	"��M�$�$�T�*�*�*�
5�5��(�(�(��4�4�4�5���
�
�
����
�
�
��9���,�,��-�,�,�,�,�����
����
�O���!�!�!�!�!��D�O���!�!�!�!���s7�B�5�
A*�B�	A*�
A%� B�%A*�*B�B#>rdz<MSG_DONTWAIT not known to work on this platform when sendingc���|�|j�d��d��|�|j�|j�����dSr�r�rUs r�testSendmsgDontWaitz&SendmsgStreamTests.testSendmsgDontWait�sX��
	
�����,�,�S�1�1�8�<�<�<������,�,�T�5F�,�G�G�H�H�H�H�Hr?c��	|�t��5}	|�dggtj���##1swxYwY|�|jjtjtj	tj
f��|j���dS#|j���wxYw)NTr�)
r�rr,r�MSG_DONTWAITr�r�r!�EAGAIN�EWOULDBLOCKr�r%r�r�s  r�_testSendmsgDontWaitz'SendmsgStreamTests._testSendmsgDontWait�s���		"��"�"�7�+�+�
N�r�N��(�(�(��R��9L�M�M�M�N�
N�
N�
N�
N����
N�
N�
N�
N�

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

�
�
�
.�.�.�.�.r?r�c��eZdZd�Zd�Zd�Zd�Zd�Zd�Zd�Z	d�Z
d	�Zd
�Zd�Z
d�Zd
�Zd�Zd�Zd�Zeed��d���Zejd���Zeejd��d���Zejd���ZdS)�RecvmsgGenericTestsc�0�|�|jtt����\}}}}|�|t��|�||j��|�|g��|�|d���dS�NT�rA�r0r]r�r�r�r8r�rH�rVr�r�r�rs     r�testRecvmsgzRecvmsgGenericTests.testRecvmsgs���$(�N�N�4�>�3�s�8�8�$L�$L�!��W�e�T�����c�"�"�"�� � ��t�}�5�5�5�����"�%�%�%�����4��(�(�(�(�(r?c�:�|�t��dSr<�r(r�rUs r�_testRecvmsgz RecvmsgGenericTests._testRecvmsg%������#�����r?c�4�|�|jtt��dd��\}}}}|�|t��|�||j��|�|g��|�|d���dS)NrTr�r�r�s     r�testRecvmsgExplicitDefaultsz/RecvmsgGenericTests.testRecvmsgExplicitDefaults(s���$(�N�N�4�>�36�s�8�8�Q��%C�%C�!��W�e�T�����c�"�"�"�� � ��t�}�5�5�5�����"�%�%�%�����4��(�(�(�(�(r?c�:�|�t��dSr<r�rUs r�_testRecvmsgExplicitDefaultsz0RecvmsgGenericTests._testRecvmsgExplicitDefaults1r�r?c�6�|�|jtt��dz��\}}}}|�|t��|�||j��|�|g��|�|d���dS)NrUTr�r�r�s     r�testRecvmsgShorterz&RecvmsgGenericTests.testRecvmsgShorter4s���$(�N�N�4�>�36�s�8�8�b�=�%B�%B�!��W�e�T�����c�"�"�"�� � ��t�}�5�5�5�����"�%�%�%�����4��(�(�(�(�(r?c�:�|�t��dSr<r�rUs r�_testRecvmsgShorterz'RecvmsgGenericTests._testRecvmsgShorter=r�r?c�F�|�|jtt��dz
��\}}}}|�|tdd���|�||j��|�|g��|�|d���dS)Nr����Fr�r�r�s     r�testRecvmsgTruncz$RecvmsgGenericTests.testRecvmsgTrunc@s���$(�N�N�4�>�36�s�8�8�a�<�%A�%A�!��W�e�T�����c�#�2�#�h�'�'�'�� � ��t�}�5�5�5�����"�%�%�%�����5��)�)�)�)�)r?c�:�|�t��dSr<r�rUs r�_testRecvmsgTruncz%RecvmsgGenericTests._testRecvmsgTruncIr�r?c�2�|�|jtt��d��\}}}}|�|t��|�||j��|�|g��|�|d���dS)Nr�Tr�r�r�s     r�testRecvmsgShortAncillaryBufz0RecvmsgGenericTests.testRecvmsgShortAncillaryBufLs���$(�N�N�4�>�36�s�8�8�Q�%@�%@�!��W�e�T�����c�"�"�"�� � ��t�}�5�5�5�����"�%�%�%�����4��(�(�(�(�(r?c�:�|�t��dSr<r�rUs r�_testRecvmsgShortAncillaryBufz1RecvmsgGenericTests._testRecvmsgShortAncillaryBufUr�r?c�2�|�|jtt��d��\}}}}|�|t��|�||j��|�|g��|�|d���dS)N�(Tr�r�r�s     r�testRecvmsgLongAncillaryBufz/RecvmsgGenericTests.testRecvmsgLongAncillaryBufXs���$(�N�N�4�>�36�s�8�8�U�%D�%D�!��W�e�T�����c�"�"�"�� � ��t�}�5�5�5�����"�%�%�%�����4��(�(�(�(�(r?c�:�|�t��dSr<r�rUs r�_testRecvmsgLongAncillaryBufz0RecvmsgGenericTests._testRecvmsgLongAncillaryBufar�r?c��|j���|�t|j|jd��dSr�)r]r!r�rr0rUs r�testRecvmsgAfterClosez)RecvmsgGenericTests.testRecvmsgAfterCloseds:������������'�4�>�4�>�4�H�H�H�H�Hr?c��dSr<r`rUs r�_testRecvmsgAfterClosez*RecvmsgGenericTests._testRecvmsgAfterCloseirr?c��	|j�d��|�t|j|jtt����|j���dS#|j���wxYw)Nr�)	r]r�r�rr0r�r�r%r�rUs r�testRecvmsgTimeoutz&RecvmsgGenericTests.testRecvmsgTimeoutls���	"��N�%�%�d�+�+�+����l�"�n�d�n�c�#�h�h�
H�
H�
H�
�O���!�!�!�!�!��D�O���!�!�!�!���s�AA0�0Bc�l�|�|j�|j�����dS�Nr�)r�r%r�rIrUs r�_testRecvmsgTimeoutz'RecvmsgGenericTests._testRecvmsgTimeoutus0�������,�,�T�5F�,�G�G�H�H�H�H�Hr?r~c	���|�|jtt��dz
dtj��\}}}}|�|tdd���|�||j��|�|g��|�	|dttdd�����|�|jtt��dtj��\}}}}|�|t��|�||j��|�|g��|�	|d���|�|jtt����\}}}}|�|t��|�||j��|�|g��|�	|d���dS)	Nr�rr�FrT�rArDTr�)r0r]r�r�rr~r�r8r�rHr�r�s     r�testRecvmsgPeekz#RecvmsgGenericTests.testRecvmsgPeekxs���%)�N�N�4�>�36�s�8�8�a�<��39�?�%D�%D�!��W�e�T�	
����c�#�2�#�h�'�'�'�� � ��t�}�5�5�5�����"�%�%�%�
	
����5�&�v�{�A�>�>�	�	@�	@�	@�%)�N�N�4�>�36�s�8�8�Q�39�?�%D�%D�!��W�e�T�	
����c�"�"�"�� � ��t�}�5�5�5�����"�%�%�%�����4��(�(�(�%)�N�N�4�>�3�s�8�8�$L�$L�!��W�e�T�����c�"�"�"�� � ��t�}�5�5�5�����"�%�%�%�����4��(�(�(�(�(r?c�:�|�t��dSr<r�rUs r�_testRecvmsgPeekz$RecvmsgGenericTests._testRecvmsgPeek�s�����#�����r?r�c�n�|j�|j��|�|jt	t
����\}}}}|�|t
��|�||j��|�|g��|�	|d���dSr�)
r]r�rIr0r�r�r�r8r�rHr�s     r�testRecvmsgFromSendmsgz*RecvmsgGenericTests.testRecvmsgFromSendmsg�s���	
��!�!�$�"3�4�4�4�$(�N�N�4�>�3�s�8�8�$L�$L�!��W�e�T�����c�"�"�"�� � ��t�}�5�5�5�����"�%�%�%�����4��(�(�(�(�(r?c��|�|�tdd�tdd�g��tt����dSr�rqrUs r�_testRecvmsgFromSendmsgz+RecvmsgGenericTests._testRecvmsgFromSendmsg�sG������-�-�s�2�A�2�w��A�B�B��.@�A�A�3�s�8�8�L�L�L�L�Lr?N)r]r^r_r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�rr�rwr�r�r�r`r?rr�r�s�������)�)�)����)�)�)����)�)�)����*�*�*����)�)�)����)�)�)����I�I�I�

�
�
�"�"�"�I�I�I��\�&�*�%�%� )� )�&�%� )�D� ���!� ���\�&�-��+�+�)�)�,�+�)��'�M�M�(�'�M�M�Mr?r�c�&�eZdZd�Zd�Zd�Zd�ZdS)�RecvmsgGenericStreamTestsc��|�|jd��\}}}}|�|d��|�||j��|�|g��|�|d���dS)Nr�r?r�)r0r]r�r8r�rHr�s     r�testRecvmsgEOFz(RecvmsgGenericStreamTests.testRecvmsgEOF�s���$(�N�N�4�>�4�$H�$H�!��W�e�T�����c�"�"�"�� � ��t�}�5�5�5�����"�%�%�%�����4��(�(�(�(�(r?c�8�|j���dSr<)r'r!rUs r�_testRecvmsgEOFz)RecvmsgGenericStreamTests._testRecvmsgEOF�s���
�������r?c��|�|jtt��dz
��\}}}}|�||j��|�|g��|�|d���|�|jd��\}}}}|�||j��|�|g��|�|d���||z}|�|t��dS)Nr�Fr�r�T)r0r]r�r�r8r�r�rH)rVr�r�r�rr�r�s       r�testRecvmsgOverflowz-RecvmsgGenericStreamTests.testRecvmsgOverflow�s���%)�^�^�D�N�47��H�H�q�L�&B�&B�"��g�u�d�� � ��t�}�5�5�5�����"�%�%�%�����5��)�)�)�%)�^�^�D�N�D�%I�%I�"��g�u�d�� � ��t�}�5�5�5�����"�%�%�%�����4��(�(�(��T�k������c�"�"�"�"�"r?c�:�|�t��dSr<r�rUs r�_testRecvmsgOverflowz.RecvmsgGenericStreamTests._testRecvmsgOverflow�r�r?N)r]r^r_r�r�rrr`r?rr�r��sP������)�)�)����#�#�#� ����r?r�c��eZdZd�Zd�ZdS)�RecvmsgTestsc�,�|�t|jj��|�t|jjddd��|�t|jjtt��dd��|�t|jjtd��gdd��|�t|jjt��dd��|�t|jjtt��t��d��|�t|jjtt��dt����|j�tt��dd��\}}}}|�	|t��|�
||j��|�	|g��|�|d���dS)Nr1rryTr�)
r�r�r]r�r|r�r�r�r�r�r8r�rHr�s     r�testRecvmsgBadArgszRecvmsgTests.testRecvmsgBadArgs�s������)�T�^�%;�<�<�<����*�d�n�&<��a��	$�	$�	$����*�d�n�&<��c�(�(�B��	+�	+�	+����)�T�^�%;�$�R�=�=�/�1�a�	1�	1�	1����)�T�^�%;� �(�(�A�q�	*�	*�	*����)�T�^�%;��c�(�(�F�H�H�a�	1�	1�	1����)�T�^�%;��c�(�(�A�v�x�x�	1�	1�	1�%)�N�$:�$:�3�s�8�8�Q��$J�$J�!��W�e�T�����c�"�"�"�� � ��t�}�5�5�5�����"�%�%�%�����4��(�(�(�(�(r?c�:�|�t��dSr<r�rUs r�_testRecvmsgBadArgsz RecvmsgTests._testRecvmsgBadArgs�r�r?N)r]r^r_rrr`r?rrr�s2������)�)�)�,����r?rc�>�eZdZd�Zd�Zd�Zd�Zd�Zd�Zd�Z	d�Z
d	S)
�RecvmsgIntoTestsc��ttt����}|�t|jj��|�t|jjtt��dd��|�t|jj|dd��|�t|jjt��gdd��|�t|jjdgdd��|�t|jj|t��gdd��|�t|jj|gdd��|�t|jj|gt��d��|�t|jj|gdt����|j�|gdd��\}}}}|�	|tt����|�	|tt����|�
||j��|�	|g��|�|d���dS)NrsI'm not writabler1Tr�)
r�r�r�r�r�r]rMr�r|r�r8r�rH�rVrP�nbytesr�r�rs      r�testRecvmsgIntoBadArgsz'RecvmsgIntoTests.testRecvmsgIntoBadArgs�s=����C���!�!�����)�T�^�%@�A�A�A����)�T�^�%@��c�(�(�A�q�	*�	*�	*����)�T�^�%@��q�!�	%�	%�	%����)�T�^�%@�!�8�8�*�a��	,�	,�	,����)�T�^�%@�.�/��A�	7�	7�	7����)�T�^�%@�����/�1�a�	1�	1�	1����*�d�n�&A��%��Q�	(�	(�	(����)�T�^�%@��%����1�	.�	.�	.����)�T�^�%@��%��F�H�H�	.�	.�	.�(,�~�'B�'B�C�5�!�Q�'O�'O�$����������S���*�*�*�����i��n�n�-�-�-�� � ��t�}�5�5�5�����"�%�%�%�����4��(�(�(�(�(r?c�:�|�t��dSr<r�rUs r�_testRecvmsgIntoBadArgsz(RecvmsgIntoTests._testRecvmsgIntoBadArgs
r�r?c���ttt����}|j�d�|fD����\}}}}|�|tt����|�|tt����|�||j��|�|g��|�|d���dS)Nc3�K�|]}|V��dSr<r`r�s  rr�z<RecvmsgIntoTests.testRecvmsgIntoGenerator.<locals>.<genexpr>
s"������1�Q������r?Tr�)	r�r�r�r]rMr�r8r�rHrs      r�testRecvmsgIntoGeneratorz)RecvmsgIntoTests.testRecvmsgIntoGenerator
s�����C���!�!��'+�~�'B�'B��������( �( �$����������S���*�*�*�����i��n�n�-�-�-�� � ��t�}�5�5�5�����"�%�%�%�����4��(�(�(�(�(r?c�:�|�t��dSr<r�rUs r�_testRecvmsgIntoGeneratorz*RecvmsgIntoTests._testRecvmsgIntoGenerator
r�r?c���tjddgtt��z��}|j�|g��\}}}}|�|tt����|�|���t��|�||j��|�|g��|�	|d���dS)Nr�rTr�)
r�r�r�r]rMr��tobytesr8r�rHrs      r�testRecvmsgIntoArrayz%RecvmsgIntoTests.testRecvmsgIntoArray
s����k�#��s�S��X�X�~�.�.��'+�~�'B�'B�C�5�'I�'I�$����������S���*�*�*����������,�,�,�� � ��t�}�5�5�5�����"�%�%�%�����4��(�(�(�(�(r?c�:�|�t��dSr<r�rUs r�_testRecvmsgIntoArrayz&RecvmsgIntoTests._testRecvmsgIntoArray)
r�r?c�v�td��}td��}td��}|j�|t|��dd�|g��\}}}}|�|td����|�|td����|�|td����|�|td	����|�||j��|�|g��|�|d
���dS)Ns----s
0123456789s--------------r��	�Mary had a little lambsMarys
01 had a 9slittle lamb---Tr�)	r�r]rM�
memoryviewr�r�r8r�rH)rV�b1�b2�b3r
r�r�rs        r�testRecvmsgIntoScatterz'RecvmsgIntoTests.testRecvmsgIntoScatter,
s'��
�w�
�
��
�}�
%�
%��
�(�
)�
)��'+�~�'B�'B�
��B����!��$�b�)�(+�(+�$����������%>�!?�!?�@�@�@�����Y�w�/�/�0�0�0�����Y�}�5�5�6�6�6�����Y�'8�9�9�:�:�:�� � ��t�}�5�5�5�����"�%�%�%�����4��(�(�(�(�(r?c�0�|�d��dS)Nr)r(rUs r�_testRecvmsgIntoScatterz(RecvmsgIntoTests._testRecvmsgIntoScatter;
s�����3�4�4�4�4�4r?N)r]r^r_rrrrrrr"r$r`r?rr
r
�s�������)�)�)�8���	)�	)�	)����)�)�)����
)�
)�
)�5�5�5�5�5r?r
c��eZdZ	ddlZedej��Zn
#e$rdZYnwxYwee	d��d���Z
ee	d��d���ZdS)�CmsgMacroTestsrNi����CMSG_LENc��|jtjd��z
dz}tt	d����tt	|dz
|����z}|�tjd��t
jd��jdz��|D]\}tj|��}|�|tjd��z
|��|�	||j���]|�
ttjd��|�
ttj|��|�
ttjtj
��dS)Nrr��rLr�r1)�socklen_t_limitrr'�listr8r(r��itemsizer�rOr�r6r?�maxsize)rV�toobigrn�nr=s     r�testCMSG_LENzCmsgMacroTests.testCMSG_LENL
s9���%����(:�(:�:�Q�>���e�C�j�j�!�!�D��v��|�V�)D�)D�$E�$E�E��	
���6�?�1�-�-�u�{�3�/?�/?�/H�1�/L�M�M�M��	<�	<�A��/�!�$�$�C����S�6�?�1�#5�#5�5�q�9�9�9�� � ��d�&:�;�;�;�;����-���"�=�=�=�	
���-���&�A�A�A����-���#�+�F�F�F�F�Fr?r�c�|�|jtjd��z
dz}tt	d����tt	|dz
|����z}tjd��}|�|t
jd��jdz��|D]�}tj|��}|�||��|�|tj	|����|�||tj	d��z��|�
||j��|}��|�ttjd��|�ttj|��|�ttjtj��dS)Nr�r)rrLr�r1)r*rr�r+r8r(r�r,rNr'rOr�r6r?r-)rVr.rn�lastr/r=s      r�testCMSG_SPACEzCmsgMacroTests.testCMSG_SPACEa
s|���%��(9�!�(<�(<�<�q�@���e�C�j�j�!�!�D��v��|�V�)D�)D�$E�$E�E��� ��#�#�����4���S�!1�!1�!:�Q�!>�?�?�?��	�	�A��#�A�&�&�C��#�#�C��.�.�.��#�#�C����);�);�<�<�<��#�#�C��V�_�Q�-?�-?�)?�@�@�@�� � ��d�&:�;�;�;��D�D����-��):�B�?�?�?�	
���-��):�F�C�C�C����-��):�C�K�H�H�H�H�Hr?)r]r^r_rW�minrYr*r�r�rr0r3r`r?rr&r&?
s�������=������#�j�)�*;�<�<�����%�%�%�$����%����
�\�&�*�%�%�G�G�&�%�G�(�\�&�,�'�'�I�I�(�'�I�I�Is��&�&r&c��eZdZdZd�Zd�Zd�Zd�Zd�Zd7d	�Z	d
�Z
d�Zd�Zd
�Z
eed��d���Zejd���Zd�Zd�Zejejdkd��ejed��eed��d�������Zejejejdkd��ejed��d�������Zejejdkd��ejed��eed��d�������Zejejejdkd��ejed��d�������Zd�Zejejdkd��d���Zd�Z d�Z!d�Z"eed��d ���Z#e#jd!���Z$d8d"�Z%d#�Z&d$�Z'd%�Z(d&�Z)d'�Z*d(�Z+d)�Z,d*�Z-d+�Z.d,�Z/d8d-�Z0d.�Z1d/�Z2d0�Z3d1�Z4d2�Z5d3�Z6d4�Z7d5�Z8d6S)9�
SCMRightsTesti����c�l�g}t|��D]�}tj��\}}|�tj|��|�tj|��t	j|t|���	����|�
|����|Sr<)r8r<�mkstemprqr?rEr!�writer��encode�append)rVr/�fdsrLrprGs      r�newFDszSCMRightsTest.newFDs�
s������q���	�	�A��'�)�)�H�B���O�O�B�I�t�,�,�,��O�O�B�H�b�)�)�)��H�R��Q�������)�)�)��J�J�r�N�N�N�N��
r?c��t|��D]m\}}tj|dtj��|�tj|d��t
|��������ndS)Nrr�)�	enumerater?�lseek�SEEK_SETr�r�r�r:)rVr<r/rps    r�checkFDszSCMRightsTest.checkFDs�
st���s�^�^�	A�	A�E�A�r��H�R��B�K�(�(�(����R�W�R��.�.��A���
�
���@�@�@�@�	A�	Ar?c�<�|�|j|��dSr<)rq�closeRecvmsgFDsr2s  rr.z#SCMRightsTest.registerRecvmsgResult�
s������,�f�5�5�5�5�5r?c	�B�|dD]�\}}}|tjkr|tjkrotjd��}|�|dt|��t|��|jzz
���|D]}tj|�����dS)Nr�rL)	rr��
SCM_RIGHTSr��	frombytesr�r,r?r!)rV�recvmsg_result�
cmsg_level�	cmsg_type�	cmsg_datar<rps       rrDzSCMRightsTest.closeRecvmsgFDs�
s���1?�q�0A�	!�	!�,�J�	�9��f�/�/�/���!2�2�2��k�#�&�&���
�
�i�)I��I���#�i�.�.�3�<�*G�H�)I�J�K�K�K��!�!�B��H�R�L�L�L�L��	!�	!r?c
��|�|�tgtjtjt
jd|�|����fg��tt����dS)NrL)	r�r,r�rr�rFr�r=r�)rVr/s  r�createAndSendFDszSCMRightsTest.createAndSendFDs�
s{��	
���� � �#��#)�#4�#)�#4�#(�;�s�D�K�K��N�N�#C�#C�#E�"F�
G�
G�
��H�H�	�	�	�	�	r?r�rc�\�|\}}}}|�|t��|�||j��|�|dt
j|���|�|t��|�	t|��|��tjd��}	|D]�}
|�|
t��|
\}}}
|�|t
j
��|�|t
j��|�|
t��|�t|
��t zd��|	�|
����|�t|	��|��|�|	��dS)NT�rArCrDrLr)r�r�r8r�rHrr9r�r+rOr�r��tupler�rFr*�
SIZEOF_INTrGrB)rV�numfdsr/�maxcmsgs�ignoreflagsr�r�r�rr<�itemrIrJrKs              r�checkRecvmsgFDszSCMRightsTest.checkRecvmsgFDs�
s���%+�!��W�e�T�����c�"�"�"�� � ��t�}�5�5�5�����4�F�4E�*�	�	,�	,�	,�	
���g�t�,�,�,����S��\�\�8�4�4�4��k�#�����	%�	%�D��!�!�$��.�.�.�/3�,�J�	�9����Z��):�;�;�;����Y��(9�:�:�:��!�!�)�U�3�3�3����S��^�^�j�8�!�<�<�<��M�M�)�$�$�$�$�����S���6�*�*�*��
�
�c�����r?c	��|�d|�|jtt��d����dS)Nr�r��rVr0r]r�r�rUs r�testFDPassSimplezSCMRightsTest.testFDPassSimple�
�L�����Q����t�~�/2�3�x�x��!@�!@�	A�	A�	A�	A�	Ar?c
�*�|�|�tgtjtjt
jd|�d�������fg��tt����dS)NrLr�)
r�r,r�rr�rFr�r=rr�rUs r�_testFDPassSimplezSCMRightsTest._testFDPassSimple�
s������� � ����#��#��+�c�4�;�;�q�>�>�2�2�:�:�<�<�>�?�
@�
@�

��H�H�
	�	�	�	�	r?c	��|�d|�|jtt��d����dS)Nr�r�rXrUs r�testMultipleFDPassz SCMRightsTest.testMultipleFDPass�
rZr?c�0�|�d��dS�Nr��rMrUs r�_testMultipleFDPassz!SCMRightsTest._testMultipleFDPass�
������a� � � � � r?r�c��|�d|�|jtt��tjdtz������dSr`)rVr0r]r�r�rr�rQrUs r�testFDPassCMSG_SPACEz"SCMRightsTest.testFDPassCMSG_SPACE�
s^��	
���
�t�~�~�d�n�c�#�h�h�$�/��J��?�?�A�A�	B�	B�	B�	B�	Br?c�0�|�d��dSr`rarUs r�_testFDPassCMSG_SPACEz#SCMRightsTest._testFDPassCMSG_SPACE�
s�����a� � � � � r?c���|�d|�|jtt��tjdtz����t
j���dS)Nr�r��rT)	rVr0r]r�r�rr'rQr9rUs r�testFDPassCMSG_LENz SCMRightsTest.testFDPassCMSG_LEN�
sc�����Q�!�^�^�D�N�C��H�H�,2�O�A�
�N�,K�,K�M�M�
*0�):�
	�	<�	<�	<�	<�	<r?c�0�|�d��dSrQrarUs r�_testFDPassCMSG_LENz!SCMRightsTest._testFDPassCMSG_LEN�
rcr?r�zskipping, see issue #12958zskipping, see issue #22397c	��|�d|�|jtt��d��d���dS)Nr�r�)rSrXrUs r�testFDPassSeparatez SCMRightsTest.testFDPassSeparate�
sK��	
���Q�!�^�^�D�N�C��H�H�e�L�L�&'�	�	)�	)�	)�	)�	)r?c�j�|�d��\}}|�|�tgtjtjtjd|g��ftjtjtjd|g��fg��tt����dS�Nr�rL�	r=r�r,r�rr�rFr�r��rV�fd0�fd1s   r�_testFDPassSeparatez!SCMRightsTest._testFDPassSeparate����;�;�q�>�>���S����� � �#��&�*;�*0�*;�*/�+�c�C�5�*A�*A�*C�+1�*;�*0�*;�*/�+�c�C�5�*A�*A�*C�)D�
E�
E�
��H�H�	�	�	�	�	r?c��d}|�||�|jtt��tjt��tjt|z��z��dt
j	���dS)Nr�)rSrT)
rVr0r]r�r�rr�rQr'r9)rV�num_fdss  r�testFDPassSeparateMinSpacez(SCMRightsTest.testFDPassSeparateMinSpaces��������W�!�^�^�D�N�C��H�H�,2�,=�j�,I�,I�,2�O�J��<P�,Q�,Q�-R�S�S�'(�V�5F�		�	H�	H�	H�	H�	Hr?c�j�|�d��\}}|�|�tgtjtjtjd|g��ftjtjtjd|g��fg��tt����dSrprqrrs   r�_testFDPassSeparateMinSpacez)SCMRightsTest._testFDPassSeparateMinSpacervr?c��	|�|g|��}nM#t$r@}|�|jt��|�|g��}Yd}~nd}~wwxYw|�|t
|����dSr<)r,rr�r!r'r�r�)rVr�r�r
r�s     r�sendAncillaryIfPossiblez%SCMRightsTest.sendAncillaryIfPossible*s���	1��)�)�3�%��9�9�F�F���	1�	1�	1��!�!�!�'�3�/�/�/��)�)�3�%�0�0�F�F�F�F�F�F�����	1����	
�����S���*�*�*�*�*s��
A$�6A�A$zsee issue #24725c	��|�d|�|jtt��d��t
j���dS)Nrr�ri)rVr0r]r�r�rr9rUs r�testFDPassEmptyzSCMRightsTest.testFDPassEmpty5sT��	
���Q����t�~�/2�3�x�x��!@�!@�)/�):�	�	<�	<�	<�	<�	<r?c�l�|�ttjtjdfg��dS�Nr?)r}r�rr�rFrUs r�_testFDPassEmptyzSCMRightsTest._testFDPassEmpty=s>���$�$�S�F�,=�,2�,=�,/�,1�+2�	3�	3�	3�	3�	3r?c�D�|�|jtt��d��\}}}}|�|t��|�||j��|�|dtj	���|�
t|��d��|D]n\}}}|�|tj��|�|tj��|�
t|��t���odS)Nr�Tr�r�)r0r]r�r�r�r8r�rHrr9rOr�rF�
assertLessrQ�rVr�r�r�rrIrJrKs        r�testFDPassPartialIntz"SCMRightsTest.testFDPassPartialIntBs��$(�N�N�4�>�36�s�8�8�U�%D�%D�!��W�e�T�����c�"�"�"�� � ��t�}�5�5�5�����4��0A��B�B�B����S��\�\�1�-�-�-�07�	8�	8�,�J�	�9����Z��):�;�;�;����Y��(9�:�:�:��O�O�C�	�N�N�J�7�7�7�7�	8�	8r?c	���|�ttjtjtjd|jg�����dd�fg��dS)NrLr1)r}r�rr�rFr��badfdrrUs r�_testFDPassPartialIntz#SCMRightsTest._testFDPassPartialIntOse���$�$�������k�#��
�|�,�,�4�4�6�6�s��s�;�=�
>�	?�	?�	?�	?�	?r?c	��|�|jtt��d��\}}}}|�|t��|�||j��|�|dtj	���|�
t|��d��tjd��}|D]�\}}}|�|tj��|�|tj
��|�|dt|��t|��|jzz
�����|�
t|��d��|�|��dS)Nr�Tr�r�rL)r0r]r�r�r�r8r�rHrr9rOr�r�rFrGr,rB)	rVr�r�r�rr<rIrJrKs	         r�testFDPassPartialIntInMiddlez*SCMRightsTest.testFDPassPartialIntInMiddleVsq��%)�N�N�4�>�36�s�8�8�U�%D�%D�!��W�e�T�����c�"�"�"�� � ��t�}�5�5�5�����4��0A��B�B�B����S��\�\�1�-�-�-��k�#����07�	G�	G�,�J�	�9����Z��):�;�;�;����Y��(9�:�:�:��M�M�)�%E��	�N�N�c�)�n�n�s�|�&C�D�%E�F�
G�
G�
G�
G����S��X�X�q�)�)�)��
�
�c�����r?c
�\�|�d��\}}|�ttjtjt
jd||jg�����dd�ftjtjt
jd|g��fg��dS)Nr�rLr1)	r=r}r�rr�rFr�r�rrrs   r�_testFDPassPartialIntInMiddlez+SCMRightsTest._testFDPassPartialIntInMiddleis����;�;�q�>�>���S��$�$�������k�#��T�Z�0�1�1�9�9�;�;�C�R�C�@�B������k�#��u�%�%�'�
(�	)�	)�	)�	)�	)r?c���|\}}}}|�|t��|�||j��|�|g��|�|dt
j|���dS)NT�rArBrD)r�r�r8r�rHrr9)rVr/rTr�r�r�rs       r�checkTruncatedHeaderz"SCMRightsTest.checkTruncatedHeaderus���%+�!��W�e�T�����c�"�"�"�� � ��t�}�5�5�5�����"�%�%�%�����4�&�2C�*�	�	,�	,�	,�	,�	,r?c��|�|�|jtt����t
j���dS�Nri�r�r0r]r�r�rr9rUs r�testCmsgTruncNoBufSizez$SCMRightsTest.testCmsgTruncNoBufSizesP��	
�!�!�$�.�.����S���"J�"J�/5�.?�		"�	A�	A�	A�	A�	Ar?c�0�|�d��dSrQrarUs r�_testCmsgTruncNoBufSizez%SCMRightsTest._testCmsgTruncNoBufSize�rcr?c��|�|�|jtt��d��t
j���dS)Nrrir�rUs r�testCmsgTrunc0zSCMRightsTest.testCmsgTrunc0�sN���!�!�$�.�.����S���1�"M�"M�.4�.?�	"�	A�	A�	A�	A�	Ar?c�0�|�d��dSrQrarUs r�_testCmsgTrunc0zSCMRightsTest._testCmsgTrunc0�rcr?c��|�|�|jtt��d����dSrQ)r�r0r]r�r�rUs r�testCmsgTrunc1zSCMRightsTest.testCmsgTrunc1�s4���!�!�$�.�.����S���1�"M�"M�N�N�N�N�Nr?c�0�|�d��dSrQrarUs r�_testCmsgTrunc1zSCMRightsTest._testCmsgTrunc1�rcr?c��|�|�|jtt��t
dz����dSr�)r�r0r]r�r�rQrUs r�testCmsgTrunc2IntzSCMRightsTest.testCmsgTrunc2Int�sP��	
�!�!�$�.�.����S���1;�a��#A�#A�	B�	B�	B�	B�	Br?c�0�|�d��dSrQrarUs r�_testCmsgTrunc2Intz SCMRightsTest._testCmsgTrunc2Int�rcr?c	��|�|�|jtt��tjd��dz
����dSr)r�r0r]r�r�rr'rUs r�testCmsgTruncLen0Minus1z%SCMRightsTest.testCmsgTruncLen0Minus1�sY���!�!�$�.�.����S���17���1C�1C�a�1G�#I�#I�	J�	J�	J�	J�	Jr?c�0�|�d��dSrQrarUs r�_testCmsgTruncLen0Minus1z&SCMRightsTest._testCmsgTruncLen0Minus1�rcr?c�x�|�|jtt��|��\}}}}|�|t��|�||j��|�|dtj	���|dkr|gkrdS|�t|��d��|d\}}	}
|�|tj
��|�|	tj��|�t|
��|��|�
t|
��|��tjd��}|�|
dt|
��t|
��|jzz
���|�|��dS)NT�rArBrr�rL)r0r]r�r�r�r8r�rHrr9r�rFrNrOr�rGr,rB)rV�ancbuf�maxdata�mindatar�r�r�rrIrJrKr<s            r�checkTruncatedArrayz!SCMRightsTest.checkTruncatedArray�s���
%)�N�N�4�>�36�s�8�8�V�%E�%E�!��W�e�T�����c�"�"�"�� � ��t�}�5�5�5�����4�&�2C��D�D�D��a�<�<�G�r�M�M��F�����W���q�)�)�)�+2�1�:�(�
�I�y�����V�%6�7�7�7�����F�$5�6�6�6�����I����8�8�8����S��^�^�W�5�5�5��k�#�����
�
�i�!A��I���#�i�.�.�3�<�"?�@�!A�B�	C�	C�	C��
�
�c�����r?c�X�|�tjd��d���dS)Nr�r�r��r�rr'rUs r�testCmsgTruncLen0zSCMRightsTest.testCmsgTruncLen0�s+��� � ����(:�(:�A� �F�F�F�F�Fr?c�0�|�d��dSrQrarUs r�_testCmsgTruncLen0z SCMRightsTest._testCmsgTruncLen0�rcr?c�^�|�tjd��dzd���dS)Nrr�r�r�rUs r�testCmsgTruncLen0Plus1z$SCMRightsTest.testCmsgTruncLen0Plus1�s0��� � ����(:�(:�Q�(>�� �J�J�J�J�Jr?c�0�|�d��dSr�rarUs r�_testCmsgTruncLen0Plus1z%SCMRightsTest._testCmsgTruncLen0Plus1�rcr?c�l�|�tjt��t���dS)Nr��r�rr'rQrUs r�testCmsgTruncLen1zSCMRightsTest.testCmsgTruncLen1�s8��� � ���
�(C�(C�)3�	!�	5�	5�	5�	5�	5r?c�0�|�d��dSr�rarUs r�_testCmsgTruncLen1z SCMRightsTest._testCmsgTruncLen1�rcr?c��|�tjdtz��dz
dtzdz
���dS)Nr�r�r�r�rUs r�testCmsgTruncLen2Minus1z%SCMRightsTest.testCmsgTruncLen2Minus1�sJ��� � ����J��(G�(G�!�(K�*+�j�.�A�)=�	!�	?�	?�	?�	?�	?r?c�0�|�d��dSr�rarUs r�_testCmsgTruncLen2Minus1z&SCMRightsTest._testCmsgTruncLen2Minus1�rcr?N)r�r�r)9r]r^r_r�r=rBr.rDrMrVrYr\r^rbr�rrerwrgrjrlr�r�r?rmrrnruryr{r}rr�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r`r?rr6r6z
s�������
�E�
�
�
�A�A�A�6�6�6�
!�
!�
!��������6A�A�A�
���A�A�A�
!�!�!��\�&�,�'�'�B�B�(�'�B��%�!�!�&�%�!�<�<�<�!�!�!��X�_�S�\�X�-�/K�L�L��X�_�S�6�7�7��\�&�,�'�'�)�)�(�'�8�7�M�L�)��#��X�_�S�\�X�-�/K�L�L��X�_�S�6�7�7�	�	�8�7�M�L�$�#�	��X�_�S�\�X�-�/K�L�L��X�_�S�6�7�7��\�&�,�'�'�H�H�(�'�8�7�M�L�H� �+��X�_�S�\�X�-�/K�L�L��X�_�S�6�7�7�	�	�8�7�M�L�,�+�	�	+�	+�	+��X�_�S�\�X�-�/A�B�B�<�<�C�B�<�3�3�3�
8�8�8�?�?�?��\�&�,�'�'���(�'��$"�-�	)�	)�.�-�	)�,�,�,�,�A�A�A�!�!�!�A�A�A�
!�!�!�O�O�O�!�!�!�B�B�B�!�!�!�J�J�J�!�!�!�����0G�G�G�!�!�!�K�K�K�!�!�!�5�5�5�!�!�!�?�?�?�!�!�!�!�!r?r6c	�X�eZdZdZdZd�Zd5d�Zeedd��d	���Z	e	j
d
���Zeeddd��d���Zej
d
���Z
eejd��eedd��d�����Zej
d���Z		d5d�Zeedddd��d���Zej
d���Zeeddddd��d���Zej
d���Zeejd��eeddddd��d�����Zej
d���Zeejd��eeddddd��d�����Zej
d���Zd6d�Zeedd��d���Zej
d���Zeedd��d���Zej
d ���Zeedd��d!���Zej
d"���Zeedd��d#���Z e j
d$���Z!eedd��d%���Z"e"j
d&���Z#eedd��d'���Z$e$j
d(���Z%d6d)�Z&eeddddd��d*���Z'e'j
d+���Z(eeddddd��d,���Z)e)j
d-���Z*eeddddd��d.���Z+e+j
d/���Z,eeddddd��d0���Z-e-j
d1���Z.eeddddd��d2���Z/e/j
d3���Z0d4S)7�RFC3542AncillaryTestr�r1c�Z�i}|D]%\}}}|�||f|��||||f<�&|Sr<)r�)rVr��drIrJrKs      r�ancillaryMappingz%RFC3542AncillaryTest.ancillaryMapping�sQ��
��07�	3�	3�,�J�	�9����j�)�4�a�8�8�8�)2�A�z�9�%�&�&��r?r(rc��|j�tjtjd��|j���|�|jtt��|��\}}}}|�
|t��|�||j��|�
|dtj|���|�
t|��d��|�|dt ��|d\}}	}
|�
|tj��|�
|	tj��|�|
t$��|�
t|
��t&��t)jd��}|�|
��|�|dd��|�|d|��dS)Nr�TrOrrL)r]r�rr�rr%r�r0r�r�r�r8r�rHr9r�rPr�r*rQr�rGrNrO)rV�
ancbufsize�maxhoprTr�r�r�rrIrJrKr�s            r�
checkHopLimitz"RFC3542AncillaryTest.checkHopLimit�s���
	
��!�!�&�"5�"(�":�A�	?�	?�	?��������$(�N�N�4�>�36�s�8�8�Z�%I�%I�!��W�e�T�	
����c�"�"�"�� � ��t�}�5�5�5�����4�F�4E�*�	�	,�	,�	,�	
����W���q�)�)�)����g�a�j�%�0�0�0�+2�1�:�(�
�I�y�����V�%8�9�9�9�����F�$8�9�9�9����i��/�/�/�����Y����4�4�4��K�����	���I��������!��a�(�(�(����Q�q�T�6�*�*�*�*�*r?rr�c�2�|�d���dS�Nr��r�)r�rUs r�testRecvHopLimitz%RFC3542AncillaryTest.testRecvHopLimits!��	
���e��,�,�,�,�,r?c��|�|j�|j�����|�t
��dSr��r�r%r�rIr(r�rUs r�_testRecvHopLimitz&RFC3542AncillaryTest._testRecvHopLimitsF��
	
�����,�,�T�5F�,�G�G�H�H�H����#�����r?r�c�`�|�tjt�����dS)Nr�)r�rr�rQrUs r�testRecvHopLimitCMSG_SPACEz/RFC3542AncillaryTest.testRecvHopLimitCMSG_SPACE's,��	
���f�&7�
�&C�&C��D�D�D�D�Dr?c��|�|j�|j�����|�t
��dSr�r�rUs r�_testRecvHopLimitCMSG_SPACEz0RFC3542AncillaryTest._testRecvHopLimitCMSG_SPACE,�D�������,�,�T�5F�,�G�G�H�H�H����#�����r?r�c�>�|�d|j���dS�Nr�)r�r�)r��	hop_limitrUs r�testSetHopLimitz$RFC3542AncillaryTest.testSetHopLimit6s%��
	
���e�D�N��C�C�C�C�Cr?c�R�|�|j�|j�����|�|�tgtjtj	tj
d|jg��fg��tt����dS�Nr�rL)
r�r%r�rIr�r,r�rr�r�r�r�r�rUs r�_testSetHopLimitz%RFC3542AncillaryTest._testSetHopLimit=s��������,�,�T�5F�,�G�G�H�H�H����� � �#��#)�#6��8L�#(�;�s�T�^�4D�#E�#E�#G�"H�
I�
I�
��H�H�		�	�	�	�	r?c��|j�tjtjd��|j�tjtjd��|j���|�|jtt��|��\}}}}|�|t��|�||j
��|�|dtj|���|�t|��d��|�|��}|tjtjf}	|�t|	��t$��t'jd��}
|
�|	��|�|
dd��|�|
dd��|tjtjf}|�t|��t$��t'jd��}
|
�|��|�|
dd��|�|
d|��dS)Nr�TrOr�rLrr()r]r�rr�rr�r%r�r0r�r�r�r8r�rHr9r�r�rQr�rGrNrOr�)rVr�r�rTr�r�r�r�ancmap�tcdatar��hldatas            r�checkTrafficClassAndHopLimitz1RFC3542AncillaryTest.checkTrafficClassAndHopLimitFs+��	
��!�!�&�"5�"(�":�A�	?�	?�	?���!�!�&�"5�"(�"8�!�	=�	=�	=��������$(�N�N�4�>�36�s�8�8�Z�%I�%I�!��W�e�T�	
����c�"�"�"�� � ��t�}�5�5�5�����4�F�4E�*�	�	,�	,�	,�����W���q�)�)�)��&�&�w�/�/����,�f�.@�A�B������V���j�1�1�1��K�����	���F��������!��a�(�(�(����Q�q�T�3�'�'�'���,�f�.B�C�D������V���j�1�1�1��K�����	���F��������!��a�(�(�(����Q�q�T�6�*�*�*�*�*r?r�r�c�2�|�d���dSr�)r�rUs r�testRecvTrafficClassAndHopLimitz4RFC3542AncillaryTest.testRecvTrafficClassAndHopLimitjs!��	
�)�)�U�)�;�;�;�;�;r?c��|�|j�|j�����|�t
��dSr�r�rUs r� _testRecvTrafficClassAndHopLimitz5RFC3542AncillaryTest._testRecvTrafficClassAndHopLimitpr�r?c�f�|�tjt��dz���dS�Nr�r�)r�rr�rQrUs r�)testRecvTrafficClassAndHopLimitCMSG_SPACEz>RFC3542AncillaryTest.testRecvTrafficClassAndHopLimitCMSG_SPACEus>��
	
�)�)��(��4�4�q�8�	*�	:�	:�	:�	:�	:r?c��|�|j�|j�����|�t
��dSr�r�rUs r�*_testRecvTrafficClassAndHopLimitCMSG_SPACEz?RFC3542AncillaryTest._testRecvTrafficClassAndHopLimitCMSG_SPACE}r�r?c�>�|�d|j���dSr��r�r�rUs r�testSetTrafficClassAndHopLimitz3RFC3542AncillaryTest.testSetTrafficClassAndHopLimit�s7��	
�)�)�U�15��	*�	A�	A�	A�	A�	Ar?c��|�|j�|j�����|�|�tgtjtj	tj
d|jg��ftjtjtj
d|j
g��fg��tt����dSr�)r�r%r�rIr�r,r�rr�r�r��
traffic_classr�r�r�rUs r�_testSetTrafficClassAndHopLimitz4RFC3542AncillaryTest._testSetTrafficClassAndHopLimit�s��������,�,�T�5F�,�G�G�H�H�H����� � �#��#)�#6��8J�#(�;�s�T�5G�4H�#I�#I�#K�#)�#6��8L�#(�;�s�T�^�4D�#E�#E�#G�"H�
I�
I�

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

F%�CF � F%c���|j�tjtjd��|j���|�dn|f}|j|jtt��g|�R�\}}}}|�
|t��|�||j��|�
|g��|�
|dtj|���dS)Nr�r`Tr�)r]r�rr�rr%r�r0r�r�r�r8r�rHr9)rVr�rTr+r�r�r�rs        r�checkHopLimitTruncatedHeaderz1RFC3542AncillaryTest.checkHopLimitTruncatedHeader�s��	
��!�!�&�"5�"(�":�A�	?�	?�	?���������'�r�r�j�]��$2�D�N�4�>�36�s�8�8�%D�>B�%D�%D�%D�!��W�e�T�	
����c�"�"�"�� � ��t�}�5�5�5�����"�%�%�%�����4�&�2C�*�	�	,�	,�	,�	,�	,r?c�H�|�dtj���dS)N�r�rT�r�rr9rUs rr�z+RFC3542AncillaryTest.testCmsgTruncNoBufSize�s:��	
�)�)�T�
7=�6G�	*�	I�	I�	I�	I�	Ir?c��|�|j�|j�����|�t
��dSr�r�rUs rr�z,RFC3542AncillaryTest._testCmsgTruncNoBufSize�r�r?c�H�|�dtj���dS)Nrr�r�rUs r�testSingleCmsgTrunc0z)RFC3542AncillaryTest.testSingleCmsgTrunc0�s8��	
�)�)�Q�6<�6G�	*�	I�	I�	I�	I�	Ir?c��|�|j�|j�����|�t
��dSr�r�rUs r�_testSingleCmsgTrunc0z*RFC3542AncillaryTest._testSingleCmsgTrunc0�r�r?c�2�|�d���dS)Nr�r�)r�rUs r�testSingleCmsgTrunc1z)RFC3542AncillaryTest.testSingleCmsgTrunc1�s���)�)�Q�)�7�7�7�7�7r?c��|�|j�|j�����|�t
��dSr�r�rUs r�_testSingleCmsgTrunc1z*RFC3542AncillaryTest._testSingleCmsgTrunc1�r�r?c�B�|�dtz���dSr�)r�rQrUs r�testSingleCmsgTrunc2Intz,RFC3542AncillaryTest.testSingleCmsgTrunc2Int�s#���)�)�Q��^�)�D�D�D�D�Dr?c��|�|j�|j�����|�t
��dSr�r�rUs r�_testSingleCmsgTrunc2Intz-RFC3542AncillaryTest._testSingleCmsgTrunc2Int�r�r?c�\�|�tjd��dz
���dS)Nrr�r�)r�rr'rUs r�testSingleCmsgTruncLen0Minus1z2RFC3542AncillaryTest.testSingleCmsgTruncLen0Minus1�s.���)�)�V�_�Q�5G�5G�!�5K�)�L�L�L�L�Lr?c��|�|j�|j�����|�t
��dSr�r�rUs r�_testSingleCmsgTruncLen0Minus1z3RFC3542AncillaryTest._testSingleCmsgTruncLen0Minus1�r�r?c��|j�tjtjd��|j���|�|jtt��tj
t��dz
��\}}}}|�|t��|�
||j��|�|dtj���|�t|��d��|rv|d\}}}|�|tj��|�|tj��|�t|��t��dSdS)Nr�Tr�r)r]r�rr�rr%r�r0r�r�r'rQr�r8r�rHr9rOr�r�r�s        r�testSingleCmsgTruncInDataz.RFC3542AncillaryTest.testSingleCmsgTruncInDatasV��
	
��!�!�&�"5�"(�":�A�	?�	?�	?��������$(�N�N��N�C��H�H�f�o�j�&A�&A�A�&E�%G�%G�!��W�e�T�	
����c�"�"�"�� � ��t�}�5�5�5�����4�&�2C��D�D�D����S��\�\�1�-�-�-��	8�/6�q�z�,�J�	�9����Z��)<�=�=�=����Y��(<�=�=�=��O�O�C�	�N�N�J�7�7�7�7�7�		8�	8r?c��|�|j�|j�����|�t
��dSr�r�rUs r�_testSingleCmsgTruncInDataz/RFC3542AncillaryTest._testSingleCmsgTruncInDatar�r?c��|j�tjtjd��|j�tjtjd��|j���|�|jtt��|��\}}}}|�|t��|�||j
��|�|dtj|���|�t|��d��|d\}}}	|�|tj��|�|tjtjh��|�t|	��t&��t)jd��}
|
�|	��|�|
dd��|�|
dd��dS)Nr�Tr�rrLr()r]r�rr�rr�r%r�r0r�r�r�r8r�rHr9r�r�r�rQr�rGrNrO)rVr�rTr�r�r�rrIrJrKr�s           r�checkTruncatedSecondHeaderz/RFC3542AncillaryTest.checkTruncatedSecondHeaders���	
��!�!�&�"5�"(�":�A�	?�	?�	?���!�!�&�"5�"(�"8�!�	=�	=�	=��������$(�N�N�4�>�36�s�8�8�Z�%I�%I�!��W�e�T�	
����c�"�"�"�� � ��t�}�5�5�5�����4�&�2C�*�	�	,�	,�	,�	
����W���q�)�)�)�+2�1�:�(�
�I�y�����V�%8�9�9�9��
�
�i�&�"4�f�6J�!K�L�L�L�����Y����4�4�4��K�����	���I��������!��a�(�(�(����Q�q�T�3�'�'�'�'�'r?c�v�|�tjt��tj���dSr�)rrr�rQr9rUs r�testSecondCmsgTrunc0z)RFC3542AncillaryTest.testSecondCmsgTrunc0?sC��	
�'�'��(9�*�(E�(E�4:�4E�	(�	G�	G�	G�	G�	Gr?c��|�|j�|j�����|�t
��dSr�r�rUs r�_testSecondCmsgTrunc0z*RFC3542AncillaryTest._testSecondCmsgTrunc0Er�r?c�d�|�tjt��dz��dSrQ�rrr�rQrUs r�testSecondCmsgTrunc1z)RFC3542AncillaryTest.testSecondCmsgTrunc1Js.��	
�'�'��(9�*�(E�(E��(I�J�J�J�J�Jr?c��|�|j�|j�����|�t
��dSr�r�rUs r�_testSecondCmsgTrunc1z*RFC3542AncillaryTest._testSecondCmsgTrunc1Or�r?c�t�|�tjt��dtzz��dSr�rrUs r�testSecondCmsgTrunc2Intz,RFC3542AncillaryTest.testSecondCmsgTrunc2IntTs?��	
�'�'��(9�*�(E�(E�()�J��)7�	8�	8�	8�	8�	8r?c��|�|j�|j�����|�t
��dSr�r�rUs r�_testSecondCmsgTrunc2Intz-RFC3542AncillaryTest._testSecondCmsgTrunc2IntZr�r?c��|�tjt��tjd��zdz
��dSr)rrr�rQr'rUs r�testSecondCmsgTruncLen0Minus1z2RFC3542AncillaryTest.testSecondCmsgTruncLen0Minus1_sR��	
�'�'��(9�*�(E�(E�(.���(:�(:�);�=>�)?�	@�	@�	@�	@�	@r?c��|�|j�|j�����|�t
��dSr�r�rUs r�_testSecondCmsgTruncLen0Minus1z3RFC3542AncillaryTest._testSecondCmsgTruncLen0Minus1er�r?c�p�|j�tjtjd��|j�tjtjd��|j���|�|jtt��tjt��tj
t��zdz
��\}}}}|�|t��|�||j��|�|dtj���tjtjh}|�d��\}}}|�|tj��|�|��|�t|��t��t/jd��}	|	�|��|�|	dd��|�|	dd��|rv|�d��\}}}|�|tj��|�|��|�t|��t��|�|g��dS)Nr�Tr�rrLr()r]r�rr�rr�r%r�r0r�r�r�rQr'r�r8r�rHr9r�r��pop�remover�rGrNrOr�)
rVr�r�r�r�
cmsg_typesrIrJrKr�s
          r�testSecondCmsgTruncInDataz.RFC3542AncillaryTest.testSecondCmsgTruncInDatajsC��
	
��!�!�&�"5�"(�":�A�	?�	?�	?���!�!�&�"5�"(�"8�!�	=�	=�	=��������$(�N�N��N�C��H�H���j�)�)�F�O�J�,G�,G�G�!�K�%M�%M�!��W�e�T�	
����c�"�"�"�� � ��t�}�5�5�5�����4�&�2C��D�D�D��(�&�*>�?�
�+2�;�;�q�>�>�(�
�I�y�����V�%8�9�9�9����)�$�$�$�����Y����4�4�4��K�����	���I��������!��a�(�(�(����Q�q�T�3�'�'�'��	8�/6�{�{�1�~�~�,�J�	�9����Z��)<�=�=�=����i�(�(�(��O�O�C�	�N�N�J�7�7�7�����"�%�%�%�%�%r?c��|�|j�|j�����|�t
��dSr�r�rUs r�_testSecondCmsgTruncInDataz/RFC3542AncillaryTest._testSecondCmsgTruncInData�r�r?N)r(rr�)1r]r^r_r�r�r�r�r�rr�rwr�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�rrrrrr
rrrrrrrrrrr!r&r(r`r?rr�r��s��������I��M����+�+�+�+�8�\�&�-��?�?�-�-�@�?�-��!���"�!���\�&�,�(;�_�M�M�E�E�N�M�E� �+���,�+���\�&�-��+�+��\�&�-��?�?�D�D�@�?�,�+�D�
� ���!� ��?B�12�"+�"+�"+�"+�H�\�&�-��#�]�4�4�<�<�4�4�<�%�0���1�0���\�&�,�(;�_�#�]�4�4�:�:�4�4�:�/�:���;�:���\�&�-��+�+��\�&�,�(;�_�#�]�4�4�A�A�4�4�,�+�A�$�/���0�/���\�&�-��+�+��\�&�,�(;�_�#�]�4�4�A�A�4�4�,�+�A�� �/�/�!� �/�*,�,�,�,�(�\�&�-��?�?�I�I�@�?�I��'���(�'���\�&�-��?�?�I�I�@�?�I��%���&�%���\�&�-��?�?�8�8�@�?�8��%���&�%���\�&�-��?�?�E�E�@�?�E��(���)�(���\�&�-��?�?�M�M�@�?�M�#�.���/�.���\�&�-��?�?�8�8�@�?�8�*�*���+�*��(�(�(�(�@�\�&�,�(;�_�#�]�4�4�G�G�4�4�G��%���&�%���\�&�,�(;�_�#�]�4�4�K�K�4�4�K��%���&�%���\�&�,�(;�_�#�]�4�4�8�8�4�4�8��(���)�(���\�&�,�(;�_�#�]�4�4�@�@�4�4�@�#�.���/�.���\�&�,�(;�_�#�]�4�4�!&�!&�4�4�!&�F�*���+�*���r?r�c��eZdZdS)�SendrecvmsgUDPTestBaseN�r]r^r_r`r?rr*r*��������	�Dr?r*r�c��eZdZdS)�SendmsgUDPTestNr+r`r?rr.r.���������Dr?r.r�c��eZdZdS)�RecvmsgUDPTestNr+r`r?rr1r1�r/r?r1rMc��eZdZdS)�RecvmsgIntoUDPTestNr+r`r?rr3r3�r/r?r3c��eZdZd�ZdS)�SendrecvmsgUDP6TestBasec�R�|�|dd�|dd���dSrr4r5s   rr8z+SendrecvmsgUDP6TestBase.checkRecvmsgAddress��0��	
����s��s��U�3�B�3�Z�0�0�0�0�0r?N�r]r^r_r8r`r?rr5r5�s#������1�1�1�1�1r?r5rErjr(c��eZdZdS)�SendmsgUDP6TestNr+r`r?rr:r:��������	�Dr?r:c��eZdZdS)�RecvmsgUDP6TestNr+r`r?rr=r=�r;r?r=c��eZdZdS)�RecvmsgIntoUDP6TestNr+r`r?rr?r?�r;r?r?r�c��eZdZdS)�RecvmsgRFC3542AncillaryUDP6TestNr+r`r?rrArA��������	�Dr?rAc��eZdZdS)�#RecvmsgIntoRFC3542AncillaryUDP6TestNr+r`r?rrDrD�s������	�Dr?rDc��eZdZdS)�SendrecvmsgUDPLITETestBaseNr+r`r?rrFrF�s������
	�Dr?rFc��eZdZdS)�SendmsgUDPLITETestNr+r`r?rrHrH�r;r?rHc��eZdZdS)�RecvmsgUDPLITETestNr+r`r?rrJrJ�r;r?rJc��eZdZdS)�RecvmsgIntoUDPLITETestNr+r`r?rrLrL�r;r?rLc��eZdZd�ZdS)�SendrecvmsgUDPLITE6TestBasec�R�|�|dd�|dd���dSrr4r5s   rr8z/SendrecvmsgUDPLITE6TestBase.checkRecvmsgAddress�r7r?Nr8r`r?rrNrN�s#������1�1�1�1�1r?rNc��eZdZdS)�SendmsgUDPLITE6TestNr+r`r?rrQrQ�rBr?rQc��eZdZdS)�RecvmsgUDPLITE6TestNr+r`r?rrSrSrBr?rSc��eZdZdS)�RecvmsgIntoUDPLITE6TestNr+r`r?rrUrUrBr?rUc��eZdZdS)�#RecvmsgRFC3542AncillaryUDPLITE6TestNr+r`r?rrWrWs������	�Dr?rWc��eZdZdS)�'RecvmsgIntoRFC3542AncillaryUDPLITE6TestNr+r`r?rrYrYs������	�Dr?rYc��eZdZdS)�SendrecvmsgTCPTestBaseNr+r`r?rr[r[)r/r?r[c��eZdZdS)�SendmsgTCPTestNr+r`r?rr]r]-r/r?r]c��eZdZdS)�RecvmsgTCPTestNr+r`r?rr_r_1r,r?r_c��eZdZdS)�RecvmsgIntoTCPTestNr+r`r?rrara6r,r?rac��eZdZdS)�SendrecvmsgSCTPStreamTestBaseNr+r`r?rrcrc<r,r?rcz6IPPROTO_SCTP: [Errno 62] Protocol not supported on AIXrPrBrcc��eZdZdS)�SendmsgSCTPStreamTestNr+r`r?rrereAr;r?rec���eZdZ�fd�Z�xZS)�RecvmsgSCTPStreamTestc����	tt|�����dS#t$r6}|jtjkr�|�d��Yd}~dSd}~wwxYw�Nz4sporadic ENOTCONN (kernel issue?) - see issue #13876)r!rgr�rr!�ENOTCONNrt�rVr�r#s  �rr�z$RecvmsgSCTPStreamTest.testRecvmsgEOFMs����	R��'��.�.�=�=�?�?�?�?�?���	R�	R�	R��w�%�.�(�(���M�M�P�Q�Q�Q�Q�Q�Q�Q�Q�Q�����	R�����',�
A,�+A'�'A,�r]r^r_r�r%r&s@rrgrgG�A�������R�R�R�R�R�R�R�R�Rr?rgc���eZdZ�fd�Z�xZS)�RecvmsgIntoSCTPStreamTestc����	tt|�����dS#t$r6}|jtjkr�|�d��Yd}~dSd}~wwxYwri)r!rpr�rr!rjrtrks  �rr�z(RecvmsgIntoSCTPStreamTest.testRecvmsgEOF[s����	R��+�T�2�2�A�A�C�C�C�C�C���	R�	R�	R��w�%�.�(�(���M�M�P�Q�Q�Q�Q�Q�Q�Q�Q�Q�����	R���rlrmr&s@rrprpUrnr?rpc��eZdZdS)�SendrecvmsgUnixStreamTestBaseNr+r`r?rrsrsdr/r?rsrKc��eZdZdS)�SendmsgUnixStreamTestNr+r`r?rruruhr,r?ruc��eZdZdS)�RecvmsgUnixStreamTestNr+r`r?rrwrwmr;r?rwc��eZdZdS)�RecvmsgIntoUnixStreamTestNr+r`r?rryrysr;r?ryr�rFc��eZdZdS)�RecvmsgSCMRightsStreamTestNr+r`r?rr{r{yr,r?r{c��eZdZdS)�RecvmsgIntoSCMRightsStreamTestNr+r`r?rr}r}~r;r?r}c�`��eZdZ�fd�ZejZeed��r	dZ	d�Z
�xZSdZ	d�Z
�xZS)�InterruptedTimeoutBasec����t�����tjtjd���}|�tjtj|��dS)Nc��ddzSr�r`)�signumrs  rrsz.InterruptedTimeoutBase.setUp.<locals>.<lambda>�s
���A��r?)r!rWrrrq)rV�orig_alrm_handlerr#s  �rrWzInterruptedTimeoutBase.setUp�sS���
���
�
����"�M�&�.�*E�*E�G�G������
�v�~�7H�I�I�I�I�Ir?�	setitimerg�������?c�D�tjtj|��dSr<)rr��ITIMER_REAL�rV�secondss  r�setAlarmzInterruptedTimeoutBase.setAlarm�s����V�/��9�9�9�9�9r?r�c�.�tj|��dSr<)rr�r�s  rr�zInterruptedTimeoutBase.setAlarm�s���L��!�!�!�!�!r?)r]r^r_rWrr�rHrr�
alarm_timer�r%r&s@rrr�s��������
J�J�J�J�J��&�G�
�w�v�{�#�#�
"��
�	:�	:�	:�	:�	:�	:�	:��
�	"�	"�	"�	"�	"�	"�	"r?r�siginterruptr�r�z+Don't have signal.alarm or signal.setitimerc���eZdZ�fd�Zd�Zd�Zd�Zd�Zd�Ze	e
j
d��d���Ze	e
j
d	��d
���Z�xZ
S)�InterruptedRecvTimeoutTestc���t�����|j�|j��dSr<)r!rWrQr�rHr"s �rrWz InterruptedRecvTimeoutTest.setUp�s2���
���
�
�����	���T�\�*�*�*�*�*r?c��	|�|j��|�t��5}||i|��ddd��n#1swxYwY|�d��dS#|�d��wxYwr�)r�r�r�r�rVrOr+r,r�s     r�checkInterruptedRecvz/InterruptedRecvTimeoutTest.checkInterruptedRecv�s���	��M�M�$�/�*�*�*��"�"�#4�5�5�
&����d�%�f�%�%�%�
&�
&�
&�
&�
&�
&�
&�
&�
&�
&�
&����
&�
&�
&�
&�
�M�M�!�������D�M�M�!�������s-�4A-�	A�A-�A�A-�A�A-�-Bc�F�|�|jjd��dSr�)r�rQr�rUs r�testInterruptedRecvTimeoutz5InterruptedRecvTimeoutTest.testInterruptedRecvTimeout�s"���!�!�$�)�.�$�7�7�7�7�7r?c�`�|�|jjtd����dSr�)r�rQ�	recv_intor�rUs r�testInterruptedRecvIntoTimeoutz9InterruptedRecvTimeoutTest.testInterruptedRecvIntoTimeout�s)���!�!�$�)�"5�y����G�G�G�G�Gr?c�F�|�|jjd��dSr�)r�rQr�rUs r�testInterruptedRecvfromTimeoutz9InterruptedRecvTimeoutTest.testInterruptedRecvfromTimeout�s#���!�!�$�)�"4�d�;�;�;�;�;r?c�`�|�|jjtd����dSr�)r�rQr�r�rUs r�"testInterruptedRecvfromIntoTimeoutz=InterruptedRecvTimeoutTest.testInterruptedRecvfromIntoTimeout�s)���!�!�$�)�"9�9�T�?�?�K�K�K�K�Kr?r�c�F�|�|jjd��dSr�)r�rQr�rUs r�testInterruptedRecvmsgTimeoutz8InterruptedRecvTimeoutTest.testInterruptedRecvmsgTimeout�s#���!�!�$�)�"3�T�:�:�:�:�:r?rMc�b�|�|jjtd��g��dSr�)r�rQrMr�rUs r�!testInterruptedRecvmsgIntoTimeoutz<InterruptedRecvTimeoutTest.testInterruptedRecvmsgIntoTimeout�s,���!�!�$�)�"8�9�T�?�?�:K�L�L�L�L�Lr?)r]r^r_rWr�r�r�r�r�r�rr�r�r%r&s@rr�r��s��������+�+�+�+�+����8�8�8�H�H�H�<�<�<�L�L�L��\�&�-��+�+�;�;�,�+�;��\�&�-��0�0�M�M�1�0�M�M�M�M�Mr?r�c����eZdZ�fd�Zd�Zd�Zejdd��d���Zejdd��d���Z	ejdd��e
ejd��d	�����Z�xZ
S)
�InterruptedSendTimeoutTestc���t�����|���|_|�|jj��t
j|j���}|�	��|j
���\|_}|�|jj��|�
��|j�|j��dS)N)�target)r!rWrr	rqr!r��Thread�	doConnect�startrQr�rr�r�rH)rV�
cli_threadrr#s   �rrWz InterruptedSendTimeoutTest.setUp�s����
���
�
�������)�)��������,�-�-�-��%�T�^�<�<�<�
�������"�i�.�.�0�0���
�t�����
�+�,�,�,���������!�!�$�,�/�/�/�/�/r?c�D�|j�|j��dSr<)r	r�rrUs rr�z$InterruptedSendTimeoutTest.doConnect�s ������t�~�.�.�.�.�.r?c��	|�t��5}	|�|j��||i|���##1swxYwY	|�d��dS#|�d��wxYw�NTr)r�rr�r�r�s     r�checkInterruptedSendz/InterruptedSendTimeoutTest.checkInterruptedSend�s���	��"�"�#4�5�5�
*��*��M�M�$�/�2�2�2��D�$�)�&�)�)�)�*�
*�
*�
*�
*����
*�
*�
*�
*�
*�

�M�M�!�������D�M�M�!�������s(�A$�%A�A�A$�A�	A$�$A;ryr c�F�|�|jjd��dS�Nr�)r�r	r�rUs r�testInterruptedSendTimeoutz5InterruptedSendTimeoutTest.testInterruptedSendTimeout�s#���!�!�$�.�"5�x�@�@�@�@�@r?c�R�|�|jjd|j��dSr�)r�r	r�rrUs r�testInterruptedSendtoTimeoutz7InterruptedSendTimeoutTest.testInterruptedSendtoTimeouts4��	
�!�!�$�.�"7��"&�.�	2�	2�	2�	2�	2r?r�c�H�|�|jjdg��dSr�)r�r	r�rUs r�testInterruptedSendmsgTimeoutz8InterruptedSendTimeoutTest.testInterruptedSendmsgTimeout	s'��	
�!�!�$�.�"8�8�*�E�E�E�E�Er?)r]r^r_rWr�r�r�requires_mac_verr�r�r�rr�r%r&s@rr�r��s��������0�0�0�0�0�/�/�/�
�
�
��W��b�!�$�$�A�A�%�$�A��W��b�!�$�$�2�2�%�$�2��W��b�!�$�$��\�&�-��+�+�F�F�,�+�%�$�F�F�F�F�Fr?r�c��eZdZd�Zd�ZdS)�
TCPCloserTestc�|�|j���\}}|���|j}t	j|gggd��\}}}|�||g��|�|�d��d��|���|���dS)N��?r�r?)rQr�r!r�r�r�r�)rVr�r�sdr�r9r�s       r�	testClosezTCPCloserTest.testCloses����Y�%�%�'�'�
��d��
�
����
�X��!�=�"��r�2�s�;�;���e�S������t�$�$�$����������S�)�)�)�	
�
�
�����
�
�����r?c�z�|j�t|jf��t	jd��dS�Nr�)r�r�r�rSr�r�rUs r�
_testClosezTCPCloserTest._testCloses0������$��	�*�+�+�+��
�3�����r?N)r]r^r_r�r�r`r?rr�r�s2�������������r?r�c�@�eZdZdd�Zd�Zd�Zd�Zd�Zd�Zd�Z	d	�Z
d
S)�BasicSocketPairTestr�c�>�t�||���dSr�)rr�r�s  rr�zBasicSocketPairTest.__init__%s!��������<�<�<�<�<r?c��|�|tj��ttd��r&|�|jtj��n%|�|jtj��|�|jtj��|�|j	d��dS)NrKr)
r�rrr�r�rKrPrvrBr�rUs  r�_check_defaultsz#BasicSocketPairTest._check_defaults(s������d�F�M�2�2�2��6�9�%�%�	:����T�[�&�.�9�9�9�9����T�[�&�.�9�9�9������F�$6�7�7�7������Q�'�'�'�'�'r?c�:�|�|j��dSr<)r�r�rUs r�
_testDefaultsz!BasicSocketPairTest._testDefaults1s�����T�X�&�&�&�&�&r?c�:�|�|j��dSr<)r�rQrUs r�testDefaultsz BasicSocketPairTest.testDefaults4s�����T�Y�'�'�'�'�'r?c�p�|j�d��}|�|t��dSr��rQr�r�r�r�s  rr�zBasicSocketPairTest.testRecv7r�r?c�D�|j�t��dSr<�r�r�r�rUs rr�zBasicSocketPairTest._testRecv;�����
�
�c�����r?c�D�|j�t��dSr<�rQr�r�rUs r�testSendzBasicSocketPairTest.testSend>����	���s�����r?c�p�|j�d��}|�|t��dSr��r�r�r�r�r�s  r�	_testSendzBasicSocketPairTest._testSendA�1���h�m�m�D�!�!������c�"�"�"�"�"r?Nr�)r]r^r_r�r�r�r�r�r�r�r�r`r?rr�r�#s�������=�=�=�=�(�(�(�'�'�'�(�(�(�#�#�#�������#�#�#�#�#r?r�c���eZdZd�Z�fd�Z�fd�Zd�Zd�Zd�Zd�Z	d�Z
d	�Zej
eed
��peed��d��ejejd
��d�����Zd�Zd�Zd�Z�xZS)�PurePythonSocketPairTestc��	tjtj��S#t$r!tjtj��cYSwxYwr<)rrrjrrPrUs rrz#PurePythonSocketPairTest.socketpairKsN��	5��$�V�_�5�5�5���	5�	5�	5��$�V�^�4�4�4�4�4�	5���s� �(A�
Ac����ttd��r(tj|_tjt_nd|_t
�����dS)Nr)rr�rr�_orig_sp�_fallback_socketpairr!rWr"s �rrWzPurePythonSocketPairTest.setUpTsM����7�L�)�)�	!�"�-�D�M�!'� ;�F���!�D�M�
���
�
�����r?c�|��t�����|j�|jt_dSdSr<)r!rZr�rrr"s �rrZz!PurePythonSocketPairTest.tearDown_s9���
���������=�$� $�
�F����%�$r?c�p�|j�d��}|�|t��dSr�r�r�s  r�	test_recvz"PurePythonSocketPairTest.test_recver�r?c�D�|j�t��dSr<r�rUs r�
_test_recvz#PurePythonSocketPairTest._test_recvir�r?c�D�|j�t��dSr<r�rUs r�	test_sendz"PurePythonSocketPairTest.test_sendlr�r?c�p�|j�d��}|�|t��dSr�r�r�s  r�
_test_sendz#PurePythonSocketPairTest._test_sendor�r?c��tjtj��\}}|���|���dSr<)rrrPr!�rVr�rAs   r�	test_ipv4z"PurePythonSocketPairTest.test_ipv4ss6���$�V�^�4�4���S��	�	�����	�	�����r?c��dSr<r`rUs r�
_test_ipv4z#PurePythonSocketPairTest._test_ipv4xrr?r��IPV6_V6ONLY� IPV6_V6ONLY option not supportedr�c��tjtj��\}}|���|���dSr<)rrrjr!r�s   r�	test_ipv6z"PurePythonSocketPairTest.test_ipv6{s8��
�$�V�_�5�5���S��	�	�����	�	�����r?c��dSr<r`rUs r�
_test_ipv6z#PurePythonSocketPairTest._test_ipv6�rr?c�T���tjj�d���fd�}dx}}	|tj_|�t��5tj��\}}ddd��n#1swxYwY�tj_�r����|r|���|r|���dSdS#�tj_�r����|r|���|r|���wwxYw)Nc�4���|��}���tjtjtj�����d��	��|dd���n#t
tf$rYnwxYw��d��|S)NFr�T)rrPrBrdr��BlockingIOError�InterruptedError)rVr��inject_sock�orig_getsocknames  ��r�inject_getsocketnamez[PurePythonSocketPairTest.test_injected_authentication_failure.<locals>.inject_getsocketname�s����'�'��-�-�H��"�$�m�F�N�F�<N�O�O���'�'��.�.�.���'�'���!���5�5�5�5��'�)9�:�����D������'�'��-�-�-��Os�A,�,B�?B)rr�r�rrr!)rVr��sock1�sock2r�r�s    @@r�$test_injected_authentication_failurez=PurePythonSocketPairTest.test_injected_authentication_failure�s�����!�=�4����
	�
	�
	�
	�
	�
	�����	�(<�F�M�%��"�"�7�+�+�
3�
3�%�0�2�2���u�
3�
3�
3�
3�
3�
3�
3�
3�
3�
3�
3����
3�
3�
3�
3�)9�F�M�%��
$��!�!�#�#�#��
����
�
�
��
����
�
�
�
�
�
�
��)9�F�M�%��
$��!�!�#�#�#��
����
�
�
��
����
�
�
�
�
���s0�+C�A/�#C�/A3�3C�6A3�7C�AD'c��dSr<r`rUs r�%_test_injected_authentication_failurez>PurePythonSocketPairTest._test_injected_authentication_failure�s	��
	
�r?)r]r^r_rrWrZr�r�r�r�r�r�r�r�rr�r�rr�r�r�r�r�r%r&s@rr�r�Fs`�������
5�5�5�	�	�	�	�	�.�.�.�.�.�#�#�#�������#�#�#����

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

�
�
����B
�
�
�
�
�
�
r?r�c��eZdZdd�Zd�Zd�Zd�Zejd���Z	eje��Z
eje
ed��d��ejd	d
d��d�����Zd
�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�ZdS)�NonBlockingTCPTestsr�c�n�tj��|_t�||���dSr�)r�r��eventr�r�r�s  rr�zNonBlockingTCPTests.__init__�s0���_�&�&��
��&�&�t�
�&�C�C�C�C�Cr?c��|�|j���|��|dk}|�|���|��t�a|du}t	j|tjtj��}|�t|tjz��|��dSdS)N�)	r�rQr{�getblockingr�F_GETFLr?�
O_NONBLOCK�bool)rVrFrH�blocking�fd_blocking�flags      r�assert_sock_timeoutz'NonBlockingTCPTests.assert_sock_timeout�s��������-�-�/�/��9�9�9��s�N������)�)�+�+�X�6�6�6���#�d�?�K��;�t�U�]�B�M�B�B�D�����d�R�]�&:�!;�!;�;�[�I�I�I�I�I��r?c��|j�d��|�|jd��|j�d��|�|jd��|j�d��|�|jd��|j�d��|�|jd��|j�d��|�|jd��|j�d��|�|jd��dS)NTFr�rry)rQrdrr�rUs r�testSetBlockingz#NonBlockingTCPTests.testSetBlocking�s���	���d�#�#�#�� � ���D�1�1�1��	���e�$�$�$�� � ���C�0�0�0��	���T�"�"�"�� � ���D�1�1�1��	���Q����� � ���A�.�.�.��	���R� � � �� � ���B�/�/�/��	���Q����� � ���A�.�.�.�.�.r?c��dSr<r`rUs r�_testSetBlockingz$NonBlockingTCPTests._testSetBlocking�rr?c�<�ddl}|j|jkr|�d��|j�d��|�|jd��|j�|jdz��|�|jd��dS)Nrzneeds UINT_MAX < ULONG_MAXFr�r�)rWr��	ULONG_MAXrtrQrdrr�s  r�testSetBlocking_overflowz,NonBlockingTCPTests.testSetBlocking_overflow�s���	�������!4�4�4��M�M�6�7�7�7��	���e�$�$�$�� � ���C�0�0�0��	���i�0�1�4�5�5�5�� � ���D�1�1�1�1�1r?rcztest needs socket.SOCK_NONBLOCKr���c���|j���tjtjtjtjz��|_|�|jd��dSr�)rQr!rrPrBrcrrUs r�testInitNonBlockingz'NonBlockingTCPTests.testInitNonBlocking�s[��
	
�	�������M�&�.�"(�"4�v�7K�"K�M�M��	�� � ���A�.�.�.�.�.r?c��dSr<r`rUs r�_testInitNonBlockingz(NonBlockingTCPTests._testInitNonBlocking�rr?c�D�td��5|j�d��|j���\}}|�|j��|�|�����ddd��dS#1swxYwYdS)Nry)rJrQr�r�rqr!r�r{rs   r�testInheritFlagsBlockingz,NonBlockingTCPTests.testInheritFlagsBlocking�s���&�d�
+�
+�	1�	1��I� � ��$�$�$���)�)�+�+�J�D�$��O�O�D�J�'�'�'����d�o�o�/�/�0�0�0�		1�	1�	1�	1�	1�	1�	1�	1�	1�	1�	1�	1����	1�	1�	1�	1�	1�	1s�A8B�B�Bc�R�|j�t|jf��dSr<�r�r�r�rSrUs r�_testInheritFlagsBlockingz-NonBlockingTCPTests._testInheritFlagsBlocking�%������$��	�*�+�+�+�+�+r?c�J�d}t|��5|j�d��|j���\}}|�|j��|�|���|��ddd��dS#1swxYwYdS)Ng4@ry)rJrQr�r�rqr!r�r{)rV�default_timeoutr�rs    r�testInheritFlagsTimeoutz+NonBlockingTCPTests.testInheritFlagsTimeouts�����
%�o�
6�
6�	A�	A��I� � ��$�$�$���)�)�+�+�J�D�$��O�O�D�J�'�'�'����T�_�_�.�.��@�@�@�		A�	A�	A�	A�	A�	A�	A�	A�	A�	A�	A�	A����	A�	A�	A�	A�	A�	As�A9B�B�Bc�R�|j�t|jf��dSr<rrUs r�_testInheritFlagsTimeoutz,NonBlockingTCPTests._testInheritFlagsTimeoutrr?c���|j�d��tj��}|�t
��5|j���\}}ddd��n#1swxYwYtj��|z
}|�|d��|j�	��tj
|jgggtj��\}}}|j|vr|�
d��|j���\}}|�|j��|�|�����dS)NFr�z'Error trying to do accept after select.)rQrdr��	monotonicr�r�r�r�r�r�r�r�LONG_TIMEOUTr�rqr!r�r{)rV�
start_timer�r�dtr�r9r�s        r�
testAcceptzNonBlockingTCPTests.testAcceptss���	���e�$�$�$��^�%�%�
�
�
�
��
/�
/�	,�	,���)�)�+�+�J�D�$�	,�	,�	,�	,�	,�	,�	,�	,�	,�	,�	,����	,�	,�	,�	,�
�^�
�
�
�
*������C� � � ��
������!�=�$�)��b�"�g�>R�S�S���e�S��9�D� � ��I�I�?�@�@�@��Y�%�%�'�'�
��d�����
�#�#�#����$�/�/�+�+�,�,�,�,�,s�A1�1A5�8A5c��|j���|j�t|jf��dSr<)r�r�r�r�r�rSrUs r�_testAcceptzNonBlockingTCPTests._testAccept*s9��	
�
����������$��	�*�+�+�+�+�+r?c��|j���\}}|�|j��|�d��|�t��5|�tt����}ddd��n#1swxYwY|j
���tj|gggtj��\}}}||vr|�d��|�tt����}|�|t��dS)NFz0Error during select call to non-blocking socket.)rQr�rqr!rdr�r�r�r�r�r�r�r�rr!r�r�)rVr�rr�r�r9r�s       rr�zNonBlockingTCPTests.testRecv1sK���Y�%�%�'�'�
��d�����
�#�#�#���������
�
��
/�
/�	&�	&��)�)�C��H�H�%�%�C�	&�	&�	&�	&�	&�	&�	&�	&�	&�	&�	&����	&�	&�	&�	&�	
�
������!�=�$���R��9M�N�N���e�S��t����I�I�H�I�I�I��i�i��C���!�!������c�"�"�"�"�"s�&(B�B�!Bc���|j�t|jf��|j���|j�t��dSr<)r�r�r�rSr�r�r	r�rUs rr�zNonBlockingTCPTests._testRecvEsQ������$��	�*�+�+�+�	
�
������	
���������r?Nr�)r]r^r_r�rrr
rr�r
�_testSetBlocking_overflowr�r�rr�requires_linux_versionrrrrrrr$r&r�r�r`r?rr�r��ss������D�D�D�D�J�J�J�"/�/�/�(
�
�
�
��
2�
2���
2�!5�� 4�5E� F� F���X������9�9�:�<�<�#�W�#�A�q�"�-�-�/�/�.�-�<�<�/�
�
�
�1�1�1�,�,�,�	A�	A�	A�,�,�,�-�-�-�,,�,�,�#�#�#�(����r?r�c���eZdZ	dZdZdZdZdZeZ	dZ
eZd!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$dS)"�FileObjectClassTestCaser1r	�strictNrr+r�c�>�t�||���dSr�r�r�s  rr�z FileObjectClassTestCase.__init__fr�r?c��d�td��D��\|_|_|_|_t
�|��|j�|j	|j
|j|j|j
���|_dS)Nc�4�g|]}tj����Sr`)r�r��r�rLs  rr�z1FileObjectClassTestCase.setUp.<locals>.<listcomp>js3��G1�G1�G1�"#�I�O���G1�G1�G1r?r��r/�errors�newline)r8�evt1�evt2�
serv_finished�cli_finishedrrWrr�	read_moderur/r3r4�	read_filerUs rrWzFileObjectClassTestCase.setUpis���G1�G1�',�Q�x�x�G1�G1�G1�C��	�4�9�d�0�$�2C��!�!�$�'�'�'���/�/��N�D�L��}��[��l�	0�$�$����r?c���|j���|j���|�|jj��d|_t�|��dSr<)r7r�r:r!r��closedrrZrUs rrZz FileObjectClassTestCase.tearDownssc������ � � �������������-�.�.�.�����$�$�T�*�*�*�*�*r?c��t�|��|j�|j|j|j|j|j���|_	dS)Nr2)
rr�r	r�
write_moderur/r3r4�
write_filerUs rr�z#FileObjectClassTestCase.clientSetUpzsP���'�'��-�-�-��.�1�1��O�T�\��}��[��l�	2�$�$����r?c���|j���|j���|�|jj��d|_t�|��dSr<)r8r�r?r!r�r<rr�rUs rr�z&FileObjectClassTestCase.clientTearDown�sc���������������������.�/�/�/�����*�*�4�0�0�0�0�0r?c��|j�d��|j�d��|�t
|jjd��|�t��5}|j�d��ddd��n#1swxYwY|�dt|j	����dS)Nr�r�z!cannot read from timed out object)
rr�r:r�r�rrr�r�r�)rV�ctxs  r�testReadAfterTimeoutz,FileObjectClassTestCase.testReadAfterTimeout�s���	
�
� � ��#�#�#�����A�������,���(;�Q�?�?�?�
�
�
�w�
'�
'�	#�3��N����"�"�"�	#�	#�	#�	#�	#�	#�	#�	#�	#�	#�	#����	#�	#�	#�	#��
�
�9�3�s�}�;M�;M�N�N�N�N�Ns�5B�B �#B c��|j�|jdd���|j���|j���dS)Nrr�)r?r9�	write_msg�flushr7r�rUs r�_testReadAfterTimeoutz-FileObjectClassTestCase._testReadAfterTimeout�sR������d�n�Q�q�S�1�2�2�2������������!�!�!�!�!r?c���|j�t|j��dz
��}|j�d��}||z}|�||j��dSr�)r:r�r��read_msgr�)rV�	first_seg�
second_segr�s    r�
testSmallReadz%FileObjectClassTestCase.testSmallRead�sc���N�'�'��D�M�(:�(:�1�(<�=�=�	��^�(�(��+�+�
��*�$������d�m�,�,�,�,�,r?c�v�|j�|j��|j���dSr<�r?r9rErFrUs r�_testSmallReadz&FileObjectClassTestCase._testSmallRead��4������d�n�-�-�-���������r?c�n�|j���}|�||j��dSr<)r:r�r�rIr�s  r�testFullReadz$FileObjectClassTestCase.testFullRead�s3���n�!�!�#�#������d�m�,�,�,�,�,r?c�v�|j�|j��|j���dSr<)r?r9rEr!rUs r�
_testFullReadz%FileObjectClassTestCase._testFullRead�rPr?c��t|j����}	|j�d��}|sn||z
}�#|�||j��dSrQ)rvrIr:r�r�)rVrP�chars   r�testUnbufferedReadz*FileObjectClassTestCase.testUnbufferedRead�sl��!�d�4�=�!�!�#�#��	��>�&�&�q�)�)�D��
���4�K�C�		�
	
����d�m�,�,�,�,�,r?c�v�|j�|j��|j���dSr<rNrUs r�_testUnbufferedReadz+FileObjectClassTestCase._testUnbufferedRead�rPr?c�n�|j���}|�||j��dSr<)r:�readliner�rI�rV�lines  r�testReadlinez$FileObjectClassTestCase.testReadline�s3���~�&�&�(�(������t�}�-�-�-�-�-r?c�v�|j�|j��|j���dSr<rNrUs r�
_testReadlinez%FileObjectClassTestCase._testReadline�rPr?c��|j���|j���}|�||j��dSr<)rr!r:r�r�rIr�s  r�testCloseAfterMakefilez.FileObjectClassTestCase.testCloseAfterMakefile�sG���
�������n�!�!�#�#������d�m�,�,�,�,�,r?c�v�|j�|j��|j���dSr<rNrUs r�_testCloseAfterMakefilez/FileObjectClassTestCase._testCloseAfterMakefile�rPr?c�"�|j���|j�t	t
����}t
|jt��r|�	��}|�
||j��dSr<)r:r!rr�r�r�rurIr��decoder�r�s  r�testMakefileAfterMakefileClosez6FileObjectClassTestCase.testMakefileAfterMakefileClose�sp����������m� � ��S���*�*���d�m�S�)�)�	��*�*�,�,�C�����d�m�,�,�,�,�,r?c�v�|j�|j��|j���dSr<rNrUs r�_testMakefileAfterMakefileClosez7FileObjectClassTestCase._testMakefileAfterMakefileClose�rPr?c�F�|�|jj��dSr<)r�r:r<rUs r�testClosedAttrz&FileObjectClassTestCase.testClosedAttr�s"�����D�N�1�1�2�2�2�2�2r?c�F�|�|jj��dSr<)r�r?r<rUs r�_testClosedAttrz'FileObjectClassTestCase._testClosedAttr�s"�����D�O�2�2�3�3�3�3�3r?c��|�|jj|j��|�|jj|j�����dSr<)r�r:r-r9r�rr�rUs r�testAttributesz&FileObjectClassTestCase.testAttributes�sN�������,�d�n�=�=�=������,�d�m�.B�.B�.D�.D�E�E�E�E�Er?c��|�|jj|j��|�|jj|j�����dSr<)r�r?r-r>r�r	r�rUs r�_testAttributesz'FileObjectClassTestCase._testAttributes�sN�������-�t��?�?�?������-�t�~�/D�/D�/F�/F�G�G�G�G�Gr?c��|j���|�t|jj��|j���|�t|jj��dSr<)r:r!r�r|r�rrr�rUs r�
testRealClosez%FileObjectClassTestCase.testRealClose�sf������������*�d�n�&;�<�<�<��
���������'�4�=�#<�=�=�=�=�=r?c��dSr<r`rUs r�_testRealClosez&FileObjectClassTestCase._testRealClose�rr?r�)%r]r^r_rur/r3r4r9r�rIr>rEr�rWrZr�r�rCrGrLrOrRrTrWrYr^r`rbrdrgrirkrmrorqrsrur`r?rr,r,Ps�������	��G��H�
�F��G��I��H��J��I�B�B�B�B�$�$�$�+�+�+�$�$�$�1�1�1�
O�
O�
O�"�"�"�
-�-�-� � � �-�-�-�
 � � �-�-�-� � � �.�.�.�
 � � �-�-�-� � � �-�-�-� � � �3�3�3�4�4�4�F�F�F�H�H�H�>�>�>�
�
�
�
�
r?r,c�P�eZdZ	dZd�Zd�Zd�Zd�Zd�Zd�Z	d�Z
d	�Zd
�Zd�Z
dS)
�!UnbufferedFileObjectClassTestCaserc�"�|j���}|�|d|jz��|j�dd��|_|j���}|�|d|jz��dS)N�A. rr�B. )r:r[r�rErrr\s  r�testUnbufferedReadlinez8UnbufferedFileObjectClassTestCase.testUnbufferedReadline�s����~�&�&�(�(������v���6�7�7�7���/�/��a�8�8����~�&�&�(�(������v���6�7�7�7�7�7r?c��|j�d|jz��|j�d|jz��|j���dS)NryrzrNrUs r�_testUnbufferedReadlinez9UnbufferedFileObjectClassTestCase._testUnbufferedReadlinesV������f�t�~�5�6�6�6�����f�t�~�5�6�6�6���������r?c� �|j���|j�d��}|�||j��|j���|�t|jjd��dSr�)rr!r�r�rIr:r�rr�s  r�testMakefileClosez3UnbufferedFileObjectClassTestCase.testMakefileClosesz���
�������m� � ��&�&������d�m�,�,�,�����������'�4�=�#5�t�<�<�<�<�<r?c�v�|j�|j��|j���dSr<rNrUs r�_testMakefileClosez4UnbufferedFileObjectClassTestCase._testMakefileCloserPr?c���tj|j��}|j���tj|j��}|�|dz
|��dSrQ)r?r=rr:r!r�)rV�refcount_before�refcount_afters   r�testMakefileCloseSocketDestroyz@UnbufferedFileObjectClassTestCase.testMakefileCloseSocketDestroysY���/�$�-�8�8�������������7�7������1�,�n�=�=�=�=�=r?c��dSr<r`rUs r�_testMakefileCloseSocketDestroyzAUnbufferedFileObjectClassTestCase._testMakefileCloseSocketDestroyrr?c�$�|j�d��|�|j�td����d��|�|j�t|j��dz
��d��|j	�
��|j�d��|j�t|j��dz
��}|�Ctjd��|j�t|j��dz
��}td��}|j�|��}|�|d��||d|�z}|�||j��|�|j�td����d��|�|j�d��d��dS)NFryr�r�g�?rGr�)rrdr�r:�readintor�r�r�rIr5r�r6r�r�r�)rVrJrPr/r�s     r�testSmallReadNonBlockingz:UnbufferedFileObjectClassTestCase.testSmallReadNonBlocking&s����
�!�!�%�(�(�(������0�0��2���?�?��F�F�F������,�,�S���-?�-?�!�-C�D�D�d�K�K�K��	�
�
�����	���s�����N�'�'��D�M�(:�(:�Q�(>�?�?�	����J�s�O�O�O���+�+�C��
�,>�,>��,B�C�C�I���m�m���N�#�#�C�(�(������A�����#�b�q�b�'�!������d�m�,�,�,������0�0��2���?�?��F�F�F������,�,�Q�/�/��6�6�6�6�6r?c��|j�d��|j�|j��|j���|j���|j�d��dS)Nr��@)	r5r�r?r9rErFr6r�r7rUs r�_testSmallReadNonBlockingz;UnbufferedFileObjectClassTestCase._testSmallReadNonBlocking9sp���	���s��������d�n�-�-�-���������	�
�
����	
�����$�$�$�$�$r?c��|j�d��|jr|�|j��dSdS)Nr�)r8r��serv_skippedrtrUs r�testWriteNonBlockingz6UnbufferedFileObjectClassTestCase.testWriteNonBlockingBsK������s�#�#�#���	-��M�M�$�+�,�,�,�,�,�	-�	-r?c�f�d|_|j�d��dtjz}d}|j�|��}|�|d��t|��D]7}|j�|��}|�dS|�|d���8d|_dS)NFrryrz$failed to saturate the socket buffer)	r�r	rdrr
r?r9r(r8)rV�BIG�LIMITr/rLs     r�_testWriteNonBlockingz7UnbufferedFileObjectClassTestCase._testWriteNonBlockingIs��� �����"�"�5�)�)�)��W�*�*�����O�!�!�#�&�&�����1�a� � � ��u���
	G�
	G�A���%�%�c�*�*�A��y�������q�!�$�$�$�$�
!G�D���r?N)r]r^r_rur{r}rr�r�r�r�r�r�r�r`r?rrwrw�s�������<��G�8�8�8� � � �
=�=�=� � � �>�>�>�
�
�
�7�7�7�&%�%�%�-�-�-�G�G�G�G�Gr?rwc��eZdZdZdS)�#LineBufferedFileObjectClassTestCaser�N�r]r^r_rur`r?rr�r�_��������G�G�Gr?r�c��eZdZdZdS)�$SmallBufferedFileObjectClassTestCaser�Nr�r`r?rr�r�dr�r?r�c�J�eZdZ	dZe�d��ZdZeZdZ	dS)�"UnicodeReadFileObjectClassTestCaserr	r+r�N�
r]r^r_r9r�rfrIr>rEr4r`r?rr�r�is6������G��I��z�z�'�"�"�H��J��I��G�G�Gr?r�c�J�eZdZ	dZeZdZe�d��ZdZ	dS)�#UnicodeWriteFileObjectClassTestCaserr*r	r�N)
r]r^r_r9r�rIr>rfrEr4r`r?rr�r�ss6������G��I��H��J��
�
�7�#�#�I��G�G�Gr?r�c�p�eZdZ	dZe�d��ZdZe�d��ZdZ	dS)�'UnicodeReadWriteFileObjectClassTestCaserr	r*r�Nr�r`r?rr�r�}sB������G��I��z�z�'�"�"�H��J��
�
�7�#�#�I��G�G�Gr?r�c��eZdZ	d�ZdS)�NetworkConnectionTestc�h�tjt|jf��|_|j|_dSr<)r�create_connectionr�rSr�r	rUs rr�z!NetworkConnectionTest.clientSetUp�s*���+�T�4�9�,=�>�>��������r?N)r]r^r_r�r`r?rr�r��s&������#�"�"�"�"�"r?r�c��eZdZdS)�
BasicTCPTest2Nr+r`r?rr�r��s�������r?r�c��eZdZGd�dej��Zejd���Zej	d���Z
ej	d���Zd�Zd�Z
dS)	�NetworkConnectionNoServerc��eZdZd�ZdS)�$NetworkConnectionNoServer.MockSocketc� �td���)Nz	timed out)rr+s  rr�z,NetworkConnectionNoServer.MockSocket.connect�s���{�+�+�+r?N)r]r^r_r�r`r?r�
MockSocketr��s#������	,�	,�	,�	,�	,r?r�c#�K�	tj}|jt_	dV�|t_dS#|t_wxYwr<)rr�)rV�
old_sockets  r�mocked_socket_modulez.NetworkConnectionNoServer.mocked_socket_module�sE����8��]�
����
�	'��E�E�E�&�F�M�M�M��J�F�M�&�&�&�&s	�4�Ac��tj��}tjtjtj��}|�|j��|�t��5}|�	t|f��ddd��n#1swxYwY|�|jj
tj��dSr<)rr�rrPrBrqr!r�rr�r�r�r�r!�ECONNREFUSED)rVrSr�r�s    r�test_connectz&NetworkConnectionNoServer.test_connect�s����-�/�/���m�F�N�F�,>�?�?������	�"�"�"�
�
�
�w�
'�
'�	&�2��K�K��t��%�%�%�	&�	&�	&�	&�	&�	&�	&�	&�	&�	&�	&����	&�	&�	&�	&������+�U�-?�@�@�@�@�@s�1B�B�!Bc�,�tj��}|�t��5}t	jt|f��ddd��n#1swxYwYtj��}|�|j	j
|��dSr<)rr�r�rrr�r��get_socket_conn_refused_errsr�r�r!)rVrSr��expected_errnoss    r�test_create_connectionz0NetworkConnectionNoServer.test_create_connection�s����-�/�/��
�
�
�w�
'�
'�	3�2��$�d�D�\�2�2�2�	3�	3�	3�	3�	3�	3�	3�	3�	3�	3�	3����	3�	3�	3�	3�"(�D�F�F���
�
�b�l�(�/�:�:�:�:�:s�A�A�Ac���tj��}	tjt|fd���|�d��n#t$r}|}Yd}~nd}~wwxYw|�|t��|jD]}|�|t���tj
d|dtj��}|�t|��t|j����dS)NT)�
all_errorszexpected connection to failr�r)rr�rr�r�r��ExceptionGroupr��
exceptionsrr�rBr�r�)rVrSr��eg�	addressess     r�!test_create_connection_all_errorsz;NetworkConnectionNoServer.test_create_connection_all_errors�s���-�/�/��	5��$�d�D�\�d�C�C�C�C�
�I�I�3�4�4�4�4���	�	�	��B�B�B�B�B�B�����	����
	
���b�.�1�1�1���	.�	.�A��!�!�!�W�-�-�-�-��&���q�&�"4�6�6�	�	
����Y����R�]�);�);�<�<�<�<�<s�A�
A�A�Ac�L�|���5	tjtdf��|�d��nD#t
$rYn8t$r,}tjs|j	tj
kr�Yd}~nd}~wwxYwddd��dS#1swxYwYdS)Nr
zTimeoutError not raised)r�rr�r�r�rrrr�r!�EAFNOSUPPORTr�s  r�test_create_connection_timeoutz8NetworkConnectionNoServer.test_create_connection_timeout�s���
&�
&�
(�
(�		5�		5�
5��(�$���6�6�6��	�	�3�4�4�4�4��
 �
�
�
����
�
�
� �-����e�>P�1P�1P��2Q�1P�1P�1P�1P�����
����		5�		5�		5�		5�		5�		5�		5�		5�		5�		5�		5�		5����		5�		5�		5�		5�		5�		5sE�B�A�B�
B	�B�	B	�"B�?B�B	�	B�B� BN)r]r^r_rr��
contextlib�contextmanagerr�r�skip_if_tcp_blackholer�r�r�r�r`r?rr�r��s�������,�,�,�,�,�V�]�,�,�,���'�'���'��(�A�A�)�(�A��(�;�;�)�(�;�0=�=�=�$5�5�5�5�5r?r�c�h�eZdZdZd
d�Zd�Zd�Zd�ZeZd�Z	eZ
d�ZeZd	�Z
eZd
�ZeZd�ZeZd�ZdS)�NetworkConnectionAttributesTestNr�c�r�t�||���t�|��dSr�r�r�s  rr�z(NetworkConnectionAttributesTest.__init__�r�r?c�6�tj��|_dSr<)rr��source_portrUs rr�z+NetworkConnectionAttributesTest.clientSetUp�s��(�9�;�;����r?c��|j�|j���d|_t�|��dSr<r�rUs rr�z.NetworkConnectionAttributesTest.clientTearDown�s=���8���H�N�N��������%�%�d�+�+�+�+�+r?c�f�|j���\}}|���dSr<)rQr�r!rs   r�_justAcceptz+NetworkConnectionAttributesTest._justAccept�s*���Y�%�%�'�'�
��d��
�
�����r?c���tjt|jftj���|_|�|jj��|�	|jj
d��dS)Nr�r�)rr�r�rSrr�r�rqr!r�r�rUs r�_testFamilyz+NetworkConnectionAttributesTest._testFamily�s`���+�T�4�9�,=�$+�$<�>�>�>���������'�'�'�������!�,�,�,�,�,r?c�&�tjt|jftjd|jf���|_|�|jj	��|�
|j���d|j��dS)Nr�)rH�source_addressr�)rr�r�rSrr�r�r�rqr!r�r�rUs r�_testSourceAddressz2NetworkConnectionAttributesTest._testSourceAddresss����+�T�4�9�,=�$+�$<�,.��0@�+A�C�C�C���	
������'�'�'������-�-�/�/��2�D�4D�E�E�E�E�Er?c��|�tj��du��tjd��	tjt
|jf��|_|�|jj	��tjd��n#tjd��wxYw|�
|j���d��dS)NrU�r�rrFrGr�r�rSr�rqr!r�r{rUs r�_testTimeoutDefaultz3NetworkConnectionAttributesTest._testTimeoutDefault
s�������0�2�2�d�:�;�;�;�� ��$�$�$�	+��/��t�y�0A�B�B�D�H��O�O�D�H�N�+�+�+��$�T�*�*�*�*��F�$�T�*�*�*�*���������,�,�.�.��3�3�3�3�3s�AB�B-c���|�tj��du��tjd��	tjt
|jfd���|_|�|jj	��tjd��n#tjd��wxYw|�
|j���d��dS�N�r�r�rUs r�_testTimeoutNonez0NetworkConnectionAttributesTest._testTimeoutNones�������0�2�2�d�:�;�;�;�� ��$�$�$�	+��/��t�y�0A�4�P�P�P�D�H��O�O�D�H�N�+�+�+��$�T�*�*�*�*��F�$�T�*�*�*�*���������,�,�.�.��5�5�5�5�5s�AB�B/c��tjt|jfd���|_|�|j���d��dSr�)rr�r�rSr�r�r{rUs r�_testTimeoutValueNamedz6NetworkConnectionAttributesTest._testTimeoutValueNamed%sJ���+�T�4�9�,=�r�J�J�J��������,�,�.�.��3�3�3�3�3r?c���tjt|jfd��|_|�|jj��|�|j���d��dS)Nr�)	rr�r�rSr�rqr!r�r{rUs r�_testTimeoutValueNonamedz8NetworkConnectionAttributesTest._testTimeoutValueNonamed*s]���+�T�4�9�,=�r�B�B���������'�'�'������,�,�.�.��3�3�3�3�3r?r�)r]r^r_r�r�r�r�r��
testFamilyr��testSourceAddressr��testTimeoutDefaultr��testTimeoutNoner��testTimeoutValueNamedr��testTimeoutValueNonamedr�r`r?rr�r��s�������
�C�&�&�&�&�<�<�<�,�,�,�����J�-�-�-�$��F�F�F�%��	4�	4�	4�"�O�	6�	6�	6�(��4�4�4�*��4�4�4�4�4r?r�c�8�eZdZd	d�Zd�Zd�Zd�ZeZd�Zd�Z	dS)
�NetworkConnectionBehaviourTestr�c�r�t�||���t�|��dSr�r�r�s  rr�z'NetworkConnectionBehaviourTest.__init__2r�r?c��dSr<r`rUs rr�z*NetworkConnectionBehaviourTest.clientSetUp6rr?c�z�|j���d|_t�|��dSr<r�rUs rr�z-NetworkConnectionBehaviourTest.clientTearDown9r�r?c���|j���\}}|�|j��t	jd��|�d��dS)Nr��done!)rQr�rqr!r�r�r�rs   r�testInsideTimeoutz0NetworkConnectionBehaviourTest.testInsideTimeout>sR���Y�%�%�'�'�
��d�����
�#�#�#��
�1�
�
�
��	�	�(�����r?c��tjt|jf��x|_}|�d��}|�|d��dS)Nr�r�)rr�r�rSr�r�r�)rVrFr
s   r�_testInsideTimeoutz1NetworkConnectionBehaviourTest._testInsideTimeoutEsK�� �2�D�$�)�3D�E�E�E���4��y�y��|�|������x�(�(�(�(�(r?c���tjt|jfd���x|_�|�t�fd���dS)Nr�r�c�.����d��S)Nr�)r�)rFs�rrszDNetworkConnectionBehaviourTest._testOutsideTimeout.<locals>.<lambda>Ls����	�	�!���r?)rr�r�rSr�r�rrUs @r�_testOutsideTimeoutz2NetworkConnectionBehaviourTest._testOutsideTimeoutJsL��� �2�D�$�)�3D�a�P�P�P�P���4����,�(<�(<�(<�(<�=�=�=�=�=r?Nr�)
r]r^r_r�r�r�r��testOutsideTimeoutr�r�r`r?rr�r�0s{������&�&�&�&�
�
�
�,�,�,�
���
+��)�)�)�
>�>�>�>�>r?r�c�b�eZdZd�Zd�Zejeed��d��d���Z	dS)�TCPTimeoutTestc�J���fd�}��t|d��dS)Nc�n���j�d���j���dSr�)rQr�r��r+r,rVs  �r�
raise_timeoutz4TCPTimeoutTest.testTCPTimeout.<locals>.raise_timeoutRs3����I� � ��%�%�%��I�������r?z*Error generating a timeout exception (TCP)�r�r�rVr�s` r�testTCPTimeoutzTCPTimeoutTest.testTCPTimeoutQsL���	�	�	�	�	�	
���,�
�J�	L�	L�	L�	L�	Lr?c�8�d}	|j�d��|j���}nI#t$r|�d��Yn(t
$rd}Yn|�d��YnxYw|s|�d��dSdS)NFr�z%caught timeout instead of error (TCP)Tz!caught unexpected exception (TCP)z3accept() returned success when we did not expect it)rQr�r�rr�r�rV�okr�s   r�testTimeoutZerozTCPTimeoutTest.testTimeoutZeroXs���
��	;��I� � ��%�%�%��)�"�"�$�$�C�C���	?�	?�	?��I�I�=�>�>�>�>�>��	�	�	��B�B�B�	;��I�I�9�:�:�:�:�:�����	M��I�I�K�L�L�L�L�L�	M�	Ms�38�A>�A>�&A>r�ztest needs signal.alarm()c�>��|j�d��Gd�dt����fd�}tjtj|��}		tjd��|j���}|�d��ns#t$r|�d��YnR�$rYnL|�dtj
��dd�tj��fzz��YnxYwtjd	��n#tjd	��wxYwn #�$r|�d
��YnwxYwtjtj|��dS#tjtj|��wxYw)Nr�c��eZdZdS)�4TCPTimeoutTest.testInterruptedTimeout.<locals>.AlarmNr+r`r?r�Alarmr	ms�������Dr?r	c�����r<r`)rrr	s  �r�
alarm_handlerz<TCPTimeoutTest.testInterruptedTimeout.<locals>.alarm_handleros����Kr?r�znothing caughtzcaught timeout instead of Alarmz3caught other exception instead of Alarm: %s(%s):
%srzgot Alarm in wrong place)
rQr�r@rrr�r�r�rr?�exc_info�	traceback�
format_exc)rVr	rr�r	s    @r�testInterruptedTimeoutz%TCPTimeoutTest.testInterruptedTimeoutfs����	
�	���S�!�!�!�	�	�	�	�	�I�	�	�	�	�	�	�	�	��M�&�.�-�@�@�	�	5�
 ���Q�����i�&�&�(�(���	�	�*�+�+�+�+�� �
=�
=�
=��	�	�;�<�<�<�<�<��
�
�
���
L��	�	�)��<�>�>�"�1�"�-��1E�1G�1G�0I�I�K�L�L�L�L�L������Q��������Q�����������	2�	2�	2��I�I�0�1�1�1�1�1�	2����
�M�&�.�)�4�4�4�4�4��F�M�&�.�)�4�4�4�4���sg�-B�D �D�7D �9D�=D �?AD�D �D:� D6�6D:�9E;�:E�E;�E�E;�;!FN)
r]r^r_r�r�r�r�rrr	r`r?rr�r�Osv������L�L�L�M�M�M��X������1�1�4�6�6�5�5�6�6�5�5�5r?r�c��eZdZd�Zd�ZdS)�UDPTimeoutTestc�J���fd�}��t|d��dS)Nc�p���j�d���j�d��dS�Nr�r��rQr�r�r�s  �rr�z4UDPTimeoutTest.testUDPTimeout.<locals>.raise_timeout��3����I� � ��%�%�%��I�N�N�4� � � � � r?z*Error generating a timeout exception (UDP)r�r�s` r�testUDPTimeoutzUDPTimeoutTest.testUDPTimeout�sL���	!�	!�	!�	!�	!�	
���,�
�J�	L�	L�	L�	L�	Lr?c�:�d}	|j�d��|j�d��}nI#t$r|�d��Yn(t
$rd}Yn|�d��YnxYw|s|�d��dSdS)NFr�r�z%caught timeout instead of error (UDP)Tz!caught unexpected exception (UDP)�1recv() returned success when we did not expect it�rQr�r�rr�rr�s   rr�zUDPTimeoutTest.testTimeoutZero�s���
��	;��I� � ��%�%�%��)�.�.��&�&�C�C���	?�	?�	?��I�I�=�>�>�>�>�>��	�	�	��B�B�B�	;��I�I�9�:�:�:�:�:�����	K��I�I�I�J�J�J�J�J�	K�	K��49�A?�A?�'A?N)r]r^r_r	r�r`r?rr		r		�s:������L�L�L�K�K�K�K�Kr?r		c��eZdZd�Zd�ZdS)�UDPLITETimeoutTestc�J���fd�}��t|d��dS)Nc�p���j�d���j�d��dSr	r
	r�s  �rr�z<UDPLITETimeoutTest.testUDPLITETimeout.<locals>.raise_timeout�r	r?z.Error generating a timeout exception (UDPLITE)r�r�s` r�testUDPLITETimeoutz%UDPLITETimeoutTest.testUDPLITETimeout�sL���	!�	!�	!�	!�	!�	
���,�
�N�	P�	P�	P�	P�	Pr?c�:�d}	|j�d��|j�d��}nI#t$r|�d��Yn(t
$rd}Yn|�d��YnxYw|s|�d��dSdS)NFr�r�z)caught timeout instead of error (UDPLITE)Tz%caught unexpected exception (UDPLITE)r	r	r�s   rr�z"UDPLITETimeoutTest.testTimeoutZero�s���
��	?��I� � ��%�%�%��)�.�.��&�&�C�C���	C�	C�	C��I�I�A�B�B�B�B�B��	�	�	��B�B�B�	?��I�I�=�>�>�>�>�>�����	K��I�I�I�J�J�J�J�J�	K�	Kr	N)r]r^r_r	r�r`r?rr	r	�s:������P�P�P�K�K�K�K�Kr?r	c��eZdZd�Zd�ZdS)�TestExceptionsc� �|�ttt����|�ttjt����|�ttjt����|�ttjt����|�tj	t��|�tjt��dSr<)r��
issubclassrr@rr�r�rH�assertIs�errorrrUs r�testExceptionTreez TestExceptions.testExceptionTree�s������
�7�I�6�6�7�7�7����
�6�=�'�:�:�;�;�;����
�6�?�G�<�<�=�=�=����
�6�>�7�;�;�<�<�<��
�
�f�l�G�,�,�,��
�
�f�n�l�3�3�3�3�3r?c��tjtjtjd��}tjtjtjd|�����}|���|�|j��|�t��5|�	d��ddd��dS#1swxYwYdS)NrF)
rrPrBr�r!rqrjr�rrd)rV�sock0rFs   r�test_setblocking_invalidfdz)TestExceptions.test_setblocking_invalidfd�s����
�f�n�f�.@�!�D�D���}��N�F�.��5�<�<�>�>�C�C��
���
�
�
������$�$�$�
�
�
�w�
'�
'�	$�	$����U�#�#�#�	$�	$�	$�	$�	$�	$�	$�	$�	$�	$�	$�	$����	$�	$�	$�	$�	$�	$s�0C�C�CN)r]r^r_r 	r#	r`r?rr	r	�s2������4�4�4�
$�
$�
$�
$�
$r?r	rd�Linux specific testc�6�eZdZdZd�Zd�Zd�Zd�Zd�Zd�Z	dS)	�TestLinuxAbstractNamespace�lc��d}tjtjtj��5}|�|��|���tjtjtj��5}|�|�����|���d5}|�|���|��|�|�	��|��ddd��n#1swxYwYddd��n#1swxYwYddd��dS#1swxYwYdS)Nspython-test-hello�r)
rrKrBrrrTr�r�r�r�r�)rVr��s1r��s3s     r�testLinuxAbstractNamespacez5TestLinuxAbstractNamespace.testLinuxAbstractNamespace�s���2��
�]�6�>�6�+=�
>�
>�	@�"��G�G�G�����I�I�K�K�K���v�~�v�/A�B�B�
@�b��
�
�2�>�>�+�+�,�,�,��Y�Y�[�[��^�@�r��$�$�R�^�^�%5�%5�w�?�?�?��$�$�R�^�^�%5�%5�w�?�?�?�@�@�@�@�@�@�@�@�@�@�@����@�@�@�@�
@�
@�
@�
@�
@�
@�
@�
@�
@�
@�
@����
@�
@�
@�
@�	@�	@�	@�	@�	@�	@�	@�	@�	@�	@�	@�	@����	@�	@�	@�	@�	@�	@s\�AE
�?AD5�AD�D5�D"�"D5�%D"�&D5�)E
�5D9	�9E
�<D9	�=E
�
E�Ec�$�dd|jdz
zz}tjtjtj��5}|�|��|�|���|��ddd��dS#1swxYwYdS)Nr�hr�)�
UNIX_PATH_MAXrrKrBrrr�r��rVr�r$s   r�testMaxNamez&TestLinuxAbstractNamespace.testMaxName�s����D�D�$6��$:�;�;��
�]�6�>�6�+=�
>�
>�	7�!�
�F�F�7�O�O�O����Q�]�]�_�_�g�6�6�6�	7�	7�	7�	7�	7�	7�	7�	7�	7�	7�	7�	7����	7�	7�	7�	7�	7�	7s�>B�B	�B	c���dd|jzz}tjtjtj��5}|�t
|j|��ddd��dS#1swxYwYdS)N��h)r.	rrKrBr�rrrr/	s   r�testNameOverflowz+TestLinuxAbstractNamespace.testNameOverflow�s����3��!3�3�3��
�]�6�>�6�+=�
>�
>�	8�!����g�q�v�w�7�7�7�	8�	8�	8�	8�	8�	8�	8�	8�	8�	8�	8�	8����	8�	8�	8�	8�	8�	8s�"A&�&A*�-A*c�.�tjtjtj��}	|�d��|�|���d��|���dS#|���wxYw)Nz
pythontest�
pythontest)rrKrBrrr�r�r!r�s  r�testStrNamez&TestLinuxAbstractNamespace.testStrName�sr���M�&�.�&�*<�=�=��	�
�F�F�+�,�,�,����Q�]�]�_�_�.G�H�H�H�
�G�G�I�I�I�I�I��A�G�G�I�I�I�I���s�=A>�>Bc��tjtjtj��5}|�t	d����|�|���d��ddd��dS#1swxYwYdS)Nr6	)rrKrBrrr�r�r�r�s  r�testBytearrayNamez,TestLinuxAbstractNamespace.testBytearrayName�s���
�]�6�>�6�+=�
>�
>�	I�!�
�F�F�9�6�7�7�8�8�8����Q�]�]�_�_�.G�H�H�H�	I�	I�	I�	I�	I�	I�	I�	I�	I�	I�	I�	I����	I�	I�	I�	I�	I�	Is�AB�B�	Bc�x�d}tjtjtj��5}|�d��|�|���|��tjtjtj��5}|�d��|�|���|��|�|���|�����ddd��n#1swxYwYddd��dS#1swxYwYdS)Ns
^[0-9a-f]{5}r�)rrKrBrr�assertRegexr�r�)rV�abstract_addressr)	r�s    r�testAutobindz'TestLinuxAbstractNamespace.testAutobind�s���-��
�]�6�>�6�+=�
>�
>�	H�"��G�G�B�K�K�K����R�^�^�-�-�/?�@�@�@���v�~�v�/A�B�B�
H�b��������� � ����!1�!1�3C�D�D�D��#�#�B�N�N�$4�$4�b�n�n�6F�6F�G�G�G�
H�
H�
H�
H�
H�
H�
H�
H�
H�
H�
H����
H�
H�
H�
H�		H�	H�	H�	H�	H�	H�	H�	H�	H�	H�	H�	H����	H�	H�	H�	H�	H�	Hs7�A'D/�A8D�D/�D	�D/�D	�D/�/D3�6D3N)
r]r^r_r.	r+	r0	r4	r7	r9	r=	r`r?rr&	r&	�s��������M�	@�	@�	@�7�7�7�8�8�8�
���I�I�I�H�H�H�H�Hr?r&	ztest needs socket.AF_UNIXc��eZdZd�Zd�Zd�Zd�Zd�Zd�Zd�Z	d�Z
d	�Zej
ejd
kd��d���Zd
S)�TestUnixDomainc�b�tjtjtj��|_dSr<)rrKrBrFrUs rrWzTestUnixDomain.setUp
s���M�&�.�&�2D�E�E��	�	�	r?c�8�|j���dSr<)rFr!rUs rrZzTestUnixDomain.tearDown
s���	�������r?c���	tj|��S#t$r>|�d�|tj������YdSwxYw)NzBPathname {0!a} cannot be represented in file system encoding {1!r})r?�fsencoder�rtr�r?�getfilesystemencoding�rVrGs  r�encodedzTestUnixDomain.encodedsy��	8��;�t�$�$�$��!�	8�	8�	8��M�M�(�(.���#�3�5�5�)7�)7�
8�
8�
8�
8�
8�
8�	8���s��AA�Ac���	tj||��dS#t$rH}t|��dkr)|�d�|����n�Yd}~dSd}~wwxYw)NzAF_UNIX path too longz6Pathname {0!a} is too long to serve as an AF_UNIX path)rrDrr�rtr�)rVrFrGr�s    rrrzTestUnixDomain.binds���	��*�4��6�6�6�6�6���	�	�	��1�v�v�0�0�0��
�
�L��V�D�\�\�#�#�#�#��	#�#�#�#�#�#�����	���s��
A+�=A&�&A+c�`�|�|j���d��dS)N)r�N)r�rFr�rUs rr�zTestUnixDomain.testUnbound's*���
�
�d�i�+�+�-�-�z�:�:�:�:�:r?c�(�tj�tj��}|�|j|��|�tj|��|�	|j�
��|��dSr<)r?rG�abspathr�TESTFNrrrFrqrEr�r�rE	s  r�testStrAddrzTestUnixDomain.testStrAddr+so���w���y�/�0�0���	�	�$�)�T�"�"�"����	�(�$�/�/�/������.�.�0�0�$�7�7�7�7�7r?c�N�tj�tj��}|�|j|�|����|�tj	|��|�
|j���|��dSr<)r?rGrJ	rrK	rrrFrF	rqrEr�r�rE	s  r�
testBytesAddrzTestUnixDomain.testBytesAddr2s{���w���y�/�0�0���	�	�$�)�T�\�\�$�/�/�0�0�0����	�(�$�/�/�/������.�.�0�0�$�7�7�7�7�7r?c�z�tj�tj��}|�|��}|�|j|�dd����|�	tj
|��|�|j���|��dS)N�ascii�surrogateescape)
r?rGrJ	r�TESTFN_UNICODErF	rrrFrfrqrEr�r�)rVrGr�s   r�testSurrogateescapeBindz&TestUnixDomain.testSurrogateescapeBind9s����w���y�7�8�8���L�L������	�	�$�)�Q�X�X�g�/@�A�A�B�B�B����	�(�$�/�/�/������.�.�0�0�$�7�7�7�7�7r?c�j�tj�|�d��tj�tj��}|�|j|��|�tj	|��|�
|j���|��dS)Nz!No unencodable filename available)r�TESTFN_UNENCODABLErtr?rGrJ	rrrFrqrEr�r�rE	s  r�testUnencodableAddrz"TestUnixDomain.testUnencodableAddrBs����'�/��M�M�=�>�>�>��w���y�;�<�<���	�	�$�)�T�"�"�"����	�(�$�/�/�/������.�.�0�0�$�7�7�7�7�7r?rdr$	c�R�|�t|jjd��dS)Nr�)r�rrFrrrUs r�testEmptyAddresszTestUnixDomain.testEmptyAddressLs&��	
���'�4�9�>�2�6�6�6�6�6r?N)r]r^r_rWrZrF	rrr�rL	rN	rS	rV	r�r�r?rmrX	r`r?rr?	r?	s�������F�F�F����	8�	8�	8�
�
�
�;�;�;�8�8�8�8�8�8�8�8�8�8�8�8��X�_�S�\�W�,�.C�D�D�7�7�E�D�7�7�7r?r?	c�n�eZdZ	dd�Zd�Zd�Zd�ZeZd�ZeZ	d�Z
d�Zd	�ZeZ
d
�ZeZd�Zd�Zd
�ZeZdS)�BufferIOTestr�c�>�t�||���dSr�r�r�s  rr�zBufferIOTest.__init__Vr�r?c�v�tjddgtt��z��}|j�|��}|�|tt����|���}|dtt���}|�|t��dS�Nr�r)r�r�r�rr�r�r�rVrPr
r�s    r�testRecvIntoArrayzBufferIOTest.testRecvIntoArrayYs����k�#��s�S��X�X�~�.�.����(�(��-�-�������S���*�*�*��k�k�m�m���)�3�s�8�8�)�n������c�"�"�"�"�"r?c�b�tt��}|j�|��dSr<�r*r�r	r��rVrPs  r�_testRecvIntoArrayzBufferIOTest._testRecvIntoArraya�)���C�j�j������C� � � � � r?c��td��}|j�|��}|�|t	t
����|dt	t
���}|�|t
��dSr�)r�rr�r�r�r�r^	s    r�testRecvIntoBytearrayz"BufferIOTest.testRecvIntoBytearrayesm����o�o����(�(��-�-�������S���*�*�*��)�3�s�8�8�)�n������c�"�"�"�"�"r?c�0�td��}|j�t|����}|�|tt����|dtt���}|�|t��dSr�)r�rr�rr�r�r�r^	s    r�testRecvIntoMemoryviewz#BufferIOTest.testRecvIntoMemoryviewnss����o�o����(�(��C���9�9�������S���*�*�*��)�3�s�8�8�)�n������c�"�"�"�"�"r?c�|�tjddgtt��z��}|j�|��\}}|�|tt����|���}|dtt���}|�|t��dSr]	)r�r�r�rr�r�r�rVrPr
rr�s     r�testRecvFromIntoArrayz"BufferIOTest.testRecvFromIntoArrayws����k�#��s�S��X�X�~�.�.���}�2�2�3�7�7���������S���*�*�*��k�k�m�m���)�3�s�8�8�)�n������c�"�"�"�"�"r?c�b�tt��}|j�|��dSr<ra	rb	s  r�_testRecvFromIntoArrayz#BufferIOTest._testRecvFromIntoArrayrd	r?c��td��}|j�|��\}}|�|t	t
����|dt	t
���}|�|t
��dSr�)r�rr�r�r�r�rj	s     r�testRecvFromIntoBytearrayz&BufferIOTest.testRecvFromIntoBytearray�sq����o�o���}�2�2�3�7�7���������S���*�*�*��)�3�s�8�8�)�n������c�"�"�"�"�"r?c�6�td��}|j�t|����\}}|�|tt����|dtt���}|�|t��dSr�)r�rr�rr�r�r�rj	s     r�testRecvFromIntoMemoryviewz'BufferIOTest.testRecvFromIntoMemoryview�sw����o�o���}�2�2�:�c�?�?�C�C���������S���*�*�*��)�3�s�8�8�)�n������c�"�"�"�"�"r?c�r�td��}|�t|jj|d��dS)Nrmr�)r�r�r|rr�rb	s  r�testRecvFromIntoSmallBufferz(BufferIOTest.testRecvFromIntoSmallBuffer�s2����l�l�����*�d�m�&A�3��M�M�M�M�Mr?c�D�|j�t��dSr<r�rUs r�_testRecvFromIntoSmallBufferz)BufferIOTest._testRecvFromIntoSmallBuffer�r�r?c��t��}|j�|��|j�|d��dSr�)r�rr�rb	s  r�testRecvFromIntoEmptyBufferz(BufferIOTest.testRecvFromIntoEmptyBuffer�s?���k�k���
�#�#�C�(�(�(��
�#�#�C��+�+�+�+�+r?Nr�)r]r^r_r�r_	rc	rf	�_testRecvIntoBytearrayrh	�_testRecvIntoMemoryviewrk	rm	ro	�_testRecvFromIntoBytearrayrq	�_testRecvFromIntoMemoryviewrs	ru	rw	�_testRecvFromIntoEmptyBufferr`r?rrZ	rZ	Rs��������B�B�B�B�#�#�#�!�!�!�#�#�#�0��#�#�#�1��#�#�#�!�!�!�#�#�#�"8��#�#�#�#9��N�N�N�
!�!�!�,�,�,�
$:� � � r?rZ	i�����c��	ttd��sdS	tdd���}n#ttt
f$rYdSwxYw|5|D]%}|�d��rddd��dS�&	ddd��n#1swxYwYdS)N�AF_TIPCFz
/proc/modulesr	r.ztipc T)rrr�FileNotFoundError�IsADirectoryErrorr�rn)rr]s  r�isTipcAvailabler�	�s!���
�6�9�%�%���u����7�3�3�3�����0�/�B�����u�u�����
����	�	�D����w�'�'�
����������
�	��������������������5s'�,�A�A�B�4B�B�	Bz6TIPC module is not loaded, please 'sudo modprobe tipc'c��eZdZd�ZdS)�TIPCTestc�0�tjtjtj��}tjtjtj��}|�|j��|�|j��|�tjtjd��tjtttf}|�|��tj
tttttz
dz��zdf}|�t |��|�d��\}}|�|���|��|�|t ��dS)Nr�r�rr�)rr�	r�rqr!r�r�r��TIPC_ADDR_NAMESEQ�
TIPC_STYPE�
TIPC_LOWER�
TIPC_UPPERrr�TIPC_ADDR_NAMEr'r�r�r�r�r�)rVrAr��srvaddr�sendaddrr��recvaddrs       r�testRDMzTIPCTest.testRDM�s'���m�F�N�F�O�<�<���m�F�N�F�O�<�<������	�"�"�"�����	�"�"�"����v�(�&�*=�q�A�A�A��+�Z��J�(����������)�:��S�*�z�"9�Q�!>�?�?�?��D���
�
�3��!�!�!����T�*�*�
��X�������*�*�H�5�5�5�����c�"�"�"�"�"r?N)r]r^r_r�	r`r?rr�	r�	�s#������#�#�#�#�#r?r�	c�.�eZdZdd�Zd�Zd�Zd�Zd�ZdS)	�TIPCThreadableTestr�c�|�tj�||���t�|��dSr�r�r�s  rr�zTIPCThreadableTest.__init__�s8����"�"�4�j�"�A�A�A�����%�%�%�%�%r?c�V�tjtjtj��|_|�|jj��|j�tjtjd��tj	tttf}|j�
|��|j���|���|j���\|_|_|�|jj��dSrQ)rr�	rBrArqr!r�r�r�r�	r�	r�	r�	rrrTr�r�r�r�)rVr�	s  rrWzTIPCThreadableTest.setUp�s����=����1C�D�D���������'�'�'�����F�-�v�/B�A�F�F�F��+�Z��J�(����
�
�g������������ � �"�"�"�#'�8�?�?�#4�#4� ��	�4�=�����	��(�(�(�(�(r?c��tjd��tjtjtj��|_|�|jj��tjtttttz
dz��zdf}|j�
|��|j���|_dS)Nr�r�r)r�r�rr�	rBr�rqr!r�	r�	r�	r'r�	r�r��cliaddr)rVrs  rr�zTIPCThreadableTest.clientSetUp�s���	
�
�3�����=����1C�D�D���������'�'�'��%�z��S�*�z�"9�Q�!>�?�?�?��D�����������x�+�+�-�-����r?c��|j�d��}|�|t��|�|j|j��dSr�)r�r�r�r�r�	r�r�s  rr�zTIPCThreadableTest.testStream�sK���i�n�n�T�"�"������c�"�"�"������t�}�5�5�5�5�5r?c�v�|j�t��|j���dSr<r�rUs rr�zTIPCThreadableTest._testStream�r�r?Nr�r�r`r?rr�	r�	�sd������&�&�&�&�
)�
)�
)�
.�
.�
.�6�6�6�
����r?r�	c�,�eZdZd�Zd�Zd�Zd�Zd�ZdS)�ContextManagersTestc�B�tj��5}|�|j��ddd��n#1swxYwY|�|j��tj��5}|���ddd��n#1swxYwY|�|j��tj��5}|�t|jd��ddd��n#1swxYwY|�|j��dS�Nr�)rr�r�r�r!r�rr	rUs  r�_testSocketClassz$ContextManagersTest._testSocketClasss���
�]�_�_�	+�����T�\�*�*�*�	+�	+�	+�	+�	+�	+�	+�	+�	+�	+�	+����	+�	+�	+�	+������%�%�%�
�]�_�_�	���J�J�L�L�L�	�	�	�	�	�	�	�	�	�	�	����	�	�	�	������%�%�%�
�]�_�_�	=�����g�t�|�V�<�<�<�	=�	=�	=�	=�	=�	=�	=�	=�	=�	=�	=����	=�	=�	=�	=������%�%�%�%�%s1�;�?�?�3B�B�B�"C:�:C>�C>c���|j���\}}|�|j��|�d��}|�|��dSr��rQr�rqr!r�r	�rVr�rr
s    r�testCreateConnectionBasez,ContextManagersTest.testCreateConnectionBase�T���Y�%�%�'�'�
��d�����
�#�#�#��y�y��������T�����r?c�t�|j���}tj|��5}|�|j��|�d��|�|�d��d��ddd��n#1swxYwY|�	|j��dS)Nr�r�)
rQr�rr�r�r�r	r�r�r��rVr�rFs   r�_testCreateConnectionBasez-ContextManagersTest._testCreateConnectionBases����)�'�'�)�)��
�
%�g�
.�
.�	6�$����T�\�*�*�*��L�L�� � � ����T�Y�Y�t�_�_�f�5�5�5�	6�	6�	6�	6�	6�	6�	6�	6�	6�	6�	6����	6�	6�	6�	6�	
�����%�%�%�%�%s�AB�B�Bc���|j���\}}|�|j��|�d��}|�|��dSr�r�	r�	s    r�testCreateConnectionClosez-ContextManagersTest.testCreateConnectionCloser�	r?c�.�|j���}tj|��5}|���ddd��n#1swxYwY|�|j��|�t|j	d��dSr�	)
rQr�rr�r!r�r�r�rr	r�	s   r�_testCreateConnectionClosez.ContextManagersTest._testCreateConnectionClose"s����)�'�'�)�)��
�
%�g�
.�
.�	�$��J�J�L�L�L�	�	�	�	�	�	�	�	�	�	�	����	�	�	�	������%�%�%����'�4�<��8�8�8�8�8s�A�A�AN)r]r^r_r�	r�	r�	r�	r�	r`r?rr�	r�	�s_������&�&�&����&�&�&����9�9�9�9�9r?r�	c��eZdZejeed��d��ejddd��d�����Z	d�Z
d�Zd	�Zej
ed
ud��d���Zej
ed
ud��d
���Zd�Zd
S)�InheritanceTestr�zSOCK_CLOEXEC not definedr�rrc�<�tjtjtjtjz��5}|�|jtj��|�|�����ddd��dS#1swxYwYdSr<)rrPrBr�r�rvr��get_inheritabler�s  r�test_SOCK_CLOEXECz!InheritanceTest.test_SOCK_CLOEXEC+s����]�6�>�!�-��0C�C�E�E�	2�HI����Q�V�V�%7�8�8�8����Q�.�.�0�0�1�1�1�	2�	2�	2�	2�	2�	2�	2�	2�	2�	2�	2�	2����	2�	2�	2�	2�	2�	2s�A
B�B�Bc��tj��}|5|�|���d��ddd��dS#1swxYwYdSr)rr�r�	rUs  r�test_default_inheritablez(InheritanceTest.test_default_inheritable4s����}����
�	<�	<����T�1�1�3�3�U�;�;�;�	<�	<�	<�	<�	<�	<�	<�	<�	<�	<�	<�	<����	<�	<�	<�	<�	<�	<s�)A�A�Ac�6�tj��}|5|���}|���|5|�|���d��ddd��n#1swxYwYddd��dS#1swxYwYdSr)rr�r!r�r�	)rVrF�newsocks   r�test_dupzInheritanceTest.test_dup9s3���}����
�	C�	C��h�h�j�j�G��J�J�L�L�L��
C�
C�� � ��!8�!8�!:�!:�E�B�B�B�
C�
C�
C�
C�
C�
C�
C�
C�
C�
C�
C����
C�
C�
C�
C�	C�	C�	C�	C�	C�	C�	C�	C�	C�	C�	C�	C����	C�	C�	C�	C�	C�	Cs5�+B�)A6�*B�6A:	�:B�=A:	�>B�B�Bc�V�tj��}|5|�d��|�|���d��|�d��|�|���d��ddd��dS#1swxYwYdS)NTF)r�set_inheritabler�r�	rUs  r�test_set_inheritablez$InheritanceTest.test_set_inheritableAs����}����
�	<�	<�� � ��&�&�&����T�1�1�3�3�T�:�:�:�� � ��'�'�'����T�1�1�3�3�U�;�;�;�	<�	<�	<�	<�	<�	<�	<�	<�	<�	<�	<�	<����	<�	<�	<�	<�	<�	<s�A;B�B"�%B"Nr�c���tj��}|5|���}|�|���d��t	j|tj��}|tjz}t	j|tj|��|�|���d��ddd��dS#1swxYwYdSr)rr�r�r�	r�F_GETFD�
FD_CLOEXEC�F_SETFD)rVrFrpr�s    r�test_get_inheritable_cloexecz,InheritanceTest.test_get_inheritable_cloexecJs���}����
�		;�		;������B����T�1�1�3�3�U�;�;�;��K��E�M�2�2�E��e�&�&�&�E��K��E�M�5�1�1�1����T�1�1�3�3�T�:�:�:�		;�		;�		;�		;�		;�		;�		;�		;�		;�		;�		;�		;����		;�		;�		;�		;�		;�		;��B4C�C�Cc���tj��}|5|���}|�tj|tj��tjztj��|�d��|�tj|tj��tjzd��ddd��dS#1swxYwYdSr�)rr�r�rr�	r�	r�	)rVrFrps   r�test_set_inheritable_cloexecz,InheritanceTest.test_set_inheritable_cloexecXs���}����
�	 �	 ������B����U�[��U�]�;�;�e�>N�N�"�-�
/�
/�
/�
� � ��&�&�&����U�[��U�]�;�;�e�>N�N��
 �
 �
 �
	 �	 �	 �	 �	 �	 �	 �	 �	 �	 �	 �	 ����	 �	 �	 �	 �	 �	 r�	c�:�tj��\}}|�|j��|�|j��|�|���d��|�|���d��dSr)rrrqr!r�r�	)rVr)	r�s   r�test_socketpairzInheritanceTest.test_socketpaires����"�$�$���B������!�!�!������!�!�!�����+�+�-�-�u�5�5�5�����+�+�-�-�u�5�5�5�5�5r?)r]r^r_r�r�rrrr*r�	r�	r�	r�	r�rr�	r�	r�	r`r?rr�	r�	*s�������X������8�8�3�5�5�#�W�#�A�q�"�-�-�2�2�.�-�5�5�2�<�<�<�
C�C�C�<�<�<��X�_�U�d�]�L�1�1�;�;�2�1�;��X�_�U�d�]�L�1�1�	 �	 �2�1�	 �6�6�6�6�6r?r�	rczSOCK_NONBLOCK not definedc�L�eZdZd	d�Zejddd��d���ZdS)
�NonblockConstantTestTr�c�d�|r�|�|jtj��|�|���|��|�t
j|tjtj	��tj	z��|dkr)|�
|�����dS|�|�����dS|�|jtj��|�|���d��|�
t
j|tjtj	��tj	z��|�|�����dSr�)r�rvrrBr{r�rrr?rr�r�)rVr$�nonblockrHs    r�
checkNonblockz"NonblockConstantTest.checkNonblockpsU���	-����Q�V�V�%7�8�8�8����Q�\�\�^�^�W�5�5�5��O�O���A�u�}�b�m�<�<�r�}�L�
N�
N�
N��!�|�|�� � ������1�1�1�1�1�����
�
���0�0�0�0�0����Q�V�V�%7�8�8�8����Q�\�\�^�^�T�2�2�2������A�u�}�b�m�<�<�r�}�L�
N�
N�
N��O�O�A�M�M�O�O�,�,�,�,�,r?r�rrc�v�tjtjtjtjz��5}|�|��|�d��|�|d���|�d��|�|��|�d��|�|d���|�d��|�|d���|�d��|�|d���ddd��n#1swxYwYtj��}tjd��tj��5}|�|��ddd��n#1swxYwYtjd��tj��5}|�|d��ddd��n#1swxYwYtjd��tj��5}|�|d���ddd��n#1swxYwYtjd��tj��5}|�|d��ddd��n#1swxYwYtj|��dS)NTF)r�	g@r�r�)	rrPrBrcr�	rdr�rFrG)rVr$�ts   r�test_SOCK_NONBLOCKz'NonblockConstantTest.test_SOCK_NONBLOCK�s����]�6�>�!�-��0D�D�F�F�	2�IJ����q�!�!�!�
�M�M�$�������q�5��1�1�1�
�M�M�%� � � ����q�!�!�!�
�L�L��������q�5��1�1�1�
�L�L��������q�#��.�.�.�
�M�M�$�������q�5��1�1�1�	2�	2�	2�	2�	2�	2�	2�	2�	2�	2�	2����	2�	2�	2�	2�
�$�&�&��� ��%�%�%�
�]�_�_�	"�����q�!�!�!�	"�	"�	"�	"�	"�	"�	"�	"�	"�	"�	"����	"�	"�	"�	"�� ��&�&�&�
�]�_�_�	)�����q�%�(�(�(�	)�	)�	)�	)�	)�	)�	)�	)�	)�	)�	)����	)�	)�	)�	)�� ��%�%�%�
�]�_�_�	/�����q�#��.�.�.�	/�	/�	/�	/�	/�	/�	/�	/�	/�	/�	/����	/�	/�	/�	/�� ��&�&�&�
�]�_�_�	)�����q�%�(�(�(�	)�	)�	)�	)�	)�	)�	)�	)�	)�	)�	)����	)�	)�	)�	)�� ��#�#�#�#�#sZ�C0D3�3D7�:D7�8F�F�!F�G/�/G3�6G3�!I�I	�I	�7J�J�!JN)Tr�)r]r^r_r�	rr*r�	r`r?rr�	r�	msU������-�-�-�-�2$�W�#�A�q�"�-�-�$�$�.�-�$�$�$r?r�	r�r�zneed multiprocessingc�B�eZdZed���Zd�Zd�Zd�Zd�Zd�Z	dS)�TestSocketSharingc�&�|���}|���}tj|��}|���\}}|�|��|���|���dSr<)r�r�	fromsharer�r	r!)r	�q�sdata�messager$r�r
s       r�remoteProcessServerz%TestSocketSharing.remoteProcessServer�sq���������%�%�'�'����U�#�#�����
�
���A�	�
�
�7����
���
�
�
�	���	�	�	�	�	r?c��tj��}tj|j|f���}|���|j�|j��}|j���}|j�	��|�
|��d}|�
|��tj|��}g}	|�
d��}|sn|�|���.|�	��d�|��}|�||��|���dS)N�r�r+s
slapmahfroTr�r?)�multiprocessingr��Processr�	r�rQ�share�pidr�r!r�rr�r�r;r�r�)	rVr�	r�r
rr�	r$�m�receiveds	         r�	testSharezTestSocketSharing.testShare�s+��

�!�#�#���#�4�+C�1�$�O�O�O��	���	�	�	��y���q�u�%�%���y�$�$�&�&���	������	���d���� ��	���g����
�$�T�*�*����	��6�6�#�;�;�D��
��
�H�H�T�N�N�N�		�
	
���	�	�	��8�8�A�;�;������7�+�+�+�	�������r?c�
�|j�tj����}|�t
tj|dd���|�t
tj|dz��dS)Nr1r�)rQr�	r?�getpidr�r|rr�	)rVr
s  r�testShareLengthz!TestSocketSharing.testShareLength�sc���y���r�y�{�{�+�+�����*�f�&6��S�b�S�	�B�B�B����*�f�&6��V��D�D�D�D�Dr?c��|�|���d��|�|���|�����|�|j|j��|�|j|j��|jdkr"|�|j|j��dSdSr�)r�r{r�rvr�)rV�org�others   r�compareSocketsz TestSocketSharing.compareSockets�s���	
������)�)�4�0�0�0�������)�)�5�+;�+;�+=�+=�>�>�>������U�\�2�2�2������5�:�.�.�.��9��>�>����S�Y���4�4�4�4�4��>r?c��|j�tj����}t	j|��}	|�|j|��|���dS#|���wxYwr<)rQr�	r?r�	rr�	r�	r!)rVr
r$s   r�testShareLocalz TestSocketSharing.testShareLocal�sk���y���r�y�{�{�+�+����T�"�"��	�����	�1�-�-�-�
�G�G�I�I�I�I�I��A�G�G�I�I�I�I���s�A2�2Bc�$�tjtjg}tjtjg}|D]�}|D]�}	tj||��}n#t
$rY�%wxYw	|�tj����}tj	|��}	|�
||��|���n#|���wxYw	|�����#|���wxYw��dSr<)rrPrjrBr(rr�	r?r�	r�	r�	r!)rV�families�typesrr�	r�r
�shareds        r�	testTypeszTestSocketSharing.testTypes�s���N�F�O�4���#�V�%6�7���	#�	#�A��

#�

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

#�	#�	#s5�A�
A�A�!:C6�C�2C6�C�C6�6DN)
r]r^r_r7r�	r�	r�	r�	r�	r�	r`r?rr�	r�	�s~������
����[��!�!�!�FE�E�E�
5�5�5� ���#�#�#�#�#r?r�	c���eZdZ	dZdZdZejZe	d���Z
e	d���Zd�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$dS) �SendfileUsingSendTesti�r|r?c���d�}d�d�t|j��D����}ttjd��5}||j|j��D]}|�|���	ddd��n#1swxYwYttjd��5}|���|_	ddd��dS#1swxYwYdS)Nc3�DK�||kr|V�||z}||k�|r|V�dSdSr<r`)�total�steps  r�chunksz0SendfileUsingSendTest.setUpClass.<locals>.chunkssM�����$�,�,��
�
�
���
���$�,�,��
�������
�
r?r?c�n�g|]2}tjtj�������3Sr`)�random�choice�string�
ascii_lettersr:r1s  rr�z4SendfileUsingSendTest.setUpClass.<locals>.<listcomp>&sA��7�7�7��!�-��(<�=�=�D�D�F�F�7�7�7r?r+r)
r�r8�BUFSIZErrrK	�FILESIZEr9r��FILEDATA)r	r�	�chunkr�csizes     r�
setUpClassz SendfileUsingSendTest.setUpClasssk��	�	�	����7�7�#(���#5�#5�7�7�7�8�8��
�)�"�D�
)�
)�	�Q�����c�k�:�:�
�
����������
�	�	�	�	�	�	�	�	�	�	�	����	�	�	�	��)�"�D�
)�
)�	5�Q��6�6�8�8�C�L�	5�	5�	5�	5�	5�	5�	5�	5�	5�	5�	5�	5����	5�	5�	5�	5�	5�	5s$�/B�B�B�0C�C�Cc�B�tjtj��dSr<)rrErK	)r	s r�
tearDownClassz#SendfileUsingSendTest.tearDownClass/s�����)�*�*�*�*�*r?c���|j�tj��|j���\}}|�|j��|�|j��|Sr<)rQr�rr!r��TIMEOUTrqr!rs   r�accept_connz!SendfileUsingSendTest.accept_conn3s_���	���W�1�2�2�2��Y�%�%�'�'�
��d������%�%�%�����
�#�#�#��r?c��g}	|�|j��}|sn|�|���3d�|��S)NTr?)r�r�	r;r�)rVr�r�	r�	s    r�	recv_datazSendfileUsingSendTest.recv_data:sU����	#��I�I�d�l�+�+�E��
���O�O�E�"�"�"�		#�
�x�x��!�!�!r?c�"�t|d��S)N�_sendfile_use_send�r�rUs  r�meth_from_sockz$SendfileUsingSendTest.meth_from_sockCs���t�1�2�2�2r?c���|j���}ttjd��}tj|��5}|5}|�|��}||��}|�||j	��|�|�
��|j	��ddd��n#1swxYwYddd��dS#1swxYwYdS)Nr�rQr�rrrK	rr�r
r�r�	�tell�rVr��filerF�meth�sents      r�_testRegularFilez&SendfileUsingSendTest._testRegularFileJsH���)�'�'�)�)���I�$�d�+�+��
�
%�g�
.�
.�	9�$��	9���&�&�t�,�,�D��4��:�:�D����T�4�=�1�1�1����T�Y�Y�[�[�$�-�8�8�8�		9�	9�	9�	9�	9�	9�	9�	9�	9�	9�	9����	9�	9�	9�	9�	9�	9�	9�	9�	9�	9�	9�	9�	9�	9�	9�	9����	9�	9�	9�	9�	9�	9s7�C�A)C�4C�C	�C�C	�C�C�Cc���|���}|�|��}|�t|��|j��|�||j��dSr<�r�	r�	r�r�r�	r�	�rVr�r
s   r�testRegularFilez%SendfileUsingSendTest.testRegularFileS�`�����!�!���~�~�d�#�#������T���D�M�2�2�2�����t�}�-�-�-�-�-r?c��|j���}tj|j��}tj|��5}|5}|�|��}|�||j	��|�|�
��|j	��|�t
j|j
|��ddd��n#1swxYwYddd��dS#1swxYwYdSr<)rQr��io�BytesIOr�	rr�rtr�r�	r
r�r~r)rVr�r
rFr

s     r�_testNonRegularFilez)SendfileUsingSendTest._testNonRegularFile[s����)�'�'�)�)���z�$�-�(�(��
�
%�g�
.�
.�	A�$��	A���=�=��&�&�D����T�4�=�1�1�1����T�Y�Y�[�[�$�-�8�8�8����f�6�"�9�4�
A�
A�
A�		A�	A�	A�	A�	A�	A�	A�	A�	A�	A�	A����	A�	A�	A�	A�	A�	A�	A�	A�	A�	A�	A�	A�	A�	A�	A�	A����	A�	A�	A�	A�	A�	As7�C2�
BC�C2�C	�C2�!C	�"C2�2C6�9C6c���|���}|�|��}|�t|��|j��|�||j��dSr<r
r
s   r�testNonRegularFilez(SendfileUsingSendTest.testNonRegularFileer
r?c�P�|j���}tjdz}t	|d��5|�tj|��ddd��n#1swxYwYt	|d��}tj|��5}|5}|�	|��}||��}|�
|d��|�
|���d��ddd��n#1swxYwYddd��dS#1swxYwYdS)N�2r+rr)rQr�rrK	rrqrErr�r
r�r
)rVr��filenamer
rFr	
r

s       r�_testEmptyFileSendz(SendfileUsingSendTest._testEmptyFileSendms����)�'�'�)�)���#�c�)��
�(�D�
!�
!�	8�	8��O�O�I�,�h�7�7�7�	8�	8�	8�	8�	8�	8�	8�	8�	8�	8�	8����	8�	8�	8�	8��H�d�#�#��
�
%�g�
.�
.�	-�$��	-���&�&�t�,�,�D��4��:�:�D����T�1�%�%�%����T�Y�Y�[�[�!�,�,�,�		-�	-�	-�	-�	-�	-�	-�	-�	-�	-�	-����	-�	-�	-�	-�	-�	-�	-�	-�	-�	-�	-�	-�	-�	-�	-�	-����	-�	-�	-�	-�	-�	-sH�!A&�&A*�-A*�D�AD�7D�D	�D�
D	�D�D�"Dc��|���}|�|��}|�|d��dSr�)r�	r�	r�r
s   r�testEmptyFileSendz'SendfileUsingSendTest.testEmptyFileSendys@�����!�!���~�~�d�#�#������s�#�#�#�#�#r?c���|j���}ttjd��}tj|��5}|5}|�|��}||d���}|�||j	dz
��|�|�
��|j	��ddd��n#1swxYwYddd��dS#1swxYwYdS)Nr�)�offsetr
r
s      r�_testOffsetz!SendfileUsingSendTest._testOffset�sT���)�'�'�)�)���I�$�d�+�+��
�
%�g�
.�
.�	9�$��	9���&�&�t�,�,�D��4��T�*�*�*�D����T�4�=�4�#7�8�8�8����T�Y�Y�[�[�$�-�8�8�8�		9�	9�	9�	9�	9�	9�	9�	9�	9�	9�	9����	9�	9�	9�	9�	9�	9�	9�	9�	9�	9�	9�	9�	9�	9�	9�	9����	9�	9�	9�	9�	9�	9s7�C�A.C�9C�C		�	C�C		�
C�C!�$C!c���|���}|�|��}|�t|��|jdz
��|�||jdd���dS)Nr
r
r
s   r�
testOffsetz SendfileUsingSendTest.testOffset�sn�����!�!���~�~�d�#�#������T���D�M�D�$8�9�9�9�����t�}�T�U�U�3�4�4�4�4�4r?c���|j���}ttjd��}tj|tj���}|5|5d}|�	|��}|||���}|�
||��|�
|���|��ddd��n#1swxYwYddd��dS#1swxYwYdS)Nrr��GKL�r��rQr�rrrK	rr�rr�r
r�r
�rVr�r
rFr�r	
r

s       r�
_testCountz SendfileUsingSendTest._testCount�sm���)�'�'�)�)���I�$�d�+�+���'��07�0H�J�J�J��
�	1�	1�4�	1�	1��E��&�&�t�,�,�D��4��E�*�*�*�D����T�5�)�)�)����T�Y�Y�[�[�%�0�0�0�	1�	1�	1�	1�	1�	1�	1�	1�	1�	1�	1����	1�	1�	1�	1�	1�	1�	1�	1�	1�	1�	1�	1�	1�	1�	1�	1����	1�	1�	1�	1�	1�	1�7�C �A#C�<C �C	�C �C	�C � C$�'C$c���d}|���}|�|��}|�t|��|��|�||jd|���dS)Nr$
�r�	r�	r�r�r�	�rVr�r�r
s    r�	testCountzSendfileUsingSendTest.testCount�sl�������!�!���~�~�d�#�#������T���E�*�*�*�����t�}�V�e�V�4�5�5�5�5�5r?c���|j���}ttjd��}tj|tj���}|5|5d}|�	|��}|||���}|�
||��|�
|���|��ddd��n#1swxYwYddd��dS#1swxYwYdS)Nrr�r�r%
r&
r'
s       r�_testCountSmallz%SendfileUsingSendTest._testCountSmall�sm���)�'�'�)�)���I�$�d�+�+���'��07�0H�J�J�J��
�	1�	1�4�	1�	1��E��&�&�t�,�,�D��4��E�*�*�*�D����T�5�)�)�)����T�Y�Y�[�[�%�0�0�0�	1�	1�	1�	1�	1�	1�	1�	1�	1�	1�	1����	1�	1�	1�	1�	1�	1�	1�	1�	1�	1�	1�	1�	1�	1�	1�	1����	1�	1�	1�	1�	1�	1r)
c���d}|���}|�|��}|�t|��|��|�||jd|���dSrQr+
r,
s    r�testCountSmallz$SendfileUsingSendTest.testCountSmall�sl�������!�!���~�~�d�#�#������T���E�*�*�*�����t�}�V�e�V�4�5�5�5�5�5r?c���|j���}ttjd��}tj|d���5}|5}d}|�|��}||d|���}|�||��|�|�	��|dz��ddd��n#1swxYwYddd��dS#1swxYwYdS)Nrr�r�駆��)r
r�)
rQr�rrrK	rr�r
r�r
r'
s       r�_testCountWithOffsetz*SendfileUsingSendTest._testCountWithOffset�s[���)�'�'�)�)���I�$�d�+�+��
�
%�g�q�
9�
9�
9�	8�T�4�	8�4��E��&�&�t�,�,�D��4��T��7�7�7�D����T�5�)�)�)����T�Y�Y�[�[�%�$�,�7�7�7�	8�	8�	8�	8�	8�	8�	8�	8�	8�	8�	8����	8�	8�	8�	8�	8�	8�	8�	8�	8�	8�	8�	8�	8�	8�	8�	8����	8�	8�	8�	8�	8�	8s7�
C�
A'C�4C�C	�C�C	�C�C�Cc���d}|���}|�|��}|�t|��|��|�||jd|dz���dS)Nr3
r4
r+
r,
s    r�testCountWithOffsetz)SendfileUsingSendTest.testCountWithOffset�sp�������!�!���~�~�d�#�#������T���E�*�*�*�����t�}�T�%��*�_�=�>�>�>�>�>r?c���|j���}ttjd��}tj|��5}|5}|�d��|�|��}|�	t||��|�	t|j|��ddd��n#1swxYwYddd��dS#1swxYwYdS)NrF)rQr�rrrK	rr�rdr
r�r|rt�rVr�r
rFr	
s     r�_testNonBlockingz&SendfileUsingSendTest._testNonBlocking�sI���)�'�'�)�)���I�$�d�+�+��
�
%�g�
.�
.�	?�$��	?�����U�#�#�#��&�&�t�,�,�D����j�$��5�5�5����j�$�-��>�>�>�		?�	?�	?�	?�	?�	?�	?�	?�	?�	?�	?����	?�	?�	?�	?�	?�	?�	?�	?�	?�	?�	?�	?�	?�	?�	?�	?����	?�	?�	?�	?�	?�	?s7�C�A(B?�3C�?C	�C�C	�C�C�Cc��|���}|�d��r|�d��dSdS)Nr|z$was not supposed to receive any data)r�	r�r��rVr�s  r�testNonBlockingz%SendfileUsingSendTest.testNonBlocking�sH�����!�!���9�9�T�?�?�	>��I�I�<�=�=�=�=�=�	>�	>r?c��|j���}ttjd��}tj|tj���}|5|5|�	|��}||��}|�
||j��ddd��n#1swxYwYddd��dS#1swxYwYdS)Nrr�)rQr�rrrK	rr�rr�r
r�r�	r
s      r�_testWithTimeoutz&SendfileUsingSendTest._testWithTimeout�sE���)�'�'�)�)���I�$�d�+�+���'��07�0H�J�J�J��
�	2�	2�4�	2�	2��&�&�t�,�,�D��4��:�:�D����T�4�=�1�1�1�	2�	2�	2�	2�	2�	2�	2�	2�	2�	2�	2����	2�	2�	2�	2�	2�	2�	2�	2�	2�	2�	2�	2�	2�	2�	2�	2����	2�	2�	2�	2�	2�	2s6�B9�<B!�B9�!B%	�%B9�(B%	�)B9�9B=�B=c���|���}|�|��}|�t|��|j��|�||j��dSr<r
r
s   r�testWithTimeoutz%SendfileUsingSendTest.testWithTimeout�r
r?c��|j���}ttjd��5}tj|��5}|�d��|�|��}|�	t||��ddd��n#1swxYwYddd��dS#1swxYwYdS)Nrg{�G�z�?)rQr�rrrK	rr�r�r
r�rr9
s     r�_testWithTimeoutTriggeredSendz3SendfileUsingSendTest._testWithTimeoutTriggeredSend�s)���)�'�'�)�)��
�)�"�D�
)�
)�	<�T��)�'�2�2�
<�d�����%�%�%��*�*�4�0�0���!�!�,��d�;�;�;�
<�
<�
<�
<�
<�
<�
<�
<�
<�
<�
<����
<�
<�
<�
<�	<�	<�	<�	<�	<�	<�	<�	<�	<�	<�	<�	<����	<�	<�	<�	<�	<�	<s6�B4�	AB�B4�B 	� B4�#B 	�$B4�4B8�;B8c��|���}|�d��tjd��dS)Ni�Xr�)r�	r�r�r�r<
s  r�testWithTimeoutTriggeredSendz2SendfileUsingSendTest.testWithTimeoutTriggeredSend�s6�����!�!���	�	�%�����
�1�
�
�
�
�
r?c��dSr<r`rUs r�_test_errorsz"SendfileUsingSendTest._test_errorsrr?c	�:�ttjd��5}tjtj���5}|�|��}|�td||��ddd��n#1swxYwYddd��n#1swxYwYttjd���5}tj��5}|�|��}|�td||��ddd��n#1swxYwYddd��n#1swxYwYttjd��5}tj��5}|�|��}|�td||d�	��|�td||d
�	��|�td||d�	��|�td||d�	��ddd��n#1swxYwYddd��dS#1swxYwYdS)
Nrr�rBr	r.zbinary modezpositive integerr
r%
r�rr1)	rrrK	rr(r
r5r|r�)rVr
r$r	
s    r�test_errorsz!SendfileUsingSendTest.test_errorss���
�)�"�D�
)�
)�	;�T���F�$5�6�6�6�
;�!��*�*�1�-�-���&�&��
�t�T�;�;�;�
;�
;�
;�
;�
;�
;�
;�
;�
;�
;�
;����
;�
;�
;�
;�	;�	;�	;�	;�	;�	;�	;�	;�	;�	;�	;����	;�	;�	;�	;�
�)�"�W�
5�
5�
5�	;������
;�A��*�*�1�-�-���&�&��
�t�T�;�;�;�
;�
;�
;�
;�
;�
;�
;�
;�
;�
;�
;����
;�
;�
;�
;�	;�	;�	;�	;�	;�	;�	;�	;�	;�	;�	;����	;�	;�	;�	;�
�)�"�D�
)�
)�
	=�T�����	
=�A��*�*�1�-�-���&�&�y�2D�'+�T��'�>�>�>��&�&�y�2D�'+�T��'�>�>�>��&�&�z�3E�'+�T��'�<�<�<��&�&�z�3E�'+�T��'�=�=�=�	
=�	
=�	
=�	
=�	
=�	
=�	
=�	
=�	
=�	
=�	
=����	
=�	
=�	
=�	
=�
	=�
	=�
	=�
	=�
	=�
	=�
	=�
	=�
	=�
	=�
	=�
	=����
	=�
	=�
	=�
	=�
	=�
	=s�� B�3A:�.B�:A>	�>B�A>	�B�B�B�7D!�3D
�>D!�
D	�D!�D	�D!�!D%�(D%�H�BG8�,H�8G<	�<H�?G<	�H�H�HN)%r]r^r_r�	r�	r�	rr�r�	r7r�	r�	r�	r�	r
r
r
r
r
r
r
r 
r"
r(
r-
r/
r1
r5
r7
r:
r=
r?
rA
rC
rE
rG
rI
r`r?rr�	r�	s��������!�H��G��H��&�G��5�5��[�5�$�+�+��[�+����"�"�"�3�3�3�9�9�9�.�.�.�A�A�A�.�.�.�
-�
-�
-�$�$�$�9�9�9�5�5�5�
1�
1�
1�6�6�6�
1�
1�
1�6�6�6�8�8�8�?�?�?�?�?�?�>�>�>�2�2�2�.�.�.�<�<�<����
�
�
�=�=�=�=�=r?r�	rtz%os.sendfile() required for this test.c��eZdZ	d�ZdS)�SendfileUsingSendfileTestc�"�t|d��S)Nrr
rUs  rr
z(SendfileUsingSendfileTest.meth_from_sock!s���t�5�6�6�6r?N)r]r^r_r
r`r?rrK
rK
s(�������7�7�7�7�7r?rK
zAF_ALG requiredc��eZdZd�Zejdd��d���Zd�Zejdd��d���Zejdd��d	���Z	ejdd��d
���Z
d�Zd�Zd
S)�LinuxKernelCryptoAPIc��tjtjtjd��}	|�||f��|S#t$r<}|���t
jt|��||���d}~wwxYwr�)	rr6r2rrr�	r!r��SkipTestr�)rV�typr�rFr�s     r�
create_algzLinuxKernelCryptoAPI.create_alg(s����}�V�]�F�,A�1�E�E��	��I�I�s�D�k�"�"�"��K��!�	7�	7�	7��J�J�L�L�L��#�C��F�F�C��6�6�6�����	7���s�A�
B�7B�Br�r�c��t�d��}|�dd��5}|���\}}|5|�d��|�|�d��|��ddd��n#1swxYwY|���\}}|5|�dtj	��|�dtj	��|�dtj	��|�d	��|�|�d��|��ddd��n#1swxYwYddd��dS#1swxYwYdS)
N�@ba7816bf8f01cfea414140de5dae2223b00361a396177a9cb410ff61f20015ad�hash�sha256sabcr��a�b�cr?)
r*�fromhexrR
r�r	r�r�r�r�MSG_MORE)rVr��algo�opr�s     r�test_sha256z LinuxKernelCryptoAPI.test_sha2565s���=�=�":�;�;��
�_�_�V�X�
.�
.�	9�$��K�K�M�M�E�B���
9�
9��
�
�6�"�"�"�� � �������x�8�8�8�
9�
9�
9�
9�
9�
9�
9�
9�
9�
9�
9����
9�
9�
9�
9��K�K�M�M�E�B���
9�
9�����f�o�.�.�.�����f�o�.�.�.�����f�o�.�.�.��������� � �������x�8�8�8�
9�
9�
9�
9�
9�
9�
9�
9�
9�
9�
9����
9�
9�
9�
9�	9�	9�	9�	9�	9�	9�	9�	9�	9�	9�	9�	9����	9�	9�	9�	9�	9�	9sZ�E=�?B�
E=�B	�E=�B	�E=�:BE%�E=�%E)	�)E=�,E)	�-E=�=F�Fc���d}d}t�d��}|�dd��5}|�tjtj|��|���\}}|5|�|��|�	|�
d��|��ddd��n#1swxYwYddd��dS#1swxYwYdS)NsPython loves AF_ALGswhat do ya want for nothing?�(193dbb43c6297b47ea6277ec0ce67119a3f3aa66rU
z
hmac(sha1)r�)r*rZ
rR
r�r�SOL_ALG�ALG_SET_KEYr�r	r�r�)rV�keyr
r�r\
r]
r�s       r�test_hmac_sha1z#LinuxKernelCryptoAPI.test_hmac_sha1GsN��%��.���=�=�!K�L�L��
�_�_�V�\�
2�
2�	9�d��O�O�F�N�F�,>��D�D�D��K�K�M�M�E�B���
9�
9��
�
�4� � � �� � �������x�8�8�8�
9�
9�
9�
9�
9�
9�
9�
9�
9�
9�
9����
9�
9�
9�
9�	9�	9�	9�	9�	9�	9�	9�	9�	9�	9�	9�	9����	9�	9�	9�	9�	9�	9s6�AC�:?C�9C�C		�	C�C		�
C�C!�$C!r�c�l�t�d��}t�d��}d}t�d��}t|��}|�dd��5}|�t
jt
j|��|���\}}|5|�	t
j
|t
j���|�|��|�
|�|��|��ddd��n#1swxYwY|���\}}|5|�	|gt
j|���|�
|�|��|��ddd��n#1swxYwYd	}	|g|	z}
|���\}}|5|�	|
t
j
|���|�||	z��}ddd��n#1swxYwY|�
t|��||	z��|�
|d|�|��|���\}}|5|�	|gt
j|���|�||	z��}ddd��n#1swxYwY|�
t|��||	z��|�
|||	z��ddd��dS#1swxYwYdS)
N� 06a9214036b8a15b512e03d534120006� 3dafba429d9eb430b422da802c9fac41sSingle block msg� e353779c1079aeb82708942dbe77181a�skcipherzcbc(aes))r]
�ivr�)r]
rj
r�)r*rZ
r�rR
r�rra
rb
r��
sendmsg_afalg�ALG_OP_ENCRYPTr[
r	r�r��ALG_OP_DECRYPT)
rVrc
rj
r��
ciphertext�msglenr\
r]
r��
multiplier�longmsg�enc�decs
             r�test_aes_cbcz!LinuxKernelCryptoAPI.test_aes_cbcVsC���m�m�>�?�?��
�]�]�=�
>�
>��!���]�]�#E�F�F�
��S����
�_�_�Z��
4�
4� 	4���O�O�F�N�F�,>��D�D�D��K�K�M�M�E�B���
>�
>�� � �F�$9�b�'-��!�8�8�8��
�
�3����� � �������*�=�=�=�	
>�
>�
>�
>�
>�
>�
>�
>�
>�
>�
>����
>�
>�
>�
>��K�K�M�M�E�B���
7�
7�� � �*��$*�$9�b�!�B�B�B�� � �������#�6�6�6�
7�
7�
7�
7�
7�
7�
7�
7�
7�
7�
7����
7�
7�
7�
7��J��e�j�(�G��K�K�M�M�E�B���
3�
3�� � ��$*�$9�b�!�B�B�B��g�g�f�z�1�2�2��
3�
3�
3�
3�
3�
3�
3�
3�
3�
3�
3����
3�
3�
3�
3�
���S��X�X�v�
�':�;�;�;����S��&��\�:�6�6�6��K�K�M�M�E�B���
3�
3�� � �#��$*�$9�b�!�B�B�B��g�g�f�z�1�2�2��
3�
3�
3�
3�
3�
3�
3�
3�
3�
3�
3����
3�
3�
3�
3�
���S��X�X�v�
�':�;�;�;����S�#�
�"2�3�3�3�A 	4� 	4� 	4� 	4� 	4� 	4� 	4� 	4� 	4� 	4� 	4� 	4���� 	4� 	4� 	4� 	4� 	4� 	4s��6AL)�;A+D2�&L)�2D6	�6L)�9D6	�:L)�A
F/�#L)�/F3	�3L)�6F3	�7$L)�;H"�L)�"H&	�&L)�)H&	�*A L)�
<K�L)�K	�L)�K	�AL)�)L-�0L-rc
��	�t�d��}t�d��}t�d��}t�d��}t�d��}t�d��}t|��}t|��}|�dd��5}	|	�t
jt
j|��|	�t
jt
jd|��|	�	��\}
}|
5|
�
t
j||t
j�	��|
�
|t
j��|
�
|��|
�|t|��z|z��}|�||||���|�|||d���ddd��n#1swxYwY|	�	��\}
}|
5||z}
|
�
|
gt
j||�
��|
�|t|��z|z��}|�||||���|�|||d���ddd��n#1swxYwYt!jd��j}|	�	��\}
}|
5||z}
|
�|
gt
jt
j|t
j��gt
jt
j|t|����|zgt
jt
j||��gf��|
�t|
��|z��}|�||||���|�|||d���ddd��n#1swxYwY|	�	��\}
}|
5||z|z}
|
�
|
gt
j||�
��|
�t|
��|z
��}|�|||d���ddd��n#1swxYwYddd��dS#1swxYwYdS)N� c939cc13397c1d37de6ae0e1cb7c423c�b3d8cc017cbb89b39e0f67e2� c3b3c41f113a31b73d9a5cd432103069� 24825602bd12a984e0092d3e448eda5f� 93fe7d9e9bfd10348a5606e5cafa7354� 0032a1dc85f1c9786925a2e71d8272dd�aeadzgcm(aes))r]
rj
�assoclenr�)r]
rj
r}
r)r*rZ
r�rR
r�rra
rb
�ALG_SET_AEAD_AUTHSIZEr�rk
rl
r[
r	r�r�r�Structr�r��
ALG_SET_OP�
ALG_SET_IV�ALG_SET_AEAD_ASSOCLENrm
)rVrc
rj
�plain�assoc�expected_ct�expected_tag�taglenr}
r\
r]
r��resr��pack_uint32s               r�test_aead_aes_gcmz&LinuxKernelCryptoAPI.test_aead_aes_gcms����m�m�>�?�?��
�]�]�5�
6�
6���
�
�@�A�A���
�
�@�A�A���m�m�$F�G�G���}�}�%G�H�H���\�"�"���u�:�:��
�_�_�V�Z�
0�
0�1	8�D��O�O�F�N�F�,>��D�D�D��O�O�F�N�F�,H� �&�
*�
*�
*��K�K�M�M�E�B���
>�
>�� � �F�$9�b�*2�&�/�!�K�K�K��
�
�5�&�/�2�2�2��
�
�5�!�!�!��g�g�h��U���3�f�<�=�=��� � ��c�(�F�7�2B�.C�D�D�D�� � ��s�F�7�8�8�}�=�=�=�
>�
>�
>�
>�
>�
>�
>�
>�
>�
>�
>����
>�
>�
>�
>��K�K�M�M�E�B���
>�
>��e�m��� � �#��6�+@�R�*2�!�4�4�4��g�g�h��U���3�f�<�=�=��� � ��c�(�F�7�2B�.C�D�D�D�� � ��s�F�7�8�8�}�=�=�=�

>�
>�
>�
>�
>�
>�
>�
>�
>�
>�
>����
>�
>�
>�
>�!�-��,�,�1�K��K�K�M�M�E�B���
>�
>��e�m���
�
��E��n�f�&7���V�EZ�9[�9[�\��n�f�&7���S��W�W�9M�9M�PR�9R�S��n�f�&B�K�K�PX�DY�DY�Z������g�g�c�#�h�h��/�0�0��� � ��c�(�F�7�2B�.C�D�D�D�� � ��s�F�7�8�8�}�=�=�=�
>�
>�
>�
>�
>�
>�
>�
>�
>�
>�
>����
>�
>�
>�
>��K�K�M�M�E�B���
8�
8��k�)�L�8��� � �#��6�+@�R�*2�!�4�4�4��g�g�c�#�h�h��/�0�0��� � ���H�I�I��7�7�7�
8�
8�
8�
8�
8�
8�
8�
8�
8�
8�
8����
8�
8�
8�
8�Y1	8�1	8�1	8�1	8�1	8�1	8�1	8�1	8�1	8�1	8�1	8�1	8����1	8�1	8�1	8�1	8�1	8�1	8s��A1S�C	H�S�H	�S�H	�S�;BK�S�K	�S�K	�5S�C=P�S�P!	�!S�$P!	�%S�A0R=�1S�=S	�S�S	�S�S�Sc��|�dd��5}tjd��}|�tjtj|��|���\}}|5|�d��}|�	t|��d��ddd��n#1swxYwYddd��dS#1swxYwYdS)N�rng�drbg_pr_sha256rF)rR
r?�urandomr�rra
rb
r�r�r�r�)rVr\
�
extra_seedr]
r��rns      r�test_drbg_pr_sha256z(LinuxKernelCryptoAPI.test_drbg_pr_sha256�s9���_�_�U�$4�
5�
5�	.����B���J��O�O�F�N�F�,>�
�K�K�K��K�K�M�M�E�B���
.�
.��W�W�R�[�[��� � ��R���"�-�-�-�
.�
.�
.�
.�
.�
.�
.�
.�
.�
.�
.����
.�
.�
.�
.�		.�	.�	.�	.�	.�	.�	.�	.�	.�	.�	.�	.����	.�	.�	.�	.�	.�	.s6�AC
�09B5�)C
�5B9	�9C
�<B9	�=C
�
C�Cc��tjtjtjd��}|5|�t��5|���ddd��n#1swxYwY|�t��5|�d���ddd��n#1swxYwY|�t��5|�d��ddd��n#1swxYwY|�t��5|�tjd���ddd��n#1swxYwY|�t��5|�tjd���ddd��n#1swxYwYddd��dS#1swxYwYdS)Nr)r]
r�)r]
r}
r1)rr6r2r�r�rk
rl
rUs  r�test_sendmsg_afalg_argsz,LinuxKernelCryptoAPI.test_sendmsg_afalg_args�sD���}�V�]�F�,A�1�E�E��
�	J�	J��"�"�9�-�-�
%�
%��"�"�$�$�$�
%�
%�
%�
%�
%�
%�
%�
%�
%�
%�
%����
%�
%�
%�
%��"�"�9�-�-�
,�
,��"�"�d�"�+�+�+�
,�
,�
,�
,�
,�
,�
,�
,�
,�
,�
,����
,�
,�
,�
,��"�"�9�-�-�
&�
&��"�"�1�%�%�%�
&�
&�
&�
&�
&�
&�
&�
&�
&�
&�
&����
&�
&�
&�
&��"�"�9�-�-�
L�
L��"�"�f�&;�d�"�K�K�K�
L�
L�
L�
L�
L�
L�
L�
L�
L�
L�
L����
L�
L�
L�
L��"�"�9�-�-�
J�
J��"�"�f�&;�b�"�I�I�I�
J�
J�
J�
J�
J�
J�
J�
J�
J�
J�
J����
J�
J�
J�
J�	J�	J�	J�	J�	J�	J�	J�	J�	J�	J�	J�	J����	J�	J�	J�	J�	J�	Js��F6�A)�F6�)A-	�-F6�0A-	�1F6�B1�%F6�1B5	�5F6�8B5	�9F6�C8�,F6�8C<	�<F6�?C<	�F6�"E�?F6�E	�F6�E	�F6�0"F�F6�F"	�"F6�%F"	�&F6�6F:�=F:c���tjtjtjd��}|�|j��|�t��5|�d��ddd��n#1swxYwY|�td��5|�d��ddd��n#1swxYwY|�t��5|�d��ddd��n#1swxYwY|�td��5|�d��ddd��dS#1swxYwYdS)Nr)�
tttttttttttttr�z
type too long)�ttttttttttttttr�)rv�?nnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnz
name too long)rv�@nnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnn)
rr6r2rqr!r�r�	rrr5r|rUs  r�test_length_restrictionz,LinuxKernelCryptoAPI.test_length_restriction�s7���}�V�]�F�,A�1�E�E������
�#�#�#��
�
�0�
1�
1�	*�	*��I�I�(�)�)�)�	*�	*�	*�	*�	*�	*�	*�	*�	*�	*�	*����	*�	*�	*�	*�
�
#�
#�J��
@�
@�	*�	*��I�I�(�)�)�)�	*�	*�	*�	*�	*�	*�	*�	*�	*�	*�	*����	*�	*�	*�	*��
�
�0�
1�
1�	*�	*��I�I�(�)�)�)�	*�	*�	*�	*�	*�	*�	*�	*�	*�	*�	*����	*�	*�	*�	*�
�
#�
#�J��
@�
@�	*�	*��I�I�(�)�)�)�	*�	*�	*�	*�	*�	*�	*�	*�	*�	*�	*�	*����	*�	*�	*�	*�	*�	*sH�B�B�B�'C	�	C
�C
�.D�D�D�6E�E� EN)
r]r^r_rR
rr*r^
rd
rt
r�
r�
r�
r�
r`r?rrN
rN
%s������	�	�	�$�W�#�A�q�)�)�9�9�*�)�9�"9�9�9�$�W�#�A�q�)�)�&4�&4�*�)�&4�P$�W�#�A�q�)�)�<8�<8�*�)�<8�|$�W�#�A�q�)�)�.�.�*�)�.�J�J�J�$*�*�*�*�*r?rN
r�r�c��eZdZd�ZdS)�TestMacOSTCPFlagsc�D�|�tj��dSr<)r�r�
TCP_KEEPALIVErUs r�test_tcp_keepalivez$TestMacOSTCPFlags.test_tcp_keepalive�s������,�-�-�-�-�-r?N)r]r^r_r�
r`r?rr�
r�
�s#������.�.�.�.�.r?r�
�winzrequires Windowsc��eZdZhd�Zd�ZdS)�TestMSWindowsTCPFlags>�
TCP_MAXSEG�TCP_KEEPCNT�TCP_NODELAY�TCP_FASTOPEN�TCP_KEEPIDLE�
TCP_KEEPINTVLc���d�tt��D��}�fd�|D��}��g|d��dS)Nc�<�g|]}|�d���|��S)�TCP)rn)r�r$s  rr�z<TestMSWindowsTCPFlags.test_new_tcp_flags.<locals>.<listcomp>s)��B�B�B�!�a�l�l�5�.A�.A�B�A�B�B�Br?c�&��g|]
}|�jv�|��Sr`)�
knownTCPFlags)r�r$rVs  �rr�z<TestMSWindowsTCPFlags.test_new_tcp_flags.<locals>.<listcomp>s&���F�F�F��!�4�3E�*E�*E�1�*E�*E�*Er?zANew TCP flags were discovered. See bpo-32394 for more information)rBrr�)rV�provided�unknowns`  r�test_new_tcp_flagsz(TestMSWindowsTCPFlags.test_new_tcp_flagssc���B�B�s�6�{�{�B�B�B��F�F�F�F�h�F�F�F������W�O�	Q�	Q�	Q�	Q�	Qr?N)r]r^r_r�
r�
r`r?rr�
r�
�s9���������M�Q�Q�Q�Q�Qr?r�
c�D�eZdZd�Zd�Zd�Zejee	d��pee	d��d��ej
ejd��d�����Z
ejej��d	��ej
ejd��d
�����ZdS)�CreateServerTestc��tj��}tjd|f��5}|�|���dd��|�|���d|��ddd��n#1swxYwYtjr�tjd|ftj���5}|�|���dd��|�|���d|��ddd��dS#1swxYwYdSdS)Nr�rr�r�r�)rr�r�
create_serverr�r�r�rj�rVrSrFs   r�test_addresszCreateServerTest.test_addresss����-�/�/��
�
!�;��"5�
6�
6�	:�$����T�-�-�/�/��2�K�@�@�@����T�-�-�/�/��2�D�9�9�9�	:�	:�	:�	:�	:�	:�	:�	:�	:�	:�	:����	:�	:�	:�	:��%�	>��%�u�d�m�-3�_�>�>�>�
>�AE�� � ��!1�!1�!3�!3�A�!6��>�>�>�� � ��!1�!1�!3�!3�A�!6��=�=�=�
>�
>�
>�
>�
>�
>�
>�
>�
>�
>�
>�
>����
>�
>�
>�
>�
>�
>�	>�	>s%�AB�B�B�AD6�6D:�=D:c��tjd��5}|�|jtj��|�|jtj��ddd��n#1swxYwYtjr�tjdtj	���5}|�|jtj	��|�|jtj��ddd��dS#1swxYwYdSdS)Nr��r�rr�)
rr�
r�r�rPrvrBrr�rj)rVrFr$s   r�test_family_and_typez%CreateServerTest.test_family_and_typesv��
�
!�"2�
3�
3�	<�t����T�[�&�.�9�9�9����T�Y��(:�;�;�;�	<�	<�	<�	<�	<�	<�	<�	<�	<�	<�	<����	<�	<�	<�	<��%�	@��%�j���I�I�I�
@�Q�� � ���6�?�;�;�;�� � ���F�,>�?�?�?�
@�
@�
@�
@�
@�
@�
@�
@�
@�
@�
@�
@����
@�
@�
@�
@�
@�
@�	@�	@s%�AA,�,A0�3A0�#AC;�;C?�C?c�|�ttd��sK|�t��5tjdd���ddd��dS#1swxYwYdStjd��5}|�tjtj��}|�|d��ddd��n#1swxYwYtjdd���5}|�tjtj��}|�	|d��ddd��dS#1swxYwYdS)N�SO_REUSEPORT)r�rT)�
reuse_portr)
rrr�r|r�
r�r�r�
r�r�)rVrFrs   r�test_reuse_portz CreateServerTest.test_reuse_port s����v�~�.�.�		,��"�"�:�.�.�
H�
H��$�%5�$�G�G�G�G�
H�
H�
H�
H�
H�
H�
H�
H�
H�
H�
H�
H����
H�
H�
H�
H�
H�
H��%�&6�7�7�
)�4��o�o�f�&7��9L�M�M��� � ��a�(�(�(�
)�
)�
)�
)�
)�
)�
)�
)�
)�
)�
)����
)�
)�
)�
)��%�&6�4�H�H�H�
,�D��o�o�f�&7��9L�M�M���#�#�C��+�+�+�
,�
,�
,�
,�
,�
,�
,�
,�
,�
,�
,�
,����
,�
,�
,�
,�
,�
,s7�A�A�A�5AC�C�	C�#AD1�1D5�8D5r�r�r�r�c�x�tjdtj���5}ddd��dS#1swxYwYdS)Nr�
r�)rr�
rjrUs  r�test_ipv6_only_defaultz'CreateServerTest.test_ipv6_only_default,s���
�
!�*�V�_�
E�
E�
E�	L��	L�	L�	L�	L�	L�	L�	L�	L�	L�	L�	L�	L����	L�	L�	L�	L�	L�	Ls�/�3�3�dualstack_ipv6 not supportedc���tjdtjd���5}|�|jtj��ddd��dS#1swxYwYdS)Nr�
T�r��dualstack_ipv6)rr�
rjr�r�rUs  r�test_dualstack_ipv6_familyz+CreateServerTest.test_dualstack_ipv6_family4s����
!�*�V�_�15�7�7�7�	;�:>����T�[�&�/�:�:�:�	;�	;�	;�	;�	;�	;�	;�	;�	;�	;�	;�	;����	;�	;�	;�	;�	;�	;s�&A�A�AN)r]r^r_r�
r�
r�
r�r�rr�r�rr�r�
r�has_dualstack_ipv6r�
r`r?rr�
r�

s������	>�	>�	>�@�@�@�
,�
,�
,��X�_����.�9�9�9�9� ���-�8�8�8�7�9�9��X���3�5R�S�S�L�L�T�S�9�9�L��X�_�2��2�4�4�4�3�5�5��X���3�5R�S�S�;�;�T�S�5�5�;�;�;r?r�
c�|�eZdZejZd�Zd�Zd�Ze	j
ejd��d���Z
e	jej��d��e	j
ejd��d�����Ze	jej��d��e	j
ejd��d�����Zd	S)
�CreateServerFunctionalTestc�$�����fd�}tj���|��j��tj||f���}|j����|j�j������dS)Nc�^��|5|���\}}|5���j��|�d��}|s	ddd��ddd��dS|�|��ddd��n#1swxYwYddd��dS#1swxYwYdSr�)r�r�rHr�r	)rFr�r�r�r�rVs    ��r�runz3CreateServerFunctionalTest.echo_server.<locals>.runAsa����
&�
&��+�+�-�-���a��&�&��J�J�t�|�,�,�,��)�)�D�/�/�C����	&�&�&�&�&�&�
&�
&�
&�
&�
&�
&�
&�
&��L�L��%�%�%�&�&�&�&�&�&�&�&�&�&�&����&�&�&�&�
&�
&�
&�
&�
&�
&�
&�
&�
&�
&�
&�
&����
&�
&�
&�
&�
&�
&s@�B"�3B
�B"�)B
�>B"�
B	�B"�B	�B"�"B&�)B&r�	)	r�r�r�rHr�r�rqr�r�)rVrFr�
r�r�s`   @r�echo_serverz&CreateServerFunctionalTest.echo_server@s�����	&�	&�	&�	&�	&�	&���!�!�������%�%�%��!��D�8�<�<�<�������������T�\�2�2�2�
�	�	�����r?c�<�tj|���5}|�|j��|�|��|�d��|�|�d��d��ddd��dS#1swxYwYdS)Nr�r�r�)rr�rHr�r	r�r�)rVrr�rFs    r�echo_clientz&CreateServerFunctionalTest.echo_clientRs���
�]�&�
)�
)�
)�	6�T��O�O�D�L�)�)�)��L�L������L�L�� � � ����T�Y�Y�t�_�_�f�5�5�5�		6�	6�	6�	6�	6�	6�	6�	6�	6�	6�	6�	6����	6�	6�	6�	6�	6�	6s�A.B�B�Bc��tj��}tjd|f��5}|�|��|�d|ftj��ddd��dS#1swxYwYdS)Nr�r�)rr�rr�
r�
r�
rPr�
s   r�	test_tcp4z$CreateServerFunctionalTest.test_tcp4Ys����-�/�/��
�
!�2�t�*�
-�
-�	B�����T�"�"�"����k�4�0�&�.�A�A�A�	B�	B�	B�	B�	B�	B�	B�	B�	B�	B�	B�	B����	B�	B�	B�	B�	B�	Bs�8A/�/A3�6A3r�c��tj��}tjd|ftj���5}|�|��|�d|ftj��ddd��dS#1swxYwYdS)Nr�r�r��rr�rr�
rjr�
r�
r�
s   r�	test_tcp6z$CreateServerFunctionalTest.test_tcp6_s����-�/�/��
�
!�2�t�*�)/��:�:�:�	=�=A����T�"�"�"����e�T�]�F�O�<�<�<�	=�	=�	=�	=�	=�	=�	=�	=�	=�	=�	=�	=����	=�	=�	=�	=�	=�	=s�8A;�;A?�A?r�
c��tj��}tjd|ftjd���5}|�|��|�d|ftj��ddd��dS#1swxYwYdS)Nr�Tr�
r�)rr�rr�
rjr�
r�
rPr�
s   r�test_dual_stack_client_v4z4CreateServerFunctionalTest.test_dual_stack_client_v4is����-�/�/��
�
!�2�t�*�V�_�15�7�7�7�	B�:>����T�"�"�"����k�4�0�&�.�A�A�A�	B�	B�	B�	B�	B�	B�	B�	B�	B�	B�	B�	B����	B�	B�	B�	B�	B�	B��8A<�<B�Bc��tj��}tjd|ftjd���5}|�|��|�d|ftj��ddd��dS#1swxYwYdS)Nr�Tr�
r�r�
r�
s   r�test_dual_stack_client_v6z4CreateServerFunctionalTest.test_dual_stack_client_v6ss����-�/�/��
�
!�2�t�*�V�_�15�7�7�7�	=�:>����T�"�"�"����e�T�]�F�O�<�<�<�	=�	=�	=�	=�	=�	=�	=�	=�	=�	=�	=�	=����	=�	=�	=�	=�	=�	=r�
N)r]r^r_rr�rHr�
r�
r�
r�r�rr�r�
r�rr�
r�
r�
r`r?rr�
r�
=s=�������&�G����$6�6�6�B�B�B��X���3�5R�S�S�=�=�T�S�=��X�_�2��2�4�4�4�3�5�5��X���3�5R�S�S�B�B�T�S�5�5�B��X�_�2��2�4�4�4�3�5�5��X���3�5R�S�S�=�=�T�S�5�5�=�=�=r?r�
�send_fds�recv_fdsc��eZdZd�ZdS)�SendRecvFdsTestsc	�H�d�}d�}d�td��D��}|�||��d�|D��}tjtjtj��\}}|5|5tj|tg|��tj|tt��dzt|��dz��\}}}	}
|�||��ddd��n#1swxYwYddd��n#1swxYwY|�
|t��|�
t|��t|����|�
|	d��t|��D]>\}}|\}}
tj
|
t|��������?t|��D]O\}}tj|d��}|�
|t|��������PdS)	Nc�f�|D]-\}}tj|��tj|���.dSr<�r?r!)�pipesrt�fd2s   r�close_pipesz8SendRecvFdsTests.testSendAndRecvFds.<locals>.close_pipes�s;��!�
�
���S����
�
�
����
�
�
�
�
�
r?c�8�|D]}tj|���dSr<r�
)r<rps  r�	close_fdsz6SendRecvFdsTests.testSendAndRecvFds.<locals>.close_fds�s*���
�
���������
�
r?c�4�g|]}tj����Sr`)r?�pipe)r�r�s  rr�z7SendRecvFdsTests.testSendAndRecvFds.<locals>.<listcomp>�s��.�.�.�q�����.�.�.r?ryc��g|]\}}|��Sr`r`)r��rfd�wfds   rr�z7SendRecvFdsTests.testSendAndRecvFds.<locals>.<listcomp>�s��)�)�)�x�s�C�s�)�)�)r?r�rr�)r8rqrrrKrBr�
r�r�
r�r�r?r?r9r�r:r�)rVr�
r�
r�
r<r�r�r��fds2r�rr,r�
r�
r
s               r�testSendAndRecvFdsz#SendRecvFdsTests.testSendAndRecvFds�s���	�	�	�
	�	�	�
/�.�E�"�I�I�.�.�.������U�+�+�+�)�)�5�)�)�)���(����9K�L�L���u�
�	-�	-�E�	-�	-��O�E�C�5�#�.�.�.�%+�_�U�C��H�H�q�L�#�c�(�(�UV�,�%W�%W�"�C��u�d��O�O�I�t�,�,�,�		-�	-�	-�	-�	-�	-�	-�	-�	-�	-�	-����	-�	-�	-�	-�	-�	-�	-�	-�	-�	-�	-�	-�	-�	-�	-����	-�	-�	-�	-�	
����c�"�"�"�����T���C��H�H�-�-�-������"�"�"�$�E�*�*�	/�	/�J�E�3��H�C���H�S�#�e�*�*�+�+�-�-�.�.�.�.�#�D�/�/�	9�	9�J�E�3��7�3��$�$�D����T�C��J�J�$5�$5�$7�$7�8�8�8�8�	9�	9s7�0D	�3A3C2�&D	�2C6	�6D	�9C6	�:D	�	D
�D
N)r]r^r_r�
r`r?rr�
r�
}s#������#9�#9�#9�#9�#9r?r�
c�d�tj��}tjtjg|�R�dSr<)r�threading_setupr��addModuleCleanup�threading_cleanup)�thread_infos r�setUpModuler�
�s3��"�2�4�4�K���.�@�O�;�O�O�O�O�O�Or?�__main__)�r��testr�test.supportrrrr!r
r�rr�r<r�r	r�r?r?rmr�r��weakrefrrr�r9rr�	r�r�	�_threadr�r�r�	r�r�requires_working_socketr�r:r�r��systemr�release�WSLr�rr%r*r.r3r7r:r>rDr�rJ�HAVE_SOCKET_CAN�HAVE_SOCKET_CAN_ISOTP�HAVE_SOCKET_CAN_J1939�HAVE_SOCKET_RDS�HAVE_SOCKET_ALG�HAVE_SOCKET_QIPCRTR�HAVE_SOCKET_VSOCKr�HAVE_SOCKET_UDPLITE�HAVE_SOCKET_BLUETOOTHr,rQr�rNrbrfrir{rr�r�r�r�r�r�r�r�rrrrr(r4r:rIrOrWr[r^rarerhrlr�r�r�r�r�rr9rIrhrqr�r�r�r�rrr#rKrRrWr[rbrhrkr�r�r�r�rr
r&r6r�r*r.r1r3r5r�r:r=r?rArDrFrHrJrLrNrQrSrUrWrYr[r]r_rarcrergrprsrurwryr{r}rr�r�r�r�r�r�r,rwr�r�r�r�r�r�r�r�r�r�r�r�r		r	r	r&	r?	rZ	r�	r�	r�	r�	r�	r�	r�	r�	r�	r�r�	r�	rK
rN
r�
rnr�
r�
r�
r�
r�
r]�mainr`r?r�<module>rsf)������������"�"�"�"�"�"�&�&�&�&�&�&�)�)�)�)�)�)�����	�	�	�	�����
�
�
�
�
�
�
�
�����������������
�
�
�
�	�	�	�	�������������������
�
�
�
�����
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
���������������������O�O�O�������L�L�L�L�������E�E�E����� ���t�,�,�,�,����)�0�0��9�9���	��h�o���5� ���"2�(�"2�"4�"4�4����N�N�N�N�������G�G�G�����(�(�(����������������������
�
�
���.�.���.�#�"�$�$��.�.�0�0��.�.�0�0��"�"�$�$��"�"�$�$��*�*�,�,��&�&�(�(���g�f�&7�8�8��.�.�0�0���U�[��
�
�
&�
�	�	�	�	�	�H�%�	�	�	������H�%����7�7�7�7�7�
�7�7�7�0+�0+�0+�0+�0+�H�%�0+�0+�0+�f
7�
7�
7�
7�
7�H�%�
7�
7�
7� m�m�m�m�m�m�m�m�^,�,�,�,�,�M�>�,�,�,�,�,�,�,�,�M�>�,�,�,����(�
3�5�5�,�,�,�,�,� 1�>�,�,�5�5�,�,�,�,�,�,�M�>�,�,�,�(,�,�,�,�,�M�>�,�,�,�,����$���-�-�����<�=�=����&�
1�3�3����W�W�Y�Y�!�^�
9�;�;������H�$5�~���;�;�3�3�>�=�.�-��>3�3�3�3�3�/�3�3�3�B,�,�,�,�,�X�&��,�,�,�H�����X�&����.�����~����,�,�,�,�,�n�n�,�,�,�<!!�!!�!!�!!�!!�7�6�!!�!!�!!�H0�0�0�0�0��0�0�0�$A�A�A�A�A�'�A�A�A�
6�
6�
6�
6�
6�>�
6�
6�
6�A�A�A�A�A�,�A�A�A�@�@�@�@�@�,�@�@�@�X�X�X�X�X�l�X�X�X�2�2�2�2�2�\�2�2�2� � � � � �L� � � �
A�A�A�A�A�=�A�A�A�Y�Y�Y�Y�Y�}�Y�Y�Y�/�/�/�.F�F�F�3�3�3�>jG�jG�jG�jG�jG��*�jG�jG�jG�Z%���_�&I�J�J�P[�P[�P[�P[�P[�8�$�P[�P[�K�J�P[�f���_�&I�J�J�W=�W=�W=�W=�W=�#�W=�W=�K�J�W=�t���*�,O�P�P�'�'�'�'�'��!�'�'�Q�P�'�T���*�,O�P�P�:�:�:�:�:��!�:�:�Q�P�:�z���_�&K�L�L�G�G�G�G�G�8�$�G�G�M�L�G�"���_�&K�L�L�<9�<9�<9�<9�<9�#�<9�<9�M�L�<9�|���(�
3�5�5�7�7�7�7�7�x�(�7�7�5�5�7�6����$���-�-����&�
1�3�3�+D�+D�+D�+D�+D�X�&�+D�+D�3�3�.�-�+D�\���*�@�B�B�"�"�"�"�"��*�"�"�B�B�"�Jx!�x!�x!�x!�x!�&�x!�x!�x!�v3�3�3�3�3�(�3�3�3�:���(�
3�5�5�3�3�3�3�3�0�3�3�5�5�3�nt8�t8�t8�t8�t8�t8�t8�t8�n	6�	6�	6�	6�	6��	6�	6�	6�F�F�F�F�F��F�F�F�@�@�@�@�@��@�@�@�9�9�9�9�9�O�9�9�9�*
�
�
�
�
��
�
�
�(5�5�5�5�5�?�5�5�5�t@�t@�t@�t@�t@�/�t@�t@�t@�n:"�:"�:"�:"�:"��:"�:"�:"�z.�.�.�.�.��.�.�.�"SM�SM�SM�SM�SM�/�SM�SM�SM�l � � � � � 3� � � �F�����&����:M5�M5�M5�M5�M5�'�)<�M5�M5�M5�`8I�8I�8I�8I�8I�X�&�8I�8I�8I�vf!�f!�f!�f!�f!�0�f!�f!�f!�Ro�o�o�o�o�7�o�o�o�h
	�	�	�	�	�6�:�4�k�	�	�	�
��f�m�Y�'�'�	�	�	�	�	�/�1G�	�	�(�'�	���f�m�Y�'�'�	�	�	�	�	�\�#9�	�	�(�'�	���f�m�^�,�,�	�	�	�	�	�)�+A�	�	�-�,�	�1�1�1�1�1�7�;�5�|�1�1�1���f�m�Y�'�'����]�/�1O�P�P���z�<�(�(�	�	�	�	�	�0�2I�	�	�)�(�Q�P�(�'�	���f�m�Y�'�'����]�/�1O�P�P���z�<�(�(�	�	�	�	�	�l�$;�	�	�)�(�Q�P�(�'�	���f�m�^�,�,����]�/�1O�P�P���z�<�(�(�	�	�	�	�	�*�,C�	�	�)�(�Q�P�-�,�	���f�m�Y�'�'����]�/�1O�P�P�
��f�n�%�%���z�<�(�(�	�	�	�	�	�&:�&=�	�	�)�(�&�%�Q�P�(�'�	���f�m�^�,�,����]�/�1O�P�P�
��f�n�%�%���z�<�(�(�	�	�	�	�	�*:�*>�*A�	�	�)�(�&�%�Q�P�-�,�	����(�
3�5�5�	�	�	�	�	�!:�:�4�o�	�	�5�5�	�
���(�
3�5�5�
��f�m�Y�'�'�	�	�	�	�	�3�5O�	�	�(�'�5�5�	����(�
3�5�5�
��f�m�Y�'�'�	�	�	�	�	��'A�	�	�(�'�5�5�	����(�
3�5�5�
��f�m�^�,�,�	�	�	�	�	�-�/I�	�	�-�,�5�5�	����(�
3�5�5�1�1�1�1�1�";�;�5�7G�1�1�5�5�1���f�m�Y�'�'����]�/�1O�P�P����(�
3�5�5���z�<�(�(�	�	�	�	�	�4�6Q�	�	�)�(�5�5�Q�P�(�'�
	���f�m�Y�'�'����]�/�1O�P�P����(�
3�5�5���z�<�(�(�	�	�	�	�	�,�(C�	�	�)�(�5�5�Q�P�(�'�
	���f�m�^�,�,����]�/�1O�P�P����(�
3�5�5���z�<�(�(�	�	�	�	�	�.�0K�	�	�)�(�5�5�Q�P�-�,�
	���f�m�Y�'�'����]�/�1O�P�P����(�
3�5�5�
��f�n�%�%���z�<�(�(�	�	�	�	�	�*>�&A�	�	�)�(�&�%�5�5�Q�P�(�'�	���f�m�^�,�,����]�/�1O�P�P����(�
3�5�5�
��f�n�%�%���z�<�(�(�	�	�	�	�	�.>�*>�*E�	�	�)�(�&�%�5�5�Q�P�-�,�	�	�	�	�	�	�5�5�{�	�	�	���f�m�Y�'�'�	�	�	�	�	�'�)?�	�	�(�'�	���f�m�Y�'�'�	�	�	�	�	�\�#<�+�	�	�(�'�	���f�m�^�,�,�	�	�	�	�	�)�+D�/�	�	�-�,�	�
	�	�	�	�	�$<�$<�$<�n�	�	�	�
��f�m�Y�'�'�����N�O�O���y�-��8�8�	�	�	�	�	�.�0M�	�	�9�8�P�O�(�'�	���f�m�Y�'�'�����N�O�O���y�-��8�8�	R�	R�	R�	R�	R�L�*C�9�	R�	R�9�8�P�O�(�'�	R���f�m�^�,�,�����N�O�O���y�-��8�8�	R�	R�	R�	R�	R� 0�2K� =�	R�	R�9�8�P�O�-�,�	R�	�	�	�	�	�$<�$<�n�	�	�	���f�m�Y�'�'�
��f�i� � �	�	�	�	�	�.�0M�	�	�!� �(�'�	���f�m�Y�'�'�
��f�i� � �	�	�	�	�	�L�*C�9�	�	�!� �(�'�	���f�m�^�,�,�
��f�i� � �	�	�	�	�	� 0�2K� =�	�	�!� �-�,�	���f�m�Y�	�2�2�
��f�i��|�<�<�	�	�	�	�	��0M�	�	�=�<�3�2�	���f�m�Y��7�7�
��f�i��|�<�<�	�	�	�	�	�%5�}�%B�	�	�=�<�8�7�	�"�"�"�"�"�"�"�"�@��f�n�%�%����W�W�V�W�-�-�M�����1M�1M�B�D�D�$M�$M�$M�$M�$M�!7��$M�$M�D�D�&�%�$M�R��f�n�%�%����W�W�V�W�-�-�M�����1M�1M�B�D�D�3F�3F�3F�3F�3F�!7�!9�;�3F�3F�D�D�&�%�3F�l�����)����( #� #� #� #� #�.� #� #� #�Fg
�g
�g
�g
�g
�~�g
�g
�g
�T]�]�]�]�]�/�]�]�]�@`
�`
�`
�`
�`
�1�`
�`
�`
�FiG�iG�iG�iG�iG�(?�iG�iG�iG�X�����*A����
�����+B����
�����)@���������*A���������.E����"�"�"�"�"�F�"�"�"������)�<����P5�P5�P5�P5�P5�� 1�P5�P5�P5�fF4�F4�F4�F4�F4�m�^�F4�F4�F4�R>�>�>�>�>�]�N�>�>�>�>75�75�75�75�75�]�75�75�75�rK�K�K�K�K�]�K�K�K�.���(�
3�5�5�K�K�K�K�K�*�K�K�5�5�K�.$�$�$�$�$�X�&�$�$�$�.���S�\�W�,�.C�D�D�4H�4H�4H�4H�4H��!2�4H�4H�E�D�4H�n���W�W�V�Y�/�/�1L�M�M�G7�G7�G7�G7�G7�X�&�G7�G7�N�M�G7�TP:�P:�P:�P:�P:�&�P:�P:�P:�f�
�
�
�
�
����(���_�_�&�&�M�O�O�#�#�#�#�#�x� �#�#�O�O�#�,���_�_�&�&�M�O�O�$�$�$�$�$��*�N�$�$�O�O�$�N)9�)9�)9�)9�)9�/�)9�)9�)9�X@6�@6�@6�@6�@6�h�'�@6�@6�@6�F���W�W�V�_�5�5�0�2�2�9$�9$�9$�9$�9$�8�,�9$�9$�2�2�9$�x���R�W��_�&8�9�9����_�&<�=�=�b#�b#�b#�b#�b#�
�b#�b#�>�=�:�9�b#�JF=�F=�F=�F=�F=�1�F=�F=�F=�R���W�W�R��,�,�<�>�>�7�7�7�7�7� 5�7�7�>�>�7����_�&7�8�8�D*�D*�D*�D*�D*�8�,�D*�D*�9�8�D*�N���S�\�X�-�/D�E�E�.�.�.�.�.��)�.�.�F�E�.�
���S�\�,�,�U�3�3�5G�H�H�Q�Q�Q�Q�Q�H�-�Q�Q�I�H�Q�,0;�0;�0;�0;�0;�x�(�0;�0;�0;�f>=�>=�>=�>=�>=��!2�>=�>=�>=�@��f�j�!�!�
��f�j�!�!�
��f�i� � �$9�$9�$9�$9�$9�x�(�$9�$9�!� �"�!�"�!�$9�NP�P�P�
�z����H�M�O�O�O�O�O��s6�B�B�B�B�B"�!B"�9C>�>D�D

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