403Webshell
Server IP : 118.27.122.248  /  Your IP : 216.73.216.124
Web Server : Apache
System : Linux web0264.sh.tyo1 4.18.0-553.79.1.lve.el7h.x86_64 #1 SMP Wed Oct 15 16:34:46 UTC 2025 x86_64
User : c9415830 ( 11735)
PHP Version : 8.4.17
Disable Function : NONE
MySQL : OFF  |  cURL : ON  |  WGET : ON  |  Perl : ON  |  Python : ON  |  Sudo : OFF  |  Pkexec : OFF
Directory :  /opt/alt/python36/lib64/python3.6/test/__pycache__/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Command :


[ Back ]     

Current File : /opt/alt/python36/lib64/python3.6/test/__pycache__/test_socket.cpython-36.opt-2.pyc
3

w2_�I�+@s�
ddlZddlmZddlZddlZddlZddlZddlZddlZddl	Z	ddl
Z
ddlZddlZddl
Z
ddlZddlZddlmZddlZddlZddlZddlZddlZddlZyddlZWnek
r�dZYnXyddlZWnek
�rdZYnXejZdjd�ZdZyddlZ ddl!Z!Wnek
�rLdZ dZ!YnXyddl"Z"Wnek
�rtdZ"YnXdd	�Z#d
d�Z$dd
�Z%e#�Z&e$�Z'e%�Z(ejd�j)Z*Gdd�dej+�Z,Gdd�dej+�Z-Gdd�dej+�Z.Gdd�dej+�Z/Gdd�dej+�Z0Gdd�d�Z1Gdd�de,e1�Z2Gdd�de-e1�Z3Gdd �d e/e1�Z4Gd!d"�d"e0e1�Z5Gd#d$�d$e2�Z6Gd%d&�d&ej+e1�Z7Gd'd(�d(ej+�Z8Gd)d*�d*e8�Z9Gd+d,�d,e.e8e1�Z:Gd-d.�d.e9e:�Z;Gd/d0�d0e8�Z<Gd1d2�d2e<�Z=Gd3d4�d4e8�Z>Gd5d6�d6e>�Z?Gd7d8�d8e>�Z@Gd9d:�d:e>�ZAGd;d<�d<e>�ZBGd=d>�d>eB�ZCd?d@�ZDdAdB�ZEdCdD�ZFGdEdF�dFej+�ZGejHe&dG�GdHdI�dIej+��ZIejHe&dG�ejHe dJ�GdKdL�dLe4���ZJejHe'dM�GdNdO�dOej+��ZKejHe'dM�ejHe dJ�GdPdQ�dQe5���ZLejHe dJ�GdRdS�dSe6��ZMejHe dJ�GdTdU�dUe3��ZNGdVdW�dWe.�ZOGdXdY�dYeO�ZPGdZd[�d[eO�ZQGd\d]�d]eO�ZRGd^d_�d_eO�ZSGd`da�daeO�ZTGdbdc�dceO�ZUGddde�deeU�ZVGdfdg�dgeV�ZWGdhdi�dieV�ZXGdjdk�dkeO�ZYGdldm�dmeY�ZZGdndo�doeY�Z[Gdpdq�dqePeY�Z\Gdrds�dsej+�Z]Gdtdu�dueU�Z^Gdvdw�dweU�Z_Gdxdy�dyeQeSe:e@�Z`eEejdz�ejHe dJ�Gd{d|�d|eXe`���ZaeEejd}�ejHe dJ�Gd~d�de[e`���ZbeEejd��ejHe dJ�Gd�d��d�e\e`���ZcGd�d��d�eQeSe:eC�ZdeEejdz�ejHejed��eFd�d��ejHe dJ�Gd�d��d�eXed�����ZfeEejd}�ejHejed��eFd�d��ejHe dJ�Gd�d��d�e[ed�����ZgeEejd��ejHejed��eFd�d��ejHe dJ�Gd�d��d�e\ed�����ZheEejd}�ejHejed��eEed��eFd�d��ejHe dJ�Gd�d��d�e_ed������ZieEejd��ejHejed��eEed��eFd�d��ejHe dJ�Gd�d��d�ePe_ed������ZjGd�d��d�eTe;e?�ZkeEejdz�ejHe dJ�Gd�d��d�eWek���ZleEejd}�ejHe dJ�Gd�d��d�e[eZek���ZmeEejd��ejHe dJ�Gd�d��d�e\eZek���ZnGd�d��d�eReTe;eA�ZoeEejdz�eFd�d�d��ejHe dJ�Gd�d��d�eWeo����ZpeEejd}�eFd�d�d��ejHe dJ�Gd�d��d�e[eZeo����ZqeEejd��eFd�d�d��ejHe dJ�Gd�d��d�e\eZeo����ZrGd�d��d�eTe;e=�ZseEejdz�eEed��ejHe dJ�Gd�d��d�eWes����ZteEejd}�eEed��ejHe dJ�Gd�d��d�e[eZes����ZueEejd��eEed��ejHe dJ�Gd�d��d�e\eZes����ZveEejdzd}�eEed�d�d��ejHe dJ�Gd�d��d�e^es����ZweEejdzd��eEed�d�d��ejHe dJ�Gd�d��d�ePe^es����ZxGd�d��d�ej+�ZyeEed��ejHezed���
pezed��d��Gd�d��d�eye@���Z{eEed��ejHezed���
p<ezed��d��ejHe dJ�Gd�d��d�eye.e9e?����Z|ejHe dJ�Gd�d��d�e2��Z}ejHe dJ�Gd�d„d�e7��Z~ejHe dJ�Gd�dĄd�e2��ZejHe dJ�Gd�dƄd�e6��Z�Gd�dȄd�e��Z�Gd�dʄd�e��Z�Gd�d̄d�e��Z�Gd�d΄d�e��Z�Gd�dЄd�e��Z�Gd�d҄d�e��Z�Gd�dԄd�e��Z�Gd�dքd�e�eM�Z�Gd�d؄d�ej+�Z�ejHe dJ�Gd�dڄd�e,e1��Z�ejHe dJ�Gd�d܄d�e,e1��Z�Gd�dބd�e,�Z�Gd�d�d�e-�Z�Gd�d�d�ej+�Z�ejHej�d�kd�Gd�d�d�ej+��Z�ejHezed��d�Gd�d�d�ej+��Z�ejHe dJ�Gd�d�d�e6��Z�d�Z�d�Z�d�Z�d�d�Z�ejHe��d�Gd�d�d�ej+��Z�ejHe��d�Gd�d��d�ej+e1��Z�ejHe dJ�Gd�d��d�e2��Z�Gd�d��d�ej+�Z�ejHezed��d��Gd�d��d�ej+��Z�ejHe
j�d�kd��ejHe�d�G�d�d��de,���Z�ejHe dJ�G�d�d��de2��Z�ejHe dJ�ejHeze
�d��d�G�d�d��de����Z�ejHe(�d	�G�d
�d��dej+��Z�ejHej�j��d��d
�G�d�d��dej+��Z��d�d�Z�e��dk�
r�e��dS(�N)�support)�proxyFuMichael Gilfix was hereሴ
zutf-8gN@cCs>ytjtjtjtj�}Wnttfk
r0dSX|j�dS)NFT)�socket�PF_CAN�SOCK_RAW�CAN_RAW�AttributeError�OSError�close)�s�r�0/opt/alt/python36/lib64/python3.6/test_socket.py�_have_socket_can1srcCs<ytjtjtjd�}Wnttfk
r.dSX|j�dS)NrFT)r�PF_RDS�SOCK_SEQPACKETrr	r
)rrrr
�_have_socket_rds;srcCs<ytjtjtjd�}Wnttfk
r.dSX|j�dS)NrFT)r�AF_ALGrrr	r
)rrrr
�_have_socket_algEsr�ic@seZdZdd�Zdd�ZdS)�
SocketTCPTestcCs.tjtjtj�|_tj|j�|_|jj�dS)N)r�AF_INET�SOCK_STREAM�servr�	bind_port�port�listen)�selfrrr
�setUpZszSocketTCPTest.setUpcCs|jj�d|_dS)N)rr
)rrrr
�tearDown_s
zSocketTCPTest.tearDownN)�__name__�
__module__�__qualname__rrrrrr
rXsrc@seZdZdd�Zdd�ZdS)�
SocketUDPTestcCs$tjtjtj�|_tj|j�|_dS)N)rr�
SOCK_DGRAMrrrr)rrrr
reszSocketUDPTest.setUpcCs|jj�d|_dS)N)rr
)rrrr
ris
zSocketUDPTest.tearDownN)rr r!rrrrrr
r"csr"cs8eZdZer0�fdd�Z�fdd�Z�fdd�Z�ZS)�ThreadSafeCleanupTestCasecst�j||�tj�|_dS)N)�super�__init__�	threading�RLock�
_cleanup_lock)r�args�kwargs)�	__class__rr
r&usz"ThreadSafeCleanupTestCase.__init__c
s |j�t�j||�SQRXdS)N)r)r%�
addCleanup)rr*r+)r,rr
r-ysz$ThreadSafeCleanupTestCase.addCleanupc
s |j�t�j||�SQRXdS)N)r)r%�
doCleanups)rr*r+)r,rr
r.}sz$ThreadSafeCleanupTestCase.doCleanups)rr r!r'r&r-r.�
__classcell__rr)r,r
r$msr$c@sDeZdZdZdZdZeje�ZdZ	e	deje	�d7Z	dd�Z
d	S)
�
SocketCANTestZvcan0�z=IB3x8sz@3I4l2I�x�cCsbtjtjtjtj�|_|j|jj�y|jj|jf�Wn$t	k
r\|j
d|j�YnXdS)Nz%network interface `%s` does not exist)rrrrrr-r
�bind�	interfacer	�skipTest)rrrr
r�szSocketCANTest.setUpN)rr r!r5�bufsize�
can_frame_fmt�struct�calcsizeZcan_frame_size�bcm_cmd_msg_fmtrrrrr
r0�s

r0c@seZdZdZdd�ZdS)�
SocketRDSTesti cCsXtjtjtjd�|_|j|jj�ytj|j�|_Wnt	k
rR|j
d�YnXdS)Nrzunable to bind RDS socket)rrrrr-r
rrrr	r6)rrrr
r�szSocketRDSTest.setUpN)rr r!r7rrrrr
r<�sr<c@sDeZdZdd�Zdd�Zdd�Zdd�Zd	d
�Zdd�Zd
d�Z	dS)�ThreadableTestcCs$|j|_|j|_|j|_|j|_dS)N)r�_ThreadableTest__setUpr�_ThreadableTest__tearDown�_setUp�	_tearDown)rrrr
r&�szThreadableTest.__init__cCs|jj�dS)N)�server_ready�set)rrrr
�serverExplicitReady�sz"ThreadableTest.serverExplicitReadycCs�tj�|_|jj�tj�|_tj�|_tj�|_t	j
d�|_	d|_|j�}|j
d�}||dd�}t|d|�}tj|j|f�|_z&y|j�Wnd|_�YnXWd|jj�X|jj�dS)N�F�.�_T)rZwait_threads_exit�wait_threads�	__enter__r'�EventrB�client_ready�done�queue�Queue�server_crashed�id�rfind�getattr�thread�start_new_thread�	clientRunZ
client_threadr>rC�wait)rZ
methodnamerZtest_methodrrr
r@�s(





zThreadableTest._setUpcCs>|j�|jj�|jjddd�|jj�r:|jj�}|�dS)N)r?rLrVrH�__exit__rMZqsize�get)r�excrrr
rAs


zThreadableTest._tearDownc*Cs�|jj�zFy|j�Wn4tk
rL}z|jj|�|j�dSd}~XnXWd|jj�X|j	rp|j�dSt
|d�s�td��z>y
|�Wn.tk
r�}z|jj|�WYdd}~XnXWd|j�XdS)N�__call__z%test_func must be a callable function)rBrV�clientSetUp�
BaseExceptionrM�put�clientTearDownrKrCrO�hasattr�	TypeError)rZ	test_func�errr
rUs$


"zThreadableTest.clientRuncCstd��dS)Nz clientSetUp must be implemented.)�NotImplementedError)rrrr
r[2szThreadableTest.clientSetUpcCs|jj�tj�dS)N)rLrCrS�exit)rrrr
r^5s
zThreadableTest.clientTearDownN)
rr r!r&rDr@rArUr[r^rrrr
r=�s&	r=c@s&eZdZd	dd�Zdd�Zdd�ZdS)
�ThreadedTCPSocketTest�runTestcCstj||d�tj|�dS)N)�
methodName)rr&r=)rrfrrr
r&;szThreadedTCPSocketTest.__init__cCstjtjtj�|_dS)N)rrr�cli)rrrr
r[?sz!ThreadedTCPSocketTest.clientSetUpcCs|jj�d|_tj|�dS)N)rgr
r=r^)rrrr
r^Bs
z$ThreadedTCPSocketTest.clientTearDownN)re)rr r!r&r[r^rrrr
rd9s
rdc@s&eZdZd	dd�Zdd�Zdd�ZdS)
�ThreadedUDPSocketTestrecCstj||d�tj|�dS)N)rf)r"r&r=)rrfrrr
r&IszThreadedUDPSocketTest.__init__cCstjtjtj�|_dS)N)rrr#rg)rrrr
r[Msz!ThreadedUDPSocketTest.clientSetUpcCs|jj�d|_tj|�dS)N)rgr
r=r^)rrrr
r^Ps
z$ThreadedUDPSocketTest.clientTearDownN)re)rr r!r&r[r^rrrr
rhGs
rhc@s&eZdZd	dd�Zdd�Zdd�ZdS)
�ThreadedCANSocketTestrecCstj||d�tj|�dS)N)rf)r0r&r=)rrfrrr
r&WszThreadedCANSocketTest.__init__cCsDtjtjtjtj�|_y|jj|jf�Wntk
r>YnXdS)N)rrrrrgr4r5r	)rrrr
r[[s
z!ThreadedCANSocketTest.clientSetUpcCs|jj�d|_tj|�dS)N)rgr
r=r^)rrrr
r^ds
z$ThreadedCANSocketTest.clientTearDownN)re)rr r!r&r[r^rrrr
riUs
	ric@s&eZdZd	dd�Zdd�Zdd�ZdS)
�ThreadedRDSSocketTestrecCstj||d�tj|�dS)N)rf)r<r&r=)rrfrrr
r&kszThreadedRDSSocketTest.__init__cCsNtjtjtjd�|_y |jjtdf�|jj�|_Wntk
rHYnXdS)Nr)	rrrrgr4�HOST�getsockname�cli_addrr	)rrrr
r[osz!ThreadedRDSSocketTest.clientSetUpcCs|jj�d|_tj|�dS)N)rgr
r=r^)rrrr
r^zs
z$ThreadedRDSSocketTest.clientTearDownN)re)rr r!r&r[r^rrrr
rjis
rjc@s6eZdZd
dd�Zdd�Zdd�Zdd	�Zd
d�ZdS)�SocketConnectedTestrecCstj||d�dS)N)rf)rdr&)rrfrrr
r&�szSocketConnectedTest.__init__cCs*tj|�|j�|jj�\}}||_dS)N)rdrrDr�accept�cli_conn)r�conn�addrrrr
r�s
zSocketConnectedTest.setUpcCs|jj�d|_tj|�dS)N)rpr
rdr)rrrr
r�s
zSocketConnectedTest.tearDowncCs(tj|�|jjt|jf�|j|_dS)N)rdr[rg�connectrkr�	serv_conn)rrrr
r[�s
zSocketConnectedTest.clientSetUpcCs|jj�d|_tj|�dS)N)rtr
rdr^)rrrr
r^�s
z"SocketConnectedTest.clientTearDownN)re)rr r!r&rrr[r^rrrr
rns

rnc@s6eZdZd
dd�Zdd�Zdd�Zdd	�Zd
d�ZdS)�SocketPairTestrecCstjj||d�tj|�dS)N)rf)�unittest�TestCaser&r=)rrfrrr
r&�szSocketPairTest.__init__cCstj�\|_|_dS)N)r�
socketpairrrg)rrrr
r�szSocketPairTest.setUpcCs|jj�d|_dS)N)rr
)rrrr
r�s
zSocketPairTest.tearDowncCsdS)Nr)rrrr
r[�szSocketPairTest.clientSetUpcCs|jj�d|_tj|�dS)N)rgr
r=r^)rrrr
r^�s
zSocketPairTest.clientTearDownN)re)rr r!r&rrr[r^rrrr
ru�s

ruc@s$eZdZdd�Zdd�Zdd�ZdS)�SocketTestBasecCs|j�|_|j�dS)N)�	newSocketr�
bindServer)rrrr
r�s
zSocketTestBase.setUpcCs|j|j�|jj�|_dS)N)�bindSockrrl�	serv_addr)rrrr
r{�szSocketTestBase.bindServercCs|jj�d|_dS)N)rr
)rrrr
r�s
zSocketTestBase.tearDownN)rr r!rr{rrrrr
ry�s	rycseZdZ�fdd�Z�ZS)�SocketListeningTestMixincst�j�|jj�dS)N)r%rrr)r)r,rr
r�s
zSocketListeningTestMixin.setUp)rr r!rr/rr)r,r
r~�sr~cs<eZdZ�fdd�Zdd�Zdd�Zdd�Zd	d
�Z�ZS)�ThreadedSocketTestMixincst�j||�tj|�dS)N)r%r&r=)rr*r+)r,rr
r&�sz ThreadedSocketTestMixin.__init__cCs|j�|_|j�dS)N)�newClientSocketrg�
bindClient)rrrr
r[�s
z#ThreadedSocketTestMixin.clientSetUpcCs|j�S)N)rz)rrrr
r��sz'ThreadedSocketTestMixin.newClientSocketcCs|j|j�|jj�|_dS)N)r|rgrlrm)rrrr
r��sz"ThreadedSocketTestMixin.bindClientcCs|jj�d|_tj|�dS)N)rgr
r=r^)rrrr
r^�s
z&ThreadedSocketTestMixin.clientTearDown)	rr r!r&r[r�r�r^r/rr)r,r
r�s
rcs@eZdZ�fdd�Z�fdd�Z�fdd�Z�fdd�Z�ZS)	�ConnectedStreamTestMixincs*t�j�|j�|jj�\}}||_dS)N)r%rrDrrorp)rrqrr)r,rr
rs
zConnectedStreamTestMixin.setUpcs|jj�d|_t�j�dS)N)rpr
r%r)r)r,rr
rs
z!ConnectedStreamTestMixin.tearDowncs$t�j�|jj|j�|j|_dS)N)r%r[rgrsr}rt)r)r,rr
r[s
z$ConnectedStreamTestMixin.clientSetUpcs8y|jj�d|_Wntk
r(YnXt�j�dS)N)rtr
rr%r^)r)r,rr
r^s

