
     f%                     ~   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    rdZ	nej        dk    rdZ	ndZ	defd	Z
dd
ZddZddZej                            ej        dk    d          dd            Zej                            ej        dk    d          dd            ZddZddZddZ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                  J    t                      } |                                  | S N)r   enable)fns    [/var/www/api.educacionweb.es/myenv/lib/python3.11/site-packages/trio/_tests/test_fakenet.pyr
   r
      s    	BIIKKKI    c                    K   t                       t          j                            t          j        j                  } t          j                            t          j        j                  }|                     d           d {V  |                                 \  }}|dk    sJ |dk    sJ t          j        t          d          5 }|                     d           d {V  d d d            n# 1 swxY w Y   |j	        j
        t          j        k    sJ t          j        t          d          5 }|                    d|f           d {V  d d d            n# 1 swxY w Y   |j	        j
        t          j        k    sJ |                    d	|                                            d {V  |                     d
           d {V \  }}|d	k    sJ ||                                k    sJ |                     d|                                           d {V  |                    d
           d {V \  }}|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EINVAL
EADDRINUSEsendtorecvfrom)s1s2ipportexcdataaddrs          r   test_basic_udpr,      s     DDD			!7		8	8B			!7		8	8B
''"
#
########~~HB19999	8
 
 
 (	gg&'''''''''( ( ( ( ( ( ( ( ( ( ( ( ( ( ( 9?el**** 
Q
 
 
 +	gg{D)*********+ + + + + + + + + + + + + + + 9?e.....
))FBNN,,
-
--------{{2&&&&&&JD$6>>>>2>>######
))FBNN,,
-
--------{{2&&&&&&JD$6>>>>2>>########s$   C44C8;C86E  E$'E$c                    K   t                       t          j                            t          j        j                  } t          j                            t          j        j                  }|                     d           d {V  |                    d|                                            d {V  |                     d           d {V \  }}d S )Nr   r   r   r   )r
   r   r   r   r   r#   r   r$   )r%   r&   r*   r+   s       r   test_msg_truncr.   ;   s      DDD			!7		8	8B			!7		8	8B
''"
#
########
))FBNN,,
-
--------{{2&&&&&&JD$$$r   c                  	  K   t                       t          j                            t          j        j                  } t          j                            t          j        j                  }t	          j        t          d          5  |                    d           d{V  ddd           n# 1 swxY w Y   |                     d           d{V  | 	                                \  }}|dk    sJ |dk    sJ |
                    d	| 	                                           d{V  |                     d           d{V \  }}|d	k    sJ ||	                                k    sJ | 
                    d
|	                                           d{V  |                    d           d{V }|d
k    sJ | 
                    d|	                                           d{V dk    sJ t          d          }t	          j        t          d          5  |                    |d           d{V \  }}ddd           n# 1 swxY w Y   |                    |           d{V \  }}|dk    sJ |dk    sJ || 	                                k    sJ | 
                    d|	                                           d{V dk    sJ t          d          }|                    |           d{V }|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*                    5 }
|                    d           d{V  ddd           n# 1 swxY w Y   |
j        j        t0          j        k    sJ t	          j        t          d          5  |                    d|	           d{V  ddd           n# 1 swxY w Y   t	          j        t          d          5  |
                    d|	| 	                                           d{V  ddd           n# 1 swxY w Y   t	          j        t4          d          5  |
                    d|	| 	                                d           d{V  ddd           dS # 1 swxY w 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nameMSG_MOREr   ENOTCONN_MSGsendr   r    ENOTCONN	TypeError)r%   r&   r'   r(   r*   r+   bufr2   buf2flagsr)   s              r   test_recv_methodsrH   D   s     DDD			!7		8	8B			!7		8	8B 
*2N	O	O	O  ggbkk               ''"
#
########~~HB19999 ))FBNN,,
-
--------{{2&&&&&&JD$6>>>>2>>###### ))FBNN,,
-
--------D6>>>> 62>>#3#3444444449999
B--C	*2K	L	L	L ? ?!//A/>>>>>>>>? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ++C00000000NVTQ;;;;&&&&&2>>###### 62>>#3#3444444449999R==D<<%%%%%%%%FQ;;;;'''''
|w3#5#:i#G#G_ 
wl	3	3	3 sggfoo              9?en,,,,	*2V	W	W	W % %ggfe$$$$$$$$$% % % % % % % % % % % % % % %
 
*2V	W	W	W 9 9iir~~'7'78888888889 9 9 9 9 9 9 9 9 9 9 9 9 9 9	y(D	E	E	E F Fiir~~'7'7EEEEEEEEEF F F F F F F F F F F F F F F F F Fsl   
B22B69B6!I		IINN
N
O11O58O50QQQ91R77R;>R;win32z"functions not in socket on windows)reasonc                    K   t           j        dk    r3t                       t          j                            t          j        j                  } t          j                            t          j        j                  }|                    d           d {V  t          j        t          t                    5 }|                    dg           d {V  d d d            n# 1 swxY w Y   |j        j        t          j        k    sJ |                     dgdd|                                           d {V d	k    sJ |                    d
           d {V \  }}}}|dk    sJ |g k    sJ |dk    sJ ||                                 k    sJ |                     d|                                           d {V dk    sJ t%          d          }t%          d	          }|                    ||g           d {V }	|	\  }
}}}|
dk    sJ |dk    sJ |dk    sJ |g k    sJ |dk    sJ ||                                 k    sJ |                     d|                                           d {V dk    sJ t%          d          }|                    |g           d {V }	|	\  }
}}}|
dk    sJ |dk    sJ |g k    sJ |t          j        k    sJ ||                                 k    sJ t          j        t*          d          5  |                     d           d {V  d d d            d S # 1 swxY w Y   d S d S )NrI   r   r   r   r6   r3    r   r0   r   s   xyzw   r1   s   xys   zw s   xyzwv   z.^'FakeSocket' object has no attribute 'share'$)r<   r=   r
   r   r   r   r   r   r   r   rA   sendmsgr   r    rC   r   recvmsgr#   r9   recvmsg_into	MSG_TRUNCAttributeErrorshare)r%   r&   r)   r*   ancdata	msg_flagsr+   buf1rF   retr2   s              r   test_nonwindows_functionalityrY      s7     
 |w
[T[%;<<[T[%;<<gg&''''''''' ]7,777 	'3**fX&&&&&&&&&	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	'y%.0000ZZ"a1A1ABBBBBBBBaGGGG13B+?+?+?+?+?+?(w	4v~~~~"}}}}A~~~~r~~''''''
 YYw(8(899999999Q>>>>||||OOT4L11111111-0*)T{{{{u}}}}&&&&"}}}}A~~~~r~~'''''' YYx)9)9::::::::a????||OOTF++++++++-0*)T{{{{u}}}}"}}}}F,,,,,r~~'''''']"R
 
 
 	 	 ((1++	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	Y s$   ;C$$C(+C(L::L>L>z#windows-specific fakesocket testingc                    K   t           j        dk    rt                       t          j                            t          j        j                  } t          j                            t          j        j                  }|                     d           d {V  t          j        t          d          5  | 
                    dgdd|                                           d {V  d d d            n# 1 swxY w Y   t          j        t          d	          5  |                    d           d d d            n# 1 swxY w Y   t          j        t          d
          5  |                    g            d d d            n# 1 swxY w Y   t          j        t                    5  |                     d           d d d            d S # 1 swxY w Y   d S d S )NrI   r   r   z0^'FakeSocket' object has no attribute 'sendmsg'$r   r3   rL   r   z0^'FakeSocket' object has no attribute 'recvmsg'$z5^'FakeSocket' object has no attribute 'recvmsg_into'$)r<   r=   r
   r   r   r   r   r   r   rS   rO   r   rP   rQ   r7   rT   )r%   r&   s     r   test_windows_functionalityr[      s     
 |w
[T[%;<<[T[%;<<gg&''''''''']"T
 
 
 	@ 	@ **fXr1bnn.>.>?????????	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ ]"T
 
 
 	 	 JJqMMM	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 ]I
 
 
 	  	  OOB		  	  	  	  	  	  	  	  	  	  	  	  	  	  	 
 ].// 	 	HHQKKK	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	% sH   62C44C8;C8D<<E E "FFF(GGGc                     K   t                       t          j        t                    5  t          j                                         d d d            d S # 1 swxY w Y   d S r   )r
   r   r   r7   r   r   rL   r   r   test_basic_tcpr]      s      DDD	*	+	+                   s   AAAc                  X  K   t                       t          j                            t          j        j                  } t	          j        t          d          5  |                     t          j        t          j	                   d d d            n# 1 swxY w Y   t	          j        t          d          5  |                     t          j        t          j        d           d d d            n# 1 swxY w Y   t	          j        t          d          5  |                     t          j        t          j        d           d d d            n# 1 swxY w Y   t	          j        t          d          5  |                     t          j        t          j        d           d d d            n# 1 swxY w Y   |                     d           t	          j        t          d	          5  |                     d           d d d            n# 1 swxY w Y   |                                 rJ 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+, \.\.\.\)$Tr5   z(^FakeNet can't make inheritable sockets$)r
   r   r   r   r   r   r   
