Your IP : 216.73.216.213


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

a

XC?h�G�@sLddlZddlZddlZddlZddlmZddlmZmZddlm	Z
ddlmZddl
mZdd�ZGd	d
�d
ej�ZGdd�d�Zejd
kr�Gdd�dee
j�ZGdd�dee
j�ZnzddlZeed�r�Gdd�dee
j�Zeed��rGdd�dee
j�Zeed��r"Gdd�dee
j�ZGdd�dee
j�Zedk�rHe��dS)�N)�proactor_events)�cycle�islice)�utils)�support)�
socket_helpercCst�d�dS�N)�asyncioZset_event_loop_policy�r
r
�I/opt/alt/python39/lib64/python3.9/test/test_asyncio/test_sock_lowlevel.py�tearDownModule
src@s>eZdZdZdZddd�Zdd�Zdd�Zdd	�Zd
d�Z	dS)
�MyProtoNcCs2d|_d|_d|_|dur.|��|_|��|_dS)N�INITIALr)�	transport�state�nbytesZ
create_future�	connected�done)�self�loopr
r
r�__init__s
zMyProto.__init__cCs@||_|jdksJ|j��d|_|jr2|j�d�|�d�dS)Nr�	CONNECTEDs%GET / HTTP/1.0
Host: example.com

)rrr�
set_result�write)rrr
r
r�connection_madeszMyProto.connection_madecCs*|jdksJ|j��|jt|�7_dS)Nr)rr�len)r�datar
r
r�
data_received%szMyProto.data_receivedcCs|jdksJ|j��d|_dS)Nr�EOF)r�rr
r
r�eof_received)szMyProto.eof_receivedcCs0|jdvsJ|j��d|_|jr,|j�d�dS)N)rrZCLOSED)rrr)r�excr
r
r�connection_lost-szMyProto.connection_lost)N)
�__name__�
__module__�__qualname__rrrrrr r"r
r
r
rr
s
r
cs�eZdZdd�Z�fdd�Z�fdd�Zdd�Zd	d
�Zdd�Zd
d�Z	dd�Z
dd�Zdd�Zdd�Z
dd�Zdd�Zdd�Zdd�Zdd �Zejd!d"��Zd#d$�Zd%d&�Zd'd(�Zd)d*�Z�ZS)+�BaseSockTestsMixincCst�dSr)�NotImplementedErrorrr
r
r�create_event_loop6sz$BaseSockTestsMixin.create_event_loopcs$|��|_|�|j�t���dSr)r(rZset_event_loop�super�setUpr��	__class__r
rr*9s
zBaseSockTestsMixin.setUpcs4|j��st�|j�|��t��t���dSr)	rZ	is_closed�
test_utilsZrun_brieflyZ
doCleanupsrZ
gc_collectr)�tearDownrr+r
rr.>s

zBaseSockTestsMixin.tearDowncCs�t|jtj��sl|j�d�|�d�|�t��(|j�|j�	||j
��Wd�n1s^0Y|�t��&|j�|j�|d��Wd�n1s�0Y|�t��&|j�|j�|d��Wd�n1s�0Y|�t��(|j�|j�
|t���Wd�n1�s"0Y|�t��$|j�|j�|��Wd�n1�sb0Y|�d�|j�|j�	||j
��|j�|j�|d��|j�|j�|d��}|j�|j�|d��|��|�|�d��dS)NT�GET / HTTP/1.0

�F�HTTP/1.0 200 OK)�
isinstancerrZBaseProactorEventLoopZ	set_debug�setblocking�assertRaises�
ValueError�run_until_complete�sock_connect�address�sock_sendall�	sock_recv�sock_recv_into�	bytearray�sock_accept�close�
assertTrue�
startswith)r�httpd�sockrr
r
r�_basetest_sock_client_opsGsL
�"�"�"�$
�$
����z,BaseSockTestsMixin._basetest_sock_client_opsc	Cs�|�d�|j�|j�||j��|j�|j�|d��td�}t|��L}|j�|j�||dd���}|j�|j�|||d���Wd�n1s�0Y|�	�|�
|�d��dS)NFr/r0r1)r3rr6r7r8r9r<�
memoryviewr;r>r?r@)rrArBr�bufrr
r
r�_basetest_sock_recv_intoks"
��
��"z+BaseSockTestsMixin._basetest_sock_recv_intocCsTt���8}t��}|�||�t��}|�||�Wd�n1sF0YdSr)r-�run_test_server�socketrCrF�rrArBr
r
r�test_sock_client_ops|s