z'ConnectedStreamTestMixin.clientTearDown)rr r!rrr[r^r/rr)r,r
r��s	r�cs$eZdZ�fdd�Zdd�Z�ZS)�UnixSocketTestBasecs(tj�|_|jtj|j�t�j�dS)N)�tempfileZmkdtemp�dir_pathr-�os�rmdirr%r)r)r,rr
r&s
zUnixSocketTestBase.setUpcCs,tj|jd�}tj||�|jtj|�dS)N)�dir)r�Zmktempr�r�bind_unix_socketr-�unlink)r�sock�pathrrr
r|+szUnixSocketTestBase.bindSock)rr r!rr|r/rr)r,r
r�sr�c@seZdZdd�ZdS)�UnixStreamBasecCstjtjtj�S)N)r�AF_UNIXr)rrrr
rz3szUnixStreamBase.newSocketN)rr r!rzrrrr
r�0sr�cs(eZdZeZ�fdd�Zdd�Z�ZS)�InetTestBasecst�j�|jd|_dS)NrE)r%rr}r)r)r,rr
r<s
zInetTestBase.setUpcCstj||jd�dS)N)�host)rrr�)rr�rrr
r|@szInetTestBase.bindSock)rr r!rkr�rr|r/rr)r,r
r�7sr�c@seZdZdd�ZdS)�TCPTestBasecCstjtjtj�S)N)rrr)rrrr
rzFszTCPTestBase.newSocketN)rr r!rzrrrr
r�Csr�c@seZdZdd�ZdS)�UDPTestBasecCstjtjtj�S)N)rrr#)rrrr
rzLszUDPTestBase.newSocketN)rr r!rzrrrr
r�Isr�c@seZdZdd�ZdS)�SCTPStreamBasecCstjtjtjtj�S)N)rrr�IPPROTO_SCTP)rrrr
rzRszSCTPStreamBase.newSocketN)rr r!rzrrrr
r�Osr�c@seZdZejZdS)�
Inet6TestBaseN)rr r!r�HOSTv6r�rrrr
r�Wsr�c@seZdZdd�ZdS)�UDP6TestBasecCstjtjtj�S)N)r�AF_INET6r#)rrrr
rz_szUDP6TestBase.newSocketN)rr r!rzrrrr
r�\sr�cs*dd����fdd�}dd�}|r&|S|S)Nc_sdS)Nr)r*r+rrr
�client_passnsz%skipWithClientIf.<locals>.client_passcs*tj��|�}t|t�s&�fdd�|_|S)Ncs�S)Nr)�f)r�rr
�<lambda>ssz3skipWithClientIf.<locals>.skipdec.<locals>.<lambda>)rv�skip�
isinstance�type�client_skip)�objZretval)r��reasonrr
�skipdecps
z!skipWithClientIf.<locals>.skipdeccSs"t|t�pt|d�sdd�|_|S)Nr�cSs|S)Nr)r�rrr
r�wsz5skipWithClientIf.<locals>.noskipdec.<locals>.<lambda>)r�r�r_r�)r�rrr
�	noskipdecus
z#skipWithClientIf.<locals>.noskipdecr)Z	conditionr�r�r�r)r�r�r
�skipWithClientIfes	r�cs0�fdd�|D�}t|ddjdd�|D���S)Ncsg|]}t�|�s|�qSr)r_)�.0�name)r�rr
�
<listcomp>�sz requireAttrs.<locals>.<listcomp>zdon't have z, css|]
}|VqdS)Nr)r�r�rrr
�	<genexpr>�szrequireAttrs.<locals>.<genexpr>)r��join)r�Z
attributes�missingr)r�r
�requireAttrs|sr�cGs�d}dd�|D�}|r0ddjdd�|D��}nPdd�|D�}ytj|�}Wn*tk
rv}zt|�}WYdd}~Xn
X|j�t|dk	djdjd	d�|D��|��S)
NcSs&g|]}t|t�rtt|�r|�qSr)r��strr_r)r�r�rrr
r��sz!requireSocket.<locals>.<listcomp>zdon't have z, css|]
}|VqdS)Nr)r�r�rrr
r��sz requireSocket.<locals>.<genexpr>cSs$g|]}t|t�rtt|�n|�qSr)r�r�rRr)r�r�rrr
r��szcan't create socket({0}): {1}css|]}t|�VqdS)N)r�)r��orrr
r��s)r�rr	r�r
r��format)r*�errr�Zcallargsrrarrr
�
requireSocket�sr�c@s�eZdZdd�Zdd�Zejedk	d�dd��Zd	d
�Z	dd�Z
d
d�Zdd�Zdd�Z
dd�Zdd�Zejeed�d�ejeed�d�dd���Zejeed�d�dd ��Zejeed�d�d!d"��Zejeed#�d$�d%d&��Zd'd(�Zd)d*�Zejd+d,��Zd-d.�Zd/d0�Zejeed1�d2�d3d4��Zejeed5�d6�d7d8��Zejeed5�d6�d9d:��Z ejeed;�d<�d=d>��Z!ejeed;�d<�d?d@��Z"dAdB�Z#dCdD�Z$dEdF�Z%dGdH�Z&dIdJ�Z'dKdL�Z(dMdN�Z)eje*j+dOkdP�dQdR��Z,eje*j+dOkdP�ejeedS�dT�dUdV���Z-dWdX�Z.dYdZ�Z/ejej0d[�d\�d]d^��Z1d_d`�Z2dadb�Z3dcdd�Z4dedf�Z5dgdh�Z6didj�Z7dkdl�Z8dmdn�Z9dodp�Z:dqdr�Z;ejdsdt��Z<ejej=du�dvdw��Z>dxdy�Z?ej@e*j+dOkdz�d{d|��ZAejee*d}�d~�dd���ZBdS)��GeneralModuleTestscCs<ddl}|jtj|jk�tj�}|j|tj�|j�dS)Nr)�_socket�
assertTruerZ
SocketType�assertIsInstancer
)rr�rrrr
�test_SocketType_is_socketobject�s
z2GeneralModuleTests.test_SocketType_is_socketobjectcCs�tjtjtj�}|��|jd|j�t|��|jdtjt|��|jdtjt|��|jdt|��|jdt|��|jd
�|jdt|��|jt|j	��t|��WdQRX|jd	t|��|jdt|��dS)Nzfd=%iz	family=%sztype=%szproto=0Zraddr�	127.0.0.1rZladdrz[closed])r�r)
rrr�assertIn�fileno�repr�assertNotInr4r�rl)rrrrr
�	test_repr�s
"zGeneralModuleTests.test_reprNzneed _socket modulecCsrtjtjtj�}z.d|j�|j|j|jf}|jt	|�|�Wd|j
�Xd|j|j|jf}|jt	|�|�dS)Nz4<socket object, fd=%s, family=%s, type=%s, proto=%s>z4<socket object, fd=-1, family=%s, type=%s, proto=%s>)r�rrrr��familyr��proto�assertEqualr�r
)rr�expectedrrr
�test_csocket_repr�s
z$GeneralModuleTests.test_csocket_reprcCshtjtjtj�}t|�}|j|j�|j��|j�d}y|j�Wntk
rXYnX|jd�dS)NzSocket proxy still exists)	rrrrr�r�r
�ReferenceError�fail)rr�prrr
�test_weakref�szGeneralModuleTests.test_weakrefcCsrd}|jt|dd��
t�WdQRX|jt|dd��tj�WdQRX|jt|dd��tj�WdQRXdS)Nz$Error raising socket exception (%s).r	)�msgz
socket.herrorzsocket.gaierror)�assertRaisesr	r�herror�gaierror)rr�rrr
�testSocketError�sz"GeneralModuleTests.testSocketErrorcKCsFtjtjtj�}|j|j�|jd�|j�}|jt��}|j	d|�WdQRX|j
t|j�d�|jt��}|j	d|�WdQRX|j
t|j�d�|jt��}|j	dd�WdQRX|j
dt|j��|jt��}|j	dd|�WdQRX|j
t|j�d�|jt��}|j	dd|�WdQRX|j
t|j�d�|jt��}|j	ddd�WdQRX|j
dt|j��|jt��}|j	dd	|�WdQRX|j
d
t|j��|jt��}|j	ddd�WdQRX|j
d
t|j��|jt��}|j	d�WdQRX|j
dt|j��|jt��}|j	dd|d�WdQRX|j
d
t|j��dS)N�ru☠z*a bytes-like object is required, not 'str'y@z.a bytes-like object is required, not 'complex'sfooznot NoneType�barzan integer is requiredz	(1 given)�z	(4 given))r�r)rrr#r-r
r4rlr�r`�sendtor�r��	exceptionr�)rrZsockname�cmrrr
�testSendtoErrors�sL
z#GeneralModuleTests.testSendtoErrorscCs4tjtjtjtjtjtjtjtjdS)N)	rrrr#r�SOCK_RDMr�
SOL_SOCKET�SO_REUSEADDR)rrrr
�testCrucialConstantssz'GeneralModuleTests.testCrucialConstantscCs�tj�}ytj|�}Wntk
r4|jd�YnX|j|jd�dkd�ytj|�\}}}Wntk
r~|jd�YnX||g|}tj|�}||kr�|j	d|t
|�f�dS)Nzname lookup failurerFrzError resolving host to ip.z=Error testing host resolution mechanisms. (fqdn: %s, all: %s))r�gethostname�
gethostbynamer	r6r��find�
gethostbyaddrZgetfqdnr�r�)rZhostnameZipZhname�aliasesZipaddrsZall_host_namesZfqhnrrr
�testHostnameRess
z"GeneralModuleTests.testHostnameRescCsTx&tjddgD]}|jtj|�|�qWx&tjgD]}|j|tj|�d�q2WdS)Nz10.0.0.1z255.255.255.255�)rrkr�rr�r�r�)rrrr�rrr
�test_host_resolution*sz'GeneralModuleTests.test_host_resolutioncCsZd}xPdD]H}|jt��tj|�WdQRX|jt|d��tj|�WdQRXq
WdS)	Nz[resolving an invalid IP address did not raise OSError; can be caused by a broken DNS server�0.1.1.~1�1+.1.1.1�::1q�::1::2�1:1:1:1:1:1:1:1:1)r�)r�r�r�r�r�)r�r	rr�r�)rZexplanationrrrrr
� test_host_resolution_bad_address3sz3GeneralModuleTests.test_host_resolution_bad_address�sethostnameztest needs socket.sethostname()r�ztest needs socket.gethostname()cCs�tj�}ytjd�Wn<tk
rR}z |jtjkr@|jd�n�WYdd}~XnXz.|jtj�d�tjd�|jtj�d�Wdtj|�XdS)N�newztest should be run as rootsbarr�)rr�r�r	�errnoZEPERMr6r�)rZoldhnrarrr
�test_sethostnameBs
z#GeneralModuleTests.test_sethostname�if_nameindexz$socket.if_nameindex() not available.cCs�tj�}xx|D]p\}}|j|t�|j|t�|j|d�tj|�}|j|t�|j||�tj|�}|j|t�|j||�qWdS)Nr)	rr�r��intr��
assertGreater�if_nametoindexr��if_indextoname)rZ
interfaces�indexr�Z_index�_namerrr
�testInterfaceNameIndexVs

z)GeneralModuleTests.testInterfaceNameIndexcCsD|jttjd�|jttjd�|jttjd�|jttjd�dS)NrZ	_DEADBEEF)r�r	rr�r�r`)rrrr
�testInvalidInterfaceNameIndexfsz0GeneralModuleTests.testInvalidInterfaceNameIndex�getrefcountztest needs sys.getrefcount()cCsLytjt�}tjtd�Wn,tk
rFtjt�|krB|jd�YnXdS)Nrz$socket.getnameinfo loses a reference)�sysr�rr�getnameinfor`r�)rZorigrrr
�testRefCountGetNameInfops
z*GeneralModuleTests.testRefCountGetNameInfocCs*ytjdd�Wntk
r$YnXdS)Nr2r)r2rrr)rr�r	)rrrr
�testInterpreterCrash|sz'GeneralModuleTests.testInterpreterCrashcCs�tjdtjdtjdtjdi}xt|j�D]h\}}d|>d}x,dD]$}|j||@||||@��|@�q@W||�}|j||@|�|jt|d�q&WdS)
N� �rEr�r��gE#�2Tv�"���)rrEr�r�r�r�r�l)	r�htonl�ntohl�htons�ntohs�itemsr�r��
OverflowError)rZsizes�func�size�maskrZswappedrrr
�testNtoH�s
$zGeneralModuleTests.testNtoHcCs�ddddddg}dddddd	g}x4|D],}tj|�tj|�tj|�tj|�q&WxL|D]D}|jttj|�|jttj|�|jttj|�|jttj|�q\WdS)
NrEr�����������rrr	)rr�r�r�r�r�r)rZgood_valuesZ
bad_values�krrr
�testNtoHErrors�s




z!GeneralModuleTests.testNtoHErrorscCs|j}tjjd�stjdkr"d}nd}x8|D],}ytj|d
�}PWq,tk
rVYq,Xq,Wt�tj|�}|||�ytj|d�}Wntk
r�d}YnX|||�|tj|�|�|tj|d
�|�|dk	r�|tj|d�|�|jt	tjd�|jt	tjd
�dS)N�freebsd�netbsd�gnukfreebsd�linux�darwin�daytime�qotd�domain�echoZtcpZudprEi)rr
r)rr)rrr)rrrr)
r�r��platform�
startswithrZ
getservbynamer	Z
getservbyportr�r)r�eqZservicesZservicerZport2Zudpportrrr
�
testGetServBy�s2






z GeneralModuleTests.testGetServBycCs�|jtj�d�tj�}|j|j�d�|j�tjd�|jtj�d�tj�}|j|j�d�|j�tjd�|jtj�d�tj�}|j|j�d�|j�|jttjd�|jttjd�dS)N�
rEZspamr)	r�r�getdefaulttimeout�
gettimeoutr
�setdefaulttimeoutr��
ValueErrorr`)rrrrr
�testDefaultTimeout�s 

z%GeneralModuleTests.testDefaultTimeout�	inet_atonztest needs socket.inet_aton()cCs(|jdtjd��|jdtjd��dS)N�r�z0.0.0.0��z255.255.255.255ss����)r�rr)rrrr
�testIPv4_inet_aton_fourbytes�sz/GeneralModuleTests.testIPv4_inet_aton_fourbytes�	inet_ptonztest needs socket.inet_pton()cs&ddlm}m�m���fdd�}�fdd�}�jd|d���jd|d	���jd
|d���jd|d
���jd|d��||d�||d�||d�||d�||d��jd|d���jd|d	���jd
|d���jd|d��||d�||d�||d�||d�||d�dS)Nr)rr#rcs
��|�S)Nr)�a)rr#rr
r��sz5GeneralModuleTests.testIPv4toString.<locals>.<lambda>cs�jttf||�S)N)r�r	r)rr$)rrr
r��ssz0.0.0.0s��z255.0.255.0s����z170.170.170.170sz1.2.3.4s����z255.255.255.255z0.0.0.z	300.0.0.0za.0.0.0z	1.2.3.4.5z::1)rrr#rr�)rr��g�
assertInvalidr)rr#rr
�testIPv4toString�s,








z#GeneralModuleTests.testIPv4toStringcs�y&ddlm�m�m}|s$�jd�Wntk
rD�jd�YnXtjdkr�y��d�Wn6tk
r�}z|j	dkr��jd�WYdd}~XnX��fd	d
����fdd
�}�j
d2�d���j
d3�d���j
d5�d���j
d�d���j
d8�d���j
d:�d��|d�|d�|d�|d�|d�|d �|d!�|d"�|d#��j
d<�d%���j
d?�d)���j
d*�d+��|d,�|d-�|d.�|d/�|d0�|d1�dS)@Nr)r#r��has_ipv6zIPv6 not availablez+could not import needed symbols from socket�win32z::i&'zIPv6 might not be supportedcs
��|�S)Nr)r$)r�r#rr
r�sz5GeneralModuleTests.testIPv6toString.<locals>.<lambda>cs�jttf�|�S)N)r�r	r)r$)r�rrr
r�sr r�z0::0s�z1::sE�v�V���$��z$45ef:76cb:1a:56ef:afeb:bac:1924:aeaes�B
�r�s'Tzad42:abc::127:0:254:2s
�z12:a::z0x20::z:::z::0::z1::abc::z1::abc::defz1:2:3:4:5:6:z1:2:3:4:5:6z1:2:3:4:5:6:7:8:z1:2:3:4:5:6:7:8:0s�*@z::254.42.23.64sBr3s���*@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:8ssssss�B
�s�B
�'Tss
ss�*@ss
BsB���*@)rr#r�r(r6�ImportErrorr�rr	�winerrorr�)rr(rar&r)r�r�r#rr
�testIPv6toStrings^






z#GeneralModuleTests.testIPv6toString�	inet_ntopztest needs socket.inet_ntop()csddlm}m�m���fdd�}�fdd�}�jd|d���jd|d	���jd
|d���jd|d
��||d�||d�||d��jd|td	����jd|d���jd|d	���jd
|d��||d�||d�||d��jd|td	���dS)Nr)�	inet_ntoar/rcs
��|�S)Nr)r$)rr/rr
r�Msz5GeneralModuleTests.testStringToIPv4.<locals>.<lambda>cs�jttf||�S)N)r�r	r)rr$)rrr
r�Nsz1.0.1.0sz
170.85.170.85s�U�Uz255.255.255.255s����z1.2.3.4sr r�r�ssssss)rr0r/rr��	bytearray)rr�r%r&r)rr/rr
�testStringToIPv4Is$





z#GeneralModuleTests.testStringToIPv4csy&ddlm�m�m}|s$�jd�Wntk
rD�jd�YnXtjdkr�y��d�Wn6tk
r�}z|j	dkr��jd	�WYdd}~XnX��fd
d����fdd�}�j
d
�d���j
d�d���j
d�d���j
d�td���|d�|d�|d�dS)Nr)r/r�r(zIPv6 not availablez+could not import needed symbols from socketr)r r�i&'zIPv6 might not be supportedcs
��|�S)Nr)r$)r�r/rr
r�tsz5GeneralModuleTests.testStringToIPv6.<locals>.<lambda>cs�jttf�|�S)N)r�r	r)r$)r�rrr
r�usz::z::1��z!aef:b01:506:1001:ffff:9997:55:170s
�����Up��r�sssssssss)rr/r�r(r6r,r�rr	r-r�r2)rr(rar&r)r�r�r/rr
�testStringToIPv6cs.


z#GeneralModuleTests.testStringToIPv6cCs�tj�}tjtjtj�}|j|j�|jd|f�|j�}ytj	tj
��}Wntk
rj|jd�YnX|j
|dd|fd|d�|j|d|�dS)Nz0.0.0.0zname lookup failurerz
%s invalidrE)r�find_unused_portrrrr-r
r4rlr�r�r	r6r�r�)rrr�r�Z
my_ip_addrrrr
�testSockName�szGeneralModuleTests.testSockNamecCs@tjtjtj�}|j|j�|jtjtj�}|j|dkd�dS)Nrzinitial mode is reuse)	rrrr-r
�
getsockoptr�r��assertFalse)rr��reuserrr
�testGetSockOpt�sz!GeneralModuleTests.testGetSockOptcCsRtjtjtj�}|j|j�|jtjtjd�|jtjtj�}|j	|dkd�dS)NrErzfailed to set reuse mode)
rrrr-r
�
setsockoptr�r�r;r<)rr�r=rrr
�testSetSockOpt�s
z!GeneralModuleTests.testSetSockOptcCs6tjtjtj�}|jd�|j�|jt|jd�dS)NrEsspam)rrr�
settimeoutr
r�r	�send)rr�rrr
�testSendAfterClose�s
z%GeneralModuleTests.testSendAfterClosecCsptj�}tj|j�d�j�y|j�Wn8tk
r`}z|j|jtjtjf�WYdd}~XnX|jd�dS)N)r�z#close() should raise EBADF/ENOTSOCK)	rr�r
r	r�r�ZEBADFZENOTSOCKr�)rr�r�rrr
�testCloseException�s(z%GeneralModuleTests.testCloseExceptioncCsrtjtjtj�}|j|jtj�ttd�rH|j|jtjtjBtjf�n|j|jtj�|j|j	d�|j
�dS)N�SOCK_CLOEXECr)rrrr�r�r_r�r�rEr�r
)rr�rrr
�testNewAttributes�s

z$GeneralModuleTests.testNewAttributescCs�tj�}|j|j�tj�}|d}|d}|jt|jt|f�|jt|jt|f�xft	j
�D]Z}tj�}y|jt|f�Wn8tk
r�}z|jtj
ks�|dkr��WYdd}~Xq^XPq^WdS)Nir1)rr-r
rr9r�rr4rk�	itertools�countr	r�Z
EADDRINUSE)rr�rZbig_portZneg_portrrarrr
�test_getsockaddrarg�sz&GeneralModuleTests.test_getsockaddrarg�ntzWindows specificcCs�|jttjd��|jttd��|jttd��|jttd��|jttd��tj�}|j|j�|jt|jdd�|jtjd	�dS)
N�ioctlZ
SIO_RCVALLZ	RCVALL_ONZ
RCVALL_OFF�SIO_KEEPALIVE_VALSrE�dr)rErMrM)	r�r_rr-r
r�rrKrL)rrrrr
�test_sock_ioctl�sz"GeneralModuleTests.test_sock_ioctl�SIO_LOOPBACK_FAST_PATHz1Loopback fast path support required for this testcCs|tj�}|j|j�y|jtjd�Wn<tk
rb}z d}|j|krP|jd��WYdd}~XnX|jt	|jtjd�dS)NTi='zQSIO_LOOPBACK_FAST_PATH is defined but doesn't implemented in this Windows version)
rr-r
rKrOr	r-r6r�r`)rrrYZ
WSAEOPNOTSUPPrrr
�test_sio_loopback_fast_path�s

z.GeneralModuleTests.test_sio_loopback_fast_pathc
Cs6ytjdd�Wn<tjk
rL}z|jtjkr:|jd��WYdd}~XnXx$tjtd�D]}|jt|�d�q\Wtjdd�tjdd�tjdd�t	j
r�tjdd�tjtd�tjtd�tjtd�tjtdtjtj�}xR|D]J\}}}}}|j|tj�|jt
|�d�|j|tj�|jt
|�d	�q�Wtjtdd
tj�}x&|D]\}}}}}|j|tj��qNWtjtdd
d
tj�tjtdd
d
d
tj�tjdd
tjtjd
tj�tjtd�}tjtdd�}	|j||	�tjtdtj�}tjtdtjd�}	|j||	�tjtdd
tj�}tjtdtjd
�}	|j||	�tjtdd
d
tj�}tjtdtjd�}	|j||	�tjtdd
d
d
tj�}tjtdtjd�}	|j||	�tjdd
tjtjd
tj�}tjdd
tjtjd
tjd�}	|j||	�|jttjdd�ttd��r2ytjddd
d
d
tj�Wntjk
�r0YnXdS)NZ	localhost�Pzbuggy libc versionr1z	127.0.0.1z::1ZhttpzAddressFamily.AF_INETzSocketKind.SOCK_STREAMr)r�r)r�)r�)r�)�flags)r�rr�r�r�rRu��AI_NUMERICSERV)r�getaddrinfor�r�ZEAI_SERVICEr6rkr��lenr�IPV6_ENABLEDrrr�ZSOL_TCPZ
AI_PASSIVE�	AF_UNSPECr��UnicodeEncodeErrorr_rS)
rr��infoZinfosr�r�rGZsocktyper$�brrr
�testGetaddrinfo�sr

z"GeneralModuleTests.testGetaddrinfocCs|jttjdd�dS)N�mail.python.orgr)r\r)r�r	rr�)rrrr
�test_getnameinfoDsz#GeneralModuleTests.test_getnameinfoZnetworkznetwork is not enabledcCsPtjd��tjd�WdQRXd}tj|�tj|�tj|dtjtj�dS)Nz
python.orgu!испытание.pythontest.netr)rZtransient_internetrr�Zgethostbyname_exrTrWr)rrrrr
�	test_idnaHs

