Your IP : 216.73.216.196


Current Path : /opt/alt/python37/lib64/python3.7/test/__pycache__/
Upload File :
Current File : //opt/alt/python37/lib64/python3.7/test/__pycache__/test_asyncore.cpython-37.opt-1.pyc

B

� f?g�@s�ddlZddlZddlZddlZddlZddlZddlZddlZddlZddl	Z	ddl
mZddlm
Z
ejrxe�d��dZeed�ZGdd�d�ZGd	d
�d
�ZGdd�d�ZGd
d�d�Zdd�Zdd�ZGdd�dej�ZGdd�dej�ZGdd�dej�ZGdd�dej�Ze�eed�d�Gdd�dej��Z Gdd �d ej!�Z"Gd!d"�d"ej!�Z#Gd#d$�d$e"�Z$Gd%d&�d&�Z%Gd'd(�d(e%�Z&e�ej'd)�Gd*d+�d+e%��Z(e�ed,�Gd-d.�d.e%��Z)Gd/d0�d0e&ej�Z*e�eed1�d2�Gd3d4�d4e&ej��Z+Gd5d6�d6e(ej�Z,e�eed1�d2�Gd7d8�d8e(ej��Z-Gd9d:�d:e)ej�Z.e�eed1�d2�Gd;d<�d<e)ej��Z/e0d=k�r�e�1�dS)>�N)�support)�BytesIOztest is not helpful for PGO��AF_UNIXc@s$eZdZdd�Zdd�Zdd�ZdS)�dummysocketcCs
d|_dS)NF)�closed)�self�r	�7/opt/alt/python37/lib64/python3.7/test/test_asyncore.py�__init__szdummysocket.__init__cCs
d|_dS)NT)r)rr	r	r
�closeszdummysocket.closecCsdS)N�*r	)rr	r	r
�filenoszdummysocket.filenoN)�__name__�
__module__�__qualname__rrrr	r	r	r
rsrc@seZdZdd�Zdd�ZdS)�dummychannelcCst�|_dS)N)r�socket)rr	r	r
r!szdummychannel.__init__cCs|j��dS)N)rr)rr	r	r
r$szdummychannel.closeN)rrrrrr	r	r	r
r src@s(eZdZdd�Zdd�ZeZeZeZdS)�exitingdummycCsdS)Nr	)rr	r	r
r(szexitingdummy.__init__cCst���dS)N)�asyncore�ExitNow)rr	r	r
�handle_read_event+szexitingdummy.handle_read_eventN)rrrrr�handle_write_event�handle_close�handle_expt_eventr	r	r	r
r's
rc@s0eZdZdd�Zdd�ZeZeZeZdd�ZdS)�
crashingdummycCs
d|_dS)NF)�
error_handled)rr	r	r
r3szcrashingdummy.__init__cCs
t��dS)N)�	Exception)rr	r	r
r6szcrashingdummy.handle_read_eventcCs
d|_dS)NT)r)rr	r	r
�handle_error=szcrashingdummy.handle_errorN)	rrrrrrrrrr	r	r	r
r2srcCs�z�y|��|��\}}Wntjk
r0Yn�Xd}t��}xp|dkr�t��|dkr�t�|gggd�\}}}	|r�|d8}|�d�}
|�|
�	dd��d|
kr�Pt�
d	�q@W|��Wd|��|��XdS)
N��rg@g�������?��
�
�g{�G�z�?)
�listenZacceptr�timeout�timeZ	monotonic�select�recv�write�replace�sleepr�set)�evtZbufZserv�conn�addr�n�start�r�w�e�datar	r	r
�capture_serverAs&
r6cCs6tr(|jtjkr(t�|�t�||�n
|�|�dS)z9Helper function to bind a socket according to its family.N)�HAS_UNIX_SOCKETS�familyrrr�unlinkZbind_unix_socket�bind)�sockr/r	r	r
�
bind_af_awareZs
r<c@sNeZdZdd�Ze�eed�d�dd��Zdd�Z	d	d
�Z
dd�Zd
d�ZdS)�HelperFunctionTestscCs�t�}|�tjtj|�|�tjtj|�|�tjtj|�t�}t�|�|�|j	d�t�}t�|�|�|j	d�t�}t�|�|�|j	d�dS)NT)
r�assertRaisesrr�readr)Z
_exceptionr�assertEqualr)r�tr1�tr2r	r	r
�test_readwriteexces


