403Webshell
Server IP : 121.121.20.254  /  Your IP : 216.73.216.41
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.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)z5Check whether CAN sockets are supported on this host.FT)r7�PF_CAN�SOCK_RAW�CAN_RAW�close�AttributeErrorr<��ss r�_have_socket_canrGisL����M�M�&�-�-����&�.�.�I��	
���	���	
�G�$������AA�A(�'A(c���[R"[R[R[R5nUR	5 g![
[4a gf=f)z;Check whether CAN ISOTP sockets are supported on this host.FT)r7r@�
SOCK_DGRAM�	CAN_ISOTPrCrDr<rEs r�_have_socket_can_isotprLs�P����M�M�&�-�-��):�):�F�<L�<L�M��	
���	���	
�G�$����rHc���[R"[R[R[R5nUR	5 g![
[4a gf=f)z;Check whether CAN J1939 sockets are supported on this host.FT)r7r@rJ�	CAN_J1939rCrDr<rEs r�_have_socket_can_j1939rP}rMrHc��[R"[R[RS5nUR5 g![[
4a gf=f)z5Check whether RDS sockets are supported on this host.rFT)r7�PF_RDS�SOCK_SEQPACKETrCrDr<rEs r�_have_socket_rdsrT��J����M�M�&�-�-��)>�)>��B��	
���	���	
�G�$������4A�A�Ac��[R"[R[RS5nUR5 g![[
4a gf=f)z8Check whether AF_ALG sockets are supported on this host.rFT)r7�AF_ALGrSrCrDr<rEs r�_have_socket_algrY�rUrVc��[R"[R[RS5nUR5 g![[
4a gf=f)z<Check whether AF_QIPCRTR sockets are supported on this host.rFT)r7�
AF_QIPCRTRrJrCrDr<rEs r�_have_socket_qipcrtrr\�sL����M�M�&�+�+�V�->�->��B��	
���	���	
�G�$����rVc��[5nUSL$)z:Check whether AF_VSOCK sockets are supported on this host.N)r>)�cids r�_have_socket_vsockr_�s��
�)�C��t�O�rc���[R"[R[R[R5nUR	5 g![
[4a gf=f)z>Check whether AF_BLUETOOTH sockets are supported on this host.FT)r7�AF_BLUETOOTH�SOCK_STREAM�BTPROTO_RFCOMMrCrDr<rEs r�_have_socket_bluetoothrd�sT���
�M�M�&�-�-�v�/A�/A�6�CX�CX�Y��	
���	���	
�G�$����rHc���[R"[R[R[R5nUR	5 g![
[4a gf=f)z?Check whether BTPROTO_L2CAP sockets are supported on this host.FT)r7rarS�
BTPROTO_L2CAPrCrDr<rEs r�_have_socket_bluetooth_l2caprg�sR����M�M�&�-�-�v�/D�/D�f�FZ�FZ�[��	
���	���	
�G�$����rHc���[R"[R[R[R5nUR	5 g![
[4a gf=f)z;Check whether AF_HYPERV sockets are supported on this host.FT)r7�	AF_HYPERVrb�HV_PROTOCOL_RAWrCrDr<rEs r�_have_socket_hypervrk�sR����M�M�&�*�*�F�,>�,>��@V�@V�W��	
���	���	
�G�$����rHc#��# �[R"5n[R"U5 Sv� [R"U5 g![R"U5 f=f7fr)r7�getdefaulttimeout�setdefaulttimeout)�timeout�old_timeouts  r�socket_setdefaulttimeoutrq�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_INETrb�servr�	bind_port�port�listen��selfs r�setUp�SocketTCPTest.setUpsD���M�M�&�.�.�&�2D�2D�E��	�!�+�+�D�I�I�6��	��	�	���rc�F�URR5 SUlgr�r�rCr�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�rJr�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�rJr�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��\rSrSrSrSrSrSr\R"\5r
Sr\S\R"\5S---
rS	rS
r
g)�
SocketCANTesti"z�To be able to run this test, a `vcan0` CAN interface can be created with
the following commands:
# modprobe vcan
# ip link add dev vcan0 type vcan
# ip link set up vcan0
�vcan0�z=IB3x8sz@3I4l2I�x�c��[R"[R[R[R5UlURURR5 URRUR45 g![a! URSUR-5 gf=f�N�%network interface `%s` does not exist)r7r@rArBrF�
addCleanuprC�bind�	interfacer<�skipTestr�s rr��SocketCANTest.setUpKs|�����v�}�}�f�o�o�v�~�~�N�����������%�	+��F�F�K�K����)�*���	+��M�M�A��>�>�*�
+�	+�s�.&B�(C�?CrEN)r�r�r�r��__doc__r��bufsize�
can_frame_fmtr:�calcsize�can_frame_size�bcm_cmd_msg_fmtr�r�rrrr�r�"s[����I��G���M��_�_�]�3�N��  �O��s�f�o�o�o�>��B�C�C�O�+rr�c�"�\rSrSrSrSrSrSrg)�
SocketRDSTestiUzTTo be able to run this test, the `rds` kernel module must be loaded:
# modprobe rds
� c�N�[R"[R[RS5UlUR	URR
5 [R"UR5Ulg![a URS5 gf=f)Nrzunable to bind RDS socket)r7rRrSr�r�rCrr�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�r�rrrr�r�Us����G�7rr�c�<�\rSrSrSrSrSrSrSrSr	Sr
S	rg
)�ThreadableTestiea1Threadable Test class

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

    class NewClass (OldClass, ThreadableTest):
        pass

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

    clientSetUp ()
    clientTearDown ()

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

    def testFoo(self):
        # Server portion

    def _testFoo(self):
        # Client portion

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

Note, the server setup function cannot call any blocking
functions that rely on the client thread during setup,
unless serverExplicitReady() is called just before
the blocking call (such as in setting up a client/server
connection and performing the accept() in setUp().
c�H�URUlURUlgr)r��_ThreadableTest__setUp�_setUpr�s r�__init__�ThreadableTest.__init__�s���z�z����[�[��
rc�8�URR5 g)z�This method allows the server to explicitly indicate that
it wants the client thread to proceed. This is useful if the
server is about to execute a blocking routine that is
dependent upon the client thread during its setup routine.N)�server_ready�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�r�rrrr�r�es(��#�J!�
 �(�@"�,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�rb�clir�s rr��!ThreadedTCPSocketTest.clientSetUp�s���=�=�����1C�1C�D��rc�p�URR5 SUl[RU5 gr�rrCr�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__�r�rc�t�[R"[R[R5Ulgr)r7r�rJrr�s rr��!ThreadedUDPSocketTest.clientSetUp�s���=�=�����1B�1B�C��rc�p�URR5 SUl[RU5 grrr�s rr��$ThreadedUDPSocketTest.clientTearDown�rrrNrr
rrrr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�rJr�rr�s rr��%ThreadedUDPLITESocketTest.clientSetUp�s&���=�=�����1B�1B�F�DZ�DZ�[��rc�p�URR5 SUl[RU5 grrr�s rr��(ThreadedUDPLITESocketTest.clientTearDown�rrrNrr
rrrrr�s��&�\�,rrc�*�\rSrSrSSjrSrSrSrg)�ThreadedCANSocketTest�c�T�[RXS9 [RU5 gr�)r�r�r�r�s  rr��ThreadedCANSocketTest.__init__r�rc��[R"[R[R[R5UlURRUR45 g![a gf=fr)r7r@rArBrr�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.clientTearDownrrrNrr
rrrrrs��&��,rrc�*�\rSrSrSSjrSrSrSrg)�ThreadedRDSSocketTestic�T�[RXS9 [RU5 gr�)r�r�r�r�s  rr��ThreadedRDSSocketTest.__init__r�rc��[R"[R[RS5UlURR	[
S45 URR
5Ulg![a gf=f�Nr)	r7rRrSrr��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,Nrr
rrrr%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_VSOCKrbr�r�rCr>r2�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;rbrr�rCr>r2r<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�)rD�recv�PermissionErrorr��repr�assertEqual�MSG)r��msgrFs   r�
testStream�(ThreadedVSOCKSocketStreamTest.testStreamSsP��	%��)�)�.�.��&�C�	
����c�"���	%��M�M�$�s�)�$�$��	%�s�4�
A"�A�A"c�v�URR[5 URR5 gr�r�sendrUrCr�s r�_testStream�)ThreadedVSOCKSocketStreamTest._testStreamZ� �����
�
�c�������r)rrDrEr�Nr�
r�r�r�r�r�r�r�rWr\r�rrrr5r5*s��&�)�&+�#�rr5c�:�\rSrSrSrS
SjrSrSrSrSr	Sr
g	)�SocketConnectedTesti^z�Socket tests for client-server connection.

self.cli_conn is a client socket connected to the server.  The
setUp() method guarantees that it is connected to the server.
c�*�[RXS9 gr�)r�r�r�s  rr��SocketConnectedTest.__init__e����&�&�t�&�Crc��[RU5 UR5 URR	5upXlgr)r�r�r�r�rC�cli_conn�r�rD�addrs   rr��SocketConnectedTest.setUphs7���#�#�D�)�	
� � �"��Y�Y�%�%�'�
���
rc�p�URR5 SUl[RU5 gr)rfrCr�r�r�s rr��SocketConnectedTest.tearDownps'���
�
������
��&�&�t�,rc��[RU5 URR[UR
45 URUlgr)r�r�rrLr*r��	serv_connr�s rr��SocketConnectedTest.clientSetUpus6���)�)�$�/������$��	�	�*�+�����rc�p�URR5 SUl[RU5 gr)rmrCr�r�r�s rr��"SocketConnectedTest.clientTearDownzs'������������,�,�T�2r�rfrmNr)r�r�r�r�r�r�r�r�r�r�r�rrrrara^s!���D��-�
"�
3rrac�<�\rSrSrS
SjrSrSrSrSrSr	Sr
g	)�SocketPairTestic��[RRXS9 [RU5 SUlSUlgr�)r"r8r�r�rr�r�s  rr��SocketPairTest.__init__�s5�����"�"�4�"�?�����%������	rc�,�[R"5$r)r7�
socketpairr�s rrw�SocketPairTest.socketpair�s��� � �"�"rc�>�UR5uUlUlgr)rwr�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�rwr�r�r�r�r�rrrrsrss ���#�0��

�,rrsc�*�\rSrSrSrSrSrSrSrg)�SocketTestBasei�z�A base class for socket tests.

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

Creates a socket self.serv and sets self.serv_addr to its address.
c��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 URR5Ulg)z9Bind server socket and set self.serv_addr to its address.N)�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�r�rrrr�r��s����
�1rr�c�,^�\rSrSrSrU4SjrSrU=r$)�SocketListeningTestMixini�z%Mixin to listen on the server socket.c�V>�[TU]5 URR5 gr)�superr�r�r��r��	__class__s �rr��SocketListeningTestMixin.setUp�s���
��
���	�	���rr)r�r�r�r�r�r�r��
__classcell__�r�s@rr�r��s���/��rr�c�D^�\rSrSrSrU4SjrSrSrSrSr	Sr
U=r$)	�ThreadedSocketTestMixini�z�Mixin to add client socket and allow client/server tests.

Client socket is self.cli and its address is self.cli_addr.  See
ThreadableTest for usage information.
c�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$)z&Return a new socket for use as client.)r�r�s rr��'ThreadedSocketTestMixin.newClientSocket�s���~�~��rc�x�URUR5 URR5Ulg)z8Bind client socket and set self.cli_addr to its address.N)r�rr+r,r�s rr��"ThreadedSocketTestMixin.bindClient�s&���
�
�d�h�h�����,�,�.��
rc�p�URR5 SUl[RU5 grrr�s rr��&ThreadedSocketTestMixin.clientTearDown�rrr0)r�r�r�r�r�r�r�r�r�r�r�r�r�s@rr�r��s&����&�� �/�
,�,rr�c�P^�\rSrSrSrU4SjrU4SjrU4SjrU4SjrSr	U=r
$)�ConnectedStreamTestMixini�z�Mixin to allow client/server stream tests with connected client.