zGeneralModuleTests.test_idnacs�ttd�sttd�r"�jd��fdd�}�fdd�}tj�\}}tjtj|�}zv|rd|jd��jt�� tj	d	�|j
d
tj�WdQRX|r�tjtj|�tj	d	��jtj
|j
d
tj�Wdtj	d�tjtj|�|j�|j�XdS)N�alarmrxz9signal.alarm and socket.socketpair required for this testcs�jttjd�dS)Nr)r�r�math�acosh)r*)rrr
�
ok_handler_sz@GeneralModuleTests.check_sendall_interrupted.<locals>.ok_handlercs�jttjd�dddS)NrrE)r�rr`ra)r*)rrr
�raising_handleraszEGeneralModuleTests.check_sendall_interrupted.<locals>.raising_handlerg�?rE�xr)r_�signalrr6rx�SIGALRMrAr��ZeroDivisionErrorr_�sendallr�
SOCK_MAX_SIZE�timeoutr
)rZwith_timeoutrbrc�cr�	old_alarmr)rr
�check_sendall_interruptedYs*




z,GeneralModuleTests.check_sendall_interruptedcCs|jd�dS)NF)rm)rrrr
�test_sendall_interruptedxsz+GeneralModuleTests.test_sendall_interruptedcCs|jd�dS)NT)rm)rrrr
�%test_sendall_interrupted_with_timeout{sz8GeneralModuleTests.test_sendall_interrupted_with_timeoutcCs�tjtjtj�}t|�}|jt��}d}tj�WdQRX|j|t	|j
jd��tjtjtj�}|jd�}t|�}d}tj�|jt��d}tj�WdQRXdS)Nr�rb)
rrrr�ZassertWarns�ResourceWarningrZ
gc_collectr�r�Zwarningr*�makefile)rr��rr�r�rrr
�test_dealloc_warn~s
z$GeneralModuleTests.test_dealloc_warnc
CsBtjtjtj��(}|jd�}|j�|jt|�d�WdQRXdS)Nrpz<_io.BufferedReader name=-1>)rrrrrr
r�r�)rr��fprrr
�test_name_closed_socketio�s
z,GeneralModuleTests.test_name_closed_socketiocCs�tj��p}|jddd�}|j|j��|j|j��|j|j��|j�|jt	|j�|jt	|j�|jt	|j�WdQRXdS)Nrpr)�	buffering)
rrrr��readabler<�writable�seekabler
r�r)rr�rurrr
�test_unusable_closed_socketio�s
z0GeneralModuleTests.test_unusable_closed_socketiocCsbx\dD]T}|j|d��>tj��*}|j|��}|j|j|�WdQRXWdQRXWdQRXqWdS)Nrsrp�rw�w�wb)�mode)rsrpr|r}r~)�subTestrrrr�r)rrr�rurrr
�test_makefile_mode�s


z%GeneralModuleTests.test_makefile_modecCs`xZdD]R}|j|d��<tj��(}|jtd��|j|�WdQRXWdQRXWdQRXqWdS)N�rtr2�+r$)rzinvalid mode)r�r2r�r$)r�r�assertRaisesRegexrrr)rrr�rrr
�test_makefile_invalid_mode�s


z-GeneralModuleTests.test_makefile_invalid_modec
Cs�tj�}|�0x(ttjd�D]}|jttj||�qWWdQRXxZttjd�D]H}tjtjtj|��}|j	|tj�tjtjtj
|��}|j	|tj
�qRWdS)NrE)r�range�pickleZHIGHEST_PROTOCOLr�r`�dumps�loadsrr�r)rr�Zprotocolr�r�rrr
�test_pickle�s zGeneralModuleTests.test_picklecCsxx@dD]8}tjtjtj��}|jtdf�|j|�WdQRXqWtjtjtj��}|jtdf�|j�WdQRXdS)NrrEr)rr)rrrr4rkr)rZbacklog�srvrrr
�test_listen_backlog�s
z&GeneralModuleTests.test_listen_backlogcCsHddl}tjtjtj�}|jtdf�|jt|j|j	d�|j
�dS)NrrE)�	_testcapirrrr4rkr�rr�INT_MAXr
)rr�r�rrr
�test_listen_backlog_overflow�s
z/GeneralModuleTests.test_listen_backlog_overflowzIPv6 required for this test.c
CsR|jttjtjddfd�tjtjtj��}|jt|jtjddf�WdQRXdS)Nrl��ri����)	r�rrr�rr�r�rr4)rrrrr
�
test_flowinfo�s
z GeneralModuleTests.test_flowinfoc
CsDtjtjtj��*}|jt|j�d�|jt|j�d�WdQRXdS)NzAddressFamily.AF_INETzSocketKind.SOCK_STREAM)rrrr�r�r�r�)rrrrr
�test_str_for_enums�sz%GeneralModuleTests.test_str_for_enumszWill not work on Windowsc
CsVtj�\}}|jtj|�tjdd|d��"}|j|jd�|j|jd�WdQRXdS)Ni��i4)r�r�r�)	r��mkstempr-r�r�rr�r�r�)r�fdr�rrrr
�test_uknown_socket_family_repr�s

z1GeneralModuleTests.test_uknown_socket_family_repr�sendfileztest needs os.sendfile()cCs�Gdd�d�}tj���}tjtjtj�}tj|�|jtj��|j||��WdQRX|jt	��|j|dd��WdQRX|jt
��|j|d��WdQRXWdQRXdS)Nc@seZdZdd�Zdd�ZdS)z<GeneralModuleTests.test__sendfile_use_sendfile.<locals>.FilecSs
||_dS)N)r�)rr�rrr
r&�szEGeneralModuleTests.test__sendfile_use_sendfile.<locals>.File.__init__cSs|jS)N)r�)rrrr
r��szCGeneralModuleTests.test__sendfile_use_sendfile.<locals>.File.filenoN)rr r!r&r�rrrr
�File�sr�r�i�)rr��open�curdir�O_RDONLYr
r��_GiveupOnSendfile�_sendfile_use_sendfilerr`)rr�r�r�rrr
�test__sendfile_use_sendfile�s

z.GeneralModuleTests.test__sendfile_use_sendfile)Crr r!r�r�rv�
skipUnlessr�r�r�r�r�r�r�r�r�r_rr�r�r�r�r�r�rr�cpython_onlyrrrr"r'r.r3r8r:r>r@rCrDrFrIr�r�rNrPr[r]Zis_resource_enabledr^rmrnrortrvr{r�r�r�r�r�rVr�r��skipIfr�r�rrrr
r��s~


,		'=#K
	r�z!SocketCan required for this test.c@s�eZdZdd�Zejeed�d�dd��Zdd�Z	ejeed�d�d	d
��Z
dd�Zd
d�Zejeed�d�dd��Z
ejeed�d�dd��ZdS)�BasicCANTestcCstjtjtjdS)N)r�AF_CANrr)rrrr
r�sz!BasicCANTest.testCrucialConstants�CAN_BCMz&socket.CAN_BCM required for this test.cCsRtjtjtjtjtjtjtjtjtj	tj
tjtjtj
dS)N)rr�ZCAN_BCM_TX_SETUPZCAN_BCM_TX_DELETEZCAN_BCM_TX_READ�CAN_BCM_TX_SENDZCAN_BCM_RX_SETUPZCAN_BCM_RX_DELETEZCAN_BCM_RX_READZCAN_BCM_TX_STATUSZCAN_BCM_TX_EXPIREDZCAN_BCM_RX_STATUSZCAN_BCM_RX_TIMEOUTZCAN_BCM_RX_CHANGED)rrrr
�testBCMConstantsszBasicCANTest.testBCMConstantsc	Cs$tjtjtjtj��}WdQRXdS)N)rrrr)rrrrr
�testCreateSocketszBasicCANTest.testCreateSocketc	Cs$tjtjtjtj��}WdQRXdS)N)rrr#r�)rrrrr
�testCreateBCMSocketsz BasicCANTest.testCreateBCMSocketc	Cs.tjtjtjtj��}|jd�WdQRXdS)Nr�)r�)rrrrr4)rrrrr
�testBindAny"szBasicCANTest.testBindAnyc
Cs<tjtjtjtj��}|jtd|jddf�WdQRXdS)Nzinterface name too longr2i)rrrrr�r	r4)rrrrr
�testTooLongInterfaceName&sz%BasicCANTest.testTooLongInterfaceName�CAN_RAW_LOOPBACKz/socket.CAN_RAW_LOOPBACK required for this test.c
Cs\tjtjtjtj��>}x6dD].}|jtjtj|�|j||jtjtj��qWWdQRXdS)NrrE)rrE)	rrrrr?�SOL_CAN_RAWr�r�r;)rrZloopbackrrr
�testLoopback,s
zBasicCANTest.testLoopback�CAN_RAW_FILTERz-socket.CAN_RAW_FILTER required for this test.c
Cs|d\}}tjd||�}tjtjtjtj��H}|jtjtj|�|j	||j
tjtjd��|jtjtjt|��WdQRXdS)N��z=IIr3)r�r�)r9�packrrrrr?r�r�r�r;r2)r�can_idZcan_maskZ
can_filterrrrr
�
testFilter6szBasicCANTest.testFilterN)rr r!r�rvr�r_rr�r�r�r�r�r�r�rrrr
r��s	r�z!Threading required for this test.c@s�eZdZddd�Zedd��Zedd��Zdd	�Zd
d�Zdd
�Z	dd�Z
dd�Zdd�Ze
jeed�d�dd��Ze
jeed�d�dd��ZdS)�CANTestrecCstj||d�dS)N)rf)rir&)rrfrrr
r&FszCANTest.__init__cCs&t|�}|jdd�}tj|j|||�S)Nr3r )rU�ljustr9r�r8)�clsr��data�can_dlcrrr
�build_can_frameIszCANTest.build_can_framecCs&tj|j|�\}}}|||d|�fS)N)r9�unpackr8)r��framer�r�r�rrr
�dissect_can_framePszCANTest.dissect_can_framecCsH|jj|j�\}}|j|j|�|j|d|j�|j|dtj�dS)NrrE)r�recvfromr7r��cfr5rr�)rr�rrrrr
�
testSendFrameVszCANTest.testSendFramecCs |jdd�|_|jj|j�dS)Nrs)r�r�rgrB)rrrr
�_testSendFrame\szCANTest._testSendFramecCs$|jj|j�\}}|j|j|�dS)N)rr�r7r�r�)rr�rrrrr
�testSendMaxFrame`szCANTest.testSendMaxFramecCs |jdd�|_|jj|j�dS)Nr�r3s)r�r�rgrB)rrrr
�_testSendMaxFramedszCANTest._testSendMaxFramecCsD|jj|j�\}}|j|j|�|jj|j�\}}|j|j|�dS)N)rr�r7r��cf1�cf2)rr�rrrrr
�testSendMultiFrameshszCANTest.testSendMultiFramescCs<|jdd�|_|jj|j�|jdd�|_|jj|j�dS)N�sD3"�s�"3)r�r�rgrBr�)rrrr
�_testSendMultiFramesoszCANTest._testSendMultiFramesr�z&socket.CAN_BCM required for this test.cCsP|jj|j�\}}|j|j|�|j|�\}}}|j|j|�|j|j|�dS)N)rgr�r7r�r�r�r�r�)rr�rrr�r�r�rrr
�_testBCMvs
zCANTest._testBCMcCs�tjtjtjtj�}|j|j�|j|jf�d|_t	dddg�|_
|j|j|j
�|_tj
}d}d}d}}}}d}	d}
tj|j||||||||	|
�
}||j}|j|�}
|j|
t|��dS)Ni#����ri"rE)rrr#r�r-r
rsr5r��bytesr�r�r�r�r9r�r;rBr�rU)rZbcmZopcoderRrHZ
ival1_secondsZ
ival1_usecZ
ival2_secondsZ
ival2_usecZ
bcm_can_idZnframes�headerZheader_plus_frameZ
bytes_sentrrr
�testBCMs2

zCANTest.testBCMN)re)rr r!r&�classmethodr�r�r�r�r�r�r�r�rvr�r_rr�r�rrrr
r�Bs
r�z#RDS sockets required for this test.c@s$eZdZdd�Zdd�Zdd�ZdS)�BasicRDSTestcCstjtjdS)N)rZAF_RDSr)rrrr
r��sz!BasicRDSTest.testCrucialConstantsc	Cs"tjtjtjd��}WdQRXdS)Nr)rrr)rrrrr
r��szBasicRDSTest.testCreateSocketcCsJd}tjtjtjd��*}|jtjtj|�|jtjtj|�WdQRXdS)Ni@r)rrrr?r�Z	SO_RCVBUFZ	SO_SNDBUF)rr7rrrr
�testSocketBufferSize�sz!BasicRDSTest.testSocketBufferSizeN)rr r!r�r�r�rrrr
r��sr�cs�eZdZddd�Z�fdd�Zdd�Zdd	�Zd
d�Zdd
�Ze	e
j
d�dd��Ze	e
j
d�dd��Zdd�Z
dd�Zdd�Zdd�Z�ZS)�RDSTestrecCstj||d�dS)N)rf)rjr&)rrfrrr
r&�szRDSTest.__init__cst�j�tj�|_dS)N)r%rr'rJZevt)r)r,rr
r�s
z
RDSTest.setUpcCs2|jj|j�\}}|j|j|�|j|j|�dS)N)rr�r7r�r�rm)rr�rrrrr
�testSendAndRecv�szRDSTest.testSendAndRecvcCs"d|_|jj|jdt|jf�dS)Nsspamr)r�rgr�rkr)rrrr
�_testSendAndRecv�szRDSTest._testSendAndRecvcCsH|jj|jtj�\}}|j|j|�|jj|j�\}}|j|j|�dS)N)rr�r7r�MSG_PEEKr�r�)rr�rrrrr
�testPeek�szRDSTest.testPeekcCs"d|_|jj|jdt|jf�dS)Nsspamr)r�rgr�rkr)rrrr
�	_testPeek�szRDSTest._testPeek�recvmsgcCs(|jj|j�\}}}}|j|j|�dS)N)rr�r7r�r�)rr��ancdataZ	msg_flagsrrrrr
�testSendAndRecvMsg�szRDSTest.testSendAndRecvMsg�sendmsgcCs*dd|_|jj|jgfdt|jf�dS)Nshello rr)r�rgr�rkr)rrrr
�_testSendAndRecvMsg�s
zRDSTest._testSendAndRecvMsgcCsD|jj|j�\}}|j|j|�|jj|j�\}}|j|j|�dS)N)rr�r7r��data1�data2)rr�rrrrr
�testSendAndRecvMulti�szRDSTest.testSendAndRecvMulticCs@d|_|jj|jdt|jf�d|_|jj|jdt|jf�dS)Nsbaconrsegg)r�rgr�rkrr�)rrrr
�_testSendAndRecvMulti�szRDSTest._testSendAndRecvMulticCsLtj|jgggd�\}}}|j|j|�|jj|j�\}}|j|j|�dS)Ng@)�selectrr�r�r7r�r�)rrsr}r2r�rrrrr
�
testSelect�szRDSTest.testSelectcCs"d|_|jj|jdt|jf�dS)Nsselectr)r�rgr�rkr)rrrr
�_testSelect�szRDSTest._testSelect)re)rr r!r&rr�r�r�r�r�rr�r�r�r�r�r�r/rr)r,r
r��s
r�c@s�eZdZd+dd�Zdd�Zdd�Zdd	�Zd
d�Zdd
�Zdd�Z	dd�Z
dd�Zdd�Zdd�Z
dd�Zdd�Zdd�Zdd�Zd d!�Zd"d#�Zeje�Zejd$d%��Zd&d'�Zd(d)�Zd*S),�BasicTCPTestrecCstj||d�dS)N)rf)rnr&)rrfrrr
r&�szBasicTCPTest.__init__cCs|jjd�}|j|t�dS)Ni)rp�recvr��MSG)rr�rrr
�testRecv�szBasicTCPTest.testRecvcCs|jjt�dS)N)rtrBr�)rrrr
�	_testRecv�szBasicTCPTest._testRecvcCs8|jjtt�d�}|jjd�}||}|j|t�dS)Nri)rpr�rUr�r�)r�seg1�seg2r�rrr
�testOverFlowRecvszBasicTCPTest.testOverFlowRecvcCs|jjt�dS)N)rtrBr�)rrrr
�_testOverFlowRecvszBasicTCPTest._testOverFlowRecvcCs |jjd�\}}|j|t�dS)Ni)rpr�r�r�)rr�rrrrr
�testRecvFrom
szBasicTCPTest.testRecvFromcCs|jjt�dS)N)rtrBr�)rrrr
�
_testRecvFromszBasicTCPTest._testRecvFromcCs@|jjtt�d�\}}|jjd�\}}||}|j|t�dS)Nri)rpr�rUr�r�)rr�rrr�r�rrr
�testOverFlowRecvFromsz!BasicTCPTest.testOverFlowRecvFromcCs|jjt�dS)N)rtrBr�)rrrr
�_testOverFlowRecvFromsz"BasicTCPTest._testOverFlowRecvFromcCs8d}x|jjd�}|sP||7}qW|j|dd�dS)N�i�fi)rpr�r�)rr��readrrr
�testSendAllszBasicTCPTest.testSendAllcCsdd}|jj|�dS)Nr�i)rtrh)rZ	big_chunkrrr
�_testSendAll&szBasicTCPTest._testSendAllcCsP|jj�}tj|tjtj�}|j|j�|j|tj�|j	d�}|j
|t�dS)Ni)rpr�rZfromfdrrr-r
r�r�r�r�)rr�r�r�rrr
�
testFromFd*s

zBasicTCPTest.testFromFdcCs|jjt�dS)N)rtrBr�)rrrr
�_testFromFd3szBasicTCPTest._testFromFdcCs0|jj�}|j|j�|jd�}|j|t�dS)Ni)rp�dupr-r
r�r�r�)rr�r�rrr
�testDup6s

zBasicTCPTest.testDupcCs|jjt�dS)N)rtrBr�)rrrr
�_testDup=szBasicTCPTest._testDupcCs&|jjd�}|j|t�|jj�dS)Ni)rpr�r�r�rLrV)rr�rrr
�testShutdown@szBasicTCPTest.testShutdowncCs|jjt�|jjd�dS)Nr�)rtrBr��shutdown)rrrr
�
_testShutdownIszBasicTCPTest._testShutdowncCsXddl}|jjt�|jt|jj|jd�|jt|jjd|jd�|jjd�dS)NrrEr�)	r�rtrBr�r�rr�r��UINT_MAX)rr�rrr
�_testShutdown_overflowOsz#BasicTCPTest._testShutdown_overflowcCs�|jj�}|jj�}|j||�|j|jj�|jt|jjd�|jj	�t
j
t
jt
j|d�}|j
|j	�|jd�}|j|t�dS)Ni)r�)rpr��detachr�r��_closedr�r	r�r
rrrr-r�)rr�r�r�r�rrr
�
testDetachZs



zBasicTCPTest.testDetachcCs|jjt�dS)N)rtrBr�)rrrr
�_testDetachjszBasicTCPTest._testDetachN)re)rr r!r&r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�rr�ZtestShutdown_overflowr�rrrrrr
r��s*

		
r�c@sFeZdZddd�Zdd�Zdd�Zdd	�Zd
d�Zdd
�Zdd�Z	dS)�BasicUDPTestrecCstj||d�dS)N)rf)rhr&)rrfrrr
r&pszBasicUDPTest.__init__cCs |jjtt��}|j|t�dS)N)rr�rUr�r�)rr�rrr
�testSendtoAndRecvsszBasicUDPTest.testSendtoAndRecvcCs|jjtdt|jf�dS)Nr)rgr�r�rkr)rrrr
�_testSendtoAndRecvxszBasicUDPTest._testSendtoAndRecvcCs$|jjtt��\}}|j|t�dS)N)rr�rUr�r�)rr�rrrrr
r�{szBasicUDPTest.testRecvFromcCs|jjtdt|jf�dS)Nr)rgr�r�rkr)rrrr
r��szBasicUDPTest._testRecvFromcCs|jt|jjd�dS)NrEr)r�rrr�)rrrr
�testRecvFromNegative�sz!BasicUDPTest.testRecvFromNegativecCs|jjtdt|jf�dS)Nr)rgr�r�rkr)rrrr
�_testRecvFromNegative�sz"BasicUDPTest._testRecvFromNegativeN)re)
rr r!r&rrr�r�rrrrrr
rms
rcs�eZdZdZ�fdd�Zdd�ZfZdd�Zdd	�Zd
d�Z	dd
�Z
dZxdD]Zee
eed�OZqNWdZdZdZddd�Z�ZS)�SendrecvmsgBaseg@cstj�|_t�j�dS)N)r'rJ�
misc_eventr%r)r)r,rr
r�s
zSendrecvmsgBase.setUpcCs|jj|�S)N)�cli_sockrB)rr�rrr
�sendToServer�szSendrecvmsgBase.sendToServercGs|jj||jt|�d��S)N)rr��sendmsg_to_server_defaultsrU)rr*rrr
�sendmsgToServer�szSendrecvmsgBase.sendmsgToServercGs|j|f|��}|j|�|S)N)r��registerRecvmsgResult)rr�r7r*�resultrrr
�	doRecvmsg�s
zSendrecvmsgBase.doRecvmsgcCsdS)Nr)rrrrr
r�sz%SendrecvmsgBase.registerRecvmsgResultcCs|j||�dS)N)r�)r�addr1�addr2rrr
�checkRecvmsgAddress�sz#SendrecvmsgBase.checkRecvmsgAddressr�
MSG_CTRUNC�MSG_OOBNc
Cs�|j}|j}|r&||jO}||jO}n|dk	rB||jO}||jO}||M}||M}||O}||O}||@|@}|r�tdj|���||B|@}	|j||	@||	@�dS)Nz6contradictory set, unset requirements for flags {0:#x})�msg_flags_common_set�msg_flags_common_unset�msg_flags_eor_indicator�msg_flags_non_eor_indicator�	Exceptionr�r�)
rrR�eor�checkset�
checkunset�ignoreZ
defaultsetZdefaultunsetZinbothrrrr
�
checkFlags�s$




zSendrecvmsgBase.checkFlags)rr)Nrrr)rr r!�fail_timeoutrrr
rrrrrr�rRrrrrr r/rr)r,r
r	�s

r	c@seZdZdd�ZdS)�RecvmsgIntoMixincGsft|�}|j|gf|��}|j|�|j|dd�|j|d|�t|d|d��f|dd�S)NrrE)r2�recvmsg_intor�assertGreaterEqual�assertLessEqualr�)rr�r7r*�bufrrrr
rs
zRecvmsgIntoMixin.doRecvmsgN)rr r!rrrrr
r"sr"cs eZdZe�fdd��Z�ZS)�SendrecvmsgDgramFlagsBasecst�jtjBS)N)r%rr�	MSG_TRUNC)r)r,rr
r+sz5SendrecvmsgDgramFlagsBase.msg_flags_non_eor_indicator)rr r!�propertyrr/rr)r,r
r'(sr'cs eZdZe�fdd��Z�ZS)�SendrecvmsgSCTPFlagsBasecst�jtjBS)N)r%rrZMSG_EOR)r)r,rr
r3sz0SendrecvmsgSCTPFlagsBase.msg_flags_eor_indicator)rr r!r)rr/rr)r,r
r*0sr*c@s8eZdZedd��Zedd��Zedd��Zdd�Zd	S)
�SendrecvmsgConnectionlessBasecCs|jS)N)r)rrrr
�	serv_sock=sz'SendrecvmsgConnectionlessBase.serv_sockcCs|jS)N)rg)rrrr
rAsz&SendrecvmsgConnectionlessBase.cli_sockcCsggd|jfS)Nr)r})rrrr
r
Esz8SendrecvmsgConnectionlessBase.sendmsg_to_server_defaultscCs|jj||j�S)N)rr�r})rr�rrr
rIsz*SendrecvmsgConnectionlessBase.sendToServerN)rr r!r)r,rr
rrrrr
r+8sr+c@s,eZdZedd��Zedd��Zdd�ZdS)�SendrecvmsgConnectedBasecCs|jS)N)rp)rrrr
r,Ssz"SendrecvmsgConnectedBase.serv_sockcCs|jS)N)rt)rrrr
rWsz!SendrecvmsgConnectedBase.cli_sockcCsdS)Nr)rrrrrr
r[sz,SendrecvmsgConnectedBase.checkRecvmsgAddressN)rr r!r)r,rrrrrr
r-Msr-cseZdZ�fdd�Z�ZS)�SendrecvmsgServerTimeoutBasecst�j�|jj|j�dS)N)r%rr,rAr!)r)r,rr
rds
z"SendrecvmsgServerTimeoutBase.setUp)rr r!rr/rr)r,r
r.asr.c@s�eZdZdd�Zdd�Zdd�Zdd�Zd	d
�Zdd�Zd
d�Z	dd�Z
dd�Zdd�Zdd�Z
dd�Zdd�Zdd�Zeed�dd��Zejd d!��Zd"d#�Zd$d%�Zd&d'�Zd(d)�Zd*S)+�SendmsgTestscCs|j|jjtt��t�dS)N)r�r,r�rUr�)rrrr
�testSendmsgmszSendmsgTests.testSendmsgcCs|j|jtg�tt��dS)N)r�rr�rU)rrrr
�_testSendmsgqszSendmsgTests._testSendmsgcCs|j|jjtt��t�dS)N)r�r,r�rUr�)rrrr
�testSendmsgDataGeneratortsz%SendmsgTests.testSendmsgDataGeneratorcCs&|j|jdd�tgD��tt��dS)Ncss|]
}|VqdS)Nr)r�r�rrr
r�ysz9SendmsgTests._testSendmsgDataGenerator.<locals>.<genexpr>)r�rr�rU)rrrr
�_testSendmsgDataGeneratorxsz&SendmsgTests._testSendmsgDataGeneratorcCs|j|jjtt��t�dS)N)r�r,r�rUr�)rrrr
�testSendmsgAncillaryGenerator|sz*SendmsgTests.testSendmsgAncillaryGeneratorcCs(|j|jtgdd�gD��tt��dS)Ncss|]
}|VqdS)Nr)r�r�rrr
r��sz>SendmsgTests._testSendmsgAncillaryGenerator.<locals>.<genexpr>)r�rr�rU)rrrr
�_testSendmsgAncillaryGenerator�sz+SendmsgTests._testSendmsgAncillaryGeneratorcCs|j|jjtt��t�dS)N)r�r,r�rUr�)rrrr
�testSendmsgArray�szSendmsgTests.testSendmsgArraycCs$|j|jtjdt�g�tt��dS)N�B)r�r�arrayr�rU)rrrr
�_testSendmsgArray�szSendmsgTests._testSendmsgArraycCs|j|jjtt��t�dS)N)r�r,r�rUr�)rrrr
�testSendmsgGather�szSendmsgTests.testSendmsgGathercCs.|j|jtdd�tdd�g�tt��dS)Nr)r�rr�rU)rrrr
�_testSendmsgGather�szSendmsgTests._testSendmsgGathercCs|j|jjd�d�dS)Ni�sdone)r�r,r�)rrrr
�testSendmsgBadArgs�szSendmsgTests.testSendmsgBadArgscCs�|jt|jj�|jt|jd�|jt|jt��|jt|jt�g�|jt|jtt�g�|jt|jtgt��|jt|jtggt��|jt|jtggdt��|jd�dS)Nsnot in an iterablersdone)r�r`rr�r�objectr�r)rrrr
�_testSendmsgBadArgs�s 







