a
    (ñ»jL&  ã                   @   s  d dl Z d dlZd dlZd dlZd dlZd dlZd dlmZ ejdkrLdZ	nejdkr\dZ	ndZ	edœd	d
„Z
ddœdd„Zddœdd„Zddœdd„Zejjejdkdd�ddœdd„ƒZejjejdkdd�ddœdd„ƒZddœdd„Zddœdd„Zddœdd„Zddœdd „ZdS )!é    N)ÚFakeNetÚlinuxz<^\[Errno 107\] (Transport endpoint is|Socket) not connected$Údarwinz&^\[Errno 57\] Socket is not connected$z^\[Errno 10057\] Unknown error$)Úreturnc                  C   s   t ƒ } |  ¡  | S ©N)r   Úenable)Úfn© r	   ú>E:\soccer\ml_env\Lib\site-packages\trio/_tests/test_fakenet.pyr      s    r   c                  Ã   sœ  t ƒ  tjjtjjd�} tjjtjjd�}|  d¡I d H  |  ¡ \}}|dksRJ ‚|dks^J ‚tjtdd�� }|  d¡I d H  W d   ƒ n1 s’0    Y  |j	j
t
jks®J ‚tjtdd��$}| d|f¡I d H  W d   ƒ n1 sæ0    Y  |j	j
t
jk�sJ ‚| d	|  ¡ ¡I d H  |  d
¡I d H \}}|d	k�s<J ‚|| ¡ k�sNJ ‚|  d| ¡ ¡I d H  | d
¡I d H \}}|dk�s†J ‚||  ¡ k�s˜J ‚d S )N©Útype©ú	127.0.0.1r   r   r   z^\[\w+ \d+\] Invalid argument$©Úmatch)z	192.0.2.1r   z7^\[\w+ \d+\] (Address (already )?in use|Unknown error)$ó   xyzé
   ó   abc)r   ÚtrioÚsocketÚ
SOCK_DGRAMÚbindÚgetsocknameÚpytestÚraisesÚOSErrorÚvalueÚerrnoÚEINVALZ
EADDRINUSEÚsendtoÚrecvfrom)Ús1Ús2ÚipÚportÚexcÚdataÚaddrr	   r	   r
   Útest_basic_udp   s:    þ.þ2r(   c                  Ã   sd   t ƒ  tjjtjjd�} tjjtjjd�}|  d¡I d H  | d|  ¡ ¡I d H  |  d¡I d H  d S )Nr   r   r   r   )r   r   r   r   r   r   r   r    ©r!   r"   r	   r	   r
   Útest_msg_trunc=   s    r*   c                  Ã   sn  t ƒ  tjjtjjd�} tjjtjjd�}tjtdd��  | d¡I dH  W d  ƒ n1 s^0    Y  |  d¡I dH  |  	¡ \}}|dks�J ‚|dksœJ ‚| 
