Your IP : 216.73.216.60


Current Path : /opt/alt/python35/lib64/python3.5/test/__pycache__/
Upload File :
Current File : //opt/alt/python35/lib64/python3.5/test/__pycache__/test_asyncore.cpython-35.opt-2.pyc



���]�g�@s�ddlZddlZddlZddlZddlZddlZddlZddlZddlZddl	m
Z
ddlmZyddl
Z
Wnek
r�dZ
YnXdZeed�ZGdd�d�ZGdd	�d	�ZGd
d�d�ZGdd
�d
�Zdd�Zdd�ZGdd�dej�ZGdd�dej�ZGdd�dej�ZGdd�dej�Zejeed�d�Gdd�dej��ZGdd�dej �Z!Gd d!�d!ej �Z"Gd"d#�d#e!�Z#Gd$d%�d%�Z$Gd&d'�d'e$�Z%eje
j&d(�Gd)d*�d*e$��Z'ejed+�Gd,d-�d-e$��Z(Gd.d/�d/e%ej�Z)ejeed0�d1�Gd2d3�d3e%ej��Z*Gd4d5�d5e'ej�Z+ejeed0�d1�Gd6d7�d7e'ej��Z,Gd8d9�d9e(ej�Z-ejeed0�d1�Gd:d;�d;e(ej��Z.e/d<kr�ej0�dS)=�N)�support)�BytesIO��AF_UNIXc@s4eZdZdd�Zdd�Zdd�ZdS)�dummysocketcCs
d|_dS)NF)�closed)�self�r	�2/opt/alt/python35/lib64/python3.5/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
rsrc@s(eZdZdd�Zdd�ZdS)�dummychannelcCst�|_dS)N)r�socket)rr	r	r
r!szdummychannel.__init__cCs|jj�dS)N)rr)rr	r	r
r$szdummychannel.closeN)rrrrrr	r	r	r
r src@s:eZdZdd�Zdd�ZeZeZeZdS)�exitingdummycCsdS)Nr	)rr	r	r
r(szexitingdummy.__init__cCstj��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@sFeZdZdd�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rcCsz�y |j�|j�\}}Wntjk
r:Yn�Xd}tj�}x�|dkr�tj�|dkr�tj|gggd�\}}}	|r�|d8}|jd�}
|j|
jdd��d|
kr�Ptj	d	�qPW|j
�Wd|j
�|j�XdS)
N��rg@g�������?��
s
�g{�G�z�?)�listen�acceptr�timeout�time�select�recv�write�replace�sleepr�set)�evt�bufZserv�conn�addr�n�start�r�w�e�datar	r	r
�capture_serverAs&
%$

r7cCs6tr%|jtjkr%tj|�|j|�dS)N)�HAS_UNIX_SOCKETS�familyrrr�unlink�bind)�sockr0r	r	r
�
bind_af_awareZs
r=c@sseZdZdd�Zejeed�d�dd��Zdd�Z	d	d
�Z
dd�Zd
d�ZdS)�HelperFunctionTestscCs�t�}|jtjtj|�|jtjtj|�|jtjtj|�t�}tj|�|j|j	d�t�}tj|�|j|j	d�t�}tj|�|j|j	d�dS)NT)
r�assertRaisesrr�readr)�
_exceptionr�assertEqualr)r�tr1�tr2r	r	r
�test_readwriteexccs		
	
	
z%HelperFunctionTests.test_readwriteexc�pollzselect.poll requiredc
CsHd
}tjdftjdftjdftjdftjdftjdff}Gdd�d�}x�|D]�\}}|�}|jt||�d�t	j
||�x-|D]%}|jt||�||k�q�Wt�}|jt	j
t	j
||�t�}	|j|	jd�t	j
|	|�|j|	jd	�qnWdS)Nr@�exptr)rrc@sXeZdZdd�Zdd�Zdd�Zdd�Zd	d
�Zdd�Zd
S)z3HelperFunctionTests.test_readwrite.<locals>.testobjcSs1d|_d|_d|_d|_d|_dS)NF)r@r)rrGr)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)rG)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rHFT)r@rGr)rr)r'�POLLIN�POLLPRI�POLLOUT�POLLERR�POLLHUP�POLLNVALrB�getattrrZ	readwriterr?rrr)
rZ
attributes�expectedrH�flagZexpectedattrZtobj�attrrCrDr	r	r
�test_readwrite�s(	
#		z"HelperFunctionTests.test_readwritecCs|jd�dS)NF)�closeall_check)rr	r	r
�
test_closeall�sz!HelperFunctionTests.test_closeallcCs|jd�dS)NT)rT)rr	r	r
�test_closeall_default�sz)HelperFunctionTests.test_closeall_defaultcCs�g}i}xJtd�D]<}t�}|j|�|j|jjd�|||<qW|r�tj}z|t_tj�Wdtj|}t_Xn
tj|�|jt	|�d�x$|D]}|j|jjd�q�WdS)Nr!FrT)
�ranger�appendrBrrr�
socket_map�	close_all�len)rZ
usedefault�lZtestmap�i�cZ	socketmapr	r	r
rT�s"	
		