z'BaseSockTestsMixin.test_sock_client_opsc�s�|�d�|j�||j�IdHt�|j�|d��}t�d�IdH|��t�|j�	|d��|j�|d�IdH}|j�|d�IdH|�
|�d��dS�NFr0rr/r1)r3rr7r8r	�create_taskr:�sleep�cancelr9r?r@)rrArB�taskrr
r
r�_basetest_sock_recv_racing�s
�z-BaseSockTestsMixin._basetest_sock_recv_racingc	�s�|�d�|j�||j�IdHtd�}t|���}t�|j�||dd���}t�	d�IdH|�
�t�|j�|d��}|j�||dd��IdH}|j�|||d��IdH|�|�
d��Wd�n1s�0Y|IdHdSrK)r3rr7r8r<rDr	rLr;rMrNr9r?r@)rrArBrrErOrr
r
r�_basetest_sock_recv_into_racing�s 

��.z2BaseSockTestsMixin._basetest_sock_recv_into_racingc	�sv|�d�|�d�|�tjtjd�|�d�t��j	�
||����}t�d�IdH|�
�d���d����|IdHd}|dkr҈�t�� |�d|�q�Wd�n1s�0Yt|d	�}q�t��j	�|d
��}t�d�IdH|����fdd�}t�|��}�j	�|d
�IdH|�tj�|IdH}��|�d
��Wd�n1�sh0YdS)N�z	127.0.0.1r�r0Fr� �� �shelloc�s2d}�j��d�IdH}|s |S||��7}qdS)N�rT)rr:�strip)�rvrE�rZserverr
r�recv_all�s
z?BaseSockTestsMixin._basetest_sock_send_racing.<locals>.recv_allsworld)�bind�listenZ
setsockoptrHZ
SOL_SOCKETZ	SO_SNDBUFr3r	rLrr7�getsocknamerMZacceptr4�BlockingIOError�send�intr9rNZshutdownZSHUT_WRr?�endswith)r�listenerrBrO�sizer\rr
r[r�_basetest_sock_send_racing�s8


�

.�
z-BaseSockTestsMixin._basetest_sock_send_racingc�s�|�d�|��}|�d�t�|j�||��}t�d�IdH|��|�	d�d}t
d�D]�}z|j�||�IdHWnlty�}z|}WYd}~q^d}~0ty�}z.|}t
|dd�dkr�WYd}~q�WYd}~q^d}~00dSq^|�|�dS)	NrRFrrSzMax retries reached�Zwinerrori&')r]r_r3r	rLrr7rMrNr^�range�ConnectionRefusedError�OSError�getattrZskipTest)rrdrB�addrrOZskip_reason�i�er
r
r�_basetest_sock_connect_racing�s&


$z0BaseSockTestsMixin._basetest_sock_connect_racingc
Cs4t����}t��}|�,|j�t�|�||�d��Wd�n1sH0Yt��}|�,|j�t�|�||�d��Wd�n1s�0YWd�n1s�0Yt��}t��}|�R|�,|j�t�|�	||�d��Wd�n1�s0YWd�n1�s&0YdS�N�
)
r-rGrHrr6r	�wait_forrPrQrf)rrArBrdr
r
r�test_sock_client_racing�s"

�$
�B
�z*BaseSockTestsMixin.test_sock_client_racingc
Csxt��}t��}|�P|�,|j�t�|�||�d��Wd�n1sL0YWd�n1sj0YdSrp)rHrr6r	rrro)rrdrBr
r
r�test_sock_client_connect_racings
�z2BaseSockTestsMixin.test_sock_client_connect_racingc�s�t��}|�d�d}d|d}|j�||�IdH|j�|dd|d�IdHt�|j�||��}|j�||�IdH}|�|�	d��|�
d	�d
kr�||j�||�IdH7}q�|d|�d	�d�}|t|�d�}|}t
d�}	tt|	t|���}
|�||
�|t|�8}|j�||�IdH}|�s0�q^tt|	t|���}
|�||
�|t|�8}�q|�|d�|IdH|��dS�
NFi@Bs
0123456789rqsPOST /loop HTTP/1.0
sContent-Length: %d
s
r1s

���rUr)rHr3rr7r9r	rLr:r?r@�find�indexrr�bytesr�assertEqualr>)rr8rB�	DATA_SIZE�chunkrOr�headersre�checker�expectedr
r
r�_basetest_huge_contentsB
���

z)BaseSockTestsMixin._basetest_huge_contentcCs@t���$}|j�|�|j��Wd�n1s20YdSr)r-rGrr6r�r8�rrAr
r
r�test_huge_content?s

�z$BaseSockTestsMixin.test_huge_contentc�s�t��}|�d�d}d|d}|j�||�IdH|j�|dd|d�IdHt�|j�||��}t|�}t|�}|j�	||�IdH}t
|d|��}	|�|	�d��|	�
d	�d
kr�|j�	||�IdH}t
|d|��}	q�|	d|	�d	�d�}
|	t|
�d�}	|}td�}t
t|t|	���}
|�|	|
�|t|	�8}|j�	||�IdH}|d|�}	|	�sh�q�t
t|t|	���}
|�|	|
�|t|	�8}�q>|�|d�|IdH|��dSru)rHr3rr7r9r	rLr<rDr;ryr?r@rwrxrrrrzr>)rr8rBr{r|rOZarrayrErrr}rer~rr
r
r�_basetest_huge_content_recvintoDsL
���

z2BaseSockTestsMixin._basetest_huge_content_recvintocCs@t���$}|j�|�|j��Wd�n1s20YdSr)r-rGrr6r�r8r�r
r
r�test_huge_content_recvintovs

�z-BaseSockTestsMixin.test_huge_content_recvintocCs\t���@}t�tj�}|�||�t�tj�}|�||�Wd�n1sN0YdSr)r-Zrun_test_unix_serverrHZAF_UNIXrCrFrIr
r
r�test_unix_sock_client_ops{s

z,BaseSockTestsMixin.test_unix_sock_client_opscCs�d}z&t��}|�d�|��}W|��n
|��0t��}|�d�|�t��&|j�|j�	||��Wd�n1s~0Y|��dS)NrRF)
rHr]r_r>r3r4rirr6r7)rr8�srBr
r
r�test_sock_client_fail�s


�"z(BaseSockTestsMixin.test_sock_client_failcCs�t��}|�d�|�d�|�d�t��}|�|���|j�|�}|j�|�\}}|�	|�
�d�|�	||���|�	|��|���|��|��|��dS)NFrRrSr)
rHr3r]r^Zconnectr_rr=r6rzZ
gettimeoutZgetpeernamer>)rrd�client�fZconnrlr
r
r�test_sock_accept�s


z#BaseSockTestsMixin.test_sock_acceptcCs�t��}|�d�|�d�|�d�|��}t�|j�|�d�}|�	tj
��|j�|�Wd�n1sp0Y|��t��}|�d�|j�
||�}|�	t��|j�|�Wd�n1s�0Y|��dS)NFrRrSg�������?)rHr3r]r^r_r	rrrr=r4�TimeoutErrorr6r>r7ri)rrdZsockaddrr�r�r
r
r�test_cancel_sock_accept�s


*
*z*BaseSockTestsMixin.test_cancel_sock_acceptc
s&t����}d}�j��jj|jdtji��}|D]Z\}}}}}z4tj|||d�}|�d��j��j�	||��Wnt
y�Yq20q�q2ds�Jd���jj�fdd�|d�}	�j�|	�\}
}��|
t
j���|t
j��j�|j���|jd�|
��Wd�n1�s0YdS)	N�type)�familyr��protoFzCan not create socket.cst�jd�S)N)r)r
rr
rr
r�<lambda>�rXz@BaseSockTestsMixin.test_create_connection_sock.<locals>.<lambda>)rBr)r-rGrr6Zgetaddrinfor8rHZSOCK_STREAMr3r7�
BaseExceptionZcreate_connectionZassertIsInstancer	Z	Transport�ProtocolrZ
assertGreaterrr>)rrArBZinfosr�r�r�Zcnamer8r�ZtrZprr
rr�test_create_connection_sock�s:���
��z.BaseSockTestsMixin.test_create_connection_sock)r#r$r%r(r*r.rCrFrJrPrQrfrorsrtr�r�r�r�rZskip_unless_bind_unix_socketr�r�r�r�r��
__classcell__r
r
r+rr&4s,	$7,2
r&Zwin32c@seZdZdd�ZdS)�SelectEventLoopTestscCst��Sr)r	�SelectorEventLooprr
r
rr(�s�&SelectEventLoopTests.create_event_loopN�r#r$r%r(r
r
r
rr��sr�c@seZdZdd�ZdS)�ProactorEventLoopTestscCst��Sr)r	ZProactorEventLooprr
r
rr(�sz(ProactorEventLoopTests.create_event_loopNr�r
r
r
rr��sr��KqueueSelectorc@seZdZdd�ZdS)�KqueueEventLoopTestscCst�t���Sr)r	r��	selectorsr�rr
r
rr(�s�z&KqueueEventLoopTests.create_event_loopNr�r
r
r
rr��sr��
EpollSelectorc@seZdZdd�ZdS)�EPollEventLoopTestscCst�t���Sr)r	r�r�r�rr
r
rr(�sz%EPollEventLoopTests.create_event_loopNr�r
r
r
rr��sr��PollSelectorc@seZdZdd�ZdS)�PollEventLoopTestscCst�t���Sr)r	r�r�r�rr
r
rr(�sz$PollEventLoopTests.create_event_loopNr�r
r
r
rr��sr�c@seZdZdd�ZdS)r�cCst�t���Sr)r	r�r�ZSelectSelectorrr
r
rr(sr�Nr�r
r
r
rr��s�__main__)rHr	�sysZunittestr�	itertoolsrrZtest.test_asynciorr-�testrZtest.supportrrr�r
r&�platformZTestCaser�r�r��hasattrr�r�r�r#�mainr
r
r
r�<module>sN#$
��
����