d	|  	¡ ¡I dH  |  d¡I dH \}}|d	ksÒJ ‚|| 	¡ ksâJ ‚|  
d
| 	¡ ¡I dH  | d¡I dH }|d
k�sJ ‚|  
d| 	¡ ¡I dH dk�s6J ‚tdƒ}tjtdd��( |j|dd�I dH \}}W d  ƒ n1 �s|0    Y  | |¡I dH \}}|dk�s¨J ‚|dk�s¶J ‚||  	¡ k�sÈJ ‚|  
d| 	¡ ¡I dH dk�sèJ ‚tdƒ}| |¡I dH }|dk�sJ ‚|dk�sJ ‚tjdk�r>tjjdk�r>tj}	nd}	tjttd�� }
| d¡I dH  W d  ƒ n1 �sx0    Y  |
jjtjk�s–J ‚tjtdd��" | d|	¡I dH  W d  ƒ n1 �sÎ0    Y  tjtdd��( | 
d|	|  	¡ ¡I dH  W d  ƒ n1 �s0    Y  tjtdd��* | 
d|	|  	¡ d¡I dH  W d  ƒ n1 �s`0    Y  dS )z!Test all recv methods for codecovr   zcode will most likely hangr   r   Nr   r   r   r   s   defs   ghié   z^partial recvfrom_into$é   )Únbytess
   ghi       ó   jkls
   jkl       r   Úcpythoné   ó   mnoz"^FakeNet send flags must be 0, notzwrong number of arguments$z	extra arg)r   r   r   r   r   r   ÚNotImplementedErrorÚrecvr   r   r   r    Ú	bytearrayÚrecvfrom_intoÚ	recv_intoÚsysÚplatformÚimplementationÚnameZMSG_MOREr   ÚENOTCONN_MSGÚsendr   r   ÚENOTCONNÚ	TypeError)r!   r"   r#   r$   r&   r'   Úbufr-   Úbuf2Úflagsr%   r	   r	   r
   Útest_recv_methodsF   sZ    . 8 0ÿ2ÿ8rB   Úwin32z"functions not in socket on windows)Úreasonc                  Ã   sˆ  t jdk�r„tƒ  tjjtjjd�} tjjtjjd�}| d¡I d H  tjt	t
d��"}| dg¡I d H  W d   ƒ n1 s|0    Y  |jjtjks˜J ‚|  dgdd| ¡ ¡I d H d	ks¼J ‚| d
¡I d H \}}}}|dksàJ ‚|g ksìJ ‚|dksøJ ‚||  ¡ k�s
J ‚|  d| ¡ ¡I d H dk�s*J ‚tdƒ}td	ƒ}| ||g¡I d H }	|	\}
}}}|
dk�shJ ‚|dk�svJ ‚|dk�s„J ‚|g k�s’J ‚|dk�s J ‚||  ¡ k�s²J ‚|  d| ¡ ¡I d H dk�sÒJ ‚tdƒ}| |g¡I d H }	|	\}
}}}|
dk�sJ ‚|dk�sJ ‚|g k�s"J ‚|tjk�s2J ‚||  ¡ k�sDJ ‚tjtdd��  |  d¡I d H  W d   ƒ n1 �sz0    Y  d S )NrC   r   r   r   r1   r.   r	   r   r+   r   s   xyzwé   r,   s   xys   zw s   xyzwvé   z.^'FakeSocket' object has no attribute 'share'$)r7   r8   r   r   r   r   r   r   r   r   r;   Úsendmsgr   r   r=   r   Úrecvmsgr   r4   Úrecvmsg_intoÚ	MSG_TRUNCÚAttributeErrorÚshare)r!   r"   r%   r&   ZancdataZ	msg_flagsr'   Zbuf1r@   Úretr-   r	   r	   r
   Útest_nonwindows_functionality‹   sN    0$  þrN   z#windows-specific fakesocket testingc                  Ã   s:  t jdk�r6tƒ  tjjtjjd�} tjjtjjd�}|  d¡I d H  tjt	dd��, |  
dgdd| ¡ ¡I d H  W d   ƒ n1 s†0    Y  tjt	d	d�� | d¡ W d   ƒ n1 s¾0    Y  tjt	d
d�� | g ¡ W d   ƒ n1 sö0    Y  t t¡� |  d¡ W d   ƒ n1 �s,0    Y  d S )NrC   r   r   z0^'FakeSocket' object has no attribute 'sendmsg'$r   r.   r	   r   z0^'FakeSocket' object has no attribute 'recvmsg'$z5^'FakeSocket' object has no attribute 'recvmsg_into'$)r7   r8   r   r   r   r   r   r   r   rK   rG   r   rH   rI   r2   rL   r)   r	   r	   r
   Útest_windows_functionalityÄ   s,    þ:þ(þ(rO   c                   Ã   s>   t ƒ  t t¡� tj ¡  W d   ƒ n1 s00    Y  d S r   )r   r   r   r2   r   r   r	   r	   r	   r
   Útest_basic_tcpâ   s    rP   c                  Ã   sn  t ƒ  tjjtjjd�} tjtdd��  |  tjtj	¡ W d   ƒ n1 sL0    Y  tjt
dd��" |  tjtjd¡ W d   ƒ n1 sŒ0    Y  tjtdd��" |  tjtjd¡ W d   ƒ n1 sÌ0    Y  tjtdd��" |  tjtjd¡ W d   ƒ n1 �s0    Y  |  d¡ tjt
d	d�� |  d¡ W d   ƒ n1 �sR0    Y  |  ¡ �rjJ ‚d S )
Nr   z0^FakeNet doesn't implement getsockopt\(\d, \d\)$r   z%^FakeNet always has IPV6_V6ONLY=True$Fz:^FakeNet doesn't implement setsockopt\(\d+, \d+, \.\.\.\)$Tr0   z(^FakeNet can't make inheritable sockets$)r   r   r   r   r   r   r   Ú
getsockoptÚIPPROTO_TCPÚTCP_NODELAYr2   Ú
setsockoptÚIPPROTO_IPV6ÚIPV6_V6ONLYÚ
SOL_SOCKETÚSO_REUSEADDRÚset_inheritableÚget_inheritable)r!   r	   r	   r
   Útest_not_implemented_functionsè   s:    þ.þ0þ0þ2
þ*r[   c                  Ã   sª   t ƒ  tjjtjjd�} tjttd��}|  ¡  W d   ƒ n1 sD0    Y  |j	j
t
jks`J ‚|  d¡I d H  tjtdd�� |  ¡  W d   ƒ n1 sœ0    Y  d S )Nr   r   r   zI^This method seems to assume that self._binding has a remote UDPEndpoint$)r   r   r   r   r   r   r   r;   Úgetpeernamer   r   r=   r   ÚAssertionError)r!   r%   r	   r	   r
   Útest_getpeername  s    &þr^   c                  Ã   s  t ƒ  tjtt dtjj› �¡d�� tj ¡ } W d   ƒ n1 sD0    Y  tjjtjj	d�} |  
¡ dkspJ ‚|  d¡I d H  |  
¡ \}}|dks˜J ‚|dks¤J ‚tjjtjtj	d�}| 
¡ dksÈJ ‚| d¡I d H  | 
¡ ^}}}|d	ksòJ ‚|dksþJ ‚|ddgk�sJ ‚d S )
Nz#FakeNet doesn't (yet) support type=r   r   )z0.0.0.0r   r   r   )Úfamilyr   )z::r   z::1)r   r   r   r2   ÚreÚescaper   r   ÚSOCK_STREAMr   r   r   ÚAF_INET6)r!   r#   r$   r"   Ú_r	   r	   r
   Ú	test_init   s*    ÿþ(re   )r   r`   r   r7   r   r   Ztrio.testing._fake_netr   r8   r;   r   r(   r*   rB   ÚmarkZskipifrN   rO   rP   r[   r^   re   r	   r	   r	   r
   Ú<module>   s:   

#	Eþ5þ(