z"HelperFunctionTests.closeall_checkcCs�ytd��Wn)tj�\}}}tj�}YnX|jd�|\\}}}}}	}
|jtjj	|�dd�|j|d�|j||�|j|	|�|j|
d|||f�dS)NzI don't like spam!zExpected exceptionr ztest_asyncore.py�test_compact_tracebackz
[%s|%s|%s]���)
r�sys�exc_inforZcompact_traceback�failrB�os�path�split)rZreal_tZreal_vZreal_tbr3�f�function�line�t�v�infor	r	r
r_�s
 z*HelperFunctionTests.test_compact_tracebackN)
rrrrE�unittest�
skipUnless�hasattrr'rSrUrVrTr_r	r	r	r
r>bs'<r>c@speZdZdd�Zdd�Zdd�Zdd�Zd	d
�Zdd�Zd
d�Z	dd�Z
dS)�DispatcherTestscCsdS)Nr	)rr	r	r
�setUp�szDispatcherTests.setUpcCstj�dS)N)rrZ)rr	r	r
�tearDown�szDispatcherTests.tearDowncCs<tj�}|j|j�d�|j|j�d�dS)NT)r�
dispatcherrB�readable�writable)r�dr	r	r
�
test_basic�szDispatcherTests.test_basiccCs0tj�}|jt|�dt|��dS)Nz<asyncore.dispatcher at %#x>)rrsrB�repr�id)rrvr	r	r
�	test_repr�szDispatcherTests.test_reprcCs|tj�}d}d}tj��!}|j|�|j|�WdQRX|j�j�}|j|d|d|g�dS)NzLovely spam! Wonderful spam!zI don't like spam!zlog: %s)rrsrZcaptured_stderr�log�getvalue�
splitlinesrB)rrv�l1�l2�stderr�linesr	r	r
�test_log�s
zDispatcherTests.test_logcCs�tj�}d}d}d}tj��4}|j|d�|j|�|j|d�WdQRX|j�j�}d|d|d|g}|j||�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)rrsr�captured_stdoutZlog_infor|r}rB)rrvr~r�l3�stdoutr�rPr	r	r
�
test_log_info
s
zDispatcherTests.test_log_infocCs�tj�}f|_tj��/}|j�|j�|j�|j�WdQRX|j	�j
�}ddddg}|j||�dS)Nz*warning: unhandled incoming priority eventzwarning: unhandled read eventzwarning: unhandled write eventz warning: unhandled connect event)rrsZignore_log_typesrr��handle_expt�handle_read�handle_write�handle_connectr|r}rB)rrvr�r�rPr	r	r
�test_unhandleds	


	zDispatcherTests.test_unhandledcCsctjtj�}ttd�r=|j|tjtj��tjd�}|j|dk�dS)N�strerrorr �r`)	rZ	_strerror�errno�EPERMrordrBr��
assertTrue)r�errr	r	r
�
test_strerror,s
zDispatcherTests.test_strerrorN)rrrrqrrrwrzr�r�r�r�r	r	r	r
rp�s
rpc@s(eZdZdd�Zdd�ZdS)�dispatcherwithsend_noreadcCsdS)NFr	)rr	r	r
rt6sz"dispatcherwithsend_noread.readablecCsdS)Nr	)rr	r	r
r�9sz(dispatcherwithsend_noread.handle_connectN)rrrrtr�r	r	r	r
r�5sr�c@sOeZdZdd�Zdd�Zejed�ej	dd���Z
dS)	�DispatcherWithSendTestscCsdS)Nr	)rr	r	r
rq>szDispatcherWithSendTests.setUpcCstj�dS)N)rrZ)rr	r	r
rrAsz DispatcherWithSendTests.tearDownz!Threading required for this test.c
Csmtj�}tj�}|jd�tj|�}t�}|||f}tjdtd|�}|j	�z�t
jd�d}t�}|j
�|jtj|f�t
jd�|j|�|j|�|jd�d}	x-|jr|	d	krtj�|	d
8}	q�W|j�|j|j�|d�Wd|jdt�|j�rh|jd
�XdS)Nr�target�argsg�������?s$Suppose there isn't a 16-ton weight?g�������?s
i�rr �r%zjoin() timed out)�	threading�Eventr�
settimeoutrZ	bind_portr�Threadr7r2r&r+r��
create_socket�connect�HOST�sendZ
out_bufferrrF�waitrBr|�join�TIMEOUT�is_aliverc)
rr-r<�portZcapr�rjr6rvr1r	r	r
�	test_sendDs6
	

	






z!DispatcherWithSendTests.test_sendN)rrrrqrrrmrnr�r�reap_threadsr�r	r	r	r
r�=sr��file_wrapperzasyncore.file_wrapper requiredc@seZdZdd�Zdd�Zdd�Zdd�Zeje	e
d	�d
�dd��Zd
d�Zdd�Z
dS)�FileWrapperTestc	Cs9d|_ttjd��}|j|j�WdQRXdS)NsIt's not dead, it's sleeping!�wb)rv�openr�TESTFNr))r�filer	r	r
rqrs	zFileWrapperTest.setUpcCstjtj�dS)N)rr:r�)rr	r	r
rrwszFileWrapperTest.tearDowncCs�tjtjtj�}tj|�}tj|�|j|j	|�|j|j
�|�|j|jd�d�|j|j
d�d�|j�|jt|j
d�dS)N�
s
It's not dead�s, it'sr )rdr�rr��O_RDONLYrr�rZassertNotEqual�fdrrBr(r@r?�OSError)rr�r4r	r	r
�	test_recvzs

zFileWrapperTest.test_recvcCs�d}d}tjtjtjtjB�}tj|�}tj|�|j	|�|j
|�|j�ttjd��(}|j|j�|j
||�WdQRXdS)NsCome again?sI want to buy some cheese.�rb)rdr�rr��O_WRONLY�O_APPENDrr�rr)r�rBr@rv)rZd1Zd2r�r4r�r	r	r
r��s



zFileWrapperTest.test_send�file_dispatcherz!asyncore.file_dispatcher requiredcs�tjtjtj�}g�G�fdd�dtj�}||�}tj|�tjdddddd�|j	d	j
��|j�dS)
Ncs"eZdZ�fdd�ZdS)z7FileWrapperTest.test_dispatcher.<locals>.FileDispatchercs�j|jd��dS)N�)rXr()r)r6r	r
r��szCFileWrapperTest.test_dispatcher.<locals>.FileDispatcher.handle_readN)rrrr�r	)r6r	r
�FileDispatcher�sr�r%g{�G�z�?�use_pollT�countr�r")rdr�rr�r�rr�r�looprBr�rv)rr�r��sr	)r6r
�test_dispatcher�s
zFileWrapperTest.test_dispatcherc	Csetjtjtj�}tj|�}tj|�tjdt	f��d}tj
�WdQRXdS)Nr�)rdr�rr�r�rr�rZcheck_warnings�ResourceWarningZ
gc_collect)rr�rgr	r	r
�test_resource_warning�s
z%FileWrapperTest.test_resource_warningcCs_tjtjtj�}tj|�}tj|�|j�|j|j	d�|j�dS)Nr r`)
rdr�rr�r�rr�rrBr�)rr�rgr	r	r
�test_close_twice�s