Server's socket representing connection to client is self.cli_conn
and client's connection to server is self.serv_conn.  (Based on
SocketConnectedTest.)
c�>�[TU]5 UR5 URR	5upXlgr)r�r�r�r�rCrf)r�rDrhr�s   �rr��ConnectedStreamTestMixin.setUp�s3���
��
��	
� � �"��Y�Y�%�%�'�
���
rc�d>�URR5 SUl[TU]
5 gr)rfrCr�r�r�s �rr��!ConnectedStreamTestMixin.tearDown�s%����
�
������
�
���rc�>�[TU]5 URRUR5 URUlgr)r�r�rrLr�rmr�s �rr��$ConnectedStreamTestMixin.clientSetUp�s/���
������������(�����rc�>�URR5 SUl[TU]5 g![a Nf=fr)rmrCrDr�r�r�s �rr��'ConnectedStreamTestMixin.clientTearDown�s@���	��N�N� � �"�!�D�N�	��� ���	��	�s�!3�
A�Arq)r�r�r�r�r�r�r�r�r�r�r�r�s@rr�r��s!������
"�
!�!rr�c��\rSrSrSrSrSrg)�UnixSocketTestBaseiz(Base class for Unix-domain socket tests.c��[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�r�rrrr�r�s
��2�3rr�c��\rSrSrSrSrSrg)�UnixStreamBaseiz-Base class for Unix-domain SOCK_STREAM tests.c�h�[R"[R[R5$r)r7�AF_UNIXrbr�s rr��UnixStreamBase.newSocket����}�}�V�^�^�V�-?�-?�@�@rrN�r�r�r�r�r�r�r�rrrr�r�s��7�Arr�c�6^�\rSrSrSr\rU4SjrSrSr	U=r
$)�InetTestBaseiz!Base class for IPv4 socket tests.c�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�r�s@rr�r�s���+��D�&�6�6rr�c��\rSrSrSrSrSrg)�TCPTestBasei%z#Base class for TCP-over-IPv4 tests.c�h�[R"[R[R5$r)r7r�rbr�s rr��TCPTestBase.newSocket(r�rrNr�rrrr�r�%���-�Arr�c��\rSrSrSrSrSrg)�UDPTestBasei+z#Base class for UDP-over-IPv4 tests.c�h�[R"[R[R5$r)r7r�rJr�s rr��UDPTestBase.newSocket.s���}�}�V�^�^�V�->�->�?�?rrNr�rrrr�r�+s��-�@rr�c��\rSrSrSrSrSrg)�UDPLITETestBasei1z'Base class for UDPLITE-over-IPv4 tests.c��[R"[R[R[R5$r)r7r�rJr�r�s rr��UDPLITETestBase.newSocket4s%���}�}�V�^�^�V�->�->��@V�@V�W�WrrNr�rrrr�r�1s��1�Xrr�c��\rSrSrSrSrSrg)�SCTPStreamBasei7z;Base class for SCTP tests in one-to-one (SOCK_STREAM) mode.c��[R"[R[R[R5$r)r7r�rb�IPPROTO_SCTPr�s rr��SCTPStreamBase.newSocket:s*���}�}�V�^�^�V�-?�-?�#�0�0�2�	2rrNr�rrrr�r�7s
��E�2rr�c�0�\rSrSrSr\RrSrg)�
Inet6TestBasei?z!Base class for IPv6 socket tests.rN)	r�r�r�r�r�r�HOSTv6r�r�rrrr�r�?s��+����Drr�c��\rSrSrSrSrSrg)�UDP6TestBaseiDz#Base class for UDP-over-IPv6 tests.c�h�[R"[R[R5$r)r7�AF_INET6rJr�s rr��UDP6TestBase.newSocketGs���}�}�V�_�_�f�.?�.?�@�@rrNr�rrrr�r�Dr�rr�c��\rSrSrSrSrSrg)�UDPLITE6TestBaseiJz'Base class for UDPLITE-over-IPv6 tests.c��[R"[R[R[R5$r)r7r�rJr�r�s rr��UDPLITE6TestBase.newSocketMs%���}�}�V�_�_�f�.?�.?��AW�AW�X�XrrNr�rrrr�r�Js��1�Yrr�c�6^^�SmUU4SjnSnU(aU$U$)agSkip decorated test if condition is true, add client_skip decorator.