z%HelperFunctionTests.test_readwriteexc�pollzselect.poll requiredc
Cs�d}tjdftjdftjdftjdftjdftjdff}Gdd�d�}x�|D]�\}}|�}|�t||�d�t	�
||�x"|D]}|�t||�||k�q~Wt�}|�t	j
t	j
||�t�}	|�|	jd�t	�
|	|�|�|	jd	�qLWdS)
N)r?�exptr)rrr?rEr)rc@s<eZdZdd�Zdd�Zdd�Zdd�Zd	d
�Zdd�Zd
S)z3HelperFunctionTests.test_readwrite.<locals>.testobjcSs"d|_d|_d|_d|_d|_dS)NF)r?r)rrEr)rr	r	r
r�s
z<HelperFunctionTests.test_readwrite.<locals>.testobj.__init__cSs
d|_dS)NT)r?)rr	r	r
r�szEHelperFunctionTests.test_readwrite.<locals>.testobj.handle_read_eventcSs
d|_dS)NT)r))rr	r	r
r�szFHelperFunctionTests.test_readwrite.<locals>.testobj.handle_write_eventcSs
d|_dS)NT)r)rr	r	r
r�sz@HelperFunctionTests.test_readwrite.<locals>.testobj.handle_closecSs
d|_dS)NT)rE)rr	r	r
r�szEHelperFunctionTests.test_readwrite.<locals>.testobj.handle_expt_eventcSs
d|_dS)NT)r)rr	r	r
r�sz@HelperFunctionTests.test_readwrite.<locals>.testobj.handle_errorN)	rrrrrrrrrr	r	r	r
�testobj�srFFT)r'ZPOLLINZPOLLPRIZPOLLOUTZPOLLERRZPOLLHUPZPOLLNVALr@�getattrrZ	readwriterr>rrr)
rZ
attributes�expectedrF�flagZexpectedattrZtobj�attrrArBr	r	r
�test_readwrite�s(
z"HelperFunctionTests.test_readwritecCs|�d�dS)NF)�closeall_check)rr	r	r
�
test_closeall�sz!HelperFunctionTests.test_closeallcCs|�d�dS)NT)rL)rr	r	r
�test_closeall_default�sz)HelperFunctionTests.test_closeall_defaultcCs�g}i}x8td�D],}t�}|�|�|�|jjd�|||<qW|rrtj}z|t_t��Wdtj|}t_Xn
t�|�|�t	|�d�x|D]}|�|jjd�q�WdS)Nr!FrT)
�ranger�appendr@rrr�
socket_map�	close_all�len)rZ
usedefault�lZtestmap�i�cZ	socketmapr	r	r
rL�s"