z FileWrapperTest.test_close_twiceN)rrrrqrrr�r�rmrnrorr�r�r�r	r	r	r
r�os

r�c@sgeZdZddd�Zdd�Zdd�Zdd	�Zd
d�Zdd
�Zdd�Z	dS)�BaseTestHandlerNcCs tjj||�d|_dS)NF)rrsrrQ)rr<r	r	r
r�szBaseTestHandler.__init__cCstd��dS)Nz'handle_accept not supposed to be called)r)rr	r	r
�
handle_accept�szBaseTestHandler.handle_acceptcCstd��dS)Nz)handle_accepted not supposed to be called)r)rr	r	r
�handle_accepted�szBaseTestHandler.handle_acceptedcCstd��dS)Nz(handle_connect not supposed to be called)r)rr	r	r
r��szBaseTestHandler.handle_connectcCstd��dS)Nz%handle_expt not supposed to be called)r)rr	r	r
r��szBaseTestHandler.handle_exptcCstd��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)
rrrrr�r�r�r�rrr	r	r	r
r��sr�c@sIeZdZedd�Zedd��Zdd�Zdd�Zd	S)
�
BaseServercCsQtjj|�|j|�|j�t|j|�|jd�||_dS)N�)	rrsrr��set_reuse_addrr=rr#�handler)rr9r0r�r	r	r
r�s


