HEX
Server: LiteSpeed
System: Linux server.nevid-deploma.com 4.18.0-553.111.1.lve.el8.x86_64 #1 SMP Fri Mar 13 13:42:17 UTC 2026 x86_64
User: smilepac (1037)
PHP: 8.1.34
Disabled: NONE
Upload Files
File: //opt/cppython/lib/python3.8/test/__pycache__/test_asyncore.cpython-38.opt-2.pyc
U

-D�g?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�1/opt/cppython/lib/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�listen�acceptr�timeout�time�	monotonic�select�recv�write�replace�sleep)�evt�bufZserv�conn�addr�n�start�r�w�e�datarrr
�capture_serverAs&
rCcCs6tr(|jtjkr(t�|�t�||�n
|�|�dSr)�HAS_UNIX_SOCKETS�familyrrr�unlinkZbind_unix_socket�bind)�sockr<rrr
�
bind_af_awareZs
rIc@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�readr6�
_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)rL�exptr6r	r"rLrTr6r	c@s<eZdZdd�Zdd�Zdd�Zdd�Zd	d
�Zdd�Zd
S)z3HelperFunctionTests.test_readwrite.<locals>.testobjcSs"d|_d|_d|_d|_d|_dSr)rLr6r	rTr"r
rrr
r�s
z<HelperFunctionTests.test_readwrite.<locals>.testobj.__init__cSs
d|_dSr)rLr
rrr
r�szEHelperFunctionTests.test_readwrite.<locals>.testobj.handle_read_eventcSs
d|_dSr)r6r
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)rTr
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rUFT)r4�POLLIN�POLLPRI�POLLOUT�POLLERR�POLLHUP�POLLNVALrN�getattrrZ	readwriterrKrr r")
rZ
attributes�expectedrU�flagZexpectedattrZtobj�attrrOrPrrr
�test_readwrite�s*�	z"HelperFunctionTests.test_readwritecCs|�d�dSr��closeall_checkr
rrr
�
test_closeall�sz!HelperFunctionTests.test_closeallcCs|�d�dSrrar
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�appendrNrr	r�
socket_map�	close_all�len)rZ
usedefault�lZtestmap�i�cZ	socketmaprrr
rb�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�failrN�os�path�split)rZreal_tZreal_vZreal_tbr?�f�function�line�t�v�inforrr
ro�s
z*HelperFunctionTests.test_compact_tracebackN)
rrrrQ�unittest�
skipUnless�hasattrr4r`rcrdrbrorrrr
rJds
;rJc@sLeZdZdd�Zdd�Zdd�Zdd�Zd	d
�Zdd�Zd
d�Z	dd�Z
dS)�DispatcherTestscCsdSrrr
rrr
�setUp�szDispatcherTests.setUpcCst��dSr�rrhr
rrr
�tearDown�szDispatcherTests.tearDowncCs,t��}|�|��d�|�|��d�dSr)r�
dispatcherrN�readable�writable�r�drrr
�
test_basic�szDispatcherTests.test_basiccCs$t��}|�t|�dt|��dS)Nz<asyncore.dispatcher at %#x>)rr�rN�repr�idr�rrr
�	test_repr�szDispatcherTests.test_reprc	Cs`t��}d}d}t���}|�|�|�|�W5QRX|����}|�|d|d|g�dS)NzLovely spam! Wonderful spam!rmzlog: %s)rr�rZcaptured_stderr�log�getvalue�
splitlinesrN)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)rr�r�captured_stdoutZlog_infor�r�rN)rr�r�r��l3�stdoutr�r]r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)rr�Zignore_log_typesrr��handle_expt�handle_read�handle_write�handle_connectr�r�rN)rr�r�r�r]rrr
�test_unhandleds
�zDispatcherTests.test_unhandledcCsFt�tj�}ttd�r*|�|t�tj��t�d�}|�|dk�dS)N�strerrorrn�)	rZ	_strerror�errno�EPERMr~rsrNr��
assertTrue)r�errrrr
�
test_strerror.s


zDispatcherTests.test_strerrorN)rrrr�r�r�r�r�r�r�r�rrrr
r�s
rc@seZdZdd�Zdd�ZdS)�dispatcherwithsend_noreadcCsdSrrr
rrr
r�8sz"dispatcherwithsend_noread.readablecCsdSrrr
rrr
r�;sz(dispatcherwithsend_noread.handle_connectN)rrrr�r�rrrr
r�7sr�c@s*eZdZdd�Zdd�Zejdd��ZdS)�DispatcherWithSendTestscCsdSrrr
rrr
r�@szDispatcherWithSendTests.setUpcCst��dSrr�r
rrr
r�Csz 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�r1皙�����?s$Suppose there isn't a 16-ton weight?r(r+i�rr)�)�	threading�Eventr�
settimeoutrZ	bind_portr�ThreadrCr>�join_thread�TIMEOUTr2r8r��
create_socket�connect�HOST�sendZ
out_bufferrrR�waitrNr�)
rr9rH�portZcapr�ryrBr�r=rrr
�	test_sendFs2








z!DispatcherWithSendTests.test_sendN)rrrr�r�r�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�TESTFNr6)r�filerrr
r�qszFileWrapperTest.setUpcCst�tj�dSr)rrFr�r
rrr
r�vszFileWrapperTest.tearDowncCs�t�tjtj�}t�|�}t�|�|�|j	|�|�|�
�|�|�|�d�d�|�|�
d�d�|��|�t|j
d�dS)N�
s
It's not dead�s, it'sr))rsr�rr��O_RDONLYrr�rZassertNotEqual�fdrrNr5rLrK�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)rsr�rr��O_WRONLY�O_APPENDrr�rr6r�rNrLr�)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�)rfr5r
�rBrr
r��szCFileWrapperTest.test_dispatcher.<locals>.FileDispatcher.handle_readN�rrrr�rr�rr
�FileDispatcher�sr�r-Tr��r1�use_poll�countr,)rsr�rr�r�rr�r�looprN�joinr�)rr�r��srr�r
�test_dispatcher�s
zFileWrapperTest.test_dispatcherc	CsNt�tjtj�}t�|�}t�|�t�dt	f��d}t�
�W5QRXdS)Nr�)rsr�rr�r�rr�rZcheck_warnings�ResourceWarning�
gc_collect�rr�rvrrr
�test_resource_warning�s