z"HelperFunctionTests.closeall_checkcCs�ytd��Wn"t��\}}}t��}YnX|�d�|\\}}}}}	}
|�tj�	|�dd�|�|d�|�||�|�|	|�|�|
d|||f�dS)NzI don't like spam!zExpected exception���ztest_asyncore.py�test_compact_tracebackz
[%s|%s|%s])
r�sys�exc_inforZcompact_traceback�failr@�os�path�split)rZreal_tZreal_vZreal_tbr2�fZfunction�line�t�v�infor	r	r
rX�s
z*HelperFunctionTests.test_compact_tracebackN)
rrrrC�unittest�
skipUnless�hasattrr'rKrMrNrLrXr	r	r	r
r=ds<r=c@sLeZdZdd�Zdd�Zdd�Zdd�Zd	d
�Zdd�Zd
d�Z	dd�Z
dS)�DispatcherTestscCsdS)Nr	)rr	r	r
�setUp�szDispatcherTests.setUpcCst��dS)N)rrR)rr	r	r
�tearDown�szDispatcherTests.tearDowncCs,t��}|�|��d�|�|��d�dS)NT)r�
dispatcherr@�readable�writable)r�dr	r	r
�
test_basic�szDispatcherTests.test_basiccCs$t��}|�t|�dt|��dS)Nz<asyncore.dispatcher at %#x>)rrjr@�repr�id)rrmr	r	r
�	test_repr�szDispatcherTests.test_reprc	Cs`t��}d}d}t���}|�|�|�|�WdQRX|����}|�|d|d|g�dS)NzLovely spam! Wonderful spam!zI don't like spam!zlog: %s)rrjrZcaptured_stderr�log�getvalue�
splitlinesr@)rrm�l1�l2�stderr�linesr	r	r
�test_log�s

zDispatcherTests.test_logc	Cs|t��}d}d}d}t���(}|�|d�|�|�|�|d�WdQRX|����}d|d|d|g}|�||�dS)	Nz#Have you got anything without spam?z.Why can't she have egg bacon spam and sausage?zTHAT'S got spam in it!ZEGGSZSPAMzEGGS: %szinfo: %szSPAM: %s)rrjr�captured_stdoutZlog_inforsrtr@)rrmrurv�l3�stdoutrxrHr	r	r
�
test_log_infos

zDispatcherTests.test_log_infoc	Csjt��}d|_t���&}|��|��|��|��WdQRX|�	��
�}ddddg}|�||�dS)Nr	z*warning: unhandled incoming priority eventzwarning: unhandled read eventzwarning: unhandled write eventz warning: unhandled connect event)rrjZignore_log_typesrrz�handle_expt�handle_read�handle_write�handle_connectrsrtr@)rrmr|rxrHr	r	r
�test_unhandleds
zDispatcherTests.test_unhandledcCsFt�tj�}ttd�r*|�|t�tj��t�d�}|�|dk�dS)N�strerrorrW�)	rZ	_strerror�errnoZEPERMrfr\r@r��
assertTrue)r�errr	r	r
�
test_strerror.s


zDispatcherTests.test_strerrorN)rrrrhrirnrqryr}r�r�r	r	r	r
rg�s
rgc@seZdZdd�Zdd�ZdS)�dispatcherwithsend_noreadcCsdS)NFr	)rr	r	r
rk8sz"dispatcherwithsend_noread.readablecCsdS)Nr	)rr	r	r
r�;sz(dispatcherwithsend_noread.handle_connectN)rrrrkr�r	r	r	r
r�7sr�c@s*eZdZdd�Zdd�Zejdd��ZdS)�DispatcherWithSendTestscCsdS)Nr	)rr	r	r
rh@szDispatcherWithSendTests.setUpcCst��dS)N)rrR)rr	r	r
riCsz DispatcherWithSendTests.tearDownc

Cs�t��}t��}|�d�t�|�}t�}|||f}tjt|d�}|�	�z�t
�d�d}t�}|�
�|�tj|f�t
�d�|�|�|�|�|�d�d}	x"|jr�|	dkr�t��|	d	8}	q�W|��|�|��|d
�Wdtj|td�XdS)Nr)�target�argsg�������?s$Suppose there isn't a 16-ton weight?g�������?r"i�rr �)r%)�	threadingZEventr�
settimeoutrZ	bind_portr�Threadr6r1r&r+r��
create_socket�connect�HOST�sendZ
out_bufferrrD�waitr@rs�join_thread�TIMEOUT)
rr-r;�portZcapr�rar5rmr0r	r	r
�	test_sendFs2







z!DispatcherWithSendTests.test_sendN)rrrrhrir�reap_threadsr�r	r	r	r
r�?sr��file_wrapperzasyncore.file_wrapper requiredc@sVeZdZdd�Zdd�Zdd�Zdd�Ze�e	e
d	�d
�dd��Zd
d�Zdd�Z
dS)�FileWrapperTestc	Cs.d|_ttjd��}|�|j�WdQRXdS)NsIt's not dead, it's sleeping!�wb)rm�openr�TESTFNr))r�filer	r	r
rhqszFileWrapperTest.setUpcCst�tj�dS)N)rr9r�)rr	r	r
rivszFileWrapperTest.tearDowncCs�t�tjtj�}t�|�}t�|�|�|j	|�|�|�
�|�|�|�d�d�|�|�
d�d�|��|�t|j
d�dS)N�
s
It's not dead�s, it'sr )r\r�rr��O_RDONLYrr�rZassertNotEqual�fdrr@r(r?r>�OSError)rr�r3r	r	r
�	test_recvys

zFileWrapperTest.test_recvc	Cs�d}d}t�tjtjtjB�}t�|�}t�|�|�	|�|�
|�|��ttjd�� }|�|��|j
||�WdQRXdS)NsCome again?sI want to buy some cheese.�rb)r\r�rr��O_WRONLY�O_APPENDrr�rr)r�r@r?rm)rZd1Zd2r�r3r�r	r	r
r��s



zFileWrapperTest.test_send�file_dispatcherz!asyncore.file_dispatcher requiredcsdt�tjtj�}g�G�fdd�dtj�}||�}t�|�tjdddd�|�	d�
��|j�dS)NcseZdZ�fdd�ZdS)z7FileWrapperTest.test_dispatcher.<locals>.FileDispatchercs��|�d��dS)N�)rPr()r)r5r	r
r�szCFileWrapperTest.test_dispatcher.<locals>.FileDispatcher.handle_readN)rrrrr	)r5r	r
�FileDispatcher�sr�g{�G�z�?Tr�)r%�use_poll�countr#)r\r�rr�r�rr�r�loopr@�joinrm)rr�r��sr	)r5r
�test_dispatcher�s
zFileWrapperTest.test_dispatcherc	CsNt�tjtj�}t�|�}t�|�t�dt	f��d}t�
�WdQRXdS)Nr�)r\r�rr�r�rr�rZcheck_warnings�ResourceWarningZ
gc_collect)rr�r_r	r	r
�test_resource_warning�s

z%FileWrapperTest.test_resource_warningc	Csht�tjtj�}t�|�}t�|�t�|j�|�	t
��|��WdQRX|�|jd�|��dS)NrW)r\r�rr�r�rr�rr�r>r�r@)rr�r_r	r	r
�test_close_twice�s

z FileWrapperTest.test_close_twiceN)rrrrhrir�r�rdrerfrr�r�r�r	r	r	r
r�ns

r�c@sFeZdZddd�Zdd�Zdd�Zdd	�Zd
d�Zdd
�Zdd�Z	dS)�BaseTestHandlerNcCstj�||�d|_dS)NF)rrjrrI)rr;r	r	r
r�szBaseTestHandler.__init__cCstd��dS)Nz'handle_accept not supposed to be called)r)rr	r	r
�
handle_accept�szBaseTestHandler.handle_acceptcCstd��dS)Nz)handle_accepted not supposed to be called)r)rr	r	r
�handle_accepted�szBaseTestHandler.handle_acceptedcCstd��dS)Nz(handle_connect not supposed to be called)r)rr	r	r
r��szBaseTestHandler.handle_connectcCstd��dS)Nz%handle_expt not supposed to be called)r)rr	r	r
r~�szBaseTestHandler.handle_exptcCstd��dS)Nz&handle_close not supposed to be called)r)rr	r	r
r�szBaseTestHandler.handle_closecCs�dS)Nr	)rr	r	r
r�szBaseTestHandler.handle_error)N)
rrrrr�r�r�r~rrr	r	r	r
r��s
r�c@s8eZdZdZefdd�Zedd��Zdd�Zdd	�Z	d
S)�
BaseServerzYA server which listens on an address and dispatches the
    connection to a handler.
    cCs>tj�|�|�|�|��t|j|�|�d�||_dS)N�)	rrjrr��set_reuse_addrr<rr$�handler)rr8r/r�r	r	r
r�s

zBaseServer.__init__cCs
|j��S)N)r�getsockname)rr	r	r
�address�szBaseServer.addresscCs|�|�dS)N)r�)rr;r/r	r	r
r��szBaseServer.handle_acceptedcCs�dS)Nr	)rr	r	r
r�szBaseServer.handle_errorN)
rrr�__doc__r�r�propertyr�r�rr	r	r	r
r��s
r�c@seZdZdd�Zdd�ZdS)�
BaseClientcCs"t�|�|�|�|�|�dS)N)r�rr�r�)rr8r�r	r	r
r�s

zBaseClient.__init__cCsdS)Nr	)rr	r	r
r��szBaseClient.handle_connectN)rrrrr�r	r	r	r
r��sr�c@s�eZdZdd�Zd%dd�Zdd�Zdd	�Zd
d�Zdd
�Zdd�Z	dd�Z
dd�Ze�
ej�d�d�dd��Zdd�Zdd�Zdd�Zdd�Zd d!�Zejd"d#��Zd$S)&�BaseTestAPIcCstjdd�dS)NT)Z
ignore_all)rrR)rr	r	r
ri�szBaseTestAPI.tearDownr�cCs`t|�d}d}x@tjrP|dkrPtjdd|jd�|jr<dS|d8}t�|�qW|�d�dS)N�drg{�G�z�?r )r%r�r�zflag not set)	�floatrrQr�r�rIr&r+r[)r�instancer%r�r	r	r
�loop_waiting_for_flag�sz!BaseTestAPI.loop_waiting_for_flagcCs:Gdd�dt�}t|j|j�}||j|j�}|�|�dS)Nc@seZdZdd�ZdS)z3BaseTestAPI.test_handle_connect.<locals>.TestClientcSs
d|_dS)NT)rI)rr	r	r
r�szBBaseTestAPI.test_handle_connect.<locals>.TestClient.handle_connectN)rrrr�r	r	r	r
�
TestClientsr�)r�r�r8r/r�r�)rr��server�clientr	r	r
�test_handle_connectszBaseTestAPI.test_handle_connectcCs:Gdd�dt�}||j|j�}t|j|j�}|�|�dS)Nc@seZdZdd�Zdd�ZdS)z4BaseTestAPI.test_handle_accept.<locals>.TestListenercSs:t�|�|�|�t|j|�|�d�|j��|_dS)Nr�)r�rr�r<rr$r�r�)rr8r/r	r	r
rs