zBaseServer.__init__cCs
|jj�S)N)r�getsockname)rr	r	r
�address�szBaseServer.addresscCs|j|�dS)N)r�)rr<r0r	r	r
r��szBaseServer.handle_acceptedcCs�dS)Nr	)rr	r	r
r�szBaseServer.handle_errorN)	rrrr�r�propertyr�r�rr	r	r	r
r��sr�c@s(eZdZdd�Zdd�ZdS)�
BaseClientcCs+tj|�|j|�|j|�dS)N)r�rr�r�)rr9r�r	r	r
r�s

zBaseClient.__init__cCsdS)Nr	)rr	r	r
r��szBaseClient.handle_connectN)rrrrr�r	r	r	r
r��sr�c@seZdZdd�Zddd�Zdd�Zdd	�Zd
d�Zdd
�Zdd�Z	dd�Z
dd�Zej
ejjd�d�dd��Zdd�Zdd�Zdd�Zdd�Zd d!�Zejed"�ejd#d$���Zd%S)&�BaseTestAPIcCstj�dS)N)rrZ)rr	r	r
rr�szBaseTestAPI.tearDownr�cCs�t|�d}d}x\tjrt|dkrttjddddd|j�|jrZdS|d8}tj|�qW|jd�dS)	N�drr%g{�G�z�?r�r r�zflag not set)	�floatrrYr�r�rQr&r+rc)r�instancer%r�r	r	r
�loop_waiting_for_flag�s	
z!BaseTestAPI.loop_waiting_for_flagcCsQGdd�dt�}t|j|j�}||j|j�}|j|�dS)Nc@seZdZdd�ZdS)z3BaseTestAPI.test_handle_connect.<locals>.TestClientcSs
d|_dS)NT)rQ)rr	r	r
r�szBBaseTestAPI.test_handle_connect.<locals>.TestClient.handle_connectN)rrrr�r	r	r	r
�
TestClientsr�)r�r�r9r0r�r�)rr��server�clientr	r	r
�test_handle_connectszBaseTestAPI.test_handle_connectcCsQGdd�dt�}||j|j�}t|j|j�}|j|�dS)Nc@s(eZdZdd�Zdd�ZdS)z4BaseTestAPI.test_handle_accept.<locals>.TestListenercSsMtj|�|j|�t|j|�|jd�|jj�|_dS)Nr�)r�rr�r=rr#r�r�)rr9r0r	r	r
rs



