Your IP : 216.73.217.32


Current Path : /opt/alt/python38/lib64/python3.8/test/__pycache__/
Upload File :
Current File : //opt/alt/python38/lib64/python3.8/test/__pycache__/test_asyncore.cpython-38.opt-2.pyc

U

i�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/python38/lib64/python3.8/test/test_asyncore.py�__init__szdummysocket.__init__cCs
d|_dS�NTrr
rrr
�closeszdummysocket.closecCsdS)N�*rr
rrr
�filenoszdummysocket.filenoN)�__name__�
__module__�__qualname__rrrrrrr
rsrc@seZdZdd�Zdd�ZdS)�dummychannelcCst�|_dS�N)r�socketr
rrr
r!szdummychannel.__init__cCs|j��dSr)rrr
rrr
r$szdummychannel.closeN)rrrrrrrrr
r src@s(eZdZdd�Zdd�ZeZeZeZdS)�exitingdummycCsdSrrr
rrr
r(szexitingdummy.__init__cCst���dSr)�asyncore�ExitNowr
r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|_dSr��
error_handledr
rrr
r3szcrashingdummy.__init__cCs
t��dSr��	Exceptionr
rrr
r6szcrashingdummy.handle_read_eventcCs
d|_dSrr!r
rrr
�handle_error=szcrashingdummy.handle_errorN�	rrrrrrrrr%rrrr
r 2sr cCs�z�z|��|��\}}Wntjk
r0Yn�Xd}t��}|dkr�t��|dkr�t�|gggd�\}}}	|r�|d8}|�	d�}
|�
|
�dd��d|
kr�q�t�d	�q>|��W5|��|��XdS)
N��rg@皙�����?��
�
��{�G�z�?)
r�set�listenZacceptr�timeout�time�	monotonic�select�recv�write�replace�sleep)�evtZbufZserv�conn�addr�n�start�r�w�e�datarrr
�capture_serverAs&
rAcCs6tr(|jtjkr(t�|�t�||�n
|�|�dSr)�HAS_UNIX_SOCKETS�familyrrr�unlinkZbind_unix_socket�bind)�sockr:rrr
�
bind_af_awareZs
rGc@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�dSr)
r�assertRaisesrr�readr5Z
_exceptionr �assertEqualr")r�tr1�tr2rrr
�test_readwriteexces


z%HelperFunctionTests.test_readwriteexc�poll�select.poll requiredc
Cs�d}tjdftjdftjdftjdftjdftjdff}Gdd�d�}|D]�\}}|�}|�t||�d�t	�
||�|D]}|�t||�||k�qzt�}|�t	j
t	j
||�t�}	|�|	jd�t	�
|	|�|�|	jd	�qJdS)
N)rJ�exptr5r	r"rJrQr5r	c@s<eZdZdd�Zdd�Zdd�Zdd�Zd	d
�Zdd�Zd
S)z3HelperFunctionTests.test_readwrite.<locals>.testobjcSs"d|_d|_d|_d|_d|_dSr)rJr5r	rQr"r
rrr
r�s
z<HelperFunctionTests.test_readwrite.<locals>.testobj.__init__cSs
d|_dSr)rJr
rrr
r�szEHelperFunctionTests.test_readwrite.<locals>.testobj.handle_read_eventcSs
d|_dSr)r5r
rrr
r�szFHelperFunctionTests.test_readwrite.<locals>.testobj.handle_write_eventcSs
d|_dSrrr
rrr
r�sz@HelperFunctionTests.test_readwrite.<locals>.testobj.handle_closecSs
d|_dSr)rQr
rrr
r�szEHelperFunctionTests.test_readwrite.<locals>.testobj.handle_expt_eventcSs
d|_dSrr!r
rrr
r%�sz@HelperFunctionTests.test_readwrite.<locals>.testobj.handle_errorNr&rrrr
�testobj�srRFT)r3ZPOLLINZPOLLPRIZPOLLOUTZPOLLERRZPOLLHUPZPOLLNVALrK�getattrrZ	readwriterrIrr r")
rZ
attributes�expectedrR�flagZexpectedattrZtobj�attrrLrMrrr
�test_readwrite�s*�	z"HelperFunctionTests.test_readwritecCs|�d�dSr��closeall_checkr
rrr
�
test_closeall�sz!HelperFunctionTests.test_closeallcCs|�d�dSrrXr
rrr
�test_closeall_default�sz)HelperFunctionTests.test_closeall_defaultcCs�g}i}td�D],}t�}|�|�|�|jjd�|||<q|rntj}z|t_t��W5tj|}t_Xn
t�|�|�t	|�d�|D]}|�|jjd�q�dS)Nr*FrT)
�ranger�appendrKrr	r�
socket_map�	close_all�len)rZ
usedefault�lZtestmap�i�cZ	socketmaprrr
rY�s"