If the decorated object is not a class, sets its attribute
"client_skip" to a decorator which will return an empty function
if the test is to be skipped, or the original function if it is
not.  This can be used to avoid running the client part of a
skipped test when using ThreadableTest.
c��grr)r$r�s  r�client_pass�%skipWithClientIf.<locals>.client_pass\rrc�>�[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�skipWithClientIfr�Ss!���
��
� �7�.�Y�.rc��UVs/sHn[X5(aMUPM nn[USSRSU55-5$s snf)z{Skip decorated test if obj is missing any of the given attributes.

Sets client_skip attribute as skipWithClientIf() does.
�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�requireAttrsrjsM��
!+�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)a	Skip decorated test if a socket cannot be created with given arguments.

When an argument is given as a string, will use the value of that
attribute of the socket module, or skip the test if it doesn't
exist.  Sets client_skip attribute as skipWithClientIf() does.
Nrrc3�$# �UHov� M g7frrrs  rr� requireSocket.<locals>.<genexpr>s���'A�����rzcan't create socket({0}): {1}c3�8# �UHn[U5v� M g7fr)�str�r�os  rrr�s���+�d��c�!�f�f�d�s�)
r�rr6r7r	r�rCr<r��format)r$�errr�r�callargsrFr�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))rrr7�
SocketType�assertIsInstancerC)r�rrFs   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�rb�assertIn�filenorS�assertNotInr�rr+�r�rFs  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=)rr7r�rbr/�familyr��protorTrSrC)r�rF�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�rbr
rTr/r�
gc_collect�fail�ReferenceError)r�rF�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<�rVz
socket.herrorzsocket.gaierror)�assertRaisesr<r7�herror�gaierror�r�rVs  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�rJr�rCr�r+rDr��sendtorTr�	exceptionr.)r�rF�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�rbrJrA�SOCK_RDMrS�
SOL_SOCKET�SO_REUSEADDRr�s r�testCrucialConstants�'GeneralModuleTests.testCrucialConstants�sR������?�?��O�O���������������������rc��[R [R [R(a[R ggr)r7�IPPROTO_TCP�IPPROTO_UDPrV�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�rL�
connect_ex�getpeernamer+r��recvfrom�
recvfrom_intorO�
setsockopt�shutdownzsocket method z is missing)r6r7r=)r��namesrs   r�test_socket_methods�&GeneralModuleTests.test_socket_methodss;��
��
�D��6�=�=�$�/�/��	�	�N�4�&��<�=�rrt�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=rS)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.255r3)r�HOSTv4rTr7r�r.r�)r�rhr�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:1rC)rDr<r7r�r�)r��explanationrhs   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 rootsbarrM)r7r�r�r<r?�EPERMr�rT)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_nametoindexrT�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���r3���	_DEADBEEFr��)���l����)rDr<r7r��assertIsNotNonerPr?�
OverflowErrorr�r6�dictr�)r�rR�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)rDr<r7r�r�rPr?r��r�rRs  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)ryr�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��r3igE#i2Tvl)	r7�htonl�ntohl�htons�ntohs�itemsrTrDr�)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
r3r�r�r����r�r
r��)
�	_testcapi�INT_MIN�INT_MAXr7r�r�r�r�rDr�)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�)rTryrz�
startswithrr7�
getservbynamer<r�
is_android�android_ver�	api_level�
getservbyportrDr�)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)	rTr7rm�
gettimeoutrqrnrD�
ValueErrorr�)r�rFr�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�)rTr7rr�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�rDr<r�r�r'r�s  �rrr(I����t�'8�'8�
�j�!�4�(
rrr 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�rTr)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�rV�IPv6 not available�+could not import needed symbols from socketrs�::�&'�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�rVr��ImportErrorryrzr<�winerrorrTr)r�rVr�r2r�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_ntoarFr�c�>�T"TU5$rr)r'r�rFs ��rr�5GeneralModuleTests.testStringToIPv4.<locals>.<lambda>�r)rc�<>�TR[[4X5$rr+r,s  �rrrJ�r-rz1.0.1.0sz
170.85.170.85s�U�Ur�r!r/r.ssrA)r7rHrFr�rT�	bytearray)r�rr1r2r�rFs`   @@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)rFr�rVr6r7rsrAr9r:c�>�T"TU5$rr)r'r�rFs ��rr�5GeneralModuleTests.testStringToIPv6.<locals>.<lambda>�r=rc�>>�TR[[4TU5$rr+r?s ��rrrQ�r@rr8r0sz!aef:b01:506:1001:ffff:9997:55:170s
�����Upsss)r7rFr�rVr�rBryrzr<rCrTrL)r�rVr�r2r�rrFs`   @@@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�rbr�rC�	itertools�countr�find_unused_portr�r<r?�
EADDRINUSEr+r�r�r�r.rT)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�rbr�rC�
getsockoptrXrY�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�rbr�rCrtrXrYr_r`ras   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�rbrArDr<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�r/z#close() should raise EBADF/ENOTSOCK)r7r��
_LOCALHOSTr/rCr=r<r.r?�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�rbrTr6r6r.r�rtr7r�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�rV)r7r�rCrrYrDr�r�r*rWrXr<r?rZ)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�rCrDrr9r�r1s  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�rCr9r�r<rCr�rDr�)r�rFrF�
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 versionrVr,r0r�http�<AddressFamily.AF_INET: %r>�<SocketKind.SOCK_STREAM: %r>r)r�r��r6�r�)r7)�flags)r�r�r6r�r7r�u��AI_NUMERICSERV)r7�getaddrinforFr?�EAI_SERVICEr�r*rT�lenr�IPV6_ENABLEDrrrzrr
r�rbrS�valuer�SOL_TCP�
AI_PASSIVE�	AF_UNSPECrD�UnicodeEncodeErrorr6r�)
r�r�info�infosr6r�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�rbr�r=rF)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)rDr<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�rb)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�alarmrwz9signal.alarm and socket.socketpair required for this testc�P>�TR[[RS5 gr)�rDr�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�rw�SIGALRMrArD�ZeroDivisionErrorr��sendallr�
SOCK_MAX_SIZE�TimeoutErrorrC)r��with_timeoutr�r��crF�	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�rbrS�assertWarns�ResourceWarningrr<r.r�warningr$�makefile)r�r�r=rRrs     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�rbr�rCrTrS�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�readabler`�writable�seekablerCrDrr�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*rCr/rDr<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�rTr�)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_PROTOCOLrDr��dumps�loadsr�rTrb)r�r��protocolr6r�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�rbr�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�rbr�r*rDr�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����)	rDr�r7r�rr�r�rbr�r1s  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�rJr^rT)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 r8)rTr7r�r�s r�test_getfqdn_filter_localhost�0GeneralModuleTests.test_getfqdn_filter_localhost�sB��������)�6�>�>�)�+D�E�������)�6�>�>�$�+?�@rrszdoes 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�rJr^rT)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�rJr^rT)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_NUMERICSERVrT)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$rTr)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�rbrTrSr6r�r�rr1s  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_NONBLOCKrrtr
TF)r�r7rbr�rTr�rA�setblocking)r�r/rt�	sock_typerFs     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)>rtr/Nr)rr�kinds   rr�EGeneralModuleTests.test_unknown_socket_family_repr.<locals>.<genexpr>�s$���
�C�
���<�<�
�D�C�s��	r)r6r�r7r/r)r7r�rb�detach�max�
AddressFamily�__members__�values�
SocketKindr�rTr6r�r.r7)r�r��fd�unknown_family�unknown_typerFs      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$rrHr�s rr/�CGeneralModuleTests.test__sendfile_use_sendfile.<locals>.File.fileno�s���w�w�rrHN)r�r�r�r�r�r/r�rrr�FilerF�s��
�
rrLr3r�)r7�osr8�curdir�O_RDONLYrCrD�_GiveupOnSendfile�_sendfile_use_sendfiler�r�)r�rLr�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�Nrm)rTr6r�r/r7r�rCr8)r�rFr6�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)NrrJr�)r7r�rbr�rCr�rr*rXr6rJr�r�r�r�rr�r�rR)r�rF�	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@rm�rDr�r7r�rbr�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!rmr_r�s r�&test_socket_fileno_rejects_other_types�9GeneralModuleTests.test_socket_fileno_rejects_other_types8s6��
�
�
�y�
)��M�M�&�.�.�&�*<�*<�U�K�*�
)�
)�rbc���UR[S5 [R"[R[RSS9 SSS5 g!,(df   g=f)N�negative file descriptorr�rm�r rr7r�rbr�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)Nrgi���rmrhr�s r�#test_socket_fileno_rejects_negative�6GeneralModuleTests.test_socket_fileno_rejects_negative@s:��
�
#�
#�J�0J�
K��M�M�&�.�.�&�*<�*<�S�I�L�
K�
K�rkc�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'rm)rDr<r7r�make_bad_fdr.rPr?ror�rb)r��WSAENOTSOCKrRs   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=frU)�tempfile�NamedTemporaryFilerDr<r7r/r�rbrTrPr?rp)r��afilerRs   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�rr��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_r}rs rr�9GeneralModuleTests.test_socketkind_enum.<locals>.<lambda>ks��!�)�)�+�?�!�,�,�w�*?�?rr�)rr�r�r�r�r7r=)r�rr��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_r}rs rr�6GeneralModuleTests.test_msgflag_enum.<locals>.<lambda>ts��!�)�)�+�>�!�,�,�v�*>�>rr�)rr�r��IntFlagr�r7r�)r�rr��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_r}rs rr�:GeneralModuleTests.test_addressinfo_enum.<locals>.<lambda>}r�rr�)rr�r�r�r�r7r�)r�rr��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�)	r7rXr�rwr�rCrDr<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"�
skipUnlessrr"r'r2r9r@rHrSrZr`rMrrl�skipIfr�is_wasirwryrzrr�r�r�r�r�r6r7r�r�r�r�r�r�r��cpython_onlyr�r�rrr"r3rDrMrSr\rcrfrjrqrurzr�r�r�r�r��is_resource_enabledr�r�r�r�r�r�r�r�r�r�r�rrrrrrrrr&r)r,r2rArRrXr\r`rdrirmrrrxr�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_CANr@rBr�s rrZ�!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�r7r@rArBr1s  r�testCreateSocket�BasicCANTest.testCreateSocket��0��
�]�]�6�=�=�&�/�/�6�>�>�
J�a��K�
J�
J���A�
Ac��[R"[R[R[R5nSSS5 g!,(df   g=fr)r7r@rJr�r1s  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)rK)r7r@rArBr�rTr+)r�rF�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)r7r@rArBr r<r�r1s  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
)	r7r@rArBrt�SOL_CAN_RAWr�rTr_)r�rF�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:�packr7r@rArBrtr�r�rTr_rL)r��can_id�can_mask�
can_filterrFs     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�rZr"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__�rdrc��[U5nURSS5n[R"URXU5$)zBuild a CAN frame.r��)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$)zDissect a CAN frame.N)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))rFrrr�rT�cfr��r�r
rhs   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)rFrrr�rTr
rs   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)rFrrr�rT�cf1�cf2rs   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)rrrr�rTr
rr�r)r�r
rhr�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
[UR5S:Xde[R "UR"UUUUUUUU	U
5
nX�R-nUR%U5n
UR'U
[U55 g)N�#)����ri"r
r�)r7r@rJr�r�rCrLr�r��bytesrrr
r�r�r:r�r�r[rT)r��bcm�opcoder�rX�
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�]��
����4�7�7�|�r�!�!�!����T�1�1����!��!����
��#�W�W�,���X�X�/�0�
�����S�):�%;�<r)r�r
rrrNr)r�r�r�r�r��classmethodrrrrrrrr r"r�r6r7r#r6r�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�r@rKrJr�s rrZ�ISOTPTest.testCrucialConstantsJ	s"���
�
��
�
������rc��[R"[R[R[R5nSSS5 g!,(df   g=frr�r1s  rr��ISOTPTest.testCreateSocketP	r�r�rKz(socket.CAN_ISOTP required for this test.c��[R"[R[R[R5nSSS5 g!,(df   g=fr)r7r@rJrKr1s  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
r3)r7r@rJrKr r<r�r1s  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�)r7r@rJrKr�r�rTr+r<r?�ENODEVr��r�rFrhr�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�rZr�r"r�r6r7rEr�rMr�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	r?rrOz(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)r7rO�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)r7r@rJrOr1s  r�testCreateJ1939Socket�J1939Test.testCreateJ1939Socket�	rGr�c�<�[R"[R[R[R5nUR[R
[R[R4nURU5 URUR5U5 SSS5 g!,(df   g=f![aGnUR[R:Xa#URSUR-5 SnAgeSnAff=fr�)r7r@rJrOr�rXr^rWr�rTr+r<r?rKr�rLs    rrM�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�DrO)r�r�r�r�r�r"r�r6r7rlrorMr�r�r�s@rrQrQn	sm���!�������5�C�E� �E� �B������5�C�E��E���rrQz#RDS sockets required for this test.c�&�\rSrSrSrSrSrSrg)�BasicRDSTesti�	c�D�[R [R gr)r7�AF_RDSrRr�s rrZ�!BasicRDSTest.testCrucialConstants�	s���
�
��
�
rc��[R"[R[RS5nSSS5 g!,(df   g=fr))r7rRrSr1s  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)r7rRrSrtrX�	SO_RCVBUF�	SO_SNDBUF)r�r�rFs   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�rZr�r}r�rrrrtrt�	s����Grrtc��^�\rSrSrSSjrU4SjrSrSrSrSr	\
"\RS5S	5r\
"\RS
5S5r
SrS
rSrSrSrU=r$)�RDSTesti�	c�*�[RXS9 gr�)r%r�r�s  rr��RDSTest.__init__�	rdrc�V>�[TU]5 [R"5Ulgr)r�r�r�r��evtr�s �rr��
RDSTest.setUp�	s���
��
���?�?�$��rc���URRUR5upURURU5 URUR
U5 gr)r�rrr�rTrr,�r�rrhs   r�testSendAndRecv�RDSTest.testSendAndRecv�	sD���Y�Y�'�'����5�
��������D�)��������-rc��SUlURRURS[UR45 g�Nrir�rrrOr*r�r�s r�_testSendAndRecv�RDSTest._testSendAndRecv�	�*����	�������	�	�1�t�T�Y�Y�&7�8rc�.�URRUR[R5upURURU5 URRUR5upURURU5 gr)r�rrr�r7�MSG_PEEKrTrr�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�rTr)r�r�ancdata�	msg_flagsrhs     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�rrr�rT�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�rrOr*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�r.rrr�rTr)r�r=r�r�rrhs      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�rr7r�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 rrZ�%BasicQIPCRTRTest.testCrucialConstants
s����rc��[R"[R[R5nSSS5 g!,(df   g=fr)r7r[rJr1s  rr��!BasicQIPCRTRTest.testCreateSocket
s.��
�]�]�6�,�,�f�.?�.?�
@�A��A�
@�
@��	�?�
A
c���[R"[R[R5nURUR	5SS5 SSS5 g!,(df   g=f�Nr
r)r7r[rJrTr+r1s  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[rJrr�r+�assertNotEqualr1s  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[rJrDr<rr�r1s  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[rJrLr�r+r1s  r�testAutoBindSock�!BasicQIPCRTRTest.testAutoBindSock
sR��
�]�]�6�,�,�f�.?�.?�
@�A�
�I�I�j�!�����
�
��� 2�A�6�A�
@�
@�s�5A2�2
BrN)r�r�r�r�rZr�r�r�r�r�r�rrrr�r��	s!����4�7�
L�7rr�c�,�\rSrSrSrSrSrSrSrg)�BasicVSOCKTesti
c�$�[R gr)r7r;r�s rrZ�#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_ANYr2�VM_SOCKETS_INVALID_VERSIONr2r�s r�testVSOCKConstants�!BasicVSOCKTest.testVSOCKConstants"
sJ���(�(��,�,��,�,�����������)�)��-�-rc��[R"[R[R5nSSS5 g!,(df   g=fr)r7r;rbr1s  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�Nr3)	r7r;rbr_r�r�r�rtrT)r�rF�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�rZr�r�r}r�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)Nrsr�)r7�
BDADDR_ANY�BDADDR_LOCALrarcryrz�BTPROTO_HCI�SOL_HCIrfr	�BTPROTO_SCOr�s r�testBluetoothConstants�)BasicBluetoothTest.testBluetoothConstantsO
ss���������������<�<�7�"�����N�N�� � ��<�<�*�*�9�5�5��"�"�6�#rc��[R"[R[R[R5nSSS5 g!,(df   g=fr)r7rarbrcr1s  r�testCreateRfcommSocket�)BasicBluetoothTest.testCreateRfcommSocket]
s7��
�]�]�6�.�.��0B�0B�F�DY�DY�
Z�^_��[�
Z�
Z�r�rsz&windows does not support L2CAP socketsc��[R"[R[R[R5nSSS5 g!,(df   g=fr)r7rarSrfr1s  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)r7rarAr�r1s  r�testCreateHciSocket�&BasicBluetoothTest.testCreateHciSocketf
s5��
�]�]�6�.�.�����AS�AS�
T�XY��U�
T�
T�r�r�z.windows and freebsd do not support SCO socketsc��[R"[R[R[R5nSSS5 g!,(df   g=fr)r7rarSr�r1s  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�)r7rarSrfr�r�r+rT)r�r�psmrhs    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�)	r7rarSrfrDr<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)NrrsiB'z"(?i)[0-9a-f]{2}(?::[0-9a-f]{2}){4})r7rarbrcr�r�r<ryrzrCr�rr+rTr�ANY�assertRegex)r�rF�channelrrh�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)	r7rarbrcrDr<r�r�r�)r�rFr�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��	dragonflyr�r)r7rarAr�ryrzr	r�r�r+rTr<r?�EINVALrKr�r)r�rFrh�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)
r7rarAr�ryrzr	rDr<r�r�r�r)r�rFrs   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)	r7rarSr�r�r�r+rTr�)r�rFrhs   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)Nrr�r�rr)r7rarSr�rDr<r�r�r�rr�r1s  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�ryrzr�r�r	r�r��HAVE_SOCKET_BLUETOOTH_L2CAPr�r�r�rr6r7r	r
rrr�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<r7rirb)r�r8s  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�
r7rirbrjr r��re�escaperLr�r�r8rFs   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)Nr0)r
r3)	r7rirbrjr r�r*r+rLr,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�
r7rirbrjr rr*r+rLrr,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 stringr7r8r,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-r1r4r9r=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��rar�r�s  rr��BasicTCPTest.__init__1����$�$�T�$�Arc�f�URRS5nURU[5 grO)rfrQrTrUrGs  r�testRecv�BasicTCPTest.testRecv4s&���m�m� � ��&������c�"rc�B�URR[5 gr�rmr[rUr�s r�	_testRecv�BasicTCPTest._testRecv9��������C� rc���URR[[5S-
5nURRS5nX-nUR	U[5 g�N�rP)rfrQr�rUrT)r��seg1�seg2rVs    r�testOverFlowRecv�BasicTCPTest.testOverFlowRecv<sI���}�}�!�!�#�c�(�Q�,�/���}�}�!�!�$�'���k������c�"rc�B�URR[5 grrIr�s r�_testOverFlowRecv�BasicTCPTest._testOverFlowRecvCrLrc�j�URRS5upURU[5 grO)rfrrrTrU�r�rVrhs   r�testRecvFrom�BasicTCPTest.testRecvFromFs(���M�M�*�*�4�0�	������c�"rc�B�URR[5 grrIr�s r�
_testRecvFrom�BasicTCPTest._testRecvFromKrLrc���URR[[5S-
5upURRS5up2X-nUR	U[5 grN)rfrrr�rUrT)r�rPrhrQrVs     r�testOverFlowRecvFrom�!BasicTCPTest.testOverFlowRecvFromNsM���]�]�+�+�C��H�Q�J�7�
���]�]�+�+�D�1�
���k������c�"rc�B�URR[5 grrIr�s r�_testOverFlowRecvFrom�"BasicTCPTest._testOverFlowRecvFromUrLrc��SnURRS5nU(dOX-
nM)URUS5 g)NrrP�ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff)rfrQrT)r�rV�reads   r�testSendAll�BasicTCPTest.testSendAllXsB������=�=�%�%�d�+�D����K�C�	�
	
����k�*rc�>�SnURRU5 g)Nre)rmr�)r��	big_chunks  r�_testSendAll�BasicTCPTest._testSendAllbs���	������y�)rc�d�URR5n[R"U[R[R
5nUR
UR5 URU[R5 URS5nURU[5 grO)rfr/r7�fromfdr�rbr�rCr&rQrTrU)r�r>r�rVs    r�
testFromFd�BasicTCPTest.testFromFdfsq��
�]�]�
!�
!�
#���}�}�R�����1C�1C�D������
�
�#����d�F�M�M�2��i�i��o������c�"rc�B�URR[5 grrIr�s r�_testFromFd�BasicTCPTest._testFromFdorLrc��URR5nURUR5 UR	S5nURU[5 grO)rf�dupr�rCrQrTrU)r�r�rVs   r�testDup�BasicTCPTest.testDuprsA���}�}� � �"������
�
�#��i�i��o������c�"rc�B�URR[5 grrIr�s r�_testDup�BasicTCPTest._testDupyrLrc��URRS5nURU[5 URR5 grO)rfrQrTrUr�r�rGs  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�)rmr[rUrur�s r�
_testShutdown�BasicTCPTest._testShutdown�s&�������C� �������"rNr�c�$�UR5 grrr�s r�testShutdown_overflow�"BasicTCPTest.testShutdown_overflow�s��	
���rc�f�SSKnURR[5 UR	[
URRURS-5 UR	[
URRSURS--5 URR
S5 g)Nrr
r3)	r�rmr[rUrDr�rur��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)NrPrm)rfr/r8rTr�_closedrDr<rQrCr7r�rbr�rU)r�r/rr�rVs     r�
testDetach�BasicTCPTest.testDetach�s������%�%�'���M�M� � �"������#�����
�
�-�-�.����'�4�=�=�#5�#5�t�<��
�
�����}�}�V�^�^�V�-?�-?��J������
�
�#��i�i��o������c�"rc�B�URR[5 grrIr�s r�_testDetach�BasicTCPTest._testDetach�rLrrr) r�r�r�r�r�rFrJrRrUrYr\r_rbrgrkrorrrvryr|r�r�rr�r"r�r�r�r�r�r�r�rrrr@r@/s���B�#�
!�#�!�#�
!�#�!�+�*�#�!�#�!���#�
���
�_�_�Y�$�&�(<�=��>���
���
�_�_�Y�$�&�(<�=�#�>��#�#� !rr@c�B�\rSrSrSSjrSrSrSrSrSr	Sr
S	rg
)�BasicUDPTesti�c�*�[RXS9 gr�)rr�r�s  rr��BasicUDPTest.__init__�rdrc��URR[[55nUR	U[5 gr�r�rQr�rUrTrGs  r�testSendtoAndRecv�BasicUDPTest.testSendtoAndRecv��(���i�i�n�n�S��X�&������c�"rc�f�URR[S[UR45 gr)�rrOrUr*r�r�s r�_testSendtoAndRecv�BasicUDPTest._testSendtoAndRecv����������Q��t�y�y� 1�2rc��URR[[55upUR	U[5 gr�r�rrr�rUrTrXs   rrY�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��rDrr�rrr�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�rYr\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�rGs  rr��"BasicUDPLITETest.testSendtoAndRecv�r�rc�f�URR[S[UR45 gr)r�r�s rr��#BasicUDPLITETest._testSendtoAndRecv�r�rc��URR[[55upUR	U[5 grr�rXs   rrY�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�rrNrr�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[rGs  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�rT�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�	ExceptionrrT)
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�rrB�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�)rL�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@rr�r��s����@��@rr�c�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�rOr�rGs  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)rfr�s rr�"SendrecvmsgConnectedBase.serv_sock�s���}�}�rc��UR$r)rmr�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�rrAr�r�s �rr��"SendrecvmsgServerTimeoutBase.setUp�s$���
��
�����!�!�$�"3�"3�4rr)r�r�r�r�r�r�r�r�s@rrr�s
���5�5rrc���\rSrSrSrSrSrSrSrSr	Sr
S	rS
rSr
SrS
rSrSr\"\S5S5r\R*S5rSrSrSrSrSrg)�SendmsgTestsi�c�|�URURR[[55[5 gr�rTrrQr�rUr�s r�testSendmsg�SendmsgTests.testSendmsg��%��������,�,�S��X�6��<rc�j�URUR[/5[[55 gr�rTr�rUr�r�s r�_testSendmsg�SendmsgTests._testSendmsg�s#������-�-�s�e�4�c�#�h�?rc�|�URURR[[55[5 grrr�s r�testSendmsgDataGenerator�%SendmsgTests.testSendmsgDataGenerator�r!rc�x�URURS[455[[55 g)Nc3�$# �UHov� M g7frrrs  rr�9SendmsgTests._testSendmsgDataGenerator.<locals>.<genexpr>�s���.@�%�Q�q�%�rr#r�s r�_testSendmsgDataGenerator�&SendmsgTests._testSendmsgDataGenerator�s,������-�-�.@�3�%�.@�A��S��	#rc�|�URURR[[55[5 grrr�s r�testSendmsgAncillaryGenerator�*SendmsgTests.testSendmsgAncillaryGenerator�r!rc�z�URUR[/SS55[[55 g)Nc3�$# �UHov� M g7frrrs  rr�>SendmsgTests._testSendmsgAncillaryGenerator.<locals>.<genexpr>�s���_��A�a��rrr#r�s r�_testSendmsgAncillaryGenerator�+SendmsgTests._testSendmsgAncillaryGenerator�s,������-�-�s�e�_��_�E��S��	#rc�|�URURR[[55[5 grrr�s r�testSendmsgArray�SendmsgTests.testSendmsgArray�r!rc��URUR[R"S[5/5[	[55 g)N�B)rTr��arrayrUr�r�s r�_testSendmsgArray�SendmsgTests._testSendmsgArray�s2������-�-�u�{�{�3��/D�.E�F��S��	#rc�|�URURR[[55[5 grrr�s r�testSendmsgGather�SendmsgTests.testSendmsgGather�r!rc��URUR[SS[SS/5[[55 g�NrOr#r�s r�_testSendmsgGather�SendmsgTests._testSendmsgGather�s2������-�-�s�2�A�w��A�B��.@�A�3�s�8�Lrc�Z�URURRS5S5 g�Nr��done�rTrrQr�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 iterablerrG)rDr�r�r�r��objectrUr�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 grFrHr�s r�testSendmsgBadCmsg�SendmsgTests.testSendmsgBadCmsg
rKrc	�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)rrrTrrG�rDr�r�rUrMr�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 grFrHr�s r�testSendmsgBadMultiCmsg�$SendmsgTests.testSendmsgBadMultiCmsg
s#��	
������,�,�T�2�G�<rc���UR[UR[//SQ5 UR[UR[/S[	5/5 URS5 g)N�rrrrGrUr�s r�_testSendmsgBadMultiCmsg�%SendmsgTests._testSendmsgBadMultiCmsg$
sU�����)�T�%9�%9��%��	.����)�T�%9�%9��%�+�v�x�!8�	:����'�"rc�Z�URURRS5S5 grFrHr�s r�testSendmsgExcessCmsgReject�(SendmsgTests.testSendmsgExcessCmsgReject,
s#��	
������,�,�T�2�G�<rc�*�[[S5(d\UR[5nUR	[
/SS/5 SSS5 UR
WRR5 URS5 g!,(df   NE=f)NrXr]rG)
r6r7rDr<r�rU�assertIsNonerPr?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�rCrDr<r�rUr�s r�_testSendmsgAfterClose�#SendmsgTests._testSendmsgAfterClose=
s,���
�
�������'�4�#7�#7�#��?rrN)r�r�r�r�rr$r'r,r/r4r7r<r?rCrIrNrQrVrr7rZrr^rarerhrkr�rrrrr�s���=�@�=�#�=�#�=�#�=�M�=�#�$=�
#��&�,�'�=�(�=�
�(�(�#�)�#�=�
#�
�@rrc��\rSrSrSrSrSrSr\"\	RS;S5S5r\RS	5r
S
rg)�SendmsgStreamTestsiB
c�|�URURR[[55[5 grrr�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�ro�rTrrQrr�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��?rw)
r�rAr�r=r�r<r?�ENOMEMr�r��r�rFs  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 grvryr�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�Nrw)
rDr<r�r7�MSG_DONTWAITr.rPr?�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�rprsrzr�r�ryrzr�rr�r�rrrrnrnB
s^��=�M�I�
"�.�c�l�l�*>�>� �!�I�!�I�
�$�$�
"�%�
"rrnc� �\rSrSrSrSrSrg)�SendmsgConnectionlessTestsi
c��grrr�s r�testSendmsgNoDestAddr�0SendmsgConnectionlessTests.testSendmsgNoDestAddr�
rrc���UR[URR[/5 UR[URR[//SS5 gr))rDr<r�r�rUr�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�rUrTr�r,r��r�rVr�r�rhs     r�testRecvmsg�RecvmsgGenericTests.testRecvmsg�
sa��$(�N�N�4�>�>�3�s�8�$L�!��e�����c�"�� � ��}�}�5�����"�%�����4��(rc�.�UR[5 gr�r�rUr�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)NrO���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 grO)rrCrDr<r�r�s r�testRecvmsgAfterClose�)RecvmsgGenericTests.testRecvmsgAfterClose�
s.�����������'�4�>�>�4�>�>�4�Hrc��grrr�s r�_testRecvmsgAfterClose�*RecvmsgGenericTests._testRecvmsgAfterClose�
rrc� �URRS5 UR[URUR[[55 URR5 g!URR5 f=f)Nr})	rrArDr�r�r�rUr�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�Nrx)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)	NrOrr�Fr��r�r�Tr�)r�rr�rUr7r�rTr�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�)
rrAr�r�r�rUrTr�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 grBr#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�rr7r�rr�r�r�r�rrrr�r��
s���)��)��)��*��)��)��I�

�"�I��&�*�%� )�&� )�D� � ��!���&�-�-��+�)�,�)��'�'�M�(�Mrr�c�,�\rSrSrSrSrSrSrSrg)�RecvmsgGenericStreamTestsi&c���URURS5upp4URUS5 URX@R5 URU/5 URUSS9 g)NrPrr�)r�rrTr�r,r�r�s     r�testRecvmsgEOF�(RecvmsgGenericStreamTests.testRecvmsgEOF*s]��$(�N�N�4�>�>�4�$H�!��e�����c�"�� � ��}�}�5�����"�%�����4��(rc�8�URR5 gr)r�rCr�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)NrOFr�rPT)r�rr�rUr�r,rTr�)r�rPr�r�rhrQrVs       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�)
rDr�rr�rr�rUrLrMrTr�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�)
rLr�rUrDr�rr�rMrrTr�r,r��r�r��nbytesr�r�rhs      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��rTr�)	rLr�rUrr�rTr�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�rUrr�rT�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--------------r3�	�Mary had a little lambsMarys
01 had a 9slittle lamb---Tr�)	rLrr��
memoryviewrTr�r�r,r�)r��b1�b2�b3r�r�r�rhs        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�r�rrr	rrr�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�r3r�)�socklen_t_limitr7r�listr�r�r;�itemsizerTr�rDr�ry�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����-����#�+�+�FrrXc��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
�sparcrOrrr�r3r�)rr7rX�SOLARISrz�	processorrr�r�r;rr�rr�rDr�ryr)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�rrBrr7r#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�ru�mkstempr�rMr�rC�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)NrrP)�	enumeraterM�lseek�SEEK_SETrTrfrr�)r�r3r!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�)	r7rXr�r;�	frombytesr�rrMrC)r��recvmsg_result�
cmsg_level�	cmsg_type�	cmsg_datar3r>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�)	rTr�rUr7rXr�r;r4r�)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)rTrUr�r,r�r7r�r&rr�r�r;�tuplerXr�r*�
SIZEOF_INTr@r:)r��numfdsr��maxcmsgs�ignoreflagsrVr�r�rhr3�itemrBrCrDs              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��rQr�rr�rUr�s r�testFDPassSimple�SCMRightsTest.testFDPassSimpleD�.�����Q����t�~�~�/2�3�x��!@�	Arc
��URUR[/[R[R
[R"SURS55R54/5[[55 g)Nr�r
)
rTr�rUr7rXr�r;r4rr�r�s r�_testFDPassSimple�SCMRightsTest._testFDPassSimpleIsh������ � ����#�#��#�#��+�+�c�4�;�;�q�>�2�:�:�<�>�?�
@�

��H�
	rc	�x�URSURUR[[5S55 g)NrNr�rTr�s r�testMultipleFDPass� SCMRightsTest.testMultipleFDPassRrWrc�&�URS5 g�NrN�rGr�s r�_testMultipleFDPass�!SCMRightsTest._testMultipleFDPassW������a� rrXc��URSURUR[[5[
R"S[-555 gr_)rQr�rr�rUr7rXrLr�s r�testFDPassCMSG_SPACE�"SCMRightsTest.testFDPassCMSG_SPACEZs@��	
���
�t�~�~�d�n�n�c�#�h�$�/�/��J��?�A�	Brc�&�URS5 gr_r`r�s r�_testFDPassCMSG_SPACE�#SCMRightsTest._testFDPassCMSG_SPACEa������a� rc���URSURUR[[5[
R"S[-55[
RS9 g)Nr
rN�rO)	rQr�rr�rUr7rrLr�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�r`r�s r�_testFDPassCMSG_LEN�!SCMRightsTest._testFDPassCMSG_LENorcrzskipping, see issue #12958zskipping, see gh-91214zskipping, see issue #22397c	�v�URSURUR[[5S5SS9 g)Nr3r�)rNrTr�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�Nr3r��	r4rTr�rUr7rXr�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)Nr3)rNrO)
rQr�rr�rUr7rXrLrr�)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 grvrwrxs   r�_testFDPassSeparateMinSpace�)SCMRightsTest._testFDPassSeparateMinSpace�r}rc���URU/U5nURU[
U55 g![a<nURUR[5 URU/5nSnAN]SnAff=fr)r�r<r&r?r�rTr�)r�rVr�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�rl)rQr�rr�rUr7r�r�s r�testFDPassEmpty�SCMRightsTest.testFDPassEmpty�s=��	
���Q����t�~�~�/2�3�x��!@�)/�):�):�	�	<rc�p�UR[[R[RS4/5 g�Nr)r�rUr7rXr�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�rUrTr�r,r�r7r�r�rXr��
assertLessrL�r�rVr�r�rhrBrCrDs        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�rUr7rXr�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�r3r�)r�rr�rUrTr�r,r�r7r�r�r;rXr�r@rr:)	r�rVr�r�rhr3rBrCrDs	         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)Nr3r�r�)	r4r�rUr7rXr�r;r�rrxs   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�)rTrUr�r,r�r7r�)r�r�rOrVr�r�rhs       r�checkTruncatedHeader�"SCMRightsTest.checkTruncatedHeader�s`��%+�!��e�����c�"�� � ��}�}�5�����"�%�����4�&�2C�2C�*�	�	,rrtz#80931c��URURUR[[55[
RS9 g�Nrl�r�r�rr�rUr7r�r�s r�testCmsgTruncNoBufSize�$SCMRightsTest.testCmsgTruncNoBufSize�s8��	
�!�!�$�.�.�����S��"J�/5�.?�.?�		"�	Arc�&�URS5 gr�r`r�s r�_testCmsgTruncNoBufSize�%SCMRightsTest._testCmsgTruncNoBufSizerjrc��URURUR[[5S5[
RS9 g)Nrrlr�r�s r�testCmsgTrunc0�SCMRightsTest.testCmsgTrunc0s8��	
�!�!�$�.�.�����S��1�"M�.4�.?�.?�	"�	Arc�&�URS5 gr�r`r�s r�_testCmsgTrunc0�SCMRightsTest._testCmsgTrunc0rjrc�v�URURUR[[5S55 gr�)r�r�rr�rUr�s r�testCmsgTrunc1�SCMRightsTest.testCmsgTrunc1s%���!�!�$�.�.�����S��1�"M�Nrc�&�URS5 gr�r`r�s r�_testCmsgTrunc1�SCMRightsTest._testCmsgTrunc1rjrc��URURUR[[5[
S-55 gr�)r�r�rr�rUrLr�s r�testCmsgTrunc2Int�SCMRightsTest.testCmsgTrunc2Int!s2��
	
