403Webshell
Server IP : 121.121.20.254  /  Your IP : 216.73.216.202
Web Server : Microsoft-IIS/10.0
System : Windows NT WEB-SERVER 10.0 build 20348 (Windows Server 2022) AMD64
User : IUSR ( 0)
PHP Version : 8.3.28
Disable Function : NONE
MySQL : ON  |  cURL : ON  |  WGET : OFF  |  Perl : OFF  |  Python : OFF  |  Sudo : OFF  |  Pkexec : OFF
Directory :  C:/Python313/Lib/test/__pycache__/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Command :


[ Back ]     

Current File : C:/Python313/Lib/test/__pycache__/test_socket.cpython-313.opt-2.pyc
�

��i\��&�SSKrSSKJr SSKJr SSKJrJrJrJrJ	r	 SSK
rSSKrSSK
r
SSKrSSKrSSKrSSKrSSKrSSKrSSKrSSKrSSKrSSKrSSKrSSKrSSKrSSKrSSKrSSKrSSKrSSKrSSK r SSK!r!SSK"r"SSK#r#SSK$J%r% SSK&r&SSK(r(SSK)r)\RT"SS9 \RVr+S	RYS
5r-Sr.Sr/\R`"5S
:Hr1\R*ReS5r3S\Rh"5;r5SSK6r6Sr7Sr8Sr9Sr:Sr;Sr<Sr=Sr>Sr?Sr@SrASrB\
R�S5rD\
R�S5rE\9"5rF\:"5rG\;"5rH\<"5rI\="5rJ\>"5rK\?"5rL\M"\S5=(a6 \R�=(a \R�"5R�S:(+rQ\@"5rR\A"5rS\B"5rT\R"S 5R�rV"S!S"\R�5rX"S#S$\R�5rY"S%S&\Y5rZ"S'S(\R�5r["S)S*\R�5r\"S+S,5r]"S-S.\X\]5r^"S/S0\Y\]5r_\R�"\QS15"S2S3\Z\]55ra"S4S5\[\]5rb"S6S7\\\]5rc\R�"\(SLS85\R�"\5S95\R�"\LS:5\R�"\8"5\e"\S;S<5:HS=5"S>S?\R�\]55555rf"S@SA\^5rg"SBSC\R�\]5rh"SDSE\R�5ri"SFSG\i5rj"SHSI\i\]5rk"SJSK\j\k5rl"SLSM\i5rm"SNSO\m5rn"SPSQ\i5ro"SRSS\o5rp"STSU\o5rq"SVSW\o5rr"SXSY\o5rs"SZS[\o5rt"S\S]\t5ru"S^S_\t5rvS`rwSarxSbry"ScSd\R�5rz\R�"\FSe5"SfSg\R�55r{\R�"\FSe5"ShSi\b55r|\R�"\GSj5"SkSl\R�55r}\R�"\HSm5"SnSo\R�55r~\R�"\ISp5"SqSr\R�55r\R�"\ISp5"SsSt\c55r�\R�"\KSu5"SvSw\R�55r�\R�"\(SLS85\R�"\LS:5"SxSy\R�555r�\R�"\RSz5"S{S|\R�55r�\R�"\TS}5"S~S\R�55r�"S�S�\g5r�"S�S�\_5r�\R�"\QS15"S�S�\a55r�"S�S�5r�"S�S�\�5r�"S�S�\�5r�"S�S�\�5r�"S�S�\�5r�"S�S�\�5r�"S�S�\�5r�"S�S�\�5r�"S�S�\�5r�"S�S�\�5r�"S�S�\�5r�"S�S�\�5r�"S�S�\�5r�"S�S�\�\�5r�"S�S�\R�5r�"S�S�\�5r�"S�S�\�5r�"S�S�\�\�\k\q5r�\x"\R6S�5"S�S�\�\�55r�\x"\R6S�5"S�S�\�\�55r�\x"\R6S�5"S�S�\�\�55r�"S�S�\�\�\k\u5r�\x"\R6S�5\R�"\GR<S�5\y"S�S�5"S�S�\�\�5555r�\x"\R6S�5\R�"\GR<S�5\y"S�S�5"S�S�\�\�5555r�\x"\R6S�5\R�"\GR<S�5\y"S�S�5"S�S�\�\�5555r�\x"\R6S�5\R�"\GR<S�5\x"\S�5\y"S�S�5"S�S�\�\�55555r�\x"\R6S�5\R�"\GR<S�5\x"\S�5\y"S�S�5"S�S�\�\�\�55555r�\R�"\QS15"S�S�\�\�\k\r55r�\R�"\QS15\x"\R6S�5"S�S�\�\�555r�\R�"\QS15\x"\R6S�5"S�S�\�\�555r�\R�"\QS15\x"\R6S�5"S�S�\�\�555r�\R�"\QS15"S�S�\�\�\k\v55r�\x"\R6S�5\R�"\GR<S�5\R�"\QS15\y"S�S�5"S�S�\�\�55555r�\x"\R6S�5\R�"\GR<S�5\R�"\QS15\y"S�S�5"S�S�\�\�55555r�\x"\R6S�5\R�"\GR<S�5\R�"\QS15\y"S�S�5"S�S�\�\�55555r�\x"\R6S�5\R�"\GR<S�5\R�"\QS15\x"\S�5\y"S�S�5"S�S�\�\�555555r�\x"\R6S�5\R�"\GR<S�5\R�"\QS15\x"\S�5\y"S�S�5"S�S�\�\�\�555555r�"S�S�\�\l\p5r�\x"\R6S�5"S�S�\�\�55r�\x"\R6S�5"S�S�\�\�\�55r�\x"\R6S�5"S�S�\�\�\�55r�"S�S�\�\�\l\s5r�\x"\R6S�5\R�"\1S�5\y"S�S�S�5"S�S�\�\�5555r�\x"\R6S�5\R�"\1S�5\y"S�S�S�5"S�S�\�\�\�5555r�\x"\R6S�5\R�"\1S�5\y"S�S�S�5"S�S�\�\�\�5555r�"S�S�\�\l\n5r�\x"\R6S�5\x"\S�5"S�S�\�\�555r�\x"\R6S�5\x"\S�5"S�S�\�\�\�555r�\x"\R6S�5\x"\S�5"S�S�\�\�\�555r�\x"\R6S�S�5\x"\S�S�S�5"S�S�\�\�555r�\x"\R6S�S�5\x"\S�S�S�5"S�S�\�\�\�555r�"S�S�5r�\x"\S�5\R�"\M"\S�5=(d	 \M"\S�5S�5"GSGS\�\q555r�\x"\S�5\R�"\M"\S�5=(d	 \M"\S�5S�5"GSGS\�\j\p555r�"GSGS\^5r�"GSGS\h5r�"GSGS	\h5r�"GS
GS\^5r�"GSGS
\g5r�"GSGS\�5r�"GSGS\�5r�"GSGS\�5r�"GSGS\�5r�"GSGS\�5r�"GSGS\�5r�"GSGS\�5r�"GSGS\�\�5r�"GSGS\R�5r�"GS GS!\X\]5r�"GS"GS#\X\]5r�"GS$GS%\X5r�"GS&GS'\Y5r�\R�"\QS15"GS(GS)\Z55r�"GS*GS+\R�5r�\R�"\R*GS,;GS-5"GS.GS/\R�55r�\R�"\M"\S�5GS05"GS1GS2\R�55r�"GS3GS4\g5r�GS5r�GS6r�GS7r�GS8r�\R�"\�"5GS95"GS:GS;\R�55r�\R�"\�"5GS95"GS<GS=\R�\]55r�"GS>GS?\^5r�"GS@GSA\R�5r�\R�"\M"\GSB5GSC5"GSDGSE\R�55r�\R�"\GR�GSF:HGSG5\R�"\&GSH5"GSIGSJ\X555r�"GSKGSL\^5r�\R�"\M"\GSM5GSN5"GSOGSP\�55r�\R�"\JGSQ5"GSRGSS\R�55r�\R�"\R*GST:HGSU5"GSVGSW\R�55r�\R�"\R*ReGSX5GSY5"GSZGS[\R�55r�"GS\GS]\R�5r�"GS^GS_\R�5r�\x"\GS`5\x"\GSa5\x"\S�5"GSbGSc\R�5555r�GSdr�\�GSe:Xa\GR�"5 gg!\'a Sr&GN�f=f!\'a Sr(GN�f=f!\'a Sr)GN�f=f!\'a Sr6GNCf=f(f�N)�mock)�support)�is_apple�	os_helper�refleak_helper�
socket_helper�threading_helper)�proxyFT)�moduleuMichael Gilfix was hereሴ
�utf-8����AIX�sunoszmicrosoft-standard-WSLc�,^�U(dSnU$U4SjnU$)Nc��SUlU$)Nc��U$�N���fs �%C:\Python313\\Lib\test\test_socket.py�<lambda>�;skipForRefleakHuntinIf.<locals>.decorator.<locals>.<lambda>Bs��a�)�client_skiprs r�	decorator�)skipForRefleakHuntinIf.<locals>.decoratorAs��'�A�M��Hrc�\>^�[R"T5UU4Sj5nSnX!lU$)Nc�z>�[R"5(a[R"ST35eT"U0UD6$)Nz'ignore while hunting for refleaks, see )r�hunting_for_refleaks�unittest�SkipTest)�args�kwdsr�issuerefs  ��r�wrapper�:skipForRefleakHuntinIf.<locals>.decorator.<locals>.wrapperGs=���!�6�6�8�8�"�+�+�.U�V^�U_�,`�a�a��$�'�$�'�'rc�F^�[R"T5U4Sj5nU$)Nc�J>�[R"5(agT"U0UD6$r)rr!)r$r%rs  �rr'�OskipForRefleakHuntinIf.<locals>.decorator.<locals>.client_skip.<locals>.wrapperOs%���%�:�:�<�<���d�+�d�+�+r)�
contextlib�wraps)rr's` rr�>skipForRefleakHuntinIf.<locals>.decorator.<locals>.client_skipNs'����!�!�!�$�,�%�,��r)r,r-r)rr'rr&s`  �rrrFs2���
�
�
�a�
 �
(�!�
(�
�#.���Nrr)�	conditionr&rs ` r�skipForRefleakHuntinIfr0?s ����	�2��)	�(�rc�,�[cg[[S5(dg[SS5n[R"U[R
S5nSSS5 [R"SW5S$!,(df   N(=f![a gf=f)N�IOCTL_VM_SOCKETS_GET_LOCAL_CIDz
/dev/vsock�rbz    �Ir)	�fcntl�hasattr�socket�open�ioctlr2�struct�unpack�OSError)r�rs  r�get_cidr>\s{���}���6�;�<�<��(�
�,��
%�����A�v�D�D�f�M�A�&�
�}�}�S�!�$�Q�'�'�&�
%������s(�B�'A5�B�5
B�?B�
B�Bc���[R"[R[R[R5nUR	5 g![
[4a gf=f�NFT)r7�PF_CAN�SOCK_RAW�CAN_RAW�close�AttributeErrorr<��ss r�_have_socket_canrHisL����M�M�&�-�-����&�.�.�I��	
���	���	
�G�$������AA�A(�'A(c���[R"[R[R[R5nUR	5 g![
[4a gf=fr@)r7rA�
SOCK_DGRAM�	CAN_ISOTPrDrEr<rFs r�_have_socket_can_isotprMs�P����M�M�&�-�-��):�):�F�<L�<L�M��	
���	���	
�G�$����rIc���[R"[R[R[R5nUR	5 g![
[4a gf=fr@)r7rArK�	CAN_J1939rDrEr<rFs r�_have_socket_can_j1939rQ}rNrIc��[R"[R[RS5nUR5 g![[
4a gf=f�NrFT)r7�PF_RDS�SOCK_SEQPACKETrDrEr<rFs r�_have_socket_rdsrV��J����M�M�&�-�-��)>�)>��B��	
���	���	
�G�$������4A�A�Ac��[R"[R[RS5nUR5 g![[
4a gf=frS)r7�AF_ALGrUrDrEr<rFs r�_have_socket_algr[�rWrXc��[R"[R[RS5nUR5 g![[
4a gf=frS)r7�
AF_QIPCRTRrKrDrEr<rFs r�_have_socket_qipcrtrr^�sL����M�M�&�+�+�V�->�->��B��	
���	���	
�G�$����rXc��[5nUSL$r)r>)�cids r�_have_socket_vsockra�s��
�)�C��t�O�rc���[R"[R[R[R5nUR	5 g![
[4a gf=fr@)r7�AF_BLUETOOTH�SOCK_STREAM�BTPROTO_RFCOMMrDrEr<rFs r�_have_socket_bluetoothrf�sT���
�M�M�&�-�-�v�/A�/A�6�CX�CX�Y��	
���	���	
�G�$����rIc���[R"[R[R[R5nUR	5 g![
[4a gf=fr@)r7rcrU�
BTPROTO_L2CAPrDrEr<rFs r�_have_socket_bluetooth_l2capri�sR����M�M�&�-�-�v�/D�/D�f�FZ�FZ�[��	
���	���	
�G�$����rIc���[R"[R[R[R5nUR	5 g![
[4a gf=fr@)r7�	AF_HYPERVrd�HV_PROTOCOL_RAWrDrEr<rFs r�_have_socket_hypervrm�sR����M�M�&�*�*�F�,>�,>��@V�@V�W��	
���	���	
�G�$����rIc#��# �[R"5n[R"U5 Sv� [R"U5 g![R"U5 f=f7fr)r7�getdefaulttimeout�setdefaulttimeout)�timeout�old_timeouts  r�socket_setdefaulttimeoutrs�sE����*�*�,�K�.�� � ��)�
�� � ��-��� � ��-�s�A%�A
�A%�
A"�"A%c#��# �[RS;aSv� g[R"5 [R"SS[
S9 Sv� SSS5 g!,(df   g=f7f)N>�win32�darwin�alwaysz9received malformed or improperly-truncated ancillary data)�action�message�category)�sys�platform�warnings�catch_warnings�filterwarnings�RuntimeWarningrrr� downgrade_malformed_data_warningr��sO����|�|�.�.�
��	�	 �	 �	"�	����O�#�	
�
	�
#�	"�	"�s�/A*�A�	A*�
A'�#A*�IPPROTO_UDPLITE��ic� �\rSrSrSrSrSrg)�
SocketTCPTestic���[R"[R[R5Ul[R
"UR5UlURR5 gr)r7�AF_INETrd�servr�	bind_port�port�listen��selfs r�setUp�SocketTCPTest.setUpsD���M�M�&�.�.�&�2D�2D�E��	�!�+�+�D�I�I�6��	��	�	���rc�F�URR5 SUlgr�r�rDr�s r�tearDown�SocketTCPTest.tearDown
����	�	������	r�r�r�N��__name__�
__module__�__qualname__�__firstlineno__r�r��__static_attributes__rrrr�r�s���
rr�c� �\rSrSrSrSrSrg)�
SocketUDPTestic��[R"[R[R5Ul[R
"UR5Ulgr)r7r�rKr�rr�r�r�s rr��SocketUDPTest.setUps4���M�M�&�.�.�&�2C�2C�D��	�!�+�+�D�I�I�6��	rc�F�URR5 SUlgrr�r�s rr��SocketUDPTest.tearDownr�rr�Nr�rrrr�r�s��7�rr�c��\rSrSrSrSrg)�SocketUDPLITETestic���[R"[R[R[R5Ul[
R"UR5Ulgr)r7r�rKr�r�rr�r�r�s rr��SocketUDPLITETest.setUps<���M�M�&�.�.�&�2C�2C�V�E[�E[�\��	�!�+�+�D�I�I�6��	rr�N)r�r�r�r�r�r�rrrr�r�s��7rr�c��\rSrSrSrSrSr\R"\5r	Sr
\
S\R"\
5S---
r
SrS	rg
)�
SocketCANTesti"�vcan0�z=IB3x8sz@3I4l2I�x�c��[R"[R[R[R5UlURURR5 URRUR45 g![a! URSUR-5 gf=f�N�%network interface `%s` does not exist)r7rArBrCrG�
addCleanuprD�bind�	interfacer<�skipTestr�s rr��SocketCANTest.setUpKs|�����v�}�}�f�o�o�v�~�~�N�����������%�	+��F�F�K�K����)�*���	+��M�M�A��>�>�*�
+�	+�s�.&B�(C�?CrFN)
r�r�r�r�r��bufsize�
can_frame_fmtr:�calcsize�can_frame_size�bcm_cmd_msg_fmtr�r�rrrr�r�"sV���I��G���M��_�_�]�3�N��  �O��s�f�o�o�o�>��B�C�C�O�+rr�c��\rSrSrSrSrSrg)�
SocketRDSTestiU� c�N�[R"[R[RS5UlUR	URR
5 [R"UR5Ulg![a URS5 gf=f)Nrzunable to bind RDS socket)r7rTrUr�r�rDrr�r�r<r�r�s rr��SocketRDSTest.setUp\sk���M�M�&�-�-��1F�1F��J��	�����	�	���(�	7�%�/�/��	�	�:�D�I���	7��M�M�5�6�	7�s� %B�B$�#B$r�N)r�r�r�r�r�r�r�rrrr�r�Us��
�G�7rr�c�8�\rSrSrSrSrSrSrSrSr	Sr
g	)
�ThreadableTestiec�H�URUlURUlgr)r��_ThreadableTest__setUp�_setUpr�s r�__init__�ThreadableTest.__init__�s���z�z����[�[��
rc�8�URR5 gr)�server_ready�setr�s r�serverExplicitReady�"ThreadableTest.serverExplicitReady�s��
	
�����rc�F^�TR[R"55 [R"5Tl[R"5Tl[R"5Tl[R"S5TlSTl
U4SjnTRU5 TR5nURS5nX#S-Sn[TSU-5n[R "TR"U45TlTR'5 TR
R)5 TRR+5 TRTRR*5 g! STl
e=f!TR
R)5 f=f)Nr
Fc�x>�TRR5(aTRR5egr)�queue�qsize�getr�s�r�raise_queued_exception�5ThreadableTest._setUp.<locals>.raise_queued_exception�s,����z�z���!�!��j�j�n�n�&�&�"r�.�_T)�enterContextr	�wait_threads_exit�	threading�Eventr��client_ready�doner��Queue�server_crashedr��id�rfind�getattr�thread�start_new_thread�	clientRun�
client_threadr�r��wait)r�r��
methodnamer��test_methods`    rr��ThreadableTest._setUp�s9������*�<�<�>�?�%�O�O�-���%�O�O�-����O�O�%��	��[�[��^��
�#���	'�	
���.�/��W�W�Y�
����S�!���!���%�
��d�C�*�$4�5��#�4�4��N�N�[�N�,���	$��L�L�N�

���!�!�#������ �����	�	���'��
	�"&�D�������!�!�#�s�E7�7
F�F�F c��URR5 UR5 URR5 UR(aUR
5 g[US5(d[S5eU"5 UR
5 g![aOnURRU5 UR
5 SnAURR5 gSnAff=f!URR5 f=f![a%nURRU5 SnAN�SnAff=f!UR
5 f=f)N�__call__z%test_func must be a callable function)r�r��clientSetUp�
BaseExceptionr��put�clientTearDownr�r�r�r6�	TypeError)r��	test_func�es   rr��ThreadableTest.clientRun�s
������� �	$�����
���!�!�#�������!���y�*�-�-��C�D�D�	"��K�
���!��!�	��J�J�N�N�1�����!�����!�!�#��	��

���!�!�#���	��J�J�N�N�1����	��
���!�sS�B�D�
C7�(+C2�C:�2C7�7C:�:D�
E�#E�>E�E�E�Ec��[S5e)Nz clientSetUp must be implemented.)�NotImplementedErrorr�s rr��ThreadableTest.clientSetUp�s��!�"D�E�Erc�b�URR5 [R"5 gr)r�r�r��exitr�s rr��ThreadableTest.clientTearDown�s���	�	�
�
�����
r)�__setUpr�r�r�r�r�r�r�N)r�r�r�r�r�r�r�r�r�r�r�rrrr�r�es#��L!�
 �(�@"�,F�rr�c�*�\rSrSrSSjrSrSrSrg)�ThreadedTCPSocketTesti�c�T�[RXS9 [RU5 g�N)�
methodName�r�r�r��r�r�s  rr��ThreadedTCPSocketTest.__init__��!�����t��;�����%rc�t�[R"[R[R5Ulgr)r7r�rd�clir�s rr��!ThreadedTCPSocketTest.clientSetUp�s���=�=�����1C�1C�D��rc�p�URR5 SUl[RU5 gr�rrDr�r�r�s rr��$ThreadedTCPSocketTest.clientTearDown��%������������%�%�d�+r�rN��runTest�r�r�r�r�r�r�r�r�rrrr�r��s��&�E�,rr�c�*�\rSrSrSSjrSrSrSrg)�ThreadedUDPSocketTesti�c�T�[RXS9 [RU5 gr�)r�r�r�r�s  rr��ThreadedUDPSocketTest.__init__�rrc�t�[R"[R[R5Ulgr)r7r�rKrr�s rr��!ThreadedUDPSocketTest.clientSetUp�s���=�=�����1B�1B�C��rc�p�URR5 SUl[RU5 grrr�s rr��$ThreadedUDPSocketTest.clientTearDown�rrrNr	rrrrr
r
�s��&�D�,rr
z'UDPLITE sockets required for this test.c�*�\rSrSrSSjrSrSrSrg)�ThreadedUDPLITESocketTesti�c�T�[RXS9 [RU5 gr�)r�r�r�r�s  rr��"ThreadedUDPLITESocketTest.__init__�s!���"�"�4�"�?�����%rc��[R"[R[R[R5Ulgr)r7r�rKr�rr�s rr��%ThreadedUDPLITESocketTest.clientSetUp�s&���=�=�����1B�1B�F�DZ�DZ�[��rc�p�URR5 SUl[RU5 grrr�s rr��(ThreadedUDPLITESocketTest.clientTearDown�rrrNr	rrrrrr�s��&�\�,rrc�*�\rSrSrSSjrSrSrSrg)�ThreadedCANSocketTest�c�T�[RXS9 [RU5 gr�)r�r�r�r�s  rr��ThreadedCANSocketTest.__init__rrc��[R"[R[R[R5UlURRUR45 g![a gf=fr)r7rArBrCrr�r�r<r�s rr��!ThreadedCANSocketTest.clientSetUpsR���=�=����������P���	��H�H�M�M�4�>�>�+�,���	�
�	�s�	&A0�0
A=�<A=c�p�URR5 SUl[RU5 grrr�s rr��$ThreadedCANSocketTest.clientTearDownrrrNr	rrrrrrs��&��,rrc�*�\rSrSrSSjrSrSrSrg)�ThreadedRDSSocketTestic�T�[RXS9 [RU5 gr�)r�r�r�r�s  rr��ThreadedRDSSocketTest.__init__rrc��[R"[R[RS5UlURR	[
S45 URR
5Ulg![a gf=f�Nr)	r7rTrUrr��HOST�getsockname�cli_addrr<r�s rr��!ThreadedRDSSocketTest.clientSetUpsa���=�=�����0E�0E�q�I���	��H�H�M�M�4��)�$� �H�H�0�0�2�D�M���	�
�	�s�AA<�<
B	�B	c�p�URR5 SUl[RU5 grrr�s rr��$ThreadedRDSSocketTest.clientTearDown%rr�rr-Nr	rrrrr&r&s��&�	�,rr&�
need fcntlz$VSOCK does not work on Microsoft WSLz%VSOCK sockets required for this test.�VMADDR_CID_HOST�z-This test can only be run on a virtual guest.c�6�\rSrSrS	SjrSrSrSrSrSr	g)
�ThreadedVSOCKSocketStreamTesti*c�h�[RRXS9 [RU5 gr��r"�TestCaser�r�r�s  rr��&ThreadedVSOCKSocketStreamTest.__init__2s'�����"�"�4�"�?�����%rc�>�[R"[R[R5UlUR	URR
5 [
5nU[R[R4;a[nURRU[45 URR!5 UR#5 URR%[&R(5 URR+5uUlUlUR	UR,R
5 g![a>nUR[R:XaURSU<35 SnAN�eSnAff=f)Nzbind() failed with )r7�AF_VSOCKrdr�r�rDr>r3�VMADDR_CID_ANY�VMADDR_CID_LOCALr��	VSOCKPORTr<�errno�
EADDRNOTAVAILr�r�r��
settimeoutr�LOOPBACK_TIMEOUT�accept�conn�connaddr)r�r`�excs   rr��#ThreadedVSOCKSocketStreamTest.setUp6s���M�M�&�/�/�6�3E�3E�F��	�����	�	���(��i���6�)�)�6�+@�+@�A�A�"�C�	��I�I�N�N�C��+�,�	
�	�	����� � �"��	�	���W�5�5�6�#'�9�9�#3�#3�#5� ��	�4�=�����	�	���(���	��y�y�E�/�/�/��
�
� 3�C�7�;�<�<���		�s�!E�
F�3F�F�Fc��[R"S5 [R"[R[R5UlUR
UR
R5 [5nU[R[R4;a[nUR
RU[45 g)N皙�����?)�time�sleepr7r<rdrr�rDr>r3r=r>�connectr?)r�r`s  rr��)ThreadedVSOCKSocketStreamTest.clientSetUpIsy���
�
�3���=�=����&�2D�2D�E�����������'��i���6�)�)�6�+@�+@�A�A�"�C������#�y�)�*rc���URRS5nURW[5 g![a$nUR[	U55 SnAN@SnAff=f�N�)rE�recv�PermissionErrorr��repr�assertEqual�MSG)r��msgrGs   r�
testStream�(ThreadedVSOCKSocketStreamTest.testStreamSsP��	%��)�)�.�.��&�C�	
����c�"���	%��M�M�$�s�)�$�$��	%�s�4�
A"�A�A"c�v�URR[5 URR5 gr�r�sendrVrDr�s r�_testStream�)ThreadedVSOCKSocketStreamTest._testStreamZ� �����
�
�c�������r)rrErFr�Nr	�
r�r�r�r�r�r�r�rXr]r�rrrr6r6*s��&�)�&+�#�rr6c�6�\rSrSrS	SjrSrSrSrSrSr	g)
�SocketConnectedTesti^c�*�[RXS9 gr�)r�r�r�s  rr��SocketConnectedTest.__init__e����&�&�t�&�Crc��[RU5 UR5 URR	5upXlgr)r�r�r�r�rD�cli_conn�r�rE�addrs   rr��SocketConnectedTest.setUphs7���#�#�D�)�	
� � �"��Y�Y�%�%�'�
���
rc�p�URR5 SUl[RU5 gr)rgrDr�r�r�s rr��SocketConnectedTest.tearDownps'���
�
������
��&�&�t�,rc��[RU5 URR[UR
45 URUlgr)r�r�rrMr+r��	serv_connr�s rr��SocketConnectedTest.clientSetUpus6���)�)�$�/������$��	�	�*�+�����rc�p�URR5 SUl[RU5 gr)rnrDr�r�r�s rr��"SocketConnectedTest.clientTearDownzs'������������,�,�T�2r�rgrnNr	)
r�r�r�r�r�r�r�r�r�r�rrrrbrb^s��D��-�
"�
3rrbc�<�\rSrSrS
SjrSrSrSrSrSr	Sr
g	)�SocketPairTestic��[RRXS9 [RU5 SUlSUlgr�)r"r9r�r�rr�r�s  rr��SocketPairTest.__init__�s5�����"�"�4�"�?�����%������	rc�,�[R"5$r)r7�
socketpairr�s rrx�SocketPairTest.socketpair�s��� � �"�"rc�>�UR5uUlUlgr)rxr�rr�s rr��SocketPairTest.setUp�s��"�o�o�/���	�4�8rc�h�UR(aURR5 SUlgrr�r�s rr��SocketPairTest.tearDown�s���9�9��I�I�O�O����	rc��grrr�s rr��SocketPairTest.clientSetUp����rc��UR(aURR5 SUl[RU5 grrr�s rr��SocketPairTest.clientTearDown�s,���8�8��H�H�N�N������%�%�d�+r)rr�Nr	)r�r�r�r�r�rxr�r�r�r�r�rrrrtrts ���#�0��

�,rrtc�&�\rSrSrSrSrSrSrg)�SocketTestBasei�c��UR5UlURUR5 UR	5 gr)�	newSocketr�r��close_server�
bindServerr�s rr��SocketTestBase.setUp�s,���N�N�$��	�����)�)�*����rc�F�URR5 SUlgrr�r�s rr��SocketTestBase.close_server�r�rc�x�URUR5 URR5Ulgr)�bindSockr�r,�	serv_addrr�s rr��SocketTestBase.bindServer�s&���
�
�d�i�i� ����.�.�0��r)r�r�N)r�r�r�r�r�r�r�r�rrrr�r��s���
�1rr�c�(^�\rSrSrU4SjrSrU=r$)�SocketListeningTestMixini�c�V>�[TU]5 URR5 gr)�superr�r�r��r��	__class__s �rr��SocketListeningTestMixin.setUp�s���
��
���	�	���rr�r�r�r�r�r�r��
__classcell__�r�s@rr�r��s
����rr�c�@^�\rSrSrU4SjrSrSrSrSrSr	U=r
$)�ThreadedSocketTestMixini�c�P>�[TU]"U0UD6 [RU5 gr)r�r�r��r�r$�kwargsr�s   �rr�� ThreadedSocketTestMixin.__init__�s#���
���$�)�&�)�����%rc�N�UR5UlUR5 gr)�newClientSocketr�
bindClientr�s rr��#ThreadedSocketTestMixin.clientSetUp�s���'�'�)������rc�"�UR5$r)r�r�s rr��'ThreadedSocketTestMixin.newClientSocket�s���~�~��rc�x�URUR5 URR5Ulgr)r�rr,r-r�s rr��"ThreadedSocketTestMixin.bindClient�s&���
�
�d�h�h�����,�,�.��
rc�p�URR5 SUl[RU5 grrr�s rr��&ThreadedSocketTestMixin.clientTearDown�rrr1)r�r�r�r�r�r�r�r�r�r�r�r�s@rr�r��s!���&�� �/�
,�,rr�c�L^�\rSrSrU4SjrU4SjrU4SjrU4SjrSrU=r	$)�ConnectedStreamTestMixini�c�>�[TU]5 UR5 URR	5upXlgr)r�r�r�r�rDrg)r�rErir�s   �rr��ConnectedStreamTestMixin.setUp�s3���
��
��	
� � �"��Y�Y�%�%�'�
���
rc�d>�URR5 SUl[TU]
5 gr)rgrDr�r�r�s �rr��!ConnectedStreamTestMixin.tearDown�s%����
�
������
�
���rc�>�[TU]5 URRUR5 URUlgr)r�r�rrMr�rnr�s �rr��$ConnectedStreamTestMixin.clientSetUp�s/���
������������(�����rc�>�URR5 SUl[TU]5 g![a Nf=fr)rnrDrEr�r�r�s �rr��'ConnectedStreamTestMixin.clientTearDown�s@���	��N�N� � �"�!�D�N�	��� ���	��	�s�!3�
A�Arr)
r�r�r�r�r�r�r�r�r�r�r�s@rr�r��s�����
"�
!�!rr�c��\rSrSrSrSrg)�UnixSocketTestBaseic��[R"5nUR[RU5 [R
"X5 gr)r�create_unix_domain_namer�r�unlink�bind_unix_socket)r��sock�paths   rr��UnixSocketTestBase.bindSock
s2���4�4�6�����	�(�(�$�/��&�&�t�2rrN)r�r�r�r�r�r�rrrr�r�s��3rr�c��\rSrSrSrSrg)�UnixStreamBaseic�h�[R"[R[R5$r)r7�AF_UNIXrdr�s rr��UnixStreamBase.newSocket����}�}�V�^�^�V�-?�-?�@�@rrN�r�r�r�r�r�r�rrrr�r����Arr�c�2^�\rSrSr\rU4SjrSrSrU=r	$)�InetTestBaseic�J>�[TU]5 URSUlg�Nr
)r�r�r�r�r�s �rr��InetTestBase.setUps���
��
���N�N�1�%��	rc�@�[R"XRS9 g)N��host)rr�r��r�r�s  rr��InetTestBase.bindSock"s������9�9�5r)r�)
r�r�r�r�r+r�r�r�r�r�r�s@rr�r�s����D�&�6�6rr�c��\rSrSrSrSrg)�TCPTestBasei%c�h�[R"[R[R5$r)r7r�rdr�s rr��TCPTestBase.newSocket(r�rrNr�rrrr�r�%r�rr�c��\rSrSrSrSrg)�UDPTestBasei+c�h�[R"[R[R5$r)r7r�rKr�s rr��UDPTestBase.newSocket.s���}�}�V�^�^�V�->�->�?�?rrNr�rrrr�r�+s��@rr�c��\rSrSrSrSrg)�UDPLITETestBasei1c��[R"[R[R[R5$r)r7r�rKr�r�s rr��UDPLITETestBase.newSocket4s%���}�}�V�^�^�V�->�->��@V�@V�W�WrrNr�rrrr�r�1s��Xrr�c��\rSrSrSrSrg)�SCTPStreamBasei7c��[R"[R[R[R5$r)r7r�rd�IPPROTO_SCTPr�s rr��SCTPStreamBase.newSocket:s*���}�}�V�^�^�V�-?�-?�#�0�0�2�	2rrNr�rrrr�r�7s��2rr�c�,�\rSrSr\R
rSrg)�
Inet6TestBasei?rN)r�r�r�r�r�HOSTv6r�r�rrrr�r�?s�����Drr�c��\rSrSrSrSrg)�UDP6TestBaseiDc�h�[R"[R[R5$r)r7�AF_INET6rKr�s rr��UDP6TestBase.newSocketGs���}�}�V�_�_�f�.?�.?�@�@rrNr�rrrr�r�Dr�rr�c��\rSrSrSrSrg)�UDPLITE6TestBaseiJc��[R"[R[R[R5$r)r7r�rKr�r�s rr��UDPLITE6TestBase.newSocketMs%���}�}�V�_�_�f�.?�.?��AW�AW�X�XrrNr�rrrr�r�Js��Yrr�c�6^^�SmUU4SjnSnU(aU$U$)Nc��grr)r$r�s  r�client_pass�%skipWithClientIf.<locals>.client_pass\r�rc�>�[R"T5"U5n[U[5(dU4SjUlU$)Nc�>�T$rr)rr�s �rr�3skipWithClientIf.<locals>.skipdec.<locals>.<lambda>as���;r)r"�skip�
isinstance�typer)�obj�retvalr��reasons  ��r�skipdec�!skipWithClientIf.<locals>.skipdec^s0������v�&�s�+���#�t�$�$�!6�F���
rc�b�[U[5(d[US5(dSUlU$)Nrc��U$rrrs rr�5skipWithClientIf.<locals>.noskipdec.<locals>.<lambda>es��r)r�r�r6r)r�s r�	noskipdec�#skipWithClientIf.<locals>.noskipdeccs'���3��%�%���m�)D�)D�)�C�O��
rr)r/r�r�r�r�s `  @r�skipWithClientIfrSs!���
��
� �7�.�Y�.rc��UVs/sHn[X5(aMUPM nn[USSRSU55-5$s snf)N�don't have �, c3�$# �UHov� M g7frr��.0�names  r�	<genexpr>�requireAttrs.<locals>.<genexpr>qs���*D�G�D�4�G���)r6r�join)r��
attributesr�missings    r�requireAttrsrjsM��
!+�E�
��'�#�2D�t�
�G�E�������*D�G�*D�!D�D�F�F��Fs
�A
�A
c	�B�SnUVs/sH3n[U[5(dM[[U5(aM1UPM5 nnU(aSSR	SU55-nO[UVs/sH*n[U[5(a[[U5OUPM, nn[R"U6nUR
5 [USLSRSR	SU55U55$s snfs snf![an[U5nSnANXSnAff=f)Nrrc3�$# �UHov� M g7frrrs  rr� requireSocket.<locals>.<genexpr>s���'A�����r
zcan't create socket({0}): {1}c3�8# �UHn[U5v� M g7fr)�str�r�os  rrr�s���+�d��c�!�f�f�d�s�)
r�rr6r7rr�rDr<r�format)r$�errr�r
�callargsrGr�s       r�
requireSocketrts���C�"�B�d�s��#�s�#��,3�F�C�,@��d�G�B���d�i�i�'A��'A�A�A�� $�%�#��-7�s�C�,@�,@�G�F�C�(�c�I�#�	�%�	��
�
�x�(�A�

�G�G�I���4��'�.�.��I�I�+�d�+�+�S�	2�3�3��B��
%���	��a�&�C��	�s-�C5�C5�C5�*1C:�C?�?
D�	D�Dc	���\rSrSr\R
"\SLS5S5rSrSr	\R
"\SLS5S5r
SrS	rS
r
SrSr\R
"\R"S
:HS5S5r\R&"\R*S5S5r\R
"\R0S:HS5\R
"\R4S5S55rSrSrSr\R
"\"\ S5S5\R
"\"\ S5S5S55r!\R
"\"\ S5S5S 5r"\R
"\"\ S!5S"5S#5r#\R
"\"\ S$5S%5S&5r$\R
"\"\S'5S(5S)5r%S*r&S+r'\RP\R&"\)SLS,5S-55r*S.r+S/r,\R
"\"\ S05S15S25r-\R
"\"\ S35S45S55r.\R
"\"\ S35S45S65r/\R
"\"\ S75S85S95r0\R
"\"\ S75S85S:5r1S;r2S<r3S=r4S>r5S?r6S@r7SAr8\R
"\R"S
:HS5SB5r9\R
"\R"S
:HS5\R
"\"\ SC5SD5SE55r:SFr;\R&"\)SLS,5SG5r<SHr=\R
"\R|"SI5SJ5SK5r?SLr@SMrASNrBSOrCSPrDSQrESRrFSSrGSTrHSUrISVrJ\RP\R&"\)SLS,5SW55rK\R
"\R4SX5SY5rL\R
"\R4SX5SZ5rMS[rN\R
"\R4SX5\R&"\R0S\:HS]5\R&"\OS^5\R
"\"\ S5S_5S`5555rP\R
"\R4SX5\R
"\R0S\:HSa5Sb55rQ\R
"\R4SX5\R&"\R0S\:HS]5\R&"\OS^5\R
"\"\ S5S_5Sc5555rR\R
"\R4SX5\R
"\R0S\:HSa5Sd55rSSerTSfrUSgrV\R
"\"\Sh5Si5Sj5rWSkrXSlrYSmrZSnr[Sor\\R&"\R"S
:HSp5Sq5r]Srr^Ssr_Str`SuraSvrbSwrc\R
"\"\ R@Sx5Sy5Sz5rdS{reg)|�GeneralModuleTestsi�Nzneed _socket modulec���UR[R"[R55 UR[S5 S[RlSSS5 g!,(df   g=f)N�	immutabler
)�
assertTrue�gc�
is_tracked�_socketr7�assertRaisesRegexr��foor�s r�test_socket_type�#GeneralModuleTests.test_socket_type�sC������
�
�g�n�n�5�6�
�
#�
#�I�{�
;�!"�G�N�N��<�
;�
;�s�
A)�)
A7c���SSKnUR[RURL5 [R"5nUR	U[R5 UR5 gr*)r!rr7�
SocketType�assertIsInstancerD)r�r!rGs   r�test_SocketType_is_socketobject�2GeneralModuleTests.test_SocketType_is_socketobject�sJ�������)�)�W�^�^�;�<��M�M�O�����a��!2�!2�3�	���	rc�>�[R"[R[R5nU URSUR	5-[U55 URS[R-[U55 URS[R-[U55 URS[U55 UR
S[U55 URS5 URS[U55 UR[UR55[U55 SSS5 URS[U55 UR
S[U55 g!,(df   NE=f)	Nzfd=%iz	family=%sztype=%szproto=0�raddr��	127.0.0.1r�laddrz[closed])
r7r�rd�assertIn�filenorT�assertNotInr�rr,�r�rGs  r�	test_repr�GeneralModuleTests.test_repr�s���M�M�&�.�.�&�*<�*<�=��
��M�M�'�A�H�H�J�.��Q��8��M�M�+����6��Q��@��M�M�)�f�&8�&8�8�$�q�'�B��M�M�)�T�!�W�-����W�d�1�g�.�
�F�F�#�$��M�M�'�4��7�+��M�M�#�a�m�m�o�.��Q��8��	
�
�
�j�$�q�'�*�����$�q�'�*��Q�s�DF�
Fc	��[R"[R[R5nSUR	5<SUR
<SUR<SUR<S3	nUR[U5U5 UR5 SUR
<SUR<SUR<S3nUR[U5U5 g!UR5 f=f)Nz<socket object, fd=z	, family=z, type=z, proto=�>z<socket object, fd=-1, family=)r!r7r�rdr1�familyr��protorUrTrD)r�rG�expecteds   r�test_csocket_repr�$GeneralModuleTests.test_csocket_repr�s����N�N�7�?�?�G�,?�,?�@��	��8�8�:�q�x�x�������B�H����T�!�W�h�/�
�G�G�I��x�x�������2������a��(�+��
�G�G�I�s�AC'�'C9c��[R"[R[R5n[U5nUR	UR5UR55 SSS5 Sn[R"5 WR5 URS5 g!,(df   NH=f![a gf=f)NzSocket proxy still exists)
r7r�rdr
rUr1r�
gc_collect�fail�ReferenceError)r�rG�ps   r�test_weakref�GeneralModuleTests.test_weakref�s���
�]�]�6�>�>�6�+=�+=�
>�!��a��A����Q�X�X�Z�����4�?�
������	3�
�H�H�J�
�I�I�1�2�?�
>���	��	�s�:B0�C�0
B>�
C�
Cc�H�SnUR[US-S9 [e!,(df   O=fUR[US-S9 [Re!,(df   O=fUR[US-S9 [Re!,(df   g=f)Nz$Error raising socket exception (%s).r<�rWz
socket.herrorzsocket.gaierror)�assertRaisesr<r7�herror�gaierror�r�rWs  r�testSocketError�"GeneralModuleTests.testSocketError�s���4��
�
�
�w�C�)�O�
�
<��M�=�
<��
�
�
�w�C�/�,A�
�
B��-�-��C�
B��
�
�
�w�C�2C�,C�
�
D��/�/�!�E�
D�s �!�
/�	A�
A(�B�
B!c�d�[R"[R[R5nURUR5 URS5 UR
5nUR[5nURSU5 SSS5 UR[WR5S5 UR[5nURSU5 SSS5 UR[UR5S5 UR[5nURSS5 SSS5 URS[UR55 UR[5nURSSU5 SSS5 UR[UR5S5 UR[5nURSSU5 SSS5 UR[UR5S5 UR[5nURSSS5 SSS5 URS[UR55 UR[5nURSS	U5 SSS5 UR[5nURSSS5 SSS5 UR[5nURS5 SSS5 URS
[UR55 UR[5nURSSUS5 SSS5 URS[UR55 g!,(df   GN�=f!,(df   GN�=f!,(df   GNh=f!,(df   GN$=f!,(df   GN�=f!,(df   GN�=f!,(df   GNX=f!,(df   GN9=f!,(df   GN=f!,(df   N�=f)
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))r7r�rKr�rDr�r,rFr��sendtorUr�	exceptionr0)r�rG�sockname�cms    r�testSendtoErrors�#GeneralModuleTests.testSendtoErrors�s����M�M�&�.�.�&�*;�*;�<�������� �	���w���=�=�?��
�
�
�y�
)�R�
�H�H�X�x�(�*�����R�\�\�*�E�	G�
�
�
�y�
)�R�
�H�H�R��"�*�����R�\�\�*�I�	K�
�
�
�y�
)�R�
�H�H�V�T�"�*��
�
�n�S����%6�7�
�
�
�y�
)�R�
�H�H�X�q�(�+�*�����R�\�\�*�E�	G�
�
�
�y�
)�R�
�H�H�R��H�%�*�����R�\�\�*�I�	K�
�
�
�y�
)�R�
�H�H�V�Q��%�*��
�
�n�c�"�,�,�&7�8�
�
�
�y�
)�R�
�H�H�V�U�H�-�*�
�
�
�y�
)�R�
�H�H�V�T�4�(�*��
�
�y�
)�R�
�H�H�V��*��
�
�k�3�r�|�|�#4�5�
�
�
�y�
)�R�
�H�H�V�Q��!�,�*��
�
�k�3�r�|�|�#4�5�C*�
)��*�
)��*�
)��*�
)��*�
)��*�
)��*�
)��
)�
)��*�
)��*�
)�sx�M?�N�/N#�N5�O�0O�O+�7O=�(P�<P!�?
N�
N �#
N2�5
O�
O�
O(�+
O:�=
P�
P�!
P/c�N�[R [R(a[R [R [R
 [R [R [R [R [R gr)r7r��has_ipv6r�rdrKrB�SOCK_RDMrU�
SOL_SOCKET�SO_REUSEADDRr�s r�testCrucialConstants�'GeneralModuleTests.testCrucialConstants�sR������?�?��O�O���������������������rc��[R [R [R(a[R ggr)r7�IPPROTO_TCP�IPPROTO_UDPrX�IPPROTO_IPV6r�s r�testCrucialIpProtoConstants�.GeneralModuleTests.testCrucialIpProtoConstantss)���������?�?����r�nt�Windows specificc��[R [R [R [R [R
 [R [R [R gr)	r7�IPPROTO_ICLFXBM�
IPPROTO_ST�IPPROTO_CBT�IPPROTO_IGP�IPPROTO_RDP�IPPROTO_PGM�IPPROTO_L2TPr�r�s r�testWindowsSpecificConstants�/GeneralModuleTests.testWindowsSpecificConstantssJ�������������������������rzWASI is missing these methodsc��/SQnUH9n[[RU5(aM$URSUS35 M; g)N)�_acceptr�rM�
connect_ex�getpeernamer,r��recvfrom�
recvfrom_intorQ�
setsockopt�shutdownzsocket method z is missing)r6r7r?)r��namesrs   r�test_socket_methods�&GeneralModuleTests.test_socket_methodss;��
��
�D��6�=�=�$�/�/��	�	�N�4�&��<�=�rrv�macOS specific test�IPv6 required for this testc�f�1SknUH'nUR[[U5SUS35 M) g)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 '�')rr6r7)r��opts�opts   r�test3542SocketOptions�(GeneralModuleTests.test3542SocketOptions)s7��
��,�C��O�O����$�(G��u�A�&N�
�rc���[R"5n[R"U5nURWR
S5S:�S5 [R"U5up4nUW/W-n[R"U5nXv;a$URSU<S[U5<S35 gg![a UR	S5 N�f=f![a UR	S5 N�f=f)N�name lookup failurer�rzError resolving host to ip.z1Error testing host resolution mechanisms. (fqdn: z, all: �))r7�gethostname�
gethostbynamer<r�r�find�
gethostbyaddr�getfqdnr?rT)r��hostname�ip�hname�aliases�ipaddrs�all_host_names�fqhns        r�testHostnameRes�"GeneralModuleTests.testHostnameResHs����%�%�'��	1��%�%�h�/�B�	
���������)�+H�I�	1�&,�&:�&:�2�&>�#�E�G�#�E�*�W�4���~�~�b�!���%��I�I�Y]�_c�dr�_s�t�u�&���	1��M�M�/�0�	1���	1��M�M�/�0�	1�s#�B2�C�2C�C�C1�0C1c��[RSS4H)nUR[R"U5U5 M+ [R4H,nURU[R"U5S5 M. g)Nz10.0.0.1�255.255.255.255r4)r�HOSTv4rUr7r�r0r�)r�rir�s   r�test_host_resolution�'GeneralModuleTests.test_host_resolution[si��"�)�)�:�7H�I�D����V�1�1�$�7��>�J�
#�)�)�*�D��M�M�$�� 4� 4�T� :�1� =�>�+rc�,�SnSHinUR[US9 [R"U5 SSS5 UR[US9 [R"U5 SSS5 Mk g!,(df   NF=f!,(df   M�=f)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:1rE)rFr<r7r�r�)r��explanationris   r� test_host_resolution_bad_address�3GeneralModuleTests.test_host_resolution_bad_addressdsu��
3�	�*�D��"�"�7��"�5��$�$�T�*�6��"�"�7��"�<��$�$�T�*�=�<�	*�5�5��<�<�s�A3�B�3
B	�
B	�sethostnameztest needs socket.sethostname()r�ztest needs socket.gethostname()c��[R"5n[R"S5 UR[R"5S5 [R"S5 UR[R"5S5 [R"U5 g![a:nUR[R
:XaUR
S5 SnAN�eSnAff=f![R"U5 f=f)N�newztest should be run as rootsbarrO)r7r�r�r<r@�EPERMr�rU)r��oldhnr�s   r�test_sethostname�#GeneralModuleTests.test_sethostnameus����"�"�$��	����u�%�	&����V�/�/�1�5�9����v�&����V�/�/�1�5�9����u�%���	��w�w�%�+�+�%��
�
�:�;�;���		��
���u�%�s)�B%�A C,�%
C)�//C$�#C$�$C)�,D�if_nameindexz$socket.if_nameindex() not available.c��[R"5nUH�up#URU[5 URU[5 URUS5 [R"U5nURU[5 URX$5 [R"U5nURU[5 URX55 M� gr*)	r7r�r(�intr�
assertGreater�if_nametoindexrU�if_indextoname)r��
interfaces�indexr�_index�_names      r�testInterfaceNameIndex�)GeneralModuleTests.testInterfaceNameIndex�s����(�(�*�
�%�K�E��!�!�%��-��!�!�$��,����u�a�(��*�*�4�0�F��!�!�&�#�.����U�+��)�)�%�0�E��!�!�%��-����T�)�&rr�z&socket.if_indextoname() not available.c��UR[5n[R"S5 SSS5 UR	WR
R5 UR[[RS5 UR[[RSS-5 UR[[RS5 [[S5(a�[[R"55nUHInUS-nXB;dMUR[[45 [R"U5 SSS5 MK SHDnX2;dM
UR[[45 [R"U5 SSS5 MF gg!,(df   GNt=f!,(df   M�=f!,(df   M}=f)	Nr���r4���	_DEADBEEFr��)���l����)rFr<r7r��assertIsNotNonerRr@�
OverflowErrorr�r6�dictr�)r�rT�indicesr��index2s     r�testInvalidInterfaceIndexToName�2GeneralModuleTests.testInvalidInterfaceIndexToName�sL���
�
�w�
'�2��!�!�!�$�(����R�\�\�/�/�0����-��)>�)>��C����-��)>�)>��4��H����)�V�%:�%:�K�H��6�>�*�*��6�.�.�0�1�G� �������(��*�*�M�7�+C�D��-�-�f�5�E�D�!�
*���'��*�*�M�7�+C�D��-�-�e�4�E�D�*�+�(�
'��E�D��E�D�s#�F�+F,�5F>�
F)�,
F;	�>
G
	r�z&socket.if_nametoindex() not available.c�"�UR[5n[R"S5 SSS5 UR	WR
R5 UR[[RS5 g!,(df   NY=f)Nr�r)rFr<r7r�r�rRr@r��r�rTs  r�testInvalidInterfaceNameToIndex�2GeneralModuleTests.testInvalidInterfaceNameToIndex�s`���
�
�w�
'�2��!�!�+�.�(����R�\�\�/�/�0����)�V�%:�%:�A�>�	(�
'�s�B�
B�getrefcount�test needs sys.getrefcount()c���[R"[5n[R"[S5 g![
a4 [R"[5W:waUR
S5 ggf=f)Nrz$socket.getnameinfo loses a reference)r{r�r�r7�getnameinfor�r?)r��origs  r�testRefCountGetNameInfo�*GeneralModuleTests.testRefCountGetNameInfo�sZ��	B��?�?�8�,�D����x��*���	B����x�(�D�0��	�	�@�A�1�	B�s�58�9A6�5A6c�T�[R"SS5 g![a gf=f)N)r�rrrr)r7r�r<r�s r�testInterpreterCrash�'GeneralModuleTests.testInterpreterCrash�s)��	����~�q�1���	��	�s��
'�'c��[RS[RS[RS[RS0nUR5Hnup#SU-S-
nSH(nUR
XT-U"U"XT-55U-5 M* U"U5nUR
Xd-U5 UR[US5 Mp g)N� �r
)rr
�i��r4igE#i2Tvl)	r7�htonl�ntohl�htons�ntohs�itemsrUrFr�)r��sizes�func�size�maskr��swappeds       r�testNtoH�GeneralModuleTests.testNtoH�s������r�6�<�<�����r�6�<�<��5���+�+�-�J�D��t�G�q�=�D�G��� � ���4��Q�V��+=��+D�E�H��4�j�G����W�^�T�2����m�T�5�9�(r�requires _testcapic��SSKn/SQnUS/-nSSSSS-/nUURS-
URS-/-S	UR/-nUH/n[R"U5 [R
"U5 M1 UH/n[R"U5 [R"U5 M1 UHMnUR[[RU5 UR[[R
U5 MO UHMnUR[[RU5 UR[[RU5 MO g)
Nr)rr
r4r�r�r����r�r
r��)
�	_testcapi�INT_MIN�INT_MAXr7r�r�r�r�rFr�)r�r��
s_good_values�
l_good_values�l_bad_values�s_bad_values�ks       r�testNtoHErrors�!GeneralModuleTests.testNtoHErrors�s��	�)�
�%���4�
��B��q�$�w�/���
�
�
�q�
 �)�"3�"3�A�"5�6�
7�
�i�'�'�(�
)�	�
�A��L�L��O��L�L��O���A��L�L��O��L�L��O���A����m�V�\�\�1�=����m�V�\�\�1�=���A����m�V�\�\�1�=����m�V�\�\�1�=�rc���URn[RRS5(d[(aSnOSnUHn[
R"US5n O [e[R(a#[R"5RS:d[
R"U5nU"XE5 [
R"US5nU"Xd5 [R(a#[R"5RS:dU"[
R"W5U5 U"[
R"US5U5 UbU"[
R"US5U5 UR[[
RS5 UR[[
RS	5 g![a GM�f=f![a SnN�f=f)
N)�linux�android�freebsd�netbsd�gnukfreebsd)�daytime�qotd�domain)�echorr�tcp��udp�r�r�)rUr{r|�
startswithrr7�
getservbynamer<r�
is_android�android_ver�	api_level�
getservbyportrFr�)r��eq�services�servicer��port2�udpports       r�
testGetServBy� GeneralModuleTests.testGetServBy�s���
�
�
��

�L�L�#�#�H�
J�
J��x�5�H�4�H��G�
��+�+�G�U�;��� ��M��"�"�x�';�';�'=�'G�'G�"�'L��(�(��1�E��t�O�	��*�*�7�E�:�G�
�w���"�"�x�';�';�'=�'G�'G�"�'L��v�#�#�E�*�G�4�
�6����e�,�g�6����v�#�#�G�U�3�W�=����-��)=�)=�r�B����-��)=�)=�u�E��5�
��
���	��G�	�s$�F=�?G�=
G�G�G�Gc���UR[R"5S5 [R"5nURUR5S5 SSS5 [	S5 UR[R"5S5 [R"5nURUR5S5 SSS5 [R
"S5 UR[R"5S5 [R"5nURUR5S5 SSS5 SSS5 UR
[[R
S5 UR
[[R
S5 g!,(df   GNJ=f!,(df   N�=f!,(df   N�=f!,(df   N�=f)N�
r��spam)	rUr7ro�
gettimeoutrsrprF�
ValueErrorr�)r�rGr�s   r�testDefaultTimeout�%GeneralModuleTests.testDefaultTimeout"s7��	
����1�1�3�T�:�
�]�]�_�����Q�\�\�^�T�2��&�b�
)����V�5�5�7��<�����D�� � ����!2�B�7�!�
�$�$�T�*����V�5�5�7��>�����D�� � ����!2�D�9�!�*�	
���*�f�&>�&>��C�	
���)�V�%=�%=�v�F�'�_��!���!���*�
)�sH�!F�/;G�*!F1�AG�#!G�G�
F.�1
F?	�;G�
G	�G�
G!�	inet_atonztest needs socket.inet_aton()c��URS[R"S55 URS[R"S55 g)N��0.0.0.0�����r�)rUr7rr�s r�testIPv4_inet_aton_fourbytes�/GeneralModuleTests.testIPv4_inet_aton_fourbytes;s;��
	
����F�$4�$4�Y�$?�@�����F�$4�$4�5F�$G�Hr�	inet_ptonztest needs socket.inet_pton()c�^^^�SSKJnJmJm UU4SjnU4SjnTR	SU"S55 TR	SU"S55 TR	S	U"S
55 TR	SU"S55 TR	S
U"S55 [
(d	U"US5 U"US5 U"US5 U"US5 U"US5 TR	SU"S55 TR	SU"S55 TR	S	U"S
55 TR	S
U"S55 U"US5 U"US5 U"US5 U"US5 U"US5 g)Nr)rr&r�c�>�T"TU5$rr)�ar�r&s ��rr�5GeneralModuleTests.testIPv4toString.<locals>.<lambda>G����i���+rc�<>�TR[[4X5$r�rFr<r�r�r)r�s  �rrr*I����t�'8�'8�
�j�!�4�(
rr!r"s��z255.0.255.0s����z170.170.170.170��1.2.3.4r#r�z0.0.0.z	300.0.0.0za.0.0.0z	1.2.3.4.5�::1)r7rr&r�rUr)r�r�g�
assertInvalidr�r&s`   @@r�testIPv4toString�#GeneralModuleTests.testIPv4toStringCsI���	>�=�+��
�
�	
���,�a�	�l�;����,�a�
�.>�?����,�a�0A�.B�C����,�a�	�l�;����,�a�0A�.B�C��s��!�X�&��a��%��a��#��a��%��a������,�a�	�l�;����,�a�
�.>�?����,�a�0A�.B�C����,�a�0A�.B�C��a��"��a��%��a��#��a��%��a��rc�^^^^�SSKJmJmJn U(dTR	S5 [RS:Xa
T"TS5 UU4S	jmUU4S
jnTRST"S55 TRST"S55 TRS
T"S55 TRST"S55 TRST"S55 TRST"S55 U"S5 U"S5 U"S5 U"S5 U"S5 U"S5 U"S5 U"S5 [(dU"S5 TRST"S55 TRS T"S!55 TRS"T"S#55 U"S$5 U"S%5 U"S&5 U"S'5 U"S(5 U"S)5 g![
a TR	S5 GN�f=f![a,nURS:XaTR	S5 SnAGN�SnAff=f)*Nr)r&r�rX�IPv6 not available�+could not import needed symbols from socketru�::�&'�IPv6 might not be supportedc�>�T"TU5$rr)r)r�r&s ��rr�5GeneralModuleTests.testIPv6toString.<locals>.<lambda>u����i��!�,rc�>>�TR[[4TU5$rr-�r)rr�s ��rrr>v����$�"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)r7r&r�rXr��ImportErrorr{r|r<�winerrorrUr)r�rXr�r4r�rr&s`   @@@r�testIPv6toString�#GeneralModuleTests.testIPv6toStringds����	I�<�<���
�
�2�3��<�<�7�"�
A��(�D�)�

-��
�
�	
����q��w�/�����q��y�1����3�Q�u�X�>����O�
�4�5�	
�	
���S�
�%�&�	
�	
���;�Q�x�[�I��h���e���g���j�!��m�$��m�$��n�%��)�*��s��,�-����;�
���	
�	
���C�
�%�&�	
�	
���O�
�2�3�	
�	�'�(��n�%��m�$��-�.��m�$��/�0��o�	I��M�M�G�H�	I���
A��:�:��&��M�M�"?�@���
A�s(�"F0�	G�0G�G�
H�!H�H�	inet_ntopztest needs socket.inet_ntop()c�x^^^�SSKJnJmJm UU4SjnU4SjnTR	SU"S55 TR	SU"S55 TR	S	U"S
55 TR	SU"S55 U"US
5 U"US5 U"US5 TR	SU"[S555 TR	SU"S55 TR	SU"S55 TR	S	U"S
55 U"US
5 U"US5 U"US5 TR	SU"[S555 g)Nr)�	inet_ntoarHr�c�>�T"TU5$rr)r)r�rHs ��rr�5GeneralModuleTests.testStringToIPv4.<locals>.<lambda>�r+rc�<>�TR[[4X5$rr-r.s  �rrrL�r/rz1.0.1.0sz
170.85.170.85s�U�Ur�r#r1r0ssrC)r7rJrHr�rU�	bytearray)r�rr3r4r�rHs`   @@r�testStringToIPv4�#GeneralModuleTests.testStringToIPv4�s'���	>�=�+��
�
�	
����A�&9�$:�;�����!�,?�*@�A����*�A�.A�,B�C�����A�&9�$:�;��a��%��a��%��a��&�����!�I�6I�,J�*K�L�����A�&9�$:�;�����!�,?�*@�A����*�A�.A�,B�C��a��%��a��%��a��&�����!�I�6I�,J�*K�Lrc�^^^^^�SSKJmJmJn U(dTR	S5 [RS:Xa
T"TS5 UU4S	jmUU4S
jnTRST"S55 TRST"S
55 TRST"S55 TRST"[S
555 U"S5 U"S5 U"S5 g![
a TR	S5 N�f=f![a+nURS:XaTR	S5 SnAN�SnAff=f)Nr)rHr�rXr8r9rurCr;r<c�>�T"TU5$rr)r)r�rHs ��rr�5GeneralModuleTests.testStringToIPv6.<locals>.<lambda>�r?rc�>>�TR[[4TU5$rr-rAs ��rrrS�rBrr:r2sz!aef:b01:506:1001:ffff:9997:55:170s
�����Upsss)r7rHr�rXr�rDr{r|r<rErUrN)r�rXr�r4r�rrHs`   @@@r�testStringToIPv6�#GeneralModuleTests.testStringToIPv6�s���	I�<�<���
�
�2�3��<�<�7�"�
A��(�L�1�

-��
�
�	
����q���/������"8� 9�:����/�
�Q�R�	
�	
�����)�,B�"C� D�E��l�#��l�#��k�"��3�	I��M�M�G�H�	I���
A��:�:��&��M�M�"?�@���
A�s(�"C�	C7�C4�3C4�7
D,�!D'�'D,c��[R"[R[R5nURUR5 [
R"5H,n[R"5nURSU45  O UR5n[R"[R"55nUR#USSW4SUS-5 UR%USW5 g![a0nUR[R:wdUS:XaeSnAM�SnAff=f![a UR!S5 N�f=f)Nr"�r�rz
%s invalidr
)r7r�rdr�rD�	itertools�countr�find_unused_portr�r<r@�
EADDRINUSEr,r�r�r�r0rU)r�r�r�r�r�r�
my_ip_addrs       r�testSockName�GeneralModuleTests.testSockName�s���}�}�V�^�^�V�-?�-?�@������
�
�#����"�A� �1�1�3�D�
��	�	�9�d�+�,�
�#����!��	1��-�-�f�.@�.@�.B�C�J�	
�
�
�d�1�g�	�:�6��t�A�w�8N�O�����a��$�'��!�
��7�7�e�.�.�.�!�q�&��39��
���	1��M�M�/�0�	1�s*�=D�%)D?�
D<�%D7�7D<�?E�Ec�&�[R"[R[R5nURUR5 UR[R[R5nURUS:gS5 g)Nrzinitial mode is reuse)	r7r�rdr�rD�
getsockoptrZr[�assertFalse�r�r��reuses   r�testGetSockOpt�!GeneralModuleTests.testGetSockOpt�s_���}�}�V�^�^�V�-?�-?�@������
�
�#����� 1� 1�6�3F�3F�G������!��%<�=rc��[R"[R[R5nURUR5 UR[R[RS5 UR[R[R5nURUS:HS5 g)Nr
rzfailed to set reuse mode)
r7r�rdr�rDrvrZr[rarbrcs   r�testSetSockOpt�!GeneralModuleTests.testSetSockOptsy���}�}�V�^�^�V�-?�-?�@������
�
�#�����)�)�6�+>�+>��B����� 1� 1�6�3F�3F�G������!��%?�@rc��[R"[R[R5nURS5 SSS5 UR	[
WRS5 g!,(df   N0=f)Nr
�spam)r7r�rdrBrFr<r\r�s  r�testSendAfterClose�%GeneralModuleTests.testSendAfterClosesL��
�]�]�6�>�>�6�+=�+=�
>�$��O�O�A��?����'�4�9�9�g�6�?�
>�s�A0�0
A>c��[R"5nUR[RS45 [R"UR5S9R	5 UR	5 URS5 g![aDnURUR[R[R45 SnAgSnAff=f)Nr�r1z#close() should raise EBADF/ENOTSOCK)r7r��
_LOCALHOSTr1rDr?r<r0r@�EBADF�ENOTSOCK)r�r�rs   r�testCloseException�%GeneralModuleTests.testCloseExceptions����}�}����	�	�6�$�$�a�(�)��
�
�T�[�[�]�+�1�1�3�	=��J�J�L�

�I�I�;�<��	�	D��M�M�#�)�)�e�k�k�5�>�>�%B�C�C��	D�s�(B
�

C�:C�Cc�@�[R"[R[R5nURUR[R5 [[S5(aLUR
UR[R[R-[R45 O*URUR[R5 URURS5 SSS5 g!,(df   g=f)N�SOCK_CLOEXECr)
r7r�rdrUr8r6r0r�rvr9r�s  r�testNewAttributes�$GeneralModuleTests.testNewAttributes!s����]�]�6�>�>�6�+=�+=�
>�$����T�[�[�&�.�.�9��v�~�.�.��
�
�d�i�i�%�1�1�F�4G�4G�G�%�1�1�3�4�� � ����F�,>�,>�?����T�Z�Z��+�?�
>�
>�s�CD�
Dc�J�[R"5nURUR5 [R"5nUS-nUS-
nUR[UR[U45 UR[UR[U45 [R"5H0n[R"5nUR[U45  g g![a0nUR[R:wdUS:XaeSnAMjSnAff=f)Nr�rX)r7r�rDrr[rFr�r�r+rYrZr<r@r\)r�r�r��big_port�neg_portr�r�s       r�test_getsockaddrarg�&GeneralModuleTests.test_getsockaddrarg.s����}�}�������
�
�#��-�-�/���%�<���%�<�����-����T�8�4D�E����-����T�8�4D�E����"�A� �1�1�3�D�
��	�	�4��,�'�
�#���
��7�7�e�.�.�.�!�q�&��39��
�s�C(�(
D"�2%D�D"c�2�UR[[RS55 UR[[S55 UR[[S55 UR[[S55 UR[[S55 [R"5nURUR5 UR[URSS5 UR[RS5 g)Nr9�
SIO_RCVALL�	RCVALL_ON�
RCVALL_OFF�SIO_KEEPALIVE_VALSr�)r
�dr�)	rr6r7r�rDrFrr9r�r3s  r�test_sock_ioctl�"GeneralModuleTests.test_sock_ioctlBs��������
�
�w�7�8�������5�6�������4�5�������5�6������(<�=�>��M�M�O�������� ����*�a�g�g�r�4�8�	����)�)�=�9r�SIO_LOOPBACK_FAST_PATHz1Loopback fast path support required for this testc�r�[R"5nURUR5 UR[RS5 UR[UR[RS5 g![
a)nSnURU:XaURS5 eSnAff=f)NTi='zQSIO_LOOPBACK_FAST_PATH is defined but doesn't implemented in this Windows version)
r7r�rDr9r�r<rEr�rFr�)r�rGrG�
WSAEOPNOTSUPPs    r�test_sio_loopback_fast_path�.GeneralModuleTests.test_sio_loopback_fast_pathNs���
�M�M�O�������� �	�
�G�G�F�1�1�4�8�	
���)�Q�W�W�f�.K�.K�T�R��
�	�!�M��|�|�}�,��
�
�L�M���	�s� B�
B6�
$B1�1B6c	�n
�[R"SS5 [R"[S5HnUR[U5S5 M  [R"SS5 [R"SS5 [R"SS5 [R(a[R"SS5 [R(a#[R"5RS:d"[S5 [R"[S5 [R"[S5 [R"[S[R [R"5nUH�upE  nURU[R 5 UR[%U5S	UR&-5 UR[)U5[)UR&55 URU[R"5 UR[%U5S
UR&-5 UR[)U5[)UR&55 M� [R"[SS[R"5nUH(upg  nURU[R"5 M* [R"[SSS[R*5 [R"[SSSS[R,5 [R"SS[R.[R"S[R,5 [R"[S5n[R"[SS9n	URX�5 [R"[S[R 5n[R"[S[R S
9n	URX�5 [R"[SS[R"5n[R"[S[R"S9n	URX�5 [R"[SSS[R*5n[R"[S[R*S9n	URX�5 [R"[SSSS[R,5n[R"[S[R,S9n	URX�5 [R"SS[R.[R"S[R,5n[R"SS[R.[R"S[R,S9n	URX�5 UR1[2[RSS5 [5[S5(a+[R"SSSSS[R65 gg![Ra5nUR[R:XaURS5 eSnAff=f![Ra gf=f)N�	localhost�Pzbuggy libc versionrXr.r2r�http�<AddressFamily.AF_INET: %r>�<SocketKind.SOCK_STREAM: %r>r)r�r��r8�r�)r9)�flags)r�r�r8r�r9r�u��AI_NUMERICSERV)r7�getaddrinforHr@�EAI_SERVICEr�r+rU�lenr�IPV6_ENABLEDrr
r|rrr�rdrT�valuer�SOL_TCP�
AI_PASSIVE�	AF_UNSPECrF�UnicodeEncodeErrorr6r�)
r�r�info�infosr8r�r��socktyper)�bs
          r�testGetaddrinfo�"GeneralModuleTests.testGetaddrinfo^s���	����{�B�/��&�&�t�T�2�D����S��Y��*�3�	���;��+����;��+����4��$��%�%����u�b�)��"�"�x�';�';�'=�'G�'G�"�'L����t�V�,����4��$����4��&��"�"�4��V�^�^�V�=O�=O�P��%*�!�F�!�Q�����V�V�^�^�4����T�&�\�+H�6�<�<�+W�X����S��[�#�f�l�l�*;�<����T�6�#5�#5�6����T�$�Z�)G�$�*�*�)T�U����S��Y��D�J�J��8�
&+��"�"�4��q�&�2D�2D�E��$)� �A��A�q����X�v�'9�'9�:�%*�	���4��q�!�V�^�^�<����4��q�!�Q��0A�0A�B�	���4��F�$4�$4�f�6H�6H�!�!�,�,�	.�
���t�T�*�����D�t�4����������t�T�6�>�>�:�����t�T�&�.�.�A����������t�T�1�f�.@�.@�A�����t�T��0B�0B�C����������t�T�1�a����@�����t�T����@����������t�T�1�a��F�4E�4E�F�����t�T��1B�1B�C����������t�Q��(8�(8�&�:L�:L�a�%�0�0�
2�����D�q��9I�9I�$*�$6�$6�a�%+�%6�%6�
8��	
��������,�f�.@�.@�+�x�X��6�+�,�,�
��"�"�;��a��A�#)�#8�#8�:�	-��G���	��y�y�F�.�.�.��
�
�2�3���		��R�?�?�
��
�s)�Y�&)Z�Z�%0Z�Z�Z4�3Z4c��SSKJnJnJn [R
"SUS-[RS9 [R
"SUS-[RS9 [R
"SUS-
S-[RS9 [R
"SUS-
[RS9 [R
"SS[RS9 [R
"SS[RS9 g![a URS5 N�[Ra N�f=f![a URS5 N�[Ra GNf=f![a URS5 N�[Ra GNf=f![a URS5 GN[Ra GN!f=f)Nr)�	ULONG_MAX�LONG_MAX�LONG_MINr
r�z,Either no error or socket.gaierror expected.r�)
r�r�r�r�r7r�rdr�r?rH)r�r�r�r�s    r�"test_getaddrinfo_int_port_overflow�5GeneralModuleTests.test_getaddrinfo_int_port_overflow�s}��	<�;�	����t�Y��]��9K�9K�L�	����t�X��\��8J�8J�K�	����t�X��%6��%:��AS�AS�T�	����t�X��\��8J�8J�K�	���4���);�);�<����4��f�.@�.@�A��=�	F�
�I�I�D�E����	��	��
�	F��I�I�D�E����	��	��
�	F��I�I�D�E����	��	��
�	F��I�I�D�E����	��	�s^�'C7�'D-�*E$�'F�7D*�D*�)D*�-E!�
E!� E!�$F�F�F�G�9G�Gc�P�UR[[RSS5 g)N)zmail.python.orgrr)rFr<r7r�r�s r�test_getnameinfo�#GeneralModuleTests.test_getnameinfo�s�����'�6�#5�#5�7L�a�Pr�networkznetwork is not enabledc�V�[R"S5 [R"S5 SSS5 Sn[R"U5 [R"U5 [R
"US[R[R5 g!,(df   Nr=f)Nz
python.orgu!испытание.pythontest.netr)r�transient_internetr7r��gethostbyname_exr�r�rd)r�rs  r�	test_idna�GeneralModuleTests.test_idna�sq��
�
-�
-�l�
;�� � ��.�<�5�����V�$�����'����6�!�F�$4�$4�V�5G�5G�H�<�
;�s�B�
B(c�j^�[[S5(a[[S5(dTRS5 U4SjnU4Sjn[R"5upE[R"[R
U5nU(aUR
S5 TR[5 [R"S5 URS[R-5 SSS5 U(am[R"[R
U5 [R"S5 TR[URS[R-5 [R"S	5 [R"[R
U5 UR5 UR5 g!,(df   N�=f![R"S	5 [R"[R
U5 UR5 UR5 f=f)
N�alarmrxz9signal.alarm and socket.socketpair required for this testc�P>�TR[[RS5 gr*�rFr�math�acosh�r$r�s �r�
ok_handler�@GeneralModuleTests.check_sendall_interrupted.<locals>.ok_handler�s������j�$�*�*�a�8rc�Z>�TR[[RS5 SS- g�Nrr
r�r�s �r�raising_handler�EGeneralModuleTests.check_sendall_interrupted.<locals>.raising_handler�s ������j�$�*�*�a�8�
��Frg�?r
�xr)r6�signalr7r�rx�SIGALRMrBrF�ZeroDivisionErrorr��sendallr�
SOCK_MAX_SIZE�TimeoutErrorrD)r��with_timeoutr�r��crG�	old_alarms`      r�check_sendall_interrupted�,GeneralModuleTests.check_sendall_interrupted�sV����v�w�'�'�w�v�|�/L�/L��M�M�U�V�	9�	�� � �"����M�M�&�.�.�/�B�	�	�����S�!��"�"�#4�5����Q���	�	�$��!6�!6�6�7�6���
�
�f�n�n�j�9����Q���!�!�,��	�	�"&��)>�)>�">�@�
�L�L��O��M�M�&�.�.�)�4�
�G�G�I�
�G�G�I�6�5��
�L�L��O��M�M�&�.�.�)�4�
�G�G�I�
�G�G�I�s&�-G�39G�,A<G�
G�G�AH2c�&�URS5 g�NF�r�r�s r�test_sendall_interrupted�+GeneralModuleTests.test_sendall_interrupteds���&�&�u�-rc�&�URS5 g)NTr�r�s r�%test_sendall_interrupted_with_timeout�8GeneralModuleTests.test_sendall_interrupted_with_timeouts���&�&�t�,rc���[R"[R[R5n[U5nUR	[
5nSn[R"5 SSS5 URU[WRRS55 [R"[R[R5nURS5n[U5nSn[R"5 UR	[
5 Sn[R"5 SSS5 g!,(df   N�=f!,(df   g=f)Nrr3)
r7r�rdrT�assertWarns�ResourceWarningrr>r0r�warningr$�makefile)r�r�r=rTrs     r�test_dealloc_warn�$GeneralModuleTests.test_dealloc_warns����}�}�V�^�^�V�-?�-?�@����J��
�
�
�o�
.�"��D���� �/�	
�
�
�a��R�Z�Z�_�_�Q�/�0�1��}�}�V�^�^�V�-?�-?�@���M�M�$�����J��������
�
�
�o�
.��A���� �/�
.�/�
.��/�
.�s�E�!E�
E�
E!c��[R"[R[R5nURS5nUR	5 UR[
U5S5 SSS5 g!,(df   g=f)Nr3z<_io.BufferedReader name=-1>)r7r�rdr�rDrUrT�r�r��fps   r�test_name_closed_socketio�,GeneralModuleTests.test_name_closed_socketio)sT��
�]�]�6�>�>�6�+=�+=�
>�$����t�$�B��H�H�J����T�"�X�'E�F�?�
>�
>�s�=A:�:
Bc��[R"5nURSSS9nURUR55 UR	UR55 UR	UR
55 UR5 UR[UR5 UR[UR
5 UR[UR5 SSS5 g!,(df   g=f)Nr3r)�	buffering)
r7r�r�readablerb�writable�seekablerDrFrr�s   r�test_unusable_closed_socketio�0GeneralModuleTests.test_unusable_closed_socketio/s���
�]�]�_�����t�q��1�B��O�O�B�K�K�M�*����R�[�[�]�+����R�[�[�]�+��H�H�J����j�"�+�+�6����j�"�+�+�6����j�"�+�+�6��_�_�s�CC=�=
Dc�@�[R"5nUR[S45 [R"UR	55 UR[5 URS5 SSS5 UR[5 UR5 SSS5 UR[5 [R"S5 SSS5 UR[5 [R"S5 SSS5 g!,(df   N�=f!,(df   N�=f!UR[5 UR5 SSS5 f!,(df   f=f=f!,(df   N�=f!,(df   g=f)Nrr
r�)	r7r�r+rDr1rFr<r�r�r�s  r�test_socket_close�$GeneralModuleTests.test_socket_close:s����}�}���	��I�I�t�Q�i� ��L�L�����'��"�"�7�+����A��,��"�"�7�+��
�
��,��
�
�y�
)��L�L���*�
�
�
�w�
'��L�L���(�
'�,�+��,�+���"�"�7�+��
�
��,�+�+��*�
)��
'�
'�s`�AD:�'D�9D:�D)�E>�8F�
D&�"D:�)
D7�:E;�E*�!	E;�*
E8�4E;�>
F�
Fc	�f�SHwnURUS9 [R"5nSU;aSOSnURXS9nURURU5 SSS5 SSS5 SSS5 My g!,(df   N#=f!,(df   N,=f!,(df   M�=f)N)r=r3�rw�w�wb��moder�r��encoding)�subTestr7r�rUr�)r�r�r�r�r�s     r�test_makefile_mode�%GeneralModuleTests.test_makefile_modeJs���.�D����4��(��]�]�_��'*�d�{�t��H����t��?�2��(�(����$�7�@�%�)�(�/�@�?��%�_��)�(�s:�B!�B�A?	�"B�*B!�?
B

�	B�
B�B!�!
B0	c	�J�SHinURUS9 [R"5nUR[S5 UR	U5 SSS5 SSS5 SSS5 Mk g!,(df   N#=f!,(df   N,=f!,(df   M�=f)N)�rtr��+r)r�zinvalid mode)r�r7r"rr�)r�r�r�s   r�test_makefile_invalid_mode�-GeneralModuleTests.test_makefile_invalid_modeRso��'�D����4��(��]�]�_���/�/�
�N�K��
�
�d�+�L�%�)�(�(�L�K��%�_��)�(�s:�B�B�A1	�B�B�1
A?
�;B�
B�B�
B"	c��[R"5nU [[RS-5H(nUR	[
[RX5 M* SSS5 [[RS-5H�n[R"[R"[RU55nURU[R5 [R"[R"[RU55nURU[R5 M� g!,(df   N�=fr�)r7�range�pickle�HIGHEST_PROTOCOLrFr��dumps�loadsr�rUrd)r�r��protocolr8r�s     r�test_pickle�GeneralModuleTests.test_pickleYs����}�}���
�!�&�"9�"9�A�"=�>���!�!�)�V�\�\�4�J�?���f�5�5��9�:�H��\�\�&�,�,�v�~�~�x�"H�I�F����V�V�^�^�4��<�<����V�-?�-?�� J�K�D����T�6�#5�#5�6�	;��T�s�A	D?�?
E
c���SHgn[R"[R[R5nUR[S45 URU5 SSS5 Mi [R"[R[R5nUR[S45 UR5 SSS5 g!,(df   M�=f!,(df   g=f)N)rr�r)r7r�rdr�r+r�)r��backlog�srvs   r�test_listen_backlog�&GeneralModuleTests.test_listen_backlogds����G����v�~�~�v�/A�/A�B�c����$���#��
�
�7�#�C�B��
�]�]�6�>�>�6�+=�+=�
>�#��H�H�d�A�Y���J�J�L�?�
>�	C�B��?�
>�s�)C�!(C$�
C!	�$
C2c�0�SSKn[R"[R[R5nUR	[
S45 UR
[URURS-5 SSS5 g!,(df   g=fr�)
r�r7r�rdr�r+rFr�r�r�)r�r�rs   r�test_listen_backlog_overflow�/GeneralModuleTests.test_listen_backlog_overflowns^��	�
�]�]�6�>�>�6�+=�+=�
>�#��H�H�d�A�Y�����m�S�Z�Z��9J�9J�Q�9N�O�?�
>�
>�s�AB�
B�IPv6 required for this test.c�p�UR[[R[R
SS4S5 [R"[R[R5nUR[UR[R
SS45 SSS5 g!,(df   g=f)Nrr�i����)	rFr�r7r�rr�r�rdr�r3s  r�
test_flowinfo� GeneralModuleTests.test_flowinfowsw�����-��);�);�(�/�/��J�?��	D�
�]�]�6�?�?�F�,>�,>�
?�1����m�Q�V�V�m�6J�6J�A�s�5S�T�@�
?�
?�s�+3B'�'
B5c��[R"SS[R[R[R5uGtpURUS5 g)N�ff02::1de:c0:face:8Dr)�ff02::1de:c0:face:8drrr)r7r�r�rKr`rU)r�r��sockaddrs   r�test_getaddrinfo_ipv6_basic�.GeneralModuleTests.test_getaddrinfo_ipv6_basic~sH��"�.�.�"��&�/�/�������	
���1�	
����#G�Hrc���UR[R"5[R"S55 UR[R"5[R"S55 g)Nr"r:)rUr7r�r�s r�test_getfqdn_filter_localhost�0GeneralModuleTests.test_getfqdn_filter_localhost�sB��������)�6�>�>�)�+D�E�������)�6�>�>�$�+?�@rruzdoes not work on WindowszSymbolic scope id does not workz test needs socket.if_nameindex()c��[R"5Sup[R"SU-S[R[R[R
5uGtp4UR
USSSU45 g)Nr�ff02::1de:c0:face:8D%rr)r7r�r�r�rKr`rU)r��ifindex�test_interfacer�rs     r�&test_getaddrinfo_ipv6_scopeid_symbolic�9GeneralModuleTests.test_getaddrinfo_ipv6_scopeid_symbolic�sn��%+�$7�$7�$9�!�$<�!��"�.�.�#�n�4��&�/�/�������	
���1�	
����$:�D�!�W�#M�Nrz.Numeric scope id does not work or undocumentedc���Sn[R"S[U5-S[R[R[R
5uGtp#UR
USSSU45 g)N�*rrrr)r7r�rr�rKr`rU)r�rr�rs    r�%test_getaddrinfo_ipv6_scopeid_numeric�8GeneralModuleTests.test_getaddrinfo_ipv6_scopeid_numeric�sa����"�.�.�#�c�'�l�2��&�/�/�������	
���1�	
����$:�D�!�W�#M�Nrc���[R"5SupSSSU4n[R"U[R[R-5nURUSU-S45 g)Nrrr�ff02::1de:c0:face:8d%�1234)r7r�r��NI_NUMERICHOST�NI_NUMERICSERVrU)r�rrr�nameinfos     r�&test_getnameinfo_ipv6_scopeid_symbolic�9GeneralModuleTests.test_getnameinfo_ipv6_scopeid_symbolic�sf��%+�$7�$7�$9�!�$<�!��*�D�!�W�=���%�%�h��0E�0E��H]�H]�0]�^������$;�n�$L�f�#U�Vrc��SnSSSU4n[R"U[R[R-5nUR	US[U5-S45 g)Nrrrrr#r$)r7r�r%r&rUr)r�rrr's    r�%test_getnameinfo_ipv6_scopeid_numeric�8GeneralModuleTests.test_getnameinfo_ipv6_scopeid_numeric�sY����*�D�!�W�=���%�%�h��0E�0E��H]�H]�0]�^������$;�c�'�l�$J�F�#S�Trc��[R"[R[R5nUR[	UR
5SUR
R-5 UR[	UR5SURR-5 UR[UR
5[UR
R55 UR[UR5[URR55 SSS5 g!,(df   g=f)Nr�r�)	r7r�rdrUrTr8r�r�rr3s  r�test_str_for_enums�%GeneralModuleTests.test_str_for_enums�s����]�]�6�>�>�6�+=�+=�
>�!����T�!�(�(�^�-J�Q�X�X�^�^�-[�\����T�!�&�&�\�+I�A�F�F�L�L�+X�Y����S����]�C������,?�@����S����[�#�a�f�f�l�l�*;�<�	?�
>�
>�s�C=D:�:
Ec��[[SS5n[[SS5n[RU-U-n[R"[RU5nUR	UR
[R5 UR
S5 UR	UR
[R5 UR
S5 UR	UR
[R5 URS5 UR	UR
[R5 URS5 UR	UR
[R5 SSS5 g!,(df   g=f)N�
SOCK_NONBLOCKrrvr
TF)r�r7rdr�rUr�rB�setblocking)r�r1rv�	sock_typerGs     r� test_socket_consistent_sock_type�3GeneralModuleTests.test_socket_consistent_sock_type�s������;�
��v�~�q�9���&�&��6��E�	�
�]�]�6�>�>�9�
5�����Q�V�V�V�%7�%7�8�
�L�L��O����Q�V�V�V�%7�%7�8�
�L�L��O����Q�V�V�V�%7�%7�8�
�M�M�$�����Q�V�V�V�%7�%7�8�
�M�M�%� ����Q�V�V�V�%7�%7�8�6�
5�
5�s
�DE>�>
Fc�t�[R"[R[R5nUR5n[	[R
RR55S-n[	S[RRR555S-n[R"X4SUS9nURURU5 URURU5 URURSS15 SSS5 g!,(df   g=f)Nr
c3�:# �UHupUS;dM
Uv� M g7f)>rvr1Nr)rr�kinds   rr�EGeneralModuleTests.test_unknown_socket_family_repr.<locals>.<genexpr>�s$���
�C�
���<�<�
�D�C�s��	r)r8r�r9r1r)r7r�rd�detach�max�
AddressFamily�__members__�values�
SocketKindr�rUr8r�r0r9)r�r��fd�unknown_family�unknown_typerGs      r�test_unknown_socket_family_repr�2GeneralModuleTests.test_unknown_socket_family_repr�s����}�}�V�^�^�V�-?�-?�@��
�[�[�]���V�1�1�=�=�D�D�F�G�!�K���
�$�/�/�;�;�A�A�C�
�
�
�	���]�]�%��������Q�X�X�~�6����Q�V�V�\�2��M�M�!�'�'�A�r�7�+�
���s
�	AD)�)
D7�sendfileztest needs os.sendfile()c���"SS5n[R"5n[R"[R[R5n[R
"U5 UR
[R5 URU"U55 SSS5 UR
[5 URU"SS-55 SSS5 UR
[5 URU"S55 SSS5 SSS5 g!,(df   N�=f!,(df   N]=f!,(df   N9=f!,(df   g=f)Nc� �\rSrSrSrSrSrg)�<GeneralModuleTests.test__sendfile_use_sendfile.<locals>.Filei�c��Xlgr�r@)r�r@s  rr��EGeneralModuleTests.test__sendfile_use_sendfile.<locals>.File.__init__�s���rc��UR$rrJr�s rr1�CGeneralModuleTests.test__sendfile_use_sendfile.<locals>.File.fileno�s���w�w�rrJN)r�r�r�r�r�r1r�rrr�FilerH�s��
�
rrNr4r�)r7�osr8�curdir�O_RDONLYrDrF�_GiveupOnSendfile�_sendfile_use_sendfiler�r�)r�rNr�r@s    r�test__sendfile_use_sendfile�.GeneralModuleTests.test__sendfile_use_sendfile�s���	�	��]�]�_��������B�K�K�0�B��H�H�R�L��"�"�6�#;�#;�<��+�+�D��H�5�=��"�"�=�1��+�+�D��D��M�:�2��"�"�9�-��+�+�D��J�7�.��_�=�<��1�1��-�-���_�sT�A)E�	D�!E�>D0�E�6E�E�
D-	�)E�0
D>	�:E�
E	�E�
E c���URURU5 URURU5 UR5n[R"US9nURUR5 UR5 URURU5 URURU5 URUR5U5 g�Nro)rUr8r�r1r7r�rDr:)r�rGr8�styper@�s2s      r�_test_socket_fileno�&GeneralModuleTests._test_socket_filenos���������6�*��������'�
�X�X�Z��
�]�]�"�
%��������!�	���
�������F�+�������%�(��������b�)rc���[R"[R[R5nURUR5 UR[RS45 URU[R[R5 [[S5(a�[R"[R[R5nURUR5 UR[RS45 URU[R[R5 [R(a�[R"[R[R5nURUR5 UR[RSSS45 URU[R[R5 [[S5(a�[R"5nUR[R U5 [R"[R"[R5nU URU5 URU[R"[R5 SSS5 gg![$a Nf=f!,(df   g=f)NrrKr�)r7r�rdr�rDr�rr+rZr6rKr�r�r�r�rr�r�rS)r�rG�	unix_names   r�test_socket_fileno�%GeneralModuleTests.test_socket_filenos����M�M�&�.�.�&�*<�*<�=�������� �	���
�"�"�A�&�'�� � ��F�N�N�F�4F�4F�G��6�<�(�(��
�
�f�n�n�f�.?�.?�@�A��O�O�A�G�G�$�
�F�F�M�&�&��*�+��$�$�Q�����8I�8I�J��%�%��
�
�f�o�o�v�/A�/A�B�A��O�O�A�G�G�$�
�F�F�M�(�(�!�Q��2�3��$�$�Q�����9K�9K�L��6�9�%�%�%�=�=�?�I��O�O�I�,�,�i�8��
�
�f�n�n�f�.@�.@�A�A��A��F�F�9�%��,�,�Q����-3�-?�-?�A�
��&��'�������s0�K"�K�/K"�
K�K"�K�K"�"
K0c���UR[5 [R"[R[RSS9 SSS5 g!,(df   g=f)Ng@E@ro�rFr�r7r�rdr�s r� test_socket_fileno_rejects_float�3GeneralModuleTests.test_socket_fileno_rejects_float4s6��
�
�
�y�
)��M�M�&�.�.�&�*<�*<�T�J�*�
)�
)���3A�
A c���UR[5 [R"[R[RSS9 SSS5 g!,(df   g=f)Nr#rorar�s r�&test_socket_fileno_rejects_other_types�9GeneralModuleTests.test_socket_fileno_rejects_other_types8s6��
�
�
�y�
)��M�M�&�.�.�&�*<�*<�U�K�*�
)�
)�rdc���UR[S5 [R"[R[RSS9 SSS5 g!,(df   g=f)N�negative file descriptorr�ro�r"rr7r�rdr�s r�)test_socket_fileno_rejects_invalid_socket�<GeneralModuleTests.test_socket_fileno_rejects_invalid_socket<s:��
�
#�
#�J�0J�
K��M�M�&�.�.�&�*<�*<�R�H�L�
K�
K���3A�
A!zWindows disallows -1 onlyc���UR[S5 [R"[R[RSS9 SSS5 g!,(df   g=f)Nrii���rorjr�s r�#test_socket_fileno_rejects_negative�6GeneralModuleTests.test_socket_fileno_rejects_negative@s:��
�
#�
#�J�0J�
K��M�M�&�.�.�&�*<�*<�S�I�L�
K�
K�rmc�t�SnUR[5n[R"[R"5S9 SSS5 URWRR[RU45 UR[5n[R"[R[R[R"5S9 SSS5 URURR[RU45 g!,(df   N�=f!,(df   NV=f)Ni6'ro)rFr<r7r�make_bad_fdr0rRr@rqr�rd)r��WSAENOTSOCKrTs   r�$test_socket_fileno_requires_valid_fd�7GeneralModuleTests.test_socket_fileno_requires_valid_fdEs�����
�
�
�w�
'�2��M�M��!6�!6�!8�9�(��
�
�b�l�l�(�(�5�;�;��*D�E�
�
�
�w�
'�2��M�M�����"�"� �,�,�.�
0�(�
	
�
�
�b�l�l�(�(�5�;�;��*D�E�(�
'��(�
'�s�(D�AD)�
D&�)
D7c�J�[R"5nUR[5 [R"UR5S9 SSS5 UR[5n[R"[R[RUR5S9 SSS5 URWRR[R5 SSS5 g!,(df   N�=f!,(df   N\=f!,(df   g=frW)�tempfile�NamedTemporaryFilerFr<r7r1r�rdrUrRr@rr)r��afilerTs   r�%test_socket_fileno_requires_socket_fd�8GeneralModuleTests.test_socket_fileno_requires_socket_fdRs���
�
(�
(�
*�e��"�"�7�+��
�
�U�\�\�^�4�,��"�"�7�+�r��
�
��N�N��&�&� �<�<�>�+�,�

���R�\�\�/�/����@�+�
*�+�+��,�+��	+�
*�s;�D�#C2�D�,AD�-<D�2
D	�<D�
D	�
D�
D"c��SSKnSSKnURURSSSUS9nUR	U[
R5 g)Nrr<r7c�R�UR5=(a URS5$)N�AF_��isupperr��Cs rr�<GeneralModuleTests.test_addressfamily_enum.<locals>.<lambda>b���!�)�)�+�=�!�,�,�u�*=�=r��source)r!�enum�
_old_convert_�IntEnum�_test_simple_enumr7r<)r�r!r��CheckedAddressFamilys    r�test_addressfamily_enum�*GeneralModuleTests.test_addressfamily_enum^sE���#�1�1����o�x�=�� 2� ��
	
���3�V�5I�5I�Jrc��SSKnSSKnURURSSSUS9nUR	U[
R5 g)Nrr?r7c�R�UR5=(a URS5$)N�SOCK_rr�s rr�9GeneralModuleTests.test_socketkind_enum.<locals>.<lambda>ks��!�)�)�+�?�!�,�,�w�*?�?rr�)r!r�r�r�r�r7r?)r�r!r��CheckedSocketKinds    r�test_socketkind_enum�'GeneralModuleTests.test_socketkind_enumgsE��� �.�.����l�H�?��/���
	
���0�&�2C�2C�Drc��SSKnSSKnURURSSSUS9nUR	U[
R5 g)Nr�MsgFlagr7c�R�UR5=(a URS5$)N�MSG_rr�s rr�6GeneralModuleTests.test_msgflag_enum.<locals>.<lambda>ts��!�)�)�+�>�!�,�,�v�*>�>rr�)r!r�r��IntFlagr�r7r�)r�r!r��CheckedMsgFlags    r�test_msgflag_enum�$GeneralModuleTests.test_msgflag_enumpsA����+�+����i��>��,���
	
���~�v�~�~�>rc��SSKnSSKnURURSSSUS9nUR	U[
R5 g)Nr�AddressInfor7c�R�UR5=(a URS5$)N�AI_rr�s rr�:GeneralModuleTests.test_addressinfo_enum.<locals>.<lambda>}r�rr�)r!r�r�r�r�r7r�)r�r!r��CheckedAddressInfos    r�test_addressinfo_enum�(GeneralModuleTests.test_addressinfo_enumysE���!�/�/����m�X�=��0� ��	
���1�6�3E�3E�Fr�sendmsgzsendmsg not supportedc�r^�"U4SjS5n[RU"5S4[R[RS4/m[R"5up#UR	UR
5 UR	UR
5 UR
[URS/T5 g)Nc�">�\rSrSrU4SjrSrg)�IGeneralModuleTests.test_sendmsg_reentrant_ancillary_mutation.<locals>.Muti�c�D>�TR5 [R$r)�clearr7�
SCM_RIGHTS)r��seqs �r�	__index__�SGeneralModuleTests.test_sendmsg_reentrant_ancillary_mutation.<locals>.Mut.__index__�s����	�	���(�(�(rrN)r�r�r�r�r�r�)r�s�r�Mutr��s
���
)�
)rr�sxxxxr�)	r7rZr�rxr�rDrFr<r�)r�r��left�rightr�s    @r�)test_sendmsg_reentrant_ancillary_mutation�<GeneralModuleTests.test_sendmsg_reentrant_ancillary_mutation�s����	)�	)��
�
���w�/�
�
�
�� 1� 1�7�;�
��
�'�'�)�������
�
�#�������$����'�4�<�<�$���=rr)fr�r�r�r�r"�
skipUnlessr!r$r)r4r;rBrJrUr\rbrOrrn�skipIfr�is_wasiryr{r|rr�r�r�r�r�r6r7r�r�r�r�r�r�r��cpython_onlyr�r�rrr$r5rFrOrUr^rerhrlrsrwr|r�r�r�r�r��is_resource_enabledr�r�r�r�r�r�r�r�r�r�rrr	r
rrrrr r(r+r.r4rCrTrZr^rbrfrkrortrzr�r�r�r�r�r�rrrrr�sn��
�����,�.C�D�#�E�#�
�+������,�.C�D�
,�E�
,�3�"�(6�T� �������D��*<�=��>���_�_�W�_�_�&E�F�
>�G�
>��������1�3H�I�
����3�3�5R�S��T�J��:v�&?�+�"������7�9Z�[�
������7�9Z�[�&�\�\�&�$������8�?�A�*�A�*������)9�:�A�C�5�C�5�(�����)9�:�A�C�?�C�?������m�4�7�9�B�9�B��:�
���
�_�_�Y�$�&�(<�=�>�>��>�.-F�^G�2������5�8�:�I�:�I�������5�8�:� �:� �>������5�8�:�<1�:�<1�|������5�8�:�M�:�M�0������5�8�:�#�:�#�D(�:>�A�7�
=�,��(������D��*<�=�	:�>�	:�������D��*<�=�
�����)A�B�L�N�S�N�>�S�M�^�_�_�Y�$�&�(<�=�.B�>�.B�`Q�����4�4�Y�?�1�3�
I�3�
I��>.�-�!�"G�	7�� 8�,�	7��
���
�_�_�Y�$�&�(<�=�P�>��P�����3�3�5S�T�U�U�U�����3�3�5S�T�I�U�I�A�����3�3�5S�T�
�_�_�S�\�\�W�,�.H�I�
�_�_�S�;�<�
������8�:\�]�
O�^�=�J�U�
O�����3�3�5S�T�
��������8�:�O�:�U�O�����3�3�5S�T�
�_�_�S�\�\�W�,�.H�I�
�_�_�S�;�<�
������8�:\�]�W�^�=�J�U�W�����3�3�5S�T�
���#�,�,�'�1�8�:�U�:�U�U�=�9� ,�2�����Z�0�2L�M�8�N�8�"*�A�@K�L�I��_�_�R�W�W��_�&A�B�J�C�J�F�
A�K�E�?�G��������	�:�;R�S�>�T�>rrz!SocketCan required for this test.c�,�\rSrSrSr\R"\"\S5S5S5r	Sr
\R"\"\S5S5S5rSrS	r
\R"\"\S
5S5S5r\R"\"\S
5S5S5rSrg)�BasicCANTesti�c�d�[R [R [R gr)r7�AF_CANrArCr�s rr\�!BasicCANTest.testCrucialConstants�s���
�
��
�
���r�CAN_BCM�&socket.CAN_BCM required for this test.c��[R [R [R [R [R
 [R [R [R [R [R [R [R [R [R [R [R  [R" [R$ [R& [R( [R* [R, [R. [R0 gr)r7r��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_FRAMEr�s r�testBCMConstants�BasicCANTest.testBCMConstants�s���	���	���� � ����������� � ����� � ��!�!�� � ��!�!��!�!�	����!�!��"�"��"�"��#�#��#�#��#�#��&�&��)�)��)�)��#�#rc��[R"[R[R[R5nSSS5 g!,(df   g=fr�r7rArBrCr3s  r�testCreateSocket�BasicCANTest.testCreateSocket��0��
�]�]�6�=�=�&�/�/�6�>�>�
J�a��K�
J�
J���A�
Ac��[R"[R[R[R5nSSS5 g!,(df   g=fr)r7rArKr�r3s  r�testCreateBCMSocket� BasicCANTest.testCreateBCMSocket�s5���]�]�6�=�=�&�*;�*;�V�^�^�
L�PQ��M�
L�
L�r�c�"�[R"[R[R[R5nSnUR	U5 URUR
5U5 SSS5 g!,(df   g=f)N)rM)r7rArBrCr�rUr,)r�rG�addresss   r�testBindAny�BasicCANTest.testBindAny�sS��
�]�]�6�=�=�&�/�/�6�>�>�
J�a��G�
�F�F�7�O����Q�]�]�_�g�6�K�
J�
J�s�4B�
Bc��[R"[R[R[R5nUR	[
SURS5 SSS5 g!,(df   g=f)N�interface name too long)�xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx)r7rArBrCr"r<r�r3s  r�testTooLongInterfaceName�%BasicCANTest.testTooLongInterfaceName�sI��
�]�]�6�=�=�&�/�/�6�>�>�
J�a��"�"�7�,E�#$�6�6�=�
:�K�
J�
J�s�#A/�/
A=�CAN_RAW_LOOPBACKz/socket.CAN_RAW_LOOPBACK required for this test.c	��[R"[R[R[R5nSHpnUR	[R
[RU5 URUUR[R
[R55 Mr SSS5 g!,(df   g=f)N)rr
)	r7rArBrCrv�SOL_CAN_RAWr�rUra)r�rG�loopbacks   r�testLoopback�BasicCANTest.testLoopback�s����]�]�6�=�=�&�/�/�6�>�>�
J�a�"�����V�/�/��1H�1H�%�'�� � ���L�L��!3�!3�V�5L�5L�M�O�#�K�
J�
J�s
�A7C�
C�CAN_RAW_FILTERz-socket.CAN_RAW_FILTER required for this test.c	�>�Sup[R"SX5n[R"[R[R[R
5nUR
[R[RU5 URUUR[R[RS55 UR
[R[R[U55 SSS5 g!,(df   g=f)N)riz=IIr�)r:�packr7rArBrCrvr�r�rUrarN)r��can_id�can_mask�
can_filterrGs     r�
testFilter�BasicCANTest.testFilter�s���(����[�[���9�
�
�]�]�6�=�=�&�/�/�6�>�>�
J�a�
�L�L��+�+�V�-B�-B�J�O����Z��L�L��!3�!3�V�5J�5J�A�N�
P�
�L�L��+�+�V�-B�-B�I�j�DY�Z�	K�
J�
J�s
�B'D�
DrN)r�r�r�r�r\r"r�r6r7r�r�r�r�r�r�r�r�rrrr�r��s����
������3�A�C�$�C�$�<�������3�A�C��C��7�:������);�<�J�L�O�L�O������)9�:�H�J�[�J�[rr�c���\rSrSrSSjr\S5r\S5rSrSr	Sr
SrS	rS
r
\R"\"\S5S5S
5r\R"\"\S5S5S5rSrg)�CANTesti�c�*�[RXS9 gr�)rr�r�s  rr��CANTest.__init__�rerc��[U5nURSS5n[R"URXU5$)Nr��)r��ljustr:r�r�)�clsr��data�can_dlcs    r�build_can_frame�CANTest.build_can_frame�s6���d�)���z�z�!�W�%���{�{�3�,�,�f�t�D�Drc�X�[R"URU5up#nX#USU4$r)r:r;r�)r�framer�rrs     r�dissect_can_frame�CANTest.dissect_can_frame�s0��!'�
�
�c�.?�.?�� G������h�w��0�0rc���URRUR5upURURU5 URUSUR
5 gr*)rGrtr�rU�cfr��r�rris   r�
testSendFrame�CANTest.testSendFrame�sF���6�6�?�?�4�<�<�0���������"�%�����a��$�.�.�1rc�|�URSS5UlURRUR5 g)Nrs�rrrr\r�s r�_testSendFrame�CANTest._testSendFrame	s+���&�&�t�-D�E������
�
�d�g�g�rc��URRUR5upURURU5 gr)rGrtr�rUrr
s   r�testSendMaxFrame�CANTest.testSendMaxFrame	s.���6�6�?�?�4�<�<�0���������"�%rc�|�URSS5UlURRUR5 g)Nrsrr�s r�_testSendMaxFrame�CANTest._testSendMaxFrame	s*���&�&�t�[�9������
�
�d�g�g�rc��URRUR5upURURU5 URRUR5upURUR
U5 gr)rGrtr�rU�cf1�cf2r
s   r�testSendMultiFrames�CANTest.testSendMultiFrames	sZ���6�6�?�?�4�<�<�0���������2�&��6�6�?�?�4�<�<�0���������2�&rc���URSS5UlURRUR5 URSS5UlURRUR5 g)N�sD3"�s�"3)rrrr\rr�s r�_testSendMultiFrames�CANTest._testSendMultiFrames	sS���'�'��.A�B������
�
�d�h�h���'�'��o�>������
�
�d�h�h�rr�r�c�"�URRUR5upURURU5 URU5up4nURURU5 URURU5 gr)rrtr�rUrr	r�r)r�rrir�rrs      r�_testBCM�CANTest._testBCM	so���8�8�$�$�T�\�\�2���������"�%� $� 6� 6�r� :����������f�-�������D�)rc��[R"[R[R[R5nUR	UR
5 UR
UR45 SUl[/SQ5Ul
URURUR5Ul[RnSnSnS=n=n=pxSn	Sn
[R"UR UUUUUUUU	U
5
nX�R-nUR#U5n
UR%U
['U55 g)N�#)����ri"r
)r7rArKr�r�rDrMr�r��bytesrrrr�r:r�r�r\rUr�)r��bcm�opcoder�rZ�
ival1_seconds�
ival1_usec�
ival2_seconds�
ival2_usec�
bcm_can_id�nframes�header�header_plus_frame�
bytes_sents              r�testBCM�CANTest.testBCM#	s
���m�m�F�M�M�6�+<�+<�f�n�n�M������	�	�"����T�^�^�%�&�����,�-��	��&�&�t�{�{�D�I�I�>����'�'������BC�C�
�C�
�C�]��
������T�1�1����!��!����
��#�W�W�,���X�X�/�0�
�����S�):�%;�<r)r�rrrrNr	)r�r�r�r�r��classmethodrr	rrrrrr"r"r�r6r7r%r8r�rrrr�r��s���D��E��E��1��1�
2�
�&��'� �������3�A�C�*�C�*�������3�A�C�=�C�=rr�z!CAN ISOTP required for this test.c�^�\rSrSrU4SjrSrSr\R"\	"\
S5S5S5rSrS	r
S
rU=r$)�	ISOTPTestiC	c�4>�[TU]"U0UD6 SUlg�Nr��r�r�r�r�s   �rr��ISOTPTest.__init__F	����
���$�)�&�)� ��rc��[R [R [R [R gr)r7r�rArLrKr�s rr\�ISOTPTest.testCrucialConstantsJ	s"���
�
��
�
������rc��[R"[R[R[R5nSSS5 g!,(df   g=frr�r3s  rr��ISOTPTest.testCreateSocketP	r�r�rLz(socket.CAN_ISOTP required for this test.c��[R"[R[R[R5nSSS5 g!,(df   g=fr)r7rArKrLr3s  r�testCreateISOTPSocket�ISOTPTest.testCreateISOTPSocketT	�7���]�]�6�=�=�&�*;�*;�V�=M�=M�
N�RS��O�
N�
N�r�c�>�[R"[R[R[R5nUR	[
S5 UR
S5 SSS5 SSS5 g!,(df   N=f!,(df   g=f)Nr�)r�r
r4)r7rArKrLr"r<r�r3s  rr��"ISOTPTest.testTooLongInterfaceNameZ	sc��
�]�]�6�=�=�&�*;�*;�V�=M�=M�
N�RS��'�'��1J�K����)�*�L�O�
N�K�K��O�
N�s$�B�A=�,B�=
B	�B�
Bc���[R"[R[R[R5nURSS4nURU5 UR
UR5U5 SSS5 g!,(df   g=f![aGnUR[R:Xa#URSUR-5 SnAgeSnAff=f)Nr(iVr�)r7rArKrLr�r�rUr,r<r@�ENODEVr��r�rGrir�s    r�testBind�ISOTPTest.testBind`	s���
	����v�}�}�f�.?�.?��AQ�AQ�R�VW��~�~�u�e�3�����t��� � �����$�7�S�R�R���	��w�w�%�,�,�&��
�
�E��>�>�*�+�+���	�s=�AB�AB�B�
B�B�B�
C0�)<C+�*C+�+C0�r�)r�r�r�r�r�r\r�r"r�r6r7rGr�rOr�r�r�s@rr<r<C	sN���!���������5�C�E��E��+��rr<z!CAN J1939 required for this test.c�^�\rSrSrU4Sjr\R"\"\S5S5S5r	\R"\"\S5S5S5r
SrSrU=r
$)	�	J1939Testin	c�4>�[TU]"U0UD6 SUlgr>r?r�s   �rr��J1939Test.__init__q	rArrPz(socket.CAN_J1939 required for this test.c��[R [R [R [R [R
 [R [R [R [R [R [R [R [R [R [R [R  [R" [R$ [R& [R( [R* [R, [R. [R0 gr)r7rP�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_MAXr�s r�testJ1939Constants�J1939Test.testJ1939Constantsu	s���	����%�%����������� � ��(�(��*�*��!�!�������	�������!�!�� � ��"�"��"�"�����!�!�����$�$��!�!��%�%���rc��[R"[R[R[R5nSSS5 g!,(df   g=fr)r7rArKrPr3s  r�testCreateJ1939Socket�J1939Test.testCreateJ1939Socket�	rIr�c�<�[R"[R[R[R5nUR[R
[R[R4nURU5 URUR5U5 SSS5 g!,(df   g=f![aGnUR[R:Xa#URSUR-5 SnAgeSnAff=fr�)r7rArKrPr�rZr`rYr�rUr,r<r@rMr�rNs    rrO�J1939Test.testBind�	s���
	����v�}�}�f�.?�.?��AQ�AQ�R�VW��~�~�v�';�';�V�=P�=P�RX�Rf�Rf�f�����t��� � �����$�7�S�R�R���	��w�w�%�,�,�&��
�
�E��>�>�*�+�+���	�s=�AC
�A,B9�0C
�9
C�C
�C
�

D�<D�D�DrQ)r�r�r�r�r�r"r�r6r7rnrqrOr�r�r�s@rrSrSn	sm���!�������5�C�E� �E� �B������5�C�E��E���rrSz#RDS sockets required for this test.c�&�\rSrSrSrSrSrSrg)�BasicRDSTesti�	c�D�[R [R gr)r7�AF_RDSrTr�s rr\�!BasicRDSTest.testCrucialConstants�	s���
�
��
�
rc��[R"[R[RS5nSSS5 g!,(df   g=fr*)r7rTrUr3s  rr��BasicRDSTest.testCreateSocket�	s.��
�]�]�6�=�=�&�*?�*?��
C�q��D�
C�
C�s�A�
Ac�`�Sn[R"[R[RS5nUR[R[R
U5 UR[R[RU5 SSS5 g!,(df   g=f)Ni@r)r7rTrUrvrZ�	SO_RCVBUF�	SO_SNDBUF)r�r�rGs   r�testSocketBufferSize�!BasicRDSTest.testSocketBufferSize�	sh����
�]�]�6�=�=�&�*?�*?��
C�q�
�L�L��*�*�F�,<�,<�g�F�
�L�L��*�*�F�,<�,<�g�F�D�
C�
C�s�AB�
B-rN)r�r�r�r�r\r�rr�rrrrvrv�	s����Grrvc��^�\rSrSrSSjrU4SjrSrSrSrSr	\
"\RS5S	5r\
"\RS
5S5r
SrS
rSrSrSrU=r$)�RDSTesti�	c�*�[RXS9 gr�)r&r�r�s  rr��RDSTest.__init__�	rerc�V>�[TU]5 [R"5Ulgr)r�r�r�r��evtr�s �rr��
RDSTest.setUp�	s���
��
���?�?�$��rc���URRUR5upURURU5 URUR
U5 gr)r�rtr�rUrr-�r�rris   r�testSendAndRecv�RDSTest.testSendAndRecv�	sD���Y�Y�'�'����5�
��������D�)��������-rc��SUlURRURS[UR45 g�Nrkr�rrrQr+r�r�s r�_testSendAndRecv�RDSTest._testSendAndRecv�	�*����	�������	�	�1�t�T�Y�Y�&7�8rc�.�URRUR[R5upURURU5 URRUR5upURURU5 gr)r�rtr�r7�MSG_PEEKrUrr�s   r�testPeek�RDSTest.testPeek�	sd���Y�Y�'�'����f�o�o�F�
��������D�)��Y�Y�'�'����5�
��������D�)rc��SUlURRURS[UR45 gr�r�r�s r�	_testPeek�RDSTest._testPeek�	r�r�recvmsgc��URRUR5upp4URURU5 gr)r�r�r�rUr)r�r�ancdata�	msg_flagsris     r�testSendAndRecvMsg�RDSTest.testSendAndRecvMsg�	s3��)-���):�):�4�<�<�)H�&��y�������D�)rr�c��SUlURRUR/SS[UR45 g)Ns<hello hello hello hello hello hello hello hello hello hello rr)rrr�r+r�r�s r�_testSendAndRecvMsg�RDSTest._testSendAndRecvMsg�	s0��"��	������$�)�)��b�!�d�D�I�I�->�?rc��URRUR5upURURU5 URRUR5upURUR
U5 gr)r�rtr�rU�data1�data2r�s   r�testSendAndRecvMulti�RDSTest.testSendAndRecvMulti�	s^���Y�Y�'�'����5�
��������T�*��Y�Y�'�'����5�
��������T�*rc��SUlURRURS[UR45 SUlURRUR
S[UR45 g)Nsbaconrsegg)r�rrQr+r�r�r�s r�_testSendAndRecvMulti�RDSTest._testSendAndRecvMulti�	sR����
�������
�
�A��d�i�i�'8�9���
�������
�
�A��d�i�i�'8�9rc��[R"UR///S5upnURURU5 URRUR5upEURURU5 g)Ng@)�selectr�r0rtr�rUr)r�r=r�r�rris      r�
testSelect�RDSTest.testSelect�	s`���-�-�����R��S�9���a��
�
�d�i�i��#��Y�Y�'�'����5�
��������D�)rc��SUlURRURS[UR45 g)Nsselectrr�r�s r�_testSelect�RDSTest._testSelect�	s*����	�������	�	�1�t�T�Y�Y�&7�8r)rr�r�r�r	)r�r�r�r�r�r�r�r�r�r�rr7r�r�r�r�r�r�r�r�r�s@rr�r��	s{���D�%�.�
9�*�9��&�-�-��+�*�,�*��&�-�-��+�@�,�@�+�:�*�9�9rr�z'QIPCRTR sockets required for this test.c�8�\rSrSrSrSrSrSrSrSr	Sr
g	)
�BasicQIPCRTRTesti�	c�$�[R gr)r7r]r�s rr\�%BasicQIPCRTRTest.testCrucialConstants
s����rc��[R"[R[R5nSSS5 g!,(df   g=fr)r7r]rKr3s  rr��!BasicQIPCRTRTest.testCreateSocket
s.��
�]�]�6�,�,�f�.?�.?�
@�A��A�
@�
@��	�?�
A
c���[R"[R[R5nURUR	5SS5 SSS5 g!,(df   g=f�Nr
r)r7r]rKrUr,r3s  r�testUnbound�BasicQIPCRTRTest.testUnbound
sF��
�]�]�6�,�,�f�.?�.?�
@�A����Q�]�]�_�Q�/��3�A�
@�
@�s�$A!�!
A/c�.�[R"[R[R5n[R"XR5SS9 UR
UR5SS5 SSS5 g!,(df   g=f)Nrr�r
)r7r]rKrr�r,�assertNotEqualr3s  r�testBindSock�BasicQIPCRTRTest.testBindSock
s_��
�]�]�6�,�,�f�.?�.?�
@�A��#�#�A�M�M�O�A�,>�?�����
�
��� 2�A�6�A�
@�
@�s�A	B�
Bc���[R"[R[R5nUR[[
RUSS9 SSS5 g!,(df   g=f)Nr�r�)r7r]rKrFr<rr�r3s  r�testInvalidBindSock�$BasicQIPCRTRTest.testInvalidBindSock
sH��
�]�]�6�,�,�f�.?�.?�
@�A����g�}�'>�'>����K�A�
@�
@�s�%A"�"
A0c��[R"[R[R5nURS5 UR	UR5SS5 SSS5 g!,(df   g=f)N)�{r�r
r)r7r]rKrMr�r,r3s  r�testAutoBindSock�!BasicQIPCRTRTest.testAutoBindSock
sR��
�]�]�6�,�,�f�.?�.?�
@�A�
�I�I�j�!�����
�
��� 2�A�6�A�
@�
@�s�5A2�2
BrN)r�r�r�r�r\r�r�r�r�r�r�rrrr�r��	s!����4�7�
L�7rr�c�,�\rSrSrSrSrSrSrSrg)�BasicVSOCKTesti
c�$�[R gr)r7r<r�s rr\�#BasicVSOCKTest.testCrucialConstants
s	����rc��[R [R [R [R [R
 [R [R [R gr)	r7�SO_VM_SOCKETS_BUFFER_SIZE�SO_VM_SOCKETS_BUFFER_MIN_SIZE�SO_VM_SOCKETS_BUFFER_MAX_SIZEr=�VMADDR_PORT_ANYr3�VM_SOCKETS_INVALID_VERSIONr2r�s r�testVSOCKConstants�!BasicVSOCKTest.testVSOCKConstants"
sJ���(�(��,�,��,�,�����������)�)��-�-rc��[R"[R[R5nSSS5 g!,(df   g=fr)r7r<rdr3s  rr��BasicVSOCKTest.testCreateSocket,
s,��
�]�]�6�?�?�F�,>�,>�
?�1��@�
?�
?�r�c�d�[R"[R[R5nUR[R[R5nUR[R[R
5nUR[R[R5nUR[R[RUS-5 UR[R[R
US-5 UR[R[RUS-5 URUS-UR[R[R55 URUS-UR[R[R
55 URUS-UR[R[R55 SSS5 g!,(df   g=f�Nr4)	r7r<rdrar�r�r�rvrU)r�rG�orig_maxr��orig_mins     rr�#BasicVSOCKTest.testSocketBufferSize0
s���
�]�]�6�?�?�F�,>�,>�
?�1��|�|�F�O�O�$*�$H�$H�J�H��<�<���� &� @� @�B�D��|�|�F�O�O�$*�$H�$H�J�H�
�L�L�����=�=�x�!�|�
M�
�L�L�����9�9�4�!�8�
E�
�L�L�����=�=�x�!�|�
M�
���X��\��\�\�&�/�/�#�A�A�C�
D�
���T�A�X��\�\�&�/�/�#�=�=�?�
@�
���X��\��\�\�&�/�/�#�A�A�C�
D�+@�
?�
?�s�G$H!�!
H/rN)	r�r�r�r�r\r�r�rr�rrrr�r�
s��
�.��Drr�z)Bluetooth sockets required for this test.c��\rSrSrSrSr\R"\RS:HS5S5r
\R"\RS:HS5S5r\R"\RS:H=(d \RRS	5S
5S5r
\R"\S5S
5r\R"\S5S5rSrSr\R"\"\S5S5S5r\R"\"\S5S5S5r\R"\"\S5S5S5r\R"\"\S5S5S5rSrg)�BasicBluetoothTestiK
c�x�[R [R [R [R [
RS:waf[R [R [R [
RRS5(d[R ggg)Nrur)r7�
BDADDR_ANY�BDADDR_LOCALrcrer{r|�BTPROTO_HCI�SOL_HCIrhr�BTPROTO_SCOr�s r�testBluetoothConstants�)BasicBluetoothTest.testBluetoothConstantsO
ss���������������<�<�7�"�����N�N�� � ��<�<�*�*�9�5�5��"�"�6�#rc��[R"[R[R[R5nSSS5 g!,(df   g=fr)r7rcrdrer3s  r�testCreateRfcommSocket�)BasicBluetoothTest.testCreateRfcommSocket]
s7��
�]�]�6�.�.��0B�0B�F�DY�DY�
Z�^_��[�
Z�
Z�r�ruz&windows does not support L2CAP socketsc��[R"[R[R[R5nSSS5 g!,(df   g=fr)r7rcrUrhr3s  r�testCreateL2capSocket�(BasicBluetoothTest.testCreateL2capSocketa
s7��
�]�]�6�.�.��0E�0E�v�G[�G[�
\�`a��]�
\�
\�r�z$windows does not support HCI socketsc��[R"[R[R[R5nSSS5 g!,(df   g=fr)r7rcrBr�r3s  r�testCreateHciSocket�&BasicBluetoothTest.testCreateHciSocketf
s5��
�]�]�6�.�.�����AS�AS�
T�XY��U�
T�
T�r�rz.windows and freebsd do not support SCO socketsc��[R"[R[R[R5nSSS5 g!,(df   g=fr)r7rcrUr�r3s  r�testCreateScoSocket�&BasicBluetoothTest.testCreateScoSocketk
s9���]�]�6�.�.��0E�0E�v�GY�GY�
Z�^_��[�
Z�
Z�r�z.Bluetooth L2CAP sockets required for this testc�f�[R"[R[R[R5nSnUR	[R
U45 UR
5nURU[R
U45 SSS5 g!,(df   g=f)N�)r7rcrUrhr�r�r,rU)r�r�psmris    r�testBindBrEdrL2capSocket�+BasicBluetoothTest.testBindBrEdrL2capSocketq
sv��
�]�]�6�.�.��0E�0E�v�G[�G[�
\�`a��C�
�F�F�F�%�%�s�+�,��=�=�?�D����T�F�$5�$5�s�#;�<�]�
\�
\�s
�AB"�"
B0c���[R"[R[R[R5nUR	[
5 UR
[RSS45 SSS5 UR	[
5 UR
[R45 SSS5 UR	[
5 UR
[R5 SSS5 UR	[
5 UR
[RR5S45 SSS5 UR	[
5 UR
S5 SSS5 SSS5 g!,(df   GN=f!,(df   N�=f!,(df   N�=f!,(df   Nz=f!,(df   N\=f!,(df   g=f)Nrr�)��r�)	r7rcrUrhrFr<r�r��encode)r�rs  r�testBadL2capAddr�#BasicBluetoothTest.testBadL2capAddrz
s)��
�]�]�6�.�.��0E�0E�v�G[�G[�
\�`a��"�"�7�+�����)�)�1�a�0�1�,��"�"�7�+�����)�)�+�,�,��"�"�7�+����v�(�(�)�,��"�"�7�+�����)�)�0�0�2�F�;�<�,��"�"�7�+����)�*�,�]�
\�+�+��+�+��+�+��+�+��+�+��]�
\�s��G�#F�<G�!F�:G� F'�7G�0F8�G�!G	�3G�
F	�G�
F$	� G�'
F5	�1G�8
G	�G�	
G	�G�
G(c��[R"[R[R[R5nSnUR	[R
U45 UR5nURU[RU45 UR!USS5 [RS:wa"URU[R
U45 SSS5 [R"[R[R[R5nUR	W5 UR5nURXT5 SSS5 g![aDn[RS:Xa*URS:XaUR[U55 eSnAff=f!,(df   N�=f!,(df   g=f)NrruiB'z"(?i)[0-9a-f]{2}(?::[0-9a-f]{2}){4})r7rcrdrer�r�r<r{r|rEr�rr,rUr�ANY�assertRegex)r�rG�channelrri�addr2s      r�testBindRfcommSocket�'BasicBluetoothTest.testBindRfcommSocket�
sT��
�]�]�6�.�.��0B�0B�F�DY�DY�
Z�^_��G�
�����)�)�7�3�4�
�=�=�?�D����T�D�H�H�g�#6�7����T�!�W�&K�L��|�|�w�&�� � ���(9�(9�7�'C�D�[��]�]�6�.�.��0B�0B�F�DY�DY�
Z�^_�
�F�F�4�L��M�M�O�E����U�)�[�
Z���
��<�<�7�*�s�|�|�u�/D��M�M�#�c�(�+���
��	[�
Z��[�
Z�s=�F<�!E+�(A=F<�/3G
�+
F9�5?F4�4F9�9F<�<
G
�
Gc�j�[R"[R[R[R5nSnUR	[
5 UR
[RR5U45 SSS5 UR	[
5 UR
[R45 SSS5 UR	[
5 UR
[RUS45 SSS5 UR	[
5 UR
[RS-U45 SSS5 UR	[
5 UR
S5 SSS5 UR	[
5 UR
SU45 SSS5 SSS5 g!,(df   GN8=f!,(df   GN=f!,(df   N�=f!,(df   N�=f!,(df   N�=f!,(df   Nn=f!,(df   g=f)Nr�r��invalid)	r7rcrdrerFr<r�r�r�)r�rGr�s   r�testBadRfcommAddr�$BasicBluetoothTest.testBadRfcommAddr�
sb��
�]�]�6�.�.��0B�0B�F�DY�DY�
Z�^_��G��"�"�7�+�����)�)�0�0�2�G�<�=�,��"�"�7�+�����)�)�+�,�,��"�"�7�+�����)�)�7�A�6�7�,��"�"�7�+�����)�)�D�0�'�:�;�,��"�"�7�+����x� �,��"�"�7�+����	�7�+�,�,�[�
Z�+�+��+�+��+�+��+�+��+�+��+�+��[�
Z�s��H$�0F<�H$�(!G�	H$�&#G �	H$�&%G1�H$�(H�:H$�H�+H$�<
G	�H$�
G	�H$� 
G.	�*H$�1
G?	�;H$�
H	�H$�
H!	�H$�$
H2r�z,Bluetooth HCI sockets required for this testc���[R"[R[R[R5n[R
R
S5(aPUR[R5 UR5nURU[R5 O6SnURU45 UR5nURX#5 SSS5 g![aNnUR[R[R4;aUR[!U55 eSnAff=f!,(df   g=f)N�r�	dragonflyrr)r7rcrBr�r{r|rr�r�r,rUr<r@�EINVALrMr�r)r�rGri�devrs     r�testBindHciSocket�$BasicBluetoothTest.testBindHciSocket�
s���
�]�]�6�.�.�����AS�AS�
T�XY��|�|�&�&�'I�J�J����v�(�(�)��}�}���� � ��v�'8�'8�9�����F�F�C�6�N�
�}�}���� � ��+�U�
T�����y�y�U�\�\�5�<�<�$@�@��
�
�c�#�h�/�����U�
T�s2�A7E�;C7�
!E�7
E�A	E
�
E�E�
E c� �[R"[R[R[R5n[R
R
S5(Ga�UR[5 UR[RR55 SSS5 UR[5 UR[R45 SSS5 UR[5 UR[RS-5 SSS5 UR[[45 UR[RS-5 SSS5 UR[5 URS5 SSS5 UR[5 URS5 SSS5 UR[5 URS5 SSS5 GOSnUR[5 URS5 SSS5 UR[5 URUS45 SSS5 UR[5 URU5 SSS5 UR[5 UR[R5 SSS5 UR[5 UR[RR55 SSS5 SSS5 g!,(df   GN�=f!,(df   GNX=f!,(df   GN*=f!,(df   GN�=f!,(df   GN�=f!,(df   GN�=f!,(df   N�=f!,(df   GN}=f!,(df   GN^=f!,(df   GNA=f!,(df   GN=f!,(df   N�=f!,(df   g=f)	Nrrzd                                                                                                    r�r�invalidrr)
r7rcrBr�r{r|rrFr<r�r�r�r)r�rGr
s   r�testBadHciAddr�!BasicBluetoothTest.testBadHciAddr�
sl��
�]�]�6�.�.�����AS�AS�
T�XY��|�|�&�&�'I�J�J��&�&�w�/��F�F�6�,�,�3�3�5�6�0��&�&�w�/��F�F�F�-�-�/�0�0��&�&�w�/��F�F�6�,�,�t�3�4�0��&�&�
�G�'<�=��F�F�6�,�,�w�6�7�>��&�&�w�/��F�F�8�$�0��&�&�w�/��F�F�9�%�0��&�&�w�/��F�F�:�&�0�/����&�&�w�/��F�F�2�J�0��&�&�w�/��F�F�C��8�$�0��&�&�w�/��F�F�3�K�0��&�&�w�/��F�F�6�,�,�-�0��&�&�w�/��F�F�6�,�,�3�3�5�6�0�5U�
T�/�/��/�/��/�/��=�=��/�/��/�/��/�/��0�/��/�/��/�/��/�/��/�/��5U�
T�s,�;O?�>.L)�,O?�	!L;�*O?�#M
�*#O?�
#M�0O?�
M1�O?�<N�O?�+N�=!O?�N&�0O?�
N8�!O?�>O
�O?�- O�
O?�*.O.�O?�)
L8	�3O?�;
M
	�O?�
M	�O?�
M.	�)O?�1
N	�;O?�
N	�
O?�
N#	�O?�&
N5	�0O?�8
O	�O?�

O	�O?�
O+	�&O?�.
O<	�8O?�?
P
r�z,Bluetooth SCO sockets required for this testc���[R"[R[R[R5nUR	[R
5 UR
5nURU[R
5 SSS5 [R"[R[R[R5nUR	[R
R55 UR
5nURU[R
5 SSS5 g!,(df   N�=f!,(df   g=fr)	r7rcrUr�r�r�r,rUr�)r�rGris   r�testBindScoSocket�$BasicBluetoothTest.testBindScoSocket�
s���
�]�]�6�.�.��0E�0E�v�GY�GY�
Z�^_�
�F�F�6�$�$�%��=�=�?�D����T�6�#4�#4�5�[�
�]�]�6�.�.��0E�0E�v�GY�GY�
Z�^_�
�F�F�6�$�$�+�+�-�.��=�=�?�D����T�6�#4�#4�5�[�
Z�[�
Z��
[�
Z�s�AE�AE�
E�
E#c��[R"[R[R[R5nUR	[
5 UR
[R45 SSS5 UR	[
5 UR
[RR545 SSS5 UR	[5 UR
[RS-5 SSS5 UR	[5 UR
[RR5S-5 SSS5 UR	[5 UR
S5 SSS5 UR	[
5 UR
S5 SSS5 UR	[
5 UR
S5 SSS5 SSS5 g!,(df   GN=f!,(df   GNE=f!,(df   GN=f!,(df   N�=f!,(df   N�=f!,(df   N�=f!,(df   N�=f!,(df   g=f)Nrrr�rr)r7rcrUr�rFr<r�r�r�rr�r3s  r�testBadScoAddr�!BasicBluetoothTest.testBadScoAddr�
s��
�]�]�6�.�.��0E�0E�v�GY�GY�
Z�^_��"�"�7�+�����)�)�+�,�,��"�"�7�+�����)�)�0�0�2�4�5�,��"�"�:�.����v�(�(�4�/�0�/��"�"�:�.����v�(�(�/�/�1�E�9�:�/��"�"�#5�6����x� �7��"�"�7�+����y�!�,��"�"�7�+����z�"�,�[�
Z�+�+��+�+��.�.��.�.��6�6��+�+��+�+��[�
Z�s��I,�!G2�:I,�/H�I,�##H�I,�#1H(�I,�1H9�I,� I
�2I,�I�!I,�2
H	�<I,�
H	�I,�
H%	� I,�(
H6	�2I,�9
I	�I,�

I	�I,�
I)	�%I,�,
I:rN)r�r�r�r�r�r�r"r�r{r|r�r�rr�r��HAVE_SOCKET_BLUETOOTH_L2CAPr�r�r�rr6r7rrrrr�rrrr�r�K
s���#���_�_�S�\�\�W�,�.V�W��X���_�_�S�\�\�W�,�.T�U��V���_�_�S�\�\�W�,�R����0G�0G�	�0R�E�G��G�����4�6f�g�=�h�=����4�6f�g�+�h�+�*�&-� ������7�9g�h�,�i�,�"������7�9g�h�7�i�7�<������7�9g�h�	6�i�	6�������7�9g�h�#�i�#rr�z'Hyper-V sockets required for this test.c�>�\rSrSrSrSrSrSrSrSr	Sr
S	rg
)�BasicHyperVTesti�
c�D�[R [R [R [R [R
 [R [R [R [R [R gr)r7�HVSOCKET_CONNECT_TIMEOUT�HVSOCKET_CONNECT_TIMEOUT_MAX�HVSOCKET_CONNECTED_SUSPEND�HVSOCKET_ADDRESS_FLAG_PASSTHRU�HV_GUID_ZERO�HV_GUID_WILDCARD�HV_GUID_BROADCAST�HV_GUID_CHILDREN�HV_GUID_LOOPBACK�HV_GUID_PARENTr�s r�testHyperVConstants�#BasicHyperVTest.testHyperVConstants�
s\���'�'��+�+��)�)��-�-�������� � ���������rc���SnUR[U5 [R"[R[R5 SSS5 g!,(df   g=f)Nz\[WinError 10041\])r"r<r7rkrd)r�r:s  r�-testCreateHyperVSocketWithUnknownProtoFailure�=BasicHyperVTest.testCreateHyperVSocketWithUnknownProtoFailures=��(��
�
#�
#�G�X�
6��M�M�&�*�*�F�,>�,>�?�7�
6�
6�s�4A�
A$c��Sn[R"[R[R[R5nUR	[
[R"U55 UR[R5 SSS5 SSS5 g!,(df   N=f!,(df   g=f)Nz3connect(): AF_HYPERV address must be tuple, not str�
r7rkrdrlr"r��re�escaperMr�r�r:rGs   r�)testCreateHyperVSocketAddrNotTupleFailure�9BasicHyperVTest.testCreateHyperVSocketAddrNotTupleFailuresw��H��
�]�]�6�+�+�V�-?�-?��AW�AW�
X�\]��'�'�	�2�9�9�X�3F�G��	�	�&�-�-�.�H�Y�
X�G�G��Y�
X�s$�+B2�0 B!�B2�!
B/	�+B2�2
Cc��Sn[R"[R[R[R5nUR	[
[R"U55 UR[R45 SSS5 SSS5 g!,(df   N=f!,(df   g=f)N�9AF_HYPERV address must be a str tuple (vm_id, service_id)r+r.s   r�0testCreateHyperVSocketAddrNotTupleOf2StrsFailure�@BasicHyperVTest.testCreateHyperVSocketAddrNotTupleOf2StrsFailuresz��N��
�]�]�6�+�+�V�-?�-?��AW�AW�
X�\]��'�'�	�2�9�9�X�3F�G��	�	�6�.�.�0�1�H�Y�
X�G�G��Y�
X�s$�+B3�0!B"�B3�"
B0	�,B3�3
Cc�j�Sn[R"[R[R[R5nUR	[
[R"U55 URS5 SSS5 SSS5 g!,(df   N=f!,(df   g=f)Nr2)r
r4)	r7rkrdrlr"r�r,r-rMr.s   r�/testCreateHyperVSocketAddrNotTupleOfStrsFailure�?BasicHyperVTest.testCreateHyperVSocketAddrNotTupleOfStrsFailuresq��N��
�]�]�6�+�+�V�-?�-?��AW�AW�
X�\]��'�'�	�2�9�9�X�3F�G��	�	�&�!�H�Y�
X�G�G��Y�
X�s$�+B$�0B�B$�
B!	�B$�$
B2c��Sn[R"[R[R[R5nUR	[
[R"U55 URS[R45 SSS5 SSS5 g!,(df   N=f!,(df   g=f)Nz=connect(): AF_HYPERV address vm_id is not a valid UUID string�00�
r7rkrdrlr"rr,r-rMrr.s   r�1testCreateHyperVSocketAddrVmIdNotValidUUIDFailure�ABasicHyperVTest.testCreateHyperVSocketAddrVmIdNotValidUUIDFailure"s|��R��
�]�]�6�+�+�V�-?�-?��AW�AW�
X�\]��'�'�
�B�I�I�h�4G�H��	�	�4��!4�!4�5�6�I�Y�
X�H�H��Y�
X��$�+B4�0"B#�B4�#
B1	�-B4�4
Cc��Sn[R"[R[R[R5nUR	[
[R"U55 UR[RS45 SSS5 SSS5 g!,(df   N=f!,(df   g=f)NzBconnect(): AF_HYPERV address service_id is not a valid UUID stringr9r:r.s   r�6testCreateHyperVSocketAddrServiceIdNotValidUUIDFailure�FBasicHyperVTest.testCreateHyperVSocketAddrServiceIdNotValidUUIDFailure(s|��W��
�]�]�6�+�+�V�-?�-?��AW�AW�
X�\]��'�'�
�B�I�I�h�4G�H��	�	�6�.�.��5�6�I�Y�
X�H�H��Y�
X�r=rN)r�r�r�r�r%r(r/r3r6r;r?r�rrrrr�
s&��
�@�
/�2�"�7�7rrc�8�\rSrSrSSjrSrSrSrSrSr	Sr
S	rS
rSr
SrS
rSrSrSrSrSrSr\R.\R2"\SLS5S55r\R.\R2"\SLS5S55rSrSrSrg)�BasicTCPTesti/c�*�[RXS9 gr��rbr�r�s  rr��BasicTCPTest.__init__1����$�$�T�$�Arc�f�URRS5nURU[5 grP)rgrRrUrVrIs  r�testRecv�BasicTCPTest.testRecv4s&���m�m� � ��&������c�"rc�B�URR[5 gr�rnr\rVr�s r�	_testRecv�BasicTCPTest._testRecv9��������C� rc���URR[[5S-
5nURRS5nX-nUR	U[5 g�N�rQ)rgrRr�rVrU)r��seg1�seg2rWs    r�testOverFlowRecv�BasicTCPTest.testOverFlowRecv<sI���}�}�!�!�#�c�(�Q�,�/���}�}�!�!�$�'���k������c�"rc�B�URR[5 grrKr�s r�_testOverFlowRecv�BasicTCPTest._testOverFlowRecvCrNrc�j�URRS5upURU[5 grP)rgrtrUrV�r�rWris   r�testRecvFrom�BasicTCPTest.testRecvFromFs(���M�M�*�*�4�0�	������c�"rc�B�URR[5 grrKr�s r�
_testRecvFrom�BasicTCPTest._testRecvFromKrNrc���URR[[5S-
5upURRS5up2X-nUR	U[5 grP)rgrtr�rVrU)r�rRrirSrWs     r�testOverFlowRecvFrom�!BasicTCPTest.testOverFlowRecvFromNsM���]�]�+�+�C��H�Q�J�7�
���]�]�+�+�D�1�
���k������c�"rc�B�URR[5 grrKr�s r�_testOverFlowRecvFrom�"BasicTCPTest._testOverFlowRecvFromUrNrc��SnURRS5nU(dOX-
nM)URUS5 g)NrrQ�ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff)rgrRrU)r�rW�reads   r�testSendAll�BasicTCPTest.testSendAllXsB������=�=�%�%�d�+�D����K�C�	�
	
����k�*rc�>�SnURRU5 g)Nrg)rnr�)r��	big_chunks  r�_testSendAll�BasicTCPTest._testSendAllbs���	������y�)rc�d�URR5n[R"U[R[R
5nUR
UR5 URU[R5 URS5nURU[5 grP)rgr1r7�fromfdr�rdr�rDr(rRrUrV)r�r@r�rWs    r�
testFromFd�BasicTCPTest.testFromFdfsq��
�]�]�
!�
!�
#���}�}�R�����1C�1C�D������
�
�#����d�F�M�M�2��i�i��o������c�"rc�B�URR[5 grrKr�s r�_testFromFd�BasicTCPTest._testFromFdorNrc��URR5nURUR5 UR	S5nURU[5 grP)rg�dupr�rDrRrUrV)r�r�rWs   r�testDup�BasicTCPTest.testDuprsA���}�}� � �"������
�
�#��i�i��o������c�"rc�B�URR[5 grrKr�s r�_testDup�BasicTCPTest._testDupyrNrc��URRS5nURU[5 URR5 grP)rgrRrUrVr�r�rIs  r�check_shutdown�BasicTCPTest.check_shutdown|s6���m�m� � ��&������c�"�	
�	�	���rc�$�UR5 gr�r~r�s r�testShutdown�BasicTCPTest.testShutdown�s�����rc�x�URR[5 URRS5 gr�)rnr\rVrwr�s r�
_testShutdown�BasicTCPTest._testShutdown�s&�������C� �������"rNr�c�$�UR5 grr�r�s r�testShutdown_overflow�"BasicTCPTest.testShutdown_overflow�s��	
���rc�f�SSKnURR[5 UR	[
URRURS-5 UR	[
URRSURS--5 URR
S5 g)Nrr
r4)	r�rnr\rVrFr�rwr��UINT_MAX�r�r�s  r�_testShutdown_overflow�#BasicTCPTest._testShutdown_overflow�s���	������C� ����-����)@�)@�#�+�+�a�/�	1����-����)@�)@��y�1�1�A�5�6�	8�������"rc�J�URR5nURR5nURX!5 UR	URR
5 UR
[URRS5 URR5 [R"[R[RUS9nURUR5 URS5nURU[5 g)NrQro)rgr1r:rUr�_closedrFr<rRrDr7r�rdr�rV)r�r1rr�rWs     r�
testDetach�BasicTCPTest.testDetach�s������%�%�'���M�M� � �"������#�����
�
�-�-�.����'�4�=�=�#5�#5�t�<��
�
�����}�}�V�^�^�V�-?�-?��J������
�
�#��i�i��o������c�"rc�B�URR[5 grrKr�s r�_testDetach�BasicTCPTest._testDetach�rNrrr	) r�r�r�r�r�rHrLrTrWr[r^rardrirmrqrtrxr{r~r�r�rr�r"r�r�r�r�r�r�r�rrrrBrB/s���B�#�
!�#�!�#�
!�#�!�+�*�#�!�#�!���#�
���
�_�_�Y�$�&�(<�=��>���
���
�_�_�Y�$�&�(<�=�#�>��#�#� !rrBc�B�\rSrSrSSjrSrSrSrSrSr	Sr
S	rg
)�BasicUDPTesti�c�*�[RXS9 gr�)r
r�r�s  rr��BasicUDPTest.__init__�rerc��URR[[55nUR	U[5 gr�r�rRr�rVrUrIs  r�testSendtoAndRecv�BasicUDPTest.testSendtoAndRecv��(���i�i�n�n�S��X�&������c�"rc�f�URR[S[UR45 gr*�rrQrVr+r�r�s r�_testSendtoAndRecv�BasicUDPTest._testSendtoAndRecv����������Q��t�y�y� 1�2rc��URR[[55upUR	U[5 gr�r�rtr�rVrUrZs   rr[�BasicUDPTest.testRecvFrom��,���I�I�&�&�s�3�x�0�	������c�"rc�f�URR[S[UR45 gr*r�r�s rr^�BasicUDPTest._testRecvFrom�r�rc�Z�UR[URRS5 g�Nr��rFrr�rtr�s r�testRecvFromNegative�!BasicUDPTest.testRecvFromNegative�������*�d�i�i�&8�&8�"�=rc�f�URR[S[UR45 gr*r�r�s r�_testRecvFromNegative�"BasicUDPTest._testRecvFromNegative�r�rrNr	�r�r�r�r�r�r�r�r[r^r�r�r�rrrr�r��s&��D�#�
3�#�
3�>�3rr�c�B�\rSrSrSSjrSrSrSrSrSr	Sr
S	rg
)�BasicUDPLITETesti�c�*�[RXS9 gr�)rr�r�s  rr��BasicUDPLITETest.__init__�s��!�*�*�4�*�Grc��URR[[55nUR	U[5 grr�rIs  rr��"BasicUDPLITETest.testSendtoAndRecv�r�rc�f�URR[S[UR45 gr*r�r�s rr��#BasicUDPLITETest._testSendtoAndRecv�r�rc��URR[[55upUR	U[5 grr�rZs   rr[�BasicUDPLITETest.testRecvFrom�r�rc�f�URR[S[UR45 gr*r�r�s rr^�BasicUDPLITETest._testRecvFrom�r�rc�Z�UR[URRS5 gr�r�r�s rr��%BasicUDPLITETest.testRecvFromNegative�r�rc�f�URR[S[UR45 gr*r�r�s rr��&BasicUDPLITETest._testRecvFromNegative�r�rrNr	r�rrrr�r��s&��H�#�
3�#�
3�>�3rr�c�^�\rSrSr\R
rU4SjrSrSr	Sr
SrSrSr
S	rS
Hr\\"\\S	5-rM S	rS	rS	rS
SjrSrU=r$)�SendrecvmsgBaseic�V>�[R"5Ul[TU]5 gr)r�r��
misc_eventr�r�r�s �rr��SendrecvmsgBase.setUps���#�/�/�+���
��
�rc�8�URRU5$r)�cli_sockr\rIs  r�sendToServer�SendrecvmsgBase.sendToServers���}�}�!�!�#�&�&rrc�d�URR"XR[U5S-6$r)r�r��sendmsg_to_server_defaultsr��r�r$s  r�sendmsgToServer�SendrecvmsgBase.sendmsgToServers4��
�}�}�$�$��4�4�S��Y�Z�@�@�C�	Crc�N�UR"U/UQ76nURU5 U$r)r��registerRecvmsgResult)r�r�r�r$�results     r�	doRecvmsg�SendrecvmsgBase.doRecvmsg"s*�����g�-��-���"�"�6�*��
rc��grr�r�r�s  rr��%SendrecvmsgBase.registerRecvmsgResult,s��	
rc�&�URX5 gr�rU�r��addr1r�s   r�checkRecvmsgAddress�#SendrecvmsgBase.checkRecvmsgAddress2s��	
����&rr)�
MSG_CTRUNC�MSG_OOBc�l�URnURnU(aX`R-nXpR-nOUbX`R-nXpR-nXd)-nXs)-nX6-nXG-nX4-U)-nU(a[	SRU55eX4-U)-n	UR
X-X9-5 g)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�	ExceptionrrU)
r�r��eor�checkset�
checkunset�ignore�
defaultset�defaultunset�inbothr�s
          r�
checkFlags�SendrecvmsgBase.checkFlagsGs���8�.�.�
��2�2����6�6�6�J��<�<�<�L�
�_��:�:�:�J��8�8�8�L�	�k�!�
��	�!��	����"�
��&�&��0����%�%+�V�F�^�5�
5��%�&��0�������x��7r)r�)Nrrr)r�r�r�r�rrC�fail_timeoutr�r�r�r�r�r�r�r�rr�r7r�r�r�r�r�r�r�s@rr�r�s���
�+�+�L��'�"$��C��
�'���)���'�&�$��":�:��*��� ��#$��48�48rr�c��\rSrSrSrSrg)�RecvmsgIntoMixini~c���[U5nUR"U//UQ76nURU5 URUSS5 UR	USU5 [USUS54USS-$r�)rN�recvmsg_intor��assertGreaterEqual�assertLessEqualr,)r�r�r�r$�bufr�s      rr��RecvmsgIntoMixin.doRecvmsg�s|���� ���"�"�C�5�0�4�0���"�"�6�*�����q�	�1�-����V�A�Y��0��c�*�6�!�9�o�&�(�6�!�"�:�5�5rrN)r�r�r�r�r�r�rrrr�r�~s��6rr�c�2^�\rSrSr\U4Sj5rSrU=r$)�SendrecvmsgDgramFlagsBasei�c�:>�[TU][R-$r)r�r�r7�	MSG_TRUNCr�s �rr��5SendrecvmsgDgramFlagsBase.msg_flags_non_eor_indicator�s����w�2�V�5E�5E�E�Err)r�r�r�r��propertyr�r�r�r�s@rr�r��s����F��Frr�c�2^�\rSrSr\U4Sj5rSrU=r$)�SendrecvmsgSCTPFlagsBasei�c�:>�[TU][R-$r)r�r�r7�MSG_EORr�s �rr��0SendrecvmsgSCTPFlagsBase.msg_flags_eor_indicator�s����w�.����?�?rr)r�r�r�r�r�r�r�r�r�s@rrr�s����@��@rrc�J�\rSrSr\S5r\S5r\S5rSrSr	g)�SendrecvmsgConnectionlessBasei�c��UR$r)r�r�s r�	serv_sock�'SendrecvmsgConnectionlessBase.serv_sock�s���y�y�rc��UR$rrr�s rr��&SendrecvmsgConnectionlessBase.cli_sock�s���x�x�rc�"�//SUR4$r*)r�r�s rr��8SendrecvmsgConnectionlessBase.sendmsg_to_server_defaults�s���B��4�>�>�*�*rc�L�URRXR5$r)r�rQr�rIs  rr��*SendrecvmsgConnectionlessBase.sendToServer�s���}�}�#�#�C���8�8rrN)
r�r�r�r�r�rr�r�r�r�rrrrr�sC��
���������+��+�9rrc�:�\rSrSr\S5r\S5rSrSrg)�SendrecvmsgConnectedBasei�c��UR$r)rgr�s rr�"SendrecvmsgConnectedBase.serv_sock�s���}�}�rc��UR$r)rnr�s rr��!SendrecvmsgConnectedBase.cli_sock�s���~�~�rc��grrr�s   rr��,SendrecvmsgConnectedBase.checkRecvmsgAddress����	
rrN)	r�r�r�r�r�rr�r�r�rrrrr�s/����������
rrc�(^�\rSrSrU4SjrSrU=r$)�SendrecvmsgServerTimeoutBasei�c�l>�[TU]5 URRUR5 gr)r�r�rrBr�r�s �rr��"SendrecvmsgServerTimeoutBase.setUp�s$���
��
�����!�!�$�"3�"3�4rrr�r�s@rrr�s
���5�5rrc���\rSrSrSrSrSrSrSrSr	Sr
S	rS
rSr
SrS
rSrSr\"\S5S5r\R*S5rSrSrSrSrSrg)�SendmsgTestsi�c�|�URURR[[55[5 gr�rUrrRr�rVr�s r�testSendmsg�SendmsgTests.testSendmsg��%��������,�,�S��X�6��<rc�j�URUR[/5[[55 gr�rUr�rVr�r�s r�_testSendmsg�SendmsgTests._testSendmsg�s#������-�-�s�e�4�c�#�h�?rc�|�URURR[[55[5 grr r�s r�testSendmsgDataGenerator�%SendmsgTests.testSendmsgDataGenerator�r#rc�x�URURS[455[[55 g)Nc3�$# �UHov� M g7frrrs  rr�9SendmsgTests._testSendmsgDataGenerator.<locals>.<genexpr>�s���.@�%�Q�q�%�r
r%r�s r�_testSendmsgDataGenerator�&SendmsgTests._testSendmsgDataGenerator�s,������-�-�.@�3�%�.@�A��S��	#rc�|�URURR[[55[5 grr r�s r�testSendmsgAncillaryGenerator�*SendmsgTests.testSendmsgAncillaryGenerator�r#rc�z�URUR[/SS55[[55 g)Nc3�$# �UHov� M g7frrrs  rr�>SendmsgTests._testSendmsgAncillaryGenerator.<locals>.<genexpr>�s���_��A�a��r
rr%r�s r�_testSendmsgAncillaryGenerator�+SendmsgTests._testSendmsgAncillaryGenerator�s,������-�-�s�e�_��_�E��S��	#rc�|�URURR[[55[5 grr r�s r�testSendmsgArray�SendmsgTests.testSendmsgArray�r#rc��URUR[R"S[5/5[	[55 g)N�B)rUr��arrayrVr�r�s r�_testSendmsgArray�SendmsgTests._testSendmsgArray�s2������-�-�u�{�{�3��/D�.E�F��S��	#rc�|�URURR[[55[5 grr r�s r�testSendmsgGather�SendmsgTests.testSendmsgGather�r#rc��URUR[SS[SS/5[[55 g�NrQr%r�s r�_testSendmsgGather�SendmsgTests._testSendmsgGather�s2������-�-�s�2�A�w��A�B��.@�A�3�s�8�Lrc�Z�URURRS5S5 g�Nr��done�rUrrRr�s r�testSendmsgBadArgs�SendmsgTests.testSendmsgBadArgs��!��������,�,�T�2�G�<rc	���UR[URR5 UR[URS5 UR[UR[55 UR[UR[5/5 UR[UR[[5/5 UR[UR[/[55 UR[UR[//[55 UR[UR[//S[55 URS5 g)Nsnot in an iterablerrI)rFr�r�r�r��objectrVr�r�s r�_testSendmsgBadArgs� SendmsgTests._testSendmsgBadArgs�s�����)�T�]�]�%:�%:�;����)�T�%9�%9�/�	1����)�T�%9�%9� �(�	$����)�T�%9�%9�!�8�*�	&����)�T�%9�%9����/�	+����)�T�%9�%9��%���	+����)�T�%9�%9��%��V�X�	/����)�T�%9�%9��%��Q���	2����'�"rc�Z�URURRS5S5 grHrJr�s r�testSendmsgBadCmsg�SendmsgTests.testSendmsgBadCmsg
rMrc	�X�UR[UR[/[	5/5 UR[UR[/[	5SS4/5 UR[UR[/S[	5S4/5 UR[UR[/SS[	54/5 UR[UR[/S/5 UR[UR[/S/5 URS5 g)Nr�data)rr)rrrVrrI�rFr�r�rVrOr�r�s r�_testSendmsgBadCmsg� SendmsgTests._testSendmsgBadCmsg
s������)�T�%9�%9��%�&�(��	-����)�T�%9�%9��%�6�8�Q��"8�!9�	;����)�T�%9�%9��%�1�f�h��"8�!9�	;����)�T�%9�%9��%�1�a���"2�!3�	5����)�T�%9�%9��%�&��	+����)�T�%9�%9��%�"5�!6�	8����'�"r�
CMSG_SPACEc�Z�URURRS5S5 grHrJr�s r�testSendmsgBadMultiCmsg�$SendmsgTests.testSendmsgBadMultiCmsg
s#��	
������,�,�T�2�G�<rc���UR[UR[//SQ5 UR[UR[/S[	5/5 URS5 g)N�rrrrIrWr�s r�_testSendmsgBadMultiCmsg�%SendmsgTests._testSendmsgBadMultiCmsg$
sU�����)�T�%9�%9��%��	.����)�T�%9�%9��%�+�v�x�!8�	:����'�"rc�Z�URURRS5S5 grHrJr�s r�testSendmsgExcessCmsgReject�(SendmsgTests.testSendmsgExcessCmsgReject,
s#��	
������,�,�T�2�G�<rc�*�[[S5(d\UR[5nUR	[
/SS/5 SSS5 UR
WRR5 URS5 g!,(df   NE=f)NrZr_rI)
r6r7rFr<r�rV�assertIsNonerRr@r�r�s  r�_testSendmsgExcessCmsgReject�)SendmsgTests._testSendmsgExcessCmsgReject1
sj���v�|�,�,��"�"�7�+�r��$�$�c�U�[�+�,F�G�,����b�l�l�0�0�1����'�"�,�+�s�B�
Bc��grrr�s r�testSendmsgAfterClose�"SendmsgTests.testSendmsgAfterClose9
s��rc��URR5 UR[UR[
/5 gr)r�rDrFr<r�rVr�s r�_testSendmsgAfterClose�#SendmsgTests._testSendmsgAfterClose=
s,���
�
�������'�4�#7�#7�#��?rrN)r�r�r�r�r!r&r)r.r1r6r9r>rArErKrPrSrXrr7r\rr`rcrgrjrmr�rrrrr�s���=�@�=�#�=�#�=�#�=�M�=�#�$=�
#��&�,�'�=�(�=�
�(�(�#�)�#�=�
#�
�@rrc��\rSrSrSrSrSrSr\"\	RS;S5S5r\RS	5r
S
rg)�SendmsgStreamTestsiB
c�|�URURR[[55[5 grr r�s r�testSendmsgExplicitNoneAddr�.SendmsgStreamTests.testSendmsgExplicitNoneAddrF
r#rc�p�URUR[//SS5[[55 gr*r%r�s r�_testSendmsgExplicitNoneAddr�/SendmsgStreamTests._testSendmsgExplicitNoneAddrJ
s)������-�-�s�e�R��D�A�3�s�8�Lrc��URURRS5S5 URURRURS95 g�Nr�aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa�rq�rUrrRrr�r�r�r�s r�testSendmsgTimeout�%SendmsgStreamTests.testSendmsgTimeoutM
sE��������,�,�S�1�8�<�������,�,�T�5F�5F�,�G�Hrc�\�URRS5 URS/5 M![a O5[
a)nUR[R:waeSnAOSnAff=fURR5 g!URR5 f=f)N���Q��?ry)
r�rBr�r?r�r<r@�ENOMEMr�r��r�rGs  r�_testSendmsgTimeout�&SendmsgStreamTests._testSendmsgTimeoutR
s���	"��M�M�$�$�T�*�
5���(�(�(��4����
���
��9�9����,��-��
��
�O�O���!��D�O�O���!�s6�B�3�
A1�B�	A1�A,�'B�,A1�1B�B+>r�r�z<MSG_DONTWAIT not known to work on this platform when sendingc��URURRS5S5 URURRURS95 grxr{r�s r�testSendmsgDontWait�&SendmsgStreamTests.testSendmsgDontWaiti
sG��
	
������,�,�S�1�8�<�������,�,�T�5F�5F�,�G�Hrc��UR[5nURS//[R5 M$!,(df   O=fURWRR[R[R[R45 URR5 g!URR5 f=f�Nry)
rFr<r�r7�MSG_DONTWAITr0rRr@�EAGAIN�EWOULDBLOCKr�r�r�r�s  r�_testSendmsgDontWait�'SendmsgStreamTests._testSendmsgDontWaitq
s���		"��"�"�7�+�r���(�(�(��R��9L�9L�M��,�+��

�M�M�"�,�,�,�,� �<�<��):�):�E�L�L�I�
K�
�O�O���!��D�O�O���!�s�B<�&=�
A�AB<�<CrN)r�r�r�r�rrrur|r�rr{r|r�rr�r�rrrrprpB
s^��=�M�I�
"�.�c�l�l�*>�>� �!�I�!�I�
�$�$�
"�%�
"rrpc� �\rSrSrSrSrSrg)�SendmsgConnectionlessTestsi
c��grrr�s r�testSendmsgNoDestAddr�0SendmsgConnectionlessTests.testSendmsgNoDestAddr�
rrc���UR[URR[/5 UR[URR[//SS5 gr*)rFr<r�r�rVr�s r�_testSendmsgNoDestAddr�1SendmsgConnectionlessTests._testSendmsgNoDestAddr�
sJ�����'�4�=�=�#8�#8��%�	!����'�4�=�=�#8�#8��%��Q��	.rrN)r�r�r�r�r�r�r�rrrr�r�
s��

�
.rr�c��\rSrSrSrSrSrSrSrSr	Sr
S	rS
rSr
SrS
rSrSrSrSr\"\S5S5r\R.S5r\"\R*S5S5r\R.S5rSrg)�RecvmsgGenericTestsi�
c��URUR[[55upp4UR	U[5 URX@R5 UR	U/5 URUSS9 g�NT�r��r�rr�rVrUr�r-r��r�rWr�r�ris     r�testRecvmsg�RecvmsgGenericTests.testRecvmsg�
sa��$(�N�N�4�>�>�3�s�8�$L�!��e�����c�"�� � ��}�}�5�����"�%�����4��(rc�.�UR[5 gr�r�rVr�s r�_testRecvmsg� RecvmsgGenericTests._testRecvmsg�
������#�rc��URUR[[5SS5upp4UR	U[5 URX@R5 UR	U/5 URUSS9 g)NrTr�r�r�s     r�testRecvmsgExplicitDefaults�/RecvmsgGenericTests.testRecvmsgExplicitDefaults�
si��$(�N�N�4�>�>�36�s�8�Q��%C�!��e�����c�"�� � ��}�}�5�����"�%�����4��(rc�.�UR[5 grr�r�s r�_testRecvmsgExplicitDefaults�0RecvmsgGenericTests._testRecvmsgExplicitDefaults�
r�rc��URUR[[5S-5upp4UR	U[5 URX@R5 UR	U/5 URUSS9 g)NrTr�r�r�s     r�testRecvmsgShorter�&RecvmsgGenericTests.testRecvmsgShorter�
si��$(�N�N�4�>�>�36�s�8�b�=�%B�!��e�����c�"�� � ��}�}�5�����"�%�����4��(rc�.�UR[5 grr�r�s r�_testRecvmsgShorter�'RecvmsgGenericTests._testRecvmsgShorter�
r�rc��URUR[[5S-
5upp4UR	U[SS5 URX@R5 UR	U/5 URUSS9 g)NrQ���Fr�r�r�s     r�testRecvmsgTrunc�$RecvmsgGenericTests.testRecvmsgTrunc�
so��$(�N�N�4�>�>�36�s�8�a�<�%A�!��e�����c�#�2�h�'�� � ��}�}�5�����"�%�����5��)rc�.�UR[5 grr�r�s r�_testRecvmsgTrunc�%RecvmsgGenericTests._testRecvmsgTrunc�
r�rc��URUR[[5S5upp4UR	U[5 URX@R5 UR	U/5 URUSS9 g)Nr
Tr�r�r�s     r�testRecvmsgShortAncillaryBuf�0RecvmsgGenericTests.testRecvmsgShortAncillaryBuf�
sg��$(�N�N�4�>�>�36�s�8�Q�%@�!��e�����c�"�� � ��}�}�5�����"�%�����4��(rc�.�UR[5 grr�r�s r�_testRecvmsgShortAncillaryBuf�1RecvmsgGenericTests._testRecvmsgShortAncillaryBuf�
r�rc��URUR[[5S5upp4UR	U[5 URX@R5 UR	U/5 URUSS9 g)N�(Tr�r�r�s     r�testRecvmsgLongAncillaryBuf�/RecvmsgGenericTests.testRecvmsgLongAncillaryBuf�
sg��$(�N�N�4�>�>�36�s�8�U�%D�!��e�����c�"�� � ��}�}�5�����"�%�����4��(rc�.�UR[5 grr�r�s r�_testRecvmsgLongAncillaryBuf�0RecvmsgGenericTests._testRecvmsgLongAncillaryBuf�
r�rc��URR5 UR[URURS5 grP)rrDrFr<r�r�s r�testRecvmsgAfterClose�)RecvmsgGenericTests.testRecvmsgAfterClose�
s.�����������'�4�>�>�4�>�>�4�Hrc��grrr�s r�_testRecvmsgAfterClose�*RecvmsgGenericTests._testRecvmsgAfterClose�
r�rc� �URRS5 UR[URUR[[55 URR5 g!URR5 f=f)Nr)	rrBrFr�r�r�rVr�r�r�s r�testRecvmsgTimeout�&RecvmsgGenericTests.testRecvmsgTimeout�
s`��	"��N�N�%�%�d�+����l�"�n�n�d�n�n�c�#�h�
H�
�O�O���!��D�O�O���!�s�AA1�1B
c�h�URURRURS95 g�Nrz)rr�r�r�r�s r�_testRecvmsgTimeout�'RecvmsgGenericTests._testRecvmsgTimeout�
s&��������,�,�T�5F�5F�,�G�Hrr�c	�j�URUR[[5S-
S[R
5upp4UR
U[SS5 URX@R5 UR
U/5 URUS[[SS5S9 URUR[[5S[R
5upp4UR
U[5 URX@R5 UR
U/5 URUSS9 URUR[[55upp4UR
U[5 URX@R5 UR
U/5 URUSS9 g)	NrQrr�Fr��r�r�Tr�)r�rr�rVr7r�rUr�r-r�r�r�s     r�testRecvmsgPeek�#RecvmsgGenericTests.testRecvmsgPeek�
sa��%)�N�N�4�>�>�36�s�8�a�<��39�?�?�%D�!��e�	
����c�#�2�h�'�� � ��}�}�5�����"�%�
	
����5�&�v�{�A�>�	�	@�%)�N�N�4�>�>�36�s�8�Q�39�?�?�%D�!��e�	
����c�"�� � ��}�}�5�����"�%�����4��(�%)�N�N�4�>�>�3�s�8�$L�!��e�����c�"�� � ��}�}�5�����"�%�����4��(rc�.�UR[5 grr�r�s r�_testRecvmsgPeek�$RecvmsgGenericTests._testRecvmsgPeeks�����#�rr�c�L�URRUR5 URUR[	[
55upp4UR
U[
5 URX@R5 UR
U/5 URUSS9 gr�)
rrBr�r�r�rVrUr�r-r�r�s     r�testRecvmsgFromSendmsg�*RecvmsgGenericTests.testRecvmsgFromSendmsgs{��	
���!�!�$�"3�"3�4�$(�N�N�4�>�>�3�s�8�$L�!��e�����c�"�� � ��}�}�5�����"�%�����4��(rc��URUR[SS[SS/5[[55 grDr%r�s r�_testRecvmsgFromSendmsg�+RecvmsgGenericTests._testRecvmsgFromSendmsg!s2������-�-�s�2�A�w��A�B��.@�A�3�s�8�LrrN)r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�rr7r�rr�r�r�r�rrrr�r��
s���)��)��)��*��)��)��I�

�"�I��&�*�%� )�&� )�D� � ��!���&�-�-��+�)�,�)��'�'�M�(�Mrr�c�,�\rSrSrSrSrSrSrSrg)�RecvmsgGenericStreamTestsi&c���URURS5upp4URUS5 URX@R5 URU/5 URUSS9 g)NrQrr�)r�rrUr�r-r�r�s     r�testRecvmsgEOF�(RecvmsgGenericStreamTests.testRecvmsgEOF*s]��$(�N�N�4�>�>�4�$H�!��e�����c�"�� � ��}�}�5�����"�%�����4��(rc�8�URR5 gr)r�rDr�s r�_testRecvmsgEOF�)RecvmsgGenericStreamTests._testRecvmsgEOF2s���
�
���rc���URUR[[5S-
5upp4UR	X@R
5 UR
U/5 URUSS9 URURS5upRp4UR	X@R
5 UR
U/5 URUSS9 X-nUR
U[5 g)NrQFr�rQT)r�rr�rVr�r-rUr�)r�rRr�r�rirSrWs       r�testRecvmsgOverflow�-RecvmsgGenericStreamTests.testRecvmsgOverflow5s���%)�^�^�D�N�N�47��H�q�L�&B�"��u�� � ��}�}�5�����"�%�����5��)�%)�^�^�D�N�N�D�%I�"��u�� � ��}�}�5�����"�%�����4��(��k������c�"rc�.�UR[5 grr�r�s r�_testRecvmsgOverflow�.RecvmsgGenericStreamTests._testRecvmsgOverflowEr�rrN)	r�r�r�r�r�r�r�r�r�rrrr�r�&s��)��#� rr�c� �\rSrSrSrSrSrg)�RecvmsgTestsiIc��UR[URR5 UR[URRSSS5 UR[URR[[5SS5 UR[URR[S5/SS5 UR[URR[5SS5 UR[URR[[5[5S5 UR[URR[[5S[55 URR[[5SS5upp4URU[5 URX@R5 URU/5 URUSS9 g)Nr�rrTr�)
rFr�rr�rr�rVrNrOrUr�r-r�r�s     r�testRecvmsgBadArgs�RecvmsgTests.testRecvmsgBadArgsLsk�����)�T�^�^�%;�%;�<����*�d�n�n�&<�&<��a��	$����*�d�n�n�&<�&<��c�(�B��	+����)�T�^�^�%;�%;�$�R�=�/�1�a�	1����)�T�^�^�%;�%;� �(�A�q�	*����)�T�^�^�%;�%;��c�(�F�H�a�	1����)�T�^�^�%;�%;��c�(�A�v�x�	1�%)�N�N�$:�$:�3�s�8�Q��$J�!��e�����c�"�� � ��}�}�5�����"�%�����4��(rc�.�UR[5 grr�r�s r�_testRecvmsgBadArgs� RecvmsgTests._testRecvmsgBadArgsbr�rrN)r�r�r�r�r�r�r�rrrr�r�Is��)�,rr�c�D�\rSrSrSrSrSrSrSrSr	Sr
S	rS
rg)�RecvmsgIntoTestsifc��[[[55nUR[UR
R5 UR[UR
R[[5SS5 UR[UR
RUSS5 UR[UR
R[5/SS5 UR[UR
RS/SS5 UR[UR
RU[5/SS5 UR[UR
RU/SS5 UR[UR
RU/[5S5 UR[UR
RU/S[55 UR
R
U/SS5up#pEURU[[55 URU[[55 URXPR5 URU/5 URUSS9 g)NrsI'm not writabler�Tr�)
rNr�rVrFr�rr�rOrrUr�r-r��r�r��nbytesr�r�ris      r�testRecvmsgIntoBadArgs�'RecvmsgIntoTests.testRecvmsgIntoBadArgsis�����C��!�����)�T�^�^�%@�%@�A����)�T�^�^�%@�%@��c�(�A�q�	*����)�T�^�^�%@�%@��q�!�	%����)�T�^�^�%@�%@�!�8�*�a��	,����)�T�^�^�%@�%@�.�/��A�	7����)�T�^�^�%@�%@����/�1�a�	1����*�d�n�n�&A�&A��%��Q�	(����)�T�^�^�%@�%@��%���1�	.����)�T�^�^�%@�%@��%��F�H�	.�(,�~�~�'B�'B�C�5�!�Q�'O�$��������S��*�����i��n�-�� � ��}�}�5�����"�%�����4��(rc�.�UR[5 grr�r�s r�_testRecvmsgIntoBadArgs�(RecvmsgIntoTests._testRecvmsgIntoBadArgs�r�rc�v�[[[55nURR	SU455up#pEURU[[55 URU[[55 UR
XPR5 URU/5 URUSS9 g)Nc3�$# �UHov� M g7frrrs  rr�<RecvmsgIntoTests.testRecvmsgIntoGenerator.<locals>.<genexpr>�s�����1�Q��r
Tr�)	rNr�rVrr�rUr�r-r�r�s      r�testRecvmsgIntoGenerator�)RecvmsgIntoTests.testRecvmsgIntoGenerator�s�����C��!��'+�~�~�'B�'B�����( �$��������S��*�����i��n�-�� � ��}�}�5�����"�%�����4��(rc�.�UR[5 grr�r�s r�_testRecvmsgIntoGenerator�*RecvmsgIntoTests._testRecvmsgIntoGenerator�r�rc��[R"SS/[[5-5nURR	U/5up#pEURU[[55 URUR
5[5 URXPR5 URU/5 URUSS9 g)Nr<rTr�)
r=r�rVrr�rU�tobytesr�r-r�r�s      r�testRecvmsgIntoArray�%RecvmsgIntoTests.testRecvmsgIntoArray�s����k�k�#��s�S��X�~�.��'+�~�~�'B�'B�C�5�'I�$��������S��*���������,�� � ��}�}�5�����"�%�����4��(rc�.�UR[5 grr�r�s r�_testRecvmsgIntoArray�&RecvmsgIntoTests._testRecvmsgIntoArray�r�rc���[S5n[S5n[S5nURRU[U5SSU/5upEpgUR	U[S55 UR	U[S55 UR	U[S55 UR	U[S	55 UR
XpR5 UR	U/5 URUS
S9 g)Ns----s
0123456789s--------------r4�	�Mary had a little lambsMarys
01 had a 9slittle lamb---Tr�)	rNrr��
memoryviewrUr�r�r-r�)r��b1�b2�b3r�r�r�ris        r�testRecvmsgIntoScatter�'RecvmsgIntoTests.testRecvmsgIntoScatter�s���
�w�
��
�}�
%��
�(�
)��'+�~�~�'B�'B�
��B���!�$�b�)�(+�$��������%>�!?�@�����Y�w�/�0�����Y�}�5�6�����Y�'8�9�:�� � ��}�}�5�����"�%�����4��(rc�&�URS5 g)Nr)r�r�s r�_testRecvmsgIntoScatter�(RecvmsgIntoTests._testRecvmsgIntoScatter�s�����3�4rrN)
r�r�r�r�r�r�rrrrrrr�rrrr�r�fs*��)�8�	)��)��
)�5rr�c��\rSrSrSSKr\"S\R5r\	"\
S5S5r\	"\
S5S5rS	r
g!\a SrN+f=f)
�CmsgMacroTestsi�rNi����CMSG_LENc��UR[R"S5-
S-n[[	S55[[	US-
U55-nUR[R"S5[R"S5RS-5 UH]n[R"U5nURU[R"S5-
U5 URX@R5 M_ UR[[RS5 UR[[RU5 UR[[R[R5 g)Nrr
�r�r4r�)�socklen_t_limitr7r�listr�r�r=�itemsizerUr�rFr�r{�maxsize)r��toobigr>�n�rets     r�testCMSG_LEN�CmsgMacroTests.testCMSG_LEN�s���%�%�����(:�:�Q�>���e�C�j�!�D��v��|�V�)D�$E�E��	
���6�?�?�1�-�u�{�{�3�/?�/H�/H�1�/L�M��A��/�/�!�$�C����S�6�?�?�1�#5�5�q�9�� � ��&:�&:�;�	�	
���-����"�=�	
���-����&�A����-����#�+�+�FrrZc��UR[R"S5-
S-n[(a[R
"5S:XaUS-n[
[S55[
[US-
U55-n[R"S5nURU[R"S5RS-5 UH�n[R"U5nURXS5 URU[R"U55 URXT[R"S5-5 URXPR5 UnM� UR[[RS5 UR[[RU5 UR[[R[ R"5 g)	Nr
�sparcrQrrr�r4r�)rr7rZ�SOLARISr|�	processorrr�r�r=r r�rr�rFr�r{r!)r�r"r>�lastr#r$s      r�testCMSG_SPACE�CmsgMacroTests.testCMSG_SPACE�sa���%�%��(9�(9�!�(<�<�q�@���7�x�)�)�+�w�6�
�a�K�F��e�C�j�!�D��v��|�V�)D�$E�E��� � ��#�����4����S�!1�!:�!:�Q�!>�?��A��#�#�A�&�C��#�#�C�.��#�#�C�����);�<��#�#�C�V�_�_�Q�-?�)?�@�� � ��&:�&:�;��D�
�	
���-��):�):�B�?�	
���-��):�):�F�C����-��):�):�C�K�K�Hrr)r�r�r�r�r��minr�rrDrr7r%r,r�rrrrr�sl��=���j�)�*;�*;�<���&�*�%�G�&�G�(�&�,�'�I�(�I��7�%�$��%�s�A�A�
Arc��\rSrSrSrSrSrSrSrSr	S8Sjr
S	rS
rSr
Sr\"\S
5S5r\R$S5rSrSr\R."\S5\R."\S5\R."\S5\"\S
5S5555r\R$\R."\S5\R."\S5\R."\S5S5555r\R."\S5\R."\S5\R."\S5\"\S
5S5555r\R$\R."\S5\R."\S5\R."\S5S5555rSr\R."\S5S5r Sr!Sr"Sr#\"\S
5S5r$\$R$S5r%S9S jr&\'"\(RRS!:HS"5S#5r*\*R$S$5r+\'"\(RRS!:HS"5S%5r,\,R$S&5r-\'"\(RRS!:HS"5S'5r.\.R$S(5r/\'"\(RRS!:HS"5S)5r0\0R$S*5r1\'"\(RRS!:HS"5S+5r2\2R$S,5r3S9S-jr4\'"\(RRS!:HS"5S.5r5\5R$S/5r6\'"\(RRS!:HS"5S05r7\7R$S15r8\'"\(RRS!:HS"5S25r9\9R$S35r:\'"\(RRS!:HS"5S45r;\;R$S55r<S6r=g7):�
SCMRightsTesti�i����c�Z�/n[U5H�n[R"5upEUR[R
U5 UR[RU5 [R"U[U5R55 URU5 M� U$r)r�rw�mkstempr�rOr�rD�writerr��append)r�r#�fdsr�r@r�s      r�newFDs�SCMRightsTest.newFDs�su�����q��A��'�'�)�H�B��O�O�B�I�I�t�,��O�O�B�H�H�b�)��H�H�R��Q�����)��J�J�r�N���
rc���[U5Hiup#[R"US[R5 UR	[R
"US5[
U5R55 Mk g)NrrQ)�	enumeraterO�lseek�SEEK_SETrUrhrr�)r�r5r#r@s    r�checkFDs�SCMRightsTest.checkFDs	sM���s�^�E�A��H�H�R��B�K�K�(����R�W�W�R��.��A��
�
��@�$rc�<�URURU5 gr)r��closeRecvmsgFDsr�s  rr��#SCMRightsTest.registerRecvmsgResults������,�,�f�5rc	�P�USH�up#nU[R:XdMU[R:XdM2[R"S5nUR	US[U5[U5UR--
5 UHn[R"U5 M M� g)Nr
r�)	r7rZr�r=�	frombytesr�r rOrD)r��recvmsg_result�
cmsg_level�	cmsg_type�	cmsg_datar5r@s       rr?�SCMRightsTest.closeRecvmsgFDss���1?�q�0A�,�J�9��f�/�/�/���!2�!2�2��k�k�#�&���
�
�i�)I��I��#�i�.�3�<�<�*G�H�J�K��B��H�H�R�L��
1Brc
���URUR[/[R[R
[R"SURU554/5[[55 g)Nr�)	rUr�rVr7rZr�r=r6r�)r�r#s  r�createAndSendFDs�SCMRightsTest.createAndSendFDssb��	
���� � �#��#)�#4�#4�#)�#4�#4�#(�;�;�s�D�K�K��N�#C�#E�"F�
G�
��H�	rc���UupVpxURU[5 URX�R5 UR	US[
RUS9 URU[5 UR[U5U5 [R"S5n	UH�n
URU
[5 U
up�n
URU[
R5 URU[
R5 URU
[5 UR[U
5[ -S5 U	R#U
5 M� UR[U	5U5 UR%U	5 g)NT�r�r�r�r�r)rUrVr�r-r�r7r�r(rr�r�r=�tuplerZr�r,�
SIZEOF_INTrBr<)r��numfdsr��maxcmsgs�ignoreflagsrWr�r�rir5�itemrDrErFs              r�checkRecvmsgFDs�SCMRightsTest.checkRecvmsgFDs)s+��%+�!��e�����c�"�� � ��}�}�5�����4�F�4E�4E�*�	�	,�	
���g�t�,����S��\�8�4��k�k�#����D��!�!�$��.�/3�,�J�9����Z��):�):�;����Y��(9�(9�:��!�!�)�U�3����S��^�j�8�!�<��M�M�)�$��	
����S��6�*��
�
�c�rc	�x�URSURUR[[5S55 g)Nr
r��rSr�rr�rVr�s r�testFDPassSimple�SCMRightsTest.testFDPassSimpleD�.�����Q����t�~�~�/2�3�x��!@�	Arc
��URUR[/[R[R
[R"SURS55R54/5[[55 g)Nr�r
)
rUr�rVr7rZr�r=r6rr�r�s r�_testFDPassSimple�SCMRightsTest._testFDPassSimpleIsh������ � ����#�#��#�#��+�+�c�4�;�;�q�>�2�:�:�<�>�?�
@�

��H�
	rc	�x�URSURUR[[5S55 g)NrPr�rVr�s r�testMultipleFDPass� SCMRightsTest.testMultipleFDPassRrYrc�&�URS5 g�NrP�rIr�s r�_testMultipleFDPass�!SCMRightsTest._testMultipleFDPassW������a� rrZc��URSURUR[[5[
R"S[-555 gra)rSr�rr�rVr7rZrNr�s r�testFDPassCMSG_SPACE�"SCMRightsTest.testFDPassCMSG_SPACEZs@��	
���
�t�~�~�d�n�n�c�#�h�$�/�/��J��?�A�	Brc�&�URS5 grarbr�s r�_testFDPassCMSG_SPACE�#SCMRightsTest._testFDPassCMSG_SPACEa������a� rc���URSURUR[[5[
R"S[-55[
RS9 g)Nr
rP�rQ)	rSr�rr�rVr7rrNr�r�s r�testFDPassCMSG_LEN� SCMRightsTest.testFDPassCMSG_LENesK�����Q�!�^�^�D�N�N�C��H�,2�O�O�A�
�N�,K�M�
*0�):�):�
	�	<rc�&�URS5 gr�rbr�s r�_testFDPassCMSG_LEN�!SCMRightsTest._testFDPassCMSG_LENorerzskipping, see issue #12958zskipping, see gh-91214zskipping, see issue #22397c	�v�URSURUR[[5S5SS9 g)Nr4r�)rPrVr�s r�testFDPassSeparate� SCMRightsTest.testFDPassSeparaters4��	
���Q�!�^�^�D�N�N�C��H�e�L�&'�	�	)rc�j�URS5upURUR[/[R
[R[R"SU/54[R
[R[R"SU/54/5[[55 g�Nr4r��	r6rUr�rVr7rZr�r=r��r��fd0�fd1s   r�_testFDPassSeparate�!SCMRightsTest._testFDPassSeparate}���
�;�;�q�>������� � �#��&�*;�*;�*0�*;�*;�*/�+�+�c�C�5�*A�*C�+1�*;�*;�*0�*;�*;�*/�+�+�c�C�5�*A�*C�)D�
E�
��H�	rc��SnURUURUR[[5[
R"[5[
R"[U-5-5S[
RS9 g)Nr4)rPrQ)
rSr�rr�rVr7rZrNrr�)r��num_fdss  r�testFDPassSeparateMinSpace�(SCMRightsTest.testFDPassSeparateMinSpace�sj�������W�!�^�^�D�N�N�C��H�,2�,=�,=�j�,I�,2�O�O�J��<P�,Q�-R�S�'(�V�5F�5F�		�	Hrc�j�URS5upURUR[/[R
[R[R"SU/54[R
[R[R"SU/54/5[[55 grxryrzs   r�_testFDPassSeparateMinSpace�)SCMRightsTest._testFDPassSeparateMinSpace�rrc���URU/U5nURU[
U55 g![a<nURUR[5 URU/5nSnAN]SnAff=fr)r�r<r(r@r�rUr�)r�rWr�r�r�s     r�sendAncillaryIfPossible�%SCMRightsTest.sendAncillaryIfPossible�si��	1��)�)�3�%��9�F�
	
�����S��*��	�	1��!�!�!�'�'�3�/��)�)�3�%�0�F��	1�s�1�
A7�2A2�2A7c	��URSURUR[[5S5[
RS9 g)Nrr�rn)rSr�rr�rVr7r�r�s r�testFDPassEmpty�SCMRightsTest.testFDPassEmpty�s=��	
���Q����t�~�~�/2�3�x��!@�)/�):�):�	�	<rc�p�UR[[R[RS4/5 g�Nr)r�rVr7rZr�r�s r�_testFDPassEmpty�SCMRightsTest._testFDPassEmpty�s0���$�$�S�F�,=�,=�,2�,=�,=�,/�,1�+2�	3rc�
�URUR[[5S5upp4UR	U[5 URX@R5 URUS[RS9 UR[U5S5 UHeupVnUR	U[R5 UR	U[R5 UR[U5[5 Mg g)Nr�Tr�r
)r�rr�rVrUr�r-r�r7r�r�rZr��
assertLessrN�r�rWr�r�rirDrErFs        r�testFDPassPartialInt�"SCMRightsTest.testFDPassPartialInt�s���$(�N�N�4�>�>�36�s�8�U�%D�!��e�����c�"�� � ��}�}�5�����4��0A�0A��B����S��\�1�-�07�,�J�9����Z��):�):�;����Y��(9�(9�:��O�O�C�	�N�J�7�18rc	���UR[[R[R[
R
"SUR/5R5SS4/5 g)Nr�r�)r�rVr7rZr�r=�badfdrr�s r�_testFDPassPartialInt�#SCMRightsTest._testFDPassPartialInt�sS���$�$���������k�k�#��
�
�|�,�4�4�6�s��;�=�
>�	?rc	��URUR[[5S5upp4UR	U[5 URX@R5 URUS[RS9 UR[U5S5 [R"S5nUH|upgnUR	U[R5 UR	U[R5 URUS[U5[U5UR--
5 M~ UR[U5S5 UR!U5 g)Nr�Tr�r4r�)r�rr�rVrUr�r-r�r7r�r�r=rZr�rBr r<)	r�rWr�r�rir5rDrErFs	         r�testFDPassPartialIntInMiddle�*SCMRightsTest.testFDPassPartialIntInMiddle�s��%)�N�N�4�>�>�36�s�8�U�%D�!��e�����c�"�� � ��}�}�5�����4��0A�0A��B����S��\�1�-��k�k�#���07�,�J�9����Z��):�):�;����Y��(9�(9�:��M�M�)�%E��	�N�c�)�n�s�|�|�&C�D�F�
G�18�
	
���S��X�q�)��
�
�c�rc
�d�URS5upUR[[R[R
[R"SXR/5R5SS4[R[R
[R"SU/54/5 g)Nr4r�r�)	r6r�rVr7rZr�r=r�rrzs   r�_testFDPassPartialIntInMiddle�+SCMRightsTest._testFDPassPartialIntInMiddle�s����;�;�q�>����$�$���������k�k�#��Z�Z�0�1�9�9�;�C�R�@�B��������k�k�#��u�%�'�
(�	)rc���Uup4pVURU[5 URX`R5 URU/5 UR	US[
RUS9 g)NT�r�r�r�)rUrVr�r-r�r7r�)r�r�rQrWr�r�ris       r�checkTruncatedHeader�"SCMRightsTest.checkTruncatedHeader�s`��%+�!��e�����c�"�� � ��}�}�5�����"�%�����4�&�2C�2C�*�	�	,rrvz#80931c��URURUR[[55[
RS9 g�Nrn�r�r�rr�rVr7r�r�s r�testCmsgTruncNoBufSize�$SCMRightsTest.testCmsgTruncNoBufSize�s8��	
�!�!�$�.�.�����S��"J�/5�.?�.?�		"�	Arc�&�URS5 gr�rbr�s r�_testCmsgTruncNoBufSize�%SCMRightsTest._testCmsgTruncNoBufSizerlrc��URURUR[[5S5[
RS9 g)Nrrnr�r�s r�testCmsgTrunc0�SCMRightsTest.testCmsgTrunc0s8��	
�!�!�$�.�.�����S��1�"M�.4�.?�.?�	"�	Arc�&�URS5 gr�rbr�s r�_testCmsgTrunc0�SCMRightsTest._testCmsgTrunc0rlrc�v�URURUR[[5S55 gr�)r�r�rr�rVr�s r�testCmsgTrunc1�SCMRightsTest.testCmsgTrunc1s%���!�!�$�.�.�����S��1�"M�Nrc�&�URS5 gr�rbr�s r�_testCmsgTrunc1�SCMRightsTest._testCmsgTrunc1rlrc��URURUR[[5[
S-55 gr�)r�r�rr�rVrNr�s r�testCmsgTrunc2Int�SCMRightsTest.testCmsgTrunc2Int!s2��
	
�!�!�$�.�.�����S��1;�a��#A�	Brc�&�URS5 gr�rbr�s r�_testCmsgTrunc2Int� SCMRightsTest._testCmsgTrunc2Int)rlrc	��URURUR[[5[
R"S5S-
55 gr�)r�r�rr�rVr7rr�s r�testCmsgTruncLen0Minus1�%SCMRightsTest.testCmsgTruncLen0Minus1-s:���!�!�$�.�.�����S��17����1C�a�1G�#I�	Jrc�&�URS5 gr�rbr�s r�_testCmsgTruncLen0Minus1�&SCMRightsTest._testCmsgTruncLen0Minus12rlrc�P�[5 URUR[[5U5upEpgSSS5 URW[5 UR
WUR5 URWS[RS9 US:XaW/:XagUR[W5S5 USup�n
URU[R5 URU	[R5 UR[U
5U5 UR[U
5U5 [R"S5nUR!U
S[U
5[U
5UR"--
5 UR%U5 g!,(df   GNd=f)NT�r�r�rr
r�)r�r�rr�rVrUr�r-r�r7r�rZr�r�r�r=rBr r<)r��ancbuf�maxdata�mindatarWr�r�rirDrErFr5s            r�checkTruncatedArray�!SCMRightsTest.checkTruncatedArray9sM��
.�
/�(,���t�~�~�7:�3�x��)I�%�C�%�0�	
����c�"�� � ��t�}�}�5�����4�&�2C�2C��D��a�<�G�r�M������W��q�)�+2�1�:�(�
�y�����V�%6�%6�7�����F�$5�$5�6�����I���8����S��^�W�5��k�k�#����
�
�i�!A��I��#�i�.�3�<�<�"?�@�B�	C��
�
�c��%0�
/�s�.F�
F%c�L�UR[R"S5SS9 g)Nr�r�r��r�r7rr�s r�testCmsgTruncLen0�SCMRightsTest.testCmsgTruncLen0Rs��� � �����(:�A� �Frc�&�URS5 gr�rbr�s r�_testCmsgTruncLen0� SCMRightsTest._testCmsgTruncLen0Vrlrc�R�UR[R"S5S-SS9 g)Nrr
r�r�r�s r�testCmsgTruncLen0Plus1�$SCMRightsTest.testCmsgTruncLen0Plus1Zs#��� � �����(:�Q�(>�� �Jrc�&�URS5 gr�rbr�s r�_testCmsgTruncLen0Plus1�%SCMRightsTest._testCmsgTruncLen0Plus1^rlrc�\�UR[R"[5[S9 g)Nr��r�r7rrNr�s r�testCmsgTruncLen1�SCMRightsTest.testCmsgTruncLen1bs#��� � ����
�(C�)3�	!�	5rc�&�URS5 gr�rbr�s r�_testCmsgTruncLen1� SCMRightsTest._testCmsgTruncLen1grlrc�t�UR[R"S[-5S-
S[-S-
S9 g)Nr4r
r�r�r�s r�testCmsgTruncLen2Minus1�%SCMRightsTest.testCmsgTruncLen2Minus1ls5��� � �����J��(G�!�(K�*+�j�.�A�)=�	!�	?rc�&�URS5 gr�rbr�s r�_testCmsgTruncLen2Minus1�&SCMRightsTest._testCmsgTruncLen2Minus1qrlrrN)r
r�r)>r�r�r�r�r�r6r<r�r?rIrSrWr[r^rcrr7rgrrjrorrr"r�rr)rrur}r�r�r�r�r�r�r�r�r�r�r0r{r|r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�rrrr0r0�s���
�E�
�A�6�
!���6A�
�A�
!��&�,�'�B�(�B��%�%�!�&�!�<�!��_�_�X�;�<�
�_�_�W�6�7�
�_�_�S�6�7��&�,�'�)�(�8�8�=�)��#�#�
�_�_�X�;�<�
�_�_�W�6�7�
�_�_�S�6�7�	�8�8�=�$�	��_�_�X�;�<�
�_�_�W�6�7�
�_�_�S�6�7��&�,�'�H�(�8�8�=�H� �+�+�
�_�_�X�;�<�
�_�_�W�6�7�
�_�_�S�6�7�	�8�8�=�,�	�	+��_�_�X�;�<�<�=�<�3�
8�?��&�,�'��(��$"�-�-�	)�.�	)�,��C�L�L�H�4�h�?�A�@�A��'�'�!�(�!��C�L�L�H�4�h�?�A�@�A�
���!� �!��C�L�L�H�4�h�?�O�@�O����!� �!��C�L�L�H�4�h�?�B�@�B��"�"�!�#�!��C�L�L�H�4�h�?�J�@�J��(�(�!�)�!��2�C�L�L�H�4�h�?�G�@�G��"�"�!�#�!��C�L�L�H�4�h�?�K�@�K��'�'�!�(�!��C�L�L�H�4�h�?�5�@�5��"�"�!�#�!��C�L�L�H�4�h�?�?�@�?��(�(�!�)�!rr0c	���\rSrSrSrSrSrS5Sjr\"\	SS5S5r
\
RS	5r\"\	S
SS5S5r
\
RS5r\"\	RS
5\"\	SS5S55r\RS5rS5Sjr\"\	SSSS5S5r\RS5r\"\	S
SSSS5S5r\RS5r\"\	RS
5\"\	S
SSSS5S55r\RS5r\"\	RS
5\"\	S
SSSS5S55r\RS5rS6Sjr\"\	SS5S5r\RS5r\"\	SS5S5r\RS5r\"\	SS5S 5r\RS!5r \"\	SS5S"5r!\!RS#5r"\"\	SS5S$5r#\#RS%5r$\"\	SS5S&5r%\%RS'5r&S6S(jr'\"\	S
SSSS5S)5r(\(RS*5r)\"\	S
SSSS5S+5r*\*RS,5r+\"\	S
SSSS5S-5r,\,RS.5r-\"\	S
SSSS5S/5r.\.RS05r/\"\	S
SSSS5S15r0\0RS25r1S3r2g4)7�RFC3542AncillaryTestivr4r�c�R�0nUHup4nURX44U5 XRX44'M  U$r)r2)r�r��drDrErFs      r�ancillaryMapping�%RFC3542AncillaryTest.ancillaryMapping�s=��
��07�,�J�9����j�4�a�8�)2�z�%�&�18��rc��URR[R[RS5 UR
R
5 URUR[[5U5upEpgURU[5 URXpR5 URUS[RUS9 UR[U5S5 URUS[ 5 USup�n
URU[R5 URU	[R"5 URU
[$5 UR[U
5[&5 [(R("S5nUR+U
5 UR-USS5 UR/USU5 g)Nr
TrLrr�)rrvr7rar�r�r�r�r�rVrUr�r-r�r�r(rMr�r,rNr=rBr�r�)r��
ancbufsize�maxhoprQrWr�r�rirDrErFr)s            r�
checkHopLimit�"RFC3542AncillaryTest.checkHopLimit�sj��
	
���!�!�&�"5�"5�"(�":�":�A�	?�������$(�N�N�4�>�>�36�s�8�Z�%I�!��e�	
����c�"�� � ��}�}�5�����4�F�4E�4E�*�	�	,�	
����W��q�)����g�a�j�%�0�+2�1�:�(�
�y�����V�%8�%8�9�����F�$8�$8�9����i��/�����Y���4��K�K����	���I������!��a�(����Q�q�T�6�*rr�r�c�"�URSS9 g�Nr��r�)r�r�s r�testRecvHopLimit�%RFC3542AncillaryTest.testRecvHopLimit�s��	
���e��,rc��URURRURS95 UR	[
5 gr��rr�r�r�r�rVr�s r�_testRecvHopLimit�&RFC3542AncillaryTest._testRecvHopLimit�s6��
	
������,�,�T�5F�5F�,�G�H����#�rrZc�R�UR[R"[5S9 g)Nr�)r�r7rZrNr�s r�testRecvHopLimitCMSG_SPACE�/RFC3542AncillaryTest.testRecvHopLimitCMSG_SPACE�s ��	
���f�&7�&7�
�&C��Drc��URURRURS95 UR	[
5 gr�r�r�s r�_testRecvHopLimitCMSG_SPACE�0RFC3542AncillaryTest._testRecvHopLimitCMSG_SPACE��4��������,�,�T�5F�5F�,�G�H����#�rr�c�8�URSURS9 g�Nr�)r�r�)r��	hop_limitr�s r�testSetHopLimit�$RFC3542AncillaryTest.testSetHopLimit�s��
	
���e�D�N�N��Crc�P�URURRURS95 UR	UR[/[R[R[R"SUR/54/5[[55 g�Nrzr�)
rr�r�r�rUr�rVr7rar�r=r	r�r�s r�_testSetHopLimit�%RFC3542AncillaryTest._testSetHopLimit�s���������,�,�T�5F�5F�,�G�H����� � �#��#)�#6�#6��8L�8L�#(�;�;�s�T�^�^�4D�#E�#G�"H�
I�
��H�		rc��URR[R[RS5 URR[R[R
S5 URR5 URUR[[5U5upEpgURU[5 URXpR5 URUS[RUS9 UR[U5S5 UR!U5nU[R[R"4n	UR[U	5[$5 [&R&"S5n
U
R)U	5 UR+U
SS5 UR-U
SS5 U[R[R.4nUR[U5[$5 [&R&"S5n
U
R)U5 UR+U
SS5 UR-U
SU5 g)Nr
TrLr4r�rr*)rrvr7rar�r�r�r�r�r�rVrUr�r-r�r�r�rrNr=rBr�r�r�)r�r�r�rQrWr�r�ri�ancmap�tcdatar)�hldatas            r�checkTrafficClassAndHopLimit�1RFC3542AncillaryTest.checkTrafficClassAndHopLimit�s���	
���!�!�&�"5�"5�"(�":�":�A�	?����!�!�&�"5�"5�"(�"8�"8�!�	=�������$(�N�N�4�>�>�36�s�8�Z�%I�!��e�	
����c�"�� � ��}�}�5�����4�F�4E�4E�*�	�	,�����W��q�)��&�&�w�/����,�,�f�.@�.@�A�B������V��j�1��K�K����	���F������!��a�(����Q�q�T�3�'���,�,�f�.B�.B�C�D������V��j�1��K�K����	���F������!��a�(����Q�q�T�6�*rr�rc�"�URSS9 gr�)r	r�s r�testRecvTrafficClassAndHopLimit�4RFC3542AncillaryTest.testRecvTrafficClassAndHopLimit�s��	
�)�)�U�)�;rc��URURRURS95 UR	[
5 gr�r�r�s r� _testRecvTrafficClassAndHopLimit�5RFC3542AncillaryTest._testRecvTrafficClassAndHopLimitr	rc�X�UR[R"[5S-S9 g�Nr4r�)r	r7rZrNr�s r�)testRecvTrafficClassAndHopLimitCMSG_SPACE�>RFC3542AncillaryTest.testRecvTrafficClassAndHopLimitCMSG_SPACEs*��
	
�)�)��(�(��4�q�8�	*�	:rc��URURRURS95 UR	[
5 gr�r�r�s r�*_testRecvTrafficClassAndHopLimitCMSG_SPACE�?RFC3542AncillaryTest._testRecvTrafficClassAndHopLimitCMSG_SPACEr	rc�8�URSURS9 gr	�r	r	r�s r�testSetTrafficClassAndHopLimit�3RFC3542AncillaryTest.testSetTrafficClassAndHopLimits!��	
�)�)�U�15���	*�	Arc���URURRURS95 UR	UR[/[R[R[R"SUR/54[R[R[R"SUR/54/5[[55 gr	)rr�r�r�rUr�rVr7rarr=�
traffic_classr�r	r�r�s r�_testSetTrafficClassAndHopLimit�4RFC3542AncillaryTest._testSetTrafficClassAndHopLimits���������,�,�T�5F�5F�,�G�H����� � �#��#)�#6�#6��8J�8J�#(�;�;�s�T�5G�5G�4H�#I�#K�#)�#6�#6��8L�8L�#(�;�;�s�T�^�^�4D�#E�#G�"H�
I�

��H�
	rc�8�URSURS9 gr	r	r�s r�testOddCmsgSize�$RFC3542AncillaryTest.testOddCmsgSize)s!��	
�)�)�U�15���	*�	Arc��URURRURS95 UR	[
/[R[R[R"SUR/5R5S-4[R[R[R"SUR/54/5ng![a�nURUR ["5 UR	[
/[R[R[R"SUR/54[R[R[R"SUR/54/5nUR%U['[
55 SnAgSnAff=f)Nrzr�r)rr�r�r�r�rVr7rarr=r#	rr�r	r<r(r@r�rUr�)r�r�r�s   r�_testOddCmsgSize�%RFC3542AncillaryTest._testOddCmsgSize3s]��������,�,�T�5F�5F�,�G�H�	/��)�)����%�%�v�'9�'9��+�+�c�D�$6�$6�#7�8�@�@�B�W�L�N��%�%�v�';�';��+�+�c�D�N�N�#3�4�6�7�8�F���	/��!�!�!�'�'�3�/��)�)����%�%�v�'9�'9��+�+�c�D�$6�$6�#7�8�:��%�%�v�';�';��+�+�c�D�N�N�#3�4�6�7�8�F�
���V�S��X�.�.��	/�s�B(C�
G�'CG�Gc���URR[R[RS5 UR
R
5 UcSOU4nUR"UR[[5/UQ76upEpgURU[5 URXpR5 URU/5 URUS[RUS9 g)Nr
rTr�)rrvr7rar�r�r�r�r�rVrUr�r-r�r�)r�r�rQr$rWr�r�ris        r�checkHopLimitTruncatedHeader�1RFC3542AncillaryTest.checkHopLimitTruncatedHeaderIs���	
���!�!�&�"5�"5�"(�":�":�A�	?��������'�r�j�]��$(�N�N�4�>�>�36�s�8�%D�>B�%D�!��e�	
����c�"�� � ��}�}�5�����"�%�����4�&�2C�2C�*�	�	,rc�@�URS[RS9 g)N�r�rQ�r-	r7r�r�s rr��+RFC3542AncillaryTest.testCmsgTruncNoBufSize]s%��	
�)�)�T�
7=�6G�6G�	*�	Irc��URURRURS95 UR	[
5 gr�r�r�s rr��,RFC3542AncillaryTest._testCmsgTruncNoBufSizehr	rc�@�URS[RS9 g)Nrr0	r1	r�s r�testSingleCmsgTrunc0�)RFC3542AncillaryTest.testSingleCmsgTrunc0ms#��	
�)�)�Q�6<�6G�6G�	*�	Irc��URURRURS95 UR	[
5 gr�r�r�s r�_testSingleCmsgTrunc0�*RFC3542AncillaryTest._testSingleCmsgTrunc0tr	rc�"�URSS9 g)Nr
r�)r-	r�s r�testSingleCmsgTrunc1�)RFC3542AncillaryTest.testSingleCmsgTrunc1|s���)�)�Q�)�7rc��URURRURS95 UR	[
5 gr�r�r�s r�_testSingleCmsgTrunc1�*RFC3542AncillaryTest._testSingleCmsgTrunc1�r	rc�0�URS[-S9 gr	)r-	rNr�s r�testSingleCmsgTrunc2Int�,RFC3542AncillaryTest.testSingleCmsgTrunc2Int�s���)�)�Q��^�)�Drc��URURRURS95 UR	[
5 gr�r�r�s r�_testSingleCmsgTrunc2Int�-RFC3542AncillaryTest._testSingleCmsgTrunc2Int�r	rc�P�UR[R"S5S-
S9 g)Nrr
r�)r-	r7rr�s r�testSingleCmsgTruncLen0Minus1�2RFC3542AncillaryTest.testSingleCmsgTruncLen0Minus1�s!���)�)�V�_�_�Q�5G�!�5K�)�Lrc��URURRURS95 UR	[
5 gr�r�r�s r�_testSingleCmsgTruncLen0Minus1�3RFC3542AncillaryTest._testSingleCmsgTruncLen0Minus1�r	rc�8�URR[R[RS5 UR
R
5 [5 URUR[[5[R"[5S-
5upp4SSS5 URW[5 URWUR5 UR!WS[R"S9 UR%[W5S5 U(ahUSupVnURU[R5 URU[R&5 UR)[U5[5 gg!,(df   N�=f)Nr
Tr�r)rrvr7rar�r�r�r�r�r�rVrrNrUr�r-r�r�r�r�r�r�s        r�testSingleCmsgTruncInData�.RFC3542AncillaryTest.testSingleCmsgTruncInData�s$��
	
���!�!�&�"5�"5�"(�":�":�A�	?�������
-�
/�(,�������C��&�/�/�*�*E��*I�)K�%�C�%�0�	
����c�"�� � ��t�}�}�5�����4�&�2C�2C��D����S��\�1�-��/6�q�z�,�J�9����Z��)<�)<�=����Y��(<�(<�=��O�O�C�	�N�J�7�	�0�
/�s
�A	F�
Fc��URURRURS95 UR	[
5 gr�r�r�s r�_testSingleCmsgTruncInData�/RFC3542AncillaryTest._testSingleCmsgTruncInData�r	rc���URR[R[RS5 URR[R[R
S5 URR5 URUR[[5U5up4pVURU[5 URX`R5 URUS[RUS9 UR[U5S5 USupxn	URU[R5 UR!U[R"[R$15 UR[U	5[&5 [(R("S5n
U
R+U	5 UR-U
SS5 UR/U
SS5 g)Nr
Tr�rr�r*)rrvr7rar�r�r�r�r�r�rVrUr�r-r�r�r0rr�rNr=rBr�r�)r�r�rQrWr�r�rirDrErFr)s           r�checkTruncatedSecondHeader�/RFC3542AncillaryTest.checkTruncatedSecondHeader�st��	
���!�!�&�"5�"5�"(�":�":�A�	?����!�!�&�"5�"5�"(�"8�"8�!�	=�������$(�N�N�4�>�>�36�s�8�Z�%I�!��e�	
����c�"�� � ��}�}�5�����4�&�2C�2C�*�	�	,�	
����W��q�)�+2�1�:�(�
�y�����V�%8�%8�9��
�
�i�&�"4�"4�f�6J�6J�!K�L�����Y���4��K�K����	���I������!��a�(����Q�q�T�3�'rc�p�UR[R"[5[RS9 gr�)rT	r7rZrNr�r�s r�testSecondCmsgTrunc0�)RFC3542AncillaryTest.testSecondCmsgTrunc0�s.��	
�'�'��(9�(9�*�(E�4:�4E�4E�	(�	Grc��URURRURS95 UR	[
5 gr�r�r�s r�_testSecondCmsgTrunc0�*RFC3542AncillaryTest._testSecondCmsgTrunc0�r	rc�\�UR[R"[5S-5 gr��rT	r7rZrNr�s r�testSecondCmsgTrunc1�)RFC3542AncillaryTest.testSecondCmsgTrunc1�s"��	
�'�'��(9�(9�*�(E��(I�Jrc��URURRURS95 UR	[
5 gr�r�r�s r�_testSecondCmsgTrunc1�*RFC3542AncillaryTest._testSecondCmsgTrunc1�r	rc�j�UR[R"[5S[--5 gr�r]	r�s r�testSecondCmsgTrunc2Int�,RFC3542AncillaryTest.testSecondCmsgTrunc2Int�s+��	
�'�'��(9�(9�*�(E�()�J��)7�	8rc��URURRURS95 UR	[
5 gr�r�r�s r�_testSecondCmsgTrunc2Int�-RFC3542AncillaryTest._testSecondCmsgTrunc2Int�r	rc��UR[R"[5[R"S5-S-
5 gr�)rT	r7rZrNrr�s r�testSecondCmsgTruncLen0Minus1�2RFC3542AncillaryTest.testSecondCmsgTruncLen0Minus1�s9��	
�'�'��(9�(9�*�(E�(.����(:�);�=>�)?�	@rc��URURRURS95 UR	[
5 gr�r�r�s r�_testSecondCmsgTruncLen0Minus1�3RFC3542AncillaryTest._testSecondCmsgTruncLen0Minus1�r	rc	�r�URR[R[RS5 URR[R[R
S5 URR5 [5 URUR[[5[R"[5[R"[5-S-
5upp4SSS5 URW[5 UR!WUR"5 UR%WS[R&S9 [R([R*1nWR-S5upgnURU[R5 UR/U5 UR[U5[5 [0R0"S5n	U	R3U5 UR5U	SS5 UR7U	SS5 U(adUR-S5upgnURU[R5 UR/U5 UR9[U5[5 URU/5 g!,(df   GN�=f)Nr
Tr�rr�r*)rrvr7rar�r�r�r�r�r�r�rVrZrNrrUr�r-r�r�rr��pop�remover=rBr�r�r�)
r�rWr�r�ri�
cmsg_typesrDrErFr)s
          r�testSecondCmsgTruncInData�.RFC3542AncillaryTest.testSecondCmsgTruncInData�s���
	
���!�!�&�"5�"5�"(�":�":�A�	?����!�!�&�"5�"5�"(�"8�"8�!�	=�������
-�
/�(,�������C���!�!�*�-����
�0K�K�a�O�)Q�%�C�%�0�
	
����c�"�� � ��t�}�}�5�����4�&�2C�2C��D��(�(�&�*>�*>�?�
�+2�;�;�q�>�(�
�y�����V�%8�%8�9����)�$�����Y���4��K�K����	���I������!��a�(����Q�q�T�3�'��/6�{�{�1�~�,�J�9����Z��)<�)<�=����i�(��O�O�C�	�N�J�7�����"�%�50�
/�s
�A$J'�'
J6c��URURRURS95 UR	[
5 gr�r�r�s r�_testSecondCmsgTruncInData�/RFC3542AncillaryTest._testSecondCmsgTruncInData$r	rrN)r*rr�)3r�r�r�r�r	r#	r�r�rr7r�rr�r�r�r	r		r	r	r	r	r	r 	r$	r'	r*	r-	r�r�r6	r9	r<	r?	rB	rE	rH	rK	rN	rQ	rT	rW	rZ	r^	ra	rd	rg	rj	rm	rs	rv	r�rrrr�r�vs����I��M��+�8�&�-��?�-�@�-��!�!��"���&�,�(;�_�M�E�N�E� �+�+��,���&�-�-��+��&�-��?�D�@�,�D�
� � ��!��?B�12�"+�H�&�-��#�]�4�<�4�<�%�0�0��1���&�,�(;�_�#�]�4�:�4�:�/�:�:��;���&�-�-��+��&�,�(;�_�#�]�4�A�4�,�A�$�/�/��0���&�-�-��+��&�,�(;�_�#�]�4�A�4�,�A�� � �/�!�/�*,�(�&�-��?�I�@�I��'�'��(���&�-��?�I�@�I��%�%��&���&�-��?�8�@�8��%�%��&���&�-��?�E�@�E��(�(��)���&�-��?�M�@�M�#�.�.��/���&�-��?�8�@�8�,�*�*��+��(�@�&�,�(;�_�#�]�4�G�4�G��%�%��&���&�,�(;�_�#�]�4�K�4�K��%�%��&���&�,�(;�_�#�]�4�8�4�8��(�(��)���&�,�(;�_�#�]�4�@�4�@�#�.�.��/���&�,�(;�_�#�]�4�"&�4�"&�H�*�*��+�rr�c��\rSrSrSrg)�SendrecvmsgUDPTestBasei,rN�r�r�r�r�r�rrrry	ry	,���	rry	r�c��\rSrSrSrg)�SendmsgUDPTesti1rNrz	rrrr}	r}	1���rr}	r�c��\rSrSrSrg)�RecvmsgUDPTesti5rNrz	rrrr�	r�	5r~	rr�	r�c��\rSrSrSrg)�RecvmsgIntoUDPTesti9rNrz	rrrr�	r�	9r~	rr�	c��\rSrSrSrSrg)�SendrecvmsgUDP6TestBasei>c�4�URUSSUSS5 gr�r�r�s   rr��+SendrecvmsgUDP6TestBase.checkRecvmsgAddressB� ��	
����s���U�3�B�Z�0rrN�r�r�r�r�r�r�rrrr�	r�	>s��1rr�	rr�rKc��\rSrSrSrg)�SendmsgUDP6TestiGrNrz	rrrr�	r�	G���	rr�	c��\rSrSrSrg)�RecvmsgUDP6TestiMrNrz	rrrr�	r�	Mr�	rr�	c��\rSrSrSrg)�RecvmsgIntoUDP6TestiSrNrz	rrrr�	r�	Sr�	rr�	rac��\rSrSrSrg)�RecvmsgRFC3542AncillaryUDP6TestiYrNrz	rrrr�	r�	Y���	rr�	c��\rSrSrSrg)�#RecvmsgIntoRFC3542AncillaryUDP6TestiarNrz	rrrr�	r�	as��	rr�	c��\rSrSrSrg)�SendrecvmsgUDPLITETestBaseikrNrz	rrrr�	r�	ks��
	rr�	c��\rSrSrSrg)�SendmsgUDPLITETestirrNrz	rrrr�	r�	rr�	rr�	c��\rSrSrSrg)�RecvmsgUDPLITETestixrNrz	rrrr�	r�	xr�	rr�	c��\rSrSrSrg)�RecvmsgIntoUDPLITETesti~rNrz	rrrr�	r�	~r�	rr�	c��\rSrSrSrSrg)�SendrecvmsgUDPLITE6TestBasei�c�4�URUSSUSS5 gr�r�r�s   rr��/SendrecvmsgUDPLITE6TestBase.checkRecvmsgAddress�r�	rrNr�	rrrr�	r�	�s��1rr�	c��\rSrSrSrg)�SendmsgUDPLITE6Testi�rNrz	rrrr�	r�	�r�	rr�	c��\rSrSrSrg)�RecvmsgUDPLITE6Testi�rNrz	rrrr�	r�	�r�	rr�	c��\rSrSrSrg)�RecvmsgIntoUDPLITE6Testi�rNrz	rrrr�	r�	�r�	rr�	c��\rSrSrSrg)�#RecvmsgRFC3542AncillaryUDPLITE6Testi�rNrz	rrrr�	r�	�s��	rr�	c��\rSrSrSrg)�'RecvmsgIntoRFC3542AncillaryUDPLITE6Testi�rNrz	rrrr�	r�	�s��	rr�	c��\rSrSrSrg)�SendrecvmsgTCPTestBasei�rNrz	rrrr�	r�	�r~	rr�	c��\rSrSrSrg)�SendmsgTCPTesti�rNrz	rrrr�	r�	�r~	rr�	c��\rSrSrSrg)�RecvmsgTCPTesti�rNrz	rrrr�	r�	�r{	rr�	c��\rSrSrSrg)�RecvmsgIntoTCPTesti�rNrz	rrrr�	r�	�r{	rr�	c��\rSrSrSrg)�SendrecvmsgSCTPStreamTestBasei�rNrz	rrrr�	r�	�r{	rr�	z6IPPROTO_SCTP: [Errno 62] Protocol not supported on AIXr�rdr�c��\rSrSrSrg)�SendmsgSCTPStreamTesti�rNrz	rrrr�	r�	�r�	rr�	c�(^�\rSrSrU4SjrSrU=r$)�RecvmsgSCTPStreamTesti�c�>�[[U]5 g![a:nUR[R
:waeUR
S5 SnAgSnAff=f�Nz4sporadic ENOTCONN (kernel issue?) - see issue #13876)r�r�	r�r<r@�ENOTCONNr��r�r�r�s  �rr��$RecvmsgSCTPStreamTest.testRecvmsgEOF�sL���	R��'��=�?���	R��w�w�%�.�.�(���M�M�P�Q�Q��	R����
A�0A�Ar�r�r�r�r�r�r�r�r�s@rr�	r�	�����R�Rrr�	c�(^�\rSrSrU4SjrSrU=r$)�RecvmsgIntoSCTPStreamTesti�c�>�[[U]5 g![a:nUR[R
:waeUR
S5 SnAgSnAff=fr�	)r�r�	r�r<r@r�	r�r�	s  �rr��(RecvmsgIntoSCTPStreamTest.testRecvmsgEOF�sL���	R��+�T�A�C���	R��w�w�%�.�.�(���M�M�P�Q�Q��	R�r�	rr�	r�s@rr�	r�	�r�	rr�	c��\rSrSrSrg)�SendrecvmsgUnixStreamTestBasei�rNrz	rrrr�	r�	�r~	rr�	r�c��\rSrSrSrg)�SendmsgUnixStreamTesti�rNrz	rrrr�	r�	�r{	rr�	c��\rSrSrSrg)�RecvmsgUnixStreamTestirNrz	rrrr�	r�	r�	rr�	c��\rSrSrSrg)�RecvmsgIntoUnixStreamTestirNrz	rrrr�	r�	r�	rr�	rZr�c��\rSrSrSrg)�RecvmsgSCMRightsStreamTestirNrz	rrrr�	r�	r{	rr�	c��\rSrSrSrg)�RecvmsgIntoSCMRightsStreamTestirNrz	rrrr�	r�	r�	rr�	c�|^�\rSrSrU4Sjr\Rr\"\	S5(aSr
SrSrU=r
$Sr
SrSrU=r
$)	�InterruptedTimeoutBaseic��>�[TU]5 [R"[RS5nUR	[R[RU5 g)Nc��SS-$r�r)�signumrs  rr�.InterruptedTimeoutBase.setUp.<locals>.<lambda>'s���A�r)r�r�r�r�r�)r��orig_alrm_handlerr�s  �rr��InterruptedTimeoutBase.setUp$s>���
��
��"�M�M�&�.�.�*E�G������
�
�v�~�~�7H�Ir�	setitimerg�������?c�N�[R"[RU5 gr)r�r�	�ITIMER_REAL�r��secondss  r�setAlarm�InterruptedTimeoutBase.setAlarm3s�����V�/�/��9rr4c�0�[R"U5 gr)r�r�r�	s  rr�	r�	9s���L�L��!rr)r�r�r�r�r�rrCrqr6r��
alarm_timer�	r�r�r�s@rr�	r�	sE���
J��&�&�G�
�v�{�#�#��
�	:�	:��
�	"�	"rr�	�siginterruptr�r�	z+Don't have signal.alarm or signal.setitimerc�^�\rSrSrU4SjrSrSrSrSrSr	\
"\RS5S	5r\
"\RS
5S5r
SrU=r$)
�InterruptedRecvTimeoutTesti?c�l>�[TU]5 URRUR5 gr)r�r�r�rBrqr�s �rr�� InterruptedRecvTimeoutTest.setUpFs"���
��
���	�	���T�\�\�*rc��URUR5 UR[5nU"U0UD6 SSS5 URS5 g!,(df   N =f!URS5 f=fr*)r�	r�	rFr��r�r�r$r�rTs     r�checkInterruptedRecv�/InterruptedRecvTimeoutTest.checkInterruptedRecvJs`��	��M�M�$�/�/�*��"�"�#4�5���d�%�f�%�6�
�M�M�!��6�5��
�M�M�!��s!�0A&�	A�A&�
A#�A&�&A9c�P�URURRS5 grP)r�	r�rRr�s r�testInterruptedRecvTimeout�5InterruptedRecvTimeoutTest.testInterruptedRecvTimeoutTs���!�!�$�)�)�.�.�$�7rc�b�URURR[S55 grP)r�	r��	recv_intorNr�s r�testInterruptedRecvIntoTimeout�9InterruptedRecvTimeoutTest.testInterruptedRecvIntoTimeoutWs ���!�!�$�)�)�"5�"5�y���Grc�P�URURRS5 grP)r�	r�rtr�s r�testInterruptedRecvfromTimeout�9InterruptedRecvTimeoutTest.testInterruptedRecvfromTimeoutZs���!�!�$�)�)�"4�"4�d�;rc�b�URURR[S55 grP)r�	r�rurNr�s r�"testInterruptedRecvfromIntoTimeout�=InterruptedRecvTimeoutTest.testInterruptedRecvfromIntoTimeout]s ���!�!�$�)�)�"9�"9�9�T�?�Krr�c�P�URURRS5 grP)r�	r�r�r�s r�testInterruptedRecvmsgTimeout�8InterruptedRecvTimeoutTest.testInterruptedRecvmsgTimeout`s���!�!�$�)�)�"3�"3�T�:rr�c�d�URURR[S5/5 grP)r�	r�r�rNr�s r�!testInterruptedRecvmsgIntoTimeout�<InterruptedRecvTimeoutTest.testInterruptedRecvmsgIntoTimeoutds#���!�!�$�)�)�"8�"8�9�T�?�:K�Lrr)r�r�r�r�r�r�	r�	r�	r�	r�	rr7r�	r�	r�r�r�s@rr�	r�	?sc���+��8�H�<�L��&�-�-��+�;�,�;��&�-�-��0�M�1�Mrr�	c�^�\rSrSrU4SjrSrSr\R"SS5S5r	\R"SS5S5r
\R"SS5\"\RS	5S
55r
SrU=r$)�InterruptedSendTimeoutTestikc��>�[TU]5 UR5UlUR	URR
5 [R"URS9nUR5 URR5uUlnUR	URR
5 UR5 URRUR5 g)N)�target)r�r�r�rnr�rDr��Thread�	doConnect�startr�rDrgrrBrq)r��
cli_threadrir�s   �rr�� InterruptedSendTimeoutTest.setUpss����
��
�����)���������,�,�-��%�%�T�^�^�<�
�����"�i�i�.�.�0���
�t�����
�
�+�+�,��������!�!�$�,�,�/rc�N�URRUR5 gr)rnrMr�r�s rr
�$InterruptedSendTimeoutTest.doConnect�s�������t�~�~�.rc���UR[5nURUR5 U"U0UD6 M%!,(df   O=fURS5 g!URS5 f=fr*)rFr�r�	r�	r�	s     r�checkInterruptedSend�/InterruptedSendTimeoutTest.checkInterruptedSend�sa��	��"�"�#4�5����M�M�$�/�/�2��$�)�&�)��6�5��

�M�M�!���D�M�M�!��s�A!�'>�
A�A!�!A4rr c�P�URURRS5 gr�)r

rnr\r�s r�testInterruptedSendTimeout�5InterruptedSendTimeoutTest.testInterruptedSendTimeout�s���!�!�$�.�.�"5�"5�x�@rc�f�URURRSUR5 gr�)r

rnrQr�r�s r�testInterruptedSendtoTimeout�7InterruptedSendTimeoutTest.testInterruptedSendtoTimeout�s'��	
�!�!�$�.�.�"7�"7��"&�.�.�	2rr�c�R�URURRS/5 gr�)r

rnr�r�s r�testInterruptedSendmsgTimeout�8InterruptedSendTimeoutTest.testInterruptedSendmsgTimeout�s ��	
�!�!�$�.�.�"8�"8�8�*�Errr)r�r�r�r�r�r
r

r�requires_mac_verr
r
rr7r
r�r�r�s@rr�	r�	ks����0�/�
�
���b�!�$�A�%�A�
���b�!�$�2�%�2�
���b�!�$��&�-�-��+�F�,�%�Frr�	c� �\rSrSrSrSrSrg)�
TCPCloserTesti�c�T�URR5upUR5 URn[R"U///S5upEnURXC/5 URUR
S5S5 UR5 UR5 g)N��?r
r)r�rDrDrr�rUrR)r�rEri�sdrhr3rs       r�	testClose�TCPCloserTest.testClose�s���Y�Y�%�%�'�
���
�
��
�X�X��!�=�=�"��r�2�s�;���S�����t�$���������S�)�	
�
�
���
�
�rc��URR[UR45 [R
"S5 g�Nr
)rrMr+r�rKrLr�s r�
_testClose�TCPCloserTest._testClose�s(�������$��	�	�*�+��
�
�3�rrN)r�r�r�r�r
r
r�rrrr
r
�s���rr
c�H�\rSrSrSSjrSrSrSrSrSr	Sr
S	rS
rg)
�BasicSocketPairTesti�c�*�[RXS9 gr�)rtr�r�s  rr��BasicSocketPairTest.__init__�s�������<rc��URU[R5 [[S5(a+URUR[R
5 O*URUR[R5 URUR[R5 URURS5 g)Nr�r)
r(r7r6rUr8r�r�r�rdr9r�s  r�_check_defaults�#BasicSocketPairTest._check_defaults�s������d�F�M�M�2��6�9�%�%����T�[�[�&�.�.�9����T�[�[�&�.�.�9�������F�$6�$6�7�������Q�'rc�:�URUR5 gr)r&
rr�s r�
_testDefaults�!BasicSocketPairTest._testDefaults�s�����T�X�X�&rc�:�URUR5 gr)r&
r�r�s r�testDefaults� BasicSocketPairTest.testDefaults�s�����T�Y�Y�'rc�f�URRS5nURU[5 grP�r�rRrUrVrIs  rrH�BasicSocketPairTest.testRecv��$���i�i�n�n�T�"������c�"rc�B�URR[5 gr�rr\rVr�s rrL�BasicSocketPairTest._testRecv�������
�
�c�rc�B�URR[5 gr�r�r\rVr�s r�testSend�BasicSocketPairTest.testSend�����	�	���s�rc�f�URRS5nURU[5 grP�rrRrUrVrIs  r�	_testSend�BasicSocketPairTest._testSend��$���h�h�m�m�D�!������c�"rrNr	)
r�r�r�r�r�r&
r)
r,
rHrLr8
r=
r�rrrr"
r"
�s*��=�(�'�(�#���#rr"
c�$^�\rSrSrSrU4SjrU4SjrSrSrSr	Sr
S	rS
r\
R"\"\S5(+=(d \"\S5(+S
5\
R""\R&S5S55rSrSrSrSrU=r$)�PurePythonSocketPairTesti�c��[R"[R5$![a' [R"[R5s$f=fr)r7rxr�r<r�r�s rrx�#PurePythonSocketPairTest.socketpair�s@��	5��$�$�V�_�_�5�5���	5��$�$�V�^�^�4�4�	5�s�#&�.A�Ac�>�[[S5(a/[RUl[R
[lOSUl[TU]5 g)Nrx)r6r!r7rx�_orig_sp�_fallback_socketpairr�r�r�s �rr��PurePythonSocketPairTest.setUp�s?����7�L�)�)�"�-�-�D�M�!'� ;� ;�F��!�D�M�
��
�rc�h>�[TU]5 URbUR[lggr)r�r�rE
r7rxr�s �rr��!PurePythonSocketPairTest.tearDown�s)���
�����=�=�$� $�
�
�F��%rc�f�URRS5nURU[5 grPr/
rIs  r�	test_recv�"PurePythonSocketPairTest.test_recv�r1
rc�B�URR[5 grr3
r�s r�
_test_recv�#PurePythonSocketPairTest._test_recv�r5
rc�B�URR[5 grr7
r�s r�	test_send�"PurePythonSocketPairTest.test_sendr:
rc�f�URRS5nURU[5 grPr<
rIs  r�
_test_send�#PurePythonSocketPairTest._test_sendr?
rc��[R"[R5upUR5 UR5 gr)r7rxr�rD�r�rrs   r�	test_ipv4�"PurePythonSocketPairTest.test_ipv4s*���$�$�V�^�^�4����	�	���	�	�rc��grrr�s r�
_test_ipv4�#PurePythonSocketPairTest._test_ipv4
r�rra�IPV6_V6ONLY� IPV6_V6ONLY option not supportedr|c��[R"[R5upUR5 UR5 gr)r7rxr�rDrW
s   r�	test_ipv6�"PurePythonSocketPairTest.test_ipv6s,��
�$�$�V�_�_�5����	�	���	�	�rc��grrr�s r�
_test_ipv6�#PurePythonSocketPairTest._test_ipv6r�rc�^^�[RRmSmUU4SjnS=p#U[RlUR[5 [R"5up#SSS5 T[RlT(aTR5 U(aUR5 U(aUR5 gg!,(df   Nj=f!T[RlT(aTR5 U(aUR5 U(aUR5 ff=f)Nc�>�T"U5nTcj[R"[R[R5mTRS5 TR	USS5 TRS5 U$![
[4a N%f=f)NFr4T)r7r�rdr2rM�BlockingIOError�InterruptedError)r�rS�inject_sock�orig_getsocknames  ��r�inject_getsocketname�[PurePythonSocketPairTest.test_injected_authentication_failure.<locals>.inject_getsocketname s����'��-�H��"�$�m�m�F�N�N�F�<N�<N�O���'�'��.���'�'���!��5��'�'��-��O��(�)9�:����s�A9�9B�B)r7r,rFr<rxrD)r�rk
�sock1�sock2ri
rj
s    @@r�$test_injected_authentication_failure�=PurePythonSocketPairTest.test_injected_authentication_failures����!�=�=�4�4����
	����	�(<�F�M�M�%��"�"�7�+�%�0�0�2���,�)9�F�M�M�%���!�!�#�����
�����
��,�+��)9�F�M�M�%���!�!�#�����
�����
��s$�*C!�C�,C!�
C�C!�!AD>c��grrr�s r�%_test_injected_authentication_failure�>PurePythonSocketPairTest._test_injected_authentication_failure=s��
	
r)rE
)r�r�r�r�rxr�r�rK
rN
rQ
rT
rX
r[
r"r�r6r!r�rr�r`
rc
ro
rr
r�r�r�s@rrA
rA
�s����
5�	�.�#���#��

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

��B
�
rrA
c�X�\rSrSrSSjrSrSrSr\R\
R"\SLS5S55r
\R"\5r\
R"\"\S	5S
5\R$"SSS
5S55rSrSrSrSrSrSrSrSrSrSrSrSrg)�NonBlockingTCPTestsiEc�^�[R"5Ul[R	XS9 gr�)r�r��eventr�r�r�s  rr��NonBlockingTCPTests.__init__Gs!���_�_�&��
��&�&�t�&�Crc��URURR5U5 US:gnURUR5U5 [bjUSLn[R"U[R
[R5nUR[U[R-5(+U5 gg)N�)	rUr�r�getblockingr5�F_GETFLrO�
O_NONBLOCK�bool)r�r�rq�blocking�fd_blocking�flags      r�assert_sock_timeout�'NonBlockingTCPTests.assert_sock_timeoutKs���������-�-�/��9��s�N������)�)�+�X�6���#�d�?�K��;�;�t�U�]�]�B�M�M�B�D�����d�R�]�]�&:�!;�;�[�I�rc��URRS5 URURS5 URRS5 URURS5 URRS5 URURS5 URRS5 URURS5 URRS5 URURS5 URRS5 URURS5 g)NTFrz
rr)r�r2r�
rBr�s r�testSetBlocking�#NonBlockingTCPTests.testSetBlocking\s����	�	���d�#�� � ����D�1��	�	���e�$�� � ����C�0��	�	���T�"�� � ����D�1��	�	���Q��� � ����A�.��	�	���R� �� � ����B�/��	�	���Q��� � ����A�.rc��grrr�s r�_testSetBlocking�$NonBlockingTCPTests._testSetBlockingpr�rNr�c��SSKnURUR:�aURS5 URRS5 UR
URR5S5 URRURS-5 URURR55 g)Nrzneeds UINT_MAX < ULONG_MAXFrz
r
)	r�r�r�r�r�r2rUrrfr�s  r�testSetBlocking_overflow�,NonBlockingTCPTests.testSetBlocking_overflowss���	�����!4�!4�4��M�M�6�7��	�	���e�$�������-�-�/��5��	�	���i�0�0�1�4�5����$�)�)�.�.�0�1rr1ztest needs socket.SOCK_NONBLOCKr4�r
c��URR5 [R"[R[R[R
-5UlUR
URS5 gr*)r�rDr7r�rdr1r�
r�s r�testInitNonBlocking�'NonBlockingTCPTests.testInitNonBlocking�sQ��
	
�	�	�����M�M�&�.�.�"(�"4�"4�v�7K�7K�"K�M��	�� � ����A�.rc��grrr�s r�_testInitNonBlocking�(NonBlockingTCPTests._testInitNonBlocking�r�rc�0�[S5 URRS5 URR5upUR	UR
5 UR
UR55 SSS5 g!,(df   g=f)Nr)rsr�rBrDr�rDrfrrhs   r�testInheritFlagsBlocking�,NonBlockingTCPTests.testInheritFlagsBlocking�sc��&�d�
+��I�I� � ��$����)�)�+�J�D��O�O�D�J�J�'����d�o�o�/�0�	,�
+�
+�s�A2B�
Bc�Z�URR[UR45 gr�rrMr+r�r�s r�_testInheritFlagsBlocking�-NonBlockingTCPTests._testInheritFlagsBlocking���������$��	�	�*�+rc�6�Sn[U5 URRS5 URR5up#UR	UR
5 UR
UR5U5 SSS5 g!,(df   g=f)Ng4@r)rsr�rBrDr�rDrUr)r��default_timeoutrEris    r�testInheritFlagsTimeout�+NonBlockingTCPTests.testInheritFlagsTimeout�sj����
%�o�
6��I�I� � ��$����)�)�+�J�D��O�O�D�J�J�'����T�_�_�.��@�	7�
6�
6�s�A3B
�

Bc�Z�URR[UR45 grr�
r�s r�_testInheritFlagsTimeout�,NonBlockingTCPTests._testInheritFlagsTimeout�r�
rc���URRS5 [R"5nUR	[
5 URR
5up#SSS5 [R"5U-
nURUS5 URR5 [R"UR///[R5upVnURU;aURS5 URR
5up#URUR5 UR!UR#55 g!,(df   N�=f)NFr
z'Error trying to do accept after select.)r�r2rK�	monotonicrFrg
rDr�rw
r�r�r�LONG_TIMEOUTr?r�rDrfr)r��
start_timerEri�dtrhr3rs        r�
testAccept�NonBlockingTCPTests.testAccept�s����	�	���e�$��^�^�%�
�
�
�
��
/����)�)�+�J�D�0�
�^�^�
�
�
*������C� ��
�
����!�=�=�$�)�)��b�"�g�>R�>R�S���S��9�9�D� ��I�I�?�@��Y�Y�%�%�'�
������
�
�#����$�/�/�+�,�0�
/�s�E�
E*c��URR5 URR[UR
45 gr)rw
r�rrMr+r�r�s r�_testAccept�NonBlockingTCPTests._testAccept�s-��	
�
�
���������$��	�	�*�+rc�L�URR5upURUR5 UR	S5 UR[5 UR[[55nSSS5 URR5 [R"U///[R5upEnX;aURS5 UR[[55nUR!U[5 g!,(df   N�=f)NFz0Error during select call to non-blocking socket.)r�rDr�rDr2rFrg
rRr�rVrw
r�r�rr�
r?rU)r�rErirWrhr3rs       rrH�NonBlockingTCPTests.testRecv�s����Y�Y�%�%�'�
������
�
�#�������
�
��
/��)�)�C��H�%�C�0�	
�
�
����!�=�=�$���R��9M�9M�N���S����I�I�H�I��i�i��C��!������c�"�0�
/�s�D�
D#c���URR[UR45 URR5 URR
[5 gr)rrMr+r�rw
r�r�rVr�s rrL�NonBlockingTCPTests._testRecv�sA�������$��	�	�*�+�	
�
�
����	
������rc�,�[b[RS-nOSnURR5up#UR	UR
5 UR
U5 UR[[55ng![a gf=f�Nr
l)r�r�r�rDr�rDrBr�rRr�rV)r��
large_timeoutrErirWs     r�testLargeTimeout�$NonBlockingTCPTests.testLargeTimeout�s���� �%�-�-��1�M�&�M��Y�Y�%�%�'�
������
�
�#�	��O�O�M�*�
�i�i��C��!���	�	�
�	�s�B�
B�Bc�*�[b[RS-nOSnURR[UR
45 URR
U5 URR[5 g![a gf=fr�
)
r�r�rrMr+r�rBr�r�rV)r�r�
s  r�_testLargeTimeout�%NonBlockingTCPTests._testLargeTimeout�sw��� �%�-�-��1�M�&�M������$��	�	�*�+�	��H�H���
�.�	
���������	��	�s�
B�
B�B)rw
r�r	) r�r�r�r�r�r�
r�
r�
rr�r"r�r�r�
�_testSetBlocking_overflowr�r6r7�requires_linux_versionr�
r�
r�
r�
r�
r�
r�
r�
rHrLr�
r�
r�rrrru
ru
Es���D�J�"/�(
�
���
�_�_�Y�$�&�(<�=�
2�>��
2�!(� 4� 4�5E� F��
������9�:�<��#�#�A�q�"�-�/�.�<�/�
�1�,�	A�,�-�,,�#�(�"�(rru
c���\rSrSrSrSrSrSrSr\	r
Sr\	rS"Sjr
S	rS
rSrSrS
rSrSrSrSrSrSrSrSrSrSrSrSrSrSr Sr!Sr"Sr#Sr$S r%S!r&g)#�FileObjectClassTestCaseir�r�strictNr3r�c�*�[RXS9 gr�rDr�s  rr�� FileObjectClassTestCase.__init__rFrc�p�[S5Vs/sHn[R"5PM snuUlUlUlUl[RU5 URRURURURURURS9Ulgs snf)NrP�r��errors�newline)r�r�r��evt1�evt2�
serv_finished�cli_finishedrbr�rgr��	read_moder�r�r�
r�
�	read_file)r�r�s  rr��FileObjectClassTestCase.setUp s���',�Q�x�G1�'/�!�I�O�O��x�G1�C��	�4�9�d�0�$�2C��!�!�$�'����/�/��N�N�D�L�L��}�}��[�[��l�l�	0�$����G1s�B3c���URR5 URR5 UR	URR
5 SUl[RU5 gr)r�
r�r�
rDr�closedrbr�r�s rr�� FileObjectClassTestCase.tearDown*sO������� �������������-�-�.�����$�$�T�*rc���[RU5 URRURUR
URURURS9Ul	g)Nr�
)
rbr�rnr��
write_moder�r�r�
r�
�
write_filer�s rr��#FileObjectClassTestCase.clientSetUp1sM���'�'��-��.�.�1�1��O�O�T�\�\��}�}��[�[��l�l�	2�$��rc���URR5 URR5 UR	URR
5 SUl[RU5 gr)r�
r�r�
rDrr�
rbr�r�s rr��&FileObjectClassTestCase.clientTearDown9sO��������������������.�.�/�����*�*�4�0rc��URRS5 URRS5 UR	[
URRS5 UR	[5nURRS5 SSS5 URS[WR55 g!,(df   N4=f)Nr
rQz!cannot read from timed out object)
rgrBr�
rhrFr�r<r0rrR)r��ctxs  r�testReadAfterTimeout�,FileObjectClassTestCase.testReadAfterTimeout@s���	
�
�
� � ��#������A�����,����(;�(;�Q�?�
�
�
�w�
'�3��N�N����"�(��
�
�9�3�s�}�}�;M�N�(�
'�s�7C�
Cc��URRURSS5 URR5 URR5 g)NrrQ)r�
r3�	write_msg�flushr�
r�r�s r�_testReadAfterTimeout�-FileObjectClassTestCase._testReadAfterTimeoutLsA�������d�n�n�Q�q�1�2������������!rc���URR[UR5S-
5nURRS5nX-nUR	X0R5 grD)r�
rhr��read_msgrU)r��	first_seg�
second_segrWs    r�
testSmallRead�%FileObjectClassTestCase.testSmallReadQsR���N�N�'�'��D�M�M�(:�1�(<�=�	��^�^�(�(��+�
��$������m�m�,rc��URRUR5 URR5 gr�r�
r3r�
r�
r�s r�_testSmallRead�&FileObjectClassTestCase._testSmallReadX�(�������d�n�n�-������rc�n�URR5nURXR5 gr)r�
rhrUr�
rIs  r�testFullRead�$FileObjectClassTestCase.testFullRead\s&���n�n�!�!�#������m�m�,rc��URRUR5 URR5 gr)r�
r3r�
rDr�s r�
_testFullRead�%FileObjectClassTestCase._testFullReadar�
rc���[UR5"5nURRS5nU(dOX-
nM)UR	XR5 gr�)r�r�
r�
rhrU)r�r��chars   r�testUnbufferedRead�*FileObjectClassTestCase.testUnbufferedReadesP���4�=�=�!�#����>�>�&�&�q�)�D����K�C�	�
	
����m�m�,rc��URRUR5 URR5 grr�
r�s r�_testUnbufferedRead�+FileObjectClassTestCase._testUnbufferedReador�
rc�n�URR5nURXR5 gr)r�
�readlinerUr�
�r��lines  r�testReadline�$FileObjectClassTestCase.testReadliness&���~�~�&�&�(������}�}�-rc��URRUR5 URR5 grr�
r�s r�
_testReadline�%FileObjectClassTestCase._testReadlinexr�
rc��URR5 URR5nUR	XR
5 gr)rgrDr�
rhrUr�
rIs  r�testCloseAfterMakefile�.FileObjectClassTestCase.testCloseAfterMakefile|s6���
�
�����n�n�!�!�#������m�m�,rc��URRUR5 URR5 grr�
r�s r�_testCloseAfterMakefile�/FileObjectClassTestCase._testCloseAfterMakefile�r�
rc��URR5 URR[	[
55n[
UR[5(aUR5nURXR5 gr)r�
rDrgrRr�rVr�r�
r�decoderUrIs  r�testMakefileAfterMakefileClose�6FileObjectClassTestCase.testMakefileAfterMakefileClose�sX���������m�m� � ��S��*���d�m�m�S�)�)��*�*�,�C�����m�m�,rc��URRUR5 URR5 grr�
r�s r�_testMakefileAfterMakefileClose�7FileObjectClassTestCase._testMakefileAfterMakefileClose�r�
rc�X�URURR(+5 gr)rr�
r�
r�s r�testClosedAttr�&FileObjectClassTestCase.testClosedAttr�s�����D�N�N�1�1�1�2rc�X�URURR(+5 gr)rr�
r�
r�s r�_testClosedAttr�'FileObjectClassTestCase._testClosedAttr�s�����D�O�O�2�2�2�3rc���URURRUR5 URURRUR
R
55 gr)rUr�
r�r�
rrgr1r�s r�testAttributes�&FileObjectClassTestCase.testAttributes�sG��������,�,�d�n�n�=�������,�,�d�m�m�.B�.B�.D�Erc���URURRUR5 URURRUR
R
55 gr)rUr�
r�r�
rrnr1r�s r�_testAttributes�'FileObjectClassTestCase._testAttributes�sG��������-�-�t���?�������-�-�t�~�~�/D�/D�/F�Grc��URR5 UR[URR5 UR
R5 UR[UR
R5 gr)r�
rDrFrr1rgr<r,r�s r�
testRealClose�%FileObjectClassTestCase.testRealClose�sV�����������*�d�n�n�&;�&;�<��
�
�������'�4�=�=�#<�#<�=rc��grrr�s r�_testRealClose�&FileObjectClassTestCase._testRealClose�r�r)r�
r�
r�
r�
r�
r�
r	)'r�r�r�r�r�r�r�
r�
r�
rVr�
r�
r�
r�r�r�r�r�r�
r�
r�
r�
r�
r�
r�
r�
r�
r�
r�
rrr	rrrrrrr�rrrr�
r�
s����G��H�
�F��G��I��H��J��I�B�$�+�$�1�
O�"�
-� �-�
 �-� �.�
 �-� �-� �3�4�F�H�>�
rr�
c��\rSrSrSrSrSrSrSr\	R"\"\S5S5S	5r
S
rSrSrS
rSrSrg)�!UnbufferedFileObjectClassTestCasei�rc�*�URR5nURUSUR-5 URRSS5UlURR5nURUSUR-5 g)N�A. r3r�B. )r�
r�
rUr�
rgr�r�
s  r�testUnbufferedReadline�8UnbufferedFileObjectClassTestCase.testUnbufferedReadline�sp���~�~�&�&�(������v����6�7����/�/��a�8����~�~�&�&�(������v����6�7rc���URRSUR-5 URRSUR-5 URR5 g)Nr r!r�
r�s r�_testUnbufferedReadline�9UnbufferedFileObjectClassTestCase._testUnbufferedReadline�sH�������f�t�~�~�5�6������f�t�~�~�5�6������rc�.�URR5 URRS5nURXR5 UR
R5 UR
[URRS5 grP)rgrDrRrUr�
r�
rFr<rIs  r�testMakefileClose�3UnbufferedFileObjectClassTestCase.testMakefileClose�sd���
�
�����m�m� � ��&������m�m�,����������'�4�=�=�#5�#5�t�<rc��URRUR5 URR5 grr�
r�s r�_testMakefileClose�4UnbufferedFileObjectClassTestCase._testMakefileClose�r�
rr�r�c���[R"UR5nURR	5 [R"UR5nURUS-
U5 gr�)r{r�rgr�
rDrU)r��refcount_before�refcount_afters   r�testMakefileCloseSocketDestroy�@UnbufferedFileObjectClassTestCase.testMakefileCloseSocketDestroy�sM���/�/�$�-�-�8��������������7������1�,�n�=rc��grrr�s r�_testMakefileCloseSocketDestroy�AUnbufferedFileObjectClassTestCase._testMakefileCloseSocketDestroy�r�rc��URRS5 URURR	[S55S5 URURR
[UR5S-
5S5 URR5 URRS5 URR
[UR5S-
5nUcG[R"S5 URR
[UR5S-
5n[S5nURR	U5nURUS5 XSU-nURX@R5 URURR	[S55S5 URURR
S5S5 g)NFrrQr
g�?r�r
)rgr2rUr�
�readintorNrhr�r�
r�
r�r�
r�rKrL)r�r�
r�r#rWs     r�testSmallReadNonBlocking�:UnbufferedFileObjectClassTestCase.testSmallReadNonBlocking�se���
�
�!�!�%�(�������0�0��2��?��F�������,�,�S����-?�!�-C�D�d�K��	�	�
�
���	�	���s���N�N�'�'��D�M�M�(:�Q�(>�?�	����J�J�s�O����+�+�C��
�
�,>��,B�C�I���m���N�N�#�#�C�(������A���b�q�'�!������m�m�,�������0�0��2��?��F�������,�,�Q�/��6rc�"�URRS5 URRUR5 URR5 URR5 URRS5 g)Nr
�@)	r�
r�r�
r3r�
r�
r�
r�r�
r�s r�_testSmallReadNonBlocking�;UnbufferedFileObjectClassTestCase._testSmallReadNonBlocking�s[���	�	���s�������d�n�n�-��������	�	�
�
��	
������$rc��URRS5 UR(aURUR5 gg)Nr:)r�
r��serv_skippedr�r�s r�testWriteNonBlocking�6UnbufferedFileObjectClassTestCase.testWriteNonBlocking�s8�������s�#�����M�M�$�+�+�,�rc�b�SUlURRS5 S[R-nSnUR
R
U5nURUS5 [U5H5nUR
R
U5nUc gURUS5 M7 SUlg)NFr�rrz$failed to saturate the socket buffer)	r>rnr2rr�r�
r3r�r�)r��BIG�LIMITr#r�s     r�_testWriteNonBlocking�7UnbufferedFileObjectClassTestCase._testWriteNonBlockings��� ������"�"�5�)��W�*�*�*�����O�O�!�!�#�&�����1�a� ��u��A����%�%�c�*�A��y�����q�!�$��!G�D�r)r�
r>N)r�r�r�r�r�r"r%r(r+r"r�r6r{r0r3r7r;r?rDr�rrrrr�sb���G�8� �
=� ������m�4�7�9�>�9�>�
�7�&%�-�Grrc��\rSrSrSrSrg)�#LineBufferedFileObjectClassTestCaseir
rN�r�r�r�r�r�r�rrrrGrG����GrrGc��\rSrSrSrSrg)�$SmallBufferedFileObjectClassTestCaseir4rNrHrrrrKrKrIrrKc�F�\rSrSrSr\R
S5rSr\r	Sr
Srg)�"UnicodeReadFileObjectClassTestCasei"r=rr�rMrN�r�r�r�r�r�
rVrr�
r�
r�
r�
r�rrrrMrM"s&���I��z�z�'�"�H��J��I��GrrMc�F�\rSrSrSr\rSr\RS5r	Sr
Srg)�#UnicodeWriteFileObjectClassTestCasei,r3r�rrMrN)r�r�r�r�r�
rVr�
r�
rr�
r�
r�rrrrPrP,s&���I��H��J��
�
�7�#�I��GrrPc�d�\rSrSrSr\R
S5rSr\R
S5r	Sr
Srg)�'UnicodeReadWriteFileObjectClassTestCasei6r=rr�rMrNrNrrrrRrR6s/���I��z�z�'�"�H��J��
�
�7�#�I��GrrRc��\rSrSrSrSrg)�NetworkConnectionTesti@c�|�[R"[UR45UlURUlgr)r7�create_connectionr+r�rrnr�s rr��!NetworkConnectionTest.clientSetUpCs*���+�+�T�4�9�9�,=�>�������r)rrnN)r�r�r�r�r�r�rrrrTrT@s��"rrTc��\rSrSrSrg)�
BasicTCPTest2iIrNrz	rrrrYrYIs��rrYc��\rSrSr"SS\R5r\RS5r\	RS5r\	RS5rSr
SrS	rg
)�NetworkConnectionNoServeriMc��\rSrSrSrSrg)�$NetworkConnectionNoServer.MockSocketiOc��[S5e)Nz	timed out)r�r�s  rrM�,NetworkConnectionNoServer.MockSocket.connectPs
���{�+�+rrN)r�r�r�r�rMr�rrr�
MockSocketr]Os��	,rr`c#�# �[RnUR[lSv� U[lg!U[lf=f7fr)r7r`)r��
old_sockets  r�mocked_socket_module�.NetworkConnectionNoServer.mocked_socket_moduleSs1����]�]�
�����
�	'��&�F�M��J�F�M�s�&A	�9�A	�
A�A	c��[R"5n[R"[R[R5nURUR5 UR[5nUR[U45 SSS5 URWRR[R5 g!,(df   NC=fr)rr[r7r�rdr�rDrFr<rMr+rUrRr@�ECONNREFUSED)r�r�rrTs    r�test_connect�&NetworkConnectionNoServer.test_connect]s����-�-�/���m�m�F�N�N�F�,>�,>�?������	�	�"�
�
�
�w�
'�2��K�K��t��%�(�������+�+�U�-?�-?�@�(�
'�s�9C�
Cc�:�[R"5nUR[5n[R
"[U45 SSS5 [R"5nURWRRU5 g!,(df   NJ=fr)rr[rFr<r7rVr+�get_socket_conn_refused_errsr0rRr@)r�r�rT�expected_errnoss    r�test_create_connection�0NetworkConnectionNoServer.test_create_connectionfsj���-�-�/��
�
�
�w�
'�2��$�$�d�D�\�2�(�"(�D�D�F���
�
�b�l�l�(�(�/�:�%(�
'�s�B�
Bc���[R"5n[R"[U4SS9 URS5 URW[5 URHnURU[5 M [R"SUS[R5nUR[U5[UR55 g![anUnSnAN�SnAff=f)NT)�
all_errorszexpected connection to failr�r)rr[r7rVr+r?�ExceptionGroupr(�
exceptionsr<r�rdrUr�)r�r�r��eg�	addressess     r�!test_create_connection_all_errors�;NetworkConnectionNoServer.test_create_connection_all_errorss����-�-�/��	5��$�$�d�D�\�d�C�
�I�I�3�4����b�.�1����A��!�!�!�W�-���&�&���q�&�"4�"4�6�	�	
����Y���R�]�]�);�<���	��B��	�s�C�
C.�"C)�)C.c�`�UR5 [R"[S45 UR	S5 SSS5 g![
a N[a>n[R(dUR[R:waeSnANWSnAff=f!,(df   g=f)NrzTimeoutError not raised)rcr7rVr+r?r�r<rr�r@�EAFNOSUPPORTr�s  r�test_create_connection_timeout�8NetworkConnectionNoServer.test_create_connection_timeout�s����
&�
&�
(�
5��(�(�$���6��	�	�3�4�)�
(�� �
���
� �-�-����e�>P�>P�1P��2Q��
��)�
(�s?�B�A	�B�	
B�B�	B�4B�B�B�B�
B-rN)r�r�r�r�r7r`r,�contextmanagerrcr�skip_if_tcp_blackholergrlrtrxr�rrrr[r[Msl��,�V�]�]�,����'��'��(�(�A�)�A��(�(�;�)�;�0=�$5rr[c�p�\rSrSrSrSSjrSrSrSr\r	Sr
\rSr\r
S	r\rS
r\rSr\rSrS
rg)�NetworkConnectionAttributesTesti�Nc�T�[RXS9 [RU5 gr�r�r�s  rr��(NetworkConnectionAttributesTest.__init__�rrc�8�[R"5Ulgr)rr[�source_portr�s rr��+NetworkConnectionAttributesTest.clientSetUp�s��(�9�9�;��rc��URbURR5 SUl[RU5 grrr�s rr��.NetworkConnectionAttributesTest.clientTearDown�s/���8�8���H�H�N�N������%�%�d�+rc�\�URR5upUR5 gr)r�rDrDrhs   r�_justAccept�+NetworkConnectionAttributesTest._justAccept�s���Y�Y�%�%�'�
���
�
�rc�
�[R"[UR4[R
S9UlURURR5 URURRS5 g)Nrzr4)r7rVr+r�rrCrr�rDrUr8r�s r�_testFamily�+NetworkConnectionAttributesTest._testFamily�sT���+�+�T�4�9�9�,=�$+�$<�$<�>�����������'���������!�,rc�F�[R"[UR4[R
SUR4S9UlURURR5 URURR5SUR5 g)NrM)rq�source_addressr
)r7rVr+r�rrCr�rr�rDrUr,r�s r�_testSourceAddress�2NetworkConnectionAttributesTest._testSourceAddress�su���+�+�T�4�9�9�,=�$+�$<�$<�,.��0@�0@�+A�C���	
��������'�������-�-�/��2�D�4D�4D�Erc���UR[R"5SL5 [R"S5 [R"[
UR45UlURURR5 [R"S5 URURR5S5 g![R"S5 f=f)Nr�rr7rorprVr+r�rr�rDrUrr�s r�_testTimeoutDefault�3NetworkConnectionAttributesTest._testTimeoutDefault�s�������0�0�2�d�:�;�� � ��$�	+��/�/��t�y�y�0A�B�D�H��O�O�D�H�H�N�N�+��$�$�T�*�������,�,�.��3��
�$�$�T�*�s�AC�C'c���UR[R"5SL5 [R"S5 [R"[
UR4SS9UlURURR5 [R"S5 URURR5S5 g![R"S5 f=f�N�rzr�r�s r�_testTimeoutNone�0NetworkConnectionAttributesTest._testTimeoutNone�s�������0�0�2�d�:�;�� � ��$�	+��/�/��t�y�y�0A�4�P�D�H��O�O�D�H�H�N�N�+��$�$�T�*�������,�,�.��5��
�$�$�T�*�s�AC�C&c��[R"[UR4SS9UlURURR
5S5 gr�)r7rVr+r�rrUrr�s r�_testTimeoutValueNamed�6NetworkConnectionAttributesTest._testTimeoutValueNamed�s<���+�+�T�4�9�9�,=�r�J���������,�,�.��3rc��[R"[UR4S5UlURURR5 URURR5S5 g)Nr�)	r7rVr+r�rr�rDrUrr�s r�_testTimeoutValueNonamed�8NetworkConnectionAttributesTest._testTimeoutValueNonamed�sP���+�+�T�4�9�9�,=�r�B�����������'�������,�,�.��3r)rr�r	)r�r�r�r�rr�r�r�r��
testFamilyr��testSourceAddressr��testTimeoutDefaultr��testTimeoutNoner��testTimeoutValueNamedr��testTimeoutValueNonamedr�r�rrrr}r}�sh��
�C�&�<�,���J�-�$��F�%��	4�"�O�	6�(��4�*��4rr}c�@�\rSrSrS
SjrSrSrSr\rSr	Sr
Srg	)�NetworkConnectionBehaviourTesti�c�T�[RXS9 [RU5 gr�r�r�s  rr��'NetworkConnectionBehaviourTest.__init__�rrc��grrr�s rr��*NetworkConnectionBehaviourTest.clientSetUp�r�rc�p�URR5 SUl[RU5 grrr�s rr��-NetworkConnectionBehaviourTest.clientTearDown�rrc��URR5upURUR5 [R
"S5 UR
S5 g)NrQ�done!)r�rDr�rDrKrLr\rhs   r�testInsideTimeout�0NetworkConnectionBehaviourTest.testInsideTimeout�s=���Y�Y�%�%�'�
������
�
�#��
�
�1�
��	�	�(�rc��[R"[UR45=UlnURS5nUR
US5 g)NrXr�)r7rVr+r�rrRrU)r�r�rs   r�_testInsideTimeout�1NetworkConnectionBehaviourTest._testInsideTimeout�s?�� �2�2�D�$�)�)�3D�E�E���4��y�y��|������x�(rc�^�[R"[UR4SS9=UlmUR[U4Sj5 g)Nr
rzc�&>�TRS5$)NrX)rR�r�s�rr�DNetworkConnectionBehaviourTest._testOutsideTimeout.<locals>.<lambda>s
����	�	�!�r)r7rVr+r�rrFr�r�s @r�_testOutsideTimeout�2NetworkConnectionBehaviourTest._testOutsideTimeouts6��� �2�2�D�$�)�)�3D�a�P�P���4����,�(<�=rrNr	)r�r�r�r�r�r�r�r��testOutsideTimeoutr�r�r�rrrr�r��s(��&�
�,�
�
+��)�
>rr�c�`�\rSrSrSrSr\R"\"\	S5S5S5r
Srg)	�TCPTimeoutTestic�@^�U4SjnTR[US5 g)Nc�p>�TRRS5 TRR5 gr
)r�rBrD�r$r�r�s  �r�
raise_timeout�4TCPTimeoutTest.testTCPTimeout.<locals>.raise_timeouts%����I�I� � ��%��I�I���rz*Error generating a timeout exception (TCP)�rFr��r�r�s` r�testTCPTimeout�TCPTimeoutTest.testTCPTimeout
s ���	�	
���,�
�J�	Lrc�(�SnURRS5 URR5nU(dUR	S5 gg![a UR	S5 N7[
a SnND UR	S5 NX=f)NFrz
z%caught timeout instead of error (TCP)Tz!caught unexpected exception (TCP)z3accept() returned success when we did not expect it)r�rBrDr�r?r<�r��okr#s   r�testTimeoutZero�TCPTimeoutTest.testTimeoutZeros��
��	;��I�I� � ��%��)�)�"�"�$�C���I�I�K�L���
�	?��I�I�=�>��	��B�	;��I�I�9�:�s�5A�B�0B�=Br�ztest needs signal.alarm()c
�V^�URRS5 "SS[5mU4Sjn[R"[RU5n[R
"S5 URR
5nURS5 [R
"S5 [R"[RU5 g![a URS5 NYTa N`[aCnURS[U5<S	U<S
[R"5<35 SnAN�SnAff=f![R
"S5 f=f!Ta URS5 N�f=f![R"[RU5 f=f)
Nr:c��\rSrSrSrg)�4TCPTimeoutTest.testInterruptedTimeout.<locals>.Alarmi&rNrz	rrr�Alarmr�&s��rr�c�>�Terr)r�rr�s  �r�
alarm_handler�<TCPTimeoutTest.testInterruptedTimeout.<locals>.alarm_handler(s����Krr4znothing caughtzcaught timeout instead of Alarmz)caught other exception instead of Alarm: �(z):
rzgot Alarm in wrong place)
r�rBr�r�r�r�rDr?r�r�r��	traceback�
format_exc)r�r�r�r#r�r�s     @r�testInterruptedTimeout�%TCPTimeoutTest.testInterruptedTimeouts/���	
�	�	���S�!�	�I�	�	��M�M�&�.�.�-�@�	�	5�
 ����Q���i�i�&�&�(���	�	�*�+����Q��

�M�M�&�.�.�)�4��! �
=��	�	�;�<��
�� �
@��	�	���7�A�y�';�';�'=�?�@�@��
@�����Q����	2��I�I�0�1�	2��
�M�M�&�.�.�)�4�sr�0C�	E	�E$�E�1E	�3E�8E	�:	E�9E�<E	�E�E	�	E!�!E$�$E>�;F�=E>�>F�'F(rN)r�r�r�r�r�r�r"r�r6r�r�r�rrrr�r�s9��L�M�������1�4�6�5�6�5rr�c� �\rSrSrSrSrSrg)�UDPTimeoutTestiAc�@^�U4SjnTR[US5 g)Nc�r>�TRRS5 TRRS5 g�Nr
rQ�r�rBrRr�s  �rr��4UDPTimeoutTest.testUDPTimeout.<locals>.raise_timeoutD�%����I�I� � ��%��I�I�N�N�4� rz*Error generating a timeout exception (UDP)r�r�s` r�testUDPTimeout�UDPTimeoutTest.testUDPTimeoutCs ���	!�	
���,�
�J�	Lrc�*�SnURRS5 URRS5nU(dUR	S5 gg![a UR	S5 N7[
a SnND UR	S5 NX=f)NFrz
rQz%caught timeout instead of error (UDP)Tz!caught unexpected exception (UDP)�1recv() returned success when we did not expect it�r�rBrRr�r?r<r�s   rr��UDPTimeoutTest.testTimeoutZeroJs��
��	;��I�I� � ��%��)�)�.�.��&�C���I�I�I�J���
�	?��I�I�=�>��	��B�	;��I�I�9�:���6A�B�1B�>BrN)r�r�r�r�r�r�r�rrrr�r�As��L�Krr�c� �\rSrSrSrSrSrg)�UDPLITETimeoutTestiXc�@^�U4SjnTR[US5 g)Nc�r>�TRRS5 TRRS5 gr�r�r�s  �rr��<UDPLITETimeoutTest.testUDPLITETimeout.<locals>.raise_timeout]r�rz.Error generating a timeout exception (UDPLITE)r�r�s` r�testUDPLITETimeout�%UDPLITETimeoutTest.testUDPLITETimeout\s ���	!�	
���,�
�N�	Prc�*�SnURRS5 URRS5nU(dUR	S5 gg![a UR	S5 N7[
a SnND UR	S5 NX=f)NFrz
rQz)caught timeout instead of error (UDPLITE)Tz%caught unexpected exception (UDPLITE)r�r�r�s   rr��"UDPLITETimeoutTest.testTimeoutZerocs���
��	?��I�I� � ��%��)�)�.�.��&�C���I�I�I�J���
�	C��I�I�A�B��	��B�	?��I�I�=�>�r�rN)r�r�r�r�r�r�r�rrrr�r�Xs��P�Krr�c� �\rSrSrSrSrSrg)�TestExceptionsiqc���UR[[[55 UR[[R
[55 UR[[R[55 UR[[R[55 UR[R[5 UR[R[5 gr)r�
issubclassr<r�r7rGrHrq�assertIs�errorr�r�s r�testExceptionTree� TestExceptions.testExceptionTreess~�����
�7�I�6�7����
�6�=�=�'�:�;����
�6�?�?�G�<�=����
�6�>�>�7�;�<��
�
�f�l�l�G�,��
�
�f�n�n�l�3rc���[R"[R[RS5n[R"[R[RSUR55nUR	5 URUR5 UR[5 URS5 SSS5 g!,(df   g=f)NrF)
r7r�rdr1rDr�r:rFr<r2)r��sock0r�s   r�test_setblocking_invalidfd�)TestExceptions.test_setblocking_invalidfd{s����
�
�f�n�n�f�.@�.@�!�D���}�}��N�N�F�.�.��5�<�<�>�C��
���
�������$�
�
�
�w�
'����U�#�(�
'�
'�s�8C�
C!rN)r�r�r�r�r�r�r�rrrr�r�qs��4�
$rr��r�r�zLinux specific testc�<�\rSrSrSrSrSrSrSrSr	Sr
S	rg
)�TestLinuxAbstractNamespacei��lc��Sn[R"[R[R5nURU5 UR	5 [R"[R[R5nURUR
55 UR5SnURUR
5U5 URUR5U5 SSS5 SSS5 SSS5 g!,(df   N=f!,(df   N(=f!,(df   g=f)Nspython-test-hello�r)
r7r�rdr�r�rMr,rDrUrs)r�r��s1rY�s3s     r�testLinuxAbstractNamespace�5TestLinuxAbstractNamespace.testLinuxAbstractNamespace�s���2��
�]�]�6�>�>�6�+=�+=�
>�"��G�G�G���I�I�K����v�~�~�v�/A�/A�B�b��
�
�2�>�>�+�,��Y�Y�[��^�r��$�$�R�^�^�%5�w�?��$�$�R�^�^�%5�w�?�$�C�?�
>�
$�^��C�B��?�
>�s=�AD:�3D)�>AD�?D)�D:�
D&�"D)�)
D7	�3D:�:
Ec�*�SSURS-
--n[R"[R[R5nUR	U5 URUR
5U5 SSS5 g!,(df   g=f)Nr�hr
)�
UNIX_PATH_MAXr7r�rdr�rUr,�r�r�rGs   r�testMaxName�&TestLinuxAbstractNamespace.testMaxName�sc���D�D�$6�$6��$:�;�;��
�]�]�6�>�>�6�+=�+=�
>�!�
�F�F�7�O����Q�]�]�_�g�6�?�
>�
>�s�	2B�
Bc��SSUR--n[R"[R[R5nUR	[
URU5 SSS5 g!,(df   g=f)Nr�h)rr7r�rdrFr<r�rs   r�testNameOverflow�+TestLinuxAbstractNamespace.testNameOverflow�sS���3��!3�!3�3�3��
�]�]�6�>�>�6�+=�+=�
>�!����g�q�v�v�w�7�?�
>�
>�s�"A1�1
A?c��[R"[R[R5nURS5 UR	UR5S5 UR
5 g!UR
5 f=f)Nz
pythontest�
pythontest)r7r�rdr�rUr,rDr3s  r�testStrName�&TestLinuxAbstractNamespace.testStrName�sX���M�M�&�.�.�&�*<�*<�=��	�
�F�F�+�,����Q�]�]�_�.G�H�
�G�G�I��A�G�G�I�s�1A7�7B	c��[R"[R[R5nUR[	S55 URUR
5S5 SSS5 g!,(df   g=f)Nr)r7r�rdr�rNrUr,r3s  r�testBytearrayName�,TestLinuxAbstractNamespace.testBytearrayName�sQ��
�]�]�6�>�>�6�+=�+=�
>�!�
�F�F�9�6�7�8����Q�]�]�_�.G�H�?�
>�
>�s�;A8�8
Bc�\�Sn[R"[R[R5nURS5 UR	UR5U5 [R"[R[R5nURS5 UR	UR5U5 UR
UR5UR55 SSS5 SSS5 g!,(df   N=f!,(df   g=f)Ns
^[0-9a-f]{5}rM)r7r�rdr�r�r,r�)r��abstract_addressr�rYs    r�testAutobind�'TestLinuxAbstractNamespace.testAutobind�s���-��
�]�]�6�>�>�6�+=�+=�
>�"��G�G�B�K����R�^�^�-�/?�@����v�~�~�v�/A�/A�B�b������� � ����!1�3C�D��#�#�B�N�N�$4�b�n�n�6F�G�C�	?�
>�C�B��	?�
>�s%�A%D�A D�;D�
D	�D�
D+rN)r�r�r�r�rrrrrrrr�rrrr�r��s*���M�	@�7�8�
�I�Hrr�ztest needs socket.AF_UNIXc��\rSrSrSrSrSrSrSrSr	Sr
S	rS
r\
R"\R S;S5S
5rSrg)�TestUnixDomaini�c�t�[R"[R[R5Ulgr)r7r�rdr�r�s rr��TestUnixDomain.setUp�s���M�M�&�.�.�&�2D�2D�E��	rc�8�URR5 gr)r�rDr�s rr��TestUnixDomain.tearDown�s���	�	���rc��[R"U5$![a7 URSR	U[
R"555 gf=f)NzBPathname {0!a} cannot be represented in file system encoding {1!r})rO�fsencoder�r�rr{�getfilesystemencoding�r�r�s  r�encoded�TestUnixDomain.encoded�sN��	8��;�;�t�$�$��!�	8��M�M�(�(.���#�3�3�5�)7�
8�	8�s��>A�Ac��[R"X5 g![a:n[U5S:Xa%UR	SRU55 SnAgeSnAff=f)NzAF_UNIX path too longz6Pathname {0!a} is too long to serve as an AF_UNIX path)rr�r<rr�r)r�r�r�r�s    rr��TestUnixDomain.bind�sT��	��*�*�4�6���	��1�v�0�0��
�
�L��V�D�\�#�#���
	�s��
A�/A�A�Ac�X�URURR5S5 g)N)rMN)r0r�r,r�s rr��TestUnixDomain.testUnbound�s���
�
�d�i�i�+�+�-�z�:rc�*�[RR[R5nURURU5 UR[RU5 URURR5U5 gr)rOr��abspathr�TESTFNr�r�r�r�rUr,r!s  r�testStrAddr�TestUnixDomain.testStrAddr�s]���w�w���y�/�/�0���	�	�$�)�)�T�"����	�(�(�$�/�������.�.�0�$�7rc�H�[RR[R5nURURURU55 UR[RU5 URURR5U5 gr)rOr�r)rr*r�r�r"r�r�rUr,r!s  r�
testBytesAddr�TestUnixDomain.testBytesAddr�sf���w�w���y�/�/�0���	�	�$�)�)�T�\�\�$�/�0����	�(�(�$�/�������.�.�0�$�7rc�l�[RR[R5nURU5nUR
URURSS55 UR[RU5 URURR5U5 g)N�ascii�surrogateescape)
rOr�r)r�TESTFN_UNICODEr"r�r�rr�r�rUr,)r�r�r�s   r�testSurrogateescapeBind�&TestUnixDomain.testSurrogateescapeBind�sy���w�w���y�7�7�8���L�L�����	�	�$�)�)�Q�X�X�g�/@�A�B����	�(�(�$�/�������.�.�0�$�7rc�n�[RcURS5 [RR[R5nUR
URU5 UR[RU5 URURR5U5 g)Nz!No unencodable filename available)r�TESTFN_UNENCODABLEr�rOr�r)r�r�r�r�rUr,r!s  r�testUnencodableAddr�"TestUnixDomain.testUnencodableAddr�sx���'�'�/��M�M�=�>��w�w���y�;�;�<���	�	�$�)�)�T�"����	�(�(�$�/�������.�.�0�$�7rr�z6Linux behavior is tested by TestLinuxAbstractNamespacec�Z�UR[URRS5 g)NrM)rFr<r�r�r�s r�testEmptyAddress�TestUnixDomain.testEmptyAddresss��	
���'�4�9�9�>�>�2�6rr�N)r�r�r�r�r�r�r"r�r�r+r.r4r8r"r�r{r|r;r�rrrrr�s^��F��	8�
�;�8�8�8�8��_�_�S�\�\�%9�9�M�O�7�O�7rrc�t�\rSrSrSSjrSrSrSr\rSr	\r
SrSrS	r
\rS
r\rSrSrS
r\rSrg)�BufferIOTestic�*�[RXS9 gr�rDr�s  rr��BufferIOTest.__init__rFrc�8�[R"SS/[[5-5nURR	U5nURU[[55 UR
5nUS[[5nURU[5 g�Nr<r)r=r�rVrgr�	rUr�r�r�r�rWs    r�testRecvIntoArray�BufferIOTest.testRecvIntoArraysn���k�k�#��s�S��X�~�.�����(�(��-�������S��*��k�k�m���)�3�s�8�n������c�"rc�X�[[5nURRU5 gr�r,rVrnr\�r�r�s  r�_testRecvIntoArray�BufferIOTest._testRecvIntoArray����C�j�������C� rc���[S5nURRU5nURU[	[
55 US[	[
5nURU[
5 grP)rNrgr�	rUr�rVrCs    r�testRecvIntoBytearray�"BufferIOTest.testRecvIntoBytearraysR����o�����(�(��-�������S��*��)�3�s�8�n������c�"rc���[S5nURR[U55nUR	U[[55 US[[5nUR	U[5 grP)rNrgr�	rrUr�rVrCs    r�testRecvIntoMemoryview�#BufferIOTest.testRecvIntoMemoryview(sV����o�����(�(��C��9�������S��*��)�3�s�8�n������c�"rc�<�[R"SS/[[5-5nURR	U5up#URU[[55 UR
5nUS[[5nURU[5 grB)r=r�rVrgrurUr�r�r�r�rirWs     r�testRecvFromIntoArray�"BufferIOTest.testRecvFromIntoArray1sp���k�k�#��s�S��X�~�.���}�}�2�2�3�7��������S��*��k�k�m���)�3�s�8�n������c�"rc�X�[[5nURRU5 grrGrHs  r�_testRecvFromIntoArray�#BufferIOTest._testRecvFromIntoArray9rKrc���[S5nURRU5up#URU[	[
55 US[	[
5nURU[
5 grP)rNrgrurUr�rVrSs     r�testRecvFromIntoBytearray�&BufferIOTest.testRecvFromIntoBytearray=sT����o���}�}�2�2�3�7��������S��*��)�3�s�8�n������c�"rc���[S5nURR[U55up#UR	U[[55 US[[5nUR	U[5 grP)rNrgrurrUr�rVrSs     r�testRecvFromIntoMemoryview�'BufferIOTest.testRecvFromIntoMemoryviewFsX����o���}�}�2�2�:�c�?�C��������S��*��)�3�s�8�n������c�"rc�r�[S5nUR[URRUS5 g)Nr�rQ)rNrFrrgrurHs  r�testRecvFromIntoSmallBuffer�(BufferIOTest.testRecvFromIntoSmallBufferOs)����l�����*�d�m�m�&A�&A�3��Mrc�B�URR[5 grrKr�s r�_testRecvFromIntoSmallBuffer�)BufferIOTest._testRecvFromIntoSmallBufferTrNrc��[5nURRU5 URRUS5 gr*)rNrgrurHs  r�testRecvFromIntoEmptyBuffer�(BufferIOTest.testRecvFromIntoEmptyBufferWs/���k���
�
�#�#�C�(��
�
�#�#�C��+rrNr	)r�r�r�r�r�rDrIrM�_testRecvIntoBytearrayrP�_testRecvIntoMemoryviewrTrWrZ�_testRecvFromIntoBytearrayr]�_testRecvFromIntoMemoryviewr`rcrf�_testRecvFromIntoEmptyBufferr�rrrr>r>sh��B�#�!�#�0��#�1��#�!�#�"8��#�#9��N�
!�,�
$:� rr>i�����c��[[S5(dg[SSS9nU UH#nUR
S5(dM SSS5 g SSS5 g![[[
4a gf=f!,(df   g=f)N�AF_TIPCFz
/proc/modulesrr�ztipc T)r6r7r8�FileNotFoundError�IsADirectoryErrorrSr)rr�
s  r�isTipcAvailablerscs����6�9�%�%�����7�3��

��D����w�'�'��
���
���
�0�/�B�����
���s(�
A�A2�A2�A2�A/�.A/�2
Bz6TIPC module is not loaded, please 'sudo modprobe tipc'c��\rSrSrSrSrg)�TIPCTestiwc�&�[R"[R[R5n[R"[R[R5nURUR5 URUR5 UR[R[RS5 [R[[[4nURU5 [R[[[[[-
S-5-S4nUR[ U5 UR#S5upVUR%UR'5U5 UR%U[ 5 g)Nr
r4rrQ)r7rprYr�rDrvrZr[�TIPC_ADDR_NAMESEQ�
TIPC_STYPE�
TIPC_LOWER�
TIPC_UPPERr��TIPC_ADDR_NAMEr�rQrVrtrUr,)r�rr�srvaddr�sendaddrrW�recvaddrs       r�testRDM�TIPCTest.testRDMzs���m�m�F�N�N�F�O�O�<���m�m�F�N�N�F�O�O�<������	�	�"�����	�	�"����v�(�(�&�*=�*=�q�A��+�+�Z��J�(��������)�)�:��S�*�z�"9�Q�!>�?�?��D���
�
�3��!����T�*�
��������*�H�5�����c�"rrN)r�r�r�r�rr�rrrruruws��#rruc�6�\rSrSrS	SjrSrSrSrSrSr	g)
�TIPCThreadableTesti�c�h�[RRXS9 [RU5 gr�r8r�s  rr��TIPCThreadableTest.__init__�s'�����"�"�4�"�A�����%rc��[R"[R[R5UlUR	URR
5 URR
[R[RS5 [R[[[4nURRU5 URR5 UR5 URR!5uUlUlUR	UR"R
5 gr�)r7rprdrr�rDrvrZr[rwrxryrzr�r�r�rDrErF)r�r|s  rr��TIPCThreadableTest.setUp�s����=�=�����1C�1C�D�����������'������F�-�-�v�/B�/B�A�F��+�+�Z��J�(�����
�
�g��������� � �"�#'�8�8�?�?�#4� ��	�4�=�����	�	���(rc���[R"S5 [R"[R[R5UlUR
UR
R5 [R[[[[[-
S-5-S4nUR
RU5 UR
R5Ulg)NrJr4r)rKrLr7rprdrr�rDr{rxryr�rzrMr,�cliaddr)r�ris  rr��TIPCThreadableTest.clientSetUp�s���	
�
�
�3���=�=�����1C�1C�D�����������'��%�%�z��S�*�z�"9�Q�!>�?�?��D����������x�x�+�+�-��rc��URRS5nURU[5 URURUR
5 grP)rErRrUrVr�rFrIs  rrX�TIPCThreadableTest.testStream�s<���i�i�n�n�T�"������c�"�������t�}�}�5rc�v�URR[5 URR5 grr[r�s rr]�TIPCThreadableTest._testStream�r_r)rr�rErFrNr	r`rrrr�r��s��&�
)�
.�6�
rr�c�2�\rSrSrSrSrSrSrSrSr	g)	�ContextManagersTesti�c�X�[R"5nURUR5 SSS5 URWR5 [R"5nUR	5 SSS5 URUR5 [R"5nUR[URS5 SSS5 URUR5 g!,(df   N�=f!,(df   N�=f!,(df   NL=f�NrN)r7rbr�rrDrFr<r�r�s  r�_testSocketClass�$ContextManagersTest._testSocketClass�s���
�]�]�_�����T�\�\�*��������%�
�]�]�_���J�J�L��������%�
�]�]�_�����g�t�|�|�V�<��������%��_���_���_�s#�C9�*D
�3"D�9
D�

D�
D)c��URR5upURUR5 UR	S5nURU5 grP�r�rDr�rDrRr��r�rErirs    r�testCreateConnectionBase�,ContextManagersTest.testCreateConnectionBase��?���Y�Y�%�%�'�
������
�
�#��y�y�������T�rc�h�URR5n[R"U5nUR	UR
5 UR
S5 URURS5S5 SSS5 URWR
5 g!,(df   N*=f)NrNrQ)
r�r,r7rVrbr�r�rUrRr�r�r�r�s   r�_testCreateConnectionBase�-ContextManagersTest._testCreateConnectionBase�sz���)�)�'�'�)��
�
%�
%�g�
.�$����T�\�\�*��L�L�� ����T�Y�Y�t�_�f�5�/�	
������%�	/�
.�s�AB#�#
B1c��URR5upURUR5 UR	S5nURU5 grPr�r�s    r�testCreateConnectionClose�-ContextManagersTest.testCreateConnectionClose�r�rc�0�URR5n[R"U5nUR	5 SSS5 URWR5 UR[URS5 g!,(df   NK=fr�)
r�r,r7rVrDrr�rFr<r�r�s   r�_testCreateConnectionClose�.ContextManagersTest._testCreateConnectionClose�sa���)�)�'�'�)��
�
%�
%�g�
.�$��J�J�L�/�������%����'�4�<�<��8�/�
.�s�B�
BrN)
r�r�r�r�r�r�r�r�r�r�rrrr�r��s��&��&��9rr�c��\rSrSr\R
"\"\S5S5\R"SSS5S55r
SrS	rS
r
\R"\SLS5S
5r\R"\SLS5S5rSrSrg)�InheritanceTesti�rvzSOCK_CLOEXEC not definedr4r�
r
c�R�[R"[R[R[R-5nUR	UR
[R5 UR
UR55 SSS5 g!,(df   g=fr)r7r�rdrvrUr�rb�get_inheritabler3s  r�test_SOCK_CLOEXEC�!InheritanceTest.test_SOCK_CLOEXEC�sr���]�]�6�>�>�!�-�-��0C�0C�C�E�HI����Q�V�V�V�%7�%7�8����Q�.�.�0�1�E�E�E�s
�A
B�
B&c��[R"5nU URUR5S5 SSS5 g!,(df   g=fr�)r7rUr�r�s  r�test_default_inheritable�(InheritanceTest.test_default_inheritable�s3���}�}���
����T�1�1�3�U�;��T�T�s�!A�
Ac��[R"5nU UR5nUR5 U URUR	5S5 SSS5 SSS5 g!,(df   N=f!,(df   g=fr�)r7rwrDrUr�)r�r��newsocks   r�test_dup�InheritanceTest.test_dup�s\���}�}���
��h�h�j�G��J�J�L��� � ��!8�!8�!:�E�B���T�����T�s"�#A>�!A-�A>�-
A;	�7A>�>
Bc�*�[R"5nU URS5 URUR5S5 URS5 URUR5S5 SSS5 g!,(df   g=f)NTF)r7�set_inheritablerUr�r�s  r�test_set_inheritable�$InheritanceTest.test_set_inheritable�sh���}�}���
�� � ��&����T�1�1�3�T�:�� � ��'����T�1�1�3�U�;��T�T�s�A#B�
BNr2c���[R"5nU UR5nURUR5S5 [R"U[R
5nU[R)-n[R"U[RU5 URUR5S5 SSS5 g!,(df   g=fr@)r7r1rUr�r5�F_GETFD�
FD_CLOEXEC�F_SETFD)r�r�r@r�s    r�test_get_inheritable_cloexec�,InheritanceTest.test_get_inheritable_cloexecs����}�}���
�����B����T�1�1�3�U�;��K�K��E�M�M�2�E��e�&�&�&�&�E��K�K��E�M�M�5�1����T�1�1�3�T�:��T�T�s�B0C�
Cc���[R"5nU UR5nUR[R"U[R5[R
-[R
5 UR
S5 UR[R"U[R5[R
-S5 SSS5 g!,(df   g=f)NTr)r7r1rUr5r�r�r�)r�r�r@s   r�test_set_inheritable_cloexec�,InheritanceTest.test_set_inheritable_cloexecs����}�}���
�����B����U�[�[��U�]�]�;�e�>N�>N�N�"�-�-�
/�
� � ��&����U�[�[��U�]�]�;�e�>N�>N�N��
 �
�T�T�s�B<C�
C+c��[R"5upURUR5 URUR5 UR	UR5S5 UR	UR5S5 gr�)r7rxr�rDrUr�)r�r�rYs   r�test_socketpair�InheritanceTest.test_socketpairsd���"�"�$���������!�������!�����+�+�-�u�5�����+�+�-�u�5rr)r�r�r�r�r"r�r6r7rr�
r�r�r�r�r�r5r�r�r�r�rrrr�r��s���
������8�3�5��#�#�A�q�"�-�2�.�5�2�<�
C�<��_�_�U�d�]�L�1�;�2�;��_�_�U�d�]�L�1�	 �2�	 �6rr�r1zSOCK_NONBLOCK not definedc�R�\rSrSrS	Sjr\R"SSS5S5rSrg)
�NonblockConstantTesti'c�T�U(a�URUR[R5 URUR	5U5 UR[R"U[R[R5[R-5 US:Xa URUR55 gURUR55 gURUR[R5 URUR	5S5 UR[R"U[R[R5[R-5 URUR55 gr*)rUr�r7rdrrr5r|
rOr}
rbr{
)r�rG�nonblockrqs    r�
checkNonblock�"NonblockConstantTest.checkNonblock*s������Q�V�V�V�%7�%7�8����Q�\�\�^�W�5��O�O����A�u�}�}�b�m�m�<�r�}�}�L�
N��!�|�� � �����1�����
�
��0����Q�V�V�V�%7�%7�8����Q�\�\�^�T�2�������A�u�}�}�b�m�m�<�r�}�}�L�
N��O�O�A�M�M�O�,rr4r�
r
c�:�[R"[R[R[R-5nUR	U5 URS5 UR	USS9 URS5 UR	U5 UR
S5 UR	USS9 UR
S5 UR	USS9 URS5 UR	USS9 SSS5 [R"5n[R"S5 [R"5nUR	U5 SSS5 [R"S5 [R"5nUR	US5 SSS5 [R"S5 [R"5nUR	USS9 SSS5 [R"S5 [R"5nUR	US5 SSS5 [R"U5 g!,(df   GNP=f!,(df   GN=f!,(df   N�=f!,(df   N�=f!,(df   Nk=f)NTF)r�g@rzrz
)	r7r�rdr1r�r2rBrorp)r�rG�ts   r�test_SOCK_NONBLOCK�'NonblockConstantTest.test_SOCK_NONBLOCKCs����]�]�6�>�>�!�-�-��0D�0D�D�F�IJ����q�!�
�M�M�$�����q�5��1�
�M�M�%� ����q�!�
�L�L������q�5��1�
�L�L������q�#��.�
�M�M�$�����q�5��1�F�
�$�$�&��� � ��%�
�]�]�_�����q�!��� � ��&�
�]�]�_�����q�%�(��� � ��%�
�]�]�_�����q�#��.��� � ��&�
�]�]�_�����q�%�(��� � ��#�7F�F�� �_���_���_���_�s=�B8I�I�
I*�I;�J�
I�
I'�*
I8�;
J	�
JrN)Trz
)	r�r�r�r�r�rr�
r�r�rrrr�r�'s*��-�2
�#�#�A�q�"�-�$�.�$rr�rdrezneed multiprocessingc�B�\rSrSr\S5rSrSrSrSr	Sr
Srg	)
�TestSocketSharingiec��UR5nUR5n[R"U5nUR5upVUR	U5 UR5 UR5 gr)r�r7�	fromsharerDr�rD)r�q�sdataryrGrYr�s       r�remoteProcessServer�%TestSocketSharing.remoteProcessServerjsW��������%�%�'�����U�#�����
���	�
�
�7��
���
�	���	rc��[R"5n[R"URU4S9nUR	5 UR
R
UR5nUR
R5nUR
R5 URU5 SnURU5 [R"U5n/nURS5nU(dOURU5 M,UR5 SRU5nUR!X�5 UR5 g)N�r
r$s
slapmahfror�r)�multiprocessingr��Processr�r
r��share�pidr,rDr�r7rVrRr4rrU)	r�r�rArriryrG�m�receiveds	         r�	testShare�TestSocketSharing.testSharexs���

�!�!�#���#�#�4�+C�+C�1�$�O��	���	��y�y���q�u�u�%���y�y�$�$�&���	�	����	���d�� ��	���g��
�$�$�T�*������6�6�#�;�D���
�H�H�T�N�	�
	
���	��8�8�A�;������+�	���rc��URR[R"55nUR	[
[RUSS5 UR	[
[RUS-5 g)Nr�rN)r�r�rO�getpidrFrr7r�)r�rs  r�testShareLength�!TestSocketSharing.testShareLength�sT���y�y���r�y�y�{�+�����*�f�&6�&6��S�b�	�B����*�f�&6�&6��V��Drc��URUR5S5 URUR5UR55 URURUR5 URURUR5 URS:wa'URURUR5 ggr*)rUrr8r�r9)r��org�others   r�compareSockets� TestSocketSharing.compareSockets�s���	
������)�4�0�������)�5�+;�+;�+=�>�������U�\�\�2�������5�:�:�.��9�9��>����S�Y�Y����4�rc��URR[R"55n[R
"U5nUR
URU5 UR5 g!UR5 f=fr)r�r�rOr�r7r�r�rD)r�rrGs   r�testShareLocal� TestSocketSharing.testShareLocal�sV���y�y���r�y�y�{�+�����T�"��	�����	�	�1�-�
�G�G�I��A�G�G�I�s�A3�3Bc�(�[R[R/n[R[R/nUH�nUH�n[R"X45nUR
[R"55n[R"U5nURXW5 UR5 UR5 M� M� g![
a M�f=f!UR5 f=f!UR5 f=fr)r7r�r�rdrKr<r�rOr�r�r�rD)r��families�typesrr�r�r�shareds        r�	testTypes�TestSocketSharing.testTypes�s����N�N�F�O�O�4���#�#�V�%6�%6�7���A����#�]�]�1�0�F�#�!�<�<��	�	��4�D�#�-�-�d�3�F�'��+�+�F�;������L�L�N���������������L�L�N�s6�C�#:C?�C*�/C?�
C'�&C'�*C<�<C?�?DrN)r�r�r�r�r:r�r�r�r�r�r�r�rrrr�r�es1��
����!�FE�
5� �#rr�c���\rSrSrSrSrSr\Rr	\
S5r\
S5rSr
SrS	rS
rSrSrS
rSrSrSrSrSrSrSrSrSrSrSrSrSr Sr!Sr"Sr#Sr$Sr%S r&g!)"�SendfileUsingSendTesti�i�r�rc�B�SnSR[UR5Vs/sH5n[R"[
R5R5PM7 sn5n[[RS5nU"URUR5HnURU5 M SSS5 [[RS5nUR5UlSSS5 gs snf!,(df   NL=f!,(df   g=f)Nc3�L# �X:�aUv� X-nX:�aMU(aUv� gg7frr)�total�steps  r�chunks�0SendfileUsingSendTest.setUpClass.<locals>.chunks�s,����,��
��
���,�����s�$�
$rr�r3)rr��BUFSIZE�random�choice�string�
ascii_lettersr�r8rr*�FILESIZEr3rh�FILEDATA)rr�r��chunkr�csizes      r�
setUpClass� SendfileUsingSendTest.setUpClass�s���	����#(����#5�7�#5�a�!�-�-��(<�(<�=�D�D�F�#5�7�8��
�)�"�"�D�
)�Q�����c�k�k�:�������;�*��)�"�"�D�
)�Q��6�6�8�C�L�*�
)��7�
)�
)��*�
)�s�<C:�6C?�D�?
D
�
Dc�L�[R"[R5 gr)rr�r*)rs r�
tearDownClass�#SendfileUsingSendTest.tearDownClass�s������)�)�*rc��URR[R5 URR	5upURUR
5 UR
UR5 U$r)r�rBrr�
rD�TIMEOUTr�rDrhs   r�accept_conn�!SendfileUsingSendTest.accept_conn�sS���	�	���W�1�1�2��Y�Y�%�%�'�
��������%�����
�
�#��rc��/nURUR5nU(dOURU5 M6SRU5$r�)rRr�r4r)r�rEr�r�s    r�	recv_data�SendfileUsingSendTest.recv_data�sD������I�I�d�l�l�+�E����O�O�E�"�	�
�x�x��!�!rc��[US5$)N�_sendfile_use_send�r�r�s  r�meth_from_sock�$SendfileUsingSendTest.meth_from_sock�s���t�1�2�2rc��URR5n[[RS5n[
R"U5o2nURU5nU"U5nURXPR5 URUR5UR5 SSS5 SSS5 g!,(df   N=f!,(df   g=f)Nr3�r�r,r8rr*r7rVr
rUr��tell�r�r��filer��meth�sents      r�_testRegularFile�&SendfileUsingSendTest._testRegularFiles����)�)�'�'�)���I�$�$�d�+��
�
%�
%�g�
.�$����&�&�t�,�D���:�D����T�=�=�1����T�Y�Y�[�$�-�-�8�	9=�
.�
.����
.�
.�s%�C�
AB=�,C�=
C	�C�
Cc���UR5nURU5nUR[U5UR5 URX R
5 gr�r
r

rUr�r�r��r�rErs   r�testRegularFile�%SendfileUsingSendTest.testRegularFile
�H�����!���~�~�d�#������T��D�M�M�2�����}�}�-rc��URR5n[R"UR5n[
R"U5o2nURU5nURX@R5 URUR5UR5 UR[
RURU5 SSS5 SSS5 g!,(df   N=f!,(df   g=fr)r�r,�io�BytesIOr�r7rVrErUr�r
rFrRrS)r�r�r
r�r
s     r�_testNonRegularFile�)SendfileUsingSendTest._testNonRegularFiles����)�)�'�'�)���z�z�$�-�-�(��
�
%�
%�g�
.�$����=�=��&�D����T�=�=�1����T�Y�Y�[�$�-�-�8����f�6�6�"�9�9�4�
A�	9=�
.�
.����
.�
.�s%�C7�BC&�C7�&
C4	�0C7�7
Dc���UR5nURU5nUR[U5UR5 URX R
5 grr
r
s   r�testNonRegularFile�(SendfileUsingSendTest.testNonRegularFiler
rc�.�URR5n[RS-n[	US5 UR[RU5 SSS5 [	US5n[R"U5oCnURU5nU"U5nURUS5 URUR5S5 SSS5 SSS5 g!,(df   N�=f!,(df   N(=f!,(df   g=f)N�2r�r3r)r�r,rr*r8r�r�r7rVr
rUr
)r�r��filenamer
r�r
r
s       r�_testEmptyFileSend�(SendfileUsingSendTest._testEmptyFileSend's����)�)�'�'�)���#�#�c�)��
�(�D�
!��O�O�I�,�,�h�7�"��H�d�#��
�
%�
%�g�
.�$����&�&�t�,�D���:�D����T�1�%����T�Y�Y�[�!�,�	9=�
.�
.�"�
!��9=���
.�
.�s0�!C$�D�AC5�D�$
C2�5
D	�?D�
Dc�j�UR5nURU5nURUS5 gr�)r
r

rUr
s   r�testEmptyFileSend�'SendfileUsingSendTest.testEmptyFileSend3s.�����!���~�~�d�#������s�#rc���URR5n[[RS5n[
R"U5o2nURU5nU"USS9nURXPRS-
5 URUR5UR5 SSS5 SSS5 g!,(df   N=f!,(df   g=f)Nr3�)�offsetr
r
s      r�_testOffset�!SendfileUsingSendTest._testOffset:s����)�)�'�'�)���I�$�$�d�+��
�
%�
%�g�
.�$����&�&�t�,�D���T�*�D����T�=�=�4�#7�8����T�Y�Y�[�$�-�-�8�	9=�
.�
.����
.�
.�s%�C�
A!B?�.C�?
C
	�	C�
Cc���UR5nURU5nUR[U5URS-
5 URX R
SS5 g)Nr1
r
r
s   r�
testOffset� SendfileUsingSendTest.testOffsetCsT�����!���~�~�d�#������T��D�M�M�D�$8�9�����}�}�T�U�3�4rc��URR5n[[RS5n[
R"U[RS9nU U SnURU5nU"X$S9nURXd5 URUR5U5 SSS5 SSS5 g!,(df   N=f!,(df   g=f)Nr3rz�GKL�rZ�r�r,r8rr*r7rVrrCr
rUr
�r�r�r
r�rZr
r
s       r�
_testCount� SendfileUsingSendTest._testCountKs����)�)�'�'�)���I�$�$�d�+���'�'��07�0H�0H�J��
�4��E��&�&�t�,�D���*�D����T�)����T�Y�Y�[�%�0��T�T�4�4��T�T��%�C
�AB9�(C
�9
C	�C
�

Cc��SnUR5nURU5nUR[U5U5 URX0RSU5 g)Nr9
�r
r

rUr�r��r�rZrErs    r�	testCount�SendfileUsingSendTest.testCountWsP�������!���~�~�d�#������T��E�*�����}�}�V�e�4�5rc��URR5n[[RS5n[
R"U[RS9nU U SnURU5nU"X$S9nURXd5 URUR5U5 SSS5 SSS5 g!,(df   N=f!,(df   g=f)Nr3rzr
r:
r;
r<
s       r�_testCountSmall�%SendfileUsingSendTest._testCountSmall`s����)�)�'�'�)���I�$�$�d�+���'�'��07�0H�0H�J��
�4��E��&�&�t�,�D���*�D����T�)����T�Y�Y�[�%�0��T�T�4�4��T�T�r?
c��SnUR5nURU5nUR[U5U5 URX0RSU5 gr�rA
rB
s    r�testCountSmall�$SendfileUsingSendTest.testCountSmalllsP�������!���~�~�d�#������T��E�*�����}�}�V�e�4�5rc��URR5n[[RS5n[
R"USS9o2nSnURU5nU"USUS9nURXd5 URUR5US-5 SSS5 SSS5 g!,(df   N=f!,(df   g=f)Nr3r4rz駆��)r2
rZ)
r�r,r8rr*r7rVr
rUr
r<
s       r�_testCountWithOffset�*SendfileUsingSendTest._testCountWithOffsetus����)�)�'�'�)���I�$�$�d�+��
�
%�
%�g�q�
9�T�4�4��E��&�&�t�,�D���T��7�D����T�)����T�Y�Y�[�%�$�,�7�DH�
9�
9�4�4��
9�
9�s%�
B>�AB-�B>�-
B;	�7B>�>
Cc���SnUR5nURU5nUR[U5U5 URX0RSUS-5 g)NrL
rM
rA
rB
s    r�testCountWithOffset�)SendfileUsingSendTest.testCountWithOffsetsT�������!���~�~�d�#������T��E�*�����}�}�T�%��*�=�>rc��URR5n[[RS5n[
R"U5o2nURS5 URU5nUR[XB5 UR[URU5 SSS5 SSS5 g!,(df   N=f!,(df   g=f)Nr3F)r�r,r8rr*r7rVr2r
rFrrE�r�r�r
r�r
s     r�_testNonBlocking�&SendfileUsingSendTest._testNonBlocking�s����)�)�'�'�)���I�$�$�d�+��
�
%�
%�g�
.�$������U�#��&�&�t�,�D����j�$�5����j�$�-�-��>�	9=�
.�
.����
.�
.�s%�C	�
AB8�'C	�8
C	�C	�	
Cc�t�UR5nURS5(aURS5 gg)Nr�z$was not supposed to receive any data)r
rRr?�r�rEs  r�testNonBlocking�%SendfileUsingSendTest.testNonBlocking�s/�����!���9�9�T�?�?��I�I�<�=�rc��URR5n[[RS5n[
R"U[RS9nU U URU5nU"U5nURXPR5 SSS5 SSS5 g!,(df   N=f!,(df   g=f)Nr3rz)r�r,r8rr*r7rVrrCr
rUr�r
s      r�_testWithTimeout�&SendfileUsingSendTest._testWithTimeout�s����)�)�'�'�)���I�$�$�d�+���'�'��07�0H�0H�J��
�4��&�&�t�,�D���:�D����T�=�=�1��T�T�4�4��T�T�s$�B4�5B#�B4�#
B1	�-B4�4
Cc���UR5nURU5nUR[U5UR5 URX R
5 grr
r
s   r�testWithTimeout�%SendfileUsingSendTest.testWithTimeout�r
rc�p�URR5n[[RS5n[
R"U5nURS5 URU5nUR[XB5 SSS5 SSS5 g!,(df   N=f!,(df   g=f)Nr3g{�G�z�?)r�r,r8rr*r7rVrBr
rFr�rT
s     r�_testWithTimeoutTriggeredSend�3SendfileUsingSendTest._testWithTimeoutTriggeredSend�s���)�)�'�'�)��
�)�"�"�D�
)�T��)�)�'�2�d�����%��*�*�4�0���!�!�,��;�3�*�
)�2�2��*�
)�s#�B'�9B�B'�
B$	� B'�'
B5c�r�UR5nURS5 [R"S5 g)Ni�Xr
)r
rRrKrLrX
s  r�testWithTimeoutTriggeredSend�2SendfileUsingSendTest.testWithTimeoutTriggeredSend�s'�����!���	�	�%���
�
�1�
rc��grrr�s r�_test_errors�"SendfileUsingSendTest._test_errors�r�rc
���[[RS5n[R"[RS9nURU5nUR
[SX15 SSS5 SSS5 [[RSS9n[R"5nURU5nUR
[SX15 SSS5 SSS5 [[RS5n[R"5nURU5nUR
[SX1SS	9 UR
[SX1S
S	9 UR
[SX1SS	9 UR
[SX1SS	9 SSS5 SSS5 g!,(df   GN)=f!,(df   GN3=f!,(df   N�=f!,(df   N�=f!,(df   N]=f!,(df   g=f)
Nr3r�rdrr�zbinary modezpositive integerr)
r:
rJrr�)	r8rr*r7rKr
r"rr�)r�r
rGr
s    r�test_errors�!SendfileUsingSendTest.test_errors�s���
�)�"�"�D�
)�T����F�$5�$5�6�!��*�*�1�-���&�&��
�t�;�7�*�
�)�"�"�W�
5������A��*�*�1�-���&�&��
�t�;�!�6�
�)�"�"�D�
)�T�����A��*�*�1�-���&�&�y�2D�'+��'�>��&�&�y�2D�'+��'�>��&�&�z�3E�'+��'�<��&�&�z�3E�'+��'�=�!�*�
)�7�6��*�
)��!���6�
5��!���*�
)�sk�#F�)F	�'F�F>�%)F-�F>�8G �A*G�8G �	
F	�F�
F*�-
F;	�7F>�>
G�
G	�G � 
G.rN)'r�r�r�r�r�r�r�rrCr
r:r
r
r
r

r
r
r
r#
r&
r+
r.
r3
r6
r=
rC
rF
rI
rN
rQ
rU
rY
r\
r_
rb
re
rh
rk
r�rrrr�r��s���
!�H��G��H��&�&�G��5��5�$�+��+��"�3�9�.�A�.�
-�$�9�5�
1�6�
1�6�8�?�?�>�2�.�<��
�=rr�rEz%os.sendfile() required for this test.c��\rSrSrSrSrg)�SendfileUsingSendfileTesti�c��[US5$)NrSr
r�s  rr
�(SendfileUsingSendfileTest.meth_from_sock�s���t�5�6�6rrN)r�r�r�r�r
r�rrrrn
rn
�s��7rrn
zAF_ALG requiredc���\rSrSrSr\R"SS5S5rSr\R"SS5S5r	\R"SS	5S
5r
\R"SS5S5rSrS
r
Srg)�LinuxKernelCryptoAPIi�c��[R"[R[RS5nURX45 U$![a5nUR5 [R"[U5X5eSnAff=fr*)	r7rZrUr�rqrDr"r#r)r��typrr�r�s     r�
create_alg�LinuxKernelCryptoAPI.create_alg�sj���}�}�V�]�]�F�,A�,A�1�E��	��I�I�s�k�"��K��!�	7��J�J�L��#�#�C��F�C�6�6��	7�s�A
�

B	�0B�B	rPrXc���[RS5nURSS5nUR5up4U UR	S5 URUR
S5U5 SSS5 UR5up4U URS[R5 URS[R5 URS[R5 URS	5 URUR
S5U5 SSS5 SSS5 g!,(df   N�=f!,(df   N(=f!,(df   g=f)
N�@ba7816bf8f01cfea414140de5dae2223b00361a396177a9cb410ff61f20015ad�hash�sha256sabcr�a�b�cr)
r,�fromhexru
rDr�rUrRr\r7�MSG_MORE)r�r:�algo�opr�s     r�test_sha256� LinuxKernelCryptoAPI.test_sha256�s����=�=�":�;��
�_�_�V�X�
.�$��K�K�M�E�B���
�
�6�"�� � ������x�8���K�K�M�E�B������f�o�o�.�����f�o�o�.�����f�o�o�.������� � ������x�8��/�
.����
���/�
.�s;�E�3D0�0E�BE�E�0
D>	�:E�
E	�E�
E c��SnSn[RS5nURSS5nUR[R
[RU5 UR5upVU URU5 URURS5U5 SSS5 SSS5 g!,(df   N=f!,(df   g=f)NsPython loves AF_ALGswhat do ya want for nothing?�(193dbb43c6297b47ea6277ec0ce67119a3f3aa66ry
z
hmac(sha1)r)r,r~
ru
rvr7�SOL_ALG�ALG_SET_KEYrDr�rUrR)r��keyrr:r�
r�
r�s       r�test_hmac_sha1�#LinuxKernelCryptoAPI.test_hmac_sha1s���%��.���=�=�!K�L��
�_�_�V�\�
2�d��O�O�F�N�N�F�,>�,>��D��K�K�M�E�B���
�
�4� �� � ������x�8��3�
2����3�
2�s$�AC�03B4�#C�4
C	�>C�
CrQc��[RS5n[RS5nSn[RS5n[U5nURSS5nUR	[
R[
RU5 UR5upxU UR[
RU[
RS9 URU5 URURU5U5 SSS5 UR5upxU URU/[
RUS9 URURU5U5 SSS5 S	n	U/U	-n
UR5upxU URU
[
RUS9 URXY-5nSSS5 UR[W5XY-5 URUSUU5 UR5upxU URU/[
RUS9 URXY-5nSSS5 UR[W5XY-5 URX�U	-5 SSS5 g!,(df   GN�=f!,(df   GN4=f!,(df   N�=f!,(df   N}=f!,(df   g=f)
N� 06a9214036b8a15b512e03d534120006� 3dafba429d9eb430b422da802c9fac41sSingle block msg� e353779c1079aeb82708942dbe77181a�skcipherzcbc(aes))r�
�ivr�)r�
r�
rQ)r,r~
r�ru
rvr7r�
r�
rD�
sendmsg_afalg�ALG_OP_ENCRYPTr
r�rUrR�ALG_OP_DECRYPT)
r�r�
r�
rW�
ciphertext�msglenr�
r�
r��
multiplier�longmsg�enc�decs
             r�test_aes_cbc�!LinuxKernelCryptoAPI.test_aes_cbcsE���m�m�>�?��
�]�]�=�
>��!���]�]�#E�F�
��S���
�_�_�Z��
4���O�O�F�N�N�F�,>�,>��D��K�K�M�E�B��� � �F�$9�$9�b�'-���!�8��
�
�3��� � ������*�=�	��K�K�M�E�B��� � �*��$*�$9�$9�b�!�B�� � ������#�6���J��e�j�(�G��K�K�M�E�B��� � ��$*�$9�$9�b�!�B��g�g�f�1�2���
���S��X�v�':�;����S��&�\�:�6��K�K�M�E�B��� � �#��$*�$9�$9�b�!�B��g�g�f�1�2���
���S��X�v�':�;����S�
�"2�3�A5�
4�������������75�
4�sp�AK�#A I<�K�AJ�!$K�3J �8AK�4J1�:9K�<
J	�K�
J	�K� 
J.	�*K�1
J?	�;K�
Krc
�	�[R"S5nUbUS:�aUS:aURS5 [R	S5n[R	S5n[R	S5n[R	S5n[R	S	5n[R	S
5n[U5n[U5n	UR
SS5n
U
R[R[RU5 U
R[R[RSU5 U
R5up�U UR[RUU	[RS
9 UR!U[R5 UR!U5 UR#U	[U5-U-5n
UR%XmX�*5 UR%X}U*S5 SSS5 U
R5up�U XT-nURU/[RUU	S9 UR#U	[U5-U-5n
UR%XmX�*5 UR%X}U*S5 SSS5 [&R("S5R*nU
R5up�U XT-nUR-U/[R[R.U"[R5/[R[R0U"[U55U-/[R[R2U"U	5/45 UR#[U5U-5n
UR%XmX�*5 UR%X}U*S5 SSS5 U
R5up�U XV-U-nURU/[R4UU	S9 UR#[U5U-
5n
UR%XMU	S5 SSS5 SSS5 g!,(df   GN?=f!,(df   GN�=f!,(df   N�=f!,(df   NL=f!,(df   g=f)N�Linux)r�
r�)r�
r!zupstream Linux kernel issue� c939cc13397c1d37de6ae0e1cb7c423c�b3d8cc017cbb89b39e0f67e2� c3b3c41f113a31b73d9a5cd432103069� 24825602bd12a984e0092d3e448eda5f� 93fe7d9e9bfd10348a5606e5cafa7354� 0032a1dc85f1c9786925a2e71d8272dd�aeadzgcm(aes))r�
r�
�assoclenr�)r�
r�
r�
r4)r�_get_kernel_versionr�r,r~
r�ru
rvr7r�
r�
�ALG_SET_AEAD_AUTHSIZErDr�
r�
r
r�rRrUr:�Structr�r��
ALG_SET_OP�
ALG_SET_IV�ALG_SET_AEAD_ASSOCLENr�
)r��kernel_versionr�
r�
�plain�assoc�expected_ct�expected_tag�taglenr�
r�
r�
r��resrW�pack_uint32s                r�test_aead_aes_gcm�&LinuxKernelCryptoAPI.test_aead_aes_gcm9s��� �4�4�W�=���%���(�^�g�-E��
�
�;�<��m�m�>�?��
�]�]�5�
6���
�
�@�A���
�
�@�A���m�m�$F�G���}�}�%G�H���\�"���u�:��
�_�_�V�Z�
0�D��O�O�F�N�N�F�,>�,>��D��O�O�F�N�N�F�,H�,H� �&�
*��K�K�M�E�B��� � �F�$9�$9�b�*2�&�/�/�!�K��
�
�5�&�/�/�2��
�
�5�!��g�g�h��U��3�f�<�=��� � ��(�7�.C�D�� � ��F�7�8�}�=���K�K�M�E�B���m��� � �#��6�+@�+@�R�*2�!�4��g�g�h��U��3�f�<�=��� � ��(�7�.C�D�� � ��F�7�8�}�=�
�!�-�-��,�1�1�K��K�K�M�E�B���m���
�
��E��n�n�f�&7�&7��V�EZ�EZ�9[�\��n�n�f�&7�&7��S��W�9M�PR�9R�S��n�n�f�&B�&B�K�PX�DY�Z����g�g�c�#�h��/�0��� � ��(�7�.C�D�� � ��F�7�8�}�=���K�K�M�E�B���)�L�8��� � �#��6�+@�+@�R�*2�!�4��g�g�c�#�h��/�0��� � ��H�I��7��Y1�
0�������������Y1�
0�sq�A4Q8�B)P2�:Q8�A/Q�<Q8�C*Q�+Q8�AQ'�!Q8�2
Q	�<Q8�
Q	�Q8�
Q$	� Q8�'
Q5	�1Q8�8
Rc��URSS5n[R"S5nUR[R
[RU5 UR5up4U URS5nUR[U5S5 SSS5 SSS5 g!,(df   N=f!,(df   g=f)N�rng�drbg_pr_sha256r�)ru
rO�urandomrvr7r�
r�
rDrRrUr�)r�r�
�
extra_seedr�
r��rns      r�test_drbg_pr_sha256�(LinuxKernelCryptoAPI.test_drbg_pr_sha256~s����_�_�U�$4�
5�����B��J��O�O�F�N�N�F�,>�,>�
�K��K�K�M�E�B���W�W�R�[��� � ��R��"�-��	6�
5����	6�
5�s$�AB<�--B+�B<�+
B9	�5B<�<
C
c�R�[R"[R[RS5nU UR[5 UR5 SSS5 UR[5 URSS9 SSS5 UR[5 URS5 SSS5 UR[5 UR[RSS9 SSS5 UR[5 UR[RSS9 SSS5 SSS5 g!,(df   N�=f!,(df   N�=f!,(df   N�=f!,(df   N�=f!,(df   N[=f!,(df   g=f)Nr)r�
r
)r�
r�
r�)r7rZrUrFr�r�
r�
r�s  r�test_sendmsg_afalg_args�,LinuxKernelCryptoAPI.test_sendmsg_afalg_args�s���}�}�V�]�]�F�,A�,A�1�E��
��"�"�9�-��"�"�$�.��"�"�9�-��"�"�d�"�+�.��"�"�9�-��"�"�1�%�.��"�"�9�-��"�"�f�&;�&;�d�"�K�.��"�"�9�-��"�"�f�&;�&;�b�"�I�.��T�-�-��.�-��.�-��.�-��.�-���T�s��F�
E�F�;E�F�(E%�:F�E6�6F�F�2F�
E	�
F�
E"	�F�%
E3	�/F�6
F	�F�
F	�F�
F&c��[R"[R[RS5nURUR5 UR[5 URS5 SSS5 UR[S5 URS5 SSS5 UR[5 URS5 SSS5 UR[S5 URS5 SSS5 g!,(df   N�=f!,(df   N=f!,(df   Na=f!,(df   g=f)Nr)�
tttttttttttttrz
type too long)�ttttttttttttttr)r��?nnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnz
name too long)r��@nnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnn)
r7rZrUr�rDrFrqr�r"rr�s  r�test_length_restriction�,LinuxKernelCryptoAPI.test_length_restriction�s����}�}�V�]�]�F�,A�,A�1�E������
�
�#��
�
�0�
1��I�I�(�)�2�
�
#�
#�J��
@��I�I�(�)�A��
�
�0�
1��I�I�(�)�2�
�
#�
#�J��
@��I�I�(�)�A�
@�2�
1��
@�
@��2�
1��
@�
@�s0�%D�D �D1�4E�
D� 
D.�1
D?�
ErN)r�r�r�r�ru
rr�
r�
r�
r�
r�
r�
r�
r�
r�rrrrr
rr
�s���	�
�#�#�A�q�)�9�*�9�"9�
�#�#�A�q�)�&4�*�&4�P
�#�#�A�q�)�B8�*�B8�H
�#�#�A�q�)�.�*�.�J�$*rrr
rvr{c��\rSrSrSrSrg)�TestMacOSTCPFlagsi�c�B�UR[R5 gr)rr7�
TCP_KEEPALIVEr�s r�test_tcp_keepalive�$TestMacOSTCPFlags.test_tcp_keepalive�s������,�,�-rrN)r�r�r�r�r�
r�rrrr�
r�
�s��.rr�
�winzrequires Windowsc�"�\rSrSr1SkrSrSrg)�TestMSWindowsTCPFlagsi�>�
TCP_MAXSEG�TCP_KEEPCNT�TCP_NODELAY�TCP_FASTOPEN�TCP_KEEPIDLE�
TCP_KEEPINTVLc���[[5Vs/sHoRS5(dMUPM nnUVs/sHoUR;dMUPM nnUR	/US5 gs snfs snf)N�TCPzANew TCP flags were discovered. See bpo-32394 for more information)�dirr7r�
knownTCPFlagsrU)r�rG�provided�unknowns    r�test_new_tcp_flags�(TestMSWindowsTCPFlags.test_new_tcp_flags�sa��"�6�{�B�{�!�l�l�5�.A�A�{��B�&�F�h��4�3E�3E�*E�1�h��F�����W�O�	Q��C��Fs�A.�A.�A3�A3rN)r�r�r�r�r�
r�
r�rrrr�
r�
�s���M�Qrr�
c�t�\rSrSrSrSrSr\R"\	"\
S5(+=(d \	"\
S5(+S5\R"\RS5S	55r\R"\R "5(+S
5\R"\RS5S55rSrg
)�CreateServerTesti�c�T�[R"5n[R"SU45nUR	UR5SS5 UR	UR5SU5 SSS5 [R(au[R"SU4[RS9nUR	UR5SS5 UR	UR5SU5 SSS5 gg!,(df   N�=f!,(df   g=f)Nr.rr
r2r�)rr[r7�
create_serverrUr,r�r��r�r�r�s   r�test_address�CreateServerTest.test_address�s����-�-�/��
�
!�
!�;��"5�
6�$����T�-�-�/��2�K�@����T�-�-�/��2�D�9�7��%�%��%�%�u�d�m�-3�_�_�>�AE�� � ��!1�!1�!3�A�!6��>�� � ��!1�!1�!3�A�!6��=�>�>�&�7�
6��>�>�s�AD�7AD�
D�
D'c�Z�[R"S5nURUR[R5 URUR
[R5 SSS5 [R(a�[R"S[RS9nURUR[R5 URWR
[R5 SSS5 gg!,(df   N�=f!,(df   g=f)Nr-�r2rr�)
r7r�
rUr8r�r�rdrr�r�)r�r�rGs   r�test_family_and_type�%CreateServerTest.test_family_and_type�s���
�
!�
!�"2�
3�t����T�[�[�&�.�.�9����T�Y�Y��(:�(:�;�4��%�%��%�%�j����I�Q�� � ����6�?�?�;�� � ����F�,>�,>�?�J�I�&�4�
3��J�I�s�AD�,AD�
D�
D*c�v�[[S5(d4UR[5 [R"SSS9 SSS5 g[R"S5nUR[R[R5nURUS5 SSS5 [R"SSS9nUR[R[R5nURUS5 SSS5 g!,(df   g=f!,(df   N~=f!,(df   g=f)N�SO_REUSEPORT)r�rT)�
reuse_portr)
r6r7rFrr�
rarZr�
rUr�)r�r�r�s   r�test_reuse_port� CreateServerTest.test_reuse_port�s����v�~�.�.��"�"�:�.��$�$�%5�$�G�/�.��%�%�&6�7�4��o�o�f�&7�&7��9L�9L�M��� � ��a�(�8��%�%�&6�4�H�D��o�o�f�&7�&7��9L�9L�M���#�#�C��+�I�H�
/�.��8�7��I�H�s%�D� AD�>AD*�
D�
D'�*
D8rar]
r^
r|c�~�[R"S[RS9nSSS5 g!,(df   g=f)Nr�
r�)r7r�
r�r�s  r�test_ipv6_only_default�'CreateServerTest.test_ipv6_only_default�s$��
�
!�
!�*�V�_�_�
E��
E�
E�
E�s�.�
<�dualstack_ipv6 not supportedc���[R"S[RSS9nURUR[R5 SSS5 g!,(df   g=f)Nr�
T�r8�dualstack_ipv6)r7r�
r�rUr8r�s  r�test_dualstack_ipv6_family�+CreateServerTest.test_dualstack_ipv6_family�sH���
!�
!�*�V�_�_�15�7�:>����T�[�[�&�/�/�:�7�7�7�s�+A�
A'rN)r�r�r�r�r�
r�
r�
r"r�r6r!r�rr�r�
r7�has_dualstack_ipv6r�
r�rrrr�
r�
�s���	>�@�
,��_�_���.�9�9�9� ��-�8�8�7�9�����3�3�5R�S�L�T�9�L��_�_��2�2�4�4�3�5�
����3�3�5R�S�;�T�5�;rr�
c��\rSrSr\R
rSrSrSr	\
R"\RS5S5r\
R"\R""5(+S5\
R"\RS5S55r\
R"\R""5(+S5\
R"\RS5S	55rS
rg)�CreateServerFunctionalTesti�c�.^^�UU4Sjn[R"5mURTR5 [R"X!4S9nUR
"5 TR
URTR5 TR5 g)Nc�F>�U UR5upU TRTR5 URS5nU(dSSS5 SSS5 gUR	U5 SSS5 SSS5 g!,(df   N=f!,(df   g=frP)rDr�rqrRr�)r�rEr�rWrw
r�s    ��r�run�3CreateServerFunctionalTest.echo_server.<locals>.runsm�����+�+�-�����J�J�t�|�|�,��)�)�D�/�C���	����L�L��%�����T����s.�B�5B�B�B�0B�
B	�B�
B r�)	r�r�rBrqr
r
r�rr�)r�r�r�
r�rw
s`   @r�echo_server�&CreateServerFunctionalTest.echo_servers`���	&����!��������%��!�!��8�<������������T�\�\�2�
�	�	�rc��[R"US9nURUR5 URU5 UR	S5 URUR
S5S5 SSS5 g!,(df   g=f)Nr�rNrQ)r7rBrqrMr�rUrR)r�rir8r�s    r�echo_client�&CreateServerFunctionalTest.echo_clients\��
�]�]�&�
)�T��O�O�D�L�L�)��L�L����L�L�� ����T�Y�Y�t�_�f�5�	*�
)�
)�s�AA=�=
Bc��[R"5n[R"SU45nUR	U5 URSU4[R5 SSS5 g!,(df   g=f)NrMr.)rr[r7r�
r�
rr�r�
s   r�	test_tcp4�$CreateServerFunctionalTest.test_tcp4sW���-�-�/��
�
!�
!�2�t�*�
-�����T�"����k�4�0�&�.�.�A�.�
-�
-�s�4A+�+
A9r|c��[R"5n[R"SU4[RS9nURU5 UR
SU4[R5 SSS5 g!,(df   g=f)NrMr�r2�rr[r7r�
r�r�
rr�
s   r�	test_tcp6�$CreateServerFunctionalTest.test_tcp6sd���-�-�/��
�
!�
!�2�t�*�)/���:�=A����T�"����e�T�]�F�O�O�<�:�:�:�s�4A8�8
Br�
c��[R"5n[R"SU4[RSS9nURU5 UR
SU4[R5 SSS5 g!,(df   g=f)NrMTr�
r.)rr[r7r�
r�r�
rr�r�
s   r�test_dual_stack_client_v4�4CreateServerFunctionalTest.test_dual_stack_client_v4)si���-�-�/��
�
!�
!�2�t�*�V�_�_�15�7�:>����T�"����k�4�0�&�.�.�A�7�7�7���4A9�9
Bc��[R"5n[R"SU4[RSS9nURU5 UR
SU4[R5 SSS5 g!,(df   g=f)NrMTr�
r2rr�
s   r�test_dual_stack_client_v6�4CreateServerFunctionalTest.test_dual_stack_client_v63sh���-�-�/��
�
!�
!�2�t�*�V�_�_�15�7�:>����T�"����e�T�]�F�O�O�<�7�7�7�rrN)r�r�r�r�rrCrqr�
rrr"r�rr�r	r�r7r�
rrr�rrrr�
r�
�s����&�&�G��$6�B�����3�3�5R�S�=�T�=��_�_��2�2�4�4�3�5�
����3�3�5R�S�B�T�5�B��_�_��2�2�4�4�3�5�
����3�3�5R�S�=�T�5�=rr�
�send_fds�recv_fdsc��\rSrSrSrSrg)�SendRecvFdsTestsi=c	�D�SnSn[S5Vs/sHn[R"5PM nnURX5 UVVs/sHupVUPM	 nnn[R
"[R[R5up�U U	 [R"U[/U5 [R"U	[[5S-[U5S-5up�p�URX+5 SSS5 SSS5 URW
[5 UR[W5[U55 URWS5 [U5H7up�UupV[R"U[U5R!55 M9 [U5HEup�[R""US5nURU[U5R!55 MG gs snfs snnf!,(df   GN	=f!,(df   GN=f)Nc�r�UH1up[R"U5 [R"U5 M3 gr�rOrD)�pipesr|�fd2s   r�close_pipes�8SendRecvFdsTests.testSendAndRecvFds.<locals>.close_pipesBs$��!�������
�����
�"rc�B�UHn[R"U5 M grr)r5r@s  r�	close_fds�6SendRecvFdsTests.testSendAndRecvFds.<locals>.close_fdsGs���������rrr4rr�)r�rO�piper�r7rxr�rdrrVrr�rUr9r3rr�rh)r�rrr�r�rfd�wfdr5rm
rn
rW�fds2r�rir�rs                r�testSendAndRecvFds�#SendRecvFdsTests.testSendAndRecvFdsAs���	�
	�
%*�"�I�.�I�q�����I��.�����+�#(�)�5�x�s�s�5��)��(�(�����9K�9K�L���
�E��O�O�E�C�5�#�.�%+�_�_�U�C��H�q�L�#�c�(�UV�,�%W�"�C�u��O�O�I�,�	�U�	
����c�"�����T��C��H�-������"�$�E�*�J�E��H�C��H�H�S�#�e�*�+�+�-�.�+�$�D�/�J�E��7�7�3��$�D����T�C��J�$5�$5�$7�8�*��-/��)��E��U�U�s0�G3�G8�H�A&G>�<H�>
H
	�H�
HrN)r�r�r�r�r$r�rrrrr=s��#9rrc�x�[R"5n[R"[R/UQ76 gr)r	�threading_setupr"�addModuleCleanup�threading_cleanup)�thread_infos r�setUpModuler+gs*��"�2�2�4�K����.�@�@�O�;�Or�__main__)�r"r�testr�test.supportrrrrr	�_threadr�r=r,r@rr!
rYr�rOr�r|r�r�r,r�r�r7r�r:r{rwr�rKr�r}�weakrefr
r�rDr5r��requires_working_socketr+r�rVr>r?�systemrrr)�release�WSLr!r0r>rHrMrQrVr[r^rarfrirmrzrsr��HAVE_SOCKET_CAN�HAVE_SOCKET_CAN_ISOTP�HAVE_SOCKET_CAN_J1939�HAVE_SOCKET_RDS�HAVE_SOCKET_ALG�HAVE_SOCKET_QIPCRTR�HAVE_SOCKET_VSOCKr6r
rr�HAVE_SOCKET_UDPLITE�HAVE_SOCKET_BLUETOOTHr�HAVE_SOCKET_HYPERVr rNr9r�r�r�r�r�r�r�r
r�rrr&r�r�r6rbrtr�r�r�r�r�r�r�r�r�r�r�r�r�r�rrrrr�r�r<rSrvr�r�r�r�rrBr�r�r�r�r�rrrrrrpr�r�r�r�r�rr0r�ry	r}	r�	r�	r�	r�r�	r�	r�	r�	r�	r�	r�	r�	r�	r�	r�	r�	r�	r�	r�	r�	r�	r�	r�	r�	r�	r�	r�	r�	r�	r�	r�	r�	r�	r�	r�	r�	r
r"
rA
ru
r�
rrGrKrMrPrRrOrTrYr[r}r�r�r�r�r�r�rr>rxryrzrsrur�r�r�r�rr�r�rn
rr
r�
r�
r�
r�
rr+r��mainrrr�<module>r@s+�����������	�	���	�
���
�	�
�
�
�
�
�
����������������t�,�����)�0�0��9�����	��o�o��5� ��

�,�,�
!�
!�'�
*���(�"2�"2�"4�4�����:(��������
������.��.�������"#�$��.�0��.�0��"�$��"�$��*�,��&�(���F�%�&�K�
�
�
�
I�H�$8�$8�$:�$D�$D�r�$I�J��/�0��:�<��(�*���[�[��
�
&�
&�
�	�H�%�%�	��H�%�%��7�
�7�0+�H�%�%�0+�f
7�H�%�%�
7� m�m�^,�M�>�,�,�M�>�,�
���(�
3�5�,� 1�>�,�5�,�,�M�>�,�(,�M�>�,�,
����$���-�	����<�=�	���&�
1�3�	�����g�f�.?��C�C�@�B�,�H�$5�$5�~�,�B�3�>�.�,�\3�/�3�B,�X�&�&��,�H1�X�&�&�1�0�~��,�n�n�,�<!!�7�6�!!�H3��3�A�'�A�
6�>�
6�A�,�A�@�,�@�X�l�X�2�\�2� �L� �
A�=�A�Y�}�Y�/�.F�3�>~>��*�*�~>�B(
���_�&I�J�P[�8�$�$�P[�K�P[�f
���_�&I�J�W=�#�W=�K�W=�t
���*�,O�P�'��!�!�'�Q�'�T
���*�,O�P�:��!�!�:�Q�:�z
���_�&K�L�G�8�$�$�G�M�G�"
���_�&K�L�<9�#�<9�M�<9�|
���(�
3�5�7�x�(�(�7�5�7�6
����$���-�	���&�
1�3�+D�X�&�&�+D�3�.�+D�\
���*�@�B�k#��*�*�k#�B�k#�\
���'�>�@�/7�h�'�'�/7�@�/7�d!�&�!�D3�(�3�:
���(�
3�5�3�0�3�5�3�nt8�t8�n	6��	6�F��F�@��@�9�O�9�*
��
�(5�?�5�t@�/�t@�n:"��:"�z.��.�"SM�/�SM�l � 3� �F�&��:M5�'�)<�M5�`<I�X�&�&�<I�~~!�0�~!�Bq�7�q�l
	�6�:�4�k�	�
�f�m�m�Y�'�	�/�1G�	�(�	��f�m�m�Y�'�	�\�#9�	�(�	��f�m�m�^�,�	�)�+A�	�-�	�1�7�;�5�|�1��f�m�m�Y�'�	���]�/�/�1O�P��z�<�(�	�0�2I�	�)�Q�(�	��f�m�m�Y�'�	���]�/�/�1O�P��z�<�(�	�l�$;�	�)�Q�(�	��f�m�m�^�,�	���]�/�/�1O�P��z�<�(�	�*�,C�	�)�Q�-�	��f�m�m�Y�'�	���]�/�/�1O�P�
�f�n�%��z�<�(�	�&:�&=�	�)�&�Q�(�	��f�m�m�^�,�	���]�/�/�1O�P�
�f�n�%��z�<�(�	�*:�*>�*A�	�)�&�Q�-�	�
���(�
3�5�	�!:�:�4�o�	�5�	�

���(�
3�5�
�f�m�m�Y�'�	�3�5O�	�(�5�	�
���(�
3�5�
�f�m�m�Y�'�	��'A�	�(�5�	�
���(�
3�5�
�f�m�m�^�,�	�-�/I�	�-�5�	�
���(�
3�5�1�";�;�5�7G�1�5�1��f�m�m�Y�'�	���]�/�/�1O�P�	���(�
3�5��z�<�(�	�4�6Q�	�)�5�Q�(�
	��f�m�m�Y�'�	���]�/�/�1O�P�	���(�
3�5��z�<�(�	�,�(C�	�)�5�Q�(�
	��f�m�m�^�,�	���]�/�/�1O�P�	���(�
3�5��z�<�(�	�.�0K�	�)�5�Q�-�
	��f�m�m�Y�'�	���]�/�/�1O�P�	���(�
3�5�
�f�n�%��z�<�(�	�*>�&A�	�)�&�5�Q�(�	��f�m�m�^�,�	���]�/�/�1O�P�	���(�
3�5�
�f�n�%��z�<�(�	�.>�*>�*E�	�)�&�5�Q�-�	�	�5�5�{�	��f�m�m�Y�'�	�'�)?�	�(�	��f�m�m�Y�'�	�\�#<�+�	�(�	��f�m�m�^�,�	�)�+D�/�	�-�	�
	�$<�$<�$<�n�	�
�f�m�m�Y�'�	����N�O��y�-��8�	�.�0M�	�9�P�(�	��f�m�m�Y�'�	����N�O��y�-��8�	R�L�*C�9�	R�9�P�(�	R��f�m�m�^�,�	����N�O��y�-��8�	R� 0�2K� =�	R�9�P�-�	R�	�$<�$<�n�	��f�m�m�Y�'�
�f�i� �	�.�0M�	�!�(�	��f�m�m�Y�'�
�f�i� �	�L�*C�9�	�!�(�	��f�m�m�^�,�
�f�i� �	� 0�2K� =�	�!�-�	��f�m�m�Y�	�2�
�f�i��|�<�	��0M�	�=�3�	��f�m�m�Y��7�
�f�i��|�<�	�%5�}�%B�	�=�8�	�"�"�@�f�n�%�	���W�V�W�-�M����1M�B�D�$M�!7��$M�D�&�$M�R�f�n�%�	���W�V�W�-�M����1M�B�D�3F�!7�!9�;�3F�D�&�3F�l�)��( #�.� #�Fg
�~�g
�T�/��D`
�1�`
�FkG�(?�kG�\�*A��
�+B��
�)@���*A���.E��"�F�"��)�<��P5�� 1� 1�P5�fF4�m�^�F4�R>�]�N�>�>75�]�75�rK�]�K�.
���(�
3�5�K�*�K�5�K�.$�X�&�&�$�.
���S�\�\�%9�9�;P�Q�4H��!2�!2�4H�R�4H�n
���W�V�Y�/�1L�M�H7�X�&�&�H7�N�H7�VP:�&�P:�f�
�
�
�
�
��(
���_�&�M�O�#�x� � �#�O�#�,
���_�&�M�O�$��*�*�N�$�O�$�N)9�/�)9�X@6�h�'�'�@6�F
���W�V�_�5�0�2�9$�8�,�,�9$�2�9$�x
���R�W�W��_�&8�9�	���_�&<�=�b#�
�b#�>�:�b#�JF=�1�F=�R
���W�R��,�<�>�7� 5�7�>�7�
���_�&7�8�J*�8�,�,�J*�9�J*�Z
���S�\�\�X�-�/D�E�.��)�)�.�F�.�

���S�\�\�,�,�U�3�5G�H�Q�H�-�-�Q�I�Q�,0;�x�(�(�0;�f>=��!2�!2�>=�@�f�j�!�
�f�j�!�
�f�i� �$9�x�(�(�$9�!�"�"�$9�NP�
�z���M�M�O���Sb���O������E������I���"���G��s\�
AL�AL+�AL:�
AM	�LAL(�L'AL(�L+AL7�L6AL7�L:AM�MAM�M	AM�MAM

Youez - 2016 - github.com/yon3zu
LinuXploit