z"HelperFunctionTests.closeall_checkcCs�ztd��Wn"t��\}}}t��}YnX|�d�|\\}}}}}	}
|�tj�	|�dd�|�|d�|�||�|�|	|�|�|
d|||f�dS)N�I don't like spam!zExpected exception���ztest_asyncore.py�test_compact_tracebackz
[%s|%s|%s])
r$�sys�exc_inforZcompact_traceback�failrK�os�path�split)rZreal_tZreal_vZreal_tbr=�fZfunction�line�t�v�inforrr
rf�s
z*HelperFunctionTests.test_compact_tracebackN)
rrrrN�unittest�
skipUnless�hasattrr3rWrZr[rYrfrrrr
rHds
;rHc@sLeZdZdd�Zdd�Zdd�Zdd�Zd	d
�Zdd�Zd
d�Z	dd�Z
dS)�DispatcherTestscCsdSrrr
rrr
�setUp�szDispatcherTests.setUpcCst��dSr�rr_r
rrr
�tearDown�szDispatcherTests.tearDowncCs,t��}|�|��d�|�|��d�dSr)r�
dispatcherrK�readable�writable�r�drrr
�
test_basic�szDispatcherTests.test_basiccCs$t��}|�t|�dt|��dS)Nz<asyncore.dispatcher at %#x>)rryrK�repr�idr|rrr
�	test_repr�szDispatcherTests.test_reprc	Cs`t��}d}d}t���}|�|�|�|�W5QRX|����}|�|d|d|g�dS)NzLovely spam! Wonderful spam!rdzlog: %s)rryrZcaptured_stderr�log�getvalue�
splitlinesrK)rr}�l1�l2�stderr�linesrrr
�test_log�s

zDispatcherTests.test_logc	Cs|t��}d}d}d}t���(}|�|d�|�|�|�|d�W5QRX|����}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)rryr�captured_stdoutZlog_infor�r�rK)rr}r�r��l3�stdoutr�rTrrr
�
test_log_infos

zDispatcherTests.test_log_infoc	Csjt��}d|_t���&}|��|��|��|��W5QRX|�	��
�}ddddg}|�||�dS)Nrz*warning: unhandled incoming priority eventzwarning: unhandled read eventzwarning: unhandled write eventz warning: unhandled connect event)rryZignore_log_typesrr��handle_expt�handle_read�handle_write�handle_connectr�r�rK)rr}r�r�rTrrr
�test_unhandleds
�zDispatcherTests.test_unhandledcCsFt�tj�}ttd�r*|�|t�tj��t�d�}|�|dk�dS)N�strerrorre�)	rZ	_strerror�errnoZEPERMrtrjrKr��
assertTrue)r�errrrr
�
test_strerror.s


zDispatcherTests.test_strerrorN)rrrrvrxr~r�r�r�r�r�rrrr
ru�s
ruc@seZdZdd�Zdd�ZdS)�dispatcherwithsend_noreadcCsdSrrr
rrr
rz8sz"dispatcherwithsend_noread.readablecCsdSrrr
rrr
r�;sz(dispatcherwithsend_noread.handle_connectN)rrrrzr�rrrr
r�7sr�c@s*eZdZdd�Zdd�Zejdd��ZdS)�DispatcherWithSendTestscCsdSrrr
rrr
rv@szDispatcherWithSendTests.setUpcCst��dSrrwr
rrr
rxCsz DispatcherWithSendTests.tearDownc

Cs�t��}t��}|�d�t�|�}t�}|||f}tjt|d�}|�	�z�t�
d�d}t�}|��|�tj|f�t�
d�|�|�|�|�|�d�d}	|jr�|	d	kr�t��|	d
8}	q�|��|�|��|d�W5tj
|td�XdS)Nr)�target�args�r0皙�����?s$Suppose there isn't a 16-ton weight?r(r+i�rr)�)�	threadingZEventr�
settimeoutrZ	bind_portr�ThreadrAr<�join_thread�TIMEOUTr1r7r��
create_socket�connect�HOST�sendZ
out_bufferrrO�waitrKr�)
rr8rF�portZcapr�ror@r}r;rrr
�	test_sendFs2








z!DispatcherWithSendTests.test_sendN)rrrrvrxr�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�W5QRXdS)NsIt's not dead, it's sleeping!�wb)r}�openr�TESTFNr5)r�filerrr
rvqszFileWrapperTest.setUpcCst�tj�dSr)rrDr�r
rrr
rxvszFileWrapperTest.tearDowncCs�t�tjtj�}t�|�}t�|�|�|j	|�|�|�
�|�|�|�d�d�|�|�
d�d�|��|�t|j
d�dS)N�
s
It's not dead�s, it'sr))rjr�rr��O_RDONLYrr�rZassertNotEqual�fdrrKr4rJrI�OSError)rr�r>rrr
�	test_recvys

zFileWrapperTest.test_recvc	Cs�d}d}t�tjtjtjB�}t�|�}t�|�|�	|�|�
|�|��ttjd�� }|�|��|j
||�W5QRXdS)NsCome again?sI want to buy some cheese.�rb)rjr�rr��O_WRONLY�O_APPENDrr�rr5r�rKrJr})rZd1Zd2r�r>r�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�)r]r4r
�r@rr
r��szCFileWrapperTest.test_dispatcher.<locals>.FileDispatcher.handle_readN�rrrr�rr�rr
�FileDispatcher�sr�r-Tr��r0�use_poll�countr,)rjr�rr�r�rr�r�looprK�joinr})rr�r��srr�r
�test_dispatcher�s
zFileWrapperTest.test_dispatcherc	CsNt�tjtj�}t�|�}t�|�t�dt	f��d}t�
�W5QRXdS)Nr�)rjr�rr�r�rr�rZcheck_warnings�ResourceWarningZ
gc_collect�rr�rmrrr
�test_resource_warning�s

z%FileWrapperTest.test_resource_warningc	Csht�tjtj�}t�|�}t�|�t�|j�|�	t
��|��W5QRX|�|jd�|��dS)Nre)rjr�rr�r�rr�rr�rIr�rKr�rrr
�test_close_twice�s

z FileWrapperTest.test_close_twiceN)rrrrvrxr�r�rrrsrtrr�r�r�rrrr
r�ns
�

r�c@sFeZdZddd�Zdd�Zdd�Zdd	�Zd
d�Zdd
�Zdd�Z	dS)�BaseTestHandlerNcCstj�||�d|_dSr)rryrrU)rrFrrr
r�szBaseTestHandler.__init__cCstd��dS)Nz'handle_accept not supposed to be calledr#r
rrr
�
handle_accept�szBaseTestHandler.handle_acceptcCstd��dS)Nz)handle_accepted not supposed to be calledr#r
rrr
�handle_accepted�szBaseTestHandler.handle_acceptedcCstd��dS)Nz(handle_connect not supposed to be calledr#r
rrr
r��szBaseTestHandler.handle_connectcCstd��dS)Nz%handle_expt not supposed to be calledr#r
rrr
r��szBaseTestHandler.handle_exptcCstd��dS)Nz&handle_close not supposed to be calledr#r
rrr
r�szBaseTestHandler.handle_closecCs�dSrrr
rrr
r%�szBaseTestHandler.handle_error)N)
rrrrr�r�r�r�rr%rrrr
r��s
r�c@s4eZdZefdd�Zedd��Zdd�Zdd�Zd	S)
�
BaseServercCs>tj�|�|�|�|��t|j|�|�d�||_dS�N�)	rryrr��set_reuse_addrrGrr/�handler)rrCr:r�rrr
r�s

zBaseServer.__init__cCs
|j��Sr)r�getsocknamer
rrr
�address�szBaseServer.addresscCs|�|�dSr)r��rrFr:rrr
r��szBaseServer.handle_acceptedcCs�dSrrr
rrr
r%�szBaseServer.handle_errorN)	rrrr�r�propertyr�r�r%rrrr
r��s

r�c@seZdZdd�Zdd�ZdS)�
BaseClientcCs"t�|�|�|�|�|�dSr)r�rr�r�)rrCr�rrr
r�s

zBaseClient.__init__cCsdSrrr
r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_allrwr
rrr
rx�szBaseTestAPI.tearDownr�cCs\t|�d}d}tjrN|dkrNtjdd|jd�|jr:dS|d8}t�|�q|�d�dS)N�drr-r))r0r�r�zflag not set)	�floatrr^r�r�rUr1r7ri)r�instancer0r�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|_dSr�rUr
rrr
r�szBBaseTestAPI.test_handle_connect.<locals>.TestClient.handle_connectN)rrrr�rrrr
�
TestClientsr��r�r�rCr: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��|_dSr��r�rr�rGrr/r�r��rrCr:rrr
rs



z=BaseTestAPI.test_handle_accept.<locals>.TestListener.__init__cSs
d|_dSrr�r
rrr
r�szBBaseTestAPI.test_handle_accept.<locals>.TestListener.handle_acceptN)rrrrr�rrrr
�TestListenersr��r�rCr: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��|_dSr�r�r�rrr
r&s



z?BaseTestAPI.test_handle_accepted.<locals>.TestListener.__init__cSstj�|�dSr)rryr�r
rrr
r�-szDBaseTestAPI.test_handle_accepted.<locals>.TestListener.handle_acceptcSs|��d|_dSr)rrUr�rrr
r�0szFBaseTestAPI.test_handle_accepted.<locals>.TestListener.handle_acceptedN)rrrrr�r�rrrr
r�$sr�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|_dSrr�r
rrr
r�=sz<BaseTestAPI.test_handle_read.<locals>.TestClient.handle_readNr�rrrr
r�<sr�c@seZdZdd�ZdS)z1BaseTestAPI.test_handle_read.<locals>.TestHandlercSst�||�|�d�dS)Nsxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx)r�rr��rr9rrr
rAsz:BaseTestAPI.test_handle_read.<locals>.TestHandler.__init__N�rrrrrrrr
�TestHandler@sr��r�r�r�rCr: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|_dSrr�r
rrr
r�Msz>BaseTestAPI.test_handle_write.<locals>.TestClient.handle_writeN)rrrr�rrrr
r�Lsr�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)N�)r4r
rrr
r�Zsz=BaseTestAPI.test_handle_close.<locals>.TestClient.handle_readcSsd|_|��dSr�rUrr
rrr
r_sz>BaseTestAPI.test_handle_close.<locals>.TestClient.handle_closeN)rrrr�rrrrr
r�Xsr�c@seZdZdd�ZdS)z2BaseTestAPI.test_handle_close.<locals>.TestHandlercSst�||�|��dSr)r�rrr�rrr
rdsz;BaseTestAPI.test_handle_close.<locals>.TestHandler.__init__Nr�rrrr
r�csr�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|���dSr)r�r
r�rr
r�tszPBaseTestAPI.test_handle_close_after_conn_broken.<locals>.TestClient.handle_writecSsd|_|��dSrr�r
rrr
rwszPBaseTestAPI.test_handle_close_after_conn_broken.<locals>.TestClient.handle_closecSsd|_|��dSrr�r
rrr
r�{szOBaseTestAPI.test_handle_close_after_conn_broken.<locals>.TestClient.handle_exptN)rrrr�rr�rr�rr
r�rsr�cs eZdZ�fdd�Zdd�ZdS)zDBaseTestAPI.test_handle_close_after_conn_broken.<locals>.TestHandlercs|�t���|��dSr)r4r`rr
r�rr
r��szPBaseTestAPI.test_handle_close_after_conn_broken.<locals>.TestHandler.handle_readcSsdSrrr
rrr
r{�szMBaseTestAPI.test_handle_close_after_conn_broken.<locals>.TestHandler.writableN)rrrr�r{rr�rr
r�sr�r�r�rr�r
�#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)N�"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)Nr�T)rr4�MSG_OOBrUr
r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�r�rrr
r�sz:BaseTestAPI.test_handle_expt.<locals>.TestHandler.__init__Nr�rrrr
r��sr�)rBrCrr�skipTestrg�platformr�r�r�r�r: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r
rrr
r��sz>BaseTestAPI.test_handle_error.<locals>.TestClient.handle_writecSs.d|_z�Wntk
r Yn
Xtd��dS)NTzexception not raised)rU�ZeroDivisionErrorr$r
rrr
r%�sz>BaseTestAPI.test_handle_error.<locals>.TestClient.handle_errorN)rrrr�r%rrrr
r��sr�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)Nr-r�r�)
r�rCr: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)rryr�rCrKr�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)Nr�r�r)r)rBrCrrr�rryr�rEr:r/r�rIr�)r�s1r��s2rrr
�	test_bind�s

