Your IP : 216.73.216.213


Current Path : /opt/alt/python36/lib64/python3.6/test/__pycache__/
Upload File :
Current File : //opt/alt/python36/lib64/python3.6/test/__pycache__/test_asyncore.cpython-36.opt-2.pyc

3

��2a i�@s�ddlZddlZddlZddlZddlZddlZddlZddlZddlZddl	m
Z
ddlmZe
j
rpejd��yddlZWnek
r�dZYnXdZeed�ZGdd�d�ZGd	d
�d
�ZGdd�d�ZGd
d�d�Zdd�Zdd�ZGdd�dej�ZGdd�dej�ZGdd�dej�ZGdd�dej�Zej 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'ej e
j(d)�Gd*d+�d+e&��Z)ej ed,�Gd-d.�d.e&��Z*Gd/d0�d0e'ej�Z+ej eed1�d2�Gd3d4�d4e'ej��Z,Gd5d6�d6e)ej�Z-ej eed1�d2�Gd7d8�d8e)ej��Z.Gd9d:�d:e*ej�Z/ej eed1�d2�Gd;d<�d<e*ej��Z0e1d=k�r�ej2�dS)>�N)�support)�BytesIOztest is not helpful for PGO��AF_UNIXc@s$eZdZdd�Zdd�Zdd�ZdS)�dummysocketcCs
d|_dS)NF)�closed)�self�r	�2/opt/alt/python36/lib64/python3.6/test_asyncore.py�__init__szdummysocket.__init__cCs
d|_dS)NT)r)rr	r	r
�closeszdummysocket.closecCsdS)N�*r	)rr	r	r
�fileno szdummysocket.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|jj�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tj��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
r6szcrashingdummy.__init__cCs
t��dS)N)�	Exception)rr	r	r
r9szcrashingdummy.handle_read_eventcCs
d|_dS)NT)r)rr	r	r
�handle_error@szcrashingdummy.handle_errorN)	rrrrrrrrrr	r	r	r
r5srcCs�z�y|j�|j�\}}Wntjk
r0Yn�Xd}tj�}xp|dkr�tj�|dkr�tj|gggd�\}}}	|r�|d8}|jd�}
|j|
jdd��d|
kr�Ptj	d	�q@W|j
�Wd|j
�|j�XdS)
N��rg@g�������?��
�
�g{�G�z�?)�listenZacceptr�timeout�time�select�recv�write�replace�sleepr�set)�evt�bufZserv�conn�addr�n�start�r�w�e�datar	r	r
�capture_serverDs&
r7cCs6tr(|jtjkr(tj|�tj||�n
|j|�dS)N)�HAS_UNIX_SOCKETS�familyrrr�unlinkZbind_unix_socket�bind)�sockr0r	r	r
�
bind_af_aware]s
r=c@sNeZdZdd�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)Z
_exceptionr�assertEqualr)r�tr1�tr2r	r	r
�test_readwriteexchs


z%HelperFunctionTests.test_readwriteexc�pollzselect.poll requiredc
Cs�d
}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	�qLWdS)Nr@�exptr)rrc@s<eZdZdd�Zdd�Zdd�Zdd�Zd	d
�Zdd�Zd
S)z3HelperFunctionTests.test_readwrite.<locals>.testobjcSs"d|_d|_d|_d|_d|_dS)NF)r@r)rrFr)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)rF)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rGFT)r@rFr)rr)r'ZPOLLINZPOLLPRIZPOLLOUTZPOLLERRZPOLLHUPZPOLLNVALrA�getattrrZ	readwriterr?rrr)
rZ
attributes�expectedrG�flagZexpectedattrZtobj�attrrBrCr	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)rM)rr	r	r
�test_closeall_default�sz)HelperFunctionTests.test_closeall_defaultcCs�g}i}x8td�D],}t�}|j|�|j|jjd�|||<qW|rrtj}z|t_tj�Wdtj|}t_Xn
tj|�|jt	|�d�x|D]}|j|jjd�q�WdS)Nr!FrT)
�ranger�appendrArrr�
socket_map�	close_all�len)rZ
usedefault�lZtestmap�i�cZ	socketmapr	r	r
rM�s"