getsockoptIPPROTO_TCPTCP_NODELAYr7   
setsockoptIPPROTO_IPV6IPV6_V6ONLY
SOL_SOCKETSO_REUSEADDRset_inheritableget_inheritable)r%   s    r   test_not_implemented_functionsri      sc     DDD			!7		8	8B 
J
 
 
 > > 	f(&*<===> > > > > > > > > > > > > > > 
#J
 
 
 F F 	f)6+=uEEEF F F F F F F F F F F F F F F 
T
 
 
 E E 	f)6+=tDDDE E E E E E E E E E E E E E E 
T
 
 
 A A 	f')<a@@@A A A A A A A A A A A A A A A u	#M
 
 
 ! ! 	4   ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! !!#######sZ   +BBB8,C00C47C4,EEE4,F,,F03F0'H		HHc                    K   t                       t          j                            t          j        j                  } t	          j        t          t                    5 }|                                  d d d            n# 1 swxY w Y   |j	        j
        t          j        k    sJ |                     d           d {V  t	          j        t          d          5  |                                  d d d            d S # 1 swxY w 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   rA   getpeernamer   r    rC   r   AssertionError)r%   r)   s     r   test_getpeernamerm      sr     DDD			!7		8	8B	wl	3	3	3 s
              9?en,,,,
''"
#
########	Y
 
 
   		                 s$    BBBD  DDc                  \  K   t                       t          j        t          t	          j        dt          j        j                             5  t          j                                        } d d d            n# 1 swxY w Y   t          j                            t          j        j	                  } | 
                                dk    sJ |                     d           d {V  | 
                                \  }}|dk    sJ |dk    sJ t          j                            t          j        t          j	                  }|
                                dk    sJ |                    d           d {V  |
                                ^}}}|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   r7   reescaper   r   SOCK_STREAMr   r   r   AF_INET6)r%   r'   r(   r&   _s        r   	test_initru     s     DDD	iK$+2IKK
 

 
 
 " " [!!" " " " " " " " " " " " " " " 
		!7		8	8B>>~---- ''.
!
!!!!!!!!~~HB19999 
		6?9J		K	KB>>y(((( '')

>>##LBq;;;;19999A;;;;;;s   A;;A?A?)r   N)r    rp   r   r<   r   r   trio.testing._fake_netr   r=   rA   r
   r,   r.   rH   markskipifrY   r[   r]   ri   rm   ru   rL   r   r   <module>ry      s    				  



   * * * * * * <7RLL\X<LL5LG    $ $ $ $B' ' ' '>F >F >F >FB LG$H   1 1 1 1h LG$I      0    $  $  $  $F         r   