z=BaseTestAPI.test_handle_accept.<locals>.TestListener.__init__cSs
d|_dS)NT)rI)rr	r	r
r�szBBaseTestAPI.test_handle_accept.<locals>.TestListener.handle_acceptN)rrrrr�r	r	r	r
�TestListenersr�)r�r8r/r�r�r�)rr�r�r�r	r	r
�test_handle_acceptszBaseTestAPI.test_handle_acceptcCs:Gdd�dt�}||j|j�}t|j|j�}|�|�dS)Nc@s$eZdZdd�Zdd�Zdd�ZdS)z6BaseTestAPI.test_handle_accepted.<locals>.TestListenercSs:t�|�|�|�t|j|�|�d�|j��|_dS)Nr�)r�rr�r<rr$r�r�)rr8r/r	r	r
r&s



z?BaseTestAPI.test_handle_accepted.<locals>.TestListener.__init__cSstj�|�dS)N)rrjr�)rr	r	r
r�-szDBaseTestAPI.test_handle_accepted.<locals>.TestListener.handle_acceptcSs|��d|_dS)NT)rrI)rr;r/r	r	r
r�0szFBaseTestAPI.test_handle_accepted.<locals>.TestListener.handle_acceptedN)rrrrr�r�r	r	r	r
r�$sr�)r�r8r/r�r�r�)rr�r�r�r	r	r
�test_handle_accepted!sz BaseTestAPI.test_handle_acceptedcCsLGdd�dt�}Gdd�dt�}t|j|j|�}||j|j�}|�|�dS)Nc@seZdZdd�ZdS)z0BaseTestAPI.test_handle_read.<locals>.TestClientcSs
d|_dS)NT)rI)rr	r	r
r=sz<BaseTestAPI.test_handle_read.<locals>.TestClient.handle_readN)rrrrr	r	r	r
r�<sr�c@seZdZdd�ZdS)z1BaseTestAPI.test_handle_read.<locals>.TestHandlercSst�||�|�d�dS)Nsxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx)r�rr�)rr.r	r	r
rAsz:BaseTestAPI.test_handle_read.<locals>.TestHandler.__init__N)rrrrr	r	r	r
�TestHandler@sr�)r�r�r�r8r/r�r�)rr�r�r�r�r	r	r
�test_handle_read9s
zBaseTestAPI.test_handle_readcCs:Gdd�dt�}t|j|j�}||j|j�}|�|�dS)Nc@seZdZdd�ZdS)z1BaseTestAPI.test_handle_write.<locals>.TestClientcSs
d|_dS)NT)rI)rr	r	r
r�Msz>BaseTestAPI.test_handle_write.<locals>.TestClient.handle_writeN)rrrr�r	r	r	r
r�Lsr�)r�r�r8r/r�r�)rr�r�r�r	r	r
�test_handle_writeIszBaseTestAPI.test_handle_writecCsLGdd�dt�}Gdd�dt�}t|j|j|�}||j|j�}|�|�dS)Nc@seZdZdd�Zdd�ZdS)z1BaseTestAPI.test_handle_close.<locals>.TestClientcSs|�d�dS)Ni)r()rr	r	r
rZsz=BaseTestAPI.test_handle_close.<locals>.TestClient.handle_readcSsd|_|��dS)NT)rIr)rr	r	r
r_sz>BaseTestAPI.test_handle_close.<locals>.TestClient.handle_closeN)rrrrrr	r	r	r
r�Xsr�c@seZdZdd�ZdS)z2BaseTestAPI.test_handle_close.<locals>.TestHandlercSst�||�|��dS)N)r�rr)rr.r	r	r
rdsz;BaseTestAPI.test_handle_close.<locals>.TestHandler.__init__N)rrrrr	r	r	r
r�csr�)r�r�r�r8r/r�r�)rr�r�r�r�r	r	r
�test_handle_closeTs
zBaseTestAPI.test_handle_closecsXd�G�fdd�dt�}G�fdd�dt�}t|j|j|�}||j|j�}|�|�dS)Ns�cs(eZdZ�fdd�Zdd�Zdd�ZdS)zCBaseTestAPI.test_handle_close_after_conn_broken.<locals>.TestClientcs|���dS)N)r�)r)r5r	r
r�tszPBaseTestAPI.test_handle_close_after_conn_broken.<locals>.TestClient.handle_writecSsd|_|��dS)NT)rIr)rr	r	r
rwszPBaseTestAPI.test_handle_close_after_conn_broken.<locals>.TestClient.handle_closecSsd|_|��dS)NT)rIr)rr	r	r
r~{szOBaseTestAPI.test_handle_close_after_conn_broken.<locals>.TestClient.handle_exptN)rrrr�rr~r	)r5r	r
r�rsr�cs eZdZ�fdd�Zdd�ZdS)zDBaseTestAPI.test_handle_close_after_conn_broken.<locals>.TestHandlercs|�t���|��dS)N)r(rSr)r)r5r	r
r�szPBaseTestAPI.test_handle_close_after_conn_broken.<locals>.TestHandler.handle_readcSsdS)NFr	)rr	r	r
rl�szMBaseTestAPI.test_handle_close_after_conn_broken.<locals>.TestHandler.writableN)rrrrrlr	)r5r	r
r�sr�)r�r�r�r8r/r�r�)rr�r�r�r�r	)r5r
�#test_handle_close_after_conn_brokenls
	z/BaseTestAPI.test_handle_close_after_conn_brokenZsunosz OOB support is broken on SolariscCs�tr|jtjkr|�d�tjdkr4|jr4|�d�Gdd�dt�}Gdd�dt	�}t