z SendmsgTests._testSendmsgBadArgscCs|j|jjd�d�dS)Ni�sdone)r�r,r�)rrrr
�testSendmsgBadCmsg�szSendmsgTests.testSendmsgBadCmsgcCs�|jt|jtgt�g�|jt|jtgt�ddfg�|jt|jtgdt�dfg�|jt|jtgddt�fg�|jt|jtgdg�|jt|jtgdg�|jd�dS)Nr�data�*sdone)rr)rrr@rA)r�r`rr�r=r)rrrr
�_testSendmsgBadCmsg�s





z SendmsgTests._testSendmsgBadCmsg�
CMSG_SPACEcCs|j|jjd�d�dS)Ni�sdone)r�r,r�)rrrr
�testSendmsgBadMultiCmsg�sz$SendmsgTests.testSendmsgBadMultiCmsgcCsB|jt|jtgdddg�|jt|jtgdt�g�|jd�dS)Nrr�sdone)rrr�)r�r`rr�r=r)rrrr
�_testSendmsgBadMultiCmsg�s


z%SendmsgTests._testSendmsgBadMultiCmsgcCs|j|jjd�d�dS)Ni�sdone)r�r,r�)rrrr
�testSendmsgExcessCmsgReject�sz(SendmsgTests.testSendmsgExcessCmsgRejectc
CsNttd�s@|jt��}|jtgddg�WdQRX|j|jj�|j	d�dS)NrCrr�sdone)rrr�)rrr�)
r_rr�r	rr��assertIsNoner�r�r)rr�rrr
�_testSendmsgExcessCmsgReject�s

z)SendmsgTests._testSendmsgExcessCmsgRejectcCsdS)Nr)rrrr
�testSendmsgAfterClose�sz"SendmsgTests.testSendmsgAfterClosecCs |jj�|jt|jtg�dS)N)rr
r�r	rr�)rrrr
�_testSendmsgAfterClose�s
z#SendmsgTests._testSendmsgAfterCloseN)rr r!r0r1r2r3r4r5r6r9r:r;r<r>r?rBr�rrDr�rErFrHrIrJrrrr
r/is(r/c@sReZdZdd�Zdd�Zdd�Zdd�Zeej	dkd
�dd��Z
e
jd
d��ZdS)�SendmsgStreamTestscCs|j|jjtt��t�dS)N)r�r,r�rUr�)rrrr
�testSendmsgExplicitNoneAddr�sz.SendmsgStreamTests.testSendmsgExplicitNoneAddrcCs"|j|jtggdd�tt��dS)Nr)r�rr�rU)rrrr
�_testSendmsgExplicitNoneAddr�sz/SendmsgStreamTests._testSendmsgExplicitNoneAddrcCs2|j|jjd�dd�|j|jj|jd��dS)Ni�a)rj)r�r,r�r�r
rVr!)rrrr
�testSendmsgTimeout�sz%SendmsgStreamTests.testSendmsgTimeoutcCs�zz|jjd�yx|jddg�qWWnDtjk
r>Yn:tk
rl}z|jtjkr\�WYdd}~XnX|jd�Wd|j	j
�XdS)Ng���Q��?rNizsocket.timeout not raised)rrArrrjr	r��ENOMEMr�r
rC)rrYrrr
�_testSendmsgTimeout�sz&SendmsgStreamTests._testSendmsgTimeoutrz<MSG_DONTWAIT not known to work on this platform when sendingcCs2|j|jjd�dd�|j|jj|jd��dS)NirN)rj)r�r,r�r�r
rVr!)rrrr
�testSendmsgDontWait	sz&SendmsgStreamTests.testSendmsgDontWaitcCsdzR|jt��"}x|jddggtj�qWWdQRX|j|jjtjtj	tj
f�Wd|jj�XdS)NrNi)
r�r	rrZMSG_DONTWAITr�r�r�ZEAGAINZEWOULDBLOCKrPr
rC)rr�rrr
�_testSendmsgDontWait	s$
z'SendmsgStreamTests._testSendmsgDontWaitN>r)
rr r!rLrMrOrQr�r�rrRr�rSrrrr
rK�s
rKc@seZdZdd�Zdd�ZdS)�SendmsgConnectionlessTestscCsdS)Nr)rrrr
�testSendmsgNoDestAddr"	sz0SendmsgConnectionlessTests.testSendmsgNoDestAddrcCs2|jt|jjtg�|jt|jjtggdd�dS)Nr)r�r	rr�r�)rrrr
�_testSendmsgNoDestAddr'	sz1SendmsgConnectionlessTests._testSendmsgNoDestAddrN)rr r!rUrVrrrr
rT	srTc@s�eZdZdd�Zdd�Zdd�Zdd�Zd	d
�Zdd�Ze	j
d
�dd��Ze	j
d
�dd��Zdd�Z
dd�Zdd�Zdd�Zdd�Zdd�Zdd�Zd d!�Zeed"�d#d$��Zejd%d&��Zeejd'�d(d)��Zejd*d+��Zd,S)-�RecvmsgGenericTestscCsR|j|jtt��\}}}}|j|t�|j||j�|j|g�|j|dd�dS)NT)r)rr,rUr�r�rrmr )rr�r�rRrrrrr
�testRecvmsg2	s
zRecvmsgGenericTests.testRecvmsgcCs|jt�dS)N)rr�)rrrr
�_testRecvmsg:	sz RecvmsgGenericTests._testRecvmsgcCsV|j|jtt�dd�\}}}}|j|t�|j||j�|j|g�|j|dd�dS)NrT)r)rr,rUr�r�rrmr )rr�r�rRrrrrr
�testRecvmsgExplicitDefaults=	sz/RecvmsgGenericTests.testRecvmsgExplicitDefaultscCs|jt�dS)N)rr�)rrrr
�_testRecvmsgExplicitDefaultsF	sz0RecvmsgGenericTests._testRecvmsgExplicitDefaultscCsV|j|jtt�d�\}}}}|j|t�|j||j�|j|g�|j|dd�dS)NrAT)r)rr,rUr�r�rrmr )rr�r�rRrrrrr
�testRecvmsgShorterI	sz&RecvmsgGenericTests.testRecvmsgShortercCs|jt�dS)N)rr�)rrrr
�_testRecvmsgShorterR	sz'RecvmsgGenericTests._testRecvmsgShorterr3cCs^|j|jtt�d�\}}}}|j|tdd��|j||j�|j|g�|j|dd�dS)NrF)rr	)rr,rUr�r�rrmr )rr�r�rRrrrrr
�testRecvmsgTruncW	sz$RecvmsgGenericTests.testRecvmsgTrunccCs|jt�dS)N)rr�)rrrr
�_testRecvmsgTrunca	sz%RecvmsgGenericTests._testRecvmsgTrunccCsT|j|jtt�d�\}}}}|j|t�|j||j�|j|g�|j|dd�dS)NrET)r)rr,rUr�r�rrmr )rr�r�rRrrrrr
�testRecvmsgShortAncillaryBufe	sz0RecvmsgGenericTests.testRecvmsgShortAncillaryBufcCs|jt�dS)N)rr�)rrrr
�_testRecvmsgShortAncillaryBufn	sz1RecvmsgGenericTests._testRecvmsgShortAncillaryBufcCsT|j|jtt�d�\}}}}|j|t�|j||j�|j|g�|j|dd�dS)Ni(T)r)rr,rUr�r�rrmr )rr�r�rRrrrrr
�testRecvmsgLongAncillaryBufq	sz/RecvmsgGenericTests.testRecvmsgLongAncillaryBufcCs|jt�dS)N)rr�)rrrr
�_testRecvmsgLongAncillaryBufz	sz0RecvmsgGenericTests._testRecvmsgLongAncillaryBufcCs"|jj�|jt|j|jd�dS)Ni)r,r
r�r	r)rrrr
�testRecvmsgAfterClose}	s
z)RecvmsgGenericTests.testRecvmsgAfterClosecCsdS)Nr)rrrr
�_testRecvmsgAfterClose�	sz*RecvmsgGenericTests._testRecvmsgAfterClosecCs<z*|jjd�|jtj|j|jtt��Wd|jj	�XdS)Ng���Q��?)
r,rAr�rrjrrUr�r
rC)rrrr
�testRecvmsgTimeout�	s
z&RecvmsgGenericTests.testRecvmsgTimeoutcCs|j|jj|jd��dS)N)rj)r�r
rVr!)rrrr
�_testRecvmsgTimeout�	sz'RecvmsgGenericTests._testRecvmsgTimeoutr�cCs|j|jtt�ddtj�\}}}}|j|tdd��|j||j�|j|g�|j	|dt
tdd�d�|j|jtt�dtj�\}}}}|j|t�|j||j�|j|g�|j	|dd�|j|jtt��\}}}}|j|t�|j||j�|j|g�|j	|dd�dS)	NrrFr()rrT)rr	)rr,rUr�rr�r�rrmr rR)rr�r�rRrrrrr
�testRecvmsgPeek�	s(z#RecvmsgGenericTests.testRecvmsgPeekcCs|jt�dS)N)rr�)rrrr
�_testRecvmsgPeek�	sz$RecvmsgGenericTests._testRecvmsgPeekr�cCs`|jj|j�|j|jtt��\}}}}|j|t�|j||j�|j|g�|j	|dd�dS)NT)r)
r,rAr!rrUr�r�rrmr )rr�r�rRrrrrr
�testRecvmsgFromSendmsg�	sz*RecvmsgGenericTests.testRecvmsgFromSendmsgcCs.|j|jtdd�tdd�g�tt��dS)Nr)r�rr�rU)rrrr
�_testRecvmsgFromSendmsg�	sz+RecvmsgGenericTests._testRecvmsgFromSendmsgN)rr r!rXrYrZr[r\r]rZrequires_freebsd_versionr^r_r`rarbrcrdrerfrgr�rrhr�rirjrkrrrr
rW.	s(		
			#rWc@s6eZdZejd�dd��Zdd�Zdd�Zdd	�Zd
S)�RecvmsgGenericStreamTestsz)fails intermittently when run within KojicCsN|j|jd�\}}}}|j|d�|j||j�|j|g�|j|dd�dS)Nir�)r)rr,r�rrmr )rr�r�rRrrrrr
�testRecvmsgEOF�	s
z(RecvmsgGenericStreamTests.testRecvmsgEOFcCs|jj�dS)N)rr
)rrrr
�_testRecvmsgEOF�	sz)RecvmsgGenericStreamTests._testRecvmsgEOFcCs�|j|jtt�d�\}}}}|j||j�|j|g�|j|dd�|j|jd�\}}}}|j||j�|j|g�|j|dd�||}|j|t�dS)NrF)riT)rr,rUr�rrmr�r )rr�r�rRrrr�r�rrr
�testRecvmsgOverflow�	sz-RecvmsgGenericStreamTests.testRecvmsgOverflowcCs|jt�dS)N)rr�)rrrr
�_testRecvmsgOverflow�	sz.RecvmsgGenericStreamTests._testRecvmsgOverflowN)	rr r!rvZ_skipInRpmBuildrmrnrorprrrr
rl�	s	rlc@seZdZdd�Zdd�ZdS)�RecvmsgTestscCs|jt|jj�|jt|jjddd�|jt|jjtt�dd�|jt|jjtd�gdd�|jt|jjt�dd�|jt|jjtt�t�d�|jt|jjtt�dt��|jjtt�dd�\}}}}|j	|t�|j
||j�|j	|g�|j|dd�dS)NrErrT)rrr)
r�r`r,r�rrUr�r2r=r�rrmr )rr�r�rRrrrrr
�testRecvmsgBadArgs�	s$
zRecvmsgTests.testRecvmsgBadArgscCs|jt�dS)N)rr�)rrrr
�_testRecvmsgBadArgs
sz RecvmsgTests._testRecvmsgBadArgsN)rr r!rrrsrrrr
rq�	srqc@sLeZdZdd�Zdd�Zdd�Zdd�Zd	d
�Zdd�Zd
d�Z	dd�Z
dS)�RecvmsgIntoTestscCsLttt��}|jt|jj�|jt|jjtt�dd�|jt|jj|dd�|jt|jjt�gdd�|jt|jjdgdd�|jt|jj|t�gdd�|jt|jj|gdd�|jt|jj|gt�d�|jt|jj|gdt��|jj|gdd�\}}}}|j	|tt��|j	|tt��|j
||j�|j	|g�|j|dd�dS)NrsI'm not writablerET)rr)
r2rUr�r�r`r,r#r=rr�rrmr )rr&�nbytesr�rRrrrrr
�testRecvmsgIntoBadArgs
s0
z'RecvmsgIntoTests.testRecvmsgIntoBadArgscCs|jt�dS)N)rr�)rrrr
�_testRecvmsgIntoBadArgs(
sz(RecvmsgIntoTests._testRecvmsgIntoBadArgscCsxttt��}|jjdd�|gD��\}}}}|j|tt��|j|tt��|j||j�|j|g�|j|dd�dS)Ncss|]
}|VqdS)Nr)r�r�rrr
r�/
sz<RecvmsgIntoTests.testRecvmsgIntoGenerator.<locals>.<genexpr>T)r)	r2rUr�r,r#r�rrmr )rr&rur�rRrrrrr
�testRecvmsgIntoGenerator+
sz)RecvmsgIntoTests.testRecvmsgIntoGeneratorcCs|jt�dS)N)rr�)rrrr
�_testRecvmsgIntoGenerator6
sz*RecvmsgIntoTests._testRecvmsgIntoGeneratorcCsxtjddgtt��}|jj|g�\}}}}|j|tt��|j|j�t�|j||j�|j|g�|j	|dd�dS)Nr7rT)r)
r8rUr�r,r#r��tobytesrrmr )rr&rur�rRrrrrr
�testRecvmsgIntoArray9
sz%RecvmsgIntoTests.testRecvmsgIntoArraycCs|jt�dS)N)rr�)rrrr
�_testRecvmsgIntoArrayC
sz&RecvmsgIntoTests._testRecvmsgIntoArraycCs�td�}td�}td�}|jj|t|�dd�|g�\}}}}|j|td��|j|td��|j|td��|j|td	��|j||j�|j|g�|j|d
d�dS)Ns----s
0123456789s--------------r��	sMary had a little lambsMarys
01 had a 9slittle lamb---T)r)	r2r,r#�
memoryviewr�rUrrmr )rZb1Zb2Zb3rur�rRrrrrr
�testRecvmsgIntoScatterF
s z'RecvmsgIntoTests.testRecvmsgIntoScattercCs|jd�dS)NsMary had a little lamb)r)rrrr
�_testRecvmsgIntoScatterU
sz(RecvmsgIntoTests._testRecvmsgIntoScatterN)rr r!rvrwrxryr{r|rr�rrrr
rt	
s
rtc@sbeZdZyddlZWnek
r,dZYnXedej�Zee	d�dd��Z
ee	d�dd	��ZdS)
�CmsgMacroTestsrNi����CMSG_LENcCs�|jtjd�d}ttd��tt|d|��}|jtjd�tjd�jd�x:|D]2}tj|�}|j|tjd�|�|j	||j�qVW|j
ttjd�|j
ttj|�|j
ttjtj
�dS)NrrEirr�r)�socklen_t_limitrr��listr�r�r8�itemsizer�r%r�rr��maxsize)r�toobig�values�n�retrrr
�testCMSG_LENf
s

zCmsgMacroTests.testCMSG_LENrCcCs�|jtjd�d}ttd��tt|d|��}tjd�}|j|tjd�jd�x\|D]T}tj|�}|j||�|j|tj	|��|j||tj	d��|j
||j�|}qZW|jttjd�|jttj|�|jttjt
j�dS)NrEirrr�r)r�rrCr�r�r�r8r�r$r�r%r�rr�r�)rr�r�Zlastr�r�rrr
�testCMSG_SPACE{
s


zCmsgMacroTests.testCMSG_SPACE)rr r!r�r,r��minr�r�rr�r�rrrr
r�Y
s
r�c@sheZdZdeZdd�Zdd�Zdd�Zdd	�Zd
d�Zdfdd�Z	dd�Z
dd�Zdd�Zdd�Z
eed�dd��Zejdd��Zdd�Zdd �Zejejd!kd"�ejejjd#�d$�eed�d%d&����Zejejejd!kd"�ejejjd#�d$�d'd(����Zejejd!kd"�ejejjd#�d$�eed�d)d*����Zejejejd!kd"�ejejjd#�d$�d+d,����Zd-d.�Zejejd!kd/�d0d1��Zd2d3�Z d4d5�Z!d6d7�Z"eed�d8d9��Z#e#jd:d;��Z$dgd<d=�Z%d>d?�Z&d@dA�Z'dBdC�Z(dDdE�Z)dFdG�Z*dHdI�Z+dJdK�Z,dLdM�Z-dNdO�Z.dPdQ�Z/dhdRdS�Z0dTdU�Z1dVdW�Z2dXdY�Z3dZd[�Z4d\d]�Z5d^d_�Z6d`da�Z7dbdc�Z8ddS)i�
SCMRightsTestiUUcCs`g}xVt|�D]J}tj�\}}|jtj|�|jtj|�tj|t|�j	��|j
|�qW|S)N)r�r�r�r-r�r�r
�writer��encode�append)rr��fdsrr�r�rrr
�newFDs�
szSCMRightsTest.newFDscCsFx@t|�D]4\}}tj|dtj�|jtj|d�t|�j��q
WdS)Nri)�	enumerater��lseek�SEEK_SETr�r�r�r�)rr�r�r�rrr
�checkFDs�
szSCMRightsTest.checkFDscCs|j|j|�dS)N)r-�closeRecvmsgFDs)rrrrr
r�
sz#SCMRightsTest.registerRecvmsgResultcCsvxp|dD]d\}}}|tjkr
|tjkr
tjd�}|j|dt|�t|�|j��x|D]}tj|�q\Wq
WdS)NrEr)	rr��
SCM_RIGHTSr8�	frombytesrUr�r�r
)rZrecvmsg_result�
cmsg_level�	cmsg_type�	cmsg_datar�r�rrr
r��
s



zSCMRightsTest.closeRecvmsgFDsc	Cs8|j|jtgtjtjtjd|j|��fg�tt��dS)Nr)	r�rr�rr�r�r8r�rU)rr�rrr
�createAndSendFDs�
szSCMRightsTest.createAndSendFDsrErcCs�|\}}}}|j|t�|j||j�|j|dtj|d�|j|t�|j	t
|�|�tjd�}	xh|D]`}
|j|
t�|
\}}}
|j|tj
�|j|tj�|j|
t�|jt
|
�td�|	j|
�qfW|jt
|	�|�|j|	�dS)NT)rrrrr)r�r�rrmr rrr�r�r%rUr8�tupler�r�r��
SIZEOF_INTr�r�)rZnumfdsr�maxcmsgs�ignoreflagsr�r�rRrrr��itemr�r�r�rrr
�checkRecvmsgFDs�
s$