z=BaseTestAPI.test_handle_accept.<locals>.TestListener.__init__cSs
d|_dS)NT)rQ)rr	r	r
r�szBBaseTestAPI.test_handle_accept.<locals>.TestListener.handle_acceptN)rrrrr�r	r	r	r
�TestListenersr�)r�r9r0r�r�r�)rr�r�r�r	r	r
�test_handle_acceptszBaseTestAPI.test_handle_acceptcCsQGdd�dt�}||j|j�}t|j|j�}|j|�dS)Nc@s4eZdZdd�Zdd�Zdd�ZdS)z6BaseTestAPI.test_handle_accepted.<locals>.TestListenercSsMtj|�|j|�t|j|�|jd�|jj�|_dS)Nr�)r�rr�r=rr#r�r�)rr9r0r	r	r
r$s



z?BaseTestAPI.test_handle_accepted.<locals>.TestListener.__init__cSstjj|�dS)N)rrsr�)rr	r	r
r�+szDBaseTestAPI.test_handle_accepted.<locals>.TestListener.handle_acceptcSs|j�d|_dS)NT)rrQ)rr<r0r	r	r
r�.s
zFBaseTestAPI.test_handle_accepted.<locals>.TestListener.handle_acceptedN)rrrrr�r�r	r	r	r
r�"sr�)r�r9r0r�r�r�)rr�r�r�r	r	r
�test_handle_acceptedsz BaseTestAPI.test_handle_acceptedcCsjGdd�dt�}Gdd�dt�}t|j|j|�}||j|j�}|j|�dS)Nc@seZdZdd�ZdS)z0BaseTestAPI.test_handle_read.<locals>.TestClientcSs
d|_dS)NT)rQ)rr	r	r
r�;sz<BaseTestAPI.test_handle_read.<locals>.TestClient.handle_readN)rrrr�r	r	r	r
r�:sr�c@seZdZdd�ZdS)z1BaseTestAPI.test_handle_read.<locals>.TestHandlercSs%tj||�|jdd�dS)N�xi)r�rr�)rr/r	r	r
r?sz:BaseTestAPI.test_handle_read.<locals>.TestHandler.__init__N)rrrrr	r	r	r
�TestHandler>sr�)r�r�r�r9r0r�r�)rr�r�r�r�r	r	r
�test_handle_read7s
zBaseTestAPI.test_handle_readcCsQGdd�dt�}t|j|j�}||j|j�}|j|�dS)Nc@seZdZdd�ZdS)z1BaseTestAPI.test_handle_write.<locals>.TestClientcSs
d|_dS)NT)rQ)rr	r	r
r�Ksz>BaseTestAPI.test_handle_write.<locals>.TestClient.handle_writeN)rrrr�r	r	r	r
r�Jsr�)r�r�r9r0r�r�)rr�r�r�r	r	r
�test_handle_writeGszBaseTestAPI.test_handle_writecCsjGdd�dt�}Gdd�dt�}t|j|j|�}||j|j�}|j|�dS)Nc@s(eZdZdd�Zdd�ZdS)z1BaseTestAPI.test_handle_close.<locals>.TestClientcSs|jd�dS)Ni)r()rr	r	r
r�Xsz=BaseTestAPI.test_handle_close.<locals>.TestClient.handle_readcSsd|_|j�dS)NT)rQr)rr	r	r
r]s	z>BaseTestAPI.test_handle_close.<locals>.TestClient.handle_closeN)rrrr�rr	r	r	r
r�Vsr�c@seZdZdd�ZdS)z2BaseTestAPI.test_handle_close.<locals>.TestHandlercSstj||�|j�dS)N)r�rr)rr/r	r	r
rbsz;BaseTestAPI.test_handle_close.<locals>.TestHandler.__init__N)rrrrr	r	r	r
r�asr�)r�r�r�r9r0r�r�)rr�r�r�r�r	r	r
�test_handle_closeRs
zBaseTestAPI.test_handle_closecs�dd�G�fdd�dt�}G�fdd�dt�}t|j|j|�}||j|j�}|j|�dS)Ns�cs:eZdZ�fdd�Zdd�Zdd�ZdS)zCBaseTestAPI.test_handle_close_after_conn_broken.<locals>.TestClientcs|j��dS)N)r�)r)r6r	r
r�rszPBaseTestAPI.test_handle_close_after_conn_broken.<locals>.TestClient.handle_writecSsd|_|j�dS)NT)rQr)rr	r	r
rus	zPBaseTestAPI.test_handle_close_after_conn_broken.<locals>.TestClient.handle_closecSsd|_|j�dS)NT)rQr)rr	r	r
r�ys	zOBaseTestAPI.test_handle_close_after_conn_broken.<locals>.TestClient.handle_exptN)rrrr�rr�r	)r6r	r
r�psr�cs.eZdZ�fdd�Zdd�ZdS)zDBaseTestAPI.test_handle_close_after_conn_broken.<locals>.TestHandlercs!|jt���|j�dS)N)r(r[r)r)r6r	r
r�szPBaseTestAPI.test_handle_close_after_conn_broken.<locals>.TestHandler.handle_readcSsdS)NFr	)rr	r	r
ru�szMBaseTestAPI.test_handle_close_after_conn_broken.<locals>.TestHandler.writableN)rrrr�rur	)r6r	r
r�}sr�)r�r�r�r9r0r�r�)rr�r�r�r�r	)r6r
�#test_handle_close_after_conn_brokenjs

	z/BaseTestAPI.test_handle_close_after_conn_broken�sunosz OOB support is broken on SolariscCs�tr%|jtjkr%|jd�tjdkrJ|jrJ|jd�Gdd�dt�}Gdd�dt	�}t