|j|j|�}||j|j�}|�
|�dS)Nz"Not applicable to AF_UNIX sockets.�darwinz(poll may fail on macOS; see issue #28087c@seZdZdd�ZdS)z0BaseTestAPI.test_handle_expt.<locals>.TestClientcSs|j�dtj�d|_dS)NiT)rr(�MSG_OOBrI)rr	r	r
r~�sz<BaseTestAPI.test_handle_expt.<locals>.TestClient.handle_exptN)rrrr~r	r	r	r
r��sr�c@seZdZdd�ZdS)z1BaseTestAPI.test_handle_expt.<locals>.TestHandlercSs*t�||�|j�ttd�d�tj�dS)N��zlatin-1)r�rrr��bytes�chrr�)rr.r	r	r
r�sz:BaseTestAPI.test_handle_expt.<locals>.TestHandler.__init__N)rrrrr	r	r	r
r��sr�)r7r8rr�skipTestrY�platformr�r�r�r�r/r�r�)rr�r�r�r�r	r	r
�test_handle_expt�s

zBaseTestAPI.test_handle_exptcCs:Gdd�dt�}t|j|j�}||j|j�}|�|�dS)Nc@seZdZdd�Zdd�ZdS)z1BaseTestAPI.test_handle_error.<locals>.TestClientcSsdddS)Ng�?rr	)rr	r	r
r��sz>BaseTestAPI.test_handle_error.<locals>.TestClient.handle_writecSs.d|_y�Wntk
r Yn
Xtd��dS)NTzexception not raised)rI�ZeroDivisionErrorr)rr	r	r
r�sz>BaseTestAPI.test_handle_error.<locals>.TestClient.handle_errorN)rrrr�rr	r	r	r
r��sr�)r�r�r8r/r�r�)rr�r�r�r	r	r
�test_handle_error�szBaseTestAPI.test_handle_errorcCs�t|j|j�}t|j|j�}|�|j�|�|j�|�|j�t	j
d|jdd�|�|j�|�|j�|�|j�|�|j�|��|�|j�|�|j�|�|j�|�|j�|��|�|j�|�|j�dS)Ng{�G�z�?r�)r%r�r�)
r�r8r/r�r��assertFalseZ	connectedr�Z	acceptingrr�r�r)rr�r�r	r	r
�test_connection_attributes�s$z&BaseTestAPI.test_connection_attributescCs^t��}|�|j�|�|jjtj�|�|jj|j�|�|j��d�|�	|j�
��dS)Nr)rrjr�r8r@r�type�SOCK_STREAMZ
gettimeoutr��get_inheritable)rr�r	r	r
�test_create_socket�szBaseTestAPI.test_create_socketcCs�tr|jtjkr|�d�t��}|�|j�|�|j	�|�
d�|j��d}t��}|�|j�|�t
|j|j	d|f�dS)Nz"Not applicable to AF_UNIX sockets.r�r r)r7r8rrr�rrjr�r:r/r$r�r>r�)r�s1r��s2r	r	r
�	test_bind�s