zSCMRightsTest.checkRecvmsgFDscCs |jd|j|jtt�d��dS)NrEi()r�rr,rUr�)rrrr
�testFDPassSimple�
szSCMRightsTest.testFDPassSimplec	Cs<|j|jtgtjtjtjd|jd��j�fg�t	t��dS)NrrE)
r�rr�rr�r�r8r�rzrU)rrrr
�_testFDPassSimple�
szSCMRightsTest._testFDPassSimplecCs |jd|j|jtt�d��dS)Nr�i()r�rr,rUr�)rrrr
�testMultipleFDPass�
sz SCMRightsTest.testMultipleFDPasscCs|jd�dS)Nr�)r�)rrrr
�_testMultipleFDPass�
sz!SCMRightsTest._testMultipleFDPassrCcCs*|jd|j|jtt�tjdt���dS)Nr�)r�rr,rUr�rrCr�)rrrr
�testFDPassCMSG_SPACE�
sz"SCMRightsTest.testFDPassCMSG_SPACEcCs|jd�dS)Nr�)r�)rrrr
�_testFDPassCMSG_SPACEsz#SCMRightsTest._testFDPassCMSG_SPACEcCs0|jd|j|jtt�tjdt��tjd�dS)NrEr�)r�)	r�rr,rUr�rr�r�r)rrrr
�testFDPassCMSG_LENsz SCMRightsTest.testFDPassCMSG_LENcCs|jd�dS)NrE)r�)rrrr
�_testFDPassCMSG_LENsz!SCMRightsTest._testFDPassCMSG_LENrzskipping, see issue #12958�aixzskipping, see issue #22397cCs$|jd|j|jtt�d�dd�dS)Nr�i()r�)r�rr,rUr�)rrrr
�testFDPassSeparatesz SCMRightsTest.testFDPassSeparatec	CsX|jd�\}}|j|jtgtjtjtjd|g�ftjtjtjd|g�fg�tt��dS)Nr�r)	r�r�rr�rr�r�r8rU)r�fd0�fd1rrr
�_testFDPassSeparatesz!SCMRightsTest._testFDPassSeparatec	Cs@d}|j||j|jtt�tjt�tjt|��dtj	d�dS)Nr�)r�r�)
r�rr,rUr�rrCr�r�r)rZnum_fdsrrr
�testFDPassSeparateMinSpace)sz(SCMRightsTest.testFDPassSeparateMinSpacec	CsX|jd�\}}|j|jtgtjtjtjd|g�ftjtjtjd|g�fg�tt��dS)Nr�r)	r�r�rr�rr�r�r8rU)rr�r�rrr
�_testFDPassSeparateMinSpace6sz)SCMRightsTest._testFDPassSeparateMinSpacecCsdy|j|g|�}Wn<tk
rN}z |j|jt�|j|g�}WYdd}~XnX|j|t|��dS)N)rr	r�r�r�r�rU)rr�r�rurarrr
�sendAncillaryIfPossibleDsz%SCMRightsTest.sendAncillaryIfPossiblezsee issue #24725cCs&|jd|j|jtt�d�tjd�dS)Nri()r�)r�rr,rUr�rr)rrrr
�testFDPassEmptyOs
zSCMRightsTest.testFDPassEmptycCs|jttjtjdfg�dS)Nr�)r�r�rr�r�)rrrr
�_testFDPassEmptyWs
zSCMRightsTest._testFDPassEmptycCs�|j|jtt�d�\}}}}|j|t�|j||j�|j|dtj	d�|j
t|�d�x>|D]6\}}}|j|tj�|j|tj�|j
t|�t�q^WdS)Ni(T)rrrE)rr,rUr�r�rrmr rrr%r�r��
assertLessr�)rr�r�rRrrr�r�r�rrr
�testFDPassPartialInt\sz"SCMRightsTest.testFDPassPartialIntcCs4|jttjtjtjd|jg�j�dd�fg�dS)NrrEr)r�r�rr�r�r8�badfdrz)rrrr
�_testFDPassPartialIntis
z#SCMRightsTest._testFDPassPartialIntc	Cs�|j|jtt�d�\}}}}|j|t�|j||j�|j|dtj	d�|j
t|�d�tjd�}xR|D]J\}}}|j|tj�|j|tj
�|j|dt|�t|�|j��qhW|j
t|�d�|j|�dS)Ni(T)rrr�r)rr,rUr�r�rrmr rrr%r8r�r�r�r�r�)	rr�r�rRrrr�r�r�r�rrr
�testFDPassPartialIntInMiddleps
 z*SCMRightsTest.testFDPassPartialIntInMiddlecCsZ|jd�\}}|jttjtjtjd||jg�j�dd�ftjtjtjd|g�fg�dS)Nr�rrEr)	r�r�r�rr�r�r8r�rz)rr�r�rrr
�_testFDPassPartialIntInMiddle�sz+SCMRightsTest._testFDPassPartialIntInMiddlecCsJ|\}}}}|j|t�|j||j�|j|g�|j|dtj|d�dS)NT)rrr)r�r�rrmr rr)rrr�r�r�rRrrrrr
�checkTruncatedHeader�sz"SCMRightsTest.checkTruncatedHeadercCs"|j|j|jtt��tjd�dS)N)r�)r�rr,rUr�rr)rrrr
�testCmsgTruncNoBufSize�sz$SCMRightsTest.testCmsgTruncNoBufSizecCs|jd�dS)NrE)r�)rrrr
�_testCmsgTruncNoBufSize�sz%SCMRightsTest._testCmsgTruncNoBufSizecCs$|j|j|jtt�d�tjd�dS)Nr)r�)r�rr,rUr�rr)rrrr
�testCmsgTrunc0�szSCMRightsTest.testCmsgTrunc0cCs|jd�dS)NrE)r�)rrrr
�_testCmsgTrunc0�szSCMRightsTest._testCmsgTrunc0cCs|j|j|jtt�d��dS)NrE)r�rr,rUr�)rrrr
�testCmsgTrunc1�szSCMRightsTest.testCmsgTrunc1cCs|jd�dS)NrE)r�)rrrr
�_testCmsgTrunc1�szSCMRightsTest._testCmsgTrunc1cCs"|j|j|jtt�td��dS)Nr�)r�rr,rUr�r�)rrrr
�testCmsgTrunc2Int�szSCMRightsTest.testCmsgTrunc2IntcCs|jd�dS)NrE)r�)rrrr
�_testCmsgTrunc2Int�sz SCMRightsTest._testCmsgTrunc2IntcCs(|j|j|jtt�tjd�d��dS)NrrE)r�rr,rUr�rr�)rrrr
�testCmsgTruncLen0Minus1�sz%SCMRightsTest.testCmsgTruncLen0Minus1cCs|jd�dS)NrE)r�)rrrr
�_testCmsgTruncLen0Minus1�sz&SCMRightsTest._testCmsgTruncLen0Minus1cCs�|j|jtt�|�\}}}}|j|t�|j||j�|j|dtj	d�|dkr\|gkr\dS|jt|�d�|d\}}	}
|j|tj
�|j|	tj�|jt|
�|�|j
t|
�|�tjd�}|j|
dt|
�t|
�|j��|j|�dS)NT)rrrrEr)rr,rUr�r�rrmr rrr�r�r$r%r8r�r�r�)r�ancbuf�maxdataZmindatar�r�rRrrr�r�r�r�rrr
�checkTruncatedArray�s"
z!SCMRightsTest.checkTruncatedArraycCs|jtjd�dd�dS)Nr)r�r�)r�rr�)rrrr
�testCmsgTruncLen0�szSCMRightsTest.testCmsgTruncLen0cCs|jd�dS)NrE)r�)rrrr
�_testCmsgTruncLen0�sz SCMRightsTest._testCmsgTruncLen0cCs|jtjd�ddd�dS)NrrE)r�r�)r�rr�)rrrr
�testCmsgTruncLen0Plus1�sz$SCMRightsTest.testCmsgTruncLen0Plus1cCs|jd�dS)Nr�)r�)rrrr
�_testCmsgTruncLen0Plus1�sz%SCMRightsTest._testCmsgTruncLen0Plus1cCs|jtjt�td�dS)N)r�r�)r�rr�r�)rrrr
�testCmsgTruncLen1�szSCMRightsTest.testCmsgTruncLen1cCs|jd�dS)Nr�)r�)rrrr
�_testCmsgTruncLen1�sz SCMRightsTest._testCmsgTruncLen1cCs(|jtjdt�ddtdd�dS)Nr�rE)r�r�)r�rr�r�)rrrr
�testCmsgTruncLen2Minus1�sz%SCMRightsTest.testCmsgTruncLen2Minus1cCs|jd�dS)Nr�)r�)rrrr
�_testCmsgTruncLen2Minus1�sz&SCMRightsTest._testCmsgTruncLen2Minus1Ni����)rEr)r)r)9rr r!r�r�r�rr�r�r�r�r�r�r�r�rr�r�r�r�r�rvr�r�rrr�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��
sl

	
  


	
r�c@seZdZdZd^Zdd�Zd_dd�Zeed	d
�dd��Z	e	j
d
d��Zeedd	d
�dd��Zej
dd��Z
eejd�eed	d
�dd���Zej
dd��Zd`dd�Zeed	d
dd�dd��Zej
dd ��Zeedd	d
dd�d!d"��Zej
d#d$��Zeejd�eedd	d
dd�d%d&���Zej
d'd(��Zeejd�eedd	d
dd�d)d*���Zej
d+d,��Zdad-d.�Zeed	d
�d/d0��Zej
d1d2��Zeed	d
�d3d4��Zej
d5d6��Zeed	d
�d7d8��Zej
d9d:��Zeed	d
�d;d<��Z e j
d=d>��Z!eed	d
�d?d@��Z"e"j
dAdB��Z#eed	d
�dCdD��Z$e$j
dEdF��Z%dbdGdH�Z&eedd	d
dd�dIdJ��Z'e'j
dKdL��Z(eedd	d
dd�dMdN��Z)e)j
dOdP��Z*eedd	d
dd�dQdR��Z+e+j
dSdT��Z,eedd	d
dd�dUdV��Z-e-j
dWdX��Z.eedd	d
dd�dYdZ��Z/e/j
d[d\��Z0d]S)c�RFC3542AncillaryTestr�rEcCs8i}x.|D]&\}}}|j||f|�||||f<q
W|S)N)r�)rr��dr�r�r�rrr
�ancillaryMappings
z%RFC3542AncillaryTest.ancillaryMappingr�rcCs|jjtjtjd�|jj�|j|jtt	�|�\}}}}|j
|t	�|j||j�|j
|dtj|d�|j
t|�d�|j|dt�|d\}}	}
|j
|tj�|j
|	tj�|j|
t�|j
t|
�t�tjd�}|j|
�|j|dd�|j|d|�dS)NrET)rrrrr)r,r?r�IPPROTO_IPV6�IPV6_RECVHOPLIMITr
rCrrUr�r�rrmr rr�r��
IPV6_HOPLIMITr�r�r8r�r$r%)r�
ancbufsize�maxhopr�r�r�rRrrr�r�r�r$rrr
�
checkHopLimits(




z"RFC3542AncillaryTest.checkHopLimitr�r�cCs|jdd�dS)Ni()r�)r�)rrrr
�testRecvHopLimit4sz%RFC3542AncillaryTest.testRecvHopLimitcCs$|j|jj|jd��|jt�dS)N)rj)r�r
rVr!rr�)rrrr
�_testRecvHopLimit9sz&RFC3542AncillaryTest._testRecvHopLimitrCcCs|jtjt�d�dS)N)r�)r�rrCr�)rrrr
�testRecvHopLimitCMSG_SPACEAsz/RFC3542AncillaryTest.testRecvHopLimitCMSG_SPACEcCs$|j|jj|jd��|jt�dS)N)rj)r�r
rVr!rr�)rrrr
�_testRecvHopLimitCMSG_SPACEFsz0RFC3542AncillaryTest._testRecvHopLimitCMSG_SPACEr�cCs|jd|jd�dS)Ni()r�r�)r��	hop_limit)rrrr
�testSetHopLimitPsz$RFC3542AncillaryTest.testSetHopLimitcCsL|j|jj|jd��|j|jtgtjtj	t
j
d|jg�fg�tt��dS)N)rjr)
r�r
rVr!r�rr�rr�r�r8r�rU)rrrr
�_testSetHopLimitWsz%RFC3542AncillaryTest._testSetHopLimitcCsB|jjtjtjd�|jjtjtjd�|jj�|j|jt	t
�|�\}}}}|j|t
�|j||j
�|j|dtj|d�|jt	|�d�|j|�}|tjtjf}	|jt	|	�t�tjd�}
|
j|	�|j|
dd�|j|
dd�|tjtjf}|jt	|�t�tjd�}
|
j|�|j|
dd�|j|
d|�dS)NrET)rrrr�rrr�)r,r?rr�r��IPV6_RECVTCLASSr
rCrrUr�r�rrmr rr��IPV6_TCLASSr�r8r�r$r%r�)rr�r�r�r�r�rRrrZancmapZtcdatar$Zhldatarrr
�checkTrafficClassAndHopLimit`s2









z1RFC3542AncillaryTest.checkTrafficClassAndHopLimitr�r�cCs|jdd�dS)Ni()r�)r�)rrrr
�testRecvTrafficClassAndHopLimit�sz4RFC3542AncillaryTest.testRecvTrafficClassAndHopLimitcCs$|j|jj|jd��|jt�dS)N)rj)r�r
rVr!rr�)rrrr
� _testRecvTrafficClassAndHopLimit�sz5RFC3542AncillaryTest._testRecvTrafficClassAndHopLimitcCs|jtjt�dd�dS)Nr�)r�)r�rrCr�)rrrr
�)testRecvTrafficClassAndHopLimitCMSG_SPACE�sz>RFC3542AncillaryTest.testRecvTrafficClassAndHopLimitCMSG_SPACEcCs$|j|jj|jd��|jt�dS)N)rj)r�r
rVr!rr�)rrrr
�*_testRecvTrafficClassAndHopLimitCMSG_SPACE�sz?RFC3542AncillaryTest._testRecvTrafficClassAndHopLimitCMSG_SPACEcCs|jd|jd�dS)Ni()r�r�)r�r�)rrrr
�testSetTrafficClassAndHopLimit�sz3RFC3542AncillaryTest.testSetTrafficClassAndHopLimitc	Csd|j|jj|jd��|j|jtgtjtj	t
j
d|jg�ftjtjt
j
d|j
g�fg�tt��dS)N)rjr)r�r
rVr!r�rr�rr�r�r8�
traffic_classr�r�rU)rrrr
�_testSetTrafficClassAndHopLimit�sz4RFC3542AncillaryTest._testSetTrafficClassAndHopLimitcCs|jd|jd�dS)Ni()r�r�)r�r�)rrrr
�testOddCmsgSize�sz$RFC3542AncillaryTest.testOddCmsgSizecCs�|j|jj|jd��yJ|jtgtjtjt	j	d|j
g�j�dftjtjt	j	d|j
g�fg�}Wn~tk
r�}zb|j|jt�|jtgtjtjt	j	d|j
g�ftjtjt	j	d|j
g�fg�}|j|tt��WYdd}~XnXdS)N)rjrr )r�r
rVr!rr�rr�r�r8r�rzr�r�r	r�r�r�r�rU)rrurarrr
�_testOddCmsgSize�s"z%RFC3542AncillaryTest._testOddCmsgSizecCs�|jjtjtjd�|jj�|dkr*fn|f}|j|jtt	�f|��\}}}}|j
|t	�|j||j�|j
|g�|j
|dtj|d�dS)NrET)rrr)r,r?rr�r�r
rCrrUr�r�rrmr r)rr�r�r*r�r�rRrrrrr
�checkHopLimitTruncatedHeader�s


z1RFC3542AncillaryTest.checkHopLimitTruncatedHeadercCs|jdtjd�dS)N)r�r�)r�rr)rrrr
r��sz+RFC3542AncillaryTest.testCmsgTruncNoBufSizecCs$|j|jj|jd��|jt�dS)N)rj)r�r
rVr!rr�)rrrr
r��sz,RFC3542AncillaryTest._testCmsgTruncNoBufSizecCs|jdtjd�dS)Nr)r�r�)r�rr)rrrr
�testSingleCmsgTrunc0�sz)RFC3542AncillaryTest.testSingleCmsgTrunc0cCs$|j|jj|jd��|jt�dS)N)rj)r�r
rVr!rr�)rrrr
�_testSingleCmsgTrunc0�sz*RFC3542AncillaryTest._testSingleCmsgTrunc0cCs|jdd�dS)NrE)r�)r�)rrrr
�testSingleCmsgTrunc1
sz)RFC3542AncillaryTest.testSingleCmsgTrunc1cCs$|j|jj|jd��|jt�dS)N)rj)r�r
rVr!rr�)rrrr
�_testSingleCmsgTrunc1
sz*RFC3542AncillaryTest._testSingleCmsgTrunc1cCs|jdtd�dS)Nr�)r�)r�r�)rrrr
�testSingleCmsgTrunc2Int
sz,RFC3542AncillaryTest.testSingleCmsgTrunc2IntcCs$|j|jj|jd��|jt�dS)N)rj)r�r
rVr!rr�)rrrr
�_testSingleCmsgTrunc2Int
sz-RFC3542AncillaryTest._testSingleCmsgTrunc2IntcCs|jtjd�dd�dS)NrrE)r�)r�rr�)rrrr
�testSingleCmsgTruncLen0Minus1
sz2RFC3542AncillaryTest.testSingleCmsgTruncLen0Minus1cCs$|j|jj|jd��|jt�dS)N)rj)r�r
rVr!rr�)rrrr
�_testSingleCmsgTruncLen0Minus1
sz3RFC3542AncillaryTest._testSingleCmsgTruncLen0Minus1cCs�|jjtjtjd�|jj�|j|jtt	�tj
t�d�\}}}}|j|t	�|j
||j�|j|dtjd�|jt|�d�|r�|d\}}}|j|tj�|j|tj�|jt|�t�dS)NrET)rrr)r,r?rr�r�r
rCrrUr�r�r�r�rrmr rr%r�r�)rr�r�rRrrr�r�r�rrr
�testSingleCmsgTruncInData
s


"z.RFC3542AncillaryTest.testSingleCmsgTruncInDatacCs$|j|jj|jd��|jt�dS)N)rj)r�r
rVr!rr�)rrrr
�_testSingleCmsgTruncInData4
sz/RFC3542AncillaryTest._testSingleCmsgTruncInDatacCs|jjtjtjd�|jjtjtjd�|jj�|j|jt	t
�|�\}}}}|j|t
�|j||j
�|j|dtj|d�|jt	|�d�|d\}}}	|j|tj�|j|tjtjh�|jt	|	�t�tjd�}
|
j|	�|j|
dd�|j|
dd�dS)NrET)rrrrrr�)r,r?rr�r�r�r
rCrrUr�r�rrmr rr�r�r�r�r8r�r$r%)rr�r�r�r�rRrrr�r�r�r$rrr
�checkTruncatedSecondHeader9
s(






z/RFC3542AncillaryTest.checkTruncatedSecondHeadercCs|jtjt�tjd�dS)N)r�)r�rrCr�r)rrrr
�testSecondCmsgTrunc0Y
sz)RFC3542AncillaryTest.testSecondCmsgTrunc0cCs$|j|jj|jd��|jt�dS)N)rj)r�r
rVr!rr�)rrrr
�_testSecondCmsgTrunc0_
sz*RFC3542AncillaryTest._testSecondCmsgTrunc0cCs|jtjt�d�dS)NrE)r�rrCr�)rrrr
�testSecondCmsgTrunc1d
sz)RFC3542AncillaryTest.testSecondCmsgTrunc1cCs$|j|jj|jd��|jt�dS)N)rj)r�r
rVr!rr�)rrrr
�_testSecondCmsgTrunc1i
sz*RFC3542AncillaryTest._testSecondCmsgTrunc1cCs|jtjt�dt�dS)Nr�)r�rrCr�)rrrr
�testSecondCmsgTrunc2Intn
sz,RFC3542AncillaryTest.testSecondCmsgTrunc2IntcCs$|j|jj|jd��|jt�dS)N)rj)r�r
rVr!rr�)rrrr
�_testSecondCmsgTrunc2Intt
sz-RFC3542AncillaryTest._testSecondCmsgTrunc2IntcCs"|jtjt�tjd�d�dS)NrrE)r�rrCr�r�)rrrr
�testSecondCmsgTruncLen0Minus1y
sz2RFC3542AncillaryTest.testSecondCmsgTruncLen0Minus1cCs$|j|jj|jd��|jt�dS)N)rj)r�r
rVr!rr�)rrrr
�_testSecondCmsgTruncLen0Minus1
sz3RFC3542AncillaryTest._testSecondCmsgTruncLen0Minus1c
CsT|jjtjtjd�|jjtjtjd�|jj�|j|jt	t
�tjt�tj
t�d�\}}}}|j|t
�|j||j�|j|dtjd�tjtjh}|jd�\}}}|j|tj�|j|�|jt	|�t�tjd�}	|	j|�|j|	dd�|j|	dd�|�rD|jd�\}}}|j|tj�|j|�|jt	|�t�|j|g�dS)NrET)rrrrr�)r,r?rr�r�r�r
rCrrUr�rCr�r�r�rrmr rr�r��pop�remover8r�r$r%r�)
rr�r�rRrrZ
cmsg_typesr�r�r�r$rrr
�testSecomdCmsgTruncInData�
s4