|j|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#|jjdtj�d|_dS)NiT)rr(�MSG_OOBrQ)rr	r	r
r��sz<BaseTestAPI.test_handle_expt.<locals>.TestClient.handle_exptN)rrrr�r	r	r	r
r��sr�c@seZdZdd�ZdS)z1BaseTestAPI.test_handle_expt.<locals>.TestHandlercSs9tj||�|jjttd�d�tj�dS)N��zlatin-1)r�rrr��bytes�chrr�)rr/r	r	r
r�sz:BaseTestAPI.test_handle_expt.<locals>.TestHandler.__init__N)rrrrr	r	r	r
r��sr�)r8r9rr�skipTestra�platformr�r�r�r�r0r�r�)rr�r�r�r�r	r	r
�test_handle_expt�s

zBaseTestAPI.test_handle_exptcCsQGdd�dt�}t|j|j�}||j|j�}|j|�dS)Nc@s(eZdZdd�Zdd�ZdS)z1BaseTestAPI.test_handle_error.<locals>.TestClientcSsdddS)Ng�?rr	)rr	r	r
r��sz>BaseTestAPI.test_handle_error.<locals>.TestClient.handle_writecSs5d|_y�Wntk
r$Yn
Xtd��dS)NTzexception not raised)rQ�ZeroDivisionErrorr)rr	r	r
r�s	
z>BaseTestAPI.test_handle_error.<locals>.TestClient.handle_errorN)rrrr�rr	r	r	r
r��sr�)r�r�r9r0r�r�)rr�r�r�r	r	r
�test_handle_error�szBaseTestAPI.test_handle_errorcCs1t|j|j�}t|j|j�}|j|j�|j|j�|j|j�t	j
ddd|jdd�|j|j�|j|j�|j|j�|j|j�|j�|j|j�|j|j�|j|j�|j|j�|j�|j|j�|j|j�dS)Nr%g{�G�z�?r�r�r�)
r�r9r0r�r��assertFalseZ	connectedr�Z	acceptingrr�r�r)rr�r�r	r	r
�test_connection_attributes�s$