�!�!�$�.�.�����S��1;�a��#A�	Brc�&�URS5 gr�r`r�s r�_testCmsgTrunc2Int� SCMRightsTest._testCmsgTrunc2Int)rjrc	��URURUR[[5[
R"S5S-
55 gr�)r�r�rr�rUr7rr�s r�testCmsgTruncLen0Minus1�%SCMRightsTest.testCmsgTruncLen0Minus1-s:���!�!�$�.�.�����S��17����1C�a�1G�#I�	Jrc�&�URS5 gr�r`r�s r�_testCmsgTruncLen0Minus1�&SCMRightsTest._testCmsgTruncLen0Minus12rjrc�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�)rr�rr�rUrTr�r,r�r7r�rXr�r�r�r;r@rr:)r��ancbuf�maxdata�mindatarVr�r�rhrBrCrDr3s            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�r`r�s r�_testCmsgTruncLen0� SCMRightsTest._testCmsgTruncLen0Vrjrc�R�UR[R"S5S-SS9 g)Nrr
r�r�r�s r�testCmsgTruncLen0Plus1�$SCMRightsTest.testCmsgTruncLen0Plus1Zs#��� � �����(:�Q�(>�� �Jrc�&�URS5 gr�r`r�s r�_testCmsgTruncLen0Plus1�%SCMRightsTest._testCmsgTruncLen0Plus1^rjrc�\�UR[R"[5[S9 g)Nr��r�r7rrLr�s r�testCmsgTruncLen1�SCMRightsTest.testCmsgTruncLen1bs#��� � ����
�(C�)3�	!�	5rc�&�URS5 gr�r`r�s r�_testCmsgTruncLen1� SCMRightsTest._testCmsgTruncLen1grjrc�t�UR[R"S[-5S-
S[-S-
S9 g)Nr3r
r�r�r�s r�testCmsgTruncLen2Minus1�%SCMRightsTest.testCmsgTruncLen2Minus1ls5��� � �����J��(G�!�(K�*+�j�.�A�)=�	!�	?rc�&�URS5 gr�r`r�s r�_testCmsgTruncLen2Minus1�&SCMRightsTest._testCmsgTruncLen2Minus1qrjrrN)r
r�r)>r�r�r�r�r�r4r:r�r=rGrQrUrYr\rarr7rerrhrmrpr"r�rr'rrsr{r�r�r�r�r�r�r�r�r�r�r0ryrzr�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�rrrr.r.�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�?�?�@�?��(�(�!�)�!rr.c	���\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�RFC3542AncillaryTestivr3r�c�R�0nUHup4nURX44U5 XRX44'M  U$r)r0)r�r��drBrCrDs      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
TrJrr�)rrtr7r_r�r�r�r�r�rUrTr�r,r�r�r&rKr�r*rLr;r@r�r�)r��
ancbufsize�maxhoprOrVr�r�rhrBrCrDr'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�rUr�s r�_testRecvHopLimit�&RFC3542AncillaryTest._testRecvHopLimit�s6��
	