"



z.RFC3542AncillaryTest.testSecomdCmsgTruncInDatacCs$|j|jj|jd��|jt�dS)N)rj)r�r
rVr!rr�)rrrr
�_testSecomdCmsgTruncInData�
sz/RFC3542AncillaryTest._testSecomdCmsgTruncInDataNr)r�r)r�r)r)r)1rr r!r�r�r�r�r�rr�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�rrrrrrrrr
r��sp



	
#






 




$r�c@seZdZdS)�SendrecvmsgUDPTestBaseN)rr r!rrrr
r�
srr�c@seZdZdS)�SendmsgUDPTestN)rr r!rrrr
r�
srr�c@seZdZdS)�RecvmsgUDPTestN)rr r!rrrr
r	�
sr	r#c@seZdZdS)�RecvmsgIntoUDPTestN)rr r!rrrr
r
�
sr
c@seZdZdd�ZdS)�SendrecvmsgUDP6TestBasecCs |j|dd�|dd��dS)NrErr)r�)rrrrrr
r�
sz+SendrecvmsgUDP6TestBase.checkRecvmsgAddressN)rr r!rrrrr
r�
srzIPv6 required for this test.r�r#c@seZdZdS)�SendmsgUDP6TestN)rr r!rrrr
r�
src@seZdZdS)�RecvmsgUDP6TestN)rr r!rrrr
r
�
sr
c@seZdZdS)�RecvmsgIntoUDP6TestN)rr r!rrrr
r�
srr�c@seZdZdS)�RecvmsgRFC3542AncillaryUDP6TestN)rr r!rrrr
r�
src@seZdZdS)�#RecvmsgIntoRFC3542AncillaryUDP6TestN)rr r!rrrr
r�
src@seZdZdS)�SendrecvmsgTCPTestBaseN)rr r!rrrr
r�
src@seZdZdS)�SendmsgTCPTestN)rr r!rrrr
r�
src@seZdZdS)�RecvmsgTCPTestN)rr r!rrrr
rsrc@seZdZdS)�RecvmsgIntoTCPTestN)rr r!rrrr
rsrc@seZdZdS)�SendrecvmsgSCTPStreamTestBaseN)rr r!rrrr
rsrrrr�c@seZdZdS)�SendmsgSCTPStreamTestN)rr r!rrrr
rsrcseZdZ�fdd�Z�ZS)�RecvmsgSCTPStreamTestcsRytt|�j�Wn:tk
rL}z|jtjkr2�|jd�WYdd}~XnXdS)Nz4sporadic ENOTCONN (kernel issue?) - see issue #13876)r%rrmr	r��ENOTCONNr6)rra)r,rr
rmsz$RecvmsgSCTPStreamTest.testRecvmsgEOF)rr r!rmr/rr)r,r
rsrcseZdZ�fdd�Z�ZS)�RecvmsgIntoSCTPStreamTestcsRytt|�j�Wn:tk
rL}z|jtjkr2�|jd�WYdd}~XnXdS)Nz4sporadic ENOTCONN (kernel issue?) - see issue #13876)r%rrmr	r�rr6)rra)r,rr
rm-sz(RecvmsgIntoSCTPStreamTest.testRecvmsgEOF)rr r!rmr/rr)r,r
r'src@seZdZdS)�SendrecvmsgUnixStreamTestBaseN)rr r!rrrr
r6srr�c@seZdZdS)�SendmsgUnixStreamTestN)rr r!rrrr
r:src@seZdZdS)�RecvmsgUnixStreamTestN)rr r!rrrr
r@src@seZdZdS)�RecvmsgIntoUnixStreamTestN)rr r!rrrr
rGsrr�r�c@seZdZdS)�RecvmsgSCMRightsStreamTestN)rr r!rrrr
rNsrc@seZdZdS)�RecvmsgIntoSCMRightsStreamTestN)rr r!rrrr
rTsrcsDeZdZ�fdd�ZdZeed�r0dZdd�ZndZd	d�Z�Z	S)
�InterruptedTimeoutBasecs2t�j�tjtjdd��}|jtjtj|�dS)NcSsddS)NrErr)Zsignumr�rrr
r�isz.InterruptedTimeoutBase.setUp.<locals>.<lambda>)r%rrerfr-)rZorig_alrm_handler)r,rr
rfs

zInterruptedTimeoutBase.setUpg@�	setitimerg�������?cCstjtj|�dS)N)rer!�ITIMER_REAL)r�secondsrrr
�setAlarmuszInterruptedTimeoutBase.setAlarmr�cCstj|�dS)N)rer_)rr#rrr
r${s)
rr r!rrjr_re�
alarm_timer$r/rr)r,r
r as

r �siginterruptr_r!z+Don't have signal.alarm or signal.setitimercsleZdZ�fdd�Zdd�Zdd�Zdd�Zd	d
�Zdd�Ze	e
j
d
�dd��Ze	e
j
d�dd��Z�Z
S)�InterruptedRecvTimeoutTestcst�j�|jj|j�dS)N)r%rrrArj)r)r,rr
r�s
z InterruptedRecvTimeoutTest.setUpcOsBz0|j|j�|jt��}|||�WdQRXWd|jd�XdS)Nr)r$r%r�rg)rrr*r+r�rrr
�checkInterruptedRecv�s
z/InterruptedRecvTimeoutTest.checkInterruptedRecvcCs|j|jjd�dS)Ni)r(rr�)rrrr
�testInterruptedRecvTimeout�sz5InterruptedRecvTimeoutTest.testInterruptedRecvTimeoutcCs|j|jjtd��dS)Ni)r(r�	recv_intor2)rrrr
�testInterruptedRecvIntoTimeout�sz9InterruptedRecvTimeoutTest.testInterruptedRecvIntoTimeoutcCs|j|jjd�dS)Ni)r(rr�)rrrr
�testInterruptedRecvfromTimeout�sz9InterruptedRecvTimeoutTest.testInterruptedRecvfromTimeoutcCs|j|jjtd��dS)Ni)r(r�
recvfrom_intor2)rrrr
�"testInterruptedRecvfromIntoTimeout�sz=InterruptedRecvTimeoutTest.testInterruptedRecvfromIntoTimeoutr�cCs|j|jjd�dS)Ni)r(rr�)rrrr
�testInterruptedRecvmsgTimeout�sz8InterruptedRecvTimeoutTest.testInterruptedRecvmsgTimeoutr#cCs|j|jjtd�g�dS)Ni)r(rr#r2)rrrr
�!testInterruptedRecvmsgIntoTimeout�sz<InterruptedRecvTimeoutTest.testInterruptedRecvmsgIntoTimeout)rr r!rr(r)r+r,r.r�rr/r0r/rr)r,r
r'�s
r'csteZdZ�fdd�Zdd�Zdd�Zejdd�d	d
��Zejdd�dd��Z	ejdd�e
ejd
�dd���Z�Z
S)�InterruptedSendTimeoutTestcspt�j�|j�|_|j|jj�tj|jd�}|j	�|j
j�\|_}|j|jj�|j
�|jj|j�dS)N)�target)r%rrzrtr-r
r'ZThread�	doConnect�startrrorpr�rArj)rZ
cli_threadrr)r,rr
r�s

z InterruptedSendTimeoutTest.setUpcCs|jj|j�dS)N)rtrsr})rrrr
r3�sz$InterruptedSendTimeoutTest.doConnectcOsHz6|jt��"}x|j|j�|||�qWWdQRXWd|jd�XdS)Nr)r�rgr$r%)rrr*r+r�rrr
�checkInterruptedSend�sz/InterruptedSendTimeoutTest.checkInterruptedSendrr�cCs|j|jjdd�dS)NrNi)r5rtrB)rrrr
�testInterruptedSendTimeout�sz5InterruptedSendTimeoutTest.testInterruptedSendTimeoutcCs|j|jjdd|j�dS)NrNi)r5rtr�r})rrrr
�testInterruptedSendtoTimeout�sz7InterruptedSendTimeoutTest.testInterruptedSendtoTimeoutr�cCs|j|jjddg�dS)NrNi)r5rtr�)rrrr
�testInterruptedSendmsgTimeout�sz8InterruptedSendTimeoutTest.testInterruptedSendmsgTimeout)rr r!rr3r5rZrequires_mac_verr6r7r�rr8r/rr)r,r
r1�s

	
r1c@seZdZdd�Zdd�ZdS)�
TCPCloserTestcCsh|jj�\}}|j�|j}tj|gggd�\}}}|j||g�|j|jd�d�|j�|j�dS)Ng�?rEr�)rror
rgr�r�r�)rrqrr�sdr�r�r�rrr
�	testClose�szTCPCloserTest.testClosecCs |jjt|jf�tjd�dS)Ng�?)rgrsrkr�time�sleep)rrrr
�
_testClose�szTCPCloserTest._testCloseN)rr r!r;r>rrrr
r9�s
r9c@sNeZdZddd�Zdd�Zdd�Zdd	�Zd
d�Zdd
�Zdd�Z	dd�Z
dS)�BasicSocketPairTestrecCstj||d�dS)N)rf)rur&)rrfrrr
r&�szBasicSocketPairTest.__init__cCs\|j|tj�ttd�r*|j|jtj�n|j|jtj�|j|jtj�|j|j	d�dS)Nr�r)
r�rr_r�r�r�rr�rr�)rr�rrr
�_check_defaultss
z#BasicSocketPairTest._check_defaultscCs|j|j�dS)N)r@rg)rrrr
�
_testDefaultssz!BasicSocketPairTest._testDefaultscCs|j|j�dS)N)r@r)rrrr
�testDefaultssz BasicSocketPairTest.testDefaultscCs|jjd�}|j|t�dS)Ni)rr�r�r�)rr�rrr
r�szBasicSocketPairTest.testRecvcCs|jjt�dS)N)rgrBr�)rrrr
r�szBasicSocketPairTest._testRecvcCs|jjt�dS)N)rrBr�)rrrr
�testSendszBasicSocketPairTest.testSendcCs|jjd�}|j|t�dS)Ni)rgr�r�r�)rr�rrr
�	_testSendszBasicSocketPairTest._testSendN)re)rr r!r&r@rArBr�r�rCrDrrrr
r?�s
	r?c@s�eZdZd$dd�Zdd�Zdd�Zejdd	��Zeje�Z	e
jee
d
�d�ejdd
d�dd���Zdd�Zdd�Zdd�Zdd�Zdd�Zdd�Zdd�Zdd �Zd!d"�Zd#S)%�NonBlockingTCPTestsrecCstj�|_tj||d�dS)N)rf)r'rJ�eventrdr&)rrfrrr
r&"s
zNonBlockingTCPTests.__init__cCs�|jjd�|j|jj��|jjd�|j|jj�d�tj�}y|jj�Wntk
rdYnXtj�}|j||dkd�dS)NTFgg�?z Error setting non-blocking mode.)	r�setblockingrGrr�r<ror	r�)rr4�endrrr
�testSetBlocking&sz#NonBlockingTCPTests.testSetBlockingcCsdS)Nr)rrrr
�_testSetBlocking4sz$NonBlockingTCPTests._testSetBlockingcCsbddl}|j|jkr|jd�|jjd�|j|jj�d�|jj|jd�|j|jj��dS)Nrzneeds UINT_MAX < ULONG_MAXFgrE)	r�r�Z	ULONG_MAXr6rrGr�rrG)rr�rrr
�testSetBlocking_overflow7s
z,NonBlockingTCPTests.testSetBlocking_overflow�
SOCK_NONBLOCKztest needs socket.SOCK_NONBLOCKr���cCs�|jj�tjtjtjtjB�|_tj|j�|_|jj	�t
j
�}y|jj�Wntk
rdYnXt
j
�}|j
||dkd�dS)Ng�?z&Error creating with non-blocking mode.)rr
rrrrLrrrrr<ror	r�)rr4rHrrr
�testInitNonBlockingDs

z'NonBlockingTCPTests.testInitNonBlockingcCsdS)Nr)rrrr
�_testInitNonBlockingWsz(NonBlockingTCPTests._testInitNonBlockingcCsH|jjd�z |jj�\}}|jtt��}Wd|j�|jjd�XdS)Nr)rrAror�rUr�r
)rrqrr�messagerrr
�testInheritFlagsZsz$NonBlockingTCPTests.testInheritFlagscCs6tjd�|jjt|jf�tjd�|jjt�dS)Ng�������?g�?)r<r=rgrsrkrrBr�)rrrr
�_testInheritFlagses

z%NonBlockingTCPTests._testInheritFlagscCs�|jjd�|jt��|jj�\}}WdQRX|jj�tj|jgggt�\}}}|j|krh|j	d�|jj�\}}|j
|j�|j|j
��dS)Nrz'Error trying to do accept after select.)rrGr��BlockingIOErrorrorFrCr��MAIN_TIMEOUTr�r-r
rGr)rrqrrr�r�r�rrr
�
testAcceptks


zNonBlockingTCPTests.testAcceptcCs |jj�|jjt|jf�dS)N)rFrVrgrsrkr)rrrr
�_testAccept~s
zNonBlockingTCPTests._testAcceptcCs|jj�\}}|j�dS)N)rror
)rrqrrrrr
�testConnect�szNonBlockingTCPTests.testConnectcCs"|jjd�|jjt|jf�dS)Nr)rgrArsrkr)rrrr
�_testConnect�sz NonBlockingTCPTests._testConnectcCs�|jj�\}}|j|j�|jd�|jt��|jtt	��}WdQRX|j
j�tj|gggt
�\}}}||kr||jd�|jtt	��}|j|t	�dS)Nrz0Error during select call to non-blocking socket.)rror-r
rGr�rTr�rUr�rFrCr�rUr�r�)rrqrrr�r�r�r�rrr
r��s


zNonBlockingTCPTests.testRecvcCs,|jjt|jf�|jj�|jjt�dS)N)rgrsrkrrFrVrhr�)rrrr
r��s
zNonBlockingTCPTests._testRecvN)re)rr r!r&rIrJrr�rKZ_testSetBlocking_overflowrvr�r_r�requires_linux_versionrOrPrRrSrVrWrXrYr�r�rrrr
rEs"

rEc@s�eZdZd:ZdZdZdZdZeZ	dZ
eZd;dd	�Zd
d�Z
dd
�Zdd�Zdd�Zdd�Zdd�Zdd�Zdd�Zdd�Zdd�Zdd�Zd d!�Zd"d#�Zd$d%�Zd&d'�Zd(d)�Zd*d+�Zd,d-�Zd.d/�Zd0d1�Z d2d3�Z!d4d5�Z"d6d7�Z#d8d9�Z$dS)<�FileObjectClassTestCaserEzutf-8�strictNrpr~recCstj||d�dS)N)rf)rnr&)rrfrrr
r&�sz FileObjectClassTestCase.__init__cCsRdd�td�D�\|_|_|_|_tj|�|jj|j	|j
|j|j|j
d�|_dS)NcSsg|]}tj��qSr)r'rJ)r�rrrr
r��sz1FileObjectClassTestCase.setUp.<locals>.<listcomp>r�)�encoding�errors�newline)r��evt1�evt2�
serv_finished�cli_finishedrnrrprr�	read_moder7r]r^r_�	read_file)rrrr
r�s"
zFileObjectClassTestCase.setUpcCs6|jj�|jj�|j|jj�d|_tj|�dS)N)rbrCrer
r��closedrnr)rrrr
r�s


z FileObjectClassTestCase.tearDowncCs0tj|�|jj|j|j|j|j|jd�|_	dS)N)r]r^r_)
rnr[rtrr�
write_moder7r]r^r_�
write_file)rrrr
r[�s
z#FileObjectClassTestCase.clientSetUpcCs6|jj�|jj�|j|jj�d|_tj|�dS)N)rcrCrhr
r�rfrnr^)rrrr
r^�s


z&FileObjectClassTestCase.clientTearDowncCsd|jjd�|jjd�|jtj|jjd�|jt��}|jjd�WdQRX|jdt	|j
��dS)NrErz!cannot read from timed out object)rprArer�r�rrjr	r�r�r�)rZctxrrr
�testReadAfterTimeout�sz,FileObjectClassTestCase.testReadAfterTimeoutcCs.|jj|jdd��|jj�|jj�dS)Nrr)rhr��	write_msg�flushrbrV)rrrr
�_testReadAfterTimeout�s
z-FileObjectClassTestCase._testReadAfterTimeoutcCs<|jjt|j�d�}|jjd�}||}|j||j�dS)Nr)rer�rU�read_msgr�)r�	first_segZ
second_segr�rrr
�
testSmallRead�sz%FileObjectClassTestCase.testSmallReadcCs|jj|j�|jj�dS)N)rhr�rjrk)rrrr
�_testSmallRead�sz&FileObjectClassTestCase._testSmallReadcCs|jj�}|j||j�dS)N)rer�r�rm)rr�rrr
�testFullReads
z$FileObjectClassTestCase.testFullReadcCs|jj|j�|jj�dS)N)rhr�rjr
)rrrr
�
_testFullReadsz%FileObjectClassTestCase._testFullReadcCs>t|j��}x|jjd�}|s P||7}qW|j||j�dS)NrE)r�rmrer�r�)rr&�charrrr
�testUnbufferedReadsz*FileObjectClassTestCase.testUnbufferedReadcCs|jj|j�|jj�dS)N)rhr�rjrk)rrrr
�_testUnbufferedReadsz+FileObjectClassTestCase._testUnbufferedReadcCs|jj�}|j||j�dS)N)re�readliner�rm)r�linerrr
�testReadlines
z$FileObjectClassTestCase.testReadlinecCs|jj|j�|jj�dS)N)rhr�rjrk)rrrr
�
_testReadlinesz%FileObjectClassTestCase._testReadlinecCs&|jj�|jj�}|j||j�dS)N)rpr
rer�r�rm)rr�rrr
�testCloseAfterMakefile"s

z.FileObjectClassTestCase.testCloseAfterMakefilecCs|jj|j�|jj�dS)N)rhr�rjrk)rrrr
�_testCloseAfterMakefile)sz/FileObjectClassTestCase._testCloseAfterMakefilecCs@|jj�|jjtt��}t|jt�r.|j	�}|j
||j�dS)N)rer
rpr�rUr�r�rmr��decoder�)rr�rrr
�testMakefileAfterMakefileClose-s

z6FileObjectClassTestCase.testMakefileAfterMakefileClosecCs|jj|j�|jj�dS)N)rhr�rjrk)rrrr
�_testMakefileAfterMakefileClose4sz7FileObjectClassTestCase._testMakefileAfterMakefileClosecCs|j|jj�dS)N)r�rerf)rrrr
�testClosedAttr8sz&FileObjectClassTestCase.testClosedAttrcCs|j|jj�dS)N)r�rhrf)rrrr
�_testClosedAttr;sz'FileObjectClassTestCase._testClosedAttrcCs,|j|jj|j�|j|jj|jj��dS)N)r�rerrdr�rpr�)rrrr
�testAttributes>sz&FileObjectClassTestCase.testAttributescCs,|j|jj|j�|j|jj|jj��dS)N)r�rhrrgr�rtr�)rrrr
�_testAttributesBsz'FileObjectClassTestCase._testAttributescCs8|jj�|jt|jj�|jj�|jt|jj�dS)N)rer
r�rr�rpr	rl)rrrr
�
testRealCloseFs