zBaseTestAPI.test_bindc	Cs�tr|jtjkr|�d�t�|j���}y|�tjtjd�Wntk
r\t	�
d�YnbXt�t�|j��}|�
|j�tjtj��|j��|�|j�|��|�|j�tjtj��WdQRXdS)Nz"Not applicable to AF_UNIX sockets.r z+SO_REUSEADDR not supported on this platform)r7r8rrr��
setsockopt�
SOL_SOCKETZSO_REUSEADDRr�rd�skiprrjr�Z
getsockoptrr�r�r�)rr;r�r	r	r
�test_set_reuse_addr�s


zBaseTestAPI.test_set_reuse_addrc
Cs�|jtjttdt��fkr$|�d�t|j|j�}tj	dd�d�}|�
�zlt�|jtj��R}|�d�|�
tjtjt�ddd	��y|�|j�Wntk
r�YnXWdQRXWdtj|td
�XdS)N�AF_INET6z%test specific to AF_INET and AF_INET6cSstjddd�S)Ng�������?r�)r%r�)rr�r	r	r	r
�<lambda>	sz0BaseTestAPI.test_quick_connect.<locals>.<lambda>)r�g�������?Ziir r)r%)r8r�AF_INETrG�objectr�r�r/r�r�r1r�r�r�r�Z	SO_LINGER�structZpackr�r�r�rr�r�)rr�rar�r	r	r
�test_quick_connects