z&BaseTestAPI.test_connection_attributescCs�tj�}|j|j�|j|jj|j�ttdd�}tj|B}ttd�r�|j	|jj
|tjB|f�n|j|jj
|�dS)N�
SOCK_NONBLOCKr�SOCK_CLOEXEC)rrsr�r9rBrrO�SOCK_STREAMroZassertIn�typer�)rr�r�Z	sock_typer	r	r
�test_create_socket�s
zBaseTestAPI.test_create_socketcCs�tr%|jtjkr%|jd�tj�}|j|j�|j|j	�|j
d�|jj�d}tj�}|j|j�|jt
|j|j	d|f�dS)Nz"Not applicable to AF_UNIX sockets.r�r r)r8r9rrr�rrsr�r;r0r#r�r?r�)r�s1r��s2r	r	r
�	test_bind�s

zBaseTestAPI.test_bindcCstr%|jtjkr%|jd�tj|j�}z�y|jtjtjd�Wntk
rxt	j
d�Yn�Xtjtj|j��}|j
|jjtjtj��|jj�|j|j�|j�|j|jjtjtj��Wd|j�XdS)Nz"Not applicable to AF_UNIX sockets.r z+SO_REUSEADDR not supported on this platform)r8r9rrr��
setsockopt�
SOL_SOCKET�SO_REUSEADDRr�rm�skiprrsr��
getsockoptrr�r�r�)rr<r�r	r	r
�test_set_reuse_addr�s 




zBaseTestAPI.test_set_reuse_addrz!Threading required for this test.cs�jtjttdt��fkrt�j�j�}tjddd����j	���fdd�}�j
|�tj�jtj�}|jd�|j
tjtjtjdd	d
��z-y|j|j�Wntk
r�YnXWd|j�XdS)N�AF_INET6r�cSstjdddd�S)Nr%g�������?r�i�)rr�r	r	r	r
�<lambda>
sz0BaseTestAPI.test_quick_connect.<locals>.<lambda>cs-�jdt��j�r)�jd�dS)Nr%zjoin() timed out)r�r�r�rcr	)rrjr	r
�cleanup
sz/BaseTestAPI.test_quick_connect.<locals>.cleanupg�������?�iir r)r9r�AF_INETrO�objectr�r0r�r�r2Z
addCleanupr�r�r�r��	SO_LINGER�struct�packr�r�r�r)rr�r�r�r	)rrjr
�test_quick_connects'



	zBaseTestAPI.test_quick_connectN)rrrrrr�r�r�r�r�r�r�r�rmZskipIfrar��
startswithr�r�r�r�r�r�rnr�rr�rr	r	r	r
r��s$ r�c@s(eZdZejZejdfZdS)�TestAPI_UseIPv4SocketsrN)	rrrrr�r9rr�r0r	r	r	r
rs	rzIPv6 support requiredc@s(eZdZejZejdfZdS)�TestAPI_UseIPv6SocketsrN)	rrrrr�r9rZHOSTv6r0r	r	r	r
r"s	rzUnix sockets requiredc@s4eZdZerejZejZ	dd�Z
dS)�TestAPI_UseUnixSocketscCs!tj|j�tj|�dS)N)rr:r0r�rr)rr	r	r
rr-szTestAPI_UseUnixSockets.tearDownN)rrrr8rrr9rr�r0rrr	r	r	r
r's		rc@seZdZdZdS)�TestAPI_UseIPv4SelectFN)rrrr�r	r	r	r
r1srrFzselect.poll requiredc@seZdZdZdS)�TestAPI_UseIPv4PollTN)rrrr�r	r	r	r
r	4sr	c@seZdZdZdS)�TestAPI_UseIPv6SelectFN)rrrr�r	r	r	r
r
8sr
c@seZdZdZdS)�TestAPI_UseIPv6PollTN)rrrr�r	r	r	r
r;src@seZdZdZdS)�TestAPI_UseUnixSocketsSelectFN)rrrr�r	r	r	r
r?src@seZdZdZdS)�TestAPI_UseUnixSocketsPollTN)rrrr�r	r	r	r
r
Bsr
�__main__)1rrmr'rdrrar&r�rZtestr�iorr��ImportErrorr�ror8rrrrr7r=ZTestCaser>rpZdispatcher_with_sendr�r�rnr�rsr�r�r�r�rZIPV6_ENABLEDrrrr	r
rrr
r�mainr	r	r	r
�<module>sd

�H2D�.	%%%