z%FileObjectClassTestCase.testRealClosecCsdS)Nr)rrrr
�_testRealCloseLsz&FileObjectClassTestCase._testRealCloser)re)%rr r!r7r]r^r_rdr�rmrgrjr&rrr[r^rirlrorprqrrrtrurxryrzr{r}r~rr�r�r�r�r�rrrr
r[�sB



r[c@s`eZdZdZdd�Zdd�Zdd�Zdd	�Zd
d�Zdd
�Z	dd�Z
dd�Zdd�Zdd�Z
dS)�!UnbufferedFileObjectClassTestCasercCsL|jj�}|j|d|j�|jjdd�|_|jj�}|j|d|j�dS)NsA. rprsB. )rervr�rjrprr)rrwrrr
�testUnbufferedReadline\s


z8UnbufferedFileObjectClassTestCase.testUnbufferedReadlinecCs2|jjd|j�|jjd|j�|jj�dS)NsA. sB. )rhr�rjrk)rrrr
�_testUnbufferedReadlinedsz9UnbufferedFileObjectClassTestCase._testUnbufferedReadlinecCsD|jj�|jjd�}|j||j�|jj�|jt|jjd�dS)Ni)rpr
r�r�rmrer�r	)rr�rrr
�testMakefileCloseis


z3UnbufferedFileObjectClassTestCase.testMakefileClosecCs|jj|j�|jj�dS)N)rhr�rjrk)rrrr
�_testMakefileClosersz4UnbufferedFileObjectClassTestCase._testMakefileClosecCs6tj|j�}|jj�tj|j�}|j|d|�dS)NrE)r�r�rprer
r�)rZrefcount_beforeZrefcount_afterrrr
�testMakefileCloseSocketDestroyvs
z@UnbufferedFileObjectClassTestCase.testMakefileCloseSocketDestroycCsdS)Nr)rrrr
�_testMakefileCloseSocketDestroy|szAUnbufferedFileObjectClassTestCase._testMakefileCloseSocketDestroycCs|jjd�|j|jjtd��d�|j|jjt|j�d�d�|j	j
�|jjd�|jjt|j�d�}|dkr�t
jd�|jjt|j�d�}td�}|jj|�}|j|d�||d|�}|j||j�|j|jjtd��d�|j|jjd�d�dS)NFrrg�?g�?r�rE)rprGr�re�readintor2r�rUrmr`rCrarVr<r=)rrnr&r�r�rrr
�testSmallReadNonBlocking�s 

z:UnbufferedFileObjectClassTestCase.testSmallReadNonBlockingcCs>|jjd�|jj|j�|jj�|jj�|jjd�dS)Ng�?g@)	r`rVrhr�rjrkrarCrb)rrrr
�_testSmallReadNonBlocking�s


z;UnbufferedFileObjectClassTestCase._testSmallReadNonBlockingcCs"|jjd�|jr|j|j�dS)Ng@)rcrV�serv_skippedr6)rrrr
�testWriteNonBlocking�sz6UnbufferedFileObjectClassTestCase.testWriteNonBlockingcCsvd|_|jjd�dtj}d}|jj|�}|j|d�x8t|�D]&}|jj|�}|dkr\P|j|d�qBWd|_dS)NFrdrrz$failed to saturate the socket buffer)	r�rtrGrrirhr�r�r�)rZBIGZLIMITr�rrrr
�_testWriteNonBlocking�s
z7UnbufferedFileObjectClassTestCase._testWriteNonBlockingN)rr r!r7r�r�r�r�r�r�r�r�r�r�rrrr
r�Ps
		r�c@seZdZdZdS)�#LineBufferedFileObjectClassTestCaserEN)rr r!r7rrrr
r��sr�c@seZdZdZdS)�$SmallBufferedFileObjectClassTestCaser�N)rr r!r7rrrr
r��sr�c@s&eZdZdZejd�ZdZeZdZ	dS)�"UnicodeReadFileObjectClassTestCaserszutf-8r~r�N)
rr r!rdr�r|rmrgrjr_rrrr
r��s

r�c@s&eZdZdZeZdZejd�ZdZ	dS)�#UnicodeWriteFileObjectClassTestCaserpr}zutf-8r�N)
rr r!rdr�rmrgr|rjr_rrrr
r��s

r�c@s,eZdZdZejd�ZdZejd�ZdZ	dS)�'UnicodeReadWriteFileObjectClassTestCaserszutf-8r}r�N)
rr r!rdr�r|rmrgrjr_rrrr
r��s


r�c@seZdZdd�ZdS)�NetworkConnectionTestcCstjt|jf�|_|j|_dS)N)r�create_connectionrkrrgrt)rrrr
r[�sz!NetworkConnectionTest.clientSetUpN)rr r!r[rrrr
r��sr�c@seZdZdS)�
BasicTCPTest2N)rr r!rrrr
r��sr�c@sDeZdZGdd�dej�Zejdd��Zdd�Zdd�Z	d	d
�Z
dS)�NetworkConnectionNoServerc@seZdZdd�ZdS)z$NetworkConnectionNoServer.MockSocketcGstjd��dS)Nz	timed out)rrj)rr*rrr
rs�sz,NetworkConnectionNoServer.MockSocket.connectN)rr r!rsrrrr
�
MockSocket�sr�ccs&tj}|jt_z
dVWd|t_XdS)N)rr�)rZ
old_socketrrr
�mocked_socket_module�s

z.NetworkConnectionNoServer.mocked_socket_modulec
Cs^tj�}tjtjtj�}|j|j�|jt��}|j	t
|f�WdQRX|j|jj
t
j�dS)N)rr9rrrr-r
r�r	rsrkr�r�r��ECONNREFUSED)rrrgr�rrr
�test_connectsz&NetworkConnectionNoServer.test_connectc
Csttj�}|jt��}tjt|f�WdQRXtjg}t	td�rJ|j
tj�t	td�r`|j
tj�|j
|jj|�dS)N�ENETUNREACH�
EADDRNOTAVAIL)rr9r�r	rr�rkr�r�r_r�r�r�r�r�)rrr�Zexpected_errnosrrr
�test_create_connection	s

z0NetworkConnectionNoServer.test_create_connectioncCs>|j��,|jtj��tjtdf�WdQRXWdQRXdS)Ni�)r�r�rrjr�rk)rrrr
�test_create_connection_timeout(s
z8NetworkConnectionNoServer.test_create_connection_timeoutN)rr r!rr��
contextlib�contextmanagerr�r�r�r�rrrr
r��s

r�c@sveZdZddd�Zdd�Zdd�Zdd	�ZeZd
d�ZeZ	dd
�Z
eZdd�ZeZ
dd�ZeZdd�ZeZdd�ZdS)�NetworkConnectionAttributesTestrecCstj||d�tj|�dS)N)rf)rr&r=)rrfrrr
r&3sz(NetworkConnectionAttributesTest.__init__cCstj�|_dS)N)rr9�source_port)rrrr
r[7sz+NetworkConnectionAttributesTest.clientSetUpcCs|jj�d|_tj|�dS)N)rgr
r=r^)rrrr
r^:s
z.NetworkConnectionAttributesTest.clientTearDowncCs|jj�\}}|j�dS)N)rror
)rrqrrrrr
�_justAccept?sz+NetworkConnectionAttributesTest._justAcceptcCs8tjt|jfdd�|_|j|jj�|j|jjd�dS)N�)rjr�)	rr�rkrrgr-r
r�r�)rrrr
�_testFamilyDsz+NetworkConnectionAttributesTest._testFamilycCsHtjt|jfdd|jfd�|_|j|jj�|j|jj	�d|j�dS)Nr�r�)rjZsource_addressrE)
rr�rkrr�rgr-r
r�rl)rrrr
�_testSourceAddressJsz2NetworkConnectionAttributesTest._testSourceAddresscCsd|jtj�dk�tjd�z$tjt|jf�|_|j|jj	�Wdtjd�X|j
|jj�d�dS)NrA)r�rrrr�rkrrgr-r
r�r)rrrr
�_testTimeoutDefaultSs
z3NetworkConnectionAttributesTest._testTimeoutDefaultcCsh|jtj�dk�tjd�z(tjt|jfdd�|_|j|jj	�Wdtjd�X|j
|jj�d�dS)Nr�)rj)r�rrrr�rkrrgr-r
r�r)rrrr
�_testTimeoutNone_s
z0NetworkConnectionAttributesTest._testTimeoutNonecCs,tjt|jfdd�|_|j|jj�d�dS)Nr�)rj)rr�rkrrgr�r)rrrr
�_testTimeoutValueNamedksz6NetworkConnectionAttributesTest._testTimeoutValueNamedcCs8tjt|jfd�|_|j|jj�|j|jj�d�dS)Nr�)	rr�rkrrgr-r
r�r)rrrr
�_testTimeoutValueNonamedpsz8NetworkConnectionAttributesTest._testTimeoutValueNonamedN)re)rr r!r&r[r^r�Z
testFamilyr�ZtestSourceAddressr�ZtestTimeoutDefaultr�ZtestTimeoutNoner�ZtestTimeoutValueNamedr�ZtestTimeoutValueNonamedr�rrrr
r�0s 
r�c@sBeZdZddd�Zdd�Zdd�Zdd	�ZeZd
d�Zdd
�Z	dS)�NetworkConnectionBehaviourTestrecCstj||d�tj|�dS)N)rf)rr&r=)rrfrrr
r&xsz'NetworkConnectionBehaviourTest.__init__cCsdS)Nr)rrrr
r[|sz*NetworkConnectionBehaviourTest.clientSetUpcCs|jj�d|_tj|�dS)N)rgr
r=r^)rrrr
r^s
z-NetworkConnectionBehaviourTest.clientTearDowncCs2|jj�\}}|j|j�tjd�|jd�dS)Nrsdone!)rror-r
r<r=rB)rrqrrrrr
�testInsideTimeout�s
z0NetworkConnectionBehaviourTest.testInsideTimeoutcCs0tjt|jf�|_}|jd�}|j|d�dS)Nr1sdone!)rr�rkrrgr�r�)rr�r�rrr
�_testInsideTimeout�s
z1NetworkConnectionBehaviourTest._testInsideTimeoutcs4tjt|jfdd�|_�|jtj�fdd��dS)NrE)rjcs
�jd�S)Nr1)r�r)r�rr
r��szDNetworkConnectionBehaviourTest._testOutsideTimeout.<locals>.<lambda>)rr�rkrrgr�rj)rr)r�r
�_testOutsideTimeout�sz2NetworkConnectionBehaviourTest._testOutsideTimeoutN)re)
rr r!r&r[r^r�ZtestOutsideTimeoutr�r�rrrr
r�us
r�c@s6eZdZdd�Zdd�Zejeed�d�dd��Z	d	S)
�TCPTimeoutTestcs �fdd�}�jtj|d�dS)Ncs�jjd��jj�dS)Ng�?)rrAro)r*r+)rrr
�
raise_timeout�sz4TCPTimeoutTest.testTCPTimeout.<locals>.raise_timeoutz*Error generating a timeout exception (TCP))r�rrj)rr�r)rr
�testTCPTimeout�s
zTCPTimeoutTest.testTCPTimeoutcCs|d}y|jjd�|jj�}WnJtjk
r>|jd�Yn,tk
rTd}Yn|jd�YnX|sx|jd�dS)NFgz%caught timeout instead of error (TCP)Tz!caught unexpected exception (TCP)z3accept() returned success when we did not expect it)rrArorrjr�r	)r�ok�foorrr
�testTimeoutZero�szTCPTimeoutTest.testTimeoutZeror_ztest needs signal.alarm()cs
|jjd�Gdd�dt���fdd�}tjtj|�}z�y�z�ytjd�|jj�}Wn`tjk
rt|j	d�YnL�k
r�Yn:|j	dt
j�dd�tj
�f�YnX|j	d	�Wdtjd
�XWn�k
r�|j	d�YnXWdtjtj|�XdS)Ng@c@seZdZdS)z4TCPTimeoutTest.testInterruptedTimeout.<locals>.AlarmN)rr r!rrrr
�Alarm�sr�cs��dS)Nr)rer�)r�rr
�
alarm_handler�sz<TCPTimeoutTest.testInterruptedTimeout.<locals>.alarm_handlerr�zcaught timeout instead of Alarmz3caught other exception instead of Alarm: %s(%s):
%sznothing caughtrzgot Alarm in wrong place)rrArrerfr_rorrjr�r��exc_info�	traceback�
format_exc)rr�rlr�r)r�r
�testInterruptedTimeout�s(
$z%TCPTimeoutTest.testInterruptedTimeoutN)
rr r!r�r�rvr�r_rer�rrrr
r��sr�c@seZdZdd�Zdd�ZdS)�UDPTimeoutTestcs �fdd�}�jtj|d�dS)Ncs�jjd��jjd�dS)Ng�?i)rrAr�)r*r+)rrr
r��sz4UDPTimeoutTest.testUDPTimeout.<locals>.raise_timeoutz*Error generating a timeout exception (UDP))r�rrj)rr�r)rr
�testUDPTimeout�s
zUDPTimeoutTest.testUDPTimeoutcCs~d}y|jjd�|jjd�}WnJtjk
r@|jd�Yn,tk
rVd}Yn|jd�YnX|sz|jd�dS)NFgiz%caught timeout instead of error (UDP)Tz!caught unexpected exception (UDP)z1recv() returned success when we did not expect it)rrAr�rrjr�r	)rr�r�rrr
r��szUDPTimeoutTest.testTimeoutZeroN)rr r!r�r�rrrr
r��sr�c@seZdZdd�Zdd�ZdS)�TestExceptionscCsJ|jttt��|jttjt��|jttjt��|jttjt��dS)N)r��
issubclassr	rrr�r�rj)rrrr
�testExceptionTree�sz TestExceptions.testExceptionTreec	Csbtjtjtjd�}tjtjtjd|j��}|j�|j|j�|jt��|j	d�WdQRXdS)NrF)
rrrr�r
r-rr�r	rG)rZsock0r�rrr
�test_setblocking_invalidfd�sz)TestExceptions.test_setblocking_invalidfdN)rr r!r�r�rrrr
r��sr�rzLinux specific testc@s8eZdZdZdd�Zdd�Zdd�Zdd	�Zd
d�ZdS)
�TestLinuxAbstractNamespace�lcCs�d}tjtjtj��z}|j|�|j�tjtjtj��L}|j|j��|j�d�&}|j|j�|�|j|j	�|�WdQRXWdQRXWdQRXdS)Nspython-test-hello�r)
rr�rr4rrsrlror�Zgetpeername)r�address�s1�s2Zs3rrr
�testLinuxAbstractNamespace�s
z5TestLinuxAbstractNamespace.testLinuxAbstractNamespacec
CsLdd|jd}tjtjtj�� }|j|�|j|j�|�WdQRXdS)Nr �hrE)�
UNIX_PATH_MAXrr�rr4r�rl)rr�rrrr
�testMaxName
s
z&TestLinuxAbstractNamespace.testMaxNamecCs>dd|j}tjtjtj��}|jt|j|�WdQRXdS)N��h)r�rr�rr�r	r4)rr�rrrr
�testNameOverflowsz+TestLinuxAbstractNamespace.testNameOverflowc
Cs>tjtjtj�}z|jd�|j|j�d�Wd|j�XdS)Nz
pythontests
pythontest)rr�rr4r�rlr
)rrrrr
�testStrNames

z&TestLinuxAbstractNamespace.testStrNamec
Cs>tjtjtj��$}|jtd��|j|j�d�WdQRXdS)Ns
pythontest)rr�rr4r2r�rl)rrrrr
�testBytearrayNamesz,TestLinuxAbstractNamespace.testBytearrayNameN)	rr r!r�r�r�r�r�r�rrrr
r��s	r�ztest needs socket.AF_UNIXc@sTeZdZdd�Zdd�Zdd�Zdd�Zd	d
�Zdd�Zd
d�Z	dd�Z
dd�ZdS)�TestUnixDomaincCstjtjtj�|_dS)N)rr�rr�)rrrr
r'szTestUnixDomain.setUpcCs|jj�dS)N)r�r
)rrrr
r*szTestUnixDomain.tearDowncCs:y
tj|�Stk
r4|jdj|tj���YnXdS)NzBPathname {0!a} cannot be represented in file system encoding {1!r})r��fsencoderXr6r�r��getfilesystemencoding)rr�rrr
�encoded-s
zTestUnixDomain.encodedcCsXytj||�WnBtk
rR}z&t|�dkr@|jdj|��n�WYdd}~XnXdS)NzAF_UNIX path too longz6Pathname {0!a} is too long to serve as an AF_UNIX path)rr�r	r�r6r�)rr�r�rarrr
r48s
zTestUnixDomain.bindcCs|j|jj�d�dS)Nr�)r�N)r�r�rl)rrrr
�testUnboundDszTestUnixDomain.testUnboundcCs@tjjtj�}|j|j|�|jtj|�|j	|jj
�|�dS)N)r�r��abspathr�TESTFNr4r�r-r�r�rl)rr�rrr
�testStrAddrHszTestUnixDomain.testStrAddrcCsFtjjtj�}|j|j|j|��|jtj	|�|j
|jj�|�dS)N)r�r�r�rr�r4r�r�r-r�r�rl)rr�rrr
�
testBytesAddrOszTestUnixDomain.testBytesAddrcCsRtjjtj�}|j|�}|j|j|jdd��|j	tj
|�|j|jj�|�dS)N�ascii�surrogateescape)
r�r�r�rZTESTFN_UNICODEr�r4r�r|r-r�r�rl)rr�rZrrr
�testSurrogateescapeBindVs

z&TestUnixDomain.testSurrogateescapeBindcCsTtjdkr|jd�tjjtj�}|j|j|�|jtj	|�|j
|jj�|�dS)Nz!No unencodable filename available)rZTESTFN_UNENCODABLEr6r�r�r�r4r�r-r�r�rl)rr�rrr
�testUnencodableAddr_s

z"TestUnixDomain.testUnencodableAddrN)rr r!rrr�r4r�r�r�r�r�rrrr
r�$s	r�c@s�eZdZddd�Zdd�Zdd�Zdd	�ZeZd
d�ZeZ	dd
�Z
dd�Zdd�ZeZ
dd�ZeZdd�Zdd�Zdd�ZeZdS)�BufferIOTestrecCstj||d�dS)N)rf)rnr&)rrfrrr
r&nszBufferIOTest.__init__cCsZtjddgtt��}|jj|�}|j|tt��|j�}|dtt��}|j|t�dS)Nr7r)r8rUr�rpr*r�rz)rr&rur�rrr
�testRecvIntoArrayqszBufferIOTest.testRecvIntoArraycCstt�}|jj|�dS)N)r�r�rtrB)rr&rrr
�_testRecvIntoArrayyszBufferIOTest._testRecvIntoArraycCsDtd�}|jj|�}|j|tt��|dtt��}|j|t�dS)Ni)r2rpr*r�rUr�)rr&rur�rrr
�testRecvIntoBytearray}s
z"BufferIOTest.testRecvIntoBytearraycCsHtd�}|jjt|��}|j|tt��|dtt��}|j|t�dS)Ni)r2rpr*r~r�rUr�)rr&rur�rrr
�testRecvIntoMemoryview�s
z#BufferIOTest.testRecvIntoMemoryviewcCs^tjddgtt��}|jj|�\}}|j|tt��|j�}|dtt��}|j|t�dS)Nr7r)r8rUr�rpr-r�rz)rr&rurrr�rrr
�testRecvFromIntoArray�sz"BufferIOTest.testRecvFromIntoArraycCstt�}|jj|�dS)N)r�r�rtrB)rr&rrr
�_testRecvFromIntoArray�sz#BufferIOTest._testRecvFromIntoArraycCsHtd�}|jj|�\}}|j|tt��|dtt��}|j|t�dS)Ni)r2rpr-r�rUr�)rr&rurrr�rrr
�testRecvFromIntoBytearray�s
z&BufferIOTest.testRecvFromIntoBytearraycCsLtd�}|jjt|��\}}|j|tt��|dtt��}|j|t�dS)Ni)r2rpr-r~r�rUr�)rr&rurrr�rrr
�testRecvFromIntoMemoryview�s
z'BufferIOTest.testRecvFromIntoMemoryviewcCs td�}|jt|jj|d�dS)Nr3i)r2r�rrpr-)rr&rrr
�testRecvFromIntoSmallBuffer�sz(BufferIOTest.testRecvFromIntoSmallBuffercCs|jjt�dS)N)rtrBr�)rrrr
�_testRecvFromIntoSmallBuffer�sz)BufferIOTest._testRecvFromIntoSmallBuffercCs$t�}|jj|�|jj|d�dS)Nr)r2rpr-)rr&rrr
�testRecvFromIntoEmptyBuffer�sz(BufferIOTest.testRecvFromIntoEmptyBufferN)re)rr r!r&r�r�r�Z_testRecvIntoBytearrayr�Z_testRecvIntoMemoryviewr�r�r�Z_testRecvFromIntoBytearrayr�Z_testRecvFromIntoMemoryviewr�r�r�Z_testRecvFromIntoEmptyBufferrrrr
r�is"
r�i�����cCsfttd�sdSytd�}Wntttfk
r4dSX|�"x|D]}|jd�rBdSqBWWdQRXdS)N�AF_TIPCFz
/proc/modulesztipc T)r_rr��FileNotFoundError�IsADirectoryError�PermissionErrorr)r�rwrrr
�isTipcAvailable�s


r�z6TIPC module is not loaded, please 'sudo modprobe tipc'c@seZdZdd�ZdS)�TIPCTestcCs�tjtjtj�}tjtjtj�}|j|j�|j|j�|jtjtjd�tjt	t
tf}|j|�tj
t	t
ttt
d�df}|jt|�|jd�\}}|j|j�|�|j|t�dS)NrEr�ri)rr�r�r-r
r?r�r��TIPC_ADDR_NAMESEQ�
TIPC_STYPE�
TIPC_LOWER�
TIPC_UPPERr4�TIPC_ADDR_NAMEr�r�r�r�r�rl)rr�rg�srvaddrZsendaddrr�Zrecvaddrrrr
�testRDM�s
zTIPCTest.testRDMN)rr r!r�rrrr
r��sr�c@s6eZdZd
dd�Zdd�Zdd�Zdd	�Zd
d�ZdS)�TIPCThreadableTestrecCstjj||d�tj|�dS)N)rf)rvrwr&r=)rrfrrr
r&�szTIPCThreadableTest.__init__cCs�tjtjtj�|_|j|jj�|jjtjtjd�tj	t
ttf}|jj
|�|jj�|j�|jj�\|_|_|j|jj�dS)NrE)rr�rr�r-r
r?r�r�r�r�r�r�r4rrDrorq�connaddr)rr�rrr
r�s
zTIPCThreadableTest.setUpcCsdtjd�tjtjtj�|_|j|jj�tjt	t
ttt
d�df}|jj
|�|jj�|_dS)Ng�������?r�r)r<r=rr�rrgr-r
r�r�r�r�r�rsrl�cliaddr)rrrrrr
r[s
zTIPCThreadableTest.clientSetUpcCs,|jjd�}|j|t�|j|j|j�dS)Ni)rqr�r�r�r�r�)rr�rrr
�
testStreamszTIPCThreadableTest.testStreamcCs|jjt�|jj�dS)N)rgrBr�r
)rrrr
�_testStreamszTIPCThreadableTest._testStreamN)re)rr r!r&rr[r�r�rrrr
r��s

r�c@s4eZdZdd�Zdd�Zdd�Zdd�Zd	d
�ZdS)�ContextManagersTestcCs�tj��}|j|j�WdQRX|j|j�tj��}|j�WdQRX|j|j�tj��}|jt|jd�WdQRX|j|j�dS)Nsfoo)rr<rr�r
r�r	rh)rr�rrr
�_testSocketClasss


z$ContextManagersTest._testSocketClasscCs2|jj�\}}|j|j�|jd�}|j|�dS)Ni)rror-r
r�rh)rrqrrr�rrr
�testCreateConnectionBase's
z,ContextManagersTest.testCreateConnectionBasec
CsX|jj�}tj|��.}|j|j�|jd�|j|jd�d�WdQRX|j	|j�dS)Nsfooi)
rrlrr�r<rrhr�r�r�)rr�r�rrr
�_testCreateConnectionBase-s

z-ContextManagersTest._testCreateConnectionBasecCs2|jj�\}}|j|j�|jd�}|j|�dS)Ni)rror-r
r�rh)rrqrrr�rrr
�testCreateConnectionClose5s
z-ContextManagersTest.testCreateConnectionClosecCsH|jj�}tj|��}|j�WdQRX|j|j�|jt|j	d�dS)Nsfoo)
rrlrr�r
r�rr�r	rh)rr�r�rrr
�_testCreateConnectionClose;s

z.ContextManagersTest._testCreateConnectionCloseN)rr r!rrrrrrrrr
rs
rc@s�eZdZejeed�d�ejddd�dd���Z	dd	�Z
d
d�Zdd
�Zej
edkd�dd��Zej
edkd�dd��Zejeed�d�dd��ZdS)�InheritanceTestrEzSOCK_CLOEXEC not definedr�rMrNc
CsFtjtjtjtjB��&}|j|jtj@�|j|j��WdQRXdS)N)rrrrEr�r�r<�get_inheritable)rrrrr
�test_SOCK_CLOEXECDsz!InheritanceTest.test_SOCK_CLOEXECc
Cs,tj�}|�|j|j�d�WdQRXdS)NF)rr�r)rr�rrr
�test_default_inheritableMsz(InheritanceTest.test_default_inheritablecCsLtj�}|�6|j�}|j�|�|j|j�d�WdQRXWdQRXdS)NF)rr�r
r�r)rr�Znewsockrrr
�test_dupRszInheritanceTest.test_dupc
CsPtj�}|�:|jd�|j|j�d�|jd�|j|j�d�WdQRXdS)NTF)r�set_inheritabler�r)rr�rrr
�test_set_inheritableZs

z$InheritanceTest.test_set_inheritableNz
need fcntlcCsntj�}|�X|j�}|j|j�d�tj|tj�}|tjM}tj|tj|�|j|j�d�WdQRXdS)NFT)rr�r�r�fcntl�F_GETFD�
FD_CLOEXECZF_SETFD)rr�r�rRrrr
�test_get_inheritable_cloexeccsz,InheritanceTest.test_get_inheritable_cloexeccCshtj�}|�R|j�}|jtj|tj�tj@tj�|jd�|jtj|tj�tj@d�WdQRXdS)NTr)rr�r�r
rrr)rr�r�rrr
�test_set_inheritable_cloexecqs
z,InheritanceTest.test_set_inheritable_cloexecrxzneed socket.socketpair()cCsHtj�\}}|j|j�|j|j�|j|j�d�|j|j�d�dS)NF)rrxr-r
r�r)rr�r�rrr
�test_socketpair~s
zInheritanceTest.test_socketpair)rr r!rvr�r_rrrZrr	r
rr�r
rrrrrrr
rCs	
rrLzSOCK_NONBLOCK not definedc@s,eZdZddd�Zejddd�dd	��Zd
S)�NonblockConstantTestT�cCsN|r(|j|jtj@�|j|j�|�n"|j|jtj@�|j|j�d�dS)N)r�r�rrLr�rr<)rrZnonblockrjrrr
�
checkNonblock�s
z"NonblockConstantTest.checkNonblockr�rMrNc&CsXtjtjtjtjB��~}|j|�|jd�|j|d�|jd�|j|�|jd�|j|d�|jd�|j|dd�|jd�|j|d�WdQRXtj�}tjd�tj��}|j|�WdQRXtjd�tj��}|j|d�WdQRXtjd�tj��}|j|dd�WdQRXtjd�tj��}|j|d�WdQRXtj|�dS)NrEFrg@)rjg)	rrrrLrrGrArr)rr�trrr
�test_SOCK_NONBLOCK�s6














z'NonblockConstantTest.test_SOCK_NONBLOCKN)Tr)rr r!rrrZrrrrr
r�s
rrJzWindows specificzneed multiprocessingc@s@eZdZedd��Zdd�Zdd�Zdd�Zd	d
�Zdd�Z	d
S)�TestSocketSharingcCsD|j�}|j�}tj|�}|j�\}}|j|�|j�|j�dS)N)rXr�	fromsharerorhr
)r��qZsdatarQrr�rkrrr
�remoteProcessServer�s

z%TestSocketSharing.remoteProcessServerc	Cs�tj�}tj|j|fd�}|j�|jj|j�}|jj�}|jj	�|j
|�d}|j
|�tj|�}g}x|j
d�}|s|P|j|�qlW|j	�dj|�}|j||�|j�dS)N)r2r*s
slapmahfrorMr�)�multiprocessingrNZProcessrr4r�share�pidrlr
r]rr�r�r�r�r�)	rrr�r�rrrQr�m�receivedrrr
�	testShare�s(






zTestSocketSharing.testSharecCs@|jjtj��}|jttj|dd��|jttj|d�dS)NrEsfoor)rrr��getpidr�rrr)rr�rrr
�testShareLength�sz!TestSocketSharing.testShareLengthcCsb|j|j�d�|j|j�|j��|j|j|j�|j|j|j�|jdkr^|j|j|j�dS)Nr)r�rr�r�r�)rZorg�otherrrr
�compareSockets�s
z TestSocketSharing.compareSocketsc
Cs<|jjtj��}tj|�}z|j|j|�Wd|j�XdS)N)rrr�r"rrr%r
)rr�rrrr
�testShareLocals

z TestSocketSharing.testShareLocalcCs�tjtjg}tjtjg}x�|D]~}xx|D]p}ytj||�}Wntk
rRw(YnXz8|jtj��}tj	|�}z|j
||�Wd|j�XWd|j�Xq(WqWdS)N)rrr�rr#r	rr�r"rr%r
)rZfamilies�typesr�r�sourcer�Zsharedrrr
�	testTypess


zTestSocketSharing.testTypesN)
rr r!r�rr!r#r%r&r)rrrr
r�s#rc@s�eZdZd>ZdZdZdZedd��Zedd	��Z	d
d�Z
dd
�Zdd�Zdd�Z
dd�Zdd�Zdd�Zdd�Zdd�Zdd�Zdd�Zd d!�Zd"d#�Zd$d%�Zd&d'�Zd(d)�Zd*d+�Zd,d-�Zd.d/�Zd0d1�Zd2d3�Zd4d5�Zd6d7�Z d8d9�Z!d:d;�Z"d<S)?�SendfileUsingSendTestrii r�r�cCs�dd�}djdd�t|j�D��}ttjd��(}x ||j|j�D]}|j|�q@WWdQRXttjd��}|j�|_	WdQRXdS)Ncss*x||kr|V||8}qW|r&|VdS)Nr)Ztotal�steprrr
�chunks)s

z0SendfileUsingSendTest.setUpClass.<locals>.chunksr�cSsg|]}tjtj�j��qSr)�random�choice�stringZ
ascii_lettersr�)r�rrrr
r�1sz4SendfileUsingSendTest.setUpClass.<locals>.<listcomp>r~rp)
r�r��BUFSIZEr�rr��FILESIZEr�r��FILEDATA)r�r,�chunkr�Zcsizerrr
�
setUpClass's

z SendfileUsingSendTest.setUpClasscCstjtj�dS)N)rr�r�)r�rrr
�
tearDownClass:sz#SendfileUsingSendTest.tearDownClasscCs8|jj|j�|jj�\}}|j|j�|j|j�|S)N)rrA�TIMEOUTror-r
)rrqrrrrr
�accept_conn>s
z!SendfileUsingSendTest.accept_conncCs0g}x |j|j�}|sP|j|�qWdj|�S)Nr�)r�r0r�r�)rrqr r3rrr
�	recv_dataEszSendfileUsingSendTest.recv_datacCs
t|d�S)NZ_sendfile_use_send)rR)rr�rrr
�meth_from_sockNsz$SendfileUsingSendTest.meth_from_sockcCsr|jj�}ttjd�}tj|��H}|�8}|j|�}||�}|j||j	�|j|j
�|j	�WdQRXWdQRXdS)Nrp)rrlr�rr�rr�r9r�r1�tell)rr��filer��meth�sentrrr
�_testRegularFileUs

z&SendfileUsingSendTest._testRegularFilecCs6|j�}|j|�}|jt|�|j�|j||j�dS)N)r7r8r�rUr1r2)rrqr�rrr
�testRegularFile^s
z%SendfileUsingSendTest.testRegularFilecCs||jj�}tj|j�}tj|��R}|�B}|j|�}|j||j	�|j|j
�|j	�|jtj|j
|�WdQRXWdQRXdS)N)rrl�io�BytesIOr2rr�r�r�r1r:r�r�r�)rr�r;r�r=rrr
�_testNonRegularFilefs

z)SendfileUsingSendTest._testNonRegularFilecCs6|j�}|j|�}|jt|�|j�|j||j�dS)N)r7r8r�rUr1r2)rrqr�rrr
�testNonRegularFileps
z(SendfileUsingSendTest.testNonRegularFilecCs�|jj�}tjd}t|d��|jtj|�WdQRXt|d�}tj|��D}|�4}|j	|�}||�}|j
|d�|j
|j�d�WdQRXWdQRXdS)N�2r~rpr)rrlrr�r�r-r�rr�r9r�r:)rr��filenamer;r�r<r=rrr
�_testEmptyFileSendxs



z(SendfileUsingSendTest._testEmptyFileSendcCs"|j�}|j|�}|j|d�dS)Nr�)r7r8r�)rrqr�rrr
�testEmptyFileSend�s
z'SendfileUsingSendTest.testEmptyFileSendcCsz|jj�}ttjd�}tj|��P}|�@}|j|�}||dd�}|j||j	d�|j|j
�|j	�WdQRXWdQRXdS)Nrpi�)�offset)rrlr�rr�rr�r9r�r1r:)rr�r;r�r<r=rrr
�_testOffset�s

z!SendfileUsingSendTest._testOffsetcCsB|j�}|j|�}|jt|�|jd�|j||jdd��dS)Ni�)r7r8r�rUr1r2)rrqr�rrr
�
testOffset�s
z SendfileUsingSendTest.testOffsetcCsz|jj�}ttjd�}tj|dd��L}|�<}d}|j|�}|||d�}|j||�|j|j	�|�WdQRXWdQRXdS)Nrpr�)rjiGKL)rH)
rrlr�rr�rr�r9r�r:)rr�r;r�rHr<r=rrr
�
_testCount�s

z SendfileUsingSendTest._testCountcCs@d}|j�}|j|�}|jt|�|�|j||jd|��dS)NiGKL)r7r8r�rUr2)rrHrqr�rrr
�	testCount�s

zSendfileUsingSendTest.testCountcCsz|jj�}ttjd�}tj|dd��L}|�<}d}|j|�}|||d�}|j||�|j|j	�|�WdQRXWdQRXdS)Nrpr�)rjrE)rH)
rrlr�rr�rr�r9r�r:)rr�r;r�rHr<r=rrr
�_testCountSmall�s

z%SendfileUsingSendTest._testCountSmallcCs@d}|j�}|j|�}|jt|�|�|j||jd|��dS)NrE)r7r8r�rUr2)rrHrqr�rrr
�testCountSmall�s

z$SendfileUsingSendTest.testCountSmallcCs�|jj�}ttjd�}tj|dd��R}|�B}d}|j|�}||d|d�}|j||�|j|j	�|d�WdQRXWdQRXdS)Nrpr�)rji��i�)rHrH)
rrlr�rr�rr�r9r�r:)rr�r;r�rHr<r=rrr
�_testCountWithOffset�s

z*SendfileUsingSendTest._testCountWithOffsetcCsDd}|j�}|j|�}|jt|�|�|j||jd|d��dS)Ni��i�)r7r8r�rUr2)rrHrqr�rrr
�testCountWithOffset�s

z)SendfileUsingSendTest.testCountWithOffsetcCsr|jj�}ttjd�}tj|��H}|�8}|jd�|j|�}|j	t
||�|j	t
|j|�WdQRXWdQRXdS)NrpF)rrlr�rr�rr�rGr9r�rr�)rr�r;r�r<rrr
�_testNonBlocking�s


z&SendfileUsingSendTest._testNonBlockingcCs |j�}|jd�r|jd�dS)Ni z$was not supposed to receive any data)r7r�r�)rrqrrr
�testNonBlocking�s
z%SendfileUsingSendTest.testNonBlockingcCsd|jj�}ttjd�}tj|dd��6}|�&}|j|�}||�}|j||j	�WdQRXWdQRXdS)Nrpr�)rj)
rrlr�rr�rr�r9r�r1)rr�r;r�r<r=rrr
�_testWithTimeout�s

z&SendfileUsingSendTest._testWithTimeoutcCs6|j�}|j|�}|jt|�|j�|j||j�dS)N)r7r8r�rUr1r2)rrqr�rrr
�testWithTimeout�s
z%SendfileUsingSendTest.testWithTimeoutcCsZ|jj�}ttjd��:}tj|dd�� }|j|�}|jtj	||�WdQRXWdQRXdS)Nrpg{�G�z�?)rj)
rrlr�rr�rr�r9r�rj)rr�r;r�r<rrr
�_testWithTimeoutTriggeredSend�s


z3SendfileUsingSendTest._testWithTimeoutTriggeredSendcCs|j�}|jd�dS)Ni�X)r7r�)rrqrrr
�testWithTimeoutTriggeredSend�sz2SendfileUsingSendTest.testWithTimeoutTriggeredSendcCsdS)Nr)rrrr
�_test_errorssz"SendfileUsingSendTest._test_errorsc1Csttjd��:}tjtjd�� }|j|�}|jtd||�WdQRXWdQRXttjd��4}tj�� }|j|�}|jtd||�WdQRXWdQRXttjd��t}tj��`}|j|�}|jtd||dd�|jtd||d	d�|jtd||d
d�|jtd||dd�WdQRXWdQRXdS)
Nrp)r�rr�zbinary modezpositive integerrD)rHg�������?rrEr)	r�rr�rr#r9r�rr`)rr;rr<rrr
�test_errorss*
 

 

