Your IP : 216.73.216.85


Current Path : /opt/alt/python39/lib64/python3.9/test/__pycache__/
Upload File :
Current File : //opt/alt/python39/lib64/python3.9/test/__pycache__/test_asyncore.cpython-39.pyc

a

XC?h\g�@s�ddlZddlZddlZddlZddlZddlZddlZddlZddlZddl	Z	ddl
mZddlm
Z
ddlmZejr�e�d��eed�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� e
j(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��Z0e1d=k�r�e�2�dS)>�N)�support)�
socket_helper)�BytesIOztest is not helpful for PGO�AF_UNIXc@s$eZdZdd�Zdd�Zdd�ZdS)�dummysocketcCs
d|_dS�NF��closed��self�r�7/opt/alt/python39/lib64/python3.9/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|��|��\}}Wntjy.Yn�0d}t��}|dkr�t��|dkr�t�|gggd�\}}}	|r�|d8}|�d�}
|�|
�	dd��d|
vr�q�t�
d	�q<|��W|��|��n|��|��0dS)
N��rg@皙�����?��
�
��{�G�z�?)
�listenZacceptr�timeout�time�	monotonic�select�recv�write�replace�sleepr�set)�evtZbufZserv�conn�addr�n�start�r�w�e�datarrr
�capture_serverAs*


�rAcCs6tr(|jtjkr(t�|�t�||�n
|�|�dS)z9Helper function to bind a socket according to its family.N)	�HAS_UNIX_SOCKETS�familyrrr�unlinkrZbind_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�readr4Z
_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�exptr4r	r"rJrQr4r	c@s<eZdZdd�Zdd�Zdd�Zdd�Zd	d
�Zdd�Zd
S)z3HelperFunctionTests.test_readwrite.<locals>.testobjcSs"d|_d|_d|_d|_d|_dSr)rJr4r	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)r4r
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)r2ZPOLLINZPOLLPRIZPOLLOUTZPOLLERRZPOLLHUPZPOLLNVALrK�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|r|tj}z |t_t��Wtj|}t_q�tj|}t_0n
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0|�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�hasattrr2rWrZr[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_reprcCstt��}d}d}t���$}|�|�|�|�Wd�n1sB0Y|����}|�|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_logcCs�t��}d}d}d}t���2}|�|d�|�|�|�|d�Wd�n1sT0Y|����}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_infocCszt��}d|_t���0}|��|��|��|��Wd�n1sL0Y|�	��
�}gd�}|�||�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�|	dkr�t��|	d	8}	q�|��|�|��|d
�Wt�|�nt�|�0dS)N�)�target�args皙�����?s$Suppose there isn't a 16-ton weight?r(r+i�rr)�)�	threadingZEventr�
settimeoutrZ	bind_portr�ThreadrAr<r0r6r��
create_socket�connect�HOST�sendZ
out_bufferrrO�waitrKr�r�join_thread)
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)�FileWrapperTestcCsBd|_ttjd��}|�|j�Wd�n1s40YdS)NsIt's not dead, it's sleeping!�wb)r}�openr�TESTFNr4)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�fdrrKr3rJrI�OSError)rr�r>rrr
�	test_recvys

zFileWrapperTest.test_recvcCs�d}d}t�tjtjtjB�}t�|�}t�|�|�	|�|�
|�|��ttjd��*}|�|��|j
||�Wd�n1s�0YdS)NsCome again?sI want to buy some cheese.�rb)rjr�rr��O_WRONLY�O_APPENDrr�rr4r�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]r3r
�r@rr
r��szCFileWrapperTest.test_dispatcher.<locals>.FileDispatcher.handle_readN�rrrr�rr�rr
�FileDispatcher�sr�r-Tr��r/�use_poll�countr,)rjr�rr�r�rr�r�looprK�joinr})rr�r��srr�r
�test_dispatcher�s
zFileWrapperTest.test_dispatchercCsbt�tjtj�}t�|�}t�|�t�dt	f��d}t�
�Wd�n1sT0YdS)Nr�)rjr�rr�r�rr�rZcheck_warnings�ResourceWarningZ
gc_collect�rr�rmrrr
�test_resource_warning�s

z%FileWrapperTest.test_resource_warningcCs|t�tjtj�}t�|�}t�|�t�|j�|�	t
��|��Wd�n1sX0Y|�|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@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�)	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)
rrr�__doc__r�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))r/r�r�zflag not set)	�floatrr^r�r�rUr0r6ri)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|_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�)r3r
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)r3r`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)rr3�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�WntyYn
0td��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�WntyZt	�
d�Ynb0t�t�|j��}|�
|j�tjtj��|j��|�|j�|��|�|j�tjtj��Wd�n1s�0YdS)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��fvr$|�d�t|j|j�}tj	dd�d�}|�
�z�t�|jtj��Z}|�d�|�
tjtjt�ddd	��z|�|j�Wnty�Yn0Wd�n1s�0YWt�|�nt�|�0dS)
N�AF_INET6z%test specific to AF_INET and AF_INET6cSstjddd�S)Nr(r�)r/r�)rr�rrrr
�<lambda>	s�z0BaseTestAPI.test_quick_connect.<locals>.<lambda>)r�r�Ziir)r)rCr�AF_INETrS�objectr�r�r:r�r�r<rr�rrZ	SO_LINGER�structZpackr�r�r�rr�)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__)3rrrr2rjrrgr0r�rr��testrZtest.supportr�iorZPGOZSkipTestrtrBrrrr rArGZTestCaserHruZdispatcher_with_sendr�r�rsr�ryr�r�r�r�rZIPV6_ENABLEDrrrrrrrrr�mainrrrr
�<module>sh



H/�G(