z"HelperFunctionTests.closeall_checkcCs�ytd��Wn"tj�\}}}tj�}YnX|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�failrA�os�path�split)rZreal_tZreal_vZreal_tbr3�fZfunction�line�t�v�infor	r	r
rX�s
z*HelperFunctionTests.test_compact_tracebackN)
rrrrD�unittest�
skipUnless�hasattrr'rLrNrOrMrXr	r	r	r
r>gs<r>c@sLeZdZdd�Zdd�Zdd�Zdd�Zd	d
�Zdd�Zd
d�Z	dd�Z
dS)�DispatcherTestscCsdS)Nr	)rr	r	r
�setUp�szDispatcherTests.setUpcCstj�dS)N)rrS)rr	r	r
�tearDown�szDispatcherTests.tearDowncCs,tj�}|j|j�d�|j|j�d�dS)NT)r�
dispatcherrA�readable�writable)r�dr	r	r
�
test_basic�szDispatcherTests.test_basiccCs$tj�}|jt|�dt|��dS)Nz<asyncore.dispatcher at %#x>)rrkrA�repr�id)rrnr	r	r
�	test_repr�szDispatcherTests.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)rrkrZcaptured_stderr�log�getvalue�
splitlinesrA)rrn�l1�l2�stderr�linesr	r	r
�test_logs

zDispatcherTests.test_logcCs|tj�}d}d}d}tj��(}|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)rrkr�captured_stdoutZlog_infortrurA)rrnrvrw�l3�stdoutryrIr	r	r
�
test_log_infos

zDispatcherTests.test_log_infocCsjtj�}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)rrkZignore_log_typesrr{�handle_expt�handle_read�handle_write�handle_connectrtrurA)rrnr}ryrIr	r	r
�test_unhandleds
zDispatcherTests.test_unhandledcCsFtjtj�}ttd�r*|j|tjtj��tjd�}|j|dk�dS)N�strerrorr �rY)	rZ	_strerror�errnoZEPERMrgr]rAr��
assertTrue)r�errr	r	r
�
test_strerror1s


zDispatcherTests.test_strerrorN)rrrrirjrorrrzr~r�r�r	r	r	r
rh�s
rhc@seZdZdd�Zdd�ZdS)�dispatcherwithsend_noreadcCsdS)NFr	)rr	r	r
rl;sz"dispatcherwithsend_noread.readablecCsdS)Nr	)rr	r	r
r�>sz(dispatcherwithsend_noread.handle_connectN)rrrrlr�r	r	r	r
r�:sr�c@s6eZdZdd�Zdd�Zejed�ej	dd���Z
dS)	�DispatcherWithSendTestscCsdS)Nr	)rr	r	r
riCszDispatcherWithSendTests.setUpcCstj�dS)N)rrS)rr	r	r
rjFsz DispatcherWithSendTests.tearDownz!Threading required for this test.c
Cstj�}tj�}|jd�tj|�}t�}|||f}tjt|d�}|j	�z�t
jd�d}t�}|j
�|jtj|f�t
jd�|j|�|j|�|jd�d}	x"|jr�|	dkr�tj�|	d	8}	q�W|j�|j|j�|d
�Wd|jtd�|j��r|jd�XdS)
Nr)�target�argsg�������?s$Suppose there isn't a 16-ton weight?g�������?r"i�rr �)r%zjoin() timed out)�	threadingZEventr�
settimeoutrZ	bind_portr�Threadr7r2r&r+r��
create_socket�connect�HOST�sendZ
out_bufferrrE�waitrArt�join�TIMEOUT�is_aliver\)
rr-r<�portZcapr�rbr6rnr1r	r	r
�	test_sendIs6








z!DispatcherWithSendTests.test_sendN)rrrrirjrerfr�r�reap_threadsr�r	r	r	r
r�Bs
r��file_wrapperzasyncore.file_wrapper requiredc@sVeZdZdd�Zdd�Zdd�Zdd�Zeje	e
d	�d
�dd��Zd
d�Zdd�Z
dS)�FileWrapperTestc	Cs.d|_ttjd��}|j|j�WdQRXdS)NsIt's not dead, it's sleeping!�wb)rn�openr�TESTFNr))r�filer	r	r
riwszFileWrapperTest.setUpcCstjtj�dS)N)rr:r�)rr	r	r
rj|szFileWrapperTest.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 )r]r�rr��O_RDONLYrr�rZassertNotEqual�fdrrAr(r@r?�OSError)rr�r4r	r	r
�	test_recvs

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)r]r�rr��O_WRONLY�O_APPENDrr�rr)r�rAr@rn)rZd1Zd2r�r4r�r	r	r
r��s