z!SendfileUsingSendTest.test_errorsNi(i�)#rr r!r1r0r2r6r�r4r5r7r8r9r>r?rBrCrFrGrIrJrKrLrMrNrOrPrQrRrSrTrUrVrWrXrrrr
r*s>		
	
	
	
		r*r�z%os.sendfile() required for this test.c@seZdZdd�ZdS)�SendfileUsingSendfileTestcCs
t|d�S)Nr�)rR)rr�rrr
r9$sz(SendfileUsingSendfileTest.meth_from_sockN)rr r!r9rrrr
rYsrYzAF_ALG requiredc@s|eZdZdd�Zejdd�dd��Zdd�Zejdd	�d
d��Zejdd�d
d��Z	ejdd	�dd��Z
dd�Zdd�ZdS)�LinuxKernelCryptoAPIcCsjtjtjtjd�}y|j||f�Wn<tk
r`}z |j�tjt|�||��WYdd}~XnX|SdS)Nr)	rrrr4r�r
rvZSkipTestr�)r�typr�r�rarrr
�
create_alg+s$zLinuxKernelCryptoAPI.create_algr�r1cCs�tjd�}|jdd���}|j�\}}|�"|jd�|j|jd�|�WdQRX|j�\}}|�L|jdtj	�|jdtj	�|jdtj	�|jd	�|j|jd�|�WdQRXWdQRXdS)
NZ@ba7816bf8f01cfea414140de5dae2223b00361a396177a9cb410ff61f20015ad�hashZsha256sabcirN�b�cr�)
r��fromhexr\rorhr�r�rBr�MSG_MORE)rr��algo�oprGrrr
�test_sha2568s


z LinuxKernelCryptoAPI.test_sha256cCsptjd�}|jdd��P}|jtjtjd�|j�\}}|�"|jd�|j	|j
d�|�WdQRXWdQRXdS)NZ(effcdf6ae5eb2fa2d27416d5f184df9c259a7c79r]z
hmac(sha1)sJefeswhat do ya want for nothing?i)r�r`r\r?r�SOL_ALG�ALG_SET_KEYrorhr�r�)rr�rbrcrGrrr
�test_hmac_sha1Js

z#LinuxKernelCryptoAPI.test_hmac_sha1rc
(Cs�tjd�}tjd�}d}tjd�}t|�}|jdd���z}|jtjtj|�|j�\}}|�6|j	tj
|tjd�|j|�|j
|j|�|�WdQRX|j�\}}|�,|j	|gtj|d�|j
|j|�|�WdQRXd	}	|g|	}
|j�\}}|�&|j	|
tj
|d�|j||	�}WdQRX|j
t|�||	�|j
|d|�|�|j�\}}|�(|j	|gtj|d�|j||	�}WdQRX|j
t|�||	�|j
|||	�WdQRXdS)
NZ 06a9214036b8a15b512e03d534120006Z 3dafba429d9eb430b422da802c9fac41sSingle block msgZ e353779c1079aeb82708942dbe77181aZskcipherzcbc(aes))rc�ivrR)rcrhi)r�r`rUr\r?rrerfro�
sendmsg_afalg�ALG_OP_ENCRYPTrarhr�r��ALG_OP_DECRYPT)
r�keyrhr�Z
ciphertextZmsglenrbrcrGZ
multiplierZlongmsg�encZdecrrr
�test_aes_cbcUsD






z!LinuxKernelCryptoAPI.test_aes_cbcr}c)Cs�tjd�}tjd�}tjd�}tjd�}tjd�}tjd�}t|�}t|�}|jdd���N}	|	jtjtj|�|	jtjtjd|�|	j	�\}
}|
�v|
j
tj||tjd	�|
j
|tj�|
j
|�|
j|t|�|�}|j||||��|j|||d��WdQRX|	j	�\}
}|
�f||}
|
j
|
gtj||d
�|
j|t|�|�}|j||||��|j|||d��WdQRXtjd�j}|	j	�\}
}|
��||}
|
j|
gtjtj|tj�gtjtj|t|��|gtjtj||�gf�|
jt|
�|�}|j||||��|j|||d��WdQRX|	j	�\}
}|
�N|||}
|
j
|
gtj||d
�|
jt|
�|�}|j|||d��WdQRXWdQRXdS)NZ c939cc13397c1d37de6ae0e1cb7c423cZb3d8cc017cbb89b39e0f67e2Z c3b3c41f113a31b73d9a5cd432103069Z 24825602bd12a984e0092d3e448eda5fZ 93fe7d9e9bfd10348a5606e5cafa7354Z 0032a1dc85f1c9786925a2e71d8272ddZaeadzgcm(aes))rcrh�assoclenrR)rcrhro�I)r�r`rUr\r?rrerfZALG_SET_AEAD_AUTHSIZErorirjrarhr�r�r9�Structr�r�Z
ALG_SET_OPZ
ALG_SET_IVZALG_SET_AEAD_ASSOCLENrk)rrlrhZplainZassocZexpected_ctZexpected_tagZtaglenrorbrcrG�resr�Zpack_uint32rrr
�test_aead_aes_gcm~s`







   z&LinuxKernelCryptoAPI.test_aead_aes_gcmcCsn|jdd��X}tjd�}|jtjtj|�|j�\}}|� |jd�}|j	t
|�d�WdQRXWdQRXdS)N�rngZdrbg_pr_sha256r�)r\r��urandomr?rrerfror�r�rU)rrbZ
extra_seedrcrGZrnrrr
�test_drbg_pr_sha256�s

z(LinuxKernelCryptoAPI.test_drbg_pr_sha256c.Cs�tjtjtjd�}|��|jt��|j�WdQRX|jt��|jdd�WdQRX|jt��|jd�WdQRX|jt��|jtjdd�WdQRX|jt��|jtjdd�WdQRXWdQRXdS)Nr)rcrE)rcror)rrrr�r`rirj)rr�rrr
�test_sendmsg_afalg_args�sz,LinuxKernelCryptoAPI.test_sendmsg_afalg_argsc Cs�tjtjtjd�}|j|j�|jt��|jd
�WdQRX|jt	d��|jd�WdQRX|jt��|jddd	f�WdQRX|jt	d
��|jdddf�WdQRXdS)Nrr�
r�z
type too longr*r�r��?z
name too long�@�
ttttttttttttt)r{r��tttttttttttttt)r|r�)
rrrr-r
r�r�r4r�r)rr�rrr
�test_length_restriction�sz,LinuxKernelCryptoAPI.test_length_restrictionN)
rr r!r\rrZrdrgrnrsrvrwr}rrrr
rZ(s
)?rZ�winzrequires Windowsc@s eZdZddddhZdd�ZdS)�TestMSWindowsTCPFlagsZ
TCP_MAXSEGZTCP_NODELAYZTCP_FASTOPENZTCP_KEEPCNTcs6dd�tt�D�}�fdd�|D�}�jg|d�dS)NcSsg|]}|jd�r|�qS)ZTCP)r)r�rrrr
r��sz<TestMSWindowsTCPFlags.test_new_tcp_flags.<locals>.<listcomp>csg|]}|�jkr|�qSr)�
knownTCPFlags)r�r)rrr
r��szANew TCP flags were discovered. See bpo-32394 for more information)r�rr�)rZprovided�unknownr)rr
�test_new_tcp_flags�sz(TestMSWindowsTCPFlags.test_new_tcp_flagsN)rr r!r�r�rrrr
r�s
rcCs�tttttttttg	}|j	t
ttt
ttttttttttg�|jt�|jt�|jt�|j	ttg�|j	ttg�|j	t t!g�|jt"�|j	t#t$t%t&t't(t)t*t+t,t-t.t/t0t1t2t3t4t5t6t7t8t9t:t;g�|jt<�t=j>�}t=j?|�t=j@|�dS)N)Ar�r�r9r�r�r�r�rr��extendrEr[r�r�r�r�r�r�r�r�r�rrrr�r?r�r�r�r�r�r�r�r�rZr�rr	r
rr
rrrrrrrrrrrrrrr'r1rr*rYrrZthreading_setupZrun_unittestZthreading_cleanup)Ztests�thread_inforrr
�	test_main�sl





r��__main__)�rvZtestrr�r@rGrr�r�r<r�rMr�r�r8r��weakrefrrer`r�r9r-r/rr,r
rkr�r�rU�_threadrSr'r�rrrZHAVE_SOCKET_CANZHAVE_SOCKET_RDSZHAVE_SOCKET_ALGr�r�rwrr"r$r0r<r=rdrhrirjrnruryr~rr�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�rr	r"r'r*r+r-r.r/rKrTrWrlrqrtr�r�r�rrr	r
rrVrr
rrrrrrrrrrrrrrrrrr r_r'r1r9r?rEr[r�r�r�r�r�r�r=r�r�r�r�r�r�r�r�rr�r�r�r�r�r�r�r�r�rrrr�rr*rYrZrrr�rrrrr
�<module>sZ








3u!#	
^
D

[


?z7ww=$P;k7






















	 )5"
$l


	?
D
9
)
DS
',E
+
e


D&
=

Youez - 2016 - github.com/yon3zu
LinuXploit