zBaseTestAPI.test_bindc	Cs�tr|jtjkr|�d�t�|j���}z|�tjtjd�Wntk
r\t	�
d�YnbXt�t�|j��}|�
|j�tjtj��|j��|�|j�|��|�|j�tjtj��W5QRXdS)Nr�r)z+SO_REUSEADDR not supported on this platform)rBrCrrr��
setsockopt�
SOL_SOCKETZSO_REUSEADDRr�rr�skiprryrZ
getsockoptrr�r�r�)rrFr�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�dd	d
��z|�|j�Wntk
r�YnXW5QRXW5tj|t
d�XdS)N�AF_INET6z%test specific to AF_INET and AF_INET6cSstjddd�S)Nr(r�)r0r�)rr�rrrr
�<lambda>	s�z0BaseTestAPI.test_quick_connect.<locals>.<lambda>)r�r�r�Ziir)r)rCr�AF_INETrS�objectr�r�r:r�r�r<rr�r�rr�rrZ	SO_LINGER�structZpackr�r�r�)rr�ror�rrr
�test_quick_connects 

�zBaseTestAPI.test_quick_connectN)r�)rrrrxr�r�r�r�r�r�r�r�rrZskipIfrgr��
startswithr�rrrr
rrr�rrrrr
r��s(
 �
r�c@seZdZejZejdfZdS)�TestAPI_UseIPv4SocketsrN)	rrrrrrCrr�r:rrrr
rsrzIPv6 support requiredc@seZdZejZejdfZdS)�TestAPI_UseIPv6SocketsrN)	rrrrrrCrZHOSTv6r:rrrr
rsrzUnix sockets requiredc@s$eZdZerejZejZ	dd�Z
dS)�TestAPI_UseUnixSocketscCst�|j�t�|�dSr)rrDr:r�rxr
rrr
rx(szTestAPI_UseUnixSockets.tearDownN)rrrrBrrrCrr�r:rxrrrr
r"src@seZdZdZdS)�TestAPI_UseIPv4SelectFN�rrrr�rrrr
r,srrOrPc@seZdZdZdS)�TestAPI_UseIPv4PollTNrrrrr
r/src@seZdZdZdS)�TestAPI_UseIPv6SelectFNrrrrr
r3src@seZdZdZdS)�TestAPI_UseIPv6PollTNrrrrr
r6src@seZdZdZdS)�TestAPI_UseUnixSocketsSelectFNrrrrr
r:src@seZdZdZdS)�TestAPI_UseUnixSocketsPollTNrrrrr
r=sr�__main__)2rrrr3rjrrgr1r�rr�Ztestr�iorZPGOZSkipTestr�rtrBrrrr rArGZTestCaserHruZdispatcher_with_sendr�r�rsr�ryr�r�r�r�rZIPV6_ENABLEDrrrrrrrrr�mainrrrr
�<module>sh



H/�G(