������,�,�T�5F�5F�,�G�H����#�rrXc�R�UR[R"[5S9 g)Nr�)r�r7rXrLr�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�Nrxr�)
rr�r�r�rTr�rUr7r_r�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
TrJr3r�rr()rrtr7r_r�r�r�r�r�r�rUrTr�r,r�r�r�r}rLr;r@r�r�r�)r�r�r�rOrVr�r�rh�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�r}c�"�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�Nr3r�)r
	r7rXrLr�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�rTr�rUr7r_r}r;�
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)Nrxr�r�)rr�r�r�r�rUr7r_r}r;r!	rr�r	r<r&r?r�rTr�)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�)rrtr7r_r�r�r�r�r�rUrTr�r,r�r�)r�r�rOr$rVr�r�rhs        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�rO�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)Nrr.	r/	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+	rLr�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)rrtr7r_r�r�r�rr�r�rUrrLrTr�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()rrtr7r_r�r�r�r�r�r�rUrTr�r,r�r�r.r}r�rLr;r@r�r�)r�r�rOrVr�r�rhrBrCrDr'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�)rR	r7rXrLr�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��rR	r7rXrLr�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�)rR	r7rXrLrr�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()rrtr7r_r�r�r�r�rr�r�rUrXrLrrTr�r,r�r�r}r��pop�remover;r@r�r�r�)
r�rVr�r�rh�
cmsg_typesrBrCrDr'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�rr7r�rr�r�r�r	r	r
	r	r	r	r	r	r"	r%	r(	r+	r�r�r4	r7	r:	r=	r@	rC	rF	rI	rL	rO	rR	rU	rX	r\	r_	rb	re	rh	rk	rq	rt	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�rrrrw	rw	,���	rrw	r�c��\rSrSrSrg)�SendmsgUDPTesti1rNrx	rrrr{	r{	1���rr{	r�c��\rSrSrSrg)�RecvmsgUDPTesti5rNrx	rrrr~	r~	5r|	rr~	r�c��\rSrSrSrg)�RecvmsgIntoUDPTesti9rNrx	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�	r	r�rJc��\rSrSrSrg)�SendmsgUDP6TestiGrNrx	rrrr�	r�	G���	rr�	c��\rSrSrSrg)�RecvmsgUDP6TestiMrNrx	rrrr�	r�	Mr�	rr�	c��\rSrSrSrg)�RecvmsgIntoUDP6TestiSrNrx	rrrr�	r�	Sr�	rr�	r_c��\rSrSrSrg)�RecvmsgRFC3542AncillaryUDP6TestiYrNrx	rrrr�	r�	Y���	rr�	c��\rSrSrSrg)�#RecvmsgIntoRFC3542AncillaryUDP6TestiarNrx	rrrr�	r�	as��	rr�	c��\rSrSrSrg)�SendrecvmsgUDPLITETestBaseikrNrx	rrrr�	r�	ks��
	rr�	c��\rSrSrSrg)�SendmsgUDPLITETestirrNrx	rrrr�	r�	rr�	rr�	c��\rSrSrSrg)�RecvmsgUDPLITETestixrNrx	rrrr�	r�	xr�	rr�	c��\rSrSrSrg)�RecvmsgIntoUDPLITETesti~rNrx	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�rNrx	rrrr�	r�	�r�	rr�	c��\rSrSrSrg)�RecvmsgUDPLITE6Testi�rNrx	rrrr�	r�	�r�	rr�	c��\rSrSrSrg)�RecvmsgIntoUDPLITE6Testi�rNrx	rrrr�	r�	�r�	rr�	c��\rSrSrSrg)�#RecvmsgRFC3542AncillaryUDPLITE6Testi�rNrx	rrrr�	r�	�s��	rr�	c��\rSrSrSrg)�'RecvmsgIntoRFC3542AncillaryUDPLITE6Testi�rNrx	rrrr�	r�	�s��	rr�	c��\rSrSrSrg)�SendrecvmsgTCPTestBasei�rNrx	rrrr�	r�	�r|	rr�	c��\rSrSrSrg)�SendmsgTCPTesti�rNrx	rrrr�	r�	�r|	rr�	c��\rSrSrSrg)�RecvmsgTCPTesti�rNrx	rrrr�	r�	�ry	rr�	c��\rSrSrSrg)�RecvmsgIntoTCPTesti�rNrx	rrrr�	r�	�ry	rr�	c��\rSrSrSrg)�SendrecvmsgSCTPStreamTestBasei�rNrx	rrrr�	r�	�ry	rr�	z6IPPROTO_SCTP: [Errno 62] Protocol not supported on AIXr�rbr�c��\rSrSrSrg)�SendmsgSCTPStreamTesti�rNrx	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�rNrx	rrrr�	r�	�r|	rr�	r�c��\rSrSrSrg)�SendmsgUnixStreamTesti�rNrx	rrrr�	r�	�ry	rr�	c��\rSrSrSrg)�RecvmsgUnixStreamTestirNrx	rrrr�	r�	r�	rr�	c��\rSrSrSrg)�RecvmsgIntoUnixStreamTestirNrx	rrrr�	r�	r�	rr�	rXr�c��\rSrSrSrg)�RecvmsgSCMRightsStreamTestirNrx	rrrr�	r�	ry	rr�	c��\rSrSrSrg)�RecvmsgIntoSCMRightsStreamTestirNrx	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�/�/��9rr3c�0�[R"U5 gr)r�r�r�	s  rr�	r�	9s���L�L��!rr)r�r�r�r�r�rrBror6r��
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�rAror�s �rr�� InterruptedRecvTimeoutTest.setUpFs"���
��
���	�	���T�\�\�*rc��URUR5 UR[5nU"U0UD6 SSS5 URS5 g!,(df   N =f!URS5 f=fr))r�	r�	rDr��r�r�r$r�rRs     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 grO)r�	r�rQr�s r�testInterruptedRecvTimeout�5InterruptedRecvTimeoutTest.testInterruptedRecvTimeoutTs���!�!�$�)�)�.�.�$�7rc�b�URURR[S55 grO)r�	r��	recv_intorLr�s r�testInterruptedRecvIntoTimeout�9InterruptedRecvTimeoutTest.testInterruptedRecvIntoTimeoutWs ���!�!�$�)�)�"5�"5�y���Grc�P�URURRS5 grO)r�	r�rrr�s r�testInterruptedRecvfromTimeout�9InterruptedRecvTimeoutTest.testInterruptedRecvfromTimeoutZs���!�!�$�)�)�"4�"4�d�;rc�b�URURR[S55 grO)r�	r�rsrLr�s r�"testInterruptedRecvfromIntoTimeout�=InterruptedRecvTimeoutTest.testInterruptedRecvfromIntoTimeout]s ���!�!�$�)�)�"9�"9�9�T�?�Krr�c�P�URURRS5 grO)r�	r�r�r�s r�testInterruptedRecvmsgTimeout�8InterruptedRecvTimeoutTest.testInterruptedRecvmsgTimeout`s���!�!�$�)�)�"3�"3�T�:rr�c�d�URURR[S5/5 grO)r�	r�r�rLr�s r�!testInterruptedRecvmsgIntoTimeout�<InterruptedRecvTimeoutTest.testInterruptedRecvmsgIntoTimeoutds#���!�!�$�)�)�"8�"8�9�T�?�:K�Lrr)r�r�r�r�r�r�	r�	r�	r�	r�	rr7r�	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�rmr�rCr��Thread�	doConnect�startr�rCrfr	rAro)r��
cli_threadrhr�s   �rr�� InterruptedSendTimeoutTest.setUpss����
��
�����)���������,�,�-��%�%�T�^�^�<�
�����"�i�i�.�.�0���
�t�����
�
�+�+�,��������!�!�$�,�,�/rc�N�URRUR5 gr)rmrLr�r�s rr
�$InterruptedSendTimeoutTest.doConnect�s�������t�~�~�.rc���UR[5nURUR5 U"U0UD6 M%!,(df   O=fURS5 g!URS5 f=fr))rDr�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!�!A4rrc�P�URURRS5 gr�)r
rmr[r�s r�testInterruptedSendTimeout�5InterruptedSendTimeoutTest.testInterruptedSendTimeout�s���!�!�$�.�.�"5�"5�x�@rc�f�URURRSUR5 gr�)r
rmrOr�r�s r�testInterruptedSendtoTimeout�7InterruptedSendTimeoutTest.testInterruptedSendtoTimeout�s'��	
�!�!�$�.�.�"7�"7��"&�.�.�	2rr�c�R�URURRS/5 gr�)r
rmr�r�s r�testInterruptedSendmsgTimeout�8InterruptedSendTimeoutTest.testInterruptedSendmsgTimeout�s ��	
�!�!�$�.�.�"8�"8�8�*�Errq)r�r�r�r�r�r
r
r�requires_mac_verr
r
rr7r
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�rCrCrr�rTrQ)r�rDrh�sdrfr1rs       r�	testClose�TCPCloserTest.testClose�s���Y�Y�%�%�'�
���
�
��
�X�X��!�=�=�"��r�2�s�;���S�����t�$���������S�)�	
�
�
���
�
�rc��URR[UR45 [R
"S5 g�Nr
)rrLr*r�rJrKr�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�)rsr�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&r7r6rTr6r�r�r�rbr7r�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 grO�r�rQrTrUrGs  rrF�BasicSocketPairTest.testRecv��$���i�i�n�n�T�"������c�"rc�B�URR[5 gr�rr[rUr�s rrJ�BasicSocketPairTest._testRecv�������
�
�c�rc�B�URR[5 gr�r�r[rUr�s r�testSend�BasicSocketPairTest.testSend�����	�	���s�rc�f�URRS5nURU[5 grO�rrQrTrUrGs  r�	_testSend�BasicSocketPairTest._testSend��$���h�h�m�m�D�!������c�"rrNr)
r�r�r�r�r�r$
r'
r*
rFrJr6
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)r7rwr�r<r�r�s rrw�#PurePythonSocketPairTest.socketpair�s@��	5��$�$�V�_�_�5�5���	5��$�$�V�^�^�4�4�	5�s�#&�.A�Ac�>�[[S5(a/[RUl[R
[lOSUl[TU]5 g)Nrw)r6rr7rw�_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�rC
r7rwr�s �rr��!PurePythonSocketPairTest.tearDown�s)���
�����=�=�$� $�
�
�F��%rc�f�URRS5nURU[5 grOr-
rGs  r�	test_recv�"PurePythonSocketPairTest.test_recv�r/
rc�B�URR[5 grr1
r�s r�
_test_recv�#PurePythonSocketPairTest._test_recv�r3
rc�B�URR[5 grr5
r�s r�	test_send�"PurePythonSocketPairTest.test_sendr8
rc�f�URRS5nURU[5 grOr:
rGs  r�
_test_send�#PurePythonSocketPairTest._test_sendr=
rc��[R"[R5upUR5 UR5 gr)r7rwr�rC�r�rrs   r�	test_ipv4�"PurePythonSocketPairTest.test_ipv4s*���$�$�V�^�^�4����	�	���	�	�rc��grrr�s r�
_test_ipv4�#PurePythonSocketPairTest._test_ipv4
rrr_�IPV6_V6ONLY� IPV6_V6ONLY option not supportedrzc��[R"[R5upUR5 UR5 gr)r7rwr�rCrU
s   r�	test_ipv6�"PurePythonSocketPairTest.test_ipv6s,��
�$�$�V�_�_�5����	�	���	�	�rc��grrr�s r�
_test_ipv6�#PurePythonSocketPairTest._test_ipv6rrc�^^�[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)NFr3T)r7r�rbr0rL�BlockingIOError�InterruptedError)r�rQ�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+rDr<rwrC)r�ri
�sock1�sock2rg
rh
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)rC
)r�r�r�r�rwr�r�rI
rL
rO
rR
rV
rY
r"r�r6rr�rr�r^
ra
rm
rp
r�r�r�s@rr?
r?
�s����
5�	�.�#���#��

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

��B
�
rr?
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�)	rTr�r�getblockingr5�F_GETFLrM�
O_NONBLOCK�bool)r�r�ro�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)NTFrx
rr)r�r0r�
rAr�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._testSetBlockingprrNr�c��SSKnURUR:�aURS5 URRS5 UR
URR5S5 URRURS-5 URURR55 g)Nrzneeds UINT_MAX < ULONG_MAXFrx
r
)	r�r�r�r�r�r0rTrrdr�s  r�testSetBlocking_overflow�,NonBlockingTCPTests.testSetBlocking_overflowss���	�����!4�!4�4��M�M�6�7��	�	���e�$�������-�-�/��5��	�	���i�0�0�1�4�5����$�)�)�.�.�0�1rr/ztest needs socket.SOCK_NONBLOCKr3�rc��URR5 [R"[R[R[R
-5UlUR
URS5 gr))r�rCr7r�rbr/r�
r�s r�testInitNonBlocking�'NonBlockingTCPTests.testInitNonBlocking�sQ��
	
�	�	�����M�M�&�.�.�"(�"4�"4�v�7K�7K�"K�M��	�� � ����A�.rc��grrr�s r�_testInitNonBlocking�(NonBlockingTCPTests._testInitNonBlocking�rrc�0�[S5 URRS5 URR5upUR	UR
5 UR
UR55 SSS5 g!,(df   g=f)Nr)rqr�rArCr�rCrdrrgs   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�rrLr*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)rqr�rArCr�rCrTr)r��default_timeoutrDrhs    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�r0rJ�	monotonicrDre
rCr�ru
r�r�r�LONG_TIMEOUTr=r�rCrdr)r��
start_timerDrh�dtrfr1rs        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)ru
r�rrLr*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�rCr�rCr0rDre
rQr�rUru
r�r�rr�
r=rT)r�rDrhrVrfr1rs       rrF�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)rrLr*r�ru
r�r�rUr�s rrJ�NonBlockingTCPTests._testRecv�sA�������$��	�	�*�+�	
�
�
����	
������rc�,�[b[RS-nOSnURR5up#UR	UR
5 UR
U5 UR[[55ng![a gf=f�Nr
l)r�r�r�rCr�rCrAr�rQr�rU)r��
large_timeoutrDrhrVs     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�rrLr*r�rAr�r�rU)r�r�
s  r�_testLargeTimeout�%NonBlockingTCPTests._testLargeTimeout�sw��� �%�-�-��1�M�&�M������$��	�	�*�+�	��H�H���
�.�	
���������	��	�s�
B�
B�B)ru
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�
rFrJr�
r�
r�rrrrs
rs
Es���D�J�"/�(
�
���
�_�_�Y�$�&�(<�=�
2�>��
2�!(� 4� 4�5E� F��
������9�:�<��#�#�A�q�"�-�/�.�<�/�
�1�,�	A�,�-�,,�#�(�"�(rrs
c���\rSrSrSrSrSrSrSrSr	\
rSr\
r
S#S	jrS
rSrSrS
rSrSrSrSrSrSrSrSrSrSrSrSrSrSr Sr!Sr"Sr#Sr$S r%S!r&S"r'g)$�FileObjectClassTestCaseiaSUnit tests for the object returned by socket.makefile()

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

self.write_file is the io object returned by makefile() on the
server connection.  You can write to this file to send output
to the client.
r�r�strictNr3r�c�*�[RXS9 gr�rBr�s  rr�� FileObjectClassTestCase.__init__rDrc�p�[S5Vs/sHn[R"5PM snuUlUlUlUl[RU5 URRURURURURURS9Ulgs snf)NrN�r��errors�newline)r�r�r��evt1�evt2�
serv_finished�cli_finishedrar�rfr��	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�
rCr�closedrar�r�s rr�� FileObjectClassTestCase.tearDown*sO������� �������������-�-�.�����$�$�T�*rc���[RU5 URRURUR
URURURS9Ul	g)Nr�
)
rar�rmr��
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�
rCrr�
rar�r�s rr��&FileObjectClassTestCase.clientTearDown9sO��������������������.�.�/�����*�*�4�0rc��URRS5 URRS5 UR	[
URRS5 UR	[5nURRS5 SSS5 URS[WR55 g!,(df   N4=f)Nr
rOz!cannot read from timed out object)
rfrAr�
rfrDr�r<r.rrP)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)NrrO)r�
r1�	write_msg�flushr�
r�r�s r�_testReadAfterTimeout�-FileObjectClassTestCase._testReadAfterTimeoutLsA�������d�n�n�Q�q�1�2������������!rc���URR[UR5S-
5nURRS5nX-nUR	X0R5 grB)r�
rfr��read_msgrT)r��	first_seg�
second_segrVs    r�
testSmallRead�%FileObjectClassTestCase.testSmallReadQsR���N�N�'�'��D�M�M�(:�1�(<�=�	��^�^�(�(��+�
��$������m�m�,rc��URRUR5 URR5 gr�r�
r1r�
r�
r�s r�_testSmallRead�&FileObjectClassTestCase._testSmallReadX�(�������d�n�n�-������rc�n�URR5nURXR5 gr)r�
rfrTr�
rGs  r�testFullRead�$FileObjectClassTestCase.testFullRead\s&���n�n�!�!�#������m�m�,rc��URRUR5 URR5 gr)r�
r1r�
rCr�s r�
_testFullRead�%FileObjectClassTestCase._testFullReadar�
rc���[UR5"5nURRS5nU(dOX-
nM)UR	XR5 gr�)r�r�
r�
rfrT)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�
�readlinerTr�
�r��lines  r�testReadline�$FileObjectClassTestCase.testReadliness&���~�~�&�&�(������}�}�-rc��URRUR5 URR5 grr�
r�s r�
_testReadline�%FileObjectClassTestCase._testReadlinexr�
rc��URR5 URR5nUR	XR
5 gr)rfrCr�
rfrTr�
rGs  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�
rCrfrQr�rUr�r�
r�decoderTrGs  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)rTr�
r�r�
rrfr/r�s r�testAttributes�&FileObjectClassTestCase.testAttributes�sG��������,�,�d�n�n�=�������,�,�d�m�m�.B�.B�.D�Erc���URURRUR5 URURRUR
R
55 gr)rTr�
r�r�
rrmr/r�s r�_testAttributes�'FileObjectClassTestCase._testAttributes�sG��������-�-�t���?�������-�-�t�~�~�/D�/D�/F�Grc��URR5 UR[URR5 UR
R5 UR[UR
R5 gr)r�
rCrDrr/rfr<r+r�s r�
testRealClose�%FileObjectClassTestCase.testRealClose�sV�����������*�d�n�n�&;�&;�<��
�
�������'�4�=�=�#<�#<�=rc��grrr�s r�_testRealClose�&FileObjectClassTestCase._testRealClose�rr)r�
r�
r�
r�
r�
r�
r)(r�r�r�r�r�r�r�r�
r�
r�
rUr�
r�
r�
r�r�r�r�r�r�
r�
r�
r�
r�
r�
r�
r�
r�
r�
r�
rrrr
r
rrrrr�rrrr�
r�
s���	��G��H�
�F��G��I��H��J��I�B�$�+�$�1�
O�"�
-� �-�
 �-� �.�
 �-� �-� �3�4�F�H�>�
rr�
c��\rSrSrSrSrSrSrSrSr	\
R"\"\
S5S	5S
5rSrSrS
rSrSrSrg)�!UnbufferedFileObjectClassTestCasei�asRepeat the tests from FileObjectClassTestCase with bufsize==0.

In this case (and in this case only), it should be possible to
create a file object, read a line from it, create another file
object, read another line from it, without loss of data in the
first file object's buffer.  Note that http.client relies on this
when reading multiple requests from the same socket.rc�*�URR5nURUSUR-5 URRSS5UlURR5nURUSUR-5 g)N�A. r3r�B. )r�
r�
rTr�
rfr�r�
s  r�testUnbufferedReadline�8UnbufferedFileObjectClassTestCase.testUnbufferedReadline�sp���~�~�&�&�(������v����6�7����/�/��a�8����~�~�&�&�(������v����6�7rc���URRSUR-5 URRSUR-5 URR5 g)Nrrr�
r�s r�_testUnbufferedReadline�9UnbufferedFileObjectClassTestCase._testUnbufferedReadline�sH�������f�t�~�~�5�6������f�t�~�~�5�6������rc�.�URR5 URRS5nURXR5 UR
R5 UR
[URRS5 grO)rfrCrQrTr�
r�
rDr<rGs  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�)ryr�rfr�
rCrT)r��refcount_before�refcount_afters   r�testMakefileCloseSocketDestroy�@UnbufferedFileObjectClassTestCase.testMakefileCloseSocketDestroy�sM���/�/�$�-�-�8��������������7������1�,�n�=rc��grrr�s r�_testMakefileCloseSocketDestroy�AUnbufferedFileObjectClassTestCase._testMakefileCloseSocketDestroy�rrc��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)NFrrOr
g�?r�r
)rfr0rTr�
�readintorLrfr�r�
r�
r�r�
r�rJrK)r�r�
r�r!rVs     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�
r1r�
r�
r�
r�r�
r�s r�_testSmallReadNonBlocking�;UnbufferedFileObjectClassTestCase._testSmallReadNonBlocking�s[���	�	���s�������d�n�n�-��������	�	�
�
��	
������$rc��URRS5 UR(aURUR5 gg)Nr8)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<rmr0rr�r�
r1r�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"r�r6ryr.r1r5r9r=rBr�rrrrr�sg��<��G�8� �
=� ������m�4�7�9�>�9�>�
�7�&%�-�Grrc��\rSrSrSrSrg)�#LineBufferedFileObjectClassTestCaseir
rN�r�r�r�r�r�r�rrrrErE����GrrEc��\rSrSrSrSrg)�$SmallBufferedFileObjectClassTestCaseir3rNrFrrrrIrIrGrrIc�J�\rSrSrSrSr\RS5rSr	\r
SrSrg)	�"UnicodeReadFileObjectClassTestCasei"�=Tests for socket.makefile() in text mode (rather than binary)r=rr�rKrN�
r�r�r�r�r�r�
rUrr�
r�
r�
r�
r�rrrrKrK"s'��G��I��z�z�'�"�H��J��I��GrrKc�J�\rSrSrSrSr\rSr\RS5r
SrSrg)	�#UnicodeWriteFileObjectClassTestCasei,rLr3r�rrKrN)
r�r�r�r�r�r�
rUr�
r�
rr�
r�
r�rrrrOrO,s'��G��I��H��J��
�
�7�#�I��GrrOc�h�\rSrSrSrSr\RS5rSr	\RS5r
SrSrg)	�'UnicodeReadWriteFileObjectClassTestCasei6rLr=rr�rKrNrMrrrrQrQ6s0��G��I��z�z�'�"�H��J��
�
�7�#�I��GrrQc��\rSrSrSrSrSrg)�NetworkConnectionTesti@zProve network connection.c�|�[R"[UR45UlURUlgr)r7�create_connectionr*r�rrmr�s rr��!NetworkConnectionTest.clientSetUpCs*���+�+�T�4�9�9�,=�>�������r)rrmN)r�r�r�r�r�r�r�rrrrSrS@s
��#�"rrSc��\rSrSrSrSrg)�
BasicTCPTest2iIzLTests that NetworkConnection does not break existing TCP functionality.
    rN)r�r�r�r�r�r�rrrrXrXIs��rrXc��\rSrSr"SS\R5r\RS5r\	RS5r\	RS5rSr
SrS	rg
)�NetworkConnectionNoServeriMc��\rSrSrSrSrg)�$NetworkConnectionNoServer.MockSocketiOc��[S5e)Nz	timed out)r�r�s  rrL�,NetworkConnectionNoServer.MockSocket.connectPs
���{�+�+rrN)r�r�r�r�rLr�rrr�
MockSocketr\Os��	,rr_c#�# �[RnUR[lSv� U[lg!U[lf=f7f)z*Return a socket which times out on connectN)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)rrYr7r�rbr�rCrDr<rLr*rTrPr?�ECONNREFUSED)r�r�rrRs    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)rrYrDr<r7rUr*�get_socket_conn_refused_errsr.rPr?)r�r�rR�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)rrYr7rUr*r=�ExceptionGroupr&�
exceptionsr<r�rbrTr�)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)rbr7rUr*r=r�r<rr�r?�EAFNOSUPPORTrs  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,�contextmanagerrbr�skip_if_tcp_blackholerfrkrsrwr�rrrrZrZMsl��,�V�]�]�,����'��'��(�(�A�)�A��(�(�;�)�;�0=�$5rrZc�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__�r�rc�8�[R"5Ulgr)rrY�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�rCrCrgs   r�_justAccept�+NetworkConnectionAttributesTest._justAccept�s���Y�Y�%�%�'�
���
�
�rc�
�[R"[UR4[R
S9UlURURR5 URURRS5 g)Nrxr3)r7rUr*r�rrBrr�rCrTr6r�s r�_testFamily�+NetworkConnectionAttributesTest._testFamily�sT���+�+�T�4�9�9�,=�$+�$<�$<�>�����������'���������!�,rc�F�[R"[UR4[R
SUR4S9UlURURR5 URURR5SUR5 g)NrK)ro�source_addressr
)r7rUr*r�rrBr�rr�rCrTr+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�rr7rmrnrUr*r�rr�rCrTrr�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�rxr�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�)r7rUr*r�rrTrr�s r�_testTimeoutValueNamed�6NetworkConnectionAttributesTest._testTimeoutValueNamed�s<���+�+�T�4�9�9�,=�r�J���������,�,�.��3rc��[R"[UR4S5UlURURR5 URURR5S5 g)Nr�)	r7rUr*r�rr�rCrTrr�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__�r�rc��grrr�s rr��*NetworkConnectionBehaviourTest.clientSetUp�rrc�p�URR5 SUl[RU5 grrr�s rr��-NetworkConnectionBehaviourTest.clientTearDown�rrc��URR5upURUR5 [R
"S5 UR
S5 g)NrO�done!)r�rCr�rCrJrKr[rgs   r�testInsideTimeout�0NetworkConnectionBehaviourTest.testInsideTimeout�s=���Y�Y�%�%�'�
������
�
�#��
�
�1�
��	�	�(�rc��[R"[UR45=UlnURS5nUR
US5 g)NrVr�)r7rUr*r�rrQrT)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
rxc�&>�TRS5$)NrV)rQ�r�s�rr�DNetworkConnectionBehaviourTest._testOutsideTimeout.<locals>.<lambda>s
����	�	�!�r)r7rUr*r�rrDr�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�rArC�r$r�r�s  �r�
raise_timeout�4TCPTimeoutTest.testTCPTimeout.<locals>.raise_timeouts%����I�I� � ��%��I�I���rz*Error generating a timeout exception (TCP)�rDr��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)NFrx
z%caught timeout instead of error (TCP)Tz!caught unexpected exception (TCP)z3accept() returned success when we did not expect it)r�rArCr�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)
Nr8c��\rSrSrSrg)�4TCPTimeoutTest.testInterruptedTimeout.<locals>.Alarmi&rNrx	rrr�Alarmr�&s��rr�c�>�Terr)r�rr�s  �r�
alarm_handler�<TCPTimeoutTest.testInterruptedTimeout.<locals>.alarm_handler(s����Krr3znothing caughtzcaught timeout instead of Alarmz)caught other exception instead of Alarm: �(z):
rzgot Alarm in wrong place)
r�rAr�r�r�r�rCr=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
rP�r�rArQr�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)NFrx
rPz%caught timeout instead of error (UDP)Tz!caught unexpected exception (UDP)�1recv() returned success when we did not expect it�r�rArQr�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)NFrx
rPz)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�r7rErFro�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�rbr/rCr�r8rDr<r0)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�rbr�r�rLr+rCrTrq)r�r��s1rW�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�rbr�rTr+�r�r�rFs   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�rbrDr<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�rbr�rTr+rCr1s  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�rbr�rLrTr+r1s  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}rK)r7r�rbr�r�r+r�)r��abstract_addressr�rWs    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�rbr�r�s rr��TestUnixDomain.setUp�s���M�M�&�.�.�&�2D�2D�E��	rc�8�URR5 gr)r�rCr�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})rM�fsencoder�r�rry�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)rKN)r.r�r+r�s rr��TestUnixDomain.testUnbound�s���
�
�d�i�i�+�+�-�z�:rc�*�[RR[R5nURURU5 UR[RU5 URURR5U5 gr)rMr��abspathr�TESTFNr�r�r�r�rTr+r s  r�testStrAddr�TestUnixDomain.testStrAddr�s]���w�w���y�/�/�0���	�	�$�)�)�T�"����	�(�(�$�/�������.�.�0�$�7rc�H�[RR[R5nURURURU55 UR[RU5 URURR5U5 gr)rMr�r(rr)r�r�r!r�r�rTr+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)
rMr�r(r�TESTFN_UNICODEr!r�r�rr�r�rTr+)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�rMr�r(r�r�r�r�rTr+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)NrK)rDr<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-r3r7r"r�ryrzr:r�rrrrr�s^��F��	8�
�;�8�8�8�8��_�_�S�\�\�%9�9�M�O�7�O�7rrc�x�\rSrSrSrSSjrSrSrSr\r	Sr
\rSrS	r
S
r\
rSr\
rSrS
rSr\
rSrg)�BufferIOTestiz>
Test the buffer versions of socket.recv() and socket.send().
c�*�[RXS9 gr�rBr�s  rr��BufferIOTest.__init__rDrc�8�[R"SS/[[5-5nURR	U5nURU[[55 UR
5nUS[[5nURU[5 g�Nr:r)r;r�rUrfr�	rTr�r�r�r�rVs    r�testRecvIntoArray�BufferIOTest.testRecvIntoArraysn���k�k�#��s�S��X�~�.�����(�(��-�������S��*��k�k�m���)�3�s�8�n������c�"rc�X�[[5nURRU5 gr�r*rUrmr[�r�r�s  r�_testRecvIntoArray�BufferIOTest._testRecvIntoArray����C�j�������C� rc���[S5nURRU5nURU[	[
55 US[	[
5nURU[
5 grO)rLrfr�	rTr�rUrBs    r�testRecvIntoBytearray�"BufferIOTest.testRecvIntoBytearraysR����o�����(�(��-�������S��*��)�3�s�8�n������c�"rc���[S5nURR[U55nUR	U[[55 US[[5nUR	U[5 grO)rLrfr�	rrTr�rUrB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 grA)r;r�rUrfrsrTr�r�r�r�rhrVs     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 grrFrGs  r�_testRecvFromIntoArray�#BufferIOTest._testRecvFromIntoArray9rJrc���[S5nURRU5up#URU[	[
55 US[	[
5nURU[
5 grO)rLrfrsrTr�rUrR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 grO)rLrfrsrrTr�rUrRs     r�testRecvFromIntoMemoryview�'BufferIOTest.testRecvFromIntoMemoryviewFsX����o���}�}�2�2�:�c�?�C��������S��*��)�3�s�8�n������c�"rc�r�[S5nUR[URRUS5 g)Nr�rP)rLrDrrfrsrGs  r�testRecvFromIntoSmallBuffer�(BufferIOTest.testRecvFromIntoSmallBufferOs)����l�����*�d�m�m�&A�&A�3��Mrc�B�URR[5 grrIr�s r�_testRecvFromIntoSmallBuffer�)BufferIOTest._testRecvFromIntoSmallBufferTrLrc��[5nURRU5 URRUS5 gr))rLrfrsrGs  r�testRecvFromIntoEmptyBuffer�(BufferIOTest.testRecvFromIntoEmptyBufferWs/���k���
�
�#�#�C�(��
�
�#�#�C��+rrNr)r�r�r�r�r�r�rCrHrL�_testRecvIntoBytearrayrO�_testRecvIntoMemoryviewrSrVrY�_testRecvFromIntoBytearrayr\�_testRecvFromIntoMemoryviewr_rbre�_testRecvFromIntoEmptyBufferr�rrrr=r=sm���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)	z|Check if the TIPC module is loaded

The TIPC module is not loaded automatically on Ubuntu and probably
other Linux distros.
�AF_TIPCFz
/proc/modulesrr�ztipc NT)r6r7r8�FileNotFoundError�IsADirectoryErrorrRr	)rr�
s  r�isTipcAvailablerr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
r3rrP)r7rorWr�rCrtrXrY�TIPC_ADDR_NAMESEQ�
TIPC_STYPE�
TIPC_LOWER�
TIPC_UPPERr��TIPC_ADDR_NAMEr�rOrUrrrTr+)r�rr�srvaddr�sendaddrrV�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�rrrrtrtws��#rrtc�6�\rSrSrS	SjrSrSrSrSrSr	g)
�TIPCThreadableTesti�c�h�[RRXS9 [RU5 gr�r7r�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�)r7rorbrr�rCrtrXrYrvrwrxryr�r�r�rCrDrE)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)NrIr3r)rJrKr7rorbrr�rCrzrwrxr�ryrLr+�cliaddr)r�rhs  rr��TIPCThreadableTest.clientSetUp�s���	
�
�
�3���=�=�����1C�1C�D�����������'��%�%�z��S�*�z�"9�Q�!>�?�?��D����������x�x�+�+�-��rc��URRS5nURU[5 URURUR
5 grO)rDrQrTrUr�rErGs  rrW�TIPCThreadableTest.testStream�s<���i�i�n�n�T�"������c�"�������t�}�}�5rc�v�URR[5 URR5 grrZr�s rr\�TIPCThreadableTest._testStream�r^r)rr�rDrErNrr_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�NrL)r7r`r�rrCrDr<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 grO�r�rCr�rCrQr��r�rDrhrs    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)NrLrP)
r�r+r7rUr`r�r�rTrQr�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 grOr�r�s    r�testCreateConnectionClose�-ContextManagersTest.testCreateConnectionClose�r�rc�0�URR5n[R"U5nUR	5 SSS5 URWR5 UR[URS5 g!,(df   NK=fr�)
r�r+r7rUrCrr�rDr<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�rtzSOCK_CLOEXEC not definedr3r�
rc�R�[R"[R[R[R-5nUR	UR
[R5 UR
UR55 SSS5 g!,(df   g=fr)r7r�rbrtrTr�r`�get_inheritabler1s  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�)r7rTr�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�)r7rurCrTr�)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_inheritablerTr�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�
BNr1c���[R"5nU UR5nURUR5S5 [R"U[R
5nU[R)-n[R"U[RU5 URUR5S5 SSS5 g!,(df   g=f)NFT)r7r/rTr�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)r7r/rTr5r�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�)r7rwr�rCrTr�)r�r�rWs   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�r/zSOCK_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))rTr�r7rbrrr5rz
rMr{
r`ry
)r�rF�nonblockros    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�,rr3r�
rc�:�[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@rxrx
)	r7r�rbr/r�r0rArmrn)r�rF�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)Trx
)	r�r�r�r�r�rr�
r�r�rrrr�r�'s*��-�2
�#�#�A�q�"�-�$�.�$rr�rbrczneed multiprocessingc�B�\rSrSr\S5rSrSrSrSr	Sr
Srg	)
�TestSocketSharingiec��UR5nUR5n[R"U5nUR5upVUR	U5 UR5 UR5 gr)r�r7�	fromsharerCr�rC)r�q�sdatarwrFrWr�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+rCr�r7rUrQr2r	rT)	r�r�r?rrhrwrF�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�rL)r�r�rM�getpidrDrr7r�)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))rTrr6r�r7)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�rMr�r7r�r�rC)r�rrFs   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�rbrJr<r�rMr�r�r�rC)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�r8r�r�r�r�r�r�r�rrrr�r�es1��
����!�FE�
5� �#rr�c���\rSrSrSrSrSrSr\Rr
\S5r\S5r
SrS	rS
rSrSrS
rSrSrSrSrSrSrSrSrSrSrSrSrSr Sr!Sr"Sr#Sr$Sr%S r&S!r'g")#�SendfileUsingSendTesti�z6
Test the send() implementation of socket.sendfile().
i�r�rc��SnSR[UR5Vs/sH5n[R"[
R5R5PM7 sn5n[[RS5nU"URUR5HnURU5 M SSS5 [[RS5nUR5Ul[UR5UR:XdeSSS5 gs snf!,(df   Nr=f!,(df   g=f)Nc3�Z# �X:�deX:�aUv� X-nX:�aMU(aUv� gg7frr)�total�steps  r�chunks�0SendfileUsingSendTest.setUpClass.<locals>.chunks�s6����=� �=��,��
��
���,�����s�+�
+rr�r3)r	r��BUFSIZE�random�choice�string�
ascii_lettersr�r8rr)�FILESIZEr1rf�FILEDATAr�)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��s�|�|�$����4�4�4�*�
)��7�
)�
)��*�
)�s�<D �6D%�;D6�%
D3�6
Ec�L�[R"[R5 gr)rr�r))rs r�
tearDownClass�#SendfileUsingSendTest.tearDownClass�s������)�)�*rc��URR[R5 URR	5upURUR
5 UR
UR5 U$r)r�rArr�
rC�TIMEOUTr�rCrgs   r�accept_conn�!SendfileUsingSendTest.accept_conn�sS���	�	���W�1�1�2��Y�Y�%�%�'�
��������%�����
�
�#��rc��/nURUR5nU(dOURU5 M6SRU5$r�)rQr�r2r	)r�rDr�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)r7rUr
rTr��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	
rTr�r�r��r�rDrs   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�r7rUrCrTr�r
rDrPrQ)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�r7rUr
rTr
)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	
rTr
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)Nr0
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)Nr3rx�GKL�rX�r�r+r8rr)r7rUrrBr
rTr
�r�r�r
r�rXr
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)Nr8
�r
r	
rTr�r��r�rXrDrs    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)Nr3rxr
r9
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�r@
rA
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)Nr3r3rx駆��)r1
rX)
r�r+r8rr)r7rUr
rTr
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)NrK
rL
r@
rA
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)r7rUr0r
rDrrC�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
rQr=�r�rDs  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)Nr3rx)r�r+r8rr)r7rUrrBr
rTr�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)r7rUrAr
rDr�rS
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
rQrJrKrW
s  r�testWithTimeoutTriggeredSend�2SendfileUsingSendTest.testWithTimeoutTriggeredSend�s'�����!���	�	�%���
�
�1�
rc��grrr�s r�_test_errors�"SendfileUsingSendTest._test_errors�rrc
���[[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�rbrr�zbinary modezpositive integerr(
r9
rIrr�)	r8rr)r7rJr
r rr�)r�r
rFr
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�r�rrBr
r8r�r
r
r	
r
r
r
r"
r%
r*
r-
r2
r5
r<
rB
rE
rH
rM
rP
rT
rX
r[
r^
ra
rd
rg
rj
r�rrrr�r��s����!�H��G��H��&�&�G��5��5�$�+��+��"�3�9�.�A�.�
-�$�9�5�
1�6�
1�6�8�?�?�>�2�.�<��
�=rr�rCz%os.sendfile() required for this test.c��\rSrSrSrSrSrg)�SendfileUsingSendfileTesti�z:
Test the sendfile() implementation of socket.sendfile().
c��[US5$)NrQr

r�s  rr
�(SendfileUsingSendfileTest.meth_from_sock�s���t�5�6�6rrN)r�r�r�r�r�r
r�rrrrm
rm
�s���7rrm
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))	r7rXrSr�rprCr"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	rNrVc���[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*�fromhexrt
rCr�rTrQr[r7�MSG_MORE)r�r8�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?�(193dbb43c6297b47ea6277ec0ce67119a3f3aa66rx
z
hmac(sha1)r)r*r}
rt
rtr7�SOL_ALG�ALG_SET_KEYrCr�rTrQ)r��keyrr8r
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�
CrOc��[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�
rP)r*r}
r�rt
rtr7r�
r�
rC�
sendmsg_afalg�ALG_OP_ENCRYPTr~
r�rTrQ�ALG_OP_DECRYPT)
r�r�
r�
rV�
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�
Krc
�	�[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�
rzupstream 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�rt
rtr7r�
r�
�ALG_SET_AEAD_AUTHSIZErCr�
r�
r~
r�rQrTr:�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��resrV�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�)rt
rM�urandomrtr7r�
r�
rCrQrTr�)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�)r7rXrSrDr�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)
r7rXrSr�rCrDrp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�rt
rr�
r�
r�
r�
r�
r�
r�
r�
r�rrrrq
rq
�s���	�
�#�#�A�q�)�9�*�9�"9�
�#�#�A�q�)�&4�*�&4�P
�#�#�A�q�)�B8�*�B8�H
�#�#�A�q�)�.�*�.�J�$*rrq
rtryc��\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	�
knownTCPFlagsrT)r�rF�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
r0r�)rrYr7�
create_serverrTr+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+�r0rr�)
r7r�
rTr6r�r�rbrr�r�)r�r�rFs   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)
r6r7rDrr�
r_rXr�
rTr�)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'�*
D8r_r[
r\
rzc���[R"S[RS9nUR[R[R
5(deSSS5 g!,(df   g=f)Nr�
r�)r7r�
r�r_r_r[
r�s  r�test_ipv6_only_default�'CreateServerTest.test_ipv6_only_default�sJ��
�
!�
!�*�V�_�_�
E���?�?�6�#6�#6��8J�8J�K�K�K�K�F�
E�
E�s�6A$�$
A2�dualstack_ipv6 not supportedc���[R"S[RSS9nURUR[R5 SSS5 g!,(df   g=f)Nr�
T�r6�dualstack_ipv6)r7r�
r�rTr6r�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�r6rr�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=frO)rCr�rorQr�)r�rDr�rVru
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�rAror
r
r�r	r�)r�r�r�
r�ru
s`   @r�echo_server�&CreateServerFunctionalTest.echo_servers`���	&����!��������%��!�!��8�<������������T�\�\�2�
�	�	�rc��[R"US9nURUR5 URU5 UR	S5 URUR
S5S5 SSS5 g!,(df   g=f)Nr�rLrP)r7rArorLr�rTrQ)r�rhr6r�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)NrKr,)rrYr7r�
r�
rr�r�
s   r�	test_tcp4�$CreateServerFunctionalTest.test_tcp4sW���-�-�/��
�
!�
!�2�t�*�
-�����T�"����k�4�0�&�.�.�A�.�
-�
-�s�4A+�+
A9rzc��[R"5n[R"SU4[RS9nURU5 UR
SU4[R5 SSS5 g!,(df   g=f)NrKr�r0�rrYr7r�
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)NrKTr�
r,)rrYr7r�
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)NrKTr�
r0rr�
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�r
rN)r�r�r�r�rrBror�
rrr"r�rr�rr�r7r�
rrr�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�rMrC)�pipesrz�fd2s   r�close_pipes�8SendRecvFdsTests.testSendAndRecvFds.<locals>.close_pipesBs$��!�������
�����
�"rc�B�UHn[R"U5 M grr)r3r>s  r�	close_fds�6SendRecvFdsTests.testSendAndRecvFds.<locals>.close_fdsGs���������rrr3rr�)r�rM�piper�r7rwr�rbrrUrr�rTr7r1rr�rf)r�rrr�r�rfd�wfdr3rk
rl
rV�fds2r�rhr�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 
rWr�rMr�rzr�r�r*r�r�r7r�r:ryrur�rJr�r{�weakrefr
r�rBr5r��requires_working_socketr*r�rUr=r>�systemrr	r'�release�WSLrr0r>rGrLrPrTrYr\r_rdrgrkryrqr�HAVE_SOCKET_CAN�HAVE_SOCKET_CAN_ISOTP�HAVE_SOCKET_CAN_J1939�HAVE_SOCKET_RDS�HAVE_SOCKET_ALG�HAVE_SOCKET_QIPCRTR�HAVE_SOCKET_VSOCKr6rrr
�HAVE_SOCKET_UDPLITE�HAVE_SOCKET_BLUETOOTHr�HAVE_SOCKET_HYPERVrrLr8r�r�r�r�r�r�r�rr�rrr%r�r�r5rarsr�r�r�r�r�r�r�r�r�r�r�r�r�r�r�rrrr�r�r:rQrtr�r�r�r�rr@r�r�r�r�r�r�rrrrrnr�r�r�r�r�rr.r�rw	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 
r?
rs
r�
rrErIrKrOrQrMrSrXrZr|r�r�r�r�r�r�rr=rwrxryrrrtr�r�r�r�rr�r�rm
rq
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