
    gL&                     ~   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    d/var/www/html/nodeJS/PythonScripts/venv3.11/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	/
 
 
 ( 
gg&'''''''''	( ( ( ( ( ( ( ( ( ( ( ( ( ( (
 9?el**** 
H
 
 
 + 
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&   s     r   test_msg_truncr/   =   s      DDD			!7		8	8B			!7		8	8B
''"
#
########
))FBNN,,
-
--------
++b//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+   bufr3   buf2flagsr)   s              r   test_recv_methodsrI   F   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	*2L	M	M	M ? ?!//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,,,,	#H
 
 
 % % ggfe$$$$$$$$$% % % % % % % % % % % % % % % 
#H
 
 
 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(E	F	F	F 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 )NrJ   r   r   r   r7   r4    r   r1   r   s   xyzw   r2   s   xys   zw s   xyzwv   z.^'FakeSocket' object has no attribute 'share'$)r=   r>   r
   r   r   r   r   r   r   r   rB   sendmsgr   r    rD   r   recvmsgr#   r:   recvmsg_into	MSG_TRUNCAttributeErrorshare)r%   r&   r)   r*   ancdata	msg_flagsr+   buf1rG   retr3   s              r   test_nonwindows_functionalityrZ      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~~'''''']C
 
 
 	 	 ((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 )NrJ   r   r   z0^'FakeSocket' object has no attribute 'sendmsg'$r   r4   rM   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   rT   rP   r   rQ   rR   r8   rU   r.   s     r   test_windows_functionalityr\      s      |w
[T[%;<<[T[%;<<gg&''''''''']E
 
 
 	@ 	@ **fXr1bnn.>.>?????????		@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@
 ]E
 
 
 	 	 JJqMMM		 	 	 	 	 	 	 	 	 	 	 	 	 	 	
 ]J
 
 
 	  	  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   r8   r   r   rM   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+, \.\.\.\)$Tr6   z(^FakeNet can't make inheritable sockets$)r
   r   r   r   r   r   r   
getsockoptIPPROTO_TCPTCP_NODELAYr8   
setsockoptIPPROTO_IPV6IPV6_V6ONLY
SOL_SOCKETSO_REUSEADDRset_inheritableget_inheritable)r%   s    r   test_not_implemented_functionsrj      sc     DDD			!7		8	8B 
A
 
 
 > > 	f(&*<===	> > > > > > > > > > > > > > > 
6
 
 
 F F 	f)6+=uEEE	F F F F F F F F F F F F F F F
 
K
 
 
 E E 	f)6+=tDDD	E E E E E E E E E E E E E E E
 
K
 
 
 A A 	f')<a@@@	A A A A A A A A A A A A A A A u	9
 
 
 ! ! 	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   rB   getpeernamer   r    rD   r   AssertionError)r%   r)   s     r   test_getpeernamern     sr     DDD			!7		8	8B	wl	3	3	3 s
              9?en,,,,
''"
#
########	Z
 
 
   		                 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   r8   reescaper   r   SOCK_STREAMr   r   r   AF_INET6)r%   r'   r(   r&   _s        r   	test_initrv      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    rq   r   r=   r   r   trio.testing._fake_netr   r>   rB   r
   r,   r/   rI   markskipifrZ   r\   r^   rj   rn   rv   rM   r   r   <module>rz      s    				  



   * * * * * * <7RLL\X<LL5LG     $  $  $  $F   BF BF BF BFJ LG/   2 2 2	 2j LG0     	 4   %$ %$ %$ %$P         r   