zBaseTestAPI.test_quick_connectN)r�)rrrrir�r�r�r�r�r�r�r�rdZskipIfrYr��
startswithr�r�r�r�r�r�rr�r�r	r	r	r
r��s"
 r�c@seZdZejZejdfZdS)�TestAPI_UseIPv4SocketsrN)	rrrrr�r8rr�r/r	r	r	r
r�sr�zIPv6 support requiredc@seZdZejZejdfZdS)�TestAPI_UseIPv6SocketsrN)	rrrrr�r8rZHOSTv6r/r	r	r	r
r�sr�zUnix sockets requiredc@s$eZdZerejZejZ	dd�Z
dS)�TestAPI_UseUnixSocketscCst�|j�t�|�dS)N)rr9r/r�ri)rr	r	r
ri(szTestAPI_UseUnixSockets.tearDownN)rrrr7rrr8rr�r/rir	r	r	r
r�"sr�c@seZdZdZdS)�TestAPI_UseIPv4SelectFN)rrrr�r	r	r	r
r�,sr�rDzselect.poll requiredc@seZdZdZdS)�TestAPI_UseIPv4PollTN)rrrr�r	r	r	r
r�/sr�c@seZdZdZdS)�TestAPI_UseIPv6SelectFN)rrrr�r	r	r	r
r�3sr�c@seZdZdZdS)�TestAPI_UseIPv6PollTN)rrrr�r	r	r	r
r�6sr�c@seZdZdZdS)�TestAPI_UseUnixSocketsSelectFN)rrrr�r	r	r	r
r�:sr�c@seZdZdZdS)�TestAPI_UseUnixSocketsPollTN)rrrr�r	r	r	r
r�=sr��__main__)2rrdr'r\rrYr&r�r�r�Ztestr�iorZPGOZSkipTestr�rfr7rrrrr6r<ZTestCaser=rgZdispatcher_with_sendr�r�rer�rjr�r�r�r�r�ZIPV6_ENABLEDr�r�r�r�r�r�r�r�r�mainr	r	r	r
�<module>sf



H/
G(