z%FileWrapperTest.test_resource_warningc	Csht�tjtj�}t�|�}t�|�t�|j�|�	t
��|��W5QRX|�|jd�|��dS)Nrn)rsr�rr�r�rr�rr�rKr�rNr�rrr
�test_close_twice�s

z FileWrapperTest.test_close_twiceN)rrrr�r�r�r�r|r}r~rr�r�r�rrrr
r�ns
�

r�c@sFeZdZddd�Zdd�Zdd�Zdd	�Zd
d�Zdd
�Zdd�Z	dS)�BaseTestHandlerNcCstj�||�d|_dSr)rr�rr^)rrHr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�)	rr�rr��set_reuse_addrrIrr/�handler)rrEr<r�rrr
r�s

zBaseServer.__init__cCs
|j��Sr)r�getsocknamer
rrr
�address�szBaseServer.addresscCs|�|�dSr)r��rrHr<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�)rrEr�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_allr�r
rrr
r��szBaseTestAPI.tearDownr�cCs\t|�d}d}tjrN|dkrNtjdd|jd�|jr:dS|d8}t�|�q|�d�dS)N�drr-r))r1r�r�zflag not set)	�floatrrgr�r�r^r2r8rr)r�instancer1r�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�r^r
rrr
r�szBBaseTestAPI.test_handle_connect.<locals>.TestClient.handle_connectN)rrrr�rrrr
�
TestClientsr��r�r�rEr<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�rIrr/r�r��rrEr<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�rEr<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)rr�r�r
rrr
r�-szDBaseTestAPI.test_handle_accepted.<locals>.TestListener.handle_acceptcSs|��d|_dSr)rr^r�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��rr;rrr
rAsz:BaseTestAPI.test_handle_read.<locals>.TestHandler.__init__N�rrrrrrrr
�TestHandler@sr��r�r�r�rEr<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�)r5r
rrr
r�Zsz=BaseTestAPI.test_handle_close.<locals>.TestClient.handle_readcSsd|_|��dSr�r^rr
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|_|��dSrrr
rrr
rwszPBaseTestAPI.test_handle_close_after_conn_broken.<locals>.TestClient.handle_closecSsd|_|��dSrrr
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)r5rirr
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)NrT)rr5�MSG_OOBr^r
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�chrrr�rrr
r�sz:BaseTestAPI.test_handle_expt.<locals>.TestHandler.__init__Nr�rrrr
r��sr�)rDrErr�skipTestrp�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)r^�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�rEr<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)rr�r�rErNr�type�SOCK_STREAM�
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)Nrr�r)r)rDrErrr
rr�r�rGr<r/r�rKr�)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)Nrr)z+SO_REUSEADDR not supported on this platform)rDrErrr
�
setsockopt�
SOL_SOCKET�SO_REUSEADDRr�r|�skiprr�r�
getsockoptrr�r�r�)rrHr�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�)r1r�)rr�rrrr
�<lambda>	s�z0BaseTestAPI.test_quick_connect.<locals>.<lambda>)r�r�r��iir)r)rEr�AF_INETr\�objectr
r�r<r�r�r>rr�r�rr�rr�	SO_LINGER�struct�packr�r�r�)rr�ryr�rrr
�test_quick_connects 

�zBaseTestAPI.test_quick_connectN)r�)rrrr�r�r�r�r�r�r�rrr|ZskipIfrpr�
startswithrrrrrrrr�r'rrrr
r��s(
 �
r�c@seZdZejZejdfZdS)�TestAPI_UseIPv4SocketsrN)	rrrrr"rErr�r<rrrr
r)sr)zIPv6 support requiredc@seZdZejZejdfZdS)�TestAPI_UseIPv6SocketsrN)	rrrrrrErZHOSTv6r<rrrr
r*sr*zUnix sockets requiredc@s$eZdZerejZejZ	dd�Z
dS)�TestAPI_UseUnixSocketscCst�|j�t�|�dSr)rrFr<r�r�r
rrr
r�(szTestAPI_UseUnixSockets.tearDownN)rrrrDrrrErr�r<r�rrrr
r+"sr+c@seZdZdZdS)�TestAPI_UseIPv4SelectFN�rrrr�rrrr
r,,sr,rRrSc@seZdZdZdS)�TestAPI_UseIPv4PollTNr-rrrr
r./sr.c@seZdZdZdS)�TestAPI_UseIPv6SelectFNr-rrrr
r/3sr/c@seZdZdZdS)�TestAPI_UseIPv6PollTNr-rrrr
r06sr0c@seZdZdZdS)�TestAPI_UseUnixSocketsSelectFNr-rrrr
r1:sr1c@seZdZdZdS)�TestAPI_UseUnixSocketsPollTNr-rrrr
r2=sr2�__main__)2rr|r4rsrrpr2r�r%r��testr�iorZPGOZSkipTestr�r~rDrrrr rCrIZTestCaserJrZdispatcher_with_sendr�r�r}r�r�r�r�r�r�r)ZIPV6_ENABLEDr*r+r,r.r/r0r1r2r�mainrrrr
�<module>sh



H/�G(