zFileWrapperTest.test_send�file_dispatcherz!asyncore.file_dispatcher requiredcsdtjtjtj�}g�G�fdd�dtj�}||�}tj|�tjdddd�|j	dj
��|j�dS)NcseZdZ�fdd�ZdS)z7FileWrapperTest.test_dispatcher.<locals>.FileDispatchercs�j|jd��dS)N�)rQr()r)r6r	r
r��szCFileWrapperTest.test_dispatcher.<locals>.FileDispatcher.handle_readN)rrrr�r	)r6r	r
�FileDispatcher�sr�g{�G�z�?Tr�)r%�use_poll�countr#)r]r�rr�r�rr�r�looprAr�rn)rr�r��sr	)r6r
�test_dispatcher�s
zFileWrapperTest.test_dispatcherc	CsNtjtjtj�}tj|�}tj|�tjdt	f��d}tj
�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
Cshtjtjtj�}tj|�}tj|�tj|j�|j	t
��|j�WdQRX|j|jd�|j�dS)Nr rY)r]r�rr�r�rr�rr�r?r�rA)rr�r`r	r	r
�test_close_twice�s

z FileWrapperTest.test_close_twiceN)rrrrirjr�r�rerfrgrr�r�r�r	r	r	r
r�ts

r�c@sFeZdZddd�Zdd�Zdd�Zdd	�Zd
d�Zdd
�Zdd�Z	dS)�BaseTestHandlerNcCstjj||�d|_dS)NF)rrkrrJ)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�rrrr	r	r	r
r��s
r�c@s4eZdZefdd�Zedd��Zdd�Zdd�Zd	S)
�
BaseServercCs>tjj|�|j|�|j�t|j|�|jd�||_dS)N�)	rrkrr��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@seZdZdd�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��sr�c@s�eZdZdd�Zd&dd�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)'�BaseTestAPIcCstjdd�dS)NT)Z
ignore_all)rrS)rr	r	r
rj�szBaseTestAPI.tearDownr�cCs`t|�d}d}x@tjrP|dkrPtjdd|jd�|jr<dS|d8}tj|�qW|jd�dS)N�drg{�G�z�?r )r%r�r�zflag not set)	�floatrrRr�r�rJr&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�}|j|�dS)Nc@seZdZdd�ZdS)z3BaseTestAPI.test_handle_connect.<locals>.TestClientcSs
d|_dS)NT)rJ)rr	r	r
r�
szBBaseTestAPI.test_handle_connect.<locals>.TestClient.handle_connectN)rrrr�r	r	r	r
�
TestClientsr�)r�r�r9r0r�r�)rr��server�clientr	r	r
�test_handle_connect	szBaseTestAPI.test_handle_connectcCs:Gdd�dt�}||j|j�}t|j|j�}|j|�dS)Nc@seZdZdd�Zdd�ZdS)z4BaseTestAPI.test_handle_accept.<locals>.TestListenercSs:tj|�|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)rJ)rr	r	r
r� szBBaseTestAPI.test_handle_accept.<locals>.TestListener.handle_acceptN)rrrrr�r	r	r	r
�TestListenersr�)r�r9r0r�r�r�)rr�r�r�r	r	r
�test_handle_acceptszBaseTestAPI.test_handle_acceptcCs:Gdd�dt�}||j|j�}t|j|j�}|j|�dS)Nc@s$eZdZdd�Zdd�Zdd�ZdS)z6BaseTestAPI.test_handle_accepted.<locals>.TestListenercSs:tj|�|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)rrkr�)rr	r	r
r�3szDBaseTestAPI.test_handle_accepted.<locals>.TestListener.handle_acceptcSs|j�d|_dS)NT)rrJ)rr<r0r	r	r
r�6szFBaseTestAPI.test_handle_accepted.<locals>.TestListener.handle_acceptedN)rrrrr�r�r	r	r	r
r�*sr�)r�r9r0r�r�r�)rr�r�r�r	r	r
�test_handle_accepted'sz BaseTestAPI.test_handle_acceptedcCsLGdd�dt�}Gdd�dt�}t|j|j|�}||j|j�}|j|�dS)Nc@seZdZdd�ZdS)z0BaseTestAPI.test_handle_read.<locals>.TestClientcSs
d|_dS)NT)rJ)rr	r	r
r�Csz<BaseTestAPI.test_handle_read.<locals>.TestClient.handle_readN)rrrr�r	r	r	r
r�Bsr�c@seZdZdd�ZdS)z1BaseTestAPI.test_handle_read.<locals>.TestHandlercSstj||�|jdd�dS)N�xi)r�rr�)rr/r	r	r
rGsz:BaseTestAPI.test_handle_read.<locals>.TestHandler.__init__N)rrrrr	r	r	r
�TestHandlerFsr�)r�r�r�r9r0r�r�)rr�r�r�r�r	r	r
�test_handle_read?s
zBaseTestAPI.test_handle_readcCs:Gdd�dt�}t|j|j�}||j|j�}|j|�dS)Nc@seZdZdd�ZdS)z1BaseTestAPI.test_handle_write.<locals>.TestClientcSs
d|_dS)NT)rJ)rr	r	r
r�Ssz>BaseTestAPI.test_handle_write.<locals>.TestClient.handle_writeN)rrrr�r	r	r	r
r�Rsr�)r�r�r9r0r�r�)rr�r�r�r	r	r
�test_handle_writeOszBaseTestAPI.test_handle_writecCsLGdd�dt�}Gdd�dt�}t|j|j|�}||j|j�}|j|�dS)Nc@seZdZdd�Zdd�ZdS)z1BaseTestAPI.test_handle_close.<locals>.TestClientcSs|jd�dS)Ni)r()rr	r	r
r�`sz=BaseTestAPI.test_handle_close.<locals>.TestClient.handle_readcSsd|_|j�dS)NT)rJr)rr	r	r
resz>BaseTestAPI.test_handle_close.<locals>.TestClient.handle_closeN)rrrr�rr	r	r	r
r�^sr�c@seZdZdd�ZdS)z2BaseTestAPI.test_handle_close.<locals>.TestHandlercSstj||�|j�dS)N)r�rr)rr/r	r	r
rjsz;BaseTestAPI.test_handle_close.<locals>.TestHandler.__init__N)rrrrr	r	r	r
r�isr�)r�r�r�r9r0r�r�)rr�r�r�r�r	r	r
�test_handle_closeZs
zBaseTestAPI.test_handle_closecs\dd�G�fdd�dt�}G�fdd�dt�}t|j|j|�}||j|j�}|j|�dS)N��cs(eZdZ�fdd�Zdd�Zdd�ZdS)zCBaseTestAPI.test_handle_close_after_conn_broken.<locals>.TestClientcs|j��dS)N)r�)r)r6r	r
r�zszPBaseTestAPI.test_handle_close_after_conn_broken.<locals>.TestClient.handle_writecSsd|_|j�dS)NT)rJr)rr	r	r
r}szPBaseTestAPI.test_handle_close_after_conn_broken.<locals>.TestClient.handle_closecSsd|_|j�dS)NT)rJr)rr	r	r
r�szOBaseTestAPI.test_handle_close_after_conn_broken.<locals>.TestClient.handle_exptN)rrrr�rrr	)r6r	r
r�xsr�cs eZdZ�fdd�Zdd�ZdS)zDBaseTestAPI.test_handle_close_after_conn_broken.<locals>.TestHandlercs|jt���|j�dS)N)r(rTr)r)r6r	r
r��szPBaseTestAPI.test_handle_close_after_conn_broken.<locals>.TestHandler.handle_readcSsdS)NFr	)rr	r	r
rm�szMBaseTestAPI.test_handle_close_after_conn_broken.<locals>.TestHandler.writableN)rrrr�rmr	)r6r	r
r��sr�)r�r�r�r9r0r�r�)rr�r�r�r�r	)r6r
�#test_handle_close_after_conn_brokenrs
	z/BaseTestAPI.test_handle_close_after_conn_broken�sunosz OOB support is broken on SolariscCs�tr|jtjkr|jd�tjdkr4|jr4|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_OOBrJ)rr	r	r
r�sz<BaseTestAPI.test_handle_expt.<locals>.TestClient.handle_exptN)rrrrr	r	r	r
r��sr�c@seZdZdd�ZdS)z1BaseTestAPI.test_handle_expt.<locals>.TestHandlercSs*tj||�|jjttd�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�)r8r9rr�skipTestrZ�platformr�r�r�r�r0r�r�)rr�r�r�r�r	r	r
�test_handle_expt�s

zBaseTestAPI.test_handle_exptcCs:Gdd�dt�}t|j|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)rJ�ZeroDivisionErrorr)rr	r	r
r�sz>BaseTestAPI.test_handle_error.<locals>.TestClient.handle_errorN)rrrr�rr	r	r	r
r��sr�)r�r�r9r0r�r�)rr�r�r�r	r	r
�test_handle_error�szBaseTestAPI.test_handle_errorcCs�t|j|j�}t|j|j�}|j|j�|j|j�|j|j�t	j
d|jdd�|j|j�|j|j�|j|j�|j|j�|j�|j|j�|j|j�|j|j�|j|j�|j�|j|j�|j|j�dS)Ng{�G�z�?r�)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_attributescCsvtj�}|j|j�|j|jj|j�ttdd�}tj|B}ttd�rb|j	|jj
|tjB|f�n|j|jj
|�dS)N�
SOCK_NONBLOCKr�SOCK_CLOEXEC)rrkr�r9rArrH�SOCK_STREAMrgZassertIn�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�rrkr�r;r0r$r�r?r�)r�s1r��s2r	r	r
�	test_bind�s

zBaseTestAPI.test_bindcCs�tr|jtjkr|jd�tj|j���}y|jtjtjd�Wntk
r\t	j
d�YnbXtjtj|j��}|j
|jjtjtj��|jj�|j|j�|j�|j|jjtjtj��WdQRXdS)Nz"Not applicable to AF_UNIX sockets.r z+SO_REUSEADDR not supported on this platform)r8r9rrr��
setsockopt�
SOL_SOCKETZSO_REUSEADDRr�re�skiprrkr�Z
getsockoptrr�r�r�)rr<r�r	r	r
�test_set_reuse_addr�s


zBaseTestAPI.test_set_reuse_addrz!Threading required for this test.cCs�|jtjttdt��fkr$|jd�t|j|j�}tj	dd�d�}|j
�zltj|jtj��R}|jd�|j
tjtjtjddd	��y|j|j�Wntk
r�YnXWdQRXWd|jtd
�|j�r�|jd�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�������?�iir r)r%zjoin() timed out)r9r�AF_INETrH�objectr�r�r0r�r�r2r�r�r�r�Z	SO_LINGER�struct�packr�r�r�r�r�r�r\)rr�rbr�r	r	r
�test_quick_connects"

zBaseTestAPI.test_quick_connectN)r�)rrrrjr�r�r�r�r�r�r�r�reZskipIfrZr��
startswithr�r�r�r�r�r�rfr�rr�r�r	r	r	r
r��s$
 
r�c@seZdZejZejdfZdS)�TestAPI_UseIPv4SocketsrN)	rrrrr�r9rr�r0r	r	r	r
r�&sr�zIPv6 support requiredc@seZdZejZejdfZdS)�TestAPI_UseIPv6SocketsrN)	rrrrr�r9rZHOSTv6r0r	r	r	r
r�*sr�zUnix sockets requiredc@s$eZdZerejZejZ	dd�Z
dS)�TestAPI_UseUnixSocketscCstj|j�tj|�dS)N)rr:r0r�rj)rr	r	r
rj5szTestAPI_UseUnixSockets.tearDownN)rrrr8rrr9rr�r0rjr	r	r	r
r�/sr�c@seZdZdZdS)�TestAPI_UseIPv4SelectFN)rrrr�r	r	r	r
r�9sr�rEzselect.poll requiredc@seZdZdZdS)�TestAPI_UseIPv4PollTN)rrrr�r	r	r	r
r�<sr�c@seZdZdZdS)�TestAPI_UseIPv6SelectFN)rrrr�r	r	r	r
r�@sr�c@seZdZdZdS)�TestAPI_UseIPv6PollTN)rrrr�r	r	r	r
r�Csr�c@seZdZdZdS)�TestAPI_UseUnixSocketsSelectFN)rrrr�r	r	r	r
r�Gsr�c@seZdZdZdS)�TestAPI_UseUnixSocketsPollTN)rrrr�r	r	r	r
rJsr�__main__)3rrer'r]rrZr&r�r�Ztestr�iorZPGOZSkipTestr��ImportErrorr�rgr8rrrrr7r=ZTestCaser>rhZdispatcher_with_sendr�r�rfr�rkr�r�r�r�r�ZIPV6_ENABLEDr�r�r�r�r�r�r�rr�mainr	r	r	r
�<module>sl




H2
G/